Built motion from commit c220d7c5.|2.5.34
authorAndrea Amorese <andrea.amorese@xenialab.it>
Fri, 10 Sep 2021 14:36:39 +0000 (16:36 +0200)
committerAndrea Amorese <andrea.amorese@xenialab.it>
Fri, 10 Sep 2021 14:36:39 +0000 (16:36 +0200)
1194 files changed:
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/de.json
public/app/main/apps/whatsapp/i18n/de.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.b7a358c4.js [moved from public/scripts/app.5d0b6216.js with 99% 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/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/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 5b2dd30..6378689 100644 (file)
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2021-09-10T12:52:47.467Z",
+    "time": "2021-09-10T14:24:25.812Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index d84058e..0468723 100644 (file)
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2021-09-10T12:52:47.467Z",
+    "time": "2021-09-10T14:24:25.812Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 225e85b..3b53b1d 100644 (file)
@@ -50,6 +50,7 @@
     "aws-sdk": "2.610.0",
     "bimedia-machine-uuid": "1.0.1",
     "bluebird": "3.7.2",
+    "html-entities": "^2.3.2",
     "body-parser": "1.19.0",
     "compare-versions": "3.6.0",
     "composable-middleware": "0.3.0",
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 b21bd68..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"
+    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
+    "ALIAS": "Alias"
   }
 }
index c10b0a5..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 (Verbunden mit SIP)",
+    "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 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 f796324..4f9ba95 100644 (file)
@@ -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.5d0b6216.js"></script>
+  <script src="scripts/app.b7a358c4.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 99%
rename from public/scripts/app.5d0b6216.js
rename to public/scripts/app.b7a358c4.js
index f9858f6..3d6c0d3 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("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=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,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
+!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("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
index 82b719d..d12b1d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa751=['exports','VIRTUAL','action','contactManager','integration','motionbar','urlForward','browser','bot','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','STRING','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]','sequelize'];(function(_0x12f13d,_0x34a04c){var _0x6c4736=function(_0x36bc85){while(--_0x36bc85){_0x12f13d['push'](_0x12f13d['shift']());}};_0x6c4736(++_0x34a04c);}(_0xa751,0x175));var _0x1a75=function(_0x541277,_0xe60f66){_0x541277=_0x541277-0x0;var _0x10ded9=_0xa751[_0x541277];return _0x10ded9;};'use strict';var Sequelize=require(_0x1a75('0x0'));module[_0x1a75('0x1')]={'name':{'type':Sequelize[_0x1a75('0x2')],'get':function(_0x636b0){return this['getDataValue'](_0x1a75('0x3'));}},'action':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'isIn':{'args':[[_0x1a75('0x4'),_0x1a75('0x5'),_0x1a75('0x6'),'jscripty',_0x1a75('0x7'),_0x1a75('0x8'),_0x1a75('0x9'),_0x1a75('0xa')]],'msg':_0x1a75('0xb')}},'comment':_0x1a75('0xb')},'data1':{'type':Sequelize[_0x1a75('0xc')](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['STRING'](0x1000),'comment':'contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]'},'data3':{'type':Sequelize[_0x1a75('0xc')](0x1000),'comment':_0x1a75('0xd')},'data4':{'type':Sequelize[_0x1a75('0xc')](0x1000),'comments':_0x1a75('0xe')},'data5':{'type':Sequelize[_0x1a75('0xc')](0x1000),'comments':_0x1a75('0xf')},'data6':{'type':Sequelize[_0x1a75('0xc')],'comments':_0x1a75('0x10')},'data7':{'type':Sequelize['TEXT'],'comments':'urlForward[body]'}};
\ No newline at end of file
+var _0x1dcc=['action','contactManager','integration','motionbar','browser','bot','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','STRING','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','urlForward[body]','sequelize','exports','VIRTUAL'];(function(_0x24ec05,_0x5cd9c6){var _0x25c518=function(_0x212040){while(--_0x212040){_0x24ec05['push'](_0x24ec05['shift']());}};_0x25c518(++_0x5cd9c6);}(_0x1dcc,0x1ea));var _0xc1dc=function(_0x1d0a4d,_0x4247ff){_0x1d0a4d=_0x1d0a4d-0x0;var _0x19ac91=_0x1dcc[_0x1d0a4d];return _0x19ac91;};'use strict';var Sequelize=require(_0xc1dc('0x0'));module[_0xc1dc('0x1')]={'name':{'type':Sequelize[_0xc1dc('0x2')],'get':function(_0x151f37){return this['getDataValue'](_0xc1dc('0x3'));}},'action':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'isIn':{'args':[[_0xc1dc('0x4'),_0xc1dc('0x5'),_0xc1dc('0x6'),'jscripty','urlForward',_0xc1dc('0x7'),_0xc1dc('0x8'),_0xc1dc('0x9')]],'msg':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'}},'comment':_0xc1dc('0xa')},'data1':{'type':Sequelize[_0xc1dc('0xb')](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[_0xc1dc('0xb')](0x1000),'comment':'contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]'},'data3':{'type':Sequelize[_0xc1dc('0xb')](0x1000),'comment':'contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]'},'data4':{'type':Sequelize[_0xc1dc('0xb')](0x1000),'comments':_0xc1dc('0xc')},'data5':{'type':Sequelize[_0xc1dc('0xb')](0x1000),'comments':_0xc1dc('0xd')},'data6':{'type':Sequelize[_0xc1dc('0xb')],'comments':_0xc1dc('0xe')},'data7':{'type':Sequelize[_0xc1dc('0xf')],'comments':_0xc1dc('0x10')}};
\ No newline at end of file
index 21adb69..d9e4a8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0e0=['apply','reject','save','then','destroy','name','update','body','Action','find','params','catch','eml-format','fast-json-patch','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range'];(function(_0x269329,_0x33e8d2){var _0x5cf5d0=function(_0x5e0b5c){while(--_0x5e0b5c){_0x269329['push'](_0x269329['shift']());}};_0x5cf5d0(++_0x33e8d2);}(_0xe0e0,0x90));var _0x0e0e=function(_0x158c24,_0x46bc03){_0x158c24=_0x158c24-0x0;var _0x19d244=_0xe0e0[_0x158c24];return _0x19d244;};'use strict';var emlformat=require(_0x0e0e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x0e0e('0x1'));var rp=require('request-promise');var moment=require(_0x0e0e('0x2'));var BPromise=require(_0x0e0e('0x3'));var Mustache=require('mustache');var util=require(_0x0e0e('0x4'));var path=require(_0x0e0e('0x5'));var sox=require(_0x0e0e('0x6'));var csv=require(_0x0e0e('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0e0e('0x8'));var _=require(_0x0e0e('0x9'));var squel=require(_0x0e0e('0xa'));var crypto=require(_0x0e0e('0xb'));var jsforce=require(_0x0e0e('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x0e0e('0x7'));var querystring=require('querystring');var Papa=require(_0x0e0e('0xd'));var Redis=require(_0x0e0e('0xe'));var authService=require(_0x0e0e('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x0e0e('0x10'));var hardwareService=require(_0x0e0e('0x11'));var logger=require(_0x0e0e('0x12'))(_0x0e0e('0x13'));var utils=require(_0x0e0e('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x0e0e('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x42d740,_0x42f6f0){_0x42f6f0=_0x42f6f0||0xcc;return function(_0x3e6fad){if(_0x3e6fad){return _0x42d740[_0x0e0e('0x16')](_0x42f6f0);}return _0x42d740[_0x0e0e('0x17')](_0x42f6f0)[_0x0e0e('0x18')]();};}function respondWithResult(_0x4bae11,_0x2ddefb){_0x2ddefb=_0x2ddefb||0xc8;return function(_0x32da07){if(_0x32da07){return _0x4bae11[_0x0e0e('0x17')](_0x2ddefb)[_0x0e0e('0x19')](_0x32da07);}};}function respondWithFilteredResult(_0x42306d,_0x360a5e){return function(_0x31f0e3){if(_0x31f0e3){var _0x408c75=typeof _0x360a5e['offset']===_0x0e0e('0x1a')&&typeof _0x360a5e[_0x0e0e('0x1b')]===_0x0e0e('0x1a');var _0x17d4fe=_0x31f0e3['count'];var _0xa4f392=_0x408c75?0x0:_0x360a5e[_0x0e0e('0x1c')];var _0x1dedcc=_0x408c75?_0x31f0e3[_0x0e0e('0x1d')]:_0x360a5e['offset']+_0x360a5e[_0x0e0e('0x1b')];var _0x56ad2e;if(_0x1dedcc>=_0x17d4fe){_0x1dedcc=_0x17d4fe;_0x56ad2e=0xc8;}else{_0x56ad2e=0xce;}_0x42306d[_0x0e0e('0x17')](_0x56ad2e);return _0x42306d[_0x0e0e('0x1e')](_0x0e0e('0x1f'),_0xa4f392+'-'+_0x1dedcc+'/'+_0x17d4fe)[_0x0e0e('0x19')](_0x31f0e3);}return null;};}function patchUpdates(_0x2f5559){return function(_0x3e3182){try{jsonpatch[_0x0e0e('0x20')](_0x3e3182,_0x2f5559,!![]);}catch(_0x58ee12){return BPromise[_0x0e0e('0x21')](_0x58ee12);}return _0x3e3182[_0x0e0e('0x22')]();};}function saveUpdates(_0x2a282f,_0x1fd476){return function(_0x304cfd){if(_0x304cfd){return _0x304cfd['update'](_0x2a282f)[_0x0e0e('0x23')](function(_0x416917){return _0x416917;});}return null;};}function removeEntity(_0x28ac2b,_0x5cae9f){return function(_0x426141){if(_0x426141){return _0x426141[_0x0e0e('0x24')]()[_0x0e0e('0x23')](function(){_0x28ac2b[_0x0e0e('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x26ce67,_0x802750){return function(_0x16ae1c){if(!_0x16ae1c){_0x26ce67['sendStatus'](0x194);}return _0x16ae1c;};}function handleError(_0x122475,_0x54e81f){_0x54e81f=_0x54e81f||0x1f4;return function(_0x330781){logger['error'](_0x330781['stack']);if(_0x330781[_0x0e0e('0x25')]){delete _0x330781[_0x0e0e('0x25')];}_0x122475[_0x0e0e('0x17')](_0x54e81f)['send'](_0x330781);};}exports[_0x0e0e('0x26')]=function(_0x50e1f1,_0x3f3b7e){if(_0x50e1f1[_0x0e0e('0x27')]['id']){delete _0x50e1f1[_0x0e0e('0x27')]['id'];}return db[_0x0e0e('0x28')][_0x0e0e('0x29')]({'where':{'id':_0x50e1f1['params']['id']}})['then'](handleEntityNotFound(_0x3f3b7e,null))[_0x0e0e('0x23')](saveUpdates(_0x50e1f1[_0x0e0e('0x27')],null))['then'](respondWithResult(_0x3f3b7e,null))['catch'](handleError(_0x3f3b7e,null));};exports[_0x0e0e('0x24')]=function(_0x53888f,_0x13ef1c){return db['Action'][_0x0e0e('0x29')]({'where':{'id':_0x53888f[_0x0e0e('0x2a')]['id']}})[_0x0e0e('0x23')](handleEntityNotFound(_0x13ef1c,null))[_0x0e0e('0x23')](removeEntity(_0x13ef1c,null))[_0x0e0e('0x2b')](handleError(_0x13ef1c,null));};
\ No newline at end of file
+var _0xc81d=['../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','count','offset','set','Content-Range','apply','save','update','destroy','then','error','stack','name','send','body','Action','find','params','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api'];(function(_0x2c5e42,_0x9b8c6a){var _0x840fde=function(_0x169c4e){while(--_0x169c4e){_0x2c5e42['push'](_0x2c5e42['shift']());}};_0x840fde(++_0x9b8c6a);}(_0xc81d,0x1e4));var _0xdc81=function(_0x4e16c9,_0x541601){_0x4e16c9=_0x4e16c9-0x0;var _0xd423e5=_0xc81d[_0x4e16c9];return _0xd423e5;};'use strict';var emlformat=require(_0xdc81('0x0'));var rimraf=require(_0xdc81('0x1'));var zipdir=require(_0xdc81('0x2'));var jsonpatch=require(_0xdc81('0x3'));var rp=require(_0xdc81('0x4'));var moment=require(_0xdc81('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xdc81('0x6'));var sox=require(_0xdc81('0x7'));var csv=require(_0xdc81('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdc81('0x9'));var squel=require(_0xdc81('0xa'));var crypto=require(_0xdc81('0xb'));var jsforce=require(_0xdc81('0xc'));var deskjs=require(_0xdc81('0xd'));var toCsv=require(_0xdc81('0x8'));var querystring=require(_0xdc81('0xe'));var Papa=require(_0xdc81('0xf'));var Redis=require(_0xdc81('0x10'));var authService=require(_0xdc81('0x11'));var qs=require(_0xdc81('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdc81('0x13'));var logger=require(_0xdc81('0x14'))(_0xdc81('0x15'));var utils=require('../../config/utils');var config=require(_0xdc81('0x16'));var licenseUtil=require(_0xdc81('0x17'));var db=require(_0xdc81('0x18'))['db'];function respondWithStatusCode(_0x543ac8,_0x25d878){_0x25d878=_0x25d878||0xcc;return function(_0xda27b){if(_0xda27b){return _0x543ac8[_0xdc81('0x19')](_0x25d878);}return _0x543ac8['status'](_0x25d878)['end']();};}function respondWithResult(_0x40e515,_0x103ec1){_0x103ec1=_0x103ec1||0xc8;return function(_0x794799){if(_0x794799){return _0x40e515[_0xdc81('0x1a')](_0x103ec1)[_0xdc81('0x1b')](_0x794799);}};}function respondWithFilteredResult(_0x37381a,_0x570176){return function(_0x4888b8){if(_0x4888b8){var _0x3209fa=typeof _0x570176['offset']==='undefined'&&typeof _0x570176['limit']==='undefined';var _0x3c8b82=_0x4888b8[_0xdc81('0x1c')];var _0x29d017=_0x3209fa?0x0:_0x570176[_0xdc81('0x1d')];var _0x5fdf1=_0x3209fa?_0x4888b8[_0xdc81('0x1c')]:_0x570176[_0xdc81('0x1d')]+_0x570176['limit'];var _0x45610a;if(_0x5fdf1>=_0x3c8b82){_0x5fdf1=_0x3c8b82;_0x45610a=0xc8;}else{_0x45610a=0xce;}_0x37381a[_0xdc81('0x1a')](_0x45610a);return _0x37381a[_0xdc81('0x1e')](_0xdc81('0x1f'),_0x29d017+'-'+_0x5fdf1+'/'+_0x3c8b82)['json'](_0x4888b8);}return null;};}function patchUpdates(_0x4f914e){return function(_0x3fccfc){try{jsonpatch[_0xdc81('0x20')](_0x3fccfc,_0x4f914e,!![]);}catch(_0x5cb9e5){return BPromise['reject'](_0x5cb9e5);}return _0x3fccfc[_0xdc81('0x21')]();};}function saveUpdates(_0x3724b,_0x3b3a7c){return function(_0x2e0833){if(_0x2e0833){return _0x2e0833[_0xdc81('0x22')](_0x3724b)['then'](function(_0x785990){return _0x785990;});}return null;};}function removeEntity(_0x3179eb,_0x121492){return function(_0x28fd35){if(_0x28fd35){return _0x28fd35[_0xdc81('0x23')]()[_0xdc81('0x24')](function(){_0x3179eb[_0xdc81('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51462a,_0x3b600f){return function(_0xb021df){if(!_0xb021df){_0x51462a[_0xdc81('0x19')](0x194);}return _0xb021df;};}function handleError(_0x492b28,_0x36d503){_0x36d503=_0x36d503||0x1f4;return function(_0x540375){logger[_0xdc81('0x25')](_0x540375[_0xdc81('0x26')]);if(_0x540375[_0xdc81('0x27')]){delete _0x540375[_0xdc81('0x27')];}_0x492b28[_0xdc81('0x1a')](_0x36d503)[_0xdc81('0x28')](_0x540375);};}exports[_0xdc81('0x22')]=function(_0x5a52e0,_0x3815a8){if(_0x5a52e0[_0xdc81('0x29')]['id']){delete _0x5a52e0[_0xdc81('0x29')]['id'];}return db[_0xdc81('0x2a')][_0xdc81('0x2b')]({'where':{'id':_0x5a52e0[_0xdc81('0x2c')]['id']}})['then'](handleEntityNotFound(_0x3815a8,null))['then'](saveUpdates(_0x5a52e0[_0xdc81('0x29')],null))[_0xdc81('0x24')](respondWithResult(_0x3815a8,null))[_0xdc81('0x2d')](handleError(_0x3815a8,null));};exports[_0xdc81('0x23')]=function(_0xa76d20,_0x200b5e){return db[_0xdc81('0x2a')][_0xdc81('0x2b')]({'where':{'id':_0xa76d20[_0xdc81('0x2c')]['id']}})['then'](handleEntityNotFound(_0x200b5e,null))[_0xdc81('0x24')](removeEntity(_0x200b5e,null))[_0xdc81('0x2d')](handleError(_0x200b5e,null));};
\ No newline at end of file
index 19cac3e..6449657 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x854e=['request-promise','path','../../config/environment','./action.attributes','exports','define','Action','tools_actions','lodash','util','moment','bluebird'];(function(_0x1d2640,_0x22451d){var _0x2b6b84=function(_0x17d31b){while(--_0x17d31b){_0x1d2640['push'](_0x1d2640['shift']());}};_0x2b6b84(++_0x22451d);}(_0x854e,0xa4));var _0xe854=function(_0x3d13bb,_0x262a54){_0x3d13bb=_0x3d13bb-0x0;var _0x4b5a1b=_0x854e[_0x3d13bb];return _0x4b5a1b;};'use strict';var _=require(_0xe854('0x0'));var util=require(_0xe854('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xe854('0x2'));var BPromise=require(_0xe854('0x3'));var rp=require(_0xe854('0x4'));var fs=require('fs');var path=require(_0xe854('0x5'));var rimraf=require('rimraf');var config=require(_0xe854('0x6'));var attributes=require(_0xe854('0x7'));module[_0xe854('0x8')]=function(_0x616c4f,_0x465450){return _0x616c4f[_0xe854('0x9')](_0xe854('0xa'),attributes,{'tableName':_0xe854('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x24aa=['Action','tools_actions','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./action.attributes','define'];(function(_0x11df98,_0x55313e){var _0x3d313a=function(_0xd50dc7){while(--_0xd50dc7){_0x11df98['push'](_0x11df98['shift']());}};_0x3d313a(++_0x55313e);}(_0x24aa,0x91));var _0xa24a=function(_0x3262bf,_0x4fb17d){_0x3262bf=_0x3262bf-0x0;var _0x20da0a=_0x24aa[_0x3262bf];return _0x20da0a;};'use strict';var _=require(_0xa24a('0x0'));var util=require(_0xa24a('0x1'));var logger=require(_0xa24a('0x2'))('api');var moment=require(_0xa24a('0x3'));var BPromise=require(_0xa24a('0x4'));var rp=require(_0xa24a('0x5'));var fs=require('fs');var path=require(_0xa24a('0x6'));var rimraf=require(_0xa24a('0x7'));var config=require(_0xa24a('0x8'));var attributes=require(_0xa24a('0x9'));module['exports']=function(_0x3d1fd3,_0x428ef5){return _0x3d1fd3[_0xa24a('0xa')](_0xa24a('0xb'),attributes,{'tableName':_0xa24a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1730fd8..16ffbad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['../../config/environment','jayson/promise','client','request','then','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Action,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x206251,_0x6c4977){var _0x442b47=function(_0x1e4beb){while(--_0x1e4beb){_0x206251['push'](_0x206251['shift']());}};_0x442b47(++_0x6c4977);}(_0x5fab,0x177));var _0xb5fa=function(_0x4c29f9,_0x5bddd4){_0x4c29f9=_0x4c29f9-0x0;var _0x4e17b8=_0x5fab[_0x4c29f9];return _0x4e17b8;};'use strict';var _=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var moment=require('moment');var BPromise=require(_0xb5fa('0x2'));var rs=require(_0xb5fa('0x3'));var fs=require('fs');var Redis=require(_0xb5fa('0x4'));var db=require(_0xb5fa('0x5'))['db'];var utils=require(_0xb5fa('0x6'));var logger=require(_0xb5fa('0x7'))(_0xb5fa('0x8'));var config=require(_0xb5fa('0x9'));var jayson=require(_0xb5fa('0xa'));var client=jayson[_0xb5fa('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5d70f6,_0x2e3804,_0x1aec3e){return new BPromise(function(_0x9c7bce,_0x56d018){return client[_0xb5fa('0xc')](_0x5d70f6,_0x1aec3e)[_0xb5fa('0xd')](function(_0x2cf4a5){logger['info']('Action,\x20%s,\x20%s',_0x2e3804,_0xb5fa('0xe'));logger[_0xb5fa('0xf')](_0xb5fa('0x10'),_0x2e3804,_0xb5fa('0xe'),JSON[_0xb5fa('0x11')](_0x2cf4a5));if(_0x2cf4a5[_0xb5fa('0x12')]){if(_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x13')]===0x1f4){logger[_0xb5fa('0x12')]('Action,\x20%s,\x20%s',_0x2e3804,_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x14')]);return _0x56d018(_0x2cf4a5['error'][_0xb5fa('0x14')]);}logger['error'](_0xb5fa('0x15'),_0x2e3804,_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x14')]);return _0x9c7bce(_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x14')]);}else{logger['info']('Action,\x20%s,\x20%s',_0x2e3804,_0xb5fa('0xe'));_0x9c7bce(_0x2cf4a5[_0xb5fa('0x16')][_0xb5fa('0x14')]);}})[_0xb5fa('0x17')](function(_0x56fe10){logger['error'](_0xb5fa('0x15'),_0x2e3804,_0x56fe10);_0x56d018(_0x56fe10);});});}
\ No newline at end of file
+var _0x7fbe=['request','then','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x241fc7,_0x56c119){var _0xb751c1=function(_0x44d2a6){while(--_0x44d2a6){_0x241fc7['push'](_0x241fc7['shift']());}};_0xb751c1(++_0x56c119);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x3003fc,_0x5ac5de){_0x3003fc=_0x3003fc-0x0;var _0x22cb43=_0x7fbe[_0x3003fc];return _0x22cb43;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe7fb('0x0'));var BPromise=require(_0xe7fb('0x1'));var rs=require(_0xe7fb('0x2'));var fs=require('fs');var Redis=require(_0xe7fb('0x3'));var db=require(_0xe7fb('0x4'))['db'];var utils=require(_0xe7fb('0x5'));var logger=require(_0xe7fb('0x6'))(_0xe7fb('0x7'));var config=require(_0xe7fb('0x8'));var jayson=require(_0xe7fb('0x9'));var client=jayson[_0xe7fb('0xa')][_0xe7fb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x24cd67,_0x1f943f,_0x5ad75b){return new BPromise(function(_0x213ebc,_0x228f6b){return client[_0xe7fb('0xc')](_0x24cd67,_0x5ad75b)[_0xe7fb('0xd')](function(_0x4ba197){logger['info'](_0xe7fb('0xe'),_0x1f943f,_0xe7fb('0xf'));logger[_0xe7fb('0x10')](_0xe7fb('0x11'),_0x1f943f,_0xe7fb('0xf'),JSON[_0xe7fb('0x12')](_0x4ba197));if(_0x4ba197[_0xe7fb('0x13')]){if(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x14')]===0x1f4){logger[_0xe7fb('0x13')](_0xe7fb('0xe'),_0x1f943f,_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);return _0x228f6b(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);}logger['error'](_0xe7fb('0xe'),_0x1f943f,_0x4ba197[_0xe7fb('0x13')]['message']);return _0x213ebc(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);}else{logger['info'](_0xe7fb('0xe'),_0x1f943f,'request\x20sent');_0x213ebc(_0x4ba197[_0xe7fb('0x16')][_0xe7fb('0x15')]);}})[_0xe7fb('0x17')](function(_0x17e8a8){logger['error'](_0xe7fb('0xe'),_0x1f943f,_0x17e8a8);_0x228f6b(_0x17e8a8);});});}
\ No newline at end of file
index fcb19bc..546ae1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd886=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','put','/:id','isAuthenticated','update','delete','destroy','exports','multer','path'];(function(_0x3e274d,_0x35f95f){var _0x352bf9=function(_0x3e0e40){while(--_0x3e0e40){_0x3e274d['push'](_0x3e274d['shift']());}};_0x352bf9(++_0x35f95f);}(_0xd886,0x1c0));var _0x6d88=function(_0xaedca4,_0x2778fa){_0xaedca4=_0xaedca4-0x0;var _0x27227a=_0xd886[_0xaedca4];return _0x27227a;};'use strict';var multer=require(_0x6d88('0x0'));var util=require('util');var path=require(_0x6d88('0x1'));var timeout=require(_0x6d88('0x2'));var express=require(_0x6d88('0x3'));var router=express[_0x6d88('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x6d88('0x5'));var interaction=require(_0x6d88('0x6'));var config=require(_0x6d88('0x7'));var controller=require('./action.controller');router[_0x6d88('0x8')](_0x6d88('0x9'),auth[_0x6d88('0xa')](),controller[_0x6d88('0xb')]);router[_0x6d88('0xc')](_0x6d88('0x9'),auth[_0x6d88('0xa')](),controller[_0x6d88('0xd')]);module[_0x6d88('0xe')]=router;
\ No newline at end of file
+var _0x0093=['./action.controller','put','isAuthenticated','delete','/:id','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0093,0x1d7));var _0x3009=function(_0x157ace,_0x184c29){_0x157ace=_0x157ace-0x0;var _0x4f28e1=_0x0093[_0x157ace];return _0x4f28e1;};'use strict';var multer=require(_0x3009('0x0'));var util=require(_0x3009('0x1'));var path=require(_0x3009('0x2'));var timeout=require(_0x3009('0x3'));var express=require(_0x3009('0x4'));var router=express[_0x3009('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x3009('0x6'));var interaction=require(_0x3009('0x7'));var config=require(_0x3009('0x8'));var controller=require(_0x3009('0x9'));router[_0x3009('0xa')]('/:id',auth[_0x3009('0xb')](),controller['update']);router[_0x3009('0xc')](_0x3009('0xd'),auth[_0x3009('0xb')](),controller[_0x3009('0xe')]);module[_0x3009('0xf')]=router;
\ No newline at end of file
index 6f431ea..be7c7b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eea=['STRING','TEXT','sequelize'];(function(_0x4ae147,_0x48202e){var _0x49c225=function(_0x3e6333){while(--_0x3e6333){_0x4ae147['push'](_0x4ae147['shift']());}};_0x49c225(++_0x48202e);}(_0x3eea,0x1ca));var _0xa3ee=function(_0x42f392,_0x344a62){_0x42f392=_0x42f392-0x0;var _0x48caaa=_0x3eea[_0x42f392];return _0x48caaa;};'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 _0x326f=['STRING','TEXT','sequelize'];(function(_0x52e4a0,_0x332127){var _0x582129=function(_0x59bf39){while(--_0x59bf39){_0x52e4a0['push'](_0x52e4a0['shift']());}};_0x582129(++_0x332127);}(_0x326f,0xd1));var _0xf326=function(_0xeff039,_0x49aab8){_0xeff039=_0xeff039-0x0;var _0xbe4501=_0x326f[_0xeff039];return _0xbe4501;};'use strict';var Sequelize=require(_0xf326('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xf326('0x1')]},'parent':{'type':Sequelize[_0xf326('0x1')]},'table':{'type':Sequelize[_0xf326('0x1')]},'conditions':{'type':Sequelize[_0xf326('0x2')]},'joins':{'type':Sequelize[_0xf326('0x2')]}};
\ No newline at end of file
index 619614e..03341d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7687=['sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','dbH','sendStatus','status','end','offset','undefined','limit','count','apply','reject','save','then','destroy','get','UserProfileResource','error','stack','name','send','map','AnalyticCustomReport','rawAttributes','fieldName','type','key','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','include','findAll','catch','params','keys','includeAll','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Reports','find','userProfileId','autoAssociation','CustomReports','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%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','group','field','condition','value','options','Sequelize','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','table','MetricId','function','replace','format','orderBy','DESC','alias','joins','parentKey','foreignKey','foreignTable','conditions','clone','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','SEC_TO_TIME(%s)','operator','ValidationErrorItem','metric','groupBy','parse','%s.%s\x20=\x20%s.%s','output','web','%s-%s.%s','randomstring','generate','csv','custom','AnalyticExtractedReport','cdr','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','join','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','runReport','getFields','debug','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x58b176,_0x223ace){var _0x75b2e7=function(_0x410191){while(--_0x410191){_0x58b176['push'](_0x58b176['shift']());}};_0x75b2e7(++_0x223ace);}(_0x7687,0x1e3));var _0x7768=function(_0x7feb90,_0x28e700){_0x7feb90=_0x7feb90-0x0;var _0x3c5b33=_0x7687[_0x7feb90];return _0x3c5b33;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7768('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7768('0x1'));var rp=require(_0x7768('0x2'));var moment=require(_0x7768('0x3'));var BPromise=require(_0x7768('0x4'));var Mustache=require(_0x7768('0x5'));var util=require('util');var path=require('path');var sox=require(_0x7768('0x6'));var csv=require(_0x7768('0x7'));var ejs=require(_0x7768('0x8'));var fs=require('fs');var fs_extra=require(_0x7768('0x9'));var _=require(_0x7768('0xa'));var squel=require('squel');var crypto=require(_0x7768('0xb'));var jsforce=require(_0x7768('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x7768('0x7'));var querystring=require(_0x7768('0xd'));var Papa=require(_0x7768('0xe'));var Redis=require(_0x7768('0xf'));var authService=require(_0x7768('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x7768('0x11'));var hardwareService=require(_0x7768('0x12'));var logger=require(_0x7768('0x13'))('api');var utils=require(_0x7768('0x14'));var config=require(_0x7768('0x15'));var licenseUtil=require(_0x7768('0x16'));var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')[_0x7768('0x17')];function respondWithStatusCode(_0x2b2fa4,_0x5173ba){_0x5173ba=_0x5173ba||0xcc;return function(_0x50af9a){if(_0x50af9a){return _0x2b2fa4[_0x7768('0x18')](_0x5173ba);}return _0x2b2fa4[_0x7768('0x19')](_0x5173ba)[_0x7768('0x1a')]();};}function respondWithResult(_0x24795a,_0x30a5f6){_0x30a5f6=_0x30a5f6||0xc8;return function(_0x2a9273){if(_0x2a9273){return _0x24795a[_0x7768('0x19')](_0x30a5f6)['json'](_0x2a9273);}};}function respondWithFilteredResult(_0x36888d,_0x1dd049){return function(_0x557f84){if(_0x557f84){var _0xad056f=typeof _0x1dd049[_0x7768('0x1b')]===_0x7768('0x1c')&&typeof _0x1dd049[_0x7768('0x1d')]===_0x7768('0x1c');var _0x389833=_0x557f84[_0x7768('0x1e')];var _0x4fe072=_0xad056f?0x0:_0x1dd049['offset'];var _0x488c27=_0xad056f?_0x557f84[_0x7768('0x1e')]:_0x1dd049['offset']+_0x1dd049[_0x7768('0x1d')];var _0x4b6cf8;if(_0x488c27>=_0x389833){_0x488c27=_0x389833;_0x4b6cf8=0xc8;}else{_0x4b6cf8=0xce;}_0x36888d['status'](_0x4b6cf8);return _0x36888d['set']('Content-Range',_0x4fe072+'-'+_0x488c27+'/'+_0x389833)['json'](_0x557f84);}return null;};}function patchUpdates(_0x16386c){return function(_0x5b22c2){try{jsonpatch[_0x7768('0x1f')](_0x5b22c2,_0x16386c,!![]);}catch(_0x4afd3b){return BPromise[_0x7768('0x20')](_0x4afd3b);}return _0x5b22c2[_0x7768('0x21')]();};}function saveUpdates(_0x4af37b,_0x83725e){return function(_0x3fa36e){if(_0x3fa36e){return _0x3fa36e['update'](_0x4af37b)[_0x7768('0x22')](function(_0x1a7f2a){return _0x1a7f2a;});}return null;};}function removeEntity(_0x425080,_0x48210){return function(_0x3d080b){if(_0x3d080b){return _0x3d080b[_0x7768('0x23')]()[_0x7768('0x22')](function(){var _0x23d9b6=_0x3d080b[_0x7768('0x24')]({'plain':!![]});var _0x214253='CustomReports';return db[_0x7768('0x25')][_0x7768('0x23')]({'where':{'type':_0x214253,'resourceId':_0x23d9b6['id']}})['then'](function(){return _0x3d080b;});})[_0x7768('0x22')](function(){_0x425080[_0x7768('0x19')](0xcc)[_0x7768('0x1a')]();});}};}function handleEntityNotFound(_0x2a2bd8,_0x5274fd){return function(_0x40a72f){if(!_0x40a72f){_0x2a2bd8[_0x7768('0x18')](0x194);}return _0x40a72f;};}function handleError(_0x3ca985,_0x497214){_0x497214=_0x497214||0x1f4;return function(_0x1bd3bc){logger[_0x7768('0x26')](_0x1bd3bc[_0x7768('0x27')]);if(_0x1bd3bc[_0x7768('0x28')]){delete _0x1bd3bc['name'];}_0x3ca985['status'](_0x497214)[_0x7768('0x29')](_0x1bd3bc);};}exports['index']=function(_0xfc87d3,_0x264631){var _0x34ef11={},_0x3b58e3={},_0xd27df2={'count':0x0,'rows':[]};var _0x189e8e=_[_0x7768('0x2a')](db[_0x7768('0x2b')][_0x7768('0x2c')],function(_0x50fc29){return{'name':_0x50fc29[_0x7768('0x2d')],'type':_0x50fc29[_0x7768('0x2e')][_0x7768('0x2f')]};});_0x3b58e3['model']=_[_0x7768('0x2a')](_0x189e8e,_0x7768('0x28'));_0x3b58e3[_0x7768('0x30')]=_['keys'](_0xfc87d3[_0x7768('0x30')]);_0x3b58e3[_0x7768('0x31')]=_['intersection'](_0x3b58e3[_0x7768('0x32')],_0x3b58e3[_0x7768('0x30')]);_0x34ef11[_0x7768('0x33')]=_[_0x7768('0x34')](_0x3b58e3[_0x7768('0x32')],qs[_0x7768('0x35')](_0xfc87d3[_0x7768('0x30')][_0x7768('0x35')]));_0x34ef11['attributes']=_0x34ef11[_0x7768('0x33')][_0x7768('0x36')]?_0x34ef11[_0x7768('0x33')]:_0x3b58e3[_0x7768('0x32')];if(!_0xfc87d3[_0x7768('0x30')][_0x7768('0x37')](_0x7768('0x38'))){_0x34ef11[_0x7768('0x1d')]=qs[_0x7768('0x1d')](_0xfc87d3['query'][_0x7768('0x1d')]);_0x34ef11[_0x7768('0x1b')]=qs[_0x7768('0x1b')](_0xfc87d3[_0x7768('0x30')][_0x7768('0x1b')]);}_0x34ef11[_0x7768('0x39')]=qs[_0x7768('0x3a')](_0xfc87d3[_0x7768('0x30')][_0x7768('0x3a')]);_0x34ef11[_0x7768('0x3b')]=qs['filters'](_['pick'](_0xfc87d3[_0x7768('0x30')],_0x3b58e3['filters']),_0x189e8e);if(_0xfc87d3[_0x7768('0x30')][_0x7768('0x3c')]){_0x34ef11[_0x7768('0x3b')]=_['merge'](_0x34ef11[_0x7768('0x3b')],{'$or':_[_0x7768('0x2a')](_0x189e8e,function(_0xd63b61){if(_0xd63b61[_0x7768('0x2e')]!=='VIRTUAL'){var _0x429e9f={};_0x429e9f[_0xd63b61['name']]={'$like':'%'+_0xfc87d3[_0x7768('0x30')][_0x7768('0x3c')]+'%'};return _0x429e9f;}})});}_0x34ef11=_[_0x7768('0x3d')]({},_0x34ef11,_0xfc87d3['options']);var _0x41ad82={'where':_0x34ef11[_0x7768('0x3b')]};return db[_0x7768('0x2b')]['count'](_0x41ad82)[_0x7768('0x22')](function(_0xca4e1a){_0xd27df2[_0x7768('0x1e')]=_0xca4e1a;if(_0xfc87d3['query']['includeAll']){_0x34ef11[_0x7768('0x3e')]=[{'all':!![]}];}return db[_0x7768('0x2b')][_0x7768('0x3f')](_0x34ef11);})['then'](function(_0x42fb0f){_0xd27df2['rows']=_0x42fb0f;return _0xd27df2;})[_0x7768('0x22')](respondWithFilteredResult(_0x264631,_0x34ef11))[_0x7768('0x40')](handleError(_0x264631,null));};exports['show']=function(_0xe816f8,_0x559156){var _0x467b6a={'raw':![],'where':{'id':_0xe816f8[_0x7768('0x41')]['id']}},_0x37f76b={};_0x37f76b[_0x7768('0x32')]=_[_0x7768('0x42')](db['AnalyticCustomReport'][_0x7768('0x2c')]);_0x37f76b[_0x7768('0x30')]=_[_0x7768('0x42')](_0xe816f8['query']);_0x37f76b[_0x7768('0x31')]=_[_0x7768('0x34')](_0x37f76b[_0x7768('0x32')],_0x37f76b[_0x7768('0x30')]);_0x467b6a['attributes']=_[_0x7768('0x34')](_0x37f76b[_0x7768('0x32')],qs[_0x7768('0x35')](_0xe816f8[_0x7768('0x30')][_0x7768('0x35')]));_0x467b6a['attributes']=_0x467b6a[_0x7768('0x33')]['length']?_0x467b6a[_0x7768('0x33')]:_0x37f76b[_0x7768('0x32')];if(_0xe816f8[_0x7768('0x30')][_0x7768('0x43')]){_0x467b6a['include']=[{'all':!![]}];}_0x467b6a=_[_0x7768('0x3d')]({},_0x467b6a,_0xe816f8['options']);return db['AnalyticCustomReport']['find'](_0x467b6a)[_0x7768('0x22')](handleEntityNotFound(_0x559156,null))['then'](respondWithResult(_0x559156,null))[_0x7768('0x40')](handleError(_0x559156,null));};exports[_0x7768('0x44')]=function(_0x7919a9,_0x398fc0){return db['AnalyticCustomReport']['create'](_0x7919a9['body'],{})[_0x7768('0x22')](function(_0x46e186){var _0x5380e4=_0x7919a9['user'][_0x7768('0x24')]({'plain':!![]});if(!_0x5380e4)throw new Error(_0x7768('0x45'));if(_0x5380e4[_0x7768('0x46')]===_0x7768('0x47')){var _0x31c8a5=_0x46e186[_0x7768('0x24')]({'plain':!![]});var _0x2f881f=_0x7768('0x48');return db['UserProfileSection'][_0x7768('0x49')]({'where':{'name':_0x2f881f,'userProfileId':_0x5380e4[_0x7768('0x4a')]},'raw':!![]})[_0x7768('0x22')](function(_0x56ca40){if(_0x56ca40&&_0x56ca40[_0x7768('0x4b')]===0x0){return db[_0x7768('0x25')][_0x7768('0x44')]({'name':_0x31c8a5[_0x7768('0x28')],'resourceId':_0x31c8a5['id'],'type':_0x7768('0x4c'),'sectionId':_0x56ca40['id']},{})[_0x7768('0x22')](function(){return _0x46e186;});}else{return _0x46e186;}})['catch'](function(_0x1feaf3){logger[_0x7768('0x26')](_0x7768('0x4d'),_0x1feaf3);throw _0x1feaf3;});}return _0x46e186;})[_0x7768('0x22')](respondWithResult(_0x398fc0,0xc9))['catch'](handleError(_0x398fc0,null));};exports[_0x7768('0x4e')]=function(_0x5c6301,_0x15a844){if(_0x5c6301[_0x7768('0x4f')]['id']){delete _0x5c6301[_0x7768('0x4f')]['id'];}return db[_0x7768('0x2b')][_0x7768('0x49')]({'where':{'id':_0x5c6301[_0x7768('0x41')]['id']}})[_0x7768('0x22')](handleEntityNotFound(_0x15a844,null))[_0x7768('0x22')](saveUpdates(_0x5c6301[_0x7768('0x4f')],null))[_0x7768('0x22')](respondWithResult(_0x15a844,null))[_0x7768('0x40')](handleError(_0x15a844,null));};exports['destroy']=function(_0x5acb6b,_0x38927a){return db[_0x7768('0x2b')][_0x7768('0x49')]({'where':{'id':_0x5acb6b[_0x7768('0x41')]['id']}})[_0x7768('0x22')](handleEntityNotFound(_0x38927a,null))['then'](removeEntity(_0x38927a,null))[_0x7768('0x40')](handleError(_0x38927a,null));};exports['preview']=function(_0x40adde,_0x4bf67b){var _0x5c9a88=0xa;var _0x5c00a9=['join',_0x7768('0x50'),_0x7768('0x51'),_0x7768('0x52')];var _0x11475d={'SUM':_0x7768('0x53'),'COUNT':_0x7768('0x54'),'COUNT DISTINCT':_0x7768('0x55'),'MAX':_0x7768('0x56'),'MIN':_0x7768('0x57'),'AVG':_0x7768('0x58'),'GROUP_CONCAT':_0x7768('0x59'),'GROUP_CONCAT ASC':_0x7768('0x5a'),'GROUP_CONCAT DESC':_0x7768('0x5b')};var _0x2e4c66={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x7768('0x5c'),'HOUR':_0x7768('0x5d'),'ROUND':_0x7768('0x5e'),'UNIX_TIMESTAMP':_0x7768('0x5f')};var _0x36f746=function(_0xc866b2){return!_[_0x7768('0x60')]([_0x7768('0x61'),_0x7768('0x62'),_0x7768('0x63'),_0x7768('0x64')],_0xc866b2);};var _0x2ac4ce=function(_0x4e888e){if(!_0x4e888e||!_0x4e888e[_0x7768('0x65')][_0x7768('0x36')]){return'';}for(var _0x3eba4d='(',_0x4369c0=0x0;_0x4369c0<_0x4e888e[_0x7768('0x65')]['length'];_0x4369c0+=0x1){_0x4369c0>0x0&&(_0x3eba4d+='\x20'+_0x4e888e['operator']+'\x20');_0x3eba4d+=_0x4e888e[_0x7768('0x65')][_0x4369c0][_0x7768('0x66')]?_0x2ac4ce(_0x4e888e[_0x7768('0x65')][_0x4369c0][_0x7768('0x66')]):_0x4e888e[_0x7768('0x65')][_0x4369c0][_0x7768('0x67')]+'\x20'+_0x4e888e[_0x7768('0x65')][_0x4369c0][_0x7768('0x68')]+(_0x36f746(_0x4e888e['rules'][_0x4369c0][_0x7768('0x68')])?'\x20'+_0x4e888e['rules'][_0x4369c0][_0x7768('0x69')]:'');}return _0x3eba4d+')';};var _0x36cfb3={'where':{'id':_0x40adde[_0x7768('0x41')]['id']}},_0x3b7d21,_0x8c54f4,_0x3337d1,_0x5753a0,_0x206337;_0x36cfb3=_['merge']({},_0x36cfb3,_0x40adde[_0x7768('0x6a')]);return db[_0x7768('0x2b')][_0x7768('0x49')](_0x36cfb3)[_0x7768('0x22')](function(_0x418a3f){if(_0x418a3f){_0x3b7d21=_0x418a3f;return _0x418a3f['getFields']();}return null;})[_0x7768('0x22')](function(_0x527a2e){if(_0x527a2e){if(!_0x527a2e[_0x7768('0x36')]){throw new db[(_0x7768('0x6b'))]['ValidationErrorItem'](_0x7768('0x6c'),0x193);}_0x8c54f4=_0x527a2e;return db[_0x7768('0x6d')][_0x7768('0x3f')]({'raw':!![]});}return null;})['then'](function(_0x1debe4){if(_0x1debe4){_0x3337d1=_[_0x7768('0x6e')](_0x1debe4,'id');var _0x5afd68;var _0x340b66=squel[_0x7768('0x6f')]();_0x340b66[_0x7768('0x70')](_0x3b7d21[_0x7768('0x71')]);for(var _0x258045=0x0;_0x258045<_0x8c54f4['length'];_0x258045+=0x1){_0x5afd68=_0x8c54f4[_0x258045][_0x7768('0x72')]?_0x3337d1[_0x8c54f4[_0x258045][_0x7768('0x72')]]['metric']:_0x8c54f4[_0x258045]['field'];_0x5afd68=_0x8c54f4[_0x258045][_0x7768('0x73')]?_[_0x7768('0x74')](_0x11475d[_0x8c54f4[_0x258045][_0x7768('0x73')]],'%s',_0x5afd68):_0x5afd68;_0x5afd68=_0x8c54f4[_0x258045][_0x7768('0x75')]?_[_0x7768('0x74')](_0x2e4c66[_0x8c54f4[_0x258045][_0x7768('0x75')]],'%s',_0x5afd68):_0x5afd68;if(_0x8c54f4[_0x258045]['groupBy']){_0x340b66[_0x7768('0x66')](_0x5afd68);}_0x8c54f4[_0x258045][_0x7768('0x76')]&&_0x340b66[_0x7768('0x39')](_0x5afd68,_0x8c54f4[_0x258045][_0x7768('0x76')]===_0x7768('0x77')?![]:!![]);_0x340b66[_0x7768('0x67')](_0x5afd68,_0x8c54f4[_0x258045][_0x7768('0x78')]||_0x5afd68);}if(_0x3b7d21['joins']){_0x3b7d21['joins']=JSON['parse'](_0x3b7d21[_0x7768('0x79')]);for(var _0x37e693=0x0;_0x37e693<_0x3b7d21[_0x7768('0x79')][_0x7768('0x36')];_0x37e693+=0x1){if(_0x3b7d21['joins'][_0x37e693]['type']&&_['includes'](_0x5c00a9,_0x3b7d21['joins'][_0x37e693][_0x7768('0x2e')])&&_0x3b7d21['joins'][_0x37e693][_0x7768('0x7a')]&&_0x3b7d21['joins'][_0x37e693]['foreignTable']&&_0x3b7d21[_0x7768('0x79')][_0x37e693][_0x7768('0x7b')]){_0x340b66[_0x3b7d21[_0x7768('0x79')][_0x37e693][_0x7768('0x2e')]](_0x3b7d21[_0x7768('0x79')][_0x37e693][_0x7768('0x7c')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x3b7d21[_0x7768('0x71')],_0x3b7d21[_0x7768('0x79')][_0x37e693][_0x7768('0x7a')],_0x3b7d21[_0x7768('0x79')][_0x37e693][_0x7768('0x7c')],_0x3b7d21['joins'][_0x37e693][_0x7768('0x7b')]));}}}if(_0x3b7d21[_0x7768('0x7d')]){_0x3b7d21[_0x7768('0x7d')]=JSON['parse'](_0x3b7d21[_0x7768('0x7d')]);_0x340b66[_0x7768('0x3b')](_0x2ac4ce(_0x3b7d21[_0x7768('0x7d')][_0x7768('0x66')]));}_0x206337=_0x340b66[_0x7768('0x7e')]();_0x340b66[_0x7768('0x1d')](_0x5c9a88);_0x340b66[_0x7768('0x1b')](0x0);logger['debug'](_0x7768('0x7f'),_0x340b66[_0x7768('0x80')]());return dbH[_0x7768('0x81')][_0x7768('0x30')](_0x340b66[_0x7768('0x80')](),{'type':dbH[_0x7768('0x81')][_0x7768('0x82')][_0x7768('0x83')]});}})[_0x7768('0x22')](respondWithResult(_0x4bf67b,null))[_0x7768('0x40')](handleError(_0x4bf67b,null));};function runReport(_0x1bc61a,_0x5db4b4,_0x3ea9d6){var _0x1db77d=_0x5db4b4[_0x7768('0x28')];var _0x8550b=0xa;var _0x52b0bc=['join',_0x7768('0x50'),_0x7768('0x51'),_0x7768('0x52')];var _0x4d9fef={'SUM':'SUM(%s)','COUNT':_0x7768('0x54'),'COUNT DISTINCT':_0x7768('0x55'),'MAX':_0x7768('0x56'),'MIN':_0x7768('0x57'),'AVG':_0x7768('0x58'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x7768('0x5a'),'GROUP_CONCAT DESC':_0x7768('0x5b')};var _0x518c17={'SEC_TO_TIME':_0x7768('0x84'),'DATE':'DATE(%s)','HOUR':_0x7768('0x5d'),'ROUND':_0x7768('0x5e'),'UNIX_TIMESTAMP':_0x7768('0x5f')};var _0x3613c3=function(_0x1fead7){return!_['includes']([_0x7768('0x61'),_0x7768('0x62'),'IS\x20EMPTY','IS\x20NOT\x20EMPTY'],_0x1fead7);};var _0x4a23fb=function(_0xb95232){if(!_0xb95232||!_0xb95232[_0x7768('0x65')]['length']){return'';}for(var _0x2d1e5e='(',_0x4750a9=0x0;_0x4750a9<_0xb95232[_0x7768('0x65')][_0x7768('0x36')];_0x4750a9+=0x1){_0x4750a9>0x0&&(_0x2d1e5e+='\x20'+_0xb95232[_0x7768('0x85')]+'\x20');_0x2d1e5e+=_0xb95232[_0x7768('0x65')][_0x4750a9]['group']?_0x4a23fb(_0xb95232[_0x7768('0x65')][_0x4750a9]['group']):_0xb95232['rules'][_0x4750a9][_0x7768('0x67')]+'\x20'+_0xb95232[_0x7768('0x65')][_0x4750a9][_0x7768('0x68')]+(_0x3613c3(_0xb95232[_0x7768('0x65')][_0x4750a9]['condition'])?'\x20'+_0xb95232[_0x7768('0x65')][_0x4750a9]['value']:'');}return _0x2d1e5e+')';};var _0x260ada={'where':{'id':_0x1bc61a['id']}},_0x20e1ca,_0x2f7f37,_0x593ffe,_0xc3ed31,_0x60932c;_0x260ada=_[_0x7768('0x3d')]({},_0x260ada,_0x3ea9d6);return db[_0x7768('0x2b')]['find'](_0x260ada)[_0x7768('0x22')](function(_0x3749c1){if(_0x3749c1){_0x20e1ca=_0x3749c1;return _0x3749c1['getFields']();}return null;})[_0x7768('0x22')](function(_0x127188){if(_0x127188){if(!_0x127188[_0x7768('0x36')]){throw new db[(_0x7768('0x6b'))][(_0x7768('0x86'))](_0x7768('0x6c'),0x193);}_0x2f7f37=_0x127188;return db['AnalyticMetric'][_0x7768('0x3f')]({'raw':!![]});}return null;})['then'](function(_0x221a5a){if(_0x221a5a){_0x593ffe=_[_0x7768('0x6e')](_0x221a5a,'id');var _0x385919;var _0x1c264d=squel[_0x7768('0x6f')]();_0x1c264d[_0x7768('0x70')](_0x20e1ca['table']);for(var _0x5c3e45=0x0;_0x5c3e45<_0x2f7f37[_0x7768('0x36')];_0x5c3e45+=0x1){_0x385919=_0x2f7f37[_0x5c3e45]['MetricId']?_0x593ffe[_0x2f7f37[_0x5c3e45][_0x7768('0x72')]][_0x7768('0x87')]:_0x2f7f37[_0x5c3e45][_0x7768('0x67')];_0x385919=_0x2f7f37[_0x5c3e45][_0x7768('0x73')]?_[_0x7768('0x74')](_0x4d9fef[_0x2f7f37[_0x5c3e45][_0x7768('0x73')]],'%s',_0x385919):_0x385919;_0x385919=_0x2f7f37[_0x5c3e45][_0x7768('0x75')]?_[_0x7768('0x74')](_0x518c17[_0x2f7f37[_0x5c3e45][_0x7768('0x75')]],'%s',_0x385919):_0x385919;if(_0x2f7f37[_0x5c3e45][_0x7768('0x88')]){_0x1c264d[_0x7768('0x66')](_0x385919);}_0x2f7f37[_0x5c3e45][_0x7768('0x76')]&&_0x1c264d['order'](_0x385919,_0x2f7f37[_0x5c3e45][_0x7768('0x76')]==='DESC'?![]:!![]);_0x1c264d[_0x7768('0x67')](_0x385919,_0x2f7f37[_0x5c3e45]['alias']||_0x385919);}if(_0x20e1ca[_0x7768('0x79')]){_0x20e1ca['joins']=JSON[_0x7768('0x89')](_0x20e1ca[_0x7768('0x79')]);for(var _0x59904f=0x0;_0x59904f<_0x20e1ca[_0x7768('0x79')][_0x7768('0x36')];_0x59904f+=0x1){if(_0x20e1ca[_0x7768('0x79')][_0x59904f][_0x7768('0x2e')]&&_[_0x7768('0x60')](_0x52b0bc,_0x20e1ca[_0x7768('0x79')][_0x59904f][_0x7768('0x2e')])&&_0x20e1ca['joins'][_0x59904f][_0x7768('0x7a')]&&_0x20e1ca['joins'][_0x59904f]['foreignTable']&&_0x20e1ca[_0x7768('0x79')][_0x59904f][_0x7768('0x7b')]){_0x1c264d[_0x20e1ca[_0x7768('0x79')][_0x59904f]['type']](_0x20e1ca[_0x7768('0x79')][_0x59904f][_0x7768('0x7c')],null,util[_0x7768('0x75')](_0x7768('0x8a'),_0x20e1ca[_0x7768('0x71')],_0x20e1ca[_0x7768('0x79')][_0x59904f][_0x7768('0x7a')],_0x20e1ca[_0x7768('0x79')][_0x59904f][_0x7768('0x7c')],_0x20e1ca[_0x7768('0x79')][_0x59904f][_0x7768('0x7b')]));}}}if(_0x20e1ca[_0x7768('0x7d')]){_0x20e1ca[_0x7768('0x7d')]=JSON[_0x7768('0x89')](_0x20e1ca['conditions']);_0x1c264d[_0x7768('0x3b')](_0x4a23fb(_0x20e1ca[_0x7768('0x7d')][_0x7768('0x66')]));}_0x60932c=_0x1c264d[_0x7768('0x7e')]();_0x1c264d[_0x7768('0x1d')](_0x8550b);_0x1c264d['offset'](0x0);return;}})['then'](function(){if(_0x5db4b4[_0x7768('0x8b')]===_0x7768('0x8c')){return null;}var _0x37b414=_['merge'](_0x5db4b4,{'name':_0x5db4b4['fullPath']||_0x5db4b4[_0x7768('0x28')]||_0x20e1ca['name'],'basename':_0x1db77d,'savename':util[_0x7768('0x75')](_0x7768('0x8d'),_0x5db4b4['name']||_0x20e1ca[_0x7768('0x28')],require(_0x7768('0x8e'))[_0x7768('0x8f')](0x4),_0x5db4b4[_0x7768('0x8b')]||_0x7768('0x90')),'reportId':_0x20e1ca['id'],'reportType':_0x7768('0x91')});return db[_0x7768('0x92')][_0x7768('0x44')](_0x37b414,{'raw':!![]});})[_0x7768('0x22')](function(_0xbbd9e6){if(_0x20e1ca[_0x7768('0x71')]===_0x7768('0x93')){_0x60932c[_0x7768('0x3b')](_0x20e1ca[_0x7768('0x71')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x5db4b4[_0x7768('0x94')],_0x5db4b4[_0x7768('0x95')]);}else{_0x60932c[_0x7768('0x3b')](_0x20e1ca[_0x7768('0x71')]+_0x7768('0x96'),_0x5db4b4[_0x7768('0x94')],_0x5db4b4['endDate']);}if(_0xbbd9e6){logger[_0x7768('0x97')](_0x7768('0x98'),_0x60932c[_0x7768('0x80')]());require(_0x7768('0x99'))['fork'](path[_0x7768('0x9a')](__dirname,_0x7768('0x9b'),_0xbbd9e6[_0x7768('0x8b')]),[_0xbbd9e6['id'],_0x60932c[_0x7768('0x80')](),path[_0x7768('0x9a')](__dirname,_0x7768('0x9c'),_0xbbd9e6[_0x7768('0x9d')]),_0x1db77d]);return _0xbbd9e6;}else{var _0x4bd5ac=squel[_0x7768('0x6f')]();_0x4bd5ac['from']('('+_0x60932c['toString']()+')',_0x7768('0x9e'));_0x4bd5ac[_0x7768('0x67')](_0x7768('0x9f'),_0x7768('0x1e'));_0x60932c[_0x7768('0x1d')](_0x5db4b4['limit']||_0x8550b);_0x60932c[_0x7768('0x1b')](_0x5db4b4[_0x7768('0x1b')]||0x0);return dbH[_0x7768('0x81')][_0x7768('0x30')](_0x4bd5ac[_0x7768('0x80')](),{'type':dbH[_0x7768('0x81')]['QueryTypes']['SELECT']})[_0x7768('0x22')](function(_0x1e2db1){if(!_0x1e2db1[_0x7768('0x36')]){_0xc3ed31=0x0;}else{_0xc3ed31=_0x1e2db1[0x0][_0x7768('0x1e')]||0x0;}return dbH[_0x7768('0x81')][_0x7768('0x30')](_0x60932c['toString'](),{'type':dbH[_0x7768('0x81')][_0x7768('0x82')][_0x7768('0x83')]});})['then'](function(_0x258c53){return{'rows':_0x258c53||[],'count':_0xc3ed31};});}});}exports['run']=function(_0x34f927,_0xd11c33){return runReport(_0x34f927[_0x7768('0x41')],_0x34f927['query'],_0x34f927[_0x7768('0x6a')])[_0x7768('0x22')](respondWithResult(_0xd11c33,null))[_0x7768('0x40')](handleError(_0xd11c33,null));};exports[_0x7768('0xa0')]=runReport;exports[_0x7768('0x30')]=function(_0x4ce28d,_0x342741){var _0x283180=0xa;var _0xbf6c23=[_0x7768('0x9a'),_0x7768('0x50'),_0x7768('0x51'),'cross_join'];var _0x24b72a={'SUM':_0x7768('0x53'),'COUNT':_0x7768('0x54'),'COUNT DISTINCT':_0x7768('0x55'),'MAX':_0x7768('0x56'),'MIN':'MIN(%s)','AVG':_0x7768('0x58'),'GROUP_CONCAT':_0x7768('0x59'),'GROUP_CONCAT ASC':_0x7768('0x5a'),'GROUP_CONCAT DESC':_0x7768('0x5b')};var _0x22d25f={'SEC_TO_TIME':_0x7768('0x84'),'DATE':_0x7768('0x5c'),'HOUR':'HOUR(%s)','ROUND':_0x7768('0x5e'),'UNIX_TIMESTAMP':_0x7768('0x5f')};var _0x2c0589=function(_0x442e22){return!_[_0x7768('0x60')]([_0x7768('0x61'),'IS\x20NOT\x20NULL',_0x7768('0x63'),_0x7768('0x64')],_0x442e22);};var _0x5cecb2=function(_0x424a87){if(!_0x424a87||!_0x424a87[_0x7768('0x65')][_0x7768('0x36')]){return'';}for(var _0xa046a6='(',_0x356c01=0x0;_0x356c01<_0x424a87['rules']['length'];_0x356c01+=0x1){_0x356c01>0x0&&(_0xa046a6+='\x20'+_0x424a87[_0x7768('0x85')]+'\x20');_0xa046a6+=_0x424a87[_0x7768('0x65')][_0x356c01]['group']?_0x5cecb2(_0x424a87[_0x7768('0x65')][_0x356c01][_0x7768('0x66')]):_0x424a87[_0x7768('0x65')][_0x356c01][_0x7768('0x67')]+'\x20'+_0x424a87['rules'][_0x356c01][_0x7768('0x68')]+(_0x2c0589(_0x424a87[_0x7768('0x65')][_0x356c01][_0x7768('0x68')])?'\x20'+_0x424a87[_0x7768('0x65')][_0x356c01][_0x7768('0x69')]:'');}return _0xa046a6+')';};var _0x464a89={'where':{'id':_0x4ce28d['params']['id']}},_0x4cebb7,_0x3822a3,_0x151157,_0x5c7e1b,_0x423f90;_0x464a89=_[_0x7768('0x3d')]({},_0x464a89,_0x4ce28d[_0x7768('0x6a')]);return db[_0x7768('0x2b')][_0x7768('0x49')](_0x464a89)[_0x7768('0x22')](function(_0x43cb6d){if(_0x43cb6d){_0x4cebb7=_0x43cb6d;return _0x43cb6d[_0x7768('0xa1')]();}return null;})['then'](function(_0x3b9191){if(_0x3b9191){if(!_0x3b9191['length']){throw new db[(_0x7768('0x6b'))][(_0x7768('0x86'))](_0x7768('0x6c'),0x193);}_0x3822a3=_0x3b9191;return db[_0x7768('0x6d')]['findAll']({'raw':!![]});}return null;})['then'](function(_0x3e2a09){if(_0x3e2a09){_0x151157=_[_0x7768('0x6e')](_0x3e2a09,'id');var _0x300775;var _0x1a1b86=squel[_0x7768('0x6f')]();_0x1a1b86[_0x7768('0x70')](_0x4cebb7[_0x7768('0x71')]);for(var _0xd8795f=0x0;_0xd8795f<_0x3822a3[_0x7768('0x36')];_0xd8795f+=0x1){_0x300775=_0x3822a3[_0xd8795f][_0x7768('0x72')]?_0x151157[_0x3822a3[_0xd8795f][_0x7768('0x72')]][_0x7768('0x87')]:_0x3822a3[_0xd8795f][_0x7768('0x67')];_0x300775=_0x3822a3[_0xd8795f][_0x7768('0x73')]?_[_0x7768('0x74')](_0x24b72a[_0x3822a3[_0xd8795f][_0x7768('0x73')]],'%s',_0x300775):_0x300775;_0x300775=_0x3822a3[_0xd8795f][_0x7768('0x75')]?_[_0x7768('0x74')](_0x22d25f[_0x3822a3[_0xd8795f][_0x7768('0x75')]],'%s',_0x300775):_0x300775;if(_0x3822a3[_0xd8795f]['groupBy']){_0x1a1b86[_0x7768('0x66')](_0x300775);}_0x3822a3[_0xd8795f][_0x7768('0x76')]&&_0x1a1b86[_0x7768('0x39')](_0x300775,_0x3822a3[_0xd8795f][_0x7768('0x76')]==='DESC'?![]:!![]);_0x1a1b86[_0x7768('0x67')](_0x300775,_0x3822a3[_0xd8795f]['alias']||_0x300775);}if(_0x4cebb7[_0x7768('0x79')]){_0x4cebb7[_0x7768('0x79')]=JSON['parse'](_0x4cebb7[_0x7768('0x79')]);for(var _0x22cdfc=0x0;_0x22cdfc<_0x4cebb7[_0x7768('0x79')]['length'];_0x22cdfc+=0x1){if(_0x4cebb7[_0x7768('0x79')][_0x22cdfc][_0x7768('0x2e')]&&_['includes'](_0xbf6c23,_0x4cebb7[_0x7768('0x79')][_0x22cdfc]['type'])&&_0x4cebb7[_0x7768('0x79')][_0x22cdfc][_0x7768('0x7a')]&&_0x4cebb7[_0x7768('0x79')][_0x22cdfc][_0x7768('0x7c')]&&_0x4cebb7[_0x7768('0x79')][_0x22cdfc]['foreignKey']){_0x1a1b86[_0x4cebb7[_0x7768('0x79')][_0x22cdfc][_0x7768('0x2e')]](_0x4cebb7[_0x7768('0x79')][_0x22cdfc][_0x7768('0x7c')],null,util[_0x7768('0x75')](_0x7768('0x8a'),_0x4cebb7[_0x7768('0x71')],_0x4cebb7[_0x7768('0x79')][_0x22cdfc]['parentKey'],_0x4cebb7[_0x7768('0x79')][_0x22cdfc]['foreignTable'],_0x4cebb7[_0x7768('0x79')][_0x22cdfc][_0x7768('0x7b')]));}}}if(_0x4cebb7[_0x7768('0x7d')]){_0x4cebb7[_0x7768('0x7d')]=JSON[_0x7768('0x89')](_0x4cebb7[_0x7768('0x7d')]);_0x1a1b86[_0x7768('0x3b')](_0x5cecb2(_0x4cebb7['conditions']['group']));}_0x423f90=_0x1a1b86[_0x7768('0x7e')]();_0x1a1b86[_0x7768('0x1d')](_0x283180);_0x1a1b86[_0x7768('0x1b')](0x0);logger[_0x7768('0xa2')](_0x7768('0x7f'),_0x1a1b86['toString']());return dbH[_0x7768('0x81')][_0x7768('0x30')](_0x1a1b86[_0x7768('0x80')](),{'type':dbH[_0x7768('0x81')][_0x7768('0x82')][_0x7768('0x83')]});}})[_0x7768('0x22')](function(){return{'sql':_0x423f90[_0x7768('0x80')]()};})[_0x7768('0x22')](respondWithResult(_0x342741,null))['catch'](handleError(_0x342741,null));};
\ No newline at end of file
+var _0xf234=['operator','group','field','condition','value','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','select','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','alias','joins','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','parentKey','conditions','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','MIN(%s)','AVG(%s)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','IS\x20NULL','IS\x20NOT\x20EMPTY','keyBy','DESC','parse','clone','output','web','fullPath','%s-%s.%s','randomstring','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','run','runReport','right_join','cross_join','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','UNIX_TIMESTAMP(%s)','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','dbH','sendStatus','status','end','json','offset','undefined','limit','Content-Range','apply','reject','save','destroy','then','get','CustomReports','UserProfileResource','error','stack','name','send','index','AnalyticCustomReport','rawAttributes','type','key','model','map','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','options','count','include','findAll','rows','catch','show','params','includeAll','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','preview','join','left_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','includes','IS\x20NOT\x20NULL','IS\x20EMPTY','rules'];(function(_0x9af134,_0x24ec94){var _0xf6dd82=function(_0x18e82c){while(--_0x18e82c){_0x9af134['push'](_0x9af134['shift']());}};_0xf6dd82(++_0x24ec94);}(_0xf234,0xeb));var _0x4f23=function(_0x425c62,_0x41eb91){_0x425c62=_0x425c62-0x0;var _0x20b356=_0xf234[_0x425c62];return _0x20b356;};'use strict';var emlformat=require(_0x4f23('0x0'));var rimraf=require(_0x4f23('0x1'));var zipdir=require(_0x4f23('0x2'));var jsonpatch=require(_0x4f23('0x3'));var rp=require(_0x4f23('0x4'));var moment=require(_0x4f23('0x5'));var BPromise=require(_0x4f23('0x6'));var Mustache=require(_0x4f23('0x7'));var util=require(_0x4f23('0x8'));var path=require(_0x4f23('0x9'));var sox=require(_0x4f23('0xa'));var csv=require(_0x4f23('0xb'));var ejs=require(_0x4f23('0xc'));var fs=require('fs');var fs_extra=require(_0x4f23('0xd'));var _=require('lodash');var squel=require(_0x4f23('0xe'));var crypto=require('crypto');var jsforce=require(_0x4f23('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x4f23('0xb'));var querystring=require(_0x4f23('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x4f23('0x11'));var qs=require(_0x4f23('0x12'));var as=require(_0x4f23('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4f23('0x14'))(_0x4f23('0x15'));var utils=require('../../config/utils');var config=require(_0x4f23('0x16'));var licenseUtil=require(_0x4f23('0x17'));var db=require(_0x4f23('0x18'))['db'];var dbH=require(_0x4f23('0x18'))[_0x4f23('0x19')];function respondWithStatusCode(_0x51048f,_0x1f56de){_0x1f56de=_0x1f56de||0xcc;return function(_0x275c59){if(_0x275c59){return _0x51048f[_0x4f23('0x1a')](_0x1f56de);}return _0x51048f[_0x4f23('0x1b')](_0x1f56de)[_0x4f23('0x1c')]();};}function respondWithResult(_0x247fa9,_0x2c369b){_0x2c369b=_0x2c369b||0xc8;return function(_0x331245){if(_0x331245){return _0x247fa9['status'](_0x2c369b)[_0x4f23('0x1d')](_0x331245);}};}function respondWithFilteredResult(_0x171201,_0x467402){return function(_0x56913e){if(_0x56913e){var _0x3e19b4=typeof _0x467402[_0x4f23('0x1e')]===_0x4f23('0x1f')&&typeof _0x467402[_0x4f23('0x20')]===_0x4f23('0x1f');var _0x5b8b04=_0x56913e['count'];var _0x37c929=_0x3e19b4?0x0:_0x467402[_0x4f23('0x1e')];var _0xba4da8=_0x3e19b4?_0x56913e['count']:_0x467402[_0x4f23('0x1e')]+_0x467402[_0x4f23('0x20')];var _0x11a9cd;if(_0xba4da8>=_0x5b8b04){_0xba4da8=_0x5b8b04;_0x11a9cd=0xc8;}else{_0x11a9cd=0xce;}_0x171201[_0x4f23('0x1b')](_0x11a9cd);return _0x171201['set'](_0x4f23('0x21'),_0x37c929+'-'+_0xba4da8+'/'+_0x5b8b04)[_0x4f23('0x1d')](_0x56913e);}return null;};}function patchUpdates(_0x53b353){return function(_0x41294c){try{jsonpatch[_0x4f23('0x22')](_0x41294c,_0x53b353,!![]);}catch(_0x4931c4){return BPromise[_0x4f23('0x23')](_0x4931c4);}return _0x41294c[_0x4f23('0x24')]();};}function saveUpdates(_0x11ce9d,_0x2cae36){return function(_0x83e567){if(_0x83e567){return _0x83e567['update'](_0x11ce9d)['then'](function(_0xe3742){return _0xe3742;});}return null;};}function removeEntity(_0x233fd9,_0x59fba5){return function(_0x33f55b){if(_0x33f55b){return _0x33f55b[_0x4f23('0x25')]()[_0x4f23('0x26')](function(){var _0xfe1368=_0x33f55b[_0x4f23('0x27')]({'plain':!![]});var _0x31531b=_0x4f23('0x28');return db[_0x4f23('0x29')]['destroy']({'where':{'type':_0x31531b,'resourceId':_0xfe1368['id']}})['then'](function(){return _0x33f55b;});})[_0x4f23('0x26')](function(){_0x233fd9[_0x4f23('0x1b')](0xcc)[_0x4f23('0x1c')]();});}};}function handleEntityNotFound(_0x4c95b0,_0x34d7e0){return function(_0x4e89ab){if(!_0x4e89ab){_0x4c95b0['sendStatus'](0x194);}return _0x4e89ab;};}function handleError(_0x52769a,_0x2d3d68){_0x2d3d68=_0x2d3d68||0x1f4;return function(_0x3550bc){logger[_0x4f23('0x2a')](_0x3550bc[_0x4f23('0x2b')]);if(_0x3550bc['name']){delete _0x3550bc[_0x4f23('0x2c')];}_0x52769a['status'](_0x2d3d68)[_0x4f23('0x2d')](_0x3550bc);};}exports[_0x4f23('0x2e')]=function(_0xf7fd17,_0x32fa99){var _0x57ad9b={},_0x2d57d4={},_0x2bad9d={'count':0x0,'rows':[]};var _0x21dbc3=_['map'](db[_0x4f23('0x2f')][_0x4f23('0x30')],function(_0x12994d){return{'name':_0x12994d['fieldName'],'type':_0x12994d[_0x4f23('0x31')][_0x4f23('0x32')]};});_0x2d57d4[_0x4f23('0x33')]=_[_0x4f23('0x34')](_0x21dbc3,_0x4f23('0x2c'));_0x2d57d4['query']=_[_0x4f23('0x35')](_0xf7fd17[_0x4f23('0x36')]);_0x2d57d4[_0x4f23('0x37')]=_[_0x4f23('0x38')](_0x2d57d4[_0x4f23('0x33')],_0x2d57d4['query']);_0x57ad9b[_0x4f23('0x39')]=_[_0x4f23('0x38')](_0x2d57d4[_0x4f23('0x33')],qs[_0x4f23('0x3a')](_0xf7fd17[_0x4f23('0x36')][_0x4f23('0x3a')]));_0x57ad9b[_0x4f23('0x39')]=_0x57ad9b['attributes'][_0x4f23('0x3b')]?_0x57ad9b[_0x4f23('0x39')]:_0x2d57d4[_0x4f23('0x33')];if(!_0xf7fd17['query']['hasOwnProperty'](_0x4f23('0x3c'))){_0x57ad9b[_0x4f23('0x20')]=qs[_0x4f23('0x20')](_0xf7fd17[_0x4f23('0x36')][_0x4f23('0x20')]);_0x57ad9b['offset']=qs[_0x4f23('0x1e')](_0xf7fd17[_0x4f23('0x36')]['offset']);}_0x57ad9b[_0x4f23('0x3d')]=qs['sort'](_0xf7fd17[_0x4f23('0x36')][_0x4f23('0x3e')]);_0x57ad9b[_0x4f23('0x3f')]=qs['filters'](_[_0x4f23('0x40')](_0xf7fd17[_0x4f23('0x36')],_0x2d57d4[_0x4f23('0x37')]),_0x21dbc3);if(_0xf7fd17[_0x4f23('0x36')][_0x4f23('0x41')]){_0x57ad9b[_0x4f23('0x3f')]=_[_0x4f23('0x42')](_0x57ad9b[_0x4f23('0x3f')],{'$or':_[_0x4f23('0x34')](_0x21dbc3,function(_0x394288){if(_0x394288[_0x4f23('0x31')]!=='VIRTUAL'){var _0x171812={};_0x171812[_0x394288[_0x4f23('0x2c')]]={'$like':'%'+_0xf7fd17[_0x4f23('0x36')][_0x4f23('0x41')]+'%'};return _0x171812;}})});}_0x57ad9b=_[_0x4f23('0x42')]({},_0x57ad9b,_0xf7fd17[_0x4f23('0x43')]);var _0x225cc2={'where':_0x57ad9b['where']};return db['AnalyticCustomReport'][_0x4f23('0x44')](_0x225cc2)[_0x4f23('0x26')](function(_0x263adc){_0x2bad9d['count']=_0x263adc;if(_0xf7fd17['query']['includeAll']){_0x57ad9b[_0x4f23('0x45')]=[{'all':!![]}];}return db[_0x4f23('0x2f')][_0x4f23('0x46')](_0x57ad9b);})[_0x4f23('0x26')](function(_0x1f5fb9){_0x2bad9d[_0x4f23('0x47')]=_0x1f5fb9;return _0x2bad9d;})[_0x4f23('0x26')](respondWithFilteredResult(_0x32fa99,_0x57ad9b))[_0x4f23('0x48')](handleError(_0x32fa99,null));};exports[_0x4f23('0x49')]=function(_0x2a07f4,_0x4b1c0f){var _0x18ec57={'raw':![],'where':{'id':_0x2a07f4[_0x4f23('0x4a')]['id']}},_0x402f67={};_0x402f67['model']=_[_0x4f23('0x35')](db[_0x4f23('0x2f')][_0x4f23('0x30')]);_0x402f67['query']=_['keys'](_0x2a07f4[_0x4f23('0x36')]);_0x402f67['filters']=_[_0x4f23('0x38')](_0x402f67[_0x4f23('0x33')],_0x402f67[_0x4f23('0x36')]);_0x18ec57['attributes']=_['intersection'](_0x402f67[_0x4f23('0x33')],qs[_0x4f23('0x3a')](_0x2a07f4[_0x4f23('0x36')][_0x4f23('0x3a')]));_0x18ec57[_0x4f23('0x39')]=_0x18ec57[_0x4f23('0x39')][_0x4f23('0x3b')]?_0x18ec57[_0x4f23('0x39')]:_0x402f67[_0x4f23('0x33')];if(_0x2a07f4[_0x4f23('0x36')][_0x4f23('0x4b')]){_0x18ec57['include']=[{'all':!![]}];}_0x18ec57=_[_0x4f23('0x42')]({},_0x18ec57,_0x2a07f4[_0x4f23('0x43')]);return db[_0x4f23('0x2f')]['find'](_0x18ec57)[_0x4f23('0x26')](handleEntityNotFound(_0x4b1c0f,null))['then'](respondWithResult(_0x4b1c0f,null))[_0x4f23('0x48')](handleError(_0x4b1c0f,null));};exports[_0x4f23('0x4c')]=function(_0x5d0230,_0x2a7718){return db['AnalyticCustomReport'][_0x4f23('0x4c')](_0x5d0230['body'],{})[_0x4f23('0x26')](function(_0x3c4412){var _0x3a0f1d=_0x5d0230[_0x4f23('0x4d')][_0x4f23('0x27')]({'plain':!![]});if(!_0x3a0f1d)throw new Error(_0x4f23('0x4e'));if(_0x3a0f1d['role']===_0x4f23('0x4d')){var _0x5a2b0d=_0x3c4412[_0x4f23('0x27')]({'plain':!![]});var _0x7f1acc='Reports';return db['UserProfileSection'][_0x4f23('0x4f')]({'where':{'name':_0x7f1acc,'userProfileId':_0x3a0f1d[_0x4f23('0x50')]},'raw':!![]})['then'](function(_0x20ea8e){if(_0x20ea8e&&_0x20ea8e['autoAssociation']===0x0){return db[_0x4f23('0x29')][_0x4f23('0x4c')]({'name':_0x5a2b0d[_0x4f23('0x2c')],'resourceId':_0x5a2b0d['id'],'type':_0x4f23('0x28'),'sectionId':_0x20ea8e['id']},{})[_0x4f23('0x26')](function(){return _0x3c4412;});}else{return _0x3c4412;}})['catch'](function(_0x5a735b){logger[_0x4f23('0x2a')](_0x4f23('0x51'),_0x5a735b);throw _0x5a735b;});}return _0x3c4412;})[_0x4f23('0x26')](respondWithResult(_0x2a7718,0xc9))['catch'](handleError(_0x2a7718,null));};exports[_0x4f23('0x52')]=function(_0x344455,_0x4f12ee){if(_0x344455[_0x4f23('0x53')]['id']){delete _0x344455[_0x4f23('0x53')]['id'];}return db[_0x4f23('0x2f')][_0x4f23('0x4f')]({'where':{'id':_0x344455[_0x4f23('0x4a')]['id']}})[_0x4f23('0x26')](handleEntityNotFound(_0x4f12ee,null))[_0x4f23('0x26')](saveUpdates(_0x344455[_0x4f23('0x53')],null))[_0x4f23('0x26')](respondWithResult(_0x4f12ee,null))[_0x4f23('0x48')](handleError(_0x4f12ee,null));};exports[_0x4f23('0x25')]=function(_0x668da0,_0x288981){return db[_0x4f23('0x2f')]['find']({'where':{'id':_0x668da0[_0x4f23('0x4a')]['id']}})[_0x4f23('0x26')](handleEntityNotFound(_0x288981,null))[_0x4f23('0x26')](removeEntity(_0x288981,null))[_0x4f23('0x48')](handleError(_0x288981,null));};exports[_0x4f23('0x54')]=function(_0x214075,_0x4aad93){var _0x263e93=0xa;var _0x24a102=[_0x4f23('0x55'),_0x4f23('0x56'),'right_join','cross_join'];var _0x14dcbb={'SUM':_0x4f23('0x57'),'COUNT':_0x4f23('0x58'),'COUNT DISTINCT':_0x4f23('0x59'),'MAX':_0x4f23('0x5a'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0x4f23('0x5b'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x4f23('0x5c')};var _0x30fb9a={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':'ROUND(%s)','UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x24829e=function(_0x52cfa9){return!_[_0x4f23('0x5d')](['IS\x20NULL',_0x4f23('0x5e'),_0x4f23('0x5f'),'IS\x20NOT\x20EMPTY'],_0x52cfa9);};var _0x43d518=function(_0x555ed4){if(!_0x555ed4||!_0x555ed4[_0x4f23('0x60')][_0x4f23('0x3b')]){return'';}for(var _0x372dda='(',_0x58b1d7=0x0;_0x58b1d7<_0x555ed4[_0x4f23('0x60')][_0x4f23('0x3b')];_0x58b1d7+=0x1){_0x58b1d7>0x0&&(_0x372dda+='\x20'+_0x555ed4[_0x4f23('0x61')]+'\x20');_0x372dda+=_0x555ed4[_0x4f23('0x60')][_0x58b1d7][_0x4f23('0x62')]?_0x43d518(_0x555ed4[_0x4f23('0x60')][_0x58b1d7][_0x4f23('0x62')]):_0x555ed4[_0x4f23('0x60')][_0x58b1d7][_0x4f23('0x63')]+'\x20'+_0x555ed4[_0x4f23('0x60')][_0x58b1d7][_0x4f23('0x64')]+(_0x24829e(_0x555ed4[_0x4f23('0x60')][_0x58b1d7][_0x4f23('0x64')])?'\x20'+_0x555ed4[_0x4f23('0x60')][_0x58b1d7][_0x4f23('0x65')]:'');}return _0x372dda+')';};var _0x380d63={'where':{'id':_0x214075[_0x4f23('0x4a')]['id']}},_0x385116,_0x470601,_0x20588b,_0x114131,_0x26c429;_0x380d63=_['merge']({},_0x380d63,_0x214075[_0x4f23('0x43')]);return db[_0x4f23('0x2f')][_0x4f23('0x4f')](_0x380d63)['then'](function(_0x173439){if(_0x173439){_0x385116=_0x173439;return _0x173439[_0x4f23('0x66')]();}return null;})[_0x4f23('0x26')](function(_0x14f60b){if(_0x14f60b){if(!_0x14f60b[_0x4f23('0x3b')]){throw new db[(_0x4f23('0x67'))][(_0x4f23('0x68'))](_0x4f23('0x69'),0x193);}_0x470601=_0x14f60b;return db[_0x4f23('0x6a')][_0x4f23('0x46')]({'raw':!![]});}return null;})[_0x4f23('0x26')](function(_0x2ce6c5){if(_0x2ce6c5){_0x20588b=_['keyBy'](_0x2ce6c5,'id');var _0x26acd5;var _0x11b3ca=squel[_0x4f23('0x6b')]();_0x11b3ca[_0x4f23('0x6c')](_0x385116[_0x4f23('0x6d')]);for(var _0x2f20ce=0x0;_0x2f20ce<_0x470601['length'];_0x2f20ce+=0x1){_0x26acd5=_0x470601[_0x2f20ce]['MetricId']?_0x20588b[_0x470601[_0x2f20ce][_0x4f23('0x6e')]][_0x4f23('0x6f')]:_0x470601[_0x2f20ce][_0x4f23('0x63')];_0x26acd5=_0x470601[_0x2f20ce][_0x4f23('0x70')]?_[_0x4f23('0x71')](_0x14dcbb[_0x470601[_0x2f20ce][_0x4f23('0x70')]],'%s',_0x26acd5):_0x26acd5;_0x26acd5=_0x470601[_0x2f20ce][_0x4f23('0x72')]?_[_0x4f23('0x71')](_0x30fb9a[_0x470601[_0x2f20ce][_0x4f23('0x72')]],'%s',_0x26acd5):_0x26acd5;if(_0x470601[_0x2f20ce][_0x4f23('0x73')]){_0x11b3ca[_0x4f23('0x62')](_0x26acd5);}_0x470601[_0x2f20ce][_0x4f23('0x74')]&&_0x11b3ca[_0x4f23('0x3d')](_0x26acd5,_0x470601[_0x2f20ce][_0x4f23('0x74')]==='DESC'?![]:!![]);_0x11b3ca[_0x4f23('0x63')](_0x26acd5,_0x470601[_0x2f20ce][_0x4f23('0x75')]||_0x26acd5);}if(_0x385116[_0x4f23('0x76')]){_0x385116['joins']=JSON['parse'](_0x385116[_0x4f23('0x76')]);for(var _0x46c700=0x0;_0x46c700<_0x385116[_0x4f23('0x76')][_0x4f23('0x3b')];_0x46c700+=0x1){if(_0x385116['joins'][_0x46c700][_0x4f23('0x31')]&&_[_0x4f23('0x5d')](_0x24a102,_0x385116['joins'][_0x46c700][_0x4f23('0x31')])&&_0x385116['joins'][_0x46c700]['parentKey']&&_0x385116[_0x4f23('0x76')][_0x46c700][_0x4f23('0x77')]&&_0x385116[_0x4f23('0x76')][_0x46c700][_0x4f23('0x78')]){_0x11b3ca[_0x385116[_0x4f23('0x76')][_0x46c700]['type']](_0x385116[_0x4f23('0x76')][_0x46c700]['foreignTable'],null,util[_0x4f23('0x72')](_0x4f23('0x79'),_0x385116[_0x4f23('0x6d')],_0x385116[_0x4f23('0x76')][_0x46c700][_0x4f23('0x7a')],_0x385116['joins'][_0x46c700]['foreignTable'],_0x385116[_0x4f23('0x76')][_0x46c700][_0x4f23('0x78')]));}}}if(_0x385116['conditions']){_0x385116[_0x4f23('0x7b')]=JSON['parse'](_0x385116[_0x4f23('0x7b')]);_0x11b3ca[_0x4f23('0x3f')](_0x43d518(_0x385116[_0x4f23('0x7b')]['group']));}_0x26c429=_0x11b3ca['clone']();_0x11b3ca[_0x4f23('0x20')](_0x263e93);_0x11b3ca[_0x4f23('0x1e')](0x0);logger['debug'](_0x4f23('0x7c'),_0x11b3ca[_0x4f23('0x7d')]());return dbH['sequelize'][_0x4f23('0x36')](_0x11b3ca[_0x4f23('0x7d')](),{'type':dbH[_0x4f23('0x7e')][_0x4f23('0x7f')][_0x4f23('0x80')]});}})[_0x4f23('0x26')](respondWithResult(_0x4aad93,null))[_0x4f23('0x48')](handleError(_0x4aad93,null));};function runReport(_0x394633,_0x2b3c7d,_0x5caac6){var _0x327c65=_0x2b3c7d['name'];var _0x5591bb=0xa;var _0x391baf=[_0x4f23('0x55'),_0x4f23('0x56'),'right_join','cross_join'];var _0x3bafd2={'SUM':_0x4f23('0x57'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x4f23('0x59'),'MAX':_0x4f23('0x5a'),'MIN':_0x4f23('0x81'),'AVG':_0x4f23('0x82'),'GROUP_CONCAT':_0x4f23('0x5b'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x1f9e85={'SEC_TO_TIME':_0x4f23('0x83'),'DATE':_0x4f23('0x84'),'HOUR':_0x4f23('0x85'),'ROUND':_0x4f23('0x86'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x48a5fc=function(_0x3913e3){return!_['includes']([_0x4f23('0x87'),_0x4f23('0x5e'),_0x4f23('0x5f'),_0x4f23('0x88')],_0x3913e3);};var _0x23048a=function(_0x5b5c56){if(!_0x5b5c56||!_0x5b5c56[_0x4f23('0x60')][_0x4f23('0x3b')]){return'';}for(var _0x494896='(',_0xe7b273=0x0;_0xe7b273<_0x5b5c56[_0x4f23('0x60')]['length'];_0xe7b273+=0x1){_0xe7b273>0x0&&(_0x494896+='\x20'+_0x5b5c56[_0x4f23('0x61')]+'\x20');_0x494896+=_0x5b5c56[_0x4f23('0x60')][_0xe7b273][_0x4f23('0x62')]?_0x23048a(_0x5b5c56['rules'][_0xe7b273][_0x4f23('0x62')]):_0x5b5c56['rules'][_0xe7b273][_0x4f23('0x63')]+'\x20'+_0x5b5c56[_0x4f23('0x60')][_0xe7b273][_0x4f23('0x64')]+(_0x48a5fc(_0x5b5c56[_0x4f23('0x60')][_0xe7b273][_0x4f23('0x64')])?'\x20'+_0x5b5c56[_0x4f23('0x60')][_0xe7b273][_0x4f23('0x65')]:'');}return _0x494896+')';};var _0x156ff8={'where':{'id':_0x394633['id']}},_0x57023d,_0x4439e2,_0x16c203,_0x2ce1af,_0xd22fc9;_0x156ff8=_[_0x4f23('0x42')]({},_0x156ff8,_0x5caac6);return db[_0x4f23('0x2f')]['find'](_0x156ff8)[_0x4f23('0x26')](function(_0x41e004){if(_0x41e004){_0x57023d=_0x41e004;return _0x41e004[_0x4f23('0x66')]();}return null;})[_0x4f23('0x26')](function(_0xc2caf2){if(_0xc2caf2){if(!_0xc2caf2[_0x4f23('0x3b')]){throw new db[(_0x4f23('0x67'))]['ValidationErrorItem'](_0x4f23('0x69'),0x193);}_0x4439e2=_0xc2caf2;return db['AnalyticMetric'][_0x4f23('0x46')]({'raw':!![]});}return null;})['then'](function(_0x21157a){if(_0x21157a){_0x16c203=_[_0x4f23('0x89')](_0x21157a,'id');var _0x5b8c43;var _0x2a01d3=squel[_0x4f23('0x6b')]();_0x2a01d3[_0x4f23('0x6c')](_0x57023d[_0x4f23('0x6d')]);for(var _0x538c85=0x0;_0x538c85<_0x4439e2[_0x4f23('0x3b')];_0x538c85+=0x1){_0x5b8c43=_0x4439e2[_0x538c85][_0x4f23('0x6e')]?_0x16c203[_0x4439e2[_0x538c85][_0x4f23('0x6e')]][_0x4f23('0x6f')]:_0x4439e2[_0x538c85][_0x4f23('0x63')];_0x5b8c43=_0x4439e2[_0x538c85]['function']?_[_0x4f23('0x71')](_0x3bafd2[_0x4439e2[_0x538c85][_0x4f23('0x70')]],'%s',_0x5b8c43):_0x5b8c43;_0x5b8c43=_0x4439e2[_0x538c85][_0x4f23('0x72')]?_[_0x4f23('0x71')](_0x1f9e85[_0x4439e2[_0x538c85][_0x4f23('0x72')]],'%s',_0x5b8c43):_0x5b8c43;if(_0x4439e2[_0x538c85]['groupBy']){_0x2a01d3[_0x4f23('0x62')](_0x5b8c43);}_0x4439e2[_0x538c85][_0x4f23('0x74')]&&_0x2a01d3[_0x4f23('0x3d')](_0x5b8c43,_0x4439e2[_0x538c85]['orderBy']===_0x4f23('0x8a')?![]:!![]);_0x2a01d3[_0x4f23('0x63')](_0x5b8c43,_0x4439e2[_0x538c85][_0x4f23('0x75')]||_0x5b8c43);}if(_0x57023d[_0x4f23('0x76')]){_0x57023d['joins']=JSON['parse'](_0x57023d['joins']);for(var _0x1f33a2=0x0;_0x1f33a2<_0x57023d['joins'][_0x4f23('0x3b')];_0x1f33a2+=0x1){if(_0x57023d[_0x4f23('0x76')][_0x1f33a2]['type']&&_[_0x4f23('0x5d')](_0x391baf,_0x57023d['joins'][_0x1f33a2]['type'])&&_0x57023d[_0x4f23('0x76')][_0x1f33a2][_0x4f23('0x7a')]&&_0x57023d[_0x4f23('0x76')][_0x1f33a2][_0x4f23('0x77')]&&_0x57023d[_0x4f23('0x76')][_0x1f33a2][_0x4f23('0x78')]){_0x2a01d3[_0x57023d['joins'][_0x1f33a2][_0x4f23('0x31')]](_0x57023d[_0x4f23('0x76')][_0x1f33a2][_0x4f23('0x77')],null,util[_0x4f23('0x72')](_0x4f23('0x79'),_0x57023d[_0x4f23('0x6d')],_0x57023d[_0x4f23('0x76')][_0x1f33a2][_0x4f23('0x7a')],_0x57023d['joins'][_0x1f33a2][_0x4f23('0x77')],_0x57023d['joins'][_0x1f33a2][_0x4f23('0x78')]));}}}if(_0x57023d['conditions']){_0x57023d[_0x4f23('0x7b')]=JSON[_0x4f23('0x8b')](_0x57023d[_0x4f23('0x7b')]);_0x2a01d3[_0x4f23('0x3f')](_0x23048a(_0x57023d[_0x4f23('0x7b')]['group']));}_0xd22fc9=_0x2a01d3[_0x4f23('0x8c')]();_0x2a01d3['limit'](_0x5591bb);_0x2a01d3[_0x4f23('0x1e')](0x0);return;}})['then'](function(){if(_0x2b3c7d[_0x4f23('0x8d')]===_0x4f23('0x8e')){return null;}var _0x45355f=_[_0x4f23('0x42')](_0x2b3c7d,{'name':_0x2b3c7d[_0x4f23('0x8f')]||_0x2b3c7d['name']||_0x57023d['name'],'basename':_0x327c65,'savename':util[_0x4f23('0x72')](_0x4f23('0x90'),_0x2b3c7d[_0x4f23('0x2c')]||_0x57023d[_0x4f23('0x2c')],require(_0x4f23('0x91'))['generate'](0x4),_0x2b3c7d[_0x4f23('0x8d')]||'csv'),'reportId':_0x57023d['id'],'reportType':'custom'});return db[_0x4f23('0x92')][_0x4f23('0x4c')](_0x45355f,{'raw':!![]});})[_0x4f23('0x26')](function(_0x8572a){if(_0x57023d[_0x4f23('0x6d')]==='cdr'){_0xd22fc9[_0x4f23('0x3f')](_0x57023d['table']+_0x4f23('0x93'),_0x2b3c7d[_0x4f23('0x94')],_0x2b3c7d[_0x4f23('0x95')]);}else{_0xd22fc9[_0x4f23('0x3f')](_0x57023d['table']+_0x4f23('0x96'),_0x2b3c7d['startDate'],_0x2b3c7d[_0x4f23('0x95')]);}if(_0x8572a){logger[_0x4f23('0x97')](_0x4f23('0x98'),_0xd22fc9[_0x4f23('0x7d')]());require(_0x4f23('0x99'))[_0x4f23('0x9a')](path[_0x4f23('0x55')](__dirname,_0x4f23('0x9b'),_0x8572a['output']),[_0x8572a['id'],_0xd22fc9[_0x4f23('0x7d')](),path['join'](__dirname,_0x4f23('0x9c'),_0x8572a[_0x4f23('0x9d')]),_0x327c65]);return _0x8572a;}else{var _0x5ab78b=squel['select']();_0x5ab78b[_0x4f23('0x6c')]('('+_0xd22fc9[_0x4f23('0x7d')]()+')',_0x4f23('0x9e'));_0x5ab78b[_0x4f23('0x63')](_0x4f23('0x9f'),'count');_0xd22fc9[_0x4f23('0x20')](_0x2b3c7d[_0x4f23('0x20')]||_0x5591bb);_0xd22fc9[_0x4f23('0x1e')](_0x2b3c7d[_0x4f23('0x1e')]||0x0);return dbH[_0x4f23('0x7e')]['query'](_0x5ab78b[_0x4f23('0x7d')](),{'type':dbH['sequelize']['QueryTypes'][_0x4f23('0x80')]})[_0x4f23('0x26')](function(_0x25c889){if(!_0x25c889[_0x4f23('0x3b')]){_0x2ce1af=0x0;}else{_0x2ce1af=_0x25c889[0x0][_0x4f23('0x44')]||0x0;}return dbH[_0x4f23('0x7e')][_0x4f23('0x36')](_0xd22fc9[_0x4f23('0x7d')](),{'type':dbH[_0x4f23('0x7e')][_0x4f23('0x7f')][_0x4f23('0x80')]});})['then'](function(_0x120502){return{'rows':_0x120502||[],'count':_0x2ce1af};});}});}exports[_0x4f23('0xa0')]=function(_0x5d36c4,_0x2a0b66){return runReport(_0x5d36c4['params'],_0x5d36c4[_0x4f23('0x36')],_0x5d36c4[_0x4f23('0x43')])[_0x4f23('0x26')](respondWithResult(_0x2a0b66,null))['catch'](handleError(_0x2a0b66,null));};exports[_0x4f23('0xa1')]=runReport;exports[_0x4f23('0x36')]=function(_0x4c5d87,_0x326f12){var _0x2f4daf=0xa;var _0x16b406=[_0x4f23('0x55'),_0x4f23('0x56'),_0x4f23('0xa2'),_0x4f23('0xa3')];var _0x14e361={'SUM':_0x4f23('0x57'),'COUNT':_0x4f23('0x58'),'COUNT DISTINCT':_0x4f23('0x59'),'MAX':_0x4f23('0x5a'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0x4f23('0x5b'),'GROUP_CONCAT ASC':_0x4f23('0xa4'),'GROUP_CONCAT DESC':_0x4f23('0x5c')};var _0x15ff62={'SEC_TO_TIME':_0x4f23('0x83'),'DATE':_0x4f23('0x84'),'HOUR':_0x4f23('0x85'),'ROUND':_0x4f23('0x86'),'UNIX_TIMESTAMP':_0x4f23('0xa5')};var _0x170dbc=function(_0x3be7b2){return!_['includes'](['IS\x20NULL','IS\x20NOT\x20NULL',_0x4f23('0x5f'),_0x4f23('0x88')],_0x3be7b2);};var _0x2a812d=function(_0x4c3531){if(!_0x4c3531||!_0x4c3531['rules'][_0x4f23('0x3b')]){return'';}for(var _0x3f41f3='(',_0x1b1bff=0x0;_0x1b1bff<_0x4c3531[_0x4f23('0x60')]['length'];_0x1b1bff+=0x1){_0x1b1bff>0x0&&(_0x3f41f3+='\x20'+_0x4c3531['operator']+'\x20');_0x3f41f3+=_0x4c3531[_0x4f23('0x60')][_0x1b1bff][_0x4f23('0x62')]?_0x2a812d(_0x4c3531[_0x4f23('0x60')][_0x1b1bff][_0x4f23('0x62')]):_0x4c3531[_0x4f23('0x60')][_0x1b1bff]['field']+'\x20'+_0x4c3531[_0x4f23('0x60')][_0x1b1bff]['condition']+(_0x170dbc(_0x4c3531['rules'][_0x1b1bff][_0x4f23('0x64')])?'\x20'+_0x4c3531[_0x4f23('0x60')][_0x1b1bff][_0x4f23('0x65')]:'');}return _0x3f41f3+')';};var _0xb61aec={'where':{'id':_0x4c5d87[_0x4f23('0x4a')]['id']}},_0x314851,_0x2ca4ae,_0x41c083,_0x1d0e8d,_0x5dbd83;_0xb61aec=_[_0x4f23('0x42')]({},_0xb61aec,_0x4c5d87[_0x4f23('0x43')]);return db[_0x4f23('0x2f')][_0x4f23('0x4f')](_0xb61aec)[_0x4f23('0x26')](function(_0x313545){if(_0x313545){_0x314851=_0x313545;return _0x313545[_0x4f23('0x66')]();}return null;})[_0x4f23('0x26')](function(_0x1e3bae){if(_0x1e3bae){if(!_0x1e3bae[_0x4f23('0x3b')]){throw new db[(_0x4f23('0x67'))][(_0x4f23('0x68'))](_0x4f23('0x69'),0x193);}_0x2ca4ae=_0x1e3bae;return db[_0x4f23('0x6a')]['findAll']({'raw':!![]});}return null;})['then'](function(_0x3f166a){if(_0x3f166a){_0x41c083=_[_0x4f23('0x89')](_0x3f166a,'id');var _0x368123;var _0x4ed6f2=squel['select']();_0x4ed6f2[_0x4f23('0x6c')](_0x314851[_0x4f23('0x6d')]);for(var _0x4d1404=0x0;_0x4d1404<_0x2ca4ae[_0x4f23('0x3b')];_0x4d1404+=0x1){_0x368123=_0x2ca4ae[_0x4d1404][_0x4f23('0x6e')]?_0x41c083[_0x2ca4ae[_0x4d1404][_0x4f23('0x6e')]][_0x4f23('0x6f')]:_0x2ca4ae[_0x4d1404][_0x4f23('0x63')];_0x368123=_0x2ca4ae[_0x4d1404]['function']?_[_0x4f23('0x71')](_0x14e361[_0x2ca4ae[_0x4d1404][_0x4f23('0x70')]],'%s',_0x368123):_0x368123;_0x368123=_0x2ca4ae[_0x4d1404][_0x4f23('0x72')]?_[_0x4f23('0x71')](_0x15ff62[_0x2ca4ae[_0x4d1404][_0x4f23('0x72')]],'%s',_0x368123):_0x368123;if(_0x2ca4ae[_0x4d1404][_0x4f23('0x73')]){_0x4ed6f2[_0x4f23('0x62')](_0x368123);}_0x2ca4ae[_0x4d1404][_0x4f23('0x74')]&&_0x4ed6f2[_0x4f23('0x3d')](_0x368123,_0x2ca4ae[_0x4d1404]['orderBy']===_0x4f23('0x8a')?![]:!![]);_0x4ed6f2[_0x4f23('0x63')](_0x368123,_0x2ca4ae[_0x4d1404][_0x4f23('0x75')]||_0x368123);}if(_0x314851[_0x4f23('0x76')]){_0x314851['joins']=JSON[_0x4f23('0x8b')](_0x314851[_0x4f23('0x76')]);for(var _0x211a11=0x0;_0x211a11<_0x314851[_0x4f23('0x76')][_0x4f23('0x3b')];_0x211a11+=0x1){if(_0x314851[_0x4f23('0x76')][_0x211a11][_0x4f23('0x31')]&&_[_0x4f23('0x5d')](_0x16b406,_0x314851[_0x4f23('0x76')][_0x211a11][_0x4f23('0x31')])&&_0x314851[_0x4f23('0x76')][_0x211a11][_0x4f23('0x7a')]&&_0x314851['joins'][_0x211a11][_0x4f23('0x77')]&&_0x314851[_0x4f23('0x76')][_0x211a11][_0x4f23('0x78')]){_0x4ed6f2[_0x314851[_0x4f23('0x76')][_0x211a11][_0x4f23('0x31')]](_0x314851['joins'][_0x211a11][_0x4f23('0x77')],null,util[_0x4f23('0x72')](_0x4f23('0x79'),_0x314851['table'],_0x314851[_0x4f23('0x76')][_0x211a11][_0x4f23('0x7a')],_0x314851[_0x4f23('0x76')][_0x211a11]['foreignTable'],_0x314851[_0x4f23('0x76')][_0x211a11]['foreignKey']));}}}if(_0x314851[_0x4f23('0x7b')]){_0x314851['conditions']=JSON['parse'](_0x314851[_0x4f23('0x7b')]);_0x4ed6f2[_0x4f23('0x3f')](_0x2a812d(_0x314851[_0x4f23('0x7b')][_0x4f23('0x62')]));}_0x5dbd83=_0x4ed6f2[_0x4f23('0x8c')]();_0x4ed6f2[_0x4f23('0x20')](_0x2f4daf);_0x4ed6f2[_0x4f23('0x1e')](0x0);logger['debug'](_0x4f23('0x7c'),_0x4ed6f2[_0x4f23('0x7d')]());return dbH[_0x4f23('0x7e')][_0x4f23('0x36')](_0x4ed6f2[_0x4f23('0x7d')](),{'type':dbH[_0x4f23('0x7e')][_0x4f23('0x7f')][_0x4f23('0x80')]});}})[_0x4f23('0x26')](function(){return{'sql':_0x5dbd83['toString']()};})[_0x4f23('0x26')](respondWithResult(_0x326f12,null))['catch'](handleError(_0x326f12,null));};
\ No newline at end of file
index 5a49ad5..458d590 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ca6=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./analyticCustomReport.attributes','exports'];(function(_0x1dfa63,_0x362bd4){var _0x26f2a9=function(_0x31cc52){while(--_0x31cc52){_0x1dfa63['push'](_0x1dfa63['shift']());}};_0x26f2a9(++_0x362bd4);}(_0x8ca6,0x168));var _0x68ca=function(_0x355f51,_0xfed1b0){_0x355f51=_0x355f51-0x0;var _0x1d59b7=_0x8ca6[_0x355f51];return _0x1d59b7;};'use strict';var _=require(_0x68ca('0x0'));var util=require('util');var logger=require(_0x68ca('0x1'))(_0x68ca('0x2'));var moment=require(_0x68ca('0x3'));var BPromise=require(_0x68ca('0x4'));var rp=require(_0x68ca('0x5'));var fs=require('fs');var path=require(_0x68ca('0x6'));var rimraf=require(_0x68ca('0x7'));var config=require('../../config/environment');var attributes=require(_0x68ca('0x8'));module[_0x68ca('0x9')]=function(_0x56e304,_0x814d4b){return _0x56e304['define']('AnalyticCustomReport',attributes,{'tableName':'analytics_custom_reports','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe6ee=['../../config/environment','./analyticCustomReport.attributes','exports','define','AnalyticCustomReport','lodash','../../config/logger','api','request-promise'];(function(_0x169fcd,_0x421ad8){var _0x38e1b3=function(_0x392f91){while(--_0x392f91){_0x169fcd['push'](_0x169fcd['shift']());}};_0x38e1b3(++_0x421ad8);}(_0xe6ee,0x8c));var _0xee6e=function(_0x3152a2,_0x79816c){_0x3152a2=_0x3152a2-0x0;var _0x169e23=_0xe6ee[_0x3152a2];return _0x169e23;};'use strict';var _=require(_0xee6e('0x0'));var util=require('util');var logger=require(_0xee6e('0x1'))(_0xee6e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xee6e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xee6e('0x4'));var attributes=require(_0xee6e('0x5'));module[_0xee6e('0x6')]=function(_0x348ee5,_0x389527){return _0x348ee5[_0xee6e('0x7')](_0xee6e('0x8'),attributes,{'tableName':'analytics_custom_reports','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b3cb738..c6823d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36bf=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x3c9268,_0x1a0c1f){var _0x4c62e5=function(_0x1d79c0){while(--_0x1d79c0){_0x3c9268['push'](_0x3c9268['shift']());}};_0x4c62e5(++_0x1a0c1f);}(_0x36bf,0x17a));var _0xf36b=function(_0x3f7176,_0xf060f5){_0x3f7176=_0x3f7176-0x0;var _0x3783a0=_0x36bf[_0x3f7176];return _0x3783a0;};'use strict';var _=require(_0xf36b('0x0'));var util=require(_0xf36b('0x1'));var moment=require(_0xf36b('0x2'));var BPromise=require(_0xf36b('0x3'));var rs=require(_0xf36b('0x4'));var fs=require('fs');var Redis=require(_0xf36b('0x5'));var db=require(_0xf36b('0x6'))['db'];var utils=require(_0xf36b('0x7'));var logger=require('../../config/logger')(_0xf36b('0x8'));var config=require(_0xf36b('0x9'));var jayson=require(_0xf36b('0xa'));var client=jayson[_0xf36b('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x14a70d,_0x45eb39,_0x3c0d33){return new BPromise(function(_0xca133d,_0x3d54a5){return client[_0xf36b('0xc')](_0x14a70d,_0x3c0d33)[_0xf36b('0xd')](function(_0x58d100){logger[_0xf36b('0xe')](_0xf36b('0xf'),_0x45eb39,_0xf36b('0x10'));logger['debug'](_0xf36b('0x11'),_0x45eb39,_0xf36b('0x10'),JSON[_0xf36b('0x12')](_0x58d100));if(_0x58d100[_0xf36b('0x13')]){if(_0x58d100[_0xf36b('0x13')][_0xf36b('0x14')]===0x1f4){logger[_0xf36b('0x13')](_0xf36b('0xf'),_0x45eb39,_0x58d100[_0xf36b('0x13')][_0xf36b('0x15')]);return _0x3d54a5(_0x58d100[_0xf36b('0x13')][_0xf36b('0x15')]);}logger[_0xf36b('0x13')](_0xf36b('0xf'),_0x45eb39,_0x58d100[_0xf36b('0x13')][_0xf36b('0x15')]);return _0xca133d(_0x58d100['error'][_0xf36b('0x15')]);}else{logger[_0xf36b('0xe')](_0xf36b('0xf'),_0x45eb39,_0xf36b('0x10'));_0xca133d(_0x58d100[_0xf36b('0x16')]['message']);}})[_0xf36b('0x17')](function(_0x1dc554){logger[_0xf36b('0x13')](_0xf36b('0xf'),_0x45eb39,_0x1dc554);_0x3d54a5(_0x1dc554);});});}
\ No newline at end of file
+var _0xeace=['code','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','request','then','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','error'];(function(_0x3dcfeb,_0x25c8a2){var _0x3827d0=function(_0x5637ba){while(--_0x5637ba){_0x3dcfeb['push'](_0x3dcfeb['shift']());}};_0x3827d0(++_0x25c8a2);}(_0xeace,0x123));var _0xeeac=function(_0x49a3ea,_0x575ad0){_0x49a3ea=_0x49a3ea-0x0;var _0x36be5e=_0xeace[_0x49a3ea];return _0x36be5e;};'use strict';var _=require(_0xeeac('0x0'));var util=require(_0xeeac('0x1'));var moment=require(_0xeeac('0x2'));var BPromise=require(_0xeeac('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xeeac('0x4'));var db=require(_0xeeac('0x5'))['db'];var utils=require(_0xeeac('0x6'));var logger=require('../../config/logger')(_0xeeac('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x54621a,_0x486ff1,_0x28cc45){return new BPromise(function(_0x44651e,_0x1bb891){return client[_0xeeac('0x8')](_0x54621a,_0x28cc45)[_0xeeac('0x9')](function(_0x5c0c63){logger[_0xeeac('0xa')](_0xeeac('0xb'),_0x486ff1,_0xeeac('0xc'));logger['debug'](_0xeeac('0xd'),_0x486ff1,_0xeeac('0xc'),JSON['stringify'](_0x5c0c63));if(_0x5c0c63['error']){if(_0x5c0c63[_0xeeac('0xe')][_0xeeac('0xf')]===0x1f4){logger[_0xeeac('0xe')](_0xeeac('0xb'),_0x486ff1,_0x5c0c63[_0xeeac('0xe')]['message']);return _0x1bb891(_0x5c0c63[_0xeeac('0xe')][_0xeeac('0x10')]);}logger[_0xeeac('0xe')]('AnalyticCustomReport,\x20%s,\x20%s',_0x486ff1,_0x5c0c63['error'][_0xeeac('0x10')]);return _0x44651e(_0x5c0c63[_0xeeac('0xe')]['message']);}else{logger[_0xeeac('0xa')](_0xeeac('0xb'),_0x486ff1,'request\x20sent');_0x44651e(_0x5c0c63[_0xeeac('0x11')][_0xeeac('0x10')]);}})['catch'](function(_0xf00418){logger[_0xeeac('0xe')]('AnalyticCustomReport,\x20%s,\x20%s',_0x486ff1,_0xf00418);_0x1bb891(_0xf00418);});});}
\ No newline at end of file
index 4958b54..9397d71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43c1=['preview','/:id/run','run','/:id/query','query','post','create','update','delete','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../config/environment','./analyticCustomReport.controller','get','isAuthenticated','index','/:id','/:id/preview'];(function(_0x1809c5,_0x46cabc){var _0x5254a4=function(_0xd1d319){while(--_0xd1d319){_0x1809c5['push'](_0x1809c5['shift']());}};_0x5254a4(++_0x46cabc);}(_0x43c1,0x163));var _0x143c=function(_0x4c6f20,_0x41a475){_0x4c6f20=_0x4c6f20-0x0;var _0x4812c9=_0x43c1[_0x4c6f20];return _0x4812c9;};'use strict';var multer=require(_0x143c('0x0'));var util=require(_0x143c('0x1'));var path=require(_0x143c('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x143c('0x3')]();var fs_extra=require(_0x143c('0x4'));var auth=require(_0x143c('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x143c('0x6'));var controller=require(_0x143c('0x7'));router[_0x143c('0x8')]('/',auth[_0x143c('0x9')](),controller[_0x143c('0xa')]);router[_0x143c('0x8')](_0x143c('0xb'),auth[_0x143c('0x9')](),controller['show']);router[_0x143c('0x8')](_0x143c('0xc'),auth[_0x143c('0x9')](),controller[_0x143c('0xd')]);router[_0x143c('0x8')](_0x143c('0xe'),auth[_0x143c('0x9')](),controller[_0x143c('0xf')]);router['get'](_0x143c('0x10'),auth[_0x143c('0x9')](),controller[_0x143c('0x11')]);router[_0x143c('0x12')]('/',auth[_0x143c('0x9')](),controller[_0x143c('0x13')]);router['put'](_0x143c('0xb'),auth['isAuthenticated'](),controller[_0x143c('0x14')]);router[_0x143c('0x15')]('/:id',auth[_0x143c('0x9')](),controller['destroy']);module[_0x143c('0x16')]=router;
\ No newline at end of file
+var _0xebdb=['show','preview','/:id/run','put','/:id','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticCustomReport.controller','get','isAuthenticated','index'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xebdb,0x16e));var _0xbebd=function(_0x39d1dc,_0x1dc490){_0x39d1dc=_0x39d1dc-0x0;var _0xaaaafa=_0xebdb[_0x39d1dc];return _0xaaaafa;};'use strict';var multer=require(_0xbebd('0x0'));var util=require('util');var path=require(_0xbebd('0x1'));var timeout=require(_0xbebd('0x2'));var express=require(_0xbebd('0x3'));var router=express[_0xbebd('0x4')]();var fs_extra=require(_0xbebd('0x5'));var auth=require(_0xbebd('0x6'));var interaction=require(_0xbebd('0x7'));var config=require('../../config/environment');var controller=require(_0xbebd('0x8'));router[_0xbebd('0x9')]('/',auth[_0xbebd('0xa')](),controller[_0xbebd('0xb')]);router[_0xbebd('0x9')]('/:id',auth[_0xbebd('0xa')](),controller[_0xbebd('0xc')]);router[_0xbebd('0x9')]('/:id/preview',auth['isAuthenticated'](),controller[_0xbebd('0xd')]);router[_0xbebd('0x9')](_0xbebd('0xe'),auth[_0xbebd('0xa')](),controller['run']);router[_0xbebd('0x9')]('/:id/query',auth[_0xbebd('0xa')](),controller['query']);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xbebd('0xf')](_0xbebd('0x10'),auth[_0xbebd('0xa')](),controller[_0xbebd('0x11')]);router[_0xbebd('0x12')]('/:id',auth[_0xbebd('0xa')](),controller[_0xbebd('0x13')]);module[_0xbebd('0x14')]=router;
\ No newline at end of file
index 7c42f34..27ec420 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['exports','STRING','TEXT','sequelize'];(function(_0x4f9e2b,_0x393590){var _0x5e223b=function(_0x3cb751){while(--_0x3cb751){_0x4f9e2b['push'](_0x4f9e2b['shift']());}};_0x5e223b(++_0x393590);}(_0xabce,0x103));var _0xeabc=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0xabce[_0x543084];return _0x306a57;};'use strict';var Sequelize=require(_0xeabc('0x0'));module[_0xeabc('0x1')]={'name':{'type':Sequelize[_0xeabc('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xeabc('0x2')]},'parent':{'type':Sequelize[_0xeabc('0x2')]},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0xeabc('0x3')]}};
\ No newline at end of file
+var _0xe14b=['exports','STRING','TEXT','sequelize'];(function(_0x7f03ae,_0x38b1aa){var _0x538b5e=function(_0x2c69b9){while(--_0x2c69b9){_0x7f03ae['push'](_0x7f03ae['shift']());}};_0x538b5e(++_0x38b1aa);}(_0xe14b,0x93));var _0xbe14=function(_0x319b5b,_0x5f2557){_0x319b5b=_0x319b5b-0x0;var _0x7e5198=_0xe14b[_0x319b5b];return _0x7e5198;};'use strict';var Sequelize=require(_0xbe14('0x0'));module[_0xbe14('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0xbe14('0x2')]},'table':{'type':Sequelize[_0xbe14('0x2')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0xbe14('0x3')]}};
\ No newline at end of file
index 4a13ceb..934443c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x687b=['util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','get','DefaultReports','UserProfileResource','destroy','sendStatus','error','name','send','index','map','AnalyticDefaultReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','order','sort','where','pick','VIRTUAL','filter','options','findAll','catch','params','intersection','includeAll','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Reports','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','left_join','right_join','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','merge','getFields','Sequelize','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','alias','joins','parse','foreignTable','foreignKey','conditions','clone','debug','Limited\x20Query:','toString','sequelize','QueryTypes','SUM(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ValidationErrorItem','DESC','parentKey','web','fullPath','%s-%s.%s','output','csv','default','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','Run\x20Query:','fork','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','SELECT','run','runReport','cross_join','%s.%s\x20=\x20%s.%s','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x687b,0x14a));var _0xb687=function(_0x508d16,_0x3e5c76){_0x508d16=_0x508d16-0x0;var _0x169e38=_0x687b[_0x508d16];return _0x169e38;};'use strict';var emlformat=require(_0xb687('0x0'));var rimraf=require(_0xb687('0x1'));var zipdir=require(_0xb687('0x2'));var jsonpatch=require(_0xb687('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb687('0x4'));var Mustache=require(_0xb687('0x5'));var util=require(_0xb687('0x6'));var path=require(_0xb687('0x7'));var sox=require(_0xb687('0x8'));var csv=require(_0xb687('0x9'));var ejs=require(_0xb687('0xa'));var fs=require('fs');var fs_extra=require(_0xb687('0xb'));var _=require(_0xb687('0xc'));var squel=require(_0xb687('0xd'));var crypto=require('crypto');var jsforce=require(_0xb687('0xe'));var deskjs=require(_0xb687('0xf'));var toCsv=require('to-csv');var querystring=require(_0xb687('0x10'));var Papa=require(_0xb687('0x11'));var Redis=require(_0xb687('0x12'));var authService=require(_0xb687('0x13'));var qs=require(_0xb687('0x14'));var as=require(_0xb687('0x15'));var hardwareService=require(_0xb687('0x16'));var logger=require(_0xb687('0x17'))(_0xb687('0x18'));var utils=require('../../config/utils');var config=require(_0xb687('0x19'));var licenseUtil=require(_0xb687('0x1a'));var db=require(_0xb687('0x1b'))['db'];var dbH=require(_0xb687('0x1b'))['dbH'];function respondWithStatusCode(_0x4c97ed,_0x3e85b3){_0x3e85b3=_0x3e85b3||0xcc;return function(_0x155ebe){if(_0x155ebe){return _0x4c97ed['sendStatus'](_0x3e85b3);}return _0x4c97ed[_0xb687('0x1c')](_0x3e85b3)[_0xb687('0x1d')]();};}function respondWithResult(_0x1f1f35,_0x30d502){_0x30d502=_0x30d502||0xc8;return function(_0x838dd4){if(_0x838dd4){return _0x1f1f35[_0xb687('0x1c')](_0x30d502)[_0xb687('0x1e')](_0x838dd4);}};}function respondWithFilteredResult(_0x141375,_0x263085){return function(_0x2c7a18){if(_0x2c7a18){var _0x25124a=typeof _0x263085[_0xb687('0x1f')]==='undefined'&&typeof _0x263085[_0xb687('0x20')]===_0xb687('0x21');var _0x30d370=_0x2c7a18['count'];var _0x48958d=_0x25124a?0x0:_0x263085[_0xb687('0x1f')];var _0x3a10ef=_0x25124a?_0x2c7a18[_0xb687('0x22')]:_0x263085['offset']+_0x263085[_0xb687('0x20')];var _0x481f1d;if(_0x3a10ef>=_0x30d370){_0x3a10ef=_0x30d370;_0x481f1d=0xc8;}else{_0x481f1d=0xce;}_0x141375[_0xb687('0x1c')](_0x481f1d);return _0x141375[_0xb687('0x23')](_0xb687('0x24'),_0x48958d+'-'+_0x3a10ef+'/'+_0x30d370)[_0xb687('0x1e')](_0x2c7a18);}return null;};}function patchUpdates(_0x49d5a1){return function(_0x3a73d5){try{jsonpatch['apply'](_0x3a73d5,_0x49d5a1,!![]);}catch(_0x335541){return BPromise[_0xb687('0x25')](_0x335541);}return _0x3a73d5[_0xb687('0x26')]();};}function saveUpdates(_0x546fde,_0x1dc06b){return function(_0x491623){if(_0x491623){return _0x491623[_0xb687('0x27')](_0x546fde)[_0xb687('0x28')](function(_0xbf6c58){return _0xbf6c58;});}return null;};}function removeEntity(_0x38866c,_0xf48ba4){return function(_0x2f0a0a){if(_0x2f0a0a){return _0x2f0a0a['destroy']()[_0xb687('0x28')](function(){var _0x129347=_0x2f0a0a[_0xb687('0x29')]({'plain':!![]});var _0x1a0261=_0xb687('0x2a');return db[_0xb687('0x2b')][_0xb687('0x2c')]({'where':{'type':_0x1a0261,'resourceId':_0x129347['id']}})[_0xb687('0x28')](function(){return _0x2f0a0a;});})[_0xb687('0x28')](function(){_0x38866c[_0xb687('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3712cf,_0x192966){return function(_0x392721){if(!_0x392721){_0x3712cf[_0xb687('0x2d')](0x194);}return _0x392721;};}function handleError(_0x2e5c8d,_0x173c58){_0x173c58=_0x173c58||0x1f4;return function(_0x4e9a06){logger[_0xb687('0x2e')](_0x4e9a06['stack']);if(_0x4e9a06[_0xb687('0x2f')]){delete _0x4e9a06[_0xb687('0x2f')];}_0x2e5c8d[_0xb687('0x1c')](_0x173c58)[_0xb687('0x30')](_0x4e9a06);};}exports[_0xb687('0x31')]=function(_0x43d20d,_0xf1f0dd){var _0x556815={},_0x3da2be={},_0xe3428f={'count':0x0,'rows':[]};var _0x3c08ab=_[_0xb687('0x32')](db[_0xb687('0x33')][_0xb687('0x34')],function(_0x44be88){return{'name':_0x44be88[_0xb687('0x35')],'type':_0x44be88[_0xb687('0x36')][_0xb687('0x37')]};});_0x3da2be[_0xb687('0x38')]=_['map'](_0x3c08ab,'name');_0x3da2be[_0xb687('0x39')]=_[_0xb687('0x3a')](_0x43d20d[_0xb687('0x39')]);_0x3da2be[_0xb687('0x3b')]=_['intersection'](_0x3da2be['model'],_0x3da2be[_0xb687('0x39')]);_0x556815[_0xb687('0x3c')]=_['intersection'](_0x3da2be[_0xb687('0x38')],qs[_0xb687('0x3d')](_0x43d20d['query'][_0xb687('0x3d')]));_0x556815['attributes']=_0x556815[_0xb687('0x3c')][_0xb687('0x3e')]?_0x556815[_0xb687('0x3c')]:_0x3da2be[_0xb687('0x38')];if(!_0x43d20d[_0xb687('0x39')][_0xb687('0x3f')]('nolimit')){_0x556815[_0xb687('0x20')]=qs[_0xb687('0x20')](_0x43d20d[_0xb687('0x39')][_0xb687('0x20')]);_0x556815['offset']=qs[_0xb687('0x1f')](_0x43d20d[_0xb687('0x39')][_0xb687('0x1f')]);}_0x556815[_0xb687('0x40')]=qs[_0xb687('0x41')](_0x43d20d['query'][_0xb687('0x41')]);_0x556815[_0xb687('0x42')]=qs[_0xb687('0x3b')](_[_0xb687('0x43')](_0x43d20d[_0xb687('0x39')],_0x3da2be[_0xb687('0x3b')]),_0x3c08ab);if(_0x43d20d['query']['filter']){_0x556815[_0xb687('0x42')]=_['merge'](_0x556815[_0xb687('0x42')],{'$or':_[_0xb687('0x32')](_0x3c08ab,function(_0x48d3b1){if(_0x48d3b1[_0xb687('0x36')]!==_0xb687('0x44')){var _0x57776b={};_0x57776b[_0x48d3b1[_0xb687('0x2f')]]={'$like':'%'+_0x43d20d[_0xb687('0x39')][_0xb687('0x45')]+'%'};return _0x57776b;}})});}_0x556815=_['merge']({},_0x556815,_0x43d20d[_0xb687('0x46')]);var _0x9cffb2={'where':_0x556815[_0xb687('0x42')]};return db[_0xb687('0x33')][_0xb687('0x22')](_0x9cffb2)[_0xb687('0x28')](function(_0x21b9ef){_0xe3428f['count']=_0x21b9ef;if(_0x43d20d[_0xb687('0x39')]['includeAll']){_0x556815['include']=[{'all':!![]}];}return db[_0xb687('0x33')][_0xb687('0x47')](_0x556815);})['then'](function(_0x19a21c){_0xe3428f['rows']=_0x19a21c;return _0xe3428f;})[_0xb687('0x28')](respondWithFilteredResult(_0xf1f0dd,_0x556815))[_0xb687('0x48')](handleError(_0xf1f0dd,null));};exports['show']=function(_0x4cb7a0,_0x3a8509){var _0x5d9cb0={'raw':!![],'where':{'id':_0x4cb7a0[_0xb687('0x49')]['id']}},_0x247c67={};_0x247c67[_0xb687('0x38')]=_[_0xb687('0x3a')](db[_0xb687('0x33')][_0xb687('0x34')]);_0x247c67[_0xb687('0x39')]=_[_0xb687('0x3a')](_0x4cb7a0[_0xb687('0x39')]);_0x247c67[_0xb687('0x3b')]=_[_0xb687('0x4a')](_0x247c67[_0xb687('0x38')],_0x247c67['query']);_0x5d9cb0[_0xb687('0x3c')]=_['intersection'](_0x247c67[_0xb687('0x38')],qs[_0xb687('0x3d')](_0x4cb7a0[_0xb687('0x39')][_0xb687('0x3d')]));_0x5d9cb0[_0xb687('0x3c')]=_0x5d9cb0[_0xb687('0x3c')]['length']?_0x5d9cb0['attributes']:_0x247c67[_0xb687('0x38')];if(_0x4cb7a0[_0xb687('0x39')][_0xb687('0x4b')]){_0x5d9cb0[_0xb687('0x4c')]=[{'all':!![]}];}_0x5d9cb0=_['merge']({},_0x5d9cb0,_0x4cb7a0[_0xb687('0x46')]);return db[_0xb687('0x33')][_0xb687('0x4d')](_0x5d9cb0)[_0xb687('0x28')](handleEntityNotFound(_0x3a8509,null))['then'](respondWithResult(_0x3a8509,null))[_0xb687('0x48')](handleError(_0x3a8509,null));};exports[_0xb687('0x4e')]=function(_0x162b19,_0x401b99){return db['AnalyticDefaultReport']['create'](_0x162b19[_0xb687('0x4f')],{})[_0xb687('0x28')](function(_0x42b61a){var _0x508862=_0x162b19['user'][_0xb687('0x29')]({'plain':!![]});if(!_0x508862)throw new Error(_0xb687('0x50'));if(_0x508862[_0xb687('0x51')]===_0xb687('0x52')){var _0x34205d=_0x42b61a[_0xb687('0x29')]({'plain':!![]});var _0x602864=_0xb687('0x53');return db['UserProfileSection'][_0xb687('0x4d')]({'where':{'name':_0x602864,'userProfileId':_0x508862[_0xb687('0x54')]},'raw':!![]})[_0xb687('0x28')](function(_0x4f5784){if(_0x4f5784&&_0x4f5784['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x34205d[_0xb687('0x2f')],'resourceId':_0x34205d['id'],'type':_0xb687('0x2a'),'sectionId':_0x4f5784['id']},{})[_0xb687('0x28')](function(){return _0x42b61a;});}else{return _0x42b61a;}})[_0xb687('0x48')](function(_0x1ddfd4){logger[_0xb687('0x2e')](_0xb687('0x55'),_0x1ddfd4);throw _0x1ddfd4;});}return _0x42b61a;})[_0xb687('0x28')](respondWithResult(_0x401b99,0xc9))[_0xb687('0x48')](handleError(_0x401b99,null));};exports[_0xb687('0x27')]=function(_0x128264,_0x166900){if(_0x128264[_0xb687('0x4f')]['id']){delete _0x128264[_0xb687('0x4f')]['id'];}return db[_0xb687('0x33')][_0xb687('0x4d')]({'where':{'id':_0x128264[_0xb687('0x49')]['id']}})['then'](handleEntityNotFound(_0x166900,null))['then'](saveUpdates(_0x128264[_0xb687('0x4f')],null))[_0xb687('0x28')](respondWithResult(_0x166900,null))[_0xb687('0x48')](handleError(_0x166900,null));};exports[_0xb687('0x2c')]=function(_0x4e5642,_0xfa8790){return db[_0xb687('0x33')]['find']({'where':{'id':_0x4e5642[_0xb687('0x49')]['id']}})['then'](handleEntityNotFound(_0xfa8790,null))[_0xb687('0x28')](removeEntity(_0xfa8790,null))[_0xb687('0x48')](handleError(_0xfa8790,null));};exports['preview']=function(_0x4fb188,_0x13ad6a){var _0x4ab9c5=0xa;var _0x5ea8fd=[_0xb687('0x56'),_0xb687('0x57'),_0xb687('0x58'),'cross_join'];var _0x25e140={'SUM':'SUM(%s)','COUNT':_0xb687('0x59'),'COUNT DISTINCT':_0xb687('0x5a'),'MAX':_0xb687('0x5b'),'MIN':_0xb687('0x5c'),'AVG':_0xb687('0x5d'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xb687('0x5e')};var _0x58ec8b={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':_0xb687('0x5f'),'UNIX_TIMESTAMP':_0xb687('0x60')};var _0xbc3a94=function(_0x4bc18f){return!_[_0xb687('0x61')]([_0xb687('0x62'),_0xb687('0x63'),_0xb687('0x64'),_0xb687('0x65')],_0x4bc18f);};var _0x17505c=function(_0x132e3a){if(!_0x132e3a||!_0x132e3a['rules']['length']){return'';}for(var _0x2714c6='(',_0x4906df=0x0;_0x4906df<_0x132e3a[_0xb687('0x66')][_0xb687('0x3e')];_0x4906df+=0x1){_0x4906df>0x0&&(_0x2714c6+='\x20'+_0x132e3a[_0xb687('0x67')]+'\x20');_0x2714c6+=_0x132e3a[_0xb687('0x66')][_0x4906df][_0xb687('0x68')]?_0x17505c(_0x132e3a['rules'][_0x4906df][_0xb687('0x68')]):_0x132e3a['rules'][_0x4906df][_0xb687('0x69')]+'\x20'+_0x132e3a[_0xb687('0x66')][_0x4906df][_0xb687('0x6a')]+(_0xbc3a94(_0x132e3a[_0xb687('0x66')][_0x4906df][_0xb687('0x6a')])?'\x20'+_0x132e3a[_0xb687('0x66')][_0x4906df][_0xb687('0x6b')]:'');}return _0x2714c6+')';};var _0x5deb7a={'where':{'id':_0x4fb188['params']['id']}},_0x28a6aa,_0x31ed20,_0x8942b7,_0x36bb4b,_0x258caf;_0x5deb7a=_[_0xb687('0x6c')]({},_0x5deb7a,_0x4fb188[_0xb687('0x46')]);return db[_0xb687('0x33')][_0xb687('0x4d')](_0x5deb7a)[_0xb687('0x28')](function(_0x15ef44){if(_0x15ef44){_0x28a6aa=_0x15ef44;return _0x15ef44[_0xb687('0x6d')]();}return null;})[_0xb687('0x28')](function(_0x177ea4){if(_0x177ea4){if(!_0x177ea4[_0xb687('0x3e')]){throw new db[(_0xb687('0x6e'))]['ValidationErrorItem'](_0xb687('0x6f'),0x193);}_0x31ed20=_0x177ea4;return db[_0xb687('0x70')][_0xb687('0x47')]({'raw':!![]});}return null;})[_0xb687('0x28')](function(_0x505f7a){if(_0x505f7a){_0x8942b7=_[_0xb687('0x71')](_0x505f7a,'id');var _0x1a6075;var _0x53b00a=squel[_0xb687('0x72')]();_0x53b00a[_0xb687('0x73')](_0x28a6aa[_0xb687('0x74')]);for(var _0x5eeb75=0x0;_0x5eeb75<_0x31ed20[_0xb687('0x3e')];_0x5eeb75+=0x1){_0x1a6075=_0x31ed20[_0x5eeb75][_0xb687('0x75')]?_0x8942b7[_0x31ed20[_0x5eeb75]['MetricId']][_0xb687('0x76')]:_0x31ed20[_0x5eeb75][_0xb687('0x69')];_0x1a6075=_0x31ed20[_0x5eeb75][_0xb687('0x77')]?_[_0xb687('0x78')](_0x25e140[_0x31ed20[_0x5eeb75]['function']],'%s',_0x1a6075):_0x1a6075;_0x1a6075=_0x31ed20[_0x5eeb75][_0xb687('0x79')]?_[_0xb687('0x78')](_0x58ec8b[_0x31ed20[_0x5eeb75]['format']],'%s',_0x1a6075):_0x1a6075;if(_0x31ed20[_0x5eeb75][_0xb687('0x7a')]){_0x53b00a[_0xb687('0x68')](_0x1a6075);}_0x31ed20[_0x5eeb75]['orderBy']&&_0x53b00a['order'](_0x1a6075,_0x31ed20[_0x5eeb75][_0xb687('0x7b')]==='DESC'?![]:!![]);_0x53b00a[_0xb687('0x69')](_0x1a6075,_0x31ed20[_0x5eeb75][_0xb687('0x7c')]||_0x1a6075);}if(_0x28a6aa[_0xb687('0x7d')]){_0x28a6aa[_0xb687('0x7d')]=JSON[_0xb687('0x7e')](_0x28a6aa[_0xb687('0x7d')]);for(var _0x229bc4=0x0;_0x229bc4<_0x28a6aa[_0xb687('0x7d')]['length'];_0x229bc4+=0x1){if(_0x28a6aa[_0xb687('0x7d')][_0x229bc4][_0xb687('0x36')]&&_[_0xb687('0x61')](_0x5ea8fd,_0x28a6aa[_0xb687('0x7d')][_0x229bc4][_0xb687('0x36')])&&_0x28a6aa[_0xb687('0x7d')][_0x229bc4]['parentKey']&&_0x28a6aa[_0xb687('0x7d')][_0x229bc4][_0xb687('0x7f')]&&_0x28a6aa['joins'][_0x229bc4][_0xb687('0x80')]){_0x53b00a[_0x28a6aa[_0xb687('0x7d')][_0x229bc4][_0xb687('0x36')]](_0x28a6aa[_0xb687('0x7d')][_0x229bc4]['foreignTable'],null,util[_0xb687('0x79')]('%s.%s\x20=\x20%s.%s',_0x28a6aa['table'],_0x28a6aa[_0xb687('0x7d')][_0x229bc4]['parentKey'],_0x28a6aa['joins'][_0x229bc4][_0xb687('0x7f')],_0x28a6aa['joins'][_0x229bc4][_0xb687('0x80')]));}}}if(_0x28a6aa[_0xb687('0x81')]){_0x28a6aa['conditions']=JSON[_0xb687('0x7e')](_0x28a6aa[_0xb687('0x81')]);_0x53b00a['where'](_0x17505c(_0x28a6aa[_0xb687('0x81')][_0xb687('0x68')]));}_0x258caf=_0x53b00a[_0xb687('0x82')]();_0x53b00a[_0xb687('0x20')](_0x4ab9c5);_0x53b00a[_0xb687('0x1f')](0x0);logger[_0xb687('0x83')](_0xb687('0x84'),_0x53b00a[_0xb687('0x85')]());return dbH[_0xb687('0x86')][_0xb687('0x39')](_0x53b00a[_0xb687('0x85')](),{'type':dbH['sequelize'][_0xb687('0x87')]['SELECT']});}})['then'](respondWithResult(_0x13ad6a,null))[_0xb687('0x48')](handleError(_0x13ad6a,null));};function runReport(_0x29e830,_0x22ebca,_0xfecb8d){var _0x3a7339=_0x22ebca['name'];var _0x59c94b=0xa;var _0x29e27e=[_0xb687('0x56'),_0xb687('0x57'),_0xb687('0x58'),'cross_join'];var _0x448d59={'SUM':_0xb687('0x88'),'COUNT':_0xb687('0x59'),'COUNT DISTINCT':_0xb687('0x5a'),'MAX':_0xb687('0x5b'),'MIN':_0xb687('0x5c'),'AVG':_0xb687('0x5d'),'GROUP_CONCAT':_0xb687('0x89'),'GROUP_CONCAT ASC':_0xb687('0x8a'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x25f5c3={'SEC_TO_TIME':_0xb687('0x8b'),'DATE':_0xb687('0x8c'),'HOUR':_0xb687('0x8d'),'ROUND':_0xb687('0x5f'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x1037b1=function(_0x3bf480){return!_['includes']([_0xb687('0x62'),'IS\x20NOT\x20NULL',_0xb687('0x64'),_0xb687('0x65')],_0x3bf480);};var _0x5ec5f6=function(_0x1c683e){if(!_0x1c683e||!_0x1c683e[_0xb687('0x66')]['length']){return'';}for(var _0x231caa='(',_0x3479c5=0x0;_0x3479c5<_0x1c683e[_0xb687('0x66')][_0xb687('0x3e')];_0x3479c5+=0x1){_0x3479c5>0x0&&(_0x231caa+='\x20'+_0x1c683e[_0xb687('0x67')]+'\x20');_0x231caa+=_0x1c683e[_0xb687('0x66')][_0x3479c5]['group']?_0x5ec5f6(_0x1c683e[_0xb687('0x66')][_0x3479c5][_0xb687('0x68')]):_0x1c683e[_0xb687('0x66')][_0x3479c5][_0xb687('0x69')]+'\x20'+_0x1c683e[_0xb687('0x66')][_0x3479c5][_0xb687('0x6a')]+(_0x1037b1(_0x1c683e[_0xb687('0x66')][_0x3479c5][_0xb687('0x6a')])?'\x20'+_0x1c683e[_0xb687('0x66')][_0x3479c5][_0xb687('0x6b')]:'');}return _0x231caa+')';};var _0x290ddf={'where':{'id':_0x29e830['id']}},_0x5ee585,_0x10fb0,_0x5be566,_0x3d98e2,_0x3aa1c8;_0x290ddf=_['merge']({},_0x290ddf,_0xfecb8d);return db['AnalyticDefaultReport'][_0xb687('0x4d')](_0x290ddf)[_0xb687('0x28')](function(_0x3b4acf){if(_0x3b4acf){_0x5ee585=_0x3b4acf;return _0x3b4acf[_0xb687('0x6d')]();}return null;})[_0xb687('0x28')](function(_0x1c3de0){if(_0x1c3de0){if(!_0x1c3de0[_0xb687('0x3e')]){throw new db[(_0xb687('0x6e'))][(_0xb687('0x8e'))](_0xb687('0x6f'),0x193);}_0x10fb0=_0x1c3de0;return db[_0xb687('0x70')][_0xb687('0x47')]({'raw':!![]});}return null;})[_0xb687('0x28')](function(_0x1ea6fd){if(_0x1ea6fd){_0x5be566=_[_0xb687('0x71')](_0x1ea6fd,'id');var _0x3f45b7;var _0x508550=squel['select']();_0x508550[_0xb687('0x73')](_0x5ee585['table']);for(var _0x5f2557=0x0;_0x5f2557<_0x10fb0[_0xb687('0x3e')];_0x5f2557+=0x1){_0x3f45b7=_0x10fb0[_0x5f2557][_0xb687('0x75')]?_0x5be566[_0x10fb0[_0x5f2557]['MetricId']][_0xb687('0x76')]:_0x10fb0[_0x5f2557][_0xb687('0x69')];_0x3f45b7=_0x10fb0[_0x5f2557]['function']?_[_0xb687('0x78')](_0x448d59[_0x10fb0[_0x5f2557][_0xb687('0x77')]],'%s',_0x3f45b7):_0x3f45b7;_0x3f45b7=_0x10fb0[_0x5f2557][_0xb687('0x79')]?_[_0xb687('0x78')](_0x25f5c3[_0x10fb0[_0x5f2557][_0xb687('0x79')]],'%s',_0x3f45b7):_0x3f45b7;if(_0x10fb0[_0x5f2557][_0xb687('0x7a')]){_0x508550[_0xb687('0x68')](_0x3f45b7);}_0x10fb0[_0x5f2557][_0xb687('0x7b')]&&_0x508550[_0xb687('0x40')](_0x3f45b7,_0x10fb0[_0x5f2557]['orderBy']===_0xb687('0x8f')?![]:!![]);_0x508550[_0xb687('0x69')](_0x3f45b7,_0x10fb0[_0x5f2557]['alias']||_0x3f45b7);}if(_0x5ee585[_0xb687('0x7d')]){_0x5ee585['joins']=JSON[_0xb687('0x7e')](_0x5ee585[_0xb687('0x7d')]);for(var _0x59166c=0x0;_0x59166c<_0x5ee585[_0xb687('0x7d')][_0xb687('0x3e')];_0x59166c+=0x1){if(_0x5ee585[_0xb687('0x7d')][_0x59166c][_0xb687('0x36')]&&_[_0xb687('0x61')](_0x29e27e,_0x5ee585[_0xb687('0x7d')][_0x59166c][_0xb687('0x36')])&&_0x5ee585['joins'][_0x59166c]['parentKey']&&_0x5ee585[_0xb687('0x7d')][_0x59166c]['foreignTable']&&_0x5ee585[_0xb687('0x7d')][_0x59166c][_0xb687('0x80')]){_0x508550[_0x5ee585[_0xb687('0x7d')][_0x59166c][_0xb687('0x36')]](_0x5ee585['joins'][_0x59166c][_0xb687('0x7f')],null,util[_0xb687('0x79')]('%s.%s\x20=\x20%s.%s',_0x5ee585[_0xb687('0x74')],_0x5ee585[_0xb687('0x7d')][_0x59166c][_0xb687('0x90')],_0x5ee585[_0xb687('0x7d')][_0x59166c][_0xb687('0x7f')],_0x5ee585[_0xb687('0x7d')][_0x59166c]['foreignKey']));}}}if(_0x5ee585[_0xb687('0x81')]){_0x5ee585[_0xb687('0x81')]=JSON[_0xb687('0x7e')](_0x5ee585[_0xb687('0x81')]);_0x508550[_0xb687('0x42')](_0x5ec5f6(_0x5ee585[_0xb687('0x81')][_0xb687('0x68')]));}_0x3aa1c8=_0x508550[_0xb687('0x82')]();_0x508550[_0xb687('0x20')](_0x59c94b);_0x508550[_0xb687('0x1f')](0x0);return;}})['then'](function(){if(_0x22ebca['output']===_0xb687('0x91')){return null;}var _0x1a7cd8=_[_0xb687('0x6c')](_0x22ebca,{'name':_0x22ebca[_0xb687('0x92')]||_0x22ebca[_0xb687('0x2f')]||_0x5ee585[_0xb687('0x2f')],'basename':_0x3a7339,'savename':util[_0xb687('0x79')](_0xb687('0x93'),_0x22ebca[_0xb687('0x2f')]||_0x5ee585['name'],require('randomstring')['generate'](0x4),_0x22ebca[_0xb687('0x94')]||_0xb687('0x95')),'reportId':_0x5ee585['id'],'reportType':_0xb687('0x96')});return db[_0xb687('0x97')][_0xb687('0x4e')](_0x1a7cd8,{'raw':!![]});})[_0xb687('0x28')](function(_0x473130){if(_0x5ee585[_0xb687('0x74')]==='cdr'){_0x3aa1c8[_0xb687('0x42')](_0x5ee585[_0xb687('0x74')]+_0xb687('0x98'),_0x22ebca[_0xb687('0x99')],_0x22ebca[_0xb687('0x9a')]);}else{_0x3aa1c8[_0xb687('0x42')](_0x5ee585[_0xb687('0x74')]+_0xb687('0x9b'),_0x22ebca['startDate'],_0x22ebca[_0xb687('0x9a')]);}if(_0x473130){logger['info'](_0xb687('0x9c'),_0x3aa1c8[_0xb687('0x85')]());require('child_process')[_0xb687('0x9d')](path[_0xb687('0x56')](__dirname,_0xb687('0x9e'),_0x473130['output']),[_0x473130['id'],_0x3aa1c8[_0xb687('0x85')](),path[_0xb687('0x56')](__dirname,_0xb687('0x9f'),_0x473130[_0xb687('0xa0')]),_0x3a7339]);return _0x473130;}else{var _0x3d4596=squel[_0xb687('0x72')]();_0x3d4596[_0xb687('0x73')]('('+_0x3aa1c8['toString']()+')',_0xb687('0xa1'));_0x3d4596[_0xb687('0x69')](_0xb687('0xa2'),_0xb687('0x22'));_0x3aa1c8[_0xb687('0x20')](_0x22ebca['limit']||_0x59c94b);_0x3aa1c8[_0xb687('0x1f')](_0x22ebca[_0xb687('0x1f')]||0x0);return dbH[_0xb687('0x86')]['query'](_0x3d4596[_0xb687('0x85')](),{'type':dbH['sequelize'][_0xb687('0x87')][_0xb687('0xa3')]})['then'](function(_0x3dbbd6){if(!_0x3dbbd6[_0xb687('0x3e')]){_0x3d98e2=0x0;}else{_0x3d98e2=_0x3dbbd6[0x0][_0xb687('0x22')]||0x0;}return dbH['sequelize'][_0xb687('0x39')](_0x3aa1c8[_0xb687('0x85')](),{'type':dbH[_0xb687('0x86')][_0xb687('0x87')][_0xb687('0xa3')]});})[_0xb687('0x28')](function(_0x15e599){return{'rows':_0x15e599||[],'count':_0x3d98e2};});}});}exports[_0xb687('0xa4')]=function(_0x8f6ba0,_0x568aca){return runReport(_0x8f6ba0[_0xb687('0x49')],_0x8f6ba0[_0xb687('0x39')],_0x8f6ba0[_0xb687('0x46')])['then'](respondWithResult(_0x568aca,null))['catch'](handleError(_0x568aca,null));};exports[_0xb687('0xa5')]=runReport;exports['query']=function(_0x187810,_0x1d21ef){var _0x386d12=0xa;var _0x4dd8f4=['join',_0xb687('0x57'),_0xb687('0x58'),_0xb687('0xa6')];var _0x295795={'SUM':_0xb687('0x88'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xb687('0x5a'),'MAX':_0xb687('0x5b'),'MIN':'MIN(%s)','AVG':_0xb687('0x5d'),'GROUP_CONCAT':_0xb687('0x89'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xb687('0x5e')};var _0xe7056c={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xb687('0x8c'),'HOUR':_0xb687('0x8d'),'ROUND':_0xb687('0x5f'),'UNIX_TIMESTAMP':_0xb687('0x60')};var _0x1b1cf5=function(_0x46283c){return!_[_0xb687('0x61')](['IS\x20NULL',_0xb687('0x63'),'IS\x20EMPTY',_0xb687('0x65')],_0x46283c);};var _0x394ed6=function(_0x875169){if(!_0x875169||!_0x875169[_0xb687('0x66')]['length']){return'';}for(var _0x1ec485='(',_0x55a919=0x0;_0x55a919<_0x875169['rules'][_0xb687('0x3e')];_0x55a919+=0x1){_0x55a919>0x0&&(_0x1ec485+='\x20'+_0x875169[_0xb687('0x67')]+'\x20');_0x1ec485+=_0x875169[_0xb687('0x66')][_0x55a919]['group']?_0x394ed6(_0x875169[_0xb687('0x66')][_0x55a919][_0xb687('0x68')]):_0x875169['rules'][_0x55a919][_0xb687('0x69')]+'\x20'+_0x875169['rules'][_0x55a919][_0xb687('0x6a')]+(_0x1b1cf5(_0x875169[_0xb687('0x66')][_0x55a919]['condition'])?'\x20'+_0x875169[_0xb687('0x66')][_0x55a919]['value']:'');}return _0x1ec485+')';};var _0x2aecd5={'where':{'id':_0x187810[_0xb687('0x49')]['id']}},_0x58955e,_0x488a2a,_0x303738,_0x3904a3,_0x581338;_0x2aecd5=_['merge']({},_0x2aecd5,_0x187810[_0xb687('0x46')]);return db[_0xb687('0x33')][_0xb687('0x4d')](_0x2aecd5)['then'](function(_0xc29834){if(_0xc29834){_0x58955e=_0xc29834;return _0xc29834[_0xb687('0x6d')]();}return null;})[_0xb687('0x28')](function(_0x1f2f2b){if(_0x1f2f2b){if(!_0x1f2f2b[_0xb687('0x3e')]){throw new db[(_0xb687('0x6e'))]['ValidationErrorItem'](_0xb687('0x6f'),0x193);}_0x488a2a=_0x1f2f2b;return db[_0xb687('0x70')][_0xb687('0x47')]({'raw':!![]});}return null;})[_0xb687('0x28')](function(_0x3591e2){if(_0x3591e2){_0x303738=_['keyBy'](_0x3591e2,'id');var _0x4d0c14;var _0x200b55=squel[_0xb687('0x72')]();_0x200b55[_0xb687('0x73')](_0x58955e[_0xb687('0x74')]);for(var _0x33f4de=0x0;_0x33f4de<_0x488a2a[_0xb687('0x3e')];_0x33f4de+=0x1){_0x4d0c14=_0x488a2a[_0x33f4de][_0xb687('0x75')]?_0x303738[_0x488a2a[_0x33f4de]['MetricId']][_0xb687('0x76')]:_0x488a2a[_0x33f4de][_0xb687('0x69')];_0x4d0c14=_0x488a2a[_0x33f4de][_0xb687('0x77')]?_['replace'](_0x295795[_0x488a2a[_0x33f4de][_0xb687('0x77')]],'%s',_0x4d0c14):_0x4d0c14;_0x4d0c14=_0x488a2a[_0x33f4de][_0xb687('0x79')]?_[_0xb687('0x78')](_0xe7056c[_0x488a2a[_0x33f4de]['format']],'%s',_0x4d0c14):_0x4d0c14;if(_0x488a2a[_0x33f4de][_0xb687('0x7a')]){_0x200b55[_0xb687('0x68')](_0x4d0c14);}_0x488a2a[_0x33f4de]['orderBy']&&_0x200b55[_0xb687('0x40')](_0x4d0c14,_0x488a2a[_0x33f4de][_0xb687('0x7b')]===_0xb687('0x8f')?![]:!![]);_0x200b55[_0xb687('0x69')](_0x4d0c14,_0x488a2a[_0x33f4de]['alias']||_0x4d0c14);}if(_0x58955e[_0xb687('0x7d')]){_0x58955e[_0xb687('0x7d')]=JSON[_0xb687('0x7e')](_0x58955e[_0xb687('0x7d')]);for(var _0xcff220=0x0;_0xcff220<_0x58955e['joins'][_0xb687('0x3e')];_0xcff220+=0x1){if(_0x58955e[_0xb687('0x7d')][_0xcff220]['type']&&_[_0xb687('0x61')](_0x4dd8f4,_0x58955e[_0xb687('0x7d')][_0xcff220]['type'])&&_0x58955e[_0xb687('0x7d')][_0xcff220][_0xb687('0x90')]&&_0x58955e[_0xb687('0x7d')][_0xcff220]['foreignTable']&&_0x58955e[_0xb687('0x7d')][_0xcff220][_0xb687('0x80')]){_0x200b55[_0x58955e['joins'][_0xcff220]['type']](_0x58955e['joins'][_0xcff220][_0xb687('0x7f')],null,util['format'](_0xb687('0xa7'),_0x58955e[_0xb687('0x74')],_0x58955e[_0xb687('0x7d')][_0xcff220][_0xb687('0x90')],_0x58955e[_0xb687('0x7d')][_0xcff220]['foreignTable'],_0x58955e['joins'][_0xcff220][_0xb687('0x80')]));}}}if(_0x58955e[_0xb687('0x81')]){_0x58955e[_0xb687('0x81')]=JSON[_0xb687('0x7e')](_0x58955e[_0xb687('0x81')]);_0x200b55[_0xb687('0x42')](_0x394ed6(_0x58955e[_0xb687('0x81')]['group']));}_0x581338=_0x200b55['clone']();_0x200b55['limit'](_0x386d12);_0x200b55[_0xb687('0x1f')](0x0);logger[_0xb687('0x83')](_0xb687('0x84'),_0x200b55['toString']());return dbH['sequelize']['query'](_0x200b55[_0xb687('0x85')](),{'type':dbH['sequelize'][_0xb687('0x87')][_0xb687('0xa3')]});}})[_0xb687('0x28')](function(){return{'sql':_0x581338[_0xb687('0x85')]()};})[_0xb687('0x28')](respondWithResult(_0x1d21ef,null))[_0xb687('0x48')](handleError(_0x1d21ef,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(_0x4c1c26,_0xffeca){var _0x44969b=function(_0x515ebd){while(--_0x515ebd){_0x4c1c26['push'](_0x4c1c26['shift']());}};_0x44969b(++_0xffeca);}(_0x4975,0x86));var _0x5497=function(_0x3f1086,_0x1f798c){_0x3f1086=_0x3f1086-0x0;var _0x59792f=_0x4975[_0x3f1086];return _0x59792f;};'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 09e34aa..5a83c97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b97=['exports','define','AnalyticDefaultReport','util','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x522543,_0x12cc4e){var _0x2880c2=function(_0x29fe06){while(--_0x29fe06){_0x522543['push'](_0x522543['shift']());}};_0x2880c2(++_0x12cc4e);}(_0x0b97,0xc9));var _0x70b9=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x0b97[_0xa464c9];return _0x3d73c4;};'use strict';var _=require('lodash');var util=require(_0x70b9('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x70b9('0x1'));var BPromise=require(_0x70b9('0x2'));var rp=require(_0x70b9('0x3'));var fs=require('fs');var path=require(_0x70b9('0x4'));var rimraf=require('rimraf');var config=require(_0x70b9('0x5'));var attributes=require('./analyticDefaultReport.attributes');module[_0x70b9('0x6')]=function(_0x59363b,_0x23d9e3){return _0x59363b[_0x70b9('0x7')](_0x70b9('0x8'),attributes,{'tableName':'analytics_default_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4812=['rimraf','./analyticDefaultReport.attributes','exports','define','analytics_default_reports','lodash','../../config/logger','api','moment'];(function(_0x27663f,_0x1f04e8){var _0xb0d3e0=function(_0x28a80c){while(--_0x28a80c){_0x27663f['push'](_0x27663f['shift']());}};_0xb0d3e0(++_0x1f04e8);}(_0x4812,0xd4));var _0x2481=function(_0x4f4c39,_0x4340c7){_0x4f4c39=_0x4f4c39-0x0;var _0x5cd7bb=_0x4812[_0x4f4c39];return _0x5cd7bb;};'use strict';var _=require(_0x2481('0x0'));var util=require('util');var logger=require(_0x2481('0x1'))(_0x2481('0x2'));var moment=require(_0x2481('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x2481('0x4'));var config=require('../../config/environment');var attributes=require(_0x2481('0x5'));module[_0x2481('0x6')]=function(_0x2c6138,_0x3cd28e){return _0x2c6138[_0x2481('0x7')]('AnalyticDefaultReport',attributes,{'tableName':_0x2481('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2a2ac96..c7b2ec7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec07=['message','util','moment','bluebird','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','request\x20sent','error'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0xec07,0x1e1));var _0x7ec0=function(_0x333630,_0xc5d7be){_0x333630=_0x333630-0x0;var _0x3e6140=_0xec07[_0x333630];return _0x3e6140;};'use strict';var _=require('lodash');var util=require(_0x7ec0('0x0'));var moment=require(_0x7ec0('0x1'));var BPromise=require(_0x7ec0('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x7ec0('0x3'))('rpc');var config=require(_0x7ec0('0x4'));var jayson=require(_0x7ec0('0x5'));var client=jayson[_0x7ec0('0x6')][_0x7ec0('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x16ab61,_0x37e611,_0x2bd4ab){return new BPromise(function(_0x528c64,_0xef993a){return client[_0x7ec0('0x8')](_0x16ab61,_0x2bd4ab)[_0x7ec0('0x9')](function(_0x88e17a){logger[_0x7ec0('0xa')](_0x7ec0('0xb'),_0x37e611,'request\x20sent');logger['debug'](_0x7ec0('0xc'),_0x37e611,_0x7ec0('0xd'),JSON['stringify'](_0x88e17a));if(_0x88e17a[_0x7ec0('0xe')]){if(_0x88e17a[_0x7ec0('0xe')]['code']===0x1f4){logger[_0x7ec0('0xe')](_0x7ec0('0xb'),_0x37e611,_0x88e17a[_0x7ec0('0xe')][_0x7ec0('0xf')]);return _0xef993a(_0x88e17a[_0x7ec0('0xe')][_0x7ec0('0xf')]);}logger[_0x7ec0('0xe')](_0x7ec0('0xb'),_0x37e611,_0x88e17a[_0x7ec0('0xe')]['message']);return _0x528c64(_0x88e17a['error'][_0x7ec0('0xf')]);}else{logger[_0x7ec0('0xa')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x37e611,_0x7ec0('0xd'));_0x528c64(_0x88e17a['result'][_0x7ec0('0xf')]);}})['catch'](function(_0x17ea0b){logger[_0x7ec0('0xe')](_0x7ec0('0xb'),_0x37e611,_0x17ea0b);_0xef993a(_0x17ea0b);});});}
\ No newline at end of file
+var _0x5dd4=['result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x28be07,_0x5add82){var _0x583c6a=function(_0x5040a5){while(--_0x5040a5){_0x28be07['push'](_0x28be07['shift']());}};_0x583c6a(++_0x5add82);}(_0x5dd4,0x66));var _0x45dd=function(_0x331dc2,_0x310a33){_0x331dc2=_0x331dc2-0x0;var _0x27d4c8=_0x5dd4[_0x331dc2];return _0x27d4c8;};'use strict';var _=require(_0x45dd('0x0'));var util=require('util');var moment=require(_0x45dd('0x1'));var BPromise=require(_0x45dd('0x2'));var rs=require(_0x45dd('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x45dd('0x4'))['db'];var utils=require(_0x45dd('0x5'));var logger=require('../../config/logger')(_0x45dd('0x6'));var config=require(_0x45dd('0x7'));var jayson=require(_0x45dd('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x435dd8,_0x375558,_0xf33777){return new BPromise(function(_0x1c5681,_0x4353b9){return client[_0x45dd('0x9')](_0x435dd8,_0xf33777)[_0x45dd('0xa')](function(_0x51b9b3){logger[_0x45dd('0xb')](_0x45dd('0xc'),_0x375558,_0x45dd('0xd'));logger['debug'](_0x45dd('0xe'),_0x375558,_0x45dd('0xd'),JSON[_0x45dd('0xf')](_0x51b9b3));if(_0x51b9b3[_0x45dd('0x10')]){if(_0x51b9b3['error']['code']===0x1f4){logger['error'](_0x45dd('0xc'),_0x375558,_0x51b9b3['error'][_0x45dd('0x11')]);return _0x4353b9(_0x51b9b3[_0x45dd('0x10')][_0x45dd('0x11')]);}logger[_0x45dd('0x10')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x375558,_0x51b9b3[_0x45dd('0x10')][_0x45dd('0x11')]);return _0x1c5681(_0x51b9b3[_0x45dd('0x10')][_0x45dd('0x11')]);}else{logger[_0x45dd('0xb')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x375558,'request\x20sent');_0x1c5681(_0x51b9b3[_0x45dd('0x12')][_0x45dd('0x11')]);}})[_0x45dd('0x13')](function(_0x521458){logger[_0x45dd('0x10')](_0x45dd('0xc'),_0x375558,_0x521458);_0x4353b9(_0x521458);});});}
\ No newline at end of file
index cc9e4db..9be67ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x797a=['/:id/run','run','/:id/query','query','update','delete','destroy','exports','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','get','isAuthenticated','index','show','/:id/preview','preview'];(function(_0x5466c3,_0x29b1c5){var _0x24b50d=function(_0x2b82bf){while(--_0x2b82bf){_0x5466c3['push'](_0x5466c3['shift']());}};_0x24b50d(++_0x29b1c5);}(_0x797a,0xe4));var _0xa797=function(_0x465b12,_0x2ec29f){_0x465b12=_0x465b12-0x0;var _0x25b09f=_0x797a[_0x465b12];return _0x25b09f;};'use strict';var multer=require('multer');var util=require(_0xa797('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xa797('0x1'));var router=express[_0xa797('0x2')]();var fs_extra=require(_0xa797('0x3'));var auth=require(_0xa797('0x4'));var interaction=require(_0xa797('0x5'));var config=require(_0xa797('0x6'));var controller=require(_0xa797('0x7'));router[_0xa797('0x8')]('/',auth[_0xa797('0x9')](),controller[_0xa797('0xa')]);router[_0xa797('0x8')]('/:id',auth[_0xa797('0x9')](),controller[_0xa797('0xb')]);router[_0xa797('0x8')](_0xa797('0xc'),auth['isAuthenticated'](),controller[_0xa797('0xd')]);router['get'](_0xa797('0xe'),auth[_0xa797('0x9')](),controller[_0xa797('0xf')]);router[_0xa797('0x8')](_0xa797('0x10'),auth['isAuthenticated'](),controller[_0xa797('0x11')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['put']('/:id',auth[_0xa797('0x9')](),controller[_0xa797('0x12')]);router[_0xa797('0x13')]('/:id',auth[_0xa797('0x9')](),controller[_0xa797('0x14')]);module[_0xa797('0x15')]=router;
\ No newline at end of file
+var _0xe45e=['run','/:id/query','create','put','/:id','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../config/environment','get','index','isAuthenticated','show','preview'];(function(_0x196257,_0x256195){var _0x30d5c7=function(_0x100531){while(--_0x100531){_0x196257['push'](_0x196257['shift']());}};_0x30d5c7(++_0x256195);}(_0xe45e,0x1c0));var _0xee45=function(_0x471448,_0x1c0e9e){_0x471448=_0x471448-0x0;var _0x38190b=_0xe45e[_0x471448];return _0x38190b;};'use strict';var multer=require(_0xee45('0x0'));var util=require(_0xee45('0x1'));var path=require(_0xee45('0x2'));var timeout=require(_0xee45('0x3'));var express=require('express');var router=express[_0xee45('0x4')]();var fs_extra=require(_0xee45('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xee45('0x6'));var controller=require('./analyticDefaultReport.controller');router[_0xee45('0x7')]('/',auth['isAuthenticated'](),controller[_0xee45('0x8')]);router[_0xee45('0x7')]('/:id',auth[_0xee45('0x9')](),controller[_0xee45('0xa')]);router['get']('/:id/preview',auth[_0xee45('0x9')](),controller[_0xee45('0xb')]);router[_0xee45('0x7')]('/:id/run',auth[_0xee45('0x9')](),controller[_0xee45('0xc')]);router[_0xee45('0x7')](_0xee45('0xd'),auth['isAuthenticated'](),controller['query']);router['post']('/',auth[_0xee45('0x9')](),controller[_0xee45('0xe')]);router[_0xee45('0xf')](_0xee45('0x10'),auth[_0xee45('0x9')](),controller['update']);router[_0xee45('0x11')](_0xee45('0x10'),auth[_0xee45('0x9')](),controller[_0xee45('0x12')]);module[_0xee45('0x13')]=router;
\ No newline at end of file
index 6cd5903..917e9c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2290=['UNSIGNED','sequelize','moment','STRING','ENUM','csv','DATE','Loading','manual','INTEGER'];(function(_0x9dd37c,_0x3e255e){var _0x2a522c=function(_0x2ce2ca){while(--_0x2ce2ca){_0x9dd37c['push'](_0x9dd37c['shift']());}};_0x2a522c(++_0x3e255e);}(_0x2290,0x83));var _0x0229=function(_0x1d32b4,_0x1e58ab){_0x1d32b4=_0x1d32b4-0x0;var _0x409d3c=_0x2290[_0x1d32b4];return _0x409d3c;};'use strict';var Sequelize=require(_0x0229('0x0'));var moment=require(_0x0229('0x1'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'basename':{'type':Sequelize[_0x0229('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0x0229('0x3')](_0x0229('0x4'),'pdf','xlsx'),'allowNull':![],'defaultValue':_0x0229('0x4')},'savename':{'type':Sequelize[_0x0229('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0x0229('0x5')]},'endDate':{'type':Sequelize[_0x0229('0x5')]},'status':{'type':Sequelize[_0x0229('0x2')],'defaultValue':_0x0229('0x6')},'type':{'type':Sequelize['ENUM'](_0x0229('0x7'),'scheduled'),'allowNull':![],'defaultValue':_0x0229('0x7')},'reportId':{'type':Sequelize[_0x0229('0x8')](0xb)[_0x0229('0x9')]},'reportType':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xafea=['Loading','manual','INTEGER','UNSIGNED','sequelize','moment','STRING','ENUM','csv','xlsx'];(function(_0xce9195,_0x1963e1){var _0x530fe6=function(_0x1b8055){while(--_0x1b8055){_0xce9195['push'](_0xce9195['shift']());}};_0x530fe6(++_0x1963e1);}(_0xafea,0x14e));var _0xaafe=function(_0x2db2c3,_0x2bad83){_0x2db2c3=_0x2db2c3-0x0;var _0x5c1c29=_0xafea[_0x2db2c3];return _0x5c1c29;};'use strict';var Sequelize=require(_0xaafe('0x0'));var moment=require(_0xaafe('0x1'));module['exports']={'name':{'type':Sequelize[_0xaafe('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0xaafe('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0xaafe('0x3')](_0xaafe('0x4'),'pdf',_0xaafe('0x5')),'allowNull':![],'defaultValue':_0xaafe('0x4')},'savename':{'type':Sequelize[_0xaafe('0x2')],'allowNull':![]},'startDate':{'type':Sequelize['DATE']},'endDate':{'type':Sequelize['DATE']},'status':{'type':Sequelize[_0xaafe('0x2')],'defaultValue':_0xaafe('0x6')},'type':{'type':Sequelize[_0xaafe('0x3')]('manual','scheduled'),'allowNull':![],'defaultValue':_0xaafe('0x7')},'reportId':{'type':Sequelize[_0xaafe('0x8')](0xb)[_0xaafe('0x9')]},'reportType':{'type':Sequelize[_0xaafe('0x2')]}};
\ No newline at end of file
index 21fa16c..b350554 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2366=['Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','download','savename','output','join','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','server/files/reports','format','eml-format','rimraf','request-promise','moment','mustache','util','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','then','destroy','get','ExtractedReports','UserProfileResource','stack','name','send','map','AnalyticExtractedReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','params','keys','include','find','create','body'];(function(_0x336913,_0x44d282){var _0x16d33f=function(_0x551537){while(--_0x551537){_0x336913['push'](_0x336913['shift']());}};_0x16d33f(++_0x44d282);}(_0x2366,0x177));var _0x6236=function(_0xb60643,_0x5a28f0){_0xb60643=_0xb60643-0x0;var _0x2375d3=_0x2366[_0xb60643];return _0x2375d3;};'use strict';var emlformat=require(_0x6236('0x0'));var rimraf=require(_0x6236('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x6236('0x2'));var moment=require(_0x6236('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x6236('0x4'));var util=require(_0x6236('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x6236('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6236('0x7'));var _=require(_0x6236('0x8'));var squel=require(_0x6236('0x9'));var crypto=require(_0x6236('0xa'));var jsforce=require(_0x6236('0xb'));var deskjs=require(_0x6236('0xc'));var toCsv=require(_0x6236('0x6'));var querystring=require(_0x6236('0xd'));var Papa=require(_0x6236('0xe'));var Redis=require(_0x6236('0xf'));var authService=require(_0x6236('0x10'));var qs=require(_0x6236('0x11'));var as=require(_0x6236('0x12'));var hardwareService=require(_0x6236('0x13'));var logger=require(_0x6236('0x14'))(_0x6236('0x15'));var utils=require('../../config/utils');var config=require(_0x6236('0x16'));var licenseUtil=require(_0x6236('0x17'));var db=require(_0x6236('0x18'))['db'];function respondWithStatusCode(_0x1642ea,_0x3eac46){_0x3eac46=_0x3eac46||0xcc;return function(_0xcca0bb){if(_0xcca0bb){return _0x1642ea[_0x6236('0x19')](_0x3eac46);}return _0x1642ea[_0x6236('0x1a')](_0x3eac46)[_0x6236('0x1b')]();};}function respondWithResult(_0x5489a2,_0x3d811e){_0x3d811e=_0x3d811e||0xc8;return function(_0x220f6b){if(_0x220f6b){return _0x5489a2[_0x6236('0x1a')](_0x3d811e)[_0x6236('0x1c')](_0x220f6b);}};}function respondWithFilteredResult(_0x3ddc32,_0xa5656b){return function(_0x4a3b2b){if(_0x4a3b2b){var _0x2bbe00=typeof _0xa5656b[_0x6236('0x1d')]===_0x6236('0x1e')&&typeof _0xa5656b[_0x6236('0x1f')]===_0x6236('0x1e');var _0x3def41=_0x4a3b2b[_0x6236('0x20')];var _0x4b4d72=_0x2bbe00?0x0:_0xa5656b[_0x6236('0x1d')];var _0x15fb3c=_0x2bbe00?_0x4a3b2b[_0x6236('0x20')]:_0xa5656b[_0x6236('0x1d')]+_0xa5656b[_0x6236('0x1f')];var _0x49ea64;if(_0x15fb3c>=_0x3def41){_0x15fb3c=_0x3def41;_0x49ea64=0xc8;}else{_0x49ea64=0xce;}_0x3ddc32[_0x6236('0x1a')](_0x49ea64);return _0x3ddc32[_0x6236('0x21')](_0x6236('0x22'),_0x4b4d72+'-'+_0x15fb3c+'/'+_0x3def41)[_0x6236('0x1c')](_0x4a3b2b);}return null;};}function patchUpdates(_0x1c88c4){return function(_0x1e471d){try{jsonpatch[_0x6236('0x23')](_0x1e471d,_0x1c88c4,!![]);}catch(_0x2b7e3e){return BPromise['reject'](_0x2b7e3e);}return _0x1e471d['save']();};}function saveUpdates(_0x5d9702,_0x4cc3dd){return function(_0x3184a6){if(_0x3184a6){return _0x3184a6['update'](_0x5d9702)[_0x6236('0x24')](function(_0xaad2ab){return _0xaad2ab;});}return null;};}function removeEntity(_0x38a612,_0x5f072c){return function(_0x6f43ff){if(_0x6f43ff){return _0x6f43ff[_0x6236('0x25')]()[_0x6236('0x24')](function(){var _0x45f7ec=_0x6f43ff[_0x6236('0x26')]({'plain':!![]});var _0xf908ce=_0x6236('0x27');return db[_0x6236('0x28')][_0x6236('0x25')]({'where':{'type':_0xf908ce,'resourceId':_0x45f7ec['id']}})[_0x6236('0x24')](function(){return _0x6f43ff;});})[_0x6236('0x24')](function(){_0x38a612[_0x6236('0x1a')](0xcc)[_0x6236('0x1b')]();});}};}function handleEntityNotFound(_0x390408,_0x353b82){return function(_0x321312){if(!_0x321312){_0x390408[_0x6236('0x19')](0x194);}return _0x321312;};}function handleError(_0x85302f,_0x278689){_0x278689=_0x278689||0x1f4;return function(_0x352ea4){logger['error'](_0x352ea4[_0x6236('0x29')]);if(_0x352ea4[_0x6236('0x2a')]){delete _0x352ea4[_0x6236('0x2a')];}_0x85302f['status'](_0x278689)[_0x6236('0x2b')](_0x352ea4);};}exports['index']=function(_0x55e795,_0x5ebe11){var _0xe0b6={},_0x404306={},_0x177bd6={'count':0x0,'rows':[]};var _0x230fa6=_[_0x6236('0x2c')](db[_0x6236('0x2d')][_0x6236('0x2e')],function(_0x56516b){return{'name':_0x56516b[_0x6236('0x2f')],'type':_0x56516b[_0x6236('0x30')][_0x6236('0x31')]};});_0x404306[_0x6236('0x32')]=_[_0x6236('0x2c')](_0x230fa6,'name');_0x404306[_0x6236('0x33')]=_['keys'](_0x55e795[_0x6236('0x33')]);_0x404306[_0x6236('0x34')]=_[_0x6236('0x35')](_0x404306[_0x6236('0x32')],_0x404306[_0x6236('0x33')]);_0xe0b6['attributes']=_[_0x6236('0x35')](_0x404306['model'],qs['fields'](_0x55e795['query'][_0x6236('0x36')]));_0xe0b6['attributes']=_0xe0b6[_0x6236('0x37')][_0x6236('0x38')]?_0xe0b6[_0x6236('0x37')]:_0x404306[_0x6236('0x32')];if(!_0x55e795[_0x6236('0x33')][_0x6236('0x39')](_0x6236('0x3a'))){_0xe0b6[_0x6236('0x1f')]=qs['limit'](_0x55e795[_0x6236('0x33')][_0x6236('0x1f')]);_0xe0b6['offset']=qs[_0x6236('0x1d')](_0x55e795['query'][_0x6236('0x1d')]);}_0xe0b6['order']=qs['sort'](_0x55e795[_0x6236('0x33')][_0x6236('0x3b')]);_0xe0b6[_0x6236('0x3c')]=qs[_0x6236('0x34')](_[_0x6236('0x3d')](_0x55e795['query'],_0x404306[_0x6236('0x34')]),_0x230fa6);if(_0x55e795[_0x6236('0x33')][_0x6236('0x3e')]){_0xe0b6[_0x6236('0x3c')]=_[_0x6236('0x3f')](_0xe0b6[_0x6236('0x3c')],{'$or':_[_0x6236('0x2c')](_0x230fa6,function(_0x536165){if(_0x536165[_0x6236('0x30')]!=='VIRTUAL'){var _0x28630e={};_0x28630e[_0x536165[_0x6236('0x2a')]]={'$like':'%'+_0x55e795[_0x6236('0x33')][_0x6236('0x3e')]+'%'};return _0x28630e;}})});}_0xe0b6=_[_0x6236('0x3f')]({},_0xe0b6,_0x55e795[_0x6236('0x40')]);var _0x3c08eb={'where':_0xe0b6[_0x6236('0x3c')]};return db[_0x6236('0x2d')][_0x6236('0x20')](_0x3c08eb)[_0x6236('0x24')](function(_0x39378d){_0x177bd6[_0x6236('0x20')]=_0x39378d;if(_0x55e795[_0x6236('0x33')][_0x6236('0x41')]){_0xe0b6['include']=[{'all':!![]}];}return db[_0x6236('0x2d')][_0x6236('0x42')](_0xe0b6);})['then'](function(_0x8edda7){_0x177bd6[_0x6236('0x43')]=_0x8edda7;return _0x177bd6;})[_0x6236('0x24')](respondWithFilteredResult(_0x5ebe11,_0xe0b6))[_0x6236('0x44')](handleError(_0x5ebe11,null));};exports['show']=function(_0x2d5ed4,_0x16d96e){var _0x2732d9={'raw':!![],'where':{'id':_0x2d5ed4[_0x6236('0x45')]['id']}},_0x27d78e={};_0x27d78e[_0x6236('0x32')]=_[_0x6236('0x46')](db[_0x6236('0x2d')][_0x6236('0x2e')]);_0x27d78e['query']=_[_0x6236('0x46')](_0x2d5ed4['query']);_0x27d78e[_0x6236('0x34')]=_[_0x6236('0x35')](_0x27d78e[_0x6236('0x32')],_0x27d78e[_0x6236('0x33')]);_0x2732d9[_0x6236('0x37')]=_[_0x6236('0x35')](_0x27d78e['model'],qs[_0x6236('0x36')](_0x2d5ed4[_0x6236('0x33')]['fields']));_0x2732d9[_0x6236('0x37')]=_0x2732d9[_0x6236('0x37')][_0x6236('0x38')]?_0x2732d9['attributes']:_0x27d78e[_0x6236('0x32')];if(_0x2d5ed4[_0x6236('0x33')][_0x6236('0x41')]){_0x2732d9[_0x6236('0x47')]=[{'all':!![]}];}_0x2732d9=_[_0x6236('0x3f')]({},_0x2732d9,_0x2d5ed4[_0x6236('0x40')]);return db['AnalyticExtractedReport'][_0x6236('0x48')](_0x2732d9)[_0x6236('0x24')](handleEntityNotFound(_0x16d96e,null))[_0x6236('0x24')](respondWithResult(_0x16d96e,null))['catch'](handleError(_0x16d96e,null));};exports[_0x6236('0x49')]=function(_0x3cd442,_0x12d5e2){return db['AnalyticExtractedReport'][_0x6236('0x49')](_0x3cd442[_0x6236('0x4a')],{})[_0x6236('0x24')](function(_0x139742){var _0x46ca8d=_0x3cd442['user'][_0x6236('0x26')]({'plain':!![]});if(!_0x46ca8d)throw new Error(_0x6236('0x4b'));if(_0x46ca8d['role']==='user'){var _0x5675e2=_0x139742[_0x6236('0x26')]({'plain':!![]});var _0x49c855=_0x6236('0x27');return db[_0x6236('0x4c')][_0x6236('0x48')]({'where':{'name':_0x49c855,'userProfileId':_0x46ca8d['userProfileId']},'raw':!![]})[_0x6236('0x24')](function(_0x9f8af0){if(_0x9f8af0&&_0x9f8af0[_0x6236('0x4d')]===0x0){return db[_0x6236('0x28')]['create']({'name':_0x5675e2[_0x6236('0x2a')],'resourceId':_0x5675e2['id'],'type':_0x9f8af0[_0x6236('0x2a')],'sectionId':_0x9f8af0['id']},{})[_0x6236('0x24')](function(){return _0x139742;});}else{return _0x139742;}})[_0x6236('0x44')](function(_0x32185e){logger[_0x6236('0x4e')](_0x6236('0x4f'),_0x32185e);throw _0x32185e;});}return _0x139742;})[_0x6236('0x24')](respondWithResult(_0x12d5e2,0xc9))[_0x6236('0x44')](handleError(_0x12d5e2,null));};exports[_0x6236('0x50')]=function(_0x1b1116,_0x2be60a){if(_0x1b1116[_0x6236('0x4a')]['id']){delete _0x1b1116[_0x6236('0x4a')]['id'];}return db[_0x6236('0x2d')][_0x6236('0x48')]({'where':{'id':_0x1b1116['params']['id']}})['then'](handleEntityNotFound(_0x2be60a,null))[_0x6236('0x24')](saveUpdates(_0x1b1116[_0x6236('0x4a')],null))['then'](respondWithResult(_0x2be60a,null))['catch'](handleError(_0x2be60a,null));};exports[_0x6236('0x25')]=function(_0x4f5a31,_0x414ef4){return db['AnalyticExtractedReport'][_0x6236('0x48')]({'where':{'id':_0x4f5a31[_0x6236('0x45')]['id']}})[_0x6236('0x24')](handleEntityNotFound(_0x414ef4,null))['then'](removeEntity(_0x414ef4,null))[_0x6236('0x44')](handleError(_0x414ef4,null));};exports[_0x6236('0x51')]=function(_0x2d6508,_0x456bd1,_0x11c46f){return db[_0x6236('0x2d')][_0x6236('0x48')]({'where':{'id':_0x2d6508[_0x6236('0x45')]['id']},'attributes':[_0x6236('0x2a'),'basename',_0x6236('0x52'),_0x6236('0x53')],'raw':!![]})['then'](handleEntityNotFound(_0x456bd1,null))[_0x6236('0x24')](function(_0x2ba210){if(_0x2ba210){if(!fs['existsSync'](path[_0x6236('0x54')](config['root'],'server/files/reports',_0x2ba210[_0x6236('0x52')]))){throw new db['Sequelize'][(_0x6236('0x55'))](_0x6236('0x56'));}if(_0x2d6508['query'][_0x6236('0x57')]){return _0x456bd1['sendStatus'](0xc8);}return _0x456bd1[_0x6236('0x51')](path['join'](config['root'],_0x6236('0x58'),_0x2ba210[_0x6236('0x52')]),util[_0x6236('0x59')]('%s.%s',_0x2ba210['basename']||_0x2ba210[_0x6236('0x2a')],_0x2ba210[_0x6236('0x53')]['toLowerCase']()));}})['catch'](handleError(_0x456bd1,null));};
\ No newline at end of file
+var _0x9237=['attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','includeAll','include','findAll','catch','show','rawAttributes','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','download','basename','output','join','server/files/reports','savename','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','root','format','%s.%s','toLowerCase','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','to-csv','ejs','lodash','squel','crypto','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','get','ExtractedReports','error','stack','name','send','AnalyticExtractedReport','fieldName','type','map','query','keys','filters','intersection','model'];(function(_0xdd7126,_0xf0bc57){var _0x50ee37=function(_0x6b85fb){while(--_0x6b85fb){_0xdd7126['push'](_0xdd7126['shift']());}};_0x50ee37(++_0xf0bc57);}(_0x9237,0x1a0));var _0x7923=function(_0x5bc5fe,_0x2afaef){_0x5bc5fe=_0x5bc5fe-0x0;var _0x298ea7=_0x9237[_0x5bc5fe];return _0x298ea7;};'use strict';var emlformat=require(_0x7923('0x0'));var rimraf=require(_0x7923('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7923('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x7923('0x3'));var Mustache=require(_0x7923('0x4'));var util=require(_0x7923('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x7923('0x6'));var ejs=require(_0x7923('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7923('0x8'));var squel=require(_0x7923('0x9'));var crypto=require(_0x7923('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x7923('0xb'));var Redis=require(_0x7923('0xc'));var authService=require('../../components/auth/service');var qs=require(_0x7923('0xd'));var as=require(_0x7923('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x7923('0xf'));var utils=require(_0x7923('0x10'));var config=require(_0x7923('0x11'));var licenseUtil=require('../../config/license/util');var db=require(_0x7923('0x12'))['db'];function respondWithStatusCode(_0x20c946,_0x5a2175){_0x5a2175=_0x5a2175||0xcc;return function(_0xee510e){if(_0xee510e){return _0x20c946[_0x7923('0x13')](_0x5a2175);}return _0x20c946[_0x7923('0x14')](_0x5a2175)[_0x7923('0x15')]();};}function respondWithResult(_0x5b5e51,_0x451e07){_0x451e07=_0x451e07||0xc8;return function(_0x5eca16){if(_0x5eca16){return _0x5b5e51[_0x7923('0x14')](_0x451e07)[_0x7923('0x16')](_0x5eca16);}};}function respondWithFilteredResult(_0x1e3a68,_0x255da7){return function(_0x24dc2f){if(_0x24dc2f){var _0x1eb5b3=typeof _0x255da7[_0x7923('0x17')]===_0x7923('0x18')&&typeof _0x255da7[_0x7923('0x19')]===_0x7923('0x18');var _0x2d803d=_0x24dc2f['count'];var _0x42fa6f=_0x1eb5b3?0x0:_0x255da7['offset'];var _0x3dd08c=_0x1eb5b3?_0x24dc2f[_0x7923('0x1a')]:_0x255da7[_0x7923('0x17')]+_0x255da7[_0x7923('0x19')];var _0x104e45;if(_0x3dd08c>=_0x2d803d){_0x3dd08c=_0x2d803d;_0x104e45=0xc8;}else{_0x104e45=0xce;}_0x1e3a68[_0x7923('0x14')](_0x104e45);return _0x1e3a68[_0x7923('0x1b')](_0x7923('0x1c'),_0x42fa6f+'-'+_0x3dd08c+'/'+_0x2d803d)['json'](_0x24dc2f);}return null;};}function patchUpdates(_0x5b567f){return function(_0x338998){try{jsonpatch[_0x7923('0x1d')](_0x338998,_0x5b567f,!![]);}catch(_0x486317){return BPromise['reject'](_0x486317);}return _0x338998[_0x7923('0x1e')]();};}function saveUpdates(_0x493acb,_0x357c18){return function(_0x44e337){if(_0x44e337){return _0x44e337[_0x7923('0x1f')](_0x493acb)[_0x7923('0x20')](function(_0x2d2fbd){return _0x2d2fbd;});}return null;};}function removeEntity(_0x22c4e4,_0x5537d6){return function(_0x4698c0){if(_0x4698c0){return _0x4698c0[_0x7923('0x21')]()['then'](function(){var _0x3fac7d=_0x4698c0[_0x7923('0x22')]({'plain':!![]});var _0xe007c9=_0x7923('0x23');return db['UserProfileResource']['destroy']({'where':{'type':_0xe007c9,'resourceId':_0x3fac7d['id']}})[_0x7923('0x20')](function(){return _0x4698c0;});})[_0x7923('0x20')](function(){_0x22c4e4[_0x7923('0x14')](0xcc)[_0x7923('0x15')]();});}};}function handleEntityNotFound(_0x2ee865,_0x30f88f){return function(_0x1570b2){if(!_0x1570b2){_0x2ee865['sendStatus'](0x194);}return _0x1570b2;};}function handleError(_0x4e5a97,_0x50433b){_0x50433b=_0x50433b||0x1f4;return function(_0x56ba05){logger[_0x7923('0x24')](_0x56ba05[_0x7923('0x25')]);if(_0x56ba05[_0x7923('0x26')]){delete _0x56ba05[_0x7923('0x26')];}_0x4e5a97[_0x7923('0x14')](_0x50433b)[_0x7923('0x27')](_0x56ba05);};}exports['index']=function(_0x22396c,_0x4024da){var _0x5a885a={},_0x5dc72a={},_0x52240d={'count':0x0,'rows':[]};var _0x54f0ef=_['map'](db[_0x7923('0x28')]['rawAttributes'],function(_0x10f7cf){return{'name':_0x10f7cf[_0x7923('0x29')],'type':_0x10f7cf[_0x7923('0x2a')]['key']};});_0x5dc72a['model']=_[_0x7923('0x2b')](_0x54f0ef,_0x7923('0x26'));_0x5dc72a[_0x7923('0x2c')]=_[_0x7923('0x2d')](_0x22396c['query']);_0x5dc72a[_0x7923('0x2e')]=_[_0x7923('0x2f')](_0x5dc72a[_0x7923('0x30')],_0x5dc72a[_0x7923('0x2c')]);_0x5a885a[_0x7923('0x31')]=_[_0x7923('0x2f')](_0x5dc72a['model'],qs[_0x7923('0x32')](_0x22396c[_0x7923('0x2c')][_0x7923('0x32')]));_0x5a885a[_0x7923('0x31')]=_0x5a885a['attributes'][_0x7923('0x33')]?_0x5a885a[_0x7923('0x31')]:_0x5dc72a[_0x7923('0x30')];if(!_0x22396c[_0x7923('0x2c')][_0x7923('0x34')](_0x7923('0x35'))){_0x5a885a['limit']=qs[_0x7923('0x19')](_0x22396c[_0x7923('0x2c')][_0x7923('0x19')]);_0x5a885a['offset']=qs[_0x7923('0x17')](_0x22396c[_0x7923('0x2c')][_0x7923('0x17')]);}_0x5a885a[_0x7923('0x36')]=qs[_0x7923('0x37')](_0x22396c['query']['sort']);_0x5a885a[_0x7923('0x38')]=qs[_0x7923('0x2e')](_['pick'](_0x22396c[_0x7923('0x2c')],_0x5dc72a['filters']),_0x54f0ef);if(_0x22396c[_0x7923('0x2c')][_0x7923('0x39')]){_0x5a885a[_0x7923('0x38')]=_[_0x7923('0x3a')](_0x5a885a[_0x7923('0x38')],{'$or':_['map'](_0x54f0ef,function(_0x5c095a){if(_0x5c095a[_0x7923('0x2a')]!==_0x7923('0x3b')){var _0x59e627={};_0x59e627[_0x5c095a[_0x7923('0x26')]]={'$like':'%'+_0x22396c[_0x7923('0x2c')][_0x7923('0x39')]+'%'};return _0x59e627;}})});}_0x5a885a=_[_0x7923('0x3a')]({},_0x5a885a,_0x22396c['options']);var _0x18563e={'where':_0x5a885a['where']};return db['AnalyticExtractedReport'][_0x7923('0x1a')](_0x18563e)[_0x7923('0x20')](function(_0x154458){_0x52240d[_0x7923('0x1a')]=_0x154458;if(_0x22396c['query'][_0x7923('0x3c')]){_0x5a885a[_0x7923('0x3d')]=[{'all':!![]}];}return db['AnalyticExtractedReport'][_0x7923('0x3e')](_0x5a885a);})[_0x7923('0x20')](function(_0x22a9ea){_0x52240d['rows']=_0x22a9ea;return _0x52240d;})[_0x7923('0x20')](respondWithFilteredResult(_0x4024da,_0x5a885a))[_0x7923('0x3f')](handleError(_0x4024da,null));};exports[_0x7923('0x40')]=function(_0x426cde,_0x2760f4){var _0xcf1beb={'raw':!![],'where':{'id':_0x426cde['params']['id']}},_0x3e37e5={};_0x3e37e5['model']=_['keys'](db['AnalyticExtractedReport'][_0x7923('0x41')]);_0x3e37e5['query']=_[_0x7923('0x2d')](_0x426cde[_0x7923('0x2c')]);_0x3e37e5[_0x7923('0x2e')]=_[_0x7923('0x2f')](_0x3e37e5[_0x7923('0x30')],_0x3e37e5[_0x7923('0x2c')]);_0xcf1beb[_0x7923('0x31')]=_[_0x7923('0x2f')](_0x3e37e5[_0x7923('0x30')],qs[_0x7923('0x32')](_0x426cde[_0x7923('0x2c')][_0x7923('0x32')]));_0xcf1beb[_0x7923('0x31')]=_0xcf1beb[_0x7923('0x31')]['length']?_0xcf1beb['attributes']:_0x3e37e5[_0x7923('0x30')];if(_0x426cde[_0x7923('0x2c')][_0x7923('0x3c')]){_0xcf1beb[_0x7923('0x3d')]=[{'all':!![]}];}_0xcf1beb=_[_0x7923('0x3a')]({},_0xcf1beb,_0x426cde[_0x7923('0x42')]);return db[_0x7923('0x28')][_0x7923('0x43')](_0xcf1beb)[_0x7923('0x20')](handleEntityNotFound(_0x2760f4,null))[_0x7923('0x20')](respondWithResult(_0x2760f4,null))[_0x7923('0x3f')](handleError(_0x2760f4,null));};exports[_0x7923('0x44')]=function(_0x5d776b,_0x44c022){return db[_0x7923('0x28')]['create'](_0x5d776b[_0x7923('0x45')],{})[_0x7923('0x20')](function(_0x186465){var _0x363dbd=_0x5d776b['user']['get']({'plain':!![]});if(!_0x363dbd)throw new Error(_0x7923('0x46'));if(_0x363dbd[_0x7923('0x47')]===_0x7923('0x48')){var _0x4edb05=_0x186465[_0x7923('0x22')]({'plain':!![]});var _0x43e24f=_0x7923('0x23');return db[_0x7923('0x49')][_0x7923('0x43')]({'where':{'name':_0x43e24f,'userProfileId':_0x363dbd[_0x7923('0x4a')]},'raw':!![]})[_0x7923('0x20')](function(_0x242065){if(_0x242065&&_0x242065[_0x7923('0x4b')]===0x0){return db[_0x7923('0x4c')][_0x7923('0x44')]({'name':_0x4edb05['name'],'resourceId':_0x4edb05['id'],'type':_0x242065[_0x7923('0x26')],'sectionId':_0x242065['id']},{})['then'](function(){return _0x186465;});}else{return _0x186465;}})['catch'](function(_0x1059fe){logger[_0x7923('0x24')](_0x7923('0x4d'),_0x1059fe);throw _0x1059fe;});}return _0x186465;})[_0x7923('0x20')](respondWithResult(_0x44c022,0xc9))[_0x7923('0x3f')](handleError(_0x44c022,null));};exports[_0x7923('0x1f')]=function(_0x11bb46,_0x36425b){if(_0x11bb46[_0x7923('0x45')]['id']){delete _0x11bb46['body']['id'];}return db['AnalyticExtractedReport']['find']({'where':{'id':_0x11bb46[_0x7923('0x4e')]['id']}})[_0x7923('0x20')](handleEntityNotFound(_0x36425b,null))['then'](saveUpdates(_0x11bb46[_0x7923('0x45')],null))['then'](respondWithResult(_0x36425b,null))['catch'](handleError(_0x36425b,null));};exports[_0x7923('0x21')]=function(_0x309d96,_0x199acd){return db[_0x7923('0x28')][_0x7923('0x43')]({'where':{'id':_0x309d96['params']['id']}})[_0x7923('0x20')](handleEntityNotFound(_0x199acd,null))['then'](removeEntity(_0x199acd,null))[_0x7923('0x3f')](handleError(_0x199acd,null));};exports[_0x7923('0x4f')]=function(_0x2f6232,_0x1d4a5e,_0x38e71b){return db[_0x7923('0x28')][_0x7923('0x43')]({'where':{'id':_0x2f6232[_0x7923('0x4e')]['id']},'attributes':[_0x7923('0x26'),_0x7923('0x50'),'savename',_0x7923('0x51')],'raw':!![]})['then'](handleEntityNotFound(_0x1d4a5e,null))['then'](function(_0x466476){if(_0x466476){if(!fs['existsSync'](path[_0x7923('0x52')](config['root'],_0x7923('0x53'),_0x466476[_0x7923('0x54')]))){throw new db[(_0x7923('0x55'))][(_0x7923('0x56'))](_0x7923('0x57'));}if(_0x2f6232['query'][_0x7923('0x58')]){return _0x1d4a5e['sendStatus'](0xc8);}return _0x1d4a5e[_0x7923('0x4f')](path['join'](config[_0x7923('0x59')],_0x7923('0x53'),_0x466476[_0x7923('0x54')]),util[_0x7923('0x5a')](_0x7923('0x5b'),_0x466476[_0x7923('0x50')]||_0x466476['name'],_0x466476[_0x7923('0x51')][_0x7923('0x5c')]()));}})['catch'](handleError(_0x1d4a5e,null));};
\ No newline at end of file
index 713b871..a83f17f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb075=['define','AnalyticExtractedReport','lodash','util','../../config/logger','moment','./analyticExtractedReport.attributes','exports'];(function(_0x5aba01,_0x11a9ed){var _0x1b6c10=function(_0x3089f2){while(--_0x3089f2){_0x5aba01['push'](_0x5aba01['shift']());}};_0x1b6c10(++_0x11a9ed);}(_0xb075,0xc2));var _0x5b07=function(_0xeddc51,_0x3c9e18){_0xeddc51=_0xeddc51-0x0;var _0x211bf3=_0xb075[_0xeddc51];return _0x211bf3;};'use strict';var _=require(_0x5b07('0x0'));var util=require(_0x5b07('0x1'));var logger=require(_0x5b07('0x2'))('api');var moment=require(_0x5b07('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('../../config/environment');var attributes=require(_0x5b07('0x4'));module[_0x5b07('0x5')]=function(_0x5a0fb8,_0x3c6df0){return _0x5a0fb8[_0x5b07('0x6')](_0x5b07('0x7'),attributes,{'tableName':'analytics_extracted_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa53b=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticExtractedReport.attributes','exports','define','analytics_extracted_reports','lodash'];(function(_0xd77b35,_0x5d0d78){var _0x27f5e4=function(_0x2f6e4e){while(--_0x2f6e4e){_0xd77b35['push'](_0xd77b35['shift']());}};_0x27f5e4(++_0x5d0d78);}(_0xa53b,0xb3));var _0xba53=function(_0x4d119a,_0x398de0){_0x4d119a=_0x4d119a-0x0;var _0x32d5fc=_0xa53b[_0x4d119a];return _0x32d5fc;};'use strict';var _=require(_0xba53('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xba53('0x1'));var moment=require(_0xba53('0x2'));var BPromise=require(_0xba53('0x3'));var rp=require(_0xba53('0x4'));var fs=require('fs');var path=require(_0xba53('0x5'));var rimraf=require(_0xba53('0x6'));var config=require(_0xba53('0x7'));var attributes=require(_0xba53('0x8'));module[_0xba53('0x9')]=function(_0x1281a5,_0x489951){return _0x1281a5[_0xba53('0xa')]('AnalyticExtractedReport',attributes,{'tableName':_0xba53('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5ea6ad8..542e229 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb338=['error','code','message','result','catch','lodash','bluebird','randomstring','ioredis','rpc','../../config/environment','client','request','then','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xb338,0x16e));var _0x8b33=function(_0x279994,_0x582317){_0x279994=_0x279994-0x0;var _0x353d7a=_0xb338[_0x279994];return _0x353d7a;};'use strict';var _=require(_0x8b33('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x8b33('0x1'));var rs=require(_0x8b33('0x2'));var fs=require('fs');var Redis=require(_0x8b33('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x8b33('0x4'));var config=require(_0x8b33('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x8b33('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2eb2d8,_0x19edd5,_0x50537d){return new BPromise(function(_0x58907c,_0x2ec064){return client[_0x8b33('0x7')](_0x2eb2d8,_0x50537d)[_0x8b33('0x8')](function(_0x109216){logger[_0x8b33('0x9')](_0x8b33('0xa'),_0x19edd5,_0x8b33('0xb'));logger['debug'](_0x8b33('0xc'),_0x19edd5,_0x8b33('0xb'),JSON[_0x8b33('0xd')](_0x109216));if(_0x109216[_0x8b33('0xe')]){if(_0x109216[_0x8b33('0xe')][_0x8b33('0xf')]===0x1f4){logger[_0x8b33('0xe')](_0x8b33('0xa'),_0x19edd5,_0x109216['error'][_0x8b33('0x10')]);return _0x2ec064(_0x109216[_0x8b33('0xe')][_0x8b33('0x10')]);}logger[_0x8b33('0xe')](_0x8b33('0xa'),_0x19edd5,_0x109216[_0x8b33('0xe')][_0x8b33('0x10')]);return _0x58907c(_0x109216[_0x8b33('0xe')][_0x8b33('0x10')]);}else{logger['info'](_0x8b33('0xa'),_0x19edd5,'request\x20sent');_0x58907c(_0x109216[_0x8b33('0x11')][_0x8b33('0x10')]);}})[_0x8b33('0x12')](function(_0x541a20){logger[_0x8b33('0xe')](_0x8b33('0xa'),_0x19edd5,_0x541a20);_0x2ec064(_0x541a20);});});}
\ No newline at end of file
+var _0x6817=['request\x20sent','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','error','AnalyticExtractedReport,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info'];(function(_0x40d4e5,_0x1ebe2c){var _0x210d1a=function(_0x302f4e){while(--_0x302f4e){_0x40d4e5['push'](_0x40d4e5['shift']());}};_0x210d1a(++_0x1ebe2c);}(_0x6817,0xf8));var _0x7681=function(_0x384dc1,_0x3567d){_0x384dc1=_0x384dc1-0x0;var _0x4ae336=_0x6817[_0x384dc1];return _0x4ae336;};'use strict';var _=require(_0x7681('0x0'));var util=require(_0x7681('0x1'));var moment=require(_0x7681('0x2'));var BPromise=require(_0x7681('0x3'));var rs=require(_0x7681('0x4'));var fs=require('fs');var Redis=require(_0x7681('0x5'));var db=require(_0x7681('0x6'))['db'];var utils=require(_0x7681('0x7'));var logger=require(_0x7681('0x8'))(_0x7681('0x9'));var config=require(_0x7681('0xa'));var jayson=require(_0x7681('0xb'));var client=jayson[_0x7681('0xc')][_0x7681('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x54c74f,_0x1413ec,_0x4bdc51){return new BPromise(function(_0x4a1b66,_0x83649f){return client[_0x7681('0xe')](_0x54c74f,_0x4bdc51)['then'](function(_0x1b251f){logger[_0x7681('0xf')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x1413ec,_0x7681('0x10'));logger[_0x7681('0x11')](_0x7681('0x12'),_0x1413ec,_0x7681('0x10'),JSON['stringify'](_0x1b251f));if(_0x1b251f[_0x7681('0x13')]){if(_0x1b251f['error']['code']===0x1f4){logger[_0x7681('0x13')](_0x7681('0x14'),_0x1413ec,_0x1b251f[_0x7681('0x13')][_0x7681('0x15')]);return _0x83649f(_0x1b251f[_0x7681('0x13')]['message']);}logger[_0x7681('0x13')](_0x7681('0x14'),_0x1413ec,_0x1b251f['error']['message']);return _0x4a1b66(_0x1b251f[_0x7681('0x13')][_0x7681('0x15')]);}else{logger[_0x7681('0xf')](_0x7681('0x14'),_0x1413ec,_0x7681('0x10'));_0x4a1b66(_0x1b251f[_0x7681('0x16')][_0x7681('0x15')]);}})[_0x7681('0x17')](function(_0x31057a){logger[_0x7681('0x13')](_0x7681('0x14'),_0x1413ec,_0x31057a);_0x83649f(_0x31057a);});});}
\ No newline at end of file
index 3713754..4e5ad8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe229=['exports','util','connect-timeout','express','Router','fs-extra','../../config/environment','./analyticExtractedReport.controller','get','isAuthenticated','/:id','/:id/download','post','create','put','update','delete','destroy'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe229,0x91));var _0x9e22=function(_0x55fd4e,_0x41746c){_0x55fd4e=_0x55fd4e-0x0;var _0x880ff8=_0xe229[_0x55fd4e];return _0x880ff8;};'use strict';var multer=require('multer');var util=require(_0x9e22('0x0'));var path=require('path');var timeout=require(_0x9e22('0x1'));var express=require(_0x9e22('0x2'));var router=express[_0x9e22('0x3')]();var fs_extra=require(_0x9e22('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x9e22('0x5'));var controller=require(_0x9e22('0x6'));router[_0x9e22('0x7')]('/',auth[_0x9e22('0x8')](),controller['index']);router[_0x9e22('0x7')](_0x9e22('0x9'),auth[_0x9e22('0x8')](),controller['show']);router[_0x9e22('0x7')](_0x9e22('0xa'),auth[_0x9e22('0x8')](),controller['download']);router[_0x9e22('0xb')]('/',auth[_0x9e22('0x8')](),controller[_0x9e22('0xc')]);router[_0x9e22('0xd')](_0x9e22('0x9'),auth[_0x9e22('0x8')](),controller[_0x9e22('0xe')]);router[_0x9e22('0xf')](_0x9e22('0x9'),auth['isAuthenticated'](),controller[_0x9e22('0x10')]);module[_0x9e22('0x11')]=router;
\ No newline at end of file
+var _0x0317=['/:id','show','/:id/download','create','put','update','delete','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticExtractedReport.controller','isAuthenticated','index','get'];(function(_0x454ae0,_0x253c6b){var _0x2ce06f=function(_0xd023dc){while(--_0xd023dc){_0x454ae0['push'](_0x454ae0['shift']());}};_0x2ce06f(++_0x253c6b);}(_0x0317,0x94));var _0x7031=function(_0x48bc0d,_0x30becd){_0x48bc0d=_0x48bc0d-0x0;var _0x35f641=_0x0317[_0x48bc0d];return _0x35f641;};'use strict';var multer=require(_0x7031('0x0'));var util=require(_0x7031('0x1'));var path=require('path');var timeout=require(_0x7031('0x2'));var express=require(_0x7031('0x3'));var router=express['Router']();var fs_extra=require(_0x7031('0x4'));var auth=require(_0x7031('0x5'));var interaction=require(_0x7031('0x6'));var config=require(_0x7031('0x7'));var controller=require(_0x7031('0x8'));router['get']('/',auth[_0x7031('0x9')](),controller[_0x7031('0xa')]);router[_0x7031('0xb')](_0x7031('0xc'),auth[_0x7031('0x9')](),controller[_0x7031('0xd')]);router[_0x7031('0xb')](_0x7031('0xe'),auth[_0x7031('0x9')](),controller['download']);router['post']('/',auth[_0x7031('0x9')](),controller[_0x7031('0xf')]);router[_0x7031('0x10')](_0x7031('0xc'),auth[_0x7031('0x9')](),controller[_0x7031('0x11')]);router[_0x7031('0x12')](_0x7031('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x7031('0x13')]=router;
\ No newline at end of file
index b87af32..2306a51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dd8=['TEXT','STRING','BOOLEAN','sequelize','exports'];(function(_0x8bb4c1,_0x2d6e53){var _0x67a6e1=function(_0x1155e5){while(--_0x1155e5){_0x8bb4c1['push'](_0x8bb4c1['shift']());}};_0x67a6e1(++_0x2d6e53);}(_0x2dd8,0x67));var _0x82dd=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x2dd8[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0x82dd('0x0'));module[_0x82dd('0x1')]={'field':{'type':Sequelize[_0x82dd('0x2')]},'alias':{'type':Sequelize[_0x82dd('0x3')]},'function':{'type':Sequelize[_0x82dd('0x3')]},'format':{'type':Sequelize[_0x82dd('0x3')]},'groupBy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x82dd('0x3')]},'custom':{'type':Sequelize[_0x82dd('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0x0ff6=['TEXT','STRING','BOOLEAN','exports'];(function(_0x5f017a,_0xf097bb){var _0x537a38=function(_0x15a617){while(--_0x15a617){_0x5f017a['push'](_0x5f017a['shift']());}};_0x537a38(++_0xf097bb);}(_0x0ff6,0x15f));var _0x60ff=function(_0x3e5803,_0x24bdcc){_0x3e5803=_0x3e5803-0x0;var _0x2b62d3=_0x0ff6[_0x3e5803];return _0x2b62d3;};'use strict';var Sequelize=require('sequelize');module[_0x60ff('0x0')]={'field':{'type':Sequelize[_0x60ff('0x1')]},'alias':{'type':Sequelize[_0x60ff('0x2')]},'function':{'type':Sequelize[_0x60ff('0x2')]},'format':{'type':Sequelize[_0x60ff('0x2')]},'groupBy':{'type':Sequelize[_0x60ff('0x3')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x60ff('0x2')]},'custom':{'type':Sequelize[_0x60ff('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 9c1923c..6c32f20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a69=['pick','filter','map','type','merge','then','includeAll','include','findAll','rows','catch','show','params','rawAttributes','options','find','create','body','bulkCreate','bulkDestroy','ids','addFields','sequelize','CustomReportId','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','json','reject','update','destroy','error','stack','name','AnalyticFieldReport','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','sort','where'];(function(_0x116482,_0x35ddae){var _0x56db37=function(_0xc3685c){while(--_0xc3685c){_0x116482['push'](_0x116482['shift']());}};_0x56db37(++_0x35ddae);}(_0x6a69,0xfc));var _0x96a6=function(_0x3aaf0a,_0x450970){_0x3aaf0a=_0x3aaf0a-0x0;var _0x33e6bc=_0x6a69[_0x3aaf0a];return _0x33e6bc;};'use strict';var emlformat=require(_0x96a6('0x0'));var rimraf=require(_0x96a6('0x1'));var zipdir=require(_0x96a6('0x2'));var jsonpatch=require(_0x96a6('0x3'));var rp=require(_0x96a6('0x4'));var moment=require('moment');var BPromise=require(_0x96a6('0x5'));var Mustache=require(_0x96a6('0x6'));var util=require(_0x96a6('0x7'));var path=require(_0x96a6('0x8'));var sox=require(_0x96a6('0x9'));var csv=require(_0x96a6('0xa'));var ejs=require(_0x96a6('0xb'));var fs=require('fs');var fs_extra=require(_0x96a6('0xc'));var _=require(_0x96a6('0xd'));var squel=require(_0x96a6('0xe'));var crypto=require(_0x96a6('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x96a6('0x10'));var toCsv=require(_0x96a6('0xa'));var querystring=require(_0x96a6('0x11'));var Papa=require('papaparse');var Redis=require(_0x96a6('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x96a6('0x13'));var as=require(_0x96a6('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x96a6('0x15'))(_0x96a6('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x96a6('0x17'));var db=require(_0x96a6('0x18'))['db'];function respondWithStatusCode(_0x338feb,_0x32c120){_0x32c120=_0x32c120||0xcc;return function(_0x1edc9e){if(_0x1edc9e){return _0x338feb[_0x96a6('0x19')](_0x32c120);}return _0x338feb[_0x96a6('0x1a')](_0x32c120)[_0x96a6('0x1b')]();};}function respondWithResult(_0x5330a4,_0x437b6d){_0x437b6d=_0x437b6d||0xc8;return function(_0x2e1f06){if(_0x2e1f06){return _0x5330a4['status'](_0x437b6d)['json'](_0x2e1f06);}};}function respondWithFilteredResult(_0x2965eb,_0x30abdf){return function(_0x5ae2d7){if(_0x5ae2d7){var _0x56b0cb=typeof _0x30abdf[_0x96a6('0x1c')]==='undefined'&&typeof _0x30abdf['limit']===_0x96a6('0x1d');var _0x11397b=_0x5ae2d7[_0x96a6('0x1e')];var _0x2fbc8c=_0x56b0cb?0x0:_0x30abdf[_0x96a6('0x1c')];var _0x281e97=_0x56b0cb?_0x5ae2d7[_0x96a6('0x1e')]:_0x30abdf[_0x96a6('0x1c')]+_0x30abdf[_0x96a6('0x1f')];var _0x3b2787;if(_0x281e97>=_0x11397b){_0x281e97=_0x11397b;_0x3b2787=0xc8;}else{_0x3b2787=0xce;}_0x2965eb[_0x96a6('0x1a')](_0x3b2787);return _0x2965eb['set']('Content-Range',_0x2fbc8c+'-'+_0x281e97+'/'+_0x11397b)[_0x96a6('0x20')](_0x5ae2d7);}return null;};}function patchUpdates(_0x33e73b){return function(_0x199673){try{jsonpatch['apply'](_0x199673,_0x33e73b,!![]);}catch(_0x21afac){return BPromise[_0x96a6('0x21')](_0x21afac);}return _0x199673['save']();};}function saveUpdates(_0x4920f5,_0x1be17c){return function(_0x3b61b9){if(_0x3b61b9){return _0x3b61b9[_0x96a6('0x22')](_0x4920f5)['then'](function(_0x2b1566){return _0x2b1566;});}return null;};}function removeEntity(_0x8321ba,_0x1c6539){return function(_0x482e46){if(_0x482e46){return _0x482e46[_0x96a6('0x23')]()['then'](function(){_0x8321ba[_0x96a6('0x1a')](0xcc)[_0x96a6('0x1b')]();});}};}function handleEntityNotFound(_0x55673b,_0x2ba118){return function(_0x4c8e7e){if(!_0x4c8e7e){_0x55673b['sendStatus'](0x194);}return _0x4c8e7e;};}function handleError(_0x594808,_0xe18ff7){_0xe18ff7=_0xe18ff7||0x1f4;return function(_0x5e9247){logger[_0x96a6('0x24')](_0x5e9247[_0x96a6('0x25')]);if(_0x5e9247[_0x96a6('0x26')]){delete _0x5e9247['name'];}_0x594808[_0x96a6('0x1a')](_0xe18ff7)['send'](_0x5e9247);};}exports['index']=function(_0x2dc0bd,_0x308d28){var _0x360909={},_0x2eedef={},_0x4e96c2={'count':0x0,'rows':[]};var _0xe58ced=_['map'](db[_0x96a6('0x27')]['rawAttributes'],function(_0x4327a8){return{'name':_0x4327a8[_0x96a6('0x28')],'type':_0x4327a8['type'][_0x96a6('0x29')]};});_0x2eedef[_0x96a6('0x2a')]=_['map'](_0xe58ced,_0x96a6('0x26'));_0x2eedef['query']=_[_0x96a6('0x2b')](_0x2dc0bd[_0x96a6('0x2c')]);_0x2eedef[_0x96a6('0x2d')]=_[_0x96a6('0x2e')](_0x2eedef[_0x96a6('0x2a')],_0x2eedef[_0x96a6('0x2c')]);_0x360909[_0x96a6('0x2f')]=_[_0x96a6('0x2e')](_0x2eedef['model'],qs[_0x96a6('0x30')](_0x2dc0bd[_0x96a6('0x2c')][_0x96a6('0x30')]));_0x360909['attributes']=_0x360909['attributes'][_0x96a6('0x31')]?_0x360909[_0x96a6('0x2f')]:_0x2eedef[_0x96a6('0x2a')];if(!_0x2dc0bd['query']['hasOwnProperty']('nolimit')){_0x360909[_0x96a6('0x1f')]=qs[_0x96a6('0x1f')](_0x2dc0bd[_0x96a6('0x2c')][_0x96a6('0x1f')]);_0x360909[_0x96a6('0x1c')]=qs[_0x96a6('0x1c')](_0x2dc0bd[_0x96a6('0x2c')][_0x96a6('0x1c')]);}_0x360909['order']=qs[_0x96a6('0x32')](_0x2dc0bd[_0x96a6('0x2c')][_0x96a6('0x32')]);_0x360909[_0x96a6('0x33')]=qs[_0x96a6('0x2d')](_[_0x96a6('0x34')](_0x2dc0bd[_0x96a6('0x2c')],_0x2eedef[_0x96a6('0x2d')]),_0xe58ced);if(_0x2dc0bd['query'][_0x96a6('0x35')]){_0x360909['where']=_['merge'](_0x360909[_0x96a6('0x33')],{'$or':_[_0x96a6('0x36')](_0xe58ced,function(_0x27e9cd){if(_0x27e9cd[_0x96a6('0x37')]!=='VIRTUAL'){var _0x485aca={};_0x485aca[_0x27e9cd[_0x96a6('0x26')]]={'$like':'%'+_0x2dc0bd[_0x96a6('0x2c')][_0x96a6('0x35')]+'%'};return _0x485aca;}})});}_0x360909=_[_0x96a6('0x38')]({},_0x360909,_0x2dc0bd['options']);var _0x2ebfb5={'where':_0x360909['where']};return db[_0x96a6('0x27')][_0x96a6('0x1e')](_0x2ebfb5)[_0x96a6('0x39')](function(_0x4e6d52){_0x4e96c2[_0x96a6('0x1e')]=_0x4e6d52;if(_0x2dc0bd[_0x96a6('0x2c')][_0x96a6('0x3a')]){_0x360909[_0x96a6('0x3b')]=[{'all':!![]}];}return db['AnalyticFieldReport'][_0x96a6('0x3c')](_0x360909);})[_0x96a6('0x39')](function(_0x3a3bbe){_0x4e96c2[_0x96a6('0x3d')]=_0x3a3bbe;return _0x4e96c2;})[_0x96a6('0x39')](respondWithFilteredResult(_0x308d28,_0x360909))[_0x96a6('0x3e')](handleError(_0x308d28,null));};exports[_0x96a6('0x3f')]=function(_0x67f9c3,_0x99ffa4){var _0x3e6885={'raw':![],'where':{'id':_0x67f9c3[_0x96a6('0x40')]['id']}},_0x2a2f94={};_0x2a2f94['model']=_[_0x96a6('0x2b')](db[_0x96a6('0x27')][_0x96a6('0x41')]);_0x2a2f94[_0x96a6('0x2c')]=_[_0x96a6('0x2b')](_0x67f9c3['query']);_0x2a2f94[_0x96a6('0x2d')]=_[_0x96a6('0x2e')](_0x2a2f94[_0x96a6('0x2a')],_0x2a2f94[_0x96a6('0x2c')]);_0x3e6885[_0x96a6('0x2f')]=_[_0x96a6('0x2e')](_0x2a2f94['model'],qs['fields'](_0x67f9c3[_0x96a6('0x2c')]['fields']));_0x3e6885['attributes']=_0x3e6885['attributes'][_0x96a6('0x31')]?_0x3e6885[_0x96a6('0x2f')]:_0x2a2f94['model'];if(_0x67f9c3[_0x96a6('0x2c')][_0x96a6('0x3a')]){_0x3e6885[_0x96a6('0x3b')]=[{'all':!![]}];}_0x3e6885=_[_0x96a6('0x38')]({},_0x3e6885,_0x67f9c3[_0x96a6('0x42')]);return db[_0x96a6('0x27')][_0x96a6('0x43')](_0x3e6885)['then'](handleEntityNotFound(_0x99ffa4,null))['then'](respondWithResult(_0x99ffa4,null))['catch'](handleError(_0x99ffa4,null));};exports[_0x96a6('0x44')]=function(_0x1c10d4,_0x16637a){return db[_0x96a6('0x27')][_0x96a6('0x44')](_0x1c10d4[_0x96a6('0x45')],{})[_0x96a6('0x39')](respondWithResult(_0x16637a,0xc9))[_0x96a6('0x3e')](handleError(_0x16637a,null));};exports[_0x96a6('0x46')]=function(_0x4b1018,_0x4ec448){return db['AnalyticFieldReport'][_0x96a6('0x46')](_0x4b1018[_0x96a6('0x45')],{'raw':![],'individualHooks':!![]})[_0x96a6('0x39')](respondWithResult(_0x4ec448,0xc9))[_0x96a6('0x3e')](handleError(_0x4ec448,null));};exports[_0x96a6('0x22')]=function(_0x6332b2,_0xf71eb6){if(_0x6332b2[_0x96a6('0x45')]['id']){delete _0x6332b2[_0x96a6('0x45')]['id'];}return db['AnalyticFieldReport']['find']({'where':{'id':_0x6332b2[_0x96a6('0x40')]['id']}})[_0x96a6('0x39')](handleEntityNotFound(_0xf71eb6,null))['then'](saveUpdates(_0x6332b2[_0x96a6('0x45')],null))[_0x96a6('0x39')](respondWithResult(_0xf71eb6,null))[_0x96a6('0x3e')](handleError(_0xf71eb6,null));};exports['destroy']=function(_0x45dffb,_0x1abd9b){return db['AnalyticFieldReport']['find']({'where':{'id':_0x45dffb[_0x96a6('0x40')]['id']}})[_0x96a6('0x39')](handleEntityNotFound(_0x1abd9b,null))['then'](removeEntity(_0x1abd9b,null))[_0x96a6('0x3e')](handleError(_0x1abd9b,null));};exports[_0x96a6('0x47')]=function(_0x41dad6,_0x1e68f3){return db[_0x96a6('0x27')][_0x96a6('0x23')]({'where':{'id':_0x41dad6[_0x96a6('0x2c')][_0x96a6('0x48')]||[]},'raw':![],'individualHooks':!![]})[_0x96a6('0x39')](respondWithResult(_0x1e68f3,0xcc))[_0x96a6('0x3e')](handleError(_0x1e68f3,null));};exports[_0x96a6('0x49')]=function(_0x1bfc37,_0x133d4a,_0x4c068b){return db['AnalyticCustomReport']['findOne']({'where':{'id':_0x1bfc37[_0x96a6('0x40')]['id']}})[_0x96a6('0x39')](handleEntityNotFound(_0x133d4a,null))[_0x96a6('0x39')](function(_0x165a38){if(_0x165a38){return db[_0x96a6('0x4a')]['transaction'](function(_0x3f0f30){return db[_0x96a6('0x27')][_0x96a6('0x23')]({'where':{'CustomReportId':_0x1bfc37['params']['id']},'transaction':_0x3f0f30})[_0x96a6('0x39')](function(_0x4328d2){var _0x4531c2=_[_0x96a6('0x36')](_0x1bfc37[_0x96a6('0x45')],function(_0xd46bc8){delete _0xd46bc8['id'];_0xd46bc8[_0x96a6('0x4b')]=_0x1bfc37[_0x96a6('0x40')]['id'];return _0xd46bc8;});return db[_0x96a6('0x27')][_0x96a6('0x46')](_0x4531c2,{'transaction':_0x3f0f30});});})[_0x96a6('0x39')](function(){return db[_0x96a6('0x27')][_0x96a6('0x3c')]({'where':{'CustomReportId':_0x1bfc37['params']['id']}});});}})[_0x96a6('0x39')](respondWithResult(_0x133d4a,null))['catch'](handleError(_0x133d4a,null));};
\ No newline at end of file
+var _0xd9d1=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','destroy','error','stack','name','send','map','AnalyticFieldReport','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','findAll','rows','show','params','include','find','create','body','catch','bulkCreate','bulkDestroy','ids','addFields','AnalyticCustomReport','findOne','sequelize','transaction','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis'];(function(_0x41df9f,_0xee067c){var _0x57fe79=function(_0x3a6871){while(--_0x3a6871){_0x41df9f['push'](_0x41df9f['shift']());}};_0x57fe79(++_0xee067c);}(_0xd9d1,0x1ec));var _0x1d9d=function(_0x5d33db,_0x455ebe){_0x5d33db=_0x5d33db-0x0;var _0x149db2=_0xd9d1[_0x5d33db];return _0x149db2;};'use strict';var emlformat=require(_0x1d9d('0x0'));var rimraf=require(_0x1d9d('0x1'));var zipdir=require(_0x1d9d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x1d9d('0x3'));var BPromise=require(_0x1d9d('0x4'));var Mustache=require(_0x1d9d('0x5'));var util=require(_0x1d9d('0x6'));var path=require(_0x1d9d('0x7'));var sox=require('sox');var csv=require(_0x1d9d('0x8'));var ejs=require(_0x1d9d('0x9'));var fs=require('fs');var fs_extra=require(_0x1d9d('0xa'));var _=require(_0x1d9d('0xb'));var squel=require(_0x1d9d('0xc'));var crypto=require(_0x1d9d('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x1d9d('0xe'));var toCsv=require('to-csv');var querystring=require(_0x1d9d('0xf'));var Papa=require(_0x1d9d('0x10'));var Redis=require(_0x1d9d('0x11'));var authService=require(_0x1d9d('0x12'));var qs=require(_0x1d9d('0x13'));var as=require(_0x1d9d('0x14'));var hardwareService=require(_0x1d9d('0x15'));var logger=require('../../config/logger')(_0x1d9d('0x16'));var utils=require(_0x1d9d('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x1d9d('0x18'));var db=require(_0x1d9d('0x19'))['db'];function respondWithStatusCode(_0xfda175,_0x571504){_0x571504=_0x571504||0xcc;return function(_0x24a018){if(_0x24a018){return _0xfda175[_0x1d9d('0x1a')](_0x571504);}return _0xfda175[_0x1d9d('0x1b')](_0x571504)[_0x1d9d('0x1c')]();};}function respondWithResult(_0x37b61b,_0x15a05d){_0x15a05d=_0x15a05d||0xc8;return function(_0x5bc755){if(_0x5bc755){return _0x37b61b['status'](_0x15a05d)[_0x1d9d('0x1d')](_0x5bc755);}};}function respondWithFilteredResult(_0x5747f5,_0x4fa4aa){return function(_0x54da8a){if(_0x54da8a){var _0x58979e=typeof _0x4fa4aa[_0x1d9d('0x1e')]===_0x1d9d('0x1f')&&typeof _0x4fa4aa[_0x1d9d('0x20')]===_0x1d9d('0x1f');var _0x1fe8e9=_0x54da8a[_0x1d9d('0x21')];var _0x6924b0=_0x58979e?0x0:_0x4fa4aa[_0x1d9d('0x1e')];var _0x11c3d8=_0x58979e?_0x54da8a['count']:_0x4fa4aa[_0x1d9d('0x1e')]+_0x4fa4aa[_0x1d9d('0x20')];var _0x247f99;if(_0x11c3d8>=_0x1fe8e9){_0x11c3d8=_0x1fe8e9;_0x247f99=0xc8;}else{_0x247f99=0xce;}_0x5747f5['status'](_0x247f99);return _0x5747f5['set'](_0x1d9d('0x22'),_0x6924b0+'-'+_0x11c3d8+'/'+_0x1fe8e9)['json'](_0x54da8a);}return null;};}function patchUpdates(_0x4d4bba){return function(_0x840041){try{jsonpatch[_0x1d9d('0x23')](_0x840041,_0x4d4bba,!![]);}catch(_0x49c586){return BPromise['reject'](_0x49c586);}return _0x840041[_0x1d9d('0x24')]();};}function saveUpdates(_0x25061d,_0x2b6db8){return function(_0x49b2d5){if(_0x49b2d5){return _0x49b2d5[_0x1d9d('0x25')](_0x25061d)[_0x1d9d('0x26')](function(_0x5d1a87){return _0x5d1a87;});}return null;};}function removeEntity(_0xaf040d,_0x5eb37e){return function(_0x157f1d){if(_0x157f1d){return _0x157f1d[_0x1d9d('0x27')]()['then'](function(){_0xaf040d['status'](0xcc)[_0x1d9d('0x1c')]();});}};}function handleEntityNotFound(_0xfca9e1,_0x366837){return function(_0x17b9a1){if(!_0x17b9a1){_0xfca9e1[_0x1d9d('0x1a')](0x194);}return _0x17b9a1;};}function handleError(_0x2edac0,_0x2372f4){_0x2372f4=_0x2372f4||0x1f4;return function(_0x122cb7){logger[_0x1d9d('0x28')](_0x122cb7[_0x1d9d('0x29')]);if(_0x122cb7['name']){delete _0x122cb7[_0x1d9d('0x2a')];}_0x2edac0[_0x1d9d('0x1b')](_0x2372f4)[_0x1d9d('0x2b')](_0x122cb7);};}exports['index']=function(_0x312248,_0x493547){var _0x4432da={},_0x2b7a64={},_0x16bcd5={'count':0x0,'rows':[]};var _0x26adfa=_[_0x1d9d('0x2c')](db[_0x1d9d('0x2d')][_0x1d9d('0x2e')],function(_0x3e17d7){return{'name':_0x3e17d7[_0x1d9d('0x2f')],'type':_0x3e17d7['type'][_0x1d9d('0x30')]};});_0x2b7a64['model']=_[_0x1d9d('0x2c')](_0x26adfa,_0x1d9d('0x2a'));_0x2b7a64[_0x1d9d('0x31')]=_[_0x1d9d('0x32')](_0x312248[_0x1d9d('0x31')]);_0x2b7a64[_0x1d9d('0x33')]=_[_0x1d9d('0x34')](_0x2b7a64[_0x1d9d('0x35')],_0x2b7a64[_0x1d9d('0x31')]);_0x4432da[_0x1d9d('0x36')]=_['intersection'](_0x2b7a64[_0x1d9d('0x35')],qs['fields'](_0x312248[_0x1d9d('0x31')][_0x1d9d('0x37')]));_0x4432da[_0x1d9d('0x36')]=_0x4432da[_0x1d9d('0x36')][_0x1d9d('0x38')]?_0x4432da[_0x1d9d('0x36')]:_0x2b7a64[_0x1d9d('0x35')];if(!_0x312248['query'][_0x1d9d('0x39')](_0x1d9d('0x3a'))){_0x4432da[_0x1d9d('0x20')]=qs[_0x1d9d('0x20')](_0x312248[_0x1d9d('0x31')][_0x1d9d('0x20')]);_0x4432da[_0x1d9d('0x1e')]=qs['offset'](_0x312248[_0x1d9d('0x31')][_0x1d9d('0x1e')]);}_0x4432da['order']=qs[_0x1d9d('0x3b')](_0x312248[_0x1d9d('0x31')]['sort']);_0x4432da[_0x1d9d('0x3c')]=qs['filters'](_[_0x1d9d('0x3d')](_0x312248['query'],_0x2b7a64[_0x1d9d('0x33')]),_0x26adfa);if(_0x312248[_0x1d9d('0x31')]['filter']){_0x4432da['where']=_[_0x1d9d('0x3e')](_0x4432da[_0x1d9d('0x3c')],{'$or':_[_0x1d9d('0x2c')](_0x26adfa,function(_0x2452f0){if(_0x2452f0[_0x1d9d('0x3f')]!==_0x1d9d('0x40')){var _0x428171={};_0x428171[_0x2452f0[_0x1d9d('0x2a')]]={'$like':'%'+_0x312248['query'][_0x1d9d('0x41')]+'%'};return _0x428171;}})});}_0x4432da=_[_0x1d9d('0x3e')]({},_0x4432da,_0x312248[_0x1d9d('0x42')]);var _0xf77a79={'where':_0x4432da['where']};return db[_0x1d9d('0x2d')]['count'](_0xf77a79)[_0x1d9d('0x26')](function(_0xbaa444){_0x16bcd5[_0x1d9d('0x21')]=_0xbaa444;if(_0x312248[_0x1d9d('0x31')][_0x1d9d('0x43')]){_0x4432da['include']=[{'all':!![]}];}return db[_0x1d9d('0x2d')][_0x1d9d('0x44')](_0x4432da);})['then'](function(_0x3ed6fb){_0x16bcd5[_0x1d9d('0x45')]=_0x3ed6fb;return _0x16bcd5;})[_0x1d9d('0x26')](respondWithFilteredResult(_0x493547,_0x4432da))['catch'](handleError(_0x493547,null));};exports[_0x1d9d('0x46')]=function(_0x5ac060,_0x4d09d1){var _0x14b69a={'raw':![],'where':{'id':_0x5ac060[_0x1d9d('0x47')]['id']}},_0x92f5f1={};_0x92f5f1[_0x1d9d('0x35')]=_[_0x1d9d('0x32')](db[_0x1d9d('0x2d')][_0x1d9d('0x2e')]);_0x92f5f1[_0x1d9d('0x31')]=_[_0x1d9d('0x32')](_0x5ac060[_0x1d9d('0x31')]);_0x92f5f1[_0x1d9d('0x33')]=_['intersection'](_0x92f5f1[_0x1d9d('0x35')],_0x92f5f1[_0x1d9d('0x31')]);_0x14b69a[_0x1d9d('0x36')]=_[_0x1d9d('0x34')](_0x92f5f1['model'],qs[_0x1d9d('0x37')](_0x5ac060[_0x1d9d('0x31')][_0x1d9d('0x37')]));_0x14b69a['attributes']=_0x14b69a[_0x1d9d('0x36')][_0x1d9d('0x38')]?_0x14b69a[_0x1d9d('0x36')]:_0x92f5f1[_0x1d9d('0x35')];if(_0x5ac060[_0x1d9d('0x31')][_0x1d9d('0x43')]){_0x14b69a[_0x1d9d('0x48')]=[{'all':!![]}];}_0x14b69a=_['merge']({},_0x14b69a,_0x5ac060['options']);return db[_0x1d9d('0x2d')][_0x1d9d('0x49')](_0x14b69a)[_0x1d9d('0x26')](handleEntityNotFound(_0x4d09d1,null))['then'](respondWithResult(_0x4d09d1,null))['catch'](handleError(_0x4d09d1,null));};exports[_0x1d9d('0x4a')]=function(_0x482885,_0x512b05){return db[_0x1d9d('0x2d')]['create'](_0x482885[_0x1d9d('0x4b')],{})['then'](respondWithResult(_0x512b05,0xc9))[_0x1d9d('0x4c')](handleError(_0x512b05,null));};exports[_0x1d9d('0x4d')]=function(_0x464ea5,_0x4c3e05){return db['AnalyticFieldReport']['bulkCreate'](_0x464ea5[_0x1d9d('0x4b')],{'raw':![],'individualHooks':!![]})[_0x1d9d('0x26')](respondWithResult(_0x4c3e05,0xc9))[_0x1d9d('0x4c')](handleError(_0x4c3e05,null));};exports[_0x1d9d('0x25')]=function(_0x342f22,_0x317cdf){if(_0x342f22['body']['id']){delete _0x342f22[_0x1d9d('0x4b')]['id'];}return db[_0x1d9d('0x2d')][_0x1d9d('0x49')]({'where':{'id':_0x342f22[_0x1d9d('0x47')]['id']}})[_0x1d9d('0x26')](handleEntityNotFound(_0x317cdf,null))[_0x1d9d('0x26')](saveUpdates(_0x342f22[_0x1d9d('0x4b')],null))[_0x1d9d('0x26')](respondWithResult(_0x317cdf,null))['catch'](handleError(_0x317cdf,null));};exports[_0x1d9d('0x27')]=function(_0x42cf76,_0x5ccc76){return db[_0x1d9d('0x2d')]['find']({'where':{'id':_0x42cf76['params']['id']}})[_0x1d9d('0x26')](handleEntityNotFound(_0x5ccc76,null))[_0x1d9d('0x26')](removeEntity(_0x5ccc76,null))['catch'](handleError(_0x5ccc76,null));};exports[_0x1d9d('0x4e')]=function(_0x202522,_0x3da8b7){return db[_0x1d9d('0x2d')][_0x1d9d('0x27')]({'where':{'id':_0x202522[_0x1d9d('0x31')][_0x1d9d('0x4f')]||[]},'raw':![],'individualHooks':!![]})[_0x1d9d('0x26')](respondWithResult(_0x3da8b7,0xcc))[_0x1d9d('0x4c')](handleError(_0x3da8b7,null));};exports[_0x1d9d('0x50')]=function(_0x5ed99b,_0x45256d,_0x41b921){return db[_0x1d9d('0x51')][_0x1d9d('0x52')]({'where':{'id':_0x5ed99b[_0x1d9d('0x47')]['id']}})[_0x1d9d('0x26')](handleEntityNotFound(_0x45256d,null))[_0x1d9d('0x26')](function(_0x6c0bec){if(_0x6c0bec){return db[_0x1d9d('0x53')][_0x1d9d('0x54')](function(_0x3df8d5){return db[_0x1d9d('0x2d')]['destroy']({'where':{'CustomReportId':_0x5ed99b[_0x1d9d('0x47')]['id']},'transaction':_0x3df8d5})[_0x1d9d('0x26')](function(_0x11daf6){var _0x3c0cc3=_[_0x1d9d('0x2c')](_0x5ed99b[_0x1d9d('0x4b')],function(_0x425e35){delete _0x425e35['id'];_0x425e35['CustomReportId']=_0x5ed99b[_0x1d9d('0x47')]['id'];return _0x425e35;});return db[_0x1d9d('0x2d')]['bulkCreate'](_0x3c0cc3,{'transaction':_0x3df8d5});});})['then'](function(){return db[_0x1d9d('0x2d')]['findAll']({'where':{'CustomReportId':_0x5ed99b[_0x1d9d('0x47')]['id']}});});}})['then'](respondWithResult(_0x45256d,null))['catch'](handleError(_0x45256d,null));};
\ No newline at end of file
index 39d604f..b49ee07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fa4=['analytics_report_fields','util','api','moment','bluebird','request-promise','../../config/environment','./analyticFieldReport.attributes','exports','define','AnalyticFieldReport'];(function(_0x2d2454,_0x3b40c0){var _0x3de56e=function(_0x4eff6f){while(--_0x4eff6f){_0x2d2454['push'](_0x2d2454['shift']());}};_0x3de56e(++_0x3b40c0);}(_0x3fa4,0x177));var _0x43fa=function(_0x3b702c,_0x503f7a){_0x3b702c=_0x3b702c-0x0;var _0x2cd3f9=_0x3fa4[_0x3b702c];return _0x2cd3f9;};'use strict';var _=require('lodash');var util=require(_0x43fa('0x0'));var logger=require('../../config/logger')(_0x43fa('0x1'));var moment=require(_0x43fa('0x2'));var BPromise=require(_0x43fa('0x3'));var rp=require(_0x43fa('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x43fa('0x5'));var attributes=require(_0x43fa('0x6'));module[_0x43fa('0x7')]=function(_0x20307a,_0x3d9ce9){return _0x20307a[_0x43fa('0x8')](_0x43fa('0x9'),attributes,{'tableName':_0x43fa('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe050=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticFieldReport.attributes','exports','util','../../config/logger','api'];(function(_0x819464,_0x46fc91){var _0x49dcc0=function(_0x36b2b2){while(--_0x36b2b2){_0x819464['push'](_0x819464['shift']());}};_0x49dcc0(++_0x46fc91);}(_0xe050,0x97));var _0x0e05=function(_0x3d27b7,_0x6002f4){_0x3d27b7=_0x3d27b7-0x0;var _0x4173e4=_0xe050[_0x3d27b7];return _0x4173e4;};'use strict';var _=require('lodash');var util=require(_0x0e05('0x0'));var logger=require(_0x0e05('0x1'))(_0x0e05('0x2'));var moment=require(_0x0e05('0x3'));var BPromise=require(_0x0e05('0x4'));var rp=require(_0x0e05('0x5'));var fs=require('fs');var path=require(_0x0e05('0x6'));var rimraf=require(_0x0e05('0x7'));var config=require(_0x0e05('0x8'));var attributes=require(_0x0e05('0x9'));module[_0x0e05('0xa')]=function(_0x2ab82e,_0x5c7b8c){return _0x2ab82e['define']('AnalyticFieldReport',attributes,{'tableName':'analytics_report_fields','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7bfa3f0..c344be4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5786=['then','AnalyticFieldReport,\x20%s,\x20%s','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http'];(function(_0x555cdd,_0x220ffd){var _0x1f6f86=function(_0x4ccd74){while(--_0x4ccd74){_0x555cdd['push'](_0x555cdd['shift']());}};_0x1f6f86(++_0x220ffd);}(_0x5786,0x67));var _0x6578=function(_0x48551d,_0x276682){_0x48551d=_0x48551d-0x0;var _0x360e5=_0x5786[_0x48551d];return _0x360e5;};'use strict';var _=require(_0x6578('0x0'));var util=require(_0x6578('0x1'));var moment=require(_0x6578('0x2'));var BPromise=require(_0x6578('0x3'));var rs=require(_0x6578('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6578('0x5'))['db'];var utils=require(_0x6578('0x6'));var logger=require(_0x6578('0x7'))('rpc');var config=require(_0x6578('0x8'));var jayson=require(_0x6578('0x9'));var client=jayson[_0x6578('0xa')][_0x6578('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2a1f0b,_0x538369,_0x5ff5b5){return new BPromise(function(_0x35d96e,_0x390e4c){return client['request'](_0x2a1f0b,_0x5ff5b5)[_0x6578('0xc')](function(_0x2b0247){logger['info'](_0x6578('0xd'),_0x538369,'request\x20sent');logger[_0x6578('0xe')](_0x6578('0xf'),_0x538369,_0x6578('0x10'),JSON[_0x6578('0x11')](_0x2b0247));if(_0x2b0247[_0x6578('0x12')]){if(_0x2b0247[_0x6578('0x12')]['code']===0x1f4){logger['error'](_0x6578('0xd'),_0x538369,_0x2b0247[_0x6578('0x12')][_0x6578('0x13')]);return _0x390e4c(_0x2b0247[_0x6578('0x12')][_0x6578('0x13')]);}logger['error'](_0x6578('0xd'),_0x538369,_0x2b0247[_0x6578('0x12')][_0x6578('0x13')]);return _0x35d96e(_0x2b0247['error'][_0x6578('0x13')]);}else{logger[_0x6578('0x14')](_0x6578('0xd'),_0x538369,'request\x20sent');_0x35d96e(_0x2b0247[_0x6578('0x15')][_0x6578('0x13')]);}})[_0x6578('0x16')](function(_0x11227c){logger[_0x6578('0x12')](_0x6578('0xd'),_0x538369,_0x11227c);_0x390e4c(_0x11227c);});});}
\ No newline at end of file
+var _0x4997=['../../config/utils','rpc','../../config/environment','http','request','then','info','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','AnalyticFieldReport,\x20%s,\x20%s','lodash','util','randomstring','ioredis','../../mysqldb'];(function(_0x23e7c1,_0x35110c){var _0x1add43=function(_0x238918){while(--_0x238918){_0x23e7c1['push'](_0x23e7c1['shift']());}};_0x1add43(++_0x35110c);}(_0x4997,0xb8));var _0x7499=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4997[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7499('0x0'));var util=require(_0x7499('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x7499('0x2'));var fs=require('fs');var Redis=require(_0x7499('0x3'));var db=require(_0x7499('0x4'))['db'];var utils=require(_0x7499('0x5'));var logger=require('../../config/logger')(_0x7499('0x6'));var config=require(_0x7499('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7499('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x341bce,_0x3fb424,_0x242e70){return new BPromise(function(_0x163d5e,_0xf1ca2d){return client[_0x7499('0x9')](_0x341bce,_0x242e70)[_0x7499('0xa')](function(_0x5f0653){logger[_0x7499('0xb')]('AnalyticFieldReport,\x20%s,\x20%s',_0x3fb424,_0x7499('0xc'));logger[_0x7499('0xd')](_0x7499('0xe'),_0x3fb424,_0x7499('0xc'),JSON[_0x7499('0xf')](_0x5f0653));if(_0x5f0653[_0x7499('0x10')]){if(_0x5f0653['error'][_0x7499('0x11')]===0x1f4){logger[_0x7499('0x10')]('AnalyticFieldReport,\x20%s,\x20%s',_0x3fb424,_0x5f0653[_0x7499('0x10')][_0x7499('0x12')]);return _0xf1ca2d(_0x5f0653['error'][_0x7499('0x12')]);}logger['error']('AnalyticFieldReport,\x20%s,\x20%s',_0x3fb424,_0x5f0653[_0x7499('0x10')][_0x7499('0x12')]);return _0x163d5e(_0x5f0653[_0x7499('0x10')][_0x7499('0x12')]);}else{logger[_0x7499('0xb')]('AnalyticFieldReport,\x20%s,\x20%s',_0x3fb424,_0x7499('0xc'));_0x163d5e(_0x5f0653[_0x7499('0x13')]['message']);}})['catch'](function(_0x2e8253){logger[_0x7499('0x10')](_0x7499('0x14'),_0x3fb424,_0x2e8253);_0xf1ca2d(_0x2e8253);});});}
\ No newline at end of file
index 09087da..b6fa9f2 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(_0x4708ea,_0x1bc4b7){var _0x2cb7d1=function(_0x3859b9){while(--_0x3859b9){_0x4708ea['push'](_0x4708ea['shift']());}};_0x2cb7d1(++_0x1bc4b7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xa9e0[_0x187ee1];return _0x388160;};'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(_0x3d0718,_0x4312ff){var _0x88c32b=function(_0x8d22c3){while(--_0x8d22c3){_0x3d0718['push'](_0x3d0718['shift']());}};_0x88c32b(++_0x4312ff);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa9e0[_0x2dafbe];return _0x58a45a;};'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 bbd1785..331be66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cf3=['TEXT','sequelize','exports','STRING','name'];(function(_0x1b9169,_0x40f904){var _0x59ea07=function(_0x4c2bec){while(--_0x4c2bec){_0x1b9169['push'](_0x1b9169['shift']());}};_0x59ea07(++_0x40f904);}(_0x1cf3,0x1be));var _0x31cf=function(_0x502bdc,_0x235ac2){_0x502bdc=_0x502bdc-0x0;var _0x60e375=_0x1cf3[_0x502bdc];return _0x60e375;};'use strict';var Sequelize=require(_0x31cf('0x0'));module[_0x31cf('0x1')]={'name':{'type':Sequelize[_0x31cf('0x2')],'allowNull':![],'unique':_0x31cf('0x3')},'table':{'type':Sequelize['STRING']},'metric':{'type':Sequelize[_0x31cf('0x4')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x47fd=['TEXT','sequelize','exports','STRING','name'];(function(_0x473766,_0x46ead9){var _0x4d1e5a=function(_0x58b056){while(--_0x58b056){_0x473766['push'](_0x473766['shift']());}};_0x4d1e5a(++_0x46ead9);}(_0x47fd,0x13c));var _0xd47f=function(_0x348a50,_0xe211f1){_0x348a50=_0x348a50-0x0;var _0x29beb2=_0x47fd[_0x348a50];return _0x29beb2;};'use strict';var Sequelize=require(_0xd47f('0x0'));module[_0xd47f('0x1')]={'name':{'type':Sequelize[_0xd47f('0x2')],'allowNull':![],'unique':_0xd47f('0x3')},'table':{'type':Sequelize[_0xd47f('0x2')]},'metric':{'type':Sequelize[_0xd47f('0x4')]},'description':{'type':Sequelize[_0xd47f('0x2')]}};
\ No newline at end of file
index f5d2ed6..829c5d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00bb=['create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','body','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../mysqldb','sendStatus','status','json','undefined','limit','offset','apply','reject','update','destroy','get','Metrics','then','stack','name','send','map','AnalyticMetric','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','count','includeAll','include','findAll','rows','catch','show','params','keys','find'];(function(_0xb62f2d,_0x395b4c){var _0x558c14=function(_0x284225){while(--_0x284225){_0xb62f2d['push'](_0xb62f2d['shift']());}};_0x558c14(++_0x395b4c);}(_0x00bb,0x1d8));var _0xb00b=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0x00bb[_0x55f8b4];return _0x2475f9;};'use strict';var emlformat=require(_0xb00b('0x0'));var rimraf=require(_0xb00b('0x1'));var zipdir=require(_0xb00b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb00b('0x3'));var moment=require('moment');var BPromise=require(_0xb00b('0x4'));var Mustache=require(_0xb00b('0x5'));var util=require('util');var path=require(_0xb00b('0x6'));var sox=require(_0xb00b('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb00b('0x8'));var squel=require(_0xb00b('0x9'));var crypto=require(_0xb00b('0xa'));var jsforce=require(_0xb00b('0xb'));var deskjs=require(_0xb00b('0xc'));var toCsv=require(_0xb00b('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb00b('0xe'));var authService=require(_0xb00b('0xf'));var qs=require(_0xb00b('0x10'));var as=require(_0xb00b('0x11'));var hardwareService=require(_0xb00b('0x12'));var logger=require('../../config/logger')(_0xb00b('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb00b('0x14'))['db'];function respondWithStatusCode(_0x2d8ddf,_0x1be8aa){_0x1be8aa=_0x1be8aa||0xcc;return function(_0x466b9b){if(_0x466b9b){return _0x2d8ddf[_0xb00b('0x15')](_0x1be8aa);}return _0x2d8ddf[_0xb00b('0x16')](_0x1be8aa)['end']();};}function respondWithResult(_0x218de2,_0xb0d42e){_0xb0d42e=_0xb0d42e||0xc8;return function(_0x482fe6){if(_0x482fe6){return _0x218de2[_0xb00b('0x16')](_0xb0d42e)[_0xb00b('0x17')](_0x482fe6);}};}function respondWithFilteredResult(_0x540b79,_0x5da36b){return function(_0x9b471e){if(_0x9b471e){var _0x4dcd45=typeof _0x5da36b['offset']===_0xb00b('0x18')&&typeof _0x5da36b[_0xb00b('0x19')]===_0xb00b('0x18');var _0xbb72fc=_0x9b471e['count'];var _0x2a7231=_0x4dcd45?0x0:_0x5da36b['offset'];var _0x415f91=_0x4dcd45?_0x9b471e['count']:_0x5da36b[_0xb00b('0x1a')]+_0x5da36b['limit'];var _0xb26ebb;if(_0x415f91>=_0xbb72fc){_0x415f91=_0xbb72fc;_0xb26ebb=0xc8;}else{_0xb26ebb=0xce;}_0x540b79[_0xb00b('0x16')](_0xb26ebb);return _0x540b79['set']('Content-Range',_0x2a7231+'-'+_0x415f91+'/'+_0xbb72fc)[_0xb00b('0x17')](_0x9b471e);}return null;};}function patchUpdates(_0x4a334b){return function(_0x1344c4){try{jsonpatch[_0xb00b('0x1b')](_0x1344c4,_0x4a334b,!![]);}catch(_0x2fe48d){return BPromise[_0xb00b('0x1c')](_0x2fe48d);}return _0x1344c4['save']();};}function saveUpdates(_0x362ee0,_0x4df284){return function(_0x25a973){if(_0x25a973){return _0x25a973[_0xb00b('0x1d')](_0x362ee0)['then'](function(_0x231293){return _0x231293;});}return null;};}function removeEntity(_0x2896d1,_0x520444){return function(_0x3ab3cc){if(_0x3ab3cc){return _0x3ab3cc[_0xb00b('0x1e')]()['then'](function(){var _0x44efe5=_0x3ab3cc[_0xb00b('0x1f')]({'plain':!![]});var _0x3c9500=_0xb00b('0x20');return db['UserProfileResource']['destroy']({'where':{'type':_0x3c9500,'resourceId':_0x44efe5['id']}})[_0xb00b('0x21')](function(){return _0x3ab3cc;});})['then'](function(){_0x2896d1['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x16ac55,_0x73b6b0){return function(_0x2592cf){if(!_0x2592cf){_0x16ac55[_0xb00b('0x15')](0x194);}return _0x2592cf;};}function handleError(_0x1f14fa,_0x197379){_0x197379=_0x197379||0x1f4;return function(_0x15d3b9){logger['error'](_0x15d3b9[_0xb00b('0x22')]);if(_0x15d3b9['name']){delete _0x15d3b9[_0xb00b('0x23')];}_0x1f14fa[_0xb00b('0x16')](_0x197379)[_0xb00b('0x24')](_0x15d3b9);};}exports['index']=function(_0x2fc11a,_0x280ed3){var _0x16fbd5={},_0x183233={},_0x303625={'count':0x0,'rows':[]};var _0x2b9824=_[_0xb00b('0x25')](db[_0xb00b('0x26')][_0xb00b('0x27')],function(_0x54e247){return{'name':_0x54e247[_0xb00b('0x28')],'type':_0x54e247[_0xb00b('0x29')]['key']};});_0x183233[_0xb00b('0x2a')]=_[_0xb00b('0x25')](_0x2b9824,'name');_0x183233[_0xb00b('0x2b')]=_['keys'](_0x2fc11a[_0xb00b('0x2b')]);_0x183233[_0xb00b('0x2c')]=_[_0xb00b('0x2d')](_0x183233[_0xb00b('0x2a')],_0x183233[_0xb00b('0x2b')]);_0x16fbd5[_0xb00b('0x2e')]=_[_0xb00b('0x2d')](_0x183233['model'],qs['fields'](_0x2fc11a['query'][_0xb00b('0x2f')]));_0x16fbd5[_0xb00b('0x2e')]=_0x16fbd5[_0xb00b('0x2e')][_0xb00b('0x30')]?_0x16fbd5['attributes']:_0x183233[_0xb00b('0x2a')];if(!_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x31')](_0xb00b('0x32'))){_0x16fbd5[_0xb00b('0x19')]=qs[_0xb00b('0x19')](_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x19')]);_0x16fbd5['offset']=qs['offset'](_0x2fc11a[_0xb00b('0x2b')]['offset']);}_0x16fbd5[_0xb00b('0x33')]=qs[_0xb00b('0x34')](_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x34')]);_0x16fbd5[_0xb00b('0x35')]=qs[_0xb00b('0x2c')](_[_0xb00b('0x36')](_0x2fc11a['query'],_0x183233[_0xb00b('0x2c')]),_0x2b9824);if(_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x37')]){_0x16fbd5[_0xb00b('0x35')]=_[_0xb00b('0x38')](_0x16fbd5[_0xb00b('0x35')],{'$or':_['map'](_0x2b9824,function(_0x36980a){if(_0x36980a[_0xb00b('0x29')]!=='VIRTUAL'){var _0x17ff34={};_0x17ff34[_0x36980a[_0xb00b('0x23')]]={'$like':'%'+_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x37')]+'%'};return _0x17ff34;}})});}_0x16fbd5=_[_0xb00b('0x38')]({},_0x16fbd5,_0x2fc11a['options']);var _0x14ff6a={'where':_0x16fbd5[_0xb00b('0x35')]};return db[_0xb00b('0x26')][_0xb00b('0x39')](_0x14ff6a)['then'](function(_0x4867fe){_0x303625[_0xb00b('0x39')]=_0x4867fe;if(_0x2fc11a[_0xb00b('0x2b')][_0xb00b('0x3a')]){_0x16fbd5[_0xb00b('0x3b')]=[{'all':!![]}];}return db[_0xb00b('0x26')][_0xb00b('0x3c')](_0x16fbd5);})[_0xb00b('0x21')](function(_0x493841){_0x303625[_0xb00b('0x3d')]=_0x493841;return _0x303625;})[_0xb00b('0x21')](respondWithFilteredResult(_0x280ed3,_0x16fbd5))[_0xb00b('0x3e')](handleError(_0x280ed3,null));};exports[_0xb00b('0x3f')]=function(_0x302ded,_0x1dc4c5){var _0x2e3d83={'raw':!![],'where':{'id':_0x302ded[_0xb00b('0x40')]['id']}},_0x974a29={};_0x974a29[_0xb00b('0x2a')]=_[_0xb00b('0x41')](db[_0xb00b('0x26')]['rawAttributes']);_0x974a29[_0xb00b('0x2b')]=_[_0xb00b('0x41')](_0x302ded[_0xb00b('0x2b')]);_0x974a29[_0xb00b('0x2c')]=_[_0xb00b('0x2d')](_0x974a29[_0xb00b('0x2a')],_0x974a29[_0xb00b('0x2b')]);_0x2e3d83[_0xb00b('0x2e')]=_[_0xb00b('0x2d')](_0x974a29[_0xb00b('0x2a')],qs[_0xb00b('0x2f')](_0x302ded[_0xb00b('0x2b')]['fields']));_0x2e3d83['attributes']=_0x2e3d83['attributes'][_0xb00b('0x30')]?_0x2e3d83[_0xb00b('0x2e')]:_0x974a29['model'];if(_0x302ded[_0xb00b('0x2b')][_0xb00b('0x3a')]){_0x2e3d83[_0xb00b('0x3b')]=[{'all':!![]}];}_0x2e3d83=_[_0xb00b('0x38')]({},_0x2e3d83,_0x302ded['options']);return db['AnalyticMetric'][_0xb00b('0x42')](_0x2e3d83)[_0xb00b('0x21')](handleEntityNotFound(_0x1dc4c5,null))['then'](respondWithResult(_0x1dc4c5,null))['catch'](handleError(_0x1dc4c5,null));};exports[_0xb00b('0x43')]=function(_0x3a205d,_0x4e0be4){return db[_0xb00b('0x26')]['create'](_0x3a205d['body'],{})['then'](function(_0x465d90){var _0x481515=_0x3a205d[_0xb00b('0x44')][_0xb00b('0x1f')]({'plain':!![]});if(!_0x481515)throw new Error(_0xb00b('0x45'));if(_0x481515[_0xb00b('0x46')]===_0xb00b('0x44')){var _0xda60ca=_0x465d90['get']({'plain':!![]});var _0x5bd40c=_0xb00b('0x20');return db[_0xb00b('0x47')]['find']({'where':{'name':_0x5bd40c,'userProfileId':_0x481515[_0xb00b('0x48')]},'raw':!![]})[_0xb00b('0x21')](function(_0x57f6ab){if(_0x57f6ab&&_0x57f6ab[_0xb00b('0x49')]===0x0){return db[_0xb00b('0x4a')][_0xb00b('0x43')]({'name':_0xda60ca['name'],'resourceId':_0xda60ca['id'],'type':_0x57f6ab['name'],'sectionId':_0x57f6ab['id']},{})[_0xb00b('0x21')](function(){return _0x465d90;});}else{return _0x465d90;}})[_0xb00b('0x3e')](function(_0x12737d){logger[_0xb00b('0x4b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x12737d);throw _0x12737d;});}return _0x465d90;})[_0xb00b('0x21')](respondWithResult(_0x4e0be4,0xc9))[_0xb00b('0x3e')](handleError(_0x4e0be4,null));};exports['update']=function(_0x4cd9fd,_0x160965){if(_0x4cd9fd['body']['id']){delete _0x4cd9fd[_0xb00b('0x4c')]['id'];}return db[_0xb00b('0x26')][_0xb00b('0x42')]({'where':{'id':_0x4cd9fd[_0xb00b('0x40')]['id']}})[_0xb00b('0x21')](handleEntityNotFound(_0x160965,null))[_0xb00b('0x21')](saveUpdates(_0x4cd9fd['body'],null))[_0xb00b('0x21')](respondWithResult(_0x160965,null))['catch'](handleError(_0x160965,null));};exports[_0xb00b('0x1e')]=function(_0x98caa9,_0x4129ba){return db['AnalyticMetric'][_0xb00b('0x42')]({'where':{'id':_0x98caa9[_0xb00b('0x40')]['id']}})[_0xb00b('0x21')](handleEntityNotFound(_0x4129ba,null))['then'](removeEntity(_0x4129ba,null))[_0xb00b('0x3e')](handleError(_0x4129ba,null));};
\ No newline at end of file
+var _0x84ab=['UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','squel','jsforce','desk.js','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','update','then','destroy','get','Metrics','UserProfileResource','error','stack','name','map','AnalyticMetric','rawAttributes','fieldName','key','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','filter','type','VIRTUAL','includeAll','include','catch','show','params','keys','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user'];(function(_0x3efe87,_0x35ad48){var _0x56a4cc=function(_0x47869e){while(--_0x47869e){_0x3efe87['push'](_0x3efe87['shift']());}};_0x56a4cc(++_0x35ad48);}(_0x84ab,0x12f));var _0xb84a=function(_0x296754,_0x5befe9){_0x296754=_0x296754-0x0;var _0x1d9f1d=_0x84ab[_0x296754];return _0x1d9f1d;};'use strict';var emlformat=require(_0xb84a('0x0'));var rimraf=require(_0xb84a('0x1'));var zipdir=require(_0xb84a('0x2'));var jsonpatch=require(_0xb84a('0x3'));var rp=require(_0xb84a('0x4'));var moment=require('moment');var BPromise=require(_0xb84a('0x5'));var Mustache=require(_0xb84a('0x6'));var util=require('util');var path=require(_0xb84a('0x7'));var sox=require(_0xb84a('0x8'));var csv=require(_0xb84a('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xb84a('0xa'));var crypto=require('crypto');var jsforce=require(_0xb84a('0xb'));var deskjs=require(_0xb84a('0xc'));var toCsv=require('to-csv');var querystring=require(_0xb84a('0xd'));var Papa=require('papaparse');var Redis=require(_0xb84a('0xe'));var authService=require(_0xb84a('0xf'));var qs=require(_0xb84a('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb84a('0x11'));var utils=require(_0xb84a('0x12'));var config=require(_0xb84a('0x13'));var licenseUtil=require(_0xb84a('0x14'));var db=require(_0xb84a('0x15'))['db'];function respondWithStatusCode(_0x4d3758,_0x83444e){_0x83444e=_0x83444e||0xcc;return function(_0x4777dc){if(_0x4777dc){return _0x4d3758[_0xb84a('0x16')](_0x83444e);}return _0x4d3758[_0xb84a('0x17')](_0x83444e)[_0xb84a('0x18')]();};}function respondWithResult(_0x11dfe9,_0x12ccab){_0x12ccab=_0x12ccab||0xc8;return function(_0x475b){if(_0x475b){return _0x11dfe9[_0xb84a('0x17')](_0x12ccab)[_0xb84a('0x19')](_0x475b);}};}function respondWithFilteredResult(_0xc0b2e0,_0x1251ec){return function(_0x5716bd){if(_0x5716bd){var _0x11dd4d=typeof _0x1251ec[_0xb84a('0x1a')]===_0xb84a('0x1b')&&typeof _0x1251ec[_0xb84a('0x1c')]===_0xb84a('0x1b');var _0x1be87a=_0x5716bd[_0xb84a('0x1d')];var _0x34d82f=_0x11dd4d?0x0:_0x1251ec[_0xb84a('0x1a')];var _0x3f7437=_0x11dd4d?_0x5716bd[_0xb84a('0x1d')]:_0x1251ec[_0xb84a('0x1a')]+_0x1251ec[_0xb84a('0x1c')];var _0x200289;if(_0x3f7437>=_0x1be87a){_0x3f7437=_0x1be87a;_0x200289=0xc8;}else{_0x200289=0xce;}_0xc0b2e0['status'](_0x200289);return _0xc0b2e0[_0xb84a('0x1e')](_0xb84a('0x1f'),_0x34d82f+'-'+_0x3f7437+'/'+_0x1be87a)['json'](_0x5716bd);}return null;};}function patchUpdates(_0xac76d3){return function(_0x61ef03){try{jsonpatch[_0xb84a('0x20')](_0x61ef03,_0xac76d3,!![]);}catch(_0x19f637){return BPromise['reject'](_0x19f637);}return _0x61ef03['save']();};}function saveUpdates(_0x1466ae,_0x19097d){return function(_0x2d70fd){if(_0x2d70fd){return _0x2d70fd[_0xb84a('0x21')](_0x1466ae)[_0xb84a('0x22')](function(_0x3b8fb2){return _0x3b8fb2;});}return null;};}function removeEntity(_0x8b28cd,_0x21d0d3){return function(_0x3aa06f){if(_0x3aa06f){return _0x3aa06f[_0xb84a('0x23')]()[_0xb84a('0x22')](function(){var _0x1aab7d=_0x3aa06f[_0xb84a('0x24')]({'plain':!![]});var _0x409df0=_0xb84a('0x25');return db[_0xb84a('0x26')][_0xb84a('0x23')]({'where':{'type':_0x409df0,'resourceId':_0x1aab7d['id']}})[_0xb84a('0x22')](function(){return _0x3aa06f;});})[_0xb84a('0x22')](function(){_0x8b28cd[_0xb84a('0x17')](0xcc)[_0xb84a('0x18')]();});}};}function handleEntityNotFound(_0x1db72c,_0x2fe40d){return function(_0x35d1f7){if(!_0x35d1f7){_0x1db72c[_0xb84a('0x16')](0x194);}return _0x35d1f7;};}function handleError(_0x97d71b,_0x5349ea){_0x5349ea=_0x5349ea||0x1f4;return function(_0x582954){logger[_0xb84a('0x27')](_0x582954[_0xb84a('0x28')]);if(_0x582954['name']){delete _0x582954[_0xb84a('0x29')];}_0x97d71b[_0xb84a('0x17')](_0x5349ea)['send'](_0x582954);};}exports['index']=function(_0x28f2e7,_0x8e9319){var _0x49ba3d={},_0x251778={},_0xba1147={'count':0x0,'rows':[]};var _0x3abc22=_[_0xb84a('0x2a')](db[_0xb84a('0x2b')][_0xb84a('0x2c')],function(_0x34b212){return{'name':_0x34b212[_0xb84a('0x2d')],'type':_0x34b212['type'][_0xb84a('0x2e')]};});_0x251778['model']=_['map'](_0x3abc22,_0xb84a('0x29'));_0x251778[_0xb84a('0x2f')]=_['keys'](_0x28f2e7['query']);_0x251778[_0xb84a('0x30')]=_[_0xb84a('0x31')](_0x251778[_0xb84a('0x32')],_0x251778[_0xb84a('0x2f')]);_0x49ba3d[_0xb84a('0x33')]=_[_0xb84a('0x31')](_0x251778[_0xb84a('0x32')],qs[_0xb84a('0x34')](_0x28f2e7['query'][_0xb84a('0x34')]));_0x49ba3d[_0xb84a('0x33')]=_0x49ba3d[_0xb84a('0x33')][_0xb84a('0x35')]?_0x49ba3d[_0xb84a('0x33')]:_0x251778[_0xb84a('0x32')];if(!_0x28f2e7[_0xb84a('0x2f')]['hasOwnProperty'](_0xb84a('0x36'))){_0x49ba3d['limit']=qs[_0xb84a('0x1c')](_0x28f2e7[_0xb84a('0x2f')][_0xb84a('0x1c')]);_0x49ba3d['offset']=qs['offset'](_0x28f2e7[_0xb84a('0x2f')][_0xb84a('0x1a')]);}_0x49ba3d[_0xb84a('0x37')]=qs[_0xb84a('0x38')](_0x28f2e7[_0xb84a('0x2f')]['sort']);_0x49ba3d[_0xb84a('0x39')]=qs[_0xb84a('0x30')](_['pick'](_0x28f2e7[_0xb84a('0x2f')],_0x251778[_0xb84a('0x30')]),_0x3abc22);if(_0x28f2e7[_0xb84a('0x2f')][_0xb84a('0x3a')]){_0x49ba3d['where']=_['merge'](_0x49ba3d['where'],{'$or':_[_0xb84a('0x2a')](_0x3abc22,function(_0x11e1ac){if(_0x11e1ac[_0xb84a('0x3b')]!==_0xb84a('0x3c')){var _0x55b0b8={};_0x55b0b8[_0x11e1ac[_0xb84a('0x29')]]={'$like':'%'+_0x28f2e7['query'][_0xb84a('0x3a')]+'%'};return _0x55b0b8;}})});}_0x49ba3d=_['merge']({},_0x49ba3d,_0x28f2e7['options']);var _0x59d7a1={'where':_0x49ba3d[_0xb84a('0x39')]};return db[_0xb84a('0x2b')][_0xb84a('0x1d')](_0x59d7a1)[_0xb84a('0x22')](function(_0x5e547e){_0xba1147[_0xb84a('0x1d')]=_0x5e547e;if(_0x28f2e7[_0xb84a('0x2f')][_0xb84a('0x3d')]){_0x49ba3d[_0xb84a('0x3e')]=[{'all':!![]}];}return db['AnalyticMetric']['findAll'](_0x49ba3d);})[_0xb84a('0x22')](function(_0x1f3e04){_0xba1147['rows']=_0x1f3e04;return _0xba1147;})[_0xb84a('0x22')](respondWithFilteredResult(_0x8e9319,_0x49ba3d))[_0xb84a('0x3f')](handleError(_0x8e9319,null));};exports[_0xb84a('0x40')]=function(_0x25280a,_0x3f005b){var _0x241536={'raw':!![],'where':{'id':_0x25280a[_0xb84a('0x41')]['id']}},_0x24d700={};_0x24d700[_0xb84a('0x32')]=_[_0xb84a('0x42')](db[_0xb84a('0x2b')][_0xb84a('0x2c')]);_0x24d700[_0xb84a('0x2f')]=_[_0xb84a('0x42')](_0x25280a[_0xb84a('0x2f')]);_0x24d700['filters']=_[_0xb84a('0x31')](_0x24d700[_0xb84a('0x32')],_0x24d700[_0xb84a('0x2f')]);_0x241536[_0xb84a('0x33')]=_[_0xb84a('0x31')](_0x24d700[_0xb84a('0x32')],qs['fields'](_0x25280a[_0xb84a('0x2f')]['fields']));_0x241536[_0xb84a('0x33')]=_0x241536[_0xb84a('0x33')][_0xb84a('0x35')]?_0x241536[_0xb84a('0x33')]:_0x24d700['model'];if(_0x25280a[_0xb84a('0x2f')][_0xb84a('0x3d')]){_0x241536[_0xb84a('0x3e')]=[{'all':!![]}];}_0x241536=_['merge']({},_0x241536,_0x25280a['options']);return db[_0xb84a('0x2b')][_0xb84a('0x43')](_0x241536)[_0xb84a('0x22')](handleEntityNotFound(_0x3f005b,null))['then'](respondWithResult(_0x3f005b,null))['catch'](handleError(_0x3f005b,null));};exports['create']=function(_0x45630d,_0x384a0d){return db[_0xb84a('0x2b')][_0xb84a('0x44')](_0x45630d[_0xb84a('0x45')],{})['then'](function(_0x4b40fe){var _0x5b853a=_0x45630d['user'][_0xb84a('0x24')]({'plain':!![]});if(!_0x5b853a)throw new Error(_0xb84a('0x46'));if(_0x5b853a['role']===_0xb84a('0x47')){var _0xc8bac2=_0x4b40fe[_0xb84a('0x24')]({'plain':!![]});var _0x2f70f0=_0xb84a('0x25');return db[_0xb84a('0x48')]['find']({'where':{'name':_0x2f70f0,'userProfileId':_0x5b853a['userProfileId']},'raw':!![]})[_0xb84a('0x22')](function(_0x50172a){if(_0x50172a&&_0x50172a[_0xb84a('0x49')]===0x0){return db['UserProfileResource']['create']({'name':_0xc8bac2['name'],'resourceId':_0xc8bac2['id'],'type':_0x50172a[_0xb84a('0x29')],'sectionId':_0x50172a['id']},{})[_0xb84a('0x22')](function(){return _0x4b40fe;});}else{return _0x4b40fe;}})[_0xb84a('0x3f')](function(_0x25b6a0){logger[_0xb84a('0x27')](_0xb84a('0x4a'),_0x25b6a0);throw _0x25b6a0;});}return _0x4b40fe;})[_0xb84a('0x22')](respondWithResult(_0x384a0d,0xc9))[_0xb84a('0x3f')](handleError(_0x384a0d,null));};exports['update']=function(_0x5afdd0,_0x4c5bdf){if(_0x5afdd0[_0xb84a('0x45')]['id']){delete _0x5afdd0[_0xb84a('0x45')]['id'];}return db['AnalyticMetric'][_0xb84a('0x43')]({'where':{'id':_0x5afdd0['params']['id']}})['then'](handleEntityNotFound(_0x4c5bdf,null))['then'](saveUpdates(_0x5afdd0[_0xb84a('0x45')],null))[_0xb84a('0x22')](respondWithResult(_0x4c5bdf,null))[_0xb84a('0x3f')](handleError(_0x4c5bdf,null));};exports['destroy']=function(_0x5f757e,_0x2e98bf){return db[_0xb84a('0x2b')]['find']({'where':{'id':_0x5f757e[_0xb84a('0x41')]['id']}})['then'](handleEntityNotFound(_0x2e98bf,null))['then'](removeEntity(_0x2e98bf,null))[_0xb84a('0x3f')](handleError(_0x2e98bf,null));};
\ No newline at end of file
index efeff15..b192ad1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1aa=['bluebird','request-promise','path','rimraf','../../config/environment','./analyticMetric.attributes','exports','define','analytics_metrics','lodash','util','api'];(function(_0x4d2263,_0x3fbf0d){var _0x24aba0=function(_0x389a59){while(--_0x389a59){_0x4d2263['push'](_0x4d2263['shift']());}};_0x24aba0(++_0x3fbf0d);}(_0xb1aa,0x159));var _0xab1a=function(_0x5309,_0x6fe8){_0x5309=_0x5309-0x0;var _0x589511=_0xb1aa[_0x5309];return _0x589511;};'use strict';var _=require(_0xab1a('0x0'));var util=require(_0xab1a('0x1'));var logger=require('../../config/logger')(_0xab1a('0x2'));var moment=require('moment');var BPromise=require(_0xab1a('0x3'));var rp=require(_0xab1a('0x4'));var fs=require('fs');var path=require(_0xab1a('0x5'));var rimraf=require(_0xab1a('0x6'));var config=require(_0xab1a('0x7'));var attributes=require(_0xab1a('0x8'));module[_0xab1a('0x9')]=function(_0x6fcb8,_0x38b3c8){return _0x6fcb8[_0xab1a('0xa')]('AnalyticMetric',attributes,{'tableName':_0xab1a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1115=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','AnalyticMetric','analytics_metrics','util','../../config/logger'];(function(_0x5edfcf,_0x2004eb){var _0x52e1ca=function(_0x1d9997){while(--_0x1d9997){_0x5edfcf['push'](_0x5edfcf['shift']());}};_0x52e1ca(++_0x2004eb);}(_0x1115,0x1b6));var _0x5111=function(_0x1fdbe8,_0x57b9e4){_0x1fdbe8=_0x1fdbe8-0x0;var _0x2b4f22=_0x1115[_0x1fdbe8];return _0x2b4f22;};'use strict';var _=require('lodash');var util=require(_0x5111('0x0'));var logger=require(_0x5111('0x1'))(_0x5111('0x2'));var moment=require(_0x5111('0x3'));var BPromise=require(_0x5111('0x4'));var rp=require(_0x5111('0x5'));var fs=require('fs');var path=require(_0x5111('0x6'));var rimraf=require(_0x5111('0x7'));var config=require(_0x5111('0x8'));var attributes=require('./analyticMetric.attributes');module['exports']=function(_0x467c3a,_0x115ba7){return _0x467c3a['define'](_0x5111('0x9'),attributes,{'tableName':_0x5111('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3e03ba8..7d1ada6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeca9=['request\x20sent','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','AnalyticMetric,\x20%s,\x20%s'];(function(_0x1e7b16,_0x4607a1){var _0x37fadc=function(_0x1fc9ce){while(--_0x1fc9ce){_0x1e7b16['push'](_0x1e7b16['shift']());}};_0x37fadc(++_0x4607a1);}(_0xeca9,0x1bf));var _0x9eca=function(_0x7604a8,_0x456695){_0x7604a8=_0x7604a8-0x0;var _0x14ed94=_0xeca9[_0x7604a8];return _0x14ed94;};'use strict';var _=require(_0x9eca('0x0'));var util=require('util');var moment=require(_0x9eca('0x1'));var BPromise=require(_0x9eca('0x2'));var rs=require(_0x9eca('0x3'));var fs=require('fs');var Redis=require(_0x9eca('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x9eca('0x5'));var logger=require(_0x9eca('0x6'))(_0x9eca('0x7'));var config=require(_0x9eca('0x8'));var jayson=require(_0x9eca('0x9'));var client=jayson[_0x9eca('0xa')][_0x9eca('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5f4eaa,_0x375636,_0x583b1c){return new BPromise(function(_0x139502,_0x1dabaa){return client[_0x9eca('0xc')](_0x5f4eaa,_0x583b1c)['then'](function(_0x366391){logger[_0x9eca('0xd')](_0x9eca('0xe'),_0x375636,_0x9eca('0xf'));logger['debug'](_0x9eca('0x10'),_0x375636,_0x9eca('0xf'),JSON[_0x9eca('0x11')](_0x366391));if(_0x366391[_0x9eca('0x12')]){if(_0x366391[_0x9eca('0x12')][_0x9eca('0x13')]===0x1f4){logger[_0x9eca('0x12')](_0x9eca('0xe'),_0x375636,_0x366391[_0x9eca('0x12')][_0x9eca('0x14')]);return _0x1dabaa(_0x366391['error']['message']);}logger[_0x9eca('0x12')](_0x9eca('0xe'),_0x375636,_0x366391[_0x9eca('0x12')][_0x9eca('0x14')]);return _0x139502(_0x366391[_0x9eca('0x12')][_0x9eca('0x14')]);}else{logger['info']('AnalyticMetric,\x20%s,\x20%s',_0x375636,_0x9eca('0xf'));_0x139502(_0x366391['result']['message']);}})[_0x9eca('0x15')](function(_0x17cd5f){logger[_0x9eca('0x12')](_0x9eca('0xe'),_0x375636,_0x17cd5f);_0x1dabaa(_0x17cd5f);});});}
\ No newline at end of file
+var _0xa425=['../../config/environment','jayson/promise','request','then','info','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','error','message','AnalyticMetric,\x20%s,\x20%s','result','catch','lodash','moment','randomstring','../../mysqldb','../../config/logger','rpc'];(function(_0x65e304,_0x151944){var _0x4c376f=function(_0x316f5f){while(--_0x316f5f){_0x65e304['push'](_0x65e304['shift']());}};_0x4c376f(++_0x151944);}(_0xa425,0x1af));var _0x5a42=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa425[_0x47b58b];return _0x46bebe;};'use strict';var _=require(_0x5a42('0x0'));var util=require('util');var moment=require(_0x5a42('0x1'));var BPromise=require('bluebird');var rs=require(_0x5a42('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5a42('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x5a42('0x4'))(_0x5a42('0x5'));var config=require(_0x5a42('0x6'));var jayson=require(_0x5a42('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1e1f06,_0x1cc3bc,_0x3bfe0a){return new BPromise(function(_0x3d10e2,_0x1e1772){return client[_0x5a42('0x8')](_0x1e1f06,_0x3bfe0a)[_0x5a42('0x9')](function(_0x3f0cc8){logger[_0x5a42('0xa')]('AnalyticMetric,\x20%s,\x20%s',_0x1cc3bc,_0x5a42('0xb'));logger[_0x5a42('0xc')](_0x5a42('0xd'),_0x1cc3bc,_0x5a42('0xb'),JSON['stringify'](_0x3f0cc8));if(_0x3f0cc8[_0x5a42('0xe')]){if(_0x3f0cc8[_0x5a42('0xe')]['code']===0x1f4){logger[_0x5a42('0xe')]('AnalyticMetric,\x20%s,\x20%s',_0x1cc3bc,_0x3f0cc8['error']['message']);return _0x1e1772(_0x3f0cc8[_0x5a42('0xe')][_0x5a42('0xf')]);}logger[_0x5a42('0xe')](_0x5a42('0x10'),_0x1cc3bc,_0x3f0cc8[_0x5a42('0xe')][_0x5a42('0xf')]);return _0x3d10e2(_0x3f0cc8['error'][_0x5a42('0xf')]);}else{logger['info']('AnalyticMetric,\x20%s,\x20%s',_0x1cc3bc,_0x5a42('0xb'));_0x3d10e2(_0x3f0cc8[_0x5a42('0x11')][_0x5a42('0xf')]);}})[_0x5a42('0x12')](function(_0x1aa304){logger[_0x5a42('0xe')]('AnalyticMetric,\x20%s,\x20%s',_0x1cc3bc,_0x1aa304);_0x1e1772(_0x1aa304);});});}
\ No newline at end of file
index 4f22a5c..9b40bdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa5c=['delete','destroy','multer','util','path','connect-timeout','../../components/interaction/service','get','isAuthenticated','index','/:id','show','post','create','put','update'];(function(_0x150854,_0x1e82ea){var _0x3bed25=function(_0x5151ac){while(--_0x5151ac){_0x150854['push'](_0x150854['shift']());}};_0x3bed25(++_0x1e82ea);}(_0xaa5c,0x1f2));var _0xcaa5=function(_0x2a44be,_0x408c61){_0x2a44be=_0x2a44be-0x0;var _0x4a2cee=_0xaa5c[_0x2a44be];return _0x4a2cee;};'use strict';var multer=require(_0xcaa5('0x0'));var util=require(_0xcaa5('0x1'));var path=require(_0xcaa5('0x2'));var timeout=require(_0xcaa5('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xcaa5('0x4'));var config=require('../../config/environment');var controller=require('./analyticMetric.controller');router[_0xcaa5('0x5')]('/',auth[_0xcaa5('0x6')](),controller[_0xcaa5('0x7')]);router['get'](_0xcaa5('0x8'),auth[_0xcaa5('0x6')](),controller[_0xcaa5('0x9')]);router[_0xcaa5('0xa')]('/',auth['isAuthenticated'](),controller[_0xcaa5('0xb')]);router[_0xcaa5('0xc')]('/:id',auth['isAuthenticated'](),controller[_0xcaa5('0xd')]);router[_0xcaa5('0xe')](_0xcaa5('0x8'),auth['isAuthenticated'](),controller[_0xcaa5('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x0dec=['update','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated','index','/:id','show','post','create','put'];(function(_0x215cbe,_0x24c464){var _0x20f281=function(_0x1ec394){while(--_0x1ec394){_0x215cbe['push'](_0x215cbe['shift']());}};_0x20f281(++_0x24c464);}(_0x0dec,0x11c));var _0xc0de=function(_0x153f67,_0x59061c){_0x153f67=_0x153f67-0x0;var _0x1f0c4f=_0x0dec[_0x153f67];return _0x1f0c4f;};'use strict';var multer=require(_0xc0de('0x0'));var util=require(_0xc0de('0x1'));var path=require(_0xc0de('0x2'));var timeout=require(_0xc0de('0x3'));var express=require('express');var router=express[_0xc0de('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xc0de('0x5'));var config=require(_0xc0de('0x6'));var controller=require(_0xc0de('0x7'));router[_0xc0de('0x8')]('/',auth[_0xc0de('0x9')](),controller[_0xc0de('0xa')]);router[_0xc0de('0x8')](_0xc0de('0xb'),auth[_0xc0de('0x9')](),controller[_0xc0de('0xc')]);router[_0xc0de('0xd')]('/',auth[_0xc0de('0x9')](),controller[_0xc0de('0xe')]);router[_0xc0de('0xf')](_0xc0de('0xb'),auth[_0xc0de('0x9')](),controller[_0xc0de('0x10')]);router[_0xc0de('0x11')](_0xc0de('0xb'),auth[_0xc0de('0x9')](),controller[_0xc0de('0x12')]);module[_0xc0de('0x13')]=router;
\ No newline at end of file
index 23f2034..ff1a4cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xade8=['TEXT','sequelize','exports'];(function(_0x74e8b5,_0x190ea8){var _0xa0f960=function(_0x37581d){while(--_0x37581d){_0x74e8b5['push'](_0x74e8b5['shift']());}};_0xa0f960(++_0x190ea8);}(_0xade8,0x70));var _0x8ade=function(_0x5c0ba3,_0x1b4f6f){_0x5c0ba3=_0x5c0ba3-0x0;var _0x5015f3=_0xade8[_0x5c0ba3];return _0x5015f3;};'use strict';var Sequelize=require(_0x8ade('0x0'));module[_0x8ade('0x1')]={'tree':{'type':Sequelize[_0x8ade('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x2fca=['sequelize'];(function(_0x3a2010,_0x182353){var _0x171d95=function(_0x64f22a){while(--_0x64f22a){_0x3a2010['push'](_0x3a2010['shift']());}};_0x171d95(++_0x182353);}(_0x2fca,0x17a));var _0xa2fc=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x2fca[_0x3ab51d];return _0x29a04e;};'use strict';var Sequelize=require(_0xa2fc('0x0'));module['exports']={'tree':{'type':Sequelize['TEXT'],'allowNull':![]}};
\ No newline at end of file
index 8d7faa9..fa0d9c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd56c=['params','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','error','stack','name','send','index','rawAttributes','fieldName','type','key','query','filters','intersection','model','fields','attributes','sort','merge','where','VIRTUAL','filter','AnalyticTreeReport','findAll','rows','show','include','options','find','catch','create','body'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd56c,0x122));var _0xcd56=function(_0x4c7cf6,_0x55daa3){_0x4c7cf6=_0x4c7cf6-0x0;var _0x1fc227=_0xd56c[_0x4c7cf6];return _0x1fc227;};'use strict';var emlformat=require(_0xcd56('0x0'));var rimraf=require(_0xcd56('0x1'));var zipdir=require(_0xcd56('0x2'));var jsonpatch=require(_0xcd56('0x3'));var rp=require(_0xcd56('0x4'));var moment=require('moment');var BPromise=require(_0xcd56('0x5'));var Mustache=require('mustache');var util=require(_0xcd56('0x6'));var path=require(_0xcd56('0x7'));var sox=require(_0xcd56('0x8'));var csv=require(_0xcd56('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcd56('0xa'));var _=require('lodash');var squel=require(_0xcd56('0xb'));var crypto=require(_0xcd56('0xc'));var jsforce=require(_0xcd56('0xd'));var deskjs=require(_0xcd56('0xe'));var toCsv=require(_0xcd56('0x9'));var querystring=require(_0xcd56('0xf'));var Papa=require(_0xcd56('0x10'));var Redis=require(_0xcd56('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xcd56('0x12'));var as=require(_0xcd56('0x13'));var hardwareService=require(_0xcd56('0x14'));var logger=require(_0xcd56('0x15'))(_0xcd56('0x16'));var utils=require(_0xcd56('0x17'));var config=require(_0xcd56('0x18'));var licenseUtil=require(_0xcd56('0x19'));var db=require(_0xcd56('0x1a'))['db'];function respondWithStatusCode(_0x209a17,_0x3125b2){_0x3125b2=_0x3125b2||0xcc;return function(_0x5f04fd){if(_0x5f04fd){return _0x209a17[_0xcd56('0x1b')](_0x3125b2);}return _0x209a17[_0xcd56('0x1c')](_0x3125b2)[_0xcd56('0x1d')]();};}function respondWithResult(_0x1412bb,_0x5521ff){_0x5521ff=_0x5521ff||0xc8;return function(_0x3c16fe){if(_0x3c16fe){return _0x1412bb['status'](_0x5521ff)[_0xcd56('0x1e')](_0x3c16fe);}};}function respondWithFilteredResult(_0x1f69b1,_0x30037f){return function(_0x59494a){if(_0x59494a){var _0x227da8=typeof _0x30037f[_0xcd56('0x1f')]===_0xcd56('0x20')&&typeof _0x30037f[_0xcd56('0x21')]===_0xcd56('0x20');var _0x14c23c=_0x59494a['count'];var _0x42ff5d=_0x227da8?0x0:_0x30037f[_0xcd56('0x1f')];var _0x268066=_0x227da8?_0x59494a[_0xcd56('0x22')]:_0x30037f[_0xcd56('0x1f')]+_0x30037f['limit'];var _0x52758b;if(_0x268066>=_0x14c23c){_0x268066=_0x14c23c;_0x52758b=0xc8;}else{_0x52758b=0xce;}_0x1f69b1[_0xcd56('0x1c')](_0x52758b);return _0x1f69b1['set'](_0xcd56('0x23'),_0x42ff5d+'-'+_0x268066+'/'+_0x14c23c)['json'](_0x59494a);}return null;};}function patchUpdates(_0x3773ce){return function(_0x334a45){try{jsonpatch[_0xcd56('0x24')](_0x334a45,_0x3773ce,!![]);}catch(_0x2ec6fe){return BPromise[_0xcd56('0x25')](_0x2ec6fe);}return _0x334a45['save']();};}function saveUpdates(_0x10dd2f,_0x49e01b){return function(_0x3f55cb){if(_0x3f55cb){return _0x3f55cb[_0xcd56('0x26')](_0x10dd2f)[_0xcd56('0x27')](function(_0x30980d){return _0x30980d;});}return null;};}function removeEntity(_0x477ae0,_0x38d402){return function(_0x438579){if(_0x438579){return _0x438579['destroy']()['then'](function(){_0x477ae0['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x29b815,_0xd514f7){return function(_0x48d75a){if(!_0x48d75a){_0x29b815[_0xcd56('0x1b')](0x194);}return _0x48d75a;};}function handleError(_0x4021b1,_0x44e9db){_0x44e9db=_0x44e9db||0x1f4;return function(_0x194d64){logger[_0xcd56('0x28')](_0x194d64[_0xcd56('0x29')]);if(_0x194d64[_0xcd56('0x2a')]){delete _0x194d64[_0xcd56('0x2a')];}_0x4021b1[_0xcd56('0x1c')](_0x44e9db)[_0xcd56('0x2b')](_0x194d64);};}exports[_0xcd56('0x2c')]=function(_0x205473,_0x46f998){var _0x16ada3={},_0x88a636={},_0x388041={'count':0x0,'rows':[]};var _0x1e270d=_['map'](db['AnalyticTreeReport'][_0xcd56('0x2d')],function(_0x65783c){return{'name':_0x65783c[_0xcd56('0x2e')],'type':_0x65783c[_0xcd56('0x2f')][_0xcd56('0x30')]};});_0x88a636['model']=_['map'](_0x1e270d,_0xcd56('0x2a'));_0x88a636[_0xcd56('0x31')]=_['keys'](_0x205473[_0xcd56('0x31')]);_0x88a636[_0xcd56('0x32')]=_[_0xcd56('0x33')](_0x88a636['model'],_0x88a636[_0xcd56('0x31')]);_0x16ada3['attributes']=_[_0xcd56('0x33')](_0x88a636[_0xcd56('0x34')],qs[_0xcd56('0x35')](_0x205473['query'][_0xcd56('0x35')]));_0x16ada3['attributes']=_0x16ada3[_0xcd56('0x36')]['length']?_0x16ada3[_0xcd56('0x36')]:_0x88a636[_0xcd56('0x34')];if(!_0x205473[_0xcd56('0x31')]['hasOwnProperty']('nolimit')){_0x16ada3['limit']=qs[_0xcd56('0x21')](_0x205473[_0xcd56('0x31')][_0xcd56('0x21')]);_0x16ada3[_0xcd56('0x1f')]=qs[_0xcd56('0x1f')](_0x205473['query'][_0xcd56('0x1f')]);}_0x16ada3['order']=qs[_0xcd56('0x37')](_0x205473[_0xcd56('0x31')]['sort']);_0x16ada3['where']=qs[_0xcd56('0x32')](_['pick'](_0x205473[_0xcd56('0x31')],_0x88a636[_0xcd56('0x32')]),_0x1e270d);if(_0x205473['query']['filter']){_0x16ada3['where']=_[_0xcd56('0x38')](_0x16ada3[_0xcd56('0x39')],{'$or':_['map'](_0x1e270d,function(_0x3f5e54){if(_0x3f5e54['type']!==_0xcd56('0x3a')){var _0x5710f9={};_0x5710f9[_0x3f5e54[_0xcd56('0x2a')]]={'$like':'%'+_0x205473[_0xcd56('0x31')][_0xcd56('0x3b')]+'%'};return _0x5710f9;}})});}_0x16ada3=_[_0xcd56('0x38')]({},_0x16ada3,_0x205473['options']);var _0x36b7fb={'where':_0x16ada3[_0xcd56('0x39')]};return db['AnalyticTreeReport'][_0xcd56('0x22')](_0x36b7fb)[_0xcd56('0x27')](function(_0x2ed58b){_0x388041[_0xcd56('0x22')]=_0x2ed58b;if(_0x205473['query']['includeAll']){_0x16ada3['include']=[{'all':!![]}];}return db[_0xcd56('0x3c')][_0xcd56('0x3d')](_0x16ada3);})['then'](function(_0x289271){_0x388041[_0xcd56('0x3e')]=_0x289271;return _0x388041;})[_0xcd56('0x27')](respondWithFilteredResult(_0x46f998,_0x16ada3))['catch'](handleError(_0x46f998,null));};exports[_0xcd56('0x3f')]=function(_0x2b7352,_0x215cdb){var _0x102abb={'raw':!![],'where':{'id':_0x2b7352['params']['id']}},_0x422fb3={};_0x422fb3[_0xcd56('0x34')]=_['keys'](db['AnalyticTreeReport'][_0xcd56('0x2d')]);_0x422fb3['query']=_['keys'](_0x2b7352[_0xcd56('0x31')]);_0x422fb3[_0xcd56('0x32')]=_['intersection'](_0x422fb3['model'],_0x422fb3[_0xcd56('0x31')]);_0x102abb['attributes']=_[_0xcd56('0x33')](_0x422fb3[_0xcd56('0x34')],qs[_0xcd56('0x35')](_0x2b7352[_0xcd56('0x31')]['fields']));_0x102abb[_0xcd56('0x36')]=_0x102abb[_0xcd56('0x36')]['length']?_0x102abb['attributes']:_0x422fb3['model'];if(_0x2b7352[_0xcd56('0x31')]['includeAll']){_0x102abb[_0xcd56('0x40')]=[{'all':!![]}];}_0x102abb=_['merge']({},_0x102abb,_0x2b7352[_0xcd56('0x41')]);return db[_0xcd56('0x3c')][_0xcd56('0x42')](_0x102abb)[_0xcd56('0x27')](handleEntityNotFound(_0x215cdb,null))[_0xcd56('0x27')](respondWithResult(_0x215cdb,null))[_0xcd56('0x43')](handleError(_0x215cdb,null));};exports[_0xcd56('0x44')]=function(_0x4a9529,_0x2b7e86){return db[_0xcd56('0x3c')][_0xcd56('0x44')](_0x4a9529[_0xcd56('0x45')],{})['then'](respondWithResult(_0x2b7e86,0xc9))[_0xcd56('0x43')](handleError(_0x2b7e86,null));};exports[_0xcd56('0x26')]=function(_0x108ec1,_0x2cbc3c){if(_0x108ec1[_0xcd56('0x45')]['id']){delete _0x108ec1[_0xcd56('0x45')]['id'];}return db[_0xcd56('0x3c')][_0xcd56('0x42')]({'where':{'id':_0x108ec1[_0xcd56('0x46')]['id']}})['then'](handleEntityNotFound(_0x2cbc3c,null))['then'](saveUpdates(_0x108ec1[_0xcd56('0x45')],null))[_0xcd56('0x27')](respondWithResult(_0x2cbc3c,null))[_0xcd56('0x43')](handleError(_0x2cbc3c,null));};exports[_0xcd56('0x47')]=function(_0x5c7c40,_0x25e2ec){return db['AnalyticTreeReport'][_0xcd56('0x42')]({'where':{'id':_0x5c7c40[_0xcd56('0x46')]['id']}})[_0xcd56('0x27')](handleEntityNotFound(_0x25e2ec,null))['then'](removeEntity(_0x25e2ec,null))[_0xcd56('0x43')](handleError(_0x25e2ec,null));};
\ No newline at end of file
+var _0x6430=['includeAll','find','create','body','update','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','../../components/parsers/qs','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','limit','undefined','count','Content-Range','json','apply','reject','save','then','destroy','stack','name','send','index','map','rawAttributes','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','pick','where','merge','type','VIRTUAL','filter','options','include','findAll','rows','catch','params','AnalyticTreeReport','length'];(function(_0x3657e0,_0x1e57f9){var _0x39c002=function(_0x1bb873){while(--_0x1bb873){_0x3657e0['push'](_0x3657e0['shift']());}};_0x39c002(++_0x1e57f9);}(_0x6430,0xe3));var _0x0643=function(_0x41bcfa,_0x33c2f8){_0x41bcfa=_0x41bcfa-0x0;var _0x1ca030=_0x6430[_0x41bcfa];return _0x1ca030;};'use strict';var emlformat=require(_0x0643('0x0'));var rimraf=require(_0x0643('0x1'));var zipdir=require(_0x0643('0x2'));var jsonpatch=require(_0x0643('0x3'));var rp=require(_0x0643('0x4'));var moment=require(_0x0643('0x5'));var BPromise=require(_0x0643('0x6'));var Mustache=require(_0x0643('0x7'));var util=require(_0x0643('0x8'));var path=require('path');var sox=require(_0x0643('0x9'));var csv=require(_0x0643('0xa'));var ejs=require(_0x0643('0xb'));var fs=require('fs');var fs_extra=require(_0x0643('0xc'));var _=require(_0x0643('0xd'));var squel=require(_0x0643('0xe'));var crypto=require(_0x0643('0xf'));var jsforce=require(_0x0643('0x10'));var deskjs=require(_0x0643('0x11'));var toCsv=require(_0x0643('0xa'));var querystring=require(_0x0643('0x12'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x0643('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x0643('0x14'));var utils=require('../../config/utils');var config=require(_0x0643('0x15'));var licenseUtil=require(_0x0643('0x16'));var db=require(_0x0643('0x17'))['db'];function respondWithStatusCode(_0x3c65b3,_0x22048f){_0x22048f=_0x22048f||0xcc;return function(_0x1a959c){if(_0x1a959c){return _0x3c65b3[_0x0643('0x18')](_0x22048f);}return _0x3c65b3[_0x0643('0x19')](_0x22048f)['end']();};}function respondWithResult(_0x58f218,_0x36d539){_0x36d539=_0x36d539||0xc8;return function(_0x5cc46c){if(_0x5cc46c){return _0x58f218[_0x0643('0x19')](_0x36d539)['json'](_0x5cc46c);}};}function respondWithFilteredResult(_0x1fef6c,_0x331060){return function(_0x45f3c9){if(_0x45f3c9){var _0x14d436=typeof _0x331060[_0x0643('0x1a')]==='undefined'&&typeof _0x331060[_0x0643('0x1b')]===_0x0643('0x1c');var _0x270c3a=_0x45f3c9[_0x0643('0x1d')];var _0x1a7f9f=_0x14d436?0x0:_0x331060[_0x0643('0x1a')];var _0x2d246a=_0x14d436?_0x45f3c9['count']:_0x331060[_0x0643('0x1a')]+_0x331060['limit'];var _0x455406;if(_0x2d246a>=_0x270c3a){_0x2d246a=_0x270c3a;_0x455406=0xc8;}else{_0x455406=0xce;}_0x1fef6c[_0x0643('0x19')](_0x455406);return _0x1fef6c['set'](_0x0643('0x1e'),_0x1a7f9f+'-'+_0x2d246a+'/'+_0x270c3a)[_0x0643('0x1f')](_0x45f3c9);}return null;};}function patchUpdates(_0x2b2861){return function(_0x55c0bd){try{jsonpatch[_0x0643('0x20')](_0x55c0bd,_0x2b2861,!![]);}catch(_0x5d5d36){return BPromise[_0x0643('0x21')](_0x5d5d36);}return _0x55c0bd[_0x0643('0x22')]();};}function saveUpdates(_0x3aa050,_0x95c38a){return function(_0x24404b){if(_0x24404b){return _0x24404b['update'](_0x3aa050)[_0x0643('0x23')](function(_0x151540){return _0x151540;});}return null;};}function removeEntity(_0x3c525e,_0x3e3e8a){return function(_0x14966d){if(_0x14966d){return _0x14966d[_0x0643('0x24')]()[_0x0643('0x23')](function(){_0x3c525e[_0x0643('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x23a880,_0x1a0888){return function(_0x4e97a2){if(!_0x4e97a2){_0x23a880['sendStatus'](0x194);}return _0x4e97a2;};}function handleError(_0x461d9b,_0x2a672c){_0x2a672c=_0x2a672c||0x1f4;return function(_0x4eea45){logger['error'](_0x4eea45[_0x0643('0x25')]);if(_0x4eea45[_0x0643('0x26')]){delete _0x4eea45[_0x0643('0x26')];}_0x461d9b[_0x0643('0x19')](_0x2a672c)[_0x0643('0x27')](_0x4eea45);};}exports[_0x0643('0x28')]=function(_0x5df0b2,_0x1ebd99){var _0x1b0d59={},_0x4857af={},_0x1dc267={'count':0x0,'rows':[]};var _0xa75d34=_[_0x0643('0x29')](db['AnalyticTreeReport'][_0x0643('0x2a')],function(_0x5020c7){return{'name':_0x5020c7['fieldName'],'type':_0x5020c7['type'][_0x0643('0x2b')]};});_0x4857af[_0x0643('0x2c')]=_['map'](_0xa75d34,_0x0643('0x26'));_0x4857af[_0x0643('0x2d')]=_[_0x0643('0x2e')](_0x5df0b2[_0x0643('0x2d')]);_0x4857af[_0x0643('0x2f')]=_[_0x0643('0x30')](_0x4857af['model'],_0x4857af[_0x0643('0x2d')]);_0x1b0d59['attributes']=_['intersection'](_0x4857af[_0x0643('0x2c')],qs['fields'](_0x5df0b2[_0x0643('0x2d')][_0x0643('0x31')]));_0x1b0d59[_0x0643('0x32')]=_0x1b0d59[_0x0643('0x32')]['length']?_0x1b0d59['attributes']:_0x4857af['model'];if(!_0x5df0b2['query'][_0x0643('0x33')](_0x0643('0x34'))){_0x1b0d59[_0x0643('0x1b')]=qs[_0x0643('0x1b')](_0x5df0b2[_0x0643('0x2d')]['limit']);_0x1b0d59[_0x0643('0x1a')]=qs['offset'](_0x5df0b2[_0x0643('0x2d')][_0x0643('0x1a')]);}_0x1b0d59[_0x0643('0x35')]=qs['sort'](_0x5df0b2['query'][_0x0643('0x36')]);_0x1b0d59['where']=qs['filters'](_[_0x0643('0x37')](_0x5df0b2[_0x0643('0x2d')],_0x4857af[_0x0643('0x2f')]),_0xa75d34);if(_0x5df0b2[_0x0643('0x2d')]['filter']){_0x1b0d59[_0x0643('0x38')]=_[_0x0643('0x39')](_0x1b0d59[_0x0643('0x38')],{'$or':_['map'](_0xa75d34,function(_0x307bc8){if(_0x307bc8[_0x0643('0x3a')]!==_0x0643('0x3b')){var _0x539eb6={};_0x539eb6[_0x307bc8[_0x0643('0x26')]]={'$like':'%'+_0x5df0b2[_0x0643('0x2d')][_0x0643('0x3c')]+'%'};return _0x539eb6;}})});}_0x1b0d59=_[_0x0643('0x39')]({},_0x1b0d59,_0x5df0b2[_0x0643('0x3d')]);var _0x29701a={'where':_0x1b0d59[_0x0643('0x38')]};return db['AnalyticTreeReport']['count'](_0x29701a)[_0x0643('0x23')](function(_0x38f790){_0x1dc267[_0x0643('0x1d')]=_0x38f790;if(_0x5df0b2[_0x0643('0x2d')]['includeAll']){_0x1b0d59[_0x0643('0x3e')]=[{'all':!![]}];}return db['AnalyticTreeReport'][_0x0643('0x3f')](_0x1b0d59);})[_0x0643('0x23')](function(_0x24700d){_0x1dc267[_0x0643('0x40')]=_0x24700d;return _0x1dc267;})[_0x0643('0x23')](respondWithFilteredResult(_0x1ebd99,_0x1b0d59))[_0x0643('0x41')](handleError(_0x1ebd99,null));};exports['show']=function(_0x1bc566,_0x6cf0b4){var _0x1fa000={'raw':!![],'where':{'id':_0x1bc566[_0x0643('0x42')]['id']}},_0x16d9a1={};_0x16d9a1['model']=_[_0x0643('0x2e')](db[_0x0643('0x43')][_0x0643('0x2a')]);_0x16d9a1[_0x0643('0x2d')]=_[_0x0643('0x2e')](_0x1bc566[_0x0643('0x2d')]);_0x16d9a1['filters']=_[_0x0643('0x30')](_0x16d9a1['model'],_0x16d9a1[_0x0643('0x2d')]);_0x1fa000[_0x0643('0x32')]=_['intersection'](_0x16d9a1['model'],qs[_0x0643('0x31')](_0x1bc566['query'][_0x0643('0x31')]));_0x1fa000['attributes']=_0x1fa000[_0x0643('0x32')][_0x0643('0x44')]?_0x1fa000['attributes']:_0x16d9a1['model'];if(_0x1bc566[_0x0643('0x2d')][_0x0643('0x45')]){_0x1fa000[_0x0643('0x3e')]=[{'all':!![]}];}_0x1fa000=_[_0x0643('0x39')]({},_0x1fa000,_0x1bc566[_0x0643('0x3d')]);return db['AnalyticTreeReport'][_0x0643('0x46')](_0x1fa000)[_0x0643('0x23')](handleEntityNotFound(_0x6cf0b4,null))[_0x0643('0x23')](respondWithResult(_0x6cf0b4,null))[_0x0643('0x41')](handleError(_0x6cf0b4,null));};exports[_0x0643('0x47')]=function(_0xbba92c,_0x3f16bb){return db['AnalyticTreeReport'][_0x0643('0x47')](_0xbba92c[_0x0643('0x48')],{})[_0x0643('0x23')](respondWithResult(_0x3f16bb,0xc9))[_0x0643('0x41')](handleError(_0x3f16bb,null));};exports[_0x0643('0x49')]=function(_0x47fd83,_0x32b191){if(_0x47fd83['body']['id']){delete _0x47fd83[_0x0643('0x48')]['id'];}return db['AnalyticTreeReport'][_0x0643('0x46')]({'where':{'id':_0x47fd83[_0x0643('0x42')]['id']}})['then'](handleEntityNotFound(_0x32b191,null))[_0x0643('0x23')](saveUpdates(_0x47fd83['body'],null))[_0x0643('0x23')](respondWithResult(_0x32b191,null))[_0x0643('0x41')](handleError(_0x32b191,null));};exports[_0x0643('0x24')]=function(_0x16a75e,_0x3713fd){return db[_0x0643('0x43')][_0x0643('0x46')]({'where':{'id':_0x16a75e[_0x0643('0x42')]['id']}})[_0x0643('0x23')](handleEntityNotFound(_0x3713fd,null))[_0x0643('0x23')](removeEntity(_0x3713fd,null))[_0x0643('0x41')](handleError(_0x3713fd,null));};
\ No newline at end of file
index dd51f3b..ce84575 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x577d=['request-promise','path','rimraf','../../config/environment','./analyticTreeReport.attributes','exports','define','util','../../config/logger','api','bluebird'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0x577d,0x6a));var _0xd577=function(_0x1f6e7e,_0x272853){_0x1f6e7e=_0x1f6e7e-0x0;var _0xc33b31=_0x577d[_0x1f6e7e];return _0xc33b31;};'use strict';var _=require('lodash');var util=require(_0xd577('0x0'));var logger=require(_0xd577('0x1'))(_0xd577('0x2'));var moment=require('moment');var BPromise=require(_0xd577('0x3'));var rp=require(_0xd577('0x4'));var fs=require('fs');var path=require(_0xd577('0x5'));var rimraf=require(_0xd577('0x6'));var config=require(_0xd577('0x7'));var attributes=require(_0xd577('0x8'));module[_0xd577('0x9')]=function(_0x410e16,_0xd4cc08){return _0x410e16[_0xd577('0xa')]('AnalyticTreeReport',attributes,{'tableName':'analytics_report_trees','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5417=['rimraf','../../config/environment','exports','define','AnalyticTreeReport','analytics_report_trees','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x395512,_0x1e9614){var _0x556c2c=function(_0x7fddef){while(--_0x7fddef){_0x395512['push'](_0x395512['shift']());}};_0x556c2c(++_0x1e9614);}(_0x5417,0x10a));var _0x7541=function(_0x464086,_0x363367){_0x464086=_0x464086-0x0;var _0x4133c9=_0x5417[_0x464086];return _0x4133c9;};'use strict';var _=require(_0x7541('0x0'));var util=require(_0x7541('0x1'));var logger=require(_0x7541('0x2'))(_0x7541('0x3'));var moment=require(_0x7541('0x4'));var BPromise=require(_0x7541('0x5'));var rp=require(_0x7541('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7541('0x7'));var config=require(_0x7541('0x8'));var attributes=require('./analyticTreeReport.attributes');module[_0x7541('0x9')]=function(_0x1f0fa5,_0x1b2a75){return _0x1f0fa5[_0x7541('0xa')](_0x7541('0xb'),attributes,{'tableName':_0x7541('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fa62cb6..233b04c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','util'];(function(_0x3075e3,_0x4b37b9){var _0x46be8a=function(_0xa9b028){while(--_0xa9b028){_0x3075e3['push'](_0x3075e3['shift']());}};_0x46be8a(++_0x4b37b9);}(_0xdb28,0x106));var _0x8db2=function(_0x16572f,_0x4ff85e){_0x16572f=_0x16572f-0x0;var _0x2ecb85=_0xdb28[_0x16572f];return _0x2ecb85;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var moment=require(_0x8db2('0x2'));var BPromise=require(_0x8db2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8db2('0x4'));var db=require(_0x8db2('0x5'))['db'];var utils=require(_0x8db2('0x6'));var logger=require(_0x8db2('0x7'))(_0x8db2('0x8'));var config=require('../../config/environment');var jayson=require(_0x8db2('0x9'));var client=jayson[_0x8db2('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x494b40,_0x477f50,_0x46932f){return new BPromise(function(_0x131537,_0x29f698){return client[_0x8db2('0xb')](_0x494b40,_0x46932f)[_0x8db2('0xc')](function(_0x126c78){logger['info'](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));logger[_0x8db2('0xf')]('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0x477f50,_0x8db2('0xe'),JSON[_0x8db2('0x10')](_0x126c78));if(_0x126c78['error']){if(_0x126c78[_0x8db2('0x11')][_0x8db2('0x12')]===0x1f4){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')]['message']);return _0x29f698(_0x126c78['error'][_0x8db2('0x13')]);}logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);return _0x131537(_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);}else{logger[_0x8db2('0x14')](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));_0x131537(_0x126c78['result'][_0x8db2('0x13')]);}})[_0x8db2('0x15')](function(_0x48101e){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x48101e);_0x29f698(_0x48101e);});});}
\ No newline at end of file
+var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x42ef3e,_0x2846f1){var _0x28075f=function(_0x3a018b){while(--_0x3a018b){_0x42ef3e['push'](_0x42ef3e['shift']());}};_0x28075f(++_0x2846f1);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0xc4aa[_0x36c5b0];return _0xf19333;};'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')]('AnalyticTreeReport,\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 6c47e0f..a19d394 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d2a=['put','update','delete','destroy','exports','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','isAuthenticated','index','get','/:id','show','post','create'];(function(_0x3c84ee,_0x158c08){var _0x620596=function(_0x23d3a1){while(--_0x23d3a1){_0x3c84ee['push'](_0x3c84ee['shift']());}};_0x620596(++_0x158c08);}(_0x7d2a,0xdd));var _0xa7d2=function(_0x9e21ef,_0x2e414e){_0x9e21ef=_0x9e21ef-0x0;var _0x122bc8=_0x7d2a[_0x9e21ef];return _0x122bc8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xa7d2('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa7d2('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0xa7d2('0x2'));var interaction=require(_0xa7d2('0x3'));var config=require(_0xa7d2('0x4'));var controller=require(_0xa7d2('0x5'));router['get']('/',auth[_0xa7d2('0x6')](),controller[_0xa7d2('0x7')]);router[_0xa7d2('0x8')](_0xa7d2('0x9'),auth[_0xa7d2('0x6')](),controller[_0xa7d2('0xa')]);router[_0xa7d2('0xb')]('/',auth[_0xa7d2('0x6')](),controller[_0xa7d2('0xc')]);router[_0xa7d2('0xd')](_0xa7d2('0x9'),auth[_0xa7d2('0x6')](),controller[_0xa7d2('0xe')]);router[_0xa7d2('0xf')]('/:id',auth['isAuthenticated'](),controller[_0xa7d2('0x10')]);module[_0xa7d2('0x11')]=router;
\ No newline at end of file
+var _0x8743=['show','post','create','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id'];(function(_0xe02e8b,_0x23ac2d){var _0x24ed50=function(_0x1f3188){while(--_0x1f3188){_0xe02e8b['push'](_0xe02e8b['shift']());}};_0x24ed50(++_0x23ac2d);}(_0x8743,0x6b));var _0x3874=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x8743[_0x1035c1];return _0x308d67;};'use strict';var multer=require(_0x3874('0x0'));var util=require('util');var path=require(_0x3874('0x1'));var timeout=require(_0x3874('0x2'));var express=require(_0x3874('0x3'));var router=express[_0x3874('0x4')]();var fs_extra=require(_0x3874('0x5'));var auth=require(_0x3874('0x6'));var interaction=require(_0x3874('0x7'));var config=require(_0x3874('0x8'));var controller=require('./analyticTreeReport.controller');router['get']('/',auth[_0x3874('0x9')](),controller[_0x3874('0xa')]);router[_0x3874('0xb')](_0x3874('0xc'),auth[_0x3874('0x9')](),controller[_0x3874('0xd')]);router[_0x3874('0xe')]('/',auth[_0x3874('0x9')](),controller[_0x3874('0xf')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x3874('0x10')]);router[_0x3874('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x3874('0x12')]);module[_0x3874('0x13')]=router;
\ No newline at end of file
index 7ea4f2c..c4155f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd846=['sequelize','exports','STRING'];(function(_0x369a98,_0x32250c){var _0x29565c=function(_0x1a6973){while(--_0x1a6973){_0x369a98['push'](_0x369a98['shift']());}};_0x29565c(++_0x32250c);}(_0xd846,0x195));var _0x6d84=function(_0x1a45d6,_0x4fa342){_0x1a45d6=_0x1a45d6-0x0;var _0x1b1813=_0xd846[_0x1a45d6];return _0x1b1813;};'use strict';var Sequelize=require(_0x6d84('0x0'));module[_0x6d84('0x1')]={'name':{'type':Sequelize[_0x6d84('0x2')]},'basename':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xfc1e=['STRING'];(function(_0x425d5e,_0x3b9040){var _0x3cc67b=function(_0x121446){while(--_0x121446){_0x425d5e['push'](_0x425d5e['shift']());}};_0x3cc67b(++_0x3b9040);}(_0xfc1e,0x1c9));var _0xefc1=function(_0x1bb58c,_0x2c8a4d){_0x1bb58c=_0x1bb58c-0x0;var _0x277586=_0xfc1e[_0x1bb58c];return _0x277586;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING']},'basename':{'type':Sequelize[_0xefc1('0x0')]},'type':{'type':Sequelize[_0xefc1('0x0')]}};
\ No newline at end of file
index b2c8c38..ac69ff7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c4a=['download','findOne','ChatOfflineMessageId','join','root','offline-chat/','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','then','error','stack','name','send','index','Attachment','rawAttributes','fieldName','key','map','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','type','filter','options','includeAll','include','findAll','rows','catch','show','params','find','clone','get','omit','updatedAt','body','createdAt','create','destroy','file','basename','filename','mimetype'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x5c4a,0x1cd));var _0xa5c4=function(_0xb00436,_0x4344b6){_0xb00436=_0xb00436-0x0;var _0x2facd9=_0x5c4a[_0xb00436];return _0x2facd9;};'use strict';var emlformat=require(_0xa5c4('0x0'));var rimraf=require(_0xa5c4('0x1'));var zipdir=require(_0xa5c4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa5c4('0x3'));var moment=require(_0xa5c4('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa5c4('0x5'));var util=require(_0xa5c4('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xa5c4('0x7'));var ejs=require(_0xa5c4('0x8'));var fs=require('fs');var fs_extra=require(_0xa5c4('0x9'));var _=require(_0xa5c4('0xa'));var squel=require('squel');var crypto=require(_0xa5c4('0xb'));var jsforce=require(_0xa5c4('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa5c4('0x7'));var querystring=require(_0xa5c4('0xd'));var Papa=require('papaparse');var Redis=require(_0xa5c4('0xe'));var authService=require(_0xa5c4('0xf'));var qs=require(_0xa5c4('0x10'));var as=require(_0xa5c4('0x11'));var hardwareService=require(_0xa5c4('0x12'));var logger=require(_0xa5c4('0x13'))(_0xa5c4('0x14'));var utils=require(_0xa5c4('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xa5c4('0x16'))['db'];function respondWithStatusCode(_0x5d29ae,_0x55283a){_0x55283a=_0x55283a||0xcc;return function(_0x45a1a4){if(_0x45a1a4){return _0x5d29ae[_0xa5c4('0x17')](_0x55283a);}return _0x5d29ae[_0xa5c4('0x18')](_0x55283a)[_0xa5c4('0x19')]();};}function respondWithResult(_0x54c1e9,_0x4683fc){_0x4683fc=_0x4683fc||0xc8;return function(_0xc6082a){if(_0xc6082a){return _0x54c1e9['status'](_0x4683fc)['json'](_0xc6082a);}};}function respondWithFilteredResult(_0x3379ff,_0x2b131a){return function(_0x28bb7a){if(_0x28bb7a){var _0xbffb6=typeof _0x2b131a[_0xa5c4('0x1a')]==='undefined'&&typeof _0x2b131a[_0xa5c4('0x1b')]===_0xa5c4('0x1c');var _0x3178ac=_0x28bb7a[_0xa5c4('0x1d')];var _0x5d7de4=_0xbffb6?0x0:_0x2b131a[_0xa5c4('0x1a')];var _0x215fe2=_0xbffb6?_0x28bb7a[_0xa5c4('0x1d')]:_0x2b131a['offset']+_0x2b131a[_0xa5c4('0x1b')];var _0x14b1b5;if(_0x215fe2>=_0x3178ac){_0x215fe2=_0x3178ac;_0x14b1b5=0xc8;}else{_0x14b1b5=0xce;}_0x3379ff[_0xa5c4('0x18')](_0x14b1b5);return _0x3379ff[_0xa5c4('0x1e')](_0xa5c4('0x1f'),_0x5d7de4+'-'+_0x215fe2+'/'+_0x3178ac)[_0xa5c4('0x20')](_0x28bb7a);}return null;};}function patchUpdates(_0x7cda8b){return function(_0x228230){try{jsonpatch[_0xa5c4('0x21')](_0x228230,_0x7cda8b,!![]);}catch(_0x31c24e){return BPromise[_0xa5c4('0x22')](_0x31c24e);}return _0x228230[_0xa5c4('0x23')]();};}function saveUpdates(_0x207d93,_0x28b475){return function(_0x35f155){if(_0x35f155){return _0x35f155[_0xa5c4('0x24')](_0x207d93)['then'](function(_0xa406f6){return _0xa406f6;});}return null;};}function removeEntity(_0x50a6e7,_0x1fd248){return function(_0x1ef0eb){if(_0x1ef0eb){return _0x1ef0eb['destroy']()[_0xa5c4('0x25')](function(){_0x50a6e7['status'](0xcc)[_0xa5c4('0x19')]();});}};}function handleEntityNotFound(_0x28eff1,_0xdc8679){return function(_0x21edb3){if(!_0x21edb3){_0x28eff1[_0xa5c4('0x17')](0x194);}return _0x21edb3;};}function handleError(_0x22a841,_0x2e355c){_0x2e355c=_0x2e355c||0x1f4;return function(_0x12e4d0){logger[_0xa5c4('0x26')](_0x12e4d0[_0xa5c4('0x27')]);if(_0x12e4d0[_0xa5c4('0x28')]){delete _0x12e4d0[_0xa5c4('0x28')];}_0x22a841[_0xa5c4('0x18')](_0x2e355c)[_0xa5c4('0x29')](_0x12e4d0);};}exports[_0xa5c4('0x2a')]=function(_0xa2abc4,_0xebd73a){var _0x2116f7={},_0x2c48e2={},_0x48dde3={'count':0x0,'rows':[]};var _0x384eaf=_['map'](db[_0xa5c4('0x2b')][_0xa5c4('0x2c')],function(_0x3313fe){return{'name':_0x3313fe[_0xa5c4('0x2d')],'type':_0x3313fe['type'][_0xa5c4('0x2e')]};});_0x2c48e2['model']=_[_0xa5c4('0x2f')](_0x384eaf,_0xa5c4('0x28'));_0x2c48e2[_0xa5c4('0x30')]=_[_0xa5c4('0x31')](_0xa2abc4[_0xa5c4('0x30')]);_0x2c48e2[_0xa5c4('0x32')]=_[_0xa5c4('0x33')](_0x2c48e2[_0xa5c4('0x34')],_0x2c48e2[_0xa5c4('0x30')]);_0x2116f7['attributes']=_[_0xa5c4('0x33')](_0x2c48e2[_0xa5c4('0x34')],qs['fields'](_0xa2abc4[_0xa5c4('0x30')][_0xa5c4('0x35')]));_0x2116f7[_0xa5c4('0x36')]=_0x2116f7[_0xa5c4('0x36')][_0xa5c4('0x37')]?_0x2116f7[_0xa5c4('0x36')]:_0x2c48e2['model'];if(!_0xa2abc4[_0xa5c4('0x30')][_0xa5c4('0x38')](_0xa5c4('0x39'))){_0x2116f7['limit']=qs[_0xa5c4('0x1b')](_0xa2abc4[_0xa5c4('0x30')][_0xa5c4('0x1b')]);_0x2116f7[_0xa5c4('0x1a')]=qs['offset'](_0xa2abc4['query'][_0xa5c4('0x1a')]);}_0x2116f7[_0xa5c4('0x3a')]=qs['sort'](_0xa2abc4[_0xa5c4('0x30')][_0xa5c4('0x3b')]);_0x2116f7[_0xa5c4('0x3c')]=qs[_0xa5c4('0x32')](_['pick'](_0xa2abc4[_0xa5c4('0x30')],_0x2c48e2[_0xa5c4('0x32')]),_0x384eaf);if(_0xa2abc4[_0xa5c4('0x30')]['filter']){_0x2116f7[_0xa5c4('0x3c')]=_[_0xa5c4('0x3d')](_0x2116f7['where'],{'$or':_[_0xa5c4('0x2f')](_0x384eaf,function(_0x50532a){if(_0x50532a[_0xa5c4('0x3e')]!=='VIRTUAL'){var _0x545f21={};_0x545f21[_0x50532a[_0xa5c4('0x28')]]={'$like':'%'+_0xa2abc4[_0xa5c4('0x30')][_0xa5c4('0x3f')]+'%'};return _0x545f21;}})});}_0x2116f7=_[_0xa5c4('0x3d')]({},_0x2116f7,_0xa2abc4[_0xa5c4('0x40')]);var _0x342251={'where':_0x2116f7[_0xa5c4('0x3c')]};return db[_0xa5c4('0x2b')][_0xa5c4('0x1d')](_0x342251)[_0xa5c4('0x25')](function(_0x21bdf7){_0x48dde3[_0xa5c4('0x1d')]=_0x21bdf7;if(_0xa2abc4[_0xa5c4('0x30')][_0xa5c4('0x41')]){_0x2116f7[_0xa5c4('0x42')]=[{'all':!![]}];}return db[_0xa5c4('0x2b')][_0xa5c4('0x43')](_0x2116f7);})[_0xa5c4('0x25')](function(_0x18990a){_0x48dde3[_0xa5c4('0x44')]=_0x18990a;return _0x48dde3;})[_0xa5c4('0x25')](respondWithFilteredResult(_0xebd73a,_0x2116f7))[_0xa5c4('0x45')](handleError(_0xebd73a,null));};exports[_0xa5c4('0x46')]=function(_0x182e5a,_0x51fcb4){var _0x3de368={'raw':!![],'where':{'id':_0x182e5a[_0xa5c4('0x47')]['id']}},_0x49cc49={};_0x49cc49['model']=_[_0xa5c4('0x31')](db['Attachment'][_0xa5c4('0x2c')]);_0x49cc49['query']=_[_0xa5c4('0x31')](_0x182e5a['query']);_0x49cc49[_0xa5c4('0x32')]=_['intersection'](_0x49cc49[_0xa5c4('0x34')],_0x49cc49['query']);_0x3de368[_0xa5c4('0x36')]=_[_0xa5c4('0x33')](_0x49cc49['model'],qs[_0xa5c4('0x35')](_0x182e5a['query'][_0xa5c4('0x35')]));_0x3de368[_0xa5c4('0x36')]=_0x3de368[_0xa5c4('0x36')]['length']?_0x3de368[_0xa5c4('0x36')]:_0x49cc49[_0xa5c4('0x34')];if(_0x182e5a[_0xa5c4('0x30')][_0xa5c4('0x41')]){_0x3de368[_0xa5c4('0x42')]=[{'all':!![]}];}_0x3de368=_[_0xa5c4('0x3d')]({},_0x3de368,_0x182e5a[_0xa5c4('0x40')]);return db[_0xa5c4('0x2b')][_0xa5c4('0x48')](_0x3de368)[_0xa5c4('0x25')](handleEntityNotFound(_0x51fcb4,null))[_0xa5c4('0x25')](respondWithResult(_0x51fcb4,null))[_0xa5c4('0x45')](handleError(_0x51fcb4,null));};exports[_0xa5c4('0x49')]=function(_0x2d5a03,_0x2c4c5d){var _0xe23ed1={'where':{'id':_0x2d5a03[_0xa5c4('0x47')]['id']}},_0x3ef34e={};_0x3ef34e['model']=_[_0xa5c4('0x31')](db[_0xa5c4('0x2b')]['rawAttributes']);_0xe23ed1[_0xa5c4('0x36')]=_[_0xa5c4('0x33')](_0x3ef34e[_0xa5c4('0x34')],qs[_0xa5c4('0x35')](_0x2d5a03[_0xa5c4('0x30')][_0xa5c4('0x35')]));_0xe23ed1[_0xa5c4('0x36')]=_0xe23ed1['attributes']['length']?_0xe23ed1[_0xa5c4('0x36')]:_0x3ef34e[_0xa5c4('0x34')];if(_0x2d5a03[_0xa5c4('0x30')][_0xa5c4('0x41')]){_0xe23ed1[_0xa5c4('0x42')]=[{'all':!![]}];}_0xe23ed1=_['merge']({},_0xe23ed1,_0x2d5a03[_0xa5c4('0x40')]);return db[_0xa5c4('0x2b')][_0xa5c4('0x48')](_0xe23ed1)[_0xa5c4('0x25')](handleEntityNotFound(_0x2c4c5d,null))[_0xa5c4('0x25')](function(_0x323ec6){if(_0x323ec6){var _0x4fbd17=_0x323ec6[_0xa5c4('0x4a')]({'plain':!![]});_0x4fbd17=qs[_0xa5c4('0x4b')](_0x4fbd17,['id','createdAt',_0xa5c4('0x4c')]);_0x2d5a03[_0xa5c4('0x4d')]=_[_0xa5c4('0x4b')](_0x2d5a03[_0xa5c4('0x4d')],['id',_0xa5c4('0x4e'),_0xa5c4('0x4c')]);return db[_0xa5c4('0x2b')][_0xa5c4('0x4f')](_[_0xa5c4('0x3d')](_0x4fbd17,_0x2d5a03[_0xa5c4('0x4d')]),{'include':_0x2d5a03[_0xa5c4('0x30')]['includeAll']?[{'all':!![]}]:undefined});}})[_0xa5c4('0x25')](respondWithResult(_0x2c4c5d,0xc9))['catch'](handleError(_0x2c4c5d,null));};exports[_0xa5c4('0x24')]=function(_0x56251f,_0x2b6385){if(_0x56251f[_0xa5c4('0x4d')]['id']){delete _0x56251f[_0xa5c4('0x4d')]['id'];}return db['Attachment'][_0xa5c4('0x48')]({'where':{'id':_0x56251f[_0xa5c4('0x47')]['id']}})[_0xa5c4('0x25')](handleEntityNotFound(_0x2b6385,null))[_0xa5c4('0x25')](saveUpdates(_0x56251f[_0xa5c4('0x4d')],null))['then'](respondWithResult(_0x2b6385,null))[_0xa5c4('0x45')](handleError(_0x2b6385,null));};exports[_0xa5c4('0x50')]=function(_0x1110c7,_0x1e9bff){return db['Attachment']['find']({'where':{'id':_0x1110c7['params']['id']}})[_0xa5c4('0x25')](handleEntityNotFound(_0x1e9bff,null))['then'](removeEntity(_0x1e9bff,null))[_0xa5c4('0x45')](handleError(_0x1e9bff,null));};exports[_0xa5c4('0x4f')]=function(_0x96ad28,_0xa139ed,_0x2b372b){_0x96ad28[_0xa5c4('0x4d')][_0xa5c4('0x28')]=_0x96ad28[_0xa5c4('0x51')]['originalname'];_0x96ad28[_0xa5c4('0x4d')][_0xa5c4('0x52')]=_0x96ad28[_0xa5c4('0x51')][_0xa5c4('0x53')];_0x96ad28[_0xa5c4('0x4d')][_0xa5c4('0x3e')]=_0x96ad28[_0xa5c4('0x51')][_0xa5c4('0x54')];return db[_0xa5c4('0x2b')][_0xa5c4('0x4f')](_0x96ad28['body'])[_0xa5c4('0x25')](respondWithResult(_0xa139ed,0xc9))[_0xa5c4('0x45')](handleError(_0xa139ed,null));};exports[_0xa5c4('0x55')]=function(_0x354002,_0x46c724,_0xe1fb41){return db[_0xa5c4('0x2b')][_0xa5c4('0x56')]({'where':{'id':_0x354002['params']['id']},'raw':!![]})[_0xa5c4('0x25')](handleEntityNotFound(_0x46c724,null))[_0xa5c4('0x25')](function(_0xabe9c7){if(_0xabe9c7){var _0x21bb9d=_0xabe9c7[_0xa5c4('0x57')]!==null;var _0x513fb1=path[_0xa5c4('0x58')](config[_0xa5c4('0x59')],'server/files/attachments/');if(_0x21bb9d){_0x513fb1=path[_0xa5c4('0x58')](_0x513fb1,_0xa5c4('0x5a'));}var _0x38328a=path[_0xa5c4('0x58')](_0x513fb1,_0xabe9c7[_0xa5c4('0x52')]);return _0x46c724['download'](_0x38328a);}})[_0xa5c4('0x45')](handleError(_0x46c724,null));};
\ No newline at end of file
+var _0x1298=['error','name','send','index','map','Attachment','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filters','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','rawAttributes','keys','options','get','omit','body','createdAt','updatedAt','create','find','originalname','basename','file','filename','mimetype','download','ChatOfflineMessageId','root','server/files/attachments/','join','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy'];(function(_0x4b548c,_0x142a2c){var _0x396394=function(_0x17e03a){while(--_0x17e03a){_0x4b548c['push'](_0x4b548c['shift']());}};_0x396394(++_0x142a2c);}(_0x1298,0x140));var _0x8129=function(_0x1f69c3,_0xd24681){_0x1f69c3=_0x1f69c3-0x0;var _0x4842fb=_0x1298[_0x1f69c3];return _0x4842fb;};'use strict';var emlformat=require(_0x8129('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8129('0x1'));var jsonpatch=require(_0x8129('0x2'));var rp=require(_0x8129('0x3'));var moment=require(_0x8129('0x4'));var BPromise=require(_0x8129('0x5'));var Mustache=require(_0x8129('0x6'));var util=require('util');var path=require(_0x8129('0x7'));var sox=require(_0x8129('0x8'));var csv=require(_0x8129('0x9'));var ejs=require(_0x8129('0xa'));var fs=require('fs');var fs_extra=require(_0x8129('0xb'));var _=require(_0x8129('0xc'));var squel=require(_0x8129('0xd'));var crypto=require(_0x8129('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x8129('0x9'));var querystring=require(_0x8129('0xf'));var Papa=require('papaparse');var Redis=require(_0x8129('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x8129('0x11'));var as=require(_0x8129('0x12'));var hardwareService=require(_0x8129('0x13'));var logger=require(_0x8129('0x14'))(_0x8129('0x15'));var utils=require('../../config/utils');var config=require(_0x8129('0x16'));var licenseUtil=require(_0x8129('0x17'));var db=require(_0x8129('0x18'))['db'];function respondWithStatusCode(_0x3607dd,_0x1d96bc){_0x1d96bc=_0x1d96bc||0xcc;return function(_0x2d1a44){if(_0x2d1a44){return _0x3607dd[_0x8129('0x19')](_0x1d96bc);}return _0x3607dd[_0x8129('0x1a')](_0x1d96bc)[_0x8129('0x1b')]();};}function respondWithResult(_0xa104a5,_0x50813f){_0x50813f=_0x50813f||0xc8;return function(_0x2c6d27){if(_0x2c6d27){return _0xa104a5['status'](_0x50813f)[_0x8129('0x1c')](_0x2c6d27);}};}function respondWithFilteredResult(_0x5ecfaa,_0x1953f2){return function(_0x9d09b6){if(_0x9d09b6){var _0x1981b6=typeof _0x1953f2[_0x8129('0x1d')]===_0x8129('0x1e')&&typeof _0x1953f2['limit']==='undefined';var _0x4248f3=_0x9d09b6[_0x8129('0x1f')];var _0x12e1a7=_0x1981b6?0x0:_0x1953f2[_0x8129('0x1d')];var _0x52ed9a=_0x1981b6?_0x9d09b6[_0x8129('0x1f')]:_0x1953f2['offset']+_0x1953f2[_0x8129('0x20')];var _0x3ea3a4;if(_0x52ed9a>=_0x4248f3){_0x52ed9a=_0x4248f3;_0x3ea3a4=0xc8;}else{_0x3ea3a4=0xce;}_0x5ecfaa[_0x8129('0x1a')](_0x3ea3a4);return _0x5ecfaa[_0x8129('0x21')](_0x8129('0x22'),_0x12e1a7+'-'+_0x52ed9a+'/'+_0x4248f3)['json'](_0x9d09b6);}return null;};}function patchUpdates(_0x20c142){return function(_0x3439ee){try{jsonpatch[_0x8129('0x23')](_0x3439ee,_0x20c142,!![]);}catch(_0xff04d7){return BPromise[_0x8129('0x24')](_0xff04d7);}return _0x3439ee['save']();};}function saveUpdates(_0x1a0389,_0x24c7da){return function(_0x26ee2c){if(_0x26ee2c){return _0x26ee2c[_0x8129('0x25')](_0x1a0389)[_0x8129('0x26')](function(_0x296701){return _0x296701;});}return null;};}function removeEntity(_0xe1ca26,_0x4a2f60){return function(_0x302727){if(_0x302727){return _0x302727[_0x8129('0x27')]()['then'](function(){_0xe1ca26[_0x8129('0x1a')](0xcc)[_0x8129('0x1b')]();});}};}function handleEntityNotFound(_0x52f50b,_0x32294e){return function(_0x1282c1){if(!_0x1282c1){_0x52f50b[_0x8129('0x19')](0x194);}return _0x1282c1;};}function handleError(_0x5454ef,_0x4f31b7){_0x4f31b7=_0x4f31b7||0x1f4;return function(_0x205e11){logger[_0x8129('0x28')](_0x205e11['stack']);if(_0x205e11['name']){delete _0x205e11[_0x8129('0x29')];}_0x5454ef[_0x8129('0x1a')](_0x4f31b7)[_0x8129('0x2a')](_0x205e11);};}exports[_0x8129('0x2b')]=function(_0x11b408,_0x20f2aa){var _0x30ea60={},_0x2cee84={},_0x4846ad={'count':0x0,'rows':[]};var _0x570158=_[_0x8129('0x2c')](db[_0x8129('0x2d')]['rawAttributes'],function(_0x5e898d){return{'name':_0x5e898d[_0x8129('0x2e')],'type':_0x5e898d[_0x8129('0x2f')][_0x8129('0x30')]};});_0x2cee84[_0x8129('0x31')]=_[_0x8129('0x2c')](_0x570158,_0x8129('0x29'));_0x2cee84['query']=_['keys'](_0x11b408[_0x8129('0x32')]);_0x2cee84['filters']=_[_0x8129('0x33')](_0x2cee84[_0x8129('0x31')],_0x2cee84[_0x8129('0x32')]);_0x30ea60[_0x8129('0x34')]=_[_0x8129('0x33')](_0x2cee84[_0x8129('0x31')],qs[_0x8129('0x35')](_0x11b408['query'][_0x8129('0x35')]));_0x30ea60['attributes']=_0x30ea60[_0x8129('0x34')][_0x8129('0x36')]?_0x30ea60[_0x8129('0x34')]:_0x2cee84[_0x8129('0x31')];if(!_0x11b408['query'][_0x8129('0x37')]('nolimit')){_0x30ea60[_0x8129('0x20')]=qs[_0x8129('0x20')](_0x11b408['query'][_0x8129('0x20')]);_0x30ea60[_0x8129('0x1d')]=qs[_0x8129('0x1d')](_0x11b408[_0x8129('0x32')][_0x8129('0x1d')]);}_0x30ea60['order']=qs[_0x8129('0x38')](_0x11b408['query'][_0x8129('0x38')]);_0x30ea60[_0x8129('0x39')]=qs['filters'](_[_0x8129('0x3a')](_0x11b408[_0x8129('0x32')],_0x2cee84[_0x8129('0x3b')]),_0x570158);if(_0x11b408['query'][_0x8129('0x3c')]){_0x30ea60['where']=_[_0x8129('0x3d')](_0x30ea60['where'],{'$or':_[_0x8129('0x2c')](_0x570158,function(_0x207b34){if(_0x207b34[_0x8129('0x2f')]!==_0x8129('0x3e')){var _0x5eeaa2={};_0x5eeaa2[_0x207b34['name']]={'$like':'%'+_0x11b408[_0x8129('0x32')][_0x8129('0x3c')]+'%'};return _0x5eeaa2;}})});}_0x30ea60=_[_0x8129('0x3d')]({},_0x30ea60,_0x11b408['options']);var _0x2710cb={'where':_0x30ea60[_0x8129('0x39')]};return db[_0x8129('0x2d')]['count'](_0x2710cb)['then'](function(_0x5630ad){_0x4846ad['count']=_0x5630ad;if(_0x11b408[_0x8129('0x32')][_0x8129('0x3f')]){_0x30ea60[_0x8129('0x40')]=[{'all':!![]}];}return db[_0x8129('0x2d')][_0x8129('0x41')](_0x30ea60);})[_0x8129('0x26')](function(_0x3b483c){_0x4846ad[_0x8129('0x42')]=_0x3b483c;return _0x4846ad;})[_0x8129('0x26')](respondWithFilteredResult(_0x20f2aa,_0x30ea60))[_0x8129('0x43')](handleError(_0x20f2aa,null));};exports[_0x8129('0x44')]=function(_0xe9a00d,_0x535f81){var _0x239f82={'raw':!![],'where':{'id':_0xe9a00d[_0x8129('0x45')]['id']}},_0x1c7116={};_0x1c7116[_0x8129('0x31')]=_['keys'](db['Attachment'][_0x8129('0x46')]);_0x1c7116[_0x8129('0x32')]=_[_0x8129('0x47')](_0xe9a00d[_0x8129('0x32')]);_0x1c7116['filters']=_['intersection'](_0x1c7116[_0x8129('0x31')],_0x1c7116[_0x8129('0x32')]);_0x239f82[_0x8129('0x34')]=_['intersection'](_0x1c7116[_0x8129('0x31')],qs[_0x8129('0x35')](_0xe9a00d[_0x8129('0x32')][_0x8129('0x35')]));_0x239f82[_0x8129('0x34')]=_0x239f82[_0x8129('0x34')][_0x8129('0x36')]?_0x239f82['attributes']:_0x1c7116[_0x8129('0x31')];if(_0xe9a00d['query'][_0x8129('0x3f')]){_0x239f82[_0x8129('0x40')]=[{'all':!![]}];}_0x239f82=_[_0x8129('0x3d')]({},_0x239f82,_0xe9a00d[_0x8129('0x48')]);return db[_0x8129('0x2d')]['find'](_0x239f82)[_0x8129('0x26')](handleEntityNotFound(_0x535f81,null))[_0x8129('0x26')](respondWithResult(_0x535f81,null))[_0x8129('0x43')](handleError(_0x535f81,null));};exports['clone']=function(_0x5d6ccc,_0x18ca1c){var _0x3a022e={'where':{'id':_0x5d6ccc[_0x8129('0x45')]['id']}},_0x270a3d={};_0x270a3d[_0x8129('0x31')]=_[_0x8129('0x47')](db[_0x8129('0x2d')][_0x8129('0x46')]);_0x3a022e[_0x8129('0x34')]=_[_0x8129('0x33')](_0x270a3d[_0x8129('0x31')],qs[_0x8129('0x35')](_0x5d6ccc['query']['fields']));_0x3a022e[_0x8129('0x34')]=_0x3a022e[_0x8129('0x34')][_0x8129('0x36')]?_0x3a022e[_0x8129('0x34')]:_0x270a3d['model'];if(_0x5d6ccc[_0x8129('0x32')][_0x8129('0x3f')]){_0x3a022e[_0x8129('0x40')]=[{'all':!![]}];}_0x3a022e=_[_0x8129('0x3d')]({},_0x3a022e,_0x5d6ccc[_0x8129('0x48')]);return db[_0x8129('0x2d')]['find'](_0x3a022e)[_0x8129('0x26')](handleEntityNotFound(_0x18ca1c,null))[_0x8129('0x26')](function(_0x5eebfb){if(_0x5eebfb){var _0x52592e=_0x5eebfb[_0x8129('0x49')]({'plain':!![]});_0x52592e=qs[_0x8129('0x4a')](_0x52592e,['id','createdAt','updatedAt']);_0x5d6ccc[_0x8129('0x4b')]=_[_0x8129('0x4a')](_0x5d6ccc[_0x8129('0x4b')],['id',_0x8129('0x4c'),_0x8129('0x4d')]);return db['Attachment'][_0x8129('0x4e')](_['merge'](_0x52592e,_0x5d6ccc[_0x8129('0x4b')]),{'include':_0x5d6ccc[_0x8129('0x32')][_0x8129('0x3f')]?[{'all':!![]}]:undefined});}})['then'](respondWithResult(_0x18ca1c,0xc9))[_0x8129('0x43')](handleError(_0x18ca1c,null));};exports[_0x8129('0x25')]=function(_0x356452,_0x2ff630){if(_0x356452['body']['id']){delete _0x356452[_0x8129('0x4b')]['id'];}return db[_0x8129('0x2d')]['find']({'where':{'id':_0x356452['params']['id']}})[_0x8129('0x26')](handleEntityNotFound(_0x2ff630,null))[_0x8129('0x26')](saveUpdates(_0x356452[_0x8129('0x4b')],null))[_0x8129('0x26')](respondWithResult(_0x2ff630,null))[_0x8129('0x43')](handleError(_0x2ff630,null));};exports['destroy']=function(_0x53d6f3,_0x4ddb7a){return db[_0x8129('0x2d')][_0x8129('0x4f')]({'where':{'id':_0x53d6f3['params']['id']}})[_0x8129('0x26')](handleEntityNotFound(_0x4ddb7a,null))[_0x8129('0x26')](removeEntity(_0x4ddb7a,null))[_0x8129('0x43')](handleError(_0x4ddb7a,null));};exports[_0x8129('0x4e')]=function(_0x32a736,_0x2ab224,_0x465739){_0x32a736[_0x8129('0x4b')][_0x8129('0x29')]=_0x32a736['file'][_0x8129('0x50')];_0x32a736['body'][_0x8129('0x51')]=_0x32a736[_0x8129('0x52')][_0x8129('0x53')];_0x32a736[_0x8129('0x4b')]['type']=_0x32a736[_0x8129('0x52')][_0x8129('0x54')];return db['Attachment'][_0x8129('0x4e')](_0x32a736['body'])[_0x8129('0x26')](respondWithResult(_0x2ab224,0xc9))[_0x8129('0x43')](handleError(_0x2ab224,null));};exports[_0x8129('0x55')]=function(_0xb22135,_0x51d82f,_0xf59e4c){return db[_0x8129('0x2d')]['findOne']({'where':{'id':_0xb22135[_0x8129('0x45')]['id']},'raw':!![]})[_0x8129('0x26')](handleEntityNotFound(_0x51d82f,null))[_0x8129('0x26')](function(_0x545a47){if(_0x545a47){var _0x3fa176=_0x545a47[_0x8129('0x56')]!==null;var _0x4da8ca=path['join'](config[_0x8129('0x57')],_0x8129('0x58'));if(_0x3fa176){_0x4da8ca=path[_0x8129('0x59')](_0x4da8ca,'offline-chat/');}var _0x21fb03=path[_0x8129('0x59')](_0x4da8ca,_0x545a47[_0x8129('0x51')]);return _0x51d82f['download'](_0x21fb03);}})[_0x8129('0x43')](handleError(_0x51d82f,null));};
\ No newline at end of file
index 52cb280..3e8553e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb8b=['rimraf','../../config/environment','./attachment.attributes','define','attachments','lodash','util','../../config/logger','api','moment','path'];(function(_0x23c31a,_0xdc4107){var _0x4d5585=function(_0x1b5d46){while(--_0x1b5d46){_0x23c31a['push'](_0x23c31a['shift']());}};_0x4d5585(++_0xdc4107);}(_0xbb8b,0x94));var _0xbbb8=function(_0x58f4d5,_0x544abf){_0x58f4d5=_0x58f4d5-0x0;var _0x1fa72b=_0xbb8b[_0x58f4d5];return _0x1fa72b;};'use strict';var _=require(_0xbbb8('0x0'));var util=require(_0xbbb8('0x1'));var logger=require(_0xbbb8('0x2'))(_0xbbb8('0x3'));var moment=require(_0xbbb8('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xbbb8('0x5'));var rimraf=require(_0xbbb8('0x6'));var config=require(_0xbbb8('0x7'));var attributes=require(_0xbbb8('0x8'));module['exports']=function(_0x374c3f,_0x21101d){return _0x374c3f[_0xbbb8('0x9')]('Attachment',attributes,{'tableName':_0xbbb8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd54d=['util','../../config/logger','api','rimraf','./attachment.attributes','exports','define','Attachment','attachments'];(function(_0x29be44,_0x4f38b5){var _0x54394e=function(_0x214df0){while(--_0x214df0){_0x29be44['push'](_0x29be44['shift']());}};_0x54394e(++_0x4f38b5);}(_0xd54d,0x10e));var _0xdd54=function(_0x4f7ee9,_0x5e2e09){_0x4f7ee9=_0x4f7ee9-0x0;var _0x2dff3a=_0xd54d[_0x4f7ee9];return _0x2dff3a;};'use strict';var _=require('lodash');var util=require(_0xdd54('0x0'));var logger=require(_0xdd54('0x1'))(_0xdd54('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(_0xdd54('0x3'));var config=require('../../config/environment');var attributes=require(_0xdd54('0x4'));module[_0xdd54('0x5')]=function(_0x37ac75,_0x246439){return _0x37ac75[_0xdd54('0x6')](_0xdd54('0x7'),attributes,{'tableName':_0xdd54('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b1af33f..04380ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd64b=['http','request','info','Attachment,\x20%s,\x20%s','request\x20sent','Attachment,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateAttachment','Attachment','body','options','then','debug','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x123b5f,_0x573521){var _0x55d569=function(_0x34d1c5){while(--_0x34d1c5){_0x123b5f['push'](_0x123b5f['shift']());}};_0x55d569(++_0x573521);}(_0xd64b,0xc1));var _0xbd64=function(_0x46aad3,_0x5c363f){_0x46aad3=_0x46aad3-0x0;var _0x20e425=_0xd64b[_0x46aad3];return _0x20e425;};'use strict';var _=require(_0xbd64('0x0'));var util=require('util');var moment=require(_0xbd64('0x1'));var BPromise=require('bluebird');var rs=require(_0xbd64('0x2'));var fs=require('fs');var Redis=require(_0xbd64('0x3'));var db=require(_0xbd64('0x4'))['db'];var utils=require(_0xbd64('0x5'));var logger=require(_0xbd64('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xbd64('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x32995f,_0x3e700e,_0x38204e){return new BPromise(function(_0x3f1f17,_0x2b8543){return client[_0xbd64('0x8')](_0x32995f,_0x38204e)['then'](function(_0x5ae70c){logger[_0xbd64('0x9')](_0xbd64('0xa'),_0x3e700e,_0xbd64('0xb'));logger['debug'](_0xbd64('0xc'),_0x3e700e,_0xbd64('0xb'),JSON[_0xbd64('0xd')](_0x5ae70c));if(_0x5ae70c[_0xbd64('0xe')]){if(_0x5ae70c['error'][_0xbd64('0xf')]===0x1f4){logger['error'](_0xbd64('0xa'),_0x3e700e,_0x5ae70c[_0xbd64('0xe')][_0xbd64('0x10')]);return _0x2b8543(_0x5ae70c[_0xbd64('0xe')][_0xbd64('0x10')]);}logger[_0xbd64('0xe')](_0xbd64('0xa'),_0x3e700e,_0x5ae70c[_0xbd64('0xe')][_0xbd64('0x10')]);return _0x3f1f17(_0x5ae70c['error'][_0xbd64('0x10')]);}else{logger[_0xbd64('0x9')](_0xbd64('0xa'),_0x3e700e,_0xbd64('0xb'));_0x3f1f17(_0x5ae70c[_0xbd64('0x11')]['message']);}})[_0xbd64('0x12')](function(_0x5332e0){logger[_0xbd64('0xe')](_0xbd64('0xa'),_0x3e700e,_0x5332e0);_0x2b8543(_0x5332e0);});});}exports[_0xbd64('0x13')]=function(_0x1d7a14){var _0x17d015=this;return new Promise(function(_0x2f4554,_0xa5491d){return db[_0xbd64('0x14')]['create'](_0x1d7a14[_0xbd64('0x15')],{'raw':_0x1d7a14[_0xbd64('0x16')]?_0x1d7a14['options']['raw']===undefined?!![]:![]:!![]})[_0xbd64('0x17')](function(_0x42b328){logger[_0xbd64('0x9')](_0xbd64('0x13'),_0x1d7a14);logger[_0xbd64('0x18')](_0xbd64('0x13'),_0x1d7a14,JSON['stringify'](_0x42b328));_0x2f4554(_0x42b328);})['catch'](function(_0x6038f){logger[_0xbd64('0xe')](_0xbd64('0x13'),_0x6038f[_0xbd64('0x10')],_0x1d7a14);_0xa5491d(_0x17d015['error'](0x1f4,_0x6038f['message']));});});};
\ No newline at end of file
+var _0xa1fd=['jayson/promise','client','http','request','then','info','Attachment,\x20%s,\x20%s','debug','Attachment,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','result','CreateAttachment','create','body','options','raw','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x3b90ab,_0x174a22){var _0x206e92=function(_0x21fbd3){while(--_0x21fbd3){_0x3b90ab['push'](_0x3b90ab['shift']());}};_0x206e92(++_0x174a22);}(_0xa1fd,0x1b9));var _0xda1f=function(_0x2ceba7,_0x451ce4){_0x2ceba7=_0x2ceba7-0x0;var _0x5348eb=_0xa1fd[_0x2ceba7];return _0x5348eb;};'use strict';var _=require(_0xda1f('0x0'));var util=require(_0xda1f('0x1'));var moment=require(_0xda1f('0x2'));var BPromise=require(_0xda1f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xda1f('0x4'));var db=require(_0xda1f('0x5'))['db'];var utils=require(_0xda1f('0x6'));var logger=require(_0xda1f('0x7'))(_0xda1f('0x8'));var config=require('../../config/environment');var jayson=require(_0xda1f('0x9'));var client=jayson[_0xda1f('0xa')][_0xda1f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x552ba4,_0x33502e,_0x46a29e){return new BPromise(function(_0x199a8d,_0x338463){return client[_0xda1f('0xc')](_0x552ba4,_0x46a29e)[_0xda1f('0xd')](function(_0x1493f8){logger[_0xda1f('0xe')](_0xda1f('0xf'),_0x33502e,'request\x20sent');logger[_0xda1f('0x10')](_0xda1f('0x11'),_0x33502e,_0xda1f('0x12'),JSON[_0xda1f('0x13')](_0x1493f8));if(_0x1493f8['error']){if(_0x1493f8['error'][_0xda1f('0x14')]===0x1f4){logger[_0xda1f('0x15')](_0xda1f('0xf'),_0x33502e,_0x1493f8[_0xda1f('0x15')][_0xda1f('0x16')]);return _0x338463(_0x1493f8['error'][_0xda1f('0x16')]);}logger[_0xda1f('0x15')](_0xda1f('0xf'),_0x33502e,_0x1493f8[_0xda1f('0x15')][_0xda1f('0x16')]);return _0x199a8d(_0x1493f8[_0xda1f('0x15')]['message']);}else{logger[_0xda1f('0xe')](_0xda1f('0xf'),_0x33502e,_0xda1f('0x12'));_0x199a8d(_0x1493f8[_0xda1f('0x17')]['message']);}})['catch'](function(_0x3020ea){logger['error'](_0xda1f('0xf'),_0x33502e,_0x3020ea);_0x338463(_0x3020ea);});});}exports[_0xda1f('0x18')]=function(_0x1e10af){var _0x59b7bf=this;return new Promise(function(_0xe81fc2,_0xe18a0a){return db['Attachment'][_0xda1f('0x19')](_0x1e10af[_0xda1f('0x1a')],{'raw':_0x1e10af['options']?_0x1e10af[_0xda1f('0x1b')][_0xda1f('0x1c')]===undefined?!![]:![]:!![]})[_0xda1f('0xd')](function(_0xe85e94){logger[_0xda1f('0xe')](_0xda1f('0x18'),_0x1e10af);logger[_0xda1f('0x10')](_0xda1f('0x18'),_0x1e10af,JSON[_0xda1f('0x13')](_0xe85e94));_0xe81fc2(_0xe85e94);})[_0xda1f('0x1d')](function(_0x1d510b){logger[_0xda1f('0x15')]('CreateAttachment',_0x1d510b[_0xda1f('0x16')],_0x1e10af);_0xe18a0a(_0x59b7bf['error'](0x1f4,_0x1d510b[_0xda1f('0x16')]));});});};
\ No newline at end of file
index eec75bf..49ae633 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/download','/:id/clone','clone','diskStorage','root','format','%s-%s','now','originalname','replace','post','single','file','create','delete','destroy','exports','util','connect-timeout','express','Router'];(function(_0x209fcd,_0x1ecccc){var _0x501d5e=function(_0x8d74fe){while(--_0x8d74fe){_0x209fcd['push'](_0x209fcd['shift']());}};_0x501d5e(++_0x1ecccc);}(_0x5f66,0x1a0));var _0x65f6=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x5f66[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require('multer');var util=require(_0x65f6('0x0'));var path=require('path');var timeout=require(_0x65f6('0x1'));var express=require(_0x65f6('0x2'));var router=express[_0x65f6('0x3')]();var fs_extra=require(_0x65f6('0x4'));var auth=require(_0x65f6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x65f6('0x6'));var controller=require('./attachment.controller');router[_0x65f6('0x7')]('/',auth[_0x65f6('0x8')](),controller['index']);router['get'](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xa')]);router[_0x65f6('0x7')](_0x65f6('0xb'),auth[_0x65f6('0x8')](),controller['download']);router['post'](_0x65f6('0xc'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xd')]);var upload=multer({'storage':multer[_0x65f6('0xe')]({'destination':function(_0x50d26d,_0x41a7fd,_0x571436){_0x571436(null,path['join'](config[_0x65f6('0xf')],'server/files/attachments/'));},'filename':function(_0x419819,_0x4862a5,_0x2f964a){_0x2f964a(null,util[_0x65f6('0x10')](_0x65f6('0x11'),Date[_0x65f6('0x12')](),_0x4862a5[_0x65f6('0x13')][_0x65f6('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x65f6('0x15')]('/',upload[_0x65f6('0x16')](_0x65f6('0x17')),controller[_0x65f6('0x18')]);router['put'](_0x65f6('0x9'),auth['isAuthenticated'](),controller['update']);router[_0x65f6('0x19')](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0x1a')]);module[_0x65f6('0x1b')]=router;
\ No newline at end of file
+var _0xdb28=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/download','download','/:id/clone','clone','join','root','server/files/attachments/','%s-%s','now','originalname','replace','post','single','file','create','put','update','delete','destroy','exports','multer','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdb28,0x106));var _0x8db2=function(_0x262ed7,_0x3aa5ff){_0x262ed7=_0x262ed7-0x0;var _0x1fb031=_0xdb28[_0x262ed7];return _0x1fb031;};'use strict';var multer=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var path=require(_0x8db2('0x2'));var timeout=require(_0x8db2('0x3'));var express=require('express');var router=express[_0x8db2('0x4')]();var fs_extra=require(_0x8db2('0x5'));var auth=require(_0x8db2('0x6'));var interaction=require(_0x8db2('0x7'));var config=require(_0x8db2('0x8'));var controller=require('./attachment.controller');router[_0x8db2('0x9')]('/',auth[_0x8db2('0xa')](),controller['index']);router['get'](_0x8db2('0xb'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xc')]);router[_0x8db2('0x9')](_0x8db2('0xd'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xe')]);router['post'](_0x8db2('0xf'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x10')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1d9371,_0x150942,_0x576475){_0x576475(null,path[_0x8db2('0x11')](config[_0x8db2('0x12')],_0x8db2('0x13')));},'filename':function(_0x204f49,_0x37d017,_0x559fb1){_0x559fb1(null,util['format'](_0x8db2('0x14'),Date[_0x8db2('0x15')](),_0x37d017[_0x8db2('0x16')][_0x8db2('0x17')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x8db2('0x18')]('/',upload[_0x8db2('0x19')](_0x8db2('0x1a')),controller[_0x8db2('0x1b')]);router[_0x8db2('0x1c')](_0x8db2('0xb'),auth['isAuthenticated'](),controller[_0x8db2('0x1d')]);router[_0x8db2('0x1e')]('/:id',auth[_0x8db2('0xa')](),controller[_0x8db2('0x1f')]);module[_0x8db2('0x20')]=router;
\ No newline at end of file
index e9076c4..4043802 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cbe=['clearBlockUser','getLicense','lodash','Strategy','../../mysqldb','../../config/environment','../../components/auth/service','signToken','../../config/utils','login','email','callback','google','/login','use','clientID','clientSecret','callbackURL','findOne','blockDuration','User','find','emails','value','admin','user','then','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blocked','blockedAt','minutes'];(function(_0x44e5c7,_0x3102eb){var _0x3bf7ac=function(_0x113a0f){while(--_0x113a0f){_0x44e5c7['push'](_0x44e5c7['shift']());}};_0x3bf7ac(++_0x3102eb);}(_0x0cbe,0x1b4));var _0xe0cb=function(_0x1230b9,_0x2e3b21){_0x1230b9=_0x1230b9-0x0;var _0x34d5d0=_0x0cbe[_0x1230b9];return _0x34d5d0;};'use strict';var _=require(_0xe0cb('0x0'));var passport=require('passport');var GoogleStrategy=require('passport-google-oauth20')[_0xe0cb('0x1')];var moment=require('moment');var db=require(_0xe0cb('0x2'))['db'];var config=require(_0xe0cb('0x3'));var signToken=require(_0xe0cb('0x4'))[_0xe0cb('0x5')];var utils=require(_0xe0cb('0x6'));exports[_0xe0cb('0x7')]=passport['authenticate']('google',{'failureRedirect':'/login','scope':['profile',_0xe0cb('0x8')],'session':![]});exports[_0xe0cb('0x9')]=passport['authenticate'](_0xe0cb('0xa'),{'failureRedirect':_0xe0cb('0xb'),'session':![]});passport[_0xe0cb('0xc')](new GoogleStrategy({'clientID':config['google']?config[_0xe0cb('0xa')][_0xe0cb('0xd')]:'id','clientSecret':config['google']?config['google'][_0xe0cb('0xe')]:'secret','callbackURL':config['google']?config[_0xe0cb('0xa')][_0xe0cb('0xf')]:''},function(_0xeacbc4,_0x355c98,_0x2a3130,_0x14eb18){var _0x60ddba,_0x5e69ec;return db['Setting'][_0xe0cb('0x10')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xe0cb('0x11')],'raw':!![]})['then'](function(_0x3165cf){_0x60ddba=_0x3165cf;return db[_0xe0cb('0x12')][_0xe0cb('0x13')]({'where':{'email':_['map'](_0x2a3130[_0xe0cb('0x14')],_0xe0cb('0x15')),'role':{'$or':[_0xe0cb('0x16'),_0xe0cb('0x17'),'agent']}}});})[_0xe0cb('0x18')](function(_0x58bc44){_0x5e69ec=_0x58bc44;if(_0x5e69ec){if(_0x5e69ec['disabled']){return _0x14eb18(_0xe0cb('0x19'));}else if(_0x60ddba[_0xe0cb('0x11')]>0x0){if(_0x5e69ec[_0xe0cb('0x1a')]){if(moment(_0x5e69ec[_0xe0cb('0x1b')])['add'](_0x60ddba[_0xe0cb('0x11')],_0xe0cb('0x1c'))>moment()){return _0x14eb18('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{return utils[_0xe0cb('0x1d')](_0x5e69ec,0x0,![],null)['then'](function(){return utils[_0xe0cb('0x1e')](_0x5e69ec);})['then'](function(){return _0x14eb18(null,_0x5e69ec);});}}else{return utils[_0xe0cb('0x1e')](_0x5e69ec)[_0xe0cb('0x18')](function(){return _0x14eb18(null,_0x5e69ec);});}}else{return utils['getLicense'](_0x5e69ec)[_0xe0cb('0x18')](function(){return _0x14eb18(null,_0x5e69ec);});}}return _0x14eb18(_0xe0cb('0x19'));})['catch'](function(_0x3d8a8d){_0x14eb18(_0x3d8a8d);});}));
\ No newline at end of file
+var _0x5cf1=['google','profile','email','callback','/login','use','clientID','clientSecret','secret','callbackURL','Setting','findOne','blockDuration','User','map','emails','value','admin','user','agent','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blocked','blockedAt','add','clearBlockUser','getLicense','then','catch','lodash','passport','passport-google-oauth20','moment','../../mysqldb','../../config/environment','../../components/auth/service','signToken','../../config/utils'];(function(_0x5d5c0d,_0x4611b6){var _0x47549d=function(_0x5f4afb){while(--_0x5f4afb){_0x5d5c0d['push'](_0x5d5c0d['shift']());}};_0x47549d(++_0x4611b6);}(_0x5cf1,0x199));var _0x15cf=function(_0x4eab61,_0x1a6e6d){_0x4eab61=_0x4eab61-0x0;var _0x342426=_0x5cf1[_0x4eab61];return _0x342426;};'use strict';var _=require(_0x15cf('0x0'));var passport=require(_0x15cf('0x1'));var GoogleStrategy=require(_0x15cf('0x2'))['Strategy'];var moment=require(_0x15cf('0x3'));var db=require(_0x15cf('0x4'))['db'];var config=require(_0x15cf('0x5'));var signToken=require(_0x15cf('0x6'))[_0x15cf('0x7')];var utils=require(_0x15cf('0x8'));exports['login']=passport['authenticate'](_0x15cf('0x9'),{'failureRedirect':'/login','scope':[_0x15cf('0xa'),_0x15cf('0xb')],'session':![]});exports[_0x15cf('0xc')]=passport['authenticate'](_0x15cf('0x9'),{'failureRedirect':_0x15cf('0xd'),'session':![]});passport[_0x15cf('0xe')](new GoogleStrategy({'clientID':config['google']?config['google'][_0x15cf('0xf')]:'id','clientSecret':config[_0x15cf('0x9')]?config[_0x15cf('0x9')][_0x15cf('0x10')]:_0x15cf('0x11'),'callbackURL':config['google']?config[_0x15cf('0x9')][_0x15cf('0x12')]:''},function(_0x349685,_0x2b0e08,_0x13b9c1,_0x3029d){var _0x45a442,_0x3142c2;return db[_0x15cf('0x13')][_0x15cf('0x14')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0x15cf('0x15')],'raw':!![]})['then'](function(_0x1d8249){_0x45a442=_0x1d8249;return db[_0x15cf('0x16')]['find']({'where':{'email':_[_0x15cf('0x17')](_0x13b9c1[_0x15cf('0x18')],_0x15cf('0x19')),'role':{'$or':[_0x15cf('0x1a'),_0x15cf('0x1b'),_0x15cf('0x1c')]}}});})['then'](function(_0xde9d49){_0x3142c2=_0xde9d49;if(_0x3142c2){if(_0x3142c2[_0x15cf('0x1d')]){return _0x3029d(_0x15cf('0x1e'));}else if(_0x45a442[_0x15cf('0x15')]>0x0){if(_0x3142c2[_0x15cf('0x1f')]){if(moment(_0x3142c2[_0x15cf('0x20')])[_0x15cf('0x21')](_0x45a442['blockDuration'],'minutes')>moment()){return _0x3029d(_0x15cf('0x1e'));}else{return utils[_0x15cf('0x22')](_0x3142c2,0x0,![],null)['then'](function(){return utils[_0x15cf('0x23')](_0x3142c2);})[_0x15cf('0x24')](function(){return _0x3029d(null,_0x3142c2);});}}else{return utils['getLicense'](_0x3142c2)['then'](function(){return _0x3029d(null,_0x3142c2);});}}else{return utils[_0x15cf('0x23')](_0x3142c2)[_0x15cf('0x24')](function(){return _0x3029d(null,_0x3142c2);});}}return _0x3029d('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');})[_0x15cf('0x25')](function(_0x3807fb){_0x3029d(_0x3807fb);});}));
\ No newline at end of file
index c71290c..b1a6ec0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5458=['Router','./authGoogle.controller','login','get','/callback','callback','isMiddleware','setTokenCookie','exports','express','passport'];(function(_0xc57312,_0x2a29fc){var _0x149a92=function(_0x1eaa88){while(--_0x1eaa88){_0xc57312['push'](_0xc57312['shift']());}};_0x149a92(++_0x2a29fc);}(_0x5458,0x1d7));var _0x8545=function(_0x2cec32,_0x3d8434){_0x2cec32=_0x2cec32-0x0;var _0x2f50fd=_0x5458[_0x2cec32];return _0x2f50fd;};'use strict';var express=require(_0x8545('0x0'));var passport=require(_0x8545('0x1'));var router=express[_0x8545('0x2')]();var controller=require(_0x8545('0x3'));var userController=require('../user/user.controller.js');var authService=require('../../components/auth/service');router['get']('/',controller[_0x8545('0x4')]);router[_0x8545('0x5')](_0x8545('0x6'),controller[_0x8545('0x7')],authService[_0x8545('0x8')],userController[_0x8545('0x4')],authService[_0x8545('0x9')]);module[_0x8545('0xa')]=router;
\ No newline at end of file
+var _0xae16=['/callback','callback','setTokenCookie','exports','express','Router','../user/user.controller.js','login','get'];(function(_0x4b2b5a,_0x3f7555){var _0x47f812=function(_0x4de6ef){while(--_0x4de6ef){_0x4b2b5a['push'](_0x4b2b5a['shift']());}};_0x47f812(++_0x3f7555);}(_0xae16,0xee));var _0x6ae1=function(_0x50cafc,_0x4a691b){_0x50cafc=_0x50cafc-0x0;var _0x1990d2=_0xae16[_0x50cafc];return _0x1990d2;};'use strict';var express=require(_0x6ae1('0x0'));var passport=require('passport');var router=express[_0x6ae1('0x1')]();var controller=require('./authGoogle.controller');var userController=require(_0x6ae1('0x2'));var authService=require('../../components/auth/service');router['get']('/',controller[_0x6ae1('0x3')]);router[_0x6ae1('0x4')](_0x6ae1('0x5'),controller[_0x6ae1('0x6')],authService['isMiddleware'],userController[_0x6ae1('0x3')],authService[_0x6ae1('0x7')]);module[_0x6ae1('0x8')]=router;
\ No newline at end of file
index 3337add..a6ade50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c67=['Something\x20went\x20wrong,\x20please\x20try\x20again.','json','online','body','Email\x20parameter\x20is\x20missing','generate','trim','toLowerCase','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordExpires','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','https://','headers','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','status','reset','User','params','now','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','save','Password\x20reset!','use','util','passport','passport-local','Strategy','jayson/promise','lodash','randomstring','moment','../../mysqldb','../../components/auth/service','../../config/utils','client','http','Setting','findOne','allowedLoginAttempts','then','name','password','role','blocked','blockedAt','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','loginAttempts','disabled','add','blockDuration','minutes','clearBlockUser','getLicense','catch','MailAccount','find','email','Smtp','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','service','host','port','secure','authentication','auth','format','\x22%s\x22\x20<%s>','request','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','send','local'];(function(_0x27e850,_0x43ce4d){var _0x4f89a7=function(_0x518a47){while(--_0x518a47){_0x27e850['push'](_0x27e850['shift']());}};_0x4f89a7(++_0x43ce4d);}(_0x4c67,0x1cd));var _0x74c6=function(_0xb0d70a,_0x184342){_0xb0d70a=_0xb0d70a-0x0;var _0xb600c7=_0x4c67[_0xb0d70a];return _0xb600c7;};'use strict';var util=require(_0x74c6('0x0'));var passport=require(_0x74c6('0x1'));var LocalStrategy=require(_0x74c6('0x2'))[_0x74c6('0x3')];var jayson=require(_0x74c6('0x4'));var _=require(_0x74c6('0x5'));var rs=require(_0x74c6('0x6'));var moment=require(_0x74c6('0x7'));var db=require(_0x74c6('0x8'))['db'];var authService=require(_0x74c6('0x9'));var utils=require(_0x74c6('0xa'));var client=jayson[_0x74c6('0xb')][_0x74c6('0xc')]({'port':0x232b});function localAuthenticate(_0x3a86dc,_0xf3a76e,_0x5d446c,_0x13a36d){var _0x3973d8,_0x36a3df;return db[_0x74c6('0xd')][_0x74c6('0xe')]({'where':{'id':0x1},'attributes':[_0x74c6('0xf'),'blockDuration'],'raw':!![]})[_0x74c6('0x10')](function(_0x5055f8){_0x3973d8=_0x5055f8;return _0x3a86dc[_0x74c6('0xe')]({'attributes':['id',_0x74c6('0x11'),_0x74c6('0x12'),'salt',_0x74c6('0x13'),'disabled',_0x74c6('0x14'),_0x74c6('0x15'),'loginAttempts'],'where':{'name':_0xf3a76e,'role':{'$or':[_0x74c6('0x16'),_0x74c6('0x17'),_0x74c6('0x18')]}}});})['then'](function(_0x108b5d){if(!_0x108b5d||_0x108b5d&&_0x108b5d[_0x74c6('0x11')]!==_0xf3a76e){throw new Error(_0x74c6('0x19'));}else{_0x36a3df=_0x108b5d;return _0x36a3df;}})['then'](function(){_0x36a3df[_0x74c6('0x1a')](_0x5d446c,function(_0x59f524,_0x40b62e){var _0x496784=_0x36a3df[_0x74c6('0x1b')]+0x1;if(_0x59f524){return _0x13a36d(_0x59f524);}else if(!_0x40b62e){if(_0x36a3df[_0x74c6('0x1c')]){return _0x13a36d(null,![],{'message':_0x74c6('0x19')});}else if(_0x3973d8[_0x74c6('0xf')]>0x0){if(_0x36a3df[_0x74c6('0x14')]){if(_0x3973d8['blockDuration']>0x0){if(moment(_0x36a3df[_0x74c6('0x15')])[_0x74c6('0x1d')](_0x3973d8[_0x74c6('0x1e')],_0x74c6('0x1f'))>moment()){return _0x13a36d(null,![],{'message':_0x74c6('0x19')});}else{return utils[_0x74c6('0x20')](_0x36a3df,_0x496784,![],null)[_0x74c6('0x10')](function(){return _0x13a36d(null,![],{'message':_0x74c6('0x19')});});}}else{return _0x13a36d(null,![],{'message':_0x74c6('0x19')});}}else{if(_0x496784>=_0x3973d8[_0x74c6('0xf')]){return utils['clearBlockUser'](_0x36a3df,0x0,!![],moment())[_0x74c6('0x10')](function(){return _0x13a36d(null,![],{'message':_0x74c6('0x19')});});}else{return utils[_0x74c6('0x20')](_0x36a3df,_0x496784,![],null)[_0x74c6('0x10')](function(){return _0x13a36d(null,![],{'message':_0x74c6('0x19')});});}}}else{return _0x13a36d(null,![],{'message':_0x74c6('0x19')});}}else{if(_0x36a3df['disabled']){return _0x13a36d(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0x3973d8[_0x74c6('0xf')]>0x0){if(_0x36a3df[_0x74c6('0x14')]){if(_0x3973d8[_0x74c6('0x1e')]>0x0){if(moment(_0x36a3df[_0x74c6('0x15')])[_0x74c6('0x1d')](_0x3973d8[_0x74c6('0x1e')],_0x74c6('0x1f'))>moment()){return _0x13a36d(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x74c6('0x20')](_0x36a3df,0x0,![],null)['then'](function(){return utils[_0x74c6('0x21')](_0x36a3df);})['then'](function(){return _0x13a36d(null,_0x36a3df);});}}else{return _0x13a36d(null,![],{'message':_0x74c6('0x19')});}}else{return utils['clearBlockUser'](_0x36a3df,0x0,![],null)[_0x74c6('0x10')](function(){return utils['getLicense'](_0x36a3df);})['then'](function(){return _0x13a36d(null,_0x36a3df);})[_0x74c6('0x22')](function(_0x45d95d){return _0x13a36d(null,![],_0x45d95d);});}}else{if(_0x36a3df['blocked']){return _0x13a36d(null,![],{'message':_0x74c6('0x19')});}else{return utils[_0x74c6('0x21')](_0x36a3df)['then'](function(){return _0x13a36d(null,_0x36a3df);});}}}});})['catch'](function(_0x3b4f70){return _0x13a36d(null,![],_0x3b4f70);});}function sendServiceMail(_0x22502d){return db[_0x74c6('0x23')][_0x74c6('0x24')]({'where':{'service':!![]},'attributes':['id',_0x74c6('0x11'),_0x74c6('0x25')],'include':[{'model':db['MailServerOut'],'as':_0x74c6('0x26')}]})['then'](function(_0x55512a){if(!_0x55512a){throw new Error(_0x74c6('0x27'));}var _0x3233f6={'tls':{'rejectUnauthorized':![]}};if(_0x55512a[_0x74c6('0x26')]['service']){_0x3233f6[_0x74c6('0x28')]=_0x55512a['Smtp'][_0x74c6('0x28')];}else{_0x3233f6[_0x74c6('0x29')]=_0x55512a[_0x74c6('0x26')][_0x74c6('0x29')];_0x3233f6[_0x74c6('0x2a')]=_0x55512a[_0x74c6('0x26')][_0x74c6('0x2a')];_0x3233f6['secure']=_0x55512a[_0x74c6('0x26')][_0x74c6('0x2b')];}if(_0x55512a[_0x74c6('0x26')][_0x74c6('0x2c')]){_0x3233f6[_0x74c6('0x2d')]={'user':_0x55512a[_0x74c6('0x26')][_0x74c6('0x17')],'pass':_0x55512a[_0x74c6('0x26')]['pass']};}var _0x4fff33={'account':_0x3233f6,'message':_['merge']({'from':util[_0x74c6('0x2e')](_0x74c6('0x2f'),_0x55512a[_0x74c6('0x11')],_0x55512a[_0x74c6('0x25')]||_0x55512a[_0x74c6('0x26')]['user'])},_0x22502d)};return client[_0x74c6('0x30')]('SendMail',_0x4fff33);})[_0x74c6('0x10')](function(_0x998db8){if(_0x998db8[_0x74c6('0x31')]){throw new Error(util[_0x74c6('0x2e')](_0x74c6('0x32'),_0x998db8[_0x74c6('0x31')][_0x74c6('0x33')]||JSON[_0x74c6('0x34')](_0x998db8[_0x74c6('0x31')])));}return!![];});}function handleError(_0x389454,_0x5682ca,_0x22aa1a){return _0x389454['status'](_0x5682ca||0x1f4)[_0x74c6('0x35')]({'message':_0x22aa1a?_0x22aa1a['message']||_0x22aa1a:''});}exports['login']=function(_0x410a6a,_0x1e5b06,_0x16e3d1){passport['authenticate'](_0x74c6('0x36'),function(_0x1cea8a,_0x3c700f,_0x511459){var _0x1fe02e=_0x1cea8a||_0x511459;if(_0x1fe02e){return handleError(_0x1e5b06,0x191,_0x1fe02e);}if(!_0x3c700f){return handleError(_0x1e5b06,0x194,{'message':_0x74c6('0x37')});}else{var _0x46c590={'payload':{'id':_0x3c700f['id'],'role':_0x3c700f[_0x74c6('0x13')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x46c590)['then'](function(_0x3679f6){_0x1e5b06[_0x74c6('0x38')]({'id':_0x3c700f['id'],'token':_0x3679f6,'statusCall':'','isAlreadyLogged':_0x3c700f[_0x74c6('0x39')]});});}})(_0x410a6a,_0x1e5b06,_0x16e3d1);};exports['forgot']=function(_0x18b20b,_0x11acf1,_0x293ce4){if(!_0x18b20b[_0x74c6('0x3a')]['email']){return handleError(_0x11acf1,0x1f4,{'message':_0x74c6('0x3b')});}var _0x3fa2e7=rs[_0x74c6('0x3c')]();_0x18b20b[_0x74c6('0x3a')][_0x74c6('0x25')]=_0x18b20b[_0x74c6('0x3a')][_0x74c6('0x25')][_0x74c6('0x3d')]()[_0x74c6('0x3e')]();var _0x102dfb;return db[_0x74c6('0xd')]['findOne']({'where':{'id':0x1},'attributes':[_0x74c6('0xf'),_0x74c6('0x1e')],'raw':!![]})[_0x74c6('0x10')](function(_0x3bc978){_0x102dfb=_0x3bc978;return db['User'][_0x74c6('0x24')]({'where':{'email':_0x18b20b[_0x74c6('0x3a')][_0x74c6('0x25')]}});})[_0x74c6('0x10')](function(_0x5184b0){if(!_0x5184b0){throw new Error(_0x74c6('0x3f'));}if(_0x5184b0['disabled']){throw new Error('The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.');}if(_0x5184b0[_0x74c6('0x14')]){if(moment(_0x5184b0[_0x74c6('0x15')])['add'](_0x102dfb[_0x74c6('0x1e')],'minutes')>moment()){throw new Error(_0x74c6('0x40'));}else{_0x5184b0[_0x74c6('0x14')]=![];_0x5184b0['blockedAt']=null;}}_0x5184b0['resetPasswordToken']=_0x3fa2e7;_0x5184b0[_0x74c6('0x41')]=Date['now']()+0x36ee80;return _0x5184b0['save']();})['then'](function(){return sendServiceMail({'to':_0x18b20b[_0x74c6('0x3a')]['email'],'subject':'xCally\x20Motion\x20Password\x20Reset','text':'You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a'+_0x74c6('0x42')+_0x74c6('0x43')+_0x18b20b[_0x74c6('0x44')][_0x74c6('0x29')]+_0x74c6('0x45')+_0x3fa2e7+'\x0a\x0a'+_0x74c6('0x46')});})[_0x74c6('0x10')](function(){_0x11acf1[_0x74c6('0x47')](0xc8)[_0x74c6('0x35')]({'message':'Reset\x20Email\x20sent!'});})[_0x74c6('0x22')](function(_0x9000c7){return handleError(_0x11acf1,0x1f4,_0x9000c7);});};exports[_0x74c6('0x48')]=function(_0x444859,_0x233f44,_0x915102){return db[_0x74c6('0x49')]['find']({'where':{'resetPasswordToken':_0x444859[_0x74c6('0x4a')]['token'],'resetPasswordExpires':{'$gt':Date[_0x74c6('0x4b')]()}}})[_0x74c6('0x10')](function(_0x5bbd3f){if(!_0x5bbd3f){throw new Error(_0x74c6('0x4c'));}return db[_0x74c6('0xd')][_0x74c6('0xe')]({'attributes':['id',_0x74c6('0x4d'),_0x74c6('0x4e'),_0x74c6('0x4f')]})[_0x74c6('0x10')](function(_0x431262){if(_0x431262['securePassword'])authService[_0x74c6('0x50')](_0x444859[_0x74c6('0x3a')][_0x74c6('0x12')]);if(!_0x431262[_0x74c6('0x4e')]||!_0x5bbd3f[_0x74c6('0x51')])return _0x5bbd3f;authService[_0x74c6('0x52')](_0x444859['body'][_0x74c6('0x12')],_0x5bbd3f[_0x74c6('0x51')],_0x431262['passwordHistoryLimit']);return _0x5bbd3f;})[_0x74c6('0x10')](function(){_0x5bbd3f[_0x74c6('0x12')]=_0x444859[_0x74c6('0x3a')][_0x74c6('0x12')];_0x5bbd3f['resetPasswordToken']=null;_0x5bbd3f[_0x74c6('0x41')]=null;return _0x5bbd3f[_0x74c6('0x53')]();});})['then'](function(){_0x233f44[_0x74c6('0x47')](0xc8)[_0x74c6('0x35')]({'message':_0x74c6('0x54')});})[_0x74c6('0x22')](function(_0x44cba8){return handleError(_0x233f44,0x1f4,_0x44cba8);});};passport[_0x74c6('0x55')](new LocalStrategy({'usernameField':_0x74c6('0x11'),'passwordField':_0x74c6('0x12')},function(_0x531d6a,_0x5452d6,_0x53cd52){return localAuthenticate(db[_0x74c6('0x49')],_0x531d6a,_0x5452d6,_0x53cd52);}));
\ No newline at end of file
+var _0x41fc=['If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','send','Reset\x20Email\x20sent!','reset','params','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','enforcePasswordHistory','passwordHistoryLimit','securePassword','previousPasswords','validatePasswordHistory','password','use','util','passport','jayson/promise','lodash','randomstring','../../mysqldb','../../components/auth/service','../../config/utils','http','Setting','allowedLoginAttempts','blockDuration','then','findOne','name','salt','role','disabled','blocked','blockedAt','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','add','minutes','clearBlockUser','getLicense','catch','MailAccount','find','MailServerOut','Smtp','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','service','host','port','secure','authentication','auth','pass','merge','\x22%s\x22\x20<%s>','email','request','SendMail','error','format','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','stringify','status','message','login','authenticate','local','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','online','forgot','body','generate','trim','toLowerCase','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','save','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','https://'];(function(_0x462435,_0x428194){var _0x1bbfe7=function(_0xeb7e81){while(--_0xeb7e81){_0x462435['push'](_0x462435['shift']());}};_0x1bbfe7(++_0x428194);}(_0x41fc,0x1c6));var _0xc41f=function(_0xb26cca,_0x7d38ae){_0xb26cca=_0xb26cca-0x0;var _0x28f481=_0x41fc[_0xb26cca];return _0x28f481;};'use strict';var util=require(_0xc41f('0x0'));var passport=require(_0xc41f('0x1'));var LocalStrategy=require('passport-local')['Strategy'];var jayson=require(_0xc41f('0x2'));var _=require(_0xc41f('0x3'));var rs=require(_0xc41f('0x4'));var moment=require('moment');var db=require(_0xc41f('0x5'))['db'];var authService=require(_0xc41f('0x6'));var utils=require(_0xc41f('0x7'));var client=jayson['client'][_0xc41f('0x8')]({'port':0x232b});function localAuthenticate(_0x2c5489,_0x16cbdf,_0x3e9bbe,_0x373bd8){var _0x393fa2,_0x1cb648;return db[_0xc41f('0x9')]['findOne']({'where':{'id':0x1},'attributes':[_0xc41f('0xa'),_0xc41f('0xb')],'raw':!![]})[_0xc41f('0xc')](function(_0x1ee603){_0x393fa2=_0x1ee603;return _0x2c5489[_0xc41f('0xd')]({'attributes':['id',_0xc41f('0xe'),'password',_0xc41f('0xf'),_0xc41f('0x10'),_0xc41f('0x11'),_0xc41f('0x12'),_0xc41f('0x13'),'loginAttempts'],'where':{'name':_0x16cbdf,'role':{'$or':[_0xc41f('0x14'),_0xc41f('0x15'),_0xc41f('0x16')]}}});})[_0xc41f('0xc')](function(_0x2cb5a9){if(!_0x2cb5a9||_0x2cb5a9&&_0x2cb5a9[_0xc41f('0xe')]!==_0x16cbdf){throw new Error(_0xc41f('0x17'));}else{_0x1cb648=_0x2cb5a9;return _0x1cb648;}})['then'](function(){_0x1cb648['authenticate'](_0x3e9bbe,function(_0x489169,_0x349fb7){var _0x22ef4e=_0x1cb648['loginAttempts']+0x1;if(_0x489169){return _0x373bd8(_0x489169);}else if(!_0x349fb7){if(_0x1cb648[_0xc41f('0x11')]){return _0x373bd8(null,![],{'message':_0xc41f('0x17')});}else if(_0x393fa2['allowedLoginAttempts']>0x0){if(_0x1cb648[_0xc41f('0x12')]){if(_0x393fa2[_0xc41f('0xb')]>0x0){if(moment(_0x1cb648[_0xc41f('0x13')])[_0xc41f('0x18')](_0x393fa2[_0xc41f('0xb')],_0xc41f('0x19'))>moment()){return _0x373bd8(null,![],{'message':_0xc41f('0x17')});}else{return utils['clearBlockUser'](_0x1cb648,_0x22ef4e,![],null)[_0xc41f('0xc')](function(){return _0x373bd8(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}else{return _0x373bd8(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x22ef4e>=_0x393fa2[_0xc41f('0xa')]){return utils[_0xc41f('0x1a')](_0x1cb648,0x0,!![],moment())[_0xc41f('0xc')](function(){return _0x373bd8(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}else{return utils[_0xc41f('0x1a')](_0x1cb648,_0x22ef4e,![],null)[_0xc41f('0xc')](function(){return _0x373bd8(null,![],{'message':_0xc41f('0x17')});});}}}else{return _0x373bd8(null,![],{'message':_0xc41f('0x17')});}}else{if(_0x1cb648[_0xc41f('0x11')]){return _0x373bd8(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0x393fa2[_0xc41f('0xa')]>0x0){if(_0x1cb648[_0xc41f('0x12')]){if(_0x393fa2['blockDuration']>0x0){if(moment(_0x1cb648[_0xc41f('0x13')])[_0xc41f('0x18')](_0x393fa2[_0xc41f('0xb')],'minutes')>moment()){return _0x373bd8(null,![],{'message':_0xc41f('0x17')});}else{return utils[_0xc41f('0x1a')](_0x1cb648,0x0,![],null)[_0xc41f('0xc')](function(){return utils[_0xc41f('0x1b')](_0x1cb648);})[_0xc41f('0xc')](function(){return _0x373bd8(null,_0x1cb648);});}}else{return _0x373bd8(null,![],{'message':_0xc41f('0x17')});}}else{return utils[_0xc41f('0x1a')](_0x1cb648,0x0,![],null)[_0xc41f('0xc')](function(){return utils[_0xc41f('0x1b')](_0x1cb648);})[_0xc41f('0xc')](function(){return _0x373bd8(null,_0x1cb648);})[_0xc41f('0x1c')](function(_0x23b0b1){return _0x373bd8(null,![],_0x23b0b1);});}}else{if(_0x1cb648[_0xc41f('0x12')]){return _0x373bd8(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xc41f('0x1b')](_0x1cb648)[_0xc41f('0xc')](function(){return _0x373bd8(null,_0x1cb648);});}}}});})[_0xc41f('0x1c')](function(_0x302abe){return _0x373bd8(null,![],_0x302abe);});}function sendServiceMail(_0x5591cd){return db[_0xc41f('0x1d')][_0xc41f('0x1e')]({'where':{'service':!![]},'attributes':['id',_0xc41f('0xe'),'email'],'include':[{'model':db[_0xc41f('0x1f')],'as':_0xc41f('0x20')}]})[_0xc41f('0xc')](function(_0xd82afc){if(!_0xd82afc){throw new Error(_0xc41f('0x21'));}var _0x3bb2e9={'tls':{'rejectUnauthorized':![]}};if(_0xd82afc[_0xc41f('0x20')][_0xc41f('0x22')]){_0x3bb2e9[_0xc41f('0x22')]=_0xd82afc[_0xc41f('0x20')][_0xc41f('0x22')];}else{_0x3bb2e9['host']=_0xd82afc['Smtp'][_0xc41f('0x23')];_0x3bb2e9[_0xc41f('0x24')]=_0xd82afc[_0xc41f('0x20')]['port'];_0x3bb2e9[_0xc41f('0x25')]=_0xd82afc[_0xc41f('0x20')][_0xc41f('0x25')];}if(_0xd82afc[_0xc41f('0x20')][_0xc41f('0x26')]){_0x3bb2e9[_0xc41f('0x27')]={'user':_0xd82afc[_0xc41f('0x20')][_0xc41f('0x15')],'pass':_0xd82afc[_0xc41f('0x20')][_0xc41f('0x28')]};}var _0xecedc3={'account':_0x3bb2e9,'message':_[_0xc41f('0x29')]({'from':util['format'](_0xc41f('0x2a'),_0xd82afc[_0xc41f('0xe')],_0xd82afc[_0xc41f('0x2b')]||_0xd82afc[_0xc41f('0x20')]['user'])},_0x5591cd)};return client[_0xc41f('0x2c')](_0xc41f('0x2d'),_0xecedc3);})[_0xc41f('0xc')](function(_0xc3c384){if(_0xc3c384[_0xc41f('0x2e')]){throw new Error(util[_0xc41f('0x2f')](_0xc41f('0x30'),_0xc3c384[_0xc41f('0x2e')]['message']||JSON[_0xc41f('0x31')](_0xc3c384[_0xc41f('0x2e')])));}return!![];});}function handleError(_0x38270b,_0x3deaad,_0x342594){return _0x38270b[_0xc41f('0x32')](_0x3deaad||0x1f4)['send']({'message':_0x342594?_0x342594[_0xc41f('0x33')]||_0x342594:''});}exports[_0xc41f('0x34')]=function(_0x590bd2,_0x73aa0,_0x1fa333){passport[_0xc41f('0x35')](_0xc41f('0x36'),function(_0x47395c,_0x25905e,_0x102a43){var _0x461fef=_0x47395c||_0x102a43;if(_0x461fef){return handleError(_0x73aa0,0x191,_0x461fef);}if(!_0x25905e){return handleError(_0x73aa0,0x194,{'message':_0xc41f('0x37')});}else{var _0x331699={'payload':{'id':_0x25905e['id'],'role':_0x25905e[_0xc41f('0x10')]},'options':{'expiresIn':0x15180}};return authService[_0xc41f('0x38')](_0x331699)['then'](function(_0x12b5c4){_0x73aa0[_0xc41f('0x39')]({'id':_0x25905e['id'],'token':_0x12b5c4,'statusCall':'','isAlreadyLogged':_0x25905e[_0xc41f('0x3a')]});});}})(_0x590bd2,_0x73aa0,_0x1fa333);};exports[_0xc41f('0x3b')]=function(_0xe6dd32,_0x145bc8,_0x4991d8){if(!_0xe6dd32[_0xc41f('0x3c')][_0xc41f('0x2b')]){return handleError(_0x145bc8,0x1f4,{'message':'Email\x20parameter\x20is\x20missing'});}var _0x853866=rs[_0xc41f('0x3d')]();_0xe6dd32[_0xc41f('0x3c')][_0xc41f('0x2b')]=_0xe6dd32['body'][_0xc41f('0x2b')][_0xc41f('0x3e')]()[_0xc41f('0x3f')]();var _0xeaf6b5;return db[_0xc41f('0x9')][_0xc41f('0xd')]({'where':{'id':0x1},'attributes':[_0xc41f('0xa'),_0xc41f('0xb')],'raw':!![]})['then'](function(_0x34e0df){_0xeaf6b5=_0x34e0df;return db[_0xc41f('0x40')]['find']({'where':{'email':_0xe6dd32['body'][_0xc41f('0x2b')]}});})[_0xc41f('0xc')](function(_0x405bee){if(!_0x405bee){throw new Error(_0xc41f('0x41'));}if(_0x405bee[_0xc41f('0x11')]){throw new Error(_0xc41f('0x42'));}if(_0x405bee['blocked']){if(moment(_0x405bee[_0xc41f('0x13')])[_0xc41f('0x18')](_0xeaf6b5['blockDuration'],_0xc41f('0x19'))>moment()){throw new Error(_0xc41f('0x43'));}else{_0x405bee[_0xc41f('0x12')]=![];_0x405bee['blockedAt']=null;}}_0x405bee[_0xc41f('0x44')]=_0x853866;_0x405bee[_0xc41f('0x45')]=Date[_0xc41f('0x46')]()+0x36ee80;return _0x405bee[_0xc41f('0x47')]();})[_0xc41f('0xc')](function(){return sendServiceMail({'to':_0xe6dd32[_0xc41f('0x3c')][_0xc41f('0x2b')],'subject':'xCally\x20Motion\x20Password\x20Reset','text':'You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a'+_0xc41f('0x48')+_0xc41f('0x49')+_0xe6dd32['headers'][_0xc41f('0x23')]+'/reset/'+_0x853866+'\x0a\x0a'+_0xc41f('0x4a')});})[_0xc41f('0xc')](function(){_0x145bc8[_0xc41f('0x32')](0xc8)[_0xc41f('0x4b')]({'message':_0xc41f('0x4c')});})[_0xc41f('0x1c')](function(_0x1dd5c4){return handleError(_0x145bc8,0x1f4,_0x1dd5c4);});};exports[_0xc41f('0x4d')]=function(_0x193d9f,_0x56537d,_0x578f9c){return db['User']['find']({'where':{'resetPasswordToken':_0x193d9f[_0xc41f('0x4e')][_0xc41f('0x4f')],'resetPasswordExpires':{'$gt':Date[_0xc41f('0x46')]()}}})[_0xc41f('0xc')](function(_0x288f66){if(!_0x288f66){throw new Error(_0xc41f('0x50'));}return db['Setting'][_0xc41f('0xd')]({'attributes':['id','securePassword',_0xc41f('0x51'),_0xc41f('0x52')]})[_0xc41f('0xc')](function(_0x470303){if(_0x470303[_0xc41f('0x53')])authService['validatePasswordPattern'](_0x193d9f[_0xc41f('0x3c')]['password']);if(!_0x470303['enforcePasswordHistory']||!_0x288f66[_0xc41f('0x54')])return _0x288f66;authService[_0xc41f('0x55')](_0x193d9f[_0xc41f('0x3c')][_0xc41f('0x56')],_0x288f66['previousPasswords'],_0x470303[_0xc41f('0x52')]);return _0x288f66;})['then'](function(){_0x288f66[_0xc41f('0x56')]=_0x193d9f[_0xc41f('0x3c')][_0xc41f('0x56')];_0x288f66['resetPasswordToken']=null;_0x288f66['resetPasswordExpires']=null;return _0x288f66[_0xc41f('0x47')]();});})[_0xc41f('0xc')](function(){_0x56537d[_0xc41f('0x32')](0xc8)['send']({'message':'Password\x20reset!'});})[_0xc41f('0x1c')](function(_0x56fbec){return handleError(_0x56537d,0x1f4,_0x56fbec);});};passport[_0xc41f('0x57')](new LocalStrategy({'usernameField':_0xc41f('0xe'),'passwordField':_0xc41f('0x56')},function(_0x256f48,_0x9e646a,_0x54713b){return localAuthenticate(db[_0xc41f('0x40')],_0x256f48,_0x9e646a,_0x54713b);}));
\ No newline at end of file
index a665786..a968d7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x222e=['Router','post','login','forgot','/reset/:token','exports'];(function(_0x405308,_0x321c8d){var _0xdb2cad=function(_0x50bf38){while(--_0x50bf38){_0x405308['push'](_0x405308['shift']());}};_0xdb2cad(++_0x321c8d);}(_0x222e,0xba));var _0xe222=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x222e[_0x3dd15e];return _0x231fd0;};'use strict';var express=require('express');var router=express[_0xe222('0x0')]();var controller=require('./authLocal.controller');router[_0xe222('0x1')]('/',controller[_0xe222('0x2')]);router[_0xe222('0x1')]('/forgot',controller[_0xe222('0x3')]);router[_0xe222('0x1')](_0xe222('0x4'),controller['reset']);module[_0xe222('0x5')]=router;
\ No newline at end of file
+var _0xfdd7=['login','post','/forgot','/reset/:token','reset','Router','./authLocal.controller'];(function(_0x263207,_0x38e050){var _0x15bbe8=function(_0x145d5e){while(--_0x145d5e){_0x263207['push'](_0x263207['shift']());}};_0x15bbe8(++_0x38e050);}(_0xfdd7,0x11d));var _0x7fdd=function(_0x24d08f,_0x53e96b){_0x24d08f=_0x24d08f-0x0;var _0x3c4318=_0xfdd7[_0x24d08f];return _0x3c4318;};'use strict';var express=require('express');var router=express[_0x7fdd('0x0')]();var controller=require(_0x7fdd('0x1'));router['post']('/',controller[_0x7fdd('0x2')]);router[_0x7fdd('0x3')](_0x7fdd('0x4'),controller['forgot']);router[_0x7fdd('0x3')](_0x7fdd('0x5'),controller[_0x7fdd('0x6')]);module['exports']=router;
\ No newline at end of file
index c288cf0..226ee91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb125=['INTEGER','sequelize','exports','STRING','BOOLEAN'];(function(_0x161eca,_0x26bf52){var _0x3e352d=function(_0x312e8e){while(--_0x312e8e){_0x161eca['push'](_0x161eca['shift']());}};_0x3e352d(++_0x26bf52);}(_0xb125,0xbf));var _0x5b12=function(_0x2f19b4,_0x5f3c16){_0x2f19b4=_0x2f19b4-0x0;var _0xde470=_0xb125[_0x2f19b4];return _0xde470;};'use strict';var Sequelize=require(_0x5b12('0x0'));module[_0x5b12('0x1')]={'name':{'type':Sequelize[_0x5b12('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0x5b12('0x2')]},'description':{'type':Sequelize[_0x5b12('0x2')]},'status':{'type':Sequelize[_0x5b12('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x5b12('0x4')],'defaultValue':0xa}};
\ No newline at end of file
+var _0x39d2=['exports','STRING','INTEGER','sequelize'];(function(_0x5c3f72,_0x54471d){var _0x926aee=function(_0x3b8170){while(--_0x3b8170){_0x5c3f72['push'](_0x5c3f72['shift']());}};_0x926aee(++_0x54471d);}(_0x39d2,0x16b));var _0x239d=function(_0x3f5dca,_0x59472b){_0x3f5dca=_0x3f5dca-0x0;var _0x5b833a=_0x39d2[_0x3f5dca];return _0x5b833a;};'use strict';var Sequelize=require(_0x239d('0x0'));module[_0x239d('0x1')]={'name':{'type':Sequelize[_0x239d('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0x239d('0x2')]},'description':{'type':Sequelize[_0x239d('0x2')]},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timeout':{'type':Sequelize[_0x239d('0x3')],'defaultValue':0xa}};
\ No newline at end of file
index c025b08..c04ec3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51d5=['fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','includeAll','rows','catch','show','params','keys','rawAttributes','include','merge','find','create','body','addConditions','Condition','ids','omit','findOne','getConditions','addActions','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','apply','reject','update','destroy','then','error','stack','name','send','index','Automation','fieldName','type','key','model','map','query','filters','intersection','attributes'];(function(_0x30bc31,_0x4e9338){var _0x5aa220=function(_0x4a03f3){while(--_0x4a03f3){_0x30bc31['push'](_0x30bc31['shift']());}};_0x5aa220(++_0x4e9338);}(_0x51d5,0x1c4));var _0x551d=function(_0xbed5cc,_0x461395){_0xbed5cc=_0xbed5cc-0x0;var _0x953d51=_0x51d5[_0xbed5cc];return _0x953d51;};'use strict';var emlformat=require(_0x551d('0x0'));var rimraf=require(_0x551d('0x1'));var zipdir=require(_0x551d('0x2'));var jsonpatch=require(_0x551d('0x3'));var rp=require('request-promise');var moment=require(_0x551d('0x4'));var BPromise=require(_0x551d('0x5'));var Mustache=require(_0x551d('0x6'));var util=require(_0x551d('0x7'));var path=require(_0x551d('0x8'));var sox=require(_0x551d('0x9'));var csv=require(_0x551d('0xa'));var ejs=require(_0x551d('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x551d('0xc'));var crypto=require(_0x551d('0xd'));var jsforce=require(_0x551d('0xe'));var deskjs=require(_0x551d('0xf'));var toCsv=require(_0x551d('0xa'));var querystring=require(_0x551d('0x10'));var Papa=require(_0x551d('0x11'));var Redis=require(_0x551d('0x12'));var authService=require(_0x551d('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x551d('0x14'));var hardwareService=require(_0x551d('0x15'));var logger=require(_0x551d('0x16'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x551d('0x17'))['db'];function respondWithStatusCode(_0x4c8000,_0xa390cd){_0xa390cd=_0xa390cd||0xcc;return function(_0x405d8a){if(_0x405d8a){return _0x4c8000[_0x551d('0x18')](_0xa390cd);}return _0x4c8000[_0x551d('0x19')](_0xa390cd)[_0x551d('0x1a')]();};}function respondWithResult(_0x139e62,_0x1edee5){_0x1edee5=_0x1edee5||0xc8;return function(_0x5b3997){if(_0x5b3997){return _0x139e62['status'](_0x1edee5)['json'](_0x5b3997);}};}function respondWithFilteredResult(_0x2dcc25,_0xe58f01){return function(_0x12d5c6){if(_0x12d5c6){var _0x463aff=typeof _0xe58f01[_0x551d('0x1b')]===_0x551d('0x1c')&&typeof _0xe58f01[_0x551d('0x1d')]===_0x551d('0x1c');var _0x1939c4=_0x12d5c6['count'];var _0x4b7320=_0x463aff?0x0:_0xe58f01[_0x551d('0x1b')];var _0x417069=_0x463aff?_0x12d5c6[_0x551d('0x1e')]:_0xe58f01[_0x551d('0x1b')]+_0xe58f01[_0x551d('0x1d')];var _0x4b10ee;if(_0x417069>=_0x1939c4){_0x417069=_0x1939c4;_0x4b10ee=0xc8;}else{_0x4b10ee=0xce;}_0x2dcc25['status'](_0x4b10ee);return _0x2dcc25['set'](_0x551d('0x1f'),_0x4b7320+'-'+_0x417069+'/'+_0x1939c4)['json'](_0x12d5c6);}return null;};}function patchUpdates(_0x59da88){return function(_0x403c04){try{jsonpatch[_0x551d('0x20')](_0x403c04,_0x59da88,!![]);}catch(_0x5de6f0){return BPromise[_0x551d('0x21')](_0x5de6f0);}return _0x403c04['save']();};}function saveUpdates(_0x1cd263,_0x1a8c98){return function(_0x19f50b){if(_0x19f50b){return _0x19f50b[_0x551d('0x22')](_0x1cd263)['then'](function(_0x1c0952){return _0x1c0952;});}return null;};}function removeEntity(_0xcc35a5,_0x5c0c6e){return function(_0x542892){if(_0x542892){return _0x542892[_0x551d('0x23')]()[_0x551d('0x24')](function(){_0xcc35a5[_0x551d('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3a5f1d,_0x47782f){return function(_0x4498e5){if(!_0x4498e5){_0x3a5f1d[_0x551d('0x18')](0x194);}return _0x4498e5;};}function handleError(_0x1eea98,_0x5d086e){_0x5d086e=_0x5d086e||0x1f4;return function(_0xf5ae05){logger[_0x551d('0x25')](_0xf5ae05[_0x551d('0x26')]);if(_0xf5ae05[_0x551d('0x27')]){delete _0xf5ae05['name'];}_0x1eea98[_0x551d('0x19')](_0x5d086e)[_0x551d('0x28')](_0xf5ae05);};}exports[_0x551d('0x29')]=function(_0x57f3b0,_0xfc8730){var _0x42e45e={},_0xcc3506={},_0x2b35eb={'count':0x0,'rows':[]};var _0x21d9ec=_['map'](db[_0x551d('0x2a')]['rawAttributes'],function(_0x2e4cfc){return{'name':_0x2e4cfc[_0x551d('0x2b')],'type':_0x2e4cfc[_0x551d('0x2c')][_0x551d('0x2d')]};});_0xcc3506[_0x551d('0x2e')]=_[_0x551d('0x2f')](_0x21d9ec,'name');_0xcc3506[_0x551d('0x30')]=_['keys'](_0x57f3b0['query']);_0xcc3506[_0x551d('0x31')]=_[_0x551d('0x32')](_0xcc3506[_0x551d('0x2e')],_0xcc3506[_0x551d('0x30')]);_0x42e45e[_0x551d('0x33')]=_[_0x551d('0x32')](_0xcc3506[_0x551d('0x2e')],qs[_0x551d('0x34')](_0x57f3b0[_0x551d('0x30')][_0x551d('0x34')]));_0x42e45e['attributes']=_0x42e45e[_0x551d('0x33')][_0x551d('0x35')]?_0x42e45e['attributes']:_0xcc3506[_0x551d('0x2e')];if(!_0x57f3b0[_0x551d('0x30')][_0x551d('0x36')](_0x551d('0x37'))){_0x42e45e['limit']=qs['limit'](_0x57f3b0[_0x551d('0x30')][_0x551d('0x1d')]);_0x42e45e['offset']=qs['offset'](_0x57f3b0[_0x551d('0x30')][_0x551d('0x1b')]);}_0x42e45e[_0x551d('0x38')]=qs[_0x551d('0x39')](_0x57f3b0[_0x551d('0x30')][_0x551d('0x39')]);_0x42e45e[_0x551d('0x3a')]=qs[_0x551d('0x31')](_[_0x551d('0x3b')](_0x57f3b0['query'],_0xcc3506[_0x551d('0x31')]),_0x21d9ec);if(_0x57f3b0[_0x551d('0x30')][_0x551d('0x3c')]){_0x42e45e['where']=_['merge'](_0x42e45e[_0x551d('0x3a')],{'$or':_[_0x551d('0x2f')](_0x21d9ec,function(_0xbb96a6){if(_0xbb96a6[_0x551d('0x2c')]!==_0x551d('0x3d')){var _0x34194d={};_0x34194d[_0xbb96a6[_0x551d('0x27')]]={'$like':'%'+_0x57f3b0[_0x551d('0x30')][_0x551d('0x3c')]+'%'};return _0x34194d;}})});}_0x42e45e=_['merge']({},_0x42e45e,_0x57f3b0[_0x551d('0x3e')]);var _0x3216de={'where':_0x42e45e[_0x551d('0x3a')]};return db['Automation']['count'](_0x3216de)[_0x551d('0x24')](function(_0x6adef5){_0x2b35eb[_0x551d('0x1e')]=_0x6adef5;if(_0x57f3b0[_0x551d('0x30')][_0x551d('0x3f')]){_0x42e45e['include']=[{'all':!![]}];}return db[_0x551d('0x2a')]['findAll'](_0x42e45e);})[_0x551d('0x24')](function(_0x126d7f){_0x2b35eb[_0x551d('0x40')]=_0x126d7f;return _0x2b35eb;})[_0x551d('0x24')](respondWithFilteredResult(_0xfc8730,_0x42e45e))[_0x551d('0x41')](handleError(_0xfc8730,null));};exports[_0x551d('0x42')]=function(_0x226a3d,_0x2e99a1){var _0x4540fb={'raw':![],'where':{'id':_0x226a3d[_0x551d('0x43')]['id']}},_0x366d7f={};_0x366d7f[_0x551d('0x2e')]=_[_0x551d('0x44')](db[_0x551d('0x2a')][_0x551d('0x45')]);_0x366d7f['query']=_[_0x551d('0x44')](_0x226a3d[_0x551d('0x30')]);_0x366d7f[_0x551d('0x31')]=_['intersection'](_0x366d7f['model'],_0x366d7f['query']);_0x4540fb['attributes']=_[_0x551d('0x32')](_0x366d7f[_0x551d('0x2e')],qs['fields'](_0x226a3d[_0x551d('0x30')][_0x551d('0x34')]));_0x4540fb[_0x551d('0x33')]=_0x4540fb[_0x551d('0x33')]['length']?_0x4540fb['attributes']:_0x366d7f[_0x551d('0x2e')];if(_0x226a3d[_0x551d('0x30')][_0x551d('0x3f')]){_0x4540fb[_0x551d('0x46')]=[{'all':!![]}];}_0x4540fb=_[_0x551d('0x47')]({},_0x4540fb,_0x226a3d['options']);return db[_0x551d('0x2a')][_0x551d('0x48')](_0x4540fb)[_0x551d('0x24')](handleEntityNotFound(_0x2e99a1,null))[_0x551d('0x24')](respondWithResult(_0x2e99a1,null))[_0x551d('0x41')](handleError(_0x2e99a1,null));};exports[_0x551d('0x49')]=function(_0x515909,_0x3ad8e4){return db[_0x551d('0x2a')][_0x551d('0x49')](_0x515909[_0x551d('0x4a')],{})['then'](respondWithResult(_0x3ad8e4,0xc9))['catch'](handleError(_0x3ad8e4,null));};exports[_0x551d('0x22')]=function(_0x3761b7,_0x863790){if(_0x3761b7[_0x551d('0x4a')]['id']){delete _0x3761b7['body']['id'];}return db[_0x551d('0x2a')][_0x551d('0x48')]({'where':{'id':_0x3761b7[_0x551d('0x43')]['id']}})['then'](handleEntityNotFound(_0x863790,null))[_0x551d('0x24')](saveUpdates(_0x3761b7[_0x551d('0x4a')],null))[_0x551d('0x24')](respondWithResult(_0x863790,null))[_0x551d('0x41')](handleError(_0x863790,null));};exports[_0x551d('0x23')]=function(_0x5afe7f,_0x46d6ed){return db[_0x551d('0x2a')]['find']({'where':{'id':_0x5afe7f[_0x551d('0x43')]['id']}})[_0x551d('0x24')](handleEntityNotFound(_0x46d6ed,null))['then'](removeEntity(_0x46d6ed,null))[_0x551d('0x41')](handleError(_0x46d6ed,null));};exports[_0x551d('0x4b')]=function(_0x404023,_0x148d59,_0x2ae503){return db[_0x551d('0x4c')][_0x551d('0x48')]({'where':{'id':_0x404023[_0x551d('0x43')]['id']}})[_0x551d('0x24')](handleEntityNotFound(_0x148d59,null))[_0x551d('0x24')](function(_0x44dfb4){if(_0x44dfb4){return _0x44dfb4[_0x551d('0x4b')](_0x404023[_0x551d('0x4a')][_0x551d('0x4d')],_[_0x551d('0x4e')](_0x404023[_0x551d('0x4a')],['ids','id'])||{});}})[_0x551d('0x24')](respondWithResult(_0x148d59,null))['catch'](handleError(_0x148d59,null));};exports['getConditions']=function(_0x295237,_0x30ee51,_0x1334e7){var _0x4f33b8={};var _0x528c7f={};var _0xeacefa;var _0x1bfece;return db[_0x551d('0x2a')][_0x551d('0x4f')]({'where':{'id':_0x295237['params']['id']}})[_0x551d('0x24')](handleEntityNotFound(_0x30ee51,null))[_0x551d('0x24')](function(_0xea6b1f){if(_0xea6b1f){_0xeacefa=_0xea6b1f;_0x528c7f[_0x551d('0x2e')]=_[_0x551d('0x44')](db[_0x551d('0x4c')]['rawAttributes']);_0x528c7f['query']=_[_0x551d('0x44')](_0x295237[_0x551d('0x30')]);_0x528c7f[_0x551d('0x31')]=_['intersection'](_0x528c7f[_0x551d('0x2e')],_0x528c7f[_0x551d('0x30')]);_0x4f33b8[_0x551d('0x33')]=_['intersection'](_0x528c7f[_0x551d('0x2e')],qs[_0x551d('0x34')](_0x295237[_0x551d('0x30')][_0x551d('0x34')]));_0x4f33b8[_0x551d('0x33')]=_0x4f33b8['attributes'][_0x551d('0x35')]?_0x4f33b8[_0x551d('0x33')]:_0x528c7f[_0x551d('0x2e')];_0x4f33b8[_0x551d('0x38')]=qs['sort'](_0x295237[_0x551d('0x30')][_0x551d('0x39')]);_0x4f33b8[_0x551d('0x3a')]=qs[_0x551d('0x31')](_[_0x551d('0x3b')](_0x295237[_0x551d('0x30')],_0x528c7f[_0x551d('0x31')]));if(_0x295237[_0x551d('0x30')][_0x551d('0x3c')]){_0x4f33b8['where']=_[_0x551d('0x47')](_0x4f33b8[_0x551d('0x3a')],{'$or':_[_0x551d('0x2f')](_0x4f33b8[_0x551d('0x33')],function(_0x52628f){var _0x69ebfa={};_0x69ebfa[_0x52628f]={'$like':'%'+_0x295237[_0x551d('0x30')][_0x551d('0x3c')]+'%'};return _0x69ebfa;})});}_0x4f33b8=_[_0x551d('0x47')]({},_0x4f33b8,_0x295237['options']);return _0xeacefa[_0x551d('0x50')](_0x4f33b8);}})[_0x551d('0x24')](function(_0x1d1fd7){if(_0x1d1fd7){_0x1bfece=_0x1d1fd7['length'];if(!_0x295237['query'][_0x551d('0x36')]('nolimit')){_0x4f33b8['limit']=qs[_0x551d('0x1d')](_0x295237[_0x551d('0x30')][_0x551d('0x1d')]);_0x4f33b8['offset']=qs[_0x551d('0x1b')](_0x295237[_0x551d('0x30')]['offset']);}return _0xeacefa[_0x551d('0x50')](_0x4f33b8);}})[_0x551d('0x24')](function(_0x443187){if(_0x443187){return _0x443187?{'count':_0x1bfece,'rows':_0x443187}:null;}})[_0x551d('0x24')](respondWithResult(_0x30ee51,null))[_0x551d('0x41')](handleError(_0x30ee51,null));};exports[_0x551d('0x51')]=function(_0x9dfe2b,_0x200144,_0x247e70){return db[_0x551d('0x52')][_0x551d('0x48')]({'where':{'id':_0x9dfe2b[_0x551d('0x43')]['id']}})[_0x551d('0x24')](handleEntityNotFound(_0x200144,null))[_0x551d('0x24')](function(_0x44df17){if(_0x44df17){return _0x44df17['addActions'](_0x9dfe2b[_0x551d('0x4a')][_0x551d('0x4d')],_[_0x551d('0x4e')](_0x9dfe2b[_0x551d('0x4a')],[_0x551d('0x4d'),'id'])||{});}})['then'](respondWithResult(_0x200144,null))[_0x551d('0x41')](handleError(_0x200144,null));};exports['getActions']=function(_0x2fb303,_0x2e2710,_0x37a53b){var _0x3cc9c9={};var _0x6fddc0={};var _0x372eb2;var _0x58ada0;return db[_0x551d('0x2a')][_0x551d('0x4f')]({'where':{'id':_0x2fb303[_0x551d('0x43')]['id']}})['then'](handleEntityNotFound(_0x2e2710,null))['then'](function(_0x3b021f){if(_0x3b021f){_0x372eb2=_0x3b021f;_0x6fddc0[_0x551d('0x2e')]=_[_0x551d('0x44')](db[_0x551d('0x52')][_0x551d('0x45')]);_0x6fddc0[_0x551d('0x30')]=_[_0x551d('0x44')](_0x2fb303[_0x551d('0x30')]);_0x6fddc0['filters']=_[_0x551d('0x32')](_0x6fddc0[_0x551d('0x2e')],_0x6fddc0[_0x551d('0x30')]);_0x3cc9c9[_0x551d('0x33')]=_['intersection'](_0x6fddc0[_0x551d('0x2e')],qs[_0x551d('0x34')](_0x2fb303['query']['fields']));_0x3cc9c9[_0x551d('0x33')]=_0x3cc9c9[_0x551d('0x33')]['length']?_0x3cc9c9[_0x551d('0x33')]:_0x6fddc0['model'];_0x3cc9c9['order']=qs[_0x551d('0x39')](_0x2fb303[_0x551d('0x30')][_0x551d('0x39')]);_0x3cc9c9[_0x551d('0x3a')]=qs[_0x551d('0x31')](_['pick'](_0x2fb303[_0x551d('0x30')],_0x6fddc0['filters']));if(_0x2fb303['query'][_0x551d('0x3c')]){_0x3cc9c9[_0x551d('0x3a')]=_[_0x551d('0x47')](_0x3cc9c9['where'],{'$or':_[_0x551d('0x2f')](_0x3cc9c9[_0x551d('0x33')],function(_0x21dbaf){var _0x4cdffe={};_0x4cdffe[_0x21dbaf]={'$like':'%'+_0x2fb303[_0x551d('0x30')][_0x551d('0x3c')]+'%'};return _0x4cdffe;})});}_0x3cc9c9=_[_0x551d('0x47')]({},_0x3cc9c9,_0x2fb303['options']);return _0x372eb2[_0x551d('0x53')](_0x3cc9c9);}})[_0x551d('0x24')](function(_0x5b1ac8){if(_0x5b1ac8){_0x58ada0=_0x5b1ac8[_0x551d('0x35')];if(!_0x2fb303['query'][_0x551d('0x36')]('nolimit')){_0x3cc9c9[_0x551d('0x1d')]=qs[_0x551d('0x1d')](_0x2fb303['query']['limit']);_0x3cc9c9[_0x551d('0x1b')]=qs[_0x551d('0x1b')](_0x2fb303['query'][_0x551d('0x1b')]);}return _0x372eb2[_0x551d('0x53')](_0x3cc9c9);}})['then'](function(_0x5eb07){if(_0x5eb07){return _0x5eb07?{'count':_0x58ada0,'rows':_0x5eb07}:null;}})['then'](respondWithResult(_0x2e2710,null))[_0x551d('0x41')](handleError(_0x2e2710,null));};
\ No newline at end of file
+var _0x6766=['papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','Automation','rawAttributes','fieldName','type','model','keys','filters','intersection','query','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','includeAll','findAll','rows','catch','show','params','length','include','options','create','body','find','addConditions','ids','getConditions','findOne','filter','addActions','getActions','Action','zip-dir','fast-json-patch','moment','bluebird','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x6766,0x1e0));var _0x6676=function(_0x33d4a2,_0x2baaf4){_0x33d4a2=_0x33d4a2-0x0;var _0x2c793f=_0x6766[_0x33d4a2];return _0x2c793f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x6676('0x0'));var jsonpatch=require(_0x6676('0x1'));var rp=require('request-promise');var moment=require(_0x6676('0x2'));var BPromise=require(_0x6676('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x6676('0x4'));var sox=require('sox');var csv=require(_0x6676('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6676('0x6'));var _=require(_0x6676('0x7'));var squel=require(_0x6676('0x8'));var crypto=require(_0x6676('0x9'));var jsforce=require(_0x6676('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x6676('0x5'));var querystring=require(_0x6676('0xb'));var Papa=require(_0x6676('0xc'));var Redis=require(_0x6676('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x6676('0xe'));var as=require(_0x6676('0xf'));var hardwareService=require(_0x6676('0x10'));var logger=require(_0x6676('0x11'))(_0x6676('0x12'));var utils=require(_0x6676('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x6676('0x14'));var db=require(_0x6676('0x15'))['db'];function respondWithStatusCode(_0x33a710,_0x11c500){_0x11c500=_0x11c500||0xcc;return function(_0x289537){if(_0x289537){return _0x33a710[_0x6676('0x16')](_0x11c500);}return _0x33a710[_0x6676('0x17')](_0x11c500)[_0x6676('0x18')]();};}function respondWithResult(_0x2ea88d,_0x41f44d){_0x41f44d=_0x41f44d||0xc8;return function(_0x5df545){if(_0x5df545){return _0x2ea88d[_0x6676('0x17')](_0x41f44d)[_0x6676('0x19')](_0x5df545);}};}function respondWithFilteredResult(_0x3509df,_0x530264){return function(_0x5dcc09){if(_0x5dcc09){var _0x4d7344=typeof _0x530264[_0x6676('0x1a')]===_0x6676('0x1b')&&typeof _0x530264[_0x6676('0x1c')]===_0x6676('0x1b');var _0x343130=_0x5dcc09[_0x6676('0x1d')];var _0x9e9211=_0x4d7344?0x0:_0x530264['offset'];var _0x3ddc5e=_0x4d7344?_0x5dcc09[_0x6676('0x1d')]:_0x530264[_0x6676('0x1a')]+_0x530264[_0x6676('0x1c')];var _0x365f73;if(_0x3ddc5e>=_0x343130){_0x3ddc5e=_0x343130;_0x365f73=0xc8;}else{_0x365f73=0xce;}_0x3509df[_0x6676('0x17')](_0x365f73);return _0x3509df[_0x6676('0x1e')](_0x6676('0x1f'),_0x9e9211+'-'+_0x3ddc5e+'/'+_0x343130)[_0x6676('0x19')](_0x5dcc09);}return null;};}function patchUpdates(_0x4a42b8){return function(_0x536c80){try{jsonpatch[_0x6676('0x20')](_0x536c80,_0x4a42b8,!![]);}catch(_0x237f07){return BPromise[_0x6676('0x21')](_0x237f07);}return _0x536c80[_0x6676('0x22')]();};}function saveUpdates(_0x34b3b5,_0x47952d){return function(_0x5bcae9){if(_0x5bcae9){return _0x5bcae9[_0x6676('0x23')](_0x34b3b5)[_0x6676('0x24')](function(_0x4c879b){return _0x4c879b;});}return null;};}function removeEntity(_0x18e62d,_0x2489f0){return function(_0x3d5682){if(_0x3d5682){return _0x3d5682[_0x6676('0x25')]()['then'](function(){_0x18e62d[_0x6676('0x17')](0xcc)[_0x6676('0x18')]();});}};}function handleEntityNotFound(_0xcedd8e,_0x1f0f6b){return function(_0x2d94a2){if(!_0x2d94a2){_0xcedd8e[_0x6676('0x16')](0x194);}return _0x2d94a2;};}function handleError(_0xb04108,_0x5e7d74){_0x5e7d74=_0x5e7d74||0x1f4;return function(_0x4c66cd){logger['error'](_0x4c66cd[_0x6676('0x26')]);if(_0x4c66cd[_0x6676('0x27')]){delete _0x4c66cd['name'];}_0xb04108[_0x6676('0x17')](_0x5e7d74)[_0x6676('0x28')](_0x4c66cd);};}exports[_0x6676('0x29')]=function(_0x42ac16,_0x350bbb){var _0x4edbf3={},_0x5aaaf8={},_0x197644={'count':0x0,'rows':[]};var _0x3fda82=_[_0x6676('0x2a')](db[_0x6676('0x2b')][_0x6676('0x2c')],function(_0x2cc371){return{'name':_0x2cc371[_0x6676('0x2d')],'type':_0x2cc371[_0x6676('0x2e')]['key']};});_0x5aaaf8[_0x6676('0x2f')]=_[_0x6676('0x2a')](_0x3fda82,_0x6676('0x27'));_0x5aaaf8['query']=_[_0x6676('0x30')](_0x42ac16['query']);_0x5aaaf8[_0x6676('0x31')]=_[_0x6676('0x32')](_0x5aaaf8[_0x6676('0x2f')],_0x5aaaf8[_0x6676('0x33')]);_0x4edbf3[_0x6676('0x34')]=_['intersection'](_0x5aaaf8[_0x6676('0x2f')],qs[_0x6676('0x35')](_0x42ac16[_0x6676('0x33')]['fields']));_0x4edbf3[_0x6676('0x34')]=_0x4edbf3[_0x6676('0x34')]['length']?_0x4edbf3['attributes']:_0x5aaaf8[_0x6676('0x2f')];if(!_0x42ac16[_0x6676('0x33')][_0x6676('0x36')](_0x6676('0x37'))){_0x4edbf3[_0x6676('0x1c')]=qs[_0x6676('0x1c')](_0x42ac16[_0x6676('0x33')][_0x6676('0x1c')]);_0x4edbf3[_0x6676('0x1a')]=qs[_0x6676('0x1a')](_0x42ac16[_0x6676('0x33')]['offset']);}_0x4edbf3[_0x6676('0x38')]=qs[_0x6676('0x39')](_0x42ac16[_0x6676('0x33')][_0x6676('0x39')]);_0x4edbf3[_0x6676('0x3a')]=qs[_0x6676('0x31')](_[_0x6676('0x3b')](_0x42ac16['query'],_0x5aaaf8[_0x6676('0x31')]),_0x3fda82);if(_0x42ac16[_0x6676('0x33')]['filter']){_0x4edbf3[_0x6676('0x3a')]=_[_0x6676('0x3c')](_0x4edbf3['where'],{'$or':_['map'](_0x3fda82,function(_0xc52612){if(_0xc52612[_0x6676('0x2e')]!==_0x6676('0x3d')){var _0x25affb={};_0x25affb[_0xc52612[_0x6676('0x27')]]={'$like':'%'+_0x42ac16[_0x6676('0x33')]['filter']+'%'};return _0x25affb;}})});}_0x4edbf3=_[_0x6676('0x3c')]({},_0x4edbf3,_0x42ac16['options']);var _0x38edf1={'where':_0x4edbf3[_0x6676('0x3a')]};return db[_0x6676('0x2b')][_0x6676('0x1d')](_0x38edf1)['then'](function(_0x15ca48){_0x197644[_0x6676('0x1d')]=_0x15ca48;if(_0x42ac16[_0x6676('0x33')][_0x6676('0x3e')]){_0x4edbf3['include']=[{'all':!![]}];}return db[_0x6676('0x2b')][_0x6676('0x3f')](_0x4edbf3);})[_0x6676('0x24')](function(_0x51b443){_0x197644[_0x6676('0x40')]=_0x51b443;return _0x197644;})[_0x6676('0x24')](respondWithFilteredResult(_0x350bbb,_0x4edbf3))[_0x6676('0x41')](handleError(_0x350bbb,null));};exports[_0x6676('0x42')]=function(_0xe4fdb,_0x4852d2){var _0x221174={'raw':![],'where':{'id':_0xe4fdb[_0x6676('0x43')]['id']}},_0x238d89={};_0x238d89[_0x6676('0x2f')]=_[_0x6676('0x30')](db['Automation']['rawAttributes']);_0x238d89[_0x6676('0x33')]=_[_0x6676('0x30')](_0xe4fdb[_0x6676('0x33')]);_0x238d89[_0x6676('0x31')]=_[_0x6676('0x32')](_0x238d89[_0x6676('0x2f')],_0x238d89['query']);_0x221174[_0x6676('0x34')]=_[_0x6676('0x32')](_0x238d89[_0x6676('0x2f')],qs['fields'](_0xe4fdb[_0x6676('0x33')][_0x6676('0x35')]));_0x221174[_0x6676('0x34')]=_0x221174[_0x6676('0x34')][_0x6676('0x44')]?_0x221174[_0x6676('0x34')]:_0x238d89[_0x6676('0x2f')];if(_0xe4fdb[_0x6676('0x33')]['includeAll']){_0x221174[_0x6676('0x45')]=[{'all':!![]}];}_0x221174=_[_0x6676('0x3c')]({},_0x221174,_0xe4fdb[_0x6676('0x46')]);return db[_0x6676('0x2b')]['find'](_0x221174)[_0x6676('0x24')](handleEntityNotFound(_0x4852d2,null))[_0x6676('0x24')](respondWithResult(_0x4852d2,null))[_0x6676('0x41')](handleError(_0x4852d2,null));};exports[_0x6676('0x47')]=function(_0x30b973,_0x194bab){return db[_0x6676('0x2b')][_0x6676('0x47')](_0x30b973[_0x6676('0x48')],{})[_0x6676('0x24')](respondWithResult(_0x194bab,0xc9))[_0x6676('0x41')](handleError(_0x194bab,null));};exports[_0x6676('0x23')]=function(_0x3be767,_0x360e0a){if(_0x3be767[_0x6676('0x48')]['id']){delete _0x3be767[_0x6676('0x48')]['id'];}return db[_0x6676('0x2b')][_0x6676('0x49')]({'where':{'id':_0x3be767['params']['id']}})[_0x6676('0x24')](handleEntityNotFound(_0x360e0a,null))[_0x6676('0x24')](saveUpdates(_0x3be767[_0x6676('0x48')],null))[_0x6676('0x24')](respondWithResult(_0x360e0a,null))[_0x6676('0x41')](handleError(_0x360e0a,null));};exports[_0x6676('0x25')]=function(_0x310b2c,_0x20bc7b){return db['Automation'][_0x6676('0x49')]({'where':{'id':_0x310b2c['params']['id']}})[_0x6676('0x24')](handleEntityNotFound(_0x20bc7b,null))['then'](removeEntity(_0x20bc7b,null))[_0x6676('0x41')](handleError(_0x20bc7b,null));};exports[_0x6676('0x4a')]=function(_0x29b630,_0x16c832,_0x8b07a1){return db['Condition']['find']({'where':{'id':_0x29b630['params']['id']}})[_0x6676('0x24')](handleEntityNotFound(_0x16c832,null))['then'](function(_0x233d9a){if(_0x233d9a){return _0x233d9a[_0x6676('0x4a')](_0x29b630['body'][_0x6676('0x4b')],_['omit'](_0x29b630[_0x6676('0x48')],['ids','id'])||{});}})['then'](respondWithResult(_0x16c832,null))[_0x6676('0x41')](handleError(_0x16c832,null));};exports[_0x6676('0x4c')]=function(_0x3b7780,_0x15627b,_0x5d6589){var _0x17438e={};var _0x205063={};var _0x5068f2;var _0xb480cb;return db[_0x6676('0x2b')][_0x6676('0x4d')]({'where':{'id':_0x3b7780[_0x6676('0x43')]['id']}})[_0x6676('0x24')](handleEntityNotFound(_0x15627b,null))[_0x6676('0x24')](function(_0x36bf73){if(_0x36bf73){_0x5068f2=_0x36bf73;_0x205063[_0x6676('0x2f')]=_['keys'](db['Condition'][_0x6676('0x2c')]);_0x205063[_0x6676('0x33')]=_[_0x6676('0x30')](_0x3b7780[_0x6676('0x33')]);_0x205063[_0x6676('0x31')]=_[_0x6676('0x32')](_0x205063[_0x6676('0x2f')],_0x205063[_0x6676('0x33')]);_0x17438e['attributes']=_[_0x6676('0x32')](_0x205063['model'],qs[_0x6676('0x35')](_0x3b7780[_0x6676('0x33')][_0x6676('0x35')]));_0x17438e[_0x6676('0x34')]=_0x17438e[_0x6676('0x34')][_0x6676('0x44')]?_0x17438e[_0x6676('0x34')]:_0x205063['model'];_0x17438e[_0x6676('0x38')]=qs['sort'](_0x3b7780['query'][_0x6676('0x39')]);_0x17438e['where']=qs[_0x6676('0x31')](_[_0x6676('0x3b')](_0x3b7780['query'],_0x205063[_0x6676('0x31')]));if(_0x3b7780[_0x6676('0x33')]['filter']){_0x17438e[_0x6676('0x3a')]=_[_0x6676('0x3c')](_0x17438e[_0x6676('0x3a')],{'$or':_[_0x6676('0x2a')](_0x17438e[_0x6676('0x34')],function(_0x2e30f9){var _0x37d81c={};_0x37d81c[_0x2e30f9]={'$like':'%'+_0x3b7780[_0x6676('0x33')][_0x6676('0x4e')]+'%'};return _0x37d81c;})});}_0x17438e=_['merge']({},_0x17438e,_0x3b7780[_0x6676('0x46')]);return _0x5068f2['getConditions'](_0x17438e);}})[_0x6676('0x24')](function(_0x39d932){if(_0x39d932){_0xb480cb=_0x39d932[_0x6676('0x44')];if(!_0x3b7780[_0x6676('0x33')][_0x6676('0x36')]('nolimit')){_0x17438e[_0x6676('0x1c')]=qs[_0x6676('0x1c')](_0x3b7780[_0x6676('0x33')]['limit']);_0x17438e['offset']=qs['offset'](_0x3b7780[_0x6676('0x33')][_0x6676('0x1a')]);}return _0x5068f2[_0x6676('0x4c')](_0x17438e);}})[_0x6676('0x24')](function(_0x237e95){if(_0x237e95){return _0x237e95?{'count':_0xb480cb,'rows':_0x237e95}:null;}})[_0x6676('0x24')](respondWithResult(_0x15627b,null))['catch'](handleError(_0x15627b,null));};exports[_0x6676('0x4f')]=function(_0x38af17,_0x19bc17,_0x5e9bc5){return db['Action'][_0x6676('0x49')]({'where':{'id':_0x38af17[_0x6676('0x43')]['id']}})[_0x6676('0x24')](handleEntityNotFound(_0x19bc17,null))[_0x6676('0x24')](function(_0x53a81d){if(_0x53a81d){return _0x53a81d[_0x6676('0x4f')](_0x38af17['body']['ids'],_['omit'](_0x38af17[_0x6676('0x48')],[_0x6676('0x4b'),'id'])||{});}})[_0x6676('0x24')](respondWithResult(_0x19bc17,null))[_0x6676('0x41')](handleError(_0x19bc17,null));};exports[_0x6676('0x50')]=function(_0x3e8d5e,_0x5371f5,_0x3de993){var _0x49bb64={};var _0xd643b9={};var _0x4231b2;var _0x2d1160;return db['Automation'][_0x6676('0x4d')]({'where':{'id':_0x3e8d5e[_0x6676('0x43')]['id']}})['then'](handleEntityNotFound(_0x5371f5,null))[_0x6676('0x24')](function(_0x3d4054){if(_0x3d4054){_0x4231b2=_0x3d4054;_0xd643b9[_0x6676('0x2f')]=_[_0x6676('0x30')](db[_0x6676('0x51')]['rawAttributes']);_0xd643b9[_0x6676('0x33')]=_['keys'](_0x3e8d5e[_0x6676('0x33')]);_0xd643b9[_0x6676('0x31')]=_[_0x6676('0x32')](_0xd643b9[_0x6676('0x2f')],_0xd643b9[_0x6676('0x33')]);_0x49bb64[_0x6676('0x34')]=_['intersection'](_0xd643b9[_0x6676('0x2f')],qs[_0x6676('0x35')](_0x3e8d5e[_0x6676('0x33')]['fields']));_0x49bb64[_0x6676('0x34')]=_0x49bb64[_0x6676('0x34')][_0x6676('0x44')]?_0x49bb64['attributes']:_0xd643b9[_0x6676('0x2f')];_0x49bb64['order']=qs[_0x6676('0x39')](_0x3e8d5e['query'][_0x6676('0x39')]);_0x49bb64[_0x6676('0x3a')]=qs['filters'](_[_0x6676('0x3b')](_0x3e8d5e[_0x6676('0x33')],_0xd643b9['filters']));if(_0x3e8d5e[_0x6676('0x33')][_0x6676('0x4e')]){_0x49bb64[_0x6676('0x3a')]=_['merge'](_0x49bb64[_0x6676('0x3a')],{'$or':_[_0x6676('0x2a')](_0x49bb64[_0x6676('0x34')],function(_0x188c9c){var _0x43aa45={};_0x43aa45[_0x188c9c]={'$like':'%'+_0x3e8d5e['query'][_0x6676('0x4e')]+'%'};return _0x43aa45;})});}_0x49bb64=_[_0x6676('0x3c')]({},_0x49bb64,_0x3e8d5e['options']);return _0x4231b2['getActions'](_0x49bb64);}})['then'](function(_0xe5da2c){if(_0xe5da2c){_0x2d1160=_0xe5da2c[_0x6676('0x44')];if(!_0x3e8d5e[_0x6676('0x33')]['hasOwnProperty'](_0x6676('0x37'))){_0x49bb64[_0x6676('0x1c')]=qs[_0x6676('0x1c')](_0x3e8d5e['query']['limit']);_0x49bb64[_0x6676('0x1a')]=qs[_0x6676('0x1a')](_0x3e8d5e[_0x6676('0x33')]['offset']);}return _0x4231b2[_0x6676('0x50')](_0x49bb64);}})[_0x6676('0x24')](function(_0x30892f){if(_0x30892f){return _0x30892f?{'count':_0x2d1160,'rows':_0x30892f}:null;}})[_0x6676('0x24')](respondWithResult(_0x5371f5,null))[_0x6676('0x41')](handleError(_0x5371f5,null));};
\ No newline at end of file
index d65fb93..5feb8d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8367=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./automation.attributes','exports','define','Automation','tools_automations'];(function(_0x46bf1c,_0x4aafb3){var _0x1c51cb=function(_0x8e9e18){while(--_0x8e9e18){_0x46bf1c['push'](_0x46bf1c['shift']());}};_0x1c51cb(++_0x4aafb3);}(_0x8367,0x90));var _0x7836=function(_0x2cf2e9,_0xd58ea1){_0x2cf2e9=_0x2cf2e9-0x0;var _0xd3670d=_0x8367[_0x2cf2e9];return _0xd3670d;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x7836('0x0'))(_0x7836('0x1'));var moment=require('moment');var BPromise=require(_0x7836('0x2'));var rp=require(_0x7836('0x3'));var fs=require('fs');var path=require(_0x7836('0x4'));var rimraf=require(_0x7836('0x5'));var config=require(_0x7836('0x6'));var attributes=require(_0x7836('0x7'));module[_0x7836('0x8')]=function(_0x251549,_0x331b96){return _0x251549[_0x7836('0x9')](_0x7836('0xa'),attributes,{'tableName':_0x7836('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3bcd=['bluebird','request-promise','rimraf','../../config/environment','Automation','tools_automations','lodash','util','api','moment'];(function(_0x4c0101,_0x528dbe){var _0x2c731f=function(_0x311c84){while(--_0x311c84){_0x4c0101['push'](_0x4c0101['shift']());}};_0x2c731f(++_0x528dbe);}(_0x3bcd,0x13c));var _0xd3bc=function(_0x2a04,_0x434f07){_0x2a04=_0x2a04-0x0;var _0x2c7007=_0x3bcd[_0x2a04];return _0x2c7007;};'use strict';var _=require(_0xd3bc('0x0'));var util=require(_0xd3bc('0x1'));var logger=require('../../config/logger')(_0xd3bc('0x2'));var moment=require(_0xd3bc('0x3'));var BPromise=require(_0xd3bc('0x4'));var rp=require(_0xd3bc('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd3bc('0x6'));var config=require(_0xd3bc('0x7'));var attributes=require('./automation.attributes');module['exports']=function(_0x1e367c,_0x360bad){return _0x1e367c['define'](_0xd3bc('0x8'),attributes,{'tableName':_0xd3bc('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a9025cf..e2fbe7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc933=['Automation,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','Automation,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info'];(function(_0x3624d7,_0x2448d0){var _0x25d064=function(_0x5dce00){while(--_0x5dce00){_0x3624d7['push'](_0x3624d7['shift']());}};_0x25d064(++_0x2448d0);}(_0xc933,0xf9));var _0x3c93=function(_0x486064,_0x2c2d50){_0x486064=_0x486064-0x0;var _0x468c82=_0xc933[_0x486064];return _0x468c82;};'use strict';var _=require(_0x3c93('0x0'));var util=require(_0x3c93('0x1'));var moment=require(_0x3c93('0x2'));var BPromise=require(_0x3c93('0x3'));var rs=require(_0x3c93('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3c93('0x5'))['db'];var utils=require(_0x3c93('0x6'));var logger=require(_0x3c93('0x7'))(_0x3c93('0x8'));var config=require(_0x3c93('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x3c93('0xa')][_0x3c93('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x52c22c,_0x411bb7,_0x489139){return new BPromise(function(_0x1b505a,_0x2ead14){return client[_0x3c93('0xc')](_0x52c22c,_0x489139)[_0x3c93('0xd')](function(_0x46f9e8){logger[_0x3c93('0xe')]('Automation,\x20%s,\x20%s',_0x411bb7,'request\x20sent');logger['debug'](_0x3c93('0xf'),_0x411bb7,_0x3c93('0x10'),JSON[_0x3c93('0x11')](_0x46f9e8));if(_0x46f9e8[_0x3c93('0x12')]){if(_0x46f9e8[_0x3c93('0x12')][_0x3c93('0x13')]===0x1f4){logger[_0x3c93('0x12')](_0x3c93('0x14'),_0x411bb7,_0x46f9e8[_0x3c93('0x12')][_0x3c93('0x15')]);return _0x2ead14(_0x46f9e8[_0x3c93('0x12')][_0x3c93('0x15')]);}logger[_0x3c93('0x12')](_0x3c93('0x14'),_0x411bb7,_0x46f9e8[_0x3c93('0x12')][_0x3c93('0x15')]);return _0x1b505a(_0x46f9e8[_0x3c93('0x12')]['message']);}else{logger['info'](_0x3c93('0x14'),_0x411bb7,_0x3c93('0x10'));_0x1b505a(_0x46f9e8[_0x3c93('0x16')][_0x3c93('0x15')]);}})[_0x3c93('0x17')](function(_0x8b3fdc){logger[_0x3c93('0x12')]('Automation,\x20%s,\x20%s',_0x411bb7,_0x8b3fdc);_0x2ead14(_0x8b3fdc);});});}
\ No newline at end of file
+var _0xbc7a=['error','code','message','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','Automation,\x20%s,\x20%s','request\x20sent'];(function(_0x17a71f,_0x5373a2){var _0x3bd012=function(_0x3db809){while(--_0x3db809){_0x17a71f['push'](_0x17a71f['shift']());}};_0x3bd012(++_0x5373a2);}(_0xbc7a,0xa4));var _0xabc7=function(_0xe67a7a,_0x52f187){_0xe67a7a=_0xe67a7a-0x0;var _0x1d096b=_0xbc7a[_0xe67a7a];return _0x1d096b;};'use strict';var _=require(_0xabc7('0x0'));var util=require(_0xabc7('0x1'));var moment=require(_0xabc7('0x2'));var BPromise=require('bluebird');var rs=require(_0xabc7('0x3'));var fs=require('fs');var Redis=require(_0xabc7('0x4'));var db=require(_0xabc7('0x5'))['db'];var utils=require(_0xabc7('0x6'));var logger=require(_0xabc7('0x7'))(_0xabc7('0x8'));var config=require('../../config/environment');var jayson=require(_0xabc7('0x9'));var client=jayson[_0xabc7('0xa')][_0xabc7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x28396c,_0x54a7d4,_0x2536d1){return new BPromise(function(_0x5b6d13,_0x441642){return client['request'](_0x28396c,_0x2536d1)[_0xabc7('0xc')](function(_0x2d15b4){logger[_0xabc7('0xd')](_0xabc7('0xe'),_0x54a7d4,_0xabc7('0xf'));logger['debug']('Automation,\x20%s,\x20%s,\x20%s',_0x54a7d4,_0xabc7('0xf'),JSON['stringify'](_0x2d15b4));if(_0x2d15b4[_0xabc7('0x10')]){if(_0x2d15b4[_0xabc7('0x10')][_0xabc7('0x11')]===0x1f4){logger['error'](_0xabc7('0xe'),_0x54a7d4,_0x2d15b4[_0xabc7('0x10')]['message']);return _0x441642(_0x2d15b4['error'][_0xabc7('0x12')]);}logger[_0xabc7('0x10')]('Automation,\x20%s,\x20%s',_0x54a7d4,_0x2d15b4[_0xabc7('0x10')]['message']);return _0x5b6d13(_0x2d15b4[_0xabc7('0x10')][_0xabc7('0x12')]);}else{logger[_0xabc7('0xd')](_0xabc7('0xe'),_0x54a7d4,'request\x20sent');_0x5b6d13(_0x2d15b4['result'][_0xabc7('0x12')]);}})[_0xabc7('0x13')](function(_0x4216a2){logger[_0xabc7('0x10')]('Automation,\x20%s,\x20%s',_0x54a7d4,_0x4216a2);_0x441642(_0x4216a2);});});}
\ No newline at end of file
index 8185c44..c9b98a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf442=['put','/:id','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','get','isAuthenticated','show','/:id/conditions','getConditions','/:id/actions','getActions','post','addConditions','addActions'];(function(_0x3f25db,_0x1d3686){var _0x54f29d=function(_0x2963bb){while(--_0x2963bb){_0x3f25db['push'](_0x3f25db['shift']());}};_0x54f29d(++_0x1d3686);}(_0xf442,0xbc));var _0x2f44=function(_0x4a924e,_0x1839ff){_0x4a924e=_0x4a924e-0x0;var _0x142474=_0xf442[_0x4a924e];return _0x142474;};'use strict';var multer=require(_0x2f44('0x0'));var util=require(_0x2f44('0x1'));var path=require(_0x2f44('0x2'));var timeout=require('connect-timeout');var express=require(_0x2f44('0x3'));var router=express[_0x2f44('0x4')]();var fs_extra=require(_0x2f44('0x5'));var auth=require(_0x2f44('0x6'));var interaction=require(_0x2f44('0x7'));var config=require(_0x2f44('0x8'));var controller=require(_0x2f44('0x9'));router[_0x2f44('0xa')]('/',auth[_0x2f44('0xb')](),controller['index']);router[_0x2f44('0xa')]('/:id',auth[_0x2f44('0xb')](),controller[_0x2f44('0xc')]);router[_0x2f44('0xa')](_0x2f44('0xd'),auth[_0x2f44('0xb')](),controller[_0x2f44('0xe')]);router[_0x2f44('0xa')](_0x2f44('0xf'),auth[_0x2f44('0xb')](),controller[_0x2f44('0x10')]);router['post']('/',auth[_0x2f44('0xb')](),controller['create']);router[_0x2f44('0x11')]('/:id/conditions',auth[_0x2f44('0xb')](),controller[_0x2f44('0x12')]);router[_0x2f44('0x11')]('/:id/actions',auth[_0x2f44('0xb')](),controller[_0x2f44('0x13')]);router[_0x2f44('0x14')](_0x2f44('0x15'),auth[_0x2f44('0xb')](),controller[_0x2f44('0x16')]);router[_0x2f44('0x17')](_0x2f44('0x15'),auth[_0x2f44('0xb')](),controller[_0x2f44('0x18')]);module[_0x2f44('0x19')]=router;
\ No newline at end of file
+var _0xabd8=['/:id/actions','getActions','post','create','addConditions','addActions','put','update','delete','exports','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','get','isAuthenticated','index','/:id','show','/:id/conditions','getConditions'];(function(_0x35e9ad,_0x4c29a4){var _0x5b5e9c=function(_0x197fef){while(--_0x197fef){_0x35e9ad['push'](_0x35e9ad['shift']());}};_0x5b5e9c(++_0x4c29a4);}(_0xabd8,0x142));var _0x8abd=function(_0x39cf70,_0x3ec55b){_0x39cf70=_0x39cf70-0x0;var _0x580424=_0xabd8[_0x39cf70];return _0x580424;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x8abd('0x0'));var express=require(_0x8abd('0x1'));var router=express[_0x8abd('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x8abd('0x3'));var interaction=require(_0x8abd('0x4'));var config=require(_0x8abd('0x5'));var controller=require(_0x8abd('0x6'));router[_0x8abd('0x7')]('/',auth[_0x8abd('0x8')](),controller[_0x8abd('0x9')]);router[_0x8abd('0x7')](_0x8abd('0xa'),auth[_0x8abd('0x8')](),controller[_0x8abd('0xb')]);router[_0x8abd('0x7')](_0x8abd('0xc'),auth['isAuthenticated'](),controller[_0x8abd('0xd')]);router[_0x8abd('0x7')](_0x8abd('0xe'),auth[_0x8abd('0x8')](),controller[_0x8abd('0xf')]);router[_0x8abd('0x10')]('/',auth[_0x8abd('0x8')](),controller[_0x8abd('0x11')]);router[_0x8abd('0x10')](_0x8abd('0xc'),auth['isAuthenticated'](),controller[_0x8abd('0x12')]);router[_0x8abd('0x10')](_0x8abd('0xe'),auth['isAuthenticated'](),controller[_0x8abd('0x13')]);router[_0x8abd('0x14')](_0x8abd('0xa'),auth[_0x8abd('0x8')](),controller[_0x8abd('0x15')]);router[_0x8abd('0x16')](_0x8abd('0xa'),auth[_0x8abd('0x8')](),controller['destroy']);module[_0x8abd('0x17')]=router;
\ No newline at end of file
index 05cbb48..2294fcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x202d=['Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','exports','name','ENUM','ivr','STRING','BOOLEAN','Active/Disactive\x20Campaign','UNSIGNED','Max\x20200\x20calls.','INTEGER','Originate\x20Timeout\x20Seconds\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)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','onlyIfOpen','always','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'];(function(_0x2e03ec,_0x4867f7){var _0x2eb7e5=function(_0x3c5cfe){while(--_0x3c5cfe){_0x2e03ec['push'](_0x2e03ec['shift']());}};_0x2eb7e5(++_0x4867f7);}(_0x202d,0x16d));var _0xd202=function(_0x18986d,_0x71d595){_0x18986d=_0x18986d-0x0;var _0x268515=_0x202d[_0x18986d];return _0x268515;};'use strict';var Sequelize=require('sequelize');module[_0xd202('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0xd202('0x1'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0xd202('0x2')]('ivr'),'allowNull':![],'defaultValue':_0xd202('0x3')},'description':{'type':Sequelize[_0xd202('0x4')]},'active':{'type':Sequelize[_0xd202('0x5')],'defaultValue':0x0,'comment':_0xd202('0x6')},'limitCalls':{'type':Sequelize['INTEGER'](0x4)[_0xd202('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0xd202('0x8')},'dialOriginateCallerIdName':{'type':Sequelize[_0xd202('0x4')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xd202('0x4')]},'dialOriginateTimeout':{'type':Sequelize[_0xd202('0x9')](0x3)[_0xd202('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd202('0xa')},'dialCongestionMaxRetry':{'type':Sequelize[_0xd202('0x9')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0xd202('0x9')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd202('0xb')},'dialBusyMaxRetry':{'type':Sequelize[_0xd202('0x9')](0x3)[_0xd202('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd202('0xc')},'dialBusyRetryFrequency':{'type':Sequelize[_0xd202('0x9')](0x5)[_0xd202('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xd202('0x9')](0x3)[_0xd202('0x7')],'defaultValue':0x3,'comment':_0xd202('0xd')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xd202('0x9')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize[_0xd202('0x9')](0x3)[_0xd202('0x7')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xd202('0xe')},'dialTimezone':{'type':Sequelize[_0xd202('0x4')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0xd202('0xf')},'dialCheckDuplicateType':{'type':Sequelize[_0xd202('0x2')]('always','never',_0xd202('0x10')),'defaultValue':_0xd202('0x11')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0xd202('0x9')](0x9)[_0xd202('0x7')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xd202('0x12')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)[_0xd202('0x7')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xd202('0x13')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xd202('0x9')](0x9)[_0xd202('0x7')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xd202('0x14')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xd202('0x9')](0x9)[_0xd202('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xd202('0x15')},'dialAMDMinWordLength':{'type':Sequelize[_0xd202('0x9')](0x9)[_0xd202('0x7')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xd202('0x16')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xd202('0x9')](0x9)[_0xd202('0x7')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xd202('0x17')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xd202('0x9')](0x9)[_0xd202('0x7')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xd202('0x18')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xd202('0x9')](0x9)[_0xd202('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xd202('0x19')},'dialOrderByScheduledAt':{'type':Sequelize[_0xd202('0x2')](_0xd202('0x1a'),_0xd202('0x1b')),'defaultValue':'DESC'},'dialPrefix':{'type':Sequelize[_0xd202('0x4')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xd202('0x9')](0x3)[_0xd202('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xd202('0x1c')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0xd202('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xd202('0x9')](0x3)[_0xd202('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd202('0x1d')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xd202('0x9')](0x5)[_0xd202('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd202('0x1e')},'dialDropMaxRetry':{'type':Sequelize[_0xd202('0x9')](0x3)[_0xd202('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xd202('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd202('0x1f')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xd202('0x9')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xd202('0x20')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xd202('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd202('0x21')},'dialMachineMaxRetry':{'type':Sequelize[_0xd202('0x9')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xd202('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd202('0x22')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xd202('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xd202('0x9')](0x5)[_0xd202('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xd202('0x23')}};
\ No newline at end of file
+var _0x2e25=['UNSIGNED','#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','onlyIfOpen','BOOLEAN','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','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\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','ENUM','ivr','INTEGER','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'];(function(_0x344eb8,_0x12a8a5){var _0x3f197c=function(_0x21fa6e){while(--_0x21fa6e){_0x344eb8['push'](_0x344eb8['shift']());}};_0x3f197c(++_0x12a8a5);}(_0x2e25,0x8c));var _0x52e2=function(_0x42c3db,_0x4e6268){_0x42c3db=_0x42c3db-0x0;var _0x572868=_0x2e25[_0x42c3db];return _0x572868;};'use strict';var Sequelize=require(_0x52e2('0x0'));module[_0x52e2('0x1')]={'name':{'type':Sequelize[_0x52e2('0x2')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x52e2('0x3')](_0x52e2('0x4')),'allowNull':![],'defaultValue':'ivr'},'description':{'type':Sequelize[_0x52e2('0x2')]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'limitCalls':{'type':Sequelize[_0x52e2('0x5')](0x4)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x52e2('0x6')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize[_0x52e2('0x5')](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x52e2('0x7')},'dialCongestionMaxRetry':{'type':Sequelize[_0x52e2('0x5')](0x3)[_0x52e2('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x52e2('0x9')},'dialCongestionRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x52e2('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x52e2('0xa')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x52e2('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x52e2('0xb')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x52e2('0x5')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0x52e2('0xc')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x52e2('0x5')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x52e2('0xd')},'dialGlobalMaxRetry':{'type':Sequelize[_0x52e2('0x5')](0x3)[_0x52e2('0x8')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x52e2('0xe')},'dialTimezone':{'type':Sequelize[_0x52e2('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x52e2('0x2')],'defaultValue':_0x52e2('0xf')},'dialCheckDuplicateType':{'type':Sequelize[_0x52e2('0x3')](_0x52e2('0x10'),'never',_0x52e2('0x11')),'defaultValue':_0x52e2('0x10')},'dialAMDActive':{'type':Sequelize[_0x52e2('0x12')],'defaultValue':0x0,'comment':_0x52e2('0x13')},'dialAMDInitialSilence':{'type':Sequelize[_0x52e2('0x5')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x52e2('0x14')},'dialAMDGreeting':{'type':Sequelize[_0x52e2('0x5')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x52e2('0x15')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0x52e2('0x8')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x52e2('0x16')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x52e2('0x5')](0x9)[_0x52e2('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x52e2('0x17')},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x52e2('0x8')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x52e2('0x5')](0x9)[_0x52e2('0x8')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x52e2('0x18')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x52e2('0x5')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize[_0x52e2('0x5')](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x52e2('0x19')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x52e2('0x5')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x52e2('0x1a')},'dialOrderByScheduledAt':{'type':Sequelize[_0x52e2('0x3')](_0x52e2('0x1b'),_0x52e2('0x1c')),'defaultValue':'DESC'},'dialPrefix':{'type':Sequelize[_0x52e2('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x52e2('0x5')](0x3)[_0x52e2('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x52e2('0x1d')},'dialCutDigit':{'type':Sequelize[_0x52e2('0x5')](0x3)[_0x52e2('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x52e2('0x5')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x52e2('0x1e')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x52e2('0x5')](0x5)[_0x52e2('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x52e2('0x1f')},'dialDropMaxRetry':{'type':Sequelize[_0x52e2('0x5')](0x3)[_0x52e2('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x52e2('0x20')},'dialDropRetryFrequency':{'type':Sequelize[_0x52e2('0x5')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x52e2('0x21')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x52e2('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x52e2('0x5')](0x5)[_0x52e2('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x52e2('0x22')},'dialMachineMaxRetry':{'type':Sequelize[_0x52e2('0x5')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x52e2('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x52e2('0x5')](0x3)[_0x52e2('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x52e2('0x23')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x52e2('0x5')](0x5)[_0x52e2('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x52e2('0x24')}};
\ No newline at end of file
index 78cfeec..2a9fb9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e4d=['end','error','stack','name','send','index','map','Campaign','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','pick','filter','merge','options','includeAll','include','findAll','catch','show','params','keys','find','body','user','autoAssociation','create','omit','createdAt','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getHoppers','findOne','CmHopper','order','sort','where','CampaignId','rows','getHopperHistories','CmHopperHistory','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','ids','spread','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ListId','select','field','NOW()','ContactId','toString','from','cm_contacts','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','onlyIfOpen','CmListId','deletedAt\x20IS\x20NULL','COALESCE(phone,\x27\x27)','push','sequelize','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','save','then','get','IvrCampaigns','UserProfileResource','destroy'];(function(_0x14540b,_0x85d32d){var _0x394822=function(_0x2e9b0e){while(--_0x2e9b0e){_0x14540b['push'](_0x14540b['shift']());}};_0x394822(++_0x85d32d);}(_0x0e4d,0x170));var _0xd0e4=function(_0x2a70d4,_0x3296bd){_0x2a70d4=_0x2a70d4-0x0;var _0x3ac4f6=_0x0e4d[_0x2a70d4];return _0x3ac4f6;};'use strict';var emlformat=require(_0xd0e4('0x0'));var rimraf=require(_0xd0e4('0x1'));var zipdir=require(_0xd0e4('0x2'));var jsonpatch=require(_0xd0e4('0x3'));var rp=require(_0xd0e4('0x4'));var moment=require(_0xd0e4('0x5'));var BPromise=require(_0xd0e4('0x6'));var Mustache=require('mustache');var util=require(_0xd0e4('0x7'));var path=require(_0xd0e4('0x8'));var sox=require(_0xd0e4('0x9'));var csv=require(_0xd0e4('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd0e4('0xb'));var _=require(_0xd0e4('0xc'));var squel=require(_0xd0e4('0xd'));var crypto=require(_0xd0e4('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xd0e4('0xf'));var toCsv=require('to-csv');var querystring=require(_0xd0e4('0x10'));var Papa=require(_0xd0e4('0x11'));var Redis=require(_0xd0e4('0x12'));var authService=require(_0xd0e4('0x13'));var qs=require(_0xd0e4('0x14'));var as=require(_0xd0e4('0x15'));var hardwareService=require(_0xd0e4('0x16'));var logger=require('../../config/logger')(_0xd0e4('0x17'));var utils=require(_0xd0e4('0x18'));var config=require(_0xd0e4('0x19'));var licenseUtil=require(_0xd0e4('0x1a'));var db=require(_0xd0e4('0x1b'))['db'];function respondWithStatusCode(_0xdfa269,_0x41a936){_0x41a936=_0x41a936||0xcc;return function(_0x2701b2){if(_0x2701b2){return _0xdfa269[_0xd0e4('0x1c')](_0x41a936);}return _0xdfa269[_0xd0e4('0x1d')](_0x41a936)['end']();};}function respondWithResult(_0x479183,_0x4e7e42){_0x4e7e42=_0x4e7e42||0xc8;return function(_0x663e21){if(_0x663e21){return _0x479183['status'](_0x4e7e42)['json'](_0x663e21);}};}function respondWithFilteredResult(_0x38c9c5,_0x44c704){return function(_0x1256b2){if(_0x1256b2){var _0x2a97da=typeof _0x44c704[_0xd0e4('0x1e')]===_0xd0e4('0x1f')&&typeof _0x44c704[_0xd0e4('0x20')]===_0xd0e4('0x1f');var _0xd1a072=_0x1256b2[_0xd0e4('0x21')];var _0x16dcdf=_0x2a97da?0x0:_0x44c704[_0xd0e4('0x1e')];var _0x426f2e=_0x2a97da?_0x1256b2[_0xd0e4('0x21')]:_0x44c704[_0xd0e4('0x1e')]+_0x44c704[_0xd0e4('0x20')];var _0x3ed59c;if(_0x426f2e>=_0xd1a072){_0x426f2e=_0xd1a072;_0x3ed59c=0xc8;}else{_0x3ed59c=0xce;}_0x38c9c5[_0xd0e4('0x1d')](_0x3ed59c);return _0x38c9c5[_0xd0e4('0x22')](_0xd0e4('0x23'),_0x16dcdf+'-'+_0x426f2e+'/'+_0xd1a072)[_0xd0e4('0x24')](_0x1256b2);}return null;};}function patchUpdates(_0x4edfec){return function(_0x1080a3){try{jsonpatch['apply'](_0x1080a3,_0x4edfec,!![]);}catch(_0x3d2c2f){return BPromise['reject'](_0x3d2c2f);}return _0x1080a3[_0xd0e4('0x25')]();};}function saveUpdates(_0x374be5,_0x6ae283){return function(_0xb2b51a){if(_0xb2b51a){return _0xb2b51a['update'](_0x374be5)['then'](function(_0x195527){return _0x195527;});}return null;};}function removeEntity(_0x9afb19,_0x1709dd){return function(_0x5b238a){if(_0x5b238a){return _0x5b238a['destroy']()[_0xd0e4('0x26')](function(){var _0x401ba1=_0x5b238a[_0xd0e4('0x27')]({'plain':!![]});var _0x2346c9=_0xd0e4('0x28');return db[_0xd0e4('0x29')][_0xd0e4('0x2a')]({'where':{'type':_0x2346c9,'resourceId':_0x401ba1['id']}})[_0xd0e4('0x26')](function(){return _0x5b238a;});})[_0xd0e4('0x26')](function(){_0x9afb19['status'](0xcc)[_0xd0e4('0x2b')]();});}};}function handleEntityNotFound(_0x3ec5a5,_0x315634){return function(_0x3a5335){if(!_0x3a5335){_0x3ec5a5[_0xd0e4('0x1c')](0x194);}return _0x3a5335;};}function handleError(_0x332637,_0x4ce2de){_0x4ce2de=_0x4ce2de||0x1f4;return function(_0x50ada1){logger[_0xd0e4('0x2c')](_0x50ada1[_0xd0e4('0x2d')]);if(_0x50ada1[_0xd0e4('0x2e')]){delete _0x50ada1[_0xd0e4('0x2e')];}_0x332637[_0xd0e4('0x1d')](_0x4ce2de)[_0xd0e4('0x2f')](_0x50ada1);};}exports[_0xd0e4('0x30')]=function(_0x5cd6e2,_0x3ded2e){var _0x49d774={},_0x426ccb={},_0xa9acc2={'count':0x0,'rows':[]};var _0x35c9e0=_[_0xd0e4('0x31')](db[_0xd0e4('0x32')][_0xd0e4('0x33')],function(_0x4a4a46){return{'name':_0x4a4a46['fieldName'],'type':_0x4a4a46[_0xd0e4('0x34')][_0xd0e4('0x35')]};});_0x426ccb[_0xd0e4('0x36')]=_[_0xd0e4('0x31')](_0x35c9e0,_0xd0e4('0x2e'));_0x426ccb[_0xd0e4('0x37')]=_['keys'](_0x5cd6e2[_0xd0e4('0x37')]);_0x426ccb[_0xd0e4('0x38')]=_[_0xd0e4('0x39')](_0x426ccb[_0xd0e4('0x36')],_0x426ccb[_0xd0e4('0x37')]);_0x49d774[_0xd0e4('0x3a')]=_[_0xd0e4('0x39')](_0x426ccb[_0xd0e4('0x36')],qs['fields'](_0x5cd6e2[_0xd0e4('0x37')][_0xd0e4('0x3b')]));_0x49d774[_0xd0e4('0x3a')]=_0x49d774[_0xd0e4('0x3a')][_0xd0e4('0x3c')]?_0x49d774[_0xd0e4('0x3a')]:_0x426ccb[_0xd0e4('0x36')];if(!_0x5cd6e2[_0xd0e4('0x37')][_0xd0e4('0x3d')](_0xd0e4('0x3e'))){_0x49d774[_0xd0e4('0x20')]=qs[_0xd0e4('0x20')](_0x5cd6e2[_0xd0e4('0x37')][_0xd0e4('0x20')]);_0x49d774['offset']=qs[_0xd0e4('0x1e')](_0x5cd6e2[_0xd0e4('0x37')][_0xd0e4('0x1e')]);}_0x49d774['order']=qs['sort'](_0x5cd6e2['query']['sort']);_0x49d774['where']=qs[_0xd0e4('0x38')](_[_0xd0e4('0x3f')](_0x5cd6e2[_0xd0e4('0x37')],_0x426ccb[_0xd0e4('0x38')]),_0x35c9e0);if(_0x5cd6e2[_0xd0e4('0x37')][_0xd0e4('0x40')]){_0x49d774['where']=_['merge'](_0x49d774['where'],{'$or':_[_0xd0e4('0x31')](_0x35c9e0,function(_0x863592){if(_0x863592['type']!=='VIRTUAL'){var _0x31355c={};_0x31355c[_0x863592[_0xd0e4('0x2e')]]={'$like':'%'+_0x5cd6e2[_0xd0e4('0x37')][_0xd0e4('0x40')]+'%'};return _0x31355c;}})});}_0x49d774=_[_0xd0e4('0x41')]({},_0x49d774,_0x5cd6e2[_0xd0e4('0x42')]);var _0x31547a={'where':_0x49d774['where']};return db['Campaign']['count'](_0x31547a)['then'](function(_0xda2c94){_0xa9acc2['count']=_0xda2c94;if(_0x5cd6e2[_0xd0e4('0x37')][_0xd0e4('0x43')]){_0x49d774[_0xd0e4('0x44')]=[{'all':!![]}];}return db[_0xd0e4('0x32')][_0xd0e4('0x45')](_0x49d774);})[_0xd0e4('0x26')](function(_0x5035ec){_0xa9acc2['rows']=_0x5035ec;return _0xa9acc2;})[_0xd0e4('0x26')](respondWithFilteredResult(_0x3ded2e,_0x49d774))[_0xd0e4('0x46')](handleError(_0x3ded2e,null));};exports[_0xd0e4('0x47')]=function(_0x247e02,_0x4bae4a){var _0x5f10bd={'raw':![],'where':{'id':_0x247e02[_0xd0e4('0x48')]['id']}},_0x4166e2={};_0x4166e2['model']=_[_0xd0e4('0x49')](db[_0xd0e4('0x32')][_0xd0e4('0x33')]);_0x4166e2[_0xd0e4('0x37')]=_[_0xd0e4('0x49')](_0x247e02['query']);_0x4166e2[_0xd0e4('0x38')]=_[_0xd0e4('0x39')](_0x4166e2[_0xd0e4('0x36')],_0x4166e2[_0xd0e4('0x37')]);_0x5f10bd[_0xd0e4('0x3a')]=_[_0xd0e4('0x39')](_0x4166e2[_0xd0e4('0x36')],qs[_0xd0e4('0x3b')](_0x247e02[_0xd0e4('0x37')][_0xd0e4('0x3b')]));_0x5f10bd['attributes']=_0x5f10bd['attributes']['length']?_0x5f10bd[_0xd0e4('0x3a')]:_0x4166e2[_0xd0e4('0x36')];if(_0x247e02[_0xd0e4('0x37')]['includeAll']){_0x5f10bd[_0xd0e4('0x44')]=[{'all':!![]}];}_0x5f10bd=_[_0xd0e4('0x41')]({},_0x5f10bd,_0x247e02['options']);return db[_0xd0e4('0x32')][_0xd0e4('0x4a')](_0x5f10bd)[_0xd0e4('0x26')](handleEntityNotFound(_0x4bae4a,null))[_0xd0e4('0x26')](respondWithResult(_0x4bae4a,null))[_0xd0e4('0x46')](handleError(_0x4bae4a,null));};exports['create']=function(_0x3c355b,_0x2b6595){return db[_0xd0e4('0x32')]['create'](_0x3c355b[_0xd0e4('0x4b')],{})['then'](function(_0x2d233e){var _0x1db878=_0x3c355b[_0xd0e4('0x4c')][_0xd0e4('0x27')]({'plain':!![]});if(!_0x1db878)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1db878['role']===_0xd0e4('0x4c')){var _0x2e589e=_0x2d233e[_0xd0e4('0x27')]({'plain':!![]});var _0x4509ee=_0xd0e4('0x28');return db['UserProfileSection'][_0xd0e4('0x4a')]({'where':{'name':_0x4509ee,'userProfileId':_0x1db878['userProfileId']},'raw':!![]})[_0xd0e4('0x26')](function(_0x2716d3){if(_0x2716d3&&_0x2716d3[_0xd0e4('0x4d')]===0x0){return db[_0xd0e4('0x29')][_0xd0e4('0x4e')]({'name':_0x2e589e[_0xd0e4('0x2e')],'resourceId':_0x2e589e['id'],'type':_0x2716d3[_0xd0e4('0x2e')],'sectionId':_0x2716d3['id']},{})[_0xd0e4('0x26')](function(){return _0x2d233e;});}else{return _0x2d233e;}})[_0xd0e4('0x46')](function(_0x3c95c6){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3c95c6);throw _0x3c95c6;});}return _0x2d233e;})[_0xd0e4('0x26')](respondWithResult(_0x2b6595,0xc9))[_0xd0e4('0x46')](handleError(_0x2b6595,null));};exports['clone']=function(_0x1c5aa8,_0x1940a0){var _0xf57ec1={'where':{'id':_0x1c5aa8[_0xd0e4('0x48')]['id']}},_0x1716a5={};_0x1716a5[_0xd0e4('0x36')]=_['keys'](db['Campaign'][_0xd0e4('0x33')]);_0xf57ec1[_0xd0e4('0x3a')]=_['intersection'](_0x1716a5['model'],qs[_0xd0e4('0x3b')](_0x1c5aa8[_0xd0e4('0x37')]['fields']));_0xf57ec1[_0xd0e4('0x3a')]=_0xf57ec1[_0xd0e4('0x3a')][_0xd0e4('0x3c')]?_0xf57ec1[_0xd0e4('0x3a')]:_0x1716a5[_0xd0e4('0x36')];if(_0x1c5aa8['query'][_0xd0e4('0x43')]){_0xf57ec1[_0xd0e4('0x44')]=[{'all':!![]}];}_0xf57ec1=_['merge']({},_0xf57ec1,_0x1c5aa8['options']);return db[_0xd0e4('0x32')][_0xd0e4('0x4a')](_0xf57ec1)[_0xd0e4('0x26')](handleEntityNotFound(_0x1940a0,null))[_0xd0e4('0x26')](function(_0x586709){if(_0x586709){var _0x163f36=_0x586709['get']({'plain':!![]});_0x163f36=qs[_0xd0e4('0x4f')](_0x163f36,['id',_0xd0e4('0x50'),_0xd0e4('0x51')]);_0x1c5aa8[_0xd0e4('0x4b')]=_[_0xd0e4('0x4f')](_0x1c5aa8[_0xd0e4('0x4b')],['id',_0xd0e4('0x50'),'updatedAt']);return db[_0xd0e4('0x32')][_0xd0e4('0x4e')](_['merge'](_0x163f36,_0x1c5aa8[_0xd0e4('0x4b')]),{'include':_0x1c5aa8[_0xd0e4('0x37')][_0xd0e4('0x43')]?[{'all':!![]}]:undefined})[_0xd0e4('0x26')](function(_0x2b9604){var _0x5138bf=_0x1c5aa8[_0xd0e4('0x4c')][_0xd0e4('0x27')]({'plain':!![]});if(!_0x5138bf)throw new Error(_0xd0e4('0x52'));if(_0x5138bf[_0xd0e4('0x53')]==='user'){var _0x49c3bf=_0x2b9604[_0xd0e4('0x27')]({'plain':!![]});var _0x5baf26=_0xd0e4('0x28');return db[_0xd0e4('0x54')][_0xd0e4('0x4a')]({'where':{'name':_0x5baf26,'userProfileId':_0x5138bf['userProfileId']},'raw':!![]})[_0xd0e4('0x26')](function(_0x26043f){if(_0x26043f&&_0x26043f[_0xd0e4('0x4d')]===0x0){return db[_0xd0e4('0x29')][_0xd0e4('0x4e')]({'name':_0x49c3bf['name'],'resourceId':_0x49c3bf['id'],'type':_0x26043f[_0xd0e4('0x2e')],'sectionId':_0x26043f['id']},{})[_0xd0e4('0x26')](function(){return _0x2b9604;});}else{return _0x2b9604;}})[_0xd0e4('0x46')](function(_0x1e8d35){logger[_0xd0e4('0x2c')](_0xd0e4('0x55'),_0x1e8d35);throw _0x1e8d35;});}return _0x2b9604;});}})[_0xd0e4('0x26')](respondWithResult(_0x1940a0,0xc9))[_0xd0e4('0x46')](handleError(_0x1940a0,null));};exports['update']=function(_0xad379d,_0x3dcb27){if(_0xad379d[_0xd0e4('0x4b')]['id']){delete _0xad379d['body']['id'];}return db[_0xd0e4('0x32')][_0xd0e4('0x4a')]({'where':{'id':_0xad379d[_0xd0e4('0x48')]['id']}})[_0xd0e4('0x26')](handleEntityNotFound(_0x3dcb27,null))[_0xd0e4('0x26')](saveUpdates(_0xad379d[_0xd0e4('0x4b')],null))[_0xd0e4('0x26')](respondWithResult(_0x3dcb27,null))[_0xd0e4('0x46')](handleError(_0x3dcb27,null));};exports['destroy']=function(_0x326937,_0x5cbc8e){return db[_0xd0e4('0x32')][_0xd0e4('0x4a')]({'where':{'id':_0x326937[_0xd0e4('0x48')]['id']}})[_0xd0e4('0x26')](handleEntityNotFound(_0x5cbc8e,null))[_0xd0e4('0x26')](removeEntity(_0x5cbc8e,null))[_0xd0e4('0x46')](handleError(_0x5cbc8e,null));};exports[_0xd0e4('0x56')]=function(_0x32432f,_0x14264f,_0xd58965){var _0x479239={'raw':!![],'where':{}};var _0x2a401a={};var _0x4dd01d={'count':0x0,'rows':[]};return db[_0xd0e4('0x32')][_0xd0e4('0x57')]({'where':{'id':_0x32432f[_0xd0e4('0x48')]['id']}})[_0xd0e4('0x26')](handleEntityNotFound(_0x14264f,null))[_0xd0e4('0x26')](function(_0x21429a){if(_0x21429a){_0x2a401a[_0xd0e4('0x36')]=_[_0xd0e4('0x49')](db[_0xd0e4('0x58')]['rawAttributes']);_0x2a401a[_0xd0e4('0x37')]=_[_0xd0e4('0x49')](_0x32432f[_0xd0e4('0x37')]);_0x2a401a['filters']=_[_0xd0e4('0x39')](_0x2a401a[_0xd0e4('0x36')],_0x2a401a[_0xd0e4('0x37')]);_0x479239[_0xd0e4('0x3a')]=_[_0xd0e4('0x39')](_0x2a401a[_0xd0e4('0x36')],qs[_0xd0e4('0x3b')](_0x32432f[_0xd0e4('0x37')][_0xd0e4('0x3b')]));_0x479239['attributes']=_0x479239[_0xd0e4('0x3a')][_0xd0e4('0x3c')]?_0x479239['attributes']:_0x2a401a[_0xd0e4('0x36')];if(!_0x32432f[_0xd0e4('0x37')]['hasOwnProperty'](_0xd0e4('0x3e'))){_0x479239[_0xd0e4('0x20')]=qs[_0xd0e4('0x20')](_0x32432f[_0xd0e4('0x37')]['limit']);_0x479239['offset']=qs[_0xd0e4('0x1e')](_0x32432f[_0xd0e4('0x37')]['offset']);}_0x479239[_0xd0e4('0x59')]=qs[_0xd0e4('0x5a')](_0x32432f[_0xd0e4('0x37')][_0xd0e4('0x5a')]);_0x479239['where']=qs[_0xd0e4('0x38')](_[_0xd0e4('0x3f')](_0x32432f[_0xd0e4('0x37')],_0x2a401a[_0xd0e4('0x38')]));_0x479239[_0xd0e4('0x5b')][_0xd0e4('0x5c')]=_0x21429a['id'];if(_0x32432f['query'][_0xd0e4('0x40')]){_0x479239[_0xd0e4('0x5b')]=_[_0xd0e4('0x41')](_0x479239[_0xd0e4('0x5b')],{'$or':_['map'](_0x479239[_0xd0e4('0x3a')],function(_0x17f1a2){var _0x49ba5f={};_0x49ba5f[_0x17f1a2]={'$like':'%'+_0x32432f[_0xd0e4('0x37')][_0xd0e4('0x40')]+'%'};return _0x49ba5f;})});}_0x479239=_[_0xd0e4('0x41')]({},_0x479239,_0x32432f['options']);return db[_0xd0e4('0x58')][_0xd0e4('0x21')]({'where':_0x479239[_0xd0e4('0x5b')]})[_0xd0e4('0x26')](function(_0xaf472c){_0x4dd01d['count']=_0xaf472c;if(_0x32432f[_0xd0e4('0x37')][_0xd0e4('0x43')]){_0x479239[_0xd0e4('0x44')]=[{'all':!![]}];}return db['CmHopper'][_0xd0e4('0x45')](_0x479239);})[_0xd0e4('0x26')](function(_0x1fbbdd){_0x4dd01d[_0xd0e4('0x5d')]=_0x1fbbdd;return _0x4dd01d;});}})['then'](respondWithFilteredResult(_0x14264f,_0x479239))[_0xd0e4('0x46')](handleError(_0x14264f,null));};exports[_0xd0e4('0x5e')]=function(_0x452f0e,_0x2e7972,_0x3e71c7){var _0x2fa976={'raw':!![],'where':{}};var _0x43da74={};var _0x30a07d={'count':0x0,'rows':[]};return db[_0xd0e4('0x32')][_0xd0e4('0x57')]({'where':{'id':_0x452f0e['params']['id']}})[_0xd0e4('0x26')](handleEntityNotFound(_0x2e7972,null))['then'](function(_0x319111){if(_0x319111){_0x43da74['model']=_[_0xd0e4('0x49')](db[_0xd0e4('0x5f')]['rawAttributes']);_0x43da74[_0xd0e4('0x37')]=_['keys'](_0x452f0e[_0xd0e4('0x37')]);_0x43da74[_0xd0e4('0x38')]=_['intersection'](_0x43da74[_0xd0e4('0x36')],_0x43da74['query']);_0x2fa976[_0xd0e4('0x3a')]=_[_0xd0e4('0x39')](_0x43da74[_0xd0e4('0x36')],qs[_0xd0e4('0x3b')](_0x452f0e[_0xd0e4('0x37')][_0xd0e4('0x3b')]));_0x2fa976[_0xd0e4('0x3a')]=_0x2fa976[_0xd0e4('0x3a')][_0xd0e4('0x3c')]?_0x2fa976[_0xd0e4('0x3a')]:_0x43da74[_0xd0e4('0x36')];if(!_0x452f0e[_0xd0e4('0x37')][_0xd0e4('0x3d')]('nolimit')){_0x2fa976[_0xd0e4('0x20')]=qs[_0xd0e4('0x20')](_0x452f0e[_0xd0e4('0x37')][_0xd0e4('0x20')]);_0x2fa976[_0xd0e4('0x1e')]=qs[_0xd0e4('0x1e')](_0x452f0e[_0xd0e4('0x37')][_0xd0e4('0x1e')]);}_0x2fa976[_0xd0e4('0x59')]=qs['sort'](_0x452f0e[_0xd0e4('0x37')][_0xd0e4('0x5a')]);_0x2fa976[_0xd0e4('0x5b')]=qs[_0xd0e4('0x38')](_[_0xd0e4('0x3f')](_0x452f0e['query'],_0x43da74[_0xd0e4('0x38')]));_0x2fa976[_0xd0e4('0x5b')]['CampaignId']=_0x319111['id'];if(_0x452f0e[_0xd0e4('0x37')][_0xd0e4('0x40')]){_0x2fa976[_0xd0e4('0x5b')]=_[_0xd0e4('0x41')](_0x2fa976[_0xd0e4('0x5b')],{'$or':_[_0xd0e4('0x31')](_0x2fa976[_0xd0e4('0x3a')],function(_0x76aa45){var _0x43c78a={};_0x43c78a[_0x76aa45]={'$like':'%'+_0x452f0e[_0xd0e4('0x37')][_0xd0e4('0x40')]+'%'};return _0x43c78a;})});}_0x2fa976=_[_0xd0e4('0x41')]({},_0x2fa976,_0x452f0e[_0xd0e4('0x42')]);return db[_0xd0e4('0x5f')][_0xd0e4('0x21')]({'where':_0x2fa976[_0xd0e4('0x5b')]})[_0xd0e4('0x26')](function(_0x11872e){_0x30a07d[_0xd0e4('0x21')]=_0x11872e;if(_0x452f0e[_0xd0e4('0x37')]['includeAll']){_0x2fa976[_0xd0e4('0x44')]=[{'all':!![]}];}return db[_0xd0e4('0x5f')][_0xd0e4('0x45')](_0x2fa976);})[_0xd0e4('0x26')](function(_0x47bf4c){_0x30a07d[_0xd0e4('0x5d')]=_0x47bf4c;return _0x30a07d;});}})[_0xd0e4('0x26')](respondWithFilteredResult(_0x2e7972,_0x2fa976))[_0xd0e4('0x46')](handleError(_0x2e7972,null));};exports['getHopperFinals']=function(_0x4829ad,_0x131f89,_0x3598d1){var _0x34178c={'raw':!![],'where':{}};var _0x571007={};var _0x506878={'count':0x0,'rows':[]};return db[_0xd0e4('0x32')][_0xd0e4('0x57')]({'where':{'id':_0x4829ad[_0xd0e4('0x48')]['id']}})[_0xd0e4('0x26')](handleEntityNotFound(_0x131f89,null))[_0xd0e4('0x26')](function(_0x489cb3){if(_0x489cb3){_0x571007[_0xd0e4('0x36')]=_[_0xd0e4('0x49')](db[_0xd0e4('0x60')][_0xd0e4('0x33')]);_0x571007['query']=_[_0xd0e4('0x49')](_0x4829ad[_0xd0e4('0x37')]);_0x571007['filters']=_[_0xd0e4('0x39')](_0x571007['model'],_0x571007['query']);_0x34178c[_0xd0e4('0x3a')]=_[_0xd0e4('0x39')](_0x571007[_0xd0e4('0x36')],qs[_0xd0e4('0x3b')](_0x4829ad[_0xd0e4('0x37')][_0xd0e4('0x3b')]));_0x34178c['attributes']=_0x34178c[_0xd0e4('0x3a')]['length']?_0x34178c[_0xd0e4('0x3a')]:_0x571007[_0xd0e4('0x36')];if(!_0x4829ad['query'][_0xd0e4('0x3d')](_0xd0e4('0x3e'))){_0x34178c['limit']=qs['limit'](_0x4829ad['query']['limit']);_0x34178c[_0xd0e4('0x1e')]=qs[_0xd0e4('0x1e')](_0x4829ad[_0xd0e4('0x37')]['offset']);}_0x34178c[_0xd0e4('0x59')]=qs['sort'](_0x4829ad[_0xd0e4('0x37')]['sort']);_0x34178c[_0xd0e4('0x5b')]=qs[_0xd0e4('0x38')](_[_0xd0e4('0x3f')](_0x4829ad[_0xd0e4('0x37')],_0x571007[_0xd0e4('0x38')]));_0x34178c[_0xd0e4('0x5b')][_0xd0e4('0x5c')]=_0x489cb3['id'];if(_0x4829ad['query'][_0xd0e4('0x40')]){_0x34178c[_0xd0e4('0x5b')]=_['merge'](_0x34178c[_0xd0e4('0x5b')],{'$or':_['map'](_0x34178c['attributes'],function(_0x1436a3){var _0x27f330={};_0x27f330[_0x1436a3]={'$like':'%'+_0x4829ad[_0xd0e4('0x37')]['filter']+'%'};return _0x27f330;})});}_0x34178c=_[_0xd0e4('0x41')]({},_0x34178c,_0x4829ad[_0xd0e4('0x42')]);return db[_0xd0e4('0x60')][_0xd0e4('0x21')]({'where':_0x34178c[_0xd0e4('0x5b')]})[_0xd0e4('0x26')](function(_0x4faf08){_0x506878[_0xd0e4('0x21')]=_0x4faf08;if(_0x4829ad[_0xd0e4('0x37')][_0xd0e4('0x43')]){_0x34178c['include']=[{'all':!![]}];}return db['CmHopperFinal'][_0xd0e4('0x45')](_0x34178c);})['then'](function(_0x4a6ffc){_0x506878['rows']=_0x4a6ffc;return _0x506878;});}})['then'](respondWithFilteredResult(_0x131f89,_0x34178c))[_0xd0e4('0x46')](handleError(_0x131f89,null));};exports[_0xd0e4('0x61')]=function(_0x24203b,_0x18d494,_0x21bd70){var _0x564f6c={'raw':!![],'where':{}};var _0x508df2={};var _0x32ca9c={'count':0x0,'rows':[]};return db[_0xd0e4('0x32')][_0xd0e4('0x57')]({'where':{'id':_0x24203b[_0xd0e4('0x48')]['id']}})[_0xd0e4('0x26')](handleEntityNotFound(_0x18d494,null))[_0xd0e4('0x26')](function(_0x31bd17){if(_0x31bd17){_0x508df2[_0xd0e4('0x36')]=_[_0xd0e4('0x49')](db[_0xd0e4('0x62')]['rawAttributes']);_0x508df2[_0xd0e4('0x37')]=_[_0xd0e4('0x49')](_0x24203b[_0xd0e4('0x37')]);_0x508df2[_0xd0e4('0x38')]=_[_0xd0e4('0x39')](_0x508df2[_0xd0e4('0x36')],_0x508df2[_0xd0e4('0x37')]);_0x564f6c[_0xd0e4('0x3a')]=_['intersection'](_0x508df2[_0xd0e4('0x36')],qs['fields'](_0x24203b[_0xd0e4('0x37')][_0xd0e4('0x3b')]));_0x564f6c[_0xd0e4('0x3a')]=_0x564f6c[_0xd0e4('0x3a')][_0xd0e4('0x3c')]?_0x564f6c[_0xd0e4('0x3a')]:_0x508df2[_0xd0e4('0x36')];if(!_0x24203b[_0xd0e4('0x37')][_0xd0e4('0x3d')](_0xd0e4('0x3e'))){_0x564f6c[_0xd0e4('0x20')]=qs['limit'](_0x24203b[_0xd0e4('0x37')][_0xd0e4('0x20')]);_0x564f6c['offset']=qs[_0xd0e4('0x1e')](_0x24203b[_0xd0e4('0x37')]['offset']);}_0x564f6c[_0xd0e4('0x59')]=qs[_0xd0e4('0x5a')](_0x24203b[_0xd0e4('0x37')][_0xd0e4('0x5a')]);_0x564f6c[_0xd0e4('0x5b')]=qs[_0xd0e4('0x38')](_[_0xd0e4('0x3f')](_0x24203b['query'],_0x508df2[_0xd0e4('0x38')]));_0x564f6c['where'][_0xd0e4('0x5c')]=_0x31bd17['id'];if(_0x24203b[_0xd0e4('0x37')]['filter']){_0x564f6c[_0xd0e4('0x5b')]=_[_0xd0e4('0x41')](_0x564f6c[_0xd0e4('0x5b')],{'$or':_[_0xd0e4('0x31')](_0x564f6c[_0xd0e4('0x3a')],function(_0xea66c9){var _0x528cd3={};_0x528cd3[_0xea66c9]={'$like':'%'+_0x24203b[_0xd0e4('0x37')]['filter']+'%'};return _0x528cd3;})});}_0x564f6c=_[_0xd0e4('0x41')]({},_0x564f6c,_0x24203b[_0xd0e4('0x42')]);return db[_0xd0e4('0x62')][_0xd0e4('0x21')]({'where':_0x564f6c[_0xd0e4('0x5b')]})[_0xd0e4('0x26')](function(_0x4b74d6){_0x32ca9c['count']=_0x4b74d6;if(_0x24203b['query']['includeAll']){_0x564f6c['include']=[{'all':!![]}];}return db[_0xd0e4('0x62')][_0xd0e4('0x45')](_0x564f6c);})['then'](function(_0x5a83fb){_0x32ca9c['rows']=_0x5a83fb;return _0x32ca9c;});}})[_0xd0e4('0x26')](respondWithFilteredResult(_0x18d494,_0x564f6c))['catch'](handleError(_0x18d494,null));};exports[_0xd0e4('0x63')]=function(_0x5e4e1e,_0x124667,_0x19a6f6){var _0x3b84d9={};var _0x40cfc9={};var _0x320833;var _0x110cdb;return db[_0xd0e4('0x32')][_0xd0e4('0x57')]({'where':{'id':_0x5e4e1e['params']['id']}})[_0xd0e4('0x26')](handleEntityNotFound(_0x124667,null))[_0xd0e4('0x26')](function(_0x1e3bb5){if(_0x1e3bb5){_0x320833=_0x1e3bb5;_0x40cfc9[_0xd0e4('0x36')]=_['keys'](db[_0xd0e4('0x64')][_0xd0e4('0x33')]);_0x40cfc9[_0xd0e4('0x37')]=_[_0xd0e4('0x49')](_0x5e4e1e[_0xd0e4('0x37')]);_0x40cfc9[_0xd0e4('0x38')]=_[_0xd0e4('0x39')](_0x40cfc9['model'],_0x40cfc9[_0xd0e4('0x37')]);_0x3b84d9[_0xd0e4('0x3a')]=_[_0xd0e4('0x39')](_0x40cfc9[_0xd0e4('0x36')],qs['fields'](_0x5e4e1e[_0xd0e4('0x37')][_0xd0e4('0x3b')]));_0x3b84d9[_0xd0e4('0x3a')]=_0x3b84d9[_0xd0e4('0x3a')]['length']?_0x3b84d9[_0xd0e4('0x3a')]:_0x40cfc9[_0xd0e4('0x36')];_0x3b84d9[_0xd0e4('0x59')]=qs[_0xd0e4('0x5a')](_0x5e4e1e[_0xd0e4('0x37')][_0xd0e4('0x5a')]);_0x3b84d9['where']=qs[_0xd0e4('0x38')](_[_0xd0e4('0x3f')](_0x5e4e1e[_0xd0e4('0x37')],_0x40cfc9[_0xd0e4('0x38')]));if(_0x5e4e1e[_0xd0e4('0x37')][_0xd0e4('0x40')]){_0x3b84d9[_0xd0e4('0x5b')]=_[_0xd0e4('0x41')](_0x3b84d9[_0xd0e4('0x5b')],{'$or':_[_0xd0e4('0x31')](_0x3b84d9[_0xd0e4('0x3a')],function(_0x44009b){var _0x2ca751={};_0x2ca751[_0x44009b]={'$like':'%'+_0x5e4e1e[_0xd0e4('0x37')][_0xd0e4('0x40')]+'%'};return _0x2ca751;})});}_0x3b84d9=_[_0xd0e4('0x41')]({},_0x3b84d9,_0x5e4e1e['options']);return _0x320833['getLists'](_0x3b84d9);}})[_0xd0e4('0x26')](function(_0x233d05){if(_0x233d05){_0x110cdb=_0x233d05[_0xd0e4('0x3c')];if(!_0x5e4e1e[_0xd0e4('0x37')][_0xd0e4('0x3d')]('nolimit')){_0x3b84d9[_0xd0e4('0x20')]=qs[_0xd0e4('0x20')](_0x5e4e1e[_0xd0e4('0x37')][_0xd0e4('0x20')]);_0x3b84d9[_0xd0e4('0x1e')]=qs['offset'](_0x5e4e1e[_0xd0e4('0x37')][_0xd0e4('0x1e')]);}return _0x320833[_0xd0e4('0x63')](_0x3b84d9);}})[_0xd0e4('0x26')](function(_0x3d5a80){if(_0x3d5a80){return _0x3d5a80?{'count':_0x110cdb,'rows':_0x3d5a80}:null;}})['then'](respondWithResult(_0x124667,null))['catch'](handleError(_0x124667,null));};exports['addLists']=function(_0x1974a5,_0x1fef81,_0x2ca3ac){var _0x6f800,_0xe7fff8;return db['Campaign'][_0xd0e4('0x4a')]({'where':{'id':_0x1974a5['params']['id']}})[_0xd0e4('0x26')](handleEntityNotFound(_0x1fef81,null))[_0xd0e4('0x26')](function(_0x57ba5e){if(_0x57ba5e){_0xe7fff8=_0x57ba5e;return _0x57ba5e['addLists'](_0x1974a5[_0xd0e4('0x4b')][_0xd0e4('0x65')],_[_0xd0e4('0x4f')](_0x1974a5['body'],['ids','id'])||{});}return null;})[_0xd0e4('0x66')](function(_0x350f0a){var _0x30a55e;_0x6f800=_0x350f0a||[];var _0x16d928=[];if(_0x350f0a){for(var _0x517ab1=0x0;_0x517ab1<_0x350f0a[_0xd0e4('0x3c')];_0x517ab1+=0x1){var _0x26c1dc=_0x350f0a[_0x517ab1]['get']({'plain':!![]});_0xe7fff8[_0xd0e4('0x67')]=_0x1974a5[_0xd0e4('0x4b')][_0xd0e4('0x67')]?_0x1974a5[_0xd0e4('0x4b')]['dialCheckDuplicateType']:_0xe7fff8[_0xd0e4('0x67')];switch(_0xe7fff8[_0xd0e4('0x67')]){case _0xd0e4('0x68'):_0x30a55e=squel[_0xd0e4('0x69')]()[_0xd0e4('0x6a')](_0xd0e4('0x6b'))[_0xd0e4('0x6c')]([_0xd0e4('0x6d'),_0xd0e4('0x6e'),'ContactId',_0xd0e4('0x6f'),'CampaignId',_0xd0e4('0x50'),_0xd0e4('0x51')],squel[_0xd0e4('0x70')]()[_0xd0e4('0x71')]('phone','phone')['field'](_0xd0e4('0x72'),_0xd0e4('0x6e'))['field']('id',_0xd0e4('0x73'))['field'](_0x26c1dc['CmListId'][_0xd0e4('0x74')](),'ListId')[_0xd0e4('0x71')](_0x1974a5[_0xd0e4('0x48')]['id'][_0xd0e4('0x74')](),_0xd0e4('0x5c'))[_0xd0e4('0x71')](_0xd0e4('0x72'),_0xd0e4('0x50'))[_0xd0e4('0x71')](_0xd0e4('0x72'),_0xd0e4('0x51'))[_0xd0e4('0x75')](_0xd0e4('0x76'))[_0xd0e4('0x5b')]('deletedAt\x20IS\x20NULL')[_0xd0e4('0x5b')](_0xd0e4('0x77'),_0x26c1dc['CmListId'][_0xd0e4('0x74')]())[_0xd0e4('0x5b')](_0xd0e4('0x78'))[_0xd0e4('0x5b')](_0xd0e4('0x79'),squel[_0xd0e4('0x70')]()[_0xd0e4('0x71')](_0xd0e4('0x7a'))[_0xd0e4('0x75')](_0xd0e4('0x7b'))[_0xd0e4('0x5b')](_0xd0e4('0x7c'),_0x1974a5[_0xd0e4('0x48')]['id'][_0xd0e4('0x74')]()))[_0xd0e4('0x5b')]('phone\x20NOT\x20IN\x20(?)',squel[_0xd0e4('0x70')]()[_0xd0e4('0x71')]('COALESCE(phone,\x27\x27)')['from'](_0xd0e4('0x6b'))[_0xd0e4('0x5b')](_0xd0e4('0x7c'),_0x1974a5[_0xd0e4('0x48')]['id'][_0xd0e4('0x74')]())))[_0xd0e4('0x74')]();break;case _0xd0e4('0x7d'):_0x30a55e=squel[_0xd0e4('0x69')]()[_0xd0e4('0x6a')](_0xd0e4('0x6b'))['fromQuery']([_0xd0e4('0x6d'),_0xd0e4('0x6e'),'ContactId','ListId',_0xd0e4('0x5c'),_0xd0e4('0x50'),_0xd0e4('0x51')],squel[_0xd0e4('0x70')]()[_0xd0e4('0x71')]('phone',_0xd0e4('0x6d'))[_0xd0e4('0x71')](_0xd0e4('0x72'),'scheduledAt')[_0xd0e4('0x71')]('id',_0xd0e4('0x73'))[_0xd0e4('0x71')](_0x26c1dc[_0xd0e4('0x7e')]['toString'](),'ListId')['field'](_0x1974a5[_0xd0e4('0x48')]['id'][_0xd0e4('0x74')](),_0xd0e4('0x5c'))[_0xd0e4('0x71')](_0xd0e4('0x72'),_0xd0e4('0x50'))[_0xd0e4('0x71')](_0xd0e4('0x72'),_0xd0e4('0x51'))[_0xd0e4('0x75')]('cm_contacts')[_0xd0e4('0x5b')](_0xd0e4('0x7f'))['where'](_0xd0e4('0x77'),_0x26c1dc[_0xd0e4('0x7e')][_0xd0e4('0x74')]())[_0xd0e4('0x5b')]('phone\x20IS\x20NOT\x20NULL')[_0xd0e4('0x5b')](_0xd0e4('0x79'),squel[_0xd0e4('0x70')]()['field'](_0xd0e4('0x80'))['from']('cm_hopper')[_0xd0e4('0x5b')](_0xd0e4('0x7c'),_0x1974a5[_0xd0e4('0x48')]['id']['toString']())))[_0xd0e4('0x74')]();break;default:_0x30a55e=squel['insert']()['into']('cm_hopper')[_0xd0e4('0x6c')]([_0xd0e4('0x6d'),'scheduledAt',_0xd0e4('0x73'),'ListId',_0xd0e4('0x5c'),_0xd0e4('0x50'),_0xd0e4('0x51')],squel[_0xd0e4('0x70')]()[_0xd0e4('0x71')]('phone','phone')[_0xd0e4('0x71')]('NOW()',_0xd0e4('0x6e'))[_0xd0e4('0x71')]('id',_0xd0e4('0x73'))[_0xd0e4('0x71')](_0x26c1dc[_0xd0e4('0x7e')][_0xd0e4('0x74')](),_0xd0e4('0x6f'))[_0xd0e4('0x71')](_0x1974a5[_0xd0e4('0x48')]['id'][_0xd0e4('0x74')](),_0xd0e4('0x5c'))[_0xd0e4('0x71')](_0xd0e4('0x72'),_0xd0e4('0x50'))[_0xd0e4('0x71')]('NOW()',_0xd0e4('0x51'))[_0xd0e4('0x75')](_0xd0e4('0x76'))['where'](_0xd0e4('0x7f'))[_0xd0e4('0x5b')](_0xd0e4('0x77'),_0x26c1dc['CmListId']['toString']())[_0xd0e4('0x5b')](_0xd0e4('0x78')))['toString']();}_0x16d928[_0xd0e4('0x81')](db[_0xd0e4('0x82')][_0xd0e4('0x37')](_0x30a55e));}return BPromise[_0xd0e4('0x83')](_0x16d928);}})[_0xd0e4('0x26')](function(){return _0x6f800;})[_0xd0e4('0x26')](respondWithResult(_0x1fef81,null))[_0xd0e4('0x46')](handleError(_0x1fef81,null));};exports[_0xd0e4('0x84')]=function(_0x925a14,_0x4f0407,_0x1050fd){return db['Campaign'][_0xd0e4('0x4a')]({'where':{'id':_0x925a14[_0xd0e4('0x48')]['id']}})['then'](handleEntityNotFound(_0x4f0407,null))[_0xd0e4('0x26')](function(_0x1235c5){if(_0x1235c5){return _0x1235c5[_0xd0e4('0x84')](_0x925a14[_0xd0e4('0x37')]['ids']);}})[_0xd0e4('0x26')](function(_0x2db666){if(_0x2db666){return db[_0xd0e4('0x58')][_0xd0e4('0x2a')]({'where':{'ListId':_0x925a14[_0xd0e4('0x37')][_0xd0e4('0x65')],'CampaignId':_0x925a14[_0xd0e4('0x48')]['id']}})[_0xd0e4('0x26')](function(){return _0x2db666;});}})[_0xd0e4('0x26')](respondWithStatusCode(_0x4f0407,null))[_0xd0e4('0x46')](handleError(_0x4f0407,null));};exports['getBlackLists']=function(_0x4176f3,_0xb78ad5,_0x59e78d){var _0x17dcc8={};var _0x2377cf={};var _0x1c63e6;var _0x4dbf61;return db[_0xd0e4('0x32')]['findOne']({'where':{'id':_0x4176f3['params']['id']}})['then'](handleEntityNotFound(_0xb78ad5,null))[_0xd0e4('0x26')](function(_0xed8438){if(_0xed8438){_0x1c63e6=_0xed8438;_0x2377cf[_0xd0e4('0x36')]=_[_0xd0e4('0x49')](db[_0xd0e4('0x64')]['rawAttributes']);_0x2377cf[_0xd0e4('0x37')]=_[_0xd0e4('0x49')](_0x4176f3[_0xd0e4('0x37')]);_0x2377cf['filters']=_[_0xd0e4('0x39')](_0x2377cf['model'],_0x2377cf['query']);_0x17dcc8['attributes']=_[_0xd0e4('0x39')](_0x2377cf['model'],qs[_0xd0e4('0x3b')](_0x4176f3[_0xd0e4('0x37')][_0xd0e4('0x3b')]));_0x17dcc8[_0xd0e4('0x3a')]=_0x17dcc8[_0xd0e4('0x3a')][_0xd0e4('0x3c')]?_0x17dcc8['attributes']:_0x2377cf['model'];_0x17dcc8['order']=qs[_0xd0e4('0x5a')](_0x4176f3[_0xd0e4('0x37')][_0xd0e4('0x5a')]);_0x17dcc8[_0xd0e4('0x5b')]=qs[_0xd0e4('0x38')](_[_0xd0e4('0x3f')](_0x4176f3[_0xd0e4('0x37')],_0x2377cf[_0xd0e4('0x38')]));if(_0x4176f3[_0xd0e4('0x37')][_0xd0e4('0x40')]){_0x17dcc8['where']=_[_0xd0e4('0x41')](_0x17dcc8['where'],{'$or':_['map'](_0x17dcc8[_0xd0e4('0x3a')],function(_0x2e5398){var _0x7abd55={};_0x7abd55[_0x2e5398]={'$like':'%'+_0x4176f3[_0xd0e4('0x37')]['filter']+'%'};return _0x7abd55;})});}_0x17dcc8=_[_0xd0e4('0x41')]({},_0x17dcc8,_0x4176f3[_0xd0e4('0x42')]);return _0x1c63e6[_0xd0e4('0x85')](_0x17dcc8);}})[_0xd0e4('0x26')](function(_0x310855){if(_0x310855){_0x4dbf61=_0x310855['length'];if(!_0x4176f3[_0xd0e4('0x37')][_0xd0e4('0x3d')](_0xd0e4('0x3e'))){_0x17dcc8['limit']=qs[_0xd0e4('0x20')](_0x4176f3[_0xd0e4('0x37')][_0xd0e4('0x20')]);_0x17dcc8[_0xd0e4('0x1e')]=qs[_0xd0e4('0x1e')](_0x4176f3[_0xd0e4('0x37')]['offset']);}return _0x1c63e6[_0xd0e4('0x85')](_0x17dcc8);}})[_0xd0e4('0x26')](function(_0x40b646){if(_0x40b646){return _0x40b646?{'count':_0x4dbf61,'rows':_0x40b646}:null;}})[_0xd0e4('0x26')](respondWithResult(_0xb78ad5,null))['catch'](handleError(_0xb78ad5,null));};exports[_0xd0e4('0x86')]=function(_0x22be0a,_0x23036c,_0x1b4a4f){var _0x1891ce,_0x45d39f;return db['Campaign']['find']({'where':{'id':_0x22be0a[_0xd0e4('0x48')]['id']}})[_0xd0e4('0x26')](handleEntityNotFound(_0x23036c,null))[_0xd0e4('0x26')](function(_0x5e5aba){if(_0x5e5aba){_0x45d39f=_0x5e5aba;return _0x5e5aba[_0xd0e4('0x86')](_0x22be0a[_0xd0e4('0x4b')]['ids'],_[_0xd0e4('0x4f')](_0x22be0a[_0xd0e4('0x4b')],[_0xd0e4('0x65'),'id'])||{});}return null;})['spread'](function(_0x57cad7){var _0x58640f;_0x1891ce=_0x57cad7||[];var _0x445ce2=[];if(_0x57cad7){for(var _0x393375=0x0;_0x393375<_0x57cad7['length'];_0x393375+=0x1){var _0x1e2fad=_0x57cad7[_0x393375][_0xd0e4('0x27')]({'plain':!![]});_0x58640f=squel[_0xd0e4('0x69')]()[_0xd0e4('0x6a')](_0xd0e4('0x87'))['fromQuery'](['phone','ContactId',_0xd0e4('0x6f'),_0xd0e4('0x5c'),_0xd0e4('0x50'),_0xd0e4('0x51')],squel['select']()['field'](_0xd0e4('0x6d'),_0xd0e4('0x6d'))[_0xd0e4('0x71')]('id',_0xd0e4('0x73'))[_0xd0e4('0x71')](_0x1e2fad[_0xd0e4('0x7e')][_0xd0e4('0x74')](),_0xd0e4('0x6f'))[_0xd0e4('0x71')](_0x22be0a[_0xd0e4('0x48')]['id']['toString'](),_0xd0e4('0x5c'))[_0xd0e4('0x71')](_0xd0e4('0x72'),_0xd0e4('0x50'))['field'](_0xd0e4('0x72'),_0xd0e4('0x51'))[_0xd0e4('0x75')](_0xd0e4('0x76'))[_0xd0e4('0x5b')]('deletedAt\x20IS\x20NULL')[_0xd0e4('0x5b')](_0xd0e4('0x77'),_0x1e2fad[_0xd0e4('0x7e')][_0xd0e4('0x74')]())[_0xd0e4('0x5b')]('phone\x20IS\x20NOT\x20NULL'))[_0xd0e4('0x74')]();_0x445ce2[_0xd0e4('0x81')](db['sequelize'][_0xd0e4('0x37')](_0x58640f));}return BPromise[_0xd0e4('0x83')](_0x445ce2);}})[_0xd0e4('0x26')](function(){return _0x1891ce;})[_0xd0e4('0x26')](respondWithResult(_0x23036c,null))[_0xd0e4('0x46')](handleError(_0x23036c,null));};exports[_0xd0e4('0x88')]=function(_0x3a2933,_0x476d87,_0x3d3a74){return db[_0xd0e4('0x32')][_0xd0e4('0x4a')]({'where':{'id':_0x3a2933[_0xd0e4('0x48')]['id']}})[_0xd0e4('0x26')](handleEntityNotFound(_0x476d87,null))[_0xd0e4('0x26')](function(_0x298f68){if(_0x298f68){return _0x298f68['removeBlackLists'](_0x3a2933[_0xd0e4('0x37')]['ids']);}})[_0xd0e4('0x26')](function(_0x4307e3){if(_0x4307e3){return db[_0xd0e4('0x62')]['destroy']({'where':{'ListId':_0x3a2933[_0xd0e4('0x37')]['ids'],'CampaignId':_0x3a2933['params']['id']}})['then'](function(){return _0x4307e3;});}})[_0xd0e4('0x26')](respondWithStatusCode(_0x476d87,null))[_0xd0e4('0x46')](handleError(_0x476d87,null));};
\ No newline at end of file
+var _0xd17f=['phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','COALESCE(phone,\x27\x27)','CampaignId\x20=\x20?','insert','fromQuery','cm_contacts','phone\x20IS\x20NOT\x20NULL','deletedAt\x20IS\x20NULL','push','sequelize','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','save','then','destroy','get','IvrCampaigns','UserProfileResource','stack','name','send','index','map','Campaign','rawAttributes','type','key','model','keys','query','attributes','fields','hasOwnProperty','where','pick','filters','filter','merge','VIRTUAL','count','includeAll','findAll','rows','catch','show','intersection','length','include','options','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','updatedAt','body','omit','createdAt','user','UserProfileSection','update','params','getHoppers','findOne','CmHopper','nolimit','order','sort','CampaignId','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','ids','spread','dialCheckDuplicateType','always','into','cm_hopper','phone','scheduledAt','ContactId','ListId','select','field','toString','NOW()','from','ListId\x20=\x20?','CmListId'];(function(_0x9848e7,_0xf2b1f0){var _0x537a1e=function(_0x270f0){while(--_0x270f0){_0x9848e7['push'](_0x9848e7['shift']());}};_0x537a1e(++_0xf2b1f0);}(_0xd17f,0x1a5));var _0xfd17=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xd17f[_0x1ac595];return _0x455fff;};'use strict';var emlformat=require(_0xfd17('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfd17('0x1'));var jsonpatch=require(_0xfd17('0x2'));var rp=require(_0xfd17('0x3'));var moment=require(_0xfd17('0x4'));var BPromise=require(_0xfd17('0x5'));var Mustache=require(_0xfd17('0x6'));var util=require(_0xfd17('0x7'));var path=require(_0xfd17('0x8'));var sox=require(_0xfd17('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfd17('0xa'));var _=require(_0xfd17('0xb'));var squel=require(_0xfd17('0xc'));var crypto=require(_0xfd17('0xd'));var jsforce=require(_0xfd17('0xe'));var deskjs=require(_0xfd17('0xf'));var toCsv=require('to-csv');var querystring=require(_0xfd17('0x10'));var Papa=require('papaparse');var Redis=require(_0xfd17('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xfd17('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfd17('0x13'));var logger=require(_0xfd17('0x14'))(_0xfd17('0x15'));var utils=require(_0xfd17('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xfd17('0x17'));var db=require(_0xfd17('0x18'))['db'];function respondWithStatusCode(_0x5c7de7,_0x10371d){_0x10371d=_0x10371d||0xcc;return function(_0x38665e){if(_0x38665e){return _0x5c7de7[_0xfd17('0x19')](_0x10371d);}return _0x5c7de7[_0xfd17('0x1a')](_0x10371d)[_0xfd17('0x1b')]();};}function respondWithResult(_0x3fdd86,_0x42a53f){_0x42a53f=_0x42a53f||0xc8;return function(_0xaa0307){if(_0xaa0307){return _0x3fdd86['status'](_0x42a53f)[_0xfd17('0x1c')](_0xaa0307);}};}function respondWithFilteredResult(_0x18f752,_0x396052){return function(_0x19fa45){if(_0x19fa45){var _0xa3d2b6=typeof _0x396052[_0xfd17('0x1d')]===_0xfd17('0x1e')&&typeof _0x396052[_0xfd17('0x1f')]===_0xfd17('0x1e');var _0x39b283=_0x19fa45['count'];var _0x31f395=_0xa3d2b6?0x0:_0x396052[_0xfd17('0x1d')];var _0x497191=_0xa3d2b6?_0x19fa45['count']:_0x396052[_0xfd17('0x1d')]+_0x396052[_0xfd17('0x1f')];var _0x218513;if(_0x497191>=_0x39b283){_0x497191=_0x39b283;_0x218513=0xc8;}else{_0x218513=0xce;}_0x18f752['status'](_0x218513);return _0x18f752['set']('Content-Range',_0x31f395+'-'+_0x497191+'/'+_0x39b283)[_0xfd17('0x1c')](_0x19fa45);}return null;};}function patchUpdates(_0xdb0d0){return function(_0x36fa3d){try{jsonpatch['apply'](_0x36fa3d,_0xdb0d0,!![]);}catch(_0x2cd842){return BPromise['reject'](_0x2cd842);}return _0x36fa3d[_0xfd17('0x20')]();};}function saveUpdates(_0x4a08db,_0x4a4380){return function(_0x543e8a){if(_0x543e8a){return _0x543e8a['update'](_0x4a08db)[_0xfd17('0x21')](function(_0x3b88f7){return _0x3b88f7;});}return null;};}function removeEntity(_0x13d938,_0x38e2e7){return function(_0x583354){if(_0x583354){return _0x583354[_0xfd17('0x22')]()[_0xfd17('0x21')](function(){var _0x113f61=_0x583354[_0xfd17('0x23')]({'plain':!![]});var _0xad268c=_0xfd17('0x24');return db[_0xfd17('0x25')][_0xfd17('0x22')]({'where':{'type':_0xad268c,'resourceId':_0x113f61['id']}})[_0xfd17('0x21')](function(){return _0x583354;});})['then'](function(){_0x13d938[_0xfd17('0x1a')](0xcc)[_0xfd17('0x1b')]();});}};}function handleEntityNotFound(_0x2b48cf,_0x343f0f){return function(_0x5ad4c5){if(!_0x5ad4c5){_0x2b48cf[_0xfd17('0x19')](0x194);}return _0x5ad4c5;};}function handleError(_0x4b199d,_0x4f841b){_0x4f841b=_0x4f841b||0x1f4;return function(_0x41b7e7){logger['error'](_0x41b7e7[_0xfd17('0x26')]);if(_0x41b7e7['name']){delete _0x41b7e7[_0xfd17('0x27')];}_0x4b199d['status'](_0x4f841b)[_0xfd17('0x28')](_0x41b7e7);};}exports[_0xfd17('0x29')]=function(_0x22dff1,_0x56a1d4){var _0x36c339={},_0x393251={},_0x13eabe={'count':0x0,'rows':[]};var _0x174804=_[_0xfd17('0x2a')](db[_0xfd17('0x2b')][_0xfd17('0x2c')],function(_0x2067dc){return{'name':_0x2067dc['fieldName'],'type':_0x2067dc[_0xfd17('0x2d')][_0xfd17('0x2e')]};});_0x393251[_0xfd17('0x2f')]=_[_0xfd17('0x2a')](_0x174804,_0xfd17('0x27'));_0x393251['query']=_[_0xfd17('0x30')](_0x22dff1['query']);_0x393251['filters']=_['intersection'](_0x393251[_0xfd17('0x2f')],_0x393251[_0xfd17('0x31')]);_0x36c339[_0xfd17('0x32')]=_['intersection'](_0x393251['model'],qs[_0xfd17('0x33')](_0x22dff1[_0xfd17('0x31')][_0xfd17('0x33')]));_0x36c339[_0xfd17('0x32')]=_0x36c339['attributes']['length']?_0x36c339['attributes']:_0x393251['model'];if(!_0x22dff1['query'][_0xfd17('0x34')]('nolimit')){_0x36c339['limit']=qs['limit'](_0x22dff1[_0xfd17('0x31')]['limit']);_0x36c339['offset']=qs[_0xfd17('0x1d')](_0x22dff1['query'][_0xfd17('0x1d')]);}_0x36c339['order']=qs['sort'](_0x22dff1[_0xfd17('0x31')]['sort']);_0x36c339[_0xfd17('0x35')]=qs['filters'](_[_0xfd17('0x36')](_0x22dff1[_0xfd17('0x31')],_0x393251[_0xfd17('0x37')]),_0x174804);if(_0x22dff1['query'][_0xfd17('0x38')]){_0x36c339['where']=_[_0xfd17('0x39')](_0x36c339['where'],{'$or':_[_0xfd17('0x2a')](_0x174804,function(_0x26b155){if(_0x26b155[_0xfd17('0x2d')]!==_0xfd17('0x3a')){var _0x7ba6ca={};_0x7ba6ca[_0x26b155[_0xfd17('0x27')]]={'$like':'%'+_0x22dff1['query']['filter']+'%'};return _0x7ba6ca;}})});}_0x36c339=_[_0xfd17('0x39')]({},_0x36c339,_0x22dff1['options']);var _0x33da5c={'where':_0x36c339['where']};return db[_0xfd17('0x2b')][_0xfd17('0x3b')](_0x33da5c)['then'](function(_0x416044){_0x13eabe['count']=_0x416044;if(_0x22dff1['query'][_0xfd17('0x3c')]){_0x36c339['include']=[{'all':!![]}];}return db[_0xfd17('0x2b')][_0xfd17('0x3d')](_0x36c339);})[_0xfd17('0x21')](function(_0xeec59e){_0x13eabe[_0xfd17('0x3e')]=_0xeec59e;return _0x13eabe;})[_0xfd17('0x21')](respondWithFilteredResult(_0x56a1d4,_0x36c339))[_0xfd17('0x3f')](handleError(_0x56a1d4,null));};exports[_0xfd17('0x40')]=function(_0x1facb6,_0xb84dbf){var _0x340dd9={'raw':![],'where':{'id':_0x1facb6['params']['id']}},_0x22a083={};_0x22a083[_0xfd17('0x2f')]=_[_0xfd17('0x30')](db[_0xfd17('0x2b')]['rawAttributes']);_0x22a083['query']=_['keys'](_0x1facb6[_0xfd17('0x31')]);_0x22a083[_0xfd17('0x37')]=_[_0xfd17('0x41')](_0x22a083['model'],_0x22a083[_0xfd17('0x31')]);_0x340dd9['attributes']=_[_0xfd17('0x41')](_0x22a083[_0xfd17('0x2f')],qs[_0xfd17('0x33')](_0x1facb6[_0xfd17('0x31')]['fields']));_0x340dd9[_0xfd17('0x32')]=_0x340dd9['attributes'][_0xfd17('0x42')]?_0x340dd9['attributes']:_0x22a083[_0xfd17('0x2f')];if(_0x1facb6['query'][_0xfd17('0x3c')]){_0x340dd9[_0xfd17('0x43')]=[{'all':!![]}];}_0x340dd9=_['merge']({},_0x340dd9,_0x1facb6[_0xfd17('0x44')]);return db['Campaign'][_0xfd17('0x45')](_0x340dd9)[_0xfd17('0x21')](handleEntityNotFound(_0xb84dbf,null))[_0xfd17('0x21')](respondWithResult(_0xb84dbf,null))[_0xfd17('0x3f')](handleError(_0xb84dbf,null));};exports[_0xfd17('0x46')]=function(_0x57aa2f,_0x5e55a1){return db[_0xfd17('0x2b')]['create'](_0x57aa2f['body'],{})['then'](function(_0x32ac95){var _0x5666b9=_0x57aa2f['user'][_0xfd17('0x23')]({'plain':!![]});if(!_0x5666b9)throw new Error(_0xfd17('0x47'));if(_0x5666b9[_0xfd17('0x48')]==='user'){var _0xda263d=_0x32ac95['get']({'plain':!![]});var _0x39f8ae='IvrCampaigns';return db['UserProfileSection'][_0xfd17('0x45')]({'where':{'name':_0x39f8ae,'userProfileId':_0x5666b9[_0xfd17('0x49')]},'raw':!![]})[_0xfd17('0x21')](function(_0x119317){if(_0x119317&&_0x119317[_0xfd17('0x4a')]===0x0){return db['UserProfileResource'][_0xfd17('0x46')]({'name':_0xda263d['name'],'resourceId':_0xda263d['id'],'type':_0x119317[_0xfd17('0x27')],'sectionId':_0x119317['id']},{})['then'](function(){return _0x32ac95;});}else{return _0x32ac95;}})['catch'](function(_0x3feda3){logger[_0xfd17('0x4b')](_0xfd17('0x4c'),_0x3feda3);throw _0x3feda3;});}return _0x32ac95;})[_0xfd17('0x21')](respondWithResult(_0x5e55a1,0xc9))[_0xfd17('0x3f')](handleError(_0x5e55a1,null));};exports[_0xfd17('0x4d')]=function(_0x1cd6e5,_0xcf4f6e){var _0x807e14={'where':{'id':_0x1cd6e5['params']['id']}},_0x41d07a={};_0x41d07a[_0xfd17('0x2f')]=_[_0xfd17('0x30')](db[_0xfd17('0x2b')][_0xfd17('0x2c')]);_0x807e14[_0xfd17('0x32')]=_[_0xfd17('0x41')](_0x41d07a[_0xfd17('0x2f')],qs['fields'](_0x1cd6e5[_0xfd17('0x31')][_0xfd17('0x33')]));_0x807e14[_0xfd17('0x32')]=_0x807e14[_0xfd17('0x32')][_0xfd17('0x42')]?_0x807e14[_0xfd17('0x32')]:_0x41d07a[_0xfd17('0x2f')];if(_0x1cd6e5[_0xfd17('0x31')]['includeAll']){_0x807e14['include']=[{'all':!![]}];}_0x807e14=_[_0xfd17('0x39')]({},_0x807e14,_0x1cd6e5['options']);return db[_0xfd17('0x2b')][_0xfd17('0x45')](_0x807e14)[_0xfd17('0x21')](handleEntityNotFound(_0xcf4f6e,null))[_0xfd17('0x21')](function(_0x3563a6){if(_0x3563a6){var _0x2766c3=_0x3563a6[_0xfd17('0x23')]({'plain':!![]});_0x2766c3=qs['omit'](_0x2766c3,['id','createdAt',_0xfd17('0x4e')]);_0x1cd6e5[_0xfd17('0x4f')]=_[_0xfd17('0x50')](_0x1cd6e5['body'],['id',_0xfd17('0x51'),'updatedAt']);return db[_0xfd17('0x2b')]['create'](_['merge'](_0x2766c3,_0x1cd6e5[_0xfd17('0x4f')]),{'include':_0x1cd6e5['query'][_0xfd17('0x3c')]?[{'all':!![]}]:undefined})[_0xfd17('0x21')](function(_0x4f4143){var _0x2d4eec=_0x1cd6e5[_0xfd17('0x52')][_0xfd17('0x23')]({'plain':!![]});if(!_0x2d4eec)throw new Error(_0xfd17('0x47'));if(_0x2d4eec[_0xfd17('0x48')]===_0xfd17('0x52')){var _0x1bb31c=_0x4f4143[_0xfd17('0x23')]({'plain':!![]});var _0x2fc62c=_0xfd17('0x24');return db[_0xfd17('0x53')][_0xfd17('0x45')]({'where':{'name':_0x2fc62c,'userProfileId':_0x2d4eec[_0xfd17('0x49')]},'raw':!![]})[_0xfd17('0x21')](function(_0xfa6603){if(_0xfa6603&&_0xfa6603[_0xfd17('0x4a')]===0x0){return db['UserProfileResource'][_0xfd17('0x46')]({'name':_0x1bb31c[_0xfd17('0x27')],'resourceId':_0x1bb31c['id'],'type':_0xfa6603[_0xfd17('0x27')],'sectionId':_0xfa6603['id']},{})['then'](function(){return _0x4f4143;});}else{return _0x4f4143;}})[_0xfd17('0x3f')](function(_0x1d2e25){logger[_0xfd17('0x4b')](_0xfd17('0x4c'),_0x1d2e25);throw _0x1d2e25;});}return _0x4f4143;});}})[_0xfd17('0x21')](respondWithResult(_0xcf4f6e,0xc9))['catch'](handleError(_0xcf4f6e,null));};exports[_0xfd17('0x54')]=function(_0x305c11,_0x17275a){if(_0x305c11[_0xfd17('0x4f')]['id']){delete _0x305c11[_0xfd17('0x4f')]['id'];}return db['Campaign'][_0xfd17('0x45')]({'where':{'id':_0x305c11[_0xfd17('0x55')]['id']}})['then'](handleEntityNotFound(_0x17275a,null))[_0xfd17('0x21')](saveUpdates(_0x305c11['body'],null))[_0xfd17('0x21')](respondWithResult(_0x17275a,null))['catch'](handleError(_0x17275a,null));};exports[_0xfd17('0x22')]=function(_0x41a844,_0x3b0aeb){return db[_0xfd17('0x2b')][_0xfd17('0x45')]({'where':{'id':_0x41a844['params']['id']}})[_0xfd17('0x21')](handleEntityNotFound(_0x3b0aeb,null))[_0xfd17('0x21')](removeEntity(_0x3b0aeb,null))['catch'](handleError(_0x3b0aeb,null));};exports[_0xfd17('0x56')]=function(_0x2c83d1,_0x3259b1,_0x580e11){var _0x48f84b={'raw':!![],'where':{}};var _0xe91427={};var _0x2d287e={'count':0x0,'rows':[]};return db[_0xfd17('0x2b')][_0xfd17('0x57')]({'where':{'id':_0x2c83d1[_0xfd17('0x55')]['id']}})[_0xfd17('0x21')](handleEntityNotFound(_0x3259b1,null))[_0xfd17('0x21')](function(_0x4ac45a){if(_0x4ac45a){_0xe91427['model']=_[_0xfd17('0x30')](db[_0xfd17('0x58')]['rawAttributes']);_0xe91427[_0xfd17('0x31')]=_[_0xfd17('0x30')](_0x2c83d1[_0xfd17('0x31')]);_0xe91427[_0xfd17('0x37')]=_[_0xfd17('0x41')](_0xe91427[_0xfd17('0x2f')],_0xe91427['query']);_0x48f84b[_0xfd17('0x32')]=_[_0xfd17('0x41')](_0xe91427[_0xfd17('0x2f')],qs['fields'](_0x2c83d1['query']['fields']));_0x48f84b['attributes']=_0x48f84b[_0xfd17('0x32')][_0xfd17('0x42')]?_0x48f84b[_0xfd17('0x32')]:_0xe91427[_0xfd17('0x2f')];if(!_0x2c83d1[_0xfd17('0x31')][_0xfd17('0x34')](_0xfd17('0x59'))){_0x48f84b[_0xfd17('0x1f')]=qs['limit'](_0x2c83d1[_0xfd17('0x31')][_0xfd17('0x1f')]);_0x48f84b[_0xfd17('0x1d')]=qs['offset'](_0x2c83d1[_0xfd17('0x31')][_0xfd17('0x1d')]);}_0x48f84b[_0xfd17('0x5a')]=qs[_0xfd17('0x5b')](_0x2c83d1[_0xfd17('0x31')]['sort']);_0x48f84b[_0xfd17('0x35')]=qs[_0xfd17('0x37')](_['pick'](_0x2c83d1['query'],_0xe91427['filters']));_0x48f84b[_0xfd17('0x35')][_0xfd17('0x5c')]=_0x4ac45a['id'];if(_0x2c83d1['query'][_0xfd17('0x38')]){_0x48f84b[_0xfd17('0x35')]=_['merge'](_0x48f84b['where'],{'$or':_['map'](_0x48f84b[_0xfd17('0x32')],function(_0x467a57){var _0x108e58={};_0x108e58[_0x467a57]={'$like':'%'+_0x2c83d1[_0xfd17('0x31')][_0xfd17('0x38')]+'%'};return _0x108e58;})});}_0x48f84b=_['merge']({},_0x48f84b,_0x2c83d1['options']);return db[_0xfd17('0x58')][_0xfd17('0x3b')]({'where':_0x48f84b['where']})[_0xfd17('0x21')](function(_0x32503f){_0x2d287e[_0xfd17('0x3b')]=_0x32503f;if(_0x2c83d1[_0xfd17('0x31')][_0xfd17('0x3c')]){_0x48f84b[_0xfd17('0x43')]=[{'all':!![]}];}return db['CmHopper'][_0xfd17('0x3d')](_0x48f84b);})['then'](function(_0x48be42){_0x2d287e['rows']=_0x48be42;return _0x2d287e;});}})['then'](respondWithFilteredResult(_0x3259b1,_0x48f84b))[_0xfd17('0x3f')](handleError(_0x3259b1,null));};exports[_0xfd17('0x5d')]=function(_0x53c188,_0x4a2634,_0x1a7f92){var _0x430cc4={'raw':!![],'where':{}};var _0x28b054={};var _0x530314={'count':0x0,'rows':[]};return db[_0xfd17('0x2b')][_0xfd17('0x57')]({'where':{'id':_0x53c188[_0xfd17('0x55')]['id']}})[_0xfd17('0x21')](handleEntityNotFound(_0x4a2634,null))[_0xfd17('0x21')](function(_0x5f2179){if(_0x5f2179){_0x28b054['model']=_[_0xfd17('0x30')](db['CmHopperHistory'][_0xfd17('0x2c')]);_0x28b054[_0xfd17('0x31')]=_['keys'](_0x53c188[_0xfd17('0x31')]);_0x28b054[_0xfd17('0x37')]=_[_0xfd17('0x41')](_0x28b054[_0xfd17('0x2f')],_0x28b054[_0xfd17('0x31')]);_0x430cc4[_0xfd17('0x32')]=_[_0xfd17('0x41')](_0x28b054[_0xfd17('0x2f')],qs[_0xfd17('0x33')](_0x53c188[_0xfd17('0x31')][_0xfd17('0x33')]));_0x430cc4[_0xfd17('0x32')]=_0x430cc4['attributes'][_0xfd17('0x42')]?_0x430cc4[_0xfd17('0x32')]:_0x28b054['model'];if(!_0x53c188['query']['hasOwnProperty'](_0xfd17('0x59'))){_0x430cc4[_0xfd17('0x1f')]=qs['limit'](_0x53c188[_0xfd17('0x31')]['limit']);_0x430cc4[_0xfd17('0x1d')]=qs[_0xfd17('0x1d')](_0x53c188[_0xfd17('0x31')][_0xfd17('0x1d')]);}_0x430cc4[_0xfd17('0x5a')]=qs['sort'](_0x53c188[_0xfd17('0x31')]['sort']);_0x430cc4[_0xfd17('0x35')]=qs[_0xfd17('0x37')](_[_0xfd17('0x36')](_0x53c188['query'],_0x28b054[_0xfd17('0x37')]));_0x430cc4[_0xfd17('0x35')]['CampaignId']=_0x5f2179['id'];if(_0x53c188[_0xfd17('0x31')][_0xfd17('0x38')]){_0x430cc4[_0xfd17('0x35')]=_[_0xfd17('0x39')](_0x430cc4[_0xfd17('0x35')],{'$or':_[_0xfd17('0x2a')](_0x430cc4[_0xfd17('0x32')],function(_0x477acd){var _0x1fc804={};_0x1fc804[_0x477acd]={'$like':'%'+_0x53c188[_0xfd17('0x31')]['filter']+'%'};return _0x1fc804;})});}_0x430cc4=_[_0xfd17('0x39')]({},_0x430cc4,_0x53c188['options']);return db[_0xfd17('0x5e')][_0xfd17('0x3b')]({'where':_0x430cc4[_0xfd17('0x35')]})[_0xfd17('0x21')](function(_0x5b17f1){_0x530314['count']=_0x5b17f1;if(_0x53c188['query'][_0xfd17('0x3c')]){_0x430cc4[_0xfd17('0x43')]=[{'all':!![]}];}return db['CmHopperHistory'][_0xfd17('0x3d')](_0x430cc4);})[_0xfd17('0x21')](function(_0x575c95){_0x530314['rows']=_0x575c95;return _0x530314;});}})['then'](respondWithFilteredResult(_0x4a2634,_0x430cc4))[_0xfd17('0x3f')](handleError(_0x4a2634,null));};exports[_0xfd17('0x5f')]=function(_0x1b02b3,_0x5c3be5,_0x2479b9){var _0x24fee6={'raw':!![],'where':{}};var _0x164a10={};var _0x2418ae={'count':0x0,'rows':[]};return db[_0xfd17('0x2b')][_0xfd17('0x57')]({'where':{'id':_0x1b02b3[_0xfd17('0x55')]['id']}})['then'](handleEntityNotFound(_0x5c3be5,null))[_0xfd17('0x21')](function(_0x9b7298){if(_0x9b7298){_0x164a10[_0xfd17('0x2f')]=_[_0xfd17('0x30')](db[_0xfd17('0x60')][_0xfd17('0x2c')]);_0x164a10[_0xfd17('0x31')]=_[_0xfd17('0x30')](_0x1b02b3['query']);_0x164a10['filters']=_[_0xfd17('0x41')](_0x164a10[_0xfd17('0x2f')],_0x164a10[_0xfd17('0x31')]);_0x24fee6[_0xfd17('0x32')]=_[_0xfd17('0x41')](_0x164a10[_0xfd17('0x2f')],qs[_0xfd17('0x33')](_0x1b02b3[_0xfd17('0x31')][_0xfd17('0x33')]));_0x24fee6[_0xfd17('0x32')]=_0x24fee6[_0xfd17('0x32')]['length']?_0x24fee6[_0xfd17('0x32')]:_0x164a10[_0xfd17('0x2f')];if(!_0x1b02b3[_0xfd17('0x31')]['hasOwnProperty'](_0xfd17('0x59'))){_0x24fee6[_0xfd17('0x1f')]=qs[_0xfd17('0x1f')](_0x1b02b3[_0xfd17('0x31')][_0xfd17('0x1f')]);_0x24fee6['offset']=qs[_0xfd17('0x1d')](_0x1b02b3[_0xfd17('0x31')]['offset']);}_0x24fee6['order']=qs[_0xfd17('0x5b')](_0x1b02b3[_0xfd17('0x31')][_0xfd17('0x5b')]);_0x24fee6[_0xfd17('0x35')]=qs[_0xfd17('0x37')](_[_0xfd17('0x36')](_0x1b02b3[_0xfd17('0x31')],_0x164a10[_0xfd17('0x37')]));_0x24fee6[_0xfd17('0x35')][_0xfd17('0x5c')]=_0x9b7298['id'];if(_0x1b02b3['query'][_0xfd17('0x38')]){_0x24fee6[_0xfd17('0x35')]=_[_0xfd17('0x39')](_0x24fee6['where'],{'$or':_[_0xfd17('0x2a')](_0x24fee6['attributes'],function(_0xb7341f){var _0x4643da={};_0x4643da[_0xb7341f]={'$like':'%'+_0x1b02b3['query'][_0xfd17('0x38')]+'%'};return _0x4643da;})});}_0x24fee6=_[_0xfd17('0x39')]({},_0x24fee6,_0x1b02b3[_0xfd17('0x44')]);return db[_0xfd17('0x60')][_0xfd17('0x3b')]({'where':_0x24fee6[_0xfd17('0x35')]})['then'](function(_0x31eefd){_0x2418ae['count']=_0x31eefd;if(_0x1b02b3[_0xfd17('0x31')][_0xfd17('0x3c')]){_0x24fee6[_0xfd17('0x43')]=[{'all':!![]}];}return db[_0xfd17('0x60')][_0xfd17('0x3d')](_0x24fee6);})[_0xfd17('0x21')](function(_0xb91832){_0x2418ae[_0xfd17('0x3e')]=_0xb91832;return _0x2418ae;});}})[_0xfd17('0x21')](respondWithFilteredResult(_0x5c3be5,_0x24fee6))['catch'](handleError(_0x5c3be5,null));};exports[_0xfd17('0x61')]=function(_0x59aa86,_0x1b8901,_0xe8f7b4){var _0x49ff07={'raw':!![],'where':{}};var _0x595f4f={};var _0x19f7ca={'count':0x0,'rows':[]};return db[_0xfd17('0x2b')][_0xfd17('0x57')]({'where':{'id':_0x59aa86[_0xfd17('0x55')]['id']}})[_0xfd17('0x21')](handleEntityNotFound(_0x1b8901,null))['then'](function(_0x3623c9){if(_0x3623c9){_0x595f4f[_0xfd17('0x2f')]=_[_0xfd17('0x30')](db['CmHopperBlack'][_0xfd17('0x2c')]);_0x595f4f[_0xfd17('0x31')]=_[_0xfd17('0x30')](_0x59aa86[_0xfd17('0x31')]);_0x595f4f['filters']=_[_0xfd17('0x41')](_0x595f4f[_0xfd17('0x2f')],_0x595f4f[_0xfd17('0x31')]);_0x49ff07[_0xfd17('0x32')]=_[_0xfd17('0x41')](_0x595f4f[_0xfd17('0x2f')],qs[_0xfd17('0x33')](_0x59aa86[_0xfd17('0x31')]['fields']));_0x49ff07[_0xfd17('0x32')]=_0x49ff07['attributes'][_0xfd17('0x42')]?_0x49ff07[_0xfd17('0x32')]:_0x595f4f[_0xfd17('0x2f')];if(!_0x59aa86[_0xfd17('0x31')][_0xfd17('0x34')]('nolimit')){_0x49ff07[_0xfd17('0x1f')]=qs[_0xfd17('0x1f')](_0x59aa86[_0xfd17('0x31')][_0xfd17('0x1f')]);_0x49ff07[_0xfd17('0x1d')]=qs[_0xfd17('0x1d')](_0x59aa86[_0xfd17('0x31')][_0xfd17('0x1d')]);}_0x49ff07[_0xfd17('0x5a')]=qs[_0xfd17('0x5b')](_0x59aa86['query'][_0xfd17('0x5b')]);_0x49ff07[_0xfd17('0x35')]=qs[_0xfd17('0x37')](_[_0xfd17('0x36')](_0x59aa86['query'],_0x595f4f[_0xfd17('0x37')]));_0x49ff07[_0xfd17('0x35')]['CampaignId']=_0x3623c9['id'];if(_0x59aa86['query'][_0xfd17('0x38')]){_0x49ff07[_0xfd17('0x35')]=_[_0xfd17('0x39')](_0x49ff07[_0xfd17('0x35')],{'$or':_[_0xfd17('0x2a')](_0x49ff07['attributes'],function(_0x550926){var _0x205e99={};_0x205e99[_0x550926]={'$like':'%'+_0x59aa86[_0xfd17('0x31')][_0xfd17('0x38')]+'%'};return _0x205e99;})});}_0x49ff07=_[_0xfd17('0x39')]({},_0x49ff07,_0x59aa86[_0xfd17('0x44')]);return db[_0xfd17('0x62')]['count']({'where':_0x49ff07[_0xfd17('0x35')]})[_0xfd17('0x21')](function(_0x170506){_0x19f7ca[_0xfd17('0x3b')]=_0x170506;if(_0x59aa86['query'][_0xfd17('0x3c')]){_0x49ff07[_0xfd17('0x43')]=[{'all':!![]}];}return db[_0xfd17('0x62')][_0xfd17('0x3d')](_0x49ff07);})[_0xfd17('0x21')](function(_0x30ab03){_0x19f7ca[_0xfd17('0x3e')]=_0x30ab03;return _0x19f7ca;});}})[_0xfd17('0x21')](respondWithFilteredResult(_0x1b8901,_0x49ff07))[_0xfd17('0x3f')](handleError(_0x1b8901,null));};exports[_0xfd17('0x63')]=function(_0x470652,_0x85fe8c,_0x25268a){var _0x1a6914={};var _0x945a55={};var _0x441fb4;var _0x815a7b;return db[_0xfd17('0x2b')][_0xfd17('0x57')]({'where':{'id':_0x470652[_0xfd17('0x55')]['id']}})['then'](handleEntityNotFound(_0x85fe8c,null))[_0xfd17('0x21')](function(_0x556870){if(_0x556870){_0x441fb4=_0x556870;_0x945a55[_0xfd17('0x2f')]=_['keys'](db[_0xfd17('0x64')]['rawAttributes']);_0x945a55[_0xfd17('0x31')]=_[_0xfd17('0x30')](_0x470652[_0xfd17('0x31')]);_0x945a55[_0xfd17('0x37')]=_[_0xfd17('0x41')](_0x945a55['model'],_0x945a55[_0xfd17('0x31')]);_0x1a6914[_0xfd17('0x32')]=_[_0xfd17('0x41')](_0x945a55['model'],qs[_0xfd17('0x33')](_0x470652[_0xfd17('0x31')][_0xfd17('0x33')]));_0x1a6914[_0xfd17('0x32')]=_0x1a6914[_0xfd17('0x32')]['length']?_0x1a6914['attributes']:_0x945a55[_0xfd17('0x2f')];_0x1a6914[_0xfd17('0x5a')]=qs[_0xfd17('0x5b')](_0x470652[_0xfd17('0x31')][_0xfd17('0x5b')]);_0x1a6914[_0xfd17('0x35')]=qs[_0xfd17('0x37')](_[_0xfd17('0x36')](_0x470652[_0xfd17('0x31')],_0x945a55[_0xfd17('0x37')]));if(_0x470652[_0xfd17('0x31')][_0xfd17('0x38')]){_0x1a6914[_0xfd17('0x35')]=_['merge'](_0x1a6914['where'],{'$or':_[_0xfd17('0x2a')](_0x1a6914[_0xfd17('0x32')],function(_0xf011d1){var _0x3773f9={};_0x3773f9[_0xf011d1]={'$like':'%'+_0x470652[_0xfd17('0x31')]['filter']+'%'};return _0x3773f9;})});}_0x1a6914=_[_0xfd17('0x39')]({},_0x1a6914,_0x470652[_0xfd17('0x44')]);return _0x441fb4[_0xfd17('0x63')](_0x1a6914);}})['then'](function(_0xc1ce63){if(_0xc1ce63){_0x815a7b=_0xc1ce63['length'];if(!_0x470652[_0xfd17('0x31')][_0xfd17('0x34')](_0xfd17('0x59'))){_0x1a6914[_0xfd17('0x1f')]=qs['limit'](_0x470652[_0xfd17('0x31')][_0xfd17('0x1f')]);_0x1a6914[_0xfd17('0x1d')]=qs[_0xfd17('0x1d')](_0x470652[_0xfd17('0x31')]['offset']);}return _0x441fb4[_0xfd17('0x63')](_0x1a6914);}})['then'](function(_0x106e37){if(_0x106e37){return _0x106e37?{'count':_0x815a7b,'rows':_0x106e37}:null;}})[_0xfd17('0x21')](respondWithResult(_0x85fe8c,null))[_0xfd17('0x3f')](handleError(_0x85fe8c,null));};exports['addLists']=function(_0x39a05d,_0x1d4aba,_0x1a2e5c){var _0x18b6ff,_0x335fce;return db[_0xfd17('0x2b')][_0xfd17('0x45')]({'where':{'id':_0x39a05d['params']['id']}})[_0xfd17('0x21')](handleEntityNotFound(_0x1d4aba,null))[_0xfd17('0x21')](function(_0x398438){if(_0x398438){_0x335fce=_0x398438;return _0x398438[_0xfd17('0x65')](_0x39a05d[_0xfd17('0x4f')]['ids'],_[_0xfd17('0x50')](_0x39a05d[_0xfd17('0x4f')],[_0xfd17('0x66'),'id'])||{});}return null;})[_0xfd17('0x67')](function(_0xea5820){var _0x5d60e0;_0x18b6ff=_0xea5820||[];var _0x77e17a=[];if(_0xea5820){for(var _0x311edf=0x0;_0x311edf<_0xea5820[_0xfd17('0x42')];_0x311edf+=0x1){var _0x2a93c8=_0xea5820[_0x311edf][_0xfd17('0x23')]({'plain':!![]});_0x335fce[_0xfd17('0x68')]=_0x39a05d[_0xfd17('0x4f')][_0xfd17('0x68')]?_0x39a05d['body'][_0xfd17('0x68')]:_0x335fce['dialCheckDuplicateType'];switch(_0x335fce[_0xfd17('0x68')]){case _0xfd17('0x69'):_0x5d60e0=squel['insert']()[_0xfd17('0x6a')](_0xfd17('0x6b'))['fromQuery']([_0xfd17('0x6c'),_0xfd17('0x6d'),_0xfd17('0x6e'),_0xfd17('0x6f'),_0xfd17('0x5c'),'createdAt',_0xfd17('0x4e')],squel[_0xfd17('0x70')]()[_0xfd17('0x71')](_0xfd17('0x6c'),_0xfd17('0x6c'))[_0xfd17('0x71')]('NOW()','scheduledAt')[_0xfd17('0x71')]('id',_0xfd17('0x6e'))[_0xfd17('0x71')](_0x2a93c8['CmListId']['toString'](),'ListId')['field'](_0x39a05d[_0xfd17('0x55')]['id'][_0xfd17('0x72')](),_0xfd17('0x5c'))[_0xfd17('0x71')]('NOW()',_0xfd17('0x51'))[_0xfd17('0x71')](_0xfd17('0x73'),_0xfd17('0x4e'))[_0xfd17('0x74')]('cm_contacts')[_0xfd17('0x35')]('deletedAt\x20IS\x20NULL')[_0xfd17('0x35')](_0xfd17('0x75'),_0x2a93c8[_0xfd17('0x76')]['toString']())[_0xfd17('0x35')]('phone\x20IS\x20NOT\x20NULL')[_0xfd17('0x35')](_0xfd17('0x77'),squel[_0xfd17('0x70')]()[_0xfd17('0x71')](_0xfd17('0x78'))[_0xfd17('0x74')]('cm_hopper_final')[_0xfd17('0x35')]('CampaignId\x20=\x20?',_0x39a05d[_0xfd17('0x55')]['id'][_0xfd17('0x72')]()))[_0xfd17('0x35')](_0xfd17('0x77'),squel[_0xfd17('0x70')]()[_0xfd17('0x71')](_0xfd17('0x79'))[_0xfd17('0x74')](_0xfd17('0x6b'))['where'](_0xfd17('0x7a'),_0x39a05d[_0xfd17('0x55')]['id'][_0xfd17('0x72')]())))[_0xfd17('0x72')]();break;case'onlyIfOpen':_0x5d60e0=squel[_0xfd17('0x7b')]()[_0xfd17('0x6a')](_0xfd17('0x6b'))[_0xfd17('0x7c')]([_0xfd17('0x6c'),_0xfd17('0x6d'),'ContactId','ListId',_0xfd17('0x5c'),'createdAt','updatedAt'],squel[_0xfd17('0x70')]()[_0xfd17('0x71')](_0xfd17('0x6c'),'phone')[_0xfd17('0x71')](_0xfd17('0x73'),_0xfd17('0x6d'))['field']('id',_0xfd17('0x6e'))[_0xfd17('0x71')](_0x2a93c8[_0xfd17('0x76')][_0xfd17('0x72')](),_0xfd17('0x6f'))[_0xfd17('0x71')](_0x39a05d[_0xfd17('0x55')]['id'][_0xfd17('0x72')](),_0xfd17('0x5c'))[_0xfd17('0x71')]('NOW()',_0xfd17('0x51'))[_0xfd17('0x71')](_0xfd17('0x73'),_0xfd17('0x4e'))[_0xfd17('0x74')](_0xfd17('0x7d'))[_0xfd17('0x35')]('deletedAt\x20IS\x20NULL')[_0xfd17('0x35')](_0xfd17('0x75'),_0x2a93c8[_0xfd17('0x76')][_0xfd17('0x72')]())['where'](_0xfd17('0x7e'))[_0xfd17('0x35')](_0xfd17('0x77'),squel['select']()[_0xfd17('0x71')](_0xfd17('0x79'))[_0xfd17('0x74')](_0xfd17('0x6b'))[_0xfd17('0x35')](_0xfd17('0x7a'),_0x39a05d[_0xfd17('0x55')]['id'][_0xfd17('0x72')]())))[_0xfd17('0x72')]();break;default:_0x5d60e0=squel['insert']()[_0xfd17('0x6a')]('cm_hopper')[_0xfd17('0x7c')]([_0xfd17('0x6c'),_0xfd17('0x6d'),'ContactId','ListId',_0xfd17('0x5c'),_0xfd17('0x51'),_0xfd17('0x4e')],squel[_0xfd17('0x70')]()[_0xfd17('0x71')](_0xfd17('0x6c'),_0xfd17('0x6c'))[_0xfd17('0x71')](_0xfd17('0x73'),_0xfd17('0x6d'))[_0xfd17('0x71')]('id',_0xfd17('0x6e'))['field'](_0x2a93c8[_0xfd17('0x76')][_0xfd17('0x72')](),'ListId')['field'](_0x39a05d[_0xfd17('0x55')]['id'][_0xfd17('0x72')](),_0xfd17('0x5c'))[_0xfd17('0x71')](_0xfd17('0x73'),_0xfd17('0x51'))[_0xfd17('0x71')](_0xfd17('0x73'),_0xfd17('0x4e'))[_0xfd17('0x74')]('cm_contacts')[_0xfd17('0x35')](_0xfd17('0x7f'))[_0xfd17('0x35')](_0xfd17('0x75'),_0x2a93c8[_0xfd17('0x76')][_0xfd17('0x72')]())[_0xfd17('0x35')]('phone\x20IS\x20NOT\x20NULL'))[_0xfd17('0x72')]();}_0x77e17a[_0xfd17('0x80')](db[_0xfd17('0x81')][_0xfd17('0x31')](_0x5d60e0));}return BPromise[_0xfd17('0x82')](_0x77e17a);}})[_0xfd17('0x21')](function(){return _0x18b6ff;})[_0xfd17('0x21')](respondWithResult(_0x1d4aba,null))[_0xfd17('0x3f')](handleError(_0x1d4aba,null));};exports['removeLists']=function(_0x3a9f34,_0x42599d,_0x4e545a){return db[_0xfd17('0x2b')][_0xfd17('0x45')]({'where':{'id':_0x3a9f34['params']['id']}})['then'](handleEntityNotFound(_0x42599d,null))[_0xfd17('0x21')](function(_0xd61388){if(_0xd61388){return _0xd61388[_0xfd17('0x83')](_0x3a9f34[_0xfd17('0x31')][_0xfd17('0x66')]);}})[_0xfd17('0x21')](function(_0x4c462e){if(_0x4c462e){return db[_0xfd17('0x58')][_0xfd17('0x22')]({'where':{'ListId':_0x3a9f34['query'][_0xfd17('0x66')],'CampaignId':_0x3a9f34[_0xfd17('0x55')]['id']}})['then'](function(){return _0x4c462e;});}})['then'](respondWithStatusCode(_0x42599d,null))[_0xfd17('0x3f')](handleError(_0x42599d,null));};exports[_0xfd17('0x84')]=function(_0xde37cb,_0x5b3cd8,_0x4de6f1){var _0x3883f7={};var _0x2351b7={};var _0x5844f9;var _0x26a33a;return db['Campaign'][_0xfd17('0x57')]({'where':{'id':_0xde37cb[_0xfd17('0x55')]['id']}})['then'](handleEntityNotFound(_0x5b3cd8,null))[_0xfd17('0x21')](function(_0x42bad7){if(_0x42bad7){_0x5844f9=_0x42bad7;_0x2351b7[_0xfd17('0x2f')]=_[_0xfd17('0x30')](db[_0xfd17('0x64')][_0xfd17('0x2c')]);_0x2351b7[_0xfd17('0x31')]=_[_0xfd17('0x30')](_0xde37cb[_0xfd17('0x31')]);_0x2351b7[_0xfd17('0x37')]=_[_0xfd17('0x41')](_0x2351b7[_0xfd17('0x2f')],_0x2351b7['query']);_0x3883f7['attributes']=_[_0xfd17('0x41')](_0x2351b7['model'],qs['fields'](_0xde37cb[_0xfd17('0x31')][_0xfd17('0x33')]));_0x3883f7[_0xfd17('0x32')]=_0x3883f7['attributes'][_0xfd17('0x42')]?_0x3883f7[_0xfd17('0x32')]:_0x2351b7[_0xfd17('0x2f')];_0x3883f7[_0xfd17('0x5a')]=qs['sort'](_0xde37cb[_0xfd17('0x31')]['sort']);_0x3883f7['where']=qs['filters'](_[_0xfd17('0x36')](_0xde37cb['query'],_0x2351b7[_0xfd17('0x37')]));if(_0xde37cb['query']['filter']){_0x3883f7['where']=_[_0xfd17('0x39')](_0x3883f7['where'],{'$or':_['map'](_0x3883f7['attributes'],function(_0x1fc5ed){var _0x36a686={};_0x36a686[_0x1fc5ed]={'$like':'%'+_0xde37cb['query']['filter']+'%'};return _0x36a686;})});}_0x3883f7=_[_0xfd17('0x39')]({},_0x3883f7,_0xde37cb[_0xfd17('0x44')]);return _0x5844f9[_0xfd17('0x84')](_0x3883f7);}})['then'](function(_0xff1f){if(_0xff1f){_0x26a33a=_0xff1f['length'];if(!_0xde37cb[_0xfd17('0x31')][_0xfd17('0x34')](_0xfd17('0x59'))){_0x3883f7[_0xfd17('0x1f')]=qs[_0xfd17('0x1f')](_0xde37cb['query'][_0xfd17('0x1f')]);_0x3883f7[_0xfd17('0x1d')]=qs[_0xfd17('0x1d')](_0xde37cb[_0xfd17('0x31')][_0xfd17('0x1d')]);}return _0x5844f9[_0xfd17('0x84')](_0x3883f7);}})[_0xfd17('0x21')](function(_0x2770bc){if(_0x2770bc){return _0x2770bc?{'count':_0x26a33a,'rows':_0x2770bc}:null;}})[_0xfd17('0x21')](respondWithResult(_0x5b3cd8,null))['catch'](handleError(_0x5b3cd8,null));};exports[_0xfd17('0x85')]=function(_0x40a79e,_0x2063df,_0x4dc5f3){var _0x5d0f6e,_0x3c9a91;return db[_0xfd17('0x2b')][_0xfd17('0x45')]({'where':{'id':_0x40a79e['params']['id']}})[_0xfd17('0x21')](handleEntityNotFound(_0x2063df,null))['then'](function(_0x3741df){if(_0x3741df){_0x3c9a91=_0x3741df;return _0x3741df[_0xfd17('0x85')](_0x40a79e[_0xfd17('0x4f')][_0xfd17('0x66')],_[_0xfd17('0x50')](_0x40a79e[_0xfd17('0x4f')],['ids','id'])||{});}return null;})['spread'](function(_0x3c5b30){var _0x1e7d18;_0x5d0f6e=_0x3c5b30||[];var _0x1d70a4=[];if(_0x3c5b30){for(var _0x13fd56=0x0;_0x13fd56<_0x3c5b30['length'];_0x13fd56+=0x1){var _0x2265bb=_0x3c5b30[_0x13fd56][_0xfd17('0x23')]({'plain':!![]});_0x1e7d18=squel[_0xfd17('0x7b')]()['into'](_0xfd17('0x86'))[_0xfd17('0x7c')](['phone',_0xfd17('0x6e'),_0xfd17('0x6f'),_0xfd17('0x5c'),'createdAt',_0xfd17('0x4e')],squel[_0xfd17('0x70')]()[_0xfd17('0x71')]('phone',_0xfd17('0x6c'))[_0xfd17('0x71')]('id',_0xfd17('0x6e'))[_0xfd17('0x71')](_0x2265bb[_0xfd17('0x76')]['toString'](),'ListId')[_0xfd17('0x71')](_0x40a79e['params']['id']['toString'](),_0xfd17('0x5c'))[_0xfd17('0x71')](_0xfd17('0x73'),_0xfd17('0x51'))[_0xfd17('0x71')](_0xfd17('0x73'),_0xfd17('0x4e'))[_0xfd17('0x74')]('cm_contacts')['where'](_0xfd17('0x7f'))[_0xfd17('0x35')](_0xfd17('0x75'),_0x2265bb['CmListId'][_0xfd17('0x72')]())[_0xfd17('0x35')]('phone\x20IS\x20NOT\x20NULL'))[_0xfd17('0x72')]();_0x1d70a4[_0xfd17('0x80')](db[_0xfd17('0x81')][_0xfd17('0x31')](_0x1e7d18));}return BPromise[_0xfd17('0x82')](_0x1d70a4);}})[_0xfd17('0x21')](function(){return _0x5d0f6e;})['then'](respondWithResult(_0x2063df,null))[_0xfd17('0x3f')](handleError(_0x2063df,null));};exports['removeBlackLists']=function(_0x15f3a5,_0x5d891f,_0x14e9f8){return db[_0xfd17('0x2b')][_0xfd17('0x45')]({'where':{'id':_0x15f3a5[_0xfd17('0x55')]['id']}})['then'](handleEntityNotFound(_0x5d891f,null))['then'](function(_0x3dc000){if(_0x3dc000){return _0x3dc000['removeBlackLists'](_0x15f3a5[_0xfd17('0x31')][_0xfd17('0x66')]);}})['then'](function(_0x42fd5b){if(_0x42fd5b){return db['CmHopperBlack'][_0xfd17('0x22')]({'where':{'ListId':_0x15f3a5['query']['ids'],'CampaignId':_0x15f3a5[_0xfd17('0x55')]['id']}})[_0xfd17('0x21')](function(){return _0x42fd5b;});}})['then'](respondWithStatusCode(_0x5d891f,null))[_0xfd17('0x3f')](handleError(_0x5d891f,null));};
\ No newline at end of file
index c36f454..180887a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','define','Campaign','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./campaign.attributes'];(function(_0x2235bf,_0x3a06a7){var _0x4c3a64=function(_0x3b3bb6){while(--_0x3b3bb6){_0x2235bf['push'](_0x2235bf['shift']());}};_0x4c3a64(++_0x3a06a7);}(_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':'campaigns','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9957=['exports','define','Campaign','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./campaign.attributes'];(function(_0xc8a931,_0x260690){var _0x28bd27=function(_0x591b9f){while(--_0x591b9f){_0xc8a931['push'](_0xc8a931['shift']());}};_0x28bd27(++_0x260690);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'campaigns','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8e3bd35..bfc1c68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45ea=['Campaign,\x20%s,\x20%s','result','catch','GetCampaign','Campaign','findAll','options','raw','where','limit','include','map','model','attributes','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','error','code','message','info'];(function(_0x934425,_0x5af72f){var _0x31d596=function(_0x219869){while(--_0x219869){_0x934425['push'](_0x934425['shift']());}};_0x31d596(++_0x5af72f);}(_0x45ea,0x1f0));var _0xa45e=function(_0x4b5c87,_0x536cba){_0x4b5c87=_0x4b5c87-0x0;var _0x44a35e=_0x45ea[_0x4b5c87];return _0x44a35e;};'use strict';var _=require(_0xa45e('0x0'));var util=require(_0xa45e('0x1'));var moment=require(_0xa45e('0x2'));var BPromise=require(_0xa45e('0x3'));var rs=require(_0xa45e('0x4'));var fs=require('fs');var Redis=require(_0xa45e('0x5'));var db=require(_0xa45e('0x6'))['db'];var utils=require(_0xa45e('0x7'));var logger=require(_0xa45e('0x8'))(_0xa45e('0x9'));var config=require(_0xa45e('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xa45e('0xb')][_0xa45e('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x573ff8,_0x53dd85,_0x479cd8){return new BPromise(function(_0x40befe,_0x350f60){return client[_0xa45e('0xd')](_0x573ff8,_0x479cd8)[_0xa45e('0xe')](function(_0x2d73b0){logger['info']('Campaign,\x20%s,\x20%s',_0x53dd85,_0xa45e('0xf'));logger[_0xa45e('0x10')](_0xa45e('0x11'),_0x53dd85,_0xa45e('0xf'),JSON['stringify'](_0x2d73b0));if(_0x2d73b0[_0xa45e('0x12')]){if(_0x2d73b0['error'][_0xa45e('0x13')]===0x1f4){logger[_0xa45e('0x12')]('Campaign,\x20%s,\x20%s',_0x53dd85,_0x2d73b0['error'][_0xa45e('0x14')]);return _0x350f60(_0x2d73b0['error'][_0xa45e('0x14')]);}logger['error']('Campaign,\x20%s,\x20%s',_0x53dd85,_0x2d73b0['error'][_0xa45e('0x14')]);return _0x40befe(_0x2d73b0['error'][_0xa45e('0x14')]);}else{logger[_0xa45e('0x15')](_0xa45e('0x16'),_0x53dd85,_0xa45e('0xf'));_0x40befe(_0x2d73b0[_0xa45e('0x17')]['message']);}})[_0xa45e('0x18')](function(_0x1eeb1d){logger[_0xa45e('0x12')](_0xa45e('0x16'),_0x53dd85,_0x1eeb1d);_0x350f60(_0x1eeb1d);});});}exports[_0xa45e('0x19')]=function(_0x534e87){var _0x34b6c8=this;return new Promise(function(_0x8e85c1,_0xa7a6f4){return db[_0xa45e('0x1a')][_0xa45e('0x1b')]({'raw':_0x534e87[_0xa45e('0x1c')]?_0x534e87[_0xa45e('0x1c')][_0xa45e('0x1d')]===undefined?!![]:![]:!![],'where':_0x534e87['options']?_0x534e87[_0xa45e('0x1c')][_0xa45e('0x1e')]||null:null,'attributes':_0x534e87[_0xa45e('0x1c')]?_0x534e87['options']['attributes']||null:null,'limit':_0x534e87[_0xa45e('0x1c')]?_0x534e87['options'][_0xa45e('0x1f')]||null:null,'include':_0x534e87[_0xa45e('0x1c')]?_0x534e87[_0xa45e('0x1c')][_0xa45e('0x20')]?_[_0xa45e('0x21')](_0x534e87['options'][_0xa45e('0x20')],function(_0x54f14d){return{'model':db[_0x54f14d[_0xa45e('0x22')]],'as':_0x54f14d['as'],'attributes':_0x54f14d[_0xa45e('0x23')],'include':_0x54f14d['include']?_['map'](_0x54f14d[_0xa45e('0x20')],function(_0x5aec7d){return{'model':db[_0x5aec7d[_0xa45e('0x22')]],'as':_0x5aec7d['as'],'attributes':_0x5aec7d[_0xa45e('0x23')],'include':_0x5aec7d[_0xa45e('0x20')]?_['map'](_0x5aec7d['include'],function(_0x2c7c9e){return{'model':db[_0x2c7c9e[_0xa45e('0x22')]],'as':_0x2c7c9e['as'],'attributes':_0x2c7c9e[_0xa45e('0x23')]};}):[]};}):[]};}):[]:[]})[_0xa45e('0xe')](function(_0x78a762){logger['info'](_0xa45e('0x19'),_0x534e87);logger[_0xa45e('0x10')]('GetCampaign',_0x534e87,JSON[_0xa45e('0x24')](_0x78a762));_0x8e85c1(_0x78a762);})['catch'](function(_0x552cb5){logger[_0xa45e('0x12')](_0xa45e('0x19'),_0x552cb5['message'],_0x534e87);_0xa7a6f4(_0x34b6c8['error'](0x1f4,_0x552cb5[_0xa45e('0x14')]));});});};
\ No newline at end of file
+var _0x4b1f=['GetCampaign','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','http','then','info','debug','Campaign,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','Campaign,\x20%s,\x20%s','message','Campaign','findAll','options','raw','where','attributes','include','map','model'];(function(_0x10bb41,_0x10c4a5){var _0x25b1a3=function(_0xe48219){while(--_0xe48219){_0x10bb41['push'](_0x10bb41['shift']());}};_0x25b1a3(++_0x10c4a5);}(_0x4b1f,0x195));var _0xf4b1=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x4b1f[_0x4a9fb1];return _0x348672;};'use strict';var _=require(_0xf4b1('0x0'));var util=require(_0xf4b1('0x1'));var moment=require('moment');var BPromise=require(_0xf4b1('0x2'));var rs=require(_0xf4b1('0x3'));var fs=require('fs');var Redis=require(_0xf4b1('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xf4b1('0x5'));var logger=require(_0xf4b1('0x6'))(_0xf4b1('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xf4b1('0x8')][_0xf4b1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x310db5,_0x3b9c78,_0x1abfc7){return new BPromise(function(_0x50738c,_0x59cf77){return client['request'](_0x310db5,_0x1abfc7)[_0xf4b1('0xa')](function(_0x53a786){logger[_0xf4b1('0xb')]('Campaign,\x20%s,\x20%s',_0x3b9c78,'request\x20sent');logger[_0xf4b1('0xc')](_0xf4b1('0xd'),_0x3b9c78,_0xf4b1('0xe'),JSON[_0xf4b1('0xf')](_0x53a786));if(_0x53a786[_0xf4b1('0x10')]){if(_0x53a786[_0xf4b1('0x10')][_0xf4b1('0x11')]===0x1f4){logger[_0xf4b1('0x10')](_0xf4b1('0x12'),_0x3b9c78,_0x53a786[_0xf4b1('0x10')][_0xf4b1('0x13')]);return _0x59cf77(_0x53a786[_0xf4b1('0x10')][_0xf4b1('0x13')]);}logger['error']('Campaign,\x20%s,\x20%s',_0x3b9c78,_0x53a786[_0xf4b1('0x10')]['message']);return _0x50738c(_0x53a786['error'][_0xf4b1('0x13')]);}else{logger['info']('Campaign,\x20%s,\x20%s',_0x3b9c78,_0xf4b1('0xe'));_0x50738c(_0x53a786['result']['message']);}})['catch'](function(_0x5cb2a1){logger[_0xf4b1('0x10')](_0xf4b1('0x12'),_0x3b9c78,_0x5cb2a1);_0x59cf77(_0x5cb2a1);});});}exports['GetCampaign']=function(_0x3b378e){var _0x420f9e=this;return new Promise(function(_0x322b38,_0x465da2){return db[_0xf4b1('0x14')][_0xf4b1('0x15')]({'raw':_0x3b378e['options']?_0x3b378e[_0xf4b1('0x16')][_0xf4b1('0x17')]===undefined?!![]:![]:!![],'where':_0x3b378e['options']?_0x3b378e[_0xf4b1('0x16')][_0xf4b1('0x18')]||null:null,'attributes':_0x3b378e['options']?_0x3b378e[_0xf4b1('0x16')][_0xf4b1('0x19')]||null:null,'limit':_0x3b378e[_0xf4b1('0x16')]?_0x3b378e[_0xf4b1('0x16')]['limit']||null:null,'include':_0x3b378e[_0xf4b1('0x16')]?_0x3b378e[_0xf4b1('0x16')][_0xf4b1('0x1a')]?_[_0xf4b1('0x1b')](_0x3b378e['options'][_0xf4b1('0x1a')],function(_0x474212){return{'model':db[_0x474212['model']],'as':_0x474212['as'],'attributes':_0x474212[_0xf4b1('0x19')],'include':_0x474212['include']?_[_0xf4b1('0x1b')](_0x474212['include'],function(_0x238fbe){return{'model':db[_0x238fbe[_0xf4b1('0x1c')]],'as':_0x238fbe['as'],'attributes':_0x238fbe[_0xf4b1('0x19')],'include':_0x238fbe['include']?_[_0xf4b1('0x1b')](_0x238fbe['include'],function(_0x2e3b90){return{'model':db[_0x2e3b90['model']],'as':_0x2e3b90['as'],'attributes':_0x2e3b90[_0xf4b1('0x19')]};}):[]};}):[]};}):[]:[]})[_0xf4b1('0xa')](function(_0x5d28af){logger[_0xf4b1('0xb')](_0xf4b1('0x1d'),_0x3b378e);logger['debug'](_0xf4b1('0x1d'),_0x3b378e,JSON[_0xf4b1('0xf')](_0x5d28af));_0x322b38(_0x5d28af);})[_0xf4b1('0x1e')](function(_0x11ffb3){logger[_0xf4b1('0x10')](_0xf4b1('0x1d'),_0x11ffb3[_0xf4b1('0x13')],_0x3b378e);_0x465da2(_0x420f9e['error'](0x1f4,_0x11ffb3['message']));});});};
\ No newline at end of file
index 257836c..b8f2ab5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38e2=['get','isAuthenticated','index','/:id','show','/:id/hoppers','getHoppers','getHopperHistories','getHopperFinals','/:id/hopper_black','getLists','/:id/blacklists','post','/:id/clone','/:id/lists','addLists','addBlackLists','update','delete','destroy','removeLists','removeBlackLists','exports','util','path','Router','fs-extra','../../config/environment','./campaign.controller'];(function(_0xc14a52,_0x5b84b9){var _0x2e5227=function(_0x580348){while(--_0x580348){_0xc14a52['push'](_0xc14a52['shift']());}};_0x2e5227(++_0x5b84b9);}(_0x38e2,0xff));var _0x238e=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x38e2[_0x4a9fb1];return _0x348672;};'use strict';var multer=require('multer');var util=require(_0x238e('0x0'));var path=require(_0x238e('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x238e('0x2')]();var fs_extra=require(_0x238e('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x238e('0x4'));var controller=require(_0x238e('0x5'));router[_0x238e('0x6')]('/',auth[_0x238e('0x7')](),controller[_0x238e('0x8')]);router['get'](_0x238e('0x9'),auth[_0x238e('0x7')](),controller[_0x238e('0xa')]);router['get'](_0x238e('0xb'),auth['isAuthenticated'](),controller[_0x238e('0xc')]);router['get']('/:id/hopper_histories',auth[_0x238e('0x7')](),controller[_0x238e('0xd')]);router[_0x238e('0x6')]('/:id/hopper_finals',auth[_0x238e('0x7')](),controller[_0x238e('0xe')]);router[_0x238e('0x6')](_0x238e('0xf'),auth[_0x238e('0x7')](),controller['getHopperBlacks']);router[_0x238e('0x6')]('/:id/lists',auth[_0x238e('0x7')](),controller[_0x238e('0x10')]);router[_0x238e('0x6')](_0x238e('0x11'),auth[_0x238e('0x7')](),controller['getBlackLists']);router[_0x238e('0x12')]('/',auth[_0x238e('0x7')](),controller['create']);router['post'](_0x238e('0x13'),auth[_0x238e('0x7')](),controller['clone']);router[_0x238e('0x12')](_0x238e('0x14'),auth[_0x238e('0x7')](),controller[_0x238e('0x15')]);router[_0x238e('0x12')](_0x238e('0x11'),auth[_0x238e('0x7')](),controller[_0x238e('0x16')]);router['put'](_0x238e('0x9'),auth[_0x238e('0x7')](),controller[_0x238e('0x17')]);router[_0x238e('0x18')](_0x238e('0x9'),auth[_0x238e('0x7')](),controller[_0x238e('0x19')]);router[_0x238e('0x18')]('/:id/lists',auth['isAuthenticated'](),controller[_0x238e('0x1a')]);router[_0x238e('0x18')](_0x238e('0x11'),auth['isAuthenticated'](),controller[_0x238e('0x1b')]);module[_0x238e('0x1c')]=router;
\ No newline at end of file
+var _0xbb1c=['getHopperBlacks','/:id/lists','getLists','getBlackLists','post','create','/:id/clone','clone','addLists','addBlackLists','update','delete','destroy','removeLists','/:id/blacklists','removeBlackLists','multer','util','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black'];(function(_0x226b60,_0x4fac70){var _0x3d566e=function(_0x123cb9){while(--_0x123cb9){_0x226b60['push'](_0x226b60['shift']());}};_0x3d566e(++_0x4fac70);}(_0xbb1c,0x16e));var _0xcbb1=function(_0x17f5fc,_0xac1ffe){_0x17f5fc=_0x17f5fc-0x0;var _0x45b8fe=_0xbb1c[_0x17f5fc];return _0x45b8fe;};'use strict';var multer=require(_0xcbb1('0x0'));var util=require(_0xcbb1('0x1'));var path=require(_0xcbb1('0x2'));var timeout=require('connect-timeout');var express=require(_0xcbb1('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xcbb1('0x4'));var interaction=require(_0xcbb1('0x5'));var config=require(_0xcbb1('0x6'));var controller=require('./campaign.controller');router[_0xcbb1('0x7')]('/',auth[_0xcbb1('0x8')](),controller[_0xcbb1('0x9')]);router['get'](_0xcbb1('0xa'),auth['isAuthenticated'](),controller[_0xcbb1('0xb')]);router[_0xcbb1('0x7')](_0xcbb1('0xc'),auth[_0xcbb1('0x8')](),controller[_0xcbb1('0xd')]);router[_0xcbb1('0x7')](_0xcbb1('0xe'),auth[_0xcbb1('0x8')](),controller[_0xcbb1('0xf')]);router[_0xcbb1('0x7')](_0xcbb1('0x10'),auth[_0xcbb1('0x8')](),controller[_0xcbb1('0x11')]);router[_0xcbb1('0x7')](_0xcbb1('0x12'),auth[_0xcbb1('0x8')](),controller[_0xcbb1('0x13')]);router[_0xcbb1('0x7')](_0xcbb1('0x14'),auth[_0xcbb1('0x8')](),controller[_0xcbb1('0x15')]);router[_0xcbb1('0x7')]('/:id/blacklists',auth['isAuthenticated'](),controller[_0xcbb1('0x16')]);router[_0xcbb1('0x17')]('/',auth[_0xcbb1('0x8')](),controller[_0xcbb1('0x18')]);router[_0xcbb1('0x17')](_0xcbb1('0x19'),auth['isAuthenticated'](),controller[_0xcbb1('0x1a')]);router['post'](_0xcbb1('0x14'),auth[_0xcbb1('0x8')](),controller[_0xcbb1('0x1b')]);router[_0xcbb1('0x17')]('/:id/blacklists',auth[_0xcbb1('0x8')](),controller[_0xcbb1('0x1c')]);router['put'](_0xcbb1('0xa'),auth[_0xcbb1('0x8')](),controller[_0xcbb1('0x1d')]);router[_0xcbb1('0x1e')](_0xcbb1('0xa'),auth[_0xcbb1('0x8')](),controller[_0xcbb1('0x1f')]);router['delete'](_0xcbb1('0x14'),auth[_0xcbb1('0x8')](),controller[_0xcbb1('0x20')]);router[_0xcbb1('0x1e')](_0xcbb1('0x21'),auth[_0xcbb1('0x8')](),controller[_0xcbb1('0x22')]);module['exports']=router;
\ No newline at end of file
index 7fa8627..e4219a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5571=['getDataValue','key','sequelize','STRING','VIRTUAL'];(function(_0x2dfd2b,_0x522d82){var _0x3fda3a=function(_0x3d28ef){while(--_0x3d28ef){_0x2dfd2b['push'](_0x2dfd2b['shift']());}};_0x3fda3a(++_0x522d82);}(_0x5571,0x156));var _0x1557=function(_0x166742,_0x55520c){_0x166742=_0x166742-0x0;var _0xb7814a=_0x5571[_0x166742];return _0xb7814a;};'use strict';var Sequelize=require(_0x1557('0x0'));module['exports']={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'allowNull':![]},'description':{'type':Sequelize[_0x1557('0x1')]},'name':{'type':Sequelize[_0x1557('0x2')],'get':function(){return this[_0x1557('0x3')](_0x1557('0x4'));}}};
\ No newline at end of file
+var _0xcf2a=['key','exports','STRING','TEXT','VIRTUAL','getDataValue'];(function(_0x576b19,_0x49d2fe){var _0x2a63c0=function(_0x1087cd){while(--_0x1087cd){_0x576b19['push'](_0x576b19['shift']());}};_0x2a63c0(++_0x49d2fe);}(_0xcf2a,0xbb));var _0xacf2=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0xcf2a[_0x45d55e];return _0x29812a;};'use strict';var Sequelize=require('sequelize');module[_0xacf2('0x0')]={'key':{'type':Sequelize[_0xacf2('0x1')],'allowNull':![]},'value':{'type':Sequelize[_0xacf2('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize[_0xacf2('0x3')],'get':function(){return this[_0xacf2('0x4')](_0xacf2('0x5'));}}};
\ No newline at end of file
index 9e9160c..94aab3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c9c=['fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','filter','merge','options','CannedAnswer','includeAll','catch','params','include','find','body','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','The\x20inserted\x20key\x20already\x20exists.','get','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','update','then','destroy','CannedAnswers','UserProfileResource','error','stack','name','send','map','rawAttributes'];(function(_0x118573,_0x2512d4){var _0x35d116=function(_0x48423a){while(--_0x48423a){_0x118573['push'](_0x118573['shift']());}};_0x35d116(++_0x2512d4);}(_0x1c9c,0x121));var _0xc1c9=function(_0x127187,_0x4f7f5c){_0x127187=_0x127187-0x0;var _0xcb9e8e=_0x1c9c[_0x127187];return _0xcb9e8e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc1c9('0x0'));var zipdir=require(_0xc1c9('0x1'));var jsonpatch=require(_0xc1c9('0x2'));var rp=require(_0xc1c9('0x3'));var moment=require('moment');var BPromise=require(_0xc1c9('0x4'));var Mustache=require(_0xc1c9('0x5'));var util=require(_0xc1c9('0x6'));var path=require(_0xc1c9('0x7'));var sox=require(_0xc1c9('0x8'));var csv=require(_0xc1c9('0x9'));var ejs=require(_0xc1c9('0xa'));var fs=require('fs');var fs_extra=require(_0xc1c9('0xb'));var _=require(_0xc1c9('0xc'));var squel=require(_0xc1c9('0xd'));var crypto=require('crypto');var jsforce=require(_0xc1c9('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xc1c9('0x9'));var querystring=require('querystring');var Papa=require(_0xc1c9('0xf'));var Redis=require(_0xc1c9('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xc1c9('0x11'));var hardwareService=require(_0xc1c9('0x12'));var logger=require(_0xc1c9('0x13'))(_0xc1c9('0x14'));var utils=require(_0xc1c9('0x15'));var config=require(_0xc1c9('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xc1c9('0x17'))['db'];function respondWithStatusCode(_0x38ac0c,_0x312967){_0x312967=_0x312967||0xcc;return function(_0x2a542c){if(_0x2a542c){return _0x38ac0c[_0xc1c9('0x18')](_0x312967);}return _0x38ac0c['status'](_0x312967)[_0xc1c9('0x19')]();};}function respondWithResult(_0xe8f057,_0x528723){_0x528723=_0x528723||0xc8;return function(_0x4f395f){if(_0x4f395f){return _0xe8f057[_0xc1c9('0x1a')](_0x528723)['json'](_0x4f395f);}};}function respondWithFilteredResult(_0x377391,_0x389144){return function(_0x3a2658){if(_0x3a2658){var _0x34177f=typeof _0x389144['offset']===_0xc1c9('0x1b')&&typeof _0x389144[_0xc1c9('0x1c')]===_0xc1c9('0x1b');var _0x34247b=_0x3a2658[_0xc1c9('0x1d')];var _0x4cc5b1=_0x34177f?0x0:_0x389144[_0xc1c9('0x1e')];var _0x2195d0=_0x34177f?_0x3a2658[_0xc1c9('0x1d')]:_0x389144[_0xc1c9('0x1e')]+_0x389144[_0xc1c9('0x1c')];var _0x317b8f;if(_0x2195d0>=_0x34247b){_0x2195d0=_0x34247b;_0x317b8f=0xc8;}else{_0x317b8f=0xce;}_0x377391[_0xc1c9('0x1a')](_0x317b8f);return _0x377391[_0xc1c9('0x1f')](_0xc1c9('0x20'),_0x4cc5b1+'-'+_0x2195d0+'/'+_0x34247b)[_0xc1c9('0x21')](_0x3a2658);}return null;};}function patchUpdates(_0x16662e){return function(_0x1dfe0e){try{jsonpatch[_0xc1c9('0x22')](_0x1dfe0e,_0x16662e,!![]);}catch(_0x5c94de){return BPromise[_0xc1c9('0x23')](_0x5c94de);}return _0x1dfe0e['save']();};}function saveUpdates(_0x3bb2e6,_0x3aebef){return function(_0x258796){if(_0x258796){return _0x258796[_0xc1c9('0x24')](_0x3bb2e6)[_0xc1c9('0x25')](function(_0xc1e90b){return _0xc1e90b;});}return null;};}function removeEntity(_0x59b02a,_0x19e5ef){return function(_0x3679a0){if(_0x3679a0){return _0x3679a0[_0xc1c9('0x26')]()[_0xc1c9('0x25')](function(){var _0x19f9b4=_0x3679a0['get']({'plain':!![]});var _0xf2d291=_0xc1c9('0x27');return db[_0xc1c9('0x28')]['destroy']({'where':{'type':_0xf2d291,'resourceId':_0x19f9b4['id']}})['then'](function(){return _0x3679a0;});})[_0xc1c9('0x25')](function(){_0x59b02a[_0xc1c9('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3be0cf,_0x3723cc){return function(_0x3151fc){if(!_0x3151fc){_0x3be0cf[_0xc1c9('0x18')](0x194);}return _0x3151fc;};}function handleError(_0x4039b0,_0x502609){_0x502609=_0x502609||0x1f4;return function(_0xa92d31){logger[_0xc1c9('0x29')](_0xa92d31[_0xc1c9('0x2a')]);if(_0xa92d31[_0xc1c9('0x2b')]){delete _0xa92d31[_0xc1c9('0x2b')];}_0x4039b0['status'](_0x502609)[_0xc1c9('0x2c')](_0xa92d31);};}exports['index']=function(_0x22f813,_0x2a0554){var _0x214f3a={},_0x4e6fd4={},_0x2b753b={'count':0x0,'rows':[]};var _0x17a205=_[_0xc1c9('0x2d')](db['CannedAnswer'][_0xc1c9('0x2e')],function(_0xbf078c){return{'name':_0xbf078c[_0xc1c9('0x2f')],'type':_0xbf078c[_0xc1c9('0x30')][_0xc1c9('0x31')]};});_0x4e6fd4[_0xc1c9('0x32')]=_[_0xc1c9('0x2d')](_0x17a205,'name');_0x4e6fd4[_0xc1c9('0x33')]=_[_0xc1c9('0x34')](_0x22f813[_0xc1c9('0x33')]);_0x4e6fd4[_0xc1c9('0x35')]=_[_0xc1c9('0x36')](_0x4e6fd4[_0xc1c9('0x32')],_0x4e6fd4[_0xc1c9('0x33')]);_0x214f3a[_0xc1c9('0x37')]=_[_0xc1c9('0x36')](_0x4e6fd4['model'],qs['fields'](_0x22f813[_0xc1c9('0x33')][_0xc1c9('0x38')]));_0x214f3a[_0xc1c9('0x37')]=_0x214f3a[_0xc1c9('0x37')][_0xc1c9('0x39')]?_0x214f3a[_0xc1c9('0x37')]:_0x4e6fd4[_0xc1c9('0x32')];if(!_0x22f813['query']['hasOwnProperty']('nolimit')){_0x214f3a[_0xc1c9('0x1c')]=qs['limit'](_0x22f813['query'][_0xc1c9('0x1c')]);_0x214f3a[_0xc1c9('0x1e')]=qs[_0xc1c9('0x1e')](_0x22f813[_0xc1c9('0x33')][_0xc1c9('0x1e')]);}_0x214f3a[_0xc1c9('0x3a')]=qs[_0xc1c9('0x3b')](_0x22f813['query']['sort']);_0x214f3a[_0xc1c9('0x3c')]=qs[_0xc1c9('0x35')](_['pick'](_0x22f813[_0xc1c9('0x33')],_0x4e6fd4[_0xc1c9('0x35')]),_0x17a205);if(_0x22f813[_0xc1c9('0x33')][_0xc1c9('0x3d')]){_0x214f3a['where']=_[_0xc1c9('0x3e')](_0x214f3a['where'],{'$or':[{'key':{'$like':'%'+_0x22f813[_0xc1c9('0x33')]['filter']+'%'}},{'value':{'$like':'%'+_0x22f813[_0xc1c9('0x33')][_0xc1c9('0x3d')]+'%'}}]});}_0x214f3a=_['merge']({},_0x214f3a,_0x22f813[_0xc1c9('0x3f')]);var _0x388df9={'where':_0x214f3a[_0xc1c9('0x3c')]};return db[_0xc1c9('0x40')][_0xc1c9('0x1d')](_0x388df9)['then'](function(_0x3e0ad8){_0x2b753b[_0xc1c9('0x1d')]=_0x3e0ad8;if(_0x22f813['query'][_0xc1c9('0x41')]){_0x214f3a['include']=[{'all':!![]}];}return db[_0xc1c9('0x40')]['findAll'](_0x214f3a);})['then'](function(_0x3395c8){_0x2b753b['rows']=_0x3395c8;return _0x2b753b;})[_0xc1c9('0x25')](respondWithFilteredResult(_0x2a0554,_0x214f3a))[_0xc1c9('0x42')](handleError(_0x2a0554,null));};exports['show']=function(_0x37a84d,_0x548354){var _0x1f82b7={'raw':!![],'where':{'id':_0x37a84d[_0xc1c9('0x43')]['id']}},_0x489203={};_0x489203[_0xc1c9('0x32')]=_[_0xc1c9('0x34')](db[_0xc1c9('0x40')][_0xc1c9('0x2e')]);_0x489203[_0xc1c9('0x33')]=_[_0xc1c9('0x34')](_0x37a84d[_0xc1c9('0x33')]);_0x489203[_0xc1c9('0x35')]=_[_0xc1c9('0x36')](_0x489203[_0xc1c9('0x32')],_0x489203[_0xc1c9('0x33')]);_0x1f82b7[_0xc1c9('0x37')]=_['intersection'](_0x489203[_0xc1c9('0x32')],qs[_0xc1c9('0x38')](_0x37a84d[_0xc1c9('0x33')]['fields']));_0x1f82b7[_0xc1c9('0x37')]=_0x1f82b7[_0xc1c9('0x37')][_0xc1c9('0x39')]?_0x1f82b7[_0xc1c9('0x37')]:_0x489203[_0xc1c9('0x32')];if(_0x37a84d[_0xc1c9('0x33')][_0xc1c9('0x41')]){_0x1f82b7[_0xc1c9('0x44')]=[{'all':!![]}];}_0x1f82b7=_['merge']({},_0x1f82b7,_0x37a84d[_0xc1c9('0x3f')]);return db[_0xc1c9('0x40')][_0xc1c9('0x45')](_0x1f82b7)[_0xc1c9('0x25')](handleEntityNotFound(_0x548354,null))[_0xc1c9('0x25')](respondWithResult(_0x548354,null))[_0xc1c9('0x42')](handleError(_0x548354,null));};exports[_0xc1c9('0x24')]=function(_0xdf9b7e,_0x5c39ff){if(_0xdf9b7e['body']['id']){delete _0xdf9b7e[_0xc1c9('0x46')]['id'];}return db[_0xc1c9('0x40')][_0xc1c9('0x45')]({'where':{'id':_0xdf9b7e[_0xc1c9('0x43')]['id']}})[_0xc1c9('0x25')](handleEntityNotFound(_0x5c39ff,null))['then'](saveUpdates(_0xdf9b7e['body'],null))[_0xc1c9('0x25')](respondWithResult(_0x5c39ff,null))[_0xc1c9('0x42')](handleError(_0x5c39ff,null));};exports[_0xc1c9('0x26')]=function(_0x107839,_0x22db33){return db['CannedAnswer'][_0xc1c9('0x45')]({'where':{'id':_0x107839[_0xc1c9('0x43')]['id']}})[_0xc1c9('0x25')](handleEntityNotFound(_0x22db33,null))['then'](removeEntity(_0x22db33,null))[_0xc1c9('0x42')](handleError(_0x22db33,null));};exports[_0xc1c9('0x47')]=function(_0x558f09,_0x4143bd){var _0x577d05={'key':_0x558f09[_0xc1c9('0x46')][_0xc1c9('0x31')]};if(_0x558f09[_0xc1c9('0x46')][_0xc1c9('0x48')]){_0x577d05[_0xc1c9('0x48')]=_0x558f09[_0xc1c9('0x46')][_0xc1c9('0x48')];}else if(_0x558f09[_0xc1c9('0x46')][_0xc1c9('0x49')]){_0x577d05[_0xc1c9('0x49')]=_0x558f09[_0xc1c9('0x46')]['SmsAccountId'];}else if(_0x558f09[_0xc1c9('0x46')][_0xc1c9('0x4a')]){_0x577d05['OpenchannelAccountId']=_0x558f09[_0xc1c9('0x46')][_0xc1c9('0x4a')];}else if(_0x558f09[_0xc1c9('0x46')][_0xc1c9('0x4b')]){_0x577d05[_0xc1c9('0x4b')]=_0x558f09[_0xc1c9('0x46')][_0xc1c9('0x4b')];}return db[_0xc1c9('0x40')][_0xc1c9('0x45')]({'where':_0x577d05})[_0xc1c9('0x25')](function(_0x3228f2){if(_0x3228f2){throw new db[(_0xc1c9('0x4c'))]['ValidationError'](_0xc1c9('0x4d'));}return db[_0xc1c9('0x40')][_0xc1c9('0x47')](_0x558f09['body']);})['then'](function(_0x1d41c2){var _0x59831b=_0x558f09['user'][_0xc1c9('0x4e')]({'plain':!![]});if(!_0x59831b)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x59831b[_0xc1c9('0x4f')]==='user'){var _0xed0ed=_0x1d41c2['get']({'plain':!![]});return db[_0xc1c9('0x50')][_0xc1c9('0x45')]({'where':{'name':_0xc1c9('0x27'),'userProfileId':_0x59831b[_0xc1c9('0x51')]},'raw':!![]})[_0xc1c9('0x25')](function(_0x2fb8a3){if(_0x2fb8a3&&_0x2fb8a3[_0xc1c9('0x52')]===0x0){return db['UserProfileResource']['create']({'name':_0xed0ed[_0xc1c9('0x2b')],'resourceId':_0xed0ed['id'],'type':_0x2fb8a3[_0xc1c9('0x2b')],'sectionId':_0x2fb8a3['id']},{})[_0xc1c9('0x25')](function(){return _0x1d41c2;});}else{return _0x1d41c2;}})[_0xc1c9('0x42')](function(_0x254fd1){logger[_0xc1c9('0x29')](_0xc1c9('0x53'),_0x254fd1);throw _0x254fd1;});}return _0x1d41c2;})[_0xc1c9('0x25')](respondWithResult(_0x4143bd,0xc9))[_0xc1c9('0x42')](handleError(_0x4143bd,null));};
\ No newline at end of file
+var _0x5a58=['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','offset','undefined','limit','count','set','Content-Range','json','apply','update','then','destroy','CannedAnswers','end','sendStatus','error','name','send','index','map','CannedAnswer','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','include','rows','show','params','includeAll','find','catch','body','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','get','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv'];(function(_0x27aa84,_0x5e54b7){var _0x2e0ac3=function(_0x331ea4){while(--_0x331ea4){_0x27aa84['push'](_0x27aa84['shift']());}};_0x2e0ac3(++_0x5e54b7);}(_0x5a58,0xab));var _0x85a5=function(_0x468b0f,_0x408566){_0x468b0f=_0x468b0f-0x0;var _0x3e74d9=_0x5a58[_0x468b0f];return _0x3e74d9;};'use strict';var emlformat=require(_0x85a5('0x0'));var rimraf=require(_0x85a5('0x1'));var zipdir=require(_0x85a5('0x2'));var jsonpatch=require(_0x85a5('0x3'));var rp=require(_0x85a5('0x4'));var moment=require('moment');var BPromise=require(_0x85a5('0x5'));var Mustache=require(_0x85a5('0x6'));var util=require(_0x85a5('0x7'));var path=require(_0x85a5('0x8'));var sox=require(_0x85a5('0x9'));var csv=require('to-csv');var ejs=require(_0x85a5('0xa'));var fs=require('fs');var fs_extra=require(_0x85a5('0xb'));var _=require(_0x85a5('0xc'));var squel=require(_0x85a5('0xd'));var crypto=require('crypto');var jsforce=require(_0x85a5('0xe'));var deskjs=require(_0x85a5('0xf'));var toCsv=require(_0x85a5('0x10'));var querystring=require(_0x85a5('0x11'));var Papa=require(_0x85a5('0x12'));var Redis=require('ioredis');var authService=require(_0x85a5('0x13'));var qs=require(_0x85a5('0x14'));var as=require(_0x85a5('0x15'));var hardwareService=require(_0x85a5('0x16'));var logger=require(_0x85a5('0x17'))(_0x85a5('0x18'));var utils=require(_0x85a5('0x19'));var config=require(_0x85a5('0x1a'));var licenseUtil=require(_0x85a5('0x1b'));var db=require(_0x85a5('0x1c'))['db'];function respondWithStatusCode(_0x4fafd7,_0x4f3971){_0x4f3971=_0x4f3971||0xcc;return function(_0x5a7ed1){if(_0x5a7ed1){return _0x4fafd7['sendStatus'](_0x4f3971);}return _0x4fafd7[_0x85a5('0x1d')](_0x4f3971)['end']();};}function respondWithResult(_0x3cf866,_0x52239f){_0x52239f=_0x52239f||0xc8;return function(_0x52d490){if(_0x52d490){return _0x3cf866[_0x85a5('0x1d')](_0x52239f)['json'](_0x52d490);}};}function respondWithFilteredResult(_0x254c62,_0xf413e8){return function(_0x4d6edd){if(_0x4d6edd){var _0xd61907=typeof _0xf413e8[_0x85a5('0x1e')]===_0x85a5('0x1f')&&typeof _0xf413e8[_0x85a5('0x20')]===_0x85a5('0x1f');var _0x51dbd8=_0x4d6edd[_0x85a5('0x21')];var _0x23beb6=_0xd61907?0x0:_0xf413e8[_0x85a5('0x1e')];var _0x31c542=_0xd61907?_0x4d6edd['count']:_0xf413e8['offset']+_0xf413e8[_0x85a5('0x20')];var _0xba91c8;if(_0x31c542>=_0x51dbd8){_0x31c542=_0x51dbd8;_0xba91c8=0xc8;}else{_0xba91c8=0xce;}_0x254c62[_0x85a5('0x1d')](_0xba91c8);return _0x254c62[_0x85a5('0x22')](_0x85a5('0x23'),_0x23beb6+'-'+_0x31c542+'/'+_0x51dbd8)[_0x85a5('0x24')](_0x4d6edd);}return null;};}function patchUpdates(_0xe923ee){return function(_0x1dd543){try{jsonpatch[_0x85a5('0x25')](_0x1dd543,_0xe923ee,!![]);}catch(_0x375d35){return BPromise['reject'](_0x375d35);}return _0x1dd543['save']();};}function saveUpdates(_0x442f46,_0x235192){return function(_0x439167){if(_0x439167){return _0x439167[_0x85a5('0x26')](_0x442f46)[_0x85a5('0x27')](function(_0x387ebc){return _0x387ebc;});}return null;};}function removeEntity(_0x1b06ea,_0x39cb3b){return function(_0x5af998){if(_0x5af998){return _0x5af998[_0x85a5('0x28')]()[_0x85a5('0x27')](function(){var _0x3b966c=_0x5af998['get']({'plain':!![]});var _0x4cdb32=_0x85a5('0x29');return db['UserProfileResource'][_0x85a5('0x28')]({'where':{'type':_0x4cdb32,'resourceId':_0x3b966c['id']}})[_0x85a5('0x27')](function(){return _0x5af998;});})[_0x85a5('0x27')](function(){_0x1b06ea['status'](0xcc)[_0x85a5('0x2a')]();});}};}function handleEntityNotFound(_0x478d58,_0x5484f2){return function(_0x56b36d){if(!_0x56b36d){_0x478d58[_0x85a5('0x2b')](0x194);}return _0x56b36d;};}function handleError(_0x4cf778,_0x51310c){_0x51310c=_0x51310c||0x1f4;return function(_0x82006a){logger[_0x85a5('0x2c')](_0x82006a['stack']);if(_0x82006a[_0x85a5('0x2d')]){delete _0x82006a[_0x85a5('0x2d')];}_0x4cf778[_0x85a5('0x1d')](_0x51310c)[_0x85a5('0x2e')](_0x82006a);};}exports[_0x85a5('0x2f')]=function(_0x3b6de1,_0x10b27b){var _0xc6f0f8={},_0x11ba49={},_0x24b0a7={'count':0x0,'rows':[]};var _0x2e2785=_[_0x85a5('0x30')](db[_0x85a5('0x31')][_0x85a5('0x32')],function(_0x2ab8b5){return{'name':_0x2ab8b5[_0x85a5('0x33')],'type':_0x2ab8b5[_0x85a5('0x34')][_0x85a5('0x35')]};});_0x11ba49['model']=_[_0x85a5('0x30')](_0x2e2785,'name');_0x11ba49[_0x85a5('0x36')]=_[_0x85a5('0x37')](_0x3b6de1[_0x85a5('0x36')]);_0x11ba49[_0x85a5('0x38')]=_[_0x85a5('0x39')](_0x11ba49['model'],_0x11ba49[_0x85a5('0x36')]);_0xc6f0f8[_0x85a5('0x3a')]=_[_0x85a5('0x39')](_0x11ba49[_0x85a5('0x3b')],qs[_0x85a5('0x3c')](_0x3b6de1['query'][_0x85a5('0x3c')]));_0xc6f0f8[_0x85a5('0x3a')]=_0xc6f0f8[_0x85a5('0x3a')][_0x85a5('0x3d')]?_0xc6f0f8[_0x85a5('0x3a')]:_0x11ba49[_0x85a5('0x3b')];if(!_0x3b6de1[_0x85a5('0x36')][_0x85a5('0x3e')](_0x85a5('0x3f'))){_0xc6f0f8[_0x85a5('0x20')]=qs[_0x85a5('0x20')](_0x3b6de1[_0x85a5('0x36')][_0x85a5('0x20')]);_0xc6f0f8[_0x85a5('0x1e')]=qs[_0x85a5('0x1e')](_0x3b6de1['query'][_0x85a5('0x1e')]);}_0xc6f0f8[_0x85a5('0x40')]=qs['sort'](_0x3b6de1['query'][_0x85a5('0x41')]);_0xc6f0f8[_0x85a5('0x42')]=qs[_0x85a5('0x38')](_[_0x85a5('0x43')](_0x3b6de1[_0x85a5('0x36')],_0x11ba49[_0x85a5('0x38')]),_0x2e2785);if(_0x3b6de1['query'][_0x85a5('0x44')]){_0xc6f0f8['where']=_[_0x85a5('0x45')](_0xc6f0f8[_0x85a5('0x42')],{'$or':[{'key':{'$like':'%'+_0x3b6de1[_0x85a5('0x36')][_0x85a5('0x44')]+'%'}},{'value':{'$like':'%'+_0x3b6de1[_0x85a5('0x36')][_0x85a5('0x44')]+'%'}}]});}_0xc6f0f8=_[_0x85a5('0x45')]({},_0xc6f0f8,_0x3b6de1[_0x85a5('0x46')]);var _0x906fd0={'where':_0xc6f0f8[_0x85a5('0x42')]};return db[_0x85a5('0x31')]['count'](_0x906fd0)[_0x85a5('0x27')](function(_0x101172){_0x24b0a7[_0x85a5('0x21')]=_0x101172;if(_0x3b6de1[_0x85a5('0x36')]['includeAll']){_0xc6f0f8[_0x85a5('0x47')]=[{'all':!![]}];}return db[_0x85a5('0x31')]['findAll'](_0xc6f0f8);})[_0x85a5('0x27')](function(_0x375016){_0x24b0a7[_0x85a5('0x48')]=_0x375016;return _0x24b0a7;})['then'](respondWithFilteredResult(_0x10b27b,_0xc6f0f8))['catch'](handleError(_0x10b27b,null));};exports[_0x85a5('0x49')]=function(_0x1c7c50,_0x117006){var _0x136cda={'raw':!![],'where':{'id':_0x1c7c50[_0x85a5('0x4a')]['id']}},_0x6c0d43={};_0x6c0d43[_0x85a5('0x3b')]=_[_0x85a5('0x37')](db['CannedAnswer'][_0x85a5('0x32')]);_0x6c0d43[_0x85a5('0x36')]=_[_0x85a5('0x37')](_0x1c7c50[_0x85a5('0x36')]);_0x6c0d43[_0x85a5('0x38')]=_[_0x85a5('0x39')](_0x6c0d43[_0x85a5('0x3b')],_0x6c0d43[_0x85a5('0x36')]);_0x136cda[_0x85a5('0x3a')]=_[_0x85a5('0x39')](_0x6c0d43[_0x85a5('0x3b')],qs['fields'](_0x1c7c50[_0x85a5('0x36')][_0x85a5('0x3c')]));_0x136cda[_0x85a5('0x3a')]=_0x136cda['attributes']['length']?_0x136cda['attributes']:_0x6c0d43[_0x85a5('0x3b')];if(_0x1c7c50['query'][_0x85a5('0x4b')]){_0x136cda['include']=[{'all':!![]}];}_0x136cda=_['merge']({},_0x136cda,_0x1c7c50[_0x85a5('0x46')]);return db[_0x85a5('0x31')][_0x85a5('0x4c')](_0x136cda)[_0x85a5('0x27')](handleEntityNotFound(_0x117006,null))[_0x85a5('0x27')](respondWithResult(_0x117006,null))[_0x85a5('0x4d')](handleError(_0x117006,null));};exports[_0x85a5('0x26')]=function(_0x18a713,_0x59ac2a){if(_0x18a713[_0x85a5('0x4e')]['id']){delete _0x18a713[_0x85a5('0x4e')]['id'];}return db['CannedAnswer'][_0x85a5('0x4c')]({'where':{'id':_0x18a713['params']['id']}})[_0x85a5('0x27')](handleEntityNotFound(_0x59ac2a,null))[_0x85a5('0x27')](saveUpdates(_0x18a713[_0x85a5('0x4e')],null))['then'](respondWithResult(_0x59ac2a,null))['catch'](handleError(_0x59ac2a,null));};exports[_0x85a5('0x28')]=function(_0x57445d,_0x5eab99){return db[_0x85a5('0x31')][_0x85a5('0x4c')]({'where':{'id':_0x57445d['params']['id']}})[_0x85a5('0x27')](handleEntityNotFound(_0x5eab99,null))[_0x85a5('0x27')](removeEntity(_0x5eab99,null))['catch'](handleError(_0x5eab99,null));};exports['create']=function(_0xa71b65,_0x55fa4d){var _0x211e86={'key':_0xa71b65[_0x85a5('0x4e')][_0x85a5('0x35')]};if(_0xa71b65['body']['MailAccountId']){_0x211e86[_0x85a5('0x4f')]=_0xa71b65[_0x85a5('0x4e')][_0x85a5('0x4f')];}else if(_0xa71b65[_0x85a5('0x4e')]['SmsAccountId']){_0x211e86['SmsAccountId']=_0xa71b65[_0x85a5('0x4e')][_0x85a5('0x50')];}else if(_0xa71b65[_0x85a5('0x4e')][_0x85a5('0x51')]){_0x211e86['OpenchannelAccountId']=_0xa71b65['body']['OpenchannelAccountId'];}else if(_0xa71b65['body'][_0x85a5('0x52')]){_0x211e86[_0x85a5('0x52')]=_0xa71b65[_0x85a5('0x4e')][_0x85a5('0x52')];}return db[_0x85a5('0x31')][_0x85a5('0x4c')]({'where':_0x211e86})[_0x85a5('0x27')](function(_0x7337ad){if(_0x7337ad){throw new db[(_0x85a5('0x53'))][(_0x85a5('0x54'))](_0x85a5('0x55'));}return db['CannedAnswer'][_0x85a5('0x56')](_0xa71b65[_0x85a5('0x4e')]);})[_0x85a5('0x27')](function(_0x831404){var _0x571a00=_0xa71b65['user']['get']({'plain':!![]});if(!_0x571a00)throw new Error(_0x85a5('0x57'));if(_0x571a00['role']===_0x85a5('0x58')){var _0x4b9c41=_0x831404[_0x85a5('0x59')]({'plain':!![]});return db[_0x85a5('0x5a')][_0x85a5('0x4c')]({'where':{'name':_0x85a5('0x29'),'userProfileId':_0x571a00[_0x85a5('0x5b')]},'raw':!![]})[_0x85a5('0x27')](function(_0x264aec){if(_0x264aec&&_0x264aec['autoAssociation']===0x0){return db[_0x85a5('0x5c')][_0x85a5('0x56')]({'name':_0x4b9c41['name'],'resourceId':_0x4b9c41['id'],'type':_0x264aec[_0x85a5('0x2d')],'sectionId':_0x264aec['id']},{})['then'](function(){return _0x831404;});}else{return _0x831404;}})[_0x85a5('0x4d')](function(_0x46112e){logger[_0x85a5('0x2c')](_0x85a5('0x5d'),_0x46112e);throw _0x46112e;});}return _0x831404;})['then'](respondWithResult(_0x55fa4d,0xc9))[_0x85a5('0x4d')](handleError(_0x55fa4d,null));};
\ No newline at end of file
index 18226a0..4158db8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb789=['./cannedAnswer.attributes','define','CannedAnswer','utf8mb4','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x409456,_0x36e168){var _0x9e5160=function(_0x59fa4c){while(--_0x59fa4c){_0x409456['push'](_0x409456['shift']());}};_0x9e5160(++_0x36e168);}(_0xb789,0xc7));var _0x9b78=function(_0x521c46,_0x64b23b){_0x521c46=_0x521c46-0x0;var _0x5502fe=_0xb789[_0x521c46];return _0x5502fe;};'use strict';var _=require('lodash');var util=require(_0x9b78('0x0'));var logger=require(_0x9b78('0x1'))(_0x9b78('0x2'));var moment=require(_0x9b78('0x3'));var BPromise=require(_0x9b78('0x4'));var rp=require(_0x9b78('0x5'));var fs=require('fs');var path=require(_0x9b78('0x6'));var rimraf=require(_0x9b78('0x7'));var config=require(_0x9b78('0x8'));var attributes=require(_0x9b78('0x9'));module['exports']=function(_0x48ca05,_0x16723e){return _0x48ca05[_0x9b78('0xa')](_0x9b78('0xb'),attributes,{'tableName':'tools_canned_answers','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x9b78('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x9972=['utf8mb4_unicode_ci','util','moment','request-promise','path','rimraf','../../config/environment','./cannedAnswer.attributes','exports','define','CannedAnswer','tools_canned_answers','utf8mb4'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x9972,0xeb));var _0x2997=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x9972[_0x4a9fb1];return _0x348672;};'use strict';var _=require('lodash');var util=require(_0x2997('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x2997('0x1'));var BPromise=require('bluebird');var rp=require(_0x2997('0x2'));var fs=require('fs');var path=require(_0x2997('0x3'));var rimraf=require(_0x2997('0x4'));var config=require(_0x2997('0x5'));var attributes=require(_0x2997('0x6'));module[_0x2997('0x7')]=function(_0x2f11b7,_0x259004){return _0x2f11b7[_0x2997('0x8')](_0x2997('0x9'),attributes,{'tableName':_0x2997('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x2997('0xb'),'collate':_0x2997('0xc')});};
\ No newline at end of file
index 1562b29..a7d9ab7 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(_0x215545,_0x1bac4e){var _0x152390=function(_0x34a3c5){while(--_0x34a3c5){_0x215545['push'](_0x215545['shift']());}};_0x152390(++_0x1bac4e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa9e0[_0x9aada2];return _0x196dff;};'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(_0x33ccac,_0x486126){var _0x1a103f=function(_0x1fc991){while(--_0x1fc991){_0x33ccac['push'](_0x33ccac['shift']());}};_0x1a103f(++_0x486126);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xa9e0[_0x6131cd];return _0x47e916;};'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 df401ee..695cea9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcda6=['create','put','update','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','get','isAuthenticated','index','/:id','show','post'];(function(_0x5b209c,_0x1d3141){var _0x1afe7a=function(_0x12f16f){while(--_0x12f16f){_0x5b209c['push'](_0x5b209c['shift']());}};_0x1afe7a(++_0x1d3141);}(_0xcda6,0x192));var _0x6cda=function(_0x4d9fa4,_0x168f86){_0x4d9fa4=_0x4d9fa4-0x0;var _0x2b3a61=_0xcda6[_0x4d9fa4];return _0x2b3a61;};'use strict';var multer=require(_0x6cda('0x0'));var util=require(_0x6cda('0x1'));var path=require('path');var timeout=require(_0x6cda('0x2'));var express=require(_0x6cda('0x3'));var router=express[_0x6cda('0x4')]();var fs_extra=require(_0x6cda('0x5'));var auth=require(_0x6cda('0x6'));var interaction=require(_0x6cda('0x7'));var config=require(_0x6cda('0x8'));var controller=require(_0x6cda('0x9'));router[_0x6cda('0xa')]('/',auth[_0x6cda('0xb')](),controller[_0x6cda('0xc')]);router[_0x6cda('0xa')](_0x6cda('0xd'),auth[_0x6cda('0xb')](),controller[_0x6cda('0xe')]);router[_0x6cda('0xf')]('/',auth[_0x6cda('0xb')](),controller[_0x6cda('0x10')]);router[_0x6cda('0x11')](_0x6cda('0xd'),auth[_0x6cda('0xb')](),controller[_0x6cda('0x12')]);router['delete']('/:id',auth[_0x6cda('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x7345=['connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./cannedAnswer.controller','get','isAuthenticated','/:id','post','create','put','update','destroy','exports','multer','util'];(function(_0x519f0f,_0x33b0a3){var _0x4d3020=function(_0x4eb891){while(--_0x4eb891){_0x519f0f['push'](_0x519f0f['shift']());}};_0x4d3020(++_0x33b0a3);}(_0x7345,0xfd));var _0x5734=function(_0x5a7818,_0x5a5bc9){_0x5a7818=_0x5a7818-0x0;var _0x4e37ae=_0x7345[_0x5a7818];return _0x4e37ae;};'use strict';var multer=require(_0x5734('0x0'));var util=require(_0x5734('0x1'));var path=require('path');var timeout=require(_0x5734('0x2'));var express=require(_0x5734('0x3'));var router=express['Router']();var fs_extra=require(_0x5734('0x4'));var auth=require(_0x5734('0x5'));var interaction=require(_0x5734('0x6'));var config=require('../../config/environment');var controller=require(_0x5734('0x7'));router[_0x5734('0x8')]('/',auth[_0x5734('0x9')](),controller['index']);router['get'](_0x5734('0xa'),auth[_0x5734('0x9')](),controller['show']);router[_0x5734('0xb')]('/',auth[_0x5734('0x9')](),controller[_0x5734('0xc')]);router[_0x5734('0xd')](_0x5734('0xa'),auth[_0x5734('0x9')](),controller[_0x5734('0xe')]);router['delete'](_0x5734('0xa'),auth[_0x5734('0x9')](),controller[_0x5734('0xf')]);module[_0x5734('0x10')]=router;
\ No newline at end of file
index ac53e11..93a95c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc9d=['sequelize','exports','DATE','1970-01-01\x2000:00:01','STRING','INTEGER'];(function(_0x1b3158,_0xeb878f){var _0x25a2b0=function(_0x3b1114){while(--_0x3b1114){_0x1b3158['push'](_0x1b3158['shift']());}};_0x25a2b0(++_0xeb878f);}(_0xbc9d,0xb4));var _0xdbc9=function(_0x404751,_0x5e9ca7){_0x404751=_0x404751-0x0;var _0x24e50d=_0xbc9d[_0x404751];return _0x24e50d;};'use strict';var Sequelize=require(_0xdbc9('0x0'));module[_0xdbc9('0x1')]={'calldate':{'type':Sequelize[_0xdbc9('0x2')],'allowNull':![],'defaultValue':_0xdbc9('0x3')},'clid':{'type':Sequelize[_0xdbc9('0x4')]},'src':{'type':Sequelize['STRING']},'dst':{'type':Sequelize['STRING']},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xdbc9('0x4')]},'dstchannel':{'type':Sequelize[_0xdbc9('0x4')]},'lastapp':{'type':Sequelize[_0xdbc9('0x4')]},'lastdata':{'type':Sequelize[_0xdbc9('0x4')]},'duration':{'type':Sequelize[_0xdbc9('0x5')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0xdbc9('0x5')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xdbc9('0x4')]},'amaflags':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0xdbc9('0x4')]},'userfield':{'type':Sequelize[_0xdbc9('0x4')]},'uniqueid':{'type':Sequelize[_0xdbc9('0x4')]},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize[_0xdbc9('0x4')]},'peeraccount':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']},'tag':{'type':Sequelize[_0xdbc9('0x4')]}};
\ No newline at end of file
+var _0x0971=['1970-01-01\x2000:00:01','STRING','INTEGER','sequelize','exports','DATE'];(function(_0x1dcbc6,_0x219d61){var _0x1a0893=function(_0x4fe96a){while(--_0x4fe96a){_0x1dcbc6['push'](_0x1dcbc6['shift']());}};_0x1a0893(++_0x219d61);}(_0x0971,0xc3));var _0x1097=function(_0x241424,_0x25eb5d){_0x241424=_0x241424-0x0;var _0x3da798=_0x0971[_0x241424];return _0x3da798;};'use strict';var Sequelize=require(_0x1097('0x0'));module[_0x1097('0x1')]={'calldate':{'type':Sequelize[_0x1097('0x2')],'allowNull':![],'defaultValue':_0x1097('0x3')},'clid':{'type':Sequelize[_0x1097('0x4')]},'src':{'type':Sequelize[_0x1097('0x4')]},'dst':{'type':Sequelize[_0x1097('0x4')]},'dcontext':{'type':Sequelize[_0x1097('0x4')]},'channel':{'type':Sequelize['STRING']},'dstchannel':{'type':Sequelize['STRING']},'lastapp':{'type':Sequelize[_0x1097('0x4')]},'lastdata':{'type':Sequelize[_0x1097('0x4')]},'duration':{'type':Sequelize[_0x1097('0x5')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x1097('0x5')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x1097('0x4')]},'amaflags':{'type':Sequelize[_0x1097('0x5')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x1097('0x4')]},'userfield':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x1097('0x4')]},'linkedid':{'type':Sequelize[_0x1097('0x4')]},'sequence':{'type':Sequelize['STRING']},'peeraccount':{'type':Sequelize[_0x1097('0x4')]},'type':{'type':Sequelize[_0x1097('0x4')]},'tag':{'type':Sequelize[_0x1097('0x4')]}};
\ No newline at end of file
index 8499e13..7725377 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe107=['Cdr','rawAttributes','fieldName','key','model','map','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','merge','type','VIRTUAL','filter','options','include','rows','catch','show','params','includeAll','create','body','find','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','to-csv','lodash','squel','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index'];(function(_0x506538,_0x2fe4f7){var _0x360146=function(_0x3a7eca){while(--_0x3a7eca){_0x506538['push'](_0x506538['shift']());}};_0x360146(++_0x2fe4f7);}(_0xe107,0xb3));var _0x7e10=function(_0x4d1e9a,_0x26a0a1){_0x4d1e9a=_0x4d1e9a-0x0;var _0x48cbf0=_0xe107[_0x4d1e9a];return _0x48cbf0;};'use strict';var emlformat=require(_0x7e10('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7e10('0x1'));var jsonpatch=require(_0x7e10('0x2'));var rp=require(_0x7e10('0x3'));var moment=require('moment');var BPromise=require(_0x7e10('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x7e10('0x5'));var sox=require(_0x7e10('0x6'));var csv=require(_0x7e10('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7e10('0x8'));var squel=require(_0x7e10('0x9'));var crypto=require(_0x7e10('0xa'));var jsforce=require(_0x7e10('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x7e10('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x7e10('0xd'));var qs=require(_0x7e10('0xe'));var as=require(_0x7e10('0xf'));var hardwareService=require(_0x7e10('0x10'));var logger=require(_0x7e10('0x11'))('api');var utils=require(_0x7e10('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x7e10('0x13'));var db=require(_0x7e10('0x14'))['db'];function respondWithStatusCode(_0x2f4d72,_0x5434dd){_0x5434dd=_0x5434dd||0xcc;return function(_0xc2e42b){if(_0xc2e42b){return _0x2f4d72[_0x7e10('0x15')](_0x5434dd);}return _0x2f4d72[_0x7e10('0x16')](_0x5434dd)[_0x7e10('0x17')]();};}function respondWithResult(_0x119ff5,_0x1b4d9d){_0x1b4d9d=_0x1b4d9d||0xc8;return function(_0x1c2b22){if(_0x1c2b22){return _0x119ff5[_0x7e10('0x16')](_0x1b4d9d)['json'](_0x1c2b22);}};}function respondWithFilteredResult(_0x15e9e5,_0x433221){return function(_0x4bd78a){if(_0x4bd78a){var _0x48339f=typeof _0x433221[_0x7e10('0x18')]==='undefined'&&typeof _0x433221[_0x7e10('0x19')]===_0x7e10('0x1a');var _0xdbda1a=_0x4bd78a[_0x7e10('0x1b')];var _0x4fd639=_0x48339f?0x0:_0x433221[_0x7e10('0x18')];var _0x2b4850=_0x48339f?_0x4bd78a[_0x7e10('0x1b')]:_0x433221['offset']+_0x433221[_0x7e10('0x19')];var _0x36149a;if(_0x2b4850>=_0xdbda1a){_0x2b4850=_0xdbda1a;_0x36149a=0xc8;}else{_0x36149a=0xce;}_0x15e9e5[_0x7e10('0x16')](_0x36149a);return _0x15e9e5[_0x7e10('0x1c')](_0x7e10('0x1d'),_0x4fd639+'-'+_0x2b4850+'/'+_0xdbda1a)['json'](_0x4bd78a);}return null;};}function patchUpdates(_0x45a0cb){return function(_0x2c6227){try{jsonpatch['apply'](_0x2c6227,_0x45a0cb,!![]);}catch(_0x3c5629){return BPromise[_0x7e10('0x1e')](_0x3c5629);}return _0x2c6227[_0x7e10('0x1f')]();};}function saveUpdates(_0x482faa,_0x4a667b){return function(_0x415cb7){if(_0x415cb7){return _0x415cb7[_0x7e10('0x20')](_0x482faa)[_0x7e10('0x21')](function(_0x1c72df){return _0x1c72df;});}return null;};}function removeEntity(_0x35e7c9,_0x105a55){return function(_0x12c36d){if(_0x12c36d){return _0x12c36d[_0x7e10('0x22')]()['then'](function(){_0x35e7c9['status'](0xcc)[_0x7e10('0x17')]();});}};}function handleEntityNotFound(_0xe34c1e,_0x1bfe8a){return function(_0x13eeb3){if(!_0x13eeb3){_0xe34c1e['sendStatus'](0x194);}return _0x13eeb3;};}function handleError(_0x537365,_0x116446){_0x116446=_0x116446||0x1f4;return function(_0x12ba1b){logger[_0x7e10('0x23')](_0x12ba1b[_0x7e10('0x24')]);if(_0x12ba1b[_0x7e10('0x25')]){delete _0x12ba1b[_0x7e10('0x25')];}_0x537365[_0x7e10('0x16')](_0x116446)[_0x7e10('0x26')](_0x12ba1b);};}exports[_0x7e10('0x27')]=function(_0x3b020c,_0x5691f8){var _0x4e225d={},_0xbc509={},_0x884343={'count':0x0,'rows':[]};var _0x560460=_['map'](db[_0x7e10('0x28')][_0x7e10('0x29')],function(_0x537587){return{'name':_0x537587[_0x7e10('0x2a')],'type':_0x537587['type'][_0x7e10('0x2b')]};});_0xbc509[_0x7e10('0x2c')]=_[_0x7e10('0x2d')](_0x560460,_0x7e10('0x25'));_0xbc509[_0x7e10('0x2e')]=_[_0x7e10('0x2f')](_0x3b020c['query']);_0xbc509[_0x7e10('0x30')]=_['intersection'](_0xbc509[_0x7e10('0x2c')],_0xbc509[_0x7e10('0x2e')]);_0x4e225d[_0x7e10('0x31')]=_[_0x7e10('0x32')](_0xbc509[_0x7e10('0x2c')],qs[_0x7e10('0x33')](_0x3b020c[_0x7e10('0x2e')][_0x7e10('0x33')]));_0x4e225d[_0x7e10('0x31')]=_0x4e225d['attributes'][_0x7e10('0x34')]?_0x4e225d[_0x7e10('0x31')]:_0xbc509[_0x7e10('0x2c')];if(!_0x3b020c[_0x7e10('0x2e')][_0x7e10('0x35')]('nolimit')){_0x4e225d[_0x7e10('0x19')]=qs[_0x7e10('0x19')](_0x3b020c[_0x7e10('0x2e')][_0x7e10('0x19')]);_0x4e225d['offset']=qs['offset'](_0x3b020c[_0x7e10('0x2e')][_0x7e10('0x18')]);}_0x4e225d[_0x7e10('0x36')]=qs[_0x7e10('0x37')](_0x3b020c['query'][_0x7e10('0x37')]);_0x4e225d[_0x7e10('0x38')]=qs['filters'](_[_0x7e10('0x39')](_0x3b020c[_0x7e10('0x2e')],_0xbc509['filters']),_0x560460);if(_0x3b020c['query']['filter']){_0x4e225d[_0x7e10('0x38')]=_[_0x7e10('0x3a')](_0x4e225d[_0x7e10('0x38')],{'$or':_[_0x7e10('0x2d')](_0x560460,function(_0xd696d2){if(_0xd696d2[_0x7e10('0x3b')]!==_0x7e10('0x3c')){var _0x419085={};_0x419085[_0xd696d2['name']]={'$like':'%'+_0x3b020c[_0x7e10('0x2e')][_0x7e10('0x3d')]+'%'};return _0x419085;}})});}_0x4e225d=_[_0x7e10('0x3a')]({},_0x4e225d,_0x3b020c[_0x7e10('0x3e')]);var _0x4ebf4a={'where':_0x4e225d[_0x7e10('0x38')]};return db[_0x7e10('0x28')][_0x7e10('0x1b')](_0x4ebf4a)[_0x7e10('0x21')](function(_0x3ad2f0){_0x884343[_0x7e10('0x1b')]=_0x3ad2f0;if(_0x3b020c[_0x7e10('0x2e')]['includeAll']){_0x4e225d[_0x7e10('0x3f')]=[{'all':!![]}];}return db[_0x7e10('0x28')]['findAll'](_0x4e225d);})[_0x7e10('0x21')](function(_0x5c62ac){_0x884343[_0x7e10('0x40')]=_0x5c62ac;return _0x884343;})['then'](respondWithFilteredResult(_0x5691f8,_0x4e225d))[_0x7e10('0x41')](handleError(_0x5691f8,null));};exports[_0x7e10('0x42')]=function(_0x1940ff,_0x18e9b2){var _0x3c6a01={'raw':!![],'where':{'id':_0x1940ff[_0x7e10('0x43')]['id']}},_0x4c2946={};_0x4c2946[_0x7e10('0x2c')]=_[_0x7e10('0x2f')](db[_0x7e10('0x28')][_0x7e10('0x29')]);_0x4c2946['query']=_[_0x7e10('0x2f')](_0x1940ff[_0x7e10('0x2e')]);_0x4c2946['filters']=_['intersection'](_0x4c2946[_0x7e10('0x2c')],_0x4c2946[_0x7e10('0x2e')]);_0x3c6a01['attributes']=_[_0x7e10('0x32')](_0x4c2946['model'],qs[_0x7e10('0x33')](_0x1940ff['query'][_0x7e10('0x33')]));_0x3c6a01[_0x7e10('0x31')]=_0x3c6a01['attributes']['length']?_0x3c6a01['attributes']:_0x4c2946['model'];if(_0x1940ff['query'][_0x7e10('0x44')]){_0x3c6a01[_0x7e10('0x3f')]=[{'all':!![]}];}_0x3c6a01=_[_0x7e10('0x3a')]({},_0x3c6a01,_0x1940ff[_0x7e10('0x3e')]);return db[_0x7e10('0x28')]['find'](_0x3c6a01)[_0x7e10('0x21')](handleEntityNotFound(_0x18e9b2,null))['then'](respondWithResult(_0x18e9b2,null))[_0x7e10('0x41')](handleError(_0x18e9b2,null));};exports[_0x7e10('0x45')]=function(_0x43745a,_0x290f9c){return db['Cdr']['create'](_0x43745a[_0x7e10('0x46')],{})[_0x7e10('0x21')](respondWithResult(_0x290f9c,0xc9))['catch'](handleError(_0x290f9c,null));};exports['update']=function(_0x2ceaec,_0x3f0a05){if(_0x2ceaec[_0x7e10('0x46')]['id']){delete _0x2ceaec[_0x7e10('0x46')]['id'];}return db[_0x7e10('0x28')][_0x7e10('0x47')]({'where':{'id':_0x2ceaec[_0x7e10('0x43')]['id']}})[_0x7e10('0x21')](handleEntityNotFound(_0x3f0a05,null))['then'](saveUpdates(_0x2ceaec[_0x7e10('0x46')],null))['then'](respondWithResult(_0x3f0a05,null))[_0x7e10('0x41')](handleError(_0x3f0a05,null));};exports[_0x7e10('0x22')]=function(_0x29bd0d,_0x4fec7f){return db['Cdr'][_0x7e10('0x47')]({'where':{'id':_0x29bd0d[_0x7e10('0x43')]['id']}})[_0x7e10('0x21')](handleEntityNotFound(_0x4fec7f,null))[_0x7e10('0x21')](removeEntity(_0x4fec7f,null))[_0x7e10('0x41')](handleError(_0x4fec7f,null));};exports['describe']=function(_0x39c23d,_0x498ebf){return db['Cdr'][_0x7e10('0x48')]()[_0x7e10('0x21')](respondWithResult(_0x498ebf,null))['catch'](handleError(_0x498ebf,null));};
\ No newline at end of file
+var _0xe0c3=['request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','destroy','then','end','error','name','send','index','map','rawAttributes','fieldName','type','model','keys','query','filters','attributes','intersection','fields','length','nolimit','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','Cdr','findAll','rows','catch','show','params','find','create','body','update','describe','eml-format','zip-dir','fast-json-patch'];(function(_0x22e4f9,_0x56e213){var _0x2eac12=function(_0x12fe10){while(--_0x12fe10){_0x22e4f9['push'](_0x22e4f9['shift']());}};_0x2eac12(++_0x56e213);}(_0xe0c3,0xea));var _0x3e0c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe0c3[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x3e0c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3e0c('0x1'));var jsonpatch=require(_0x3e0c('0x2'));var rp=require(_0x3e0c('0x3'));var moment=require(_0x3e0c('0x4'));var BPromise=require(_0x3e0c('0x5'));var Mustache=require(_0x3e0c('0x6'));var util=require(_0x3e0c('0x7'));var path=require(_0x3e0c('0x8'));var sox=require(_0x3e0c('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3e0c('0xa'));var _=require(_0x3e0c('0xb'));var squel=require(_0x3e0c('0xc'));var crypto=require(_0x3e0c('0xd'));var jsforce=require(_0x3e0c('0xe'));var deskjs=require(_0x3e0c('0xf'));var toCsv=require(_0x3e0c('0x10'));var querystring=require(_0x3e0c('0x11'));var Papa=require(_0x3e0c('0x12'));var Redis=require(_0x3e0c('0x13'));var authService=require(_0x3e0c('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3e0c('0x15'));var logger=require(_0x3e0c('0x16'))(_0x3e0c('0x17'));var utils=require(_0x3e0c('0x18'));var config=require(_0x3e0c('0x19'));var licenseUtil=require(_0x3e0c('0x1a'));var db=require(_0x3e0c('0x1b'))['db'];function respondWithStatusCode(_0x5dc732,_0x38b416){_0x38b416=_0x38b416||0xcc;return function(_0x491432){if(_0x491432){return _0x5dc732[_0x3e0c('0x1c')](_0x38b416);}return _0x5dc732[_0x3e0c('0x1d')](_0x38b416)['end']();};}function respondWithResult(_0x5f2654,_0x6d9c61){_0x6d9c61=_0x6d9c61||0xc8;return function(_0x409b2c){if(_0x409b2c){return _0x5f2654[_0x3e0c('0x1d')](_0x6d9c61)[_0x3e0c('0x1e')](_0x409b2c);}};}function respondWithFilteredResult(_0x15a269,_0x24fcf9){return function(_0x1947c2){if(_0x1947c2){var _0x274d75=typeof _0x24fcf9[_0x3e0c('0x1f')]===_0x3e0c('0x20')&&typeof _0x24fcf9[_0x3e0c('0x21')]==='undefined';var _0x58c498=_0x1947c2[_0x3e0c('0x22')];var _0x216993=_0x274d75?0x0:_0x24fcf9[_0x3e0c('0x1f')];var _0x41b19f=_0x274d75?_0x1947c2[_0x3e0c('0x22')]:_0x24fcf9[_0x3e0c('0x1f')]+_0x24fcf9['limit'];var _0x2e4a4a;if(_0x41b19f>=_0x58c498){_0x41b19f=_0x58c498;_0x2e4a4a=0xc8;}else{_0x2e4a4a=0xce;}_0x15a269[_0x3e0c('0x1d')](_0x2e4a4a);return _0x15a269[_0x3e0c('0x23')]('Content-Range',_0x216993+'-'+_0x41b19f+'/'+_0x58c498)[_0x3e0c('0x1e')](_0x1947c2);}return null;};}function patchUpdates(_0x5e3a93){return function(_0x479265){try{jsonpatch[_0x3e0c('0x24')](_0x479265,_0x5e3a93,!![]);}catch(_0x1f3bad){return BPromise[_0x3e0c('0x25')](_0x1f3bad);}return _0x479265[_0x3e0c('0x26')]();};}function saveUpdates(_0x4f8d38,_0x4cd447){return function(_0x3320c6){if(_0x3320c6){return _0x3320c6['update'](_0x4f8d38)['then'](function(_0x3fd7de){return _0x3fd7de;});}return null;};}function removeEntity(_0x1769b1,_0x44ce68){return function(_0x5bb7aa){if(_0x5bb7aa){return _0x5bb7aa[_0x3e0c('0x27')]()[_0x3e0c('0x28')](function(){_0x1769b1['status'](0xcc)[_0x3e0c('0x29')]();});}};}function handleEntityNotFound(_0x3de58b,_0x308fd5){return function(_0x1db945){if(!_0x1db945){_0x3de58b['sendStatus'](0x194);}return _0x1db945;};}function handleError(_0x412960,_0xc2f3cc){_0xc2f3cc=_0xc2f3cc||0x1f4;return function(_0x2c5fba){logger[_0x3e0c('0x2a')](_0x2c5fba['stack']);if(_0x2c5fba[_0x3e0c('0x2b')]){delete _0x2c5fba['name'];}_0x412960['status'](_0xc2f3cc)[_0x3e0c('0x2c')](_0x2c5fba);};}exports[_0x3e0c('0x2d')]=function(_0x4d3ce2,_0x16fb92){var _0x3f22b1={},_0x21d7a0={},_0x59c22f={'count':0x0,'rows':[]};var _0x44ecad=_[_0x3e0c('0x2e')](db['Cdr'][_0x3e0c('0x2f')],function(_0x2f31ad){return{'name':_0x2f31ad[_0x3e0c('0x30')],'type':_0x2f31ad[_0x3e0c('0x31')]['key']};});_0x21d7a0[_0x3e0c('0x32')]=_[_0x3e0c('0x2e')](_0x44ecad,_0x3e0c('0x2b'));_0x21d7a0['query']=_[_0x3e0c('0x33')](_0x4d3ce2[_0x3e0c('0x34')]);_0x21d7a0[_0x3e0c('0x35')]=_['intersection'](_0x21d7a0[_0x3e0c('0x32')],_0x21d7a0[_0x3e0c('0x34')]);_0x3f22b1[_0x3e0c('0x36')]=_[_0x3e0c('0x37')](_0x21d7a0[_0x3e0c('0x32')],qs[_0x3e0c('0x38')](_0x4d3ce2[_0x3e0c('0x34')][_0x3e0c('0x38')]));_0x3f22b1[_0x3e0c('0x36')]=_0x3f22b1[_0x3e0c('0x36')][_0x3e0c('0x39')]?_0x3f22b1[_0x3e0c('0x36')]:_0x21d7a0[_0x3e0c('0x32')];if(!_0x4d3ce2[_0x3e0c('0x34')]['hasOwnProperty'](_0x3e0c('0x3a'))){_0x3f22b1[_0x3e0c('0x21')]=qs[_0x3e0c('0x21')](_0x4d3ce2[_0x3e0c('0x34')][_0x3e0c('0x21')]);_0x3f22b1[_0x3e0c('0x1f')]=qs[_0x3e0c('0x1f')](_0x4d3ce2[_0x3e0c('0x34')]['offset']);}_0x3f22b1['order']=qs[_0x3e0c('0x3b')](_0x4d3ce2[_0x3e0c('0x34')][_0x3e0c('0x3b')]);_0x3f22b1[_0x3e0c('0x3c')]=qs[_0x3e0c('0x35')](_[_0x3e0c('0x3d')](_0x4d3ce2['query'],_0x21d7a0[_0x3e0c('0x35')]),_0x44ecad);if(_0x4d3ce2[_0x3e0c('0x34')]['filter']){_0x3f22b1['where']=_['merge'](_0x3f22b1[_0x3e0c('0x3c')],{'$or':_[_0x3e0c('0x2e')](_0x44ecad,function(_0x3d6ed7){if(_0x3d6ed7[_0x3e0c('0x31')]!==_0x3e0c('0x3e')){var _0x45ec69={};_0x45ec69[_0x3d6ed7[_0x3e0c('0x2b')]]={'$like':'%'+_0x4d3ce2[_0x3e0c('0x34')][_0x3e0c('0x3f')]+'%'};return _0x45ec69;}})});}_0x3f22b1=_[_0x3e0c('0x40')]({},_0x3f22b1,_0x4d3ce2[_0x3e0c('0x41')]);var _0x20135d={'where':_0x3f22b1['where']};return db['Cdr']['count'](_0x20135d)[_0x3e0c('0x28')](function(_0x22fcd8){_0x59c22f['count']=_0x22fcd8;if(_0x4d3ce2['query'][_0x3e0c('0x42')]){_0x3f22b1[_0x3e0c('0x43')]=[{'all':!![]}];}return db[_0x3e0c('0x44')][_0x3e0c('0x45')](_0x3f22b1);})['then'](function(_0x2e562f){_0x59c22f[_0x3e0c('0x46')]=_0x2e562f;return _0x59c22f;})[_0x3e0c('0x28')](respondWithFilteredResult(_0x16fb92,_0x3f22b1))[_0x3e0c('0x47')](handleError(_0x16fb92,null));};exports[_0x3e0c('0x48')]=function(_0x4b5638,_0x1bc4b3){var _0x5f4274={'raw':!![],'where':{'id':_0x4b5638[_0x3e0c('0x49')]['id']}},_0x35111f={};_0x35111f['model']=_['keys'](db[_0x3e0c('0x44')][_0x3e0c('0x2f')]);_0x35111f['query']=_[_0x3e0c('0x33')](_0x4b5638[_0x3e0c('0x34')]);_0x35111f[_0x3e0c('0x35')]=_[_0x3e0c('0x37')](_0x35111f[_0x3e0c('0x32')],_0x35111f[_0x3e0c('0x34')]);_0x5f4274['attributes']=_[_0x3e0c('0x37')](_0x35111f[_0x3e0c('0x32')],qs[_0x3e0c('0x38')](_0x4b5638[_0x3e0c('0x34')][_0x3e0c('0x38')]));_0x5f4274[_0x3e0c('0x36')]=_0x5f4274['attributes'][_0x3e0c('0x39')]?_0x5f4274[_0x3e0c('0x36')]:_0x35111f[_0x3e0c('0x32')];if(_0x4b5638['query'][_0x3e0c('0x42')]){_0x5f4274[_0x3e0c('0x43')]=[{'all':!![]}];}_0x5f4274=_['merge']({},_0x5f4274,_0x4b5638[_0x3e0c('0x41')]);return db[_0x3e0c('0x44')][_0x3e0c('0x4a')](_0x5f4274)['then'](handleEntityNotFound(_0x1bc4b3,null))[_0x3e0c('0x28')](respondWithResult(_0x1bc4b3,null))[_0x3e0c('0x47')](handleError(_0x1bc4b3,null));};exports[_0x3e0c('0x4b')]=function(_0x2c7b8c,_0x109078){return db[_0x3e0c('0x44')][_0x3e0c('0x4b')](_0x2c7b8c[_0x3e0c('0x4c')],{})[_0x3e0c('0x28')](respondWithResult(_0x109078,0xc9))[_0x3e0c('0x47')](handleError(_0x109078,null));};exports[_0x3e0c('0x4d')]=function(_0x4efbf2,_0x20c9df){if(_0x4efbf2['body']['id']){delete _0x4efbf2['body']['id'];}return db[_0x3e0c('0x44')]['find']({'where':{'id':_0x4efbf2[_0x3e0c('0x49')]['id']}})[_0x3e0c('0x28')](handleEntityNotFound(_0x20c9df,null))['then'](saveUpdates(_0x4efbf2[_0x3e0c('0x4c')],null))[_0x3e0c('0x28')](respondWithResult(_0x20c9df,null))['catch'](handleError(_0x20c9df,null));};exports[_0x3e0c('0x27')]=function(_0x3e04c9,_0x166203){return db[_0x3e0c('0x44')][_0x3e0c('0x4a')]({'where':{'id':_0x3e04c9[_0x3e0c('0x49')]['id']}})[_0x3e0c('0x28')](handleEntityNotFound(_0x166203,null))[_0x3e0c('0x28')](removeEntity(_0x166203,null))[_0x3e0c('0x47')](handleError(_0x166203,null));};exports[_0x3e0c('0x4e')]=function(_0x4d0f77,_0x3743ae){return db[_0x3e0c('0x44')][_0x3e0c('0x4e')]()[_0x3e0c('0x28')](respondWithResult(_0x3743ae,null))[_0x3e0c('0x47')](handleError(_0x3743ae,null));};
\ No newline at end of file
index 7916c99..34914b0 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(_0x4a2ff3,_0x34da4c){var _0x220c47=function(_0x25a04c){while(--_0x25a04c){_0x4a2ff3['push'](_0x4a2ff3['shift']());}};_0x220c47(++_0x34da4c);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'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 _0x7a54=['Cdr','cdr','accountcode','disposition','dst','src','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cdr.attributes','exports'];(function(_0x4994c8,_0x51445d){var _0x16d972=function(_0x10faf8){while(--_0x10faf8){_0x4994c8['push'](_0x4994c8['shift']());}};_0x16d972(++_0x51445d);}(_0x7a54,0x106));var _0x47a5=function(_0x1d36d5,_0x387beb){_0x1d36d5=_0x1d36d5-0x0;var _0x27db68=_0x7a54[_0x1d36d5];return _0x27db68;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'accountcode','fields':[_0x47a5('0xc')]},{'name':'calldate','fields':['calldate']},{'name':'disposition','fields':[_0x47a5('0xd')]},{'name':_0x47a5('0xe'),'fields':['dst']},{'name':_0x47a5('0xf'),'fields':['src']},{'name':'uniqueid','fields':[_0x47a5('0x10')]}],'timestamps':![]});};
\ No newline at end of file
index 069f5c5..4af2634 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca28=['lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','http','request','then','info','Cdr,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xca28,0x1db));var _0x8ca2=function(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0xca28[_0x50a0c2];return _0x5ebadd;};'use strict';var _=require(_0x8ca2('0x0'));var util=require('util');var moment=require(_0x8ca2('0x1'));var BPromise=require('bluebird');var rs=require(_0x8ca2('0x2'));var fs=require('fs');var Redis=require(_0x8ca2('0x3'));var db=require(_0x8ca2('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x8ca2('0x5'))('rpc');var config=require(_0x8ca2('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8ca2('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4b84c1,_0x5c40e2,_0x3f2bc9){return new BPromise(function(_0x26ff28,_0x3afa6f){return client[_0x8ca2('0x8')](_0x4b84c1,_0x3f2bc9)[_0x8ca2('0x9')](function(_0xb513eb){logger[_0x8ca2('0xa')](_0x8ca2('0xb'),_0x5c40e2,_0x8ca2('0xc'));logger[_0x8ca2('0xd')]('Cdr,\x20%s,\x20%s,\x20%s',_0x5c40e2,_0x8ca2('0xc'),JSON[_0x8ca2('0xe')](_0xb513eb));if(_0xb513eb[_0x8ca2('0xf')]){if(_0xb513eb[_0x8ca2('0xf')][_0x8ca2('0x10')]===0x1f4){logger[_0x8ca2('0xf')](_0x8ca2('0xb'),_0x5c40e2,_0xb513eb[_0x8ca2('0xf')][_0x8ca2('0x11')]);return _0x3afa6f(_0xb513eb[_0x8ca2('0xf')][_0x8ca2('0x11')]);}logger[_0x8ca2('0xf')]('Cdr,\x20%s,\x20%s',_0x5c40e2,_0xb513eb[_0x8ca2('0xf')][_0x8ca2('0x11')]);return _0x26ff28(_0xb513eb[_0x8ca2('0xf')][_0x8ca2('0x11')]);}else{logger['info'](_0x8ca2('0xb'),_0x5c40e2,_0x8ca2('0xc'));_0x26ff28(_0xb513eb['result'][_0x8ca2('0x11')]);}})[_0x8ca2('0x12')](function(_0x43304e){logger[_0x8ca2('0xf')](_0x8ca2('0xb'),_0x5c40e2,_0x43304e);_0x3afa6f(_0x43304e);});});}
\ No newline at end of file
+var _0x52ce=['randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Cdr,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','lodash','util','moment','bluebird'];(function(_0x5a1dae,_0x266074){var _0x13334b=function(_0x74aff4){while(--_0x74aff4){_0x5a1dae['push'](_0x5a1dae['shift']());}};_0x13334b(++_0x266074);}(_0x52ce,0xb4));var _0xe52c=function(_0x11c573,_0x9e7c6e){_0x11c573=_0x11c573-0x0;var _0x6b72de=_0x52ce[_0x11c573];return _0x6b72de;};'use strict';var _=require(_0xe52c('0x0'));var util=require(_0xe52c('0x1'));var moment=require(_0xe52c('0x2'));var BPromise=require(_0xe52c('0x3'));var rs=require(_0xe52c('0x4'));var fs=require('fs');var Redis=require(_0xe52c('0x5'));var db=require(_0xe52c('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xe52c('0x7'));var config=require(_0xe52c('0x8'));var jayson=require(_0xe52c('0x9'));var client=jayson[_0xe52c('0xa')][_0xe52c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1bd941,_0x19e32e,_0x438b3){return new BPromise(function(_0x7a6e3a,_0x214a81){return client[_0xe52c('0xc')](_0x1bd941,_0x438b3)[_0xe52c('0xd')](function(_0x53180d){logger[_0xe52c('0xe')](_0xe52c('0xf'),_0x19e32e,_0xe52c('0x10'));logger[_0xe52c('0x11')]('Cdr,\x20%s,\x20%s,\x20%s',_0x19e32e,_0xe52c('0x10'),JSON[_0xe52c('0x12')](_0x53180d));if(_0x53180d[_0xe52c('0x13')]){if(_0x53180d[_0xe52c('0x13')][_0xe52c('0x14')]===0x1f4){logger['error']('Cdr,\x20%s,\x20%s',_0x19e32e,_0x53180d[_0xe52c('0x13')][_0xe52c('0x15')]);return _0x214a81(_0x53180d[_0xe52c('0x13')][_0xe52c('0x15')]);}logger[_0xe52c('0x13')](_0xe52c('0xf'),_0x19e32e,_0x53180d['error']['message']);return _0x7a6e3a(_0x53180d[_0xe52c('0x13')]['message']);}else{logger[_0xe52c('0xe')](_0xe52c('0xf'),_0x19e32e,_0xe52c('0x10'));_0x7a6e3a(_0x53180d[_0xe52c('0x16')][_0xe52c('0x15')]);}})['catch'](function(_0x5c8895){logger[_0xe52c('0x13')](_0xe52c('0xf'),_0x19e32e,_0x5c8895);_0x214a81(_0x5c8895);});});}
\ No newline at end of file
index 4a6ed72..e4f252c 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(_0x280f4a,_0x2ed8d6){var _0x1bb157=function(_0x37de94){while(--_0x37de94){_0x280f4a['push'](_0x280f4a['shift']());}};_0x1bb157(++_0x2ed8d6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0xa9e0[_0x138f59];return _0x3d114d;};'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 _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(_0x31b9cf,_0x1a809b){var _0x357b8a=function(_0x50a273){while(--_0x50a273){_0x31b9cf['push'](_0x31b9cf['shift']());}};_0x357b8a(++_0x1a809b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0xa9e0[_0x433a86];return _0x23000c;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0xc')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')](_0x0a9e('0x10'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);module[_0x0a9e('0x12')]=router;
\ No newline at end of file
index 93ff1f8..8c2ce3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ba2=['exports','INTEGER','STRING','noop','TEXT','*,*,*,*','sequelize'];(function(_0x2d4421,_0x15a84f){var _0x2d3b01=function(_0xb9e94c){while(--_0xb9e94c){_0x2d4421['push'](_0x2d4421['shift']());}};_0x2d3b01(++_0x15a84f);}(_0x7ba2,0x164));var _0x27ba=function(_0x338338,_0x782573){_0x338338=_0x338338-0x0;var _0x3cf852=_0x7ba2[_0x338338];return _0x3cf852;};'use strict';var Sequelize=require(_0x27ba('0x0'));module[_0x27ba('0x1')]={'priority':{'type':Sequelize[_0x27ba('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x27ba('0x3')],'allowNull':![],'defaultValue':_0x27ba('0x4')},'appdata':{'type':Sequelize[_0x27ba('0x5')]()},'description':{'type':Sequelize[_0x27ba('0x3')]},'interval':{'type':Sequelize[_0x27ba('0x3')],'defaultValue':_0x27ba('0x6')}};
\ No newline at end of file
+var _0xd676=['sequelize','exports','STRING','noop','TEXT','*,*,*,*'];(function(_0x3360f3,_0x344f01){var _0x45e856=function(_0x588d0c){while(--_0x588d0c){_0x3360f3['push'](_0x3360f3['shift']());}};_0x45e856(++_0x344f01);}(_0xd676,0x1e6));var _0x6d67=function(_0x227fe7,_0x392329){_0x227fe7=_0x227fe7-0x0;var _0x4b98be=_0xd676[_0x227fe7];return _0x4b98be;};'use strict';var Sequelize=require(_0x6d67('0x0'));module[_0x6d67('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x6d67('0x2')],'allowNull':![],'defaultValue':_0x6d67('0x3')},'appdata':{'type':Sequelize[_0x6d67('0x4')]()},'description':{'type':Sequelize[_0x6d67('0x2')]},'interval':{'type':Sequelize[_0x6d67('0x2')],'defaultValue':_0x6d67('0x5')}};
\ No newline at end of file
index ac0abf5..0ff6b40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c4f=['intersection','attributes','fields','length','includeAll','include','merge','options','catch','update','body','find','eml-format','rimraf','zip-dir','request-promise','moment','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/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','set','Content-Range','apply','reject','save','then','error','stack','name','send','params','model','keys','ChatApplication','rawAttributes','query','filters'];(function(_0x58197a,_0x138b7a){var _0xd2c78b=function(_0x2b0a15){while(--_0x2b0a15){_0x58197a['push'](_0x58197a['shift']());}};_0xd2c78b(++_0x138b7a);}(_0x1c4f,0x1f4));var _0xf1c4=function(_0x38f068,_0x348f6d){_0x38f068=_0x38f068-0x0;var _0x25114e=_0x1c4f[_0x38f068];return _0x25114e;};'use strict';var emlformat=require(_0xf1c4('0x0'));var rimraf=require(_0xf1c4('0x1'));var zipdir=require(_0xf1c4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf1c4('0x3'));var moment=require(_0xf1c4('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xf1c4('0x5'));var util=require(_0xf1c4('0x6'));var path=require(_0xf1c4('0x7'));var sox=require('sox');var csv=require(_0xf1c4('0x8'));var ejs=require(_0xf1c4('0x9'));var fs=require('fs');var fs_extra=require(_0xf1c4('0xa'));var _=require(_0xf1c4('0xb'));var squel=require(_0xf1c4('0xc'));var crypto=require(_0xf1c4('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xf1c4('0xe'));var toCsv=require(_0xf1c4('0x8'));var querystring=require(_0xf1c4('0xf'));var Papa=require('papaparse');var Redis=require(_0xf1c4('0x10'));var authService=require(_0xf1c4('0x11'));var qs=require(_0xf1c4('0x12'));var as=require(_0xf1c4('0x13'));var hardwareService=require(_0xf1c4('0x14'));var logger=require(_0xf1c4('0x15'))('api');var utils=require('../../config/utils');var config=require(_0xf1c4('0x16'));var licenseUtil=require(_0xf1c4('0x17'));var db=require(_0xf1c4('0x18'))['db'];function respondWithStatusCode(_0x63cbf4,_0x45e5c3){_0x45e5c3=_0x45e5c3||0xcc;return function(_0x2f7302){if(_0x2f7302){return _0x63cbf4[_0xf1c4('0x19')](_0x45e5c3);}return _0x63cbf4['status'](_0x45e5c3)[_0xf1c4('0x1a')]();};}function respondWithResult(_0x4b1189,_0x2d49ce){_0x2d49ce=_0x2d49ce||0xc8;return function(_0x3c211b){if(_0x3c211b){return _0x4b1189[_0xf1c4('0x1b')](_0x2d49ce)[_0xf1c4('0x1c')](_0x3c211b);}};}function respondWithFilteredResult(_0x390dfa,_0x119d04){return function(_0x30efff){if(_0x30efff){var _0xa294d3=typeof _0x119d04[_0xf1c4('0x1d')]===_0xf1c4('0x1e')&&typeof _0x119d04[_0xf1c4('0x1f')]==='undefined';var _0x3ab930=_0x30efff['count'];var _0x4dd06f=_0xa294d3?0x0:_0x119d04[_0xf1c4('0x1d')];var _0x87cd5f=_0xa294d3?_0x30efff['count']:_0x119d04[_0xf1c4('0x1d')]+_0x119d04[_0xf1c4('0x1f')];var _0x3d6795;if(_0x87cd5f>=_0x3ab930){_0x87cd5f=_0x3ab930;_0x3d6795=0xc8;}else{_0x3d6795=0xce;}_0x390dfa[_0xf1c4('0x1b')](_0x3d6795);return _0x390dfa[_0xf1c4('0x20')](_0xf1c4('0x21'),_0x4dd06f+'-'+_0x87cd5f+'/'+_0x3ab930)['json'](_0x30efff);}return null;};}function patchUpdates(_0x5b48a5){return function(_0x3e8616){try{jsonpatch[_0xf1c4('0x22')](_0x3e8616,_0x5b48a5,!![]);}catch(_0x6dcb98){return BPromise[_0xf1c4('0x23')](_0x6dcb98);}return _0x3e8616[_0xf1c4('0x24')]();};}function saveUpdates(_0x3384f2,_0x20a0ff){return function(_0x4ffb27){if(_0x4ffb27){return _0x4ffb27['update'](_0x3384f2)[_0xf1c4('0x25')](function(_0x496518){return _0x496518;});}return null;};}function removeEntity(_0x4ca299,_0x1e4521){return function(_0x215a62){if(_0x215a62){return _0x215a62['destroy']()[_0xf1c4('0x25')](function(){_0x4ca299['status'](0xcc)[_0xf1c4('0x1a')]();});}};}function handleEntityNotFound(_0x4e351d,_0x1bc59e){return function(_0x286028){if(!_0x286028){_0x4e351d[_0xf1c4('0x19')](0x194);}return _0x286028;};}function handleError(_0x2d6417,_0x1a7440){_0x1a7440=_0x1a7440||0x1f4;return function(_0x6d3d79){logger[_0xf1c4('0x26')](_0x6d3d79[_0xf1c4('0x27')]);if(_0x6d3d79[_0xf1c4('0x28')]){delete _0x6d3d79['name'];}_0x2d6417[_0xf1c4('0x1b')](_0x1a7440)[_0xf1c4('0x29')](_0x6d3d79);};}exports['show']=function(_0x5b51ea,_0x316048){var _0x1f29fe={'raw':!![],'where':{'id':_0x5b51ea[_0xf1c4('0x2a')]['id']}},_0x30e431={};_0x30e431[_0xf1c4('0x2b')]=_[_0xf1c4('0x2c')](db[_0xf1c4('0x2d')][_0xf1c4('0x2e')]);_0x30e431[_0xf1c4('0x2f')]=_[_0xf1c4('0x2c')](_0x5b51ea[_0xf1c4('0x2f')]);_0x30e431[_0xf1c4('0x30')]=_[_0xf1c4('0x31')](_0x30e431[_0xf1c4('0x2b')],_0x30e431['query']);_0x1f29fe[_0xf1c4('0x32')]=_[_0xf1c4('0x31')](_0x30e431[_0xf1c4('0x2b')],qs[_0xf1c4('0x33')](_0x5b51ea[_0xf1c4('0x2f')][_0xf1c4('0x33')]));_0x1f29fe[_0xf1c4('0x32')]=_0x1f29fe[_0xf1c4('0x32')][_0xf1c4('0x34')]?_0x1f29fe[_0xf1c4('0x32')]:_0x30e431['model'];if(_0x5b51ea['query'][_0xf1c4('0x35')]){_0x1f29fe[_0xf1c4('0x36')]=[{'all':!![]}];}_0x1f29fe=_[_0xf1c4('0x37')]({},_0x1f29fe,_0x5b51ea[_0xf1c4('0x38')]);return db[_0xf1c4('0x2d')]['find'](_0x1f29fe)[_0xf1c4('0x25')](handleEntityNotFound(_0x316048,null))[_0xf1c4('0x25')](respondWithResult(_0x316048,null))[_0xf1c4('0x39')](handleError(_0x316048,null));};exports[_0xf1c4('0x3a')]=function(_0x456724,_0xa62d5){if(_0x456724[_0xf1c4('0x3b')]['id']){delete _0x456724[_0xf1c4('0x3b')]['id'];}return db[_0xf1c4('0x2d')][_0xf1c4('0x3c')]({'where':{'id':_0x456724[_0xf1c4('0x2a')]['id']}})['then'](handleEntityNotFound(_0xa62d5,null))[_0xf1c4('0x25')](saveUpdates(_0x456724['body'],null))[_0xf1c4('0x25')](respondWithResult(_0xa62d5,null))[_0xf1c4('0x39')](handleError(_0xa62d5,null));};exports['destroy']=function(_0x1abc5b,_0x20a9ad){return db[_0xf1c4('0x2d')]['find']({'where':{'id':_0x1abc5b['params']['id']}})[_0xf1c4('0x25')](handleEntityNotFound(_0x20a9ad,null))['then'](removeEntity(_0x20a9ad,null))['catch'](handleError(_0x20a9ad,null));};
\ No newline at end of file
+var _0xee5b=['../../mysqldb','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','save','update','then','destroy','sendStatus','error','stack','name','send','show','params','model','keys','ChatApplication','rawAttributes','query','filters','attributes','fields','includeAll','merge','options','find','catch','body','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x525af9,_0x4edd23){var _0x129fbf=function(_0x4f44fe){while(--_0x4f44fe){_0x525af9['push'](_0x525af9['shift']());}};_0x129fbf(++_0x4edd23);}(_0xee5b,0x1f4));var _0xbee5=function(_0x288abe,_0x2feeb1){_0x288abe=_0x288abe-0x0;var _0x1e18f6=_0xee5b[_0x288abe];return _0x1e18f6;};'use strict';var emlformat=require(_0xbee5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbee5('0x1'));var jsonpatch=require(_0xbee5('0x2'));var rp=require('request-promise');var moment=require(_0xbee5('0x3'));var BPromise=require(_0xbee5('0x4'));var Mustache=require(_0xbee5('0x5'));var util=require(_0xbee5('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xbee5('0x7'));var ejs=require(_0xbee5('0x8'));var fs=require('fs');var fs_extra=require(_0xbee5('0x9'));var _=require(_0xbee5('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xbee5('0xb'));var Papa=require(_0xbee5('0xc'));var Redis=require(_0xbee5('0xd'));var authService=require(_0xbee5('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xbee5('0xf'));var hardwareService=require(_0xbee5('0x10'));var logger=require(_0xbee5('0x11'))(_0xbee5('0x12'));var utils=require(_0xbee5('0x13'));var config=require(_0xbee5('0x14'));var licenseUtil=require(_0xbee5('0x15'));var db=require(_0xbee5('0x16'))['db'];function respondWithStatusCode(_0xcef158,_0x48f771){_0x48f771=_0x48f771||0xcc;return function(_0x14e032){if(_0x14e032){return _0xcef158['sendStatus'](_0x48f771);}return _0xcef158[_0xbee5('0x17')](_0x48f771)[_0xbee5('0x18')]();};}function respondWithResult(_0x8a268f,_0x593ecb){_0x593ecb=_0x593ecb||0xc8;return function(_0x5092f2){if(_0x5092f2){return _0x8a268f[_0xbee5('0x17')](_0x593ecb)['json'](_0x5092f2);}};}function respondWithFilteredResult(_0x40afcb,_0x5426c9){return function(_0x1a24bd){if(_0x1a24bd){var _0x141878=typeof _0x5426c9[_0xbee5('0x19')]==='undefined'&&typeof _0x5426c9[_0xbee5('0x1a')]===_0xbee5('0x1b');var _0x5a0ae5=_0x1a24bd[_0xbee5('0x1c')];var _0x538460=_0x141878?0x0:_0x5426c9[_0xbee5('0x19')];var _0x3c3f4e=_0x141878?_0x1a24bd[_0xbee5('0x1c')]:_0x5426c9[_0xbee5('0x19')]+_0x5426c9[_0xbee5('0x1a')];var _0xa50ec9;if(_0x3c3f4e>=_0x5a0ae5){_0x3c3f4e=_0x5a0ae5;_0xa50ec9=0xc8;}else{_0xa50ec9=0xce;}_0x40afcb[_0xbee5('0x17')](_0xa50ec9);return _0x40afcb[_0xbee5('0x1d')](_0xbee5('0x1e'),_0x538460+'-'+_0x3c3f4e+'/'+_0x5a0ae5)[_0xbee5('0x1f')](_0x1a24bd);}return null;};}function patchUpdates(_0x35d7d3){return function(_0x40a06){try{jsonpatch[_0xbee5('0x20')](_0x40a06,_0x35d7d3,!![]);}catch(_0x47af8e){return BPromise['reject'](_0x47af8e);}return _0x40a06[_0xbee5('0x21')]();};}function saveUpdates(_0x48bfb5,_0x205491){return function(_0x117cb3){if(_0x117cb3){return _0x117cb3[_0xbee5('0x22')](_0x48bfb5)[_0xbee5('0x23')](function(_0x3f23c5){return _0x3f23c5;});}return null;};}function removeEntity(_0xb665df,_0x359ccf){return function(_0x3cfa8d){if(_0x3cfa8d){return _0x3cfa8d[_0xbee5('0x24')]()['then'](function(){_0xb665df['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x519473,_0x50d774){return function(_0x1af3de){if(!_0x1af3de){_0x519473[_0xbee5('0x25')](0x194);}return _0x1af3de;};}function handleError(_0x3b84c8,_0x28c74d){_0x28c74d=_0x28c74d||0x1f4;return function(_0x169042){logger[_0xbee5('0x26')](_0x169042[_0xbee5('0x27')]);if(_0x169042['name']){delete _0x169042[_0xbee5('0x28')];}_0x3b84c8[_0xbee5('0x17')](_0x28c74d)[_0xbee5('0x29')](_0x169042);};}exports[_0xbee5('0x2a')]=function(_0x1a8bcc,_0x5f0419){var _0x21b993={'raw':!![],'where':{'id':_0x1a8bcc[_0xbee5('0x2b')]['id']}},_0x15ffb1={};_0x15ffb1[_0xbee5('0x2c')]=_[_0xbee5('0x2d')](db[_0xbee5('0x2e')][_0xbee5('0x2f')]);_0x15ffb1[_0xbee5('0x30')]=_[_0xbee5('0x2d')](_0x1a8bcc['query']);_0x15ffb1[_0xbee5('0x31')]=_['intersection'](_0x15ffb1[_0xbee5('0x2c')],_0x15ffb1['query']);_0x21b993[_0xbee5('0x32')]=_['intersection'](_0x15ffb1[_0xbee5('0x2c')],qs['fields'](_0x1a8bcc[_0xbee5('0x30')][_0xbee5('0x33')]));_0x21b993[_0xbee5('0x32')]=_0x21b993[_0xbee5('0x32')]['length']?_0x21b993[_0xbee5('0x32')]:_0x15ffb1[_0xbee5('0x2c')];if(_0x1a8bcc[_0xbee5('0x30')][_0xbee5('0x34')]){_0x21b993['include']=[{'all':!![]}];}_0x21b993=_[_0xbee5('0x35')]({},_0x21b993,_0x1a8bcc[_0xbee5('0x36')]);return db[_0xbee5('0x2e')][_0xbee5('0x37')](_0x21b993)['then'](handleEntityNotFound(_0x5f0419,null))[_0xbee5('0x23')](respondWithResult(_0x5f0419,null))[_0xbee5('0x38')](handleError(_0x5f0419,null));};exports[_0xbee5('0x22')]=function(_0x33aaba,_0x52ecf1){if(_0x33aaba[_0xbee5('0x39')]['id']){delete _0x33aaba['body']['id'];}return db[_0xbee5('0x2e')]['find']({'where':{'id':_0x33aaba['params']['id']}})['then'](handleEntityNotFound(_0x52ecf1,null))[_0xbee5('0x23')](saveUpdates(_0x33aaba[_0xbee5('0x39')],null))[_0xbee5('0x23')](respondWithResult(_0x52ecf1,null))[_0xbee5('0x38')](handleError(_0x52ecf1,null));};exports[_0xbee5('0x24')]=function(_0x2b83d5,_0x37dfd3){return db[_0xbee5('0x2e')]['find']({'where':{'id':_0x2b83d5[_0xbee5('0x2b')]['id']}})['then'](handleEntityNotFound(_0x37dfd3,null))[_0xbee5('0x23')](removeEntity(_0x37dfd3,null))[_0xbee5('0x38')](handleError(_0x37dfd3,null));};
\ No newline at end of file
index 291789b..2bdbf19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cf9=['define','chat_applications','utf8mb4','util','../../config/logger','api','moment','bluebird','../../config/environment','exports'];(function(_0x2dd849,_0x589410){var _0x3ac26c=function(_0x7a8ce9){while(--_0x7a8ce9){_0x2dd849['push'](_0x2dd849['shift']());}};_0x3ac26c(++_0x589410);}(_0x2cf9,0x111));var _0x92cf=function(_0x48c25e,_0x1fd81c){_0x48c25e=_0x48c25e-0x0;var _0x1d393f=_0x2cf9[_0x48c25e];return _0x1d393f;};'use strict';var _=require('lodash');var util=require(_0x92cf('0x0'));var logger=require(_0x92cf('0x1'))(_0x92cf('0x2'));var moment=require(_0x92cf('0x3'));var BPromise=require(_0x92cf('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x92cf('0x5'));var attributes=require('./chatApplication.attributes');module[_0x92cf('0x6')]=function(_0x49ab2d,_0x51ad1a){return _0x49ab2d[_0x92cf('0x7')]('ChatApplication',attributes,{'tableName':_0x92cf('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x92cf('0x9'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xbada=['request-promise','path','rimraf','../../config/environment','./chatApplication.attributes','exports','define','ChatApplication','chat_applications','utf8mb4','util','../../config/logger','bluebird'];(function(_0x281ffb,_0x2c11a7){var _0x4b0b56=function(_0x135a07){while(--_0x135a07){_0x281ffb['push'](_0x281ffb['shift']());}};_0x4b0b56(++_0x2c11a7);}(_0xbada,0x190));var _0xabad=function(_0xfa634c,_0x414e0e){_0xfa634c=_0xfa634c-0x0;var _0x73e478=_0xbada[_0xfa634c];return _0x73e478;};'use strict';var _=require('lodash');var util=require(_0xabad('0x0'));var logger=require(_0xabad('0x1'))('api');var moment=require('moment');var BPromise=require(_0xabad('0x2'));var rp=require(_0xabad('0x3'));var fs=require('fs');var path=require(_0xabad('0x4'));var rimraf=require(_0xabad('0x5'));var config=require(_0xabad('0x6'));var attributes=require(_0xabad('0x7'));module[_0xabad('0x8')]=function(_0x19a262,_0x2b5d62){return _0x19a262[_0xabad('0x9')](_0xabad('0xa'),attributes,{'tableName':_0xabad('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xabad('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 2f7f7e5..8b394a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x632a=['../../config/environment','jayson/promise','client','http','request','then','info','ChatApplication,\x20%s,\x20%s','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x31f806,_0x35fd82){var _0x3afcf9=function(_0x4add30){while(--_0x4add30){_0x31f806['push'](_0x31f806['shift']());}};_0x3afcf9(++_0x35fd82);}(_0x632a,0xc9));var _0xa632=function(_0x29ee1d,_0x372a1f){_0x29ee1d=_0x29ee1d-0x0;var _0x310878=_0x632a[_0x29ee1d];return _0x310878;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xa632('0x0'));var rs=require(_0xa632('0x1'));var fs=require('fs');var Redis=require(_0xa632('0x2'));var db=require(_0xa632('0x3'))['db'];var utils=require(_0xa632('0x4'));var logger=require('../../config/logger')(_0xa632('0x5'));var config=require(_0xa632('0x6'));var jayson=require(_0xa632('0x7'));var client=jayson[_0xa632('0x8')][_0xa632('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x70d989,_0x369b94,_0x572a6c){return new BPromise(function(_0x18454c,_0x55f9a3){return client[_0xa632('0xa')](_0x70d989,_0x572a6c)[_0xa632('0xb')](function(_0x47a5a4){logger[_0xa632('0xc')](_0xa632('0xd'),_0x369b94,_0xa632('0xe'));logger[_0xa632('0xf')](_0xa632('0x10'),_0x369b94,'request\x20sent',JSON[_0xa632('0x11')](_0x47a5a4));if(_0x47a5a4['error']){if(_0x47a5a4[_0xa632('0x12')][_0xa632('0x13')]===0x1f4){logger[_0xa632('0x12')](_0xa632('0xd'),_0x369b94,_0x47a5a4[_0xa632('0x12')][_0xa632('0x14')]);return _0x55f9a3(_0x47a5a4[_0xa632('0x12')][_0xa632('0x14')]);}logger['error'](_0xa632('0xd'),_0x369b94,_0x47a5a4[_0xa632('0x12')][_0xa632('0x14')]);return _0x18454c(_0x47a5a4[_0xa632('0x12')][_0xa632('0x14')]);}else{logger[_0xa632('0xc')](_0xa632('0xd'),_0x369b94,_0xa632('0xe'));_0x18454c(_0x47a5a4[_0xa632('0x15')][_0xa632('0x14')]);}})[_0xa632('0x16')](function(_0x4b417e){logger[_0xa632('0x12')](_0xa632('0xd'),_0x369b94,_0x4b417e);_0x55f9a3(_0x4b417e);});});}
\ No newline at end of file
+var _0x59a3=['result','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','http','then','info','ChatApplication,\x20%s,\x20%s','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x59a3,0x19f));var _0x359a=function(_0x275052,_0x198b39){_0x275052=_0x275052-0x0;var _0xc14d2e=_0x59a3[_0x275052];return _0xc14d2e;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x359a('0x0'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x359a('0x1'));var db=require('../../mysqldb')['db'];var utils=require(_0x359a('0x2'));var logger=require('../../config/logger')(_0x359a('0x3'));var config=require(_0x359a('0x4'));var jayson=require(_0x359a('0x5'));var client=jayson['client'][_0x359a('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x4f1c18,_0xf83606,_0x1ee8b6){return new BPromise(function(_0xf387c8,_0x55a778){return client['request'](_0x4f1c18,_0x1ee8b6)[_0x359a('0x7')](function(_0x32aede){logger[_0x359a('0x8')](_0x359a('0x9'),_0xf83606,_0x359a('0xa'));logger[_0x359a('0xb')](_0x359a('0xc'),_0xf83606,_0x359a('0xa'),JSON[_0x359a('0xd')](_0x32aede));if(_0x32aede[_0x359a('0xe')]){if(_0x32aede[_0x359a('0xe')][_0x359a('0xf')]===0x1f4){logger['error'](_0x359a('0x9'),_0xf83606,_0x32aede[_0x359a('0xe')][_0x359a('0x10')]);return _0x55a778(_0x32aede[_0x359a('0xe')]['message']);}logger[_0x359a('0xe')](_0x359a('0x9'),_0xf83606,_0x32aede['error'][_0x359a('0x10')]);return _0xf387c8(_0x32aede[_0x359a('0xe')][_0x359a('0x10')]);}else{logger[_0x359a('0x8')](_0x359a('0x9'),_0xf83606,_0x359a('0xa'));_0xf387c8(_0x32aede[_0x359a('0x11')][_0x359a('0x10')]);}})['catch'](function(_0x55a845){logger[_0x359a('0xe')]('ChatApplication,\x20%s,\x20%s',_0xf83606,_0x55a845);_0x55a778(_0x55a845);});});}
\ No newline at end of file
index b005466..00e466b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x693e=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatApplication.controller','get','isAuthenticated','show','/:id','update','delete','destroy','exports','multer','path','express'];(function(_0x7b9e2a,_0x532a3c){var _0x2e1ba3=function(_0x3099bc){while(--_0x3099bc){_0x7b9e2a['push'](_0x7b9e2a['shift']());}};_0x2e1ba3(++_0x532a3c);}(_0x693e,0xc9));var _0xe693=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x693e[_0x465a0c];return _0x1e202e;};'use strict';var multer=require(_0xe693('0x0'));var util=require('util');var path=require(_0xe693('0x1'));var timeout=require('connect-timeout');var express=require(_0xe693('0x2'));var router=express[_0xe693('0x3')]();var fs_extra=require(_0xe693('0x4'));var auth=require(_0xe693('0x5'));var interaction=require(_0xe693('0x6'));var config=require(_0xe693('0x7'));var controller=require(_0xe693('0x8'));router[_0xe693('0x9')]('/:id',auth[_0xe693('0xa')](),controller[_0xe693('0xb')]);router['put'](_0xe693('0xc'),auth['isAuthenticated'](),controller[_0xe693('0xd')]);router[_0xe693('0xe')](_0xe693('0xc'),auth[_0xe693('0xa')](),controller[_0xe693('0xf')]);module[_0xe693('0x10')]=router;
\ No newline at end of file
+var _0xfc00=['Router','fs-extra','../../components/auth/service','../../config/environment','./chatApplication.controller','get','show','/:id','isAuthenticated','update','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x4d10a0,_0x31bca3){var _0x2c45af=function(_0x33a7c4){while(--_0x33a7c4){_0x4d10a0['push'](_0x4d10a0['shift']());}};_0x2c45af(++_0x31bca3);}(_0xfc00,0x83));var _0x0fc0=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0xfc00[_0x46aff0];return _0x9d78cf;};'use strict';var multer=require(_0x0fc0('0x0'));var util=require(_0x0fc0('0x1'));var path=require(_0x0fc0('0x2'));var timeout=require(_0x0fc0('0x3'));var express=require(_0x0fc0('0x4'));var router=express[_0x0fc0('0x5')]();var fs_extra=require(_0x0fc0('0x6'));var auth=require(_0x0fc0('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x0fc0('0x8'));var controller=require(_0x0fc0('0x9'));router[_0x0fc0('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x0fc0('0xb')]);router['put'](_0x0fc0('0xc'),auth[_0x0fc0('0xd')](),controller[_0x0fc0('0xe')]);router['delete'](_0x0fc0('0xc'),auth['isAuthenticated'](),controller[_0x0fc0('0xf')]);module[_0x0fc0('0x10')]=router;
\ No newline at end of file
index 4e6ca8b..ab5f71e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e4b=['sequelize','exports','STRING','BOOLEAN'];(function(_0x5eb9f3,_0x2bbd9f){var _0x3c2ae9=function(_0x4a3eb1){while(--_0x4a3eb1){_0x5eb9f3['push'](_0x5eb9f3['shift']());}};_0x3c2ae9(++_0x2bbd9f);}(_0x7e4b,0x84));var _0xb7e4=function(_0x54df4c,_0x52a7dd){_0x54df4c=_0x54df4c-0x0;var _0x4e50d6=_0x7e4b[_0x54df4c];return _0x4e50d6;};'use strict';var Sequelize=require(_0xb7e4('0x0'));module[_0xb7e4('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xb7e4('0x2')]},'write':{'type':Sequelize[_0xb7e4('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xcefd=['STRING','BOOLEAN','sequelize','exports'];(function(_0x453474,_0x1d85a4){var _0x3dd6eb=function(_0x56b371){while(--_0x56b371){_0x453474['push'](_0x453474['shift']());}};_0x3dd6eb(++_0x1d85a4);}(_0xcefd,0x126));var _0xdcef=function(_0xd71a75,_0x51afd3){_0xd71a75=_0xd71a75-0x0;var _0x278bf9=_0xcefd[_0xd71a75];return _0x278bf9;};'use strict';var Sequelize=require(_0xdcef('0x0'));module[_0xdcef('0x1')]={'name':{'type':Sequelize[_0xdcef('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'write':{'type':Sequelize[_0xdcef('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index ecf1c62..36a04ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f47=['body','update','find','describe','ChatInternalMessage','toInteger','addMembers','ids','omit','findOne','User','options','getMembers','removeMembers','ChatGroupId','getMessages','$gte','split','YYYY-MM-DD\x20HH:mm:ss','rimraf','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./chatGroup.socket','register','sendStatus','end','status','json','offset','count','limit','apply','save','destroy','name','index','map','ChatGroup','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','include','rows','then','catch','show','params','create'];(function(_0x32ae4e,_0x1dd4b0){var _0x1084a7=function(_0x50c403){while(--_0x50c403){_0x32ae4e['push'](_0x32ae4e['shift']());}};_0x1084a7(++_0x1dd4b0);}(_0x4f47,0x11e));var _0x74f4=function(_0xca3e89,_0x238440){_0xca3e89=_0xca3e89-0x0;var _0x4feb8b=_0x4f47[_0xca3e89];return _0x4feb8b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x74f4('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x74f4('0x1'));var rp=require('request-promise');var moment=require(_0x74f4('0x2'));var BPromise=require(_0x74f4('0x3'));var Mustache=require(_0x74f4('0x4'));var util=require('util');var path=require(_0x74f4('0x5'));var sox=require(_0x74f4('0x6'));var csv=require(_0x74f4('0x7'));var ejs=require(_0x74f4('0x8'));var fs=require('fs');var fs_extra=require(_0x74f4('0x9'));var _=require(_0x74f4('0xa'));var squel=require(_0x74f4('0xb'));var crypto=require('crypto');var jsforce=require(_0x74f4('0xc'));var deskjs=require(_0x74f4('0xd'));var toCsv=require(_0x74f4('0x7'));var querystring=require(_0x74f4('0xe'));var Papa=require('papaparse');var Redis=require(_0x74f4('0xf'));var authService=require(_0x74f4('0x10'));var qs=require(_0x74f4('0x11'));var as=require(_0x74f4('0x12'));var hardwareService=require(_0x74f4('0x13'));var logger=require(_0x74f4('0x14'))(_0x74f4('0x15'));var utils=require('../../config/utils');var config=require(_0x74f4('0x16'));var licenseUtil=require(_0x74f4('0x17'));var db=require(_0x74f4('0x18'))['db'];config[_0x74f4('0x19')]=_[_0x74f4('0x1a')](config[_0x74f4('0x19')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x74f4('0x19')]));require(_0x74f4('0x1b'))[_0x74f4('0x1c')](socket);function respondWithStatusCode(_0x161c0e,_0x56cb90){_0x56cb90=_0x56cb90||0xcc;return function(_0x5e5cfe){if(_0x5e5cfe){return _0x161c0e[_0x74f4('0x1d')](_0x56cb90);}return _0x161c0e['status'](_0x56cb90)[_0x74f4('0x1e')]();};}function respondWithResult(_0x407e23,_0x1db2e1){_0x1db2e1=_0x1db2e1||0xc8;return function(_0x2d2556){if(_0x2d2556){return _0x407e23[_0x74f4('0x1f')](_0x1db2e1)[_0x74f4('0x20')](_0x2d2556);}};}function respondWithFilteredResult(_0x383717,_0x57afdf){return function(_0x5b54f6){if(_0x5b54f6){var _0x45bcf6=typeof _0x57afdf[_0x74f4('0x21')]==='undefined'&&typeof _0x57afdf['limit']==='undefined';var _0x182e39=_0x5b54f6[_0x74f4('0x22')];var _0x145323=_0x45bcf6?0x0:_0x57afdf['offset'];var _0x8d4810=_0x45bcf6?_0x5b54f6[_0x74f4('0x22')]:_0x57afdf[_0x74f4('0x21')]+_0x57afdf[_0x74f4('0x23')];var _0x5c7ba7;if(_0x8d4810>=_0x182e39){_0x8d4810=_0x182e39;_0x5c7ba7=0xc8;}else{_0x5c7ba7=0xce;}_0x383717[_0x74f4('0x1f')](_0x5c7ba7);return _0x383717['set']('Content-Range',_0x145323+'-'+_0x8d4810+'/'+_0x182e39)[_0x74f4('0x20')](_0x5b54f6);}return null;};}function patchUpdates(_0x219f96){return function(_0x436aaa){try{jsonpatch[_0x74f4('0x24')](_0x436aaa,_0x219f96,!![]);}catch(_0x42659e){return BPromise['reject'](_0x42659e);}return _0x436aaa[_0x74f4('0x25')]();};}function saveUpdates(_0x4462fe,_0x3c894e){return function(_0x14a220){if(_0x14a220){return _0x14a220['update'](_0x4462fe)['then'](function(_0x4f8b1b){return _0x4f8b1b;});}return null;};}function removeEntity(_0x43f554,_0x2c6a28){return function(_0x4a8b0b){if(_0x4a8b0b){return _0x4a8b0b[_0x74f4('0x26')]()['then'](function(){_0x43f554[_0x74f4('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ab021,_0x321353){return function(_0x429459){if(!_0x429459){_0x2ab021['sendStatus'](0x194);}return _0x429459;};}function handleError(_0xa7d247,_0x51c3de){_0x51c3de=_0x51c3de||0x1f4;return function(_0x5efa70){logger['error'](_0x5efa70['stack']);if(_0x5efa70['name']){delete _0x5efa70[_0x74f4('0x27')];}_0xa7d247['status'](_0x51c3de)['send'](_0x5efa70);};}exports[_0x74f4('0x28')]=function(_0x2964b4,_0x25912d){var _0xe57d4f={},_0x679a00={},_0x5a979b={'count':0x0,'rows':[]};var _0x49335e=_[_0x74f4('0x29')](db[_0x74f4('0x2a')][_0x74f4('0x2b')],function(_0x24ea2b){return{'name':_0x24ea2b[_0x74f4('0x2c')],'type':_0x24ea2b['type'][_0x74f4('0x2d')]};});_0x679a00[_0x74f4('0x2e')]=_[_0x74f4('0x29')](_0x49335e,_0x74f4('0x27'));_0x679a00[_0x74f4('0x2f')]=_[_0x74f4('0x30')](_0x2964b4[_0x74f4('0x2f')]);_0x679a00[_0x74f4('0x31')]=_[_0x74f4('0x32')](_0x679a00[_0x74f4('0x2e')],_0x679a00[_0x74f4('0x2f')]);_0xe57d4f[_0x74f4('0x33')]=_[_0x74f4('0x32')](_0x679a00[_0x74f4('0x2e')],qs[_0x74f4('0x34')](_0x2964b4['query'][_0x74f4('0x34')]));_0xe57d4f[_0x74f4('0x33')]=_0xe57d4f[_0x74f4('0x33')][_0x74f4('0x35')]?_0xe57d4f[_0x74f4('0x33')]:_0x679a00[_0x74f4('0x2e')];if(!_0x2964b4[_0x74f4('0x2f')][_0x74f4('0x36')](_0x74f4('0x37'))){_0xe57d4f[_0x74f4('0x23')]=qs['limit'](_0x2964b4[_0x74f4('0x2f')][_0x74f4('0x23')]);_0xe57d4f[_0x74f4('0x21')]=qs[_0x74f4('0x21')](_0x2964b4[_0x74f4('0x2f')][_0x74f4('0x21')]);}_0xe57d4f[_0x74f4('0x38')]=qs[_0x74f4('0x39')](_0x2964b4[_0x74f4('0x2f')][_0x74f4('0x39')]);_0xe57d4f[_0x74f4('0x3a')]=qs[_0x74f4('0x31')](_[_0x74f4('0x3b')](_0x2964b4['query'],_0x679a00['filters']),_0x49335e);if(_0x2964b4['query'][_0x74f4('0x3c')]){_0xe57d4f['where']=_[_0x74f4('0x3d')](_0xe57d4f[_0x74f4('0x3a')],{'$or':_[_0x74f4('0x29')](_0x49335e,function(_0x386e07){if(_0x386e07['type']!=='VIRTUAL'){var _0x3d1d99={};_0x3d1d99[_0x386e07['name']]={'$like':'%'+_0x2964b4[_0x74f4('0x2f')][_0x74f4('0x3c')]+'%'};return _0x3d1d99;}})});}_0xe57d4f=_[_0x74f4('0x3d')]({},_0xe57d4f,_0x2964b4['options']);var _0x18f26f={'where':_0xe57d4f['where']};return db[_0x74f4('0x2a')][_0x74f4('0x22')](_0x18f26f)['then'](function(_0x463b49){_0x5a979b[_0x74f4('0x22')]=_0x463b49;if(_0x2964b4[_0x74f4('0x2f')][_0x74f4('0x3e')]){_0xe57d4f[_0x74f4('0x3f')]=[{'all':!![]}];}return db['ChatGroup']['findAll'](_0xe57d4f);})['then'](function(_0x13ac99){_0x5a979b[_0x74f4('0x40')]=_0x13ac99;return _0x5a979b;})[_0x74f4('0x41')](respondWithFilteredResult(_0x25912d,_0xe57d4f))[_0x74f4('0x42')](handleError(_0x25912d,null));};exports[_0x74f4('0x43')]=function(_0x3893dc,_0x3d0c3e){var _0x3c3e11={'raw':!![],'where':{'id':_0x3893dc[_0x74f4('0x44')]['id']}},_0x2c57c4={};_0x2c57c4[_0x74f4('0x2e')]=_[_0x74f4('0x30')](db[_0x74f4('0x2a')][_0x74f4('0x2b')]);_0x2c57c4[_0x74f4('0x2f')]=_[_0x74f4('0x30')](_0x3893dc[_0x74f4('0x2f')]);_0x2c57c4['filters']=_[_0x74f4('0x32')](_0x2c57c4[_0x74f4('0x2e')],_0x2c57c4[_0x74f4('0x2f')]);_0x3c3e11[_0x74f4('0x33')]=_['intersection'](_0x2c57c4['model'],qs[_0x74f4('0x34')](_0x3893dc[_0x74f4('0x2f')][_0x74f4('0x34')]));_0x3c3e11['attributes']=_0x3c3e11[_0x74f4('0x33')]['length']?_0x3c3e11[_0x74f4('0x33')]:_0x2c57c4[_0x74f4('0x2e')];if(_0x3893dc[_0x74f4('0x2f')]['includeAll']){_0x3c3e11['include']=[{'all':!![]}];}_0x3c3e11=_[_0x74f4('0x3d')]({},_0x3c3e11,_0x3893dc['options']);return db[_0x74f4('0x2a')]['find'](_0x3c3e11)[_0x74f4('0x41')](handleEntityNotFound(_0x3d0c3e,null))[_0x74f4('0x41')](respondWithResult(_0x3d0c3e,null))[_0x74f4('0x42')](handleError(_0x3d0c3e,null));};exports[_0x74f4('0x45')]=function(_0x2836c5,_0x5d302c){return db[_0x74f4('0x2a')][_0x74f4('0x45')](_0x2836c5[_0x74f4('0x46')],{})[_0x74f4('0x41')](respondWithResult(_0x5d302c,0xc9))['catch'](handleError(_0x5d302c,null));};exports[_0x74f4('0x47')]=function(_0x40e4e6,_0x159281){if(_0x40e4e6[_0x74f4('0x46')]['id']){delete _0x40e4e6['body']['id'];}return db[_0x74f4('0x2a')][_0x74f4('0x48')]({'where':{'id':_0x40e4e6[_0x74f4('0x44')]['id']}})[_0x74f4('0x41')](handleEntityNotFound(_0x159281,null))['then'](saveUpdates(_0x40e4e6[_0x74f4('0x46')],null))[_0x74f4('0x41')](respondWithResult(_0x159281,null))[_0x74f4('0x42')](handleError(_0x159281,null));};exports['destroy']=function(_0x15f75c,_0xbe6cea){return db['ChatGroup']['find']({'where':{'id':_0x15f75c[_0x74f4('0x44')]['id']}})[_0x74f4('0x41')](handleEntityNotFound(_0xbe6cea,null))['then'](removeEntity(_0xbe6cea,null))[_0x74f4('0x42')](handleError(_0xbe6cea,null));};exports[_0x74f4('0x49')]=function(_0x2943e1,_0x4c8f4e){return db[_0x74f4('0x2a')]['describe']()[_0x74f4('0x41')](respondWithResult(_0x4c8f4e,null))[_0x74f4('0x42')](handleError(_0x4c8f4e,null));};exports['getUnread']=function(_0xc6f85a,_0x2efc06,_0x296345){return db[_0x74f4('0x4a')]['count']({'where':{'ChatGroupId':_0xc6f85a[_0x74f4('0x44')]['id'],'ToId':_0xc6f85a['user']['id'],'read':![]}})[_0x74f4('0x41')](function(_0x518755){return{'id':_[_0x74f4('0x4b')](_0xc6f85a[_0x74f4('0x44')]['id']),'count':_0x518755};})['then'](respondWithResult(_0x2efc06,null))['catch'](handleError(_0x2efc06,null));};exports[_0x74f4('0x4c')]=function(_0x493727,_0x118b0a,_0x3f4b51){return db[_0x74f4('0x2a')][_0x74f4('0x48')]({'where':{'id':_0x493727[_0x74f4('0x44')]['id']}})['then'](handleEntityNotFound(_0x118b0a,null))[_0x74f4('0x41')](function(_0x5c0e50){if(_0x5c0e50){return _0x5c0e50[_0x74f4('0x4c')](_0x493727[_0x74f4('0x46')][_0x74f4('0x4d')],_[_0x74f4('0x4e')](_0x493727['body'],[_0x74f4('0x4d'),'id'])||{});}})[_0x74f4('0x41')](respondWithResult(_0x118b0a,null))[_0x74f4('0x42')](handleError(_0x118b0a,null));};exports['getMembers']=function(_0xc540fc,_0x3e27fa,_0x1fdfee){var _0x5b4c60={};var _0x2cadb1={};var _0x36df51;var _0x5d5611;return db[_0x74f4('0x2a')][_0x74f4('0x4f')]({'where':{'id':_0xc540fc[_0x74f4('0x44')]['id']}})[_0x74f4('0x41')](handleEntityNotFound(_0x3e27fa,null))[_0x74f4('0x41')](function(_0x2111da){if(_0x2111da){_0x36df51=_0x2111da;_0x2cadb1[_0x74f4('0x2e')]=_['keys'](db[_0x74f4('0x50')][_0x74f4('0x2b')]);_0x2cadb1[_0x74f4('0x2f')]=_['keys'](_0xc540fc[_0x74f4('0x2f')]);_0x2cadb1['filters']=_[_0x74f4('0x32')](_0x2cadb1[_0x74f4('0x2e')],_0x2cadb1[_0x74f4('0x2f')]);_0x5b4c60['attributes']=_[_0x74f4('0x32')](_0x2cadb1[_0x74f4('0x2e')],qs[_0x74f4('0x34')](_0xc540fc[_0x74f4('0x2f')][_0x74f4('0x34')]));_0x5b4c60['attributes']=_0x5b4c60['attributes'][_0x74f4('0x35')]?_0x5b4c60[_0x74f4('0x33')]:_0x2cadb1['model'];_0x5b4c60['order']=qs['sort'](_0xc540fc[_0x74f4('0x2f')][_0x74f4('0x39')]);_0x5b4c60['where']=qs[_0x74f4('0x31')](_[_0x74f4('0x3b')](_0xc540fc[_0x74f4('0x2f')],_0x2cadb1['filters']));if(_0xc540fc[_0x74f4('0x2f')]['filter']){_0x5b4c60['where']=_[_0x74f4('0x3d')](_0x5b4c60['where'],{'$or':_[_0x74f4('0x29')](_0x5b4c60[_0x74f4('0x33')],function(_0x2515e9){var _0x173042={};_0x173042[_0x2515e9]={'$like':'%'+_0xc540fc['query'][_0x74f4('0x3c')]+'%'};return _0x173042;})});}_0x5b4c60=_[_0x74f4('0x3d')]({},_0x5b4c60,_0xc540fc[_0x74f4('0x51')]);return _0x36df51[_0x74f4('0x52')](_0x5b4c60);}})[_0x74f4('0x41')](function(_0x43cab1){if(_0x43cab1){_0x5d5611=_0x43cab1['length'];if(!_0xc540fc[_0x74f4('0x2f')][_0x74f4('0x36')](_0x74f4('0x37'))){_0x5b4c60[_0x74f4('0x23')]=qs[_0x74f4('0x23')](_0xc540fc[_0x74f4('0x2f')]['limit']);_0x5b4c60['offset']=qs[_0x74f4('0x21')](_0xc540fc[_0x74f4('0x2f')][_0x74f4('0x21')]);}return _0x36df51[_0x74f4('0x52')](_0x5b4c60);}})[_0x74f4('0x41')](function(_0x2e584e){if(_0x2e584e){return _0x2e584e?{'count':_0x5d5611,'rows':_0x2e584e}:null;}})[_0x74f4('0x41')](respondWithResult(_0x3e27fa,null))['catch'](handleError(_0x3e27fa,null));};exports[_0x74f4('0x53')]=function(_0x9f3a68,_0x245ba2,_0x3a53a0){return db[_0x74f4('0x2a')][_0x74f4('0x48')]({'where':{'id':_0x9f3a68[_0x74f4('0x44')]['id']}})[_0x74f4('0x41')](handleEntityNotFound(_0x245ba2,null))[_0x74f4('0x41')](function(_0x207f56){if(_0x207f56){return _0x207f56[_0x74f4('0x53')](_0x9f3a68[_0x74f4('0x2f')]['ids']);}})[_0x74f4('0x41')](respondWithStatusCode(_0x245ba2,null))[_0x74f4('0x42')](handleError(_0x245ba2,null));};exports['addMessage']=function(_0x101f17,_0x3d1a85,_0x535f59){if(_0x101f17['body']['id']){delete _0x101f17[_0x74f4('0x46')]['id'];}return db[_0x74f4('0x2a')][_0x74f4('0x48')]({'where':{'id':_0x101f17[_0x74f4('0x44')]['id']}})[_0x74f4('0x41')](handleEntityNotFound(_0x3d1a85,null))[_0x74f4('0x41')](function(_0x13fe94){if(_0x13fe94){_0x101f17[_0x74f4('0x46')][_0x74f4('0x54')]=_0x13fe94['id'];return db[_0x74f4('0x4a')][_0x74f4('0x45')](_0x101f17['body']);}})[_0x74f4('0x41')](respondWithResult(_0x3d1a85,null))['catch'](handleError(_0x3d1a85,null));};exports[_0x74f4('0x55')]=function(_0x29938a,_0x4b4625,_0x545ade){var _0x59a0c1={};var _0x4061ad={};var _0x348152;var _0x3454ad;return db['ChatGroup']['findOne']({'where':{'id':_0x29938a['params']['id']}})['then'](handleEntityNotFound(_0x4b4625,null))['then'](function(_0x5d7863){if(_0x5d7863){_0x348152=_0x5d7863;_0x4061ad[_0x74f4('0x2e')]=_[_0x74f4('0x30')](db[_0x74f4('0x4a')][_0x74f4('0x2b')]);_0x4061ad['query']=_[_0x74f4('0x30')](_0x29938a[_0x74f4('0x2f')]);_0x4061ad['filters']=_[_0x74f4('0x32')](_0x4061ad[_0x74f4('0x2e')],_0x4061ad['query']);_0x59a0c1[_0x74f4('0x33')]=_[_0x74f4('0x32')](_0x4061ad[_0x74f4('0x2e')],qs[_0x74f4('0x34')](_0x29938a[_0x74f4('0x2f')][_0x74f4('0x34')]));_0x59a0c1[_0x74f4('0x33')]=_0x59a0c1[_0x74f4('0x33')][_0x74f4('0x35')]?_0x59a0c1[_0x74f4('0x33')]:_0x4061ad[_0x74f4('0x2e')];_0x59a0c1['order']=qs['sort'](_0x29938a['query'][_0x74f4('0x39')]);_0x59a0c1[_0x74f4('0x3a')]=qs[_0x74f4('0x31')](_[_0x74f4('0x3b')](_0x29938a['query'],_0x4061ad[_0x74f4('0x31')]));if(_0x29938a[_0x74f4('0x2f')][_0x74f4('0x3c')]){_0x59a0c1[_0x74f4('0x3a')]=_['merge'](_0x59a0c1[_0x74f4('0x3a')],{'$or':_['map'](_0x59a0c1[_0x74f4('0x33')],function(_0x485e69){var _0x295d08={};_0x295d08[_0x485e69]={'$like':'%'+_0x29938a['query'][_0x74f4('0x3c')]+'%'};return _0x295d08;})});}if(_0x29938a['query'][_0x74f4('0x56')]){var _0x3c4abd=_0x29938a[_0x74f4('0x2f')][_0x74f4('0x56')][_0x74f4('0x57')](',');var _0x334b58={};_0x334b58[_0x3c4abd[0x0]]={'$gte':moment(_0x3c4abd[0x1])['format'](_0x74f4('0x58'))};_0x59a0c1[_0x74f4('0x3a')]=_[_0x74f4('0x3d')](_0x59a0c1['where'],_0x334b58);}_0x59a0c1=_[_0x74f4('0x3d')]({},_0x59a0c1,_0x29938a[_0x74f4('0x51')]);return _0x348152[_0x74f4('0x55')](_0x59a0c1);}})['then'](function(_0x2d2938){if(_0x2d2938){_0x3454ad=_0x2d2938[_0x74f4('0x35')];if(!_0x29938a[_0x74f4('0x2f')][_0x74f4('0x36')](_0x74f4('0x37'))){_0x59a0c1[_0x74f4('0x23')]=qs['limit'](_0x29938a[_0x74f4('0x2f')]['limit']);_0x59a0c1[_0x74f4('0x21')]=qs['offset'](_0x29938a[_0x74f4('0x2f')][_0x74f4('0x21')]);}return _0x348152[_0x74f4('0x55')](_0x59a0c1);}})[_0x74f4('0x41')](function(_0x4595b0){if(_0x4595b0){return _0x4595b0?{'count':_0x3454ad,'rows':_0x4595b0}:null;}})['then'](respondWithResult(_0x4b4625,null))['catch'](handleError(_0x4b4625,null));};
\ No newline at end of file
+var _0xf9f9=['querystring','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./chatGroup.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','save','update','then','destroy','error','stack','name','send','index','map','ChatGroup','rawAttributes','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','include','findAll','rows','catch','params','includeAll','find','create','body','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers','omit','ids','getMembers','findOne','User','removeMembers','addMessage','ChatGroupId','getMessages','$gte','format','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'];(function(_0x211f04,_0x828280){var _0x1eab0d=function(_0x36e9a3){while(--_0x36e9a3){_0x211f04['push'](_0x211f04['shift']());}};_0x1eab0d(++_0x828280);}(_0xf9f9,0x1e2));var _0x9f9f=function(_0x511b1d,_0x20f7b1){_0x511b1d=_0x511b1d-0x0;var _0x54f7cc=_0xf9f9[_0x511b1d];return _0x54f7cc;};'use strict';var emlformat=require(_0x9f9f('0x0'));var rimraf=require(_0x9f9f('0x1'));var zipdir=require(_0x9f9f('0x2'));var jsonpatch=require(_0x9f9f('0x3'));var rp=require(_0x9f9f('0x4'));var moment=require(_0x9f9f('0x5'));var BPromise=require(_0x9f9f('0x6'));var Mustache=require(_0x9f9f('0x7'));var util=require('util');var path=require(_0x9f9f('0x8'));var sox=require(_0x9f9f('0x9'));var csv=require('to-csv');var ejs=require(_0x9f9f('0xa'));var fs=require('fs');var fs_extra=require(_0x9f9f('0xb'));var _=require(_0x9f9f('0xc'));var squel=require(_0x9f9f('0xd'));var crypto=require(_0x9f9f('0xe'));var jsforce=require(_0x9f9f('0xf'));var deskjs=require(_0x9f9f('0x10'));var toCsv=require(_0x9f9f('0x11'));var querystring=require(_0x9f9f('0x12'));var Papa=require('papaparse');var Redis=require(_0x9f9f('0x13'));var authService=require(_0x9f9f('0x14'));var qs=require(_0x9f9f('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x9f9f('0x16'));var utils=require(_0x9f9f('0x17'));var config=require(_0x9f9f('0x18'));var licenseUtil=require(_0x9f9f('0x19'));var db=require(_0x9f9f('0x1a'))['db'];config[_0x9f9f('0x1b')]=_[_0x9f9f('0x1c')](config[_0x9f9f('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0x9f9f('0x1d'))(new Redis(config[_0x9f9f('0x1b')]));require(_0x9f9f('0x1e'))[_0x9f9f('0x1f')](socket);function respondWithStatusCode(_0x11aeed,_0x231ca4){_0x231ca4=_0x231ca4||0xcc;return function(_0x1ef48c){if(_0x1ef48c){return _0x11aeed[_0x9f9f('0x20')](_0x231ca4);}return _0x11aeed[_0x9f9f('0x21')](_0x231ca4)[_0x9f9f('0x22')]();};}function respondWithResult(_0x2d90f8,_0x564ad1){_0x564ad1=_0x564ad1||0xc8;return function(_0x1674ae){if(_0x1674ae){return _0x2d90f8[_0x9f9f('0x21')](_0x564ad1)[_0x9f9f('0x23')](_0x1674ae);}};}function respondWithFilteredResult(_0x2e3198,_0xf42b9a){return function(_0x593b11){if(_0x593b11){var _0x5e8243=typeof _0xf42b9a['offset']===_0x9f9f('0x24')&&typeof _0xf42b9a[_0x9f9f('0x25')]===_0x9f9f('0x24');var _0x4c8666=_0x593b11[_0x9f9f('0x26')];var _0x3b1eea=_0x5e8243?0x0:_0xf42b9a[_0x9f9f('0x27')];var _0x42a6f9=_0x5e8243?_0x593b11[_0x9f9f('0x26')]:_0xf42b9a[_0x9f9f('0x27')]+_0xf42b9a[_0x9f9f('0x25')];var _0x1f7611;if(_0x42a6f9>=_0x4c8666){_0x42a6f9=_0x4c8666;_0x1f7611=0xc8;}else{_0x1f7611=0xce;}_0x2e3198[_0x9f9f('0x21')](_0x1f7611);return _0x2e3198[_0x9f9f('0x28')](_0x9f9f('0x29'),_0x3b1eea+'-'+_0x42a6f9+'/'+_0x4c8666)[_0x9f9f('0x23')](_0x593b11);}return null;};}function patchUpdates(_0x2b2782){return function(_0x6fdccd){try{jsonpatch['apply'](_0x6fdccd,_0x2b2782,!![]);}catch(_0x571682){return BPromise['reject'](_0x571682);}return _0x6fdccd[_0x9f9f('0x2a')]();};}function saveUpdates(_0x337e10,_0x5b7e43){return function(_0x3852c6){if(_0x3852c6){return _0x3852c6[_0x9f9f('0x2b')](_0x337e10)[_0x9f9f('0x2c')](function(_0x129398){return _0x129398;});}return null;};}function removeEntity(_0x1d3308,_0x17e7e0){return function(_0x456569){if(_0x456569){return _0x456569[_0x9f9f('0x2d')]()[_0x9f9f('0x2c')](function(){_0x1d3308[_0x9f9f('0x21')](0xcc)[_0x9f9f('0x22')]();});}};}function handleEntityNotFound(_0x54fb30,_0x3f8de5){return function(_0x24cc7e){if(!_0x24cc7e){_0x54fb30[_0x9f9f('0x20')](0x194);}return _0x24cc7e;};}function handleError(_0xc8dba9,_0x1497ba){_0x1497ba=_0x1497ba||0x1f4;return function(_0x10265e){logger[_0x9f9f('0x2e')](_0x10265e[_0x9f9f('0x2f')]);if(_0x10265e[_0x9f9f('0x30')]){delete _0x10265e['name'];}_0xc8dba9['status'](_0x1497ba)[_0x9f9f('0x31')](_0x10265e);};}exports[_0x9f9f('0x32')]=function(_0x30c07b,_0xc1154f){var _0x1921e6={},_0x6c0f02={},_0xeb60d1={'count':0x0,'rows':[]};var _0x19d13b=_[_0x9f9f('0x33')](db[_0x9f9f('0x34')][_0x9f9f('0x35')],function(_0x2464d9){return{'name':_0x2464d9['fieldName'],'type':_0x2464d9['type'][_0x9f9f('0x36')]};});_0x6c0f02['model']=_[_0x9f9f('0x33')](_0x19d13b,'name');_0x6c0f02['query']=_[_0x9f9f('0x37')](_0x30c07b[_0x9f9f('0x38')]);_0x6c0f02[_0x9f9f('0x39')]=_[_0x9f9f('0x3a')](_0x6c0f02[_0x9f9f('0x3b')],_0x6c0f02[_0x9f9f('0x38')]);_0x1921e6[_0x9f9f('0x3c')]=_['intersection'](_0x6c0f02[_0x9f9f('0x3b')],qs[_0x9f9f('0x3d')](_0x30c07b[_0x9f9f('0x38')][_0x9f9f('0x3d')]));_0x1921e6['attributes']=_0x1921e6[_0x9f9f('0x3c')][_0x9f9f('0x3e')]?_0x1921e6[_0x9f9f('0x3c')]:_0x6c0f02[_0x9f9f('0x3b')];if(!_0x30c07b[_0x9f9f('0x38')][_0x9f9f('0x3f')](_0x9f9f('0x40'))){_0x1921e6[_0x9f9f('0x25')]=qs[_0x9f9f('0x25')](_0x30c07b['query'][_0x9f9f('0x25')]);_0x1921e6['offset']=qs[_0x9f9f('0x27')](_0x30c07b[_0x9f9f('0x38')][_0x9f9f('0x27')]);}_0x1921e6[_0x9f9f('0x41')]=qs[_0x9f9f('0x42')](_0x30c07b['query'][_0x9f9f('0x42')]);_0x1921e6[_0x9f9f('0x43')]=qs[_0x9f9f('0x39')](_[_0x9f9f('0x44')](_0x30c07b['query'],_0x6c0f02['filters']),_0x19d13b);if(_0x30c07b[_0x9f9f('0x38')][_0x9f9f('0x45')]){_0x1921e6[_0x9f9f('0x43')]=_[_0x9f9f('0x46')](_0x1921e6[_0x9f9f('0x43')],{'$or':_['map'](_0x19d13b,function(_0x4d9490){if(_0x4d9490[_0x9f9f('0x47')]!==_0x9f9f('0x48')){var _0x251171={};_0x251171[_0x4d9490[_0x9f9f('0x30')]]={'$like':'%'+_0x30c07b[_0x9f9f('0x38')][_0x9f9f('0x45')]+'%'};return _0x251171;}})});}_0x1921e6=_['merge']({},_0x1921e6,_0x30c07b[_0x9f9f('0x49')]);var _0x562777={'where':_0x1921e6[_0x9f9f('0x43')]};return db[_0x9f9f('0x34')]['count'](_0x562777)[_0x9f9f('0x2c')](function(_0x2a9c4e){_0xeb60d1[_0x9f9f('0x26')]=_0x2a9c4e;if(_0x30c07b[_0x9f9f('0x38')]['includeAll']){_0x1921e6[_0x9f9f('0x4a')]=[{'all':!![]}];}return db[_0x9f9f('0x34')][_0x9f9f('0x4b')](_0x1921e6);})['then'](function(_0x223050){_0xeb60d1[_0x9f9f('0x4c')]=_0x223050;return _0xeb60d1;})[_0x9f9f('0x2c')](respondWithFilteredResult(_0xc1154f,_0x1921e6))[_0x9f9f('0x4d')](handleError(_0xc1154f,null));};exports['show']=function(_0x20f22b,_0x2d0216){var _0x3c6534={'raw':!![],'where':{'id':_0x20f22b[_0x9f9f('0x4e')]['id']}},_0x27edad={};_0x27edad[_0x9f9f('0x3b')]=_[_0x9f9f('0x37')](db[_0x9f9f('0x34')][_0x9f9f('0x35')]);_0x27edad['query']=_[_0x9f9f('0x37')](_0x20f22b[_0x9f9f('0x38')]);_0x27edad[_0x9f9f('0x39')]=_[_0x9f9f('0x3a')](_0x27edad[_0x9f9f('0x3b')],_0x27edad[_0x9f9f('0x38')]);_0x3c6534['attributes']=_[_0x9f9f('0x3a')](_0x27edad[_0x9f9f('0x3b')],qs[_0x9f9f('0x3d')](_0x20f22b[_0x9f9f('0x38')][_0x9f9f('0x3d')]));_0x3c6534['attributes']=_0x3c6534[_0x9f9f('0x3c')]['length']?_0x3c6534[_0x9f9f('0x3c')]:_0x27edad[_0x9f9f('0x3b')];if(_0x20f22b['query'][_0x9f9f('0x4f')]){_0x3c6534['include']=[{'all':!![]}];}_0x3c6534=_[_0x9f9f('0x46')]({},_0x3c6534,_0x20f22b[_0x9f9f('0x49')]);return db[_0x9f9f('0x34')][_0x9f9f('0x50')](_0x3c6534)['then'](handleEntityNotFound(_0x2d0216,null))[_0x9f9f('0x2c')](respondWithResult(_0x2d0216,null))[_0x9f9f('0x4d')](handleError(_0x2d0216,null));};exports[_0x9f9f('0x51')]=function(_0x403248,_0x3a615e){return db[_0x9f9f('0x34')]['create'](_0x403248[_0x9f9f('0x52')],{})[_0x9f9f('0x2c')](respondWithResult(_0x3a615e,0xc9))[_0x9f9f('0x4d')](handleError(_0x3a615e,null));};exports['update']=function(_0x24aacc,_0x12f39a){if(_0x24aacc[_0x9f9f('0x52')]['id']){delete _0x24aacc[_0x9f9f('0x52')]['id'];}return db[_0x9f9f('0x34')][_0x9f9f('0x50')]({'where':{'id':_0x24aacc[_0x9f9f('0x4e')]['id']}})['then'](handleEntityNotFound(_0x12f39a,null))[_0x9f9f('0x2c')](saveUpdates(_0x24aacc['body'],null))[_0x9f9f('0x2c')](respondWithResult(_0x12f39a,null))[_0x9f9f('0x4d')](handleError(_0x12f39a,null));};exports[_0x9f9f('0x2d')]=function(_0x2b0e6d,_0x30b331){return db[_0x9f9f('0x34')][_0x9f9f('0x50')]({'where':{'id':_0x2b0e6d[_0x9f9f('0x4e')]['id']}})[_0x9f9f('0x2c')](handleEntityNotFound(_0x30b331,null))[_0x9f9f('0x2c')](removeEntity(_0x30b331,null))['catch'](handleError(_0x30b331,null));};exports[_0x9f9f('0x53')]=function(_0x4c2b7b,_0x590183){return db[_0x9f9f('0x34')]['describe']()[_0x9f9f('0x2c')](respondWithResult(_0x590183,null))[_0x9f9f('0x4d')](handleError(_0x590183,null));};exports[_0x9f9f('0x54')]=function(_0x5f1f22,_0x11b889,_0x83ae45){return db[_0x9f9f('0x55')][_0x9f9f('0x26')]({'where':{'ChatGroupId':_0x5f1f22[_0x9f9f('0x4e')]['id'],'ToId':_0x5f1f22[_0x9f9f('0x56')]['id'],'read':![]}})[_0x9f9f('0x2c')](function(_0x2e8401){return{'id':_[_0x9f9f('0x57')](_0x5f1f22[_0x9f9f('0x4e')]['id']),'count':_0x2e8401};})[_0x9f9f('0x2c')](respondWithResult(_0x11b889,null))[_0x9f9f('0x4d')](handleError(_0x11b889,null));};exports[_0x9f9f('0x58')]=function(_0x2d7ecb,_0x29d1e2,_0x36bf7){return db[_0x9f9f('0x34')][_0x9f9f('0x50')]({'where':{'id':_0x2d7ecb[_0x9f9f('0x4e')]['id']}})['then'](handleEntityNotFound(_0x29d1e2,null))[_0x9f9f('0x2c')](function(_0x30c6f7){if(_0x30c6f7){return _0x30c6f7[_0x9f9f('0x58')](_0x2d7ecb['body']['ids'],_[_0x9f9f('0x59')](_0x2d7ecb[_0x9f9f('0x52')],[_0x9f9f('0x5a'),'id'])||{});}})[_0x9f9f('0x2c')](respondWithResult(_0x29d1e2,null))[_0x9f9f('0x4d')](handleError(_0x29d1e2,null));};exports[_0x9f9f('0x5b')]=function(_0x5b3dac,_0x2a8eec,_0x297920){var _0x3e718a={};var _0x2e69eb={};var _0xb26e78;var _0x2c53d0;return db[_0x9f9f('0x34')][_0x9f9f('0x5c')]({'where':{'id':_0x5b3dac[_0x9f9f('0x4e')]['id']}})[_0x9f9f('0x2c')](handleEntityNotFound(_0x2a8eec,null))[_0x9f9f('0x2c')](function(_0x2409ab){if(_0x2409ab){_0xb26e78=_0x2409ab;_0x2e69eb[_0x9f9f('0x3b')]=_[_0x9f9f('0x37')](db[_0x9f9f('0x5d')][_0x9f9f('0x35')]);_0x2e69eb[_0x9f9f('0x38')]=_[_0x9f9f('0x37')](_0x5b3dac[_0x9f9f('0x38')]);_0x2e69eb[_0x9f9f('0x39')]=_[_0x9f9f('0x3a')](_0x2e69eb[_0x9f9f('0x3b')],_0x2e69eb[_0x9f9f('0x38')]);_0x3e718a[_0x9f9f('0x3c')]=_['intersection'](_0x2e69eb[_0x9f9f('0x3b')],qs[_0x9f9f('0x3d')](_0x5b3dac[_0x9f9f('0x38')][_0x9f9f('0x3d')]));_0x3e718a[_0x9f9f('0x3c')]=_0x3e718a[_0x9f9f('0x3c')][_0x9f9f('0x3e')]?_0x3e718a[_0x9f9f('0x3c')]:_0x2e69eb[_0x9f9f('0x3b')];_0x3e718a['order']=qs[_0x9f9f('0x42')](_0x5b3dac[_0x9f9f('0x38')][_0x9f9f('0x42')]);_0x3e718a[_0x9f9f('0x43')]=qs['filters'](_['pick'](_0x5b3dac[_0x9f9f('0x38')],_0x2e69eb[_0x9f9f('0x39')]));if(_0x5b3dac[_0x9f9f('0x38')][_0x9f9f('0x45')]){_0x3e718a['where']=_[_0x9f9f('0x46')](_0x3e718a[_0x9f9f('0x43')],{'$or':_[_0x9f9f('0x33')](_0x3e718a[_0x9f9f('0x3c')],function(_0x334fc5){var _0x5dab8f={};_0x5dab8f[_0x334fc5]={'$like':'%'+_0x5b3dac[_0x9f9f('0x38')][_0x9f9f('0x45')]+'%'};return _0x5dab8f;})});}_0x3e718a=_[_0x9f9f('0x46')]({},_0x3e718a,_0x5b3dac[_0x9f9f('0x49')]);return _0xb26e78['getMembers'](_0x3e718a);}})[_0x9f9f('0x2c')](function(_0x3ee787){if(_0x3ee787){_0x2c53d0=_0x3ee787[_0x9f9f('0x3e')];if(!_0x5b3dac['query'][_0x9f9f('0x3f')](_0x9f9f('0x40'))){_0x3e718a[_0x9f9f('0x25')]=qs[_0x9f9f('0x25')](_0x5b3dac['query'][_0x9f9f('0x25')]);_0x3e718a[_0x9f9f('0x27')]=qs[_0x9f9f('0x27')](_0x5b3dac[_0x9f9f('0x38')][_0x9f9f('0x27')]);}return _0xb26e78[_0x9f9f('0x5b')](_0x3e718a);}})[_0x9f9f('0x2c')](function(_0x5d55db){if(_0x5d55db){return _0x5d55db?{'count':_0x2c53d0,'rows':_0x5d55db}:null;}})['then'](respondWithResult(_0x2a8eec,null))[_0x9f9f('0x4d')](handleError(_0x2a8eec,null));};exports['removeMembers']=function(_0x4d91ef,_0xc3b5e6,_0x5ded6a){return db[_0x9f9f('0x34')][_0x9f9f('0x50')]({'where':{'id':_0x4d91ef[_0x9f9f('0x4e')]['id']}})['then'](handleEntityNotFound(_0xc3b5e6,null))[_0x9f9f('0x2c')](function(_0x51cb94){if(_0x51cb94){return _0x51cb94[_0x9f9f('0x5e')](_0x4d91ef[_0x9f9f('0x38')][_0x9f9f('0x5a')]);}})['then'](respondWithStatusCode(_0xc3b5e6,null))[_0x9f9f('0x4d')](handleError(_0xc3b5e6,null));};exports[_0x9f9f('0x5f')]=function(_0x4886b0,_0x338a74,_0x438b06){if(_0x4886b0[_0x9f9f('0x52')]['id']){delete _0x4886b0[_0x9f9f('0x52')]['id'];}return db['ChatGroup'][_0x9f9f('0x50')]({'where':{'id':_0x4886b0[_0x9f9f('0x4e')]['id']}})[_0x9f9f('0x2c')](handleEntityNotFound(_0x338a74,null))[_0x9f9f('0x2c')](function(_0x4aae64){if(_0x4aae64){_0x4886b0[_0x9f9f('0x52')][_0x9f9f('0x60')]=_0x4aae64['id'];return db[_0x9f9f('0x55')][_0x9f9f('0x51')](_0x4886b0[_0x9f9f('0x52')]);}})['then'](respondWithResult(_0x338a74,null))[_0x9f9f('0x4d')](handleError(_0x338a74,null));};exports[_0x9f9f('0x61')]=function(_0x5c1687,_0x621a33,_0x2719e2){var _0x55a064={};var _0x5be15d={};var _0x29471a;var _0x2a3af6;return db['ChatGroup'][_0x9f9f('0x5c')]({'where':{'id':_0x5c1687[_0x9f9f('0x4e')]['id']}})[_0x9f9f('0x2c')](handleEntityNotFound(_0x621a33,null))['then'](function(_0x1745b5){if(_0x1745b5){_0x29471a=_0x1745b5;_0x5be15d['model']=_[_0x9f9f('0x37')](db[_0x9f9f('0x55')][_0x9f9f('0x35')]);_0x5be15d[_0x9f9f('0x38')]=_[_0x9f9f('0x37')](_0x5c1687['query']);_0x5be15d[_0x9f9f('0x39')]=_['intersection'](_0x5be15d[_0x9f9f('0x3b')],_0x5be15d[_0x9f9f('0x38')]);_0x55a064['attributes']=_['intersection'](_0x5be15d['model'],qs[_0x9f9f('0x3d')](_0x5c1687['query'][_0x9f9f('0x3d')]));_0x55a064[_0x9f9f('0x3c')]=_0x55a064[_0x9f9f('0x3c')]['length']?_0x55a064[_0x9f9f('0x3c')]:_0x5be15d['model'];_0x55a064['order']=qs[_0x9f9f('0x42')](_0x5c1687[_0x9f9f('0x38')][_0x9f9f('0x42')]);_0x55a064['where']=qs[_0x9f9f('0x39')](_[_0x9f9f('0x44')](_0x5c1687[_0x9f9f('0x38')],_0x5be15d[_0x9f9f('0x39')]));if(_0x5c1687[_0x9f9f('0x38')]['filter']){_0x55a064[_0x9f9f('0x43')]=_[_0x9f9f('0x46')](_0x55a064[_0x9f9f('0x43')],{'$or':_[_0x9f9f('0x33')](_0x55a064[_0x9f9f('0x3c')],function(_0x5693bb){var _0x31c320={};_0x31c320[_0x5693bb]={'$like':'%'+_0x5c1687[_0x9f9f('0x38')][_0x9f9f('0x45')]+'%'};return _0x31c320;})});}if(_0x5c1687[_0x9f9f('0x38')][_0x9f9f('0x62')]){var _0x1c7751=_0x5c1687['query']['$gte']['split'](',');var _0x4fa5f5={};_0x4fa5f5[_0x1c7751[0x0]]={'$gte':moment(_0x1c7751[0x1])[_0x9f9f('0x63')]('YYYY-MM-DD\x20HH:mm:ss')};_0x55a064['where']=_[_0x9f9f('0x46')](_0x55a064[_0x9f9f('0x43')],_0x4fa5f5);}_0x55a064=_['merge']({},_0x55a064,_0x5c1687['options']);return _0x29471a[_0x9f9f('0x61')](_0x55a064);}})['then'](function(_0x4f907b){if(_0x4f907b){_0x2a3af6=_0x4f907b[_0x9f9f('0x3e')];if(!_0x5c1687[_0x9f9f('0x38')]['hasOwnProperty'](_0x9f9f('0x40'))){_0x55a064[_0x9f9f('0x25')]=qs[_0x9f9f('0x25')](_0x5c1687[_0x9f9f('0x38')][_0x9f9f('0x25')]);_0x55a064['offset']=qs[_0x9f9f('0x27')](_0x5c1687[_0x9f9f('0x38')][_0x9f9f('0x27')]);}return _0x29471a[_0x9f9f('0x61')](_0x55a064);}})['then'](function(_0x558768){if(_0x558768){return _0x558768?{'count':_0x2a3af6,'rows':_0x558768}:null;}})[_0x9f9f('0x2c')](respondWithResult(_0x621a33,null))['catch'](handleError(_0x621a33,null));};
\ No newline at end of file
index c69fa45..fc326c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd159=['../../mysqldb','ChatGroup','setMaxListeners','update','remove','emit','hook','exports','events'];(function(_0xb301d4,_0x27ed18){var _0x3b5bde=function(_0x1fbc5f){while(--_0x1fbc5f){_0xb301d4['push'](_0xb301d4['shift']());}};_0x3b5bde(++_0x27ed18);}(_0xd159,0x19d));var _0x9d15=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd159[_0x20a584];return _0x4b41a8;};'use strict';var EventEmitter=require(_0x9d15('0x0'));var ChatGroup=require(_0x9d15('0x1'))['db'][_0x9d15('0x2')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x9d15('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x9d15('0x4'),'afterDestroy':_0x9d15('0x5')};function emitEvent(_0x47f341){return function(_0x33e4f6,_0x46601a,_0x2d5ffa){ChatGroupEvents['emit'](_0x47f341+':'+_0x33e4f6['id'],_0x33e4f6);ChatGroupEvents[_0x9d15('0x6')](_0x47f341,_0x33e4f6);_0x2d5ffa(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatGroup[_0x9d15('0x7')](e,emitEvent(event));}}module[_0x9d15('0x8')]=ChatGroupEvents;
\ No newline at end of file
+var _0x133d=['setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0xd642dd,_0x769cc5){var _0x30c262=function(_0x43a1b7){while(--_0x43a1b7){_0xd642dd['push'](_0xd642dd['shift']());}};_0x30c262(++_0x769cc5);}(_0x133d,0x193));var _0xd133=function(_0x444e8b,_0x3524cc){_0x444e8b=_0x444e8b-0x0;var _0x35eb37=_0x133d[_0x444e8b];return _0x35eb37;};'use strict';var EventEmitter=require(_0xd133('0x0'));var ChatGroup=require(_0xd133('0x1'))['db']['ChatGroup'];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0xd133('0x2')](0x0);var events={'afterCreate':_0xd133('0x3'),'afterUpdate':'update','afterDestroy':_0xd133('0x4')};function emitEvent(_0x583539){return function(_0x455877,_0x837965,_0x177524){ChatGroupEvents[_0xd133('0x5')](_0x583539+':'+_0x455877['id'],_0x455877);ChatGroupEvents[_0xd133('0x5')](_0x583539,_0x455877);_0x177524(null);};}for(var e in events){if(events[_0xd133('0x6')](e)){var event=events[e];ChatGroup[_0xd133('0x7')](e,emitEvent(event));}}module[_0xd133('0x8')]=ChatGroupEvents;
\ No newline at end of file
index c89ca29..0a1abe5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x156e=['../../config/environment','exports','define','ChatGroup','lodash','../../config/logger','moment','request-promise','path','rimraf'];(function(_0x30c2ae,_0x4c98a2){var _0x1ee1cc=function(_0x165922){while(--_0x165922){_0x30c2ae['push'](_0x30c2ae['shift']());}};_0x1ee1cc(++_0x4c98a2);}(_0x156e,0x144));var _0xe156=function(_0x4f3416,_0x597da8){_0x4f3416=_0x4f3416-0x0;var _0x2160ae=_0x156e[_0x4f3416];return _0x2160ae;};'use strict';var _=require(_0xe156('0x0'));var util=require('util');var logger=require(_0xe156('0x1'))('api');var moment=require(_0xe156('0x2'));var BPromise=require('bluebird');var rp=require(_0xe156('0x3'));var fs=require('fs');var path=require(_0xe156('0x4'));var rimraf=require(_0xe156('0x5'));var config=require(_0xe156('0x6'));var attributes=require('./chatGroup.attributes');module[_0xe156('0x7')]=function(_0xd2ee2,_0x295a72){return _0xd2ee2[_0xe156('0x8')](_0xe156('0x9'),attributes,{'tableName':'chat_groups','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb583=['../../config/environment','./chatGroup.attributes','exports','define','ChatGroup','chat_groups','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x4ea45c,_0x30f6ac){var _0x5b5a1c=function(_0x20f5d6){while(--_0x20f5d6){_0x4ea45c['push'](_0x4ea45c['shift']());}};_0x5b5a1c(++_0x30f6ac);}(_0xb583,0x95));var _0x3b58=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xb583[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0x3b58('0x0'));var util=require('util');var logger=require(_0x3b58('0x1'))(_0x3b58('0x2'));var moment=require(_0x3b58('0x3'));var BPromise=require(_0x3b58('0x4'));var rp=require(_0x3b58('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3b58('0x6'));var config=require(_0x3b58('0x7'));var attributes=require(_0x3b58('0x8'));module[_0x3b58('0x9')]=function(_0x3acfdb,_0x32042b){return _0x3acfdb[_0x3b58('0xa')](_0x3b58('0xb'),attributes,{'tableName':_0x3b58('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ca77143..e30e2e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ade=['./chatGroup.socket','register','request','then','info','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','error','code','ChatGroup,\x20%s,\x20%s','message','result','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost'];(function(_0x272d86,_0x150473){var _0x490717=function(_0x369744){while(--_0x369744){_0x272d86['push'](_0x272d86['shift']());}};_0x490717(++_0x150473);}(_0x9ade,0x107));var _0xe9ad=function(_0x1fd563,_0x196466){_0x1fd563=_0x1fd563-0x0;var _0x4673f3=_0x9ade[_0x1fd563];return _0x4673f3;};'use strict';var _=require(_0xe9ad('0x0'));var util=require(_0xe9ad('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xe9ad('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe9ad('0x3'))['db'];var utils=require(_0xe9ad('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xe9ad('0x5'));var jayson=require(_0xe9ad('0x6'));var client=jayson[_0xe9ad('0x7')][_0xe9ad('0x8')]({'port':0x232a});config[_0xe9ad('0x9')]=_[_0xe9ad('0xa')](config[_0xe9ad('0x9')],{'host':_0xe9ad('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe9ad('0x9')]));require(_0xe9ad('0xc'))[_0xe9ad('0xd')](socket);function respondWithRpcPromise(_0x3b353f,_0x268c04,_0x25927c){return new BPromise(function(_0x16ef20,_0x2e8e3e){return client[_0xe9ad('0xe')](_0x3b353f,_0x25927c)[_0xe9ad('0xf')](function(_0x1aec2b){logger[_0xe9ad('0x10')]('ChatGroup,\x20%s,\x20%s',_0x268c04,_0xe9ad('0x11'));logger[_0xe9ad('0x12')](_0xe9ad('0x13'),_0x268c04,_0xe9ad('0x11'),JSON['stringify'](_0x1aec2b));if(_0x1aec2b[_0xe9ad('0x14')]){if(_0x1aec2b[_0xe9ad('0x14')][_0xe9ad('0x15')]===0x1f4){logger[_0xe9ad('0x14')]('ChatGroup,\x20%s,\x20%s',_0x268c04,_0x1aec2b[_0xe9ad('0x14')]['message']);return _0x2e8e3e(_0x1aec2b[_0xe9ad('0x14')]['message']);}logger[_0xe9ad('0x14')](_0xe9ad('0x16'),_0x268c04,_0x1aec2b[_0xe9ad('0x14')][_0xe9ad('0x17')]);return _0x16ef20(_0x1aec2b['error'][_0xe9ad('0x17')]);}else{logger[_0xe9ad('0x10')](_0xe9ad('0x16'),_0x268c04,_0xe9ad('0x11'));_0x16ef20(_0x1aec2b[_0xe9ad('0x18')][_0xe9ad('0x17')]);}})['catch'](function(_0x3939dd){logger[_0xe9ad('0x14')](_0xe9ad('0x16'),_0x268c04,_0x3939dd);_0x2e8e3e(_0x3939dd);});});}
\ No newline at end of file
+var _0xf29c=['request','then','info','request\x20sent','debug','error','code','ChatGroup,\x20%s,\x20%s','message','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','./chatGroup.socket','register'];(function(_0x4d21ff,_0x19d202){var _0x22b554=function(_0x4473c5){while(--_0x4473c5){_0x4d21ff['push'](_0x4d21ff['shift']());}};_0x22b554(++_0x19d202);}(_0xf29c,0xc7));var _0xcf29=function(_0xbc3fa5,_0x32c376){_0xbc3fa5=_0xbc3fa5-0x0;var _0x16be6e=_0xf29c[_0xbc3fa5];return _0x16be6e;};'use strict';var _=require('lodash');var util=require(_0xcf29('0x0'));var moment=require(_0xcf29('0x1'));var BPromise=require(_0xcf29('0x2'));var rs=require(_0xcf29('0x3'));var fs=require('fs');var Redis=require(_0xcf29('0x4'));var db=require(_0xcf29('0x5'))['db'];var utils=require(_0xcf29('0x6'));var logger=require(_0xcf29('0x7'))(_0xcf29('0x8'));var config=require(_0xcf29('0x9'));var jayson=require(_0xcf29('0xa'));var client=jayson[_0xcf29('0xb')][_0xcf29('0xc')]({'port':0x232a});config[_0xcf29('0xd')]=_[_0xcf29('0xe')](config[_0xcf29('0xd')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xcf29('0xd')]));require(_0xcf29('0xf'))[_0xcf29('0x10')](socket);function respondWithRpcPromise(_0x18bfa3,_0x4268c6,_0x2f3bd5){return new BPromise(function(_0x2ed7fa,_0x38b122){return client[_0xcf29('0x11')](_0x18bfa3,_0x2f3bd5)[_0xcf29('0x12')](function(_0xb13a72){logger[_0xcf29('0x13')]('ChatGroup,\x20%s,\x20%s',_0x4268c6,_0xcf29('0x14'));logger[_0xcf29('0x15')]('ChatGroup,\x20%s,\x20%s,\x20%s',_0x4268c6,_0xcf29('0x14'),JSON['stringify'](_0xb13a72));if(_0xb13a72[_0xcf29('0x16')]){if(_0xb13a72[_0xcf29('0x16')][_0xcf29('0x17')]===0x1f4){logger[_0xcf29('0x16')](_0xcf29('0x18'),_0x4268c6,_0xb13a72[_0xcf29('0x16')][_0xcf29('0x19')]);return _0x38b122(_0xb13a72[_0xcf29('0x16')][_0xcf29('0x19')]);}logger['error'](_0xcf29('0x18'),_0x4268c6,_0xb13a72['error'][_0xcf29('0x19')]);return _0x2ed7fa(_0xb13a72['error'][_0xcf29('0x19')]);}else{logger['info'](_0xcf29('0x18'),_0x4268c6,'request\x20sent');_0x2ed7fa(_0xb13a72[_0xcf29('0x1a')][_0xcf29('0x19')]);}})['catch'](function(_0xe2b5b1){logger[_0xcf29('0x16')]('ChatGroup,\x20%s,\x20%s',_0x4268c6,_0xe2b5b1);_0x38b122(_0xe2b5b1);});});}
\ No newline at end of file
index 5a58e24..25043fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad89=['length','./chatGroup.events','save','update','emit','removeListener','register'];(function(_0x4503e3,_0x1533fc){var _0x1bb659=function(_0x16a555){while(--_0x16a555){_0x4503e3['push'](_0x4503e3['shift']());}};_0x1bb659(++_0x1533fc);}(_0xad89,0x9b));var _0x9ad8=function(_0x56fd29,_0x17790b){_0x56fd29=_0x56fd29-0x0;var _0x2a0bf7=_0xad89[_0x56fd29];return _0x2a0bf7;};'use strict';var ChatGroupEvents=require(_0x9ad8('0x0'));var events=[_0x9ad8('0x1'),'remove',_0x9ad8('0x2')];function createListener(_0x3111d9,_0xfe7830){return function(_0x1d60dc){_0xfe7830[_0x9ad8('0x3')](_0x3111d9,_0x1d60dc);};}function removeListener(_0x5a628c,_0x1ffe59){return function(){ChatGroupEvents[_0x9ad8('0x4')](_0x5a628c,_0x1ffe59);};}exports[_0x9ad8('0x5')]=function(_0x164bbd){for(var _0x4b3917=0x0,_0x19de26=events[_0x9ad8('0x6')];_0x4b3917<_0x19de26;_0x4b3917++){var _0x738734=events[_0x4b3917];var _0x296985=createListener('chatGroup:'+_0x738734,_0x164bbd);ChatGroupEvents['on'](_0x738734,_0x296985);}};
\ No newline at end of file
+var _0x0fbd=['chatGroup:','./chatGroup.events','save','remove','emit','removeListener','length'];(function(_0x54a9e3,_0x4a3813){var _0x247cce=function(_0x50aa49){while(--_0x50aa49){_0x54a9e3['push'](_0x54a9e3['shift']());}};_0x247cce(++_0x4a3813);}(_0x0fbd,0x94));var _0xd0fb=function(_0x5ef449,_0xf72961){_0x5ef449=_0x5ef449-0x0;var _0x17a45f=_0x0fbd[_0x5ef449];return _0x17a45f;};'use strict';var ChatGroupEvents=require(_0xd0fb('0x0'));var events=[_0xd0fb('0x1'),_0xd0fb('0x2'),'update'];function createListener(_0x1f7468,_0x27d68a){return function(_0x5a0d43){_0x27d68a[_0xd0fb('0x3')](_0x1f7468,_0x5a0d43);};}function removeListener(_0x190125,_0x1745e8){return function(){ChatGroupEvents[_0xd0fb('0x4')](_0x190125,_0x1745e8);};}exports['register']=function(_0xc19662){for(var _0x504712=0x0,_0x224899=events[_0xd0fb('0x5')];_0x504712<_0x224899;_0x504712++){var _0x255f3b=events[_0x504712];var _0x28f4a2=createListener(_0xd0fb('0x6')+_0x255f3b,_0xc19662);ChatGroupEvents['on'](_0x255f3b,_0x28f4a2);}};
\ No newline at end of file
index f1c67ca..d0bcca8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe929=['put','update','delete','destroy','removeMembers','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatGroup.controller','get','isAuthenticated','/describe','describe','/:id','/:id/unread','/:id/members','getMembers','/:id/messages','getMessages','post','create','addMembers','addMessage'];(function(_0x767b78,_0x16270b){var _0x5daeed=function(_0x4b0739){while(--_0x4b0739){_0x767b78['push'](_0x767b78['shift']());}};_0x5daeed(++_0x16270b);}(_0xe929,0x1d6));var _0x9e92=function(_0xcda377,_0x1e2678){_0xcda377=_0xcda377-0x0;var _0x1c024f=_0xe929[_0xcda377];return _0x1c024f;};'use strict';var multer=require(_0x9e92('0x0'));var util=require('util');var path=require(_0x9e92('0x1'));var timeout=require(_0x9e92('0x2'));var express=require(_0x9e92('0x3'));var router=express['Router']();var fs_extra=require(_0x9e92('0x4'));var auth=require(_0x9e92('0x5'));var interaction=require(_0x9e92('0x6'));var config=require(_0x9e92('0x7'));var controller=require(_0x9e92('0x8'));router[_0x9e92('0x9')]('/',auth[_0x9e92('0xa')](),controller['index']);router[_0x9e92('0x9')](_0x9e92('0xb'),auth['isAuthenticated'](),controller[_0x9e92('0xc')]);router[_0x9e92('0x9')](_0x9e92('0xd'),auth[_0x9e92('0xa')](),controller['show']);router[_0x9e92('0x9')](_0x9e92('0xe'),auth[_0x9e92('0xa')](),controller['getUnread']);router[_0x9e92('0x9')](_0x9e92('0xf'),auth['isAuthenticated'](),controller[_0x9e92('0x10')]);router['get'](_0x9e92('0x11'),auth[_0x9e92('0xa')](),controller[_0x9e92('0x12')]);router[_0x9e92('0x13')]('/',auth[_0x9e92('0xa')](),controller[_0x9e92('0x14')]);router['post']('/:id/members',auth[_0x9e92('0xa')](),controller[_0x9e92('0x15')]);router[_0x9e92('0x13')](_0x9e92('0x11'),auth[_0x9e92('0xa')](),controller[_0x9e92('0x16')]);router[_0x9e92('0x17')](_0x9e92('0xd'),auth[_0x9e92('0xa')](),controller[_0x9e92('0x18')]);router[_0x9e92('0x19')](_0x9e92('0xd'),auth[_0x9e92('0xa')](),controller[_0x9e92('0x1a')]);router[_0x9e92('0x19')](_0x9e92('0xf'),auth[_0x9e92('0xa')](),controller[_0x9e92('0x1b')]);module[_0x9e92('0x1c')]=router;
\ No newline at end of file
+var _0x118d=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/unread','/:id/members','/:id/messages','getMessages','post','create','addMembers','put','delete','removeMembers'];(function(_0x500c00,_0x2d6ca9){var _0x2ce95f=function(_0x268596){while(--_0x268596){_0x500c00['push'](_0x500c00['shift']());}};_0x2ce95f(++_0x2d6ca9);}(_0x118d,0xfd));var _0xd118=function(_0x2dba4b,_0x157663){_0x2dba4b=_0x2dba4b-0x0;var _0x98a485=_0x118d[_0x2dba4b];return _0x98a485;};'use strict';var multer=require(_0xd118('0x0'));var util=require(_0xd118('0x1'));var path=require(_0xd118('0x2'));var timeout=require(_0xd118('0x3'));var express=require(_0xd118('0x4'));var router=express[_0xd118('0x5')]();var fs_extra=require(_0xd118('0x6'));var auth=require(_0xd118('0x7'));var interaction=require(_0xd118('0x8'));var config=require(_0xd118('0x9'));var controller=require('./chatGroup.controller');router[_0xd118('0xa')]('/',auth['isAuthenticated'](),controller[_0xd118('0xb')]);router[_0xd118('0xa')](_0xd118('0xc'),auth[_0xd118('0xd')](),controller[_0xd118('0xe')]);router['get'](_0xd118('0xf'),auth[_0xd118('0xd')](),controller[_0xd118('0x10')]);router[_0xd118('0xa')](_0xd118('0x11'),auth[_0xd118('0xd')](),controller['getUnread']);router[_0xd118('0xa')](_0xd118('0x12'),auth[_0xd118('0xd')](),controller['getMembers']);router[_0xd118('0xa')](_0xd118('0x13'),auth[_0xd118('0xd')](),controller[_0xd118('0x14')]);router[_0xd118('0x15')]('/',auth[_0xd118('0xd')](),controller[_0xd118('0x16')]);router[_0xd118('0x15')](_0xd118('0x12'),auth[_0xd118('0xd')](),controller[_0xd118('0x17')]);router['post'](_0xd118('0x13'),auth[_0xd118('0xd')](),controller['addMessage']);router[_0xd118('0x18')](_0xd118('0xf'),auth[_0xd118('0xd')](),controller['update']);router[_0xd118('0x19')]('/:id',auth[_0xd118('0xd')](),controller['destroy']);router['delete'](_0xd118('0x12'),auth[_0xd118('0xd')](),controller[_0xd118('0x1a')]);module[_0xd118('0x1b')]=router;
\ No newline at end of file
index c5fe4be..56d64ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefe3=['DATE','STRING','long','out','BOOLEAN','sequelize','ENUM','star','thumb','TEXT'];(function(_0x316159,_0x257f7e){var _0x45d577=function(_0xd896a){while(--_0xd896a){_0x316159['push'](_0x316159['shift']());}};_0x45d577(++_0x257f7e);}(_0xefe3,0xf5));var _0x3efe=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xefe3[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x3efe('0x0'));module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize[_0x3efe('0x1')](_0x3efe('0x2'),_0x3efe('0x3')),'defaultValue':_0x3efe('0x2')},'ratingMessage':{'type':Sequelize['TEXT']},'pathTranscript':{'type':Sequelize[_0x3efe('0x4')]},'mailTranscript':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x3efe('0x5')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x3efe('0x6')]},'thirdDisposition':{'type':Sequelize[_0x3efe('0x6')]},'note':{'type':Sequelize[_0x3efe('0x6')]},'browserName':{'type':Sequelize[_0x3efe('0x6')]},'browserVersion':{'type':Sequelize[_0x3efe('0x6')]},'osName':{'type':Sequelize[_0x3efe('0x6')]},'osVersion':{'type':Sequelize['STRING']},'deviceModel':{'type':Sequelize[_0x3efe('0x6')]},'deviceVendor':{'type':Sequelize['STRING']},'deviceType':{'type':Sequelize[_0x3efe('0x6')]},'referer':{'type':Sequelize[_0x3efe('0x4')]},'customerIp':{'type':Sequelize[_0x3efe('0x6')]},'formData':{'type':Sequelize[_0x3efe('0x4')](_0x3efe('0x7'))},'read1stAt':{'type':Sequelize[_0x3efe('0x5')]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x3efe('0x8')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x3efe('0x6')]},'customerPort':{'type':Sequelize[_0x3efe('0x6')]},'vidaooSessionId':{'type':Sequelize[_0x3efe('0x4')]},'autoreplyExecuted':{'type':Sequelize[_0x3efe('0x9')],'defaultValue':![]}};
\ No newline at end of file
+var _0x215d=['thumb','TEXT','DATE','STRING','sequelize','BOOLEAN','INTEGER','ENUM','star'];(function(_0x1460ab,_0x74d06e){var _0x1eeb5c=function(_0x28de38){while(--_0x28de38){_0x1460ab['push'](_0x1460ab['shift']());}};_0x1eeb5c(++_0x74d06e);}(_0x215d,0x187));var _0xd215=function(_0x5d89d4,_0x405d88){_0x5d89d4=_0x5d89d4-0x0;var _0x2419fb=_0x215d[_0x5d89d4];return _0x2419fb;};'use strict';var Sequelize=require(_0xd215('0x0'));module['exports']={'closed':{'type':Sequelize[_0xd215('0x1')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0xd215('0x2')]},'ratingType':{'type':Sequelize[_0xd215('0x3')](_0xd215('0x4'),_0xd215('0x5')),'defaultValue':_0xd215('0x4')},'ratingMessage':{'type':Sequelize['TEXT']},'pathTranscript':{'type':Sequelize[_0xd215('0x6')]},'mailTranscript':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0xd215('0x7')]},'disposition':{'type':Sequelize[_0xd215('0x8')]},'secondDisposition':{'type':Sequelize[_0xd215('0x8')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xd215('0x8')]},'browserName':{'type':Sequelize['STRING']},'browserVersion':{'type':Sequelize[_0xd215('0x8')]},'osName':{'type':Sequelize[_0xd215('0x8')]},'osVersion':{'type':Sequelize[_0xd215('0x8')]},'deviceModel':{'type':Sequelize['STRING']},'deviceVendor':{'type':Sequelize[_0xd215('0x8')]},'deviceType':{'type':Sequelize[_0xd215('0x8')]},'referer':{'type':Sequelize[_0xd215('0x6')]},'customerIp':{'type':Sequelize[_0xd215('0x8')]},'formData':{'type':Sequelize[_0xd215('0x6')]('long')},'read1stAt':{'type':Sequelize[_0xd215('0x7')]},'lastMsgAt':{'type':Sequelize[_0xd215('0x7')]},'lastMsgDirection':{'type':Sequelize[_0xd215('0x3')]('in','out'),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0xd215('0x8')]},'customerPort':{'type':Sequelize[_0xd215('0x8')]},'vidaooSessionId':{'type':Sequelize[_0xd215('0x6')]},'autoreplyExecuted':{'type':Sequelize[_0xd215('0x1')],'defaultValue':![]}};
\ No newline at end of file
index 3b3ce0a..d5b515f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fc2=['result','catch','sendStatus','end','status','json','offset','undefined','count','Content-Range','apply','reject','save','update','destroy','stack','name','send','render','merge','body','contact','agent','interaction','account','map','fullname','TagIds','Tags','split','forEach','push','ChatInteraction','rawAttributes','type','key','query','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','filters','select','field','color','from','tools_tags','u.id','u.fullname','ui.ChatInteractionId','left_join','users','u.id\x20=\x20ui.UserId','chat_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','chat_websites','a.id\x20=\x20i.ChatWebsiteId','me.ChatInteractionId\x20=\x20i.id','chat_interaction_has_tags','it.ChatInteractionId\x20=\x20i.id','search','parseSearch','sqlOperator','conditions','find','unreadMessages','`\x20=\x200','having','Contact','operator','$substring','value','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','keys','some','compact','isEmpty','i.ChatWebsiteId\x20IN\x20?','concat','createdAt','$gte','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','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?','group','i.id','QueryTypes','SELECT','DESC','t.id\x20IN\x20?','ChatWebsiteId','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','role','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','sequelize','toString','keyBy','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','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','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?','groupBy','ChatInteractionId','all','rows','params','includeAll','options','create','describe','createVidaooSession','findOne','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','vidaooMetadata','email','POST','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','metadata','Sequelize','Error\x20in\x20conversion\x20vidaooMetadata','ValidationError','Error\x20in\x20Vidaoo\x20configuration','join_url','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandonInteraction,\x20%s,\x20%s,\x20%s','abandon','entity\x20not\x20found','Interaction\x20already\x20assigned','closed','disposition','attachmentUpload','file','originalname','filename','mimetype','Attachment','Unauthorized','ChatOfflineMessageId','root','server/files/attachments/','join','offline-chat/','basename','download','mailTranscript','server/files/chat/upload/','format','transcript-%s.txt','pathTranscript','Messages','User','ChatWebsite','%s%d','agentAlias','System','customer','website_alias','alias','agent_fullname','MM/DD/YYYY\x20HH:mm:ss','secret','appendFileSync','MailAccount','MailServerOut','Smtp','service','host','port','secure','authentication','auth','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','ids','omit','pick','YYYY-MM-DD\x20HH:mm:ss','include','findAll','getMyMessages','includeAgent','addTags','setTags','spread','Tag','removeTags','unix','server','files','attachments','transcript-%d-%s.zip','firstName','lastName','direction','Account','Owner','mkdirSync','N.A.','closedAt','customerIp','customerPort','existsSync','createWriteStream','out','renderFile','downloadInteraction.ejs','transcript-','.pdf','Chat','log','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','request','then','info','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatInteraction,\x20%s,\x20%s','message'];(function(_0x3a3b8a,_0xad9999){var _0x3db2ee=function(_0x3448d4){while(--_0x3448d4){_0x3a3b8a['push'](_0x3a3b8a['shift']());}};_0x3db2ee(++_0xad9999);}(_0x4fc2,0x111));var _0x24fc=function(_0x4f0456,_0x795c81){_0x4f0456=_0x4f0456-0x0;var _0x52caea=_0x4fc2[_0x4f0456];return _0x52caea;};'use strict';var emlformat=require(_0x24fc('0x0'));var rimraf=require(_0x24fc('0x1'));var zipdir=require(_0x24fc('0x2'));var jsonpatch=require(_0x24fc('0x3'));var rp=require('request-promise');var moment=require(_0x24fc('0x4'));var BPromise=require(_0x24fc('0x5'));var Mustache=require(_0x24fc('0x6'));var util=require('util');var path=require(_0x24fc('0x7'));var sox=require(_0x24fc('0x8'));var csv=require('to-csv');var ejs=require(_0x24fc('0x9'));var fs=require('fs');var fs_extra=require(_0x24fc('0xa'));var _=require('lodash');var squel=require(_0x24fc('0xb'));var crypto=require(_0x24fc('0xc'));var jsforce=require(_0x24fc('0xd'));var deskjs=require(_0x24fc('0xe'));var toCsv=require(_0x24fc('0xf'));var querystring=require(_0x24fc('0x10'));var Papa=require('papaparse');var Redis=require(_0x24fc('0x11'));var authService=require(_0x24fc('0x12'));var qs=require(_0x24fc('0x13'));var as=require(_0x24fc('0x14'));var pdf=require(_0x24fc('0x15'));var hardwareService=require(_0x24fc('0x16'));var logger=require(_0x24fc('0x17'))(_0x24fc('0x18'));var utils=require('../../config/utils');var config=require(_0x24fc('0x19'));var licenseUtil=require(_0x24fc('0x1a'));var db=require('../../mysqldb')['db'];config[_0x24fc('0x1b')]=_[_0x24fc('0x1c')](config[_0x24fc('0x1b')],{'host':_0x24fc('0x1d'),'port':0x18eb});var socket=require(_0x24fc('0x1e'))(new Redis(config[_0x24fc('0x1b')]));require('./chatInteraction.socket')[_0x24fc('0x1f')](socket);var jayson=require(_0x24fc('0x20'));var client=jayson[_0x24fc('0x21')][_0x24fc('0x22')]({'port':0x232b});var client9004=jayson['client'][_0x24fc('0x22')]({'port':0x232c});function respondWithRpcPromise(_0x588543,_0x4af098,_0x3385c7,_0x218fb6){return new BPromise(function(_0x41c593,_0x25cb40){var _0x52a884=_0x218fb6||client;return _0x52a884[_0x24fc('0x23')](_0x588543,_0x3385c7)[_0x24fc('0x24')](function(_0x6cfa0a){logger[_0x24fc('0x25')]('ChatInteraction,\x20%s,\x20%s',_0x4af098,_0x24fc('0x26'));logger[_0x24fc('0x27')](_0x24fc('0x28'),_0x4af098,'request\x20sent',JSON[_0x24fc('0x29')](_0x6cfa0a));if(_0x6cfa0a[_0x24fc('0x2a')]){if(_0x6cfa0a[_0x24fc('0x2a')][_0x24fc('0x2b')]===0x1f4){logger['error'](_0x24fc('0x2c'),_0x4af098,_0x6cfa0a['error'][_0x24fc('0x2d')]);return _0x25cb40(_0x6cfa0a['error'][_0x24fc('0x2d')]);}logger[_0x24fc('0x2a')](_0x24fc('0x2c'),_0x4af098,_0x6cfa0a['error'][_0x24fc('0x2d')]);return _0x41c593(_0x6cfa0a['error'][_0x24fc('0x2d')]);}else{logger[_0x24fc('0x25')](_0x24fc('0x2c'),_0x4af098,_0x24fc('0x26'));_0x41c593(_0x6cfa0a[_0x24fc('0x2e')][_0x24fc('0x2d')]);}})[_0x24fc('0x2f')](function(_0x20192b){logger[_0x24fc('0x2a')](_0x24fc('0x2c'),_0x4af098,_0x20192b);_0x25cb40(_0x20192b);});});}function respondWithStatusCode(_0x568441,_0x11c913){_0x11c913=_0x11c913||0xcc;return function(_0x16f27f){if(_0x16f27f){return _0x568441[_0x24fc('0x30')](_0x11c913);}return _0x568441['status'](_0x11c913)[_0x24fc('0x31')]();};}function respondWithResult(_0x3d1ec8,_0x35f9f9){_0x35f9f9=_0x35f9f9||0xc8;return function(_0x290f84){if(_0x290f84){return _0x3d1ec8[_0x24fc('0x32')](_0x35f9f9)[_0x24fc('0x33')](_0x290f84);}};}function respondWithFilteredResult(_0x5ac1f2,_0x240ae7){return function(_0x29a461){if(_0x29a461){var _0x3c99ed=typeof _0x240ae7[_0x24fc('0x34')]===_0x24fc('0x35')&&typeof _0x240ae7['limit']==='undefined';var _0x4e6f73=_0x29a461[_0x24fc('0x36')];var _0x574ba3=_0x3c99ed?0x0:_0x240ae7[_0x24fc('0x34')];var _0x3e6389=_0x3c99ed?_0x29a461[_0x24fc('0x36')]:_0x240ae7[_0x24fc('0x34')]+_0x240ae7['limit'];var _0x66eec0;if(_0x3e6389>=_0x4e6f73){_0x3e6389=_0x4e6f73;_0x66eec0=0xc8;}else{_0x66eec0=0xce;}_0x5ac1f2[_0x24fc('0x32')](_0x66eec0);return _0x5ac1f2['set'](_0x24fc('0x37'),_0x574ba3+'-'+_0x3e6389+'/'+_0x4e6f73)[_0x24fc('0x33')](_0x29a461);}return null;};}function patchUpdates(_0x4d756f){return function(_0x48c62a){try{jsonpatch[_0x24fc('0x38')](_0x48c62a,_0x4d756f,!![]);}catch(_0x56eae7){return BPromise[_0x24fc('0x39')](_0x56eae7);}return _0x48c62a[_0x24fc('0x3a')]();};}function saveUpdates(_0x5491b0,_0x2ae896){return function(_0x33bbf2){if(_0x33bbf2){return _0x33bbf2[_0x24fc('0x3b')](_0x5491b0)[_0x24fc('0x24')](function(_0x1c5874){return _0x1c5874;});}return null;};}function removeEntity(_0x1e205d,_0x3b3932){return function(_0x2a209d){if(_0x2a209d){return _0x2a209d[_0x24fc('0x3c')]()['then'](function(){_0x1e205d[_0x24fc('0x32')](0xcc)[_0x24fc('0x31')]();});}};}function handleEntityNotFound(_0x2fbe30,_0x316aa2){return function(_0x242bd5){if(!_0x242bd5){_0x2fbe30['sendStatus'](0x194);}return _0x242bd5;};}function handleError(_0x56a9bd,_0xd52d10){_0xd52d10=_0xd52d10||0x1f4;return function(_0x5d48fe){logger[_0x24fc('0x2a')](_0x5d48fe[_0x24fc('0x3d')]);if(_0x5d48fe[_0x24fc('0x3e')]){delete _0x5d48fe[_0x24fc('0x3e')];}_0x56a9bd['status'](_0xd52d10)[_0x24fc('0x3f')](_0x5d48fe);};}function getMustacheRender(_0x4f4ec8,_0x65771d){return Mustache[_0x24fc('0x40')](_0x4f4ec8,_[_0x24fc('0x41')](_0x65771d[_0x24fc('0x42')],{'contact':_0x65771d[_0x24fc('0x43')],'message':_0x65771d['message'],'agent':_0x65771d[_0x24fc('0x44')],'interaction':_0x65771d[_0x24fc('0x45')],'account':_0x65771d[_0x24fc('0x46')]}))||'';}function getInteractionUsers(_0x22a75c,_0x5ceae2){return new BPromise(function(_0x172923,_0x2f0bd9){try{if(_0x5ceae2[_0x22a75c['id']]){_0x22a75c['Users']=_[_0x24fc('0x47')](_0x5ceae2[_0x22a75c['id']],function(_0x52df2e){return{'id':_0x52df2e['id'],'fullname':_0x52df2e[_0x24fc('0x48')]};});}}catch(_0x2fd30d){_0x2f0bd9(_0x2fd30d);}_0x172923(_0x22a75c);});}function getInteractionTags(_0x3a15ab,_0x1e045a){return new BPromise(function(_0x431189,_0x278b18){try{if(_0x3a15ab[_0x24fc('0x49')]){_0x3a15ab[_0x24fc('0x4a')]=[];_0x3a15ab['TagIds'][_0x24fc('0x4b')](',')[_0x24fc('0x4c')](function(_0x32f72c){_0x3a15ab['Tags'][_0x24fc('0x4d')](_0x1e045a[_0x32f72c]);});}delete _0x3a15ab[_0x24fc('0x49')];}catch(_0x4ae4a7){_0x278b18(_0x4ae4a7);}_0x431189(_0x3a15ab);});}function updateChatInteraction(_0x2c4a6c,_0x22f30b,_0x2c598c){return new BPromise(function(_0x5e4e9b,_0x31ddd0){return getInteractionUsers(_0x2c4a6c,_0x2c598c)[_0x24fc('0x24')](function(_0x585e48){return getInteractionTags(_0x585e48,_0x22f30b);})[_0x24fc('0x24')](function(_0x169982){_0x5e4e9b(_0x169982);})[_0x24fc('0x2f')](function(_0x2a0ac4){_0x31ddd0(_0x2a0ac4);});});}exports['index']=function(_0x2eecaf,_0x9bc56a){var _0x3ce7b3={},_0x7b38fa={},_0xbcbcfa={'count':0x0,'rows':[]};var _0x58a950=_[_0x24fc('0x47')](db[_0x24fc('0x4e')][_0x24fc('0x4f')],function(_0x3c6ffb){return{'name':_0x3c6ffb['fieldName'],'type':_0x3c6ffb[_0x24fc('0x50')][_0x24fc('0x51')]};});_0x7b38fa['model']=_['map'](_0x58a950,_0x24fc('0x3e'));_0x7b38fa['query']=_['keys'](_0x2eecaf[_0x24fc('0x52')]);_0x7b38fa['filters']=_[_0x24fc('0x53')](_0x7b38fa[_0x24fc('0x54')],_0x7b38fa[_0x24fc('0x52')]);_0x3ce7b3['attributes']=_[_0x24fc('0x53')](_0x7b38fa[_0x24fc('0x54')],qs[_0x24fc('0x55')](_0x2eecaf[_0x24fc('0x52')][_0x24fc('0x55')]));_0x3ce7b3[_0x24fc('0x56')]=_0x3ce7b3[_0x24fc('0x56')][_0x24fc('0x57')]?_0x3ce7b3['attributes']:_0x7b38fa['model'];if(!_0x2eecaf[_0x24fc('0x52')][_0x24fc('0x58')](_0x24fc('0x59'))){_0x3ce7b3['limit']=qs['limit'](_0x2eecaf[_0x24fc('0x52')][_0x24fc('0x5a')]);_0x3ce7b3[_0x24fc('0x34')]=qs[_0x24fc('0x34')](_0x2eecaf[_0x24fc('0x52')][_0x24fc('0x34')]);}_0x3ce7b3[_0x24fc('0x5b')]=qs[_0x24fc('0x5c')](_0x2eecaf[_0x24fc('0x52')][_0x24fc('0x5c')]);_0x3ce7b3[_0x24fc('0x5d')]=qs[_0x24fc('0x5e')](_['pick'](_0x2eecaf[_0x24fc('0x52')],_0x7b38fa[_0x24fc('0x5e')]),_0x58a950);var _0x32a466=[];var _0xb0fc00=squel[_0x24fc('0x5f')]()['field']('id')[_0x24fc('0x60')]('name')[_0x24fc('0x60')](_0x24fc('0x61'))[_0x24fc('0x62')](_0x24fc('0x63'));var _0x40f42b=squel[_0x24fc('0x5f')]()['field'](_0x24fc('0x64'))[_0x24fc('0x60')](_0x24fc('0x65'))[_0x24fc('0x60')](_0x24fc('0x66'))[_0x24fc('0x62')]('user_has_chat_interactions','ui')[_0x24fc('0x67')](_0x24fc('0x68'),'u',_0x24fc('0x69'));var _0x1b69ad=squel[_0x24fc('0x5f')]()[_0x24fc('0x62')](_0x24fc('0x6a'),'i')['left_join'](_0x24fc('0x6b'),'c',_0x24fc('0x6c'))['left_join'](_0x24fc('0x68'),'o',_0x24fc('0x6d'))[_0x24fc('0x67')](_0x24fc('0x6e'),'a',_0x24fc('0x6f'))[_0x24fc('0x67')]('chat_messages','me',_0x24fc('0x70'))['left_join'](_0x24fc('0x71'),'it',_0x24fc('0x72'))['left_join'](_0x24fc('0x63'),'t','t.id\x20=\x20it.TagId');var _0x1c1f74=squel['expr']();var _0xdff811=[];var _0x27b612=squel['expr']();var _0x2edef7;if(_0x2eecaf['query'][_0x24fc('0x73')]){_0x2edef7=as[_0x24fc('0x74')](_0x2eecaf['query'][_0x24fc('0x73')]);var _0x3ec1a8=_0x2edef7[_0x24fc('0x75')];for(var _0x47179d=0x0;_0x47179d<_0x2edef7[_0x24fc('0x76')]['length'];_0x47179d++){var _0x39da59=_0x2edef7[_0x24fc('0x76')][_0x47179d];var _0x2d657a='i';var _0x2b5dca=_[_0x24fc('0x77')](_0x58a950,['name',_0x39da59['field']]);if(!_0x2b5dca){switch(_0x39da59[_0x24fc('0x60')]){case _0x24fc('0x78'):if(_0x39da59['value']==0x1){_0x1b69ad['having']('`'+_0x39da59[_0x24fc('0x60')]+_0x24fc('0x79'));}else{_0x1b69ad[_0x24fc('0x7a')]('`'+_0x39da59[_0x24fc('0x60')]+'`\x20>\x200');}break;case _0x24fc('0x7b'):if(_0x39da59[_0x24fc('0x7c')]===_0x24fc('0x7d')){if(_0x39da59[_0x24fc('0x7e')][_0x24fc('0x4b')]('\x20')[_0x24fc('0x57')]>0x1){_0x1c1f74[_0x3ec1a8](_0x24fc('0x7f'),qs[_0x24fc('0x80')](_0x39da59[_0x24fc('0x7e')]),null);}else{var _0x1f6a71='%'+_0x39da59[_0x24fc('0x7e')]+'%';_0x1c1f74[_0x3ec1a8](_0x24fc('0x81'),_0x1f6a71,_0x1f6a71,_0x1f6a71);}}else{_0x2b5dca=_[_0x24fc('0x77')](_0x58a950,[_0x24fc('0x3e'),_0x24fc('0x82')]);_0x39da59['field']=_0x24fc('0x82');_0x10ef7c=as[_0x24fc('0x83')](_0x2d657a,_0x2b5dca[_0x24fc('0x50')],_0x39da59);_0x1c1f74[_0x3ec1a8](_0x10ef7c[_0x24fc('0x84')],_0x10ef7c[_0x24fc('0x7e')][_0x24fc('0x85')],_0x10ef7c[_0x24fc('0x7e')][_0x24fc('0x31')]);}break;case'Tag':var _0x3475b8=_0x39da59[_0x24fc('0x7e')][_0x24fc('0x4b')](',')[_0x24fc('0x47')](function(_0x55fceb){return Number(_0x55fceb);});_0x3475b8[_0x24fc('0x4c')](function(_0x29b381){_0x27b612['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x29b381+',%');});_0xdff811=_['union'](_0xdff811,_0x3475b8);break;case'User':if(_0x39da59[_0x24fc('0x7c')]===_0x24fc('0x7d')){_0x1c1f74[_0x3ec1a8](_0x24fc('0x86'),'%'+_0x39da59[_0x24fc('0x7e')]+'%',null);}else{_0x2b5dca=_[_0x24fc('0x77')](_0x58a950,[_0x24fc('0x3e'),'UserId']);_0x39da59[_0x24fc('0x60')]=_0x24fc('0x87');_0x10ef7c=as['buildExpression'](_0x2d657a,_0x2b5dca['type'],_0x39da59);_0x1c1f74[_0x3ec1a8](_0x10ef7c[_0x24fc('0x84')],_0x10ef7c[_0x24fc('0x7e')][_0x24fc('0x85')],_0x10ef7c['value'][_0x24fc('0x31')]);}break;case _0x24fc('0x42'):_0x10ef7c=as[_0x24fc('0x83')]('me',null,_0x39da59);_0x1c1f74[_0x3ec1a8](_0x10ef7c['text'],_0x10ef7c['value']['start'],_0x10ef7c['value']['end']);break;}}else{var _0x10ef7c=as[_0x24fc('0x83')](_0x2d657a,_0x2b5dca[_0x24fc('0x50')],_0x39da59);_0x1c1f74[_0x3ec1a8](_0x10ef7c[_0x24fc('0x84')],_0x10ef7c['value'][_0x24fc('0x85')],_0x10ef7c['value'][_0x24fc('0x31')]);}}}else{var _0x4e6eec=_(_0x2eecaf[_0x24fc('0x52')])[_0x24fc('0x88')]()[_0x24fc('0x47')](function(_0x4291bd){return _[_0x24fc('0x89')](_0x58a950,[_0x24fc('0x3e'),_0x4291bd])?_0x4291bd:undefined;})[_0x24fc('0x8a')]()['value']();if(!_[_0x24fc('0x8b')](_0x4e6eec)){_0x4e6eec[_0x24fc('0x4c')](function(_0x2de101){if(_0x2de101==='ChatWebsiteId'){_0x1b69ad['where'](_0x24fc('0x8c'),[][_0x24fc('0x8d')](_0x2eecaf['query'][_0x2de101]));}else if(_0x2de101===_0x24fc('0x8e')){var _0x1a2e6d=JSON['parse'](_0x2eecaf[_0x24fc('0x52')][_0x2de101])[_0x24fc('0x8f')];var _0x5249ea=JSON[_0x24fc('0x90')](_0x2eecaf[_0x24fc('0x52')][_0x2de101])[_0x24fc('0x91')];_0x1b69ad[_0x24fc('0x5d')](_0x24fc('0x92'),_0x1a2e6d,_0x5249ea);}else{if(_0x2eecaf[_0x24fc('0x52')][_0x2de101]==='null'){_0x1b69ad['where']('i.'+_0x2de101+_0x24fc('0x93'));}else{_0x1b69ad['where']('i.'+_0x2de101+_0x24fc('0x94'),_0x2eecaf['query'][_0x2de101]);}}});}if(_0x2eecaf['query'][_0x24fc('0x95')]){if(_0x2eecaf[_0x24fc('0x52')][_0x24fc('0x95')]==0x1){_0x1b69ad[_0x24fc('0x7a')](_0x24fc('0x96'));}else{_0x1b69ad[_0x24fc('0x7a')](_0x24fc('0x97'));}}if(_0x2eecaf[_0x24fc('0x52')]['tag']){_0xdff811=_[_0x24fc('0x98')](_0x2eecaf[_0x24fc('0x52')]['tag'])?_0x2eecaf['query'][_0x24fc('0x99')]:new Array(_0x2eecaf[_0x24fc('0x52')][_0x24fc('0x99')]);_0xdff811[_0x24fc('0x4c')](function(_0xd1e6){_0x27b612['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0xd1e6+',%');});}if(_0x2eecaf[_0x24fc('0x52')][_0x24fc('0x9a')]){var _0x5ca35b=_0x2eecaf[_0x24fc('0x52')][_0x24fc('0x9a')][_0x24fc('0x9b')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x24fc('0x9c')](_0x5ca35b)){_0x1c1f74['or'](_0x24fc('0x9d'),_0x5ca35b+'%');}else{_0x1c1f74['or'](_0x24fc('0x9e'),qs[_0x24fc('0x80')](_0x5ca35b))['or'](_0x24fc('0x9f'),_0x5ca35b+'%');}}}_0x1b69ad[_0x24fc('0x5d')](_0x1c1f74);_0x1b69ad[_0x24fc('0xa0')](_0x24fc('0xa1'));var _0x188edb={'type':db['Sequelize'][_0x24fc('0xa2')][_0x24fc('0xa3')],'raw':!![]};var _0x1dcccf=_0x1b69ad['clone']();_0x1dcccf['field']('i.id');_0x1dcccf[_0x24fc('0x60')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x24fc('0x78'));if(_0x3ce7b3[_0x24fc('0x5b')]){_0x3ce7b3['order'][_0x24fc('0x4c')](function(_0x559692){var _0x41cef7=_0x559692[0x0]==='contactName'?_0x559692[0x0]:'i.'+_0x559692[0x0];_0x1b69ad[_0x24fc('0x5b')](_0x41cef7,_0x559692[0x1]===_0x24fc('0xa4')?![]:!![]);});}if(!_[_0x24fc('0x8b')](_0xdff811)){_0x1b69ad[_0x24fc('0x7a')](_0x27b612);_0x1dcccf[_0x24fc('0x5d')](_0x24fc('0xa5'),_0xdff811);}BPromise['resolve']()[_0x24fc('0x24')](function(){if(!_0x2edef7){if(_0x2eecaf[_0x24fc('0x52')][_0x24fc('0xa6')])return;_0x1dcccf[_0x24fc('0x5d')](_0x24fc('0xa7'));_0x1b69ad[_0x24fc('0x5d')](_0x24fc('0xa7'));return;}if(_0x2eecaf[_0x24fc('0xa8')][_0x24fc('0xa9')]!=='agent')return;return _0x2eecaf[_0x24fc('0xa8')][_0x24fc('0xaa')]({'attributes':['id'],'raw':!![]})[_0x24fc('0x24')](function(_0x30ed50){if(_['isEmpty'](_0x30ed50)){_0x1dcccf[_0x24fc('0x5d')](_0x24fc('0xab'));_0x1b69ad[_0x24fc('0x5d')]('i.ChatWebsiteId\x20IS\x20NULL');}else{_0x1dcccf[_0x24fc('0x5d')]('i.ChatWebsiteId\x20IN\x20?',_['map'](_0x30ed50,'id'));_0x1b69ad['where'](_0x24fc('0x8c'),_['map'](_0x30ed50,'id'));}});})[_0x24fc('0x24')](function(){if(_0x2eecaf[_0x24fc('0xa8')][_0x24fc('0xa9')]===_0x24fc('0x44')&&!_0x2edef7&&!_0x2eecaf['query'][_0x24fc('0xa6')])return[];return db[_0x24fc('0xac')][_0x24fc('0x52')](_0x1dcccf[_0x24fc('0xad')](),_0x188edb);})[_0x24fc('0x24')](function(_0x5c80a5){_0xbcbcfa[_0x24fc('0x36')]=_0x5c80a5[_0x24fc('0x57')];if(_0xbcbcfa[_0x24fc('0x36')]===0x0)return[];return db[_0x24fc('0xac')]['query'](_0xb0fc00['toString'](),_0x188edb)[_0x24fc('0x24')](function(_0x4216da){_0x32a466=_[_0x24fc('0xae')](_0x4216da,'id');_0x188edb=_[_0x24fc('0x41')](_0x188edb,{'model':db[_0x24fc('0x4e')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2eecaf['query'][_0x24fc('0x55')]){_0x3ce7b3[_0x24fc('0x56')][_0x24fc('0x4c')](function(_0x5d5a59){_0x1b69ad[_0x24fc('0x60')]('i.'+_0x5d5a59);});}else{_0x1b69ad[_0x24fc('0x60')](_0x24fc('0xaf'),_0x24fc('0x78'));_0x1b69ad[_0x24fc('0x60')]('a.key','Account.key');_0x1b69ad['field'](_0x24fc('0xb0'),_0x24fc('0xb1'));_0x1b69ad[_0x24fc('0x60')](_0x24fc('0xb2'),_0x24fc('0xb3'));_0x1b69ad[_0x24fc('0x60')](_0x24fc('0xb4'));_0x1b69ad[_0x24fc('0x60')](_0x24fc('0xb5'),_0x24fc('0xb6'));_0x1b69ad[_0x24fc('0x60')](_0x24fc('0xb7'),'Contact.lastName');_0x1b69ad['field'](_0x24fc('0xb8'),'Contact.email');_0x1b69ad[_0x24fc('0x60')](_0x24fc('0xb9'),_0x24fc('0xba'));_0x1b69ad[_0x24fc('0x60')](_0x24fc('0xbb'),_0x24fc('0xbc'));_0x1b69ad[_0x24fc('0x60')](_0x24fc('0xbd'),_0x24fc('0xbe'));_0x1b69ad['field'](_0x24fc('0xbf'),_0x24fc('0xc0'));_0x1b69ad['field']('o.internal',_0x24fc('0xc1'));_0x1b69ad[_0x24fc('0x60')](_0x24fc('0xc2'),_0x24fc('0x49'));}if(_0x3ce7b3[_0x24fc('0x5a')])_0x1b69ad[_0x24fc('0x5a')](_0x3ce7b3['limit']);if(_0x3ce7b3[_0x24fc('0x34')])_0x1b69ad[_0x24fc('0x34')](_0x3ce7b3[_0x24fc('0x34')]);return db[_0x24fc('0xac')]['query'](_0x1b69ad[_0x24fc('0xad')](),_0x188edb);})[_0x24fc('0x24')](function(_0x1506e8){if(_0x1506e8['length']>0x0)_0x40f42b[_0x24fc('0x5d')](_0x24fc('0xc3'),_[_0x24fc('0x47')](_0x1506e8,'id'));return db['sequelize'][_0x24fc('0x52')](_0x40f42b[_0x24fc('0xad')](),_0x188edb)['then'](function(_0x543db4){var _0x283251=_[_0x24fc('0xc4')](_0x543db4,_0x24fc('0xc5'));var _0x2029cd=[];_0x1506e8[_0x24fc('0x4c')](function(_0x3afe80){_0x2029cd['push'](updateChatInteraction(_0x3afe80,_0x32a466,_0x283251));});return BPromise[_0x24fc('0xc6')](_0x2029cd);});});})[_0x24fc('0x24')](function(_0x17a6a9){_0xbcbcfa[_0x24fc('0xc7')]=_0x17a6a9;return _0xbcbcfa;})[_0x24fc('0x24')](respondWithFilteredResult(_0x9bc56a,_0x3ce7b3))[_0x24fc('0x2f')](handleError(_0x9bc56a,null));};exports['show']=function(_0x4018d3,_0x4a2522){var _0x5226aa={'raw':![],'where':{'id':_0x4018d3[_0x24fc('0xc8')]['id']}},_0x260a62={};_0x260a62['model']=_[_0x24fc('0x88')](db[_0x24fc('0x4e')][_0x24fc('0x4f')]);_0x260a62[_0x24fc('0x52')]=_['keys'](_0x4018d3[_0x24fc('0x52')]);_0x260a62[_0x24fc('0x5e')]=_[_0x24fc('0x53')](_0x260a62[_0x24fc('0x54')],_0x260a62[_0x24fc('0x52')]);_0x5226aa[_0x24fc('0x56')]=_['intersection'](_0x260a62['model'],qs['fields'](_0x4018d3[_0x24fc('0x52')][_0x24fc('0x55')]));_0x5226aa['attributes']=_0x5226aa[_0x24fc('0x56')][_0x24fc('0x57')]?_0x5226aa[_0x24fc('0x56')]:_0x260a62['model'];if(_0x4018d3[_0x24fc('0x52')][_0x24fc('0xc9')]){_0x5226aa['include']=[{'all':!![]}];}_0x5226aa=_['merge']({},_0x5226aa,_0x4018d3[_0x24fc('0xca')]);return db[_0x24fc('0x4e')][_0x24fc('0x77')](_0x5226aa)['then'](handleEntityNotFound(_0x4a2522,null))[_0x24fc('0x24')](respondWithResult(_0x4a2522,null))['catch'](handleError(_0x4a2522,null));};exports['create']=function(_0x344c0f,_0x52484a){return db['ChatInteraction'][_0x24fc('0xcb')](_0x344c0f['body'],{})[_0x24fc('0x24')](respondWithResult(_0x52484a,0xc9))[_0x24fc('0x2f')](handleError(_0x52484a,null));};exports[_0x24fc('0x3b')]=function(_0x11eaeb,_0x4ae346){if(_0x11eaeb[_0x24fc('0x42')]['id']){delete _0x11eaeb[_0x24fc('0x42')]['id'];}return db['ChatInteraction'][_0x24fc('0x77')]({'where':{'id':_0x11eaeb[_0x24fc('0xc8')]['id']}})[_0x24fc('0x24')](handleEntityNotFound(_0x4ae346,null))[_0x24fc('0x24')](saveUpdates(_0x11eaeb[_0x24fc('0x42')],null))['then'](respondWithResult(_0x4ae346,null))[_0x24fc('0x2f')](handleError(_0x4ae346,null));};exports[_0x24fc('0x3c')]=function(_0x5793d9,_0x759d35){return db[_0x24fc('0x4e')][_0x24fc('0x77')]({'where':{'id':_0x5793d9[_0x24fc('0xc8')]['id']}})[_0x24fc('0x24')](handleEntityNotFound(_0x759d35,null))['then'](removeEntity(_0x759d35,null))[_0x24fc('0x2f')](handleError(_0x759d35,null));};exports['describe']=function(_0x5c8969,_0x42c158){return db[_0x24fc('0x4e')][_0x24fc('0xcc')]()['then'](respondWithResult(_0x42c158,null))['catch'](handleError(_0x42c158,null));};exports[_0x24fc('0xcd')]=function(_0x38fba8,_0xfa9d58){var _0x353a64=_0x38fba8[_0x24fc('0xc8')]['id'];var _0x4ee1ad;var _0x4875bd;var _0x1efb25;return db['ChatInteraction']['findOne']({'where':{'id':_0x353a64}})[_0x24fc('0x24')](function(_0x484775){_0x4ee1ad=_0x484775;return db['ChatWebsite'][_0x24fc('0xce')]({'where':{'id':_0x484775[_0x24fc('0xa6')]},'attributes':['id',_0x24fc('0xcf'),_0x24fc('0xd0'),_0x24fc('0xd1'),_0x24fc('0xd2'),_0x24fc('0xd3')],'raw':!![]});})['then'](function(_0x3b2891){if(_0x3b2891&&_0x3b2891[_0x24fc('0xcf')]&&_0x3b2891[_0x24fc('0xd0')]){_0x4875bd=_0x3b2891;var _0x6e3447={'interaction':{'id':_0x353a64},'agent':{'id':_0x38fba8[_0x24fc('0xa8')]['id'],'name':_0x38fba8[_0x24fc('0xa8')][_0x24fc('0x3e')],'fullname':_0x38fba8[_0x24fc('0xa8')][_0x24fc('0x48')],'email':_0x38fba8[_0x24fc('0xa8')][_0x24fc('0xd4')]},'contact':_0x38fba8[_0x24fc('0x42')][_0x24fc('0x43')],'account':_0x38fba8[_0x24fc('0x42')][_0x24fc('0x46')]};var _0x38ec08={'rejectUnauthorized':![],'method':_0x24fc('0xd5'),'url':_0x24fc('0xd6'),'headers':{'X-APIKEY':_0x3b2891[_0x24fc('0xcf')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x38fba8[_0x24fc('0xa8')][_0x24fc('0xd4')]],'buttons':null,'topic':_0x4875bd[_0x24fc('0xd1')],'note':_[_0x24fc('0xd7')](_0x4875bd[_0x24fc('0xd2')])?null:getMustacheRender(_0x4875bd[_0x24fc('0xd2')],_0x6e3447),'metadata':null},'redirect':'follow','json':!![]};try{if(!_[_0x24fc('0xd7')](_0x4875bd[_0x24fc('0xd3')])){var _0x1d8a8f=getMustacheRender(_0x4875bd[_0x24fc('0xd3')],_0x6e3447);var _0x534388=JSON['parse'](_0x1d8a8f);_0x38ec08['body'][_0x24fc('0xd8')]=_0x534388;}}catch(_0x5aa947){throw new db[(_0x24fc('0xd9'))]['ValidationError'](_0x24fc('0xda'));}return rp(_0x38ec08);}else{throw new db[(_0x24fc('0xd9'))][(_0x24fc('0xdb'))](_0x24fc('0xdc'));}})[_0x24fc('0x24')](function(_0x468477){_0x1efb25=_0x468477;if(_0x1efb25['id']){var _0x1c4ac1={'body':_0x1efb25[_0x24fc('0xdd')],'ChatWebsiteId':_0x4875bd['id'],'ChatInteractionId':_0x4ee1ad['id'],'direction':'out','UserId':_0x38fba8[_0x24fc('0xa8')]['id']};return db[_0x24fc('0xde')][_0x24fc('0xcb')](_0x1c4ac1,{});}else{throw new db[(_0x24fc('0xd9'))]['ValidationError'](_0x24fc('0xdf'));}})[_0x24fc('0x24')](function(){return _0x4ee1ad[_0x24fc('0xe0')]({'vidaooSessionId':_0x1efb25['id']});})[_0x24fc('0x24')](respondWithResult(_0xfa9d58,null))[_0x24fc('0x2f')](handleError(_0xfa9d58,null));};exports[_0x24fc('0xe1')]=function(_0x17280c,_0x13f9e3){if(_0x17280c[_0x24fc('0x42')]['id']){delete _0x17280c[_0x24fc('0x42')]['id'];}return db[_0x24fc('0x4e')][_0x24fc('0x77')]({'where':{'id':_0x17280c['params']['id']},'include':[{'model':db[_0x24fc('0xe2')],'as':_0x24fc('0x7b')}]})[_0x24fc('0x24')](handleEntityNotFound(_0x13f9e3,null))[_0x24fc('0x24')](saveUpdates(_0x17280c[_0x24fc('0x42')],null))[_0x24fc('0x24')](respondWithResult(_0x13f9e3,null))[_0x24fc('0x2f')](handleError(_0x13f9e3,null));};exports['abandon']=function(_0x2400a3,_0x16368d,_0x5b1fe2){if(_0x2400a3[_0x24fc('0x42')]['id']){delete _0x2400a3[_0x24fc('0x42')]['id'];}return db['ChatInteraction'][_0x24fc('0x77')]({'where':{'id':_0x2400a3['params']['id']}})[_0x24fc('0x24')](function(_0x21d6d3){if(!_0x21d6d3){logger['error'](_0x24fc('0xe3'),_0x24fc('0xe4'),0x194,_0x24fc('0xe5'));_0x16368d[_0x24fc('0x30')](0x194);}else{if(_0x21d6d3[_0x24fc('0x87')]){throw new db[(_0x24fc('0xd9'))][(_0x24fc('0xdb'))](_0x24fc('0xe6'));}}return _0x21d6d3;})[_0x24fc('0x24')](function(_0x2c6ac9){if(_0x2c6ac9){return _0x2c6ac9[_0x24fc('0x3b')]({'closed':_0x2400a3[_0x24fc('0x42')][_0x24fc('0xe7')],'disposition':_0x2400a3[_0x24fc('0x42')][_0x24fc('0xe8')]})[_0x24fc('0x24')](function(_0x2ccd34){return _0x2ccd34;});}})['then'](function(_0x51764e){return respondWithRpcPromise('AbandonInteraction',_0x24fc('0xe4'),_0x2400a3['body'],client9004);})[_0x24fc('0x24')](respondWithResult(_0x16368d,null))[_0x24fc('0x2f')](handleError(_0x16368d,null));};exports[_0x24fc('0xe9')]=function(_0x2d7ecb,_0xf4f427,_0x41fbf1){_0x2d7ecb[_0x24fc('0x42')][_0x24fc('0x3e')]=_0x2d7ecb[_0x24fc('0xea')][_0x24fc('0xeb')];_0x2d7ecb[_0x24fc('0x42')]['basename']=_0x2d7ecb['file'][_0x24fc('0xec')];_0x2d7ecb[_0x24fc('0x42')][_0x24fc('0x50')]=_0x2d7ecb['file'][_0x24fc('0xed')];return db[_0x24fc('0xee')][_0x24fc('0xcb')](_0x2d7ecb[_0x24fc('0x42')])[_0x24fc('0x24')](respondWithResult(_0xf4f427,0xc9))[_0x24fc('0x2f')](handleError(_0xf4f427,null));};exports['attachmentDownload']=function(_0x3c41c1,_0x337fad,_0x525d4f){return db[_0x24fc('0x4e')]['findOne']({'where':{'id':_0x3c41c1['params']['id']},'raw':!![]})[_0x24fc('0x24')](handleEntityNotFound(_0x337fad,null))[_0x24fc('0x24')](function(_0x282848){if(_0x282848){if(_0x282848[_0x24fc('0xe7')]){return _0x337fad['status'](0x193)[_0x24fc('0x33')]({'status':0x193,'message':_0x24fc('0xef')});}return db[_0x24fc('0xee')][_0x24fc('0xce')]({'where':{'id':_0x3c41c1[_0x24fc('0x52')]['attachId']},'raw':!![]})['then'](handleEntityNotFound(_0x337fad,null));}})[_0x24fc('0x24')](function(_0x2cbaa1){if(_0x2cbaa1){var _0xaab85=_0x2cbaa1[_0x24fc('0xf0')]!==null;var _0x42d3ae=path['join'](config[_0x24fc('0xf1')],_0x24fc('0xf2'));if(_0xaab85){_0x42d3ae=path[_0x24fc('0xf3')](_0x42d3ae,_0x24fc('0xf4'));}var _0xc73868=path[_0x24fc('0xf3')](_0x42d3ae,_0x2cbaa1[_0x24fc('0xf5')]);return _0x337fad[_0x24fc('0xf6')](_0xc73868);}})[_0x24fc('0x2f')](handleError(_0x337fad,null));};exports['close']=function(_0x3f0da7,_0x36f9d2){var _0x50a4c5=null;var _0x299fd8=null;var _0x5d01fa=null;var _0x92d51d=null;if(_0x3f0da7[_0x24fc('0x42')]['id']){delete _0x3f0da7['body']['id'];}if(_0x3f0da7['body'][_0x24fc('0xf7')]){_0x92d51d=path['join'](config[_0x24fc('0xf1')],_0x24fc('0xf8'),util[_0x24fc('0xf9')](_0x24fc('0xfa'),Date['now']()));_0x3f0da7[_0x24fc('0x42')][_0x24fc('0xfb')]=_0x92d51d;}return db[_0x24fc('0x4e')][_0x24fc('0x77')]({'where':{'id':_0x3f0da7[_0x24fc('0xc8')]['id']},'include':[{'model':db[_0x24fc('0xde')],'as':_0x24fc('0xfc'),'include':[{'model':db[_0x24fc('0xfd')],'as':_0x24fc('0xfd')}]}]})[_0x24fc('0x24')](handleEntityNotFound(_0x36f9d2,null))[_0x24fc('0x24')](saveUpdates(_0x3f0da7[_0x24fc('0x42')],null))[_0x24fc('0x24')](function(_0x210bc5){if(_0x210bc5){_0x50a4c5=_0x210bc5;return db[_0x24fc('0xfe')][_0x24fc('0x77')]({'where':{'id':_0x50a4c5[_0x24fc('0xa6')]}});}})[_0x24fc('0x24')](function(_0x4dbbf1){if(_0x4dbbf1){_0x5d01fa=_0x4dbbf1;return db[_0x24fc('0xe2')][_0x24fc('0x77')]({'where':{'id':_0x50a4c5[_0x24fc('0x82')]}});}})[_0x24fc('0x24')](function(_0x61a50b){if(_0x61a50b){_0x299fd8=_0x61a50b;if(_0x92d51d){var _0x282e8c=null;for(var _0x47637c=0x1;_0x47637c<_0x50a4c5[_0x24fc('0xfc')]['length'];++_0x47637c){_0x282e8c=_0x50a4c5[_0x24fc('0xfc')][_0x47637c];var _0x36788c=_0x282e8c[_0x24fc('0x87')]?util['format'](_0x24fc('0xff'),_0x5d01fa[_0x24fc('0x100')],_0x282e8c[_0x24fc('0x87')]):_0x24fc('0x101');var _0x1bbfe1=_0x3f0da7[_0x24fc('0x42')][_0x24fc('0x102')]||util[_0x24fc('0xf9')]('%s%d','Visitor',_0x282e8c[_0x24fc('0x82')]);switch(_0x5d01fa['agentIdentifier']){case _0x24fc('0x103'):_0x36788c=_0x282e8c[_0x24fc('0x87')]?util[_0x24fc('0xf9')](_0x24fc('0xff'),_0x5d01fa[_0x24fc('0x100')],_0x282e8c[_0x24fc('0x87')]):_0x24fc('0x101');break;case'agent_alias':_0x36788c=_0x282e8c[_0x24fc('0x87')]?_0x282e8c[_0x24fc('0xfd')][_0x24fc('0x104')]||_0x282e8c['User'][_0x24fc('0x48')]:_0x24fc('0x101');break;case _0x24fc('0x105'):_0x36788c=_0x282e8c['UserId']?_0x282e8c[_0x24fc('0xfd')][_0x24fc('0x48')]:_0x24fc('0x101');break;default:_0x36788c=_0x282e8c[_0x24fc('0x87')]?util[_0x24fc('0xf9')](_0x24fc('0xff'),_0x5d01fa[_0x24fc('0x100')],_0x282e8c[_0x24fc('0x87')]):_0x24fc('0x101');}var _0x3f1c36=util['format']('[%s]\x20%s:\x20%s\x0a',moment(_0x282e8c[_0x24fc('0x8e')])[_0x24fc('0xf9')](_0x24fc('0x106')),_0x282e8c['direction']==='in'?_0x1bbfe1:_0x36788c,_0x282e8c[_0x24fc('0x42')]);if(!_0x282e8c[_0x24fc('0x107')]){fs[_0x24fc('0x108')](_0x92d51d,_0x3f1c36);}}return db[_0x24fc('0x109')][_0x24fc('0xce')]({'where':{'service':!![]},'include':[{'model':db[_0x24fc('0x10a')],'as':_0x24fc('0x10b'),'raw':!![]}]});}}})[_0x24fc('0x24')](function(_0x18ab28){if(_0x18ab28&&_0x18ab28[_0x24fc('0x10b')]&&_0x3f0da7[_0x24fc('0x42')]){var _0x14b0b5={'tls':{'rejectUnauthorized':![]}};if(_0x18ab28[_0x24fc('0x10b')][_0x24fc('0x10c')]){_0x14b0b5[_0x24fc('0x10c')]=_0x18ab28['Smtp'][_0x24fc('0x10c')];}else{_0x14b0b5[_0x24fc('0x10d')]=_0x18ab28[_0x24fc('0x10b')]['host'];_0x14b0b5[_0x24fc('0x10e')]=_0x18ab28[_0x24fc('0x10b')][_0x24fc('0x10e')];_0x14b0b5[_0x24fc('0x10f')]=_0x18ab28[_0x24fc('0x10b')][_0x24fc('0x10f')];}if(_0x18ab28[_0x24fc('0x10b')][_0x24fc('0x110')]){_0x14b0b5[_0x24fc('0x111')]={'user':_0x18ab28[_0x24fc('0x10b')][_0x24fc('0xa8')],'pass':_0x18ab28[_0x24fc('0x10b')]['pass']};}return respondWithRpcPromise(_0x24fc('0x112'),_0x24fc('0x113'),{'account':_0x14b0b5,'message':{'from':util[_0x24fc('0xf9')](_0x24fc('0x114'),_0x18ab28[_0x24fc('0x3e')],_0x18ab28[_0x24fc('0xd4')]||_0x18ab28['Smtp'][_0x24fc('0xa8')]),'to':_0x3f0da7[_0x24fc('0x42')][_0x24fc('0xf7')],'subject':_0x24fc('0x115'),'text':util[_0x24fc('0xf9')](_0x24fc('0x116'),_0x3f0da7[_0x24fc('0x42')][_0x24fc('0xf7')]),'attachments':[{'path':_0x92d51d}]}})[_0x24fc('0x24')](function(){return _0x50a4c5;})[_0x24fc('0x2f')](function(_0x51ecc4){console['error'](_0x51ecc4);});}else{return _0x50a4c5;}})['then'](respondWithStatusCode(_0x36f9d2,0xc8))[_0x24fc('0x2f')](handleError(_0x36f9d2,null));};exports[_0x24fc('0x117')]=function(_0x21d021,_0x15035b,_0xe5f00){return db[_0x24fc('0xde')][_0x24fc('0x77')]({'where':{'id':_0x21d021[_0x24fc('0xc8')]['id']}})['then'](handleEntityNotFound(_0x15035b,null))[_0x24fc('0x24')](function(_0x263597){if(_0x263597){return _0x263597['addMessage'](_0x21d021[_0x24fc('0x42')][_0x24fc('0x118')],_[_0x24fc('0x119')](_0x21d021[_0x24fc('0x42')],[_0x24fc('0x118'),'id'])||{});}})[_0x24fc('0x24')](respondWithResult(_0x15035b,null))[_0x24fc('0x2f')](handleError(_0x15035b,null));};exports['getMessages']=function(_0xda0576,_0x1a136f,_0x47833f){var _0x59d561={'raw':![],'where':{}};var _0x4614fe={};var _0x7a2cca={'count':0x0,'rows':[]};return db[_0x24fc('0x4e')][_0x24fc('0xce')]({'where':{'id':_0xda0576[_0x24fc('0xc8')]['id']}})[_0x24fc('0x24')](handleEntityNotFound(_0x1a136f,null))['then'](function(_0x14bd08){if(_0x14bd08){_0x4614fe[_0x24fc('0x54')]=_['keys'](db[_0x24fc('0xde')][_0x24fc('0x4f')]);_0x4614fe[_0x24fc('0x52')]=_[_0x24fc('0x88')](_0xda0576[_0x24fc('0x52')]);_0x4614fe[_0x24fc('0x5e')]=_[_0x24fc('0x53')](_0x4614fe[_0x24fc('0x54')],_0x4614fe[_0x24fc('0x52')]);_0x59d561[_0x24fc('0x56')]=_['intersection'](_0x4614fe['model'],qs[_0x24fc('0x55')](_0xda0576[_0x24fc('0x52')]['fields']));_0x59d561[_0x24fc('0x56')]=_0x59d561[_0x24fc('0x56')][_0x24fc('0x57')]?_0x59d561['attributes']:_0x4614fe[_0x24fc('0x54')];if(!_0xda0576[_0x24fc('0x52')][_0x24fc('0x58')](_0x24fc('0x59'))){_0x59d561['limit']=qs[_0x24fc('0x5a')](_0xda0576['query'][_0x24fc('0x5a')]);_0x59d561['offset']=qs[_0x24fc('0x34')](_0xda0576[_0x24fc('0x52')]['offset']);}_0x59d561[_0x24fc('0x5b')]=qs[_0x24fc('0x5c')](_0xda0576[_0x24fc('0x52')]['sort']);_0x59d561[_0x24fc('0x5d')]=qs[_0x24fc('0x5e')](_[_0x24fc('0x11a')](_0xda0576['query'],_0x4614fe[_0x24fc('0x5e')]));_0x59d561[_0x24fc('0x5d')][_0x24fc('0xc5')]=_0x14bd08['id'];if(_0xda0576['query'][_0x24fc('0x9a')]){_0x59d561[_0x24fc('0x5d')]=_[_0x24fc('0x41')](_0x59d561[_0x24fc('0x5d')],{'$or':_[_0x24fc('0x47')](_0x59d561[_0x24fc('0x56')],function(_0x6fa372){var _0x1e5616={};_0x1e5616[_0x6fa372]={'$like':'%'+_0xda0576[_0x24fc('0x52')]['filter']+'%'};return _0x1e5616;})});}if(_0xda0576['query'][_0x24fc('0x8f')]){var _0x59cd3c=_0xda0576[_0x24fc('0x52')]['$gte']['split'](',');var _0x235cd7={};_0x235cd7[_0x59cd3c[0x0]]={'$gte':moment(_0x59cd3c[0x1])['format'](_0x24fc('0x11b'))};_0x59d561[_0x24fc('0x5d')]=_[_0x24fc('0x41')](_0x59d561['where'],_0x235cd7);}_0x59d561=_[_0x24fc('0x41')]({},_0x59d561,_0xda0576[_0x24fc('0xca')]);return db[_0x24fc('0xde')][_0x24fc('0x36')]({'where':_0x59d561[_0x24fc('0x5d')]})[_0x24fc('0x24')](function(_0x3e6fda){_0x7a2cca[_0x24fc('0x36')]=_0x3e6fda;if(_0xda0576[_0x24fc('0x52')][_0x24fc('0xc9')]){_0x59d561[_0x24fc('0x11c')]=[{'all':!![]}];}return db[_0x24fc('0xde')][_0x24fc('0x11d')](_0x59d561);})[_0x24fc('0x24')](function(_0x4f5acf){_0x7a2cca[_0x24fc('0xc7')]=_0x4f5acf;return _0x7a2cca;});}})[_0x24fc('0x24')](respondWithFilteredResult(_0x1a136f,_0x59d561))[_0x24fc('0x2f')](handleError(_0x1a136f,null));};exports[_0x24fc('0x11e')]=function(_0x4ba8de,_0x53e48e,_0x50012d){var _0x1449f2={'where':{}},_0x43492b={},_0x487e55={'count':0x0,'rows':[]};return db[_0x24fc('0x4e')][_0x24fc('0xce')]({'where':{'id':_0x4ba8de['params']['id']}})['then'](handleEntityNotFound(_0x53e48e,null))[_0x24fc('0x24')](function(_0x5a41d8){if(_0x5a41d8){_0x43492b['model']=_['keys'](db[_0x24fc('0xde')][_0x24fc('0x4f')]);_0x43492b[_0x24fc('0x52')]=_[_0x24fc('0x88')](_0x4ba8de[_0x24fc('0x52')]);_0x43492b[_0x24fc('0x5e')]=_[_0x24fc('0x53')](_0x43492b[_0x24fc('0x54')],_0x43492b['query']);_0x1449f2[_0x24fc('0x56')]=_[_0x24fc('0x53')](_0x43492b[_0x24fc('0x54')],qs[_0x24fc('0x55')](_0x4ba8de[_0x24fc('0x52')][_0x24fc('0x55')]));_0x1449f2[_0x24fc('0x56')]=_0x1449f2[_0x24fc('0x56')][_0x24fc('0x57')]?_0x1449f2[_0x24fc('0x56')]:_0x43492b[_0x24fc('0x54')];if(!_0x4ba8de[_0x24fc('0x52')]['hasOwnProperty'](_0x24fc('0x59'))){_0x1449f2[_0x24fc('0x5a')]=qs[_0x24fc('0x5a')](_0x4ba8de[_0x24fc('0x52')]['limit']);_0x1449f2[_0x24fc('0x34')]=qs[_0x24fc('0x34')](_0x4ba8de[_0x24fc('0x52')][_0x24fc('0x34')]);}_0x1449f2['order']=qs['sort'](_0x4ba8de[_0x24fc('0x52')][_0x24fc('0x5c')]);_0x1449f2[_0x24fc('0x5d')]=qs[_0x24fc('0x5e')](_['pick'](_0x4ba8de[_0x24fc('0x52')],_0x43492b['filters']));_0x1449f2[_0x24fc('0x5d')][_0x24fc('0xc5')]=_0x5a41d8['id'];if(_0x4ba8de[_0x24fc('0x52')]['filter']){_0x1449f2[_0x24fc('0x5d')]=_[_0x24fc('0x41')](_0x1449f2[_0x24fc('0x5d')],{'$or':_[_0x24fc('0x47')](_0x1449f2['attributes'],function(_0x4ae822){var _0x545714={};_0x545714[_0x4ae822]={'$like':'%'+_0x4ba8de[_0x24fc('0x52')][_0x24fc('0x9a')]+'%'};return _0x545714;})});}_0x1449f2[_0x24fc('0x5d')]['secret']=![];if(_0x4ba8de[_0x24fc('0x52')]['id']){_0x1449f2[_0x24fc('0x5d')]['id']={'$gt':_0x4ba8de['query']['id']};}_0x1449f2=_[_0x24fc('0x41')]({},_0x1449f2,_0x4ba8de[_0x24fc('0xca')]);return db[_0x24fc('0xde')][_0x24fc('0x36')]({'where':_0x1449f2['where']})['then'](function(_0x12921f){_0x487e55[_0x24fc('0x36')]=_0x12921f;_0x1449f2['include']=[];if(_0x4ba8de[_0x24fc('0x52')][_0x24fc('0x11f')]){_0x1449f2[_0x24fc('0x11c')]['push']({'model':db[_0x24fc('0xfd')],'as':_0x24fc('0xfd'),'attributes':['id','fullname','alias']});}if(_0x4ba8de[_0x24fc('0x52')][_0x24fc('0xc9')]){_0x1449f2[_0x24fc('0x11c')]=[{'all':!![]}];}return db[_0x24fc('0xde')][_0x24fc('0x11d')](_0x1449f2);})[_0x24fc('0x24')](function(_0x214f7d){_0x487e55[_0x24fc('0xc7')]=_0x214f7d;return _0x487e55;});}})[_0x24fc('0x24')](respondWithFilteredResult(_0x53e48e,_0x1449f2))[_0x24fc('0x2f')](handleError(_0x53e48e,null));};exports[_0x24fc('0x120')]=function(_0x1a7f96,_0x59d246,_0x281eed){return db[_0x24fc('0x4e')]['find']({'where':{'id':_0x1a7f96[_0x24fc('0xc8')]['id']}})[_0x24fc('0x24')](handleEntityNotFound(_0x59d246,null))['then'](function(_0x4e2c71){if(_0x4e2c71){return _0x4e2c71[_0x24fc('0x121')](_0x1a7f96['body'][_0x24fc('0x118')],_['omit'](_0x1a7f96[_0x24fc('0x42')],['ids','id'])||{})[_0x24fc('0x122')](function(){return db[_0x24fc('0x123')][_0x24fc('0x11d')]({'attributes':['id',_0x24fc('0x3e'),_0x24fc('0x61')],'where':{'id':_0x1a7f96[_0x24fc('0x42')][_0x24fc('0x118')]}});})[_0x24fc('0x24')](function(_0x3c5996){socket['emit']('chatInteractionTags:save',{'id':Number(_0x1a7f96['params']['id']),'tags':_0x3c5996||[]});return{'id':Number(_0x1a7f96[_0x24fc('0xc8')]['id']),'tags':_0x3c5996||[]};});}})[_0x24fc('0x24')](respondWithResult(_0x59d246,null))[_0x24fc('0x2f')](handleError(_0x59d246,null));};exports['removeTags']=function(_0x8dc31b,_0x5941bd,_0x4d73bb){return db[_0x24fc('0x4e')][_0x24fc('0x77')]({'where':{'id':_0x8dc31b[_0x24fc('0xc8')]['id']}})['then'](handleEntityNotFound(_0x5941bd,null))[_0x24fc('0x24')](function(_0x464057){if(_0x464057){return _0x464057[_0x24fc('0x124')](_0x8dc31b[_0x24fc('0x52')][_0x24fc('0x118')]);}})[_0x24fc('0x24')](respondWithStatusCode(_0x5941bd,null))['catch'](handleError(_0x5941bd,null));};exports[_0x24fc('0xf6')]=function(_0x9c34d9,_0x3e4f49){var _0x231f0b=moment()[_0x24fc('0x125')]()['toString']();var _0x34355e=path[_0x24fc('0xf3')](config[_0x24fc('0xf1')],_0x24fc('0x126'),_0x24fc('0x127'),'tmp');var _0x4d0910=path[_0x24fc('0xf3')](config[_0x24fc('0xf1')],'server','files',_0x24fc('0x128'));var _0x49025e=path[_0x24fc('0xf3')](_0x34355e,_0x231f0b);var _0x2c9a19=util['format'](_0x24fc('0x129'),_0x9c34d9['params']['id'],_0x231f0b);var _0x38ca24=path['join'](_0x34355e,_0x2c9a19);var _0x53a9aa=[];_0x53a9aa['push']({'model':db['User'],'as':_0x24fc('0xfd'),'attributes':['id',_0x24fc('0x48')],'raw':!![]});_0x53a9aa['push']({'model':db[_0x24fc('0xe2')],'as':_0x24fc('0x7b'),'attributes':['id',_0x24fc('0x12a'),_0x24fc('0x12b')],'raw':!![]});if(_0x9c34d9[_0x24fc('0x52')]['attachments']){_0x53a9aa[_0x24fc('0x4d')]({'model':db[_0x24fc('0xee')],'as':_0x24fc('0xee'),'raw':!![]});}var _0x2139e8=[{'model':db[_0x24fc('0xde')],'as':_0x24fc('0xfc'),'attributes':['id',_0x24fc('0x42'),'createdAt',_0x24fc('0x12c'),_0x24fc('0x107'),_0x24fc('0x95')],'include':_0x53a9aa}];_0x2139e8[_0x24fc('0x4d')]({'model':db['ChatWebsite'],'as':_0x24fc('0x12d'),'attributes':['id',_0x24fc('0x3e')]});_0x2139e8[_0x24fc('0x4d')]({'model':db[_0x24fc('0xfd')],'as':_0x24fc('0x12e'),'attributes':['id','fullname']});return db[_0x24fc('0x4e')]['find']({'where':{'id':_0x9c34d9[_0x24fc('0xc8')]['id']},'include':_0x2139e8})[_0x24fc('0x24')](handleEntityNotFound(_0x3e4f49,null))[_0x24fc('0x24')](function(_0x26179a){if(_0x26179a){var _0x6f1617=_0x26179a['get']({'plain':!![]});fs[_0x24fc('0x12f')](_0x49025e);var _0x57dfbc={'channel':'Chat','account':_0x6f1617['Account'][_0x24fc('0x3e')],'agent':_0x6f1617[_0x24fc('0x12e')]?_0x6f1617[_0x24fc('0x12e')][_0x24fc('0x48')]:_0x24fc('0x130'),'createdAt':moment(_0x6f1617[_0x24fc('0x8e')])[_0x24fc('0xf9')](_0x24fc('0x11b'))[_0x24fc('0xad')](),'closedAt':_0x6f1617[_0x24fc('0xe7')]?moment(_0x6f1617[_0x24fc('0x131')])[_0x24fc('0xf9')](_0x24fc('0x11b'))['toString']():'','disposition':_0x6f1617['disposition'],'chatInfo':{'browser':_0x6f1617['browserName'],'os':_0x6f1617['osName'],'referer':_0x6f1617['referer'],'customerIp':_0x6f1617[_0x24fc('0x132')],'customerPort':_0x6f1617[_0x24fc('0x133')]?_0x6f1617[_0x24fc('0x133')]:_0x24fc('0x130')},'messages':_(_0x6f1617['Messages'])['tail']()[_0x24fc('0x9a')]({'secret':![]})[_0x24fc('0x47')](function(_0x2ee9a6){if(_0x2ee9a6[_0x24fc('0xee')]){var _0x40409c=path['join'](_0x4d0910,_0x2ee9a6[_0x24fc('0xee')][_0x24fc('0xf5')]);if(fs[_0x24fc('0x134')](_0x40409c)){fs['createReadStream'](_0x40409c)['pipe'](fs[_0x24fc('0x135')](path[_0x24fc('0xf3')](_0x49025e,_0x2ee9a6[_0x24fc('0xee')][_0x24fc('0xf5')])));}}return{'date':moment(_0x2ee9a6[_0x24fc('0x8e')])[_0x24fc('0xf9')](_0x24fc('0x11b'))['toString'](),'sender':_0x2ee9a6[_0x24fc('0x12c')]===_0x24fc('0x136')?_0x2ee9a6[_0x24fc('0xfd')]?_0x2ee9a6[_0x24fc('0xfd')]['fullname']:'System':_0x2ee9a6['Contact']['firstName']+(_0x2ee9a6['Contact'][_0x24fc('0x12b')]?'\x20'+_0x2ee9a6[_0x24fc('0x7b')]['lastName']:''),'body':_0x2ee9a6[_0x24fc('0xee')]?_0x2ee9a6[_0x24fc('0xee')]['basename']:_0x2ee9a6[_0x24fc('0x42')],'direction':_0x2ee9a6['direction']===_0x24fc('0x136')?'A':'C','secret':_0x2ee9a6[_0x24fc('0x107')],'read':_0x2ee9a6[_0x24fc('0x95')],'attachment':_0x2ee9a6['Attachment']};})[_0x24fc('0x7e')]()};return ejs[_0x24fc('0x137')](path['join'](config[_0x24fc('0xf1')],'server','views',_0x24fc('0x138')),{'interaction':_0x57dfbc})[_0x24fc('0x24')](function(_0x24101d){var _0x5defce=path[_0x24fc('0xf3')](_0x49025e,_0x24fc('0x139')+_0x6f1617['id']+'-'+_0x231f0b+_0x24fc('0x13a'));var _0x187770={'path':_0x5defce,'channel':_0x24fc('0x13b'),'interactionId':_0x6f1617['id']};return pdf['createPdfFromHTML'](_0x24101d,_0x187770);})['then'](function(){return new BPromise(function(_0x3357cb,_0x2b633b){zipdir(_0x49025e,{'saveTo':_0x38ca24},function(_0x4ad7c4,_0x1d8b26){if(_0x4ad7c4)return _0x2b633b(_0x4ad7c4);return _0x3357cb(_0x1d8b26);});})[_0x24fc('0x24')](function(){return new BPromise(function(_0x4b0f8b,_0x59d408){rimraf(_0x49025e,function(_0x547f6b){if(_0x547f6b)_0x59d408(_0x547f6b);return _0x4b0f8b();});});})[_0x24fc('0x24')](function(){return _0x3e4f49[_0x24fc('0xf6')](_0x38ca24,_0x2c9a19,function(_0x3a2ffd){if(_0x3a2ffd){console[_0x24fc('0x13c')](_0x24fc('0x13d'),_0x3a2ffd);}else{fs[_0x24fc('0x13e')](_0x38ca24);}});});});}else{return _0x3e4f49[_0x24fc('0x30')](0xc8);}})['catch'](handleError(_0x3e4f49,null));};
\ No newline at end of file
+var _0x955f=['CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','DESC','resolve','ChatWebsiteId','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','role','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','sequelize','keyBy','ChatInteraction','a.key','Account.key','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','toString','groupBy','ChatInteractionId','all','rows','includeAll','include','options','create','params','describe','createVidaooSession','ChatWebsite','vidaooApiKey','vidaooNote','vidaooMetadata','email','POST','https://api-vidaoo.xcally.com/api/v1/meetings','vidaooTopic','follow','isNull','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Error\x20in\x20Vidaoo\x20configuration','join_url','out','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','Interaction\x20already\x20assigned','update','disposition','AbandonInteraction','attachmentUpload','originalname','file','mimetype','attachmentDownload','findOne','closed','Unauthorized','Attachment','ChatOfflineMessageId','join','server/files/attachments/','offline-chat/','basename','download','close','mailTranscript','root','server/files/chat/upload/','format','transcript-%s.txt','now','pathTranscript','Messages','User','%s%d','agentAlias','System','customer','agentIdentifier','website_alias','agent_alias','alias','agent_fullname','createdAt','MM/DD/YYYY\x20HH:mm:ss','secret','MailAccount','MailServerOut','Smtp','service','host','port','secure','auth','sendMail','\x22%s\x22\x20<%s>','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','omit','getMessages','pick','includeAgent','findAll','addTags','setTags','spread','Tag','chatInteractionTags:save','removeTags','unix','server','files','attachments','transcript-%d-%s.zip','firstName','direction','Account','get','mkdirSync','Chat','Owner','N.A.','closedAt','browserName','referer','customerIp','customerPort','tail','existsSync','createReadStream','pipe','YYYY-MM-DD\x20HH:mm:ss','lastName','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/utils','../../config/license/util','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','jayson/promise','client','http','then','info','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ChatInteraction,\x20%s,\x20%s','result','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','reject','save','destroy','stack','name','merge','body','contact','agent','interaction','account','Users','map','fullname','TagIds','Tags','split','forEach','push','catch','index','rawAttributes','fieldName','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','field','color','from','tools_tags','select','u.id','u.fullname','ui.ChatInteractionId','user_has_chat_interactions','left_join','users','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','it.ChatInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','`\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?','ContactId','buildExpression','type','text','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','keys','some','compact','isEmpty','i.ChatWebsiteId\x20IN\x20?','concat','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','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)'];(function(_0x2a7909,_0x50e5fa){var _0x3052b3=function(_0x5b5568){while(--_0x5b5568){_0x2a7909['push'](_0x2a7909['shift']());}};_0x3052b3(++_0x50e5fa);}(_0x955f,0x1eb));var _0xf955=function(_0x24842c,_0x232d3d){_0x24842c=_0x24842c-0x0;var _0x152f31=_0x955f[_0x24842c];return _0x152f31;};'use strict';var emlformat=require(_0xf955('0x0'));var rimraf=require(_0xf955('0x1'));var zipdir=require(_0xf955('0x2'));var jsonpatch=require(_0xf955('0x3'));var rp=require(_0xf955('0x4'));var moment=require('moment');var BPromise=require(_0xf955('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xf955('0x6'));var sox=require('sox');var csv=require(_0xf955('0x7'));var ejs=require(_0xf955('0x8'));var fs=require('fs');var fs_extra=require(_0xf955('0x9'));var _=require('lodash');var squel=require(_0xf955('0xa'));var crypto=require(_0xf955('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xf955('0xc'));var toCsv=require(_0xf955('0x7'));var querystring=require(_0xf955('0xd'));var Papa=require(_0xf955('0xe'));var Redis=require(_0xf955('0xf'));var authService=require(_0xf955('0x10'));var qs=require(_0xf955('0x11'));var as=require('../../components/parsers/advancedSearch');var pdf=require(_0xf955('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf955('0x13'))(_0xf955('0x14'));var utils=require(_0xf955('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xf955('0x16'));var db=require('../../mysqldb')['db'];config[_0xf955('0x17')]=_['defaults'](config[_0xf955('0x17')],{'host':_0xf955('0x18'),'port':0x18eb});var socket=require(_0xf955('0x19'))(new Redis(config[_0xf955('0x17')]));require(_0xf955('0x1a'))[_0xf955('0x1b')](socket);var jayson=require(_0xf955('0x1c'));var client=jayson[_0xf955('0x1d')][_0xf955('0x1e')]({'port':0x232b});var client9004=jayson[_0xf955('0x1d')]['http']({'port':0x232c});function respondWithRpcPromise(_0xc29b35,_0x54e60b,_0x3139d5,_0x3a814f){return new BPromise(function(_0x2f881b,_0x15c07c){var _0x50930d=_0x3a814f||client;return _0x50930d['request'](_0xc29b35,_0x3139d5)[_0xf955('0x1f')](function(_0xe6de5c){logger[_0xf955('0x20')]('ChatInteraction,\x20%s,\x20%s',_0x54e60b,_0xf955('0x21'));logger[_0xf955('0x22')](_0xf955('0x23'),_0x54e60b,_0xf955('0x21'),JSON[_0xf955('0x24')](_0xe6de5c));if(_0xe6de5c['error']){if(_0xe6de5c[_0xf955('0x25')][_0xf955('0x26')]===0x1f4){logger[_0xf955('0x25')]('ChatInteraction,\x20%s,\x20%s',_0x54e60b,_0xe6de5c[_0xf955('0x25')]['message']);return _0x15c07c(_0xe6de5c[_0xf955('0x25')][_0xf955('0x27')]);}logger[_0xf955('0x25')](_0xf955('0x28'),_0x54e60b,_0xe6de5c[_0xf955('0x25')]['message']);return _0x2f881b(_0xe6de5c[_0xf955('0x25')][_0xf955('0x27')]);}else{logger[_0xf955('0x20')](_0xf955('0x28'),_0x54e60b,_0xf955('0x21'));_0x2f881b(_0xe6de5c[_0xf955('0x29')][_0xf955('0x27')]);}})['catch'](function(_0x18f435){logger[_0xf955('0x25')](_0xf955('0x28'),_0x54e60b,_0x18f435);_0x15c07c(_0x18f435);});});}function respondWithStatusCode(_0x406632,_0x2dcd55){_0x2dcd55=_0x2dcd55||0xcc;return function(_0x13a86d){if(_0x13a86d){return _0x406632[_0xf955('0x2a')](_0x2dcd55);}return _0x406632['status'](_0x2dcd55)[_0xf955('0x2b')]();};}function respondWithResult(_0x145098,_0x41c9f6){_0x41c9f6=_0x41c9f6||0xc8;return function(_0xbd0b74){if(_0xbd0b74){return _0x145098[_0xf955('0x2c')](_0x41c9f6)[_0xf955('0x2d')](_0xbd0b74);}};}function respondWithFilteredResult(_0x4d4af0,_0x2232a7){return function(_0x1e5d37){if(_0x1e5d37){var _0x4ec3e8=typeof _0x2232a7[_0xf955('0x2e')]===_0xf955('0x2f')&&typeof _0x2232a7[_0xf955('0x30')]===_0xf955('0x2f');var _0x59bfb5=_0x1e5d37[_0xf955('0x31')];var _0x518fb3=_0x4ec3e8?0x0:_0x2232a7[_0xf955('0x2e')];var _0x2c222a=_0x4ec3e8?_0x1e5d37[_0xf955('0x31')]:_0x2232a7[_0xf955('0x2e')]+_0x2232a7[_0xf955('0x30')];var _0x32121b;if(_0x2c222a>=_0x59bfb5){_0x2c222a=_0x59bfb5;_0x32121b=0xc8;}else{_0x32121b=0xce;}_0x4d4af0[_0xf955('0x2c')](_0x32121b);return _0x4d4af0[_0xf955('0x32')]('Content-Range',_0x518fb3+'-'+_0x2c222a+'/'+_0x59bfb5)[_0xf955('0x2d')](_0x1e5d37);}return null;};}function patchUpdates(_0x165cc4){return function(_0x3964d3){try{jsonpatch[_0xf955('0x33')](_0x3964d3,_0x165cc4,!![]);}catch(_0x4fea0c){return BPromise[_0xf955('0x34')](_0x4fea0c);}return _0x3964d3[_0xf955('0x35')]();};}function saveUpdates(_0x3c81bc,_0xe1b436){return function(_0xdbc53e){if(_0xdbc53e){return _0xdbc53e['update'](_0x3c81bc)['then'](function(_0x5480db){return _0x5480db;});}return null;};}function removeEntity(_0x2626cb,_0x3783dc){return function(_0x374e95){if(_0x374e95){return _0x374e95[_0xf955('0x36')]()[_0xf955('0x1f')](function(){_0x2626cb[_0xf955('0x2c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3acc4b,_0x515dc6){return function(_0x8f842f){if(!_0x8f842f){_0x3acc4b[_0xf955('0x2a')](0x194);}return _0x8f842f;};}function handleError(_0xe33ef2,_0x51762d){_0x51762d=_0x51762d||0x1f4;return function(_0x60a421){logger['error'](_0x60a421[_0xf955('0x37')]);if(_0x60a421[_0xf955('0x38')]){delete _0x60a421[_0xf955('0x38')];}_0xe33ef2[_0xf955('0x2c')](_0x51762d)['send'](_0x60a421);};}function getMustacheRender(_0xf35170,_0x118c92){return Mustache['render'](_0xf35170,_[_0xf955('0x39')](_0x118c92[_0xf955('0x3a')],{'contact':_0x118c92[_0xf955('0x3b')],'message':_0x118c92['message'],'agent':_0x118c92[_0xf955('0x3c')],'interaction':_0x118c92[_0xf955('0x3d')],'account':_0x118c92[_0xf955('0x3e')]}))||'';}function getInteractionUsers(_0x488b6e,_0x97e8ff){return new BPromise(function(_0x195faa,_0x21e4a6){try{if(_0x97e8ff[_0x488b6e['id']]){_0x488b6e[_0xf955('0x3f')]=_[_0xf955('0x40')](_0x97e8ff[_0x488b6e['id']],function(_0x3c4b29){return{'id':_0x3c4b29['id'],'fullname':_0x3c4b29[_0xf955('0x41')]};});}}catch(_0x228dae){_0x21e4a6(_0x228dae);}_0x195faa(_0x488b6e);});}function getInteractionTags(_0x5671c7,_0x8fa41b){return new BPromise(function(_0x7123c1,_0x2aacdf){try{if(_0x5671c7[_0xf955('0x42')]){_0x5671c7[_0xf955('0x43')]=[];_0x5671c7[_0xf955('0x42')][_0xf955('0x44')](',')[_0xf955('0x45')](function(_0x47651b){_0x5671c7[_0xf955('0x43')][_0xf955('0x46')](_0x8fa41b[_0x47651b]);});}delete _0x5671c7[_0xf955('0x42')];}catch(_0x40d7e9){_0x2aacdf(_0x40d7e9);}_0x7123c1(_0x5671c7);});}function updateChatInteraction(_0x159ae3,_0x3557b5,_0x248f60){return new BPromise(function(_0x356ec2,_0x34f0f1){return getInteractionUsers(_0x159ae3,_0x248f60)[_0xf955('0x1f')](function(_0x5dd300){return getInteractionTags(_0x5dd300,_0x3557b5);})[_0xf955('0x1f')](function(_0x25d809){_0x356ec2(_0x25d809);})[_0xf955('0x47')](function(_0x5f0ef9){_0x34f0f1(_0x5f0ef9);});});}exports[_0xf955('0x48')]=function(_0x485e77,_0x398224){var _0x56a4ca={},_0x103ac2={},_0x24cb74={'count':0x0,'rows':[]};var _0x213136=_[_0xf955('0x40')](db['ChatInteraction'][_0xf955('0x49')],function(_0xdb1cc){return{'name':_0xdb1cc[_0xf955('0x4a')],'type':_0xdb1cc['type']['key']};});_0x103ac2[_0xf955('0x4b')]=_[_0xf955('0x40')](_0x213136,_0xf955('0x38'));_0x103ac2[_0xf955('0x4c')]=_['keys'](_0x485e77[_0xf955('0x4c')]);_0x103ac2[_0xf955('0x4d')]=_[_0xf955('0x4e')](_0x103ac2['model'],_0x103ac2[_0xf955('0x4c')]);_0x56a4ca['attributes']=_[_0xf955('0x4e')](_0x103ac2[_0xf955('0x4b')],qs[_0xf955('0x4f')](_0x485e77['query'][_0xf955('0x4f')]));_0x56a4ca[_0xf955('0x50')]=_0x56a4ca[_0xf955('0x50')][_0xf955('0x51')]?_0x56a4ca['attributes']:_0x103ac2[_0xf955('0x4b')];if(!_0x485e77[_0xf955('0x4c')][_0xf955('0x52')](_0xf955('0x53'))){_0x56a4ca[_0xf955('0x30')]=qs['limit'](_0x485e77[_0xf955('0x4c')]['limit']);_0x56a4ca[_0xf955('0x2e')]=qs['offset'](_0x485e77[_0xf955('0x4c')]['offset']);}_0x56a4ca['order']=qs[_0xf955('0x54')](_0x485e77[_0xf955('0x4c')]['sort']);_0x56a4ca[_0xf955('0x55')]=qs['filters'](_['pick'](_0x485e77['query'],_0x103ac2['filters']),_0x213136);var _0x3c37e2=[];var _0x1abe1c=squel['select']()['field']('id')[_0xf955('0x56')](_0xf955('0x38'))[_0xf955('0x56')](_0xf955('0x57'))[_0xf955('0x58')](_0xf955('0x59'));var _0x190500=squel[_0xf955('0x5a')]()[_0xf955('0x56')](_0xf955('0x5b'))[_0xf955('0x56')](_0xf955('0x5c'))['field'](_0xf955('0x5d'))[_0xf955('0x58')](_0xf955('0x5e'),'ui')[_0xf955('0x5f')](_0xf955('0x60'),'u','u.id\x20=\x20ui.UserId');var _0xf5d575=squel[_0xf955('0x5a')]()[_0xf955('0x58')](_0xf955('0x61'),'i')[_0xf955('0x5f')](_0xf955('0x62'),'c',_0xf955('0x63'))[_0xf955('0x5f')](_0xf955('0x60'),'o',_0xf955('0x64'))['left_join'](_0xf955('0x65'),'a',_0xf955('0x66'))[_0xf955('0x5f')](_0xf955('0x67'),'me',_0xf955('0x68'))[_0xf955('0x5f')](_0xf955('0x69'),'it',_0xf955('0x6a'))[_0xf955('0x5f')](_0xf955('0x59'),'t',_0xf955('0x6b'));var _0x2b8173=squel['expr']();var _0x1388a0=[];var _0x452de9=squel[_0xf955('0x6c')]();var _0x3eb727;if(_0x485e77[_0xf955('0x4c')][_0xf955('0x6d')]){_0x3eb727=as[_0xf955('0x6e')](_0x485e77['query']['search']);var _0x5e73ff=_0x3eb727[_0xf955('0x6f')];for(var _0x530ec7=0x0;_0x530ec7<_0x3eb727['conditions'][_0xf955('0x51')];_0x530ec7++){var _0x533e0f=_0x3eb727[_0xf955('0x70')][_0x530ec7];var _0x3fa5b5='i';var _0x158469=_[_0xf955('0x71')](_0x213136,['name',_0x533e0f[_0xf955('0x56')]]);if(!_0x158469){switch(_0x533e0f[_0xf955('0x56')]){case _0xf955('0x72'):if(_0x533e0f[_0xf955('0x73')]==0x1){_0xf5d575[_0xf955('0x74')]('`'+_0x533e0f['field']+_0xf955('0x75'));}else{_0xf5d575['having']('`'+_0x533e0f[_0xf955('0x56')]+_0xf955('0x76'));}break;case _0xf955('0x77'):if(_0x533e0f['operator']===_0xf955('0x78')){if(_0x533e0f[_0xf955('0x73')][_0xf955('0x44')]('\x20')[_0xf955('0x51')]>0x1){_0x2b8173[_0x5e73ff](_0xf955('0x79'),qs[_0xf955('0x7a')](_0x533e0f[_0xf955('0x73')]),null);}else{var _0x47e5de='%'+_0x533e0f['value']+'%';_0x2b8173[_0x5e73ff](_0xf955('0x7b'),_0x47e5de,_0x47e5de,_0x47e5de);}}else{_0x158469=_[_0xf955('0x71')](_0x213136,[_0xf955('0x38'),_0xf955('0x7c')]);_0x533e0f[_0xf955('0x56')]=_0xf955('0x7c');_0x4b85c2=as[_0xf955('0x7d')](_0x3fa5b5,_0x158469[_0xf955('0x7e')],_0x533e0f);_0x2b8173[_0x5e73ff](_0x4b85c2[_0xf955('0x7f')],_0x4b85c2[_0xf955('0x73')][_0xf955('0x80')],_0x4b85c2['value'][_0xf955('0x2b')]);}break;case'Tag':var _0x431729=_0x533e0f['value']['split'](',')[_0xf955('0x40')](function(_0x20f11c){return Number(_0x20f11c);});_0x431729['forEach'](function(_0x1e95c3){_0x452de9['or'](_0xf955('0x81'),'%,'+_0x1e95c3+',%');});_0x1388a0=_['union'](_0x1388a0,_0x431729);break;case'User':if(_0x533e0f[_0xf955('0x82')]===_0xf955('0x78')){_0x2b8173[_0x5e73ff](_0xf955('0x83'),'%'+_0x533e0f['value']+'%',null);}else{_0x158469=_[_0xf955('0x71')](_0x213136,[_0xf955('0x38'),_0xf955('0x84')]);_0x533e0f[_0xf955('0x56')]=_0xf955('0x84');_0x4b85c2=as[_0xf955('0x7d')](_0x3fa5b5,_0x158469[_0xf955('0x7e')],_0x533e0f);_0x2b8173[_0x5e73ff](_0x4b85c2[_0xf955('0x7f')],_0x4b85c2['value'][_0xf955('0x80')],_0x4b85c2[_0xf955('0x73')]['end']);}break;case _0xf955('0x3a'):_0x4b85c2=as[_0xf955('0x7d')]('me',null,_0x533e0f);_0x2b8173[_0x5e73ff](_0x4b85c2[_0xf955('0x7f')],_0x4b85c2[_0xf955('0x73')]['start'],_0x4b85c2[_0xf955('0x73')][_0xf955('0x2b')]);break;}}else{var _0x4b85c2=as['buildExpression'](_0x3fa5b5,_0x158469[_0xf955('0x7e')],_0x533e0f);_0x2b8173[_0x5e73ff](_0x4b85c2[_0xf955('0x7f')],_0x4b85c2[_0xf955('0x73')][_0xf955('0x80')],_0x4b85c2['value'][_0xf955('0x2b')]);}}}else{var _0x430571=_(_0x485e77[_0xf955('0x4c')])[_0xf955('0x85')]()[_0xf955('0x40')](function(_0x3e9c6e){return _[_0xf955('0x86')](_0x213136,[_0xf955('0x38'),_0x3e9c6e])?_0x3e9c6e:undefined;})[_0xf955('0x87')]()[_0xf955('0x73')]();if(!_[_0xf955('0x88')](_0x430571)){_0x430571[_0xf955('0x45')](function(_0x4254a2){if(_0x4254a2==='ChatWebsiteId'){_0xf5d575[_0xf955('0x55')](_0xf955('0x89'),[][_0xf955('0x8a')](_0x485e77[_0xf955('0x4c')][_0x4254a2]));}else if(_0x4254a2==='createdAt'){var _0xcf6900=JSON[_0xf955('0x8b')](_0x485e77[_0xf955('0x4c')][_0x4254a2])[_0xf955('0x8c')];var _0x2b266d=JSON[_0xf955('0x8b')](_0x485e77[_0xf955('0x4c')][_0x4254a2])[_0xf955('0x8d')];_0xf5d575[_0xf955('0x55')](_0xf955('0x8e'),_0xcf6900,_0x2b266d);}else{if(_0x485e77[_0xf955('0x4c')][_0x4254a2]==='null'){_0xf5d575[_0xf955('0x55')]('i.'+_0x4254a2+_0xf955('0x8f'));}else{_0xf5d575[_0xf955('0x55')]('i.'+_0x4254a2+_0xf955('0x90'),_0x485e77[_0xf955('0x4c')][_0x4254a2]);}}});}if(_0x485e77[_0xf955('0x4c')][_0xf955('0x91')]){if(_0x485e77['query'][_0xf955('0x91')]==0x1){_0xf5d575['having'](_0xf955('0x92'));}else{_0xf5d575['having'](_0xf955('0x93'));}}if(_0x485e77[_0xf955('0x4c')][_0xf955('0x94')]){_0x1388a0=_[_0xf955('0x95')](_0x485e77[_0xf955('0x4c')][_0xf955('0x94')])?_0x485e77['query'][_0xf955('0x94')]:new Array(_0x485e77[_0xf955('0x4c')][_0xf955('0x94')]);_0x1388a0['forEach'](function(_0x526346){_0x452de9['or'](_0xf955('0x81'),'%,'+_0x526346+',%');});}if(_0x485e77[_0xf955('0x4c')][_0xf955('0x96')]){var _0x595d60=_0x485e77[_0xf955('0x4c')]['filter'][_0xf955('0x97')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0xf955('0x98')](_0x595d60)){_0x2b8173['or'](_0xf955('0x99'),_0x595d60+'%');}else{_0x2b8173['or'](_0xf955('0x9a'),qs['getFullTextValue'](_0x595d60))['or'](_0xf955('0x9b'),_0x595d60+'%');}}}_0xf5d575[_0xf955('0x55')](_0x2b8173);_0xf5d575[_0xf955('0x9c')]('i.id');var _0xba62d0={'type':db[_0xf955('0x9d')][_0xf955('0x9e')][_0xf955('0x9f')],'raw':!![]};var _0x419da5=_0xf5d575[_0xf955('0xa0')]();_0x419da5[_0xf955('0x56')]('i.id');_0x419da5[_0xf955('0x56')](_0xf955('0xa1'),_0xf955('0x72'));if(_0x56a4ca[_0xf955('0xa2')]){_0x56a4ca[_0xf955('0xa2')]['forEach'](function(_0x15c3e1){var _0x23f90c=_0x15c3e1[0x0]==='contactName'?_0x15c3e1[0x0]:'i.'+_0x15c3e1[0x0];_0xf5d575['order'](_0x23f90c,_0x15c3e1[0x1]===_0xf955('0xa3')?![]:!![]);});}if(!_[_0xf955('0x88')](_0x1388a0)){_0xf5d575[_0xf955('0x74')](_0x452de9);_0x419da5[_0xf955('0x55')]('t.id\x20IN\x20?',_0x1388a0);}BPromise[_0xf955('0xa4')]()['then'](function(){if(!_0x3eb727){if(_0x485e77['query'][_0xf955('0xa5')])return;_0x419da5[_0xf955('0x55')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');_0xf5d575['where'](_0xf955('0xa6'));return;}if(_0x485e77[_0xf955('0xa7')][_0xf955('0xa8')]!=='agent')return;return _0x485e77['user'][_0xf955('0xa9')]({'attributes':['id'],'raw':!![]})[_0xf955('0x1f')](function(_0x15fc7e){if(_['isEmpty'](_0x15fc7e)){_0x419da5['where']('i.ChatWebsiteId\x20IS\x20NULL');_0xf5d575['where'](_0xf955('0xaa'));}else{_0x419da5['where'](_0xf955('0x89'),_[_0xf955('0x40')](_0x15fc7e,'id'));_0xf5d575[_0xf955('0x55')](_0xf955('0x89'),_[_0xf955('0x40')](_0x15fc7e,'id'));}});})['then'](function(){if(_0x485e77[_0xf955('0xa7')][_0xf955('0xa8')]===_0xf955('0x3c')&&!_0x3eb727&&!_0x485e77[_0xf955('0x4c')]['ChatWebsiteId'])return[];return db[_0xf955('0xab')][_0xf955('0x4c')](_0x419da5['toString'](),_0xba62d0);})[_0xf955('0x1f')](function(_0x1819f6){_0x24cb74[_0xf955('0x31')]=_0x1819f6[_0xf955('0x51')];if(_0x24cb74[_0xf955('0x31')]===0x0)return[];return db[_0xf955('0xab')]['query'](_0x1abe1c['toString'](),_0xba62d0)[_0xf955('0x1f')](function(_0x545275){_0x3c37e2=_[_0xf955('0xac')](_0x545275,'id');_0xba62d0=_[_0xf955('0x39')](_0xba62d0,{'model':db[_0xf955('0xad')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x485e77[_0xf955('0x4c')]['fields']){_0x56a4ca['attributes'][_0xf955('0x45')](function(_0x12b9f8){_0xf5d575[_0xf955('0x56')]('i.'+_0x12b9f8);});}else{_0xf5d575[_0xf955('0x56')](_0xf955('0xa1'),'unreadMessages');_0xf5d575[_0xf955('0x56')](_0xf955('0xae'),_0xf955('0xaf'));_0xf5d575[_0xf955('0x56')]('a.mandatoryDisposition','Account.mandatoryDisposition');_0xf5d575[_0xf955('0x56')](_0xf955('0xb0'),'contactName');_0xf5d575[_0xf955('0x56')](_0xf955('0xb1'));_0xf5d575[_0xf955('0x56')](_0xf955('0xb2'),'Contact.firstName');_0xf5d575[_0xf955('0x56')](_0xf955('0xb3'),_0xf955('0xb4'));_0xf5d575[_0xf955('0x56')](_0xf955('0xb5'),_0xf955('0xb6'));_0xf5d575[_0xf955('0x56')]('c.phone','Contact.phone');_0xf5d575['field'](_0xf955('0xb7'),_0xf955('0xb8'));_0xf5d575[_0xf955('0x56')](_0xf955('0xb9'),_0xf955('0xba'));_0xf5d575[_0xf955('0x56')](_0xf955('0xbb'),'Owner.fullname');_0xf5d575[_0xf955('0x56')](_0xf955('0xbc'),'Owner.internal');_0xf5d575[_0xf955('0x56')](_0xf955('0xbd'),_0xf955('0x42'));}if(_0x56a4ca[_0xf955('0x30')])_0xf5d575[_0xf955('0x30')](_0x56a4ca[_0xf955('0x30')]);if(_0x56a4ca[_0xf955('0x2e')])_0xf5d575[_0xf955('0x2e')](_0x56a4ca['offset']);return db['sequelize']['query'](_0xf5d575[_0xf955('0xbe')](),_0xba62d0);})[_0xf955('0x1f')](function(_0x210666){if(_0x210666[_0xf955('0x51')]>0x0)_0x190500[_0xf955('0x55')]('ui.ChatInteractionId\x20IN\x20?',_[_0xf955('0x40')](_0x210666,'id'));return db[_0xf955('0xab')][_0xf955('0x4c')](_0x190500[_0xf955('0xbe')](),_0xba62d0)[_0xf955('0x1f')](function(_0x36731b){var _0x11f6f8=_[_0xf955('0xbf')](_0x36731b,_0xf955('0xc0'));var _0x4a71e5=[];_0x210666[_0xf955('0x45')](function(_0x47daca){_0x4a71e5[_0xf955('0x46')](updateChatInteraction(_0x47daca,_0x3c37e2,_0x11f6f8));});return BPromise[_0xf955('0xc1')](_0x4a71e5);});});})[_0xf955('0x1f')](function(_0x427ab9){_0x24cb74[_0xf955('0xc2')]=_0x427ab9;return _0x24cb74;})[_0xf955('0x1f')](respondWithFilteredResult(_0x398224,_0x56a4ca))[_0xf955('0x47')](handleError(_0x398224,null));};exports['show']=function(_0x1ef189,_0x4bb590){var _0x222df2={'raw':![],'where':{'id':_0x1ef189['params']['id']}},_0x40d7c7={};_0x40d7c7[_0xf955('0x4b')]=_[_0xf955('0x85')](db[_0xf955('0xad')][_0xf955('0x49')]);_0x40d7c7[_0xf955('0x4c')]=_[_0xf955('0x85')](_0x1ef189[_0xf955('0x4c')]);_0x40d7c7['filters']=_[_0xf955('0x4e')](_0x40d7c7[_0xf955('0x4b')],_0x40d7c7['query']);_0x222df2[_0xf955('0x50')]=_[_0xf955('0x4e')](_0x40d7c7['model'],qs['fields'](_0x1ef189[_0xf955('0x4c')][_0xf955('0x4f')]));_0x222df2[_0xf955('0x50')]=_0x222df2['attributes'][_0xf955('0x51')]?_0x222df2[_0xf955('0x50')]:_0x40d7c7[_0xf955('0x4b')];if(_0x1ef189[_0xf955('0x4c')][_0xf955('0xc3')]){_0x222df2[_0xf955('0xc4')]=[{'all':!![]}];}_0x222df2=_[_0xf955('0x39')]({},_0x222df2,_0x1ef189[_0xf955('0xc5')]);return db[_0xf955('0xad')][_0xf955('0x71')](_0x222df2)[_0xf955('0x1f')](handleEntityNotFound(_0x4bb590,null))[_0xf955('0x1f')](respondWithResult(_0x4bb590,null))[_0xf955('0x47')](handleError(_0x4bb590,null));};exports[_0xf955('0xc6')]=function(_0x490981,_0x58464d){return db[_0xf955('0xad')][_0xf955('0xc6')](_0x490981[_0xf955('0x3a')],{})[_0xf955('0x1f')](respondWithResult(_0x58464d,0xc9))[_0xf955('0x47')](handleError(_0x58464d,null));};exports['update']=function(_0x161d06,_0x3bab0d){if(_0x161d06['body']['id']){delete _0x161d06[_0xf955('0x3a')]['id'];}return db[_0xf955('0xad')][_0xf955('0x71')]({'where':{'id':_0x161d06[_0xf955('0xc7')]['id']}})['then'](handleEntityNotFound(_0x3bab0d,null))[_0xf955('0x1f')](saveUpdates(_0x161d06['body'],null))[_0xf955('0x1f')](respondWithResult(_0x3bab0d,null))[_0xf955('0x47')](handleError(_0x3bab0d,null));};exports[_0xf955('0x36')]=function(_0xe9f9a8,_0x5aff59){return db[_0xf955('0xad')][_0xf955('0x71')]({'where':{'id':_0xe9f9a8[_0xf955('0xc7')]['id']}})[_0xf955('0x1f')](handleEntityNotFound(_0x5aff59,null))[_0xf955('0x1f')](removeEntity(_0x5aff59,null))['catch'](handleError(_0x5aff59,null));};exports[_0xf955('0xc8')]=function(_0x1f38db,_0x395013){return db['ChatInteraction'][_0xf955('0xc8')]()[_0xf955('0x1f')](respondWithResult(_0x395013,null))[_0xf955('0x47')](handleError(_0x395013,null));};exports[_0xf955('0xc9')]=function(_0x19665c,_0x437020){var _0x12d158=_0x19665c['params']['id'];var _0x5a6abe;var _0x4e3013;var _0x345a7c;return db[_0xf955('0xad')]['findOne']({'where':{'id':_0x12d158}})[_0xf955('0x1f')](function(_0x42ba43){_0x5a6abe=_0x42ba43;return db[_0xf955('0xca')]['findOne']({'where':{'id':_0x42ba43[_0xf955('0xa5')]},'attributes':['id',_0xf955('0xcb'),'vidaooEscalation','vidaooTopic',_0xf955('0xcc'),_0xf955('0xcd')],'raw':!![]});})[_0xf955('0x1f')](function(_0x30baa1){if(_0x30baa1&&_0x30baa1[_0xf955('0xcb')]&&_0x30baa1['vidaooEscalation']){_0x4e3013=_0x30baa1;var _0xc881d4={'interaction':{'id':_0x12d158},'agent':{'id':_0x19665c[_0xf955('0xa7')]['id'],'name':_0x19665c[_0xf955('0xa7')][_0xf955('0x38')],'fullname':_0x19665c[_0xf955('0xa7')]['fullname'],'email':_0x19665c[_0xf955('0xa7')][_0xf955('0xce')]},'contact':_0x19665c[_0xf955('0x3a')][_0xf955('0x3b')],'account':_0x19665c['body'][_0xf955('0x3e')]};var _0x410d1f={'rejectUnauthorized':![],'method':_0xf955('0xcf'),'url':_0xf955('0xd0'),'headers':{'X-APIKEY':_0x30baa1[_0xf955('0xcb')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x19665c['user'][_0xf955('0xce')]],'buttons':null,'topic':_0x4e3013[_0xf955('0xd1')],'note':_['isNull'](_0x4e3013[_0xf955('0xcc')])?null:getMustacheRender(_0x4e3013[_0xf955('0xcc')],_0xc881d4),'metadata':null},'redirect':_0xf955('0xd2'),'json':!![]};try{if(!_[_0xf955('0xd3')](_0x4e3013[_0xf955('0xcd')])){var _0x38e031=getMustacheRender(_0x4e3013[_0xf955('0xcd')],_0xc881d4);var _0x4f53ef=JSON[_0xf955('0x8b')](_0x38e031);_0x410d1f[_0xf955('0x3a')]['metadata']=_0x4f53ef;}}catch(_0x5395aa){throw new db[(_0xf955('0x9d'))][(_0xf955('0xd4'))](_0xf955('0xd5'));}return rp(_0x410d1f);}else{throw new db[(_0xf955('0x9d'))]['ValidationError'](_0xf955('0xd6'));}})[_0xf955('0x1f')](function(_0x57e0d7){_0x345a7c=_0x57e0d7;if(_0x345a7c['id']){var _0x54903a={'body':_0x345a7c[_0xf955('0xd7')],'ChatWebsiteId':_0x4e3013['id'],'ChatInteractionId':_0x5a6abe['id'],'direction':_0xf955('0xd8'),'UserId':_0x19665c[_0xf955('0xa7')]['id']};return db[_0xf955('0xd9')]['create'](_0x54903a,{});}else{throw new db[(_0xf955('0x9d'))][(_0xf955('0xd4'))](_0xf955('0xda'));}})[_0xf955('0x1f')](function(){return _0x5a6abe[_0xf955('0xdb')]({'vidaooSessionId':_0x345a7c['id']});})[_0xf955('0x1f')](respondWithResult(_0x437020,null))[_0xf955('0x47')](handleError(_0x437020,null));};exports[_0xf955('0xdc')]=function(_0x4c7a54,_0xde084e){if(_0x4c7a54[_0xf955('0x3a')]['id']){delete _0x4c7a54[_0xf955('0x3a')]['id'];}return db[_0xf955('0xad')][_0xf955('0x71')]({'where':{'id':_0x4c7a54[_0xf955('0xc7')]['id']},'include':[{'model':db[_0xf955('0xdd')],'as':_0xf955('0x77')}]})[_0xf955('0x1f')](handleEntityNotFound(_0xde084e,null))[_0xf955('0x1f')](saveUpdates(_0x4c7a54['body'],null))[_0xf955('0x1f')](respondWithResult(_0xde084e,null))[_0xf955('0x47')](handleError(_0xde084e,null));};exports[_0xf955('0xde')]=function(_0x27391f,_0x269ae2,_0x3250df){if(_0x27391f[_0xf955('0x3a')]['id']){delete _0x27391f['body']['id'];}return db[_0xf955('0xad')]['find']({'where':{'id':_0x27391f[_0xf955('0xc7')]['id']}})[_0xf955('0x1f')](function(_0x14cde9){if(!_0x14cde9){logger[_0xf955('0x25')](_0xf955('0xdf'),_0xf955('0xde'),0x194,_0xf955('0xe0'));_0x269ae2[_0xf955('0x2a')](0x194);}else{if(_0x14cde9[_0xf955('0x84')]){throw new db['Sequelize'][(_0xf955('0xd4'))](_0xf955('0xe1'));}}return _0x14cde9;})[_0xf955('0x1f')](function(_0x3d5c15){if(_0x3d5c15){return _0x3d5c15[_0xf955('0xe2')]({'closed':_0x27391f[_0xf955('0x3a')]['closed'],'disposition':_0x27391f[_0xf955('0x3a')][_0xf955('0xe3')]})[_0xf955('0x1f')](function(_0x5c8a3f){return _0x5c8a3f;});}})[_0xf955('0x1f')](function(_0x471223){return respondWithRpcPromise(_0xf955('0xe4'),_0xf955('0xde'),_0x27391f[_0xf955('0x3a')],client9004);})[_0xf955('0x1f')](respondWithResult(_0x269ae2,null))['catch'](handleError(_0x269ae2,null));};exports[_0xf955('0xe5')]=function(_0x4775bd,_0x2a862f,_0x42e3eb){_0x4775bd[_0xf955('0x3a')][_0xf955('0x38')]=_0x4775bd['file'][_0xf955('0xe6')];_0x4775bd['body']['basename']=_0x4775bd['file']['filename'];_0x4775bd[_0xf955('0x3a')]['type']=_0x4775bd[_0xf955('0xe7')][_0xf955('0xe8')];return db['Attachment'][_0xf955('0xc6')](_0x4775bd['body'])[_0xf955('0x1f')](respondWithResult(_0x2a862f,0xc9))['catch'](handleError(_0x2a862f,null));};exports[_0xf955('0xe9')]=function(_0x267963,_0x28ce39,_0x43a5c3){return db['ChatInteraction'][_0xf955('0xea')]({'where':{'id':_0x267963['params']['id']},'raw':!![]})[_0xf955('0x1f')](handleEntityNotFound(_0x28ce39,null))[_0xf955('0x1f')](function(_0x30fd01){if(_0x30fd01){if(_0x30fd01[_0xf955('0xeb')]){return _0x28ce39[_0xf955('0x2c')](0x193)[_0xf955('0x2d')]({'status':0x193,'message':_0xf955('0xec')});}return db[_0xf955('0xed')][_0xf955('0xea')]({'where':{'id':_0x267963[_0xf955('0x4c')]['attachId']},'raw':!![]})[_0xf955('0x1f')](handleEntityNotFound(_0x28ce39,null));}})[_0xf955('0x1f')](function(_0x444e24){if(_0x444e24){var _0x2fb11a=_0x444e24[_0xf955('0xee')]!==null;var _0x2ce35c=path[_0xf955('0xef')](config['root'],_0xf955('0xf0'));if(_0x2fb11a){_0x2ce35c=path[_0xf955('0xef')](_0x2ce35c,_0xf955('0xf1'));}var _0x1e35d7=path[_0xf955('0xef')](_0x2ce35c,_0x444e24[_0xf955('0xf2')]);return _0x28ce39[_0xf955('0xf3')](_0x1e35d7);}})[_0xf955('0x47')](handleError(_0x28ce39,null));};exports[_0xf955('0xf4')]=function(_0x38016a,_0x52ad4d){var _0x1620ec=null;var _0x2c8e49=null;var _0x2b3deb=null;var _0x1ae12a=null;if(_0x38016a[_0xf955('0x3a')]['id']){delete _0x38016a[_0xf955('0x3a')]['id'];}if(_0x38016a[_0xf955('0x3a')][_0xf955('0xf5')]){_0x1ae12a=path['join'](config[_0xf955('0xf6')],_0xf955('0xf7'),util[_0xf955('0xf8')](_0xf955('0xf9'),Date[_0xf955('0xfa')]()));_0x38016a[_0xf955('0x3a')][_0xf955('0xfb')]=_0x1ae12a;}return db[_0xf955('0xad')]['find']({'where':{'id':_0x38016a['params']['id']},'include':[{'model':db[_0xf955('0xd9')],'as':_0xf955('0xfc'),'include':[{'model':db[_0xf955('0xfd')],'as':_0xf955('0xfd')}]}]})['then'](handleEntityNotFound(_0x52ad4d,null))['then'](saveUpdates(_0x38016a[_0xf955('0x3a')],null))[_0xf955('0x1f')](function(_0x4860ad){if(_0x4860ad){_0x1620ec=_0x4860ad;return db[_0xf955('0xca')][_0xf955('0x71')]({'where':{'id':_0x1620ec[_0xf955('0xa5')]}});}})[_0xf955('0x1f')](function(_0x1c0211){if(_0x1c0211){_0x2b3deb=_0x1c0211;return db['CmContact'][_0xf955('0x71')]({'where':{'id':_0x1620ec[_0xf955('0x7c')]}});}})[_0xf955('0x1f')](function(_0x106640){if(_0x106640){_0x2c8e49=_0x106640;if(_0x1ae12a){var _0x101722=null;for(var _0x479dc0=0x1;_0x479dc0<_0x1620ec[_0xf955('0xfc')]['length'];++_0x479dc0){_0x101722=_0x1620ec[_0xf955('0xfc')][_0x479dc0];var _0x570005=_0x101722[_0xf955('0x84')]?util[_0xf955('0xf8')](_0xf955('0xfe'),_0x2b3deb[_0xf955('0xff')],_0x101722[_0xf955('0x84')]):_0xf955('0x100');var _0x85661f=_0x38016a[_0xf955('0x3a')][_0xf955('0x101')]||util[_0xf955('0xf8')]('%s%d','Visitor',_0x101722[_0xf955('0x7c')]);switch(_0x2b3deb[_0xf955('0x102')]){case _0xf955('0x103'):_0x570005=_0x101722[_0xf955('0x84')]?util['format']('%s%d',_0x2b3deb[_0xf955('0xff')],_0x101722['UserId']):'System';break;case _0xf955('0x104'):_0x570005=_0x101722['UserId']?_0x101722[_0xf955('0xfd')][_0xf955('0x105')]||_0x101722['User']['fullname']:_0xf955('0x100');break;case _0xf955('0x106'):_0x570005=_0x101722[_0xf955('0x84')]?_0x101722[_0xf955('0xfd')][_0xf955('0x41')]:'System';break;default:_0x570005=_0x101722[_0xf955('0x84')]?util['format']('%s%d',_0x2b3deb['agentAlias'],_0x101722[_0xf955('0x84')]):_0xf955('0x100');}var _0x23d382=util['format']('[%s]\x20%s:\x20%s\x0a',moment(_0x101722[_0xf955('0x107')])['format'](_0xf955('0x108')),_0x101722['direction']==='in'?_0x85661f:_0x570005,_0x101722[_0xf955('0x3a')]);if(!_0x101722[_0xf955('0x109')]){fs['appendFileSync'](_0x1ae12a,_0x23d382);}}return db[_0xf955('0x10a')]['findOne']({'where':{'service':!![]},'include':[{'model':db[_0xf955('0x10b')],'as':_0xf955('0x10c'),'raw':!![]}]});}}})[_0xf955('0x1f')](function(_0x1e6165){if(_0x1e6165&&_0x1e6165[_0xf955('0x10c')]&&_0x38016a['body']){var _0x4a6338={'tls':{'rejectUnauthorized':![]}};if(_0x1e6165[_0xf955('0x10c')][_0xf955('0x10d')]){_0x4a6338[_0xf955('0x10d')]=_0x1e6165[_0xf955('0x10c')][_0xf955('0x10d')];}else{_0x4a6338[_0xf955('0x10e')]=_0x1e6165[_0xf955('0x10c')][_0xf955('0x10e')];_0x4a6338[_0xf955('0x10f')]=_0x1e6165['Smtp'][_0xf955('0x10f')];_0x4a6338[_0xf955('0x110')]=_0x1e6165[_0xf955('0x10c')][_0xf955('0x110')];}if(_0x1e6165[_0xf955('0x10c')]['authentication']){_0x4a6338[_0xf955('0x111')]={'user':_0x1e6165[_0xf955('0x10c')]['user'],'pass':_0x1e6165[_0xf955('0x10c')]['pass']};}return respondWithRpcPromise('SendMail',_0xf955('0x112'),{'account':_0x4a6338,'message':{'from':util[_0xf955('0xf8')](_0xf955('0x113'),_0x1e6165[_0xf955('0x38')],_0x1e6165['email']||_0x1e6165[_0xf955('0x10c')][_0xf955('0xa7')]),'to':_0x38016a[_0xf955('0x3a')][_0xf955('0xf5')],'subject':'Mail\x20Transcript','text':util[_0xf955('0xf8')](_0xf955('0x114'),_0x38016a['body'][_0xf955('0xf5')]),'attachments':[{'path':_0x1ae12a}]}})[_0xf955('0x1f')](function(){return _0x1620ec;})[_0xf955('0x47')](function(_0x50502a){console[_0xf955('0x25')](_0x50502a);});}else{return _0x1620ec;}})[_0xf955('0x1f')](respondWithStatusCode(_0x52ad4d,0xc8))[_0xf955('0x47')](handleError(_0x52ad4d,null));};exports['addMessage']=function(_0x1d2e9c,_0x49718e,_0x5aeba7){return db['ChatMessage'][_0xf955('0x71')]({'where':{'id':_0x1d2e9c[_0xf955('0xc7')]['id']}})[_0xf955('0x1f')](handleEntityNotFound(_0x49718e,null))[_0xf955('0x1f')](function(_0x10cd8e){if(_0x10cd8e){return _0x10cd8e[_0xf955('0x115')](_0x1d2e9c['body'][_0xf955('0x116')],_[_0xf955('0x117')](_0x1d2e9c[_0xf955('0x3a')],[_0xf955('0x116'),'id'])||{});}})[_0xf955('0x1f')](respondWithResult(_0x49718e,null))[_0xf955('0x47')](handleError(_0x49718e,null));};exports[_0xf955('0x118')]=function(_0x287adf,_0x38177d,_0x56a307){var _0x49c6ca={'raw':![],'where':{}};var _0x36f3b3={};var _0x252118={'count':0x0,'rows':[]};return db[_0xf955('0xad')]['findOne']({'where':{'id':_0x287adf['params']['id']}})[_0xf955('0x1f')](handleEntityNotFound(_0x38177d,null))['then'](function(_0x1dd4b4){if(_0x1dd4b4){_0x36f3b3[_0xf955('0x4b')]=_[_0xf955('0x85')](db[_0xf955('0xd9')]['rawAttributes']);_0x36f3b3[_0xf955('0x4c')]=_[_0xf955('0x85')](_0x287adf[_0xf955('0x4c')]);_0x36f3b3['filters']=_[_0xf955('0x4e')](_0x36f3b3['model'],_0x36f3b3[_0xf955('0x4c')]);_0x49c6ca[_0xf955('0x50')]=_[_0xf955('0x4e')](_0x36f3b3[_0xf955('0x4b')],qs['fields'](_0x287adf[_0xf955('0x4c')][_0xf955('0x4f')]));_0x49c6ca[_0xf955('0x50')]=_0x49c6ca['attributes'][_0xf955('0x51')]?_0x49c6ca['attributes']:_0x36f3b3[_0xf955('0x4b')];if(!_0x287adf['query'][_0xf955('0x52')]('nolimit')){_0x49c6ca[_0xf955('0x30')]=qs['limit'](_0x287adf['query']['limit']);_0x49c6ca[_0xf955('0x2e')]=qs['offset'](_0x287adf['query'][_0xf955('0x2e')]);}_0x49c6ca[_0xf955('0xa2')]=qs[_0xf955('0x54')](_0x287adf[_0xf955('0x4c')][_0xf955('0x54')]);_0x49c6ca[_0xf955('0x55')]=qs[_0xf955('0x4d')](_[_0xf955('0x119')](_0x287adf['query'],_0x36f3b3[_0xf955('0x4d')]));_0x49c6ca[_0xf955('0x55')][_0xf955('0xc0')]=_0x1dd4b4['id'];if(_0x287adf[_0xf955('0x4c')][_0xf955('0x96')]){_0x49c6ca[_0xf955('0x55')]=_[_0xf955('0x39')](_0x49c6ca[_0xf955('0x55')],{'$or':_[_0xf955('0x40')](_0x49c6ca['attributes'],function(_0x1d1df4){var _0x1b7a62={};_0x1b7a62[_0x1d1df4]={'$like':'%'+_0x287adf[_0xf955('0x4c')][_0xf955('0x96')]+'%'};return _0x1b7a62;})});}if(_0x287adf[_0xf955('0x4c')][_0xf955('0x8c')]){var _0x547464=_0x287adf[_0xf955('0x4c')][_0xf955('0x8c')][_0xf955('0x44')](',');var _0x280d1c={};_0x280d1c[_0x547464[0x0]]={'$gte':moment(_0x547464[0x1])[_0xf955('0xf8')]('YYYY-MM-DD\x20HH:mm:ss')};_0x49c6ca[_0xf955('0x55')]=_[_0xf955('0x39')](_0x49c6ca['where'],_0x280d1c);}_0x49c6ca=_['merge']({},_0x49c6ca,_0x287adf['options']);return db[_0xf955('0xd9')][_0xf955('0x31')]({'where':_0x49c6ca[_0xf955('0x55')]})[_0xf955('0x1f')](function(_0x14bed6){_0x252118[_0xf955('0x31')]=_0x14bed6;if(_0x287adf[_0xf955('0x4c')][_0xf955('0xc3')]){_0x49c6ca[_0xf955('0xc4')]=[{'all':!![]}];}return db[_0xf955('0xd9')]['findAll'](_0x49c6ca);})[_0xf955('0x1f')](function(_0x7996b8){_0x252118[_0xf955('0xc2')]=_0x7996b8;return _0x252118;});}})[_0xf955('0x1f')](respondWithFilteredResult(_0x38177d,_0x49c6ca))[_0xf955('0x47')](handleError(_0x38177d,null));};exports['getMyMessages']=function(_0xac8cdf,_0x70fa9f,_0x5e650f){var _0x39d911={'where':{}},_0x2fbf0c={},_0x1612e4={'count':0x0,'rows':[]};return db['ChatInteraction'][_0xf955('0xea')]({'where':{'id':_0xac8cdf[_0xf955('0xc7')]['id']}})[_0xf955('0x1f')](handleEntityNotFound(_0x70fa9f,null))[_0xf955('0x1f')](function(_0x1a7da8){if(_0x1a7da8){_0x2fbf0c[_0xf955('0x4b')]=_[_0xf955('0x85')](db['ChatMessage'][_0xf955('0x49')]);_0x2fbf0c['query']=_['keys'](_0xac8cdf['query']);_0x2fbf0c[_0xf955('0x4d')]=_[_0xf955('0x4e')](_0x2fbf0c[_0xf955('0x4b')],_0x2fbf0c[_0xf955('0x4c')]);_0x39d911[_0xf955('0x50')]=_[_0xf955('0x4e')](_0x2fbf0c[_0xf955('0x4b')],qs['fields'](_0xac8cdf['query'][_0xf955('0x4f')]));_0x39d911[_0xf955('0x50')]=_0x39d911['attributes']['length']?_0x39d911[_0xf955('0x50')]:_0x2fbf0c[_0xf955('0x4b')];if(!_0xac8cdf[_0xf955('0x4c')]['hasOwnProperty']('nolimit')){_0x39d911[_0xf955('0x30')]=qs[_0xf955('0x30')](_0xac8cdf[_0xf955('0x4c')][_0xf955('0x30')]);_0x39d911[_0xf955('0x2e')]=qs['offset'](_0xac8cdf['query'][_0xf955('0x2e')]);}_0x39d911[_0xf955('0xa2')]=qs[_0xf955('0x54')](_0xac8cdf[_0xf955('0x4c')]['sort']);_0x39d911[_0xf955('0x55')]=qs[_0xf955('0x4d')](_[_0xf955('0x119')](_0xac8cdf[_0xf955('0x4c')],_0x2fbf0c[_0xf955('0x4d')]));_0x39d911[_0xf955('0x55')]['ChatInteractionId']=_0x1a7da8['id'];if(_0xac8cdf['query'][_0xf955('0x96')]){_0x39d911['where']=_[_0xf955('0x39')](_0x39d911[_0xf955('0x55')],{'$or':_['map'](_0x39d911['attributes'],function(_0x4a3d8c){var _0x170ea7={};_0x170ea7[_0x4a3d8c]={'$like':'%'+_0xac8cdf[_0xf955('0x4c')][_0xf955('0x96')]+'%'};return _0x170ea7;})});}_0x39d911[_0xf955('0x55')][_0xf955('0x109')]=![];if(_0xac8cdf[_0xf955('0x4c')]['id']){_0x39d911[_0xf955('0x55')]['id']={'$gt':_0xac8cdf[_0xf955('0x4c')]['id']};}_0x39d911=_[_0xf955('0x39')]({},_0x39d911,_0xac8cdf['options']);return db[_0xf955('0xd9')]['count']({'where':_0x39d911['where']})[_0xf955('0x1f')](function(_0x36327c){_0x1612e4[_0xf955('0x31')]=_0x36327c;_0x39d911[_0xf955('0xc4')]=[];if(_0xac8cdf['query'][_0xf955('0x11a')]){_0x39d911['include'][_0xf955('0x46')]({'model':db[_0xf955('0xfd')],'as':_0xf955('0xfd'),'attributes':['id',_0xf955('0x41'),'alias']});}if(_0xac8cdf[_0xf955('0x4c')][_0xf955('0xc3')]){_0x39d911[_0xf955('0xc4')]=[{'all':!![]}];}return db[_0xf955('0xd9')][_0xf955('0x11b')](_0x39d911);})[_0xf955('0x1f')](function(_0x3e4239){_0x1612e4[_0xf955('0xc2')]=_0x3e4239;return _0x1612e4;});}})[_0xf955('0x1f')](respondWithFilteredResult(_0x70fa9f,_0x39d911))['catch'](handleError(_0x70fa9f,null));};exports[_0xf955('0x11c')]=function(_0x11a228,_0x2d37c2,_0x932b98){return db[_0xf955('0xad')]['find']({'where':{'id':_0x11a228[_0xf955('0xc7')]['id']}})[_0xf955('0x1f')](handleEntityNotFound(_0x2d37c2,null))[_0xf955('0x1f')](function(_0x147f3c){if(_0x147f3c){return _0x147f3c[_0xf955('0x11d')](_0x11a228[_0xf955('0x3a')]['ids'],_[_0xf955('0x117')](_0x11a228[_0xf955('0x3a')],[_0xf955('0x116'),'id'])||{})[_0xf955('0x11e')](function(){return db[_0xf955('0x11f')]['findAll']({'attributes':['id',_0xf955('0x38'),_0xf955('0x57')],'where':{'id':_0x11a228[_0xf955('0x3a')]['ids']}});})[_0xf955('0x1f')](function(_0xfcaf21){socket['emit'](_0xf955('0x120'),{'id':Number(_0x11a228[_0xf955('0xc7')]['id']),'tags':_0xfcaf21||[]});return{'id':Number(_0x11a228[_0xf955('0xc7')]['id']),'tags':_0xfcaf21||[]};});}})[_0xf955('0x1f')](respondWithResult(_0x2d37c2,null))[_0xf955('0x47')](handleError(_0x2d37c2,null));};exports['removeTags']=function(_0x572efd,_0x357dbc,_0x2b9880){return db[_0xf955('0xad')][_0xf955('0x71')]({'where':{'id':_0x572efd[_0xf955('0xc7')]['id']}})[_0xf955('0x1f')](handleEntityNotFound(_0x357dbc,null))['then'](function(_0x23968f){if(_0x23968f){return _0x23968f[_0xf955('0x121')](_0x572efd[_0xf955('0x4c')][_0xf955('0x116')]);}})['then'](respondWithStatusCode(_0x357dbc,null))[_0xf955('0x47')](handleError(_0x357dbc,null));};exports[_0xf955('0xf3')]=function(_0x3842e1,_0x204e4e){var _0x47b877=moment()[_0xf955('0x122')]()[_0xf955('0xbe')]();var _0x1624e9=path[_0xf955('0xef')](config[_0xf955('0xf6')],_0xf955('0x123'),_0xf955('0x124'),'tmp');var _0x3ccc35=path[_0xf955('0xef')](config[_0xf955('0xf6')],_0xf955('0x123'),_0xf955('0x124'),_0xf955('0x125'));var _0x72b500=path[_0xf955('0xef')](_0x1624e9,_0x47b877);var _0x1d4aa6=util[_0xf955('0xf8')](_0xf955('0x126'),_0x3842e1[_0xf955('0xc7')]['id'],_0x47b877);var _0x4896ae=path[_0xf955('0xef')](_0x1624e9,_0x1d4aa6);var _0x3b67e3=[];_0x3b67e3[_0xf955('0x46')]({'model':db['User'],'as':_0xf955('0xfd'),'attributes':['id','fullname'],'raw':!![]});_0x3b67e3[_0xf955('0x46')]({'model':db[_0xf955('0xdd')],'as':_0xf955('0x77'),'attributes':['id',_0xf955('0x127'),'lastName'],'raw':!![]});if(_0x3842e1['query']['attachments']){_0x3b67e3[_0xf955('0x46')]({'model':db[_0xf955('0xed')],'as':_0xf955('0xed'),'raw':!![]});}var _0x21b589=[{'model':db[_0xf955('0xd9')],'as':'Messages','attributes':['id',_0xf955('0x3a'),_0xf955('0x107'),_0xf955('0x128'),_0xf955('0x109'),'read'],'include':_0x3b67e3}];_0x21b589[_0xf955('0x46')]({'model':db[_0xf955('0xca')],'as':_0xf955('0x129'),'attributes':['id',_0xf955('0x38')]});_0x21b589[_0xf955('0x46')]({'model':db[_0xf955('0xfd')],'as':'Owner','attributes':['id',_0xf955('0x41')]});return db['ChatInteraction'][_0xf955('0x71')]({'where':{'id':_0x3842e1['params']['id']},'include':_0x21b589})[_0xf955('0x1f')](handleEntityNotFound(_0x204e4e,null))[_0xf955('0x1f')](function(_0x1ed31c){if(_0x1ed31c){var _0x2e8dc2=_0x1ed31c[_0xf955('0x12a')]({'plain':!![]});fs[_0xf955('0x12b')](_0x72b500);var _0x58b727={'channel':_0xf955('0x12c'),'account':_0x2e8dc2[_0xf955('0x129')][_0xf955('0x38')],'agent':_0x2e8dc2[_0xf955('0x12d')]?_0x2e8dc2[_0xf955('0x12d')][_0xf955('0x41')]:_0xf955('0x12e'),'createdAt':moment(_0x2e8dc2['createdAt'])[_0xf955('0xf8')]('YYYY-MM-DD\x20HH:mm:ss')[_0xf955('0xbe')](),'closedAt':_0x2e8dc2['closed']?moment(_0x2e8dc2[_0xf955('0x12f')])[_0xf955('0xf8')]('YYYY-MM-DD\x20HH:mm:ss')[_0xf955('0xbe')]():'','disposition':_0x2e8dc2['disposition'],'chatInfo':{'browser':_0x2e8dc2[_0xf955('0x130')],'os':_0x2e8dc2['osName'],'referer':_0x2e8dc2[_0xf955('0x131')],'customerIp':_0x2e8dc2[_0xf955('0x132')],'customerPort':_0x2e8dc2[_0xf955('0x133')]?_0x2e8dc2[_0xf955('0x133')]:'N.A.'},'messages':_(_0x2e8dc2[_0xf955('0xfc')])[_0xf955('0x134')]()[_0xf955('0x96')]({'secret':![]})[_0xf955('0x40')](function(_0x1307a6){if(_0x1307a6[_0xf955('0xed')]){var _0x3328b9=path[_0xf955('0xef')](_0x3ccc35,_0x1307a6['Attachment'][_0xf955('0xf2')]);if(fs[_0xf955('0x135')](_0x3328b9)){fs[_0xf955('0x136')](_0x3328b9)[_0xf955('0x137')](fs['createWriteStream'](path[_0xf955('0xef')](_0x72b500,_0x1307a6[_0xf955('0xed')][_0xf955('0xf2')])));}}return{'date':moment(_0x1307a6[_0xf955('0x107')])[_0xf955('0xf8')](_0xf955('0x138'))['toString'](),'sender':_0x1307a6[_0xf955('0x128')]===_0xf955('0xd8')?_0x1307a6['User']?_0x1307a6[_0xf955('0xfd')][_0xf955('0x41')]:_0xf955('0x100'):_0x1307a6[_0xf955('0x77')][_0xf955('0x127')]+(_0x1307a6[_0xf955('0x77')][_0xf955('0x139')]?'\x20'+_0x1307a6['Contact'][_0xf955('0x139')]:''),'body':_0x1307a6[_0xf955('0xed')]?_0x1307a6[_0xf955('0xed')][_0xf955('0xf2')]:_0x1307a6[_0xf955('0x3a')],'direction':_0x1307a6[_0xf955('0x128')]===_0xf955('0xd8')?'A':'C','secret':_0x1307a6['secret'],'read':_0x1307a6[_0xf955('0x91')],'attachment':_0x1307a6[_0xf955('0xed')]};})[_0xf955('0x73')]()};return ejs[_0xf955('0x13a')](path[_0xf955('0xef')](config[_0xf955('0xf6')],'server',_0xf955('0x13b'),_0xf955('0x13c')),{'interaction':_0x58b727})[_0xf955('0x1f')](function(_0x385676){var _0x5a9193=path['join'](_0x72b500,_0xf955('0x13d')+_0x2e8dc2['id']+'-'+_0x47b877+_0xf955('0x13e'));var _0x157508={'path':_0x5a9193,'channel':'Chat','interactionId':_0x2e8dc2['id']};return pdf[_0xf955('0x13f')](_0x385676,_0x157508);})['then'](function(){return new BPromise(function(_0x37bdd4,_0x4f8fc8){zipdir(_0x72b500,{'saveTo':_0x4896ae},function(_0x5f3e0f,_0x4ad147){if(_0x5f3e0f)return _0x4f8fc8(_0x5f3e0f);return _0x37bdd4(_0x4ad147);});})[_0xf955('0x1f')](function(){return new BPromise(function(_0x2dc607,_0x355871){rimraf(_0x72b500,function(_0x1c5b1d){if(_0x1c5b1d)_0x355871(_0x1c5b1d);return _0x2dc607();});});})[_0xf955('0x1f')](function(){return _0x204e4e[_0xf955('0xf3')](_0x4896ae,_0x1d4aa6,function(_0x5eac2b){if(_0x5eac2b){console[_0xf955('0x140')](_0xf955('0x141'),_0x5eac2b);}else{fs[_0xf955('0x142')](_0x4896ae);}});});});}else{return _0x204e4e[_0xf955('0x2a')](0xc8);}})[_0xf955('0x47')](handleError(_0x204e4e,null));};
\ No newline at end of file
index ca04ec5..b66f2f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe35a=['emit','catch','hook','exports','events','../../mysqldb','ChatMessage','setMaxListeners','save','update','remove','setDataValue','Users','map','findAll','unreadMessages','length'];(function(_0x5781b7,_0xc6fd47){var _0x16cd32=function(_0x4591f4){while(--_0x4591f4){_0x5781b7['push'](_0x5781b7['shift']());}};_0x16cd32(++_0xc6fd47);}(_0xe35a,0x169));var _0xae35=function(_0x55e743,_0xd9c53b){_0x55e743=_0x55e743-0x0;var _0x3f77d5=_0xe35a[_0x55e743];return _0x3f77d5;};'use strict';var EventEmitter=require(_0xae35('0x0'));var ChatInteraction=require(_0xae35('0x1'))['db']['ChatInteraction'];var ChatMessage=require(_0xae35('0x1'))['db'][_0xae35('0x2')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0xae35('0x3')](0x0);var events={'afterCreate':_0xae35('0x4'),'afterUpdate':_0xae35('0x5'),'afterDestroy':_0xae35('0x6')};function emitEvent(_0x471e9f){return function(_0x16b99c,_0x1e081f,_0x5ba8de){_0x16b99c['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x566a21){_0x16b99c[_0xae35('0x7')](_0xae35('0x8'),_0x566a21[_0xae35('0x9')](function(_0x566102){return{'id':_0x566102['id']};}));return ChatMessage[_0xae35('0xa')]({'where':{'ChatInteractionId':_0x16b99c['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x4f2573){_0x16b99c[_0xae35('0x7')](_0xae35('0xb'),_0x4f2573[_0xae35('0xc')]);ChatInteractionEvents['emit'](_0x471e9f+':'+_0x16b99c['id'],_0x16b99c);ChatInteractionEvents[_0xae35('0xd')](_0x471e9f,_0x16b99c);_0x5ba8de(null);})[_0xae35('0xe')](_0x5ba8de(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInteraction[_0xae35('0xf')](e,emitEvent(event));}}module[_0xae35('0x10')]=ChatInteractionEvents;
\ No newline at end of file
+var _0x1286=['catch','hasOwnProperty','hook','exports','ChatInteraction','../../mysqldb','setMaxListeners','save','then','setDataValue','Users','map','unreadMessages','length','emit'];(function(_0x22187d,_0x1a3192){var _0x4595df=function(_0x5ec0ed){while(--_0x5ec0ed){_0x22187d['push'](_0x22187d['shift']());}};_0x4595df(++_0x1a3192);}(_0x1286,0xa9));var _0x6128=function(_0x581af1,_0x4f02c5){_0x581af1=_0x581af1-0x0;var _0x54c22e=_0x1286[_0x581af1];return _0x54c22e;};'use strict';var EventEmitter=require('events');var ChatInteraction=require('../../mysqldb')['db'][_0x6128('0x0')];var ChatMessage=require(_0x6128('0x1'))['db']['ChatMessage'];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x6128('0x2')](0x0);var events={'afterCreate':_0x6128('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x270d00){return function(_0x5ec365,_0x1ed6d3,_0x327c4e){_0x5ec365['getUsers']({'attributes':['id'],'raw':!![]})[_0x6128('0x4')](function(_0x1a4515){_0x5ec365[_0x6128('0x5')](_0x6128('0x6'),_0x1a4515[_0x6128('0x7')](function(_0x1b417a){return{'id':_0x1b417a['id']};}));return ChatMessage['findAll']({'where':{'ChatInteractionId':_0x5ec365['id'],'direction':'in','read':![]},'raw':!![]});})[_0x6128('0x4')](function(_0x16adbc){_0x5ec365[_0x6128('0x5')](_0x6128('0x8'),_0x16adbc[_0x6128('0x9')]);ChatInteractionEvents['emit'](_0x270d00+':'+_0x5ec365['id'],_0x5ec365);ChatInteractionEvents[_0x6128('0xa')](_0x270d00,_0x5ec365);_0x327c4e(null);})[_0x6128('0xb')](_0x327c4e(null));};}for(var e in events){if(events[_0x6128('0xc')](e)){var event=events[e];ChatInteraction[_0x6128('0xd')](e,emitEvent(event));}}module[_0x6128('0xe')]=ChatInteractionEvents;
\ No newline at end of file
index ef63c89..83d7b25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8af2=['changed','closed','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./chatInteraction.attributes','exports','define','ChatInteraction','chat_interactions'];(function(_0x590a38,_0x2bc65c){var _0xf36626=function(_0x551cd1){while(--_0x551cd1){_0x590a38['push'](_0x590a38['shift']());}};_0xf36626(++_0x2bc65c);}(_0x8af2,0xc4));var _0x28af=function(_0xb7f655,_0x230280){_0xb7f655=_0xb7f655-0x0;var _0xda39b7=_0x8af2[_0xb7f655];return _0xda39b7;};'use strict';var _=require('lodash');var util=require(_0x28af('0x0'));var logger=require(_0x28af('0x1'))(_0x28af('0x2'));var moment=require(_0x28af('0x3'));var BPromise=require(_0x28af('0x4'));var rp=require(_0x28af('0x5'));var fs=require('fs');var path=require(_0x28af('0x6'));var rimraf=require('rimraf');var config=require(_0x28af('0x7'));var attributes=require(_0x28af('0x8'));module[_0x28af('0x9')]=function(_0x1ea1e2,_0x12be5){return _0x1ea1e2[_0x28af('0xa')](_0x28af('0xb'),attributes,{'tableName':_0x28af('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x152586,_0x331ab0,_0x5ee2cf){if(_0x152586[_0x28af('0xd')](_0x28af('0xe'))){_0x152586['closedAt']=moment()[_0x28af('0xf')](_0x28af('0x10'));}_0x5ee2cf(null,_0x152586);}},'charset':_0x28af('0x11'),'collate':_0x28af('0x12')});};
\ No newline at end of file
+var _0x29b0=['path','rimraf','./chatInteraction.attributes','exports','define','chat_interactions','closed','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise'];(function(_0x57d7f7,_0x335c81){var _0x1a6800=function(_0x251345){while(--_0x251345){_0x57d7f7['push'](_0x57d7f7['shift']());}};_0x1a6800(++_0x335c81);}(_0x29b0,0x82));var _0x029b=function(_0x555038,_0x159b73){_0x555038=_0x555038-0x0;var _0x4455a0=_0x29b0[_0x555038];return _0x4455a0;};'use strict';var _=require(_0x029b('0x0'));var util=require(_0x029b('0x1'));var logger=require('../../config/logger')(_0x029b('0x2'));var moment=require(_0x029b('0x3'));var BPromise=require(_0x029b('0x4'));var rp=require(_0x029b('0x5'));var fs=require('fs');var path=require(_0x029b('0x6'));var rimraf=require(_0x029b('0x7'));var config=require('../../config/environment');var attributes=require(_0x029b('0x8'));module[_0x029b('0x9')]=function(_0x84c6a9,_0x16468e){return _0x84c6a9[_0x029b('0xa')]('ChatInteraction',attributes,{'tableName':_0x029b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x402f50,_0xdc97b8,_0x181472){if(_0x402f50['changed'](_0x029b('0xc'))){_0x402f50['closedAt']=moment()[_0x029b('0xd')](_0x029b('0xe'));}_0x181472(null,_0x402f50);}},'charset':_0x029b('0xf'),'collate':_0x029b('0x10')});};
\ No newline at end of file
index 485e41a..010cc91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcedf=['client','http','defaults','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','ChatInteraction,\x20%s,\x20%s','info','result','UpdateChatInteraction','ChatInteraction','body','options','raw','where','attributes','then','catch','AddTagsToChatInteraction','find','addTags','omit','ids','spread','AddTags','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x13ebf1,_0x47b024){var _0x2f925d=function(_0x3d3d60){while(--_0x3d3d60){_0x13ebf1['push'](_0x13ebf1['shift']());}};_0x2f925d(++_0x47b024);}(_0xcedf,0x11d));var _0xfced=function(_0x19bf15,_0x2a69f8){_0x19bf15=_0x19bf15-0x0;var _0x2feaa2=_0xcedf[_0x19bf15];return _0x2feaa2;};'use strict';var _=require(_0xfced('0x0'));var util=require(_0xfced('0x1'));var moment=require(_0xfced('0x2'));var BPromise=require(_0xfced('0x3'));var rs=require(_0xfced('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfced('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xfced('0x6'))(_0xfced('0x7'));var config=require(_0xfced('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xfced('0x9')][_0xfced('0xa')]({'port':0x232a});config['redis']=_[_0xfced('0xb')](config[_0xfced('0xc')],{'host':_0xfced('0xd'),'port':0x18eb});var socket=require(_0xfced('0xe'))(new Redis(config[_0xfced('0xc')]));require(_0xfced('0xf'))[_0xfced('0x10')](socket);function respondWithRpcPromise(_0x2c6abc,_0x383573,_0x252c76){return new BPromise(function(_0x1c4502,_0x2ab0af){return client['request'](_0x2c6abc,_0x252c76)['then'](function(_0x4a0159){logger['info']('ChatInteraction,\x20%s,\x20%s',_0x383573,_0xfced('0x11'));logger[_0xfced('0x12')](_0xfced('0x13'),_0x383573,'request\x20sent',JSON[_0xfced('0x14')](_0x4a0159));if(_0x4a0159[_0xfced('0x15')]){if(_0x4a0159[_0xfced('0x15')]['code']===0x1f4){logger[_0xfced('0x15')]('ChatInteraction,\x20%s,\x20%s',_0x383573,_0x4a0159['error']['message']);return _0x2ab0af(_0x4a0159[_0xfced('0x15')][_0xfced('0x16')]);}logger[_0xfced('0x15')](_0xfced('0x17'),_0x383573,_0x4a0159[_0xfced('0x15')]['message']);return _0x1c4502(_0x4a0159[_0xfced('0x15')]['message']);}else{logger[_0xfced('0x18')]('ChatInteraction,\x20%s,\x20%s',_0x383573,_0xfced('0x11'));_0x1c4502(_0x4a0159[_0xfced('0x19')]['message']);}})['catch'](function(_0x5e38ed){logger['error']('ChatInteraction,\x20%s,\x20%s',_0x383573,_0x5e38ed);_0x2ab0af(_0x5e38ed);});});}exports[_0xfced('0x1a')]=function(_0x16e92d){var _0x19828b=this;return new Promise(function(_0x1ef7b9,_0x1e200c){return db[_0xfced('0x1b')]['update'](_0x16e92d[_0xfced('0x1c')],{'raw':_0x16e92d[_0xfced('0x1d')]?_0x16e92d['options'][_0xfced('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x16e92d[_0xfced('0x1d')]?_0x16e92d[_0xfced('0x1d')][_0xfced('0x1f')]||null:null,'attributes':_0x16e92d[_0xfced('0x1d')]?_0x16e92d[_0xfced('0x1d')][_0xfced('0x20')]||null:null,'limit':_0x16e92d[_0xfced('0x1d')]?_0x16e92d[_0xfced('0x1d')]['limit']||null:null})[_0xfced('0x21')](function(_0x3e559c){logger['info'](_0xfced('0x1a'),_0x16e92d);logger[_0xfced('0x12')](_0xfced('0x1a'),_0x16e92d,JSON[_0xfced('0x14')](_0x3e559c));_0x1ef7b9(_0x3e559c);})[_0xfced('0x22')](function(_0x22bd37){logger['error'](_0xfced('0x1a'),_0x22bd37[_0xfced('0x16')],_0x16e92d);_0x1e200c(_0x19828b[_0xfced('0x15')](0x1f4,_0x22bd37[_0xfced('0x16')]));});});};exports[_0xfced('0x23')]=function(_0x128872){return new Promise(function(_0x368f17,_0x15941a){return db['ChatInteraction'][_0xfced('0x24')]({'where':_0x128872[_0xfced('0x1d')]?_0x128872['options'][_0xfced('0x1f')]||null:null})[_0xfced('0x21')](function(_0x5bbe2f){if(_0x5bbe2f){return _0x5bbe2f[_0xfced('0x25')](_0x128872['body']['ids'],_[_0xfced('0x26')](_0x128872['body'],[_0xfced('0x27'),'id'])||{});}})[_0xfced('0x28')](function(_0x5e8d90){logger['info'](_0xfced('0x29'),_0x128872);logger[_0xfced('0x12')](_0xfced('0x29'),_0x128872,JSON[_0xfced('0x14')](_0x5e8d90));_0x368f17(_0x5e8d90);})[_0xfced('0x22')](function(_0x4c5a32){logger[_0xfced('0x15')](_0xfced('0x29'),_0x4c5a32['message'],_0x128872);_0x15941a(_this['error'](0x1f4,_0x4c5a32[_0xfced('0x16')]));});});};
\ No newline at end of file
+var _0x12a0=['AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket','register','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','ChatInteraction,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','UpdateChatInteraction','ChatInteraction','update','body','options','raw','where','attributes','debug','stringify','AddTagsToChatInteraction','find','addTags','ids'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0x12a0,0x115));var _0x012a=function(_0x545168,_0x215698){_0x545168=_0x545168-0x0;var _0x3d20c8=_0x12a0[_0x545168];return _0x3d20c8;};'use strict';var _=require(_0x012a('0x0'));var util=require(_0x012a('0x1'));var moment=require(_0x012a('0x2'));var BPromise=require(_0x012a('0x3'));var rs=require(_0x012a('0x4'));var fs=require('fs');var Redis=require(_0x012a('0x5'));var db=require(_0x012a('0x6'))['db'];var utils=require(_0x012a('0x7'));var logger=require(_0x012a('0x8'))(_0x012a('0x9'));var config=require(_0x012a('0xa'));var jayson=require(_0x012a('0xb'));var client=jayson[_0x012a('0xc')][_0x012a('0xd')]({'port':0x232a});config[_0x012a('0xe')]=_[_0x012a('0xf')](config['redis'],{'host':_0x012a('0x10'),'port':0x18eb});var socket=require(_0x012a('0x11'))(new Redis(config[_0x012a('0xe')]));require(_0x012a('0x12'))[_0x012a('0x13')](socket);function respondWithRpcPromise(_0x5a1743,_0x3fb68b,_0x3574d5){return new BPromise(function(_0x2bd955,_0x2fca8c){return client[_0x012a('0x14')](_0x5a1743,_0x3574d5)[_0x012a('0x15')](function(_0x306647){logger[_0x012a('0x16')](_0x012a('0x17'),_0x3fb68b,_0x012a('0x18'));logger['debug'](_0x012a('0x19'),_0x3fb68b,_0x012a('0x18'),JSON['stringify'](_0x306647));if(_0x306647['error']){if(_0x306647[_0x012a('0x1a')][_0x012a('0x1b')]===0x1f4){logger[_0x012a('0x1a')](_0x012a('0x17'),_0x3fb68b,_0x306647['error'][_0x012a('0x1c')]);return _0x2fca8c(_0x306647['error']['message']);}logger[_0x012a('0x1a')](_0x012a('0x17'),_0x3fb68b,_0x306647['error']['message']);return _0x2bd955(_0x306647[_0x012a('0x1a')][_0x012a('0x1c')]);}else{logger[_0x012a('0x16')](_0x012a('0x17'),_0x3fb68b,_0x012a('0x18'));_0x2bd955(_0x306647[_0x012a('0x1d')][_0x012a('0x1c')]);}})[_0x012a('0x1e')](function(_0x5ad775){logger[_0x012a('0x1a')](_0x012a('0x17'),_0x3fb68b,_0x5ad775);_0x2fca8c(_0x5ad775);});});}exports[_0x012a('0x1f')]=function(_0x1461a2){var _0x3901f0=this;return new Promise(function(_0x583995,_0x2fc4c3){return db[_0x012a('0x20')][_0x012a('0x21')](_0x1461a2[_0x012a('0x22')],{'raw':_0x1461a2['options']?_0x1461a2[_0x012a('0x23')][_0x012a('0x24')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1461a2[_0x012a('0x23')]?_0x1461a2['options'][_0x012a('0x25')]||null:null,'attributes':_0x1461a2['options']?_0x1461a2[_0x012a('0x23')][_0x012a('0x26')]||null:null,'limit':_0x1461a2['options']?_0x1461a2['options']['limit']||null:null})[_0x012a('0x15')](function(_0x52ffb5){logger['info'](_0x012a('0x1f'),_0x1461a2);logger[_0x012a('0x27')](_0x012a('0x1f'),_0x1461a2,JSON[_0x012a('0x28')](_0x52ffb5));_0x583995(_0x52ffb5);})['catch'](function(_0x46fb17){logger[_0x012a('0x1a')](_0x012a('0x1f'),_0x46fb17['message'],_0x1461a2);_0x2fc4c3(_0x3901f0[_0x012a('0x1a')](0x1f4,_0x46fb17[_0x012a('0x1c')]));});});};exports[_0x012a('0x29')]=function(_0x3a2d0b){return new Promise(function(_0x5aa4b0,_0x47db36){return db['ChatInteraction'][_0x012a('0x2a')]({'where':_0x3a2d0b[_0x012a('0x23')]?_0x3a2d0b['options'][_0x012a('0x25')]||null:null})[_0x012a('0x15')](function(_0x468d5a){if(_0x468d5a){return _0x468d5a[_0x012a('0x2b')](_0x3a2d0b[_0x012a('0x22')][_0x012a('0x2c')],_['omit'](_0x3a2d0b[_0x012a('0x22')],['ids','id'])||{});}})['spread'](function(_0x3db439){logger[_0x012a('0x16')](_0x012a('0x2d'),_0x3a2d0b);logger['debug']('AddTags',_0x3a2d0b,JSON[_0x012a('0x28')](_0x3db439));_0x5aa4b0(_0x3db439);})[_0x012a('0x1e')](function(_0x11489c){logger[_0x012a('0x1a')](_0x012a('0x2d'),_0x11489c[_0x012a('0x1c')],_0x3a2d0b);_0x47db36(_this[_0x012a('0x1a')](0x1f4,_0x11489c[_0x012a('0x1c')]));});});};
\ No newline at end of file
index e5dc68b..6e0531a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88eb=['remove','emit','removeListener','register','length','chatInteraction:','./chatInteraction.events','save'];(function(_0x3bcce8,_0x146a9b){var _0x1bacf1=function(_0x11a055){while(--_0x11a055){_0x3bcce8['push'](_0x3bcce8['shift']());}};_0x1bacf1(++_0x146a9b);}(_0x88eb,0x76));var _0xb88e=function(_0x18c50c,_0x14230b){_0x18c50c=_0x18c50c-0x0;var _0x4a8711=_0x88eb[_0x18c50c];return _0x4a8711;};'use strict';var ChatInteractionEvents=require(_0xb88e('0x0'));var events=[_0xb88e('0x1'),_0xb88e('0x2'),'update'];function createListener(_0x2ef77f,_0x5ed101){return function(_0x307c95){_0x5ed101[_0xb88e('0x3')](_0x2ef77f,_0x307c95);};}function removeListener(_0x18d953,_0x44dfaa){return function(){ChatInteractionEvents[_0xb88e('0x4')](_0x18d953,_0x44dfaa);};}exports[_0xb88e('0x5')]=function(_0x442da8){for(var _0x14854b=0x0,_0xf77ae2=events[_0xb88e('0x6')];_0x14854b<_0xf77ae2;_0x14854b++){var _0x453dc5=events[_0x14854b];var _0x102017=createListener(_0xb88e('0x7')+_0x453dc5,_0x442da8);ChatInteractionEvents['on'](_0x453dc5,_0x102017);}};
\ No newline at end of file
+var _0x84f2=['emit','removeListener','register','length','./chatInteraction.events','update'];(function(_0x497b1e,_0x586379){var _0x3f72e1=function(_0x4c227d){while(--_0x4c227d){_0x497b1e['push'](_0x497b1e['shift']());}};_0x3f72e1(++_0x586379);}(_0x84f2,0xe8));var _0x284f=function(_0x349ac1,_0x443243){_0x349ac1=_0x349ac1-0x0;var _0x77840a=_0x84f2[_0x349ac1];return _0x77840a;};'use strict';var ChatInteractionEvents=require(_0x284f('0x0'));var events=['save','remove',_0x284f('0x1')];function createListener(_0x322996,_0x4e2524){return function(_0x43d3b1){_0x4e2524[_0x284f('0x2')](_0x322996,_0x43d3b1);};}function removeListener(_0x467570,_0x5bf7e8){return function(){ChatInteractionEvents[_0x284f('0x3')](_0x467570,_0x5bf7e8);};}exports[_0x284f('0x4')]=function(_0x21d272){for(var _0x2a34bb=0x0,_0x9b1795=events[_0x284f('0x5')];_0x2a34bb<_0x9b1795;_0x2a34bb++){var _0x1245c8=events[_0x2a34bb];var _0x2c0d88=createListener('chatInteraction:'+_0x1245c8,_0x21d272);ChatInteractionEvents['on'](_0x1245c8,_0x2c0d88);}};
\ No newline at end of file
index 5513f2c..85e58de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7742=['attachmentDownload','/:id/messages','getMessages','/:id/download','download','post','create','/:id/vidaoo','createVidaooSession','join','root','%s-%s','now','originalname','replace','/:id/attachment_upload','single','file','attachmentUpload','tracked','chat','chatinteraction:addtags','/:id/custom_update','customUpdate','/:id/abandon','abandon','put','delete','destroy','/:id/tags','removeTags','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInteraction.controller','isAuthenticated','index','/describe','describe','get','/:id','isChatInteractionAuthorized','show','/:id/attachment_download'];(function(_0x58dbff,_0x597def){var _0x2a32d2=function(_0x1eed91){while(--_0x1eed91){_0x58dbff['push'](_0x58dbff['shift']());}};_0x2a32d2(++_0x597def);}(_0x7742,0x83));var _0x2774=function(_0x2ff861,_0x5f32c9){_0x2ff861=_0x2ff861-0x0;var _0x52fe98=_0x7742[_0x2ff861];return _0x52fe98;};'use strict';var multer=require(_0x2774('0x0'));var util=require('util');var path=require(_0x2774('0x1'));var timeout=require(_0x2774('0x2'));var express=require(_0x2774('0x3'));var router=express[_0x2774('0x4')]();var fs_extra=require(_0x2774('0x5'));var auth=require(_0x2774('0x6'));var interaction=require(_0x2774('0x7'));var config=require(_0x2774('0x8'));var controller=require(_0x2774('0x9'));router['get']('/',auth[_0x2774('0xa')](),controller[_0x2774('0xb')]);router['get'](_0x2774('0xc'),auth[_0x2774('0xa')](),controller[_0x2774('0xd')]);router[_0x2774('0xe')](_0x2774('0xf'),auth[_0x2774('0x10')](),controller[_0x2774('0x11')]);router[_0x2774('0xe')](_0x2774('0x12'),auth[_0x2774('0x10')](),controller[_0x2774('0x13')]);router[_0x2774('0xe')](_0x2774('0x14'),auth[_0x2774('0xa')](),controller[_0x2774('0x15')]);router[_0x2774('0xe')]('/:id/my_messages',auth[_0x2774('0x10')](),controller['getMyMessages']);router[_0x2774('0xe')](_0x2774('0x16'),auth[_0x2774('0xa')](),controller[_0x2774('0x17')]);router[_0x2774('0x18')]('/',auth['isAuthenticated'](),controller[_0x2774('0x19')]);router[_0x2774('0x18')](_0x2774('0x1a'),auth[_0x2774('0xa')](),controller[_0x2774('0x1b')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x412183,_0x3ca785,_0x1826be){_0x1826be(null,path[_0x2774('0x1c')](config[_0x2774('0x1d')],'server/files/attachments/'));},'filename':function(_0x234cf8,_0x79dfaa,_0x7b6c51){_0x7b6c51(null,util['format'](_0x2774('0x1e'),Date[_0x2774('0x1f')](),_0x79dfaa[_0x2774('0x20')][_0x2774('0x21')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x2774('0x18')](_0x2774('0x22'),upload[_0x2774('0x23')](_0x2774('0x24')),controller[_0x2774('0x25')]);router[_0x2774('0x18')](_0x2774('0x14'),auth['isChatInteractionAuthorized'](),controller['addMessage']);router[_0x2774('0x18')]('/:id/tags',auth[_0x2774('0xa')](),interaction[_0x2774('0x26')](_0x2774('0x27'),_0x2774('0x28')),controller['addTags']);router['put'](_0x2774('0xf'),auth[_0x2774('0xa')](),interaction[_0x2774('0x26')]('chat','chatinteraction:update'),controller['update']);router['put'](_0x2774('0x29'),controller[_0x2774('0x2a')]);router['put'](_0x2774('0x2b'),auth[_0x2774('0x10')](),controller[_0x2774('0x2c')]);router[_0x2774('0x2d')]('/:id/close',controller['close']);router[_0x2774('0x2e')](_0x2774('0xf'),auth['isAuthenticated'](),interaction[_0x2774('0x26')](_0x2774('0x27'),'chatinteraction:destroy'),controller[_0x2774('0x2f')]);router[_0x2774('0x2e')](_0x2774('0x30'),auth[_0x2774('0xa')](),controller[_0x2774('0x31')]);module['exports']=router;
\ No newline at end of file
+var _0xed7a=['removeTags','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatInteraction.controller','get','isAuthenticated','index','/describe','describe','isChatInteractionAuthorized','show','/:id/attachment_download','attachmentDownload','/:id/messages','getMessages','/:id/my_messages','/:id/download','download','create','post','diskStorage','join','root','server/files/attachments/','format','%s-%s','now','originalname','replace','single','file','addMessage','/:id/tags','tracked','chat','chatinteraction:addtags','addTags','put','/:id','chatinteraction:update','update','/:id/custom_update','customUpdate','/:id/abandon','abandon','/:id/close','close','chatinteraction:destroy','delete'];(function(_0x54f3e8,_0x3ed493){var _0x267b37=function(_0x58247e){while(--_0x58247e){_0x54f3e8['push'](_0x54f3e8['shift']());}};_0x267b37(++_0x3ed493);}(_0xed7a,0x115));var _0xaed7=function(_0x565f1f,_0x53a9df){_0x565f1f=_0x565f1f-0x0;var _0x1daf05=_0xed7a[_0x565f1f];return _0x1daf05;};'use strict';var multer=require(_0xaed7('0x0'));var util=require(_0xaed7('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xaed7('0x2'));var router=express[_0xaed7('0x3')]();var fs_extra=require(_0xaed7('0x4'));var auth=require(_0xaed7('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xaed7('0x6'));var controller=require(_0xaed7('0x7'));router[_0xaed7('0x8')]('/',auth[_0xaed7('0x9')](),controller[_0xaed7('0xa')]);router['get'](_0xaed7('0xb'),auth['isAuthenticated'](),controller[_0xaed7('0xc')]);router[_0xaed7('0x8')]('/:id',auth[_0xaed7('0xd')](),controller[_0xaed7('0xe')]);router[_0xaed7('0x8')](_0xaed7('0xf'),auth[_0xaed7('0xd')](),controller[_0xaed7('0x10')]);router[_0xaed7('0x8')](_0xaed7('0x11'),auth[_0xaed7('0x9')](),controller[_0xaed7('0x12')]);router[_0xaed7('0x8')](_0xaed7('0x13'),auth[_0xaed7('0xd')](),controller['getMyMessages']);router[_0xaed7('0x8')](_0xaed7('0x14'),auth['isAuthenticated'](),controller[_0xaed7('0x15')]);router['post']('/',auth['isAuthenticated'](),controller[_0xaed7('0x16')]);router[_0xaed7('0x17')]('/:id/vidaoo',auth[_0xaed7('0x9')](),controller['createVidaooSession']);var upload=multer({'storage':multer[_0xaed7('0x18')]({'destination':function(_0x4e60a8,_0x15c83c,_0x4bfb5c){_0x4bfb5c(null,path[_0xaed7('0x19')](config[_0xaed7('0x1a')],_0xaed7('0x1b')));},'filename':function(_0x6d7442,_0x1c887c,_0x26a286){_0x26a286(null,util[_0xaed7('0x1c')](_0xaed7('0x1d'),Date[_0xaed7('0x1e')](),_0x1c887c[_0xaed7('0x1f')][_0xaed7('0x20')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xaed7('0x17')]('/:id/attachment_upload',upload[_0xaed7('0x21')](_0xaed7('0x22')),controller['attachmentUpload']);router[_0xaed7('0x17')](_0xaed7('0x11'),auth[_0xaed7('0xd')](),controller[_0xaed7('0x23')]);router[_0xaed7('0x17')](_0xaed7('0x24'),auth[_0xaed7('0x9')](),interaction[_0xaed7('0x25')](_0xaed7('0x26'),_0xaed7('0x27')),controller[_0xaed7('0x28')]);router[_0xaed7('0x29')](_0xaed7('0x2a'),auth['isAuthenticated'](),interaction[_0xaed7('0x25')](_0xaed7('0x26'),_0xaed7('0x2b')),controller[_0xaed7('0x2c')]);router[_0xaed7('0x29')](_0xaed7('0x2d'),controller[_0xaed7('0x2e')]);router[_0xaed7('0x29')](_0xaed7('0x2f'),auth[_0xaed7('0xd')](),controller[_0xaed7('0x30')]);router[_0xaed7('0x29')](_0xaed7('0x31'),controller[_0xaed7('0x32')]);router['delete']('/:id',auth[_0xaed7('0x9')](),interaction[_0xaed7('0x25')](_0xaed7('0x26'),_0xaed7('0x33')),controller['destroy']);router[_0xaed7('0x34')](_0xaed7('0x24'),auth['isAuthenticated'](),controller[_0xaed7('0x35')]);module[_0xaed7('0x36')]=router;
\ No newline at end of file
index 84a2bea..4a0fb44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ae4=['sequelize','exports','BOOLEAN','INTEGER'];(function(_0x11f1ff,_0x39ec23){var _0x1ecfa9=function(_0x51bd8b){while(--_0x51bd8b){_0x11f1ff['push'](_0x11f1ff['shift']());}};_0x1ecfa9(++_0x39ec23);}(_0x4ae4,0x1bc));var _0x44ae=function(_0x64bb04,_0x5f4f72){_0x64bb04=_0x64bb04-0x0;var _0x21f87d=_0x4ae4[_0x64bb04];return _0x21f87d;};'use strict';var Sequelize=require(_0x44ae('0x0'));module[_0x44ae('0x1')]={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x44ae('0x2')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x44ae('0x3')]}};
\ No newline at end of file
+var _0x5571=['medium','BOOLEAN','sequelize','exports','TEXT'];(function(_0x424a4d,_0x2cfc94){var _0x2b043a=function(_0x3b64a4){while(--_0x3b64a4){_0x424a4d['push'](_0x424a4d['shift']());}};_0x2b043a(++_0x2cfc94);}(_0x5571,0x19c));var _0x1557=function(_0x59fc33,_0x2e182d){_0x59fc33=_0x59fc33-0x0;var _0x39066f=_0x5571[_0x59fc33];return _0x39066f;};'use strict';var Sequelize=require(_0x1557('0x0'));module[_0x1557('0x1')]={'body':{'type':Sequelize[_0x1557('0x2')](_0x1557('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x1557('0x4')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 641d55e..1d0aabb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6322=['isEmpty','resourceId','push','messages','FromId','read','-createdAt','all','zip-dir','fast-json-patch','moment','bluebird','util','path','ejs','fs-extra','lodash','squel','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','end','error','stack','map','rawAttributes','fieldName','key','name','query','keys','filters','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','type','filter','merge','options','ChatInternalMessage','includeAll','rows','catch','show','params','intersection','find','create','body','update','describe','get','lastMessageAt','createdAt','lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','findAll','admin','user','role','userpic','internal','lastLoginAt','showWebBar','-online','VoiceQueues','UserProfileSection','Agents','userProfileId','autoAssociation'];(function(_0x197748,_0x2de892){var _0x3ada6e=function(_0x294fc6){while(--_0x294fc6){_0x197748['push'](_0x197748['shift']());}};_0x3ada6e(++_0x2de892);}(_0x6322,0x71));var _0x2632=function(_0xf1a6c9,_0x53db67){_0xf1a6c9=_0xf1a6c9-0x0;var _0x38745f=_0x6322[_0xf1a6c9];return _0x38745f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x2632('0x0'));var jsonpatch=require(_0x2632('0x1'));var rp=require('request-promise');var moment=require(_0x2632('0x2'));var BPromise=require(_0x2632('0x3'));var Mustache=require('mustache');var util=require(_0x2632('0x4'));var path=require(_0x2632('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x2632('0x6'));var fs=require('fs');var fs_extra=require(_0x2632('0x7'));var _=require(_0x2632('0x8'));var squel=require(_0x2632('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2632('0xa'));var querystring=require(_0x2632('0xb'));var Papa=require(_0x2632('0xc'));var Redis=require('ioredis');var authService=require(_0x2632('0xd'));var qs=require(_0x2632('0xe'));var as=require(_0x2632('0xf'));var hardwareService=require(_0x2632('0x10'));var logger=require('../../config/logger')(_0x2632('0x11'));var utils=require(_0x2632('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x2632('0x13'));var db=require(_0x2632('0x14'))['db'];config[_0x2632('0x15')]=_['defaults'](config[_0x2632('0x15')],{'host':_0x2632('0x16'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2632('0x15')]));require('./chatInternalMessage.socket')[_0x2632('0x17')](socket);function respondWithStatusCode(_0x27fa51,_0x57361d){_0x57361d=_0x57361d||0xcc;return function(_0x41ef2f){if(_0x41ef2f){return _0x27fa51[_0x2632('0x18')](_0x57361d);}return _0x27fa51[_0x2632('0x19')](_0x57361d)['end']();};}function respondWithResult(_0x39a695,_0x5afc05){_0x5afc05=_0x5afc05||0xc8;return function(_0x521f6c){if(_0x521f6c){return _0x39a695[_0x2632('0x19')](_0x5afc05)[_0x2632('0x1a')](_0x521f6c);}};}function respondWithFilteredResult(_0x5e05d3,_0x23802f){return function(_0x35bd89){if(_0x35bd89){var _0x5d5c3a=typeof _0x23802f[_0x2632('0x1b')]===_0x2632('0x1c')&&typeof _0x23802f[_0x2632('0x1d')]===_0x2632('0x1c');var _0x38730d=_0x35bd89[_0x2632('0x1e')];var _0x19e49e=_0x5d5c3a?0x0:_0x23802f[_0x2632('0x1b')];var _0x507c96=_0x5d5c3a?_0x35bd89[_0x2632('0x1e')]:_0x23802f[_0x2632('0x1b')]+_0x23802f[_0x2632('0x1d')];var _0x115809;if(_0x507c96>=_0x38730d){_0x507c96=_0x38730d;_0x115809=0xc8;}else{_0x115809=0xce;}_0x5e05d3[_0x2632('0x19')](_0x115809);return _0x5e05d3[_0x2632('0x1f')](_0x2632('0x20'),_0x19e49e+'-'+_0x507c96+'/'+_0x38730d)[_0x2632('0x1a')](_0x35bd89);}return null;};}function patchUpdates(_0x4e8b81){return function(_0x1b79bd){try{jsonpatch[_0x2632('0x21')](_0x1b79bd,_0x4e8b81,!![]);}catch(_0x5b56d8){return BPromise[_0x2632('0x22')](_0x5b56d8);}return _0x1b79bd[_0x2632('0x23')]();};}function saveUpdates(_0x49375b,_0x118819){return function(_0x386f24){if(_0x386f24){return _0x386f24['update'](_0x49375b)[_0x2632('0x24')](function(_0x397fb6){return _0x397fb6;});}return null;};}function removeEntity(_0x383db0,_0x36f868){return function(_0x24bed2){if(_0x24bed2){return _0x24bed2[_0x2632('0x25')]()[_0x2632('0x24')](function(){_0x383db0['status'](0xcc)[_0x2632('0x26')]();});}};}function handleEntityNotFound(_0x4bfdad,_0x3e8606){return function(_0x4f96b8){if(!_0x4f96b8){_0x4bfdad[_0x2632('0x18')](0x194);}return _0x4f96b8;};}function handleError(_0x3139ca,_0x5234bc){_0x5234bc=_0x5234bc||0x1f4;return function(_0x2a9171){logger[_0x2632('0x27')](_0x2a9171[_0x2632('0x28')]);if(_0x2a9171['name']){delete _0x2a9171['name'];}_0x3139ca[_0x2632('0x19')](_0x5234bc)['send'](_0x2a9171);};}exports['index']=function(_0x24fafc,_0x42edff){var _0x11c02e={},_0x47b326={},_0x574248={'count':0x0,'rows':[]};var _0x29c2af=_[_0x2632('0x29')](db['ChatInternalMessage'][_0x2632('0x2a')],function(_0x5e1a39){return{'name':_0x5e1a39[_0x2632('0x2b')],'type':_0x5e1a39['type'][_0x2632('0x2c')]};});_0x47b326['model']=_[_0x2632('0x29')](_0x29c2af,_0x2632('0x2d'));_0x47b326[_0x2632('0x2e')]=_[_0x2632('0x2f')](_0x24fafc[_0x2632('0x2e')]);_0x47b326[_0x2632('0x30')]=_['intersection'](_0x47b326['model'],_0x47b326[_0x2632('0x2e')]);_0x11c02e[_0x2632('0x31')]=_['intersection'](_0x47b326[_0x2632('0x32')],qs[_0x2632('0x33')](_0x24fafc[_0x2632('0x2e')]['fields']));_0x11c02e['attributes']=_0x11c02e[_0x2632('0x31')][_0x2632('0x34')]?_0x11c02e[_0x2632('0x31')]:_0x47b326['model'];if(!_0x24fafc[_0x2632('0x2e')][_0x2632('0x35')](_0x2632('0x36'))){_0x11c02e[_0x2632('0x1d')]=qs[_0x2632('0x1d')](_0x24fafc['query'][_0x2632('0x1d')]);_0x11c02e['offset']=qs[_0x2632('0x1b')](_0x24fafc[_0x2632('0x2e')][_0x2632('0x1b')]);}_0x11c02e[_0x2632('0x37')]=qs[_0x2632('0x38')](_0x24fafc['query']['sort']);_0x11c02e['where']=qs[_0x2632('0x30')](_[_0x2632('0x39')](_0x24fafc[_0x2632('0x2e')],_0x47b326[_0x2632('0x30')]),_0x29c2af);if(_0x24fafc['query']['filter']){_0x11c02e[_0x2632('0x3a')]=_['merge'](_0x11c02e[_0x2632('0x3a')],{'$or':_[_0x2632('0x29')](_0x29c2af,function(_0x16ff13){if(_0x16ff13[_0x2632('0x3b')]!=='VIRTUAL'){var _0x10dc9d={};_0x10dc9d[_0x16ff13[_0x2632('0x2d')]]={'$like':'%'+_0x24fafc[_0x2632('0x2e')][_0x2632('0x3c')]+'%'};return _0x10dc9d;}})});}_0x11c02e=_[_0x2632('0x3d')]({},_0x11c02e,_0x24fafc[_0x2632('0x3e')]);var _0x35a9ad={'where':_0x11c02e[_0x2632('0x3a')]};return db[_0x2632('0x3f')][_0x2632('0x1e')](_0x35a9ad)[_0x2632('0x24')](function(_0x31b407){_0x574248['count']=_0x31b407;if(_0x24fafc['query'][_0x2632('0x40')]){_0x11c02e['include']=[{'all':!![]}];}return db[_0x2632('0x3f')]['findAll'](_0x11c02e);})['then'](function(_0x56ee15){_0x574248[_0x2632('0x41')]=_0x56ee15;return _0x574248;})[_0x2632('0x24')](respondWithFilteredResult(_0x42edff,_0x11c02e))[_0x2632('0x42')](handleError(_0x42edff,null));};exports[_0x2632('0x43')]=function(_0x565e4f,_0x5de9a1){var _0x200f79={'raw':!![],'where':{'id':_0x565e4f[_0x2632('0x44')]['id']}},_0x454eda={};_0x454eda[_0x2632('0x32')]=_['keys'](db[_0x2632('0x3f')][_0x2632('0x2a')]);_0x454eda[_0x2632('0x2e')]=_['keys'](_0x565e4f[_0x2632('0x2e')]);_0x454eda[_0x2632('0x30')]=_[_0x2632('0x45')](_0x454eda[_0x2632('0x32')],_0x454eda[_0x2632('0x2e')]);_0x200f79[_0x2632('0x31')]=_[_0x2632('0x45')](_0x454eda[_0x2632('0x32')],qs[_0x2632('0x33')](_0x565e4f['query'][_0x2632('0x33')]));_0x200f79[_0x2632('0x31')]=_0x200f79[_0x2632('0x31')][_0x2632('0x34')]?_0x200f79[_0x2632('0x31')]:_0x454eda['model'];if(_0x565e4f['query'][_0x2632('0x40')]){_0x200f79['include']=[{'all':!![]}];}_0x200f79=_[_0x2632('0x3d')]({},_0x200f79,_0x565e4f[_0x2632('0x3e')]);return db[_0x2632('0x3f')][_0x2632('0x46')](_0x200f79)[_0x2632('0x24')](handleEntityNotFound(_0x5de9a1,null))[_0x2632('0x24')](respondWithResult(_0x5de9a1,null))[_0x2632('0x42')](handleError(_0x5de9a1,null));};exports[_0x2632('0x47')]=function(_0x3ae190,_0x5caaab){return db['ChatInternalMessage'][_0x2632('0x47')](_0x3ae190[_0x2632('0x48')],{})[_0x2632('0x24')](respondWithResult(_0x5caaab,0xc9))[_0x2632('0x42')](handleError(_0x5caaab,null));};exports[_0x2632('0x49')]=function(_0x106161,_0x5a1b91){if(_0x106161[_0x2632('0x48')]['id']){delete _0x106161['body']['id'];}return db[_0x2632('0x3f')]['find']({'where':{'id':_0x106161[_0x2632('0x44')]['id']}})[_0x2632('0x24')](handleEntityNotFound(_0x5a1b91,null))[_0x2632('0x24')](saveUpdates(_0x106161[_0x2632('0x48')],null))[_0x2632('0x24')](respondWithResult(_0x5a1b91,null))[_0x2632('0x42')](handleError(_0x5a1b91,null));};exports[_0x2632('0x25')]=function(_0x3a3d46,_0x41843f){return db[_0x2632('0x3f')][_0x2632('0x46')]({'where':{'id':_0x3a3d46['params']['id']}})['then'](handleEntityNotFound(_0x41843f,null))['then'](removeEntity(_0x41843f,null))['catch'](handleError(_0x41843f,null));};exports[_0x2632('0x4a')]=function(_0x517107,_0x9a4f70){return db[_0x2632('0x3f')][_0x2632('0x4a')]()['then'](respondWithResult(_0x9a4f70,null))['catch'](handleError(_0x9a4f70,null));};function wrapUser(_0x5eeed8){return function(_0x3f6dee){var _0x1dbec3=_0x5eeed8[_0x2632('0x4b')]({'plain':!![]});_0x1dbec3['messages']=[];if(_0x3f6dee){_0x1dbec3[_0x2632('0x4c')]=_0x3f6dee[_0x2632('0x4d')];_0x1dbec3[_0x2632('0x4e')]=_0x3f6dee;}else{_0x1dbec3[_0x2632('0x4c')]=moment(0x0)[_0x2632('0x4f')](_0x2632('0x50'));_0x1dbec3[_0x2632('0x4e')]={};}return _0x1dbec3;};}exports[_0x2632('0x51')]=function(_0x2dfe98,_0x3aeeae,_0x2c8105){var _0x4bc938=[];return db[_0x2632('0x52')][_0x2632('0x53')]({'where':{'role':['agent',_0x2632('0x54'),_0x2632('0x55')]},'attributes':['id','fullname','name',_0x2632('0x56'),_0x2632('0x57'),_0x2632('0x58'),'online',_0x2632('0x59'),'allowmessenger',_0x2632('0x5a')],'order':qs[_0x2632('0x38')](_0x2632('0x5b')),'include':[{'model':db['VoiceQueue'],'as':_0x2632('0x5c'),'attributes':['id','name',_0x2632('0x3b')],'through':{'attributes':[]}}]})[_0x2632('0x24')](function(_0x1d7120){if(_0x1d7120){var _0x3b5208=_0x2dfe98[_0x2632('0x55')][_0x2632('0x4b')]({'plain':!![]});if(!_0x3b5208)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3b5208[_0x2632('0x56')]===_0x2632('0x55')){return db[_0x2632('0x5d')][_0x2632('0x46')]({'where':{'name':_0x2632('0x5e'),'userProfileId':_0x3b5208[_0x2632('0x5f')]},'raw':!![]})['then'](function(_0x5eae37){if(_0x5eae37){if(_0x5eae37[_0x2632('0x60')]===0x0){return db['UserProfileResource'][_0x2632('0x53')]({'where':{'sectionId':_0x5eae37['id']},'raw':!![]})[_0x2632('0x24')](function(_0x16b90a){var _0x2bc9fe=[];if(_[_0x2632('0x61')](_0x16b90a)){_0x2bc9fe=_[_0x2632('0x3c')](_0x1d7120,function(_0x181494){if(_0x181494[_0x2632('0x56')]!=='agent'){return _0x181494;}});return _0x2bc9fe;}else{for(var _0xa7919b=0x0;_0xa7919b<_0x1d7120[_0x2632('0x34')];_0xa7919b++){var _0x41fa47=_0x1d7120[_0xa7919b];if(_0x41fa47[_0x2632('0x56')]==='agent'){var _0x4df6ea=_[_0x2632('0x46')](_0x16b90a,function(_0x4d1781){return _0x4d1781[_0x2632('0x62')]===_0x41fa47['id'];});if(_0x4df6ea)_0x2bc9fe[_0x2632('0x63')](_0x41fa47);}else{_0x2bc9fe[_0x2632('0x63')](_0x41fa47);}}return _0x2bc9fe;}});}else{return _0x1d7120;}}else{var _0x19c372=_[_0x2632('0x3c')](_0x1d7120,function(_0x49d4b5){if(_0x49d4b5['role']!=='agent'){return _0x49d4b5;}});return _0x19c372;}});}else{return _0x1d7120;}}})[_0x2632('0x24')](function(_0x50ebd1){var _0x56e1d1=[];if(_0x50ebd1){_0x4bc938=_0x50ebd1;for(var _0x3acc41=0x0;_0x3acc41<_0x50ebd1[_0x2632('0x34')];_0x3acc41+=0x1){_0x4bc938[_0x3acc41][_0x2632('0x64')]=[];_0x56e1d1[_0x2632('0x63')](db[_0x2632('0x3f')][_0x2632('0x46')]({'where':{'FromId':[_0x2dfe98[_0x2632('0x55')]['id'],_0x50ebd1[_0x3acc41]['id']],'ToId':[_0x2dfe98['user']['id'],_0x50ebd1[_0x3acc41]['id']],'ChatGroupId':null},'attributes':['id','createdAt',_0x2632('0x65'),'ToId',_0x2632('0x66'),_0x2632('0x48')],'order':qs[_0x2632('0x38')](_0x2632('0x67')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x2632('0x24')](wrapUser(_0x50ebd1[_0x3acc41])));}return BPromise[_0x2632('0x68')](_0x56e1d1);}return[];})['then'](function(_0x365969){return{'rows':_0x365969,'count':_0x365969[_0x2632('0x34')]};})[_0x2632('0x24')](respondWithResult(_0x3aeeae,null))[_0x2632('0x42')](handleError(_0x3aeeae,null));};
\ No newline at end of file
+var _0xe635=['lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','agent','admin','user','role','userpic','online','lastLoginAt','allowmessenger','showWebBar','-online','VoiceQueue','VoiceQueues','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','autoAssociation','UserProfileResource','isEmpty','resourceId','push','FromId','ToId','read','-createdAt','all','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','ChatInternalMessage','include','findAll','rows','catch','show','params','length','includeAll','create','body','find','describe','get','messages','lastMessageAt','createdAt'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe635,0x92));var _0x5e63=function(_0x3bf8ac,_0x358931){_0x3bf8ac=_0x3bf8ac-0x0;var _0x2cc39b=_0xe635[_0x3bf8ac];return _0x2cc39b;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x5e63('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5e63('0x1'));var moment=require(_0x5e63('0x2'));var BPromise=require(_0x5e63('0x3'));var Mustache=require(_0x5e63('0x4'));var util=require(_0x5e63('0x5'));var path=require(_0x5e63('0x6'));var sox=require(_0x5e63('0x7'));var csv=require(_0x5e63('0x8'));var ejs=require(_0x5e63('0x9'));var fs=require('fs');var fs_extra=require(_0x5e63('0xa'));var _=require(_0x5e63('0xb'));var squel=require('squel');var crypto=require(_0x5e63('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x5e63('0x8'));var querystring=require(_0x5e63('0xd'));var Papa=require(_0x5e63('0xe'));var Redis=require(_0x5e63('0xf'));var authService=require(_0x5e63('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x5e63('0x11'));var hardwareService=require(_0x5e63('0x12'));var logger=require('../../config/logger')(_0x5e63('0x13'));var utils=require(_0x5e63('0x14'));var config=require(_0x5e63('0x15'));var licenseUtil=require(_0x5e63('0x16'));var db=require(_0x5e63('0x17'))['db'];config[_0x5e63('0x18')]=_[_0x5e63('0x19')](config[_0x5e63('0x18')],{'host':_0x5e63('0x1a'),'port':0x18eb});var socket=require(_0x5e63('0x1b'))(new Redis(config[_0x5e63('0x18')]));require(_0x5e63('0x1c'))[_0x5e63('0x1d')](socket);function respondWithStatusCode(_0xedb8a6,_0x8b3d47){_0x8b3d47=_0x8b3d47||0xcc;return function(_0x375260){if(_0x375260){return _0xedb8a6[_0x5e63('0x1e')](_0x8b3d47);}return _0xedb8a6[_0x5e63('0x1f')](_0x8b3d47)[_0x5e63('0x20')]();};}function respondWithResult(_0x4aa747,_0x29b7da){_0x29b7da=_0x29b7da||0xc8;return function(_0x10a874){if(_0x10a874){return _0x4aa747[_0x5e63('0x1f')](_0x29b7da)[_0x5e63('0x21')](_0x10a874);}};}function respondWithFilteredResult(_0x55f513,_0x5b959e){return function(_0x3b81c2){if(_0x3b81c2){var _0x56ad3a=typeof _0x5b959e[_0x5e63('0x22')]===_0x5e63('0x23')&&typeof _0x5b959e[_0x5e63('0x24')]===_0x5e63('0x23');var _0x27591b=_0x3b81c2[_0x5e63('0x25')];var _0x3cbc17=_0x56ad3a?0x0:_0x5b959e[_0x5e63('0x22')];var _0x2e02ed=_0x56ad3a?_0x3b81c2['count']:_0x5b959e[_0x5e63('0x22')]+_0x5b959e[_0x5e63('0x24')];var _0x4a0103;if(_0x2e02ed>=_0x27591b){_0x2e02ed=_0x27591b;_0x4a0103=0xc8;}else{_0x4a0103=0xce;}_0x55f513[_0x5e63('0x1f')](_0x4a0103);return _0x55f513[_0x5e63('0x26')](_0x5e63('0x27'),_0x3cbc17+'-'+_0x2e02ed+'/'+_0x27591b)[_0x5e63('0x21')](_0x3b81c2);}return null;};}function patchUpdates(_0x1f8113){return function(_0x2d26a5){try{jsonpatch[_0x5e63('0x28')](_0x2d26a5,_0x1f8113,!![]);}catch(_0x2d67c9){return BPromise[_0x5e63('0x29')](_0x2d67c9);}return _0x2d26a5[_0x5e63('0x2a')]();};}function saveUpdates(_0x50a646,_0x4fa277){return function(_0x25a755){if(_0x25a755){return _0x25a755[_0x5e63('0x2b')](_0x50a646)[_0x5e63('0x2c')](function(_0x46ef61){return _0x46ef61;});}return null;};}function removeEntity(_0x27ac58,_0x2c6a4a){return function(_0x3f2d57){if(_0x3f2d57){return _0x3f2d57[_0x5e63('0x2d')]()['then'](function(){_0x27ac58['status'](0xcc)[_0x5e63('0x20')]();});}};}function handleEntityNotFound(_0x2dec4d,_0x5e676c){return function(_0x2914bf){if(!_0x2914bf){_0x2dec4d[_0x5e63('0x1e')](0x194);}return _0x2914bf;};}function handleError(_0x1e55a8,_0x4b2a3b){_0x4b2a3b=_0x4b2a3b||0x1f4;return function(_0xc88538){logger['error'](_0xc88538['stack']);if(_0xc88538[_0x5e63('0x2e')]){delete _0xc88538[_0x5e63('0x2e')];}_0x1e55a8[_0x5e63('0x1f')](_0x4b2a3b)[_0x5e63('0x2f')](_0xc88538);};}exports[_0x5e63('0x30')]=function(_0x291422,_0x264e9c){var _0x168693={},_0xd33173={},_0x485ccc={'count':0x0,'rows':[]};var _0x1ec6c0=_[_0x5e63('0x31')](db['ChatInternalMessage'][_0x5e63('0x32')],function(_0x397f75){return{'name':_0x397f75['fieldName'],'type':_0x397f75[_0x5e63('0x33')][_0x5e63('0x34')]};});_0xd33173[_0x5e63('0x35')]=_[_0x5e63('0x31')](_0x1ec6c0,_0x5e63('0x2e'));_0xd33173[_0x5e63('0x36')]=_[_0x5e63('0x37')](_0x291422[_0x5e63('0x36')]);_0xd33173[_0x5e63('0x38')]=_[_0x5e63('0x39')](_0xd33173['model'],_0xd33173['query']);_0x168693[_0x5e63('0x3a')]=_['intersection'](_0xd33173['model'],qs[_0x5e63('0x3b')](_0x291422[_0x5e63('0x36')][_0x5e63('0x3b')]));_0x168693['attributes']=_0x168693[_0x5e63('0x3a')]['length']?_0x168693[_0x5e63('0x3a')]:_0xd33173[_0x5e63('0x35')];if(!_0x291422['query'][_0x5e63('0x3c')](_0x5e63('0x3d'))){_0x168693['limit']=qs['limit'](_0x291422[_0x5e63('0x36')][_0x5e63('0x24')]);_0x168693[_0x5e63('0x22')]=qs[_0x5e63('0x22')](_0x291422[_0x5e63('0x36')][_0x5e63('0x22')]);}_0x168693['order']=qs[_0x5e63('0x3e')](_0x291422[_0x5e63('0x36')]['sort']);_0x168693[_0x5e63('0x3f')]=qs[_0x5e63('0x38')](_[_0x5e63('0x40')](_0x291422[_0x5e63('0x36')],_0xd33173[_0x5e63('0x38')]),_0x1ec6c0);if(_0x291422['query']['filter']){_0x168693[_0x5e63('0x3f')]=_[_0x5e63('0x41')](_0x168693[_0x5e63('0x3f')],{'$or':_[_0x5e63('0x31')](_0x1ec6c0,function(_0x27f5ee){if(_0x27f5ee[_0x5e63('0x33')]!==_0x5e63('0x42')){var _0xb92873={};_0xb92873[_0x27f5ee[_0x5e63('0x2e')]]={'$like':'%'+_0x291422['query'][_0x5e63('0x43')]+'%'};return _0xb92873;}})});}_0x168693=_[_0x5e63('0x41')]({},_0x168693,_0x291422[_0x5e63('0x44')]);var _0x1daca0={'where':_0x168693[_0x5e63('0x3f')]};return db[_0x5e63('0x45')][_0x5e63('0x25')](_0x1daca0)['then'](function(_0x561b32){_0x485ccc[_0x5e63('0x25')]=_0x561b32;if(_0x291422[_0x5e63('0x36')]['includeAll']){_0x168693[_0x5e63('0x46')]=[{'all':!![]}];}return db[_0x5e63('0x45')][_0x5e63('0x47')](_0x168693);})[_0x5e63('0x2c')](function(_0x195e5f){_0x485ccc[_0x5e63('0x48')]=_0x195e5f;return _0x485ccc;})[_0x5e63('0x2c')](respondWithFilteredResult(_0x264e9c,_0x168693))[_0x5e63('0x49')](handleError(_0x264e9c,null));};exports[_0x5e63('0x4a')]=function(_0xe01bf6,_0x390f93){var _0x2f050a={'raw':!![],'where':{'id':_0xe01bf6[_0x5e63('0x4b')]['id']}},_0x5279fd={};_0x5279fd[_0x5e63('0x35')]=_[_0x5e63('0x37')](db[_0x5e63('0x45')][_0x5e63('0x32')]);_0x5279fd[_0x5e63('0x36')]=_[_0x5e63('0x37')](_0xe01bf6[_0x5e63('0x36')]);_0x5279fd['filters']=_[_0x5e63('0x39')](_0x5279fd[_0x5e63('0x35')],_0x5279fd['query']);_0x2f050a[_0x5e63('0x3a')]=_[_0x5e63('0x39')](_0x5279fd['model'],qs[_0x5e63('0x3b')](_0xe01bf6[_0x5e63('0x36')][_0x5e63('0x3b')]));_0x2f050a[_0x5e63('0x3a')]=_0x2f050a[_0x5e63('0x3a')][_0x5e63('0x4c')]?_0x2f050a[_0x5e63('0x3a')]:_0x5279fd[_0x5e63('0x35')];if(_0xe01bf6[_0x5e63('0x36')][_0x5e63('0x4d')]){_0x2f050a['include']=[{'all':!![]}];}_0x2f050a=_['merge']({},_0x2f050a,_0xe01bf6[_0x5e63('0x44')]);return db[_0x5e63('0x45')]['find'](_0x2f050a)['then'](handleEntityNotFound(_0x390f93,null))[_0x5e63('0x2c')](respondWithResult(_0x390f93,null))[_0x5e63('0x49')](handleError(_0x390f93,null));};exports[_0x5e63('0x4e')]=function(_0x34290f,_0x315015){return db[_0x5e63('0x45')][_0x5e63('0x4e')](_0x34290f[_0x5e63('0x4f')],{})[_0x5e63('0x2c')](respondWithResult(_0x315015,0xc9))[_0x5e63('0x49')](handleError(_0x315015,null));};exports['update']=function(_0x3d2ef5,_0x366c95){if(_0x3d2ef5[_0x5e63('0x4f')]['id']){delete _0x3d2ef5['body']['id'];}return db[_0x5e63('0x45')][_0x5e63('0x50')]({'where':{'id':_0x3d2ef5[_0x5e63('0x4b')]['id']}})[_0x5e63('0x2c')](handleEntityNotFound(_0x366c95,null))[_0x5e63('0x2c')](saveUpdates(_0x3d2ef5[_0x5e63('0x4f')],null))[_0x5e63('0x2c')](respondWithResult(_0x366c95,null))[_0x5e63('0x49')](handleError(_0x366c95,null));};exports['destroy']=function(_0x3650b6,_0x9dd966){return db[_0x5e63('0x45')][_0x5e63('0x50')]({'where':{'id':_0x3650b6[_0x5e63('0x4b')]['id']}})[_0x5e63('0x2c')](handleEntityNotFound(_0x9dd966,null))['then'](removeEntity(_0x9dd966,null))[_0x5e63('0x49')](handleError(_0x9dd966,null));};exports[_0x5e63('0x51')]=function(_0x4463d3,_0x2cdb4c){return db[_0x5e63('0x45')][_0x5e63('0x51')]()[_0x5e63('0x2c')](respondWithResult(_0x2cdb4c,null))[_0x5e63('0x49')](handleError(_0x2cdb4c,null));};function wrapUser(_0xeab5af){return function(_0x2bcd1a){var _0x5118f6=_0xeab5af[_0x5e63('0x52')]({'plain':!![]});_0x5118f6[_0x5e63('0x53')]=[];if(_0x2bcd1a){_0x5118f6[_0x5e63('0x54')]=_0x2bcd1a[_0x5e63('0x55')];_0x5118f6[_0x5e63('0x56')]=_0x2bcd1a;}else{_0x5118f6[_0x5e63('0x54')]=moment(0x0)[_0x5e63('0x57')](_0x5e63('0x58'));_0x5118f6[_0x5e63('0x56')]={};}return _0x5118f6;};}exports[_0x5e63('0x59')]=function(_0x148b8c,_0x378f04,_0x545d61){var _0x427c11=[];return db[_0x5e63('0x5a')]['findAll']({'where':{'role':[_0x5e63('0x5b'),_0x5e63('0x5c'),_0x5e63('0x5d')]},'attributes':['id','fullname',_0x5e63('0x2e'),_0x5e63('0x5e'),_0x5e63('0x5f'),'internal',_0x5e63('0x60'),_0x5e63('0x61'),_0x5e63('0x62'),_0x5e63('0x63')],'order':qs[_0x5e63('0x3e')](_0x5e63('0x64')),'include':[{'model':db[_0x5e63('0x65')],'as':_0x5e63('0x66'),'attributes':['id',_0x5e63('0x2e'),_0x5e63('0x33')],'through':{'attributes':[]}}]})[_0x5e63('0x2c')](function(_0x3a0eb8){if(_0x3a0eb8){var _0x46314b=_0x148b8c[_0x5e63('0x5d')][_0x5e63('0x52')]({'plain':!![]});if(!_0x46314b)throw new Error(_0x5e63('0x67'));if(_0x46314b['role']===_0x5e63('0x5d')){return db[_0x5e63('0x68')]['find']({'where':{'name':_0x5e63('0x69'),'userProfileId':_0x46314b['userProfileId']},'raw':!![]})[_0x5e63('0x2c')](function(_0x51c23c){if(_0x51c23c){if(_0x51c23c[_0x5e63('0x6a')]===0x0){return db[_0x5e63('0x6b')]['findAll']({'where':{'sectionId':_0x51c23c['id']},'raw':!![]})['then'](function(_0xf46a59){var _0x195aa0=[];if(_[_0x5e63('0x6c')](_0xf46a59)){_0x195aa0=_['filter'](_0x3a0eb8,function(_0x4b5f18){if(_0x4b5f18[_0x5e63('0x5e')]!==_0x5e63('0x5b')){return _0x4b5f18;}});return _0x195aa0;}else{for(var _0x2c075b=0x0;_0x2c075b<_0x3a0eb8[_0x5e63('0x4c')];_0x2c075b++){var _0x4d5369=_0x3a0eb8[_0x2c075b];if(_0x4d5369[_0x5e63('0x5e')]===_0x5e63('0x5b')){var _0x4a6d0c=_[_0x5e63('0x50')](_0xf46a59,function(_0x2e1aa9){return _0x2e1aa9[_0x5e63('0x6d')]===_0x4d5369['id'];});if(_0x4a6d0c)_0x195aa0[_0x5e63('0x6e')](_0x4d5369);}else{_0x195aa0[_0x5e63('0x6e')](_0x4d5369);}}return _0x195aa0;}});}else{return _0x3a0eb8;}}else{var _0x4243e6=_[_0x5e63('0x43')](_0x3a0eb8,function(_0x7bd452){if(_0x7bd452[_0x5e63('0x5e')]!=='agent'){return _0x7bd452;}});return _0x4243e6;}});}else{return _0x3a0eb8;}}})['then'](function(_0x57bd46){var _0x57ba41=[];if(_0x57bd46){_0x427c11=_0x57bd46;for(var _0x293158=0x0;_0x293158<_0x57bd46['length'];_0x293158+=0x1){_0x427c11[_0x293158][_0x5e63('0x53')]=[];_0x57ba41[_0x5e63('0x6e')](db[_0x5e63('0x45')][_0x5e63('0x50')]({'where':{'FromId':[_0x148b8c[_0x5e63('0x5d')]['id'],_0x57bd46[_0x293158]['id']],'ToId':[_0x148b8c[_0x5e63('0x5d')]['id'],_0x57bd46[_0x293158]['id']],'ChatGroupId':null},'attributes':['id',_0x5e63('0x55'),_0x5e63('0x6f'),_0x5e63('0x70'),_0x5e63('0x71'),'body'],'order':qs[_0x5e63('0x3e')](_0x5e63('0x72')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x5e63('0x2c')](wrapUser(_0x57bd46[_0x293158])));}return BPromise[_0x5e63('0x73')](_0x57ba41);}return[];})[_0x5e63('0x2c')](function(_0x10ff41){return{'rows':_0x10ff41,'count':_0x10ff41[_0x5e63('0x4c')]};})[_0x5e63('0x2c')](respondWithResult(_0x378f04,null))[_0x5e63('0x49')](handleError(_0x378f04,null));};
\ No newline at end of file
index 6b47f9d..1f46ff9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3951=['update','remove','emit','hasOwnProperty','exports','events','ChatInternalMessage','save'];(function(_0x49357a,_0x13a5f1){var _0x1061f5=function(_0x3fda0b){while(--_0x3fda0b){_0x49357a['push'](_0x49357a['shift']());}};_0x1061f5(++_0x13a5f1);}(_0x3951,0xdd));var _0x1395=function(_0x11ed7a,_0x2e0a4d){_0x11ed7a=_0x11ed7a-0x0;var _0x3e2b7f=_0x3951[_0x11ed7a];return _0x3e2b7f;};'use strict';var EventEmitter=require(_0x1395('0x0'));var ChatInternalMessage=require('../../mysqldb')['db'][_0x1395('0x1')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x1395('0x2'),'afterUpdate':_0x1395('0x3'),'afterDestroy':_0x1395('0x4')};function emitEvent(_0x3814cc){return function(_0x1b4a93,_0x570f2b,_0x122a01){ChatInternalMessageEvents[_0x1395('0x5')](_0x3814cc+':'+_0x1b4a93['id'],_0x1b4a93);ChatInternalMessageEvents[_0x1395('0x5')](_0x3814cc,_0x1b4a93);_0x122a01(null);};}for(var e in events){if(events[_0x1395('0x6')](e)){var event=events[e];ChatInternalMessage['hook'](e,emitEvent(event));}}module[_0x1395('0x7')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0xbe81=['hook','exports','events','../../mysqldb','ChatInternalMessage','setMaxListeners','update','remove','emit'];(function(_0x404e3f,_0x16fe94){var _0x2883f2=function(_0x202c10){while(--_0x202c10){_0x404e3f['push'](_0x404e3f['shift']());}};_0x2883f2(++_0x16fe94);}(_0xbe81,0x1a9));var _0x1be8=function(_0x284885,_0x34b143){_0x284885=_0x284885-0x0;var _0x3a9710=_0xbe81[_0x284885];return _0x3a9710;};'use strict';var EventEmitter=require(_0x1be8('0x0'));var ChatInternalMessage=require(_0x1be8('0x1'))['db'][_0x1be8('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x1be8('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x1be8('0x4'),'afterDestroy':_0x1be8('0x5')};function emitEvent(_0x146ae4){return function(_0x538d76,_0x112f0a,_0xf0a849){ChatInternalMessageEvents[_0x1be8('0x6')](_0x146ae4+':'+_0x538d76['id'],_0x538d76);ChatInternalMessageEvents['emit'](_0x146ae4,_0x538d76);_0xf0a849(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInternalMessage[_0x1be8('0x7')](e,emitEvent(event));}}module[_0x1be8('0x8')]=ChatInternalMessageEvents;
\ No newline at end of file
index ffa53e2..8dc27a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0366=['request-promise','path','../../config/environment','./chatInternalMessage.attributes','define','ChatInternalMessage','chat_internal_messages','utf8mb4_unicode_ci','../../config/logger','api','moment','bluebird'];(function(_0x5d0645,_0x366956){var _0x1491f1=function(_0x34e665){while(--_0x34e665){_0x5d0645['push'](_0x5d0645['shift']());}};_0x1491f1(++_0x366956);}(_0x0366,0xec));var _0x6036=function(_0x5264ba,_0xa15aba){_0x5264ba=_0x5264ba-0x0;var _0x286a31=_0x0366[_0x5264ba];return _0x286a31;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x6036('0x0'))(_0x6036('0x1'));var moment=require(_0x6036('0x2'));var BPromise=require(_0x6036('0x3'));var rp=require(_0x6036('0x4'));var fs=require('fs');var path=require(_0x6036('0x5'));var rimraf=require('rimraf');var config=require(_0x6036('0x6'));var attributes=require(_0x6036('0x7'));module['exports']=function(_0x46e8d9,_0x3dcae2){return _0x46e8d9[_0x6036('0x8')](_0x6036('0x9'),attributes,{'tableName':_0x6036('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x6036('0xb')});};
\ No newline at end of file
+var _0xcf64=['bluebird','rimraf','../../config/environment','./chatInternalMessage.attributes','exports','define','utf8mb4','utf8mb4_unicode_ci','lodash','util','api'];(function(_0x2af235,_0x45f664){var _0x593c0e=function(_0x1b12d4){while(--_0x1b12d4){_0x2af235['push'](_0x2af235['shift']());}};_0x593c0e(++_0x45f664);}(_0xcf64,0x15d));var _0x4cf6=function(_0x532c48,_0x50da8d){_0x532c48=_0x532c48-0x0;var _0x40e965=_0xcf64[_0x532c48];return _0x40e965;};'use strict';var _=require(_0x4cf6('0x0'));var util=require(_0x4cf6('0x1'));var logger=require('../../config/logger')(_0x4cf6('0x2'));var moment=require('moment');var BPromise=require(_0x4cf6('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4cf6('0x4'));var config=require(_0x4cf6('0x5'));var attributes=require(_0x4cf6('0x6'));module[_0x4cf6('0x7')]=function(_0x270e31,_0x1360cf){return _0x270e31[_0x4cf6('0x8')]('ChatInternalMessage',attributes,{'tableName':'chat_internal_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x4cf6('0x9'),'collate':_0x4cf6('0xa')});};
\ No newline at end of file
index 791528d..9150169 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb83b=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','socket.io-emitter','./chatInternalMessage.socket','register','request','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0xb83b,0x8e));var _0xbb83=function(_0x56f91f,_0x432546){_0x56f91f=_0x56f91f-0x0;var _0x569d0a=_0xb83b[_0x56f91f];return _0x569d0a;};'use strict';var _=require(_0xbb83('0x0'));var util=require(_0xbb83('0x1'));var moment=require(_0xbb83('0x2'));var BPromise=require(_0xbb83('0x3'));var rs=require(_0xbb83('0x4'));var fs=require('fs');var Redis=require(_0xbb83('0x5'));var db=require(_0xbb83('0x6'))['db'];var utils=require(_0xbb83('0x7'));var logger=require(_0xbb83('0x8'))(_0xbb83('0x9'));var config=require(_0xbb83('0xa'));var jayson=require('jayson/promise');var client=jayson['client'][_0xbb83('0xb')]({'port':0x232a});config[_0xbb83('0xc')]=_['defaults'](config[_0xbb83('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xbb83('0xd'))(new Redis(config[_0xbb83('0xc')]));require(_0xbb83('0xe'))[_0xbb83('0xf')](socket);function respondWithRpcPromise(_0x34bcac,_0x546764,_0x45bb5c){return new BPromise(function(_0x17cb96,_0x4f6411){return client[_0xbb83('0x10')](_0x34bcac,_0x45bb5c)[_0xbb83('0x11')](function(_0x34e3f5){logger[_0xbb83('0x12')](_0xbb83('0x13'),_0x546764,_0xbb83('0x14'));logger[_0xbb83('0x15')](_0xbb83('0x16'),_0x546764,_0xbb83('0x14'),JSON[_0xbb83('0x17')](_0x34e3f5));if(_0x34e3f5[_0xbb83('0x18')]){if(_0x34e3f5[_0xbb83('0x18')]['code']===0x1f4){logger['error'](_0xbb83('0x13'),_0x546764,_0x34e3f5['error'][_0xbb83('0x19')]);return _0x4f6411(_0x34e3f5['error']['message']);}logger[_0xbb83('0x18')](_0xbb83('0x13'),_0x546764,_0x34e3f5['error'][_0xbb83('0x19')]);return _0x17cb96(_0x34e3f5['error'][_0xbb83('0x19')]);}else{logger['info'](_0xbb83('0x13'),_0x546764,_0xbb83('0x14'));_0x17cb96(_0x34e3f5[_0xbb83('0x1a')]['message']);}})[_0xbb83('0x1b')](function(_0x3dda74){logger['error'](_0xbb83('0x13'),_0x546764,_0x3dda74);_0x4f6411(_0x3dda74);});});}
\ No newline at end of file
+var _0x309d=['rpc','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','./chatInternalMessage.socket','request','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','error','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger'];(function(_0x36bf88,_0x15c459){var _0x332914=function(_0x512adf){while(--_0x512adf){_0x36bf88['push'](_0x36bf88['shift']());}};_0x332914(++_0x15c459);}(_0x309d,0x1ed));var _0xd309=function(_0x1230b2,_0x21e0f1){_0x1230b2=_0x1230b2-0x0;var _0x1902f5=_0x309d[_0x1230b2];return _0x1902f5;};'use strict';var _=require(_0xd309('0x0'));var util=require(_0xd309('0x1'));var moment=require(_0xd309('0x2'));var BPromise=require(_0xd309('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd309('0x4'));var db=require(_0xd309('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xd309('0x6'))(_0xd309('0x7'));var config=require(_0xd309('0x8'));var jayson=require(_0xd309('0x9'));var client=jayson[_0xd309('0xa')][_0xd309('0xb')]({'port':0x232a});config[_0xd309('0xc')]=_['defaults'](config[_0xd309('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xd309('0xd'))(new Redis(config[_0xd309('0xc')]));require(_0xd309('0xe'))['register'](socket);function respondWithRpcPromise(_0x148422,_0x4a3a5a,_0x46d643){return new BPromise(function(_0x125aae,_0x22197a){return client[_0xd309('0xf')](_0x148422,_0x46d643)[_0xd309('0x10')](function(_0x346b47){logger[_0xd309('0x11')](_0xd309('0x12'),_0x4a3a5a,_0xd309('0x13'));logger[_0xd309('0x14')]('ChatInternalMessage,\x20%s,\x20%s,\x20%s',_0x4a3a5a,_0xd309('0x13'),JSON['stringify'](_0x346b47));if(_0x346b47[_0xd309('0x15')]){if(_0x346b47[_0xd309('0x15')]['code']===0x1f4){logger[_0xd309('0x15')](_0xd309('0x12'),_0x4a3a5a,_0x346b47[_0xd309('0x15')][_0xd309('0x16')]);return _0x22197a(_0x346b47[_0xd309('0x15')][_0xd309('0x16')]);}logger[_0xd309('0x15')](_0xd309('0x12'),_0x4a3a5a,_0x346b47[_0xd309('0x15')][_0xd309('0x16')]);return _0x125aae(_0x346b47[_0xd309('0x15')][_0xd309('0x16')]);}else{logger['info'](_0xd309('0x12'),_0x4a3a5a,'request\x20sent');_0x125aae(_0x346b47[_0xd309('0x17')]['message']);}})[_0xd309('0x18')](function(_0x4d856a){logger[_0xd309('0x15')](_0xd309('0x12'),_0x4a3a5a,_0x4d856a);_0x22197a(_0x4d856a);});});}
\ No newline at end of file
index b30382c..42147db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa75=['removeListener','length','chatInternalMessage:','./chatInternalMessage.events','emit'];(function(_0x34bc30,_0x177cb0){var _0x5706de=function(_0x535a8c){while(--_0x535a8c){_0x34bc30['push'](_0x34bc30['shift']());}};_0x5706de(++_0x177cb0);}(_0xaa75,0x120));var _0x5aa7=function(_0x5b8fc7,_0x577d99){_0x5b8fc7=_0x5b8fc7-0x0;var _0x5165f6=_0xaa75[_0x5b8fc7];return _0x5165f6;};'use strict';var ChatInternalMessageEvents=require(_0x5aa7('0x0'));var events=['save','remove','update'];function createListener(_0x2164d1,_0x5b2db3){return function(_0x148400){_0x5b2db3[_0x5aa7('0x1')](_0x2164d1,_0x148400);};}function removeListener(_0x54b448,_0x209d08){return function(){ChatInternalMessageEvents[_0x5aa7('0x2')](_0x54b448,_0x209d08);};}exports['register']=function(_0x47d2ff){for(var _0x442022=0x0,_0x27575e=events[_0x5aa7('0x3')];_0x442022<_0x27575e;_0x442022++){var _0x291130=events[_0x442022];var _0x1b502a=createListener(_0x5aa7('0x4')+_0x291130,_0x47d2ff);ChatInternalMessageEvents['on'](_0x291130,_0x1b502a);}};
\ No newline at end of file
+var _0xd3ed=['removeListener','register','chatInternalMessage:','remove','update','emit'];(function(_0x31b070,_0x1d3e08){var _0x3308fa=function(_0x3cbcd7){while(--_0x3cbcd7){_0x31b070['push'](_0x31b070['shift']());}};_0x3308fa(++_0x1d3e08);}(_0xd3ed,0x195));var _0xdd3e=function(_0x4bb6b8,_0x1fb197){_0x4bb6b8=_0x4bb6b8-0x0;var _0x524a57=_0xd3ed[_0x4bb6b8];return _0x524a57;};'use strict';var ChatInternalMessageEvents=require('./chatInternalMessage.events');var events=['save',_0xdd3e('0x0'),_0xdd3e('0x1')];function createListener(_0x198fb7,_0x40d37e){return function(_0x3b52bc){_0x40d37e[_0xdd3e('0x2')](_0x198fb7,_0x3b52bc);};}function removeListener(_0x31e2a8,_0x211348){return function(){ChatInternalMessageEvents[_0xdd3e('0x3')](_0x31e2a8,_0x211348);};}exports[_0xdd3e('0x4')]=function(_0x2e1285){for(var _0x13e724=0x0,_0x30b9dc=events['length'];_0x13e724<_0x30b9dc;_0x13e724++){var _0xc25b26=events[_0x13e724];var _0x276143=createListener(_0xdd3e('0x5')+_0xc25b26,_0x2e1285);ChatInternalMessageEvents['on'](_0xc25b26,_0x276143);}};
\ No newline at end of file
index d42ba04..d0ed5e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dba=['../../components/interaction/service','../../config/environment','isAuthenticated','/describe','describe','get','/users','getUsers','show','post','put','update','/:id','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x34abca,_0x33b8d4){var _0x3d3472=function(_0x5ce42f){while(--_0x5ce42f){_0x34abca['push'](_0x34abca['shift']());}};_0x3d3472(++_0x33b8d4);}(_0x4dba,0xe0));var _0xa4db=function(_0x14cc37,_0x3c2c69){_0x14cc37=_0x14cc37-0x0;var _0x11a633=_0x4dba[_0x14cc37];return _0x11a633;};'use strict';var multer=require('multer');var util=require(_0xa4db('0x0'));var path=require(_0xa4db('0x1'));var timeout=require(_0xa4db('0x2'));var express=require(_0xa4db('0x3'));var router=express[_0xa4db('0x4')]();var fs_extra=require(_0xa4db('0x5'));var auth=require(_0xa4db('0x6'));var interaction=require(_0xa4db('0x7'));var config=require(_0xa4db('0x8'));var controller=require('./chatInternalMessage.controller');router['get']('/',auth[_0xa4db('0x9')](),controller['index']);router['get'](_0xa4db('0xa'),auth[_0xa4db('0x9')](),controller[_0xa4db('0xb')]);router[_0xa4db('0xc')](_0xa4db('0xd'),auth['isAuthenticated'](),controller[_0xa4db('0xe')]);router[_0xa4db('0xc')]('/:id',auth[_0xa4db('0x9')](),controller[_0xa4db('0xf')]);router[_0xa4db('0x10')]('/',auth[_0xa4db('0x9')](),controller['create']);router[_0xa4db('0x11')]('/:id',controller[_0xa4db('0x12')]);router['delete'](_0xa4db('0x13'),auth[_0xa4db('0x9')](),controller[_0xa4db('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x6f90=['/users','getUsers','show','create','put','delete','/:id','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0x6f90,0x198));var _0x06f9=function(_0x122949,_0x3592b1){_0x122949=_0x122949-0x0;var _0x369d1f=_0x6f90[_0x122949];return _0x369d1f;};'use strict';var multer=require('multer');var util=require(_0x06f9('0x0'));var path=require('path');var timeout=require(_0x06f9('0x1'));var express=require(_0x06f9('0x2'));var router=express[_0x06f9('0x3')]();var fs_extra=require(_0x06f9('0x4'));var auth=require(_0x06f9('0x5'));var interaction=require(_0x06f9('0x6'));var config=require(_0x06f9('0x7'));var controller=require('./chatInternalMessage.controller');router[_0x06f9('0x8')]('/',auth[_0x06f9('0x9')](),controller[_0x06f9('0xa')]);router[_0x06f9('0x8')]('/describe',auth[_0x06f9('0x9')](),controller[_0x06f9('0xb')]);router[_0x06f9('0x8')](_0x06f9('0xc'),auth[_0x06f9('0x9')](),controller[_0x06f9('0xd')]);router[_0x06f9('0x8')]('/:id',auth[_0x06f9('0x9')](),controller[_0x06f9('0xe')]);router['post']('/',auth[_0x06f9('0x9')](),controller[_0x06f9('0xf')]);router[_0x06f9('0x10')]('/:id',controller['update']);router[_0x06f9('0x11')](_0x06f9('0x12'),auth[_0x06f9('0x9')](),controller[_0x06f9('0x13')]);module[_0x06f9('0x14')]=router;
\ No newline at end of file
index 347b3ce..19b45c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f72=['sequelize','exports','TEXT','BOOLEAN','ENUM','out','DATE'];(function(_0x4449ef,_0x2ed2ad){var _0x2becaf=function(_0x16789f){while(--_0x16789f){_0x4449ef['push'](_0x4449ef['shift']());}};_0x2becaf(++_0x2ed2ad);}(_0x3f72,0xaf));var _0x23f7=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x3f72[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require(_0x23f7('0x0'));module[_0x23f7('0x1')]={'body':{'type':Sequelize[_0x23f7('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x23f7('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x23f7('0x4')]('in',_0x23f7('0x5')),'defaultValue':_0x23f7('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0x23f7('0x6')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x23f7('0x2')]}};
\ No newline at end of file
+var _0xa30a=['exports','TEXT','BOOLEAN','ENUM','out','DATE','STRING','sequelize'];(function(_0x55fe01,_0x12ed37){var _0x5b42f0=function(_0x461191){while(--_0x461191){_0x55fe01['push'](_0x55fe01['shift']());}};_0x5b42f0(++_0x12ed37);}(_0xa30a,0xd7));var _0xaa30=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xa30a[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0xaa30('0x0'));module[_0xaa30('0x1')]={'body':{'type':Sequelize[_0xaa30('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xaa30('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0xaa30('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0xaa30('0x4')]('in',_0xaa30('0x5')),'defaultValue':_0xaa30('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0xaa30('0x6')]},'providerName':{'type':Sequelize[_0xaa30('0x7')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 073d82c..a5a9ab7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd432=['index','map','ChatMessage','rawAttributes','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','keys','find','create','body','describe','chat-interactions','accept','chat','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','ChatInteraction','ChatInteractionId','isNil','read1stAt','interaction','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','parse','formData','null','RejectMessage','rejectMessage','ContactId','motionChannel','rejectmessage','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./chatMessage.socket','register','jayson/promise','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','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','stack','name','send'];(function(_0x55f8b4,_0x43f30d){var _0x2475f9=function(_0xdd6f4a){while(--_0xdd6f4a){_0x55f8b4['push'](_0x55f8b4['shift']());}};_0x2475f9(++_0x43f30d);}(_0xd432,0x15c));var _0x2d43=function(_0x51448f,_0x51c208){_0x51448f=_0x51448f-0x0;var _0x16cc33=_0xd432[_0x51448f];return _0x16cc33;};'use strict';var emlformat=require(_0x2d43('0x0'));var rimraf=require(_0x2d43('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2d43('0x2'));var rp=require(_0x2d43('0x3'));var moment=require(_0x2d43('0x4'));var BPromise=require(_0x2d43('0x5'));var Mustache=require(_0x2d43('0x6'));var util=require(_0x2d43('0x7'));var path=require(_0x2d43('0x8'));var sox=require(_0x2d43('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2d43('0xa'));var squel=require(_0x2d43('0xb'));var crypto=require('crypto');var jsforce=require(_0x2d43('0xc'));var deskjs=require(_0x2d43('0xd'));var toCsv=require(_0x2d43('0xe'));var querystring=require(_0x2d43('0xf'));var Papa=require(_0x2d43('0x10'));var Redis=require(_0x2d43('0x11'));var authService=require(_0x2d43('0x12'));var qs=require(_0x2d43('0x13'));var as=require(_0x2d43('0x14'));var hardwareService=require(_0x2d43('0x15'));var logger=require(_0x2d43('0x16'))('api');var utils=require(_0x2d43('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x2d43('0x18'));var db=require(_0x2d43('0x19'))['db'];config[_0x2d43('0x1a')]=_['defaults'](config[_0x2d43('0x1a')],{'host':_0x2d43('0x1b'),'port':0x18eb});var socket=require(_0x2d43('0x1c'))(new Redis(config['redis']));require(_0x2d43('0x1d'))[_0x2d43('0x1e')](socket);var jayson=require(_0x2d43('0x1f'));var client=jayson[_0x2d43('0x20')][_0x2d43('0x21')]({'port':0x232c});var client9002=jayson['client'][_0x2d43('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x40ff52,_0x597182,_0x470893,_0x3d86bc){return new BPromise(function(_0x3ff6b,_0x300dc8){var _0x150d90=_0x3d86bc||client;return _0x150d90[_0x2d43('0x22')](_0x40ff52,_0x470893)[_0x2d43('0x23')](function(_0x81d389){logger[_0x2d43('0x24')](_0x2d43('0x25'),_0x597182,_0x2d43('0x26'));logger['debug'](_0x2d43('0x27'),_0x597182,_0x2d43('0x26'),JSON[_0x2d43('0x28')](_0x81d389));if(_0x81d389[_0x2d43('0x29')]){if(_0x81d389[_0x2d43('0x29')][_0x2d43('0x2a')]===0x1f4){logger[_0x2d43('0x29')](_0x2d43('0x25'),_0x597182,_0x81d389['error']['message']);return _0x300dc8(_0x81d389[_0x2d43('0x29')][_0x2d43('0x2b')]);}logger['error'](_0x2d43('0x25'),_0x597182,_0x81d389[_0x2d43('0x29')]['message']);return _0x3ff6b(_0x81d389['error'][_0x2d43('0x2b')]);}else{logger['info'](_0x2d43('0x25'),_0x597182,'request\x20sent');_0x3ff6b(_0x81d389[_0x2d43('0x2c')][_0x2d43('0x2b')]);}})['catch'](function(_0xfd45ac){logger[_0x2d43('0x29')](_0x2d43('0x25'),_0x597182,_0xfd45ac);_0x300dc8(_0xfd45ac);});});}function respondWithStatusCode(_0x2661c2,_0x5e7881){_0x5e7881=_0x5e7881||0xcc;return function(_0x29eb6f){if(_0x29eb6f){return _0x2661c2[_0x2d43('0x2d')](_0x5e7881);}return _0x2661c2[_0x2d43('0x2e')](_0x5e7881)[_0x2d43('0x2f')]();};}function respondWithResult(_0xfcd274,_0x1c691c){_0x1c691c=_0x1c691c||0xc8;return function(_0x4334ea){if(_0x4334ea){return _0xfcd274[_0x2d43('0x2e')](_0x1c691c)[_0x2d43('0x30')](_0x4334ea);}};}function respondWithFilteredResult(_0x84ff60,_0x445b97){return function(_0x98467){if(_0x98467){var _0x299d3e=typeof _0x445b97[_0x2d43('0x31')]===_0x2d43('0x32')&&typeof _0x445b97[_0x2d43('0x33')]==='undefined';var _0x17f675=_0x98467[_0x2d43('0x34')];var _0x408462=_0x299d3e?0x0:_0x445b97[_0x2d43('0x31')];var _0x1d639f=_0x299d3e?_0x98467[_0x2d43('0x34')]:_0x445b97['offset']+_0x445b97[_0x2d43('0x33')];var _0x11d175;if(_0x1d639f>=_0x17f675){_0x1d639f=_0x17f675;_0x11d175=0xc8;}else{_0x11d175=0xce;}_0x84ff60[_0x2d43('0x2e')](_0x11d175);return _0x84ff60[_0x2d43('0x35')](_0x2d43('0x36'),_0x408462+'-'+_0x1d639f+'/'+_0x17f675)[_0x2d43('0x30')](_0x98467);}return null;};}function patchUpdates(_0x1379ed){return function(_0x4404c2){try{jsonpatch[_0x2d43('0x37')](_0x4404c2,_0x1379ed,!![]);}catch(_0x2b1fed){return BPromise[_0x2d43('0x38')](_0x2b1fed);}return _0x4404c2[_0x2d43('0x39')]();};}function saveUpdates(_0x1eec69,_0x216c0a){return function(_0x32f1a7){if(_0x32f1a7){return _0x32f1a7[_0x2d43('0x3a')](_0x1eec69)[_0x2d43('0x23')](function(_0x100139){return _0x100139;});}return null;};}function removeEntity(_0x2ee489,_0x435b1a){return function(_0x1acd13){if(_0x1acd13){return _0x1acd13[_0x2d43('0x3b')]()[_0x2d43('0x23')](function(){_0x2ee489[_0x2d43('0x2e')](0xcc)[_0x2d43('0x2f')]();});}};}function handleEntityNotFound(_0x20c1b8,_0x5a8317){return function(_0x5ed645){if(!_0x5ed645){_0x20c1b8[_0x2d43('0x2d')](0x194);}return _0x5ed645;};}function handleError(_0x4c65c5,_0x1b0b9e){_0x1b0b9e=_0x1b0b9e||0x1f4;return function(_0x80d39d){logger['error'](_0x80d39d[_0x2d43('0x3c')]);if(_0x80d39d[_0x2d43('0x3d')]){delete _0x80d39d[_0x2d43('0x3d')];}_0x4c65c5[_0x2d43('0x2e')](_0x1b0b9e)[_0x2d43('0x3e')](_0x80d39d);};}exports[_0x2d43('0x3f')]=function(_0x583ae9,_0x5b26a0){var _0x35d889={},_0x8832ba={},_0x21f275={'count':0x0,'rows':[]};var _0x363f70=_[_0x2d43('0x40')](db[_0x2d43('0x41')][_0x2d43('0x42')],function(_0x5eafd9){return{'name':_0x5eafd9['fieldName'],'type':_0x5eafd9[_0x2d43('0x43')][_0x2d43('0x44')]};});_0x8832ba[_0x2d43('0x45')]=_[_0x2d43('0x40')](_0x363f70,_0x2d43('0x3d'));_0x8832ba[_0x2d43('0x46')]=_['keys'](_0x583ae9[_0x2d43('0x46')]);_0x8832ba[_0x2d43('0x47')]=_['intersection'](_0x8832ba['model'],_0x8832ba[_0x2d43('0x46')]);_0x35d889[_0x2d43('0x48')]=_[_0x2d43('0x49')](_0x8832ba['model'],qs[_0x2d43('0x4a')](_0x583ae9['query'][_0x2d43('0x4a')]));_0x35d889[_0x2d43('0x48')]=_0x35d889['attributes'][_0x2d43('0x4b')]?_0x35d889[_0x2d43('0x48')]:_0x8832ba[_0x2d43('0x45')];if(!_0x583ae9[_0x2d43('0x46')][_0x2d43('0x4c')](_0x2d43('0x4d'))){_0x35d889[_0x2d43('0x33')]=qs[_0x2d43('0x33')](_0x583ae9[_0x2d43('0x46')][_0x2d43('0x33')]);_0x35d889['offset']=qs[_0x2d43('0x31')](_0x583ae9[_0x2d43('0x46')][_0x2d43('0x31')]);}_0x35d889[_0x2d43('0x4e')]=qs[_0x2d43('0x4f')](_0x583ae9[_0x2d43('0x46')][_0x2d43('0x4f')]);_0x35d889[_0x2d43('0x50')]=qs[_0x2d43('0x47')](_[_0x2d43('0x51')](_0x583ae9[_0x2d43('0x46')],_0x8832ba['filters']),_0x363f70);if(_0x583ae9[_0x2d43('0x46')][_0x2d43('0x52')]){_0x35d889[_0x2d43('0x50')]=_[_0x2d43('0x53')](_0x35d889[_0x2d43('0x50')],{'$or':_[_0x2d43('0x40')](_0x363f70,function(_0x4f7501){if(_0x4f7501[_0x2d43('0x43')]!==_0x2d43('0x54')){var _0xf6cb92={};_0xf6cb92[_0x4f7501['name']]={'$like':'%'+_0x583ae9[_0x2d43('0x46')][_0x2d43('0x52')]+'%'};return _0xf6cb92;}})});}_0x35d889=_[_0x2d43('0x53')]({},_0x35d889,_0x583ae9[_0x2d43('0x55')]);var _0x1078ad={'where':_0x35d889[_0x2d43('0x50')]};return db[_0x2d43('0x41')][_0x2d43('0x34')](_0x1078ad)[_0x2d43('0x23')](function(_0x1b3361){_0x21f275[_0x2d43('0x34')]=_0x1b3361;if(_0x583ae9['query'][_0x2d43('0x56')]){_0x35d889[_0x2d43('0x57')]=[{'all':!![]}];}return db[_0x2d43('0x41')]['findAll'](_0x35d889);})[_0x2d43('0x23')](function(_0x1f0b4c){_0x21f275[_0x2d43('0x58')]=_0x1f0b4c;return _0x21f275;})[_0x2d43('0x23')](respondWithFilteredResult(_0x5b26a0,_0x35d889))[_0x2d43('0x59')](handleError(_0x5b26a0,null));};exports[_0x2d43('0x5a')]=function(_0x5be686,_0x5096b9){var _0x343ff7={'raw':!![],'where':{'id':_0x5be686[_0x2d43('0x5b')]['id']}},_0x44a4b0={};_0x44a4b0[_0x2d43('0x45')]=_['keys'](db[_0x2d43('0x41')][_0x2d43('0x42')]);_0x44a4b0[_0x2d43('0x46')]=_[_0x2d43('0x5c')](_0x5be686[_0x2d43('0x46')]);_0x44a4b0[_0x2d43('0x47')]=_[_0x2d43('0x49')](_0x44a4b0['model'],_0x44a4b0[_0x2d43('0x46')]);_0x343ff7['attributes']=_[_0x2d43('0x49')](_0x44a4b0['model'],qs['fields'](_0x5be686[_0x2d43('0x46')][_0x2d43('0x4a')]));_0x343ff7[_0x2d43('0x48')]=_0x343ff7[_0x2d43('0x48')][_0x2d43('0x4b')]?_0x343ff7[_0x2d43('0x48')]:_0x44a4b0[_0x2d43('0x45')];if(_0x5be686[_0x2d43('0x46')][_0x2d43('0x56')]){_0x343ff7[_0x2d43('0x57')]=[{'all':!![]}];}_0x343ff7=_['merge']({},_0x343ff7,_0x5be686[_0x2d43('0x55')]);return db[_0x2d43('0x41')][_0x2d43('0x5d')](_0x343ff7)[_0x2d43('0x23')](handleEntityNotFound(_0x5096b9,null))[_0x2d43('0x23')](respondWithResult(_0x5096b9,null))[_0x2d43('0x59')](handleError(_0x5096b9,null));};exports[_0x2d43('0x5e')]=function(_0x3b8900,_0x130e99){return db[_0x2d43('0x41')][_0x2d43('0x5e')](_0x3b8900[_0x2d43('0x5f')],{})['then'](respondWithResult(_0x130e99,0xc9))['catch'](handleError(_0x130e99,null));};exports[_0x2d43('0x3a')]=function(_0x8e0a87,_0x20849f){if(_0x8e0a87['body']['id']){delete _0x8e0a87[_0x2d43('0x5f')]['id'];}return db[_0x2d43('0x41')]['find']({'where':{'id':_0x8e0a87[_0x2d43('0x5b')]['id']}})[_0x2d43('0x23')](handleEntityNotFound(_0x20849f,null))[_0x2d43('0x23')](saveUpdates(_0x8e0a87[_0x2d43('0x5f')],null))[_0x2d43('0x23')](respondWithResult(_0x20849f,null))[_0x2d43('0x59')](handleError(_0x20849f,null));};exports[_0x2d43('0x3b')]=function(_0x5b544c,_0x5261ea){return db[_0x2d43('0x41')]['find']({'where':{'id':_0x5b544c[_0x2d43('0x5b')]['id']}})['then'](handleEntityNotFound(_0x5261ea,null))[_0x2d43('0x23')](removeEntity(_0x5261ea,null))[_0x2d43('0x59')](handleError(_0x5261ea,null));};exports[_0x2d43('0x60')]=function(_0x6c9c7b,_0x58c955){return db['ChatMessage']['describe']()[_0x2d43('0x23')](respondWithResult(_0x58c955,null))['catch'](handleError(_0x58c955,null));};var interaction_log=require(_0x2d43('0x16'))(_0x2d43('0x61'));exports[_0x2d43('0x62')]=function(_0x40c203,_0x1832f0,_0x3175f5){var _0x27a133={'agent':{},'channel':_0x2d43('0x63')};if(_0x40c203[_0x2d43('0x5f')]['id']){delete _0x40c203['body']['id'];}_0x40c203[_0x2d43('0x5f')]['read']=!![];_0x40c203[_0x2d43('0x5f')]['readAt']=moment()[_0x2d43('0x64')](_0x2d43('0x65'));_0x40c203[_0x2d43('0x5f')]['UserId']=_0x40c203[_0x2d43('0x5f')][_0x2d43('0x66')]||_0x40c203[_0x2d43('0x67')]['id'];_0x27a133[_0x2d43('0x68')]['id']=_0x40c203[_0x2d43('0x5f')]['UserId'];return db[_0x2d43('0x41')][_0x2d43('0x5d')]({'where':{'id':_0x40c203[_0x2d43('0x5b')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x1832f0,null))['then'](saveUpdates(_0x40c203[_0x2d43('0x5f')],null))[_0x2d43('0x23')](function(_0x4959d6){if(_0x4959d6){_0x27a133['message']=_0x4959d6[_0x2d43('0x69')]({'plain':!![]});return db[_0x2d43('0x6a')][_0x2d43('0x5d')]({'where':{'id':_0x4959d6[_0x2d43('0x6b')]}});}return null;})[_0x2d43('0x23')](handleEntityNotFound(_0x1832f0,null))['then'](function(_0x3d5f1c){if(_0x3d5f1c){return _0x3d5f1c[_0x2d43('0x3a')]({'UserId':_0x40c203['body'][_0x2d43('0x66')],'read1stAt':_[_0x2d43('0x6c')](_0x3d5f1c[_0x2d43('0x6d')])?moment()[_0x2d43('0x64')](_0x2d43('0x65')):undefined});}return null;})[_0x2d43('0x23')](function(_0x530dbf){if(_0x530dbf){_0x27a133[_0x2d43('0x6e')]=_0x530dbf[_0x2d43('0x69')]({'plain':!![]});interaction_log['info']('[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x40c203[_0x2d43('0x67')]['id'],_0x40c203['user']['name'],_0x40c203[_0x2d43('0x67')]['role'],_0x27a133[_0x2d43('0x6e')]['id'],_0x40c203[_0x2d43('0x5f')]?JSON[_0x2d43('0x28')](_0x40c203['body']):'null');return respondWithRpcPromise(_0x2d43('0x6f'),_0x2d43('0x70'),_0x27a133);}return null;})['then'](function(_0x453e88){var _0x52a28a=_0x2d43('0x71')+_0x453e88[_0x2d43('0x2b')]['ContactId'];return db[_0x2d43('0x72')][_0x2d43('0x46')](_0x52a28a,{'type':db[_0x2d43('0x73')][_0x2d43('0x74')]['SELECT'],'raw':!![]})['then'](function(_0x5992ce){return _0x5992ce;});})[_0x2d43('0x23')](function(_0x223397){if(_0x223397){_0x27a133['message'][_0x2d43('0x75')]=_0x223397[0x0];if(!_0x40c203[_0x2d43('0x5f')]['UserId'])return;return db[_0x2d43('0x76')][_0x2d43('0x5d')]({'where':{'id':_0x40c203['body']['UserId'],'role':'agent'},'attributes':['id',_0x2d43('0x3d'),_0x2d43('0x77'),_0x2d43('0x78'),_0x2d43('0x79')],'raw':!![]});}return null;})[_0x2d43('0x23')](function(_0x3e1aa4){if(!_0x3e1aa4)return null;_0x27a133[_0x2d43('0x2b')][_0x2d43('0x68')]=_0x3e1aa4;return _0x27a133;})['then'](function(_0x18881b){if(_0x18881b){if(_0x40c203[_0x2d43('0x5f')][_0x2d43('0x7a')]){_0x27a133[_0x2d43('0x2b')][_0x2d43('0x7b')]=util[_0x2d43('0x64')](_0x2d43('0x7c'),_0x40c203[_0x2d43('0x67')][_0x2d43('0x3d')]);_0x27a133[_0x2d43('0x2b')][_0x2d43('0x7d')]=_0x27a133[_0x2d43('0x7d')];_0x27a133[_0x2d43('0x2b')]['motionChannel']=_0x27a133['channel'];_0x27a133[_0x2d43('0x2b')][_0x2d43('0x7e')]=_0x2d43('0x62');return respondWithRpcPromise(_0x2d43('0x7f'),_0x2d43('0x7f'),{'event':_0x2d43('0x80'),'message':_[_0x2d43('0x53')](_0x27a133['message'],JSON[_0x2d43('0x81')](_0x27a133[_0x2d43('0x6e')][_0x2d43('0x82')]))},client9002)['then'](function(){return _0x27a133;});}return _0x27a133;}return null;})['then'](respondWithResult(_0x1832f0,null))[_0x2d43('0x59')](handleError(_0x1832f0,null));};var interaction_log=require(_0x2d43('0x16'))(_0x2d43('0x61'));exports[_0x2d43('0x38')]=function(_0x22af22,_0x598545,_0x4d5628){var _0xf531d2={'agent':{},'channel':_0x2d43('0x63')};if(_0x22af22['body']['id']){delete _0x22af22['body']['id'];}_0x22af22[_0x2d43('0x5f')][_0x2d43('0x66')]=_0x22af22[_0x2d43('0x5f')][_0x2d43('0x66')]||_0x22af22['user']['id'];_0xf531d2[_0x2d43('0x68')]['id']=_0x22af22[_0x2d43('0x5f')][_0x2d43('0x66')];return db[_0x2d43('0x41')][_0x2d43('0x5d')]({'where':{'id':_0x22af22[_0x2d43('0x5b')]['id'],'UserId':null}})[_0x2d43('0x23')](handleEntityNotFound(_0x598545,null))[_0x2d43('0x23')](function(_0x12d404){if(_0x12d404){_0xf531d2[_0x2d43('0x2b')]=_0x12d404['get']({'plain':!![]});return db[_0x2d43('0x6a')][_0x2d43('0x5d')]({'where':{'id':_0x12d404[_0x2d43('0x6b')]}});}return null;})[_0x2d43('0x23')](handleEntityNotFound(_0x598545,null))[_0x2d43('0x23')](function(_0xf7dfc5){if(_0xf7dfc5){_0xf531d2['interaction']=_0xf7dfc5[_0x2d43('0x69')]({'plain':!![]});interaction_log[_0x2d43('0x24')]('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x22af22[_0x2d43('0x67')]['id'],_0x22af22[_0x2d43('0x67')][_0x2d43('0x3d')],_0x22af22[_0x2d43('0x67')]['role'],_0xf531d2[_0x2d43('0x6e')]['id'],_0x22af22[_0x2d43('0x5f')]?JSON[_0x2d43('0x28')](_0x22af22[_0x2d43('0x5f')]):_0x2d43('0x83'));return respondWithRpcPromise(_0x2d43('0x84'),_0x2d43('0x85'),_0xf531d2);}return null;})[_0x2d43('0x23')](function(_0x548061){var _0x78a69f=_0x2d43('0x71')+_0x548061[_0x2d43('0x2b')][_0x2d43('0x86')];return db[_0x2d43('0x72')][_0x2d43('0x46')](_0x78a69f,{'type':db[_0x2d43('0x73')][_0x2d43('0x74')]['SELECT'],'raw':!![]})[_0x2d43('0x23')](function(_0x5027d8){return _0x5027d8;});})[_0x2d43('0x23')](function(_0x3af216){if(_0x3af216){_0xf531d2[_0x2d43('0x2b')][_0x2d43('0x75')]=_0x3af216[0x0];if(!_0x22af22[_0x2d43('0x5f')][_0x2d43('0x66')])return;return db[_0x2d43('0x76')][_0x2d43('0x5d')]({'where':{'id':_0x22af22[_0x2d43('0x5f')]['UserId'],'role':_0x2d43('0x68')},'attributes':['id','name','fullname',_0x2d43('0x78'),'internal'],'raw':!![]});}return null;})[_0x2d43('0x23')](function(_0x2e97c4){if(!_0x2e97c4)return null;_0xf531d2['message'][_0x2d43('0x68')]=_0x2e97c4;return _0xf531d2;})[_0x2d43('0x23')](function(_0x46d5e9){if(_0x46d5e9){_0x46d5e9[_0x2d43('0x2b')][_0x2d43('0x7b')]=util[_0x2d43('0x64')]('SIP/%s',_0x22af22[_0x2d43('0x67')][_0x2d43('0x3d')]);_0x46d5e9[_0x2d43('0x2b')]['channel']=_0xf531d2[_0x2d43('0x7d')];_0x46d5e9[_0x2d43('0x2b')][_0x2d43('0x87')]=_0xf531d2[_0x2d43('0x7d')];_0x46d5e9[_0x2d43('0x2b')]['event']=_0x2d43('0x38');respondWithRpcPromise(_0x2d43('0x7f'),_0x2d43('0x7f'),{'event':_0x2d43('0x88'),'message':_[_0x2d43('0x53')](_0xf531d2[_0x2d43('0x2b')],JSON['parse'](_0xf531d2[_0x2d43('0x6e')][_0x2d43('0x82')]))},client9002);return _0xf531d2;}return null;})[_0x2d43('0x23')](respondWithResult(_0x598545,null))[_0x2d43('0x59')](handleError(_0x598545,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(_0x2beb70,_0x264e7a){var _0x4975b9=function(_0x3dbce7){while(--_0x3dbce7){_0x2beb70['push'](_0x2beb70['shift']());}};_0x4975b9(++_0x264e7a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0xa9e0[_0x3b5250];return _0xc844a1;};'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 6177939..2cb7f71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91fc=['save','update','emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatMessage'];(function(_0x2236c1,_0x1aa68e){var _0x4d8284=function(_0xf64989){while(--_0xf64989){_0x2236c1['push'](_0x2236c1['shift']());}};_0x4d8284(++_0x1aa68e);}(_0x91fc,0x12f));var _0xc91f=function(_0x263793,_0x1afda4){_0x263793=_0x263793-0x0;var _0x205c2f=_0x91fc[_0x263793];return _0x205c2f;};'use strict';var EventEmitter=require(_0xc91f('0x0'));var ChatMessage=require(_0xc91f('0x1'))['db'][_0xc91f('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xc91f('0x3'),'afterUpdate':_0xc91f('0x4'),'afterDestroy':'remove'};function emitEvent(_0xa4d8ad){return function(_0x43d6a5,_0x5c8a74,_0x2c7c38){ChatMessageEvents[_0xc91f('0x5')](_0xa4d8ad+':'+_0x43d6a5['id'],_0x43d6a5);ChatMessageEvents['emit'](_0xa4d8ad,_0x43d6a5);_0x2c7c38(null);};}for(var e in events){if(events[_0xc91f('0x6')](e)){var event=events[e];ChatMessage[_0xc91f('0x7')](e,emitEvent(event));}}module[_0xc91f('0x8')]=ChatMessageEvents;
\ No newline at end of file
+var _0xe2a6=['emit','hook','exports','events','../../mysqldb','ChatMessage','save','update','remove'];(function(_0x251421,_0x34bf49){var _0xe9bbff=function(_0x522759){while(--_0x522759){_0x251421['push'](_0x251421['shift']());}};_0xe9bbff(++_0x34bf49);}(_0xe2a6,0x1d7));var _0x6e2a=function(_0x512f81,_0x4a7986){_0x512f81=_0x512f81-0x0;var _0xa15099=_0xe2a6[_0x512f81];return _0xa15099;};'use strict';var EventEmitter=require(_0x6e2a('0x0'));var ChatMessage=require(_0x6e2a('0x1'))['db'][_0x6e2a('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6e2a('0x3'),'afterUpdate':_0x6e2a('0x4'),'afterDestroy':_0x6e2a('0x5')};function emitEvent(_0x2a138e){return function(_0x3115c7,_0x371275,_0x3aab8d){ChatMessageEvents['emit'](_0x2a138e+':'+_0x3115c7['id'],_0x3115c7);ChatMessageEvents[_0x6e2a('0x6')](_0x2a138e,_0x3115c7);_0x3aab8d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatMessage[_0x6e2a('0x7')](e,emitEvent(event));}}module[_0x6e2a('0x8')]=ChatMessageEvents;
\ No newline at end of file
index 357a1c2..f701a37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d0f=['direction','toLowerCase','out','secret','isNil','UserId','ChatInteraction','findOne','ChatInteractionId','then','createdAt','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','moment','request-promise','path','../../config/environment','./chatMessage.attributes','exports','define','chat_messages','fti_chat_messages','body','models','get'];(function(_0x274394,_0x6fd912){var _0x2a2773=function(_0x2ab84c){while(--_0x2ab84c){_0x274394['push'](_0x274394['shift']());}};_0x2a2773(++_0x6fd912);}(_0x5d0f,0x126));var _0xf5d0=function(_0x352e09,_0x37a7da){_0x352e09=_0x352e09-0x0;var _0x1b7094=_0x5d0f[_0x352e09];return _0x1b7094;};'use strict';var _=require(_0xf5d0('0x0'));var util=require(_0xf5d0('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xf5d0('0x2'));var BPromise=require('bluebird');var rp=require(_0xf5d0('0x3'));var fs=require('fs');var path=require(_0xf5d0('0x4'));var rimraf=require('rimraf');var config=require(_0xf5d0('0x5'));var attributes=require(_0xf5d0('0x6'));module[_0xf5d0('0x7')]=function(_0x1c9b59,_0x1cf225){return _0x1c9b59[_0xf5d0('0x8')]('ChatMessage',attributes,{'tableName':_0xf5d0('0x9'),'paranoid':![],'indexes':[{'name':_0xf5d0('0xa'),'fields':[_0xf5d0('0xb')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5eb171,_0x5c40e6,_0x34d78c){var _0x52617=_0x1c9b59[_0xf5d0('0xc')];var _0x27730e=_0x5eb171[_0xf5d0('0xd')]({'plain':!![]});if(_0x27730e[_0xf5d0('0xe')][_0xf5d0('0xf')]()==='in'||_0x27730e[_0xf5d0('0xe')]['toLowerCase']()===_0xf5d0('0x10')&&!_0x27730e[_0xf5d0('0x11')]&&!_[_0xf5d0('0x12')](_0x27730e[_0xf5d0('0x13')])){_0x52617[_0xf5d0('0x14')][_0xf5d0('0x15')]({'where':{'id':_0x27730e[_0xf5d0('0x16')]}})[_0xf5d0('0x17')](function(_0x3fdc00){if(_0x3fdc00){_0x3fdc00['update']({'lastMsgAt':_0x27730e[_0xf5d0('0x18')],'lastMsgDirection':_0x27730e[_0xf5d0('0xe')][_0xf5d0('0xf')]()});}})['catch'](function(_0x6fa4a5){console[_0xf5d0('0x19')](_0x6fa4a5);});}_0x34d78c();}},'charset':_0xf5d0('0x1a'),'collate':_0xf5d0('0x1b')});};
\ No newline at end of file
+var _0xf37f=['exports','ChatMessage','chat_messages','fti_chat_messages','get','direction','toLowerCase','out','secret','UserId','ChatInteraction','findOne','then','update','catch','error','utf8mb4','utf8mb4_unicode_ci','util','api','moment','request-promise','rimraf','../../config/environment'];(function(_0x2e4e19,_0x493b50){var _0x9ba20b=function(_0x2f6456){while(--_0x2f6456){_0x2e4e19['push'](_0x2e4e19['shift']());}};_0x9ba20b(++_0x493b50);}(_0xf37f,0x11a));var _0xff37=function(_0x5134b8,_0x37e616){_0x5134b8=_0x5134b8-0x0;var _0xc07056=_0xf37f[_0x5134b8];return _0xc07056;};'use strict';var _=require('lodash');var util=require(_0xff37('0x0'));var logger=require('../../config/logger')(_0xff37('0x1'));var moment=require(_0xff37('0x2'));var BPromise=require('bluebird');var rp=require(_0xff37('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xff37('0x4'));var config=require(_0xff37('0x5'));var attributes=require('./chatMessage.attributes');module[_0xff37('0x6')]=function(_0x414b47,_0x10ed1d){return _0x414b47['define'](_0xff37('0x7'),attributes,{'tableName':_0xff37('0x8'),'paranoid':![],'indexes':[{'name':_0xff37('0x9'),'fields':['body'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x13a209,_0x317937,_0x115deb){var _0x2ee7a8=_0x414b47['models'];var _0x1ed7a9=_0x13a209[_0xff37('0xa')]({'plain':!![]});if(_0x1ed7a9[_0xff37('0xb')][_0xff37('0xc')]()==='in'||_0x1ed7a9['direction'][_0xff37('0xc')]()===_0xff37('0xd')&&!_0x1ed7a9[_0xff37('0xe')]&&!_['isNil'](_0x1ed7a9[_0xff37('0xf')])){_0x2ee7a8[_0xff37('0x10')][_0xff37('0x11')]({'where':{'id':_0x1ed7a9['ChatInteractionId']}})[_0xff37('0x12')](function(_0x2777b8){if(_0x2777b8){_0x2777b8[_0xff37('0x13')]({'lastMsgAt':_0x1ed7a9['createdAt'],'lastMsgDirection':_0x1ed7a9[_0xff37('0xb')][_0xff37('0xc')]()});}})[_0xff37('0x14')](function(_0x16641c){console[_0xff37('0x15')](_0x16641c);});}_0x115deb();}},'charset':_0xff37('0x16'),'collate':_0xff37('0x17')});};
\ No newline at end of file
index 21f1490..74b46fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3741=['ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateChatMessage','create','body','options','raw','lodash','util','moment','bluebird','randomstring'];(function(_0x343612,_0x49f812){var _0xb90f74=function(_0x8cc7b4){while(--_0x8cc7b4){_0x343612['push'](_0x343612['shift']());}};_0xb90f74(++_0x49f812);}(_0x3741,0x17c));var _0x1374=function(_0x10c16d,_0x2b3e14){_0x10c16d=_0x10c16d-0x0;var _0x5896f4=_0x3741[_0x10c16d];return _0x5896f4;};'use strict';var _=require(_0x1374('0x0'));var util=require(_0x1374('0x1'));var moment=require(_0x1374('0x2'));var BPromise=require(_0x1374('0x3'));var rs=require(_0x1374('0x4'));var fs=require('fs');var Redis=require(_0x1374('0x5'));var db=require(_0x1374('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x1374('0x7'))('rpc');var config=require(_0x1374('0x8'));var jayson=require(_0x1374('0x9'));var client=jayson[_0x1374('0xa')][_0x1374('0xb')]({'port':0x232a});config[_0x1374('0xc')]=_[_0x1374('0xd')](config[_0x1374('0xc')],{'host':_0x1374('0xe'),'port':0x18eb});var socket=require(_0x1374('0xf'))(new Redis(config[_0x1374('0xc')]));require(_0x1374('0x10'))['register'](socket);function respondWithRpcPromise(_0x47dfcc,_0x317fb5,_0x27ec85){return new BPromise(function(_0x39e8b9,_0x4a7b81){return client[_0x1374('0x11')](_0x47dfcc,_0x27ec85)[_0x1374('0x12')](function(_0x1616c3){logger[_0x1374('0x13')](_0x1374('0x14'),_0x317fb5,_0x1374('0x15'));logger[_0x1374('0x16')](_0x1374('0x17'),_0x317fb5,_0x1374('0x15'),JSON[_0x1374('0x18')](_0x1616c3));if(_0x1616c3[_0x1374('0x19')]){if(_0x1616c3[_0x1374('0x19')][_0x1374('0x1a')]===0x1f4){logger[_0x1374('0x19')](_0x1374('0x14'),_0x317fb5,_0x1616c3[_0x1374('0x19')][_0x1374('0x1b')]);return _0x4a7b81(_0x1616c3[_0x1374('0x19')][_0x1374('0x1b')]);}logger[_0x1374('0x19')]('ChatMessage,\x20%s,\x20%s',_0x317fb5,_0x1616c3['error'][_0x1374('0x1b')]);return _0x39e8b9(_0x1616c3[_0x1374('0x19')]['message']);}else{logger['info'](_0x1374('0x14'),_0x317fb5,_0x1374('0x15'));_0x39e8b9(_0x1616c3[_0x1374('0x1c')][_0x1374('0x1b')]);}})[_0x1374('0x1d')](function(_0x3416fa){logger[_0x1374('0x19')](_0x1374('0x14'),_0x317fb5,_0x3416fa);_0x4a7b81(_0x3416fa);});});}exports[_0x1374('0x1e')]=function(_0x162990){var _0x2e6417=this;return new Promise(function(_0x184358,_0x599cbf){return db['ChatMessage'][_0x1374('0x1f')](_0x162990[_0x1374('0x20')],{'raw':_0x162990[_0x1374('0x21')]?_0x162990[_0x1374('0x21')][_0x1374('0x22')]===undefined?!![]:![]:!![]})[_0x1374('0x12')](function(_0x35ae7d){logger[_0x1374('0x13')](_0x1374('0x1e'),_0x162990);logger[_0x1374('0x16')](_0x1374('0x1e'),_0x162990,JSON[_0x1374('0x18')](_0x35ae7d));_0x184358(_0x35ae7d);})[_0x1374('0x1d')](function(_0x2e122b){logger[_0x1374('0x19')]('CreateChatMessage',_0x2e122b[_0x1374('0x1b')],_0x162990);_0x599cbf(_0x2e6417['error'](0x1f4,_0x2e122b['message']));});});};
\ No newline at end of file
+var _0x123b=['message','result','CreateChatMessage','create','options','raw','debug','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','./chatMessage.socket','register','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x4d1965,_0x43152e){var _0xdcfade=function(_0x3d3b8a){while(--_0x3d3b8a){_0x4d1965['push'](_0x4d1965['shift']());}};_0xdcfade(++_0x43152e);}(_0x123b,0xef));var _0xb123=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x123b[_0x4e676e];return _0x336a3c;};'use strict';var _=require(_0xb123('0x0'));var util=require(_0xb123('0x1'));var moment=require(_0xb123('0x2'));var BPromise=require('bluebird');var rs=require(_0xb123('0x3'));var fs=require('fs');var Redis=require(_0xb123('0x4'));var db=require(_0xb123('0x5'))['db'];var utils=require(_0xb123('0x6'));var logger=require(_0xb123('0x7'))(_0xb123('0x8'));var config=require(_0xb123('0x9'));var jayson=require(_0xb123('0xa'));var client=jayson[_0xb123('0xb')][_0xb123('0xc')]({'port':0x232a});config['redis']=_[_0xb123('0xd')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb123('0xe')]));require(_0xb123('0xf'))[_0xb123('0x10')](socket);function respondWithRpcPromise(_0x14fc31,_0x2f4629,_0x3b594a){return new BPromise(function(_0x4f7d40,_0x3ad095){return client[_0xb123('0x11')](_0x14fc31,_0x3b594a)[_0xb123('0x12')](function(_0x1a09c8){logger[_0xb123('0x13')](_0xb123('0x14'),_0x2f4629,_0xb123('0x15'));logger['debug']('ChatMessage,\x20%s,\x20%s,\x20%s',_0x2f4629,_0xb123('0x15'),JSON[_0xb123('0x16')](_0x1a09c8));if(_0x1a09c8[_0xb123('0x17')]){if(_0x1a09c8['error'][_0xb123('0x18')]===0x1f4){logger[_0xb123('0x17')](_0xb123('0x14'),_0x2f4629,_0x1a09c8[_0xb123('0x17')]['message']);return _0x3ad095(_0x1a09c8[_0xb123('0x17')]['message']);}logger['error'](_0xb123('0x14'),_0x2f4629,_0x1a09c8[_0xb123('0x17')][_0xb123('0x19')]);return _0x4f7d40(_0x1a09c8[_0xb123('0x17')][_0xb123('0x19')]);}else{logger['info']('ChatMessage,\x20%s,\x20%s',_0x2f4629,'request\x20sent');_0x4f7d40(_0x1a09c8[_0xb123('0x1a')][_0xb123('0x19')]);}})['catch'](function(_0x43871d){logger[_0xb123('0x17')](_0xb123('0x14'),_0x2f4629,_0x43871d);_0x3ad095(_0x43871d);});});}exports[_0xb123('0x1b')]=function(_0x494a0f){var _0x4daea3=this;return new Promise(function(_0x50c642,_0x280529){return db['ChatMessage'][_0xb123('0x1c')](_0x494a0f['body'],{'raw':_0x494a0f[_0xb123('0x1d')]?_0x494a0f[_0xb123('0x1d')][_0xb123('0x1e')]===undefined?!![]:![]:!![]})[_0xb123('0x12')](function(_0x347846){logger['info'](_0xb123('0x1b'),_0x494a0f);logger[_0xb123('0x1f')](_0xb123('0x1b'),_0x494a0f,JSON[_0xb123('0x16')](_0x347846));_0x50c642(_0x347846);})[_0xb123('0x20')](function(_0x3b469a){logger[_0xb123('0x17')](_0xb123('0x1b'),_0x3b469a[_0xb123('0x19')],_0x494a0f);_0x280529(_0x4daea3[_0xb123('0x17')](0x1f4,_0x3b469a[_0xb123('0x19')]));});});};
\ No newline at end of file
index b96a6b3..22214e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b83=['remove','removeListener','length','save'];(function(_0x4ad762,_0x3e7464){var _0x56f931=function(_0x1a6c40){while(--_0x1a6c40){_0x4ad762['push'](_0x4ad762['shift']());}};_0x56f931(++_0x3e7464);}(_0x2b83,0x1d3));var _0x32b8=function(_0x269800,_0x397af7){_0x269800=_0x269800-0x0;var _0x21f7ed=_0x2b83[_0x269800];return _0x21f7ed;};'use strict';var ChatMessageEvents=require('./chatMessage.events');var events=[_0x32b8('0x0'),_0x32b8('0x1'),'update'];function createListener(_0x3fcbdc,_0x287f16){return function(_0x304105){_0x287f16['emit'](_0x3fcbdc,_0x304105);};}function removeListener(_0x51d3b4,_0xdd712a){return function(){ChatMessageEvents[_0x32b8('0x2')](_0x51d3b4,_0xdd712a);};}exports['register']=function(_0x6bbc3d){for(var _0x55abd0=0x0,_0x18150c=events[_0x32b8('0x3')];_0x55abd0<_0x18150c;_0x55abd0++){var _0x36bde3=events[_0x55abd0];var _0x10a967=createListener('chatMessage:'+_0x36bde3,_0x6bbc3d);ChatMessageEvents['on'](_0x36bde3,_0x10a967);}};
\ No newline at end of file
+var _0x24ca=['./chatMessage.events','update','emit','removeListener','register','length','chatMessage:'];(function(_0x34155d,_0x5895cd){var _0x982507=function(_0x1bad95){while(--_0x1bad95){_0x34155d['push'](_0x34155d['shift']());}};_0x982507(++_0x5895cd);}(_0x24ca,0x8c));var _0xa24c=function(_0x3e182f,_0x380ec7){_0x3e182f=_0x3e182f-0x0;var _0x23edc9=_0x24ca[_0x3e182f];return _0x23edc9;};'use strict';var ChatMessageEvents=require(_0xa24c('0x0'));var events=['save','remove',_0xa24c('0x1')];function createListener(_0x4e90b0,_0x155c49){return function(_0x1efd39){_0x155c49[_0xa24c('0x2')](_0x4e90b0,_0x1efd39);};}function removeListener(_0x49f276,_0x2fbcfa){return function(){ChatMessageEvents[_0xa24c('0x3')](_0x49f276,_0x2fbcfa);};}exports[_0xa24c('0x4')]=function(_0x5a37ae){for(var _0x5377ed=0x0,_0x52147a=events[_0xa24c('0x5')];_0x5377ed<_0x52147a;_0x5377ed++){var _0x3c10d9=events[_0x5377ed];var _0x1218ea=createListener(_0xa24c('0x6')+_0x3c10d9,_0x5a37ae);ChatMessageEvents['on'](_0x3c10d9,_0x1218ea);}};
\ No newline at end of file
index 8b32fc4..d93b230 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdee4=['../../components/interaction/service','../../config/environment','./chatMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','tracked','chat','create','put','/:id/accept','accept','/:id/reject','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x534af9,_0x1fa0a8){var _0x1a79dd=function(_0x257495){while(--_0x257495){_0x534af9['push'](_0x534af9['shift']());}};_0x1a79dd(++_0x1fa0a8);}(_0xdee4,0x69));var _0x4dee=function(_0x24e71b,_0x2f73f5){_0x24e71b=_0x24e71b-0x0;var _0x303be8=_0xdee4[_0x24e71b];return _0x303be8;};'use strict';var multer=require(_0x4dee('0x0'));var util=require(_0x4dee('0x1'));var path=require('path');var timeout=require(_0x4dee('0x2'));var express=require(_0x4dee('0x3'));var router=express[_0x4dee('0x4')]();var fs_extra=require(_0x4dee('0x5'));var auth=require(_0x4dee('0x6'));var interaction=require(_0x4dee('0x7'));var config=require(_0x4dee('0x8'));var controller=require(_0x4dee('0x9'));router[_0x4dee('0xa')]('/',auth[_0x4dee('0xb')](),controller[_0x4dee('0xc')]);router[_0x4dee('0xa')](_0x4dee('0xd'),auth[_0x4dee('0xb')](),controller[_0x4dee('0xe')]);router[_0x4dee('0xa')](_0x4dee('0xf'),auth[_0x4dee('0xb')](),controller[_0x4dee('0x10')]);router[_0x4dee('0x11')]('/',auth[_0x4dee('0xb')](),interaction[_0x4dee('0x12')](_0x4dee('0x13'),'chatmessage:create'),controller[_0x4dee('0x14')]);router[_0x4dee('0x15')]('/:id',controller['update']);router[_0x4dee('0x15')](_0x4dee('0x16'),auth['isAuthenticated'](),controller[_0x4dee('0x17')]);router['put'](_0x4dee('0x18'),auth[_0x4dee('0xb')](),controller['reject']);router[_0x4dee('0x19')](_0x4dee('0xf'),auth[_0x4dee('0xb')](),controller[_0x4dee('0x1a')]);module[_0x4dee('0x1b')]=router;
\ No newline at end of file
+var _0x01df=['/:id','tracked','chat','chatmessage:create','create','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatMessage.controller','get','isAuthenticated','/describe'];(function(_0x187ee1,_0x486fdd){var _0x174752=function(_0xd96a00){while(--_0xd96a00){_0x187ee1['push'](_0x187ee1['shift']());}};_0x174752(++_0x486fdd);}(_0x01df,0x16c));var _0xf01d=function(_0xeb56e0,_0x565544){_0xeb56e0=_0xeb56e0-0x0;var _0x16642f=_0x01df[_0xeb56e0];return _0x16642f;};'use strict';var multer=require('multer');var util=require(_0xf01d('0x0'));var path=require(_0xf01d('0x1'));var timeout=require(_0xf01d('0x2'));var express=require('express');var router=express[_0xf01d('0x3')]();var fs_extra=require(_0xf01d('0x4'));var auth=require(_0xf01d('0x5'));var interaction=require(_0xf01d('0x6'));var config=require('../../config/environment');var controller=require(_0xf01d('0x7'));router[_0xf01d('0x8')]('/',auth[_0xf01d('0x9')](),controller['index']);router[_0xf01d('0x8')](_0xf01d('0xa'),auth[_0xf01d('0x9')](),controller['describe']);router[_0xf01d('0x8')](_0xf01d('0xb'),auth[_0xf01d('0x9')](),controller['show']);router['post']('/',auth[_0xf01d('0x9')](),interaction[_0xf01d('0xc')](_0xf01d('0xd'),_0xf01d('0xe')),controller[_0xf01d('0xf')]);router[_0xf01d('0x10')](_0xf01d('0xb'),controller[_0xf01d('0x11')]);router['put'](_0xf01d('0x12'),auth['isAuthenticated'](),controller[_0xf01d('0x13')]);router[_0xf01d('0x10')](_0xf01d('0x14'),auth[_0xf01d('0x9')](),controller[_0xf01d('0x15')]);router[_0xf01d('0x16')](_0xf01d('0xb'),auth[_0xf01d('0x9')](),controller[_0xf01d('0x17')]);module[_0xf01d('0x18')]=router;
\ No newline at end of file
index c001b2f..96be6f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7886=['sequelize','exports','TEXT','medium'];(function(_0x369e3d,_0x1bb259){var _0xf9567f=function(_0x40fee0){while(--_0x40fee0){_0x369e3d['push'](_0x369e3d['shift']());}};_0xf9567f(++_0x1bb259);}(_0x7886,0xc4));var _0x6788=function(_0xf11596,_0x18bfb1){_0xf11596=_0xf11596-0x0;var _0x3459cf=_0x7886[_0xf11596];return _0x3459cf;};'use strict';var Sequelize=require(_0x6788('0x0'));module[_0x6788('0x1')]={'body':{'type':Sequelize[_0x6788('0x2')](_0x6788('0x3')),'allowNull':![]}};
\ No newline at end of file
+var _0x6c00=['exports','TEXT','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6c00,0x1a9));var _0x06c0=function(_0x2a5b3b,_0x4ebe31){_0x2a5b3b=_0x2a5b3b-0x0;var _0xae665a=_0x6c00[_0x2a5b3b];return _0xae665a;};'use strict';var Sequelize=require(_0x06c0('0x0'));module[_0x06c0('0x1')]={'body':{'type':Sequelize[_0x06c0('0x2')]('medium'),'allowNull':![]}};
\ No newline at end of file
index 7b639fe..39903ce 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(_0x491a7f,_0x28bb80){var _0x3d8f44=function(_0xdaa716){while(--_0xdaa716){_0x491a7f['push'](_0x491a7f['shift']());}};_0x3d8f44(++_0x28bb80);}(_0x7a54,0x106));var _0x47a5=function(_0x5966a9,_0x5723bf){_0x5966a9=_0x5966a9-0x0;var _0x1872c8=_0x7a54[_0x5966a9];return _0x1872c8;};'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 _0x9957=['sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','index','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','ChatOfflineMessage','findAll','rows','show','rawAttributes','includeAll','include','find','create','catch','body','params','Attachment','forEach','join','root','server','files','attachments','basename','existsSync','remove','describe','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'];(function(_0xddf621,_0x4ac1ea){var _0x212964=function(_0x2c03e7){while(--_0x2c03e7){_0xddf621['push'](_0xddf621['shift']());}};_0x212964(++_0x4ac1ea);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){var _0x514445={},_0x456a28={},_0x3250e0={'count':0x0,'rows':[]};var _0x4253e5=_['map'](db['ChatOfflineMessage']['rawAttributes'],function(_0x3573be){return{'name':_0x3573be[_0x7995('0x2c')],'type':_0x3573be[_0x7995('0x2d')][_0x7995('0x2e')]};});_0x456a28[_0x7995('0x2f')]=_[_0x7995('0x30')](_0x4253e5,'name');_0x456a28['query']=_[_0x7995('0x31')](_0x4b6f99['query']);_0x456a28[_0x7995('0x32')]=_[_0x7995('0x33')](_0x456a28[_0x7995('0x2f')],_0x456a28[_0x7995('0x34')]);_0x514445[_0x7995('0x35')]=_['intersection'](_0x456a28[_0x7995('0x2f')],qs[_0x7995('0x36')](_0x4b6f99['query']['fields']));_0x514445['attributes']=_0x514445[_0x7995('0x35')][_0x7995('0x37')]?_0x514445['attributes']:_0x456a28[_0x7995('0x2f')];if(!_0x4b6f99['query'][_0x7995('0x38')](_0x7995('0x39'))){_0x514445[_0x7995('0x21')]=qs['limit'](_0x4b6f99['query'][_0x7995('0x21')]);_0x514445['offset']=qs['offset'](_0x4b6f99[_0x7995('0x34')][_0x7995('0x20')]);}_0x514445['order']=qs[_0x7995('0x3a')](_0x4b6f99[_0x7995('0x34')][_0x7995('0x3a')]);_0x514445[_0x7995('0x3b')]=qs[_0x7995('0x32')](_['pick'](_0x4b6f99[_0x7995('0x34')],_0x456a28[_0x7995('0x32')]),_0x4253e5);if(_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]){_0x514445['where']=_[_0x7995('0x3d')](_0x514445[_0x7995('0x3b')],{'$or':_[_0x7995('0x30')](_0x4253e5,function(_0xe5ea43){if(_0xe5ea43[_0x7995('0x2d')]!==_0x7995('0x3e')){var _0x5688a1={};_0x5688a1[_0xe5ea43[_0x7995('0x29')]]={'$like':'%'+_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]+'%'};return _0x5688a1;}})});}_0x514445=_[_0x7995('0x3d')]({},_0x514445,_0x4b6f99[_0x7995('0x3f')]);var _0x298fc2={'where':_0x514445[_0x7995('0x3b')]};return db[_0x7995('0x40')][_0x7995('0x1f')](_0x298fc2)[_0x7995('0x26')](function(_0x6fe77b){_0x3250e0[_0x7995('0x1f')]=_0x6fe77b;if(_0x4b6f99[_0x7995('0x34')]['includeAll']){_0x514445['include']=[{'all':!![]}];}return db[_0x7995('0x40')][_0x7995('0x41')](_0x514445);})['then'](function(_0x4b0855){_0x3250e0[_0x7995('0x42')]=_0x4b0855;return _0x3250e0;})['then'](respondWithFilteredResult(_0x9b2a15,_0x514445))['catch'](handleError(_0x9b2a15,null));};exports[_0x7995('0x43')]=function(_0x36e28b,_0x35c8ff){var _0x576b96={'raw':!![],'where':{'id':_0x36e28b['params']['id']}},_0x46ac4f={};_0x46ac4f[_0x7995('0x2f')]=_['keys'](db['ChatOfflineMessage'][_0x7995('0x44')]);_0x46ac4f[_0x7995('0x34')]=_[_0x7995('0x31')](_0x36e28b[_0x7995('0x34')]);_0x46ac4f['filters']=_[_0x7995('0x33')](_0x46ac4f[_0x7995('0x2f')],_0x46ac4f[_0x7995('0x34')]);_0x576b96[_0x7995('0x35')]=_['intersection'](_0x46ac4f['model'],qs[_0x7995('0x36')](_0x36e28b['query'][_0x7995('0x36')]));_0x576b96['attributes']=_0x576b96[_0x7995('0x35')]['length']?_0x576b96[_0x7995('0x35')]:_0x46ac4f[_0x7995('0x2f')];if(_0x36e28b['query'][_0x7995('0x45')]){_0x576b96[_0x7995('0x46')]=[{'all':!![]}];}_0x576b96=_[_0x7995('0x3d')]({},_0x576b96,_0x36e28b[_0x7995('0x3f')]);return db['ChatOfflineMessage'][_0x7995('0x47')](_0x576b96)[_0x7995('0x26')](handleEntityNotFound(_0x35c8ff,null))[_0x7995('0x26')](respondWithResult(_0x35c8ff,null))['catch'](handleError(_0x35c8ff,null));};exports[_0x7995('0x48')]=function(_0x44f516,_0x511567){return db[_0x7995('0x40')][_0x7995('0x48')](_0x44f516['body'],{})[_0x7995('0x26')](respondWithResult(_0x511567,0xc9))[_0x7995('0x49')](handleError(_0x511567,null));};exports['update']=function(_0x3d1dbb,_0x5843ba){if(_0x3d1dbb[_0x7995('0x4a')]['id']){delete _0x3d1dbb[_0x7995('0x4a')]['id'];}return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x3d1dbb[_0x7995('0x4b')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x5843ba,null))[_0x7995('0x26')](saveUpdates(_0x3d1dbb['body'],null))[_0x7995('0x26')](respondWithResult(_0x5843ba,null))[_0x7995('0x49')](handleError(_0x5843ba,null));};exports[_0x7995('0x27')]=function(_0x4ffc8a,_0x19da63){return db[_0x7995('0x4c')][_0x7995('0x41')]({'where':{'ChatOfflineMessageId':_0x4ffc8a['params']['id']},'raw':!![]})['then'](function(_0x5a592e){_0x5a592e[_0x7995('0x4d')](function(_0x1fd1ca){var _0x4cf5db=path[_0x7995('0x4e')](config[_0x7995('0x4f')],_0x7995('0x50'),_0x7995('0x51'),_0x7995('0x52'),'offline-chat',_0x1fd1ca[_0x7995('0x53')]);var _0x4ab09f=fs[_0x7995('0x54')](_0x4cf5db);if(_0x4ab09f)fs_extra[_0x7995('0x55')](_0x4cf5db);});})[_0x7995('0x26')](function(){return db['ChatOfflineMessage']['find']({'where':{'id':_0x4ffc8a['params']['id']},'individualHooks':!![]});})['then'](handleEntityNotFound(_0x19da63,null))[_0x7995('0x26')](removeEntity(_0x19da63,null))[_0x7995('0x49')](handleError(_0x19da63,null));};exports[_0x7995('0x56')]=function(_0x150261,_0x1d957e){return db[_0x7995('0x40')][_0x7995('0x56')]()[_0x7995('0x26')](respondWithResult(_0x1d957e,null))[_0x7995('0x49')](handleError(_0x1d957e,null));};
\ No newline at end of file
index 8f2cd2f..98ec120 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6a3=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./chatOfflineMessage.attributes','exports','define','chat_offline_messages','utf8mb4','utf8mb4_unicode_ci'];(function(_0x2b96ec,_0x3169cc){var _0x2964ac=function(_0x4b7794){while(--_0x4b7794){_0x2b96ec['push'](_0x2b96ec['shift']());}};_0x2964ac(++_0x3169cc);}(_0xd6a3,0x1b2));var _0x3d6a=function(_0x3ae505,_0x169761){_0x3ae505=_0x3ae505-0x0;var _0x7ec319=_0xd6a3[_0x3ae505];return _0x7ec319;};'use strict';var _=require(_0x3d6a('0x0'));var util=require('util');var logger=require(_0x3d6a('0x1'))(_0x3d6a('0x2'));var moment=require(_0x3d6a('0x3'));var BPromise=require(_0x3d6a('0x4'));var rp=require(_0x3d6a('0x5'));var fs=require('fs');var path=require(_0x3d6a('0x6'));var rimraf=require('rimraf');var config=require(_0x3d6a('0x7'));var attributes=require(_0x3d6a('0x8'));module[_0x3d6a('0x9')]=function(_0x3ba166,_0x17d5a3){return _0x3ba166[_0x3d6a('0xa')]('ChatOfflineMessage',attributes,{'tableName':_0x3d6a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3d6a('0xc'),'collate':_0x3d6a('0xd')});};
\ No newline at end of file
+var _0x48e5=['moment','bluebird','request-promise','path','rimraf','./chatOfflineMessage.attributes','exports','define','ChatOfflineMessage','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger'];(function(_0x493720,_0x2e7724){var _0x3cfc8e=function(_0x1ceb74){while(--_0x1ceb74){_0x493720['push'](_0x493720['shift']());}};_0x3cfc8e(++_0x2e7724);}(_0x48e5,0x15d));var _0x548e=function(_0x4e5552,_0x19ec4e){_0x4e5552=_0x4e5552-0x0;var _0x60a338=_0x48e5[_0x4e5552];return _0x60a338;};'use strict';var _=require('lodash');var util=require(_0x548e('0x0'));var logger=require(_0x548e('0x1'))('api');var moment=require(_0x548e('0x2'));var BPromise=require(_0x548e('0x3'));var rp=require(_0x548e('0x4'));var fs=require('fs');var path=require(_0x548e('0x5'));var rimraf=require(_0x548e('0x6'));var config=require('../../config/environment');var attributes=require(_0x548e('0x7'));module[_0x548e('0x8')]=function(_0x9c6055,_0x586519){return _0x9c6055[_0x548e('0x9')](_0x548e('0xa'),attributes,{'tableName':'chat_offline_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x548e('0xb'),'collate':_0x548e('0xc')});};
\ No newline at end of file
index 677e046..76fb02b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf03e=['message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','info','ChatOfflineMessage,\x20%s,\x20%s','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x2c8374,_0x5814ab){var _0x6c87d9=function(_0x175add){while(--_0x175add){_0x2c8374['push'](_0x2c8374['shift']());}};_0x6c87d9(++_0x5814ab);}(_0xf03e,0x114));var _0xef03=function(_0x4335b8,_0x42e161){_0x4335b8=_0x4335b8-0x0;var _0x3b9326=_0xf03e[_0x4335b8];return _0x3b9326;};'use strict';var _=require(_0xef03('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xef03('0x1'));var rs=require(_0xef03('0x2'));var fs=require('fs');var Redis=require(_0xef03('0x3'));var db=require(_0xef03('0x4'))['db'];var utils=require(_0xef03('0x5'));var logger=require('../../config/logger')(_0xef03('0x6'));var config=require('../../config/environment');var jayson=require(_0xef03('0x7'));var client=jayson[_0xef03('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x46b4ca,_0x3c8d45,_0xaa144d){return new BPromise(function(_0x998644,_0x40a9ba){return client[_0xef03('0x9')](_0x46b4ca,_0xaa144d)[_0xef03('0xa')](function(_0x16065a){logger[_0xef03('0xb')](_0xef03('0xc'),_0x3c8d45,'request\x20sent');logger[_0xef03('0xd')](_0xef03('0xe'),_0x3c8d45,_0xef03('0xf'),JSON[_0xef03('0x10')](_0x16065a));if(_0x16065a[_0xef03('0x11')]){if(_0x16065a['error']['code']===0x1f4){logger[_0xef03('0x11')](_0xef03('0xc'),_0x3c8d45,_0x16065a[_0xef03('0x11')][_0xef03('0x12')]);return _0x40a9ba(_0x16065a['error'][_0xef03('0x12')]);}logger[_0xef03('0x11')](_0xef03('0xc'),_0x3c8d45,_0x16065a[_0xef03('0x11')][_0xef03('0x12')]);return _0x998644(_0x16065a[_0xef03('0x11')][_0xef03('0x12')]);}else{logger[_0xef03('0xb')](_0xef03('0xc'),_0x3c8d45,_0xef03('0xf'));_0x998644(_0x16065a[_0xef03('0x13')][_0xef03('0x12')]);}})[_0xef03('0x14')](function(_0xa9bb92){logger[_0xef03('0x11')](_0xef03('0xc'),_0x3c8d45,_0xa9bb92);_0x40a9ba(_0xa9bb92);});});}
\ No newline at end of file
+var _0xb4a0=['code','ChatOfflineMessage,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','then','info','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x427885,_0x493711){var _0x3a6c06=function(_0x2336b1){while(--_0x2336b1){_0x427885['push'](_0x427885['shift']());}};_0x3a6c06(++_0x493711);}(_0xb4a0,0x1e8));var _0x0b4a=function(_0x50e066,_0x29a43a){_0x50e066=_0x50e066-0x0;var _0x3b31e3=_0xb4a0[_0x50e066];return _0x3b31e3;};'use strict';var _=require(_0x0b4a('0x0'));var util=require('util');var moment=require(_0x0b4a('0x1'));var BPromise=require(_0x0b4a('0x2'));var rs=require(_0x0b4a('0x3'));var fs=require('fs');var Redis=require(_0x0b4a('0x4'));var db=require(_0x0b4a('0x5'))['db'];var utils=require(_0x0b4a('0x6'));var logger=require(_0x0b4a('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x0b4a('0x8'));var client=jayson[_0x0b4a('0x9')][_0x0b4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1bd469,_0x59389c,_0x351dec){return new BPromise(function(_0x513c6c,_0x3225f6){return client['request'](_0x1bd469,_0x351dec)[_0x0b4a('0xb')](function(_0x324102){logger[_0x0b4a('0xc')]('ChatOfflineMessage,\x20%s,\x20%s',_0x59389c,_0x0b4a('0xd'));logger[_0x0b4a('0xe')](_0x0b4a('0xf'),_0x59389c,'request\x20sent',JSON[_0x0b4a('0x10')](_0x324102));if(_0x324102[_0x0b4a('0x11')]){if(_0x324102[_0x0b4a('0x11')][_0x0b4a('0x12')]===0x1f4){logger[_0x0b4a('0x11')](_0x0b4a('0x13'),_0x59389c,_0x324102[_0x0b4a('0x11')]['message']);return _0x3225f6(_0x324102['error'][_0x0b4a('0x14')]);}logger[_0x0b4a('0x11')](_0x0b4a('0x13'),_0x59389c,_0x324102['error'][_0x0b4a('0x14')]);return _0x513c6c(_0x324102[_0x0b4a('0x11')][_0x0b4a('0x14')]);}else{logger[_0x0b4a('0xc')]('ChatOfflineMessage,\x20%s,\x20%s',_0x59389c,_0x0b4a('0xd'));_0x513c6c(_0x324102[_0x0b4a('0x15')]['message']);}})[_0x0b4a('0x16')](function(_0x59d4b0){logger[_0x0b4a('0x11')](_0x0b4a('0x13'),_0x59389c,_0x59d4b0);_0x3225f6(_0x59d4b0);});});}
\ No newline at end of file
index a4858dc..d1543c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c21=['fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','post','create','delete','destroy','multer','util','express','Router'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x9c21,0x12e));var _0x19c2=function(_0x3e45d4,_0x10e70c){_0x3e45d4=_0x3e45d4-0x0;var _0x140f7f=_0x9c21[_0x3e45d4];return _0x140f7f;};'use strict';var multer=require(_0x19c2('0x0'));var util=require(_0x19c2('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x19c2('0x2'));var router=express[_0x19c2('0x3')]();var fs_extra=require(_0x19c2('0x4'));var auth=require(_0x19c2('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x19c2('0x6'));var controller=require('./chatOfflineMessage.controller');router[_0x19c2('0x7')]('/',auth[_0x19c2('0x8')](),controller[_0x19c2('0x9')]);router['get'](_0x19c2('0xa'),auth[_0x19c2('0x8')](),controller[_0x19c2('0xb')]);router['get'](_0x19c2('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x19c2('0xd')]('/',auth[_0x19c2('0x8')](),controller[_0x19c2('0xe')]);router['put']('/:id',auth[_0x19c2('0x8')](),controller['update']);router[_0x19c2('0xf')]('/:id',auth[_0x19c2('0x8')](),controller[_0x19c2('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xae90=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','index','get','/describe','isAuthenticated','describe','/:id','create','update','destroy','exports','multer','util','connect-timeout','express'];(function(_0x43424a,_0x5b7fb7){var _0x5cd9f2=function(_0x3ca07a){while(--_0x3ca07a){_0x43424a['push'](_0x43424a['shift']());}};_0x5cd9f2(++_0x5b7fb7);}(_0xae90,0x1c8));var _0x0ae9=function(_0x4d1c4a,_0x663403){_0x4d1c4a=_0x4d1c4a-0x0;var _0xf7bc3c=_0xae90[_0x4d1c4a];return _0xf7bc3c;};'use strict';var multer=require(_0x0ae9('0x0'));var util=require(_0x0ae9('0x1'));var path=require('path');var timeout=require(_0x0ae9('0x2'));var express=require(_0x0ae9('0x3'));var router=express[_0x0ae9('0x4')]();var fs_extra=require(_0x0ae9('0x5'));var auth=require(_0x0ae9('0x6'));var interaction=require(_0x0ae9('0x7'));var config=require(_0x0ae9('0x8'));var controller=require(_0x0ae9('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x0ae9('0xa')]);router[_0x0ae9('0xb')](_0x0ae9('0xc'),auth[_0x0ae9('0xd')](),controller[_0x0ae9('0xe')]);router[_0x0ae9('0xb')](_0x0ae9('0xf'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x0ae9('0xd')](),controller[_0x0ae9('0x10')]);router['put'](_0x0ae9('0xf'),auth[_0x0ae9('0xd')](),controller[_0x0ae9('0x11')]);router['delete'](_0x0ae9('0xf'),auth[_0x0ae9('0xd')](),controller[_0x0ae9('0x12')]);module[_0x0ae9('0x13')]=router;
\ No newline at end of file
index 508c39f..4e77896 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3c7=['timeout','sequelize','exports','STRING','ENUM','mouseOver'];(function(_0x45fcf6,_0x540aae){var _0x341062=function(_0x9b9f67){while(--_0x9b9f67){_0x45fcf6['push'](_0x45fcf6['shift']());}};_0x341062(++_0x540aae);}(_0xd3c7,0x109));var _0x7d3c=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xd3c7[_0x17d9e3];return _0x14192d;};'use strict';var Sequelize=require(_0x7d3c('0x0'));module[_0x7d3c('0x1')]={'name':{'type':Sequelize[_0x7d3c('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x7d3c('0x3')](_0x7d3c('0x4'),_0x7d3c('0x5')),'defaultValue':'mouseOver'},'selector':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xf2e4=['mouseOver','INTEGER','sequelize','exports','STRING','ENUM'];(function(_0x1789f3,_0x4672f3){var _0x59f242=function(_0x3e263d){while(--_0x3e263d){_0x1789f3['push'](_0x1789f3['shift']());}};_0x59f242(++_0x4672f3);}(_0xf2e4,0xc8));var _0x4f2e=function(_0x358968,_0x523037){_0x358968=_0x358968-0x0;var _0x4f58d2=_0xf2e4[_0x358968];return _0x4f58d2;};'use strict';var Sequelize=require(_0x4f2e('0x0'));module[_0x4f2e('0x1')]={'name':{'type':Sequelize[_0x4f2e('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x4f2e('0x3')](_0x4f2e('0x4'),'timeout'),'defaultValue':_0x4f2e('0x4')},'selector':{'type':Sequelize[_0x4f2e('0x2')]},'timeout':{'type':Sequelize[_0x4f2e('0x5')]}};
\ No newline at end of file
index c0be037..c26daf3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa19=['filters','intersection','fields','attributes','length','includeAll','merge','options','find','catch','create','body','ChatProactiveAction','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox','to-csv','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../mysqldb','sendStatus','status','limit','undefined','count','offset','json','apply','reject','save','update','destroy','then','name','send','show','params','model','rawAttributes','query','keys'];(function(_0x1df2f6,_0x2c4501){var _0x43e251=function(_0x1ae746){while(--_0x1ae746){_0x1df2f6['push'](_0x1df2f6['shift']());}};_0x43e251(++_0x2c4501);}(_0xaa19,0x79));var _0x9aa1=function(_0x10d400,_0x5b1317){_0x10d400=_0x10d400-0x0;var _0x417710=_0xaa19[_0x10d400];return _0x417710;};'use strict';var emlformat=require(_0x9aa1('0x0'));var rimraf=require(_0x9aa1('0x1'));var zipdir=require(_0x9aa1('0x2'));var jsonpatch=require(_0x9aa1('0x3'));var rp=require('request-promise');var moment=require(_0x9aa1('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9aa1('0x5'));var util=require('util');var path=require(_0x9aa1('0x6'));var sox=require(_0x9aa1('0x7'));var csv=require(_0x9aa1('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9aa1('0x9'));var _=require(_0x9aa1('0xa'));var squel=require(_0x9aa1('0xb'));var crypto=require('crypto');var jsforce=require(_0x9aa1('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x9aa1('0xd'));var Papa=require(_0x9aa1('0xe'));var Redis=require(_0x9aa1('0xf'));var authService=require(_0x9aa1('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9aa1('0x11'));var logger=require('../../config/logger')(_0x9aa1('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9aa1('0x13'))['db'];function respondWithStatusCode(_0x309869,_0x4bba73){_0x4bba73=_0x4bba73||0xcc;return function(_0x38dd8e){if(_0x38dd8e){return _0x309869[_0x9aa1('0x14')](_0x4bba73);}return _0x309869[_0x9aa1('0x15')](_0x4bba73)['end']();};}function respondWithResult(_0x4b6733,_0x35d6f2){_0x35d6f2=_0x35d6f2||0xc8;return function(_0x483611){if(_0x483611){return _0x4b6733[_0x9aa1('0x15')](_0x35d6f2)['json'](_0x483611);}};}function respondWithFilteredResult(_0x1abab9,_0x137a79){return function(_0x1ade95){if(_0x1ade95){var _0x345e78=typeof _0x137a79['offset']==='undefined'&&typeof _0x137a79[_0x9aa1('0x16')]===_0x9aa1('0x17');var _0x30b187=_0x1ade95[_0x9aa1('0x18')];var _0x2ea7e9=_0x345e78?0x0:_0x137a79[_0x9aa1('0x19')];var _0xd19711=_0x345e78?_0x1ade95[_0x9aa1('0x18')]:_0x137a79[_0x9aa1('0x19')]+_0x137a79[_0x9aa1('0x16')];var _0x1eb400;if(_0xd19711>=_0x30b187){_0xd19711=_0x30b187;_0x1eb400=0xc8;}else{_0x1eb400=0xce;}_0x1abab9['status'](_0x1eb400);return _0x1abab9['set']('Content-Range',_0x2ea7e9+'-'+_0xd19711+'/'+_0x30b187)[_0x9aa1('0x1a')](_0x1ade95);}return null;};}function patchUpdates(_0xd659f2){return function(_0x4bd4d7){try{jsonpatch[_0x9aa1('0x1b')](_0x4bd4d7,_0xd659f2,!![]);}catch(_0x42c356){return BPromise[_0x9aa1('0x1c')](_0x42c356);}return _0x4bd4d7[_0x9aa1('0x1d')]();};}function saveUpdates(_0x5c25bf,_0x4a2e6f){return function(_0x5e897c){if(_0x5e897c){return _0x5e897c[_0x9aa1('0x1e')](_0x5c25bf)['then'](function(_0x3688a5){return _0x3688a5;});}return null;};}function removeEntity(_0x43f186,_0x1d85aa){return function(_0x4bbc97){if(_0x4bbc97){return _0x4bbc97[_0x9aa1('0x1f')]()[_0x9aa1('0x20')](function(){_0x43f186['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ccdc9,_0x3d810e){return function(_0x53b291){if(!_0x53b291){_0x1ccdc9[_0x9aa1('0x14')](0x194);}return _0x53b291;};}function handleError(_0xa194ee,_0x1926b5){_0x1926b5=_0x1926b5||0x1f4;return function(_0x51c105){logger['error'](_0x51c105['stack']);if(_0x51c105[_0x9aa1('0x21')]){delete _0x51c105['name'];}_0xa194ee[_0x9aa1('0x15')](_0x1926b5)[_0x9aa1('0x22')](_0x51c105);};}exports[_0x9aa1('0x23')]=function(_0x23d7cb,_0x5e65ea){var _0x482ce0={'raw':!![],'where':{'id':_0x23d7cb[_0x9aa1('0x24')]['id']}},_0x479644={};_0x479644[_0x9aa1('0x25')]=_['keys'](db['ChatProactiveAction'][_0x9aa1('0x26')]);_0x479644[_0x9aa1('0x27')]=_[_0x9aa1('0x28')](_0x23d7cb[_0x9aa1('0x27')]);_0x479644[_0x9aa1('0x29')]=_[_0x9aa1('0x2a')](_0x479644[_0x9aa1('0x25')],_0x479644[_0x9aa1('0x27')]);_0x482ce0['attributes']=_[_0x9aa1('0x2a')](_0x479644[_0x9aa1('0x25')],qs[_0x9aa1('0x2b')](_0x23d7cb['query'][_0x9aa1('0x2b')]));_0x482ce0['attributes']=_0x482ce0[_0x9aa1('0x2c')][_0x9aa1('0x2d')]?_0x482ce0[_0x9aa1('0x2c')]:_0x479644[_0x9aa1('0x25')];if(_0x23d7cb[_0x9aa1('0x27')][_0x9aa1('0x2e')]){_0x482ce0['include']=[{'all':!![]}];}_0x482ce0=_[_0x9aa1('0x2f')]({},_0x482ce0,_0x23d7cb[_0x9aa1('0x30')]);return db['ChatProactiveAction'][_0x9aa1('0x31')](_0x482ce0)[_0x9aa1('0x20')](handleEntityNotFound(_0x5e65ea,null))[_0x9aa1('0x20')](respondWithResult(_0x5e65ea,null))[_0x9aa1('0x32')](handleError(_0x5e65ea,null));};exports[_0x9aa1('0x33')]=function(_0x926ba4,_0xfc5f9d){return db['ChatProactiveAction'][_0x9aa1('0x33')](_0x926ba4[_0x9aa1('0x34')],{})['then'](respondWithResult(_0xfc5f9d,0xc9))[_0x9aa1('0x32')](handleError(_0xfc5f9d,null));};exports[_0x9aa1('0x1e')]=function(_0x249630,_0x5e3164){if(_0x249630[_0x9aa1('0x34')]['id']){delete _0x249630['body']['id'];}return db['ChatProactiveAction'][_0x9aa1('0x31')]({'where':{'id':_0x249630[_0x9aa1('0x24')]['id']}})[_0x9aa1('0x20')](handleEntityNotFound(_0x5e3164,null))[_0x9aa1('0x20')](saveUpdates(_0x249630[_0x9aa1('0x34')],null))[_0x9aa1('0x20')](respondWithResult(_0x5e3164,null))[_0x9aa1('0x32')](handleError(_0x5e3164,null));};exports[_0x9aa1('0x1f')]=function(_0x49e898,_0x1d4ced){return db[_0x9aa1('0x35')][_0x9aa1('0x31')]({'where':{'id':_0x49e898[_0x9aa1('0x24')]['id']}})['then'](handleEntityNotFound(_0x1d4ced,null))[_0x9aa1('0x20')](removeEntity(_0x1d4ced,null))[_0x9aa1('0x32')](handleError(_0x1d4ced,null));};
\ No newline at end of file
+var _0x0a9f=['papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','show','rawAttributes','query','keys','filters','model','intersection','fields','attributes','include','merge','options','ChatProactiveAction','find','catch','create','body','params','rimraf','zip-dir','moment','mustache','ejs','fs-extra','squel','jsforce','desk.js','querystring'];(function(_0x2faddb,_0xc18b78){var _0x273c05=function(_0x1a3785){while(--_0x1a3785){_0x2faddb['push'](_0x2faddb['shift']());}};_0x273c05(++_0xc18b78);}(_0x0a9f,0x64));var _0xf0a9=function(_0x24c178,_0x2e588b){_0x24c178=_0x24c178-0x0;var _0x35a2d8=_0x0a9f[_0x24c178];return _0x35a2d8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf0a9('0x0'));var zipdir=require(_0xf0a9('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xf0a9('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xf0a9('0x3'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xf0a9('0x4'));var fs=require('fs');var fs_extra=require(_0xf0a9('0x5'));var _=require('lodash');var squel=require(_0xf0a9('0x6'));var crypto=require('crypto');var jsforce=require(_0xf0a9('0x7'));var deskjs=require(_0xf0a9('0x8'));var toCsv=require('to-csv');var querystring=require(_0xf0a9('0x9'));var Papa=require(_0xf0a9('0xa'));var Redis=require(_0xf0a9('0xb'));var authService=require('../../components/auth/service');var qs=require(_0xf0a9('0xc'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf0a9('0xd'));var logger=require(_0xf0a9('0xe'))(_0xf0a9('0xf'));var utils=require(_0xf0a9('0x10'));var config=require('../../config/environment');var licenseUtil=require(_0xf0a9('0x11'));var db=require(_0xf0a9('0x12'))['db'];function respondWithStatusCode(_0x6a469e,_0xde853){_0xde853=_0xde853||0xcc;return function(_0x4c8877){if(_0x4c8877){return _0x6a469e['sendStatus'](_0xde853);}return _0x6a469e[_0xf0a9('0x13')](_0xde853)[_0xf0a9('0x14')]();};}function respondWithResult(_0xe27d7e,_0x24c3c9){_0x24c3c9=_0x24c3c9||0xc8;return function(_0x437a3b){if(_0x437a3b){return _0xe27d7e[_0xf0a9('0x13')](_0x24c3c9)[_0xf0a9('0x15')](_0x437a3b);}};}function respondWithFilteredResult(_0x48cffd,_0x18e6ce){return function(_0x4bb2f2){if(_0x4bb2f2){var _0x373ba8=typeof _0x18e6ce['offset']===_0xf0a9('0x16')&&typeof _0x18e6ce['limit']===_0xf0a9('0x16');var _0x43b7f3=_0x4bb2f2[_0xf0a9('0x17')];var _0xf9f800=_0x373ba8?0x0:_0x18e6ce[_0xf0a9('0x18')];var _0x37ddab=_0x373ba8?_0x4bb2f2[_0xf0a9('0x17')]:_0x18e6ce[_0xf0a9('0x18')]+_0x18e6ce[_0xf0a9('0x19')];var _0x4ecb10;if(_0x37ddab>=_0x43b7f3){_0x37ddab=_0x43b7f3;_0x4ecb10=0xc8;}else{_0x4ecb10=0xce;}_0x48cffd[_0xf0a9('0x13')](_0x4ecb10);return _0x48cffd[_0xf0a9('0x1a')](_0xf0a9('0x1b'),_0xf9f800+'-'+_0x37ddab+'/'+_0x43b7f3)['json'](_0x4bb2f2);}return null;};}function patchUpdates(_0x42e7f3){return function(_0x5c26c1){try{jsonpatch[_0xf0a9('0x1c')](_0x5c26c1,_0x42e7f3,!![]);}catch(_0x2f57e7){return BPromise['reject'](_0x2f57e7);}return _0x5c26c1[_0xf0a9('0x1d')]();};}function saveUpdates(_0x1707c2,_0xad2291){return function(_0x52b3cf){if(_0x52b3cf){return _0x52b3cf[_0xf0a9('0x1e')](_0x1707c2)[_0xf0a9('0x1f')](function(_0x132203){return _0x132203;});}return null;};}function removeEntity(_0x453307,_0x3f1013){return function(_0x41c958){if(_0x41c958){return _0x41c958[_0xf0a9('0x20')]()['then'](function(){_0x453307['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3f39a3,_0x23ed63){return function(_0x1064cf){if(!_0x1064cf){_0x3f39a3['sendStatus'](0x194);}return _0x1064cf;};}function handleError(_0x3b1377,_0x12133f){_0x12133f=_0x12133f||0x1f4;return function(_0x1d93d2){logger[_0xf0a9('0x21')](_0x1d93d2[_0xf0a9('0x22')]);if(_0x1d93d2[_0xf0a9('0x23')]){delete _0x1d93d2['name'];}_0x3b1377[_0xf0a9('0x13')](_0x12133f)[_0xf0a9('0x24')](_0x1d93d2);};}exports[_0xf0a9('0x25')]=function(_0x1f24a2,_0x153a4e){var _0x4834e0={'raw':!![],'where':{'id':_0x1f24a2['params']['id']}},_0x1c2fef={};_0x1c2fef['model']=_['keys'](db['ChatProactiveAction'][_0xf0a9('0x26')]);_0x1c2fef[_0xf0a9('0x27')]=_[_0xf0a9('0x28')](_0x1f24a2['query']);_0x1c2fef[_0xf0a9('0x29')]=_['intersection'](_0x1c2fef[_0xf0a9('0x2a')],_0x1c2fef[_0xf0a9('0x27')]);_0x4834e0['attributes']=_[_0xf0a9('0x2b')](_0x1c2fef[_0xf0a9('0x2a')],qs[_0xf0a9('0x2c')](_0x1f24a2[_0xf0a9('0x27')][_0xf0a9('0x2c')]));_0x4834e0[_0xf0a9('0x2d')]=_0x4834e0['attributes']['length']?_0x4834e0['attributes']:_0x1c2fef['model'];if(_0x1f24a2[_0xf0a9('0x27')]['includeAll']){_0x4834e0[_0xf0a9('0x2e')]=[{'all':!![]}];}_0x4834e0=_[_0xf0a9('0x2f')]({},_0x4834e0,_0x1f24a2[_0xf0a9('0x30')]);return db[_0xf0a9('0x31')][_0xf0a9('0x32')](_0x4834e0)['then'](handleEntityNotFound(_0x153a4e,null))[_0xf0a9('0x1f')](respondWithResult(_0x153a4e,null))[_0xf0a9('0x33')](handleError(_0x153a4e,null));};exports[_0xf0a9('0x34')]=function(_0x573d27,_0x19e297){return db['ChatProactiveAction'][_0xf0a9('0x34')](_0x573d27[_0xf0a9('0x35')],{})[_0xf0a9('0x1f')](respondWithResult(_0x19e297,0xc9))[_0xf0a9('0x33')](handleError(_0x19e297,null));};exports[_0xf0a9('0x1e')]=function(_0x12e4ba,_0x538ebe){if(_0x12e4ba[_0xf0a9('0x35')]['id']){delete _0x12e4ba['body']['id'];}return db[_0xf0a9('0x31')][_0xf0a9('0x32')]({'where':{'id':_0x12e4ba[_0xf0a9('0x36')]['id']}})[_0xf0a9('0x1f')](handleEntityNotFound(_0x538ebe,null))[_0xf0a9('0x1f')](saveUpdates(_0x12e4ba[_0xf0a9('0x35')],null))[_0xf0a9('0x1f')](respondWithResult(_0x538ebe,null))[_0xf0a9('0x33')](handleError(_0x538ebe,null));};exports['destroy']=function(_0x5826c2,_0x42c072){return db['ChatProactiveAction'][_0xf0a9('0x32')]({'where':{'id':_0x5826c2[_0xf0a9('0x36')]['id']}})[_0xf0a9('0x1f')](handleEntityNotFound(_0x42c072,null))['then'](removeEntity(_0x42c072,null))[_0xf0a9('0x33')](handleError(_0x42c072,null));};
\ No newline at end of file
index 4c7509d..505bfbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe052=['exports','define','ChatProactiveAction','chat_proactive_actions','util','moment','bluebird','request-promise','rimraf','../../config/environment','./chatProactiveAction.attributes'];(function(_0x1eca2d,_0x47ea3b){var _0x45a565=function(_0x28e927){while(--_0x28e927){_0x1eca2d['push'](_0x1eca2d['shift']());}};_0x45a565(++_0x47ea3b);}(_0xe052,0x10c));var _0x2e05=function(_0x1e0541,_0x3f7024){_0x1e0541=_0x1e0541-0x0;var _0x4e5e9d=_0xe052[_0x1e0541];return _0x4e5e9d;};'use strict';var _=require('lodash');var util=require(_0x2e05('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x2e05('0x1'));var BPromise=require(_0x2e05('0x2'));var rp=require(_0x2e05('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2e05('0x4'));var config=require(_0x2e05('0x5'));var attributes=require(_0x2e05('0x6'));module[_0x2e05('0x7')]=function(_0x458218,_0x45d1a5){return _0x458218[_0x2e05('0x8')](_0x2e05('0x9'),attributes,{'tableName':_0x2e05('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd178=['./chatProactiveAction.attributes','exports','define','chat_proactive_actions','lodash','util','api','moment','bluebird','path','../../config/environment'];(function(_0x4f5535,_0x517bac){var _0x4e3d4b=function(_0x11133e){while(--_0x11133e){_0x4f5535['push'](_0x4f5535['shift']());}};_0x4e3d4b(++_0x517bac);}(_0xd178,0xbf));var _0x8d17=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0xd178[_0x37c22c];return _0x119d79;};'use strict';var _=require(_0x8d17('0x0'));var util=require(_0x8d17('0x1'));var logger=require('../../config/logger')(_0x8d17('0x2'));var moment=require(_0x8d17('0x3'));var BPromise=require(_0x8d17('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8d17('0x5'));var rimraf=require('rimraf');var config=require(_0x8d17('0x6'));var attributes=require(_0x8d17('0x7'));module[_0x8d17('0x8')]=function(_0x484fa0,_0x29f509){return _0x484fa0[_0x8d17('0x9')]('ChatProactiveAction',attributes,{'tableName':_0x8d17('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 924b5a9..b3eff47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4ec=['then','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','stringify','code','message','error','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','request'];(function(_0x41f0fa,_0x478682){var _0x2d8fbd=function(_0x43aef4){while(--_0x43aef4){_0x41f0fa['push'](_0x41f0fa['shift']());}};_0x2d8fbd(++_0x478682);}(_0xa4ec,0x193));var _0xca4e=function(_0x934425,_0x5af72f){_0x934425=_0x934425-0x0;var _0x31d596=_0xa4ec[_0x934425];return _0x31d596;};'use strict';var _=require(_0xca4e('0x0'));var util=require('util');var moment=require(_0xca4e('0x1'));var BPromise=require(_0xca4e('0x2'));var rs=require(_0xca4e('0x3'));var fs=require('fs');var Redis=require(_0xca4e('0x4'));var db=require(_0xca4e('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xca4e('0x6'));var config=require(_0xca4e('0x7'));var jayson=require(_0xca4e('0x8'));var client=jayson['client'][_0xca4e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x51e53b,_0x5309a3,_0x3ed096){return new BPromise(function(_0x2cf874,_0x4e4a9e){return client[_0xca4e('0xa')](_0x51e53b,_0x3ed096)[_0xca4e('0xb')](function(_0x274255){logger[_0xca4e('0xc')](_0xca4e('0xd'),_0x5309a3,_0xca4e('0xe'));logger[_0xca4e('0xf')](_0xca4e('0x10'),_0x5309a3,_0xca4e('0xe'),JSON[_0xca4e('0x11')](_0x274255));if(_0x274255['error']){if(_0x274255['error'][_0xca4e('0x12')]===0x1f4){logger['error'](_0xca4e('0xd'),_0x5309a3,_0x274255['error']['message']);return _0x4e4a9e(_0x274255['error'][_0xca4e('0x13')]);}logger[_0xca4e('0x14')]('ChatProactiveAction,\x20%s,\x20%s',_0x5309a3,_0x274255[_0xca4e('0x14')][_0xca4e('0x13')]);return _0x2cf874(_0x274255[_0xca4e('0x14')][_0xca4e('0x13')]);}else{logger[_0xca4e('0xc')]('ChatProactiveAction,\x20%s,\x20%s',_0x5309a3,_0xca4e('0xe'));_0x2cf874(_0x274255[_0xca4e('0x15')][_0xca4e('0x13')]);}})[_0xca4e('0x16')](function(_0xb166a1){logger[_0xca4e('0x14')]('ChatProactiveAction,\x20%s,\x20%s',_0x5309a3,_0xb166a1);_0x4e4a9e(_0xb166a1);});});}
\ No newline at end of file
+var _0x7134=['lodash','util','moment','randomstring','../../config/logger','rpc','../../config/environment','jayson/promise','request','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch'];(function(_0x4b91c4,_0x2d0a87){var _0x18e187=function(_0x4d71dc){while(--_0x4d71dc){_0x4b91c4['push'](_0x4b91c4['shift']());}};_0x18e187(++_0x2d0a87);}(_0x7134,0x85));var _0x4713=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x7134[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x4713('0x0'));var util=require(_0x4713('0x1'));var moment=require(_0x4713('0x2'));var BPromise=require('bluebird');var rs=require(_0x4713('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x4713('0x4'))(_0x4713('0x5'));var config=require(_0x4713('0x6'));var jayson=require(_0x4713('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5a219a,_0x444c5d,_0x54a842){return new BPromise(function(_0x505886,_0x37d58c){return client[_0x4713('0x8')](_0x5a219a,_0x54a842)['then'](function(_0x1482c0){logger[_0x4713('0x9')](_0x4713('0xa'),_0x444c5d,_0x4713('0xb'));logger[_0x4713('0xc')](_0x4713('0xd'),_0x444c5d,_0x4713('0xb'),JSON[_0x4713('0xe')](_0x1482c0));if(_0x1482c0[_0x4713('0xf')]){if(_0x1482c0['error'][_0x4713('0x10')]===0x1f4){logger[_0x4713('0xf')](_0x4713('0xa'),_0x444c5d,_0x1482c0['error'][_0x4713('0x11')]);return _0x37d58c(_0x1482c0[_0x4713('0xf')]['message']);}logger[_0x4713('0xf')](_0x4713('0xa'),_0x444c5d,_0x1482c0['error'][_0x4713('0x11')]);return _0x505886(_0x1482c0[_0x4713('0xf')][_0x4713('0x11')]);}else{logger[_0x4713('0x9')](_0x4713('0xa'),_0x444c5d,_0x4713('0xb'));_0x505886(_0x1482c0['result'][_0x4713('0x11')]);}})[_0x4713('0x12')](function(_0x4b9df2){logger['error'](_0x4713('0xa'),_0x444c5d,_0x4b9df2);_0x37d58c(_0x4b9df2);});});}
\ No newline at end of file
index 1b9515e..2f45ae4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee14=['/:id','show','post','isAuthenticated','create','put','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller'];(function(_0x3e202e,_0x375823){var _0x22faed=function(_0x72e29e){while(--_0x72e29e){_0x3e202e['push'](_0x3e202e['shift']());}};_0x22faed(++_0x375823);}(_0xee14,0x13a));var _0x4ee1=function(_0x48a109,_0xf6da7b){_0x48a109=_0x48a109-0x0;var _0x44745=_0xee14[_0x48a109];return _0x44745;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x4ee1('0x0'));var timeout=require(_0x4ee1('0x1'));var express=require(_0x4ee1('0x2'));var router=express[_0x4ee1('0x3')]();var fs_extra=require(_0x4ee1('0x4'));var auth=require(_0x4ee1('0x5'));var interaction=require(_0x4ee1('0x6'));var config=require(_0x4ee1('0x7'));var controller=require(_0x4ee1('0x8'));router['get'](_0x4ee1('0x9'),auth['isAuthenticated'](),controller[_0x4ee1('0xa')]);router[_0x4ee1('0xb')]('/',auth[_0x4ee1('0xc')](),controller[_0x4ee1('0xd')]);router[_0x4ee1('0xe')](_0x4ee1('0x9'),auth['isAuthenticated'](),controller[_0x4ee1('0xf')]);router[_0x4ee1('0x10')]('/:id',auth[_0x4ee1('0xc')](),controller[_0x4ee1('0x11')]);module[_0x4ee1('0x12')]=router;
\ No newline at end of file
+var _0x7da7=['util','path','Router','fs-extra','../../components/interaction/service','../../config/environment','get','/:id','show','isAuthenticated','create','put','delete','exports','multer'];(function(_0x250ce7,_0x502ad3){var _0x416428=function(_0x46564d){while(--_0x46564d){_0x250ce7['push'](_0x250ce7['shift']());}};_0x416428(++_0x502ad3);}(_0x7da7,0x10d));var _0x77da=function(_0x6ca7f4,_0x51a5df){_0x6ca7f4=_0x6ca7f4-0x0;var _0x494fa6=_0x7da7[_0x6ca7f4];return _0x494fa6;};'use strict';var multer=require(_0x77da('0x0'));var util=require(_0x77da('0x1'));var path=require(_0x77da('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x77da('0x3')]();var fs_extra=require(_0x77da('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x77da('0x5'));var config=require(_0x77da('0x6'));var controller=require('./chatProactiveAction.controller');router[_0x77da('0x7')](_0x77da('0x8'),auth['isAuthenticated'](),controller[_0x77da('0x9')]);router['post']('/',auth[_0x77da('0xa')](),controller[_0x77da('0xb')]);router[_0x77da('0xc')](_0x77da('0x8'),auth[_0x77da('0xa')](),controller['update']);router[_0x77da('0xd')](_0x77da('0x8'),auth[_0x77da('0xa')](),controller['destroy']);module[_0x77da('0xe')]=router;
\ No newline at end of file
index a3ea11d..207e19d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc377=['exports','STRING','name','ENUM','rrmemory','beepall','roundrobin','sequelize'];(function(_0x19ed90,_0x3759db){var _0x497c41=function(_0x38f43f){while(--_0x38f43f){_0x19ed90['push'](_0x19ed90['shift']());}};_0x497c41(++_0x3759db);}(_0xc377,0xf7));var _0x7c37=function(_0x374e61,_0x2a04c4){_0x374e61=_0x374e61-0x0;var _0x16316c=_0xc377[_0x374e61];return _0x16316c;};'use strict';var Sequelize=require(_0x7c37('0x0'));module[_0x7c37('0x1')]={'name':{'type':Sequelize[_0x7c37('0x2')],'unique':_0x7c37('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x7c37('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x7c37('0x4')](_0x7c37('0x5'),_0x7c37('0x6'),_0x7c37('0x7'))}};
\ No newline at end of file
+var _0x5738=['STRING','name','INTEGER','rrmemory','roundrobin'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x5738,0x91));var _0x8573=function(_0x1aed01,_0x3b59f3){_0x1aed01=_0x1aed01-0x0;var _0x34ccb8=_0x5738[_0x1aed01];return _0x34ccb8;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x8573('0x0')],'unique':_0x8573('0x1'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x8573('0x0')]},'timeout':{'type':Sequelize[_0x8573('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x8573('0x3'),'beepall',_0x8573('0x4'))}};
\ No newline at end of file
index 11f3693..06ce054 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7382=['squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','http','ChatQueue,\x20%s,\x20%s','request\x20sent','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','get','ChatQueues','stack','name','send','index','map','ChatQueue','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','filter','merge','VIRTUAL','options','findAll','rows','show','includeAll','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','findOne','UserChatQueue','order','pick','ChatQueueId','User','findAndCountAll','UserId','agent','chatPause','updatedAt','createdAt','format','SIP','getTeams','Team','addTeams','Agents','online','voicePause','interface','transaction','each','forEach','emit','userChatQueue:save','removeTeams','ids','select','field','tq.TeamId','from','team_has_chat_queues','user_has_teams','ChatQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','sequelize','QueryTypes','SELECT','TeamId','includes','union','compact','value','isEmpty','removeAgents','userChatQueue:remove','addAgents','omit','spread','getAgents','rawAttributes','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x31cb5f,_0x2df766){var _0x586042=function(_0x53c807){while(--_0x53c807){_0x31cb5f['push'](_0x31cb5f['shift']());}};_0x586042(++_0x2df766);}(_0x7382,0x1c3));var _0x2738=function(_0x5de17e,_0x556efd){_0x5de17e=_0x5de17e-0x0;var _0x9db192=_0x7382[_0x5de17e];return _0x9db192;};'use strict';var emlformat=require(_0x2738('0x0'));var rimraf=require(_0x2738('0x1'));var zipdir=require(_0x2738('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2738('0x3'));var moment=require(_0x2738('0x4'));var BPromise=require(_0x2738('0x5'));var Mustache=require(_0x2738('0x6'));var util=require(_0x2738('0x7'));var path=require(_0x2738('0x8'));var sox=require(_0x2738('0x9'));var csv=require(_0x2738('0xa'));var ejs=require(_0x2738('0xb'));var fs=require('fs');var fs_extra=require(_0x2738('0xc'));var _=require(_0x2738('0xd'));var squel=require(_0x2738('0xe'));var crypto=require(_0x2738('0xf'));var jsforce=require(_0x2738('0x10'));var deskjs=require(_0x2738('0x11'));var toCsv=require(_0x2738('0xa'));var querystring=require(_0x2738('0x12'));var Papa=require(_0x2738('0x13'));var Redis=require(_0x2738('0x14'));var authService=require('../../components/auth/service');var qs=require(_0x2738('0x15'));var as=require(_0x2738('0x16'));var hardwareService=require(_0x2738('0x17'));var logger=require(_0x2738('0x18'))('api');var utils=require('../../config/utils');var config=require(_0x2738('0x19'));var licenseUtil=require(_0x2738('0x1a'));var db=require(_0x2738('0x1b'))['db'];config[_0x2738('0x1c')]=_[_0x2738('0x1d')](config[_0x2738('0x1c')],{'host':_0x2738('0x1e'),'port':0x18eb});var socket=require(_0x2738('0x1f'))(new Redis(config[_0x2738('0x1c')]));require('./chatQueue.socket')[_0x2738('0x20')](socket);var jayson=require(_0x2738('0x21'));var client=jayson['client'][_0x2738('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x139b69,_0x359056,_0xe6f43d,_0x2c71bf){return new BPromise(function(_0x2bbe4a,_0xb8fdea){var _0x2689c4=_0x2c71bf||client;return _0x2689c4['request'](_0x139b69,_0xe6f43d)['then'](function(_0x57dcc5){logger['info'](_0x2738('0x23'),_0x359056,_0x2738('0x24'));logger['debug'](_0x2738('0x25'),_0x359056,_0x2738('0x24'),JSON[_0x2738('0x26')](_0x57dcc5));if(_0x57dcc5[_0x2738('0x27')]){if(_0x57dcc5[_0x2738('0x27')]['code']===0x1f4){logger[_0x2738('0x27')]('ChatQueue,\x20%s,\x20%s',_0x359056,_0x57dcc5[_0x2738('0x27')][_0x2738('0x28')]);return _0xb8fdea(_0x57dcc5['error'][_0x2738('0x28')]);}logger[_0x2738('0x27')]('ChatQueue,\x20%s,\x20%s',_0x359056,_0x57dcc5[_0x2738('0x27')][_0x2738('0x28')]);return _0x2bbe4a(_0x57dcc5[_0x2738('0x27')][_0x2738('0x28')]);}else{logger[_0x2738('0x29')](_0x2738('0x23'),_0x359056,'request\x20sent');_0x2bbe4a(_0x57dcc5[_0x2738('0x2a')]['message']);}})[_0x2738('0x2b')](function(_0x45caab){logger[_0x2738('0x27')]('ChatQueue,\x20%s,\x20%s',_0x359056,_0x45caab);_0xb8fdea(_0x45caab);});});}function respondWithStatusCode(_0x2704f4,_0x4858fa){_0x4858fa=_0x4858fa||0xcc;return function(_0x3daed3){if(_0x3daed3){return _0x2704f4[_0x2738('0x2c')](_0x4858fa);}return _0x2704f4[_0x2738('0x2d')](_0x4858fa)[_0x2738('0x2e')]();};}function respondWithResult(_0xd0297c,_0x22dc66){_0x22dc66=_0x22dc66||0xc8;return function(_0x1f61c1){if(_0x1f61c1){return _0xd0297c['status'](_0x22dc66)[_0x2738('0x2f')](_0x1f61c1);}};}function respondWithFilteredResult(_0x45096a,_0x3a72ef){return function(_0x25e366){if(_0x25e366){var _0x140f14=typeof _0x3a72ef[_0x2738('0x30')]===_0x2738('0x31')&&typeof _0x3a72ef[_0x2738('0x32')]==='undefined';var _0x5a8c49=_0x25e366[_0x2738('0x33')];var _0x2a7b6c=_0x140f14?0x0:_0x3a72ef[_0x2738('0x30')];var _0xb1e774=_0x140f14?_0x25e366['count']:_0x3a72ef[_0x2738('0x30')]+_0x3a72ef[_0x2738('0x32')];var _0x2003bf;if(_0xb1e774>=_0x5a8c49){_0xb1e774=_0x5a8c49;_0x2003bf=0xc8;}else{_0x2003bf=0xce;}_0x45096a[_0x2738('0x2d')](_0x2003bf);return _0x45096a['set'](_0x2738('0x34'),_0x2a7b6c+'-'+_0xb1e774+'/'+_0x5a8c49)[_0x2738('0x2f')](_0x25e366);}return null;};}function patchUpdates(_0x5211b9){return function(_0x5b158b){try{jsonpatch[_0x2738('0x35')](_0x5b158b,_0x5211b9,!![]);}catch(_0x4231b4){return BPromise[_0x2738('0x36')](_0x4231b4);}return _0x5b158b['save']();};}function saveUpdates(_0x5c2f2f,_0x4ddd0d){return function(_0x487539){if(_0x487539){return _0x487539[_0x2738('0x37')](_0x5c2f2f)[_0x2738('0x38')](function(_0x2b9ab3){return _0x2b9ab3;});}return null;};}function removeEntity(_0xe050ac,_0x213829){return function(_0x58d351){if(_0x58d351){return _0x58d351[_0x2738('0x39')]()[_0x2738('0x38')](function(){var _0x4547cd=_0x58d351[_0x2738('0x3a')]({'plain':!![]});var _0x54ace4=_0x2738('0x3b');return db['UserProfileResource'][_0x2738('0x39')]({'where':{'type':_0x54ace4,'resourceId':_0x4547cd['id']}})[_0x2738('0x38')](function(){return _0x58d351;});})['then'](function(){_0xe050ac[_0x2738('0x2d')](0xcc)[_0x2738('0x2e')]();});}};}function handleEntityNotFound(_0x4ac970,_0x2ea442){return function(_0xaba257){if(!_0xaba257){_0x4ac970[_0x2738('0x2c')](0x194);}return _0xaba257;};}function handleError(_0x6e2187,_0x44e912){_0x44e912=_0x44e912||0x1f4;return function(_0x132a80){logger[_0x2738('0x27')](_0x132a80[_0x2738('0x3c')]);if(_0x132a80['name']){delete _0x132a80[_0x2738('0x3d')];}_0x6e2187['status'](_0x44e912)[_0x2738('0x3e')](_0x132a80);};}exports[_0x2738('0x3f')]=function(_0x1ad847,_0x58a7db){var _0x18a028={},_0x246cea={},_0x2427d9={'count':0x0,'rows':[]};var _0x606af5=_[_0x2738('0x40')](db[_0x2738('0x41')]['rawAttributes'],function(_0x4183c1){return{'name':_0x4183c1[_0x2738('0x42')],'type':_0x4183c1[_0x2738('0x43')][_0x2738('0x44')]};});_0x246cea[_0x2738('0x45')]=_['map'](_0x606af5,_0x2738('0x3d'));_0x246cea[_0x2738('0x46')]=_[_0x2738('0x47')](_0x1ad847[_0x2738('0x46')]);_0x246cea['filters']=_[_0x2738('0x48')](_0x246cea[_0x2738('0x45')],_0x246cea[_0x2738('0x46')]);_0x18a028[_0x2738('0x49')]=_[_0x2738('0x48')](_0x246cea[_0x2738('0x45')],qs[_0x2738('0x4a')](_0x1ad847[_0x2738('0x46')][_0x2738('0x4a')]));_0x18a028['attributes']=_0x18a028['attributes'][_0x2738('0x4b')]?_0x18a028[_0x2738('0x49')]:_0x246cea[_0x2738('0x45')];if(!_0x1ad847[_0x2738('0x46')][_0x2738('0x4c')](_0x2738('0x4d'))){_0x18a028['limit']=qs[_0x2738('0x32')](_0x1ad847[_0x2738('0x46')][_0x2738('0x32')]);_0x18a028[_0x2738('0x30')]=qs[_0x2738('0x30')](_0x1ad847[_0x2738('0x46')]['offset']);}_0x18a028['order']=qs[_0x2738('0x4e')](_0x1ad847[_0x2738('0x46')]['sort']);_0x18a028[_0x2738('0x4f')]=qs[_0x2738('0x50')](_['pick'](_0x1ad847['query'],_0x246cea[_0x2738('0x50')]),_0x606af5);if(_0x1ad847[_0x2738('0x46')][_0x2738('0x51')]){_0x18a028['where']=_[_0x2738('0x52')](_0x18a028[_0x2738('0x4f')],{'$or':_[_0x2738('0x40')](_0x606af5,function(_0x53511d){if(_0x53511d[_0x2738('0x43')]!==_0x2738('0x53')){var _0x3275cb={};_0x3275cb[_0x53511d[_0x2738('0x3d')]]={'$like':'%'+_0x1ad847[_0x2738('0x46')][_0x2738('0x51')]+'%'};return _0x3275cb;}})});}_0x18a028=_['merge']({},_0x18a028,_0x1ad847[_0x2738('0x54')]);var _0x33671e={'where':_0x18a028['where']};return db[_0x2738('0x41')][_0x2738('0x33')](_0x33671e)['then'](function(_0x51292a){_0x2427d9[_0x2738('0x33')]=_0x51292a;if(_0x1ad847[_0x2738('0x46')]['includeAll']){_0x18a028['include']=[{'all':!![]}];}return db[_0x2738('0x41')][_0x2738('0x55')](_0x18a028);})[_0x2738('0x38')](function(_0x2b2bc3){_0x2427d9[_0x2738('0x56')]=_0x2b2bc3;return _0x2427d9;})[_0x2738('0x38')](respondWithFilteredResult(_0x58a7db,_0x18a028))['catch'](handleError(_0x58a7db,null));};exports[_0x2738('0x57')]=function(_0x3e5b41,_0xa0a75){var _0xd5dcef={'raw':!![],'where':{'id':_0x3e5b41['params']['id']}},_0x302556={};_0x302556[_0x2738('0x45')]=_[_0x2738('0x47')](db[_0x2738('0x41')]['rawAttributes']);_0x302556[_0x2738('0x46')]=_['keys'](_0x3e5b41[_0x2738('0x46')]);_0x302556[_0x2738('0x50')]=_[_0x2738('0x48')](_0x302556[_0x2738('0x45')],_0x302556[_0x2738('0x46')]);_0xd5dcef['attributes']=_[_0x2738('0x48')](_0x302556[_0x2738('0x45')],qs[_0x2738('0x4a')](_0x3e5b41[_0x2738('0x46')][_0x2738('0x4a')]));_0xd5dcef[_0x2738('0x49')]=_0xd5dcef['attributes'][_0x2738('0x4b')]?_0xd5dcef['attributes']:_0x302556[_0x2738('0x45')];if(_0x3e5b41[_0x2738('0x46')][_0x2738('0x58')]){_0xd5dcef[_0x2738('0x59')]=[{'all':!![]}];}_0xd5dcef=_['merge']({},_0xd5dcef,_0x3e5b41['options']);return db[_0x2738('0x41')][_0x2738('0x5a')](_0xd5dcef)[_0x2738('0x38')](handleEntityNotFound(_0xa0a75,null))[_0x2738('0x38')](respondWithResult(_0xa0a75,null))[_0x2738('0x2b')](handleError(_0xa0a75,null));};exports[_0x2738('0x5b')]=function(_0x2ca654,_0x1f7b2f){return db['ChatQueue'][_0x2738('0x5b')](_0x2ca654[_0x2738('0x5c')],{})['then'](function(_0x3d73a5){var _0x37ad3a=_0x2ca654['user']['get']({'plain':!![]});if(!_0x37ad3a)throw new Error(_0x2738('0x5d'));if(_0x37ad3a[_0x2738('0x5e')]==='user'){var _0x11b3fe=_0x3d73a5[_0x2738('0x3a')]({'plain':!![]});var _0x343a0e='ChatQueues';return db[_0x2738('0x5f')][_0x2738('0x5a')]({'where':{'name':_0x343a0e,'userProfileId':_0x37ad3a[_0x2738('0x60')]},'raw':!![]})[_0x2738('0x38')](function(_0x3c3ff0){if(_0x3c3ff0&&_0x3c3ff0[_0x2738('0x61')]===0x0){return db['UserProfileResource'][_0x2738('0x5b')]({'name':_0x11b3fe[_0x2738('0x3d')],'resourceId':_0x11b3fe['id'],'type':_0x3c3ff0['name'],'sectionId':_0x3c3ff0['id']},{})[_0x2738('0x38')](function(){return _0x3d73a5;});}else{return _0x3d73a5;}})[_0x2738('0x2b')](function(_0x5c371a){logger[_0x2738('0x27')](_0x2738('0x62'),_0x5c371a);throw _0x5c371a;});}return _0x3d73a5;})['then'](respondWithResult(_0x1f7b2f,0xc9))['catch'](handleError(_0x1f7b2f,null));};exports[_0x2738('0x37')]=function(_0x3c8d91,_0x4e6b46){if(_0x3c8d91['body']['id']){delete _0x3c8d91['body']['id'];}return db[_0x2738('0x41')][_0x2738('0x5a')]({'where':{'id':_0x3c8d91['params']['id']}})[_0x2738('0x38')](handleEntityNotFound(_0x4e6b46,null))['then'](saveUpdates(_0x3c8d91[_0x2738('0x5c')],null))[_0x2738('0x38')](respondWithResult(_0x4e6b46,null))[_0x2738('0x2b')](handleError(_0x4e6b46,null));};exports['destroy']=function(_0x44b553,_0x142f1c){return db[_0x2738('0x41')][_0x2738('0x5a')]({'where':{'id':_0x44b553[_0x2738('0x63')]['id']}})['then'](handleEntityNotFound(_0x142f1c,null))['then'](removeEntity(_0x142f1c,null))['catch'](handleError(_0x142f1c,null));};exports[_0x2738('0x64')]=function(_0x2c25f8,_0xf7becc){return db[_0x2738('0x41')][_0x2738('0x64')]()['then'](respondWithResult(_0xf7becc,null))[_0x2738('0x2b')](handleError(_0xf7becc,null));};exports[_0x2738('0x65')]=function(_0x44960c,_0x4ec8b2,_0x35fbfa){var _0x3ac23a={'raw':!![],'where':{}},_0x26948d={},_0x29f8ea;return db[_0x2738('0x41')][_0x2738('0x66')]({'where':{'id':_0x44960c['params']['id']}})[_0x2738('0x38')](handleEntityNotFound(_0x4ec8b2,null))[_0x2738('0x38')](function(_0x18e5a7){if(_0x18e5a7){_0x29f8ea=_0x18e5a7[_0x2738('0x3a')]({'plain':!![]});_0x26948d['model']=_[_0x2738('0x47')](db[_0x2738('0x67')]['rawAttributes']);_0x26948d['query']=_['keys'](_0x44960c['query']);_0x26948d[_0x2738('0x50')]=_[_0x2738('0x48')](_0x26948d[_0x2738('0x45')],_0x26948d[_0x2738('0x46')]);_0x3ac23a['attributes']=_['intersection'](_0x26948d[_0x2738('0x45')],qs['fields'](_0x44960c[_0x2738('0x46')][_0x2738('0x4a')]));_0x3ac23a[_0x2738('0x49')]=_0x3ac23a[_0x2738('0x49')][_0x2738('0x4b')]?_0x3ac23a[_0x2738('0x49')]:_0x26948d[_0x2738('0x45')];if(!_0x44960c['query'][_0x2738('0x4c')]('nolimit')){_0x3ac23a[_0x2738('0x32')]=qs[_0x2738('0x32')](_0x44960c['query'][_0x2738('0x32')]);_0x3ac23a[_0x2738('0x30')]=qs[_0x2738('0x30')](_0x44960c[_0x2738('0x46')]['offset']);}_0x3ac23a[_0x2738('0x68')]=qs[_0x2738('0x4e')](_0x44960c[_0x2738('0x46')][_0x2738('0x4e')]);_0x3ac23a[_0x2738('0x4f')]=qs['filters'](_[_0x2738('0x69')](_0x44960c[_0x2738('0x46')],_0x26948d[_0x2738('0x50')]));_0x3ac23a['where'][_0x2738('0x6a')]=_0x18e5a7['id'];if(_0x44960c[_0x2738('0x46')]['filter']){_0x3ac23a[_0x2738('0x4f')]=_[_0x2738('0x52')](_0x3ac23a[_0x2738('0x4f')],{'$or':_[_0x2738('0x40')](_0x3ac23a[_0x2738('0x49')],function(_0x1936fb){var _0x10621b={};_0x10621b[_0x1936fb]={'$like':'%'+_0x44960c[_0x2738('0x46')]['filter']+'%'};return _0x10621b;})});}_0x3ac23a=_[_0x2738('0x52')]({},_0x3ac23a,_0x44960c[_0x2738('0x54')]);return db[_0x2738('0x67')][_0x2738('0x55')](_0x3ac23a);}})[_0x2738('0x38')](function(_0xeebf79){if(_0xeebf79){return db[_0x2738('0x6b')][_0x2738('0x6c')]({'where':{'id':_[_0x2738('0x40')](_0xeebf79,_0x2738('0x6d')),'role':_0x2738('0x6e')},'attributes':['id',_0x2738('0x3d'),_0x2738('0x6f'),_0x2738('0x70'),_0x2738('0x71')]});}})[_0x2738('0x38')](function(_0x22a6d5){if(_0x22a6d5){return{'count':_0x22a6d5[_0x2738('0x33')],'rows':_[_0x2738('0x40')](_0x22a6d5[_0x2738('0x56')],function(_0x5c3175){return{'membername':_0x5c3175[_0x2738('0x3d')],'UserId':_0x5c3175['id'],'queue_name':_0x29f8ea[_0x2738('0x3d')],'ChatQueueId':_0x29f8ea['id'],'interface':util[_0x2738('0x72')]('%s/%s',_0x2738('0x73'),_0x5c3175[_0x2738('0x3d')]),'penalty':0x0,'paused':_0x5c3175[_0x2738('0x6f')],'createdAt':_0x5c3175['createdAt'],'updatedAt':_0x5c3175[_0x2738('0x70')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4ec8b2,_0x3ac23a))['catch'](handleError(_0x4ec8b2,null));};exports[_0x2738('0x74')]=function(_0x41abfd,_0x1dda90,_0xd81740){var _0x801501={};var _0x59e33d={};var _0x50c697;var _0x143b56;return db[_0x2738('0x41')][_0x2738('0x66')]({'where':{'id':_0x41abfd['params']['id']}})[_0x2738('0x38')](handleEntityNotFound(_0x1dda90,null))[_0x2738('0x38')](function(_0x3a12c9){if(_0x3a12c9){_0x50c697=_0x3a12c9;_0x59e33d[_0x2738('0x45')]=_['keys'](db[_0x2738('0x75')]['rawAttributes']);_0x59e33d[_0x2738('0x46')]=_[_0x2738('0x47')](_0x41abfd[_0x2738('0x46')]);_0x59e33d[_0x2738('0x50')]=_['intersection'](_0x59e33d[_0x2738('0x45')],_0x59e33d[_0x2738('0x46')]);_0x801501[_0x2738('0x49')]=_['intersection'](_0x59e33d[_0x2738('0x45')],qs[_0x2738('0x4a')](_0x41abfd[_0x2738('0x46')][_0x2738('0x4a')]));_0x801501['attributes']=_0x801501[_0x2738('0x49')][_0x2738('0x4b')]?_0x801501[_0x2738('0x49')]:_0x59e33d[_0x2738('0x45')];_0x801501['order']=qs['sort'](_0x41abfd[_0x2738('0x46')][_0x2738('0x4e')]);_0x801501[_0x2738('0x4f')]=qs[_0x2738('0x50')](_[_0x2738('0x69')](_0x41abfd['query'],_0x59e33d[_0x2738('0x50')]));if(_0x41abfd['query']['filter']){_0x801501['where']=_['merge'](_0x801501[_0x2738('0x4f')],{'$or':_[_0x2738('0x40')](_0x801501[_0x2738('0x49')],function(_0x29516b){var _0x183c05={};_0x183c05[_0x29516b]={'$like':'%'+_0x41abfd[_0x2738('0x46')][_0x2738('0x51')]+'%'};return _0x183c05;})});}_0x801501=_['merge']({},_0x801501,_0x41abfd[_0x2738('0x54')]);return _0x50c697['getTeams'](_0x801501);}})['then'](function(_0x51522e){if(_0x51522e){_0x143b56=_0x51522e[_0x2738('0x4b')];if(!_0x41abfd[_0x2738('0x46')][_0x2738('0x4c')]('nolimit')){_0x801501['limit']=qs['limit'](_0x41abfd[_0x2738('0x46')][_0x2738('0x32')]);_0x801501[_0x2738('0x30')]=qs[_0x2738('0x30')](_0x41abfd[_0x2738('0x46')][_0x2738('0x30')]);}return _0x50c697[_0x2738('0x74')](_0x801501);}})['then'](function(_0x3e4081){if(_0x3e4081){return _0x3e4081?{'count':_0x143b56,'rows':_0x3e4081}:null;}})[_0x2738('0x38')](respondWithResult(_0x1dda90,null))[_0x2738('0x2b')](handleError(_0x1dda90,null));};exports[_0x2738('0x76')]=function(_0x3b915f,_0x27aeeb,_0x325e44){var _0x5aba30=_0x3b915f[_0x2738('0x5c')]['ids'];return db[_0x2738('0x75')][_0x2738('0x55')]({'where':{'id':_0x5aba30},'attributes':['id'],'include':[{'model':db[_0x2738('0x6b')],'as':_0x2738('0x77'),'attributes':['id',_0x2738('0x3d'),_0x2738('0x78'),_0x2738('0x79'),_0x2738('0x7a')],'raw':!![]}]})[_0x2738('0x38')](function(_0x355917){if(_0x355917){var _0x5a9ebc=_['flatMap'](_0x355917,function(_0x325fd7){var _0xfeeba=_0x325fd7[_0x2738('0x3a')]({'plain':!![]});return _0xfeeba['Agents'];});return db['ChatQueue'][_0x2738('0x5a')]({'where':{'id':_0x3b915f[_0x2738('0x63')]['id']}})[_0x2738('0x38')](function(_0xec39ca){return db['sequelize'][_0x2738('0x7b')](function(_0x4080a6){return _0xec39ca['addTeams'](_0x5aba30,{'transaction':_0x4080a6})['then'](function(){return BPromise[_0x2738('0x7c')](_0x5a9ebc,function(_0x1164fe){return db[_0x2738('0x67')]['findOrCreate']({'where':{'UserId':_0x1164fe['id'],'ChatQueueId':_0x3b915f[_0x2738('0x63')]['id']},'transaction':_0x4080a6});});})['then'](function(){_0x5a9ebc[_0x2738('0x7d')](function(_0x510b8e){socket[_0x2738('0x7e')](_0x2738('0x7f'),{'UserId':_0x510b8e['id'],'ChatQueueId':_0xec39ca['id']});});});});});}})[_0x2738('0x38')](respondWithStatusCode(_0x27aeeb,null))['catch'](handleError(_0x27aeeb,null));};exports[_0x2738('0x80')]=function(_0xacd2f0,_0x440487,_0x3fd25e){return db[_0x2738('0x75')]['findAll']({'where':{'id':_0xacd2f0[_0x2738('0x46')][_0x2738('0x81')]},'attributes':['id'],'include':[{'model':db[_0x2738('0x6b')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x2738('0x38')](handleEntityNotFound(_0x440487,null))['then'](function(_0x5bc37f){var _0x552e27=_['map'](_0x5bc37f,'id');var _0x389c28=[];var _0x2d17b1=[];var _0x58e974=squel[_0x2738('0x82')]();_0x58e974[_0x2738('0x83')](_0x2738('0x84'))[_0x2738('0x85')](_0x2738('0x86'),'tq')['join'](_0x2738('0x87'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x2738('0x4f')](_0x2738('0x88'),_0xacd2f0['params']['id']);for(var _0x770087=0x0;_0x770087<_0x5bc37f['length'];_0x770087+=0x1){let _0xc954a0=_0x5bc37f[_0x770087];for(var _0x4d2c54=0x0;_0x4d2c54<_0xc954a0[_0x2738('0x77')]['length'];_0x4d2c54+=0x1){let _0x481871=_0xc954a0[_0x2738('0x77')][_0x4d2c54];var _0x260879=_0x58e974['clone']();_0x260879[_0x2738('0x4f')](_0x2738('0x89'),_0x481871['id']);_0x2d17b1[_0x2738('0x8a')](db[_0x2738('0x8b')][_0x2738('0x46')](_0x260879['toString'](),{'type':db['sequelize'][_0x2738('0x8c')][_0x2738('0x8d')]})['then'](function(_0x3ef7ad){if(_0x3ef7ad[_0x2738('0x4b')]===0x1){return _0x481871['id'];}else{var _0x5354e9=_['every'](_[_0x2738('0x40')](_0x3ef7ad,_0x2738('0x8e')),function(_0x35f4b9){return _[_0x2738('0x8f')](_0x552e27,_0x35f4b9);});if(_0x5354e9){return _0x481871['id'];}}}));}}return BPromise['all'](_0x2d17b1)[_0x2738('0x38')](function(_0x16075d){_0x389c28=_(_0x389c28)[_0x2738('0x90')](_0x16075d)[_0x2738('0x91')]()[_0x2738('0x92')]();return db[_0x2738('0x41')][_0x2738('0x5a')]({'where':{'id':_0xacd2f0[_0x2738('0x63')]['id']}})[_0x2738('0x38')](function(_0x4bee57){return db['sequelize'][_0x2738('0x7b')](function(_0x1292ff){return _0x4bee57['removeTeams'](_0xacd2f0['query'][_0x2738('0x81')],{'transaction':_0x1292ff})[_0x2738('0x38')](function(){if(!_[_0x2738('0x93')](_0x389c28)){return _0x4bee57[_0x2738('0x94')](_0x389c28,{'transaction':_0x1292ff});}})[_0x2738('0x38')](function(){_0x389c28[_0x2738('0x7d')](function(_0x38d1c9){socket['emit'](_0x2738('0x95'),{'UserId':_0x38d1c9,'ChatQueueId':_0x4bee57['id']});});});});});});})['then'](respondWithStatusCode(_0x440487,null))[_0x2738('0x2b')](handleError(_0x440487,null));};exports[_0x2738('0x96')]=function(_0x4792e9,_0x6f675a,_0xa90fd5){return db[_0x2738('0x41')][_0x2738('0x5a')]({'where':{'id':_0x4792e9[_0x2738('0x63')]['id']}})[_0x2738('0x38')](handleEntityNotFound(_0x6f675a,null))[_0x2738('0x38')](function(_0x4a1710){if(_0x4a1710){return _0x4a1710[_0x2738('0x96')](_0x4792e9[_0x2738('0x5c')][_0x2738('0x81')],_[_0x2738('0x97')](_0x4792e9[_0x2738('0x5c')],[_0x2738('0x81'),'id'])||{})[_0x2738('0x98')](function(_0x28f47e){for(var _0x2f8ccf=0x0;_0x2f8ccf<_0x4792e9[_0x2738('0x5c')][_0x2738('0x81')][_0x2738('0x4b')];_0x2f8ccf+=0x1){socket['emit'](_0x2738('0x7f'),{'UserId':Number(_0x4792e9['body'][_0x2738('0x81')][_0x2f8ccf]),'ChatQueueId':Number(_0x4792e9[_0x2738('0x63')]['id'])});}return _0x28f47e;});}})[_0x2738('0x38')](respondWithResult(_0x6f675a,null))[_0x2738('0x2b')](handleError(_0x6f675a,null));};exports[_0x2738('0x94')]=function(_0x76c38a,_0x5cf9e7,_0x28e8c0){return db[_0x2738('0x41')][_0x2738('0x5a')]({'where':{'id':_0x76c38a['params']['id']}})[_0x2738('0x38')](handleEntityNotFound(_0x5cf9e7,null))[_0x2738('0x38')](function(_0x50fc12){if(_0x50fc12){return _0x50fc12['removeAgents'](_0x76c38a['query'][_0x2738('0x81')])['then'](function(){if(_['isArray'](_0x76c38a[_0x2738('0x46')][_0x2738('0x81')])){for(var _0x2e2b88=0x0;_0x2e2b88<_0x76c38a[_0x2738('0x46')]['ids'][_0x2738('0x4b')];_0x2e2b88+=0x1){socket[_0x2738('0x7e')](_0x2738('0x95'),{'UserId':Number(_0x76c38a[_0x2738('0x46')][_0x2738('0x81')][_0x2e2b88]),'ChatQueueId':Number(_0x76c38a[_0x2738('0x63')]['id'])});}}else{socket['emit']('userChatQueue:remove',{'UserId':Number(_0x76c38a[_0x2738('0x46')][_0x2738('0x81')]),'ChatQueueId':Number(_0x76c38a[_0x2738('0x63')]['id'])});}});}})[_0x2738('0x38')](respondWithStatusCode(_0x5cf9e7,null))['catch'](handleError(_0x5cf9e7,null));};exports[_0x2738('0x99')]=function(_0x197342,_0x42941d,_0x41058f){var _0x545dca={};var _0x4c0e62={};var _0x363dba;var _0xba9448;return db['ChatQueue'][_0x2738('0x66')]({'where':{'id':_0x197342['params']['id']}})['then'](handleEntityNotFound(_0x42941d,null))[_0x2738('0x38')](function(_0x36cd07){if(_0x36cd07){_0x363dba=_0x36cd07;_0x4c0e62['model']=_[_0x2738('0x47')](db['User'][_0x2738('0x9a')]);_0x4c0e62[_0x2738('0x46')]=_[_0x2738('0x47')](_0x197342['query']);_0x4c0e62[_0x2738('0x50')]=_[_0x2738('0x48')](_0x4c0e62[_0x2738('0x45')],_0x4c0e62[_0x2738('0x46')]);_0x545dca[_0x2738('0x49')]=_['intersection'](_0x4c0e62['model'],qs[_0x2738('0x4a')](_0x197342[_0x2738('0x46')]['fields']));_0x545dca[_0x2738('0x49')]=_0x545dca[_0x2738('0x49')]['length']?_0x545dca[_0x2738('0x49')]:_0x4c0e62[_0x2738('0x45')];_0x545dca[_0x2738('0x68')]=qs[_0x2738('0x4e')](_0x197342['query'][_0x2738('0x4e')]);_0x545dca['where']=qs[_0x2738('0x50')](_['pick'](_0x197342[_0x2738('0x46')],_0x4c0e62[_0x2738('0x50')]));if(_0x197342[_0x2738('0x46')][_0x2738('0x51')]){_0x545dca[_0x2738('0x4f')]=_[_0x2738('0x52')](_0x545dca[_0x2738('0x4f')],{'$or':_[_0x2738('0x40')](_0x545dca[_0x2738('0x49')],function(_0x5eadaf){var _0x3dacb2={};_0x3dacb2[_0x5eadaf]={'$like':'%'+_0x197342[_0x2738('0x46')]['filter']+'%'};return _0x3dacb2;})});}_0x545dca=_[_0x2738('0x52')]({},_0x545dca,_0x197342['options']);return _0x363dba[_0x2738('0x99')](_0x545dca);}})['then'](function(_0x2a7080){if(_0x2a7080){_0xba9448=_0x2a7080[_0x2738('0x4b')];if(!_0x197342['query']['hasOwnProperty'](_0x2738('0x4d'))){_0x545dca[_0x2738('0x32')]=qs[_0x2738('0x32')](_0x197342[_0x2738('0x46')][_0x2738('0x32')]);_0x545dca[_0x2738('0x30')]=qs[_0x2738('0x30')](_0x197342['query'][_0x2738('0x30')]);}return _0x363dba[_0x2738('0x99')](_0x545dca);}})['then'](function(_0x5bd5aa){if(_0x5bd5aa){return _0x5bd5aa?{'count':_0xba9448,'rows':_0x5bd5aa}:null;}})[_0x2738('0x38')](respondWithResult(_0x42941d,null))[_0x2738('0x2b')](handleError(_0x42941d,null));};
\ No newline at end of file
+var _0x324b=['jayson/promise','client','http','request','then','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','save','destroy','UserProfileResource','stack','send','index','map','rawAttributes','fieldName','type','key','model','name','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','ChatQueue','includeAll','include','rows','show','params','options','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','ChatQueues','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','getMembers','findOne','UserChatQueue','hasOwnProperty','ChatQueueId','findAndCountAll','UserId','agent','chatPause','updatedAt','createdAt','format','getTeams','Team','addTeams','findAll','User','Agents','online','voicePause','interface','sequelize','each','findOrCreate','emit','removeTeams','ids','tq.TeamId','from','team_has_chat_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','ut.UserId\x20=\x20?','toString','SELECT','every','TeamId','includes','all','union','value','transaction','removeAgents','forEach','userChatQueue:remove','addAgents','omit','spread','userChatQueue:save','isArray','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket'];(function(_0x4a5c92,_0x23dfae){var _0x561e54=function(_0x3bf38c){while(--_0x3bf38c){_0x4a5c92['push'](_0x4a5c92['shift']());}};_0x561e54(++_0x23dfae);}(_0x324b,0x1a5));var _0xb324=function(_0x2c936a,_0x3e3797){_0x2c936a=_0x2c936a-0x0;var _0x53caa0=_0x324b[_0x2c936a];return _0x53caa0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb324('0x0'));var zipdir=require(_0xb324('0x1'));var jsonpatch=require(_0xb324('0x2'));var rp=require(_0xb324('0x3'));var moment=require(_0xb324('0x4'));var BPromise=require(_0xb324('0x5'));var Mustache=require(_0xb324('0x6'));var util=require(_0xb324('0x7'));var path=require('path');var sox=require(_0xb324('0x8'));var csv=require(_0xb324('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb324('0xa'));var _=require('lodash');var squel=require(_0xb324('0xb'));var crypto=require(_0xb324('0xc'));var jsforce=require(_0xb324('0xd'));var deskjs=require(_0xb324('0xe'));var toCsv=require(_0xb324('0x9'));var querystring=require(_0xb324('0xf'));var Papa=require(_0xb324('0x10'));var Redis=require(_0xb324('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xb324('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb324('0x13'));var logger=require(_0xb324('0x14'))(_0xb324('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb324('0x16'));var db=require(_0xb324('0x17'))['db'];config[_0xb324('0x18')]=_[_0xb324('0x19')](config[_0xb324('0x18')],{'host':_0xb324('0x1a'),'port':0x18eb});var socket=require(_0xb324('0x1b'))(new Redis(config[_0xb324('0x18')]));require(_0xb324('0x1c'))['register'](socket);var jayson=require(_0xb324('0x1d'));var client=jayson[_0xb324('0x1e')][_0xb324('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x44b819,_0x2c55cd,_0x480793,_0x3bb4c0){return new BPromise(function(_0x90c78f,_0x4e7adf){var _0x3ecf6d=_0x3bb4c0||client;return _0x3ecf6d[_0xb324('0x20')](_0x44b819,_0x480793)[_0xb324('0x21')](function(_0x164486){logger['info'](_0xb324('0x22'),_0x2c55cd,_0xb324('0x23'));logger[_0xb324('0x24')]('ChatQueue,\x20%s,\x20%s,\x20%s',_0x2c55cd,_0xb324('0x23'),JSON[_0xb324('0x25')](_0x164486));if(_0x164486[_0xb324('0x26')]){if(_0x164486[_0xb324('0x26')][_0xb324('0x27')]===0x1f4){logger['error']('ChatQueue,\x20%s,\x20%s',_0x2c55cd,_0x164486['error'][_0xb324('0x28')]);return _0x4e7adf(_0x164486['error'][_0xb324('0x28')]);}logger[_0xb324('0x26')](_0xb324('0x22'),_0x2c55cd,_0x164486[_0xb324('0x26')]['message']);return _0x90c78f(_0x164486[_0xb324('0x26')]['message']);}else{logger[_0xb324('0x29')](_0xb324('0x22'),_0x2c55cd,_0xb324('0x23'));_0x90c78f(_0x164486[_0xb324('0x2a')][_0xb324('0x28')]);}})[_0xb324('0x2b')](function(_0x48ed1b){logger[_0xb324('0x26')](_0xb324('0x22'),_0x2c55cd,_0x48ed1b);_0x4e7adf(_0x48ed1b);});});}function respondWithStatusCode(_0x48703f,_0x45f107){_0x45f107=_0x45f107||0xcc;return function(_0x43bd50){if(_0x43bd50){return _0x48703f[_0xb324('0x2c')](_0x45f107);}return _0x48703f[_0xb324('0x2d')](_0x45f107)[_0xb324('0x2e')]();};}function respondWithResult(_0x56d28b,_0x43510b){_0x43510b=_0x43510b||0xc8;return function(_0x25162e){if(_0x25162e){return _0x56d28b[_0xb324('0x2d')](_0x43510b)[_0xb324('0x2f')](_0x25162e);}};}function respondWithFilteredResult(_0x1b6062,_0x2091c6){return function(_0x35f2b5){if(_0x35f2b5){var _0xd9df48=typeof _0x2091c6[_0xb324('0x30')]==='undefined'&&typeof _0x2091c6['limit']===_0xb324('0x31');var _0x187087=_0x35f2b5[_0xb324('0x32')];var _0x233e1c=_0xd9df48?0x0:_0x2091c6[_0xb324('0x30')];var _0x214fb1=_0xd9df48?_0x35f2b5['count']:_0x2091c6[_0xb324('0x30')]+_0x2091c6[_0xb324('0x33')];var _0x5c3b5a;if(_0x214fb1>=_0x187087){_0x214fb1=_0x187087;_0x5c3b5a=0xc8;}else{_0x5c3b5a=0xce;}_0x1b6062[_0xb324('0x2d')](_0x5c3b5a);return _0x1b6062['set'](_0xb324('0x34'),_0x233e1c+'-'+_0x214fb1+'/'+_0x187087)[_0xb324('0x2f')](_0x35f2b5);}return null;};}function patchUpdates(_0x4ae187){return function(_0x51464a){try{jsonpatch['apply'](_0x51464a,_0x4ae187,!![]);}catch(_0x1efffc){return BPromise['reject'](_0x1efffc);}return _0x51464a[_0xb324('0x35')]();};}function saveUpdates(_0xa6629e,_0x327527){return function(_0x2aa3d5){if(_0x2aa3d5){return _0x2aa3d5['update'](_0xa6629e)['then'](function(_0x427c86){return _0x427c86;});}return null;};}function removeEntity(_0x24c9c4,_0x528cab){return function(_0x4e10e1){if(_0x4e10e1){return _0x4e10e1[_0xb324('0x36')]()[_0xb324('0x21')](function(){var _0x3e1f36=_0x4e10e1['get']({'plain':!![]});var _0x25b375='ChatQueues';return db[_0xb324('0x37')][_0xb324('0x36')]({'where':{'type':_0x25b375,'resourceId':_0x3e1f36['id']}})[_0xb324('0x21')](function(){return _0x4e10e1;});})[_0xb324('0x21')](function(){_0x24c9c4[_0xb324('0x2d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2c6734,_0x1bac2e){return function(_0x17e2be){if(!_0x17e2be){_0x2c6734[_0xb324('0x2c')](0x194);}return _0x17e2be;};}function handleError(_0x2b0822,_0x3d9705){_0x3d9705=_0x3d9705||0x1f4;return function(_0xb08ee7){logger['error'](_0xb08ee7[_0xb324('0x38')]);if(_0xb08ee7['name']){delete _0xb08ee7['name'];}_0x2b0822[_0xb324('0x2d')](_0x3d9705)[_0xb324('0x39')](_0xb08ee7);};}exports[_0xb324('0x3a')]=function(_0x549228,_0x1ec8f4){var _0x4876f1={},_0x4c4923={},_0x15f298={'count':0x0,'rows':[]};var _0x57d925=_[_0xb324('0x3b')](db['ChatQueue'][_0xb324('0x3c')],function(_0x1c1467){return{'name':_0x1c1467[_0xb324('0x3d')],'type':_0x1c1467[_0xb324('0x3e')][_0xb324('0x3f')]};});_0x4c4923[_0xb324('0x40')]=_[_0xb324('0x3b')](_0x57d925,_0xb324('0x41'));_0x4c4923['query']=_[_0xb324('0x42')](_0x549228[_0xb324('0x43')]);_0x4c4923[_0xb324('0x44')]=_[_0xb324('0x45')](_0x4c4923[_0xb324('0x40')],_0x4c4923[_0xb324('0x43')]);_0x4876f1[_0xb324('0x46')]=_[_0xb324('0x45')](_0x4c4923[_0xb324('0x40')],qs[_0xb324('0x47')](_0x549228['query'][_0xb324('0x47')]));_0x4876f1[_0xb324('0x46')]=_0x4876f1[_0xb324('0x46')][_0xb324('0x48')]?_0x4876f1[_0xb324('0x46')]:_0x4c4923[_0xb324('0x40')];if(!_0x549228[_0xb324('0x43')]['hasOwnProperty'](_0xb324('0x49'))){_0x4876f1[_0xb324('0x33')]=qs['limit'](_0x549228[_0xb324('0x43')][_0xb324('0x33')]);_0x4876f1['offset']=qs[_0xb324('0x30')](_0x549228[_0xb324('0x43')][_0xb324('0x30')]);}_0x4876f1[_0xb324('0x4a')]=qs[_0xb324('0x4b')](_0x549228[_0xb324('0x43')][_0xb324('0x4b')]);_0x4876f1[_0xb324('0x4c')]=qs['filters'](_[_0xb324('0x4d')](_0x549228[_0xb324('0x43')],_0x4c4923[_0xb324('0x44')]),_0x57d925);if(_0x549228[_0xb324('0x43')][_0xb324('0x4e')]){_0x4876f1[_0xb324('0x4c')]=_[_0xb324('0x4f')](_0x4876f1[_0xb324('0x4c')],{'$or':_[_0xb324('0x3b')](_0x57d925,function(_0x525657){if(_0x525657['type']!=='VIRTUAL'){var _0x1b29e8={};_0x1b29e8[_0x525657['name']]={'$like':'%'+_0x549228['query'][_0xb324('0x4e')]+'%'};return _0x1b29e8;}})});}_0x4876f1=_['merge']({},_0x4876f1,_0x549228['options']);var _0xbf3221={'where':_0x4876f1[_0xb324('0x4c')]};return db[_0xb324('0x50')]['count'](_0xbf3221)[_0xb324('0x21')](function(_0x2ef424){_0x15f298[_0xb324('0x32')]=_0x2ef424;if(_0x549228['query'][_0xb324('0x51')]){_0x4876f1[_0xb324('0x52')]=[{'all':!![]}];}return db['ChatQueue']['findAll'](_0x4876f1);})[_0xb324('0x21')](function(_0x4d593c){_0x15f298[_0xb324('0x53')]=_0x4d593c;return _0x15f298;})[_0xb324('0x21')](respondWithFilteredResult(_0x1ec8f4,_0x4876f1))[_0xb324('0x2b')](handleError(_0x1ec8f4,null));};exports[_0xb324('0x54')]=function(_0x1b9f84,_0xe559b0){var _0x5d1272={'raw':!![],'where':{'id':_0x1b9f84[_0xb324('0x55')]['id']}},_0x1fdf65={};_0x1fdf65[_0xb324('0x40')]=_[_0xb324('0x42')](db['ChatQueue'][_0xb324('0x3c')]);_0x1fdf65[_0xb324('0x43')]=_['keys'](_0x1b9f84[_0xb324('0x43')]);_0x1fdf65['filters']=_['intersection'](_0x1fdf65[_0xb324('0x40')],_0x1fdf65[_0xb324('0x43')]);_0x5d1272[_0xb324('0x46')]=_[_0xb324('0x45')](_0x1fdf65[_0xb324('0x40')],qs[_0xb324('0x47')](_0x1b9f84['query'][_0xb324('0x47')]));_0x5d1272[_0xb324('0x46')]=_0x5d1272[_0xb324('0x46')][_0xb324('0x48')]?_0x5d1272[_0xb324('0x46')]:_0x1fdf65['model'];if(_0x1b9f84[_0xb324('0x43')][_0xb324('0x51')]){_0x5d1272['include']=[{'all':!![]}];}_0x5d1272=_[_0xb324('0x4f')]({},_0x5d1272,_0x1b9f84[_0xb324('0x56')]);return db[_0xb324('0x50')][_0xb324('0x57')](_0x5d1272)[_0xb324('0x21')](handleEntityNotFound(_0xe559b0,null))[_0xb324('0x21')](respondWithResult(_0xe559b0,null))[_0xb324('0x2b')](handleError(_0xe559b0,null));};exports[_0xb324('0x58')]=function(_0x5e16ac,_0x2272ab){return db[_0xb324('0x50')][_0xb324('0x58')](_0x5e16ac['body'],{})[_0xb324('0x21')](function(_0xd12e9c){var _0x4ee45e=_0x5e16ac[_0xb324('0x59')][_0xb324('0x5a')]({'plain':!![]});if(!_0x4ee45e)throw new Error(_0xb324('0x5b'));if(_0x4ee45e['role']===_0xb324('0x59')){var _0x33842a=_0xd12e9c[_0xb324('0x5a')]({'plain':!![]});var _0x1dca3b=_0xb324('0x5c');return db[_0xb324('0x5d')][_0xb324('0x57')]({'where':{'name':_0x1dca3b,'userProfileId':_0x4ee45e[_0xb324('0x5e')]},'raw':!![]})[_0xb324('0x21')](function(_0x3d17bb){if(_0x3d17bb&&_0x3d17bb['autoAssociation']===0x0){return db[_0xb324('0x37')][_0xb324('0x58')]({'name':_0x33842a['name'],'resourceId':_0x33842a['id'],'type':_0x3d17bb[_0xb324('0x41')],'sectionId':_0x3d17bb['id']},{})[_0xb324('0x21')](function(){return _0xd12e9c;});}else{return _0xd12e9c;}})[_0xb324('0x2b')](function(_0x561f0d){logger['error'](_0xb324('0x5f'),_0x561f0d);throw _0x561f0d;});}return _0xd12e9c;})[_0xb324('0x21')](respondWithResult(_0x2272ab,0xc9))[_0xb324('0x2b')](handleError(_0x2272ab,null));};exports['update']=function(_0x3f726d,_0x821c6e){if(_0x3f726d[_0xb324('0x60')]['id']){delete _0x3f726d[_0xb324('0x60')]['id'];}return db[_0xb324('0x50')]['find']({'where':{'id':_0x3f726d['params']['id']}})['then'](handleEntityNotFound(_0x821c6e,null))[_0xb324('0x21')](saveUpdates(_0x3f726d[_0xb324('0x60')],null))[_0xb324('0x21')](respondWithResult(_0x821c6e,null))[_0xb324('0x2b')](handleError(_0x821c6e,null));};exports[_0xb324('0x36')]=function(_0x50ec43,_0x2d4cee){return db[_0xb324('0x50')][_0xb324('0x57')]({'where':{'id':_0x50ec43[_0xb324('0x55')]['id']}})[_0xb324('0x21')](handleEntityNotFound(_0x2d4cee,null))['then'](removeEntity(_0x2d4cee,null))[_0xb324('0x2b')](handleError(_0x2d4cee,null));};exports['describe']=function(_0x540641,_0x1372e4){return db[_0xb324('0x50')]['describe']()[_0xb324('0x21')](respondWithResult(_0x1372e4,null))[_0xb324('0x2b')](handleError(_0x1372e4,null));};exports[_0xb324('0x61')]=function(_0x1638c0,_0x38a039,_0x2a8d0d){var _0x2de304={'raw':!![],'where':{}},_0x5d99cd={},_0x4ab954;return db['ChatQueue'][_0xb324('0x62')]({'where':{'id':_0x1638c0[_0xb324('0x55')]['id']}})['then'](handleEntityNotFound(_0x38a039,null))[_0xb324('0x21')](function(_0x5b7acb){if(_0x5b7acb){_0x4ab954=_0x5b7acb['get']({'plain':!![]});_0x5d99cd[_0xb324('0x40')]=_[_0xb324('0x42')](db[_0xb324('0x63')][_0xb324('0x3c')]);_0x5d99cd[_0xb324('0x43')]=_[_0xb324('0x42')](_0x1638c0['query']);_0x5d99cd[_0xb324('0x44')]=_[_0xb324('0x45')](_0x5d99cd[_0xb324('0x40')],_0x5d99cd[_0xb324('0x43')]);_0x2de304['attributes']=_['intersection'](_0x5d99cd[_0xb324('0x40')],qs['fields'](_0x1638c0[_0xb324('0x43')][_0xb324('0x47')]));_0x2de304[_0xb324('0x46')]=_0x2de304[_0xb324('0x46')]['length']?_0x2de304[_0xb324('0x46')]:_0x5d99cd['model'];if(!_0x1638c0[_0xb324('0x43')][_0xb324('0x64')](_0xb324('0x49'))){_0x2de304[_0xb324('0x33')]=qs[_0xb324('0x33')](_0x1638c0[_0xb324('0x43')]['limit']);_0x2de304[_0xb324('0x30')]=qs[_0xb324('0x30')](_0x1638c0[_0xb324('0x43')][_0xb324('0x30')]);}_0x2de304['order']=qs[_0xb324('0x4b')](_0x1638c0[_0xb324('0x43')][_0xb324('0x4b')]);_0x2de304[_0xb324('0x4c')]=qs[_0xb324('0x44')](_[_0xb324('0x4d')](_0x1638c0['query'],_0x5d99cd[_0xb324('0x44')]));_0x2de304[_0xb324('0x4c')][_0xb324('0x65')]=_0x5b7acb['id'];if(_0x1638c0[_0xb324('0x43')]['filter']){_0x2de304[_0xb324('0x4c')]=_['merge'](_0x2de304[_0xb324('0x4c')],{'$or':_['map'](_0x2de304[_0xb324('0x46')],function(_0x32263c){var _0x1eb1e8={};_0x1eb1e8[_0x32263c]={'$like':'%'+_0x1638c0[_0xb324('0x43')][_0xb324('0x4e')]+'%'};return _0x1eb1e8;})});}_0x2de304=_[_0xb324('0x4f')]({},_0x2de304,_0x1638c0[_0xb324('0x56')]);return db[_0xb324('0x63')]['findAll'](_0x2de304);}})[_0xb324('0x21')](function(_0x17507e){if(_0x17507e){return db['User'][_0xb324('0x66')]({'where':{'id':_['map'](_0x17507e,_0xb324('0x67')),'role':_0xb324('0x68')},'attributes':['id',_0xb324('0x41'),_0xb324('0x69'),_0xb324('0x6a'),_0xb324('0x6b')]});}})['then'](function(_0x2058c8){if(_0x2058c8){return{'count':_0x2058c8[_0xb324('0x32')],'rows':_[_0xb324('0x3b')](_0x2058c8[_0xb324('0x53')],function(_0x4684d4){return{'membername':_0x4684d4[_0xb324('0x41')],'UserId':_0x4684d4['id'],'queue_name':_0x4ab954[_0xb324('0x41')],'ChatQueueId':_0x4ab954['id'],'interface':util[_0xb324('0x6c')]('%s/%s','SIP',_0x4684d4[_0xb324('0x41')]),'penalty':0x0,'paused':_0x4684d4[_0xb324('0x69')],'createdAt':_0x4684d4['createdAt'],'updatedAt':_0x4684d4[_0xb324('0x6a')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x38a039,_0x2de304))['catch'](handleError(_0x38a039,null));};exports[_0xb324('0x6d')]=function(_0x2fe627,_0x4a7c3a,_0x96affd){var _0x25f5f3={};var _0x411162={};var _0xf71b12;var _0x5b6a68;return db[_0xb324('0x50')]['findOne']({'where':{'id':_0x2fe627[_0xb324('0x55')]['id']}})['then'](handleEntityNotFound(_0x4a7c3a,null))['then'](function(_0xa8ada7){if(_0xa8ada7){_0xf71b12=_0xa8ada7;_0x411162[_0xb324('0x40')]=_[_0xb324('0x42')](db[_0xb324('0x6e')][_0xb324('0x3c')]);_0x411162[_0xb324('0x43')]=_[_0xb324('0x42')](_0x2fe627[_0xb324('0x43')]);_0x411162[_0xb324('0x44')]=_[_0xb324('0x45')](_0x411162['model'],_0x411162[_0xb324('0x43')]);_0x25f5f3[_0xb324('0x46')]=_['intersection'](_0x411162['model'],qs[_0xb324('0x47')](_0x2fe627[_0xb324('0x43')][_0xb324('0x47')]));_0x25f5f3[_0xb324('0x46')]=_0x25f5f3[_0xb324('0x46')]['length']?_0x25f5f3[_0xb324('0x46')]:_0x411162[_0xb324('0x40')];_0x25f5f3[_0xb324('0x4a')]=qs['sort'](_0x2fe627[_0xb324('0x43')][_0xb324('0x4b')]);_0x25f5f3[_0xb324('0x4c')]=qs[_0xb324('0x44')](_['pick'](_0x2fe627['query'],_0x411162[_0xb324('0x44')]));if(_0x2fe627[_0xb324('0x43')][_0xb324('0x4e')]){_0x25f5f3['where']=_[_0xb324('0x4f')](_0x25f5f3[_0xb324('0x4c')],{'$or':_[_0xb324('0x3b')](_0x25f5f3[_0xb324('0x46')],function(_0x3d34d8){var _0x568895={};_0x568895[_0x3d34d8]={'$like':'%'+_0x2fe627[_0xb324('0x43')][_0xb324('0x4e')]+'%'};return _0x568895;})});}_0x25f5f3=_[_0xb324('0x4f')]({},_0x25f5f3,_0x2fe627['options']);return _0xf71b12['getTeams'](_0x25f5f3);}})['then'](function(_0x187673){if(_0x187673){_0x5b6a68=_0x187673[_0xb324('0x48')];if(!_0x2fe627[_0xb324('0x43')]['hasOwnProperty'](_0xb324('0x49'))){_0x25f5f3['limit']=qs[_0xb324('0x33')](_0x2fe627[_0xb324('0x43')][_0xb324('0x33')]);_0x25f5f3['offset']=qs[_0xb324('0x30')](_0x2fe627[_0xb324('0x43')][_0xb324('0x30')]);}return _0xf71b12['getTeams'](_0x25f5f3);}})[_0xb324('0x21')](function(_0x3ceaec){if(_0x3ceaec){return _0x3ceaec?{'count':_0x5b6a68,'rows':_0x3ceaec}:null;}})[_0xb324('0x21')](respondWithResult(_0x4a7c3a,null))[_0xb324('0x2b')](handleError(_0x4a7c3a,null));};exports[_0xb324('0x6f')]=function(_0x3a28de,_0x8cb9f8,_0x1bdfab){var _0x43874e=_0x3a28de[_0xb324('0x60')]['ids'];return db[_0xb324('0x6e')][_0xb324('0x70')]({'where':{'id':_0x43874e},'attributes':['id'],'include':[{'model':db[_0xb324('0x71')],'as':_0xb324('0x72'),'attributes':['id','name',_0xb324('0x73'),_0xb324('0x74'),_0xb324('0x75')],'raw':!![]}]})['then'](function(_0x32061c){if(_0x32061c){var _0x3a2a8f=_['flatMap'](_0x32061c,function(_0x819900){var _0x4aaea3=_0x819900['get']({'plain':!![]});return _0x4aaea3[_0xb324('0x72')];});return db[_0xb324('0x50')][_0xb324('0x57')]({'where':{'id':_0x3a28de[_0xb324('0x55')]['id']}})[_0xb324('0x21')](function(_0x99f5fd){return db[_0xb324('0x76')]['transaction'](function(_0x5a0b8e){return _0x99f5fd[_0xb324('0x6f')](_0x43874e,{'transaction':_0x5a0b8e})['then'](function(){return BPromise[_0xb324('0x77')](_0x3a2a8f,function(_0x12ac67){return db[_0xb324('0x63')][_0xb324('0x78')]({'where':{'UserId':_0x12ac67['id'],'ChatQueueId':_0x3a28de[_0xb324('0x55')]['id']},'transaction':_0x5a0b8e});});})[_0xb324('0x21')](function(){_0x3a2a8f['forEach'](function(_0x4e4094){socket[_0xb324('0x79')]('userChatQueue:save',{'UserId':_0x4e4094['id'],'ChatQueueId':_0x99f5fd['id']});});});});});}})['then'](respondWithStatusCode(_0x8cb9f8,null))[_0xb324('0x2b')](handleError(_0x8cb9f8,null));};exports[_0xb324('0x7a')]=function(_0x460762,_0x52d89b,_0x5b6d6a){return db['Team'][_0xb324('0x70')]({'where':{'id':_0x460762[_0xb324('0x43')][_0xb324('0x7b')]},'attributes':['id'],'include':[{'model':db[_0xb324('0x71')],'as':_0xb324('0x72'),'attributes':['id'],'raw':!![]}]})[_0xb324('0x21')](handleEntityNotFound(_0x52d89b,null))[_0xb324('0x21')](function(_0x4eb8fa){var _0x32da50=_[_0xb324('0x3b')](_0x4eb8fa,'id');var _0x79db15=[];var _0x4143d3=[];var _0x522a72=squel['select']();_0x522a72['field'](_0xb324('0x7c'))[_0xb324('0x7d')](_0xb324('0x7e'),'tq')[_0xb324('0x7f')](_0xb324('0x80'),'ut',_0xb324('0x81'))['where'](_0xb324('0x82'),_0x460762['params']['id']);for(var _0x50ab81=0x0;_0x50ab81<_0x4eb8fa[_0xb324('0x48')];_0x50ab81+=0x1){let _0x73ec39=_0x4eb8fa[_0x50ab81];for(var _0x482ba2=0x0;_0x482ba2<_0x73ec39[_0xb324('0x72')][_0xb324('0x48')];_0x482ba2+=0x1){let _0x1c8c89=_0x73ec39[_0xb324('0x72')][_0x482ba2];var _0x23418a=_0x522a72['clone']();_0x23418a[_0xb324('0x4c')](_0xb324('0x83'),_0x1c8c89['id']);_0x4143d3['push'](db[_0xb324('0x76')][_0xb324('0x43')](_0x23418a[_0xb324('0x84')](),{'type':db['sequelize']['QueryTypes'][_0xb324('0x85')]})['then'](function(_0x3013db){if(_0x3013db[_0xb324('0x48')]===0x1){return _0x1c8c89['id'];}else{var _0x1181de=_[_0xb324('0x86')](_[_0xb324('0x3b')](_0x3013db,_0xb324('0x87')),function(_0x5f9154){return _[_0xb324('0x88')](_0x32da50,_0x5f9154);});if(_0x1181de){return _0x1c8c89['id'];}}}));}}return BPromise[_0xb324('0x89')](_0x4143d3)[_0xb324('0x21')](function(_0x218344){_0x79db15=_(_0x79db15)[_0xb324('0x8a')](_0x218344)['compact']()[_0xb324('0x8b')]();return db[_0xb324('0x50')][_0xb324('0x57')]({'where':{'id':_0x460762['params']['id']}})[_0xb324('0x21')](function(_0x2dc8f3){return db[_0xb324('0x76')][_0xb324('0x8c')](function(_0x4fc396){return _0x2dc8f3[_0xb324('0x7a')](_0x460762['query'][_0xb324('0x7b')],{'transaction':_0x4fc396})[_0xb324('0x21')](function(){if(!_['isEmpty'](_0x79db15)){return _0x2dc8f3[_0xb324('0x8d')](_0x79db15,{'transaction':_0x4fc396});}})[_0xb324('0x21')](function(){_0x79db15[_0xb324('0x8e')](function(_0x3d8f50){socket[_0xb324('0x79')](_0xb324('0x8f'),{'UserId':_0x3d8f50,'ChatQueueId':_0x2dc8f3['id']});});});});});});})[_0xb324('0x21')](respondWithStatusCode(_0x52d89b,null))[_0xb324('0x2b')](handleError(_0x52d89b,null));};exports[_0xb324('0x90')]=function(_0x457210,_0x5f0e46,_0x43ac6c){return db[_0xb324('0x50')][_0xb324('0x57')]({'where':{'id':_0x457210[_0xb324('0x55')]['id']}})[_0xb324('0x21')](handleEntityNotFound(_0x5f0e46,null))[_0xb324('0x21')](function(_0x1a5dc0){if(_0x1a5dc0){return _0x1a5dc0[_0xb324('0x90')](_0x457210[_0xb324('0x60')][_0xb324('0x7b')],_[_0xb324('0x91')](_0x457210['body'],['ids','id'])||{})[_0xb324('0x92')](function(_0x506161){for(var _0x242856=0x0;_0x242856<_0x457210[_0xb324('0x60')][_0xb324('0x7b')][_0xb324('0x48')];_0x242856+=0x1){socket[_0xb324('0x79')](_0xb324('0x93'),{'UserId':Number(_0x457210[_0xb324('0x60')][_0xb324('0x7b')][_0x242856]),'ChatQueueId':Number(_0x457210[_0xb324('0x55')]['id'])});}return _0x506161;});}})['then'](respondWithResult(_0x5f0e46,null))[_0xb324('0x2b')](handleError(_0x5f0e46,null));};exports[_0xb324('0x8d')]=function(_0xef4b4a,_0x263daa,_0x2cf777){return db[_0xb324('0x50')][_0xb324('0x57')]({'where':{'id':_0xef4b4a[_0xb324('0x55')]['id']}})[_0xb324('0x21')](handleEntityNotFound(_0x263daa,null))['then'](function(_0x4f2a06){if(_0x4f2a06){return _0x4f2a06['removeAgents'](_0xef4b4a[_0xb324('0x43')][_0xb324('0x7b')])[_0xb324('0x21')](function(){if(_[_0xb324('0x94')](_0xef4b4a['query']['ids'])){for(var _0xa3295b=0x0;_0xa3295b<_0xef4b4a[_0xb324('0x43')][_0xb324('0x7b')][_0xb324('0x48')];_0xa3295b+=0x1){socket['emit'](_0xb324('0x8f'),{'UserId':Number(_0xef4b4a[_0xb324('0x43')][_0xb324('0x7b')][_0xa3295b]),'ChatQueueId':Number(_0xef4b4a[_0xb324('0x55')]['id'])});}}else{socket[_0xb324('0x79')](_0xb324('0x8f'),{'UserId':Number(_0xef4b4a['query'][_0xb324('0x7b')]),'ChatQueueId':Number(_0xef4b4a[_0xb324('0x55')]['id'])});}});}})[_0xb324('0x21')](respondWithStatusCode(_0x263daa,null))[_0xb324('0x2b')](handleError(_0x263daa,null));};exports[_0xb324('0x95')]=function(_0x294ede,_0xf1dc9,_0x105205){var _0x726128={};var _0x9dd867={};var _0xc9b7bc;var _0xab84dd;return db['ChatQueue'][_0xb324('0x62')]({'where':{'id':_0x294ede[_0xb324('0x55')]['id']}})[_0xb324('0x21')](handleEntityNotFound(_0xf1dc9,null))[_0xb324('0x21')](function(_0x19bad1){if(_0x19bad1){_0xc9b7bc=_0x19bad1;_0x9dd867['model']=_[_0xb324('0x42')](db['User'][_0xb324('0x3c')]);_0x9dd867['query']=_[_0xb324('0x42')](_0x294ede[_0xb324('0x43')]);_0x9dd867['filters']=_[_0xb324('0x45')](_0x9dd867[_0xb324('0x40')],_0x9dd867[_0xb324('0x43')]);_0x726128[_0xb324('0x46')]=_[_0xb324('0x45')](_0x9dd867[_0xb324('0x40')],qs[_0xb324('0x47')](_0x294ede[_0xb324('0x43')][_0xb324('0x47')]));_0x726128[_0xb324('0x46')]=_0x726128[_0xb324('0x46')][_0xb324('0x48')]?_0x726128[_0xb324('0x46')]:_0x9dd867[_0xb324('0x40')];_0x726128[_0xb324('0x4a')]=qs['sort'](_0x294ede[_0xb324('0x43')][_0xb324('0x4b')]);_0x726128['where']=qs[_0xb324('0x44')](_[_0xb324('0x4d')](_0x294ede[_0xb324('0x43')],_0x9dd867[_0xb324('0x44')]));if(_0x294ede['query'][_0xb324('0x4e')]){_0x726128[_0xb324('0x4c')]=_['merge'](_0x726128['where'],{'$or':_[_0xb324('0x3b')](_0x726128[_0xb324('0x46')],function(_0xec190b){var _0x1025ec={};_0x1025ec[_0xec190b]={'$like':'%'+_0x294ede[_0xb324('0x43')]['filter']+'%'};return _0x1025ec;})});}_0x726128=_[_0xb324('0x4f')]({},_0x726128,_0x294ede[_0xb324('0x56')]);return _0xc9b7bc[_0xb324('0x95')](_0x726128);}})[_0xb324('0x21')](function(_0x5aa977){if(_0x5aa977){_0xab84dd=_0x5aa977[_0xb324('0x48')];if(!_0x294ede[_0xb324('0x43')][_0xb324('0x64')]('nolimit')){_0x726128['limit']=qs[_0xb324('0x33')](_0x294ede[_0xb324('0x43')][_0xb324('0x33')]);_0x726128[_0xb324('0x30')]=qs[_0xb324('0x30')](_0x294ede[_0xb324('0x43')][_0xb324('0x30')]);}return _0xc9b7bc[_0xb324('0x95')](_0x726128);}})[_0xb324('0x21')](function(_0x59c0cf){if(_0x59c0cf){return _0x59c0cf?{'count':_0xab84dd,'rows':_0x59c0cf}:null;}})[_0xb324('0x21')](respondWithResult(_0xf1dc9,null))[_0xb324('0x2b')](handleError(_0xf1dc9,null));};
\ No newline at end of file
index 9bcd2ed..62c8754 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x167b=['hasOwnProperty','exports','events','../../mysqldb','ChatQueue','setMaxListeners','save','remove','emit'];(function(_0x36f97a,_0x177ad2){var _0x2087fc=function(_0x2ebdc8){while(--_0x2ebdc8){_0x36f97a['push'](_0x36f97a['shift']());}};_0x2087fc(++_0x177ad2);}(_0x167b,0x1bb));var _0xb167=function(_0x352726,_0x5a6895){_0x352726=_0x352726-0x0;var _0x12607d=_0x167b[_0x352726];return _0x12607d;};'use strict';var EventEmitter=require(_0xb167('0x0'));var ChatQueue=require(_0xb167('0x1'))['db'][_0xb167('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0xb167('0x3')](0x0);var events={'afterCreate':_0xb167('0x4'),'afterUpdate':'update','afterDestroy':_0xb167('0x5')};function emitEvent(_0x234492){return function(_0x58418a,_0x4e3381,_0x45d650){ChatQueueEvents[_0xb167('0x6')](_0x234492+':'+_0x58418a['id'],_0x58418a);ChatQueueEvents[_0xb167('0x6')](_0x234492,_0x58418a);_0x45d650(null);};}for(var e in events){if(events[_0xb167('0x7')](e)){var event=events[e];ChatQueue['hook'](e,emitEvent(event));}}module[_0xb167('0x8')]=ChatQueueEvents;
\ No newline at end of file
+var _0x6dd0=['emit','hasOwnProperty','exports','events','../../mysqldb','ChatQueue','setMaxListeners','save','update'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0x6dd0,0xae));var _0x06dd=function(_0x3a5856,_0xaefeff){_0x3a5856=_0x3a5856-0x0;var _0x267816=_0x6dd0[_0x3a5856];return _0x267816;};'use strict';var EventEmitter=require(_0x06dd('0x0'));var ChatQueue=require(_0x06dd('0x1'))['db'][_0x06dd('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x06dd('0x3')](0x0);var events={'afterCreate':_0x06dd('0x4'),'afterUpdate':_0x06dd('0x5'),'afterDestroy':'remove'};function emitEvent(_0x53f3da){return function(_0x1e9379,_0x41b4d5,_0x10bfb5){ChatQueueEvents[_0x06dd('0x6')](_0x53f3da+':'+_0x1e9379['id'],_0x1e9379);ChatQueueEvents[_0x06dd('0x6')](_0x53f3da,_0x1e9379);_0x10bfb5(null);};}for(var e in events){if(events[_0x06dd('0x7')](e)){var event=events[e];ChatQueue['hook'](e,emitEvent(event));}}module[_0x06dd('0x8')]=ChatQueueEvents;
\ No newline at end of file
index cdb312d..2367bf6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfed2=['moment','bluebird','path','rimraf','../../config/environment','./chatQueue.attributes','exports','define','chat_queues','util','../../config/logger','api'];(function(_0x4176a7,_0x2e88f2){var _0x8dd6b=function(_0xc68823){while(--_0xc68823){_0x4176a7['push'](_0x4176a7['shift']());}};_0x8dd6b(++_0x2e88f2);}(_0xfed2,0x135));var _0x2fed=function(_0x39b6f7,_0x23c559){_0x39b6f7=_0x39b6f7-0x0;var _0x254b9b=_0xfed2[_0x39b6f7];return _0x254b9b;};'use strict';var _=require('lodash');var util=require(_0x2fed('0x0'));var logger=require(_0x2fed('0x1'))(_0x2fed('0x2'));var moment=require(_0x2fed('0x3'));var BPromise=require(_0x2fed('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2fed('0x5'));var rimraf=require(_0x2fed('0x6'));var config=require(_0x2fed('0x7'));var attributes=require(_0x2fed('0x8'));module[_0x2fed('0x9')]=function(_0xe15483,_0x2488d1){return _0xe15483[_0x2fed('0xa')]('ChatQueue',attributes,{'tableName':_0x2fed('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8da2=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatQueue.attributes','exports','define','ChatQueue','chat_queues','lodash','util','../../config/logger'];(function(_0x1b7add,_0x4a67cb){var _0x5ad180=function(_0x5556ae){while(--_0x5556ae){_0x1b7add['push'](_0x1b7add['shift']());}};_0x5ad180(++_0x4a67cb);}(_0x8da2,0x75));var _0x28da=function(_0x316ba4,_0x19d4cb){_0x316ba4=_0x316ba4-0x0;var _0x129152=_0x8da2[_0x316ba4];return _0x129152;};'use strict';var _=require(_0x28da('0x0'));var util=require(_0x28da('0x1'));var logger=require(_0x28da('0x2'))(_0x28da('0x3'));var moment=require(_0x28da('0x4'));var BPromise=require(_0x28da('0x5'));var rp=require(_0x28da('0x6'));var fs=require('fs');var path=require(_0x28da('0x7'));var rimraf=require(_0x28da('0x8'));var config=require(_0x28da('0x9'));var attributes=require(_0x28da('0xa'));module[_0x28da('0xb')]=function(_0x4292fd,_0x45844b){return _0x4292fd[_0x28da('0xc')](_0x28da('0xd'),attributes,{'tableName':_0x28da('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0ede894..40bd6dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb3e=['defaults','localhost','socket.io-emitter','info','ChatQueue,\x20%s,\x20%s','debug','ChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','result','catch','ChatQueue','findAll','options','where','attributes','limit','include','map','model','GetChatQueue','ShowChatQueue','find','raw','then','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','http','redis'];(function(_0x37f064,_0x2eb222){var _0x212557=function(_0x5139c3){while(--_0x5139c3){_0x37f064['push'](_0x37f064['shift']());}};_0x212557(++_0x2eb222);}(_0xeb3e,0x106));var _0xeeb3=function(_0x40117c,_0x38efc5){_0x40117c=_0x40117c-0x0;var _0x4f805b=_0xeb3e[_0x40117c];return _0x4f805b;};'use strict';var _=require('lodash');var util=require(_0xeeb3('0x0'));var moment=require(_0xeeb3('0x1'));var BPromise=require(_0xeeb3('0x2'));var rs=require(_0xeeb3('0x3'));var fs=require('fs');var Redis=require(_0xeeb3('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xeeb3('0x5'));var logger=require(_0xeeb3('0x6'))(_0xeeb3('0x7'));var config=require('../../config/environment');var jayson=require(_0xeeb3('0x8'));var client=jayson['client'][_0xeeb3('0x9')]({'port':0x232a});config[_0xeeb3('0xa')]=_[_0xeeb3('0xb')](config[_0xeeb3('0xa')],{'host':_0xeeb3('0xc'),'port':0x18eb});var socket=require(_0xeeb3('0xd'))(new Redis(config[_0xeeb3('0xa')]));require('./chatQueue.socket')['register'](socket);function respondWithRpcPromise(_0x289444,_0x3a9542,_0x2d0b19){return new BPromise(function(_0x5b885a,_0x3e8d18){return client['request'](_0x289444,_0x2d0b19)['then'](function(_0x79d78a){logger[_0xeeb3('0xe')](_0xeeb3('0xf'),_0x3a9542,'request\x20sent');logger[_0xeeb3('0x10')](_0xeeb3('0x11'),_0x3a9542,_0xeeb3('0x12'),JSON[_0xeeb3('0x13')](_0x79d78a));if(_0x79d78a['error']){if(_0x79d78a['error'][_0xeeb3('0x14')]===0x1f4){logger[_0xeeb3('0x15')](_0xeeb3('0xf'),_0x3a9542,_0x79d78a[_0xeeb3('0x15')][_0xeeb3('0x16')]);return _0x3e8d18(_0x79d78a[_0xeeb3('0x15')][_0xeeb3('0x16')]);}logger[_0xeeb3('0x15')](_0xeeb3('0xf'),_0x3a9542,_0x79d78a[_0xeeb3('0x15')][_0xeeb3('0x16')]);return _0x5b885a(_0x79d78a['error'][_0xeeb3('0x16')]);}else{logger[_0xeeb3('0xe')](_0xeeb3('0xf'),_0x3a9542,_0xeeb3('0x12'));_0x5b885a(_0x79d78a[_0xeeb3('0x17')][_0xeeb3('0x16')]);}})[_0xeeb3('0x18')](function(_0x5132da){logger['error']('ChatQueue,\x20%s,\x20%s',_0x3a9542,_0x5132da);_0x3e8d18(_0x5132da);});});}exports['GetChatQueue']=function(_0x14d678){var _0x461208=this;return new Promise(function(_0x46cd86,_0xc1727){return db[_0xeeb3('0x19')][_0xeeb3('0x1a')]({'raw':_0x14d678[_0xeeb3('0x1b')]?_0x14d678['options']['raw']===undefined?!![]:![]:!![],'where':_0x14d678[_0xeeb3('0x1b')]?_0x14d678['options'][_0xeeb3('0x1c')]||null:null,'attributes':_0x14d678[_0xeeb3('0x1b')]?_0x14d678[_0xeeb3('0x1b')][_0xeeb3('0x1d')]||null:null,'limit':_0x14d678['options']?_0x14d678[_0xeeb3('0x1b')][_0xeeb3('0x1e')]||null:null,'include':_0x14d678['options']?_0x14d678[_0xeeb3('0x1b')][_0xeeb3('0x1f')]?_['map'](_0x14d678['options'][_0xeeb3('0x1f')],function(_0x3ba9fc){return{'model':db[_0x3ba9fc['model']],'as':_0x3ba9fc['as'],'attributes':_0x3ba9fc[_0xeeb3('0x1d')],'include':_0x3ba9fc[_0xeeb3('0x1f')]?_['map'](_0x3ba9fc[_0xeeb3('0x1f')],function(_0x5b3a0d){return{'model':db[_0x5b3a0d['model']],'as':_0x5b3a0d['as'],'attributes':_0x5b3a0d[_0xeeb3('0x1d')],'include':_0x5b3a0d[_0xeeb3('0x1f')]?_[_0xeeb3('0x20')](_0x5b3a0d[_0xeeb3('0x1f')],function(_0x468076){return{'model':db[_0x468076[_0xeeb3('0x21')]],'as':_0x468076['as'],'attributes':_0x468076[_0xeeb3('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3eeb79){logger[_0xeeb3('0xe')](_0xeeb3('0x22'),_0x14d678);logger[_0xeeb3('0x10')](_0xeeb3('0x22'),_0x14d678,JSON['stringify'](_0x3eeb79));_0x46cd86(_0x3eeb79);})[_0xeeb3('0x18')](function(_0x3ddd2f){logger[_0xeeb3('0x15')]('GetChatQueue',_0x3ddd2f[_0xeeb3('0x16')],_0x14d678);_0xc1727(_0x461208[_0xeeb3('0x15')](0x1f4,_0x3ddd2f[_0xeeb3('0x16')]));});});};exports[_0xeeb3('0x23')]=function(_0x2b7e63){var _0x330c2d=this;return new Promise(function(_0x46c0ca,_0x2a0167){return db['ChatQueue'][_0xeeb3('0x24')]({'raw':_0x2b7e63[_0xeeb3('0x1b')]?_0x2b7e63[_0xeeb3('0x1b')][_0xeeb3('0x25')]===undefined?!![]:![]:!![],'where':_0x2b7e63[_0xeeb3('0x1b')]?_0x2b7e63['options'][_0xeeb3('0x1c')]||null:null,'attributes':_0x2b7e63[_0xeeb3('0x1b')]?_0x2b7e63[_0xeeb3('0x1b')]['attributes']||null:null,'include':_0x2b7e63[_0xeeb3('0x1b')]?_0x2b7e63[_0xeeb3('0x1b')]['include']?_[_0xeeb3('0x20')](_0x2b7e63[_0xeeb3('0x1b')][_0xeeb3('0x1f')],function(_0x240fe8){return{'model':db[_0x240fe8[_0xeeb3('0x21')]],'as':_0x240fe8['as'],'attributes':_0x240fe8[_0xeeb3('0x1d')],'include':_0x240fe8[_0xeeb3('0x1f')]?_[_0xeeb3('0x20')](_0x240fe8[_0xeeb3('0x1f')],function(_0x4e5f06){return{'model':db[_0x4e5f06['model']],'as':_0x4e5f06['as'],'attributes':_0x4e5f06[_0xeeb3('0x1d')],'include':_0x4e5f06['include']?_[_0xeeb3('0x20')](_0x4e5f06[_0xeeb3('0x1f')],function(_0x1add39){return{'model':db[_0x1add39[_0xeeb3('0x21')]],'as':_0x1add39['as'],'attributes':_0x1add39[_0xeeb3('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xeeb3('0x26')](function(_0x20b694){logger[_0xeeb3('0xe')]('ShowChatQueue',_0x2b7e63);logger['debug'](_0xeeb3('0x23'),_0x2b7e63,JSON[_0xeeb3('0x13')](_0x20b694));_0x46c0ca(_0x20b694);})[_0xeeb3('0x18')](function(_0x267382){logger[_0xeeb3('0x15')](_0xeeb3('0x23'),_0x267382[_0xeeb3('0x16')],_0x2b7e63);_0x2a0167(_0x330c2d['error'](0x1f4,_0x267382['message']));});});};
\ No newline at end of file
+var _0xbc87=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','redis','socket.io-emitter','./chatQueue.socket','register','request','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetChatQueue','ChatQueue','findAll','options','raw','where','attributes','limit','include','model','map','ShowChatQueue','find','then','lodash'];(function(_0x30cd7e,_0x4db10a){var _0x462a02=function(_0x157d81){while(--_0x157d81){_0x30cd7e['push'](_0x30cd7e['shift']());}};_0x462a02(++_0x4db10a);}(_0xbc87,0x1cd));var _0x7bc8=function(_0x226b60,_0x4fac70){_0x226b60=_0x226b60-0x0;var _0x3d566e=_0xbc87[_0x226b60];return _0x3d566e;};'use strict';var _=require(_0x7bc8('0x0'));var util=require(_0x7bc8('0x1'));var moment=require('moment');var BPromise=require(_0x7bc8('0x2'));var rs=require(_0x7bc8('0x3'));var fs=require('fs');var Redis=require(_0x7bc8('0x4'));var db=require(_0x7bc8('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x7bc8('0x6'))(_0x7bc8('0x7'));var config=require(_0x7bc8('0x8'));var jayson=require(_0x7bc8('0x9'));var client=jayson[_0x7bc8('0xa')]['http']({'port':0x232a});config['redis']=_[_0x7bc8('0xb')](config[_0x7bc8('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x7bc8('0xd'))(new Redis(config['redis']));require(_0x7bc8('0xe'))[_0x7bc8('0xf')](socket);function respondWithRpcPromise(_0x4898d1,_0x451288,_0x25456a){return new BPromise(function(_0x331fde,_0x1b6b16){return client[_0x7bc8('0x10')](_0x4898d1,_0x25456a)['then'](function(_0xb08fdc){logger[_0x7bc8('0x11')](_0x7bc8('0x12'),_0x451288,_0x7bc8('0x13'));logger[_0x7bc8('0x14')](_0x7bc8('0x15'),_0x451288,_0x7bc8('0x13'),JSON[_0x7bc8('0x16')](_0xb08fdc));if(_0xb08fdc[_0x7bc8('0x17')]){if(_0xb08fdc[_0x7bc8('0x17')][_0x7bc8('0x18')]===0x1f4){logger['error'](_0x7bc8('0x12'),_0x451288,_0xb08fdc[_0x7bc8('0x17')][_0x7bc8('0x19')]);return _0x1b6b16(_0xb08fdc[_0x7bc8('0x17')]['message']);}logger[_0x7bc8('0x17')]('ChatQueue,\x20%s,\x20%s',_0x451288,_0xb08fdc[_0x7bc8('0x17')][_0x7bc8('0x19')]);return _0x331fde(_0xb08fdc[_0x7bc8('0x17')][_0x7bc8('0x19')]);}else{logger[_0x7bc8('0x11')]('ChatQueue,\x20%s,\x20%s',_0x451288,_0x7bc8('0x13'));_0x331fde(_0xb08fdc[_0x7bc8('0x1a')][_0x7bc8('0x19')]);}})[_0x7bc8('0x1b')](function(_0x28fbf8){logger[_0x7bc8('0x17')](_0x7bc8('0x12'),_0x451288,_0x28fbf8);_0x1b6b16(_0x28fbf8);});});}exports[_0x7bc8('0x1c')]=function(_0x5cc4af){var _0x1f4329=this;return new Promise(function(_0x5d0791,_0x3a3e51){return db[_0x7bc8('0x1d')][_0x7bc8('0x1e')]({'raw':_0x5cc4af[_0x7bc8('0x1f')]?_0x5cc4af[_0x7bc8('0x1f')][_0x7bc8('0x20')]===undefined?!![]:![]:!![],'where':_0x5cc4af['options']?_0x5cc4af[_0x7bc8('0x1f')][_0x7bc8('0x21')]||null:null,'attributes':_0x5cc4af[_0x7bc8('0x1f')]?_0x5cc4af[_0x7bc8('0x1f')][_0x7bc8('0x22')]||null:null,'limit':_0x5cc4af[_0x7bc8('0x1f')]?_0x5cc4af[_0x7bc8('0x1f')][_0x7bc8('0x23')]||null:null,'include':_0x5cc4af[_0x7bc8('0x1f')]?_0x5cc4af[_0x7bc8('0x1f')][_0x7bc8('0x24')]?_['map'](_0x5cc4af[_0x7bc8('0x1f')][_0x7bc8('0x24')],function(_0x2133eb){return{'model':db[_0x2133eb[_0x7bc8('0x25')]],'as':_0x2133eb['as'],'attributes':_0x2133eb['attributes'],'include':_0x2133eb['include']?_['map'](_0x2133eb[_0x7bc8('0x24')],function(_0x402f17){return{'model':db[_0x402f17[_0x7bc8('0x25')]],'as':_0x402f17['as'],'attributes':_0x402f17[_0x7bc8('0x22')],'include':_0x402f17['include']?_[_0x7bc8('0x26')](_0x402f17[_0x7bc8('0x24')],function(_0x212515){return{'model':db[_0x212515['model']],'as':_0x212515['as'],'attributes':_0x212515[_0x7bc8('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x104a2f){logger[_0x7bc8('0x11')](_0x7bc8('0x1c'),_0x5cc4af);logger[_0x7bc8('0x14')](_0x7bc8('0x1c'),_0x5cc4af,JSON[_0x7bc8('0x16')](_0x104a2f));_0x5d0791(_0x104a2f);})[_0x7bc8('0x1b')](function(_0xbe46e2){logger[_0x7bc8('0x17')](_0x7bc8('0x1c'),_0xbe46e2[_0x7bc8('0x19')],_0x5cc4af);_0x3a3e51(_0x1f4329[_0x7bc8('0x17')](0x1f4,_0xbe46e2[_0x7bc8('0x19')]));});});};exports[_0x7bc8('0x27')]=function(_0x56496d){var _0x27cd9f=this;return new Promise(function(_0xca3acd,_0x29c709){return db['ChatQueue'][_0x7bc8('0x28')]({'raw':_0x56496d['options']?_0x56496d[_0x7bc8('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x56496d[_0x7bc8('0x1f')]?_0x56496d[_0x7bc8('0x1f')][_0x7bc8('0x21')]||null:null,'attributes':_0x56496d[_0x7bc8('0x1f')]?_0x56496d[_0x7bc8('0x1f')]['attributes']||null:null,'include':_0x56496d[_0x7bc8('0x1f')]?_0x56496d[_0x7bc8('0x1f')][_0x7bc8('0x24')]?_[_0x7bc8('0x26')](_0x56496d[_0x7bc8('0x1f')][_0x7bc8('0x24')],function(_0x2fa4db){return{'model':db[_0x2fa4db[_0x7bc8('0x25')]],'as':_0x2fa4db['as'],'attributes':_0x2fa4db[_0x7bc8('0x22')],'include':_0x2fa4db[_0x7bc8('0x24')]?_[_0x7bc8('0x26')](_0x2fa4db[_0x7bc8('0x24')],function(_0x16b5eb){return{'model':db[_0x16b5eb[_0x7bc8('0x25')]],'as':_0x16b5eb['as'],'attributes':_0x16b5eb['attributes'],'include':_0x16b5eb[_0x7bc8('0x24')]?_[_0x7bc8('0x26')](_0x16b5eb[_0x7bc8('0x24')],function(_0x359b5c){return{'model':db[_0x359b5c[_0x7bc8('0x25')]],'as':_0x359b5c['as'],'attributes':_0x359b5c[_0x7bc8('0x22')]};}):[]};}):[]};}):[]:[]})[_0x7bc8('0x29')](function(_0x188721){logger[_0x7bc8('0x11')](_0x7bc8('0x27'),_0x56496d);logger[_0x7bc8('0x14')](_0x7bc8('0x27'),_0x56496d,JSON[_0x7bc8('0x16')](_0x188721));_0xca3acd(_0x188721);})[_0x7bc8('0x1b')](function(_0x191a5e){logger[_0x7bc8('0x17')]('ShowChatQueue',_0x191a5e['message'],_0x56496d);_0x29c709(_0x27cd9f[_0x7bc8('0x17')](0x1f4,_0x191a5e[_0x7bc8('0x19')]));});});};
\ No newline at end of file
index dce06b5..1dc5ec0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x702d=['remove','update','emit','register','length','./chatQueue.events','save'];(function(_0xadd166,_0x40fca4){var _0x377bcc=function(_0x42ad49){while(--_0x42ad49){_0xadd166['push'](_0xadd166['shift']());}};_0x377bcc(++_0x40fca4);}(_0x702d,0x147));var _0xd702=function(_0x532840,_0x30f458){_0x532840=_0x532840-0x0;var _0x42aa54=_0x702d[_0x532840];return _0x42aa54;};'use strict';var ChatQueueEvents=require(_0xd702('0x0'));var events=[_0xd702('0x1'),_0xd702('0x2'),_0xd702('0x3')];function createListener(_0x37ed5c,_0x5c2b9e){return function(_0x20c11a){_0x5c2b9e[_0xd702('0x4')](_0x37ed5c,_0x20c11a);};}function removeListener(_0x27b260,_0x1c5a32){return function(){ChatQueueEvents['removeListener'](_0x27b260,_0x1c5a32);};}exports[_0xd702('0x5')]=function(_0x544e94){for(var _0x1aecfc=0x0,_0x3a2c03=events[_0xd702('0x6')];_0x1aecfc<_0x3a2c03;_0x1aecfc++){var _0x5af246=events[_0x1aecfc];var _0x12bb75=createListener('chatQueue:'+_0x5af246,_0x544e94);ChatQueueEvents['on'](_0x5af246,_0x12bb75);}};
\ No newline at end of file
+var _0x72b1=['register','length','./chatQueue.events','remove','update','emit','removeListener'];(function(_0x13ea00,_0x12f610){var _0x1f7347=function(_0x34ae63){while(--_0x34ae63){_0x13ea00['push'](_0x13ea00['shift']());}};_0x1f7347(++_0x12f610);}(_0x72b1,0x16e));var _0x172b=function(_0x102b25,_0x2e752a){_0x102b25=_0x102b25-0x0;var _0x13fe61=_0x72b1[_0x102b25];return _0x13fe61;};'use strict';var ChatQueueEvents=require(_0x172b('0x0'));var events=['save',_0x172b('0x1'),_0x172b('0x2')];function createListener(_0x42b795,_0x18fd16){return function(_0x23bc7a){_0x18fd16[_0x172b('0x3')](_0x42b795,_0x23bc7a);};}function removeListener(_0x2c1d6e,_0x558038){return function(){ChatQueueEvents[_0x172b('0x4')](_0x2c1d6e,_0x558038);};}exports[_0x172b('0x5')]=function(_0x475fd6){for(var _0x222624=0x0,_0x571994=events[_0x172b('0x6')];_0x222624<_0x571994;_0x222624++){var _0x517363=events[_0x222624];var _0x1f98e9=createListener('chatQueue:'+_0x517363,_0x475fd6);ChatQueueEvents['on'](_0x517363,_0x1f98e9);}};
\ No newline at end of file
index aedf71c..718ca7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','update','delete','removeTeams','removeAgents','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueue.controller','get','isAuthenticated','/describe','describe','/:id','show'];(function(_0x3ae753,_0x2bbb6c){var _0x706dc=function(_0xc9f171){while(--_0xc9f171){_0x3ae753['push'](_0x3ae753['shift']());}};_0x706dc(++_0x2bbb6c);}(_0x814b,0x1a2));var _0xb814=function(_0x21de89,_0x367053){_0x21de89=_0x21de89-0x0;var _0x290b7e=_0x814b[_0x21de89];return _0x290b7e;};'use strict';var multer=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var path=require(_0xb814('0x2'));var timeout=require(_0xb814('0x3'));var express=require(_0xb814('0x4'));var router=express[_0xb814('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb814('0x6'));var interaction=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var controller=require(_0xb814('0x9'));router[_0xb814('0xa')]('/',auth[_0xb814('0xb')](),controller['index']);router[_0xb814('0xa')](_0xb814('0xc'),auth['isAuthenticated'](),controller[_0xb814('0xd')]);router[_0xb814('0xa')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0xf')]);router[_0xb814('0xa')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x11')]);router[_0xb814('0xa')](_0xb814('0x12'),auth['isAuthenticated'](),controller[_0xb814('0x13')]);router['get'](_0xb814('0x14'),auth[_0xb814('0xb')](),controller[_0xb814('0x15')]);router[_0xb814('0x16')]('/',auth[_0xb814('0xb')](),controller[_0xb814('0x17')]);router[_0xb814('0x16')](_0xb814('0x12'),auth[_0xb814('0xb')](),controller[_0xb814('0x18')]);router[_0xb814('0x16')](_0xb814('0x14'),auth[_0xb814('0xb')](),controller[_0xb814('0x19')]);router[_0xb814('0x1a')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0x1b')]);router[_0xb814('0x1c')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller['destroy']);router[_0xb814('0x1c')]('/:id/teams',auth[_0xb814('0xb')](),controller[_0xb814('0x1d')]);router['delete']('/:id/users',auth['isAuthenticated'](),controller[_0xb814('0x1e')]);module['exports']=router;
\ No newline at end of file
+var _0xe14b=['/describe','show','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','/:id','delete','destroy','removeAgents','exports','multer','util','express','Router','../../components/auth/service','./chatQueue.controller','get','isAuthenticated','index'];(function(_0x5a5216,_0x58f544){var _0x1aa577=function(_0x1e0781){while(--_0x1e0781){_0x5a5216['push'](_0x5a5216['shift']());}};_0x1aa577(++_0x58f544);}(_0xe14b,0x93));var _0xbe14=function(_0x5eee08,_0x301c49){_0x5eee08=_0x5eee08-0x0;var _0xe7e906=_0xe14b[_0x5eee08];return _0xe7e906;};'use strict';var multer=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xbe14('0x2'));var router=express[_0xbe14('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xbe14('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xbe14('0x5'));router[_0xbe14('0x6')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x8')]);router[_0xbe14('0x6')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['describe']);router['get']('/:id',auth[_0xbe14('0x7')](),controller[_0xbe14('0xa')]);router[_0xbe14('0x6')](_0xbe14('0xb'),auth['isAuthenticated'](),controller['getMembers']);router[_0xbe14('0x6')](_0xbe14('0xc'),auth['isAuthenticated'](),controller[_0xbe14('0xd')]);router[_0xbe14('0x6')](_0xbe14('0xe'),auth[_0xbe14('0x7')](),controller[_0xbe14('0xf')]);router[_0xbe14('0x10')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x11')]);router[_0xbe14('0x10')](_0xbe14('0xc'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x12')]);router[_0xbe14('0x10')]('/:id/users',auth['isAuthenticated'](),controller[_0xbe14('0x13')]);router[_0xbe14('0x14')](_0xbe14('0x15'),auth[_0xbe14('0x7')](),controller['update']);router[_0xbe14('0x16')](_0xbe14('0x15'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x17')]);router[_0xbe14('0x16')](_0xbe14('0xc'),auth[_0xbe14('0x7')](),controller['removeTeams']);router[_0xbe14('0x16')](_0xbe14('0xe'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x18')]);module[_0xbe14('0x19')]=router;
\ No newline at end of file
index ca0db89..0bd7f8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd51a=['sequelize','exports','STRING','DATE','moment'];(function(_0x453701,_0x2caf1d){var _0x544953=function(_0x3a8453){while(--_0x3a8453){_0x453701['push'](_0x453701['shift']());}};_0x544953(++_0x2caf1d);}(_0xd51a,0x1c1));var _0xad51=function(_0x14cb7c,_0x3a44df){_0x14cb7c=_0x14cb7c-0x0;var _0x5742b8=_0xd51a[_0x14cb7c];return _0x5742b8;};'use strict';var moment=require(_0xad51('0x0'));var Sequelize=require(_0xad51('0x1'));module[_0xad51('0x2')]={'uniqueid':{'type':Sequelize[_0xad51('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xad51('0x4')]},'acceptAt':{'type':Sequelize[_0xad51('0x4')]},'exitAt':{'type':Sequelize[_0xad51('0x4')]},'reason':{'type':Sequelize[_0xad51('0x3')]}};
\ No newline at end of file
+var _0xed66=['STRING','DATE'];(function(_0x331cad,_0x50aec0){var _0x55db9e=function(_0x5e3459){while(--_0x5e3459){_0x331cad['push'](_0x331cad['shift']());}};_0x55db9e(++_0x50aec0);}(_0xed66,0xf2));var _0x6ed6=function(_0x50abc4,_0x558d64){_0x50abc4=_0x50abc4-0x0;var _0x5a745d=_0xed66[_0x50abc4];return _0x5a745d;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x6ed6('0x0')],'allowNull':![]},'from':{'type':Sequelize[_0x6ed6('0x0')]},'joinAt':{'type':Sequelize[_0x6ed6('0x1')]},'leaveAt':{'type':Sequelize[_0x6ed6('0x1')]},'acceptAt':{'type':Sequelize[_0x6ed6('0x1')]},'exitAt':{'type':Sequelize[_0x6ed6('0x1')]},'reason':{'type':Sequelize[_0x6ed6('0x0')]}};
\ No newline at end of file
index 5d80f43..708fe4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04f9=['fields','length','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','rows','catch','show','keys','options','create','body','find','params','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','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','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','ChatQueueReport','rawAttributes','type','model','map','query','filters','intersection','attributes'];(function(_0x2b859e,_0x1cd34c){var _0x271035=function(_0x1cf2ee){while(--_0x1cf2ee){_0x2b859e['push'](_0x2b859e['shift']());}};_0x271035(++_0x1cd34c);}(_0x04f9,0xb3));var _0x904f=function(_0x26f341,_0x1f83a3){_0x26f341=_0x26f341-0x0;var _0xdafecf=_0x04f9[_0x26f341];return _0xdafecf;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x904f('0x0'));var zipdir=require(_0x904f('0x1'));var jsonpatch=require(_0x904f('0x2'));var rp=require('request-promise');var moment=require(_0x904f('0x3'));var BPromise=require(_0x904f('0x4'));var Mustache=require(_0x904f('0x5'));var util=require(_0x904f('0x6'));var path=require(_0x904f('0x7'));var sox=require(_0x904f('0x8'));var csv=require('to-csv');var ejs=require(_0x904f('0x9'));var fs=require('fs');var fs_extra=require(_0x904f('0xa'));var _=require(_0x904f('0xb'));var squel=require(_0x904f('0xc'));var crypto=require(_0x904f('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x904f('0xe'));var toCsv=require(_0x904f('0xf'));var querystring=require(_0x904f('0x10'));var Papa=require('papaparse');var Redis=require(_0x904f('0x11'));var authService=require(_0x904f('0x12'));var qs=require(_0x904f('0x13'));var as=require(_0x904f('0x14'));var hardwareService=require(_0x904f('0x15'));var logger=require(_0x904f('0x16'))(_0x904f('0x17'));var utils=require(_0x904f('0x18'));var config=require(_0x904f('0x19'));var licenseUtil=require(_0x904f('0x1a'));var db=require(_0x904f('0x1b'))['db'];function respondWithStatusCode(_0x2ba370,_0x46640a){_0x46640a=_0x46640a||0xcc;return function(_0x26cfc9){if(_0x26cfc9){return _0x2ba370[_0x904f('0x1c')](_0x46640a);}return _0x2ba370[_0x904f('0x1d')](_0x46640a)[_0x904f('0x1e')]();};}function respondWithResult(_0x1d0b9d,_0x243abe){_0x243abe=_0x243abe||0xc8;return function(_0x37c745){if(_0x37c745){return _0x1d0b9d[_0x904f('0x1d')](_0x243abe)[_0x904f('0x1f')](_0x37c745);}};}function respondWithFilteredResult(_0x9b693c,_0x567fe0){return function(_0x4e13bc){if(_0x4e13bc){var _0xf5268d=typeof _0x567fe0[_0x904f('0x20')]==='undefined'&&typeof _0x567fe0['limit']==='undefined';var _0x3f5312=_0x4e13bc[_0x904f('0x21')];var _0x4eb784=_0xf5268d?0x0:_0x567fe0[_0x904f('0x20')];var _0x502f80=_0xf5268d?_0x4e13bc['count']:_0x567fe0['offset']+_0x567fe0['limit'];var _0x50457c;if(_0x502f80>=_0x3f5312){_0x502f80=_0x3f5312;_0x50457c=0xc8;}else{_0x50457c=0xce;}_0x9b693c['status'](_0x50457c);return _0x9b693c[_0x904f('0x22')](_0x904f('0x23'),_0x4eb784+'-'+_0x502f80+'/'+_0x3f5312)['json'](_0x4e13bc);}return null;};}function patchUpdates(_0x22b1ba){return function(_0x8d3fce){try{jsonpatch[_0x904f('0x24')](_0x8d3fce,_0x22b1ba,!![]);}catch(_0x551093){return BPromise[_0x904f('0x25')](_0x551093);}return _0x8d3fce[_0x904f('0x26')]();};}function saveUpdates(_0x144a34,_0x247536){return function(_0x1f394d){if(_0x1f394d){return _0x1f394d[_0x904f('0x27')](_0x144a34)[_0x904f('0x28')](function(_0x1b0937){return _0x1b0937;});}return null;};}function removeEntity(_0x197b3,_0x1f3c74){return function(_0x5826dd){if(_0x5826dd){return _0x5826dd[_0x904f('0x29')]()[_0x904f('0x28')](function(){_0x197b3[_0x904f('0x1d')](0xcc)[_0x904f('0x1e')]();});}};}function handleEntityNotFound(_0x57dbcc,_0x5930df){return function(_0x1512b5){if(!_0x1512b5){_0x57dbcc[_0x904f('0x1c')](0x194);}return _0x1512b5;};}function handleError(_0x515410,_0x3cf16c){_0x3cf16c=_0x3cf16c||0x1f4;return function(_0x1b8f20){logger['error'](_0x1b8f20[_0x904f('0x2a')]);if(_0x1b8f20[_0x904f('0x2b')]){delete _0x1b8f20[_0x904f('0x2b')];}_0x515410[_0x904f('0x1d')](_0x3cf16c)[_0x904f('0x2c')](_0x1b8f20);};}exports[_0x904f('0x2d')]=function(_0x2bc4f9,_0x20d005){var _0x218783={},_0x3aa868={},_0x4d0061={'count':0x0,'rows':[]};var _0x374f05=_['map'](db[_0x904f('0x2e')][_0x904f('0x2f')],function(_0x5a9eb0){return{'name':_0x5a9eb0['fieldName'],'type':_0x5a9eb0[_0x904f('0x30')]['key']};});_0x3aa868[_0x904f('0x31')]=_[_0x904f('0x32')](_0x374f05,'name');_0x3aa868[_0x904f('0x33')]=_['keys'](_0x2bc4f9[_0x904f('0x33')]);_0x3aa868[_0x904f('0x34')]=_[_0x904f('0x35')](_0x3aa868[_0x904f('0x31')],_0x3aa868[_0x904f('0x33')]);_0x218783[_0x904f('0x36')]=_['intersection'](_0x3aa868['model'],qs[_0x904f('0x37')](_0x2bc4f9[_0x904f('0x33')]['fields']));_0x218783[_0x904f('0x36')]=_0x218783[_0x904f('0x36')][_0x904f('0x38')]?_0x218783[_0x904f('0x36')]:_0x3aa868[_0x904f('0x31')];if(!_0x2bc4f9[_0x904f('0x33')]['hasOwnProperty'](_0x904f('0x39'))){_0x218783[_0x904f('0x3a')]=qs[_0x904f('0x3a')](_0x2bc4f9[_0x904f('0x33')]['limit']);_0x218783[_0x904f('0x20')]=qs[_0x904f('0x20')](_0x2bc4f9[_0x904f('0x33')]['offset']);}_0x218783[_0x904f('0x3b')]=qs[_0x904f('0x3c')](_0x2bc4f9[_0x904f('0x33')][_0x904f('0x3c')]);_0x218783[_0x904f('0x3d')]=qs[_0x904f('0x34')](_[_0x904f('0x3e')](_0x2bc4f9[_0x904f('0x33')],_0x3aa868[_0x904f('0x34')]),_0x374f05);if(_0x2bc4f9['query'][_0x904f('0x3f')]){_0x218783[_0x904f('0x3d')]=_[_0x904f('0x40')](_0x218783[_0x904f('0x3d')],{'$or':_['map'](_0x374f05,function(_0x4ca56c){if(_0x4ca56c['type']!==_0x904f('0x41')){var _0x3264d3={};_0x3264d3[_0x4ca56c[_0x904f('0x2b')]]={'$like':'%'+_0x2bc4f9[_0x904f('0x33')][_0x904f('0x3f')]+'%'};return _0x3264d3;}})});}_0x218783=_[_0x904f('0x40')]({},_0x218783,_0x2bc4f9['options']);var _0x1e2523={'where':_0x218783[_0x904f('0x3d')]};return db[_0x904f('0x2e')][_0x904f('0x21')](_0x1e2523)[_0x904f('0x28')](function(_0x4f2ee3){_0x4d0061['count']=_0x4f2ee3;if(_0x2bc4f9[_0x904f('0x33')]['includeAll']){_0x218783[_0x904f('0x42')]=[{'all':!![]}];}return db[_0x904f('0x2e')][_0x904f('0x43')](_0x218783);})[_0x904f('0x28')](function(_0x4445be){_0x4d0061[_0x904f('0x44')]=_0x4445be;return _0x4d0061;})[_0x904f('0x28')](respondWithFilteredResult(_0x20d005,_0x218783))[_0x904f('0x45')](handleError(_0x20d005,null));};exports[_0x904f('0x46')]=function(_0x416a10,_0x11958e){var _0x1d9f2d={'raw':!![],'where':{'id':_0x416a10['params']['id']}},_0x3c3bf1={};_0x3c3bf1[_0x904f('0x31')]=_[_0x904f('0x47')](db[_0x904f('0x2e')]['rawAttributes']);_0x3c3bf1[_0x904f('0x33')]=_[_0x904f('0x47')](_0x416a10[_0x904f('0x33')]);_0x3c3bf1[_0x904f('0x34')]=_['intersection'](_0x3c3bf1[_0x904f('0x31')],_0x3c3bf1[_0x904f('0x33')]);_0x1d9f2d['attributes']=_[_0x904f('0x35')](_0x3c3bf1[_0x904f('0x31')],qs['fields'](_0x416a10[_0x904f('0x33')][_0x904f('0x37')]));_0x1d9f2d[_0x904f('0x36')]=_0x1d9f2d[_0x904f('0x36')][_0x904f('0x38')]?_0x1d9f2d['attributes']:_0x3c3bf1['model'];if(_0x416a10[_0x904f('0x33')]['includeAll']){_0x1d9f2d[_0x904f('0x42')]=[{'all':!![]}];}_0x1d9f2d=_[_0x904f('0x40')]({},_0x1d9f2d,_0x416a10[_0x904f('0x48')]);return db[_0x904f('0x2e')]['find'](_0x1d9f2d)['then'](handleEntityNotFound(_0x11958e,null))[_0x904f('0x28')](respondWithResult(_0x11958e,null))[_0x904f('0x45')](handleError(_0x11958e,null));};exports[_0x904f('0x49')]=function(_0x2b9d29,_0x44d401){return db[_0x904f('0x2e')]['create'](_0x2b9d29[_0x904f('0x4a')],{})['then'](respondWithResult(_0x44d401,0xc9))[_0x904f('0x45')](handleError(_0x44d401,null));};exports[_0x904f('0x27')]=function(_0x39b46,_0x1ec277){if(_0x39b46[_0x904f('0x4a')]['id']){delete _0x39b46[_0x904f('0x4a')]['id'];}return db[_0x904f('0x2e')][_0x904f('0x4b')]({'where':{'id':_0x39b46[_0x904f('0x4c')]['id']}})[_0x904f('0x28')](handleEntityNotFound(_0x1ec277,null))[_0x904f('0x28')](saveUpdates(_0x39b46['body'],null))['then'](respondWithResult(_0x1ec277,null))[_0x904f('0x45')](handleError(_0x1ec277,null));};exports[_0x904f('0x29')]=function(_0x455204,_0x3e5245){return db['ChatQueueReport'][_0x904f('0x4b')]({'where':{'id':_0x455204[_0x904f('0x4c')]['id']}})['then'](handleEntityNotFound(_0x3e5245,null))[_0x904f('0x28')](removeEntity(_0x3e5245,null))[_0x904f('0x45')](handleError(_0x3e5245,null));};exports[_0x904f('0x4d')]=function(_0x32eaea,_0x2638ae){return db[_0x904f('0x2e')][_0x904f('0x4d')]()[_0x904f('0x28')](respondWithResult(_0x2638ae,null))[_0x904f('0x45')](handleError(_0x2638ae,null));};
\ No newline at end of file
+var _0xef66=['pick','filter','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','length','include','merge','find','create','update','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','Content-Range','json','reject','save','then','destroy','end','error','stack','name','send','index','map','ChatQueueReport','rawAttributes','type','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where'];(function(_0x2d4b41,_0x268fbe){var _0x19470b=function(_0x2dcdea){while(--_0x2dcdea){_0x2d4b41['push'](_0x2d4b41['shift']());}};_0x19470b(++_0x268fbe);}(_0xef66,0x1db));var _0x6ef6=function(_0xcfd35b,_0xa94bd2){_0xcfd35b=_0xcfd35b-0x0;var _0x1867bf=_0xef66[_0xcfd35b];return _0x1867bf;};'use strict';var emlformat=require(_0x6ef6('0x0'));var rimraf=require(_0x6ef6('0x1'));var zipdir=require(_0x6ef6('0x2'));var jsonpatch=require(_0x6ef6('0x3'));var rp=require(_0x6ef6('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x6ef6('0x5'));var util=require(_0x6ef6('0x6'));var path=require(_0x6ef6('0x7'));var sox=require(_0x6ef6('0x8'));var csv=require(_0x6ef6('0x9'));var ejs=require(_0x6ef6('0xa'));var fs=require('fs');var fs_extra=require(_0x6ef6('0xb'));var _=require(_0x6ef6('0xc'));var squel=require(_0x6ef6('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x6ef6('0xe'));var toCsv=require(_0x6ef6('0x9'));var querystring=require(_0x6ef6('0xf'));var Papa=require(_0x6ef6('0x10'));var Redis=require(_0x6ef6('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x6ef6('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x6ef6('0x13'))('api');var utils=require(_0x6ef6('0x14'));var config=require(_0x6ef6('0x15'));var licenseUtil=require(_0x6ef6('0x16'));var db=require(_0x6ef6('0x17'))['db'];function respondWithStatusCode(_0x596b91,_0x3aa045){_0x3aa045=_0x3aa045||0xcc;return function(_0x22b44e){if(_0x22b44e){return _0x596b91[_0x6ef6('0x18')](_0x3aa045);}return _0x596b91[_0x6ef6('0x19')](_0x3aa045)['end']();};}function respondWithResult(_0x265583,_0x5845b7){_0x5845b7=_0x5845b7||0xc8;return function(_0x40d198){if(_0x40d198){return _0x265583[_0x6ef6('0x19')](_0x5845b7)['json'](_0x40d198);}};}function respondWithFilteredResult(_0x248ab3,_0x1f4c3d){return function(_0x453aa3){if(_0x453aa3){var _0x3f0a84=typeof _0x1f4c3d[_0x6ef6('0x1a')]===_0x6ef6('0x1b')&&typeof _0x1f4c3d[_0x6ef6('0x1c')]===_0x6ef6('0x1b');var _0x1ed381=_0x453aa3[_0x6ef6('0x1d')];var _0x53586d=_0x3f0a84?0x0:_0x1f4c3d[_0x6ef6('0x1a')];var _0x2510be=_0x3f0a84?_0x453aa3[_0x6ef6('0x1d')]:_0x1f4c3d[_0x6ef6('0x1a')]+_0x1f4c3d[_0x6ef6('0x1c')];var _0x2e6e52;if(_0x2510be>=_0x1ed381){_0x2510be=_0x1ed381;_0x2e6e52=0xc8;}else{_0x2e6e52=0xce;}_0x248ab3[_0x6ef6('0x19')](_0x2e6e52);return _0x248ab3['set'](_0x6ef6('0x1e'),_0x53586d+'-'+_0x2510be+'/'+_0x1ed381)[_0x6ef6('0x1f')](_0x453aa3);}return null;};}function patchUpdates(_0x2903ea){return function(_0x11ade5){try{jsonpatch['apply'](_0x11ade5,_0x2903ea,!![]);}catch(_0x164ed9){return BPromise[_0x6ef6('0x20')](_0x164ed9);}return _0x11ade5[_0x6ef6('0x21')]();};}function saveUpdates(_0x4f6df6,_0x4257d8){return function(_0x1096de){if(_0x1096de){return _0x1096de['update'](_0x4f6df6)[_0x6ef6('0x22')](function(_0x3c225f){return _0x3c225f;});}return null;};}function removeEntity(_0x4d7f90,_0x366f2c){return function(_0xb1c6b0){if(_0xb1c6b0){return _0xb1c6b0[_0x6ef6('0x23')]()[_0x6ef6('0x22')](function(){_0x4d7f90[_0x6ef6('0x19')](0xcc)[_0x6ef6('0x24')]();});}};}function handleEntityNotFound(_0x1cd549,_0x499d4f){return function(_0x2e5059){if(!_0x2e5059){_0x1cd549['sendStatus'](0x194);}return _0x2e5059;};}function handleError(_0x39d3cc,_0x692c3d){_0x692c3d=_0x692c3d||0x1f4;return function(_0x443ded){logger[_0x6ef6('0x25')](_0x443ded[_0x6ef6('0x26')]);if(_0x443ded[_0x6ef6('0x27')]){delete _0x443ded[_0x6ef6('0x27')];}_0x39d3cc[_0x6ef6('0x19')](_0x692c3d)[_0x6ef6('0x28')](_0x443ded);};}exports[_0x6ef6('0x29')]=function(_0x136d20,_0x2d87a8){var _0x483f4d={},_0x40f9f6={},_0x295616={'count':0x0,'rows':[]};var _0x2e4bed=_[_0x6ef6('0x2a')](db[_0x6ef6('0x2b')][_0x6ef6('0x2c')],function(_0x23f979){return{'name':_0x23f979['fieldName'],'type':_0x23f979[_0x6ef6('0x2d')]['key']};});_0x40f9f6[_0x6ef6('0x2e')]=_[_0x6ef6('0x2a')](_0x2e4bed,_0x6ef6('0x27'));_0x40f9f6['query']=_['keys'](_0x136d20[_0x6ef6('0x2f')]);_0x40f9f6[_0x6ef6('0x30')]=_[_0x6ef6('0x31')](_0x40f9f6['model'],_0x40f9f6[_0x6ef6('0x2f')]);_0x483f4d['attributes']=_[_0x6ef6('0x31')](_0x40f9f6[_0x6ef6('0x2e')],qs['fields'](_0x136d20['query'][_0x6ef6('0x32')]));_0x483f4d['attributes']=_0x483f4d[_0x6ef6('0x33')]['length']?_0x483f4d[_0x6ef6('0x33')]:_0x40f9f6['model'];if(!_0x136d20['query'][_0x6ef6('0x34')](_0x6ef6('0x35'))){_0x483f4d['limit']=qs[_0x6ef6('0x1c')](_0x136d20['query'][_0x6ef6('0x1c')]);_0x483f4d['offset']=qs[_0x6ef6('0x1a')](_0x136d20['query'][_0x6ef6('0x1a')]);}_0x483f4d[_0x6ef6('0x36')]=qs[_0x6ef6('0x37')](_0x136d20['query']['sort']);_0x483f4d[_0x6ef6('0x38')]=qs[_0x6ef6('0x30')](_[_0x6ef6('0x39')](_0x136d20[_0x6ef6('0x2f')],_0x40f9f6['filters']),_0x2e4bed);if(_0x136d20['query'][_0x6ef6('0x3a')]){_0x483f4d['where']=_['merge'](_0x483f4d[_0x6ef6('0x38')],{'$or':_['map'](_0x2e4bed,function(_0x38969c){if(_0x38969c[_0x6ef6('0x2d')]!==_0x6ef6('0x3b')){var _0x31facc={};_0x31facc[_0x38969c[_0x6ef6('0x27')]]={'$like':'%'+_0x136d20[_0x6ef6('0x2f')][_0x6ef6('0x3a')]+'%'};return _0x31facc;}})});}_0x483f4d=_['merge']({},_0x483f4d,_0x136d20[_0x6ef6('0x3c')]);var _0x58fed8={'where':_0x483f4d['where']};return db[_0x6ef6('0x2b')][_0x6ef6('0x1d')](_0x58fed8)[_0x6ef6('0x22')](function(_0x4da800){_0x295616[_0x6ef6('0x1d')]=_0x4da800;if(_0x136d20[_0x6ef6('0x2f')][_0x6ef6('0x3d')]){_0x483f4d['include']=[{'all':!![]}];}return db[_0x6ef6('0x2b')][_0x6ef6('0x3e')](_0x483f4d);})[_0x6ef6('0x22')](function(_0x1bf2af){_0x295616[_0x6ef6('0x3f')]=_0x1bf2af;return _0x295616;})[_0x6ef6('0x22')](respondWithFilteredResult(_0x2d87a8,_0x483f4d))[_0x6ef6('0x40')](handleError(_0x2d87a8,null));};exports[_0x6ef6('0x41')]=function(_0x2c03a7,_0x230f30){var _0x51b0a1={'raw':!![],'where':{'id':_0x2c03a7[_0x6ef6('0x42')]['id']}},_0xf46913={};_0xf46913[_0x6ef6('0x2e')]=_[_0x6ef6('0x43')](db[_0x6ef6('0x2b')][_0x6ef6('0x2c')]);_0xf46913[_0x6ef6('0x2f')]=_[_0x6ef6('0x43')](_0x2c03a7[_0x6ef6('0x2f')]);_0xf46913[_0x6ef6('0x30')]=_[_0x6ef6('0x31')](_0xf46913['model'],_0xf46913[_0x6ef6('0x2f')]);_0x51b0a1['attributes']=_[_0x6ef6('0x31')](_0xf46913['model'],qs[_0x6ef6('0x32')](_0x2c03a7[_0x6ef6('0x2f')]['fields']));_0x51b0a1[_0x6ef6('0x33')]=_0x51b0a1[_0x6ef6('0x33')][_0x6ef6('0x44')]?_0x51b0a1[_0x6ef6('0x33')]:_0xf46913[_0x6ef6('0x2e')];if(_0x2c03a7['query'][_0x6ef6('0x3d')]){_0x51b0a1[_0x6ef6('0x45')]=[{'all':!![]}];}_0x51b0a1=_[_0x6ef6('0x46')]({},_0x51b0a1,_0x2c03a7[_0x6ef6('0x3c')]);return db[_0x6ef6('0x2b')][_0x6ef6('0x47')](_0x51b0a1)[_0x6ef6('0x22')](handleEntityNotFound(_0x230f30,null))[_0x6ef6('0x22')](respondWithResult(_0x230f30,null))['catch'](handleError(_0x230f30,null));};exports[_0x6ef6('0x48')]=function(_0x2d54c0,_0x52e93f){return db['ChatQueueReport'][_0x6ef6('0x48')](_0x2d54c0['body'],{})[_0x6ef6('0x22')](respondWithResult(_0x52e93f,0xc9))['catch'](handleError(_0x52e93f,null));};exports[_0x6ef6('0x49')]=function(_0x712015,_0x23edde){if(_0x712015[_0x6ef6('0x4a')]['id']){delete _0x712015['body']['id'];}return db['ChatQueueReport']['find']({'where':{'id':_0x712015['params']['id']}})[_0x6ef6('0x22')](handleEntityNotFound(_0x23edde,null))[_0x6ef6('0x22')](saveUpdates(_0x712015[_0x6ef6('0x4a')],null))['then'](respondWithResult(_0x23edde,null))[_0x6ef6('0x40')](handleError(_0x23edde,null));};exports[_0x6ef6('0x23')]=function(_0x30a2a5,_0x43fda4){return db[_0x6ef6('0x2b')][_0x6ef6('0x47')]({'where':{'id':_0x30a2a5[_0x6ef6('0x42')]['id']}})['then'](handleEntityNotFound(_0x43fda4,null))[_0x6ef6('0x22')](removeEntity(_0x43fda4,null))['catch'](handleError(_0x43fda4,null));};exports[_0x6ef6('0x4b')]=function(_0x3549e9,_0x511a43){return db['ChatQueueReport'][_0x6ef6('0x4b')]()[_0x6ef6('0x22')](respondWithResult(_0x511a43,null))[_0x6ef6('0x40')](handleError(_0x511a43,null));};
\ No newline at end of file
index 64c4762..0acbcfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['../../config/logger','moment','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','define','ChatQueueReport','uniqueid','lodash'];(function(_0x290cb0,_0x53e201){var _0x2f7ce1=function(_0x4e02b5){while(--_0x4e02b5){_0x290cb0['push'](_0x290cb0['shift']());}};_0x2f7ce1(++_0x53e201);}(_0xb7e7,0x121));var _0x7b7e=function(_0x2faddb,_0xc18b78){_0x2faddb=_0x2faddb-0x0;var _0x273c05=_0xb7e7[_0x2faddb];return _0x273c05;};'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_chat_queue','paranoid':![],'indexes':[{'name':_0x7b7e('0x9'),'fields':[_0x7b7e('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb7e7=['../../config/logger','moment','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','define','ChatQueueReport','uniqueid','lodash'];(function(_0x414b13,_0x378308){var _0x2ec68a=function(_0x25a872){while(--_0x25a872){_0x414b13['push'](_0x414b13['shift']());}};_0x2ec68a(++_0x378308);}(_0xb7e7,0x121));var _0x7b7e=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xb7e7[_0x20a584];return _0x4b41a8;};'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_chat_queue','paranoid':![],'indexes':[{'name':_0x7b7e('0x9'),'fields':[_0x7b7e('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 293d55b..1a45a7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2b6=['update','attributes','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateChatQueueReport','ChatQueueReport','create','body','options','raw','stringify','UpdateChatQueueReport'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0xb2b6,0x1bc));var _0x6b2b=function(_0x73844a,_0x546c87){_0x73844a=_0x73844a-0x0;var _0x2c9370=_0xb2b6[_0x73844a];return _0x2c9370;};'use strict';var _=require(_0x6b2b('0x0'));var util=require(_0x6b2b('0x1'));var moment=require(_0x6b2b('0x2'));var BPromise=require(_0x6b2b('0x3'));var rs=require(_0x6b2b('0x4'));var fs=require('fs');var Redis=require(_0x6b2b('0x5'));var db=require(_0x6b2b('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x6b2b('0x7'));var config=require(_0x6b2b('0x8'));var jayson=require(_0x6b2b('0x9'));var client=jayson[_0x6b2b('0xa')][_0x6b2b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xaa79a5,_0x35e4bd,_0x73fd9b){return new BPromise(function(_0x447cdf,_0x5e3f53){return client[_0x6b2b('0xc')](_0xaa79a5,_0x73fd9b)[_0x6b2b('0xd')](function(_0x1325a9){logger[_0x6b2b('0xe')](_0x6b2b('0xf'),_0x35e4bd,_0x6b2b('0x10'));logger[_0x6b2b('0x11')](_0x6b2b('0x12'),_0x35e4bd,_0x6b2b('0x10'),JSON['stringify'](_0x1325a9));if(_0x1325a9[_0x6b2b('0x13')]){if(_0x1325a9[_0x6b2b('0x13')][_0x6b2b('0x14')]===0x1f4){logger[_0x6b2b('0x13')](_0x6b2b('0xf'),_0x35e4bd,_0x1325a9['error']['message']);return _0x5e3f53(_0x1325a9[_0x6b2b('0x13')][_0x6b2b('0x15')]);}logger[_0x6b2b('0x13')](_0x6b2b('0xf'),_0x35e4bd,_0x1325a9[_0x6b2b('0x13')][_0x6b2b('0x15')]);return _0x447cdf(_0x1325a9[_0x6b2b('0x13')][_0x6b2b('0x15')]);}else{logger['info'](_0x6b2b('0xf'),_0x35e4bd,_0x6b2b('0x10'));_0x447cdf(_0x1325a9[_0x6b2b('0x16')][_0x6b2b('0x15')]);}})[_0x6b2b('0x17')](function(_0xc2cc4c){logger[_0x6b2b('0x13')](_0x6b2b('0xf'),_0x35e4bd,_0xc2cc4c);_0x5e3f53(_0xc2cc4c);});});}exports[_0x6b2b('0x18')]=function(_0x36d29c){var _0x269f7f=this;return new Promise(function(_0x4c0d71,_0x31721a){return db[_0x6b2b('0x19')][_0x6b2b('0x1a')](_0x36d29c[_0x6b2b('0x1b')],{'raw':_0x36d29c['options']?_0x36d29c[_0x6b2b('0x1c')][_0x6b2b('0x1d')]===undefined?!![]:![]:!![]})[_0x6b2b('0xd')](function(_0x52ed9a){logger['info']('CreateChatQueueReport',_0x36d29c);logger[_0x6b2b('0x11')]('CreateChatQueueReport',_0x36d29c,JSON[_0x6b2b('0x1e')](_0x52ed9a));_0x4c0d71(_0x52ed9a);})[_0x6b2b('0x17')](function(_0x52da09){logger['error'](_0x6b2b('0x18'),_0x52da09['message'],_0x36d29c);_0x31721a(_0x269f7f['error'](0x1f4,_0x52da09[_0x6b2b('0x15')]));});});};exports[_0x6b2b('0x1f')]=function(_0x1c5304){var _0x21bf44=this;return new Promise(function(_0x5e44ef,_0x3451f4){return db[_0x6b2b('0x19')][_0x6b2b('0x20')](_0x1c5304['body'],{'raw':_0x1c5304['options']?_0x1c5304[_0x6b2b('0x1c')][_0x6b2b('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1c5304[_0x6b2b('0x1c')]?_0x1c5304['options']['where']||null:null,'attributes':_0x1c5304[_0x6b2b('0x1c')]?_0x1c5304[_0x6b2b('0x1c')][_0x6b2b('0x21')]||null:null,'limit':_0x1c5304[_0x6b2b('0x1c')]?_0x1c5304[_0x6b2b('0x1c')]['limit']||null:null})['then'](function(_0x236e00){logger[_0x6b2b('0xe')](_0x6b2b('0x1f'),_0x1c5304);logger['debug'](_0x6b2b('0x1f'),_0x1c5304,JSON[_0x6b2b('0x1e')](_0x236e00));_0x5e44ef(_0x236e00);})[_0x6b2b('0x17')](function(_0xe3bb34){logger[_0x6b2b('0x13')](_0x6b2b('0x1f'),_0xe3bb34[_0x6b2b('0x15')],_0x1c5304);_0x3451f4(_0x21bf44[_0x6b2b('0x13')](0x1f4,_0xe3bb34[_0x6b2b('0x15')]));});});};
\ No newline at end of file
+var _0x5b78=['UpdateChatQueueReport','update','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','request\x20sent','stringify','error','code','ChatQueueReport,\x20%s,\x20%s','message','info','result','catch','CreateChatQueueReport','ChatQueueReport','create','body','options','raw','debug'];(function(_0x29d082,_0x9da22c){var _0x5e5f78=function(_0x1dec27){while(--_0x1dec27){_0x29d082['push'](_0x29d082['shift']());}};_0x5e5f78(++_0x9da22c);}(_0x5b78,0x18f));var _0x85b7=function(_0x28f648,_0x5a4140){_0x28f648=_0x28f648-0x0;var _0x223692=_0x5b78[_0x28f648];return _0x223692;};'use strict';var _=require(_0x85b7('0x0'));var util=require(_0x85b7('0x1'));var moment=require(_0x85b7('0x2'));var BPromise=require(_0x85b7('0x3'));var rs=require(_0x85b7('0x4'));var fs=require('fs');var Redis=require(_0x85b7('0x5'));var db=require(_0x85b7('0x6'))['db'];var utils=require(_0x85b7('0x7'));var logger=require('../../config/logger')(_0x85b7('0x8'));var config=require(_0x85b7('0x9'));var jayson=require(_0x85b7('0xa'));var client=jayson['client'][_0x85b7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x585614,_0x166b72,_0xcdf1bf){return new BPromise(function(_0xfc94c3,_0x5858f1){return client[_0x85b7('0xc')](_0x585614,_0xcdf1bf)[_0x85b7('0xd')](function(_0x19372e){logger['info']('ChatQueueReport,\x20%s,\x20%s',_0x166b72,_0x85b7('0xe'));logger['debug']('ChatQueueReport,\x20%s,\x20%s,\x20%s',_0x166b72,'request\x20sent',JSON[_0x85b7('0xf')](_0x19372e));if(_0x19372e[_0x85b7('0x10')]){if(_0x19372e[_0x85b7('0x10')][_0x85b7('0x11')]===0x1f4){logger[_0x85b7('0x10')](_0x85b7('0x12'),_0x166b72,_0x19372e['error'][_0x85b7('0x13')]);return _0x5858f1(_0x19372e[_0x85b7('0x10')][_0x85b7('0x13')]);}logger[_0x85b7('0x10')]('ChatQueueReport,\x20%s,\x20%s',_0x166b72,_0x19372e['error'][_0x85b7('0x13')]);return _0xfc94c3(_0x19372e['error'][_0x85b7('0x13')]);}else{logger[_0x85b7('0x14')](_0x85b7('0x12'),_0x166b72,_0x85b7('0xe'));_0xfc94c3(_0x19372e[_0x85b7('0x15')][_0x85b7('0x13')]);}})[_0x85b7('0x16')](function(_0x248c86){logger[_0x85b7('0x10')](_0x85b7('0x12'),_0x166b72,_0x248c86);_0x5858f1(_0x248c86);});});}exports[_0x85b7('0x17')]=function(_0x3d6662){var _0x59ac61=this;return new Promise(function(_0x1744b7,_0x4b12c9){return db[_0x85b7('0x18')][_0x85b7('0x19')](_0x3d6662[_0x85b7('0x1a')],{'raw':_0x3d6662[_0x85b7('0x1b')]?_0x3d6662[_0x85b7('0x1b')][_0x85b7('0x1c')]===undefined?!![]:![]:!![]})[_0x85b7('0xd')](function(_0x315841){logger[_0x85b7('0x14')](_0x85b7('0x17'),_0x3d6662);logger[_0x85b7('0x1d')](_0x85b7('0x17'),_0x3d6662,JSON[_0x85b7('0xf')](_0x315841));_0x1744b7(_0x315841);})[_0x85b7('0x16')](function(_0x549aca){logger[_0x85b7('0x10')]('CreateChatQueueReport',_0x549aca[_0x85b7('0x13')],_0x3d6662);_0x4b12c9(_0x59ac61['error'](0x1f4,_0x549aca[_0x85b7('0x13')]));});});};exports[_0x85b7('0x1e')]=function(_0x5ec1d0){var _0x34328b=this;return new Promise(function(_0x2990dc,_0x40d3e6){return db['ChatQueueReport'][_0x85b7('0x1f')](_0x5ec1d0['body'],{'raw':_0x5ec1d0[_0x85b7('0x1b')]?_0x5ec1d0[_0x85b7('0x1b')][_0x85b7('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5ec1d0[_0x85b7('0x1b')]?_0x5ec1d0[_0x85b7('0x1b')]['where']||null:null,'attributes':_0x5ec1d0[_0x85b7('0x1b')]?_0x5ec1d0['options']['attributes']||null:null,'limit':_0x5ec1d0[_0x85b7('0x1b')]?_0x5ec1d0[_0x85b7('0x1b')][_0x85b7('0x20')]||null:null})[_0x85b7('0xd')](function(_0x4b01c0){logger[_0x85b7('0x14')](_0x85b7('0x1e'),_0x5ec1d0);logger[_0x85b7('0x1d')](_0x85b7('0x1e'),_0x5ec1d0,JSON[_0x85b7('0xf')](_0x4b01c0));_0x2990dc(_0x4b01c0);})['catch'](function(_0x142e15){logger[_0x85b7('0x10')]('UpdateChatQueueReport',_0x142e15['message'],_0x5ec1d0);_0x40d3e6(_0x34328b['error'](0x1f4,_0x142e15[_0x85b7('0x13')]));});});};
\ No newline at end of file
index f9e4829..711e67e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d9d=['get','show','create','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','index','/describe','isAuthenticated','describe'];(function(_0xb6c185,_0x1fba89){var _0x18717b=function(_0x1ac33d){while(--_0x1ac33d){_0xb6c185['push'](_0xb6c185['shift']());}};_0x18717b(++_0x1fba89);}(_0x4d9d,0x14a));var _0xd4d9=function(_0x275621,_0x524302){_0x275621=_0x275621-0x0;var _0x2ad056=_0x4d9d[_0x275621];return _0x2ad056;};'use strict';var multer=require(_0xd4d9('0x0'));var util=require(_0xd4d9('0x1'));var path=require(_0xd4d9('0x2'));var timeout=require(_0xd4d9('0x3'));var express=require(_0xd4d9('0x4'));var router=express[_0xd4d9('0x5')]();var fs_extra=require(_0xd4d9('0x6'));var auth=require(_0xd4d9('0x7'));var interaction=require(_0xd4d9('0x8'));var config=require(_0xd4d9('0x9'));var controller=require(_0xd4d9('0xa'));router['get']('/',auth['isAuthenticated'](),controller[_0xd4d9('0xb')]);router['get'](_0xd4d9('0xc'),auth[_0xd4d9('0xd')](),controller[_0xd4d9('0xe')]);router[_0xd4d9('0xf')]('/:id',auth['isAuthenticated'](),controller[_0xd4d9('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd4d9('0x11')]);router[_0xd4d9('0x12')](_0xd4d9('0x13'),auth[_0xd4d9('0xd')](),controller[_0xd4d9('0x14')]);router['delete'](_0xd4d9('0x13'),auth[_0xd4d9('0xd')](),controller[_0xd4d9('0x15')]);module[_0xd4d9('0x16')]=router;
\ No newline at end of file
+var _0x05b9=['connect-timeout','Router','fs-extra','../../components/auth/service','./chatQueueReport.controller','get','isAuthenticated','index','/describe','show','post','create','update','delete','destroy','multer','util','path'];(function(_0x503e25,_0xb8a860){var _0x47c27a=function(_0x5e4449){while(--_0x5e4449){_0x503e25['push'](_0x503e25['shift']());}};_0x47c27a(++_0xb8a860);}(_0x05b9,0x9f));var _0x905b=function(_0x20463f,_0x4cc37a){_0x20463f=_0x20463f-0x0;var _0x143ee4=_0x05b9[_0x20463f];return _0x143ee4;};'use strict';var multer=require(_0x905b('0x0'));var util=require(_0x905b('0x1'));var path=require(_0x905b('0x2'));var timeout=require(_0x905b('0x3'));var express=require('express');var router=express[_0x905b('0x4')]();var fs_extra=require(_0x905b('0x5'));var auth=require(_0x905b('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x905b('0x7'));router[_0x905b('0x8')]('/',auth[_0x905b('0x9')](),controller[_0x905b('0xa')]);router['get'](_0x905b('0xb'),auth[_0x905b('0x9')](),controller['describe']);router[_0x905b('0x8')]('/:id',auth[_0x905b('0x9')](),controller[_0x905b('0xc')]);router[_0x905b('0xd')]('/',auth[_0x905b('0x9')](),controller[_0x905b('0xe')]);router['put']('/:id',auth[_0x905b('0x9')](),controller[_0x905b('0xf')]);router[_0x905b('0x10')]('/:id',auth[_0x905b('0x9')](),controller[_0x905b('0x11')]);module['exports']=router;
\ No newline at end of file
index c284089..274b6c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x5cf60a,_0x550828){var _0xdba1ee=function(_0x35c8ca){while(--_0x35c8ca){_0x5cf60a['push'](_0x5cf60a['shift']());}};_0xdba1ee(++_0x550828);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xcb91[_0x42cae2];return _0x5f256f;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x1cb9('0x0')]={'uniqueid':{'type':Sequelize[_0x1cb9('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x1cb9('0x2')](_0x1cb9('0x3'),'agent',_0x1cb9('0x4')),'allowNull':![],'defaultValue':_0x1cb9('0x4')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x1cb9('0x5')]}};
\ No newline at end of file
+var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x4c440b,_0x3ea627){var _0x2d48cf=function(_0x56bac7){while(--_0x56bac7){_0x4c440b['push'](_0x4c440b['shift']());}};_0x2d48cf(++_0x3ea627);}(_0x9bde,0xe1));var _0xe9bd=function(_0x387ff4,_0x3f2ce4){_0x387ff4=_0x387ff4-0x0;var _0x5cf83a=_0x9bde[_0x387ff4];return _0x5cf83a;};'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
index 89988c6..34afcf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd706=['set','Content-Range','json','apply','save','update','then','destroy','error','name','send','ChatTransferReport','rawAttributes','fieldName','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','find','create','body','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset'];(function(_0x1e5137,_0x2db138){var _0x4268ff=function(_0x557b6){while(--_0x557b6){_0x1e5137['push'](_0x1e5137['shift']());}};_0x4268ff(++_0x2db138);}(_0xd706,0xc8));var _0x6d70=function(_0x34ea3c,_0x40bb85){_0x34ea3c=_0x34ea3c-0x0;var _0x20ef3f=_0xd706[_0x34ea3c];return _0x20ef3f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6d70('0x0'));var zipdir=require(_0x6d70('0x1'));var jsonpatch=require(_0x6d70('0x2'));var rp=require('request-promise');var moment=require(_0x6d70('0x3'));var BPromise=require(_0x6d70('0x4'));var Mustache=require(_0x6d70('0x5'));var util=require(_0x6d70('0x6'));var path=require(_0x6d70('0x7'));var sox=require(_0x6d70('0x8'));var csv=require(_0x6d70('0x9'));var ejs=require(_0x6d70('0xa'));var fs=require('fs');var fs_extra=require(_0x6d70('0xb'));var _=require(_0x6d70('0xc'));var squel=require(_0x6d70('0xd'));var crypto=require('crypto');var jsforce=require(_0x6d70('0xe'));var deskjs=require(_0x6d70('0xf'));var toCsv=require('to-csv');var querystring=require(_0x6d70('0x10'));var Papa=require(_0x6d70('0x11'));var Redis=require(_0x6d70('0x12'));var authService=require(_0x6d70('0x13'));var qs=require(_0x6d70('0x14'));var as=require(_0x6d70('0x15'));var hardwareService=require(_0x6d70('0x16'));var logger=require(_0x6d70('0x17'))(_0x6d70('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x6d70('0x19'));var db=require(_0x6d70('0x1a'))['db'];function respondWithStatusCode(_0x18c794,_0x12b485){_0x12b485=_0x12b485||0xcc;return function(_0x1f3ba7){if(_0x1f3ba7){return _0x18c794[_0x6d70('0x1b')](_0x12b485);}return _0x18c794[_0x6d70('0x1c')](_0x12b485)[_0x6d70('0x1d')]();};}function respondWithResult(_0x5248af,_0x32a987){_0x32a987=_0x32a987||0xc8;return function(_0x294150){if(_0x294150){return _0x5248af['status'](_0x32a987)['json'](_0x294150);}};}function respondWithFilteredResult(_0x577f90,_0x593d5b){return function(_0x55a37d){if(_0x55a37d){var _0x37e28c=typeof _0x593d5b['offset']===_0x6d70('0x1e')&&typeof _0x593d5b[_0x6d70('0x1f')]==='undefined';var _0x1352bc=_0x55a37d[_0x6d70('0x20')];var _0xde8898=_0x37e28c?0x0:_0x593d5b[_0x6d70('0x21')];var _0x4becf4=_0x37e28c?_0x55a37d[_0x6d70('0x20')]:_0x593d5b[_0x6d70('0x21')]+_0x593d5b[_0x6d70('0x1f')];var _0x3746e2;if(_0x4becf4>=_0x1352bc){_0x4becf4=_0x1352bc;_0x3746e2=0xc8;}else{_0x3746e2=0xce;}_0x577f90[_0x6d70('0x1c')](_0x3746e2);return _0x577f90[_0x6d70('0x22')](_0x6d70('0x23'),_0xde8898+'-'+_0x4becf4+'/'+_0x1352bc)[_0x6d70('0x24')](_0x55a37d);}return null;};}function patchUpdates(_0x15ec04){return function(_0x26e6f7){try{jsonpatch[_0x6d70('0x25')](_0x26e6f7,_0x15ec04,!![]);}catch(_0x6c004b){return BPromise['reject'](_0x6c004b);}return _0x26e6f7[_0x6d70('0x26')]();};}function saveUpdates(_0x125dc3,_0x164e7b){return function(_0x227a1d){if(_0x227a1d){return _0x227a1d[_0x6d70('0x27')](_0x125dc3)[_0x6d70('0x28')](function(_0x1301e9){return _0x1301e9;});}return null;};}function removeEntity(_0x3ba94,_0x45ee33){return function(_0x58ed0e){if(_0x58ed0e){return _0x58ed0e[_0x6d70('0x29')]()[_0x6d70('0x28')](function(){_0x3ba94[_0x6d70('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x503d99,_0x424507){return function(_0x21f884){if(!_0x21f884){_0x503d99[_0x6d70('0x1b')](0x194);}return _0x21f884;};}function handleError(_0x2089a4,_0x1a44a5){_0x1a44a5=_0x1a44a5||0x1f4;return function(_0x481c4a){logger[_0x6d70('0x2a')](_0x481c4a['stack']);if(_0x481c4a[_0x6d70('0x2b')]){delete _0x481c4a[_0x6d70('0x2b')];}_0x2089a4['status'](_0x1a44a5)[_0x6d70('0x2c')](_0x481c4a);};}exports['index']=function(_0x5cb2ad,_0x4792b6){var _0x50af5f={},_0x5ace92={},_0x299cd3={'count':0x0,'rows':[]};var _0x5a306a=_['map'](db[_0x6d70('0x2d')][_0x6d70('0x2e')],function(_0x51a185){return{'name':_0x51a185[_0x6d70('0x2f')],'type':_0x51a185['type']['key']};});_0x5ace92[_0x6d70('0x30')]=_[_0x6d70('0x31')](_0x5a306a,'name');_0x5ace92[_0x6d70('0x32')]=_[_0x6d70('0x33')](_0x5cb2ad[_0x6d70('0x32')]);_0x5ace92[_0x6d70('0x34')]=_[_0x6d70('0x35')](_0x5ace92[_0x6d70('0x30')],_0x5ace92[_0x6d70('0x32')]);_0x50af5f['attributes']=_['intersection'](_0x5ace92[_0x6d70('0x30')],qs['fields'](_0x5cb2ad[_0x6d70('0x32')][_0x6d70('0x36')]));_0x50af5f[_0x6d70('0x37')]=_0x50af5f[_0x6d70('0x37')][_0x6d70('0x38')]?_0x50af5f[_0x6d70('0x37')]:_0x5ace92[_0x6d70('0x30')];if(!_0x5cb2ad['query'][_0x6d70('0x39')](_0x6d70('0x3a'))){_0x50af5f['limit']=qs[_0x6d70('0x1f')](_0x5cb2ad['query'][_0x6d70('0x1f')]);_0x50af5f['offset']=qs[_0x6d70('0x21')](_0x5cb2ad[_0x6d70('0x32')][_0x6d70('0x21')]);}_0x50af5f[_0x6d70('0x3b')]=qs[_0x6d70('0x3c')](_0x5cb2ad[_0x6d70('0x32')][_0x6d70('0x3c')]);_0x50af5f[_0x6d70('0x3d')]=qs['filters'](_[_0x6d70('0x3e')](_0x5cb2ad[_0x6d70('0x32')],_0x5ace92['filters']),_0x5a306a);if(_0x5cb2ad[_0x6d70('0x32')][_0x6d70('0x3f')]){_0x50af5f[_0x6d70('0x3d')]=_[_0x6d70('0x40')](_0x50af5f['where'],{'$or':_['map'](_0x5a306a,function(_0xd8727a){if(_0xd8727a[_0x6d70('0x41')]!==_0x6d70('0x42')){var _0x4c4d73={};_0x4c4d73[_0xd8727a[_0x6d70('0x2b')]]={'$like':'%'+_0x5cb2ad['query'][_0x6d70('0x3f')]+'%'};return _0x4c4d73;}})});}_0x50af5f=_[_0x6d70('0x40')]({},_0x50af5f,_0x5cb2ad[_0x6d70('0x43')]);var _0x39b12b={'where':_0x50af5f['where']};return db['ChatTransferReport'][_0x6d70('0x20')](_0x39b12b)[_0x6d70('0x28')](function(_0x247e34){_0x299cd3[_0x6d70('0x20')]=_0x247e34;if(_0x5cb2ad[_0x6d70('0x32')][_0x6d70('0x44')]){_0x50af5f[_0x6d70('0x45')]=[{'all':!![]}];}return db[_0x6d70('0x2d')][_0x6d70('0x46')](_0x50af5f);})[_0x6d70('0x28')](function(_0x334c7b){_0x299cd3[_0x6d70('0x47')]=_0x334c7b;return _0x299cd3;})['then'](respondWithFilteredResult(_0x4792b6,_0x50af5f))[_0x6d70('0x48')](handleError(_0x4792b6,null));};exports['show']=function(_0x28cf82,_0x1ee629){var _0x594b1d={'raw':!![],'where':{'id':_0x28cf82[_0x6d70('0x49')]['id']}},_0x265489={};_0x265489[_0x6d70('0x30')]=_[_0x6d70('0x33')](db[_0x6d70('0x2d')][_0x6d70('0x2e')]);_0x265489[_0x6d70('0x32')]=_[_0x6d70('0x33')](_0x28cf82[_0x6d70('0x32')]);_0x265489[_0x6d70('0x34')]=_[_0x6d70('0x35')](_0x265489[_0x6d70('0x30')],_0x265489[_0x6d70('0x32')]);_0x594b1d['attributes']=_[_0x6d70('0x35')](_0x265489['model'],qs[_0x6d70('0x36')](_0x28cf82[_0x6d70('0x32')]['fields']));_0x594b1d[_0x6d70('0x37')]=_0x594b1d['attributes']['length']?_0x594b1d[_0x6d70('0x37')]:_0x265489[_0x6d70('0x30')];if(_0x28cf82[_0x6d70('0x32')][_0x6d70('0x44')]){_0x594b1d['include']=[{'all':!![]}];}_0x594b1d=_['merge']({},_0x594b1d,_0x28cf82[_0x6d70('0x43')]);return db[_0x6d70('0x2d')][_0x6d70('0x4a')](_0x594b1d)[_0x6d70('0x28')](handleEntityNotFound(_0x1ee629,null))[_0x6d70('0x28')](respondWithResult(_0x1ee629,null))['catch'](handleError(_0x1ee629,null));};exports[_0x6d70('0x4b')]=function(_0x2300ba,_0x56fedc){return db[_0x6d70('0x2d')][_0x6d70('0x4b')](_0x2300ba[_0x6d70('0x4c')],{})['then'](respondWithResult(_0x56fedc,0xc9))[_0x6d70('0x48')](handleError(_0x56fedc,null));};exports[_0x6d70('0x27')]=function(_0x19251,_0x3d06a2){if(_0x19251[_0x6d70('0x4c')]['id']){delete _0x19251[_0x6d70('0x4c')]['id'];}return db[_0x6d70('0x2d')][_0x6d70('0x4a')]({'where':{'id':_0x19251[_0x6d70('0x49')]['id']}})[_0x6d70('0x28')](handleEntityNotFound(_0x3d06a2,null))['then'](saveUpdates(_0x19251[_0x6d70('0x4c')],null))[_0x6d70('0x28')](respondWithResult(_0x3d06a2,null))[_0x6d70('0x48')](handleError(_0x3d06a2,null));};exports['destroy']=function(_0x24aa35,_0x523d0a){return db['ChatTransferReport'][_0x6d70('0x4a')]({'where':{'id':_0x24aa35[_0x6d70('0x49')]['id']}})[_0x6d70('0x28')](handleEntityNotFound(_0x523d0a,null))['then'](removeEntity(_0x523d0a,null))[_0x6d70('0x48')](handleError(_0x523d0a,null));};exports[_0x6d70('0x4d')]=function(_0x3c3de9,_0x20ed5e){return db[_0x6d70('0x2d')]['describe']()[_0x6d70('0x28')](respondWithResult(_0x20ed5e,null))[_0x6d70('0x48')](handleError(_0x20ed5e,null));};
\ No newline at end of file
+var _0x716e=['send','index','map','ChatTransferReport','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','create','body','params','find','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','ioredis','../../components/auth/service','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','count','offset','limit','set','reject','save','update','then','destroy','error','stack','name'];(function(_0x336e44,_0x3fb0ef){var _0x44c0db=function(_0x214c14){while(--_0x214c14){_0x336e44['push'](_0x336e44['shift']());}};_0x44c0db(++_0x3fb0ef);}(_0x716e,0x14b));var _0xe716=function(_0x12859f,_0x79de98){_0x12859f=_0x12859f-0x0;var _0x168184=_0x716e[_0x12859f];return _0x168184;};'use strict';var emlformat=require(_0xe716('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe716('0x1'));var jsonpatch=require(_0xe716('0x2'));var rp=require(_0xe716('0x3'));var moment=require(_0xe716('0x4'));var BPromise=require(_0xe716('0x5'));var Mustache=require(_0xe716('0x6'));var util=require(_0xe716('0x7'));var path=require('path');var sox=require(_0xe716('0x8'));var csv=require(_0xe716('0x9'));var ejs=require(_0xe716('0xa'));var fs=require('fs');var fs_extra=require(_0xe716('0xb'));var _=require(_0xe716('0xc'));var squel=require(_0xe716('0xd'));var crypto=require('crypto');var jsforce=require(_0xe716('0xe'));var deskjs=require(_0xe716('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xe716('0x10'));var authService=require(_0xe716('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe716('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xe716('0x13'));var config=require(_0xe716('0x14'));var licenseUtil=require(_0xe716('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2887d5,_0x291759){_0x291759=_0x291759||0xcc;return function(_0x105c90){if(_0x105c90){return _0x2887d5[_0xe716('0x16')](_0x291759);}return _0x2887d5[_0xe716('0x17')](_0x291759)[_0xe716('0x18')]();};}function respondWithResult(_0x8c7536,_0x1dca4c){_0x1dca4c=_0x1dca4c||0xc8;return function(_0x10e908){if(_0x10e908){return _0x8c7536[_0xe716('0x17')](_0x1dca4c)[_0xe716('0x19')](_0x10e908);}};}function respondWithFilteredResult(_0x546bc9,_0x60d3ab){return function(_0x1630a3){if(_0x1630a3){var _0x2c0f8f=typeof _0x60d3ab['offset']==='undefined'&&typeof _0x60d3ab['limit']===_0xe716('0x1a');var _0x3b619d=_0x1630a3[_0xe716('0x1b')];var _0x12a8d1=_0x2c0f8f?0x0:_0x60d3ab[_0xe716('0x1c')];var _0x48db91=_0x2c0f8f?_0x1630a3[_0xe716('0x1b')]:_0x60d3ab[_0xe716('0x1c')]+_0x60d3ab[_0xe716('0x1d')];var _0x53a52b;if(_0x48db91>=_0x3b619d){_0x48db91=_0x3b619d;_0x53a52b=0xc8;}else{_0x53a52b=0xce;}_0x546bc9[_0xe716('0x17')](_0x53a52b);return _0x546bc9[_0xe716('0x1e')]('Content-Range',_0x12a8d1+'-'+_0x48db91+'/'+_0x3b619d)[_0xe716('0x19')](_0x1630a3);}return null;};}function patchUpdates(_0x296cca){return function(_0x2a15a3){try{jsonpatch['apply'](_0x2a15a3,_0x296cca,!![]);}catch(_0x3d9308){return BPromise[_0xe716('0x1f')](_0x3d9308);}return _0x2a15a3[_0xe716('0x20')]();};}function saveUpdates(_0x17bf7a,_0x1e1a19){return function(_0x4fbadf){if(_0x4fbadf){return _0x4fbadf[_0xe716('0x21')](_0x17bf7a)[_0xe716('0x22')](function(_0x5268cc){return _0x5268cc;});}return null;};}function removeEntity(_0x5c4284,_0x5b92de){return function(_0x1d3f0c){if(_0x1d3f0c){return _0x1d3f0c[_0xe716('0x23')]()[_0xe716('0x22')](function(){_0x5c4284['status'](0xcc)[_0xe716('0x18')]();});}};}function handleEntityNotFound(_0x478489,_0x40b89f){return function(_0x21ffb8){if(!_0x21ffb8){_0x478489[_0xe716('0x16')](0x194);}return _0x21ffb8;};}function handleError(_0x44c7ff,_0x5b405f){_0x5b405f=_0x5b405f||0x1f4;return function(_0x238603){logger[_0xe716('0x24')](_0x238603[_0xe716('0x25')]);if(_0x238603[_0xe716('0x26')]){delete _0x238603[_0xe716('0x26')];}_0x44c7ff[_0xe716('0x17')](_0x5b405f)[_0xe716('0x27')](_0x238603);};}exports[_0xe716('0x28')]=function(_0xe001c8,_0x425e65){var _0x20c613={},_0x430cca={},_0x354235={'count':0x0,'rows':[]};var _0x12335d=_[_0xe716('0x29')](db[_0xe716('0x2a')][_0xe716('0x2b')],function(_0x409de2){return{'name':_0x409de2[_0xe716('0x2c')],'type':_0x409de2['type'][_0xe716('0x2d')]};});_0x430cca[_0xe716('0x2e')]=_[_0xe716('0x29')](_0x12335d,_0xe716('0x26'));_0x430cca['query']=_[_0xe716('0x2f')](_0xe001c8[_0xe716('0x30')]);_0x430cca[_0xe716('0x31')]=_[_0xe716('0x32')](_0x430cca['model'],_0x430cca['query']);_0x20c613[_0xe716('0x33')]=_[_0xe716('0x32')](_0x430cca[_0xe716('0x2e')],qs[_0xe716('0x34')](_0xe001c8[_0xe716('0x30')]['fields']));_0x20c613[_0xe716('0x33')]=_0x20c613[_0xe716('0x33')][_0xe716('0x35')]?_0x20c613[_0xe716('0x33')]:_0x430cca[_0xe716('0x2e')];if(!_0xe001c8[_0xe716('0x30')]['hasOwnProperty'](_0xe716('0x36'))){_0x20c613[_0xe716('0x1d')]=qs[_0xe716('0x1d')](_0xe001c8[_0xe716('0x30')]['limit']);_0x20c613[_0xe716('0x1c')]=qs[_0xe716('0x1c')](_0xe001c8[_0xe716('0x30')][_0xe716('0x1c')]);}_0x20c613[_0xe716('0x37')]=qs['sort'](_0xe001c8[_0xe716('0x30')][_0xe716('0x38')]);_0x20c613[_0xe716('0x39')]=qs[_0xe716('0x31')](_[_0xe716('0x3a')](_0xe001c8['query'],_0x430cca[_0xe716('0x31')]),_0x12335d);if(_0xe001c8[_0xe716('0x30')]['filter']){_0x20c613['where']=_[_0xe716('0x3b')](_0x20c613[_0xe716('0x39')],{'$or':_['map'](_0x12335d,function(_0x4a6079){if(_0x4a6079[_0xe716('0x3c')]!==_0xe716('0x3d')){var _0x41c63a={};_0x41c63a[_0x4a6079[_0xe716('0x26')]]={'$like':'%'+_0xe001c8[_0xe716('0x30')][_0xe716('0x3e')]+'%'};return _0x41c63a;}})});}_0x20c613=_[_0xe716('0x3b')]({},_0x20c613,_0xe001c8[_0xe716('0x3f')]);var _0x2941a0={'where':_0x20c613['where']};return db[_0xe716('0x2a')][_0xe716('0x1b')](_0x2941a0)[_0xe716('0x22')](function(_0x27afc5){_0x354235[_0xe716('0x1b')]=_0x27afc5;if(_0xe001c8[_0xe716('0x30')][_0xe716('0x40')]){_0x20c613[_0xe716('0x41')]=[{'all':!![]}];}return db[_0xe716('0x2a')][_0xe716('0x42')](_0x20c613);})['then'](function(_0x2dfd36){_0x354235[_0xe716('0x43')]=_0x2dfd36;return _0x354235;})[_0xe716('0x22')](respondWithFilteredResult(_0x425e65,_0x20c613))['catch'](handleError(_0x425e65,null));};exports['show']=function(_0x4c5674,_0x2f77e4){var _0xd3c5d5={'raw':!![],'where':{'id':_0x4c5674['params']['id']}},_0x44a70a={};_0x44a70a[_0xe716('0x2e')]=_['keys'](db[_0xe716('0x2a')][_0xe716('0x2b')]);_0x44a70a[_0xe716('0x30')]=_[_0xe716('0x2f')](_0x4c5674[_0xe716('0x30')]);_0x44a70a[_0xe716('0x31')]=_['intersection'](_0x44a70a['model'],_0x44a70a[_0xe716('0x30')]);_0xd3c5d5['attributes']=_[_0xe716('0x32')](_0x44a70a[_0xe716('0x2e')],qs[_0xe716('0x34')](_0x4c5674[_0xe716('0x30')][_0xe716('0x34')]));_0xd3c5d5[_0xe716('0x33')]=_0xd3c5d5[_0xe716('0x33')][_0xe716('0x35')]?_0xd3c5d5[_0xe716('0x33')]:_0x44a70a['model'];if(_0x4c5674[_0xe716('0x30')][_0xe716('0x40')]){_0xd3c5d5['include']=[{'all':!![]}];}_0xd3c5d5=_[_0xe716('0x3b')]({},_0xd3c5d5,_0x4c5674[_0xe716('0x3f')]);return db[_0xe716('0x2a')]['find'](_0xd3c5d5)[_0xe716('0x22')](handleEntityNotFound(_0x2f77e4,null))[_0xe716('0x22')](respondWithResult(_0x2f77e4,null))[_0xe716('0x44')](handleError(_0x2f77e4,null));};exports[_0xe716('0x45')]=function(_0x5d59b9,_0x17e2ea){return db[_0xe716('0x2a')][_0xe716('0x45')](_0x5d59b9['body'],{})[_0xe716('0x22')](respondWithResult(_0x17e2ea,0xc9))[_0xe716('0x44')](handleError(_0x17e2ea,null));};exports['update']=function(_0x27e0e6,_0x31923e){if(_0x27e0e6[_0xe716('0x46')]['id']){delete _0x27e0e6['body']['id'];}return db[_0xe716('0x2a')]['find']({'where':{'id':_0x27e0e6[_0xe716('0x47')]['id']}})['then'](handleEntityNotFound(_0x31923e,null))[_0xe716('0x22')](saveUpdates(_0x27e0e6[_0xe716('0x46')],null))[_0xe716('0x22')](respondWithResult(_0x31923e,null))[_0xe716('0x44')](handleError(_0x31923e,null));};exports[_0xe716('0x23')]=function(_0x3ecd93,_0x1cc8c8){return db[_0xe716('0x2a')][_0xe716('0x48')]({'where':{'id':_0x3ecd93[_0xe716('0x47')]['id']}})['then'](handleEntityNotFound(_0x1cc8c8,null))[_0xe716('0x22')](removeEntity(_0x1cc8c8,null))[_0xe716('0x44')](handleError(_0x1cc8c8,null));};exports[_0xe716('0x49')]=function(_0x5d7e60,_0x4201bc){return db['ChatTransferReport'][_0xe716('0x49')]()[_0xe716('0x22')](respondWithResult(_0x4201bc,null))[_0xe716('0x44')](handleError(_0x4201bc,null));};
\ No newline at end of file
index 0eb62e1..648594e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2682=['rimraf','../../config/environment','exports','uniqueid','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x4721cb,_0x40a186){var _0x1c0640=function(_0x5dc9a1){while(--_0x5dc9a1){_0x4721cb['push'](_0x4721cb['shift']());}};_0x1c0640(++_0x40a186);}(_0x2682,0xa9));var _0x2268=function(_0x28cd6a,_0x174f14){_0x28cd6a=_0x28cd6a-0x0;var _0x2f8f78=_0x2682[_0x28cd6a];return _0x2f8f78;};'use strict';var _=require(_0x2268('0x0'));var util=require(_0x2268('0x1'));var logger=require(_0x2268('0x2'))(_0x2268('0x3'));var moment=require(_0x2268('0x4'));var BPromise=require('bluebird');var rp=require(_0x2268('0x5'));var fs=require('fs');var path=require(_0x2268('0x6'));var rimraf=require(_0x2268('0x7'));var config=require(_0x2268('0x8'));var attributes=require('./chatTransferReport.attributes');module[_0x2268('0x9')]=function(_0x2d8d3c,_0x4fe5e1){return _0x2d8d3c['define']('ChatTransferReport',attributes,{'tableName':'report_chat_transfer','paranoid':![],'indexes':[{'name':_0x2268('0xa'),'fields':[_0x2268('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4817=['api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatTransferReport.attributes','exports','ChatTransferReport','report_chat_transfer','uniqueid','util','../../config/logger'];(function(_0x28dcef,_0x3664be){var _0x56c687=function(_0x2a98f5){while(--_0x2a98f5){_0x28dcef['push'](_0x28dcef['shift']());}};_0x56c687(++_0x3664be);}(_0x4817,0x136));var _0x7481=function(_0x128f3b,_0x582556){_0x128f3b=_0x128f3b-0x0;var _0x25ed6a=_0x4817[_0x128f3b];return _0x25ed6a;};'use strict';var _=require('lodash');var util=require(_0x7481('0x0'));var logger=require(_0x7481('0x1'))(_0x7481('0x2'));var moment=require(_0x7481('0x3'));var BPromise=require(_0x7481('0x4'));var rp=require(_0x7481('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7481('0x6'));var config=require(_0x7481('0x7'));var attributes=require(_0x7481('0x8'));module[_0x7481('0x9')]=function(_0x41c951,_0x4fec93){return _0x41c951['define'](_0x7481('0xa'),attributes,{'tableName':_0x7481('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x7481('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 4b2fdbc..62ed873 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7325=['util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ChatTransferReport,\x20%s,\x20%s','result','catch','lodash'];(function(_0x27d8bc,_0x19e010){var _0x4b04cb=function(_0x524568){while(--_0x524568){_0x27d8bc['push'](_0x27d8bc['shift']());}};_0x4b04cb(++_0x19e010);}(_0x7325,0xae));var _0x5732=function(_0x2c3e9f,_0x42ea29){_0x2c3e9f=_0x2c3e9f-0x0;var _0x4a0dbb=_0x7325[_0x2c3e9f];return _0x4a0dbb;};'use strict';var _=require(_0x5732('0x0'));var util=require(_0x5732('0x1'));var moment=require(_0x5732('0x2'));var BPromise=require(_0x5732('0x3'));var rs=require(_0x5732('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5732('0x5'))['db'];var utils=require(_0x5732('0x6'));var logger=require('../../config/logger')(_0x5732('0x7'));var config=require(_0x5732('0x8'));var jayson=require(_0x5732('0x9'));var client=jayson[_0x5732('0xa')][_0x5732('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x51f1a7,_0xee2b00,_0x110bf5){return new BPromise(function(_0x152219,_0x4d4cbc){return client[_0x5732('0xc')](_0x51f1a7,_0x110bf5)[_0x5732('0xd')](function(_0x4160a2){logger[_0x5732('0xe')]('ChatTransferReport,\x20%s,\x20%s',_0xee2b00,_0x5732('0xf'));logger[_0x5732('0x10')](_0x5732('0x11'),_0xee2b00,_0x5732('0xf'),JSON[_0x5732('0x12')](_0x4160a2));if(_0x4160a2[_0x5732('0x13')]){if(_0x4160a2[_0x5732('0x13')][_0x5732('0x14')]===0x1f4){logger['error']('ChatTransferReport,\x20%s,\x20%s',_0xee2b00,_0x4160a2[_0x5732('0x13')][_0x5732('0x15')]);return _0x4d4cbc(_0x4160a2[_0x5732('0x13')][_0x5732('0x15')]);}logger[_0x5732('0x13')](_0x5732('0x16'),_0xee2b00,_0x4160a2[_0x5732('0x13')][_0x5732('0x15')]);return _0x152219(_0x4160a2[_0x5732('0x13')][_0x5732('0x15')]);}else{logger[_0x5732('0xe')]('ChatTransferReport,\x20%s,\x20%s',_0xee2b00,_0x5732('0xf'));_0x152219(_0x4160a2[_0x5732('0x17')][_0x5732('0x15')]);}})[_0x5732('0x18')](function(_0x375dcb){logger['error'](_0x5732('0x16'),_0xee2b00,_0x375dcb);_0x4d4cbc(_0x375dcb);});});}
\ No newline at end of file
+var _0x4ec8=['stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatTransferReport,\x20%s,\x20%s','request\x20sent','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s'];(function(_0x220afa,_0xf5f6cc){var _0x1b79d1=function(_0x178a39){while(--_0x178a39){_0x220afa['push'](_0x220afa['shift']());}};_0x1b79d1(++_0xf5f6cc);}(_0x4ec8,0x119));var _0x84ec=function(_0x3c1f22,_0x479ed1){_0x3c1f22=_0x3c1f22-0x0;var _0x22f5f2=_0x4ec8[_0x3c1f22];return _0x22f5f2;};'use strict';var _=require('lodash');var util=require(_0x84ec('0x0'));var moment=require(_0x84ec('0x1'));var BPromise=require(_0x84ec('0x2'));var rs=require(_0x84ec('0x3'));var fs=require('fs');var Redis=require(_0x84ec('0x4'));var db=require(_0x84ec('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x84ec('0x6'))(_0x84ec('0x7'));var config=require(_0x84ec('0x8'));var jayson=require(_0x84ec('0x9'));var client=jayson[_0x84ec('0xa')][_0x84ec('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x29c944,_0x5d65b8,_0x2a3fa6){return new BPromise(function(_0x36818e,_0x449c78){return client[_0x84ec('0xc')](_0x29c944,_0x2a3fa6)[_0x84ec('0xd')](function(_0x133e11){logger[_0x84ec('0xe')](_0x84ec('0xf'),_0x5d65b8,_0x84ec('0x10'));logger[_0x84ec('0x11')](_0x84ec('0x12'),_0x5d65b8,'request\x20sent',JSON[_0x84ec('0x13')](_0x133e11));if(_0x133e11[_0x84ec('0x14')]){if(_0x133e11[_0x84ec('0x14')][_0x84ec('0x15')]===0x1f4){logger['error'](_0x84ec('0xf'),_0x5d65b8,_0x133e11[_0x84ec('0x14')]['message']);return _0x449c78(_0x133e11[_0x84ec('0x14')][_0x84ec('0x16')]);}logger[_0x84ec('0x14')]('ChatTransferReport,\x20%s,\x20%s',_0x5d65b8,_0x133e11['error'][_0x84ec('0x16')]);return _0x36818e(_0x133e11['error']['message']);}else{logger[_0x84ec('0xe')](_0x84ec('0xf'),_0x5d65b8,_0x84ec('0x10'));_0x36818e(_0x133e11[_0x84ec('0x17')]['message']);}})[_0x84ec('0x18')](function(_0x463810){logger['error']('ChatTransferReport,\x20%s,\x20%s',_0x5d65b8,_0x463810);_0x449c78(_0x463810);});});}
\ No newline at end of file
index e37f480..c953e4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd746=['describe','show','create','put','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatTransferReport.controller','get','isAuthenticated','/describe'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd746,0xc6));var _0x6d74=function(_0x2cc711,_0x300328){_0x2cc711=_0x2cc711-0x0;var _0x31a52e=_0xd746[_0x2cc711];return _0x31a52e;};'use strict';var multer=require(_0x6d74('0x0'));var util=require(_0x6d74('0x1'));var path=require('path');var timeout=require(_0x6d74('0x2'));var express=require(_0x6d74('0x3'));var router=express[_0x6d74('0x4')]();var fs_extra=require(_0x6d74('0x5'));var auth=require(_0x6d74('0x6'));var interaction=require(_0x6d74('0x7'));var config=require('../../config/environment');var controller=require(_0x6d74('0x8'));router[_0x6d74('0x9')]('/',auth[_0x6d74('0xa')](),controller['index']);router[_0x6d74('0x9')](_0x6d74('0xb'),auth['isAuthenticated'](),controller[_0x6d74('0xc')]);router[_0x6d74('0x9')]('/:id',auth[_0x6d74('0xa')](),controller[_0x6d74('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x6d74('0xe')]);router[_0x6d74('0xf')](_0x6d74('0x10'),auth[_0x6d74('0xa')](),controller[_0x6d74('0x11')]);router[_0x6d74('0x12')]('/:id',auth[_0x6d74('0xa')](),controller[_0x6d74('0x13')]);module[_0x6d74('0x14')]=router;
\ No newline at end of file
+var _0x98b7=['multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatTransferReport.controller','get','isAuthenticated','index','describe','show','post','create','update','delete','/:id','destroy','exports'];(function(_0xe7fc2d,_0x9e4b85){var _0x150c7a=function(_0x3ea47e){while(--_0x3ea47e){_0xe7fc2d['push'](_0xe7fc2d['shift']());}};_0x150c7a(++_0x9e4b85);}(_0x98b7,0x1a4));var _0x798b=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x98b7[_0x57b54c];return _0x59cc19;};'use strict';var multer=require(_0x798b('0x0'));var util=require(_0x798b('0x1'));var path=require(_0x798b('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x798b('0x3')]();var fs_extra=require(_0x798b('0x4'));var auth=require(_0x798b('0x5'));var interaction=require(_0x798b('0x6'));var config=require(_0x798b('0x7'));var controller=require(_0x798b('0x8'));router[_0x798b('0x9')]('/',auth[_0x798b('0xa')](),controller[_0x798b('0xb')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x798b('0xc')]);router[_0x798b('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x798b('0xd')]);router[_0x798b('0xe')]('/',auth['isAuthenticated'](),controller[_0x798b('0xf')]);router['put']('/:id',auth[_0x798b('0xa')](),controller[_0x798b('0x10')]);router[_0x798b('0x11')](_0x798b('0x12'),auth[_0x798b('0xa')](),controller[_0x798b('0x13')]);module[_0x798b('0x14')]=router;
\ No newline at end of file
index 37b3554..19222a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9692=['randomstring','exports','STRING','Agent','#011F6A','INTEGER','BOOLEAN','ENUM','rounded','squared','Chat','Send','Contact\x20us','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Thanks\x20you\x20for\x20your\x20time!','Skip','Feedback','star','thumb','stringify','input','text','name','email','parse','getDataValue','setDataValue','Comments','Leave\x20your\x20comments','offlineForm','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','alternate','#fafafa','System','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize'];(function(_0xc587e1,_0x205289){var _0xa6e1a4=function(_0xed352e){while(--_0xed352e){_0xc587e1['push'](_0xc587e1['shift']());}};_0xa6e1a4(++_0x205289);}(_0x9692,0x164));var _0x2969=function(_0x511342,_0x575123){_0x511342=_0x511342-0x0;var _0x869e3d=_0x9692[_0x511342];return _0x869e3d;};'use strict';var Sequelize=require(_0x2969('0x0'));var rs=require(_0x2969('0x1'));module[_0x2969('0x2')]={'name':{'type':Sequelize[_0x2969('0x3')],'allowNull':![]},'address':{'type':Sequelize['STRING'],'allowNull':![],'unique':'address'},'description':{'type':Sequelize[_0x2969('0x3')]},'mapKey':{'type':Sequelize['STRING'],'defaultValue':'email'},'mapKeyOffline':{'type':Sequelize[_0x2969('0x3')],'defaultValue':'email'},'key':{'type':Sequelize[_0x2969('0x3')],'allowNull':![]},'agentAlias':{'type':Sequelize['STRING'],'defaultValue':_0x2969('0x4')},'customerAlias':{'type':Sequelize['STRING'],'defaultValue':'Me'},'color':{'type':Sequelize[_0x2969('0x3')],'allowNull':![],'defaultValue':_0x2969('0x5'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x2969('0x3')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x2969('0x6')],'defaultValue':0xf},'remote':{'type':Sequelize[_0x2969('0x3')]},'animation':{'type':Sequelize[_0x2969('0x7')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x2969('0x8')](_0x2969('0x9'),_0x2969('0xa')),'defaultValue':'rounded'},'header_online':{'type':Sequelize[_0x2969('0x3')],'defaultValue':'We\x20are\x20here!'},'start_chat_button':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0xb')},'offline_chat_button':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0xc')},'header_offline':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0xd')},'download_transcript':{'type':Sequelize[_0x2969('0x7')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x2969('0x6')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0xe')},'defaultWhiteLabel':{'type':Sequelize[_0x2969('0x7')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x2969('0xf')]},'closingQuestion':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0x10')},'formSubmitSuccessMessage':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0x11')},'formSubmitFailureMessage':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0x12')},'noteTitle':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0x13')},'placeholderMessage':{'type':Sequelize[_0x2969('0x3')],'defaultValue':'Type\x20a\x20message'},'closingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x2969('0x14')},'closingMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0x2969('0xc')},'skipMessageButton':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0x15')},'conditionAgreement':{'type':Sequelize[_0x2969('0x7')],'defaultValue':![]},'enableRating':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x2969('0x7')],'defaultValue':![]},'enableSendButton':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0x16')},'ratingType':{'type':Sequelize[_0x2969('0x8')](_0x2969('0x17'),_0x2969('0x18')),'defaultValue':_0x2969('0x17')},'ratingStarsNumber':{'type':Sequelize[_0x2969('0x6')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x2969('0xf')],'defaultValue':function(){return JSON[_0x2969('0x19')]({'items':[{'type':_0x2969('0x1a'),'variable':null,'config':{'placeholder':'name','type':_0x2969('0x1b'),'required':!![]},'props':{'title':_0x2969('0x1c'),'helpText':''}},{'type':'input','props':{'title':_0x2969('0x1d'),'helpText':''},'config':{'required':!![],'placeholder':_0x2969('0x1d'),'type':'email'},'variable':null}],'fromKey':0x1});},'get':function(){return this['getDataValue']('onlineForm')?JSON[_0x2969('0x1e')](this[_0x2969('0x1f')]('onlineForm')):{};},'set':function(_0x5b3e13){return this[_0x2969('0x20')]('onlineForm',JSON[_0x2969('0x19')](_0x5b3e13));}},'offlineForm':{'type':Sequelize[_0x2969('0xf')],'defaultValue':function(){return JSON[_0x2969('0x19')]({'items':[{'type':_0x2969('0x1a'),'props':{'title':_0x2969('0x1d'),'helpText':''},'config':{'required':!![],'placeholder':_0x2969('0x1d'),'type':_0x2969('0x1d')},'variable':null},{'type':'textarea','config':{'placeholder':_0x2969('0x21')},'props':{'title':_0x2969('0x21'),'helpText':_0x2969('0x22')}}],'fromKey':0x0});},'get':function(){return this[_0x2969('0x1f')](_0x2969('0x23'))?JSON[_0x2969('0x1e')](this[_0x2969('0x1f')](_0x2969('0x23'))):{};},'set':function(_0x45eb30){return this[_0x2969('0x20')](_0x2969('0x23'),JSON[_0x2969('0x19')](_0x45eb30));}},'token':{'type':Sequelize[_0x2969('0x3')],'defaultValue':function(){return rs['generate']();}},'autoclose':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x2969('0x7')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x2969('0x3')]},'forwardOffline':{'type':Sequelize[_0x2969('0x7')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x2969('0x3')]},'waitingTitle':{'type':Sequelize['STRING'],'defaultValue':_0x2969('0x24')},'waitingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x2969('0x25')},'offlineMessageSubject':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0x26')},'offlineMessageBody':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0x27')},'enableUnmanagedNote':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0x28')},'skipUnmanaged':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0x15')},'sendUnmanaged':{'type':Sequelize[_0x2969('0x3')],'defaultValue':'Send'},'enableCustomerAttachment':{'type':Sequelize[_0x2969('0x7')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x2969('0x7')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x2969('0xf')]},'showAgentAvatar':{'type':Sequelize[_0x2969('0x7')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x2969('0x3')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x2969('0x29');}},'notificationSound':{'type':Sequelize[_0x2969('0x7')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x2969('0x7')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x2969('0x7')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0x2a')},'waitForTheAssignedAgent':{'type':Sequelize[_0x2969('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x2969('0x3')],'defaultValue':'bottom_right'},'verticalAlignment':{'type':Sequelize[_0x2969('0x6')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0x2b')},'defaultTitle':{'type':Sequelize['STRING']},'customerAvatar':{'type':Sequelize[_0x2969('0xf')]},'showCustomerAvatar':{'type':Sequelize[_0x2969('0x7')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x2969('0x6')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x2969('0x3')],'allowNull':![],'defaultValue':_0x2969('0x2c'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x2969('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x2969('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x2969('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x2969('0x3')],'defaultValue':_0x2969('0x2d')},'systemAvatar':{'type':Sequelize[_0x2969('0xf')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x2969('0x6')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x2969('0x2e'),'set':function(_0x1517ef){if(!_0x1517ef)this[_0x2969('0x20')](_0x2969('0x2f'),null);this[_0x2969('0x20')](_0x2969('0x30'),_0x1517ef);}},'vidaooEscalation':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x2969('0x3')]},'vidaooTopic':{'type':Sequelize[_0x2969('0x3')],'allowNull':![],'defaultValue':_0x2969('0x31')},'vidaooNote':{'type':Sequelize[_0x2969('0x3')],'defaultValue':function(){return _0x2969('0x32');}},'vidaooMetadata':{'type':Sequelize[_0x2969('0xf')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x2969('0x7')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x6545=['Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','star','stringify','input','name','text','onlineForm','parse','setDataValue','textarea','Comments','getDataValue','offlineForm','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','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDisposition','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','STRING','email','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','rounded','squared','We\x20are\x20here!','Chat','Send','Contact\x20us','TEXT'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0x6545,0x17e));var _0x5654=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6545[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require('sequelize');var rs=require('randomstring');module['exports']={'name':{'type':Sequelize[_0x5654('0x0')],'allowNull':![]},'address':{'type':Sequelize[_0x5654('0x0')],'allowNull':![],'unique':'address'},'description':{'type':Sequelize['STRING']},'mapKey':{'type':Sequelize['STRING'],'defaultValue':_0x5654('0x1')},'mapKeyOffline':{'type':Sequelize[_0x5654('0x0')],'defaultValue':_0x5654('0x1')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x5654('0x0')],'defaultValue':'Agent'},'customerAlias':{'type':Sequelize[_0x5654('0x0')],'defaultValue':'Me'},'color':{'type':Sequelize[_0x5654('0x0')],'allowNull':![],'defaultValue':_0x5654('0x2'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x5654('0x0')],'allowNull':![],'defaultValue':_0x5654('0x2'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x5654('0x0')],'allowNull':![],'defaultValue':_0x5654('0x3'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x5654('0x4')],'defaultValue':0xf},'remote':{'type':Sequelize[_0x5654('0x0')]},'animation':{'type':Sequelize[_0x5654('0x5')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x5654('0x6')](_0x5654('0x7'),_0x5654('0x8')),'defaultValue':_0x5654('0x7')},'header_online':{'type':Sequelize[_0x5654('0x0')],'defaultValue':_0x5654('0x9')},'start_chat_button':{'type':Sequelize[_0x5654('0x0')],'defaultValue':_0x5654('0xa')},'offline_chat_button':{'type':Sequelize[_0x5654('0x0')],'defaultValue':_0x5654('0xb')},'header_offline':{'type':Sequelize[_0x5654('0x0')],'defaultValue':_0x5654('0xc')},'download_transcript':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x5654('0x0')],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x5654('0xd')]},'closingQuestion':{'type':Sequelize[_0x5654('0x0')],'defaultValue':_0x5654('0xe')},'formSubmitSuccessMessage':{'type':Sequelize[_0x5654('0x0')],'defaultValue':_0x5654('0xf')},'formSubmitFailureMessage':{'type':Sequelize[_0x5654('0x0')],'defaultValue':_0x5654('0x10')},'noteTitle':{'type':Sequelize[_0x5654('0x0')],'defaultValue':_0x5654('0x11')},'placeholderMessage':{'type':Sequelize[_0x5654('0x0')],'defaultValue':_0x5654('0x12')},'closingMessage':{'type':Sequelize[_0x5654('0x0')],'defaultValue':_0x5654('0x13')},'closingMessageButton':{'type':Sequelize[_0x5654('0x0')],'defaultValue':'Send'},'skipMessageButton':{'type':Sequelize[_0x5654('0x0')],'defaultValue':'Skip'},'conditionAgreement':{'type':Sequelize[_0x5654('0x5')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x5654('0x5')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x5654('0x5')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x5654('0x5')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize['STRING'],'defaultValue':'Feedback'},'ratingType':{'type':Sequelize['ENUM']('star','thumb'),'defaultValue':_0x5654('0x14')},'ratingStarsNumber':{'type':Sequelize[_0x5654('0x4')],'defaultValue':0x5},'onlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0x5654('0x15')]({'items':[{'type':_0x5654('0x16'),'variable':null,'config':{'placeholder':_0x5654('0x17'),'type':_0x5654('0x18'),'required':!![]},'props':{'title':'name','helpText':''}},{'type':_0x5654('0x16'),'props':{'title':_0x5654('0x1'),'helpText':''},'config':{'required':!![],'placeholder':_0x5654('0x1'),'type':'email'},'variable':null}],'fromKey':0x1});},'get':function(){return this['getDataValue'](_0x5654('0x19'))?JSON[_0x5654('0x1a')](this['getDataValue']('onlineForm')):{};},'set':function(_0x5740a0){return this[_0x5654('0x1b')](_0x5654('0x19'),JSON[_0x5654('0x15')](_0x5740a0));}},'offlineForm':{'type':Sequelize[_0x5654('0xd')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':'input','props':{'title':_0x5654('0x1'),'helpText':''},'config':{'required':!![],'placeholder':_0x5654('0x1'),'type':_0x5654('0x1')},'variable':null},{'type':_0x5654('0x1c'),'config':{'placeholder':_0x5654('0x1d')},'props':{'title':_0x5654('0x1d'),'helpText':'Leave\x20your\x20comments'}}],'fromKey':0x0});},'get':function(){return this[_0x5654('0x1e')](_0x5654('0x1f'))?JSON['parse'](this[_0x5654('0x1e')](_0x5654('0x1f'))):{};},'set':function(_0x2ecd79){return this[_0x5654('0x1b')](_0x5654('0x1f'),JSON[_0x5654('0x15')](_0x2ecd79));}},'token':{'type':Sequelize[_0x5654('0x0')],'defaultValue':function(){return rs['generate']();}},'autoclose':{'type':Sequelize[_0x5654('0x5')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x5654('0x5')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x5654('0x5')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x5654('0x0')]},'forwardOffline':{'type':Sequelize[_0x5654('0x5')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x5654('0x0')]},'waitingTitle':{'type':Sequelize[_0x5654('0x0')],'defaultValue':'All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.'},'waitingMessage':{'type':Sequelize[_0x5654('0x0')],'defaultValue':'Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.'},'offlineMessageSubject':{'type':Sequelize[_0x5654('0x0')],'defaultValue':_0x5654('0x20')},'offlineMessageBody':{'type':Sequelize[_0x5654('0x0')],'defaultValue':'You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:'},'enableUnmanagedNote':{'type':Sequelize[_0x5654('0x5')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x5654('0x0')],'defaultValue':_0x5654('0x21')},'skipUnmanaged':{'type':Sequelize['STRING'],'defaultValue':_0x5654('0x22')},'sendUnmanaged':{'type':Sequelize[_0x5654('0x0')],'defaultValue':_0x5654('0xb')},'enableCustomerAttachment':{'type':Sequelize[_0x5654('0x5')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x5654('0x5')],'defaultValue':![]},'agentAvatar':{'type':Sequelize['TEXT']},'showAgentAvatar':{'type':Sequelize[_0x5654('0x5')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x5654('0x0')]},'notificationTemplate':{'type':Sequelize[_0x5654('0xd')],'defaultValue':function(){return _0x5654('0x23');}},'notificationSound':{'type':Sequelize[_0x5654('0x5')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x5654('0x5')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x5654('0x5')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x5654('0x0')],'defaultValue':_0x5654('0x24')},'waitForTheAssignedAgent':{'type':Sequelize[_0x5654('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x5654('0x0')],'defaultValue':_0x5654('0x25')},'verticalAlignment':{'type':Sequelize[_0x5654('0x4')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize[_0x5654('0x0')],'defaultValue':_0x5654('0x26')},'defaultTitle':{'type':Sequelize['STRING']},'customerAvatar':{'type':Sequelize[_0x5654('0xd')]},'showCustomerAvatar':{'type':Sequelize[_0x5654('0x5')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x5654('0x4')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x5654('0x27'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x5654('0x5')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x5654('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x5654('0x0')],'defaultValue':_0x5654('0x28')},'systemAvatar':{'type':Sequelize[_0x5654('0xd')]},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0x5654('0x29')},'mandatoryDisposition':{'type':Sequelize[_0x5654('0x5')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x22b267){if(!_0x22b267)this['setDataValue']('mandatoryDispositionPauseId',null);this[_0x5654('0x1b')](_0x5654('0x2a'),_0x22b267);}},'vidaooEscalation':{'type':Sequelize[_0x5654('0x5')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x5654('0x0')]},'vidaooTopic':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'Generated\x20by\x20XCALLY\x20Motion'},'vidaooNote':{'type':Sequelize[_0x5654('0x0')],'defaultValue':function(){return _0x5654('0x2b');}},'vidaooMetadata':{'type':Sequelize[_0x5654('0xd')],'defaultValue':null},'openNewInteraction':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x5654('0xd')]}};
\ No newline at end of file
index 0013b39..47837c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1b0=['close','unmanaged','ChatMessage','AttachmentId','UserId','User','unshift','agent','forcedOwnership','Start','startRouting','EventManager','files','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline','MailAccount','findOrCreate','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','render','toPairs','offlineMessageBody','ChatOfflineMessage','originalname','server','offline-chat','basename','transaction','Attachment','bulkCreate','MailServerOut','Smtp','forwardOffline','forwardOfflineAddress','service','host','port','secure','authentication','auth','sendMail','\x22%s\x22\x20<%s>','email','offlineMessageSubject','openNewInteraction','MailAccountId','mimetype','subjectOffline','mapValues','firstName','Chat','NotifyMailAccount','notifyMail','attachments','remove','addInteraction','getInteractions','Contact','fullname','Tag','Tags','color','tag','Command','getSnippet','timezone','interval','iftime\x20%s','indexOf','ONLINE','OFFLINE','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','inspect','No\x20timezone','Interval','getProactiveActions','getLicense','virtual','License','increment','chatLicenseExceeded','Intervals','all','some','server/files/chat/iframe.ejs','remote','x-real-ip','connection','remoteAddress','alignment','textColor','backgroundColor','addApplications','sequelize','findAndCountAll','getApplications','chatProactiveAction','ChatProactiveAction','online','false','onlineForm','items','fromKey','getOfflineMessages','Attachments','addAgents','omit','emit','userChatWebsite:save','isArray','userChatWebsite:remove','getAgents','rimraf','fast-json-patch','request-promise','bluebird','util','path','sox','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatWebsite.socket','register','jayson/promise','client','http','request','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','json','limit','count','offset','apply','reject','save','update','then','destroy','get','UserProfileResource','end','name','send','index','Pause','mandatoryDispositionPause','ChatWebsite','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','options','include','findAll','rows','show','params','rawAttributes','includeAll','merge','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ChatWebsites','UserProfileSection','userProfileId','autoAssociation','body','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','findOne','order','removeDispositions','ids','addAnswer','CannedAnswer','removeAnswers','addLogo','file','filename','addAvatar','addCustomerAvatar','customerAvatar','systemAvatar','getLogo','root','sitepic','../../config/license/util','join','server/files/images/logos/','download','server/files/images/avatars/default_avatar.png','isNil','agentAvatar','existsSync','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','user-agent-parser','headers','user-agent','chat','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','from','Sequelize','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','CmContact','Contacts','ChatApplication','Applications','List','account','applications','list','orderBy','asc','contact','cf-connecting-ip','x-forwarded-for','first','x-real-port','referer','browser','version','format','%s\x20%s','unknown','device','vendor','%s\x20%s\x20%s','threadId','externalUrl','ChatInteraction','ContactId','interaction','spread','lastName','messageId','created','autoclose','push'];(function(_0x4aaa74,_0x160997){var _0x149204=function(_0x49bbfe){while(--_0x49bbfe){_0x4aaa74['push'](_0x4aaa74['shift']());}};_0x149204(++_0x160997);}(_0xb1b0,0x71));var _0x0b1b=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xb1b0[_0x42cae2];return _0x5f256f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0b1b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0b1b('0x1'));var rp=require(_0x0b1b('0x2'));var moment=require('moment');var BPromise=require(_0x0b1b('0x3'));var Mustache=require('mustache');var util=require(_0x0b1b('0x4'));var path=require(_0x0b1b('0x5'));var sox=require(_0x0b1b('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0b1b('0x7'));var squel=require(_0x0b1b('0x8'));var crypto=require(_0x0b1b('0x9'));var jsforce=require(_0x0b1b('0xa'));var deskjs=require(_0x0b1b('0xb'));var toCsv=require('to-csv');var querystring=require(_0x0b1b('0xc'));var Papa=require(_0x0b1b('0xd'));var Redis=require(_0x0b1b('0xe'));var authService=require(_0x0b1b('0xf'));var qs=require(_0x0b1b('0x10'));var as=require(_0x0b1b('0x11'));var hardwareService=require(_0x0b1b('0x12'));var logger=require(_0x0b1b('0x13'))(_0x0b1b('0x14'));var utils=require(_0x0b1b('0x15'));var config=require(_0x0b1b('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x0b1b('0x17'))['db'];config[_0x0b1b('0x18')]=_[_0x0b1b('0x19')](config[_0x0b1b('0x18')],{'host':_0x0b1b('0x1a'),'port':0x18eb});var socket=require(_0x0b1b('0x1b'))(new Redis(config[_0x0b1b('0x18')]));require(_0x0b1b('0x1c'))[_0x0b1b('0x1d')](socket);var jayson=require(_0x0b1b('0x1e'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0x0b1b('0x1f')][_0x0b1b('0x20')]({'port':0x232a});var client9003=jayson[_0x0b1b('0x1f')][_0x0b1b('0x20')]({'port':0x232b});var client9001=jayson[_0x0b1b('0x1f')][_0x0b1b('0x20')]({'port':0x2329});function respondWithRpcPromise(_0x3c3e3c,_0x3560d0,_0x4337ae,_0x5c7aeb){return new BPromise(function(_0x101b5b,_0x4b960f){var _0x2a31d3=_0x5c7aeb||client;return _0x2a31d3[_0x0b1b('0x21')](_0x3c3e3c,_0x4337ae)['then'](function(_0x16512b){logger[_0x0b1b('0x22')](_0x0b1b('0x23'),_0x3560d0,_0x0b1b('0x24'));logger[_0x0b1b('0x25')](_0x0b1b('0x26'),_0x3560d0,_0x0b1b('0x24'),JSON['stringify'](_0x16512b));if(_0x16512b[_0x0b1b('0x27')]){if(_0x16512b['error'][_0x0b1b('0x28')]===0x1f4){logger[_0x0b1b('0x27')](_0x0b1b('0x23'),_0x3560d0,_0x16512b['error'][_0x0b1b('0x29')]);return _0x4b960f(_0x16512b[_0x0b1b('0x27')][_0x0b1b('0x29')]);}logger['error'](_0x0b1b('0x23'),_0x3560d0,_0x16512b[_0x0b1b('0x27')][_0x0b1b('0x29')]);return _0x101b5b(_0x16512b[_0x0b1b('0x27')][_0x0b1b('0x29')]);}else{logger[_0x0b1b('0x22')]('ChatWebsite,\x20%s,\x20%s',_0x3560d0,'request\x20sent');_0x101b5b(_0x16512b[_0x0b1b('0x2a')][_0x0b1b('0x29')]);}})[_0x0b1b('0x2b')](function(_0x5767e1){logger[_0x0b1b('0x27')]('ChatWebsite,\x20%s,\x20%s',_0x3560d0,_0x5767e1);_0x4b960f(_0x5767e1);});});}function respondWithStatusCode(_0x3fb910,_0x213bf2){_0x213bf2=_0x213bf2||0xcc;return function(_0x3ae0ec){if(_0x3ae0ec){return _0x3fb910[_0x0b1b('0x2c')](_0x213bf2);}return _0x3fb910[_0x0b1b('0x2d')](_0x213bf2)['end']();};}function respondWithResult(_0x34562a,_0x23a78a){_0x23a78a=_0x23a78a||0xc8;return function(_0x158c3e){if(_0x158c3e){return _0x34562a[_0x0b1b('0x2d')](_0x23a78a)[_0x0b1b('0x2e')](_0x158c3e);}};}function respondWithFilteredResult(_0x243cba,_0x1afcf8){return function(_0x2b0bfd){if(_0x2b0bfd){var _0x2bf0fc=typeof _0x1afcf8['offset']==='undefined'&&typeof _0x1afcf8[_0x0b1b('0x2f')]==='undefined';var _0x165752=_0x2b0bfd[_0x0b1b('0x30')];var _0x24fcb7=_0x2bf0fc?0x0:_0x1afcf8[_0x0b1b('0x31')];var _0x4366cb=_0x2bf0fc?_0x2b0bfd[_0x0b1b('0x30')]:_0x1afcf8[_0x0b1b('0x31')]+_0x1afcf8[_0x0b1b('0x2f')];var _0x52bbc2;if(_0x4366cb>=_0x165752){_0x4366cb=_0x165752;_0x52bbc2=0xc8;}else{_0x52bbc2=0xce;}_0x243cba[_0x0b1b('0x2d')](_0x52bbc2);return _0x243cba['set']('Content-Range',_0x24fcb7+'-'+_0x4366cb+'/'+_0x165752)[_0x0b1b('0x2e')](_0x2b0bfd);}return null;};}function patchUpdates(_0x132611){return function(_0x1151fe){try{jsonpatch[_0x0b1b('0x32')](_0x1151fe,_0x132611,!![]);}catch(_0x50b41d){return BPromise[_0x0b1b('0x33')](_0x50b41d);}return _0x1151fe[_0x0b1b('0x34')]();};}function saveUpdates(_0x1a9e76,_0x4222c0){return function(_0x2de948){if(_0x2de948){return _0x2de948[_0x0b1b('0x35')](_0x1a9e76)[_0x0b1b('0x36')](function(_0x58afc0){return _0x58afc0;});}return null;};}function removeEntity(_0x1ce4ac,_0x1f03f0){return function(_0x182fdb){if(_0x182fdb){return _0x182fdb[_0x0b1b('0x37')]()[_0x0b1b('0x36')](function(){var _0x54a307=_0x182fdb[_0x0b1b('0x38')]({'plain':!![]});var _0x2b3f9b='ChatWebsites';return db[_0x0b1b('0x39')][_0x0b1b('0x37')]({'where':{'type':_0x2b3f9b,'resourceId':_0x54a307['id']}})['then'](function(){return _0x182fdb;});})[_0x0b1b('0x36')](function(){_0x1ce4ac[_0x0b1b('0x2d')](0xcc)[_0x0b1b('0x3a')]();});}};}function handleEntityNotFound(_0x2a7050,_0x119432){return function(_0x1be23b){if(!_0x1be23b){_0x2a7050[_0x0b1b('0x2c')](0x194);}return _0x1be23b;};}function handleError(_0x1d8820,_0x13efbd){_0x13efbd=_0x13efbd||0x1f4;return function(_0x4c1a70){logger[_0x0b1b('0x27')](_0x4c1a70['stack']);if(_0x4c1a70[_0x0b1b('0x3b')]){delete _0x4c1a70[_0x0b1b('0x3b')];}_0x1d8820[_0x0b1b('0x2d')](_0x13efbd)[_0x0b1b('0x3c')](_0x4c1a70);};}exports[_0x0b1b('0x3d')]=function(_0x2e51f6,_0x43edd1){var _0x3d5213={'include':[{'model':db[_0x0b1b('0x3e')],'as':_0x0b1b('0x3f')}]},_0x5d1931={},_0x2d0349={'count':0x0,'rows':[]};var _0x2d7cde=_['map'](db[_0x0b1b('0x40')]['rawAttributes'],function(_0x59870e){return{'name':_0x59870e[_0x0b1b('0x41')],'type':_0x59870e[_0x0b1b('0x42')][_0x0b1b('0x43')]};});_0x5d1931[_0x0b1b('0x44')]=_[_0x0b1b('0x45')](_0x2d7cde,_0x0b1b('0x3b'));_0x5d1931[_0x0b1b('0x46')]=_[_0x0b1b('0x47')](_0x2e51f6[_0x0b1b('0x46')]);_0x5d1931['filters']=_[_0x0b1b('0x48')](_0x5d1931[_0x0b1b('0x44')],_0x5d1931[_0x0b1b('0x46')]);_0x3d5213[_0x0b1b('0x49')]=_[_0x0b1b('0x48')](_0x5d1931[_0x0b1b('0x44')],qs[_0x0b1b('0x4a')](_0x2e51f6['query']['fields']));_0x3d5213[_0x0b1b('0x49')]=_0x3d5213[_0x0b1b('0x49')][_0x0b1b('0x4b')]?_0x3d5213['attributes']:_0x5d1931[_0x0b1b('0x44')];if(!_0x2e51f6[_0x0b1b('0x46')][_0x0b1b('0x4c')](_0x0b1b('0x4d'))){_0x3d5213[_0x0b1b('0x2f')]=qs[_0x0b1b('0x2f')](_0x2e51f6[_0x0b1b('0x46')][_0x0b1b('0x2f')]);_0x3d5213['offset']=qs[_0x0b1b('0x31')](_0x2e51f6[_0x0b1b('0x46')][_0x0b1b('0x31')]);}_0x3d5213['order']=qs[_0x0b1b('0x4e')](_0x2e51f6['query'][_0x0b1b('0x4e')]);_0x3d5213[_0x0b1b('0x4f')]=qs[_0x0b1b('0x50')](_[_0x0b1b('0x51')](_0x2e51f6['query'],_0x5d1931[_0x0b1b('0x50')]),_0x2d7cde);if(_0x2e51f6[_0x0b1b('0x46')][_0x0b1b('0x52')]){_0x3d5213[_0x0b1b('0x4f')]=_['merge'](_0x3d5213[_0x0b1b('0x4f')],{'$or':_['map'](_0x2d7cde,function(_0x2224f2){if(_0x2224f2[_0x0b1b('0x42')]!=='VIRTUAL'){var _0x4c169={};_0x4c169[_0x2224f2[_0x0b1b('0x3b')]]={'$like':'%'+_0x2e51f6[_0x0b1b('0x46')][_0x0b1b('0x52')]+'%'};return _0x4c169;}})});}_0x3d5213=_['merge']({},_0x3d5213,_0x2e51f6[_0x0b1b('0x53')]);var _0x108e37={'where':_0x3d5213['where']};return db[_0x0b1b('0x40')]['count'](_0x108e37)[_0x0b1b('0x36')](function(_0x1c9e4){_0x2d0349['count']=_0x1c9e4;if(_0x2e51f6[_0x0b1b('0x46')]['includeAll']){_0x3d5213[_0x0b1b('0x54')]=[{'all':!![]}];}return db[_0x0b1b('0x40')][_0x0b1b('0x55')](_0x3d5213);})['then'](function(_0x1467ef){_0x2d0349[_0x0b1b('0x56')]=_0x1467ef;return _0x2d0349;})['then'](respondWithFilteredResult(_0x43edd1,_0x3d5213))['catch'](handleError(_0x43edd1,null));};exports[_0x0b1b('0x57')]=function(_0x2da48d,_0x2f688a){var _0x37fe09={'raw':![],'where':{'id':_0x2da48d[_0x0b1b('0x58')]['id']},'include':[{'model':db[_0x0b1b('0x3e')],'as':_0x0b1b('0x3f')}]},_0x8eafe4={};_0x8eafe4[_0x0b1b('0x44')]=_[_0x0b1b('0x47')](db[_0x0b1b('0x40')][_0x0b1b('0x59')]);_0x8eafe4[_0x0b1b('0x46')]=_['keys'](_0x2da48d[_0x0b1b('0x46')]);_0x8eafe4['filters']=_[_0x0b1b('0x48')](_0x8eafe4[_0x0b1b('0x44')],_0x8eafe4[_0x0b1b('0x46')]);_0x37fe09[_0x0b1b('0x49')]=_[_0x0b1b('0x48')](_0x8eafe4[_0x0b1b('0x44')],qs['fields'](_0x2da48d['query'][_0x0b1b('0x4a')]));_0x37fe09[_0x0b1b('0x49')]=_0x37fe09['attributes']['length']?_0x37fe09[_0x0b1b('0x49')]:_0x8eafe4[_0x0b1b('0x44')];if(_0x2da48d[_0x0b1b('0x46')][_0x0b1b('0x5a')]){_0x37fe09[_0x0b1b('0x54')]=[{'all':!![]}];}_0x37fe09=_[_0x0b1b('0x5b')]({},_0x37fe09,_0x2da48d['options']);return db[_0x0b1b('0x40')][_0x0b1b('0x5c')](_0x37fe09)[_0x0b1b('0x36')](handleEntityNotFound(_0x2f688a,null))[_0x0b1b('0x36')](respondWithResult(_0x2f688a,null))[_0x0b1b('0x2b')](handleError(_0x2f688a,null));};exports[_0x0b1b('0x5d')]=function(_0x2a1c59,_0x10a027){return db[_0x0b1b('0x40')][_0x0b1b('0x5d')](_0x2a1c59['body'],{})[_0x0b1b('0x36')](function(_0xd8f9c0){var _0x59f075=_0x2a1c59[_0x0b1b('0x5e')][_0x0b1b('0x38')]({'plain':!![]});if(!_0x59f075)throw new Error(_0x0b1b('0x5f'));if(_0x59f075[_0x0b1b('0x60')]===_0x0b1b('0x5e')){var _0x2d7f5e=_0xd8f9c0[_0x0b1b('0x38')]({'plain':!![]});var _0x3a241b=_0x0b1b('0x61');return db[_0x0b1b('0x62')][_0x0b1b('0x5c')]({'where':{'name':_0x3a241b,'userProfileId':_0x59f075[_0x0b1b('0x63')]},'raw':!![]})[_0x0b1b('0x36')](function(_0x4ef4da){if(_0x4ef4da&&_0x4ef4da[_0x0b1b('0x64')]===0x0){return db[_0x0b1b('0x39')][_0x0b1b('0x5d')]({'name':_0x2d7f5e['name'],'resourceId':_0x2d7f5e['id'],'type':_0x4ef4da[_0x0b1b('0x3b')],'sectionId':_0x4ef4da['id']},{})[_0x0b1b('0x36')](function(){return _0xd8f9c0;});}else{return _0xd8f9c0;}})[_0x0b1b('0x2b')](function(_0x192b7d){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x192b7d);throw _0x192b7d;});}return _0xd8f9c0;})[_0x0b1b('0x36')](respondWithResult(_0x10a027,0xc9))['catch'](handleError(_0x10a027,null));};exports['update']=function(_0x2383ab,_0x1f2b41){if(_0x2383ab[_0x0b1b('0x65')]['id']){delete _0x2383ab[_0x0b1b('0x65')]['id'];}return db[_0x0b1b('0x40')][_0x0b1b('0x5c')]({'where':{'id':_0x2383ab['params']['id']},'include':[{'model':db[_0x0b1b('0x3e')],'as':_0x0b1b('0x3f')}]})[_0x0b1b('0x36')](handleEntityNotFound(_0x1f2b41,null))[_0x0b1b('0x36')](saveUpdates(_0x2383ab[_0x0b1b('0x65')],null))[_0x0b1b('0x36')](respondWithResult(_0x1f2b41,null))[_0x0b1b('0x2b')](handleError(_0x1f2b41,null));};exports['destroy']=function(_0x34d930,_0x227c7b){return db[_0x0b1b('0x40')][_0x0b1b('0x5c')]({'where':{'id':_0x34d930[_0x0b1b('0x58')]['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x227c7b,null))[_0x0b1b('0x36')](removeEntity(_0x227c7b,null))[_0x0b1b('0x2b')](handleError(_0x227c7b,null));};exports[_0x0b1b('0x66')]=function(_0x15d4fb,_0x4733dd){return db['ChatWebsite'][_0x0b1b('0x66')]()['then'](respondWithResult(_0x4733dd,null))[_0x0b1b('0x2b')](handleError(_0x4733dd,null));};exports[_0x0b1b('0x67')]=function(_0x1e4392,_0x367969,_0x221406){if(_0x1e4392[_0x0b1b('0x65')]['id']){delete _0x1e4392[_0x0b1b('0x65')]['id'];}return db['ChatWebsite'][_0x0b1b('0x5c')]({'where':{'id':_0x1e4392[_0x0b1b('0x58')]['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x367969,null))[_0x0b1b('0x36')](function(_0x556ad6){if(_0x556ad6){_0x1e4392[_0x0b1b('0x65')][_0x0b1b('0x68')]=_0x556ad6['id'];return db[_0x0b1b('0x69')]['create'](_0x1e4392[_0x0b1b('0x65')]);}})[_0x0b1b('0x36')](respondWithResult(_0x367969,null))[_0x0b1b('0x2b')](handleError(_0x367969,null));};exports[_0x0b1b('0x6a')]=function(_0x47b694,_0x57b091,_0x359266){var _0x5b2738={'raw':![],'where':{}};var _0x28f428={};var _0x1fcc30={'count':0x0,'rows':[]};return db[_0x0b1b('0x40')][_0x0b1b('0x6b')]({'where':{'id':_0x47b694['params']['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x57b091,null))[_0x0b1b('0x36')](function(_0x2c837a){if(_0x2c837a){_0x28f428[_0x0b1b('0x44')]=_[_0x0b1b('0x47')](db['Disposition']['rawAttributes']);_0x28f428['query']=_[_0x0b1b('0x47')](_0x47b694['query']);_0x28f428[_0x0b1b('0x50')]=_[_0x0b1b('0x48')](_0x28f428[_0x0b1b('0x44')],_0x28f428[_0x0b1b('0x46')]);_0x5b2738['attributes']=_[_0x0b1b('0x48')](_0x28f428[_0x0b1b('0x44')],qs[_0x0b1b('0x4a')](_0x47b694[_0x0b1b('0x46')][_0x0b1b('0x4a')]));_0x5b2738[_0x0b1b('0x49')]=_0x5b2738[_0x0b1b('0x49')]['length']?_0x5b2738[_0x0b1b('0x49')]:_0x28f428['model'];if(!_0x47b694[_0x0b1b('0x46')][_0x0b1b('0x4c')](_0x0b1b('0x4d'))){_0x5b2738['limit']=qs['limit'](_0x47b694[_0x0b1b('0x46')]['limit']);_0x5b2738[_0x0b1b('0x31')]=qs[_0x0b1b('0x31')](_0x47b694['query'][_0x0b1b('0x31')]);}_0x5b2738[_0x0b1b('0x6c')]=qs[_0x0b1b('0x4e')](_0x47b694[_0x0b1b('0x46')][_0x0b1b('0x4e')]);_0x5b2738[_0x0b1b('0x4f')]=qs[_0x0b1b('0x50')](_[_0x0b1b('0x51')](_0x47b694[_0x0b1b('0x46')],_0x28f428[_0x0b1b('0x50')]));_0x5b2738['where']['ChatWebsiteId']=_0x2c837a['id'];if(_0x47b694['query'][_0x0b1b('0x52')]){_0x5b2738[_0x0b1b('0x4f')]=_[_0x0b1b('0x5b')](_0x5b2738[_0x0b1b('0x4f')],{'$or':_['map'](_0x5b2738[_0x0b1b('0x49')],function(_0x4dae5c){var _0x28c247={};_0x28c247[_0x4dae5c]={'$like':'%'+_0x47b694[_0x0b1b('0x46')][_0x0b1b('0x52')]+'%'};return _0x28c247;})});}_0x5b2738=_[_0x0b1b('0x5b')]({},_0x5b2738,_0x47b694['options']);return db[_0x0b1b('0x69')][_0x0b1b('0x30')]({'where':_0x5b2738['where']})['then'](function(_0x3ed6d9){_0x1fcc30[_0x0b1b('0x30')]=_0x3ed6d9;if(_0x47b694[_0x0b1b('0x46')][_0x0b1b('0x5a')]){_0x5b2738[_0x0b1b('0x54')]=[{'all':!![]}];}return db[_0x0b1b('0x69')][_0x0b1b('0x55')](_0x5b2738);})[_0x0b1b('0x36')](function(_0x3be9cd){_0x1fcc30[_0x0b1b('0x56')]=_0x3be9cd;return _0x1fcc30;});}})[_0x0b1b('0x36')](respondWithFilteredResult(_0x57b091,_0x5b2738))[_0x0b1b('0x2b')](handleError(_0x57b091,null));};exports[_0x0b1b('0x6d')]=function(_0x5c89ef,_0x6df0f9,_0x500e1d){return db[_0x0b1b('0x40')][_0x0b1b('0x5c')]({'where':{'id':_0x5c89ef[_0x0b1b('0x58')]['id']}})['then'](handleEntityNotFound(_0x6df0f9,null))[_0x0b1b('0x36')](function(_0x21aaf2){if(_0x21aaf2){return _0x21aaf2['removeDispositions'](_0x5c89ef[_0x0b1b('0x46')][_0x0b1b('0x6e')]);}})[_0x0b1b('0x36')](respondWithStatusCode(_0x6df0f9,null))[_0x0b1b('0x2b')](handleError(_0x6df0f9,null));};exports[_0x0b1b('0x6f')]=function(_0x499c6d,_0x48c4c8,_0x5a5311){if(_0x499c6d['body']['id']){delete _0x499c6d[_0x0b1b('0x65')]['id'];}return db[_0x0b1b('0x40')][_0x0b1b('0x5c')]({'where':{'id':_0x499c6d[_0x0b1b('0x58')]['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x48c4c8,null))[_0x0b1b('0x36')](function(_0x5525e4){if(_0x5525e4){_0x499c6d[_0x0b1b('0x65')][_0x0b1b('0x68')]=_0x5525e4['id'];return db[_0x0b1b('0x70')][_0x0b1b('0x5d')](_0x499c6d[_0x0b1b('0x65')]);}})[_0x0b1b('0x36')](respondWithResult(_0x48c4c8,null))[_0x0b1b('0x2b')](handleError(_0x48c4c8,null));};exports['getAnswers']=function(_0x344dcf,_0x1325ba,_0x298175){var _0x2a0308={'raw':![],'where':{}};var _0x4f19d2={};var _0x211e40={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x0b1b('0x6b')]({'where':{'id':_0x344dcf[_0x0b1b('0x58')]['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x1325ba,null))['then'](function(_0x2348a8){if(_0x2348a8){_0x4f19d2['model']=_[_0x0b1b('0x47')](db[_0x0b1b('0x70')][_0x0b1b('0x59')]);_0x4f19d2[_0x0b1b('0x46')]=_[_0x0b1b('0x47')](_0x344dcf[_0x0b1b('0x46')]);_0x4f19d2[_0x0b1b('0x50')]=_[_0x0b1b('0x48')](_0x4f19d2[_0x0b1b('0x44')],_0x4f19d2[_0x0b1b('0x46')]);_0x2a0308[_0x0b1b('0x49')]=_[_0x0b1b('0x48')](_0x4f19d2['model'],qs[_0x0b1b('0x4a')](_0x344dcf['query'][_0x0b1b('0x4a')]));_0x2a0308[_0x0b1b('0x49')]=_0x2a0308[_0x0b1b('0x49')][_0x0b1b('0x4b')]?_0x2a0308[_0x0b1b('0x49')]:_0x4f19d2[_0x0b1b('0x44')];if(!_0x344dcf[_0x0b1b('0x46')][_0x0b1b('0x4c')](_0x0b1b('0x4d'))){_0x2a0308['limit']=qs['limit'](_0x344dcf[_0x0b1b('0x46')][_0x0b1b('0x2f')]);_0x2a0308[_0x0b1b('0x31')]=qs[_0x0b1b('0x31')](_0x344dcf[_0x0b1b('0x46')]['offset']);}_0x2a0308[_0x0b1b('0x6c')]=qs[_0x0b1b('0x4e')](_0x344dcf[_0x0b1b('0x46')]['sort']);_0x2a0308[_0x0b1b('0x4f')]=qs[_0x0b1b('0x50')](_[_0x0b1b('0x51')](_0x344dcf[_0x0b1b('0x46')],_0x4f19d2[_0x0b1b('0x50')]));_0x2a0308[_0x0b1b('0x4f')][_0x0b1b('0x68')]=_0x2348a8['id'];if(_0x344dcf[_0x0b1b('0x46')][_0x0b1b('0x52')]){_0x2a0308['where']=_[_0x0b1b('0x5b')](_0x2a0308['where'],{'$or':_[_0x0b1b('0x45')](_0x2a0308['attributes'],function(_0x15af8c){var _0x4f5fb1={};_0x4f5fb1[_0x15af8c]={'$like':'%'+_0x344dcf[_0x0b1b('0x46')][_0x0b1b('0x52')]+'%'};return _0x4f5fb1;})});}_0x2a0308=_['merge']({},_0x2a0308,_0x344dcf['options']);return db[_0x0b1b('0x70')][_0x0b1b('0x30')]({'where':_0x2a0308['where']})['then'](function(_0x4d7c22){_0x211e40['count']=_0x4d7c22;if(_0x344dcf[_0x0b1b('0x46')]['includeAll']){_0x2a0308['include']=[{'all':!![]}];}return db['CannedAnswer'][_0x0b1b('0x55')](_0x2a0308);})['then'](function(_0x59191a){_0x211e40[_0x0b1b('0x56')]=_0x59191a;return _0x211e40;});}})[_0x0b1b('0x36')](respondWithFilteredResult(_0x1325ba,_0x2a0308))['catch'](handleError(_0x1325ba,null));};exports[_0x0b1b('0x71')]=function(_0x3bf151,_0x26c72d,_0x1efdfc){return db[_0x0b1b('0x40')][_0x0b1b('0x5c')]({'where':{'id':_0x3bf151['params']['id']}})['then'](handleEntityNotFound(_0x26c72d,null))[_0x0b1b('0x36')](function(_0x9fd126){if(_0x9fd126){return _0x9fd126[_0x0b1b('0x71')](_0x3bf151[_0x0b1b('0x46')][_0x0b1b('0x6e')]);}})['then'](respondWithStatusCode(_0x26c72d,null))[_0x0b1b('0x2b')](handleError(_0x26c72d,null));};exports[_0x0b1b('0x72')]=function(_0x21b432,_0x1b63e3,_0x4a019f){_0x21b432['body']['sitepic']=_0x21b432[_0x0b1b('0x73')][_0x0b1b('0x74')];return db[_0x0b1b('0x40')][_0x0b1b('0x5c')]({'where':{'id':_0x21b432[_0x0b1b('0x58')]['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x1b63e3,null))[_0x0b1b('0x36')](saveUpdates(_0x21b432[_0x0b1b('0x65')],null))[_0x0b1b('0x36')](respondWithResult(_0x1b63e3,null))['catch'](handleError(_0x1b63e3,null));};exports[_0x0b1b('0x75')]=function(_0x47abac,_0x2c0890,_0x1cf033){_0x47abac[_0x0b1b('0x65')]['agentAvatar']=_0x47abac[_0x0b1b('0x73')][_0x0b1b('0x74')];return db[_0x0b1b('0x40')][_0x0b1b('0x5c')]({'where':{'id':_0x47abac[_0x0b1b('0x58')]['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x2c0890,null))['then'](saveUpdates(_0x47abac[_0x0b1b('0x65')],null))['then'](respondWithResult(_0x2c0890,null))[_0x0b1b('0x2b')](handleError(_0x2c0890,null));};exports[_0x0b1b('0x76')]=function(_0x4acc5f,_0x3b6400,_0x449616){_0x4acc5f[_0x0b1b('0x65')][_0x0b1b('0x77')]=_0x4acc5f[_0x0b1b('0x73')][_0x0b1b('0x74')];return db[_0x0b1b('0x40')][_0x0b1b('0x5c')]({'where':{'id':_0x4acc5f['params']['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x3b6400,null))[_0x0b1b('0x36')](saveUpdates(_0x4acc5f[_0x0b1b('0x65')],null))[_0x0b1b('0x36')](respondWithResult(_0x3b6400,null))[_0x0b1b('0x2b')](handleError(_0x3b6400,null));};exports['addSystemAvatar']=function(_0x125172,_0x162f38,_0x3ec7c5){_0x125172[_0x0b1b('0x65')][_0x0b1b('0x78')]=_0x125172[_0x0b1b('0x73')][_0x0b1b('0x74')];return db['ChatWebsite']['find']({'where':{'id':_0x125172[_0x0b1b('0x58')]['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x162f38,null))[_0x0b1b('0x36')](saveUpdates(_0x125172[_0x0b1b('0x65')],null))[_0x0b1b('0x36')](respondWithResult(_0x162f38,null))['catch'](handleError(_0x162f38,null));};exports[_0x0b1b('0x79')]=function(_0x251d3c,_0x1b027e,_0x469b04){var _0x52eb06=path['join'](config[_0x0b1b('0x7a')],'server/files/images/logos/default_logo.svg');var _0x349be3={'where':{'id':_0x251d3c[_0x0b1b('0x58')]['id']},'attributes':['id',_0x0b1b('0x7b')],'raw':!![]};var _0x5e09f2=![];return require(_0x0b1b('0x7c'))['getLicense']()[_0x0b1b('0x36')](function(_0x4ed714){if(_0x4ed714){_0x5e09f2=_0x4ed714['custom'];}})[_0x0b1b('0x36')](function(){return db[_0x0b1b('0x40')][_0x0b1b('0x5c')](_0x349be3);})['then'](handleEntityNotFound(_0x1b027e,null))['then'](function(_0x279084){if(_0x279084){if(!_['isNil'](_0x279084[_0x0b1b('0x7b')])){if(fs['existsSync'](path[_0x0b1b('0x7d')](config[_0x0b1b('0x7a')],_0x0b1b('0x7e'),_0x279084[_0x0b1b('0x7b')]))&&_0x5e09f2){_0x52eb06=path[_0x0b1b('0x7d')](config[_0x0b1b('0x7a')],'server/files/images/logos/',_0x279084[_0x0b1b('0x7b')]);}}return _0x1b027e[_0x0b1b('0x7f')](_0x52eb06);}})[_0x0b1b('0x2b')](handleError(_0x1b027e,null));};exports['getAvatar']=function(_0x2f0e97,_0x1642f5,_0x3dcd93){var _0x4b5dd6=path['join'](config[_0x0b1b('0x7a')],_0x0b1b('0x80'));var _0x10694b={'where':{'id':_0x2f0e97[_0x0b1b('0x58')]['id']},'attributes':['id','agentAvatar'],'raw':!![]};return db[_0x0b1b('0x40')][_0x0b1b('0x5c')](_0x10694b)['then'](handleEntityNotFound(_0x1642f5,null))[_0x0b1b('0x36')](function(_0x12eafb){if(_0x12eafb){if(!_[_0x0b1b('0x81')](_0x12eafb[_0x0b1b('0x82')])){if(fs[_0x0b1b('0x83')](path[_0x0b1b('0x7d')](config[_0x0b1b('0x7a')],'server/files/images/avatars/',_0x12eafb[_0x0b1b('0x82')]))){_0x4b5dd6=path[_0x0b1b('0x7d')](config[_0x0b1b('0x7a')],_0x0b1b('0x84'),_0x12eafb['agentAvatar']);}}return _0x1642f5[_0x0b1b('0x7f')](_0x4b5dd6);}})[_0x0b1b('0x2b')](handleError(_0x1642f5,null));};exports[_0x0b1b('0x85')]=function(_0x15b602,_0x4ce14b,_0x5af630){var _0x4fd175=path['join'](config[_0x0b1b('0x7a')],_0x0b1b('0x86'));var _0x41b657={'where':{'id':_0x15b602[_0x0b1b('0x58')]['id']},'attributes':['id',_0x0b1b('0x77'),_0x0b1b('0x87')],'raw':!![]};return db[_0x0b1b('0x40')][_0x0b1b('0x5c')](_0x41b657)[_0x0b1b('0x36')](handleEntityNotFound(_0x4ce14b,null))['then'](function(_0x42e9b6){if(_0x42e9b6){if(!_['isNil'](_0x42e9b6['customerAvatar'])){if(fs['existsSync'](path[_0x0b1b('0x7d')](config['root'],'server/files/images/avatars/',_0x42e9b6[_0x0b1b('0x77')]))&&_0x42e9b6['showCustomerAvatar']){_0x4fd175=path[_0x0b1b('0x7d')](config[_0x0b1b('0x7a')],_0x0b1b('0x84'),_0x42e9b6[_0x0b1b('0x77')]);}}return _0x4ce14b['download'](_0x4fd175);}})['catch'](handleError(_0x4ce14b,null));};exports[_0x0b1b('0x88')]=function(_0x59cf63,_0x356939,_0x37a242){var _0x4dde8c=path[_0x0b1b('0x7d')](config[_0x0b1b('0x7a')],_0x0b1b('0x89'));var _0x4fc9aa={'where':{'id':_0x59cf63[_0x0b1b('0x58')]['id']},'attributes':['id',_0x0b1b('0x78')],'raw':!![]};return db[_0x0b1b('0x40')][_0x0b1b('0x5c')](_0x4fc9aa)[_0x0b1b('0x36')](handleEntityNotFound(_0x356939,null))[_0x0b1b('0x36')](function(_0x210d32){if(_0x210d32){if(!_['isNil'](_0x210d32['systemAvatar'])){if(fs[_0x0b1b('0x83')](path[_0x0b1b('0x7d')](config[_0x0b1b('0x7a')],'server/files/images/avatars/',_0x210d32[_0x0b1b('0x78')]))){_0x4dde8c=path[_0x0b1b('0x7d')](config[_0x0b1b('0x7a')],_0x0b1b('0x84'),_0x210d32[_0x0b1b('0x78')]);}}return _0x356939[_0x0b1b('0x7f')](_0x4dde8c);}})[_0x0b1b('0x2b')](handleError(_0x356939,null));};exports[_0x0b1b('0x8a')]=function(_0x3b31aa,_0x57446d,_0x3d302c){var _0xd5b623=require(_0x0b1b('0x8b'));var _0x5b3e42=new _0xd5b623();var _0x409a19=_0x5b3e42['setUA'](_0x3b31aa[_0x0b1b('0x8c')][_0x0b1b('0x8d')])['getResult']();var _0x253ce8={'body':_0x3b31aa[_0x0b1b('0x65')],'channel':_0x0b1b('0x8e')};var _0x50d112=[];var _0x1f19b3=[];var _0x2e0a8a={};var _0x514544=![];return db['CmContact'][_0x0b1b('0x66')]()['then'](function(_0x2b28b1){if(!_0x2b28b1){throw new db['Sequelize']['ValidationError'](_0x0b1b('0x8f'));}_0x50d112=_[_0x0b1b('0x90')](_['keys'](_0x2b28b1),[_0x0b1b('0x91'),_0x0b1b('0x92')]);_0x1f19b3=_[_0x0b1b('0x90')](_[_0x0b1b('0x47')](_0x2b28b1),[_0x0b1b('0x91'),_0x0b1b('0x92'),_0x0b1b('0x93'),_0x0b1b('0x94')]);if(_0x3b31aa[_0x0b1b('0x65')]['id']){delete _0x3b31aa[_0x0b1b('0x65')]['id'];}if(_[_0x0b1b('0x81')](_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0x95')])){throw new db[(_0x0b1b('0x96'))][(_0x0b1b('0x97'))](_0x0b1b('0x98'));}if(_[_0x0b1b('0x81')](_0x3b31aa[_0x0b1b('0x65')]['body'])||_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0x65')]===''){throw new db[(_0x0b1b('0x96'))][(_0x0b1b('0x97'))](_0x0b1b('0x99'));}if(_[_0x0b1b('0x81')](_0x3b31aa['body']['mapKey'])){throw new db[(_0x0b1b('0x96'))]['ValidationError'](_0x0b1b('0x9a')+_0x1f19b3);}if(!_[_0x0b1b('0x9b')](_0x1f19b3,_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0x9c')])){throw new db[(_0x0b1b('0x96'))]['ValidationError'](_0x0b1b('0x9d')+_0x1f19b3);}_0x2e0a8a[_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0x9c')]]=_0x3b31aa['body']['from'];})[_0x0b1b('0x36')](function(){return db['ChatWebsite']['find']({'where':{'id':_0x3b31aa[_0x0b1b('0x58')]['id']},'include':[{'model':db[_0x0b1b('0x9e')],'as':'List','include':[{'model':db[_0x0b1b('0x9f')],'as':_0x0b1b('0xa0'),'where':_0x2e0a8a,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0x0b1b('0xa1')],'as':_0x0b1b('0xa2')}]});})['then'](handleEntityNotFound(_0x57446d,null))[_0x0b1b('0x36')](function(_0x1d6902){if(_0x1d6902&&_0x1d6902[_0x0b1b('0xa3')]){_0x253ce8[_0x0b1b('0xa4')]=_0x1d6902;_0x253ce8[_0x0b1b('0xa5')]=_0x1d6902[_0x0b1b('0xa2')];_0x253ce8[_0x0b1b('0xa6')]=_0x1d6902[_0x0b1b('0xa3')];_0x253ce8[_0x0b1b('0xa5')]=_[_0x0b1b('0xa7')](_0x253ce8['applications'],['priority'],[_0x0b1b('0xa8')]);if(_0x253ce8[_0x0b1b('0xa4')]['Applications']){delete _0x253ce8[_0x0b1b('0xa4')][_0x0b1b('0xa2')];}if(_0x253ce8[_0x0b1b('0xa4')][_0x0b1b('0xa3')]&&_0x253ce8[_0x0b1b('0xa4')]['List'][_0x0b1b('0xa0')][_0x0b1b('0x4b')]){return _0x253ce8[_0x0b1b('0xa4')][_0x0b1b('0xa3')][_0x0b1b('0xa0')][0x0];}var _0x3c92bd=_['defaults'](_0x3b31aa['body'],{'firstName':_0x3b31aa[_0x0b1b('0x65')]['from'],'ListId':_0x1d6902[_0x0b1b('0x94')]});_0x3c92bd[_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0x9c')]]=_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0x95')];return db[_0x0b1b('0x9f')][_0x0b1b('0x5d')](_0x3c92bd,{'fields':_0x50d112,'raw':!![]});}})[_0x0b1b('0x36')](handleEntityNotFound(_0x57446d,null))[_0x0b1b('0x36')](function(_0x1a5869){_0x253ce8[_0x0b1b('0xa9')]=_0x1a5869;var _0x14b21f=_0x3b31aa['body']['customerIp'];if(_0x3b31aa[_0x0b1b('0x8c')]['cf-connecting-ip']){_0x14b21f=_0x3b31aa[_0x0b1b('0x8c')][_0x0b1b('0xaa')];}else if(_0x3b31aa[_0x0b1b('0x8c')][_0x0b1b('0xab')]){_0x14b21f=_[_0x0b1b('0xac')](_0x3b31aa[_0x0b1b('0x8c')][_0x0b1b('0xab')]['split'](','));}if(_0x1a5869){var _0x2826ed={'ContactId':_0x1a5869['id'],'ChatWebsiteId':_0x3b31aa[_0x0b1b('0x58')]['id'],'from':(_0x1a5869['firstName']||'')+'\x20'+(_0x1a5869['lastName']||''),'customerIp':_0x14b21f,'customerPort':_0x3b31aa[_0x0b1b('0x8c')][_0x0b1b('0xad')]?_0x3b31aa[_0x0b1b('0x8c')]['x-real-port']:null,'referer':_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0xae')],'browserName':_0x409a19[_0x0b1b('0xaf')]['name']&&_0x409a19[_0x0b1b('0xaf')][_0x0b1b('0xb0')]?util[_0x0b1b('0xb1')](_0x0b1b('0xb2'),_0x409a19[_0x0b1b('0xaf')]['name'],_0x409a19['browser'][_0x0b1b('0xb0')]):_0x0b1b('0xb3'),'browserVersion':_0x409a19['browser']['version']||'unknown','osName':util[_0x0b1b('0xb1')](_0x0b1b('0xb2'),_0x409a19['os'][_0x0b1b('0x3b')],_0x409a19['os']['version']),'osVersion':_0x409a19['os'][_0x0b1b('0xb0')],'deviceModel':_0x409a19[_0x0b1b('0xb4')][_0x0b1b('0x44')]&&_0x409a19[_0x0b1b('0xb4')][_0x0b1b('0xb5')]?util['format'](_0x0b1b('0xb6'),_0x409a19[_0x0b1b('0xb4')][_0x0b1b('0x44')],_0x409a19['device'][_0x0b1b('0xb5')],_0x409a19[_0x0b1b('0xb4')][_0x0b1b('0x42')]):null,'deviceVendor':_0x409a19[_0x0b1b('0xb4')][_0x0b1b('0xb5')],'deviceType':_0x409a19['device'][_0x0b1b('0x42')],'formData':JSON['stringify'](_0x3b31aa[_0x0b1b('0x65')])};var _0x4d843a={'ChatWebsiteId':_0x3b31aa[_0x0b1b('0x58')]['id'],'closed':![]};if(_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0xb7')]){_0x4d843a['threadId']=_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0xb7')];return db['ChatInteraction']['find']({'where':_0x4d843a})['then'](function(_0xbe1c92){if(_0xbe1c92){return[_0xbe1c92,![]];}_0x2826ed[_0x0b1b('0xb7')]=_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0xb7')];_0x2826ed['externalUrl']=_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0xb8')];return db[_0x0b1b('0xb9')]['create'](_0x2826ed)[_0x0b1b('0x36')](function(_0x3901f7){return[_0x3901f7,!![]];});});}_0x4d843a[_0x0b1b('0xba')]=_0x1a5869['id'];if(_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0xbb')]&&_0x3b31aa['body']['interaction']['id']){_0x4d843a['id']=_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0xbb')]['id'];return db[_0x0b1b('0xb9')]['find']({'where':_0x4d843a})[_0x0b1b('0x36')](function(_0x4441b5){if(_0x4441b5){return[_0x4441b5,![]];}return db[_0x0b1b('0xb9')]['create'](_0x2826ed)[_0x0b1b('0x36')](function(_0x28db65){return[_0x28db65,!![]];});});}return db[_0x0b1b('0xb9')][_0x0b1b('0x5d')](_0x2826ed)[_0x0b1b('0x36')](function(_0x1572b5){return[_0x1572b5,!![]];});}})[_0x0b1b('0xbc')](function(_0x1f7447,_0x274051){if(_0x1f7447){_0x514544=_0x274051;if(!_0x274051){var _0xeb1e46={'from':(_0x253ce8[_0x0b1b('0xa9')]['firstName']||'')+'\x20'+(_0x253ce8[_0x0b1b('0xa9')][_0x0b1b('0xbd')]||'')};if(_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0xb7')]&&_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0xbe')]&&_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0xb7')]!=_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0xbe')]){_0xeb1e46[_0x0b1b('0xb7')]=_0x3b31aa['body'][_0x0b1b('0xbe')];}return _0x1f7447[_0x0b1b('0x35')](_0xeb1e46);}else{return _0x1f7447;}}})[_0x0b1b('0x36')](function(_0x17ac2f){_0x253ce8[_0x0b1b('0xbb')]=_0x17ac2f[_0x0b1b('0x38')]({'plain':!![]});_0x253ce8[_0x0b1b('0xbb')][_0x0b1b('0xbf')]=_0x514544;if(_0x253ce8[_0x0b1b('0xbb')]['created']){if(_0x253ce8[_0x0b1b('0xa4')][_0x0b1b('0xc0')]){_0x253ce8[_0x0b1b('0xa5')][_0x0b1b('0xc1')]({'id':0x0,'priority':_0x253ce8[_0x0b1b('0xa5')][_0x0b1b('0x4b')]+0x1,'app':_0x0b1b('0xc2'),'appdata':_0x0b1b('0xc3'),'interval':'*,*,*,*'});}}return db[_0x0b1b('0xc4')][_0x0b1b('0x5d')]({'body':_0x3b31aa[_0x0b1b('0x65')][_0x0b1b('0x65')],'ChatWebsiteId':_0x3b31aa['params']['id'],'ChatInteractionId':_0x17ac2f['id'],'direction':'in','ContactId':_0x253ce8['contact']['id'],'AttachmentId':_0x3b31aa['body'][_0x0b1b('0xc5')]});})[_0x0b1b('0x36')](function(_0x261135){_0x253ce8[_0x0b1b('0x29')]=_0x261135;if(_0x253ce8[_0x0b1b('0xbb')][_0x0b1b('0xc6')]){return db[_0x0b1b('0xc7')][_0x0b1b('0x5c')]({'attributes':['id',_0x0b1b('0x3b')],'where':{'id':_0x253ce8[_0x0b1b('0xbb')][_0x0b1b('0xc6')]}})['then'](function(_0x386c60){if(_0x386c60){_0x253ce8['applications'][_0x0b1b('0xc8')]({'id':0x0,'priority':0x0,'app':_0x0b1b('0xc9'),'appdata':_0x386c60['name']+','+(_0x253ce8[_0x0b1b('0xa4')]['waitForTheAssignedAgent']||0xa),'interval':'*,*,*,*'});_0x253ce8[_0x0b1b('0xca')]=!![];}return respondWithRpcPromise(_0x0b1b('0xcb'),_0x0b1b('0xcc'),_0x253ce8);});}return respondWithRpcPromise('Start',_0x0b1b('0xcc'),_0x253ce8);})[_0x0b1b('0x36')](function(_0x2a653d){respondWithRpcPromise(_0x0b1b('0xcd'),_0x0b1b('0xcd'),{'event':'notify','message':_0x2a653d},client9002);return _0x2a653d;})[_0x0b1b('0x36')](respondWithResult(_0x57446d,null))['catch'](handleError(_0x57446d,null));};exports['offline']=function(_0x53fbe9,_0x5ba0ba,_0x22f269){var _0x4908ab,_0x380cf7,_0x5757ad;var _0xda690c=[];var _0x390cde=[];var _0x127fff={};var _0x357713=_0x53fbe9[_0x0b1b('0xce')]||[];var _0x39d754=[];var _0x5e024d;return db[_0x0b1b('0x9f')][_0x0b1b('0x66')]()['then'](function(_0x70edee){if(!_0x70edee){throw new db[(_0x0b1b('0x96'))][(_0x0b1b('0x97'))](_0x0b1b('0x8f'));}_0x390cde=_['difference'](_[_0x0b1b('0x47')](_0x70edee),['createdAt',_0x0b1b('0x92')]);_0xda690c=_[_0x0b1b('0x90')](_[_0x0b1b('0x47')](_0x70edee),[_0x0b1b('0x91'),_0x0b1b('0x92'),_0x0b1b('0x93'),_0x0b1b('0x94')]);if(_0x53fbe9[_0x0b1b('0x65')]['id']){delete _0x53fbe9[_0x0b1b('0x65')]['id'];}if(_['isNil'](_0x53fbe9[_0x0b1b('0x65')]['from'])){throw _0x5ba0ba[_0x0b1b('0x2d')](0x1f4)['send'](new db[(_0x0b1b('0x96'))][(_0x0b1b('0x97'))](_0x0b1b('0x98')));}if(_[_0x0b1b('0x81')](_0x53fbe9['body']['body'])||_0x53fbe9['body']['body']===''){throw _0x5ba0ba[_0x0b1b('0x2d')](0x1f4)[_0x0b1b('0x3c')](new db[(_0x0b1b('0x96'))][(_0x0b1b('0x97'))]('body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0x0b1b('0x81')](_0x53fbe9['body']['mapKeyOffline'])){throw _0x5ba0ba[_0x0b1b('0x2d')](0x1f4)[_0x0b1b('0x3c')](new db['Sequelize'][(_0x0b1b('0x97'))]('mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0xda690c));}if(!_[_0x0b1b('0x9b')](_0xda690c,_0x53fbe9[_0x0b1b('0x65')]['mapKeyOffline'])){throw _0x5ba0ba[_0x0b1b('0x2d')](0x1f4)[_0x0b1b('0x3c')](new db['Sequelize']['ValidationError'](_0x0b1b('0xcf')+_0xda690c));}_0x127fff[_0x53fbe9['body'][_0x0b1b('0xd0')]]=_0x53fbe9[_0x0b1b('0x65')]['from'];})[_0x0b1b('0x36')](function(){return db['ChatWebsite'][_0x0b1b('0x5c')]({'where':{'id':_0x53fbe9[_0x0b1b('0x58')]['id']},'include':[{'model':db[_0x0b1b('0x9e')],'as':'List'},{'model':db['MailAccount'],'as':_0x0b1b('0xd1')}]});})[_0x0b1b('0x36')](handleEntityNotFound(_0x5ba0ba,null))[_0x0b1b('0x36')](function(_0x4df2d3){if(_0x4df2d3&&_0x4df2d3[_0x0b1b('0xa3')]){_0x380cf7=_0x4df2d3;var _0x1f3fc5=_['defaults'](_0x53fbe9[_0x0b1b('0x65')],{'firstName':_0x53fbe9[_0x0b1b('0x65')]['from'],'phone':_0x53fbe9[_0x0b1b('0x65')][_0x0b1b('0x95')],'ListId':_0x4df2d3[_0x0b1b('0x94')]});_0x1f3fc5[_0x53fbe9[_0x0b1b('0x65')][_0x0b1b('0xd0')]]=_0x53fbe9['body'][_0x0b1b('0x95')];return db[_0x0b1b('0x9f')][_0x0b1b('0xd2')]({'where':_0x127fff,'defaults':_0x1f3fc5});}})[_0x0b1b('0xbc')](function(_0x19a89e){if(_0x19a89e){_0x5757ad=_0x19a89e;var _0x6e40f5=fs[_0x0b1b('0xd3')](path['join'](config[_0x0b1b('0x7a')],_0x0b1b('0xd4')),_0x0b1b('0xd5'));var _0x426ec7=ejs[_0x0b1b('0xd6')](_0x6e40f5,{'body':_[_0x0b1b('0xd7')](_0x53fbe9['body'][_0x0b1b('0x65')]),'bodyTitle':_0x380cf7[_0x0b1b('0xd8')]});return db[_0x0b1b('0xd9')][_0x0b1b('0x5d')]({'body':_0x426ec7,'ContactId':_0x19a89e['id'],'ChatWebsiteId':_0x380cf7['id']});}})[_0x0b1b('0x36')](function(_0x585f06){_0x5e024d=_0x585f06;if(_0x357713[_0x0b1b('0x4b')]){var _0x3311b3=_0x357713[_0x0b1b('0x45')](function(_0x4b74f9){return{'name':_0x4b74f9[_0x0b1b('0xda')],'basename':_0x4b74f9[_0x0b1b('0x74')],'type':_0x4b74f9['mimetype'],'ChatOfflineMessageId':_0x585f06['id']};});_0x39d754=_0x3311b3['map'](_0x1c0a4f=>{var _0x2bad54={'filename':_0x1c0a4f[_0x0b1b('0x3b')],'path':path['join'](config[_0x0b1b('0x7a')],_0x0b1b('0xdb'),_0x0b1b('0xce'),'attachments',_0x0b1b('0xdc'),_0x1c0a4f[_0x0b1b('0xdd')])};return _0x2bad54;});if(!_0x380cf7['openNewInteraction']){return db['sequelize'][_0x0b1b('0xde')](function(_0x3f5a85){return db[_0x0b1b('0xdf')][_0x0b1b('0xe0')](_0x3311b3,{'transaction':_0x3f5a85});});}}})[_0x0b1b('0x36')](function(){if(_0x5e024d){_0x4908ab=_0x5e024d;return db[_0x0b1b('0xd1')][_0x0b1b('0x6b')]({'where':{'active':!![]},'include':[{'model':db[_0x0b1b('0xe1')],'as':'Smtp','raw':!![]}]});}})['then'](function(_0x3733e0){if(_0x3733e0&&_0x3733e0[_0x0b1b('0xe2')]&&_0x380cf7[_0x0b1b('0xe3')]&&_0x380cf7[_0x0b1b('0xe4')]){var _0xcb35d4={'tls':{'rejectUnauthorized':![]}};if(_0x3733e0[_0x0b1b('0xe2')]['service']){_0xcb35d4[_0x0b1b('0xe5')]=_0x3733e0['Smtp'][_0x0b1b('0xe5')];}else{_0xcb35d4[_0x0b1b('0xe6')]=_0x3733e0[_0x0b1b('0xe2')][_0x0b1b('0xe6')];_0xcb35d4['port']=_0x3733e0[_0x0b1b('0xe2')][_0x0b1b('0xe7')];_0xcb35d4[_0x0b1b('0xe8')]=_0x3733e0['Smtp'][_0x0b1b('0xe8')];}if(_0x3733e0[_0x0b1b('0xe2')][_0x0b1b('0xe9')]){_0xcb35d4[_0x0b1b('0xea')]={'user':_0x3733e0[_0x0b1b('0xe2')][_0x0b1b('0x5e')],'pass':_0x3733e0[_0x0b1b('0xe2')]['pass']};}return respondWithRpcPromise('SendMail',_0x0b1b('0xeb'),{'account':_0xcb35d4,'message':{'from':util[_0x0b1b('0xb1')](_0x0b1b('0xec'),_0x3733e0[_0x0b1b('0x3b')],_0x3733e0[_0x0b1b('0xed')]||_0x3733e0['Smtp'][_0x0b1b('0x5e')]),'to':_0x380cf7[_0x0b1b('0xe4')],'subject':_0x380cf7[_0x0b1b('0xee')],'html':_0x4908ab[_0x0b1b('0x65')],'attachments':_0x39d754}},client9003)['then'](function(){return _0x4908ab;})['catch'](function(_0x448bf3){console[_0x0b1b('0x27')](_0x448bf3);});}})['then'](function(){if(_0x380cf7&&_0x380cf7[_0x0b1b('0xef')]&&_0x380cf7[_0x0b1b('0xf0')]){var _0x40510f=[];if(_0x357713[_0x0b1b('0x4b')]){_0x40510f=_0x357713[_0x0b1b('0x45')](function(_0x4291b6){return{'name':_0x4291b6[_0x0b1b('0xda')],'basename':_0x4291b6[_0x0b1b('0x74')],'type':_0x4291b6[_0x0b1b('0xf1')],'ChatOfflineMessageId':_0x5e024d['id']};});}var _0x59f63a;if(!_[_0x0b1b('0x81')](_0x380cf7[_0x0b1b('0xf2')])){var _0xa15b14=_[_0x0b1b('0x45')](_0x53fbe9[_0x0b1b('0x65')],function(_0x1195f5){return _0x1195f5;});var _0x421574=_['toPairsIn'](_0xa15b14)[0x0];var _0x446893=_[_0x0b1b('0xf3')](_0x421574,function(_0x203048){return _0x203048;});_0x59f63a=_0x446893[0x1][_0x380cf7[_0x0b1b('0xf2')]];}var _0x1f8650={'from':_0x5757ad[_0x0b1b('0xed')],'firstName':_0x5757ad[_0x0b1b('0xf4')],'lastName':_0x5757ad['lastName'],'mapKey':_0x0b1b('0xed'),'message':{'from':_0x5757ad[_0x0b1b('0xed')],'to':_0x380cf7[_0x0b1b('0xd1')][_0x0b1b('0xed')],'cc':'','subject':_['isNil'](_0x59f63a)?_0x380cf7[_0x0b1b('0xee')]:_0x59f63a,'messageId':'','sentAt':new Date(),'attach':_0x40510f[_0x0b1b('0x4b')],'attachments':_0x40510f,'originChannel':_0x0b1b('0xf5'),'ChatWebsiteId':_0x380cf7['id'],'ChatOfflineMessageId':_0x4908ab['id'],'originTo':_0x380cf7[_0x0b1b('0xd1')][_0x0b1b('0xed')]},'body':_0x4908ab[_0x0b1b('0x65')]};var _0x5ff85c={'account':{'id':_0x380cf7[_0x0b1b('0xf0')]},'body':_0x1f8650,'log':_0x0b1b('0xf6')};return respondWithRpcPromise(_0x0b1b('0xf6'),_0x0b1b('0xf7'),_0x5ff85c,client9001)[_0x0b1b('0x36')](function(){return _0x4908ab;})[_0x0b1b('0x2b')](function(_0x47e50d){console[_0x0b1b('0x27')](_0x47e50d);});}return;})['then'](function(){if(_0x4908ab){return _0x4908ab;}})[_0x0b1b('0x36')](respondWithResult(_0x5ba0ba,null))['catch'](function(_0x280f55){console[_0x0b1b('0x27')](_0x0b1b('0x2b'),_0x280f55);for(var _0x2c0d76 of _0x357713){var _0x30cdb4=path[_0x0b1b('0x7d')](config[_0x0b1b('0x7a')],'server',_0x0b1b('0xce'),_0x0b1b('0xf8'),'offline-chat',_0x2c0d76[_0x0b1b('0x74')]);fs_extra[_0x0b1b('0xf9')](_0x30cdb4)[_0x0b1b('0x2b')](function(_0x2f228b){console['error']('Could\x20not\x20remove\x20attachment\x20file',_0x30cdb4,_0x2f228b);});}});};exports['addInteraction']=function(_0x5a0841,_0x22001a,_0x23fb02){return db[_0x0b1b('0xb9')][_0x0b1b('0x5c')]({'where':{'id':_0x5a0841[_0x0b1b('0x58')]['id']}})['then'](handleEntityNotFound(_0x22001a,null))['then'](function(_0x1bc726){if(_0x1bc726){return _0x1bc726[_0x0b1b('0xfa')](_0x5a0841[_0x0b1b('0x65')][_0x0b1b('0x6e')],_['omit'](_0x5a0841[_0x0b1b('0x65')],['ids','id'])||{});}})[_0x0b1b('0x36')](respondWithResult(_0x22001a,null))[_0x0b1b('0x2b')](handleError(_0x22001a,null));};exports[_0x0b1b('0xfb')]=function(_0x1c64ca,_0x5ef392,_0x407170){var _0x12459c={'raw':![],'where':{}};var _0x278c46={};var _0x419678={'count':0x0,'rows':[]};return db[_0x0b1b('0x40')][_0x0b1b('0x6b')]({'where':{'id':_0x1c64ca[_0x0b1b('0x58')]['id']}})['then'](handleEntityNotFound(_0x5ef392,null))['then'](function(_0xaf0e37){if(_0xaf0e37){_0x278c46[_0x0b1b('0x44')]=_[_0x0b1b('0x47')](db[_0x0b1b('0xb9')]['rawAttributes']);_0x278c46[_0x0b1b('0x46')]=_[_0x0b1b('0x47')](_0x1c64ca[_0x0b1b('0x46')]);_0x278c46['filters']=_[_0x0b1b('0x48')](_0x278c46[_0x0b1b('0x44')],_0x278c46[_0x0b1b('0x46')]);_0x12459c[_0x0b1b('0x49')]=_[_0x0b1b('0x48')](_0x278c46[_0x0b1b('0x44')],qs[_0x0b1b('0x4a')](_0x1c64ca['query'][_0x0b1b('0x4a')]));_0x12459c[_0x0b1b('0x49')]=_0x12459c[_0x0b1b('0x49')][_0x0b1b('0x4b')]?_0x12459c[_0x0b1b('0x49')]:_0x278c46['model'];if(!_0x1c64ca['query'][_0x0b1b('0x4c')]('nolimit')){_0x12459c[_0x0b1b('0x2f')]=qs[_0x0b1b('0x2f')](_0x1c64ca['query'][_0x0b1b('0x2f')]);_0x12459c[_0x0b1b('0x31')]=qs[_0x0b1b('0x31')](_0x1c64ca['query'][_0x0b1b('0x31')]);}_0x12459c[_0x0b1b('0x6c')]=qs[_0x0b1b('0x4e')](_0x1c64ca['query'][_0x0b1b('0x4e')]);_0x12459c[_0x0b1b('0x4f')]=qs[_0x0b1b('0x50')](_['pick'](_0x1c64ca[_0x0b1b('0x46')],_0x278c46[_0x0b1b('0x50')]));_0x12459c['where']['ChatWebsiteId']=_0xaf0e37['id'];if(_0x1c64ca[_0x0b1b('0x46')]['filter']){_0x12459c[_0x0b1b('0x4f')]=_[_0x0b1b('0x5b')](_0x12459c[_0x0b1b('0x4f')],{'$or':_[_0x0b1b('0x45')](_0x12459c[_0x0b1b('0x49')],function(_0x5fe767){var _0x5099a9={};_0x5099a9[_0x5fe767]={'$like':'%'+_0x1c64ca[_0x0b1b('0x46')][_0x0b1b('0x52')]+'%'};return _0x5099a9;})});}_0x12459c=_[_0x0b1b('0x5b')]({},_0x12459c,_0x1c64ca['options']);return db[_0x0b1b('0xb9')][_0x0b1b('0x30')]({'where':_0x12459c['where']})['then'](function(_0x2e9c9d){_0x419678[_0x0b1b('0x30')]=_0x2e9c9d;if(_0x1c64ca[_0x0b1b('0x46')][_0x0b1b('0x5a')]){_0x12459c['include']=[{'model':db[_0x0b1b('0x9f')],'as':_0x0b1b('0xfc'),'required':![]},{'model':db[_0x0b1b('0xc7')],'as':'Owner','attributes':[_0x0b1b('0x3b'),_0x0b1b('0xfd'),'internal'],'required':![]},{'model':db[_0x0b1b('0xfe')],'as':_0x0b1b('0xff'),'attributes':['id',_0x0b1b('0x3b'),_0x0b1b('0x100')],'where':_0x1c64ca[_0x0b1b('0x46')][_0x0b1b('0x101')]?{'id':_0x1c64ca[_0x0b1b('0x46')][_0x0b1b('0x101')]}:undefined,'required':_0x1c64ca[_0x0b1b('0x46')][_0x0b1b('0x101')]?!![]:![]}];}return db[_0x0b1b('0xb9')][_0x0b1b('0x55')](_0x12459c);})[_0x0b1b('0x36')](function(_0x1cf994){_0x419678['rows']=_0x1cf994;return _0x419678;});}})[_0x0b1b('0x36')](respondWithFilteredResult(_0x5ef392,_0x12459c))['catch'](handleError(_0x5ef392,null));};function iftimePromise(_0x2fc0bc,_0x3489f5){return respondWithRpcPromise(_0x0b1b('0x102'),_0x0b1b('0x103'),{'command':_0x3489f5[_0x0b1b('0x104')]?util[_0x0b1b('0xb1')]('iftime\x20%s,%s',_0x2fc0bc[_0x0b1b('0x105')],_0x3489f5[_0x0b1b('0x104')]):util[_0x0b1b('0xb1')](_0x0b1b('0x106'),_0x2fc0bc[_0x0b1b('0x105')])},client9002)[_0x0b1b('0x36')](function(_0x540d15){var _0x272b46=_0x540d15&&_0x540d15[_0x0b1b('0x107')]('true')>=0x0?!![]:![];logger[_0x0b1b('0x22')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x3489f5['id'],_0x2fc0bc['id'],_0x2fc0bc[_0x0b1b('0x105')],_0x272b46?_0x0b1b('0x108'):_0x0b1b('0x109'),_0x3489f5[_0x0b1b('0x104')]?_0x3489f5[_0x0b1b('0x104')]:'No\x20timezone');return _0x272b46;})[_0x0b1b('0x2b')](function(_0x473da0){logger['error'](_0x0b1b('0x10a'),_0x3489f5['id'],_0x2fc0bc['id'],_0x2fc0bc['interval'],util[_0x0b1b('0x10b')](_0x473da0,{'showHidden':![],'depth':null}),_0x3489f5[_0x0b1b('0x104')]?_0x3489f5['timezone']:_0x0b1b('0x10c'));return![];});}exports[_0x0b1b('0x103')]=function(_0x399600,_0xf7eb23,_0x13a8f3){var _0x15a197=0x0;var _0x356c00=0x0;var _0x50616f=![];var _0x2d2ecb;var _0x2408b1;return db[_0x0b1b('0x40')][_0x0b1b('0x5c')]({'where':{'id':_0x399600[_0x0b1b('0x58')]['id']},'include':[{'model':db[_0x0b1b('0x10d')],'as':_0x0b1b('0x10d'),'include':[{'model':db[_0x0b1b('0x10d')],'as':'Intervals','attributes':['id',_0x0b1b('0x105')],'raw':!![]}]}]})[_0x0b1b('0x36')](handleEntityNotFound(_0xf7eb23,null))['then'](function(_0x403fc1){if(_0x403fc1){_0x2d2ecb=_0x403fc1;return _0x403fc1[_0x0b1b('0x10e')]({'raw':!![]});}})[_0x0b1b('0x36')](function(_0x4f9e57){if(_0x2d2ecb){if(_0x4f9e57){_0x2408b1=_0x4f9e57;}}return require(_0x0b1b('0x7c'))[_0x0b1b('0x10f')]();})[_0x0b1b('0x36')](function(_0x5c862e){if(_0x5c862e){_0x356c00=_0x5c862e[_0x0b1b('0x110')];_0x50616f=_0x5c862e['custom'];}})[_0x0b1b('0x36')](function(){return db[_0x0b1b('0xb9')][_0x0b1b('0x30')]({'where':{'closed':![]}});})['then'](function(_0x3069ca){_0x15a197=_0x3069ca;if(_0x356c00&&_0x3069ca>_0x356c00){return db[_0x0b1b('0x111')]['findOne']({'where':{'id':0x1}})[_0x0b1b('0x36')](function(_0x1d9275){if(_0x1d9275){_0x1d9275[_0x0b1b('0x112')](_0x0b1b('0x113'));}});}})['then'](function(){if(_0x2d2ecb[_0x0b1b('0x10d')]&&_0x2d2ecb[_0x0b1b('0x10d')][_0x0b1b('0x114')]){var _0x176309=[];for(var _0x58345c=0x0;_0x58345c<_0x2d2ecb['Interval'][_0x0b1b('0x114')][_0x0b1b('0x4b')];_0x58345c++){var _0x5900ba=_0x2d2ecb['Interval'][_0x0b1b('0x114')][_0x58345c][_0x0b1b('0x38')]({'plain':!![]});_0x176309[_0x0b1b('0xc1')](iftimePromise(_0x5900ba,_0x2d2ecb));}return BPromise[_0x0b1b('0x115')](_0x176309)[_0x0b1b('0x36')](function(_0x58f97e){return _[_0x0b1b('0x116')](_0x58f97e);});}else{return!![];}})[_0x0b1b('0x36')](function(_0x5d517f){var _0x2117e3=fs[_0x0b1b('0xd3')](path[_0x0b1b('0x7d')](config[_0x0b1b('0x7a')],_0x0b1b('0x117')),_0x0b1b('0xd5'));var _0x276ed1={'remote':_0x2d2ecb[_0x0b1b('0x118')],'query':querystring['stringify'](_[_0x0b1b('0x5b')](_0x2d2ecb[_0x0b1b('0x38')]({'plain':!![]}),{'customerIp':_0x399600['headers'][_0x0b1b('0xab')]||_0x399600['headers'][_0x0b1b('0x119')]||_0x399600[_0x0b1b('0x11a')][_0x0b1b('0x11b')]||_0x399600['ip'],'referer':_0x399600['headers'][_0x0b1b('0xae')],'openedInteractions':_0x15a197,'maxInteractions':_0x356c00,'virtual':_0x50616f['virtual'],'online':_0x5d517f,'custom':_0x50616f}))['replace'](/'/g,'\x5c\x27')};_0xf7eb23['send'](ejs[_0x0b1b('0xd6')](Mustache['render'](_0x2117e3,_0x276ed1),{'proactiveActions':_0x2408b1,'alignment':_0x2d2ecb[_0x0b1b('0x11c')],'verticalAlignment':_0x2d2ecb['verticalAlignment'],'div_color':_0x2d2ecb[_0x0b1b('0x100')],'text_color':_0x2d2ecb[_0x0b1b('0x11d')],'button_color':_0x2d2ecb['color_button'],'background_color':_0x2d2ecb[_0x0b1b('0x11e')]}));})['catch'](handleError(_0xf7eb23,null));};exports[_0x0b1b('0x11f')]=function(_0x577ec3,_0x205144,_0x10f60a){return db[_0x0b1b('0x40')][_0x0b1b('0x6b')]({'where':{'id':_0x577ec3['params']['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x205144,null))['then'](function(_0xef446c){if(_0xef446c){return db[_0x0b1b('0x120')][_0x0b1b('0xde')](function(_0x392e44){return db[_0x0b1b('0xa1')][_0x0b1b('0x37')]({'where':{'ChatWebsiteId':_0x577ec3['params']['id']},'transaction':_0x392e44})[_0x0b1b('0x36')](function(_0x295968){var _0x5d265c=_[_0x0b1b('0x45')](_0x577ec3[_0x0b1b('0x65')],function(_0x51b5d1){_0x51b5d1[_0x0b1b('0x68')]=_0x577ec3[_0x0b1b('0x58')]['id'];return _0x51b5d1;});return db[_0x0b1b('0xa1')][_0x0b1b('0xe0')](_0x5d265c,{'transaction':_0x392e44});});})[_0x0b1b('0x36')](function(){return db[_0x0b1b('0xa1')][_0x0b1b('0x121')]({'where':{'ChatWebsiteId':_0x577ec3[_0x0b1b('0x58')]['id']},'order':'priority'});});}})[_0x0b1b('0x36')](respondWithResult(_0x205144,null))['catch'](handleError(_0x205144,null));};exports[_0x0b1b('0x122')]=function(_0x41a193,_0x53ee91,_0x3792c5){var _0x14b836={};var _0xa9a497={};var _0x4d1a1b;var _0x9eeaf9;return db[_0x0b1b('0x40')][_0x0b1b('0x6b')]({'where':{'id':_0x41a193[_0x0b1b('0x58')]['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x53ee91,null))[_0x0b1b('0x36')](function(_0x2e0c0b){if(_0x2e0c0b){_0x4d1a1b=_0x2e0c0b;_0xa9a497[_0x0b1b('0x44')]=_['keys'](db['ChatApplication']['rawAttributes']);_0xa9a497[_0x0b1b('0x46')]=_[_0x0b1b('0x47')](_0x41a193[_0x0b1b('0x46')]);_0xa9a497[_0x0b1b('0x50')]=_[_0x0b1b('0x48')](_0xa9a497[_0x0b1b('0x44')],_0xa9a497[_0x0b1b('0x46')]);_0x14b836['attributes']=_[_0x0b1b('0x48')](_0xa9a497[_0x0b1b('0x44')],qs[_0x0b1b('0x4a')](_0x41a193[_0x0b1b('0x46')][_0x0b1b('0x4a')]));_0x14b836[_0x0b1b('0x49')]=_0x14b836[_0x0b1b('0x49')]['length']?_0x14b836[_0x0b1b('0x49')]:_0xa9a497[_0x0b1b('0x44')];_0x14b836[_0x0b1b('0x6c')]=qs[_0x0b1b('0x4e')](_0x41a193[_0x0b1b('0x46')]['sort']);_0x14b836['where']=qs['filters'](_[_0x0b1b('0x51')](_0x41a193['query'],_0xa9a497[_0x0b1b('0x50')]));if(_0x41a193['query'][_0x0b1b('0x52')]){_0x14b836[_0x0b1b('0x4f')]=_[_0x0b1b('0x5b')](_0x14b836[_0x0b1b('0x4f')],{'$or':_[_0x0b1b('0x45')](_0x14b836[_0x0b1b('0x49')],function(_0x51adfa){var _0x59bd77={};_0x59bd77[_0x51adfa]={'$like':'%'+_0x41a193['query']['filter']+'%'};return _0x59bd77;})});}_0x14b836=_[_0x0b1b('0x5b')]({},_0x14b836,_0x41a193['options']);return _0x4d1a1b['getApplications'](_0x14b836);}})[_0x0b1b('0x36')](function(_0x2b40e6){if(_0x2b40e6){_0x9eeaf9=_0x2b40e6['length'];if(!_0x41a193[_0x0b1b('0x46')][_0x0b1b('0x4c')]('nolimit')){_0x14b836[_0x0b1b('0x2f')]=qs[_0x0b1b('0x2f')](_0x41a193['query'][_0x0b1b('0x2f')]);_0x14b836['offset']=qs[_0x0b1b('0x31')](_0x41a193[_0x0b1b('0x46')][_0x0b1b('0x31')]);}return _0x4d1a1b[_0x0b1b('0x122')](_0x14b836);}})[_0x0b1b('0x36')](function(_0x572b67){if(_0x572b67){return _0x572b67?{'count':_0x9eeaf9,'rows':_0x572b67}:null;}})[_0x0b1b('0x36')](respondWithResult(_0x53ee91,null))['catch'](handleError(_0x53ee91,null));};exports['addProactiveActions']=function(_0xac6721,_0x1fdf6f,_0x305f46){return db[_0x0b1b('0x123')][_0x0b1b('0x5c')]({'where':{'id':_0xac6721[_0x0b1b('0x58')]['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x1fdf6f,null))[_0x0b1b('0x36')](function(_0x39d1ff){if(_0x39d1ff){return _0x39d1ff['addProactiveActions'](_0xac6721[_0x0b1b('0x65')][_0x0b1b('0x6e')],_['omit'](_0xac6721['body'],[_0x0b1b('0x6e'),'id'])||{});}})[_0x0b1b('0x36')](respondWithResult(_0x1fdf6f,null))[_0x0b1b('0x2b')](handleError(_0x1fdf6f,null));};exports[_0x0b1b('0x10e')]=function(_0xe9d39,_0x590547,_0x2af04a){var _0x5801dd={};var _0x2bb47b={};var _0x6f39bd;var _0x141b28;return db[_0x0b1b('0x40')]['findOne']({'where':{'id':_0xe9d39[_0x0b1b('0x58')]['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x590547,null))['then'](function(_0x3bd3f1){if(_0x3bd3f1){_0x6f39bd=_0x3bd3f1;_0x2bb47b[_0x0b1b('0x44')]=_[_0x0b1b('0x47')](db[_0x0b1b('0x124')]['rawAttributes']);_0x2bb47b[_0x0b1b('0x46')]=_[_0x0b1b('0x47')](_0xe9d39[_0x0b1b('0x46')]);_0x2bb47b[_0x0b1b('0x50')]=_[_0x0b1b('0x48')](_0x2bb47b[_0x0b1b('0x44')],_0x2bb47b[_0x0b1b('0x46')]);_0x5801dd['attributes']=_[_0x0b1b('0x48')](_0x2bb47b[_0x0b1b('0x44')],qs[_0x0b1b('0x4a')](_0xe9d39['query'][_0x0b1b('0x4a')]));_0x5801dd[_0x0b1b('0x49')]=_0x5801dd['attributes'][_0x0b1b('0x4b')]?_0x5801dd[_0x0b1b('0x49')]:_0x2bb47b['model'];_0x5801dd['order']=qs[_0x0b1b('0x4e')](_0xe9d39[_0x0b1b('0x46')][_0x0b1b('0x4e')]);_0x5801dd[_0x0b1b('0x4f')]=qs[_0x0b1b('0x50')](_[_0x0b1b('0x51')](_0xe9d39[_0x0b1b('0x46')],_0x2bb47b[_0x0b1b('0x50')]));if(_0xe9d39[_0x0b1b('0x46')][_0x0b1b('0x52')]){_0x5801dd[_0x0b1b('0x4f')]=_[_0x0b1b('0x5b')](_0x5801dd[_0x0b1b('0x4f')],{'$or':_[_0x0b1b('0x45')](_0x5801dd[_0x0b1b('0x49')],function(_0x4ae15b){var _0xfc100b={};_0xfc100b[_0x4ae15b]={'$like':'%'+_0xe9d39[_0x0b1b('0x46')][_0x0b1b('0x52')]+'%'};return _0xfc100b;})});}_0x5801dd=_['merge']({},_0x5801dd,_0xe9d39[_0x0b1b('0x53')]);return _0x6f39bd['getProactiveActions'](_0x5801dd);}})[_0x0b1b('0x36')](function(_0x47868a){if(_0x47868a){_0x141b28=_0x47868a[_0x0b1b('0x4b')];if(!_0xe9d39[_0x0b1b('0x46')]['hasOwnProperty']('nolimit')){_0x5801dd[_0x0b1b('0x2f')]=qs[_0x0b1b('0x2f')](_0xe9d39[_0x0b1b('0x46')][_0x0b1b('0x2f')]);_0x5801dd['offset']=qs[_0x0b1b('0x31')](_0xe9d39[_0x0b1b('0x46')][_0x0b1b('0x31')]);}return _0x6f39bd[_0x0b1b('0x10e')](_0x5801dd);}})[_0x0b1b('0x36')](function(_0x2a2b31){if(_0x2a2b31){return _0x2a2b31?{'count':_0x141b28,'rows':_0x2a2b31}:null;}})[_0x0b1b('0x36')](respondWithResult(_0x590547,null))['catch'](handleError(_0x590547,null));};exports['getFields']=function(_0x3ceaae,_0x4f40f9,_0x3ee9bb){var _0x2c79dd=_0x3ceaae['query'][_0x0b1b('0x125')]===_0x0b1b('0x126')?'offlineForm':_0x0b1b('0x127');return db[_0x0b1b('0x40')][_0x0b1b('0x5c')]({'attributes':['id',_0x2c79dd],'where':{'id':_0x3ceaae[_0x0b1b('0x58')]['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x4f40f9,null))[_0x0b1b('0x36')](function(_0x1f0732){if(_0x1f0732){var _0x43ca3d=_0x1f0732[_0x2c79dd];var _0x1c91c3=_0x43ca3d&&_0x43ca3d[_0x0b1b('0x128')]?_0x43ca3d[_0x0b1b('0x128')]:[];_0x4f40f9[_0x0b1b('0x3c')]({'fromKey':_[_0x0b1b('0x81')](_0x43ca3d[_0x0b1b('0x129')])?undefined:_0x43ca3d[_0x0b1b('0x129')],'count':_0x1c91c3[_0x0b1b('0x4b')],'rows':_0x1c91c3});}})[_0x0b1b('0x2b')](handleError(_0x4f40f9,null));};exports[_0x0b1b('0x12a')]=function(_0x56cbf1,_0x5baa14,_0x19afda){var _0xb74e92={'raw':![],'where':{}};var _0x1ca6a4={};var _0x5a7f49={'count':0x0,'rows':[]};return db[_0x0b1b('0x40')]['findOne']({'where':{'id':_0x56cbf1['params']['id']}})['then'](handleEntityNotFound(_0x5baa14,null))['then'](function(_0x3060fd){if(_0x3060fd){_0x1ca6a4[_0x0b1b('0x44')]=_[_0x0b1b('0x47')](db[_0x0b1b('0xd9')][_0x0b1b('0x59')]);_0x1ca6a4[_0x0b1b('0x46')]=_[_0x0b1b('0x47')](_0x56cbf1['query']);_0x1ca6a4[_0x0b1b('0x50')]=_[_0x0b1b('0x48')](_0x1ca6a4[_0x0b1b('0x44')],_0x1ca6a4[_0x0b1b('0x46')]);_0xb74e92[_0x0b1b('0x49')]=_['intersection'](_0x1ca6a4[_0x0b1b('0x44')],qs[_0x0b1b('0x4a')](_0x56cbf1['query']['fields']));_0xb74e92[_0x0b1b('0x49')]=_0xb74e92[_0x0b1b('0x49')]['length']?_0xb74e92[_0x0b1b('0x49')]:_0x1ca6a4[_0x0b1b('0x44')];if(!_0x56cbf1[_0x0b1b('0x46')][_0x0b1b('0x4c')](_0x0b1b('0x4d'))){_0xb74e92[_0x0b1b('0x2f')]=qs['limit'](_0x56cbf1[_0x0b1b('0x46')][_0x0b1b('0x2f')]);_0xb74e92[_0x0b1b('0x31')]=qs[_0x0b1b('0x31')](_0x56cbf1[_0x0b1b('0x46')]['offset']);}_0xb74e92[_0x0b1b('0x6c')]=qs['sort'](_0x56cbf1[_0x0b1b('0x46')][_0x0b1b('0x4e')]);_0xb74e92['where']=qs[_0x0b1b('0x50')](_[_0x0b1b('0x51')](_0x56cbf1[_0x0b1b('0x46')],_0x1ca6a4[_0x0b1b('0x50')]));_0xb74e92[_0x0b1b('0x4f')][_0x0b1b('0x68')]=_0x3060fd['id'];if(_0x56cbf1[_0x0b1b('0x46')]['filter']){_0xb74e92[_0x0b1b('0x4f')]=_['merge'](_0xb74e92[_0x0b1b('0x4f')],{'$or':_[_0x0b1b('0x45')](_0xb74e92[_0x0b1b('0x49')],function(_0x2e4812){var _0x58f77b={};_0x58f77b[_0x2e4812]={'$like':'%'+_0x56cbf1[_0x0b1b('0x46')][_0x0b1b('0x52')]+'%'};return _0x58f77b;})});}_0xb74e92=_[_0x0b1b('0x5b')]({},_0xb74e92,_0x56cbf1[_0x0b1b('0x53')]);return db[_0x0b1b('0xd9')][_0x0b1b('0x30')]({'where':_0xb74e92[_0x0b1b('0x4f')]})[_0x0b1b('0x36')](function(_0x1a065b){_0x5a7f49['count']=_0x1a065b;if(_0x56cbf1[_0x0b1b('0x46')]['includeAll']){_0xb74e92[_0x0b1b('0x54')]=[{'all':!![]}];}else{_0xb74e92[_0x0b1b('0x54')]=[{'model':db['CmContact'],'as':_0x0b1b('0xfc'),'required':![]},{'model':db[_0x0b1b('0xdf')],'as':_0x0b1b('0x12b'),'required':![]}];}return db[_0x0b1b('0xd9')][_0x0b1b('0x55')](_0xb74e92);})[_0x0b1b('0x36')](function(_0x1aa9e2){_0x5a7f49['rows']=_0x1aa9e2;return _0x5a7f49;});}})[_0x0b1b('0x36')](respondWithFilteredResult(_0x5baa14,_0xb74e92))[_0x0b1b('0x2b')](handleError(_0x5baa14,null));};exports[_0x0b1b('0x12c')]=function(_0x132e7f,_0x33d189,_0x396d0e){return db[_0x0b1b('0x40')][_0x0b1b('0x5c')]({'where':{'id':_0x132e7f['params']['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x33d189,null))['then'](function(_0x1529df){if(_0x1529df){return _0x1529df[_0x0b1b('0x12c')](_0x132e7f[_0x0b1b('0x65')]['ids'],_[_0x0b1b('0x12d')](_0x132e7f[_0x0b1b('0x65')],['ids','id'])||{})['spread'](function(_0x6f6f23){for(var _0x5406c0=0x0;_0x5406c0<_0x132e7f[_0x0b1b('0x65')][_0x0b1b('0x6e')]['length'];_0x5406c0+=0x1){socket[_0x0b1b('0x12e')](_0x0b1b('0x12f'),{'UserId':Number(_0x132e7f[_0x0b1b('0x65')][_0x0b1b('0x6e')][_0x5406c0]),'ChatWebsiteId':Number(_0x132e7f[_0x0b1b('0x58')]['id'])});}return _0x6f6f23;});}})[_0x0b1b('0x36')](respondWithResult(_0x33d189,null))['catch'](handleError(_0x33d189,null));};exports['removeAgents']=function(_0x1f84a9,_0x47b76d,_0x123814){return db[_0x0b1b('0x40')][_0x0b1b('0x5c')]({'where':{'id':_0x1f84a9[_0x0b1b('0x58')]['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x47b76d,null))[_0x0b1b('0x36')](function(_0x2a40c5){if(_0x2a40c5){return _0x2a40c5['removeAgents'](_0x1f84a9[_0x0b1b('0x46')][_0x0b1b('0x6e')])['then'](function(){if(_[_0x0b1b('0x130')](_0x1f84a9[_0x0b1b('0x46')][_0x0b1b('0x6e')])){for(var _0x40b5f0=0x0;_0x40b5f0<_0x1f84a9[_0x0b1b('0x46')]['ids'][_0x0b1b('0x4b')];_0x40b5f0+=0x1){socket[_0x0b1b('0x12e')](_0x0b1b('0x131'),{'UserId':Number(_0x1f84a9[_0x0b1b('0x46')][_0x0b1b('0x6e')][_0x40b5f0]),'ChatWebsiteId':Number(_0x1f84a9['params']['id'])});}}else{socket['emit'](_0x0b1b('0x131'),{'UserId':Number(_0x1f84a9[_0x0b1b('0x46')][_0x0b1b('0x6e')]),'ChatWebsiteId':Number(_0x1f84a9[_0x0b1b('0x58')]['id'])});}});}})['then'](respondWithStatusCode(_0x47b76d,null))[_0x0b1b('0x2b')](handleError(_0x47b76d,null));};exports[_0x0b1b('0x132')]=function(_0x4add61,_0x2e647b,_0x4543f5){var _0x4bda6a={};var _0x1259e4={};var _0x339f57;var _0x4e7ec8;return db[_0x0b1b('0x40')]['findOne']({'where':{'id':_0x4add61[_0x0b1b('0x58')]['id']}})[_0x0b1b('0x36')](handleEntityNotFound(_0x2e647b,null))['then'](function(_0x40fe7c){if(_0x40fe7c){_0x339f57=_0x40fe7c;_0x1259e4['model']=_[_0x0b1b('0x47')](db[_0x0b1b('0xc7')][_0x0b1b('0x59')]);_0x1259e4['query']=_[_0x0b1b('0x47')](_0x4add61[_0x0b1b('0x46')]);_0x1259e4['filters']=_[_0x0b1b('0x48')](_0x1259e4['model'],_0x1259e4[_0x0b1b('0x46')]);_0x4bda6a[_0x0b1b('0x49')]=_[_0x0b1b('0x48')](_0x1259e4['model'],qs[_0x0b1b('0x4a')](_0x4add61['query'][_0x0b1b('0x4a')]));_0x4bda6a['attributes']=_0x4bda6a[_0x0b1b('0x49')]['length']?_0x4bda6a['attributes']:_0x1259e4[_0x0b1b('0x44')];_0x4bda6a[_0x0b1b('0x6c')]=qs[_0x0b1b('0x4e')](_0x4add61['query']['sort']);_0x4bda6a[_0x0b1b('0x4f')]=qs[_0x0b1b('0x50')](_[_0x0b1b('0x51')](_0x4add61[_0x0b1b('0x46')],_0x1259e4['filters']));if(_0x4add61[_0x0b1b('0x46')]['filter']){_0x4bda6a['where']=_['merge'](_0x4bda6a[_0x0b1b('0x4f')],{'$or':_[_0x0b1b('0x45')](_0x4bda6a[_0x0b1b('0x49')],function(_0x44f98c){var _0x2f8610={};_0x2f8610[_0x44f98c]={'$like':'%'+_0x4add61[_0x0b1b('0x46')][_0x0b1b('0x52')]+'%'};return _0x2f8610;})});}_0x4bda6a=_[_0x0b1b('0x5b')]({},_0x4bda6a,_0x4add61[_0x0b1b('0x53')]);return _0x339f57['getAgents'](_0x4bda6a);}})[_0x0b1b('0x36')](function(_0x5864d6){if(_0x5864d6){_0x4e7ec8=_0x5864d6[_0x0b1b('0x4b')];if(!_0x4add61['query'][_0x0b1b('0x4c')](_0x0b1b('0x4d'))){_0x4bda6a['limit']=qs[_0x0b1b('0x2f')](_0x4add61['query']['limit']);_0x4bda6a[_0x0b1b('0x31')]=qs[_0x0b1b('0x31')](_0x4add61[_0x0b1b('0x46')][_0x0b1b('0x31')]);}return _0x339f57[_0x0b1b('0x132')](_0x4bda6a);}})[_0x0b1b('0x36')](function(_0x32e989){if(_0x32e989){return _0x32e989?{'count':_0x4e7ec8,'rows':_0x32e989}:null;}})['then'](respondWithResult(_0x2e647b,null))[_0x0b1b('0x2b')](handleError(_0x2e647b,null));};
\ No newline at end of file
+var _0xa4a6=['List','account','list','applications','orderBy','asc','defaults','contact','customerIp','cf-connecting-ip','x-forwarded-for','first','split','firstName','lastName','x-real-port','referer','browser','format','%s\x20%s','version','unknown','device','vendor','%s\x20%s\x20%s','threadId','externalUrl','ChatInteraction','ContactId','interaction','spread','messageId','created','autoclose','close','unmanaged','ChatMessage','UserId','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','files','difference','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','readFileSync','utf8','render','toPairs','offlineMessageBody','ChatOfflineMessage','originalname','mimetype','attachments','offline-chat','basename','openNewInteraction','sequelize','transaction','bulkCreate','MailServerOut','Smtp','forwardOffline','forwardOfflineAddress','service','host','port','secure','authentication','auth','email','offlineMessageSubject','MailAccountId','subjectOffline','mapValues','Chat','NotifyMailAccount','server','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','getInteractions','Contact','internal','Tag','Tags','tag','Command','getSnippet','timezone','iftime\x20%s,%s','interval','iftime\x20%s','indexOf','OFFLINE','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','inspect','No\x20timezone','Interval','virtual','License','increment','chatLicenseExceeded','Intervals','all','remote','remoteAddress','replace','alignment','verticalAlignment','color','color_button','addApplications','findAndCountAll','priority','getApplications','chatProactiveAction','getProactiveActions','getFields','offlineForm','onlineForm','items','fromKey','Attachments','addAgents','removeAgents','isArray','emit','userChatWebsite:remove','User','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','jayson/promise','client','http','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','get','ChatWebsites','destroy','stack','name','send','index','ChatWebsite','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','map','VIRTUAL','filter','options','findAll','rows','catch','show','params','Pause','mandatoryDispositionPause','include','merge','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','ChatWebsiteId','Disposition','getDispositions','findOne','removeDispositions','addAnswer','nolimit','includeAll','CannedAnswer','removeAnswers','ids','addLogo','sitepic','file','filename','agentAvatar','addCustomerAvatar','customerAvatar','addSystemAvatar','systemAvatar','getLogo','join','root','server/files/images/logos/default_logo.svg','getLicense','custom','isNil','server/files/images/logos/','download','getAvatar','server/files/images/avatars/default_avatar.png','server/files/images/avatars/','getCustomerAvatar','showCustomerAvatar','existsSync','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','user-agent-parser','setUA','headers','Sequelize','ValidationError','no\x20available\x20attributes','createdAt','updatedAt','CompanyId','ListId','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','CmList','CmContact','Contacts','ChatApplication','Applications'];(function(_0x1f8053,_0x111077){var _0x174fd8=function(_0x2f92fc){while(--_0x2f92fc){_0x1f8053['push'](_0x1f8053['shift']());}};_0x174fd8(++_0x111077);}(_0xa4a6,0x8b));var _0x6a4a=function(_0x10e896,_0x4136d9){_0x10e896=_0x10e896-0x0;var _0x33cda4=_0xa4a6[_0x10e896];return _0x33cda4;};'use strict';var emlformat=require(_0x6a4a('0x0'));var rimraf=require(_0x6a4a('0x1'));var zipdir=require(_0x6a4a('0x2'));var jsonpatch=require(_0x6a4a('0x3'));var rp=require('request-promise');var moment=require(_0x6a4a('0x4'));var BPromise=require(_0x6a4a('0x5'));var Mustache=require(_0x6a4a('0x6'));var util=require(_0x6a4a('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x6a4a('0x8'));var ejs=require(_0x6a4a('0x9'));var fs=require('fs');var fs_extra=require(_0x6a4a('0xa'));var _=require(_0x6a4a('0xb'));var squel=require(_0x6a4a('0xc'));var crypto=require(_0x6a4a('0xd'));var jsforce=require(_0x6a4a('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x6a4a('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x6a4a('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x6a4a('0x10'));var hardwareService=require(_0x6a4a('0x11'));var logger=require(_0x6a4a('0x12'))(_0x6a4a('0x13'));var utils=require(_0x6a4a('0x14'));var config=require(_0x6a4a('0x15'));var licenseUtil=require(_0x6a4a('0x16'));var db=require(_0x6a4a('0x17'))['db'];config[_0x6a4a('0x18')]=_['defaults'](config['redis'],{'host':_0x6a4a('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./chatWebsite.socket')['register'](socket);var jayson=require(_0x6a4a('0x1a'));var client=jayson[_0x6a4a('0x1b')][_0x6a4a('0x1c')]({'port':0x232c});var client9002=jayson[_0x6a4a('0x1b')][_0x6a4a('0x1c')]({'port':0x232a});var client9003=jayson['client'][_0x6a4a('0x1c')]({'port':0x232b});var client9001=jayson[_0x6a4a('0x1b')][_0x6a4a('0x1c')]({'port':0x2329});function respondWithRpcPromise(_0x1ce87a,_0x48959b,_0x32d151,_0x14a1d3){return new BPromise(function(_0x97b251,_0x3b6002){var _0x5a68ea=_0x14a1d3||client;return _0x5a68ea['request'](_0x1ce87a,_0x32d151)[_0x6a4a('0x1d')](function(_0x314b39){logger[_0x6a4a('0x1e')](_0x6a4a('0x1f'),_0x48959b,_0x6a4a('0x20'));logger[_0x6a4a('0x21')](_0x6a4a('0x22'),_0x48959b,_0x6a4a('0x20'),JSON[_0x6a4a('0x23')](_0x314b39));if(_0x314b39[_0x6a4a('0x24')]){if(_0x314b39[_0x6a4a('0x24')][_0x6a4a('0x25')]===0x1f4){logger[_0x6a4a('0x24')]('ChatWebsite,\x20%s,\x20%s',_0x48959b,_0x314b39['error'][_0x6a4a('0x26')]);return _0x3b6002(_0x314b39[_0x6a4a('0x24')][_0x6a4a('0x26')]);}logger[_0x6a4a('0x24')]('ChatWebsite,\x20%s,\x20%s',_0x48959b,_0x314b39[_0x6a4a('0x24')][_0x6a4a('0x26')]);return _0x97b251(_0x314b39[_0x6a4a('0x24')][_0x6a4a('0x26')]);}else{logger[_0x6a4a('0x1e')](_0x6a4a('0x1f'),_0x48959b,'request\x20sent');_0x97b251(_0x314b39['result'][_0x6a4a('0x26')]);}})['catch'](function(_0x8b5542){logger['error']('ChatWebsite,\x20%s,\x20%s',_0x48959b,_0x8b5542);_0x3b6002(_0x8b5542);});});}function respondWithStatusCode(_0x4d43eb,_0x42b678){_0x42b678=_0x42b678||0xcc;return function(_0x1cf262){if(_0x1cf262){return _0x4d43eb[_0x6a4a('0x27')](_0x42b678);}return _0x4d43eb[_0x6a4a('0x28')](_0x42b678)[_0x6a4a('0x29')]();};}function respondWithResult(_0x1701ac,_0x1139ab){_0x1139ab=_0x1139ab||0xc8;return function(_0x1098ea){if(_0x1098ea){return _0x1701ac['status'](_0x1139ab)[_0x6a4a('0x2a')](_0x1098ea);}};}function respondWithFilteredResult(_0x5274f1,_0x2ccfa6){return function(_0x289aa7){if(_0x289aa7){var _0x214241=typeof _0x2ccfa6['offset']===_0x6a4a('0x2b')&&typeof _0x2ccfa6[_0x6a4a('0x2c')]===_0x6a4a('0x2b');var _0x17bb1b=_0x289aa7[_0x6a4a('0x2d')];var _0x17b988=_0x214241?0x0:_0x2ccfa6['offset'];var _0x424c88=_0x214241?_0x289aa7['count']:_0x2ccfa6[_0x6a4a('0x2e')]+_0x2ccfa6[_0x6a4a('0x2c')];var _0x51f095;if(_0x424c88>=_0x17bb1b){_0x424c88=_0x17bb1b;_0x51f095=0xc8;}else{_0x51f095=0xce;}_0x5274f1['status'](_0x51f095);return _0x5274f1[_0x6a4a('0x2f')](_0x6a4a('0x30'),_0x17b988+'-'+_0x424c88+'/'+_0x17bb1b)[_0x6a4a('0x2a')](_0x289aa7);}return null;};}function patchUpdates(_0x15e7f9){return function(_0x3c3cc4){try{jsonpatch[_0x6a4a('0x31')](_0x3c3cc4,_0x15e7f9,!![]);}catch(_0x52ca3f){return BPromise['reject'](_0x52ca3f);}return _0x3c3cc4[_0x6a4a('0x32')]();};}function saveUpdates(_0x1d0352,_0x5ec1e8){return function(_0x5f4dea){if(_0x5f4dea){return _0x5f4dea['update'](_0x1d0352)['then'](function(_0x12a028){return _0x12a028;});}return null;};}function removeEntity(_0x4b6562,_0x533760){return function(_0x126d49){if(_0x126d49){return _0x126d49['destroy']()[_0x6a4a('0x1d')](function(){var _0x300500=_0x126d49[_0x6a4a('0x33')]({'plain':!![]});var _0x47b3fc=_0x6a4a('0x34');return db['UserProfileResource'][_0x6a4a('0x35')]({'where':{'type':_0x47b3fc,'resourceId':_0x300500['id']}})['then'](function(){return _0x126d49;});})['then'](function(){_0x4b6562[_0x6a4a('0x28')](0xcc)['end']();});}};}function handleEntityNotFound(_0x199d6c,_0x24a9c1){return function(_0x597297){if(!_0x597297){_0x199d6c[_0x6a4a('0x27')](0x194);}return _0x597297;};}function handleError(_0x2fb28,_0xfb007c){_0xfb007c=_0xfb007c||0x1f4;return function(_0x520e6e){logger[_0x6a4a('0x24')](_0x520e6e[_0x6a4a('0x36')]);if(_0x520e6e[_0x6a4a('0x37')]){delete _0x520e6e[_0x6a4a('0x37')];}_0x2fb28[_0x6a4a('0x28')](_0xfb007c)[_0x6a4a('0x38')](_0x520e6e);};}exports[_0x6a4a('0x39')]=function(_0xa6abf8,_0x54ea7d){var _0x5705b={'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x10e5ba={},_0x402135={'count':0x0,'rows':[]};var _0x2fd0a5=_['map'](db[_0x6a4a('0x3a')][_0x6a4a('0x3b')],function(_0x4143ae){return{'name':_0x4143ae['fieldName'],'type':_0x4143ae[_0x6a4a('0x3c')][_0x6a4a('0x3d')]};});_0x10e5ba[_0x6a4a('0x3e')]=_['map'](_0x2fd0a5,_0x6a4a('0x37'));_0x10e5ba[_0x6a4a('0x3f')]=_[_0x6a4a('0x40')](_0xa6abf8['query']);_0x10e5ba[_0x6a4a('0x41')]=_[_0x6a4a('0x42')](_0x10e5ba[_0x6a4a('0x3e')],_0x10e5ba[_0x6a4a('0x3f')]);_0x5705b[_0x6a4a('0x43')]=_[_0x6a4a('0x42')](_0x10e5ba['model'],qs[_0x6a4a('0x44')](_0xa6abf8[_0x6a4a('0x3f')][_0x6a4a('0x44')]));_0x5705b[_0x6a4a('0x43')]=_0x5705b['attributes'][_0x6a4a('0x45')]?_0x5705b[_0x6a4a('0x43')]:_0x10e5ba[_0x6a4a('0x3e')];if(!_0xa6abf8['query'][_0x6a4a('0x46')]('nolimit')){_0x5705b[_0x6a4a('0x2c')]=qs[_0x6a4a('0x2c')](_0xa6abf8[_0x6a4a('0x3f')][_0x6a4a('0x2c')]);_0x5705b[_0x6a4a('0x2e')]=qs[_0x6a4a('0x2e')](_0xa6abf8[_0x6a4a('0x3f')][_0x6a4a('0x2e')]);}_0x5705b[_0x6a4a('0x47')]=qs['sort'](_0xa6abf8[_0x6a4a('0x3f')][_0x6a4a('0x48')]);_0x5705b[_0x6a4a('0x49')]=qs[_0x6a4a('0x41')](_[_0x6a4a('0x4a')](_0xa6abf8['query'],_0x10e5ba[_0x6a4a('0x41')]),_0x2fd0a5);if(_0xa6abf8[_0x6a4a('0x3f')]['filter']){_0x5705b[_0x6a4a('0x49')]=_['merge'](_0x5705b[_0x6a4a('0x49')],{'$or':_[_0x6a4a('0x4b')](_0x2fd0a5,function(_0x5b7fc3){if(_0x5b7fc3[_0x6a4a('0x3c')]!==_0x6a4a('0x4c')){var _0x20b5ec={};_0x20b5ec[_0x5b7fc3[_0x6a4a('0x37')]]={'$like':'%'+_0xa6abf8['query'][_0x6a4a('0x4d')]+'%'};return _0x20b5ec;}})});}_0x5705b=_['merge']({},_0x5705b,_0xa6abf8[_0x6a4a('0x4e')]);var _0x773e57={'where':_0x5705b['where']};return db[_0x6a4a('0x3a')][_0x6a4a('0x2d')](_0x773e57)[_0x6a4a('0x1d')](function(_0x2fad92){_0x402135['count']=_0x2fad92;if(_0xa6abf8[_0x6a4a('0x3f')]['includeAll']){_0x5705b['include']=[{'all':!![]}];}return db[_0x6a4a('0x3a')][_0x6a4a('0x4f')](_0x5705b);})[_0x6a4a('0x1d')](function(_0x2da668){_0x402135[_0x6a4a('0x50')]=_0x2da668;return _0x402135;})[_0x6a4a('0x1d')](respondWithFilteredResult(_0x54ea7d,_0x5705b))[_0x6a4a('0x51')](handleError(_0x54ea7d,null));};exports[_0x6a4a('0x52')]=function(_0x2336f7,_0x25b6ce){var _0x14c75f={'raw':![],'where':{'id':_0x2336f7[_0x6a4a('0x53')]['id']},'include':[{'model':db[_0x6a4a('0x54')],'as':_0x6a4a('0x55')}]},_0x3a9361={};_0x3a9361[_0x6a4a('0x3e')]=_[_0x6a4a('0x40')](db['ChatWebsite'][_0x6a4a('0x3b')]);_0x3a9361[_0x6a4a('0x3f')]=_[_0x6a4a('0x40')](_0x2336f7[_0x6a4a('0x3f')]);_0x3a9361[_0x6a4a('0x41')]=_[_0x6a4a('0x42')](_0x3a9361[_0x6a4a('0x3e')],_0x3a9361[_0x6a4a('0x3f')]);_0x14c75f[_0x6a4a('0x43')]=_['intersection'](_0x3a9361[_0x6a4a('0x3e')],qs[_0x6a4a('0x44')](_0x2336f7['query'][_0x6a4a('0x44')]));_0x14c75f[_0x6a4a('0x43')]=_0x14c75f[_0x6a4a('0x43')][_0x6a4a('0x45')]?_0x14c75f[_0x6a4a('0x43')]:_0x3a9361['model'];if(_0x2336f7['query']['includeAll']){_0x14c75f[_0x6a4a('0x56')]=[{'all':!![]}];}_0x14c75f=_[_0x6a4a('0x57')]({},_0x14c75f,_0x2336f7[_0x6a4a('0x4e')]);return db[_0x6a4a('0x3a')][_0x6a4a('0x58')](_0x14c75f)['then'](handleEntityNotFound(_0x25b6ce,null))[_0x6a4a('0x1d')](respondWithResult(_0x25b6ce,null))[_0x6a4a('0x51')](handleError(_0x25b6ce,null));};exports[_0x6a4a('0x59')]=function(_0x2c8dc6,_0x3792de){return db[_0x6a4a('0x3a')][_0x6a4a('0x59')](_0x2c8dc6[_0x6a4a('0x5a')],{})['then'](function(_0x59c3b4){var _0x1b461e=_0x2c8dc6['user'][_0x6a4a('0x33')]({'plain':!![]});if(!_0x1b461e)throw new Error(_0x6a4a('0x5b'));if(_0x1b461e[_0x6a4a('0x5c')]===_0x6a4a('0x5d')){var _0x2dfeb7=_0x59c3b4[_0x6a4a('0x33')]({'plain':!![]});var _0x14a850=_0x6a4a('0x34');return db[_0x6a4a('0x5e')][_0x6a4a('0x58')]({'where':{'name':_0x14a850,'userProfileId':_0x1b461e[_0x6a4a('0x5f')]},'raw':!![]})[_0x6a4a('0x1d')](function(_0x40411c){if(_0x40411c&&_0x40411c[_0x6a4a('0x60')]===0x0){return db[_0x6a4a('0x61')][_0x6a4a('0x59')]({'name':_0x2dfeb7[_0x6a4a('0x37')],'resourceId':_0x2dfeb7['id'],'type':_0x40411c[_0x6a4a('0x37')],'sectionId':_0x40411c['id']},{})[_0x6a4a('0x1d')](function(){return _0x59c3b4;});}else{return _0x59c3b4;}})['catch'](function(_0x57f60e){logger[_0x6a4a('0x24')](_0x6a4a('0x62'),_0x57f60e);throw _0x57f60e;});}return _0x59c3b4;})['then'](respondWithResult(_0x3792de,0xc9))[_0x6a4a('0x51')](handleError(_0x3792de,null));};exports[_0x6a4a('0x63')]=function(_0x4e6f11,_0x5afbe2){if(_0x4e6f11[_0x6a4a('0x5a')]['id']){delete _0x4e6f11['body']['id'];}return db[_0x6a4a('0x3a')][_0x6a4a('0x58')]({'where':{'id':_0x4e6f11[_0x6a4a('0x53')]['id']},'include':[{'model':db[_0x6a4a('0x54')],'as':'mandatoryDispositionPause'}]})[_0x6a4a('0x1d')](handleEntityNotFound(_0x5afbe2,null))['then'](saveUpdates(_0x4e6f11[_0x6a4a('0x5a')],null))[_0x6a4a('0x1d')](respondWithResult(_0x5afbe2,null))[_0x6a4a('0x51')](handleError(_0x5afbe2,null));};exports['destroy']=function(_0xc2677d,_0x515df2){return db[_0x6a4a('0x3a')]['find']({'where':{'id':_0xc2677d[_0x6a4a('0x53')]['id']}})['then'](handleEntityNotFound(_0x515df2,null))['then'](removeEntity(_0x515df2,null))[_0x6a4a('0x51')](handleError(_0x515df2,null));};exports[_0x6a4a('0x64')]=function(_0x4cb2c6,_0x29c931){return db[_0x6a4a('0x3a')][_0x6a4a('0x64')]()['then'](respondWithResult(_0x29c931,null))[_0x6a4a('0x51')](handleError(_0x29c931,null));};exports['addDisposition']=function(_0x110cb7,_0x436842,_0x39c886){if(_0x110cb7[_0x6a4a('0x5a')]['id']){delete _0x110cb7['body']['id'];}return db[_0x6a4a('0x3a')][_0x6a4a('0x58')]({'where':{'id':_0x110cb7[_0x6a4a('0x53')]['id']}})['then'](handleEntityNotFound(_0x436842,null))['then'](function(_0x534d8c){if(_0x534d8c){_0x110cb7[_0x6a4a('0x5a')][_0x6a4a('0x65')]=_0x534d8c['id'];return db[_0x6a4a('0x66')][_0x6a4a('0x59')](_0x110cb7[_0x6a4a('0x5a')]);}})[_0x6a4a('0x1d')](respondWithResult(_0x436842,null))[_0x6a4a('0x51')](handleError(_0x436842,null));};exports[_0x6a4a('0x67')]=function(_0x384583,_0x14f02c,_0x8edd0e){var _0x2282ae={'raw':![],'where':{}};var _0x55ed45={};var _0x52d5f7={'count':0x0,'rows':[]};return db[_0x6a4a('0x3a')][_0x6a4a('0x68')]({'where':{'id':_0x384583[_0x6a4a('0x53')]['id']}})[_0x6a4a('0x1d')](handleEntityNotFound(_0x14f02c,null))[_0x6a4a('0x1d')](function(_0x6885b2){if(_0x6885b2){_0x55ed45[_0x6a4a('0x3e')]=_[_0x6a4a('0x40')](db[_0x6a4a('0x66')][_0x6a4a('0x3b')]);_0x55ed45['query']=_['keys'](_0x384583[_0x6a4a('0x3f')]);_0x55ed45[_0x6a4a('0x41')]=_[_0x6a4a('0x42')](_0x55ed45['model'],_0x55ed45[_0x6a4a('0x3f')]);_0x2282ae[_0x6a4a('0x43')]=_['intersection'](_0x55ed45[_0x6a4a('0x3e')],qs[_0x6a4a('0x44')](_0x384583['query'][_0x6a4a('0x44')]));_0x2282ae[_0x6a4a('0x43')]=_0x2282ae[_0x6a4a('0x43')][_0x6a4a('0x45')]?_0x2282ae[_0x6a4a('0x43')]:_0x55ed45[_0x6a4a('0x3e')];if(!_0x384583[_0x6a4a('0x3f')][_0x6a4a('0x46')]('nolimit')){_0x2282ae[_0x6a4a('0x2c')]=qs[_0x6a4a('0x2c')](_0x384583['query'][_0x6a4a('0x2c')]);_0x2282ae['offset']=qs[_0x6a4a('0x2e')](_0x384583[_0x6a4a('0x3f')][_0x6a4a('0x2e')]);}_0x2282ae['order']=qs[_0x6a4a('0x48')](_0x384583['query'][_0x6a4a('0x48')]);_0x2282ae[_0x6a4a('0x49')]=qs[_0x6a4a('0x41')](_[_0x6a4a('0x4a')](_0x384583[_0x6a4a('0x3f')],_0x55ed45['filters']));_0x2282ae[_0x6a4a('0x49')][_0x6a4a('0x65')]=_0x6885b2['id'];if(_0x384583[_0x6a4a('0x3f')][_0x6a4a('0x4d')]){_0x2282ae['where']=_[_0x6a4a('0x57')](_0x2282ae['where'],{'$or':_['map'](_0x2282ae[_0x6a4a('0x43')],function(_0x184412){var _0xe320ee={};_0xe320ee[_0x184412]={'$like':'%'+_0x384583['query'][_0x6a4a('0x4d')]+'%'};return _0xe320ee;})});}_0x2282ae=_[_0x6a4a('0x57')]({},_0x2282ae,_0x384583[_0x6a4a('0x4e')]);return db[_0x6a4a('0x66')][_0x6a4a('0x2d')]({'where':_0x2282ae[_0x6a4a('0x49')]})['then'](function(_0x381135){_0x52d5f7[_0x6a4a('0x2d')]=_0x381135;if(_0x384583['query']['includeAll']){_0x2282ae['include']=[{'all':!![]}];}return db['Disposition']['findAll'](_0x2282ae);})[_0x6a4a('0x1d')](function(_0x62d575){_0x52d5f7[_0x6a4a('0x50')]=_0x62d575;return _0x52d5f7;});}})[_0x6a4a('0x1d')](respondWithFilteredResult(_0x14f02c,_0x2282ae))['catch'](handleError(_0x14f02c,null));};exports[_0x6a4a('0x69')]=function(_0x455901,_0x31e566,_0x335c75){return db[_0x6a4a('0x3a')][_0x6a4a('0x58')]({'where':{'id':_0x455901['params']['id']}})[_0x6a4a('0x1d')](handleEntityNotFound(_0x31e566,null))[_0x6a4a('0x1d')](function(_0x355ab9){if(_0x355ab9){return _0x355ab9[_0x6a4a('0x69')](_0x455901[_0x6a4a('0x3f')]['ids']);}})[_0x6a4a('0x1d')](respondWithStatusCode(_0x31e566,null))[_0x6a4a('0x51')](handleError(_0x31e566,null));};exports[_0x6a4a('0x6a')]=function(_0x2e506b,_0x54e540,_0x41cad3){if(_0x2e506b[_0x6a4a('0x5a')]['id']){delete _0x2e506b[_0x6a4a('0x5a')]['id'];}return db[_0x6a4a('0x3a')][_0x6a4a('0x58')]({'where':{'id':_0x2e506b[_0x6a4a('0x53')]['id']}})[_0x6a4a('0x1d')](handleEntityNotFound(_0x54e540,null))[_0x6a4a('0x1d')](function(_0x3a55a3){if(_0x3a55a3){_0x2e506b[_0x6a4a('0x5a')]['ChatWebsiteId']=_0x3a55a3['id'];return db['CannedAnswer']['create'](_0x2e506b[_0x6a4a('0x5a')]);}})[_0x6a4a('0x1d')](respondWithResult(_0x54e540,null))['catch'](handleError(_0x54e540,null));};exports['getAnswers']=function(_0x16d0d,_0x17b9e8,_0x51785e){var _0x318109={'raw':![],'where':{}};var _0x27c068={};var _0x403841={'count':0x0,'rows':[]};return db[_0x6a4a('0x3a')][_0x6a4a('0x68')]({'where':{'id':_0x16d0d[_0x6a4a('0x53')]['id']}})[_0x6a4a('0x1d')](handleEntityNotFound(_0x17b9e8,null))[_0x6a4a('0x1d')](function(_0x26af77){if(_0x26af77){_0x27c068[_0x6a4a('0x3e')]=_[_0x6a4a('0x40')](db['CannedAnswer'][_0x6a4a('0x3b')]);_0x27c068['query']=_['keys'](_0x16d0d[_0x6a4a('0x3f')]);_0x27c068['filters']=_['intersection'](_0x27c068[_0x6a4a('0x3e')],_0x27c068[_0x6a4a('0x3f')]);_0x318109[_0x6a4a('0x43')]=_[_0x6a4a('0x42')](_0x27c068[_0x6a4a('0x3e')],qs[_0x6a4a('0x44')](_0x16d0d['query'][_0x6a4a('0x44')]));_0x318109[_0x6a4a('0x43')]=_0x318109[_0x6a4a('0x43')][_0x6a4a('0x45')]?_0x318109[_0x6a4a('0x43')]:_0x27c068['model'];if(!_0x16d0d[_0x6a4a('0x3f')][_0x6a4a('0x46')](_0x6a4a('0x6b'))){_0x318109[_0x6a4a('0x2c')]=qs[_0x6a4a('0x2c')](_0x16d0d[_0x6a4a('0x3f')][_0x6a4a('0x2c')]);_0x318109[_0x6a4a('0x2e')]=qs['offset'](_0x16d0d[_0x6a4a('0x3f')][_0x6a4a('0x2e')]);}_0x318109[_0x6a4a('0x47')]=qs[_0x6a4a('0x48')](_0x16d0d[_0x6a4a('0x3f')][_0x6a4a('0x48')]);_0x318109['where']=qs['filters'](_[_0x6a4a('0x4a')](_0x16d0d[_0x6a4a('0x3f')],_0x27c068[_0x6a4a('0x41')]));_0x318109[_0x6a4a('0x49')][_0x6a4a('0x65')]=_0x26af77['id'];if(_0x16d0d[_0x6a4a('0x3f')][_0x6a4a('0x4d')]){_0x318109[_0x6a4a('0x49')]=_[_0x6a4a('0x57')](_0x318109[_0x6a4a('0x49')],{'$or':_[_0x6a4a('0x4b')](_0x318109[_0x6a4a('0x43')],function(_0x5e4d90){var _0x3f464a={};_0x3f464a[_0x5e4d90]={'$like':'%'+_0x16d0d[_0x6a4a('0x3f')][_0x6a4a('0x4d')]+'%'};return _0x3f464a;})});}_0x318109=_['merge']({},_0x318109,_0x16d0d[_0x6a4a('0x4e')]);return db['CannedAnswer'][_0x6a4a('0x2d')]({'where':_0x318109[_0x6a4a('0x49')]})['then'](function(_0x449882){_0x403841[_0x6a4a('0x2d')]=_0x449882;if(_0x16d0d['query'][_0x6a4a('0x6c')]){_0x318109[_0x6a4a('0x56')]=[{'all':!![]}];}return db[_0x6a4a('0x6d')][_0x6a4a('0x4f')](_0x318109);})[_0x6a4a('0x1d')](function(_0x1ec814){_0x403841[_0x6a4a('0x50')]=_0x1ec814;return _0x403841;});}})['then'](respondWithFilteredResult(_0x17b9e8,_0x318109))[_0x6a4a('0x51')](handleError(_0x17b9e8,null));};exports[_0x6a4a('0x6e')]=function(_0x470858,_0x22077f,_0x94f52a){return db[_0x6a4a('0x3a')][_0x6a4a('0x58')]({'where':{'id':_0x470858[_0x6a4a('0x53')]['id']}})[_0x6a4a('0x1d')](handleEntityNotFound(_0x22077f,null))[_0x6a4a('0x1d')](function(_0x161c1e){if(_0x161c1e){return _0x161c1e['removeAnswers'](_0x470858[_0x6a4a('0x3f')][_0x6a4a('0x6f')]);}})['then'](respondWithStatusCode(_0x22077f,null))['catch'](handleError(_0x22077f,null));};exports[_0x6a4a('0x70')]=function(_0x3583ee,_0x45fdfb,_0xb42f50){_0x3583ee['body'][_0x6a4a('0x71')]=_0x3583ee[_0x6a4a('0x72')][_0x6a4a('0x73')];return db[_0x6a4a('0x3a')][_0x6a4a('0x58')]({'where':{'id':_0x3583ee[_0x6a4a('0x53')]['id']}})['then'](handleEntityNotFound(_0x45fdfb,null))[_0x6a4a('0x1d')](saveUpdates(_0x3583ee['body'],null))['then'](respondWithResult(_0x45fdfb,null))[_0x6a4a('0x51')](handleError(_0x45fdfb,null));};exports['addAvatar']=function(_0x49824e,_0x394235,_0x308c29){_0x49824e[_0x6a4a('0x5a')][_0x6a4a('0x74')]=_0x49824e[_0x6a4a('0x72')][_0x6a4a('0x73')];return db[_0x6a4a('0x3a')]['find']({'where':{'id':_0x49824e[_0x6a4a('0x53')]['id']}})[_0x6a4a('0x1d')](handleEntityNotFound(_0x394235,null))[_0x6a4a('0x1d')](saveUpdates(_0x49824e[_0x6a4a('0x5a')],null))[_0x6a4a('0x1d')](respondWithResult(_0x394235,null))['catch'](handleError(_0x394235,null));};exports[_0x6a4a('0x75')]=function(_0x711299,_0x7e8be4,_0x387ed5){_0x711299[_0x6a4a('0x5a')][_0x6a4a('0x76')]=_0x711299['file']['filename'];return db[_0x6a4a('0x3a')][_0x6a4a('0x58')]({'where':{'id':_0x711299[_0x6a4a('0x53')]['id']}})['then'](handleEntityNotFound(_0x7e8be4,null))[_0x6a4a('0x1d')](saveUpdates(_0x711299['body'],null))[_0x6a4a('0x1d')](respondWithResult(_0x7e8be4,null))[_0x6a4a('0x51')](handleError(_0x7e8be4,null));};exports[_0x6a4a('0x77')]=function(_0x52bba1,_0x23ea85,_0x3941d2){_0x52bba1[_0x6a4a('0x5a')][_0x6a4a('0x78')]=_0x52bba1[_0x6a4a('0x72')]['filename'];return db[_0x6a4a('0x3a')][_0x6a4a('0x58')]({'where':{'id':_0x52bba1[_0x6a4a('0x53')]['id']}})[_0x6a4a('0x1d')](handleEntityNotFound(_0x23ea85,null))[_0x6a4a('0x1d')](saveUpdates(_0x52bba1[_0x6a4a('0x5a')],null))[_0x6a4a('0x1d')](respondWithResult(_0x23ea85,null))[_0x6a4a('0x51')](handleError(_0x23ea85,null));};exports[_0x6a4a('0x79')]=function(_0x30b42c,_0x4326d0,_0x1348cc){var _0x6262ff=path[_0x6a4a('0x7a')](config[_0x6a4a('0x7b')],_0x6a4a('0x7c'));var _0x51e6ae={'where':{'id':_0x30b42c['params']['id']},'attributes':['id',_0x6a4a('0x71')],'raw':!![]};var _0x115650=![];return require(_0x6a4a('0x16'))[_0x6a4a('0x7d')]()['then'](function(_0x5e6c8f){if(_0x5e6c8f){_0x115650=_0x5e6c8f[_0x6a4a('0x7e')];}})[_0x6a4a('0x1d')](function(){return db[_0x6a4a('0x3a')]['find'](_0x51e6ae);})[_0x6a4a('0x1d')](handleEntityNotFound(_0x4326d0,null))[_0x6a4a('0x1d')](function(_0x5bc7a6){if(_0x5bc7a6){if(!_[_0x6a4a('0x7f')](_0x5bc7a6[_0x6a4a('0x71')])){if(fs['existsSync'](path[_0x6a4a('0x7a')](config[_0x6a4a('0x7b')],_0x6a4a('0x80'),_0x5bc7a6[_0x6a4a('0x71')]))&&_0x115650){_0x6262ff=path[_0x6a4a('0x7a')](config['root'],_0x6a4a('0x80'),_0x5bc7a6[_0x6a4a('0x71')]);}}return _0x4326d0[_0x6a4a('0x81')](_0x6262ff);}})[_0x6a4a('0x51')](handleError(_0x4326d0,null));};exports[_0x6a4a('0x82')]=function(_0xfa164f,_0x2883cf,_0x1f1676){var _0x78e586=path[_0x6a4a('0x7a')](config[_0x6a4a('0x7b')],_0x6a4a('0x83'));var _0x6c2721={'where':{'id':_0xfa164f[_0x6a4a('0x53')]['id']},'attributes':['id',_0x6a4a('0x74')],'raw':!![]};return db[_0x6a4a('0x3a')][_0x6a4a('0x58')](_0x6c2721)[_0x6a4a('0x1d')](handleEntityNotFound(_0x2883cf,null))[_0x6a4a('0x1d')](function(_0x1a5f5a){if(_0x1a5f5a){if(!_[_0x6a4a('0x7f')](_0x1a5f5a[_0x6a4a('0x74')])){if(fs['existsSync'](path[_0x6a4a('0x7a')](config['root'],_0x6a4a('0x84'),_0x1a5f5a[_0x6a4a('0x74')]))){_0x78e586=path[_0x6a4a('0x7a')](config[_0x6a4a('0x7b')],'server/files/images/avatars/',_0x1a5f5a['agentAvatar']);}}return _0x2883cf[_0x6a4a('0x81')](_0x78e586);}})[_0x6a4a('0x51')](handleError(_0x2883cf,null));};exports[_0x6a4a('0x85')]=function(_0x5f8d13,_0x1590f4,_0x4c34ee){var _0x1d1d23=path[_0x6a4a('0x7a')](config[_0x6a4a('0x7b')],'server/files/images/avatars/customer_avatar.png');var _0x38ce10={'where':{'id':_0x5f8d13[_0x6a4a('0x53')]['id']},'attributes':['id',_0x6a4a('0x76'),_0x6a4a('0x86')],'raw':!![]};return db[_0x6a4a('0x3a')]['find'](_0x38ce10)['then'](handleEntityNotFound(_0x1590f4,null))[_0x6a4a('0x1d')](function(_0x33dd36){if(_0x33dd36){if(!_[_0x6a4a('0x7f')](_0x33dd36[_0x6a4a('0x76')])){if(fs[_0x6a4a('0x87')](path[_0x6a4a('0x7a')](config[_0x6a4a('0x7b')],_0x6a4a('0x84'),_0x33dd36[_0x6a4a('0x76')]))&&_0x33dd36[_0x6a4a('0x86')]){_0x1d1d23=path[_0x6a4a('0x7a')](config[_0x6a4a('0x7b')],_0x6a4a('0x84'),_0x33dd36['customerAvatar']);}}return _0x1590f4[_0x6a4a('0x81')](_0x1d1d23);}})[_0x6a4a('0x51')](handleError(_0x1590f4,null));};exports[_0x6a4a('0x88')]=function(_0x5b2aba,_0x2a308c,_0x3a6879){var _0x231ce5=path['join'](config['root'],_0x6a4a('0x89'));var _0x16248a={'where':{'id':_0x5b2aba['params']['id']},'attributes':['id',_0x6a4a('0x78')],'raw':!![]};return db['ChatWebsite']['find'](_0x16248a)[_0x6a4a('0x1d')](handleEntityNotFound(_0x2a308c,null))['then'](function(_0x15c3d3){if(_0x15c3d3){if(!_[_0x6a4a('0x7f')](_0x15c3d3['systemAvatar'])){if(fs['existsSync'](path['join'](config[_0x6a4a('0x7b')],_0x6a4a('0x84'),_0x15c3d3[_0x6a4a('0x78')]))){_0x231ce5=path[_0x6a4a('0x7a')](config[_0x6a4a('0x7b')],'server/files/images/avatars/',_0x15c3d3[_0x6a4a('0x78')]);}}return _0x2a308c['download'](_0x231ce5);}})[_0x6a4a('0x51')](handleError(_0x2a308c,null));};exports[_0x6a4a('0x8a')]=function(_0x39cc1d,_0x29570f,_0x4fe2d3){var _0x71ec80=require(_0x6a4a('0x8b'));var _0x55d18c=new _0x71ec80();var _0x1d3b99=_0x55d18c[_0x6a4a('0x8c')](_0x39cc1d[_0x6a4a('0x8d')]['user-agent'])['getResult']();var _0x18bcd7={'body':_0x39cc1d[_0x6a4a('0x5a')],'channel':'chat'};var _0x3ae017=[];var _0x456430=[];var _0x17bac9={};var _0x1eb4f3=![];return db['CmContact'][_0x6a4a('0x64')]()['then'](function(_0x26694c){if(!_0x26694c){throw new db[(_0x6a4a('0x8e'))][(_0x6a4a('0x8f'))](_0x6a4a('0x90'));}_0x3ae017=_['difference'](_[_0x6a4a('0x40')](_0x26694c),[_0x6a4a('0x91'),_0x6a4a('0x92')]);_0x456430=_['difference'](_[_0x6a4a('0x40')](_0x26694c),[_0x6a4a('0x91'),'updatedAt',_0x6a4a('0x93'),_0x6a4a('0x94')]);if(_0x39cc1d['body']['id']){delete _0x39cc1d[_0x6a4a('0x5a')]['id'];}if(_['isNil'](_0x39cc1d['body']['from'])){throw new db[(_0x6a4a('0x8e'))][(_0x6a4a('0x8f'))](_0x6a4a('0x95'));}if(_[_0x6a4a('0x7f')](_0x39cc1d[_0x6a4a('0x5a')][_0x6a4a('0x5a')])||_0x39cc1d[_0x6a4a('0x5a')]['body']===''){throw new db[(_0x6a4a('0x8e'))]['ValidationError'](_0x6a4a('0x96'));}if(_['isNil'](_0x39cc1d[_0x6a4a('0x5a')]['mapKey'])){throw new db[(_0x6a4a('0x8e'))]['ValidationError']('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x456430);}if(!_['includes'](_0x456430,_0x39cc1d['body'][_0x6a4a('0x97')])){throw new db[(_0x6a4a('0x8e'))][(_0x6a4a('0x8f'))](_0x6a4a('0x98')+_0x456430);}_0x17bac9[_0x39cc1d[_0x6a4a('0x5a')]['mapKey']]=_0x39cc1d[_0x6a4a('0x5a')][_0x6a4a('0x99')];})[_0x6a4a('0x1d')](function(){return db['ChatWebsite'][_0x6a4a('0x58')]({'where':{'id':_0x39cc1d[_0x6a4a('0x53')]['id']},'include':[{'model':db[_0x6a4a('0x9a')],'as':'List','include':[{'model':db[_0x6a4a('0x9b')],'as':_0x6a4a('0x9c'),'where':_0x17bac9,'limit':0x1,'order':[[_0x6a4a('0x92'),'DESC']]}]},{'model':db[_0x6a4a('0x9d')],'as':_0x6a4a('0x9e')}]});})[_0x6a4a('0x1d')](handleEntityNotFound(_0x29570f,null))[_0x6a4a('0x1d')](function(_0x3e47a2){if(_0x3e47a2&&_0x3e47a2[_0x6a4a('0x9f')]){_0x18bcd7[_0x6a4a('0xa0')]=_0x3e47a2;_0x18bcd7['applications']=_0x3e47a2['Applications'];_0x18bcd7[_0x6a4a('0xa1')]=_0x3e47a2[_0x6a4a('0x9f')];_0x18bcd7[_0x6a4a('0xa2')]=_[_0x6a4a('0xa3')](_0x18bcd7[_0x6a4a('0xa2')],['priority'],[_0x6a4a('0xa4')]);if(_0x18bcd7['account'][_0x6a4a('0x9e')]){delete _0x18bcd7['account'][_0x6a4a('0x9e')];}if(_0x18bcd7[_0x6a4a('0xa0')][_0x6a4a('0x9f')]&&_0x18bcd7[_0x6a4a('0xa0')][_0x6a4a('0x9f')][_0x6a4a('0x9c')][_0x6a4a('0x45')]){return _0x18bcd7['account'][_0x6a4a('0x9f')][_0x6a4a('0x9c')][0x0];}var _0x22a405=_[_0x6a4a('0xa5')](_0x39cc1d[_0x6a4a('0x5a')],{'firstName':_0x39cc1d['body'][_0x6a4a('0x99')],'ListId':_0x3e47a2[_0x6a4a('0x94')]});_0x22a405[_0x39cc1d[_0x6a4a('0x5a')][_0x6a4a('0x97')]]=_0x39cc1d[_0x6a4a('0x5a')][_0x6a4a('0x99')];return db[_0x6a4a('0x9b')]['create'](_0x22a405,{'fields':_0x3ae017,'raw':!![]});}})[_0x6a4a('0x1d')](handleEntityNotFound(_0x29570f,null))[_0x6a4a('0x1d')](function(_0x4daef3){_0x18bcd7[_0x6a4a('0xa6')]=_0x4daef3;var _0x5882ad=_0x39cc1d['body'][_0x6a4a('0xa7')];if(_0x39cc1d[_0x6a4a('0x8d')]['cf-connecting-ip']){_0x5882ad=_0x39cc1d[_0x6a4a('0x8d')][_0x6a4a('0xa8')];}else if(_0x39cc1d[_0x6a4a('0x8d')][_0x6a4a('0xa9')]){_0x5882ad=_[_0x6a4a('0xaa')](_0x39cc1d[_0x6a4a('0x8d')][_0x6a4a('0xa9')][_0x6a4a('0xab')](','));}if(_0x4daef3){var _0x5e3257={'ContactId':_0x4daef3['id'],'ChatWebsiteId':_0x39cc1d[_0x6a4a('0x53')]['id'],'from':(_0x4daef3[_0x6a4a('0xac')]||'')+'\x20'+(_0x4daef3[_0x6a4a('0xad')]||''),'customerIp':_0x5882ad,'customerPort':_0x39cc1d[_0x6a4a('0x8d')][_0x6a4a('0xae')]?_0x39cc1d[_0x6a4a('0x8d')][_0x6a4a('0xae')]:null,'referer':_0x39cc1d[_0x6a4a('0x5a')][_0x6a4a('0xaf')],'browserName':_0x1d3b99[_0x6a4a('0xb0')][_0x6a4a('0x37')]&&_0x1d3b99['browser']['version']?util[_0x6a4a('0xb1')](_0x6a4a('0xb2'),_0x1d3b99[_0x6a4a('0xb0')][_0x6a4a('0x37')],_0x1d3b99[_0x6a4a('0xb0')][_0x6a4a('0xb3')]):_0x6a4a('0xb4'),'browserVersion':_0x1d3b99[_0x6a4a('0xb0')]['version']||_0x6a4a('0xb4'),'osName':util[_0x6a4a('0xb1')]('%s\x20%s',_0x1d3b99['os']['name'],_0x1d3b99['os'][_0x6a4a('0xb3')]),'osVersion':_0x1d3b99['os'][_0x6a4a('0xb3')],'deviceModel':_0x1d3b99['device'][_0x6a4a('0x3e')]&&_0x1d3b99[_0x6a4a('0xb5')][_0x6a4a('0xb6')]?util[_0x6a4a('0xb1')](_0x6a4a('0xb7'),_0x1d3b99[_0x6a4a('0xb5')][_0x6a4a('0x3e')],_0x1d3b99[_0x6a4a('0xb5')][_0x6a4a('0xb6')],_0x1d3b99[_0x6a4a('0xb5')][_0x6a4a('0x3c')]):null,'deviceVendor':_0x1d3b99[_0x6a4a('0xb5')][_0x6a4a('0xb6')],'deviceType':_0x1d3b99[_0x6a4a('0xb5')][_0x6a4a('0x3c')],'formData':JSON[_0x6a4a('0x23')](_0x39cc1d[_0x6a4a('0x5a')])};var _0x58d41d={'ChatWebsiteId':_0x39cc1d['params']['id'],'closed':![]};if(_0x39cc1d[_0x6a4a('0x5a')][_0x6a4a('0xb8')]){_0x58d41d[_0x6a4a('0xb8')]=_0x39cc1d['body'][_0x6a4a('0xb8')];return db['ChatInteraction'][_0x6a4a('0x58')]({'where':_0x58d41d})['then'](function(_0x15265e){if(_0x15265e){return[_0x15265e,![]];}_0x5e3257['threadId']=_0x39cc1d[_0x6a4a('0x5a')]['threadId'];_0x5e3257['externalUrl']=_0x39cc1d[_0x6a4a('0x5a')][_0x6a4a('0xb9')];return db[_0x6a4a('0xba')][_0x6a4a('0x59')](_0x5e3257)[_0x6a4a('0x1d')](function(_0x1970cd){return[_0x1970cd,!![]];});});}_0x58d41d[_0x6a4a('0xbb')]=_0x4daef3['id'];if(_0x39cc1d[_0x6a4a('0x5a')][_0x6a4a('0xbc')]&&_0x39cc1d[_0x6a4a('0x5a')][_0x6a4a('0xbc')]['id']){_0x58d41d['id']=_0x39cc1d[_0x6a4a('0x5a')]['interaction']['id'];return db['ChatInteraction']['find']({'where':_0x58d41d})[_0x6a4a('0x1d')](function(_0x38675d){if(_0x38675d){return[_0x38675d,![]];}return db[_0x6a4a('0xba')][_0x6a4a('0x59')](_0x5e3257)[_0x6a4a('0x1d')](function(_0x2c27b0){return[_0x2c27b0,!![]];});});}return db[_0x6a4a('0xba')][_0x6a4a('0x59')](_0x5e3257)[_0x6a4a('0x1d')](function(_0x2e5e84){return[_0x2e5e84,!![]];});}})[_0x6a4a('0xbd')](function(_0x59ca75,_0x18ff0a){if(_0x59ca75){_0x1eb4f3=_0x18ff0a;if(!_0x18ff0a){var _0x48e7ac={'from':(_0x18bcd7[_0x6a4a('0xa6')]['firstName']||'')+'\x20'+(_0x18bcd7[_0x6a4a('0xa6')][_0x6a4a('0xad')]||'')};if(_0x39cc1d[_0x6a4a('0x5a')]['threadId']&&_0x39cc1d[_0x6a4a('0x5a')]['messageId']&&_0x39cc1d[_0x6a4a('0x5a')][_0x6a4a('0xb8')]!=_0x39cc1d[_0x6a4a('0x5a')][_0x6a4a('0xbe')]){_0x48e7ac['threadId']=_0x39cc1d[_0x6a4a('0x5a')][_0x6a4a('0xbe')];}return _0x59ca75['update'](_0x48e7ac);}else{return _0x59ca75;}}})[_0x6a4a('0x1d')](function(_0x510bcc){_0x18bcd7[_0x6a4a('0xbc')]=_0x510bcc[_0x6a4a('0x33')]({'plain':!![]});_0x18bcd7['interaction'][_0x6a4a('0xbf')]=_0x1eb4f3;if(_0x18bcd7[_0x6a4a('0xbc')]['created']){if(_0x18bcd7[_0x6a4a('0xa0')][_0x6a4a('0xc0')]){_0x18bcd7[_0x6a4a('0xa2')]['push']({'id':0x0,'priority':_0x18bcd7[_0x6a4a('0xa2')]['length']+0x1,'app':_0x6a4a('0xc1'),'appdata':_0x6a4a('0xc2'),'interval':'*,*,*,*'});}}return db[_0x6a4a('0xc3')][_0x6a4a('0x59')]({'body':_0x39cc1d[_0x6a4a('0x5a')][_0x6a4a('0x5a')],'ChatWebsiteId':_0x39cc1d[_0x6a4a('0x53')]['id'],'ChatInteractionId':_0x510bcc['id'],'direction':'in','ContactId':_0x18bcd7['contact']['id'],'AttachmentId':_0x39cc1d['body']['AttachmentId']});})[_0x6a4a('0x1d')](function(_0x31447e){_0x18bcd7['message']=_0x31447e;if(_0x18bcd7[_0x6a4a('0xbc')][_0x6a4a('0xc4')]){return db['User'][_0x6a4a('0x58')]({'attributes':['id',_0x6a4a('0x37')],'where':{'id':_0x18bcd7['interaction'][_0x6a4a('0xc4')]}})['then'](function(_0x25a22f){if(_0x25a22f){_0x18bcd7[_0x6a4a('0xa2')][_0x6a4a('0xc5')]({'id':0x0,'priority':0x0,'app':_0x6a4a('0xc6'),'appdata':_0x25a22f['name']+','+(_0x18bcd7[_0x6a4a('0xa0')][_0x6a4a('0xc7')]||0xa),'interval':'*,*,*,*'});_0x18bcd7[_0x6a4a('0xc8')]=!![];}return respondWithRpcPromise(_0x6a4a('0xc9'),'startRouting',_0x18bcd7);});}return respondWithRpcPromise('Start',_0x6a4a('0xca'),_0x18bcd7);})[_0x6a4a('0x1d')](function(_0x48f8e3){respondWithRpcPromise('EventManager',_0x6a4a('0xcb'),{'event':'notify','message':_0x48f8e3},client9002);return _0x48f8e3;})[_0x6a4a('0x1d')](respondWithResult(_0x29570f,null))['catch'](handleError(_0x29570f,null));};exports['offline']=function(_0x15f2ed,_0x32edb5,_0x261bf5){var _0x52bbf5,_0x246844,_0x20f6e3;var _0x2324f8=[];var _0x1d5691=[];var _0x399460={};var _0x5bd247=_0x15f2ed[_0x6a4a('0xcc')]||[];var _0x336bb4=[];var _0x5d9ee0;return db[_0x6a4a('0x9b')][_0x6a4a('0x64')]()[_0x6a4a('0x1d')](function(_0x1ecca2){if(!_0x1ecca2){throw new db[(_0x6a4a('0x8e'))][(_0x6a4a('0x8f'))]('no\x20available\x20attributes');}_0x1d5691=_['difference'](_[_0x6a4a('0x40')](_0x1ecca2),[_0x6a4a('0x91'),_0x6a4a('0x92')]);_0x2324f8=_[_0x6a4a('0xcd')](_[_0x6a4a('0x40')](_0x1ecca2),[_0x6a4a('0x91'),_0x6a4a('0x92'),'CompanyId','ListId']);if(_0x15f2ed[_0x6a4a('0x5a')]['id']){delete _0x15f2ed[_0x6a4a('0x5a')]['id'];}if(_[_0x6a4a('0x7f')](_0x15f2ed[_0x6a4a('0x5a')][_0x6a4a('0x99')])){throw _0x32edb5[_0x6a4a('0x28')](0x1f4)[_0x6a4a('0x38')](new db['Sequelize']['ValidationError'](_0x6a4a('0x95')));}if(_[_0x6a4a('0x7f')](_0x15f2ed[_0x6a4a('0x5a')][_0x6a4a('0x5a')])||_0x15f2ed[_0x6a4a('0x5a')][_0x6a4a('0x5a')]===''){throw _0x32edb5['status'](0x1f4)[_0x6a4a('0x38')](new db[(_0x6a4a('0x8e'))][(_0x6a4a('0x8f'))](_0x6a4a('0x96')));}if(_[_0x6a4a('0x7f')](_0x15f2ed[_0x6a4a('0x5a')][_0x6a4a('0xce')])){throw _0x32edb5[_0x6a4a('0x28')](0x1f4)[_0x6a4a('0x38')](new db[(_0x6a4a('0x8e'))][(_0x6a4a('0x8f'))](_0x6a4a('0xcf')+_0x2324f8));}if(!_[_0x6a4a('0xd0')](_0x2324f8,_0x15f2ed['body'][_0x6a4a('0xce')])){throw _0x32edb5[_0x6a4a('0x28')](0x1f4)['send'](new db[(_0x6a4a('0x8e'))][(_0x6a4a('0x8f'))](_0x6a4a('0xd1')+_0x2324f8));}_0x399460[_0x15f2ed['body'][_0x6a4a('0xce')]]=_0x15f2ed[_0x6a4a('0x5a')][_0x6a4a('0x99')];})[_0x6a4a('0x1d')](function(){return db[_0x6a4a('0x3a')][_0x6a4a('0x58')]({'where':{'id':_0x15f2ed[_0x6a4a('0x53')]['id']},'include':[{'model':db[_0x6a4a('0x9a')],'as':_0x6a4a('0x9f')},{'model':db[_0x6a4a('0xd2')],'as':_0x6a4a('0xd2')}]});})[_0x6a4a('0x1d')](handleEntityNotFound(_0x32edb5,null))[_0x6a4a('0x1d')](function(_0x4a3893){if(_0x4a3893&&_0x4a3893[_0x6a4a('0x9f')]){_0x246844=_0x4a3893;var _0x26ae8e=_[_0x6a4a('0xa5')](_0x15f2ed['body'],{'firstName':_0x15f2ed[_0x6a4a('0x5a')][_0x6a4a('0x99')],'phone':_0x15f2ed[_0x6a4a('0x5a')][_0x6a4a('0x99')],'ListId':_0x4a3893['ListId']});_0x26ae8e[_0x15f2ed[_0x6a4a('0x5a')][_0x6a4a('0xce')]]=_0x15f2ed[_0x6a4a('0x5a')][_0x6a4a('0x99')];return db['CmContact']['findOrCreate']({'where':_0x399460,'defaults':_0x26ae8e});}})[_0x6a4a('0xbd')](function(_0x17f24e){if(_0x17f24e){_0x20f6e3=_0x17f24e;var _0x500fde=fs[_0x6a4a('0xd3')](path[_0x6a4a('0x7a')](config[_0x6a4a('0x7b')],'server/files/templates/chatOfflineMessage.ejs'),_0x6a4a('0xd4'));var _0x1d11e2=ejs[_0x6a4a('0xd5')](_0x500fde,{'body':_[_0x6a4a('0xd6')](_0x15f2ed[_0x6a4a('0x5a')][_0x6a4a('0x5a')]),'bodyTitle':_0x246844[_0x6a4a('0xd7')]});return db[_0x6a4a('0xd8')][_0x6a4a('0x59')]({'body':_0x1d11e2,'ContactId':_0x17f24e['id'],'ChatWebsiteId':_0x246844['id']});}})[_0x6a4a('0x1d')](function(_0x46c31e){_0x5d9ee0=_0x46c31e;if(_0x5bd247[_0x6a4a('0x45')]){var _0x270716=_0x5bd247[_0x6a4a('0x4b')](function(_0x37882d){return{'name':_0x37882d[_0x6a4a('0xd9')],'basename':_0x37882d[_0x6a4a('0x73')],'type':_0x37882d[_0x6a4a('0xda')],'ChatOfflineMessageId':_0x46c31e['id']};});_0x336bb4=_0x270716['map'](_0x52fe6a=>{var _0x5cba45={'filename':_0x52fe6a['name'],'path':path[_0x6a4a('0x7a')](config['root'],'server','files',_0x6a4a('0xdb'),_0x6a4a('0xdc'),_0x52fe6a[_0x6a4a('0xdd')])};return _0x5cba45;});if(!_0x246844[_0x6a4a('0xde')]){return db[_0x6a4a('0xdf')][_0x6a4a('0xe0')](function(_0x1784ba){return db['Attachment'][_0x6a4a('0xe1')](_0x270716,{'transaction':_0x1784ba});});}}})['then'](function(){if(_0x5d9ee0){_0x52bbf5=_0x5d9ee0;return db[_0x6a4a('0xd2')][_0x6a4a('0x68')]({'where':{'active':!![]},'include':[{'model':db[_0x6a4a('0xe2')],'as':_0x6a4a('0xe3'),'raw':!![]}]});}})[_0x6a4a('0x1d')](function(_0x5984c5){if(_0x5984c5&&_0x5984c5['Smtp']&&_0x246844[_0x6a4a('0xe4')]&&_0x246844[_0x6a4a('0xe5')]){var _0x23c31c={'tls':{'rejectUnauthorized':![]}};if(_0x5984c5[_0x6a4a('0xe3')][_0x6a4a('0xe6')]){_0x23c31c[_0x6a4a('0xe6')]=_0x5984c5[_0x6a4a('0xe3')][_0x6a4a('0xe6')];}else{_0x23c31c[_0x6a4a('0xe7')]=_0x5984c5[_0x6a4a('0xe3')][_0x6a4a('0xe7')];_0x23c31c[_0x6a4a('0xe8')]=_0x5984c5[_0x6a4a('0xe3')][_0x6a4a('0xe8')];_0x23c31c[_0x6a4a('0xe9')]=_0x5984c5[_0x6a4a('0xe3')][_0x6a4a('0xe9')];}if(_0x5984c5[_0x6a4a('0xe3')][_0x6a4a('0xea')]){_0x23c31c[_0x6a4a('0xeb')]={'user':_0x5984c5['Smtp']['user'],'pass':_0x5984c5['Smtp']['pass']};}return respondWithRpcPromise('SendMail','sendMail',{'account':_0x23c31c,'message':{'from':util['format']('\x22%s\x22\x20<%s>',_0x5984c5[_0x6a4a('0x37')],_0x5984c5[_0x6a4a('0xec')]||_0x5984c5[_0x6a4a('0xe3')]['user']),'to':_0x246844[_0x6a4a('0xe5')],'subject':_0x246844[_0x6a4a('0xed')],'html':_0x52bbf5['body'],'attachments':_0x336bb4}},client9003)[_0x6a4a('0x1d')](function(){return _0x52bbf5;})[_0x6a4a('0x51')](function(_0x355620){console['error'](_0x355620);});}})['then'](function(){if(_0x246844&&_0x246844[_0x6a4a('0xde')]&&_0x246844[_0x6a4a('0xee')]){var _0x4e8bf3=[];if(_0x5bd247[_0x6a4a('0x45')]){_0x4e8bf3=_0x5bd247['map'](function(_0x395691){return{'name':_0x395691[_0x6a4a('0xd9')],'basename':_0x395691[_0x6a4a('0x73')],'type':_0x395691[_0x6a4a('0xda')],'ChatOfflineMessageId':_0x5d9ee0['id']};});}var _0x3e775a;if(!_[_0x6a4a('0x7f')](_0x246844[_0x6a4a('0xef')])){var _0x2659ee=_['map'](_0x15f2ed[_0x6a4a('0x5a')],function(_0x3f437f){return _0x3f437f;});var _0x286b0b=_['toPairsIn'](_0x2659ee)[0x0];var _0x23b4a5=_[_0x6a4a('0xf0')](_0x286b0b,function(_0xa93ae4){return _0xa93ae4;});_0x3e775a=_0x23b4a5[0x1][_0x246844['subjectOffline']];}var _0x1f7d22={'from':_0x20f6e3[_0x6a4a('0xec')],'firstName':_0x20f6e3[_0x6a4a('0xac')],'lastName':_0x20f6e3[_0x6a4a('0xad')],'mapKey':'email','message':{'from':_0x20f6e3[_0x6a4a('0xec')],'to':_0x246844['MailAccount'][_0x6a4a('0xec')],'cc':'','subject':_[_0x6a4a('0x7f')](_0x3e775a)?_0x246844[_0x6a4a('0xed')]:_0x3e775a,'messageId':'','sentAt':new Date(),'attach':_0x4e8bf3[_0x6a4a('0x45')],'attachments':_0x4e8bf3,'originChannel':_0x6a4a('0xf1'),'ChatWebsiteId':_0x246844['id'],'ChatOfflineMessageId':_0x52bbf5['id'],'originTo':_0x246844[_0x6a4a('0xd2')][_0x6a4a('0xec')]},'body':_0x52bbf5[_0x6a4a('0x5a')]};var _0x136b81={'account':{'id':_0x246844[_0x6a4a('0xee')]},'body':_0x1f7d22,'log':_0x6a4a('0xf2')};return respondWithRpcPromise(_0x6a4a('0xf2'),'notifyMail',_0x136b81,client9001)[_0x6a4a('0x1d')](function(){return _0x52bbf5;})[_0x6a4a('0x51')](function(_0x5787a9){console[_0x6a4a('0x24')](_0x5787a9);});}return;})[_0x6a4a('0x1d')](function(){if(_0x52bbf5){return _0x52bbf5;}})[_0x6a4a('0x1d')](respondWithResult(_0x32edb5,null))[_0x6a4a('0x51')](function(_0x3fb66b){console[_0x6a4a('0x24')](_0x6a4a('0x51'),_0x3fb66b);for(var _0x4aa35b of _0x5bd247){var _0x54be4b=path['join'](config[_0x6a4a('0x7b')],_0x6a4a('0xf3'),_0x6a4a('0xcc'),_0x6a4a('0xdb'),_0x6a4a('0xdc'),_0x4aa35b[_0x6a4a('0x73')]);fs_extra[_0x6a4a('0xf4')](_0x54be4b)['catch'](function(_0x50229e){console['error'](_0x6a4a('0xf5'),_0x54be4b,_0x50229e);});}});};exports['addInteraction']=function(_0x48150e,_0x229aa8,_0x58cde3){return db['ChatInteraction'][_0x6a4a('0x58')]({'where':{'id':_0x48150e[_0x6a4a('0x53')]['id']}})['then'](handleEntityNotFound(_0x229aa8,null))[_0x6a4a('0x1d')](function(_0x48c104){if(_0x48c104){return _0x48c104[_0x6a4a('0xf6')](_0x48150e[_0x6a4a('0x5a')][_0x6a4a('0x6f')],_[_0x6a4a('0xf7')](_0x48150e[_0x6a4a('0x5a')],[_0x6a4a('0x6f'),'id'])||{});}})[_0x6a4a('0x1d')](respondWithResult(_0x229aa8,null))[_0x6a4a('0x51')](handleError(_0x229aa8,null));};exports[_0x6a4a('0xf8')]=function(_0x4b0759,_0x29261b,_0x146625){var _0x303a58={'raw':![],'where':{}};var _0x1b8ab4={};var _0x5d4925={'count':0x0,'rows':[]};return db[_0x6a4a('0x3a')]['findOne']({'where':{'id':_0x4b0759['params']['id']}})[_0x6a4a('0x1d')](handleEntityNotFound(_0x29261b,null))[_0x6a4a('0x1d')](function(_0x5155c2){if(_0x5155c2){_0x1b8ab4[_0x6a4a('0x3e')]=_[_0x6a4a('0x40')](db['ChatInteraction'][_0x6a4a('0x3b')]);_0x1b8ab4[_0x6a4a('0x3f')]=_['keys'](_0x4b0759[_0x6a4a('0x3f')]);_0x1b8ab4['filters']=_[_0x6a4a('0x42')](_0x1b8ab4[_0x6a4a('0x3e')],_0x1b8ab4['query']);_0x303a58[_0x6a4a('0x43')]=_[_0x6a4a('0x42')](_0x1b8ab4['model'],qs[_0x6a4a('0x44')](_0x4b0759[_0x6a4a('0x3f')]['fields']));_0x303a58[_0x6a4a('0x43')]=_0x303a58[_0x6a4a('0x43')]['length']?_0x303a58[_0x6a4a('0x43')]:_0x1b8ab4[_0x6a4a('0x3e')];if(!_0x4b0759[_0x6a4a('0x3f')][_0x6a4a('0x46')](_0x6a4a('0x6b'))){_0x303a58[_0x6a4a('0x2c')]=qs['limit'](_0x4b0759[_0x6a4a('0x3f')][_0x6a4a('0x2c')]);_0x303a58[_0x6a4a('0x2e')]=qs[_0x6a4a('0x2e')](_0x4b0759['query'][_0x6a4a('0x2e')]);}_0x303a58[_0x6a4a('0x47')]=qs['sort'](_0x4b0759['query']['sort']);_0x303a58[_0x6a4a('0x49')]=qs[_0x6a4a('0x41')](_[_0x6a4a('0x4a')](_0x4b0759[_0x6a4a('0x3f')],_0x1b8ab4[_0x6a4a('0x41')]));_0x303a58[_0x6a4a('0x49')][_0x6a4a('0x65')]=_0x5155c2['id'];if(_0x4b0759['query'][_0x6a4a('0x4d')]){_0x303a58['where']=_[_0x6a4a('0x57')](_0x303a58[_0x6a4a('0x49')],{'$or':_['map'](_0x303a58[_0x6a4a('0x43')],function(_0x11555b){var _0x35e3c6={};_0x35e3c6[_0x11555b]={'$like':'%'+_0x4b0759[_0x6a4a('0x3f')]['filter']+'%'};return _0x35e3c6;})});}_0x303a58=_[_0x6a4a('0x57')]({},_0x303a58,_0x4b0759[_0x6a4a('0x4e')]);return db['ChatInteraction'][_0x6a4a('0x2d')]({'where':_0x303a58['where']})[_0x6a4a('0x1d')](function(_0x2cac66){_0x5d4925['count']=_0x2cac66;if(_0x4b0759[_0x6a4a('0x3f')][_0x6a4a('0x6c')]){_0x303a58[_0x6a4a('0x56')]=[{'model':db[_0x6a4a('0x9b')],'as':_0x6a4a('0xf9'),'required':![]},{'model':db['User'],'as':'Owner','attributes':[_0x6a4a('0x37'),'fullname',_0x6a4a('0xfa')],'required':![]},{'model':db[_0x6a4a('0xfb')],'as':_0x6a4a('0xfc'),'attributes':['id',_0x6a4a('0x37'),'color'],'where':_0x4b0759[_0x6a4a('0x3f')]['tag']?{'id':_0x4b0759[_0x6a4a('0x3f')]['tag']}:undefined,'required':_0x4b0759[_0x6a4a('0x3f')][_0x6a4a('0xfd')]?!![]:![]}];}return db[_0x6a4a('0xba')][_0x6a4a('0x4f')](_0x303a58);})['then'](function(_0x4758fb){_0x5d4925['rows']=_0x4758fb;return _0x5d4925;});}})['then'](respondWithFilteredResult(_0x29261b,_0x303a58))[_0x6a4a('0x51')](handleError(_0x29261b,null));};function iftimePromise(_0x5e3ab3,_0x3692c7){return respondWithRpcPromise(_0x6a4a('0xfe'),_0x6a4a('0xff'),{'command':_0x3692c7[_0x6a4a('0x100')]?util[_0x6a4a('0xb1')](_0x6a4a('0x101'),_0x5e3ab3[_0x6a4a('0x102')],_0x3692c7[_0x6a4a('0x100')]):util['format'](_0x6a4a('0x103'),_0x5e3ab3['interval'])},client9002)[_0x6a4a('0x1d')](function(_0x17838a){var _0x4832bc=_0x17838a&&_0x17838a[_0x6a4a('0x104')]('true')>=0x0?!![]:![];logger['info']('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x3692c7['id'],_0x5e3ab3['id'],_0x5e3ab3[_0x6a4a('0x102')],_0x4832bc?'ONLINE':_0x6a4a('0x105'),_0x3692c7[_0x6a4a('0x100')]?_0x3692c7['timezone']:'No\x20timezone');return _0x4832bc;})[_0x6a4a('0x51')](function(_0x4f2129){logger[_0x6a4a('0x24')](_0x6a4a('0x106'),_0x3692c7['id'],_0x5e3ab3['id'],_0x5e3ab3[_0x6a4a('0x102')],util[_0x6a4a('0x107')](_0x4f2129,{'showHidden':![],'depth':null}),_0x3692c7[_0x6a4a('0x100')]?_0x3692c7['timezone']:_0x6a4a('0x108'));return![];});}exports['getSnippet']=function(_0x9a38c2,_0x1b4568,_0x39eac4){var _0x276f3d=0x0;var _0x482ac2=0x0;var _0x25aca7=![];var _0x1642b7;var _0x219699;return db[_0x6a4a('0x3a')]['find']({'where':{'id':_0x9a38c2[_0x6a4a('0x53')]['id']},'include':[{'model':db[_0x6a4a('0x109')],'as':_0x6a4a('0x109'),'include':[{'model':db[_0x6a4a('0x109')],'as':'Intervals','attributes':['id','interval'],'raw':!![]}]}]})['then'](handleEntityNotFound(_0x1b4568,null))['then'](function(_0x14783d){if(_0x14783d){_0x1642b7=_0x14783d;return _0x14783d['getProactiveActions']({'raw':!![]});}})['then'](function(_0x5f5cc0){if(_0x1642b7){if(_0x5f5cc0){_0x219699=_0x5f5cc0;}}return require('../../config/license/util')[_0x6a4a('0x7d')]();})[_0x6a4a('0x1d')](function(_0x46f827){if(_0x46f827){_0x482ac2=_0x46f827[_0x6a4a('0x10a')];_0x25aca7=_0x46f827[_0x6a4a('0x7e')];}})[_0x6a4a('0x1d')](function(){return db[_0x6a4a('0xba')][_0x6a4a('0x2d')]({'where':{'closed':![]}});})[_0x6a4a('0x1d')](function(_0x4e7b84){_0x276f3d=_0x4e7b84;if(_0x482ac2&&_0x4e7b84>_0x482ac2){return db[_0x6a4a('0x10b')][_0x6a4a('0x68')]({'where':{'id':0x1}})[_0x6a4a('0x1d')](function(_0x1fc6eb){if(_0x1fc6eb){_0x1fc6eb[_0x6a4a('0x10c')](_0x6a4a('0x10d'));}});}})[_0x6a4a('0x1d')](function(){if(_0x1642b7[_0x6a4a('0x109')]&&_0x1642b7[_0x6a4a('0x109')][_0x6a4a('0x10e')]){var _0x2e6d93=[];for(var _0x31cbe4=0x0;_0x31cbe4<_0x1642b7[_0x6a4a('0x109')]['Intervals'][_0x6a4a('0x45')];_0x31cbe4++){var _0x2a71ed=_0x1642b7[_0x6a4a('0x109')][_0x6a4a('0x10e')][_0x31cbe4][_0x6a4a('0x33')]({'plain':!![]});_0x2e6d93['push'](iftimePromise(_0x2a71ed,_0x1642b7));}return BPromise[_0x6a4a('0x10f')](_0x2e6d93)['then'](function(_0x161a31){return _['some'](_0x161a31);});}else{return!![];}})[_0x6a4a('0x1d')](function(_0x66b0bc){var _0x15e8aa=fs['readFileSync'](path[_0x6a4a('0x7a')](config['root'],'server/files/chat/iframe.ejs'),'utf8');var _0x2d1fdc={'remote':_0x1642b7[_0x6a4a('0x110')],'query':querystring[_0x6a4a('0x23')](_['merge'](_0x1642b7['get']({'plain':!![]}),{'customerIp':_0x9a38c2[_0x6a4a('0x8d')][_0x6a4a('0xa9')]||_0x9a38c2[_0x6a4a('0x8d')]['x-real-ip']||_0x9a38c2['connection'][_0x6a4a('0x111')]||_0x9a38c2['ip'],'referer':_0x9a38c2[_0x6a4a('0x8d')][_0x6a4a('0xaf')],'openedInteractions':_0x276f3d,'maxInteractions':_0x482ac2,'virtual':_0x25aca7[_0x6a4a('0x10a')],'online':_0x66b0bc,'custom':_0x25aca7}))[_0x6a4a('0x112')](/'/g,'\x5c\x27')};_0x1b4568[_0x6a4a('0x38')](ejs[_0x6a4a('0xd5')](Mustache[_0x6a4a('0xd5')](_0x15e8aa,_0x2d1fdc),{'proactiveActions':_0x219699,'alignment':_0x1642b7[_0x6a4a('0x113')],'verticalAlignment':_0x1642b7[_0x6a4a('0x114')],'div_color':_0x1642b7[_0x6a4a('0x115')],'text_color':_0x1642b7['textColor'],'button_color':_0x1642b7[_0x6a4a('0x116')],'background_color':_0x1642b7['backgroundColor']}));})[_0x6a4a('0x51')](handleError(_0x1b4568,null));};exports[_0x6a4a('0x117')]=function(_0x98cbd1,_0x1e2c6e,_0x2640f1){return db['ChatWebsite'][_0x6a4a('0x68')]({'where':{'id':_0x98cbd1[_0x6a4a('0x53')]['id']}})[_0x6a4a('0x1d')](handleEntityNotFound(_0x1e2c6e,null))[_0x6a4a('0x1d')](function(_0x56dbbb){if(_0x56dbbb){return db['sequelize'][_0x6a4a('0xe0')](function(_0x3dadaf){return db['ChatApplication'][_0x6a4a('0x35')]({'where':{'ChatWebsiteId':_0x98cbd1[_0x6a4a('0x53')]['id']},'transaction':_0x3dadaf})[_0x6a4a('0x1d')](function(_0x4737de){var _0x45ec8e=_[_0x6a4a('0x4b')](_0x98cbd1[_0x6a4a('0x5a')],function(_0x5502d7){_0x5502d7[_0x6a4a('0x65')]=_0x98cbd1[_0x6a4a('0x53')]['id'];return _0x5502d7;});return db[_0x6a4a('0x9d')][_0x6a4a('0xe1')](_0x45ec8e,{'transaction':_0x3dadaf});});})[_0x6a4a('0x1d')](function(){return db[_0x6a4a('0x9d')][_0x6a4a('0x118')]({'where':{'ChatWebsiteId':_0x98cbd1[_0x6a4a('0x53')]['id']},'order':_0x6a4a('0x119')});});}})[_0x6a4a('0x1d')](respondWithResult(_0x1e2c6e,null))['catch'](handleError(_0x1e2c6e,null));};exports[_0x6a4a('0x11a')]=function(_0x44e6d6,_0x5a31eb,_0x1420e4){var _0x15d235={};var _0x2e9820={};var _0x40ea5f;var _0x2c4e82;return db[_0x6a4a('0x3a')][_0x6a4a('0x68')]({'where':{'id':_0x44e6d6['params']['id']}})[_0x6a4a('0x1d')](handleEntityNotFound(_0x5a31eb,null))['then'](function(_0x3db622){if(_0x3db622){_0x40ea5f=_0x3db622;_0x2e9820[_0x6a4a('0x3e')]=_[_0x6a4a('0x40')](db[_0x6a4a('0x9d')][_0x6a4a('0x3b')]);_0x2e9820[_0x6a4a('0x3f')]=_[_0x6a4a('0x40')](_0x44e6d6[_0x6a4a('0x3f')]);_0x2e9820[_0x6a4a('0x41')]=_['intersection'](_0x2e9820[_0x6a4a('0x3e')],_0x2e9820[_0x6a4a('0x3f')]);_0x15d235['attributes']=_[_0x6a4a('0x42')](_0x2e9820[_0x6a4a('0x3e')],qs[_0x6a4a('0x44')](_0x44e6d6[_0x6a4a('0x3f')]['fields']));_0x15d235[_0x6a4a('0x43')]=_0x15d235['attributes'][_0x6a4a('0x45')]?_0x15d235[_0x6a4a('0x43')]:_0x2e9820[_0x6a4a('0x3e')];_0x15d235[_0x6a4a('0x47')]=qs['sort'](_0x44e6d6[_0x6a4a('0x3f')][_0x6a4a('0x48')]);_0x15d235[_0x6a4a('0x49')]=qs[_0x6a4a('0x41')](_['pick'](_0x44e6d6[_0x6a4a('0x3f')],_0x2e9820['filters']));if(_0x44e6d6[_0x6a4a('0x3f')][_0x6a4a('0x4d')]){_0x15d235[_0x6a4a('0x49')]=_[_0x6a4a('0x57')](_0x15d235[_0x6a4a('0x49')],{'$or':_[_0x6a4a('0x4b')](_0x15d235[_0x6a4a('0x43')],function(_0x5b7844){var _0x309f20={};_0x309f20[_0x5b7844]={'$like':'%'+_0x44e6d6[_0x6a4a('0x3f')][_0x6a4a('0x4d')]+'%'};return _0x309f20;})});}_0x15d235=_['merge']({},_0x15d235,_0x44e6d6[_0x6a4a('0x4e')]);return _0x40ea5f[_0x6a4a('0x11a')](_0x15d235);}})[_0x6a4a('0x1d')](function(_0x5ac606){if(_0x5ac606){_0x2c4e82=_0x5ac606[_0x6a4a('0x45')];if(!_0x44e6d6[_0x6a4a('0x3f')][_0x6a4a('0x46')]('nolimit')){_0x15d235[_0x6a4a('0x2c')]=qs[_0x6a4a('0x2c')](_0x44e6d6['query'][_0x6a4a('0x2c')]);_0x15d235[_0x6a4a('0x2e')]=qs['offset'](_0x44e6d6['query'][_0x6a4a('0x2e')]);}return _0x40ea5f[_0x6a4a('0x11a')](_0x15d235);}})[_0x6a4a('0x1d')](function(_0x445085){if(_0x445085){return _0x445085?{'count':_0x2c4e82,'rows':_0x445085}:null;}})['then'](respondWithResult(_0x5a31eb,null))[_0x6a4a('0x51')](handleError(_0x5a31eb,null));};exports['addProactiveActions']=function(_0x181889,_0x57e4f2,_0x1ddf6e){return db[_0x6a4a('0x11b')]['find']({'where':{'id':_0x181889['params']['id']}})[_0x6a4a('0x1d')](handleEntityNotFound(_0x57e4f2,null))[_0x6a4a('0x1d')](function(_0x5f4406){if(_0x5f4406){return _0x5f4406['addProactiveActions'](_0x181889[_0x6a4a('0x5a')][_0x6a4a('0x6f')],_[_0x6a4a('0xf7')](_0x181889[_0x6a4a('0x5a')],[_0x6a4a('0x6f'),'id'])||{});}})['then'](respondWithResult(_0x57e4f2,null))[_0x6a4a('0x51')](handleError(_0x57e4f2,null));};exports['getProactiveActions']=function(_0x18f861,_0x524cc0,_0x964158){var _0x48b3fd={};var _0x52adac={};var _0x49aebd;var _0x447d44;return db[_0x6a4a('0x3a')][_0x6a4a('0x68')]({'where':{'id':_0x18f861[_0x6a4a('0x53')]['id']}})['then'](handleEntityNotFound(_0x524cc0,null))[_0x6a4a('0x1d')](function(_0x2ccc54){if(_0x2ccc54){_0x49aebd=_0x2ccc54;_0x52adac[_0x6a4a('0x3e')]=_[_0x6a4a('0x40')](db['ChatProactiveAction']['rawAttributes']);_0x52adac[_0x6a4a('0x3f')]=_['keys'](_0x18f861[_0x6a4a('0x3f')]);_0x52adac[_0x6a4a('0x41')]=_[_0x6a4a('0x42')](_0x52adac[_0x6a4a('0x3e')],_0x52adac[_0x6a4a('0x3f')]);_0x48b3fd[_0x6a4a('0x43')]=_[_0x6a4a('0x42')](_0x52adac[_0x6a4a('0x3e')],qs['fields'](_0x18f861[_0x6a4a('0x3f')][_0x6a4a('0x44')]));_0x48b3fd[_0x6a4a('0x43')]=_0x48b3fd[_0x6a4a('0x43')]['length']?_0x48b3fd[_0x6a4a('0x43')]:_0x52adac['model'];_0x48b3fd['order']=qs[_0x6a4a('0x48')](_0x18f861[_0x6a4a('0x3f')]['sort']);_0x48b3fd[_0x6a4a('0x49')]=qs['filters'](_['pick'](_0x18f861[_0x6a4a('0x3f')],_0x52adac['filters']));if(_0x18f861['query'][_0x6a4a('0x4d')]){_0x48b3fd['where']=_[_0x6a4a('0x57')](_0x48b3fd['where'],{'$or':_[_0x6a4a('0x4b')](_0x48b3fd['attributes'],function(_0x15b094){var _0x395c0a={};_0x395c0a[_0x15b094]={'$like':'%'+_0x18f861[_0x6a4a('0x3f')]['filter']+'%'};return _0x395c0a;})});}_0x48b3fd=_[_0x6a4a('0x57')]({},_0x48b3fd,_0x18f861[_0x6a4a('0x4e')]);return _0x49aebd[_0x6a4a('0x11c')](_0x48b3fd);}})[_0x6a4a('0x1d')](function(_0x4f4515){if(_0x4f4515){_0x447d44=_0x4f4515['length'];if(!_0x18f861['query'][_0x6a4a('0x46')]('nolimit')){_0x48b3fd[_0x6a4a('0x2c')]=qs[_0x6a4a('0x2c')](_0x18f861[_0x6a4a('0x3f')][_0x6a4a('0x2c')]);_0x48b3fd[_0x6a4a('0x2e')]=qs['offset'](_0x18f861[_0x6a4a('0x3f')][_0x6a4a('0x2e')]);}return _0x49aebd[_0x6a4a('0x11c')](_0x48b3fd);}})[_0x6a4a('0x1d')](function(_0x388220){if(_0x388220){return _0x388220?{'count':_0x447d44,'rows':_0x388220}:null;}})[_0x6a4a('0x1d')](respondWithResult(_0x524cc0,null))['catch'](handleError(_0x524cc0,null));};exports[_0x6a4a('0x11d')]=function(_0x3fdd73,_0x559843,_0x303dcf){var _0x7c27c3=_0x3fdd73[_0x6a4a('0x3f')]['online']==='false'?_0x6a4a('0x11e'):_0x6a4a('0x11f');return db[_0x6a4a('0x3a')][_0x6a4a('0x58')]({'attributes':['id',_0x7c27c3],'where':{'id':_0x3fdd73['params']['id']}})[_0x6a4a('0x1d')](handleEntityNotFound(_0x559843,null))[_0x6a4a('0x1d')](function(_0xbd76a8){if(_0xbd76a8){var _0x273497=_0xbd76a8[_0x7c27c3];var _0x19bd52=_0x273497&&_0x273497[_0x6a4a('0x120')]?_0x273497[_0x6a4a('0x120')]:[];_0x559843[_0x6a4a('0x38')]({'fromKey':_[_0x6a4a('0x7f')](_0x273497['fromKey'])?undefined:_0x273497[_0x6a4a('0x121')],'count':_0x19bd52[_0x6a4a('0x45')],'rows':_0x19bd52});}})['catch'](handleError(_0x559843,null));};exports['getOfflineMessages']=function(_0x59bc97,_0x31b4e3,_0x4688c5){var _0x5b958f={'raw':![],'where':{}};var _0x2593c0={};var _0x36a1d9={'count':0x0,'rows':[]};return db[_0x6a4a('0x3a')][_0x6a4a('0x68')]({'where':{'id':_0x59bc97[_0x6a4a('0x53')]['id']}})[_0x6a4a('0x1d')](handleEntityNotFound(_0x31b4e3,null))['then'](function(_0x3c77de){if(_0x3c77de){_0x2593c0[_0x6a4a('0x3e')]=_[_0x6a4a('0x40')](db[_0x6a4a('0xd8')]['rawAttributes']);_0x2593c0['query']=_[_0x6a4a('0x40')](_0x59bc97[_0x6a4a('0x3f')]);_0x2593c0[_0x6a4a('0x41')]=_[_0x6a4a('0x42')](_0x2593c0[_0x6a4a('0x3e')],_0x2593c0[_0x6a4a('0x3f')]);_0x5b958f[_0x6a4a('0x43')]=_[_0x6a4a('0x42')](_0x2593c0['model'],qs[_0x6a4a('0x44')](_0x59bc97['query'][_0x6a4a('0x44')]));_0x5b958f['attributes']=_0x5b958f[_0x6a4a('0x43')][_0x6a4a('0x45')]?_0x5b958f['attributes']:_0x2593c0[_0x6a4a('0x3e')];if(!_0x59bc97[_0x6a4a('0x3f')][_0x6a4a('0x46')](_0x6a4a('0x6b'))){_0x5b958f[_0x6a4a('0x2c')]=qs[_0x6a4a('0x2c')](_0x59bc97[_0x6a4a('0x3f')][_0x6a4a('0x2c')]);_0x5b958f[_0x6a4a('0x2e')]=qs[_0x6a4a('0x2e')](_0x59bc97[_0x6a4a('0x3f')][_0x6a4a('0x2e')]);}_0x5b958f[_0x6a4a('0x47')]=qs[_0x6a4a('0x48')](_0x59bc97[_0x6a4a('0x3f')][_0x6a4a('0x48')]);_0x5b958f[_0x6a4a('0x49')]=qs['filters'](_[_0x6a4a('0x4a')](_0x59bc97[_0x6a4a('0x3f')],_0x2593c0['filters']));_0x5b958f['where']['ChatWebsiteId']=_0x3c77de['id'];if(_0x59bc97[_0x6a4a('0x3f')][_0x6a4a('0x4d')]){_0x5b958f[_0x6a4a('0x49')]=_['merge'](_0x5b958f[_0x6a4a('0x49')],{'$or':_[_0x6a4a('0x4b')](_0x5b958f[_0x6a4a('0x43')],function(_0x52b8e2){var _0x41f7d9={};_0x41f7d9[_0x52b8e2]={'$like':'%'+_0x59bc97['query'][_0x6a4a('0x4d')]+'%'};return _0x41f7d9;})});}_0x5b958f=_[_0x6a4a('0x57')]({},_0x5b958f,_0x59bc97[_0x6a4a('0x4e')]);return db['ChatOfflineMessage']['count']({'where':_0x5b958f[_0x6a4a('0x49')]})['then'](function(_0x497166){_0x36a1d9[_0x6a4a('0x2d')]=_0x497166;if(_0x59bc97[_0x6a4a('0x3f')][_0x6a4a('0x6c')]){_0x5b958f[_0x6a4a('0x56')]=[{'all':!![]}];}else{_0x5b958f[_0x6a4a('0x56')]=[{'model':db[_0x6a4a('0x9b')],'as':_0x6a4a('0xf9'),'required':![]},{'model':db['Attachment'],'as':_0x6a4a('0x122'),'required':![]}];}return db[_0x6a4a('0xd8')][_0x6a4a('0x4f')](_0x5b958f);})['then'](function(_0x910a9d){_0x36a1d9[_0x6a4a('0x50')]=_0x910a9d;return _0x36a1d9;});}})[_0x6a4a('0x1d')](respondWithFilteredResult(_0x31b4e3,_0x5b958f))[_0x6a4a('0x51')](handleError(_0x31b4e3,null));};exports['addAgents']=function(_0x4d78b7,_0x14ca5a,_0x41eb7d){return db['ChatWebsite'][_0x6a4a('0x58')]({'where':{'id':_0x4d78b7[_0x6a4a('0x53')]['id']}})[_0x6a4a('0x1d')](handleEntityNotFound(_0x14ca5a,null))[_0x6a4a('0x1d')](function(_0x143716){if(_0x143716){return _0x143716[_0x6a4a('0x123')](_0x4d78b7[_0x6a4a('0x5a')]['ids'],_['omit'](_0x4d78b7[_0x6a4a('0x5a')],[_0x6a4a('0x6f'),'id'])||{})[_0x6a4a('0xbd')](function(_0x59d700){for(var _0x5d5bdb=0x0;_0x5d5bdb<_0x4d78b7[_0x6a4a('0x5a')][_0x6a4a('0x6f')][_0x6a4a('0x45')];_0x5d5bdb+=0x1){socket['emit']('userChatWebsite:save',{'UserId':Number(_0x4d78b7[_0x6a4a('0x5a')][_0x6a4a('0x6f')][_0x5d5bdb]),'ChatWebsiteId':Number(_0x4d78b7[_0x6a4a('0x53')]['id'])});}return _0x59d700;});}})[_0x6a4a('0x1d')](respondWithResult(_0x14ca5a,null))[_0x6a4a('0x51')](handleError(_0x14ca5a,null));};exports[_0x6a4a('0x124')]=function(_0x27f4b2,_0x5b4bdf,_0x424ebf){return db[_0x6a4a('0x3a')][_0x6a4a('0x58')]({'where':{'id':_0x27f4b2[_0x6a4a('0x53')]['id']}})[_0x6a4a('0x1d')](handleEntityNotFound(_0x5b4bdf,null))[_0x6a4a('0x1d')](function(_0x217c3b){if(_0x217c3b){return _0x217c3b['removeAgents'](_0x27f4b2[_0x6a4a('0x3f')][_0x6a4a('0x6f')])['then'](function(){if(_[_0x6a4a('0x125')](_0x27f4b2[_0x6a4a('0x3f')][_0x6a4a('0x6f')])){for(var _0x466571=0x0;_0x466571<_0x27f4b2[_0x6a4a('0x3f')]['ids'][_0x6a4a('0x45')];_0x466571+=0x1){socket[_0x6a4a('0x126')](_0x6a4a('0x127'),{'UserId':Number(_0x27f4b2[_0x6a4a('0x3f')][_0x6a4a('0x6f')][_0x466571]),'ChatWebsiteId':Number(_0x27f4b2[_0x6a4a('0x53')]['id'])});}}else{socket['emit'](_0x6a4a('0x127'),{'UserId':Number(_0x27f4b2[_0x6a4a('0x3f')][_0x6a4a('0x6f')]),'ChatWebsiteId':Number(_0x27f4b2[_0x6a4a('0x53')]['id'])});}});}})[_0x6a4a('0x1d')](respondWithStatusCode(_0x5b4bdf,null))[_0x6a4a('0x51')](handleError(_0x5b4bdf,null));};exports['getAgents']=function(_0x17db2b,_0x3b80aa,_0xfc27ec){var _0x15bd74={};var _0x361d8f={};var _0x1c1ecd;var _0x457d83;return db['ChatWebsite'][_0x6a4a('0x68')]({'where':{'id':_0x17db2b[_0x6a4a('0x53')]['id']}})['then'](handleEntityNotFound(_0x3b80aa,null))[_0x6a4a('0x1d')](function(_0xdeb1cc){if(_0xdeb1cc){_0x1c1ecd=_0xdeb1cc;_0x361d8f[_0x6a4a('0x3e')]=_[_0x6a4a('0x40')](db[_0x6a4a('0x128')][_0x6a4a('0x3b')]);_0x361d8f[_0x6a4a('0x3f')]=_[_0x6a4a('0x40')](_0x17db2b[_0x6a4a('0x3f')]);_0x361d8f[_0x6a4a('0x41')]=_[_0x6a4a('0x42')](_0x361d8f[_0x6a4a('0x3e')],_0x361d8f['query']);_0x15bd74[_0x6a4a('0x43')]=_[_0x6a4a('0x42')](_0x361d8f[_0x6a4a('0x3e')],qs[_0x6a4a('0x44')](_0x17db2b[_0x6a4a('0x3f')][_0x6a4a('0x44')]));_0x15bd74[_0x6a4a('0x43')]=_0x15bd74['attributes']['length']?_0x15bd74[_0x6a4a('0x43')]:_0x361d8f[_0x6a4a('0x3e')];_0x15bd74[_0x6a4a('0x47')]=qs['sort'](_0x17db2b[_0x6a4a('0x3f')][_0x6a4a('0x48')]);_0x15bd74[_0x6a4a('0x49')]=qs[_0x6a4a('0x41')](_[_0x6a4a('0x4a')](_0x17db2b['query'],_0x361d8f[_0x6a4a('0x41')]));if(_0x17db2b[_0x6a4a('0x3f')][_0x6a4a('0x4d')]){_0x15bd74[_0x6a4a('0x49')]=_[_0x6a4a('0x57')](_0x15bd74['where'],{'$or':_['map'](_0x15bd74[_0x6a4a('0x43')],function(_0x262cb3){var _0x12ac9c={};_0x12ac9c[_0x262cb3]={'$like':'%'+_0x17db2b[_0x6a4a('0x3f')][_0x6a4a('0x4d')]+'%'};return _0x12ac9c;})});}_0x15bd74=_[_0x6a4a('0x57')]({},_0x15bd74,_0x17db2b[_0x6a4a('0x4e')]);return _0x1c1ecd[_0x6a4a('0x129')](_0x15bd74);}})[_0x6a4a('0x1d')](function(_0x1f9b35){if(_0x1f9b35){_0x457d83=_0x1f9b35['length'];if(!_0x17db2b[_0x6a4a('0x3f')][_0x6a4a('0x46')]('nolimit')){_0x15bd74[_0x6a4a('0x2c')]=qs['limit'](_0x17db2b[_0x6a4a('0x3f')]['limit']);_0x15bd74[_0x6a4a('0x2e')]=qs[_0x6a4a('0x2e')](_0x17db2b[_0x6a4a('0x3f')][_0x6a4a('0x2e')]);}return _0x1c1ecd[_0x6a4a('0x129')](_0x15bd74);}})['then'](function(_0x345e75){if(_0x345e75){return _0x345e75?{'count':_0x457d83,'rows':_0x345e75}:null;}})['then'](respondWithResult(_0x3b80aa,null))[_0x6a4a('0x51')](handleError(_0x3b80aa,null));};
\ No newline at end of file
index 70a878c..e430c66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb99=['ChatWebsite','update','remove','emit','hook','exports','events'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xcb99,0x8b));var _0x9cb9=function(_0x54cd98,_0x3029e6){_0x54cd98=_0x54cd98-0x0;var _0x4abd09=_0xcb99[_0x54cd98];return _0x4abd09;};'use strict';var EventEmitter=require(_0x9cb9('0x0'));var ChatWebsite=require('../../mysqldb')['db'][_0x9cb9('0x1')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x9cb9('0x2'),'afterDestroy':_0x9cb9('0x3')};function emitEvent(_0x124c48){return function(_0x51f2ee,_0x167735,_0x41788c){ChatWebsiteEvents['emit'](_0x124c48+':'+_0x51f2ee['id'],_0x51f2ee);ChatWebsiteEvents[_0x9cb9('0x4')](_0x124c48,_0x51f2ee);_0x41788c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatWebsite[_0x9cb9('0x5')](e,emitEvent(event));}}module[_0x9cb9('0x6')]=ChatWebsiteEvents;
\ No newline at end of file
+var _0x26cf=['remove','emit','hasOwnProperty','hook','exports','../../mysqldb','ChatWebsite','save'];(function(_0x5835c1,_0x23d9b4){var _0x3ea4a6=function(_0x40e08c){while(--_0x40e08c){_0x5835c1['push'](_0x5835c1['shift']());}};_0x3ea4a6(++_0x23d9b4);}(_0x26cf,0x135));var _0xf26c=function(_0x2320be,_0x18678b){_0x2320be=_0x2320be-0x0;var _0x2fcaf7=_0x26cf[_0x2320be];return _0x2fcaf7;};'use strict';var EventEmitter=require('events');var ChatWebsite=require(_0xf26c('0x0'))['db'][_0xf26c('0x1')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xf26c('0x2'),'afterUpdate':'update','afterDestroy':_0xf26c('0x3')};function emitEvent(_0x4c414f){return function(_0x314cdf,_0xf4a93f,_0x58d7b7){ChatWebsiteEvents[_0xf26c('0x4')](_0x4c414f+':'+_0x314cdf['id'],_0x314cdf);ChatWebsiteEvents[_0xf26c('0x4')](_0x4c414f,_0x314cdf);_0x58d7b7(null);};}for(var e in events){if(events[_0xf26c('0x5')](e)){var event=events[e];ChatWebsite[_0xf26c('0x6')](e,emitEvent(event));}}module[_0xf26c('0x7')]=ChatWebsiteEvents;
\ No newline at end of file
index 262af63..7aa5414 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89b5=['path','rimraf','../../config/environment','exports','define','ChatWebsite','lodash','../../config/logger','moment'];(function(_0x3f4ee7,_0x5ae967){var _0x428b36=function(_0x47da55){while(--_0x47da55){_0x3f4ee7['push'](_0x3f4ee7['shift']());}};_0x428b36(++_0x5ae967);}(_0x89b5,0x14a));var _0x589b=function(_0x31d53a,_0x2488d5){_0x31d53a=_0x31d53a-0x0;var _0x2be018=_0x89b5[_0x31d53a];return _0x2be018;};'use strict';var _=require(_0x589b('0x0'));var util=require('util');var logger=require(_0x589b('0x1'))('api');var moment=require(_0x589b('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x589b('0x3'));var rimraf=require(_0x589b('0x4'));var config=require(_0x589b('0x5'));var attributes=require('./chatWebsite.attributes');module[_0x589b('0x6')]=function(_0x386399,_0x25c709){return _0x386399[_0x589b('0x7')](_0x589b('0x8'),attributes,{'tableName':'chat_websites','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9402=['exports','define','ChatWebsite','chat_websites','lodash','util','api','moment','request-promise','path','rimraf'];(function(_0x1d21a8,_0x75aef7){var _0x2f0d24=function(_0xb6614e){while(--_0xb6614e){_0x1d21a8['push'](_0x1d21a8['shift']());}};_0x2f0d24(++_0x75aef7);}(_0x9402,0x185));var _0x2940=function(_0x47db65,_0x4510af){_0x47db65=_0x47db65-0x0;var _0x44a4b7=_0x9402[_0x47db65];return _0x44a4b7;};'use strict';var _=require(_0x2940('0x0'));var util=require(_0x2940('0x1'));var logger=require('../../config/logger')(_0x2940('0x2'));var moment=require(_0x2940('0x3'));var BPromise=require('bluebird');var rp=require(_0x2940('0x4'));var fs=require('fs');var path=require(_0x2940('0x5'));var rimraf=require(_0x2940('0x6'));var config=require('../../config/environment');var attributes=require('./chatWebsite.attributes');module[_0x2940('0x7')]=function(_0x51d7c1,_0x3a4553){return _0x51d7c1[_0x2940('0x8')](_0x2940('0x9'),attributes,{'tableName':_0x2940('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2228381..1072b53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3812=['error','code','message','info','result','catch','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatWebsite.socket','request','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x56d0b2,_0x2f7c9e){var _0x37e421=function(_0x23b3a9){while(--_0x23b3a9){_0x56d0b2['push'](_0x56d0b2['shift']());}};_0x37e421(++_0x2f7c9e);}(_0x3812,0x124));var _0x2381=function(_0x598824,_0x35c286){_0x598824=_0x598824-0x0;var _0x4f247f=_0x3812[_0x598824];return _0x4f247f;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x2381('0x0'));var BPromise=require(_0x2381('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2381('0x2'))['db'];var utils=require(_0x2381('0x3'));var logger=require(_0x2381('0x4'))(_0x2381('0x5'));var config=require('../../config/environment');var jayson=require(_0x2381('0x6'));var client=jayson[_0x2381('0x7')][_0x2381('0x8')]({'port':0x232a});config[_0x2381('0x9')]=_[_0x2381('0xa')](config[_0x2381('0x9')],{'host':_0x2381('0xb'),'port':0x18eb});var socket=require(_0x2381('0xc'))(new Redis(config[_0x2381('0x9')]));require(_0x2381('0xd'))['register'](socket);function respondWithRpcPromise(_0x3e0527,_0x34be8c,_0x41e8a5){return new BPromise(function(_0x5dc4b5,_0x526194){return client[_0x2381('0xe')](_0x3e0527,_0x41e8a5)['then'](function(_0x5bc396){logger['info'](_0x2381('0xf'),_0x34be8c,_0x2381('0x10'));logger[_0x2381('0x11')](_0x2381('0x12'),_0x34be8c,_0x2381('0x10'),JSON[_0x2381('0x13')](_0x5bc396));if(_0x5bc396[_0x2381('0x14')]){if(_0x5bc396[_0x2381('0x14')][_0x2381('0x15')]===0x1f4){logger['error'](_0x2381('0xf'),_0x34be8c,_0x5bc396[_0x2381('0x14')][_0x2381('0x16')]);return _0x526194(_0x5bc396[_0x2381('0x14')][_0x2381('0x16')]);}logger[_0x2381('0x14')](_0x2381('0xf'),_0x34be8c,_0x5bc396[_0x2381('0x14')][_0x2381('0x16')]);return _0x5dc4b5(_0x5bc396[_0x2381('0x14')]['message']);}else{logger[_0x2381('0x17')]('ChatWebsite,\x20%s,\x20%s',_0x34be8c,'request\x20sent');_0x5dc4b5(_0x5bc396[_0x2381('0x18')][_0x2381('0x16')]);}})[_0x2381('0x19')](function(_0x5c613d){logger[_0x2381('0x14')](_0x2381('0xf'),_0x34be8c,_0x5c613d);_0x526194(_0x5c613d);});});}
\ No newline at end of file
+var _0xb314=['lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','redis','socket.io-emitter','./chatWebsite.socket','register','request','then','info','debug','stringify','error','code','ChatWebsite,\x20%s,\x20%s','message','request\x20sent','result','catch'];(function(_0x52666e,_0x5b3776){var _0x515330=function(_0x29cd4f){while(--_0x29cd4f){_0x52666e['push'](_0x52666e['shift']());}};_0x515330(++_0x5b3776);}(_0xb314,0x1a4));var _0x4b31=function(_0x3ac379,_0xdb25fc){_0x3ac379=_0x3ac379-0x0;var _0x1d9f92=_0xb314[_0x3ac379];return _0x1d9f92;};'use strict';var _=require(_0x4b31('0x0'));var util=require(_0x4b31('0x1'));var moment=require(_0x4b31('0x2'));var BPromise=require(_0x4b31('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4b31('0x4'))['db'];var utils=require(_0x4b31('0x5'));var logger=require(_0x4b31('0x6'))(_0x4b31('0x7'));var config=require(_0x4b31('0x8'));var jayson=require(_0x4b31('0x9'));var client=jayson['client'][_0x4b31('0xa')]({'port':0x232a});config['redis']=_[_0x4b31('0xb')](config[_0x4b31('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x4b31('0xd'))(new Redis(config[_0x4b31('0xc')]));require(_0x4b31('0xe'))[_0x4b31('0xf')](socket);function respondWithRpcPromise(_0x1bc113,_0x5715ef,_0x596ff6){return new BPromise(function(_0x54fb96,_0x1bdb28){return client[_0x4b31('0x10')](_0x1bc113,_0x596ff6)[_0x4b31('0x11')](function(_0x149b27){logger[_0x4b31('0x12')]('ChatWebsite,\x20%s,\x20%s',_0x5715ef,'request\x20sent');logger[_0x4b31('0x13')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x5715ef,'request\x20sent',JSON[_0x4b31('0x14')](_0x149b27));if(_0x149b27['error']){if(_0x149b27[_0x4b31('0x15')][_0x4b31('0x16')]===0x1f4){logger[_0x4b31('0x15')](_0x4b31('0x17'),_0x5715ef,_0x149b27[_0x4b31('0x15')][_0x4b31('0x18')]);return _0x1bdb28(_0x149b27[_0x4b31('0x15')]['message']);}logger[_0x4b31('0x15')](_0x4b31('0x17'),_0x5715ef,_0x149b27[_0x4b31('0x15')]['message']);return _0x54fb96(_0x149b27[_0x4b31('0x15')][_0x4b31('0x18')]);}else{logger[_0x4b31('0x12')]('ChatWebsite,\x20%s,\x20%s',_0x5715ef,_0x4b31('0x19'));_0x54fb96(_0x149b27[_0x4b31('0x1a')][_0x4b31('0x18')]);}})[_0x4b31('0x1b')](function(_0x4b1a72){logger[_0x4b31('0x15')](_0x4b31('0x17'),_0x5715ef,_0x4b1a72);_0x1bdb28(_0x4b1a72);});});}
\ No newline at end of file
index 02d1b7b..866f8e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2022=['update','emit','removeListener','register','length','chatWebsite:','./chatWebsite.events'];(function(_0x11bdc1,_0x3a3593){var _0x134c41=function(_0x22f31c){while(--_0x22f31c){_0x11bdc1['push'](_0x11bdc1['shift']());}};_0x134c41(++_0x3a3593);}(_0x2022,0xa0));var _0x2202=function(_0x494b1e,_0x187d8e){_0x494b1e=_0x494b1e-0x0;var _0x8ddeb=_0x2022[_0x494b1e];return _0x8ddeb;};'use strict';var ChatWebsiteEvents=require(_0x2202('0x0'));var events=['save','remove',_0x2202('0x1')];function createListener(_0x1f1204,_0x2ffc87){return function(_0x57a7c3){_0x2ffc87[_0x2202('0x2')](_0x1f1204,_0x57a7c3);};}function removeListener(_0xa5d60c,_0x441b9f){return function(){ChatWebsiteEvents[_0x2202('0x3')](_0xa5d60c,_0x441b9f);};}exports[_0x2202('0x4')]=function(_0x584ef4){for(var _0x10db85=0x0,_0x4eaba8=events[_0x2202('0x5')];_0x10db85<_0x4eaba8;_0x10db85++){var _0x18093b=events[_0x10db85];var _0xc8c31e=createListener(_0x2202('0x6')+_0x18093b,_0x584ef4);ChatWebsiteEvents['on'](_0x18093b,_0xc8c31e);}};
\ No newline at end of file
+var _0x5479=['chatWebsite:','save','update','emit','removeListener','register'];(function(_0x418e6b,_0x262a9e){var _0x85e208=function(_0x4d02a4){while(--_0x4d02a4){_0x418e6b['push'](_0x418e6b['shift']());}};_0x85e208(++_0x262a9e);}(_0x5479,0x1cf));var _0x9547=function(_0x4859bc,_0x11cbcb){_0x4859bc=_0x4859bc-0x0;var _0x5e20a8=_0x5479[_0x4859bc];return _0x5e20a8;};'use strict';var ChatWebsiteEvents=require('./chatWebsite.events');var events=[_0x9547('0x0'),'remove',_0x9547('0x1')];function createListener(_0x14ccbe,_0x1ad843){return function(_0x5551b5){_0x1ad843[_0x9547('0x2')](_0x14ccbe,_0x5551b5);};}function removeListener(_0x56f8a7,_0xbdd3b4){return function(){ChatWebsiteEvents[_0x9547('0x3')](_0x56f8a7,_0xbdd3b4);};}exports[_0x9547('0x4')]=function(_0x5ef6fa){for(var _0x1b84d7=0x0,_0x37dd9c=events['length'];_0x1b84d7<_0x37dd9c;_0x1b84d7++){var _0x2e2f9a=events[_0x1b84d7];var _0x3f723a=createListener(_0x9547('0x5')+_0x2e2f9a,_0x5ef6fa);ChatWebsiteEvents['on'](_0x2e2f9a,_0x3f723a);}};
\ No newline at end of file
index 5436369..3a99ac4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e92=['getSystemAvatar','/:id/interactions','getInteractions','getSnippet','/:id/applications','getApplications','/:id/proactive_actions','getProactiveActions','/:id/fields','/:id/users','getAgents','post','create','join','server/files/images/logos/','format','%s-%s','single','file','diskStorage','server/files/images/avatars/','now','originalname','addCustomerAvatar','root','addSystemAvatar','/:id/notify','notify','attachments','offline-chat','extname','any','offline','addInteraction','addApplications','addProactiveActions','addAgents','put','update','destroy','delete','removeDispositions','removeAgents','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatWebsite.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/dispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar'];(function(_0x17eca6,_0x2fe44c){var _0x42db1e=function(_0x31614d){while(--_0x31614d){_0x17eca6['push'](_0x17eca6['shift']());}};_0x42db1e(++_0x2fe44c);}(_0x4e92,0x138));var _0x24e9=function(_0x1f9f37,_0x18776e){_0x1f9f37=_0x1f9f37-0x0;var _0x21c080=_0x4e92[_0x1f9f37];return _0x21c080;};'use strict';var multer=require('multer');var util=require(_0x24e9('0x0'));var path=require('path');var timeout=require(_0x24e9('0x1'));var express=require(_0x24e9('0x2'));var router=express[_0x24e9('0x3')]();var fs_extra=require(_0x24e9('0x4'));var auth=require(_0x24e9('0x5'));var interaction=require(_0x24e9('0x6'));var config=require('../../config/environment');var controller=require(_0x24e9('0x7'));router[_0x24e9('0x8')]('/',auth[_0x24e9('0x9')](),controller['index']);router['get'](_0x24e9('0xa'),auth[_0x24e9('0x9')](),controller[_0x24e9('0xb')]);router[_0x24e9('0x8')](_0x24e9('0xc'),auth[_0x24e9('0x9')](),controller[_0x24e9('0xd')]);router[_0x24e9('0x8')](_0x24e9('0xe'),auth[_0x24e9('0x9')](),controller['getDispositions']);router['get'](_0x24e9('0xf'),auth[_0x24e9('0x9')](),controller[_0x24e9('0x10')]);router[_0x24e9('0x8')](_0x24e9('0x11'),controller[_0x24e9('0x12')]);router[_0x24e9('0x8')](_0x24e9('0x13'),controller[_0x24e9('0x14')]);router[_0x24e9('0x8')](_0x24e9('0x15'),controller[_0x24e9('0x16')]);router['get']('/:id/system_avatar',controller[_0x24e9('0x17')]);router[_0x24e9('0x8')](_0x24e9('0x18'),auth['isAuthenticated'](),controller[_0x24e9('0x19')]);router[_0x24e9('0x8')]('/:id/snippet',controller[_0x24e9('0x1a')]);router['get'](_0x24e9('0x1b'),auth[_0x24e9('0x9')](),controller[_0x24e9('0x1c')]);router['get'](_0x24e9('0x1d'),auth[_0x24e9('0x9')](),controller[_0x24e9('0x1e')]);router[_0x24e9('0x8')](_0x24e9('0x1f'),controller['getFields']);router[_0x24e9('0x8')]('/:id/offline_messages',auth[_0x24e9('0x9')](),controller['getOfflineMessages']);router[_0x24e9('0x8')](_0x24e9('0x20'),auth['isAuthenticated'](),controller[_0x24e9('0x21')]);router[_0x24e9('0x22')]('/',auth[_0x24e9('0x9')](),controller[_0x24e9('0x23')]);router['post']('/:id/dispositions',auth['isAuthenticated'](),controller['addDisposition']);router[_0x24e9('0x22')](_0x24e9('0xf'),auth[_0x24e9('0x9')](),controller['addAnswer']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xd790b3,_0xa5fffe,_0x48349f){_0x48349f(null,path[_0x24e9('0x24')](config['root'],_0x24e9('0x25')));},'filename':function(_0x44a09e,_0x527a6d,_0x5ea65d){_0x5ea65d(null,util[_0x24e9('0x26')](_0x24e9('0x27'),Date['now'](),_0x527a6d['originalname']));}})});router['post']('/:id/logo',upload[_0x24e9('0x28')](_0x24e9('0x29')),controller['addLogo']);var upload=multer({'storage':multer[_0x24e9('0x2a')]({'destination':function(_0x26f18d,_0x34b599,_0x5464b3){_0x5464b3(null,path[_0x24e9('0x24')](config['root'],_0x24e9('0x2b')));},'filename':function(_0x303e83,_0x2b9809,_0x5dbb63){_0x5dbb63(null,util[_0x24e9('0x26')](_0x24e9('0x27'),Date[_0x24e9('0x2c')](),_0x2b9809[_0x24e9('0x2d')]));}})});router[_0x24e9('0x22')]('/:id/avatar',upload[_0x24e9('0x28')](_0x24e9('0x29')),controller['addAvatar']);var upload=multer({'storage':multer[_0x24e9('0x2a')]({'destination':function(_0x1c41a6,_0x5b6397,_0x4a2db9){_0x4a2db9(null,path[_0x24e9('0x24')](config['root'],_0x24e9('0x2b')));},'filename':function(_0x5392cc,_0x4ea3d6,_0x1d41e5){_0x1d41e5(null,util[_0x24e9('0x26')](_0x24e9('0x27'),Date['now'](),_0x4ea3d6['originalname']));}})});router[_0x24e9('0x22')](_0x24e9('0x15'),upload[_0x24e9('0x28')](_0x24e9('0x29')),controller[_0x24e9('0x2e')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x12c08a,_0x2f54b8,_0x5ee1ef){_0x5ee1ef(null,path[_0x24e9('0x24')](config[_0x24e9('0x2f')],_0x24e9('0x2b')));},'filename':function(_0x36cca4,_0x1211b6,_0x5ba0c7){_0x5ba0c7(null,util[_0x24e9('0x26')](_0x24e9('0x27'),Date[_0x24e9('0x2c')](),_0x1211b6[_0x24e9('0x2d')]));}})});router[_0x24e9('0x22')]('/:id/system_avatar',upload[_0x24e9('0x28')](_0x24e9('0x29')),controller[_0x24e9('0x30')]);router['post'](_0x24e9('0x31'),controller[_0x24e9('0x32')]);const offlineUploadMulter=multer({'storage':multer['diskStorage']({'destination':function(_0xeaeae6,_0x24259b,_0x554f9a){const _0x42d995=path[_0x24e9('0x24')](config[_0x24e9('0x2f')],'server/files',_0x24e9('0x33'),_0x24e9('0x34'));fs_extra['ensureDir'](_0x42d995,function(){_0x554f9a(null,_0x42d995);});},'filename':function(_0x53d720,_0x5aae23,_0x375fe7){const _0x4b5f30=_0x5aae23[_0x24e9('0x2d')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x1e5136=path[_0x24e9('0x35')](_0x4b5f30);const _0x3b5723=Date[_0x24e9('0x2c')]()+'-'+_0x4b5f30['replace'](_0x1e5136,'')+_0x1e5136;_0x375fe7(null,_0x3b5723);}})});router['post']('/:id/offline',offlineUploadMulter[_0x24e9('0x36')](),controller[_0x24e9('0x37')]);router['post'](_0x24e9('0x18'),auth[_0x24e9('0x9')](),controller[_0x24e9('0x38')]);router[_0x24e9('0x22')](_0x24e9('0x1b'),auth[_0x24e9('0x9')](),controller[_0x24e9('0x39')]);router[_0x24e9('0x22')](_0x24e9('0x1d'),auth[_0x24e9('0x9')](),controller[_0x24e9('0x3a')]);router[_0x24e9('0x22')](_0x24e9('0x20'),auth[_0x24e9('0x9')](),controller[_0x24e9('0x3b')]);router[_0x24e9('0x3c')]('/:id',auth[_0x24e9('0x9')](),controller[_0x24e9('0x3d')]);router['delete'](_0x24e9('0xc'),auth['isAuthenticated'](),controller[_0x24e9('0x3e')]);router[_0x24e9('0x3f')](_0x24e9('0xe'),auth['isAuthenticated'](),controller[_0x24e9('0x40')]);router['delete'](_0x24e9('0xf'),auth[_0x24e9('0x9')](),controller['removeAnswers']);router[_0x24e9('0x3f')]('/:id/users',auth['isAuthenticated'](),controller[_0x24e9('0x41')]);module[_0x24e9('0x42')]=router;
\ No newline at end of file
+var _0xd136=['delete','removeDispositions','removeAgents','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/logo','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','getApplications','/:id/proactive_actions','getProactiveActions','getFields','/:id/offline_messages','/:id/users','getAgents','post','addDisposition','addAnswer','diskStorage','join','root','format','now','originalname','single','addLogo','server/files/images/avatars/','%s-%s','/:id/avatar','file','addCustomerAvatar','addSystemAvatar','/:id/notify','notify','server/files','attachments','offline-chat','ensureDir','replace','/:id/offline','any','offline','addInteraction','addApplications','put','update'];(function(_0x31e891,_0x2ca1ec){var _0x21aa5b=function(_0x5f43ec){while(--_0x5f43ec){_0x31e891['push'](_0x31e891['shift']());}};_0x21aa5b(++_0x2ca1ec);}(_0xd136,0x158));var _0x6d13=function(_0x392c80,_0x140fdd){_0x392c80=_0x392c80-0x0;var _0x692cf6=_0xd136[_0x392c80];return _0x692cf6;};'use strict';var multer=require(_0x6d13('0x0'));var util=require(_0x6d13('0x1'));var path=require('path');var timeout=require(_0x6d13('0x2'));var express=require(_0x6d13('0x3'));var router=express['Router']();var fs_extra=require(_0x6d13('0x4'));var auth=require(_0x6d13('0x5'));var interaction=require(_0x6d13('0x6'));var config=require(_0x6d13('0x7'));var controller=require('./chatWebsite.controller');router[_0x6d13('0x8')]('/',auth[_0x6d13('0x9')](),controller['index']);router['get'](_0x6d13('0xa'),auth[_0x6d13('0x9')](),controller['describe']);router[_0x6d13('0x8')](_0x6d13('0xb'),auth[_0x6d13('0x9')](),controller[_0x6d13('0xc')]);router['get'](_0x6d13('0xd'),auth['isAuthenticated'](),controller[_0x6d13('0xe')]);router['get'](_0x6d13('0xf'),auth[_0x6d13('0x9')](),controller[_0x6d13('0x10')]);router['get'](_0x6d13('0x11'),controller['getLogo']);router[_0x6d13('0x8')]('/:id/avatar',controller['getAvatar']);router['get'](_0x6d13('0x12'),controller[_0x6d13('0x13')]);router[_0x6d13('0x8')](_0x6d13('0x14'),controller[_0x6d13('0x15')]);router[_0x6d13('0x8')](_0x6d13('0x16'),auth[_0x6d13('0x9')](),controller[_0x6d13('0x17')]);router[_0x6d13('0x8')](_0x6d13('0x18'),controller[_0x6d13('0x19')]);router[_0x6d13('0x8')]('/:id/applications',auth['isAuthenticated'](),controller[_0x6d13('0x1a')]);router['get'](_0x6d13('0x1b'),auth[_0x6d13('0x9')](),controller[_0x6d13('0x1c')]);router[_0x6d13('0x8')]('/:id/fields',controller[_0x6d13('0x1d')]);router[_0x6d13('0x8')](_0x6d13('0x1e'),auth[_0x6d13('0x9')](),controller['getOfflineMessages']);router[_0x6d13('0x8')](_0x6d13('0x1f'),auth[_0x6d13('0x9')](),controller[_0x6d13('0x20')]);router[_0x6d13('0x21')]('/',auth[_0x6d13('0x9')](),controller['create']);router['post'](_0x6d13('0xd'),auth[_0x6d13('0x9')](),controller[_0x6d13('0x22')]);router[_0x6d13('0x21')](_0x6d13('0xf'),auth['isAuthenticated'](),controller[_0x6d13('0x23')]);var upload=multer({'storage':multer[_0x6d13('0x24')]({'destination':function(_0x29d6b5,_0x36986c,_0x418ce3){_0x418ce3(null,path[_0x6d13('0x25')](config[_0x6d13('0x26')],'server/files/images/logos/'));},'filename':function(_0x185893,_0x17b097,_0x525fa0){_0x525fa0(null,util[_0x6d13('0x27')]('%s-%s',Date[_0x6d13('0x28')](),_0x17b097[_0x6d13('0x29')]));}})});router[_0x6d13('0x21')]('/:id/logo',upload[_0x6d13('0x2a')]('file'),controller[_0x6d13('0x2b')]);var upload=multer({'storage':multer[_0x6d13('0x24')]({'destination':function(_0x31407a,_0x1aa44b,_0x2e0b38){_0x2e0b38(null,path['join'](config['root'],_0x6d13('0x2c')));},'filename':function(_0x2f07e8,_0x1b54eb,_0x4a2465){_0x4a2465(null,util[_0x6d13('0x27')](_0x6d13('0x2d'),Date['now'](),_0x1b54eb[_0x6d13('0x29')]));}})});router['post'](_0x6d13('0x2e'),upload[_0x6d13('0x2a')](_0x6d13('0x2f')),controller['addAvatar']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3be747,_0x44fcf7,_0x29b528){_0x29b528(null,path[_0x6d13('0x25')](config['root'],_0x6d13('0x2c')));},'filename':function(_0x49482f,_0x7f7758,_0x6d520e){_0x6d520e(null,util[_0x6d13('0x27')](_0x6d13('0x2d'),Date[_0x6d13('0x28')](),_0x7f7758[_0x6d13('0x29')]));}})});router[_0x6d13('0x21')](_0x6d13('0x12'),upload[_0x6d13('0x2a')](_0x6d13('0x2f')),controller[_0x6d13('0x30')]);var upload=multer({'storage':multer[_0x6d13('0x24')]({'destination':function(_0x13b32c,_0x826ef2,_0xcf0d96){_0xcf0d96(null,path['join'](config[_0x6d13('0x26')],'server/files/images/avatars/'));},'filename':function(_0x6d7b20,_0x3b9b18,_0x361c57){_0x361c57(null,util[_0x6d13('0x27')](_0x6d13('0x2d'),Date[_0x6d13('0x28')](),_0x3b9b18[_0x6d13('0x29')]));}})});router[_0x6d13('0x21')]('/:id/system_avatar',upload['single']('file'),controller[_0x6d13('0x31')]);router[_0x6d13('0x21')](_0x6d13('0x32'),controller[_0x6d13('0x33')]);const offlineUploadMulter=multer({'storage':multer[_0x6d13('0x24')]({'destination':function(_0x2c8970,_0x3527e6,_0x175654){const _0x2a7024=path[_0x6d13('0x25')](config[_0x6d13('0x26')],_0x6d13('0x34'),_0x6d13('0x35'),_0x6d13('0x36'));fs_extra[_0x6d13('0x37')](_0x2a7024,function(){_0x175654(null,_0x2a7024);});},'filename':function(_0x3eb111,_0x7640ac,_0x4ce26c){const _0x2f293d=_0x7640ac[_0x6d13('0x29')][_0x6d13('0x38')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x2d1d11=path['extname'](_0x2f293d);const _0x1579c9=Date[_0x6d13('0x28')]()+'-'+_0x2f293d[_0x6d13('0x38')](_0x2d1d11,'')+_0x2d1d11;_0x4ce26c(null,_0x1579c9);}})});router[_0x6d13('0x21')](_0x6d13('0x39'),offlineUploadMulter[_0x6d13('0x3a')](),controller[_0x6d13('0x3b')]);router[_0x6d13('0x21')](_0x6d13('0x16'),auth[_0x6d13('0x9')](),controller[_0x6d13('0x3c')]);router[_0x6d13('0x21')]('/:id/applications',auth[_0x6d13('0x9')](),controller[_0x6d13('0x3d')]);router[_0x6d13('0x21')](_0x6d13('0x1b'),auth[_0x6d13('0x9')](),controller['addProactiveActions']);router[_0x6d13('0x21')](_0x6d13('0x1f'),auth[_0x6d13('0x9')](),controller['addAgents']);router[_0x6d13('0x3e')](_0x6d13('0xb'),auth[_0x6d13('0x9')](),controller[_0x6d13('0x3f')]);router[_0x6d13('0x40')](_0x6d13('0xb'),auth[_0x6d13('0x9')](),controller['destroy']);router[_0x6d13('0x40')]('/:id/dispositions',auth[_0x6d13('0x9')](),controller[_0x6d13('0x41')]);router[_0x6d13('0x40')](_0x6d13('0xf'),auth[_0x6d13('0x9')](),controller['removeAnswers']);router[_0x6d13('0x40')](_0x6d13('0x1f'),auth[_0x6d13('0x9')](),controller[_0x6d13('0x42')]);module[_0x6d13('0x43')]=router;
\ No newline at end of file
index 3e64be3..c9083ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14a=['Google','STRING'];(function(_0x2dadb9,_0x42cfe6){var _0x2f0097=function(_0x21163f){while(--_0x21163f){_0x2dadb9['push'](_0x2dadb9['shift']());}};_0x2f0097(++_0x42cfe6);}(_0xe14a,0x94));var _0xae14=function(_0x4b3227,_0x395d45){_0x4b3227=_0x4b3227-0x0;var _0x497462=_0xe14a[_0x4b3227];return _0x497462;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize['ENUM']('AmazonAWS',_0xae14('0x0')),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize[_0xae14('0x1')]},'data2':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xc7a3=['STRING','ENUM','AmazonAWS','Google','exports'];(function(_0xe906a5,_0x3bfd31){var _0x4fb701=function(_0x18c9f1){while(--_0x18c9f1){_0xe906a5['push'](_0xe906a5['shift']());}};_0x4fb701(++_0x3bfd31);}(_0xc7a3,0xbd));var _0x3c7a=function(_0x87ef72,_0x570105){_0x87ef72=_0x87ef72-0x0;var _0x22ba0f=_0xc7a3[_0x87ef72];return _0x22ba0f;};'use strict';var Sequelize=require('sequelize');module[_0x3c7a('0x0')]={'name':{'type':Sequelize[_0x3c7a('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0x3c7a('0x2')](_0x3c7a('0x3'),_0x3c7a('0x4')),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize[_0x3c7a('0x1')]},'data2':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 0086571..e222230 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0xadb5,0xad));var _0x5adb=function(_0x34cbfa,_0x2b5c0e){_0x34cbfa=_0x34cbfa-0x0;var _0x314ee6=_0xadb5[_0x34cbfa];return _0x314ee6;};'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
+var _0xdb28=['error','stack','name','send','index','CloudProvider','fieldName','type','key','map','query','keys','model','fields','attributes','length','nolimit','order','sort','filters','filter','where','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','rawAttributes','intersection','include','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','apply','save','update','then','sendStatus'];(function(_0x1bf56f,_0xe09640){var _0x4aa20b=function(_0x32e7c4){while(--_0x32e7c4){_0x1bf56f['push'](_0x1bf56f['shift']());}};_0x4aa20b(++_0xe09640);}(_0xdb28,0x106));var _0x8db2=function(_0x325388,_0x4ec7de){_0x325388=_0x325388-0x0;var _0x30c413=_0xdb28[_0x325388];return _0x30c413;};'use strict';var emlformat=require(_0x8db2('0x0'));var rimraf=require(_0x8db2('0x1'));var zipdir=require(_0x8db2('0x2'));var jsonpatch=require(_0x8db2('0x3'));var rp=require('request-promise');var moment=require(_0x8db2('0x4'));var BPromise=require(_0x8db2('0x5'));var Mustache=require(_0x8db2('0x6'));var util=require(_0x8db2('0x7'));var path=require(_0x8db2('0x8'));var sox=require('sox');var csv=require(_0x8db2('0x9'));var ejs=require(_0x8db2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8db2('0xb'));var crypto=require(_0x8db2('0xc'));var jsforce=require(_0x8db2('0xd'));var deskjs=require(_0x8db2('0xe'));var toCsv=require(_0x8db2('0x9'));var querystring=require(_0x8db2('0xf'));var Papa=require(_0x8db2('0x10'));var Redis=require('ioredis');var authService=require(_0x8db2('0x11'));var qs=require(_0x8db2('0x12'));var as=require(_0x8db2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8db2('0x14'))(_0x8db2('0x15'));var utils=require('../../config/utils');var config=require(_0x8db2('0x16'));var licenseUtil=require(_0x8db2('0x17'));var db=require(_0x8db2('0x18'))['db'];function respondWithStatusCode(_0x204f49,_0x37d017){_0x37d017=_0x37d017||0xcc;return function(_0x559fb1){if(_0x559fb1){return _0x204f49['sendStatus'](_0x37d017);}return _0x204f49[_0x8db2('0x19')](_0x37d017)[_0x8db2('0x1a')]();};}function respondWithResult(_0x350d61,_0x1d6a15){_0x1d6a15=_0x1d6a15||0xc8;return function(_0x227355){if(_0x227355){return _0x350d61[_0x8db2('0x19')](_0x1d6a15)[_0x8db2('0x1b')](_0x227355);}};}function respondWithFilteredResult(_0x3c96a7,_0x131252){return function(_0x16c8c2){if(_0x16c8c2){var _0x5489a9=typeof _0x131252[_0x8db2('0x1c')]===_0x8db2('0x1d')&&typeof _0x131252['limit']===_0x8db2('0x1d');var _0x44957d=_0x16c8c2[_0x8db2('0x1e')];var _0x3fddc2=_0x5489a9?0x0:_0x131252[_0x8db2('0x1c')];var _0x46ce14=_0x5489a9?_0x16c8c2['count']:_0x131252['offset']+_0x131252[_0x8db2('0x1f')];var _0x104e33;if(_0x46ce14>=_0x44957d){_0x46ce14=_0x44957d;_0x104e33=0xc8;}else{_0x104e33=0xce;}_0x3c96a7[_0x8db2('0x19')](_0x104e33);return _0x3c96a7[_0x8db2('0x20')]('Content-Range',_0x3fddc2+'-'+_0x46ce14+'/'+_0x44957d)[_0x8db2('0x1b')](_0x16c8c2);}return null;};}function patchUpdates(_0x36a9ff){return function(_0x260940){try{jsonpatch[_0x8db2('0x21')](_0x260940,_0x36a9ff,!![]);}catch(_0x3dbe8e){return BPromise['reject'](_0x3dbe8e);}return _0x260940[_0x8db2('0x22')]();};}function saveUpdates(_0x3e30e6,_0x18f69c){return function(_0x125be2){if(_0x125be2){return _0x125be2[_0x8db2('0x23')](_0x3e30e6)[_0x8db2('0x24')](function(_0x796ec1){return _0x796ec1;});}return null;};}function removeEntity(_0x5c6614,_0x256202){return function(_0x4f6516){if(_0x4f6516){return _0x4f6516['destroy']()['then'](function(){_0x5c6614['status'](0xcc)[_0x8db2('0x1a')]();});}};}function handleEntityNotFound(_0x29b5cd,_0x3be281){return function(_0x2baed0){if(!_0x2baed0){_0x29b5cd[_0x8db2('0x25')](0x194);}return _0x2baed0;};}function handleError(_0x8d4f54,_0x58cd9d){_0x58cd9d=_0x58cd9d||0x1f4;return function(_0x3544ba){logger[_0x8db2('0x26')](_0x3544ba[_0x8db2('0x27')]);if(_0x3544ba[_0x8db2('0x28')]){delete _0x3544ba['name'];}_0x8d4f54[_0x8db2('0x19')](_0x58cd9d)[_0x8db2('0x29')](_0x3544ba);};}exports[_0x8db2('0x2a')]=function(_0x1687ed,_0xbe5ece){var _0x21bae5={},_0xa54ea3={},_0x3124d5={'count':0x0,'rows':[]};var _0xbc5366=_['map'](db[_0x8db2('0x2b')]['rawAttributes'],function(_0x59cb77){return{'name':_0x59cb77[_0x8db2('0x2c')],'type':_0x59cb77[_0x8db2('0x2d')][_0x8db2('0x2e')]};});_0xa54ea3['model']=_[_0x8db2('0x2f')](_0xbc5366,'name');_0xa54ea3[_0x8db2('0x30')]=_[_0x8db2('0x31')](_0x1687ed[_0x8db2('0x30')]);_0xa54ea3['filters']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],_0xa54ea3[_0x8db2('0x30')]);_0x21bae5['attributes']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],qs[_0x8db2('0x33')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x33')]));_0x21bae5[_0x8db2('0x34')]=_0x21bae5[_0x8db2('0x34')][_0x8db2('0x35')]?_0x21bae5[_0x8db2('0x34')]:_0xa54ea3[_0x8db2('0x32')];if(!_0x1687ed[_0x8db2('0x30')]['hasOwnProperty'](_0x8db2('0x36'))){_0x21bae5[_0x8db2('0x1f')]=qs['limit'](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x1f')]);_0x21bae5['offset']=qs['offset'](_0x1687ed[_0x8db2('0x30')]['offset']);}_0x21bae5[_0x8db2('0x37')]=qs[_0x8db2('0x38')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x38')]);_0x21bae5['where']=qs[_0x8db2('0x39')](_['pick'](_0x1687ed[_0x8db2('0x30')],_0xa54ea3[_0x8db2('0x39')]),_0xbc5366);if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]){_0x21bae5['where']=_['merge'](_0x21bae5[_0x8db2('0x3b')],{'$or':_[_0x8db2('0x2f')](_0xbc5366,function(_0x5dc2b4){if(_0x5dc2b4[_0x8db2('0x2d')]!==_0x8db2('0x3c')){var _0x656dd2={};_0x656dd2[_0x5dc2b4['name']]={'$like':'%'+_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]+'%'};return _0x656dd2;}})});}_0x21bae5=_[_0x8db2('0x3d')]({},_0x21bae5,_0x1687ed[_0x8db2('0x3e')]);var _0x2e6f0c={'where':_0x21bae5[_0x8db2('0x3b')]};return db[_0x8db2('0x2b')][_0x8db2('0x1e')](_0x2e6f0c)[_0x8db2('0x24')](function(_0x63c561){_0x3124d5[_0x8db2('0x1e')]=_0x63c561;if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3f')]){_0x21bae5['include']=[{'all':!![]}];}return db[_0x8db2('0x2b')][_0x8db2('0x40')](_0x21bae5);})['then'](function(_0x49a7ae){_0x3124d5[_0x8db2('0x41')]=_0x49a7ae;return _0x3124d5;})['then'](respondWithFilteredResult(_0xbe5ece,_0x21bae5))[_0x8db2('0x42')](handleError(_0xbe5ece,null));};exports[_0x8db2('0x43')]=function(_0x313130,_0x307783){var _0xb4fe2c={'raw':!![],'where':{'id':_0x313130[_0x8db2('0x44')]['id']}},_0x30d606={};_0x30d606['model']=_[_0x8db2('0x31')](db[_0x8db2('0x2b')][_0x8db2('0x45')]);_0x30d606[_0x8db2('0x30')]=_['keys'](_0x313130[_0x8db2('0x30')]);_0x30d606[_0x8db2('0x39')]=_[_0x8db2('0x46')](_0x30d606[_0x8db2('0x32')],_0x30d606['query']);_0xb4fe2c[_0x8db2('0x34')]=_['intersection'](_0x30d606[_0x8db2('0x32')],qs[_0x8db2('0x33')](_0x313130[_0x8db2('0x30')]['fields']));_0xb4fe2c['attributes']=_0xb4fe2c[_0x8db2('0x34')]['length']?_0xb4fe2c[_0x8db2('0x34')]:_0x30d606[_0x8db2('0x32')];if(_0x313130[_0x8db2('0x30')][_0x8db2('0x3f')]){_0xb4fe2c[_0x8db2('0x47')]=[{'all':!![]}];}_0xb4fe2c=_[_0x8db2('0x3d')]({},_0xb4fe2c,_0x313130[_0x8db2('0x3e')]);return db[_0x8db2('0x2b')][_0x8db2('0x48')](_0xb4fe2c)[_0x8db2('0x24')](handleEntityNotFound(_0x307783,null))[_0x8db2('0x24')](respondWithResult(_0x307783,null))[_0x8db2('0x42')](handleError(_0x307783,null));};exports['create']=function(_0x449109,_0x2ada52){return db[_0x8db2('0x2b')][_0x8db2('0x49')](_0x449109['body'],{})['then'](respondWithResult(_0x2ada52,0xc9))[_0x8db2('0x42')](handleError(_0x2ada52,null));};exports[_0x8db2('0x23')]=function(_0x164020,_0x4c66e5){if(_0x164020['body']['id']){delete _0x164020['body']['id'];}return db[_0x8db2('0x2b')][_0x8db2('0x48')]({'where':{'id':_0x164020[_0x8db2('0x44')]['id']}})[_0x8db2('0x24')](handleEntityNotFound(_0x4c66e5,null))[_0x8db2('0x24')](saveUpdates(_0x164020[_0x8db2('0x4a')],null))[_0x8db2('0x24')](respondWithResult(_0x4c66e5,null))['catch'](handleError(_0x4c66e5,null));};exports['destroy']=function(_0x3d29bc,_0x18c6ef){return db[_0x8db2('0x2b')][_0x8db2('0x48')]({'where':{'id':_0x3d29bc[_0x8db2('0x44')]['id']}})[_0x8db2('0x24')](handleEntityNotFound(_0x18c6ef,null))[_0x8db2('0x24')](removeEntity(_0x18c6ef,null))[_0x8db2('0x42')](handleError(_0x18c6ef,null));};
\ No newline at end of file
index 025d0ca..720aa2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb33d=['bluebird','request-promise','path','rimraf','../../config/environment','cloud_providers','lodash','util','../../config/logger','moment'];(function(_0x3de7a5,_0x1d8880){var _0x46f160=function(_0x4ff8c0){while(--_0x4ff8c0){_0x3de7a5['push'](_0x3de7a5['shift']());}};_0x46f160(++_0x1d8880);}(_0xb33d,0xd8));var _0xdb33=function(_0x4070e5,_0x3cba2c){_0x4070e5=_0x4070e5-0x0;var _0x421852=_0xb33d[_0x4070e5];return _0x421852;};'use strict';var _=require(_0xdb33('0x0'));var util=require(_0xdb33('0x1'));var logger=require(_0xdb33('0x2'))('api');var moment=require(_0xdb33('0x3'));var BPromise=require(_0xdb33('0x4'));var rp=require(_0xdb33('0x5'));var fs=require('fs');var path=require(_0xdb33('0x6'));var rimraf=require(_0xdb33('0x7'));var config=require(_0xdb33('0x8'));var attributes=require('./cloudProvider.attributes');module['exports']=function(_0x383ba0,_0x32a7dc){return _0x383ba0['define']('CloudProvider',attributes,{'tableName':_0xdb33('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaf76=['exports','define','CloudProvider','lodash','../../config/logger','api','request-promise','path','rimraf','../../config/environment'];(function(_0x3cf884,_0x2274c8){var _0xc5b0ca=function(_0x520d32){while(--_0x520d32){_0x3cf884['push'](_0x3cf884['shift']());}};_0xc5b0ca(++_0x2274c8);}(_0xaf76,0x19d));var _0x6af7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xaf76[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x6af7('0x0'));var util=require('util');var logger=require(_0x6af7('0x1'))(_0x6af7('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6af7('0x3'));var fs=require('fs');var path=require(_0x6af7('0x4'));var rimraf=require(_0x6af7('0x5'));var config=require(_0x6af7('0x6'));var attributes=require('./cloudProvider.attributes');module[_0x6af7('0x7')]=function(_0x41ba91,_0x22e434){return _0x41ba91[_0x6af7('0x8')](_0x6af7('0x9'),attributes,{'tableName':'cloud_providers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 47bbf85..07f9191 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cf5=['rpc','../../config/environment','jayson/promise','client','http','request','info','CloudProvider,\x20%s,\x20%s','request\x20sent','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb'];(function(_0x728a0d,_0x44ca89){var _0xc575ed=function(_0x418c03){while(--_0x418c03){_0x728a0d['push'](_0x728a0d['shift']());}};_0xc575ed(++_0x44ca89);}(_0x2cf5,0x19f));var _0x52cf=function(_0x4559a4,_0x3aec50){_0x4559a4=_0x4559a4-0x0;var _0x34dba1=_0x2cf5[_0x4559a4];return _0x34dba1;};'use strict';var _=require(_0x52cf('0x0'));var util=require(_0x52cf('0x1'));var moment=require('moment');var BPromise=require(_0x52cf('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x52cf('0x3'));var db=require(_0x52cf('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x52cf('0x5'));var config=require(_0x52cf('0x6'));var jayson=require(_0x52cf('0x7'));var client=jayson[_0x52cf('0x8')][_0x52cf('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x13d2fe,_0x1ab7cd,_0x390162){return new BPromise(function(_0x41d874,_0x23b2ab){return client[_0x52cf('0xa')](_0x13d2fe,_0x390162)['then'](function(_0x46d7ac){logger[_0x52cf('0xb')](_0x52cf('0xc'),_0x1ab7cd,_0x52cf('0xd'));logger['debug'](_0x52cf('0xe'),_0x1ab7cd,_0x52cf('0xd'),JSON[_0x52cf('0xf')](_0x46d7ac));if(_0x46d7ac['error']){if(_0x46d7ac[_0x52cf('0x10')][_0x52cf('0x11')]===0x1f4){logger[_0x52cf('0x10')](_0x52cf('0xc'),_0x1ab7cd,_0x46d7ac[_0x52cf('0x10')][_0x52cf('0x12')]);return _0x23b2ab(_0x46d7ac['error']['message']);}logger[_0x52cf('0x10')](_0x52cf('0xc'),_0x1ab7cd,_0x46d7ac[_0x52cf('0x10')][_0x52cf('0x12')]);return _0x41d874(_0x46d7ac[_0x52cf('0x10')][_0x52cf('0x12')]);}else{logger[_0x52cf('0xb')](_0x52cf('0xc'),_0x1ab7cd,'request\x20sent');_0x41d874(_0x46d7ac[_0x52cf('0x13')][_0x52cf('0x12')]);}})[_0x52cf('0x14')](function(_0x580154){logger[_0x52cf('0x10')]('CloudProvider,\x20%s,\x20%s',_0x1ab7cd,_0x580154);_0x23b2ab(_0x580154);});});}
\ No newline at end of file
+var _0xf9e5=['info','CloudProvider,\x20%s,\x20%s','debug','CloudProvider,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise'];(function(_0xec25eb,_0x184e0d){var _0x5a5059=function(_0x4022f2){while(--_0x4022f2){_0xec25eb['push'](_0xec25eb['shift']());}};_0x5a5059(++_0x184e0d);}(_0xf9e5,0x89));var _0x5f9e=function(_0x59ce00,_0x204d43){_0x59ce00=_0x59ce00-0x0;var _0x36774e=_0xf9e5[_0x59ce00];return _0x36774e;};'use strict';var _=require(_0x5f9e('0x0'));var util=require(_0x5f9e('0x1'));var moment=require(_0x5f9e('0x2'));var BPromise=require(_0x5f9e('0x3'));var rs=require(_0x5f9e('0x4'));var fs=require('fs');var Redis=require(_0x5f9e('0x5'));var db=require(_0x5f9e('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x5f9e('0x7'))(_0x5f9e('0x8'));var config=require('../../config/environment');var jayson=require(_0x5f9e('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x8bb75c,_0x35fcc8,_0x4ee331){return new BPromise(function(_0x13de1c,_0x3cebf5){return client['request'](_0x8bb75c,_0x4ee331)['then'](function(_0x549a00){logger[_0x5f9e('0xa')](_0x5f9e('0xb'),_0x35fcc8,'request\x20sent');logger[_0x5f9e('0xc')](_0x5f9e('0xd'),_0x35fcc8,_0x5f9e('0xe'),JSON[_0x5f9e('0xf')](_0x549a00));if(_0x549a00[_0x5f9e('0x10')]){if(_0x549a00['error'][_0x5f9e('0x11')]===0x1f4){logger[_0x5f9e('0x10')](_0x5f9e('0xb'),_0x35fcc8,_0x549a00[_0x5f9e('0x10')]['message']);return _0x3cebf5(_0x549a00[_0x5f9e('0x10')][_0x5f9e('0x12')]);}logger['error']('CloudProvider,\x20%s,\x20%s',_0x35fcc8,_0x549a00[_0x5f9e('0x10')][_0x5f9e('0x12')]);return _0x13de1c(_0x549a00[_0x5f9e('0x10')]['message']);}else{logger[_0x5f9e('0xa')](_0x5f9e('0xb'),_0x35fcc8,_0x5f9e('0xe'));_0x13de1c(_0x549a00[_0x5f9e('0x13')]['message']);}})[_0x5f9e('0x14')](function(_0x293fe2){logger['error']('CloudProvider,\x20%s,\x20%s',_0x35fcc8,_0x293fe2);_0x3cebf5(_0x293fe2);});});}
\ No newline at end of file
index 95c9b20..085c37c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc712=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','post','create','put','update','delete','exports','multer'];(function(_0x45fe35,_0x20c4b2){var _0x35c244=function(_0x161ae9){while(--_0x161ae9){_0x45fe35['push'](_0x45fe35['shift']());}};_0x35c244(++_0x20c4b2);}(_0xc712,0xbd));var _0x2c71=function(_0x1611ee,_0x286469){_0x1611ee=_0x1611ee-0x0;var _0x59c7e9=_0xc712[_0x1611ee];return _0x59c7e9;};'use strict';var multer=require(_0x2c71('0x0'));var util=require(_0x2c71('0x1'));var path=require(_0x2c71('0x2'));var timeout=require(_0x2c71('0x3'));var express=require('express');var router=express[_0x2c71('0x4')]();var fs_extra=require(_0x2c71('0x5'));var auth=require(_0x2c71('0x6'));var interaction=require(_0x2c71('0x7'));var config=require(_0x2c71('0x8'));var controller=require('./cloudProvider.controller');router[_0x2c71('0x9')]('/',auth[_0x2c71('0xa')](),controller['index']);router[_0x2c71('0x9')](_0x2c71('0xb'),auth[_0x2c71('0xa')](),controller[_0x2c71('0xc')]);router[_0x2c71('0xd')]('/',auth[_0x2c71('0xa')](),controller[_0x2c71('0xe')]);router[_0x2c71('0xf')]('/:id',auth[_0x2c71('0xa')](),controller[_0x2c71('0x10')]);router[_0x2c71('0x11')](_0x2c71('0xb'),auth[_0x2c71('0xa')](),controller['destroy']);module[_0x2c71('0x12')]=router;
\ No newline at end of file
+var _0x28e2=['../../config/environment','./cloudProvider.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','express','Router','fs-extra','../../components/auth/service'];(function(_0x2f808f,_0x2de01c){var _0x58a7aa=function(_0x1a81f9){while(--_0x1a81f9){_0x2f808f['push'](_0x2f808f['shift']());}};_0x58a7aa(++_0x2de01c);}(_0x28e2,0xf2));var _0x228e=function(_0x306c61,_0x292d64){_0x306c61=_0x306c61-0x0;var _0x2fff0b=_0x28e2[_0x306c61];return _0x2fff0b;};'use strict';var multer=require(_0x228e('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x228e('0x1'));var router=express[_0x228e('0x2')]();var fs_extra=require(_0x228e('0x3'));var auth=require(_0x228e('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x228e('0x5'));var controller=require(_0x228e('0x6'));router[_0x228e('0x7')]('/',auth[_0x228e('0x8')](),controller[_0x228e('0x9')]);router[_0x228e('0x7')](_0x228e('0xa'),auth[_0x228e('0x8')](),controller[_0x228e('0xb')]);router[_0x228e('0xc')]('/',auth[_0x228e('0x8')](),controller[_0x228e('0xd')]);router[_0x228e('0xe')](_0x228e('0xa'),auth[_0x228e('0x8')](),controller[_0x228e('0xf')]);router[_0x228e('0x10')](_0x228e('0xa'),auth['isAuthenticated'](),controller[_0x228e('0x11')]);module[_0x228e('0x12')]=router;
\ No newline at end of file
index 82fe82b..da64fa4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58ea=['STRING','name','exports'];(function(_0x34b5ca,_0x594010){var _0x2d72c0=function(_0x4ae1d3){while(--_0x4ae1d3){_0x34b5ca['push'](_0x34b5ca['shift']());}};_0x2d72c0(++_0x594010);}(_0x58ea,0xa7));var _0xa58e=function(_0x3d145b,_0x2cfc6b){_0x3d145b=_0x3d145b-0x0;var _0x1300e2=_0x58ea[_0x3d145b];return _0x1300e2;};'use strict';var Sequelize=require('sequelize');module[_0xa58e('0x0')]={'name':{'type':Sequelize[_0xa58e('0x1')],'unique':_0xa58e('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0xa58e('0x1')]},'companyId':{'type':Sequelize[_0xa58e('0x1')]},'website':{'type':Sequelize[_0xa58e('0x1')]},'phone':{'type':Sequelize[_0xa58e('0x1')]},'fax':{'type':Sequelize[_0xa58e('0x1')]},'type':{'type':Sequelize[_0xa58e('0x1')]},'street':{'type':Sequelize[_0xa58e('0x1')]},'postalCode':{'type':Sequelize[_0xa58e('0x1')]},'city':{'type':Sequelize[_0xa58e('0x1')]},'country':{'type':Sequelize[_0xa58e('0x1')]},'email':{'type':Sequelize[_0xa58e('0x1')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize['STRING']},'sStreet':{'type':Sequelize[_0xa58e('0x1')]},'sPostalCode':{'type':Sequelize[_0xa58e('0x1')]},'sCity':{'type':Sequelize[_0xa58e('0x1')]},'sCountry':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xa58e('0x1')]}};
\ No newline at end of file
+var _0xcefe=['name','sequelize','STRING'];(function(_0x56ffb0,_0x1e619b){var _0x4a4f2c=function(_0x21d16a){while(--_0x21d16a){_0x56ffb0['push'](_0x56ffb0['shift']());}};_0x4a4f2c(++_0x1e619b);}(_0xcefe,0x15a));var _0xecef=function(_0x42d40a,_0x3128eb){_0x42d40a=_0x42d40a-0x0;var _0x37803b=_0xcefe[_0x42d40a];return _0x37803b;};'use strict';var Sequelize=require(_0xecef('0x0'));module['exports']={'name':{'type':Sequelize[_0xecef('0x1')],'unique':_0xecef('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0xecef('0x1')]},'companyId':{'type':Sequelize['STRING']},'website':{'type':Sequelize[_0xecef('0x1')]},'phone':{'type':Sequelize[_0xecef('0x1')]},'fax':{'type':Sequelize[_0xecef('0x1')]},'type':{'type':Sequelize[_0xecef('0x1')]},'street':{'type':Sequelize[_0xecef('0x1')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0xecef('0x1')]},'email':{'type':Sequelize[_0xecef('0x1')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize['STRING']},'sStreet':{'type':Sequelize[_0xecef('0x1')]},'sPostalCode':{'type':Sequelize[_0xecef('0x1')]},'sCity':{'type':Sequelize[_0xecef('0x1')]},'sCountry':{'type':Sequelize[_0xecef('0x1')]},'description':{'type':Sequelize[_0xecef('0x1')]}};
\ No newline at end of file
index 3242a76..e58e683 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3d6=['where','pick','filter','merge','map','options','includeAll','include','findAll','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Companies','UserProfileSection','userProfileId','name','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addContacts','CmContact','ids','omit','findOne','rawAttributes','getContacts','nolimit','eml-format','zip-dir','fast-json-patch','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/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','save','update','then','destroy','get','UserProfileResource','error','stack','index','CmCompany','describe','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort'];(function(_0x3cae30,_0x5d8b99){var _0x263f77=function(_0x308222){while(--_0x308222){_0x3cae30['push'](_0x3cae30['shift']());}};_0x263f77(++_0x5d8b99);}(_0xf3d6,0x78));var _0x6f3d=function(_0xaf0996,_0x3ee642){_0xaf0996=_0xaf0996-0x0;var _0x8fde5a=_0xf3d6[_0xaf0996];return _0x8fde5a;};'use strict';var emlformat=require(_0x6f3d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6f3d('0x1'));var jsonpatch=require(_0x6f3d('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x6f3d('0x3'));var path=require(_0x6f3d('0x4'));var sox=require(_0x6f3d('0x5'));var csv=require(_0x6f3d('0x6'));var ejs=require(_0x6f3d('0x7'));var fs=require('fs');var fs_extra=require(_0x6f3d('0x8'));var _=require(_0x6f3d('0x9'));var squel=require(_0x6f3d('0xa'));var crypto=require('crypto');var jsforce=require(_0x6f3d('0xb'));var deskjs=require(_0x6f3d('0xc'));var toCsv=require(_0x6f3d('0x6'));var querystring=require(_0x6f3d('0xd'));var Papa=require(_0x6f3d('0xe'));var Redis=require(_0x6f3d('0xf'));var authService=require(_0x6f3d('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x6f3d('0x11'));var hardwareService=require(_0x6f3d('0x12'));var logger=require(_0x6f3d('0x13'))(_0x6f3d('0x14'));var utils=require(_0x6f3d('0x15'));var config=require(_0x6f3d('0x16'));var licenseUtil=require(_0x6f3d('0x17'));var db=require(_0x6f3d('0x18'))['db'];function respondWithStatusCode(_0x100630,_0x2a7bf8){_0x2a7bf8=_0x2a7bf8||0xcc;return function(_0x3bba8b){if(_0x3bba8b){return _0x100630[_0x6f3d('0x19')](_0x2a7bf8);}return _0x100630[_0x6f3d('0x1a')](_0x2a7bf8)[_0x6f3d('0x1b')]();};}function respondWithResult(_0x2ac6fe,_0x1fb3fd){_0x1fb3fd=_0x1fb3fd||0xc8;return function(_0x5eae49){if(_0x5eae49){return _0x2ac6fe[_0x6f3d('0x1a')](_0x1fb3fd)[_0x6f3d('0x1c')](_0x5eae49);}};}function respondWithFilteredResult(_0x1c28c6,_0x1792cc){return function(_0x68709f){if(_0x68709f){var _0x323201=typeof _0x1792cc[_0x6f3d('0x1d')]==='undefined'&&typeof _0x1792cc[_0x6f3d('0x1e')]===_0x6f3d('0x1f');var _0xda6b23=_0x68709f[_0x6f3d('0x20')];var _0x52ee6f=_0x323201?0x0:_0x1792cc[_0x6f3d('0x1d')];var _0x57aa13=_0x323201?_0x68709f['count']:_0x1792cc[_0x6f3d('0x1d')]+_0x1792cc[_0x6f3d('0x1e')];var _0x5133ab;if(_0x57aa13>=_0xda6b23){_0x57aa13=_0xda6b23;_0x5133ab=0xc8;}else{_0x5133ab=0xce;}_0x1c28c6[_0x6f3d('0x1a')](_0x5133ab);return _0x1c28c6[_0x6f3d('0x21')]('Content-Range',_0x52ee6f+'-'+_0x57aa13+'/'+_0xda6b23)[_0x6f3d('0x1c')](_0x68709f);}return null;};}function patchUpdates(_0x52518c){return function(_0x5d9a08){try{jsonpatch[_0x6f3d('0x22')](_0x5d9a08,_0x52518c,!![]);}catch(_0x4d2442){return BPromise[_0x6f3d('0x23')](_0x4d2442);}return _0x5d9a08[_0x6f3d('0x24')]();};}function saveUpdates(_0x372926,_0x6753ce){return function(_0x5eb8ea){if(_0x5eb8ea){return _0x5eb8ea[_0x6f3d('0x25')](_0x372926)[_0x6f3d('0x26')](function(_0x309765){return _0x309765;});}return null;};}function removeEntity(_0x3d8a51,_0x368f5b){return function(_0x3a1991){if(_0x3a1991){return _0x3a1991[_0x6f3d('0x27')]()['then'](function(){var _0x26e84d=_0x3a1991[_0x6f3d('0x28')]({'plain':!![]});var _0x5c4fd6='Companies';return db[_0x6f3d('0x29')][_0x6f3d('0x27')]({'where':{'type':_0x5c4fd6,'resourceId':_0x26e84d['id']}})[_0x6f3d('0x26')](function(){return _0x3a1991;});})['then'](function(){_0x3d8a51['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5e3cde,_0x55a369){return function(_0x4f2b6d){if(!_0x4f2b6d){_0x5e3cde[_0x6f3d('0x19')](0x194);}return _0x4f2b6d;};}function handleError(_0x264bb1,_0x1aa9f5){_0x1aa9f5=_0x1aa9f5||0x1f4;return function(_0x51ad6d){logger[_0x6f3d('0x2a')](_0x51ad6d[_0x6f3d('0x2b')]);if(_0x51ad6d['name']){delete _0x51ad6d['name'];}_0x264bb1[_0x6f3d('0x1a')](_0x1aa9f5)['send'](_0x51ad6d);};}exports[_0x6f3d('0x2c')]=function(_0x2130df,_0x2958ad){var _0x262272={},_0x491ffd={},_0x45a13a={'count':0x0,'rows':[]};return db[_0x6f3d('0x2d')][_0x6f3d('0x2e')]()['then'](function(_0x15f83f){_0x491ffd[_0x6f3d('0x2f')]=_[_0x6f3d('0x30')](_0x15f83f);_0x491ffd[_0x6f3d('0x31')]=_[_0x6f3d('0x30')](_0x2130df[_0x6f3d('0x31')]);_0x491ffd[_0x6f3d('0x32')]=_[_0x6f3d('0x33')](_0x491ffd[_0x6f3d('0x2f')],_0x491ffd['query']);_0x262272[_0x6f3d('0x34')]=_[_0x6f3d('0x33')](_0x491ffd[_0x6f3d('0x2f')],qs[_0x6f3d('0x35')](_0x2130df[_0x6f3d('0x31')]['fields']));_0x262272[_0x6f3d('0x34')]=_0x262272[_0x6f3d('0x34')][_0x6f3d('0x36')]?_0x262272['attributes']:_0x491ffd['model'];if(!_0x2130df['query'][_0x6f3d('0x37')]('nolimit')){_0x262272[_0x6f3d('0x1e')]=qs['limit'](_0x2130df[_0x6f3d('0x31')]['limit']);_0x262272[_0x6f3d('0x1d')]=qs[_0x6f3d('0x1d')](_0x2130df['query']['offset']);}_0x262272[_0x6f3d('0x38')]=qs[_0x6f3d('0x39')](_0x2130df['query'][_0x6f3d('0x39')]);_0x262272[_0x6f3d('0x3a')]=qs['filters'](_[_0x6f3d('0x3b')](_0x2130df[_0x6f3d('0x31')],_0x491ffd[_0x6f3d('0x32')]),_0x15f83f);if(_0x2130df['query'][_0x6f3d('0x3c')]){_0x262272[_0x6f3d('0x3a')]=_[_0x6f3d('0x3d')](_0x262272['where'],{'$or':_[_0x6f3d('0x3e')](_0x262272['attributes'],function(_0x1afddb){var _0x4709b6={};_0x4709b6[_0x1afddb]={'$like':'%'+_0x2130df[_0x6f3d('0x31')]['filter']+'%'};return _0x4709b6;})});}_0x262272=_[_0x6f3d('0x3d')]({},_0x262272,_0x2130df[_0x6f3d('0x3f')]);var _0x4e8717={'where':_0x262272['where']};return db[_0x6f3d('0x2d')]['count'](_0x4e8717)[_0x6f3d('0x26')](function(_0x3f5f16){_0x45a13a['count']=_0x3f5f16;if(_0x2130df[_0x6f3d('0x31')][_0x6f3d('0x40')]){_0x262272[_0x6f3d('0x41')]=[{'all':!![]}];}return db[_0x6f3d('0x2d')][_0x6f3d('0x42')](_0x262272);})[_0x6f3d('0x26')](function(_0x35a801){_0x45a13a['rows']=_0x35a801;return _0x45a13a;})['then'](respondWithFilteredResult(_0x2958ad,_0x262272))['catch'](handleError(_0x2958ad,null));})[_0x6f3d('0x43')](handleError(_0x2958ad,null));};exports[_0x6f3d('0x44')]=function(_0x5b94bc,_0x403c9c){var _0x555b66={'raw':![],'where':{'id':_0x5b94bc[_0x6f3d('0x45')]['id']}},_0x607595={};_0x607595[_0x6f3d('0x2f')]=_['keys'](db[_0x6f3d('0x2d')]['rawAttributes']);_0x607595['query']=_[_0x6f3d('0x30')](_0x5b94bc[_0x6f3d('0x31')]);_0x607595[_0x6f3d('0x32')]=_[_0x6f3d('0x33')](_0x607595['model'],_0x607595['query']);_0x555b66[_0x6f3d('0x34')]=_['intersection'](_0x607595[_0x6f3d('0x2f')],qs[_0x6f3d('0x35')](_0x5b94bc[_0x6f3d('0x31')]['fields']));_0x555b66[_0x6f3d('0x34')]=_0x555b66[_0x6f3d('0x34')][_0x6f3d('0x36')]?_0x555b66['attributes']:_0x607595[_0x6f3d('0x2f')];if(_0x5b94bc[_0x6f3d('0x31')]['includeAll']){_0x555b66[_0x6f3d('0x41')]=[{'all':!![]}];}_0x555b66=_[_0x6f3d('0x3d')]({},_0x555b66,_0x5b94bc['options']);return db[_0x6f3d('0x2d')][_0x6f3d('0x46')](_0x555b66)[_0x6f3d('0x26')](handleEntityNotFound(_0x403c9c,null))[_0x6f3d('0x26')](respondWithResult(_0x403c9c,null))[_0x6f3d('0x43')](handleError(_0x403c9c,null));};exports['create']=function(_0x318273,_0x109b25){return db[_0x6f3d('0x2d')][_0x6f3d('0x47')](_0x318273[_0x6f3d('0x48')],{})['then'](function(_0x14a0a3){var _0x1b4a0e=_0x318273[_0x6f3d('0x49')][_0x6f3d('0x28')]({'plain':!![]});if(!_0x1b4a0e)throw new Error(_0x6f3d('0x4a'));if(_0x1b4a0e[_0x6f3d('0x4b')]===_0x6f3d('0x49')){var _0x2f2fa5=_0x14a0a3['get']({'plain':!![]});var _0x16fb96=_0x6f3d('0x4c');return db[_0x6f3d('0x4d')][_0x6f3d('0x46')]({'where':{'name':_0x16fb96,'userProfileId':_0x1b4a0e[_0x6f3d('0x4e')]},'raw':!![]})[_0x6f3d('0x26')](function(_0x535c94){if(_0x535c94&&_0x535c94['autoAssociation']===0x0){return db[_0x6f3d('0x29')]['create']({'name':_0x2f2fa5['name'],'resourceId':_0x2f2fa5['id'],'type':_0x535c94[_0x6f3d('0x4f')],'sectionId':_0x535c94['id']},{})[_0x6f3d('0x26')](function(){return _0x14a0a3;});}else{return _0x14a0a3;}})[_0x6f3d('0x43')](function(_0x5dc2cb){logger['error'](_0x6f3d('0x50'),_0x5dc2cb);throw _0x5dc2cb;});}return _0x14a0a3;})['then'](respondWithResult(_0x109b25,0xc9))[_0x6f3d('0x43')](handleError(_0x109b25,null));};exports['update']=function(_0xc9326d,_0x4cd9a9){if(_0xc9326d[_0x6f3d('0x48')]['id']){delete _0xc9326d[_0x6f3d('0x48')]['id'];}return db[_0x6f3d('0x2d')]['find']({'where':{'id':_0xc9326d['params']['id']}})['then'](handleEntityNotFound(_0x4cd9a9,null))[_0x6f3d('0x26')](saveUpdates(_0xc9326d[_0x6f3d('0x48')],null))[_0x6f3d('0x26')](respondWithResult(_0x4cd9a9,null))[_0x6f3d('0x43')](handleError(_0x4cd9a9,null));};exports[_0x6f3d('0x27')]=function(_0x399a37,_0x4052d7){return db[_0x6f3d('0x2d')][_0x6f3d('0x46')]({'where':{'id':_0x399a37[_0x6f3d('0x45')]['id']}})[_0x6f3d('0x26')](handleEntityNotFound(_0x4052d7,null))[_0x6f3d('0x26')](removeEntity(_0x4052d7,null))[_0x6f3d('0x43')](handleError(_0x4052d7,null));};exports[_0x6f3d('0x2e')]=function(_0x188d4c,_0x13d3f6){return db[_0x6f3d('0x2d')][_0x6f3d('0x2e')]()['then'](respondWithResult(_0x13d3f6,null))[_0x6f3d('0x43')](handleError(_0x13d3f6,null));};exports[_0x6f3d('0x51')]=function(_0x44486a,_0x477a61,_0x48eb49){return db[_0x6f3d('0x52')]['find']({'where':{'id':_0x44486a[_0x6f3d('0x45')]['id']}})[_0x6f3d('0x26')](handleEntityNotFound(_0x477a61,null))[_0x6f3d('0x26')](function(_0x49f399){if(_0x49f399){return _0x49f399['addContacts'](_0x44486a[_0x6f3d('0x48')][_0x6f3d('0x53')],_[_0x6f3d('0x54')](_0x44486a[_0x6f3d('0x48')],[_0x6f3d('0x53'),'id'])||{});}})['then'](respondWithResult(_0x477a61,null))[_0x6f3d('0x43')](handleError(_0x477a61,null));};exports['getContacts']=function(_0x502ccc,_0x12f290,_0x28a144){var _0x238871={};var _0x257cab={};var _0x56a361;var _0x59e534;return db['CmCompany'][_0x6f3d('0x55')]({'where':{'id':_0x502ccc[_0x6f3d('0x45')]['id']}})[_0x6f3d('0x26')](handleEntityNotFound(_0x12f290,null))[_0x6f3d('0x26')](function(_0x38aa82){if(_0x38aa82){_0x56a361=_0x38aa82;_0x257cab[_0x6f3d('0x2f')]=_[_0x6f3d('0x30')](db[_0x6f3d('0x52')][_0x6f3d('0x56')]);_0x257cab[_0x6f3d('0x31')]=_[_0x6f3d('0x30')](_0x502ccc[_0x6f3d('0x31')]);_0x257cab[_0x6f3d('0x32')]=_['intersection'](_0x257cab[_0x6f3d('0x2f')],_0x257cab[_0x6f3d('0x31')]);_0x238871[_0x6f3d('0x34')]=_[_0x6f3d('0x33')](_0x257cab[_0x6f3d('0x2f')],qs[_0x6f3d('0x35')](_0x502ccc[_0x6f3d('0x31')]['fields']));_0x238871[_0x6f3d('0x34')]=_0x238871[_0x6f3d('0x34')]['length']?_0x238871['attributes']:_0x257cab[_0x6f3d('0x2f')];_0x238871[_0x6f3d('0x38')]=qs[_0x6f3d('0x39')](_0x502ccc['query'][_0x6f3d('0x39')]);_0x238871[_0x6f3d('0x3a')]=qs[_0x6f3d('0x32')](_[_0x6f3d('0x3b')](_0x502ccc['query'],_0x257cab[_0x6f3d('0x32')]));if(_0x502ccc[_0x6f3d('0x31')][_0x6f3d('0x3c')]){_0x238871[_0x6f3d('0x3a')]=_[_0x6f3d('0x3d')](_0x238871[_0x6f3d('0x3a')],{'$or':_[_0x6f3d('0x3e')](_0x238871[_0x6f3d('0x34')],function(_0x1d2af4){var _0x2a6750={};_0x2a6750[_0x1d2af4]={'$like':'%'+_0x502ccc[_0x6f3d('0x31')][_0x6f3d('0x3c')]+'%'};return _0x2a6750;})});}_0x238871=_[_0x6f3d('0x3d')]({},_0x238871,_0x502ccc[_0x6f3d('0x3f')]);return _0x56a361[_0x6f3d('0x57')](_0x238871);}})[_0x6f3d('0x26')](function(_0x206aed){if(_0x206aed){_0x59e534=_0x206aed['length'];if(!_0x502ccc['query'][_0x6f3d('0x37')](_0x6f3d('0x58'))){_0x238871[_0x6f3d('0x1e')]=qs[_0x6f3d('0x1e')](_0x502ccc[_0x6f3d('0x31')]['limit']);_0x238871[_0x6f3d('0x1d')]=qs[_0x6f3d('0x1d')](_0x502ccc[_0x6f3d('0x31')][_0x6f3d('0x1d')]);}return _0x56a361['getContacts'](_0x238871);}})['then'](function(_0x227cda){if(_0x227cda){return _0x227cda?{'count':_0x59e534,'rows':_0x227cda}:null;}})[_0x6f3d('0x26')](respondWithResult(_0x12f290,null))[_0x6f3d('0x43')](handleError(_0x12f290,null));};
\ No newline at end of file
+var _0xd998=['../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','get','UserProfileResource','destroy','error','stack','name','send','index','describe','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','CmCompany','includeAll','include','rows','catch','show','params','rawAttributes','find','create','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','addContacts','omit','ids','getContacts','order','map','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis'];(function(_0x5025ae,_0xba29c2){var _0xa26dac=function(_0x1dfd34){while(--_0x1dfd34){_0x5025ae['push'](_0x5025ae['shift']());}};_0xa26dac(++_0xba29c2);}(_0xd998,0x1a4));var _0x8d99=function(_0x2365db,_0x4ea500){_0x2365db=_0x2365db-0x0;var _0x2bee41=_0xd998[_0x2365db];return _0x2bee41;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8d99('0x0'));var zipdir=require(_0x8d99('0x1'));var jsonpatch=require(_0x8d99('0x2'));var rp=require(_0x8d99('0x3'));var moment=require(_0x8d99('0x4'));var BPromise=require(_0x8d99('0x5'));var Mustache=require(_0x8d99('0x6'));var util=require(_0x8d99('0x7'));var path=require(_0x8d99('0x8'));var sox=require(_0x8d99('0x9'));var csv=require(_0x8d99('0xa'));var ejs=require(_0x8d99('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8d99('0xc'));var squel=require(_0x8d99('0xd'));var crypto=require(_0x8d99('0xe'));var jsforce=require(_0x8d99('0xf'));var deskjs=require(_0x8d99('0x10'));var toCsv=require('to-csv');var querystring=require(_0x8d99('0x11'));var Papa=require(_0x8d99('0x12'));var Redis=require(_0x8d99('0x13'));var authService=require(_0x8d99('0x14'));var qs=require(_0x8d99('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8d99('0x16'));var logger=require(_0x8d99('0x17'))(_0x8d99('0x18'));var utils=require(_0x8d99('0x19'));var config=require(_0x8d99('0x1a'));var licenseUtil=require(_0x8d99('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x8d2213,_0x341847){_0x341847=_0x341847||0xcc;return function(_0x39cdf6){if(_0x39cdf6){return _0x8d2213[_0x8d99('0x1c')](_0x341847);}return _0x8d2213[_0x8d99('0x1d')](_0x341847)[_0x8d99('0x1e')]();};}function respondWithResult(_0xd85472,_0x5e5755){_0x5e5755=_0x5e5755||0xc8;return function(_0x17f24e){if(_0x17f24e){return _0xd85472[_0x8d99('0x1d')](_0x5e5755)[_0x8d99('0x1f')](_0x17f24e);}};}function respondWithFilteredResult(_0x4b4193,_0x354ad3){return function(_0x3cbe27){if(_0x3cbe27){var _0x5d444f=typeof _0x354ad3[_0x8d99('0x20')]===_0x8d99('0x21')&&typeof _0x354ad3['limit']===_0x8d99('0x21');var _0x518065=_0x3cbe27['count'];var _0x5b3f17=_0x5d444f?0x0:_0x354ad3[_0x8d99('0x20')];var _0x313018=_0x5d444f?_0x3cbe27[_0x8d99('0x22')]:_0x354ad3[_0x8d99('0x20')]+_0x354ad3[_0x8d99('0x23')];var _0xbfd503;if(_0x313018>=_0x518065){_0x313018=_0x518065;_0xbfd503=0xc8;}else{_0xbfd503=0xce;}_0x4b4193[_0x8d99('0x1d')](_0xbfd503);return _0x4b4193[_0x8d99('0x24')](_0x8d99('0x25'),_0x5b3f17+'-'+_0x313018+'/'+_0x518065)['json'](_0x3cbe27);}return null;};}function patchUpdates(_0x135e2f){return function(_0x2eba1e){try{jsonpatch[_0x8d99('0x26')](_0x2eba1e,_0x135e2f,!![]);}catch(_0x9dd589){return BPromise[_0x8d99('0x27')](_0x9dd589);}return _0x2eba1e[_0x8d99('0x28')]();};}function saveUpdates(_0x3cdf2c,_0x1437a7){return function(_0x173765){if(_0x173765){return _0x173765['update'](_0x3cdf2c)[_0x8d99('0x29')](function(_0x3c708f){return _0x3c708f;});}return null;};}function removeEntity(_0x27b840,_0x280d4a){return function(_0x13e564){if(_0x13e564){return _0x13e564['destroy']()['then'](function(){var _0x5ce40f=_0x13e564[_0x8d99('0x2a')]({'plain':!![]});var _0x54597f='Companies';return db[_0x8d99('0x2b')][_0x8d99('0x2c')]({'where':{'type':_0x54597f,'resourceId':_0x5ce40f['id']}})[_0x8d99('0x29')](function(){return _0x13e564;});})['then'](function(){_0x27b840[_0x8d99('0x1d')](0xcc)[_0x8d99('0x1e')]();});}};}function handleEntityNotFound(_0x1d0c47,_0x2c3ee4){return function(_0xb94fa){if(!_0xb94fa){_0x1d0c47[_0x8d99('0x1c')](0x194);}return _0xb94fa;};}function handleError(_0x48308e,_0x48bb4b){_0x48bb4b=_0x48bb4b||0x1f4;return function(_0x15fbd3){logger[_0x8d99('0x2d')](_0x15fbd3[_0x8d99('0x2e')]);if(_0x15fbd3[_0x8d99('0x2f')]){delete _0x15fbd3[_0x8d99('0x2f')];}_0x48308e['status'](_0x48bb4b)[_0x8d99('0x30')](_0x15fbd3);};}exports[_0x8d99('0x31')]=function(_0x5cf5c7,_0x53b9eb){var _0x74c05c={},_0x612713={},_0x5ab155={'count':0x0,'rows':[]};return db['CmCompany'][_0x8d99('0x32')]()['then'](function(_0x70fff){_0x612713[_0x8d99('0x33')]=_[_0x8d99('0x34')](_0x70fff);_0x612713[_0x8d99('0x35')]=_[_0x8d99('0x34')](_0x5cf5c7[_0x8d99('0x35')]);_0x612713[_0x8d99('0x36')]=_[_0x8d99('0x37')](_0x612713[_0x8d99('0x33')],_0x612713['query']);_0x74c05c[_0x8d99('0x38')]=_[_0x8d99('0x37')](_0x612713[_0x8d99('0x33')],qs[_0x8d99('0x39')](_0x5cf5c7[_0x8d99('0x35')][_0x8d99('0x39')]));_0x74c05c[_0x8d99('0x38')]=_0x74c05c[_0x8d99('0x38')][_0x8d99('0x3a')]?_0x74c05c[_0x8d99('0x38')]:_0x612713[_0x8d99('0x33')];if(!_0x5cf5c7[_0x8d99('0x35')][_0x8d99('0x3b')](_0x8d99('0x3c'))){_0x74c05c['limit']=qs[_0x8d99('0x23')](_0x5cf5c7[_0x8d99('0x35')][_0x8d99('0x23')]);_0x74c05c[_0x8d99('0x20')]=qs[_0x8d99('0x20')](_0x5cf5c7[_0x8d99('0x35')][_0x8d99('0x20')]);}_0x74c05c['order']=qs[_0x8d99('0x3d')](_0x5cf5c7[_0x8d99('0x35')][_0x8d99('0x3d')]);_0x74c05c[_0x8d99('0x3e')]=qs['filters'](_[_0x8d99('0x3f')](_0x5cf5c7['query'],_0x612713[_0x8d99('0x36')]),_0x70fff);if(_0x5cf5c7[_0x8d99('0x35')][_0x8d99('0x40')]){_0x74c05c[_0x8d99('0x3e')]=_[_0x8d99('0x41')](_0x74c05c[_0x8d99('0x3e')],{'$or':_['map'](_0x74c05c[_0x8d99('0x38')],function(_0x4aa517){var _0x400103={};_0x400103[_0x4aa517]={'$like':'%'+_0x5cf5c7['query']['filter']+'%'};return _0x400103;})});}_0x74c05c=_[_0x8d99('0x41')]({},_0x74c05c,_0x5cf5c7[_0x8d99('0x42')]);var _0x2c15c0={'where':_0x74c05c['where']};return db[_0x8d99('0x43')][_0x8d99('0x22')](_0x2c15c0)['then'](function(_0x1b90ed){_0x5ab155['count']=_0x1b90ed;if(_0x5cf5c7[_0x8d99('0x35')][_0x8d99('0x44')]){_0x74c05c[_0x8d99('0x45')]=[{'all':!![]}];}return db[_0x8d99('0x43')]['findAll'](_0x74c05c);})[_0x8d99('0x29')](function(_0x1289f8){_0x5ab155[_0x8d99('0x46')]=_0x1289f8;return _0x5ab155;})[_0x8d99('0x29')](respondWithFilteredResult(_0x53b9eb,_0x74c05c))[_0x8d99('0x47')](handleError(_0x53b9eb,null));})[_0x8d99('0x47')](handleError(_0x53b9eb,null));};exports[_0x8d99('0x48')]=function(_0x33da08,_0x16f597){var _0x5d51e7={'raw':![],'where':{'id':_0x33da08[_0x8d99('0x49')]['id']}},_0x4f93ff={};_0x4f93ff[_0x8d99('0x33')]=_[_0x8d99('0x34')](db[_0x8d99('0x43')][_0x8d99('0x4a')]);_0x4f93ff[_0x8d99('0x35')]=_[_0x8d99('0x34')](_0x33da08['query']);_0x4f93ff[_0x8d99('0x36')]=_[_0x8d99('0x37')](_0x4f93ff[_0x8d99('0x33')],_0x4f93ff[_0x8d99('0x35')]);_0x5d51e7[_0x8d99('0x38')]=_[_0x8d99('0x37')](_0x4f93ff[_0x8d99('0x33')],qs[_0x8d99('0x39')](_0x33da08['query'][_0x8d99('0x39')]));_0x5d51e7[_0x8d99('0x38')]=_0x5d51e7['attributes']['length']?_0x5d51e7[_0x8d99('0x38')]:_0x4f93ff[_0x8d99('0x33')];if(_0x33da08[_0x8d99('0x35')][_0x8d99('0x44')]){_0x5d51e7[_0x8d99('0x45')]=[{'all':!![]}];}_0x5d51e7=_[_0x8d99('0x41')]({},_0x5d51e7,_0x33da08[_0x8d99('0x42')]);return db[_0x8d99('0x43')][_0x8d99('0x4b')](_0x5d51e7)[_0x8d99('0x29')](handleEntityNotFound(_0x16f597,null))[_0x8d99('0x29')](respondWithResult(_0x16f597,null))[_0x8d99('0x47')](handleError(_0x16f597,null));};exports[_0x8d99('0x4c')]=function(_0x5a53b9,_0x3c735a){return db[_0x8d99('0x43')][_0x8d99('0x4c')](_0x5a53b9['body'],{})[_0x8d99('0x29')](function(_0x9a901){var _0x26ae94=_0x5a53b9['user']['get']({'plain':!![]});if(!_0x26ae94)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x26ae94['role']==='user'){var _0x346ad2=_0x9a901['get']({'plain':!![]});var _0x4ec283='Companies';return db[_0x8d99('0x4d')][_0x8d99('0x4b')]({'where':{'name':_0x4ec283,'userProfileId':_0x26ae94[_0x8d99('0x4e')]},'raw':!![]})['then'](function(_0x1ad510){if(_0x1ad510&&_0x1ad510[_0x8d99('0x4f')]===0x0){return db['UserProfileResource']['create']({'name':_0x346ad2[_0x8d99('0x2f')],'resourceId':_0x346ad2['id'],'type':_0x1ad510[_0x8d99('0x2f')],'sectionId':_0x1ad510['id']},{})[_0x8d99('0x29')](function(){return _0x9a901;});}else{return _0x9a901;}})[_0x8d99('0x47')](function(_0x1a0cf8){logger[_0x8d99('0x2d')](_0x8d99('0x50'),_0x1a0cf8);throw _0x1a0cf8;});}return _0x9a901;})[_0x8d99('0x29')](respondWithResult(_0x3c735a,0xc9))[_0x8d99('0x47')](handleError(_0x3c735a,null));};exports['update']=function(_0xdd9b2,_0x401a35){if(_0xdd9b2[_0x8d99('0x51')]['id']){delete _0xdd9b2[_0x8d99('0x51')]['id'];}return db['CmCompany'][_0x8d99('0x4b')]({'where':{'id':_0xdd9b2['params']['id']}})[_0x8d99('0x29')](handleEntityNotFound(_0x401a35,null))[_0x8d99('0x29')](saveUpdates(_0xdd9b2['body'],null))[_0x8d99('0x29')](respondWithResult(_0x401a35,null))['catch'](handleError(_0x401a35,null));};exports['destroy']=function(_0xfa5f6c,_0x30f159){return db[_0x8d99('0x43')][_0x8d99('0x4b')]({'where':{'id':_0xfa5f6c['params']['id']}})[_0x8d99('0x29')](handleEntityNotFound(_0x30f159,null))[_0x8d99('0x29')](removeEntity(_0x30f159,null))[_0x8d99('0x47')](handleError(_0x30f159,null));};exports[_0x8d99('0x32')]=function(_0x1548cb,_0x52bc42){return db['CmCompany'][_0x8d99('0x32')]()[_0x8d99('0x29')](respondWithResult(_0x52bc42,null))['catch'](handleError(_0x52bc42,null));};exports[_0x8d99('0x52')]=function(_0x1176e0,_0x2a256d,_0x2a34f8){return db['CmContact'][_0x8d99('0x4b')]({'where':{'id':_0x1176e0[_0x8d99('0x49')]['id']}})[_0x8d99('0x29')](handleEntityNotFound(_0x2a256d,null))[_0x8d99('0x29')](function(_0x4f4051){if(_0x4f4051){return _0x4f4051[_0x8d99('0x52')](_0x1176e0['body']['ids'],_[_0x8d99('0x53')](_0x1176e0[_0x8d99('0x51')],[_0x8d99('0x54'),'id'])||{});}})[_0x8d99('0x29')](respondWithResult(_0x2a256d,null))[_0x8d99('0x47')](handleError(_0x2a256d,null));};exports[_0x8d99('0x55')]=function(_0x3993ab,_0x149a93,_0x401027){var _0x4b4da4={};var _0x105eba={};var _0x4b35b6;var _0x474e8a;return db[_0x8d99('0x43')]['findOne']({'where':{'id':_0x3993ab[_0x8d99('0x49')]['id']}})[_0x8d99('0x29')](handleEntityNotFound(_0x149a93,null))[_0x8d99('0x29')](function(_0x5601b9){if(_0x5601b9){_0x4b35b6=_0x5601b9;_0x105eba[_0x8d99('0x33')]=_[_0x8d99('0x34')](db['CmContact'][_0x8d99('0x4a')]);_0x105eba['query']=_[_0x8d99('0x34')](_0x3993ab[_0x8d99('0x35')]);_0x105eba['filters']=_[_0x8d99('0x37')](_0x105eba[_0x8d99('0x33')],_0x105eba[_0x8d99('0x35')]);_0x4b4da4['attributes']=_[_0x8d99('0x37')](_0x105eba[_0x8d99('0x33')],qs[_0x8d99('0x39')](_0x3993ab[_0x8d99('0x35')][_0x8d99('0x39')]));_0x4b4da4[_0x8d99('0x38')]=_0x4b4da4[_0x8d99('0x38')][_0x8d99('0x3a')]?_0x4b4da4[_0x8d99('0x38')]:_0x105eba[_0x8d99('0x33')];_0x4b4da4[_0x8d99('0x56')]=qs[_0x8d99('0x3d')](_0x3993ab[_0x8d99('0x35')][_0x8d99('0x3d')]);_0x4b4da4[_0x8d99('0x3e')]=qs[_0x8d99('0x36')](_[_0x8d99('0x3f')](_0x3993ab[_0x8d99('0x35')],_0x105eba[_0x8d99('0x36')]));if(_0x3993ab['query'][_0x8d99('0x40')]){_0x4b4da4['where']=_[_0x8d99('0x41')](_0x4b4da4[_0x8d99('0x3e')],{'$or':_[_0x8d99('0x57')](_0x4b4da4['attributes'],function(_0x5dbdbe){var _0x11a82b={};_0x11a82b[_0x5dbdbe]={'$like':'%'+_0x3993ab[_0x8d99('0x35')][_0x8d99('0x40')]+'%'};return _0x11a82b;})});}_0x4b4da4=_['merge']({},_0x4b4da4,_0x3993ab[_0x8d99('0x42')]);return _0x4b35b6[_0x8d99('0x55')](_0x4b4da4);}})['then'](function(_0x50b029){if(_0x50b029){_0x474e8a=_0x50b029['length'];if(!_0x3993ab[_0x8d99('0x35')][_0x8d99('0x3b')](_0x8d99('0x3c'))){_0x4b4da4['limit']=qs[_0x8d99('0x23')](_0x3993ab[_0x8d99('0x35')][_0x8d99('0x23')]);_0x4b4da4[_0x8d99('0x20')]=qs['offset'](_0x3993ab[_0x8d99('0x35')][_0x8d99('0x20')]);}return _0x4b35b6['getContacts'](_0x4b4da4);}})[_0x8d99('0x29')](function(_0xa08bbb){if(_0xa08bbb){return _0xa08bbb?{'count':_0x474e8a,'rows':_0xa08bbb}:null;}})[_0x8d99('0x29')](respondWithResult(_0x149a93,null))[_0x8d99('0x47')](handleError(_0x149a93,null));};
\ No newline at end of file
index cb7980c..ae9cc59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3881=['rimraf','../../config/environment','./cmCompany.attributes','define','lodash','../../config/logger','api','request-promise'];(function(_0x1c605b,_0x32bde2){var _0x52c0b1=function(_0x3d9a2e){while(--_0x3d9a2e){_0x1c605b['push'](_0x1c605b['shift']());}};_0x52c0b1(++_0x32bde2);}(_0x3881,0xac));var _0x1388=function(_0x5235d5,_0x7f15ca){_0x5235d5=_0x5235d5-0x0;var _0x46a663=_0x3881[_0x5235d5];return _0x46a663;};'use strict';var _=require(_0x1388('0x0'));var util=require('util');var logger=require(_0x1388('0x1'))(_0x1388('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x1388('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1388('0x4'));var config=require(_0x1388('0x5'));var attributes=require(_0x1388('0x6'));module['exports']=function(_0x50da6a,_0x78a941){return _0x50da6a[_0x1388('0x7')]('CmCompany',attributes,{'tableName':'cm_companies','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaa23=['define','CmCompany','cm_companies','util','../../config/logger','api','moment','path','../../config/environment','./cmCompany.attributes'];(function(_0x1605a0,_0x11d5a2){var _0x1c279f=function(_0x520e69){while(--_0x520e69){_0x1605a0['push'](_0x1605a0['shift']());}};_0x1c279f(++_0x11d5a2);}(_0xaa23,0x157));var _0x3aa2=function(_0x3d368b,_0xbbc5db){_0x3d368b=_0x3d368b-0x0;var _0x579af1=_0xaa23[_0x3d368b];return _0x579af1;};'use strict';var _=require('lodash');var util=require(_0x3aa2('0x0'));var logger=require(_0x3aa2('0x1'))(_0x3aa2('0x2'));var moment=require(_0x3aa2('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x3aa2('0x4'));var rimraf=require('rimraf');var config=require(_0x3aa2('0x5'));var attributes=require(_0x3aa2('0x6'));module['exports']=function(_0x5a42f0,_0x5fac46){return _0x5a42f0[_0x3aa2('0x7')](_0x3aa2('0x8'),attributes,{'tableName':_0x3aa2('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1c7c896..016eda4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe07d=['code','message','result','catch','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','error'];(function(_0x5e7f62,_0x5ba327){var _0x4626ab=function(_0x5dcaa0){while(--_0x5dcaa0){_0x5e7f62['push'](_0x5e7f62['shift']());}};_0x4626ab(++_0x5ba327);}(_0xe07d,0x8e));var _0xde07=function(_0x59eefb,_0x2151ce){_0x59eefb=_0x59eefb-0x0;var _0x1a49e8=_0xe07d[_0x59eefb];return _0x1a49e8;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xde07('0x0'));var BPromise=require(_0xde07('0x1'));var rs=require(_0xde07('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xde07('0x3'))['db'];var utils=require(_0xde07('0x4'));var logger=require(_0xde07('0x5'))(_0xde07('0x6'));var config=require(_0xde07('0x7'));var jayson=require(_0xde07('0x8'));var client=jayson[_0xde07('0x9')][_0xde07('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5d1230,_0x586666,_0x3d242b){return new BPromise(function(_0x542000,_0x47e276){return client[_0xde07('0xb')](_0x5d1230,_0x3d242b)[_0xde07('0xc')](function(_0x2fbfc7){logger[_0xde07('0xd')](_0xde07('0xe'),_0x586666,_0xde07('0xf'));logger[_0xde07('0x10')](_0xde07('0x11'),_0x586666,_0xde07('0xf'),JSON['stringify'](_0x2fbfc7));if(_0x2fbfc7[_0xde07('0x12')]){if(_0x2fbfc7[_0xde07('0x12')][_0xde07('0x13')]===0x1f4){logger[_0xde07('0x12')](_0xde07('0xe'),_0x586666,_0x2fbfc7[_0xde07('0x12')][_0xde07('0x14')]);return _0x47e276(_0x2fbfc7[_0xde07('0x12')]['message']);}logger['error'](_0xde07('0xe'),_0x586666,_0x2fbfc7['error'][_0xde07('0x14')]);return _0x542000(_0x2fbfc7[_0xde07('0x12')][_0xde07('0x14')]);}else{logger[_0xde07('0xd')](_0xde07('0xe'),_0x586666,_0xde07('0xf'));_0x542000(_0x2fbfc7[_0xde07('0x15')]['message']);}})[_0xde07('0x16')](function(_0x2867fc){logger[_0xde07('0x12')](_0xde07('0xe'),_0x586666,_0x2867fc);_0x47e276(_0x2867fc);});});}
\ No newline at end of file
+var _0x314d=['jayson/promise','client','http','request','then','CmCompany,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x1fe705,_0x2ed051){var _0x41e937=function(_0x3cc23e){while(--_0x3cc23e){_0x1fe705['push'](_0x1fe705['shift']());}};_0x41e937(++_0x2ed051);}(_0x314d,0x186));var _0xd314=function(_0x59fc4d,_0x1187f5){_0x59fc4d=_0x59fc4d-0x0;var _0x253646=_0x314d[_0x59fc4d];return _0x253646;};'use strict';var _=require('lodash');var util=require(_0xd314('0x0'));var moment=require(_0xd314('0x1'));var BPromise=require(_0xd314('0x2'));var rs=require(_0xd314('0x3'));var fs=require('fs');var Redis=require(_0xd314('0x4'));var db=require(_0xd314('0x5'))['db'];var utils=require(_0xd314('0x6'));var logger=require(_0xd314('0x7'))(_0xd314('0x8'));var config=require(_0xd314('0x9'));var jayson=require(_0xd314('0xa'));var client=jayson[_0xd314('0xb')][_0xd314('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x47db98,_0x2c736d,_0x4f2a02){return new BPromise(function(_0x422bfd,_0x55e525){return client[_0xd314('0xd')](_0x47db98,_0x4f2a02)[_0xd314('0xe')](function(_0x172e2b){logger['info'](_0xd314('0xf'),_0x2c736d,_0xd314('0x10'));logger[_0xd314('0x11')]('CmCompany,\x20%s,\x20%s,\x20%s',_0x2c736d,_0xd314('0x10'),JSON[_0xd314('0x12')](_0x172e2b));if(_0x172e2b['error']){if(_0x172e2b[_0xd314('0x13')][_0xd314('0x14')]===0x1f4){logger[_0xd314('0x13')]('CmCompany,\x20%s,\x20%s',_0x2c736d,_0x172e2b['error'][_0xd314('0x15')]);return _0x55e525(_0x172e2b[_0xd314('0x13')][_0xd314('0x15')]);}logger[_0xd314('0x13')](_0xd314('0xf'),_0x2c736d,_0x172e2b[_0xd314('0x13')][_0xd314('0x15')]);return _0x422bfd(_0x172e2b['error'][_0xd314('0x15')]);}else{logger[_0xd314('0x16')](_0xd314('0xf'),_0x2c736d,_0xd314('0x10'));_0x422bfd(_0x172e2b[_0xd314('0x17')][_0xd314('0x15')]);}})[_0xd314('0x18')](function(_0x48211b){logger[_0xd314('0x13')]('CmCompany,\x20%s,\x20%s',_0x2c736d,_0x48211b);_0x55e525(_0x48211b);});});}
\ No newline at end of file
index 946e36a..28af114 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd889=['util','path','connect-timeout','express','Router','../../components/interaction/service','get','isAuthenticated','index','/describe','/:id','show','getContacts','post','/:id/contacts','addContacts','put','delete','destroy','exports','multer'];(function(_0x37d8c2,_0x134742){var _0x1dc9e4=function(_0x2739f7){while(--_0x2739f7){_0x37d8c2['push'](_0x37d8c2['shift']());}};_0x1dc9e4(++_0x134742);}(_0xd889,0x92));var _0x9d88=function(_0x4b8520,_0x2887a5){_0x4b8520=_0x4b8520-0x0;var _0x29b55b=_0xd889[_0x4b8520];return _0x29b55b;};'use strict';var multer=require(_0x9d88('0x0'));var util=require(_0x9d88('0x1'));var path=require(_0x9d88('0x2'));var timeout=require(_0x9d88('0x3'));var express=require(_0x9d88('0x4'));var router=express[_0x9d88('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x9d88('0x6'));var config=require('../../config/environment');var controller=require('./cmCompany.controller');router[_0x9d88('0x7')]('/',auth[_0x9d88('0x8')](),controller[_0x9d88('0x9')]);router[_0x9d88('0x7')](_0x9d88('0xa'),auth[_0x9d88('0x8')](),controller['describe']);router['get'](_0x9d88('0xb'),auth[_0x9d88('0x8')](),controller[_0x9d88('0xc')]);router[_0x9d88('0x7')]('/:id/contacts',auth[_0x9d88('0x8')](),controller[_0x9d88('0xd')]);router[_0x9d88('0xe')]('/',auth[_0x9d88('0x8')](),controller['create']);router[_0x9d88('0xe')](_0x9d88('0xf'),auth[_0x9d88('0x8')](),controller[_0x9d88('0x10')]);router[_0x9d88('0x11')](_0x9d88('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x9d88('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x9d88('0x13')]);module[_0x9d88('0x14')]=router;
\ No newline at end of file
+var _0xf0d2=['connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCompany.controller','get','index','isAuthenticated','/:id','show','/:id/contacts','getContacts','post','addContacts','put','update','destroy','multer','util','path'];(function(_0x4d07cc,_0x587613){var _0x42de3b=function(_0x201f78){while(--_0x201f78){_0x4d07cc['push'](_0x4d07cc['shift']());}};_0x42de3b(++_0x587613);}(_0xf0d2,0x14d));var _0x2f0d=function(_0x21bf17,_0x166806){_0x21bf17=_0x21bf17-0x0;var _0x35bd98=_0xf0d2[_0x21bf17];return _0x35bd98;};'use strict';var multer=require(_0x2f0d('0x0'));var util=require(_0x2f0d('0x1'));var path=require(_0x2f0d('0x2'));var timeout=require(_0x2f0d('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x2f0d('0x4'));var auth=require(_0x2f0d('0x5'));var interaction=require(_0x2f0d('0x6'));var config=require(_0x2f0d('0x7'));var controller=require(_0x2f0d('0x8'));router[_0x2f0d('0x9')]('/',auth['isAuthenticated'](),controller[_0x2f0d('0xa')]);router[_0x2f0d('0x9')]('/describe',auth[_0x2f0d('0xb')](),controller['describe']);router['get'](_0x2f0d('0xc'),auth[_0x2f0d('0xb')](),controller[_0x2f0d('0xd')]);router[_0x2f0d('0x9')](_0x2f0d('0xe'),auth[_0x2f0d('0xb')](),controller[_0x2f0d('0xf')]);router[_0x2f0d('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2f0d('0x10')](_0x2f0d('0xe'),auth[_0x2f0d('0xb')](),controller[_0x2f0d('0x11')]);router[_0x2f0d('0x12')](_0x2f0d('0xc'),auth[_0x2f0d('0xb')](),controller[_0x2f0d('0x13')]);router['delete'](_0x2f0d('0xc'),auth['isAuthenticated'](),controller[_0x2f0d('0x14')]);module['exports']=router;
\ No newline at end of file
index 9c7d1b5..c9a8fdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4aa=['NOW','lodash','sequelize','exports','STRING','INTEGER'];(function(_0x418ebd,_0x48a6a2){var _0x2f13f8=function(_0x4c7fa9){while(--_0x4c7fa9){_0x418ebd['push'](_0x418ebd['shift']());}};_0x2f13f8(++_0x48a6a2);}(_0xe4aa,0x169));var _0xae4a=function(_0x4690c5,_0x99a638){_0x4690c5=_0x4690c5-0x0;var _0x256e6e=_0xe4aa[_0x4690c5];return _0x256e6e;};'use strict';var _=require(_0xae4a('0x0'));var Sequelize=require(_0xae4a('0x1'));module[_0xae4a('0x2')]={'firstName':{'type':Sequelize[_0xae4a('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0xae4a('0x3')]},'street':{'type':Sequelize[_0xae4a('0x3')]},'postalCode':{'type':Sequelize[_0xae4a('0x3')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0xae4a('0x3')]},'dateOfBirth':{'type':Sequelize['STRING']},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize[_0xae4a('0x3')]},'mobile':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0xae4a('0x3')]},'email':{'type':Sequelize['STRING']},'url':{'type':Sequelize[_0xae4a('0x3')]},'facebook':{'type':Sequelize[_0xae4a('0x3')]},'fb_data':{'type':Sequelize[_0xae4a('0x3')]},'twitter':{'type':Sequelize[_0xae4a('0x3')]},'skype':{'type':Sequelize['STRING']},'teams':{'type':Sequelize[_0xae4a('0x3')]},'viber':{'type':Sequelize[_0xae4a('0x3')]},'line':{'type':Sequelize[_0xae4a('0x3')]},'wechat':{'type':Sequelize[_0xae4a('0x3')]},'telegram':{'type':Sequelize[_0xae4a('0x3')]},'UserId':{'type':Sequelize[_0xae4a('0x4')]},'priority':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':Sequelize[_0xae4a('0x5')]}};
\ No newline at end of file
+var _0xdcdf=['exports','STRING','TEXT','INTEGER','UNSIGNED','NOW','lodash'];(function(_0xd839e7,_0x4209e9){var _0xc3cf23=function(_0x16ace2){while(--_0x16ace2){_0xd839e7['push'](_0xd839e7['shift']());}};_0xc3cf23(++_0x4209e9);}(_0xdcdf,0xe6));var _0xfdcd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdcdf[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xfdcd('0x0'));var Sequelize=require('sequelize');module[_0xfdcd('0x1')]={'firstName':{'type':Sequelize[_0xfdcd('0x2')],'allowNull':![]},'lastName':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0xfdcd('0x2')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0xfdcd('0x2')]},'country':{'type':Sequelize['STRING']},'dateOfBirth':{'type':Sequelize[_0xfdcd('0x2')]},'description':{'type':Sequelize[_0xfdcd('0x3')]},'phone':{'type':Sequelize[_0xfdcd('0x2')]},'mobile':{'type':Sequelize[_0xfdcd('0x2')]},'fax':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xfdcd('0x2')]},'url':{'type':Sequelize[_0xfdcd('0x2')]},'facebook':{'type':Sequelize[_0xfdcd('0x2')]},'fb_data':{'type':Sequelize['STRING']},'twitter':{'type':Sequelize['STRING']},'skype':{'type':Sequelize['STRING']},'teams':{'type':Sequelize['STRING']},'viber':{'type':Sequelize[_0xfdcd('0x2')]},'line':{'type':Sequelize[_0xfdcd('0x2')]},'wechat':{'type':Sequelize[_0xfdcd('0x2')]},'telegram':{'type':Sequelize['STRING']},'UserId':{'type':Sequelize['INTEGER']},'priority':{'type':Sequelize[_0xfdcd('0x4')](0x2)[_0xfdcd('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':Sequelize[_0xfdcd('0x6')]}};
\ No newline at end of file
index 0ad6093..1f707fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e42=['ReportAgentPreview','ChatQueueReport','FaxQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','each','duplicates','$or','spread','show','$and','format','cf_%d','omit','table','setFields','id\x20=\x20?','toParam','text','CmHopper','getTags','findOne','rawAttributes','options','setTags','ids','ContactId','include','getHopperHistories','CmHopperFinal','getJscriptySessions','JscriptySessionReport','includeAll','uploadCsv','binding_keys','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','server/files/tmp','file','filename','chmodSync','0777','child_process','fork','CompanyId','pid','upload','createReadStream','path','parse','meta','import','No\x20ListId\x20specified','binding','phone','../../components/import/cm/csv2','stringify','message','start\x20child\x20process\x20correctly!','exit','getJourney','mail','sms','fax','whatsapp','-createdAt','includes','toLowerCase','range','Invalid\x20date\x20for\x20range\x20from\x20filter','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','voice','source','destination','starttime','endtime','note','userDisposition','userSecondDisposition','userThirdDisposition','createdAt','VoiceCallReport','channel','fullname','startCase','chat','Website','Account','closed','disposition','secondDisposition','UserId','key','Owner','Tag','color','browserName','customerIp','deviceModel','osName','ratingType','ratingValue','referer','subject','openchannel','externalUrl','threadId','Interaction','findAndCountAll','all','flatten','sortBy','reverse','slice','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','defaults','redis','localhost','./cmContact.socket','register','sendStatus','end','status','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','describe','keys','length','startsWith','cf_','push','CmCustomField','trimStart','model','query','filters','attributes','intersection','hasOwnProperty','nolimit','order','sort','where','pick','select','field','from','cm_contacts','left_join','uc.CmContactId\x20=\x20c.id','cm_contact_has_tags','tools_tags','t.id\x20=\x20ct.TagId','c.deletedAt\x20IS\x20NULL','expr','search','parseSearch','sqlOperator','conditions','find','split','map','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','and','uc.UserId\x20=\x20?','value','dateOfBirth','fieldType','datetime','DATE','buildExpression','type','start','Contact','isEmpty','ListId','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','tag','isArray','filter','replace','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','group','Sequelize','QueryTypes','SELECT','c.id','DESC','t.id\x20IN\x20?','resolve','role','agent','getLists','c.ListId\x20IS\x20NULL','user','sequelize','toString','keyBy','merge','CmContact','fields','c.firstName','c.lastName','c.mobile','c.ListId','c.createdAt','c.deletedAt','c.CompanyId','TagIds','Tags','rows','catch','params','tags','displayName','findAll','columnName','alias','values','body','get','mergeWith','join','destroy','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsMessage','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmHopperHistory'];(function(_0x924e9d,_0x14156f){var _0x4af14a=function(_0x3da733){while(--_0x3da733){_0x924e9d['push'](_0x924e9d['shift']());}};_0x4af14a(++_0x14156f);}(_0x5e42,0x1aa));var _0x25e4=function(_0x55d8c5,_0x10287a){_0x55d8c5=_0x55d8c5-0x0;var _0x225ae5=_0x5e42[_0x55d8c5];return _0x225ae5;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x25e4('0x0'));var jsonpatch=require(_0x25e4('0x1'));var rp=require('request-promise');var moment=require(_0x25e4('0x2'));var BPromise=require(_0x25e4('0x3'));var Mustache=require(_0x25e4('0x4'));var util=require(_0x25e4('0x5'));var path=require('path');var sox=require(_0x25e4('0x6'));var csv=require('to-csv');var ejs=require(_0x25e4('0x7'));var fs=require('fs');var fs_extra=require(_0x25e4('0x8'));var _=require(_0x25e4('0x9'));var squel=require(_0x25e4('0xa'));var crypto=require(_0x25e4('0xb'));var jsforce=require(_0x25e4('0xc'));var deskjs=require(_0x25e4('0xd'));var toCsv=require(_0x25e4('0xe'));var querystring=require(_0x25e4('0xf'));var Papa=require(_0x25e4('0x10'));var Redis=require('ioredis');var authService=require(_0x25e4('0x11'));var qs=require(_0x25e4('0x12'));var as=require(_0x25e4('0x13'));var hardwareService=require(_0x25e4('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x25e4('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_[_0x25e4('0x16')](config[_0x25e4('0x17')],{'host':_0x25e4('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x25e4('0x17')]));require(_0x25e4('0x19'))[_0x25e4('0x1a')](socket);function respondWithStatusCode(_0xd999da,_0x5ec229){_0x5ec229=_0x5ec229||0xcc;return function(_0x57f846){if(_0x57f846){return _0xd999da[_0x25e4('0x1b')](_0x5ec229);}return _0xd999da['status'](_0x5ec229)[_0x25e4('0x1c')]();};}function respondWithResult(_0x18b7c6,_0x5751ee){_0x5751ee=_0x5751ee||0xc8;return function(_0x4cd7e7){if(_0x4cd7e7){return _0x18b7c6[_0x25e4('0x1d')](_0x5751ee)[_0x25e4('0x1e')](_0x4cd7e7);}};}function respondWithFilteredResult(_0x26120a,_0x441336){return function(_0x4c5b3b){if(_0x4c5b3b){var _0x705dbb=typeof _0x441336['offset']===_0x25e4('0x1f')&&typeof _0x441336[_0x25e4('0x20')]===_0x25e4('0x1f');var _0x307a2c=_0x4c5b3b[_0x25e4('0x21')];var _0x2312ba=_0x705dbb?0x0:_0x441336['offset'];var _0x584c9d=_0x705dbb?_0x4c5b3b[_0x25e4('0x21')]:_0x441336[_0x25e4('0x22')]+_0x441336[_0x25e4('0x20')];var _0x552d9b;if(_0x584c9d>=_0x307a2c){_0x584c9d=_0x307a2c;_0x552d9b=0xc8;}else{_0x552d9b=0xce;}_0x26120a['status'](_0x552d9b);return _0x26120a['set'](_0x25e4('0x23'),_0x2312ba+'-'+_0x584c9d+'/'+_0x307a2c)[_0x25e4('0x1e')](_0x4c5b3b);}return null;};}function patchUpdates(_0xed37e1){return function(_0xe703f5){try{jsonpatch[_0x25e4('0x24')](_0xe703f5,_0xed37e1,!![]);}catch(_0x17ebc2){return BPromise[_0x25e4('0x25')](_0x17ebc2);}return _0xe703f5[_0x25e4('0x26')]();};}function saveUpdates(_0x4af85d,_0x155300){return function(_0x1359af){if(_0x1359af){return _0x1359af[_0x25e4('0x27')](_0x4af85d)[_0x25e4('0x28')](function(_0x3463bb){return _0x3463bb;});}return null;};}function removeEntity(_0x1e2c6c,_0x2e288d){return function(_0x159537){if(_0x159537){return _0x159537['destroy']()[_0x25e4('0x28')](function(){_0x1e2c6c['status'](0xcc)[_0x25e4('0x1c')]();});}};}function handleEntityNotFound(_0x500450,_0xe42cf1){return function(_0x5693e9){if(!_0x5693e9){_0x500450[_0x25e4('0x1b')](0x194);}return _0x5693e9;};}function handleError(_0x1bbf8e,_0x43d56a){_0x43d56a=_0x43d56a||0x1f4;return function(_0x207cfd){logger[_0x25e4('0x29')](_0x207cfd[_0x25e4('0x2a')]);if(_0x207cfd['name']){delete _0x207cfd[_0x25e4('0x2b')];}_0x1bbf8e[_0x25e4('0x1d')](_0x43d56a)[_0x25e4('0x2c')](_0x207cfd);};}exports[_0x25e4('0x2d')]=function(_0x55f52f,_0x3a6063){var _0x1a4e2a={},_0x1cdb36={},_0x1b9cf8={'count':0x0,'rows':[]};return db['CmContact'][_0x25e4('0x2e')]()['then'](function(_0x3da49d){var _0x1e6233=[];for(var _0x35be74=0x0;_0x35be74<Object[_0x25e4('0x2f')](_0x3da49d)[_0x25e4('0x30')];_0x35be74++){var _0x74cbec=Object[_0x25e4('0x2f')](_0x3da49d)[_0x35be74];if(_[_0x25e4('0x31')](_0x74cbec,_0x25e4('0x32'))){_0x1e6233[_0x25e4('0x33')](db[_0x25e4('0x34')]['findOne']({'where':{'id':_[_0x25e4('0x35')](_0x74cbec,_0x25e4('0x32'))},'raw':!![]}));}}return BPromise['all'](_0x1e6233)[_0x25e4('0x28')](function(_0x208b73){for(var _0x129369=0x0;_0x129369<_0x208b73['length'];_0x129369++){if(_0x208b73[_0x129369]){var _0x524508=_0x25e4('0x32')+_0x208b73[_0x129369]['id'];var _0x14584d=_0x3da49d[_0x524508];_0x14584d['fieldType']=_0x208b73[_0x129369]['type'];}}return _0x3da49d;});})['then'](function(_0x1d776e){_0x1cdb36[_0x25e4('0x36')]=_['keys'](_0x1d776e);_0x1cdb36[_0x25e4('0x37')]=_[_0x25e4('0x2f')](_0x55f52f[_0x25e4('0x37')]);_0x1cdb36[_0x25e4('0x38')]=_['intersection'](_0x1cdb36['model'],_0x1cdb36[_0x25e4('0x37')]);_0x1a4e2a[_0x25e4('0x39')]=_[_0x25e4('0x3a')](_0x1cdb36[_0x25e4('0x36')],qs['fields'](_0x55f52f[_0x25e4('0x37')]['fields']));_0x1a4e2a[_0x25e4('0x39')]=_0x1a4e2a['attributes'][_0x25e4('0x30')]?_0x1a4e2a['attributes']:_0x1cdb36[_0x25e4('0x36')];if(!_0x55f52f[_0x25e4('0x37')][_0x25e4('0x3b')](_0x25e4('0x3c'))){_0x1a4e2a[_0x25e4('0x20')]=qs[_0x25e4('0x20')](_0x55f52f['query']['limit']);_0x1a4e2a[_0x25e4('0x22')]=qs[_0x25e4('0x22')](_0x55f52f[_0x25e4('0x37')][_0x25e4('0x22')]);}_0x1a4e2a[_0x25e4('0x3d')]=qs[_0x25e4('0x3e')](_0x55f52f['query'][_0x25e4('0x3e')]);_0x1a4e2a[_0x25e4('0x3f')]=qs[_0x25e4('0x38')](_[_0x25e4('0x40')](_0x55f52f['query'],_0x1cdb36[_0x25e4('0x38')]),_0x1d776e);var _0x358a21=[];var _0x260b5b=squel[_0x25e4('0x41')]()[_0x25e4('0x42')]('id')[_0x25e4('0x42')](_0x25e4('0x2b'))[_0x25e4('0x42')]('color')[_0x25e4('0x43')]('tools_tags');var _0x249ad9=squel[_0x25e4('0x41')]()[_0x25e4('0x43')](_0x25e4('0x44'),'c')[_0x25e4('0x45')]('cm_user_has_contacts','uc',_0x25e4('0x46'))['left_join'](_0x25e4('0x47'),'ct','ct.CmContactId\x20=\x20c.id')[_0x25e4('0x45')](_0x25e4('0x48'),'t',_0x25e4('0x49'))[_0x25e4('0x3f')](_0x25e4('0x4a'));var _0x3d4bad=squel[_0x25e4('0x4b')]();var _0x16a8fa=[];var _0x4afe2c=squel[_0x25e4('0x4b')]();var _0x5e3cc0;if(_0x55f52f['query'][_0x25e4('0x4c')]){_0x5e3cc0=as[_0x25e4('0x4d')](_0x55f52f[_0x25e4('0x37')]['search']);var _0x35f6ed=_0x5e3cc0[_0x25e4('0x4e')];for(var _0x152cce=0x0;_0x152cce<_0x5e3cc0[_0x25e4('0x4f')][_0x25e4('0x30')];_0x152cce++){var _0x28974c=_0x5e3cc0['conditions'][_0x152cce];var _0x59c220='c';var _0x149e62=_(_0x1d776e)['keys']()[_0x25e4('0x50')](function(_0x38aae2){return _0x38aae2===_0x28974c[_0x25e4('0x42')];});if(_0x149e62)_0x149e62=_0x1d776e[_0x28974c[_0x25e4('0x42')]];if(!_0x149e62){if(_0x28974c['field']==='Tag'){var _0x5a96a1=_0x28974c['value'][_0x25e4('0x51')](',')[_0x25e4('0x52')](function(_0x12edde){return Number(_0x12edde);});_0x5a96a1[_0x25e4('0x53')](function(_0x513bda){_0x4afe2c['or'](_0x25e4('0x54'),'%,'+_0x513bda+',%');});_0x16a8fa=_['union'](_0x16a8fa,_0x5a96a1);}else if(_0x28974c[_0x25e4('0x42')]===_0x25e4('0x55')){_0x3d4bad[_0x25e4('0x56')](_0x25e4('0x57'),_0x28974c[_0x25e4('0x58')]);}}else{if(_0x28974c[_0x25e4('0x42')]===_0x25e4('0x59')||_0x149e62[_0x25e4('0x5a')]===_0x25e4('0x5b'))_0x28974c['castTo']=_0x25e4('0x5c');var _0x31fdaf=as[_0x25e4('0x5d')](_0x59c220,_0x149e62[_0x25e4('0x5e')],_0x28974c);_0x3d4bad[_0x35f6ed](_0x31fdaf['text'],_0x31fdaf[_0x25e4('0x58')][_0x25e4('0x5f')],_0x31fdaf[_0x25e4('0x58')][_0x25e4('0x1c')]);}}}else{var _0x1ae8b9=_(Object[_0x25e4('0x2f')](_0x55f52f[_0x25e4('0x37')]))[_0x25e4('0x52')](function(_0x5020cf){return _0x1d776e[_0x25e4('0x3b')](_0x5020cf)?_0x5020cf:undefined;})['filter'](function(_0x1e0e2c){return!_['isNil'](_0x1e0e2c);})[_0x25e4('0x58')]();if(_0x55f52f['query'][_0x25e4('0x60')])_0x1ae8b9[_0x25e4('0x33')](_0x25e4('0x60'));if(!_[_0x25e4('0x61')](_0x1ae8b9)){_0x1ae8b9[_0x25e4('0x53')](function(_0x453584){if(_0x453584===_0x25e4('0x62')){_0x249ad9[_0x25e4('0x3f')](_0x25e4('0x63'),[][_0x25e4('0x64')](_0x55f52f['query'][_0x453584]));}else if(_0x453584===_0x25e4('0x60')){var _0x2256dd='%'+_0x55f52f[_0x25e4('0x37')][_0x453584]+'%';_0x249ad9[_0x25e4('0x3f')](_0x25e4('0x65'),_0x2256dd);}else{_0x249ad9[_0x25e4('0x3f')]('c.'+_0x453584+_0x25e4('0x66'),_0x55f52f['query'][_0x453584]);}});}if(_0x55f52f[_0x25e4('0x37')][_0x25e4('0x67')]){_0x16a8fa=_[_0x25e4('0x68')](_0x55f52f[_0x25e4('0x37')][_0x25e4('0x67')])?_0x55f52f[_0x25e4('0x37')]['tag']:new Array(_0x55f52f[_0x25e4('0x37')][_0x25e4('0x67')]);_0x16a8fa['forEach'](function(_0x295307){_0x4afe2c['or'](_0x25e4('0x54'),'%,'+_0x295307+',%');});}if(_0x55f52f[_0x25e4('0x37')]['filter']){var _0x46c9d2=_0x55f52f[_0x25e4('0x37')][_0x25e4('0x69')][_0x25e4('0x6a')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(_0x46c9d2['split']('\x20')[_0x25e4('0x30')]>0x1){_0x3d4bad['or'](_0x25e4('0x6b'),qs['getFullTextValue'](_0x46c9d2),null);}else{if(qs[_0x25e4('0x6c')](_0x46c9d2)){_0x3d4bad['or'](_0x25e4('0x6d'),_0x46c9d2+'%');_0x3d4bad['or'](_0x25e4('0x6e'),_0x46c9d2+'%');_0x3d4bad['or']('c.mobile\x20LIKE\x20?',_0x46c9d2+'%');_0x3d4bad['or'](_0x25e4('0x6f'),_0x46c9d2+'%');}else if(qs[_0x25e4('0x70')](_0x46c9d2)){_0x3d4bad['or'](_0x25e4('0x71'),_0x46c9d2+'%');}else{_0x3d4bad['or'](_0x25e4('0x72'),'%'+_0x46c9d2+'%');_0x3d4bad['or'](_0x25e4('0x73'),'%'+_0x46c9d2+'%');_0x3d4bad['or']('c.email\x20LIKE\x20?','%'+_0x46c9d2+'%');}}}}_0x249ad9['where'](_0x3d4bad);_0x249ad9[_0x25e4('0x74')]('c.id');var _0x48825b={'type':db[_0x25e4('0x75')][_0x25e4('0x76')][_0x25e4('0x77')],'raw':!![]};var _0x554f8f=_0x249ad9['clone']()['field'](_0x25e4('0x78'));if(_0x1a4e2a[_0x25e4('0x3d')]){_0x1a4e2a[_0x25e4('0x3d')][_0x25e4('0x53')](function(_0xc6a911){_0x249ad9[_0x25e4('0x3d')]('c.'+_0xc6a911[0x0],_0xc6a911[0x1]===_0x25e4('0x79')?![]:!![]);});}if(!_[_0x25e4('0x61')](_0x16a8fa)){_0x249ad9['having'](_0x4afe2c);_0x554f8f['where'](_0x25e4('0x7a'),_0x16a8fa);}BPromise[_0x25e4('0x7b')]()[_0x25e4('0x28')](function(){if(!_0x5e3cc0)return;if(_0x55f52f['user'][_0x25e4('0x7c')]!==_0x25e4('0x7d'))return;if(!_['some'](_0x5e3cc0[_0x25e4('0x4f')],[_0x25e4('0x42'),_0x25e4('0x55')])){return _0x55f52f['user'][_0x25e4('0x7e')]({'attributes':['id'],'raw':!![]})[_0x25e4('0x28')](function(_0xb13d25){if(_[_0x25e4('0x61')](_0xb13d25)){_0x554f8f[_0x25e4('0x3f')](_0x25e4('0x7f'));_0x249ad9['where'](_0x25e4('0x7f'));}else{_0x554f8f[_0x25e4('0x3f')](_0x25e4('0x63'),_[_0x25e4('0x52')](_0xb13d25,'id'));_0x249ad9[_0x25e4('0x3f')](_0x25e4('0x63'),_['map'](_0xb13d25,'id'));}});}})[_0x25e4('0x28')](function(){if(_0x55f52f[_0x25e4('0x80')][_0x25e4('0x7c')]===_0x25e4('0x7d')&&!_0x5e3cc0&&!_0x55f52f[_0x25e4('0x37')]['ListId'])return[];return db[_0x25e4('0x81')]['query'](_0x554f8f[_0x25e4('0x82')](),_0x48825b);})[_0x25e4('0x28')](function(_0x51e9cb){_0x1b9cf8['count']=_0x51e9cb['length'];if(_0x1b9cf8[_0x25e4('0x21')]===0x0)return[];return db['sequelize']['query'](_0x260b5b[_0x25e4('0x82')](),_0x48825b)[_0x25e4('0x28')](function(_0x135d25){_0x358a21=_[_0x25e4('0x83')](_0x135d25,'id');_0x48825b=_[_0x25e4('0x84')](_0x48825b,{'model':db[_0x25e4('0x85')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x55f52f[_0x25e4('0x37')][_0x25e4('0x86')]){_0x1a4e2a[_0x25e4('0x39')][_0x25e4('0x53')](function(_0x13d588){_0x249ad9['field']('c.'+_0x13d588);});}else{_0x249ad9['field'](_0x25e4('0x78'));_0x249ad9['field'](_0x25e4('0x87'));_0x249ad9[_0x25e4('0x42')](_0x25e4('0x88'));_0x249ad9[_0x25e4('0x42')]('c.phone');_0x249ad9[_0x25e4('0x42')](_0x25e4('0x89'));_0x249ad9[_0x25e4('0x42')]('c.fax');_0x249ad9[_0x25e4('0x42')]('c.email');_0x249ad9[_0x25e4('0x42')](_0x25e4('0x8a'));_0x249ad9['field'](_0x25e4('0x8b'));_0x249ad9[_0x25e4('0x42')](_0x25e4('0x8c'));_0x249ad9[_0x25e4('0x42')](_0x25e4('0x8d'));_0x249ad9['field']('GROUP_CONCAT(DISTINCT\x20t.id)',_0x25e4('0x8e'));}if(_0x1a4e2a[_0x25e4('0x20')])_0x249ad9[_0x25e4('0x20')](_0x1a4e2a[_0x25e4('0x20')]);if(_0x1a4e2a[_0x25e4('0x22')])_0x249ad9[_0x25e4('0x22')](_0x1a4e2a[_0x25e4('0x22')]);return db[_0x25e4('0x81')][_0x25e4('0x37')](_0x249ad9[_0x25e4('0x82')](),_0x48825b);});})[_0x25e4('0x28')](function(_0x134179){_0x134179[_0x25e4('0x53')](function(_0x23e070){if(_0x23e070['TagIds']){_0x23e070[_0x25e4('0x8f')]=[];_0x23e070[_0x25e4('0x8e')][_0x25e4('0x51')](',')['forEach'](function(_0x5e96d8){_0x23e070[_0x25e4('0x8f')][_0x25e4('0x33')](_0x358a21[_0x5e96d8]);});}delete _0x23e070[_0x25e4('0x8e')];});_0x1b9cf8[_0x25e4('0x90')]=_0x134179;return _0x1b9cf8;})['then'](respondWithFilteredResult(_0x3a6063,_0x1a4e2a));})[_0x25e4('0x91')](handleError(_0x3a6063,null));};exports['destroy']=function(_0x29c40f,_0x234279){return db[_0x25e4('0x85')][_0x25e4('0x50')]({'where':{'id':_0x29c40f[_0x25e4('0x92')]['id']}})['then'](handleEntityNotFound(_0x234279,null))[_0x25e4('0x28')](removeEntity(_0x234279,null))[_0x25e4('0x91')](handleError(_0x234279,null));};exports[_0x25e4('0x2e')]=function(_0x5d577b,_0x23020c){return db[_0x25e4('0x85')]['describe']()[_0x25e4('0x28')](function(_0x21c458){delete _0x21c458[_0x25e4('0x93')];for(var _0x5df22f=0x0;_0x5df22f<Object[_0x25e4('0x2f')](_0x21c458)[_0x25e4('0x30')];_0x5df22f++){var _0x58a603=Object[_0x25e4('0x2f')](_0x21c458)[_0x5df22f];if(!_[_0x25e4('0x31')](_0x58a603,_0x25e4('0x32'))){_0x21c458[_0x58a603]['columnName']=_0x58a603;_0x21c458[_0x58a603][_0x25e4('0x94')]=_0x58a603;}}return _0x21c458;})[_0x25e4('0x28')](function(_0x36ef2c){var _0x12190a={'where':{'$or':[{'ListId':_0x5d577b['query']['id']},{'ListId':null}]},'raw':!![]};return db['CmCustomField'][_0x25e4('0x95')](_0x12190a)[_0x25e4('0x28')](function(_0x3936ee){for(var _0x55dbb1=0x0;_0x55dbb1<_0x3936ee[_0x25e4('0x30')];_0x55dbb1++){var _0x14404e='cf_'+_0x3936ee[_0x55dbb1]['id'];_0x36ef2c[_0x14404e][_0x25e4('0x96')]=_0x14404e;_0x36ef2c[_0x14404e]['displayName']=_0x3936ee[_0x55dbb1][_0x25e4('0x97')];_0x36ef2c[_0x14404e]['custom']={'type':_0x3936ee[_0x55dbb1][_0x25e4('0x5e')],'values':_0x3936ee[_0x55dbb1][_0x25e4('0x98')]};}Object[_0x25e4('0x2f')](_0x36ef2c)[_0x25e4('0x53')](function(_0x1fa31e){if(!_0x36ef2c[_0x1fa31e][_0x25e4('0x3b')]('columnName')){delete _0x36ef2c[_0x1fa31e];}});return _0x36ef2c;});})[_0x25e4('0x28')](respondWithResult(_0x23020c,null))[_0x25e4('0x91')](handleError(_0x23020c,null));};exports['merge']=function(_0x11c049,_0x14e9a0){var _0x35b751;var _0x519078;var _0x4bda9e;if(_0x11c049[_0x25e4('0x99')]['id']){delete _0x11c049[_0x25e4('0x99')]['id'];}return db[_0x25e4('0x85')][_0x25e4('0x95')]({'where':{'id':[_0x11c049['body']['to'],_0x11c049[_0x25e4('0x99')][_0x25e4('0x43')]]}})[_0x25e4('0x28')](function(_0x221cb8){if(_0x221cb8){if(_0x221cb8[_0x25e4('0x30')]!==0x2){return null;}_0x221cb8[0x0]=_0x221cb8[0x0][_0x25e4('0x9a')]({'plain':!![]});_0x221cb8[0x1]=_0x221cb8[0x1][_0x25e4('0x9a')]({'plain':!![]});delete _0x221cb8[0x0]['id'];delete _0x221cb8[0x1]['id'];return _[_0x25e4('0x9b')](_0x221cb8[0x0],_0x221cb8[0x1],function(_0x577507,_0x10ba12){if(Array[_0x25e4('0x68')](_0x10ba12)&&!_0x10ba12[_0x25e4('0x30')]){return _0x577507;}else if(!_0x10ba12){return _0x577507;}});}})[_0x25e4('0x28')](handleEntityNotFound(_0x14e9a0,null))[_0x25e4('0x28')](function(_0xb41811){if(_0xb41811){if(_0xb41811[_0x25e4('0x93')]&&_['isArray'](_0xb41811['tags'])){_0xb41811[_0x25e4('0x93')]=_0xb41811['tags'][_0x25e4('0x9c')]();}logger['info']('[CmContact][merge]\x20to\x20%s\x20from\x20%s',_0x11c049[_0x25e4('0x99')]['to'],_0x11c049['body'][_0x25e4('0x43')]);return db['CmHopper'][_0x25e4('0x9d')]({'where':{'ContactId':[_0x11c049[_0x25e4('0x99')]['to'],_0x11c049[_0x25e4('0x99')][_0x25e4('0x43')]]}})[_0x25e4('0x28')](function(_0x18f13a){logger['info'](_0x25e4('0x9e'),_0x18f13a);return db[_0x25e4('0x9f')][_0x25e4('0x9d')]({'where':{'ContactId':[_0x11c049[_0x25e4('0x99')]['to'],_0x11c049[_0x25e4('0x99')][_0x25e4('0x43')]]}})['then'](function(_0x443fa8){logger['info'](_0x25e4('0xa0'),_0x443fa8);return db[_0x25e4('0x85')][_0x25e4('0xa1')](_0xb41811);});});}})[_0x25e4('0x28')](function(_0x43467f){if(_0x43467f){_0x35b751=_0x43467f;_0x519078={'ContactId':_0x35b751['id']};_0x4bda9e={'where':{'ContactId':[_0x11c049['body']['to'],_0x11c049['body'][_0x25e4('0x43')]]}};return db[_0x25e4('0xa2')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})['then'](function(){if(_0x35b751){return db[_0x25e4('0xa3')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})['then'](function(){if(_0x35b751){return db[_0x25e4('0xa4')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})['then'](function(){if(_0x35b751){return db[_0x25e4('0xa5')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0xa6')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})['then'](function(){if(_0x35b751){return db[_0x25e4('0xa5')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})['then'](function(){if(_0x35b751){return db[_0x25e4('0xa6')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db['SmsInteraction'][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0xa7')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db['FaxInteraction'][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})['then'](function(){if(_0x35b751){return db[_0x25e4('0xa8')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0xa9')]['update'](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0xaa')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db['CmHopperFinal'][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0xab')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0xac')]['update'](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db['VoiceCallReport'][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0xad')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0xae')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0xaf')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0xb0')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0xb1')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db['JscriptySessionReport']['update'](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0xb2')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})['then'](function(){if(_0x35b751){return db[_0x25e4('0xb3')]['update'](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0xb4')][_0x25e4('0x27')](_0x519078,_0x4bda9e);}})[_0x25e4('0x28')](function(){if(_0x35b751){return db[_0x25e4('0x85')][_0x25e4('0x9d')]({'where':{'id':[_0x11c049[_0x25e4('0x99')]['to'],_0x11c049['body']['from']]}});}})['then'](function(){if(_0x35b751){return _0x35b751;}})['then'](respondWithResult(_0x14e9a0,null))[_0x25e4('0x91')](handleError(_0x14e9a0,null));};exports[_0x25e4('0xa1')]=function(_0x18d603,_0x41dc75){return db[_0x25e4('0x85')][_0x25e4('0x2e')]()[_0x25e4('0x28')](function(_0x52a366){if(_0x18d603[_0x25e4('0x99')][_0x25e4('0x93')]&&_['isArray'](_0x18d603[_0x25e4('0x99')][_0x25e4('0x93')])){if(_0x18d603[_0x25e4('0x99')][_0x25e4('0x93')]['length']){_0x18d603[_0x25e4('0x99')]['tags']=_0x18d603[_0x25e4('0x99')][_0x25e4('0x93')][_0x25e4('0x9c')](';')+';';}else{_0x18d603[_0x25e4('0x99')][_0x25e4('0x93')]=null;}}else{_0x18d603[_0x25e4('0x99')][_0x25e4('0x93')]=null;}return db[_0x25e4('0x85')][_0x25e4('0xa1')](_0x18d603[_0x25e4('0x99')],{'fields':_[_0x25e4('0x2f')](_0x52a366),'raw':!![]});})['then'](respondWithResult(_0x41dc75,0xc9))[_0x25e4('0x91')](handleError(_0x41dc75,null));};exports['bulkCreate']=function(_0x5873f5,_0x5b4cc8){var _0x5ba645=[];var _0x3b288a=0x0;var _0x2e1ff4=0x0;var _0x31ea5b=0x0;return db['CmContact'][_0x25e4('0x2e')]()[_0x25e4('0x28')](function(_0x2f97d1){return BPromise[_0x25e4('0xb5')](_0x5873f5['body'],function(_0xed56b9){var _0x495700={'where':{'$or':[]},'defaults':_0xed56b9,'fields':_[_0x25e4('0x2f')](_0x2f97d1),'raw':!![]};if(_0xed56b9[_0x25e4('0xb6')]){for(var _0x61198c=0x0;_0x61198c<_0xed56b9[_0x25e4('0xb6')][_0x25e4('0x30')];_0x61198c++){var _0x475d56={};_0x475d56[_0xed56b9[_0x25e4('0xb6')][_0x61198c]]=_0xed56b9[_0xed56b9[_0x25e4('0xb6')][_0x61198c]];_0x495700['where'][_0x25e4('0xb7')][_0x25e4('0x33')](_0x475d56);}_0x495700['where'][_0x25e4('0x62')]=_0xed56b9[_0x25e4('0x62')];}return db[_0x25e4('0x85')]['findOrCreate'](_0x495700)[_0x25e4('0xb8')](function(_0x1218e1,_0x10928d){if(_0x10928d){_0x3b288a++;}else{_0x31ea5b++;}})[_0x25e4('0x91')](function(_0x4b1115){console[_0x25e4('0x29')](_0x4b1115);_0x2e1ff4++;});});})[_0x25e4('0x28')](function(_0x1a994e){if(_0x1a994e){return{'success':_0x3b288a,'failure':_0x2e1ff4,'duplicates':_0x31ea5b};}})['then'](respondWithResult(_0x5b4cc8,0xc9))[_0x25e4('0x91')](handleError(_0x5b4cc8,null));};exports[_0x25e4('0xb9')]=function(_0x4a0414,_0x4aee1c,_0x479265){var _0x442c3e;return db['CmContact']['describe']()['then'](function(_0x528748){return db['CmContact'][_0x25e4('0x50')]({'where':{'id':_0x4a0414[_0x25e4('0x92')]['id']},'include':[{'model':db['Tag'],'as':_0x25e4('0x8f'),'attributes':['id',_0x25e4('0x2b'),'color'],'required':_0x4a0414[_0x25e4('0x37')][_0x25e4('0x67')]?!![]:![]}],'attributes':_[_0x25e4('0x2f')](_0x528748)});})[_0x25e4('0x28')](function(_0xaa1453){_0x442c3e=_0xaa1453[_0x25e4('0x9a')]({'plain':!![]});var _0x2dc007={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0xaa1453&&_0xaa1453[_0x25e4('0x62')]){if(_0xaa1453['ListId']){_0x2dc007['where'][_0x25e4('0xba')]['push']({'ListId':{'$ne':_0xaa1453[_0x25e4('0x62')]}});}}return db[_0x25e4('0x34')]['findAll'](_0x2dc007);})[_0x25e4('0x28')](function(_0x1fc279){return _['omit'](_0x442c3e,_['map'](_0x1fc279,function(_0x5ac5b3){return util[_0x25e4('0xbb')](_0x25e4('0xbc'),_0x5ac5b3['id']);}));})[_0x25e4('0x28')](handleEntityNotFound(_0x4aee1c,null))[_0x25e4('0x28')](respondWithResult(_0x4aee1c,null))[_0x25e4('0x91')](handleError(_0x4aee1c,null));};exports[_0x25e4('0x27')]=function(_0x3cf25d,_0x160642){var _0x5c2862;if(_0x3cf25d[_0x25e4('0x99')]['id']){delete _0x3cf25d[_0x25e4('0x99')]['id'];}return db['CmContact']['find']({'where':{'id':_0x3cf25d[_0x25e4('0x92')]['id']}})['then'](handleEntityNotFound(_0x160642,null))['then'](saveUpdates(_0x3cf25d[_0x25e4('0x99')],null))['then'](function(_0x246bff){_0x5c2862=_0x246bff;var _0x383419={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x246bff&&_0x246bff['ListId']){if(_0x246bff['ListId']){_0x383419[_0x25e4('0x3f')][_0x25e4('0xba')]['push']({'ListId':{'$ne':_0x246bff['ListId']}});}}return db[_0x25e4('0x34')]['findAll'](_0x383419);})[_0x25e4('0x28')](function(_0x177256){if(_0x177256){return _[_0x25e4('0xbd')](_['pickBy'](_0x3cf25d[_0x25e4('0x99')],function(_0x5499f1,_0x329bd1){return _[_0x25e4('0x31')](_0x329bd1,'cf_');}),_['map'](_0x177256,function(_0x5de4ca){return util[_0x25e4('0xbb')](_0x25e4('0xbc'),_0x5de4ca['id']);}));}})['then'](function(_0x57c723){if(_0x57c723&&!_[_0x25e4('0x61')](_0x57c723)){var _0x5b9a61=squel[_0x25e4('0x27')]()[_0x25e4('0xbe')](_0x25e4('0x44'))[_0x25e4('0xbf')](_0x57c723)['where'](_0x25e4('0xc0'),_0x3cf25d[_0x25e4('0x92')]['id'])[_0x25e4('0xc1')]();return db['sequelize'][_0x25e4('0x37')](_0x5b9a61[_0x25e4('0xc2')],{'replacements':_0x5b9a61[_0x25e4('0x98')]});}})['then'](function(){if(_0x3cf25d[_0x25e4('0x99')]['phone']&&_0x5c2862){return db[_0x25e4('0xc3')]['update']({'phone':_0x3cf25d[_0x25e4('0x99')]['phone']},{'where':{'ContactId':_0x5c2862['id']}});}})[_0x25e4('0x28')](function(){return _0x5c2862;})[_0x25e4('0x28')](respondWithResult(_0x160642,null))[_0x25e4('0x91')](handleError(_0x160642,null));};exports[_0x25e4('0xc4')]=function(_0x494b0a,_0x3970d7,_0x186e09){var _0x49c34e={};var _0x40e101={};var _0x596b32;var _0x500a1e;return db[_0x25e4('0x85')][_0x25e4('0xc5')]({'where':{'id':_0x494b0a[_0x25e4('0x92')]['id']}})['then'](handleEntityNotFound(_0x3970d7,null))[_0x25e4('0x28')](function(_0x31df03){if(_0x31df03){_0x596b32=_0x31df03;_0x40e101[_0x25e4('0x36')]=_[_0x25e4('0x2f')](db['Tag'][_0x25e4('0xc6')]);_0x40e101[_0x25e4('0x37')]=_[_0x25e4('0x2f')](_0x494b0a['query']);_0x40e101[_0x25e4('0x38')]=_[_0x25e4('0x3a')](_0x40e101[_0x25e4('0x36')],_0x40e101['query']);_0x49c34e[_0x25e4('0x39')]=_[_0x25e4('0x3a')](_0x40e101['model'],qs[_0x25e4('0x86')](_0x494b0a['query']['fields']));_0x49c34e[_0x25e4('0x39')]=_0x49c34e[_0x25e4('0x39')][_0x25e4('0x30')]?_0x49c34e[_0x25e4('0x39')]:_0x40e101['model'];_0x49c34e[_0x25e4('0x3d')]=qs['sort'](_0x494b0a[_0x25e4('0x37')]['sort']);_0x49c34e[_0x25e4('0x3f')]=qs[_0x25e4('0x38')](_['pick'](_0x494b0a[_0x25e4('0x37')],_0x40e101[_0x25e4('0x38')]));if(_0x494b0a[_0x25e4('0x37')]['filter']){_0x49c34e[_0x25e4('0x3f')]=_[_0x25e4('0x84')](_0x49c34e[_0x25e4('0x3f')],{'$or':_[_0x25e4('0x52')](_0x49c34e[_0x25e4('0x39')],function(_0x145ac4){var _0x5ce186={};_0x5ce186[_0x145ac4]={'$like':'%'+_0x494b0a[_0x25e4('0x37')]['filter']+'%'};return _0x5ce186;})});}_0x49c34e=_[_0x25e4('0x84')]({},_0x49c34e,_0x494b0a[_0x25e4('0xc7')]);return _0x596b32[_0x25e4('0xc4')](_0x49c34e);}})[_0x25e4('0x28')](function(_0x1da245){if(_0x1da245){_0x500a1e=_0x1da245[_0x25e4('0x30')];if(!_0x494b0a['query'][_0x25e4('0x3b')](_0x25e4('0x3c'))){_0x49c34e[_0x25e4('0x20')]=qs[_0x25e4('0x20')](_0x494b0a[_0x25e4('0x37')][_0x25e4('0x20')]);_0x49c34e[_0x25e4('0x22')]=qs['offset'](_0x494b0a['query'][_0x25e4('0x22')]);}return _0x596b32[_0x25e4('0xc4')](_0x49c34e);}})[_0x25e4('0x28')](function(_0x55ea7f){if(_0x55ea7f){return _0x55ea7f?{'count':_0x500a1e,'rows':_0x55ea7f}:null;}})[_0x25e4('0x28')](respondWithResult(_0x3970d7,null))[_0x25e4('0x91')](handleError(_0x3970d7,null));};exports[_0x25e4('0xc8')]=function(_0x3fe040,_0x1f559c,_0x56c613){if(_0x3fe040[_0x25e4('0x99')]['id']){delete _0x3fe040[_0x25e4('0x99')]['id'];}return db[_0x25e4('0x85')]['findOne']({'where':{'id':_0x3fe040[_0x25e4('0x92')]['id']}})['then'](handleEntityNotFound(_0x1f559c,null))[_0x25e4('0x28')](function(_0x464cb4){if(_0x464cb4){return _0x464cb4['setTags'](_0x3fe040[_0x25e4('0x99')][_0x25e4('0xc9')]||[]);}return null;})[_0x25e4('0x28')](respondWithResult(_0x1f559c,null))[_0x25e4('0x91')](handleError(_0x1f559c,null));};exports['getHoppers']=function(_0x1da251,_0x24922e,_0x4ecde3){var _0x1eeb10={'raw':![],'where':{}};var _0x276e0a={};var _0x41642e={'count':0x0,'rows':[]};return db['CmContact'][_0x25e4('0xc5')]({'where':{'id':_0x1da251[_0x25e4('0x92')]['id']}})[_0x25e4('0x28')](handleEntityNotFound(_0x24922e,null))['then'](function(_0x1ae3aa){if(_0x1ae3aa){_0x276e0a[_0x25e4('0x36')]=_[_0x25e4('0x2f')](db[_0x25e4('0xc3')][_0x25e4('0xc6')]);_0x276e0a[_0x25e4('0x37')]=_[_0x25e4('0x2f')](_0x1da251[_0x25e4('0x37')]);_0x276e0a[_0x25e4('0x38')]=_[_0x25e4('0x3a')](_0x276e0a[_0x25e4('0x36')],_0x276e0a['query']);_0x1eeb10[_0x25e4('0x39')]=_[_0x25e4('0x3a')](_0x276e0a['model'],qs[_0x25e4('0x86')](_0x1da251[_0x25e4('0x37')][_0x25e4('0x86')]));_0x1eeb10[_0x25e4('0x39')]=_0x1eeb10[_0x25e4('0x39')][_0x25e4('0x30')]?_0x1eeb10[_0x25e4('0x39')]:_0x276e0a[_0x25e4('0x36')];if(!_0x1da251[_0x25e4('0x37')][_0x25e4('0x3b')](_0x25e4('0x3c'))){_0x1eeb10[_0x25e4('0x20')]=qs[_0x25e4('0x20')](_0x1da251[_0x25e4('0x37')][_0x25e4('0x20')]);_0x1eeb10['offset']=qs[_0x25e4('0x22')](_0x1da251[_0x25e4('0x37')][_0x25e4('0x22')]);}_0x1eeb10[_0x25e4('0x3d')]=qs[_0x25e4('0x3e')](_0x1da251['query']['sort']);_0x1eeb10[_0x25e4('0x3f')]=qs[_0x25e4('0x38')](_[_0x25e4('0x40')](_0x1da251['query'],_0x276e0a[_0x25e4('0x38')]));_0x1eeb10[_0x25e4('0x3f')][_0x25e4('0xca')]=_0x1ae3aa['id'];if(_0x1da251[_0x25e4('0x37')][_0x25e4('0x69')]){_0x1eeb10[_0x25e4('0x3f')]=_['merge'](_0x1eeb10[_0x25e4('0x3f')],{'$or':_['map'](_0x1eeb10[_0x25e4('0x39')],function(_0x495de1){var _0x502338={};_0x502338[_0x495de1]={'$like':'%'+_0x1da251['query'][_0x25e4('0x69')]+'%'};return _0x502338;})});}_0x1eeb10=_['merge']({},_0x1eeb10,_0x1da251[_0x25e4('0xc7')]);return db[_0x25e4('0xc3')][_0x25e4('0x21')]({'where':_0x1eeb10[_0x25e4('0x3f')]})[_0x25e4('0x28')](function(_0x2f72cc){_0x41642e[_0x25e4('0x21')]=_0x2f72cc;if(_0x1da251[_0x25e4('0x37')]['includeAll']){_0x1eeb10[_0x25e4('0xcb')]=[{'all':!![]}];}return db[_0x25e4('0xc3')][_0x25e4('0x95')](_0x1eeb10);})[_0x25e4('0x28')](function(_0x1846b6){_0x41642e['rows']=_0x1846b6;return _0x41642e;});}})[_0x25e4('0x28')](respondWithFilteredResult(_0x24922e,_0x1eeb10))[_0x25e4('0x91')](handleError(_0x24922e,null));};exports[_0x25e4('0xcc')]=function(_0x46193f,_0x4c1cd6,_0x1e49a6){var _0x5df317={'raw':!![],'where':{}};var _0x5dcfaa={};var _0x3e7d27={'count':0x0,'rows':[]};return db[_0x25e4('0x85')][_0x25e4('0xc5')]({'where':{'id':_0x46193f[_0x25e4('0x92')]['id']}})[_0x25e4('0x28')](handleEntityNotFound(_0x4c1cd6,null))[_0x25e4('0x28')](function(_0x5d0067){if(_0x5d0067){_0x5dcfaa[_0x25e4('0x36')]=_[_0x25e4('0x2f')](db[_0x25e4('0xab')]['rawAttributes']);_0x5dcfaa[_0x25e4('0x37')]=_[_0x25e4('0x2f')](_0x46193f[_0x25e4('0x37')]);_0x5dcfaa[_0x25e4('0x38')]=_[_0x25e4('0x3a')](_0x5dcfaa[_0x25e4('0x36')],_0x5dcfaa[_0x25e4('0x37')]);_0x5df317[_0x25e4('0x39')]=_['intersection'](_0x5dcfaa[_0x25e4('0x36')],qs[_0x25e4('0x86')](_0x46193f[_0x25e4('0x37')][_0x25e4('0x86')]));_0x5df317[_0x25e4('0x39')]=_0x5df317[_0x25e4('0x39')]['length']?_0x5df317[_0x25e4('0x39')]:_0x5dcfaa[_0x25e4('0x36')];if(!_0x46193f[_0x25e4('0x37')][_0x25e4('0x3b')](_0x25e4('0x3c'))){_0x5df317[_0x25e4('0x20')]=qs[_0x25e4('0x20')](_0x46193f[_0x25e4('0x37')]['limit']);_0x5df317[_0x25e4('0x22')]=qs['offset'](_0x46193f['query'][_0x25e4('0x22')]);}_0x5df317[_0x25e4('0x3d')]=qs[_0x25e4('0x3e')](_0x46193f[_0x25e4('0x37')][_0x25e4('0x3e')]);_0x5df317['where']=qs[_0x25e4('0x38')](_[_0x25e4('0x40')](_0x46193f[_0x25e4('0x37')],_0x5dcfaa[_0x25e4('0x38')]));_0x5df317[_0x25e4('0x3f')][_0x25e4('0xca')]=_0x5d0067['id'];if(_0x46193f['query'][_0x25e4('0x69')]){_0x5df317[_0x25e4('0x3f')]=_[_0x25e4('0x84')](_0x5df317['where'],{'$or':_[_0x25e4('0x52')](_0x5df317[_0x25e4('0x39')],function(_0x345ba3){var _0x409b00={};_0x409b00[_0x345ba3]={'$like':'%'+_0x46193f['query'][_0x25e4('0x69')]+'%'};return _0x409b00;})});}_0x5df317=_[_0x25e4('0x84')]({},_0x5df317,_0x46193f[_0x25e4('0xc7')]);return db[_0x25e4('0xab')][_0x25e4('0x21')]({'where':_0x5df317[_0x25e4('0x3f')]})[_0x25e4('0x28')](function(_0x4f48d8){_0x3e7d27[_0x25e4('0x21')]=_0x4f48d8;if(_0x46193f[_0x25e4('0x37')]['includeAll']){_0x5df317[_0x25e4('0xcb')]=[{'all':!![]}];}return db[_0x25e4('0xab')][_0x25e4('0x95')](_0x5df317);})['then'](function(_0x44be72){_0x3e7d27[_0x25e4('0x90')]=_0x44be72;return _0x3e7d27;});}})[_0x25e4('0x28')](respondWithFilteredResult(_0x4c1cd6,_0x5df317))[_0x25e4('0x91')](handleError(_0x4c1cd6,null));};exports['getHopperFinals']=function(_0x52ecdc,_0x4769a0,_0x185ee3){var _0x31abfc={'raw':!![],'where':{}};var _0x35d53c={};var _0x4dc6f2={'count':0x0,'rows':[]};return db[_0x25e4('0x85')][_0x25e4('0xc5')]({'where':{'id':_0x52ecdc['params']['id']}})[_0x25e4('0x28')](handleEntityNotFound(_0x4769a0,null))[_0x25e4('0x28')](function(_0x7d8780){if(_0x7d8780){_0x35d53c[_0x25e4('0x36')]=_['keys'](db['CmHopperFinal']['rawAttributes']);_0x35d53c[_0x25e4('0x37')]=_[_0x25e4('0x2f')](_0x52ecdc['query']);_0x35d53c[_0x25e4('0x38')]=_[_0x25e4('0x3a')](_0x35d53c[_0x25e4('0x36')],_0x35d53c[_0x25e4('0x37')]);_0x31abfc[_0x25e4('0x39')]=_['intersection'](_0x35d53c[_0x25e4('0x36')],qs['fields'](_0x52ecdc['query']['fields']));_0x31abfc[_0x25e4('0x39')]=_0x31abfc[_0x25e4('0x39')][_0x25e4('0x30')]?_0x31abfc['attributes']:_0x35d53c[_0x25e4('0x36')];if(!_0x52ecdc['query'][_0x25e4('0x3b')](_0x25e4('0x3c'))){_0x31abfc['limit']=qs['limit'](_0x52ecdc[_0x25e4('0x37')][_0x25e4('0x20')]);_0x31abfc[_0x25e4('0x22')]=qs[_0x25e4('0x22')](_0x52ecdc[_0x25e4('0x37')][_0x25e4('0x22')]);}_0x31abfc[_0x25e4('0x3d')]=qs[_0x25e4('0x3e')](_0x52ecdc[_0x25e4('0x37')][_0x25e4('0x3e')]);_0x31abfc['where']=qs[_0x25e4('0x38')](_[_0x25e4('0x40')](_0x52ecdc[_0x25e4('0x37')],_0x35d53c[_0x25e4('0x38')]));_0x31abfc[_0x25e4('0x3f')][_0x25e4('0xca')]=_0x7d8780['id'];if(_0x52ecdc[_0x25e4('0x37')][_0x25e4('0x69')]){_0x31abfc[_0x25e4('0x3f')]=_[_0x25e4('0x84')](_0x31abfc[_0x25e4('0x3f')],{'$or':_[_0x25e4('0x52')](_0x31abfc['attributes'],function(_0x35a8a2){var _0x11e9c3={};_0x11e9c3[_0x35a8a2]={'$like':'%'+_0x52ecdc[_0x25e4('0x37')][_0x25e4('0x69')]+'%'};return _0x11e9c3;})});}_0x31abfc=_['merge']({},_0x31abfc,_0x52ecdc[_0x25e4('0xc7')]);return db[_0x25e4('0xcd')][_0x25e4('0x21')]({'where':_0x31abfc['where']})[_0x25e4('0x28')](function(_0x23c09c){_0x4dc6f2['count']=_0x23c09c;if(_0x52ecdc[_0x25e4('0x37')]['includeAll']){_0x31abfc[_0x25e4('0xcb')]=[{'all':!![]}];}return db[_0x25e4('0xcd')][_0x25e4('0x95')](_0x31abfc);})[_0x25e4('0x28')](function(_0x166b85){_0x4dc6f2[_0x25e4('0x90')]=_0x166b85;return _0x4dc6f2;});}})['then'](respondWithFilteredResult(_0x4769a0,_0x31abfc))[_0x25e4('0x91')](handleError(_0x4769a0,null));};exports[_0x25e4('0xce')]=function(_0x5cb123,_0x222333,_0x347e5a){var _0x255319={'raw':!![],'where':{}};var _0x4eb45e={};var _0x34630c={'count':0x0,'rows':[]};return db[_0x25e4('0x85')]['findOne']({'where':{'id':_0x5cb123[_0x25e4('0x92')]['id']}})['then'](handleEntityNotFound(_0x222333,null))[_0x25e4('0x28')](function(_0x142454){if(_0x142454){_0x4eb45e[_0x25e4('0x36')]=_[_0x25e4('0x2f')](db['JscriptySessionReport'][_0x25e4('0xc6')]);_0x4eb45e[_0x25e4('0x37')]=_['keys'](_0x5cb123[_0x25e4('0x37')]);_0x4eb45e[_0x25e4('0x38')]=_[_0x25e4('0x3a')](_0x4eb45e[_0x25e4('0x36')],_0x4eb45e[_0x25e4('0x37')]);_0x255319[_0x25e4('0x39')]=_[_0x25e4('0x3a')](_0x4eb45e[_0x25e4('0x36')],qs[_0x25e4('0x86')](_0x5cb123['query'][_0x25e4('0x86')]));_0x255319['attributes']=_0x255319[_0x25e4('0x39')][_0x25e4('0x30')]?_0x255319['attributes']:_0x4eb45e[_0x25e4('0x36')];if(!_0x5cb123[_0x25e4('0x37')][_0x25e4('0x3b')](_0x25e4('0x3c'))){_0x255319[_0x25e4('0x20')]=qs['limit'](_0x5cb123[_0x25e4('0x37')]['limit']);_0x255319['offset']=qs[_0x25e4('0x22')](_0x5cb123[_0x25e4('0x37')][_0x25e4('0x22')]);}_0x255319[_0x25e4('0x3d')]=qs[_0x25e4('0x3e')](_0x5cb123['query'][_0x25e4('0x3e')]);_0x255319[_0x25e4('0x3f')]=qs[_0x25e4('0x38')](_[_0x25e4('0x40')](_0x5cb123[_0x25e4('0x37')],_0x4eb45e[_0x25e4('0x38')]));_0x255319['where'][_0x25e4('0xca')]=_0x142454['id'];if(_0x5cb123['query'][_0x25e4('0x69')]){_0x255319[_0x25e4('0x3f')]=_['merge'](_0x255319[_0x25e4('0x3f')],{'$or':_[_0x25e4('0x52')](_0x255319[_0x25e4('0x39')],function(_0x1a2828){var _0xbb3381={};_0xbb3381[_0x1a2828]={'$like':'%'+_0x5cb123[_0x25e4('0x37')][_0x25e4('0x69')]+'%'};return _0xbb3381;})});}_0x255319=_[_0x25e4('0x84')]({},_0x255319,_0x5cb123['options']);return db[_0x25e4('0xcf')][_0x25e4('0x21')]({'where':_0x255319[_0x25e4('0x3f')]})['then'](function(_0x3a88e0){_0x34630c[_0x25e4('0x21')]=_0x3a88e0;if(_0x5cb123['query'][_0x25e4('0xd0')]){_0x255319[_0x25e4('0xcb')]=[{'all':!![]}];}return db[_0x25e4('0xcf')]['findAll'](_0x255319);})[_0x25e4('0x28')](function(_0x582d9a){_0x34630c[_0x25e4('0x90')]=_0x582d9a;return _0x34630c;});}})['then'](respondWithFilteredResult(_0x222333,_0x255319))[_0x25e4('0x91')](handleError(_0x222333,null));};exports[_0x25e4('0xd1')]=function(_0x5f5129,_0x3d249e,_0x1537f7){try{if(!_0x5f5129[_0x25e4('0x99')][_0x25e4('0x62')]){throw new Error('No\x20ListId\x20specified');}if(!_0x5f5129[_0x25e4('0x99')][_0x25e4('0xd2')]){throw new Error('No\x20association\x20keys\x20specified!');}if(!_0x5f5129[_0x25e4('0x99')][_0x25e4('0xd3')]){throw new Error(_0x25e4('0xd4'));}if(!_0x5f5129['body'][_0x25e4('0xd5')]){throw new Error(_0x25e4('0xd6'));}var _0x27306a=_0x5f5129['body'][_0x25e4('0xd2')][_0x25e4('0x51')](',');var _0x5023a8=_0x5f5129[_0x25e4('0x99')][_0x25e4('0xd3')][_0x25e4('0x51')](',');if(!_0x27306a['length']||!_0x5023a8[_0x25e4('0x30')]||_0x27306a[_0x25e4('0x30')]!==_0x5023a8[_0x25e4('0x30')]){throw new Error(_0x25e4('0xd7'));}_0x5f5129[_0x25e4('0x99')]['fields']=_[_0x25e4('0xd8')](_0x27306a,_0x5023a8);if(!_0x5f5129['body'][_0x25e4('0x86')]['phone']){throw new Error(_0x25e4('0xd9'));}if(!_0x5f5129[_0x25e4('0x99')][_0x25e4('0x86')][_0x25e4('0xda')]){throw new Error(_0x25e4('0xdb'));}var _0xdb1c47=path[_0x25e4('0x9c')](config['root'],_0x25e4('0xdc'),_0x5f5129[_0x25e4('0xdd')][_0x25e4('0xde')]);fs[_0x25e4('0xdf')](_0xdb1c47,parseInt(_0x25e4('0xe0'),0x8));var _0x4de3b3=require(_0x25e4('0xe1'))[_0x25e4('0xe2')](path[_0x25e4('0x9c')](__dirname,'../../components/import/cm/csv'),[_0xdb1c47,_0x5f5129['body'][_0x25e4('0xd2')],_0x5f5129[_0x25e4('0x99')][_0x25e4('0xd3')],_0x5f5129[_0x25e4('0x99')][_0x25e4('0x62')],_0x5f5129[_0x25e4('0x99')][_0x25e4('0xe3')],_0x5f5129['body'][_0x25e4('0xb6')],_0x5f5129[_0x25e4('0x99')]['socket_timestamp']]);return _0x3d249e[_0x25e4('0x1d')](0xc8)[_0x25e4('0x1e')]({'message':'File\x20uploaded\x20correctly!','pid':_0x4de3b3[_0x25e4('0xe4')]});}catch(_0x5ea1e3){return _0x3d249e['status'](0x1f4)[_0x25e4('0x2c')](_0x5ea1e3);}};exports[_0x25e4('0xe5')]=function(_0x59addf,_0x17df79,_0x71175){var _0x5118b0=fs[_0x25e4('0xe6')](_0x59addf[_0x25e4('0xdd')][_0x25e4('0xe7')]);Papa[_0x25e4('0xe8')](_0x5118b0,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x5e984a){return _0x17df79[_0x25e4('0x1d')](0xc8)[_0x25e4('0x1e')]({'file':_0x59addf['file'],'fields':_0x5e984a[_0x25e4('0xe9')][_0x25e4('0x86')]});}});};exports[_0x25e4('0xea')]=function(_0x41f99e,_0x4eda88,_0x4cc21e){return db[_0x25e4('0x55')][_0x25e4('0x95')]({'raw':!![],'attributes':['id'],'where':{'role':_0x25e4('0x7d')}})['then'](function(_0x743662){var _0x4fa800=![];if(!_0x41f99e[_0x25e4('0x99')][_0x25e4('0x62')]){throw new Error(_0x25e4('0xeb'));}if(!_0x41f99e[_0x25e4('0x99')][_0x25e4('0xec')][_0x25e4('0xed')]){throw new Error(_0x25e4('0xd9'));}if(!_0x41f99e['body'][_0x25e4('0xec')]['firstName']){throw new Error(_0x25e4('0xdb'));}if(!_0x41f99e['body']['socket_timestamp']){throw new Error(_0x25e4('0xd6'));}var _0x2a7d37=require(_0x25e4('0xe1'))[_0x25e4('0xe2')](path[_0x25e4('0x9c')](__dirname,_0x25e4('0xee')),[_0x41f99e[_0x25e4('0x92')]['id'],JSON[_0x25e4('0xef')](_0x41f99e[_0x25e4('0x99')]),JSON[_0x25e4('0xef')](_0x743662)]);_0x2a7d37['on'](_0x25e4('0xf0'),function(_0x1862d0){_0x4fa800=!![];return _0x4eda88[_0x25e4('0x1d')](0xc8)[_0x25e4('0x1e')]({'message':_0x25e4('0xf1'),'pid':_0x2a7d37[_0x25e4('0xe4')]});});_0x2a7d37['on'](_0x25e4('0xf2'),function(_0x489292){if(_0x489292&&!_0x4fa800){return _0x4eda88[_0x25e4('0x1d')](0x1f4)[_0x25e4('0x1e')]({'message':'error\x20child\x20process','pid':_0x2a7d37['pid']});}});})['catch'](handleError(_0x4eda88,null));};exports[_0x25e4('0xf3')]=function(_0x27fa95,_0x2f2cca){var _0x3c5455=[_0x25e4('0xf4'),'chat',_0x25e4('0xf5'),'openchannel',_0x25e4('0xf6'),_0x25e4('0xf7'),'voice'];var _0xd6aa6c={'offset':0x0,'order':qs[_0x25e4('0x3e')](_0x25e4('0xf8'))},_0x280500={'count':0x0,'rows':[]};Promise['resolve']()[_0x25e4('0x28')](function(){if(_0x27fa95[_0x25e4('0x37')]['channel']){if(!_[_0x25e4('0xf9')](_0x3c5455,_0x27fa95[_0x25e4('0x37')]['channel'][_0x25e4('0xfa')]())){throw new Error('Invalid\x20channel');}_0x3c5455=[_0x27fa95[_0x25e4('0x37')]['channel'][_0x25e4('0xfa')]()];}if(_0x27fa95['query'][_0x25e4('0xfb')]){try{var _0x166442=JSON[_0x25e4('0xe8')](_0x27fa95[_0x25e4('0x37')][_0x25e4('0xfb')]);if(!moment(_0x166442[_0x25e4('0x43')])['isValid']()){throw new Error(_0x25e4('0xfc'));}if(!moment(_0x166442['to'])[_0x25e4('0xfd')]()){throw new Error(_0x25e4('0xfe'));}}catch(_0x137168){throw new Error(_0x25e4('0xff'));}}if(!_0x27fa95[_0x25e4('0x37')][_0x25e4('0x3b')](_0x25e4('0x3c'))){_0xd6aa6c[_0x25e4('0x20')]=qs[_0x25e4('0x20')](_0x27fa95['query']['limit']||0xa);_0xd6aa6c['offset']=qs[_0x25e4('0x22')](_0x27fa95[_0x25e4('0x37')][_0x25e4('0x22')]);}var _0x142d75=_0x3c5455[_0x25e4('0x52')](function(_0x142fe1){if(_0x142fe1===_0x25e4('0x100')){var _0x56c368={'attributes':['id','uniqueid',_0x25e4('0x5e'),_0x25e4('0x101'),_0x25e4('0x102'),'callerid',_0x25e4('0x103'),_0x25e4('0x104'),'duration',_0x25e4('0x105'),'createdAt',_0x25e4('0x106'),_0x25e4('0x107'),_0x25e4('0x108'),'UserId'],'where':{'ContactId':_0x27fa95[_0x25e4('0x92')]['id']},'include':[{'model':db['User'],'as':_0x25e4('0x55'),'attributes':['id','name','fullname',_0x25e4('0x97')]}],'order':[[_0x25e4('0x109'),_0x25e4('0x79')]]};if(_0x27fa95['query']['range']){_0x56c368[_0x25e4('0x3f')][_0x25e4('0x109')]={'$gte':_0x166442[_0x25e4('0x43')],'$lte':_0x166442['to']};}return db[_0x25e4('0x10a')]['findAndCountAll'](_0x56c368)[_0x25e4('0x28')](function(_0x280341){_0x280500[_0x25e4('0x21')]+=_0x280341['count'];return _[_0x25e4('0x52')](_0x280341['rows'],function(_0x3f5485){var _0x26e231=_0x3f5485[_0x25e4('0x9a')]({'plain':!![]});_0x26e231[_0x25e4('0x10b')]=_0x142fe1;if(_0x26e231[_0x25e4('0x55')]){_0x26e231[_0x25e4('0x55')]={'id':_0x26e231[_0x25e4('0x55')]['id'],'name':_0x26e231[_0x25e4('0x55')][_0x25e4('0x2b')],'fullname':_0x26e231['User'][_0x25e4('0x10c')],'alias':_0x26e231[_0x25e4('0x55')][_0x25e4('0x97')]};}return _0x26e231;});});}else{var _0x403e04=_[_0x25e4('0x10d')](_0x142fe1)+(_0x142fe1===_0x25e4('0x10e')?_0x25e4('0x10f'):_0x25e4('0x110'));var _0xf85b42={'attributes':['id',_0x25e4('0x111'),'closedAt',_0x25e4('0x109'),_0x25e4('0x105'),_0x25e4('0x112'),_0x25e4('0x113'),'thirdDisposition',_0x25e4('0x114'),_0x403e04+'Id'],'where':{'ContactId':_0x27fa95[_0x25e4('0x92')]['id']},'include':[{'model':db[_0x403e04],'as':_0x25e4('0x110'),'attributes':['id',_0x25e4('0x2b'),_0x25e4('0x115')]},{'model':db['User'],'as':_0x25e4('0x116'),'attributes':['id','name','fullname']},{'model':db[_0x25e4('0x117')],'as':_0x25e4('0x8f'),'attributes':['id',_0x25e4('0x2b'),_0x25e4('0x118')],'through':{'attributes':[]}}],'order':[['createdAt',_0x25e4('0x79')]]};if(_0x27fa95[_0x25e4('0x37')][_0x25e4('0xfb')]){_0xf85b42['where'][_0x25e4('0x109')]={'$gte':_0x166442['from'],'$lte':_0x166442['to']};}switch(_0x142fe1){case _0x25e4('0x10e'):_0xf85b42['attributes']['push'](_0x25e4('0x119'),_0x25e4('0x11a'),'customerPort',_0x25e4('0x11b'),_0x25e4('0x11c'),'ratingMessage',_0x25e4('0x11d'),_0x25e4('0x11e'),_0x25e4('0x11f'));break;case _0x25e4('0xf4'):_0xf85b42[_0x25e4('0x39')][_0x25e4('0x33')](_0x25e4('0x120'),'substatus');break;case _0x25e4('0x121'):_0xf85b42[_0x25e4('0x39')][_0x25e4('0x33')](_0x25e4('0x122'),_0x25e4('0x123'));break;}return db[_[_0x25e4('0x10d')](_0x142fe1)+_0x25e4('0x124')][_0x25e4('0x125')](_0xf85b42)[_0x25e4('0x28')](function(_0x5c45d3){_0x280500[_0x25e4('0x21')]+=_0x5c45d3[_0x25e4('0x21')];return _[_0x25e4('0x52')](_0x5c45d3[_0x25e4('0x90')],function(_0x2ab3e4){var _0x807bb=_0x2ab3e4[_0x25e4('0x9a')]({'plain':!![]});_0x807bb['channel']=_0x142fe1;if(_0x807bb['Owner']){_0x807bb[_0x25e4('0x116')]={'id':_0x807bb[_0x25e4('0x116')]['id'],'name':_0x807bb[_0x25e4('0x116')][_0x25e4('0x2b')],'fullname':_0x807bb[_0x25e4('0x116')][_0x25e4('0x10c')]};}return _0x807bb;});});}});return Promise[_0x25e4('0x126')](_0x142d75);})[_0x25e4('0x28')](function(_0x4a231f){return _(_0x4a231f)[_0x25e4('0x127')]()[_0x25e4('0x128')](_0x25e4('0x109'))[_0x25e4('0x129')]()[_0x25e4('0x58')]();})['then'](function(_0x396674){_0x280500[_0x25e4('0x90')]=_0xd6aa6c[_0x25e4('0x20')]?_0x396674[_0x25e4('0x12a')](_0xd6aa6c[_0x25e4('0x22')],_0xd6aa6c[_0x25e4('0x22')]+_0xd6aa6c[_0x25e4('0x20')]):_0x396674;return _0x280500;})[_0x25e4('0x28')](respondWithFilteredResult(_0x2f2cca,_0xd6aa6c))[_0x25e4('0x91')](handleError(_0x2f2cca,null));};
\ No newline at end of file
+var _0xe04b=['desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','defaults','localhost','socket.io-emitter','redis','./cmContact.socket','sendStatus','status','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','end','error','stack','name','send','index','describe','length','keys','cf_','push','CmCustomField','findOne','all','type','query','filters','model','attributes','intersection','hasOwnProperty','nolimit','order','sort','where','field','color','from','select','left_join','cm_user_has_contacts','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','expr','search','parseSearch','sqlOperator','conditions','find','value','map','forEach','union','User','and','uc.UserId\x20=\x20?','fieldType','datetime','castTo','DATE','buildExpression','text','start','isNil','Contact','isEmpty','ListId','concat','\x20=\x20?','isArray','tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.lastName\x20LIKE\x20?','c.id','SELECT','clone','DESC','having','t.id\x20IN\x20?','resolve','user','role','agent','some','getLists','c.ListId\x20IS\x20NULL','c.ListId\x20IN\x20?','sequelize','toString','keyBy','fields','c.firstName','c.lastName','c.phone','c.mobile','c.fax','c.email','c.CompanyId','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','Tags','split','destroy','CmContact','params','tags','startsWith','columnName','displayName','findAll','custom','catch','merge','body','get','mergeWith','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','FaxInteraction','FaxMessage','OpenchannelMessage','CmHopperFinal','CmHopperHistory','VoiceCallReport','FaxQueueReport','MailQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappInteraction','bulkCreate','each','duplicates','findOrCreate','spread','show','Tag','omit','cf_%d','$and','pickBy','table','cm_contacts','setFields','id\x20=\x20?','values','phone','getTags','rawAttributes','pick','setTags','ids','getHoppers','options','includeAll','include','rows','ContactId','getHopperFinals','getJscriptySessions','uploadCsv','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','Incorrect\x20binding\x20parameters\x20passed!','zipObject','firstName','join','server/files/tmp','file','filename','chmodSync','0777','child_process','fork','../../components/import/cm/csv','CompanyId','File\x20uploaded\x20correctly!','pid','upload','parse','meta','No\x20ListId\x20specified','binding','../../components/import/cm/csv2','stringify','start\x20child\x20process\x20correctly!','exit','error\x20child\x20process','mail','chat','openchannel','fax','voice','-createdAt','channel','includes','Invalid\x20channel','toLowerCase','range','isValid','Invalid\x20date\x20for\x20range\x20from\x20filter','Invalid\x20createdAt\x20filter','uniqueid','starttime','endtime','duration','note','userDisposition','userSecondDisposition','UserId','fullname','createdAt','findAndCountAll','alias','startCase','Account','closedAt','disposition','secondDisposition','thirdDisposition','Owner','browserName','customerIp','customerPort','osName','ratingMessage','ratingType','referer','substatus','externalUrl','Interaction','sortBy','reverse','slice','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce'];(function(_0x428618,_0x993295){var _0x3e9d26=function(_0x3e2975){while(--_0x3e2975){_0x428618['push'](_0x428618['shift']());}};_0x3e9d26(++_0x993295);}(_0xe04b,0x112));var _0xbe04=function(_0x5e7f62,_0x5ba327){_0x5e7f62=_0x5e7f62-0x0;var _0x4626ab=_0xe04b[_0x5e7f62];return _0x4626ab;};'use strict';var emlformat=require(_0xbe04('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbe04('0x1'));var jsonpatch=require(_0xbe04('0x2'));var rp=require(_0xbe04('0x3'));var moment=require(_0xbe04('0x4'));var BPromise=require(_0xbe04('0x5'));var Mustache=require(_0xbe04('0x6'));var util=require(_0xbe04('0x7'));var path=require(_0xbe04('0x8'));var sox=require(_0xbe04('0x9'));var csv=require(_0xbe04('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbe04('0xb'));var _=require(_0xbe04('0xc'));var squel=require(_0xbe04('0xd'));var crypto=require(_0xbe04('0xe'));var jsforce=require(_0xbe04('0xf'));var deskjs=require(_0xbe04('0x10'));var toCsv=require(_0xbe04('0xa'));var querystring=require(_0xbe04('0x11'));var Papa=require(_0xbe04('0x12'));var Redis=require(_0xbe04('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xbe04('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbe04('0x15'));var logger=require(_0xbe04('0x16'))('api');var utils=require(_0xbe04('0x17'));var config=require(_0xbe04('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_[_0xbe04('0x19')](config['redis'],{'host':_0xbe04('0x1a'),'port':0x18eb});var socket=require(_0xbe04('0x1b'))(new Redis(config[_0xbe04('0x1c')]));require(_0xbe04('0x1d'))['register'](socket);function respondWithStatusCode(_0x488a45,_0x59e21d){_0x59e21d=_0x59e21d||0xcc;return function(_0x153e76){if(_0x153e76){return _0x488a45[_0xbe04('0x1e')](_0x59e21d);}return _0x488a45[_0xbe04('0x1f')](_0x59e21d)['end']();};}function respondWithResult(_0x3d7cdc,_0x11e237){_0x11e237=_0x11e237||0xc8;return function(_0x3d8f64){if(_0x3d8f64){return _0x3d7cdc[_0xbe04('0x1f')](_0x11e237)[_0xbe04('0x20')](_0x3d8f64);}};}function respondWithFilteredResult(_0x4ba96f,_0xc14403){return function(_0x466efd){if(_0x466efd){var _0x4df6b5=typeof _0xc14403[_0xbe04('0x21')]==='undefined'&&typeof _0xc14403[_0xbe04('0x22')]===_0xbe04('0x23');var _0x87bff5=_0x466efd[_0xbe04('0x24')];var _0x1c3563=_0x4df6b5?0x0:_0xc14403['offset'];var _0x691809=_0x4df6b5?_0x466efd[_0xbe04('0x24')]:_0xc14403[_0xbe04('0x21')]+_0xc14403[_0xbe04('0x22')];var _0x1dfd1d;if(_0x691809>=_0x87bff5){_0x691809=_0x87bff5;_0x1dfd1d=0xc8;}else{_0x1dfd1d=0xce;}_0x4ba96f[_0xbe04('0x1f')](_0x1dfd1d);return _0x4ba96f['set'](_0xbe04('0x25'),_0x1c3563+'-'+_0x691809+'/'+_0x87bff5)[_0xbe04('0x20')](_0x466efd);}return null;};}function patchUpdates(_0x5d08c6){return function(_0x4d9229){try{jsonpatch[_0xbe04('0x26')](_0x4d9229,_0x5d08c6,!![]);}catch(_0x3c00e5){return BPromise[_0xbe04('0x27')](_0x3c00e5);}return _0x4d9229[_0xbe04('0x28')]();};}function saveUpdates(_0x48d411,_0x504773){return function(_0x9f9223){if(_0x9f9223){return _0x9f9223[_0xbe04('0x29')](_0x48d411)[_0xbe04('0x2a')](function(_0x15bedb){return _0x15bedb;});}return null;};}function removeEntity(_0x3c94ba,_0x4f9514){return function(_0x12ebc1){if(_0x12ebc1){return _0x12ebc1['destroy']()[_0xbe04('0x2a')](function(){_0x3c94ba['status'](0xcc)[_0xbe04('0x2b')]();});}};}function handleEntityNotFound(_0x4ccb90,_0x33c380){return function(_0x481b14){if(!_0x481b14){_0x4ccb90[_0xbe04('0x1e')](0x194);}return _0x481b14;};}function handleError(_0x10ff8f,_0x2bcf45){_0x2bcf45=_0x2bcf45||0x1f4;return function(_0x27f4c3){logger[_0xbe04('0x2c')](_0x27f4c3[_0xbe04('0x2d')]);if(_0x27f4c3[_0xbe04('0x2e')]){delete _0x27f4c3[_0xbe04('0x2e')];}_0x10ff8f[_0xbe04('0x1f')](_0x2bcf45)[_0xbe04('0x2f')](_0x27f4c3);};}exports[_0xbe04('0x30')]=function(_0x258d84,_0x29197f){var _0xf4f753={},_0x48d9c3={},_0x2f5815={'count':0x0,'rows':[]};return db['CmContact'][_0xbe04('0x31')]()[_0xbe04('0x2a')](function(_0x50e5e8){var _0x41fc8b=[];for(var _0x5e4e7e=0x0;_0x5e4e7e<Object['keys'](_0x50e5e8)[_0xbe04('0x32')];_0x5e4e7e++){var _0x3981a1=Object[_0xbe04('0x33')](_0x50e5e8)[_0x5e4e7e];if(_['startsWith'](_0x3981a1,_0xbe04('0x34'))){_0x41fc8b[_0xbe04('0x35')](db[_0xbe04('0x36')][_0xbe04('0x37')]({'where':{'id':_['trimStart'](_0x3981a1,_0xbe04('0x34'))},'raw':!![]}));}}return BPromise[_0xbe04('0x38')](_0x41fc8b)[_0xbe04('0x2a')](function(_0x72a4cb){for(var _0x1925c7=0x0;_0x1925c7<_0x72a4cb['length'];_0x1925c7++){if(_0x72a4cb[_0x1925c7]){var _0x5c41b2='cf_'+_0x72a4cb[_0x1925c7]['id'];var _0xa68299=_0x50e5e8[_0x5c41b2];_0xa68299['fieldType']=_0x72a4cb[_0x1925c7][_0xbe04('0x39')];}}return _0x50e5e8;});})['then'](function(_0x5c9cc1){_0x48d9c3['model']=_[_0xbe04('0x33')](_0x5c9cc1);_0x48d9c3[_0xbe04('0x3a')]=_['keys'](_0x258d84['query']);_0x48d9c3[_0xbe04('0x3b')]=_['intersection'](_0x48d9c3[_0xbe04('0x3c')],_0x48d9c3[_0xbe04('0x3a')]);_0xf4f753[_0xbe04('0x3d')]=_[_0xbe04('0x3e')](_0x48d9c3['model'],qs['fields'](_0x258d84[_0xbe04('0x3a')]['fields']));_0xf4f753[_0xbe04('0x3d')]=_0xf4f753[_0xbe04('0x3d')]['length']?_0xf4f753['attributes']:_0x48d9c3[_0xbe04('0x3c')];if(!_0x258d84[_0xbe04('0x3a')][_0xbe04('0x3f')](_0xbe04('0x40'))){_0xf4f753['limit']=qs[_0xbe04('0x22')](_0x258d84['query'][_0xbe04('0x22')]);_0xf4f753['offset']=qs[_0xbe04('0x21')](_0x258d84['query'][_0xbe04('0x21')]);}_0xf4f753[_0xbe04('0x41')]=qs[_0xbe04('0x42')](_0x258d84[_0xbe04('0x3a')][_0xbe04('0x42')]);_0xf4f753[_0xbe04('0x43')]=qs[_0xbe04('0x3b')](_['pick'](_0x258d84[_0xbe04('0x3a')],_0x48d9c3[_0xbe04('0x3b')]),_0x5c9cc1);var _0xe22d28=[];var _0x169a9b=squel['select']()['field']('id')[_0xbe04('0x44')](_0xbe04('0x2e'))['field'](_0xbe04('0x45'))[_0xbe04('0x46')]('tools_tags');var _0x49b416=squel[_0xbe04('0x47')]()[_0xbe04('0x46')]('cm_contacts','c')[_0xbe04('0x48')](_0xbe04('0x49'),'uc','uc.CmContactId\x20=\x20c.id')['left_join'](_0xbe04('0x4a'),'ct',_0xbe04('0x4b'))['left_join']('tools_tags','t','t.id\x20=\x20ct.TagId')[_0xbe04('0x43')]('c.deletedAt\x20IS\x20NULL');var _0x12fcec=squel[_0xbe04('0x4c')]();var _0x1fd13e=[];var _0x30cc68=squel[_0xbe04('0x4c')]();var _0x3349c7;if(_0x258d84[_0xbe04('0x3a')][_0xbe04('0x4d')]){_0x3349c7=as[_0xbe04('0x4e')](_0x258d84[_0xbe04('0x3a')][_0xbe04('0x4d')]);var _0x4de44c=_0x3349c7[_0xbe04('0x4f')];for(var _0x4aab4e=0x0;_0x4aab4e<_0x3349c7[_0xbe04('0x50')][_0xbe04('0x32')];_0x4aab4e++){var _0xc91f51=_0x3349c7[_0xbe04('0x50')][_0x4aab4e];var _0x50c747='c';var _0x47f596=_(_0x5c9cc1)[_0xbe04('0x33')]()[_0xbe04('0x51')](function(_0x18f051){return _0x18f051===_0xc91f51[_0xbe04('0x44')];});if(_0x47f596)_0x47f596=_0x5c9cc1[_0xc91f51[_0xbe04('0x44')]];if(!_0x47f596){if(_0xc91f51[_0xbe04('0x44')]==='Tag'){var _0x544adb=_0xc91f51[_0xbe04('0x52')]['split'](',')[_0xbe04('0x53')](function(_0x57a663){return Number(_0x57a663);});_0x544adb[_0xbe04('0x54')](function(_0x4ec844){_0x30cc68['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x4ec844+',%');});_0x1fd13e=_[_0xbe04('0x55')](_0x1fd13e,_0x544adb);}else if(_0xc91f51[_0xbe04('0x44')]===_0xbe04('0x56')){_0x12fcec[_0xbe04('0x57')](_0xbe04('0x58'),_0xc91f51[_0xbe04('0x52')]);}}else{if(_0xc91f51[_0xbe04('0x44')]==='dateOfBirth'||_0x47f596[_0xbe04('0x59')]===_0xbe04('0x5a'))_0xc91f51[_0xbe04('0x5b')]=_0xbe04('0x5c');var _0x14b712=as[_0xbe04('0x5d')](_0x50c747,_0x47f596[_0xbe04('0x39')],_0xc91f51);_0x12fcec[_0x4de44c](_0x14b712[_0xbe04('0x5e')],_0x14b712['value'][_0xbe04('0x5f')],_0x14b712['value'][_0xbe04('0x2b')]);}}}else{var _0x4f9afd=_(Object[_0xbe04('0x33')](_0x258d84['query']))[_0xbe04('0x53')](function(_0x380bb0){return _0x5c9cc1[_0xbe04('0x3f')](_0x380bb0)?_0x380bb0:undefined;})['filter'](function(_0x439958){return!_[_0xbe04('0x60')](_0x439958);})[_0xbe04('0x52')]();if(_0x258d84[_0xbe04('0x3a')][_0xbe04('0x61')])_0x4f9afd[_0xbe04('0x35')](_0xbe04('0x61'));if(!_[_0xbe04('0x62')](_0x4f9afd)){_0x4f9afd[_0xbe04('0x54')](function(_0x2a1b88){if(_0x2a1b88===_0xbe04('0x63')){_0x49b416[_0xbe04('0x43')]('c.ListId\x20IN\x20?',[][_0xbe04('0x64')](_0x258d84[_0xbe04('0x3a')][_0x2a1b88]));}else if(_0x2a1b88===_0xbe04('0x61')){var _0x4f7a4d='%'+_0x258d84[_0xbe04('0x3a')][_0x2a1b88]+'%';_0x49b416['where']('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x4f7a4d);}else{_0x49b416[_0xbe04('0x43')]('c.'+_0x2a1b88+_0xbe04('0x65'),_0x258d84[_0xbe04('0x3a')][_0x2a1b88]);}});}if(_0x258d84[_0xbe04('0x3a')]['tag']){_0x1fd13e=_[_0xbe04('0x66')](_0x258d84[_0xbe04('0x3a')]['tag'])?_0x258d84[_0xbe04('0x3a')][_0xbe04('0x67')]:new Array(_0x258d84['query'][_0xbe04('0x67')]);_0x1fd13e['forEach'](function(_0x1a489b){_0x30cc68['or'](_0xbe04('0x68'),'%,'+_0x1a489b+',%');});}if(_0x258d84[_0xbe04('0x3a')][_0xbe04('0x69')]){var _0x3696c4=_0x258d84[_0xbe04('0x3a')][_0xbe04('0x69')][_0xbe04('0x6a')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(_0x3696c4['split']('\x20')[_0xbe04('0x32')]>0x1){_0x12fcec['or'](_0xbe04('0x6b'),qs['getFullTextValue'](_0x3696c4),null);}else{if(qs[_0xbe04('0x6c')](_0x3696c4)){_0x12fcec['or'](_0xbe04('0x6d'),_0x3696c4+'%');_0x12fcec['or'](_0xbe04('0x6e'),_0x3696c4+'%');_0x12fcec['or'](_0xbe04('0x6f'),_0x3696c4+'%');_0x12fcec['or'](_0xbe04('0x70'),_0x3696c4+'%');}else if(qs[_0xbe04('0x71')](_0x3696c4)){_0x12fcec['or'](_0xbe04('0x72'),_0x3696c4+'%');}else{_0x12fcec['or']('c.firstName\x20LIKE\x20?','%'+_0x3696c4+'%');_0x12fcec['or'](_0xbe04('0x73'),'%'+_0x3696c4+'%');_0x12fcec['or']('c.email\x20LIKE\x20?','%'+_0x3696c4+'%');}}}}_0x49b416[_0xbe04('0x43')](_0x12fcec);_0x49b416['group'](_0xbe04('0x74'));var _0x2d104e={'type':db['Sequelize']['QueryTypes'][_0xbe04('0x75')],'raw':!![]};var _0x455fac=_0x49b416[_0xbe04('0x76')]()[_0xbe04('0x44')](_0xbe04('0x74'));if(_0xf4f753[_0xbe04('0x41')]){_0xf4f753[_0xbe04('0x41')][_0xbe04('0x54')](function(_0x30663b){_0x49b416[_0xbe04('0x41')]('c.'+_0x30663b[0x0],_0x30663b[0x1]===_0xbe04('0x77')?![]:!![]);});}if(!_[_0xbe04('0x62')](_0x1fd13e)){_0x49b416[_0xbe04('0x78')](_0x30cc68);_0x455fac[_0xbe04('0x43')](_0xbe04('0x79'),_0x1fd13e);}BPromise[_0xbe04('0x7a')]()['then'](function(){if(!_0x3349c7)return;if(_0x258d84[_0xbe04('0x7b')][_0xbe04('0x7c')]!==_0xbe04('0x7d'))return;if(!_[_0xbe04('0x7e')](_0x3349c7['conditions'],[_0xbe04('0x44'),_0xbe04('0x56')])){return _0x258d84[_0xbe04('0x7b')][_0xbe04('0x7f')]({'attributes':['id'],'raw':!![]})[_0xbe04('0x2a')](function(_0x6d0c32){if(_['isEmpty'](_0x6d0c32)){_0x455fac[_0xbe04('0x43')](_0xbe04('0x80'));_0x49b416[_0xbe04('0x43')]('c.ListId\x20IS\x20NULL');}else{_0x455fac[_0xbe04('0x43')]('c.ListId\x20IN\x20?',_[_0xbe04('0x53')](_0x6d0c32,'id'));_0x49b416['where'](_0xbe04('0x81'),_[_0xbe04('0x53')](_0x6d0c32,'id'));}});}})[_0xbe04('0x2a')](function(){if(_0x258d84[_0xbe04('0x7b')][_0xbe04('0x7c')]==='agent'&&!_0x3349c7&&!_0x258d84['query']['ListId'])return[];return db[_0xbe04('0x82')]['query'](_0x455fac[_0xbe04('0x83')](),_0x2d104e);})[_0xbe04('0x2a')](function(_0x304e7d){_0x2f5815[_0xbe04('0x24')]=_0x304e7d['length'];if(_0x2f5815[_0xbe04('0x24')]===0x0)return[];return db[_0xbe04('0x82')]['query'](_0x169a9b[_0xbe04('0x83')](),_0x2d104e)[_0xbe04('0x2a')](function(_0x3aa6fc){_0xe22d28=_[_0xbe04('0x84')](_0x3aa6fc,'id');_0x2d104e=_['merge'](_0x2d104e,{'model':db['CmContact'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x258d84['query'][_0xbe04('0x85')]){_0xf4f753[_0xbe04('0x3d')][_0xbe04('0x54')](function(_0x5e5659){_0x49b416['field']('c.'+_0x5e5659);});}else{_0x49b416[_0xbe04('0x44')]('c.id');_0x49b416[_0xbe04('0x44')](_0xbe04('0x86'));_0x49b416[_0xbe04('0x44')](_0xbe04('0x87'));_0x49b416[_0xbe04('0x44')](_0xbe04('0x88'));_0x49b416[_0xbe04('0x44')](_0xbe04('0x89'));_0x49b416[_0xbe04('0x44')](_0xbe04('0x8a'));_0x49b416[_0xbe04('0x44')](_0xbe04('0x8b'));_0x49b416['field']('c.ListId');_0x49b416[_0xbe04('0x44')]('c.createdAt');_0x49b416[_0xbe04('0x44')]('c.deletedAt');_0x49b416[_0xbe04('0x44')](_0xbe04('0x8c'));_0x49b416[_0xbe04('0x44')](_0xbe04('0x8d'),'TagIds');}if(_0xf4f753[_0xbe04('0x22')])_0x49b416[_0xbe04('0x22')](_0xf4f753[_0xbe04('0x22')]);if(_0xf4f753[_0xbe04('0x21')])_0x49b416['offset'](_0xf4f753[_0xbe04('0x21')]);return db['sequelize'][_0xbe04('0x3a')](_0x49b416['toString'](),_0x2d104e);});})[_0xbe04('0x2a')](function(_0x382e38){_0x382e38['forEach'](function(_0x46dff2){if(_0x46dff2[_0xbe04('0x8e')]){_0x46dff2[_0xbe04('0x8f')]=[];_0x46dff2['TagIds'][_0xbe04('0x90')](',')['forEach'](function(_0x947967){_0x46dff2[_0xbe04('0x8f')][_0xbe04('0x35')](_0xe22d28[_0x947967]);});}delete _0x46dff2['TagIds'];});_0x2f5815['rows']=_0x382e38;return _0x2f5815;})[_0xbe04('0x2a')](respondWithFilteredResult(_0x29197f,_0xf4f753));})['catch'](handleError(_0x29197f,null));};exports[_0xbe04('0x91')]=function(_0x428ba3,_0x219577){return db[_0xbe04('0x92')][_0xbe04('0x51')]({'where':{'id':_0x428ba3[_0xbe04('0x93')]['id']}})[_0xbe04('0x2a')](handleEntityNotFound(_0x219577,null))[_0xbe04('0x2a')](removeEntity(_0x219577,null))['catch'](handleError(_0x219577,null));};exports[_0xbe04('0x31')]=function(_0x3ac889,_0x46a48b){return db['CmContact'][_0xbe04('0x31')]()[_0xbe04('0x2a')](function(_0x5469af){delete _0x5469af[_0xbe04('0x94')];for(var _0x3d9ff0=0x0;_0x3d9ff0<Object['keys'](_0x5469af)[_0xbe04('0x32')];_0x3d9ff0++){var _0x32316c=Object[_0xbe04('0x33')](_0x5469af)[_0x3d9ff0];if(!_[_0xbe04('0x95')](_0x32316c,_0xbe04('0x34'))){_0x5469af[_0x32316c][_0xbe04('0x96')]=_0x32316c;_0x5469af[_0x32316c][_0xbe04('0x97')]=_0x32316c;}}return _0x5469af;})[_0xbe04('0x2a')](function(_0x3bf941){var _0x47b1f0={'where':{'$or':[{'ListId':_0x3ac889['query']['id']},{'ListId':null}]},'raw':!![]};return db[_0xbe04('0x36')][_0xbe04('0x98')](_0x47b1f0)[_0xbe04('0x2a')](function(_0x58383b){for(var _0x5a82e9=0x0;_0x5a82e9<_0x58383b[_0xbe04('0x32')];_0x5a82e9++){var _0x5a9d44=_0xbe04('0x34')+_0x58383b[_0x5a82e9]['id'];_0x3bf941[_0x5a9d44][_0xbe04('0x96')]=_0x5a9d44;_0x3bf941[_0x5a9d44][_0xbe04('0x97')]=_0x58383b[_0x5a82e9]['alias'];_0x3bf941[_0x5a9d44][_0xbe04('0x99')]={'type':_0x58383b[_0x5a82e9][_0xbe04('0x39')],'values':_0x58383b[_0x5a82e9]['values']};}Object[_0xbe04('0x33')](_0x3bf941)[_0xbe04('0x54')](function(_0x58d50a){if(!_0x3bf941[_0x58d50a]['hasOwnProperty'](_0xbe04('0x96'))){delete _0x3bf941[_0x58d50a];}});return _0x3bf941;});})[_0xbe04('0x2a')](respondWithResult(_0x46a48b,null))[_0xbe04('0x9a')](handleError(_0x46a48b,null));};exports[_0xbe04('0x9b')]=function(_0x56e977,_0x403f34){var _0x45bd1f;var _0x33e419;var _0x4049a1;if(_0x56e977[_0xbe04('0x9c')]['id']){delete _0x56e977[_0xbe04('0x9c')]['id'];}return db[_0xbe04('0x92')]['findAll']({'where':{'id':[_0x56e977['body']['to'],_0x56e977[_0xbe04('0x9c')][_0xbe04('0x46')]]}})['then'](function(_0x306126){if(_0x306126){if(_0x306126['length']!==0x2){return null;}_0x306126[0x0]=_0x306126[0x0][_0xbe04('0x9d')]({'plain':!![]});_0x306126[0x1]=_0x306126[0x1]['get']({'plain':!![]});delete _0x306126[0x0]['id'];delete _0x306126[0x1]['id'];return _[_0xbe04('0x9e')](_0x306126[0x0],_0x306126[0x1],function(_0x2b1b1b,_0xf5445f){if(Array['isArray'](_0xf5445f)&&!_0xf5445f['length']){return _0x2b1b1b;}else if(!_0xf5445f){return _0x2b1b1b;}});}})[_0xbe04('0x2a')](handleEntityNotFound(_0x403f34,null))['then'](function(_0x3c8e32){if(_0x3c8e32){if(_0x3c8e32[_0xbe04('0x94')]&&_[_0xbe04('0x66')](_0x3c8e32[_0xbe04('0x94')])){_0x3c8e32[_0xbe04('0x94')]=_0x3c8e32[_0xbe04('0x94')]['join']();}logger[_0xbe04('0x9f')](_0xbe04('0xa0'),_0x56e977['body']['to'],_0x56e977['body'][_0xbe04('0x46')]);return db[_0xbe04('0xa1')][_0xbe04('0x91')]({'where':{'ContactId':[_0x56e977[_0xbe04('0x9c')]['to'],_0x56e977[_0xbe04('0x9c')]['from']]}})['then'](function(_0x31451a){logger[_0xbe04('0x9f')]('[CmContact][merge][destroy][CmHopper],\x20%s',_0x31451a);return db[_0xbe04('0xa2')][_0xbe04('0x91')]({'where':{'ContactId':[_0x56e977[_0xbe04('0x9c')]['to'],_0x56e977['body'][_0xbe04('0x46')]]}})['then'](function(_0x3bd054){logger['info'](_0xbe04('0xa3'),_0x3bd054);return db[_0xbe04('0x92')][_0xbe04('0xa4')](_0x3c8e32);});});}})[_0xbe04('0x2a')](function(_0x52a77b){if(_0x52a77b){_0x45bd1f=_0x52a77b;_0x33e419={'ContactId':_0x45bd1f['id']};_0x4049a1={'where':{'ContactId':[_0x56e977[_0xbe04('0x9c')]['to'],_0x56e977[_0xbe04('0x9c')][_0xbe04('0x46')]]}};return db[_0xbe04('0xa5')][_0xbe04('0x29')](_0x33e419,_0x4049a1);}})[_0xbe04('0x2a')](function(){if(_0x45bd1f){return db[_0xbe04('0xa6')][_0xbe04('0x29')](_0x33e419,_0x4049a1);}})[_0xbe04('0x2a')](function(){if(_0x45bd1f){return db[_0xbe04('0xa7')]['update'](_0x33e419,_0x4049a1);}})[_0xbe04('0x2a')](function(){if(_0x45bd1f){return db[_0xbe04('0xa8')][_0xbe04('0x29')](_0x33e419,_0x4049a1);}})[_0xbe04('0x2a')](function(){if(_0x45bd1f){return db[_0xbe04('0xa9')][_0xbe04('0x29')](_0x33e419,_0x4049a1);}})[_0xbe04('0x2a')](function(){if(_0x45bd1f){return db['MailInteraction'][_0xbe04('0x29')](_0x33e419,_0x4049a1);}})[_0xbe04('0x2a')](function(){if(_0x45bd1f){return db['MailMessage']['update'](_0x33e419,_0x4049a1);}})[_0xbe04('0x2a')](function(){if(_0x45bd1f){return db[_0xbe04('0xaa')][_0xbe04('0x29')](_0x33e419,_0x4049a1);}})[_0xbe04('0x2a')](function(){if(_0x45bd1f){return db['SmsMessage']['update'](_0x33e419,_0x4049a1);}})[_0xbe04('0x2a')](function(){if(_0x45bd1f){return db[_0xbe04('0xab')][_0xbe04('0x29')](_0x33e419,_0x4049a1);}})[_0xbe04('0x2a')](function(){if(_0x45bd1f){return db[_0xbe04('0xac')]['update'](_0x33e419,_0x4049a1);}})[_0xbe04('0x2a')](function(){if(_0x45bd1f){return db['OpenchannelInteraction'][_0xbe04('0x29')](_0x33e419,_0x4049a1);}})[_0xbe04('0x2a')](function(){if(_0x45bd1f){return db[_0xbe04('0xad')][_0xbe04('0x29')](_0x33e419,_0x4049a1);}})[_0xbe04('0x2a')](function(){if(_0x45bd1f){return db[_0xbe04('0xae')][_0xbe04('0x29')](_0x33e419,_0x4049a1);}})[_0xbe04('0x2a')](function(){if(_0x45bd1f){return db[_0xbe04('0xaf')][_0xbe04('0x29')](_0x33e419,_0x4049a1);}})[_0xbe04('0x2a')](function(){if(_0x45bd1f){return db['ReportAgentPreview'][_0xbe04('0x29')](_0x33e419,_0x4049a1);}})[_0xbe04('0x2a')](function(){if(_0x45bd1f){return db[_0xbe04('0xb0')]['update'](_0x33e419,_0x4049a1);}})['then'](function(){if(_0x45bd1f){return db['ChatQueueReport'][_0xbe04('0x29')](_0x33e419,_0x4049a1);}})[_0xbe04('0x2a')](function(){if(_0x45bd1f){return db[_0xbe04('0xb1')][_0xbe04('0x29')](_0x33e419,_0x4049a1);}})[_0xbe04('0x2a')](function(){if(_0x45bd1f){return db[_0xbe04('0xb2')]['update'](_0x33e419,_0x4049a1);}})[_0xbe04('0x2a')](function(){if(_0x45bd1f){return db['OpenchannelQueueReport'][_0xbe04('0x29')](_0x33e419,_0x4049a1);}})[_0xbe04('0x2a')](function(){if(_0x45bd1f){return db[_0xbe04('0xb3')]['update'](_0x33e419,_0x4049a1);}})[_0xbe04('0x2a')](function(){if(_0x45bd1f){return db[_0xbe04('0xb4')][_0xbe04('0x29')](_0x33e419,_0x4049a1);}})[_0xbe04('0x2a')](function(){if(_0x45bd1f){return db[_0xbe04('0xb5')][_0xbe04('0x29')](_0x33e419,_0x4049a1);}})[_0xbe04('0x2a')](function(){if(_0x45bd1f){return db['WhatsappMessage'][_0xbe04('0x29')](_0x33e419,_0x4049a1);}})[_0xbe04('0x2a')](function(){if(_0x45bd1f){return db['WhatsappQueueReport'][_0xbe04('0x29')](_0x33e419,_0x4049a1);}})[_0xbe04('0x2a')](function(){if(_0x45bd1f){return db['CmContact'][_0xbe04('0x91')]({'where':{'id':[_0x56e977[_0xbe04('0x9c')]['to'],_0x56e977[_0xbe04('0x9c')]['from']]}});}})[_0xbe04('0x2a')](function(){if(_0x45bd1f){return _0x45bd1f;}})['then'](respondWithResult(_0x403f34,null))[_0xbe04('0x9a')](handleError(_0x403f34,null));};exports[_0xbe04('0xa4')]=function(_0x4717f5,_0x582467){return db['CmContact']['describe']()[_0xbe04('0x2a')](function(_0x4d0244){if(_0x4717f5[_0xbe04('0x9c')][_0xbe04('0x94')]&&_[_0xbe04('0x66')](_0x4717f5[_0xbe04('0x9c')][_0xbe04('0x94')])){if(_0x4717f5[_0xbe04('0x9c')]['tags']['length']){_0x4717f5[_0xbe04('0x9c')]['tags']=_0x4717f5[_0xbe04('0x9c')][_0xbe04('0x94')]['join'](';')+';';}else{_0x4717f5[_0xbe04('0x9c')]['tags']=null;}}else{_0x4717f5['body'][_0xbe04('0x94')]=null;}return db[_0xbe04('0x92')]['create'](_0x4717f5[_0xbe04('0x9c')],{'fields':_[_0xbe04('0x33')](_0x4d0244),'raw':!![]});})['then'](respondWithResult(_0x582467,0xc9))[_0xbe04('0x9a')](handleError(_0x582467,null));};exports[_0xbe04('0xb6')]=function(_0x281288,_0x485c37){var _0x1d28fb=[];var _0x17a753=0x0;var _0x5d2634=0x0;var _0x574228=0x0;return db[_0xbe04('0x92')]['describe']()['then'](function(_0x3c68a4){return BPromise[_0xbe04('0xb7')](_0x281288['body'],function(_0x172897){var _0x1e35fb={'where':{'$or':[]},'defaults':_0x172897,'fields':_['keys'](_0x3c68a4),'raw':!![]};if(_0x172897[_0xbe04('0xb8')]){for(var _0x37e26c=0x0;_0x37e26c<_0x172897[_0xbe04('0xb8')][_0xbe04('0x32')];_0x37e26c++){var _0x3976ff={};_0x3976ff[_0x172897['duplicates'][_0x37e26c]]=_0x172897[_0x172897[_0xbe04('0xb8')][_0x37e26c]];_0x1e35fb['where']['$or'][_0xbe04('0x35')](_0x3976ff);}_0x1e35fb['where'][_0xbe04('0x63')]=_0x172897[_0xbe04('0x63')];}return db[_0xbe04('0x92')][_0xbe04('0xb9')](_0x1e35fb)[_0xbe04('0xba')](function(_0x92da06,_0x133f81){if(_0x133f81){_0x17a753++;}else{_0x574228++;}})[_0xbe04('0x9a')](function(_0x171432){console[_0xbe04('0x2c')](_0x171432);_0x5d2634++;});});})[_0xbe04('0x2a')](function(_0x14cedb){if(_0x14cedb){return{'success':_0x17a753,'failure':_0x5d2634,'duplicates':_0x574228};}})[_0xbe04('0x2a')](respondWithResult(_0x485c37,0xc9))[_0xbe04('0x9a')](handleError(_0x485c37,null));};exports[_0xbe04('0xbb')]=function(_0xa712df,_0x5ed313,_0x366319){var _0x4510af;return db['CmContact'][_0xbe04('0x31')]()[_0xbe04('0x2a')](function(_0x15feee){return db[_0xbe04('0x92')][_0xbe04('0x51')]({'where':{'id':_0xa712df[_0xbe04('0x93')]['id']},'include':[{'model':db[_0xbe04('0xbc')],'as':'Tags','attributes':['id','name',_0xbe04('0x45')],'required':_0xa712df[_0xbe04('0x3a')][_0xbe04('0x67')]?!![]:![]}],'attributes':_[_0xbe04('0x33')](_0x15feee)});})[_0xbe04('0x2a')](function(_0x3b48bb){_0x4510af=_0x3b48bb['get']({'plain':!![]});var _0x130c1c={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x3b48bb&&_0x3b48bb[_0xbe04('0x63')]){if(_0x3b48bb[_0xbe04('0x63')]){_0x130c1c[_0xbe04('0x43')]['$and'][_0xbe04('0x35')]({'ListId':{'$ne':_0x3b48bb[_0xbe04('0x63')]}});}}return db['CmCustomField'][_0xbe04('0x98')](_0x130c1c);})[_0xbe04('0x2a')](function(_0x39e07a){return _[_0xbe04('0xbd')](_0x4510af,_[_0xbe04('0x53')](_0x39e07a,function(_0x559b30){return util['format'](_0xbe04('0xbe'),_0x559b30['id']);}));})['then'](handleEntityNotFound(_0x5ed313,null))[_0xbe04('0x2a')](respondWithResult(_0x5ed313,null))[_0xbe04('0x9a')](handleError(_0x5ed313,null));};exports[_0xbe04('0x29')]=function(_0x528859,_0x2d6ca2){var _0x2e4cee;if(_0x528859[_0xbe04('0x9c')]['id']){delete _0x528859[_0xbe04('0x9c')]['id'];}return db[_0xbe04('0x92')][_0xbe04('0x51')]({'where':{'id':_0x528859[_0xbe04('0x93')]['id']}})[_0xbe04('0x2a')](handleEntityNotFound(_0x2d6ca2,null))[_0xbe04('0x2a')](saveUpdates(_0x528859[_0xbe04('0x9c')],null))[_0xbe04('0x2a')](function(_0x201f68){_0x2e4cee=_0x201f68;var _0x5e64e8={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x201f68&&_0x201f68[_0xbe04('0x63')]){if(_0x201f68[_0xbe04('0x63')]){_0x5e64e8[_0xbe04('0x43')][_0xbe04('0xbf')]['push']({'ListId':{'$ne':_0x201f68[_0xbe04('0x63')]}});}}return db[_0xbe04('0x36')]['findAll'](_0x5e64e8);})[_0xbe04('0x2a')](function(_0x562b75){if(_0x562b75){return _['omit'](_[_0xbe04('0xc0')](_0x528859['body'],function(_0x413452,_0x14d10c){return _['startsWith'](_0x14d10c,_0xbe04('0x34'));}),_['map'](_0x562b75,function(_0xa7788d){return util['format']('cf_%d',_0xa7788d['id']);}));}})['then'](function(_0x135a9c){if(_0x135a9c&&!_[_0xbe04('0x62')](_0x135a9c)){var _0x469bca=squel[_0xbe04('0x29')]()[_0xbe04('0xc1')](_0xbe04('0xc2'))[_0xbe04('0xc3')](_0x135a9c)['where'](_0xbe04('0xc4'),_0x528859['params']['id'])['toParam']();return db[_0xbe04('0x82')][_0xbe04('0x3a')](_0x469bca[_0xbe04('0x5e')],{'replacements':_0x469bca[_0xbe04('0xc5')]});}})[_0xbe04('0x2a')](function(){if(_0x528859[_0xbe04('0x9c')][_0xbe04('0xc6')]&&_0x2e4cee){return db['CmHopper'][_0xbe04('0x29')]({'phone':_0x528859[_0xbe04('0x9c')][_0xbe04('0xc6')]},{'where':{'ContactId':_0x2e4cee['id']}});}})[_0xbe04('0x2a')](function(){return _0x2e4cee;})['then'](respondWithResult(_0x2d6ca2,null))[_0xbe04('0x9a')](handleError(_0x2d6ca2,null));};exports[_0xbe04('0xc7')]=function(_0x47763c,_0x26ebee,_0x78787d){var _0x1f1191={};var _0xb93c26={};var _0x372fd0;var _0x5ba04e;return db['CmContact'][_0xbe04('0x37')]({'where':{'id':_0x47763c[_0xbe04('0x93')]['id']}})[_0xbe04('0x2a')](handleEntityNotFound(_0x26ebee,null))[_0xbe04('0x2a')](function(_0x52de6f){if(_0x52de6f){_0x372fd0=_0x52de6f;_0xb93c26['model']=_[_0xbe04('0x33')](db[_0xbe04('0xbc')][_0xbe04('0xc8')]);_0xb93c26[_0xbe04('0x3a')]=_[_0xbe04('0x33')](_0x47763c[_0xbe04('0x3a')]);_0xb93c26['filters']=_[_0xbe04('0x3e')](_0xb93c26['model'],_0xb93c26[_0xbe04('0x3a')]);_0x1f1191[_0xbe04('0x3d')]=_[_0xbe04('0x3e')](_0xb93c26[_0xbe04('0x3c')],qs['fields'](_0x47763c[_0xbe04('0x3a')][_0xbe04('0x85')]));_0x1f1191[_0xbe04('0x3d')]=_0x1f1191[_0xbe04('0x3d')][_0xbe04('0x32')]?_0x1f1191[_0xbe04('0x3d')]:_0xb93c26['model'];_0x1f1191[_0xbe04('0x41')]=qs[_0xbe04('0x42')](_0x47763c[_0xbe04('0x3a')][_0xbe04('0x42')]);_0x1f1191[_0xbe04('0x43')]=qs[_0xbe04('0x3b')](_[_0xbe04('0xc9')](_0x47763c[_0xbe04('0x3a')],_0xb93c26['filters']));if(_0x47763c[_0xbe04('0x3a')]['filter']){_0x1f1191[_0xbe04('0x43')]=_[_0xbe04('0x9b')](_0x1f1191['where'],{'$or':_[_0xbe04('0x53')](_0x1f1191[_0xbe04('0x3d')],function(_0x46ff1c){var _0x2d3d2c={};_0x2d3d2c[_0x46ff1c]={'$like':'%'+_0x47763c[_0xbe04('0x3a')][_0xbe04('0x69')]+'%'};return _0x2d3d2c;})});}_0x1f1191=_[_0xbe04('0x9b')]({},_0x1f1191,_0x47763c['options']);return _0x372fd0['getTags'](_0x1f1191);}})[_0xbe04('0x2a')](function(_0xa630f7){if(_0xa630f7){_0x5ba04e=_0xa630f7[_0xbe04('0x32')];if(!_0x47763c[_0xbe04('0x3a')]['hasOwnProperty'](_0xbe04('0x40'))){_0x1f1191[_0xbe04('0x22')]=qs[_0xbe04('0x22')](_0x47763c[_0xbe04('0x3a')]['limit']);_0x1f1191[_0xbe04('0x21')]=qs[_0xbe04('0x21')](_0x47763c['query'][_0xbe04('0x21')]);}return _0x372fd0[_0xbe04('0xc7')](_0x1f1191);}})[_0xbe04('0x2a')](function(_0x4c3875){if(_0x4c3875){return _0x4c3875?{'count':_0x5ba04e,'rows':_0x4c3875}:null;}})[_0xbe04('0x2a')](respondWithResult(_0x26ebee,null))['catch'](handleError(_0x26ebee,null));};exports['setTags']=function(_0x2a784e,_0x275e9b,_0x197833){if(_0x2a784e['body']['id']){delete _0x2a784e['body']['id'];}return db['CmContact'][_0xbe04('0x37')]({'where':{'id':_0x2a784e['params']['id']}})[_0xbe04('0x2a')](handleEntityNotFound(_0x275e9b,null))['then'](function(_0x4eec37){if(_0x4eec37){return _0x4eec37[_0xbe04('0xca')](_0x2a784e[_0xbe04('0x9c')][_0xbe04('0xcb')]||[]);}return null;})['then'](respondWithResult(_0x275e9b,null))[_0xbe04('0x9a')](handleError(_0x275e9b,null));};exports[_0xbe04('0xcc')]=function(_0x471054,_0x2fb6ec,_0x52d54f){var _0x545888={'raw':![],'where':{}};var _0x1fba95={};var _0x5be8d0={'count':0x0,'rows':[]};return db[_0xbe04('0x92')][_0xbe04('0x37')]({'where':{'id':_0x471054[_0xbe04('0x93')]['id']}})[_0xbe04('0x2a')](handleEntityNotFound(_0x2fb6ec,null))[_0xbe04('0x2a')](function(_0x298f97){if(_0x298f97){_0x1fba95[_0xbe04('0x3c')]=_[_0xbe04('0x33')](db[_0xbe04('0xa1')]['rawAttributes']);_0x1fba95[_0xbe04('0x3a')]=_[_0xbe04('0x33')](_0x471054[_0xbe04('0x3a')]);_0x1fba95[_0xbe04('0x3b')]=_[_0xbe04('0x3e')](_0x1fba95[_0xbe04('0x3c')],_0x1fba95[_0xbe04('0x3a')]);_0x545888['attributes']=_['intersection'](_0x1fba95[_0xbe04('0x3c')],qs[_0xbe04('0x85')](_0x471054[_0xbe04('0x3a')]['fields']));_0x545888['attributes']=_0x545888['attributes']['length']?_0x545888['attributes']:_0x1fba95['model'];if(!_0x471054[_0xbe04('0x3a')][_0xbe04('0x3f')]('nolimit')){_0x545888[_0xbe04('0x22')]=qs['limit'](_0x471054[_0xbe04('0x3a')][_0xbe04('0x22')]);_0x545888[_0xbe04('0x21')]=qs[_0xbe04('0x21')](_0x471054[_0xbe04('0x3a')][_0xbe04('0x21')]);}_0x545888[_0xbe04('0x41')]=qs['sort'](_0x471054[_0xbe04('0x3a')][_0xbe04('0x42')]);_0x545888[_0xbe04('0x43')]=qs['filters'](_[_0xbe04('0xc9')](_0x471054[_0xbe04('0x3a')],_0x1fba95['filters']));_0x545888[_0xbe04('0x43')]['ContactId']=_0x298f97['id'];if(_0x471054[_0xbe04('0x3a')][_0xbe04('0x69')]){_0x545888['where']=_[_0xbe04('0x9b')](_0x545888['where'],{'$or':_[_0xbe04('0x53')](_0x545888['attributes'],function(_0x10af78){var _0x10f1f8={};_0x10f1f8[_0x10af78]={'$like':'%'+_0x471054[_0xbe04('0x3a')][_0xbe04('0x69')]+'%'};return _0x10f1f8;})});}_0x545888=_[_0xbe04('0x9b')]({},_0x545888,_0x471054[_0xbe04('0xcd')]);return db[_0xbe04('0xa1')]['count']({'where':_0x545888[_0xbe04('0x43')]})['then'](function(_0x3b2798){_0x5be8d0[_0xbe04('0x24')]=_0x3b2798;if(_0x471054[_0xbe04('0x3a')][_0xbe04('0xce')]){_0x545888[_0xbe04('0xcf')]=[{'all':!![]}];}return db[_0xbe04('0xa1')][_0xbe04('0x98')](_0x545888);})[_0xbe04('0x2a')](function(_0x32a7ad){_0x5be8d0[_0xbe04('0xd0')]=_0x32a7ad;return _0x5be8d0;});}})['then'](respondWithFilteredResult(_0x2fb6ec,_0x545888))[_0xbe04('0x9a')](handleError(_0x2fb6ec,null));};exports['getHopperHistories']=function(_0x54dc7d,_0x18735a,_0x1f4d09){var _0x113524={'raw':!![],'where':{}};var _0x5cdeea={};var _0x128b98={'count':0x0,'rows':[]};return db[_0xbe04('0x92')][_0xbe04('0x37')]({'where':{'id':_0x54dc7d[_0xbe04('0x93')]['id']}})[_0xbe04('0x2a')](handleEntityNotFound(_0x18735a,null))[_0xbe04('0x2a')](function(_0x5f4333){if(_0x5f4333){_0x5cdeea[_0xbe04('0x3c')]=_[_0xbe04('0x33')](db[_0xbe04('0xaf')]['rawAttributes']);_0x5cdeea[_0xbe04('0x3a')]=_[_0xbe04('0x33')](_0x54dc7d[_0xbe04('0x3a')]);_0x5cdeea[_0xbe04('0x3b')]=_[_0xbe04('0x3e')](_0x5cdeea[_0xbe04('0x3c')],_0x5cdeea[_0xbe04('0x3a')]);_0x113524[_0xbe04('0x3d')]=_['intersection'](_0x5cdeea['model'],qs[_0xbe04('0x85')](_0x54dc7d[_0xbe04('0x3a')][_0xbe04('0x85')]));_0x113524[_0xbe04('0x3d')]=_0x113524[_0xbe04('0x3d')][_0xbe04('0x32')]?_0x113524[_0xbe04('0x3d')]:_0x5cdeea[_0xbe04('0x3c')];if(!_0x54dc7d['query']['hasOwnProperty'](_0xbe04('0x40'))){_0x113524['limit']=qs['limit'](_0x54dc7d['query'][_0xbe04('0x22')]);_0x113524['offset']=qs['offset'](_0x54dc7d[_0xbe04('0x3a')][_0xbe04('0x21')]);}_0x113524[_0xbe04('0x41')]=qs[_0xbe04('0x42')](_0x54dc7d[_0xbe04('0x3a')]['sort']);_0x113524[_0xbe04('0x43')]=qs[_0xbe04('0x3b')](_[_0xbe04('0xc9')](_0x54dc7d[_0xbe04('0x3a')],_0x5cdeea['filters']));_0x113524[_0xbe04('0x43')][_0xbe04('0xd1')]=_0x5f4333['id'];if(_0x54dc7d['query']['filter']){_0x113524['where']=_[_0xbe04('0x9b')](_0x113524[_0xbe04('0x43')],{'$or':_['map'](_0x113524[_0xbe04('0x3d')],function(_0x4b8456){var _0x26f967={};_0x26f967[_0x4b8456]={'$like':'%'+_0x54dc7d[_0xbe04('0x3a')][_0xbe04('0x69')]+'%'};return _0x26f967;})});}_0x113524=_[_0xbe04('0x9b')]({},_0x113524,_0x54dc7d[_0xbe04('0xcd')]);return db[_0xbe04('0xaf')][_0xbe04('0x24')]({'where':_0x113524[_0xbe04('0x43')]})[_0xbe04('0x2a')](function(_0x1321c5){_0x128b98[_0xbe04('0x24')]=_0x1321c5;if(_0x54dc7d['query'][_0xbe04('0xce')]){_0x113524[_0xbe04('0xcf')]=[{'all':!![]}];}return db['CmHopperHistory']['findAll'](_0x113524);})['then'](function(_0x1aa05c){_0x128b98[_0xbe04('0xd0')]=_0x1aa05c;return _0x128b98;});}})[_0xbe04('0x2a')](respondWithFilteredResult(_0x18735a,_0x113524))[_0xbe04('0x9a')](handleError(_0x18735a,null));};exports[_0xbe04('0xd2')]=function(_0x4eebeb,_0x5359fa,_0x12f529){var _0x4cb66e={'raw':!![],'where':{}};var _0x519277={};var _0xc19b33={'count':0x0,'rows':[]};return db['CmContact']['findOne']({'where':{'id':_0x4eebeb[_0xbe04('0x93')]['id']}})[_0xbe04('0x2a')](handleEntityNotFound(_0x5359fa,null))['then'](function(_0x17b7ba){if(_0x17b7ba){_0x519277[_0xbe04('0x3c')]=_[_0xbe04('0x33')](db[_0xbe04('0xae')][_0xbe04('0xc8')]);_0x519277[_0xbe04('0x3a')]=_['keys'](_0x4eebeb[_0xbe04('0x3a')]);_0x519277[_0xbe04('0x3b')]=_[_0xbe04('0x3e')](_0x519277['model'],_0x519277['query']);_0x4cb66e[_0xbe04('0x3d')]=_[_0xbe04('0x3e')](_0x519277[_0xbe04('0x3c')],qs[_0xbe04('0x85')](_0x4eebeb['query'][_0xbe04('0x85')]));_0x4cb66e['attributes']=_0x4cb66e[_0xbe04('0x3d')][_0xbe04('0x32')]?_0x4cb66e[_0xbe04('0x3d')]:_0x519277[_0xbe04('0x3c')];if(!_0x4eebeb[_0xbe04('0x3a')][_0xbe04('0x3f')](_0xbe04('0x40'))){_0x4cb66e['limit']=qs['limit'](_0x4eebeb[_0xbe04('0x3a')][_0xbe04('0x22')]);_0x4cb66e['offset']=qs['offset'](_0x4eebeb[_0xbe04('0x3a')][_0xbe04('0x21')]);}_0x4cb66e[_0xbe04('0x41')]=qs[_0xbe04('0x42')](_0x4eebeb[_0xbe04('0x3a')][_0xbe04('0x42')]);_0x4cb66e[_0xbe04('0x43')]=qs['filters'](_[_0xbe04('0xc9')](_0x4eebeb['query'],_0x519277[_0xbe04('0x3b')]));_0x4cb66e[_0xbe04('0x43')][_0xbe04('0xd1')]=_0x17b7ba['id'];if(_0x4eebeb[_0xbe04('0x3a')][_0xbe04('0x69')]){_0x4cb66e[_0xbe04('0x43')]=_[_0xbe04('0x9b')](_0x4cb66e[_0xbe04('0x43')],{'$or':_[_0xbe04('0x53')](_0x4cb66e[_0xbe04('0x3d')],function(_0x256bb0){var _0x5e2da3={};_0x5e2da3[_0x256bb0]={'$like':'%'+_0x4eebeb[_0xbe04('0x3a')][_0xbe04('0x69')]+'%'};return _0x5e2da3;})});}_0x4cb66e=_[_0xbe04('0x9b')]({},_0x4cb66e,_0x4eebeb[_0xbe04('0xcd')]);return db[_0xbe04('0xae')][_0xbe04('0x24')]({'where':_0x4cb66e['where']})[_0xbe04('0x2a')](function(_0x3e6591){_0xc19b33[_0xbe04('0x24')]=_0x3e6591;if(_0x4eebeb[_0xbe04('0x3a')][_0xbe04('0xce')]){_0x4cb66e[_0xbe04('0xcf')]=[{'all':!![]}];}return db[_0xbe04('0xae')]['findAll'](_0x4cb66e);})[_0xbe04('0x2a')](function(_0x24352f){_0xc19b33[_0xbe04('0xd0')]=_0x24352f;return _0xc19b33;});}})[_0xbe04('0x2a')](respondWithFilteredResult(_0x5359fa,_0x4cb66e))[_0xbe04('0x9a')](handleError(_0x5359fa,null));};exports[_0xbe04('0xd3')]=function(_0x32f72d,_0x3d625b,_0x9b6716){var _0x29ec12={'raw':!![],'where':{}};var _0x128cb4={};var _0x31dcb5={'count':0x0,'rows':[]};return db['CmContact'][_0xbe04('0x37')]({'where':{'id':_0x32f72d['params']['id']}})[_0xbe04('0x2a')](handleEntityNotFound(_0x3d625b,null))['then'](function(_0x4efb8d){if(_0x4efb8d){_0x128cb4['model']=_[_0xbe04('0x33')](db[_0xbe04('0xb4')][_0xbe04('0xc8')]);_0x128cb4[_0xbe04('0x3a')]=_['keys'](_0x32f72d['query']);_0x128cb4[_0xbe04('0x3b')]=_[_0xbe04('0x3e')](_0x128cb4['model'],_0x128cb4['query']);_0x29ec12[_0xbe04('0x3d')]=_[_0xbe04('0x3e')](_0x128cb4['model'],qs[_0xbe04('0x85')](_0x32f72d[_0xbe04('0x3a')][_0xbe04('0x85')]));_0x29ec12[_0xbe04('0x3d')]=_0x29ec12[_0xbe04('0x3d')][_0xbe04('0x32')]?_0x29ec12[_0xbe04('0x3d')]:_0x128cb4[_0xbe04('0x3c')];if(!_0x32f72d[_0xbe04('0x3a')]['hasOwnProperty'](_0xbe04('0x40'))){_0x29ec12[_0xbe04('0x22')]=qs[_0xbe04('0x22')](_0x32f72d[_0xbe04('0x3a')]['limit']);_0x29ec12[_0xbe04('0x21')]=qs[_0xbe04('0x21')](_0x32f72d[_0xbe04('0x3a')][_0xbe04('0x21')]);}_0x29ec12[_0xbe04('0x41')]=qs[_0xbe04('0x42')](_0x32f72d[_0xbe04('0x3a')][_0xbe04('0x42')]);_0x29ec12[_0xbe04('0x43')]=qs['filters'](_['pick'](_0x32f72d[_0xbe04('0x3a')],_0x128cb4[_0xbe04('0x3b')]));_0x29ec12[_0xbe04('0x43')][_0xbe04('0xd1')]=_0x4efb8d['id'];if(_0x32f72d['query']['filter']){_0x29ec12[_0xbe04('0x43')]=_['merge'](_0x29ec12[_0xbe04('0x43')],{'$or':_[_0xbe04('0x53')](_0x29ec12[_0xbe04('0x3d')],function(_0x1c4a88){var _0x4e1241={};_0x4e1241[_0x1c4a88]={'$like':'%'+_0x32f72d[_0xbe04('0x3a')][_0xbe04('0x69')]+'%'};return _0x4e1241;})});}_0x29ec12=_[_0xbe04('0x9b')]({},_0x29ec12,_0x32f72d['options']);return db[_0xbe04('0xb4')][_0xbe04('0x24')]({'where':_0x29ec12['where']})['then'](function(_0x1cfbba){_0x31dcb5[_0xbe04('0x24')]=_0x1cfbba;if(_0x32f72d[_0xbe04('0x3a')]['includeAll']){_0x29ec12[_0xbe04('0xcf')]=[{'all':!![]}];}return db[_0xbe04('0xb4')]['findAll'](_0x29ec12);})['then'](function(_0x35dff5){_0x31dcb5[_0xbe04('0xd0')]=_0x35dff5;return _0x31dcb5;});}})[_0xbe04('0x2a')](respondWithFilteredResult(_0x3d625b,_0x29ec12))[_0xbe04('0x9a')](handleError(_0x3d625b,null));};exports[_0xbe04('0xd4')]=function(_0x3fcf5b,_0x39a788,_0x30be7d){try{if(!_0x3fcf5b[_0xbe04('0x9c')][_0xbe04('0x63')]){throw new Error('No\x20ListId\x20specified');}if(!_0x3fcf5b[_0xbe04('0x9c')][_0xbe04('0xd5')]){throw new Error(_0xbe04('0xd6'));}if(!_0x3fcf5b['body'][_0xbe04('0xd7')]){throw new Error(_0xbe04('0xd8'));}if(!_0x3fcf5b[_0xbe04('0x9c')][_0xbe04('0xd9')]){throw new Error(_0xbe04('0xda'));}var _0x3b6212=_0x3fcf5b[_0xbe04('0x9c')][_0xbe04('0xd5')][_0xbe04('0x90')](',');var _0x1ea0b9=_0x3fcf5b[_0xbe04('0x9c')][_0xbe04('0xd7')][_0xbe04('0x90')](',');if(!_0x3b6212[_0xbe04('0x32')]||!_0x1ea0b9[_0xbe04('0x32')]||_0x3b6212[_0xbe04('0x32')]!==_0x1ea0b9['length']){throw new Error(_0xbe04('0xdb'));}_0x3fcf5b[_0xbe04('0x9c')][_0xbe04('0x85')]=_[_0xbe04('0xdc')](_0x3b6212,_0x1ea0b9);if(!_0x3fcf5b[_0xbe04('0x9c')][_0xbe04('0x85')]['phone']){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x3fcf5b[_0xbe04('0x9c')]['fields'][_0xbe04('0xdd')]){throw new Error('No\x20firstName\x20column\x20specified');}var _0xb83087=path[_0xbe04('0xde')](config['root'],_0xbe04('0xdf'),_0x3fcf5b[_0xbe04('0xe0')][_0xbe04('0xe1')]);fs[_0xbe04('0xe2')](_0xb83087,parseInt(_0xbe04('0xe3'),0x8));var _0x183de9=require(_0xbe04('0xe4'))[_0xbe04('0xe5')](path['join'](__dirname,_0xbe04('0xe6')),[_0xb83087,_0x3fcf5b[_0xbe04('0x9c')][_0xbe04('0xd5')],_0x3fcf5b[_0xbe04('0x9c')]['binding_values'],_0x3fcf5b[_0xbe04('0x9c')][_0xbe04('0x63')],_0x3fcf5b[_0xbe04('0x9c')][_0xbe04('0xe7')],_0x3fcf5b[_0xbe04('0x9c')][_0xbe04('0xb8')],_0x3fcf5b[_0xbe04('0x9c')][_0xbe04('0xd9')]]);return _0x39a788[_0xbe04('0x1f')](0xc8)[_0xbe04('0x20')]({'message':_0xbe04('0xe8'),'pid':_0x183de9[_0xbe04('0xe9')]});}catch(_0x2cd932){return _0x39a788['status'](0x1f4)['send'](_0x2cd932);}};exports[_0xbe04('0xea')]=function(_0x264c38,_0x91abe3,_0x2bcf35){var _0x1ac7cc=fs['createReadStream'](_0x264c38[_0xbe04('0xe0')][_0xbe04('0x8')]);Papa[_0xbe04('0xeb')](_0x1ac7cc,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x1de3dd){return _0x91abe3[_0xbe04('0x1f')](0xc8)[_0xbe04('0x20')]({'file':_0x264c38['file'],'fields':_0x1de3dd[_0xbe04('0xec')][_0xbe04('0x85')]});}});};exports['import']=function(_0x1f22ce,_0x386cc2,_0x1f6673){return db[_0xbe04('0x56')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0xbe04('0x7d')}})['then'](function(_0x1c1035){var _0x915570=![];if(!_0x1f22ce[_0xbe04('0x9c')][_0xbe04('0x63')]){throw new Error(_0xbe04('0xed'));}if(!_0x1f22ce[_0xbe04('0x9c')]['binding'][_0xbe04('0xc6')]){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x1f22ce['body'][_0xbe04('0xee')][_0xbe04('0xdd')]){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x1f22ce[_0xbe04('0x9c')]['socket_timestamp']){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x4010c9=require(_0xbe04('0xe4'))[_0xbe04('0xe5')](path[_0xbe04('0xde')](__dirname,_0xbe04('0xef')),[_0x1f22ce[_0xbe04('0x93')]['id'],JSON[_0xbe04('0xf0')](_0x1f22ce[_0xbe04('0x9c')]),JSON[_0xbe04('0xf0')](_0x1c1035)]);_0x4010c9['on']('message',function(_0x3a8103){_0x915570=!![];return _0x386cc2[_0xbe04('0x1f')](0xc8)[_0xbe04('0x20')]({'message':_0xbe04('0xf1'),'pid':_0x4010c9['pid']});});_0x4010c9['on'](_0xbe04('0xf2'),function(_0x1374af){if(_0x1374af&&!_0x915570){return _0x386cc2['status'](0x1f4)[_0xbe04('0x20')]({'message':_0xbe04('0xf3'),'pid':_0x4010c9[_0xbe04('0xe9')]});}});})[_0xbe04('0x9a')](handleError(_0x386cc2,null));};exports['getJourney']=function(_0x1a4430,_0x535340){var _0x50f00f=[_0xbe04('0xf4'),_0xbe04('0xf5'),'sms',_0xbe04('0xf6'),_0xbe04('0xf7'),'whatsapp',_0xbe04('0xf8')];var _0x191e05={'offset':0x0,'order':qs['sort'](_0xbe04('0xf9'))},_0x1e63c9={'count':0x0,'rows':[]};Promise[_0xbe04('0x7a')]()['then'](function(){if(_0x1a4430[_0xbe04('0x3a')][_0xbe04('0xfa')]){if(!_[_0xbe04('0xfb')](_0x50f00f,_0x1a4430['query'][_0xbe04('0xfa')]['toLowerCase']())){throw new Error(_0xbe04('0xfc'));}_0x50f00f=[_0x1a4430[_0xbe04('0x3a')][_0xbe04('0xfa')][_0xbe04('0xfd')]()];}if(_0x1a4430[_0xbe04('0x3a')][_0xbe04('0xfe')]){try{var _0x886772=JSON['parse'](_0x1a4430[_0xbe04('0x3a')][_0xbe04('0xfe')]);if(!moment(_0x886772[_0xbe04('0x46')])[_0xbe04('0xff')]()){throw new Error(_0xbe04('0x100'));}if(!moment(_0x886772['to'])[_0xbe04('0xff')]()){throw new Error('Invalid\x20date\x20for\x20range\x20to\x20filter');}}catch(_0x4445ea){throw new Error(_0xbe04('0x101'));}}if(!_0x1a4430[_0xbe04('0x3a')][_0xbe04('0x3f')](_0xbe04('0x40'))){_0x191e05[_0xbe04('0x22')]=qs[_0xbe04('0x22')](_0x1a4430['query'][_0xbe04('0x22')]||0xa);_0x191e05[_0xbe04('0x21')]=qs['offset'](_0x1a4430[_0xbe04('0x3a')]['offset']);}var _0x2d4fe4=_0x50f00f[_0xbe04('0x53')](function(_0x35a85a){if(_0x35a85a==='voice'){var _0x6cf568={'attributes':['id',_0xbe04('0x102'),_0xbe04('0x39'),'source','destination','callerid',_0xbe04('0x103'),_0xbe04('0x104'),_0xbe04('0x105'),_0xbe04('0x106'),'createdAt',_0xbe04('0x107'),_0xbe04('0x108'),'userThirdDisposition',_0xbe04('0x109')],'where':{'ContactId':_0x1a4430[_0xbe04('0x93')]['id']},'include':[{'model':db[_0xbe04('0x56')],'as':_0xbe04('0x56'),'attributes':['id',_0xbe04('0x2e'),_0xbe04('0x10a'),'alias']}],'order':[[_0xbe04('0x10b'),_0xbe04('0x77')]]};if(_0x1a4430['query'][_0xbe04('0xfe')]){_0x6cf568['where'][_0xbe04('0x10b')]={'$gte':_0x886772['from'],'$lte':_0x886772['to']};}return db[_0xbe04('0xb0')][_0xbe04('0x10c')](_0x6cf568)[_0xbe04('0x2a')](function(_0x4d1310){_0x1e63c9['count']+=_0x4d1310[_0xbe04('0x24')];return _['map'](_0x4d1310[_0xbe04('0xd0')],function(_0x3e5976){var _0x4ebb3d=_0x3e5976['get']({'plain':!![]});_0x4ebb3d['channel']=_0x35a85a;if(_0x4ebb3d['User']){_0x4ebb3d[_0xbe04('0x56')]={'id':_0x4ebb3d['User']['id'],'name':_0x4ebb3d['User'][_0xbe04('0x2e')],'fullname':_0x4ebb3d[_0xbe04('0x56')][_0xbe04('0x10a')],'alias':_0x4ebb3d['User'][_0xbe04('0x10d')]};}return _0x4ebb3d;});});}else{var _0x5f3e47=_[_0xbe04('0x10e')](_0x35a85a)+(_0x35a85a===_0xbe04('0xf5')?'Website':_0xbe04('0x10f'));var _0x346df6={'attributes':['id','closed',_0xbe04('0x110'),'createdAt','note',_0xbe04('0x111'),_0xbe04('0x112'),_0xbe04('0x113'),_0xbe04('0x109'),_0x5f3e47+'Id'],'where':{'ContactId':_0x1a4430[_0xbe04('0x93')]['id']},'include':[{'model':db[_0x5f3e47],'as':_0xbe04('0x10f'),'attributes':['id',_0xbe04('0x2e'),'key']},{'model':db[_0xbe04('0x56')],'as':_0xbe04('0x114'),'attributes':['id',_0xbe04('0x2e'),_0xbe04('0x10a')]},{'model':db[_0xbe04('0xbc')],'as':_0xbe04('0x8f'),'attributes':['id',_0xbe04('0x2e'),'color'],'through':{'attributes':[]}}],'order':[[_0xbe04('0x10b'),_0xbe04('0x77')]]};if(_0x1a4430[_0xbe04('0x3a')]['range']){_0x346df6[_0xbe04('0x43')]['createdAt']={'$gte':_0x886772[_0xbe04('0x46')],'$lte':_0x886772['to']};}switch(_0x35a85a){case'chat':_0x346df6[_0xbe04('0x3d')][_0xbe04('0x35')](_0xbe04('0x115'),_0xbe04('0x116'),_0xbe04('0x117'),'deviceModel',_0xbe04('0x118'),_0xbe04('0x119'),_0xbe04('0x11a'),'ratingValue',_0xbe04('0x11b'));break;case'mail':_0x346df6[_0xbe04('0x3d')][_0xbe04('0x35')]('subject',_0xbe04('0x11c'));break;case _0xbe04('0xf6'):_0x346df6['attributes']['push'](_0xbe04('0x11d'),'threadId');break;}return db[_[_0xbe04('0x10e')](_0x35a85a)+_0xbe04('0x11e')][_0xbe04('0x10c')](_0x346df6)['then'](function(_0x239b12){_0x1e63c9['count']+=_0x239b12['count'];return _[_0xbe04('0x53')](_0x239b12[_0xbe04('0xd0')],function(_0x49ca9b){var _0x48c6e3=_0x49ca9b[_0xbe04('0x9d')]({'plain':!![]});_0x48c6e3[_0xbe04('0xfa')]=_0x35a85a;if(_0x48c6e3[_0xbe04('0x114')]){_0x48c6e3[_0xbe04('0x114')]={'id':_0x48c6e3[_0xbe04('0x114')]['id'],'name':_0x48c6e3['Owner'][_0xbe04('0x2e')],'fullname':_0x48c6e3['Owner']['fullname']};}return _0x48c6e3;});});}});return Promise[_0xbe04('0x38')](_0x2d4fe4);})[_0xbe04('0x2a')](function(_0x1ca721){return _(_0x1ca721)['flatten']()[_0xbe04('0x11f')](_0xbe04('0x10b'))[_0xbe04('0x120')]()[_0xbe04('0x52')]();})[_0xbe04('0x2a')](function(_0x2e0460){_0x1e63c9[_0xbe04('0xd0')]=_0x191e05[_0xbe04('0x22')]?_0x2e0460[_0xbe04('0x121')](_0x191e05[_0xbe04('0x21')],_0x191e05[_0xbe04('0x21')]+_0x191e05[_0xbe04('0x22')]):_0x2e0460;return _0x1e63c9;})[_0xbe04('0x2a')](respondWithFilteredResult(_0x535340,_0x191e05))[_0xbe04('0x9a')](handleError(_0x535340,null));};
\ No newline at end of file
index 422e6ec..0a70a19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87a3=['save','update','remove','emit','exports','events','CmContact'];(function(_0x24d33b,_0xf7d3e7){var _0x364e5f=function(_0x2bf3de){while(--_0x2bf3de){_0x24d33b['push'](_0x24d33b['shift']());}};_0x364e5f(++_0xf7d3e7);}(_0x87a3,0xa6));var _0x387a=function(_0x245afe,_0x319cde){_0x245afe=_0x245afe-0x0;var _0x4eefde=_0x87a3[_0x245afe];return _0x4eefde;};'use strict';var EventEmitter=require(_0x387a('0x0'));var CmContact=require('../../mysqldb')['db'][_0x387a('0x1')];var CmContactEvents=new EventEmitter();CmContactEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x387a('0x2'),'afterUpdate':_0x387a('0x3'),'afterDestroy':_0x387a('0x4')};function emitEvent(_0x29b20e){return function(_0x20744e,_0x2ad321,_0x346553){CmContactEvents[_0x387a('0x5')](_0x29b20e+':'+_0x20744e['id'],_0x20744e);CmContactEvents['emit'](_0x29b20e,_0x20744e);_0x346553(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmContact['hook'](e,emitEvent(event));}}module[_0x387a('0x6')]=CmContactEvents;
\ No newline at end of file
+var _0xc67b=['../../mysqldb','CmContact','setMaxListeners','update','remove','emit','hasOwnProperty','exports'];(function(_0x4b2436,_0x452299){var _0x4f5ab2=function(_0x5c6679){while(--_0x5c6679){_0x4b2436['push'](_0x4b2436['shift']());}};_0x4f5ab2(++_0x452299);}(_0xc67b,0x88));var _0xbc67=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0xc67b[_0x3e5086];return _0xfeb102;};'use strict';var EventEmitter=require('events');var CmContact=require(_0xbc67('0x0'))['db'][_0xbc67('0x1')];var CmContactEvents=new EventEmitter();CmContactEvents[_0xbc67('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xbc67('0x3'),'afterDestroy':_0xbc67('0x4')};function emitEvent(_0x67d49e){return function(_0x2c9e86,_0x45b9f7,_0x5bd40f){CmContactEvents[_0xbc67('0x5')](_0x67d49e+':'+_0x2c9e86['id'],_0x2c9e86);CmContactEvents[_0xbc67('0x5')](_0x67d49e,_0x2c9e86);_0x5bd40f(null);};}for(var e in events){if(events[_0xbc67('0x6')](e)){var event=events[e];CmContact['hook'](e,emitEvent(event));}}module[_0xbc67('0x7')]=CmContactEvents;
\ No newline at end of file
index 3f3dd99..aa8f904 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca66=['bluebird','request-promise','path','./cmContact.attributes','exports','define','phone','fti_cm_contacts','mobile','fax','email','FULLTEXT','utf8mb4','models','get','error','cmContact','afterCreate','inspect','CmHopper','then','isNil','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','ListId','priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','catch','findOne','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','create','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','findAll','outbound','dialCheckDuplicateType','CmList','Lists','length','always','VoiceQueue','CmHopperBlack','cmContact,\x20%s,\x20%s','message','Campaign','onlyIfOpen','BlackLists','List\x20not\x20found','destroy','ContactId','VoiceQueueId','CampaignId','push','[CmContact][afterDestroy][Error]','lodash','util','../../config/logger','api','moment'];(function(_0x1ceaef,_0x140b16){var _0x50ead9=function(_0x24a41c){while(--_0x24a41c){_0x1ceaef['push'](_0x1ceaef['shift']());}};_0x50ead9(++_0x140b16);}(_0xca66,0xbe));var _0x6ca6=function(_0x35a61d,_0x5073ce){_0x35a61d=_0x35a61d-0x0;var _0x21c4e6=_0xca66[_0x35a61d];return _0x21c4e6;};'use strict';var _=require(_0x6ca6('0x0'));var util=require(_0x6ca6('0x1'));var logger=require(_0x6ca6('0x2'))(_0x6ca6('0x3'));var moment=require(_0x6ca6('0x4'));var BPromise=require(_0x6ca6('0x5'));var rp=require(_0x6ca6('0x6'));var fs=require('fs');var path=require(_0x6ca6('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x6ca6('0x8'));module[_0x6ca6('0x9')]=function(_0x427bbe,_0xebe198){return _0x427bbe[_0x6ca6('0xa')]('CmContact',attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0x6ca6('0xb'),'fields':[_0x6ca6('0xb')]},{'name':_0x6ca6('0xc'),'fields':['firstName','lastName',_0x6ca6('0xb'),_0x6ca6('0xd'),_0x6ca6('0xe'),_0x6ca6('0xf')],'type':_0x6ca6('0x10')}],'timestamps':!![],'charset':_0x6ca6('0x11'),'collate':'utf8mb4_unicode_ci','hooks':{'afterCreate':function(_0x4fc3e3,_0x20ea95,_0x467ae9){var _0x33dfe9=_0x427bbe[_0x6ca6('0x12')];var _0x537ebf=_0x4fc3e3[_0x6ca6('0x13')]({'plain':!![]});function _0x3cb819(){return function(_0x1f0a2c){logger[_0x6ca6('0x14')](_0x6ca6('0x15'),_0x6ca6('0x16'),util[_0x6ca6('0x17')](_0x1f0a2c,{'showHidden':![],'depth':null}));};}var _0x288495=function(_0x4eea5d){return new BPromise(function(_0x38074a,_0x114be5){_0x33dfe9[_0x6ca6('0x18')]['findOne']({'where':{'phone':_0x537ebf[_0x6ca6('0xb')],'VoiceQueueId':_0x4eea5d['id']}})[_0x6ca6('0x19')](function(_0x56fb92){if(!_[_0x6ca6('0x1a')](_0x56fb92)){throw new Error(_0x6ca6('0x1b')+_0x537ebf['phone']+_0x6ca6('0x1c')+_0x4eea5d['id']);}return _0x33dfe9[_0x6ca6('0x18')]['create']({'phone':_0x537ebf[_0x6ca6('0xb')],'ContactId':_0x537ebf['id'],'ListId':_0x537ebf[_0x6ca6('0x1d')],'priority':_0x537ebf['priority']?_0x537ebf[_0x6ca6('0x1e')]:0x2,'scheduledat':_0x537ebf[_0x6ca6('0x1f')]?_0x537ebf[_0x6ca6('0x1f')]:moment()[_0x6ca6('0x20')](_0x6ca6('0x21')),'callback':_0x537ebf[_0x6ca6('0x22')]?!![]:![],'callbackuniqueid':_0x537ebf['callbackUniqueid']?_0x537ebf['callbackUniqueid']:undefined,'callbackat':_0x537ebf[_0x6ca6('0x22')]?moment()[_0x6ca6('0x20')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x4eea5d['id']});})[_0x6ca6('0x23')](function(_0x65b9b4){_0x114be5(_0x65b9b4);});});};var _0x240940=function(_0x381145){return new BPromise(function(_0x108150,_0x28044a){_0x33dfe9[_0x6ca6('0x18')][_0x6ca6('0x24')]({'where':{'phone':_0x537ebf[_0x6ca6('0xb')],'VoiceQueueId':_0x381145['id']}})[_0x6ca6('0x19')](function(_0x4ea654){if(!_['isNil'](_0x4ea654)){throw new Error(_0x6ca6('0x1b')+_0x537ebf['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x381145['id']);}return _0x33dfe9[_0x6ca6('0x25')][_0x6ca6('0x24')]({'where':{'calleridnum':_0x537ebf[_0x6ca6('0xb')],'VoiceQueueId':_0x381145['id']}});})[_0x6ca6('0x19')](function(_0x50ceac){if(!_[_0x6ca6('0x1a')](_0x50ceac)){throw new Error(_0x6ca6('0x26')+_0x537ebf['phone']+_0x6ca6('0x27')+_0x381145['id']);}return _0x33dfe9['CmHopper'][_0x6ca6('0x28')]({'phone':_0x537ebf[_0x6ca6('0xb')],'ContactId':_0x537ebf['id'],'ListId':_0x537ebf[_0x6ca6('0x1d')],'priority':_0x537ebf[_0x6ca6('0x1e')]?_0x537ebf[_0x6ca6('0x1e')]:0x2,'scheduledat':_0x537ebf['scheduledat']?_0x537ebf[_0x6ca6('0x1f')]:moment()[_0x6ca6('0x20')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x537ebf[_0x6ca6('0x22')]?!![]:![],'callbackuniqueid':_0x537ebf[_0x6ca6('0x22')]?_0x537ebf[_0x6ca6('0x22')]:undefined,'callbackat':_0x537ebf[_0x6ca6('0x22')]?moment()['format'](_0x6ca6('0x21')):undefined,'VoiceQueueId':_0x381145['id']});})['catch'](function(_0x4c1e5b){_0x28044a(_0x4c1e5b);});});};function _0x7214a7(){return function(_0x5249ca){logger['error'](_0x6ca6('0x15'),_0x6ca6('0x16'),util['inspect'](_0x5249ca,{'showHidden':![],'depth':null}));};}var _0x35bea2=function(_0x5b4d67){return new BPromise(function(_0x5c237f,_0x446a0e){_0x33dfe9['CmHopper'][_0x6ca6('0x24')]({'where':{'phone':_0x537ebf['phone'],'CampaignId':_0x5b4d67['id']}})[_0x6ca6('0x19')](function(_0x16fe7d){if(!_[_0x6ca6('0x1a')](_0x16fe7d)){throw new Error(_0x6ca6('0x1b')+_0x537ebf['phone']+_0x6ca6('0x29')+_0x5b4d67['id']);}return _0x33dfe9[_0x6ca6('0x18')]['create']({'phone':_0x537ebf['phone'],'ContactId':_0x537ebf['id'],'ListId':_0x537ebf[_0x6ca6('0x1d')],'priority':_0x537ebf[_0x6ca6('0x1e')]?_0x537ebf[_0x6ca6('0x1e')]:0x2,'scheduledat':_0x537ebf['scheduledat']?_0x537ebf[_0x6ca6('0x1f')]:moment()[_0x6ca6('0x20')](_0x6ca6('0x21')),'callback':_0x537ebf[_0x6ca6('0x22')]?!![]:![],'callbackuniqueid':_0x537ebf[_0x6ca6('0x22')]?_0x537ebf[_0x6ca6('0x22')]:undefined,'callbackat':_0x537ebf[_0x6ca6('0x22')]?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x5b4d67['id']});})[_0x6ca6('0x23')](function(_0x3cb0a2){_0x446a0e(_0x3cb0a2);});});};var _0x9c69fd=function(_0x39684d){return new BPromise(function(_0x267d6b,_0x1ce81a){_0x33dfe9[_0x6ca6('0x18')][_0x6ca6('0x24')]({'where':{'phone':_0x537ebf[_0x6ca6('0xb')],'CampaignId':_0x39684d['id']}})['then'](function(_0xb77459){if(!_[_0x6ca6('0x1a')](_0xb77459)){throw new Error(_0x6ca6('0x1b')+_0x537ebf[_0x6ca6('0xb')]+_0x6ca6('0x2a')+_0x39684d['id']);}return _0x33dfe9[_0x6ca6('0x25')][_0x6ca6('0x24')]({'where':{'calleridnum':_0x537ebf[_0x6ca6('0xb')],'CampaignId':_0x39684d['id']}});})[_0x6ca6('0x19')](function(_0x168952){if(!_[_0x6ca6('0x1a')](_0x168952)){throw new Error(_0x6ca6('0x26')+_0x537ebf[_0x6ca6('0xb')]+_0x6ca6('0x2b')+_0x39684d['id']);}return _0x33dfe9[_0x6ca6('0x18')][_0x6ca6('0x28')]({'phone':_0x537ebf[_0x6ca6('0xb')],'ContactId':_0x537ebf['id'],'ListId':_0x537ebf[_0x6ca6('0x1d')],'priority':_0x537ebf[_0x6ca6('0x1e')]?_0x537ebf['priority']:0x2,'scheduledat':_0x537ebf['scheduledat']?_0x537ebf['scheduledat']:moment()[_0x6ca6('0x20')](_0x6ca6('0x21')),'callback':_0x537ebf['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x537ebf[_0x6ca6('0x22')]?_0x537ebf['callbackUniqueid']:undefined,'callbackat':_0x537ebf[_0x6ca6('0x22')]?moment()['format'](_0x6ca6('0x21')):undefined,'CampaignId':_0x39684d['id']});})[_0x6ca6('0x23')](function(_0x4ce61e){_0x1ce81a(_0x4ce61e);});});};if(_0x537ebf['ListId']){_0x33dfe9['VoiceQueue'][_0x6ca6('0x2c')]({'where':{'type':_0x6ca6('0x2d')},'attributes':['id',_0x6ca6('0x2e')],'include':[{'model':_0x33dfe9[_0x6ca6('0x2f')],'as':_0x6ca6('0x30'),'where':{'id':_0x537ebf['ListId']}}]})[_0x6ca6('0x19')](function(_0x118e0e){if(_0x118e0e){var _0x214cde=[];for(var _0x1c0b18=0x0,_0x226f02;_0x1c0b18<_0x118e0e[_0x6ca6('0x31')];_0x1c0b18+=0x1){_0x226f02=_0x118e0e[_0x1c0b18][_0x6ca6('0x13')]({'plain':!![]});switch(_0x226f02[_0x6ca6('0x2e')]){case _0x6ca6('0x32'):_0x240940(_0x226f02)[_0x6ca6('0x23')](_0x3cb819());break;case'onlyIfOpen':_0x288495(_0x226f02)[_0x6ca6('0x23')](_0x3cb819());break;default:_0x33dfe9['CmHopper'][_0x6ca6('0x28')]({'phone':_0x537ebf['phone'],'ContactId':_0x537ebf['id'],'ListId':_0x537ebf[_0x6ca6('0x1d')],'scheduledat':_0x537ebf[_0x6ca6('0x1f')]?_0x537ebf[_0x6ca6('0x1f')]:moment()[_0x6ca6('0x20')](_0x6ca6('0x21')),'priority':_0x537ebf['priority']?_0x537ebf['priority']:0x2,'callback':_0x537ebf[_0x6ca6('0x22')]?!![]:![],'callbackuniqueid':_0x537ebf[_0x6ca6('0x22')]?_0x537ebf[_0x6ca6('0x22')]:undefined,'callbackat':_0x537ebf[_0x6ca6('0x22')]?moment()[_0x6ca6('0x20')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x226f02['id']})[_0x6ca6('0x23')](_0x3cb819());}}}})[_0x6ca6('0x19')](function(){return _0x33dfe9[_0x6ca6('0x33')]['findAll']({'where':{'type':_0x6ca6('0x2d')},'attributes':['id'],'include':[{'model':_0x33dfe9[_0x6ca6('0x2f')],'as':'BlackLists','where':{'id':_0x537ebf['ListId']}}]})['then'](function(_0x53b65e){if(_0x53b65e){var _0x3116e8=[];for(var _0x2b33e7=0x0,_0x5e2cbf;_0x2b33e7<_0x53b65e[_0x6ca6('0x31')];_0x2b33e7+=0x1){_0x5e2cbf=_0x53b65e[_0x2b33e7][_0x6ca6('0x13')]({'plain':!![]});_0x33dfe9[_0x6ca6('0x34')]['create']({'phone':_0x537ebf[_0x6ca6('0xb')],'ContactId':_0x537ebf['id'],'ListId':_0x537ebf[_0x6ca6('0x1d')],'VoiceQueueId':_0x5e2cbf['id']})[_0x6ca6('0x23')](function(_0x19b88f){logger[_0x6ca6('0x14')](_0x6ca6('0x35'),'afterCreate',_0x19b88f[_0x6ca6('0x36')]);});}}});})[_0x6ca6('0x19')](function(){return _0x33dfe9[_0x6ca6('0x37')][_0x6ca6('0x2c')]({'attributes':['id',_0x6ca6('0x2e')],'include':[{'model':_0x33dfe9['CmList'],'as':'Lists','where':{'id':_0x537ebf[_0x6ca6('0x1d')]}}]})['then'](function(_0x247fa1){if(_0x247fa1){var _0x53feee=[];for(var _0x812c5e=0x0,_0x3bd7ca;_0x812c5e<_0x247fa1[_0x6ca6('0x31')];_0x812c5e+=0x1){_0x3bd7ca=_0x247fa1[_0x812c5e][_0x6ca6('0x13')]({'plain':!![]});switch(_0x3bd7ca['dialCheckDuplicateType']){case _0x6ca6('0x32'):_0x9c69fd(_0x3bd7ca)['catch'](_0x7214a7());break;case _0x6ca6('0x38'):_0x35bea2(_0x3bd7ca)[_0x6ca6('0x23')](_0x7214a7());break;default:_0x33dfe9[_0x6ca6('0x18')][_0x6ca6('0x28')]({'phone':_0x537ebf[_0x6ca6('0xb')],'ContactId':_0x537ebf['id'],'ListId':_0x537ebf[_0x6ca6('0x1d')],'scheduledat':_0x537ebf[_0x6ca6('0x1f')]?_0x537ebf[_0x6ca6('0x1f')]:moment()['format'](_0x6ca6('0x21')),'priority':_0x537ebf[_0x6ca6('0x1e')]?_0x537ebf[_0x6ca6('0x1e')]:0x2,'callback':_0x537ebf['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x537ebf[_0x6ca6('0x22')]?_0x537ebf['callbackUniqueid']:undefined,'callbackat':_0x537ebf['callbackUniqueid']?moment()[_0x6ca6('0x20')](_0x6ca6('0x21')):undefined,'CampaignId':_0x3bd7ca['id']})[_0x6ca6('0x23')](_0x7214a7());}}}});})[_0x6ca6('0x19')](function(){return _0x33dfe9[_0x6ca6('0x37')][_0x6ca6('0x2c')]({'attributes':['id'],'include':[{'model':_0x33dfe9['CmList'],'as':_0x6ca6('0x39'),'where':{'id':_0x537ebf[_0x6ca6('0x1d')]}}]})[_0x6ca6('0x19')](function(_0x3224df){if(_0x3224df){var _0x4a16d9=[];for(var _0x436dfd=0x0,_0xbd7d1a;_0x436dfd<_0x3224df['length'];_0x436dfd+=0x1){_0xbd7d1a=_0x3224df[_0x436dfd][_0x6ca6('0x13')]({'plain':!![]});_0x33dfe9[_0x6ca6('0x34')][_0x6ca6('0x28')]({'phone':_0x537ebf[_0x6ca6('0xb')],'ContactId':_0x537ebf['id'],'ListId':_0x537ebf[_0x6ca6('0x1d')],'CampaignId':_0xbd7d1a['id']})[_0x6ca6('0x23')](function(_0x513536){logger['error'](_0x6ca6('0x35'),'afterCreate',_0x513536[_0x6ca6('0x36')]);});}}});})[_0x6ca6('0x19')](function(){_0x467ae9();})[_0x6ca6('0x23')](function(_0x541c97){logger[_0x6ca6('0x14')](_0x6ca6('0x35'),_0x6ca6('0x16'),_0x541c97[_0x6ca6('0x36')]);_0x467ae9(_0x541c97);});}else{_0x467ae9(new Error(_0x6ca6('0x3a')));}},'afterDestroy':function(_0x224b3d,_0x54a7b8,_0x5289ab){var _0x1489e0=_0x427bbe[_0x6ca6('0x12')];var _0x1f5fa8=_0x224b3d['get']({'plain':!![]});return _0x1489e0[_0x6ca6('0x18')][_0x6ca6('0x2c')]({'raw':!![],'where':{'ListId':_0x1f5fa8[_0x6ca6('0x1d')],'ContactId':_0x1f5fa8['id']}})[_0x6ca6('0x19')](function(_0x3014cd){if(!_['isEmpty'](_0x3014cd)){var _0xfcb770=[];for(var _0x278bc4=0x0;_0x278bc4<_0x3014cd['length'];_0x278bc4+=0x1){var _0x222c31=_0x1489e0[_0x6ca6('0x18')][_0x6ca6('0x3b')]({'where':{'ListId':_0x3014cd[_0x278bc4]['ListId'],'ContactId':_0x3014cd[_0x278bc4][_0x6ca6('0x3c')],'VoiceQueueId':_0x3014cd[_0x278bc4][_0x6ca6('0x3d')],'CampaignId':_0x3014cd[_0x278bc4][_0x6ca6('0x3e')]}});_0xfcb770[_0x6ca6('0x3f')](_0x222c31);}return BPromise['all'](_0xfcb770);}})['then'](function(_0x52c541){logger['info']('[CmContact][afterDestroy][Succesfull]',util[_0x6ca6('0x17')](_0x52c541,{'showHidden':![],'depth':null}));_0x5289ab();})['catch'](function(_0x363bbc){logger[_0x6ca6('0x14')](_0x6ca6('0x40'),util['inspect'](_0x363bbc,{'showHidden':![],'depth':null}));_0x5289ab(_0x363bbc);});}}});};
\ No newline at end of file
+var _0xcefd=['CmHopper','findOne','isNil','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId','priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','catch','then','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','findAll','dialCheckDuplicateType','CmList','Lists','outbound','BlackLists','length','CmHopperBlack','cmContact,\x20%s,\x20%s','Campaign','always','message','List\x20not\x20found','isEmpty','destroy','ContactId','VoiceQueueId','all','info','[CmContact][afterDestroy][Succesfull]','inspect','[CmContact][afterDestroy][Error]','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./cmContact.attributes','exports','CmContact','cm_contacts','phone','firstName','lastName','fax','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','models','get','error','cmContact','afterCreate'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xcefd,0x1bd));var _0xdcef=function(_0x45862f,_0xf5f0a6){_0x45862f=_0x45862f-0x0;var _0x35b20b=_0xcefd[_0x45862f];return _0x35b20b;};'use strict';var _=require('lodash');var util=require(_0xdcef('0x0'));var logger=require(_0xdcef('0x1'))(_0xdcef('0x2'));var moment=require(_0xdcef('0x3'));var BPromise=require(_0xdcef('0x4'));var rp=require(_0xdcef('0x5'));var fs=require('fs');var path=require(_0xdcef('0x6'));var rimraf=require('rimraf');var config=require(_0xdcef('0x7'));var attributes=require(_0xdcef('0x8'));module[_0xdcef('0x9')]=function(_0x373ed9,_0x31c2d4){return _0x373ed9['define'](_0xdcef('0xa'),attributes,{'tableName':_0xdcef('0xb'),'paranoid':!![],'indexes':[{'name':_0xdcef('0xc'),'fields':[_0xdcef('0xc')]},{'name':'fti_cm_contacts','fields':[_0xdcef('0xd'),_0xdcef('0xe'),_0xdcef('0xc'),'mobile',_0xdcef('0xf'),'email'],'type':_0xdcef('0x10')}],'timestamps':!![],'charset':_0xdcef('0x11'),'collate':_0xdcef('0x12'),'hooks':{'afterCreate':function(_0xde013,_0x383b85,_0x4fb42d){var _0x140c56=_0x373ed9[_0xdcef('0x13')];var _0x4accb4=_0xde013[_0xdcef('0x14')]({'plain':!![]});function _0x4bbf59(){return function(_0x45d632){logger[_0xdcef('0x15')](_0xdcef('0x16'),_0xdcef('0x17'),util['inspect'](_0x45d632,{'showHidden':![],'depth':null}));};}var _0x227f49=function(_0x3f399d){return new BPromise(function(_0x518d03,_0x270f4d){_0x140c56[_0xdcef('0x18')][_0xdcef('0x19')]({'where':{'phone':_0x4accb4['phone'],'VoiceQueueId':_0x3f399d['id']}})['then'](function(_0x386368){if(!_[_0xdcef('0x1a')](_0x386368)){throw new Error(_0xdcef('0x1b')+_0x4accb4['phone']+_0xdcef('0x1c')+_0x3f399d['id']);}return _0x140c56[_0xdcef('0x18')][_0xdcef('0x1d')]({'phone':_0x4accb4['phone'],'ContactId':_0x4accb4['id'],'ListId':_0x4accb4[_0xdcef('0x1e')],'priority':_0x4accb4['priority']?_0x4accb4[_0xdcef('0x1f')]:0x2,'scheduledat':_0x4accb4[_0xdcef('0x20')]?_0x4accb4[_0xdcef('0x20')]:moment()[_0xdcef('0x21')](_0xdcef('0x22')),'callback':_0x4accb4[_0xdcef('0x23')]?!![]:![],'callbackuniqueid':_0x4accb4[_0xdcef('0x23')]?_0x4accb4[_0xdcef('0x23')]:undefined,'callbackat':_0x4accb4[_0xdcef('0x23')]?moment()['format'](_0xdcef('0x22')):undefined,'VoiceQueueId':_0x3f399d['id']});})[_0xdcef('0x24')](function(_0x1b0ab0){_0x270f4d(_0x1b0ab0);});});};var _0x697abf=function(_0x5a7e1f){return new BPromise(function(_0x4517d6,_0x407fa6){_0x140c56['CmHopper'][_0xdcef('0x19')]({'where':{'phone':_0x4accb4[_0xdcef('0xc')],'VoiceQueueId':_0x5a7e1f['id']}})[_0xdcef('0x25')](function(_0x1eb490){if(!_['isNil'](_0x1eb490)){throw new Error(_0xdcef('0x1b')+_0x4accb4['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x5a7e1f['id']);}return _0x140c56[_0xdcef('0x26')][_0xdcef('0x19')]({'where':{'calleridnum':_0x4accb4[_0xdcef('0xc')],'VoiceQueueId':_0x5a7e1f['id']}});})[_0xdcef('0x25')](function(_0x27b6bb){if(!_[_0xdcef('0x1a')](_0x27b6bb)){throw new Error(_0xdcef('0x27')+_0x4accb4[_0xdcef('0xc')]+_0xdcef('0x28')+_0x5a7e1f['id']);}return _0x140c56[_0xdcef('0x18')]['create']({'phone':_0x4accb4[_0xdcef('0xc')],'ContactId':_0x4accb4['id'],'ListId':_0x4accb4['ListId'],'priority':_0x4accb4[_0xdcef('0x1f')]?_0x4accb4['priority']:0x2,'scheduledat':_0x4accb4[_0xdcef('0x20')]?_0x4accb4['scheduledat']:moment()['format'](_0xdcef('0x22')),'callback':_0x4accb4[_0xdcef('0x23')]?!![]:![],'callbackuniqueid':_0x4accb4[_0xdcef('0x23')]?_0x4accb4[_0xdcef('0x23')]:undefined,'callbackat':_0x4accb4[_0xdcef('0x23')]?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x5a7e1f['id']});})['catch'](function(_0x117a2c){_0x407fa6(_0x117a2c);});});};function _0x86d2da(){return function(_0x2a58f3){logger[_0xdcef('0x15')](_0xdcef('0x16'),_0xdcef('0x17'),util['inspect'](_0x2a58f3,{'showHidden':![],'depth':null}));};}var _0x10df6b=function(_0x40ec8f){return new BPromise(function(_0x33672c,_0x568f51){_0x140c56[_0xdcef('0x18')][_0xdcef('0x19')]({'where':{'phone':_0x4accb4['phone'],'CampaignId':_0x40ec8f['id']}})[_0xdcef('0x25')](function(_0x4f1cc0){if(!_[_0xdcef('0x1a')](_0x4f1cc0)){throw new Error(_0xdcef('0x1b')+_0x4accb4[_0xdcef('0xc')]+_0xdcef('0x29')+_0x40ec8f['id']);}return _0x140c56[_0xdcef('0x18')]['create']({'phone':_0x4accb4['phone'],'ContactId':_0x4accb4['id'],'ListId':_0x4accb4['ListId'],'priority':_0x4accb4[_0xdcef('0x1f')]?_0x4accb4[_0xdcef('0x1f')]:0x2,'scheduledat':_0x4accb4[_0xdcef('0x20')]?_0x4accb4[_0xdcef('0x20')]:moment()['format'](_0xdcef('0x22')),'callback':_0x4accb4[_0xdcef('0x23')]?!![]:![],'callbackuniqueid':_0x4accb4[_0xdcef('0x23')]?_0x4accb4[_0xdcef('0x23')]:undefined,'callbackat':_0x4accb4[_0xdcef('0x23')]?moment()[_0xdcef('0x21')](_0xdcef('0x22')):undefined,'CampaignId':_0x40ec8f['id']});})[_0xdcef('0x24')](function(_0x3032b9){_0x568f51(_0x3032b9);});});};var _0x4d2672=function(_0x287cff){return new BPromise(function(_0x14516d,_0xe8f933){_0x140c56[_0xdcef('0x18')]['findOne']({'where':{'phone':_0x4accb4[_0xdcef('0xc')],'CampaignId':_0x287cff['id']}})['then'](function(_0x305cd3){if(!_[_0xdcef('0x1a')](_0x305cd3)){throw new Error(_0xdcef('0x1b')+_0x4accb4[_0xdcef('0xc')]+_0xdcef('0x2a')+_0x287cff['id']);}return _0x140c56[_0xdcef('0x26')][_0xdcef('0x19')]({'where':{'calleridnum':_0x4accb4['phone'],'CampaignId':_0x287cff['id']}});})[_0xdcef('0x25')](function(_0x28212b){if(!_[_0xdcef('0x1a')](_0x28212b)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x4accb4['phone']+_0xdcef('0x2b')+_0x287cff['id']);}return _0x140c56[_0xdcef('0x18')]['create']({'phone':_0x4accb4[_0xdcef('0xc')],'ContactId':_0x4accb4['id'],'ListId':_0x4accb4[_0xdcef('0x1e')],'priority':_0x4accb4[_0xdcef('0x1f')]?_0x4accb4[_0xdcef('0x1f')]:0x2,'scheduledat':_0x4accb4[_0xdcef('0x20')]?_0x4accb4[_0xdcef('0x20')]:moment()[_0xdcef('0x21')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x4accb4['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x4accb4[_0xdcef('0x23')]?_0x4accb4[_0xdcef('0x23')]:undefined,'callbackat':_0x4accb4['callbackUniqueid']?moment()['format'](_0xdcef('0x22')):undefined,'CampaignId':_0x287cff['id']});})['catch'](function(_0x337ac3){_0xe8f933(_0x337ac3);});});};if(_0x4accb4[_0xdcef('0x1e')]){_0x140c56[_0xdcef('0x2c')][_0xdcef('0x2d')]({'where':{'type':'outbound'},'attributes':['id',_0xdcef('0x2e')],'include':[{'model':_0x140c56[_0xdcef('0x2f')],'as':_0xdcef('0x30'),'where':{'id':_0x4accb4[_0xdcef('0x1e')]}}]})[_0xdcef('0x25')](function(_0x18154f){if(_0x18154f){var _0x554787=[];for(var _0x1f1726=0x0,_0x15301a;_0x1f1726<_0x18154f['length'];_0x1f1726+=0x1){_0x15301a=_0x18154f[_0x1f1726][_0xdcef('0x14')]({'plain':!![]});switch(_0x15301a[_0xdcef('0x2e')]){case'always':_0x697abf(_0x15301a)[_0xdcef('0x24')](_0x4bbf59());break;case'onlyIfOpen':_0x227f49(_0x15301a)[_0xdcef('0x24')](_0x4bbf59());break;default:_0x140c56[_0xdcef('0x18')]['create']({'phone':_0x4accb4[_0xdcef('0xc')],'ContactId':_0x4accb4['id'],'ListId':_0x4accb4['ListId'],'scheduledat':_0x4accb4[_0xdcef('0x20')]?_0x4accb4['scheduledat']:moment()[_0xdcef('0x21')](_0xdcef('0x22')),'priority':_0x4accb4[_0xdcef('0x1f')]?_0x4accb4[_0xdcef('0x1f')]:0x2,'callback':_0x4accb4[_0xdcef('0x23')]?!![]:![],'callbackuniqueid':_0x4accb4[_0xdcef('0x23')]?_0x4accb4['callbackUniqueid']:undefined,'callbackat':_0x4accb4['callbackUniqueid']?moment()[_0xdcef('0x21')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x15301a['id']})[_0xdcef('0x24')](_0x4bbf59());}}}})['then'](function(){return _0x140c56[_0xdcef('0x2c')]['findAll']({'where':{'type':_0xdcef('0x31')},'attributes':['id'],'include':[{'model':_0x140c56[_0xdcef('0x2f')],'as':_0xdcef('0x32'),'where':{'id':_0x4accb4['ListId']}}]})['then'](function(_0x398cd4){if(_0x398cd4){var _0x1106b3=[];for(var _0x1ee578=0x0,_0x414120;_0x1ee578<_0x398cd4[_0xdcef('0x33')];_0x1ee578+=0x1){_0x414120=_0x398cd4[_0x1ee578][_0xdcef('0x14')]({'plain':!![]});_0x140c56[_0xdcef('0x34')]['create']({'phone':_0x4accb4[_0xdcef('0xc')],'ContactId':_0x4accb4['id'],'ListId':_0x4accb4[_0xdcef('0x1e')],'VoiceQueueId':_0x414120['id']})[_0xdcef('0x24')](function(_0x5ce65f){logger[_0xdcef('0x15')](_0xdcef('0x35'),_0xdcef('0x17'),_0x5ce65f['message']);});}}});})[_0xdcef('0x25')](function(){return _0x140c56[_0xdcef('0x36')][_0xdcef('0x2d')]({'attributes':['id',_0xdcef('0x2e')],'include':[{'model':_0x140c56[_0xdcef('0x2f')],'as':_0xdcef('0x30'),'where':{'id':_0x4accb4[_0xdcef('0x1e')]}}]})[_0xdcef('0x25')](function(_0x5e2e6c){if(_0x5e2e6c){var _0x462add=[];for(var _0xb58fa=0x0,_0x2f3aae;_0xb58fa<_0x5e2e6c[_0xdcef('0x33')];_0xb58fa+=0x1){_0x2f3aae=_0x5e2e6c[_0xb58fa][_0xdcef('0x14')]({'plain':!![]});switch(_0x2f3aae[_0xdcef('0x2e')]){case _0xdcef('0x37'):_0x4d2672(_0x2f3aae)[_0xdcef('0x24')](_0x86d2da());break;case'onlyIfOpen':_0x10df6b(_0x2f3aae)[_0xdcef('0x24')](_0x86d2da());break;default:_0x140c56['CmHopper'][_0xdcef('0x1d')]({'phone':_0x4accb4[_0xdcef('0xc')],'ContactId':_0x4accb4['id'],'ListId':_0x4accb4[_0xdcef('0x1e')],'scheduledat':_0x4accb4['scheduledat']?_0x4accb4[_0xdcef('0x20')]:moment()['format'](_0xdcef('0x22')),'priority':_0x4accb4[_0xdcef('0x1f')]?_0x4accb4[_0xdcef('0x1f')]:0x2,'callback':_0x4accb4['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x4accb4[_0xdcef('0x23')]?_0x4accb4['callbackUniqueid']:undefined,'callbackat':_0x4accb4[_0xdcef('0x23')]?moment()[_0xdcef('0x21')](_0xdcef('0x22')):undefined,'CampaignId':_0x2f3aae['id']})[_0xdcef('0x24')](_0x86d2da());}}}});})[_0xdcef('0x25')](function(){return _0x140c56[_0xdcef('0x36')]['findAll']({'attributes':['id'],'include':[{'model':_0x140c56[_0xdcef('0x2f')],'as':_0xdcef('0x32'),'where':{'id':_0x4accb4[_0xdcef('0x1e')]}}]})[_0xdcef('0x25')](function(_0x1afabe){if(_0x1afabe){var _0xa6fb85=[];for(var _0x2269db=0x0,_0x586b30;_0x2269db<_0x1afabe['length'];_0x2269db+=0x1){_0x586b30=_0x1afabe[_0x2269db][_0xdcef('0x14')]({'plain':!![]});_0x140c56[_0xdcef('0x34')][_0xdcef('0x1d')]({'phone':_0x4accb4[_0xdcef('0xc')],'ContactId':_0x4accb4['id'],'ListId':_0x4accb4['ListId'],'CampaignId':_0x586b30['id']})['catch'](function(_0x4f12e6){logger[_0xdcef('0x15')](_0xdcef('0x35'),_0xdcef('0x17'),_0x4f12e6[_0xdcef('0x38')]);});}}});})[_0xdcef('0x25')](function(){_0x4fb42d();})[_0xdcef('0x24')](function(_0x5a4277){logger[_0xdcef('0x15')](_0xdcef('0x35'),_0xdcef('0x17'),_0x5a4277[_0xdcef('0x38')]);_0x4fb42d(_0x5a4277);});}else{_0x4fb42d(new Error(_0xdcef('0x39')));}},'afterDestroy':function(_0x40dab2,_0x24c350,_0x2c5cbb){var _0x4a0b68=_0x373ed9['models'];var _0x255dd5=_0x40dab2[_0xdcef('0x14')]({'plain':!![]});return _0x4a0b68['CmHopper'][_0xdcef('0x2d')]({'raw':!![],'where':{'ListId':_0x255dd5[_0xdcef('0x1e')],'ContactId':_0x255dd5['id']}})[_0xdcef('0x25')](function(_0x1289ac){if(!_[_0xdcef('0x3a')](_0x1289ac)){var _0x43e96e=[];for(var _0x4634b5=0x0;_0x4634b5<_0x1289ac['length'];_0x4634b5+=0x1){var _0x508ac6=_0x4a0b68['CmHopper'][_0xdcef('0x3b')]({'where':{'ListId':_0x1289ac[_0x4634b5]['ListId'],'ContactId':_0x1289ac[_0x4634b5][_0xdcef('0x3c')],'VoiceQueueId':_0x1289ac[_0x4634b5][_0xdcef('0x3d')],'CampaignId':_0x1289ac[_0x4634b5]['CampaignId']}});_0x43e96e['push'](_0x508ac6);}return BPromise[_0xdcef('0x3e')](_0x43e96e);}})[_0xdcef('0x25')](function(_0x15e2bb){logger[_0xdcef('0x3f')](_0xdcef('0x40'),util[_0xdcef('0x41')](_0x15e2bb,{'showHidden':![],'depth':null}));_0x2c5cbb();})[_0xdcef('0x24')](function(_0x20a181){logger['error'](_0xdcef('0x42'),util[_0xdcef('0x41')](_0x20a181,{'showHidden':![],'depth':null}));_0x2c5cbb(_0x20a181);});}}});};
\ No newline at end of file
index 832542b..7b46af9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf71e=['cf_','update','table','cm_contacts','id\x20=\x20?','toString','query','lodash','util','bluebird','ioredis','squel','../../mysqldb','../../config/logger','rpc','jayson/promise','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','register','request','then','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetCmContact','options','raw','where','attributes','limit','include','model','map','CreateCmContact','create','body','keys','length'];(function(_0x3d124b,_0x2b8fb5){var _0x447e49=function(_0xb9f802){while(--_0xb9f802){_0x3d124b['push'](_0x3d124b['shift']());}};_0x447e49(++_0x2b8fb5);}(_0xf71e,0xf7));var _0xef71=function(_0xdd827a,_0x482ad2){_0xdd827a=_0xdd827a-0x0;var _0x2f46f1=_0xf71e[_0xdd827a];return _0x2f46f1;};'use strict';var _=require(_0xef71('0x0'));var util=require(_0xef71('0x1'));var moment=require('moment');var BPromise=require(_0xef71('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xef71('0x3'));var squel=require(_0xef71('0x4'));var db=require(_0xef71('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xef71('0x6'))(_0xef71('0x7'));var config=require('../../config/environment');var jayson=require(_0xef71('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0xef71('0x9')]=_[_0xef71('0xa')](config[_0xef71('0x9')],{'host':_0xef71('0xb'),'port':0x18eb});var socket=require(_0xef71('0xc'))(new Redis(config[_0xef71('0x9')]));require(_0xef71('0xd'))[_0xef71('0xe')](socket);function respondWithRpcPromise(_0x58d72e,_0x283546,_0x427938){return new BPromise(function(_0x5c7a1e,_0x2ef6aa){return client[_0xef71('0xf')](_0x58d72e,_0x427938)[_0xef71('0x10')](function(_0x35c114){logger[_0xef71('0x11')](_0xef71('0x12'),_0x283546,_0xef71('0x13'));logger[_0xef71('0x14')]('CmContact,\x20%s,\x20%s,\x20%s',_0x283546,'request\x20sent',JSON[_0xef71('0x15')](_0x35c114));if(_0x35c114['error']){if(_0x35c114[_0xef71('0x16')][_0xef71('0x17')]===0x1f4){logger['error'](_0xef71('0x12'),_0x283546,_0x35c114[_0xef71('0x16')][_0xef71('0x18')]);return _0x2ef6aa(_0x35c114['error'][_0xef71('0x18')]);}logger['error'](_0xef71('0x12'),_0x283546,_0x35c114[_0xef71('0x16')][_0xef71('0x18')]);return _0x5c7a1e(_0x35c114[_0xef71('0x16')][_0xef71('0x18')]);}else{logger['info'](_0xef71('0x12'),_0x283546,'request\x20sent');_0x5c7a1e(_0x35c114[_0xef71('0x19')][_0xef71('0x18')]);}})[_0xef71('0x1a')](function(_0x333365){logger['error'](_0xef71('0x12'),_0x283546,_0x333365);_0x2ef6aa(_0x333365);});});}exports[_0xef71('0x1b')]=function(_0x4c5bb5){var _0xbbc240=this;return new Promise(function(_0x5b4952,_0x1fb8a1){return db['CmContact']['findAll']({'raw':_0x4c5bb5['options']?_0x4c5bb5[_0xef71('0x1c')][_0xef71('0x1d')]===undefined?!![]:![]:!![],'where':_0x4c5bb5['options']?_0x4c5bb5['options'][_0xef71('0x1e')]||null:null,'attributes':_0x4c5bb5['options']?_0x4c5bb5['options'][_0xef71('0x1f')]||null:null,'limit':_0x4c5bb5[_0xef71('0x1c')]?_0x4c5bb5[_0xef71('0x1c')][_0xef71('0x20')]||null:null,'include':_0x4c5bb5[_0xef71('0x1c')]?_0x4c5bb5[_0xef71('0x1c')][_0xef71('0x21')]?_['map'](_0x4c5bb5[_0xef71('0x1c')][_0xef71('0x21')],function(_0x27ab1c){return{'model':db[_0x27ab1c['model']],'as':_0x27ab1c['as'],'attributes':_0x27ab1c['attributes'],'include':_0x27ab1c[_0xef71('0x21')]?_['map'](_0x27ab1c[_0xef71('0x21')],function(_0x3e9888){return{'model':db[_0x3e9888[_0xef71('0x22')]],'as':_0x3e9888['as'],'attributes':_0x3e9888['attributes'],'include':_0x3e9888[_0xef71('0x21')]?_[_0xef71('0x23')](_0x3e9888[_0xef71('0x21')],function(_0x4150a0){return{'model':db[_0x4150a0['model']],'as':_0x4150a0['as'],'attributes':_0x4150a0[_0xef71('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xef71('0x10')](function(_0x598563){logger[_0xef71('0x11')](_0xef71('0x1b'),_0x4c5bb5);logger[_0xef71('0x14')]('GetCmContact',_0x4c5bb5,JSON[_0xef71('0x15')](_0x598563));_0x5b4952(_0x598563);})[_0xef71('0x1a')](function(_0x2beb6f){logger['error'](_0xef71('0x1b'),_0x2beb6f[_0xef71('0x18')],_0x4c5bb5);_0x1fb8a1(_0xbbc240[_0xef71('0x16')](0x1f4,_0x2beb6f[_0xef71('0x18')]));});});};exports[_0xef71('0x24')]=function(_0x2ef556){var _0x10d442=this;return new Promise(function(_0x12bd1c,_0x48d32e){return db['CmContact'][_0xef71('0x25')](_0x2ef556[_0xef71('0x26')],{'raw':_0x2ef556[_0xef71('0x1c')]?_0x2ef556[_0xef71('0x1c')][_0xef71('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0x540b69){var _0x3b3a26;for(var _0x3a9718=0x0;_0x3a9718<Object[_0xef71('0x27')](_0x2ef556[_0xef71('0x26')])[_0xef71('0x28')];_0x3a9718++){var _0x4f4f71=Object['keys'](_0x2ef556[_0xef71('0x26')])[_0x3a9718];if(_0x4f4f71['startsWith'](_0xef71('0x29'))){_0x3b3a26=squel[_0xef71('0x2a')]()[_0xef71('0x2b')](_0xef71('0x2c'))['set'](_0x4f4f71,_0x2ef556[_0xef71('0x26')][_0x4f4f71])[_0xef71('0x1e')](_0xef71('0x2d'),_0x540b69['id'])[_0xef71('0x2e')]();break;}}if(!_0x3b3a26)return _0x540b69;return db['sequelize'][_0xef71('0x2f')](_0x3b3a26)[_0xef71('0x10')](function(){return _0x540b69;});})[_0xef71('0x10')](function(_0x47a742){logger[_0xef71('0x11')]('CreateCmContact',_0x2ef556);logger[_0xef71('0x14')](_0xef71('0x24'),_0x2ef556,JSON['stringify'](_0x47a742));_0x12bd1c(_0x47a742);})[_0xef71('0x1a')](function(_0x3e4bf4){logger[_0xef71('0x16')](_0xef71('0x24'),_0x3e4bf4[_0xef71('0x18')],_0x2ef556);_0x48d32e(_0x10d442[_0xef71('0x16')](0x1f4,_0x3e4bf4['message']));});});};
\ No newline at end of file
+var _0x48b2=['squel','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./cmContact.socket','request','then','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CmContact','options','raw','where','attributes','include','map','GetCmContact','CreateCmContact','create','body','keys','length','startsWith','cf_','cm_contacts','set','id\x20=\x20?','lodash','moment','bluebird','randomstring'];(function(_0x362d6a,_0x253e0d){var _0x2af49e=function(_0x4a43f8){while(--_0x4a43f8){_0x362d6a['push'](_0x362d6a['shift']());}};_0x2af49e(++_0x253e0d);}(_0x48b2,0x1dc));var _0x248b=function(_0x4f88a8,_0xacf9de){_0x4f88a8=_0x4f88a8-0x0;var _0x43d1e6=_0x48b2[_0x4f88a8];return _0x43d1e6;};'use strict';var _=require(_0x248b('0x0'));var util=require('util');var moment=require(_0x248b('0x1'));var BPromise=require(_0x248b('0x2'));var rs=require(_0x248b('0x3'));var fs=require('fs');var Redis=require('ioredis');var squel=require(_0x248b('0x4'));var db=require(_0x248b('0x5'))['db'];var utils=require(_0x248b('0x6'));var logger=require(_0x248b('0x7'))(_0x248b('0x8'));var config=require(_0x248b('0x9'));var jayson=require(_0x248b('0xa'));var client=jayson[_0x248b('0xb')]['http']({'port':0x232a});config['redis']=_[_0x248b('0xc')](config[_0x248b('0xd')],{'host':_0x248b('0xe'),'port':0x18eb});var socket=require(_0x248b('0xf'))(new Redis(config[_0x248b('0xd')]));require(_0x248b('0x10'))['register'](socket);function respondWithRpcPromise(_0x34d8eb,_0x384e99,_0x42fade){return new BPromise(function(_0x2320b1,_0x3569fc){return client[_0x248b('0x11')](_0x34d8eb,_0x42fade)[_0x248b('0x12')](function(_0x38d65c){logger['info'](_0x248b('0x13'),_0x384e99,_0x248b('0x14'));logger[_0x248b('0x15')](_0x248b('0x16'),_0x384e99,_0x248b('0x14'),JSON[_0x248b('0x17')](_0x38d65c));if(_0x38d65c[_0x248b('0x18')]){if(_0x38d65c[_0x248b('0x18')][_0x248b('0x19')]===0x1f4){logger[_0x248b('0x18')]('CmContact,\x20%s,\x20%s',_0x384e99,_0x38d65c[_0x248b('0x18')][_0x248b('0x1a')]);return _0x3569fc(_0x38d65c[_0x248b('0x18')][_0x248b('0x1a')]);}logger[_0x248b('0x18')](_0x248b('0x13'),_0x384e99,_0x38d65c[_0x248b('0x18')]['message']);return _0x2320b1(_0x38d65c['error'][_0x248b('0x1a')]);}else{logger[_0x248b('0x1b')]('CmContact,\x20%s,\x20%s',_0x384e99,_0x248b('0x14'));_0x2320b1(_0x38d65c[_0x248b('0x1c')][_0x248b('0x1a')]);}})[_0x248b('0x1d')](function(_0x25f9f2){logger['error'](_0x248b('0x13'),_0x384e99,_0x25f9f2);_0x3569fc(_0x25f9f2);});});}exports['GetCmContact']=function(_0x748064){var _0x5d158f=this;return new Promise(function(_0x2c7829,_0x53f7cd){return db[_0x248b('0x1e')]['findAll']({'raw':_0x748064[_0x248b('0x1f')]?_0x748064[_0x248b('0x1f')][_0x248b('0x20')]===undefined?!![]:![]:!![],'where':_0x748064[_0x248b('0x1f')]?_0x748064[_0x248b('0x1f')][_0x248b('0x21')]||null:null,'attributes':_0x748064[_0x248b('0x1f')]?_0x748064[_0x248b('0x1f')][_0x248b('0x22')]||null:null,'limit':_0x748064[_0x248b('0x1f')]?_0x748064[_0x248b('0x1f')]['limit']||null:null,'include':_0x748064[_0x248b('0x1f')]?_0x748064[_0x248b('0x1f')][_0x248b('0x23')]?_['map'](_0x748064[_0x248b('0x1f')][_0x248b('0x23')],function(_0x617d21){return{'model':db[_0x617d21['model']],'as':_0x617d21['as'],'attributes':_0x617d21[_0x248b('0x22')],'include':_0x617d21[_0x248b('0x23')]?_['map'](_0x617d21[_0x248b('0x23')],function(_0x3b55f9){return{'model':db[_0x3b55f9['model']],'as':_0x3b55f9['as'],'attributes':_0x3b55f9[_0x248b('0x22')],'include':_0x3b55f9['include']?_[_0x248b('0x24')](_0x3b55f9[_0x248b('0x23')],function(_0x478c21){return{'model':db[_0x478c21['model']],'as':_0x478c21['as'],'attributes':_0x478c21['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x3898e6){logger[_0x248b('0x1b')]('GetCmContact',_0x748064);logger['debug']('GetCmContact',_0x748064,JSON['stringify'](_0x3898e6));_0x2c7829(_0x3898e6);})[_0x248b('0x1d')](function(_0x2cc640){logger['error'](_0x248b('0x25'),_0x2cc640[_0x248b('0x1a')],_0x748064);_0x53f7cd(_0x5d158f[_0x248b('0x18')](0x1f4,_0x2cc640[_0x248b('0x1a')]));});});};exports[_0x248b('0x26')]=function(_0x2621b3){var _0x538ee9=this;return new Promise(function(_0x1625e6,_0x208d13){return db[_0x248b('0x1e')][_0x248b('0x27')](_0x2621b3[_0x248b('0x28')],{'raw':_0x2621b3[_0x248b('0x1f')]?_0x2621b3[_0x248b('0x1f')][_0x248b('0x20')]===undefined?!![]:![]:!![]})['then'](function(_0x13cc3d){var _0x31d499;for(var _0x1296ff=0x0;_0x1296ff<Object[_0x248b('0x29')](_0x2621b3['body'])[_0x248b('0x2a')];_0x1296ff++){var _0xc8312d=Object['keys'](_0x2621b3['body'])[_0x1296ff];if(_0xc8312d[_0x248b('0x2b')](_0x248b('0x2c'))){_0x31d499=squel['update']()['table'](_0x248b('0x2d'))[_0x248b('0x2e')](_0xc8312d,_0x2621b3[_0x248b('0x28')][_0xc8312d])[_0x248b('0x21')](_0x248b('0x2f'),_0x13cc3d['id'])['toString']();break;}}if(!_0x31d499)return _0x13cc3d;return db['sequelize']['query'](_0x31d499)[_0x248b('0x12')](function(){return _0x13cc3d;});})[_0x248b('0x12')](function(_0x23e274){logger[_0x248b('0x1b')](_0x248b('0x26'),_0x2621b3);logger[_0x248b('0x15')]('CreateCmContact',_0x2621b3,JSON[_0x248b('0x17')](_0x23e274));_0x1625e6(_0x23e274);})[_0x248b('0x1d')](function(_0x55404b){logger[_0x248b('0x18')](_0x248b('0x26'),_0x55404b['message'],_0x2621b3);_0x208d13(_0x538ee9[_0x248b('0x18')](0x1f4,_0x55404b['message']));});});};
\ No newline at end of file
index a13e49c..6b5b7a1 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(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0xa9e0[_0x3ce3c];return _0x55a2c9;};'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(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa9e0,0x123));var _0x0a9e=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0xa9e0[_0x46aff0];return _0x9d78cf;};'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 2f2eaad..1cd08ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc995=['extname','/csv','single','file','uploadCsv','now','/upload','/upload/:id','import','update','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmContact.controller','isAuthenticated','index','/describe','describe','get','/:id','show','/:id/tags','/:id/hoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','getJourney','/merge','merge','post','create','/create_many','bulkCreate','setTags','diskStorage','join','server/files/tmp','originalname','replace','format','%s-%s%s','basename'];(function(_0x55821d,_0x27a22e){var _0x58ea8a=function(_0x5bdd3d){while(--_0x5bdd3d){_0x55821d['push'](_0x55821d['shift']());}};_0x58ea8a(++_0x27a22e);}(_0xc995,0xdd));var _0x5c99=function(_0x5817b6,_0x132ad0){_0x5817b6=_0x5817b6-0x0;var _0x3a6ae0=_0xc995[_0x5817b6];return _0x3a6ae0;};'use strict';var multer=require('multer');var util=require(_0x5c99('0x0'));var path=require('path');var timeout=require(_0x5c99('0x1'));var express=require(_0x5c99('0x2'));var router=express[_0x5c99('0x3')]();var fs_extra=require(_0x5c99('0x4'));var auth=require(_0x5c99('0x5'));var interaction=require(_0x5c99('0x6'));var config=require('../../config/environment');var controller=require(_0x5c99('0x7'));router['get']('/',auth[_0x5c99('0x8')](),controller[_0x5c99('0x9')]);router['get'](_0x5c99('0xa'),auth['isAuthenticated'](),controller[_0x5c99('0xb')]);router[_0x5c99('0xc')](_0x5c99('0xd'),auth['isAuthenticated'](),controller[_0x5c99('0xe')]);router[_0x5c99('0xc')](_0x5c99('0xf'),auth[_0x5c99('0x8')](),controller['getTags']);router[_0x5c99('0xc')](_0x5c99('0x10'),auth[_0x5c99('0x8')](),controller['getHoppers']);router['get'](_0x5c99('0x11'),auth[_0x5c99('0x8')](),controller[_0x5c99('0x12')]);router[_0x5c99('0xc')](_0x5c99('0x13'),auth[_0x5c99('0x8')](),controller['getHopperFinals']);router[_0x5c99('0xc')](_0x5c99('0x14'),auth['isAuthenticated'](),controller[_0x5c99('0x15')]);router['get'](_0x5c99('0x16'),auth[_0x5c99('0x8')](),controller[_0x5c99('0x17')]);router['post'](_0x5c99('0x18'),auth['isAuthenticated'](),controller[_0x5c99('0x19')]);router[_0x5c99('0x1a')]('/',auth[_0x5c99('0x8')](),controller[_0x5c99('0x1b')]);router[_0x5c99('0x1a')](_0x5c99('0x1c'),auth[_0x5c99('0x8')](),controller[_0x5c99('0x1d')]);router[_0x5c99('0x1a')](_0x5c99('0xf'),auth[_0x5c99('0x8')](),controller[_0x5c99('0x1e')]);var upload=multer({'storage':multer[_0x5c99('0x1f')]({'destination':function(_0x151151,_0x2a619e,_0x5d2824){_0x5d2824(null,path[_0x5c99('0x20')](config['root'],_0x5c99('0x21')));},'filename':function(_0x4fa3ac,_0x2f1c26,_0x35aa25){_0x2f1c26[_0x5c99('0x22')]=_0x2f1c26[_0x5c99('0x22')][_0x5c99('0x23')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x35aa25(null,util[_0x5c99('0x24')](_0x5c99('0x25'),path[_0x5c99('0x26')](_0x2f1c26['originalname'],path[_0x5c99('0x27')](_0x2f1c26['originalname'])),Date['now'](),path['extname'](_0x2f1c26['originalname'])));}})});router['post'](_0x5c99('0x28'),upload[_0x5c99('0x29')](_0x5c99('0x2a')),controller[_0x5c99('0x2b')]);var upload=multer({'storage':multer[_0x5c99('0x1f')]({'destination':function(_0x2c2119,_0x179ad7,_0x4bc94c){_0x4bc94c(null,path[_0x5c99('0x20')](config['root'],'server/files/tmp'));},'filename':function(_0x17f231,_0x50fc86,_0x1447c6){_0x50fc86[_0x5c99('0x22')]=_0x50fc86[_0x5c99('0x22')][_0x5c99('0x23')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x1447c6(null,util['format'](_0x5c99('0x25'),path['basename'](_0x50fc86[_0x5c99('0x22')],path[_0x5c99('0x27')](_0x50fc86[_0x5c99('0x22')])),Date[_0x5c99('0x2c')](),path[_0x5c99('0x27')](_0x50fc86[_0x5c99('0x22')])));}})});router['post'](_0x5c99('0x2d'),upload[_0x5c99('0x29')](_0x5c99('0x2a')),controller['upload']);router[_0x5c99('0x1a')](_0x5c99('0x2e'),auth['isAuthenticated'](),controller[_0x5c99('0x2f')]);router['put'](_0x5c99('0xd'),auth[_0x5c99('0x8')](),controller[_0x5c99('0x30')]);router[_0x5c99('0x31')](_0x5c99('0xd'),auth['isAuthenticated'](),controller[_0x5c99('0x32')]);module[_0x5c99('0x33')]=router;
\ No newline at end of file
+var _0x0b1c=['format','now','extname','/csv','single','uploadCsv','replace','%s-%s%s','basename','upload','put','update','delete','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContact.controller','index','get','/describe','isAuthenticated','describe','/:id','show','/:id/tags','getTags','/:id/hoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions','getJourney','post','merge','create','/create_many','bulkCreate','setTags','diskStorage','join','root','server/files/tmp','originalname'];(function(_0x5da506,_0x330a78){var _0x1c2838=function(_0x5a0b75){while(--_0x5a0b75){_0x5da506['push'](_0x5da506['shift']());}};_0x1c2838(++_0x330a78);}(_0x0b1c,0x70));var _0xc0b1=function(_0x24259d,_0x64a194){_0x24259d=_0x24259d-0x0;var _0x5a701=_0x0b1c[_0x24259d];return _0x5a701;};'use strict';var multer=require(_0xc0b1('0x0'));var util=require(_0xc0b1('0x1'));var path=require('path');var timeout=require(_0xc0b1('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xc0b1('0x3'));var auth=require(_0xc0b1('0x4'));var interaction=require(_0xc0b1('0x5'));var config=require(_0xc0b1('0x6'));var controller=require(_0xc0b1('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xc0b1('0x8')]);router[_0xc0b1('0x9')](_0xc0b1('0xa'),auth[_0xc0b1('0xb')](),controller[_0xc0b1('0xc')]);router[_0xc0b1('0x9')](_0xc0b1('0xd'),auth[_0xc0b1('0xb')](),controller[_0xc0b1('0xe')]);router[_0xc0b1('0x9')](_0xc0b1('0xf'),auth['isAuthenticated'](),controller[_0xc0b1('0x10')]);router['get'](_0xc0b1('0x11'),auth[_0xc0b1('0xb')](),controller['getHoppers']);router[_0xc0b1('0x9')](_0xc0b1('0x12'),auth[_0xc0b1('0xb')](),controller[_0xc0b1('0x13')]);router['get'](_0xc0b1('0x14'),auth[_0xc0b1('0xb')](),controller[_0xc0b1('0x15')]);router['get'](_0xc0b1('0x16'),auth[_0xc0b1('0xb')](),controller['getJscriptySessions']);router['get']('/:id/journey',auth[_0xc0b1('0xb')](),controller[_0xc0b1('0x17')]);router[_0xc0b1('0x18')]('/merge',auth['isAuthenticated'](),controller[_0xc0b1('0x19')]);router[_0xc0b1('0x18')]('/',auth[_0xc0b1('0xb')](),controller[_0xc0b1('0x1a')]);router[_0xc0b1('0x18')](_0xc0b1('0x1b'),auth[_0xc0b1('0xb')](),controller[_0xc0b1('0x1c')]);router[_0xc0b1('0x18')](_0xc0b1('0xf'),auth['isAuthenticated'](),controller[_0xc0b1('0x1d')]);var upload=multer({'storage':multer[_0xc0b1('0x1e')]({'destination':function(_0x122318,_0x1e7dc8,_0x4e439a){_0x4e439a(null,path[_0xc0b1('0x1f')](config[_0xc0b1('0x20')],_0xc0b1('0x21')));},'filename':function(_0x5aa428,_0xf95acb,_0x56fe2d){_0xf95acb[_0xc0b1('0x22')]=_0xf95acb[_0xc0b1('0x22')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x56fe2d(null,util[_0xc0b1('0x23')]('%s-%s%s',path['basename'](_0xf95acb[_0xc0b1('0x22')],path['extname'](_0xf95acb[_0xc0b1('0x22')])),Date[_0xc0b1('0x24')](),path[_0xc0b1('0x25')](_0xf95acb[_0xc0b1('0x22')])));}})});router['post'](_0xc0b1('0x26'),upload[_0xc0b1('0x27')]('file'),controller[_0xc0b1('0x28')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3d3d31,_0x5ce21e,_0x8c12f5){_0x8c12f5(null,path[_0xc0b1('0x1f')](config[_0xc0b1('0x20')],'server/files/tmp'));},'filename':function(_0x3ab6d0,_0x3f0806,_0x3a34a9){_0x3f0806[_0xc0b1('0x22')]=_0x3f0806[_0xc0b1('0x22')][_0xc0b1('0x29')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x3a34a9(null,util[_0xc0b1('0x23')](_0xc0b1('0x2a'),path[_0xc0b1('0x2b')](_0x3f0806['originalname'],path[_0xc0b1('0x25')](_0x3f0806[_0xc0b1('0x22')])),Date['now'](),path[_0xc0b1('0x25')](_0x3f0806[_0xc0b1('0x22')])));}})});router['post']('/upload',upload[_0xc0b1('0x27')]('file'),controller[_0xc0b1('0x2c')]);router[_0xc0b1('0x18')]('/upload/:id',auth[_0xc0b1('0xb')](),controller['import']);router[_0xc0b1('0x2d')](_0xc0b1('0xd'),auth[_0xc0b1('0xb')](),controller[_0xc0b1('0x2e')]);router[_0xc0b1('0x2f')](_0xc0b1('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0xc0b1('0x30')]=router;
\ No newline at end of file
index c1056c5..3b453d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2a5=['STRING','setDataValue','TEXT','long','values','isArray','stringify','BOOLEAN','ENUM','sequelize','lodash','exports','getDataValue','alias'];(function(_0x1b5ffe,_0x196aae){var _0x1f7d9f=function(_0x107887){while(--_0x107887){_0x1b5ffe['push'](_0x1b5ffe['shift']());}};_0x1f7d9f(++_0x196aae);}(_0xa2a5,0x1c9));var _0x5a2a=function(_0x260ac8,_0x282a0b){_0x260ac8=_0x260ac8-0x0;var _0x33bf91=_0xa2a5[_0x260ac8];return _0x33bf91;};'use strict';var Sequelize=require(_0x5a2a('0x0'));var _=require(_0x5a2a('0x1'));module[_0x5a2a('0x2')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x54f466){return this[_0x5a2a('0x3')](_0x5a2a('0x4'));}},'alias':{'type':Sequelize[_0x5a2a('0x5')],'allowNull':![],'set':function(_0x36a905){this[_0x5a2a('0x6')](_0x5a2a('0x4'),_0x36a905?_0x36a905:this['getDataValue']('name'));}},'type':{'type':Sequelize[_0x5a2a('0x5')],'allowNull':![]},'values':{'type':Sequelize[_0x5a2a('0x7')](_0x5a2a('0x8')),'get':function(){if(this[_0x5a2a('0x3')]('type')==='select'){return JSON['parse'](this[_0x5a2a('0x3')](_0x5a2a('0x9')));}else{return this['getDataValue']('values');}},'set':function(_0xd6c674){if(Array[_0x5a2a('0xa')](_0xd6c674)){this[_0x5a2a('0x6')](_0x5a2a('0x9'),JSON[_0x5a2a('0xb')](_0xd6c674));}else{this[_0x5a2a('0x6')](_0x5a2a('0x9'),_0xd6c674);}}},'required':{'type':Sequelize[_0x5a2a('0xc')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x5a2a('0xc')],'defaultValue':![]},'actionType':{'type':Sequelize[_0x5a2a('0xd')]('voice')}};
\ No newline at end of file
+var _0x45b0=['STRING','name','TEXT','long','type','select','values','isArray','setDataValue','BOOLEAN','exports','getDataValue','alias'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x45b0,0x72));var _0x045b=function(_0x52bb8c,_0x36ccb8){_0x52bb8c=_0x52bb8c-0x0;var _0x478be5=_0x45b0[_0x52bb8c];return _0x478be5;};'use strict';var Sequelize=require('sequelize');var _=require('lodash');module[_0x045b('0x0')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x22cf66){return this[_0x045b('0x1')](_0x045b('0x2'));}},'alias':{'type':Sequelize[_0x045b('0x3')],'allowNull':![],'set':function(_0x3dcce9){this['setDataValue']('alias',_0x3dcce9?_0x3dcce9:this['getDataValue'](_0x045b('0x4')));}},'type':{'type':Sequelize[_0x045b('0x3')],'allowNull':![]},'values':{'type':Sequelize[_0x045b('0x5')](_0x045b('0x6')),'get':function(){if(this['getDataValue'](_0x045b('0x7'))===_0x045b('0x8')){return JSON['parse'](this[_0x045b('0x1')](_0x045b('0x9')));}else{return this[_0x045b('0x1')]('values');}},'set':function(_0x2a3a76){if(Array[_0x045b('0xa')](_0x2a3a76)){this[_0x045b('0xb')](_0x045b('0x9'),JSON['stringify'](_0x2a3a76));}else{this[_0x045b('0xb')](_0x045b('0x9'),_0x2a3a76);}}},'required':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x045b('0xc')],'defaultValue':![]},'actionType':{'type':Sequelize['ENUM']('voice')}};
\ No newline at end of file
index b736c92..a0c93e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7870=['send','index','map','CmCustomField','rawAttributes','fieldName','type','key','model','differenceBy','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','findAll','catch','show','options','find','body','params','create','sequelize','Sequelize','TEXT','number','INTEGER','switch','defaultValue','queryInterface','addColumn','cm_contacts','format','cf_%d','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','destroy','error','stack','name'];(function(_0x5dfadc,_0x584219){var _0x144023=function(_0x3b7a13){while(--_0x3b7a13){_0x5dfadc['push'](_0x5dfadc['shift']());}};_0x144023(++_0x584219);}(_0x7870,0xda));var _0x0787=function(_0x28e26f,_0x1b947f){_0x28e26f=_0x28e26f-0x0;var _0x5783bf=_0x7870[_0x28e26f];return _0x5783bf;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x0787('0x0'));var jsonpatch=require(_0x0787('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x0787('0x2'));var Mustache=require(_0x0787('0x3'));var util=require(_0x0787('0x4'));var path=require(_0x0787('0x5'));var sox=require(_0x0787('0x6'));var csv=require(_0x0787('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0787('0x8'));var _=require('lodash');var squel=require(_0x0787('0x9'));var crypto=require(_0x0787('0xa'));var jsforce=require(_0x0787('0xb'));var deskjs=require(_0x0787('0xc'));var toCsv=require(_0x0787('0x7'));var querystring=require(_0x0787('0xd'));var Papa=require(_0x0787('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x0787('0xf'));var as=require(_0x0787('0x10'));var hardwareService=require(_0x0787('0x11'));var logger=require(_0x0787('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x0787('0x13'));var licenseUtil=require(_0x0787('0x14'));var db=require(_0x0787('0x15'))['db'];function respondWithStatusCode(_0x537403,_0x2b0015){_0x2b0015=_0x2b0015||0xcc;return function(_0xdc3556){if(_0xdc3556){return _0x537403[_0x0787('0x16')](_0x2b0015);}return _0x537403['status'](_0x2b0015)[_0x0787('0x17')]();};}function respondWithResult(_0x246296,_0x47656b){_0x47656b=_0x47656b||0xc8;return function(_0x1674d1){if(_0x1674d1){return _0x246296[_0x0787('0x18')](_0x47656b)[_0x0787('0x19')](_0x1674d1);}};}function respondWithFilteredResult(_0xf1b03c,_0xe65e7d){return function(_0x26c3a4){if(_0x26c3a4){var _0x5dbca1=typeof _0xe65e7d['offset']===_0x0787('0x1a')&&typeof _0xe65e7d[_0x0787('0x1b')]==='undefined';var _0x3fbb6e=_0x26c3a4[_0x0787('0x1c')];var _0x18777c=_0x5dbca1?0x0:_0xe65e7d[_0x0787('0x1d')];var _0xb90bf2=_0x5dbca1?_0x26c3a4[_0x0787('0x1c')]:_0xe65e7d[_0x0787('0x1d')]+_0xe65e7d[_0x0787('0x1b')];var _0x2ff902;if(_0xb90bf2>=_0x3fbb6e){_0xb90bf2=_0x3fbb6e;_0x2ff902=0xc8;}else{_0x2ff902=0xce;}_0xf1b03c[_0x0787('0x18')](_0x2ff902);return _0xf1b03c['set'](_0x0787('0x1e'),_0x18777c+'-'+_0xb90bf2+'/'+_0x3fbb6e)[_0x0787('0x19')](_0x26c3a4);}return null;};}function patchUpdates(_0x1a7ae5){return function(_0x599028){try{jsonpatch[_0x0787('0x1f')](_0x599028,_0x1a7ae5,!![]);}catch(_0x1a3ee2){return BPromise[_0x0787('0x20')](_0x1a3ee2);}return _0x599028[_0x0787('0x21')]();};}function saveUpdates(_0x1cc835,_0x550104){return function(_0xf4276){if(_0xf4276){return _0xf4276[_0x0787('0x22')](_0x1cc835)[_0x0787('0x23')](function(_0x156a99){return _0x156a99;});}return null;};}function removeEntity(_0x3e2a19,_0x74fae1){return function(_0x4fa572){if(_0x4fa572){return _0x4fa572[_0x0787('0x24')]()[_0x0787('0x23')](function(){_0x3e2a19[_0x0787('0x18')](0xcc)[_0x0787('0x17')]();});}};}function handleEntityNotFound(_0x330deb,_0x17555f){return function(_0x497f18){if(!_0x497f18){_0x330deb[_0x0787('0x16')](0x194);}return _0x497f18;};}function handleError(_0x10b232,_0x392cbb){_0x392cbb=_0x392cbb||0x1f4;return function(_0x19f828){logger[_0x0787('0x25')](_0x19f828[_0x0787('0x26')]);if(_0x19f828[_0x0787('0x27')]){delete _0x19f828[_0x0787('0x27')];}_0x10b232['status'](_0x392cbb)[_0x0787('0x28')](_0x19f828);};}exports[_0x0787('0x29')]=function(_0x4d3013,_0x377c48){var _0x5ef6b7={},_0x171f82={},_0x3a070f={'count':0x0,'rows':[]};var _0x304fa1=_[_0x0787('0x2a')](db[_0x0787('0x2b')][_0x0787('0x2c')],function(_0x5cb048){return{'name':_0x5cb048[_0x0787('0x2d')],'type':_0x5cb048[_0x0787('0x2e')][_0x0787('0x2f')]};});_0x171f82[_0x0787('0x30')]=_[_0x0787('0x31')](_['map'](_0x304fa1,_0x0787('0x27')),[_0x0787('0x27')]);_0x171f82[_0x0787('0x32')]=_[_0x0787('0x33')](_0x4d3013[_0x0787('0x32')]);_0x171f82['filters']=_[_0x0787('0x34')](_0x171f82[_0x0787('0x30')],_0x171f82[_0x0787('0x32')]);_0x5ef6b7['attributes']=_[_0x0787('0x34')](_0x171f82[_0x0787('0x30')],qs[_0x0787('0x35')](_0x4d3013[_0x0787('0x32')][_0x0787('0x35')]));_0x5ef6b7[_0x0787('0x36')]=_0x5ef6b7[_0x0787('0x36')]['length']?_0x5ef6b7[_0x0787('0x36')]:_0x171f82[_0x0787('0x30')];if(!_0x4d3013[_0x0787('0x32')][_0x0787('0x37')](_0x0787('0x38'))){_0x5ef6b7[_0x0787('0x1b')]=qs[_0x0787('0x1b')](_0x4d3013[_0x0787('0x32')][_0x0787('0x1b')]);_0x5ef6b7[_0x0787('0x1d')]=qs[_0x0787('0x1d')](_0x4d3013['query'][_0x0787('0x1d')]);}_0x5ef6b7['order']=qs[_0x0787('0x39')](_0x4d3013[_0x0787('0x32')]['sort']);_0x5ef6b7[_0x0787('0x3a')]=qs[_0x0787('0x3b')](_[_0x0787('0x3c')](_0x4d3013[_0x0787('0x32')],_0x171f82[_0x0787('0x3b')]),_0x304fa1);if(_0x4d3013['query'][_0x0787('0x3d')]){_0x5ef6b7[_0x0787('0x3a')]=_[_0x0787('0x3e')](_0x5ef6b7['where'],{'$or':_[_0x0787('0x2a')](_0x304fa1,function(_0x546bd2){if(_0x546bd2[_0x0787('0x2e')]!==_0x0787('0x3f')){var _0x1fc0ec={};_0x1fc0ec[_0x546bd2[_0x0787('0x27')]]={'$like':'%'+_0x4d3013['query'][_0x0787('0x3d')]+'%'};return _0x1fc0ec;}})});}_0x5ef6b7=_['merge']({},_0x5ef6b7,_0x4d3013['options']);var _0x4a448b={'where':_0x5ef6b7[_0x0787('0x3a')]};return db['CmCustomField'][_0x0787('0x1c')](_0x4a448b)[_0x0787('0x23')](function(_0x3e3478){_0x3a070f[_0x0787('0x1c')]=_0x3e3478;if(_0x4d3013[_0x0787('0x32')][_0x0787('0x40')]){_0x5ef6b7[_0x0787('0x41')]=[{'all':!![]}];}return db[_0x0787('0x2b')][_0x0787('0x42')](_0x5ef6b7);})[_0x0787('0x23')](function(_0x22c709){_0x3a070f['rows']=_0x22c709;return _0x3a070f;})['then'](respondWithFilteredResult(_0x377c48,_0x5ef6b7))[_0x0787('0x43')](handleError(_0x377c48,null));};exports[_0x0787('0x44')]=function(_0x225908,_0x18ea76){var _0x39bf5e={'raw':!![],'where':{'id':_0x225908['params']['id']}},_0x2e3dfa={};_0x2e3dfa['model']=_[_0x0787('0x33')](db['CmCustomField'][_0x0787('0x2c')]);_0x2e3dfa[_0x0787('0x32')]=_[_0x0787('0x33')](_0x225908[_0x0787('0x32')]);_0x2e3dfa[_0x0787('0x3b')]=_[_0x0787('0x34')](_0x2e3dfa[_0x0787('0x30')],_0x2e3dfa[_0x0787('0x32')]);_0x39bf5e[_0x0787('0x36')]=_['intersection'](_0x2e3dfa[_0x0787('0x30')],qs[_0x0787('0x35')](_0x225908[_0x0787('0x32')][_0x0787('0x35')]));_0x39bf5e[_0x0787('0x36')]=_0x39bf5e[_0x0787('0x36')]['length']?_0x39bf5e[_0x0787('0x36')]:_0x2e3dfa['model'];if(_0x225908['query'][_0x0787('0x40')]){_0x39bf5e[_0x0787('0x41')]=[{'all':!![]}];}_0x39bf5e=_[_0x0787('0x3e')]({},_0x39bf5e,_0x225908[_0x0787('0x45')]);return db[_0x0787('0x2b')][_0x0787('0x46')](_0x39bf5e)[_0x0787('0x23')](handleEntityNotFound(_0x18ea76,null))[_0x0787('0x23')](respondWithResult(_0x18ea76,null))[_0x0787('0x43')](handleError(_0x18ea76,null));};exports[_0x0787('0x22')]=function(_0x8cb38,_0x4fbe5c){if(_0x8cb38[_0x0787('0x47')]['id']){delete _0x8cb38[_0x0787('0x47')]['id'];}return db['CmCustomField'][_0x0787('0x46')]({'where':{'id':_0x8cb38[_0x0787('0x48')]['id']}})[_0x0787('0x23')](handleEntityNotFound(_0x4fbe5c,null))['then'](saveUpdates(_0x8cb38[_0x0787('0x47')],null))['then'](respondWithResult(_0x4fbe5c,null))[_0x0787('0x43')](handleError(_0x4fbe5c,null));};exports[_0x0787('0x24')]=function(_0x1120dd,_0x4a0ba4){return db[_0x0787('0x2b')][_0x0787('0x46')]({'where':{'id':_0x1120dd[_0x0787('0x48')]['id']}})[_0x0787('0x23')](handleEntityNotFound(_0x4a0ba4,null))[_0x0787('0x23')](removeEntity(_0x4a0ba4,null))['catch'](handleError(_0x4a0ba4,null));};exports[_0x0787('0x49')]=function(_0x595c66,_0x7563da){var _0x114023;return db[_0x0787('0x4a')]['transaction'](function(_0x52a8f6){return db[_0x0787('0x2b')][_0x0787('0x49')](_0x595c66['body'],{'transaction':_0x52a8f6})[_0x0787('0x23')](function(_0x1261cd){_0x114023=_0x1261cd;var _0xa52f1e={'type':db[_0x0787('0x4b')][_0x0787('0x4c')],'transaction':_0x52a8f6};switch(_0x595c66['body'][_0x0787('0x2e')]){case'text':_0xa52f1e[_0x0787('0x2e')]=db['Sequelize'][_0x0787('0x4c')];break;case _0x0787('0x4d'):_0xa52f1e[_0x0787('0x2e')]=db[_0x0787('0x4b')][_0x0787('0x4e')];break;case _0x0787('0x4f'):_0xa52f1e[_0x0787('0x2e')]=db[_0x0787('0x4b')]['BOOLEAN'];_0xa52f1e[_0x0787('0x50')]=![];break;default:}return db[_0x0787('0x4a')][_0x0787('0x51')][_0x0787('0x52')](_0x0787('0x53'),util[_0x0787('0x54')](_0x0787('0x55'),_0x114023['id']),_0xa52f1e);})[_0x0787('0x23')](function(){return _0x114023;});})[_0x0787('0x23')](respondWithResult(_0x7563da,0xc9))[_0x0787('0x43')](handleError(_0x7563da,null));};
\ No newline at end of file
+var _0x254d=['VIRTUAL','options','includeAll','findAll','rows','catch','params','length','include','update','body','find','create','transaction','Sequelize','TEXT','number','INTEGER','switch','defaultValue','sequelize','queryInterface','cm_contacts','cf_%d','eml-format','rimraf','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/logger','api','../../config/environment','../../mysqldb','status','end','json','offset','limit','count','Content-Range','apply','reject','destroy','then','sendStatus','error','name','send','CmCustomField','rawAttributes','fieldName','type','key','model','differenceBy','keys','filters','intersection','query','attributes','fields','hasOwnProperty','order','sort','pick','filter','merge','where','map'];(function(_0x23e7c1,_0x35110c){var _0x1add43=function(_0x238918){while(--_0x238918){_0x23e7c1['push'](_0x23e7c1['shift']());}};_0x1add43(++_0x35110c);}(_0x254d,0xc8));var _0xd254=function(_0x55ff79,_0x3d45e7){_0x55ff79=_0x55ff79-0x0;var _0x579067=_0x254d[_0x55ff79];return _0x579067;};'use strict';var emlformat=require(_0xd254('0x0'));var rimraf=require(_0xd254('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd254('0x2'));var rp=require(_0xd254('0x3'));var moment=require(_0xd254('0x4'));var BPromise=require(_0xd254('0x5'));var Mustache=require(_0xd254('0x6'));var util=require(_0xd254('0x7'));var path=require(_0xd254('0x8'));var sox=require(_0xd254('0x9'));var csv=require('to-csv');var ejs=require(_0xd254('0xa'));var fs=require('fs');var fs_extra=require(_0xd254('0xb'));var _=require(_0xd254('0xc'));var squel=require(_0xd254('0xd'));var crypto=require(_0xd254('0xe'));var jsforce=require(_0xd254('0xf'));var deskjs=require(_0xd254('0x10'));var toCsv=require(_0xd254('0x11'));var querystring=require(_0xd254('0x12'));var Papa=require(_0xd254('0x13'));var Redis=require(_0xd254('0x14'));var authService=require(_0xd254('0x15'));var qs=require(_0xd254('0x16'));var as=require(_0xd254('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd254('0x18'))(_0xd254('0x19'));var utils=require('../../config/utils');var config=require(_0xd254('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0xd254('0x1b'))['db'];function respondWithStatusCode(_0x1280f3,_0x152041){_0x152041=_0x152041||0xcc;return function(_0x5ba814){if(_0x5ba814){return _0x1280f3['sendStatus'](_0x152041);}return _0x1280f3[_0xd254('0x1c')](_0x152041)[_0xd254('0x1d')]();};}function respondWithResult(_0x52fad0,_0x532641){_0x532641=_0x532641||0xc8;return function(_0x53bf7b){if(_0x53bf7b){return _0x52fad0[_0xd254('0x1c')](_0x532641)[_0xd254('0x1e')](_0x53bf7b);}};}function respondWithFilteredResult(_0x3b2762,_0x1724a1){return function(_0x122ede){if(_0x122ede){var _0x4e53b7=typeof _0x1724a1[_0xd254('0x1f')]==='undefined'&&typeof _0x1724a1[_0xd254('0x20')]==='undefined';var _0x35d078=_0x122ede[_0xd254('0x21')];var _0x5a2ac1=_0x4e53b7?0x0:_0x1724a1[_0xd254('0x1f')];var _0x340286=_0x4e53b7?_0x122ede[_0xd254('0x21')]:_0x1724a1[_0xd254('0x1f')]+_0x1724a1['limit'];var _0x25a8a5;if(_0x340286>=_0x35d078){_0x340286=_0x35d078;_0x25a8a5=0xc8;}else{_0x25a8a5=0xce;}_0x3b2762[_0xd254('0x1c')](_0x25a8a5);return _0x3b2762['set'](_0xd254('0x22'),_0x5a2ac1+'-'+_0x340286+'/'+_0x35d078)[_0xd254('0x1e')](_0x122ede);}return null;};}function patchUpdates(_0x2add33){return function(_0x4dda63){try{jsonpatch[_0xd254('0x23')](_0x4dda63,_0x2add33,!![]);}catch(_0x14eb36){return BPromise[_0xd254('0x24')](_0x14eb36);}return _0x4dda63['save']();};}function saveUpdates(_0x3b9079,_0x559241){return function(_0x511cba){if(_0x511cba){return _0x511cba['update'](_0x3b9079)['then'](function(_0x44bd62){return _0x44bd62;});}return null;};}function removeEntity(_0x84919e,_0x268bb2){return function(_0x4c9f4f){if(_0x4c9f4f){return _0x4c9f4f[_0xd254('0x25')]()[_0xd254('0x26')](function(){_0x84919e[_0xd254('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2180e2,_0x1b9116){return function(_0x47cd94){if(!_0x47cd94){_0x2180e2[_0xd254('0x27')](0x194);}return _0x47cd94;};}function handleError(_0x11061b,_0xb294d5){_0xb294d5=_0xb294d5||0x1f4;return function(_0x4aaf02){logger[_0xd254('0x28')](_0x4aaf02['stack']);if(_0x4aaf02[_0xd254('0x29')]){delete _0x4aaf02[_0xd254('0x29')];}_0x11061b['status'](_0xb294d5)[_0xd254('0x2a')](_0x4aaf02);};}exports['index']=function(_0xb4f3c9,_0x4ba2d6){var _0x68d095={},_0x51d591={},_0x38dda1={'count':0x0,'rows':[]};var _0x3c5942=_['map'](db[_0xd254('0x2b')][_0xd254('0x2c')],function(_0x569b18){return{'name':_0x569b18[_0xd254('0x2d')],'type':_0x569b18[_0xd254('0x2e')][_0xd254('0x2f')]};});_0x51d591[_0xd254('0x30')]=_[_0xd254('0x31')](_['map'](_0x3c5942,_0xd254('0x29')),['name']);_0x51d591['query']=_[_0xd254('0x32')](_0xb4f3c9['query']);_0x51d591[_0xd254('0x33')]=_[_0xd254('0x34')](_0x51d591[_0xd254('0x30')],_0x51d591[_0xd254('0x35')]);_0x68d095[_0xd254('0x36')]=_['intersection'](_0x51d591[_0xd254('0x30')],qs['fields'](_0xb4f3c9[_0xd254('0x35')][_0xd254('0x37')]));_0x68d095[_0xd254('0x36')]=_0x68d095['attributes']['length']?_0x68d095[_0xd254('0x36')]:_0x51d591[_0xd254('0x30')];if(!_0xb4f3c9[_0xd254('0x35')][_0xd254('0x38')]('nolimit')){_0x68d095[_0xd254('0x20')]=qs[_0xd254('0x20')](_0xb4f3c9['query'][_0xd254('0x20')]);_0x68d095[_0xd254('0x1f')]=qs[_0xd254('0x1f')](_0xb4f3c9[_0xd254('0x35')][_0xd254('0x1f')]);}_0x68d095[_0xd254('0x39')]=qs[_0xd254('0x3a')](_0xb4f3c9[_0xd254('0x35')]['sort']);_0x68d095['where']=qs[_0xd254('0x33')](_[_0xd254('0x3b')](_0xb4f3c9[_0xd254('0x35')],_0x51d591[_0xd254('0x33')]),_0x3c5942);if(_0xb4f3c9[_0xd254('0x35')][_0xd254('0x3c')]){_0x68d095['where']=_[_0xd254('0x3d')](_0x68d095[_0xd254('0x3e')],{'$or':_[_0xd254('0x3f')](_0x3c5942,function(_0x34459a){if(_0x34459a[_0xd254('0x2e')]!==_0xd254('0x40')){var _0x3ed2e7={};_0x3ed2e7[_0x34459a[_0xd254('0x29')]]={'$like':'%'+_0xb4f3c9['query']['filter']+'%'};return _0x3ed2e7;}})});}_0x68d095=_['merge']({},_0x68d095,_0xb4f3c9[_0xd254('0x41')]);var _0x2aa22c={'where':_0x68d095[_0xd254('0x3e')]};return db[_0xd254('0x2b')][_0xd254('0x21')](_0x2aa22c)[_0xd254('0x26')](function(_0xd5f4b5){_0x38dda1[_0xd254('0x21')]=_0xd5f4b5;if(_0xb4f3c9[_0xd254('0x35')][_0xd254('0x42')]){_0x68d095['include']=[{'all':!![]}];}return db['CmCustomField'][_0xd254('0x43')](_0x68d095);})[_0xd254('0x26')](function(_0x3c7535){_0x38dda1[_0xd254('0x44')]=_0x3c7535;return _0x38dda1;})[_0xd254('0x26')](respondWithFilteredResult(_0x4ba2d6,_0x68d095))[_0xd254('0x45')](handleError(_0x4ba2d6,null));};exports['show']=function(_0x48818b,_0x332b17){var _0x5a9bf2={'raw':!![],'where':{'id':_0x48818b[_0xd254('0x46')]['id']}},_0xaa0d1b={};_0xaa0d1b[_0xd254('0x30')]=_[_0xd254('0x32')](db[_0xd254('0x2b')]['rawAttributes']);_0xaa0d1b[_0xd254('0x35')]=_[_0xd254('0x32')](_0x48818b[_0xd254('0x35')]);_0xaa0d1b[_0xd254('0x33')]=_['intersection'](_0xaa0d1b[_0xd254('0x30')],_0xaa0d1b[_0xd254('0x35')]);_0x5a9bf2[_0xd254('0x36')]=_['intersection'](_0xaa0d1b[_0xd254('0x30')],qs[_0xd254('0x37')](_0x48818b['query'][_0xd254('0x37')]));_0x5a9bf2['attributes']=_0x5a9bf2[_0xd254('0x36')][_0xd254('0x47')]?_0x5a9bf2[_0xd254('0x36')]:_0xaa0d1b[_0xd254('0x30')];if(_0x48818b['query'][_0xd254('0x42')]){_0x5a9bf2[_0xd254('0x48')]=[{'all':!![]}];}_0x5a9bf2=_[_0xd254('0x3d')]({},_0x5a9bf2,_0x48818b[_0xd254('0x41')]);return db['CmCustomField']['find'](_0x5a9bf2)[_0xd254('0x26')](handleEntityNotFound(_0x332b17,null))['then'](respondWithResult(_0x332b17,null))[_0xd254('0x45')](handleError(_0x332b17,null));};exports[_0xd254('0x49')]=function(_0x293b5e,_0x41702c){if(_0x293b5e[_0xd254('0x4a')]['id']){delete _0x293b5e[_0xd254('0x4a')]['id'];}return db[_0xd254('0x2b')][_0xd254('0x4b')]({'where':{'id':_0x293b5e[_0xd254('0x46')]['id']}})[_0xd254('0x26')](handleEntityNotFound(_0x41702c,null))[_0xd254('0x26')](saveUpdates(_0x293b5e[_0xd254('0x4a')],null))[_0xd254('0x26')](respondWithResult(_0x41702c,null))[_0xd254('0x45')](handleError(_0x41702c,null));};exports['destroy']=function(_0x4e7c80,_0x5319e0){return db['CmCustomField']['find']({'where':{'id':_0x4e7c80[_0xd254('0x46')]['id']}})[_0xd254('0x26')](handleEntityNotFound(_0x5319e0,null))[_0xd254('0x26')](removeEntity(_0x5319e0,null))['catch'](handleError(_0x5319e0,null));};exports[_0xd254('0x4c')]=function(_0x5cf356,_0xbe7931){var _0xbf1244;return db['sequelize'][_0xd254('0x4d')](function(_0x30d565){return db[_0xd254('0x2b')][_0xd254('0x4c')](_0x5cf356['body'],{'transaction':_0x30d565})[_0xd254('0x26')](function(_0x403c86){_0xbf1244=_0x403c86;var _0x3f00c9={'type':db[_0xd254('0x4e')][_0xd254('0x4f')],'transaction':_0x30d565};switch(_0x5cf356['body'][_0xd254('0x2e')]){case'text':_0x3f00c9[_0xd254('0x2e')]=db[_0xd254('0x4e')][_0xd254('0x4f')];break;case _0xd254('0x50'):_0x3f00c9[_0xd254('0x2e')]=db['Sequelize'][_0xd254('0x51')];break;case _0xd254('0x52'):_0x3f00c9['type']=db[_0xd254('0x4e')]['BOOLEAN'];_0x3f00c9[_0xd254('0x53')]=![];break;default:}return db[_0xd254('0x54')][_0xd254('0x55')]['addColumn'](_0xd254('0x56'),util['format'](_0xd254('0x57'),_0xbf1244['id']),_0x3f00c9);})['then'](function(){return _0xbf1244;});})[_0xd254('0x26')](respondWithResult(_0xbe7931,0xc9))[_0xd254('0x45')](handleError(_0xbe7931,null));};
\ No newline at end of file
index 2237c2a..8449a38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2027=['rimraf','../../config/environment','./cmCustomField.attributes','exports','define','CmCustomField','cm_custom_fields','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x25e45c,_0x42b288){var _0x35f07b=function(_0x54a143){while(--_0x54a143){_0x25e45c['push'](_0x25e45c['shift']());}};_0x35f07b(++_0x42b288);}(_0x2027,0x19d));var _0x7202=function(_0x20617c,_0x4dccff){_0x20617c=_0x20617c-0x0;var _0x2fec21=_0x2027[_0x20617c];return _0x2fec21;};'use strict';var _=require('lodash');var util=require(_0x7202('0x0'));var logger=require(_0x7202('0x1'))(_0x7202('0x2'));var moment=require(_0x7202('0x3'));var BPromise=require(_0x7202('0x4'));var rp=require(_0x7202('0x5'));var fs=require('fs');var path=require(_0x7202('0x6'));var rimraf=require(_0x7202('0x7'));var config=require(_0x7202('0x8'));var attributes=require(_0x7202('0x9'));module[_0x7202('0xa')]=function(_0x56493c,_0x49cf2f){return _0x56493c[_0x7202('0xb')](_0x7202('0xc'),attributes,{'tableName':_0x7202('0xd'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf037=['bluebird','request-promise','rimraf','./cmCustomField.attributes','exports','define','CmCustomField','util','../../config/logger','api','moment'];(function(_0xa06841,_0x446844){var _0x260f86=function(_0x2a3ccc){while(--_0x2a3ccc){_0xa06841['push'](_0xa06841['shift']());}};_0x260f86(++_0x446844);}(_0xf037,0x188));var _0x7f03=function(_0x3bc3b4,_0x5acff4){_0x3bc3b4=_0x3bc3b4-0x0;var _0x4c546b=_0xf037[_0x3bc3b4];return _0x4c546b;};'use strict';var _=require('lodash');var util=require(_0x7f03('0x0'));var logger=require(_0x7f03('0x1'))(_0x7f03('0x2'));var moment=require(_0x7f03('0x3'));var BPromise=require(_0x7f03('0x4'));var rp=require(_0x7f03('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7f03('0x6'));var config=require('../../config/environment');var attributes=require(_0x7f03('0x7'));module[_0x7f03('0x8')]=function(_0x889c89,_0x2f4dfd){return _0x889c89[_0x7f03('0x9')](_0x7f03('0xa'),attributes,{'tableName':'cm_custom_fields','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0648ca1..53d70d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28ad=['util','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','CmCustomField,\x20%s,\x20%s','message','result','lodash'];(function(_0x27dca6,_0x942b36){var _0x4e0514=function(_0x5a95b8){while(--_0x5a95b8){_0x27dca6['push'](_0x27dca6['shift']());}};_0x4e0514(++_0x942b36);}(_0x28ad,0x99));var _0xd28a=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x28ad[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xd28a('0x0'));var util=require(_0xd28a('0x1'));var moment=require('moment');var BPromise=require(_0xd28a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd28a('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xd28a('0x4'));var logger=require('../../config/logger')(_0xd28a('0x5'));var config=require(_0xd28a('0x6'));var jayson=require(_0xd28a('0x7'));var client=jayson[_0xd28a('0x8')][_0xd28a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x101a07,_0x22a2d8,_0x195ab9){return new BPromise(function(_0x307789,_0x5ea991){return client[_0xd28a('0xa')](_0x101a07,_0x195ab9)[_0xd28a('0xb')](function(_0x5196ce){logger[_0xd28a('0xc')]('CmCustomField,\x20%s,\x20%s',_0x22a2d8,_0xd28a('0xd'));logger[_0xd28a('0xe')](_0xd28a('0xf'),_0x22a2d8,'request\x20sent',JSON[_0xd28a('0x10')](_0x5196ce));if(_0x5196ce[_0xd28a('0x11')]){if(_0x5196ce[_0xd28a('0x11')][_0xd28a('0x12')]===0x1f4){logger[_0xd28a('0x11')](_0xd28a('0x13'),_0x22a2d8,_0x5196ce['error']['message']);return _0x5ea991(_0x5196ce[_0xd28a('0x11')]['message']);}logger['error'](_0xd28a('0x13'),_0x22a2d8,_0x5196ce[_0xd28a('0x11')][_0xd28a('0x14')]);return _0x307789(_0x5196ce[_0xd28a('0x11')][_0xd28a('0x14')]);}else{logger[_0xd28a('0xc')]('CmCustomField,\x20%s,\x20%s',_0x22a2d8,_0xd28a('0xd'));_0x307789(_0x5196ce[_0xd28a('0x15')][_0xd28a('0x14')]);}})['catch'](function(_0x360a10){logger[_0xd28a('0x11')](_0xd28a('0x13'),_0x22a2d8,_0x360a10);_0x5ea991(_0x360a10);});});}
\ No newline at end of file
+var _0x9156=['debug','CmCustomField,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','CmCustomField,\x20%s,\x20%s','request\x20sent'];(function(_0x2f072e,_0x2587fd){var _0x5a7bdc=function(_0x1b5f21){while(--_0x1b5f21){_0x2f072e['push'](_0x2f072e['shift']());}};_0x5a7bdc(++_0x2587fd);}(_0x9156,0xa9));var _0x6915=function(_0x17fe10,_0x3f37a6){_0x17fe10=_0x17fe10-0x0;var _0x4c9519=_0x9156[_0x17fe10];return _0x4c9519;};'use strict';var _=require(_0x6915('0x0'));var util=require(_0x6915('0x1'));var moment=require(_0x6915('0x2'));var BPromise=require('bluebird');var rs=require(_0x6915('0x3'));var fs=require('fs');var Redis=require(_0x6915('0x4'));var db=require(_0x6915('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x6915('0x6'))(_0x6915('0x7'));var config=require(_0x6915('0x8'));var jayson=require(_0x6915('0x9'));var client=jayson[_0x6915('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1347aa,_0x466e41,_0x5a6e10){return new BPromise(function(_0x5e88e8,_0x2a7834){return client[_0x6915('0xb')](_0x1347aa,_0x5a6e10)[_0x6915('0xc')](function(_0x31666d){logger['info'](_0x6915('0xd'),_0x466e41,_0x6915('0xe'));logger[_0x6915('0xf')](_0x6915('0x10'),_0x466e41,_0x6915('0xe'),JSON['stringify'](_0x31666d));if(_0x31666d['error']){if(_0x31666d[_0x6915('0x11')][_0x6915('0x12')]===0x1f4){logger[_0x6915('0x11')](_0x6915('0xd'),_0x466e41,_0x31666d[_0x6915('0x11')][_0x6915('0x13')]);return _0x2a7834(_0x31666d[_0x6915('0x11')][_0x6915('0x13')]);}logger[_0x6915('0x11')](_0x6915('0xd'),_0x466e41,_0x31666d[_0x6915('0x11')][_0x6915('0x13')]);return _0x5e88e8(_0x31666d[_0x6915('0x11')][_0x6915('0x13')]);}else{logger[_0x6915('0x14')](_0x6915('0xd'),_0x466e41,_0x6915('0xe'));_0x5e88e8(_0x31666d[_0x6915('0x15')][_0x6915('0x13')]);}})[_0x6915('0x16')](function(_0x1c1912){logger[_0x6915('0x11')](_0x6915('0xd'),_0x466e41,_0x1c1912);_0x2a7834(_0x1c1912);});});}
\ No newline at end of file
index 5343b74..28ab1fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4d6=['index','get','/:id','create','put','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','./cmCustomField.controller','isAuthenticated'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe4d6,0xd7));var _0x6e4d=function(_0xe01bea,_0x3fa47b){_0xe01bea=_0xe01bea-0x0;var _0x961623=_0xe4d6[_0xe01bea];return _0x961623;};'use strict';var multer=require(_0x6e4d('0x0'));var util=require(_0x6e4d('0x1'));var path=require(_0x6e4d('0x2'));var timeout=require(_0x6e4d('0x3'));var express=require('express');var router=express[_0x6e4d('0x4')]();var fs_extra=require(_0x6e4d('0x5'));var auth=require(_0x6e4d('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x6e4d('0x7'));router['get']('/',auth[_0x6e4d('0x8')](),controller[_0x6e4d('0x9')]);router[_0x6e4d('0xa')](_0x6e4d('0xb'),auth[_0x6e4d('0x8')](),controller['show']);router['post']('/',auth[_0x6e4d('0x8')](),controller[_0x6e4d('0xc')]);router[_0x6e4d('0xd')]('/:id',auth[_0x6e4d('0x8')](),controller['update']);router[_0x6e4d('0xe')](_0x6e4d('0xb'),auth[_0x6e4d('0x8')](),controller[_0x6e4d('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x0a52=['multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCustomField.controller','get','isAuthenticated','/:id','post','create','put','update','delete','destroy','exports'];(function(_0x4c087a,_0x4fa60e){var _0x3452e2=function(_0x161269){while(--_0x161269){_0x4c087a['push'](_0x4c087a['shift']());}};_0x3452e2(++_0x4fa60e);}(_0x0a52,0xe4));var _0x20a5=function(_0x2ddd5d,_0x35f964){_0x2ddd5d=_0x2ddd5d-0x0;var _0x24af97=_0x0a52[_0x2ddd5d];return _0x24af97;};'use strict';var multer=require(_0x20a5('0x0'));var util=require(_0x20a5('0x1'));var path=require('path');var timeout=require(_0x20a5('0x2'));var express=require(_0x20a5('0x3'));var router=express[_0x20a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x20a5('0x5'));var interaction=require(_0x20a5('0x6'));var config=require(_0x20a5('0x7'));var controller=require(_0x20a5('0x8'));router[_0x20a5('0x9')]('/',auth[_0x20a5('0xa')](),controller['index']);router['get'](_0x20a5('0xb'),auth[_0x20a5('0xa')](),controller['show']);router[_0x20a5('0xc')]('/',auth[_0x20a5('0xa')](),controller[_0x20a5('0xd')]);router[_0x20a5('0xe')]('/:id',auth[_0x20a5('0xa')](),controller[_0x20a5('0xf')]);router[_0x20a5('0x10')](_0x20a5('0xb'),auth[_0x20a5('0xa')](),controller[_0x20a5('0x11')]);module[_0x20a5('0x12')]=router;
\ No newline at end of file
index 3c9db16..edffbd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29da=['format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','STRING','UNSIGNED','contactListQueue','sequelize','exports','DATE'];(function(_0x47b9e3,_0x26e069){var _0x4b1750=function(_0x199a94){while(--_0x199a94){_0x47b9e3['push'](_0x47b9e3['shift']());}};_0x4b1750(++_0x26e069);}(_0x29da,0x72));var _0xa29d=function(_0xc6745,_0x435b2e){_0xc6745=_0xc6745-0x0;var _0xed401d=_0x29da[_0xc6745];return _0xed401d;};'use strict';var moment=require('moment');var Sequelize=require(_0xa29d('0x0'));module[_0xa29d('0x1')]={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0xa29d('0x2')],'defaultValue':moment()[_0xa29d('0x3')](_0xa29d('0x4'))},'countbusyretry':{'type':Sequelize[_0xa29d('0x5')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xa29d('0x5')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xa29d('0x6')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'priority':{'type':Sequelize[_0xa29d('0x5')](0x2)[_0xa29d('0x7')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ContactId':{'type':Sequelize[_0xa29d('0x5')],'unique':_0xa29d('0x8')},'ListId':{'type':Sequelize[_0xa29d('0x5')],'unique':_0xa29d('0x8')},'UserId':{'type':Sequelize[_0xa29d('0x5')]},'VoiceQueueId':{'type':Sequelize[_0xa29d('0x5')],'unique':_0xa29d('0x8')},'CampaignId':{'type':Sequelize['INTEGER']},'countnosuchnumberretry':{'type':Sequelize[_0xa29d('0x5')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xa29d('0x5')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xa29d('0x5')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xcc91=['exports','STRING','BOOLEAN','DATE','YYYY-MM-DD\x20HH:mm:ss','INTEGER','UNSIGNED','contactListQueue','moment'];(function(_0x48144d,_0xd73501){var _0x4afcc9=function(_0x21d5d8){while(--_0x21d5d8){_0x48144d['push'](_0x48144d['shift']());}};_0x4afcc9(++_0xd73501);}(_0xcc91,0x131));var _0x1cc9=function(_0x5ec453,_0x30b0ba){_0x5ec453=_0x5ec453-0x0;var _0x25548f=_0xcc91[_0x5ec453];return _0x25548f;};'use strict';var moment=require(_0x1cc9('0x0'));var Sequelize=require('sequelize');module[_0x1cc9('0x1')]={'phone':{'type':Sequelize[_0x1cc9('0x2')],'allowNull':![]},'active':{'type':Sequelize[_0x1cc9('0x3')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x1cc9('0x4')],'defaultValue':moment()['format'](_0x1cc9('0x5'))},'countbusyretry':{'type':Sequelize[_0x1cc9('0x6')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x1cc9('0x6')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x1cc9('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'priority':{'type':Sequelize[_0x1cc9('0x6')](0x2)[_0x1cc9('0x7')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x1cc9('0x3')],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0x1cc9('0x8')},'ListId':{'type':Sequelize[_0x1cc9('0x6')],'unique':_0x1cc9('0x8')},'UserId':{'type':Sequelize['INTEGER']},'VoiceQueueId':{'type':Sequelize[_0x1cc9('0x6')],'unique':_0x1cc9('0x8')},'CampaignId':{'type':Sequelize[_0x1cc9('0x6')]},'countnosuchnumberretry':{'type':Sequelize[_0x1cc9('0x6')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x1cc9('0x6')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x1cc9('0x6')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x1cc9('0x6')],'defaultValue':0x0}};
\ No newline at end of file
index 4c4ff15..7cba85a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0be3=['$like','$overlap','$contains','$any','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','include','findAll','then','rows','show','includeAll','find','catch','create','body','describe','params','VoiceQueueId','VoiceQueue','Campaign','CampaignId','omit','dataValues','updatedAt','state','statedesc','deleted','campaign','membername','user','UserId','deletedat','format','calleridnum','phone','campaigntype','queue','ivr','CmContact','ContactId','isNil','firstName','calleridname','lastName','finally','getPreview','getVoiceQueues','outbound','preview','sequelize','transaction','YYYY-MM-DD\x20HH:mm:ss','direction','isEmpty','hopperIds','priority','scheduledAt','dialOrderByScheduledAt','ASC','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','Contact','CmCompany','Company','CmList','List','dialActive','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','reject','save','update','destroy','error','stack','name','send','index','map','CmHopper','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','concat','$or','$gt','$lt','$lte','$ne','$eq','$not','$between','$in','$iLike'];(function(_0x1bd36a,_0x1ddeae){var _0x3a00aa=function(_0xdc996a){while(--_0xdc996a){_0x1bd36a['push'](_0x1bd36a['shift']());}};_0x3a00aa(++_0x1ddeae);}(_0x0be3,0x183));var _0x30be=function(_0x5b89c7,_0x22994c){_0x5b89c7=_0x5b89c7-0x0;var _0x332b50=_0x0be3[_0x5b89c7];return _0x332b50;};'use strict';var emlformat=require(_0x30be('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x30be('0x1'));var jsonpatch=require(_0x30be('0x2'));var rp=require(_0x30be('0x3'));var moment=require(_0x30be('0x4'));var BPromise=require(_0x30be('0x5'));var Mustache=require(_0x30be('0x6'));var util=require(_0x30be('0x7'));var path=require('path');var sox=require(_0x30be('0x8'));var csv=require(_0x30be('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x30be('0xa'));var _=require(_0x30be('0xb'));var squel=require(_0x30be('0xc'));var crypto=require(_0x30be('0xd'));var jsforce=require(_0x30be('0xe'));var deskjs=require(_0x30be('0xf'));var toCsv=require(_0x30be('0x9'));var querystring=require(_0x30be('0x10'));var Papa=require(_0x30be('0x11'));var Redis=require(_0x30be('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x30be('0x13'));var logger=require(_0x30be('0x14'))(_0x30be('0x15'));var utils=require(_0x30be('0x16'));var config=require(_0x30be('0x17'));var licenseUtil=require(_0x30be('0x18'));var db=require(_0x30be('0x19'))['db'];function respondWithStatusCode(_0xa7a709,_0x5242a6){_0x5242a6=_0x5242a6||0xcc;return function(_0x40295a){if(_0x40295a){return _0xa7a709[_0x30be('0x1a')](_0x5242a6);}return _0xa7a709[_0x30be('0x1b')](_0x5242a6)[_0x30be('0x1c')]();};}function respondWithResult(_0xb4d856,_0x11770a){_0x11770a=_0x11770a||0xc8;return function(_0x908757){if(_0x908757){return _0xb4d856[_0x30be('0x1b')](_0x11770a)[_0x30be('0x1d')](_0x908757);}};}function respondWithFilteredResult(_0x694229,_0x46c369){return function(_0x57a3af){if(_0x57a3af){var _0x3cc266=typeof _0x46c369[_0x30be('0x1e')]==='undefined'&&typeof _0x46c369[_0x30be('0x1f')]===_0x30be('0x20');var _0x37bb5e=_0x57a3af['count'];var _0x39cb24=_0x3cc266?0x0:_0x46c369[_0x30be('0x1e')];var _0x2a84bb=_0x3cc266?_0x57a3af[_0x30be('0x21')]:_0x46c369[_0x30be('0x1e')]+_0x46c369[_0x30be('0x1f')];var _0x2f3319;if(_0x2a84bb>=_0x37bb5e){_0x2a84bb=_0x37bb5e;_0x2f3319=0xc8;}else{_0x2f3319=0xce;}_0x694229[_0x30be('0x1b')](_0x2f3319);return _0x694229['set'](_0x30be('0x22'),_0x39cb24+'-'+_0x2a84bb+'/'+_0x37bb5e)[_0x30be('0x1d')](_0x57a3af);}return null;};}function patchUpdates(_0x1ae78b){return function(_0x3fd7c9){try{jsonpatch['apply'](_0x3fd7c9,_0x1ae78b,!![]);}catch(_0x434816){return BPromise[_0x30be('0x23')](_0x434816);}return _0x3fd7c9[_0x30be('0x24')]();};}function saveUpdates(_0x144d4,_0x4ce372){return function(_0x383265){if(_0x383265){return _0x383265[_0x30be('0x25')](_0x144d4)['then'](function(_0x3a8e8f){return _0x3a8e8f;});}return null;};}function removeEntity(_0x25b7b2,_0x541da9){return function(_0x7477b4){if(_0x7477b4){return _0x7477b4[_0x30be('0x26')]()['then'](function(){_0x25b7b2[_0x30be('0x1b')](0xcc)[_0x30be('0x1c')]();});}};}function handleEntityNotFound(_0x73f0a3,_0x213e5e){return function(_0x1a514e){if(!_0x1a514e){_0x73f0a3[_0x30be('0x1a')](0x194);}return _0x1a514e;};}function handleError(_0x24a135,_0x15e6d0){_0x15e6d0=_0x15e6d0||0x1f4;return function(_0x19013c){logger[_0x30be('0x27')](_0x19013c[_0x30be('0x28')]);if(_0x19013c[_0x30be('0x29')]){delete _0x19013c[_0x30be('0x29')];}_0x24a135['status'](_0x15e6d0)[_0x30be('0x2a')](_0x19013c);};}exports[_0x30be('0x2b')]=function(_0x39387c,_0x1e7622){var _0x4ae8a1={},_0x39ebbf={},_0x573381={'count':0x0,'rows':[]};var _0x7cb6e=_[_0x30be('0x2c')](db[_0x30be('0x2d')][_0x30be('0x2e')],function(_0x1ac8e4){return{'name':_0x1ac8e4[_0x30be('0x2f')],'type':_0x1ac8e4[_0x30be('0x30')][_0x30be('0x31')]};});_0x39ebbf[_0x30be('0x32')]=_[_0x30be('0x2c')](_0x7cb6e,'name');_0x39ebbf[_0x30be('0x33')]=_[_0x30be('0x34')](_0x39387c['query']);_0x39ebbf[_0x30be('0x35')]=_[_0x30be('0x36')](_0x39ebbf[_0x30be('0x32')],_0x39ebbf[_0x30be('0x33')]);_0x39ebbf[_0x30be('0x35')]=_[_0x30be('0x37')](_0x39ebbf['filters'],['$and',_0x30be('0x38'),_0x30be('0x39'),'$gte',_0x30be('0x3a'),_0x30be('0x3b'),_0x30be('0x3c'),_0x30be('0x3d'),_0x30be('0x3e'),_0x30be('0x3f'),'$notBetween',_0x30be('0x40'),'$notIn','$like','$notLike',_0x30be('0x41'),'$notILike',_0x30be('0x42'),_0x30be('0x43'),_0x30be('0x44'),'$contained',_0x30be('0x45')]);_0x4ae8a1[_0x30be('0x46')]=_[_0x30be('0x36')](_0x39ebbf['model'],qs['fields'](_0x39387c[_0x30be('0x33')][_0x30be('0x47')]));_0x4ae8a1['attributes']=_0x4ae8a1[_0x30be('0x46')][_0x30be('0x48')]?_0x4ae8a1[_0x30be('0x46')]:_0x39ebbf[_0x30be('0x32')];if(!_0x39387c[_0x30be('0x33')][_0x30be('0x49')](_0x30be('0x4a'))){_0x4ae8a1[_0x30be('0x1f')]=qs['limit'](_0x39387c[_0x30be('0x33')][_0x30be('0x1f')]);_0x4ae8a1[_0x30be('0x1e')]=qs[_0x30be('0x1e')](_0x39387c[_0x30be('0x33')][_0x30be('0x1e')]);}_0x4ae8a1[_0x30be('0x4b')]=qs[_0x30be('0x4c')](_0x39387c[_0x30be('0x33')][_0x30be('0x4c')]);_0x4ae8a1[_0x30be('0x4d')]=qs['filters'](_['pick'](_0x39387c['query'],_0x39ebbf[_0x30be('0x35')]),_0x7cb6e);if(_0x39387c[_0x30be('0x33')]['filter']){_0x4ae8a1[_0x30be('0x4d')]=_[_0x30be('0x4e')](_0x4ae8a1[_0x30be('0x4d')],{'$or':_[_0x30be('0x2c')](_0x7cb6e,function(_0x1ff8f9){if(_0x1ff8f9[_0x30be('0x30')]!==_0x30be('0x4f')){var _0x51106c={};_0x51106c[_0x1ff8f9[_0x30be('0x29')]]={'$like':'%'+_0x39387c[_0x30be('0x33')][_0x30be('0x50')]+'%'};return _0x51106c;}})});}_0x4ae8a1=_[_0x30be('0x4e')]({},_0x4ae8a1,_0x39387c[_0x30be('0x51')]);var _0x1c581e={'where':_0x4ae8a1[_0x30be('0x4d')]};return db[_0x30be('0x2d')][_0x30be('0x21')](_0x1c581e)['then'](function(_0x10cca4){_0x573381[_0x30be('0x21')]=_0x10cca4;if(_0x39387c[_0x30be('0x33')]['includeAll']){_0x4ae8a1[_0x30be('0x52')]=[{'all':!![]}];}return db['CmHopper'][_0x30be('0x53')](_0x4ae8a1);})[_0x30be('0x54')](function(_0x39167a){_0x573381[_0x30be('0x55')]=_0x39167a;return _0x573381;})[_0x30be('0x54')](respondWithFilteredResult(_0x1e7622,_0x4ae8a1))['catch'](handleError(_0x1e7622,null));};exports[_0x30be('0x56')]=function(_0x31bb06,_0x495a35){var _0x351904={'raw':!![],'where':{'id':_0x31bb06['params']['id']}},_0x22b768={};_0x22b768[_0x30be('0x32')]=_[_0x30be('0x34')](db[_0x30be('0x2d')][_0x30be('0x2e')]);_0x22b768[_0x30be('0x33')]=_[_0x30be('0x34')](_0x31bb06[_0x30be('0x33')]);_0x22b768[_0x30be('0x35')]=_[_0x30be('0x36')](_0x22b768[_0x30be('0x32')],_0x22b768[_0x30be('0x33')]);_0x351904[_0x30be('0x46')]=_[_0x30be('0x36')](_0x22b768['model'],qs[_0x30be('0x47')](_0x31bb06[_0x30be('0x33')][_0x30be('0x47')]));_0x351904[_0x30be('0x46')]=_0x351904[_0x30be('0x46')][_0x30be('0x48')]?_0x351904[_0x30be('0x46')]:_0x22b768['model'];if(_0x31bb06[_0x30be('0x33')][_0x30be('0x57')]){_0x351904[_0x30be('0x52')]=[{'all':!![]}];}_0x351904=_['merge']({},_0x351904,_0x31bb06[_0x30be('0x51')]);return db[_0x30be('0x2d')][_0x30be('0x58')](_0x351904)['then'](handleEntityNotFound(_0x495a35,null))[_0x30be('0x54')](respondWithResult(_0x495a35,null))[_0x30be('0x59')](handleError(_0x495a35,null));};exports[_0x30be('0x5a')]=function(_0x399230,_0x4443c4){return db['CmHopper']['create'](_0x399230[_0x30be('0x5b')],{})[_0x30be('0x54')](respondWithResult(_0x4443c4,0xc9))[_0x30be('0x59')](handleError(_0x4443c4,null));};exports['update']=function(_0x145821,_0x386ee5){if(_0x145821[_0x30be('0x5b')]['id']){delete _0x145821[_0x30be('0x5b')]['id'];}return db['CmHopper']['find']({'where':{'id':_0x145821['params']['id']}})['then'](handleEntityNotFound(_0x386ee5,null))['then'](saveUpdates(_0x145821[_0x30be('0x5b')],null))['then'](respondWithResult(_0x386ee5,null))[_0x30be('0x59')](handleError(_0x386ee5,null));};exports[_0x30be('0x5c')]=function(_0x251036,_0x170ac1){return db[_0x30be('0x2d')][_0x30be('0x5c')]()[_0x30be('0x54')](respondWithResult(_0x170ac1,null))[_0x30be('0x59')](handleError(_0x170ac1,null));};exports[_0x30be('0x26')]=function(_0x507e7f,_0x49df5a){var _0xe250ee;return db[_0x30be('0x2d')][_0x30be('0x58')]({'where':{'id':_0x507e7f[_0x30be('0x5d')]['id']}})[_0x30be('0x54')](handleEntityNotFound(_0x49df5a,null))[_0x30be('0x54')](function(_0x3cb22e){if(_0x3cb22e){return _0x3cb22e['destroy']()[_0x30be('0x54')](function(_0x3b400f){return _0x3b400f;});}})[_0x30be('0x54')](function(_0x102b53){_0xe250ee=_0x102b53;if(_0x102b53){if(_0x102b53[_0x30be('0x5e')]||_0x102b53['CampaignId']){return db[_0x102b53[_0x30be('0x5e')]?_0x30be('0x5f'):_0x30be('0x60')][_0x30be('0x58')]({'where':{'id':_0x102b53[_0x30be('0x5e')]?_0x102b53[_0x30be('0x5e')]:_0x102b53[_0x30be('0x61')]},'attributes':['id',_0x30be('0x29')],'raw':!![]});}}})[_0x30be('0x54')](function(_0x1b2406){var _0x4a6381={};if(_0x1b2406){_[_0x30be('0x4e')](_0x4a6381,_[_0x30be('0x62')](_0xe250ee[_0x30be('0x63')],['createdAt',_0x30be('0x64'),'id']));_0x4a6381[_0x30be('0x65')]=0x15;_0x4a6381[_0x30be('0x66')]=_0x30be('0x67');_0x4a6381[_0x30be('0x68')]=_0x1b2406[_0x30be('0x29')];_0x4a6381[_0x30be('0x69')]=_0x507e7f[_0x30be('0x6a')]['name'];_0x4a6381[_0x30be('0x6b')]=_0x507e7f['user']['id'];_0x4a6381[_0x30be('0x67')]=!![];_0x4a6381[_0x30be('0x6c')]=moment()[_0x30be('0x6d')]('YYYY-MM-DD\x20HH:mm:ss');_0x4a6381[_0x30be('0x6e')]=_0xe250ee[_0x30be('0x6f')];_0x4a6381[_0x30be('0x70')]=_0xe250ee[_0x30be('0x5e')]?_0x30be('0x71'):_0x30be('0x72');return db[_0x30be('0x73')][_0x30be('0x58')]({'where':{'id':_0x4a6381[_0x30be('0x74')]},'attributes':['firstName','lastName']})[_0x30be('0x54')](function(_0x149d24){if(!_[_0x30be('0x75')](_0x49df5a)&&!_[_0x30be('0x75')](_0x149d24[_0x30be('0x76')])){_0x4a6381[_0x30be('0x77')]=_0x149d24[_0x30be('0x76')];if(!_[_0x30be('0x75')](_0x149d24[_0x30be('0x78')])){_0x4a6381[_0x30be('0x77')]+='\x20'+_0x149d24[_0x30be('0x78')];}}})[_0x30be('0x79')](function(){return db['CmHopperFinal'][_0x30be('0x5a')](_0x4a6381);});}})[_0x30be('0x54')](function(){return _0x49df5a['status'](0xcc)[_0x30be('0x1c')]();})['catch'](handleError(_0x49df5a,null));};exports[_0x30be('0x7a')]=function(_0x316001,_0x2a5ea9,_0x224add){var _0x5a7bb5=[];return db['CmContact'][_0x30be('0x5c')]()[_0x30be('0x54')](function(_0x1087f6){_0x5a7bb5=_[_0x30be('0x34')](_0x1087f6);return _0x316001[_0x30be('0x6a')][_0x30be('0x7b')]({'where':{'type':_0x30be('0x7c'),'dialActive':!![],'dialMethod':_0x30be('0x7d')},'attributes':['id','dialOrderByScheduledAt'],'raw':!![]});})[_0x30be('0x54')](function(_0x31fee2){if(_0x31fee2&&_0x31fee2[_0x30be('0x48')]){return db[_0x30be('0x7e')][_0x30be('0x7f')](function(_0x472ad5){var _0x174b5b={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x30be('0x6d')](_0x30be('0x80'))},'VoiceQueueId':{'$in':_[_0x30be('0x2c')](_0x31fee2,'id')},'$or':[{'UserId':null},{'UserId':_0x316001[_0x30be('0x6a')]['id']}]};var _0x53a66c=[];if(_0x316001[_0x30be('0x5b')][_0x30be('0x81')]&&_0x316001[_0x30be('0x5b')][_0x30be('0x81')]==='prev'){if(!_[_0x30be('0x82')](_0x316001[_0x30be('0x5b')][_0x30be('0x83')])){_0x174b5b['id']={'$in':_0x316001[_0x30be('0x5b')][_0x30be('0x83')]};}_0x53a66c=[[_0x30be('0x84'),'ASC'],[_0x30be('0x85'),_0x31fee2[0x0][_0x30be('0x86')]===_0x30be('0x87')?_0x30be('0x88'):_0x30be('0x87')],db[_0x30be('0x7e')][_0x30be('0x89')](_0x30be('0x8a')),['id',_0x30be('0x88')]];}else{if(!_['isEmpty'](_0x316001[_0x30be('0x5b')][_0x30be('0x83')])){_0x174b5b['id']={'$notIn':_0x316001['body'][_0x30be('0x83')]};}_0x53a66c=[['priority',_0x30be('0x88')],[_0x30be('0x85'),_0x31fee2[0x0][_0x30be('0x86')]],db[_0x30be('0x7e')][_0x30be('0x89')](_0x30be('0x8b')),['id','ASC']];}return db[_0x30be('0x2d')][_0x30be('0x8c')]({'attributes':['id',_0x30be('0x8d')],'where':_0x174b5b,'order':_0x53a66c,'transaction':_0x472ad5,'lock':_0x472ad5[_0x30be('0x8e')]['UPDATE'],'include':[{'model':db[_0x30be('0x73')],'as':_0x30be('0x8f'),'attributes':_0x5a7bb5,'include':[{'model':db[_0x30be('0x90')],'as':_0x30be('0x91'),'attributes':['id',_0x30be('0x29')]}]},{'model':db[_0x30be('0x92')],'as':_0x30be('0x93'),'attributes':['id',_0x30be('0x29')]},{'model':db[_0x30be('0x5f')],'as':'Queue','attributes':['id',_0x30be('0x29'),_0x30be('0x94')]}]})['then'](function(_0x148d67){if(_0x148d67){return _0x148d67[_0x30be('0x25')]({'UserId':_0x316001[_0x30be('0x6a')]['id']},{'transaction':_0x472ad5});}});});}})[_0x30be('0x54')](handleEntityNotFound(_0x2a5ea9,null))[_0x30be('0x54')](respondWithResult(_0x2a5ea9,null))['catch'](handleError(_0x2a5ea9,null));};exports['getOpenContacts']=function(_0x2a12d9,_0x3b5a5a,_0x5dbdd8){return _0x2a12d9[_0x30be('0x6a')][_0x30be('0x7b')]({'where':{'type':_0x30be('0x7c'),'dialActive':!![],'dialMethod':_0x30be('0x7d')},'attributes':['id'],'raw':!![]})[_0x30be('0x54')](function(_0x204005){if(_0x204005&&_0x204005['length']){return db[_0x30be('0x2d')]['count']({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x30be('0x6d')](_0x30be('0x80'))},'VoiceQueueId':{'$in':_[_0x30be('0x2c')](_0x204005,'id')},'$or':[{'UserId':null},{'UserId':_0x2a12d9[_0x30be('0x6a')]['id']}]}});}return 0x0;})['then'](function(_0x1dc446){if(!_[_0x30be('0x75')](_0x1dc446)&&_['isNumber'](_0x1dc446)){return _0x3b5a5a[_0x30be('0x1b')](0xc8)['json']({'contacts':_0x1dc446});}else{logger[_0x30be('0x27')](_0x30be('0x95'),'getOpenContacts',0x194,_0x30be('0x96'));_0x3b5a5a[_0x30be('0x1a')](0x194);}})[_0x30be('0x59')](handleError(_0x3b5a5a,null));};
\ No newline at end of file
+var _0xdc0d=['statedesc','deleted','campaign','membername','user','UserId','format','campaigntype','queue','ivr','CmContact','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','getPreview','getVoiceQueues','outbound','dialOrderByScheduledAt','sequelize','transaction','YYYY-MM-DD\x20HH:mm:ss','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','DESC','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','UPDATE','Contact','Company','CmList','List','VoiceQueue','Queue','dialActive','getOpenContacts','preview','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','eml-format','rimraf','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','index','map','CmHopper','key','model','keys','query','intersection','filters','concat','$and','$gte','$lt','$lte','$not','$between','$notBetween','$in','$like','$notLike','$iLike','$notILike','$overlap','$contains','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','type','VIRTUAL','include','findAll','rows','show','params','options','find','catch','create','body','describe','VoiceQueueId','CampaignId','Campaign','omit','dataValues','createdAt','updatedAt'];(function(_0x536919,_0x2d0c68){var _0x3694d9=function(_0xf21223){while(--_0xf21223){_0x536919['push'](_0x536919['shift']());}};_0x3694d9(++_0x2d0c68);}(_0xdc0d,0xc4));var _0xddc0=function(_0x3a1151,_0x56fdaf){_0x3a1151=_0x3a1151-0x0;var _0x1465e0=_0xdc0d[_0x3a1151];return _0x1465e0;};'use strict';var emlformat=require(_0xddc0('0x0'));var rimraf=require(_0xddc0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xddc0('0x2'));var BPromise=require(_0xddc0('0x3'));var Mustache=require('mustache');var util=require(_0xddc0('0x4'));var path=require(_0xddc0('0x5'));var sox=require(_0xddc0('0x6'));var csv=require(_0xddc0('0x7'));var ejs=require(_0xddc0('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xddc0('0x9'));var squel=require(_0xddc0('0xa'));var crypto=require('crypto');var jsforce=require(_0xddc0('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xddc0('0x7'));var querystring=require('querystring');var Papa=require(_0xddc0('0xc'));var Redis=require(_0xddc0('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xddc0('0xe'));var as=require(_0xddc0('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xddc0('0x10'))(_0xddc0('0x11'));var utils=require(_0xddc0('0x12'));var config=require(_0xddc0('0x13'));var licenseUtil=require(_0xddc0('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1341d2,_0x17e59a){_0x17e59a=_0x17e59a||0xcc;return function(_0xbe437d){if(_0xbe437d){return _0x1341d2[_0xddc0('0x15')](_0x17e59a);}return _0x1341d2[_0xddc0('0x16')](_0x17e59a)[_0xddc0('0x17')]();};}function respondWithResult(_0x2ba87b,_0x50422e){_0x50422e=_0x50422e||0xc8;return function(_0x34fce9){if(_0x34fce9){return _0x2ba87b[_0xddc0('0x16')](_0x50422e)['json'](_0x34fce9);}};}function respondWithFilteredResult(_0x2c79d4,_0x60b89c){return function(_0x5aee9){if(_0x5aee9){var _0x345297=typeof _0x60b89c[_0xddc0('0x18')]===_0xddc0('0x19')&&typeof _0x60b89c[_0xddc0('0x1a')]===_0xddc0('0x19');var _0x13f62c=_0x5aee9['count'];var _0x343ddf=_0x345297?0x0:_0x60b89c['offset'];var _0x4565c2=_0x345297?_0x5aee9[_0xddc0('0x1b')]:_0x60b89c[_0xddc0('0x18')]+_0x60b89c[_0xddc0('0x1a')];var _0x10dce9;if(_0x4565c2>=_0x13f62c){_0x4565c2=_0x13f62c;_0x10dce9=0xc8;}else{_0x10dce9=0xce;}_0x2c79d4['status'](_0x10dce9);return _0x2c79d4[_0xddc0('0x1c')](_0xddc0('0x1d'),_0x343ddf+'-'+_0x4565c2+'/'+_0x13f62c)[_0xddc0('0x1e')](_0x5aee9);}return null;};}function patchUpdates(_0xecae76){return function(_0x34c48d){try{jsonpatch[_0xddc0('0x1f')](_0x34c48d,_0xecae76,!![]);}catch(_0x14bbf5){return BPromise[_0xddc0('0x20')](_0x14bbf5);}return _0x34c48d[_0xddc0('0x21')]();};}function saveUpdates(_0x2bbc60,_0x27ea81){return function(_0x552ad1){if(_0x552ad1){return _0x552ad1[_0xddc0('0x22')](_0x2bbc60)[_0xddc0('0x23')](function(_0x59ca1b){return _0x59ca1b;});}return null;};}function removeEntity(_0x10faa4,_0x1a7686){return function(_0x13d52c){if(_0x13d52c){return _0x13d52c[_0xddc0('0x24')]()[_0xddc0('0x23')](function(){_0x10faa4['status'](0xcc)[_0xddc0('0x17')]();});}};}function handleEntityNotFound(_0x5f4b24,_0xc0c7ff){return function(_0x2001aa){if(!_0x2001aa){_0x5f4b24[_0xddc0('0x15')](0x194);}return _0x2001aa;};}function handleError(_0x44c980,_0x1d15d3){_0x1d15d3=_0x1d15d3||0x1f4;return function(_0x4963e7){logger[_0xddc0('0x25')](_0x4963e7[_0xddc0('0x26')]);if(_0x4963e7[_0xddc0('0x27')]){delete _0x4963e7[_0xddc0('0x27')];}_0x44c980[_0xddc0('0x16')](_0x1d15d3)['send'](_0x4963e7);};}exports[_0xddc0('0x28')]=function(_0x5150a1,_0x1bdace){var _0x137465={},_0x5ed34d={},_0x548bcc={'count':0x0,'rows':[]};var _0x30a677=_[_0xddc0('0x29')](db[_0xddc0('0x2a')]['rawAttributes'],function(_0xfe97ba){return{'name':_0xfe97ba['fieldName'],'type':_0xfe97ba['type'][_0xddc0('0x2b')]};});_0x5ed34d[_0xddc0('0x2c')]=_[_0xddc0('0x29')](_0x30a677,_0xddc0('0x27'));_0x5ed34d['query']=_[_0xddc0('0x2d')](_0x5150a1[_0xddc0('0x2e')]);_0x5ed34d['filters']=_[_0xddc0('0x2f')](_0x5ed34d[_0xddc0('0x2c')],_0x5ed34d[_0xddc0('0x2e')]);_0x5ed34d[_0xddc0('0x30')]=_[_0xddc0('0x31')](_0x5ed34d[_0xddc0('0x30')],[_0xddc0('0x32'),'$or','$gt',_0xddc0('0x33'),_0xddc0('0x34'),_0xddc0('0x35'),'$ne','$eq',_0xddc0('0x36'),_0xddc0('0x37'),_0xddc0('0x38'),_0xddc0('0x39'),'$notIn',_0xddc0('0x3a'),_0xddc0('0x3b'),_0xddc0('0x3c'),_0xddc0('0x3d'),_0xddc0('0x3a'),_0xddc0('0x3e'),_0xddc0('0x3f'),'$contained','$any']);_0x137465[_0xddc0('0x40')]=_[_0xddc0('0x2f')](_0x5ed34d['model'],qs[_0xddc0('0x41')](_0x5150a1[_0xddc0('0x2e')][_0xddc0('0x41')]));_0x137465['attributes']=_0x137465[_0xddc0('0x40')][_0xddc0('0x42')]?_0x137465[_0xddc0('0x40')]:_0x5ed34d[_0xddc0('0x2c')];if(!_0x5150a1[_0xddc0('0x2e')][_0xddc0('0x43')](_0xddc0('0x44'))){_0x137465[_0xddc0('0x1a')]=qs['limit'](_0x5150a1[_0xddc0('0x2e')][_0xddc0('0x1a')]);_0x137465['offset']=qs[_0xddc0('0x18')](_0x5150a1[_0xddc0('0x2e')]['offset']);}_0x137465[_0xddc0('0x45')]=qs['sort'](_0x5150a1[_0xddc0('0x2e')][_0xddc0('0x46')]);_0x137465['where']=qs[_0xddc0('0x30')](_['pick'](_0x5150a1[_0xddc0('0x2e')],_0x5ed34d[_0xddc0('0x30')]),_0x30a677);if(_0x5150a1[_0xddc0('0x2e')][_0xddc0('0x47')]){_0x137465[_0xddc0('0x48')]=_[_0xddc0('0x49')](_0x137465[_0xddc0('0x48')],{'$or':_[_0xddc0('0x29')](_0x30a677,function(_0x441a6f){if(_0x441a6f[_0xddc0('0x4a')]!==_0xddc0('0x4b')){var _0x3ce325={};_0x3ce325[_0x441a6f[_0xddc0('0x27')]]={'$like':'%'+_0x5150a1[_0xddc0('0x2e')][_0xddc0('0x47')]+'%'};return _0x3ce325;}})});}_0x137465=_[_0xddc0('0x49')]({},_0x137465,_0x5150a1['options']);var _0x918b7f={'where':_0x137465['where']};return db[_0xddc0('0x2a')][_0xddc0('0x1b')](_0x918b7f)['then'](function(_0x2f499d){_0x548bcc[_0xddc0('0x1b')]=_0x2f499d;if(_0x5150a1[_0xddc0('0x2e')]['includeAll']){_0x137465[_0xddc0('0x4c')]=[{'all':!![]}];}return db[_0xddc0('0x2a')][_0xddc0('0x4d')](_0x137465);})['then'](function(_0x333ea3){_0x548bcc[_0xddc0('0x4e')]=_0x333ea3;return _0x548bcc;})[_0xddc0('0x23')](respondWithFilteredResult(_0x1bdace,_0x137465))['catch'](handleError(_0x1bdace,null));};exports[_0xddc0('0x4f')]=function(_0x1d22ae,_0x3e7858){var _0x3646bb={'raw':!![],'where':{'id':_0x1d22ae[_0xddc0('0x50')]['id']}},_0x4427dd={};_0x4427dd[_0xddc0('0x2c')]=_[_0xddc0('0x2d')](db[_0xddc0('0x2a')]['rawAttributes']);_0x4427dd[_0xddc0('0x2e')]=_[_0xddc0('0x2d')](_0x1d22ae[_0xddc0('0x2e')]);_0x4427dd['filters']=_[_0xddc0('0x2f')](_0x4427dd[_0xddc0('0x2c')],_0x4427dd[_0xddc0('0x2e')]);_0x3646bb[_0xddc0('0x40')]=_['intersection'](_0x4427dd['model'],qs['fields'](_0x1d22ae['query'][_0xddc0('0x41')]));_0x3646bb[_0xddc0('0x40')]=_0x3646bb[_0xddc0('0x40')][_0xddc0('0x42')]?_0x3646bb[_0xddc0('0x40')]:_0x4427dd[_0xddc0('0x2c')];if(_0x1d22ae['query']['includeAll']){_0x3646bb[_0xddc0('0x4c')]=[{'all':!![]}];}_0x3646bb=_[_0xddc0('0x49')]({},_0x3646bb,_0x1d22ae[_0xddc0('0x51')]);return db['CmHopper'][_0xddc0('0x52')](_0x3646bb)['then'](handleEntityNotFound(_0x3e7858,null))[_0xddc0('0x23')](respondWithResult(_0x3e7858,null))[_0xddc0('0x53')](handleError(_0x3e7858,null));};exports[_0xddc0('0x54')]=function(_0x35a80e,_0xe50358){return db[_0xddc0('0x2a')][_0xddc0('0x54')](_0x35a80e[_0xddc0('0x55')],{})[_0xddc0('0x23')](respondWithResult(_0xe50358,0xc9))[_0xddc0('0x53')](handleError(_0xe50358,null));};exports[_0xddc0('0x22')]=function(_0x523ab4,_0x30d793){if(_0x523ab4['body']['id']){delete _0x523ab4[_0xddc0('0x55')]['id'];}return db[_0xddc0('0x2a')][_0xddc0('0x52')]({'where':{'id':_0x523ab4['params']['id']}})['then'](handleEntityNotFound(_0x30d793,null))[_0xddc0('0x23')](saveUpdates(_0x523ab4[_0xddc0('0x55')],null))[_0xddc0('0x23')](respondWithResult(_0x30d793,null))['catch'](handleError(_0x30d793,null));};exports[_0xddc0('0x56')]=function(_0x333110,_0x3999a0){return db['CmHopper'][_0xddc0('0x56')]()[_0xddc0('0x23')](respondWithResult(_0x3999a0,null))[_0xddc0('0x53')](handleError(_0x3999a0,null));};exports[_0xddc0('0x24')]=function(_0x2659dc,_0x52e2a4){var _0x1e46b6;return db[_0xddc0('0x2a')][_0xddc0('0x52')]({'where':{'id':_0x2659dc['params']['id']}})[_0xddc0('0x23')](handleEntityNotFound(_0x52e2a4,null))[_0xddc0('0x23')](function(_0x2e991f){if(_0x2e991f){return _0x2e991f[_0xddc0('0x24')]()[_0xddc0('0x23')](function(_0x56b5b1){return _0x56b5b1;});}})['then'](function(_0x211560){_0x1e46b6=_0x211560;if(_0x211560){if(_0x211560[_0xddc0('0x57')]||_0x211560[_0xddc0('0x58')]){return db[_0x211560[_0xddc0('0x57')]?'VoiceQueue':_0xddc0('0x59')][_0xddc0('0x52')]({'where':{'id':_0x211560['VoiceQueueId']?_0x211560[_0xddc0('0x57')]:_0x211560[_0xddc0('0x58')]},'attributes':['id','name'],'raw':!![]});}}})[_0xddc0('0x23')](function(_0x2c5db0){var _0x5059d6={};if(_0x2c5db0){_[_0xddc0('0x49')](_0x5059d6,_[_0xddc0('0x5a')](_0x1e46b6[_0xddc0('0x5b')],[_0xddc0('0x5c'),_0xddc0('0x5d'),'id']));_0x5059d6['state']=0x15;_0x5059d6[_0xddc0('0x5e')]=_0xddc0('0x5f');_0x5059d6[_0xddc0('0x60')]=_0x2c5db0[_0xddc0('0x27')];_0x5059d6[_0xddc0('0x61')]=_0x2659dc[_0xddc0('0x62')][_0xddc0('0x27')];_0x5059d6[_0xddc0('0x63')]=_0x2659dc[_0xddc0('0x62')]['id'];_0x5059d6['deleted']=!![];_0x5059d6['deletedat']=moment()[_0xddc0('0x64')]('YYYY-MM-DD\x20HH:mm:ss');_0x5059d6['calleridnum']=_0x1e46b6['phone'];_0x5059d6[_0xddc0('0x65')]=_0x1e46b6['VoiceQueueId']?_0xddc0('0x66'):_0xddc0('0x67');return db[_0xddc0('0x68')]['find']({'where':{'id':_0x5059d6[_0xddc0('0x69')]},'attributes':[_0xddc0('0x6a'),_0xddc0('0x6b')]})['then'](function(_0x591476){if(!_[_0xddc0('0x6c')](_0x52e2a4)&&!_[_0xddc0('0x6c')](_0x591476['firstName'])){_0x5059d6[_0xddc0('0x6d')]=_0x591476[_0xddc0('0x6a')];if(!_[_0xddc0('0x6c')](_0x591476[_0xddc0('0x6b')])){_0x5059d6['calleridname']+='\x20'+_0x591476[_0xddc0('0x6b')];}}})[_0xddc0('0x6e')](function(){return db[_0xddc0('0x6f')]['create'](_0x5059d6);});}})[_0xddc0('0x23')](function(){return _0x52e2a4['status'](0xcc)[_0xddc0('0x17')]();})[_0xddc0('0x53')](handleError(_0x52e2a4,null));};exports[_0xddc0('0x70')]=function(_0x312070,_0x5bbe4c,_0x543dd3){var _0x2dfbd0=[];return db[_0xddc0('0x68')][_0xddc0('0x56')]()[_0xddc0('0x23')](function(_0x1aa937){_0x2dfbd0=_[_0xddc0('0x2d')](_0x1aa937);return _0x312070['user'][_0xddc0('0x71')]({'where':{'type':_0xddc0('0x72'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id',_0xddc0('0x73')],'raw':!![]});})[_0xddc0('0x23')](function(_0x2be217){if(_0x2be217&&_0x2be217['length']){return db[_0xddc0('0x74')][_0xddc0('0x75')](function(_0x109047){var _0x26bbad={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0xddc0('0x76'))},'VoiceQueueId':{'$in':_[_0xddc0('0x29')](_0x2be217,'id')},'$or':[{'UserId':null},{'UserId':_0x312070[_0xddc0('0x62')]['id']}]};var _0x490d0e=[];if(_0x312070[_0xddc0('0x55')]['direction']&&_0x312070['body']['direction']===_0xddc0('0x77')){if(!_[_0xddc0('0x78')](_0x312070['body'][_0xddc0('0x79')])){_0x26bbad['id']={'$in':_0x312070[_0xddc0('0x55')][_0xddc0('0x79')]};}_0x490d0e=[[_0xddc0('0x7a'),_0xddc0('0x7b')],[_0xddc0('0x7c'),_0x2be217[0x0][_0xddc0('0x73')]===_0xddc0('0x7b')?'DESC':_0xddc0('0x7b')],db[_0xddc0('0x74')][_0xddc0('0x7d')](_0xddc0('0x7e')),['id',_0xddc0('0x7f')]];}else{if(!_[_0xddc0('0x78')](_0x312070[_0xddc0('0x55')][_0xddc0('0x79')])){_0x26bbad['id']={'$notIn':_0x312070[_0xddc0('0x55')][_0xddc0('0x79')]};}_0x490d0e=[['priority',_0xddc0('0x7f')],[_0xddc0('0x7c'),_0x2be217[0x0][_0xddc0('0x73')]],db[_0xddc0('0x74')][_0xddc0('0x7d')](_0xddc0('0x80')),['id',_0xddc0('0x7b')]];}return db['CmHopper'][_0xddc0('0x81')]({'attributes':['id',_0xddc0('0x82')],'where':_0x26bbad,'order':_0x490d0e,'transaction':_0x109047,'lock':_0x109047[_0xddc0('0x83')][_0xddc0('0x84')],'include':[{'model':db[_0xddc0('0x68')],'as':_0xddc0('0x85'),'attributes':_0x2dfbd0,'include':[{'model':db['CmCompany'],'as':_0xddc0('0x86'),'attributes':['id',_0xddc0('0x27')]}]},{'model':db[_0xddc0('0x87')],'as':_0xddc0('0x88'),'attributes':['id','name']},{'model':db[_0xddc0('0x89')],'as':_0xddc0('0x8a'),'attributes':['id',_0xddc0('0x27'),_0xddc0('0x8b')]}]})['then'](function(_0x502f27){if(_0x502f27){return _0x502f27[_0xddc0('0x22')]({'UserId':_0x312070[_0xddc0('0x62')]['id']},{'transaction':_0x109047});}});});}})[_0xddc0('0x23')](handleEntityNotFound(_0x5bbe4c,null))['then'](respondWithResult(_0x5bbe4c,null))[_0xddc0('0x53')](handleError(_0x5bbe4c,null));};exports[_0xddc0('0x8c')]=function(_0x120189,_0x2036fd,_0x4930e6){return _0x120189[_0xddc0('0x62')]['getVoiceQueues']({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0xddc0('0x8d')},'attributes':['id'],'raw':!![]})[_0xddc0('0x23')](function(_0x15672a){if(_0x15672a&&_0x15672a['length']){return db[_0xddc0('0x2a')][_0xddc0('0x1b')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xddc0('0x64')](_0xddc0('0x76'))},'VoiceQueueId':{'$in':_[_0xddc0('0x29')](_0x15672a,'id')},'$or':[{'UserId':null},{'UserId':_0x120189[_0xddc0('0x62')]['id']}]}});}return 0x0;})[_0xddc0('0x23')](function(_0x5c493c){if(!_['isNil'](_0x5c493c)&&_[_0xddc0('0x8e')](_0x5c493c)){return _0x2036fd[_0xddc0('0x16')](0xc8)[_0xddc0('0x1e')]({'contacts':_0x5c493c});}else{logger[_0xddc0('0x25')](_0xddc0('0x8f'),_0xddc0('0x8c'),0x194,_0xddc0('0x90'));_0x2036fd[_0xddc0('0x15')](0x194);}})[_0xddc0('0x53')](handleError(_0x2036fd,null));};
\ No newline at end of file
index e26c4b0..be4ec3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d17=['define','CmHopper','cm_hopper','scheduledat','phone','priority','lodash','util','moment','bluebird','request-promise','rimraf','../../config/environment','./cmHopper.attributes','exports'];(function(_0x5e55b3,_0xe43c81){var _0x415346=function(_0x2ca98f){while(--_0x2ca98f){_0x5e55b3['push'](_0x5e55b3['shift']());}};_0x415346(++_0xe43c81);}(_0x5d17,0x114));var _0x75d1=function(_0x4bb581,_0x6f7037){_0x4bb581=_0x4bb581-0x0;var _0x316bf5=_0x5d17[_0x4bb581];return _0x316bf5;};'use strict';var _=require(_0x75d1('0x0'));var util=require(_0x75d1('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x75d1('0x2'));var BPromise=require(_0x75d1('0x3'));var rp=require(_0x75d1('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x75d1('0x5'));var config=require(_0x75d1('0x6'));var attributes=require(_0x75d1('0x7'));module[_0x75d1('0x8')]=function(_0x56ac0a,_0x458681){return _0x56ac0a[_0x75d1('0x9')](_0x75d1('0xa'),attributes,{'tableName':_0x75d1('0xb'),'paranoid':![],'indexes':[{'name':_0x75d1('0xc'),'fields':[_0x75d1('0xc')]},{'name':_0x75d1('0xd'),'fields':['phone']},{'name':'priority','fields':[_0x75d1('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x71ab=['rimraf','../../config/environment','./cmHopper.attributes','exports','define','CmHopper','cm_hopper','scheduledat','phone','priority','util','api','bluebird','request-promise','path'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x71ab,0x64));var _0xb71a=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x71ab[_0x502c7d];return _0x30b7ed;};'use strict';var _=require('lodash');var util=require(_0xb71a('0x0'));var logger=require('../../config/logger')(_0xb71a('0x1'));var moment=require('moment');var BPromise=require(_0xb71a('0x2'));var rp=require(_0xb71a('0x3'));var fs=require('fs');var path=require(_0xb71a('0x4'));var rimraf=require(_0xb71a('0x5'));var config=require(_0xb71a('0x6'));var attributes=require(_0xb71a('0x7'));module[_0xb71a('0x8')]=function(_0x38d931,_0x22c072){return _0x38d931[_0xb71a('0x9')](_0xb71a('0xa'),attributes,{'tableName':_0xb71a('0xb'),'paranoid':![],'indexes':[{'name':_0xb71a('0xc'),'fields':[_0xb71a('0xc')]},{'name':_0xb71a('0xd'),'fields':[_0xb71a('0xd')]},{'name':_0xb71a('0xe'),'fields':[_0xb71a('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 92f0db6..bbb54ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7bf=['stringify','error','code','message','result','catch','GetCmHopper','findAll','options','raw','where','attributes','limit','include','map','model','then','ShowCmHopper','CmHopper','find','debug','create','body','CreateCmHopper','update','UpdateCmHopper','DestroyCmHopper','destroy','GetContactDialer','describe','sequelize','transaction','order','UPDATE','CmContact','Contact','keys','Agent','name','voicePause','push','includes','all','MoveContactManagedDialer','CmHopperFinal','CountReScheduled','COUNT','literal','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','UserId','LOCK','length','GetCmHopperPreview','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','info','CmHopper,\x20%s,\x20%s','request\x20sent'];(function(_0x4070a0,_0x523f5d){var _0x55c11e=function(_0x19c6ba){while(--_0x19c6ba){_0x4070a0['push'](_0x4070a0['shift']());}};_0x55c11e(++_0x523f5d);}(_0xb7bf,0x1ad));var _0xfb7b=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xb7bf[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0xfb7b('0x0'));var util=require(_0xfb7b('0x1'));var moment=require(_0xfb7b('0x2'));var BPromise=require(_0xfb7b('0x3'));var rs=require(_0xfb7b('0x4'));var fs=require('fs');var Redis=require(_0xfb7b('0x5'));var db=require(_0xfb7b('0x6'))['db'];var utils=require(_0xfb7b('0x7'));var logger=require(_0xfb7b('0x8'))('rpc');var config=require(_0xfb7b('0x9'));var jayson=require(_0xfb7b('0xa'));var client=jayson[_0xfb7b('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x308ca9,_0x98e0c3,_0x1b430e){return new BPromise(function(_0x591afc,_0x1a749c){return client['request'](_0x308ca9,_0x1b430e)['then'](function(_0x110641){logger[_0xfb7b('0xc')](_0xfb7b('0xd'),_0x98e0c3,_0xfb7b('0xe'));logger['debug']('CmHopper,\x20%s,\x20%s,\x20%s',_0x98e0c3,_0xfb7b('0xe'),JSON[_0xfb7b('0xf')](_0x110641));if(_0x110641[_0xfb7b('0x10')]){if(_0x110641[_0xfb7b('0x10')][_0xfb7b('0x11')]===0x1f4){logger[_0xfb7b('0x10')]('CmHopper,\x20%s,\x20%s',_0x98e0c3,_0x110641[_0xfb7b('0x10')][_0xfb7b('0x12')]);return _0x1a749c(_0x110641[_0xfb7b('0x10')][_0xfb7b('0x12')]);}logger[_0xfb7b('0x10')](_0xfb7b('0xd'),_0x98e0c3,_0x110641[_0xfb7b('0x10')]['message']);return _0x591afc(_0x110641[_0xfb7b('0x10')][_0xfb7b('0x12')]);}else{logger[_0xfb7b('0xc')]('CmHopper,\x20%s,\x20%s',_0x98e0c3,_0xfb7b('0xe'));_0x591afc(_0x110641[_0xfb7b('0x13')][_0xfb7b('0x12')]);}})[_0xfb7b('0x14')](function(_0xe04e7a){logger[_0xfb7b('0x10')](_0xfb7b('0xd'),_0x98e0c3,_0xe04e7a);_0x1a749c(_0xe04e7a);});});}exports[_0xfb7b('0x15')]=function(_0x3be9fa){var _0x2d801f=this;return new Promise(function(_0x3f87b7,_0x14489d){return db['CmHopper'][_0xfb7b('0x16')]({'raw':_0x3be9fa[_0xfb7b('0x17')]?_0x3be9fa[_0xfb7b('0x17')][_0xfb7b('0x18')]===undefined?!![]:![]:!![],'where':_0x3be9fa[_0xfb7b('0x17')]?_0x3be9fa[_0xfb7b('0x17')][_0xfb7b('0x19')]||null:null,'attributes':_0x3be9fa['options']?_0x3be9fa[_0xfb7b('0x17')][_0xfb7b('0x1a')]||null:null,'limit':_0x3be9fa[_0xfb7b('0x17')]?_0x3be9fa[_0xfb7b('0x17')][_0xfb7b('0x1b')]||null:null,'include':_0x3be9fa[_0xfb7b('0x17')]?_0x3be9fa[_0xfb7b('0x17')][_0xfb7b('0x1c')]?_[_0xfb7b('0x1d')](_0x3be9fa[_0xfb7b('0x17')]['include'],function(_0xc6a893){return{'model':db[_0xc6a893[_0xfb7b('0x1e')]],'as':_0xc6a893['as'],'attributes':_0xc6a893[_0xfb7b('0x1a')],'include':_0xc6a893['include']?_[_0xfb7b('0x1d')](_0xc6a893['include'],function(_0x3a6a8e){return{'model':db[_0x3a6a8e['model']],'as':_0x3a6a8e['as'],'attributes':_0x3a6a8e[_0xfb7b('0x1a')],'include':_0x3a6a8e[_0xfb7b('0x1c')]?_[_0xfb7b('0x1d')](_0x3a6a8e[_0xfb7b('0x1c')],function(_0x28b837){return{'model':db[_0x28b837[_0xfb7b('0x1e')]],'as':_0x28b837['as'],'attributes':_0x28b837[_0xfb7b('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xfb7b('0x1f')](function(_0xf32a17){logger[_0xfb7b('0xc')]('GetCmHopper',_0x3be9fa);logger['debug'](_0xfb7b('0x15'),_0x3be9fa,JSON[_0xfb7b('0xf')](_0xf32a17));_0x3f87b7(_0xf32a17);})['catch'](function(_0x4be6b6){logger['error'](_0xfb7b('0x15'),_0x4be6b6[_0xfb7b('0x12')],_0x3be9fa);_0x14489d(_0x2d801f[_0xfb7b('0x10')](0x1f4,_0x4be6b6[_0xfb7b('0x12')]));});});};exports[_0xfb7b('0x20')]=function(_0xf7537e){var _0x3ab642=this;return new Promise(function(_0x15f117,_0x39f68c){return db[_0xfb7b('0x21')][_0xfb7b('0x22')]({'raw':_0xf7537e['options']?_0xf7537e[_0xfb7b('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0xf7537e[_0xfb7b('0x17')]?_0xf7537e[_0xfb7b('0x17')][_0xfb7b('0x19')]||null:null,'attributes':_0xf7537e[_0xfb7b('0x17')]?_0xf7537e[_0xfb7b('0x17')][_0xfb7b('0x1a')]||null:null,'include':_0xf7537e[_0xfb7b('0x17')]?_0xf7537e['options'][_0xfb7b('0x1c')]?_[_0xfb7b('0x1d')](_0xf7537e[_0xfb7b('0x17')][_0xfb7b('0x1c')],function(_0x29951b){return{'model':db[_0x29951b[_0xfb7b('0x1e')]],'as':_0x29951b['as'],'attributes':_0x29951b[_0xfb7b('0x1a')],'include':_0x29951b[_0xfb7b('0x1c')]?_[_0xfb7b('0x1d')](_0x29951b[_0xfb7b('0x1c')],function(_0x17d40){return{'model':db[_0x17d40['model']],'as':_0x17d40['as'],'attributes':_0x17d40['attributes'],'include':_0x17d40[_0xfb7b('0x1c')]?_['map'](_0x17d40['include'],function(_0x2ac5eb){return{'model':db[_0x2ac5eb[_0xfb7b('0x1e')]],'as':_0x2ac5eb['as'],'attributes':_0x2ac5eb[_0xfb7b('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xfb7b('0x1f')](function(_0x754a98){logger[_0xfb7b('0xc')](_0xfb7b('0x20'),_0xf7537e);logger[_0xfb7b('0x23')](_0xfb7b('0x20'),_0xf7537e,JSON[_0xfb7b('0xf')](_0x754a98));_0x15f117(_0x754a98);})[_0xfb7b('0x14')](function(_0x448090){logger[_0xfb7b('0x10')](_0xfb7b('0x20'),_0x448090['message'],_0xf7537e);_0x39f68c(_0x3ab642[_0xfb7b('0x10')](0x1f4,_0x448090[_0xfb7b('0x12')]));});});};exports['CreateCmHopper']=function(_0x54ee3d){var _0x62264=this;return new Promise(function(_0x31e627,_0x24db82){return db['CmHopper'][_0xfb7b('0x24')](_0x54ee3d[_0xfb7b('0x25')],{'raw':_0x54ee3d[_0xfb7b('0x17')]?_0x54ee3d[_0xfb7b('0x17')][_0xfb7b('0x18')]===undefined?!![]:![]:!![]})[_0xfb7b('0x1f')](function(_0x47bc12){logger[_0xfb7b('0xc')](_0xfb7b('0x26'),_0x54ee3d);logger['debug'](_0xfb7b('0x26'),_0x54ee3d,JSON[_0xfb7b('0xf')](_0x47bc12));_0x31e627(_0x47bc12);})[_0xfb7b('0x14')](function(_0x1007fa){logger['error'](_0xfb7b('0x26'),_0x1007fa[_0xfb7b('0x12')],_0x54ee3d);_0x24db82(_0x62264[_0xfb7b('0x10')](0x1f4,_0x1007fa['message']));});});};exports['UpdateCmHopper']=function(_0xd4822c){var _0x56a89a=this;return new Promise(function(_0x32ed5,_0x23225b){return db['CmHopper'][_0xfb7b('0x27')](_0xd4822c['body'],{'raw':_0xd4822c['options']?_0xd4822c[_0xfb7b('0x17')][_0xfb7b('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xd4822c[_0xfb7b('0x17')]?_0xd4822c[_0xfb7b('0x17')][_0xfb7b('0x19')]||null:null,'attributes':_0xd4822c[_0xfb7b('0x17')]?_0xd4822c[_0xfb7b('0x17')]['attributes']||null:null,'limit':_0xd4822c[_0xfb7b('0x17')]?_0xd4822c[_0xfb7b('0x17')][_0xfb7b('0x1b')]||null:null})['then'](function(_0x4fafd1){logger['info'](_0xfb7b('0x28'),_0xd4822c);logger[_0xfb7b('0x23')]('UpdateCmHopper',_0xd4822c,JSON[_0xfb7b('0xf')](_0x4fafd1));_0x32ed5(_0x4fafd1);})[_0xfb7b('0x14')](function(_0x455df1){logger[_0xfb7b('0x10')](_0xfb7b('0x28'),_0x455df1['message'],_0xd4822c);_0x23225b(_0x56a89a[_0xfb7b('0x10')](0x1f4,_0x455df1[_0xfb7b('0x12')]));});});};exports[_0xfb7b('0x29')]=function(_0x27dc58){var _0x2307fb=this;return new Promise(function(_0x44d3a9,_0x914e1e){return db[_0xfb7b('0x21')][_0xfb7b('0x2a')]({'where':_0x27dc58[_0xfb7b('0x17')]?_0x27dc58['options'][_0xfb7b('0x19')]||null:null})['then'](function(_0x4d26a2){logger['info'](_0xfb7b('0x29'),_0x27dc58);logger[_0xfb7b('0x23')](_0xfb7b('0x29'),_0x27dc58,JSON[_0xfb7b('0xf')](_0x4d26a2));_0x44d3a9(_0x4d26a2);})['catch'](function(_0x402f0e){logger[_0xfb7b('0x10')](_0xfb7b('0x29'),_0x402f0e[_0xfb7b('0x12')],_0x27dc58);_0x914e1e(_0x2307fb[_0xfb7b('0x10')](0x1f4,_0x402f0e['message']));});});};exports[_0xfb7b('0x2b')]=function(_0x187ec8){var _0x2f9153=this;return new Promise(function(_0x4d7726,_0x385222){return db['CmContact'][_0xfb7b('0x2c')]()[_0xfb7b('0x1f')](function(_0x16408b){return db[_0xfb7b('0x2d')][_0xfb7b('0x2e')](function(_0x413a95){return db['CmHopper'][_0xfb7b('0x16')]({'where':_0x187ec8[_0xfb7b('0x17')]?_0x187ec8[_0xfb7b('0x17')][_0xfb7b('0x19')]||null:null,'attributes':_0x187ec8['options']?_0x187ec8['options'][_0xfb7b('0x1a')]||null:null,'limit':_0x187ec8['options']?_0x187ec8[_0xfb7b('0x17')]['limit']||null:null,'order':_0x187ec8['options']?_0x187ec8[_0xfb7b('0x17')][_0xfb7b('0x2f')]||null:null,'transaction':_0x413a95,'lock':_0x413a95['LOCK'][_0xfb7b('0x30')],'include':[{'model':db[_0xfb7b('0x31')],'as':_0xfb7b('0x32'),'attributes':_[_0xfb7b('0x33')](_0x16408b)},{'model':db['User'],'as':_0xfb7b('0x34'),'attributes':['id',_0xfb7b('0x35'),_0xfb7b('0x36')]}]})['then'](function(_0x3308a2){var _0x127224=[];var _0x4935af=[];for(var _0x1d0bdb=0x0;_0x1d0bdb<_0x3308a2['length'];_0x1d0bdb+=0x1){var _0x399882=_0x3308a2[_0x1d0bdb]['UserId'];if(_0x399882===null){_0x127224[_0xfb7b('0x37')](_0x3308a2[_0x1d0bdb][_0xfb7b('0x27')](_0x187ec8['body'],{'transaction':_0x413a95}));}else if(!_0x4935af[_0xfb7b('0x38')](_0x399882)){_0x4935af[_0xfb7b('0x37')](_0x399882);_0x127224[_0xfb7b('0x37')](_0x3308a2[_0x1d0bdb][_0xfb7b('0x27')](_0x187ec8[_0xfb7b('0x25')],{'transaction':_0x413a95}));}}return BPromise[_0xfb7b('0x39')](_0x127224);});})['then'](function(_0x363f80){logger[_0xfb7b('0xc')](_0xfb7b('0x2b'),_0x187ec8);logger[_0xfb7b('0x23')](_0xfb7b('0x2b'),_0x187ec8,JSON['stringify'](_0x363f80));_0x4d7726(_0x363f80);})[_0xfb7b('0x14')](function(_0x19ea06){logger[_0xfb7b('0x10')](_0xfb7b('0x2b'),_0x19ea06['message'],_0x187ec8);_0x385222(_0x2f9153[_0xfb7b('0x10')](0x1f4,_0x19ea06[_0xfb7b('0x12')]));});});});};exports[_0xfb7b('0x3a')]=function(_0x59dd12){var _0x41c5e9=this;return new Promise(function(_0x204bea,_0x56b462){return db[_0xfb7b('0x2d')][_0xfb7b('0x2e')](function(_0x31ce3d){return db[_0xfb7b('0x3b')][_0xfb7b('0x24')](_0x59dd12[_0xfb7b('0x25')],{'raw':_0x59dd12[_0xfb7b('0x17')]?_0x59dd12[_0xfb7b('0x17')]['raw']===undefined?!![]:![]:!![],'transaction':_0x31ce3d})[_0xfb7b('0x1f')](function(){return db[_0xfb7b('0x21')][_0xfb7b('0x2a')]({'where':_0x59dd12['options']?_0x59dd12[_0xfb7b('0x17')][_0xfb7b('0x19')]||null:null,'transaction':_0x31ce3d});});})[_0xfb7b('0x1f')](function(_0x29393f){logger['info'](_0xfb7b('0x3a'),_0x59dd12);logger[_0xfb7b('0x23')](_0xfb7b('0x3a'),_0x59dd12,JSON[_0xfb7b('0xf')](_0x29393f));_0x204bea(_0x29393f);})['catch'](function(_0x36f36a){logger[_0xfb7b('0x10')]('MoveContactManagedDialer',_0x36f36a['message'],_0x59dd12);_0x56b462(_0x41c5e9[_0xfb7b('0x10')](0x1f4,_0x36f36a['message']));});});};exports[_0xfb7b('0x3c')]=function(_0x273cdb){var _0x145160=this;return new Promise(function(_0x55a3f2,_0x2a7770){return db[_0xfb7b('0x21')][_0xfb7b('0x16')]({'raw':_0x273cdb[_0xfb7b('0x17')]?_0x273cdb[_0xfb7b('0x17')][_0xfb7b('0x18')]===undefined?!![]:![]:!![],'where':_0x273cdb['options']?_0x273cdb[_0xfb7b('0x17')]['where']||null:null,'attributes':[[db[_0xfb7b('0x2d')]['fn'](_0xfb7b('0x3d'),db[_0xfb7b('0x2d')]['fn']('IF',db[_0xfb7b('0x2d')][_0xfb7b('0x3e')](_0xfb7b('0x3f')+util[_0xfb7b('0x40')](_0xfb7b('0x41'),moment()['format'](_0xfb7b('0x42')))+_0xfb7b('0x43')))),_0xfb7b('0x44')]]})[_0xfb7b('0x1f')](function(_0x4ec816){logger[_0xfb7b('0xc')](_0xfb7b('0x3c'),_0x273cdb);logger['debug']('CountReScheduled',_0x273cdb,JSON[_0xfb7b('0xf')](_0x4ec816));_0x55a3f2(_0x4ec816);})[_0xfb7b('0x14')](function(_0x66beca){logger['error'](_0xfb7b('0x3c'),_0x66beca[_0xfb7b('0x12')],_0x273cdb);_0x2a7770(_0x145160[_0xfb7b('0x10')](0x1f4,_0x66beca[_0xfb7b('0x12')]));});});};exports[_0xfb7b('0x45')]=function(_0x4428cf){var _0x409d6b=this;return new Promise(function(_0x5e5429,_0x240871){return db[_0xfb7b('0x31')]['describe']()[_0xfb7b('0x1f')](function(_0x43c0fd){return db[_0xfb7b('0x2d')][_0xfb7b('0x2e')](function(_0x3cf6e7){return db[_0xfb7b('0x21')][_0xfb7b('0x16')]({'where':_0x4428cf['options']?_0x4428cf[_0xfb7b('0x17')][_0xfb7b('0x19')]||null:null,'attributes':_0x4428cf[_0xfb7b('0x17')]?_0x4428cf[_0xfb7b('0x17')][_0xfb7b('0x1a')]||null:null,'limit':0x1,'order':_0x4428cf[_0xfb7b('0x17')]?_0x4428cf[_0xfb7b('0x17')][_0xfb7b('0x2f')]||null:null,'group':db['CmHopper'][_0xfb7b('0x46')],'transaction':_0x3cf6e7,'lock':_0x3cf6e7[_0xfb7b('0x47')][_0xfb7b('0x30')],'include':_0x4428cf['options']?_0x4428cf['options'][_0xfb7b('0x1c')]?_[_0xfb7b('0x1d')](_0x4428cf['options'][_0xfb7b('0x1c')],function(_0x169b9d){return{'model':db[_0x169b9d[_0xfb7b('0x1e')]],'as':_0x169b9d['as'],'attributes':_0x169b9d[_0xfb7b('0x1a')],'include':_0x169b9d[_0xfb7b('0x1c')]?_[_0xfb7b('0x1d')](_0x169b9d[_0xfb7b('0x1c')],function(_0x32f3fa){return{'model':db[_0x32f3fa['model']],'as':_0x32f3fa['as'],'attributes':_0x32f3fa[_0xfb7b('0x1a')],'include':_0x32f3fa[_0xfb7b('0x1c')]?_[_0xfb7b('0x1d')](_0x32f3fa[_0xfb7b('0x1c')],function(_0x586443){return{'model':db[_0x586443[_0xfb7b('0x1e')]],'as':_0x586443['as'],'attributes':_0x586443[_0xfb7b('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x252316){var _0x244af4=[];for(var _0x19a781=0x0;_0x19a781<_0x252316[_0xfb7b('0x48')];_0x19a781+=0x1){_0x244af4['push'](_0x252316[_0x19a781][_0xfb7b('0x27')](_0x4428cf['body'],{'transaction':_0x3cf6e7}));}return BPromise[_0xfb7b('0x39')](_0x244af4);});})[_0xfb7b('0x1f')](function(_0x242547){logger[_0xfb7b('0xc')](_0xfb7b('0x45'),_0x4428cf);logger[_0xfb7b('0x23')](_0xfb7b('0x45'),_0x4428cf,JSON[_0xfb7b('0xf')](_0x242547));_0x5e5429(_0x242547);})[_0xfb7b('0x14')](function(_0x3b1980){logger['error'](_0xfb7b('0x45'),_0x3b1980[_0xfb7b('0x12')],_0x4428cf);_0x240871(_0x409d6b['error'](0x1f4,_0x3b1980[_0xfb7b('0x12')]));});});});};exports[_0xfb7b('0x49')]=function(_0x2abf86){var _0x4c6ea5=this;return new Promise(function(_0x2b93c2,_0xb6a131){db[_0xfb7b('0x31')][_0xfb7b('0x2c')]()[_0xfb7b('0x1f')](function(_0x1bc69f){return db[_0xfb7b('0x21')][_0xfb7b('0x16')]({'raw':_0x2abf86[_0xfb7b('0x17')]?_0x2abf86['options'][_0xfb7b('0x18')]===undefined?!![]:![]:!![],'where':_0x2abf86[_0xfb7b('0x17')]?_0x2abf86['options'][_0xfb7b('0x19')]||null:null,'attributes':_0x2abf86[_0xfb7b('0x17')]?_0x2abf86[_0xfb7b('0x17')][_0xfb7b('0x1a')]||null:null,'limit':_0x2abf86[_0xfb7b('0x17')]?_0x2abf86[_0xfb7b('0x17')][_0xfb7b('0x1b')]||null:null,'include':_0x2abf86[_0xfb7b('0x17')]?_0x2abf86['options']['include']?_[_0xfb7b('0x1d')](_0x2abf86[_0xfb7b('0x17')][_0xfb7b('0x1c')],function(_0x4cb7b8){return{'model':db[_0x4cb7b8[_0xfb7b('0x1e')]],'as':_0x4cb7b8['as'],'attributes':_0x4cb7b8['as']===_0xfb7b('0x32')?_['keys'](_0x1bc69f):_0x4cb7b8['attributes'],'include':_0x4cb7b8[_0xfb7b('0x1c')]?_[_0xfb7b('0x1d')](_0x4cb7b8[_0xfb7b('0x1c')],function(_0x324fea){return{'model':db[_0x324fea[_0xfb7b('0x1e')]],'as':_0x324fea['as'],'attributes':_0x324fea[_0xfb7b('0x1a')],'include':_0x324fea[_0xfb7b('0x1c')]?_[_0xfb7b('0x1d')](_0x324fea[_0xfb7b('0x1c')],function(_0x2f7f8e){return{'model':db[_0x2f7f8e['model']],'as':_0x2f7f8e['as'],'attributes':_0x2f7f8e[_0xfb7b('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xfb7b('0x1f')](function(_0x2c90bf){logger[_0xfb7b('0xc')]('GetCmHopper',_0x2abf86);logger[_0xfb7b('0x23')]('GetCmHopper',_0x2abf86,JSON['stringify'](_0x2c90bf));_0x2b93c2(_0x2c90bf);})[_0xfb7b('0x14')](function(_0x4cf5c8){logger[_0xfb7b('0x10')](_0xfb7b('0x15'),_0x4cf5c8[_0xfb7b('0x12')],_0x2abf86);_0xb6a131(_0x4c6ea5['error'](0x1f4,_0x4cf5c8['message']));});});});};
\ No newline at end of file
+var _0x204a=['code','message','result','catch','GetCmHopper','findAll','options','raw','attributes','limit','include','map','model','ShowCmHopper','CmHopper','where','CreateCmHopper','create','UpdateCmHopper','body','DestroyCmHopper','destroy','GetContactDialer','sequelize','transaction','order','LOCK','UPDATE','Contact','keys','Agent','name','UserId','push','update','all','MoveContactManagedDialer','CmHopperFinal','CountReScheduled','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','GetContactRecallMe','CmContact','describe','length','GetCmHopperPreview','lodash','util','moment','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','http','then','info','CmHopper,\x20%s,\x20%s','request\x20sent','debug','stringify','error'];(function(_0xc8db6b,_0x320abd){var _0x12cb81=function(_0x417540){while(--_0x417540){_0xc8db6b['push'](_0xc8db6b['shift']());}};_0x12cb81(++_0x320abd);}(_0x204a,0x73));var _0xa204=function(_0x4e3056,_0x3d3a0c){_0x4e3056=_0x4e3056-0x0;var _0x41a463=_0x204a[_0x4e3056];return _0x41a463;};'use strict';var _=require(_0xa204('0x0'));var util=require(_0xa204('0x1'));var moment=require(_0xa204('0x2'));var BPromise=require('bluebird');var rs=require(_0xa204('0x3'));var fs=require('fs');var Redis=require(_0xa204('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa204('0x5'));var logger=require('../../config/logger')(_0xa204('0x6'));var config=require(_0xa204('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xa204('0x8')][_0xa204('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x428078,_0x330928,_0x483d29){return new BPromise(function(_0x5d25fb,_0x36637d){return client['request'](_0x428078,_0x483d29)[_0xa204('0xa')](function(_0x1f074c){logger[_0xa204('0xb')](_0xa204('0xc'),_0x330928,_0xa204('0xd'));logger[_0xa204('0xe')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x330928,'request\x20sent',JSON[_0xa204('0xf')](_0x1f074c));if(_0x1f074c[_0xa204('0x10')]){if(_0x1f074c[_0xa204('0x10')][_0xa204('0x11')]===0x1f4){logger[_0xa204('0x10')](_0xa204('0xc'),_0x330928,_0x1f074c['error'][_0xa204('0x12')]);return _0x36637d(_0x1f074c[_0xa204('0x10')][_0xa204('0x12')]);}logger[_0xa204('0x10')](_0xa204('0xc'),_0x330928,_0x1f074c[_0xa204('0x10')][_0xa204('0x12')]);return _0x5d25fb(_0x1f074c[_0xa204('0x10')][_0xa204('0x12')]);}else{logger[_0xa204('0xb')](_0xa204('0xc'),_0x330928,_0xa204('0xd'));_0x5d25fb(_0x1f074c[_0xa204('0x13')][_0xa204('0x12')]);}})[_0xa204('0x14')](function(_0x467709){logger['error'](_0xa204('0xc'),_0x330928,_0x467709);_0x36637d(_0x467709);});});}exports[_0xa204('0x15')]=function(_0x286896){var _0x491e88=this;return new Promise(function(_0x3775e3,_0x43ac27){return db['CmHopper'][_0xa204('0x16')]({'raw':_0x286896[_0xa204('0x17')]?_0x286896[_0xa204('0x17')][_0xa204('0x18')]===undefined?!![]:![]:!![],'where':_0x286896['options']?_0x286896['options']['where']||null:null,'attributes':_0x286896['options']?_0x286896['options'][_0xa204('0x19')]||null:null,'limit':_0x286896['options']?_0x286896[_0xa204('0x17')][_0xa204('0x1a')]||null:null,'include':_0x286896[_0xa204('0x17')]?_0x286896[_0xa204('0x17')][_0xa204('0x1b')]?_[_0xa204('0x1c')](_0x286896['options']['include'],function(_0xc24af8){return{'model':db[_0xc24af8['model']],'as':_0xc24af8['as'],'attributes':_0xc24af8[_0xa204('0x19')],'include':_0xc24af8[_0xa204('0x1b')]?_[_0xa204('0x1c')](_0xc24af8['include'],function(_0x3c5f04){return{'model':db[_0x3c5f04[_0xa204('0x1d')]],'as':_0x3c5f04['as'],'attributes':_0x3c5f04['attributes'],'include':_0x3c5f04[_0xa204('0x1b')]?_[_0xa204('0x1c')](_0x3c5f04['include'],function(_0x486577){return{'model':db[_0x486577[_0xa204('0x1d')]],'as':_0x486577['as'],'attributes':_0x486577[_0xa204('0x19')]};}):[]};}):[]};}):[]:[]})[_0xa204('0xa')](function(_0x20a268){logger[_0xa204('0xb')](_0xa204('0x15'),_0x286896);logger[_0xa204('0xe')]('GetCmHopper',_0x286896,JSON[_0xa204('0xf')](_0x20a268));_0x3775e3(_0x20a268);})[_0xa204('0x14')](function(_0x2a860e){logger[_0xa204('0x10')](_0xa204('0x15'),_0x2a860e[_0xa204('0x12')],_0x286896);_0x43ac27(_0x491e88[_0xa204('0x10')](0x1f4,_0x2a860e['message']));});});};exports[_0xa204('0x1e')]=function(_0x441bbb){var _0xbc33ca=this;return new Promise(function(_0x904f9e,_0x17755c){return db[_0xa204('0x1f')]['find']({'raw':_0x441bbb[_0xa204('0x17')]?_0x441bbb[_0xa204('0x17')][_0xa204('0x18')]===undefined?!![]:![]:!![],'where':_0x441bbb['options']?_0x441bbb[_0xa204('0x17')][_0xa204('0x20')]||null:null,'attributes':_0x441bbb[_0xa204('0x17')]?_0x441bbb['options'][_0xa204('0x19')]||null:null,'include':_0x441bbb[_0xa204('0x17')]?_0x441bbb[_0xa204('0x17')][_0xa204('0x1b')]?_['map'](_0x441bbb[_0xa204('0x17')][_0xa204('0x1b')],function(_0x50f77c){return{'model':db[_0x50f77c[_0xa204('0x1d')]],'as':_0x50f77c['as'],'attributes':_0x50f77c['attributes'],'include':_0x50f77c[_0xa204('0x1b')]?_[_0xa204('0x1c')](_0x50f77c[_0xa204('0x1b')],function(_0x4c3b2a){return{'model':db[_0x4c3b2a['model']],'as':_0x4c3b2a['as'],'attributes':_0x4c3b2a[_0xa204('0x19')],'include':_0x4c3b2a[_0xa204('0x1b')]?_[_0xa204('0x1c')](_0x4c3b2a[_0xa204('0x1b')],function(_0xd1cdad){return{'model':db[_0xd1cdad['model']],'as':_0xd1cdad['as'],'attributes':_0xd1cdad[_0xa204('0x19')]};}):[]};}):[]};}):[]:[]})[_0xa204('0xa')](function(_0x51e78a){logger[_0xa204('0xb')](_0xa204('0x1e'),_0x441bbb);logger[_0xa204('0xe')](_0xa204('0x1e'),_0x441bbb,JSON[_0xa204('0xf')](_0x51e78a));_0x904f9e(_0x51e78a);})['catch'](function(_0xc738aa){logger[_0xa204('0x10')](_0xa204('0x1e'),_0xc738aa[_0xa204('0x12')],_0x441bbb);_0x17755c(_0xbc33ca['error'](0x1f4,_0xc738aa[_0xa204('0x12')]));});});};exports[_0xa204('0x21')]=function(_0x2578ce){var _0x3791cd=this;return new Promise(function(_0x1ca47a,_0x444a25){return db[_0xa204('0x1f')][_0xa204('0x22')](_0x2578ce['body'],{'raw':_0x2578ce[_0xa204('0x17')]?_0x2578ce[_0xa204('0x17')][_0xa204('0x18')]===undefined?!![]:![]:!![]})[_0xa204('0xa')](function(_0x229427){logger[_0xa204('0xb')](_0xa204('0x21'),_0x2578ce);logger[_0xa204('0xe')](_0xa204('0x21'),_0x2578ce,JSON[_0xa204('0xf')](_0x229427));_0x1ca47a(_0x229427);})[_0xa204('0x14')](function(_0x45ec78){logger[_0xa204('0x10')](_0xa204('0x21'),_0x45ec78[_0xa204('0x12')],_0x2578ce);_0x444a25(_0x3791cd['error'](0x1f4,_0x45ec78[_0xa204('0x12')]));});});};exports[_0xa204('0x23')]=function(_0x1fb5ce){var _0x1dad10=this;return new Promise(function(_0x45b23d,_0x366c0f){return db['CmHopper']['update'](_0x1fb5ce[_0xa204('0x24')],{'raw':_0x1fb5ce[_0xa204('0x17')]?_0x1fb5ce[_0xa204('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1fb5ce[_0xa204('0x17')]?_0x1fb5ce[_0xa204('0x17')]['where']||null:null,'attributes':_0x1fb5ce['options']?_0x1fb5ce['options']['attributes']||null:null,'limit':_0x1fb5ce[_0xa204('0x17')]?_0x1fb5ce['options']['limit']||null:null})[_0xa204('0xa')](function(_0x418757){logger[_0xa204('0xb')](_0xa204('0x23'),_0x1fb5ce);logger[_0xa204('0xe')](_0xa204('0x23'),_0x1fb5ce,JSON[_0xa204('0xf')](_0x418757));_0x45b23d(_0x418757);})[_0xa204('0x14')](function(_0x1b2ee3){logger[_0xa204('0x10')]('UpdateCmHopper',_0x1b2ee3[_0xa204('0x12')],_0x1fb5ce);_0x366c0f(_0x1dad10[_0xa204('0x10')](0x1f4,_0x1b2ee3[_0xa204('0x12')]));});});};exports[_0xa204('0x25')]=function(_0x5845e4){var _0x2889da=this;return new Promise(function(_0x73eca1,_0xa50ab){return db['CmHopper'][_0xa204('0x26')]({'where':_0x5845e4[_0xa204('0x17')]?_0x5845e4[_0xa204('0x17')][_0xa204('0x20')]||null:null})[_0xa204('0xa')](function(_0x2b7cc8){logger[_0xa204('0xb')](_0xa204('0x25'),_0x5845e4);logger['debug'](_0xa204('0x25'),_0x5845e4,JSON[_0xa204('0xf')](_0x2b7cc8));_0x73eca1(_0x2b7cc8);})['catch'](function(_0x295cad){logger['error'](_0xa204('0x25'),_0x295cad[_0xa204('0x12')],_0x5845e4);_0xa50ab(_0x2889da[_0xa204('0x10')](0x1f4,_0x295cad[_0xa204('0x12')]));});});};exports[_0xa204('0x27')]=function(_0x2a1825){var _0x430369=this;return new Promise(function(_0x9b3b69,_0x454a6f){return db['CmContact']['describe']()[_0xa204('0xa')](function(_0x505ced){return db[_0xa204('0x28')][_0xa204('0x29')](function(_0x14f0b3){return db[_0xa204('0x1f')][_0xa204('0x16')]({'where':_0x2a1825[_0xa204('0x17')]?_0x2a1825[_0xa204('0x17')][_0xa204('0x20')]||null:null,'attributes':_0x2a1825[_0xa204('0x17')]?_0x2a1825[_0xa204('0x17')]['attributes']||null:null,'limit':_0x2a1825['options']?_0x2a1825['options']['limit']||null:null,'order':_0x2a1825['options']?_0x2a1825['options'][_0xa204('0x2a')]||null:null,'transaction':_0x14f0b3,'lock':_0x14f0b3[_0xa204('0x2b')][_0xa204('0x2c')],'include':[{'model':db['CmContact'],'as':_0xa204('0x2d'),'attributes':_[_0xa204('0x2e')](_0x505ced)},{'model':db['User'],'as':_0xa204('0x2f'),'attributes':['id',_0xa204('0x30'),'voicePause']}]})[_0xa204('0xa')](function(_0x404cec){var _0x1b0727=[];var _0x1a5d29=[];for(var _0x5be7bb=0x0;_0x5be7bb<_0x404cec['length'];_0x5be7bb+=0x1){var _0x14ae83=_0x404cec[_0x5be7bb][_0xa204('0x31')];if(_0x14ae83===null){_0x1b0727[_0xa204('0x32')](_0x404cec[_0x5be7bb][_0xa204('0x33')](_0x2a1825[_0xa204('0x24')],{'transaction':_0x14f0b3}));}else if(!_0x1a5d29['includes'](_0x14ae83)){_0x1a5d29[_0xa204('0x32')](_0x14ae83);_0x1b0727[_0xa204('0x32')](_0x404cec[_0x5be7bb][_0xa204('0x33')](_0x2a1825[_0xa204('0x24')],{'transaction':_0x14f0b3}));}}return BPromise[_0xa204('0x34')](_0x1b0727);});})['then'](function(_0x524759){logger[_0xa204('0xb')](_0xa204('0x27'),_0x2a1825);logger['debug']('GetContactDialer',_0x2a1825,JSON[_0xa204('0xf')](_0x524759));_0x9b3b69(_0x524759);})[_0xa204('0x14')](function(_0xad8932){logger[_0xa204('0x10')](_0xa204('0x27'),_0xad8932[_0xa204('0x12')],_0x2a1825);_0x454a6f(_0x430369[_0xa204('0x10')](0x1f4,_0xad8932[_0xa204('0x12')]));});});});};exports[_0xa204('0x35')]=function(_0x57e94d){var _0x378cf6=this;return new Promise(function(_0x54b9c7,_0x145047){return db[_0xa204('0x28')][_0xa204('0x29')](function(_0xe50e5d){return db[_0xa204('0x36')][_0xa204('0x22')](_0x57e94d[_0xa204('0x24')],{'raw':_0x57e94d[_0xa204('0x17')]?_0x57e94d[_0xa204('0x17')][_0xa204('0x18')]===undefined?!![]:![]:!![],'transaction':_0xe50e5d})[_0xa204('0xa')](function(){return db['CmHopper']['destroy']({'where':_0x57e94d[_0xa204('0x17')]?_0x57e94d[_0xa204('0x17')][_0xa204('0x20')]||null:null,'transaction':_0xe50e5d});});})[_0xa204('0xa')](function(_0xc0bd11){logger[_0xa204('0xb')]('MoveContactManagedDialer',_0x57e94d);logger[_0xa204('0xe')](_0xa204('0x35'),_0x57e94d,JSON[_0xa204('0xf')](_0xc0bd11));_0x54b9c7(_0xc0bd11);})[_0xa204('0x14')](function(_0x1b39ff){logger[_0xa204('0x10')](_0xa204('0x35'),_0x1b39ff['message'],_0x57e94d);_0x145047(_0x378cf6[_0xa204('0x10')](0x1f4,_0x1b39ff[_0xa204('0x12')]));});});};exports[_0xa204('0x37')]=function(_0x509519){var _0x247e98=this;return new Promise(function(_0x7e326b,_0x2b8c57){return db[_0xa204('0x1f')][_0xa204('0x16')]({'raw':_0x509519[_0xa204('0x17')]?_0x509519['options'][_0xa204('0x18')]===undefined?!![]:![]:!![],'where':_0x509519[_0xa204('0x17')]?_0x509519[_0xa204('0x17')][_0xa204('0x20')]||null:null,'attributes':[[db['sequelize']['fn']('COUNT',db[_0xa204('0x28')]['fn']('IF',db[_0xa204('0x28')]['literal'](_0xa204('0x38')+util[_0xa204('0x39')](_0xa204('0x3a'),moment()[_0xa204('0x39')](_0xa204('0x3b')))+_0xa204('0x3c')))),'contactsRescheduled']]})['then'](function(_0x3c2d2d){logger['info']('CountReScheduled',_0x509519);logger[_0xa204('0xe')]('CountReScheduled',_0x509519,JSON['stringify'](_0x3c2d2d));_0x7e326b(_0x3c2d2d);})[_0xa204('0x14')](function(_0x4ffc92){logger['error']('CountReScheduled',_0x4ffc92[_0xa204('0x12')],_0x509519);_0x2b8c57(_0x247e98[_0xa204('0x10')](0x1f4,_0x4ffc92[_0xa204('0x12')]));});});};exports[_0xa204('0x3d')]=function(_0x3700a6){var _0x32c8ef=this;return new Promise(function(_0x323462,_0x3953df){return db[_0xa204('0x3e')][_0xa204('0x3f')]()['then'](function(_0x12b152){return db[_0xa204('0x28')][_0xa204('0x29')](function(_0x4845ab){return db['CmHopper']['findAll']({'where':_0x3700a6[_0xa204('0x17')]?_0x3700a6[_0xa204('0x17')]['where']||null:null,'attributes':_0x3700a6[_0xa204('0x17')]?_0x3700a6[_0xa204('0x17')]['attributes']||null:null,'limit':0x1,'order':_0x3700a6['options']?_0x3700a6[_0xa204('0x17')][_0xa204('0x2a')]||null:null,'group':db['CmHopper']['UserId'],'transaction':_0x4845ab,'lock':_0x4845ab[_0xa204('0x2b')]['UPDATE'],'include':_0x3700a6[_0xa204('0x17')]?_0x3700a6[_0xa204('0x17')]['include']?_[_0xa204('0x1c')](_0x3700a6[_0xa204('0x17')][_0xa204('0x1b')],function(_0x15934d){return{'model':db[_0x15934d['model']],'as':_0x15934d['as'],'attributes':_0x15934d[_0xa204('0x19')],'include':_0x15934d[_0xa204('0x1b')]?_['map'](_0x15934d['include'],function(_0x2b29ea){return{'model':db[_0x2b29ea['model']],'as':_0x2b29ea['as'],'attributes':_0x2b29ea[_0xa204('0x19')],'include':_0x2b29ea[_0xa204('0x1b')]?_[_0xa204('0x1c')](_0x2b29ea[_0xa204('0x1b')],function(_0x3f5ed9){return{'model':db[_0x3f5ed9[_0xa204('0x1d')]],'as':_0x3f5ed9['as'],'attributes':_0x3f5ed9['attributes']};}):[]};}):[]};}):[]:[]})[_0xa204('0xa')](function(_0x4ea510){var _0x2c5f3e=[];for(var _0x29a78a=0x0;_0x29a78a<_0x4ea510[_0xa204('0x40')];_0x29a78a+=0x1){_0x2c5f3e['push'](_0x4ea510[_0x29a78a]['update'](_0x3700a6['body'],{'transaction':_0x4845ab}));}return BPromise['all'](_0x2c5f3e);});})[_0xa204('0xa')](function(_0x2294dd){logger['info'](_0xa204('0x3d'),_0x3700a6);logger[_0xa204('0xe')]('GetContactRecallMe',_0x3700a6,JSON['stringify'](_0x2294dd));_0x323462(_0x2294dd);})['catch'](function(_0x4bdc49){logger[_0xa204('0x10')]('GetContactRecallMe',_0x4bdc49[_0xa204('0x12')],_0x3700a6);_0x3953df(_0x32c8ef[_0xa204('0x10')](0x1f4,_0x4bdc49['message']));});});});};exports[_0xa204('0x41')]=function(_0x46cf87){var _0x471357=this;return new Promise(function(_0x95cdfb,_0x478330){db[_0xa204('0x3e')][_0xa204('0x3f')]()[_0xa204('0xa')](function(_0xf94682){return db[_0xa204('0x1f')][_0xa204('0x16')]({'raw':_0x46cf87['options']?_0x46cf87[_0xa204('0x17')][_0xa204('0x18')]===undefined?!![]:![]:!![],'where':_0x46cf87[_0xa204('0x17')]?_0x46cf87[_0xa204('0x17')][_0xa204('0x20')]||null:null,'attributes':_0x46cf87[_0xa204('0x17')]?_0x46cf87[_0xa204('0x17')]['attributes']||null:null,'limit':_0x46cf87['options']?_0x46cf87['options']['limit']||null:null,'include':_0x46cf87[_0xa204('0x17')]?_0x46cf87['options'][_0xa204('0x1b')]?_['map'](_0x46cf87[_0xa204('0x17')][_0xa204('0x1b')],function(_0x372041){return{'model':db[_0x372041[_0xa204('0x1d')]],'as':_0x372041['as'],'attributes':_0x372041['as']===_0xa204('0x2d')?_['keys'](_0xf94682):_0x372041['attributes'],'include':_0x372041[_0xa204('0x1b')]?_[_0xa204('0x1c')](_0x372041[_0xa204('0x1b')],function(_0x1600b6){return{'model':db[_0x1600b6[_0xa204('0x1d')]],'as':_0x1600b6['as'],'attributes':_0x1600b6[_0xa204('0x19')],'include':_0x1600b6['include']?_[_0xa204('0x1c')](_0x1600b6['include'],function(_0x4ef926){return{'model':db[_0x4ef926['model']],'as':_0x4ef926['as'],'attributes':_0x4ef926[_0xa204('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2cbf59){logger['info']('GetCmHopper',_0x46cf87);logger[_0xa204('0xe')](_0xa204('0x15'),_0x46cf87,JSON['stringify'](_0x2cbf59));_0x95cdfb(_0x2cbf59);})[_0xa204('0x14')](function(_0x312e8){logger[_0xa204('0x10')]('GetCmHopper',_0x312e8[_0xa204('0x12')],_0x46cf87);_0x478330(_0x471357[_0xa204('0x10')](0x1f4,_0x312e8[_0xa204('0x12')]));});});});};
\ No newline at end of file
index fdc6468..f191025 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59bf=['index','isAuthenticated','describe','/opencontacts','/:id','show','post','/preview','getPreview','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x5f3365,_0x438954){var _0x3280d8=function(_0xccfcde){while(--_0xccfcde){_0x5f3365['push'](_0x5f3365['shift']());}};_0x3280d8(++_0x438954);}(_0x59bf,0xdb));var _0xf59b=function(_0x363ef8,_0x4ecb1a){_0x363ef8=_0x363ef8-0x0;var _0x148822=_0x59bf[_0x363ef8];return _0x148822;};'use strict';var multer=require(_0xf59b('0x0'));var util=require(_0xf59b('0x1'));var path=require(_0xf59b('0x2'));var timeout=require(_0xf59b('0x3'));var express=require(_0xf59b('0x4'));var router=express[_0xf59b('0x5')]();var fs_extra=require(_0xf59b('0x6'));var auth=require(_0xf59b('0x7'));var interaction=require(_0xf59b('0x8'));var config=require(_0xf59b('0x9'));var controller=require('./cmHopper.controller');router[_0xf59b('0xa')]('/',auth['isAuthenticated'](),controller[_0xf59b('0xb')]);router[_0xf59b('0xa')]('/describe',auth[_0xf59b('0xc')](),controller[_0xf59b('0xd')]);router[_0xf59b('0xa')](_0xf59b('0xe'),auth[_0xf59b('0xc')](),controller['getOpenContacts']);router[_0xf59b('0xa')](_0xf59b('0xf'),auth['isAuthenticated'](),controller[_0xf59b('0x10')]);router['post']('/',auth[_0xf59b('0xc')](),controller['create']);router[_0xf59b('0x11')](_0xf59b('0x12'),auth[_0xf59b('0xc')](),controller[_0xf59b('0x13')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xf59b('0x14')]);router[_0xf59b('0x15')](_0xf59b('0xf'),auth[_0xf59b('0xc')](),controller[_0xf59b('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x6b2a=['show','post','/preview','getPreview','update','delete','exports','multer','Router','../../components/auth/service','../../config/environment','./cmHopper.controller','get','isAuthenticated','/describe','describe','/opencontacts','getOpenContacts','/:id'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x6b2a,0xeb));var _0xa6b2=function(_0x1e2d54,_0x295ef1){_0x1e2d54=_0x1e2d54-0x0;var _0x457203=_0x6b2a[_0x1e2d54];return _0x457203;};'use strict';var multer=require(_0xa6b2('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa6b2('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0xa6b2('0x2'));var interaction=require('../../components/interaction/service');var config=require(_0xa6b2('0x3'));var controller=require(_0xa6b2('0x4'));router[_0xa6b2('0x5')]('/',auth[_0xa6b2('0x6')](),controller['index']);router[_0xa6b2('0x5')](_0xa6b2('0x7'),auth[_0xa6b2('0x6')](),controller[_0xa6b2('0x8')]);router[_0xa6b2('0x5')](_0xa6b2('0x9'),auth[_0xa6b2('0x6')](),controller[_0xa6b2('0xa')]);router[_0xa6b2('0x5')](_0xa6b2('0xb'),auth[_0xa6b2('0x6')](),controller[_0xa6b2('0xc')]);router[_0xa6b2('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0xa6b2('0xd')](_0xa6b2('0xe'),auth[_0xa6b2('0x6')](),controller[_0xa6b2('0xf')]);router['put'](_0xa6b2('0xb'),auth[_0xa6b2('0x6')](),controller[_0xa6b2('0x10')]);router[_0xa6b2('0x11')](_0xa6b2('0xb'),auth[_0xa6b2('0x6')](),controller['destroy']);module[_0xa6b2('0x12')]=router;
\ No newline at end of file
index 8c553fd..c9bab8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1354=['sequelize','exports','STRING','INTEGER','contactListQueue','moment'];(function(_0x505df9,_0x14138e){var _0x1cc025=function(_0x5d2a1f){while(--_0x5d2a1f){_0x505df9['push'](_0x505df9['shift']());}};_0x1cc025(++_0x14138e);}(_0x1354,0x95));var _0x4135=function(_0x11f0e3,_0x5170bc){_0x11f0e3=_0x11f0e3-0x0;var _0x2892e8=_0x1354[_0x11f0e3];return _0x2892e8;};'use strict';var moment=require(_0x4135('0x0'));var Sequelize=require(_0x4135('0x1'));module[_0x4135('0x2')]={'phone':{'type':Sequelize[_0x4135('0x3')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x4135('0x4')],'unique':_0x4135('0x5')},'ListId':{'type':Sequelize[_0x4135('0x4')],'unique':'contactListQueue'},'VoiceQueueId':{'type':Sequelize[_0x4135('0x4')],'unique':_0x4135('0x5')}};
\ No newline at end of file
+var _0xa29a=['INTEGER','contactListQueue','moment','STRING'];(function(_0x3e12fe,_0x21cfdb){var _0x4211e4=function(_0x29b0f9){while(--_0x29b0f9){_0x3e12fe['push'](_0x3e12fe['shift']());}};_0x4211e4(++_0x21cfdb);}(_0xa29a,0x1ee));var _0xaa29=function(_0x5485a,_0x357d97){_0x5485a=_0x5485a-0x0;var _0x6e60ba=_0xa29a[_0x5485a];return _0x6e60ba;};'use strict';var moment=require(_0xaa29('0x0'));var Sequelize=require('sequelize');module['exports']={'phone':{'type':Sequelize[_0xaa29('0x1')],'allowNull':![]},'ContactId':{'type':Sequelize[_0xaa29('0x2')],'unique':_0xaa29('0x3')},'ListId':{'type':Sequelize[_0xaa29('0x2')],'unique':_0xaa29('0x3')},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':'contactListQueue'}};
\ No newline at end of file
index d25f4c0..12cbab3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1018=['intersection','fields','nolimit','sort','where','pick','type','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','attributes','length','body','find','destroy','describe','eml-format','rimraf','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','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','CmHopperBlack','fieldName','key','model','map','query','keys','filters'];(function(_0x3ee1aa,_0xd1106e){var _0x4a478c=function(_0x4c6b9d){while(--_0x4c6b9d){_0x3ee1aa['push'](_0x3ee1aa['shift']());}};_0x4a478c(++_0xd1106e);}(_0x1018,0x6a));var _0x8101=function(_0x7ca715,_0x514774){_0x7ca715=_0x7ca715-0x0;var _0x5c2530=_0x1018[_0x7ca715];return _0x5c2530;};'use strict';var emlformat=require(_0x8101('0x0'));var rimraf=require(_0x8101('0x1'));var zipdir=require(_0x8101('0x2'));var jsonpatch=require(_0x8101('0x3'));var rp=require('request-promise');var moment=require(_0x8101('0x4'));var BPromise=require(_0x8101('0x5'));var Mustache=require(_0x8101('0x6'));var util=require(_0x8101('0x7'));var path=require(_0x8101('0x8'));var sox=require(_0x8101('0x9'));var csv=require(_0x8101('0xa'));var ejs=require(_0x8101('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8101('0xc'));var squel=require('squel');var crypto=require(_0x8101('0xd'));var jsforce=require(_0x8101('0xe'));var deskjs=require(_0x8101('0xf'));var toCsv=require('to-csv');var querystring=require(_0x8101('0x10'));var Papa=require(_0x8101('0x11'));var Redis=require(_0x8101('0x12'));var authService=require(_0x8101('0x13'));var qs=require(_0x8101('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8101('0x15'));var logger=require(_0x8101('0x16'))(_0x8101('0x17'));var utils=require(_0x8101('0x18'));var config=require(_0x8101('0x19'));var licenseUtil=require(_0x8101('0x1a'));var db=require(_0x8101('0x1b'))['db'];function respondWithStatusCode(_0x532665,_0x285715){_0x285715=_0x285715||0xcc;return function(_0x3dafe7){if(_0x3dafe7){return _0x532665[_0x8101('0x1c')](_0x285715);}return _0x532665[_0x8101('0x1d')](_0x285715)[_0x8101('0x1e')]();};}function respondWithResult(_0x1853b4,_0x3c2549){_0x3c2549=_0x3c2549||0xc8;return function(_0x341499){if(_0x341499){return _0x1853b4[_0x8101('0x1d')](_0x3c2549)[_0x8101('0x1f')](_0x341499);}};}function respondWithFilteredResult(_0x303782,_0x163ab4){return function(_0x1a2a7a){if(_0x1a2a7a){var _0x1bde52=typeof _0x163ab4[_0x8101('0x20')]===_0x8101('0x21')&&typeof _0x163ab4[_0x8101('0x22')]===_0x8101('0x21');var _0x1f8890=_0x1a2a7a[_0x8101('0x23')];var _0x3673cf=_0x1bde52?0x0:_0x163ab4[_0x8101('0x20')];var _0x28b053=_0x1bde52?_0x1a2a7a['count']:_0x163ab4[_0x8101('0x20')]+_0x163ab4[_0x8101('0x22')];var _0x25d248;if(_0x28b053>=_0x1f8890){_0x28b053=_0x1f8890;_0x25d248=0xc8;}else{_0x25d248=0xce;}_0x303782['status'](_0x25d248);return _0x303782[_0x8101('0x24')](_0x8101('0x25'),_0x3673cf+'-'+_0x28b053+'/'+_0x1f8890)[_0x8101('0x1f')](_0x1a2a7a);}return null;};}function patchUpdates(_0x194f3e){return function(_0x3eac60){try{jsonpatch[_0x8101('0x26')](_0x3eac60,_0x194f3e,!![]);}catch(_0x407d89){return BPromise[_0x8101('0x27')](_0x407d89);}return _0x3eac60[_0x8101('0x28')]();};}function saveUpdates(_0x506f76,_0xc1953c){return function(_0x52cb1c){if(_0x52cb1c){return _0x52cb1c[_0x8101('0x29')](_0x506f76)[_0x8101('0x2a')](function(_0x4b61ac){return _0x4b61ac;});}return null;};}function removeEntity(_0x375fff,_0x2eef01){return function(_0x324502){if(_0x324502){return _0x324502['destroy']()[_0x8101('0x2a')](function(){_0x375fff[_0x8101('0x1d')](0xcc)[_0x8101('0x1e')]();});}};}function handleEntityNotFound(_0x598ab2,_0x1e2d17){return function(_0x4785ba){if(!_0x4785ba){_0x598ab2[_0x8101('0x1c')](0x194);}return _0x4785ba;};}function handleError(_0x21a85f,_0x52ba5f){_0x52ba5f=_0x52ba5f||0x1f4;return function(_0x44c875){logger[_0x8101('0x2b')](_0x44c875[_0x8101('0x2c')]);if(_0x44c875[_0x8101('0x2d')]){delete _0x44c875[_0x8101('0x2d')];}_0x21a85f['status'](_0x52ba5f)[_0x8101('0x2e')](_0x44c875);};}exports[_0x8101('0x2f')]=function(_0x3abe7b,_0xc9415d){var _0xb3a58b={},_0xb70534={},_0x291fc4={'count':0x0,'rows':[]};var _0x4ce7aa=_['map'](db[_0x8101('0x30')]['rawAttributes'],function(_0x326441){return{'name':_0x326441[_0x8101('0x31')],'type':_0x326441['type'][_0x8101('0x32')]};});_0xb70534[_0x8101('0x33')]=_[_0x8101('0x34')](_0x4ce7aa,_0x8101('0x2d'));_0xb70534[_0x8101('0x35')]=_[_0x8101('0x36')](_0x3abe7b[_0x8101('0x35')]);_0xb70534[_0x8101('0x37')]=_[_0x8101('0x38')](_0xb70534['model'],_0xb70534[_0x8101('0x35')]);_0xb3a58b['attributes']=_[_0x8101('0x38')](_0xb70534[_0x8101('0x33')],qs[_0x8101('0x39')](_0x3abe7b[_0x8101('0x35')]['fields']));_0xb3a58b['attributes']=_0xb3a58b['attributes']['length']?_0xb3a58b['attributes']:_0xb70534[_0x8101('0x33')];if(!_0x3abe7b[_0x8101('0x35')]['hasOwnProperty'](_0x8101('0x3a'))){_0xb3a58b[_0x8101('0x22')]=qs[_0x8101('0x22')](_0x3abe7b[_0x8101('0x35')][_0x8101('0x22')]);_0xb3a58b[_0x8101('0x20')]=qs['offset'](_0x3abe7b['query'][_0x8101('0x20')]);}_0xb3a58b['order']=qs[_0x8101('0x3b')](_0x3abe7b[_0x8101('0x35')][_0x8101('0x3b')]);_0xb3a58b[_0x8101('0x3c')]=qs[_0x8101('0x37')](_[_0x8101('0x3d')](_0x3abe7b[_0x8101('0x35')],_0xb70534[_0x8101('0x37')]),_0x4ce7aa);if(_0x3abe7b[_0x8101('0x35')]['filter']){_0xb3a58b[_0x8101('0x3c')]=_['merge'](_0xb3a58b[_0x8101('0x3c')],{'$or':_[_0x8101('0x34')](_0x4ce7aa,function(_0x43c99e){if(_0x43c99e[_0x8101('0x3e')]!==_0x8101('0x3f')){var _0x5de2b8={};_0x5de2b8[_0x43c99e[_0x8101('0x2d')]]={'$like':'%'+_0x3abe7b[_0x8101('0x35')][_0x8101('0x40')]+'%'};return _0x5de2b8;}})});}_0xb3a58b=_[_0x8101('0x41')]({},_0xb3a58b,_0x3abe7b[_0x8101('0x42')]);var _0x2be06e={'where':_0xb3a58b[_0x8101('0x3c')]};return db['CmHopperBlack']['count'](_0x2be06e)[_0x8101('0x2a')](function(_0x581529){_0x291fc4[_0x8101('0x23')]=_0x581529;if(_0x3abe7b['query'][_0x8101('0x43')]){_0xb3a58b[_0x8101('0x44')]=[{'all':!![]}];}return db['CmHopperBlack'][_0x8101('0x45')](_0xb3a58b);})['then'](function(_0x5992e4){_0x291fc4[_0x8101('0x46')]=_0x5992e4;return _0x291fc4;})[_0x8101('0x2a')](respondWithFilteredResult(_0xc9415d,_0xb3a58b))[_0x8101('0x47')](handleError(_0xc9415d,null));};exports[_0x8101('0x48')]=function(_0x53acf2,_0x50e2d4){var _0x330d48={'raw':!![],'where':{'id':_0x53acf2[_0x8101('0x49')]['id']}},_0x19b461={};_0x19b461['model']=_[_0x8101('0x36')](db[_0x8101('0x30')][_0x8101('0x4a')]);_0x19b461[_0x8101('0x35')]=_[_0x8101('0x36')](_0x53acf2[_0x8101('0x35')]);_0x19b461[_0x8101('0x37')]=_['intersection'](_0x19b461['model'],_0x19b461[_0x8101('0x35')]);_0x330d48[_0x8101('0x4b')]=_[_0x8101('0x38')](_0x19b461[_0x8101('0x33')],qs[_0x8101('0x39')](_0x53acf2[_0x8101('0x35')][_0x8101('0x39')]));_0x330d48['attributes']=_0x330d48[_0x8101('0x4b')][_0x8101('0x4c')]?_0x330d48[_0x8101('0x4b')]:_0x19b461[_0x8101('0x33')];if(_0x53acf2[_0x8101('0x35')]['includeAll']){_0x330d48[_0x8101('0x44')]=[{'all':!![]}];}_0x330d48=_['merge']({},_0x330d48,_0x53acf2[_0x8101('0x42')]);return db[_0x8101('0x30')]['find'](_0x330d48)['then'](handleEntityNotFound(_0x50e2d4,null))['then'](respondWithResult(_0x50e2d4,null))['catch'](handleError(_0x50e2d4,null));};exports['update']=function(_0x40bea7,_0x55f974){if(_0x40bea7[_0x8101('0x4d')]['id']){delete _0x40bea7['body']['id'];}return db['CmHopperBlack'][_0x8101('0x4e')]({'where':{'id':_0x40bea7[_0x8101('0x49')]['id']}})[_0x8101('0x2a')](handleEntityNotFound(_0x55f974,null))['then'](saveUpdates(_0x40bea7[_0x8101('0x4d')],null))['then'](respondWithResult(_0x55f974,null))[_0x8101('0x47')](handleError(_0x55f974,null));};exports[_0x8101('0x4f')]=function(_0x1d34ee,_0x4b1d81){return db[_0x8101('0x30')][_0x8101('0x4e')]({'where':{'id':_0x1d34ee['params']['id']}})[_0x8101('0x2a')](handleEntityNotFound(_0x4b1d81,null))[_0x8101('0x2a')](removeEntity(_0x4b1d81,null))[_0x8101('0x47')](handleError(_0x4b1d81,null));};exports[_0x8101('0x50')]=function(_0x4d513d,_0x205f33){return db[_0x8101('0x30')][_0x8101('0x50')]()[_0x8101('0x2a')](respondWithResult(_0x205f33,null))[_0x8101('0x47')](handleError(_0x205f33,null));};
\ No newline at end of file
+var _0xc75f=['save','update','destroy','then','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','CmHopperBlack','catch','includeAll','find','body','params','describe','eml-format','zip-dir','fast-json-patch','moment','mustache','util','path','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xc75f,0xb8));var _0xfc75=function(_0x3d881c,_0x1e9bbe){_0x3d881c=_0x3d881c-0x0;var _0x2b0676=_0xc75f[_0x3d881c];return _0x2b0676;};'use strict';var emlformat=require(_0xfc75('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfc75('0x1'));var jsonpatch=require(_0xfc75('0x2'));var rp=require('request-promise');var moment=require(_0xfc75('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xfc75('0x4'));var util=require(_0xfc75('0x5'));var path=require(_0xfc75('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xfc75('0x7'));var fs=require('fs');var fs_extra=require(_0xfc75('0x8'));var _=require('lodash');var squel=require(_0xfc75('0x9'));var crypto=require(_0xfc75('0xa'));var jsforce=require(_0xfc75('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xfc75('0xc'));var Papa=require(_0xfc75('0xd'));var Redis=require(_0xfc75('0xe'));var authService=require(_0xfc75('0xf'));var qs=require(_0xfc75('0x10'));var as=require(_0xfc75('0x11'));var hardwareService=require(_0xfc75('0x12'));var logger=require(_0xfc75('0x13'))('api');var utils=require(_0xfc75('0x14'));var config=require(_0xfc75('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xfc75('0x16'))['db'];function respondWithStatusCode(_0x5bdd6d,_0x5eb497){_0x5eb497=_0x5eb497||0xcc;return function(_0x41beed){if(_0x41beed){return _0x5bdd6d[_0xfc75('0x17')](_0x5eb497);}return _0x5bdd6d[_0xfc75('0x18')](_0x5eb497)[_0xfc75('0x19')]();};}function respondWithResult(_0xc426,_0x1ff5a7){_0x1ff5a7=_0x1ff5a7||0xc8;return function(_0xd7aff9){if(_0xd7aff9){return _0xc426[_0xfc75('0x18')](_0x1ff5a7)[_0xfc75('0x1a')](_0xd7aff9);}};}function respondWithFilteredResult(_0x2a10dc,_0x3cdac5){return function(_0x432ad5){if(_0x432ad5){var _0xb2d034=typeof _0x3cdac5[_0xfc75('0x1b')]===_0xfc75('0x1c')&&typeof _0x3cdac5[_0xfc75('0x1d')]===_0xfc75('0x1c');var _0x330c6a=_0x432ad5[_0xfc75('0x1e')];var _0x3e27bf=_0xb2d034?0x0:_0x3cdac5['offset'];var _0x1bd7e5=_0xb2d034?_0x432ad5[_0xfc75('0x1e')]:_0x3cdac5[_0xfc75('0x1b')]+_0x3cdac5[_0xfc75('0x1d')];var _0x51bd1a;if(_0x1bd7e5>=_0x330c6a){_0x1bd7e5=_0x330c6a;_0x51bd1a=0xc8;}else{_0x51bd1a=0xce;}_0x2a10dc['status'](_0x51bd1a);return _0x2a10dc[_0xfc75('0x1f')](_0xfc75('0x20'),_0x3e27bf+'-'+_0x1bd7e5+'/'+_0x330c6a)[_0xfc75('0x1a')](_0x432ad5);}return null;};}function patchUpdates(_0x4d1c75){return function(_0x22527d){try{jsonpatch[_0xfc75('0x21')](_0x22527d,_0x4d1c75,!![]);}catch(_0x477a84){return BPromise[_0xfc75('0x22')](_0x477a84);}return _0x22527d[_0xfc75('0x23')]();};}function saveUpdates(_0x4b7eaf,_0x31d266){return function(_0x358907){if(_0x358907){return _0x358907[_0xfc75('0x24')](_0x4b7eaf)['then'](function(_0x239d29){return _0x239d29;});}return null;};}function removeEntity(_0x139991,_0x4a4aea){return function(_0x49c282){if(_0x49c282){return _0x49c282[_0xfc75('0x25')]()[_0xfc75('0x26')](function(){_0x139991[_0xfc75('0x18')](0xcc)[_0xfc75('0x19')]();});}};}function handleEntityNotFound(_0x3ff682,_0x2d78c9){return function(_0x1c5709){if(!_0x1c5709){_0x3ff682[_0xfc75('0x17')](0x194);}return _0x1c5709;};}function handleError(_0x3530d6,_0x319b6a){_0x319b6a=_0x319b6a||0x1f4;return function(_0x4128f7){logger[_0xfc75('0x27')](_0x4128f7['stack']);if(_0x4128f7[_0xfc75('0x28')]){delete _0x4128f7['name'];}_0x3530d6[_0xfc75('0x18')](_0x319b6a)[_0xfc75('0x29')](_0x4128f7);};}exports[_0xfc75('0x2a')]=function(_0x24b044,_0x2ae0fe){var _0x2d5944={},_0x3d25f8={},_0x5619ac={'count':0x0,'rows':[]};var _0x327f11=_[_0xfc75('0x2b')](db['CmHopperBlack'][_0xfc75('0x2c')],function(_0x5ef725){return{'name':_0x5ef725[_0xfc75('0x2d')],'type':_0x5ef725[_0xfc75('0x2e')][_0xfc75('0x2f')]};});_0x3d25f8[_0xfc75('0x30')]=_[_0xfc75('0x2b')](_0x327f11,_0xfc75('0x28'));_0x3d25f8[_0xfc75('0x31')]=_[_0xfc75('0x32')](_0x24b044[_0xfc75('0x31')]);_0x3d25f8[_0xfc75('0x33')]=_['intersection'](_0x3d25f8[_0xfc75('0x30')],_0x3d25f8[_0xfc75('0x31')]);_0x2d5944[_0xfc75('0x34')]=_[_0xfc75('0x35')](_0x3d25f8[_0xfc75('0x30')],qs[_0xfc75('0x36')](_0x24b044[_0xfc75('0x31')]['fields']));_0x2d5944['attributes']=_0x2d5944['attributes'][_0xfc75('0x37')]?_0x2d5944[_0xfc75('0x34')]:_0x3d25f8[_0xfc75('0x30')];if(!_0x24b044[_0xfc75('0x31')][_0xfc75('0x38')](_0xfc75('0x39'))){_0x2d5944['limit']=qs[_0xfc75('0x1d')](_0x24b044[_0xfc75('0x31')][_0xfc75('0x1d')]);_0x2d5944[_0xfc75('0x1b')]=qs[_0xfc75('0x1b')](_0x24b044[_0xfc75('0x31')][_0xfc75('0x1b')]);}_0x2d5944[_0xfc75('0x3a')]=qs[_0xfc75('0x3b')](_0x24b044[_0xfc75('0x31')][_0xfc75('0x3b')]);_0x2d5944[_0xfc75('0x3c')]=qs['filters'](_[_0xfc75('0x3d')](_0x24b044[_0xfc75('0x31')],_0x3d25f8[_0xfc75('0x33')]),_0x327f11);if(_0x24b044[_0xfc75('0x31')]['filter']){_0x2d5944['where']=_[_0xfc75('0x3e')](_0x2d5944[_0xfc75('0x3c')],{'$or':_[_0xfc75('0x2b')](_0x327f11,function(_0x30525b){if(_0x30525b['type']!==_0xfc75('0x3f')){var _0x53a951={};_0x53a951[_0x30525b[_0xfc75('0x28')]]={'$like':'%'+_0x24b044[_0xfc75('0x31')][_0xfc75('0x40')]+'%'};return _0x53a951;}})});}_0x2d5944=_['merge']({},_0x2d5944,_0x24b044[_0xfc75('0x41')]);var _0xcf0379={'where':_0x2d5944['where']};return db[_0xfc75('0x42')]['count'](_0xcf0379)['then'](function(_0x1e5729){_0x5619ac[_0xfc75('0x1e')]=_0x1e5729;if(_0x24b044['query']['includeAll']){_0x2d5944['include']=[{'all':!![]}];}return db[_0xfc75('0x42')]['findAll'](_0x2d5944);})['then'](function(_0x40897c){_0x5619ac['rows']=_0x40897c;return _0x5619ac;})[_0xfc75('0x26')](respondWithFilteredResult(_0x2ae0fe,_0x2d5944))[_0xfc75('0x43')](handleError(_0x2ae0fe,null));};exports['show']=function(_0x3a5752,_0x5c31a1){var _0xe7b42c={'raw':!![],'where':{'id':_0x3a5752['params']['id']}},_0x1c85b0={};_0x1c85b0[_0xfc75('0x30')]=_[_0xfc75('0x32')](db['CmHopperBlack'][_0xfc75('0x2c')]);_0x1c85b0['query']=_['keys'](_0x3a5752[_0xfc75('0x31')]);_0x1c85b0['filters']=_[_0xfc75('0x35')](_0x1c85b0[_0xfc75('0x30')],_0x1c85b0[_0xfc75('0x31')]);_0xe7b42c[_0xfc75('0x34')]=_['intersection'](_0x1c85b0[_0xfc75('0x30')],qs['fields'](_0x3a5752[_0xfc75('0x31')][_0xfc75('0x36')]));_0xe7b42c[_0xfc75('0x34')]=_0xe7b42c[_0xfc75('0x34')]['length']?_0xe7b42c[_0xfc75('0x34')]:_0x1c85b0['model'];if(_0x3a5752[_0xfc75('0x31')][_0xfc75('0x44')]){_0xe7b42c['include']=[{'all':!![]}];}_0xe7b42c=_[_0xfc75('0x3e')]({},_0xe7b42c,_0x3a5752['options']);return db['CmHopperBlack'][_0xfc75('0x45')](_0xe7b42c)['then'](handleEntityNotFound(_0x5c31a1,null))['then'](respondWithResult(_0x5c31a1,null))[_0xfc75('0x43')](handleError(_0x5c31a1,null));};exports[_0xfc75('0x24')]=function(_0x3d4e5d,_0x4b31f7){if(_0x3d4e5d[_0xfc75('0x46')]['id']){delete _0x3d4e5d['body']['id'];}return db[_0xfc75('0x42')]['find']({'where':{'id':_0x3d4e5d[_0xfc75('0x47')]['id']}})[_0xfc75('0x26')](handleEntityNotFound(_0x4b31f7,null))['then'](saveUpdates(_0x3d4e5d['body'],null))[_0xfc75('0x26')](respondWithResult(_0x4b31f7,null))['catch'](handleError(_0x4b31f7,null));};exports[_0xfc75('0x25')]=function(_0x236f7c,_0x3c58c1){return db[_0xfc75('0x42')][_0xfc75('0x45')]({'where':{'id':_0x236f7c[_0xfc75('0x47')]['id']}})[_0xfc75('0x26')](handleEntityNotFound(_0x3c58c1,null))[_0xfc75('0x26')](removeEntity(_0x3c58c1,null))[_0xfc75('0x43')](handleError(_0x3c58c1,null));};exports[_0xfc75('0x48')]=function(_0x3d8ef5,_0xff09da){return db[_0xfc75('0x42')][_0xfc75('0x48')]()[_0xfc75('0x26')](respondWithResult(_0xff09da,null))[_0xfc75('0x43')](handleError(_0xff09da,null));};
\ No newline at end of file
index 517eda4..8195fd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c36=['moment','request-promise','path','rimraf','../../config/environment','./cmHopperBlack.attributes','exports','CmHopperBlack','lodash','util','../../config/logger','api'];(function(_0x43d4e1,_0x5783b5){var _0x2cd6ef=function(_0x2d1cb2){while(--_0x2d1cb2){_0x43d4e1['push'](_0x43d4e1['shift']());}};_0x2cd6ef(++_0x5783b5);}(_0x9c36,0x104));var _0x69c3=function(_0x34b4c3,_0x610095){_0x34b4c3=_0x34b4c3-0x0;var _0x5e566b=_0x9c36[_0x34b4c3];return _0x5e566b;};'use strict';var _=require(_0x69c3('0x0'));var util=require(_0x69c3('0x1'));var logger=require(_0x69c3('0x2'))(_0x69c3('0x3'));var moment=require(_0x69c3('0x4'));var BPromise=require('bluebird');var rp=require(_0x69c3('0x5'));var fs=require('fs');var path=require(_0x69c3('0x6'));var rimraf=require(_0x69c3('0x7'));var config=require(_0x69c3('0x8'));var attributes=require(_0x69c3('0x9'));module[_0x69c3('0xa')]=function(_0x19e159,_0x3c961e){return _0x19e159['define'](_0x69c3('0xb'),attributes,{'tableName':'cm_hopper_black','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdde4=['moment','path','../../config/environment','exports','CmHopperBlack','util','../../config/logger'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0xdde4,0xad));var _0x4dde=function(_0x406025,_0x2c946c){_0x406025=_0x406025-0x0;var _0x23f3c8=_0xdde4[_0x406025];return _0x23f3c8;};'use strict';var _=require('lodash');var util=require(_0x4dde('0x0'));var logger=require(_0x4dde('0x1'))('api');var moment=require(_0x4dde('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x4dde('0x3'));var rimraf=require('rimraf');var config=require(_0x4dde('0x4'));var attributes=require('./cmHopperBlack.attributes');module[_0x4dde('0x5')]=function(_0x48ed49,_0x48bd91){return _0x48ed49['define'](_0x4dde('0x6'),attributes,{'tableName':'cm_hopper_black','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6da42bc..3a11169 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e8a=['client','request','then','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','error','message','info','catch','GetCmHopperBlack','CmHopperBlack','findAll','options','raw','where','attributes','limit','include','map','model','stringify','UpdateCmHopperBlack','body','DestroyCmHopperBlack','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise'];(function(_0x557fd2,_0x2c0a7a){var _0x1b54a2=function(_0x2e439b){while(--_0x2e439b){_0x557fd2['push'](_0x557fd2['shift']());}};_0x1b54a2(++_0x2c0a7a);}(_0x1e8a,0x7c));var _0xa1e8=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x1e8a[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0xa1e8('0x0'));var util=require('util');var moment=require(_0xa1e8('0x1'));var BPromise=require('bluebird');var rs=require(_0xa1e8('0x2'));var fs=require('fs');var Redis=require(_0xa1e8('0x3'));var db=require(_0xa1e8('0x4'))['db'];var utils=require(_0xa1e8('0x5'));var logger=require(_0xa1e8('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xa1e8('0x7'));var client=jayson[_0xa1e8('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0xb74144,_0x5a1267,_0x37b216){return new BPromise(function(_0x157c33,_0x142e3e){return client[_0xa1e8('0x9')](_0xb74144,_0x37b216)[_0xa1e8('0xa')](function(_0x10d441){logger['info'](_0xa1e8('0xb'),_0x5a1267,_0xa1e8('0xc'));logger[_0xa1e8('0xd')]('CmHopperBlack,\x20%s,\x20%s,\x20%s',_0x5a1267,_0xa1e8('0xc'),JSON['stringify'](_0x10d441));if(_0x10d441[_0xa1e8('0xe')]){if(_0x10d441[_0xa1e8('0xe')]['code']===0x1f4){logger[_0xa1e8('0xe')](_0xa1e8('0xb'),_0x5a1267,_0x10d441[_0xa1e8('0xe')][_0xa1e8('0xf')]);return _0x142e3e(_0x10d441[_0xa1e8('0xe')][_0xa1e8('0xf')]);}logger[_0xa1e8('0xe')](_0xa1e8('0xb'),_0x5a1267,_0x10d441[_0xa1e8('0xe')][_0xa1e8('0xf')]);return _0x157c33(_0x10d441[_0xa1e8('0xe')][_0xa1e8('0xf')]);}else{logger[_0xa1e8('0x10')](_0xa1e8('0xb'),_0x5a1267,_0xa1e8('0xc'));_0x157c33(_0x10d441['result']['message']);}})[_0xa1e8('0x11')](function(_0x7073e9){logger[_0xa1e8('0xe')](_0xa1e8('0xb'),_0x5a1267,_0x7073e9);_0x142e3e(_0x7073e9);});});}exports[_0xa1e8('0x12')]=function(_0xa0bca7){var _0x13f86b=this;return new Promise(function(_0x56b517,_0x294fed){return db[_0xa1e8('0x13')][_0xa1e8('0x14')]({'raw':_0xa0bca7[_0xa1e8('0x15')]?_0xa0bca7['options'][_0xa1e8('0x16')]===undefined?!![]:![]:!![],'where':_0xa0bca7[_0xa1e8('0x15')]?_0xa0bca7['options'][_0xa1e8('0x17')]||null:null,'attributes':_0xa0bca7['options']?_0xa0bca7[_0xa1e8('0x15')][_0xa1e8('0x18')]||null:null,'limit':_0xa0bca7[_0xa1e8('0x15')]?_0xa0bca7['options'][_0xa1e8('0x19')]||null:null,'include':_0xa0bca7[_0xa1e8('0x15')]?_0xa0bca7[_0xa1e8('0x15')][_0xa1e8('0x1a')]?_[_0xa1e8('0x1b')](_0xa0bca7[_0xa1e8('0x15')][_0xa1e8('0x1a')],function(_0x9a0350){return{'model':db[_0x9a0350['model']],'as':_0x9a0350['as'],'attributes':_0x9a0350[_0xa1e8('0x18')],'include':_0x9a0350[_0xa1e8('0x1a')]?_[_0xa1e8('0x1b')](_0x9a0350[_0xa1e8('0x1a')],function(_0x2966c1){return{'model':db[_0x2966c1[_0xa1e8('0x1c')]],'as':_0x2966c1['as'],'attributes':_0x2966c1[_0xa1e8('0x18')],'include':_0x2966c1[_0xa1e8('0x1a')]?_[_0xa1e8('0x1b')](_0x2966c1[_0xa1e8('0x1a')],function(_0xb19a3b){return{'model':db[_0xb19a3b[_0xa1e8('0x1c')]],'as':_0xb19a3b['as'],'attributes':_0xb19a3b[_0xa1e8('0x18')]};}):[]};}):[]};}):[]:[]})[_0xa1e8('0xa')](function(_0xbc6405){logger['info'](_0xa1e8('0x12'),_0xa0bca7);logger[_0xa1e8('0xd')]('GetCmHopperBlack',_0xa0bca7,JSON[_0xa1e8('0x1d')](_0xbc6405));_0x56b517(_0xbc6405);})[_0xa1e8('0x11')](function(_0x1b782e){logger['error']('GetCmHopperBlack',_0x1b782e[_0xa1e8('0xf')],_0xa0bca7);_0x294fed(_0x13f86b[_0xa1e8('0xe')](0x1f4,_0x1b782e[_0xa1e8('0xf')]));});});};exports[_0xa1e8('0x1e')]=function(_0x709b){var _0xd29986=this;return new Promise(function(_0x1d306b,_0x20cb55){return db[_0xa1e8('0x13')]['update'](_0x709b[_0xa1e8('0x1f')],{'raw':_0x709b[_0xa1e8('0x15')]?_0x709b[_0xa1e8('0x15')][_0xa1e8('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x709b[_0xa1e8('0x15')]?_0x709b[_0xa1e8('0x15')][_0xa1e8('0x17')]||null:null,'attributes':_0x709b['options']?_0x709b['options']['attributes']||null:null,'limit':_0x709b[_0xa1e8('0x15')]?_0x709b[_0xa1e8('0x15')][_0xa1e8('0x19')]||null:null})[_0xa1e8('0xa')](function(_0x4a774a){logger[_0xa1e8('0x10')]('UpdateCmHopperBlack',_0x709b);logger['debug'](_0xa1e8('0x1e'),_0x709b,JSON[_0xa1e8('0x1d')](_0x4a774a));_0x1d306b(_0x4a774a);})['catch'](function(_0x24d5dc){logger['error'](_0xa1e8('0x1e'),_0x24d5dc['message'],_0x709b);_0x20cb55(_0xd29986[_0xa1e8('0xe')](0x1f4,_0x24d5dc[_0xa1e8('0xf')]));});});};exports[_0xa1e8('0x20')]=function(_0x1918d6){var _0x7438f2=this;return new Promise(function(_0x3c81c4,_0x2a3566){return db[_0xa1e8('0x13')]['destroy']({'where':_0x1918d6[_0xa1e8('0x15')]?_0x1918d6[_0xa1e8('0x15')][_0xa1e8('0x17')]||null:null})[_0xa1e8('0xa')](function(_0x3135dc){logger[_0xa1e8('0x10')](_0xa1e8('0x20'),_0x1918d6);logger[_0xa1e8('0xd')]('DestroyCmHopperBlack',_0x1918d6,JSON[_0xa1e8('0x1d')](_0x3135dc));_0x3c81c4(_0x3135dc);})[_0xa1e8('0x11')](function(_0x49265e){logger[_0xa1e8('0xe')]('DestroyCmHopperBlack',_0x49265e['message'],_0x1918d6);_0x2a3566(_0x7438f2['error'](0x1f4,_0x49265e[_0xa1e8('0xf')]));});});};
\ No newline at end of file
+var _0xe756=['../../config/environment','jayson/promise','client','http','request','then','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','CmHopperBlack','findAll','raw','options','where','limit','include','model','attributes','map','GetCmHopperBlack','UpdateCmHopperBlack','update','body','destroy','DestroyCmHopperBlack','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','rpc'];(function(_0x23651b,_0x5741ae){var _0xd5c714=function(_0x1d5b0d){while(--_0x1d5b0d){_0x23651b['push'](_0x23651b['shift']());}};_0xd5c714(++_0x5741ae);}(_0xe756,0x1e7));var _0x6e75=function(_0x3b3f90,_0x388364){_0x3b3f90=_0x3b3f90-0x0;var _0x52522e=_0xe756[_0x3b3f90];return _0x52522e;};'use strict';var _=require(_0x6e75('0x0'));var util=require(_0x6e75('0x1'));var moment=require(_0x6e75('0x2'));var BPromise=require(_0x6e75('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6e75('0x4'))['db'];var utils=require(_0x6e75('0x5'));var logger=require('../../config/logger')(_0x6e75('0x6'));var config=require(_0x6e75('0x7'));var jayson=require(_0x6e75('0x8'));var client=jayson[_0x6e75('0x9')][_0x6e75('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xe95b34,_0x2a82e0,_0x486dd7){return new BPromise(function(_0x48e43a,_0x1a02af){return client[_0x6e75('0xb')](_0xe95b34,_0x486dd7)[_0x6e75('0xc')](function(_0x553fbe){logger['info'](_0x6e75('0xd'),_0x2a82e0,_0x6e75('0xe'));logger[_0x6e75('0xf')](_0x6e75('0x10'),_0x2a82e0,_0x6e75('0xe'),JSON[_0x6e75('0x11')](_0x553fbe));if(_0x553fbe[_0x6e75('0x12')]){if(_0x553fbe[_0x6e75('0x12')]['code']===0x1f4){logger[_0x6e75('0x12')]('CmHopperBlack,\x20%s,\x20%s',_0x2a82e0,_0x553fbe[_0x6e75('0x12')]['message']);return _0x1a02af(_0x553fbe[_0x6e75('0x12')]['message']);}logger['error'](_0x6e75('0xd'),_0x2a82e0,_0x553fbe[_0x6e75('0x12')][_0x6e75('0x13')]);return _0x48e43a(_0x553fbe[_0x6e75('0x12')][_0x6e75('0x13')]);}else{logger[_0x6e75('0x14')](_0x6e75('0xd'),_0x2a82e0,_0x6e75('0xe'));_0x48e43a(_0x553fbe['result'][_0x6e75('0x13')]);}})[_0x6e75('0x15')](function(_0x4624ef){logger[_0x6e75('0x12')]('CmHopperBlack,\x20%s,\x20%s',_0x2a82e0,_0x4624ef);_0x1a02af(_0x4624ef);});});}exports['GetCmHopperBlack']=function(_0x50b734){var _0x3c1ebe=this;return new Promise(function(_0x967b94,_0x4325b2){return db[_0x6e75('0x16')][_0x6e75('0x17')]({'raw':_0x50b734['options']?_0x50b734['options'][_0x6e75('0x18')]===undefined?!![]:![]:!![],'where':_0x50b734[_0x6e75('0x19')]?_0x50b734[_0x6e75('0x19')][_0x6e75('0x1a')]||null:null,'attributes':_0x50b734[_0x6e75('0x19')]?_0x50b734[_0x6e75('0x19')]['attributes']||null:null,'limit':_0x50b734['options']?_0x50b734[_0x6e75('0x19')][_0x6e75('0x1b')]||null:null,'include':_0x50b734[_0x6e75('0x19')]?_0x50b734[_0x6e75('0x19')][_0x6e75('0x1c')]?_['map'](_0x50b734[_0x6e75('0x19')][_0x6e75('0x1c')],function(_0x459ccd){return{'model':db[_0x459ccd[_0x6e75('0x1d')]],'as':_0x459ccd['as'],'attributes':_0x459ccd[_0x6e75('0x1e')],'include':_0x459ccd[_0x6e75('0x1c')]?_[_0x6e75('0x1f')](_0x459ccd[_0x6e75('0x1c')],function(_0x98d240){return{'model':db[_0x98d240[_0x6e75('0x1d')]],'as':_0x98d240['as'],'attributes':_0x98d240[_0x6e75('0x1e')],'include':_0x98d240[_0x6e75('0x1c')]?_[_0x6e75('0x1f')](_0x98d240[_0x6e75('0x1c')],function(_0x414101){return{'model':db[_0x414101[_0x6e75('0x1d')]],'as':_0x414101['as'],'attributes':_0x414101['attributes']};}):[]};}):[]};}):[]:[]})[_0x6e75('0xc')](function(_0x4cabed){logger['info'](_0x6e75('0x20'),_0x50b734);logger['debug'](_0x6e75('0x20'),_0x50b734,JSON[_0x6e75('0x11')](_0x4cabed));_0x967b94(_0x4cabed);})[_0x6e75('0x15')](function(_0x40fd7f){logger[_0x6e75('0x12')](_0x6e75('0x20'),_0x40fd7f[_0x6e75('0x13')],_0x50b734);_0x4325b2(_0x3c1ebe[_0x6e75('0x12')](0x1f4,_0x40fd7f[_0x6e75('0x13')]));});});};exports[_0x6e75('0x21')]=function(_0x5082be){var _0x1afe01=this;return new Promise(function(_0x4e860,_0x1a8eff){return db[_0x6e75('0x16')][_0x6e75('0x22')](_0x5082be[_0x6e75('0x23')],{'raw':_0x5082be[_0x6e75('0x19')]?_0x5082be[_0x6e75('0x19')][_0x6e75('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5082be['options']?_0x5082be[_0x6e75('0x19')][_0x6e75('0x1a')]||null:null,'attributes':_0x5082be[_0x6e75('0x19')]?_0x5082be['options'][_0x6e75('0x1e')]||null:null,'limit':_0x5082be[_0x6e75('0x19')]?_0x5082be[_0x6e75('0x19')][_0x6e75('0x1b')]||null:null})['then'](function(_0x3273a7){logger[_0x6e75('0x14')](_0x6e75('0x21'),_0x5082be);logger[_0x6e75('0xf')](_0x6e75('0x21'),_0x5082be,JSON['stringify'](_0x3273a7));_0x4e860(_0x3273a7);})[_0x6e75('0x15')](function(_0x5a69b5){logger['error']('UpdateCmHopperBlack',_0x5a69b5['message'],_0x5082be);_0x1a8eff(_0x1afe01[_0x6e75('0x12')](0x1f4,_0x5a69b5[_0x6e75('0x13')]));});});};exports['DestroyCmHopperBlack']=function(_0x3a45ed){var _0x55d20d=this;return new Promise(function(_0x1b3357,_0x56d209){return db[_0x6e75('0x16')][_0x6e75('0x24')]({'where':_0x3a45ed[_0x6e75('0x19')]?_0x3a45ed['options'][_0x6e75('0x1a')]||null:null})[_0x6e75('0xc')](function(_0x50a76d){logger[_0x6e75('0x14')](_0x6e75('0x25'),_0x3a45ed);logger[_0x6e75('0xf')](_0x6e75('0x25'),_0x3a45ed,JSON[_0x6e75('0x11')](_0x50a76d));_0x1b3357(_0x50a76d);})[_0x6e75('0x15')](function(_0x15aec3){logger[_0x6e75('0x12')](_0x6e75('0x25'),_0x15aec3['message'],_0x3a45ed);_0x56d209(_0x55d20d[_0x6e75('0x12')](0x1f4,_0x15aec3['message']));});});};
\ No newline at end of file
index 4f39577..eade4b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['exports','multer','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','isAuthenticated','index','put','update','delete','destroy'];(function(_0xa0a978,_0x4b6956){var _0x4607f0=function(_0x20d09a){while(--_0x20d09a){_0xa0a978['push'](_0xa0a978['shift']());}};_0x4607f0(++_0x4b6956);}(_0x0295,0x1f0));var _0x5029=function(_0x4a83f4,_0x50f589){_0x4a83f4=_0x4a83f4-0x0;var _0x1fc810=_0x0295[_0x4a83f4];return _0x1fc810;};'use strict';var multer=require(_0x5029('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x5029('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5029('0x2'));var auth=require(_0x5029('0x3'));var interaction=require(_0x5029('0x4'));var config=require(_0x5029('0x5'));var controller=require(_0x5029('0x6'));router[_0x5029('0x7')]('/',auth[_0x5029('0x8')](),controller[_0x5029('0x9')]);router[_0x5029('0x7')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x5029('0x7')]('/:id',auth[_0x5029('0x8')](),controller['show']);router[_0x5029('0xa')]('/:id',auth[_0x5029('0x8')](),controller[_0x5029('0xb')]);router[_0x5029('0xc')]('/:id',auth[_0x5029('0x8')](),controller[_0x5029('0xd')]);module[_0x5029('0xe')]=router;
\ No newline at end of file
+var _0x687b=['isAuthenticated','index','/describe','describe','show','put','/:id','update','delete','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get'];(function(_0x26ac67,_0x1626d9){var _0x2240af=function(_0x180c62){while(--_0x180c62){_0x26ac67['push'](_0x26ac67['shift']());}};_0x2240af(++_0x1626d9);}(_0x687b,0x14a));var _0xb687=function(_0x29d530,_0x5da0d7){_0x29d530=_0x29d530-0x0;var _0x242905=_0x687b[_0x29d530];return _0x242905;};'use strict';var multer=require(_0xb687('0x0'));var util=require(_0xb687('0x1'));var path=require(_0xb687('0x2'));var timeout=require(_0xb687('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xb687('0x4'));var auth=require(_0xb687('0x5'));var interaction=require(_0xb687('0x6'));var config=require(_0xb687('0x7'));var controller=require(_0xb687('0x8'));router[_0xb687('0x9')]('/',auth[_0xb687('0xa')](),controller[_0xb687('0xb')]);router[_0xb687('0x9')](_0xb687('0xc'),auth['isAuthenticated'](),controller[_0xb687('0xd')]);router[_0xb687('0x9')]('/:id',auth[_0xb687('0xa')](),controller[_0xb687('0xe')]);router[_0xb687('0xf')](_0xb687('0x10'),auth[_0xb687('0xa')](),controller[_0xb687('0x11')]);router[_0xb687('0x12')](_0xb687('0x10'),auth[_0xb687('0xa')](),controller['destroy']);module[_0xb687('0x13')]=router;
\ No newline at end of file
index 655a3e8..94dbbd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9ab=['endtime','diff','seconds','setDataValue','dispositionat','BOOLEAN','sequelize','exports','INTEGER','STRING','DATE'];(function(_0x40ebff,_0x1dd15e){var _0x40122a=function(_0xae6174){while(--_0xae6174){_0x40ebff['push'](_0x40ebff['shift']());}};_0x40122a(++_0x1dd15e);}(_0xd9ab,0x10e));var _0xbd9a=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0xd9ab[_0x465028];return _0xb783d4;};'use strict';var Sequelize=require(_0xbd9a('0x0'));var moment=require('moment');module[_0xbd9a('0x1')]={'state':{'type':Sequelize[_0xbd9a('0x2')](0x2)},'statedesc':{'type':Sequelize[_0xbd9a('0x3')]},'scheduledat':{'type':Sequelize[_0xbd9a('0x4')]},'countbusyretry':{'type':Sequelize[_0xbd9a('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xbd9a('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xbd9a('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xbd9a('0x3')]},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0xbd9a('0x3')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xbd9a('0x3')]},'starttime':{'type':Sequelize[_0xbd9a('0x4')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0xbd9a('0x4')]},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0xbd9a('0x4')]},'ringtime':{'type':Sequelize[_0xbd9a('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xbd9a('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xbd9a('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xbd9a('0x3')]},'campaign':{'type':Sequelize[_0xbd9a('0x3')]},'campaigntype':{'type':Sequelize[_0xbd9a('0x3')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0xbd9a('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xbd9a('0x3')]},'dispositionat':{'type':Sequelize[_0xbd9a('0x4')],'set':function(_0x49317c){var _0x55f3d2=this['getDataValue'](_0xbd9a('0x5'));if(_0x55f3d2&&_0x49317c){this['setDataValue']('followuptime',moment(_0x49317c)[_0xbd9a('0x6')](moment(_0x55f3d2),_0xbd9a('0x7')));}return this[_0xbd9a('0x8')](_0xbd9a('0x9'),_0x49317c);}},'amd':{'type':Sequelize[_0xbd9a('0xa')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'blacklist':{'type':Sequelize[_0xbd9a('0xa')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0xbd9a('0xa')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0xbd9a('0x4')]},'callback':{'type':Sequelize[_0xbd9a('0xa')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0xbd9a('0x4')]},'deleted':{'type':Sequelize[_0xbd9a('0x3')],'defaultValue':null},'deletedat':{'type':Sequelize[_0xbd9a('0x4')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xbd9a('0x4')]},'countnosuchnumberretry':{'type':Sequelize[_0xbd9a('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xbd9a('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xbd9a('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xbd9a('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xeb35=['setDataValue','dispositionat','BOOLEAN','sequelize','moment','exports','INTEGER','STRING','DATE','getDataValue','endtime','followuptime','diff'];(function(_0x115ce4,_0x1cf310){var _0x3f0a54=function(_0x2f7584){while(--_0x2f7584){_0x115ce4['push'](_0x115ce4['shift']());}};_0x3f0a54(++_0x1cf310);}(_0xeb35,0x1f1));var _0x5eb3=function(_0x89381e,_0x1cd321){_0x89381e=_0x89381e-0x0;var _0xcac9d=_0xeb35[_0x89381e];return _0xcac9d;};'use strict';var Sequelize=require(_0x5eb3('0x0'));var moment=require(_0x5eb3('0x1'));module[_0x5eb3('0x2')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0x5eb3('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x5eb3('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x5eb3('0x3')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x5eb3('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0x5eb3('0x4')]},'originatecalleridname':{'type':Sequelize[_0x5eb3('0x4')]},'calleridnum':{'type':Sequelize[_0x5eb3('0x4')]},'calleridname':{'type':Sequelize[_0x5eb3('0x4')]},'starttime':{'type':Sequelize[_0x5eb3('0x5')]},'responsetime':{'type':Sequelize[_0x5eb3('0x5')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x5eb3('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x5eb3('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x5eb3('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x5eb3('0x4')]},'campaign':{'type':Sequelize[_0x5eb3('0x4')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x5eb3('0x4')]},'reason':{'type':Sequelize[_0x5eb3('0x4')]},'disposition':{'type':Sequelize[_0x5eb3('0x4')]},'secondDisposition':{'type':Sequelize[_0x5eb3('0x4')]},'thirdDisposition':{'type':Sequelize[_0x5eb3('0x4')]},'dispositionat':{'type':Sequelize[_0x5eb3('0x5')],'set':function(_0x155623){var _0xcbe785=this[_0x5eb3('0x6')](_0x5eb3('0x7'));if(_0xcbe785&&_0x155623){this['setDataValue'](_0x5eb3('0x8'),moment(_0x155623)[_0x5eb3('0x9')](moment(_0xcbe785),'seconds'));}return this[_0x5eb3('0xa')](_0x5eb3('0xb'),_0x155623);}},'amd':{'type':Sequelize[_0x5eb3('0xc')],'defaultValue':![]},'fax':{'type':Sequelize[_0x5eb3('0xc')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x5eb3('0xc')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x5eb3('0xc')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x5eb3('0x5')]},'callback':{'type':Sequelize[_0x5eb3('0xc')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x5eb3('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x5eb3('0x5')]},'deleted':{'type':Sequelize[_0x5eb3('0x4')],'defaultValue':null},'deletedat':{'type':Sequelize[_0x5eb3('0x5')]},'recallme':{'type':Sequelize[_0x5eb3('0xc')],'defaultValue':![]},'agiafterat':{'type':Sequelize['DATE']},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x5eb3('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x5eb3('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 139e680..397df04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33af=['end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','stack','name','send','index','map','CmHopperFinal','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','order','sort','where','merge','VIRTUAL','filter','includeAll','findAll','rows','catch','show','params','length','include','describe','body','uniqueid','find','countContactsQueueCampaignHopperFinal','COUNT','sequelize','`state`\x20=\x200,\x201,\x20null','noSuchContacts','literal','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x205,\x201,\x20null','busyContacts','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','countContactsIvrCampaignHopperFinal','noAnswerContacts','`state`\x20=\x208,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','answeringMachine','moveContactsQueueCampaignHopperFinal','cm_hopper','phone','scheduledAt','ContactId','ListId','VoiceQueueId','select','field','ANY_VALUE(calleridnum)','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(VoiceQueueId)','createdAt','updatedAt','from','cm_hopper_final','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','calleridnum','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','insert','fromQuery','CampaignId','ANY_VALUE(ListId)','CampaignId\x20=\x20?','checkContactHopper','CmHopper','findOne','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','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'];(function(_0x45ef38,_0xaa7c71){var _0x2f9db5=function(_0x193151){while(--_0x193151){_0x45ef38['push'](_0x45ef38['shift']());}};_0x2f9db5(++_0xaa7c71);}(_0x33af,0xec));var _0xf33a=function(_0x197115,_0x14d69a){_0x197115=_0x197115-0x0;var _0x19d830=_0x33af[_0x197115];return _0x19d830;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf33a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf33a('0x1'));var rp=require(_0xf33a('0x2'));var moment=require(_0xf33a('0x3'));var BPromise=require(_0xf33a('0x4'));var Mustache=require(_0xf33a('0x5'));var util=require(_0xf33a('0x6'));var path=require('path');var sox=require(_0xf33a('0x7'));var csv=require(_0xf33a('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf33a('0x9'));var _=require(_0xf33a('0xa'));var squel=require(_0xf33a('0xb'));var crypto=require(_0xf33a('0xc'));var jsforce=require(_0xf33a('0xd'));var deskjs=require(_0xf33a('0xe'));var toCsv=require('to-csv');var querystring=require(_0xf33a('0xf'));var Papa=require(_0xf33a('0x10'));var Redis=require(_0xf33a('0x11'));var authService=require(_0xf33a('0x12'));var qs=require(_0xf33a('0x13'));var as=require(_0xf33a('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf33a('0x15'));var utils=require(_0xf33a('0x16'));var config=require(_0xf33a('0x17'));var licenseUtil=require(_0xf33a('0x18'));var db=require(_0xf33a('0x19'))['db'];function respondWithStatusCode(_0x5959c9,_0x9f87bc){_0x9f87bc=_0x9f87bc||0xcc;return function(_0x21b80e){if(_0x21b80e){return _0x5959c9['sendStatus'](_0x9f87bc);}return _0x5959c9['status'](_0x9f87bc)[_0xf33a('0x1a')]();};}function respondWithResult(_0x1b3bf0,_0x17043){_0x17043=_0x17043||0xc8;return function(_0x153bda){if(_0x153bda){return _0x1b3bf0[_0xf33a('0x1b')](_0x17043)[_0xf33a('0x1c')](_0x153bda);}};}function respondWithFilteredResult(_0x45e311,_0x1f2b1b){return function(_0x507cb9){if(_0x507cb9){var _0x441f59=typeof _0x1f2b1b['offset']===_0xf33a('0x1d')&&typeof _0x1f2b1b[_0xf33a('0x1e')]==='undefined';var _0x37e76c=_0x507cb9[_0xf33a('0x1f')];var _0x524109=_0x441f59?0x0:_0x1f2b1b[_0xf33a('0x20')];var _0x23d9e2=_0x441f59?_0x507cb9[_0xf33a('0x1f')]:_0x1f2b1b[_0xf33a('0x20')]+_0x1f2b1b['limit'];var _0x11efa0;if(_0x23d9e2>=_0x37e76c){_0x23d9e2=_0x37e76c;_0x11efa0=0xc8;}else{_0x11efa0=0xce;}_0x45e311[_0xf33a('0x1b')](_0x11efa0);return _0x45e311[_0xf33a('0x21')](_0xf33a('0x22'),_0x524109+'-'+_0x23d9e2+'/'+_0x37e76c)[_0xf33a('0x1c')](_0x507cb9);}return null;};}function patchUpdates(_0x6cdf7b){return function(_0x19986f){try{jsonpatch[_0xf33a('0x23')](_0x19986f,_0x6cdf7b,!![]);}catch(_0x19055e){return BPromise[_0xf33a('0x24')](_0x19055e);}return _0x19986f['save']();};}function saveUpdates(_0x3854b4,_0x272e60){return function(_0x1bf9bc){if(_0x1bf9bc){return _0x1bf9bc[_0xf33a('0x25')](_0x3854b4)[_0xf33a('0x26')](function(_0x51d3fd){return _0x51d3fd;});}return null;};}function removeEntity(_0x44654c,_0x5882ba){return function(_0x492986){if(_0x492986){return _0x492986[_0xf33a('0x27')]()[_0xf33a('0x26')](function(){_0x44654c[_0xf33a('0x1b')](0xcc)[_0xf33a('0x1a')]();});}};}function handleEntityNotFound(_0x4b9801,_0x57cb1d){return function(_0x393005){if(!_0x393005){_0x4b9801['sendStatus'](0x194);}return _0x393005;};}function handleError(_0x4af24a,_0x16ef31){_0x16ef31=_0x16ef31||0x1f4;return function(_0x5f0a53){logger['error'](_0x5f0a53[_0xf33a('0x28')]);if(_0x5f0a53['name']){delete _0x5f0a53[_0xf33a('0x29')];}_0x4af24a['status'](_0x16ef31)[_0xf33a('0x2a')](_0x5f0a53);};}exports[_0xf33a('0x2b')]=function(_0x469741,_0x729fca){var _0x4552c9={},_0x3068a9={},_0x1d19ee={'count':0x0,'rows':[]};var _0x1246ff=_[_0xf33a('0x2c')](db[_0xf33a('0x2d')][_0xf33a('0x2e')],function(_0x8f8ddc){return{'name':_0x8f8ddc[_0xf33a('0x2f')],'type':_0x8f8ddc[_0xf33a('0x30')][_0xf33a('0x31')]};});_0x3068a9['model']=_[_0xf33a('0x2c')](_0x1246ff,_0xf33a('0x29'));_0x3068a9[_0xf33a('0x32')]=_[_0xf33a('0x33')](_0x469741['query']);_0x3068a9[_0xf33a('0x34')]=_[_0xf33a('0x35')](_0x3068a9[_0xf33a('0x36')],_0x3068a9[_0xf33a('0x32')]);_0x4552c9[_0xf33a('0x37')]=_[_0xf33a('0x35')](_0x3068a9['model'],qs[_0xf33a('0x38')](_0x469741[_0xf33a('0x32')][_0xf33a('0x38')]));_0x4552c9[_0xf33a('0x37')]=_0x4552c9[_0xf33a('0x37')]['length']?_0x4552c9['attributes']:_0x3068a9[_0xf33a('0x36')];if(!_0x469741['query']['hasOwnProperty']('nolimit')){_0x4552c9[_0xf33a('0x1e')]=qs[_0xf33a('0x1e')](_0x469741['query'][_0xf33a('0x1e')]);_0x4552c9['offset']=qs[_0xf33a('0x20')](_0x469741[_0xf33a('0x32')][_0xf33a('0x20')]);}_0x4552c9[_0xf33a('0x39')]=qs[_0xf33a('0x3a')](_0x469741[_0xf33a('0x32')]['sort']);_0x4552c9[_0xf33a('0x3b')]=qs[_0xf33a('0x34')](_['pick'](_0x469741[_0xf33a('0x32')],_0x3068a9[_0xf33a('0x34')]),_0x1246ff);if(_0x469741[_0xf33a('0x32')]['filter']){_0x4552c9[_0xf33a('0x3b')]=_[_0xf33a('0x3c')](_0x4552c9[_0xf33a('0x3b')],{'$or':_[_0xf33a('0x2c')](_0x1246ff,function(_0x3ec562){if(_0x3ec562[_0xf33a('0x30')]!==_0xf33a('0x3d')){var _0x128baf={};_0x128baf[_0x3ec562[_0xf33a('0x29')]]={'$like':'%'+_0x469741['query'][_0xf33a('0x3e')]+'%'};return _0x128baf;}})});}_0x4552c9=_[_0xf33a('0x3c')]({},_0x4552c9,_0x469741['options']);var _0x1e8800={'where':_0x4552c9['where']};return db['CmHopperFinal'][_0xf33a('0x1f')](_0x1e8800)[_0xf33a('0x26')](function(_0x4dada1){_0x1d19ee[_0xf33a('0x1f')]=_0x4dada1;if(_0x469741[_0xf33a('0x32')][_0xf33a('0x3f')]){_0x4552c9['include']=[{'all':!![]}];}return db[_0xf33a('0x2d')][_0xf33a('0x40')](_0x4552c9);})['then'](function(_0x1e9748){_0x1d19ee[_0xf33a('0x41')]=_0x1e9748;return _0x1d19ee;})[_0xf33a('0x26')](respondWithFilteredResult(_0x729fca,_0x4552c9))[_0xf33a('0x42')](handleError(_0x729fca,null));};exports[_0xf33a('0x43')]=function(_0x5044f9,_0x45ae15){var _0x1722e5={'raw':!![],'where':{'id':_0x5044f9[_0xf33a('0x44')]['id']}},_0x2325eb={};_0x2325eb[_0xf33a('0x36')]=_['keys'](db[_0xf33a('0x2d')][_0xf33a('0x2e')]);_0x2325eb[_0xf33a('0x32')]=_['keys'](_0x5044f9[_0xf33a('0x32')]);_0x2325eb[_0xf33a('0x34')]=_[_0xf33a('0x35')](_0x2325eb[_0xf33a('0x36')],_0x2325eb[_0xf33a('0x32')]);_0x1722e5[_0xf33a('0x37')]=_['intersection'](_0x2325eb[_0xf33a('0x36')],qs[_0xf33a('0x38')](_0x5044f9[_0xf33a('0x32')][_0xf33a('0x38')]));_0x1722e5[_0xf33a('0x37')]=_0x1722e5['attributes'][_0xf33a('0x45')]?_0x1722e5[_0xf33a('0x37')]:_0x2325eb[_0xf33a('0x36')];if(_0x5044f9['query'][_0xf33a('0x3f')]){_0x1722e5[_0xf33a('0x46')]=[{'all':!![]}];}_0x1722e5=_['merge']({},_0x1722e5,_0x5044f9['options']);return db[_0xf33a('0x2d')]['find'](_0x1722e5)[_0xf33a('0x26')](handleEntityNotFound(_0x45ae15,null))[_0xf33a('0x26')](respondWithResult(_0x45ae15,null))[_0xf33a('0x42')](handleError(_0x45ae15,null));};exports[_0xf33a('0x47')]=function(_0xecc82f,_0x1a98f9){return db[_0xf33a('0x2d')][_0xf33a('0x47')]()[_0xf33a('0x26')](respondWithResult(_0x1a98f9,null))[_0xf33a('0x42')](handleError(_0x1a98f9,null));};exports[_0xf33a('0x25')]=function(_0x4107b1,_0x190a2b){if(_0x4107b1[_0xf33a('0x48')][_0xf33a('0x49')]){delete _0x4107b1[_0xf33a('0x48')][_0xf33a('0x49')];}return db[_0xf33a('0x2d')][_0xf33a('0x4a')]({'where':{'uniqueid':_0x4107b1[_0xf33a('0x44')]['id']}})[_0xf33a('0x26')](handleEntityNotFound(_0x190a2b,null))[_0xf33a('0x26')](saveUpdates(_0x4107b1[_0xf33a('0x48')],null))[_0xf33a('0x26')](respondWithResult(_0x190a2b,null))[_0xf33a('0x42')](handleError(_0x190a2b,null));};exports[_0xf33a('0x4b')]=function(_0x3bab07,_0x1f7d8c,_0x57815c){return db['CmHopperFinal'][_0xf33a('0x40')]({'raw':![],'where':{'VoiceQueueId':_0x3bab07[_0xf33a('0x44')]['id']},'attributes':[[db['sequelize']['fn'](_0xf33a('0x4c'),db[_0xf33a('0x4d')]['fn']('IF',db[_0xf33a('0x4d')]['literal'](_0xf33a('0x4e')))),_0xf33a('0x4f')],[db[_0xf33a('0x4d')]['fn']('COUNT',db[_0xf33a('0x4d')]['fn']('IF',db['sequelize'][_0xf33a('0x50')](_0xf33a('0x51')))),'noAnswerContacts'],[db['sequelize']['fn'](_0xf33a('0x4c'),db[_0xf33a('0x4d')]['fn']('IF',db[_0xf33a('0x4d')]['literal'](_0xf33a('0x52')))),_0xf33a('0x53')],[db[_0xf33a('0x4d')]['fn'](_0xf33a('0x4c'),db[_0xf33a('0x4d')]['fn']('IF',db[_0xf33a('0x4d')][_0xf33a('0x50')]('`state`\x20=\x208,\x201,\x20null'))),_0xf33a('0x54')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xf33a('0x4d')][_0xf33a('0x50')](_0xf33a('0x55')))),'dropContacts'],[db[_0xf33a('0x4d')]['fn'](_0xf33a('0x4c'),db[_0xf33a('0x4d')]['fn']('IF',db[_0xf33a('0x4d')][_0xf33a('0x50')]('`state`\x20=\x2011\x20,\x201,\x20null'))),'abandonedContacts'],[db['sequelize']['fn'](_0xf33a('0x4c'),db['sequelize']['fn']('IF',db[_0xf33a('0x4d')][_0xf33a('0x50')](_0xf33a('0x56')))),_0xf33a('0x57')],[db[_0xf33a('0x4d')]['fn'](_0xf33a('0x4c'),db['sequelize']['fn']('IF',db[_0xf33a('0x4d')][_0xf33a('0x50')](_0xf33a('0x58')))),'answeringMachine']]})[_0xf33a('0x26')](handleEntityNotFound(_0x1f7d8c,null))[_0xf33a('0x26')](respondWithResult(_0x1f7d8c,null))[_0xf33a('0x42')](handleError(_0x1f7d8c,null));};exports[_0xf33a('0x59')]=function(_0x2f1fef,_0x129229,_0x473484){return db[_0xf33a('0x2d')][_0xf33a('0x40')]({'raw':![],'where':{'CampaignId':_0x2f1fef[_0xf33a('0x44')]['id']},'attributes':[[db[_0xf33a('0x4d')]['fn'](_0xf33a('0x4c'),db[_0xf33a('0x4d')]['fn']('IF',db[_0xf33a('0x4d')]['literal']('`state`\x20=\x200,\x201,\x20null'))),_0xf33a('0x4f')],[db[_0xf33a('0x4d')]['fn'](_0xf33a('0x4c'),db[_0xf33a('0x4d')]['fn']('IF',db[_0xf33a('0x4d')][_0xf33a('0x50')](_0xf33a('0x51')))),_0xf33a('0x5a')],[db[_0xf33a('0x4d')]['fn'](_0xf33a('0x4c'),db[_0xf33a('0x4d')]['fn']('IF',db['sequelize'][_0xf33a('0x50')](_0xf33a('0x52')))),_0xf33a('0x53')],[db[_0xf33a('0x4d')]['fn'](_0xf33a('0x4c'),db[_0xf33a('0x4d')]['fn']('IF',db[_0xf33a('0x4d')][_0xf33a('0x50')](_0xf33a('0x5b')))),'congestionContacts'],[db[_0xf33a('0x4d')]['fn'](_0xf33a('0x4c'),db['sequelize']['fn']('IF',db[_0xf33a('0x4d')][_0xf33a('0x50')](_0xf33a('0x55')))),_0xf33a('0x5c')],[db[_0xf33a('0x4d')]['fn'](_0xf33a('0x4c'),db['sequelize']['fn']('IF',db[_0xf33a('0x4d')][_0xf33a('0x50')](_0xf33a('0x5d')))),_0xf33a('0x5e')],[db[_0xf33a('0x4d')]['fn'](_0xf33a('0x4c'),db[_0xf33a('0x4d')]['fn']('IF',db['sequelize'][_0xf33a('0x50')](_0xf33a('0x56')))),'reCallContacts'],[db['sequelize']['fn']('COUNT',db[_0xf33a('0x4d')]['fn']('IF',db[_0xf33a('0x4d')][_0xf33a('0x50')](_0xf33a('0x58')))),_0xf33a('0x5f')]]})[_0xf33a('0x26')](handleEntityNotFound(_0x129229,null))[_0xf33a('0x26')](respondWithResult(_0x129229,null))[_0xf33a('0x42')](handleError(_0x129229,null));};exports[_0xf33a('0x60')]=function(_0x3bebca,_0x40bb02,_0x10a271){return db['VoiceQueue'][_0xf33a('0x4a')]({'where':{'id':_0x3bebca['params']['id']}})['then'](handleEntityNotFound(_0x40bb02,null))[_0xf33a('0x26')](function(_0x25cc49){var _0x132764;if(_0x25cc49){_0x132764=squel['insert']()['into'](_0xf33a('0x61'))['fromQuery']([_0xf33a('0x62'),_0xf33a('0x63'),_0xf33a('0x64'),_0xf33a('0x65'),_0xf33a('0x66'),'createdAt','updatedAt'],squel[_0xf33a('0x67')]()[_0xf33a('0x68')](_0xf33a('0x69'),_0xf33a('0x62'))['field'](_0xf33a('0x6a'),_0xf33a('0x63'))['field'](_0xf33a('0x6b'),_0xf33a('0x64'))[_0xf33a('0x68')]('ANY_VALUE(ListId)',_0xf33a('0x65'))[_0xf33a('0x68')](_0xf33a('0x6c'),_0xf33a('0x66'))['field'](_0xf33a('0x6a'),_0xf33a('0x6d'))[_0xf33a('0x68')]('NOW()',_0xf33a('0x6e'))[_0xf33a('0x6f')](_0xf33a('0x70'))[_0xf33a('0x3b')](_0xf33a('0x71'),_0x3bebca[_0xf33a('0x44')]['id'][_0xf33a('0x72')]())[_0xf33a('0x3b')](_0xf33a('0x73'),_0x3bebca[_0xf33a('0x48')][_0xf33a('0x74')][_0xf33a('0x72')]())[_0xf33a('0x3b')](_0xf33a('0x75'))[_0xf33a('0x3b')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0xf33a('0x67')]()[_0xf33a('0x68')](_0xf33a('0x62'))[_0xf33a('0x6f')](_0xf33a('0x61'))[_0xf33a('0x3b')](_0xf33a('0x71'),_0x3bebca[_0xf33a('0x44')]['id'][_0xf33a('0x72')]()))[_0xf33a('0x3b')](_0xf33a('0x76'),squel[_0xf33a('0x67')]()[_0xf33a('0x68')](_0xf33a('0x77'))['from'](_0xf33a('0x70'))[_0xf33a('0x3b')](_0xf33a('0x71'),_0x3bebca[_0xf33a('0x44')]['id']['toString']())[_0xf33a('0x3b')](_0xf33a('0x78')))[_0xf33a('0x79')](_0xf33a('0x64')))[_0xf33a('0x72')]();return db[_0xf33a('0x4d')][_0xf33a('0x32')](_0x132764);}return[];})[_0xf33a('0x26')](respondWithResult(_0x40bb02,null))['catch'](handleError(_0x40bb02,null));};exports[_0xf33a('0x7a')]=function(_0x1dfb59,_0x9c0b99,_0x17b2fa){return db['Campaign']['find']({'where':{'id':_0x1dfb59[_0xf33a('0x44')]['id']}})['then'](handleEntityNotFound(_0x9c0b99,null))[_0xf33a('0x26')](function(_0x1595b7){var _0x3d8dbe;if(_0x1595b7){_0x3d8dbe=squel[_0xf33a('0x7b')]()['into']('cm_hopper')[_0xf33a('0x7c')](['phone',_0xf33a('0x63'),_0xf33a('0x64'),_0xf33a('0x65'),_0xf33a('0x7d'),_0xf33a('0x6d'),_0xf33a('0x6e')],squel[_0xf33a('0x67')]()[_0xf33a('0x68')](_0xf33a('0x69'),_0xf33a('0x62'))[_0xf33a('0x68')](_0xf33a('0x6a'),_0xf33a('0x63'))[_0xf33a('0x68')](_0xf33a('0x6b'),_0xf33a('0x64'))['field'](_0xf33a('0x7e'),'ListId')[_0xf33a('0x68')]('ANY_VALUE(CampaignId)','CampaignId')['field'](_0xf33a('0x6a'),_0xf33a('0x6d'))['field'](_0xf33a('0x6a'),_0xf33a('0x6e'))[_0xf33a('0x6f')](_0xf33a('0x70'))[_0xf33a('0x3b')](_0xf33a('0x7f'),_0x1dfb59['params']['id'][_0xf33a('0x72')]())[_0xf33a('0x3b')]('state\x20=\x20?',_0x1dfb59[_0xf33a('0x48')][_0xf33a('0x74')][_0xf33a('0x72')]())['where'](_0xf33a('0x75'))[_0xf33a('0x3b')](_0xf33a('0x76'),squel[_0xf33a('0x67')]()[_0xf33a('0x68')]('phone')[_0xf33a('0x6f')](_0xf33a('0x61'))[_0xf33a('0x3b')](_0xf33a('0x7f'),_0x1dfb59[_0xf33a('0x44')]['id']['toString']()))[_0xf33a('0x3b')](_0xf33a('0x76'),squel[_0xf33a('0x67')]()[_0xf33a('0x68')](_0xf33a('0x77'))['from'](_0xf33a('0x70'))['where']('CampaignId\x20=\x20?',_0x1dfb59[_0xf33a('0x44')]['id']['toString']())[_0xf33a('0x3b')](_0xf33a('0x78')))['group'](_0xf33a('0x64')))[_0xf33a('0x72')]();return db[_0xf33a('0x4d')][_0xf33a('0x32')](_0x3d8dbe);}return[];})[_0xf33a('0x26')](respondWithResult(_0x9c0b99,null))[_0xf33a('0x42')](handleError(_0x9c0b99,null));};exports[_0xf33a('0x80')]=function(_0x4abd84,_0x1205d1,_0x1d83a0){return db[_0xf33a('0x81')][_0xf33a('0x82')]({'where':{'VoiceQueueId':_0x4abd84['body'][_0xf33a('0x66')],'CampaignId':_0x4abd84['body'][_0xf33a('0x7d')],'ContactId':_0x4abd84[_0xf33a('0x48')][_0xf33a('0x64')]}})[_0xf33a('0x26')](handleEntityNotFound(_0x1205d1,null))[_0xf33a('0x26')](function(_0x49c40a){if(_0x49c40a){return _0x49c40a;}return null;})[_0xf33a('0x26')](respondWithResult(_0x1205d1,null))[_0xf33a('0x42')](handleError(_0x1205d1,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(_0x2efd1d,_0x44f696){var _0x1ef3f6=function(_0x25da5f){while(--_0x25da5f){_0x2efd1d['push'](_0x2efd1d['shift']());}};_0x1ef3f6(++_0x44f696);}(_0x90b1,0x1bb));var _0x190b=function(_0x4366e1,_0x312378){_0x4366e1=_0x4366e1-0x0;var _0x265f9b=_0x90b1[_0x4366e1];return _0x265f9b;};'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 6a5541d..820e66a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4686=['define','CmHopperFinal','cm_hopper_final','calleridnum','lodash','util','../../config/logger','moment','bluebird','request-promise','path','./cmHopperFinal.attributes'];(function(_0x543495,_0x498b1c){var _0x3054d9=function(_0x35f3ea){while(--_0x35f3ea){_0x543495['push'](_0x543495['shift']());}};_0x3054d9(++_0x498b1c);}(_0x4686,0x1e4));var _0x6468=function(_0x4b1a1c,_0x393998){_0x4b1a1c=_0x4b1a1c-0x0;var _0x388b54=_0x4686[_0x4b1a1c];return _0x388b54;};'use strict';var _=require(_0x6468('0x0'));var util=require(_0x6468('0x1'));var logger=require(_0x6468('0x2'))('api');var moment=require(_0x6468('0x3'));var BPromise=require(_0x6468('0x4'));var rp=require(_0x6468('0x5'));var fs=require('fs');var path=require(_0x6468('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x6468('0x7'));module['exports']=function(_0x955f92,_0x207219){return _0x955f92[_0x6468('0x8')](_0x6468('0x9'),attributes,{'tableName':_0x6468('0xa'),'paranoid':![],'indexes':[{'name':_0x6468('0xb'),'fields':[_0x6468('0xb')]},{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x221e=['request-promise','path','rimraf','../../config/environment','./cmHopperFinal.attributes','define','CmHopperFinal','calleridnum','uniqueid','lodash','util','../../config/logger','bluebird'];(function(_0x451f45,_0x26ade3){var _0x2a7888=function(_0x1f545b){while(--_0x1f545b){_0x451f45['push'](_0x451f45['shift']());}};_0x2a7888(++_0x26ade3);}(_0x221e,0xb2));var _0xe221=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0x221e[_0x27af45];return _0x18df21;};'use strict';var _=require(_0xe221('0x0'));var util=require(_0xe221('0x1'));var logger=require(_0xe221('0x2'))('api');var moment=require('moment');var BPromise=require(_0xe221('0x3'));var rp=require(_0xe221('0x4'));var fs=require('fs');var path=require(_0xe221('0x5'));var rimraf=require(_0xe221('0x6'));var config=require(_0xe221('0x7'));var attributes=require(_0xe221('0x8'));module['exports']=function(_0x44a2ab,_0x2dd8f5){return _0x44a2ab[_0xe221('0x9')](_0xe221('0xa'),attributes,{'tableName':'cm_hopper_final','paranoid':![],'indexes':[{'name':_0xe221('0xb'),'fields':[_0xe221('0xb')]},{'name':_0xe221('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 17b6cb4..b7ee9e5 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(_0x51eeea,_0x6f7c5d){var _0xcae4c1=function(_0x1e26ee){while(--_0x1e26ee){_0x51eeea['push'](_0x51eeea['shift']());}};_0xcae4c1(++_0x6f7c5d);}(_0x7a54,0x106));var _0x47a5=function(_0x448508,_0x19a9f1){_0x448508=_0x448508-0x0;var _0x55067c=_0x7a54[_0x448508];return _0x55067c;};'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 _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(_0x4532ca,_0x425445){var _0x5007a5=function(_0x13b69a){while(--_0x13b69a){_0x4532ca['push'](_0x4532ca['shift']());}};_0x5007a5(++_0x425445);}(_0x7a54,0x106));var _0x47a5=function(_0xbb0a4f,_0x41d6f2){_0xbb0a4f=_0xbb0a4f-0x0;var _0x111ec5=_0x7a54[_0xbb0a4f];return _0x111ec5;};'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
index 9530cb7..007269c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9962=['isAuthenticated','/describe','describe','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','/checkContactHopper','put','/:id','update','exports','multer','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','get'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x9962,0xb8));var _0x2996=function(_0x1fde51,_0xeaed24){_0x1fde51=_0x1fde51-0x0;var _0x4ee6f9=_0x9962[_0x1fde51];return _0x4ee6f9;};'use strict';var multer=require(_0x2996('0x0'));var util=require('util');var path=require(_0x2996('0x1'));var timeout=require(_0x2996('0x2'));var express=require(_0x2996('0x3'));var router=express['Router']();var fs_extra=require(_0x2996('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x2996('0x5'));var config=require(_0x2996('0x6'));var controller=require('./cmHopperFinal.controller');router[_0x2996('0x7')]('/',auth[_0x2996('0x8')](),controller['index']);router[_0x2996('0x7')](_0x2996('0x9'),auth[_0x2996('0x8')](),controller[_0x2996('0xa')]);router[_0x2996('0x7')]('/:id',auth[_0x2996('0x8')](),controller['show']);router[_0x2996('0x7')](_0x2996('0xb'),auth[_0x2996('0x8')](),controller[_0x2996('0xc')]);router['get'](_0x2996('0xd'),auth[_0x2996('0x8')](),controller[_0x2996('0xe')]);router[_0x2996('0xf')]('/voice/queue/moveContacts/:id',auth[_0x2996('0x8')](),controller[_0x2996('0x10')]);router[_0x2996('0xf')](_0x2996('0x11'),auth['isAuthenticated'](),controller[_0x2996('0x12')]);router['post'](_0x2996('0x13'),auth[_0x2996('0x8')](),controller['checkContactHopper']);router[_0x2996('0x14')](_0x2996('0x15'),auth[_0x2996('0x8')](),controller[_0x2996('0x16')]);module[_0x2996('0x17')]=router;
\ No newline at end of file
+var _0xfb8a=['../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperFinal.controller','get','isAuthenticated','index','/describe','describe','/:id','countContactsQueueCampaignHopperFinal','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','/checkContactHopper','checkContactHopper','put','update','exports','multer','util','path','connect-timeout','Router'];(function(_0x12d4d5,_0x26d337){var _0xb10788=function(_0x491a62){while(--_0x491a62){_0x12d4d5['push'](_0x12d4d5['shift']());}};_0xb10788(++_0x26d337);}(_0xfb8a,0x109));var _0xafb8=function(_0x312ff8,_0x5d7167){_0x312ff8=_0x312ff8-0x0;var _0x4e144b=_0xfb8a[_0x312ff8];return _0x4e144b;};'use strict';var multer=require(_0xafb8('0x0'));var util=require(_0xafb8('0x1'));var path=require(_0xafb8('0x2'));var timeout=require(_0xafb8('0x3'));var express=require('express');var router=express[_0xafb8('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xafb8('0x5'));var interaction=require(_0xafb8('0x6'));var config=require(_0xafb8('0x7'));var controller=require(_0xafb8('0x8'));router[_0xafb8('0x9')]('/',auth[_0xafb8('0xa')](),controller[_0xafb8('0xb')]);router[_0xafb8('0x9')](_0xafb8('0xc'),auth[_0xafb8('0xa')](),controller[_0xafb8('0xd')]);router[_0xafb8('0x9')](_0xafb8('0xe'),auth[_0xafb8('0xa')](),controller['show']);router[_0xafb8('0x9')]('/voice/queue/countAttributes/:id',auth[_0xafb8('0xa')](),controller[_0xafb8('0xf')]);router['get']('/campaign/countAttributes/:id',auth['isAuthenticated'](),controller[_0xafb8('0x10')]);router[_0xafb8('0x11')](_0xafb8('0x12'),auth['isAuthenticated'](),controller[_0xafb8('0x13')]);router['post'](_0xafb8('0x14'),auth[_0xafb8('0xa')](),controller[_0xafb8('0x15')]);router['post'](_0xafb8('0x16'),auth['isAuthenticated'](),controller[_0xafb8('0x17')]);router[_0xafb8('0x18')](_0xafb8('0xe'),auth[_0xafb8('0xa')](),controller[_0xafb8('0x19')]);module[_0xafb8('0x1a')]=router;
\ No newline at end of file
index 33246e6..9411c38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f86=['DATE','BOOLEAN','sequelize','INTEGER','STRING'];(function(_0x3b7a0c,_0xf1a4c2){var _0x3bb70f=function(_0x248b52){while(--_0x248b52){_0x3b7a0c['push'](_0x3b7a0c['shift']());}};_0x3bb70f(++_0xf1a4c2);}(_0x1f86,0x1ec));var _0x61f8=function(_0x1d6472,_0x55284a){_0x1d6472=_0x1d6472-0x0;var _0x5d4516=_0x1f86[_0x1d6472];return _0x5d4516;};'use strict';var Sequelize=require(_0x61f8('0x0'));module['exports']={'state':{'type':Sequelize[_0x61f8('0x1')](0x2)},'statedesc':{'type':Sequelize[_0x61f8('0x2')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0x61f8('0x1')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x61f8('0x1')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x61f8('0x1')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x61f8('0x1')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x61f8('0x2')]},'originatecalleridnum':{'type':Sequelize[_0x61f8('0x2')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x61f8('0x2')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x61f8('0x3')]},'responsetime':{'type':Sequelize[_0x61f8('0x3')]},'answertime':{'type':Sequelize[_0x61f8('0x3')]},'droptime':{'type':Sequelize[_0x61f8('0x3')]},'endtime':{'type':Sequelize[_0x61f8('0x3')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x61f8('0x1')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize[_0x61f8('0x2')]},'campaigntype':{'type':Sequelize[_0x61f8('0x2')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize['STRING']},'amd':{'type':Sequelize[_0x61f8('0x4')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callback':{'type':Sequelize[_0x61f8('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x61f8('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x61f8('0x3')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize[_0x61f8('0x3')]},'edited':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x61f8('0x1')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x61f8('0x1')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x61f8('0x1')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x61f8('0x1')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x29f8=['STRING','BOOLEAN','sequelize','exports','INTEGER','DATE'];(function(_0x2819c0,_0x1ae941){var _0x520749=function(_0x531197){while(--_0x531197){_0x2819c0['push'](_0x2819c0['shift']());}};_0x520749(++_0x1ae941);}(_0x29f8,0x116));var _0x829f=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0x29f8[_0x24237f];return _0x48298e;};'use strict';var Sequelize=require(_0x829f('0x0'));module[_0x829f('0x1')]={'state':{'type':Sequelize[_0x829f('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x829f('0x3')]},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x829f('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x829f('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x829f('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0x829f('0x4')]},'originatecalleridname':{'type':Sequelize[_0x829f('0x4')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x829f('0x4')]},'starttime':{'type':Sequelize[_0x829f('0x3')]},'responsetime':{'type':Sequelize[_0x829f('0x3')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize[_0x829f('0x3')]},'endtime':{'type':Sequelize[_0x829f('0x3')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x829f('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x829f('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x829f('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x829f('0x4')]},'campaign':{'type':Sequelize[_0x829f('0x4')]},'campaigntype':{'type':Sequelize[_0x829f('0x4')]},'membername':{'type':Sequelize[_0x829f('0x4')]},'reason':{'type':Sequelize[_0x829f('0x4')]},'amd':{'type':Sequelize[_0x829f('0x5')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callback':{'type':Sequelize[_0x829f('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x829f('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x829f('0x3')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize[_0x829f('0x3')]},'edited':{'type':Sequelize[_0x829f('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x829f('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x829f('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x829f('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index c005d28..cc5bfe4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce9e=['squel','jsforce','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','destroy','error','stack','name','send','index','map','CmHopperHistory','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','filter','where','merge','includeAll','include','then','rows','catch','show','params','keys','options','find','create','describe','uniqueid','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x439e2c,_0x90906a){var _0xecc02b=function(_0x2df2a2){while(--_0x2df2a2){_0x439e2c['push'](_0x439e2c['shift']());}};_0xecc02b(++_0x90906a);}(_0xce9e,0x87));var _0xece9=function(_0x4cd14a,_0x3c08b4){_0x4cd14a=_0x4cd14a-0x0;var _0x59ac6a=_0xce9e[_0x4cd14a];return _0x59ac6a;};'use strict';var emlformat=require(_0xece9('0x0'));var rimraf=require(_0xece9('0x1'));var zipdir=require(_0xece9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xece9('0x3'));var moment=require(_0xece9('0x4'));var BPromise=require(_0xece9('0x5'));var Mustache=require(_0xece9('0x6'));var util=require(_0xece9('0x7'));var path=require('path');var sox=require(_0xece9('0x8'));var csv=require(_0xece9('0x9'));var ejs=require(_0xece9('0xa'));var fs=require('fs');var fs_extra=require(_0xece9('0xb'));var _=require(_0xece9('0xc'));var squel=require(_0xece9('0xd'));var crypto=require('crypto');var jsforce=require(_0xece9('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xece9('0x9'));var querystring=require(_0xece9('0xf'));var Papa=require('papaparse');var Redis=require(_0xece9('0x10'));var authService=require(_0xece9('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xece9('0x12'));var logger=require(_0xece9('0x13'))(_0xece9('0x14'));var utils=require('../../config/utils');var config=require(_0xece9('0x15'));var licenseUtil=require(_0xece9('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5728a7,_0x981912){_0x981912=_0x981912||0xcc;return function(_0x1ce87d){if(_0x1ce87d){return _0x5728a7[_0xece9('0x17')](_0x981912);}return _0x5728a7[_0xece9('0x18')](_0x981912)[_0xece9('0x19')]();};}function respondWithResult(_0x23e940,_0x3b98ae){_0x3b98ae=_0x3b98ae||0xc8;return function(_0x522526){if(_0x522526){return _0x23e940[_0xece9('0x18')](_0x3b98ae)['json'](_0x522526);}};}function respondWithFilteredResult(_0x2dc988,_0x140680){return function(_0x126faa){if(_0x126faa){var _0x272432=typeof _0x140680[_0xece9('0x1a')]===_0xece9('0x1b')&&typeof _0x140680[_0xece9('0x1c')]==='undefined';var _0xa5dc8b=_0x126faa[_0xece9('0x1d')];var _0x4a82f8=_0x272432?0x0:_0x140680[_0xece9('0x1a')];var _0x5244dd=_0x272432?_0x126faa[_0xece9('0x1d')]:_0x140680[_0xece9('0x1a')]+_0x140680[_0xece9('0x1c')];var _0x12dfb8;if(_0x5244dd>=_0xa5dc8b){_0x5244dd=_0xa5dc8b;_0x12dfb8=0xc8;}else{_0x12dfb8=0xce;}_0x2dc988[_0xece9('0x18')](_0x12dfb8);return _0x2dc988['set'](_0xece9('0x1e'),_0x4a82f8+'-'+_0x5244dd+'/'+_0xa5dc8b)[_0xece9('0x1f')](_0x126faa);}return null;};}function patchUpdates(_0xd01a44){return function(_0x39c670){try{jsonpatch[_0xece9('0x20')](_0x39c670,_0xd01a44,!![]);}catch(_0x1c6332){return BPromise[_0xece9('0x21')](_0x1c6332);}return _0x39c670[_0xece9('0x22')]();};}function saveUpdates(_0x260382,_0x55498c){return function(_0x506225){if(_0x506225){return _0x506225[_0xece9('0x23')](_0x260382)['then'](function(_0xb8938b){return _0xb8938b;});}return null;};}function removeEntity(_0x2e51ff,_0x48b411){return function(_0x47adf2){if(_0x47adf2){return _0x47adf2[_0xece9('0x24')]()['then'](function(){_0x2e51ff[_0xece9('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5de774,_0x5d76b8){return function(_0x1c4e12){if(!_0x1c4e12){_0x5de774['sendStatus'](0x194);}return _0x1c4e12;};}function handleError(_0x96fe96,_0x5b35dc){_0x5b35dc=_0x5b35dc||0x1f4;return function(_0x5420eb){logger[_0xece9('0x25')](_0x5420eb[_0xece9('0x26')]);if(_0x5420eb[_0xece9('0x27')]){delete _0x5420eb[_0xece9('0x27')];}_0x96fe96[_0xece9('0x18')](_0x5b35dc)[_0xece9('0x28')](_0x5420eb);};}exports[_0xece9('0x29')]=function(_0x5577eb,_0x36d7b5){var _0x352dfa={},_0x45573a={},_0x49abe7={'count':0x0,'rows':[]};var _0x5a82ec=_[_0xece9('0x2a')](db[_0xece9('0x2b')][_0xece9('0x2c')],function(_0x2a91ae){return{'name':_0x2a91ae[_0xece9('0x2d')],'type':_0x2a91ae['type'][_0xece9('0x2e')]};});_0x45573a[_0xece9('0x2f')]=_[_0xece9('0x2a')](_0x5a82ec,'name');_0x45573a[_0xece9('0x30')]=_['keys'](_0x5577eb[_0xece9('0x30')]);_0x45573a[_0xece9('0x31')]=_[_0xece9('0x32')](_0x45573a[_0xece9('0x2f')],_0x45573a[_0xece9('0x30')]);_0x352dfa[_0xece9('0x33')]=_[_0xece9('0x32')](_0x45573a[_0xece9('0x2f')],qs['fields'](_0x5577eb[_0xece9('0x30')][_0xece9('0x34')]));_0x352dfa['attributes']=_0x352dfa[_0xece9('0x33')][_0xece9('0x35')]?_0x352dfa[_0xece9('0x33')]:_0x45573a[_0xece9('0x2f')];if(!_0x5577eb[_0xece9('0x30')]['hasOwnProperty'](_0xece9('0x36'))){_0x352dfa[_0xece9('0x1c')]=qs[_0xece9('0x1c')](_0x5577eb[_0xece9('0x30')][_0xece9('0x1c')]);_0x352dfa['offset']=qs[_0xece9('0x1a')](_0x5577eb['query'][_0xece9('0x1a')]);}_0x352dfa[_0xece9('0x37')]=qs['sort'](_0x5577eb[_0xece9('0x30')][_0xece9('0x38')]);_0x352dfa['where']=qs[_0xece9('0x31')](_['pick'](_0x5577eb[_0xece9('0x30')],_0x45573a[_0xece9('0x31')]),_0x5a82ec);if(_0x5577eb[_0xece9('0x30')][_0xece9('0x39')]){_0x352dfa[_0xece9('0x3a')]=_['merge'](_0x352dfa[_0xece9('0x3a')],{'$or':_[_0xece9('0x2a')](_0x5a82ec,function(_0x494f09){if(_0x494f09['type']!=='VIRTUAL'){var _0x4a8cae={};_0x4a8cae[_0x494f09['name']]={'$like':'%'+_0x5577eb[_0xece9('0x30')][_0xece9('0x39')]+'%'};return _0x4a8cae;}})});}_0x352dfa=_[_0xece9('0x3b')]({},_0x352dfa,_0x5577eb['options']);var _0x449162={'where':_0x352dfa['where']};return db[_0xece9('0x2b')][_0xece9('0x1d')](_0x449162)['then'](function(_0x2ade7b){_0x49abe7[_0xece9('0x1d')]=_0x2ade7b;if(_0x5577eb[_0xece9('0x30')][_0xece9('0x3c')]){_0x352dfa[_0xece9('0x3d')]=[{'all':!![]}];}return db[_0xece9('0x2b')]['findAll'](_0x352dfa);})[_0xece9('0x3e')](function(_0x15620d){_0x49abe7[_0xece9('0x3f')]=_0x15620d;return _0x49abe7;})[_0xece9('0x3e')](respondWithFilteredResult(_0x36d7b5,_0x352dfa))[_0xece9('0x40')](handleError(_0x36d7b5,null));};exports[_0xece9('0x41')]=function(_0x1132e8,_0x10ca36){var _0x15d738={'raw':!![],'where':{'id':_0x1132e8[_0xece9('0x42')]['id']}},_0x3ea478={};_0x3ea478[_0xece9('0x2f')]=_[_0xece9('0x43')](db[_0xece9('0x2b')][_0xece9('0x2c')]);_0x3ea478[_0xece9('0x30')]=_[_0xece9('0x43')](_0x1132e8['query']);_0x3ea478[_0xece9('0x31')]=_[_0xece9('0x32')](_0x3ea478[_0xece9('0x2f')],_0x3ea478['query']);_0x15d738[_0xece9('0x33')]=_[_0xece9('0x32')](_0x3ea478['model'],qs[_0xece9('0x34')](_0x1132e8[_0xece9('0x30')]['fields']));_0x15d738['attributes']=_0x15d738[_0xece9('0x33')][_0xece9('0x35')]?_0x15d738[_0xece9('0x33')]:_0x3ea478[_0xece9('0x2f')];if(_0x1132e8['query'][_0xece9('0x3c')]){_0x15d738[_0xece9('0x3d')]=[{'all':!![]}];}_0x15d738=_[_0xece9('0x3b')]({},_0x15d738,_0x1132e8[_0xece9('0x44')]);return db['CmHopperHistory'][_0xece9('0x45')](_0x15d738)['then'](handleEntityNotFound(_0x10ca36,null))['then'](respondWithResult(_0x10ca36,null))['catch'](handleError(_0x10ca36,null));};exports['create']=function(_0x28ef28,_0x370ff9){return db[_0xece9('0x2b')][_0xece9('0x46')](_0x28ef28['body'],{})[_0xece9('0x3e')](respondWithResult(_0x370ff9,0xc9))['catch'](handleError(_0x370ff9,null));};exports[_0xece9('0x47')]=function(_0x5d23c7,_0x450c5e){return db[_0xece9('0x2b')]['describe']()[_0xece9('0x3e')](respondWithResult(_0x450c5e,null))[_0xece9('0x40')](handleError(_0x450c5e,null));};exports[_0xece9('0x23')]=function(_0xe226b2,_0x5da60e){if(_0xe226b2['body'][_0xece9('0x48')]){delete _0xe226b2[_0xece9('0x49')][_0xece9('0x48')];}return db['CmHopperHistory'][_0xece9('0x45')]({'where':{'uniqueid':_0xe226b2[_0xece9('0x42')]['id']}})[_0xece9('0x3e')](handleEntityNotFound(_0x5da60e,null))[_0xece9('0x3e')](saveUpdates(_0xe226b2[_0xece9('0x49')],null))[_0xece9('0x3e')](respondWithResult(_0x5da60e,null))[_0xece9('0x40')](handleError(_0x5da60e,null));};
\ No newline at end of file
+var _0x4f01=['fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','rows','catch','show','params','keys','rawAttributes','find','create','body','describe','uniqueid','eml-format','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','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','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','save','update','then','error','stack','name','send','index','CmHopperHistory','fieldName','type','model','map','query','filters','intersection','attributes'];(function(_0x4bf482,_0xbc26d0){var _0x5bf36e=function(_0x2678ad){while(--_0x2678ad){_0x4bf482['push'](_0x4bf482['shift']());}};_0x5bf36e(++_0xbc26d0);}(_0x4f01,0x1e0));var _0x14f0=function(_0x1dad80,_0x8c40e1){_0x1dad80=_0x1dad80-0x0;var _0x26fc90=_0x4f01[_0x1dad80];return _0x26fc90;};'use strict';var emlformat=require(_0x14f0('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x14f0('0x1'));var moment=require(_0x14f0('0x2'));var BPromise=require(_0x14f0('0x3'));var Mustache=require(_0x14f0('0x4'));var util=require(_0x14f0('0x5'));var path=require(_0x14f0('0x6'));var sox=require(_0x14f0('0x7'));var csv=require(_0x14f0('0x8'));var ejs=require(_0x14f0('0x9'));var fs=require('fs');var fs_extra=require(_0x14f0('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x14f0('0xb'));var jsforce=require(_0x14f0('0xc'));var deskjs=require(_0x14f0('0xd'));var toCsv=require(_0x14f0('0x8'));var querystring=require(_0x14f0('0xe'));var Papa=require(_0x14f0('0xf'));var Redis=require(_0x14f0('0x10'));var authService=require(_0x14f0('0x11'));var qs=require(_0x14f0('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x14f0('0x13'));var logger=require(_0x14f0('0x14'))('api');var utils=require(_0x14f0('0x15'));var config=require(_0x14f0('0x16'));var licenseUtil=require(_0x14f0('0x17'));var db=require(_0x14f0('0x18'))['db'];function respondWithStatusCode(_0x381f31,_0x11f894){_0x11f894=_0x11f894||0xcc;return function(_0x257dae){if(_0x257dae){return _0x381f31[_0x14f0('0x19')](_0x11f894);}return _0x381f31[_0x14f0('0x1a')](_0x11f894)[_0x14f0('0x1b')]();};}function respondWithResult(_0x1a9f63,_0x295d1b){_0x295d1b=_0x295d1b||0xc8;return function(_0x4c0c0b){if(_0x4c0c0b){return _0x1a9f63[_0x14f0('0x1a')](_0x295d1b)[_0x14f0('0x1c')](_0x4c0c0b);}};}function respondWithFilteredResult(_0x5034d4,_0x142076){return function(_0x200a0d){if(_0x200a0d){var _0x19ebfe=typeof _0x142076[_0x14f0('0x1d')]===_0x14f0('0x1e')&&typeof _0x142076[_0x14f0('0x1f')]===_0x14f0('0x1e');var _0x5216d3=_0x200a0d[_0x14f0('0x20')];var _0x12f312=_0x19ebfe?0x0:_0x142076['offset'];var _0xefed32=_0x19ebfe?_0x200a0d['count']:_0x142076[_0x14f0('0x1d')]+_0x142076[_0x14f0('0x1f')];var _0x55b340;if(_0xefed32>=_0x5216d3){_0xefed32=_0x5216d3;_0x55b340=0xc8;}else{_0x55b340=0xce;}_0x5034d4[_0x14f0('0x1a')](_0x55b340);return _0x5034d4['set']('Content-Range',_0x12f312+'-'+_0xefed32+'/'+_0x5216d3)[_0x14f0('0x1c')](_0x200a0d);}return null;};}function patchUpdates(_0x3412fc){return function(_0x2e67e4){try{jsonpatch[_0x14f0('0x21')](_0x2e67e4,_0x3412fc,!![]);}catch(_0xd310d9){return BPromise[_0x14f0('0x22')](_0xd310d9);}return _0x2e67e4[_0x14f0('0x23')]();};}function saveUpdates(_0x1ffd7f,_0x299c00){return function(_0x5afef4){if(_0x5afef4){return _0x5afef4[_0x14f0('0x24')](_0x1ffd7f)[_0x14f0('0x25')](function(_0x21f086){return _0x21f086;});}return null;};}function removeEntity(_0x321b25,_0x312d20){return function(_0x567da8){if(_0x567da8){return _0x567da8['destroy']()[_0x14f0('0x25')](function(){_0x321b25['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x27b692,_0x2c49c3){return function(_0x2a8a25){if(!_0x2a8a25){_0x27b692[_0x14f0('0x19')](0x194);}return _0x2a8a25;};}function handleError(_0x292cc6,_0x364cbd){_0x364cbd=_0x364cbd||0x1f4;return function(_0x5843a5){logger[_0x14f0('0x26')](_0x5843a5[_0x14f0('0x27')]);if(_0x5843a5[_0x14f0('0x28')]){delete _0x5843a5[_0x14f0('0x28')];}_0x292cc6[_0x14f0('0x1a')](_0x364cbd)[_0x14f0('0x29')](_0x5843a5);};}exports[_0x14f0('0x2a')]=function(_0x194847,_0x542085){var _0x101bb8={},_0x2f6d78={},_0x16a451={'count':0x0,'rows':[]};var _0x530443=_['map'](db[_0x14f0('0x2b')]['rawAttributes'],function(_0x49d1bf){return{'name':_0x49d1bf[_0x14f0('0x2c')],'type':_0x49d1bf[_0x14f0('0x2d')]['key']};});_0x2f6d78[_0x14f0('0x2e')]=_[_0x14f0('0x2f')](_0x530443,_0x14f0('0x28'));_0x2f6d78[_0x14f0('0x30')]=_['keys'](_0x194847[_0x14f0('0x30')]);_0x2f6d78[_0x14f0('0x31')]=_[_0x14f0('0x32')](_0x2f6d78[_0x14f0('0x2e')],_0x2f6d78[_0x14f0('0x30')]);_0x101bb8[_0x14f0('0x33')]=_[_0x14f0('0x32')](_0x2f6d78['model'],qs[_0x14f0('0x34')](_0x194847['query'][_0x14f0('0x34')]));_0x101bb8[_0x14f0('0x33')]=_0x101bb8[_0x14f0('0x33')][_0x14f0('0x35')]?_0x101bb8[_0x14f0('0x33')]:_0x2f6d78[_0x14f0('0x2e')];if(!_0x194847['query'][_0x14f0('0x36')](_0x14f0('0x37'))){_0x101bb8['limit']=qs[_0x14f0('0x1f')](_0x194847[_0x14f0('0x30')][_0x14f0('0x1f')]);_0x101bb8[_0x14f0('0x1d')]=qs['offset'](_0x194847[_0x14f0('0x30')][_0x14f0('0x1d')]);}_0x101bb8[_0x14f0('0x38')]=qs[_0x14f0('0x39')](_0x194847['query']['sort']);_0x101bb8[_0x14f0('0x3a')]=qs['filters'](_['pick'](_0x194847[_0x14f0('0x30')],_0x2f6d78[_0x14f0('0x31')]),_0x530443);if(_0x194847['query']['filter']){_0x101bb8[_0x14f0('0x3a')]=_[_0x14f0('0x3b')](_0x101bb8[_0x14f0('0x3a')],{'$or':_[_0x14f0('0x2f')](_0x530443,function(_0x31deca){if(_0x31deca['type']!==_0x14f0('0x3c')){var _0x4890b6={};_0x4890b6[_0x31deca[_0x14f0('0x28')]]={'$like':'%'+_0x194847[_0x14f0('0x30')][_0x14f0('0x3d')]+'%'};return _0x4890b6;}})});}_0x101bb8=_[_0x14f0('0x3b')]({},_0x101bb8,_0x194847[_0x14f0('0x3e')]);var _0x59487f={'where':_0x101bb8['where']};return db[_0x14f0('0x2b')][_0x14f0('0x20')](_0x59487f)[_0x14f0('0x25')](function(_0x266974){_0x16a451[_0x14f0('0x20')]=_0x266974;if(_0x194847[_0x14f0('0x30')][_0x14f0('0x3f')]){_0x101bb8[_0x14f0('0x40')]=[{'all':!![]}];}return db[_0x14f0('0x2b')]['findAll'](_0x101bb8);})['then'](function(_0x51f691){_0x16a451[_0x14f0('0x41')]=_0x51f691;return _0x16a451;})[_0x14f0('0x25')](respondWithFilteredResult(_0x542085,_0x101bb8))[_0x14f0('0x42')](handleError(_0x542085,null));};exports[_0x14f0('0x43')]=function(_0x1bc23a,_0x27c31a){var _0x418023={'raw':!![],'where':{'id':_0x1bc23a[_0x14f0('0x44')]['id']}},_0x142a0d={};_0x142a0d['model']=_[_0x14f0('0x45')](db['CmHopperHistory'][_0x14f0('0x46')]);_0x142a0d['query']=_[_0x14f0('0x45')](_0x1bc23a['query']);_0x142a0d[_0x14f0('0x31')]=_[_0x14f0('0x32')](_0x142a0d[_0x14f0('0x2e')],_0x142a0d[_0x14f0('0x30')]);_0x418023[_0x14f0('0x33')]=_[_0x14f0('0x32')](_0x142a0d[_0x14f0('0x2e')],qs[_0x14f0('0x34')](_0x1bc23a['query']['fields']));_0x418023[_0x14f0('0x33')]=_0x418023['attributes'][_0x14f0('0x35')]?_0x418023['attributes']:_0x142a0d[_0x14f0('0x2e')];if(_0x1bc23a[_0x14f0('0x30')][_0x14f0('0x3f')]){_0x418023[_0x14f0('0x40')]=[{'all':!![]}];}_0x418023=_[_0x14f0('0x3b')]({},_0x418023,_0x1bc23a[_0x14f0('0x3e')]);return db['CmHopperHistory'][_0x14f0('0x47')](_0x418023)[_0x14f0('0x25')](handleEntityNotFound(_0x27c31a,null))['then'](respondWithResult(_0x27c31a,null))[_0x14f0('0x42')](handleError(_0x27c31a,null));};exports[_0x14f0('0x48')]=function(_0x501ac5,_0x456bef){return db['CmHopperHistory'][_0x14f0('0x48')](_0x501ac5[_0x14f0('0x49')],{})[_0x14f0('0x25')](respondWithResult(_0x456bef,0xc9))['catch'](handleError(_0x456bef,null));};exports['describe']=function(_0x45f5f3,_0x569eab){return db[_0x14f0('0x2b')][_0x14f0('0x4a')]()[_0x14f0('0x25')](respondWithResult(_0x569eab,null))['catch'](handleError(_0x569eab,null));};exports[_0x14f0('0x24')]=function(_0x2d2870,_0x5c1c41){if(_0x2d2870[_0x14f0('0x49')][_0x14f0('0x4b')]){delete _0x2d2870[_0x14f0('0x49')][_0x14f0('0x4b')];}return db[_0x14f0('0x2b')][_0x14f0('0x47')]({'where':{'uniqueid':_0x2d2870[_0x14f0('0x44')]['id']}})['then'](handleEntityNotFound(_0x5c1c41,null))[_0x14f0('0x25')](saveUpdates(_0x2d2870[_0x14f0('0x49')],null))[_0x14f0('0x25')](respondWithResult(_0x5c1c41,null))[_0x14f0('0x42')](handleError(_0x5c1c41,null));};
\ No newline at end of file
index a90bfa1..d481fe2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe35d=['cm_hopper_history','endtime','uniqueid','lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperHistory.attributes','exports','CmHopperHistory'];(function(_0xd578cb,_0x2167a3){var _0x775533=function(_0x1c340d){while(--_0x1c340d){_0xd578cb['push'](_0xd578cb['shift']());}};_0x775533(++_0x2167a3);}(_0xe35d,0xd5));var _0xde35=function(_0xbda54b,_0xc6693e){_0xbda54b=_0xbda54b-0x0;var _0x36d287=_0xe35d[_0xbda54b];return _0x36d287;};'use strict';var _=require(_0xde35('0x0'));var util=require(_0xde35('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xde35('0x2'));var BPromise=require(_0xde35('0x3'));var rp=require(_0xde35('0x4'));var fs=require('fs');var path=require(_0xde35('0x5'));var rimraf=require(_0xde35('0x6'));var config=require(_0xde35('0x7'));var attributes=require(_0xde35('0x8'));module[_0xde35('0x9')]=function(_0x20320f,_0x427941){return _0x20320f['define'](_0xde35('0xa'),attributes,{'tableName':_0xde35('0xb'),'paranoid':![],'indexes':[{'name':_0xde35('0xc'),'fields':[_0xde35('0xc')]},{'name':_0xde35('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf34f=['uniqueid','lodash','../../config/logger','moment','request-promise','path','rimraf','./cmHopperHistory.attributes','define','cm_hopper_history','endtime'];(function(_0x4639e4,_0x244ecf){var _0x5d129e=function(_0x5e4198){while(--_0x5e4198){_0x4639e4['push'](_0x4639e4['shift']());}};_0x5d129e(++_0x244ecf);}(_0xf34f,0x64));var _0xff34=function(_0x492a85,_0x3d8f49){_0x492a85=_0x492a85-0x0;var _0xb29da=_0xf34f[_0x492a85];return _0xb29da;};'use strict';var _=require(_0xff34('0x0'));var util=require('util');var logger=require(_0xff34('0x1'))('api');var moment=require(_0xff34('0x2'));var BPromise=require('bluebird');var rp=require(_0xff34('0x3'));var fs=require('fs');var path=require(_0xff34('0x4'));var rimraf=require(_0xff34('0x5'));var config=require('../../config/environment');var attributes=require(_0xff34('0x6'));module['exports']=function(_0x1f436c,_0x5ba057){return _0x1f436c[_0xff34('0x7')]('CmHopperHistory',attributes,{'tableName':_0xff34('0x8'),'paranoid':![],'indexes':[{'name':_0xff34('0x9'),'fields':['endtime']},{'name':'uniqueid','fields':[_0xff34('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 45ae5ce..68a1e12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d1b=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client','http','then','info','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','CmHopperHistory,\x20%s,\x20%s','message','catch','CmHopperHistory','create','body','options','CreateCmHopperHistory','findAll','where','sequelize','COUNT','predictiveIntervalTotalCalls','literal','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','AVG','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','AvgHandleTime','GetVoiceQueueHopperHistory','campaign','name','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','`state`\x20=\x204,\x201,\x20null','outboundAnswerCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','outboundAnswerAgiCallsDay','outboundReCallsDay','raw','col','ivrTotalCallsDays','ivrAnswerCallsDay','GetCampaignHopperHistory','lodash','util','moment','bluebird'];(function(_0x15fc96,_0x35b859){var _0x118f6f=function(_0x4ee08c){while(--_0x4ee08c){_0x15fc96['push'](_0x15fc96['shift']());}};_0x118f6f(++_0x35b859);}(_0x1d1b,0x110));var _0xb1d1=function(_0x58c8be,_0x458021){_0x58c8be=_0x58c8be-0x0;var _0x308502=_0x1d1b[_0x58c8be];return _0x308502;};'use strict';var _=require(_0xb1d1('0x0'));var util=require(_0xb1d1('0x1'));var moment=require(_0xb1d1('0x2'));var BPromise=require(_0xb1d1('0x3'));var rs=require(_0xb1d1('0x4'));var fs=require('fs');var Redis=require(_0xb1d1('0x5'));var db=require(_0xb1d1('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xb1d1('0x7'))(_0xb1d1('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xb1d1('0x9')][_0xb1d1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x32716b,_0x1f7042,_0x30babe){return new BPromise(function(_0x28dbad,_0x2b5013){return client['request'](_0x32716b,_0x30babe)[_0xb1d1('0xb')](function(_0x3e800c){logger[_0xb1d1('0xc')]('CmHopperHistory,\x20%s,\x20%s',_0x1f7042,_0xb1d1('0xd'));logger[_0xb1d1('0xe')](_0xb1d1('0xf'),_0x1f7042,_0xb1d1('0xd'),JSON[_0xb1d1('0x10')](_0x3e800c));if(_0x3e800c[_0xb1d1('0x11')]){if(_0x3e800c[_0xb1d1('0x11')][_0xb1d1('0x12')]===0x1f4){logger['error'](_0xb1d1('0x13'),_0x1f7042,_0x3e800c[_0xb1d1('0x11')]['message']);return _0x2b5013(_0x3e800c['error'][_0xb1d1('0x14')]);}logger['error'](_0xb1d1('0x13'),_0x1f7042,_0x3e800c[_0xb1d1('0x11')][_0xb1d1('0x14')]);return _0x28dbad(_0x3e800c[_0xb1d1('0x11')]['message']);}else{logger[_0xb1d1('0xc')](_0xb1d1('0x13'),_0x1f7042,_0xb1d1('0xd'));_0x28dbad(_0x3e800c['result'][_0xb1d1('0x14')]);}})[_0xb1d1('0x15')](function(_0x2fc136){logger[_0xb1d1('0x11')](_0xb1d1('0x13'),_0x1f7042,_0x2fc136);_0x2b5013(_0x2fc136);});});}exports['CreateCmHopperHistory']=function(_0x1a2891){var _0x30b6b8=this;return new Promise(function(_0x29ea0c,_0x1cfc98){return db[_0xb1d1('0x16')][_0xb1d1('0x17')](_0x1a2891[_0xb1d1('0x18')],{'raw':_0x1a2891[_0xb1d1('0x19')]?_0x1a2891[_0xb1d1('0x19')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x3c1dc2){logger[_0xb1d1('0xc')](_0xb1d1('0x1a'),_0x1a2891);logger[_0xb1d1('0xe')](_0xb1d1('0x1a'),_0x1a2891,JSON['stringify'](_0x3c1dc2));_0x29ea0c(_0x3c1dc2);})[_0xb1d1('0x15')](function(_0x1ed21a){logger['error'](_0xb1d1('0x1a'),_0x1ed21a['message'],_0x1a2891);_0x1cfc98(_0x30b6b8['error'](0x1f4,_0x1ed21a[_0xb1d1('0x14')]));});});};exports['AvgHandleTime']=function(_0x36f5f8){var _0x338529=this;return new Promise(function(_0x471ec0,_0x2f3da6){return db[_0xb1d1('0x16')][_0xb1d1('0x1b')]({'raw':_0x36f5f8[_0xb1d1('0x19')]?_0x36f5f8[_0xb1d1('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x36f5f8['options']?_0x36f5f8[_0xb1d1('0x19')][_0xb1d1('0x1c')]||null:null,'attributes':[[db[_0xb1d1('0x1d')]['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['col']('id')),_0xb1d1('0x1f')],[db['sequelize']['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')][_0xb1d1('0x20')]('`state`\x20=\x204,\x201,\x20null'))),_0xb1d1('0x21')],[db['sequelize']['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')]['literal'](_0xb1d1('0x22')))),_0xb1d1('0x23')],[db[_0xb1d1('0x1d')]['fn']('COUNT',db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')][_0xb1d1('0x20')]('`state`\x20=\x2011,\x201,\x20null'))),_0xb1d1('0x24')],[db[_0xb1d1('0x1d')]['fn'](_0xb1d1('0x25'),db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')][_0xb1d1('0x20')]('`state`\x20=\x204,\x20`holdtime`,\x20null'))),_0xb1d1('0x26')],[db[_0xb1d1('0x1d')]['fn']('AVG',db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')]['literal']('`state`\x20=\x204,\x20`talktime`,\x20null'))),_0xb1d1('0x27')]]})[_0xb1d1('0xb')](function(_0x4788e2){logger[_0xb1d1('0xc')](_0xb1d1('0x28'),_0x36f5f8);logger['debug'](_0xb1d1('0x28'),_0x36f5f8,JSON[_0xb1d1('0x10')](_0x4788e2));_0x471ec0(_0x4788e2);})['catch'](function(_0x529b93){logger[_0xb1d1('0x11')](_0xb1d1('0x28'),_0x529b93['message'],_0x36f5f8);_0x2f3da6(_0x338529['error'](0x1f4,_0x529b93['message']));});});};exports[_0xb1d1('0x29')]=function(_0x12daf0){var _0x2d2e37=this;return new Promise(function(_0x21999e,_0x1109ab){return db[_0xb1d1('0x16')][_0xb1d1('0x1b')]({'raw':_0x12daf0[_0xb1d1('0x19')]?_0x12daf0['options']['raw']===undefined?!![]:![]:!![],'where':_0x12daf0[_0xb1d1('0x19')]?_0x12daf0[_0xb1d1('0x19')][_0xb1d1('0x1c')]||null:null,'attributes':[[_0xb1d1('0x2a'),_0xb1d1('0x2b')],[db[_0xb1d1('0x1d')]['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['fn']('IF',db['sequelize']['literal'](_0xb1d1('0x2c')))),_0xb1d1('0x2d')],[db[_0xb1d1('0x1d')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xb1d1('0x1d')][_0xb1d1('0x20')](_0xb1d1('0x2e')))),_0xb1d1('0x2f')],[db[_0xb1d1('0x1d')]['fn'](_0xb1d1('0x1e'),db['sequelize']['fn']('IF',db['sequelize'][_0xb1d1('0x20')](_0xb1d1('0x30')))),_0xb1d1('0x31')],[db['sequelize']['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')][_0xb1d1('0x20')]('`state`\x20=\x205,\x201,\x20null'))),'outboundBusyCallsDay'],[db['sequelize']['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')]['literal'](_0xb1d1('0x32')))),_0xb1d1('0x33')],[db[_0xb1d1('0x1d')]['fn']('COUNT',db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')][_0xb1d1('0x20')](_0xb1d1('0x34')))),_0xb1d1('0x35')],[db[_0xb1d1('0x1d')]['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')]['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),_0xb1d1('0x36')],[db[_0xb1d1('0x1d')]['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')][_0xb1d1('0x20')](_0xb1d1('0x37')))),_0xb1d1('0x38')],[db[_0xb1d1('0x1d')]['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['fn']('IF',db['sequelize']['literal'](_0xb1d1('0x39')))),'outboundBlacklistCallsDay'],[db[_0xb1d1('0x1d')]['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')][_0xb1d1('0x20')](_0xb1d1('0x3a')))),_0xb1d1('0x3b')],[db[_0xb1d1('0x1d')]['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')][_0xb1d1('0x20')](_0xb1d1('0x3c')))),_0xb1d1('0x3d')],[db[_0xb1d1('0x1d')]['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')][_0xb1d1('0x20')]('`state`\x20=\x2016,\x201,\x20null'))),_0xb1d1('0x3e')],[db[_0xb1d1('0x1d')]['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['fn']('IF',db['sequelize'][_0xb1d1('0x20')]('`state`\x20=\x2020,\x201,\x20null'))),_0xb1d1('0x3d')],[db[_0xb1d1('0x1d')]['fn']('COUNT',db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')]['literal']('`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null'))),_0xb1d1('0x3f')]],'group':[_0xb1d1('0x2a')]})[_0xb1d1('0xb')](function(_0x40ebe9){logger[_0xb1d1('0xc')](_0xb1d1('0x29'),_0x12daf0);logger['debug'](_0xb1d1('0x29'),_0x12daf0,JSON[_0xb1d1('0x10')](_0x40ebe9));_0x21999e(_0x40ebe9);})[_0xb1d1('0x15')](function(_0xbb1338){logger[_0xb1d1('0x11')](_0xb1d1('0x29'),_0xbb1338['message'],_0x12daf0);_0x1109ab(_0x2d2e37[_0xb1d1('0x11')](0x1f4,_0xbb1338['message']));});});};exports['GetCampaignHopperHistory']=function(_0x34efd7){var _0x4ccd07=this;return new Promise(function(_0x45c872,_0x4dee95){return db['CmHopperHistory'][_0xb1d1('0x1b')]({'raw':_0x34efd7[_0xb1d1('0x19')]?_0x34efd7[_0xb1d1('0x19')][_0xb1d1('0x40')]===undefined?!![]:![]:!![],'where':_0x34efd7['options']?_0x34efd7[_0xb1d1('0x19')]['where']||null:null,'attributes':[[_0xb1d1('0x2a'),'name'],[db['sequelize']['fn'](_0xb1d1('0x1e'),db['sequelize'][_0xb1d1('0x41')]('id')),_0xb1d1('0x42')],[db[_0xb1d1('0x1d')]['fn'](_0xb1d1('0x1e'),db[_0xb1d1('0x1d')]['fn']('IF',db[_0xb1d1('0x1d')]['literal'](_0xb1d1('0x30')))),_0xb1d1('0x43')]],'group':['campaign']})[_0xb1d1('0xb')](function(_0x2c9c34){logger['info'](_0xb1d1('0x44'),_0x34efd7);logger['debug'](_0xb1d1('0x44'),_0x34efd7,JSON[_0xb1d1('0x10')](_0x2c9c34));_0x45c872(_0x2c9c34);})[_0xb1d1('0x15')](function(_0x40ef99){logger[_0xb1d1('0x11')]('GetCampaignHopperHistory',_0x40ef99[_0xb1d1('0x14')],_0x34efd7);_0x4dee95(_0x4ccd07[_0xb1d1('0x11')](0x1f4,_0x40ef99[_0xb1d1('0x14')]));});});};
\ No newline at end of file
+var _0xee4e=['outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','`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','name','GetCampaignHopperHistory','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','CmHopperHistory,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','CreateCmHopperHistory','create','body','options','raw','then','AvgHandleTime','findAll','where','sequelize','COUNT','col','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','literal','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','AVG','`state`\x20=\x204,\x20`talktime`,\x20null','GetVoiceQueueHopperHistory','CmHopperHistory','campaign','`state`\x20=\x200,\x201,\x20null','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x204,\x201,\x20null','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2011\x20,\x201,\x20null'];(function(_0x33e114,_0x77cc5a){var _0x17e9b6=function(_0xd1cb2f){while(--_0xd1cb2f){_0x33e114['push'](_0x33e114['shift']());}};_0x17e9b6(++_0x77cc5a);}(_0xee4e,0x122));var _0xeee4=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xee4e[_0xf50820];return _0x2a9b10;};'use strict';var _=require(_0xeee4('0x0'));var util=require(_0xeee4('0x1'));var moment=require(_0xeee4('0x2'));var BPromise=require('bluebird');var rs=require(_0xeee4('0x3'));var fs=require('fs');var Redis=require(_0xeee4('0x4'));var db=require(_0xeee4('0x5'))['db'];var utils=require(_0xeee4('0x6'));var logger=require(_0xeee4('0x7'))(_0xeee4('0x8'));var config=require(_0xeee4('0x9'));var jayson=require(_0xeee4('0xa'));var client=jayson['client'][_0xeee4('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x148296,_0x14c3d2,_0x593262){return new BPromise(function(_0x25f0ed,_0xe75ab8){return client[_0xeee4('0xc')](_0x148296,_0x593262)['then'](function(_0x45ea79){logger[_0xeee4('0xd')](_0xeee4('0xe'),_0x14c3d2,'request\x20sent');logger[_0xeee4('0xf')]('CmHopperHistory,\x20%s,\x20%s,\x20%s',_0x14c3d2,_0xeee4('0x10'),JSON[_0xeee4('0x11')](_0x45ea79));if(_0x45ea79[_0xeee4('0x12')]){if(_0x45ea79['error'][_0xeee4('0x13')]===0x1f4){logger[_0xeee4('0x12')](_0xeee4('0xe'),_0x14c3d2,_0x45ea79[_0xeee4('0x12')]['message']);return _0xe75ab8(_0x45ea79['error'][_0xeee4('0x14')]);}logger[_0xeee4('0x12')](_0xeee4('0xe'),_0x14c3d2,_0x45ea79[_0xeee4('0x12')][_0xeee4('0x14')]);return _0x25f0ed(_0x45ea79['error']['message']);}else{logger[_0xeee4('0xd')](_0xeee4('0xe'),_0x14c3d2,_0xeee4('0x10'));_0x25f0ed(_0x45ea79[_0xeee4('0x15')][_0xeee4('0x14')]);}})[_0xeee4('0x16')](function(_0x55fcb7){logger[_0xeee4('0x12')]('CmHopperHistory,\x20%s,\x20%s',_0x14c3d2,_0x55fcb7);_0xe75ab8(_0x55fcb7);});});}exports[_0xeee4('0x17')]=function(_0x4e3c53){var _0x227daa=this;return new Promise(function(_0x3bce3f,_0x2b37dd){return db['CmHopperHistory'][_0xeee4('0x18')](_0x4e3c53[_0xeee4('0x19')],{'raw':_0x4e3c53[_0xeee4('0x1a')]?_0x4e3c53['options'][_0xeee4('0x1b')]===undefined?!![]:![]:!![]})[_0xeee4('0x1c')](function(_0x3a981c){logger[_0xeee4('0xd')]('CreateCmHopperHistory',_0x4e3c53);logger[_0xeee4('0xf')](_0xeee4('0x17'),_0x4e3c53,JSON['stringify'](_0x3a981c));_0x3bce3f(_0x3a981c);})[_0xeee4('0x16')](function(_0x414a14){logger[_0xeee4('0x12')](_0xeee4('0x17'),_0x414a14['message'],_0x4e3c53);_0x2b37dd(_0x227daa[_0xeee4('0x12')](0x1f4,_0x414a14[_0xeee4('0x14')]));});});};exports[_0xeee4('0x1d')]=function(_0x5623e6){var _0x497833=this;return new Promise(function(_0x2c27e0,_0x414644){return db['CmHopperHistory'][_0xeee4('0x1e')]({'raw':_0x5623e6['options']?_0x5623e6[_0xeee4('0x1a')][_0xeee4('0x1b')]===undefined?!![]:![]:!![],'where':_0x5623e6[_0xeee4('0x1a')]?_0x5623e6[_0xeee4('0x1a')][_0xeee4('0x1f')]||null:null,'attributes':[[db[_0xeee4('0x20')]['fn'](_0xeee4('0x21'),db[_0xeee4('0x20')][_0xeee4('0x22')]('id')),_0xeee4('0x23')],[db['sequelize']['fn']('COUNT',db[_0xeee4('0x20')]['fn']('IF',db[_0xeee4('0x20')]['literal']('`state`\x20=\x204,\x201,\x20null'))),_0xeee4('0x24')],[db[_0xeee4('0x20')]['fn']('COUNT',db[_0xeee4('0x20')]['fn']('IF',db[_0xeee4('0x20')]['literal']('`state`\x20=\x2010,\x201,\x20null'))),'predictiveIntervalDroppedCallsTimeout'],[db[_0xeee4('0x20')]['fn'](_0xeee4('0x21'),db[_0xeee4('0x20')]['fn']('IF',db[_0xeee4('0x20')][_0xeee4('0x25')](_0xeee4('0x26')))),_0xeee4('0x27')],[db[_0xeee4('0x20')]['fn']('AVG',db['sequelize']['fn']('IF',db['sequelize'][_0xeee4('0x25')]('`state`\x20=\x204,\x20`holdtime`,\x20null'))),_0xeee4('0x28')],[db[_0xeee4('0x20')]['fn'](_0xeee4('0x29'),db[_0xeee4('0x20')]['fn']('IF',db[_0xeee4('0x20')][_0xeee4('0x25')](_0xeee4('0x2a')))),'predictiveIntervalAvgTalktime']]})[_0xeee4('0x1c')](function(_0x47849e){logger['info']('AvgHandleTime',_0x5623e6);logger[_0xeee4('0xf')]('AvgHandleTime',_0x5623e6,JSON[_0xeee4('0x11')](_0x47849e));_0x2c27e0(_0x47849e);})[_0xeee4('0x16')](function(_0x2f00a2){logger[_0xeee4('0x12')]('AvgHandleTime',_0x2f00a2['message'],_0x5623e6);_0x414644(_0x497833[_0xeee4('0x12')](0x1f4,_0x2f00a2['message']));});});};exports[_0xeee4('0x2b')]=function(_0x1dba34){var _0x1c3f98=this;return new Promise(function(_0x382f64,_0x4536e4){return db[_0xeee4('0x2c')]['findAll']({'raw':_0x1dba34[_0xeee4('0x1a')]?_0x1dba34[_0xeee4('0x1a')][_0xeee4('0x1b')]===undefined?!![]:![]:!![],'where':_0x1dba34[_0xeee4('0x1a')]?_0x1dba34[_0xeee4('0x1a')][_0xeee4('0x1f')]||null:null,'attributes':[[_0xeee4('0x2d'),'name'],[db[_0xeee4('0x20')]['fn'](_0xeee4('0x21'),db[_0xeee4('0x20')]['fn']('IF',db[_0xeee4('0x20')][_0xeee4('0x25')](_0xeee4('0x2e')))),'outboundNoSuchCallsDay'],[db[_0xeee4('0x20')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize'][_0xeee4('0x25')](_0xeee4('0x2f')))),'outboundNoAnswerCallsDay'],[db[_0xeee4('0x20')]['fn'](_0xeee4('0x21'),db[_0xeee4('0x20')]['fn']('IF',db[_0xeee4('0x20')][_0xeee4('0x25')](_0xeee4('0x30')))),_0xeee4('0x31')],[db[_0xeee4('0x20')]['fn'](_0xeee4('0x21'),db[_0xeee4('0x20')]['fn']('IF',db[_0xeee4('0x20')][_0xeee4('0x25')](_0xeee4('0x32')))),_0xeee4('0x33')],[db[_0xeee4('0x20')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xeee4('0x20')][_0xeee4('0x25')](_0xeee4('0x34')))),_0xeee4('0x35')],[db['sequelize']['fn']('COUNT',db[_0xeee4('0x20')]['fn']('IF',db[_0xeee4('0x20')][_0xeee4('0x25')]('`state`\x20=\x2010\x20,\x201,\x20null'))),'outboundDropCallsDayTimeout'],[db[_0xeee4('0x20')]['fn'](_0xeee4('0x21'),db[_0xeee4('0x20')]['fn']('IF',db[_0xeee4('0x20')][_0xeee4('0x25')](_0xeee4('0x36')))),_0xeee4('0x37')],[db[_0xeee4('0x20')]['fn'](_0xeee4('0x21'),db[_0xeee4('0x20')]['fn']('IF',db[_0xeee4('0x20')][_0xeee4('0x25')](_0xeee4('0x38')))),_0xeee4('0x39')],[db[_0xeee4('0x20')]['fn'](_0xeee4('0x21'),db[_0xeee4('0x20')]['fn']('IF',db[_0xeee4('0x20')][_0xeee4('0x25')](_0xeee4('0x3a')))),'outboundBlacklistCallsDay'],[db[_0xeee4('0x20')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize'][_0xeee4('0x25')](_0xeee4('0x3b')))),'outboundOriginateFailureCallsDay'],[db[_0xeee4('0x20')]['fn']('COUNT',db[_0xeee4('0x20')]['fn']('IF',db['sequelize'][_0xeee4('0x25')](_0xeee4('0x3c')))),_0xeee4('0x3d')],[db[_0xeee4('0x20')]['fn'](_0xeee4('0x21'),db[_0xeee4('0x20')]['fn']('IF',db['sequelize'][_0xeee4('0x25')](_0xeee4('0x3e')))),_0xeee4('0x3f')],[db[_0xeee4('0x20')]['fn'](_0xeee4('0x21'),db[_0xeee4('0x20')]['fn']('IF',db['sequelize'][_0xeee4('0x25')](_0xeee4('0x40')))),'outboundRejectCallsDay'],[db[_0xeee4('0x20')]['fn'](_0xeee4('0x21'),db[_0xeee4('0x20')]['fn']('IF',db[_0xeee4('0x20')]['literal'](_0xeee4('0x41')))),_0xeee4('0x42')]],'group':[_0xeee4('0x2d')]})['then'](function(_0x28eef2){logger[_0xeee4('0xd')](_0xeee4('0x2b'),_0x1dba34);logger['debug'](_0xeee4('0x2b'),_0x1dba34,JSON[_0xeee4('0x11')](_0x28eef2));_0x382f64(_0x28eef2);})[_0xeee4('0x16')](function(_0x1ae1cb){logger[_0xeee4('0x12')](_0xeee4('0x2b'),_0x1ae1cb[_0xeee4('0x14')],_0x1dba34);_0x4536e4(_0x1c3f98['error'](0x1f4,_0x1ae1cb[_0xeee4('0x14')]));});});};exports['GetCampaignHopperHistory']=function(_0x133e3e){var _0xd08d9c=this;return new Promise(function(_0x5ba422,_0xd306dd){return db['CmHopperHistory'][_0xeee4('0x1e')]({'raw':_0x133e3e[_0xeee4('0x1a')]?_0x133e3e['options'][_0xeee4('0x1b')]===undefined?!![]:![]:!![],'where':_0x133e3e[_0xeee4('0x1a')]?_0x133e3e[_0xeee4('0x1a')][_0xeee4('0x1f')]||null:null,'attributes':[[_0xeee4('0x2d'),_0xeee4('0x43')],[db['sequelize']['fn'](_0xeee4('0x21'),db[_0xeee4('0x20')]['col']('id')),'ivrTotalCallsDays'],[db['sequelize']['fn']('COUNT',db[_0xeee4('0x20')]['fn']('IF',db[_0xeee4('0x20')][_0xeee4('0x25')]('`state`\x20=\x204,\x201,\x20null'))),'ivrAnswerCallsDay']],'group':[_0xeee4('0x2d')]})[_0xeee4('0x1c')](function(_0x2672fc){logger[_0xeee4('0xd')]('GetCampaignHopperHistory',_0x133e3e);logger[_0xeee4('0xf')]('GetCampaignHopperHistory',_0x133e3e,JSON[_0xeee4('0x11')](_0x2672fc));_0x5ba422(_0x2672fc);})[_0xeee4('0x16')](function(_0x1a6506){logger[_0xeee4('0x12')](_0xeee4('0x44'),_0x1a6506[_0xeee4('0x14')],_0x133e3e);_0xd306dd(_0xd08d9c[_0xeee4('0x12')](0x1f4,_0x1a6506[_0xeee4('0x14')]));});});};
\ No newline at end of file
index dfe14b8..c5d684a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e80=['get','/describe','describe','post','create','put','/:id','update','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./cmHopperHistory.controller','isAuthenticated','index'];(function(_0x20bb4f,_0x40285e){var _0x586e2a=function(_0x5001f4){while(--_0x5001f4){_0x20bb4f['push'](_0x20bb4f['shift']());}};_0x586e2a(++_0x40285e);}(_0x2e80,0x14c));var _0x02e8=function(_0x3124f8,_0x1a8b23){_0x3124f8=_0x3124f8-0x0;var _0x5bab5f=_0x2e80[_0x3124f8];return _0x5bab5f;};'use strict';var multer=require(_0x02e8('0x0'));var util=require('util');var path=require(_0x02e8('0x1'));var timeout=require(_0x02e8('0x2'));var express=require(_0x02e8('0x3'));var router=express[_0x02e8('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x02e8('0x5'));var interaction=require(_0x02e8('0x6'));var config=require('../../config/environment');var controller=require(_0x02e8('0x7'));router['get']('/',auth[_0x02e8('0x8')](),controller[_0x02e8('0x9')]);router[_0x02e8('0xa')](_0x02e8('0xb'),auth[_0x02e8('0x8')](),controller[_0x02e8('0xc')]);router[_0x02e8('0xa')]('/:id',auth[_0x02e8('0x8')](),controller['show']);router[_0x02e8('0xd')]('/',auth['isAuthenticated'](),controller[_0x02e8('0xe')]);router[_0x02e8('0xf')](_0x02e8('0x10'),auth['isAuthenticated'](),controller[_0x02e8('0x11')]);module[_0x02e8('0x12')]=router;
\ No newline at end of file
+var _0x41e7=['../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','post','create','put','update','multer','path','connect-timeout','express','Router'];(function(_0x37a0ce,_0x28dc04){var _0x569f4e=function(_0x1671c0){while(--_0x1671c0){_0x37a0ce['push'](_0x37a0ce['shift']());}};_0x569f4e(++_0x28dc04);}(_0x41e7,0x11c));var _0x741e=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x41e7[_0x432682];return _0x463d05;};'use strict';var multer=require(_0x741e('0x0'));var util=require('util');var path=require(_0x741e('0x1'));var timeout=require(_0x741e('0x2'));var express=require(_0x741e('0x3'));var router=express[_0x741e('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x741e('0x5'));var config=require(_0x741e('0x6'));var controller=require('./cmHopperHistory.controller');router[_0x741e('0x7')]('/',auth[_0x741e('0x8')](),controller['index']);router[_0x741e('0x7')](_0x741e('0x9'),auth[_0x741e('0x8')](),controller[_0x741e('0xa')]);router[_0x741e('0x7')](_0x741e('0xb'),auth[_0x741e('0x8')](),controller[_0x741e('0xc')]);router[_0x741e('0xd')]('/',auth[_0x741e('0x8')](),controller[_0x741e('0xe')]);router[_0x741e('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x741e('0x10')]);module['exports']=router;
\ No newline at end of file
index 959f7c2..05b243c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9879=['exports','STRING','sequelize'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x9879,0x98));var _0x9987=function(_0x2d4b78,_0xa41467){_0x2d4b78=_0x2d4b78-0x0;var _0x14da49=_0x9879[_0x2d4b78];return _0x14da49;};'use strict';var Sequelize=require(_0x9987('0x0'));module[_0x9987('0x1')]={'name':{'type':Sequelize[_0x9987('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x9987('0x2')]},'dialPrefix':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xbe48=['name','sequelize','exports','STRING'];(function(_0x3b6aa5,_0x140467){var _0x4f7866=function(_0x21c1e3){while(--_0x21c1e3){_0x3b6aa5['push'](_0x3b6aa5['shift']());}};_0x4f7866(++_0x140467);}(_0xbe48,0x121));var _0x8be4=function(_0x182396,_0x4bfd89){_0x182396=_0x182396-0x0;var _0x6daadd=_0xbe48[_0x182396];return _0x6daadd;};'use strict';var Sequelize=require(_0x8be4('0x0'));module[_0x8be4('0x1')]={'name':{'type':Sequelize[_0x8be4('0x2')],'unique':_0x8be4('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x8be4('0x2')]},'dialPrefix':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 0d0aaa0..aee414e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bdd=['attachment;\x20filename=','list_%d_%s.csv','Content-type','text/csv','download','addCustomField','findOne','sequelize','Sequelize','TEXT','text','INTEGER','BOOLEAN','defaultValue','queryInterface','addColumn','cm_contacts','cf_%s','getCustomFields','findAndCountAll','addAgents','omit','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./cmList.socket','register','sendStatus','status','json','offset','undefined','count','limit','set','reject','update','then','destroy','get','Lists','end','error','name','send','index','map','rawAttributes','fieldName','type','key','query','filters','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','CmList','includeAll','include','findAll','catch','keys','intersection','create','role','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','find','params','describe','addDisposition','Disposition','getDispositions','ListId','options','rows','removeDispositions','ids','CmContact','tags','isArray','join','push','each','dataValues','message','getContacts','CmCustomField','concat','CustomFields','cf_%d','raw','getContactsCsv','isEmpty','now','writeFileSync','format','/tmp/list_%d_%s.csv','setHeader','Content-disposition'];(function(_0x1b70e3,_0x3a15b1){var _0x1452ab=function(_0x692883){while(--_0x692883){_0x1b70e3['push'](_0x1b70e3['shift']());}};_0x1452ab(++_0x3a15b1);}(_0x1bdd,0x143));var _0xd1bd=function(_0x40e57a,_0x2d3135){_0x40e57a=_0x40e57a-0x0;var _0x247f97=_0x1bdd[_0x40e57a];return _0x247f97;};'use strict';var emlformat=require(_0xd1bd('0x0'));var rimraf=require(_0xd1bd('0x1'));var zipdir=require(_0xd1bd('0x2'));var jsonpatch=require(_0xd1bd('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xd1bd('0x4'));var Mustache=require(_0xd1bd('0x5'));var util=require(_0xd1bd('0x6'));var path=require(_0xd1bd('0x7'));var sox=require(_0xd1bd('0x8'));var csv=require('to-csv');var ejs=require(_0xd1bd('0x9'));var fs=require('fs');var fs_extra=require(_0xd1bd('0xa'));var _=require(_0xd1bd('0xb'));var squel=require(_0xd1bd('0xc'));var crypto=require(_0xd1bd('0xd'));var jsforce=require(_0xd1bd('0xe'));var deskjs=require(_0xd1bd('0xf'));var toCsv=require(_0xd1bd('0x10'));var querystring=require(_0xd1bd('0x11'));var Papa=require('papaparse');var Redis=require(_0xd1bd('0x12'));var authService=require(_0xd1bd('0x13'));var qs=require(_0xd1bd('0x14'));var as=require(_0xd1bd('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd1bd('0x16'))(_0xd1bd('0x17'));var utils=require(_0xd1bd('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xd1bd('0x19'));var db=require(_0xd1bd('0x1a'))['db'];config[_0xd1bd('0x1b')]=_['defaults'](config[_0xd1bd('0x1b')],{'host':_0xd1bd('0x1c'),'port':0x18eb});var socket=require(_0xd1bd('0x1d'))(new Redis(config[_0xd1bd('0x1b')]));require(_0xd1bd('0x1e'))[_0xd1bd('0x1f')](socket);function respondWithStatusCode(_0x15c615,_0x44b23c){_0x44b23c=_0x44b23c||0xcc;return function(_0x14638b){if(_0x14638b){return _0x15c615[_0xd1bd('0x20')](_0x44b23c);}return _0x15c615[_0xd1bd('0x21')](_0x44b23c)['end']();};}function respondWithResult(_0x19fd17,_0x5af5fa){_0x5af5fa=_0x5af5fa||0xc8;return function(_0x2cf5d7){if(_0x2cf5d7){return _0x19fd17[_0xd1bd('0x21')](_0x5af5fa)[_0xd1bd('0x22')](_0x2cf5d7);}};}function respondWithFilteredResult(_0x4fbad0,_0x325c60){return function(_0x169554){if(_0x169554){var _0x3cb2d6=typeof _0x325c60[_0xd1bd('0x23')]===_0xd1bd('0x24')&&typeof _0x325c60['limit']===_0xd1bd('0x24');var _0x253932=_0x169554[_0xd1bd('0x25')];var _0x104bb0=_0x3cb2d6?0x0:_0x325c60[_0xd1bd('0x23')];var _0x1a48d2=_0x3cb2d6?_0x169554['count']:_0x325c60[_0xd1bd('0x23')]+_0x325c60[_0xd1bd('0x26')];var _0x3a5e51;if(_0x1a48d2>=_0x253932){_0x1a48d2=_0x253932;_0x3a5e51=0xc8;}else{_0x3a5e51=0xce;}_0x4fbad0[_0xd1bd('0x21')](_0x3a5e51);return _0x4fbad0[_0xd1bd('0x27')]('Content-Range',_0x104bb0+'-'+_0x1a48d2+'/'+_0x253932)[_0xd1bd('0x22')](_0x169554);}return null;};}function patchUpdates(_0x5b6eab){return function(_0x2f37bb){try{jsonpatch['apply'](_0x2f37bb,_0x5b6eab,!![]);}catch(_0x452d96){return BPromise[_0xd1bd('0x28')](_0x452d96);}return _0x2f37bb['save']();};}function saveUpdates(_0x3107ab,_0x4275b6){return function(_0x23d184){if(_0x23d184){return _0x23d184[_0xd1bd('0x29')](_0x3107ab)[_0xd1bd('0x2a')](function(_0x21cc93){return _0x21cc93;});}return null;};}function removeEntity(_0xc14ba6,_0x322089){return function(_0x3eb55c){if(_0x3eb55c){return _0x3eb55c[_0xd1bd('0x2b')]()['then'](function(){var _0x551ba4=_0x3eb55c[_0xd1bd('0x2c')]({'plain':!![]});var _0x383fea=_0xd1bd('0x2d');return db['UserProfileResource'][_0xd1bd('0x2b')]({'where':{'type':_0x383fea,'resourceId':_0x551ba4['id']}})[_0xd1bd('0x2a')](function(){return _0x3eb55c;});})[_0xd1bd('0x2a')](function(){_0xc14ba6[_0xd1bd('0x21')](0xcc)[_0xd1bd('0x2e')]();});}};}function handleEntityNotFound(_0x91272a,_0x230990){return function(_0x5e6219){if(!_0x5e6219){_0x91272a[_0xd1bd('0x20')](0x194);}return _0x5e6219;};}function handleError(_0x2d9aa7,_0x506c11){_0x506c11=_0x506c11||0x1f4;return function(_0x5ba4d2){logger[_0xd1bd('0x2f')](_0x5ba4d2['stack']);if(_0x5ba4d2['name']){delete _0x5ba4d2[_0xd1bd('0x30')];}_0x2d9aa7['status'](_0x506c11)[_0xd1bd('0x31')](_0x5ba4d2);};}exports[_0xd1bd('0x32')]=function(_0x5d591e,_0x4aaf6c){var _0x4ef933={},_0x587d65={},_0x5211e0={'count':0x0,'rows':[]};var _0x4edb60=_[_0xd1bd('0x33')](db['CmList'][_0xd1bd('0x34')],function(_0x3ebc3d){return{'name':_0x3ebc3d[_0xd1bd('0x35')],'type':_0x3ebc3d[_0xd1bd('0x36')][_0xd1bd('0x37')]};});_0x587d65['model']=_[_0xd1bd('0x33')](_0x4edb60,_0xd1bd('0x30'));_0x587d65[_0xd1bd('0x38')]=_['keys'](_0x5d591e[_0xd1bd('0x38')]);_0x587d65[_0xd1bd('0x39')]=_['intersection'](_0x587d65['model'],_0x587d65[_0xd1bd('0x38')]);_0x4ef933[_0xd1bd('0x3a')]=_['intersection'](_0x587d65[_0xd1bd('0x3b')],qs[_0xd1bd('0x3c')](_0x5d591e[_0xd1bd('0x38')][_0xd1bd('0x3c')]));_0x4ef933[_0xd1bd('0x3a')]=_0x4ef933[_0xd1bd('0x3a')][_0xd1bd('0x3d')]?_0x4ef933[_0xd1bd('0x3a')]:_0x587d65[_0xd1bd('0x3b')];if(!_0x5d591e[_0xd1bd('0x38')][_0xd1bd('0x3e')](_0xd1bd('0x3f'))){_0x4ef933['limit']=qs[_0xd1bd('0x26')](_0x5d591e[_0xd1bd('0x38')][_0xd1bd('0x26')]);_0x4ef933[_0xd1bd('0x23')]=qs[_0xd1bd('0x23')](_0x5d591e[_0xd1bd('0x38')]['offset']);}_0x4ef933[_0xd1bd('0x40')]=qs[_0xd1bd('0x41')](_0x5d591e[_0xd1bd('0x38')]['sort']);_0x4ef933['where']=qs[_0xd1bd('0x39')](_[_0xd1bd('0x42')](_0x5d591e[_0xd1bd('0x38')],_0x587d65[_0xd1bd('0x39')]),_0x4edb60);if(_0x5d591e[_0xd1bd('0x38')]['filter']){_0x4ef933[_0xd1bd('0x43')]=_[_0xd1bd('0x44')](_0x4ef933[_0xd1bd('0x43')],{'$or':_[_0xd1bd('0x33')](_0x4edb60,function(_0x3bd36d){if(_0x3bd36d[_0xd1bd('0x36')]!==_0xd1bd('0x45')){var _0x5ddc0f={};_0x5ddc0f[_0x3bd36d[_0xd1bd('0x30')]]={'$like':'%'+_0x5d591e[_0xd1bd('0x38')][_0xd1bd('0x46')]+'%'};return _0x5ddc0f;}})});}_0x4ef933=_['merge']({},_0x4ef933,_0x5d591e['options']);var _0x585a2e={'where':_0x4ef933[_0xd1bd('0x43')]};return db[_0xd1bd('0x47')][_0xd1bd('0x25')](_0x585a2e)[_0xd1bd('0x2a')](function(_0x58bd1f){_0x5211e0[_0xd1bd('0x25')]=_0x58bd1f;if(_0x5d591e['query'][_0xd1bd('0x48')]){_0x4ef933[_0xd1bd('0x49')]=[{'all':!![]}];}return db['CmList'][_0xd1bd('0x4a')](_0x4ef933);})['then'](function(_0x51a394){_0x5211e0['rows']=_0x51a394;return _0x5211e0;})[_0xd1bd('0x2a')](respondWithFilteredResult(_0x4aaf6c,_0x4ef933))[_0xd1bd('0x4b')](handleError(_0x4aaf6c,null));};exports['show']=function(_0x806854,_0x60e213){var _0x5567e3={'raw':![],'where':{'id':_0x806854['params']['id']}},_0x61bec0={};_0x61bec0[_0xd1bd('0x3b')]=_['keys'](db['CmList']['rawAttributes']);_0x61bec0[_0xd1bd('0x38')]=_[_0xd1bd('0x4c')](_0x806854[_0xd1bd('0x38')]);_0x61bec0['filters']=_[_0xd1bd('0x4d')](_0x61bec0[_0xd1bd('0x3b')],_0x61bec0[_0xd1bd('0x38')]);_0x5567e3['attributes']=_[_0xd1bd('0x4d')](_0x61bec0[_0xd1bd('0x3b')],qs[_0xd1bd('0x3c')](_0x806854[_0xd1bd('0x38')][_0xd1bd('0x3c')]));_0x5567e3['attributes']=_0x5567e3['attributes']['length']?_0x5567e3['attributes']:_0x61bec0[_0xd1bd('0x3b')];if(_0x806854[_0xd1bd('0x38')]['includeAll']){_0x5567e3[_0xd1bd('0x49')]=[{'all':!![]}];}_0x5567e3=_[_0xd1bd('0x44')]({},_0x5567e3,_0x806854['options']);return db['CmList']['find'](_0x5567e3)[_0xd1bd('0x2a')](handleEntityNotFound(_0x60e213,null))[_0xd1bd('0x2a')](respondWithResult(_0x60e213,null))[_0xd1bd('0x4b')](handleError(_0x60e213,null));};exports[_0xd1bd('0x4e')]=function(_0x5ad104,_0x2b7ccb){return db[_0xd1bd('0x47')]['create'](_0x5ad104['body'],{})['then'](function(_0x584179){var _0x39e813=_0x5ad104['user'][_0xd1bd('0x2c')]({'plain':!![]});if(!_0x39e813)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x39e813[_0xd1bd('0x4f')]===_0xd1bd('0x50')){var _0x15d32e=_0x584179[_0xd1bd('0x2c')]({'plain':!![]});var _0x3c093d='Lists';return db[_0xd1bd('0x51')]['find']({'where':{'name':_0x3c093d,'userProfileId':_0x39e813['userProfileId']},'raw':!![]})[_0xd1bd('0x2a')](function(_0x286423){if(_0x286423&&_0x286423[_0xd1bd('0x52')]===0x0){return db['UserProfileResource'][_0xd1bd('0x4e')]({'name':_0x15d32e[_0xd1bd('0x30')],'resourceId':_0x15d32e['id'],'type':_0x286423['name'],'sectionId':_0x286423['id']},{})[_0xd1bd('0x2a')](function(){return _0x584179;});}else{return _0x584179;}})[_0xd1bd('0x4b')](function(_0x9bd400){logger[_0xd1bd('0x2f')](_0xd1bd('0x53'),_0x9bd400);throw _0x9bd400;});}return _0x584179;})[_0xd1bd('0x2a')](respondWithResult(_0x2b7ccb,0xc9))[_0xd1bd('0x4b')](handleError(_0x2b7ccb,null));};exports[_0xd1bd('0x29')]=function(_0x451790,_0x1da014){if(_0x451790[_0xd1bd('0x54')]['id']){delete _0x451790[_0xd1bd('0x54')]['id'];}return db[_0xd1bd('0x47')][_0xd1bd('0x55')]({'where':{'id':_0x451790[_0xd1bd('0x56')]['id']}})['then'](handleEntityNotFound(_0x1da014,null))[_0xd1bd('0x2a')](saveUpdates(_0x451790[_0xd1bd('0x54')],null))[_0xd1bd('0x2a')](respondWithResult(_0x1da014,null))[_0xd1bd('0x4b')](handleError(_0x1da014,null));};exports[_0xd1bd('0x2b')]=function(_0x57e3dd,_0xaef78a){return db['CmList']['find']({'where':{'id':_0x57e3dd[_0xd1bd('0x56')]['id']}})[_0xd1bd('0x2a')](handleEntityNotFound(_0xaef78a,null))['then'](removeEntity(_0xaef78a,null))['catch'](handleError(_0xaef78a,null));};exports[_0xd1bd('0x57')]=function(_0x2bf8f8,_0x2245eb){return db[_0xd1bd('0x47')]['describe']()[_0xd1bd('0x2a')](respondWithResult(_0x2245eb,null))[_0xd1bd('0x4b')](handleError(_0x2245eb,null));};exports[_0xd1bd('0x58')]=function(_0x13889e,_0x7476c5,_0x204ca0){if(_0x13889e[_0xd1bd('0x54')]['id']){delete _0x13889e[_0xd1bd('0x54')]['id'];}return db[_0xd1bd('0x47')][_0xd1bd('0x55')]({'where':{'id':_0x13889e[_0xd1bd('0x56')]['id']}})[_0xd1bd('0x2a')](handleEntityNotFound(_0x7476c5,null))[_0xd1bd('0x2a')](function(_0x2984ca){if(_0x2984ca){_0x13889e[_0xd1bd('0x54')]['ListId']=_0x2984ca['id'];return db[_0xd1bd('0x59')][_0xd1bd('0x4e')](_0x13889e[_0xd1bd('0x54')]);}})[_0xd1bd('0x2a')](respondWithResult(_0x7476c5,null))['catch'](handleError(_0x7476c5,null));};exports[_0xd1bd('0x5a')]=function(_0x5cde88,_0x54e31d,_0x240066){var _0x5ede9a={'raw':![],'where':{}};var _0x27124c={};var _0x247da8={'count':0x0,'rows':[]};return db['CmList']['findOne']({'where':{'id':_0x5cde88[_0xd1bd('0x56')]['id']}})[_0xd1bd('0x2a')](handleEntityNotFound(_0x54e31d,null))[_0xd1bd('0x2a')](function(_0x1460bf){if(_0x1460bf){_0x27124c[_0xd1bd('0x3b')]=_['keys'](db[_0xd1bd('0x59')]['rawAttributes']);_0x27124c['query']=_['keys'](_0x5cde88[_0xd1bd('0x38')]);_0x27124c[_0xd1bd('0x39')]=_[_0xd1bd('0x4d')](_0x27124c[_0xd1bd('0x3b')],_0x27124c[_0xd1bd('0x38')]);_0x5ede9a[_0xd1bd('0x3a')]=_['intersection'](_0x27124c['model'],qs['fields'](_0x5cde88[_0xd1bd('0x38')][_0xd1bd('0x3c')]));_0x5ede9a[_0xd1bd('0x3a')]=_0x5ede9a[_0xd1bd('0x3a')][_0xd1bd('0x3d')]?_0x5ede9a[_0xd1bd('0x3a')]:_0x27124c[_0xd1bd('0x3b')];if(!_0x5cde88[_0xd1bd('0x38')][_0xd1bd('0x3e')](_0xd1bd('0x3f'))){_0x5ede9a[_0xd1bd('0x26')]=qs[_0xd1bd('0x26')](_0x5cde88['query']['limit']);_0x5ede9a[_0xd1bd('0x23')]=qs['offset'](_0x5cde88[_0xd1bd('0x38')]['offset']);}_0x5ede9a['order']=qs[_0xd1bd('0x41')](_0x5cde88[_0xd1bd('0x38')][_0xd1bd('0x41')]);_0x5ede9a[_0xd1bd('0x43')]=qs[_0xd1bd('0x39')](_[_0xd1bd('0x42')](_0x5cde88[_0xd1bd('0x38')],_0x27124c[_0xd1bd('0x39')]));_0x5ede9a[_0xd1bd('0x43')][_0xd1bd('0x5b')]=_0x1460bf['id'];if(_0x5cde88['query'][_0xd1bd('0x46')]){_0x5ede9a['where']=_[_0xd1bd('0x44')](_0x5ede9a[_0xd1bd('0x43')],{'$or':_['map'](_0x5ede9a[_0xd1bd('0x3a')],function(_0x4e0cf0){var _0x51a2d1={};_0x51a2d1[_0x4e0cf0]={'$like':'%'+_0x5cde88[_0xd1bd('0x38')][_0xd1bd('0x46')]+'%'};return _0x51a2d1;})});}_0x5ede9a=_['merge']({},_0x5ede9a,_0x5cde88[_0xd1bd('0x5c')]);return db[_0xd1bd('0x59')][_0xd1bd('0x25')]({'where':_0x5ede9a['where']})['then'](function(_0x576ed0){_0x247da8['count']=_0x576ed0;if(_0x5cde88[_0xd1bd('0x38')][_0xd1bd('0x48')]){_0x5ede9a['include']=[{'all':!![]}];}return db[_0xd1bd('0x59')]['findAll'](_0x5ede9a);})[_0xd1bd('0x2a')](function(_0x123970){_0x247da8[_0xd1bd('0x5d')]=_0x123970;return _0x247da8;});}})[_0xd1bd('0x2a')](respondWithFilteredResult(_0x54e31d,_0x5ede9a))[_0xd1bd('0x4b')](handleError(_0x54e31d,null));};exports[_0xd1bd('0x5e')]=function(_0x2defbc,_0x4a4fda,_0x3d21ee){return db[_0xd1bd('0x47')]['find']({'where':{'id':_0x2defbc[_0xd1bd('0x56')]['id']}})['then'](handleEntityNotFound(_0x4a4fda,null))[_0xd1bd('0x2a')](function(_0x1cb8fe){if(_0x1cb8fe){return _0x1cb8fe[_0xd1bd('0x5e')](_0x2defbc[_0xd1bd('0x38')][_0xd1bd('0x5f')]);}})['then'](respondWithStatusCode(_0x4a4fda,null))['catch'](handleError(_0x4a4fda,null));};exports['addContacts']=function(_0x47f276,_0x5365de,_0x3d37bf){return db[_0xd1bd('0x47')][_0xd1bd('0x55')]({'where':{'id':_0x47f276[_0xd1bd('0x56')]['id']}})[_0xd1bd('0x2a')](handleEntityNotFound(_0x5365de,null))[_0xd1bd('0x2a')](function(_0x141169){if(_0x141169){var _0x223728=[];var _0x5e7317={'success':[],'errors':[]};return db[_0xd1bd('0x60')][_0xd1bd('0x57')]()[_0xd1bd('0x2a')](function(_0x1359ea){if(_0x47f276[_0xd1bd('0x54')][_0xd1bd('0x61')]&&_[_0xd1bd('0x62')](_0x47f276['body'][_0xd1bd('0x61')])){if(_0x47f276[_0xd1bd('0x54')]['tags']['length']){_0x47f276[_0xd1bd('0x54')][_0xd1bd('0x61')]=_0x47f276[_0xd1bd('0x54')]['tags'][_0xd1bd('0x63')](';')+';';}else{_0x47f276['body'][_0xd1bd('0x61')]=null;}}else{_0x47f276['body'][_0xd1bd('0x61')]=null;}if(_0x47f276[_0xd1bd('0x54')]&&_[_0xd1bd('0x62')](_0x47f276[_0xd1bd('0x54')])){for(var _0xd40a00=0x0;_0xd40a00<_0x47f276[_0xd1bd('0x54')][_0xd1bd('0x3d')];_0xd40a00+=0x1){_0x47f276[_0xd1bd('0x54')][_0xd40a00][_0xd1bd('0x5b')]=_0x47f276[_0xd1bd('0x56')]['id'];_0x223728[_0xd1bd('0x64')](_0x47f276[_0xd1bd('0x54')][_0xd40a00]);}return BPromise[_0xd1bd('0x65')](_0x223728,function(_0x2099ee){return db[_0xd1bd('0x60')]['create'](_['omit'](_0x2099ee,[_0xd1bd('0x5f'),'id'])||{},{'fields':_[_0xd1bd('0x4c')](_0x1359ea),'raw':!![]})[_0xd1bd('0x2a')](function(_0x46b681){_0x5e7317['success'][_0xd1bd('0x64')](_0x46b681[_0xd1bd('0x66')]);})[_0xd1bd('0x4b')](function(_0x52e1d5){_0x5e7317['errors']['push']({'data':_0x2099ee,'error':_0x52e1d5[_0xd1bd('0x67')]});});})['then'](function(_0x4a8a0d){return _0x5e7317;})[_0xd1bd('0x4b')](function(_0x22a50d){return _0x22a50d;});}else{_0x5365de[_0xd1bd('0x21')](0x190)['json']({'message':'Malformed\x20request\x20syntax'});}});}})[_0xd1bd('0x2a')](respondWithResult(_0x5365de,null))[_0xd1bd('0x4b')](handleError(_0x5365de,null));};exports[_0xd1bd('0x68')]=function(_0x41416d,_0x352efc,_0x143d81){var _0x46d4ca;return db['CmList'][_0xd1bd('0x55')]({'where':{'id':_0x41416d[_0xd1bd('0x56')]['id']},'include':[{'model':db[_0xd1bd('0x69')],'as':'CustomFields'}]})[_0xd1bd('0x2a')](handleEntityNotFound(_0x352efc,null))['then'](function(_0xb2dcf8){if(_0xb2dcf8){_0x46d4ca=_0xb2dcf8;return db[_0xd1bd('0x60')][_0xd1bd('0x34')];}})['then'](function(_0x1716b8){if(_0x1716b8){var _0x1117fe={};var _0x14a1cd={};_0x14a1cd[_0xd1bd('0x3b')]=_[_0xd1bd('0x6a')](_[_0xd1bd('0x4c')](_0x1716b8),_[_0xd1bd('0x33')](_0x46d4ca[_0xd1bd('0x6b')],function(_0x2ca6c5){return util['format'](_0xd1bd('0x6c'),_0x2ca6c5['id']);}));_0x14a1cd[_0xd1bd('0x38')]=_[_0xd1bd('0x4c')](_0x41416d[_0xd1bd('0x38')]);_0x14a1cd['filters']=_[_0xd1bd('0x4d')](_0x14a1cd[_0xd1bd('0x3b')],_0x14a1cd[_0xd1bd('0x38')]);_0x1117fe[_0xd1bd('0x3a')]=_[_0xd1bd('0x4d')](_0x14a1cd['model'],qs['fields'](_0x41416d['query'][_0xd1bd('0x3c')]));_0x1117fe['attributes']=_0x1117fe[_0xd1bd('0x3a')][_0xd1bd('0x3d')]?_0x1117fe[_0xd1bd('0x3a')]:_0x14a1cd['model'];if(!_0x41416d[_0xd1bd('0x38')][_0xd1bd('0x3e')](_0xd1bd('0x3f'))){_0x1117fe[_0xd1bd('0x26')]=qs[_0xd1bd('0x26')](_0x41416d[_0xd1bd('0x38')][_0xd1bd('0x26')]);_0x1117fe[_0xd1bd('0x23')]=qs['offset'](_0x41416d['query'][_0xd1bd('0x23')]);}_0x1117fe[_0xd1bd('0x40')]=qs['sort'](_0x41416d[_0xd1bd('0x38')][_0xd1bd('0x41')]);_0x1117fe['where']=qs[_0xd1bd('0x39')](_[_0xd1bd('0x42')](_0x41416d['query'],_0x14a1cd[_0xd1bd('0x39')]));_0x1117fe[_0xd1bd('0x6d')]=!![];if(_0x41416d[_0xd1bd('0x38')][_0xd1bd('0x46')]){_0x1117fe[_0xd1bd('0x43')]=_[_0xd1bd('0x44')](_0x1117fe[_0xd1bd('0x43')],{'$or':_[_0xd1bd('0x33')](_0x1117fe[_0xd1bd('0x3a')],function(_0x1274c8){var _0x1170ff={};_0x1170ff[_0x1274c8]={'$like':'%'+_0x41416d['query'][_0xd1bd('0x46')]+'%'};return _0x1170ff;})});}_0x1117fe=_[_0xd1bd('0x44')]({},_0x1117fe,_0x41416d['options']);return _0x46d4ca[_0xd1bd('0x68')](_0x1117fe);}})[_0xd1bd('0x2a')](respondWithResult(_0x352efc,null))['catch'](handleError(_0x352efc,null));};exports[_0xd1bd('0x6e')]=function(_0x332ad0,_0x174e9d,_0x3cbdcd){var _0x2e3a0c;return db[_0xd1bd('0x47')]['find']({'where':{'id':_0x332ad0[_0xd1bd('0x56')]['id']},'include':[{'model':db[_0xd1bd('0x69')],'as':_0xd1bd('0x6b')}]})['then'](handleEntityNotFound(_0x174e9d,null))['then'](function(_0x4a5bc6){if(_0x4a5bc6){_0x2e3a0c=_0x4a5bc6;return db[_0xd1bd('0x60')]['rawAttributes'];}})[_0xd1bd('0x2a')](function(_0x5cd0ea){if(_0x5cd0ea){var _0x2747ef={};var _0x41b7b7={};_0x41b7b7[_0xd1bd('0x3b')]=_[_0xd1bd('0x6a')](_[_0xd1bd('0x4c')](_0x5cd0ea),_['map'](_0x2e3a0c[_0xd1bd('0x6b')],function(_0x42b9fb){return util['format']('cf_%d',_0x42b9fb['id']);}));_0x41b7b7[_0xd1bd('0x38')]=_[_0xd1bd('0x4c')](_0x332ad0[_0xd1bd('0x38')]);_0x41b7b7[_0xd1bd('0x39')]=_[_0xd1bd('0x4d')](_0x41b7b7[_0xd1bd('0x3b')],_0x41b7b7[_0xd1bd('0x38')]);_0x2747ef['attributes']=_[_0xd1bd('0x4d')](_0x41b7b7[_0xd1bd('0x3b')],qs[_0xd1bd('0x3c')](_0x332ad0[_0xd1bd('0x38')][_0xd1bd('0x3c')]));_0x2747ef['attributes']=_0x2747ef[_0xd1bd('0x3a')][_0xd1bd('0x3d')]?_0x2747ef[_0xd1bd('0x3a')]:_0x41b7b7[_0xd1bd('0x3b')];if(!_0x332ad0[_0xd1bd('0x38')][_0xd1bd('0x3e')]('nolimit')){_0x2747ef['limit']=qs[_0xd1bd('0x26')](_0x332ad0[_0xd1bd('0x38')][_0xd1bd('0x26')]);_0x2747ef[_0xd1bd('0x23')]=qs[_0xd1bd('0x23')](_0x332ad0[_0xd1bd('0x38')][_0xd1bd('0x23')]);}_0x2747ef[_0xd1bd('0x40')]=qs[_0xd1bd('0x41')](_0x332ad0[_0xd1bd('0x38')]['sort']);_0x2747ef[_0xd1bd('0x43')]=qs['filters'](_['pick'](_0x332ad0[_0xd1bd('0x38')],_0x41b7b7[_0xd1bd('0x39')]));_0x2747ef[_0xd1bd('0x6d')]=!![];if(_0x332ad0[_0xd1bd('0x38')]['filter']){_0x2747ef['where']=_[_0xd1bd('0x44')](_0x2747ef[_0xd1bd('0x43')],{'$or':_[_0xd1bd('0x33')](_0x2747ef[_0xd1bd('0x3a')],function(_0x2c838b){var _0x5dbb97={};_0x5dbb97[_0x2c838b]={'$like':'%'+_0x332ad0[_0xd1bd('0x38')][_0xd1bd('0x46')]+'%'};return _0x5dbb97;})});}_0x2747ef=_['merge']({},_0x2747ef,_0x332ad0[_0xd1bd('0x5c')]);return _0x2e3a0c[_0xd1bd('0x68')](_0x2747ef);}})[_0xd1bd('0x2a')](function(_0x26268e){if(!_[_0xd1bd('0x6f')](_0x26268e)){var _0x3dfd73=toCsv(_0x26268e);var _0x592085=Date[_0xd1bd('0x70')]();fs[_0xd1bd('0x71')](util[_0xd1bd('0x72')](_0xd1bd('0x73'),_0x2e3a0c['id'],_0x592085),_0x3dfd73);_0x174e9d[_0xd1bd('0x74')](_0xd1bd('0x75'),_0xd1bd('0x76')+util[_0xd1bd('0x72')](_0xd1bd('0x77'),_0x2e3a0c['id'],_0x592085));_0x174e9d[_0xd1bd('0x74')](_0xd1bd('0x78'),_0xd1bd('0x79'));return _0x174e9d[_0xd1bd('0x7a')](util['format']('/tmp/list_%d_%s.csv',_0x2e3a0c['id'],_0x592085));}else{return _0x174e9d[_0xd1bd('0x20')](0xcc);}})['catch'](handleError(_0x174e9d,null));};exports[_0xd1bd('0x7b')]=function(_0x2f1dc2,_0x5e5e03,_0x19060a){var _0xbb541f;delete _0x2f1dc2[_0xd1bd('0x54')]['id'];return db[_0xd1bd('0x47')][_0xd1bd('0x7c')]({'where':{'id':_0x2f1dc2[_0xd1bd('0x56')]['id']}})[_0xd1bd('0x2a')](handleEntityNotFound(_0x5e5e03,null))[_0xd1bd('0x2a')](function(_0x365be5){if(_0x365be5){return db[_0xd1bd('0x7d')]['transaction'](function(_0x2eae0a){return db['CmCustomField']['create'](_0x2f1dc2[_0xd1bd('0x54')],{'transaction':_0x2eae0a})[_0xd1bd('0x2a')](function(_0x5c0f41){_0xbb541f=_0x5c0f41;return _0x365be5['addCustomFields'](_0x5c0f41,{'transaction':_0x2eae0a});})[_0xd1bd('0x2a')](function(){var _0xc3812d={'type':db[_0xd1bd('0x7e')][_0xd1bd('0x7f')],'transaction':_0x2eae0a};switch(_0x2f1dc2[_0xd1bd('0x54')][_0xd1bd('0x36')]){case _0xd1bd('0x80'):_0xc3812d[_0xd1bd('0x36')]=db[_0xd1bd('0x7e')][_0xd1bd('0x7f')];break;case'number':_0xc3812d[_0xd1bd('0x36')]=db[_0xd1bd('0x7e')][_0xd1bd('0x81')];break;case'switch':_0xc3812d[_0xd1bd('0x36')]=db['Sequelize'][_0xd1bd('0x82')];_0xc3812d[_0xd1bd('0x83')]=![];break;default:}return db[_0xd1bd('0x7d')][_0xd1bd('0x84')][_0xd1bd('0x85')](_0xd1bd('0x86'),util[_0xd1bd('0x72')](_0xd1bd('0x87'),_0xbb541f['id']),_0xc3812d);})[_0xd1bd('0x2a')](function(){return _0xbb541f;});});}})[_0xd1bd('0x2a')](respondWithResult(_0x5e5e03,null))['catch'](handleError(_0x5e5e03,null));};exports[_0xd1bd('0x88')]=function(_0x4cd7ae,_0x561f30,_0x4fbb37){var _0x3736c1={};var _0x168f69={};var _0x47967f;var _0x4b4d8e;return db['CmList'][_0xd1bd('0x7c')]({'where':{'id':_0x4cd7ae[_0xd1bd('0x56')]['id']}})[_0xd1bd('0x2a')](handleEntityNotFound(_0x561f30,null))[_0xd1bd('0x2a')](function(_0x101828){if(_0x101828){_0x47967f=_0x101828;_0x168f69[_0xd1bd('0x3b')]=_[_0xd1bd('0x4c')](db['CmCustomField'][_0xd1bd('0x34')]);_0x168f69[_0xd1bd('0x38')]=_[_0xd1bd('0x4c')](_0x4cd7ae['query']);_0x168f69[_0xd1bd('0x39')]=_[_0xd1bd('0x4d')](_0x168f69[_0xd1bd('0x3b')],_0x168f69[_0xd1bd('0x38')]);_0x3736c1['attributes']=_[_0xd1bd('0x4d')](_0x168f69[_0xd1bd('0x3b')],qs[_0xd1bd('0x3c')](_0x4cd7ae[_0xd1bd('0x38')][_0xd1bd('0x3c')]));_0x3736c1['attributes']=_0x3736c1[_0xd1bd('0x3a')][_0xd1bd('0x3d')]?_0x3736c1[_0xd1bd('0x3a')]:_0x168f69['model'];_0x3736c1[_0xd1bd('0x40')]=qs['sort'](_0x4cd7ae[_0xd1bd('0x38')][_0xd1bd('0x41')]);_0x3736c1[_0xd1bd('0x43')]=qs['filters'](_[_0xd1bd('0x42')](_0x4cd7ae[_0xd1bd('0x38')],_0x168f69['filters']));_0x3736c1[_0xd1bd('0x43')]=_[_0xd1bd('0x44')](_0x3736c1['where'],{'$or':[{'ListId':_0x101828['id']},{'ListId':null}]});if(_0x4cd7ae[_0xd1bd('0x38')]['filter']){_0x3736c1[_0xd1bd('0x43')]=_['merge'](_0x3736c1[_0xd1bd('0x43')],{'$or':_[_0xd1bd('0x33')](_0x3736c1[_0xd1bd('0x3a')],function(_0x5a21ed){var _0x36a7bd={};_0x36a7bd[_0x5a21ed]={'$like':'%'+_0x4cd7ae[_0xd1bd('0x38')][_0xd1bd('0x46')]+'%'};return _0x36a7bd;})});}_0x3736c1=_[_0xd1bd('0x44')]({},_0x3736c1,_0x4cd7ae[_0xd1bd('0x5c')]);return db[_0xd1bd('0x69')][_0xd1bd('0x89')](_0x3736c1);}})['then'](respondWithResult(_0x561f30,null))[_0xd1bd('0x4b')](handleError(_0x561f30,null));};exports[_0xd1bd('0x8a')]=function(_0x5dc70c,_0xe8f1e6,_0x5d9c47){return db['CmList'][_0xd1bd('0x55')]({'where':{'id':_0x5dc70c[_0xd1bd('0x56')]['id']}})['then'](handleEntityNotFound(_0xe8f1e6,null))[_0xd1bd('0x2a')](function(_0x38bc23){if(_0x38bc23){return _0x38bc23[_0xd1bd('0x8a')](_0x5dc70c[_0xd1bd('0x54')]['ids'],_[_0xd1bd('0x8b')](_0x5dc70c[_0xd1bd('0x54')],['ids','id'])||{})[_0xd1bd('0x8c')](function(_0x363fec){for(var _0x1ade84=0x0;_0x1ade84<_0x5dc70c['body']['ids']['length'];_0x1ade84+=0x1){socket[_0xd1bd('0x8d')](_0xd1bd('0x8e'),{'UserId':Number(_0x5dc70c['body'][_0xd1bd('0x5f')][_0x1ade84]),'CmListId':Number(_0x5dc70c[_0xd1bd('0x56')]['id'])});}return _0x363fec;});}})[_0xd1bd('0x2a')](respondWithResult(_0xe8f1e6,null))[_0xd1bd('0x4b')](handleError(_0xe8f1e6,null));};exports[_0xd1bd('0x8f')]=function(_0x10bc6e,_0x48b683,_0x5a104f){return db[_0xd1bd('0x47')]['find']({'where':{'id':_0x10bc6e[_0xd1bd('0x56')]['id']}})[_0xd1bd('0x2a')](handleEntityNotFound(_0x48b683,null))['then'](function(_0x2bb479){if(_0x2bb479){return _0x2bb479[_0xd1bd('0x8f')](_0x10bc6e[_0xd1bd('0x38')]['ids'])[_0xd1bd('0x2a')](function(){if(_[_0xd1bd('0x62')](_0x10bc6e[_0xd1bd('0x38')][_0xd1bd('0x5f')])){for(var _0x1bde9d=0x0;_0x1bde9d<_0x10bc6e[_0xd1bd('0x38')]['ids'][_0xd1bd('0x3d')];_0x1bde9d+=0x1){socket[_0xd1bd('0x8d')](_0xd1bd('0x90'),{'UserId':Number(_0x10bc6e['query'][_0xd1bd('0x5f')][_0x1bde9d]),'CmListId':Number(_0x10bc6e[_0xd1bd('0x56')]['id'])});}}else{socket['emit'](_0xd1bd('0x90'),{'UserId':Number(_0x10bc6e[_0xd1bd('0x38')][_0xd1bd('0x5f')]),'CmListId':Number(_0x10bc6e[_0xd1bd('0x56')]['id'])});}});}})[_0xd1bd('0x2a')](respondWithStatusCode(_0x48b683,null))['catch'](handleError(_0x48b683,null));};exports[_0xd1bd('0x91')]=function(_0x2a1b6d,_0x464930,_0x45fbfb){var _0xd9b1b0={};var _0x56c7ed={};var _0x15b01f;var _0x5e348a;return db[_0xd1bd('0x47')][_0xd1bd('0x7c')]({'where':{'id':_0x2a1b6d[_0xd1bd('0x56')]['id']}})[_0xd1bd('0x2a')](handleEntityNotFound(_0x464930,null))[_0xd1bd('0x2a')](function(_0x4be6dd){if(_0x4be6dd){_0x15b01f=_0x4be6dd;_0x56c7ed['model']=_['keys'](db[_0xd1bd('0x92')][_0xd1bd('0x34')]);_0x56c7ed[_0xd1bd('0x38')]=_['keys'](_0x2a1b6d[_0xd1bd('0x38')]);_0x56c7ed['filters']=_['intersection'](_0x56c7ed[_0xd1bd('0x3b')],_0x56c7ed['query']);_0xd9b1b0[_0xd1bd('0x3a')]=_[_0xd1bd('0x4d')](_0x56c7ed['model'],qs[_0xd1bd('0x3c')](_0x2a1b6d[_0xd1bd('0x38')][_0xd1bd('0x3c')]));_0xd9b1b0[_0xd1bd('0x3a')]=_0xd9b1b0[_0xd1bd('0x3a')][_0xd1bd('0x3d')]?_0xd9b1b0[_0xd1bd('0x3a')]:_0x56c7ed[_0xd1bd('0x3b')];_0xd9b1b0[_0xd1bd('0x40')]=qs['sort'](_0x2a1b6d[_0xd1bd('0x38')]['sort']);_0xd9b1b0[_0xd1bd('0x43')]=qs[_0xd1bd('0x39')](_['pick'](_0x2a1b6d['query'],_0x56c7ed[_0xd1bd('0x39')]));if(_0x2a1b6d['query'][_0xd1bd('0x46')]){_0xd9b1b0[_0xd1bd('0x43')]=_[_0xd1bd('0x44')](_0xd9b1b0[_0xd1bd('0x43')],{'$or':_[_0xd1bd('0x33')](_0xd9b1b0[_0xd1bd('0x3a')],function(_0x568eb9){var _0x38e6eb={};_0x38e6eb[_0x568eb9]={'$like':'%'+_0x2a1b6d[_0xd1bd('0x38')][_0xd1bd('0x46')]+'%'};return _0x38e6eb;})});}_0xd9b1b0=_[_0xd1bd('0x44')]({},_0xd9b1b0,_0x2a1b6d['options']);return _0x15b01f[_0xd1bd('0x91')](_0xd9b1b0);}})[_0xd1bd('0x2a')](function(_0x6b2a68){if(_0x6b2a68){_0x5e348a=_0x6b2a68[_0xd1bd('0x3d')];if(!_0x2a1b6d['query'][_0xd1bd('0x3e')](_0xd1bd('0x3f'))){_0xd9b1b0[_0xd1bd('0x26')]=qs['limit'](_0x2a1b6d[_0xd1bd('0x38')][_0xd1bd('0x26')]);_0xd9b1b0[_0xd1bd('0x23')]=qs[_0xd1bd('0x23')](_0x2a1b6d[_0xd1bd('0x38')][_0xd1bd('0x23')]);}return _0x15b01f[_0xd1bd('0x91')](_0xd9b1b0);}})[_0xd1bd('0x2a')](function(_0x2c462f){if(_0x2c462f){return _0x2c462f?{'count':_0x5e348a,'rows':_0x2c462f}:null;}})[_0xd1bd('0x2a')](respondWithResult(_0x464930,null))['catch'](handleError(_0x464930,null));};
\ No newline at end of file
+var _0xf2f6=['include','rows','catch','show','params','keys','length','includeAll','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','userProfileId','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','getDispositions','findOne','Disposition','pick','findAll','removeDispositions','ids','CmContact','tags','isArray','join','ListId','push','dataValues','message','CmCustomField','CustomFields','format','raw','getContactsCsv','concat','cf_%d','getContacts','now','writeFileSync','/tmp/list_%d_%s.csv','Content-disposition','attachment;\x20filename=','setHeader','text/csv','download','addCustomField','sequelize','Sequelize','TEXT','text','number','INTEGER','BOOLEAN','defaultValue','queryInterface','addColumn','cm_contacts','findAndCountAll','addAgents','omit','spread','userCmList:save','removeAgents','emit','userCmList:remove','getAgents','User','eml-format','zip-dir','request-promise','moment','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','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./cmList.socket','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','update','then','destroy','get','Lists','stack','name','send','index','map','CmList','rawAttributes','fieldName','type','key','query','intersection','attributes','model','fields','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options'];(function(_0x8317b7,_0x3bfa15){var _0x4e1bc9=function(_0x456ea1){while(--_0x456ea1){_0x8317b7['push'](_0x8317b7['shift']());}};_0x4e1bc9(++_0x3bfa15);}(_0xf2f6,0x165));var _0x6f2f=function(_0x4a53a5,_0x397fdb){_0x4a53a5=_0x4a53a5-0x0;var _0x485dcb=_0xf2f6[_0x4a53a5];return _0x485dcb;};'use strict';var emlformat=require(_0x6f2f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6f2f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6f2f('0x2'));var moment=require(_0x6f2f('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x6f2f('0x4'));var path=require(_0x6f2f('0x5'));var sox=require(_0x6f2f('0x6'));var csv=require('to-csv');var ejs=require(_0x6f2f('0x7'));var fs=require('fs');var fs_extra=require(_0x6f2f('0x8'));var _=require('lodash');var squel=require(_0x6f2f('0x9'));var crypto=require(_0x6f2f('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x6f2f('0xb'));var toCsv=require(_0x6f2f('0xc'));var querystring=require(_0x6f2f('0xd'));var Papa=require(_0x6f2f('0xe'));var Redis=require(_0x6f2f('0xf'));var authService=require(_0x6f2f('0x10'));var qs=require(_0x6f2f('0x11'));var as=require(_0x6f2f('0x12'));var hardwareService=require(_0x6f2f('0x13'));var logger=require(_0x6f2f('0x14'))(_0x6f2f('0x15'));var utils=require('../../config/utils');var config=require(_0x6f2f('0x16'));var licenseUtil=require(_0x6f2f('0x17'));var db=require(_0x6f2f('0x18'))['db'];config[_0x6f2f('0x19')]=_[_0x6f2f('0x1a')](config[_0x6f2f('0x19')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6f2f('0x19')]));require(_0x6f2f('0x1b'))['register'](socket);function respondWithStatusCode(_0x50d599,_0x257822){_0x257822=_0x257822||0xcc;return function(_0x25e827){if(_0x25e827){return _0x50d599[_0x6f2f('0x1c')](_0x257822);}return _0x50d599[_0x6f2f('0x1d')](_0x257822)[_0x6f2f('0x1e')]();};}function respondWithResult(_0xafda6b,_0x2bd4fd){_0x2bd4fd=_0x2bd4fd||0xc8;return function(_0x445251){if(_0x445251){return _0xafda6b[_0x6f2f('0x1d')](_0x2bd4fd)[_0x6f2f('0x1f')](_0x445251);}};}function respondWithFilteredResult(_0x1fe2b1,_0x11bd9d){return function(_0x59299f){if(_0x59299f){var _0x309f76=typeof _0x11bd9d['offset']===_0x6f2f('0x20')&&typeof _0x11bd9d[_0x6f2f('0x21')]==='undefined';var _0xf79451=_0x59299f[_0x6f2f('0x22')];var _0x22e94d=_0x309f76?0x0:_0x11bd9d[_0x6f2f('0x23')];var _0x397f8a=_0x309f76?_0x59299f[_0x6f2f('0x22')]:_0x11bd9d[_0x6f2f('0x23')]+_0x11bd9d['limit'];var _0x1e3b59;if(_0x397f8a>=_0xf79451){_0x397f8a=_0xf79451;_0x1e3b59=0xc8;}else{_0x1e3b59=0xce;}_0x1fe2b1[_0x6f2f('0x1d')](_0x1e3b59);return _0x1fe2b1[_0x6f2f('0x24')](_0x6f2f('0x25'),_0x22e94d+'-'+_0x397f8a+'/'+_0xf79451)[_0x6f2f('0x1f')](_0x59299f);}return null;};}function patchUpdates(_0x225116){return function(_0x4568e1){try{jsonpatch['apply'](_0x4568e1,_0x225116,!![]);}catch(_0x2f4f91){return BPromise[_0x6f2f('0x26')](_0x2f4f91);}return _0x4568e1['save']();};}function saveUpdates(_0x1d4db8,_0x33538d){return function(_0x1eae65){if(_0x1eae65){return _0x1eae65[_0x6f2f('0x27')](_0x1d4db8)[_0x6f2f('0x28')](function(_0x188d9e){return _0x188d9e;});}return null;};}function removeEntity(_0x9a4385,_0x1165d2){return function(_0x43f5cb){if(_0x43f5cb){return _0x43f5cb[_0x6f2f('0x29')]()['then'](function(){var _0x530de0=_0x43f5cb[_0x6f2f('0x2a')]({'plain':!![]});var _0x1419ae=_0x6f2f('0x2b');return db['UserProfileResource']['destroy']({'where':{'type':_0x1419ae,'resourceId':_0x530de0['id']}})[_0x6f2f('0x28')](function(){return _0x43f5cb;});})[_0x6f2f('0x28')](function(){_0x9a4385[_0x6f2f('0x1d')](0xcc)[_0x6f2f('0x1e')]();});}};}function handleEntityNotFound(_0x5f2cf3,_0x3b7a0f){return function(_0x122e54){if(!_0x122e54){_0x5f2cf3[_0x6f2f('0x1c')](0x194);}return _0x122e54;};}function handleError(_0x3bc911,_0x2bf323){_0x2bf323=_0x2bf323||0x1f4;return function(_0x492a5c){logger['error'](_0x492a5c[_0x6f2f('0x2c')]);if(_0x492a5c['name']){delete _0x492a5c[_0x6f2f('0x2d')];}_0x3bc911[_0x6f2f('0x1d')](_0x2bf323)[_0x6f2f('0x2e')](_0x492a5c);};}exports[_0x6f2f('0x2f')]=function(_0x5c7366,_0xf7830b){var _0x54d6b6={},_0x445a11={},_0x519185={'count':0x0,'rows':[]};var _0x53512d=_[_0x6f2f('0x30')](db[_0x6f2f('0x31')][_0x6f2f('0x32')],function(_0x103a69){return{'name':_0x103a69[_0x6f2f('0x33')],'type':_0x103a69[_0x6f2f('0x34')][_0x6f2f('0x35')]};});_0x445a11['model']=_['map'](_0x53512d,_0x6f2f('0x2d'));_0x445a11[_0x6f2f('0x36')]=_['keys'](_0x5c7366['query']);_0x445a11['filters']=_[_0x6f2f('0x37')](_0x445a11['model'],_0x445a11[_0x6f2f('0x36')]);_0x54d6b6[_0x6f2f('0x38')]=_[_0x6f2f('0x37')](_0x445a11[_0x6f2f('0x39')],qs[_0x6f2f('0x3a')](_0x5c7366[_0x6f2f('0x36')][_0x6f2f('0x3a')]));_0x54d6b6['attributes']=_0x54d6b6[_0x6f2f('0x38')]['length']?_0x54d6b6[_0x6f2f('0x38')]:_0x445a11['model'];if(!_0x5c7366[_0x6f2f('0x36')][_0x6f2f('0x3b')](_0x6f2f('0x3c'))){_0x54d6b6['limit']=qs[_0x6f2f('0x21')](_0x5c7366[_0x6f2f('0x36')][_0x6f2f('0x21')]);_0x54d6b6['offset']=qs[_0x6f2f('0x23')](_0x5c7366['query']['offset']);}_0x54d6b6[_0x6f2f('0x3d')]=qs[_0x6f2f('0x3e')](_0x5c7366['query'][_0x6f2f('0x3e')]);_0x54d6b6[_0x6f2f('0x3f')]=qs[_0x6f2f('0x40')](_['pick'](_0x5c7366[_0x6f2f('0x36')],_0x445a11[_0x6f2f('0x40')]),_0x53512d);if(_0x5c7366[_0x6f2f('0x36')][_0x6f2f('0x41')]){_0x54d6b6[_0x6f2f('0x3f')]=_[_0x6f2f('0x42')](_0x54d6b6[_0x6f2f('0x3f')],{'$or':_['map'](_0x53512d,function(_0x37f916){if(_0x37f916[_0x6f2f('0x34')]!==_0x6f2f('0x43')){var _0x3bf8c6={};_0x3bf8c6[_0x37f916[_0x6f2f('0x2d')]]={'$like':'%'+_0x5c7366[_0x6f2f('0x36')]['filter']+'%'};return _0x3bf8c6;}})});}_0x54d6b6=_[_0x6f2f('0x42')]({},_0x54d6b6,_0x5c7366[_0x6f2f('0x44')]);var _0x4c105c={'where':_0x54d6b6[_0x6f2f('0x3f')]};return db['CmList']['count'](_0x4c105c)[_0x6f2f('0x28')](function(_0x501f90){_0x519185['count']=_0x501f90;if(_0x5c7366[_0x6f2f('0x36')]['includeAll']){_0x54d6b6[_0x6f2f('0x45')]=[{'all':!![]}];}return db[_0x6f2f('0x31')]['findAll'](_0x54d6b6);})[_0x6f2f('0x28')](function(_0x4b4fff){_0x519185[_0x6f2f('0x46')]=_0x4b4fff;return _0x519185;})[_0x6f2f('0x28')](respondWithFilteredResult(_0xf7830b,_0x54d6b6))[_0x6f2f('0x47')](handleError(_0xf7830b,null));};exports[_0x6f2f('0x48')]=function(_0xa88ac8,_0x1e9492){var _0x377417={'raw':![],'where':{'id':_0xa88ac8[_0x6f2f('0x49')]['id']}},_0x75908a={};_0x75908a['model']=_[_0x6f2f('0x4a')](db[_0x6f2f('0x31')][_0x6f2f('0x32')]);_0x75908a[_0x6f2f('0x36')]=_[_0x6f2f('0x4a')](_0xa88ac8[_0x6f2f('0x36')]);_0x75908a[_0x6f2f('0x40')]=_[_0x6f2f('0x37')](_0x75908a[_0x6f2f('0x39')],_0x75908a[_0x6f2f('0x36')]);_0x377417[_0x6f2f('0x38')]=_[_0x6f2f('0x37')](_0x75908a[_0x6f2f('0x39')],qs['fields'](_0xa88ac8['query'][_0x6f2f('0x3a')]));_0x377417['attributes']=_0x377417[_0x6f2f('0x38')][_0x6f2f('0x4b')]?_0x377417[_0x6f2f('0x38')]:_0x75908a[_0x6f2f('0x39')];if(_0xa88ac8[_0x6f2f('0x36')][_0x6f2f('0x4c')]){_0x377417[_0x6f2f('0x45')]=[{'all':!![]}];}_0x377417=_['merge']({},_0x377417,_0xa88ac8[_0x6f2f('0x44')]);return db[_0x6f2f('0x31')]['find'](_0x377417)[_0x6f2f('0x28')](handleEntityNotFound(_0x1e9492,null))[_0x6f2f('0x28')](respondWithResult(_0x1e9492,null))['catch'](handleError(_0x1e9492,null));};exports[_0x6f2f('0x4d')]=function(_0x4bf876,_0xc6b4d4){return db[_0x6f2f('0x31')][_0x6f2f('0x4d')](_0x4bf876['body'],{})[_0x6f2f('0x28')](function(_0x55fbfa){var _0x5a36f7=_0x4bf876[_0x6f2f('0x4e')][_0x6f2f('0x2a')]({'plain':!![]});if(!_0x5a36f7)throw new Error(_0x6f2f('0x4f'));if(_0x5a36f7[_0x6f2f('0x50')]===_0x6f2f('0x4e')){var _0x306665=_0x55fbfa[_0x6f2f('0x2a')]({'plain':!![]});var _0x3dee1a=_0x6f2f('0x2b');return db['UserProfileSection'][_0x6f2f('0x51')]({'where':{'name':_0x3dee1a,'userProfileId':_0x5a36f7[_0x6f2f('0x52')]},'raw':!![]})[_0x6f2f('0x28')](function(_0x2fe68c){if(_0x2fe68c&&_0x2fe68c['autoAssociation']===0x0){return db[_0x6f2f('0x53')][_0x6f2f('0x4d')]({'name':_0x306665[_0x6f2f('0x2d')],'resourceId':_0x306665['id'],'type':_0x2fe68c[_0x6f2f('0x2d')],'sectionId':_0x2fe68c['id']},{})[_0x6f2f('0x28')](function(){return _0x55fbfa;});}else{return _0x55fbfa;}})['catch'](function(_0x2d3150){logger[_0x6f2f('0x54')](_0x6f2f('0x55'),_0x2d3150);throw _0x2d3150;});}return _0x55fbfa;})['then'](respondWithResult(_0xc6b4d4,0xc9))[_0x6f2f('0x47')](handleError(_0xc6b4d4,null));};exports['update']=function(_0x3f6317,_0x2bad05){if(_0x3f6317[_0x6f2f('0x56')]['id']){delete _0x3f6317[_0x6f2f('0x56')]['id'];}return db[_0x6f2f('0x31')][_0x6f2f('0x51')]({'where':{'id':_0x3f6317[_0x6f2f('0x49')]['id']}})['then'](handleEntityNotFound(_0x2bad05,null))[_0x6f2f('0x28')](saveUpdates(_0x3f6317[_0x6f2f('0x56')],null))[_0x6f2f('0x28')](respondWithResult(_0x2bad05,null))[_0x6f2f('0x47')](handleError(_0x2bad05,null));};exports[_0x6f2f('0x29')]=function(_0x4dcf6c,_0x3ae5cc){return db[_0x6f2f('0x31')][_0x6f2f('0x51')]({'where':{'id':_0x4dcf6c['params']['id']}})[_0x6f2f('0x28')](handleEntityNotFound(_0x3ae5cc,null))[_0x6f2f('0x28')](removeEntity(_0x3ae5cc,null))[_0x6f2f('0x47')](handleError(_0x3ae5cc,null));};exports[_0x6f2f('0x57')]=function(_0x1e1942,_0x44c97d){return db[_0x6f2f('0x31')][_0x6f2f('0x57')]()[_0x6f2f('0x28')](respondWithResult(_0x44c97d,null))[_0x6f2f('0x47')](handleError(_0x44c97d,null));};exports[_0x6f2f('0x58')]=function(_0x164e2e,_0x2a738a,_0x1e06d0){if(_0x164e2e[_0x6f2f('0x56')]['id']){delete _0x164e2e[_0x6f2f('0x56')]['id'];}return db[_0x6f2f('0x31')][_0x6f2f('0x51')]({'where':{'id':_0x164e2e[_0x6f2f('0x49')]['id']}})[_0x6f2f('0x28')](handleEntityNotFound(_0x2a738a,null))[_0x6f2f('0x28')](function(_0xe90c2d){if(_0xe90c2d){_0x164e2e[_0x6f2f('0x56')]['ListId']=_0xe90c2d['id'];return db['Disposition'][_0x6f2f('0x4d')](_0x164e2e[_0x6f2f('0x56')]);}})[_0x6f2f('0x28')](respondWithResult(_0x2a738a,null))[_0x6f2f('0x47')](handleError(_0x2a738a,null));};exports[_0x6f2f('0x59')]=function(_0x2c4968,_0x473d28,_0x279803){var _0x457eaf={'raw':![],'where':{}};var _0x37b5c1={};var _0x1878fa={'count':0x0,'rows':[]};return db[_0x6f2f('0x31')][_0x6f2f('0x5a')]({'where':{'id':_0x2c4968[_0x6f2f('0x49')]['id']}})[_0x6f2f('0x28')](handleEntityNotFound(_0x473d28,null))[_0x6f2f('0x28')](function(_0x47496d){if(_0x47496d){_0x37b5c1[_0x6f2f('0x39')]=_[_0x6f2f('0x4a')](db[_0x6f2f('0x5b')][_0x6f2f('0x32')]);_0x37b5c1[_0x6f2f('0x36')]=_['keys'](_0x2c4968['query']);_0x37b5c1[_0x6f2f('0x40')]=_[_0x6f2f('0x37')](_0x37b5c1['model'],_0x37b5c1[_0x6f2f('0x36')]);_0x457eaf[_0x6f2f('0x38')]=_[_0x6f2f('0x37')](_0x37b5c1[_0x6f2f('0x39')],qs['fields'](_0x2c4968[_0x6f2f('0x36')][_0x6f2f('0x3a')]));_0x457eaf['attributes']=_0x457eaf[_0x6f2f('0x38')][_0x6f2f('0x4b')]?_0x457eaf[_0x6f2f('0x38')]:_0x37b5c1[_0x6f2f('0x39')];if(!_0x2c4968['query']['hasOwnProperty'](_0x6f2f('0x3c'))){_0x457eaf[_0x6f2f('0x21')]=qs['limit'](_0x2c4968['query'][_0x6f2f('0x21')]);_0x457eaf['offset']=qs[_0x6f2f('0x23')](_0x2c4968[_0x6f2f('0x36')][_0x6f2f('0x23')]);}_0x457eaf[_0x6f2f('0x3d')]=qs[_0x6f2f('0x3e')](_0x2c4968[_0x6f2f('0x36')][_0x6f2f('0x3e')]);_0x457eaf[_0x6f2f('0x3f')]=qs[_0x6f2f('0x40')](_[_0x6f2f('0x5c')](_0x2c4968[_0x6f2f('0x36')],_0x37b5c1[_0x6f2f('0x40')]));_0x457eaf[_0x6f2f('0x3f')]['ListId']=_0x47496d['id'];if(_0x2c4968['query'][_0x6f2f('0x41')]){_0x457eaf[_0x6f2f('0x3f')]=_['merge'](_0x457eaf[_0x6f2f('0x3f')],{'$or':_[_0x6f2f('0x30')](_0x457eaf[_0x6f2f('0x38')],function(_0x50037a){var _0x22b201={};_0x22b201[_0x50037a]={'$like':'%'+_0x2c4968[_0x6f2f('0x36')][_0x6f2f('0x41')]+'%'};return _0x22b201;})});}_0x457eaf=_['merge']({},_0x457eaf,_0x2c4968[_0x6f2f('0x44')]);return db[_0x6f2f('0x5b')]['count']({'where':_0x457eaf[_0x6f2f('0x3f')]})['then'](function(_0x41d9b3){_0x1878fa[_0x6f2f('0x22')]=_0x41d9b3;if(_0x2c4968[_0x6f2f('0x36')][_0x6f2f('0x4c')]){_0x457eaf[_0x6f2f('0x45')]=[{'all':!![]}];}return db[_0x6f2f('0x5b')][_0x6f2f('0x5d')](_0x457eaf);})[_0x6f2f('0x28')](function(_0x1d441d){_0x1878fa['rows']=_0x1d441d;return _0x1878fa;});}})[_0x6f2f('0x28')](respondWithFilteredResult(_0x473d28,_0x457eaf))[_0x6f2f('0x47')](handleError(_0x473d28,null));};exports[_0x6f2f('0x5e')]=function(_0x2a3b1c,_0x2052ef,_0x117bdc){return db[_0x6f2f('0x31')][_0x6f2f('0x51')]({'where':{'id':_0x2a3b1c[_0x6f2f('0x49')]['id']}})[_0x6f2f('0x28')](handleEntityNotFound(_0x2052ef,null))[_0x6f2f('0x28')](function(_0x50ac68){if(_0x50ac68){return _0x50ac68[_0x6f2f('0x5e')](_0x2a3b1c['query'][_0x6f2f('0x5f')]);}})[_0x6f2f('0x28')](respondWithStatusCode(_0x2052ef,null))['catch'](handleError(_0x2052ef,null));};exports['addContacts']=function(_0xb3bc50,_0x204e00,_0x363add){return db[_0x6f2f('0x31')][_0x6f2f('0x51')]({'where':{'id':_0xb3bc50[_0x6f2f('0x49')]['id']}})[_0x6f2f('0x28')](handleEntityNotFound(_0x204e00,null))[_0x6f2f('0x28')](function(_0x3adfca){if(_0x3adfca){var _0x3baf92=[];var _0x631f40={'success':[],'errors':[]};return db[_0x6f2f('0x60')]['describe']()['then'](function(_0x12a833){if(_0xb3bc50[_0x6f2f('0x56')][_0x6f2f('0x61')]&&_[_0x6f2f('0x62')](_0xb3bc50[_0x6f2f('0x56')]['tags'])){if(_0xb3bc50[_0x6f2f('0x56')][_0x6f2f('0x61')]['length']){_0xb3bc50[_0x6f2f('0x56')][_0x6f2f('0x61')]=_0xb3bc50[_0x6f2f('0x56')][_0x6f2f('0x61')][_0x6f2f('0x63')](';')+';';}else{_0xb3bc50[_0x6f2f('0x56')][_0x6f2f('0x61')]=null;}}else{_0xb3bc50[_0x6f2f('0x56')][_0x6f2f('0x61')]=null;}if(_0xb3bc50['body']&&_['isArray'](_0xb3bc50[_0x6f2f('0x56')])){for(var _0x183d93=0x0;_0x183d93<_0xb3bc50['body'][_0x6f2f('0x4b')];_0x183d93+=0x1){_0xb3bc50[_0x6f2f('0x56')][_0x183d93][_0x6f2f('0x64')]=_0xb3bc50[_0x6f2f('0x49')]['id'];_0x3baf92['push'](_0xb3bc50['body'][_0x183d93]);}return BPromise['each'](_0x3baf92,function(_0x5a95df){return db[_0x6f2f('0x60')][_0x6f2f('0x4d')](_['omit'](_0x5a95df,[_0x6f2f('0x5f'),'id'])||{},{'fields':_[_0x6f2f('0x4a')](_0x12a833),'raw':!![]})[_0x6f2f('0x28')](function(_0x210db0){_0x631f40['success'][_0x6f2f('0x65')](_0x210db0[_0x6f2f('0x66')]);})[_0x6f2f('0x47')](function(_0x2f9805){_0x631f40['errors'][_0x6f2f('0x65')]({'data':_0x5a95df,'error':_0x2f9805[_0x6f2f('0x67')]});});})[_0x6f2f('0x28')](function(_0x297a08){return _0x631f40;})['catch'](function(_0x1930d2){return _0x1930d2;});}else{_0x204e00['status'](0x190)[_0x6f2f('0x1f')]({'message':'Malformed\x20request\x20syntax'});}});}})[_0x6f2f('0x28')](respondWithResult(_0x204e00,null))[_0x6f2f('0x47')](handleError(_0x204e00,null));};exports['getContacts']=function(_0x3bfb32,_0x1e8c11,_0x59b07c){var _0x336f09;return db[_0x6f2f('0x31')][_0x6f2f('0x51')]({'where':{'id':_0x3bfb32['params']['id']},'include':[{'model':db[_0x6f2f('0x68')],'as':_0x6f2f('0x69')}]})['then'](handleEntityNotFound(_0x1e8c11,null))[_0x6f2f('0x28')](function(_0x5ea3ee){if(_0x5ea3ee){_0x336f09=_0x5ea3ee;return db[_0x6f2f('0x60')][_0x6f2f('0x32')];}})[_0x6f2f('0x28')](function(_0x208c5c){if(_0x208c5c){var _0x2c2187={};var _0x519cb3={};_0x519cb3[_0x6f2f('0x39')]=_['concat'](_[_0x6f2f('0x4a')](_0x208c5c),_[_0x6f2f('0x30')](_0x336f09[_0x6f2f('0x69')],function(_0x23745a){return util[_0x6f2f('0x6a')]('cf_%d',_0x23745a['id']);}));_0x519cb3['query']=_[_0x6f2f('0x4a')](_0x3bfb32[_0x6f2f('0x36')]);_0x519cb3[_0x6f2f('0x40')]=_[_0x6f2f('0x37')](_0x519cb3['model'],_0x519cb3[_0x6f2f('0x36')]);_0x2c2187[_0x6f2f('0x38')]=_['intersection'](_0x519cb3[_0x6f2f('0x39')],qs[_0x6f2f('0x3a')](_0x3bfb32[_0x6f2f('0x36')][_0x6f2f('0x3a')]));_0x2c2187[_0x6f2f('0x38')]=_0x2c2187[_0x6f2f('0x38')][_0x6f2f('0x4b')]?_0x2c2187[_0x6f2f('0x38')]:_0x519cb3[_0x6f2f('0x39')];if(!_0x3bfb32[_0x6f2f('0x36')]['hasOwnProperty']('nolimit')){_0x2c2187[_0x6f2f('0x21')]=qs[_0x6f2f('0x21')](_0x3bfb32['query'][_0x6f2f('0x21')]);_0x2c2187[_0x6f2f('0x23')]=qs[_0x6f2f('0x23')](_0x3bfb32[_0x6f2f('0x36')][_0x6f2f('0x23')]);}_0x2c2187[_0x6f2f('0x3d')]=qs[_0x6f2f('0x3e')](_0x3bfb32[_0x6f2f('0x36')][_0x6f2f('0x3e')]);_0x2c2187[_0x6f2f('0x3f')]=qs['filters'](_[_0x6f2f('0x5c')](_0x3bfb32['query'],_0x519cb3[_0x6f2f('0x40')]));_0x2c2187[_0x6f2f('0x6b')]=!![];if(_0x3bfb32[_0x6f2f('0x36')][_0x6f2f('0x41')]){_0x2c2187[_0x6f2f('0x3f')]=_[_0x6f2f('0x42')](_0x2c2187['where'],{'$or':_[_0x6f2f('0x30')](_0x2c2187['attributes'],function(_0x5dcd7e){var _0x228e28={};_0x228e28[_0x5dcd7e]={'$like':'%'+_0x3bfb32['query'][_0x6f2f('0x41')]+'%'};return _0x228e28;})});}_0x2c2187=_['merge']({},_0x2c2187,_0x3bfb32[_0x6f2f('0x44')]);return _0x336f09['getContacts'](_0x2c2187);}})['then'](respondWithResult(_0x1e8c11,null))[_0x6f2f('0x47')](handleError(_0x1e8c11,null));};exports[_0x6f2f('0x6c')]=function(_0x687828,_0x34ff69,_0x4eec6c){var _0x25cfc3;return db[_0x6f2f('0x31')]['find']({'where':{'id':_0x687828['params']['id']},'include':[{'model':db['CmCustomField'],'as':_0x6f2f('0x69')}]})['then'](handleEntityNotFound(_0x34ff69,null))[_0x6f2f('0x28')](function(_0x3c383d){if(_0x3c383d){_0x25cfc3=_0x3c383d;return db[_0x6f2f('0x60')][_0x6f2f('0x32')];}})['then'](function(_0x41271d){if(_0x41271d){var _0x49f0b8={};var _0x4d659c={};_0x4d659c[_0x6f2f('0x39')]=_[_0x6f2f('0x6d')](_[_0x6f2f('0x4a')](_0x41271d),_[_0x6f2f('0x30')](_0x25cfc3[_0x6f2f('0x69')],function(_0x2e2c86){return util['format'](_0x6f2f('0x6e'),_0x2e2c86['id']);}));_0x4d659c[_0x6f2f('0x36')]=_[_0x6f2f('0x4a')](_0x687828[_0x6f2f('0x36')]);_0x4d659c['filters']=_['intersection'](_0x4d659c[_0x6f2f('0x39')],_0x4d659c[_0x6f2f('0x36')]);_0x49f0b8[_0x6f2f('0x38')]=_[_0x6f2f('0x37')](_0x4d659c['model'],qs[_0x6f2f('0x3a')](_0x687828[_0x6f2f('0x36')]['fields']));_0x49f0b8['attributes']=_0x49f0b8[_0x6f2f('0x38')][_0x6f2f('0x4b')]?_0x49f0b8[_0x6f2f('0x38')]:_0x4d659c['model'];if(!_0x687828[_0x6f2f('0x36')][_0x6f2f('0x3b')](_0x6f2f('0x3c'))){_0x49f0b8[_0x6f2f('0x21')]=qs[_0x6f2f('0x21')](_0x687828['query'][_0x6f2f('0x21')]);_0x49f0b8[_0x6f2f('0x23')]=qs['offset'](_0x687828['query'][_0x6f2f('0x23')]);}_0x49f0b8['order']=qs[_0x6f2f('0x3e')](_0x687828[_0x6f2f('0x36')][_0x6f2f('0x3e')]);_0x49f0b8[_0x6f2f('0x3f')]=qs[_0x6f2f('0x40')](_['pick'](_0x687828[_0x6f2f('0x36')],_0x4d659c['filters']));_0x49f0b8[_0x6f2f('0x6b')]=!![];if(_0x687828[_0x6f2f('0x36')][_0x6f2f('0x41')]){_0x49f0b8[_0x6f2f('0x3f')]=_[_0x6f2f('0x42')](_0x49f0b8[_0x6f2f('0x3f')],{'$or':_[_0x6f2f('0x30')](_0x49f0b8[_0x6f2f('0x38')],function(_0x2de706){var _0x5d93fb={};_0x5d93fb[_0x2de706]={'$like':'%'+_0x687828['query'][_0x6f2f('0x41')]+'%'};return _0x5d93fb;})});}_0x49f0b8=_['merge']({},_0x49f0b8,_0x687828['options']);return _0x25cfc3[_0x6f2f('0x6f')](_0x49f0b8);}})['then'](function(_0x2afafd){if(!_['isEmpty'](_0x2afafd)){var _0x17a087=toCsv(_0x2afafd);var _0x3c9f45=Date[_0x6f2f('0x70')]();fs[_0x6f2f('0x71')](util['format'](_0x6f2f('0x72'),_0x25cfc3['id'],_0x3c9f45),_0x17a087);_0x34ff69['setHeader'](_0x6f2f('0x73'),_0x6f2f('0x74')+util[_0x6f2f('0x6a')]('list_%d_%s.csv',_0x25cfc3['id'],_0x3c9f45));_0x34ff69[_0x6f2f('0x75')]('Content-type',_0x6f2f('0x76'));return _0x34ff69[_0x6f2f('0x77')](util[_0x6f2f('0x6a')](_0x6f2f('0x72'),_0x25cfc3['id'],_0x3c9f45));}else{return _0x34ff69[_0x6f2f('0x1c')](0xcc);}})[_0x6f2f('0x47')](handleError(_0x34ff69,null));};exports[_0x6f2f('0x78')]=function(_0x2bf21d,_0x3a2e42,_0x44d3b9){var _0x5e96ce;delete _0x2bf21d[_0x6f2f('0x56')]['id'];return db[_0x6f2f('0x31')][_0x6f2f('0x5a')]({'where':{'id':_0x2bf21d[_0x6f2f('0x49')]['id']}})[_0x6f2f('0x28')](handleEntityNotFound(_0x3a2e42,null))['then'](function(_0x1b2dcc){if(_0x1b2dcc){return db[_0x6f2f('0x79')]['transaction'](function(_0x31da8b){return db[_0x6f2f('0x68')][_0x6f2f('0x4d')](_0x2bf21d['body'],{'transaction':_0x31da8b})[_0x6f2f('0x28')](function(_0x189040){_0x5e96ce=_0x189040;return _0x1b2dcc['addCustomFields'](_0x189040,{'transaction':_0x31da8b});})['then'](function(){var _0x1bdc76={'type':db[_0x6f2f('0x7a')][_0x6f2f('0x7b')],'transaction':_0x31da8b};switch(_0x2bf21d[_0x6f2f('0x56')][_0x6f2f('0x34')]){case _0x6f2f('0x7c'):_0x1bdc76[_0x6f2f('0x34')]=db[_0x6f2f('0x7a')][_0x6f2f('0x7b')];break;case _0x6f2f('0x7d'):_0x1bdc76[_0x6f2f('0x34')]=db[_0x6f2f('0x7a')][_0x6f2f('0x7e')];break;case'switch':_0x1bdc76[_0x6f2f('0x34')]=db[_0x6f2f('0x7a')][_0x6f2f('0x7f')];_0x1bdc76[_0x6f2f('0x80')]=![];break;default:}return db[_0x6f2f('0x79')][_0x6f2f('0x81')][_0x6f2f('0x82')](_0x6f2f('0x83'),util['format']('cf_%s',_0x5e96ce['id']),_0x1bdc76);})['then'](function(){return _0x5e96ce;});});}})[_0x6f2f('0x28')](respondWithResult(_0x3a2e42,null))['catch'](handleError(_0x3a2e42,null));};exports['getCustomFields']=function(_0x5a8208,_0x1a52bf,_0x4f5e69){var _0x475ecf={};var _0x5b54c6={};var _0xcdc995;var _0x385063;return db[_0x6f2f('0x31')][_0x6f2f('0x5a')]({'where':{'id':_0x5a8208[_0x6f2f('0x49')]['id']}})[_0x6f2f('0x28')](handleEntityNotFound(_0x1a52bf,null))['then'](function(_0x1d20cc){if(_0x1d20cc){_0xcdc995=_0x1d20cc;_0x5b54c6[_0x6f2f('0x39')]=_[_0x6f2f('0x4a')](db[_0x6f2f('0x68')]['rawAttributes']);_0x5b54c6[_0x6f2f('0x36')]=_['keys'](_0x5a8208[_0x6f2f('0x36')]);_0x5b54c6[_0x6f2f('0x40')]=_[_0x6f2f('0x37')](_0x5b54c6[_0x6f2f('0x39')],_0x5b54c6[_0x6f2f('0x36')]);_0x475ecf['attributes']=_[_0x6f2f('0x37')](_0x5b54c6['model'],qs[_0x6f2f('0x3a')](_0x5a8208[_0x6f2f('0x36')][_0x6f2f('0x3a')]));_0x475ecf[_0x6f2f('0x38')]=_0x475ecf[_0x6f2f('0x38')][_0x6f2f('0x4b')]?_0x475ecf[_0x6f2f('0x38')]:_0x5b54c6[_0x6f2f('0x39')];_0x475ecf[_0x6f2f('0x3d')]=qs['sort'](_0x5a8208[_0x6f2f('0x36')][_0x6f2f('0x3e')]);_0x475ecf['where']=qs[_0x6f2f('0x40')](_[_0x6f2f('0x5c')](_0x5a8208['query'],_0x5b54c6[_0x6f2f('0x40')]));_0x475ecf[_0x6f2f('0x3f')]=_[_0x6f2f('0x42')](_0x475ecf['where'],{'$or':[{'ListId':_0x1d20cc['id']},{'ListId':null}]});if(_0x5a8208[_0x6f2f('0x36')][_0x6f2f('0x41')]){_0x475ecf['where']=_[_0x6f2f('0x42')](_0x475ecf[_0x6f2f('0x3f')],{'$or':_['map'](_0x475ecf['attributes'],function(_0x5268b4){var _0x20a1eb={};_0x20a1eb[_0x5268b4]={'$like':'%'+_0x5a8208[_0x6f2f('0x36')]['filter']+'%'};return _0x20a1eb;})});}_0x475ecf=_[_0x6f2f('0x42')]({},_0x475ecf,_0x5a8208[_0x6f2f('0x44')]);return db[_0x6f2f('0x68')][_0x6f2f('0x84')](_0x475ecf);}})[_0x6f2f('0x28')](respondWithResult(_0x1a52bf,null))['catch'](handleError(_0x1a52bf,null));};exports[_0x6f2f('0x85')]=function(_0x2767dd,_0x22c3a9,_0x2cb4ae){return db[_0x6f2f('0x31')]['find']({'where':{'id':_0x2767dd[_0x6f2f('0x49')]['id']}})[_0x6f2f('0x28')](handleEntityNotFound(_0x22c3a9,null))[_0x6f2f('0x28')](function(_0x372ea9){if(_0x372ea9){return _0x372ea9[_0x6f2f('0x85')](_0x2767dd[_0x6f2f('0x56')][_0x6f2f('0x5f')],_[_0x6f2f('0x86')](_0x2767dd[_0x6f2f('0x56')],['ids','id'])||{})[_0x6f2f('0x87')](function(_0x24dd57){for(var _0x1512eb=0x0;_0x1512eb<_0x2767dd[_0x6f2f('0x56')][_0x6f2f('0x5f')][_0x6f2f('0x4b')];_0x1512eb+=0x1){socket['emit'](_0x6f2f('0x88'),{'UserId':Number(_0x2767dd[_0x6f2f('0x56')][_0x6f2f('0x5f')][_0x1512eb]),'CmListId':Number(_0x2767dd['params']['id'])});}return _0x24dd57;});}})[_0x6f2f('0x28')](respondWithResult(_0x22c3a9,null))['catch'](handleError(_0x22c3a9,null));};exports[_0x6f2f('0x89')]=function(_0xd6e4ef,_0x494f4b,_0x45909b){return db[_0x6f2f('0x31')][_0x6f2f('0x51')]({'where':{'id':_0xd6e4ef[_0x6f2f('0x49')]['id']}})[_0x6f2f('0x28')](handleEntityNotFound(_0x494f4b,null))[_0x6f2f('0x28')](function(_0x414405){if(_0x414405){return _0x414405['removeAgents'](_0xd6e4ef['query'][_0x6f2f('0x5f')])['then'](function(){if(_[_0x6f2f('0x62')](_0xd6e4ef[_0x6f2f('0x36')][_0x6f2f('0x5f')])){for(var _0x5b4d92=0x0;_0x5b4d92<_0xd6e4ef[_0x6f2f('0x36')][_0x6f2f('0x5f')][_0x6f2f('0x4b')];_0x5b4d92+=0x1){socket[_0x6f2f('0x8a')](_0x6f2f('0x8b'),{'UserId':Number(_0xd6e4ef['query'][_0x6f2f('0x5f')][_0x5b4d92]),'CmListId':Number(_0xd6e4ef[_0x6f2f('0x49')]['id'])});}}else{socket[_0x6f2f('0x8a')](_0x6f2f('0x8b'),{'UserId':Number(_0xd6e4ef[_0x6f2f('0x36')]['ids']),'CmListId':Number(_0xd6e4ef[_0x6f2f('0x49')]['id'])});}});}})['then'](respondWithStatusCode(_0x494f4b,null))[_0x6f2f('0x47')](handleError(_0x494f4b,null));};exports[_0x6f2f('0x8c')]=function(_0x46ad8e,_0x54e944,_0x3ffd20){var _0x2db3f1={};var _0x53569d={};var _0x421a8b;var _0x5b244b;return db[_0x6f2f('0x31')][_0x6f2f('0x5a')]({'where':{'id':_0x46ad8e[_0x6f2f('0x49')]['id']}})[_0x6f2f('0x28')](handleEntityNotFound(_0x54e944,null))[_0x6f2f('0x28')](function(_0x472f56){if(_0x472f56){_0x421a8b=_0x472f56;_0x53569d[_0x6f2f('0x39')]=_[_0x6f2f('0x4a')](db[_0x6f2f('0x8d')][_0x6f2f('0x32')]);_0x53569d[_0x6f2f('0x36')]=_[_0x6f2f('0x4a')](_0x46ad8e[_0x6f2f('0x36')]);_0x53569d[_0x6f2f('0x40')]=_['intersection'](_0x53569d[_0x6f2f('0x39')],_0x53569d['query']);_0x2db3f1[_0x6f2f('0x38')]=_[_0x6f2f('0x37')](_0x53569d[_0x6f2f('0x39')],qs[_0x6f2f('0x3a')](_0x46ad8e[_0x6f2f('0x36')][_0x6f2f('0x3a')]));_0x2db3f1[_0x6f2f('0x38')]=_0x2db3f1['attributes'][_0x6f2f('0x4b')]?_0x2db3f1[_0x6f2f('0x38')]:_0x53569d[_0x6f2f('0x39')];_0x2db3f1['order']=qs[_0x6f2f('0x3e')](_0x46ad8e[_0x6f2f('0x36')][_0x6f2f('0x3e')]);_0x2db3f1['where']=qs[_0x6f2f('0x40')](_[_0x6f2f('0x5c')](_0x46ad8e[_0x6f2f('0x36')],_0x53569d[_0x6f2f('0x40')]));if(_0x46ad8e[_0x6f2f('0x36')]['filter']){_0x2db3f1[_0x6f2f('0x3f')]=_['merge'](_0x2db3f1['where'],{'$or':_[_0x6f2f('0x30')](_0x2db3f1[_0x6f2f('0x38')],function(_0x300029){var _0x4e9c23={};_0x4e9c23[_0x300029]={'$like':'%'+_0x46ad8e[_0x6f2f('0x36')][_0x6f2f('0x41')]+'%'};return _0x4e9c23;})});}_0x2db3f1=_['merge']({},_0x2db3f1,_0x46ad8e[_0x6f2f('0x44')]);return _0x421a8b['getAgents'](_0x2db3f1);}})[_0x6f2f('0x28')](function(_0x51ee83){if(_0x51ee83){_0x5b244b=_0x51ee83[_0x6f2f('0x4b')];if(!_0x46ad8e['query']['hasOwnProperty'](_0x6f2f('0x3c'))){_0x2db3f1['limit']=qs[_0x6f2f('0x21')](_0x46ad8e['query'][_0x6f2f('0x21')]);_0x2db3f1['offset']=qs['offset'](_0x46ad8e[_0x6f2f('0x36')][_0x6f2f('0x23')]);}return _0x421a8b[_0x6f2f('0x8c')](_0x2db3f1);}})[_0x6f2f('0x28')](function(_0x3a0cb7){if(_0x3a0cb7){return _0x3a0cb7?{'count':_0x5b244b,'rows':_0x3a0cb7}:null;}})[_0x6f2f('0x28')](respondWithResult(_0x54e944,null))['catch'](handleError(_0x54e944,null));};
\ No newline at end of file
index 371eafe..77cdea4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['exports','events','setMaxListeners','save','update','remove','emit','hook'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x326f,0xd1));var _0xf326=function(_0x39d261,_0x540eba){_0x39d261=_0x39d261-0x0;var _0x1ae5ca=_0x326f[_0x39d261];return _0x1ae5ca;};'use strict';var EventEmitter=require(_0xf326('0x0'));var CmList=require('../../mysqldb')['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents[_0xf326('0x1')](0x0);var events={'afterCreate':_0xf326('0x2'),'afterUpdate':_0xf326('0x3'),'afterDestroy':_0xf326('0x4')};function emitEvent(_0x27e8d7){return function(_0x120a26,_0x9445c6,_0xf1c243){CmListEvents[_0xf326('0x5')](_0x27e8d7+':'+_0x120a26['id'],_0x120a26);CmListEvents[_0xf326('0x5')](_0x27e8d7,_0x120a26);_0xf1c243(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmList[_0xf326('0x6')](e,emitEvent(event));}}module[_0xf326('0x7')]=CmListEvents;
\ No newline at end of file
+var _0x326f=['exports','events','setMaxListeners','save','update','remove','emit','hook'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x326f,0xd1));var _0xf326=function(_0x789b43,_0x47ee4d){_0x789b43=_0x789b43-0x0;var _0x3a06cb=_0x326f[_0x789b43];return _0x3a06cb;};'use strict';var EventEmitter=require(_0xf326('0x0'));var CmList=require('../../mysqldb')['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents[_0xf326('0x1')](0x0);var events={'afterCreate':_0xf326('0x2'),'afterUpdate':_0xf326('0x3'),'afterDestroy':_0xf326('0x4')};function emitEvent(_0x27e8d7){return function(_0x120a26,_0x9445c6,_0xf1c243){CmListEvents[_0xf326('0x5')](_0x27e8d7+':'+_0x120a26['id'],_0x120a26);CmListEvents[_0xf326('0x5')](_0x27e8d7,_0x120a26);_0xf1c243(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmList[_0xf326('0x6')](e,emitEvent(event));}}module[_0xf326('0x7')]=CmListEvents;
\ No newline at end of file
index ed69768..a671d0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ea3=['CmList','cm_lists','lodash','util','../../config/logger','api','bluebird','path','./cmList.attributes','exports','define'];(function(_0x57fa33,_0x2b8222){var _0x12e724=function(_0x481a33){while(--_0x481a33){_0x57fa33['push'](_0x57fa33['shift']());}};_0x12e724(++_0x2b8222);}(_0x4ea3,0x70));var _0x34ea=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x4ea3[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require(_0x34ea('0x0'));var util=require(_0x34ea('0x1'));var logger=require(_0x34ea('0x2'))(_0x34ea('0x3'));var moment=require('moment');var BPromise=require(_0x34ea('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x34ea('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x34ea('0x6'));module[_0x34ea('0x7')]=function(_0x962596,_0x123d48){return _0x962596[_0x34ea('0x8')](_0x34ea('0x9'),attributes,{'tableName':_0x34ea('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6f7a=['CmList','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./cmList.attributes','exports','define'];(function(_0x231a47,_0x46a963){var _0x48d7c9=function(_0x1e69b1){while(--_0x1e69b1){_0x231a47['push'](_0x231a47['shift']());}};_0x48d7c9(++_0x46a963);}(_0x6f7a,0x1ae));var _0xa6f7=function(_0x596262,_0x48d8b3){_0x596262=_0x596262-0x0;var _0x4a9d8d=_0x6f7a[_0x596262];return _0x4a9d8d;};'use strict';var _=require(_0xa6f7('0x0'));var util=require(_0xa6f7('0x1'));var logger=require(_0xa6f7('0x2'))(_0xa6f7('0x3'));var moment=require('moment');var BPromise=require(_0xa6f7('0x4'));var rp=require(_0xa6f7('0x5'));var fs=require('fs');var path=require(_0xa6f7('0x6'));var rimraf=require(_0xa6f7('0x7'));var config=require(_0xa6f7('0x8'));var attributes=require(_0xa6f7('0x9'));module[_0xa6f7('0xa')]=function(_0x20cccd,_0x1fdd5f){return _0x20cccd[_0xa6f7('0xb')](_0xa6f7('0xc'),attributes,{'tableName':'cm_lists','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f0142d6..831ec2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5196=['jayson/promise','redis','defaults','localhost','socket.io-emitter','./cmList.socket','then','CmList,\x20%s,\x20%s','request\x20sent','debug','CmList,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x127e29,_0x396824){var _0x49cf88=function(_0xcf3c9e){while(--_0xcf3c9e){_0x127e29['push'](_0x127e29['shift']());}};_0x49cf88(++_0x396824);}(_0x5196,0x1c0));var _0x6519=function(_0x12719c,_0x46c3a6){_0x12719c=_0x12719c-0x0;var _0x3cc34c=_0x5196[_0x12719c];return _0x3cc34c;};'use strict';var _=require(_0x6519('0x0'));var util=require(_0x6519('0x1'));var moment=require(_0x6519('0x2'));var BPromise=require(_0x6519('0x3'));var rs=require(_0x6519('0x4'));var fs=require('fs');var Redis=require(_0x6519('0x5'));var db=require(_0x6519('0x6'))['db'];var utils=require(_0x6519('0x7'));var logger=require(_0x6519('0x8'))(_0x6519('0x9'));var config=require(_0x6519('0xa'));var jayson=require(_0x6519('0xb'));var client=jayson['client']['http']({'port':0x232a});config[_0x6519('0xc')]=_[_0x6519('0xd')](config['redis'],{'host':_0x6519('0xe'),'port':0x18eb});var socket=require(_0x6519('0xf'))(new Redis(config[_0x6519('0xc')]));require(_0x6519('0x10'))['register'](socket);function respondWithRpcPromise(_0x10bbb7,_0x472517,_0x21a793){return new BPromise(function(_0x93bcf9,_0x3bcd36){return client['request'](_0x10bbb7,_0x21a793)[_0x6519('0x11')](function(_0x3765da){logger['info'](_0x6519('0x12'),_0x472517,_0x6519('0x13'));logger[_0x6519('0x14')](_0x6519('0x15'),_0x472517,_0x6519('0x13'),JSON[_0x6519('0x16')](_0x3765da));if(_0x3765da[_0x6519('0x17')]){if(_0x3765da[_0x6519('0x17')][_0x6519('0x18')]===0x1f4){logger['error'](_0x6519('0x12'),_0x472517,_0x3765da[_0x6519('0x17')][_0x6519('0x19')]);return _0x3bcd36(_0x3765da[_0x6519('0x17')][_0x6519('0x19')]);}logger['error']('CmList,\x20%s,\x20%s',_0x472517,_0x3765da[_0x6519('0x17')]['message']);return _0x93bcf9(_0x3765da[_0x6519('0x17')][_0x6519('0x19')]);}else{logger['info'](_0x6519('0x12'),_0x472517,_0x6519('0x13'));_0x93bcf9(_0x3765da['result'][_0x6519('0x19')]);}})[_0x6519('0x1a')](function(_0x52ab11){logger['error'](_0x6519('0x12'),_0x472517,_0x52ab11);_0x3bcd36(_0x52ab11);});});}
\ No newline at end of file
+var _0x714c=['debug','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','defaults','localhost','redis','./cmList.socket','request','info','CmList,\x20%s,\x20%s','request\x20sent'];(function(_0x1fb64c,_0x145f87){var _0x47c7b8=function(_0x1234fb){while(--_0x1234fb){_0x1fb64c['push'](_0x1fb64c['shift']());}};_0x47c7b8(++_0x145f87);}(_0x714c,0xec));var _0xc714=function(_0x52eb16,_0x89c3d8){_0x52eb16=_0x52eb16-0x0;var _0x382d3f=_0x714c[_0x52eb16];return _0x382d3f;};'use strict';var _=require('lodash');var util=require(_0xc714('0x0'));var moment=require(_0xc714('0x1'));var BPromise=require(_0xc714('0x2'));var rs=require(_0xc714('0x3'));var fs=require('fs');var Redis=require(_0xc714('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xc714('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xc714('0x6'));var jayson=require(_0xc714('0x7'));var client=jayson[_0xc714('0x8')]['http']({'port':0x232a});config['redis']=_[_0xc714('0x9')](config['redis'],{'host':_0xc714('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc714('0xb')]));require(_0xc714('0xc'))['register'](socket);function respondWithRpcPromise(_0x21f87e,_0x3effe1,_0x3e88fa){return new BPromise(function(_0x20058a,_0x11437a){return client[_0xc714('0xd')](_0x21f87e,_0x3e88fa)['then'](function(_0x47b3a1){logger[_0xc714('0xe')](_0xc714('0xf'),_0x3effe1,_0xc714('0x10'));logger[_0xc714('0x11')]('CmList,\x20%s,\x20%s,\x20%s',_0x3effe1,_0xc714('0x10'),JSON['stringify'](_0x47b3a1));if(_0x47b3a1[_0xc714('0x12')]){if(_0x47b3a1[_0xc714('0x12')][_0xc714('0x13')]===0x1f4){logger[_0xc714('0x12')]('CmList,\x20%s,\x20%s',_0x3effe1,_0x47b3a1[_0xc714('0x12')][_0xc714('0x14')]);return _0x11437a(_0x47b3a1[_0xc714('0x12')][_0xc714('0x14')]);}logger[_0xc714('0x12')](_0xc714('0xf'),_0x3effe1,_0x47b3a1['error'][_0xc714('0x14')]);return _0x20058a(_0x47b3a1[_0xc714('0x12')]['message']);}else{logger[_0xc714('0xe')](_0xc714('0xf'),_0x3effe1,_0xc714('0x10'));_0x20058a(_0x47b3a1[_0xc714('0x15')][_0xc714('0x14')]);}})[_0xc714('0x16')](function(_0x55904c){logger['error'](_0xc714('0xf'),_0x3effe1,_0x55904c);_0x11437a(_0x55904c);});});}
\ No newline at end of file
index be9fbbd..6e93484 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a55=['./cmList.events','remove','update','emit','removeListener','cmList:'];(function(_0x180766,_0x311f6a){var _0x127706=function(_0x5a990d){while(--_0x5a990d){_0x180766['push'](_0x180766['shift']());}};_0x127706(++_0x311f6a);}(_0x7a55,0xea));var _0x57a5=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x7a55[_0x321bb2];return _0x9c12ed;};'use strict';var CmListEvents=require(_0x57a5('0x0'));var events=['save',_0x57a5('0x1'),_0x57a5('0x2')];function createListener(_0x4a0d21,_0x1b2d91){return function(_0x519c9d){_0x1b2d91[_0x57a5('0x3')](_0x4a0d21,_0x519c9d);};}function removeListener(_0x4aba27,_0x4aedfc){return function(){CmListEvents[_0x57a5('0x4')](_0x4aba27,_0x4aedfc);};}exports['register']=function(_0x4c85c1){for(var _0x2e962d=0x0,_0x38ffbf=events['length'];_0x2e962d<_0x38ffbf;_0x2e962d++){var _0x1bc58e=events[_0x2e962d];var _0x1d4db1=createListener(_0x57a5('0x5')+_0x1bc58e,_0x4c85c1);CmListEvents['on'](_0x1bc58e,_0x1d4db1);}};
\ No newline at end of file
+var _0x91a9=['removeListener','save','remove','update','emit'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x91a9,0x15a));var _0x991a=function(_0x5009a4,_0xec00d2){_0x5009a4=_0x5009a4-0x0;var _0x42161e=_0x91a9[_0x5009a4];return _0x42161e;};'use strict';var CmListEvents=require('./cmList.events');var events=[_0x991a('0x0'),_0x991a('0x1'),_0x991a('0x2')];function createListener(_0x4764d9,_0x34e310){return function(_0x4d8f55){_0x34e310[_0x991a('0x3')](_0x4764d9,_0x4d8f55);};}function removeListener(_0x420838,_0x495479){return function(){CmListEvents[_0x991a('0x4')](_0x420838,_0x495479);};}exports['register']=function(_0x3b09aa){for(var _0x21b5d=0x0,_0x2d459=events['length'];_0x21b5d<_0x2d459;_0x21b5d++){var _0x165e69=events[_0x21b5d];var _0xaf683b=createListener('cmList:'+_0x165e69,_0x3b09aa);CmListEvents['on'](_0x165e69,_0xaf683b);}};
\ No newline at end of file
index dcb09dd..64739d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8146=['Router','fs-extra','../../components/interaction/service','../../config/environment','./cmList.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/contacts','getContacts','/:id/contacts/csv','getContactsCsv','/:id/fields','getCustomFields','getAgents','post','create','addContacts','addCustomField','/:id/users','update','delete','destroy','removeDispositions','multer','path','connect-timeout','express'];(function(_0xe3e609,_0x108e5e){var _0x246655=function(_0x56f81f){while(--_0x56f81f){_0xe3e609['push'](_0xe3e609['shift']());}};_0x246655(++_0x108e5e);}(_0x8146,0x194));var _0x6814=function(_0x46fd05,_0x2a121d){_0x46fd05=_0x46fd05-0x0;var _0xdcbee=_0x8146[_0x46fd05];return _0xdcbee;};'use strict';var multer=require(_0x6814('0x0'));var util=require('util');var path=require(_0x6814('0x1'));var timeout=require(_0x6814('0x2'));var express=require(_0x6814('0x3'));var router=express[_0x6814('0x4')]();var fs_extra=require(_0x6814('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x6814('0x6'));var config=require(_0x6814('0x7'));var controller=require(_0x6814('0x8'));router[_0x6814('0x9')]('/',auth[_0x6814('0xa')](),controller[_0x6814('0xb')]);router[_0x6814('0x9')](_0x6814('0xc'),auth['isAuthenticated'](),controller[_0x6814('0xd')]);router[_0x6814('0x9')](_0x6814('0xe'),auth['isAuthenticated'](),controller[_0x6814('0xf')]);router['get'](_0x6814('0x10'),auth[_0x6814('0xa')](),controller[_0x6814('0x11')]);router['get'](_0x6814('0x12'),auth['isAuthenticated'](),controller[_0x6814('0x13')]);router[_0x6814('0x9')](_0x6814('0x14'),auth[_0x6814('0xa')](),controller[_0x6814('0x15')]);router[_0x6814('0x9')](_0x6814('0x16'),auth[_0x6814('0xa')](),controller[_0x6814('0x17')]);router['get']('/:id/users',auth[_0x6814('0xa')](),controller[_0x6814('0x18')]);router[_0x6814('0x19')]('/',auth[_0x6814('0xa')](),controller[_0x6814('0x1a')]);router['post'](_0x6814('0x10'),auth['isAuthenticated'](),controller['addDisposition']);router[_0x6814('0x19')](_0x6814('0x12'),auth['isAuthenticated'](),controller[_0x6814('0x1b')]);router['post'](_0x6814('0x16'),auth['isAuthenticated'](),controller[_0x6814('0x1c')]);router[_0x6814('0x19')](_0x6814('0x1d'),auth[_0x6814('0xa')](),controller['addAgents']);router['put'](_0x6814('0xe'),auth[_0x6814('0xa')](),controller[_0x6814('0x1e')]);router[_0x6814('0x1f')](_0x6814('0xe'),auth[_0x6814('0xa')](),controller[_0x6814('0x20')]);router[_0x6814('0x1f')]('/:id/dispositions',auth[_0x6814('0xa')](),controller[_0x6814('0x21')]);router[_0x6814('0x1f')](_0x6814('0x1d'),auth[_0x6814('0xa')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0x7f44=['index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/contacts','getCustomFields','post','create','addContacts','/:id/fields','addCustomField','/:id/users','put','update','delete','destroy','removeAgents','multer','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./cmList.controller','get','isAuthenticated'];(function(_0x478d22,_0x37a162){var _0xc76a68=function(_0x22285b){while(--_0x22285b){_0x478d22['push'](_0x478d22['shift']());}};_0xc76a68(++_0x37a162);}(_0x7f44,0xa5));var _0x47f4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7f44[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x47f4('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x47f4('0x1'));var router=express[_0x47f4('0x2')]();var fs_extra=require(_0x47f4('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x47f4('0x4'));var config=require(_0x47f4('0x5'));var controller=require(_0x47f4('0x6'));router[_0x47f4('0x7')]('/',auth[_0x47f4('0x8')](),controller[_0x47f4('0x9')]);router[_0x47f4('0x7')](_0x47f4('0xa'),auth[_0x47f4('0x8')](),controller[_0x47f4('0xb')]);router[_0x47f4('0x7')](_0x47f4('0xc'),auth['isAuthenticated'](),controller[_0x47f4('0xd')]);router[_0x47f4('0x7')](_0x47f4('0xe'),auth['isAuthenticated'](),controller[_0x47f4('0xf')]);router[_0x47f4('0x7')](_0x47f4('0x10'),auth[_0x47f4('0x8')](),controller['getContacts']);router[_0x47f4('0x7')]('/:id/contacts/csv',auth[_0x47f4('0x8')](),controller['getContactsCsv']);router[_0x47f4('0x7')]('/:id/fields',auth[_0x47f4('0x8')](),controller[_0x47f4('0x11')]);router['get']('/:id/users',auth[_0x47f4('0x8')](),controller['getAgents']);router[_0x47f4('0x12')]('/',auth['isAuthenticated'](),controller[_0x47f4('0x13')]);router['post']('/:id/dispositions',auth[_0x47f4('0x8')](),controller['addDisposition']);router[_0x47f4('0x12')](_0x47f4('0x10'),auth[_0x47f4('0x8')](),controller[_0x47f4('0x14')]);router['post'](_0x47f4('0x15'),auth[_0x47f4('0x8')](),controller[_0x47f4('0x16')]);router[_0x47f4('0x12')](_0x47f4('0x17'),auth['isAuthenticated'](),controller['addAgents']);router[_0x47f4('0x18')](_0x47f4('0xc'),auth[_0x47f4('0x8')](),controller[_0x47f4('0x19')]);router[_0x47f4('0x1a')]('/:id',auth[_0x47f4('0x8')](),controller[_0x47f4('0x1b')]);router[_0x47f4('0x1a')]('/:id/dispositions',auth[_0x47f4('0x8')](),controller['removeDispositions']);router[_0x47f4('0x1a')](_0x47f4('0x17'),auth[_0x47f4('0x8')](),controller[_0x47f4('0x1c')]);module['exports']=router;
\ No newline at end of file
index 93bd9cc..458b90c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d09=['field','STRING','sequelize','exports','VIRTUAL','getDataValue'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0x3d09,0x134));var _0x93d0=function(_0x137ce1,_0x4251ba){_0x137ce1=_0x137ce1-0x0;var _0x221d05=_0x3d09[_0x137ce1];return _0x221d05;};'use strict';var Sequelize=require(_0x93d0('0x0'));module[_0x93d0('0x1')]={'name':{'type':Sequelize[_0x93d0('0x2')],'get':function(_0x2c0fe8){return this[_0x93d0('0x3')](_0x93d0('0x4'));}},'field':{'type':Sequelize[_0x93d0('0x5')],'allowNull':![]},'operator':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0x93d0('0x5')],'allowNull':![]}};
\ No newline at end of file
+var _0x1096=['VIRTUAL','STRING','sequelize','exports'];(function(_0x9738ce,_0x29fe8f){var _0x4b8e35=function(_0xb56a90){while(--_0xb56a90){_0x9738ce['push'](_0x9738ce['shift']());}};_0x4b8e35(++_0x29fe8f);}(_0x1096,0x172));var _0x6109=function(_0x48f066,_0x41c960){_0x48f066=_0x48f066-0x0;var _0x9d8c=_0x1096[_0x48f066];return _0x9d8c;};'use strict';var Sequelize=require(_0x6109('0x0'));module[_0x6109('0x1')]={'name':{'type':Sequelize[_0x6109('0x2')],'get':function(_0x17f3f4){return this['getDataValue']('field');}},'field':{'type':Sequelize[_0x6109('0x3')],'allowNull':![]},'operator':{'type':Sequelize[_0x6109('0x3')],'allowNull':![]},'value':{'type':Sequelize[_0x6109('0x3')],'allowNull':![]}};
\ No newline at end of file
index 1717dbc..1728019 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(_0x483d95,_0x58f0db){var _0x4499a5=function(_0x4f4f55){while(--_0x4f4f55){_0x483d95['push'](_0x483d95['shift']());}};_0x4499a5(++_0x58f0db);}(_0x7a54,0x106));var _0x47a5=function(_0x362b1f,_0x1653fb){_0x362b1f=_0x362b1f-0x0;var _0x1bdba5=_0x7a54[_0x362b1f];return _0x1bdba5;};'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 _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(_0x53517b,_0x554cc7){var _0x14a936=function(_0x322869){while(--_0x322869){_0x53517b['push'](_0x53517b['shift']());}};_0x14a936(++_0x554cc7);}(_0x7a54,0x106));var _0x47a5=function(_0x1db5d9,_0x358ad6){_0x1db5d9=_0x1db5d9-0x0;var _0x2158f9=_0x7a54[_0x1db5d9];return _0x2158f9;};'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
index 9bf5b8c..a3a9229 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x983d=['Condition','tools_conditions','lodash','util','../../config/logger','api','moment','rimraf','./condition.attributes','exports'];(function(_0x22017b,_0x515e0b){var _0x4fdfd0=function(_0x54fb62){while(--_0x54fb62){_0x22017b['push'](_0x22017b['shift']());}};_0x4fdfd0(++_0x515e0b);}(_0x983d,0x8e));var _0xd983=function(_0x171ea5,_0x5421d7){_0x171ea5=_0x171ea5-0x0;var _0x5b3ac5=_0x983d[_0x171ea5];return _0x5b3ac5;};'use strict';var _=require(_0xd983('0x0'));var util=require(_0xd983('0x1'));var logger=require(_0xd983('0x2'))(_0xd983('0x3'));var moment=require(_0xd983('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xd983('0x5'));var config=require('../../config/environment');var attributes=require(_0xd983('0x6'));module[_0xd983('0x7')]=function(_0x4b36d7,_0x3a6745){return _0x4b36d7['define'](_0xd983('0x8'),attributes,{'tableName':_0xd983('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa75b=['path','rimraf','../../config/environment','./condition.attributes','exports','define','tools_conditions','util','moment','bluebird'];(function(_0x53f867,_0x137084){var _0x4feb5e=function(_0x2acdfa){while(--_0x2acdfa){_0x53f867['push'](_0x53f867['shift']());}};_0x4feb5e(++_0x137084);}(_0xa75b,0xb1));var _0xba75=function(_0x61463c,_0x140a9a){_0x61463c=_0x61463c-0x0;var _0x21820f=_0xa75b[_0x61463c];return _0x21820f;};'use strict';var _=require('lodash');var util=require(_0xba75('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xba75('0x1'));var BPromise=require(_0xba75('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xba75('0x3'));var rimraf=require(_0xba75('0x4'));var config=require(_0xba75('0x5'));var attributes=require(_0xba75('0x6'));module[_0xba75('0x7')]=function(_0x301f77,_0x51f195){return _0x301f77[_0xba75('0x8')]('Condition',attributes,{'tableName':_0xba75('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3e86b5a..7b6e673 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32db=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','Condition,\x20%s,\x20%s','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','bluebird','randomstring','ioredis'];(function(_0x3bcc47,_0x58becd){var _0x1ffa10=function(_0x2bad1e){while(--_0x2bad1e){_0x3bcc47['push'](_0x3bcc47['shift']());}};_0x1ffa10(++_0x58becd);}(_0x32db,0xf9));var _0xb32d=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x32db[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xb32d('0x0'));var rs=require(_0xb32d('0x1'));var fs=require('fs');var Redis=require(_0xb32d('0x2'));var db=require(_0xb32d('0x3'))['db'];var utils=require(_0xb32d('0x4'));var logger=require(_0xb32d('0x5'))('rpc');var config=require(_0xb32d('0x6'));var jayson=require(_0xb32d('0x7'));var client=jayson['client'][_0xb32d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3c2c2b,_0x54f241,_0x251838){return new BPromise(function(_0x2faddf,_0x37e0fc){return client[_0xb32d('0x9')](_0x3c2c2b,_0x251838)[_0xb32d('0xa')](function(_0x5dee93){logger[_0xb32d('0xb')](_0xb32d('0xc'),_0x54f241,_0xb32d('0xd'));logger[_0xb32d('0xe')](_0xb32d('0xf'),_0x54f241,'request\x20sent',JSON[_0xb32d('0x10')](_0x5dee93));if(_0x5dee93[_0xb32d('0x11')]){if(_0x5dee93[_0xb32d('0x11')][_0xb32d('0x12')]===0x1f4){logger[_0xb32d('0x11')](_0xb32d('0xc'),_0x54f241,_0x5dee93['error'][_0xb32d('0x13')]);return _0x37e0fc(_0x5dee93['error']['message']);}logger[_0xb32d('0x11')](_0xb32d('0xc'),_0x54f241,_0x5dee93[_0xb32d('0x11')][_0xb32d('0x13')]);return _0x2faddf(_0x5dee93[_0xb32d('0x11')][_0xb32d('0x13')]);}else{logger[_0xb32d('0xb')](_0xb32d('0xc'),_0x54f241,'request\x20sent');_0x2faddf(_0x5dee93['result']['message']);}})[_0xb32d('0x14')](function(_0x3df2e5){logger[_0xb32d('0x11')](_0xb32d('0xc'),_0x54f241,_0x3df2e5);_0x37e0fc(_0x3df2e5);});});}
\ No newline at end of file
+var _0x211d=['client','request','then','info','Condition,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x416010,_0x454edf){var _0x30adc3=function(_0x44366f){while(--_0x44366f){_0x416010['push'](_0x416010['shift']());}};_0x30adc3(++_0x454edf);}(_0x211d,0x65));var _0xd211=function(_0x818624,_0x31b367){_0x818624=_0x818624-0x0;var _0x36d65b=_0x211d[_0x818624];return _0x36d65b;};'use strict';var _=require(_0xd211('0x0'));var util=require(_0xd211('0x1'));var moment=require(_0xd211('0x2'));var BPromise=require(_0xd211('0x3'));var rs=require(_0xd211('0x4'));var fs=require('fs');var Redis=require(_0xd211('0x5'));var db=require(_0xd211('0x6'))['db'];var utils=require(_0xd211('0x7'));var logger=require('../../config/logger')(_0xd211('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xd211('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x43b16b,_0x33195a,_0x3fce8f){return new BPromise(function(_0x236c52,_0x3315a0){return client[_0xd211('0xa')](_0x43b16b,_0x3fce8f)[_0xd211('0xb')](function(_0x54ca32){logger[_0xd211('0xc')](_0xd211('0xd'),_0x33195a,_0xd211('0xe'));logger[_0xd211('0xf')]('Condition,\x20%s,\x20%s,\x20%s',_0x33195a,_0xd211('0xe'),JSON[_0xd211('0x10')](_0x54ca32));if(_0x54ca32[_0xd211('0x11')]){if(_0x54ca32[_0xd211('0x11')][_0xd211('0x12')]===0x1f4){logger['error'](_0xd211('0xd'),_0x33195a,_0x54ca32[_0xd211('0x11')][_0xd211('0x13')]);return _0x3315a0(_0x54ca32[_0xd211('0x11')][_0xd211('0x13')]);}logger[_0xd211('0x11')](_0xd211('0xd'),_0x33195a,_0x54ca32[_0xd211('0x11')]['message']);return _0x236c52(_0x54ca32[_0xd211('0x11')][_0xd211('0x13')]);}else{logger[_0xd211('0xc')](_0xd211('0xd'),_0x33195a,_0xd211('0xe'));_0x236c52(_0x54ca32[_0xd211('0x14')][_0xd211('0x13')]);}})[_0xd211('0x15')](function(_0x4ce62f){logger['error'](_0xd211('0xd'),_0x33195a,_0x4ce62f);_0x3315a0(_0x4ce62f);});});}
\ No newline at end of file
index a2c11df..dcb12dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2929=['./condition.controller','/:id','delete','isAuthenticated','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x4f302f,_0x3a670e){var _0x1c95e9=function(_0x4efce1){while(--_0x4efce1){_0x4f302f['push'](_0x4f302f['shift']());}};_0x1c95e9(++_0x3a670e);}(_0x2929,0xd8));var _0x9292=function(_0x3d79f5,_0x335d06){_0x3d79f5=_0x3d79f5-0x0;var _0x1adf7b=_0x2929[_0x3d79f5];return _0x1adf7b;};'use strict';var multer=require(_0x9292('0x0'));var util=require(_0x9292('0x1'));var path=require(_0x9292('0x2'));var timeout=require(_0x9292('0x3'));var express=require('express');var router=express[_0x9292('0x4')]();var fs_extra=require(_0x9292('0x5'));var auth=require(_0x9292('0x6'));var interaction=require(_0x9292('0x7'));var config=require(_0x9292('0x8'));var controller=require(_0x9292('0x9'));router['put'](_0x9292('0xa'),auth['isAuthenticated'](),controller['update']);router[_0x9292('0xb')]('/:id',auth[_0x9292('0xc')](),controller[_0x9292('0xd')]);module[_0x9292('0xe')]=router;
\ No newline at end of file
+var _0xc0a8=['isAuthenticated','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','/:id'];(function(_0x40f1e2,_0x561e8f){var _0x17215f=function(_0xdc3398){while(--_0xdc3398){_0x40f1e2['push'](_0x40f1e2['shift']());}};_0x17215f(++_0x561e8f);}(_0xc0a8,0x147));var _0x8c0a=function(_0x1e1e27,_0x127376){_0x1e1e27=_0x1e1e27-0x0;var _0x457e01=_0xc0a8[_0x1e1e27];return _0x457e01;};'use strict';var multer=require('multer');var util=require(_0x8c0a('0x0'));var path=require(_0x8c0a('0x1'));var timeout=require(_0x8c0a('0x2'));var express=require(_0x8c0a('0x3'));var router=express[_0x8c0a('0x4')]();var fs_extra=require(_0x8c0a('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8c0a('0x6'));var config=require(_0x8c0a('0x7'));var controller=require('./condition.controller');router['put'](_0x8c0a('0x8'),auth[_0x8c0a('0x9')](),controller[_0x8c0a('0xa')]);router[_0x8c0a('0xb')](_0x8c0a('0x8'),auth['isAuthenticated'](),controller[_0x8c0a('0xc')]);module[_0x8c0a('0xd')]=router;
\ No newline at end of file
index 6e73964..9ec96c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['name','sequelize','STRING'];(function(_0x154be1,_0x5a6ed0){var _0x51b8b9=function(_0x2e7244){while(--_0x2e7244){_0x154be1['push'](_0x154be1['shift']());}};_0x51b8b9(++_0x5a6ed0);}(_0xb10b,0x12a));var _0xbb10=function(_0x2cf37f,_0x2217b7){_0x2cf37f=_0x2cf37f-0x0;var _0x1bd369=_0xb10b[_0x2cf37f];return _0x1bd369;};'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 _0xb10b=['name','sequelize','STRING'];(function(_0x52d770,_0x5d807c){var _0x444c2e=function(_0x556c54){while(--_0x556c54){_0x52d770['push'](_0x52d770['shift']());}};_0x444c2e(++_0x5d807c);}(_0xb10b,0x12a));var _0xbb10=function(_0xe7a99e,_0x4902a1){_0xe7a99e=_0xe7a99e-0x0;var _0x3bef5c=_0xb10b[_0xe7a99e];return _0x3bef5c;};'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
index 34a8610..99e785e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d9a=['then','get','CustomDashboards','UserProfileResource','error','stack','send','index','map','Dashboard','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','include','rows','catch','show','params','includeAll','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','name','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','createdAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','destroy','iframe','attrUrl','attrs','value','https://','custom','attrPath','attrHourFormat','HH:mm:ss','attrTimezone','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','DashboardItem','getItems','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./dashboard.socket','sendStatus','status','end','json','undefined','limit','offset','Content-Range','reject','save','update'];(function(_0x2e4e19,_0x493b50){var _0x9ba20b=function(_0x2f6456){while(--_0x2f6456){_0x2e4e19['push'](_0x2e4e19['shift']());}};_0x9ba20b(++_0x493b50);}(_0x8d9a,0x13c));var _0xa8d9=function(_0x934198,_0x299b3b){_0x934198=_0x934198-0x0;var _0x225540=_0x8d9a[_0x934198];return _0x225540;};'use strict';var emlformat=require(_0xa8d9('0x0'));var rimraf=require(_0xa8d9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa8d9('0x2'));var rp=require(_0xa8d9('0x3'));var moment=require(_0xa8d9('0x4'));var BPromise=require(_0xa8d9('0x5'));var Mustache=require(_0xa8d9('0x6'));var util=require(_0xa8d9('0x7'));var path=require(_0xa8d9('0x8'));var sox=require('sox');var csv=require(_0xa8d9('0x9'));var ejs=require(_0xa8d9('0xa'));var fs=require('fs');var fs_extra=require(_0xa8d9('0xb'));var _=require(_0xa8d9('0xc'));var squel=require(_0xa8d9('0xd'));var crypto=require(_0xa8d9('0xe'));var jsforce=require(_0xa8d9('0xf'));var deskjs=require(_0xa8d9('0x10'));var toCsv=require(_0xa8d9('0x9'));var querystring=require(_0xa8d9('0x11'));var Papa=require(_0xa8d9('0x12'));var Redis=require('ioredis');var authService=require(_0xa8d9('0x13'));var qs=require(_0xa8d9('0x14'));var as=require(_0xa8d9('0x15'));var hardwareService=require(_0xa8d9('0x16'));var logger=require(_0xa8d9('0x17'))('api');var utils=require(_0xa8d9('0x18'));var config=require(_0xa8d9('0x19'));var licenseUtil=require(_0xa8d9('0x1a'));var db=require(_0xa8d9('0x1b'))['db'];config['redis']=_[_0xa8d9('0x1c')](config['redis'],{'host':_0xa8d9('0x1d'),'port':0x18eb});var socket=require(_0xa8d9('0x1e'))(new Redis(config[_0xa8d9('0x1f')]));require(_0xa8d9('0x20'))['register'](socket);function respondWithStatusCode(_0x4f0850,_0x140bd8){_0x140bd8=_0x140bd8||0xcc;return function(_0x423b7e){if(_0x423b7e){return _0x4f0850[_0xa8d9('0x21')](_0x140bd8);}return _0x4f0850[_0xa8d9('0x22')](_0x140bd8)[_0xa8d9('0x23')]();};}function respondWithResult(_0x275919,_0x185ad0){_0x185ad0=_0x185ad0||0xc8;return function(_0x59dd58){if(_0x59dd58){return _0x275919[_0xa8d9('0x22')](_0x185ad0)[_0xa8d9('0x24')](_0x59dd58);}};}function respondWithFilteredResult(_0x3e0a9c,_0x16054b){return function(_0x30620d){if(_0x30620d){var _0x1ea4d8=typeof _0x16054b['offset']===_0xa8d9('0x25')&&typeof _0x16054b[_0xa8d9('0x26')]==='undefined';var _0x252822=_0x30620d['count'];var _0x36f494=_0x1ea4d8?0x0:_0x16054b['offset'];var _0x2cb46d=_0x1ea4d8?_0x30620d['count']:_0x16054b[_0xa8d9('0x27')]+_0x16054b[_0xa8d9('0x26')];var _0x1863d6;if(_0x2cb46d>=_0x252822){_0x2cb46d=_0x252822;_0x1863d6=0xc8;}else{_0x1863d6=0xce;}_0x3e0a9c['status'](_0x1863d6);return _0x3e0a9c['set'](_0xa8d9('0x28'),_0x36f494+'-'+_0x2cb46d+'/'+_0x252822)[_0xa8d9('0x24')](_0x30620d);}return null;};}function patchUpdates(_0x346f1c){return function(_0x179585){try{jsonpatch['apply'](_0x179585,_0x346f1c,!![]);}catch(_0x1e1f5f){return BPromise[_0xa8d9('0x29')](_0x1e1f5f);}return _0x179585[_0xa8d9('0x2a')]();};}function saveUpdates(_0x3934eb,_0x810f5c){return function(_0x11449f){if(_0x11449f){return _0x11449f[_0xa8d9('0x2b')](_0x3934eb)[_0xa8d9('0x2c')](function(_0x794b42){return _0x794b42;});}return null;};}function removeEntity(_0x470d50,_0xda5e1){return function(_0x37f1e3){if(_0x37f1e3){return _0x37f1e3['destroy']()[_0xa8d9('0x2c')](function(){var _0x55b19d=_0x37f1e3[_0xa8d9('0x2d')]({'plain':!![]});var _0x4eb1e9=_0xa8d9('0x2e');return db[_0xa8d9('0x2f')]['destroy']({'where':{'type':_0x4eb1e9,'resourceId':_0x55b19d['id']}})[_0xa8d9('0x2c')](function(){return _0x37f1e3;});})[_0xa8d9('0x2c')](function(){_0x470d50[_0xa8d9('0x22')](0xcc)[_0xa8d9('0x23')]();});}};}function handleEntityNotFound(_0x45bce0,_0x3eeae0){return function(_0x2a459e){if(!_0x2a459e){_0x45bce0[_0xa8d9('0x21')](0x194);}return _0x2a459e;};}function handleError(_0xc40f72,_0xcd225a){_0xcd225a=_0xcd225a||0x1f4;return function(_0x223db3){logger[_0xa8d9('0x30')](_0x223db3[_0xa8d9('0x31')]);if(_0x223db3['name']){delete _0x223db3['name'];}_0xc40f72[_0xa8d9('0x22')](_0xcd225a)[_0xa8d9('0x32')](_0x223db3);};}exports[_0xa8d9('0x33')]=function(_0x396253,_0x48cc04){var _0x200524={},_0x49e32e={},_0x1af0b7={'count':0x0,'rows':[]};var _0x287f57=_[_0xa8d9('0x34')](db[_0xa8d9('0x35')][_0xa8d9('0x36')],function(_0xe8af0c){return{'name':_0xe8af0c['fieldName'],'type':_0xe8af0c[_0xa8d9('0x37')][_0xa8d9('0x38')]};});_0x49e32e[_0xa8d9('0x39')]=_['map'](_0x287f57,'name');_0x49e32e[_0xa8d9('0x3a')]=_[_0xa8d9('0x3b')](_0x396253['query']);_0x49e32e[_0xa8d9('0x3c')]=_[_0xa8d9('0x3d')](_0x49e32e[_0xa8d9('0x39')],_0x49e32e[_0xa8d9('0x3a')]);_0x200524[_0xa8d9('0x3e')]=_['intersection'](_0x49e32e[_0xa8d9('0x39')],qs['fields'](_0x396253['query'][_0xa8d9('0x3f')]));_0x200524[_0xa8d9('0x3e')]=_0x200524[_0xa8d9('0x3e')][_0xa8d9('0x40')]?_0x200524[_0xa8d9('0x3e')]:_0x49e32e[_0xa8d9('0x39')];if(!_0x396253[_0xa8d9('0x3a')][_0xa8d9('0x41')](_0xa8d9('0x42'))){_0x200524[_0xa8d9('0x26')]=qs['limit'](_0x396253[_0xa8d9('0x3a')]['limit']);_0x200524['offset']=qs[_0xa8d9('0x27')](_0x396253['query'][_0xa8d9('0x27')]);}_0x200524[_0xa8d9('0x43')]=qs[_0xa8d9('0x44')](_0x396253[_0xa8d9('0x3a')]['sort']);_0x200524[_0xa8d9('0x45')]=qs[_0xa8d9('0x3c')](_['pick'](_0x396253[_0xa8d9('0x3a')],_0x49e32e[_0xa8d9('0x3c')]),_0x287f57);if(_0x396253[_0xa8d9('0x3a')][_0xa8d9('0x46')]){_0x200524[_0xa8d9('0x45')]=_['merge'](_0x200524[_0xa8d9('0x45')],{'$or':_[_0xa8d9('0x34')](_0x287f57,function(_0x1b2b76){if(_0x1b2b76[_0xa8d9('0x37')]!==_0xa8d9('0x47')){var _0x3a09b8={};_0x3a09b8[_0x1b2b76['name']]={'$like':'%'+_0x396253['query']['filter']+'%'};return _0x3a09b8;}})});}_0x200524=_[_0xa8d9('0x48')]({},_0x200524,_0x396253[_0xa8d9('0x49')]);var _0x1ac7e3={'where':_0x200524[_0xa8d9('0x45')]};return db[_0xa8d9('0x35')]['count'](_0x1ac7e3)['then'](function(_0x234e12){_0x1af0b7['count']=_0x234e12;if(_0x396253[_0xa8d9('0x3a')]['includeAll']){_0x200524[_0xa8d9('0x4a')]=[{'all':!![]}];}return db[_0xa8d9('0x35')]['findAll'](_0x200524);})[_0xa8d9('0x2c')](function(_0x163f13){_0x1af0b7[_0xa8d9('0x4b')]=_0x163f13;return _0x1af0b7;})[_0xa8d9('0x2c')](respondWithFilteredResult(_0x48cc04,_0x200524))[_0xa8d9('0x4c')](handleError(_0x48cc04,null));};exports[_0xa8d9('0x4d')]=function(_0x1fa1a4,_0x5946c5){var _0xdcdf74={'raw':![],'where':{'id':_0x1fa1a4[_0xa8d9('0x4e')]['id']}},_0x44a9b0={};_0x44a9b0[_0xa8d9('0x39')]=_['keys'](db['Dashboard']['rawAttributes']);_0x44a9b0['query']=_[_0xa8d9('0x3b')](_0x1fa1a4[_0xa8d9('0x3a')]);_0x44a9b0[_0xa8d9('0x3c')]=_[_0xa8d9('0x3d')](_0x44a9b0[_0xa8d9('0x39')],_0x44a9b0[_0xa8d9('0x3a')]);_0xdcdf74[_0xa8d9('0x3e')]=_[_0xa8d9('0x3d')](_0x44a9b0['model'],qs[_0xa8d9('0x3f')](_0x1fa1a4[_0xa8d9('0x3a')][_0xa8d9('0x3f')]));_0xdcdf74[_0xa8d9('0x3e')]=_0xdcdf74[_0xa8d9('0x3e')][_0xa8d9('0x40')]?_0xdcdf74[_0xa8d9('0x3e')]:_0x44a9b0[_0xa8d9('0x39')];if(_0x1fa1a4[_0xa8d9('0x3a')][_0xa8d9('0x4f')]){_0xdcdf74[_0xa8d9('0x4a')]=[{'all':!![]}];}_0xdcdf74=_[_0xa8d9('0x48')]({},_0xdcdf74,_0x1fa1a4['options']);return db[_0xa8d9('0x35')][_0xa8d9('0x50')](_0xdcdf74)['then'](handleEntityNotFound(_0x5946c5,null))[_0xa8d9('0x2c')](respondWithResult(_0x5946c5,null))['catch'](handleError(_0x5946c5,null));};exports[_0xa8d9('0x51')]=function(_0x280a79,_0x45b8ec){return db[_0xa8d9('0x35')][_0xa8d9('0x51')](_0x280a79[_0xa8d9('0x52')],{})[_0xa8d9('0x2c')](function(_0x130d85){var _0xb025de=_0x280a79[_0xa8d9('0x53')][_0xa8d9('0x2d')]({'plain':!![]});if(!_0xb025de)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xb025de[_0xa8d9('0x54')]===_0xa8d9('0x53')){var _0x1536bc=_0x130d85[_0xa8d9('0x2d')]({'plain':!![]});var _0x4a5510=_0xa8d9('0x2e');return db[_0xa8d9('0x55')][_0xa8d9('0x50')]({'where':{'name':_0x4a5510,'userProfileId':_0xb025de[_0xa8d9('0x56')]},'raw':!![]})[_0xa8d9('0x2c')](function(_0x1f12ae){if(_0x1f12ae&&_0x1f12ae[_0xa8d9('0x57')]===0x0){return db[_0xa8d9('0x2f')]['create']({'name':_0x1536bc[_0xa8d9('0x58')],'resourceId':_0x1536bc['id'],'type':_0x1f12ae[_0xa8d9('0x58')],'sectionId':_0x1f12ae['id']},{})['then'](function(){return _0x130d85;});}else{return _0x130d85;}})[_0xa8d9('0x4c')](function(_0x504919){logger[_0xa8d9('0x30')](_0xa8d9('0x59'),_0x504919);throw _0x504919;});}return _0x130d85;})[_0xa8d9('0x2c')](respondWithResult(_0x45b8ec,0xc9))[_0xa8d9('0x4c')](handleError(_0x45b8ec,null));};exports[_0xa8d9('0x5a')]=function(_0x2f6a6c,_0x5db550){var _0x4f39b9={'where':{'id':_0x2f6a6c[_0xa8d9('0x4e')]['id']}},_0x19017e={};_0x19017e[_0xa8d9('0x39')]=_[_0xa8d9('0x3b')](db[_0xa8d9('0x35')]['rawAttributes']);_0x4f39b9[_0xa8d9('0x3e')]=_[_0xa8d9('0x3d')](_0x19017e['model'],qs['fields'](_0x2f6a6c['query'][_0xa8d9('0x3f')]));_0x4f39b9[_0xa8d9('0x3e')]=_0x4f39b9['attributes']['length']?_0x4f39b9['attributes']:_0x19017e[_0xa8d9('0x39')];if(_0x2f6a6c['query'][_0xa8d9('0x4f')]){_0x4f39b9['include']=[{'all':!![]}];}_0x4f39b9=_[_0xa8d9('0x48')]({},_0x4f39b9,_0x2f6a6c[_0xa8d9('0x49')]);return db[_0xa8d9('0x35')][_0xa8d9('0x50')](_0x4f39b9)['then'](handleEntityNotFound(_0x5db550,null))['then'](function(_0x398c46){if(_0x398c46){var _0x317495=_0x398c46[_0xa8d9('0x2d')]({'plain':!![]});_0x317495=qs['omit'](_0x317495,['id','createdAt','updatedAt']);_0x2f6a6c['body']=_['omit'](_0x2f6a6c[_0xa8d9('0x52')],['id',_0xa8d9('0x5b'),'updatedAt']);return db[_0xa8d9('0x35')][_0xa8d9('0x51')](_[_0xa8d9('0x48')](_0x317495,_0x2f6a6c[_0xa8d9('0x52')]),{'include':_0x2f6a6c[_0xa8d9('0x3a')][_0xa8d9('0x4f')]?[{'all':!![]}]:undefined})[_0xa8d9('0x2c')](function(_0x477f42){var _0x345f51=_0x2f6a6c[_0xa8d9('0x53')][_0xa8d9('0x2d')]({'plain':!![]});if(!_0x345f51)throw new Error(_0xa8d9('0x5c'));if(_0x345f51[_0xa8d9('0x54')]===_0xa8d9('0x53')){var _0x26c6de=_0x477f42[_0xa8d9('0x2d')]({'plain':!![]});var _0x26cb39=_0xa8d9('0x2e');return db[_0xa8d9('0x55')]['find']({'where':{'name':_0x26cb39,'userProfileId':_0x345f51[_0xa8d9('0x56')]},'raw':!![]})[_0xa8d9('0x2c')](function(_0xaf12d){if(_0xaf12d&&_0xaf12d['autoAssociation']===0x0){return db[_0xa8d9('0x2f')][_0xa8d9('0x51')]({'name':_0x26c6de[_0xa8d9('0x58')],'resourceId':_0x26c6de['id'],'type':_0xaf12d[_0xa8d9('0x58')],'sectionId':_0xaf12d['id']},{})[_0xa8d9('0x2c')](function(){return _0x477f42;});}else{return _0x477f42;}})['catch'](function(_0x3b570f){logger['error'](_0xa8d9('0x59'),_0x3b570f);throw _0x3b570f;});}return _0x477f42;});}})[_0xa8d9('0x2c')](respondWithResult(_0x5db550,0xc9))[_0xa8d9('0x4c')](handleError(_0x5db550,null));};exports['update']=function(_0x46ef63,_0x40a0f0){if(_0x46ef63[_0xa8d9('0x52')]['id']){delete _0x46ef63[_0xa8d9('0x52')]['id'];}return db[_0xa8d9('0x35')][_0xa8d9('0x50')]({'where':{'id':_0x46ef63['params']['id']}})[_0xa8d9('0x2c')](handleEntityNotFound(_0x40a0f0,null))[_0xa8d9('0x2c')](saveUpdates(_0x46ef63['body'],null))[_0xa8d9('0x2c')](respondWithResult(_0x40a0f0,null))[_0xa8d9('0x4c')](handleError(_0x40a0f0,null));};exports[_0xa8d9('0x5d')]=function(_0x2a657a,_0x1c5437){return db['Dashboard'][_0xa8d9('0x50')]({'where':{'id':_0x2a657a['params']['id']}})[_0xa8d9('0x2c')](handleEntityNotFound(_0x1c5437,null))[_0xa8d9('0x2c')](removeEntity(_0x1c5437,null))[_0xa8d9('0x4c')](handleError(_0x1c5437,null));};function widgetAttributes(_0x16e798){try{switch(_0x16e798['type']){case _0xa8d9('0x5e'):return[{'name':_0xa8d9('0x5f'),'value':_0x16e798[_0xa8d9('0x5f')]||(_0x16e798[_0xa8d9('0x60')]&&_0x16e798[_0xa8d9('0x60')][0x0]?_0x16e798[_0xa8d9('0x60')][0x0][_0xa8d9('0x61')]:undefined)||_0xa8d9('0x62')}];case _0xa8d9('0x63'):return[{'name':_0xa8d9('0x64'),'value':_0x16e798[_0xa8d9('0x64')]||(_0x16e798['attrs']&&_0x16e798['attrs'][0x0]?_0x16e798['attrs'][0x0][_0xa8d9('0x61')]:undefined)||''}];case'clock':return[{'name':_0xa8d9('0x65'),'value':_0x16e798['attrHourFormat']||(_0x16e798[_0xa8d9('0x60')]&&_0x16e798['attrs'][0x0]?_0x16e798[_0xa8d9('0x60')][0x0][_0xa8d9('0x61')]:undefined)||_0xa8d9('0x66')},{'name':_0xa8d9('0x67'),'value':_0x16e798['attrTimezone']||(_0x16e798[_0xa8d9('0x60')]&&_0x16e798[_0xa8d9('0x60')][0x1]?_0x16e798[_0xa8d9('0x60')][0x1][_0xa8d9('0x61')]:undefined)||'0.00'},{'name':_0xa8d9('0x68'),'value':_0x16e798['attrFontSize']||(_0x16e798['attrs']&&_0x16e798[_0xa8d9('0x60')][0x2]?_0x16e798[_0xa8d9('0x60')][0x2][_0xa8d9('0x61')]:undefined)||0xc}];case _0xa8d9('0x69'):return[{'name':'attrMetric','value':_0x16e798[_0xa8d9('0x6a')]||(_0x16e798[_0xa8d9('0x60')]&&_0x16e798[_0xa8d9('0x60')][0x0]?_0x16e798[_0xa8d9('0x60')][0x0]['value']:undefined)||_0xa8d9('0x6b')},{'name':'attrVoiceQueues','value':_0x16e798[_0xa8d9('0x6c')]||(_0x16e798[_0xa8d9('0x60')]&&_0x16e798[_0xa8d9('0x60')][0x1]?_0x16e798[_0xa8d9('0x60')][0x1][_0xa8d9('0x61')]:undefined)||[]},{'name':_0xa8d9('0x68'),'value':_0x16e798[_0xa8d9('0x68')]||(_0x16e798['attrs']&&_0x16e798[_0xa8d9('0x60')][0x2]?_0x16e798[_0xa8d9('0x60')][0x2][_0xa8d9('0x61')]:undefined)||0x14}];case'multibar-chart':case'pie-chart':return[{'name':_0xa8d9('0x6d'),'value':_0x16e798['attrSerie1']||(_0x16e798[_0xa8d9('0x60')]&&_0x16e798['attrs'][0x0]?_0x16e798[_0xa8d9('0x60')][0x0][_0xa8d9('0x61')]:undefined)||_0xa8d9('0x6b')},{'name':_0xa8d9('0x6e'),'value':_0x16e798['attrSerie2']||(_0x16e798['attrs']&&_0x16e798[_0xa8d9('0x60')][0x1]?_0x16e798['attrs'][0x1][_0xa8d9('0x61')]:undefined)||null},{'name':'attrSerie3','value':_0x16e798[_0xa8d9('0x6f')]||(_0x16e798[_0xa8d9('0x60')]&&_0x16e798['attrs'][0x2]?_0x16e798['attrs'][0x2][_0xa8d9('0x61')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x16e798[_0xa8d9('0x6c')]||(_0x16e798[_0xa8d9('0x60')]&&_0x16e798[_0xa8d9('0x60')][0x3]?_0x16e798[_0xa8d9('0x60')][0x3]['value']:undefined)||[]}];case _0xa8d9('0x70'):return[{'name':_0xa8d9('0x71'),'type':_0x16e798[_0xa8d9('0x72')]||(_0x16e798['attrs']&&_0x16e798[_0xa8d9('0x60')][0x0]?_0x16e798[_0xa8d9('0x60')][0x0][_0xa8d9('0x37')]:undefined)||null,'value':_0x16e798['attrReport']||(_0x16e798[_0xa8d9('0x60')]&&_0x16e798['attrs'][0x0]?_0x16e798[_0xa8d9('0x60')][0x0][_0xa8d9('0x61')]:undefined)||null},{'name':_0xa8d9('0x73'),'value':_0x16e798[_0xa8d9('0x73')]||(_0x16e798[_0xa8d9('0x60')]&&_0x16e798[_0xa8d9('0x60')][0x1]?_0x16e798[_0xa8d9('0x60')][0x1][_0xa8d9('0x61')]:undefined)||0x0}];default:return[];}}catch(_0xedbe6){logger[_0xa8d9('0x30')](_0xa8d9('0x74'),JSON[_0xa8d9('0x75')](_0xedbe6));return[];}}exports['addItem']=function(_0x456633,_0x4e07f7,_0x11b419){if(_0x456633[_0xa8d9('0x52')]['id']){delete _0x456633[_0xa8d9('0x52')]['id'];}return db[_0xa8d9('0x35')][_0xa8d9('0x50')]({'where':{'id':_0x456633['params']['id']}})['then'](handleEntityNotFound(_0x4e07f7,null))[_0xa8d9('0x2c')](function(_0x3a4849){if(_0x3a4849){_0x456633['body']['DashboardId']=_0x3a4849['id'];_0x456633[_0xa8d9('0x52')]['attrs']=widgetAttributes(_0x456633[_0xa8d9('0x52')]);return db[_0xa8d9('0x76')]['create'](_0x456633[_0xa8d9('0x52')]);}})['then'](respondWithResult(_0x4e07f7,null))[_0xa8d9('0x4c')](handleError(_0x4e07f7,null));};exports[_0xa8d9('0x77')]=function(_0x2e3344,_0x24a3af,_0xa4fed3){var _0x2d4c7f={};var _0x28062d={};var _0x100c91;var _0x44991b;return db['Dashboard']['findOne']({'where':{'id':_0x2e3344['params']['id']}})['then'](handleEntityNotFound(_0x24a3af,null))[_0xa8d9('0x2c')](function(_0x287498){if(_0x287498){_0x100c91=_0x287498;_0x28062d[_0xa8d9('0x39')]=_[_0xa8d9('0x3b')](db['DashboardItem'][_0xa8d9('0x36')]);_0x28062d[_0xa8d9('0x3a')]=_[_0xa8d9('0x3b')](_0x2e3344[_0xa8d9('0x3a')]);_0x28062d[_0xa8d9('0x3c')]=_[_0xa8d9('0x3d')](_0x28062d[_0xa8d9('0x39')],_0x28062d[_0xa8d9('0x3a')]);_0x2d4c7f[_0xa8d9('0x3e')]=_['intersection'](_0x28062d[_0xa8d9('0x39')],qs[_0xa8d9('0x3f')](_0x2e3344[_0xa8d9('0x3a')]['fields']));_0x2d4c7f[_0xa8d9('0x3e')]=_0x2d4c7f[_0xa8d9('0x3e')][_0xa8d9('0x40')]?_0x2d4c7f[_0xa8d9('0x3e')]:_0x28062d[_0xa8d9('0x39')];_0x2d4c7f[_0xa8d9('0x43')]=qs[_0xa8d9('0x44')](_0x2e3344[_0xa8d9('0x3a')][_0xa8d9('0x44')]);_0x2d4c7f[_0xa8d9('0x45')]=qs['filters'](_['pick'](_0x2e3344[_0xa8d9('0x3a')],_0x28062d['filters']));if(_0x2e3344['query'][_0xa8d9('0x46')]){_0x2d4c7f[_0xa8d9('0x45')]=_[_0xa8d9('0x48')](_0x2d4c7f[_0xa8d9('0x45')],{'$or':_[_0xa8d9('0x34')](_0x2d4c7f['attributes'],function(_0x329a99){var _0x30b5a6={};_0x30b5a6[_0x329a99]={'$like':'%'+_0x2e3344[_0xa8d9('0x3a')]['filter']+'%'};return _0x30b5a6;})});}_0x2d4c7f=_[_0xa8d9('0x48')]({},_0x2d4c7f,_0x2e3344[_0xa8d9('0x49')]);return _0x100c91['getItems'](_0x2d4c7f);}})[_0xa8d9('0x2c')](function(_0x20637){if(_0x20637){_0x44991b=_0x20637[_0xa8d9('0x40')];if(!_0x2e3344[_0xa8d9('0x3a')][_0xa8d9('0x41')]('nolimit')){_0x2d4c7f[_0xa8d9('0x26')]=qs[_0xa8d9('0x26')](_0x2e3344[_0xa8d9('0x3a')]['limit']);_0x2d4c7f[_0xa8d9('0x27')]=qs[_0xa8d9('0x27')](_0x2e3344['query'][_0xa8d9('0x27')]);}return _0x100c91['getItems'](_0x2d4c7f);}})['then'](function(_0x1e2b15){if(_0x1e2b15){return _0x1e2b15?{'count':_0x44991b,'rows':_0x1e2b15}:null;}})[_0xa8d9('0x2c')](respondWithResult(_0x24a3af,null))[_0xa8d9('0x4c')](handleError(_0x24a3af,null));};
\ No newline at end of file
+var _0x6ad0=['Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','iframe','attrUrl','attrs','value','https://','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','attrFontSize','counter','attrMetric','multibar-chart','attrSerie1','total','attrSerie2','attrSerie3','attrVoiceQueues','web-report','attrReport','reportType','attrRefresh','error','widgetAttributes:\x20%s','stringify','DashboardId','DashboardItem','getItems','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','sendStatus','status','end','offset','undefined','count','set','Content-Range','json','apply','reject','save','update','then','destroy','CustomDashboards','UserProfileResource','stack','name','send','index','map','Dashboard','rawAttributes','fieldName','type','key','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','options','find','create','body','get','role','UserProfileSection','autoAssociation','omit','updatedAt','createdAt','user'];(function(_0x555ec0,_0x3898cc){var _0x1b5944=function(_0x1a7d14){while(--_0x1a7d14){_0x555ec0['push'](_0x555ec0['shift']());}};_0x1b5944(++_0x3898cc);}(_0x6ad0,0x9b));var _0x06ad=function(_0x80c8fc,_0x28d155){_0x80c8fc=_0x80c8fc-0x0;var _0x3fa2f1=_0x6ad0[_0x80c8fc];return _0x3fa2f1;};'use strict';var emlformat=require(_0x06ad('0x0'));var rimraf=require(_0x06ad('0x1'));var zipdir=require(_0x06ad('0x2'));var jsonpatch=require(_0x06ad('0x3'));var rp=require('request-promise');var moment=require(_0x06ad('0x4'));var BPromise=require(_0x06ad('0x5'));var Mustache=require(_0x06ad('0x6'));var util=require('util');var path=require(_0x06ad('0x7'));var sox=require(_0x06ad('0x8'));var csv=require(_0x06ad('0x9'));var ejs=require(_0x06ad('0xa'));var fs=require('fs');var fs_extra=require(_0x06ad('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x06ad('0xc'));var jsforce=require(_0x06ad('0xd'));var deskjs=require(_0x06ad('0xe'));var toCsv=require(_0x06ad('0x9'));var querystring=require(_0x06ad('0xf'));var Papa=require('papaparse');var Redis=require(_0x06ad('0x10'));var authService=require(_0x06ad('0x11'));var qs=require(_0x06ad('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x06ad('0x13'));var utils=require(_0x06ad('0x14'));var config=require(_0x06ad('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x06ad('0x16'))['db'];config[_0x06ad('0x17')]=_[_0x06ad('0x18')](config[_0x06ad('0x17')],{'host':_0x06ad('0x19'),'port':0x18eb});var socket=require(_0x06ad('0x1a'))(new Redis(config[_0x06ad('0x17')]));require(_0x06ad('0x1b'))[_0x06ad('0x1c')](socket);function respondWithStatusCode(_0x4005b4,_0xcefb29){_0xcefb29=_0xcefb29||0xcc;return function(_0x5c4cec){if(_0x5c4cec){return _0x4005b4[_0x06ad('0x1d')](_0xcefb29);}return _0x4005b4[_0x06ad('0x1e')](_0xcefb29)[_0x06ad('0x1f')]();};}function respondWithResult(_0x5f060e,_0x53d4ab){_0x53d4ab=_0x53d4ab||0xc8;return function(_0x1c61fa){if(_0x1c61fa){return _0x5f060e['status'](_0x53d4ab)['json'](_0x1c61fa);}};}function respondWithFilteredResult(_0x5dd2b5,_0x14ef2c){return function(_0x31166e){if(_0x31166e){var _0x21a991=typeof _0x14ef2c[_0x06ad('0x20')]==='undefined'&&typeof _0x14ef2c['limit']===_0x06ad('0x21');var _0x52b59f=_0x31166e['count'];var _0x306e55=_0x21a991?0x0:_0x14ef2c[_0x06ad('0x20')];var _0x4d0f8e=_0x21a991?_0x31166e[_0x06ad('0x22')]:_0x14ef2c['offset']+_0x14ef2c['limit'];var _0x1ace7d;if(_0x4d0f8e>=_0x52b59f){_0x4d0f8e=_0x52b59f;_0x1ace7d=0xc8;}else{_0x1ace7d=0xce;}_0x5dd2b5[_0x06ad('0x1e')](_0x1ace7d);return _0x5dd2b5[_0x06ad('0x23')](_0x06ad('0x24'),_0x306e55+'-'+_0x4d0f8e+'/'+_0x52b59f)[_0x06ad('0x25')](_0x31166e);}return null;};}function patchUpdates(_0x33e94d){return function(_0x423b7e){try{jsonpatch[_0x06ad('0x26')](_0x423b7e,_0x33e94d,!![]);}catch(_0x58104d){return BPromise[_0x06ad('0x27')](_0x58104d);}return _0x423b7e[_0x06ad('0x28')]();};}function saveUpdates(_0x2e69c4,_0x325017){return function(_0x2a4b17){if(_0x2a4b17){return _0x2a4b17[_0x06ad('0x29')](_0x2e69c4)[_0x06ad('0x2a')](function(_0xfcd983){return _0xfcd983;});}return null;};}function removeEntity(_0x4b97f9,_0x8b63a6){return function(_0x1fb553){if(_0x1fb553){return _0x1fb553[_0x06ad('0x2b')]()[_0x06ad('0x2a')](function(){var _0xb279f8=_0x1fb553['get']({'plain':!![]});var _0x4a1cc4=_0x06ad('0x2c');return db[_0x06ad('0x2d')][_0x06ad('0x2b')]({'where':{'type':_0x4a1cc4,'resourceId':_0xb279f8['id']}})[_0x06ad('0x2a')](function(){return _0x1fb553;});})[_0x06ad('0x2a')](function(){_0x4b97f9[_0x06ad('0x1e')](0xcc)[_0x06ad('0x1f')]();});}};}function handleEntityNotFound(_0x576486,_0x88bb6b){return function(_0x1e098a){if(!_0x1e098a){_0x576486[_0x06ad('0x1d')](0x194);}return _0x1e098a;};}function handleError(_0x4e7c14,_0xd55ffc){_0xd55ffc=_0xd55ffc||0x1f4;return function(_0x1024e2){logger['error'](_0x1024e2[_0x06ad('0x2e')]);if(_0x1024e2[_0x06ad('0x2f')]){delete _0x1024e2[_0x06ad('0x2f')];}_0x4e7c14[_0x06ad('0x1e')](_0xd55ffc)[_0x06ad('0x30')](_0x1024e2);};}exports[_0x06ad('0x31')]=function(_0x2dba3d,_0x43195d){var _0x100687={},_0xd18592={},_0x3d5d62={'count':0x0,'rows':[]};var _0x3f05e3=_[_0x06ad('0x32')](db[_0x06ad('0x33')][_0x06ad('0x34')],function(_0x357011){return{'name':_0x357011[_0x06ad('0x35')],'type':_0x357011[_0x06ad('0x36')][_0x06ad('0x37')]};});_0xd18592['model']=_[_0x06ad('0x32')](_0x3f05e3,_0x06ad('0x2f'));_0xd18592[_0x06ad('0x38')]=_['keys'](_0x2dba3d['query']);_0xd18592[_0x06ad('0x39')]=_[_0x06ad('0x3a')](_0xd18592['model'],_0xd18592[_0x06ad('0x38')]);_0x100687[_0x06ad('0x3b')]=_[_0x06ad('0x3a')](_0xd18592[_0x06ad('0x3c')],qs[_0x06ad('0x3d')](_0x2dba3d[_0x06ad('0x38')][_0x06ad('0x3d')]));_0x100687[_0x06ad('0x3b')]=_0x100687[_0x06ad('0x3b')][_0x06ad('0x3e')]?_0x100687[_0x06ad('0x3b')]:_0xd18592[_0x06ad('0x3c')];if(!_0x2dba3d[_0x06ad('0x38')][_0x06ad('0x3f')](_0x06ad('0x40'))){_0x100687[_0x06ad('0x41')]=qs[_0x06ad('0x41')](_0x2dba3d['query'][_0x06ad('0x41')]);_0x100687[_0x06ad('0x20')]=qs[_0x06ad('0x20')](_0x2dba3d['query']['offset']);}_0x100687[_0x06ad('0x42')]=qs['sort'](_0x2dba3d[_0x06ad('0x38')][_0x06ad('0x43')]);_0x100687[_0x06ad('0x44')]=qs[_0x06ad('0x39')](_[_0x06ad('0x45')](_0x2dba3d[_0x06ad('0x38')],_0xd18592[_0x06ad('0x39')]),_0x3f05e3);if(_0x2dba3d[_0x06ad('0x38')][_0x06ad('0x46')]){_0x100687['where']=_[_0x06ad('0x47')](_0x100687[_0x06ad('0x44')],{'$or':_[_0x06ad('0x32')](_0x3f05e3,function(_0x2525f9){if(_0x2525f9[_0x06ad('0x36')]!==_0x06ad('0x48')){var _0x414152={};_0x414152[_0x2525f9[_0x06ad('0x2f')]]={'$like':'%'+_0x2dba3d[_0x06ad('0x38')]['filter']+'%'};return _0x414152;}})});}_0x100687=_[_0x06ad('0x47')]({},_0x100687,_0x2dba3d['options']);var _0x16a57e={'where':_0x100687['where']};return db[_0x06ad('0x33')][_0x06ad('0x22')](_0x16a57e)[_0x06ad('0x2a')](function(_0x3d68ea){_0x3d5d62[_0x06ad('0x22')]=_0x3d68ea;if(_0x2dba3d[_0x06ad('0x38')][_0x06ad('0x49')]){_0x100687[_0x06ad('0x4a')]=[{'all':!![]}];}return db[_0x06ad('0x33')][_0x06ad('0x4b')](_0x100687);})[_0x06ad('0x2a')](function(_0x29b847){_0x3d5d62[_0x06ad('0x4c')]=_0x29b847;return _0x3d5d62;})['then'](respondWithFilteredResult(_0x43195d,_0x100687))[_0x06ad('0x4d')](handleError(_0x43195d,null));};exports[_0x06ad('0x4e')]=function(_0x55e154,_0x3d71a3){var _0x575a70={'raw':![],'where':{'id':_0x55e154[_0x06ad('0x4f')]['id']}},_0x1829e2={};_0x1829e2['model']=_[_0x06ad('0x50')](db['Dashboard']['rawAttributes']);_0x1829e2[_0x06ad('0x38')]=_['keys'](_0x55e154[_0x06ad('0x38')]);_0x1829e2[_0x06ad('0x39')]=_[_0x06ad('0x3a')](_0x1829e2[_0x06ad('0x3c')],_0x1829e2[_0x06ad('0x38')]);_0x575a70[_0x06ad('0x3b')]=_['intersection'](_0x1829e2[_0x06ad('0x3c')],qs[_0x06ad('0x3d')](_0x55e154['query'][_0x06ad('0x3d')]));_0x575a70[_0x06ad('0x3b')]=_0x575a70[_0x06ad('0x3b')][_0x06ad('0x3e')]?_0x575a70[_0x06ad('0x3b')]:_0x1829e2[_0x06ad('0x3c')];if(_0x55e154[_0x06ad('0x38')]['includeAll']){_0x575a70[_0x06ad('0x4a')]=[{'all':!![]}];}_0x575a70=_[_0x06ad('0x47')]({},_0x575a70,_0x55e154[_0x06ad('0x51')]);return db['Dashboard'][_0x06ad('0x52')](_0x575a70)[_0x06ad('0x2a')](handleEntityNotFound(_0x3d71a3,null))[_0x06ad('0x2a')](respondWithResult(_0x3d71a3,null))[_0x06ad('0x4d')](handleError(_0x3d71a3,null));};exports[_0x06ad('0x53')]=function(_0x322b75,_0x21b761){return db[_0x06ad('0x33')]['create'](_0x322b75[_0x06ad('0x54')],{})['then'](function(_0x3e73af){var _0x346b93=_0x322b75['user'][_0x06ad('0x55')]({'plain':!![]});if(!_0x346b93)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x346b93[_0x06ad('0x56')]==='user'){var _0x218df0=_0x3e73af['get']({'plain':!![]});var _0xd2f02d=_0x06ad('0x2c');return db[_0x06ad('0x57')][_0x06ad('0x52')]({'where':{'name':_0xd2f02d,'userProfileId':_0x346b93['userProfileId']},'raw':!![]})[_0x06ad('0x2a')](function(_0x565344){if(_0x565344&&_0x565344[_0x06ad('0x58')]===0x0){return db['UserProfileResource']['create']({'name':_0x218df0[_0x06ad('0x2f')],'resourceId':_0x218df0['id'],'type':_0x565344['name'],'sectionId':_0x565344['id']},{})[_0x06ad('0x2a')](function(){return _0x3e73af;});}else{return _0x3e73af;}})[_0x06ad('0x4d')](function(_0x54051f){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x54051f);throw _0x54051f;});}return _0x3e73af;})['then'](respondWithResult(_0x21b761,0xc9))[_0x06ad('0x4d')](handleError(_0x21b761,null));};exports['clone']=function(_0x4f30e0,_0x8534f9){var _0x1e282b={'where':{'id':_0x4f30e0[_0x06ad('0x4f')]['id']}},_0x10fd9e={};_0x10fd9e[_0x06ad('0x3c')]=_['keys'](db[_0x06ad('0x33')][_0x06ad('0x34')]);_0x1e282b[_0x06ad('0x3b')]=_[_0x06ad('0x3a')](_0x10fd9e[_0x06ad('0x3c')],qs[_0x06ad('0x3d')](_0x4f30e0[_0x06ad('0x38')][_0x06ad('0x3d')]));_0x1e282b['attributes']=_0x1e282b[_0x06ad('0x3b')]['length']?_0x1e282b[_0x06ad('0x3b')]:_0x10fd9e[_0x06ad('0x3c')];if(_0x4f30e0[_0x06ad('0x38')][_0x06ad('0x49')]){_0x1e282b[_0x06ad('0x4a')]=[{'all':!![]}];}_0x1e282b=_[_0x06ad('0x47')]({},_0x1e282b,_0x4f30e0[_0x06ad('0x51')]);return db[_0x06ad('0x33')][_0x06ad('0x52')](_0x1e282b)['then'](handleEntityNotFound(_0x8534f9,null))[_0x06ad('0x2a')](function(_0x182f8f){if(_0x182f8f){var _0xd89fa0=_0x182f8f['get']({'plain':!![]});_0xd89fa0=qs[_0x06ad('0x59')](_0xd89fa0,['id','createdAt',_0x06ad('0x5a')]);_0x4f30e0[_0x06ad('0x54')]=_[_0x06ad('0x59')](_0x4f30e0[_0x06ad('0x54')],['id',_0x06ad('0x5b'),'updatedAt']);return db[_0x06ad('0x33')]['create'](_[_0x06ad('0x47')](_0xd89fa0,_0x4f30e0[_0x06ad('0x54')]),{'include':_0x4f30e0[_0x06ad('0x38')][_0x06ad('0x49')]?[{'all':!![]}]:undefined})[_0x06ad('0x2a')](function(_0x4b85ec){var _0x2cdf8a=_0x4f30e0[_0x06ad('0x5c')][_0x06ad('0x55')]({'plain':!![]});if(!_0x2cdf8a)throw new Error(_0x06ad('0x5d'));if(_0x2cdf8a['role']==='user'){var _0x9692c0=_0x4b85ec[_0x06ad('0x55')]({'plain':!![]});var _0x230878=_0x06ad('0x2c');return db[_0x06ad('0x57')]['find']({'where':{'name':_0x230878,'userProfileId':_0x2cdf8a[_0x06ad('0x5e')]},'raw':!![]})[_0x06ad('0x2a')](function(_0x25b4c0){if(_0x25b4c0&&_0x25b4c0[_0x06ad('0x58')]===0x0){return db['UserProfileResource'][_0x06ad('0x53')]({'name':_0x9692c0[_0x06ad('0x2f')],'resourceId':_0x9692c0['id'],'type':_0x25b4c0[_0x06ad('0x2f')],'sectionId':_0x25b4c0['id']},{})[_0x06ad('0x2a')](function(){return _0x4b85ec;});}else{return _0x4b85ec;}})[_0x06ad('0x4d')](function(_0x3b7682){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3b7682);throw _0x3b7682;});}return _0x4b85ec;});}})[_0x06ad('0x2a')](respondWithResult(_0x8534f9,0xc9))['catch'](handleError(_0x8534f9,null));};exports[_0x06ad('0x29')]=function(_0x5869c9,_0x3fa677){if(_0x5869c9[_0x06ad('0x54')]['id']){delete _0x5869c9[_0x06ad('0x54')]['id'];}return db['Dashboard'][_0x06ad('0x52')]({'where':{'id':_0x5869c9[_0x06ad('0x4f')]['id']}})['then'](handleEntityNotFound(_0x3fa677,null))[_0x06ad('0x2a')](saveUpdates(_0x5869c9['body'],null))['then'](respondWithResult(_0x3fa677,null))[_0x06ad('0x4d')](handleError(_0x3fa677,null));};exports[_0x06ad('0x2b')]=function(_0x425b8f,_0x26d06a){return db['Dashboard'][_0x06ad('0x52')]({'where':{'id':_0x425b8f[_0x06ad('0x4f')]['id']}})[_0x06ad('0x2a')](handleEntityNotFound(_0x26d06a,null))[_0x06ad('0x2a')](removeEntity(_0x26d06a,null))[_0x06ad('0x4d')](handleError(_0x26d06a,null));};function widgetAttributes(_0x748dcb){try{switch(_0x748dcb[_0x06ad('0x36')]){case _0x06ad('0x5f'):return[{'name':_0x06ad('0x60'),'value':_0x748dcb[_0x06ad('0x60')]||(_0x748dcb['attrs']&&_0x748dcb[_0x06ad('0x61')][0x0]?_0x748dcb[_0x06ad('0x61')][0x0][_0x06ad('0x62')]:undefined)||_0x06ad('0x63')}];case'custom':return[{'name':'attrPath','value':_0x748dcb[_0x06ad('0x64')]||(_0x748dcb[_0x06ad('0x61')]&&_0x748dcb['attrs'][0x0]?_0x748dcb[_0x06ad('0x61')][0x0][_0x06ad('0x62')]:undefined)||''}];case _0x06ad('0x65'):return[{'name':_0x06ad('0x66'),'value':_0x748dcb[_0x06ad('0x66')]||(_0x748dcb[_0x06ad('0x61')]&&_0x748dcb['attrs'][0x0]?_0x748dcb[_0x06ad('0x61')][0x0]['value']:undefined)||_0x06ad('0x67')},{'name':_0x06ad('0x68'),'value':_0x748dcb[_0x06ad('0x68')]||(_0x748dcb[_0x06ad('0x61')]&&_0x748dcb['attrs'][0x1]?_0x748dcb['attrs'][0x1][_0x06ad('0x62')]:undefined)||'0.00'},{'name':_0x06ad('0x69'),'value':_0x748dcb[_0x06ad('0x69')]||(_0x748dcb['attrs']&&_0x748dcb[_0x06ad('0x61')][0x2]?_0x748dcb[_0x06ad('0x61')][0x2][_0x06ad('0x62')]:undefined)||0xc}];case _0x06ad('0x6a'):return[{'name':_0x06ad('0x6b'),'value':_0x748dcb[_0x06ad('0x6b')]||(_0x748dcb['attrs']&&_0x748dcb[_0x06ad('0x61')][0x0]?_0x748dcb[_0x06ad('0x61')][0x0][_0x06ad('0x62')]:undefined)||'total'},{'name':'attrVoiceQueues','value':_0x748dcb['attrVoiceQueues']||(_0x748dcb[_0x06ad('0x61')]&&_0x748dcb['attrs'][0x1]?_0x748dcb['attrs'][0x1][_0x06ad('0x62')]:undefined)||[]},{'name':_0x06ad('0x69'),'value':_0x748dcb[_0x06ad('0x69')]||(_0x748dcb[_0x06ad('0x61')]&&_0x748dcb[_0x06ad('0x61')][0x2]?_0x748dcb['attrs'][0x2][_0x06ad('0x62')]:undefined)||0x14}];case _0x06ad('0x6c'):case'pie-chart':return[{'name':_0x06ad('0x6d'),'value':_0x748dcb[_0x06ad('0x6d')]||(_0x748dcb[_0x06ad('0x61')]&&_0x748dcb[_0x06ad('0x61')][0x0]?_0x748dcb[_0x06ad('0x61')][0x0][_0x06ad('0x62')]:undefined)||_0x06ad('0x6e')},{'name':_0x06ad('0x6f'),'value':_0x748dcb[_0x06ad('0x6f')]||(_0x748dcb[_0x06ad('0x61')]&&_0x748dcb[_0x06ad('0x61')][0x1]?_0x748dcb[_0x06ad('0x61')][0x1]['value']:undefined)||null},{'name':'attrSerie3','value':_0x748dcb[_0x06ad('0x70')]||(_0x748dcb[_0x06ad('0x61')]&&_0x748dcb['attrs'][0x2]?_0x748dcb[_0x06ad('0x61')][0x2][_0x06ad('0x62')]:undefined)||null},{'name':_0x06ad('0x71'),'value':_0x748dcb[_0x06ad('0x71')]||(_0x748dcb[_0x06ad('0x61')]&&_0x748dcb[_0x06ad('0x61')][0x3]?_0x748dcb[_0x06ad('0x61')][0x3]['value']:undefined)||[]}];case _0x06ad('0x72'):return[{'name':_0x06ad('0x73'),'type':_0x748dcb[_0x06ad('0x74')]||(_0x748dcb[_0x06ad('0x61')]&&_0x748dcb[_0x06ad('0x61')][0x0]?_0x748dcb['attrs'][0x0][_0x06ad('0x36')]:undefined)||null,'value':_0x748dcb[_0x06ad('0x73')]||(_0x748dcb[_0x06ad('0x61')]&&_0x748dcb['attrs'][0x0]?_0x748dcb[_0x06ad('0x61')][0x0][_0x06ad('0x62')]:undefined)||null},{'name':_0x06ad('0x75'),'value':_0x748dcb['attrRefresh']||(_0x748dcb[_0x06ad('0x61')]&&_0x748dcb[_0x06ad('0x61')][0x1]?_0x748dcb[_0x06ad('0x61')][0x1][_0x06ad('0x62')]:undefined)||0x0}];default:return[];}}catch(_0x459fd2){logger[_0x06ad('0x76')](_0x06ad('0x77'),JSON[_0x06ad('0x78')](_0x459fd2));return[];}}exports['addItem']=function(_0x2ae27a,_0x51fdd6,_0x5dda7b){if(_0x2ae27a[_0x06ad('0x54')]['id']){delete _0x2ae27a[_0x06ad('0x54')]['id'];}return db[_0x06ad('0x33')][_0x06ad('0x52')]({'where':{'id':_0x2ae27a['params']['id']}})[_0x06ad('0x2a')](handleEntityNotFound(_0x51fdd6,null))['then'](function(_0x572799){if(_0x572799){_0x2ae27a[_0x06ad('0x54')][_0x06ad('0x79')]=_0x572799['id'];_0x2ae27a['body'][_0x06ad('0x61')]=widgetAttributes(_0x2ae27a[_0x06ad('0x54')]);return db[_0x06ad('0x7a')][_0x06ad('0x53')](_0x2ae27a['body']);}})['then'](respondWithResult(_0x51fdd6,null))[_0x06ad('0x4d')](handleError(_0x51fdd6,null));};exports[_0x06ad('0x7b')]=function(_0x41d9d3,_0x344695,_0x1263b1){var _0x2b77e8={};var _0x3f7068={};var _0x2ff183;var _0x40ae51;return db[_0x06ad('0x33')]['findOne']({'where':{'id':_0x41d9d3[_0x06ad('0x4f')]['id']}})[_0x06ad('0x2a')](handleEntityNotFound(_0x344695,null))['then'](function(_0x446c29){if(_0x446c29){_0x2ff183=_0x446c29;_0x3f7068[_0x06ad('0x3c')]=_['keys'](db['DashboardItem']['rawAttributes']);_0x3f7068[_0x06ad('0x38')]=_[_0x06ad('0x50')](_0x41d9d3[_0x06ad('0x38')]);_0x3f7068['filters']=_[_0x06ad('0x3a')](_0x3f7068['model'],_0x3f7068[_0x06ad('0x38')]);_0x2b77e8[_0x06ad('0x3b')]=_[_0x06ad('0x3a')](_0x3f7068[_0x06ad('0x3c')],qs[_0x06ad('0x3d')](_0x41d9d3[_0x06ad('0x38')][_0x06ad('0x3d')]));_0x2b77e8[_0x06ad('0x3b')]=_0x2b77e8[_0x06ad('0x3b')]['length']?_0x2b77e8[_0x06ad('0x3b')]:_0x3f7068[_0x06ad('0x3c')];_0x2b77e8[_0x06ad('0x42')]=qs[_0x06ad('0x43')](_0x41d9d3[_0x06ad('0x38')][_0x06ad('0x43')]);_0x2b77e8['where']=qs['filters'](_[_0x06ad('0x45')](_0x41d9d3[_0x06ad('0x38')],_0x3f7068[_0x06ad('0x39')]));if(_0x41d9d3[_0x06ad('0x38')][_0x06ad('0x46')]){_0x2b77e8[_0x06ad('0x44')]=_[_0x06ad('0x47')](_0x2b77e8[_0x06ad('0x44')],{'$or':_[_0x06ad('0x32')](_0x2b77e8['attributes'],function(_0x1c3910){var _0x480625={};_0x480625[_0x1c3910]={'$like':'%'+_0x41d9d3[_0x06ad('0x38')]['filter']+'%'};return _0x480625;})});}_0x2b77e8=_['merge']({},_0x2b77e8,_0x41d9d3['options']);return _0x2ff183[_0x06ad('0x7b')](_0x2b77e8);}})['then'](function(_0xda73f7){if(_0xda73f7){_0x40ae51=_0xda73f7['length'];if(!_0x41d9d3[_0x06ad('0x38')][_0x06ad('0x3f')]('nolimit')){_0x2b77e8['limit']=qs[_0x06ad('0x41')](_0x41d9d3[_0x06ad('0x38')][_0x06ad('0x41')]);_0x2b77e8[_0x06ad('0x20')]=qs['offset'](_0x41d9d3[_0x06ad('0x38')]['offset']);}return _0x2ff183[_0x06ad('0x7b')](_0x2b77e8);}})['then'](function(_0x3dcc20){if(_0x3dcc20){return _0x3dcc20?{'count':_0x40ae51,'rows':_0x3dcc20}:null;}})[_0x06ad('0x2a')](respondWithResult(_0x344695,null))[_0x06ad('0x4d')](handleError(_0x344695,null));};
\ No newline at end of file
index 7e41f4d..7b971b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5224=['save','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','Dashboard','setMaxListeners'];(function(_0x5e56ec,_0x17be43){var _0x260a0f=function(_0x39ddb5){while(--_0x39ddb5){_0x5e56ec['push'](_0x5e56ec['shift']());}};_0x260a0f(++_0x17be43);}(_0x5224,0xa6));var _0x4522=function(_0xfcfc35,_0x41125e){_0xfcfc35=_0xfcfc35-0x0;var _0x13a3c7=_0x5224[_0xfcfc35];return _0x13a3c7;};'use strict';var EventEmitter=require(_0x4522('0x0'));var Dashboard=require(_0x4522('0x1'))['db'][_0x4522('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents[_0x4522('0x3')](0x0);var events={'afterCreate':_0x4522('0x4'),'afterUpdate':'update','afterDestroy':_0x4522('0x5')};function emitEvent(_0x1ed51b){return function(_0x630e1c,_0x1f7ac7,_0x320b1b){DashboardEvents[_0x4522('0x6')](_0x1ed51b+':'+_0x630e1c['id'],_0x630e1c);DashboardEvents['emit'](_0x1ed51b,_0x630e1c);_0x320b1b(null);};}for(var e in events){if(events[_0x4522('0x7')](e)){var event=events[e];Dashboard[_0x4522('0x8')](e,emitEvent(event));}}module[_0x4522('0x9')]=DashboardEvents;
\ No newline at end of file
+var _0xf229=['emit','hasOwnProperty','setMaxListeners','save','remove'];(function(_0x578b52,_0x566fc6){var _0x43068c=function(_0x5eb0d0){while(--_0x5eb0d0){_0x578b52['push'](_0x578b52['shift']());}};_0x43068c(++_0x566fc6);}(_0xf229,0xb1));var _0x9f22=function(_0x1c7d66,_0x24cb19){_0x1c7d66=_0x1c7d66-0x0;var _0x50c973=_0xf229[_0x1c7d66];return _0x50c973;};'use strict';var EventEmitter=require('events');var Dashboard=require('../../mysqldb')['db']['Dashboard'];var DashboardEvents=new EventEmitter();DashboardEvents[_0x9f22('0x0')](0x0);var events={'afterCreate':_0x9f22('0x1'),'afterUpdate':'update','afterDestroy':_0x9f22('0x2')};function emitEvent(_0x1b4a62){return function(_0x1aa25e,_0x12f033,_0x59dd42){DashboardEvents[_0x9f22('0x3')](_0x1b4a62+':'+_0x1aa25e['id'],_0x1aa25e);DashboardEvents[_0x9f22('0x3')](_0x1b4a62,_0x1aa25e);_0x59dd42(null);};}for(var e in events){if(events[_0x9f22('0x4')](e)){var event=events[e];Dashboard['hook'](e,emitEvent(event));}}module['exports']=DashboardEvents;
\ No newline at end of file
index 67b21d2..d74c70a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b2d=['define','dashboards','util','../../config/logger','api','moment','bluebird','request-promise','path','./dashboard.attributes'];(function(_0x58f3b5,_0x4898d7){var _0x3993bd=function(_0x4411fb){while(--_0x4411fb){_0x58f3b5['push'](_0x58f3b5['shift']());}};_0x3993bd(++_0x4898d7);}(_0x2b2d,0x142));var _0xd2b2=function(_0x45e647,_0x2c482c){_0x45e647=_0x45e647-0x0;var _0x2deace=_0x2b2d[_0x45e647];return _0x2deace;};'use strict';var _=require('lodash');var util=require(_0xd2b2('0x0'));var logger=require(_0xd2b2('0x1'))(_0xd2b2('0x2'));var moment=require(_0xd2b2('0x3'));var BPromise=require(_0xd2b2('0x4'));var rp=require(_0xd2b2('0x5'));var fs=require('fs');var path=require(_0xd2b2('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xd2b2('0x7'));module['exports']=function(_0x3b8505,_0x16599c){return _0x3b8505[_0xd2b2('0x8')]('Dashboard',attributes,{'tableName':_0xd2b2('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcd07=['moment','bluebird','path','rimraf','../../config/environment','define','dashboards','lodash','../../config/logger','api'];(function(_0x635d57,_0x45a185){var _0x2f96ff=function(_0x5f3e0f){while(--_0x5f3e0f){_0x635d57['push'](_0x635d57['shift']());}};_0x2f96ff(++_0x45a185);}(_0xcd07,0x1d3));var _0x7cd0=function(_0x2145d1,_0x140c60){_0x2145d1=_0x2145d1-0x0;var _0x2c29b2=_0xcd07[_0x2145d1];return _0x2c29b2;};'use strict';var _=require(_0x7cd0('0x0'));var util=require('util');var logger=require(_0x7cd0('0x1'))(_0x7cd0('0x2'));var moment=require(_0x7cd0('0x3'));var BPromise=require(_0x7cd0('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7cd0('0x5'));var rimraf=require(_0x7cd0('0x6'));var config=require(_0x7cd0('0x7'));var attributes=require('./dashboard.attributes');module['exports']=function(_0x2bbff7,_0x3e9167){return _0x2bbff7[_0x7cd0('0x8')]('Dashboard',attributes,{'tableName':_0x7cd0('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5ef2b7d..a938b5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfd8=['../../config/utils','rpc','../../config/environment','jayson/promise','client','redis','localhost','./dashboard.socket','register','then','info','Dashboard,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb'];(function(_0x52a12a,_0x19ffde){var _0xf034fb=function(_0x6edf4c){while(--_0x6edf4c){_0x52a12a['push'](_0x52a12a['shift']());}};_0xf034fb(++_0x19ffde);}(_0xbfd8,0x78));var _0x8bfd=function(_0x32ca32,_0x238b2b){_0x32ca32=_0x32ca32-0x0;var _0x5438ff=_0xbfd8[_0x32ca32];return _0x5438ff;};'use strict';var _=require(_0x8bfd('0x0'));var util=require('util');var moment=require(_0x8bfd('0x1'));var BPromise=require('bluebird');var rs=require(_0x8bfd('0x2'));var fs=require('fs');var Redis=require(_0x8bfd('0x3'));var db=require(_0x8bfd('0x4'))['db'];var utils=require(_0x8bfd('0x5'));var logger=require('../../config/logger')(_0x8bfd('0x6'));var config=require(_0x8bfd('0x7'));var jayson=require(_0x8bfd('0x8'));var client=jayson[_0x8bfd('0x9')]['http']({'port':0x232a});config[_0x8bfd('0xa')]=_['defaults'](config['redis'],{'host':_0x8bfd('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8bfd('0xa')]));require(_0x8bfd('0xc'))[_0x8bfd('0xd')](socket);function respondWithRpcPromise(_0x460dc8,_0x3aaac5,_0x344f1d){return new BPromise(function(_0x2b8b6c,_0x2b3979){return client['request'](_0x460dc8,_0x344f1d)[_0x8bfd('0xe')](function(_0x312609){logger[_0x8bfd('0xf')](_0x8bfd('0x10'),_0x3aaac5,_0x8bfd('0x11'));logger[_0x8bfd('0x12')]('Dashboard,\x20%s,\x20%s,\x20%s',_0x3aaac5,_0x8bfd('0x11'),JSON[_0x8bfd('0x13')](_0x312609));if(_0x312609[_0x8bfd('0x14')]){if(_0x312609[_0x8bfd('0x14')][_0x8bfd('0x15')]===0x1f4){logger[_0x8bfd('0x14')]('Dashboard,\x20%s,\x20%s',_0x3aaac5,_0x312609[_0x8bfd('0x14')][_0x8bfd('0x16')]);return _0x2b3979(_0x312609[_0x8bfd('0x14')][_0x8bfd('0x16')]);}logger[_0x8bfd('0x14')](_0x8bfd('0x10'),_0x3aaac5,_0x312609[_0x8bfd('0x14')][_0x8bfd('0x16')]);return _0x2b8b6c(_0x312609[_0x8bfd('0x14')][_0x8bfd('0x16')]);}else{logger[_0x8bfd('0xf')](_0x8bfd('0x10'),_0x3aaac5,_0x8bfd('0x11'));_0x2b8b6c(_0x312609[_0x8bfd('0x17')][_0x8bfd('0x16')]);}})[_0x8bfd('0x18')](function(_0x49dc21){logger['error'](_0x8bfd('0x10'),_0x3aaac5,_0x49dc21);_0x2b3979(_0x49dc21);});});}
\ No newline at end of file
+var _0xd69b=['../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./dashboard.socket','register','request','then','info','Dashboard,\x20%s,\x20%s','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x313d95,_0x361968){var _0x39071c=function(_0x32c919){while(--_0x32c919){_0x313d95['push'](_0x313d95['shift']());}};_0x39071c(++_0x361968);}(_0xd69b,0x137));var _0xbd69=function(_0x45bf86,_0x75586e){_0x45bf86=_0x45bf86-0x0;var _0x1f02b7=_0xd69b[_0x45bf86];return _0x1f02b7;};'use strict';var _=require('lodash');var util=require(_0xbd69('0x0'));var moment=require(_0xbd69('0x1'));var BPromise=require(_0xbd69('0x2'));var rs=require(_0xbd69('0x3'));var fs=require('fs');var Redis=require(_0xbd69('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xbd69('0x5'));var logger=require(_0xbd69('0x6'))(_0xbd69('0x7'));var config=require(_0xbd69('0x8'));var jayson=require(_0xbd69('0x9'));var client=jayson[_0xbd69('0xa')][_0xbd69('0xb')]({'port':0x232a});config[_0xbd69('0xc')]=_[_0xbd69('0xd')](config['redis'],{'host':_0xbd69('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xbd69('0xf'))[_0xbd69('0x10')](socket);function respondWithRpcPromise(_0x2bd04d,_0x968fca,_0x3b9ec3){return new BPromise(function(_0x450c2c,_0x58bf0b){return client[_0xbd69('0x11')](_0x2bd04d,_0x3b9ec3)[_0xbd69('0x12')](function(_0x18533c){logger[_0xbd69('0x13')](_0xbd69('0x14'),_0x968fca,_0xbd69('0x15'));logger[_0xbd69('0x16')](_0xbd69('0x17'),_0x968fca,_0xbd69('0x15'),JSON[_0xbd69('0x18')](_0x18533c));if(_0x18533c['error']){if(_0x18533c[_0xbd69('0x19')]['code']===0x1f4){logger[_0xbd69('0x19')](_0xbd69('0x14'),_0x968fca,_0x18533c[_0xbd69('0x19')]['message']);return _0x58bf0b(_0x18533c['error']['message']);}logger[_0xbd69('0x19')](_0xbd69('0x14'),_0x968fca,_0x18533c['error'][_0xbd69('0x1a')]);return _0x450c2c(_0x18533c[_0xbd69('0x19')][_0xbd69('0x1a')]);}else{logger['info'](_0xbd69('0x14'),_0x968fca,'request\x20sent');_0x450c2c(_0x18533c[_0xbd69('0x1b')][_0xbd69('0x1a')]);}})[_0xbd69('0x1c')](function(_0x4da6f7){logger[_0xbd69('0x19')](_0xbd69('0x14'),_0x968fca,_0x4da6f7);_0x58bf0b(_0x4da6f7);});});}
\ No newline at end of file
index 4d1cfeb..03ae4f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d87=['dashboard:','./dashboard.events','save','update','register','length'];(function(_0x4ed594,_0x140a96){var _0x7f6ba1=function(_0x562f14){while(--_0x562f14){_0x4ed594['push'](_0x4ed594['shift']());}};_0x7f6ba1(++_0x140a96);}(_0x4d87,0x19f));var _0x74d8=function(_0x3f3fa2,_0x54c464){_0x3f3fa2=_0x3f3fa2-0x0;var _0x49c36c=_0x4d87[_0x3f3fa2];return _0x49c36c;};'use strict';var DashboardEvents=require(_0x74d8('0x0'));var events=[_0x74d8('0x1'),'remove',_0x74d8('0x2')];function createListener(_0x14bb88,_0x511f75){return function(_0x5eb3e4){_0x511f75['emit'](_0x14bb88,_0x5eb3e4);};}function removeListener(_0x36c3b8,_0x4d99d3){return function(){DashboardEvents['removeListener'](_0x36c3b8,_0x4d99d3);};}exports[_0x74d8('0x3')]=function(_0x3cb5e8){for(var _0x391531=0x0,_0x47dcf7=events[_0x74d8('0x4')];_0x391531<_0x47dcf7;_0x391531++){var _0x485941=events[_0x391531];var _0xb265f3=createListener(_0x74d8('0x5')+_0x485941,_0x3cb5e8);DashboardEvents['on'](_0x485941,_0xb265f3);}};
\ No newline at end of file
+var _0x21e5=['register','dashboard:','./dashboard.events','update','emit','removeListener'];(function(_0x15a718,_0x3c951f){var _0x19f4a4=function(_0x3d0c56){while(--_0x3d0c56){_0x15a718['push'](_0x15a718['shift']());}};_0x19f4a4(++_0x3c951f);}(_0x21e5,0xf8));var _0x521e=function(_0x2c0dc0,_0x19900d){_0x2c0dc0=_0x2c0dc0-0x0;var _0x4c0990=_0x21e5[_0x2c0dc0];return _0x4c0990;};'use strict';var DashboardEvents=require(_0x521e('0x0'));var events=['save','remove',_0x521e('0x1')];function createListener(_0x2d3496,_0x5d4c60){return function(_0x172510){_0x5d4c60[_0x521e('0x2')](_0x2d3496,_0x172510);};}function removeListener(_0x10872b,_0x1383f8){return function(){DashboardEvents[_0x521e('0x3')](_0x10872b,_0x1383f8);};}exports[_0x521e('0x4')]=function(_0xe8105e){for(var _0x3a5931=0x0,_0x5f16eb=events['length'];_0x3a5931<_0x5f16eb;_0x3a5931++){var _0x2b02c0=events[_0x3a5931];var _0x102498=createListener(_0x521e('0x5')+_0x2b02c0,_0xe8105e);DashboardEvents['on'](_0x2b02c0,_0x102498);}};
\ No newline at end of file
index 1623f32..db0fc6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ea7=['path','connect-timeout','express','Router','../../components/interaction/service','./dashboard.controller','get','isAuthenticated','/:id','show','/:id/items','getItems','post','create','clone','addItem','put','update','delete','multer','util'];(function(_0x370338,_0x4178ec){var _0x2e10df=function(_0x109471){while(--_0x109471){_0x370338['push'](_0x370338['shift']());}};_0x2e10df(++_0x4178ec);}(_0x9ea7,0xe5));var _0x79ea=function(_0x40f9a0,_0x3458cc){_0x40f9a0=_0x40f9a0-0x0;var _0x3e3144=_0x9ea7[_0x40f9a0];return _0x3e3144;};'use strict';var multer=require(_0x79ea('0x0'));var util=require(_0x79ea('0x1'));var path=require(_0x79ea('0x2'));var timeout=require(_0x79ea('0x3'));var express=require(_0x79ea('0x4'));var router=express[_0x79ea('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x79ea('0x6'));var config=require('../../config/environment');var controller=require(_0x79ea('0x7'));router[_0x79ea('0x8')]('/',auth[_0x79ea('0x9')](),controller['index']);router[_0x79ea('0x8')](_0x79ea('0xa'),auth['isAuthenticated'](),controller[_0x79ea('0xb')]);router[_0x79ea('0x8')](_0x79ea('0xc'),auth[_0x79ea('0x9')](),controller[_0x79ea('0xd')]);router[_0x79ea('0xe')]('/',auth[_0x79ea('0x9')](),controller[_0x79ea('0xf')]);router[_0x79ea('0xe')]('/:id/clone',auth[_0x79ea('0x9')](),controller[_0x79ea('0x10')]);router['post'](_0x79ea('0xc'),auth['isAuthenticated'](),controller[_0x79ea('0x11')]);router[_0x79ea('0x12')]('/:id',auth[_0x79ea('0x9')](),controller[_0x79ea('0x13')]);router[_0x79ea('0x14')](_0x79ea('0xa'),auth[_0x79ea('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xd37c=['delete','destroy','exports','multer','connect-timeout','express','fs-extra','../../config/environment','get','isAuthenticated','/:id','/:id/items','post','create','/:id/clone','clone','addItem'];(function(_0x4d2f4,_0x226fd3){var _0x17ff99=function(_0xcffaa0){while(--_0xcffaa0){_0x4d2f4['push'](_0x4d2f4['shift']());}};_0x17ff99(++_0x226fd3);}(_0xd37c,0x1df));var _0xcd37=function(_0x2daa65,_0x150edd){_0x2daa65=_0x2daa65-0x0;var _0x3560d1=_0xd37c[_0x2daa65];return _0x3560d1;};'use strict';var multer=require(_0xcd37('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xcd37('0x1'));var express=require(_0xcd37('0x2'));var router=express['Router']();var fs_extra=require(_0xcd37('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xcd37('0x4'));var controller=require('./dashboard.controller');router[_0xcd37('0x5')]('/',auth[_0xcd37('0x6')](),controller['index']);router[_0xcd37('0x5')](_0xcd37('0x7'),auth[_0xcd37('0x6')](),controller['show']);router[_0xcd37('0x5')](_0xcd37('0x8'),auth['isAuthenticated'](),controller['getItems']);router[_0xcd37('0x9')]('/',auth[_0xcd37('0x6')](),controller[_0xcd37('0xa')]);router['post'](_0xcd37('0xb'),auth[_0xcd37('0x6')](),controller[_0xcd37('0xc')]);router[_0xcd37('0x9')]('/:id/items',auth[_0xcd37('0x6')](),controller[_0xcd37('0xd')]);router['put'](_0xcd37('0x7'),auth['isAuthenticated'](),controller['update']);router[_0xcd37('0xe')]('/:id',auth[_0xcd37('0x6')](),controller[_0xcd37('0xf')]);module[_0xcd37('0x10')]=router;
\ No newline at end of file
index 8a7c780..492ec88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x187d=['stringify','INTEGER','#ffffff','sequelize','lodash','exports','STRING','TEXT','long','getDataValue','attrs','setDataValue'];(function(_0x13657e,_0x52cfdf){var _0x18bf36=function(_0x20e572){while(--_0x20e572){_0x13657e['push'](_0x13657e['shift']());}};_0x18bf36(++_0x52cfdf);}(_0x187d,0x93));var _0xd187=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0x187d[_0x3c4737];return _0x2bb926;};'use strict';var Sequelize=require(_0xd187('0x0'));var squel=require('squel');var _=require(_0xd187('0x1'));module[_0xd187('0x2')]={'title':{'type':Sequelize[_0xd187('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xd187('0x3')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0xd187('0x4')](_0xd187('0x5')),'get':function(){try{return JSON['parse'](this[_0xd187('0x6')](_0xd187('0x7')));}catch(_0x4ebc8d){return[];}},'set':function(_0x1d2533){try{this[_0xd187('0x8')](_0xd187('0x7'),JSON[_0xd187('0x9')](_0x1d2533));}catch(_0x28ce2f){this[_0xd187('0x8')](_0xd187('0x7'),JSON[_0xd187('0x9')]([]));}}},'sizeX':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0xd187('0xa')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0xd187('0xa')]},'col':{'type':Sequelize[_0xd187('0xa')]},'background':{'type':Sequelize[_0xd187('0x3')],'allowNull':![],'defaultValue':_0xd187('0xb'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0xd187('0x3')],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0xd187('0x3')]},'titleFontSize':{'type':Sequelize[_0xd187('0xa')],'defaultValue':0xc}};
\ No newline at end of file
+var _0x1261=['squel','lodash','exports','STRING','TEXT','long','parse','getDataValue','attrs','setDataValue','stringify','INTEGER'];(function(_0x31172e,_0xa59e5){var _0x414ada=function(_0x37ede4){while(--_0x37ede4){_0x31172e['push'](_0x31172e['shift']());}};_0x414ada(++_0xa59e5);}(_0x1261,0x144));var _0x1126=function(_0x56ca61,_0x187321){_0x56ca61=_0x56ca61-0x0;var _0x1e7bee=_0x1261[_0x56ca61];return _0x1e7bee;};'use strict';var Sequelize=require('sequelize');var squel=require(_0x1126('0x0'));var _=require(_0x1126('0x1'));module[_0x1126('0x2')]={'title':{'type':Sequelize[_0x1126('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0x1126('0x3')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x1126('0x4')](_0x1126('0x5')),'get':function(){try{return JSON[_0x1126('0x6')](this[_0x1126('0x7')](_0x1126('0x8')));}catch(_0x5a2189){return[];}},'set':function(_0x5c68c8){try{this[_0x1126('0x9')](_0x1126('0x8'),JSON['stringify'](_0x5c68c8));}catch(_0x17e5f0){this[_0x1126('0x9')](_0x1126('0x8'),JSON[_0x1126('0xa')]([]));}}},'sizeX':{'type':Sequelize[_0x1126('0xb')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x1126('0xb')]},'col':{'type':Sequelize[_0x1126('0xb')]},'background':{'type':Sequelize[_0x1126('0x3')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x1126('0x3')],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize['STRING']},'titleFontSize':{'type':Sequelize[_0x1126('0xb')],'defaultValue':0xc}};
\ No newline at end of file
index f888035..6b907ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x907b=['web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','create','body','eml-format','zip-dir','fast-json-patch','bluebird','mustache','util','path','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','./dashboardItem.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set','reject','save','update','then','destroy','stack','name','send','params','model','keys','rawAttributes','filters','intersection','query','fields','attributes','length','includeAll','include','merge','options','find','catch','DashboardItem','type','iframe','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','attrTimezone','0.00','attrFontSize','counter','attrMetric','attrVoiceQueues','multibar-chart','attrSerie1','total','attrSerie2','attrSerie3'];(function(_0x591b54,_0x2935ef){var _0x316e9a=function(_0x2fc73f){while(--_0x2fc73f){_0x591b54['push'](_0x591b54['shift']());}};_0x316e9a(++_0x2935ef);}(_0x907b,0xbf));var _0xb907=function(_0x48ebe8,_0x300832){_0x48ebe8=_0x48ebe8-0x0;var _0x5c65fb=_0x907b[_0x48ebe8];return _0x5c65fb;};'use strict';var emlformat=require(_0xb907('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb907('0x1'));var jsonpatch=require(_0xb907('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb907('0x3'));var Mustache=require(_0xb907('0x4'));var util=require(_0xb907('0x5'));var path=require(_0xb907('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xb907('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb907('0x8'));var squel=require(_0xb907('0x9'));var crypto=require(_0xb907('0xa'));var jsforce=require(_0xb907('0xb'));var deskjs=require(_0xb907('0xc'));var toCsv=require(_0xb907('0xd'));var querystring=require(_0xb907('0xe'));var Papa=require(_0xb907('0xf'));var Redis=require(_0xb907('0x10'));var authService=require(_0xb907('0x11'));var qs=require(_0xb907('0x12'));var as=require(_0xb907('0x13'));var hardwareService=require(_0xb907('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0xb907('0x15'));var config=require(_0xb907('0x16'));var licenseUtil=require(_0xb907('0x17'));var db=require(_0xb907('0x18'))['db'];config['redis']=_[_0xb907('0x19')](config[_0xb907('0x1a')],{'host':_0xb907('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb907('0x1a')]));require(_0xb907('0x1c'))[_0xb907('0x1d')](socket);function respondWithStatusCode(_0x2455f5,_0x1ad5f5){_0x1ad5f5=_0x1ad5f5||0xcc;return function(_0x34ee3c){if(_0x34ee3c){return _0x2455f5[_0xb907('0x1e')](_0x1ad5f5);}return _0x2455f5[_0xb907('0x1f')](_0x1ad5f5)[_0xb907('0x20')]();};}function respondWithResult(_0x274800,_0x513a1b){_0x513a1b=_0x513a1b||0xc8;return function(_0x315cbd){if(_0x315cbd){return _0x274800['status'](_0x513a1b)[_0xb907('0x21')](_0x315cbd);}};}function respondWithFilteredResult(_0x3b4db8,_0x5812d7){return function(_0x3b795e){if(_0x3b795e){var _0x561896=typeof _0x5812d7[_0xb907('0x22')]===_0xb907('0x23')&&typeof _0x5812d7['limit']===_0xb907('0x23');var _0x1b9753=_0x3b795e[_0xb907('0x24')];var _0x33cbdc=_0x561896?0x0:_0x5812d7[_0xb907('0x22')];var _0x24d5a1=_0x561896?_0x3b795e[_0xb907('0x24')]:_0x5812d7[_0xb907('0x22')]+_0x5812d7[_0xb907('0x25')];var _0x4400db;if(_0x24d5a1>=_0x1b9753){_0x24d5a1=_0x1b9753;_0x4400db=0xc8;}else{_0x4400db=0xce;}_0x3b4db8[_0xb907('0x1f')](_0x4400db);return _0x3b4db8[_0xb907('0x26')]('Content-Range',_0x33cbdc+'-'+_0x24d5a1+'/'+_0x1b9753)[_0xb907('0x21')](_0x3b795e);}return null;};}function patchUpdates(_0x56a0d1){return function(_0x5c2230){try{jsonpatch['apply'](_0x5c2230,_0x56a0d1,!![]);}catch(_0x2c0d23){return BPromise[_0xb907('0x27')](_0x2c0d23);}return _0x5c2230[_0xb907('0x28')]();};}function saveUpdates(_0x4f66f5,_0x22174e){return function(_0x39b498){if(_0x39b498){return _0x39b498[_0xb907('0x29')](_0x4f66f5)[_0xb907('0x2a')](function(_0x51813a){return _0x51813a;});}return null;};}function removeEntity(_0x222ac3,_0x225a28){return function(_0xb37c36){if(_0xb37c36){return _0xb37c36[_0xb907('0x2b')]()[_0xb907('0x2a')](function(){_0x222ac3[_0xb907('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0xb8c528,_0x243b25){return function(_0x26dfb7){if(!_0x26dfb7){_0xb8c528[_0xb907('0x1e')](0x194);}return _0x26dfb7;};}function handleError(_0x5b1634,_0x31c59a){_0x31c59a=_0x31c59a||0x1f4;return function(_0x203b8c){logger['error'](_0x203b8c[_0xb907('0x2c')]);if(_0x203b8c[_0xb907('0x2d')]){delete _0x203b8c['name'];}_0x5b1634[_0xb907('0x1f')](_0x31c59a)[_0xb907('0x2e')](_0x203b8c);};}exports['show']=function(_0x2d96ef,_0x33fdac){var _0xe93edf={'raw':![],'where':{'id':_0x2d96ef[_0xb907('0x2f')]['id']}},_0x4fbfe1={};_0x4fbfe1[_0xb907('0x30')]=_[_0xb907('0x31')](db['DashboardItem'][_0xb907('0x32')]);_0x4fbfe1['query']=_[_0xb907('0x31')](_0x2d96ef['query']);_0x4fbfe1[_0xb907('0x33')]=_[_0xb907('0x34')](_0x4fbfe1[_0xb907('0x30')],_0x4fbfe1[_0xb907('0x35')]);_0xe93edf['attributes']=_[_0xb907('0x34')](_0x4fbfe1[_0xb907('0x30')],qs[_0xb907('0x36')](_0x2d96ef[_0xb907('0x35')]['fields']));_0xe93edf['attributes']=_0xe93edf[_0xb907('0x37')][_0xb907('0x38')]?_0xe93edf['attributes']:_0x4fbfe1[_0xb907('0x30')];if(_0x2d96ef[_0xb907('0x35')][_0xb907('0x39')]){_0xe93edf[_0xb907('0x3a')]=[{'all':!![]}];}_0xe93edf=_[_0xb907('0x3b')]({},_0xe93edf,_0x2d96ef[_0xb907('0x3c')]);return db['DashboardItem'][_0xb907('0x3d')](_0xe93edf)[_0xb907('0x2a')](handleEntityNotFound(_0x33fdac,null))[_0xb907('0x2a')](respondWithResult(_0x33fdac,null))[_0xb907('0x3e')](handleError(_0x33fdac,null));};exports[_0xb907('0x2b')]=function(_0x57c79c,_0x202a5c){return db[_0xb907('0x3f')]['find']({'where':{'id':_0x57c79c['params']['id']}})[_0xb907('0x2a')](handleEntityNotFound(_0x202a5c,null))['then'](removeEntity(_0x202a5c,null))[_0xb907('0x3e')](handleError(_0x202a5c,null));};function widgetAttributes(_0x3f544b){try{switch(_0x3f544b[_0xb907('0x40')]){case _0xb907('0x41'):return[{'name':_0xb907('0x42'),'value':_0x3f544b['attrUrl']||(_0x3f544b[_0xb907('0x43')]&&_0x3f544b[_0xb907('0x43')][0x0]?_0x3f544b[_0xb907('0x43')][0x0][_0xb907('0x44')]:undefined)||_0xb907('0x45')}];case _0xb907('0x46'):return[{'name':_0xb907('0x47'),'value':_0x3f544b['attrPath']||(_0x3f544b[_0xb907('0x43')]&&_0x3f544b[_0xb907('0x43')][0x0]?_0x3f544b['attrs'][0x0][_0xb907('0x44')]:undefined)||''}];case _0xb907('0x48'):return[{'name':_0xb907('0x49'),'value':_0x3f544b['attrHourFormat']||(_0x3f544b[_0xb907('0x43')]&&_0x3f544b['attrs'][0x0]?_0x3f544b[_0xb907('0x43')][0x0][_0xb907('0x44')]:undefined)||'HH:mm:ss'},{'name':_0xb907('0x4a'),'value':_0x3f544b[_0xb907('0x4a')]||(_0x3f544b[_0xb907('0x43')]&&_0x3f544b[_0xb907('0x43')][0x1]?_0x3f544b[_0xb907('0x43')][0x1]['value']:undefined)||_0xb907('0x4b')},{'name':_0xb907('0x4c'),'value':_0x3f544b[_0xb907('0x4c')]||(_0x3f544b[_0xb907('0x43')]&&_0x3f544b[_0xb907('0x43')][0x2]?_0x3f544b['attrs'][0x2]['value']:undefined)||0xc}];case _0xb907('0x4d'):return[{'name':_0xb907('0x4e'),'value':_0x3f544b[_0xb907('0x4e')]||(_0x3f544b['attrs']&&_0x3f544b[_0xb907('0x43')][0x0]?_0x3f544b[_0xb907('0x43')][0x0][_0xb907('0x44')]:undefined)||'total'},{'name':_0xb907('0x4f'),'value':_0x3f544b[_0xb907('0x4f')]||(_0x3f544b[_0xb907('0x43')]&&_0x3f544b[_0xb907('0x43')][0x1]?_0x3f544b[_0xb907('0x43')][0x1]['value']:undefined)||[]},{'name':_0xb907('0x4c'),'value':_0x3f544b[_0xb907('0x4c')]||(_0x3f544b[_0xb907('0x43')]&&_0x3f544b[_0xb907('0x43')][0x2]?_0x3f544b[_0xb907('0x43')][0x2][_0xb907('0x44')]:undefined)||0x14}];case _0xb907('0x50'):case'pie-chart':return[{'name':_0xb907('0x51'),'value':_0x3f544b['attrSerie1']||(_0x3f544b[_0xb907('0x43')]&&_0x3f544b[_0xb907('0x43')][0x0]?_0x3f544b[_0xb907('0x43')][0x0][_0xb907('0x44')]:undefined)||_0xb907('0x52')},{'name':_0xb907('0x53'),'value':_0x3f544b[_0xb907('0x53')]||(_0x3f544b[_0xb907('0x43')]&&_0x3f544b[_0xb907('0x43')][0x1]?_0x3f544b[_0xb907('0x43')][0x1][_0xb907('0x44')]:undefined)||null},{'name':'attrSerie3','value':_0x3f544b[_0xb907('0x54')]||(_0x3f544b[_0xb907('0x43')]&&_0x3f544b[_0xb907('0x43')][0x2]?_0x3f544b[_0xb907('0x43')][0x2][_0xb907('0x44')]:undefined)||null},{'name':_0xb907('0x4f'),'value':_0x3f544b[_0xb907('0x4f')]||(_0x3f544b[_0xb907('0x43')]&&_0x3f544b['attrs'][0x3]?_0x3f544b[_0xb907('0x43')][0x3][_0xb907('0x44')]:undefined)||[]}];case _0xb907('0x55'):return[{'name':_0xb907('0x56'),'type':_0x3f544b[_0xb907('0x57')]||(_0x3f544b[_0xb907('0x43')]&&_0x3f544b[_0xb907('0x43')][0x0]?_0x3f544b[_0xb907('0x43')][0x0][_0xb907('0x40')]:undefined)||null,'value':_0x3f544b[_0xb907('0x56')]||(_0x3f544b[_0xb907('0x43')]&&_0x3f544b['attrs'][0x0]?_0x3f544b[_0xb907('0x43')][0x0][_0xb907('0x44')]:undefined)||null},{'name':_0xb907('0x58'),'value':_0x3f544b['attrRefresh']||(_0x3f544b['attrs']&&_0x3f544b[_0xb907('0x43')][0x1]?_0x3f544b[_0xb907('0x43')][0x1][_0xb907('0x44')]:undefined)||0x0}];default:return[];}}catch(_0x31eb87){logger['error'](_0xb907('0x59'),JSON['stringify'](_0x31eb87));return[];}}exports[_0xb907('0x5a')]=function(_0x446151,_0x177774){if(_0x446151['body']){_0x446151[_0xb907('0x5b')][_0xb907('0x43')]=widgetAttributes(_0x446151[_0xb907('0x5b')]);}return db['DashboardItem'][_0xb907('0x5a')](_0x446151[_0xb907('0x5b')],{})['then'](respondWithResult(_0x177774,0xc9))['catch'](handleError(_0x177774,null));};exports[_0xb907('0x29')]=function(_0x944fd7,_0xe90869){if(_0x944fd7[_0xb907('0x5b')]['id']){delete _0x944fd7['body']['id'];}_0x944fd7['body'][_0xb907('0x43')]=widgetAttributes(_0x944fd7[_0xb907('0x5b')]);return db['DashboardItem'][_0xb907('0x3d')]({'where':{'id':_0x944fd7[_0xb907('0x2f')]['id']}})[_0xb907('0x2a')](handleEntityNotFound(_0xe90869,null))[_0xb907('0x2a')](saveUpdates(_0x944fd7[_0xb907('0x5b')],null))[_0xb907('0x2a')](respondWithResult(_0xe90869,null))[_0xb907('0x3e')](handleError(_0xe90869,null));};
\ No newline at end of file
+var _0x1a5c=['total','attrVoiceQueues','attrFontSize','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','socket.io-emitter','./dashboardItem.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','save','update','then','destroy','error','name','send','show','model','keys','DashboardItem','rawAttributes','intersection','fields','query','attributes','includeAll','include','merge','find','catch','params','type','iframe','attrUrl','attrs','https://','attrPath','value','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrMetric'];(function(_0x38b100,_0x177901){var _0x2bece2=function(_0x39b7d3){while(--_0x39b7d3){_0x38b100['push'](_0x38b100['shift']());}};_0x2bece2(++_0x177901);}(_0x1a5c,0x6a));var _0xc1a5=function(_0x5c9307,_0x5b97e4){_0x5c9307=_0x5c9307-0x0;var _0x373e29=_0x1a5c[_0x5c9307];return _0x373e29;};'use strict';var emlformat=require(_0xc1a5('0x0'));var rimraf=require(_0xc1a5('0x1'));var zipdir=require(_0xc1a5('0x2'));var jsonpatch=require(_0xc1a5('0x3'));var rp=require(_0xc1a5('0x4'));var moment=require(_0xc1a5('0x5'));var BPromise=require(_0xc1a5('0x6'));var Mustache=require(_0xc1a5('0x7'));var util=require(_0xc1a5('0x8'));var path=require(_0xc1a5('0x9'));var sox=require(_0xc1a5('0xa'));var csv=require(_0xc1a5('0xb'));var ejs=require(_0xc1a5('0xc'));var fs=require('fs');var fs_extra=require(_0xc1a5('0xd'));var _=require(_0xc1a5('0xe'));var squel=require('squel');var crypto=require(_0xc1a5('0xf'));var jsforce=require(_0xc1a5('0x10'));var deskjs=require(_0xc1a5('0x11'));var toCsv=require(_0xc1a5('0xb'));var querystring=require('querystring');var Papa=require(_0xc1a5('0x12'));var Redis=require(_0xc1a5('0x13'));var authService=require(_0xc1a5('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xc1a5('0x15'));var hardwareService=require(_0xc1a5('0x16'));var logger=require(_0xc1a5('0x17'))(_0xc1a5('0x18'));var utils=require(_0xc1a5('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xc1a5('0x1a'));var db=require(_0xc1a5('0x1b'))['db'];config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xc1a5('0x1c'))(new Redis(config['redis']));require(_0xc1a5('0x1d'))[_0xc1a5('0x1e')](socket);function respondWithStatusCode(_0x3cbbb3,_0x4fbbb3){_0x4fbbb3=_0x4fbbb3||0xcc;return function(_0x1d220a){if(_0x1d220a){return _0x3cbbb3[_0xc1a5('0x1f')](_0x4fbbb3);}return _0x3cbbb3[_0xc1a5('0x20')](_0x4fbbb3)[_0xc1a5('0x21')]();};}function respondWithResult(_0x4c8a50,_0x11f960){_0x11f960=_0x11f960||0xc8;return function(_0x101466){if(_0x101466){return _0x4c8a50['status'](_0x11f960)[_0xc1a5('0x22')](_0x101466);}};}function respondWithFilteredResult(_0x30c72f,_0x4a8080){return function(_0x3cd220){if(_0x3cd220){var _0xdde87d=typeof _0x4a8080[_0xc1a5('0x23')]===_0xc1a5('0x24')&&typeof _0x4a8080[_0xc1a5('0x25')]==='undefined';var _0x54a5c5=_0x3cd220['count'];var _0x4b735e=_0xdde87d?0x0:_0x4a8080[_0xc1a5('0x23')];var _0x4cbecf=_0xdde87d?_0x3cd220[_0xc1a5('0x26')]:_0x4a8080[_0xc1a5('0x23')]+_0x4a8080[_0xc1a5('0x25')];var _0x1e26f5;if(_0x4cbecf>=_0x54a5c5){_0x4cbecf=_0x54a5c5;_0x1e26f5=0xc8;}else{_0x1e26f5=0xce;}_0x30c72f[_0xc1a5('0x20')](_0x1e26f5);return _0x30c72f['set'](_0xc1a5('0x27'),_0x4b735e+'-'+_0x4cbecf+'/'+_0x54a5c5)[_0xc1a5('0x22')](_0x3cd220);}return null;};}function patchUpdates(_0x4610fb){return function(_0x3d8782){try{jsonpatch['apply'](_0x3d8782,_0x4610fb,!![]);}catch(_0x21eb02){return BPromise['reject'](_0x21eb02);}return _0x3d8782[_0xc1a5('0x28')]();};}function saveUpdates(_0x1540b2,_0x224d8c){return function(_0x282c7a){if(_0x282c7a){return _0x282c7a[_0xc1a5('0x29')](_0x1540b2)[_0xc1a5('0x2a')](function(_0x5b8b94){return _0x5b8b94;});}return null;};}function removeEntity(_0x883e51,_0x3abdc1){return function(_0x11a24d){if(_0x11a24d){return _0x11a24d[_0xc1a5('0x2b')]()[_0xc1a5('0x2a')](function(){_0x883e51['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x215a7b,_0x2ccb77){return function(_0x5baed7){if(!_0x5baed7){_0x215a7b[_0xc1a5('0x1f')](0x194);}return _0x5baed7;};}function handleError(_0x20ecd4,_0x3d4992){_0x3d4992=_0x3d4992||0x1f4;return function(_0x1c3942){logger[_0xc1a5('0x2c')](_0x1c3942['stack']);if(_0x1c3942[_0xc1a5('0x2d')]){delete _0x1c3942['name'];}_0x20ecd4[_0xc1a5('0x20')](_0x3d4992)[_0xc1a5('0x2e')](_0x1c3942);};}exports[_0xc1a5('0x2f')]=function(_0x4df385,_0x1c5391){var _0x18d6d3={'raw':![],'where':{'id':_0x4df385['params']['id']}},_0x5e9a18={};_0x5e9a18[_0xc1a5('0x30')]=_[_0xc1a5('0x31')](db[_0xc1a5('0x32')][_0xc1a5('0x33')]);_0x5e9a18['query']=_['keys'](_0x4df385['query']);_0x5e9a18['filters']=_[_0xc1a5('0x34')](_0x5e9a18['model'],_0x5e9a18['query']);_0x18d6d3['attributes']=_[_0xc1a5('0x34')](_0x5e9a18[_0xc1a5('0x30')],qs[_0xc1a5('0x35')](_0x4df385[_0xc1a5('0x36')][_0xc1a5('0x35')]));_0x18d6d3[_0xc1a5('0x37')]=_0x18d6d3[_0xc1a5('0x37')]['length']?_0x18d6d3[_0xc1a5('0x37')]:_0x5e9a18[_0xc1a5('0x30')];if(_0x4df385[_0xc1a5('0x36')][_0xc1a5('0x38')]){_0x18d6d3[_0xc1a5('0x39')]=[{'all':!![]}];}_0x18d6d3=_[_0xc1a5('0x3a')]({},_0x18d6d3,_0x4df385['options']);return db[_0xc1a5('0x32')][_0xc1a5('0x3b')](_0x18d6d3)['then'](handleEntityNotFound(_0x1c5391,null))[_0xc1a5('0x2a')](respondWithResult(_0x1c5391,null))[_0xc1a5('0x3c')](handleError(_0x1c5391,null));};exports['destroy']=function(_0x58c66f,_0x225a2a){return db[_0xc1a5('0x32')][_0xc1a5('0x3b')]({'where':{'id':_0x58c66f[_0xc1a5('0x3d')]['id']}})['then'](handleEntityNotFound(_0x225a2a,null))[_0xc1a5('0x2a')](removeEntity(_0x225a2a,null))['catch'](handleError(_0x225a2a,null));};function widgetAttributes(_0x3546fd){try{switch(_0x3546fd[_0xc1a5('0x3e')]){case _0xc1a5('0x3f'):return[{'name':_0xc1a5('0x40'),'value':_0x3546fd[_0xc1a5('0x40')]||(_0x3546fd[_0xc1a5('0x41')]&&_0x3546fd[_0xc1a5('0x41')][0x0]?_0x3546fd[_0xc1a5('0x41')][0x0]['value']:undefined)||_0xc1a5('0x42')}];case'custom':return[{'name':'attrPath','value':_0x3546fd[_0xc1a5('0x43')]||(_0x3546fd[_0xc1a5('0x41')]&&_0x3546fd[_0xc1a5('0x41')][0x0]?_0x3546fd[_0xc1a5('0x41')][0x0][_0xc1a5('0x44')]:undefined)||''}];case'clock':return[{'name':_0xc1a5('0x45'),'value':_0x3546fd[_0xc1a5('0x45')]||(_0x3546fd[_0xc1a5('0x41')]&&_0x3546fd[_0xc1a5('0x41')][0x0]?_0x3546fd['attrs'][0x0]['value']:undefined)||_0xc1a5('0x46')},{'name':_0xc1a5('0x47'),'value':_0x3546fd[_0xc1a5('0x47')]||(_0x3546fd[_0xc1a5('0x41')]&&_0x3546fd[_0xc1a5('0x41')][0x1]?_0x3546fd['attrs'][0x1][_0xc1a5('0x44')]:undefined)||_0xc1a5('0x48')},{'name':'attrFontSize','value':_0x3546fd['attrFontSize']||(_0x3546fd['attrs']&&_0x3546fd[_0xc1a5('0x41')][0x2]?_0x3546fd[_0xc1a5('0x41')][0x2][_0xc1a5('0x44')]:undefined)||0xc}];case'counter':return[{'name':_0xc1a5('0x49'),'value':_0x3546fd[_0xc1a5('0x49')]||(_0x3546fd[_0xc1a5('0x41')]&&_0x3546fd[_0xc1a5('0x41')][0x0]?_0x3546fd[_0xc1a5('0x41')][0x0][_0xc1a5('0x44')]:undefined)||_0xc1a5('0x4a')},{'name':'attrVoiceQueues','value':_0x3546fd[_0xc1a5('0x4b')]||(_0x3546fd[_0xc1a5('0x41')]&&_0x3546fd[_0xc1a5('0x41')][0x1]?_0x3546fd[_0xc1a5('0x41')][0x1]['value']:undefined)||[]},{'name':_0xc1a5('0x4c'),'value':_0x3546fd[_0xc1a5('0x4c')]||(_0x3546fd[_0xc1a5('0x41')]&&_0x3546fd[_0xc1a5('0x41')][0x2]?_0x3546fd[_0xc1a5('0x41')][0x2]['value']:undefined)||0x14}];case _0xc1a5('0x4d'):case _0xc1a5('0x4e'):return[{'name':_0xc1a5('0x4f'),'value':_0x3546fd['attrSerie1']||(_0x3546fd[_0xc1a5('0x41')]&&_0x3546fd[_0xc1a5('0x41')][0x0]?_0x3546fd['attrs'][0x0][_0xc1a5('0x44')]:undefined)||_0xc1a5('0x4a')},{'name':_0xc1a5('0x50'),'value':_0x3546fd[_0xc1a5('0x50')]||(_0x3546fd[_0xc1a5('0x41')]&&_0x3546fd['attrs'][0x1]?_0x3546fd['attrs'][0x1]['value']:undefined)||null},{'name':_0xc1a5('0x51'),'value':_0x3546fd[_0xc1a5('0x51')]||(_0x3546fd[_0xc1a5('0x41')]&&_0x3546fd[_0xc1a5('0x41')][0x2]?_0x3546fd['attrs'][0x2]['value']:undefined)||null},{'name':_0xc1a5('0x4b'),'value':_0x3546fd[_0xc1a5('0x4b')]||(_0x3546fd[_0xc1a5('0x41')]&&_0x3546fd[_0xc1a5('0x41')][0x3]?_0x3546fd[_0xc1a5('0x41')][0x3]['value']:undefined)||[]}];case _0xc1a5('0x52'):return[{'name':_0xc1a5('0x53'),'type':_0x3546fd[_0xc1a5('0x54')]||(_0x3546fd['attrs']&&_0x3546fd[_0xc1a5('0x41')][0x0]?_0x3546fd[_0xc1a5('0x41')][0x0]['type']:undefined)||null,'value':_0x3546fd[_0xc1a5('0x53')]||(_0x3546fd[_0xc1a5('0x41')]&&_0x3546fd[_0xc1a5('0x41')][0x0]?_0x3546fd[_0xc1a5('0x41')][0x0][_0xc1a5('0x44')]:undefined)||null},{'name':_0xc1a5('0x55'),'value':_0x3546fd['attrRefresh']||(_0x3546fd[_0xc1a5('0x41')]&&_0x3546fd[_0xc1a5('0x41')][0x1]?_0x3546fd[_0xc1a5('0x41')][0x1][_0xc1a5('0x44')]:undefined)||0x0}];default:return[];}}catch(_0x4cc9a5){logger[_0xc1a5('0x2c')](_0xc1a5('0x56'),JSON[_0xc1a5('0x57')](_0x4cc9a5));return[];}}exports[_0xc1a5('0x58')]=function(_0x48e10d,_0x2603fe){if(_0x48e10d[_0xc1a5('0x59')]){_0x48e10d[_0xc1a5('0x59')][_0xc1a5('0x41')]=widgetAttributes(_0x48e10d['body']);}return db[_0xc1a5('0x32')]['create'](_0x48e10d['body'],{})[_0xc1a5('0x2a')](respondWithResult(_0x2603fe,0xc9))['catch'](handleError(_0x2603fe,null));};exports[_0xc1a5('0x29')]=function(_0xfb18,_0x18ff9f){if(_0xfb18[_0xc1a5('0x59')]['id']){delete _0xfb18[_0xc1a5('0x59')]['id'];}_0xfb18['body'][_0xc1a5('0x41')]=widgetAttributes(_0xfb18[_0xc1a5('0x59')]);return db['DashboardItem']['find']({'where':{'id':_0xfb18[_0xc1a5('0x3d')]['id']}})[_0xc1a5('0x2a')](handleEntityNotFound(_0x18ff9f,null))[_0xc1a5('0x2a')](saveUpdates(_0xfb18['body'],null))[_0xc1a5('0x2a')](respondWithResult(_0x18ff9f,null))['catch'](handleError(_0x18ff9f,null));};
\ No newline at end of file
index 7460acd..08e7d18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7522=['emit','hasOwnProperty','exports','events','../../mysqldb','DashboardItem','save','update'];(function(_0x54f98a,_0x71efc7){var _0x5ee1e6=function(_0x4f9c7f){while(--_0x4f9c7f){_0x54f98a['push'](_0x54f98a['shift']());}};_0x5ee1e6(++_0x71efc7);}(_0x7522,0xe3));var _0x2752=function(_0x2a211f,_0x31bd40){_0x2a211f=_0x2a211f-0x0;var _0x58c1da=_0x7522[_0x2a211f];return _0x58c1da;};'use strict';var EventEmitter=require(_0x2752('0x0'));var DashboardItem=require(_0x2752('0x1'))['db'][_0x2752('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2752('0x3'),'afterUpdate':_0x2752('0x4'),'afterDestroy':'remove'};function emitEvent(_0x23aeb0){return function(_0x39f21b,_0x2c3d9d,_0x1b3f32){DashboardItemEvents['emit'](_0x23aeb0+':'+_0x39f21b['id'],_0x39f21b);DashboardItemEvents[_0x2752('0x5')](_0x23aeb0,_0x39f21b);_0x1b3f32(null);};}for(var e in events){if(events[_0x2752('0x6')](e)){var event=events[e];DashboardItem['hook'](e,emitEvent(event));}}module[_0x2752('0x7')]=DashboardItemEvents;
\ No newline at end of file
+var _0xd03b=['events','DashboardItem','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x47fd36,_0x41535d){var _0x21a0fc=function(_0x44c07c){while(--_0x44c07c){_0x47fd36['push'](_0x47fd36['shift']());}};_0x21a0fc(++_0x41535d);}(_0xd03b,0x172));var _0xbd03=function(_0x502cf1,_0x2f7e6d){_0x502cf1=_0x502cf1-0x0;var _0x2b0676=_0xd03b[_0x502cf1];return _0x2b0676;};'use strict';var EventEmitter=require(_0xbd03('0x0'));var DashboardItem=require('../../mysqldb')['db'][_0xbd03('0x1')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xbd03('0x2')](0x0);var events={'afterCreate':_0xbd03('0x3'),'afterUpdate':_0xbd03('0x4'),'afterDestroy':_0xbd03('0x5')};function emitEvent(_0x413190){return function(_0xd5b80b,_0x223d3f,_0x5a2d8b){DashboardItemEvents[_0xbd03('0x6')](_0x413190+':'+_0xd5b80b['id'],_0xd5b80b);DashboardItemEvents[_0xbd03('0x6')](_0x413190,_0xd5b80b);_0x5a2d8b(null);};}for(var e in events){if(events[_0xbd03('0x7')](e)){var event=events[e];DashboardItem[_0xbd03('0x8')](e,emitEvent(event));}}module[_0xbd03('0x9')]=DashboardItemEvents;
\ No newline at end of file
index 30165e8..98ad49a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00a1=['rimraf','../../config/environment','./dashboardItem.attributes','exports','define','dashboard_items','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x2c69a1,_0x201903){var _0x24bb91=function(_0x3131ac){while(--_0x3131ac){_0x2c69a1['push'](_0x2c69a1['shift']());}};_0x24bb91(++_0x201903);}(_0x00a1,0x7b));var _0x100a=function(_0x2dc1df,_0x2ad30d){_0x2dc1df=_0x2dc1df-0x0;var _0x1ac4c7=_0x00a1[_0x2dc1df];return _0x1ac4c7;};'use strict';var _=require(_0x100a('0x0'));var util=require(_0x100a('0x1'));var logger=require(_0x100a('0x2'))(_0x100a('0x3'));var moment=require(_0x100a('0x4'));var BPromise=require(_0x100a('0x5'));var rp=require(_0x100a('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x100a('0x7'));var config=require(_0x100a('0x8'));var attributes=require(_0x100a('0x9'));module[_0x100a('0xa')]=function(_0x2472f6,_0x11ea40){return _0x2472f6[_0x100a('0xb')]('DashboardItem',attributes,{'tableName':_0x100a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x42c9=['bluebird','request-promise','path','rimraf','../../config/environment','./dashboardItem.attributes','exports','define','DashboardItem','dashboard_items','lodash','../../config/logger','api','moment'];(function(_0x31c097,_0x8aef31){var _0x28cbae=function(_0x1db3e7){while(--_0x1db3e7){_0x31c097['push'](_0x31c097['shift']());}};_0x28cbae(++_0x8aef31);}(_0x42c9,0x1ae));var _0x942c=function(_0x4fe19c,_0x45d0fe){_0x4fe19c=_0x4fe19c-0x0;var _0x952ac7=_0x42c9[_0x4fe19c];return _0x952ac7;};'use strict';var _=require(_0x942c('0x0'));var util=require('util');var logger=require(_0x942c('0x1'))(_0x942c('0x2'));var moment=require(_0x942c('0x3'));var BPromise=require(_0x942c('0x4'));var rp=require(_0x942c('0x5'));var fs=require('fs');var path=require(_0x942c('0x6'));var rimraf=require(_0x942c('0x7'));var config=require(_0x942c('0x8'));var attributes=require(_0x942c('0x9'));module[_0x942c('0xa')]=function(_0x26c8fa,_0x173d7e){return _0x26c8fa[_0x942c('0xb')](_0x942c('0xc'),attributes,{'tableName':_0x942c('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 70e1e1a..5509a3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa724=['socket.io-emitter','redis','register','info','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','defaults','localhost'];(function(_0x2f9bc4,_0x4f05d1){var _0x29bfd4=function(_0x4d6d4d){while(--_0x4d6d4d){_0x2f9bc4['push'](_0x2f9bc4['shift']());}};_0x29bfd4(++_0x4f05d1);}(_0xa724,0x121));var _0x4a72=function(_0x1e8f6b,_0x5851cb){_0x1e8f6b=_0x1e8f6b-0x0;var _0x55d352=_0xa724[_0x1e8f6b];return _0x55d352;};'use strict';var _=require('lodash');var util=require(_0x4a72('0x0'));var moment=require(_0x4a72('0x1'));var BPromise=require(_0x4a72('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4a72('0x3'))['db'];var utils=require(_0x4a72('0x4'));var logger=require('../../config/logger')(_0x4a72('0x5'));var config=require(_0x4a72('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x4a72('0x7')][_0x4a72('0x8')]({'port':0x232a});config['redis']=_[_0x4a72('0x9')](config['redis'],{'host':_0x4a72('0xa'),'port':0x18eb});var socket=require(_0x4a72('0xb'))(new Redis(config[_0x4a72('0xc')]));require('./dashboardItem.socket')[_0x4a72('0xd')](socket);function respondWithRpcPromise(_0x56ff60,_0x1af203,_0x519973){return new BPromise(function(_0x482523,_0x3075de){return client['request'](_0x56ff60,_0x519973)['then'](function(_0x5880e5){logger[_0x4a72('0xe')](_0x4a72('0xf'),_0x1af203,_0x4a72('0x10'));logger[_0x4a72('0x11')](_0x4a72('0x12'),_0x1af203,_0x4a72('0x10'),JSON[_0x4a72('0x13')](_0x5880e5));if(_0x5880e5[_0x4a72('0x14')]){if(_0x5880e5[_0x4a72('0x14')][_0x4a72('0x15')]===0x1f4){logger['error'](_0x4a72('0xf'),_0x1af203,_0x5880e5['error'][_0x4a72('0x16')]);return _0x3075de(_0x5880e5[_0x4a72('0x14')][_0x4a72('0x16')]);}logger[_0x4a72('0x14')]('DashboardItem,\x20%s,\x20%s',_0x1af203,_0x5880e5[_0x4a72('0x14')][_0x4a72('0x16')]);return _0x482523(_0x5880e5[_0x4a72('0x14')][_0x4a72('0x16')]);}else{logger[_0x4a72('0xe')](_0x4a72('0xf'),_0x1af203,_0x4a72('0x10'));_0x482523(_0x5880e5[_0x4a72('0x17')][_0x4a72('0x16')]);}})[_0x4a72('0x18')](function(_0x45d300){logger[_0x4a72('0x14')](_0x4a72('0xf'),_0x1af203,_0x45d300);_0x3075de(_0x45d300);});});}
\ No newline at end of file
+var _0x2371=['bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./dashboardItem.socket','then','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','lodash','util','moment'];(function(_0x3d448b,_0x35a5e7){var _0x3e9476=function(_0x505ee8){while(--_0x505ee8){_0x3d448b['push'](_0x3d448b['shift']());}};_0x3e9476(++_0x35a5e7);}(_0x2371,0x17d));var _0x1237=function(_0x2ff739,_0x1c8e0f){_0x2ff739=_0x2ff739-0x0;var _0x12dc13=_0x2371[_0x2ff739];return _0x12dc13;};'use strict';var _=require(_0x1237('0x0'));var util=require(_0x1237('0x1'));var moment=require(_0x1237('0x2'));var BPromise=require(_0x1237('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1237('0x4'))['db'];var utils=require(_0x1237('0x5'));var logger=require(_0x1237('0x6'))('rpc');var config=require(_0x1237('0x7'));var jayson=require(_0x1237('0x8'));var client=jayson[_0x1237('0x9')][_0x1237('0xa')]({'port':0x232a});config[_0x1237('0xb')]=_['defaults'](config[_0x1237('0xb')],{'host':_0x1237('0xc'),'port':0x18eb});var socket=require(_0x1237('0xd'))(new Redis(config[_0x1237('0xb')]));require(_0x1237('0xe'))['register'](socket);function respondWithRpcPromise(_0x4d4741,_0xab489d,_0x3d2324){return new BPromise(function(_0x1ed0f0,_0x2ebcd2){return client['request'](_0x4d4741,_0x3d2324)[_0x1237('0xf')](function(_0x48a059){logger['info'](_0x1237('0x10'),_0xab489d,_0x1237('0x11'));logger[_0x1237('0x12')]('DashboardItem,\x20%s,\x20%s,\x20%s',_0xab489d,_0x1237('0x11'),JSON[_0x1237('0x13')](_0x48a059));if(_0x48a059[_0x1237('0x14')]){if(_0x48a059[_0x1237('0x14')][_0x1237('0x15')]===0x1f4){logger['error'](_0x1237('0x10'),_0xab489d,_0x48a059[_0x1237('0x14')][_0x1237('0x16')]);return _0x2ebcd2(_0x48a059['error']['message']);}logger[_0x1237('0x14')](_0x1237('0x10'),_0xab489d,_0x48a059[_0x1237('0x14')]['message']);return _0x1ed0f0(_0x48a059['error'][_0x1237('0x16')]);}else{logger[_0x1237('0x17')](_0x1237('0x10'),_0xab489d,_0x1237('0x11'));_0x1ed0f0(_0x48a059['result'][_0x1237('0x16')]);}})['catch'](function(_0x2fcbd1){logger[_0x1237('0x14')](_0x1237('0x10'),_0xab489d,_0x2fcbd1);_0x2ebcd2(_0x2fcbd1);});});}
\ No newline at end of file
index 68ef72c..e15159c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1aa=['register','length','dashboardItem:','save','emit','removeListener'];(function(_0x22ea66,_0x30123a){var _0x529757=function(_0x2340e){while(--_0x2340e){_0x22ea66['push'](_0x22ea66['shift']());}};_0x529757(++_0x30123a);}(_0xe1aa,0x141));var _0xae1a=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xe1aa[_0x6131cd];return _0x47e916;};'use strict';var DashboardItemEvents=require('./dashboardItem.events');var events=[_0xae1a('0x0'),'remove','update'];function createListener(_0x41b555,_0x3ee8b8){return function(_0x25d1bf){_0x3ee8b8[_0xae1a('0x1')](_0x41b555,_0x25d1bf);};}function removeListener(_0x29b6c4,_0x24a77){return function(){DashboardItemEvents[_0xae1a('0x2')](_0x29b6c4,_0x24a77);};}exports[_0xae1a('0x3')]=function(_0x34d596){for(var _0x4dfddf=0x0,_0x3dac2c=events[_0xae1a('0x4')];_0x4dfddf<_0x3dac2c;_0x4dfddf++){var _0x14934b=events[_0x4dfddf];var _0x1cc410=createListener(_0xae1a('0x5')+_0x14934b,_0x34d596);DashboardItemEvents['on'](_0x14934b,_0x1cc410);}};
\ No newline at end of file
+var _0x4b95=['emit','removeListener','register','length','dashboardItem:','./dashboardItem.events','update'];(function(_0x3474ac,_0x22d0f7){var _0x5345ec=function(_0x45056e){while(--_0x45056e){_0x3474ac['push'](_0x3474ac['shift']());}};_0x5345ec(++_0x22d0f7);}(_0x4b95,0x83));var _0x54b9=function(_0x491139,_0x4cf4e4){_0x491139=_0x491139-0x0;var _0x4334cf=_0x4b95[_0x491139];return _0x4334cf;};'use strict';var DashboardItemEvents=require(_0x54b9('0x0'));var events=['save','remove',_0x54b9('0x1')];function createListener(_0x32ced3,_0x35c548){return function(_0x77e95a){_0x35c548[_0x54b9('0x2')](_0x32ced3,_0x77e95a);};}function removeListener(_0x95f2d9,_0x5365a8){return function(){DashboardItemEvents[_0x54b9('0x3')](_0x95f2d9,_0x5365a8);};}exports[_0x54b9('0x4')]=function(_0x1439e6){for(var _0x5a6e64=0x0,_0x5d488e=events[_0x54b9('0x5')];_0x5a6e64<_0x5d488e;_0x5a6e64++){var _0x42383c=events[_0x5a6e64];var _0x222784=createListener(_0x54b9('0x6')+_0x42383c,_0x1439e6);DashboardItemEvents['on'](_0x42383c,_0x222784);}};
\ No newline at end of file
index cfa44e6..5bfdb8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06b8=['path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','post','put','delete','/:id','exports','util'];(function(_0x4669f0,_0x31da07){var _0x11984c=function(_0x1c5616){while(--_0x1c5616){_0x4669f0['push'](_0x4669f0['shift']());}};_0x11984c(++_0x31da07);}(_0x06b8,0x12b));var _0x806b=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x06b8[_0x3bf83f];return _0x22c4a9;};'use strict';var multer=require('multer');var util=require(_0x806b('0x0'));var path=require(_0x806b('0x1'));var timeout=require(_0x806b('0x2'));var express=require(_0x806b('0x3'));var router=express['Router']();var fs_extra=require(_0x806b('0x4'));var auth=require(_0x806b('0x5'));var interaction=require(_0x806b('0x6'));var config=require(_0x806b('0x7'));var controller=require('./dashboardItem.controller');router[_0x806b('0x8')]('/:id',auth[_0x806b('0x9')](),controller['show']);router[_0x806b('0xa')]('/',auth['isAuthenticated'](),controller['create']);router[_0x806b('0xb')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x806b('0xc')](_0x806b('0xd'),auth[_0x806b('0x9')](),controller['destroy']);module[_0x806b('0xe')]=router;
\ No newline at end of file
+var _0xbf64=['/:id','isAuthenticated','show','post','update','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get'];(function(_0x313c96,_0x3cee6e){var _0x522f53=function(_0x8961e){while(--_0x8961e){_0x313c96['push'](_0x313c96['shift']());}};_0x522f53(++_0x3cee6e);}(_0xbf64,0xe7));var _0x4bf6=function(_0x2601b4,_0x315e78){_0x2601b4=_0x2601b4-0x0;var _0x3e3661=_0xbf64[_0x2601b4];return _0x3e3661;};'use strict';var multer=require(_0x4bf6('0x0'));var util=require(_0x4bf6('0x1'));var path=require(_0x4bf6('0x2'));var timeout=require(_0x4bf6('0x3'));var express=require(_0x4bf6('0x4'));var router=express[_0x4bf6('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x4bf6('0x6'));var config=require(_0x4bf6('0x7'));var controller=require('./dashboardItem.controller');router[_0x4bf6('0x8')](_0x4bf6('0x9'),auth[_0x4bf6('0xa')](),controller[_0x4bf6('0xb')]);router[_0x4bf6('0xc')]('/',auth[_0x4bf6('0xa')](),controller['create']);router['put']('/:id',auth[_0x4bf6('0xa')](),controller[_0x4bf6('0xd')]);router['delete'](_0x4bf6('0x9'),auth['isAuthenticated'](),controller[_0x4bf6('0xe')]);module[_0x4bf6('0xf')]=router;
\ No newline at end of file
index c8d22a5..102d189 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd108=['STRING','ENUM','first','third','sequelize','exports'];(function(_0x3f6ee5,_0x3fff9e){var _0xc476ac=function(_0x2c7336){while(--_0x2c7336){_0x3f6ee5['push'](_0x3f6ee5['shift']());}};_0xc476ac(++_0x3fff9e);}(_0xd108,0x1f0));var _0x8d10=function(_0x290781,_0x53d542){_0x290781=_0x290781-0x0;var _0x1ef41f=_0xd108[_0x290781];return _0x1ef41f;};'use strict';var Sequelize=require(_0x8d10('0x0'));module[_0x8d10('0x1')]={'name':{'type':Sequelize[_0x8d10('0x2')],'allowNull':![]},'level':{'type':Sequelize[_0x8d10('0x3')](_0x8d10('0x4'),'second',_0x8d10('0x5')),'allowNull':![],'defaultValue':_0x8d10('0x4')},'description':{'type':Sequelize[_0x8d10('0x2')]}};
\ No newline at end of file
+var _0xec34=['sequelize','exports','STRING','ENUM','first','second','third'];(function(_0x5397c6,_0x9c8dc6){var _0x1c6425=function(_0x5a3018){while(--_0x5a3018){_0x5397c6['push'](_0x5397c6['shift']());}};_0x1c6425(++_0x9c8dc6);}(_0xec34,0x157));var _0x4ec3=function(_0x55433e,_0x4e2525){_0x55433e=_0x55433e-0x0;var _0x36cf22=_0xec34[_0x55433e];return _0x36cf22;};'use strict';var Sequelize=require(_0x4ec3('0x0'));module[_0x4ec3('0x1')]={'name':{'type':Sequelize[_0x4ec3('0x2')],'allowNull':![]},'level':{'type':Sequelize[_0x4ec3('0x3')](_0x4ec3('0x4'),_0x4ec3('0x5'),_0x4ec3('0x6')),'allowNull':![],'defaultValue':'first'},'description':{'type':Sequelize[_0x4ec3('0x2')]}};
\ No newline at end of file
index 1dfa2fe..bb2aad5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91a7=['Disposition','findAll','rows','show','params','keys','rawAttributes','length','includeAll','include','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','UserProfileSection','find','userProfileId','autoAssociation','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','Dispositions','UserProfileResource','destroy','error','name','send','index','map','fieldName','type','key','model','query','filters','intersection','fields','attributes','nolimit','order','sort','where','filter','VIRTUAL','merge','options'];(function(_0x5c879e,_0xe58074){var _0x30942b=function(_0x535b57){while(--_0x535b57){_0x5c879e['push'](_0x5c879e['shift']());}};_0x30942b(++_0xe58074);}(_0x91a7,0x6c));var _0x791a=function(_0x539067,_0x60ff05){_0x539067=_0x539067-0x0;var _0x26e990=_0x91a7[_0x539067];return _0x26e990;};'use strict';var emlformat=require(_0x791a('0x0'));var rimraf=require(_0x791a('0x1'));var zipdir=require(_0x791a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x791a('0x3'));var moment=require(_0x791a('0x4'));var BPromise=require(_0x791a('0x5'));var Mustache=require(_0x791a('0x6'));var util=require(_0x791a('0x7'));var path=require('path');var sox=require(_0x791a('0x8'));var csv=require(_0x791a('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x791a('0xa'));var _=require('lodash');var squel=require(_0x791a('0xb'));var crypto=require(_0x791a('0xc'));var jsforce=require(_0x791a('0xd'));var deskjs=require(_0x791a('0xe'));var toCsv=require(_0x791a('0x9'));var querystring=require(_0x791a('0xf'));var Papa=require(_0x791a('0x10'));var Redis=require('ioredis');var authService=require(_0x791a('0x11'));var qs=require(_0x791a('0x12'));var as=require(_0x791a('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x791a('0x14'))(_0x791a('0x15'));var utils=require(_0x791a('0x16'));var config=require(_0x791a('0x17'));var licenseUtil=require(_0x791a('0x18'));var db=require(_0x791a('0x19'))['db'];function respondWithStatusCode(_0xde8560,_0x1f34f8){_0x1f34f8=_0x1f34f8||0xcc;return function(_0x1821b9){if(_0x1821b9){return _0xde8560[_0x791a('0x1a')](_0x1f34f8);}return _0xde8560['status'](_0x1f34f8)[_0x791a('0x1b')]();};}function respondWithResult(_0x1cc6be,_0x405061){_0x405061=_0x405061||0xc8;return function(_0x292992){if(_0x292992){return _0x1cc6be[_0x791a('0x1c')](_0x405061)[_0x791a('0x1d')](_0x292992);}};}function respondWithFilteredResult(_0x4866eb,_0xf588d2){return function(_0x11b496){if(_0x11b496){var _0x51cb70=typeof _0xf588d2['offset']===_0x791a('0x1e')&&typeof _0xf588d2[_0x791a('0x1f')]===_0x791a('0x1e');var _0x492a1a=_0x11b496[_0x791a('0x20')];var _0x545e81=_0x51cb70?0x0:_0xf588d2['offset'];var _0x121eb3=_0x51cb70?_0x11b496[_0x791a('0x20')]:_0xf588d2[_0x791a('0x21')]+_0xf588d2[_0x791a('0x1f')];var _0x5e784b;if(_0x121eb3>=_0x492a1a){_0x121eb3=_0x492a1a;_0x5e784b=0xc8;}else{_0x5e784b=0xce;}_0x4866eb[_0x791a('0x1c')](_0x5e784b);return _0x4866eb[_0x791a('0x22')](_0x791a('0x23'),_0x545e81+'-'+_0x121eb3+'/'+_0x492a1a)[_0x791a('0x1d')](_0x11b496);}return null;};}function patchUpdates(_0x4c6ea2){return function(_0x34d2f7){try{jsonpatch[_0x791a('0x24')](_0x34d2f7,_0x4c6ea2,!![]);}catch(_0xf6f8d0){return BPromise[_0x791a('0x25')](_0xf6f8d0);}return _0x34d2f7[_0x791a('0x26')]();};}function saveUpdates(_0x5da826,_0xdcd04d){return function(_0x55dbf6){if(_0x55dbf6){return _0x55dbf6[_0x791a('0x27')](_0x5da826)[_0x791a('0x28')](function(_0xa5f008){return _0xa5f008;});}return null;};}function removeEntity(_0x4a10df,_0x27c971){return function(_0x59ff44){if(_0x59ff44){return _0x59ff44['destroy']()[_0x791a('0x28')](function(){var _0x46ca44=_0x59ff44['get']({'plain':!![]});var _0xe0f48b=_0x791a('0x29');return db[_0x791a('0x2a')][_0x791a('0x2b')]({'where':{'type':_0xe0f48b,'resourceId':_0x46ca44['id']}})['then'](function(){return _0x59ff44;});})[_0x791a('0x28')](function(){_0x4a10df[_0x791a('0x1c')](0xcc)[_0x791a('0x1b')]();});}};}function handleEntityNotFound(_0x3cbdd1,_0x552357){return function(_0x4896f5){if(!_0x4896f5){_0x3cbdd1['sendStatus'](0x194);}return _0x4896f5;};}function handleError(_0x338649,_0x328352){_0x328352=_0x328352||0x1f4;return function(_0x12234c){logger[_0x791a('0x2c')](_0x12234c['stack']);if(_0x12234c['name']){delete _0x12234c[_0x791a('0x2d')];}_0x338649[_0x791a('0x1c')](_0x328352)[_0x791a('0x2e')](_0x12234c);};}exports[_0x791a('0x2f')]=function(_0x2ff53d,_0x110584){var _0x570228={},_0x37294e={},_0x6569a0={'count':0x0,'rows':[]};var _0x3030e9=_[_0x791a('0x30')](db['Disposition']['rawAttributes'],function(_0x23626a){return{'name':_0x23626a[_0x791a('0x31')],'type':_0x23626a[_0x791a('0x32')][_0x791a('0x33')]};});_0x37294e[_0x791a('0x34')]=_['map'](_0x3030e9,_0x791a('0x2d'));_0x37294e[_0x791a('0x35')]=_['keys'](_0x2ff53d[_0x791a('0x35')]);_0x37294e[_0x791a('0x36')]=_['intersection'](_0x37294e['model'],_0x37294e[_0x791a('0x35')]);_0x570228['attributes']=_[_0x791a('0x37')](_0x37294e['model'],qs[_0x791a('0x38')](_0x2ff53d[_0x791a('0x35')]['fields']));_0x570228[_0x791a('0x39')]=_0x570228['attributes']['length']?_0x570228[_0x791a('0x39')]:_0x37294e[_0x791a('0x34')];if(!_0x2ff53d[_0x791a('0x35')]['hasOwnProperty'](_0x791a('0x3a'))){_0x570228[_0x791a('0x1f')]=qs['limit'](_0x2ff53d[_0x791a('0x35')]['limit']);_0x570228[_0x791a('0x21')]=qs[_0x791a('0x21')](_0x2ff53d[_0x791a('0x35')][_0x791a('0x21')]);}_0x570228[_0x791a('0x3b')]=qs[_0x791a('0x3c')](_0x2ff53d[_0x791a('0x35')][_0x791a('0x3c')]);_0x570228[_0x791a('0x3d')]=qs['filters'](_['pick'](_0x2ff53d[_0x791a('0x35')],_0x37294e[_0x791a('0x36')]),_0x3030e9);if(_0x2ff53d['query'][_0x791a('0x3e')]){_0x570228[_0x791a('0x3d')]=_['merge'](_0x570228['where'],{'$or':_['map'](_0x3030e9,function(_0xbd5b5d){if(_0xbd5b5d[_0x791a('0x32')]!==_0x791a('0x3f')){var _0x139ae4={};_0x139ae4[_0xbd5b5d[_0x791a('0x2d')]]={'$like':'%'+_0x2ff53d[_0x791a('0x35')]['filter']+'%'};return _0x139ae4;}})});}_0x570228=_[_0x791a('0x40')]({},_0x570228,_0x2ff53d[_0x791a('0x41')]);var _0x562591={'where':_0x570228[_0x791a('0x3d')]};return db[_0x791a('0x42')][_0x791a('0x20')](_0x562591)['then'](function(_0x53136e){_0x6569a0[_0x791a('0x20')]=_0x53136e;if(_0x2ff53d['query']['includeAll']){_0x570228['include']=[{'all':!![]}];}return db['Disposition'][_0x791a('0x43')](_0x570228);})['then'](function(_0x1cdd10){_0x6569a0[_0x791a('0x44')]=_0x1cdd10;return _0x6569a0;})[_0x791a('0x28')](respondWithFilteredResult(_0x110584,_0x570228))['catch'](handleError(_0x110584,null));};exports[_0x791a('0x45')]=function(_0x5f0f9e,_0x237500){var _0x3e8e6d={'raw':!![],'where':{'id':_0x5f0f9e[_0x791a('0x46')]['id']}},_0x1b4ac1={};_0x1b4ac1[_0x791a('0x34')]=_[_0x791a('0x47')](db[_0x791a('0x42')][_0x791a('0x48')]);_0x1b4ac1[_0x791a('0x35')]=_[_0x791a('0x47')](_0x5f0f9e['query']);_0x1b4ac1[_0x791a('0x36')]=_['intersection'](_0x1b4ac1[_0x791a('0x34')],_0x1b4ac1[_0x791a('0x35')]);_0x3e8e6d[_0x791a('0x39')]=_[_0x791a('0x37')](_0x1b4ac1[_0x791a('0x34')],qs['fields'](_0x5f0f9e[_0x791a('0x35')][_0x791a('0x38')]));_0x3e8e6d[_0x791a('0x39')]=_0x3e8e6d['attributes'][_0x791a('0x49')]?_0x3e8e6d[_0x791a('0x39')]:_0x1b4ac1['model'];if(_0x5f0f9e['query'][_0x791a('0x4a')]){_0x3e8e6d[_0x791a('0x4b')]=[{'all':!![]}];}_0x3e8e6d=_[_0x791a('0x40')]({},_0x3e8e6d,_0x5f0f9e['options']);return db[_0x791a('0x42')]['find'](_0x3e8e6d)['then'](handleEntityNotFound(_0x237500,null))[_0x791a('0x28')](respondWithResult(_0x237500,null))[_0x791a('0x4c')](handleError(_0x237500,null));};exports[_0x791a('0x4d')]=function(_0x195c20,_0x1991cf){return db['Disposition'][_0x791a('0x4d')](_0x195c20[_0x791a('0x4e')],{})['then'](function(_0x44fb20){var _0x6bac9a=_0x195c20['user']['get']({'plain':!![]});if(!_0x6bac9a)throw new Error(_0x791a('0x4f'));if(_0x6bac9a[_0x791a('0x50')]===_0x791a('0x51')){var _0x2ea553=_0x44fb20[_0x791a('0x52')]({'plain':!![]});var _0x1fdbce=_0x791a('0x29');return db[_0x791a('0x53')][_0x791a('0x54')]({'where':{'name':_0x1fdbce,'userProfileId':_0x6bac9a[_0x791a('0x55')]},'raw':!![]})['then'](function(_0x38ba9b){if(_0x38ba9b&&_0x38ba9b[_0x791a('0x56')]===0x0){return db['UserProfileResource'][_0x791a('0x4d')]({'name':_0x2ea553['name'],'resourceId':_0x2ea553['id'],'type':_0x38ba9b[_0x791a('0x2d')],'sectionId':_0x38ba9b['id']},{})['then'](function(){return _0x44fb20;});}else{return _0x44fb20;}})[_0x791a('0x4c')](function(_0x1ee94d){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1ee94d);throw _0x1ee94d;});}return _0x44fb20;})['then'](respondWithResult(_0x1991cf,0xc9))[_0x791a('0x4c')](handleError(_0x1991cf,null));};exports[_0x791a('0x27')]=function(_0x443d82,_0x37ace4){if(_0x443d82['body']['id']){delete _0x443d82['body']['id'];}return db[_0x791a('0x42')][_0x791a('0x54')]({'where':{'id':_0x443d82[_0x791a('0x46')]['id']}})['then'](handleEntityNotFound(_0x37ace4,null))['then'](saveUpdates(_0x443d82[_0x791a('0x4e')],null))[_0x791a('0x28')](respondWithResult(_0x37ace4,null))[_0x791a('0x4c')](handleError(_0x37ace4,null));};exports[_0x791a('0x2b')]=function(_0x3862dc,_0x2936b8){return db[_0x791a('0x42')][_0x791a('0x54')]({'where':{'id':_0x3862dc[_0x791a('0x46')]['id']}})[_0x791a('0x28')](handleEntityNotFound(_0x2936b8,null))[_0x791a('0x28')](removeEntity(_0x2936b8,null))['catch'](handleError(_0x2936b8,null));};
\ No newline at end of file
+var _0x2d66=['set','Content-Range','apply','reject','save','then','destroy','get','UserProfileResource','error','stack','name','send','index','type','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','Disposition','includeAll','include','findAll','show','params','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Dispositions','UserProfileSection','userProfileId','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','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/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit'];(function(_0x43ebb8,_0x838a8d){var _0x2a09c3=function(_0x3b61aa){while(--_0x3b61aa){_0x43ebb8['push'](_0x43ebb8['shift']());}};_0x2a09c3(++_0x838a8d);}(_0x2d66,0x18c));var _0x62d6=function(_0x75d633,_0x517cb8){_0x75d633=_0x75d633-0x0;var _0x166ebc=_0x2d66[_0x75d633];return _0x166ebc;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x62d6('0x0'));var zipdir=require(_0x62d6('0x1'));var jsonpatch=require(_0x62d6('0x2'));var rp=require('request-promise');var moment=require(_0x62d6('0x3'));var BPromise=require(_0x62d6('0x4'));var Mustache=require('mustache');var util=require(_0x62d6('0x5'));var path=require(_0x62d6('0x6'));var sox=require(_0x62d6('0x7'));var csv=require(_0x62d6('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x62d6('0x9'));var _=require('lodash');var squel=require(_0x62d6('0xa'));var crypto=require(_0x62d6('0xb'));var jsforce=require(_0x62d6('0xc'));var deskjs=require(_0x62d6('0xd'));var toCsv=require('to-csv');var querystring=require(_0x62d6('0xe'));var Papa=require(_0x62d6('0xf'));var Redis=require(_0x62d6('0x10'));var authService=require(_0x62d6('0x11'));var qs=require(_0x62d6('0x12'));var as=require(_0x62d6('0x13'));var hardwareService=require(_0x62d6('0x14'));var logger=require(_0x62d6('0x15'))(_0x62d6('0x16'));var utils=require('../../config/utils');var config=require(_0x62d6('0x17'));var licenseUtil=require(_0x62d6('0x18'));var db=require(_0x62d6('0x19'))['db'];function respondWithStatusCode(_0x393ee6,_0x18bb95){_0x18bb95=_0x18bb95||0xcc;return function(_0x316684){if(_0x316684){return _0x393ee6[_0x62d6('0x1a')](_0x18bb95);}return _0x393ee6[_0x62d6('0x1b')](_0x18bb95)[_0x62d6('0x1c')]();};}function respondWithResult(_0x44fa8b,_0x207f67){_0x207f67=_0x207f67||0xc8;return function(_0x5420a3){if(_0x5420a3){return _0x44fa8b[_0x62d6('0x1b')](_0x207f67)[_0x62d6('0x1d')](_0x5420a3);}};}function respondWithFilteredResult(_0x7eb493,_0x309ccb){return function(_0x1e7ff4){if(_0x1e7ff4){var _0x1af65a=typeof _0x309ccb[_0x62d6('0x1e')]===_0x62d6('0x1f')&&typeof _0x309ccb['limit']===_0x62d6('0x1f');var _0x293366=_0x1e7ff4[_0x62d6('0x20')];var _0x4d5135=_0x1af65a?0x0:_0x309ccb[_0x62d6('0x1e')];var _0x53c804=_0x1af65a?_0x1e7ff4[_0x62d6('0x20')]:_0x309ccb[_0x62d6('0x1e')]+_0x309ccb[_0x62d6('0x21')];var _0x4c3f4f;if(_0x53c804>=_0x293366){_0x53c804=_0x293366;_0x4c3f4f=0xc8;}else{_0x4c3f4f=0xce;}_0x7eb493[_0x62d6('0x1b')](_0x4c3f4f);return _0x7eb493[_0x62d6('0x22')](_0x62d6('0x23'),_0x4d5135+'-'+_0x53c804+'/'+_0x293366)['json'](_0x1e7ff4);}return null;};}function patchUpdates(_0x10a6da){return function(_0xb4653f){try{jsonpatch[_0x62d6('0x24')](_0xb4653f,_0x10a6da,!![]);}catch(_0x59b0bd){return BPromise[_0x62d6('0x25')](_0x59b0bd);}return _0xb4653f[_0x62d6('0x26')]();};}function saveUpdates(_0x287aa5,_0x25897a){return function(_0x1ee373){if(_0x1ee373){return _0x1ee373['update'](_0x287aa5)[_0x62d6('0x27')](function(_0x39034d){return _0x39034d;});}return null;};}function removeEntity(_0x1fb0b2,_0x26f80c){return function(_0x292309){if(_0x292309){return _0x292309[_0x62d6('0x28')]()[_0x62d6('0x27')](function(){var _0x3eb850=_0x292309[_0x62d6('0x29')]({'plain':!![]});var _0x5c60e9='Dispositions';return db[_0x62d6('0x2a')][_0x62d6('0x28')]({'where':{'type':_0x5c60e9,'resourceId':_0x3eb850['id']}})[_0x62d6('0x27')](function(){return _0x292309;});})[_0x62d6('0x27')](function(){_0x1fb0b2['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x116a23,_0x54d873){return function(_0x31f715){if(!_0x31f715){_0x116a23[_0x62d6('0x1a')](0x194);}return _0x31f715;};}function handleError(_0x45f596,_0x1f3941){_0x1f3941=_0x1f3941||0x1f4;return function(_0x26ecee){logger[_0x62d6('0x2b')](_0x26ecee[_0x62d6('0x2c')]);if(_0x26ecee[_0x62d6('0x2d')]){delete _0x26ecee['name'];}_0x45f596['status'](_0x1f3941)[_0x62d6('0x2e')](_0x26ecee);};}exports[_0x62d6('0x2f')]=function(_0xecf7a8,_0x3565b7){var _0x5b2e91={},_0x2b399d={},_0x5246b4={'count':0x0,'rows':[]};var _0x378cab=_['map'](db['Disposition']['rawAttributes'],function(_0x2716d6){return{'name':_0x2716d6['fieldName'],'type':_0x2716d6[_0x62d6('0x30')]['key']};});_0x2b399d[_0x62d6('0x31')]=_[_0x62d6('0x32')](_0x378cab,'name');_0x2b399d['query']=_[_0x62d6('0x33')](_0xecf7a8[_0x62d6('0x34')]);_0x2b399d[_0x62d6('0x35')]=_[_0x62d6('0x36')](_0x2b399d[_0x62d6('0x31')],_0x2b399d['query']);_0x5b2e91[_0x62d6('0x37')]=_[_0x62d6('0x36')](_0x2b399d[_0x62d6('0x31')],qs[_0x62d6('0x38')](_0xecf7a8[_0x62d6('0x34')][_0x62d6('0x38')]));_0x5b2e91['attributes']=_0x5b2e91[_0x62d6('0x37')][_0x62d6('0x39')]?_0x5b2e91[_0x62d6('0x37')]:_0x2b399d[_0x62d6('0x31')];if(!_0xecf7a8['query'][_0x62d6('0x3a')]('nolimit')){_0x5b2e91[_0x62d6('0x21')]=qs['limit'](_0xecf7a8[_0x62d6('0x34')][_0x62d6('0x21')]);_0x5b2e91[_0x62d6('0x1e')]=qs[_0x62d6('0x1e')](_0xecf7a8[_0x62d6('0x34')][_0x62d6('0x1e')]);}_0x5b2e91[_0x62d6('0x3b')]=qs['sort'](_0xecf7a8[_0x62d6('0x34')][_0x62d6('0x3c')]);_0x5b2e91[_0x62d6('0x3d')]=qs[_0x62d6('0x35')](_[_0x62d6('0x3e')](_0xecf7a8[_0x62d6('0x34')],_0x2b399d['filters']),_0x378cab);if(_0xecf7a8[_0x62d6('0x34')][_0x62d6('0x3f')]){_0x5b2e91[_0x62d6('0x3d')]=_[_0x62d6('0x40')](_0x5b2e91[_0x62d6('0x3d')],{'$or':_[_0x62d6('0x32')](_0x378cab,function(_0x1b0664){if(_0x1b0664['type']!==_0x62d6('0x41')){var _0xf1c5c7={};_0xf1c5c7[_0x1b0664[_0x62d6('0x2d')]]={'$like':'%'+_0xecf7a8[_0x62d6('0x34')][_0x62d6('0x3f')]+'%'};return _0xf1c5c7;}})});}_0x5b2e91=_[_0x62d6('0x40')]({},_0x5b2e91,_0xecf7a8[_0x62d6('0x42')]);var _0x467dd3={'where':_0x5b2e91[_0x62d6('0x3d')]};return db[_0x62d6('0x43')][_0x62d6('0x20')](_0x467dd3)[_0x62d6('0x27')](function(_0x46f5b2){_0x5246b4[_0x62d6('0x20')]=_0x46f5b2;if(_0xecf7a8[_0x62d6('0x34')][_0x62d6('0x44')]){_0x5b2e91[_0x62d6('0x45')]=[{'all':!![]}];}return db[_0x62d6('0x43')][_0x62d6('0x46')](_0x5b2e91);})[_0x62d6('0x27')](function(_0x58d93d){_0x5246b4['rows']=_0x58d93d;return _0x5246b4;})[_0x62d6('0x27')](respondWithFilteredResult(_0x3565b7,_0x5b2e91))['catch'](handleError(_0x3565b7,null));};exports[_0x62d6('0x47')]=function(_0x478fd9,_0xc8eac8){var _0x4e74a3={'raw':!![],'where':{'id':_0x478fd9[_0x62d6('0x48')]['id']}},_0x2393ff={};_0x2393ff['model']=_[_0x62d6('0x33')](db[_0x62d6('0x43')][_0x62d6('0x49')]);_0x2393ff['query']=_['keys'](_0x478fd9[_0x62d6('0x34')]);_0x2393ff['filters']=_[_0x62d6('0x36')](_0x2393ff['model'],_0x2393ff['query']);_0x4e74a3[_0x62d6('0x37')]=_['intersection'](_0x2393ff[_0x62d6('0x31')],qs['fields'](_0x478fd9[_0x62d6('0x34')][_0x62d6('0x38')]));_0x4e74a3[_0x62d6('0x37')]=_0x4e74a3[_0x62d6('0x37')]['length']?_0x4e74a3[_0x62d6('0x37')]:_0x2393ff[_0x62d6('0x31')];if(_0x478fd9[_0x62d6('0x34')][_0x62d6('0x44')]){_0x4e74a3[_0x62d6('0x45')]=[{'all':!![]}];}_0x4e74a3=_['merge']({},_0x4e74a3,_0x478fd9[_0x62d6('0x42')]);return db[_0x62d6('0x43')][_0x62d6('0x4a')](_0x4e74a3)[_0x62d6('0x27')](handleEntityNotFound(_0xc8eac8,null))['then'](respondWithResult(_0xc8eac8,null))['catch'](handleError(_0xc8eac8,null));};exports['create']=function(_0xbfc3f,_0x73e8b5){return db['Disposition'][_0x62d6('0x4b')](_0xbfc3f[_0x62d6('0x4c')],{})[_0x62d6('0x27')](function(_0xc1076a){var _0x345dbe=_0xbfc3f[_0x62d6('0x4d')][_0x62d6('0x29')]({'plain':!![]});if(!_0x345dbe)throw new Error(_0x62d6('0x4e'));if(_0x345dbe[_0x62d6('0x4f')]===_0x62d6('0x4d')){var _0x31c64c=_0xc1076a['get']({'plain':!![]});var _0x48faaa=_0x62d6('0x50');return db[_0x62d6('0x51')][_0x62d6('0x4a')]({'where':{'name':_0x48faaa,'userProfileId':_0x345dbe[_0x62d6('0x52')]},'raw':!![]})[_0x62d6('0x27')](function(_0x523d84){if(_0x523d84&&_0x523d84[_0x62d6('0x53')]===0x0){return db[_0x62d6('0x2a')][_0x62d6('0x4b')]({'name':_0x31c64c[_0x62d6('0x2d')],'resourceId':_0x31c64c['id'],'type':_0x523d84[_0x62d6('0x2d')],'sectionId':_0x523d84['id']},{})['then'](function(){return _0xc1076a;});}else{return _0xc1076a;}})[_0x62d6('0x54')](function(_0x100715){logger['error'](_0x62d6('0x55'),_0x100715);throw _0x100715;});}return _0xc1076a;})[_0x62d6('0x27')](respondWithResult(_0x73e8b5,0xc9))[_0x62d6('0x54')](handleError(_0x73e8b5,null));};exports['update']=function(_0x327d44,_0x3bd4dc){if(_0x327d44['body']['id']){delete _0x327d44['body']['id'];}return db[_0x62d6('0x43')]['find']({'where':{'id':_0x327d44[_0x62d6('0x48')]['id']}})['then'](handleEntityNotFound(_0x3bd4dc,null))[_0x62d6('0x27')](saveUpdates(_0x327d44[_0x62d6('0x4c')],null))[_0x62d6('0x27')](respondWithResult(_0x3bd4dc,null))[_0x62d6('0x54')](handleError(_0x3bd4dc,null));};exports['destroy']=function(_0x1d7b14,_0xb4ee72){return db[_0x62d6('0x43')][_0x62d6('0x4a')]({'where':{'id':_0x1d7b14[_0x62d6('0x48')]['id']}})[_0x62d6('0x27')](handleEntityNotFound(_0xb4ee72,null))[_0x62d6('0x27')](removeEntity(_0xb4ee72,null))[_0x62d6('0x54')](handleError(_0xb4ee72,null));};
\ No newline at end of file
index 5ac0d2f..27c2fd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe043=['tools_dispositions','name_voice','ListId','name','ChatWebsiteId','MailAccountId','name_sms','SmsAccountId','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','exports','Disposition'];(function(_0x22e47a,_0x4ea10c){var _0x15a12a=function(_0x4a097f){while(--_0x4a097f){_0x22e47a['push'](_0x22e47a['shift']());}};_0x15a12a(++_0x4ea10c);}(_0xe043,0x81));var _0x3e04=function(_0xacb24c,_0x372f99){_0xacb24c=_0xacb24c-0x0;var _0x4e26bf=_0xe043[_0xacb24c];return _0x4e26bf;};'use strict';var _=require('lodash');var util=require(_0x3e04('0x0'));var logger=require(_0x3e04('0x1'))(_0x3e04('0x2'));var moment=require('moment');var BPromise=require(_0x3e04('0x3'));var rp=require(_0x3e04('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3e04('0x5'));var config=require(_0x3e04('0x6'));var attributes=require('./disposition.attributes');module[_0x3e04('0x7')]=function(_0x2455be,_0x2cd425){return _0x2455be['define'](_0x3e04('0x8'),attributes,{'tableName':_0x3e04('0x9'),'paranoid':![],'indexes':[{'unique':!![],'name':_0x3e04('0xa'),'fields':['name',_0x3e04('0xb')]},{'unique':!![],'name':'name_chat','fields':[_0x3e04('0xc'),_0x3e04('0xd')]},{'unique':!![],'name':'name_mail','fields':['name',_0x3e04('0xe')]},{'unique':!![],'name':_0x3e04('0xf'),'fields':[_0x3e04('0xc'),_0x3e04('0x10')]},{'unique':!![],'name':_0x3e04('0x11'),'fields':[_0x3e04('0xc'),_0x3e04('0x12')]},{'unique':!![],'name':_0x3e04('0x13'),'fields':[_0x3e04('0xc'),_0x3e04('0x14')]},{'unique':!![],'name':_0x3e04('0x15'),'fields':['name',_0x3e04('0x16')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9f15=['bluebird','path','rimraf','./disposition.attributes','exports','Disposition','tools_dispositions','name','ListId','name_chat','ChatWebsiteId','name_fax','name_openchannel','name_whatsapp','WhatsappAccountId','lodash','util','api','moment'];(function(_0x5d121e,_0x2063c6){var _0x2b777e=function(_0x10d230){while(--_0x10d230){_0x5d121e['push'](_0x5d121e['shift']());}};_0x2b777e(++_0x2063c6);}(_0x9f15,0x6e));var _0x59f1=function(_0x451959,_0x18c7a5){_0x451959=_0x451959-0x0;var _0x490269=_0x9f15[_0x451959];return _0x490269;};'use strict';var _=require(_0x59f1('0x0'));var util=require(_0x59f1('0x1'));var logger=require('../../config/logger')(_0x59f1('0x2'));var moment=require(_0x59f1('0x3'));var BPromise=require(_0x59f1('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x59f1('0x5'));var rimraf=require(_0x59f1('0x6'));var config=require('../../config/environment');var attributes=require(_0x59f1('0x7'));module[_0x59f1('0x8')]=function(_0x6ca29e,_0x5294ae){return _0x6ca29e['define'](_0x59f1('0x9'),attributes,{'tableName':_0x59f1('0xa'),'paranoid':![],'indexes':[{'unique':!![],'name':'name_voice','fields':[_0x59f1('0xb'),_0x59f1('0xc')]},{'unique':!![],'name':_0x59f1('0xd'),'fields':[_0x59f1('0xb'),_0x59f1('0xe')]},{'unique':!![],'name':'name_mail','fields':[_0x59f1('0xb'),'MailAccountId']},{'unique':!![],'name':'name_sms','fields':[_0x59f1('0xb'),'SmsAccountId']},{'unique':!![],'name':_0x59f1('0xf'),'fields':[_0x59f1('0xb'),'FaxAccountId']},{'unique':!![],'name':_0x59f1('0x10'),'fields':['name','OpenchannelAccountId']},{'unique':!![],'name':_0x59f1('0x11'),'fields':[_0x59f1('0xb'),_0x59f1('0x12')]}],'timestamps':!![]});};
\ No newline at end of file
index 7f39dc1..7242cef 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(_0x332a4d,_0x7e07b){var _0x5d3d7f=function(_0x502d1a){while(--_0x502d1a){_0x332a4d['push'](_0x332a4d['shift']());}};_0x5d3d7f(++_0x7e07b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x36dfbd,_0x5bfe2d){_0x36dfbd=_0x36dfbd-0x0;var _0x4ecad9=_0xa9e0[_0x36dfbd];return _0x4ecad9;};'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(_0x3f92fa,_0x558ac2){var _0x4cc4cc=function(_0x3c41f2){while(--_0x3c41f2){_0x3f92fa['push'](_0x3f92fa['shift']());}};_0x4cc4cc(++_0x558ac2);}(_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 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 90f6412..79d1603 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf17a=['/:id','update','delete','destroy','multer','util','path','connect-timeout','express','Router','../../config/environment','./disposition.controller','get','isAuthenticated','index','post','create'];(function(_0x29e7af,_0x386f3b){var _0x467391=function(_0x34384c){while(--_0x34384c){_0x29e7af['push'](_0x29e7af['shift']());}};_0x467391(++_0x386f3b);}(_0xf17a,0x136));var _0xaf17=function(_0x3c2cc9,_0xf447f2){_0x3c2cc9=_0x3c2cc9-0x0;var _0x11f2a9=_0xf17a[_0x3c2cc9];return _0x11f2a9;};'use strict';var multer=require(_0xaf17('0x0'));var util=require(_0xaf17('0x1'));var path=require(_0xaf17('0x2'));var timeout=require(_0xaf17('0x3'));var express=require(_0xaf17('0x4'));var router=express[_0xaf17('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xaf17('0x6'));var controller=require(_0xaf17('0x7'));router[_0xaf17('0x8')]('/',auth[_0xaf17('0x9')](),controller[_0xaf17('0xa')]);router[_0xaf17('0x8')]('/:id',auth[_0xaf17('0x9')](),controller['show']);router[_0xaf17('0xb')]('/',auth[_0xaf17('0x9')](),controller[_0xaf17('0xc')]);router['put'](_0xaf17('0xd'),auth[_0xaf17('0x9')](),controller[_0xaf17('0xe')]);router[_0xaf17('0xf')](_0xaf17('0xd'),auth[_0xaf17('0x9')](),controller[_0xaf17('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x2635=['post','create','put','update','delete','destroy','multer','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./disposition.controller','get','isAuthenticated','index','show'];(function(_0x3df9dd,_0x26f5cd){var _0x4f11e4=function(_0x1993fe){while(--_0x1993fe){_0x3df9dd['push'](_0x3df9dd['shift']());}};_0x4f11e4(++_0x26f5cd);}(_0x2635,0x126));var _0x5263=function(_0x523dc0,_0x2305a1){_0x523dc0=_0x523dc0-0x0;var _0x26af07=_0x2635[_0x523dc0];return _0x26af07;};'use strict';var multer=require(_0x5263('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x5263('0x1'));var express=require(_0x5263('0x2'));var router=express[_0x5263('0x3')]();var fs_extra=require(_0x5263('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x5263('0x5'));var config=require(_0x5263('0x6'));var controller=require(_0x5263('0x7'));router[_0x5263('0x8')]('/',auth[_0x5263('0x9')](),controller[_0x5263('0xa')]);router[_0x5263('0x8')]('/:id',auth[_0x5263('0x9')](),controller[_0x5263('0xb')]);router[_0x5263('0xc')]('/',auth[_0x5263('0x9')](),controller[_0x5263('0xd')]);router[_0x5263('0xe')]('/:id',auth[_0x5263('0x9')](),controller[_0x5263('0xf')]);router[_0x5263('0x10')]('/:id',auth[_0x5263('0x9')](),controller[_0x5263('0x11')]);module['exports']=router;
\ No newline at end of file
index 20ca94a..e7cd8d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a3b=['mandatoryDispositionPauseId','sequelize','exports','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','localstationid','2400','4800','7200','9600','12000','14400','v17,v27,v29','SIP','IAX','KHOMP','TEXT','INTEGER','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue'];(function(_0x5d0b83,_0x279b03){var _0x21747a=function(_0xc3085a){while(--_0xc3085a){_0x5d0b83['push'](_0x5d0b83['shift']());}};_0x21747a(++_0x279b03);}(_0x8a3b,0x109));var _0xb8a3=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0x8a3b[_0x1c546c];return _0x2cc384;};'use strict';var Sequelize=require(_0xb8a3('0x0'));module[_0xb8a3('0x1')]={'name':{'type':Sequelize[_0xb8a3('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xb8a3('0x2')]},'ecm':{'type':Sequelize[_0xb8a3('0x3')](_0xb8a3('0x4'),'no'),'defaultValue':_0xb8a3('0x4')},'headerinfo':{'type':Sequelize[_0xb8a3('0x2')],'defaultValue':_0xb8a3('0x5')},'localstationid':{'type':Sequelize[_0xb8a3('0x2')],'unique':_0xb8a3('0x6')},'minrate':{'type':Sequelize[_0xb8a3('0x3')](_0xb8a3('0x7'),_0xb8a3('0x8'),_0xb8a3('0x9'),_0xb8a3('0xa'),_0xb8a3('0xb'),'14400'),'defaultValue':_0xb8a3('0x8')},'maxrate':{'type':Sequelize['ENUM'](_0xb8a3('0x7'),_0xb8a3('0x8'),_0xb8a3('0x9'),_0xb8a3('0xa'),_0xb8a3('0xb'),_0xb8a3('0xc')),'defaultValue':'14400'},'modem':{'type':Sequelize[_0xb8a3('0x2')],'defaultValue':_0xb8a3('0xd')},'gateway':{'type':Sequelize[_0xb8a3('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0xb8a3('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xb8a3('0x3')](_0xb8a3('0xe'),_0xb8a3('0xf'),'DADHI',_0xb8a3('0x10')),'defaultValue':_0xb8a3('0xe')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xb8a3('0x11')],'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['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xb8a3('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xb8a3('0x13')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xb8a3('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xb8a3('0x12')],'allowNull':!![],'defaultValue':null,'comment':_0xb8a3('0x14')},'mandatoryDisposition':{'type':Sequelize[_0xb8a3('0x13')],'defaultValue':![],'comment':_0xb8a3('0x15'),'set':function(_0x2f9ea7){if(!_0x2f9ea7)this[_0xb8a3('0x16')](_0xb8a3('0x17'),null);this[_0xb8a3('0x16')]('mandatoryDisposition',_0x2f9ea7);}}};
\ No newline at end of file
+var _0xa7c8=['Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition','sequelize','exports','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','localstationid','2400','9600','12000','14400','4800','7200','INTEGER','SIP','IAX','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN'];(function(_0x5e2613,_0x5d7a19){var _0x45d076=function(_0x103e5c){while(--_0x103e5c){_0x5e2613['push'](_0x5e2613['shift']());}};_0x45d076(++_0x5d7a19);}(_0xa7c8,0x77));var _0x8a7c=function(_0x5b2665,_0xe4e5d5){_0x5b2665=_0x5b2665-0x0;var _0x5e3fb9=_0xa7c8[_0x5b2665];return _0x5e3fb9;};'use strict';var Sequelize=require(_0x8a7c('0x0'));module[_0x8a7c('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x8a7c('0x2')]},'ecm':{'type':Sequelize[_0x8a7c('0x3')](_0x8a7c('0x4'),'no'),'defaultValue':'yes'},'headerinfo':{'type':Sequelize[_0x8a7c('0x2')],'defaultValue':_0x8a7c('0x5')},'localstationid':{'type':Sequelize[_0x8a7c('0x2')],'unique':_0x8a7c('0x6')},'minrate':{'type':Sequelize[_0x8a7c('0x3')](_0x8a7c('0x7'),'4800','7200',_0x8a7c('0x8'),_0x8a7c('0x9'),_0x8a7c('0xa')),'defaultValue':_0x8a7c('0xb')},'maxrate':{'type':Sequelize['ENUM'](_0x8a7c('0x7'),_0x8a7c('0xb'),_0x8a7c('0xc'),_0x8a7c('0x8'),_0x8a7c('0x9'),'14400'),'defaultValue':_0x8a7c('0xa')},'modem':{'type':Sequelize[_0x8a7c('0x2')],'defaultValue':'v17,v27,v29'},'gateway':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x8a7c('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x8a7c('0xd')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize['ENUM'](_0x8a7c('0xe'),_0x8a7c('0xf'),'DADHI','KHOMP'),'defaultValue':'SIP'},'key':{'type':Sequelize[_0x8a7c('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x8a7c('0x10')],'defaultValue':function(){return _0x8a7c('0x11');}},'notificationSound':{'type':Sequelize[_0x8a7c('0x12')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'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[_0x8a7c('0x12')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x8a7c('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x8a7c('0x13')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x35e41a){if(!_0x35e41a)this['setDataValue'](_0x8a7c('0x14'),null);this[_0x8a7c('0x15')](_0x8a7c('0x16'),_0x35e41a);}}};
\ No newline at end of file
index bed716e..04db604 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8975=['name','send','index','Pause','mandatoryDispositionPause','FaxAccount','rawAttributes','model','map','keys','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','options','includeAll','findAll','rows','show','params','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','update','describe','addDisposition','FaxAccountId','Disposition','getDispositions','findOne','nolimit','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','FaxInteraction','addInteraction','CmContact','Contact','User','Owner','fullname','Tag','Tags','color','tag','addApplications','sequelize','transaction','FaxApplication','bulkCreate','findAndCountAll','priority','getApplications','context','from-voip-provider','exten','type','description','appdata','Answer','push','Set','ecm','gateway','maxrate','minrate','modem','t38timeout','Wait','ReceiveFax','addAccountApplications','VoiceExtension','omit','tech','key','createdAt','updatedAt','TrunkId','getMessages','FaxMessage','split','format','YYYY-MM-DD\x20HH:mm:ss','CmList','Contacts','DESC','attachments','server/files/attachments','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','List','ListId','List\x20not\x20found','Send\x20Fax\x20failed','out','filename','Messages','ContactId','dataValues','SendFax','addAgents','emit','removeAgents','userFaxAccount:remove','getAgents','eml-format','rimraf','zip-dir','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','register','jayson/promise','client','http','then','info','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','error','code','FaxAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','save','destroy','get','FaxAccounts','UserProfileResource','end'];(function(_0x31d101,_0x5b13ee){var _0x8a09e2=function(_0x431cae){while(--_0x431cae){_0x31d101['push'](_0x31d101['shift']());}};_0x8a09e2(++_0x5b13ee);}(_0x8975,0x7e));var _0x5897=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0x8975[_0x27af45];return _0x18df21;};'use strict';var emlformat=require(_0x5897('0x0'));var rimraf=require(_0x5897('0x1'));var zipdir=require(_0x5897('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5897('0x3'));var Mustache=require(_0x5897('0x4'));var util=require('util');var path=require(_0x5897('0x5'));var sox=require(_0x5897('0x6'));var csv=require(_0x5897('0x7'));var ejs=require(_0x5897('0x8'));var fs=require('fs');var fs_extra=require(_0x5897('0x9'));var _=require(_0x5897('0xa'));var squel=require(_0x5897('0xb'));var crypto=require(_0x5897('0xc'));var jsforce=require(_0x5897('0xd'));var deskjs=require(_0x5897('0xe'));var toCsv=require(_0x5897('0x7'));var querystring=require('querystring');var Papa=require(_0x5897('0xf'));var Redis=require('ioredis');var authService=require(_0x5897('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x5897('0x11'));var hardwareService=require(_0x5897('0x12'));var logger=require(_0x5897('0x13'))(_0x5897('0x14'));var utils=require('../../config/utils');var config=require(_0x5897('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x5897('0x16'))['db'];config[_0x5897('0x17')]=_[_0x5897('0x18')](config[_0x5897('0x17')],{'host':_0x5897('0x19'),'port':0x18eb});var socket=require(_0x5897('0x1a'))(new Redis(config['redis']));require(_0x5897('0x1b'))[_0x5897('0x1c')](socket);var jayson=require(_0x5897('0x1d'));var client=jayson[_0x5897('0x1e')]['http']({'port':0x232c});var client9002=jayson[_0x5897('0x1e')][_0x5897('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x2472a5,_0x393215,_0x58ab7c,_0x2ea2b6){return new BPromise(function(_0x260523,_0x5cb7c1){var _0x2e203a=_0x2ea2b6||client;return _0x2e203a['request'](_0x2472a5,_0x58ab7c)[_0x5897('0x20')](function(_0x48398a){logger[_0x5897('0x21')]('FaxAccount,\x20%s,\x20%s',_0x393215,_0x5897('0x22'));logger[_0x5897('0x23')](_0x5897('0x24'),_0x393215,_0x5897('0x22'),JSON['stringify'](_0x48398a));if(_0x48398a['error']){if(_0x48398a[_0x5897('0x25')][_0x5897('0x26')]===0x1f4){logger[_0x5897('0x25')](_0x5897('0x27'),_0x393215,_0x48398a[_0x5897('0x25')]['message']);return _0x5cb7c1(_0x48398a[_0x5897('0x25')][_0x5897('0x28')]);}logger[_0x5897('0x25')]('FaxAccount,\x20%s,\x20%s',_0x393215,_0x48398a[_0x5897('0x25')][_0x5897('0x28')]);return _0x260523(_0x48398a[_0x5897('0x25')][_0x5897('0x28')]);}else{logger[_0x5897('0x21')](_0x5897('0x27'),_0x393215,_0x5897('0x22'));_0x260523(_0x48398a[_0x5897('0x29')][_0x5897('0x28')]);}})[_0x5897('0x2a')](function(_0x4ed845){logger[_0x5897('0x25')](_0x5897('0x27'),_0x393215,_0x4ed845);_0x5cb7c1(_0x4ed845);});});}function respondWithStatusCode(_0x4a68c2,_0x5955a0){_0x5955a0=_0x5955a0||0xcc;return function(_0x353604){if(_0x353604){return _0x4a68c2[_0x5897('0x2b')](_0x5955a0);}return _0x4a68c2[_0x5897('0x2c')](_0x5955a0)['end']();};}function respondWithResult(_0x19598d,_0x5f46be){_0x5f46be=_0x5f46be||0xc8;return function(_0x218073){if(_0x218073){return _0x19598d['status'](_0x5f46be)[_0x5897('0x2d')](_0x218073);}};}function respondWithFilteredResult(_0x3d1b15,_0x3c8aa4){return function(_0x468cb2){if(_0x468cb2){var _0x2d5f36=typeof _0x3c8aa4['offset']===_0x5897('0x2e')&&typeof _0x3c8aa4[_0x5897('0x2f')]===_0x5897('0x2e');var _0x55adc3=_0x468cb2[_0x5897('0x30')];var _0x58d7f0=_0x2d5f36?0x0:_0x3c8aa4[_0x5897('0x31')];var _0x2f3147=_0x2d5f36?_0x468cb2[_0x5897('0x30')]:_0x3c8aa4[_0x5897('0x31')]+_0x3c8aa4[_0x5897('0x2f')];var _0x20eb83;if(_0x2f3147>=_0x55adc3){_0x2f3147=_0x55adc3;_0x20eb83=0xc8;}else{_0x20eb83=0xce;}_0x3d1b15[_0x5897('0x2c')](_0x20eb83);return _0x3d1b15[_0x5897('0x32')](_0x5897('0x33'),_0x58d7f0+'-'+_0x2f3147+'/'+_0x55adc3)[_0x5897('0x2d')](_0x468cb2);}return null;};}function patchUpdates(_0x21aa45){return function(_0x36f445){try{jsonpatch[_0x5897('0x34')](_0x36f445,_0x21aa45,!![]);}catch(_0x5651e3){return BPromise['reject'](_0x5651e3);}return _0x36f445[_0x5897('0x35')]();};}function saveUpdates(_0x41ae16,_0x49d8fd){return function(_0x34d0a4){if(_0x34d0a4){return _0x34d0a4['update'](_0x41ae16)[_0x5897('0x20')](function(_0x14f501){return _0x14f501;});}return null;};}function removeEntity(_0xf7a9c2,_0x54bf21){return function(_0x1ea208){if(_0x1ea208){return _0x1ea208[_0x5897('0x36')]()['then'](function(){var _0x2a758e=_0x1ea208[_0x5897('0x37')]({'plain':!![]});var _0xf30387=_0x5897('0x38');return db[_0x5897('0x39')][_0x5897('0x36')]({'where':{'type':_0xf30387,'resourceId':_0x2a758e['id']}})['then'](function(){return _0x1ea208;});})[_0x5897('0x20')](function(){_0xf7a9c2[_0x5897('0x2c')](0xcc)[_0x5897('0x3a')]();});}};}function handleEntityNotFound(_0x4aaa03,_0x479c66){return function(_0x2c27cb){if(!_0x2c27cb){_0x4aaa03[_0x5897('0x2b')](0x194);}return _0x2c27cb;};}function handleError(_0x1ddf2c,_0x2ba4c5){_0x2ba4c5=_0x2ba4c5||0x1f4;return function(_0x54a414){logger['error'](_0x54a414['stack']);if(_0x54a414[_0x5897('0x3b')]){delete _0x54a414[_0x5897('0x3b')];}_0x1ddf2c['status'](_0x2ba4c5)[_0x5897('0x3c')](_0x54a414);};}exports[_0x5897('0x3d')]=function(_0x16a692,_0x2933d7){var _0xd9517a={'include':[{'model':db[_0x5897('0x3e')],'as':_0x5897('0x3f')}]},_0x32a304={},_0x4a4387={'count':0x0,'rows':[]};var _0x274b43=_['map'](db[_0x5897('0x40')][_0x5897('0x41')],function(_0x142233){return{'name':_0x142233['fieldName'],'type':_0x142233['type']['key']};});_0x32a304[_0x5897('0x42')]=_[_0x5897('0x43')](_0x274b43,_0x5897('0x3b'));_0x32a304['query']=_[_0x5897('0x44')](_0x16a692[_0x5897('0x45')]);_0x32a304['filters']=_[_0x5897('0x46')](_0x32a304[_0x5897('0x42')],_0x32a304[_0x5897('0x45')]);_0xd9517a[_0x5897('0x47')]=_['intersection'](_0x32a304[_0x5897('0x42')],qs['fields'](_0x16a692[_0x5897('0x45')][_0x5897('0x48')]));_0xd9517a[_0x5897('0x47')]=_0xd9517a['attributes'][_0x5897('0x49')]?_0xd9517a[_0x5897('0x47')]:_0x32a304[_0x5897('0x42')];if(!_0x16a692[_0x5897('0x45')][_0x5897('0x4a')]('nolimit')){_0xd9517a[_0x5897('0x2f')]=qs[_0x5897('0x2f')](_0x16a692['query'][_0x5897('0x2f')]);_0xd9517a[_0x5897('0x31')]=qs[_0x5897('0x31')](_0x16a692['query'][_0x5897('0x31')]);}_0xd9517a[_0x5897('0x4b')]=qs[_0x5897('0x4c')](_0x16a692[_0x5897('0x45')]['sort']);_0xd9517a[_0x5897('0x4d')]=qs[_0x5897('0x4e')](_[_0x5897('0x4f')](_0x16a692[_0x5897('0x45')],_0x32a304[_0x5897('0x4e')]),_0x274b43);if(_0x16a692[_0x5897('0x45')][_0x5897('0x50')]){_0xd9517a[_0x5897('0x4d')]=_[_0x5897('0x51')](_0xd9517a[_0x5897('0x4d')],{'$or':_['map'](_0x274b43,function(_0x3e845f){if(_0x3e845f['type']!=='VIRTUAL'){var _0x54d652={};_0x54d652[_0x3e845f[_0x5897('0x3b')]]={'$like':'%'+_0x16a692[_0x5897('0x45')][_0x5897('0x50')]+'%'};return _0x54d652;}})});}_0xd9517a=_[_0x5897('0x51')]({},_0xd9517a,_0x16a692[_0x5897('0x52')]);var _0xf08808={'where':_0xd9517a['where']};return db['FaxAccount'][_0x5897('0x30')](_0xf08808)[_0x5897('0x20')](function(_0x40e0bc){_0x4a4387['count']=_0x40e0bc;if(_0x16a692['query'][_0x5897('0x53')]){_0xd9517a['include']=[{'all':!![]}];}return db[_0x5897('0x40')][_0x5897('0x54')](_0xd9517a);})['then'](function(_0x4fd828){_0x4a4387[_0x5897('0x55')]=_0x4fd828;return _0x4a4387;})[_0x5897('0x20')](respondWithFilteredResult(_0x2933d7,_0xd9517a))[_0x5897('0x2a')](handleError(_0x2933d7,null));};exports[_0x5897('0x56')]=function(_0x5877a2,_0x3676cc){var _0x37ddd8={'raw':![],'where':{'id':_0x5877a2[_0x5897('0x57')]['id']},'include':[{'model':db['Pause'],'as':_0x5897('0x3f')}]},_0x3a6291={};_0x3a6291[_0x5897('0x42')]=_[_0x5897('0x44')](db['FaxAccount'][_0x5897('0x41')]);_0x3a6291[_0x5897('0x45')]=_['keys'](_0x5877a2['query']);_0x3a6291['filters']=_['intersection'](_0x3a6291[_0x5897('0x42')],_0x3a6291[_0x5897('0x45')]);_0x37ddd8[_0x5897('0x47')]=_[_0x5897('0x46')](_0x3a6291[_0x5897('0x42')],qs['fields'](_0x5877a2[_0x5897('0x45')][_0x5897('0x48')]));_0x37ddd8[_0x5897('0x47')]=_0x37ddd8[_0x5897('0x47')][_0x5897('0x49')]?_0x37ddd8['attributes']:_0x3a6291[_0x5897('0x42')];if(_0x5877a2[_0x5897('0x45')][_0x5897('0x53')]){_0x37ddd8[_0x5897('0x58')]=[{'all':!![]}];}_0x37ddd8=_[_0x5897('0x51')]({},_0x37ddd8,_0x5877a2['options']);return db[_0x5897('0x40')][_0x5897('0x59')](_0x37ddd8)['then'](handleEntityNotFound(_0x3676cc,null))[_0x5897('0x20')](respondWithResult(_0x3676cc,null))['catch'](handleError(_0x3676cc,null));};exports[_0x5897('0x5a')]=function(_0x235f85,_0x4cdead){return db[_0x5897('0x40')][_0x5897('0x5a')](_0x235f85[_0x5897('0x5b')],{})[_0x5897('0x20')](function(_0x55cdd3){var _0x409325=_0x235f85[_0x5897('0x5c')][_0x5897('0x37')]({'plain':!![]});if(!_0x409325)throw new Error(_0x5897('0x5d'));if(_0x409325[_0x5897('0x5e')]===_0x5897('0x5c')){var _0x12a565=_0x55cdd3['get']({'plain':!![]});var _0x2a159=_0x5897('0x38');return db['UserProfileSection'][_0x5897('0x59')]({'where':{'name':_0x2a159,'userProfileId':_0x409325[_0x5897('0x5f')]},'raw':!![]})[_0x5897('0x20')](function(_0xe72678){if(_0xe72678&&_0xe72678[_0x5897('0x60')]===0x0){return db[_0x5897('0x39')][_0x5897('0x5a')]({'name':_0x12a565['name'],'resourceId':_0x12a565['id'],'type':_0xe72678[_0x5897('0x3b')],'sectionId':_0xe72678['id']},{})[_0x5897('0x20')](function(){return _0x55cdd3;});}else{return _0x55cdd3;}})[_0x5897('0x2a')](function(_0x57d1bb){logger[_0x5897('0x25')](_0x5897('0x61'),_0x57d1bb);throw _0x57d1bb;});}return _0x55cdd3;})['then'](respondWithResult(_0x4cdead,0xc9))[_0x5897('0x2a')](handleError(_0x4cdead,null));};exports[_0x5897('0x62')]=function(_0x5eb34f,_0x12f3f5){if(_0x5eb34f[_0x5897('0x5b')]['id']){delete _0x5eb34f['body']['id'];}return db[_0x5897('0x40')][_0x5897('0x59')]({'where':{'id':_0x5eb34f[_0x5897('0x57')]['id']},'include':[{'model':db[_0x5897('0x3e')],'as':'mandatoryDispositionPause'}]})[_0x5897('0x20')](handleEntityNotFound(_0x12f3f5,null))[_0x5897('0x20')](saveUpdates(_0x5eb34f[_0x5897('0x5b')],null))[_0x5897('0x20')](respondWithResult(_0x12f3f5,null))[_0x5897('0x2a')](handleError(_0x12f3f5,null));};exports[_0x5897('0x36')]=function(_0x2e99cf,_0x4da556){return db[_0x5897('0x40')]['find']({'where':{'id':_0x2e99cf['params']['id']}})['then'](handleEntityNotFound(_0x4da556,null))[_0x5897('0x20')](removeEntity(_0x4da556,null))[_0x5897('0x2a')](handleError(_0x4da556,null));};exports[_0x5897('0x63')]=function(_0xf5a0eb,_0x1c8096){return db[_0x5897('0x40')][_0x5897('0x63')]()[_0x5897('0x20')](respondWithResult(_0x1c8096,null))[_0x5897('0x2a')](handleError(_0x1c8096,null));};exports[_0x5897('0x64')]=function(_0x4bfae5,_0x5386c,_0x4b8069){if(_0x4bfae5[_0x5897('0x5b')]['id']){delete _0x4bfae5['body']['id'];}return db[_0x5897('0x40')]['find']({'where':{'id':_0x4bfae5[_0x5897('0x57')]['id']}})[_0x5897('0x20')](handleEntityNotFound(_0x5386c,null))[_0x5897('0x20')](function(_0x5ea96f){if(_0x5ea96f){_0x4bfae5[_0x5897('0x5b')][_0x5897('0x65')]=_0x5ea96f['id'];return db[_0x5897('0x66')][_0x5897('0x5a')](_0x4bfae5[_0x5897('0x5b')]);}})[_0x5897('0x20')](respondWithResult(_0x5386c,null))[_0x5897('0x2a')](handleError(_0x5386c,null));};exports[_0x5897('0x67')]=function(_0x5c8d11,_0x581db1,_0x4e3d77){var _0x2ca5b3={'raw':![],'where':{}};var _0x4e7dcc={};var _0x23a932={'count':0x0,'rows':[]};return db[_0x5897('0x40')][_0x5897('0x68')]({'where':{'id':_0x5c8d11[_0x5897('0x57')]['id']}})[_0x5897('0x20')](handleEntityNotFound(_0x581db1,null))[_0x5897('0x20')](function(_0x45ba0f){if(_0x45ba0f){_0x4e7dcc[_0x5897('0x42')]=_[_0x5897('0x44')](db['Disposition'][_0x5897('0x41')]);_0x4e7dcc['query']=_[_0x5897('0x44')](_0x5c8d11['query']);_0x4e7dcc[_0x5897('0x4e')]=_['intersection'](_0x4e7dcc['model'],_0x4e7dcc['query']);_0x2ca5b3['attributes']=_[_0x5897('0x46')](_0x4e7dcc[_0x5897('0x42')],qs[_0x5897('0x48')](_0x5c8d11[_0x5897('0x45')]['fields']));_0x2ca5b3['attributes']=_0x2ca5b3[_0x5897('0x47')][_0x5897('0x49')]?_0x2ca5b3[_0x5897('0x47')]:_0x4e7dcc[_0x5897('0x42')];if(!_0x5c8d11[_0x5897('0x45')][_0x5897('0x4a')](_0x5897('0x69'))){_0x2ca5b3[_0x5897('0x2f')]=qs[_0x5897('0x2f')](_0x5c8d11['query']['limit']);_0x2ca5b3['offset']=qs[_0x5897('0x31')](_0x5c8d11[_0x5897('0x45')][_0x5897('0x31')]);}_0x2ca5b3[_0x5897('0x4b')]=qs['sort'](_0x5c8d11[_0x5897('0x45')][_0x5897('0x4c')]);_0x2ca5b3[_0x5897('0x4d')]=qs[_0x5897('0x4e')](_[_0x5897('0x4f')](_0x5c8d11['query'],_0x4e7dcc[_0x5897('0x4e')]));_0x2ca5b3['where'][_0x5897('0x65')]=_0x45ba0f['id'];if(_0x5c8d11['query']['filter']){_0x2ca5b3['where']=_[_0x5897('0x51')](_0x2ca5b3['where'],{'$or':_[_0x5897('0x43')](_0x2ca5b3[_0x5897('0x47')],function(_0x467f44){var _0x4e0b5c={};_0x4e0b5c[_0x467f44]={'$like':'%'+_0x5c8d11['query'][_0x5897('0x50')]+'%'};return _0x4e0b5c;})});}_0x2ca5b3=_['merge']({},_0x2ca5b3,_0x5c8d11[_0x5897('0x52')]);return db[_0x5897('0x66')][_0x5897('0x30')]({'where':_0x2ca5b3[_0x5897('0x4d')]})[_0x5897('0x20')](function(_0x101396){_0x23a932['count']=_0x101396;if(_0x5c8d11[_0x5897('0x45')][_0x5897('0x53')]){_0x2ca5b3['include']=[{'all':!![]}];}return db[_0x5897('0x66')][_0x5897('0x54')](_0x2ca5b3);})[_0x5897('0x20')](function(_0x5a3c27){_0x23a932[_0x5897('0x55')]=_0x5a3c27;return _0x23a932;});}})[_0x5897('0x20')](respondWithFilteredResult(_0x581db1,_0x2ca5b3))[_0x5897('0x2a')](handleError(_0x581db1,null));};exports['removeDispositions']=function(_0x2ecbae,_0x3d09c6,_0x4198b9){return db[_0x5897('0x40')][_0x5897('0x59')]({'where':{'id':_0x2ecbae[_0x5897('0x57')]['id']}})[_0x5897('0x20')](handleEntityNotFound(_0x3d09c6,null))[_0x5897('0x20')](function(_0x348771){if(_0x348771){return _0x348771['removeDispositions'](_0x2ecbae[_0x5897('0x45')][_0x5897('0x6a')]);}})[_0x5897('0x20')](respondWithStatusCode(_0x3d09c6,null))[_0x5897('0x2a')](handleError(_0x3d09c6,null));};exports[_0x5897('0x6b')]=function(_0x1b91b3,_0x32cd42,_0xa2dc9c){if(_0x1b91b3[_0x5897('0x5b')]['id']){delete _0x1b91b3[_0x5897('0x5b')]['id'];}return db['FaxAccount'][_0x5897('0x59')]({'where':{'id':_0x1b91b3['params']['id']}})[_0x5897('0x20')](handleEntityNotFound(_0x32cd42,null))[_0x5897('0x20')](function(_0x30819f){if(_0x30819f){_0x1b91b3[_0x5897('0x5b')][_0x5897('0x65')]=_0x30819f['id'];return db[_0x5897('0x6c')][_0x5897('0x5a')](_0x1b91b3[_0x5897('0x5b')]);}})[_0x5897('0x20')](respondWithResult(_0x32cd42,null))[_0x5897('0x2a')](handleError(_0x32cd42,null));};exports[_0x5897('0x6d')]=function(_0x43d985,_0x37d248,_0x39fe43){var _0x3f94d3={'raw':![],'where':{}};var _0x1d51d8={};var _0x1bd5ca={'count':0x0,'rows':[]};return db[_0x5897('0x40')]['findOne']({'where':{'id':_0x43d985[_0x5897('0x57')]['id']}})[_0x5897('0x20')](handleEntityNotFound(_0x37d248,null))[_0x5897('0x20')](function(_0x55a6f4){if(_0x55a6f4){_0x1d51d8[_0x5897('0x42')]=_['keys'](db[_0x5897('0x6c')][_0x5897('0x41')]);_0x1d51d8[_0x5897('0x45')]=_['keys'](_0x43d985[_0x5897('0x45')]);_0x1d51d8['filters']=_[_0x5897('0x46')](_0x1d51d8[_0x5897('0x42')],_0x1d51d8[_0x5897('0x45')]);_0x3f94d3[_0x5897('0x47')]=_[_0x5897('0x46')](_0x1d51d8['model'],qs[_0x5897('0x48')](_0x43d985[_0x5897('0x45')]['fields']));_0x3f94d3[_0x5897('0x47')]=_0x3f94d3[_0x5897('0x47')][_0x5897('0x49')]?_0x3f94d3[_0x5897('0x47')]:_0x1d51d8[_0x5897('0x42')];if(!_0x43d985['query']['hasOwnProperty']('nolimit')){_0x3f94d3[_0x5897('0x2f')]=qs[_0x5897('0x2f')](_0x43d985['query'][_0x5897('0x2f')]);_0x3f94d3[_0x5897('0x31')]=qs[_0x5897('0x31')](_0x43d985[_0x5897('0x45')][_0x5897('0x31')]);}_0x3f94d3[_0x5897('0x4b')]=qs['sort'](_0x43d985[_0x5897('0x45')][_0x5897('0x4c')]);_0x3f94d3['where']=qs[_0x5897('0x4e')](_[_0x5897('0x4f')](_0x43d985['query'],_0x1d51d8[_0x5897('0x4e')]));_0x3f94d3[_0x5897('0x4d')]['FaxAccountId']=_0x55a6f4['id'];if(_0x43d985['query']['filter']){_0x3f94d3['where']=_[_0x5897('0x51')](_0x3f94d3['where'],{'$or':_['map'](_0x3f94d3['attributes'],function(_0x52eea9){var _0x37876f={};_0x37876f[_0x52eea9]={'$like':'%'+_0x43d985['query'][_0x5897('0x50')]+'%'};return _0x37876f;})});}_0x3f94d3=_[_0x5897('0x51')]({},_0x3f94d3,_0x43d985[_0x5897('0x52')]);return db['CannedAnswer'][_0x5897('0x30')]({'where':_0x3f94d3[_0x5897('0x4d')]})['then'](function(_0x5a79ae){_0x1bd5ca['count']=_0x5a79ae;if(_0x43d985[_0x5897('0x45')][_0x5897('0x53')]){_0x3f94d3[_0x5897('0x58')]=[{'all':!![]}];}return db['CannedAnswer'][_0x5897('0x54')](_0x3f94d3);})[_0x5897('0x20')](function(_0x42f635){_0x1bd5ca['rows']=_0x42f635;return _0x1bd5ca;});}})[_0x5897('0x20')](respondWithFilteredResult(_0x37d248,_0x3f94d3))[_0x5897('0x2a')](handleError(_0x37d248,null));};exports[_0x5897('0x6e')]=function(_0x92da7a,_0x2d2f54,_0x26d2d8){return db[_0x5897('0x40')][_0x5897('0x59')]({'where':{'id':_0x92da7a[_0x5897('0x57')]['id']}})[_0x5897('0x20')](handleEntityNotFound(_0x2d2f54,null))['then'](function(_0x1e3172){if(_0x1e3172){return _0x1e3172[_0x5897('0x6e')](_0x92da7a[_0x5897('0x45')]['ids']);}})['then'](respondWithStatusCode(_0x2d2f54,null))[_0x5897('0x2a')](handleError(_0x2d2f54,null));};exports['addInteraction']=function(_0x315415,_0x2aba33,_0x25910f){return db[_0x5897('0x6f')][_0x5897('0x59')]({'where':{'id':_0x315415[_0x5897('0x57')]['id']}})[_0x5897('0x20')](handleEntityNotFound(_0x2aba33,null))[_0x5897('0x20')](function(_0x8d58ee){if(_0x8d58ee){return _0x8d58ee[_0x5897('0x70')](_0x315415[_0x5897('0x5b')][_0x5897('0x6a')],_['omit'](_0x315415[_0x5897('0x5b')],[_0x5897('0x6a'),'id'])||{});}})[_0x5897('0x20')](respondWithResult(_0x2aba33,null))[_0x5897('0x2a')](handleError(_0x2aba33,null));};exports['getInteractions']=function(_0x14646c,_0x2978b7,_0x15952d){var _0x33b0e8={'raw':![],'where':{}};var _0x47bdd2={};var _0x48a55b={'count':0x0,'rows':[]};return db[_0x5897('0x40')][_0x5897('0x68')]({'where':{'id':_0x14646c[_0x5897('0x57')]['id']}})[_0x5897('0x20')](handleEntityNotFound(_0x2978b7,null))[_0x5897('0x20')](function(_0x48cd4a){if(_0x48cd4a){_0x47bdd2['model']=_[_0x5897('0x44')](db[_0x5897('0x6f')][_0x5897('0x41')]);_0x47bdd2[_0x5897('0x45')]=_[_0x5897('0x44')](_0x14646c['query']);_0x47bdd2[_0x5897('0x4e')]=_[_0x5897('0x46')](_0x47bdd2['model'],_0x47bdd2[_0x5897('0x45')]);_0x33b0e8[_0x5897('0x47')]=_[_0x5897('0x46')](_0x47bdd2[_0x5897('0x42')],qs[_0x5897('0x48')](_0x14646c[_0x5897('0x45')][_0x5897('0x48')]));_0x33b0e8[_0x5897('0x47')]=_0x33b0e8[_0x5897('0x47')]['length']?_0x33b0e8['attributes']:_0x47bdd2[_0x5897('0x42')];if(!_0x14646c[_0x5897('0x45')][_0x5897('0x4a')]('nolimit')){_0x33b0e8[_0x5897('0x2f')]=qs[_0x5897('0x2f')](_0x14646c[_0x5897('0x45')][_0x5897('0x2f')]);_0x33b0e8[_0x5897('0x31')]=qs['offset'](_0x14646c[_0x5897('0x45')]['offset']);}_0x33b0e8[_0x5897('0x4b')]=qs[_0x5897('0x4c')](_0x14646c[_0x5897('0x45')]['sort']);_0x33b0e8['where']=qs['filters'](_[_0x5897('0x4f')](_0x14646c[_0x5897('0x45')],_0x47bdd2[_0x5897('0x4e')]));_0x33b0e8[_0x5897('0x4d')][_0x5897('0x65')]=_0x48cd4a['id'];if(_0x14646c[_0x5897('0x45')][_0x5897('0x50')]){_0x33b0e8['where']=_[_0x5897('0x51')](_0x33b0e8[_0x5897('0x4d')],{'$or':_['map'](_0x33b0e8[_0x5897('0x47')],function(_0x4cb890){var _0x3c5ff5={};_0x3c5ff5[_0x4cb890]={'$like':'%'+_0x14646c[_0x5897('0x45')][_0x5897('0x50')]+'%'};return _0x3c5ff5;})});}_0x33b0e8=_[_0x5897('0x51')]({},_0x33b0e8,_0x14646c[_0x5897('0x52')]);return db[_0x5897('0x6f')][_0x5897('0x30')]({'where':_0x33b0e8[_0x5897('0x4d')]})[_0x5897('0x20')](function(_0x2f0d26){_0x48a55b[_0x5897('0x30')]=_0x2f0d26;if(_0x14646c['query']['includeAll']){_0x33b0e8[_0x5897('0x58')]=[{'model':db[_0x5897('0x71')],'as':_0x5897('0x72'),'required':![]},{'model':db[_0x5897('0x73')],'as':_0x5897('0x74'),'attributes':[_0x5897('0x3b'),_0x5897('0x75'),'internal'],'required':![]},{'model':db[_0x5897('0x76')],'as':_0x5897('0x77'),'attributes':['id',_0x5897('0x3b'),_0x5897('0x78')],'where':_0x14646c[_0x5897('0x45')][_0x5897('0x79')]?{'id':_0x14646c[_0x5897('0x45')][_0x5897('0x79')]}:undefined,'required':_0x14646c['query'][_0x5897('0x79')]?!![]:![]}];}return db[_0x5897('0x6f')]['findAll'](_0x33b0e8);})[_0x5897('0x20')](function(_0x4022c4){_0x48a55b[_0x5897('0x55')]=_0x4022c4;return _0x48a55b;});}})[_0x5897('0x20')](respondWithFilteredResult(_0x2978b7,_0x33b0e8))[_0x5897('0x2a')](handleError(_0x2978b7,null));};exports[_0x5897('0x7a')]=function(_0x4279d3,_0x178663,_0x27130b){return db['FaxAccount'][_0x5897('0x68')]({'where':{'id':_0x4279d3[_0x5897('0x57')]['id']}})[_0x5897('0x20')](handleEntityNotFound(_0x178663,null))[_0x5897('0x20')](function(_0x186b83){if(_0x186b83){return db[_0x5897('0x7b')][_0x5897('0x7c')](function(_0x325816){return db[_0x5897('0x7d')]['destroy']({'where':{'FaxAccountId':_0x4279d3['params']['id']},'transaction':_0x325816})[_0x5897('0x20')](function(_0x3a7dfb){var _0x5c4775=_['map'](_0x4279d3['body'],function(_0x26b998){_0x26b998['FaxAccountId']=_0x4279d3[_0x5897('0x57')]['id'];return _0x26b998;});return db[_0x5897('0x7d')][_0x5897('0x7e')](_0x5c4775,{'transaction':_0x325816});});})[_0x5897('0x20')](function(){return db[_0x5897('0x7d')][_0x5897('0x7f')]({'where':{'FaxAccountId':_0x4279d3[_0x5897('0x57')]['id']},'order':_0x5897('0x80')});});}})[_0x5897('0x20')](respondWithResult(_0x178663,null))['catch'](handleError(_0x178663,null));};exports[_0x5897('0x81')]=function(_0x15ddef,_0x20e6d6,_0x1b8597){var _0x1f89c5={};var _0x371a9e={};var _0x9ca7a9;var _0x27a4f3;return db[_0x5897('0x40')][_0x5897('0x68')]({'where':{'id':_0x15ddef[_0x5897('0x57')]['id']}})[_0x5897('0x20')](handleEntityNotFound(_0x20e6d6,null))[_0x5897('0x20')](function(_0x28dd92){if(_0x28dd92){_0x9ca7a9=_0x28dd92;_0x371a9e[_0x5897('0x42')]=_[_0x5897('0x44')](db[_0x5897('0x7d')][_0x5897('0x41')]);_0x371a9e[_0x5897('0x45')]=_[_0x5897('0x44')](_0x15ddef[_0x5897('0x45')]);_0x371a9e['filters']=_['intersection'](_0x371a9e[_0x5897('0x42')],_0x371a9e['query']);_0x1f89c5[_0x5897('0x47')]=_['intersection'](_0x371a9e[_0x5897('0x42')],qs[_0x5897('0x48')](_0x15ddef[_0x5897('0x45')][_0x5897('0x48')]));_0x1f89c5[_0x5897('0x47')]=_0x1f89c5[_0x5897('0x47')][_0x5897('0x49')]?_0x1f89c5[_0x5897('0x47')]:_0x371a9e[_0x5897('0x42')];_0x1f89c5[_0x5897('0x4b')]=qs[_0x5897('0x4c')](_0x15ddef[_0x5897('0x45')][_0x5897('0x4c')]);_0x1f89c5[_0x5897('0x4d')]=qs[_0x5897('0x4e')](_['pick'](_0x15ddef[_0x5897('0x45')],_0x371a9e[_0x5897('0x4e')]));if(_0x15ddef['query']['filter']){_0x1f89c5[_0x5897('0x4d')]=_['merge'](_0x1f89c5[_0x5897('0x4d')],{'$or':_[_0x5897('0x43')](_0x1f89c5[_0x5897('0x47')],function(_0xf36efa){var _0x5a16e7={};_0x5a16e7[_0xf36efa]={'$like':'%'+_0x15ddef[_0x5897('0x45')][_0x5897('0x50')]+'%'};return _0x5a16e7;})});}_0x1f89c5=_['merge']({},_0x1f89c5,_0x15ddef['options']);return _0x9ca7a9['getApplications'](_0x1f89c5);}})[_0x5897('0x20')](function(_0x38f974){if(_0x38f974){_0x27a4f3=_0x38f974[_0x5897('0x49')];if(!_0x15ddef[_0x5897('0x45')]['hasOwnProperty'](_0x5897('0x69'))){_0x1f89c5[_0x5897('0x2f')]=qs[_0x5897('0x2f')](_0x15ddef[_0x5897('0x45')][_0x5897('0x2f')]);_0x1f89c5['offset']=qs[_0x5897('0x31')](_0x15ddef['query'][_0x5897('0x31')]);}return _0x9ca7a9['getApplications'](_0x1f89c5);}})[_0x5897('0x20')](function(_0x1efb40){if(_0x1efb40){return _0x1efb40?{'count':_0x27a4f3,'rows':_0x1efb40}:null;}})[_0x5897('0x20')](respondWithResult(_0x20e6d6,null))[_0x5897('0x2a')](handleError(_0x20e6d6,null));};function Extension(_0x27640b,_0x1e3ad0,_0x1feeda,_0x268aa3){this[_0x5897('0x82')]=_0x5897('0x83');this[_0x5897('0x84')]=_0x27640b['localstationid'];this['app']=_0x268aa3;this[_0x5897('0x85')]='system';this[_0x5897('0x86')]='Fax\x20Extension';this[_0x5897('0x65')]=_0x27640b['id'];this[_0x5897('0x80')]=_0x1e3ad0;this[_0x5897('0x87')]=_0x1feeda;}function createExtensionsReciveFax(_0x2bed85){var _0x17133d=0x1;var _0x154360=[];_0x154360['push'](new Extension(_0x2bed85,_0x17133d,'',_0x5897('0x88')));_0x17133d+=0x1;_0x154360[_0x5897('0x89')](new Extension(_0x2bed85,_0x17133d,'CDR(type)=inbound-fax',_0x5897('0x8a')));_0x17133d+=0x1;for(var _0x2f37af in _0x2bed85){if(_0x2bed85[_0x5897('0x4a')](_0x2f37af)&&(_0x2f37af===_0x5897('0x8b')||_0x2f37af==='localstationid'||_0x2f37af===_0x5897('0x8c')||_0x2f37af==='faxdetect'||_0x2f37af==='headerinfo'||_0x2f37af===_0x5897('0x8d')||_0x2f37af===_0x5897('0x8e')||_0x2f37af===_0x5897('0x8f')||_0x2f37af===_0x5897('0x90'))){_0x154360[_0x5897('0x89')](new Extension(_0x2bed85,_0x17133d,'FAXOPT('+_0x2f37af+')='+_0x2bed85[_0x2f37af],_0x5897('0x8a')));_0x17133d+=0x1;}}_0x154360[_0x5897('0x89')](new Extension(_0x2bed85,_0x17133d,'6',_0x5897('0x91')));_0x17133d+=0x1;_0x154360[_0x5897('0x89')](new Extension(_0x2bed85,_0x17133d,'/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',_0x5897('0x92')));_0x17133d=0x0;return _0x154360;}exports[_0x5897('0x93')]=function(_0x4ca178,_0x2c1d75,_0x295717){var _0x4bef46;return db[_0x5897('0x7b')][_0x5897('0x7c')](function(_0x172318){return db[_0x5897('0x40')]['create'](_0x4ca178[_0x5897('0x5b')],{'transaction':_0x172318})['then'](function(_0xfb3c08){_0x4bef46=_0xfb3c08[_0x5897('0x37')]({'plain':!![]});return db[_0x5897('0x94')][_0x5897('0x7e')](createExtensionsReciveFax(_0x4bef46),{'transaction':_0x172318});});})[_0x5897('0x20')](function(){return _0x4bef46;})[_0x5897('0x20')](respondWithResult(_0x2c1d75,null))['catch'](handleError(_0x2c1d75,null));};exports['updateAccountApplications']=function(_0x33921c,_0x51d1db,_0x3d5d75){var _0x4ebf39;return db[_0x5897('0x7b')]['transaction'](function(_0x3b94a1){return db[_0x5897('0x40')][_0x5897('0x62')](_0x33921c[_0x5897('0x5b')],{'where':{'id':_0x33921c[_0x5897('0x5b')]['id']},'transaction':_0x3b94a1})['then'](function(_0x1f2d51){return db[_0x5897('0x94')][_0x5897('0x36')]({'where':{'FaxAccountId':_0x33921c[_0x5897('0x5b')]['id']},'transaction':_0x3b94a1})['then'](function(_0x28dcbb){return db[_0x5897('0x94')][_0x5897('0x7e')](createExtensionsReciveFax(_[_0x5897('0x95')](_0x33921c[_0x5897('0x5b')],[_0x5897('0x96'),_0x5897('0x97'),_0x5897('0x98'),_0x5897('0x99'),_0x5897('0x9a'),'ListId'])),{'transaction':_0x3b94a1});});});})['then'](function(){return db[_0x5897('0x40')]['findById'](_0x33921c[_0x5897('0x5b')]['id']);})[_0x5897('0x20')](respondWithResult(_0x51d1db,null))[_0x5897('0x2a')](handleError(_0x51d1db,null));};exports[_0x5897('0x9b')]=function(_0x1b26b2,_0x269e3d,_0x557e47){var _0x181cb0={'raw':!![],'where':{}};var _0x2cfa7b={};var _0x149e41={'count':0x0,'rows':[]};return db[_0x5897('0x40')]['findOne']({'where':{'id':_0x1b26b2[_0x5897('0x57')]['id']}})[_0x5897('0x20')](handleEntityNotFound(_0x269e3d,null))[_0x5897('0x20')](function(_0x28bd27){if(_0x28bd27){_0x2cfa7b[_0x5897('0x42')]=_['keys'](db[_0x5897('0x9c')][_0x5897('0x41')]);_0x2cfa7b['query']=_[_0x5897('0x44')](_0x1b26b2[_0x5897('0x45')]);_0x2cfa7b[_0x5897('0x4e')]=_[_0x5897('0x46')](_0x2cfa7b[_0x5897('0x42')],_0x2cfa7b[_0x5897('0x45')]);_0x181cb0['attributes']=_[_0x5897('0x46')](_0x2cfa7b[_0x5897('0x42')],qs['fields'](_0x1b26b2[_0x5897('0x45')]['fields']));_0x181cb0[_0x5897('0x47')]=_0x181cb0[_0x5897('0x47')][_0x5897('0x49')]?_0x181cb0[_0x5897('0x47')]:_0x2cfa7b[_0x5897('0x42')];if(!_0x1b26b2['query'][_0x5897('0x4a')]('nolimit')){_0x181cb0[_0x5897('0x2f')]=qs[_0x5897('0x2f')](_0x1b26b2[_0x5897('0x45')][_0x5897('0x2f')]);_0x181cb0[_0x5897('0x31')]=qs[_0x5897('0x31')](_0x1b26b2['query']['offset']);}_0x181cb0[_0x5897('0x4b')]=qs['sort'](_0x1b26b2[_0x5897('0x45')][_0x5897('0x4c')]);_0x181cb0[_0x5897('0x4d')]=qs[_0x5897('0x4e')](_[_0x5897('0x4f')](_0x1b26b2['query'],_0x2cfa7b[_0x5897('0x4e')]));_0x181cb0[_0x5897('0x4d')]['FaxAccountId']=_0x28bd27['id'];if(_0x1b26b2['query']['filter']){_0x181cb0[_0x5897('0x4d')]=_[_0x5897('0x51')](_0x181cb0[_0x5897('0x4d')],{'$or':_[_0x5897('0x43')](_0x181cb0[_0x5897('0x47')],function(_0x31cb6b){var _0x1e5a2e={};_0x1e5a2e[_0x31cb6b]={'$like':'%'+_0x1b26b2[_0x5897('0x45')]['filter']+'%'};return _0x1e5a2e;})});}if(_0x1b26b2[_0x5897('0x45')]['$gte']){var _0x6ad176=_0x1b26b2[_0x5897('0x45')]['$gte'][_0x5897('0x9d')](',');var _0x477507={};_0x477507[_0x6ad176[0x0]]={'$gte':moment(_0x6ad176[0x1])[_0x5897('0x9e')](_0x5897('0x9f'))};_0x181cb0[_0x5897('0x4d')]=_[_0x5897('0x51')](_0x181cb0['where'],_0x477507);}_0x181cb0=_[_0x5897('0x51')]({},_0x181cb0,_0x1b26b2[_0x5897('0x52')]);return db[_0x5897('0x9c')][_0x5897('0x30')]({'where':_0x181cb0[_0x5897('0x4d')]})[_0x5897('0x20')](function(_0x2d9774){_0x149e41[_0x5897('0x30')]=_0x2d9774;if(_0x1b26b2[_0x5897('0x45')][_0x5897('0x53')]){_0x181cb0[_0x5897('0x58')]=[{'all':!![]}];}return db['FaxMessage'][_0x5897('0x54')](_0x181cb0);})[_0x5897('0x20')](function(_0x45c34a){_0x149e41[_0x5897('0x55')]=_0x45c34a;return _0x149e41;});}})[_0x5897('0x20')](respondWithFilteredResult(_0x269e3d,_0x181cb0))['catch'](handleError(_0x269e3d,null));};exports[_0x5897('0x3c')]=function(_0x3c9319,_0x1d60cf,_0x5c0e25){var _0x23777b,_0x653452={},_0x1b8353;if(_0x3c9319['body']['to']){_0x1b8353=_0x3c9319[_0x5897('0x5b')]['to'][0x0];}return db[_0x5897('0x40')][_0x5897('0x59')]({'where':{'id':_0x3c9319['params']['id']},'include':[{'model':db[_0x5897('0xa0')],'as':'List','include':[{'model':db[_0x5897('0x71')],'as':_0x5897('0xa1'),'where':{'fax':_0x1b8353},'limit':0x1,'order':[[_0x5897('0x99'),_0x5897('0xa2')]]}]}]})[_0x5897('0x20')](handleEntityNotFound(_0x1d60cf,null))[_0x5897('0x20')](function(_0x402333){_0x23777b=_0x402333;if(_0x3c9319['body'][_0x5897('0xa3')]&&_0x3c9319['body'][_0x5897('0xa3')][_0x5897('0x49')]){for(var _0x160591=0x0;_0x160591<_0x3c9319[_0x5897('0x5b')][_0x5897('0xa3')][_0x5897('0x49')];_0x160591+=0x1){_0x3c9319[_0x5897('0x5b')]['attachments'][_0x160591]={'filename':_0x3c9319[_0x5897('0x5b')][_0x5897('0xa3')][_0x160591][_0x5897('0x3b')],'id':_0x3c9319[_0x5897('0x5b')]['attachments'][_0x160591]['id'],'path':path['join'](config['root'],_0x5897('0xa4'),_0x3c9319['body'][_0x5897('0xa3')][_0x160591]['basename'])};}}return respondWithRpcPromise(_0x5897('0xa5'),_0x5897('0xa5'),{'FaxAccountId':_[_0x5897('0xa6')](_0x3c9319['params']['id'])?undefined:_0x3c9319[_0x5897('0x57')]['id'],'path':_['isNil'](_0x3c9319[_0x5897('0x5b')][_0x5897('0xa3')][0x0][_0x5897('0x5')])?undefined:_0x3c9319[_0x5897('0x5b')][_0x5897('0xa3')][0x0]['path'],'fax':_[_0x5897('0xa6')](_0x3c9319[_0x5897('0x5b')]['to'][0x0])?undefined:_0x3c9319['body']['to'][0x0]},client9002);})['then'](function(){if(_0x23777b){if(_[_0x5897('0xa6')](_0x3c9319[_0x5897('0x5b')][_0x5897('0xa7')])){_0x3c9319['body']['from']=util[_0x5897('0x9e')](_0x5897('0xa8'),_0x23777b[_0x5897('0x3b')],_0x23777b[_0x5897('0xa9')]);}if(_0x23777b[_0x5897('0xaa')]){if(_0x23777b['List'][_0x5897('0xa1')][_0x5897('0x49')]){return _0x23777b[_0x5897('0xaa')][_0x5897('0xa1')][0x0];}else{return db[_0x5897('0x71')][_0x5897('0x5a')](_['defaults'](_0x3c9319['body'],{'firstName':_0x3c9319[_0x5897('0x5b')]['to'][0x0],'phone':_0x3c9319['body']['to'][0x0],'fax':_0x3c9319['body']['to'][0x0],'ListId':_0x23777b[_0x5897('0xab')]}));}}else{throw new Error(_0x5897('0xac'));}}else{throw new Error(_0x5897('0xad'));}})[_0x5897('0x20')](function(_0x3a1c29){if(_0x3a1c29){return db[_0x5897('0x6f')][_0x5897('0x59')]({'where':{'ContactId':_0x3a1c29['id'],'closed':![],'FaxAccountId':_0x23777b['id']}})[_0x5897('0x20')](function(_0x415c65){if(_0x415c65){return[_0x415c65,![]];}return db[_0x5897('0x6f')]['create']({'UserId':_0x3c9319['user']['id'],'ContactId':_0x3a1c29['id'],'FaxAccountId':_0x23777b['id'],'fax':_0x3c9319[_0x5897('0x5b')]['to'][0x0],'firstMsgDirection':_0x5897('0xae'),'Messages':[_[_0x5897('0x51')](_0x3c9319[_0x5897('0x5b')],{'read':![],'body':_0x3c9319[_0x5897('0x5b')]['attachments'][0x0][_0x5897('0xaf')],'FaxAccountId':_0x23777b['id'],'UserId':_0x3c9319['user']['id'],'ContactId':_0x3a1c29['id'],'AttachmentId':_0x3c9319[_0x5897('0x5b')][_0x5897('0xa3')][0x0]['id']})]},{'include':[{'model':db[_0x5897('0x9c')],'as':_0x5897('0xb0')}]})[_0x5897('0x20')](function(_0x589845){return[_0x589845,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})['spread'](function(_0x18340a,_0x3e0320){if(_0x3e0320){return _0x18340a;}return db[_0x5897('0x9c')]['create']({'direction':_0x5897('0xae'),'read':![],'body':_0x3c9319['body'][_0x5897('0xa3')][0x0]['filename'],'FaxAccountId':_0x23777b['id'],'FaxInteractionId':_0x18340a['id'],'UserId':_0x3c9319[_0x5897('0x5c')]['id'],'ContactId':_0x18340a[_0x5897('0xb1')],'AttachmentId':_0x3c9319[_0x5897('0x5b')][_0x5897('0xa3')][0x0]['id']})[_0x5897('0x20')](function(_0x41aef4){_0x18340a[_0x5897('0xb2')]['Messages']=[];_0x18340a[_0x5897('0xb2')][_0x5897('0xb0')][_0x5897('0x89')](_0x41aef4[_0x5897('0xb2')]);return _0x18340a;});})['then'](function(_0x2e300d){respondWithRpcPromise(_0x5897('0xb3'),_0x5897('0xb3'),{'FaxAccountId':_[_0x5897('0xa6')](_0x3c9319[_0x5897('0x57')]['id'])?undefined:_0x3c9319['params']['id'],'path':_[_0x5897('0xa6')](_0x3c9319[_0x5897('0x5b')]['attachments'][0x0][_0x5897('0x5')])?undefined:_0x3c9319['body'][_0x5897('0xa3')][0x0][_0x5897('0x5')],'fax':_[_0x5897('0xa6')](_0x3c9319['body']['to'][0x0])?undefined:_0x3c9319[_0x5897('0x5b')]['to'][0x0],'AttachmentId':_0x3c9319[_0x5897('0x5b')][_0x5897('0xa3')][0x0]['id']},client9002)['then'](function(_0x131682){logger[_0x5897('0x21')]('SendFaxRpc,\x20%s',_0x131682);})['catch'](function(_0x48ded5){logger[_0x5897('0x21')]('SendFaxRpc,\x20%s',_0x48ded5);});return _0x2e300d;})['then'](respondWithResult(_0x1d60cf,null))[_0x5897('0x2a')](handleError(_0x1d60cf,null));};exports[_0x5897('0xb4')]=function(_0x455885,_0x222dbe,_0x2bf14e){return db[_0x5897('0x40')][_0x5897('0x59')]({'where':{'id':_0x455885['params']['id']}})['then'](handleEntityNotFound(_0x222dbe,null))[_0x5897('0x20')](function(_0x557233){if(_0x557233){return _0x557233[_0x5897('0xb4')](_0x455885['body']['ids'],_[_0x5897('0x95')](_0x455885[_0x5897('0x5b')],[_0x5897('0x6a'),'id'])||{})['spread'](function(_0x487bbe){for(var _0x531599=0x0;_0x531599<_0x455885['body'][_0x5897('0x6a')]['length'];_0x531599+=0x1){socket[_0x5897('0xb5')]('userFaxAccount:save',{'UserId':Number(_0x455885[_0x5897('0x5b')][_0x5897('0x6a')][_0x531599]),'FaxAccountId':Number(_0x455885[_0x5897('0x57')]['id'])});}return _0x487bbe;});}})['then'](respondWithResult(_0x222dbe,null))[_0x5897('0x2a')](handleError(_0x222dbe,null));};exports[_0x5897('0xb6')]=function(_0x275bd5,_0x3f8bb0,_0x45d953){return db[_0x5897('0x40')]['find']({'where':{'id':_0x275bd5[_0x5897('0x57')]['id']}})[_0x5897('0x20')](handleEntityNotFound(_0x3f8bb0,null))['then'](function(_0x12b66c){if(_0x12b66c){return _0x12b66c[_0x5897('0xb6')](_0x275bd5[_0x5897('0x45')][_0x5897('0x6a')])[_0x5897('0x20')](function(){if(_['isArray'](_0x275bd5['query']['ids'])){for(var _0x3d7d7b=0x0;_0x3d7d7b<_0x275bd5['query']['ids'][_0x5897('0x49')];_0x3d7d7b+=0x1){socket[_0x5897('0xb5')](_0x5897('0xb7'),{'UserId':Number(_0x275bd5[_0x5897('0x45')][_0x5897('0x6a')][_0x3d7d7b]),'FaxAccountId':Number(_0x275bd5['params']['id'])});}}else{socket[_0x5897('0xb5')](_0x5897('0xb7'),{'UserId':Number(_0x275bd5['query']['ids']),'FaxAccountId':Number(_0x275bd5[_0x5897('0x57')]['id'])});}});}})[_0x5897('0x20')](respondWithStatusCode(_0x3f8bb0,null))[_0x5897('0x2a')](handleError(_0x3f8bb0,null));};exports[_0x5897('0xb8')]=function(_0x1ea59d,_0x4c1e92,_0x54d9da){var _0x30f03d={};var _0xe54a60={};var _0x45c66d;var _0x94e78d;return db['FaxAccount']['findOne']({'where':{'id':_0x1ea59d[_0x5897('0x57')]['id']}})[_0x5897('0x20')](handleEntityNotFound(_0x4c1e92,null))[_0x5897('0x20')](function(_0x4ff349){if(_0x4ff349){_0x45c66d=_0x4ff349;_0xe54a60[_0x5897('0x42')]=_[_0x5897('0x44')](db[_0x5897('0x73')][_0x5897('0x41')]);_0xe54a60[_0x5897('0x45')]=_[_0x5897('0x44')](_0x1ea59d['query']);_0xe54a60[_0x5897('0x4e')]=_[_0x5897('0x46')](_0xe54a60['model'],_0xe54a60[_0x5897('0x45')]);_0x30f03d[_0x5897('0x47')]=_[_0x5897('0x46')](_0xe54a60[_0x5897('0x42')],qs[_0x5897('0x48')](_0x1ea59d['query'][_0x5897('0x48')]));_0x30f03d['attributes']=_0x30f03d[_0x5897('0x47')][_0x5897('0x49')]?_0x30f03d[_0x5897('0x47')]:_0xe54a60['model'];_0x30f03d[_0x5897('0x4b')]=qs['sort'](_0x1ea59d[_0x5897('0x45')][_0x5897('0x4c')]);_0x30f03d[_0x5897('0x4d')]=qs[_0x5897('0x4e')](_[_0x5897('0x4f')](_0x1ea59d[_0x5897('0x45')],_0xe54a60[_0x5897('0x4e')]));if(_0x1ea59d[_0x5897('0x45')][_0x5897('0x50')]){_0x30f03d[_0x5897('0x4d')]=_['merge'](_0x30f03d[_0x5897('0x4d')],{'$or':_['map'](_0x30f03d[_0x5897('0x47')],function(_0xd39ff2){var _0x550df5={};_0x550df5[_0xd39ff2]={'$like':'%'+_0x1ea59d[_0x5897('0x45')][_0x5897('0x50')]+'%'};return _0x550df5;})});}_0x30f03d=_[_0x5897('0x51')]({},_0x30f03d,_0x1ea59d[_0x5897('0x52')]);return _0x45c66d[_0x5897('0xb8')](_0x30f03d);}})[_0x5897('0x20')](function(_0x34b632){if(_0x34b632){_0x94e78d=_0x34b632[_0x5897('0x49')];if(!_0x1ea59d[_0x5897('0x45')][_0x5897('0x4a')](_0x5897('0x69'))){_0x30f03d[_0x5897('0x2f')]=qs['limit'](_0x1ea59d[_0x5897('0x45')][_0x5897('0x2f')]);_0x30f03d['offset']=qs[_0x5897('0x31')](_0x1ea59d['query']['offset']);}return _0x45c66d[_0x5897('0xb8')](_0x30f03d);}})[_0x5897('0x20')](function(_0x391038){if(_0x391038){return _0x391038?{'count':_0x94e78d,'rows':_0x391038}:null;}})[_0x5897('0x20')](respondWithResult(_0x4c1e92,null))['catch'](handleError(_0x4c1e92,null));};
\ No newline at end of file
+var _0x88a2=['apply','reject','update','destroy','get','FaxAccounts','stack','name','send','index','Pause','map','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','filters','pick','filter','merge','where','options','includeAll','include','FaxAccount','show','params','mandatoryDispositionPause','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','FaxAccountId','Disposition','getDispositions','findOne','nolimit','rows','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','findAll','removeAnswers','addInteraction','FaxInteraction','getInteractions','CmContact','Contact','User','fullname','Tags','tag','addApplications','sequelize','transaction','FaxApplication','bulkCreate','findAndCountAll','priority','getApplications','from-voip-provider','exten','localstationid','app','system','description','push','Set','ecm','faxdetect','headerinfo','minrate','modem','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','createdAt','updatedAt','TrunkId','findById','getMessages','FaxMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','CmList','List','Contacts','DESC','attachments','join','root','basename','CheckAfterSend','isNil','from','fax','defaults','ListId','List\x20not\x20found','Send\x20Fax\x20failed','out','filename','spread','ContactId','dataValues','Messages','SendFax','SendFaxRpc,\x20%s','addAgents','emit','removeAgents','userFaxAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','jayson/promise','client','http','request','then','FaxAccount,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','info','result','catch','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range'];(function(_0x541856,_0x5a1a2c){var _0x51bceb=function(_0x38080a){while(--_0x38080a){_0x541856['push'](_0x541856['shift']());}};_0x51bceb(++_0x5a1a2c);}(_0x88a2,0x148));var _0x288a=function(_0x61df12,_0x248233){_0x61df12=_0x61df12-0x0;var _0xec518c=_0x88a2[_0x61df12];return _0xec518c;};'use strict';var emlformat=require(_0x288a('0x0'));var rimraf=require(_0x288a('0x1'));var zipdir=require(_0x288a('0x2'));var jsonpatch=require(_0x288a('0x3'));var rp=require('request-promise');var moment=require(_0x288a('0x4'));var BPromise=require(_0x288a('0x5'));var Mustache=require(_0x288a('0x6'));var util=require(_0x288a('0x7'));var path=require(_0x288a('0x8'));var sox=require('sox');var csv=require(_0x288a('0x9'));var ejs=require(_0x288a('0xa'));var fs=require('fs');var fs_extra=require(_0x288a('0xb'));var _=require(_0x288a('0xc'));var squel=require('squel');var crypto=require(_0x288a('0xd'));var jsforce=require(_0x288a('0xe'));var deskjs=require(_0x288a('0xf'));var toCsv=require(_0x288a('0x9'));var querystring=require(_0x288a('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x288a('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x288a('0x12'));var hardwareService=require(_0x288a('0x13'));var logger=require('../../config/logger')(_0x288a('0x14'));var utils=require(_0x288a('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x288a('0x16'));var db=require(_0x288a('0x17'))['db'];config[_0x288a('0x18')]=_['defaults'](config[_0x288a('0x18')],{'host':_0x288a('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x288a('0x18')]));require('./faxAccount.socket')['register'](socket);var jayson=require(_0x288a('0x1a'));var client=jayson[_0x288a('0x1b')]['http']({'port':0x232c});var client9002=jayson['client'][_0x288a('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x20c1e2,_0x46e38e,_0x5c9603,_0x3197df){return new BPromise(function(_0x2eee15,_0x976cfd){var _0x13aed1=_0x3197df||client;return _0x13aed1[_0x288a('0x1d')](_0x20c1e2,_0x5c9603)[_0x288a('0x1e')](function(_0x15318a){logger['info'](_0x288a('0x1f'),_0x46e38e,'request\x20sent');logger[_0x288a('0x20')]('FaxAccount,\x20%s,\x20%s,\x20%s',_0x46e38e,_0x288a('0x21'),JSON[_0x288a('0x22')](_0x15318a));if(_0x15318a[_0x288a('0x23')]){if(_0x15318a[_0x288a('0x23')]['code']===0x1f4){logger[_0x288a('0x23')](_0x288a('0x1f'),_0x46e38e,_0x15318a['error'][_0x288a('0x24')]);return _0x976cfd(_0x15318a['error']['message']);}logger[_0x288a('0x23')](_0x288a('0x1f'),_0x46e38e,_0x15318a[_0x288a('0x23')]['message']);return _0x2eee15(_0x15318a[_0x288a('0x23')][_0x288a('0x24')]);}else{logger[_0x288a('0x25')](_0x288a('0x1f'),_0x46e38e,_0x288a('0x21'));_0x2eee15(_0x15318a[_0x288a('0x26')]['message']);}})[_0x288a('0x27')](function(_0x3dab93){logger[_0x288a('0x23')](_0x288a('0x1f'),_0x46e38e,_0x3dab93);_0x976cfd(_0x3dab93);});});}function respondWithStatusCode(_0x3b585e,_0x1a5aa6){_0x1a5aa6=_0x1a5aa6||0xcc;return function(_0xccf426){if(_0xccf426){return _0x3b585e[_0x288a('0x28')](_0x1a5aa6);}return _0x3b585e['status'](_0x1a5aa6)[_0x288a('0x29')]();};}function respondWithResult(_0x2a7aa4,_0x4098e1){_0x4098e1=_0x4098e1||0xc8;return function(_0x1eb770){if(_0x1eb770){return _0x2a7aa4['status'](_0x4098e1)[_0x288a('0x2a')](_0x1eb770);}};}function respondWithFilteredResult(_0x4c4a66,_0x503965){return function(_0x348f27){if(_0x348f27){var _0xde699c=typeof _0x503965[_0x288a('0x2b')]===_0x288a('0x2c')&&typeof _0x503965[_0x288a('0x2d')]===_0x288a('0x2c');var _0x597746=_0x348f27[_0x288a('0x2e')];var _0x4903a6=_0xde699c?0x0:_0x503965[_0x288a('0x2b')];var _0x1f5c93=_0xde699c?_0x348f27['count']:_0x503965['offset']+_0x503965[_0x288a('0x2d')];var _0x4f8008;if(_0x1f5c93>=_0x597746){_0x1f5c93=_0x597746;_0x4f8008=0xc8;}else{_0x4f8008=0xce;}_0x4c4a66[_0x288a('0x2f')](_0x4f8008);return _0x4c4a66[_0x288a('0x30')](_0x288a('0x31'),_0x4903a6+'-'+_0x1f5c93+'/'+_0x597746)['json'](_0x348f27);}return null;};}function patchUpdates(_0x48b892){return function(_0x21acdc){try{jsonpatch[_0x288a('0x32')](_0x21acdc,_0x48b892,!![]);}catch(_0xac7e12){return BPromise[_0x288a('0x33')](_0xac7e12);}return _0x21acdc['save']();};}function saveUpdates(_0x33775f,_0x3991b6){return function(_0x181fff){if(_0x181fff){return _0x181fff[_0x288a('0x34')](_0x33775f)[_0x288a('0x1e')](function(_0x380ba4){return _0x380ba4;});}return null;};}function removeEntity(_0x8ef8ac,_0x1a6989){return function(_0x528315){if(_0x528315){return _0x528315[_0x288a('0x35')]()[_0x288a('0x1e')](function(){var _0x1b175c=_0x528315[_0x288a('0x36')]({'plain':!![]});var _0x3f43d1=_0x288a('0x37');return db['UserProfileResource'][_0x288a('0x35')]({'where':{'type':_0x3f43d1,'resourceId':_0x1b175c['id']}})[_0x288a('0x1e')](function(){return _0x528315;});})[_0x288a('0x1e')](function(){_0x8ef8ac[_0x288a('0x2f')](0xcc)[_0x288a('0x29')]();});}};}function handleEntityNotFound(_0xa59a98,_0x4dc08f){return function(_0xe8bd37){if(!_0xe8bd37){_0xa59a98[_0x288a('0x28')](0x194);}return _0xe8bd37;};}function handleError(_0x452241,_0x4bb2fb){_0x4bb2fb=_0x4bb2fb||0x1f4;return function(_0x312292){logger[_0x288a('0x23')](_0x312292[_0x288a('0x38')]);if(_0x312292[_0x288a('0x39')]){delete _0x312292['name'];}_0x452241[_0x288a('0x2f')](_0x4bb2fb)[_0x288a('0x3a')](_0x312292);};}exports[_0x288a('0x3b')]=function(_0x1a16ea,_0x130928){var _0x1d4e2d={'include':[{'model':db[_0x288a('0x3c')],'as':'mandatoryDispositionPause'}]},_0xe50288={},_0x2bf43e={'count':0x0,'rows':[]};var _0x140e71=_[_0x288a('0x3d')](db['FaxAccount'][_0x288a('0x3e')],function(_0x34333a){return{'name':_0x34333a['fieldName'],'type':_0x34333a[_0x288a('0x3f')][_0x288a('0x40')]};});_0xe50288[_0x288a('0x41')]=_[_0x288a('0x3d')](_0x140e71,'name');_0xe50288[_0x288a('0x42')]=_[_0x288a('0x43')](_0x1a16ea[_0x288a('0x42')]);_0xe50288['filters']=_[_0x288a('0x44')](_0xe50288[_0x288a('0x41')],_0xe50288[_0x288a('0x42')]);_0x1d4e2d[_0x288a('0x45')]=_[_0x288a('0x44')](_0xe50288['model'],qs[_0x288a('0x46')](_0x1a16ea['query'][_0x288a('0x46')]));_0x1d4e2d[_0x288a('0x45')]=_0x1d4e2d[_0x288a('0x45')][_0x288a('0x47')]?_0x1d4e2d[_0x288a('0x45')]:_0xe50288[_0x288a('0x41')];if(!_0x1a16ea[_0x288a('0x42')][_0x288a('0x48')]('nolimit')){_0x1d4e2d[_0x288a('0x2d')]=qs[_0x288a('0x2d')](_0x1a16ea[_0x288a('0x42')][_0x288a('0x2d')]);_0x1d4e2d['offset']=qs[_0x288a('0x2b')](_0x1a16ea[_0x288a('0x42')]['offset']);}_0x1d4e2d[_0x288a('0x49')]=qs[_0x288a('0x4a')](_0x1a16ea[_0x288a('0x42')][_0x288a('0x4a')]);_0x1d4e2d['where']=qs[_0x288a('0x4b')](_[_0x288a('0x4c')](_0x1a16ea[_0x288a('0x42')],_0xe50288[_0x288a('0x4b')]),_0x140e71);if(_0x1a16ea[_0x288a('0x42')][_0x288a('0x4d')]){_0x1d4e2d['where']=_[_0x288a('0x4e')](_0x1d4e2d[_0x288a('0x4f')],{'$or':_['map'](_0x140e71,function(_0x197761){if(_0x197761[_0x288a('0x3f')]!=='VIRTUAL'){var _0x131e90={};_0x131e90[_0x197761['name']]={'$like':'%'+_0x1a16ea[_0x288a('0x42')][_0x288a('0x4d')]+'%'};return _0x131e90;}})});}_0x1d4e2d=_[_0x288a('0x4e')]({},_0x1d4e2d,_0x1a16ea[_0x288a('0x50')]);var _0x193318={'where':_0x1d4e2d[_0x288a('0x4f')]};return db['FaxAccount'][_0x288a('0x2e')](_0x193318)[_0x288a('0x1e')](function(_0x573f44){_0x2bf43e['count']=_0x573f44;if(_0x1a16ea[_0x288a('0x42')][_0x288a('0x51')]){_0x1d4e2d[_0x288a('0x52')]=[{'all':!![]}];}return db[_0x288a('0x53')]['findAll'](_0x1d4e2d);})['then'](function(_0x1d5719){_0x2bf43e['rows']=_0x1d5719;return _0x2bf43e;})[_0x288a('0x1e')](respondWithFilteredResult(_0x130928,_0x1d4e2d))[_0x288a('0x27')](handleError(_0x130928,null));};exports[_0x288a('0x54')]=function(_0x158bb2,_0x2b8f79){var _0x2509db={'raw':![],'where':{'id':_0x158bb2[_0x288a('0x55')]['id']},'include':[{'model':db[_0x288a('0x3c')],'as':_0x288a('0x56')}]},_0x631fbf={};_0x631fbf[_0x288a('0x41')]=_[_0x288a('0x43')](db['FaxAccount']['rawAttributes']);_0x631fbf[_0x288a('0x42')]=_[_0x288a('0x43')](_0x158bb2[_0x288a('0x42')]);_0x631fbf[_0x288a('0x4b')]=_[_0x288a('0x44')](_0x631fbf[_0x288a('0x41')],_0x631fbf[_0x288a('0x42')]);_0x2509db[_0x288a('0x45')]=_[_0x288a('0x44')](_0x631fbf[_0x288a('0x41')],qs[_0x288a('0x46')](_0x158bb2[_0x288a('0x42')][_0x288a('0x46')]));_0x2509db[_0x288a('0x45')]=_0x2509db[_0x288a('0x45')][_0x288a('0x47')]?_0x2509db[_0x288a('0x45')]:_0x631fbf[_0x288a('0x41')];if(_0x158bb2[_0x288a('0x42')]['includeAll']){_0x2509db[_0x288a('0x52')]=[{'all':!![]}];}_0x2509db=_[_0x288a('0x4e')]({},_0x2509db,_0x158bb2[_0x288a('0x50')]);return db[_0x288a('0x53')][_0x288a('0x57')](_0x2509db)['then'](handleEntityNotFound(_0x2b8f79,null))[_0x288a('0x1e')](respondWithResult(_0x2b8f79,null))[_0x288a('0x27')](handleError(_0x2b8f79,null));};exports['create']=function(_0x411014,_0x57c3c0){return db[_0x288a('0x53')][_0x288a('0x58')](_0x411014[_0x288a('0x59')],{})['then'](function(_0x3b5ecc){var _0x7923d0=_0x411014[_0x288a('0x5a')][_0x288a('0x36')]({'plain':!![]});if(!_0x7923d0)throw new Error(_0x288a('0x5b'));if(_0x7923d0[_0x288a('0x5c')]===_0x288a('0x5a')){var _0x49d3da=_0x3b5ecc[_0x288a('0x36')]({'plain':!![]});var _0x1dbff7=_0x288a('0x37');return db[_0x288a('0x5d')]['find']({'where':{'name':_0x1dbff7,'userProfileId':_0x7923d0['userProfileId']},'raw':!![]})[_0x288a('0x1e')](function(_0x26532a){if(_0x26532a&&_0x26532a[_0x288a('0x5e')]===0x0){return db[_0x288a('0x5f')]['create']({'name':_0x49d3da[_0x288a('0x39')],'resourceId':_0x49d3da['id'],'type':_0x26532a[_0x288a('0x39')],'sectionId':_0x26532a['id']},{})['then'](function(){return _0x3b5ecc;});}else{return _0x3b5ecc;}})[_0x288a('0x27')](function(_0x44e2b9){logger['error'](_0x288a('0x60'),_0x44e2b9);throw _0x44e2b9;});}return _0x3b5ecc;})['then'](respondWithResult(_0x57c3c0,0xc9))[_0x288a('0x27')](handleError(_0x57c3c0,null));};exports['update']=function(_0x44e621,_0x3d6420){if(_0x44e621['body']['id']){delete _0x44e621[_0x288a('0x59')]['id'];}return db[_0x288a('0x53')][_0x288a('0x57')]({'where':{'id':_0x44e621[_0x288a('0x55')]['id']},'include':[{'model':db[_0x288a('0x3c')],'as':_0x288a('0x56')}]})['then'](handleEntityNotFound(_0x3d6420,null))[_0x288a('0x1e')](saveUpdates(_0x44e621['body'],null))[_0x288a('0x1e')](respondWithResult(_0x3d6420,null))[_0x288a('0x27')](handleError(_0x3d6420,null));};exports[_0x288a('0x35')]=function(_0x336b14,_0x4f0b23){return db[_0x288a('0x53')][_0x288a('0x57')]({'where':{'id':_0x336b14[_0x288a('0x55')]['id']}})[_0x288a('0x1e')](handleEntityNotFound(_0x4f0b23,null))[_0x288a('0x1e')](removeEntity(_0x4f0b23,null))['catch'](handleError(_0x4f0b23,null));};exports[_0x288a('0x61')]=function(_0x37a068,_0x45b3b1){return db[_0x288a('0x53')][_0x288a('0x61')]()['then'](respondWithResult(_0x45b3b1,null))[_0x288a('0x27')](handleError(_0x45b3b1,null));};exports[_0x288a('0x62')]=function(_0x504ea3,_0x5869ca,_0x3c636e){if(_0x504ea3[_0x288a('0x59')]['id']){delete _0x504ea3['body']['id'];}return db[_0x288a('0x53')][_0x288a('0x57')]({'where':{'id':_0x504ea3[_0x288a('0x55')]['id']}})[_0x288a('0x1e')](handleEntityNotFound(_0x5869ca,null))[_0x288a('0x1e')](function(_0x15d36a){if(_0x15d36a){_0x504ea3[_0x288a('0x59')][_0x288a('0x63')]=_0x15d36a['id'];return db[_0x288a('0x64')][_0x288a('0x58')](_0x504ea3[_0x288a('0x59')]);}})[_0x288a('0x1e')](respondWithResult(_0x5869ca,null))[_0x288a('0x27')](handleError(_0x5869ca,null));};exports[_0x288a('0x65')]=function(_0x490519,_0x440ed0,_0x3775a7){var _0x33144c={'raw':![],'where':{}};var _0x2fe036={};var _0x5b4237={'count':0x0,'rows':[]};return db[_0x288a('0x53')][_0x288a('0x66')]({'where':{'id':_0x490519['params']['id']}})[_0x288a('0x1e')](handleEntityNotFound(_0x440ed0,null))[_0x288a('0x1e')](function(_0xd29140){if(_0xd29140){_0x2fe036[_0x288a('0x41')]=_['keys'](db[_0x288a('0x64')]['rawAttributes']);_0x2fe036[_0x288a('0x42')]=_[_0x288a('0x43')](_0x490519[_0x288a('0x42')]);_0x2fe036[_0x288a('0x4b')]=_[_0x288a('0x44')](_0x2fe036[_0x288a('0x41')],_0x2fe036[_0x288a('0x42')]);_0x33144c[_0x288a('0x45')]=_[_0x288a('0x44')](_0x2fe036[_0x288a('0x41')],qs[_0x288a('0x46')](_0x490519[_0x288a('0x42')][_0x288a('0x46')]));_0x33144c[_0x288a('0x45')]=_0x33144c['attributes'][_0x288a('0x47')]?_0x33144c['attributes']:_0x2fe036[_0x288a('0x41')];if(!_0x490519[_0x288a('0x42')][_0x288a('0x48')](_0x288a('0x67'))){_0x33144c[_0x288a('0x2d')]=qs['limit'](_0x490519[_0x288a('0x42')][_0x288a('0x2d')]);_0x33144c[_0x288a('0x2b')]=qs[_0x288a('0x2b')](_0x490519[_0x288a('0x42')][_0x288a('0x2b')]);}_0x33144c['order']=qs['sort'](_0x490519['query'][_0x288a('0x4a')]);_0x33144c['where']=qs[_0x288a('0x4b')](_[_0x288a('0x4c')](_0x490519[_0x288a('0x42')],_0x2fe036[_0x288a('0x4b')]));_0x33144c[_0x288a('0x4f')][_0x288a('0x63')]=_0xd29140['id'];if(_0x490519['query']['filter']){_0x33144c['where']=_[_0x288a('0x4e')](_0x33144c[_0x288a('0x4f')],{'$or':_[_0x288a('0x3d')](_0x33144c['attributes'],function(_0x4f0477){var _0x33e116={};_0x33e116[_0x4f0477]={'$like':'%'+_0x490519[_0x288a('0x42')][_0x288a('0x4d')]+'%'};return _0x33e116;})});}_0x33144c=_[_0x288a('0x4e')]({},_0x33144c,_0x490519[_0x288a('0x50')]);return db[_0x288a('0x64')][_0x288a('0x2e')]({'where':_0x33144c[_0x288a('0x4f')]})['then'](function(_0x32152a){_0x5b4237['count']=_0x32152a;if(_0x490519[_0x288a('0x42')]['includeAll']){_0x33144c['include']=[{'all':!![]}];}return db[_0x288a('0x64')]['findAll'](_0x33144c);})[_0x288a('0x1e')](function(_0x163256){_0x5b4237[_0x288a('0x68')]=_0x163256;return _0x5b4237;});}})[_0x288a('0x1e')](respondWithFilteredResult(_0x440ed0,_0x33144c))[_0x288a('0x27')](handleError(_0x440ed0,null));};exports[_0x288a('0x69')]=function(_0x557e51,_0x1c9e12,_0xb3acd7){return db[_0x288a('0x53')]['find']({'where':{'id':_0x557e51[_0x288a('0x55')]['id']}})[_0x288a('0x1e')](handleEntityNotFound(_0x1c9e12,null))[_0x288a('0x1e')](function(_0x567a24){if(_0x567a24){return _0x567a24['removeDispositions'](_0x557e51[_0x288a('0x42')][_0x288a('0x6a')]);}})[_0x288a('0x1e')](respondWithStatusCode(_0x1c9e12,null))[_0x288a('0x27')](handleError(_0x1c9e12,null));};exports[_0x288a('0x6b')]=function(_0x588c50,_0x3f23a7,_0x4cc39a){if(_0x588c50[_0x288a('0x59')]['id']){delete _0x588c50['body']['id'];}return db[_0x288a('0x53')][_0x288a('0x57')]({'where':{'id':_0x588c50[_0x288a('0x55')]['id']}})[_0x288a('0x1e')](handleEntityNotFound(_0x3f23a7,null))[_0x288a('0x1e')](function(_0x5452fd){if(_0x5452fd){_0x588c50['body']['FaxAccountId']=_0x5452fd['id'];return db['CannedAnswer'][_0x288a('0x58')](_0x588c50[_0x288a('0x59')]);}})['then'](respondWithResult(_0x3f23a7,null))[_0x288a('0x27')](handleError(_0x3f23a7,null));};exports[_0x288a('0x6c')]=function(_0x50a967,_0x22ede4,_0x4e7b7c){var _0x266f68={'raw':![],'where':{}};var _0x5ef4a1={};var _0x30fa37={'count':0x0,'rows':[]};return db[_0x288a('0x53')]['findOne']({'where':{'id':_0x50a967[_0x288a('0x55')]['id']}})['then'](handleEntityNotFound(_0x22ede4,null))['then'](function(_0x59ec35){if(_0x59ec35){_0x5ef4a1[_0x288a('0x41')]=_[_0x288a('0x43')](db[_0x288a('0x6d')][_0x288a('0x3e')]);_0x5ef4a1['query']=_[_0x288a('0x43')](_0x50a967[_0x288a('0x42')]);_0x5ef4a1[_0x288a('0x4b')]=_[_0x288a('0x44')](_0x5ef4a1[_0x288a('0x41')],_0x5ef4a1[_0x288a('0x42')]);_0x266f68[_0x288a('0x45')]=_[_0x288a('0x44')](_0x5ef4a1[_0x288a('0x41')],qs[_0x288a('0x46')](_0x50a967[_0x288a('0x42')][_0x288a('0x46')]));_0x266f68[_0x288a('0x45')]=_0x266f68[_0x288a('0x45')][_0x288a('0x47')]?_0x266f68[_0x288a('0x45')]:_0x5ef4a1[_0x288a('0x41')];if(!_0x50a967[_0x288a('0x42')][_0x288a('0x48')](_0x288a('0x67'))){_0x266f68[_0x288a('0x2d')]=qs[_0x288a('0x2d')](_0x50a967[_0x288a('0x42')]['limit']);_0x266f68[_0x288a('0x2b')]=qs[_0x288a('0x2b')](_0x50a967[_0x288a('0x42')][_0x288a('0x2b')]);}_0x266f68[_0x288a('0x49')]=qs[_0x288a('0x4a')](_0x50a967[_0x288a('0x42')]['sort']);_0x266f68[_0x288a('0x4f')]=qs[_0x288a('0x4b')](_[_0x288a('0x4c')](_0x50a967['query'],_0x5ef4a1[_0x288a('0x4b')]));_0x266f68[_0x288a('0x4f')]['FaxAccountId']=_0x59ec35['id'];if(_0x50a967[_0x288a('0x42')]['filter']){_0x266f68[_0x288a('0x4f')]=_[_0x288a('0x4e')](_0x266f68[_0x288a('0x4f')],{'$or':_[_0x288a('0x3d')](_0x266f68[_0x288a('0x45')],function(_0x43fab7){var _0x3af584={};_0x3af584[_0x43fab7]={'$like':'%'+_0x50a967['query'][_0x288a('0x4d')]+'%'};return _0x3af584;})});}_0x266f68=_[_0x288a('0x4e')]({},_0x266f68,_0x50a967[_0x288a('0x50')]);return db[_0x288a('0x6d')]['count']({'where':_0x266f68['where']})[_0x288a('0x1e')](function(_0x502da1){_0x30fa37[_0x288a('0x2e')]=_0x502da1;if(_0x50a967[_0x288a('0x42')][_0x288a('0x51')]){_0x266f68[_0x288a('0x52')]=[{'all':!![]}];}return db['CannedAnswer'][_0x288a('0x6e')](_0x266f68);})['then'](function(_0x36411c){_0x30fa37[_0x288a('0x68')]=_0x36411c;return _0x30fa37;});}})[_0x288a('0x1e')](respondWithFilteredResult(_0x22ede4,_0x266f68))[_0x288a('0x27')](handleError(_0x22ede4,null));};exports['removeAnswers']=function(_0x5882ad,_0x6dc444,_0x1eb06c){return db[_0x288a('0x53')]['find']({'where':{'id':_0x5882ad[_0x288a('0x55')]['id']}})[_0x288a('0x1e')](handleEntityNotFound(_0x6dc444,null))[_0x288a('0x1e')](function(_0x59d8d2){if(_0x59d8d2){return _0x59d8d2[_0x288a('0x6f')](_0x5882ad[_0x288a('0x42')][_0x288a('0x6a')]);}})['then'](respondWithStatusCode(_0x6dc444,null))[_0x288a('0x27')](handleError(_0x6dc444,null));};exports[_0x288a('0x70')]=function(_0x1d5883,_0x1d46f8,_0x1c14dd){return db[_0x288a('0x71')][_0x288a('0x57')]({'where':{'id':_0x1d5883[_0x288a('0x55')]['id']}})[_0x288a('0x1e')](handleEntityNotFound(_0x1d46f8,null))[_0x288a('0x1e')](function(_0x41efde){if(_0x41efde){return _0x41efde[_0x288a('0x70')](_0x1d5883['body'][_0x288a('0x6a')],_['omit'](_0x1d5883[_0x288a('0x59')],[_0x288a('0x6a'),'id'])||{});}})[_0x288a('0x1e')](respondWithResult(_0x1d46f8,null))['catch'](handleError(_0x1d46f8,null));};exports[_0x288a('0x72')]=function(_0x969fa6,_0x5bd6aa,_0x25ed8d){var _0x447ef1={'raw':![],'where':{}};var _0x28494f={};var _0x4965f7={'count':0x0,'rows':[]};return db[_0x288a('0x53')][_0x288a('0x66')]({'where':{'id':_0x969fa6[_0x288a('0x55')]['id']}})['then'](handleEntityNotFound(_0x5bd6aa,null))[_0x288a('0x1e')](function(_0x4414f1){if(_0x4414f1){_0x28494f['model']=_[_0x288a('0x43')](db['FaxInteraction'][_0x288a('0x3e')]);_0x28494f['query']=_[_0x288a('0x43')](_0x969fa6[_0x288a('0x42')]);_0x28494f[_0x288a('0x4b')]=_['intersection'](_0x28494f['model'],_0x28494f[_0x288a('0x42')]);_0x447ef1[_0x288a('0x45')]=_[_0x288a('0x44')](_0x28494f[_0x288a('0x41')],qs[_0x288a('0x46')](_0x969fa6[_0x288a('0x42')][_0x288a('0x46')]));_0x447ef1['attributes']=_0x447ef1['attributes'][_0x288a('0x47')]?_0x447ef1[_0x288a('0x45')]:_0x28494f[_0x288a('0x41')];if(!_0x969fa6[_0x288a('0x42')][_0x288a('0x48')](_0x288a('0x67'))){_0x447ef1[_0x288a('0x2d')]=qs[_0x288a('0x2d')](_0x969fa6[_0x288a('0x42')][_0x288a('0x2d')]);_0x447ef1[_0x288a('0x2b')]=qs['offset'](_0x969fa6['query']['offset']);}_0x447ef1['order']=qs[_0x288a('0x4a')](_0x969fa6['query'][_0x288a('0x4a')]);_0x447ef1[_0x288a('0x4f')]=qs[_0x288a('0x4b')](_[_0x288a('0x4c')](_0x969fa6[_0x288a('0x42')],_0x28494f[_0x288a('0x4b')]));_0x447ef1[_0x288a('0x4f')][_0x288a('0x63')]=_0x4414f1['id'];if(_0x969fa6[_0x288a('0x42')][_0x288a('0x4d')]){_0x447ef1['where']=_[_0x288a('0x4e')](_0x447ef1[_0x288a('0x4f')],{'$or':_[_0x288a('0x3d')](_0x447ef1[_0x288a('0x45')],function(_0x3480b8){var _0x1c1e1f={};_0x1c1e1f[_0x3480b8]={'$like':'%'+_0x969fa6[_0x288a('0x42')][_0x288a('0x4d')]+'%'};return _0x1c1e1f;})});}_0x447ef1=_[_0x288a('0x4e')]({},_0x447ef1,_0x969fa6['options']);return db['FaxInteraction']['count']({'where':_0x447ef1[_0x288a('0x4f')]})[_0x288a('0x1e')](function(_0x21691){_0x4965f7[_0x288a('0x2e')]=_0x21691;if(_0x969fa6[_0x288a('0x42')][_0x288a('0x51')]){_0x447ef1[_0x288a('0x52')]=[{'model':db[_0x288a('0x73')],'as':_0x288a('0x74'),'required':![]},{'model':db[_0x288a('0x75')],'as':'Owner','attributes':[_0x288a('0x39'),_0x288a('0x76'),'internal'],'required':![]},{'model':db['Tag'],'as':_0x288a('0x77'),'attributes':['id',_0x288a('0x39'),'color'],'where':_0x969fa6[_0x288a('0x42')][_0x288a('0x78')]?{'id':_0x969fa6[_0x288a('0x42')][_0x288a('0x78')]}:undefined,'required':_0x969fa6[_0x288a('0x42')][_0x288a('0x78')]?!![]:![]}];}return db[_0x288a('0x71')][_0x288a('0x6e')](_0x447ef1);})[_0x288a('0x1e')](function(_0x1e7874){_0x4965f7['rows']=_0x1e7874;return _0x4965f7;});}})[_0x288a('0x1e')](respondWithFilteredResult(_0x5bd6aa,_0x447ef1))[_0x288a('0x27')](handleError(_0x5bd6aa,null));};exports[_0x288a('0x79')]=function(_0x319282,_0x200725,_0x452109){return db[_0x288a('0x53')][_0x288a('0x66')]({'where':{'id':_0x319282[_0x288a('0x55')]['id']}})[_0x288a('0x1e')](handleEntityNotFound(_0x200725,null))[_0x288a('0x1e')](function(_0x1a3449){if(_0x1a3449){return db[_0x288a('0x7a')][_0x288a('0x7b')](function(_0xfa5547){return db[_0x288a('0x7c')]['destroy']({'where':{'FaxAccountId':_0x319282[_0x288a('0x55')]['id']},'transaction':_0xfa5547})[_0x288a('0x1e')](function(_0x174ca9){var _0x4f1fa1=_['map'](_0x319282[_0x288a('0x59')],function(_0x38cc5b){_0x38cc5b[_0x288a('0x63')]=_0x319282[_0x288a('0x55')]['id'];return _0x38cc5b;});return db['FaxApplication'][_0x288a('0x7d')](_0x4f1fa1,{'transaction':_0xfa5547});});})[_0x288a('0x1e')](function(){return db[_0x288a('0x7c')][_0x288a('0x7e')]({'where':{'FaxAccountId':_0x319282['params']['id']},'order':_0x288a('0x7f')});});}})[_0x288a('0x1e')](respondWithResult(_0x200725,null))[_0x288a('0x27')](handleError(_0x200725,null));};exports[_0x288a('0x80')]=function(_0xd9e619,_0x1526c5,_0x36d9a9){var _0x5ee8cc={};var _0x52f03e={};var _0x3fe789;var _0x1ee296;return db['FaxAccount'][_0x288a('0x66')]({'where':{'id':_0xd9e619[_0x288a('0x55')]['id']}})[_0x288a('0x1e')](handleEntityNotFound(_0x1526c5,null))[_0x288a('0x1e')](function(_0x40dd53){if(_0x40dd53){_0x3fe789=_0x40dd53;_0x52f03e[_0x288a('0x41')]=_[_0x288a('0x43')](db[_0x288a('0x7c')][_0x288a('0x3e')]);_0x52f03e[_0x288a('0x42')]=_[_0x288a('0x43')](_0xd9e619['query']);_0x52f03e[_0x288a('0x4b')]=_[_0x288a('0x44')](_0x52f03e[_0x288a('0x41')],_0x52f03e['query']);_0x5ee8cc[_0x288a('0x45')]=_['intersection'](_0x52f03e[_0x288a('0x41')],qs[_0x288a('0x46')](_0xd9e619['query'][_0x288a('0x46')]));_0x5ee8cc[_0x288a('0x45')]=_0x5ee8cc[_0x288a('0x45')][_0x288a('0x47')]?_0x5ee8cc[_0x288a('0x45')]:_0x52f03e['model'];_0x5ee8cc['order']=qs[_0x288a('0x4a')](_0xd9e619[_0x288a('0x42')][_0x288a('0x4a')]);_0x5ee8cc[_0x288a('0x4f')]=qs[_0x288a('0x4b')](_[_0x288a('0x4c')](_0xd9e619[_0x288a('0x42')],_0x52f03e[_0x288a('0x4b')]));if(_0xd9e619[_0x288a('0x42')][_0x288a('0x4d')]){_0x5ee8cc[_0x288a('0x4f')]=_['merge'](_0x5ee8cc[_0x288a('0x4f')],{'$or':_['map'](_0x5ee8cc['attributes'],function(_0x3205fe){var _0x42c6ce={};_0x42c6ce[_0x3205fe]={'$like':'%'+_0xd9e619[_0x288a('0x42')][_0x288a('0x4d')]+'%'};return _0x42c6ce;})});}_0x5ee8cc=_[_0x288a('0x4e')]({},_0x5ee8cc,_0xd9e619['options']);return _0x3fe789[_0x288a('0x80')](_0x5ee8cc);}})[_0x288a('0x1e')](function(_0x4614f0){if(_0x4614f0){_0x1ee296=_0x4614f0['length'];if(!_0xd9e619[_0x288a('0x42')]['hasOwnProperty'](_0x288a('0x67'))){_0x5ee8cc[_0x288a('0x2d')]=qs[_0x288a('0x2d')](_0xd9e619['query'][_0x288a('0x2d')]);_0x5ee8cc[_0x288a('0x2b')]=qs[_0x288a('0x2b')](_0xd9e619[_0x288a('0x42')][_0x288a('0x2b')]);}return _0x3fe789[_0x288a('0x80')](_0x5ee8cc);}})[_0x288a('0x1e')](function(_0x14758d){if(_0x14758d){return _0x14758d?{'count':_0x1ee296,'rows':_0x14758d}:null;}})['then'](respondWithResult(_0x1526c5,null))[_0x288a('0x27')](handleError(_0x1526c5,null));};function Extension(_0x1739ce,_0x2ae2c5,_0x21903e,_0x19ac4e){this['context']=_0x288a('0x81');this[_0x288a('0x82')]=_0x1739ce[_0x288a('0x83')];this[_0x288a('0x84')]=_0x19ac4e;this[_0x288a('0x3f')]=_0x288a('0x85');this[_0x288a('0x86')]='Fax\x20Extension';this[_0x288a('0x63')]=_0x1739ce['id'];this[_0x288a('0x7f')]=_0x2ae2c5;this['appdata']=_0x21903e;}function createExtensionsReciveFax(_0x29e715){var _0x1fe622=0x1;var _0x11c8d3=[];_0x11c8d3[_0x288a('0x87')](new Extension(_0x29e715,_0x1fe622,'','Answer'));_0x1fe622+=0x1;_0x11c8d3[_0x288a('0x87')](new Extension(_0x29e715,_0x1fe622,'CDR(type)=inbound-fax',_0x288a('0x88')));_0x1fe622+=0x1;for(var _0x20e785 in _0x29e715){if(_0x29e715[_0x288a('0x48')](_0x20e785)&&(_0x20e785===_0x288a('0x89')||_0x20e785===_0x288a('0x83')||_0x20e785==='gateway'||_0x20e785===_0x288a('0x8a')||_0x20e785===_0x288a('0x8b')||_0x20e785==='maxrate'||_0x20e785===_0x288a('0x8c')||_0x20e785===_0x288a('0x8d')||_0x20e785==='t38timeout')){_0x11c8d3[_0x288a('0x87')](new Extension(_0x29e715,_0x1fe622,_0x288a('0x8e')+_0x20e785+')='+_0x29e715[_0x20e785],'Set'));_0x1fe622+=0x1;}}_0x11c8d3[_0x288a('0x87')](new Extension(_0x29e715,_0x1fe622,'6',_0x288a('0x8f')));_0x1fe622+=0x1;_0x11c8d3['push'](new Extension(_0x29e715,_0x1fe622,_0x288a('0x90'),_0x288a('0x91')));_0x1fe622=0x0;return _0x11c8d3;}exports[_0x288a('0x92')]=function(_0xbd0891,_0x49b384,_0x312458){var _0x23cfff;return db['sequelize'][_0x288a('0x7b')](function(_0x3211e8){return db[_0x288a('0x53')][_0x288a('0x58')](_0xbd0891[_0x288a('0x59')],{'transaction':_0x3211e8})['then'](function(_0x15b3cb){_0x23cfff=_0x15b3cb['get']({'plain':!![]});return db[_0x288a('0x93')]['bulkCreate'](createExtensionsReciveFax(_0x23cfff),{'transaction':_0x3211e8});});})[_0x288a('0x1e')](function(){return _0x23cfff;})['then'](respondWithResult(_0x49b384,null))['catch'](handleError(_0x49b384,null));};exports[_0x288a('0x94')]=function(_0x411570,_0x59ee53,_0x3ea7ea){var _0x163d93;return db[_0x288a('0x7a')][_0x288a('0x7b')](function(_0x3a41aa){return db[_0x288a('0x53')][_0x288a('0x34')](_0x411570[_0x288a('0x59')],{'where':{'id':_0x411570[_0x288a('0x59')]['id']},'transaction':_0x3a41aa})[_0x288a('0x1e')](function(_0x5720b0){return db[_0x288a('0x93')][_0x288a('0x35')]({'where':{'FaxAccountId':_0x411570[_0x288a('0x59')]['id']},'transaction':_0x3a41aa})['then'](function(_0x2700e8){return db[_0x288a('0x93')][_0x288a('0x7d')](createExtensionsReciveFax(_[_0x288a('0x95')](_0x411570['body'],['tech',_0x288a('0x40'),_0x288a('0x96'),_0x288a('0x97'),_0x288a('0x98'),'ListId'])),{'transaction':_0x3a41aa});});});})['then'](function(){return db[_0x288a('0x53')][_0x288a('0x99')](_0x411570['body']['id']);})[_0x288a('0x1e')](respondWithResult(_0x59ee53,null))['catch'](handleError(_0x59ee53,null));};exports[_0x288a('0x9a')]=function(_0x3f836b,_0x2e8251,_0x380703){var _0x246d7f={'raw':!![],'where':{}};var _0x3a155d={};var _0x5eaecc={'count':0x0,'rows':[]};return db[_0x288a('0x53')]['findOne']({'where':{'id':_0x3f836b[_0x288a('0x55')]['id']}})[_0x288a('0x1e')](handleEntityNotFound(_0x2e8251,null))[_0x288a('0x1e')](function(_0x270b7b){if(_0x270b7b){_0x3a155d['model']=_[_0x288a('0x43')](db[_0x288a('0x9b')][_0x288a('0x3e')]);_0x3a155d[_0x288a('0x42')]=_['keys'](_0x3f836b['query']);_0x3a155d[_0x288a('0x4b')]=_[_0x288a('0x44')](_0x3a155d[_0x288a('0x41')],_0x3a155d[_0x288a('0x42')]);_0x246d7f[_0x288a('0x45')]=_['intersection'](_0x3a155d['model'],qs[_0x288a('0x46')](_0x3f836b[_0x288a('0x42')][_0x288a('0x46')]));_0x246d7f[_0x288a('0x45')]=_0x246d7f[_0x288a('0x45')][_0x288a('0x47')]?_0x246d7f[_0x288a('0x45')]:_0x3a155d[_0x288a('0x41')];if(!_0x3f836b['query']['hasOwnProperty'](_0x288a('0x67'))){_0x246d7f[_0x288a('0x2d')]=qs[_0x288a('0x2d')](_0x3f836b[_0x288a('0x42')]['limit']);_0x246d7f['offset']=qs[_0x288a('0x2b')](_0x3f836b[_0x288a('0x42')][_0x288a('0x2b')]);}_0x246d7f[_0x288a('0x49')]=qs[_0x288a('0x4a')](_0x3f836b[_0x288a('0x42')][_0x288a('0x4a')]);_0x246d7f[_0x288a('0x4f')]=qs[_0x288a('0x4b')](_['pick'](_0x3f836b[_0x288a('0x42')],_0x3a155d['filters']));_0x246d7f['where'][_0x288a('0x63')]=_0x270b7b['id'];if(_0x3f836b['query']['filter']){_0x246d7f[_0x288a('0x4f')]=_[_0x288a('0x4e')](_0x246d7f['where'],{'$or':_['map'](_0x246d7f[_0x288a('0x45')],function(_0x5d2323){var _0x465857={};_0x465857[_0x5d2323]={'$like':'%'+_0x3f836b[_0x288a('0x42')][_0x288a('0x4d')]+'%'};return _0x465857;})});}if(_0x3f836b[_0x288a('0x42')][_0x288a('0x9c')]){var _0x4c4da3=_0x3f836b[_0x288a('0x42')][_0x288a('0x9c')][_0x288a('0x9d')](',');var _0x28791f={};_0x28791f[_0x4c4da3[0x0]]={'$gte':moment(_0x4c4da3[0x1])[_0x288a('0x9e')](_0x288a('0x9f'))};_0x246d7f[_0x288a('0x4f')]=_[_0x288a('0x4e')](_0x246d7f[_0x288a('0x4f')],_0x28791f);}_0x246d7f=_['merge']({},_0x246d7f,_0x3f836b[_0x288a('0x50')]);return db['FaxMessage'][_0x288a('0x2e')]({'where':_0x246d7f[_0x288a('0x4f')]})[_0x288a('0x1e')](function(_0x4dd16f){_0x5eaecc['count']=_0x4dd16f;if(_0x3f836b['query'][_0x288a('0x51')]){_0x246d7f[_0x288a('0x52')]=[{'all':!![]}];}return db['FaxMessage']['findAll'](_0x246d7f);})[_0x288a('0x1e')](function(_0x16bcc1){_0x5eaecc[_0x288a('0x68')]=_0x16bcc1;return _0x5eaecc;});}})[_0x288a('0x1e')](respondWithFilteredResult(_0x2e8251,_0x246d7f))['catch'](handleError(_0x2e8251,null));};exports[_0x288a('0x3a')]=function(_0x1248dd,_0x2855b2,_0x1767bf){var _0x737d22,_0x3109f7={},_0x3e1bba;if(_0x1248dd['body']['to']){_0x3e1bba=_0x1248dd[_0x288a('0x59')]['to'][0x0];}return db['FaxAccount'][_0x288a('0x57')]({'where':{'id':_0x1248dd[_0x288a('0x55')]['id']},'include':[{'model':db[_0x288a('0xa0')],'as':_0x288a('0xa1'),'include':[{'model':db[_0x288a('0x73')],'as':_0x288a('0xa2'),'where':{'fax':_0x3e1bba},'limit':0x1,'order':[[_0x288a('0x97'),_0x288a('0xa3')]]}]}]})[_0x288a('0x1e')](handleEntityNotFound(_0x2855b2,null))[_0x288a('0x1e')](function(_0x370e4){_0x737d22=_0x370e4;if(_0x1248dd[_0x288a('0x59')][_0x288a('0xa4')]&&_0x1248dd[_0x288a('0x59')][_0x288a('0xa4')][_0x288a('0x47')]){for(var _0x462b0b=0x0;_0x462b0b<_0x1248dd[_0x288a('0x59')][_0x288a('0xa4')][_0x288a('0x47')];_0x462b0b+=0x1){_0x1248dd[_0x288a('0x59')][_0x288a('0xa4')][_0x462b0b]={'filename':_0x1248dd[_0x288a('0x59')][_0x288a('0xa4')][_0x462b0b][_0x288a('0x39')],'id':_0x1248dd[_0x288a('0x59')][_0x288a('0xa4')][_0x462b0b]['id'],'path':path[_0x288a('0xa5')](config[_0x288a('0xa6')],'server/files/attachments',_0x1248dd[_0x288a('0x59')][_0x288a('0xa4')][_0x462b0b][_0x288a('0xa7')])};}}return respondWithRpcPromise(_0x288a('0xa8'),'CheckAfterSend',{'FaxAccountId':_[_0x288a('0xa9')](_0x1248dd['params']['id'])?undefined:_0x1248dd[_0x288a('0x55')]['id'],'path':_[_0x288a('0xa9')](_0x1248dd[_0x288a('0x59')][_0x288a('0xa4')][0x0]['path'])?undefined:_0x1248dd[_0x288a('0x59')][_0x288a('0xa4')][0x0]['path'],'fax':_[_0x288a('0xa9')](_0x1248dd[_0x288a('0x59')]['to'][0x0])?undefined:_0x1248dd[_0x288a('0x59')]['to'][0x0]},client9002);})['then'](function(){if(_0x737d22){if(_[_0x288a('0xa9')](_0x1248dd[_0x288a('0x59')][_0x288a('0xaa')])){_0x1248dd[_0x288a('0x59')][_0x288a('0xaa')]=util[_0x288a('0x9e')]('\x22%s\x22\x20<%s>',_0x737d22['name'],_0x737d22[_0x288a('0xab')]);}if(_0x737d22[_0x288a('0xa1')]){if(_0x737d22[_0x288a('0xa1')]['Contacts'][_0x288a('0x47')]){return _0x737d22[_0x288a('0xa1')][_0x288a('0xa2')][0x0];}else{return db[_0x288a('0x73')][_0x288a('0x58')](_[_0x288a('0xac')](_0x1248dd['body'],{'firstName':_0x1248dd[_0x288a('0x59')]['to'][0x0],'phone':_0x1248dd[_0x288a('0x59')]['to'][0x0],'fax':_0x1248dd['body']['to'][0x0],'ListId':_0x737d22[_0x288a('0xad')]}));}}else{throw new Error(_0x288a('0xae'));}}else{throw new Error(_0x288a('0xaf'));}})[_0x288a('0x1e')](function(_0x3fcba7){if(_0x3fcba7){return db[_0x288a('0x71')][_0x288a('0x57')]({'where':{'ContactId':_0x3fcba7['id'],'closed':![],'FaxAccountId':_0x737d22['id']}})['then'](function(_0x1a02bf){if(_0x1a02bf){return[_0x1a02bf,![]];}return db[_0x288a('0x71')][_0x288a('0x58')]({'UserId':_0x1248dd[_0x288a('0x5a')]['id'],'ContactId':_0x3fcba7['id'],'FaxAccountId':_0x737d22['id'],'fax':_0x1248dd[_0x288a('0x59')]['to'][0x0],'firstMsgDirection':_0x288a('0xb0'),'Messages':[_[_0x288a('0x4e')](_0x1248dd[_0x288a('0x59')],{'read':![],'body':_0x1248dd[_0x288a('0x59')][_0x288a('0xa4')][0x0][_0x288a('0xb1')],'FaxAccountId':_0x737d22['id'],'UserId':_0x1248dd['user']['id'],'ContactId':_0x3fcba7['id'],'AttachmentId':_0x1248dd['body'][_0x288a('0xa4')][0x0]['id']})]},{'include':[{'model':db[_0x288a('0x9b')],'as':'Messages'}]})[_0x288a('0x1e')](function(_0x336d8a){return[_0x336d8a,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x288a('0xb2')](function(_0x4ec709,_0x58ef90){if(_0x58ef90){return _0x4ec709;}return db[_0x288a('0x9b')][_0x288a('0x58')]({'direction':_0x288a('0xb0'),'read':![],'body':_0x1248dd[_0x288a('0x59')][_0x288a('0xa4')][0x0][_0x288a('0xb1')],'FaxAccountId':_0x737d22['id'],'FaxInteractionId':_0x4ec709['id'],'UserId':_0x1248dd[_0x288a('0x5a')]['id'],'ContactId':_0x4ec709[_0x288a('0xb3')],'AttachmentId':_0x1248dd[_0x288a('0x59')]['attachments'][0x0]['id']})[_0x288a('0x1e')](function(_0x53a1b7){_0x4ec709[_0x288a('0xb4')][_0x288a('0xb5')]=[];_0x4ec709[_0x288a('0xb4')][_0x288a('0xb5')][_0x288a('0x87')](_0x53a1b7[_0x288a('0xb4')]);return _0x4ec709;});})[_0x288a('0x1e')](function(_0x5dacdc){respondWithRpcPromise(_0x288a('0xb6'),_0x288a('0xb6'),{'FaxAccountId':_[_0x288a('0xa9')](_0x1248dd[_0x288a('0x55')]['id'])?undefined:_0x1248dd[_0x288a('0x55')]['id'],'path':_[_0x288a('0xa9')](_0x1248dd[_0x288a('0x59')][_0x288a('0xa4')][0x0]['path'])?undefined:_0x1248dd['body'][_0x288a('0xa4')][0x0][_0x288a('0x8')],'fax':_[_0x288a('0xa9')](_0x1248dd[_0x288a('0x59')]['to'][0x0])?undefined:_0x1248dd[_0x288a('0x59')]['to'][0x0],'AttachmentId':_0x1248dd[_0x288a('0x59')][_0x288a('0xa4')][0x0]['id']},client9002)[_0x288a('0x1e')](function(_0x908c23){logger[_0x288a('0x25')](_0x288a('0xb7'),_0x908c23);})[_0x288a('0x27')](function(_0x8b2e4){logger['info'](_0x288a('0xb7'),_0x8b2e4);});return _0x5dacdc;})[_0x288a('0x1e')](respondWithResult(_0x2855b2,null))[_0x288a('0x27')](handleError(_0x2855b2,null));};exports['addAgents']=function(_0x15cc82,_0x1395ad,_0x4cb476){return db[_0x288a('0x53')][_0x288a('0x57')]({'where':{'id':_0x15cc82[_0x288a('0x55')]['id']}})[_0x288a('0x1e')](handleEntityNotFound(_0x1395ad,null))[_0x288a('0x1e')](function(_0x198f58){if(_0x198f58){return _0x198f58[_0x288a('0xb8')](_0x15cc82[_0x288a('0x59')][_0x288a('0x6a')],_[_0x288a('0x95')](_0x15cc82[_0x288a('0x59')],[_0x288a('0x6a'),'id'])||{})[_0x288a('0xb2')](function(_0x283828){for(var _0xc835c2=0x0;_0xc835c2<_0x15cc82[_0x288a('0x59')][_0x288a('0x6a')][_0x288a('0x47')];_0xc835c2+=0x1){socket[_0x288a('0xb9')]('userFaxAccount:save',{'UserId':Number(_0x15cc82[_0x288a('0x59')][_0x288a('0x6a')][_0xc835c2]),'FaxAccountId':Number(_0x15cc82[_0x288a('0x55')]['id'])});}return _0x283828;});}})['then'](respondWithResult(_0x1395ad,null))[_0x288a('0x27')](handleError(_0x1395ad,null));};exports[_0x288a('0xba')]=function(_0x3bf53d,_0x1cc071,_0x5a3090){return db[_0x288a('0x53')][_0x288a('0x57')]({'where':{'id':_0x3bf53d['params']['id']}})['then'](handleEntityNotFound(_0x1cc071,null))[_0x288a('0x1e')](function(_0x13e453){if(_0x13e453){return _0x13e453[_0x288a('0xba')](_0x3bf53d[_0x288a('0x42')][_0x288a('0x6a')])[_0x288a('0x1e')](function(){if(_['isArray'](_0x3bf53d[_0x288a('0x42')]['ids'])){for(var _0x232583=0x0;_0x232583<_0x3bf53d[_0x288a('0x42')][_0x288a('0x6a')][_0x288a('0x47')];_0x232583+=0x1){socket[_0x288a('0xb9')](_0x288a('0xbb'),{'UserId':Number(_0x3bf53d[_0x288a('0x42')][_0x288a('0x6a')][_0x232583]),'FaxAccountId':Number(_0x3bf53d['params']['id'])});}}else{socket[_0x288a('0xb9')](_0x288a('0xbb'),{'UserId':Number(_0x3bf53d['query']['ids']),'FaxAccountId':Number(_0x3bf53d[_0x288a('0x55')]['id'])});}});}})[_0x288a('0x1e')](respondWithStatusCode(_0x1cc071,null))[_0x288a('0x27')](handleError(_0x1cc071,null));};exports[_0x288a('0xbc')]=function(_0x1649b9,_0x14f8ed,_0x1dab34){var _0x2e8a55={};var _0x494c67={};var _0x487a94;var _0x22ea9a;return db[_0x288a('0x53')][_0x288a('0x66')]({'where':{'id':_0x1649b9[_0x288a('0x55')]['id']}})[_0x288a('0x1e')](handleEntityNotFound(_0x14f8ed,null))[_0x288a('0x1e')](function(_0x5efabe){if(_0x5efabe){_0x487a94=_0x5efabe;_0x494c67[_0x288a('0x41')]=_[_0x288a('0x43')](db[_0x288a('0x75')][_0x288a('0x3e')]);_0x494c67[_0x288a('0x42')]=_[_0x288a('0x43')](_0x1649b9[_0x288a('0x42')]);_0x494c67[_0x288a('0x4b')]=_[_0x288a('0x44')](_0x494c67['model'],_0x494c67[_0x288a('0x42')]);_0x2e8a55[_0x288a('0x45')]=_[_0x288a('0x44')](_0x494c67[_0x288a('0x41')],qs[_0x288a('0x46')](_0x1649b9['query']['fields']));_0x2e8a55[_0x288a('0x45')]=_0x2e8a55['attributes'][_0x288a('0x47')]?_0x2e8a55[_0x288a('0x45')]:_0x494c67[_0x288a('0x41')];_0x2e8a55['order']=qs[_0x288a('0x4a')](_0x1649b9[_0x288a('0x42')][_0x288a('0x4a')]);_0x2e8a55[_0x288a('0x4f')]=qs[_0x288a('0x4b')](_[_0x288a('0x4c')](_0x1649b9[_0x288a('0x42')],_0x494c67['filters']));if(_0x1649b9[_0x288a('0x42')][_0x288a('0x4d')]){_0x2e8a55[_0x288a('0x4f')]=_[_0x288a('0x4e')](_0x2e8a55['where'],{'$or':_[_0x288a('0x3d')](_0x2e8a55[_0x288a('0x45')],function(_0x9400a1){var _0x55e2a4={};_0x55e2a4[_0x9400a1]={'$like':'%'+_0x1649b9[_0x288a('0x42')][_0x288a('0x4d')]+'%'};return _0x55e2a4;})});}_0x2e8a55=_[_0x288a('0x4e')]({},_0x2e8a55,_0x1649b9['options']);return _0x487a94[_0x288a('0xbc')](_0x2e8a55);}})[_0x288a('0x1e')](function(_0xc0f018){if(_0xc0f018){_0x22ea9a=_0xc0f018['length'];if(!_0x1649b9[_0x288a('0x42')]['hasOwnProperty']('nolimit')){_0x2e8a55[_0x288a('0x2d')]=qs['limit'](_0x1649b9['query'][_0x288a('0x2d')]);_0x2e8a55['offset']=qs[_0x288a('0x2b')](_0x1649b9['query']['offset']);}return _0x487a94[_0x288a('0xbc')](_0x2e8a55);}})[_0x288a('0x1e')](function(_0x2c5fb5){if(_0x2c5fb5){return _0x2c5fb5?{'count':_0x22ea9a,'rows':_0x2c5fb5}:null;}})[_0x288a('0x1e')](respondWithResult(_0x14f8ed,null))['catch'](handleError(_0x14f8ed,null));};
\ No newline at end of file
index 67440a8..3f05fac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc42f=['emit','hasOwnProperty','exports','events','FaxAccount','save','remove'];(function(_0x2ab6c3,_0x5c72ca){var _0x2bcfe1=function(_0x8c57b5){while(--_0x8c57b5){_0x2ab6c3['push'](_0x2ab6c3['shift']());}};_0x2bcfe1(++_0x5c72ca);}(_0xc42f,0x11b));var _0xfc42=function(_0x580b22,_0x13e1f4){_0x580b22=_0x580b22-0x0;var _0x474dfc=_0xc42f[_0x580b22];return _0x474dfc;};'use strict';var EventEmitter=require(_0xfc42('0x0'));var FaxAccount=require('../../mysqldb')['db'][_0xfc42('0x1')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xfc42('0x2'),'afterUpdate':'update','afterDestroy':_0xfc42('0x3')};function emitEvent(_0x38eb76){return function(_0x194314,_0x56031b,_0x38d853){FaxAccountEvents[_0xfc42('0x4')](_0x38eb76+':'+_0x194314['id'],_0x194314);FaxAccountEvents[_0xfc42('0x4')](_0x38eb76,_0x194314);_0x38d853(null);};}for(var e in events){if(events[_0xfc42('0x5')](e)){var event=events[e];FaxAccount['hook'](e,emitEvent(event));}}module[_0xfc42('0x6')]=FaxAccountEvents;
\ No newline at end of file
+var _0xecb9=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','FaxAccount','setMaxListeners','save','update'];(function(_0x2d2258,_0x2ce510){var _0x18e155=function(_0x11949e){while(--_0x11949e){_0x2d2258['push'](_0x2d2258['shift']());}};_0x18e155(++_0x2ce510);}(_0xecb9,0x90));var _0x9ecb=function(_0x574de7,_0x24ce60){_0x574de7=_0x574de7-0x0;var _0x568f46=_0xecb9[_0x574de7];return _0x568f46;};'use strict';var EventEmitter=require(_0x9ecb('0x0'));var FaxAccount=require(_0x9ecb('0x1'))['db'][_0x9ecb('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x9ecb('0x3')](0x0);var events={'afterCreate':_0x9ecb('0x4'),'afterUpdate':_0x9ecb('0x5'),'afterDestroy':'remove'};function emitEvent(_0x3050dc){return function(_0x2c36f8,_0xe7342d,_0x1110ac){FaxAccountEvents[_0x9ecb('0x6')](_0x3050dc+':'+_0x2c36f8['id'],_0x2c36f8);FaxAccountEvents[_0x9ecb('0x6')](_0x3050dc,_0x2c36f8);_0x1110ac(null);};}for(var e in events){if(events[_0x9ecb('0x7')](e)){var event=events[e];FaxAccount[_0x9ecb('0x8')](e,emitEvent(event));}}module[_0x9ecb('0x9')]=FaxAccountEvents;
\ No newline at end of file
index 626ee3e..062473b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdeef=['path','rimraf','../../config/environment','FaxAccount','fax_accounts','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x2deed4,_0x2793e8){var _0xfb91f4=function(_0x31cb98){while(--_0x31cb98){_0x2deed4['push'](_0x2deed4['shift']());}};_0xfb91f4(++_0x2793e8);}(_0xdeef,0x94));var _0xfdee=function(_0x2976de,_0x4c546d){_0x2976de=_0x2976de-0x0;var _0xecbf51=_0xdeef[_0x2976de];return _0xecbf51;};'use strict';var _=require(_0xfdee('0x0'));var util=require(_0xfdee('0x1'));var logger=require(_0xfdee('0x2'))(_0xfdee('0x3'));var moment=require(_0xfdee('0x4'));var BPromise=require('bluebird');var rp=require(_0xfdee('0x5'));var fs=require('fs');var path=require(_0xfdee('0x6'));var rimraf=require(_0xfdee('0x7'));var config=require(_0xfdee('0x8'));var attributes=require('./faxAccount.attributes');module['exports']=function(_0x13f824,_0x57c727){return _0x13f824['define'](_0xfdee('0x9'),attributes,{'tableName':_0xfdee('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe04d=['bluebird','request-promise','path','../../config/environment','./faxAccount.attributes','exports','define','FaxAccount','fax_accounts','util','../../config/logger','moment'];(function(_0x45f951,_0x2750c8){var _0x24756c=function(_0x31c931){while(--_0x31c931){_0x45f951['push'](_0x45f951['shift']());}};_0x24756c(++_0x2750c8);}(_0xe04d,0x14d));var _0xde04=function(_0x1d211b,_0x475f3b){_0x1d211b=_0x1d211b-0x0;var _0x47c88b=_0xe04d[_0x1d211b];return _0x47c88b;};'use strict';var _=require('lodash');var util=require(_0xde04('0x0'));var logger=require(_0xde04('0x1'))('api');var moment=require(_0xde04('0x2'));var BPromise=require(_0xde04('0x3'));var rp=require(_0xde04('0x4'));var fs=require('fs');var path=require(_0xde04('0x5'));var rimraf=require('rimraf');var config=require(_0xde04('0x6'));var attributes=require(_0xde04('0x7'));module[_0xde04('0x8')]=function(_0x3c8a50,_0x17dee1){return _0x3c8a50[_0xde04('0x9')](_0xde04('0xa'),attributes,{'tableName':_0xde04('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1e4d5c2..e8f872e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9531=['waitForTheAssignedAgent','Start','startRouting','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','register','request','info','FaxAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','GetFaxAccount','FaxAccount','findAll','options','raw','where','attributes','include','model','map','debug','NotifyFaxAccount','body','fax','then','Sequelize','no\x20available\x20attributes','difference','keys','createdAt','updatedAt','CompanyId','ListId','isNil','from','ValidationError','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','find','account','CmList','List','CmContact','Contacts','DESC','FaxApplication','Applications','applications','length','contact','FaxInteraction','create','Contact\x20not\x20found','spread','get','push','close','unmanaged','created','interaction','FaxMessage','ContactId','AttachmentId','UserId','User','name','unshift','agent'];(function(_0x4503df,_0xfec122){var _0x3f1b2b=function(_0x32b1de){while(--_0x32b1de){_0x4503df['push'](_0x4503df['shift']());}};_0x3f1b2b(++_0xfec122);}(_0x9531,0x170));var _0x1953=function(_0x5a5bbc,_0x16ea1e){_0x5a5bbc=_0x5a5bbc-0x0;var _0x415602=_0x9531[_0x5a5bbc];return _0x415602;};'use strict';var _=require(_0x1953('0x0'));var util=require(_0x1953('0x1'));var moment=require(_0x1953('0x2'));var BPromise=require(_0x1953('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1953('0x4'));var db=require(_0x1953('0x5'))['db'];var utils=require(_0x1953('0x6'));var logger=require(_0x1953('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x1953('0x8'));var client=jayson[_0x1953('0x9')][_0x1953('0xa')]({'port':0x232c});config[_0x1953('0xb')]=_[_0x1953('0xc')](config[_0x1953('0xb')],{'host':_0x1953('0xd'),'port':0x18eb});var socket=require(_0x1953('0xe'))(new Redis(config[_0x1953('0xb')]));require(_0x1953('0xf'))[_0x1953('0x10')](socket);function respondWithRpcPromise(_0x381fbe,_0x541ac6,_0x37992b){return new BPromise(function(_0x422366,_0x57bd54){return client[_0x1953('0x11')](_0x381fbe,_0x37992b)['then'](function(_0x322525){logger[_0x1953('0x12')](_0x1953('0x13'),_0x541ac6,_0x1953('0x14'));logger['debug']('FaxAccount,\x20%s,\x20%s,\x20%s',_0x541ac6,_0x1953('0x14'),JSON[_0x1953('0x15')](_0x322525));if(_0x322525[_0x1953('0x16')]){if(_0x322525[_0x1953('0x16')][_0x1953('0x17')]===0x1f4){logger['error'](_0x1953('0x13'),_0x541ac6,_0x322525[_0x1953('0x16')][_0x1953('0x18')]);return _0x57bd54(_0x322525[_0x1953('0x16')]['message']);}logger[_0x1953('0x16')](_0x1953('0x13'),_0x541ac6,_0x322525[_0x1953('0x16')][_0x1953('0x18')]);return _0x422366(_0x322525[_0x1953('0x16')][_0x1953('0x18')]);}else{logger[_0x1953('0x12')](_0x1953('0x13'),_0x541ac6,_0x1953('0x14'));_0x422366(_0x322525[_0x1953('0x19')][_0x1953('0x18')]);}})['catch'](function(_0x3dc36d){logger['error'](_0x1953('0x13'),_0x541ac6,_0x3dc36d);_0x57bd54(_0x3dc36d);});});}exports[_0x1953('0x1a')]=function(_0x2c22ff){var _0x3725b7=this;return new Promise(function(_0x104c50,_0x5a2a57){return db[_0x1953('0x1b')][_0x1953('0x1c')]({'raw':_0x2c22ff[_0x1953('0x1d')]?_0x2c22ff[_0x1953('0x1d')][_0x1953('0x1e')]===undefined?!![]:![]:!![],'where':_0x2c22ff[_0x1953('0x1d')]?_0x2c22ff[_0x1953('0x1d')][_0x1953('0x1f')]||null:null,'attributes':_0x2c22ff['options']?_0x2c22ff[_0x1953('0x1d')][_0x1953('0x20')]||null:null,'limit':_0x2c22ff[_0x1953('0x1d')]?_0x2c22ff[_0x1953('0x1d')]['limit']||null:null,'include':_0x2c22ff[_0x1953('0x1d')]?_0x2c22ff[_0x1953('0x1d')][_0x1953('0x21')]?_['map'](_0x2c22ff['options'][_0x1953('0x21')],function(_0x3cc5e0){return{'model':db[_0x3cc5e0[_0x1953('0x22')]],'as':_0x3cc5e0['as'],'attributes':_0x3cc5e0[_0x1953('0x20')],'include':_0x3cc5e0['include']?_['map'](_0x3cc5e0[_0x1953('0x21')],function(_0x4f7cf6){return{'model':db[_0x4f7cf6[_0x1953('0x22')]],'as':_0x4f7cf6['as'],'attributes':_0x4f7cf6['attributes'],'include':_0x4f7cf6[_0x1953('0x21')]?_[_0x1953('0x23')](_0x4f7cf6[_0x1953('0x21')],function(_0x4024c6){return{'model':db[_0x4024c6['model']],'as':_0x4024c6['as'],'attributes':_0x4024c6['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x118ac5){logger[_0x1953('0x12')]('GetFaxAccount',_0x2c22ff);logger[_0x1953('0x24')](_0x1953('0x1a'),_0x2c22ff,JSON['stringify'](_0x118ac5));_0x104c50(_0x118ac5);})['catch'](function(_0x506f45){logger[_0x1953('0x16')](_0x1953('0x1a'),_0x506f45['message'],_0x2c22ff);_0x5a2a57(_0x3725b7['error'](0x1f4,_0x506f45['message']));});});};exports[_0x1953('0x25')]=function(_0x47ed0c,_0x5e7bde,_0x5a7aec){var _0x5a8ac5=this;return new Promise(function(_0x221cb7,_0x224c5f){var _0x565162={'body':_0x47ed0c[_0x1953('0x26')],'channel':_0x1953('0x27')};var _0x2bae6a=[];var _0x4db1ff=[];var _0x549ae7={};return db['CmContact']['describe']()[_0x1953('0x28')](function(_0x2835d8){if(!_0x2835d8){throw new db[(_0x1953('0x29'))]['ValidationError'](_0x1953('0x2a'));}_0x2bae6a=_[_0x1953('0x2b')](_[_0x1953('0x2c')](_0x2835d8),[_0x1953('0x2d'),'updatedAt']);_0x4db1ff=_[_0x1953('0x2b')](_[_0x1953('0x2c')](_0x2835d8),[_0x1953('0x2d'),_0x1953('0x2e'),_0x1953('0x2f'),_0x1953('0x30')]);if(_0x47ed0c[_0x1953('0x26')]['id']){delete _0x47ed0c[_0x1953('0x26')]['id'];}if(_[_0x1953('0x31')](_0x47ed0c[_0x1953('0x26')][_0x1953('0x32')])){throw new db[(_0x1953('0x29'))]['ValidationError']('from\x20is\x20mandatory');}if(_[_0x1953('0x31')](_0x47ed0c[_0x1953('0x26')][_0x1953('0x26')])||_0x47ed0c[_0x1953('0x26')]['body']===''){throw new db['Sequelize'][(_0x1953('0x33'))](_0x1953('0x34'));}if(_[_0x1953('0x31')](_0x47ed0c['body']['mapKey'])){throw new db[(_0x1953('0x29'))]['ValidationError'](_0x1953('0x35')+_0x4db1ff);}if(!_[_0x1953('0x36')](_0x4db1ff,_0x47ed0c[_0x1953('0x26')]['mapKey'])){throw new db[(_0x1953('0x29'))]['ValidationError'](_0x1953('0x37')+_0x4db1ff);}_0x549ae7[_0x47ed0c['body'][_0x1953('0x38')]]=_0x47ed0c[_0x1953('0x26')][_0x1953('0x32')];})[_0x1953('0x28')](function(){return db[_0x1953('0x1b')][_0x1953('0x39')]({'where':{'id':_0x47ed0c[_0x1953('0x3a')]['id']},'include':[{'model':db[_0x1953('0x3b')],'as':_0x1953('0x3c'),'include':[{'model':db[_0x1953('0x3d')],'as':_0x1953('0x3e'),'where':_0x549ae7,'limit':0x1,'order':[[_0x1953('0x2e'),_0x1953('0x3f')]]}]},{'model':db[_0x1953('0x40')],'as':_0x1953('0x41')}]});})['then'](function(_0x44d7fb){if(_0x44d7fb&&_0x44d7fb[_0x1953('0x3c')]){var _0x1e2ea6=_0x44d7fb['get']({'plain':!![]});_0x565162['account']=_0x1e2ea6;_0x565162[_0x1953('0x42')]=_0x1e2ea6['Applications'];_0x565162['list']=_0x1e2ea6[_0x1953('0x3c')];_0x565162[_0x1953('0x42')]=_['orderBy'](_0x565162[_0x1953('0x42')],['priority'],['asc']);if(_0x565162['account']['Applications']){delete _0x565162[_0x1953('0x3a')][_0x1953('0x41')];}if(_0x565162[_0x1953('0x3a')][_0x1953('0x3c')]&&_0x565162['account'][_0x1953('0x3c')][_0x1953('0x3e')][_0x1953('0x43')]){return _0x565162[_0x1953('0x3a')][_0x1953('0x3c')][_0x1953('0x3e')][0x0];}var _0x10c434=_[_0x1953('0xc')](_0x47ed0c[_0x1953('0x26')],{'firstName':_0x47ed0c[_0x1953('0x26')][_0x1953('0x32')],'ListId':_0x1e2ea6['ListId']});_0x10c434[_0x47ed0c[_0x1953('0x26')][_0x1953('0x38')]]=_0x47ed0c['body'][_0x1953('0x32')];return db[_0x1953('0x3d')]['create'](_0x10c434,{'fields':_0x2bae6a,'raw':!![]});}})[_0x1953('0x28')](function(_0x42f892){_0x565162[_0x1953('0x44')]=_0x42f892;if(_0x42f892){var _0x4a49f5={'ContactId':_0x42f892['id'],'FaxAccountId':_0x47ed0c[_0x1953('0x3a')]['id'],'fax':_0x42f892[_0x1953('0x27')]};return db['FaxInteraction']['find']({'where':{'ContactId':_0x42f892['id'],'closed':![],'FaxAccountId':_0x47ed0c[_0x1953('0x3a')]['id']}})[_0x1953('0x28')](function(_0x57b7af){if(_0x57b7af){return[_0x57b7af,![]];}return db[_0x1953('0x45')][_0x1953('0x46')](_0x4a49f5)['then'](function(_0x4f34b0){return[_0x4f34b0,!![]];});});}else{throw new Error(_0x1953('0x47'));}})[_0x1953('0x48')](function(_0x478089,_0x87cfec){var _0x3e3ab3=_0x478089[_0x1953('0x49')]({'plain':!![]});if(_0x87cfec){if(_0x565162['account']['autoclose']){_0x565162[_0x1953('0x42')][_0x1953('0x4a')]({'id':0x0,'priority':_0x565162['applications'][_0x1953('0x43')]+0x1,'app':_0x1953('0x4b'),'appdata':_0x1953('0x4c'),'interval':'*,*,*,*'});}_0x3e3ab3[_0x1953('0x4d')]=!![];}else{_0x3e3ab3[_0x1953('0x4d')]=![];}_0x565162[_0x1953('0x4e')]=_0x3e3ab3;return db[_0x1953('0x4f')][_0x1953('0x46')]({'body':_0x47ed0c['body'][_0x1953('0x26')],'FaxAccountId':_0x47ed0c[_0x1953('0x3a')]['id'],'FaxInteractionId':_0x478089['id'],'direction':'in','ContactId':_0x478089[_0x1953('0x50')],'AttachmentId':_0x47ed0c[_0x1953('0x26')][_0x1953('0x51')]});})['then'](function(_0x158341){_0x565162[_0x1953('0x18')]=_0x158341;if(_0x565162[_0x1953('0x4e')][_0x1953('0x52')]){return db[_0x1953('0x53')][_0x1953('0x39')]({'attributes':['id',_0x1953('0x54')],'where':{'id':_0x565162['interaction']['UserId']}})[_0x1953('0x28')](function(_0xa89639){if(_0xa89639){_0x565162[_0x1953('0x42')][_0x1953('0x55')]({'id':0x0,'priority':0x0,'app':_0x1953('0x56'),'appdata':_0xa89639[_0x1953('0x54')]+','+(_0x565162[_0x1953('0x3a')][_0x1953('0x57')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x1953('0x58'),_0x1953('0x59'),_0x565162);});}return respondWithRpcPromise(_0x1953('0x58'),'startRouting',_0x565162);})[_0x1953('0x28')](function(_0xb6a9e0){_0x221cb7(_0xb6a9e0);})[_0x1953('0x5a')](function(_0x23a40a){_0x224c5f(_0x5a8ac5[_0x1953('0x16')](0x1f4,_0x23a40a[_0x1953('0x18')]));});});};
\ No newline at end of file
+var _0x47b0=['interaction','FaxMessage','ContactId','UserId','User','name','unshift','agent','waitForTheAssignedAgent','Start','startRouting','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','register','then','request\x20sent','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxAccount,\x20%s,\x20%s','message','info','catch','findAll','options','raw','attributes','limit','map','include','model','GetFaxAccount','debug','NotifyFaxAccount','fax','CmContact','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','keys','createdAt','CompanyId','ListId','body','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','FaxAccount','find','account','CmList','List','Contacts','updatedAt','DESC','FaxApplication','Applications','get','list','applications','asc','length','create','contact','FaxInteraction','Contact\x20not\x20found','spread','autoclose','push','close','*,*,*,*'];(function(_0x49c3ce,_0x565806){var _0x5be1af=function(_0x13061b){while(--_0x13061b){_0x49c3ce['push'](_0x49c3ce['shift']());}};_0x5be1af(++_0x565806);}(_0x47b0,0xbd));var _0x047b=function(_0x4f138b,_0x51c514){_0x4f138b=_0x4f138b-0x0;var _0x380eeb=_0x47b0[_0x4f138b];return _0x380eeb;};'use strict';var _=require('lodash');var util=require(_0x047b('0x0'));var moment=require(_0x047b('0x1'));var BPromise=require(_0x047b('0x2'));var rs=require(_0x047b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x047b('0x4'))['db'];var utils=require(_0x047b('0x5'));var logger=require('../../config/logger')(_0x047b('0x6'));var config=require(_0x047b('0x7'));var jayson=require(_0x047b('0x8'));var client=jayson['client'][_0x047b('0x9')]({'port':0x232c});config[_0x047b('0xa')]=_[_0x047b('0xb')](config[_0x047b('0xa')],{'host':_0x047b('0xc'),'port':0x18eb});var socket=require(_0x047b('0xd'))(new Redis(config[_0x047b('0xa')]));require(_0x047b('0xe'))[_0x047b('0xf')](socket);function respondWithRpcPromise(_0x258ad2,_0x5da5ff,_0x4e0d08){return new BPromise(function(_0x182fbd,_0x15ba0b){return client['request'](_0x258ad2,_0x4e0d08)[_0x047b('0x10')](function(_0x55744a){logger['info']('FaxAccount,\x20%s,\x20%s',_0x5da5ff,_0x047b('0x11'));logger['debug'](_0x047b('0x12'),_0x5da5ff,_0x047b('0x11'),JSON[_0x047b('0x13')](_0x55744a));if(_0x55744a[_0x047b('0x14')]){if(_0x55744a[_0x047b('0x14')][_0x047b('0x15')]===0x1f4){logger[_0x047b('0x14')](_0x047b('0x16'),_0x5da5ff,_0x55744a['error'][_0x047b('0x17')]);return _0x15ba0b(_0x55744a[_0x047b('0x14')][_0x047b('0x17')]);}logger[_0x047b('0x14')](_0x047b('0x16'),_0x5da5ff,_0x55744a[_0x047b('0x14')][_0x047b('0x17')]);return _0x182fbd(_0x55744a['error']['message']);}else{logger[_0x047b('0x18')]('FaxAccount,\x20%s,\x20%s',_0x5da5ff,_0x047b('0x11'));_0x182fbd(_0x55744a['result'][_0x047b('0x17')]);}})[_0x047b('0x19')](function(_0x13474a){logger[_0x047b('0x14')](_0x047b('0x16'),_0x5da5ff,_0x13474a);_0x15ba0b(_0x13474a);});});}exports['GetFaxAccount']=function(_0x3806ea){var _0x40c620=this;return new Promise(function(_0x127e6e,_0x40fe70){return db['FaxAccount'][_0x047b('0x1a')]({'raw':_0x3806ea[_0x047b('0x1b')]?_0x3806ea[_0x047b('0x1b')][_0x047b('0x1c')]===undefined?!![]:![]:!![],'where':_0x3806ea['options']?_0x3806ea[_0x047b('0x1b')]['where']||null:null,'attributes':_0x3806ea[_0x047b('0x1b')]?_0x3806ea[_0x047b('0x1b')][_0x047b('0x1d')]||null:null,'limit':_0x3806ea[_0x047b('0x1b')]?_0x3806ea[_0x047b('0x1b')][_0x047b('0x1e')]||null:null,'include':_0x3806ea[_0x047b('0x1b')]?_0x3806ea[_0x047b('0x1b')]['include']?_[_0x047b('0x1f')](_0x3806ea[_0x047b('0x1b')][_0x047b('0x20')],function(_0x58ad67){return{'model':db[_0x58ad67['model']],'as':_0x58ad67['as'],'attributes':_0x58ad67[_0x047b('0x1d')],'include':_0x58ad67[_0x047b('0x20')]?_['map'](_0x58ad67[_0x047b('0x20')],function(_0x1e6718){return{'model':db[_0x1e6718[_0x047b('0x21')]],'as':_0x1e6718['as'],'attributes':_0x1e6718['attributes'],'include':_0x1e6718[_0x047b('0x20')]?_[_0x047b('0x1f')](_0x1e6718['include'],function(_0x3993c3){return{'model':db[_0x3993c3[_0x047b('0x21')]],'as':_0x3993c3['as'],'attributes':_0x3993c3[_0x047b('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x047b('0x10')](function(_0x97de71){logger[_0x047b('0x18')](_0x047b('0x22'),_0x3806ea);logger[_0x047b('0x23')](_0x047b('0x22'),_0x3806ea,JSON[_0x047b('0x13')](_0x97de71));_0x127e6e(_0x97de71);})[_0x047b('0x19')](function(_0x4a3bd1){logger[_0x047b('0x14')](_0x047b('0x22'),_0x4a3bd1[_0x047b('0x17')],_0x3806ea);_0x40fe70(_0x40c620['error'](0x1f4,_0x4a3bd1[_0x047b('0x17')]));});});};exports[_0x047b('0x24')]=function(_0x1b1bec,_0x9fbf11,_0x551a8e){var _0x4df1dd=this;return new Promise(function(_0x5a8c9b,_0x516981){var _0x580ebd={'body':_0x1b1bec['body'],'channel':_0x047b('0x25')};var _0x384505=[];var _0x1fdb13=[];var _0x2b76f6={};return db[_0x047b('0x26')][_0x047b('0x27')]()['then'](function(_0x47ee29){if(!_0x47ee29){throw new db[(_0x047b('0x28'))][(_0x047b('0x29'))](_0x047b('0x2a'));}_0x384505=_[_0x047b('0x2b')](_[_0x047b('0x2c')](_0x47ee29),[_0x047b('0x2d'),'updatedAt']);_0x1fdb13=_[_0x047b('0x2b')](_[_0x047b('0x2c')](_0x47ee29),['createdAt','updatedAt',_0x047b('0x2e'),_0x047b('0x2f')]);if(_0x1b1bec['body']['id']){delete _0x1b1bec[_0x047b('0x30')]['id'];}if(_[_0x047b('0x31')](_0x1b1bec[_0x047b('0x30')]['from'])){throw new db[(_0x047b('0x28'))][(_0x047b('0x29'))]('from\x20is\x20mandatory');}if(_[_0x047b('0x31')](_0x1b1bec[_0x047b('0x30')]['body'])||_0x1b1bec[_0x047b('0x30')][_0x047b('0x30')]===''){throw new db[(_0x047b('0x28'))][(_0x047b('0x29'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x1b1bec[_0x047b('0x30')][_0x047b('0x32')])){throw new db[(_0x047b('0x28'))]['ValidationError'](_0x047b('0x33')+_0x1fdb13);}if(!_['includes'](_0x1fdb13,_0x1b1bec[_0x047b('0x30')][_0x047b('0x32')])){throw new db[(_0x047b('0x28'))][(_0x047b('0x29'))](_0x047b('0x34')+_0x1fdb13);}_0x2b76f6[_0x1b1bec[_0x047b('0x30')]['mapKey']]=_0x1b1bec[_0x047b('0x30')][_0x047b('0x35')];})['then'](function(){return db[_0x047b('0x36')][_0x047b('0x37')]({'where':{'id':_0x1b1bec[_0x047b('0x38')]['id']},'include':[{'model':db[_0x047b('0x39')],'as':_0x047b('0x3a'),'include':[{'model':db[_0x047b('0x26')],'as':_0x047b('0x3b'),'where':_0x2b76f6,'limit':0x1,'order':[[_0x047b('0x3c'),_0x047b('0x3d')]]}]},{'model':db[_0x047b('0x3e')],'as':_0x047b('0x3f')}]});})[_0x047b('0x10')](function(_0x3ce68f){if(_0x3ce68f&&_0x3ce68f[_0x047b('0x3a')]){var _0x378838=_0x3ce68f[_0x047b('0x40')]({'plain':!![]});_0x580ebd['account']=_0x378838;_0x580ebd['applications']=_0x378838[_0x047b('0x3f')];_0x580ebd[_0x047b('0x41')]=_0x378838[_0x047b('0x3a')];_0x580ebd[_0x047b('0x42')]=_['orderBy'](_0x580ebd[_0x047b('0x42')],['priority'],[_0x047b('0x43')]);if(_0x580ebd[_0x047b('0x38')][_0x047b('0x3f')]){delete _0x580ebd[_0x047b('0x38')][_0x047b('0x3f')];}if(_0x580ebd[_0x047b('0x38')][_0x047b('0x3a')]&&_0x580ebd[_0x047b('0x38')][_0x047b('0x3a')][_0x047b('0x3b')][_0x047b('0x44')]){return _0x580ebd[_0x047b('0x38')][_0x047b('0x3a')][_0x047b('0x3b')][0x0];}var _0x4ca06c=_[_0x047b('0xb')](_0x1b1bec['body'],{'firstName':_0x1b1bec['body'][_0x047b('0x35')],'ListId':_0x378838['ListId']});_0x4ca06c[_0x1b1bec[_0x047b('0x30')][_0x047b('0x32')]]=_0x1b1bec[_0x047b('0x30')][_0x047b('0x35')];return db[_0x047b('0x26')][_0x047b('0x45')](_0x4ca06c,{'fields':_0x384505,'raw':!![]});}})[_0x047b('0x10')](function(_0x11fb7a){_0x580ebd[_0x047b('0x46')]=_0x11fb7a;if(_0x11fb7a){var _0x21a57b={'ContactId':_0x11fb7a['id'],'FaxAccountId':_0x1b1bec[_0x047b('0x38')]['id'],'fax':_0x11fb7a[_0x047b('0x25')]};return db[_0x047b('0x47')][_0x047b('0x37')]({'where':{'ContactId':_0x11fb7a['id'],'closed':![],'FaxAccountId':_0x1b1bec[_0x047b('0x38')]['id']}})[_0x047b('0x10')](function(_0x1fe900){if(_0x1fe900){return[_0x1fe900,![]];}return db[_0x047b('0x47')][_0x047b('0x45')](_0x21a57b)[_0x047b('0x10')](function(_0x170abe){return[_0x170abe,!![]];});});}else{throw new Error(_0x047b('0x48'));}})[_0x047b('0x49')](function(_0x5891a8,_0x488d09){var _0x17a47a=_0x5891a8[_0x047b('0x40')]({'plain':!![]});if(_0x488d09){if(_0x580ebd[_0x047b('0x38')][_0x047b('0x4a')]){_0x580ebd[_0x047b('0x42')][_0x047b('0x4b')]({'id':0x0,'priority':_0x580ebd[_0x047b('0x42')][_0x047b('0x44')]+0x1,'app':_0x047b('0x4c'),'appdata':'unmanaged','interval':_0x047b('0x4d')});}_0x17a47a['created']=!![];}else{_0x17a47a['created']=![];}_0x580ebd[_0x047b('0x4e')]=_0x17a47a;return db[_0x047b('0x4f')][_0x047b('0x45')]({'body':_0x1b1bec['body']['body'],'FaxAccountId':_0x1b1bec[_0x047b('0x38')]['id'],'FaxInteractionId':_0x5891a8['id'],'direction':'in','ContactId':_0x5891a8[_0x047b('0x50')],'AttachmentId':_0x1b1bec['body']['AttachmentId']});})['then'](function(_0x45e38c){_0x580ebd[_0x047b('0x17')]=_0x45e38c;if(_0x580ebd[_0x047b('0x4e')][_0x047b('0x51')]){return db[_0x047b('0x52')][_0x047b('0x37')]({'attributes':['id',_0x047b('0x53')],'where':{'id':_0x580ebd[_0x047b('0x4e')][_0x047b('0x51')]}})[_0x047b('0x10')](function(_0x1ac08a){if(_0x1ac08a){_0x580ebd[_0x047b('0x42')][_0x047b('0x54')]({'id':0x0,'priority':0x0,'app':_0x047b('0x55'),'appdata':_0x1ac08a[_0x047b('0x53')]+','+(_0x580ebd[_0x047b('0x38')][_0x047b('0x56')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x047b('0x57'),_0x047b('0x58'),_0x580ebd);});}return respondWithRpcPromise(_0x047b('0x57'),_0x047b('0x58'),_0x580ebd);})[_0x047b('0x10')](function(_0x3519c1){_0x5a8c9b(_0x3519c1);})['catch'](function(_0x2d9910){_0x516981(_0x4df1dd['error'](0x1f4,_0x2d9910[_0x047b('0x17')]));});});};
\ No newline at end of file
index 73c2ad7..8faeda0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd520=['register','length','faxAccount:','save','remove','update','emit'];(function(_0x1c2846,_0x9a2564){var _0x3a6887=function(_0x2741cd){while(--_0x2741cd){_0x1c2846['push'](_0x1c2846['shift']());}};_0x3a6887(++_0x9a2564);}(_0xd520,0x8f));var _0x0d52=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xd520[_0x30ae5e];return _0x1f2e93;};'use strict';var FaxAccountEvents=require('./faxAccount.events');var events=[_0x0d52('0x0'),_0x0d52('0x1'),_0x0d52('0x2')];function createListener(_0x301410,_0xd0a1e6){return function(_0x4911e5){_0xd0a1e6[_0x0d52('0x3')](_0x301410,_0x4911e5);};}function removeListener(_0x2b1351,_0x193146){return function(){FaxAccountEvents['removeListener'](_0x2b1351,_0x193146);};}exports[_0x0d52('0x4')]=function(_0x5ab8fb){for(var _0x332988=0x0,_0x5d6deb=events[_0x0d52('0x5')];_0x332988<_0x5d6deb;_0x332988++){var _0x5bdb17=events[_0x332988];var _0x5e2d13=createListener(_0x0d52('0x6')+_0x5bdb17,_0x5ab8fb);FaxAccountEvents['on'](_0x5bdb17,_0x5e2d13);}};
\ No newline at end of file
+var _0x93de=['faxAccount:','./faxAccount.events','save','remove','update','removeListener','register'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x93de,0x182));var _0xe93d=function(_0x3a1d09,_0x2efce7){_0x3a1d09=_0x3a1d09-0x0;var _0x525fc7=_0x93de[_0x3a1d09];return _0x525fc7;};'use strict';var FaxAccountEvents=require(_0xe93d('0x0'));var events=[_0xe93d('0x1'),_0xe93d('0x2'),_0xe93d('0x3')];function createListener(_0x81945e,_0x2de6f8){return function(_0x5089f0){_0x2de6f8['emit'](_0x81945e,_0x5089f0);};}function removeListener(_0xf8281b,_0x3fc97f){return function(){FaxAccountEvents[_0xe93d('0x4')](_0xf8281b,_0x3fc97f);};}exports[_0xe93d('0x5')]=function(_0x23d192){for(var _0xf342fd=0x0,_0x3a044c=events['length'];_0xf342fd<_0x3a044c;_0xf342fd++){var _0xb73920=events[_0xf342fd];var _0x1bd39a=createListener(_0xe93d('0x6')+_0xb73920,_0x23d192);FaxAccountEvents['on'](_0xb73920,_0x1bd39a);}};
\ No newline at end of file
index d2566e1..03561a9 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(_0x26c106,_0x1b1567){var _0x4b4352=function(_0x4ae232){while(--_0x4ae232){_0x26c106['push'](_0x26c106['shift']());}};_0x4b4352(++_0x1b1567);}(_0xa9e0,0x123));var _0x0a9e=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0xa9e0[_0x46aff0];return _0x9d78cf;};'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(_0xe15c8f,_0xc520e8){var _0x6fffcf=function(_0xfdfa99){while(--_0xfdfa99){_0xe15c8f['push'](_0xe15c8f['shift']());}};_0x6fffcf(++_0xc520e8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0xa9e0[_0x18a79d];return _0x4f8848;};'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 fe14459..b930440 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6569=['STRING','*,*,*,*','exports','INTEGER','noop'];(function(_0x339129,_0x86dcc6){var _0x1570df=function(_0x3b537e){while(--_0x3b537e){_0x339129['push'](_0x339129['shift']());}};_0x1570df(++_0x86dcc6);}(_0x6569,0x129));var _0x9656=function(_0x3f493e,_0x35d968){_0x3f493e=_0x3f493e-0x0;var _0x56dc64=_0x6569[_0x3f493e];return _0x56dc64;};'use strict';var Sequelize=require('sequelize');module[_0x9656('0x0')]={'priority':{'type':Sequelize[_0x9656('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x9656('0x2')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x9656('0x3')]},'interval':{'type':Sequelize[_0x9656('0x3')],'defaultValue':_0x9656('0x4')}};
\ No newline at end of file
+var _0x1807=['STRING','noop','*,*,*,*','sequelize'];(function(_0x4017b0,_0x4347db){var _0x5ed4f7=function(_0x706c26){while(--_0x706c26){_0x4017b0['push'](_0x4017b0['shift']());}};_0x5ed4f7(++_0x4347db);}(_0x1807,0xdb));var _0x7180=function(_0x4664f2,_0x2b0027){_0x4664f2=_0x4664f2-0x0;var _0x12e5f6=_0x1807[_0x4664f2];return _0x12e5f6;};'use strict';var Sequelize=require(_0x7180('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x7180('0x1')],'allowNull':![],'defaultValue':_0x7180('0x2')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x7180('0x1')]},'interval':{'type':Sequelize[_0x7180('0x1')],'defaultValue':_0x7180('0x3')}};
\ No newline at end of file
index ac560c8..1e8f05e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ac6=['rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','count','limit','set','json','apply','update','then','destroy','end','sendStatus','error','stack','name','send','index','map','FaxApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','options','includeAll','include','catch','show','find','create','body','params','eml-format'];(function(_0x25e882,_0x2f3f20){var _0x16f88c=function(_0x429bbc){while(--_0x429bbc){_0x25e882['push'](_0x25e882['shift']());}};_0x16f88c(++_0x2f3f20);}(_0x6ac6,0x17b));var _0x66ac=function(_0x230816,_0x46f456){_0x230816=_0x230816-0x0;var _0x284330=_0x6ac6[_0x230816];return _0x284330;};'use strict';var emlformat=require(_0x66ac('0x0'));var rimraf=require(_0x66ac('0x1'));var zipdir=require(_0x66ac('0x2'));var jsonpatch=require(_0x66ac('0x3'));var rp=require('request-promise');var moment=require(_0x66ac('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x66ac('0x5'));var util=require(_0x66ac('0x6'));var path=require(_0x66ac('0x7'));var sox=require(_0x66ac('0x8'));var csv=require('to-csv');var ejs=require(_0x66ac('0x9'));var fs=require('fs');var fs_extra=require(_0x66ac('0xa'));var _=require(_0x66ac('0xb'));var squel=require(_0x66ac('0xc'));var crypto=require('crypto');var jsforce=require(_0x66ac('0xd'));var deskjs=require(_0x66ac('0xe'));var toCsv=require(_0x66ac('0xf'));var querystring=require('querystring');var Papa=require(_0x66ac('0x10'));var Redis=require(_0x66ac('0x11'));var authService=require(_0x66ac('0x12'));var qs=require(_0x66ac('0x13'));var as=require(_0x66ac('0x14'));var hardwareService=require(_0x66ac('0x15'));var logger=require('../../config/logger')(_0x66ac('0x16'));var utils=require(_0x66ac('0x17'));var config=require(_0x66ac('0x18'));var licenseUtil=require(_0x66ac('0x19'));var db=require(_0x66ac('0x1a'))['db'];function respondWithStatusCode(_0x50c666,_0x449df0){_0x449df0=_0x449df0||0xcc;return function(_0x352050){if(_0x352050){return _0x50c666['sendStatus'](_0x449df0);}return _0x50c666[_0x66ac('0x1b')](_0x449df0)['end']();};}function respondWithResult(_0xe4ae26,_0x341099){_0x341099=_0x341099||0xc8;return function(_0x525a1e){if(_0x525a1e){return _0xe4ae26[_0x66ac('0x1b')](_0x341099)['json'](_0x525a1e);}};}function respondWithFilteredResult(_0x1a2d6a,_0x1e41bb){return function(_0x577ef8){if(_0x577ef8){var _0x517ed7=typeof _0x1e41bb[_0x66ac('0x1c')]===_0x66ac('0x1d')&&typeof _0x1e41bb['limit']===_0x66ac('0x1d');var _0x42b376=_0x577ef8[_0x66ac('0x1e')];var _0xee2edf=_0x517ed7?0x0:_0x1e41bb[_0x66ac('0x1c')];var _0x49ba6a=_0x517ed7?_0x577ef8[_0x66ac('0x1e')]:_0x1e41bb[_0x66ac('0x1c')]+_0x1e41bb[_0x66ac('0x1f')];var _0x751105;if(_0x49ba6a>=_0x42b376){_0x49ba6a=_0x42b376;_0x751105=0xc8;}else{_0x751105=0xce;}_0x1a2d6a[_0x66ac('0x1b')](_0x751105);return _0x1a2d6a[_0x66ac('0x20')]('Content-Range',_0xee2edf+'-'+_0x49ba6a+'/'+_0x42b376)[_0x66ac('0x21')](_0x577ef8);}return null;};}function patchUpdates(_0x3445f2){return function(_0x39a229){try{jsonpatch[_0x66ac('0x22')](_0x39a229,_0x3445f2,!![]);}catch(_0x321049){return BPromise['reject'](_0x321049);}return _0x39a229['save']();};}function saveUpdates(_0x4dee04,_0x586b46){return function(_0xc35574){if(_0xc35574){return _0xc35574[_0x66ac('0x23')](_0x4dee04)[_0x66ac('0x24')](function(_0x5270ff){return _0x5270ff;});}return null;};}function removeEntity(_0x2230c1,_0x22fa9a){return function(_0x3c305d){if(_0x3c305d){return _0x3c305d[_0x66ac('0x25')]()['then'](function(){_0x2230c1[_0x66ac('0x1b')](0xcc)[_0x66ac('0x26')]();});}};}function handleEntityNotFound(_0x5c7e23,_0x14ad92){return function(_0x256412){if(!_0x256412){_0x5c7e23[_0x66ac('0x27')](0x194);}return _0x256412;};}function handleError(_0x2aa829,_0x4c0b37){_0x4c0b37=_0x4c0b37||0x1f4;return function(_0x30740a){logger[_0x66ac('0x28')](_0x30740a[_0x66ac('0x29')]);if(_0x30740a[_0x66ac('0x2a')]){delete _0x30740a[_0x66ac('0x2a')];}_0x2aa829[_0x66ac('0x1b')](_0x4c0b37)[_0x66ac('0x2b')](_0x30740a);};}exports[_0x66ac('0x2c')]=function(_0x451cc1,_0x25c14a){var _0xd98f05={},_0x5ef3a9={},_0x571a64={'count':0x0,'rows':[]};var _0x5396bc=_[_0x66ac('0x2d')](db[_0x66ac('0x2e')][_0x66ac('0x2f')],function(_0x515712){return{'name':_0x515712[_0x66ac('0x30')],'type':_0x515712[_0x66ac('0x31')][_0x66ac('0x32')]};});_0x5ef3a9[_0x66ac('0x33')]=_['map'](_0x5396bc,_0x66ac('0x2a'));_0x5ef3a9[_0x66ac('0x34')]=_[_0x66ac('0x35')](_0x451cc1[_0x66ac('0x34')]);_0x5ef3a9[_0x66ac('0x36')]=_[_0x66ac('0x37')](_0x5ef3a9[_0x66ac('0x33')],_0x5ef3a9[_0x66ac('0x34')]);_0xd98f05['attributes']=_[_0x66ac('0x37')](_0x5ef3a9[_0x66ac('0x33')],qs[_0x66ac('0x38')](_0x451cc1[_0x66ac('0x34')]['fields']));_0xd98f05[_0x66ac('0x39')]=_0xd98f05[_0x66ac('0x39')][_0x66ac('0x3a')]?_0xd98f05[_0x66ac('0x39')]:_0x5ef3a9[_0x66ac('0x33')];if(!_0x451cc1[_0x66ac('0x34')][_0x66ac('0x3b')](_0x66ac('0x3c'))){_0xd98f05[_0x66ac('0x1f')]=qs['limit'](_0x451cc1[_0x66ac('0x34')]['limit']);_0xd98f05[_0x66ac('0x1c')]=qs[_0x66ac('0x1c')](_0x451cc1[_0x66ac('0x34')][_0x66ac('0x1c')]);}_0xd98f05[_0x66ac('0x3d')]=qs[_0x66ac('0x3e')](_0x451cc1[_0x66ac('0x34')]['sort']);_0xd98f05[_0x66ac('0x3f')]=qs['filters'](_[_0x66ac('0x40')](_0x451cc1[_0x66ac('0x34')],_0x5ef3a9['filters']),_0x5396bc);if(_0x451cc1['query']['filter']){_0xd98f05['where']=_[_0x66ac('0x41')](_0xd98f05['where'],{'$or':_[_0x66ac('0x2d')](_0x5396bc,function(_0x530e32){if(_0x530e32[_0x66ac('0x31')]!=='VIRTUAL'){var _0x158e54={};_0x158e54[_0x530e32[_0x66ac('0x2a')]]={'$like':'%'+_0x451cc1[_0x66ac('0x34')][_0x66ac('0x42')]+'%'};return _0x158e54;}})});}_0xd98f05=_[_0x66ac('0x41')]({},_0xd98f05,_0x451cc1[_0x66ac('0x43')]);var _0x1fe50c={'where':_0xd98f05['where']};return db['FaxApplication']['count'](_0x1fe50c)['then'](function(_0x238d4f){_0x571a64['count']=_0x238d4f;if(_0x451cc1['query'][_0x66ac('0x44')]){_0xd98f05[_0x66ac('0x45')]=[{'all':!![]}];}return db[_0x66ac('0x2e')]['findAll'](_0xd98f05);})[_0x66ac('0x24')](function(_0x1873b1){_0x571a64['rows']=_0x1873b1;return _0x571a64;})[_0x66ac('0x24')](respondWithFilteredResult(_0x25c14a,_0xd98f05))[_0x66ac('0x46')](handleError(_0x25c14a,null));};exports[_0x66ac('0x47')]=function(_0x3100ce,_0x454b20){var _0x53a611={'raw':!![],'where':{'id':_0x3100ce['params']['id']}},_0x4d875a={};_0x4d875a[_0x66ac('0x33')]=_['keys'](db[_0x66ac('0x2e')][_0x66ac('0x2f')]);_0x4d875a[_0x66ac('0x34')]=_[_0x66ac('0x35')](_0x3100ce[_0x66ac('0x34')]);_0x4d875a[_0x66ac('0x36')]=_['intersection'](_0x4d875a[_0x66ac('0x33')],_0x4d875a[_0x66ac('0x34')]);_0x53a611['attributes']=_[_0x66ac('0x37')](_0x4d875a[_0x66ac('0x33')],qs[_0x66ac('0x38')](_0x3100ce[_0x66ac('0x34')][_0x66ac('0x38')]));_0x53a611['attributes']=_0x53a611[_0x66ac('0x39')][_0x66ac('0x3a')]?_0x53a611[_0x66ac('0x39')]:_0x4d875a[_0x66ac('0x33')];if(_0x3100ce[_0x66ac('0x34')]['includeAll']){_0x53a611[_0x66ac('0x45')]=[{'all':!![]}];}_0x53a611=_[_0x66ac('0x41')]({},_0x53a611,_0x3100ce[_0x66ac('0x43')]);return db[_0x66ac('0x2e')][_0x66ac('0x48')](_0x53a611)['then'](handleEntityNotFound(_0x454b20,null))[_0x66ac('0x24')](respondWithResult(_0x454b20,null))[_0x66ac('0x46')](handleError(_0x454b20,null));};exports[_0x66ac('0x49')]=function(_0x431c24,_0x9f7663){return db[_0x66ac('0x2e')][_0x66ac('0x49')](_0x431c24['body'],{})[_0x66ac('0x24')](respondWithResult(_0x9f7663,0xc9))[_0x66ac('0x46')](handleError(_0x9f7663,null));};exports['update']=function(_0x3aa480,_0x4bd8f5){if(_0x3aa480[_0x66ac('0x4a')]['id']){delete _0x3aa480['body']['id'];}return db[_0x66ac('0x2e')][_0x66ac('0x48')]({'where':{'id':_0x3aa480[_0x66ac('0x4b')]['id']}})[_0x66ac('0x24')](handleEntityNotFound(_0x4bd8f5,null))[_0x66ac('0x24')](saveUpdates(_0x3aa480[_0x66ac('0x4a')],null))[_0x66ac('0x24')](respondWithResult(_0x4bd8f5,null))[_0x66ac('0x46')](handleError(_0x4bd8f5,null));};exports[_0x66ac('0x25')]=function(_0xd2296e,_0x5bf0d4){return db['FaxApplication']['find']({'where':{'id':_0xd2296e[_0x66ac('0x4b')]['id']}})[_0x66ac('0x24')](handleEntityNotFound(_0x5bf0d4,null))[_0x66ac('0x24')](removeEntity(_0x5bf0d4,null))['catch'](handleError(_0x5bf0d4,null));};
\ No newline at end of file
+var _0x054f=['index','map','FaxApplication','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','params','rawAttributes','options','find','create','body','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','sendStatus','error','name','send'];(function(_0x15e99d,_0x234768){var _0x5bd347=function(_0x26da4b){while(--_0x26da4b){_0x15e99d['push'](_0x15e99d['shift']());}};_0x5bd347(++_0x234768);}(_0x054f,0x6d));var _0xf054=function(_0x16c306,_0x1e8e7d){_0x16c306=_0x16c306-0x0;var _0x3f19de=_0x054f[_0x16c306];return _0x3f19de;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf054('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf054('0x1'));var rp=require(_0xf054('0x2'));var moment=require(_0xf054('0x3'));var BPromise=require(_0xf054('0x4'));var Mustache=require(_0xf054('0x5'));var util=require('util');var path=require(_0xf054('0x6'));var sox=require('sox');var csv=require(_0xf054('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf054('0x8'));var _=require(_0xf054('0x9'));var squel=require('squel');var crypto=require(_0xf054('0xa'));var jsforce=require(_0xf054('0xb'));var deskjs=require(_0xf054('0xc'));var toCsv=require(_0xf054('0x7'));var querystring=require(_0xf054('0xd'));var Papa=require(_0xf054('0xe'));var Redis=require('ioredis');var authService=require(_0xf054('0xf'));var qs=require(_0xf054('0x10'));var as=require(_0xf054('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf054('0x12'))(_0xf054('0x13'));var utils=require(_0xf054('0x14'));var config=require(_0xf054('0x15'));var licenseUtil=require(_0xf054('0x16'));var db=require(_0xf054('0x17'))['db'];function respondWithStatusCode(_0x1148e4,_0x1fd633){_0x1fd633=_0x1fd633||0xcc;return function(_0xe08e2){if(_0xe08e2){return _0x1148e4['sendStatus'](_0x1fd633);}return _0x1148e4[_0xf054('0x18')](_0x1fd633)[_0xf054('0x19')]();};}function respondWithResult(_0x4a01c1,_0x306eee){_0x306eee=_0x306eee||0xc8;return function(_0x2f8af2){if(_0x2f8af2){return _0x4a01c1[_0xf054('0x18')](_0x306eee)['json'](_0x2f8af2);}};}function respondWithFilteredResult(_0x1d3909,_0x417204){return function(_0x4c3494){if(_0x4c3494){var _0x5b7a5c=typeof _0x417204['offset']===_0xf054('0x1a')&&typeof _0x417204[_0xf054('0x1b')]===_0xf054('0x1a');var _0x55564e=_0x4c3494[_0xf054('0x1c')];var _0x5b5d13=_0x5b7a5c?0x0:_0x417204['offset'];var _0x38dfe4=_0x5b7a5c?_0x4c3494[_0xf054('0x1c')]:_0x417204[_0xf054('0x1d')]+_0x417204['limit'];var _0x44d5b7;if(_0x38dfe4>=_0x55564e){_0x38dfe4=_0x55564e;_0x44d5b7=0xc8;}else{_0x44d5b7=0xce;}_0x1d3909['status'](_0x44d5b7);return _0x1d3909[_0xf054('0x1e')](_0xf054('0x1f'),_0x5b5d13+'-'+_0x38dfe4+'/'+_0x55564e)[_0xf054('0x20')](_0x4c3494);}return null;};}function patchUpdates(_0x440dbe){return function(_0x114ade){try{jsonpatch[_0xf054('0x21')](_0x114ade,_0x440dbe,!![]);}catch(_0x56809a){return BPromise[_0xf054('0x22')](_0x56809a);}return _0x114ade[_0xf054('0x23')]();};}function saveUpdates(_0x7a8243,_0x194086){return function(_0x594f74){if(_0x594f74){return _0x594f74[_0xf054('0x24')](_0x7a8243)[_0xf054('0x25')](function(_0x1ea850){return _0x1ea850;});}return null;};}function removeEntity(_0x5d490a,_0xb31b6c){return function(_0x1cbf2a){if(_0x1cbf2a){return _0x1cbf2a[_0xf054('0x26')]()[_0xf054('0x25')](function(){_0x5d490a[_0xf054('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5725f6,_0x19c747){return function(_0x4e8cc5){if(!_0x4e8cc5){_0x5725f6[_0xf054('0x27')](0x194);}return _0x4e8cc5;};}function handleError(_0x248229,_0x3eae2e){_0x3eae2e=_0x3eae2e||0x1f4;return function(_0xdfce7e){logger[_0xf054('0x28')](_0xdfce7e['stack']);if(_0xdfce7e[_0xf054('0x29')]){delete _0xdfce7e[_0xf054('0x29')];}_0x248229[_0xf054('0x18')](_0x3eae2e)[_0xf054('0x2a')](_0xdfce7e);};}exports[_0xf054('0x2b')]=function(_0x371e46,_0x172254){var _0x4649c5={},_0x4f8eda={},_0x36b895={'count':0x0,'rows':[]};var _0x465e68=_[_0xf054('0x2c')](db[_0xf054('0x2d')]['rawAttributes'],function(_0x486395){return{'name':_0x486395['fieldName'],'type':_0x486395[_0xf054('0x2e')][_0xf054('0x2f')]};});_0x4f8eda[_0xf054('0x30')]=_['map'](_0x465e68,_0xf054('0x29'));_0x4f8eda[_0xf054('0x31')]=_[_0xf054('0x32')](_0x371e46[_0xf054('0x31')]);_0x4f8eda[_0xf054('0x33')]=_[_0xf054('0x34')](_0x4f8eda[_0xf054('0x30')],_0x4f8eda[_0xf054('0x31')]);_0x4649c5[_0xf054('0x35')]=_['intersection'](_0x4f8eda[_0xf054('0x30')],qs[_0xf054('0x36')](_0x371e46['query'][_0xf054('0x36')]));_0x4649c5[_0xf054('0x35')]=_0x4649c5[_0xf054('0x35')]['length']?_0x4649c5[_0xf054('0x35')]:_0x4f8eda['model'];if(!_0x371e46['query'][_0xf054('0x37')](_0xf054('0x38'))){_0x4649c5[_0xf054('0x1b')]=qs[_0xf054('0x1b')](_0x371e46[_0xf054('0x31')][_0xf054('0x1b')]);_0x4649c5[_0xf054('0x1d')]=qs['offset'](_0x371e46[_0xf054('0x31')][_0xf054('0x1d')]);}_0x4649c5[_0xf054('0x39')]=qs[_0xf054('0x3a')](_0x371e46[_0xf054('0x31')][_0xf054('0x3a')]);_0x4649c5[_0xf054('0x3b')]=qs[_0xf054('0x33')](_[_0xf054('0x3c')](_0x371e46[_0xf054('0x31')],_0x4f8eda['filters']),_0x465e68);if(_0x371e46['query']['filter']){_0x4649c5[_0xf054('0x3b')]=_[_0xf054('0x3d')](_0x4649c5['where'],{'$or':_['map'](_0x465e68,function(_0x2d28bb){if(_0x2d28bb[_0xf054('0x2e')]!==_0xf054('0x3e')){var _0x152d22={};_0x152d22[_0x2d28bb[_0xf054('0x29')]]={'$like':'%'+_0x371e46[_0xf054('0x31')][_0xf054('0x3f')]+'%'};return _0x152d22;}})});}_0x4649c5=_['merge']({},_0x4649c5,_0x371e46['options']);var _0x24601b={'where':_0x4649c5[_0xf054('0x3b')]};return db[_0xf054('0x2d')][_0xf054('0x1c')](_0x24601b)['then'](function(_0x34abcc){_0x36b895['count']=_0x34abcc;if(_0x371e46[_0xf054('0x31')][_0xf054('0x40')]){_0x4649c5[_0xf054('0x41')]=[{'all':!![]}];}return db[_0xf054('0x2d')][_0xf054('0x42')](_0x4649c5);})[_0xf054('0x25')](function(_0x2bfaaf){_0x36b895[_0xf054('0x43')]=_0x2bfaaf;return _0x36b895;})[_0xf054('0x25')](respondWithFilteredResult(_0x172254,_0x4649c5))[_0xf054('0x44')](handleError(_0x172254,null));};exports[_0xf054('0x45')]=function(_0x3c22df,_0x2769bd){var _0x426d01={'raw':!![],'where':{'id':_0x3c22df[_0xf054('0x46')]['id']}},_0x4657c5={};_0x4657c5[_0xf054('0x30')]=_[_0xf054('0x32')](db[_0xf054('0x2d')][_0xf054('0x47')]);_0x4657c5[_0xf054('0x31')]=_[_0xf054('0x32')](_0x3c22df['query']);_0x4657c5[_0xf054('0x33')]=_[_0xf054('0x34')](_0x4657c5[_0xf054('0x30')],_0x4657c5[_0xf054('0x31')]);_0x426d01[_0xf054('0x35')]=_['intersection'](_0x4657c5['model'],qs['fields'](_0x3c22df[_0xf054('0x31')]['fields']));_0x426d01['attributes']=_0x426d01[_0xf054('0x35')]['length']?_0x426d01[_0xf054('0x35')]:_0x4657c5['model'];if(_0x3c22df[_0xf054('0x31')][_0xf054('0x40')]){_0x426d01[_0xf054('0x41')]=[{'all':!![]}];}_0x426d01=_[_0xf054('0x3d')]({},_0x426d01,_0x3c22df[_0xf054('0x48')]);return db[_0xf054('0x2d')][_0xf054('0x49')](_0x426d01)[_0xf054('0x25')](handleEntityNotFound(_0x2769bd,null))[_0xf054('0x25')](respondWithResult(_0x2769bd,null))[_0xf054('0x44')](handleError(_0x2769bd,null));};exports[_0xf054('0x4a')]=function(_0x4412e0,_0xbe65f3){return db['FaxApplication'][_0xf054('0x4a')](_0x4412e0[_0xf054('0x4b')],{})[_0xf054('0x25')](respondWithResult(_0xbe65f3,0xc9))[_0xf054('0x44')](handleError(_0xbe65f3,null));};exports['update']=function(_0x228d7c,_0x45b757){if(_0x228d7c[_0xf054('0x4b')]['id']){delete _0x228d7c[_0xf054('0x4b')]['id'];}return db[_0xf054('0x2d')]['find']({'where':{'id':_0x228d7c[_0xf054('0x46')]['id']}})[_0xf054('0x25')](handleEntityNotFound(_0x45b757,null))['then'](saveUpdates(_0x228d7c[_0xf054('0x4b')],null))[_0xf054('0x25')](respondWithResult(_0x45b757,null))[_0xf054('0x44')](handleError(_0x45b757,null));};exports[_0xf054('0x26')]=function(_0x1dd786,_0x3c5492){return db[_0xf054('0x2d')][_0xf054('0x49')]({'where':{'id':_0x1dd786[_0xf054('0x46')]['id']}})[_0xf054('0x25')](handleEntityNotFound(_0x3c5492,null))[_0xf054('0x25')](removeEntity(_0x3c5492,null))[_0xf054('0x44')](handleError(_0x3c5492,null));};
\ No newline at end of file
index fe1c1e4..d40d02d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba76=['path','./faxApplication.attributes','exports','FaxApplication','fax_applications','utf8mb4_unicode_ci','lodash','../../config/logger','api','bluebird','request-promise'];(function(_0x546c2f,_0x26e1d0){var _0x74108e=function(_0x579c2d){while(--_0x579c2d){_0x546c2f['push'](_0x546c2f['shift']());}};_0x74108e(++_0x26e1d0);}(_0xba76,0x1d4));var _0x6ba7=function(_0x51eb57,_0x10d544){_0x51eb57=_0x51eb57-0x0;var _0x2fe3ea=_0xba76[_0x51eb57];return _0x2fe3ea;};'use strict';var _=require(_0x6ba7('0x0'));var util=require('util');var logger=require(_0x6ba7('0x1'))(_0x6ba7('0x2'));var moment=require('moment');var BPromise=require(_0x6ba7('0x3'));var rp=require(_0x6ba7('0x4'));var fs=require('fs');var path=require(_0x6ba7('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x6ba7('0x6'));module[_0x6ba7('0x7')]=function(_0x41a436,_0x228d6f){return _0x41a436['define'](_0x6ba7('0x8'),attributes,{'tableName':_0x6ba7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x6ba7('0xa')});};
\ No newline at end of file
+var _0x2bc9=['../../config/logger','api','moment','request-promise','./faxApplication.attributes','exports','FaxApplication','utf8mb4','utf8mb4_unicode_ci','lodash','util'];(function(_0x7cc9b5,_0x3ea246){var _0x4457f1=function(_0x8178de){while(--_0x8178de){_0x7cc9b5['push'](_0x7cc9b5['shift']());}};_0x4457f1(++_0x3ea246);}(_0x2bc9,0xfb));var _0x92bc=function(_0x4ad493,_0x421d2a){_0x4ad493=_0x4ad493-0x0;var _0x45cf27=_0x2bc9[_0x4ad493];return _0x45cf27;};'use strict';var _=require(_0x92bc('0x0'));var util=require(_0x92bc('0x1'));var logger=require(_0x92bc('0x2'))(_0x92bc('0x3'));var moment=require(_0x92bc('0x4'));var BPromise=require('bluebird');var rp=require(_0x92bc('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x92bc('0x6'));module[_0x92bc('0x7')]=function(_0x3b3d47,_0x3e50dd){return _0x3b3d47['define'](_0x92bc('0x8'),attributes,{'tableName':'fax_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x92bc('0x9'),'collate':_0x92bc('0xa')});};
\ No newline at end of file
index 551e301..0ef8497 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8645=['stringify','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','FaxApplication,\x20%s,\x20%s','debug','request\x20sent','error','message','catch','UpdateFaxApplication','update','body','options','where','attributes','limit'];(function(_0x4396fb,_0x5a97bb){var _0x22fe9e=function(_0x5e03b6){while(--_0x5e03b6){_0x4396fb['push'](_0x4396fb['shift']());}};_0x22fe9e(++_0x5a97bb);}(_0x8645,0x145));var _0x5864=function(_0x3c3dbf,_0x212c58){_0x3c3dbf=_0x3c3dbf-0x0;var _0xe989d1=_0x8645[_0x3c3dbf];return _0xe989d1;};'use strict';var _=require(_0x5864('0x0'));var util=require('util');var moment=require(_0x5864('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5864('0x2'));var db=require(_0x5864('0x3'))['db'];var utils=require(_0x5864('0x4'));var logger=require(_0x5864('0x5'))(_0x5864('0x6'));var config=require('../../config/environment');var jayson=require(_0x5864('0x7'));var client=jayson[_0x5864('0x8')][_0x5864('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x498c75,_0xfe6382,_0x54fc05){return new BPromise(function(_0x5e7c25,_0x3f795d){return client[_0x5864('0xa')](_0x498c75,_0x54fc05)[_0x5864('0xb')](function(_0x4f8e3d){logger[_0x5864('0xc')](_0x5864('0xd'),_0xfe6382,'request\x20sent');logger[_0x5864('0xe')]('FaxApplication,\x20%s,\x20%s,\x20%s',_0xfe6382,_0x5864('0xf'),JSON['stringify'](_0x4f8e3d));if(_0x4f8e3d[_0x5864('0x10')]){if(_0x4f8e3d[_0x5864('0x10')]['code']===0x1f4){logger[_0x5864('0x10')](_0x5864('0xd'),_0xfe6382,_0x4f8e3d[_0x5864('0x10')][_0x5864('0x11')]);return _0x3f795d(_0x4f8e3d[_0x5864('0x10')]['message']);}logger[_0x5864('0x10')](_0x5864('0xd'),_0xfe6382,_0x4f8e3d['error']['message']);return _0x5e7c25(_0x4f8e3d[_0x5864('0x10')]['message']);}else{logger[_0x5864('0xc')](_0x5864('0xd'),_0xfe6382,_0x5864('0xf'));_0x5e7c25(_0x4f8e3d['result'][_0x5864('0x11')]);}})[_0x5864('0x12')](function(_0x1afedb){logger[_0x5864('0x10')](_0x5864('0xd'),_0xfe6382,_0x1afedb);_0x3f795d(_0x1afedb);});});}exports[_0x5864('0x13')]=function(_0x30148d){var _0x222ff4=this;return new Promise(function(_0x14b607,_0x312066){return db['FaxApplication'][_0x5864('0x14')](_0x30148d[_0x5864('0x15')],{'raw':_0x30148d[_0x5864('0x16')]?_0x30148d[_0x5864('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x30148d['options']?_0x30148d['options'][_0x5864('0x17')]||null:null,'attributes':_0x30148d[_0x5864('0x16')]?_0x30148d[_0x5864('0x16')][_0x5864('0x18')]||null:null,'limit':_0x30148d[_0x5864('0x16')]?_0x30148d['options'][_0x5864('0x19')]||null:null})[_0x5864('0xb')](function(_0x9b85f8){logger[_0x5864('0xc')](_0x5864('0x13'),_0x30148d);logger[_0x5864('0xe')](_0x5864('0x13'),_0x30148d,JSON[_0x5864('0x1a')](_0x9b85f8));_0x14b607(_0x9b85f8);})[_0x5864('0x12')](function(_0x535404){logger['error'](_0x5864('0x13'),_0x535404[_0x5864('0x11')],_0x30148d);_0x312066(_0x222ff4[_0x5864('0x10')](0x1f4,_0x535404['message']));});});};
\ No newline at end of file
+var _0x6061=['request\x20sent','catch','FaxApplication','update','body','raw','options','where','limit','UpdateFaxApplication','debug','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','http','request','then','info','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxApplication,\x20%s,\x20%s','message'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6061,0x110));var _0x1606=function(_0x403605,_0x19cf54){_0x403605=_0x403605-0x0;var _0x3fbae7=_0x6061[_0x403605];return _0x3fbae7;};'use strict';var _=require('lodash');var util=require(_0x1606('0x0'));var moment=require(_0x1606('0x1'));var BPromise=require(_0x1606('0x2'));var rs=require(_0x1606('0x3'));var fs=require('fs');var Redis=require(_0x1606('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x1606('0x5'))(_0x1606('0x6'));var config=require(_0x1606('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1606('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x526289,_0x52528c,_0x1dae05){return new BPromise(function(_0xafe3dd,_0x5b2db9){return client[_0x1606('0x9')](_0x526289,_0x1dae05)[_0x1606('0xa')](function(_0xd7ceb6){logger[_0x1606('0xb')]('FaxApplication,\x20%s,\x20%s',_0x52528c,'request\x20sent');logger['debug'](_0x1606('0xc'),_0x52528c,'request\x20sent',JSON[_0x1606('0xd')](_0xd7ceb6));if(_0xd7ceb6[_0x1606('0xe')]){if(_0xd7ceb6[_0x1606('0xe')][_0x1606('0xf')]===0x1f4){logger[_0x1606('0xe')](_0x1606('0x10'),_0x52528c,_0xd7ceb6[_0x1606('0xe')][_0x1606('0x11')]);return _0x5b2db9(_0xd7ceb6[_0x1606('0xe')][_0x1606('0x11')]);}logger[_0x1606('0xe')](_0x1606('0x10'),_0x52528c,_0xd7ceb6[_0x1606('0xe')][_0x1606('0x11')]);return _0xafe3dd(_0xd7ceb6[_0x1606('0xe')]['message']);}else{logger['info']('FaxApplication,\x20%s,\x20%s',_0x52528c,_0x1606('0x12'));_0xafe3dd(_0xd7ceb6['result'][_0x1606('0x11')]);}})[_0x1606('0x13')](function(_0x10973a){logger[_0x1606('0xe')]('FaxApplication,\x20%s,\x20%s',_0x52528c,_0x10973a);_0x5b2db9(_0x10973a);});});}exports['UpdateFaxApplication']=function(_0x510ba){var _0x47b61c=this;return new Promise(function(_0x1c5219,_0x4500a8){return db[_0x1606('0x14')][_0x1606('0x15')](_0x510ba[_0x1606('0x16')],{'raw':_0x510ba['options']?_0x510ba['options'][_0x1606('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x510ba[_0x1606('0x18')]?_0x510ba['options'][_0x1606('0x19')]||null:null,'attributes':_0x510ba[_0x1606('0x18')]?_0x510ba['options']['attributes']||null:null,'limit':_0x510ba[_0x1606('0x18')]?_0x510ba[_0x1606('0x18')][_0x1606('0x1a')]||null:null})[_0x1606('0xa')](function(_0x4762bb){logger[_0x1606('0xb')](_0x1606('0x1b'),_0x510ba);logger[_0x1606('0x1c')](_0x1606('0x1b'),_0x510ba,JSON[_0x1606('0xd')](_0x4762bb));_0x1c5219(_0x4762bb);})[_0x1606('0x13')](function(_0x3db8d8){logger['error'](_0x1606('0x1b'),_0x3db8d8['message'],_0x510ba);_0x4500a8(_0x47b61c[_0x1606('0xe')](0x1f4,_0x3db8d8[_0x1606('0x11')]));});});};
\ No newline at end of file
index 1f8c030..d602e37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e6c=['delete','destroy','exports','multer','util','connect-timeout','express','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','post','create','update'];(function(_0x237546,_0xa81b26){var _0x233e29=function(_0x728aa4){while(--_0x728aa4){_0x237546['push'](_0x237546['shift']());}};_0x233e29(++_0xa81b26);}(_0x6e6c,0xc3));var _0xc6e6=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6e6c[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xc6e6('0x0'));var util=require(_0xc6e6('0x1'));var path=require('path');var timeout=require(_0xc6e6('0x2'));var express=require(_0xc6e6('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xc6e6('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xc6e6('0x5'));var controller=require('./faxApplication.controller');router[_0xc6e6('0x6')]('/',auth[_0xc6e6('0x7')](),controller['index']);router[_0xc6e6('0x6')](_0xc6e6('0x8'),auth['isAuthenticated'](),controller[_0xc6e6('0x9')]);router[_0xc6e6('0xa')]('/',auth['isAuthenticated'](),controller[_0xc6e6('0xb')]);router['put'](_0xc6e6('0x8'),auth[_0xc6e6('0x7')](),controller[_0xc6e6('0xc')]);router[_0xc6e6('0xd')](_0xc6e6('0x8'),auth[_0xc6e6('0x7')](),controller[_0xc6e6('0xe')]);module[_0xc6e6('0xf')]=router;
\ No newline at end of file
+var _0x5c00=['delete','destroy','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','post','create','put','/:id','update'];(function(_0x50479e,_0x5323a3){var _0x3f66ad=function(_0x384d7d){while(--_0x384d7d){_0x50479e['push'](_0x50479e['shift']());}};_0x3f66ad(++_0x5323a3);}(_0x5c00,0x17e));var _0x05c0=function(_0x3849ff,_0x4ae25e){_0x3849ff=_0x3849ff-0x0;var _0x3ab676=_0x5c00[_0x3849ff];return _0x3ab676;};'use strict';var multer=require(_0x05c0('0x0'));var util=require(_0x05c0('0x1'));var path=require(_0x05c0('0x2'));var timeout=require('connect-timeout');var express=require(_0x05c0('0x3'));var router=express['Router']();var fs_extra=require(_0x05c0('0x4'));var auth=require(_0x05c0('0x5'));var interaction=require(_0x05c0('0x6'));var config=require(_0x05c0('0x7'));var controller=require('./faxApplication.controller');router[_0x05c0('0x8')]('/',auth[_0x05c0('0x9')](),controller[_0x05c0('0xa')]);router[_0x05c0('0x8')]('/:id',auth[_0x05c0('0x9')](),controller[_0x05c0('0xb')]);router[_0x05c0('0xc')]('/',auth['isAuthenticated'](),controller[_0x05c0('0xd')]);router[_0x05c0('0xe')](_0x05c0('0xf'),auth[_0x05c0('0x9')](),controller[_0x05c0('0x10')]);router[_0x05c0('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x05c0('0x12')]);module['exports']=router;
\ No newline at end of file
index 17e66bf..f7dcc09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf0b=['STRING','DATE','ENUM','out','sequelize','exports'];(function(_0x51168e,_0x473e66){var _0x175130=function(_0x53dd53){while(--_0x53dd53){_0x51168e['push'](_0x51168e['shift']());}};_0x175130(++_0x473e66);}(_0xcf0b,0xe8));var _0xbcf0=function(_0x3612eb,_0x1f07a9){_0x3612eb=_0x3612eb-0x0;var _0x1a13ab=_0xcf0b[_0x3612eb];return _0x1a13ab;};'use strict';var Sequelize=require(_0xbcf0('0x0'));module[_0xbcf0('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xbcf0('0x2')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xbcf0('0x2')]},'note':{'type':Sequelize[_0xbcf0('0x2')]},'read1stAt':{'type':Sequelize[_0xbcf0('0x3')]},'fax':{'type':Sequelize['STRING']},'firstMsgDirection':{'type':Sequelize[_0xbcf0('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xbcf0('0x3')]},'lastMsgDirection':{'type':Sequelize[_0xbcf0('0x4')]('in',_0xbcf0('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0x7367=['BOOLEAN','DATE','STRING','ENUM','out','sequelize','exports'];(function(_0xd1b4d7,_0x28b2c1){var _0x3002ec=function(_0x3d95ce){while(--_0x3d95ce){_0xd1b4d7['push'](_0xd1b4d7['shift']());}};_0x3002ec(++_0x28b2c1);}(_0x7367,0x83));var _0x7736=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x7367[_0x3947c9];return _0x2e7871;};'use strict';var Sequelize=require(_0x7736('0x0'));module[_0x7736('0x1')]={'closed':{'type':Sequelize[_0x7736('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x7736('0x3')]},'disposition':{'type':Sequelize[_0x7736('0x4')]},'secondDisposition':{'type':Sequelize[_0x7736('0x4')]},'thirdDisposition':{'type':Sequelize[_0x7736('0x4')]},'note':{'type':Sequelize[_0x7736('0x4')]},'read1stAt':{'type':Sequelize[_0x7736('0x3')]},'fax':{'type':Sequelize[_0x7736('0x4')]},'firstMsgDirection':{'type':Sequelize[_0x7736('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x7736('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x7736('0x5')]('in',_0x7736('0x6')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index 5d97b74..efb8014 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd84b=['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','Contact.phone','c.mobile','c.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','FaxInteractionId','all','show','params','includeAll','include','create','body','describe','addMessage','ids','omit','getMessages','findOne','format','YYYY-MM-DD\x20HH:mm:ss','FaxMessage','findAll','setTags','spread','color','emit','removeTags','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','Attachment','Messages','get','mkdirSync','basename','existsSync','createReadStream','pipe','download','log','err','unlinkSync','eml-format','fast-json-patch','request-promise','moment','to-csv','ejs','fs-extra','lodash','squel','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','register','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','sendStatus','error','stack','name','send','Users','map','TagIds','Tags','split','forEach','push','catch','index','FaxInteraction','rawAttributes','fieldName','type','key','model','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','select','field','from','u.id','ui.FaxInteractionId','user_has_fax_interactions','left_join','u.id\x20=\x20ui.UserId','fax_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','fax_accounts','a.id\x20=\x20i.FaxAccountId','fax_messages','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','tools_tags','expr','search','parseSearch','sqlOperator','value','having','`\x20=\x200','`\x20>\x200','$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?','find','ContactId','buildExpression','start','Tag','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','text','keys','some','isEmpty','FaxAccountId','i.FaxAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','tag','isArray','filter','replace','i.id\x20LIKE\x20?','i.fax\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','QueryTypes','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','DESC','t.id\x20IN\x20?','resolve','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','role','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','agent','sequelize','toString','keyBy','merge','a.key','Account.key','a.mandatoryDisposition'];(function(_0x295a3d,_0x56d487){var _0x23a732=function(_0x15cfc2){while(--_0x15cfc2){_0x295a3d['push'](_0x295a3d['shift']());}};_0x23a732(++_0x56d487);}(_0xd84b,0x1e8));var _0xbd84=function(_0x3070d2,_0x10d4d8){_0x3070d2=_0x3070d2-0x0;var _0x1db782=_0xd84b[_0x3070d2];return _0x1db782;};'use strict';var emlformat=require(_0xbd84('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xbd84('0x1'));var rp=require(_0xbd84('0x2'));var moment=require(_0xbd84('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xbd84('0x4'));var ejs=require(_0xbd84('0x5'));var fs=require('fs');var fs_extra=require(_0xbd84('0x6'));var _=require(_0xbd84('0x7'));var squel=require(_0xbd84('0x8'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xbd84('0x4'));var querystring=require(_0xbd84('0x9'));var Papa=require(_0xbd84('0xa'));var Redis=require('ioredis');var authService=require(_0xbd84('0xb'));var qs=require(_0xbd84('0xc'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbd84('0xd'));var logger=require('../../config/logger')('api');var utils=require(_0xbd84('0xe'));var config=require(_0xbd84('0xf'));var licenseUtil=require(_0xbd84('0x10'));var db=require(_0xbd84('0x11'))['db'];config[_0xbd84('0x12')]=_[_0xbd84('0x13')](config[_0xbd84('0x12')],{'host':_0xbd84('0x14'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbd84('0x12')]));require('./faxInteraction.socket')[_0xbd84('0x15')](socket);function respondWithStatusCode(_0x2c80dd,_0x5e2ddc){_0x5e2ddc=_0x5e2ddc||0xcc;return function(_0x154f00){if(_0x154f00){return _0x2c80dd['sendStatus'](_0x5e2ddc);}return _0x2c80dd[_0xbd84('0x16')](_0x5e2ddc)[_0xbd84('0x17')]();};}function respondWithResult(_0x429a39,_0x53335c){_0x53335c=_0x53335c||0xc8;return function(_0x2e62c5){if(_0x2e62c5){return _0x429a39[_0xbd84('0x16')](_0x53335c)[_0xbd84('0x18')](_0x2e62c5);}};}function respondWithFilteredResult(_0x16329a,_0x1989be){return function(_0x5a3a60){if(_0x5a3a60){var _0x1bba34=typeof _0x1989be[_0xbd84('0x19')]===_0xbd84('0x1a')&&typeof _0x1989be[_0xbd84('0x1b')]===_0xbd84('0x1a');var _0x3f2669=_0x5a3a60[_0xbd84('0x1c')];var _0x225f27=_0x1bba34?0x0:_0x1989be[_0xbd84('0x19')];var _0x3c5ca7=_0x1bba34?_0x5a3a60[_0xbd84('0x1c')]:_0x1989be[_0xbd84('0x19')]+_0x1989be['limit'];var _0x3320a7;if(_0x3c5ca7>=_0x3f2669){_0x3c5ca7=_0x3f2669;_0x3320a7=0xc8;}else{_0x3320a7=0xce;}_0x16329a[_0xbd84('0x16')](_0x3320a7);return _0x16329a[_0xbd84('0x1d')](_0xbd84('0x1e'),_0x225f27+'-'+_0x3c5ca7+'/'+_0x3f2669)[_0xbd84('0x18')](_0x5a3a60);}return null;};}function patchUpdates(_0x1b74fa){return function(_0x79f54d){try{jsonpatch['apply'](_0x79f54d,_0x1b74fa,!![]);}catch(_0x5d8563){return BPromise[_0xbd84('0x1f')](_0x5d8563);}return _0x79f54d[_0xbd84('0x20')]();};}function saveUpdates(_0x41e45e,_0x38953a){return function(_0x498d24){if(_0x498d24){return _0x498d24[_0xbd84('0x21')](_0x41e45e)[_0xbd84('0x22')](function(_0x1a5212){return _0x1a5212;});}return null;};}function removeEntity(_0x47a6a7,_0x31d08d){return function(_0x2c1f4c){if(_0x2c1f4c){return _0x2c1f4c[_0xbd84('0x23')]()['then'](function(){_0x47a6a7['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5bba82,_0x6ac8f8){return function(_0x294c3b){if(!_0x294c3b){_0x5bba82[_0xbd84('0x24')](0x194);}return _0x294c3b;};}function handleError(_0x53fa4a,_0x389e0e){_0x389e0e=_0x389e0e||0x1f4;return function(_0x4144b9){logger[_0xbd84('0x25')](_0x4144b9[_0xbd84('0x26')]);if(_0x4144b9[_0xbd84('0x27')]){delete _0x4144b9['name'];}_0x53fa4a[_0xbd84('0x16')](_0x389e0e)[_0xbd84('0x28')](_0x4144b9);};}function getInteractionUsers(_0x18db93,_0x4b7d33){return new BPromise(function(_0x34501f,_0x52c628){try{if(_0x4b7d33[_0x18db93['id']]){_0x18db93[_0xbd84('0x29')]=_[_0xbd84('0x2a')](_0x4b7d33[_0x18db93['id']],function(_0x109777){return{'id':_0x109777['id'],'fullname':_0x109777['fullname']};});}}catch(_0x23fb7c){_0x52c628(_0x23fb7c);}_0x34501f(_0x18db93);});}function getInteractionTags(_0x1f1c45,_0x25fba4){return new BPromise(function(_0x150ed9,_0x3522b2){try{if(_0x1f1c45[_0xbd84('0x2b')]){_0x1f1c45[_0xbd84('0x2c')]=[];_0x1f1c45[_0xbd84('0x2b')][_0xbd84('0x2d')](',')[_0xbd84('0x2e')](function(_0x3c1517){_0x1f1c45[_0xbd84('0x2c')][_0xbd84('0x2f')](_0x25fba4[_0x3c1517]);});}delete _0x1f1c45['TagIds'];}catch(_0x12f0b6){_0x3522b2(_0x12f0b6);}_0x150ed9(_0x1f1c45);});}function updateFaxInteraction(_0x4a0c84,_0x326653,_0x54587e){return new BPromise(function(_0x5548df,_0x11d268){return getInteractionUsers(_0x4a0c84,_0x54587e)['then'](function(_0x49fac){return getInteractionTags(_0x49fac,_0x326653);})['then'](function(_0x3dc021){_0x5548df(_0x3dc021);})[_0xbd84('0x30')](function(_0x1c3f5f){_0x11d268(_0x1c3f5f);});});}exports[_0xbd84('0x31')]=function(_0x46a9ea,_0x3efdd0){var _0x56a37b={},_0x3683f4={},_0x5235d0={'count':0x0,'rows':[]};var _0x1695ab=_[_0xbd84('0x2a')](db[_0xbd84('0x32')][_0xbd84('0x33')],function(_0x49ef6a){return{'name':_0x49ef6a[_0xbd84('0x34')],'type':_0x49ef6a[_0xbd84('0x35')][_0xbd84('0x36')]};});_0x3683f4[_0xbd84('0x37')]=_['map'](_0x1695ab,_0xbd84('0x27'));_0x3683f4['query']=_['keys'](_0x46a9ea['query']);_0x3683f4[_0xbd84('0x38')]=_[_0xbd84('0x39')](_0x3683f4['model'],_0x3683f4[_0xbd84('0x3a')]);_0x56a37b['attributes']=_[_0xbd84('0x39')](_0x3683f4[_0xbd84('0x37')],qs[_0xbd84('0x3b')](_0x46a9ea[_0xbd84('0x3a')][_0xbd84('0x3b')]));_0x56a37b[_0xbd84('0x3c')]=_0x56a37b[_0xbd84('0x3c')][_0xbd84('0x3d')]?_0x56a37b[_0xbd84('0x3c')]:_0x3683f4[_0xbd84('0x37')];if(!_0x46a9ea[_0xbd84('0x3a')][_0xbd84('0x3e')](_0xbd84('0x3f'))){_0x56a37b[_0xbd84('0x1b')]=qs[_0xbd84('0x1b')](_0x46a9ea['query'][_0xbd84('0x1b')]);_0x56a37b[_0xbd84('0x19')]=qs[_0xbd84('0x19')](_0x46a9ea[_0xbd84('0x3a')][_0xbd84('0x19')]);}_0x56a37b[_0xbd84('0x40')]=qs['sort'](_0x46a9ea[_0xbd84('0x3a')][_0xbd84('0x41')]);_0x56a37b[_0xbd84('0x42')]=qs['filters'](_[_0xbd84('0x43')](_0x46a9ea[_0xbd84('0x3a')],_0x3683f4[_0xbd84('0x38')]),_0x1695ab);var _0x748db2=[];var _0x5581e5=squel[_0xbd84('0x44')]()[_0xbd84('0x45')]('id')['field'](_0xbd84('0x27'))[_0xbd84('0x45')]('color')[_0xbd84('0x46')]('tools_tags');var _0x2e87df=squel[_0xbd84('0x44')]()[_0xbd84('0x45')](_0xbd84('0x47'))[_0xbd84('0x45')]('u.fullname')[_0xbd84('0x45')](_0xbd84('0x48'))[_0xbd84('0x46')](_0xbd84('0x49'),'ui')[_0xbd84('0x4a')]('users','u',_0xbd84('0x4b'));var _0x217d90=squel[_0xbd84('0x44')]()['from'](_0xbd84('0x4c'),'i')['left_join'](_0xbd84('0x4d'),'c',_0xbd84('0x4e'))['left_join']('users','o',_0xbd84('0x4f'))['left_join'](_0xbd84('0x50'),'a',_0xbd84('0x51'))[_0xbd84('0x4a')](_0xbd84('0x52'),'me','me.FaxInteractionId\x20=\x20i.id')[_0xbd84('0x4a')](_0xbd84('0x53'),'it',_0xbd84('0x54'))[_0xbd84('0x4a')](_0xbd84('0x55'),'t','t.id\x20=\x20it.TagId');var _0x153220=squel[_0xbd84('0x56')]();var _0x38e003=[];var _0xbdcf0c=squel[_0xbd84('0x56')]();var _0x417e4e;if(_0x46a9ea[_0xbd84('0x3a')][_0xbd84('0x57')]){_0x417e4e=as[_0xbd84('0x58')](_0x46a9ea['query'][_0xbd84('0x57')]);var _0x2762f7=_0x417e4e[_0xbd84('0x59')];for(var _0x2bfa6a=0x0;_0x2bfa6a<_0x417e4e['conditions'][_0xbd84('0x3d')];_0x2bfa6a++){var _0x294fa7=_0x417e4e['conditions'][_0x2bfa6a];var _0x7895bf='i';var _0x53520b=_['find'](_0x1695ab,[_0xbd84('0x27'),_0x294fa7['field']]);if(!_0x53520b){switch(_0x294fa7['field']){case'unreadMessages':if(_0x294fa7[_0xbd84('0x5a')]==0x1){_0x217d90[_0xbd84('0x5b')]('`'+_0x294fa7[_0xbd84('0x45')]+_0xbd84('0x5c'));}else{_0x217d90[_0xbd84('0x5b')]('`'+_0x294fa7['field']+_0xbd84('0x5d'));}break;case'Contact':if(_0x294fa7['operator']===_0xbd84('0x5e')){if(_0x294fa7[_0xbd84('0x5a')]['split']('\x20')[_0xbd84('0x3d')]>0x1){_0x153220[_0x2762f7](_0xbd84('0x5f'),qs['getFullTextValue'](_0x294fa7['value']),null);}else{var _0x3f52b0='%'+_0x294fa7[_0xbd84('0x5a')]+'%';_0x153220[_0x2762f7](_0xbd84('0x60'),_0x3f52b0,_0x3f52b0,_0x3f52b0);}}else{_0x53520b=_[_0xbd84('0x61')](_0x1695ab,[_0xbd84('0x27'),'ContactId']);_0x294fa7[_0xbd84('0x45')]=_0xbd84('0x62');_0x386530=as[_0xbd84('0x63')](_0x7895bf,_0x53520b[_0xbd84('0x35')],_0x294fa7);_0x153220[_0x2762f7](_0x386530['text'],_0x386530[_0xbd84('0x5a')][_0xbd84('0x64')],_0x386530['value'][_0xbd84('0x17')]);}break;case _0xbd84('0x65'):var _0x586124=_0x294fa7[_0xbd84('0x5a')][_0xbd84('0x2d')](',')['map'](function(_0x3bd111){return Number(_0x3bd111);});_0x586124[_0xbd84('0x2e')](function(_0x4d4a01){_0xbdcf0c['or'](_0xbd84('0x66'),'%,'+_0x4d4a01+',%');});_0x38e003=_[_0xbd84('0x67')](_0x38e003,_0x586124);break;case _0xbd84('0x68'):if(_0x294fa7[_0xbd84('0x69')]===_0xbd84('0x5e')){_0x153220[_0x2762f7](_0xbd84('0x6a'),'%'+_0x294fa7['value']+'%',null);}else{_0x53520b=_[_0xbd84('0x61')](_0x1695ab,[_0xbd84('0x27'),_0xbd84('0x6b')]);_0x294fa7[_0xbd84('0x45')]='UserId';_0x386530=as['buildExpression'](_0x7895bf,_0x53520b[_0xbd84('0x35')],_0x294fa7);_0x153220[_0x2762f7](_0x386530[_0xbd84('0x6c')],_0x386530['value']['start'],_0x386530[_0xbd84('0x5a')][_0xbd84('0x17')]);}break;case'body':_0x386530=as[_0xbd84('0x63')]('me',null,_0x294fa7);_0x153220[_0x2762f7](_0x386530['text'],_0x386530[_0xbd84('0x5a')][_0xbd84('0x64')],_0x386530['value'][_0xbd84('0x17')]);break;}}else{var _0x386530=as[_0xbd84('0x63')](_0x7895bf,_0x53520b[_0xbd84('0x35')],_0x294fa7);_0x153220[_0x2762f7](_0x386530[_0xbd84('0x6c')],_0x386530[_0xbd84('0x5a')][_0xbd84('0x64')],_0x386530['value'][_0xbd84('0x17')]);}}}else{var _0x4f0e6c=_(_0x46a9ea[_0xbd84('0x3a')])[_0xbd84('0x6d')]()[_0xbd84('0x2a')](function(_0x32ac29){return _[_0xbd84('0x6e')](_0x1695ab,[_0xbd84('0x27'),_0x32ac29])?_0x32ac29:undefined;})['compact']()[_0xbd84('0x5a')]();if(!_[_0xbd84('0x6f')](_0x4f0e6c)){_0x4f0e6c[_0xbd84('0x2e')](function(_0x102401){if(_0x102401===_0xbd84('0x70')){_0x217d90[_0xbd84('0x42')](_0xbd84('0x71'),[][_0xbd84('0x72')](_0x46a9ea[_0xbd84('0x3a')][_0x102401]));}else if(_0x102401===_0xbd84('0x73')){var _0x1a7f3f=JSON[_0xbd84('0x74')](_0x46a9ea['query'][_0x102401])[_0xbd84('0x75')];var _0x42ba22=JSON[_0xbd84('0x74')](_0x46a9ea['query'][_0x102401])[_0xbd84('0x76')];_0x217d90['where'](_0xbd84('0x77'),_0x1a7f3f,_0x42ba22);}else{if(_0x46a9ea[_0xbd84('0x3a')][_0x102401]===_0xbd84('0x78')){_0x217d90[_0xbd84('0x42')]('i.'+_0x102401+_0xbd84('0x79'));}else{_0x217d90[_0xbd84('0x42')]('i.'+_0x102401+_0xbd84('0x7a'),_0x46a9ea[_0xbd84('0x3a')][_0x102401]);}}});}if(_0x46a9ea[_0xbd84('0x3a')][_0xbd84('0x7b')]){if(_0x46a9ea[_0xbd84('0x3a')]['read']==0x1){_0x217d90[_0xbd84('0x5b')]('`unreadMessages`\x20=\x200');}else{_0x217d90[_0xbd84('0x5b')]('`unreadMessages`\x20>\x200');}}if(_0x46a9ea[_0xbd84('0x3a')][_0xbd84('0x7c')]){_0x38e003=_[_0xbd84('0x7d')](_0x46a9ea['query'][_0xbd84('0x7c')])?_0x46a9ea[_0xbd84('0x3a')][_0xbd84('0x7c')]:new Array(_0x46a9ea[_0xbd84('0x3a')][_0xbd84('0x7c')]);_0x38e003[_0xbd84('0x2e')](function(_0x27f452){_0xbdcf0c['or'](_0xbd84('0x66'),'%,'+_0x27f452+',%');});}if(_0x46a9ea[_0xbd84('0x3a')][_0xbd84('0x7e')]){var _0x577136=_0x46a9ea[_0xbd84('0x3a')][_0xbd84('0x7e')][_0xbd84('0x7f')]('\x5c','\x5c\x5c')[_0xbd84('0x7f')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x577136)){_0x153220['or'](_0xbd84('0x80'),_0x577136+'%')['or'](_0xbd84('0x81'),_0x577136+'%');}_0x153220['or'](_0xbd84('0x82'),_0x577136+'%');}}_0x217d90['where'](_0x153220);_0x217d90[_0xbd84('0x83')](_0xbd84('0x84'));var _0x3f506d={'type':db['Sequelize'][_0xbd84('0x85')]['SELECT'],'raw':!![]};var _0x4a4a30=_0x217d90[_0xbd84('0x86')]();_0x4a4a30[_0xbd84('0x45')]('i.id');_0x4a4a30[_0xbd84('0x45')](_0xbd84('0x87'),_0xbd84('0x88'));if(_0x56a37b[_0xbd84('0x40')]){_0x56a37b['order'][_0xbd84('0x2e')](function(_0x4e44a4){var _0x1e2942=_0x4e44a4[0x0]===_0xbd84('0x89')?_0x4e44a4[0x0]:'i.'+_0x4e44a4[0x0];_0x217d90[_0xbd84('0x40')](_0x1e2942,_0x4e44a4[0x1]===_0xbd84('0x8a')?![]:!![]);});}if(!_['isEmpty'](_0x38e003)){_0x217d90[_0xbd84('0x5b')](_0xbdcf0c);_0x4a4a30['where'](_0xbd84('0x8b'),_0x38e003);}BPromise[_0xbd84('0x8c')]()['then'](function(){if(!_0x417e4e){if(_0x46a9ea[_0xbd84('0x3a')][_0xbd84('0x70')])return;_0x4a4a30[_0xbd84('0x42')](_0xbd84('0x8d'));_0x217d90[_0xbd84('0x42')](_0xbd84('0x8d'));return;}if(_0x46a9ea[_0xbd84('0x8e')][_0xbd84('0x8f')]!=='agent')return;return _0x46a9ea['user'][_0xbd84('0x90')]({'attributes':['id'],'raw':!![]})[_0xbd84('0x22')](function(_0x4ba6dd){if(_[_0xbd84('0x6f')](_0x4ba6dd)){_0x4a4a30[_0xbd84('0x42')](_0xbd84('0x91'));_0x217d90[_0xbd84('0x42')]('i.FaxAccountId\x20IS\x20NULL');}else{_0x4a4a30[_0xbd84('0x42')](_0xbd84('0x71'),_['map'](_0x4ba6dd,'id'));_0x217d90['where'](_0xbd84('0x71'),_[_0xbd84('0x2a')](_0x4ba6dd,'id'));}});})[_0xbd84('0x22')](function(){if(_0x46a9ea[_0xbd84('0x8e')][_0xbd84('0x8f')]===_0xbd84('0x92')&&!_0x417e4e&&!_0x46a9ea[_0xbd84('0x3a')]['FaxAccountId'])return[];return db[_0xbd84('0x93')][_0xbd84('0x3a')](_0x4a4a30[_0xbd84('0x94')](),_0x3f506d);})[_0xbd84('0x22')](function(_0x4a9878){_0x5235d0[_0xbd84('0x1c')]=_0x4a9878['length'];if(_0x5235d0[_0xbd84('0x1c')]===0x0)return[];return db[_0xbd84('0x93')]['query'](_0x5581e5[_0xbd84('0x94')](),_0x3f506d)[_0xbd84('0x22')](function(_0x1df510){_0x748db2=_[_0xbd84('0x95')](_0x1df510,'id');_0x3f506d=_[_0xbd84('0x96')](_0x3f506d,{'model':db[_0xbd84('0x32')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x46a9ea[_0xbd84('0x3a')][_0xbd84('0x3b')]){_0x56a37b[_0xbd84('0x3c')]['forEach'](function(_0x941253){_0x217d90[_0xbd84('0x45')]('i.'+_0x941253);});}else{_0x217d90[_0xbd84('0x45')](_0xbd84('0x87'),_0xbd84('0x88'));_0x217d90['field'](_0xbd84('0x97'),_0xbd84('0x98'));_0x217d90[_0xbd84('0x45')](_0xbd84('0x99'),_0xbd84('0x9a'));_0x217d90[_0xbd84('0x45')](_0xbd84('0x9b'),_0xbd84('0x89'));_0x217d90[_0xbd84('0x45')](_0xbd84('0x9c'));_0x217d90['field'](_0xbd84('0x9d'),_0xbd84('0x9e'));_0x217d90['field'](_0xbd84('0x9f'),'Contact.lastName');_0x217d90[_0xbd84('0x45')](_0xbd84('0xa0'),_0xbd84('0xa1'));_0x217d90['field'](_0xbd84('0xa2'),_0xbd84('0xa3'));_0x217d90[_0xbd84('0x45')](_0xbd84('0xa4'),'Contact.mobile');_0x217d90[_0xbd84('0x45')](_0xbd84('0xa5'),'Contact.fax');_0x217d90[_0xbd84('0x45')](_0xbd84('0xa6'),_0xbd84('0xa7'));_0x217d90[_0xbd84('0x45')](_0xbd84('0xa8'),_0xbd84('0xa9'));_0x217d90[_0xbd84('0x45')](_0xbd84('0xaa'),_0xbd84('0x2b'));}if(_0x56a37b['limit'])_0x217d90[_0xbd84('0x1b')](_0x56a37b[_0xbd84('0x1b')]);if(_0x56a37b[_0xbd84('0x19')])_0x217d90[_0xbd84('0x19')](_0x56a37b['offset']);return db['sequelize'][_0xbd84('0x3a')](_0x217d90[_0xbd84('0x94')](),_0x3f506d);})[_0xbd84('0x22')](function(_0x1b169e){if(_0x1b169e[_0xbd84('0x3d')]>0x0)_0x2e87df[_0xbd84('0x42')]('ui.FaxInteractionId\x20IN\x20?',_[_0xbd84('0x2a')](_0x1b169e,'id'));return db[_0xbd84('0x93')][_0xbd84('0x3a')](_0x2e87df['toString'](),_0x3f506d)[_0xbd84('0x22')](function(_0x1f8ff7){var _0x120740=_[_0xbd84('0xab')](_0x1f8ff7,_0xbd84('0xac'));var _0x1a52df=[];_0x1b169e[_0xbd84('0x2e')](function(_0x2ea505){_0x1a52df[_0xbd84('0x2f')](updateFaxInteraction(_0x2ea505,_0x748db2,_0x120740));});return BPromise[_0xbd84('0xad')](_0x1a52df);});});})[_0xbd84('0x22')](function(_0x20effc){_0x5235d0['rows']=_0x20effc;return _0x5235d0;})['then'](respondWithFilteredResult(_0x3efdd0,_0x56a37b))[_0xbd84('0x30')](handleError(_0x3efdd0,null));};exports[_0xbd84('0xae')]=function(_0x2c50ea,_0x3bad25){var _0x391e33={'raw':![],'where':{'id':_0x2c50ea[_0xbd84('0xaf')]['id']}},_0x3a6b21={};_0x3a6b21[_0xbd84('0x37')]=_[_0xbd84('0x6d')](db[_0xbd84('0x32')][_0xbd84('0x33')]);_0x3a6b21[_0xbd84('0x3a')]=_[_0xbd84('0x6d')](_0x2c50ea[_0xbd84('0x3a')]);_0x3a6b21[_0xbd84('0x38')]=_['intersection'](_0x3a6b21[_0xbd84('0x37')],_0x3a6b21[_0xbd84('0x3a')]);_0x391e33[_0xbd84('0x3c')]=_[_0xbd84('0x39')](_0x3a6b21[_0xbd84('0x37')],qs['fields'](_0x2c50ea['query'][_0xbd84('0x3b')]));_0x391e33[_0xbd84('0x3c')]=_0x391e33[_0xbd84('0x3c')][_0xbd84('0x3d')]?_0x391e33['attributes']:_0x3a6b21[_0xbd84('0x37')];if(_0x2c50ea[_0xbd84('0x3a')][_0xbd84('0xb0')]){_0x391e33[_0xbd84('0xb1')]=[{'all':!![]}];}_0x391e33=_['merge']({},_0x391e33,_0x2c50ea['options']);return db[_0xbd84('0x32')][_0xbd84('0x61')](_0x391e33)[_0xbd84('0x22')](handleEntityNotFound(_0x3bad25,null))['then'](respondWithResult(_0x3bad25,null))[_0xbd84('0x30')](handleError(_0x3bad25,null));};exports[_0xbd84('0xb2')]=function(_0x16d9d6,_0xee5d8){return db[_0xbd84('0x32')][_0xbd84('0xb2')](_0x16d9d6['body'],{})[_0xbd84('0x22')](respondWithResult(_0xee5d8,0xc9))[_0xbd84('0x30')](handleError(_0xee5d8,null));};exports[_0xbd84('0x21')]=function(_0x2461ad,_0x1df88a){if(_0x2461ad['body']['id']){delete _0x2461ad[_0xbd84('0xb3')]['id'];}return db[_0xbd84('0x32')][_0xbd84('0x61')]({'where':{'id':_0x2461ad['params']['id']}})[_0xbd84('0x22')](handleEntityNotFound(_0x1df88a,null))[_0xbd84('0x22')](saveUpdates(_0x2461ad[_0xbd84('0xb3')],null))[_0xbd84('0x22')](respondWithResult(_0x1df88a,null))[_0xbd84('0x30')](handleError(_0x1df88a,null));};exports[_0xbd84('0x23')]=function(_0x881cc2,_0x2b968e){return db[_0xbd84('0x32')][_0xbd84('0x61')]({'where':{'id':_0x881cc2[_0xbd84('0xaf')]['id']}})[_0xbd84('0x22')](handleEntityNotFound(_0x2b968e,null))[_0xbd84('0x22')](removeEntity(_0x2b968e,null))['catch'](handleError(_0x2b968e,null));};exports['describe']=function(_0x14e532,_0x101e50){return db[_0xbd84('0x32')][_0xbd84('0xb4')]()[_0xbd84('0x22')](respondWithResult(_0x101e50,null))[_0xbd84('0x30')](handleError(_0x101e50,null));};exports[_0xbd84('0xb5')]=function(_0xa4d53b,_0x387f41,_0x214813){return db['FaxMessage'][_0xbd84('0x61')]({'where':{'id':_0xa4d53b['params']['id']}})[_0xbd84('0x22')](handleEntityNotFound(_0x387f41,null))[_0xbd84('0x22')](function(_0x462762){if(_0x462762){return _0x462762[_0xbd84('0xb5')](_0xa4d53b[_0xbd84('0xb3')][_0xbd84('0xb6')],_[_0xbd84('0xb7')](_0xa4d53b['body'],[_0xbd84('0xb6'),'id'])||{});}})[_0xbd84('0x22')](respondWithResult(_0x387f41,null))['catch'](handleError(_0x387f41,null));};exports[_0xbd84('0xb8')]=function(_0x4f116f,_0x13096d,_0xb9604){var _0x306ff6={'raw':![],'where':{}};var _0x46ae09={};var _0x17ab73={'count':0x0,'rows':[]};return db['FaxInteraction'][_0xbd84('0xb9')]({'where':{'id':_0x4f116f[_0xbd84('0xaf')]['id']}})[_0xbd84('0x22')](handleEntityNotFound(_0x13096d,null))[_0xbd84('0x22')](function(_0x3217f2){if(_0x3217f2){_0x46ae09['model']=_['keys'](db['FaxMessage'][_0xbd84('0x33')]);_0x46ae09['query']=_[_0xbd84('0x6d')](_0x4f116f[_0xbd84('0x3a')]);_0x46ae09[_0xbd84('0x38')]=_[_0xbd84('0x39')](_0x46ae09[_0xbd84('0x37')],_0x46ae09['query']);_0x306ff6[_0xbd84('0x3c')]=_[_0xbd84('0x39')](_0x46ae09['model'],qs[_0xbd84('0x3b')](_0x4f116f[_0xbd84('0x3a')]['fields']));_0x306ff6[_0xbd84('0x3c')]=_0x306ff6[_0xbd84('0x3c')][_0xbd84('0x3d')]?_0x306ff6[_0xbd84('0x3c')]:_0x46ae09[_0xbd84('0x37')];if(!_0x4f116f[_0xbd84('0x3a')][_0xbd84('0x3e')](_0xbd84('0x3f'))){_0x306ff6[_0xbd84('0x1b')]=qs[_0xbd84('0x1b')](_0x4f116f['query'][_0xbd84('0x1b')]);_0x306ff6[_0xbd84('0x19')]=qs[_0xbd84('0x19')](_0x4f116f[_0xbd84('0x3a')][_0xbd84('0x19')]);}_0x306ff6[_0xbd84('0x40')]=qs['sort'](_0x4f116f[_0xbd84('0x3a')][_0xbd84('0x41')]);_0x306ff6[_0xbd84('0x42')]=qs[_0xbd84('0x38')](_[_0xbd84('0x43')](_0x4f116f[_0xbd84('0x3a')],_0x46ae09[_0xbd84('0x38')]));_0x306ff6['where'][_0xbd84('0xac')]=_0x3217f2['id'];if(_0x4f116f['query'][_0xbd84('0x7e')]){_0x306ff6[_0xbd84('0x42')]=_[_0xbd84('0x96')](_0x306ff6['where'],{'$or':_[_0xbd84('0x2a')](_0x306ff6[_0xbd84('0x3c')],function(_0x30cbba){var _0x41ca5a={};_0x41ca5a[_0x30cbba]={'$like':'%'+_0x4f116f[_0xbd84('0x3a')][_0xbd84('0x7e')]+'%'};return _0x41ca5a;})});}if(_0x4f116f['query'][_0xbd84('0x75')]){var _0x2c5da=_0x4f116f[_0xbd84('0x3a')][_0xbd84('0x75')][_0xbd84('0x2d')](',');var _0x76ff2b={};_0x76ff2b[_0x2c5da[0x0]]={'$gte':moment(_0x2c5da[0x1])[_0xbd84('0xba')](_0xbd84('0xbb'))};_0x306ff6['where']=_['merge'](_0x306ff6[_0xbd84('0x42')],_0x76ff2b);}_0x306ff6=_['merge']({},_0x306ff6,_0x4f116f['options']);return db['FaxMessage']['count']({'where':_0x306ff6[_0xbd84('0x42')]})[_0xbd84('0x22')](function(_0x37c5e5){_0x17ab73[_0xbd84('0x1c')]=_0x37c5e5;if(_0x4f116f[_0xbd84('0x3a')][_0xbd84('0xb0')]){_0x306ff6[_0xbd84('0xb1')]=[{'all':!![]}];}return db[_0xbd84('0xbc')][_0xbd84('0xbd')](_0x306ff6);})[_0xbd84('0x22')](function(_0x584bd5){_0x17ab73['rows']=_0x584bd5;return _0x17ab73;});}})['then'](respondWithFilteredResult(_0x13096d,_0x306ff6))[_0xbd84('0x30')](handleError(_0x13096d,null));};exports['addTags']=function(_0x5d0cc6,_0xacae71,_0x166678){return db[_0xbd84('0x32')][_0xbd84('0x61')]({'where':{'id':_0x5d0cc6['params']['id']}})['then'](handleEntityNotFound(_0xacae71,null))[_0xbd84('0x22')](function(_0x4dd3ac){if(_0x4dd3ac){return _0x4dd3ac[_0xbd84('0xbe')](_0x5d0cc6[_0xbd84('0xb3')][_0xbd84('0xb6')],_['omit'](_0x5d0cc6[_0xbd84('0xb3')],[_0xbd84('0xb6'),'id'])||{})[_0xbd84('0xbf')](function(){return db['Tag'][_0xbd84('0xbd')]({'attributes':['id',_0xbd84('0x27'),_0xbd84('0xc0')],'where':{'id':_0x5d0cc6[_0xbd84('0xb3')][_0xbd84('0xb6')]}});})[_0xbd84('0x22')](function(_0x4963ba){socket[_0xbd84('0xc1')]('faxInteractionTags:save',{'id':Number(_0x5d0cc6['params']['id']),'tags':_0x4963ba||[]});return{'id':Number(_0x5d0cc6[_0xbd84('0xaf')]['id']),'tags':_0x4963ba||[]};});}})[_0xbd84('0x22')](respondWithResult(_0xacae71,null))[_0xbd84('0x30')](handleError(_0xacae71,null));};exports[_0xbd84('0xc2')]=function(_0x1e210e,_0x3dd3c2,_0x2f122c){return db[_0xbd84('0x32')]['find']({'where':{'id':_0x1e210e['params']['id']}})[_0xbd84('0x22')](handleEntityNotFound(_0x3dd3c2,null))['then'](function(_0x40859e){if(_0x40859e){return _0x40859e[_0xbd84('0xc2')](_0x1e210e[_0xbd84('0x3a')][_0xbd84('0xb6')]);}})[_0xbd84('0x22')](respondWithStatusCode(_0x3dd3c2,null))['catch'](handleError(_0x3dd3c2,null));};exports['download']=function(_0x3285fe,_0x5ebb4a){var _0x329c5b=moment()['unix']()[_0xbd84('0x94')]();var _0x2dc096=path[_0xbd84('0xc3')](config[_0xbd84('0xc4')],_0xbd84('0xc5'),_0xbd84('0xc6'),_0xbd84('0xc7'));var _0x52ce8c=path[_0xbd84('0xc3')](config[_0xbd84('0xc4')],_0xbd84('0xc5'),'files',_0xbd84('0xc8'));var _0x1bc40d=path[_0xbd84('0xc3')](_0x2dc096,_0x329c5b);var _0x5c3cff=util[_0xbd84('0xba')](_0xbd84('0xc9'),_0x3285fe['params']['id'],_0x329c5b);var _0x52e9ef=path['join'](_0x2dc096,_0x5c3cff);var _0x3d948b=[];_0x3d948b[_0xbd84('0x2f')]({'model':db[_0xbd84('0xca')],'as':_0xbd84('0xca'),'raw':!![]});var _0x5cb3ed=[{'model':db['FaxMessage'],'as':_0xbd84('0xcb'),'attributes':['id','body',_0xbd84('0x73')],'include':_0x3d948b}];return db[_0xbd84('0x32')]['find']({'where':{'id':_0x3285fe['params']['id']},'include':_0x5cb3ed})[_0xbd84('0x22')](handleEntityNotFound(_0x5ebb4a,null))['then'](function(_0x4c9e13){if(_0x4c9e13&&_0x4c9e13[_0xbd84('0xcb')]){var _0x21eaaf=_0x4c9e13[_0xbd84('0xcc')]({'plain':!![]});fs[_0xbd84('0xcd')](_0x1bc40d);for(var _0x37d44d=0x0;_0x37d44d<_0x21eaaf['Messages'][_0xbd84('0x3d')];_0x37d44d++){var _0xeca945=_0x21eaaf['Messages'][_0x37d44d][_0xbd84('0xca')];if(_0xeca945){var _0x52c27e=path[_0xbd84('0xc3')](_0x52ce8c,_0xeca945[_0xbd84('0xce')]);if(fs[_0xbd84('0xcf')](_0x52c27e)){fs[_0xbd84('0xd0')](_0x52c27e)[_0xbd84('0xd1')](fs['createWriteStream'](path['join'](_0x1bc40d,_0xeca945[_0xbd84('0xce')])));}}}return BPromise[_0xbd84('0x8c')]()[_0xbd84('0x22')](function(){return new BPromise(function(_0x33debc,_0x540f5e){zipdir(_0x1bc40d,{'saveTo':_0x52e9ef},function(_0x395a7f,_0x763874){if(_0x395a7f)return _0x540f5e(_0x395a7f);return _0x33debc(_0x763874);});})[_0xbd84('0x22')](function(){return new BPromise(function(_0x547a18,_0x279611){rimraf(_0x1bc40d,function(_0x31d127){if(_0x31d127)_0x279611(_0x31d127);return _0x547a18();});});})[_0xbd84('0x22')](function(){return _0x5ebb4a[_0xbd84('0xd2')](_0x52e9ef,_0x5c3cff,function(_0x13f797){if(_0x13f797){console[_0xbd84('0xd3')](_0xbd84('0xd4'),_0x13f797);}else{fs[_0xbd84('0xd5')](_0x52e9ef);}});});});}else{return _0x5ebb4a[_0xbd84('0x24')](0xc8);}})[_0xbd84('0x30')](handleError(_0x5ebb4a,null));};
\ No newline at end of file
+var _0xf4b8=['fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','register','status','end','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','Users','map','TagIds','Tags','FaxInteraction','rawAttributes','fieldName','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','select','field','color','from','tools_tags','u.id','u.fullname','user_has_fax_interactions','left_join','users','u.id\x20=\x20ui.UserId','fax_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','fax_accounts','fax_messages','fax_interaction_has_tags','t.id\x20=\x20it.TagId','expr','parseSearch','search','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','type','text','Tag','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','start','body','some','isEmpty','FaxAccountId','i.FaxAccountId\x20IN\x20?','createdAt','parse','$gte','$lte','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','replace','isNumeric','i.fax\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','Sequelize','QueryTypes','clone','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','agent','getFaxAccounts','role','sequelize','toString','keyBy','a.key','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','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','FaxInteractionId','push','all','rows','catch','params','includeAll','options','create','describe','addMessage','ids','omit','getMessages','findOne','filter','merge','split','YYYY-MM-DD\x20HH:mm:ss','FaxMessage','include','findAll','addTags','setTags','spread','emit','faxInteractionTags:save','download','unix','join','root','server','files','tmp','format','transcript-%d-%s.zip','Messages','get','mkdirSync','Attachment','basename','existsSync','createWriteStream','resolve','err','unlinkSync','eml-format','zip-dir'];(function(_0x351b11,_0x4b66cc){var _0x206b53=function(_0x179c45){while(--_0x179c45){_0x351b11['push'](_0x351b11['shift']());}};_0x206b53(++_0x4b66cc);}(_0xf4b8,0x1b8));var _0x8f4b=function(_0x2f9940,_0x1f0ed7){_0x2f9940=_0x2f9940-0x0;var _0x4f751a=_0xf4b8[_0x2f9940];return _0x4f751a;};'use strict';var emlformat=require(_0x8f4b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8f4b('0x1'));var jsonpatch=require(_0x8f4b('0x2'));var rp=require(_0x8f4b('0x3'));var moment=require(_0x8f4b('0x4'));var BPromise=require(_0x8f4b('0x5'));var Mustache=require(_0x8f4b('0x6'));var util=require(_0x8f4b('0x7'));var path=require(_0x8f4b('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x8f4b('0x9'));var fs=require('fs');var fs_extra=require(_0x8f4b('0xa'));var _=require(_0x8f4b('0xb'));var squel=require(_0x8f4b('0xc'));var crypto=require(_0x8f4b('0xd'));var jsforce=require(_0x8f4b('0xe'));var deskjs=require(_0x8f4b('0xf'));var toCsv=require(_0x8f4b('0x10'));var querystring=require('querystring');var Papa=require(_0x8f4b('0x11'));var Redis=require(_0x8f4b('0x12'));var authService=require(_0x8f4b('0x13'));var qs=require(_0x8f4b('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8f4b('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x8f4b('0x16'));var config=require(_0x8f4b('0x17'));var licenseUtil=require(_0x8f4b('0x18'));var db=require(_0x8f4b('0x19'))['db'];config[_0x8f4b('0x1a')]=_[_0x8f4b('0x1b')](config[_0x8f4b('0x1a')],{'host':_0x8f4b('0x1c'),'port':0x18eb});var socket=require(_0x8f4b('0x1d'))(new Redis(config[_0x8f4b('0x1a')]));require(_0x8f4b('0x1e'))[_0x8f4b('0x1f')](socket);function respondWithStatusCode(_0x260e9a,_0x3c152f){_0x3c152f=_0x3c152f||0xcc;return function(_0x5bb592){if(_0x5bb592){return _0x260e9a['sendStatus'](_0x3c152f);}return _0x260e9a[_0x8f4b('0x20')](_0x3c152f)[_0x8f4b('0x21')]();};}function respondWithResult(_0x5e5ae7,_0x5374d5){_0x5374d5=_0x5374d5||0xc8;return function(_0xc31c95){if(_0xc31c95){return _0x5e5ae7[_0x8f4b('0x20')](_0x5374d5)['json'](_0xc31c95);}};}function respondWithFilteredResult(_0x3a4021,_0x53391d){return function(_0x15555e){if(_0x15555e){var _0x190761=typeof _0x53391d['offset']===_0x8f4b('0x22')&&typeof _0x53391d[_0x8f4b('0x23')]===_0x8f4b('0x22');var _0xdbf9dc=_0x15555e[_0x8f4b('0x24')];var _0x2e077f=_0x190761?0x0:_0x53391d[_0x8f4b('0x25')];var _0x5b5af4=_0x190761?_0x15555e['count']:_0x53391d['offset']+_0x53391d[_0x8f4b('0x23')];var _0x326c97;if(_0x5b5af4>=_0xdbf9dc){_0x5b5af4=_0xdbf9dc;_0x326c97=0xc8;}else{_0x326c97=0xce;}_0x3a4021['status'](_0x326c97);return _0x3a4021[_0x8f4b('0x26')](_0x8f4b('0x27'),_0x2e077f+'-'+_0x5b5af4+'/'+_0xdbf9dc)['json'](_0x15555e);}return null;};}function patchUpdates(_0x2b1a19){return function(_0x3ef9e0){try{jsonpatch[_0x8f4b('0x28')](_0x3ef9e0,_0x2b1a19,!![]);}catch(_0x2a8dc4){return BPromise[_0x8f4b('0x29')](_0x2a8dc4);}return _0x3ef9e0[_0x8f4b('0x2a')]();};}function saveUpdates(_0x46400c,_0x23cb40){return function(_0x11d57d){if(_0x11d57d){return _0x11d57d[_0x8f4b('0x2b')](_0x46400c)[_0x8f4b('0x2c')](function(_0x357b7a){return _0x357b7a;});}return null;};}function removeEntity(_0x53b96c,_0x2999bd){return function(_0x28fd10){if(_0x28fd10){return _0x28fd10[_0x8f4b('0x2d')]()[_0x8f4b('0x2c')](function(){_0x53b96c[_0x8f4b('0x20')](0xcc)[_0x8f4b('0x21')]();});}};}function handleEntityNotFound(_0x48e39d,_0x251a19){return function(_0xab837c){if(!_0xab837c){_0x48e39d[_0x8f4b('0x2e')](0x194);}return _0xab837c;};}function handleError(_0x5369cd,_0x3357db){_0x3357db=_0x3357db||0x1f4;return function(_0x3f09fa){logger[_0x8f4b('0x2f')](_0x3f09fa[_0x8f4b('0x30')]);if(_0x3f09fa[_0x8f4b('0x31')]){delete _0x3f09fa[_0x8f4b('0x31')];}_0x5369cd[_0x8f4b('0x20')](_0x3357db)[_0x8f4b('0x32')](_0x3f09fa);};}function getInteractionUsers(_0x165255,_0x34350f){return new BPromise(function(_0x5f14e2,_0x3110ba){try{if(_0x34350f[_0x165255['id']]){_0x165255[_0x8f4b('0x33')]=_[_0x8f4b('0x34')](_0x34350f[_0x165255['id']],function(_0x29b90b){return{'id':_0x29b90b['id'],'fullname':_0x29b90b['fullname']};});}}catch(_0x40542d){_0x3110ba(_0x40542d);}_0x5f14e2(_0x165255);});}function getInteractionTags(_0x576c0c,_0x548fbf){return new BPromise(function(_0x4b341e,_0x4665a9){try{if(_0x576c0c[_0x8f4b('0x35')]){_0x576c0c[_0x8f4b('0x36')]=[];_0x576c0c[_0x8f4b('0x35')]['split'](',')['forEach'](function(_0x490c37){_0x576c0c[_0x8f4b('0x36')]['push'](_0x548fbf[_0x490c37]);});}delete _0x576c0c[_0x8f4b('0x35')];}catch(_0x484843){_0x4665a9(_0x484843);}_0x4b341e(_0x576c0c);});}function updateFaxInteraction(_0x3a11ca,_0x574e9f,_0x4c1562){return new BPromise(function(_0xb72a3b,_0x4461db){return getInteractionUsers(_0x3a11ca,_0x4c1562)[_0x8f4b('0x2c')](function(_0x28c0c1){return getInteractionTags(_0x28c0c1,_0x574e9f);})[_0x8f4b('0x2c')](function(_0x11b7f5){_0xb72a3b(_0x11b7f5);})['catch'](function(_0x5722d7){_0x4461db(_0x5722d7);});});}exports['index']=function(_0xd09c64,_0x3b9237){var _0x10953e={},_0x37e124={},_0x5cad51={'count':0x0,'rows':[]};var _0x444bf9=_[_0x8f4b('0x34')](db[_0x8f4b('0x37')][_0x8f4b('0x38')],function(_0x575406){return{'name':_0x575406[_0x8f4b('0x39')],'type':_0x575406['type'][_0x8f4b('0x3a')]};});_0x37e124[_0x8f4b('0x3b')]=_[_0x8f4b('0x34')](_0x444bf9,_0x8f4b('0x31'));_0x37e124['query']=_[_0x8f4b('0x3c')](_0xd09c64[_0x8f4b('0x3d')]);_0x37e124[_0x8f4b('0x3e')]=_[_0x8f4b('0x3f')](_0x37e124[_0x8f4b('0x3b')],_0x37e124[_0x8f4b('0x3d')]);_0x10953e['attributes']=_[_0x8f4b('0x3f')](_0x37e124[_0x8f4b('0x3b')],qs[_0x8f4b('0x40')](_0xd09c64[_0x8f4b('0x3d')][_0x8f4b('0x40')]));_0x10953e[_0x8f4b('0x41')]=_0x10953e[_0x8f4b('0x41')][_0x8f4b('0x42')]?_0x10953e['attributes']:_0x37e124[_0x8f4b('0x3b')];if(!_0xd09c64[_0x8f4b('0x3d')][_0x8f4b('0x43')](_0x8f4b('0x44'))){_0x10953e[_0x8f4b('0x23')]=qs[_0x8f4b('0x23')](_0xd09c64[_0x8f4b('0x3d')][_0x8f4b('0x23')]);_0x10953e['offset']=qs[_0x8f4b('0x25')](_0xd09c64[_0x8f4b('0x3d')][_0x8f4b('0x25')]);}_0x10953e[_0x8f4b('0x45')]=qs[_0x8f4b('0x46')](_0xd09c64[_0x8f4b('0x3d')][_0x8f4b('0x46')]);_0x10953e[_0x8f4b('0x47')]=qs[_0x8f4b('0x3e')](_[_0x8f4b('0x48')](_0xd09c64[_0x8f4b('0x3d')],_0x37e124['filters']),_0x444bf9);var _0xbf9cc9=[];var _0x29cc85=squel[_0x8f4b('0x49')]()[_0x8f4b('0x4a')]('id')[_0x8f4b('0x4a')](_0x8f4b('0x31'))[_0x8f4b('0x4a')](_0x8f4b('0x4b'))[_0x8f4b('0x4c')](_0x8f4b('0x4d'));var _0x937052=squel[_0x8f4b('0x49')]()[_0x8f4b('0x4a')](_0x8f4b('0x4e'))[_0x8f4b('0x4a')](_0x8f4b('0x4f'))[_0x8f4b('0x4a')]('ui.FaxInteractionId')[_0x8f4b('0x4c')](_0x8f4b('0x50'),'ui')[_0x8f4b('0x51')](_0x8f4b('0x52'),'u',_0x8f4b('0x53'));var _0x49bab6=squel[_0x8f4b('0x49')]()[_0x8f4b('0x4c')](_0x8f4b('0x54'),'i')[_0x8f4b('0x51')](_0x8f4b('0x55'),'c',_0x8f4b('0x56'))[_0x8f4b('0x51')](_0x8f4b('0x52'),'o',_0x8f4b('0x57'))[_0x8f4b('0x51')](_0x8f4b('0x58'),'a','a.id\x20=\x20i.FaxAccountId')[_0x8f4b('0x51')](_0x8f4b('0x59'),'me','me.FaxInteractionId\x20=\x20i.id')['left_join'](_0x8f4b('0x5a'),'it','it.FaxInteractionId\x20=\x20i.id')[_0x8f4b('0x51')](_0x8f4b('0x4d'),'t',_0x8f4b('0x5b'));var _0x940bf=squel[_0x8f4b('0x5c')]();var _0x34aba0=[];var _0x4d81a2=squel[_0x8f4b('0x5c')]();var _0x1f0ff2;if(_0xd09c64[_0x8f4b('0x3d')]['search']){_0x1f0ff2=as[_0x8f4b('0x5d')](_0xd09c64[_0x8f4b('0x3d')][_0x8f4b('0x5e')]);var _0x52d912=_0x1f0ff2['sqlOperator'];for(var _0x578651=0x0;_0x578651<_0x1f0ff2['conditions'][_0x8f4b('0x42')];_0x578651++){var _0x364bb5=_0x1f0ff2['conditions'][_0x578651];var _0x5f894f='i';var _0x996851=_[_0x8f4b('0x5f')](_0x444bf9,['name',_0x364bb5['field']]);if(!_0x996851){switch(_0x364bb5[_0x8f4b('0x4a')]){case _0x8f4b('0x60'):if(_0x364bb5[_0x8f4b('0x61')]==0x1){_0x49bab6[_0x8f4b('0x62')]('`'+_0x364bb5[_0x8f4b('0x4a')]+_0x8f4b('0x63'));}else{_0x49bab6['having']('`'+_0x364bb5[_0x8f4b('0x4a')]+_0x8f4b('0x64'));}break;case _0x8f4b('0x65'):if(_0x364bb5[_0x8f4b('0x66')]===_0x8f4b('0x67')){if(_0x364bb5[_0x8f4b('0x61')]['split']('\x20')[_0x8f4b('0x42')]>0x1){_0x940bf[_0x52d912](_0x8f4b('0x68'),qs['getFullTextValue'](_0x364bb5[_0x8f4b('0x61')]),null);}else{var _0x4eb190='%'+_0x364bb5['value']+'%';_0x940bf[_0x52d912](_0x8f4b('0x69'),_0x4eb190,_0x4eb190,_0x4eb190);}}else{_0x996851=_[_0x8f4b('0x5f')](_0x444bf9,[_0x8f4b('0x31'),_0x8f4b('0x6a')]);_0x364bb5[_0x8f4b('0x4a')]=_0x8f4b('0x6a');_0x48a67c=as[_0x8f4b('0x6b')](_0x5f894f,_0x996851[_0x8f4b('0x6c')],_0x364bb5);_0x940bf[_0x52d912](_0x48a67c[_0x8f4b('0x6d')],_0x48a67c[_0x8f4b('0x61')]['start'],_0x48a67c[_0x8f4b('0x61')][_0x8f4b('0x21')]);}break;case _0x8f4b('0x6e'):var _0x6b1b01=_0x364bb5[_0x8f4b('0x61')]['split'](',')['map'](function(_0x4dd6b2){return Number(_0x4dd6b2);});_0x6b1b01[_0x8f4b('0x6f')](function(_0x532fd2){_0x4d81a2['or'](_0x8f4b('0x70'),'%,'+_0x532fd2+',%');});_0x34aba0=_['union'](_0x34aba0,_0x6b1b01);break;case'User':if(_0x364bb5[_0x8f4b('0x66')]===_0x8f4b('0x67')){_0x940bf[_0x52d912](_0x8f4b('0x71'),'%'+_0x364bb5[_0x8f4b('0x61')]+'%',null);}else{_0x996851=_['find'](_0x444bf9,[_0x8f4b('0x31'),'UserId']);_0x364bb5['field']=_0x8f4b('0x72');_0x48a67c=as[_0x8f4b('0x6b')](_0x5f894f,_0x996851[_0x8f4b('0x6c')],_0x364bb5);_0x940bf[_0x52d912](_0x48a67c[_0x8f4b('0x6d')],_0x48a67c[_0x8f4b('0x61')][_0x8f4b('0x73')],_0x48a67c[_0x8f4b('0x61')][_0x8f4b('0x21')]);}break;case _0x8f4b('0x74'):_0x48a67c=as[_0x8f4b('0x6b')]('me',null,_0x364bb5);_0x940bf[_0x52d912](_0x48a67c['text'],_0x48a67c[_0x8f4b('0x61')][_0x8f4b('0x73')],_0x48a67c['value']['end']);break;}}else{var _0x48a67c=as[_0x8f4b('0x6b')](_0x5f894f,_0x996851['type'],_0x364bb5);_0x940bf[_0x52d912](_0x48a67c[_0x8f4b('0x6d')],_0x48a67c[_0x8f4b('0x61')][_0x8f4b('0x73')],_0x48a67c['value']['end']);}}}else{var _0x35763c=_(_0xd09c64[_0x8f4b('0x3d')])[_0x8f4b('0x3c')]()[_0x8f4b('0x34')](function(_0x21b4ad){return _[_0x8f4b('0x75')](_0x444bf9,[_0x8f4b('0x31'),_0x21b4ad])?_0x21b4ad:undefined;})['compact']()[_0x8f4b('0x61')]();if(!_[_0x8f4b('0x76')](_0x35763c)){_0x35763c['forEach'](function(_0x268b35){if(_0x268b35===_0x8f4b('0x77')){_0x49bab6['where'](_0x8f4b('0x78'),[]['concat'](_0xd09c64['query'][_0x268b35]));}else if(_0x268b35===_0x8f4b('0x79')){var _0x2c95da=JSON[_0x8f4b('0x7a')](_0xd09c64[_0x8f4b('0x3d')][_0x268b35])[_0x8f4b('0x7b')];var _0x2e9c97=JSON[_0x8f4b('0x7a')](_0xd09c64[_0x8f4b('0x3d')][_0x268b35])[_0x8f4b('0x7c')];_0x49bab6[_0x8f4b('0x47')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x2c95da,_0x2e9c97);}else{if(_0xd09c64[_0x8f4b('0x3d')][_0x268b35]===_0x8f4b('0x7d')){_0x49bab6[_0x8f4b('0x47')]('i.'+_0x268b35+_0x8f4b('0x7e'));}else{_0x49bab6[_0x8f4b('0x47')]('i.'+_0x268b35+_0x8f4b('0x7f'),_0xd09c64[_0x8f4b('0x3d')][_0x268b35]);}}});}if(_0xd09c64[_0x8f4b('0x3d')]['read']){if(_0xd09c64[_0x8f4b('0x3d')][_0x8f4b('0x80')]==0x1){_0x49bab6[_0x8f4b('0x62')](_0x8f4b('0x81'));}else{_0x49bab6[_0x8f4b('0x62')](_0x8f4b('0x82'));}}if(_0xd09c64[_0x8f4b('0x3d')][_0x8f4b('0x83')]){_0x34aba0=_[_0x8f4b('0x84')](_0xd09c64[_0x8f4b('0x3d')][_0x8f4b('0x83')])?_0xd09c64['query'][_0x8f4b('0x83')]:new Array(_0xd09c64[_0x8f4b('0x3d')]['tag']);_0x34aba0[_0x8f4b('0x6f')](function(_0x336d39){_0x4d81a2['or'](_0x8f4b('0x70'),'%,'+_0x336d39+',%');});}if(_0xd09c64[_0x8f4b('0x3d')]['filter']){var _0x449e47=_0xd09c64['query']['filter'][_0x8f4b('0x85')]('\x5c','\x5c\x5c')[_0x8f4b('0x85')](/'/g,'\x27\x27');if(qs[_0x8f4b('0x86')](_0x449e47)){_0x940bf['or']('i.id\x20LIKE\x20?',_0x449e47+'%')['or'](_0x8f4b('0x87'),_0x449e47+'%');}_0x940bf['or'](_0x8f4b('0x88'),_0x449e47+'%');}}_0x49bab6[_0x8f4b('0x47')](_0x940bf);_0x49bab6[_0x8f4b('0x89')]('i.id');var _0x2d2e7d={'type':db[_0x8f4b('0x8a')][_0x8f4b('0x8b')]['SELECT'],'raw':!![]};var _0x3328ac=_0x49bab6[_0x8f4b('0x8c')]();_0x3328ac['field'](_0x8f4b('0x8d'));_0x3328ac[_0x8f4b('0x4a')](_0x8f4b('0x8e'),_0x8f4b('0x60'));if(_0x10953e[_0x8f4b('0x45')]){_0x10953e['order'][_0x8f4b('0x6f')](function(_0x35aa6b){var _0x16dec2=_0x35aa6b[0x0]===_0x8f4b('0x8f')?_0x35aa6b[0x0]:'i.'+_0x35aa6b[0x0];_0x49bab6[_0x8f4b('0x45')](_0x16dec2,_0x35aa6b[0x1]===_0x8f4b('0x90')?![]:!![]);});}if(!_[_0x8f4b('0x76')](_0x34aba0)){_0x49bab6['having'](_0x4d81a2);_0x3328ac['where'](_0x8f4b('0x91'),_0x34aba0);}BPromise['resolve']()[_0x8f4b('0x2c')](function(){if(!_0x1f0ff2){if(_0xd09c64['query'][_0x8f4b('0x77')])return;_0x3328ac[_0x8f4b('0x47')](_0x8f4b('0x92'));_0x49bab6['where'](_0x8f4b('0x92'));return;}if(_0xd09c64[_0x8f4b('0x93')]['role']!==_0x8f4b('0x94'))return;return _0xd09c64['user'][_0x8f4b('0x95')]({'attributes':['id'],'raw':!![]})[_0x8f4b('0x2c')](function(_0x1f4b75){if(_[_0x8f4b('0x76')](_0x1f4b75)){_0x3328ac['where']('i.FaxAccountId\x20IS\x20NULL');_0x49bab6[_0x8f4b('0x47')]('i.FaxAccountId\x20IS\x20NULL');}else{_0x3328ac[_0x8f4b('0x47')](_0x8f4b('0x78'),_[_0x8f4b('0x34')](_0x1f4b75,'id'));_0x49bab6[_0x8f4b('0x47')](_0x8f4b('0x78'),_[_0x8f4b('0x34')](_0x1f4b75,'id'));}});})[_0x8f4b('0x2c')](function(){if(_0xd09c64[_0x8f4b('0x93')][_0x8f4b('0x96')]===_0x8f4b('0x94')&&!_0x1f0ff2&&!_0xd09c64[_0x8f4b('0x3d')][_0x8f4b('0x77')])return[];return db[_0x8f4b('0x97')][_0x8f4b('0x3d')](_0x3328ac['toString'](),_0x2d2e7d);})[_0x8f4b('0x2c')](function(_0x3b2c12){_0x5cad51[_0x8f4b('0x24')]=_0x3b2c12[_0x8f4b('0x42')];if(_0x5cad51[_0x8f4b('0x24')]===0x0)return[];return db[_0x8f4b('0x97')]['query'](_0x29cc85[_0x8f4b('0x98')](),_0x2d2e7d)['then'](function(_0x36104b){_0xbf9cc9=_[_0x8f4b('0x99')](_0x36104b,'id');_0x2d2e7d=_['merge'](_0x2d2e7d,{'model':db[_0x8f4b('0x37')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0xd09c64[_0x8f4b('0x3d')][_0x8f4b('0x40')]){_0x10953e[_0x8f4b('0x41')][_0x8f4b('0x6f')](function(_0x1f31c4){_0x49bab6[_0x8f4b('0x4a')]('i.'+_0x1f31c4);});}else{_0x49bab6['field'](_0x8f4b('0x8e'),_0x8f4b('0x60'));_0x49bab6[_0x8f4b('0x4a')](_0x8f4b('0x9a'),_0x8f4b('0x9b'));_0x49bab6['field']('a.mandatoryDisposition',_0x8f4b('0x9c'));_0x49bab6[_0x8f4b('0x4a')](_0x8f4b('0x9d'),_0x8f4b('0x8f'));_0x49bab6['field'](_0x8f4b('0x9e'));_0x49bab6[_0x8f4b('0x4a')](_0x8f4b('0x9f'),_0x8f4b('0xa0'));_0x49bab6[_0x8f4b('0x4a')](_0x8f4b('0xa1'),_0x8f4b('0xa2'));_0x49bab6[_0x8f4b('0x4a')](_0x8f4b('0xa3'),_0x8f4b('0xa4'));_0x49bab6['field']('c.phone',_0x8f4b('0xa5'));_0x49bab6[_0x8f4b('0x4a')](_0x8f4b('0xa6'),_0x8f4b('0xa7'));_0x49bab6[_0x8f4b('0x4a')](_0x8f4b('0xa8'),_0x8f4b('0xa9'));_0x49bab6[_0x8f4b('0x4a')](_0x8f4b('0xaa'),_0x8f4b('0xab'));_0x49bab6[_0x8f4b('0x4a')](_0x8f4b('0xac'),'Owner.internal');_0x49bab6[_0x8f4b('0x4a')](_0x8f4b('0xad'),_0x8f4b('0x35'));}if(_0x10953e['limit'])_0x49bab6[_0x8f4b('0x23')](_0x10953e[_0x8f4b('0x23')]);if(_0x10953e[_0x8f4b('0x25')])_0x49bab6['offset'](_0x10953e[_0x8f4b('0x25')]);return db[_0x8f4b('0x97')]['query'](_0x49bab6['toString'](),_0x2d2e7d);})[_0x8f4b('0x2c')](function(_0x1f0530){if(_0x1f0530[_0x8f4b('0x42')]>0x0)_0x937052['where']('ui.FaxInteractionId\x20IN\x20?',_['map'](_0x1f0530,'id'));return db['sequelize'][_0x8f4b('0x3d')](_0x937052[_0x8f4b('0x98')](),_0x2d2e7d)[_0x8f4b('0x2c')](function(_0x233be3){var _0x3bd2cb=_[_0x8f4b('0xae')](_0x233be3,_0x8f4b('0xaf'));var _0x3f976c=[];_0x1f0530[_0x8f4b('0x6f')](function(_0x1038a1){_0x3f976c[_0x8f4b('0xb0')](updateFaxInteraction(_0x1038a1,_0xbf9cc9,_0x3bd2cb));});return BPromise[_0x8f4b('0xb1')](_0x3f976c);});});})['then'](function(_0x631ef){_0x5cad51[_0x8f4b('0xb2')]=_0x631ef;return _0x5cad51;})[_0x8f4b('0x2c')](respondWithFilteredResult(_0x3b9237,_0x10953e))[_0x8f4b('0xb3')](handleError(_0x3b9237,null));};exports['show']=function(_0x436996,_0x278653){var _0x4b94af={'raw':![],'where':{'id':_0x436996[_0x8f4b('0xb4')]['id']}},_0x2834aa={};_0x2834aa[_0x8f4b('0x3b')]=_['keys'](db[_0x8f4b('0x37')][_0x8f4b('0x38')]);_0x2834aa[_0x8f4b('0x3d')]=_[_0x8f4b('0x3c')](_0x436996[_0x8f4b('0x3d')]);_0x2834aa[_0x8f4b('0x3e')]=_['intersection'](_0x2834aa[_0x8f4b('0x3b')],_0x2834aa[_0x8f4b('0x3d')]);_0x4b94af[_0x8f4b('0x41')]=_[_0x8f4b('0x3f')](_0x2834aa[_0x8f4b('0x3b')],qs[_0x8f4b('0x40')](_0x436996['query'][_0x8f4b('0x40')]));_0x4b94af[_0x8f4b('0x41')]=_0x4b94af['attributes'][_0x8f4b('0x42')]?_0x4b94af[_0x8f4b('0x41')]:_0x2834aa[_0x8f4b('0x3b')];if(_0x436996[_0x8f4b('0x3d')][_0x8f4b('0xb5')]){_0x4b94af['include']=[{'all':!![]}];}_0x4b94af=_['merge']({},_0x4b94af,_0x436996[_0x8f4b('0xb6')]);return db[_0x8f4b('0x37')]['find'](_0x4b94af)[_0x8f4b('0x2c')](handleEntityNotFound(_0x278653,null))['then'](respondWithResult(_0x278653,null))['catch'](handleError(_0x278653,null));};exports[_0x8f4b('0xb7')]=function(_0x2c7d27,_0x80ecfd){return db['FaxInteraction'][_0x8f4b('0xb7')](_0x2c7d27[_0x8f4b('0x74')],{})[_0x8f4b('0x2c')](respondWithResult(_0x80ecfd,0xc9))[_0x8f4b('0xb3')](handleError(_0x80ecfd,null));};exports[_0x8f4b('0x2b')]=function(_0x34098f,_0x15ebbb){if(_0x34098f[_0x8f4b('0x74')]['id']){delete _0x34098f[_0x8f4b('0x74')]['id'];}return db['FaxInteraction']['find']({'where':{'id':_0x34098f[_0x8f4b('0xb4')]['id']}})[_0x8f4b('0x2c')](handleEntityNotFound(_0x15ebbb,null))[_0x8f4b('0x2c')](saveUpdates(_0x34098f[_0x8f4b('0x74')],null))[_0x8f4b('0x2c')](respondWithResult(_0x15ebbb,null))[_0x8f4b('0xb3')](handleError(_0x15ebbb,null));};exports[_0x8f4b('0x2d')]=function(_0x292f68,_0x53df30){return db['FaxInteraction'][_0x8f4b('0x5f')]({'where':{'id':_0x292f68['params']['id']}})[_0x8f4b('0x2c')](handleEntityNotFound(_0x53df30,null))[_0x8f4b('0x2c')](removeEntity(_0x53df30,null))['catch'](handleError(_0x53df30,null));};exports['describe']=function(_0x3f0f88,_0x174ca0){return db[_0x8f4b('0x37')][_0x8f4b('0xb8')]()[_0x8f4b('0x2c')](respondWithResult(_0x174ca0,null))[_0x8f4b('0xb3')](handleError(_0x174ca0,null));};exports[_0x8f4b('0xb9')]=function(_0x59820b,_0x447dc4,_0x39b2b2){return db['FaxMessage'][_0x8f4b('0x5f')]({'where':{'id':_0x59820b['params']['id']}})['then'](handleEntityNotFound(_0x447dc4,null))[_0x8f4b('0x2c')](function(_0x1783b5){if(_0x1783b5){return _0x1783b5[_0x8f4b('0xb9')](_0x59820b[_0x8f4b('0x74')][_0x8f4b('0xba')],_[_0x8f4b('0xbb')](_0x59820b['body'],[_0x8f4b('0xba'),'id'])||{});}})[_0x8f4b('0x2c')](respondWithResult(_0x447dc4,null))['catch'](handleError(_0x447dc4,null));};exports[_0x8f4b('0xbc')]=function(_0x47a9bd,_0x1a655c,_0x12685b){var _0x4fe65a={'raw':![],'where':{}};var _0x1ddd2b={};var _0x30c92a={'count':0x0,'rows':[]};return db[_0x8f4b('0x37')][_0x8f4b('0xbd')]({'where':{'id':_0x47a9bd[_0x8f4b('0xb4')]['id']}})[_0x8f4b('0x2c')](handleEntityNotFound(_0x1a655c,null))[_0x8f4b('0x2c')](function(_0x24391c){if(_0x24391c){_0x1ddd2b['model']=_[_0x8f4b('0x3c')](db['FaxMessage'][_0x8f4b('0x38')]);_0x1ddd2b[_0x8f4b('0x3d')]=_[_0x8f4b('0x3c')](_0x47a9bd[_0x8f4b('0x3d')]);_0x1ddd2b['filters']=_[_0x8f4b('0x3f')](_0x1ddd2b[_0x8f4b('0x3b')],_0x1ddd2b[_0x8f4b('0x3d')]);_0x4fe65a[_0x8f4b('0x41')]=_[_0x8f4b('0x3f')](_0x1ddd2b['model'],qs[_0x8f4b('0x40')](_0x47a9bd[_0x8f4b('0x3d')][_0x8f4b('0x40')]));_0x4fe65a[_0x8f4b('0x41')]=_0x4fe65a[_0x8f4b('0x41')]['length']?_0x4fe65a['attributes']:_0x1ddd2b[_0x8f4b('0x3b')];if(!_0x47a9bd[_0x8f4b('0x3d')][_0x8f4b('0x43')](_0x8f4b('0x44'))){_0x4fe65a[_0x8f4b('0x23')]=qs[_0x8f4b('0x23')](_0x47a9bd[_0x8f4b('0x3d')]['limit']);_0x4fe65a['offset']=qs[_0x8f4b('0x25')](_0x47a9bd[_0x8f4b('0x3d')][_0x8f4b('0x25')]);}_0x4fe65a['order']=qs[_0x8f4b('0x46')](_0x47a9bd[_0x8f4b('0x3d')][_0x8f4b('0x46')]);_0x4fe65a[_0x8f4b('0x47')]=qs['filters'](_[_0x8f4b('0x48')](_0x47a9bd[_0x8f4b('0x3d')],_0x1ddd2b[_0x8f4b('0x3e')]));_0x4fe65a[_0x8f4b('0x47')][_0x8f4b('0xaf')]=_0x24391c['id'];if(_0x47a9bd[_0x8f4b('0x3d')][_0x8f4b('0xbe')]){_0x4fe65a[_0x8f4b('0x47')]=_[_0x8f4b('0xbf')](_0x4fe65a[_0x8f4b('0x47')],{'$or':_[_0x8f4b('0x34')](_0x4fe65a['attributes'],function(_0x57dc1b){var _0xe4b5a1={};_0xe4b5a1[_0x57dc1b]={'$like':'%'+_0x47a9bd[_0x8f4b('0x3d')]['filter']+'%'};return _0xe4b5a1;})});}if(_0x47a9bd[_0x8f4b('0x3d')][_0x8f4b('0x7b')]){var _0x7b3b9e=_0x47a9bd[_0x8f4b('0x3d')][_0x8f4b('0x7b')][_0x8f4b('0xc0')](',');var _0x5a47a7={};_0x5a47a7[_0x7b3b9e[0x0]]={'$gte':moment(_0x7b3b9e[0x1])['format'](_0x8f4b('0xc1'))};_0x4fe65a[_0x8f4b('0x47')]=_[_0x8f4b('0xbf')](_0x4fe65a['where'],_0x5a47a7);}_0x4fe65a=_[_0x8f4b('0xbf')]({},_0x4fe65a,_0x47a9bd[_0x8f4b('0xb6')]);return db[_0x8f4b('0xc2')][_0x8f4b('0x24')]({'where':_0x4fe65a['where']})[_0x8f4b('0x2c')](function(_0x4f9e3c){_0x30c92a[_0x8f4b('0x24')]=_0x4f9e3c;if(_0x47a9bd['query'][_0x8f4b('0xb5')]){_0x4fe65a[_0x8f4b('0xc3')]=[{'all':!![]}];}return db[_0x8f4b('0xc2')][_0x8f4b('0xc4')](_0x4fe65a);})[_0x8f4b('0x2c')](function(_0x42333b){_0x30c92a[_0x8f4b('0xb2')]=_0x42333b;return _0x30c92a;});}})[_0x8f4b('0x2c')](respondWithFilteredResult(_0x1a655c,_0x4fe65a))['catch'](handleError(_0x1a655c,null));};exports[_0x8f4b('0xc5')]=function(_0xc3c85b,_0x2542fc,_0x3b4c53){return db[_0x8f4b('0x37')][_0x8f4b('0x5f')]({'where':{'id':_0xc3c85b[_0x8f4b('0xb4')]['id']}})[_0x8f4b('0x2c')](handleEntityNotFound(_0x2542fc,null))[_0x8f4b('0x2c')](function(_0x31a825){if(_0x31a825){return _0x31a825[_0x8f4b('0xc6')](_0xc3c85b[_0x8f4b('0x74')][_0x8f4b('0xba')],_[_0x8f4b('0xbb')](_0xc3c85b[_0x8f4b('0x74')],[_0x8f4b('0xba'),'id'])||{})[_0x8f4b('0xc7')](function(){return db[_0x8f4b('0x6e')][_0x8f4b('0xc4')]({'attributes':['id',_0x8f4b('0x31'),_0x8f4b('0x4b')],'where':{'id':_0xc3c85b[_0x8f4b('0x74')][_0x8f4b('0xba')]}});})[_0x8f4b('0x2c')](function(_0x270ee3){socket[_0x8f4b('0xc8')](_0x8f4b('0xc9'),{'id':Number(_0xc3c85b[_0x8f4b('0xb4')]['id']),'tags':_0x270ee3||[]});return{'id':Number(_0xc3c85b[_0x8f4b('0xb4')]['id']),'tags':_0x270ee3||[]};});}})[_0x8f4b('0x2c')](respondWithResult(_0x2542fc,null))[_0x8f4b('0xb3')](handleError(_0x2542fc,null));};exports['removeTags']=function(_0x32df51,_0x3578e9,_0x45b0e7){return db['FaxInteraction'][_0x8f4b('0x5f')]({'where':{'id':_0x32df51['params']['id']}})[_0x8f4b('0x2c')](handleEntityNotFound(_0x3578e9,null))[_0x8f4b('0x2c')](function(_0x2396df){if(_0x2396df){return _0x2396df['removeTags'](_0x32df51[_0x8f4b('0x3d')][_0x8f4b('0xba')]);}})[_0x8f4b('0x2c')](respondWithStatusCode(_0x3578e9,null))[_0x8f4b('0xb3')](handleError(_0x3578e9,null));};exports[_0x8f4b('0xca')]=function(_0x2570fe,_0x29d023){var _0x2c3b3c=moment()[_0x8f4b('0xcb')]()[_0x8f4b('0x98')]();var _0x340115=path[_0x8f4b('0xcc')](config[_0x8f4b('0xcd')],_0x8f4b('0xce'),_0x8f4b('0xcf'),_0x8f4b('0xd0'));var _0x25bc3a=path[_0x8f4b('0xcc')](config['root'],_0x8f4b('0xce'),_0x8f4b('0xcf'),'attachments');var _0x41668f=path['join'](_0x340115,_0x2c3b3c);var _0x1eb789=util[_0x8f4b('0xd1')](_0x8f4b('0xd2'),_0x2570fe['params']['id'],_0x2c3b3c);var _0x4cda52=path['join'](_0x340115,_0x1eb789);var _0x3d2409=[];_0x3d2409[_0x8f4b('0xb0')]({'model':db['Attachment'],'as':'Attachment','raw':!![]});var _0x2d86ed=[{'model':db[_0x8f4b('0xc2')],'as':_0x8f4b('0xd3'),'attributes':['id','body',_0x8f4b('0x79')],'include':_0x3d2409}];return db[_0x8f4b('0x37')][_0x8f4b('0x5f')]({'where':{'id':_0x2570fe[_0x8f4b('0xb4')]['id']},'include':_0x2d86ed})['then'](handleEntityNotFound(_0x29d023,null))[_0x8f4b('0x2c')](function(_0x59e73f){if(_0x59e73f&&_0x59e73f[_0x8f4b('0xd3')]){var _0x5c3a32=_0x59e73f[_0x8f4b('0xd4')]({'plain':!![]});fs[_0x8f4b('0xd5')](_0x41668f);for(var _0x272d39=0x0;_0x272d39<_0x5c3a32[_0x8f4b('0xd3')][_0x8f4b('0x42')];_0x272d39++){var _0x4948f1=_0x5c3a32[_0x8f4b('0xd3')][_0x272d39][_0x8f4b('0xd6')];if(_0x4948f1){var _0x3a9aab=path['join'](_0x25bc3a,_0x4948f1[_0x8f4b('0xd7')]);if(fs[_0x8f4b('0xd8')](_0x3a9aab)){fs['createReadStream'](_0x3a9aab)['pipe'](fs[_0x8f4b('0xd9')](path['join'](_0x41668f,_0x4948f1['basename'])));}}}return BPromise[_0x8f4b('0xda')]()[_0x8f4b('0x2c')](function(){return new BPromise(function(_0x189c04,_0x1aee39){zipdir(_0x41668f,{'saveTo':_0x4cda52},function(_0x20c1b1,_0x1a0bd2){if(_0x20c1b1)return _0x1aee39(_0x20c1b1);return _0x189c04(_0x1a0bd2);});})[_0x8f4b('0x2c')](function(){return new BPromise(function(_0x4cc8c8,_0x4e64ed){rimraf(_0x41668f,function(_0x1d6c65){if(_0x1d6c65)_0x4e64ed(_0x1d6c65);return _0x4cc8c8();});});})[_0x8f4b('0x2c')](function(){return _0x29d023[_0x8f4b('0xca')](_0x4cda52,_0x1eb789,function(_0x1acf2e){if(_0x1acf2e){console['log'](_0x8f4b('0xdb'),_0x1acf2e);}else{fs[_0x8f4b('0xdc')](_0x4cda52);}});});});}else{return _0x29d023[_0x8f4b('0x2e')](0xc8);}})['catch'](handleError(_0x29d023,null));};
\ No newline at end of file
index 1e8eaa3..a91cb45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc16a=['update','remove','getUsers','Users','map','findAll','then','unreadMessages','emit','catch','hasOwnProperty','hook','events','../../mysqldb','FaxInteraction','FaxMessage','setMaxListeners','save'];(function(_0x209609,_0x273ffd){var _0x41848e=function(_0x5e5342){while(--_0x5e5342){_0x209609['push'](_0x209609['shift']());}};_0x41848e(++_0x273ffd);}(_0xc16a,0x1e0));var _0xac16=function(_0x339adf,_0x5489bf){_0x339adf=_0x339adf-0x0;var _0x1ed571=_0xc16a[_0x339adf];return _0x1ed571;};'use strict';var EventEmitter=require(_0xac16('0x0'));var FaxInteraction=require(_0xac16('0x1'))['db'][_0xac16('0x2')];var FaxMessage=require('../../mysqldb')['db'][_0xac16('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0xac16('0x4')](0x0);var events={'afterCreate':_0xac16('0x5'),'afterUpdate':_0xac16('0x6'),'afterDestroy':_0xac16('0x7')};function emitEvent(_0x36aaf5){return function(_0x2cbe6b,_0x29129a,_0x4fe7de){_0x2cbe6b[_0xac16('0x8')]({'attributes':['id'],'raw':!![]})['then'](function(_0x6ea016){_0x2cbe6b['setDataValue'](_0xac16('0x9'),_0x6ea016[_0xac16('0xa')](function(_0x22e16f){return{'id':_0x22e16f['id']};}));return FaxMessage[_0xac16('0xb')]({'where':{'FaxInteractionId':_0x2cbe6b['id'],'direction':'in','read':![]},'raw':!![]});})[_0xac16('0xc')](function(_0x207501){_0x2cbe6b['setDataValue'](_0xac16('0xd'),_0x207501['length']);FaxInteractionEvents[_0xac16('0xe')](_0x36aaf5+':'+_0x2cbe6b['id'],_0x2cbe6b);FaxInteractionEvents['emit'](_0x36aaf5,_0x2cbe6b);_0x4fe7de(null);})[_0xac16('0xf')](_0x4fe7de(null));};}for(var e in events){if(events[_0xac16('0x10')](e)){var event=events[e];FaxInteraction[_0xac16('0x11')](e,emitEvent(event));}}module['exports']=FaxInteractionEvents;
\ No newline at end of file
+var _0x7277=['map','findAll','unreadMessages','length','emit','hasOwnProperty','hook','exports','events','FaxInteraction','../../mysqldb','FaxMessage','setMaxListeners','save','update','getUsers','then','setDataValue','Users'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0x7277,0x138));var _0x7727=function(_0x5c0368,_0x423cf2){_0x5c0368=_0x5c0368-0x0;var _0x5b31b9=_0x7277[_0x5c0368];return _0x5b31b9;};'use strict';var EventEmitter=require(_0x7727('0x0'));var FaxInteraction=require('../../mysqldb')['db'][_0x7727('0x1')];var FaxMessage=require(_0x7727('0x2'))['db'][_0x7727('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x7727('0x4')](0x0);var events={'afterCreate':_0x7727('0x5'),'afterUpdate':_0x7727('0x6'),'afterDestroy':'remove'};function emitEvent(_0x5e9bb7){return function(_0x29b0f4,_0x5b119b,_0x58f61b){_0x29b0f4[_0x7727('0x7')]({'attributes':['id'],'raw':!![]})[_0x7727('0x8')](function(_0x312633){_0x29b0f4[_0x7727('0x9')](_0x7727('0xa'),_0x312633[_0x7727('0xb')](function(_0x444f32){return{'id':_0x444f32['id']};}));return FaxMessage[_0x7727('0xc')]({'where':{'FaxInteractionId':_0x29b0f4['id'],'direction':'in','read':![]},'raw':!![]});})[_0x7727('0x8')](function(_0x5585bd){_0x29b0f4[_0x7727('0x9')](_0x7727('0xd'),_0x5585bd[_0x7727('0xe')]);FaxInteractionEvents[_0x7727('0xf')](_0x5e9bb7+':'+_0x29b0f4['id'],_0x29b0f4);FaxInteractionEvents[_0x7727('0xf')](_0x5e9bb7,_0x29b0f4);_0x58f61b(null);})['catch'](_0x58f61b(null));};}for(var e in events){if(events[_0x7727('0x10')](e)){var event=events[e];FaxInteraction[_0x7727('0x11')](e,emitEvent(event));}}module[_0x7727('0x12')]=FaxInteractionEvents;
\ No newline at end of file
index 4f0c505..a2b2658 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a44=['closedAt','format','lodash','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./faxInteraction.attributes','changed'];(function(_0x2235bf,_0x3a06a7){var _0x4c3a64=function(_0x3b3bb6){while(--_0x3b3bb6){_0x2235bf['push'](_0x2235bf['shift']());}};_0x4c3a64(++_0x3a06a7);}(_0x9a44,0xc2));var _0x49a4=function(_0x28876d,_0x17989c){_0x28876d=_0x28876d-0x0;var _0x57d3c6=_0x9a44[_0x28876d];return _0x57d3c6;};'use strict';var _=require(_0x49a4('0x0'));var util=require(_0x49a4('0x1'));var logger=require(_0x49a4('0x2'))(_0x49a4('0x3'));var moment=require('moment');var BPromise=require(_0x49a4('0x4'));var rp=require(_0x49a4('0x5'));var fs=require('fs');var path=require(_0x49a4('0x6'));var rimraf=require('rimraf');var config=require(_0x49a4('0x7'));var attributes=require(_0x49a4('0x8'));module['exports']=function(_0x27e545,_0x168e47){return _0x27e545['define']('FaxInteraction',attributes,{'tableName':'fax_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x857713,_0x316238,_0x181d4d){if(_0x857713[_0x49a4('0x9')]('closed')){_0x857713[_0x49a4('0xa')]=moment()[_0x49a4('0xb')]('YYYY-MM-DD\x20HH:mm:ss');}_0x181d4d(null,_0x857713);}}});};
\ No newline at end of file
+var _0x38b8=['closed','closedAt','format','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','FaxInteraction','fax_interactions','changed'];(function(_0x947d35,_0x1fb612){var _0x16631c=function(_0xe0269c){while(--_0xe0269c){_0x947d35['push'](_0x947d35['shift']());}};_0x16631c(++_0x1fb612);}(_0x38b8,0x7b));var _0x838b=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x38b8[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0x838b('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x838b('0x1'));var BPromise=require(_0x838b('0x2'));var rp=require(_0x838b('0x3'));var fs=require('fs');var path=require(_0x838b('0x4'));var rimraf=require(_0x838b('0x5'));var config=require(_0x838b('0x6'));var attributes=require('./faxInteraction.attributes');module[_0x838b('0x7')]=function(_0x45a625,_0x5b589c){return _0x45a625[_0x838b('0x8')](_0x838b('0x9'),attributes,{'tableName':_0x838b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x457f07,_0x2063c9,_0x5687a4){if(_0x457f07[_0x838b('0xb')](_0x838b('0xc'))){_0x457f07[_0x838b('0xd')]=moment()[_0x838b('0xe')]('YYYY-MM-DD\x20HH:mm:ss');}_0x5687a4(null,_0x457f07);}}});};
\ No newline at end of file
index c0d0be8..e66566f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21b2=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','redis','defaults','socket.io-emitter','./faxInteraction.socket','request','then','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','UpdateFaxInteraction','FaxInteraction','update','options','raw','AddTagsToFaxInteraction','where','addTags','body','ids','spread','AddTags','stringify','lodash','moment'];(function(_0x42958e,_0x2a6ed1){var _0x578296=function(_0x52a6d4){while(--_0x52a6d4){_0x42958e['push'](_0x42958e['shift']());}};_0x578296(++_0x2a6ed1);}(_0x21b2,0x108));var _0x221b=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0x21b2[_0x36ed48];return _0x51c63a;};'use strict';var _=require(_0x221b('0x0'));var util=require('util');var moment=require(_0x221b('0x1'));var BPromise=require('bluebird');var rs=require(_0x221b('0x2'));var fs=require('fs');var Redis=require(_0x221b('0x3'));var db=require(_0x221b('0x4'))['db'];var utils=require(_0x221b('0x5'));var logger=require(_0x221b('0x6'))('rpc');var config=require(_0x221b('0x7'));var jayson=require(_0x221b('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0x221b('0x9')]=_[_0x221b('0xa')](config[_0x221b('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x221b('0xb'))(new Redis(config[_0x221b('0x9')]));require(_0x221b('0xc'))['register'](socket);function respondWithRpcPromise(_0x2c99ce,_0x5a7838,_0x935bfd){return new BPromise(function(_0x3e52d4,_0x4a8dbc){return client[_0x221b('0xd')](_0x2c99ce,_0x935bfd)[_0x221b('0xe')](function(_0x472319){logger['info'](_0x221b('0xf'),_0x5a7838,_0x221b('0x10'));logger[_0x221b('0x11')](_0x221b('0x12'),_0x5a7838,'request\x20sent',JSON['stringify'](_0x472319));if(_0x472319[_0x221b('0x13')]){if(_0x472319['error'][_0x221b('0x14')]===0x1f4){logger[_0x221b('0x13')](_0x221b('0xf'),_0x5a7838,_0x472319['error']['message']);return _0x4a8dbc(_0x472319['error'][_0x221b('0x15')]);}logger[_0x221b('0x13')]('FaxInteraction,\x20%s,\x20%s',_0x5a7838,_0x472319[_0x221b('0x13')][_0x221b('0x15')]);return _0x3e52d4(_0x472319[_0x221b('0x13')][_0x221b('0x15')]);}else{logger[_0x221b('0x16')]('FaxInteraction,\x20%s,\x20%s',_0x5a7838,_0x221b('0x10'));_0x3e52d4(_0x472319[_0x221b('0x17')][_0x221b('0x15')]);}})[_0x221b('0x18')](function(_0x49403e){logger['error'](_0x221b('0xf'),_0x5a7838,_0x49403e);_0x4a8dbc(_0x49403e);});});}exports[_0x221b('0x19')]=function(_0x556737){var _0x40616f=this;return new Promise(function(_0x200f51,_0x4f20d4){return db[_0x221b('0x1a')][_0x221b('0x1b')](_0x556737['body'],{'raw':_0x556737[_0x221b('0x1c')]?_0x556737[_0x221b('0x1c')][_0x221b('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x556737[_0x221b('0x1c')]?_0x556737['options']['where']||null:null,'attributes':_0x556737[_0x221b('0x1c')]?_0x556737[_0x221b('0x1c')]['attributes']||null:null,'limit':_0x556737[_0x221b('0x1c')]?_0x556737[_0x221b('0x1c')]['limit']||null:null})['then'](function(_0x2ca860){logger['info']('UpdateFaxInteraction',_0x556737);logger[_0x221b('0x11')](_0x221b('0x19'),_0x556737,JSON['stringify'](_0x2ca860));_0x200f51(_0x2ca860);})['catch'](function(_0x5f2f30){logger[_0x221b('0x13')]('UpdateFaxInteraction',_0x5f2f30[_0x221b('0x15')],_0x556737);_0x4f20d4(_0x40616f[_0x221b('0x13')](0x1f4,_0x5f2f30[_0x221b('0x15')]));});});};exports[_0x221b('0x1e')]=function(_0x2c7474){return new Promise(function(_0x26607d,_0x3004f1){return db['FaxInteraction']['find']({'where':_0x2c7474['options']?_0x2c7474['options'][_0x221b('0x1f')]||null:null})['then'](function(_0x428e5d){if(_0x428e5d){return _0x428e5d[_0x221b('0x20')](_0x2c7474[_0x221b('0x21')][_0x221b('0x22')],_['omit'](_0x2c7474[_0x221b('0x21')],[_0x221b('0x22'),'id'])||{});}})[_0x221b('0x23')](function(_0x4d49ce){logger[_0x221b('0x16')](_0x221b('0x24'),_0x2c7474);logger[_0x221b('0x11')](_0x221b('0x24'),_0x2c7474,JSON[_0x221b('0x25')](_0x4d49ce));_0x26607d(_0x4d49ce);})[_0x221b('0x18')](function(_0x29b324){logger[_0x221b('0x13')]('AddTags',_0x29b324[_0x221b('0x15')],_0x2c7474);_0x3004f1(_this[_0x221b('0x13')](0x1f4,_0x29b324[_0x221b('0x15')]));});});};
\ No newline at end of file
+var _0xb5bb=['catch','UpdateFaxInteraction','FaxInteraction','update','body','options','raw','attributes','limit','debug','AddTagsToFaxInteraction','where','addTags','omit','ids','spread','AddTags','stringify','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','./faxInteraction.socket','register','then','info','FaxInteraction,\x20%s,\x20%s','FaxInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result'];(function(_0x34de23,_0x1234c0){var _0x5f3826=function(_0x3ec332){while(--_0x3ec332){_0x34de23['push'](_0x34de23['shift']());}};_0x5f3826(++_0x1234c0);}(_0xb5bb,0xba));var _0xbb5b=function(_0x976e3e,_0x13d6f0){_0x976e3e=_0x976e3e-0x0;var _0x1612dd=_0xb5bb[_0x976e3e];return _0x1612dd;};'use strict';var _=require(_0xbb5b('0x0'));var util=require(_0xbb5b('0x1'));var moment=require('moment');var BPromise=require(_0xbb5b('0x2'));var rs=require(_0xbb5b('0x3'));var fs=require('fs');var Redis=require(_0xbb5b('0x4'));var db=require(_0xbb5b('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xbb5b('0x6'))(_0xbb5b('0x7'));var config=require(_0xbb5b('0x8'));var jayson=require(_0xbb5b('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0xbb5b('0xa')]=_[_0xbb5b('0xb')](config[_0xbb5b('0xa')],{'host':_0xbb5b('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbb5b('0xa')]));require(_0xbb5b('0xd'))[_0xbb5b('0xe')](socket);function respondWithRpcPromise(_0x47e19a,_0x2e6e0f,_0x10d565){return new BPromise(function(_0x3819af,_0x17d798){return client['request'](_0x47e19a,_0x10d565)[_0xbb5b('0xf')](function(_0x2910b4){logger[_0xbb5b('0x10')](_0xbb5b('0x11'),_0x2e6e0f,'request\x20sent');logger['debug'](_0xbb5b('0x12'),_0x2e6e0f,_0xbb5b('0x13'),JSON['stringify'](_0x2910b4));if(_0x2910b4[_0xbb5b('0x14')]){if(_0x2910b4[_0xbb5b('0x14')][_0xbb5b('0x15')]===0x1f4){logger[_0xbb5b('0x14')]('FaxInteraction,\x20%s,\x20%s',_0x2e6e0f,_0x2910b4[_0xbb5b('0x14')]['message']);return _0x17d798(_0x2910b4[_0xbb5b('0x14')][_0xbb5b('0x16')]);}logger['error']('FaxInteraction,\x20%s,\x20%s',_0x2e6e0f,_0x2910b4[_0xbb5b('0x14')][_0xbb5b('0x16')]);return _0x3819af(_0x2910b4['error']['message']);}else{logger['info'](_0xbb5b('0x11'),_0x2e6e0f,_0xbb5b('0x13'));_0x3819af(_0x2910b4[_0xbb5b('0x17')][_0xbb5b('0x16')]);}})[_0xbb5b('0x18')](function(_0x22c558){logger[_0xbb5b('0x14')]('FaxInteraction,\x20%s,\x20%s',_0x2e6e0f,_0x22c558);_0x17d798(_0x22c558);});});}exports[_0xbb5b('0x19')]=function(_0x1ac88a){var _0x329edb=this;return new Promise(function(_0x247e94,_0xfb285){return db[_0xbb5b('0x1a')][_0xbb5b('0x1b')](_0x1ac88a[_0xbb5b('0x1c')],{'raw':_0x1ac88a[_0xbb5b('0x1d')]?_0x1ac88a['options'][_0xbb5b('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1ac88a[_0xbb5b('0x1d')]?_0x1ac88a[_0xbb5b('0x1d')]['where']||null:null,'attributes':_0x1ac88a[_0xbb5b('0x1d')]?_0x1ac88a[_0xbb5b('0x1d')][_0xbb5b('0x1f')]||null:null,'limit':_0x1ac88a[_0xbb5b('0x1d')]?_0x1ac88a[_0xbb5b('0x1d')][_0xbb5b('0x20')]||null:null})['then'](function(_0x4bdec3){logger[_0xbb5b('0x10')](_0xbb5b('0x19'),_0x1ac88a);logger[_0xbb5b('0x21')](_0xbb5b('0x19'),_0x1ac88a,JSON['stringify'](_0x4bdec3));_0x247e94(_0x4bdec3);})['catch'](function(_0x312f28){logger[_0xbb5b('0x14')](_0xbb5b('0x19'),_0x312f28[_0xbb5b('0x16')],_0x1ac88a);_0xfb285(_0x329edb['error'](0x1f4,_0x312f28[_0xbb5b('0x16')]));});});};exports[_0xbb5b('0x22')]=function(_0x2fbbc6){return new Promise(function(_0x40ca2d,_0x1b6896){return db[_0xbb5b('0x1a')]['find']({'where':_0x2fbbc6[_0xbb5b('0x1d')]?_0x2fbbc6[_0xbb5b('0x1d')][_0xbb5b('0x23')]||null:null})[_0xbb5b('0xf')](function(_0x1203f6){if(_0x1203f6){return _0x1203f6[_0xbb5b('0x24')](_0x2fbbc6[_0xbb5b('0x1c')]['ids'],_[_0xbb5b('0x25')](_0x2fbbc6[_0xbb5b('0x1c')],[_0xbb5b('0x26'),'id'])||{});}})[_0xbb5b('0x27')](function(_0x2695a5){logger[_0xbb5b('0x10')](_0xbb5b('0x28'),_0x2fbbc6);logger['debug'](_0xbb5b('0x28'),_0x2fbbc6,JSON[_0xbb5b('0x29')](_0x2695a5));_0x40ca2d(_0x2695a5);})[_0xbb5b('0x18')](function(_0x3bb081){logger[_0xbb5b('0x14')](_0xbb5b('0x28'),_0x3bb081[_0xbb5b('0x16')],_0x2fbbc6);_0x1b6896(_this[_0xbb5b('0x14')](0x1f4,_0x3bb081[_0xbb5b('0x16')]));});});};
\ No newline at end of file
index bf11d9f..2959942 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc13=['remove','emit','removeListener','length','faxInteraction:','./faxInteraction.events','save'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcc13,0xfa));var _0x3cc1=function(_0x59665a,_0x12c33a){_0x59665a=_0x59665a-0x0;var _0x1c6f66=_0xcc13[_0x59665a];return _0x1c6f66;};'use strict';var FaxInteractionEvents=require(_0x3cc1('0x0'));var events=[_0x3cc1('0x1'),_0x3cc1('0x2'),'update'];function createListener(_0x4c5244,_0x3d70a2){return function(_0x39f67e){_0x3d70a2[_0x3cc1('0x3')](_0x4c5244,_0x39f67e);};}function removeListener(_0x1923d5,_0x113927){return function(){FaxInteractionEvents[_0x3cc1('0x4')](_0x1923d5,_0x113927);};}exports['register']=function(_0x2c870c){for(var _0x1f7eb4=0x0,_0x4d02c3=events[_0x3cc1('0x5')];_0x1f7eb4<_0x4d02c3;_0x1f7eb4++){var _0x24a982=events[_0x1f7eb4];var _0x2d1baa=createListener(_0x3cc1('0x6')+_0x24a982,_0x2c870c);FaxInteractionEvents['on'](_0x24a982,_0x2d1baa);}};
\ No newline at end of file
+var _0xaac4=['remove','faxInteraction:','./faxInteraction.events','save'];(function(_0xab9f3d,_0xb336fa){var _0x5283bf=function(_0x505e6c){while(--_0x505e6c){_0xab9f3d['push'](_0xab9f3d['shift']());}};_0x5283bf(++_0xb336fa);}(_0xaac4,0x186));var _0x4aac=function(_0x46eb0e,_0x296d16){_0x46eb0e=_0x46eb0e-0x0;var _0x523297=_0xaac4[_0x46eb0e];return _0x523297;};'use strict';var FaxInteractionEvents=require(_0x4aac('0x0'));var events=[_0x4aac('0x1'),_0x4aac('0x2'),'update'];function createListener(_0x3ff558,_0x5ac98c){return function(_0x33f698){_0x5ac98c['emit'](_0x3ff558,_0x33f698);};}function removeListener(_0x514558,_0x5e68bc){return function(){FaxInteractionEvents['removeListener'](_0x514558,_0x5e68bc);};}exports['register']=function(_0x446cbe){for(var _0x28ae38=0x0,_0x4acc00=events['length'];_0x28ae38<_0x4acc00;_0x28ae38++){var _0x18b598=events[_0x28ae38];var _0x26c28f=createListener(_0x4aac('0x3')+_0x18b598,_0x446cbe);FaxInteractionEvents['on'](_0x18b598,_0x26c28f);}};
\ No newline at end of file
index c2bc39d..06a906e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x536a=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./faxInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','/:id/download','download','post','create','/:id/tags','tracked','fax','faxinteraction:addtags','addTags','put','faxinteraction:update','delete','faxinteraction:destroy'];(function(_0x57a154,_0x5b0077){var _0x4bbb7e=function(_0x10fa34){while(--_0x10fa34){_0x57a154['push'](_0x57a154['shift']());}};_0x4bbb7e(++_0x5b0077);}(_0x536a,0x14c));var _0xa536=function(_0x5a1a43,_0x2d8ebb){_0x5a1a43=_0x5a1a43-0x0;var _0x258550=_0x536a[_0x5a1a43];return _0x258550;};'use strict';var multer=require(_0xa536('0x0'));var util=require(_0xa536('0x1'));var path=require(_0xa536('0x2'));var timeout=require(_0xa536('0x3'));var express=require(_0xa536('0x4'));var router=express[_0xa536('0x5')]();var fs_extra=require(_0xa536('0x6'));var auth=require(_0xa536('0x7'));var interaction=require(_0xa536('0x8'));var config=require('../../config/environment');var controller=require(_0xa536('0x9'));router[_0xa536('0xa')]('/',auth[_0xa536('0xb')](),controller[_0xa536('0xc')]);router['get'](_0xa536('0xd'),auth[_0xa536('0xb')](),controller[_0xa536('0xe')]);router[_0xa536('0xa')](_0xa536('0xf'),auth[_0xa536('0xb')](),controller[_0xa536('0x10')]);router[_0xa536('0xa')](_0xa536('0x11'),auth[_0xa536('0xb')](),controller['getMessages']);router['get'](_0xa536('0x12'),auth['isAuthenticated'](),controller[_0xa536('0x13')]);router[_0xa536('0x14')]('/',auth['isAuthenticated'](),controller[_0xa536('0x15')]);router[_0xa536('0x14')](_0xa536('0x11'),auth['isAuthenticated'](),controller['addMessage']);router['post'](_0xa536('0x16'),auth[_0xa536('0xb')](),interaction[_0xa536('0x17')](_0xa536('0x18'),_0xa536('0x19')),controller[_0xa536('0x1a')]);router[_0xa536('0x1b')]('/:id',auth[_0xa536('0xb')](),interaction[_0xa536('0x17')](_0xa536('0x18'),_0xa536('0x1c')),controller['update']);router[_0xa536('0x1d')](_0xa536('0xf'),auth['isAuthenticated'](),interaction[_0xa536('0x17')](_0xa536('0x18'),_0xa536('0x1e')),controller[_0xa536('0x1f')]);router['delete'](_0xa536('0x16'),auth[_0xa536('0xb')](),controller['removeTags']);module[_0xa536('0x20')]=router;
\ No newline at end of file
+var _0x0845=['./faxInteraction.controller','get','isAuthenticated','describe','show','/:id/messages','getMessages','/:id/download','post','create','addMessage','tracked','fax','addTags','put','/:id','update','delete','faxinteraction:destroy','destroy','/:id/tags','removeTags','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x491a7f,_0x28bb80){var _0x3d8f44=function(_0xdaa716){while(--_0xdaa716){_0x491a7f['push'](_0x491a7f['shift']());}};_0x3d8f44(++_0x28bb80);}(_0x0845,0x125));var _0x5084=function(_0x403099,_0x563de3){_0x403099=_0x403099-0x0;var _0xeb101a=_0x0845[_0x403099];return _0xeb101a;};'use strict';var multer=require(_0x5084('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x5084('0x1'));var express=require(_0x5084('0x2'));var router=express[_0x5084('0x3')]();var fs_extra=require(_0x5084('0x4'));var auth=require(_0x5084('0x5'));var interaction=require(_0x5084('0x6'));var config=require('../../config/environment');var controller=require(_0x5084('0x7'));router[_0x5084('0x8')]('/',auth[_0x5084('0x9')](),controller['index']);router['get']('/describe',auth[_0x5084('0x9')](),controller[_0x5084('0xa')]);router[_0x5084('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x5084('0xb')]);router[_0x5084('0x8')](_0x5084('0xc'),auth['isAuthenticated'](),controller[_0x5084('0xd')]);router[_0x5084('0x8')](_0x5084('0xe'),auth['isAuthenticated'](),controller['download']);router[_0x5084('0xf')]('/',auth[_0x5084('0x9')](),controller[_0x5084('0x10')]);router[_0x5084('0xf')](_0x5084('0xc'),auth[_0x5084('0x9')](),controller[_0x5084('0x11')]);router[_0x5084('0xf')]('/:id/tags',auth[_0x5084('0x9')](),interaction[_0x5084('0x12')](_0x5084('0x13'),'faxinteraction:addtags'),controller[_0x5084('0x14')]);router[_0x5084('0x15')](_0x5084('0x16'),auth[_0x5084('0x9')](),interaction['tracked'](_0x5084('0x13'),'faxinteraction:update'),controller[_0x5084('0x17')]);router[_0x5084('0x18')](_0x5084('0x16'),auth[_0x5084('0x9')](),interaction[_0x5084('0x12')](_0x5084('0x13'),_0x5084('0x19')),controller[_0x5084('0x1a')]);router[_0x5084('0x18')](_0x5084('0x1b'),auth[_0x5084('0x9')](),controller[_0x5084('0x1c')]);module[_0x5084('0x1d')]=router;
\ No newline at end of file
index 17e2d27..7b59ccc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47c7=['DATE','sequelize','TEXT','medium','ENUM','out'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x47c7,0x1ab));var _0x747c=function(_0x616290,_0x280b7f){_0x616290=_0x616290-0x0;var _0x453879=_0x47c7[_0x616290];return _0x453879;};'use strict';var Sequelize=require(_0x747c('0x0'));module['exports']={'body':{'type':Sequelize[_0x747c('0x1')](_0x747c('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x747c('0x3')]('in',_0x747c('0x4')),'defaultValue':'out','allowNull':![]},'failMessage':{'type':Sequelize[_0x747c('0x1')],'defaultValue':null},'readAt':{'type':Sequelize[_0x747c('0x5')]}};
\ No newline at end of file
+var _0x0624=['DATE','BOOLEAN','ENUM','out','TEXT'];(function(_0x54992a,_0x5ecf95){var _0x269423=function(_0x23bb50){while(--_0x23bb50){_0x54992a['push'](_0x54992a['shift']());}};_0x269423(++_0x5ecf95);}(_0x0624,0x132));var _0x4062=function(_0x1b867e,_0xee3b92){_0x1b867e=_0x1b867e-0x0;var _0x2b05f3=_0x0624[_0x1b867e];return _0x2b05f3;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x4062('0x0')],'defaultValue':![]},'direction':{'type':Sequelize[_0x4062('0x1')]('in',_0x4062('0x2')),'defaultValue':_0x4062('0x2'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x4062('0x3')],'defaultValue':null},'readAt':{'type':Sequelize[_0x4062('0x4')]}};
\ No newline at end of file
index 749cad6..c032d8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff6f=['crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','jayson/promise','client','http','then','FaxMessage,\x20%s,\x20%s','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','index','map','FaxMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','sort','pick','where','merge','filter','options','includeAll','include','findAll','rows','params','find','body','describe','fax-interactions','accept','fax','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','FaxInteraction','FaxInteractionId','isNil','read1stAt','format','interaction','user','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','SELECT','User','email','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','Sequelize','rejectmessage','CmContact','findOne','Attachment','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','join','root','server','files','attachments','download','eml-format','zip-dir','request-promise','path','sox','ejs','squel'];(function(_0x3ad9db,_0x2213d4){var _0xaa1e94=function(_0x6090c7){while(--_0x6090c7){_0x3ad9db['push'](_0x3ad9db['shift']());}};_0xaa1e94(++_0x2213d4);}(_0xff6f,0x80));var _0xfff6=function(_0x3011bd,_0x3f3b85){_0x3011bd=_0x3011bd-0x0;var _0x4719b2=_0xff6f[_0x3011bd];return _0x4719b2;};'use strict';var emlformat=require(_0xfff6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfff6('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfff6('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xfff6('0x3'));var sox=require(_0xfff6('0x4'));var csv=require('to-csv');var ejs=require(_0xfff6('0x5'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfff6('0x6'));var crypto=require(_0xfff6('0x7'));var jsforce=require(_0xfff6('0x8'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xfff6('0x9'));var Papa=require(_0xfff6('0xa'));var Redis=require(_0xfff6('0xb'));var authService=require('../../components/auth/service');var qs=require(_0xfff6('0xc'));var as=require(_0xfff6('0xd'));var hardwareService=require(_0xfff6('0xe'));var logger=require(_0xfff6('0xf'))(_0xfff6('0x10'));var utils=require(_0xfff6('0x11'));var config=require(_0xfff6('0x12'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xfff6('0x13')]=_[_0xfff6('0x14')](config[_0xfff6('0x13')],{'host':_0xfff6('0x15'),'port':0x18eb});var socket=require(_0xfff6('0x16'))(new Redis(config[_0xfff6('0x13')]));require('./faxMessage.socket')['register'](socket);var jayson=require(_0xfff6('0x17'));var client=jayson[_0xfff6('0x18')][_0xfff6('0x19')]({'port':0x232c});var client9002=jayson[_0xfff6('0x18')][_0xfff6('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x379834,_0x5567d0,_0xba6e78,_0x766d5a){return new BPromise(function(_0x80abd0,_0xe947f4){var _0x461b13=_0x766d5a||client;return _0x461b13['request'](_0x379834,_0xba6e78)[_0xfff6('0x1a')](function(_0x1e9440){logger['info'](_0xfff6('0x1b'),_0x5567d0,_0xfff6('0x1c'));logger['debug'](_0xfff6('0x1d'),_0x5567d0,_0xfff6('0x1c'),JSON[_0xfff6('0x1e')](_0x1e9440));if(_0x1e9440[_0xfff6('0x1f')]){if(_0x1e9440[_0xfff6('0x1f')]['code']===0x1f4){logger[_0xfff6('0x1f')](_0xfff6('0x1b'),_0x5567d0,_0x1e9440['error']['message']);return _0xe947f4(_0x1e9440[_0xfff6('0x1f')][_0xfff6('0x20')]);}logger[_0xfff6('0x1f')](_0xfff6('0x1b'),_0x5567d0,_0x1e9440[_0xfff6('0x1f')]['message']);return _0x80abd0(_0x1e9440[_0xfff6('0x1f')]['message']);}else{logger[_0xfff6('0x21')]('FaxMessage,\x20%s,\x20%s',_0x5567d0,_0xfff6('0x1c'));_0x80abd0(_0x1e9440['result']['message']);}})[_0xfff6('0x22')](function(_0x57348b){logger[_0xfff6('0x1f')](_0xfff6('0x1b'),_0x5567d0,_0x57348b);_0xe947f4(_0x57348b);});});}function respondWithStatusCode(_0x383239,_0x2bb7ef){_0x2bb7ef=_0x2bb7ef||0xcc;return function(_0x5275d4){if(_0x5275d4){return _0x383239[_0xfff6('0x23')](_0x2bb7ef);}return _0x383239[_0xfff6('0x24')](_0x2bb7ef)[_0xfff6('0x25')]();};}function respondWithResult(_0x534d55,_0x5bbf94){_0x5bbf94=_0x5bbf94||0xc8;return function(_0x149471){if(_0x149471){return _0x534d55[_0xfff6('0x24')](_0x5bbf94)[_0xfff6('0x26')](_0x149471);}};}function respondWithFilteredResult(_0x2ff8f4,_0x3a0de4){return function(_0x420952){if(_0x420952){var _0x2922f9=typeof _0x3a0de4[_0xfff6('0x27')]===_0xfff6('0x28')&&typeof _0x3a0de4['limit']===_0xfff6('0x28');var _0x31fb6d=_0x420952['count'];var _0x328b7f=_0x2922f9?0x0:_0x3a0de4[_0xfff6('0x27')];var _0x4ff00c=_0x2922f9?_0x420952[_0xfff6('0x29')]:_0x3a0de4[_0xfff6('0x27')]+_0x3a0de4[_0xfff6('0x2a')];var _0x41a30c;if(_0x4ff00c>=_0x31fb6d){_0x4ff00c=_0x31fb6d;_0x41a30c=0xc8;}else{_0x41a30c=0xce;}_0x2ff8f4[_0xfff6('0x24')](_0x41a30c);return _0x2ff8f4[_0xfff6('0x2b')](_0xfff6('0x2c'),_0x328b7f+'-'+_0x4ff00c+'/'+_0x31fb6d)['json'](_0x420952);}return null;};}function patchUpdates(_0x168f77){return function(_0x10ce47){try{jsonpatch[_0xfff6('0x2d')](_0x10ce47,_0x168f77,!![]);}catch(_0x2f2195){return BPromise[_0xfff6('0x2e')](_0x2f2195);}return _0x10ce47[_0xfff6('0x2f')]();};}function saveUpdates(_0x37fe09,_0x389421){return function(_0x46f9ae){if(_0x46f9ae){return _0x46f9ae[_0xfff6('0x30')](_0x37fe09)['then'](function(_0x57ade7){return _0x57ade7;});}return null;};}function removeEntity(_0x5af13a,_0x3c7864){return function(_0x1e52a5){if(_0x1e52a5){return _0x1e52a5[_0xfff6('0x31')]()[_0xfff6('0x1a')](function(){_0x5af13a['status'](0xcc)[_0xfff6('0x25')]();});}};}function handleEntityNotFound(_0x3bda25,_0x8cd122){return function(_0x3fe537){if(!_0x3fe537){_0x3bda25['sendStatus'](0x194);}return _0x3fe537;};}function handleError(_0x142493,_0x10525e){_0x10525e=_0x10525e||0x1f4;return function(_0x29037c){logger[_0xfff6('0x1f')](_0x29037c[_0xfff6('0x32')]);if(_0x29037c[_0xfff6('0x33')]){delete _0x29037c[_0xfff6('0x33')];}_0x142493['status'](_0x10525e)[_0xfff6('0x34')](_0x29037c);};}exports[_0xfff6('0x35')]=function(_0x5f29ca,_0xd2882){var _0x10f96a={},_0x235ee7={},_0x1cfe83={'count':0x0,'rows':[]};var _0x6d1bda=_[_0xfff6('0x36')](db[_0xfff6('0x37')][_0xfff6('0x38')],function(_0x45b444){return{'name':_0x45b444[_0xfff6('0x39')],'type':_0x45b444[_0xfff6('0x3a')][_0xfff6('0x3b')]};});_0x235ee7[_0xfff6('0x3c')]=_[_0xfff6('0x36')](_0x6d1bda,_0xfff6('0x33'));_0x235ee7[_0xfff6('0x3d')]=_[_0xfff6('0x3e')](_0x5f29ca[_0xfff6('0x3d')]);_0x235ee7[_0xfff6('0x3f')]=_['intersection'](_0x235ee7[_0xfff6('0x3c')],_0x235ee7['query']);_0x10f96a[_0xfff6('0x40')]=_[_0xfff6('0x41')](_0x235ee7[_0xfff6('0x3c')],qs['fields'](_0x5f29ca[_0xfff6('0x3d')][_0xfff6('0x42')]));_0x10f96a['attributes']=_0x10f96a[_0xfff6('0x40')][_0xfff6('0x43')]?_0x10f96a['attributes']:_0x235ee7['model'];if(!_0x5f29ca[_0xfff6('0x3d')][_0xfff6('0x44')]('nolimit')){_0x10f96a[_0xfff6('0x2a')]=qs['limit'](_0x5f29ca['query'][_0xfff6('0x2a')]);_0x10f96a[_0xfff6('0x27')]=qs[_0xfff6('0x27')](_0x5f29ca[_0xfff6('0x3d')][_0xfff6('0x27')]);}_0x10f96a['order']=qs[_0xfff6('0x45')](_0x5f29ca[_0xfff6('0x3d')][_0xfff6('0x45')]);_0x10f96a['where']=qs[_0xfff6('0x3f')](_[_0xfff6('0x46')](_0x5f29ca['query'],_0x235ee7[_0xfff6('0x3f')]),_0x6d1bda);if(_0x5f29ca['query']['filter']){_0x10f96a[_0xfff6('0x47')]=_[_0xfff6('0x48')](_0x10f96a[_0xfff6('0x47')],{'$or':_[_0xfff6('0x36')](_0x6d1bda,function(_0x334487){if(_0x334487[_0xfff6('0x3a')]!=='VIRTUAL'){var _0x6c40b5={};_0x6c40b5[_0x334487[_0xfff6('0x33')]]={'$like':'%'+_0x5f29ca[_0xfff6('0x3d')][_0xfff6('0x49')]+'%'};return _0x6c40b5;}})});}_0x10f96a=_[_0xfff6('0x48')]({},_0x10f96a,_0x5f29ca[_0xfff6('0x4a')]);var _0x3d7d44={'where':_0x10f96a[_0xfff6('0x47')]};return db[_0xfff6('0x37')][_0xfff6('0x29')](_0x3d7d44)[_0xfff6('0x1a')](function(_0x1caa51){_0x1cfe83[_0xfff6('0x29')]=_0x1caa51;if(_0x5f29ca[_0xfff6('0x3d')][_0xfff6('0x4b')]){_0x10f96a[_0xfff6('0x4c')]=[{'all':!![]}];}return db[_0xfff6('0x37')][_0xfff6('0x4d')](_0x10f96a);})[_0xfff6('0x1a')](function(_0x5439e2){_0x1cfe83[_0xfff6('0x4e')]=_0x5439e2;return _0x1cfe83;})[_0xfff6('0x1a')](respondWithFilteredResult(_0xd2882,_0x10f96a))[_0xfff6('0x22')](handleError(_0xd2882,null));};exports['show']=function(_0x4e83d7,_0x3b626b){var _0x282a8={'raw':!![],'where':{'id':_0x4e83d7[_0xfff6('0x4f')]['id']}},_0x41601a={};_0x41601a['model']=_[_0xfff6('0x3e')](db[_0xfff6('0x37')][_0xfff6('0x38')]);_0x41601a['query']=_[_0xfff6('0x3e')](_0x4e83d7[_0xfff6('0x3d')]);_0x41601a[_0xfff6('0x3f')]=_['intersection'](_0x41601a['model'],_0x41601a[_0xfff6('0x3d')]);_0x282a8[_0xfff6('0x40')]=_[_0xfff6('0x41')](_0x41601a[_0xfff6('0x3c')],qs[_0xfff6('0x42')](_0x4e83d7[_0xfff6('0x3d')][_0xfff6('0x42')]));_0x282a8[_0xfff6('0x40')]=_0x282a8[_0xfff6('0x40')]['length']?_0x282a8['attributes']:_0x41601a[_0xfff6('0x3c')];if(_0x4e83d7[_0xfff6('0x3d')]['includeAll']){_0x282a8[_0xfff6('0x4c')]=[{'all':!![]}];}_0x282a8=_['merge']({},_0x282a8,_0x4e83d7[_0xfff6('0x4a')]);return db[_0xfff6('0x37')][_0xfff6('0x50')](_0x282a8)['then'](handleEntityNotFound(_0x3b626b,null))['then'](respondWithResult(_0x3b626b,null))[_0xfff6('0x22')](handleError(_0x3b626b,null));};exports[_0xfff6('0x30')]=function(_0x599d8e,_0x30bb45){if(_0x599d8e['body']['id']){delete _0x599d8e[_0xfff6('0x51')]['id'];}return db[_0xfff6('0x37')][_0xfff6('0x50')]({'where':{'id':_0x599d8e[_0xfff6('0x4f')]['id']}})[_0xfff6('0x1a')](handleEntityNotFound(_0x30bb45,null))[_0xfff6('0x1a')](saveUpdates(_0x599d8e[_0xfff6('0x51')],null))[_0xfff6('0x1a')](respondWithResult(_0x30bb45,null))['catch'](handleError(_0x30bb45,null));};exports[_0xfff6('0x31')]=function(_0x1d755b,_0x1e9158){return db[_0xfff6('0x37')][_0xfff6('0x50')]({'where':{'id':_0x1d755b[_0xfff6('0x4f')]['id']}})['then'](handleEntityNotFound(_0x1e9158,null))['then'](removeEntity(_0x1e9158,null))[_0xfff6('0x22')](handleError(_0x1e9158,null));};exports[_0xfff6('0x52')]=function(_0x26fdab,_0x5c5030){return db[_0xfff6('0x37')][_0xfff6('0x52')]()[_0xfff6('0x1a')](respondWithResult(_0x5c5030,null))[_0xfff6('0x22')](handleError(_0x5c5030,null));};var interaction_log=require('../../config/logger')(_0xfff6('0x53'));exports[_0xfff6('0x54')]=function(_0xdc10f3,_0x444f4b,_0x8727bd){var _0x9d833d={'agent':{},'channel':_0xfff6('0x55')};if(_0xdc10f3[_0xfff6('0x51')]['id']){delete _0xdc10f3[_0xfff6('0x51')]['id'];}_0xdc10f3['body']['read']=!![];_0xdc10f3['body'][_0xfff6('0x56')]=moment()['format'](_0xfff6('0x57'));_0xdc10f3[_0xfff6('0x51')]['UserId']=_0xdc10f3[_0xfff6('0x51')][_0xfff6('0x58')]||_0xdc10f3['user']['id'];_0x9d833d[_0xfff6('0x59')]['id']=_0xdc10f3[_0xfff6('0x51')][_0xfff6('0x58')];return db['FaxMessage'][_0xfff6('0x50')]({'where':{'id':_0xdc10f3[_0xfff6('0x4f')]['id'],'UserId':null}})[_0xfff6('0x1a')](handleEntityNotFound(_0x444f4b,null))[_0xfff6('0x1a')](saveUpdates(_0xdc10f3[_0xfff6('0x51')],null))[_0xfff6('0x1a')](function(_0x3dffea){if(_0x3dffea){_0x9d833d[_0xfff6('0x20')]=_0x3dffea[_0xfff6('0x5a')]({'plain':!![]});return db[_0xfff6('0x5b')][_0xfff6('0x50')]({'where':{'id':_0x3dffea[_0xfff6('0x5c')]}});}return null;})[_0xfff6('0x1a')](handleEntityNotFound(_0x444f4b,null))[_0xfff6('0x1a')](function(_0x3122b6){if(_0x3122b6){return _0x3122b6[_0xfff6('0x30')]({'UserId':_0xdc10f3[_0xfff6('0x51')][_0xfff6('0x58')],'read1stAt':_[_0xfff6('0x5d')](_0x3122b6[_0xfff6('0x5e')])?moment()[_0xfff6('0x5f')](_0xfff6('0x57')):undefined});}return null;})[_0xfff6('0x1a')](function(_0x3b39aa){if(_0x3b39aa){_0x9d833d[_0xfff6('0x60')]=_0x3b39aa[_0xfff6('0x5a')]({'plain':!![]});interaction_log['info']('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0xdc10f3[_0xfff6('0x61')]['id'],_0xdc10f3['user']['name'],_0xdc10f3[_0xfff6('0x61')][_0xfff6('0x62')],_0x9d833d[_0xfff6('0x60')]['id'],_0xdc10f3[_0xfff6('0x51')]?JSON[_0xfff6('0x1e')](_0xdc10f3[_0xfff6('0x51')]):_0xfff6('0x63'));return respondWithRpcPromise(_0xfff6('0x64'),_0xfff6('0x65'),_0x9d833d);}return null;})['then'](function(_0x5ee858){var _0x1aa5ad=_0xfff6('0x66')+_0x5ee858[_0xfff6('0x20')][_0xfff6('0x67')];return db[_0xfff6('0x68')][_0xfff6('0x3d')](_0x1aa5ad,{'type':db['Sequelize']['QueryTypes'][_0xfff6('0x69')],'raw':!![]})['then'](function(_0x44589e){return _0x44589e;});})[_0xfff6('0x1a')](function(_0x248b12){if(_0x248b12){_0x9d833d[_0xfff6('0x20')]['contact']=_0x248b12[0x0];if(!_0xdc10f3['body'][_0xfff6('0x58')])return;return db[_0xfff6('0x6a')]['find']({'where':{'id':_0xdc10f3[_0xfff6('0x51')]['UserId'],'role':_0xfff6('0x59')},'attributes':['id',_0xfff6('0x33'),'fullname',_0xfff6('0x6b'),_0xfff6('0x6c')],'raw':!![]});}return null;})['then'](function(_0x42f1fc){if(!_0x42f1fc)return null;_0x9d833d[_0xfff6('0x20')][_0xfff6('0x59')]=_0x42f1fc;return _0x9d833d;})[_0xfff6('0x1a')](function(_0x4a2b7d){if(_0x4a2b7d){if(_0xdc10f3[_0xfff6('0x51')][_0xfff6('0x6d')]){_0x9d833d[_0xfff6('0x20')][_0xfff6('0x6e')]=util[_0xfff6('0x5f')](_0xfff6('0x6f'),_0xdc10f3[_0xfff6('0x61')]['name']);_0x9d833d[_0xfff6('0x20')]['channel']=_0x9d833d[_0xfff6('0x70')];_0x9d833d[_0xfff6('0x20')]['motionChannel']=_0x9d833d['channel'];_0x9d833d[_0xfff6('0x20')][_0xfff6('0x71')]=_0xfff6('0x54');return respondWithRpcPromise(_0xfff6('0x72'),'EventManager',{'event':_0xfff6('0x73'),'message':_0x9d833d['message']},client9002)['then'](function(){return _0x9d833d;});}return _0x9d833d;}return null;})[_0xfff6('0x1a')](respondWithResult(_0x444f4b,null))['catch'](handleError(_0x444f4b,null));};var interaction_log=require(_0xfff6('0xf'))(_0xfff6('0x53'));exports['reject']=function(_0x513741,_0x5223cb,_0x1c86ad){var _0x393bfc={'agent':{},'channel':_0xfff6('0x55')};if(_0x513741[_0xfff6('0x51')]['id']){delete _0x513741[_0xfff6('0x51')]['id'];}_0x513741[_0xfff6('0x51')][_0xfff6('0x58')]=_0x513741[_0xfff6('0x51')][_0xfff6('0x58')]||_0x513741[_0xfff6('0x61')]['id'];_0x393bfc[_0xfff6('0x59')]['id']=_0x513741['body'][_0xfff6('0x58')];return db['FaxMessage'][_0xfff6('0x50')]({'where':{'id':_0x513741[_0xfff6('0x4f')]['id'],'UserId':null}})[_0xfff6('0x1a')](handleEntityNotFound(_0x5223cb,null))['then'](function(_0x5d4a78){if(_0x5d4a78){_0x393bfc[_0xfff6('0x20')]=_0x5d4a78['get']({'plain':!![]});return db[_0xfff6('0x5b')][_0xfff6('0x50')]({'where':{'id':_0x5d4a78[_0xfff6('0x5c')]}});}return null;})['then'](handleEntityNotFound(_0x5223cb,null))[_0xfff6('0x1a')](function(_0x48b6a8){if(_0x48b6a8){_0x393bfc[_0xfff6('0x60')]=_0x48b6a8[_0xfff6('0x5a')]({'plain':!![]});interaction_log[_0xfff6('0x21')](_0xfff6('0x74'),_0x513741[_0xfff6('0x61')]['id'],_0x513741[_0xfff6('0x61')][_0xfff6('0x33')],_0x513741[_0xfff6('0x61')][_0xfff6('0x62')],_0x393bfc[_0xfff6('0x60')]['id'],_0x513741['body']?JSON[_0xfff6('0x1e')](_0x513741[_0xfff6('0x51')]):_0xfff6('0x63'));return respondWithRpcPromise(_0xfff6('0x75'),_0xfff6('0x76'),_0x393bfc);}return null;})[_0xfff6('0x1a')](function(_0xef605b){var _0x1928ff='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0xef605b[_0xfff6('0x20')][_0xfff6('0x67')];return db[_0xfff6('0x68')][_0xfff6('0x3d')](_0x1928ff,{'type':db[_0xfff6('0x77')]['QueryTypes'][_0xfff6('0x69')],'raw':!![]})['then'](function(_0x77dab6){return _0x77dab6;});})[_0xfff6('0x1a')](function(_0x21eb77){if(_0x21eb77){_0x393bfc[_0xfff6('0x20')]['contact']=_0x21eb77[0x0];if(!_0x513741[_0xfff6('0x51')][_0xfff6('0x58')])return;return db[_0xfff6('0x6a')]['find']({'where':{'id':_0x513741['body'][_0xfff6('0x58')],'role':_0xfff6('0x59')},'attributes':['id',_0xfff6('0x33'),'fullname',_0xfff6('0x6b'),_0xfff6('0x6c')],'raw':!![]});}return null;})[_0xfff6('0x1a')](function(_0x402b06){if(!_0x402b06)return null;_0x393bfc[_0xfff6('0x20')]['agent']=_0x402b06;return _0x393bfc;})['then'](function(_0x4f4b30){if(_0x4f4b30){_0x4f4b30[_0xfff6('0x20')][_0xfff6('0x6e')]=util['format'](_0xfff6('0x6f'),_0x513741[_0xfff6('0x61')][_0xfff6('0x33')]);_0x4f4b30[_0xfff6('0x20')]['channel']=_0x393bfc[_0xfff6('0x70')];_0x4f4b30[_0xfff6('0x20')]['motionChannel']=_0x393bfc[_0xfff6('0x70')];_0x4f4b30[_0xfff6('0x20')][_0xfff6('0x71')]=_0xfff6('0x2e');respondWithRpcPromise(_0xfff6('0x72'),'EventManager',{'event':_0xfff6('0x78'),'message':_0x4f4b30[_0xfff6('0x20')]},client9002);return _0x393bfc;}return null;})['then'](respondWithResult(_0x5223cb,null))[_0xfff6('0x22')](handleError(_0x5223cb,null));};exports['create']=function(_0x595ec9,_0x295a0f){var _0x1c0063;return db['FaxMessage']['create'](_0x595ec9['body'],{})[_0xfff6('0x1a')](function(_0x114a89){_0x1c0063=_0x114a89;return db[_0xfff6('0x79')][_0xfff6('0x7a')]({'where':{'id':_0x1c0063[_0xfff6('0x67')]}});})[_0xfff6('0x1a')](function(_0x564297){if(_[_0xfff6('0x5d')](_0x564297)){return;}else{_0x1c0063['fax']=_0x564297[_0xfff6('0x55')];return db[_0xfff6('0x7b')][_0xfff6('0x7a')]({'where':{'id':_0x1c0063[_0xfff6('0x7c')]}});}})[_0xfff6('0x1a')](function(_0x3a2315){return respondWithRpcPromise(_0xfff6('0x7d'),_0xfff6('0x7d'),{'FaxAccountId':_['isNil'](_0x595ec9['body'])?undefined:_0x595ec9['body'][_0xfff6('0x7e')],'path':_[_0xfff6('0x5d')](_0x3a2315)?undefined:util[_0xfff6('0x5f')](_0xfff6('0x7f'),_0x3a2315[_0xfff6('0x80')]),'fax':_[_0xfff6('0x5d')](_0x1c0063[_0xfff6('0x55')])?undefined:_0x1c0063[_0xfff6('0x55')],'AttachmentId':_0x1c0063[_0xfff6('0x7c')]},client9002);})[_0xfff6('0x1a')](respondWithResult(_0x295a0f,0xc9))[_0xfff6('0x22')](handleError(_0x295a0f,null));};exports['download']=function(_0x11943e,_0x197b1e){var _0x7365a2=path[_0xfff6('0x81')](config[_0xfff6('0x82')],_0xfff6('0x83'),_0xfff6('0x84'),_0xfff6('0x85'));return db[_0xfff6('0x37')]['find']({'where':{'id':_0x11943e[_0xfff6('0x4f')]['id']},'include':[{'model':db[_0xfff6('0x7b')],'as':'Attachment'}]})['then'](handleEntityNotFound(_0x197b1e,null))[_0xfff6('0x1a')](function(_0x20c9de){if(_0x20c9de){return _0x197b1e[_0xfff6('0x86')](path[_0xfff6('0x81')](_0x7365a2,_0x20c9de[_0xfff6('0x7b')][_0xfff6('0x80')]));}})[_0xfff6('0x22')](handleError(_0x197b1e,null));};
\ No newline at end of file
+var _0x182d=['FaxInteraction','FaxInteractionId','isNil','read1stAt','interaction','role','stringify','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','User','fullname','email','internal','agent','manual','interface','format','SIP/%s','channel','event','EventManager','fax-interactions','reject','fax','info','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','rejectMessage','rejectmessage','CmContact','findOne','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','join','root','server','files','attachments','Attachment','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','./faxMessage.socket','register','jayson/promise','http','request','then','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','error','message','result','catch','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','update','destroy','stack','name','send','index','map','FaxMessage','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','pick','filter','where','merge','type','VIRTUAL','options','include','findAll','rows','params','length','includeAll','find','body','describe','accept','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get'];(function(_0x4dcaea,_0x4b88d0){var _0x5137cd=function(_0x2abeb1){while(--_0x2abeb1){_0x4dcaea['push'](_0x4dcaea['shift']());}};_0x5137cd(++_0x4b88d0);}(_0x182d,0x1ec));var _0xd182=function(_0x1fb330,_0x14fd9e){_0x1fb330=_0x1fb330-0x0;var _0x2fdad1=_0x182d[_0x1fb330];return _0x2fdad1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd182('0x0'));var zipdir=require(_0xd182('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd182('0x2'));var moment=require(_0xd182('0x3'));var BPromise=require(_0xd182('0x4'));var Mustache=require(_0xd182('0x5'));var util=require(_0xd182('0x6'));var path=require(_0xd182('0x7'));var sox=require(_0xd182('0x8'));var csv=require(_0xd182('0x9'));var ejs=require(_0xd182('0xa'));var fs=require('fs');var fs_extra=require(_0xd182('0xb'));var _=require(_0xd182('0xc'));var squel=require(_0xd182('0xd'));var crypto=require(_0xd182('0xe'));var jsforce=require(_0xd182('0xf'));var deskjs=require(_0xd182('0x10'));var toCsv=require(_0xd182('0x9'));var querystring=require(_0xd182('0x11'));var Papa=require(_0xd182('0x12'));var Redis=require('ioredis');var authService=require(_0xd182('0x13'));var qs=require(_0xd182('0x14'));var as=require(_0xd182('0x15'));var hardwareService=require(_0xd182('0x16'));var logger=require(_0xd182('0x17'))(_0xd182('0x18'));var utils=require(_0xd182('0x19'));var config=require(_0xd182('0x1a'));var licenseUtil=require(_0xd182('0x1b'));var db=require('../../mysqldb')['db'];config[_0xd182('0x1c')]=_[_0xd182('0x1d')](config[_0xd182('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0xd182('0x1e'))(new Redis(config[_0xd182('0x1c')]));require(_0xd182('0x1f'))[_0xd182('0x20')](socket);var jayson=require(_0xd182('0x21'));var client=jayson['client'][_0xd182('0x22')]({'port':0x232c});var client9002=jayson['client'][_0xd182('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x3a9840,_0x65c23a,_0x56d455,_0x326f76){return new BPromise(function(_0x22d44b,_0x3cbab2){var _0x9e084a=_0x326f76||client;return _0x9e084a[_0xd182('0x23')](_0x3a9840,_0x56d455)[_0xd182('0x24')](function(_0x579afd){logger['info'](_0xd182('0x25'),_0x65c23a,_0xd182('0x26'));logger[_0xd182('0x27')](_0xd182('0x28'),_0x65c23a,_0xd182('0x26'),JSON['stringify'](_0x579afd));if(_0x579afd[_0xd182('0x29')]){if(_0x579afd[_0xd182('0x29')]['code']===0x1f4){logger[_0xd182('0x29')](_0xd182('0x25'),_0x65c23a,_0x579afd['error']['message']);return _0x3cbab2(_0x579afd[_0xd182('0x29')]['message']);}logger[_0xd182('0x29')]('FaxMessage,\x20%s,\x20%s',_0x65c23a,_0x579afd[_0xd182('0x29')]['message']);return _0x22d44b(_0x579afd['error'][_0xd182('0x2a')]);}else{logger['info'](_0xd182('0x25'),_0x65c23a,_0xd182('0x26'));_0x22d44b(_0x579afd[_0xd182('0x2b')][_0xd182('0x2a')]);}})[_0xd182('0x2c')](function(_0xd92019){logger[_0xd182('0x29')](_0xd182('0x25'),_0x65c23a,_0xd92019);_0x3cbab2(_0xd92019);});});}function respondWithStatusCode(_0x2d0870,_0x4c44e0){_0x4c44e0=_0x4c44e0||0xcc;return function(_0xf2b3b9){if(_0xf2b3b9){return _0x2d0870[_0xd182('0x2d')](_0x4c44e0);}return _0x2d0870['status'](_0x4c44e0)[_0xd182('0x2e')]();};}function respondWithResult(_0x437bfb,_0x34d77a){_0x34d77a=_0x34d77a||0xc8;return function(_0x406b60){if(_0x406b60){return _0x437bfb[_0xd182('0x2f')](_0x34d77a)[_0xd182('0x30')](_0x406b60);}};}function respondWithFilteredResult(_0x2a0d2f,_0x318edd){return function(_0x470ad8){if(_0x470ad8){var _0x388e67=typeof _0x318edd[_0xd182('0x31')]===_0xd182('0x32')&&typeof _0x318edd[_0xd182('0x33')]===_0xd182('0x32');var _0x5bb1c3=_0x470ad8[_0xd182('0x34')];var _0x149366=_0x388e67?0x0:_0x318edd['offset'];var _0x20f186=_0x388e67?_0x470ad8[_0xd182('0x34')]:_0x318edd[_0xd182('0x31')]+_0x318edd[_0xd182('0x33')];var _0x250a9d;if(_0x20f186>=_0x5bb1c3){_0x20f186=_0x5bb1c3;_0x250a9d=0xc8;}else{_0x250a9d=0xce;}_0x2a0d2f[_0xd182('0x2f')](_0x250a9d);return _0x2a0d2f[_0xd182('0x35')](_0xd182('0x36'),_0x149366+'-'+_0x20f186+'/'+_0x5bb1c3)[_0xd182('0x30')](_0x470ad8);}return null;};}function patchUpdates(_0x24ed9b){return function(_0x3e9d35){try{jsonpatch[_0xd182('0x37')](_0x3e9d35,_0x24ed9b,!![]);}catch(_0xc1d0e){return BPromise['reject'](_0xc1d0e);}return _0x3e9d35['save']();};}function saveUpdates(_0x56b531,_0x39e40d){return function(_0x1ddc0a){if(_0x1ddc0a){return _0x1ddc0a[_0xd182('0x38')](_0x56b531)[_0xd182('0x24')](function(_0x2730bf){return _0x2730bf;});}return null;};}function removeEntity(_0x2252c0,_0x41fc97){return function(_0x1df36f){if(_0x1df36f){return _0x1df36f[_0xd182('0x39')]()[_0xd182('0x24')](function(){_0x2252c0[_0xd182('0x2f')](0xcc)[_0xd182('0x2e')]();});}};}function handleEntityNotFound(_0x35beff,_0x33c97b){return function(_0xaa7352){if(!_0xaa7352){_0x35beff[_0xd182('0x2d')](0x194);}return _0xaa7352;};}function handleError(_0x41e29c,_0x5dbeca){_0x5dbeca=_0x5dbeca||0x1f4;return function(_0x21bc5f){logger[_0xd182('0x29')](_0x21bc5f[_0xd182('0x3a')]);if(_0x21bc5f[_0xd182('0x3b')]){delete _0x21bc5f[_0xd182('0x3b')];}_0x41e29c[_0xd182('0x2f')](_0x5dbeca)[_0xd182('0x3c')](_0x21bc5f);};}exports[_0xd182('0x3d')]=function(_0x2a468a,_0x4a963f){var _0x254f61={},_0x521daa={},_0xf9f8c2={'count':0x0,'rows':[]};var _0x1d0151=_[_0xd182('0x3e')](db[_0xd182('0x3f')][_0xd182('0x40')],function(_0x18907f){return{'name':_0x18907f[_0xd182('0x41')],'type':_0x18907f['type'][_0xd182('0x42')]};});_0x521daa[_0xd182('0x43')]=_[_0xd182('0x3e')](_0x1d0151,'name');_0x521daa[_0xd182('0x44')]=_[_0xd182('0x45')](_0x2a468a[_0xd182('0x44')]);_0x521daa[_0xd182('0x46')]=_[_0xd182('0x47')](_0x521daa['model'],_0x521daa[_0xd182('0x44')]);_0x254f61[_0xd182('0x48')]=_[_0xd182('0x47')](_0x521daa[_0xd182('0x43')],qs['fields'](_0x2a468a[_0xd182('0x44')][_0xd182('0x49')]));_0x254f61['attributes']=_0x254f61['attributes']['length']?_0x254f61['attributes']:_0x521daa[_0xd182('0x43')];if(!_0x2a468a['query']['hasOwnProperty'](_0xd182('0x4a'))){_0x254f61['limit']=qs[_0xd182('0x33')](_0x2a468a['query']['limit']);_0x254f61[_0xd182('0x31')]=qs[_0xd182('0x31')](_0x2a468a[_0xd182('0x44')][_0xd182('0x31')]);}_0x254f61[_0xd182('0x4b')]=qs[_0xd182('0x4c')](_0x2a468a[_0xd182('0x44')]['sort']);_0x254f61['where']=qs[_0xd182('0x46')](_[_0xd182('0x4d')](_0x2a468a[_0xd182('0x44')],_0x521daa[_0xd182('0x46')]),_0x1d0151);if(_0x2a468a['query'][_0xd182('0x4e')]){_0x254f61[_0xd182('0x4f')]=_[_0xd182('0x50')](_0x254f61['where'],{'$or':_['map'](_0x1d0151,function(_0x1c1f9b){if(_0x1c1f9b[_0xd182('0x51')]!==_0xd182('0x52')){var _0x5e5e34={};_0x5e5e34[_0x1c1f9b[_0xd182('0x3b')]]={'$like':'%'+_0x2a468a[_0xd182('0x44')][_0xd182('0x4e')]+'%'};return _0x5e5e34;}})});}_0x254f61=_[_0xd182('0x50')]({},_0x254f61,_0x2a468a[_0xd182('0x53')]);var _0x125dc4={'where':_0x254f61['where']};return db[_0xd182('0x3f')][_0xd182('0x34')](_0x125dc4)[_0xd182('0x24')](function(_0x22173b){_0xf9f8c2[_0xd182('0x34')]=_0x22173b;if(_0x2a468a['query']['includeAll']){_0x254f61[_0xd182('0x54')]=[{'all':!![]}];}return db[_0xd182('0x3f')][_0xd182('0x55')](_0x254f61);})[_0xd182('0x24')](function(_0x217b67){_0xf9f8c2[_0xd182('0x56')]=_0x217b67;return _0xf9f8c2;})[_0xd182('0x24')](respondWithFilteredResult(_0x4a963f,_0x254f61))[_0xd182('0x2c')](handleError(_0x4a963f,null));};exports['show']=function(_0x2fcf87,_0x4b842a){var _0x8797cf={'raw':!![],'where':{'id':_0x2fcf87[_0xd182('0x57')]['id']}},_0x1a684f={};_0x1a684f[_0xd182('0x43')]=_[_0xd182('0x45')](db[_0xd182('0x3f')][_0xd182('0x40')]);_0x1a684f[_0xd182('0x44')]=_['keys'](_0x2fcf87[_0xd182('0x44')]);_0x1a684f['filters']=_[_0xd182('0x47')](_0x1a684f['model'],_0x1a684f[_0xd182('0x44')]);_0x8797cf[_0xd182('0x48')]=_[_0xd182('0x47')](_0x1a684f['model'],qs[_0xd182('0x49')](_0x2fcf87[_0xd182('0x44')]['fields']));_0x8797cf[_0xd182('0x48')]=_0x8797cf[_0xd182('0x48')][_0xd182('0x58')]?_0x8797cf[_0xd182('0x48')]:_0x1a684f[_0xd182('0x43')];if(_0x2fcf87[_0xd182('0x44')][_0xd182('0x59')]){_0x8797cf[_0xd182('0x54')]=[{'all':!![]}];}_0x8797cf=_[_0xd182('0x50')]({},_0x8797cf,_0x2fcf87['options']);return db[_0xd182('0x3f')][_0xd182('0x5a')](_0x8797cf)[_0xd182('0x24')](handleEntityNotFound(_0x4b842a,null))[_0xd182('0x24')](respondWithResult(_0x4b842a,null))[_0xd182('0x2c')](handleError(_0x4b842a,null));};exports[_0xd182('0x38')]=function(_0x5b339f,_0x4b8d79){if(_0x5b339f[_0xd182('0x5b')]['id']){delete _0x5b339f[_0xd182('0x5b')]['id'];}return db['FaxMessage'][_0xd182('0x5a')]({'where':{'id':_0x5b339f['params']['id']}})[_0xd182('0x24')](handleEntityNotFound(_0x4b8d79,null))[_0xd182('0x24')](saveUpdates(_0x5b339f[_0xd182('0x5b')],null))[_0xd182('0x24')](respondWithResult(_0x4b8d79,null))[_0xd182('0x2c')](handleError(_0x4b8d79,null));};exports[_0xd182('0x39')]=function(_0x333e42,_0x48dab9){return db[_0xd182('0x3f')][_0xd182('0x5a')]({'where':{'id':_0x333e42['params']['id']}})[_0xd182('0x24')](handleEntityNotFound(_0x48dab9,null))[_0xd182('0x24')](removeEntity(_0x48dab9,null))[_0xd182('0x2c')](handleError(_0x48dab9,null));};exports['describe']=function(_0x532080,_0x3ff6e){return db['FaxMessage'][_0xd182('0x5c')]()[_0xd182('0x24')](respondWithResult(_0x3ff6e,null))[_0xd182('0x2c')](handleError(_0x3ff6e,null));};var interaction_log=require(_0xd182('0x17'))('fax-interactions');exports[_0xd182('0x5d')]=function(_0x467d4a,_0x377fa3,_0x55d95c){var _0x44f0da={'agent':{},'channel':'fax'};if(_0x467d4a[_0xd182('0x5b')]['id']){delete _0x467d4a[_0xd182('0x5b')]['id'];}_0x467d4a[_0xd182('0x5b')][_0xd182('0x5e')]=!![];_0x467d4a[_0xd182('0x5b')][_0xd182('0x5f')]=moment()['format'](_0xd182('0x60'));_0x467d4a[_0xd182('0x5b')][_0xd182('0x61')]=_0x467d4a[_0xd182('0x5b')][_0xd182('0x61')]||_0x467d4a[_0xd182('0x62')]['id'];_0x44f0da['agent']['id']=_0x467d4a[_0xd182('0x5b')]['UserId'];return db[_0xd182('0x3f')][_0xd182('0x5a')]({'where':{'id':_0x467d4a[_0xd182('0x57')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x377fa3,null))['then'](saveUpdates(_0x467d4a[_0xd182('0x5b')],null))[_0xd182('0x24')](function(_0x87234c){if(_0x87234c){_0x44f0da[_0xd182('0x2a')]=_0x87234c[_0xd182('0x63')]({'plain':!![]});return db[_0xd182('0x64')][_0xd182('0x5a')]({'where':{'id':_0x87234c[_0xd182('0x65')]}});}return null;})[_0xd182('0x24')](handleEntityNotFound(_0x377fa3,null))[_0xd182('0x24')](function(_0x28d645){if(_0x28d645){return _0x28d645[_0xd182('0x38')]({'UserId':_0x467d4a[_0xd182('0x5b')][_0xd182('0x61')],'read1stAt':_[_0xd182('0x66')](_0x28d645[_0xd182('0x67')])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xd182('0x24')](function(_0x21c2bb){if(_0x21c2bb){_0x44f0da[_0xd182('0x68')]=_0x21c2bb[_0xd182('0x63')]({'plain':!![]});interaction_log['info']('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x467d4a[_0xd182('0x62')]['id'],_0x467d4a[_0xd182('0x62')][_0xd182('0x3b')],_0x467d4a[_0xd182('0x62')][_0xd182('0x69')],_0x44f0da[_0xd182('0x68')]['id'],_0x467d4a[_0xd182('0x5b')]?JSON[_0xd182('0x6a')](_0x467d4a[_0xd182('0x5b')]):'null');return respondWithRpcPromise('AcceptMessage',_0xd182('0x6b'),_0x44f0da);}return null;})[_0xd182('0x24')](function(_0x179914){var _0x316fe0=_0xd182('0x6c')+_0x179914[_0xd182('0x2a')][_0xd182('0x6d')];return db[_0xd182('0x6e')][_0xd182('0x44')](_0x316fe0,{'type':db[_0xd182('0x6f')][_0xd182('0x70')][_0xd182('0x71')],'raw':!![]})[_0xd182('0x24')](function(_0x2d005f){return _0x2d005f;});})[_0xd182('0x24')](function(_0x2ea583){if(_0x2ea583){_0x44f0da['message']['contact']=_0x2ea583[0x0];if(!_0x467d4a['body'][_0xd182('0x61')])return;return db[_0xd182('0x72')]['find']({'where':{'id':_0x467d4a[_0xd182('0x5b')][_0xd182('0x61')],'role':'agent'},'attributes':['id',_0xd182('0x3b'),_0xd182('0x73'),_0xd182('0x74'),_0xd182('0x75')],'raw':!![]});}return null;})[_0xd182('0x24')](function(_0x2294bb){if(!_0x2294bb)return null;_0x44f0da[_0xd182('0x2a')][_0xd182('0x76')]=_0x2294bb;return _0x44f0da;})[_0xd182('0x24')](function(_0x14e960){if(_0x14e960){if(_0x467d4a[_0xd182('0x5b')][_0xd182('0x77')]){_0x44f0da[_0xd182('0x2a')][_0xd182('0x78')]=util[_0xd182('0x79')](_0xd182('0x7a'),_0x467d4a[_0xd182('0x62')][_0xd182('0x3b')]);_0x44f0da['message'][_0xd182('0x7b')]=_0x44f0da[_0xd182('0x7b')];_0x44f0da[_0xd182('0x2a')][_0xd182('0x7c')]=_0xd182('0x5d');return respondWithRpcPromise(_0xd182('0x7d'),_0xd182('0x7d'),{'event':'acceptmessage','message':_0x44f0da[_0xd182('0x2a')]},client9002)[_0xd182('0x24')](function(){return _0x44f0da;});}return _0x44f0da;}return null;})[_0xd182('0x24')](respondWithResult(_0x377fa3,null))[_0xd182('0x2c')](handleError(_0x377fa3,null));};var interaction_log=require(_0xd182('0x17'))(_0xd182('0x7e'));exports[_0xd182('0x7f')]=function(_0xbee2c6,_0x5296fd,_0x5d958e){var _0x47a565={'agent':{},'channel':_0xd182('0x80')};if(_0xbee2c6[_0xd182('0x5b')]['id']){delete _0xbee2c6[_0xd182('0x5b')]['id'];}_0xbee2c6[_0xd182('0x5b')][_0xd182('0x61')]=_0xbee2c6[_0xd182('0x5b')][_0xd182('0x61')]||_0xbee2c6['user']['id'];_0x47a565['agent']['id']=_0xbee2c6[_0xd182('0x5b')][_0xd182('0x61')];return db[_0xd182('0x3f')][_0xd182('0x5a')]({'where':{'id':_0xbee2c6[_0xd182('0x57')]['id'],'UserId':null}})[_0xd182('0x24')](handleEntityNotFound(_0x5296fd,null))[_0xd182('0x24')](function(_0x16a9e6){if(_0x16a9e6){_0x47a565[_0xd182('0x2a')]=_0x16a9e6['get']({'plain':!![]});return db[_0xd182('0x64')][_0xd182('0x5a')]({'where':{'id':_0x16a9e6[_0xd182('0x65')]}});}return null;})[_0xd182('0x24')](handleEntityNotFound(_0x5296fd,null))[_0xd182('0x24')](function(_0x27ae4c){if(_0x27ae4c){_0x47a565[_0xd182('0x68')]=_0x27ae4c[_0xd182('0x63')]({'plain':!![]});interaction_log[_0xd182('0x81')](_0xd182('0x82'),_0xbee2c6[_0xd182('0x62')]['id'],_0xbee2c6[_0xd182('0x62')][_0xd182('0x3b')],_0xbee2c6[_0xd182('0x62')]['role'],_0x47a565[_0xd182('0x68')]['id'],_0xbee2c6['body']?JSON[_0xd182('0x6a')](_0xbee2c6['body']):_0xd182('0x83'));return respondWithRpcPromise('RejectMessage',_0xd182('0x84'),_0x47a565);}return null;})[_0xd182('0x24')](function(_0x2b97ce){var _0x372f58=_0xd182('0x6c')+_0x2b97ce['message'][_0xd182('0x6d')];return db[_0xd182('0x6e')][_0xd182('0x44')](_0x372f58,{'type':db[_0xd182('0x6f')][_0xd182('0x70')][_0xd182('0x71')],'raw':!![]})[_0xd182('0x24')](function(_0x3e45f9){return _0x3e45f9;});})['then'](function(_0x1f73c9){if(_0x1f73c9){_0x47a565[_0xd182('0x2a')]['contact']=_0x1f73c9[0x0];if(!_0xbee2c6[_0xd182('0x5b')][_0xd182('0x61')])return;return db[_0xd182('0x72')][_0xd182('0x5a')]({'where':{'id':_0xbee2c6[_0xd182('0x5b')][_0xd182('0x61')],'role':'agent'},'attributes':['id','name','fullname',_0xd182('0x74'),'internal'],'raw':!![]});}return null;})[_0xd182('0x24')](function(_0x3d4ef5){if(!_0x3d4ef5)return null;_0x47a565['message'][_0xd182('0x76')]=_0x3d4ef5;return _0x47a565;})[_0xd182('0x24')](function(_0x292a42){if(_0x292a42){_0x292a42[_0xd182('0x2a')][_0xd182('0x78')]=util['format'](_0xd182('0x7a'),_0xbee2c6['user'][_0xd182('0x3b')]);_0x292a42['message'][_0xd182('0x7b')]=_0x47a565[_0xd182('0x7b')];_0x292a42[_0xd182('0x2a')][_0xd182('0x7c')]='reject';respondWithRpcPromise(_0xd182('0x7d'),'EventManager',{'event':_0xd182('0x85'),'message':_0x292a42[_0xd182('0x2a')]},client9002);return _0x47a565;}return null;})[_0xd182('0x24')](respondWithResult(_0x5296fd,null))[_0xd182('0x2c')](handleError(_0x5296fd,null));};exports['create']=function(_0x212a4f,_0x3144fa){var _0x2d7809;return db['FaxMessage']['create'](_0x212a4f[_0xd182('0x5b')],{})['then'](function(_0x11f582){_0x2d7809=_0x11f582;return db[_0xd182('0x86')][_0xd182('0x87')]({'where':{'id':_0x2d7809[_0xd182('0x6d')]}});})[_0xd182('0x24')](function(_0x57fb54){if(_[_0xd182('0x66')](_0x57fb54)){return;}else{_0x2d7809[_0xd182('0x80')]=_0x57fb54['fax'];return db['Attachment'][_0xd182('0x87')]({'where':{'id':_0x2d7809[_0xd182('0x88')]}});}})['then'](function(_0x19b80c){return respondWithRpcPromise('SendFax',_0xd182('0x89'),{'FaxAccountId':_['isNil'](_0x212a4f['body'])?undefined:_0x212a4f[_0xd182('0x5b')][_0xd182('0x8a')],'path':_[_0xd182('0x66')](_0x19b80c)?undefined:util[_0xd182('0x79')](_0xd182('0x8b'),_0x19b80c[_0xd182('0x8c')]),'fax':_[_0xd182('0x66')](_0x2d7809[_0xd182('0x80')])?undefined:_0x2d7809[_0xd182('0x80')],'AttachmentId':_0x2d7809[_0xd182('0x88')]},client9002);})[_0xd182('0x24')](respondWithResult(_0x3144fa,0xc9))[_0xd182('0x2c')](handleError(_0x3144fa,null));};exports[_0xd182('0x8d')]=function(_0x43df71,_0x23d852){var _0x3b4408=path[_0xd182('0x8e')](config[_0xd182('0x8f')],_0xd182('0x90'),_0xd182('0x91'),_0xd182('0x92'));return db[_0xd182('0x3f')][_0xd182('0x5a')]({'where':{'id':_0x43df71[_0xd182('0x57')]['id']},'include':[{'model':db['Attachment'],'as':_0xd182('0x93')}]})['then'](handleEntityNotFound(_0x23d852,null))[_0xd182('0x24')](function(_0xec13d6){if(_0xec13d6){return _0x23d852['download'](path[_0xd182('0x8e')](_0x3b4408,_0xec13d6[_0xd182('0x93')][_0xd182('0x8c')]));}})[_0xd182('0x2c')](handleError(_0x23d852,null));};
\ No newline at end of file
index 3f919fc..de146a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed1c=['events','../../mysqldb','remove','emit','hasOwnProperty','exports'];(function(_0x1b1e1c,_0x2efb80){var _0xa6a2b9=function(_0x22eb72){while(--_0x22eb72){_0x1b1e1c['push'](_0x1b1e1c['shift']());}};_0xa6a2b9(++_0x2efb80);}(_0xed1c,0xe4));var _0xced1=function(_0x382cd1,_0x33177f){_0x382cd1=_0x382cd1-0x0;var _0x2ae9ec=_0xed1c[_0x382cd1];return _0x2ae9ec;};'use strict';var EventEmitter=require(_0xced1('0x0'));var FaxMessage=require(_0xced1('0x1'))['db']['FaxMessage'];var FaxMessageEvents=new EventEmitter();FaxMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xced1('0x2')};function emitEvent(_0x329a0a){return function(_0x79202e,_0x47a45c,_0x1e23a9){FaxMessageEvents[_0xced1('0x3')](_0x329a0a+':'+_0x79202e['id'],_0x79202e);FaxMessageEvents[_0xced1('0x3')](_0x329a0a,_0x79202e);_0x1e23a9(null);};}for(var e in events){if(events[_0xced1('0x4')](e)){var event=events[e];FaxMessage['hook'](e,emitEvent(event));}}module[_0xced1('0x5')]=FaxMessageEvents;
\ No newline at end of file
+var _0xfc9b=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','FaxMessage','setMaxListeners','save'];(function(_0xd1d19a,_0x1933f0){var _0x52a79d=function(_0x5199e2){while(--_0x5199e2){_0xd1d19a['push'](_0xd1d19a['shift']());}};_0x52a79d(++_0x1933f0);}(_0xfc9b,0x74));var _0xbfc9=function(_0x50d122,_0x3ac498){_0x50d122=_0x50d122-0x0;var _0x527773=_0xfc9b[_0x50d122];return _0x527773;};'use strict';var EventEmitter=require(_0xbfc9('0x0'));var FaxMessage=require(_0xbfc9('0x1'))['db'][_0xbfc9('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0xbfc9('0x3')](0x0);var events={'afterCreate':_0xbfc9('0x4'),'afterUpdate':_0xbfc9('0x5'),'afterDestroy':_0xbfc9('0x6')};function emitEvent(_0x5b30b2){return function(_0x2eedb4,_0x49e470,_0x12beb4){FaxMessageEvents[_0xbfc9('0x7')](_0x5b30b2+':'+_0x2eedb4['id'],_0x2eedb4);FaxMessageEvents['emit'](_0x5b30b2,_0x2eedb4);_0x12beb4(null);};}for(var e in events){if(events[_0xbfc9('0x8')](e)){var event=events[e];FaxMessage[_0xbfc9('0x9')](e,emitEvent(event));}}module[_0xbfc9('0xa')]=FaxMessageEvents;
\ No newline at end of file
index 0974c6f..d6cb5c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb965=['path','rimraf','../../config/environment','./faxMessage.attributes','exports','define','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','FaxInteraction','findOne','then','update','createdAt','catch','error','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','request-promise'];(function(_0x15d21f,_0x10997d){var _0x50b48d=function(_0x58183d){while(--_0x58183d){_0x15d21f['push'](_0x15d21f['shift']());}};_0x50b48d(++_0x10997d);}(_0xb965,0xa9));var _0x5b96=function(_0x5742c4,_0x5d94fc){_0x5742c4=_0x5742c4-0x0;var _0x3eecc9=_0xb965[_0x5742c4];return _0x3eecc9;};'use strict';var _=require(_0x5b96('0x0'));var util=require(_0x5b96('0x1'));var logger=require(_0x5b96('0x2'))('api');var moment=require(_0x5b96('0x3'));var BPromise=require('bluebird');var rp=require(_0x5b96('0x4'));var fs=require('fs');var path=require(_0x5b96('0x5'));var rimraf=require(_0x5b96('0x6'));var config=require(_0x5b96('0x7'));var attributes=require(_0x5b96('0x8'));module[_0x5b96('0x9')]=function(_0x252499,_0x476740){return _0x252499[_0x5b96('0xa')]('FaxMessage',attributes,{'tableName':'fax_messages','paranoid':![],'indexes':[{'name':'fti_fax_messages','fields':[_0x5b96('0xb')],'type':_0x5b96('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x197c0c,_0x474434,_0x461d48){var _0x2ffabd=_0x252499[_0x5b96('0xd')];var _0x18393d=_0x197c0c[_0x5b96('0xe')]({'plain':!![]});if(_0x18393d[_0x5b96('0xf')]['toLowerCase']()==='in'||_0x18393d['direction'][_0x5b96('0x10')]()===_0x5b96('0x11')&&!_0x18393d[_0x5b96('0x12')]&&!_[_0x5b96('0x13')](_0x18393d[_0x5b96('0x14')])){_0x2ffabd[_0x5b96('0x15')][_0x5b96('0x16')]({'where':{'id':_0x18393d['FaxInteractionId']}})[_0x5b96('0x17')](function(_0x24e1da){if(_0x24e1da){_0x24e1da[_0x5b96('0x18')]({'lastMsgAt':_0x18393d[_0x5b96('0x19')],'lastMsgDirection':_0x18393d[_0x5b96('0xf')][_0x5b96('0x10')]()});}})[_0x5b96('0x1a')](function(_0x52463a){console[_0x5b96('0x1b')](_0x52463a);});}_0x461d48();}},'charset':'utf8mb4','collate':_0x5b96('0x1c')});};
\ No newline at end of file
+var _0xd71c=['fax_messages','fti_fax_messages','body','models','get','direction','toLowerCase','secret','UserId','FaxInteraction','findOne','FaxInteractionId','then','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','define'];(function(_0x889ee7,_0xb996b0){var _0x4aa6a2=function(_0x16968b){while(--_0x16968b){_0x889ee7['push'](_0x889ee7['shift']());}};_0x4aa6a2(++_0xb996b0);}(_0xd71c,0x67));var _0xcd71=function(_0x1d4a39,_0x213f29){_0x1d4a39=_0x1d4a39-0x0;var _0x408a6d=_0xd71c[_0x1d4a39];return _0x408a6d;};'use strict';var _=require(_0xcd71('0x0'));var util=require(_0xcd71('0x1'));var logger=require(_0xcd71('0x2'))('api');var moment=require(_0xcd71('0x3'));var BPromise=require(_0xcd71('0x4'));var rp=require(_0xcd71('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcd71('0x6'));var config=require(_0xcd71('0x7'));var attributes=require('./faxMessage.attributes');module['exports']=function(_0x17e32a,_0x4a0b17){return _0x17e32a[_0xcd71('0x8')]('FaxMessage',attributes,{'tableName':_0xcd71('0x9'),'paranoid':![],'indexes':[{'name':_0xcd71('0xa'),'fields':[_0xcd71('0xb')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x59f6f7,_0x5a7acc,_0x4ccbb2){var _0x5eef68=_0x17e32a[_0xcd71('0xc')];var _0x44b399=_0x59f6f7[_0xcd71('0xd')]({'plain':!![]});if(_0x44b399[_0xcd71('0xe')]['toLowerCase']()==='in'||_0x44b399['direction'][_0xcd71('0xf')]()==='out'&&!_0x44b399[_0xcd71('0x10')]&&!_['isNil'](_0x44b399[_0xcd71('0x11')])){_0x5eef68[_0xcd71('0x12')][_0xcd71('0x13')]({'where':{'id':_0x44b399[_0xcd71('0x14')]}})[_0xcd71('0x15')](function(_0x57a6cc){if(_0x57a6cc){_0x57a6cc[_0xcd71('0x16')]({'lastMsgAt':_0x44b399[_0xcd71('0x17')],'lastMsgDirection':_0x44b399['direction'][_0xcd71('0xf')]()});}})[_0xcd71('0x18')](function(_0x2955f8){console[_0xcd71('0x19')](_0x2955f8);});}_0x4ccbb2();}},'charset':_0xcd71('0x1a'),'collate':_0xcd71('0x1b')});};
\ No newline at end of file
index 28103ef..df20389 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00bb=['redis','defaults','localhost','socket.io-emitter','then','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','FaxMessage,\x20%s,\x20%s','CreateFaxMessage','FaxMessage','create','body','options','raw','catch','update','attributes','UpdateFaxMessage','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x1f2931,_0x8fed1a){var _0x1f2050=function(_0x457bb3){while(--_0x457bb3){_0x1f2931['push'](_0x1f2931['shift']());}};_0x1f2050(++_0x8fed1a);}(_0x00bb,0x1d8));var _0xb00b=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0x00bb[_0x3ff085];return _0x2b68c3;};'use strict';var _=require(_0xb00b('0x0'));var util=require(_0xb00b('0x1'));var moment=require(_0xb00b('0x2'));var BPromise=require('bluebird');var rs=require(_0xb00b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb00b('0x4'))['db'];var utils=require(_0xb00b('0x5'));var logger=require('../../config/logger')(_0xb00b('0x6'));var config=require(_0xb00b('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0xb00b('0x8')]=_[_0xb00b('0x9')](config[_0xb00b('0x8')],{'host':_0xb00b('0xa'),'port':0x18eb});var socket=require(_0xb00b('0xb'))(new Redis(config[_0xb00b('0x8')]));require('./faxMessage.socket')['register'](socket);function respondWithRpcPromise(_0x5154d9,_0x1e9b7b,_0x5851d4){return new BPromise(function(_0x46a25c,_0x28d3cc){return client['request'](_0x5154d9,_0x5851d4)[_0xb00b('0xc')](function(_0x5a63ed){logger['info']('FaxMessage,\x20%s,\x20%s',_0x1e9b7b,_0xb00b('0xd'));logger[_0xb00b('0xe')](_0xb00b('0xf'),_0x1e9b7b,_0xb00b('0xd'),JSON[_0xb00b('0x10')](_0x5a63ed));if(_0x5a63ed[_0xb00b('0x11')]){if(_0x5a63ed['error'][_0xb00b('0x12')]===0x1f4){logger[_0xb00b('0x11')]('FaxMessage,\x20%s,\x20%s',_0x1e9b7b,_0x5a63ed[_0xb00b('0x11')][_0xb00b('0x13')]);return _0x28d3cc(_0x5a63ed['error']['message']);}logger[_0xb00b('0x11')]('FaxMessage,\x20%s,\x20%s',_0x1e9b7b,_0x5a63ed['error'][_0xb00b('0x13')]);return _0x46a25c(_0x5a63ed[_0xb00b('0x11')][_0xb00b('0x13')]);}else{logger[_0xb00b('0x14')]('FaxMessage,\x20%s,\x20%s',_0x1e9b7b,_0xb00b('0xd'));_0x46a25c(_0x5a63ed['result'][_0xb00b('0x13')]);}})['catch'](function(_0x25d7a0){logger['error'](_0xb00b('0x15'),_0x1e9b7b,_0x25d7a0);_0x28d3cc(_0x25d7a0);});});}exports[_0xb00b('0x16')]=function(_0x53ee68){var _0x55770c=this;return new Promise(function(_0x2b0da1,_0x4a334b){return db[_0xb00b('0x17')][_0xb00b('0x18')](_0x53ee68[_0xb00b('0x19')],{'raw':_0x53ee68[_0xb00b('0x1a')]?_0x53ee68['options'][_0xb00b('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x25a973){logger[_0xb00b('0x14')]('CreateFaxMessage',_0x53ee68);logger[_0xb00b('0xe')](_0xb00b('0x16'),_0x53ee68,JSON['stringify'](_0x25a973));_0x2b0da1(_0x25a973);})[_0xb00b('0x1c')](function(_0x1f04d3){logger['error'](_0xb00b('0x16'),_0x1f04d3[_0xb00b('0x13')],_0x53ee68);_0x4a334b(_0x55770c[_0xb00b('0x11')](0x1f4,_0x1f04d3[_0xb00b('0x13')]));});});};exports['UpdateFaxMessage']=function(_0x50be6c){var _0x3785e9=this;return new Promise(function(_0x490380,_0x550587){return db['FaxMessage'][_0xb00b('0x1d')](_0x50be6c[_0xb00b('0x19')],{'raw':_0x50be6c[_0xb00b('0x1a')]?_0x50be6c[_0xb00b('0x1a')][_0xb00b('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x50be6c[_0xb00b('0x1a')]?_0x50be6c[_0xb00b('0x1a')]['where']||null:null,'attributes':_0x50be6c[_0xb00b('0x1a')]?_0x50be6c['options'][_0xb00b('0x1e')]||null:null,'limit':_0x50be6c[_0xb00b('0x1a')]?_0x50be6c[_0xb00b('0x1a')]['limit']||null:null})[_0xb00b('0xc')](function(_0x280ed3){logger[_0xb00b('0x14')](_0xb00b('0x1f'),_0x50be6c);logger[_0xb00b('0xe')](_0xb00b('0x1f'),_0x50be6c,JSON[_0xb00b('0x10')](_0x280ed3));_0x490380(_0x280ed3);})[_0xb00b('0x1c')](function(_0x149c1a){logger['error'](_0xb00b('0x1f'),_0x149c1a[_0xb00b('0x13')],_0x50be6c);_0x550587(_0x3785e9['error'](0x1f4,_0x149c1a[_0xb00b('0x13')]));});});};
\ No newline at end of file
+var _0x9c44=['code','message','info','catch','FaxMessage','create','body','options','CreateFaxMessage','stringify','UpdateFaxMessage','update','raw','where','attributes','limit','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','redis','defaults','socket.io-emitter','./faxMessage.socket','register','request','then','FaxMessage,\x20%s,\x20%s','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','error'];(function(_0x599e60,_0x5b6519){var _0x468e19=function(_0xcdfd97){while(--_0xcdfd97){_0x599e60['push'](_0x599e60['shift']());}};_0x468e19(++_0x5b6519);}(_0x9c44,0x178));var _0x49c4=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0x9c44[_0x565c49];return _0x20ca34;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x49c4('0x0'));var BPromise=require(_0x49c4('0x1'));var rs=require(_0x49c4('0x2'));var fs=require('fs');var Redis=require(_0x49c4('0x3'));var db=require(_0x49c4('0x4'))['db'];var utils=require(_0x49c4('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x49c4('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x49c4('0x7')][_0x49c4('0x8')]({'port':0x232a});config[_0x49c4('0x9')]=_[_0x49c4('0xa')](config[_0x49c4('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x49c4('0xb'))(new Redis(config[_0x49c4('0x9')]));require(_0x49c4('0xc'))[_0x49c4('0xd')](socket);function respondWithRpcPromise(_0x4c7d3a,_0x5ab4a3,_0x451ea6){return new BPromise(function(_0x313e73,_0x58cad7){return client[_0x49c4('0xe')](_0x4c7d3a,_0x451ea6)[_0x49c4('0xf')](function(_0x4adb3c){logger['info'](_0x49c4('0x10'),_0x5ab4a3,_0x49c4('0x11'));logger['debug'](_0x49c4('0x12'),_0x5ab4a3,_0x49c4('0x11'),JSON['stringify'](_0x4adb3c));if(_0x4adb3c[_0x49c4('0x13')]){if(_0x4adb3c[_0x49c4('0x13')][_0x49c4('0x14')]===0x1f4){logger[_0x49c4('0x13')](_0x49c4('0x10'),_0x5ab4a3,_0x4adb3c[_0x49c4('0x13')][_0x49c4('0x15')]);return _0x58cad7(_0x4adb3c[_0x49c4('0x13')]['message']);}logger[_0x49c4('0x13')](_0x49c4('0x10'),_0x5ab4a3,_0x4adb3c[_0x49c4('0x13')][_0x49c4('0x15')]);return _0x313e73(_0x4adb3c[_0x49c4('0x13')]['message']);}else{logger[_0x49c4('0x16')](_0x49c4('0x10'),_0x5ab4a3,'request\x20sent');_0x313e73(_0x4adb3c['result'][_0x49c4('0x15')]);}})[_0x49c4('0x17')](function(_0x3addb2){logger['error'](_0x49c4('0x10'),_0x5ab4a3,_0x3addb2);_0x58cad7(_0x3addb2);});});}exports['CreateFaxMessage']=function(_0x2cbd50){var _0x1806c2=this;return new Promise(function(_0xe31fcc,_0x291526){return db[_0x49c4('0x18')][_0x49c4('0x19')](_0x2cbd50[_0x49c4('0x1a')],{'raw':_0x2cbd50[_0x49c4('0x1b')]?_0x2cbd50[_0x49c4('0x1b')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x57f502){logger[_0x49c4('0x16')]('CreateFaxMessage',_0x2cbd50);logger['debug'](_0x49c4('0x1c'),_0x2cbd50,JSON[_0x49c4('0x1d')](_0x57f502));_0xe31fcc(_0x57f502);})[_0x49c4('0x17')](function(_0xd335e4){logger['error']('CreateFaxMessage',_0xd335e4[_0x49c4('0x15')],_0x2cbd50);_0x291526(_0x1806c2[_0x49c4('0x13')](0x1f4,_0xd335e4['message']));});});};exports[_0x49c4('0x1e')]=function(_0x43e014){var _0x210159=this;return new Promise(function(_0xa7a826,_0x531d92){return db['FaxMessage'][_0x49c4('0x1f')](_0x43e014['body'],{'raw':_0x43e014[_0x49c4('0x1b')]?_0x43e014[_0x49c4('0x1b')][_0x49c4('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x43e014[_0x49c4('0x1b')]?_0x43e014['options'][_0x49c4('0x21')]||null:null,'attributes':_0x43e014[_0x49c4('0x1b')]?_0x43e014[_0x49c4('0x1b')][_0x49c4('0x22')]||null:null,'limit':_0x43e014[_0x49c4('0x1b')]?_0x43e014[_0x49c4('0x1b')][_0x49c4('0x23')]||null:null})[_0x49c4('0xf')](function(_0x17b50f){logger[_0x49c4('0x16')](_0x49c4('0x1e'),_0x43e014);logger['debug']('UpdateFaxMessage',_0x43e014,JSON['stringify'](_0x17b50f));_0xa7a826(_0x17b50f);})[_0x49c4('0x17')](function(_0x7ee704){logger[_0x49c4('0x13')](_0x49c4('0x1e'),_0x7ee704[_0x49c4('0x15')],_0x43e014);_0x531d92(_0x210159['error'](0x1f4,_0x7ee704[_0x49c4('0x15')]));});});};
\ No newline at end of file
index 6d1d601..9c53d2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9e3=['update','emit','register','length','faxMessage:','./faxMessage.events','save','remove'];(function(_0x2bbbcb,_0x374673){var _0x29a316=function(_0x582b46){while(--_0x582b46){_0x2bbbcb['push'](_0x2bbbcb['shift']());}};_0x29a316(++_0x374673);}(_0xc9e3,0x1dd));var _0x3c9e=function(_0x1e7be2,_0x198f20){_0x1e7be2=_0x1e7be2-0x0;var _0xe8cc5b=_0xc9e3[_0x1e7be2];return _0xe8cc5b;};'use strict';var FaxMessageEvents=require(_0x3c9e('0x0'));var events=[_0x3c9e('0x1'),_0x3c9e('0x2'),_0x3c9e('0x3')];function createListener(_0x675fa9,_0x516662){return function(_0x15baf1){_0x516662[_0x3c9e('0x4')](_0x675fa9,_0x15baf1);};}function removeListener(_0x5a961a,_0x3ec3f4){return function(){FaxMessageEvents['removeListener'](_0x5a961a,_0x3ec3f4);};}exports[_0x3c9e('0x5')]=function(_0xdcf41){for(var _0x317cd8=0x0,_0x5d7f65=events[_0x3c9e('0x6')];_0x317cd8<_0x5d7f65;_0x317cd8++){var _0x54a8d4=events[_0x317cd8];var _0x4293ff=createListener(_0x3c9e('0x7')+_0x54a8d4,_0xdcf41);FaxMessageEvents['on'](_0x54a8d4,_0x4293ff);}};
\ No newline at end of file
+var _0x20dd=['update','removeListener','register','faxMessage:','./faxMessage.events','save'];(function(_0x11155f,_0x57b687){var _0xd07e48=function(_0x592615){while(--_0x592615){_0x11155f['push'](_0x11155f['shift']());}};_0xd07e48(++_0x57b687);}(_0x20dd,0x17e));var _0xd20d=function(_0x19a7f1,_0x1b18d4){_0x19a7f1=_0x19a7f1-0x0;var _0x1493e0=_0x20dd[_0x19a7f1];return _0x1493e0;};'use strict';var FaxMessageEvents=require(_0xd20d('0x0'));var events=[_0xd20d('0x1'),'remove',_0xd20d('0x2')];function createListener(_0x3f4797,_0x19eda4){return function(_0x1ed62d){_0x19eda4['emit'](_0x3f4797,_0x1ed62d);};}function removeListener(_0x33c37b,_0x47d91b){return function(){FaxMessageEvents[_0xd20d('0x3')](_0x33c37b,_0x47d91b);};}exports[_0xd20d('0x4')]=function(_0x5a4dcb){for(var _0xfbc9c1=0x0,_0x1f8e6f=events['length'];_0xfbc9c1<_0x1f8e6f;_0xfbc9c1++){var _0x40ac88=events[_0xfbc9c1];var _0xa7050f=createListener(_0xd20d('0x5')+_0x40ac88,_0x5a4dcb);FaxMessageEvents['on'](_0x40ac88,_0xa7050f);}};
\ No newline at end of file
index 42cf416..8858dc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55e0=['../../components/auth/service','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','describe','/:id','/:id/download','download','post','fax','create','put','update','/:id/accept','accept','/:id/reject','reject','destroy','multer','util','path','connect-timeout','fs-extra'];(function(_0x5f9f4c,_0x2fecf3){var _0x3839c6=function(_0x214de7){while(--_0x214de7){_0x5f9f4c['push'](_0x5f9f4c['shift']());}};_0x3839c6(++_0x2fecf3);}(_0x55e0,0xdc));var _0x055e=function(_0x7cf8eb,_0x5a470e){_0x7cf8eb=_0x7cf8eb-0x0;var _0x24e417=_0x55e0[_0x7cf8eb];return _0x24e417;};'use strict';var multer=require(_0x055e('0x0'));var util=require(_0x055e('0x1'));var path=require(_0x055e('0x2'));var timeout=require(_0x055e('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x055e('0x4'));var auth=require(_0x055e('0x5'));var interaction=require(_0x055e('0x6'));var config=require(_0x055e('0x7'));var controller=require(_0x055e('0x8'));router[_0x055e('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x055e('0x9')]('/describe',auth[_0x055e('0xa')](),controller[_0x055e('0xb')]);router[_0x055e('0x9')](_0x055e('0xc'),auth[_0x055e('0xa')](),controller['show']);router[_0x055e('0x9')](_0x055e('0xd'),auth[_0x055e('0xa')](),controller[_0x055e('0xe')]);router[_0x055e('0xf')]('/',auth['isAuthenticated'](),interaction['tracked'](_0x055e('0x10'),'faxmessage:create'),controller[_0x055e('0x11')]);router[_0x055e('0x12')](_0x055e('0xc'),auth[_0x055e('0xa')](),controller[_0x055e('0x13')]);router[_0x055e('0x12')](_0x055e('0x14'),auth['isAuthenticated'](),controller[_0x055e('0x15')]);router[_0x055e('0x12')](_0x055e('0x16'),auth[_0x055e('0xa')](),controller[_0x055e('0x17')]);router['delete'](_0x055e('0xc'),auth[_0x055e('0xa')](),controller[_0x055e('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0xb469=['reject','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','describe','/:id','show','/:id/download','download','fax','faxmessage:create','put','update','/:id/accept','accept','/:id/reject'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb469,0x13b));var _0x9b46=function(_0x595acb,_0x105d70){_0x595acb=_0x595acb-0x0;var _0x510a74=_0xb469[_0x595acb];return _0x510a74;};'use strict';var multer=require(_0x9b46('0x0'));var util=require(_0x9b46('0x1'));var path=require(_0x9b46('0x2'));var timeout=require(_0x9b46('0x3'));var express=require(_0x9b46('0x4'));var router=express[_0x9b46('0x5')]();var fs_extra=require(_0x9b46('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x9b46('0x7'));var config=require(_0x9b46('0x8'));var controller=require('./faxMessage.controller');router[_0x9b46('0x9')]('/',auth[_0x9b46('0xa')](),controller['index']);router[_0x9b46('0x9')]('/describe',auth['isAuthenticated'](),controller[_0x9b46('0xb')]);router['get'](_0x9b46('0xc'),auth[_0x9b46('0xa')](),controller[_0x9b46('0xd')]);router['get'](_0x9b46('0xe'),auth['isAuthenticated'](),controller[_0x9b46('0xf')]);router['post']('/',auth[_0x9b46('0xa')](),interaction['tracked'](_0x9b46('0x10'),_0x9b46('0x11')),controller['create']);router[_0x9b46('0x12')](_0x9b46('0xc'),auth['isAuthenticated'](),controller[_0x9b46('0x13')]);router[_0x9b46('0x12')](_0x9b46('0x14'),auth[_0x9b46('0xa')](),controller[_0x9b46('0x15')]);router[_0x9b46('0x12')](_0x9b46('0x16'),auth[_0x9b46('0xa')](),controller[_0x9b46('0x17')]);router[_0x9b46('0x18')](_0x9b46('0xc'),auth[_0x9b46('0xa')](),controller[_0x9b46('0x19')]);module['exports']=router;
\ No newline at end of file
index 64d2bbc..2469ce1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5e5=['ENUM','rrmemory','beepall','roundrobin','sequelize','exports','STRING','name','INTEGER'];(function(_0x1b49bf,_0xcd4012){var _0x5b5395=function(_0x2b7650){while(--_0x2b7650){_0x1b49bf['push'](_0x1b49bf['shift']());}};_0x5b5395(++_0xcd4012);}(_0xc5e5,0x1e1));var _0x5c5e=function(_0x334b93,_0x42a8f0){_0x334b93=_0x334b93-0x0;var _0x5c725a=_0xc5e5[_0x334b93];return _0x5c725a;};'use strict';var Sequelize=require(_0x5c5e('0x0'));module[_0x5c5e('0x1')]={'name':{'type':Sequelize[_0x5c5e('0x2')],'unique':_0x5c5e('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x5c5e('0x4')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x5c5e('0x5')](_0x5c5e('0x6'),_0x5c5e('0x7'),_0x5c5e('0x8')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x5c5e('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9ab8=['INTEGER','rrmemory','beepall','sequelize','exports','STRING'];(function(_0x276bb9,_0x5cb763){var _0x593d01=function(_0x5a3499){while(--_0x5a3499){_0x276bb9['push'](_0x276bb9['shift']());}};_0x593d01(++_0x5cb763);}(_0x9ab8,0x81));var _0x89ab=function(_0x5e3e85,_0x13f62d){_0x5e3e85=_0x5e3e85-0x0;var _0xa3c83=_0x9ab8[_0x5e3e85];return _0xa3c83;};'use strict';var Sequelize=require(_0x89ab('0x0'));module[_0x89ab('0x1')]={'name':{'type':Sequelize[_0x89ab('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x89ab('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x89ab('0x4'),_0x89ab('0x5'),'roundrobin'),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x89ab('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 84aac97..e24d110 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6c6=['zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','./faxQueue.socket','register','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','get','FaxQueues','UserProfileResource','sendStatus','error','stack','name','send','index','map','FaxQueue','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','describe','findOne','UserFaxQueue','FaxQueueId','User','findAndCountAll','UserId','agent','faxPause','updatedAt','createdAt','format','SIP','pick','getTeams','addTeams','ids','Agents','online','sequelize','transaction','each','findOrCreate','Team','field','tq.TeamId','from','team_has_fax_queues','user_has_teams','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','every','TeamId','includes','all','union','value','isEmpty','removeAgents','forEach','emit','userFaxQueue:remove','addAgents','spread','userFaxQueue:save','isArray','getAgents','rimraf'];(function(_0x1699e6,_0x38cb2d){var _0x4d8b9f=function(_0x40ddc8){while(--_0x40ddc8){_0x1699e6['push'](_0x1699e6['shift']());}};_0x4d8b9f(++_0x38cb2d);}(_0xd6c6,0x1a3));var _0x6d6c=function(_0x225acc,_0x21b6fa){_0x225acc=_0x225acc-0x0;var _0x25565d=_0xd6c6[_0x225acc];return _0x25565d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6d6c('0x0'));var zipdir=require(_0x6d6c('0x1'));var jsonpatch=require(_0x6d6c('0x2'));var rp=require(_0x6d6c('0x3'));var moment=require('moment');var BPromise=require(_0x6d6c('0x4'));var Mustache=require(_0x6d6c('0x5'));var util=require(_0x6d6c('0x6'));var path=require(_0x6d6c('0x7'));var sox=require(_0x6d6c('0x8'));var csv=require(_0x6d6c('0x9'));var ejs=require(_0x6d6c('0xa'));var fs=require('fs');var fs_extra=require(_0x6d6c('0xb'));var _=require('lodash');var squel=require(_0x6d6c('0xc'));var crypto=require(_0x6d6c('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x6d6c('0x9'));var querystring=require(_0x6d6c('0xe'));var Papa=require(_0x6d6c('0xf'));var Redis=require(_0x6d6c('0x10'));var authService=require(_0x6d6c('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x6d6c('0x12'));var hardwareService=require(_0x6d6c('0x13'));var logger=require(_0x6d6c('0x14'))(_0x6d6c('0x15'));var utils=require(_0x6d6c('0x16'));var config=require(_0x6d6c('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x6d6c('0x18'))['db'];config['redis']=_[_0x6d6c('0x19')](config[_0x6d6c('0x1a')],{'host':_0x6d6c('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6d6c('0x1a')]));require(_0x6d6c('0x1c'))[_0x6d6c('0x1d')](socket);function respondWithStatusCode(_0x253c82,_0x2feebe){_0x2feebe=_0x2feebe||0xcc;return function(_0x3e2704){if(_0x3e2704){return _0x253c82['sendStatus'](_0x2feebe);}return _0x253c82[_0x6d6c('0x1e')](_0x2feebe)[_0x6d6c('0x1f')]();};}function respondWithResult(_0x273945,_0x1216f5){_0x1216f5=_0x1216f5||0xc8;return function(_0x33ef32){if(_0x33ef32){return _0x273945['status'](_0x1216f5)['json'](_0x33ef32);}};}function respondWithFilteredResult(_0xc42cc7,_0x696b83){return function(_0x44e854){if(_0x44e854){var _0x4b1a3a=typeof _0x696b83[_0x6d6c('0x20')]===_0x6d6c('0x21')&&typeof _0x696b83[_0x6d6c('0x22')]===_0x6d6c('0x21');var _0x3cb13c=_0x44e854['count'];var _0x337788=_0x4b1a3a?0x0:_0x696b83[_0x6d6c('0x20')];var _0x21a0ed=_0x4b1a3a?_0x44e854[_0x6d6c('0x23')]:_0x696b83['offset']+_0x696b83['limit'];var _0x1dc5d5;if(_0x21a0ed>=_0x3cb13c){_0x21a0ed=_0x3cb13c;_0x1dc5d5=0xc8;}else{_0x1dc5d5=0xce;}_0xc42cc7[_0x6d6c('0x1e')](_0x1dc5d5);return _0xc42cc7[_0x6d6c('0x24')](_0x6d6c('0x25'),_0x337788+'-'+_0x21a0ed+'/'+_0x3cb13c)[_0x6d6c('0x26')](_0x44e854);}return null;};}function patchUpdates(_0x14b07d){return function(_0x1b7e48){try{jsonpatch[_0x6d6c('0x27')](_0x1b7e48,_0x14b07d,!![]);}catch(_0x29b148){return BPromise[_0x6d6c('0x28')](_0x29b148);}return _0x1b7e48['save']();};}function saveUpdates(_0x5a78ff,_0x3c4956){return function(_0x250170){if(_0x250170){return _0x250170[_0x6d6c('0x29')](_0x5a78ff)[_0x6d6c('0x2a')](function(_0x5cb4a8){return _0x5cb4a8;});}return null;};}function removeEntity(_0x5cbe0f,_0xef459e){return function(_0x2d3792){if(_0x2d3792){return _0x2d3792[_0x6d6c('0x2b')]()[_0x6d6c('0x2a')](function(){var _0x296804=_0x2d3792[_0x6d6c('0x2c')]({'plain':!![]});var _0x28e5f6=_0x6d6c('0x2d');return db[_0x6d6c('0x2e')][_0x6d6c('0x2b')]({'where':{'type':_0x28e5f6,'resourceId':_0x296804['id']}})['then'](function(){return _0x2d3792;});})[_0x6d6c('0x2a')](function(){_0x5cbe0f['status'](0xcc)[_0x6d6c('0x1f')]();});}};}function handleEntityNotFound(_0x330698,_0x44a163){return function(_0x3c758b){if(!_0x3c758b){_0x330698[_0x6d6c('0x2f')](0x194);}return _0x3c758b;};}function handleError(_0x507d49,_0x3a9e02){_0x3a9e02=_0x3a9e02||0x1f4;return function(_0x33f1f1){logger[_0x6d6c('0x30')](_0x33f1f1[_0x6d6c('0x31')]);if(_0x33f1f1[_0x6d6c('0x32')]){delete _0x33f1f1[_0x6d6c('0x32')];}_0x507d49[_0x6d6c('0x1e')](_0x3a9e02)[_0x6d6c('0x33')](_0x33f1f1);};}exports[_0x6d6c('0x34')]=function(_0x15886d,_0x5ba85a){var _0x243a37={},_0x4f6023={},_0x2ab601={'count':0x0,'rows':[]};var _0x16b4c5=_[_0x6d6c('0x35')](db[_0x6d6c('0x36')][_0x6d6c('0x37')],function(_0x31716b){return{'name':_0x31716b[_0x6d6c('0x38')],'type':_0x31716b[_0x6d6c('0x39')][_0x6d6c('0x3a')]};});_0x4f6023[_0x6d6c('0x3b')]=_[_0x6d6c('0x35')](_0x16b4c5,_0x6d6c('0x32'));_0x4f6023[_0x6d6c('0x3c')]=_[_0x6d6c('0x3d')](_0x15886d[_0x6d6c('0x3c')]);_0x4f6023[_0x6d6c('0x3e')]=_[_0x6d6c('0x3f')](_0x4f6023[_0x6d6c('0x3b')],_0x4f6023[_0x6d6c('0x3c')]);_0x243a37[_0x6d6c('0x40')]=_['intersection'](_0x4f6023[_0x6d6c('0x3b')],qs[_0x6d6c('0x41')](_0x15886d[_0x6d6c('0x3c')]['fields']));_0x243a37[_0x6d6c('0x40')]=_0x243a37[_0x6d6c('0x40')][_0x6d6c('0x42')]?_0x243a37['attributes']:_0x4f6023[_0x6d6c('0x3b')];if(!_0x15886d['query']['hasOwnProperty'](_0x6d6c('0x43'))){_0x243a37['limit']=qs[_0x6d6c('0x22')](_0x15886d[_0x6d6c('0x3c')]['limit']);_0x243a37['offset']=qs[_0x6d6c('0x20')](_0x15886d[_0x6d6c('0x3c')][_0x6d6c('0x20')]);}_0x243a37[_0x6d6c('0x44')]=qs['sort'](_0x15886d[_0x6d6c('0x3c')][_0x6d6c('0x45')]);_0x243a37[_0x6d6c('0x46')]=qs[_0x6d6c('0x3e')](_['pick'](_0x15886d[_0x6d6c('0x3c')],_0x4f6023['filters']),_0x16b4c5);if(_0x15886d[_0x6d6c('0x3c')][_0x6d6c('0x47')]){_0x243a37[_0x6d6c('0x46')]=_[_0x6d6c('0x48')](_0x243a37[_0x6d6c('0x46')],{'$or':_[_0x6d6c('0x35')](_0x16b4c5,function(_0x1cc0cc){if(_0x1cc0cc[_0x6d6c('0x39')]!==_0x6d6c('0x49')){var _0x1a5297={};_0x1a5297[_0x1cc0cc[_0x6d6c('0x32')]]={'$like':'%'+_0x15886d[_0x6d6c('0x3c')]['filter']+'%'};return _0x1a5297;}})});}_0x243a37=_[_0x6d6c('0x48')]({},_0x243a37,_0x15886d[_0x6d6c('0x4a')]);var _0x55fb54={'where':_0x243a37[_0x6d6c('0x46')]};return db[_0x6d6c('0x36')][_0x6d6c('0x23')](_0x55fb54)[_0x6d6c('0x2a')](function(_0x2e23cb){_0x2ab601[_0x6d6c('0x23')]=_0x2e23cb;if(_0x15886d[_0x6d6c('0x3c')][_0x6d6c('0x4b')]){_0x243a37['include']=[{'all':!![]}];}return db[_0x6d6c('0x36')][_0x6d6c('0x4c')](_0x243a37);})[_0x6d6c('0x2a')](function(_0x1f5ae1){_0x2ab601[_0x6d6c('0x4d')]=_0x1f5ae1;return _0x2ab601;})[_0x6d6c('0x2a')](respondWithFilteredResult(_0x5ba85a,_0x243a37))[_0x6d6c('0x4e')](handleError(_0x5ba85a,null));};exports[_0x6d6c('0x4f')]=function(_0x564d18,_0x4a7718){var _0x1989d2={'raw':!![],'where':{'id':_0x564d18[_0x6d6c('0x50')]['id']}},_0xb63fcb={};_0xb63fcb[_0x6d6c('0x3b')]=_[_0x6d6c('0x3d')](db['FaxQueue']['rawAttributes']);_0xb63fcb[_0x6d6c('0x3c')]=_[_0x6d6c('0x3d')](_0x564d18[_0x6d6c('0x3c')]);_0xb63fcb[_0x6d6c('0x3e')]=_[_0x6d6c('0x3f')](_0xb63fcb[_0x6d6c('0x3b')],_0xb63fcb[_0x6d6c('0x3c')]);_0x1989d2[_0x6d6c('0x40')]=_[_0x6d6c('0x3f')](_0xb63fcb[_0x6d6c('0x3b')],qs['fields'](_0x564d18[_0x6d6c('0x3c')][_0x6d6c('0x41')]));_0x1989d2['attributes']=_0x1989d2['attributes'][_0x6d6c('0x42')]?_0x1989d2[_0x6d6c('0x40')]:_0xb63fcb['model'];if(_0x564d18['query'][_0x6d6c('0x4b')]){_0x1989d2[_0x6d6c('0x51')]=[{'all':!![]}];}_0x1989d2=_[_0x6d6c('0x48')]({},_0x1989d2,_0x564d18[_0x6d6c('0x4a')]);return db[_0x6d6c('0x36')]['find'](_0x1989d2)['then'](handleEntityNotFound(_0x4a7718,null))[_0x6d6c('0x2a')](respondWithResult(_0x4a7718,null))['catch'](handleError(_0x4a7718,null));};exports[_0x6d6c('0x52')]=function(_0x557ac4,_0x295196){return db[_0x6d6c('0x36')]['create'](_0x557ac4[_0x6d6c('0x53')],{})[_0x6d6c('0x2a')](function(_0x45d7f8){var _0x285a5f=_0x557ac4[_0x6d6c('0x54')][_0x6d6c('0x2c')]({'plain':!![]});if(!_0x285a5f)throw new Error(_0x6d6c('0x55'));if(_0x285a5f['role']==='user'){var _0x2964f6=_0x45d7f8[_0x6d6c('0x2c')]({'plain':!![]});var _0x552e67='FaxQueues';return db['UserProfileSection']['find']({'where':{'name':_0x552e67,'userProfileId':_0x285a5f[_0x6d6c('0x56')]},'raw':!![]})[_0x6d6c('0x2a')](function(_0x2046b2){if(_0x2046b2&&_0x2046b2['autoAssociation']===0x0){return db['UserProfileResource'][_0x6d6c('0x52')]({'name':_0x2964f6[_0x6d6c('0x32')],'resourceId':_0x2964f6['id'],'type':_0x2046b2['name'],'sectionId':_0x2046b2['id']},{})[_0x6d6c('0x2a')](function(){return _0x45d7f8;});}else{return _0x45d7f8;}})[_0x6d6c('0x4e')](function(_0x251720){logger['error'](_0x6d6c('0x57'),_0x251720);throw _0x251720;});}return _0x45d7f8;})['then'](respondWithResult(_0x295196,0xc9))[_0x6d6c('0x4e')](handleError(_0x295196,null));};exports[_0x6d6c('0x29')]=function(_0x18dd02,_0x2f8f11){if(_0x18dd02[_0x6d6c('0x53')]['id']){delete _0x18dd02[_0x6d6c('0x53')]['id'];}return db['FaxQueue'][_0x6d6c('0x58')]({'where':{'id':_0x18dd02[_0x6d6c('0x50')]['id']}})['then'](handleEntityNotFound(_0x2f8f11,null))[_0x6d6c('0x2a')](saveUpdates(_0x18dd02['body'],null))['then'](respondWithResult(_0x2f8f11,null))[_0x6d6c('0x4e')](handleError(_0x2f8f11,null));};exports['destroy']=function(_0x188db8,_0x1486da){return db['FaxQueue'][_0x6d6c('0x58')]({'where':{'id':_0x188db8[_0x6d6c('0x50')]['id']}})[_0x6d6c('0x2a')](handleEntityNotFound(_0x1486da,null))[_0x6d6c('0x2a')](removeEntity(_0x1486da,null))['catch'](handleError(_0x1486da,null));};exports[_0x6d6c('0x59')]=function(_0x4582b5,_0x1831a0){return db[_0x6d6c('0x36')][_0x6d6c('0x59')]()[_0x6d6c('0x2a')](respondWithResult(_0x1831a0,null))[_0x6d6c('0x4e')](handleError(_0x1831a0,null));};exports['getMembers']=function(_0x19efa3,_0x1f6939,_0x1032a4){var _0x1cb9b2={'raw':!![],'where':{}},_0x468a2b={},_0x490dc9;return db['FaxQueue'][_0x6d6c('0x5a')]({'where':{'id':_0x19efa3[_0x6d6c('0x50')]['id']}})[_0x6d6c('0x2a')](handleEntityNotFound(_0x1f6939,null))[_0x6d6c('0x2a')](function(_0x496d19){if(_0x496d19){_0x490dc9=_0x496d19[_0x6d6c('0x2c')]({'plain':!![]});_0x468a2b[_0x6d6c('0x3b')]=_[_0x6d6c('0x3d')](db[_0x6d6c('0x5b')][_0x6d6c('0x37')]);_0x468a2b['query']=_[_0x6d6c('0x3d')](_0x19efa3[_0x6d6c('0x3c')]);_0x468a2b[_0x6d6c('0x3e')]=_[_0x6d6c('0x3f')](_0x468a2b[_0x6d6c('0x3b')],_0x468a2b[_0x6d6c('0x3c')]);_0x1cb9b2[_0x6d6c('0x40')]=_[_0x6d6c('0x3f')](_0x468a2b[_0x6d6c('0x3b')],qs[_0x6d6c('0x41')](_0x19efa3['query']['fields']));_0x1cb9b2['attributes']=_0x1cb9b2[_0x6d6c('0x40')]['length']?_0x1cb9b2[_0x6d6c('0x40')]:_0x468a2b[_0x6d6c('0x3b')];if(!_0x19efa3[_0x6d6c('0x3c')]['hasOwnProperty'](_0x6d6c('0x43'))){_0x1cb9b2[_0x6d6c('0x22')]=qs[_0x6d6c('0x22')](_0x19efa3['query'][_0x6d6c('0x22')]);_0x1cb9b2[_0x6d6c('0x20')]=qs[_0x6d6c('0x20')](_0x19efa3['query'][_0x6d6c('0x20')]);}_0x1cb9b2[_0x6d6c('0x44')]=qs[_0x6d6c('0x45')](_0x19efa3[_0x6d6c('0x3c')]['sort']);_0x1cb9b2[_0x6d6c('0x46')]=qs[_0x6d6c('0x3e')](_['pick'](_0x19efa3[_0x6d6c('0x3c')],_0x468a2b['filters']));_0x1cb9b2[_0x6d6c('0x46')][_0x6d6c('0x5c')]=_0x496d19['id'];if(_0x19efa3[_0x6d6c('0x3c')]['filter']){_0x1cb9b2[_0x6d6c('0x46')]=_[_0x6d6c('0x48')](_0x1cb9b2[_0x6d6c('0x46')],{'$or':_[_0x6d6c('0x35')](_0x1cb9b2[_0x6d6c('0x40')],function(_0x36711e){var _0x1405dc={};_0x1405dc[_0x36711e]={'$like':'%'+_0x19efa3[_0x6d6c('0x3c')]['filter']+'%'};return _0x1405dc;})});}_0x1cb9b2=_[_0x6d6c('0x48')]({},_0x1cb9b2,_0x19efa3[_0x6d6c('0x4a')]);return db[_0x6d6c('0x5b')]['findAll'](_0x1cb9b2);}})[_0x6d6c('0x2a')](function(_0x4f6518){if(_0x4f6518){return db[_0x6d6c('0x5d')][_0x6d6c('0x5e')]({'where':{'id':_['map'](_0x4f6518,_0x6d6c('0x5f')),'role':_0x6d6c('0x60')},'attributes':['id','name',_0x6d6c('0x61'),_0x6d6c('0x62'),_0x6d6c('0x63')]});}})[_0x6d6c('0x2a')](function(_0x14fc39){if(_0x14fc39){return{'count':_0x14fc39[_0x6d6c('0x23')],'rows':_[_0x6d6c('0x35')](_0x14fc39[_0x6d6c('0x4d')],function(_0x54c397){return{'membername':_0x54c397[_0x6d6c('0x32')],'UserId':_0x54c397['id'],'queue_name':_0x490dc9['name'],'FaxQueueId':_0x490dc9['id'],'interface':util[_0x6d6c('0x64')]('%s/%s',_0x6d6c('0x65'),_0x54c397[_0x6d6c('0x32')]),'penalty':0x0,'paused':_0x54c397[_0x6d6c('0x61')],'createdAt':_0x54c397[_0x6d6c('0x63')],'updatedAt':_0x54c397[_0x6d6c('0x62')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x6d6c('0x2a')](respondWithFilteredResult(_0x1f6939,_0x1cb9b2))[_0x6d6c('0x4e')](handleError(_0x1f6939,null));};exports['getTeams']=function(_0x3f6ff0,_0x280b13,_0x386417){var _0x388e90={};var _0x63f147={};var _0x547b57;var _0x3752c3;return db['FaxQueue'][_0x6d6c('0x5a')]({'where':{'id':_0x3f6ff0[_0x6d6c('0x50')]['id']}})[_0x6d6c('0x2a')](handleEntityNotFound(_0x280b13,null))[_0x6d6c('0x2a')](function(_0x38c582){if(_0x38c582){_0x547b57=_0x38c582;_0x63f147['model']=_[_0x6d6c('0x3d')](db['Team']['rawAttributes']);_0x63f147[_0x6d6c('0x3c')]=_['keys'](_0x3f6ff0[_0x6d6c('0x3c')]);_0x63f147[_0x6d6c('0x3e')]=_[_0x6d6c('0x3f')](_0x63f147[_0x6d6c('0x3b')],_0x63f147[_0x6d6c('0x3c')]);_0x388e90['attributes']=_[_0x6d6c('0x3f')](_0x63f147[_0x6d6c('0x3b')],qs[_0x6d6c('0x41')](_0x3f6ff0[_0x6d6c('0x3c')]['fields']));_0x388e90['attributes']=_0x388e90[_0x6d6c('0x40')][_0x6d6c('0x42')]?_0x388e90[_0x6d6c('0x40')]:_0x63f147['model'];_0x388e90['order']=qs['sort'](_0x3f6ff0[_0x6d6c('0x3c')][_0x6d6c('0x45')]);_0x388e90[_0x6d6c('0x46')]=qs[_0x6d6c('0x3e')](_[_0x6d6c('0x66')](_0x3f6ff0[_0x6d6c('0x3c')],_0x63f147[_0x6d6c('0x3e')]));if(_0x3f6ff0['query']['filter']){_0x388e90[_0x6d6c('0x46')]=_['merge'](_0x388e90['where'],{'$or':_[_0x6d6c('0x35')](_0x388e90[_0x6d6c('0x40')],function(_0x2f47e0){var _0xadd439={};_0xadd439[_0x2f47e0]={'$like':'%'+_0x3f6ff0[_0x6d6c('0x3c')][_0x6d6c('0x47')]+'%'};return _0xadd439;})});}_0x388e90=_[_0x6d6c('0x48')]({},_0x388e90,_0x3f6ff0['options']);return _0x547b57['getTeams'](_0x388e90);}})[_0x6d6c('0x2a')](function(_0x44bfb5){if(_0x44bfb5){_0x3752c3=_0x44bfb5[_0x6d6c('0x42')];if(!_0x3f6ff0[_0x6d6c('0x3c')]['hasOwnProperty'](_0x6d6c('0x43'))){_0x388e90[_0x6d6c('0x22')]=qs['limit'](_0x3f6ff0['query']['limit']);_0x388e90['offset']=qs['offset'](_0x3f6ff0['query'][_0x6d6c('0x20')]);}return _0x547b57[_0x6d6c('0x67')](_0x388e90);}})['then'](function(_0x39482c){if(_0x39482c){return _0x39482c?{'count':_0x3752c3,'rows':_0x39482c}:null;}})[_0x6d6c('0x2a')](respondWithResult(_0x280b13,null))[_0x6d6c('0x4e')](handleError(_0x280b13,null));};exports[_0x6d6c('0x68')]=function(_0x2c263c,_0x246e56,_0xbb0e53){var _0x368ca1=_0x2c263c[_0x6d6c('0x53')][_0x6d6c('0x69')];return db['Team']['findAll']({'where':{'id':_0x368ca1},'attributes':['id'],'include':[{'model':db[_0x6d6c('0x5d')],'as':_0x6d6c('0x6a'),'attributes':['id',_0x6d6c('0x32'),_0x6d6c('0x6b'),'voicePause','interface'],'raw':!![]}]})['then'](function(_0x434c9f){if(_0x434c9f){var _0x3d85ca=_['flatMap'](_0x434c9f,function(_0x13f905){var _0x2d0001=_0x13f905['get']({'plain':!![]});return _0x2d0001[_0x6d6c('0x6a')];});return db['FaxQueue'][_0x6d6c('0x58')]({'where':{'id':_0x2c263c['params']['id']}})[_0x6d6c('0x2a')](function(_0x3eea40){return db[_0x6d6c('0x6c')][_0x6d6c('0x6d')](function(_0x3e8971){return _0x3eea40['addTeams'](_0x368ca1,{'transaction':_0x3e8971})[_0x6d6c('0x2a')](function(){return BPromise[_0x6d6c('0x6e')](_0x3d85ca,function(_0x356807){return db[_0x6d6c('0x5b')][_0x6d6c('0x6f')]({'where':{'UserId':_0x356807['id'],'FaxQueueId':_0x2c263c['params']['id']},'transaction':_0x3e8971});});})[_0x6d6c('0x2a')](function(){_0x3d85ca['forEach'](function(_0x1b8949){socket['emit']('userFaxQueue:save',{'UserId':_0x1b8949['id'],'FaxQueueId':_0x3eea40['id']});});});});});}})[_0x6d6c('0x2a')](respondWithStatusCode(_0x246e56,null))[_0x6d6c('0x4e')](handleError(_0x246e56,null));};exports['removeTeams']=function(_0x1bd22c,_0x2d19f1,_0x1aa45b){return db[_0x6d6c('0x70')][_0x6d6c('0x4c')]({'where':{'id':_0x1bd22c[_0x6d6c('0x3c')][_0x6d6c('0x69')]},'attributes':['id'],'include':[{'model':db[_0x6d6c('0x5d')],'as':_0x6d6c('0x6a'),'attributes':['id'],'raw':!![]}]})[_0x6d6c('0x2a')](handleEntityNotFound(_0x2d19f1,null))[_0x6d6c('0x2a')](function(_0x52bf23){var _0xeed8da=_[_0x6d6c('0x35')](_0x52bf23,'id');var _0x4b8c16=[];var _0x581b8b=[];var _0x343dc0=squel['select']();_0x343dc0[_0x6d6c('0x71')](_0x6d6c('0x72'))[_0x6d6c('0x73')](_0x6d6c('0x74'),'tq')['join'](_0x6d6c('0x75'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x6d6c('0x46')](_0x6d6c('0x76'),_0x1bd22c['params']['id']);for(var _0x4112e3=0x0;_0x4112e3<_0x52bf23['length'];_0x4112e3+=0x1){let _0x3e30c2=_0x52bf23[_0x4112e3];for(var _0x2e199d=0x0;_0x2e199d<_0x3e30c2[_0x6d6c('0x6a')][_0x6d6c('0x42')];_0x2e199d+=0x1){let _0xc567de=_0x3e30c2[_0x6d6c('0x6a')][_0x2e199d];var _0x5f3f17=_0x343dc0[_0x6d6c('0x77')]();_0x5f3f17[_0x6d6c('0x46')](_0x6d6c('0x78'),_0xc567de['id']);_0x581b8b[_0x6d6c('0x79')](db[_0x6d6c('0x6c')][_0x6d6c('0x3c')](_0x5f3f17[_0x6d6c('0x7a')](),{'type':db['sequelize'][_0x6d6c('0x7b')]['SELECT']})[_0x6d6c('0x2a')](function(_0x4719be){if(_0x4719be[_0x6d6c('0x42')]===0x1){return _0xc567de['id'];}else{var _0x1d148c=_[_0x6d6c('0x7c')](_['map'](_0x4719be,_0x6d6c('0x7d')),function(_0x252c01){return _[_0x6d6c('0x7e')](_0xeed8da,_0x252c01);});if(_0x1d148c){return _0xc567de['id'];}}}));}}return BPromise[_0x6d6c('0x7f')](_0x581b8b)[_0x6d6c('0x2a')](function(_0x4f082c){_0x4b8c16=_(_0x4b8c16)[_0x6d6c('0x80')](_0x4f082c)['compact']()[_0x6d6c('0x81')]();return db[_0x6d6c('0x36')][_0x6d6c('0x58')]({'where':{'id':_0x1bd22c[_0x6d6c('0x50')]['id']}})[_0x6d6c('0x2a')](function(_0x1f67a4){return db[_0x6d6c('0x6c')]['transaction'](function(_0x411e31){return _0x1f67a4['removeTeams'](_0x1bd22c[_0x6d6c('0x3c')][_0x6d6c('0x69')],{'transaction':_0x411e31})['then'](function(){if(!_[_0x6d6c('0x82')](_0x4b8c16)){return _0x1f67a4[_0x6d6c('0x83')](_0x4b8c16,{'transaction':_0x411e31});}})['then'](function(){_0x4b8c16[_0x6d6c('0x84')](function(_0x566fb2){socket[_0x6d6c('0x85')](_0x6d6c('0x86'),{'UserId':_0x566fb2,'FaxQueueId':_0x1f67a4['id']});});});});});});})['then'](respondWithStatusCode(_0x2d19f1,null))[_0x6d6c('0x4e')](handleError(_0x2d19f1,null));};exports[_0x6d6c('0x87')]=function(_0x4a45e8,_0x5d8dca,_0x15a1d4){return db['FaxQueue'][_0x6d6c('0x58')]({'where':{'id':_0x4a45e8[_0x6d6c('0x50')]['id']}})[_0x6d6c('0x2a')](handleEntityNotFound(_0x5d8dca,null))[_0x6d6c('0x2a')](function(_0x136305){if(_0x136305){return _0x136305[_0x6d6c('0x87')](_0x4a45e8['body'][_0x6d6c('0x69')],_['omit'](_0x4a45e8[_0x6d6c('0x53')],[_0x6d6c('0x69'),'id'])||{})[_0x6d6c('0x88')](function(_0x4067ae){for(var _0x49ea18=0x0;_0x49ea18<_0x4a45e8[_0x6d6c('0x53')]['ids'][_0x6d6c('0x42')];_0x49ea18+=0x1){socket['emit'](_0x6d6c('0x89'),{'UserId':Number(_0x4a45e8[_0x6d6c('0x53')][_0x6d6c('0x69')][_0x49ea18]),'FaxQueueId':Number(_0x4a45e8[_0x6d6c('0x50')]['id'])});}return _0x4067ae;});}})[_0x6d6c('0x2a')](respondWithResult(_0x5d8dca,null))[_0x6d6c('0x4e')](handleError(_0x5d8dca,null));};exports['removeAgents']=function(_0x3c00c0,_0x2539fc,_0x365912){return db['FaxQueue'][_0x6d6c('0x58')]({'where':{'id':_0x3c00c0[_0x6d6c('0x50')]['id']}})['then'](handleEntityNotFound(_0x2539fc,null))['then'](function(_0x5d68da){if(_0x5d68da){return _0x5d68da['removeAgents'](_0x3c00c0[_0x6d6c('0x3c')]['ids'])['then'](function(){if(_[_0x6d6c('0x8a')](_0x3c00c0[_0x6d6c('0x3c')][_0x6d6c('0x69')])){for(var _0x120b3d=0x0;_0x120b3d<_0x3c00c0['query']['ids'][_0x6d6c('0x42')];_0x120b3d+=0x1){socket[_0x6d6c('0x85')]('userFaxQueue:remove',{'UserId':Number(_0x3c00c0[_0x6d6c('0x3c')][_0x6d6c('0x69')][_0x120b3d]),'FaxQueueId':Number(_0x3c00c0['params']['id'])});}}else{socket['emit'](_0x6d6c('0x86'),{'UserId':Number(_0x3c00c0[_0x6d6c('0x3c')][_0x6d6c('0x69')]),'FaxQueueId':Number(_0x3c00c0[_0x6d6c('0x50')]['id'])});}});}})['then'](respondWithStatusCode(_0x2539fc,null))['catch'](handleError(_0x2539fc,null));};exports[_0x6d6c('0x8b')]=function(_0x6e1655,_0x5d70cd,_0x4425e6){var _0x54a9a7={};var _0x55d0ae={};var _0x1c3a37;var _0x35954b;return db[_0x6d6c('0x36')][_0x6d6c('0x5a')]({'where':{'id':_0x6e1655['params']['id']}})[_0x6d6c('0x2a')](handleEntityNotFound(_0x5d70cd,null))['then'](function(_0x16cbb7){if(_0x16cbb7){_0x1c3a37=_0x16cbb7;_0x55d0ae[_0x6d6c('0x3b')]=_[_0x6d6c('0x3d')](db[_0x6d6c('0x5d')][_0x6d6c('0x37')]);_0x55d0ae[_0x6d6c('0x3c')]=_[_0x6d6c('0x3d')](_0x6e1655[_0x6d6c('0x3c')]);_0x55d0ae[_0x6d6c('0x3e')]=_[_0x6d6c('0x3f')](_0x55d0ae['model'],_0x55d0ae[_0x6d6c('0x3c')]);_0x54a9a7['attributes']=_[_0x6d6c('0x3f')](_0x55d0ae[_0x6d6c('0x3b')],qs[_0x6d6c('0x41')](_0x6e1655[_0x6d6c('0x3c')]['fields']));_0x54a9a7[_0x6d6c('0x40')]=_0x54a9a7['attributes']['length']?_0x54a9a7['attributes']:_0x55d0ae[_0x6d6c('0x3b')];_0x54a9a7[_0x6d6c('0x44')]=qs[_0x6d6c('0x45')](_0x6e1655['query'][_0x6d6c('0x45')]);_0x54a9a7[_0x6d6c('0x46')]=qs['filters'](_[_0x6d6c('0x66')](_0x6e1655[_0x6d6c('0x3c')],_0x55d0ae[_0x6d6c('0x3e')]));if(_0x6e1655[_0x6d6c('0x3c')][_0x6d6c('0x47')]){_0x54a9a7[_0x6d6c('0x46')]=_[_0x6d6c('0x48')](_0x54a9a7[_0x6d6c('0x46')],{'$or':_[_0x6d6c('0x35')](_0x54a9a7[_0x6d6c('0x40')],function(_0x42222c){var _0x144bb3={};_0x144bb3[_0x42222c]={'$like':'%'+_0x6e1655[_0x6d6c('0x3c')]['filter']+'%'};return _0x144bb3;})});}_0x54a9a7=_[_0x6d6c('0x48')]({},_0x54a9a7,_0x6e1655[_0x6d6c('0x4a')]);return _0x1c3a37[_0x6d6c('0x8b')](_0x54a9a7);}})['then'](function(_0x583532){if(_0x583532){_0x35954b=_0x583532['length'];if(!_0x6e1655['query']['hasOwnProperty'](_0x6d6c('0x43'))){_0x54a9a7[_0x6d6c('0x22')]=qs[_0x6d6c('0x22')](_0x6e1655[_0x6d6c('0x3c')]['limit']);_0x54a9a7[_0x6d6c('0x20')]=qs[_0x6d6c('0x20')](_0x6e1655[_0x6d6c('0x3c')]['offset']);}return _0x1c3a37[_0x6d6c('0x8b')](_0x54a9a7);}})['then'](function(_0x12c9ec){if(_0x12c9ec){return _0x12c9ec?{'count':_0x35954b,'rows':_0x12c9ec}:null;}})[_0x6d6c('0x2a')](respondWithResult(_0x5d70cd,null))[_0x6d6c('0x4e')](handleError(_0x5d70cd,null));};
\ No newline at end of file
+var _0x0017=['User','findAndCountAll','UserId','agent','faxPause','updatedAt','createdAt','SIP','Team','getTeams','online','voicePause','interface','flatMap','sequelize','transaction','findOrCreate','forEach','emit','removeTeams','field','tq.TeamId','join','user_has_teams','FaxQueueId\x20=\x20?','Agents','clone','push','toString','SELECT','TeamId','includes','compact','ids','isEmpty','removeAgents','addAgents','omit','spread','isArray','userFaxQueue:remove','getAgents','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','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./faxQueue.socket','register','status','end','json','limit','count','offset','apply','reject','save','then','get','FaxQueues','destroy','sendStatus','error','stack','name','send','FaxQueue','key','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','rows','catch','params','keys','rawAttributes','options','find','create','body','user','role','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','findOne','FaxQueueId','UserFaxQueue','findAll'];(function(_0x2cd793,_0x2f6819){var _0x5554ab=function(_0x13c670){while(--_0x13c670){_0x2cd793['push'](_0x2cd793['shift']());}};_0x5554ab(++_0x2f6819);}(_0x0017,0x1c2));var _0x7001=function(_0x2c1dcd,_0x350452){_0x2c1dcd=_0x2c1dcd-0x0;var _0x158ce5=_0x0017[_0x2c1dcd];return _0x158ce5;};'use strict';var emlformat=require(_0x7001('0x0'));var rimraf=require(_0x7001('0x1'));var zipdir=require(_0x7001('0x2'));var jsonpatch=require(_0x7001('0x3'));var rp=require(_0x7001('0x4'));var moment=require(_0x7001('0x5'));var BPromise=require(_0x7001('0x6'));var Mustache=require(_0x7001('0x7'));var util=require(_0x7001('0x8'));var path=require(_0x7001('0x9'));var sox=require(_0x7001('0xa'));var csv=require('to-csv');var ejs=require(_0x7001('0xb'));var fs=require('fs');var fs_extra=require(_0x7001('0xc'));var _=require(_0x7001('0xd'));var squel=require(_0x7001('0xe'));var crypto=require(_0x7001('0xf'));var jsforce=require(_0x7001('0x10'));var deskjs=require(_0x7001('0x11'));var toCsv=require('to-csv');var querystring=require(_0x7001('0x12'));var Papa=require(_0x7001('0x13'));var Redis=require(_0x7001('0x14'));var authService=require(_0x7001('0x15'));var qs=require(_0x7001('0x16'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x7001('0x17'))(_0x7001('0x18'));var utils=require(_0x7001('0x19'));var config=require(_0x7001('0x1a'));var licenseUtil=require(_0x7001('0x1b'));var db=require(_0x7001('0x1c'))['db'];config[_0x7001('0x1d')]=_[_0x7001('0x1e')](config['redis'],{'host':_0x7001('0x1f'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7001('0x1d')]));require(_0x7001('0x20'))[_0x7001('0x21')](socket);function respondWithStatusCode(_0x3ab178,_0x599872){_0x599872=_0x599872||0xcc;return function(_0x251781){if(_0x251781){return _0x3ab178['sendStatus'](_0x599872);}return _0x3ab178[_0x7001('0x22')](_0x599872)[_0x7001('0x23')]();};}function respondWithResult(_0x359c6b,_0x43c2ff){_0x43c2ff=_0x43c2ff||0xc8;return function(_0x46469e){if(_0x46469e){return _0x359c6b[_0x7001('0x22')](_0x43c2ff)[_0x7001('0x24')](_0x46469e);}};}function respondWithFilteredResult(_0x3dffbc,_0x3ef6cf){return function(_0x25d559){if(_0x25d559){var _0x5140de=typeof _0x3ef6cf['offset']==='undefined'&&typeof _0x3ef6cf[_0x7001('0x25')]==='undefined';var _0x335b46=_0x25d559[_0x7001('0x26')];var _0x4e455f=_0x5140de?0x0:_0x3ef6cf[_0x7001('0x27')];var _0x11881f=_0x5140de?_0x25d559[_0x7001('0x26')]:_0x3ef6cf[_0x7001('0x27')]+_0x3ef6cf[_0x7001('0x25')];var _0x1f481b;if(_0x11881f>=_0x335b46){_0x11881f=_0x335b46;_0x1f481b=0xc8;}else{_0x1f481b=0xce;}_0x3dffbc[_0x7001('0x22')](_0x1f481b);return _0x3dffbc['set']('Content-Range',_0x4e455f+'-'+_0x11881f+'/'+_0x335b46)[_0x7001('0x24')](_0x25d559);}return null;};}function patchUpdates(_0x2d961e){return function(_0xc97dd5){try{jsonpatch[_0x7001('0x28')](_0xc97dd5,_0x2d961e,!![]);}catch(_0x2d939e){return BPromise[_0x7001('0x29')](_0x2d939e);}return _0xc97dd5[_0x7001('0x2a')]();};}function saveUpdates(_0x131130,_0x2437df){return function(_0x55d172){if(_0x55d172){return _0x55d172['update'](_0x131130)['then'](function(_0x3ed08f){return _0x3ed08f;});}return null;};}function removeEntity(_0xa6dbbf,_0x1bc47a){return function(_0x5488cf){if(_0x5488cf){return _0x5488cf['destroy']()[_0x7001('0x2b')](function(){var _0x206b16=_0x5488cf[_0x7001('0x2c')]({'plain':!![]});var _0x216a7a=_0x7001('0x2d');return db['UserProfileResource'][_0x7001('0x2e')]({'where':{'type':_0x216a7a,'resourceId':_0x206b16['id']}})['then'](function(){return _0x5488cf;});})['then'](function(){_0xa6dbbf[_0x7001('0x22')](0xcc)[_0x7001('0x23')]();});}};}function handleEntityNotFound(_0x28596a,_0x4eec14){return function(_0x113335){if(!_0x113335){_0x28596a[_0x7001('0x2f')](0x194);}return _0x113335;};}function handleError(_0x4e1e1f,_0x7b40fe){_0x7b40fe=_0x7b40fe||0x1f4;return function(_0x5c13ce){logger[_0x7001('0x30')](_0x5c13ce[_0x7001('0x31')]);if(_0x5c13ce['name']){delete _0x5c13ce[_0x7001('0x32')];}_0x4e1e1f[_0x7001('0x22')](_0x7b40fe)[_0x7001('0x33')](_0x5c13ce);};}exports['index']=function(_0xa33aa0,_0x187b74){var _0x550585={},_0x14fc9a={},_0x5114c4={'count':0x0,'rows':[]};var _0x555eb7=_['map'](db[_0x7001('0x34')]['rawAttributes'],function(_0x246f4b){return{'name':_0x246f4b['fieldName'],'type':_0x246f4b['type'][_0x7001('0x35')]};});_0x14fc9a[_0x7001('0x36')]=_[_0x7001('0x37')](_0x555eb7,_0x7001('0x32'));_0x14fc9a[_0x7001('0x38')]=_['keys'](_0xa33aa0[_0x7001('0x38')]);_0x14fc9a[_0x7001('0x39')]=_[_0x7001('0x3a')](_0x14fc9a['model'],_0x14fc9a[_0x7001('0x38')]);_0x550585['attributes']=_[_0x7001('0x3a')](_0x14fc9a[_0x7001('0x36')],qs['fields'](_0xa33aa0[_0x7001('0x38')][_0x7001('0x3b')]));_0x550585[_0x7001('0x3c')]=_0x550585[_0x7001('0x3c')][_0x7001('0x3d')]?_0x550585[_0x7001('0x3c')]:_0x14fc9a[_0x7001('0x36')];if(!_0xa33aa0[_0x7001('0x38')][_0x7001('0x3e')](_0x7001('0x3f'))){_0x550585[_0x7001('0x25')]=qs[_0x7001('0x25')](_0xa33aa0['query'][_0x7001('0x25')]);_0x550585[_0x7001('0x27')]=qs[_0x7001('0x27')](_0xa33aa0[_0x7001('0x38')][_0x7001('0x27')]);}_0x550585[_0x7001('0x40')]=qs[_0x7001('0x41')](_0xa33aa0[_0x7001('0x38')][_0x7001('0x41')]);_0x550585['where']=qs[_0x7001('0x39')](_[_0x7001('0x42')](_0xa33aa0[_0x7001('0x38')],_0x14fc9a[_0x7001('0x39')]),_0x555eb7);if(_0xa33aa0[_0x7001('0x38')][_0x7001('0x43')]){_0x550585[_0x7001('0x44')]=_[_0x7001('0x45')](_0x550585[_0x7001('0x44')],{'$or':_[_0x7001('0x37')](_0x555eb7,function(_0x44b654){if(_0x44b654['type']!==_0x7001('0x46')){var _0x3a56c0={};_0x3a56c0[_0x44b654['name']]={'$like':'%'+_0xa33aa0[_0x7001('0x38')][_0x7001('0x43')]+'%'};return _0x3a56c0;}})});}_0x550585=_[_0x7001('0x45')]({},_0x550585,_0xa33aa0['options']);var _0x52bf9e={'where':_0x550585[_0x7001('0x44')]};return db[_0x7001('0x34')][_0x7001('0x26')](_0x52bf9e)['then'](function(_0x919091){_0x5114c4['count']=_0x919091;if(_0xa33aa0[_0x7001('0x38')][_0x7001('0x47')]){_0x550585[_0x7001('0x48')]=[{'all':!![]}];}return db['FaxQueue']['findAll'](_0x550585);})[_0x7001('0x2b')](function(_0x6442b1){_0x5114c4[_0x7001('0x49')]=_0x6442b1;return _0x5114c4;})[_0x7001('0x2b')](respondWithFilteredResult(_0x187b74,_0x550585))[_0x7001('0x4a')](handleError(_0x187b74,null));};exports['show']=function(_0x1354b6,_0xbd8a9c){var _0x532e54={'raw':!![],'where':{'id':_0x1354b6[_0x7001('0x4b')]['id']}},_0x43e8ee={};_0x43e8ee[_0x7001('0x36')]=_[_0x7001('0x4c')](db['FaxQueue'][_0x7001('0x4d')]);_0x43e8ee[_0x7001('0x38')]=_[_0x7001('0x4c')](_0x1354b6['query']);_0x43e8ee[_0x7001('0x39')]=_[_0x7001('0x3a')](_0x43e8ee[_0x7001('0x36')],_0x43e8ee[_0x7001('0x38')]);_0x532e54[_0x7001('0x3c')]=_[_0x7001('0x3a')](_0x43e8ee[_0x7001('0x36')],qs['fields'](_0x1354b6['query']['fields']));_0x532e54[_0x7001('0x3c')]=_0x532e54[_0x7001('0x3c')][_0x7001('0x3d')]?_0x532e54[_0x7001('0x3c')]:_0x43e8ee[_0x7001('0x36')];if(_0x1354b6['query'][_0x7001('0x47')]){_0x532e54['include']=[{'all':!![]}];}_0x532e54=_[_0x7001('0x45')]({},_0x532e54,_0x1354b6[_0x7001('0x4e')]);return db[_0x7001('0x34')][_0x7001('0x4f')](_0x532e54)[_0x7001('0x2b')](handleEntityNotFound(_0xbd8a9c,null))[_0x7001('0x2b')](respondWithResult(_0xbd8a9c,null))['catch'](handleError(_0xbd8a9c,null));};exports[_0x7001('0x50')]=function(_0x41e281,_0x3f2d22){return db[_0x7001('0x34')][_0x7001('0x50')](_0x41e281[_0x7001('0x51')],{})[_0x7001('0x2b')](function(_0x41d1cc){var _0x5daaa1=_0x41e281[_0x7001('0x52')]['get']({'plain':!![]});if(!_0x5daaa1)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5daaa1[_0x7001('0x53')]===_0x7001('0x52')){var _0x47b85f=_0x41d1cc[_0x7001('0x2c')]({'plain':!![]});var _0x2914ef='FaxQueues';return db[_0x7001('0x54')]['find']({'where':{'name':_0x2914ef,'userProfileId':_0x5daaa1['userProfileId']},'raw':!![]})[_0x7001('0x2b')](function(_0x2fdc98){if(_0x2fdc98&&_0x2fdc98[_0x7001('0x55')]===0x0){return db[_0x7001('0x56')]['create']({'name':_0x47b85f['name'],'resourceId':_0x47b85f['id'],'type':_0x2fdc98[_0x7001('0x32')],'sectionId':_0x2fdc98['id']},{})[_0x7001('0x2b')](function(){return _0x41d1cc;});}else{return _0x41d1cc;}})[_0x7001('0x4a')](function(_0x37efed){logger['error'](_0x7001('0x57'),_0x37efed);throw _0x37efed;});}return _0x41d1cc;})['then'](respondWithResult(_0x3f2d22,0xc9))[_0x7001('0x4a')](handleError(_0x3f2d22,null));};exports[_0x7001('0x58')]=function(_0x18f16b,_0x49dac3){if(_0x18f16b[_0x7001('0x51')]['id']){delete _0x18f16b['body']['id'];}return db[_0x7001('0x34')][_0x7001('0x4f')]({'where':{'id':_0x18f16b[_0x7001('0x4b')]['id']}})[_0x7001('0x2b')](handleEntityNotFound(_0x49dac3,null))['then'](saveUpdates(_0x18f16b[_0x7001('0x51')],null))[_0x7001('0x2b')](respondWithResult(_0x49dac3,null))[_0x7001('0x4a')](handleError(_0x49dac3,null));};exports[_0x7001('0x2e')]=function(_0xc52565,_0xda1fa8){return db[_0x7001('0x34')]['find']({'where':{'id':_0xc52565[_0x7001('0x4b')]['id']}})[_0x7001('0x2b')](handleEntityNotFound(_0xda1fa8,null))[_0x7001('0x2b')](removeEntity(_0xda1fa8,null))[_0x7001('0x4a')](handleError(_0xda1fa8,null));};exports[_0x7001('0x59')]=function(_0x32af33,_0x13c662){return db[_0x7001('0x34')]['describe']()[_0x7001('0x2b')](respondWithResult(_0x13c662,null))['catch'](handleError(_0x13c662,null));};exports['getMembers']=function(_0x58ad5b,_0x258076,_0x46f3f6){var _0xb9d0ee={'raw':!![],'where':{}},_0x4c68b5={},_0x3dd12a;return db['FaxQueue'][_0x7001('0x5a')]({'where':{'id':_0x58ad5b[_0x7001('0x4b')]['id']}})[_0x7001('0x2b')](handleEntityNotFound(_0x258076,null))[_0x7001('0x2b')](function(_0x2f77d7){if(_0x2f77d7){_0x3dd12a=_0x2f77d7[_0x7001('0x2c')]({'plain':!![]});_0x4c68b5[_0x7001('0x36')]=_[_0x7001('0x4c')](db['UserFaxQueue']['rawAttributes']);_0x4c68b5[_0x7001('0x38')]=_['keys'](_0x58ad5b[_0x7001('0x38')]);_0x4c68b5['filters']=_[_0x7001('0x3a')](_0x4c68b5[_0x7001('0x36')],_0x4c68b5[_0x7001('0x38')]);_0xb9d0ee[_0x7001('0x3c')]=_[_0x7001('0x3a')](_0x4c68b5[_0x7001('0x36')],qs[_0x7001('0x3b')](_0x58ad5b['query'][_0x7001('0x3b')]));_0xb9d0ee['attributes']=_0xb9d0ee[_0x7001('0x3c')][_0x7001('0x3d')]?_0xb9d0ee['attributes']:_0x4c68b5[_0x7001('0x36')];if(!_0x58ad5b[_0x7001('0x38')][_0x7001('0x3e')]('nolimit')){_0xb9d0ee['limit']=qs[_0x7001('0x25')](_0x58ad5b[_0x7001('0x38')]['limit']);_0xb9d0ee[_0x7001('0x27')]=qs[_0x7001('0x27')](_0x58ad5b[_0x7001('0x38')][_0x7001('0x27')]);}_0xb9d0ee[_0x7001('0x40')]=qs[_0x7001('0x41')](_0x58ad5b[_0x7001('0x38')][_0x7001('0x41')]);_0xb9d0ee[_0x7001('0x44')]=qs[_0x7001('0x39')](_[_0x7001('0x42')](_0x58ad5b[_0x7001('0x38')],_0x4c68b5[_0x7001('0x39')]));_0xb9d0ee['where'][_0x7001('0x5b')]=_0x2f77d7['id'];if(_0x58ad5b[_0x7001('0x38')]['filter']){_0xb9d0ee[_0x7001('0x44')]=_[_0x7001('0x45')](_0xb9d0ee['where'],{'$or':_[_0x7001('0x37')](_0xb9d0ee['attributes'],function(_0x4052fa){var _0x41bca2={};_0x41bca2[_0x4052fa]={'$like':'%'+_0x58ad5b[_0x7001('0x38')][_0x7001('0x43')]+'%'};return _0x41bca2;})});}_0xb9d0ee=_[_0x7001('0x45')]({},_0xb9d0ee,_0x58ad5b['options']);return db[_0x7001('0x5c')][_0x7001('0x5d')](_0xb9d0ee);}})[_0x7001('0x2b')](function(_0x1598b8){if(_0x1598b8){return db[_0x7001('0x5e')][_0x7001('0x5f')]({'where':{'id':_['map'](_0x1598b8,_0x7001('0x60')),'role':_0x7001('0x61')},'attributes':['id',_0x7001('0x32'),_0x7001('0x62'),_0x7001('0x63'),_0x7001('0x64')]});}})[_0x7001('0x2b')](function(_0x243280){if(_0x243280){return{'count':_0x243280[_0x7001('0x26')],'rows':_[_0x7001('0x37')](_0x243280['rows'],function(_0x46c6de){return{'membername':_0x46c6de[_0x7001('0x32')],'UserId':_0x46c6de['id'],'queue_name':_0x3dd12a['name'],'FaxQueueId':_0x3dd12a['id'],'interface':util['format']('%s/%s',_0x7001('0x65'),_0x46c6de[_0x7001('0x32')]),'penalty':0x0,'paused':_0x46c6de['faxPause'],'createdAt':_0x46c6de['createdAt'],'updatedAt':_0x46c6de['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x258076,_0xb9d0ee))[_0x7001('0x4a')](handleError(_0x258076,null));};exports['getTeams']=function(_0xaf3fee,_0x1a9823,_0x216ed6){var _0x3a77d1={};var _0x288276={};var _0x73559b;var _0x1e42c3;return db[_0x7001('0x34')][_0x7001('0x5a')]({'where':{'id':_0xaf3fee[_0x7001('0x4b')]['id']}})[_0x7001('0x2b')](handleEntityNotFound(_0x1a9823,null))['then'](function(_0x4ab3d0){if(_0x4ab3d0){_0x73559b=_0x4ab3d0;_0x288276[_0x7001('0x36')]=_['keys'](db[_0x7001('0x66')][_0x7001('0x4d')]);_0x288276[_0x7001('0x38')]=_[_0x7001('0x4c')](_0xaf3fee[_0x7001('0x38')]);_0x288276['filters']=_[_0x7001('0x3a')](_0x288276[_0x7001('0x36')],_0x288276['query']);_0x3a77d1[_0x7001('0x3c')]=_[_0x7001('0x3a')](_0x288276[_0x7001('0x36')],qs['fields'](_0xaf3fee[_0x7001('0x38')][_0x7001('0x3b')]));_0x3a77d1[_0x7001('0x3c')]=_0x3a77d1[_0x7001('0x3c')][_0x7001('0x3d')]?_0x3a77d1[_0x7001('0x3c')]:_0x288276['model'];_0x3a77d1['order']=qs[_0x7001('0x41')](_0xaf3fee[_0x7001('0x38')][_0x7001('0x41')]);_0x3a77d1[_0x7001('0x44')]=qs[_0x7001('0x39')](_['pick'](_0xaf3fee[_0x7001('0x38')],_0x288276[_0x7001('0x39')]));if(_0xaf3fee[_0x7001('0x38')][_0x7001('0x43')]){_0x3a77d1[_0x7001('0x44')]=_[_0x7001('0x45')](_0x3a77d1[_0x7001('0x44')],{'$or':_[_0x7001('0x37')](_0x3a77d1[_0x7001('0x3c')],function(_0x28ad8e){var _0x1f2558={};_0x1f2558[_0x28ad8e]={'$like':'%'+_0xaf3fee[_0x7001('0x38')][_0x7001('0x43')]+'%'};return _0x1f2558;})});}_0x3a77d1=_[_0x7001('0x45')]({},_0x3a77d1,_0xaf3fee[_0x7001('0x4e')]);return _0x73559b[_0x7001('0x67')](_0x3a77d1);}})[_0x7001('0x2b')](function(_0x3f3c3e){if(_0x3f3c3e){_0x1e42c3=_0x3f3c3e[_0x7001('0x3d')];if(!_0xaf3fee[_0x7001('0x38')]['hasOwnProperty'](_0x7001('0x3f'))){_0x3a77d1[_0x7001('0x25')]=qs[_0x7001('0x25')](_0xaf3fee[_0x7001('0x38')][_0x7001('0x25')]);_0x3a77d1['offset']=qs[_0x7001('0x27')](_0xaf3fee[_0x7001('0x38')][_0x7001('0x27')]);}return _0x73559b['getTeams'](_0x3a77d1);}})[_0x7001('0x2b')](function(_0x1c587a){if(_0x1c587a){return _0x1c587a?{'count':_0x1e42c3,'rows':_0x1c587a}:null;}})['then'](respondWithResult(_0x1a9823,null))[_0x7001('0x4a')](handleError(_0x1a9823,null));};exports['addTeams']=function(_0x27bf67,_0x4718bc,_0x92707){var _0x356643=_0x27bf67['body']['ids'];return db[_0x7001('0x66')]['findAll']({'where':{'id':_0x356643},'attributes':['id'],'include':[{'model':db[_0x7001('0x5e')],'as':'Agents','attributes':['id','name',_0x7001('0x68'),_0x7001('0x69'),_0x7001('0x6a')],'raw':!![]}]})[_0x7001('0x2b')](function(_0x1f3511){if(_0x1f3511){var _0x556cb4=_[_0x7001('0x6b')](_0x1f3511,function(_0x1f3863){var _0xfacd2e=_0x1f3863['get']({'plain':!![]});return _0xfacd2e['Agents'];});return db[_0x7001('0x34')][_0x7001('0x4f')]({'where':{'id':_0x27bf67[_0x7001('0x4b')]['id']}})[_0x7001('0x2b')](function(_0x4a2896){return db[_0x7001('0x6c')][_0x7001('0x6d')](function(_0x3eb782){return _0x4a2896['addTeams'](_0x356643,{'transaction':_0x3eb782})[_0x7001('0x2b')](function(){return BPromise['each'](_0x556cb4,function(_0x64f41a){return db[_0x7001('0x5c')][_0x7001('0x6e')]({'where':{'UserId':_0x64f41a['id'],'FaxQueueId':_0x27bf67['params']['id']},'transaction':_0x3eb782});});})['then'](function(){_0x556cb4[_0x7001('0x6f')](function(_0x55a3d2){socket[_0x7001('0x70')]('userFaxQueue:save',{'UserId':_0x55a3d2['id'],'FaxQueueId':_0x4a2896['id']});});});});});}})[_0x7001('0x2b')](respondWithStatusCode(_0x4718bc,null))['catch'](handleError(_0x4718bc,null));};exports[_0x7001('0x71')]=function(_0x58577a,_0x80d03a,_0x39767b){return db[_0x7001('0x66')][_0x7001('0x5d')]({'where':{'id':_0x58577a[_0x7001('0x38')]['ids']},'attributes':['id'],'include':[{'model':db[_0x7001('0x5e')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x7001('0x2b')](handleEntityNotFound(_0x80d03a,null))[_0x7001('0x2b')](function(_0x30107a){var _0x1d482d=_[_0x7001('0x37')](_0x30107a,'id');var _0x5bd505=[];var _0x56d9d0=[];var _0x17ec17=squel['select']();_0x17ec17[_0x7001('0x72')](_0x7001('0x73'))['from']('team_has_fax_queues','tq')[_0x7001('0x74')](_0x7001('0x75'),'ut','ut.TeamId\x20=\x20tq.TeamId')['where'](_0x7001('0x76'),_0x58577a['params']['id']);for(var _0x440de1=0x0;_0x440de1<_0x30107a[_0x7001('0x3d')];_0x440de1+=0x1){let _0x4a6c07=_0x30107a[_0x440de1];for(var _0x1149a8=0x0;_0x1149a8<_0x4a6c07[_0x7001('0x77')][_0x7001('0x3d')];_0x1149a8+=0x1){let _0x29dd34=_0x4a6c07[_0x7001('0x77')][_0x1149a8];var _0x4fb989=_0x17ec17[_0x7001('0x78')]();_0x4fb989[_0x7001('0x44')]('ut.UserId\x20=\x20?',_0x29dd34['id']);_0x56d9d0[_0x7001('0x79')](db[_0x7001('0x6c')][_0x7001('0x38')](_0x4fb989[_0x7001('0x7a')](),{'type':db[_0x7001('0x6c')]['QueryTypes'][_0x7001('0x7b')]})[_0x7001('0x2b')](function(_0x2038a8){if(_0x2038a8[_0x7001('0x3d')]===0x1){return _0x29dd34['id'];}else{var _0x362b5e=_['every'](_[_0x7001('0x37')](_0x2038a8,_0x7001('0x7c')),function(_0x13383f){return _[_0x7001('0x7d')](_0x1d482d,_0x13383f);});if(_0x362b5e){return _0x29dd34['id'];}}}));}}return BPromise['all'](_0x56d9d0)[_0x7001('0x2b')](function(_0x2b379d){_0x5bd505=_(_0x5bd505)['union'](_0x2b379d)[_0x7001('0x7e')]()['value']();return db[_0x7001('0x34')][_0x7001('0x4f')]({'where':{'id':_0x58577a['params']['id']}})[_0x7001('0x2b')](function(_0x4985d8){return db[_0x7001('0x6c')]['transaction'](function(_0x4f02fb){return _0x4985d8[_0x7001('0x71')](_0x58577a['query'][_0x7001('0x7f')],{'transaction':_0x4f02fb})['then'](function(){if(!_[_0x7001('0x80')](_0x5bd505)){return _0x4985d8[_0x7001('0x81')](_0x5bd505,{'transaction':_0x4f02fb});}})['then'](function(){_0x5bd505[_0x7001('0x6f')](function(_0x5e8f16){socket['emit']('userFaxQueue:remove',{'UserId':_0x5e8f16,'FaxQueueId':_0x4985d8['id']});});});});});});})['then'](respondWithStatusCode(_0x80d03a,null))[_0x7001('0x4a')](handleError(_0x80d03a,null));};exports[_0x7001('0x82')]=function(_0x9e1da2,_0x4e993d,_0x3c3a57){return db[_0x7001('0x34')][_0x7001('0x4f')]({'where':{'id':_0x9e1da2['params']['id']}})['then'](handleEntityNotFound(_0x4e993d,null))[_0x7001('0x2b')](function(_0x217373){if(_0x217373){return _0x217373[_0x7001('0x82')](_0x9e1da2['body'][_0x7001('0x7f')],_[_0x7001('0x83')](_0x9e1da2[_0x7001('0x51')],[_0x7001('0x7f'),'id'])||{})[_0x7001('0x84')](function(_0x3b8adf){for(var _0x518210=0x0;_0x518210<_0x9e1da2[_0x7001('0x51')][_0x7001('0x7f')][_0x7001('0x3d')];_0x518210+=0x1){socket[_0x7001('0x70')]('userFaxQueue:save',{'UserId':Number(_0x9e1da2[_0x7001('0x51')][_0x7001('0x7f')][_0x518210]),'FaxQueueId':Number(_0x9e1da2['params']['id'])});}return _0x3b8adf;});}})[_0x7001('0x2b')](respondWithResult(_0x4e993d,null))['catch'](handleError(_0x4e993d,null));};exports[_0x7001('0x81')]=function(_0x9aef96,_0x440d55,_0x447a7f){return db[_0x7001('0x34')][_0x7001('0x4f')]({'where':{'id':_0x9aef96[_0x7001('0x4b')]['id']}})[_0x7001('0x2b')](handleEntityNotFound(_0x440d55,null))[_0x7001('0x2b')](function(_0x4b06c1){if(_0x4b06c1){return _0x4b06c1[_0x7001('0x81')](_0x9aef96[_0x7001('0x38')]['ids'])['then'](function(){if(_[_0x7001('0x85')](_0x9aef96[_0x7001('0x38')][_0x7001('0x7f')])){for(var _0x1f82f1=0x0;_0x1f82f1<_0x9aef96[_0x7001('0x38')]['ids'][_0x7001('0x3d')];_0x1f82f1+=0x1){socket[_0x7001('0x70')](_0x7001('0x86'),{'UserId':Number(_0x9aef96[_0x7001('0x38')]['ids'][_0x1f82f1]),'FaxQueueId':Number(_0x9aef96[_0x7001('0x4b')]['id'])});}}else{socket[_0x7001('0x70')](_0x7001('0x86'),{'UserId':Number(_0x9aef96[_0x7001('0x38')][_0x7001('0x7f')]),'FaxQueueId':Number(_0x9aef96['params']['id'])});}});}})['then'](respondWithStatusCode(_0x440d55,null))[_0x7001('0x4a')](handleError(_0x440d55,null));};exports[_0x7001('0x87')]=function(_0x446453,_0x547490,_0x4c917e){var _0x1963d4={};var _0x3b23cd={};var _0x5f5a3d;var _0x586268;return db[_0x7001('0x34')][_0x7001('0x5a')]({'where':{'id':_0x446453['params']['id']}})[_0x7001('0x2b')](handleEntityNotFound(_0x547490,null))[_0x7001('0x2b')](function(_0x3a9d1e){if(_0x3a9d1e){_0x5f5a3d=_0x3a9d1e;_0x3b23cd[_0x7001('0x36')]=_['keys'](db[_0x7001('0x5e')][_0x7001('0x4d')]);_0x3b23cd[_0x7001('0x38')]=_['keys'](_0x446453[_0x7001('0x38')]);_0x3b23cd['filters']=_[_0x7001('0x3a')](_0x3b23cd[_0x7001('0x36')],_0x3b23cd[_0x7001('0x38')]);_0x1963d4[_0x7001('0x3c')]=_[_0x7001('0x3a')](_0x3b23cd[_0x7001('0x36')],qs['fields'](_0x446453[_0x7001('0x38')][_0x7001('0x3b')]));_0x1963d4[_0x7001('0x3c')]=_0x1963d4[_0x7001('0x3c')]['length']?_0x1963d4[_0x7001('0x3c')]:_0x3b23cd[_0x7001('0x36')];_0x1963d4[_0x7001('0x40')]=qs[_0x7001('0x41')](_0x446453['query'][_0x7001('0x41')]);_0x1963d4['where']=qs[_0x7001('0x39')](_[_0x7001('0x42')](_0x446453[_0x7001('0x38')],_0x3b23cd[_0x7001('0x39')]));if(_0x446453['query'][_0x7001('0x43')]){_0x1963d4[_0x7001('0x44')]=_[_0x7001('0x45')](_0x1963d4['where'],{'$or':_['map'](_0x1963d4[_0x7001('0x3c')],function(_0x423403){var _0x3c4990={};_0x3c4990[_0x423403]={'$like':'%'+_0x446453[_0x7001('0x38')][_0x7001('0x43')]+'%'};return _0x3c4990;})});}_0x1963d4=_[_0x7001('0x45')]({},_0x1963d4,_0x446453[_0x7001('0x4e')]);return _0x5f5a3d[_0x7001('0x87')](_0x1963d4);}})[_0x7001('0x2b')](function(_0xa51c23){if(_0xa51c23){_0x586268=_0xa51c23[_0x7001('0x3d')];if(!_0x446453[_0x7001('0x38')][_0x7001('0x3e')](_0x7001('0x3f'))){_0x1963d4[_0x7001('0x25')]=qs[_0x7001('0x25')](_0x446453[_0x7001('0x38')][_0x7001('0x25')]);_0x1963d4[_0x7001('0x27')]=qs[_0x7001('0x27')](_0x446453[_0x7001('0x38')][_0x7001('0x27')]);}return _0x5f5a3d[_0x7001('0x87')](_0x1963d4);}})[_0x7001('0x2b')](function(_0x23757b){if(_0x23757b){return _0x23757b?{'count':_0x586268,'rows':_0x23757b}:null;}})[_0x7001('0x2b')](respondWithResult(_0x547490,null))['catch'](handleError(_0x547490,null));};
\ No newline at end of file
index 3c1fbe5..f8d27f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d73=['remove','emit','hasOwnProperty','exports','events','../../mysqldb','FaxQueue','setMaxListeners','save','update'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5d73,0x7c));var _0x35d7=function(_0x1559d1,_0x25381){_0x1559d1=_0x1559d1-0x0;var _0x3cae18=_0x5d73[_0x1559d1];return _0x3cae18;};'use strict';var EventEmitter=require(_0x35d7('0x0'));var FaxQueue=require(_0x35d7('0x1'))['db'][_0x35d7('0x2')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x35d7('0x3')](0x0);var events={'afterCreate':_0x35d7('0x4'),'afterUpdate':_0x35d7('0x5'),'afterDestroy':_0x35d7('0x6')};function emitEvent(_0x5ce922){return function(_0x2279b1,_0x599723,_0x49f6f1){FaxQueueEvents['emit'](_0x5ce922+':'+_0x2279b1['id'],_0x2279b1);FaxQueueEvents[_0x35d7('0x7')](_0x5ce922,_0x2279b1);_0x49f6f1(null);};}for(var e in events){if(events[_0x35d7('0x8')](e)){var event=events[e];FaxQueue['hook'](e,emitEvent(event));}}module[_0x35d7('0x9')]=FaxQueueEvents;
\ No newline at end of file
+var _0x31b6=['FaxQueue','setMaxListeners','save','update','remove','emit','hook','exports','events','../../mysqldb'];(function(_0x20e375,_0x31f080){var _0x5b426f=function(_0x54ac24){while(--_0x54ac24){_0x20e375['push'](_0x20e375['shift']());}};_0x5b426f(++_0x31f080);}(_0x31b6,0x17a));var _0x631b=function(_0x26fdb5,_0x47f4b9){_0x26fdb5=_0x26fdb5-0x0;var _0x5bc218=_0x31b6[_0x26fdb5];return _0x5bc218;};'use strict';var EventEmitter=require(_0x631b('0x0'));var FaxQueue=require(_0x631b('0x1'))['db'][_0x631b('0x2')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x631b('0x3')](0x0);var events={'afterCreate':_0x631b('0x4'),'afterUpdate':_0x631b('0x5'),'afterDestroy':_0x631b('0x6')};function emitEvent(_0x4ee8f2){return function(_0x2bcc35,_0x2c7925,_0xfceb8d){FaxQueueEvents[_0x631b('0x7')](_0x4ee8f2+':'+_0x2bcc35['id'],_0x2bcc35);FaxQueueEvents['emit'](_0x4ee8f2,_0x2bcc35);_0xfceb8d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxQueue[_0x631b('0x8')](e,emitEvent(event));}}module[_0x631b('0x9')]=FaxQueueEvents;
\ No newline at end of file
index 01ebd52..f8b01e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67e1=['path','rimraf','../../config/environment','./faxQueue.attributes','define','fax_queues','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x151418,_0x2cbffa){var _0x40e29a=function(_0xec4d7){while(--_0xec4d7){_0x151418['push'](_0x151418['shift']());}};_0x40e29a(++_0x2cbffa);}(_0x67e1,0x1c2));var _0x167e=function(_0xaedc6c,_0x3f9129){_0xaedc6c=_0xaedc6c-0x0;var _0x51f2cf=_0x67e1[_0xaedc6c];return _0x51f2cf;};'use strict';var _=require(_0x167e('0x0'));var util=require(_0x167e('0x1'));var logger=require(_0x167e('0x2'))(_0x167e('0x3'));var moment=require(_0x167e('0x4'));var BPromise=require(_0x167e('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x167e('0x6'));var rimraf=require(_0x167e('0x7'));var config=require(_0x167e('0x8'));var attributes=require(_0x167e('0x9'));module['exports']=function(_0x16cfec,_0x557726){return _0x16cfec[_0x167e('0xa')]('FaxQueue',attributes,{'tableName':_0x167e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0612=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','define','FaxQueue','fax_queues','lodash'];(function(_0x4b36a0,_0x3e59f6){var _0x3bd2bc=function(_0x2af381){while(--_0x2af381){_0x4b36a0['push'](_0x4b36a0['shift']());}};_0x3bd2bc(++_0x3e59f6);}(_0x0612,0x173));var _0x2061=function(_0x22bb89,_0x15fbbd){_0x22bb89=_0x22bb89-0x0;var _0x481750=_0x0612[_0x22bb89];return _0x481750;};'use strict';var _=require(_0x2061('0x0'));var util=require('util');var logger=require(_0x2061('0x1'))(_0x2061('0x2'));var moment=require(_0x2061('0x3'));var BPromise=require('bluebird');var rp=require(_0x2061('0x4'));var fs=require('fs');var path=require(_0x2061('0x5'));var rimraf=require(_0x2061('0x6'));var config=require(_0x2061('0x7'));var attributes=require('./faxQueue.attributes');module[_0x2061('0x8')]=function(_0xf9ea4c,_0x21f3ca){return _0xf9ea4c[_0x2061('0x9')](_0x2061('0xa'),attributes,{'tableName':_0x2061('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 06bb018..c9f89cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x172c=['then','info','request\x20sent','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxQueue,\x20%s,\x20%s','message','catch','GetFaxQueue','options','raw','where','limit','include','model','attributes','map','debug','FaxQueue','find','ShowFaxQueue','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','./faxQueue.socket','register'];(function(_0x14be2e,_0x40383a){var _0x36bac0=function(_0x324b41){while(--_0x324b41){_0x14be2e['push'](_0x14be2e['shift']());}};_0x36bac0(++_0x40383a);}(_0x172c,0xb3));var _0xc172=function(_0x37c8ef,_0x334449){_0x37c8ef=_0x37c8ef-0x0;var _0x5eaee9=_0x172c[_0x37c8ef];return _0x5eaee9;};'use strict';var _=require(_0xc172('0x0'));var util=require('util');var moment=require(_0xc172('0x1'));var BPromise=require('bluebird');var rs=require(_0xc172('0x2'));var fs=require('fs');var Redis=require(_0xc172('0x3'));var db=require(_0xc172('0x4'))['db'];var utils=require(_0xc172('0x5'));var logger=require(_0xc172('0x6'))(_0xc172('0x7'));var config=require(_0xc172('0x8'));var jayson=require(_0xc172('0x9'));var client=jayson[_0xc172('0xa')]['http']({'port':0x232a});config[_0xc172('0xb')]=_[_0xc172('0xc')](config[_0xc172('0xb')],{'host':_0xc172('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc172('0xb')]));require(_0xc172('0xe'))[_0xc172('0xf')](socket);function respondWithRpcPromise(_0x4611ce,_0x4cbbc7,_0x52f087){return new BPromise(function(_0x847060,_0x450b65){return client['request'](_0x4611ce,_0x52f087)[_0xc172('0x10')](function(_0x1a3cfe){logger[_0xc172('0x11')]('FaxQueue,\x20%s,\x20%s',_0x4cbbc7,_0xc172('0x12'));logger['debug'](_0xc172('0x13'),_0x4cbbc7,'request\x20sent',JSON[_0xc172('0x14')](_0x1a3cfe));if(_0x1a3cfe[_0xc172('0x15')]){if(_0x1a3cfe[_0xc172('0x15')][_0xc172('0x16')]===0x1f4){logger[_0xc172('0x15')](_0xc172('0x17'),_0x4cbbc7,_0x1a3cfe[_0xc172('0x15')][_0xc172('0x18')]);return _0x450b65(_0x1a3cfe[_0xc172('0x15')][_0xc172('0x18')]);}logger[_0xc172('0x15')](_0xc172('0x17'),_0x4cbbc7,_0x1a3cfe['error'][_0xc172('0x18')]);return _0x847060(_0x1a3cfe[_0xc172('0x15')][_0xc172('0x18')]);}else{logger[_0xc172('0x11')](_0xc172('0x17'),_0x4cbbc7,_0xc172('0x12'));_0x847060(_0x1a3cfe['result'][_0xc172('0x18')]);}})[_0xc172('0x19')](function(_0x365146){logger['error'](_0xc172('0x17'),_0x4cbbc7,_0x365146);_0x450b65(_0x365146);});});}exports[_0xc172('0x1a')]=function(_0x4a5e8e){var _0x4ba5b5=this;return new Promise(function(_0x489760,_0x487062){return db['FaxQueue']['findAll']({'raw':_0x4a5e8e['options']?_0x4a5e8e[_0xc172('0x1b')][_0xc172('0x1c')]===undefined?!![]:![]:!![],'where':_0x4a5e8e[_0xc172('0x1b')]?_0x4a5e8e[_0xc172('0x1b')][_0xc172('0x1d')]||null:null,'attributes':_0x4a5e8e['options']?_0x4a5e8e[_0xc172('0x1b')]['attributes']||null:null,'limit':_0x4a5e8e[_0xc172('0x1b')]?_0x4a5e8e[_0xc172('0x1b')][_0xc172('0x1e')]||null:null,'include':_0x4a5e8e['options']?_0x4a5e8e['options'][_0xc172('0x1f')]?_['map'](_0x4a5e8e[_0xc172('0x1b')][_0xc172('0x1f')],function(_0x435845){return{'model':db[_0x435845[_0xc172('0x20')]],'as':_0x435845['as'],'attributes':_0x435845[_0xc172('0x21')],'include':_0x435845['include']?_[_0xc172('0x22')](_0x435845[_0xc172('0x1f')],function(_0x4d142c){return{'model':db[_0x4d142c[_0xc172('0x20')]],'as':_0x4d142c['as'],'attributes':_0x4d142c['attributes'],'include':_0x4d142c[_0xc172('0x1f')]?_[_0xc172('0x22')](_0x4d142c['include'],function(_0x2e4da3){return{'model':db[_0x2e4da3[_0xc172('0x20')]],'as':_0x2e4da3['as'],'attributes':_0x2e4da3[_0xc172('0x21')]};}):[]};}):[]};}):[]:[]})[_0xc172('0x10')](function(_0x4a30e4){logger['info'](_0xc172('0x1a'),_0x4a5e8e);logger[_0xc172('0x23')](_0xc172('0x1a'),_0x4a5e8e,JSON[_0xc172('0x14')](_0x4a30e4));_0x489760(_0x4a30e4);})[_0xc172('0x19')](function(_0x1b7c78){logger[_0xc172('0x15')]('GetFaxQueue',_0x1b7c78['message'],_0x4a5e8e);_0x487062(_0x4ba5b5[_0xc172('0x15')](0x1f4,_0x1b7c78[_0xc172('0x18')]));});});};exports['ShowFaxQueue']=function(_0x5a4e09){var _0x17a9b6=this;return new Promise(function(_0xa1cbc3,_0x595255){return db[_0xc172('0x24')][_0xc172('0x25')]({'raw':_0x5a4e09[_0xc172('0x1b')]?_0x5a4e09[_0xc172('0x1b')][_0xc172('0x1c')]===undefined?!![]:![]:!![],'where':_0x5a4e09[_0xc172('0x1b')]?_0x5a4e09[_0xc172('0x1b')][_0xc172('0x1d')]||null:null,'attributes':_0x5a4e09[_0xc172('0x1b')]?_0x5a4e09[_0xc172('0x1b')][_0xc172('0x21')]||null:null,'include':_0x5a4e09['options']?_0x5a4e09[_0xc172('0x1b')]['include']?_[_0xc172('0x22')](_0x5a4e09[_0xc172('0x1b')][_0xc172('0x1f')],function(_0x1fdb82){return{'model':db[_0x1fdb82[_0xc172('0x20')]],'as':_0x1fdb82['as'],'attributes':_0x1fdb82[_0xc172('0x21')],'include':_0x1fdb82[_0xc172('0x1f')]?_['map'](_0x1fdb82[_0xc172('0x1f')],function(_0x25f3a0){return{'model':db[_0x25f3a0[_0xc172('0x20')]],'as':_0x25f3a0['as'],'attributes':_0x25f3a0['attributes'],'include':_0x25f3a0['include']?_[_0xc172('0x22')](_0x25f3a0['include'],function(_0x54a77a){return{'model':db[_0x54a77a[_0xc172('0x20')]],'as':_0x54a77a['as'],'attributes':_0x54a77a[_0xc172('0x21')]};}):[]};}):[]};}):[]:[]})[_0xc172('0x10')](function(_0x306337){logger[_0xc172('0x11')](_0xc172('0x26'),_0x5a4e09);logger[_0xc172('0x23')](_0xc172('0x26'),_0x5a4e09,JSON[_0xc172('0x14')](_0x306337));_0xa1cbc3(_0x306337);})[_0xc172('0x19')](function(_0x38f4bf){logger[_0xc172('0x15')](_0xc172('0x26'),_0x38f4bf[_0xc172('0x18')],_0x5a4e09);_0x595255(_0x17a9b6[_0xc172('0x15')](0x1f4,_0x38f4bf[_0xc172('0x18')]));});});};
\ No newline at end of file
+var _0x1c3b=['catch','GetFaxQueue','FaxQueue','options','attributes','include','map','model','ShowFaxQueue','find','raw','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','request','then','info','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxQueue,\x20%s,\x20%s','message','result'];(function(_0x25104c,_0x20b687){var _0x24dd98=function(_0x621d94){while(--_0x621d94){_0x25104c['push'](_0x25104c['shift']());}};_0x24dd98(++_0x20b687);}(_0x1c3b,0xd3));var _0xb1c3=function(_0x9b0190,_0x3df5da){_0x9b0190=_0x9b0190-0x0;var _0xb9970d=_0x1c3b[_0x9b0190];return _0xb9970d;};'use strict';var _=require(_0xb1c3('0x0'));var util=require(_0xb1c3('0x1'));var moment=require(_0xb1c3('0x2'));var BPromise=require('bluebird');var rs=require(_0xb1c3('0x3'));var fs=require('fs');var Redis=require(_0xb1c3('0x4'));var db=require(_0xb1c3('0x5'))['db'];var utils=require(_0xb1c3('0x6'));var logger=require('../../config/logger')(_0xb1c3('0x7'));var config=require(_0xb1c3('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xb1c3('0x9')][_0xb1c3('0xa')]({'port':0x232a});config[_0xb1c3('0xb')]=_[_0xb1c3('0xc')](config[_0xb1c3('0xb')],{'host':_0xb1c3('0xd'),'port':0x18eb});var socket=require(_0xb1c3('0xe'))(new Redis(config[_0xb1c3('0xb')]));require(_0xb1c3('0xf'))[_0xb1c3('0x10')](socket);function respondWithRpcPromise(_0x34ecc7,_0x437724,_0x574b26){return new BPromise(function(_0x44b443,_0x2d77de){return client[_0xb1c3('0x11')](_0x34ecc7,_0x574b26)[_0xb1c3('0x12')](function(_0x292f17){logger[_0xb1c3('0x13')]('FaxQueue,\x20%s,\x20%s',_0x437724,_0xb1c3('0x14'));logger[_0xb1c3('0x15')](_0xb1c3('0x16'),_0x437724,_0xb1c3('0x14'),JSON[_0xb1c3('0x17')](_0x292f17));if(_0x292f17[_0xb1c3('0x18')]){if(_0x292f17[_0xb1c3('0x18')][_0xb1c3('0x19')]===0x1f4){logger[_0xb1c3('0x18')](_0xb1c3('0x1a'),_0x437724,_0x292f17[_0xb1c3('0x18')][_0xb1c3('0x1b')]);return _0x2d77de(_0x292f17[_0xb1c3('0x18')][_0xb1c3('0x1b')]);}logger[_0xb1c3('0x18')](_0xb1c3('0x1a'),_0x437724,_0x292f17[_0xb1c3('0x18')][_0xb1c3('0x1b')]);return _0x44b443(_0x292f17['error']['message']);}else{logger[_0xb1c3('0x13')](_0xb1c3('0x1a'),_0x437724,'request\x20sent');_0x44b443(_0x292f17[_0xb1c3('0x1c')][_0xb1c3('0x1b')]);}})[_0xb1c3('0x1d')](function(_0x2184c6){logger['error'](_0xb1c3('0x1a'),_0x437724,_0x2184c6);_0x2d77de(_0x2184c6);});});}exports[_0xb1c3('0x1e')]=function(_0x327d4e){var _0x1a16a0=this;return new Promise(function(_0x193ed5,_0x3d0559){return db[_0xb1c3('0x1f')]['findAll']({'raw':_0x327d4e[_0xb1c3('0x20')]?_0x327d4e[_0xb1c3('0x20')]['raw']===undefined?!![]:![]:!![],'where':_0x327d4e[_0xb1c3('0x20')]?_0x327d4e[_0xb1c3('0x20')]['where']||null:null,'attributes':_0x327d4e['options']?_0x327d4e[_0xb1c3('0x20')][_0xb1c3('0x21')]||null:null,'limit':_0x327d4e['options']?_0x327d4e[_0xb1c3('0x20')]['limit']||null:null,'include':_0x327d4e['options']?_0x327d4e[_0xb1c3('0x20')][_0xb1c3('0x22')]?_[_0xb1c3('0x23')](_0x327d4e[_0xb1c3('0x20')]['include'],function(_0x1e8a99){return{'model':db[_0x1e8a99['model']],'as':_0x1e8a99['as'],'attributes':_0x1e8a99['attributes'],'include':_0x1e8a99[_0xb1c3('0x22')]?_['map'](_0x1e8a99[_0xb1c3('0x22')],function(_0x47b99f){return{'model':db[_0x47b99f[_0xb1c3('0x24')]],'as':_0x47b99f['as'],'attributes':_0x47b99f[_0xb1c3('0x21')],'include':_0x47b99f[_0xb1c3('0x22')]?_[_0xb1c3('0x23')](_0x47b99f[_0xb1c3('0x22')],function(_0x28aede){return{'model':db[_0x28aede[_0xb1c3('0x24')]],'as':_0x28aede['as'],'attributes':_0x28aede['attributes']};}):[]};}):[]};}):[]:[]})[_0xb1c3('0x12')](function(_0x3d40dc){logger[_0xb1c3('0x13')]('GetFaxQueue',_0x327d4e);logger[_0xb1c3('0x15')](_0xb1c3('0x1e'),_0x327d4e,JSON[_0xb1c3('0x17')](_0x3d40dc));_0x193ed5(_0x3d40dc);})[_0xb1c3('0x1d')](function(_0x343ea2){logger[_0xb1c3('0x18')]('GetFaxQueue',_0x343ea2[_0xb1c3('0x1b')],_0x327d4e);_0x3d0559(_0x1a16a0[_0xb1c3('0x18')](0x1f4,_0x343ea2[_0xb1c3('0x1b')]));});});};exports[_0xb1c3('0x25')]=function(_0x1983cb){var _0x4a9610=this;return new Promise(function(_0x349e6d,_0x432619){return db[_0xb1c3('0x1f')][_0xb1c3('0x26')]({'raw':_0x1983cb[_0xb1c3('0x20')]?_0x1983cb[_0xb1c3('0x20')][_0xb1c3('0x27')]===undefined?!![]:![]:!![],'where':_0x1983cb[_0xb1c3('0x20')]?_0x1983cb[_0xb1c3('0x20')]['where']||null:null,'attributes':_0x1983cb['options']?_0x1983cb[_0xb1c3('0x20')][_0xb1c3('0x21')]||null:null,'include':_0x1983cb['options']?_0x1983cb[_0xb1c3('0x20')][_0xb1c3('0x22')]?_[_0xb1c3('0x23')](_0x1983cb[_0xb1c3('0x20')]['include'],function(_0x3ed882){return{'model':db[_0x3ed882[_0xb1c3('0x24')]],'as':_0x3ed882['as'],'attributes':_0x3ed882['attributes'],'include':_0x3ed882[_0xb1c3('0x22')]?_[_0xb1c3('0x23')](_0x3ed882[_0xb1c3('0x22')],function(_0x13887c){return{'model':db[_0x13887c['model']],'as':_0x13887c['as'],'attributes':_0x13887c[_0xb1c3('0x21')],'include':_0x13887c[_0xb1c3('0x22')]?_['map'](_0x13887c[_0xb1c3('0x22')],function(_0x1fe968){return{'model':db[_0x1fe968[_0xb1c3('0x24')]],'as':_0x1fe968['as'],'attributes':_0x1fe968[_0xb1c3('0x21')]};}):[]};}):[]};}):[]:[]})[_0xb1c3('0x12')](function(_0x37b9d6){logger[_0xb1c3('0x13')](_0xb1c3('0x25'),_0x1983cb);logger['debug'](_0xb1c3('0x25'),_0x1983cb,JSON[_0xb1c3('0x17')](_0x37b9d6));_0x349e6d(_0x37b9d6);})['catch'](function(_0xd4aee8){logger['error'](_0xb1c3('0x25'),_0xd4aee8[_0xb1c3('0x1b')],_0x1983cb);_0x432619(_0x4a9610['error'](0x1f4,_0xd4aee8[_0xb1c3('0x1b')]));});});};
\ No newline at end of file
index bec22c8..db1f08b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7de4=['update','emit','removeListener','length','faxQueue:','./faxQueue.events','remove'];(function(_0x413b4d,_0xa3459c){var _0x8b810a=function(_0x22d441){while(--_0x22d441){_0x413b4d['push'](_0x413b4d['shift']());}};_0x8b810a(++_0xa3459c);}(_0x7de4,0xb4));var _0x47de=function(_0x3519b7,_0x2aee79){_0x3519b7=_0x3519b7-0x0;var _0x4356bd=_0x7de4[_0x3519b7];return _0x4356bd;};'use strict';var FaxQueueEvents=require(_0x47de('0x0'));var events=['save',_0x47de('0x1'),_0x47de('0x2')];function createListener(_0x50ced9,_0x2cbcf7){return function(_0x17aa08){_0x2cbcf7[_0x47de('0x3')](_0x50ced9,_0x17aa08);};}function removeListener(_0x23d1ea,_0x12ecf9){return function(){FaxQueueEvents[_0x47de('0x4')](_0x23d1ea,_0x12ecf9);};}exports['register']=function(_0x51864e){for(var _0x36a9bc=0x0,_0x5500ca=events[_0x47de('0x5')];_0x36a9bc<_0x5500ca;_0x36a9bc++){var _0x2c3c19=events[_0x36a9bc];var _0x540c65=createListener(_0x47de('0x6')+_0x2c3c19,_0x51864e);FaxQueueEvents['on'](_0x2c3c19,_0x540c65);}};
\ No newline at end of file
+var _0x2954=['length','faxQueue:','save','remove','update','removeListener','register'];(function(_0x2f1b6a,_0xa7dc34){var _0xf52396=function(_0xc0b056){while(--_0xc0b056){_0x2f1b6a['push'](_0x2f1b6a['shift']());}};_0xf52396(++_0xa7dc34);}(_0x2954,0x1de));var _0x4295=function(_0x219d87,_0x1cb6f7){_0x219d87=_0x219d87-0x0;var _0x22823d=_0x2954[_0x219d87];return _0x22823d;};'use strict';var FaxQueueEvents=require('./faxQueue.events');var events=[_0x4295('0x0'),_0x4295('0x1'),_0x4295('0x2')];function createListener(_0x34c08a,_0x38bc9a){return function(_0x534756){_0x38bc9a['emit'](_0x34c08a,_0x534756);};}function removeListener(_0x2a32cb,_0x361b54){return function(){FaxQueueEvents[_0x4295('0x3')](_0x2a32cb,_0x361b54);};}exports[_0x4295('0x4')]=function(_0x5543e4){for(var _0x3a4390=0x0,_0x258911=events[_0x4295('0x5')];_0x3a4390<_0x258911;_0x3a4390++){var _0x5e4db1=events[_0x3a4390];var _0x7296ec=createListener(_0x4295('0x6')+_0x5e4db1,_0x5543e4);FaxQueueEvents['on'](_0x5e4db1,_0x7296ec);}};
\ No newline at end of file
index ac1e48c..0220cf3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f6f=['get','isAuthenticated','index','describe','/:id','show','getMembers','/:id/teams','getTeams','/:id/users','getAgents','create','post','addTeams','put','update','delete','removeTeams','removeAgents','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./faxQueue.controller'];(function(_0x5a4d4e,_0x550a83){var _0x276ce5=function(_0x5d8358){while(--_0x5d8358){_0x5a4d4e['push'](_0x5a4d4e['shift']());}};_0x276ce5(++_0x550a83);}(_0x5f6f,0x1ef));var _0xf5f6=function(_0x515451,_0x3173d1){_0x515451=_0x515451-0x0;var _0x461422=_0x5f6f[_0x515451];return _0x461422;};'use strict';var multer=require(_0xf5f6('0x0'));var util=require(_0xf5f6('0x1'));var path=require(_0xf5f6('0x2'));var timeout=require(_0xf5f6('0x3'));var express=require(_0xf5f6('0x4'));var router=express['Router']();var fs_extra=require(_0xf5f6('0x5'));var auth=require(_0xf5f6('0x6'));var interaction=require(_0xf5f6('0x7'));var config=require('../../config/environment');var controller=require(_0xf5f6('0x8'));router[_0xf5f6('0x9')]('/',auth[_0xf5f6('0xa')](),controller[_0xf5f6('0xb')]);router['get']('/describe',auth[_0xf5f6('0xa')](),controller[_0xf5f6('0xc')]);router[_0xf5f6('0x9')](_0xf5f6('0xd'),auth[_0xf5f6('0xa')](),controller[_0xf5f6('0xe')]);router['get']('/:id/members',auth[_0xf5f6('0xa')](),controller[_0xf5f6('0xf')]);router['get'](_0xf5f6('0x10'),auth[_0xf5f6('0xa')](),controller[_0xf5f6('0x11')]);router[_0xf5f6('0x9')](_0xf5f6('0x12'),auth['isAuthenticated'](),controller[_0xf5f6('0x13')]);router['post']('/',auth[_0xf5f6('0xa')](),controller[_0xf5f6('0x14')]);router[_0xf5f6('0x15')](_0xf5f6('0x10'),auth['isAuthenticated'](),controller[_0xf5f6('0x16')]);router[_0xf5f6('0x15')](_0xf5f6('0x12'),auth[_0xf5f6('0xa')](),controller['addAgents']);router[_0xf5f6('0x17')](_0xf5f6('0xd'),auth[_0xf5f6('0xa')](),controller[_0xf5f6('0x18')]);router['delete']('/:id',auth[_0xf5f6('0xa')](),controller['destroy']);router[_0xf5f6('0x19')]('/:id/teams',auth[_0xf5f6('0xa')](),controller[_0xf5f6('0x1a')]);router[_0xf5f6('0x19')](_0xf5f6('0x12'),auth[_0xf5f6('0xa')](),controller[_0xf5f6('0x1b')]);module['exports']=router;
\ No newline at end of file
+var _0xf072=['util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','./faxQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','/:id/teams','getTeams','getAgents','create','post','addTeams','/:id/users','addAgents','update','delete','destroy','removeAgents','exports','multer'];(function(_0x165194,_0x31a93e){var _0x2975f0=function(_0x49ae22){while(--_0x49ae22){_0x165194['push'](_0x165194['shift']());}};_0x2975f0(++_0x31a93e);}(_0xf072,0x1cf));var _0x2f07=function(_0x5a369d,_0x140b74){_0x5a369d=_0x5a369d-0x0;var _0x22cfba=_0xf072[_0x5a369d];return _0x22cfba;};'use strict';var multer=require(_0x2f07('0x0'));var util=require(_0x2f07('0x1'));var path=require(_0x2f07('0x2'));var timeout=require('connect-timeout');var express=require(_0x2f07('0x3'));var router=express['Router']();var fs_extra=require(_0x2f07('0x4'));var auth=require(_0x2f07('0x5'));var interaction=require(_0x2f07('0x6'));var config=require('../../config/environment');var controller=require(_0x2f07('0x7'));router[_0x2f07('0x8')]('/',auth[_0x2f07('0x9')](),controller[_0x2f07('0xa')]);router[_0x2f07('0x8')](_0x2f07('0xb'),auth[_0x2f07('0x9')](),controller[_0x2f07('0xc')]);router[_0x2f07('0x8')](_0x2f07('0xd'),auth[_0x2f07('0x9')](),controller[_0x2f07('0xe')]);router[_0x2f07('0x8')](_0x2f07('0xf'),auth[_0x2f07('0x9')](),controller['getMembers']);router[_0x2f07('0x8')](_0x2f07('0x10'),auth[_0x2f07('0x9')](),controller[_0x2f07('0x11')]);router['get']('/:id/users',auth[_0x2f07('0x9')](),controller[_0x2f07('0x12')]);router['post']('/',auth[_0x2f07('0x9')](),controller[_0x2f07('0x13')]);router[_0x2f07('0x14')]('/:id/teams',auth[_0x2f07('0x9')](),controller[_0x2f07('0x15')]);router[_0x2f07('0x14')](_0x2f07('0x16'),auth[_0x2f07('0x9')](),controller[_0x2f07('0x17')]);router['put'](_0x2f07('0xd'),auth['isAuthenticated'](),controller[_0x2f07('0x18')]);router[_0x2f07('0x19')](_0x2f07('0xd'),auth[_0x2f07('0x9')](),controller[_0x2f07('0x1a')]);router[_0x2f07('0x19')](_0x2f07('0x10'),auth[_0x2f07('0x9')](),controller['removeTeams']);router[_0x2f07('0x19')]('/:id/users',auth[_0x2f07('0x9')](),controller[_0x2f07('0x1b')]);module[_0x2f07('0x1c')]=router;
\ No newline at end of file
index 50cceb9..41a9a7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc76=['moment','exports','STRING','DATE'];(function(_0x57a1e7,_0x1b55e4){var _0x98e9ef=function(_0x405835){while(--_0x405835){_0x57a1e7['push'](_0x57a1e7['shift']());}};_0x98e9ef(++_0x1b55e4);}(_0xcc76,0x78));var _0x6cc7=function(_0x2f2a83,_0x9f9f6f){_0x2f2a83=_0x2f2a83-0x0;var _0x5bf5f9=_0xcc76[_0x2f2a83];return _0x5bf5f9;};'use strict';var moment=require(_0x6cc7('0x0'));var Sequelize=require('sequelize');module[_0x6cc7('0x1')]={'uniqueid':{'type':Sequelize[_0x6cc7('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x6cc7('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x6cc7('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x6cc7('0x2')]}};
\ No newline at end of file
+var _0x643e=['exports','STRING','DATE','moment'];(function(_0x5e7990,_0x20fcbe){var _0x5d5b2e=function(_0x1cce14){while(--_0x1cce14){_0x5e7990['push'](_0x5e7990['shift']());}};_0x5d5b2e(++_0x20fcbe);}(_0x643e,0x193));var _0xe643=function(_0x384262,_0x1f84f3){_0x384262=_0x384262-0x0;var _0x5086cf=_0x643e[_0x384262];return _0x5086cf;};'use strict';var moment=require(_0xe643('0x0'));var Sequelize=require('sequelize');module[_0xe643('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xe643('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xe643('0x3')]},'exitAt':{'type':Sequelize[_0xe643('0x3')]},'reason':{'type':Sequelize[_0xe643('0x2')]}};
\ No newline at end of file
index 0503e8c..997d75b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9990=['where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','rawAttributes','create','body','find','params','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','reject','update','then','error','name','send','index','map','FaxQueueReport','fieldName','type','keys','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x9990,0xf6));var _0x0999=function(_0x3d96c7,_0x25955e){_0x3d96c7=_0x3d96c7-0x0;var _0x44adce=_0x9990[_0x3d96c7];return _0x44adce;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0999('0x0'));var zipdir=require(_0x0999('0x1'));var jsonpatch=require(_0x0999('0x2'));var rp=require(_0x0999('0x3'));var moment=require(_0x0999('0x4'));var BPromise=require(_0x0999('0x5'));var Mustache=require(_0x0999('0x6'));var util=require(_0x0999('0x7'));var path=require('path');var sox=require(_0x0999('0x8'));var csv=require(_0x0999('0x9'));var ejs=require(_0x0999('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0999('0xb'));var squel=require(_0x0999('0xc'));var crypto=require(_0x0999('0xd'));var jsforce=require(_0x0999('0xe'));var deskjs=require(_0x0999('0xf'));var toCsv=require(_0x0999('0x9'));var querystring=require(_0x0999('0x10'));var Papa=require('papaparse');var Redis=require(_0x0999('0x11'));var authService=require(_0x0999('0x12'));var qs=require(_0x0999('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0999('0x14'));var logger=require(_0x0999('0x15'))(_0x0999('0x16'));var utils=require('../../config/utils');var config=require(_0x0999('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x0999('0x18'))['db'];function respondWithStatusCode(_0x36133e,_0x2ea251){_0x2ea251=_0x2ea251||0xcc;return function(_0x428b59){if(_0x428b59){return _0x36133e[_0x0999('0x19')](_0x2ea251);}return _0x36133e['status'](_0x2ea251)[_0x0999('0x1a')]();};}function respondWithResult(_0x2fa8e0,_0x39cba9){_0x39cba9=_0x39cba9||0xc8;return function(_0x4011bf){if(_0x4011bf){return _0x2fa8e0[_0x0999('0x1b')](_0x39cba9)['json'](_0x4011bf);}};}function respondWithFilteredResult(_0x137083,_0x3757ae){return function(_0x6bf882){if(_0x6bf882){var _0x4e4e53=typeof _0x3757ae[_0x0999('0x1c')]===_0x0999('0x1d')&&typeof _0x3757ae[_0x0999('0x1e')]==='undefined';var _0xa82828=_0x6bf882[_0x0999('0x1f')];var _0x4f6440=_0x4e4e53?0x0:_0x3757ae[_0x0999('0x1c')];var _0x5b14a3=_0x4e4e53?_0x6bf882['count']:_0x3757ae[_0x0999('0x1c')]+_0x3757ae[_0x0999('0x1e')];var _0x220cc3;if(_0x5b14a3>=_0xa82828){_0x5b14a3=_0xa82828;_0x220cc3=0xc8;}else{_0x220cc3=0xce;}_0x137083[_0x0999('0x1b')](_0x220cc3);return _0x137083[_0x0999('0x20')](_0x0999('0x21'),_0x4f6440+'-'+_0x5b14a3+'/'+_0xa82828)[_0x0999('0x22')](_0x6bf882);}return null;};}function patchUpdates(_0x113017){return function(_0x8a5ef6){try{jsonpatch['apply'](_0x8a5ef6,_0x113017,!![]);}catch(_0xe118ec){return BPromise[_0x0999('0x23')](_0xe118ec);}return _0x8a5ef6['save']();};}function saveUpdates(_0x505372,_0x19ddc0){return function(_0xf2820c){if(_0xf2820c){return _0xf2820c[_0x0999('0x24')](_0x505372)[_0x0999('0x25')](function(_0x6c9bd9){return _0x6c9bd9;});}return null;};}function removeEntity(_0x15a7e8,_0x4d4f38){return function(_0x20ba88){if(_0x20ba88){return _0x20ba88['destroy']()[_0x0999('0x25')](function(){_0x15a7e8['status'](0xcc)[_0x0999('0x1a')]();});}};}function handleEntityNotFound(_0x106669,_0x273163){return function(_0x317127){if(!_0x317127){_0x106669['sendStatus'](0x194);}return _0x317127;};}function handleError(_0x55c8b3,_0x1cc734){_0x1cc734=_0x1cc734||0x1f4;return function(_0x5e5681){logger[_0x0999('0x26')](_0x5e5681['stack']);if(_0x5e5681[_0x0999('0x27')]){delete _0x5e5681[_0x0999('0x27')];}_0x55c8b3[_0x0999('0x1b')](_0x1cc734)[_0x0999('0x28')](_0x5e5681);};}exports[_0x0999('0x29')]=function(_0x155d79,_0x3cf0d3){var _0x5c9fb4={},_0x1df4cf={},_0x199df7={'count':0x0,'rows':[]};var _0x36cd03=_[_0x0999('0x2a')](db[_0x0999('0x2b')]['rawAttributes'],function(_0x106bf9){return{'name':_0x106bf9[_0x0999('0x2c')],'type':_0x106bf9[_0x0999('0x2d')]['key']};});_0x1df4cf['model']=_[_0x0999('0x2a')](_0x36cd03,_0x0999('0x27'));_0x1df4cf['query']=_[_0x0999('0x2e')](_0x155d79[_0x0999('0x2f')]);_0x1df4cf[_0x0999('0x30')]=_['intersection'](_0x1df4cf[_0x0999('0x31')],_0x1df4cf['query']);_0x5c9fb4[_0x0999('0x32')]=_[_0x0999('0x33')](_0x1df4cf[_0x0999('0x31')],qs[_0x0999('0x34')](_0x155d79[_0x0999('0x2f')]['fields']));_0x5c9fb4['attributes']=_0x5c9fb4[_0x0999('0x32')][_0x0999('0x35')]?_0x5c9fb4[_0x0999('0x32')]:_0x1df4cf[_0x0999('0x31')];if(!_0x155d79['query'][_0x0999('0x36')](_0x0999('0x37'))){_0x5c9fb4['limit']=qs[_0x0999('0x1e')](_0x155d79[_0x0999('0x2f')][_0x0999('0x1e')]);_0x5c9fb4[_0x0999('0x1c')]=qs[_0x0999('0x1c')](_0x155d79[_0x0999('0x2f')]['offset']);}_0x5c9fb4[_0x0999('0x38')]=qs['sort'](_0x155d79[_0x0999('0x2f')][_0x0999('0x39')]);_0x5c9fb4[_0x0999('0x3a')]=qs['filters'](_[_0x0999('0x3b')](_0x155d79[_0x0999('0x2f')],_0x1df4cf[_0x0999('0x30')]),_0x36cd03);if(_0x155d79[_0x0999('0x2f')][_0x0999('0x3c')]){_0x5c9fb4[_0x0999('0x3a')]=_[_0x0999('0x3d')](_0x5c9fb4[_0x0999('0x3a')],{'$or':_[_0x0999('0x2a')](_0x36cd03,function(_0x2aa04c){if(_0x2aa04c['type']!==_0x0999('0x3e')){var _0x22da38={};_0x22da38[_0x2aa04c['name']]={'$like':'%'+_0x155d79[_0x0999('0x2f')][_0x0999('0x3c')]+'%'};return _0x22da38;}})});}_0x5c9fb4=_[_0x0999('0x3d')]({},_0x5c9fb4,_0x155d79[_0x0999('0x3f')]);var _0x41da42={'where':_0x5c9fb4['where']};return db[_0x0999('0x2b')][_0x0999('0x1f')](_0x41da42)[_0x0999('0x25')](function(_0x57cdf7){_0x199df7[_0x0999('0x1f')]=_0x57cdf7;if(_0x155d79[_0x0999('0x2f')][_0x0999('0x40')]){_0x5c9fb4[_0x0999('0x41')]=[{'all':!![]}];}return db[_0x0999('0x2b')][_0x0999('0x42')](_0x5c9fb4);})[_0x0999('0x25')](function(_0x315ca3){_0x199df7[_0x0999('0x43')]=_0x315ca3;return _0x199df7;})[_0x0999('0x25')](respondWithFilteredResult(_0x3cf0d3,_0x5c9fb4))[_0x0999('0x44')](handleError(_0x3cf0d3,null));};exports[_0x0999('0x45')]=function(_0x5aa926,_0xc632f4){var _0x266982={'raw':!![],'where':{'id':_0x5aa926['params']['id']}},_0x47edb3={};_0x47edb3[_0x0999('0x31')]=_['keys'](db['FaxQueueReport'][_0x0999('0x46')]);_0x47edb3[_0x0999('0x2f')]=_[_0x0999('0x2e')](_0x5aa926[_0x0999('0x2f')]);_0x47edb3[_0x0999('0x30')]=_[_0x0999('0x33')](_0x47edb3[_0x0999('0x31')],_0x47edb3[_0x0999('0x2f')]);_0x266982[_0x0999('0x32')]=_[_0x0999('0x33')](_0x47edb3[_0x0999('0x31')],qs['fields'](_0x5aa926['query'][_0x0999('0x34')]));_0x266982[_0x0999('0x32')]=_0x266982[_0x0999('0x32')][_0x0999('0x35')]?_0x266982[_0x0999('0x32')]:_0x47edb3[_0x0999('0x31')];if(_0x5aa926[_0x0999('0x2f')][_0x0999('0x40')]){_0x266982['include']=[{'all':!![]}];}_0x266982=_['merge']({},_0x266982,_0x5aa926[_0x0999('0x3f')]);return db[_0x0999('0x2b')]['find'](_0x266982)[_0x0999('0x25')](handleEntityNotFound(_0xc632f4,null))['then'](respondWithResult(_0xc632f4,null))['catch'](handleError(_0xc632f4,null));};exports[_0x0999('0x47')]=function(_0x1ddd6e,_0x433a6d){return db[_0x0999('0x2b')][_0x0999('0x47')](_0x1ddd6e[_0x0999('0x48')],{})[_0x0999('0x25')](respondWithResult(_0x433a6d,0xc9))[_0x0999('0x44')](handleError(_0x433a6d,null));};exports[_0x0999('0x24')]=function(_0x508e42,_0x2ee544){if(_0x508e42[_0x0999('0x48')]['id']){delete _0x508e42[_0x0999('0x48')]['id'];}return db[_0x0999('0x2b')][_0x0999('0x49')]({'where':{'id':_0x508e42[_0x0999('0x4a')]['id']}})[_0x0999('0x25')](handleEntityNotFound(_0x2ee544,null))[_0x0999('0x25')](saveUpdates(_0x508e42[_0x0999('0x48')],null))['then'](respondWithResult(_0x2ee544,null))[_0x0999('0x44')](handleError(_0x2ee544,null));};exports['destroy']=function(_0x28924a,_0x218092){return db[_0x0999('0x2b')][_0x0999('0x49')]({'where':{'id':_0x28924a[_0x0999('0x4a')]['id']}})['then'](handleEntityNotFound(_0x218092,null))[_0x0999('0x25')](removeEntity(_0x218092,null))[_0x0999('0x44')](handleError(_0x218092,null));};exports[_0x0999('0x4b')]=function(_0x17942e,_0x3f42f8){return db[_0x0999('0x2b')]['describe']()[_0x0999('0x25')](respondWithResult(_0x3f42f8,null))[_0x0999('0x44')](handleError(_0x3f42f8,null));};
\ No newline at end of file
+var _0x50c1=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','save','update','destroy','then','stack','name','send','index','map','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','sort','where','filters','pick','filter','merge','VIRTUAL','FaxQueueReport','findAll','rows','show','params','rawAttributes','includeAll','include','options','catch','create','body','find','describe','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x1b37c6,_0x409002){var _0x3c5ca8=function(_0x408f2b){while(--_0x408f2b){_0x1b37c6['push'](_0x1b37c6['shift']());}};_0x3c5ca8(++_0x409002);}(_0x50c1,0x1a5));var _0x150c=function(_0x22b8c3,_0x59faa0){_0x22b8c3=_0x22b8c3-0x0;var _0x19d03b=_0x50c1[_0x22b8c3];return _0x19d03b;};'use strict';var emlformat=require(_0x150c('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x150c('0x1'));var rp=require(_0x150c('0x2'));var moment=require(_0x150c('0x3'));var BPromise=require(_0x150c('0x4'));var Mustache=require(_0x150c('0x5'));var util=require(_0x150c('0x6'));var path=require(_0x150c('0x7'));var sox=require(_0x150c('0x8'));var csv=require(_0x150c('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x150c('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x150c('0xb'));var deskjs=require(_0x150c('0xc'));var toCsv=require(_0x150c('0x9'));var querystring=require(_0x150c('0xd'));var Papa=require(_0x150c('0xe'));var Redis=require(_0x150c('0xf'));var authService=require(_0x150c('0x10'));var qs=require(_0x150c('0x11'));var as=require(_0x150c('0x12'));var hardwareService=require(_0x150c('0x13'));var logger=require('../../config/logger')(_0x150c('0x14'));var utils=require(_0x150c('0x15'));var config=require(_0x150c('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x150c('0x17'))['db'];function respondWithStatusCode(_0x4e2f73,_0x4c513d){_0x4c513d=_0x4c513d||0xcc;return function(_0x2c9a8a){if(_0x2c9a8a){return _0x4e2f73[_0x150c('0x18')](_0x4c513d);}return _0x4e2f73[_0x150c('0x19')](_0x4c513d)[_0x150c('0x1a')]();};}function respondWithResult(_0x293b98,_0x17205c){_0x17205c=_0x17205c||0xc8;return function(_0x333600){if(_0x333600){return _0x293b98[_0x150c('0x19')](_0x17205c)[_0x150c('0x1b')](_0x333600);}};}function respondWithFilteredResult(_0x3c6772,_0x11bc9e){return function(_0x2c0626){if(_0x2c0626){var _0x5c657f=typeof _0x11bc9e[_0x150c('0x1c')]==='undefined'&&typeof _0x11bc9e[_0x150c('0x1d')]==='undefined';var _0x59ae9e=_0x2c0626[_0x150c('0x1e')];var _0x40c0d0=_0x5c657f?0x0:_0x11bc9e[_0x150c('0x1c')];var _0x3c5a84=_0x5c657f?_0x2c0626['count']:_0x11bc9e[_0x150c('0x1c')]+_0x11bc9e[_0x150c('0x1d')];var _0x9a9d64;if(_0x3c5a84>=_0x59ae9e){_0x3c5a84=_0x59ae9e;_0x9a9d64=0xc8;}else{_0x9a9d64=0xce;}_0x3c6772[_0x150c('0x19')](_0x9a9d64);return _0x3c6772[_0x150c('0x1f')](_0x150c('0x20'),_0x40c0d0+'-'+_0x3c5a84+'/'+_0x59ae9e)['json'](_0x2c0626);}return null;};}function patchUpdates(_0x220c15){return function(_0x365de8){try{jsonpatch['apply'](_0x365de8,_0x220c15,!![]);}catch(_0x12e158){return BPromise['reject'](_0x12e158);}return _0x365de8[_0x150c('0x21')]();};}function saveUpdates(_0x25503b,_0x29a2f){return function(_0x1c41f4){if(_0x1c41f4){return _0x1c41f4[_0x150c('0x22')](_0x25503b)['then'](function(_0x68b03b){return _0x68b03b;});}return null;};}function removeEntity(_0x3f9044,_0x332173){return function(_0x188536){if(_0x188536){return _0x188536[_0x150c('0x23')]()[_0x150c('0x24')](function(){_0x3f9044[_0x150c('0x19')](0xcc)[_0x150c('0x1a')]();});}};}function handleEntityNotFound(_0x3b1ce6,_0x54d11c){return function(_0x54b8dd){if(!_0x54b8dd){_0x3b1ce6[_0x150c('0x18')](0x194);}return _0x54b8dd;};}function handleError(_0x27aba8,_0x29a87c){_0x29a87c=_0x29a87c||0x1f4;return function(_0x5daf46){logger['error'](_0x5daf46[_0x150c('0x25')]);if(_0x5daf46[_0x150c('0x26')]){delete _0x5daf46[_0x150c('0x26')];}_0x27aba8[_0x150c('0x19')](_0x29a87c)[_0x150c('0x27')](_0x5daf46);};}exports[_0x150c('0x28')]=function(_0x420628,_0x522c2e){var _0x4b345f={},_0xbf4922={},_0x4021ea={'count':0x0,'rows':[]};var _0x3234ea=_[_0x150c('0x29')](db['FaxQueueReport']['rawAttributes'],function(_0x3acbc8){return{'name':_0x3acbc8[_0x150c('0x2a')],'type':_0x3acbc8[_0x150c('0x2b')]['key']};});_0xbf4922[_0x150c('0x2c')]=_['map'](_0x3234ea,_0x150c('0x26'));_0xbf4922[_0x150c('0x2d')]=_[_0x150c('0x2e')](_0x420628['query']);_0xbf4922['filters']=_[_0x150c('0x2f')](_0xbf4922['model'],_0xbf4922[_0x150c('0x2d')]);_0x4b345f[_0x150c('0x30')]=_[_0x150c('0x2f')](_0xbf4922[_0x150c('0x2c')],qs[_0x150c('0x31')](_0x420628[_0x150c('0x2d')][_0x150c('0x31')]));_0x4b345f['attributes']=_0x4b345f[_0x150c('0x30')][_0x150c('0x32')]?_0x4b345f['attributes']:_0xbf4922[_0x150c('0x2c')];if(!_0x420628[_0x150c('0x2d')][_0x150c('0x33')]('nolimit')){_0x4b345f[_0x150c('0x1d')]=qs[_0x150c('0x1d')](_0x420628[_0x150c('0x2d')]['limit']);_0x4b345f[_0x150c('0x1c')]=qs['offset'](_0x420628['query'][_0x150c('0x1c')]);}_0x4b345f['order']=qs['sort'](_0x420628[_0x150c('0x2d')][_0x150c('0x34')]);_0x4b345f[_0x150c('0x35')]=qs[_0x150c('0x36')](_[_0x150c('0x37')](_0x420628[_0x150c('0x2d')],_0xbf4922[_0x150c('0x36')]),_0x3234ea);if(_0x420628['query'][_0x150c('0x38')]){_0x4b345f[_0x150c('0x35')]=_[_0x150c('0x39')](_0x4b345f['where'],{'$or':_[_0x150c('0x29')](_0x3234ea,function(_0x401f9c){if(_0x401f9c[_0x150c('0x2b')]!==_0x150c('0x3a')){var _0x36afad={};_0x36afad[_0x401f9c['name']]={'$like':'%'+_0x420628[_0x150c('0x2d')][_0x150c('0x38')]+'%'};return _0x36afad;}})});}_0x4b345f=_[_0x150c('0x39')]({},_0x4b345f,_0x420628['options']);var _0x172787={'where':_0x4b345f[_0x150c('0x35')]};return db[_0x150c('0x3b')][_0x150c('0x1e')](_0x172787)[_0x150c('0x24')](function(_0x534d75){_0x4021ea[_0x150c('0x1e')]=_0x534d75;if(_0x420628['query']['includeAll']){_0x4b345f['include']=[{'all':!![]}];}return db[_0x150c('0x3b')][_0x150c('0x3c')](_0x4b345f);})[_0x150c('0x24')](function(_0x4503d8){_0x4021ea[_0x150c('0x3d')]=_0x4503d8;return _0x4021ea;})[_0x150c('0x24')](respondWithFilteredResult(_0x522c2e,_0x4b345f))['catch'](handleError(_0x522c2e,null));};exports[_0x150c('0x3e')]=function(_0x5c897a,_0x36f85c){var _0x16bc55={'raw':!![],'where':{'id':_0x5c897a[_0x150c('0x3f')]['id']}},_0x2a9ce4={};_0x2a9ce4[_0x150c('0x2c')]=_[_0x150c('0x2e')](db[_0x150c('0x3b')][_0x150c('0x40')]);_0x2a9ce4[_0x150c('0x2d')]=_[_0x150c('0x2e')](_0x5c897a['query']);_0x2a9ce4['filters']=_['intersection'](_0x2a9ce4['model'],_0x2a9ce4['query']);_0x16bc55[_0x150c('0x30')]=_[_0x150c('0x2f')](_0x2a9ce4[_0x150c('0x2c')],qs['fields'](_0x5c897a[_0x150c('0x2d')]['fields']));_0x16bc55[_0x150c('0x30')]=_0x16bc55[_0x150c('0x30')][_0x150c('0x32')]?_0x16bc55[_0x150c('0x30')]:_0x2a9ce4[_0x150c('0x2c')];if(_0x5c897a[_0x150c('0x2d')][_0x150c('0x41')]){_0x16bc55[_0x150c('0x42')]=[{'all':!![]}];}_0x16bc55=_[_0x150c('0x39')]({},_0x16bc55,_0x5c897a[_0x150c('0x43')]);return db[_0x150c('0x3b')]['find'](_0x16bc55)['then'](handleEntityNotFound(_0x36f85c,null))['then'](respondWithResult(_0x36f85c,null))[_0x150c('0x44')](handleError(_0x36f85c,null));};exports[_0x150c('0x45')]=function(_0xdd0bb,_0x68a748){return db[_0x150c('0x3b')][_0x150c('0x45')](_0xdd0bb[_0x150c('0x46')],{})[_0x150c('0x24')](respondWithResult(_0x68a748,0xc9))[_0x150c('0x44')](handleError(_0x68a748,null));};exports['update']=function(_0x61eaaf,_0x5e5c5d){if(_0x61eaaf[_0x150c('0x46')]['id']){delete _0x61eaaf['body']['id'];}return db[_0x150c('0x3b')][_0x150c('0x47')]({'where':{'id':_0x61eaaf[_0x150c('0x3f')]['id']}})[_0x150c('0x24')](handleEntityNotFound(_0x5e5c5d,null))['then'](saveUpdates(_0x61eaaf[_0x150c('0x46')],null))[_0x150c('0x24')](respondWithResult(_0x5e5c5d,null))[_0x150c('0x44')](handleError(_0x5e5c5d,null));};exports[_0x150c('0x23')]=function(_0x22f54d,_0x610f61){return db[_0x150c('0x3b')][_0x150c('0x47')]({'where':{'id':_0x22f54d[_0x150c('0x3f')]['id']}})[_0x150c('0x24')](handleEntityNotFound(_0x610f61,null))[_0x150c('0x24')](removeEntity(_0x610f61,null))[_0x150c('0x44')](handleError(_0x610f61,null));};exports[_0x150c('0x48')]=function(_0x5c9062,_0x5961a5){return db['FaxQueueReport'][_0x150c('0x48')]()[_0x150c('0x24')](respondWithResult(_0x5961a5,null))['catch'](handleError(_0x5961a5,null));};
\ No newline at end of file
index ea15d31..f147e49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['report_fax_queue','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','FaxQueueReport'];(function(_0x3bf799,_0x24187e){var _0x1b1b52=function(_0x25a86e){while(--_0x25a86e){_0x3bf799['push'](_0x3bf799['shift']());}};_0x1b1b52(++_0x24187e);}(_0x7a54,0x106));var _0x47a5=function(_0x59ea6e,_0x7a3486){_0x59ea6e=_0x59ea6e-0x0;var _0x4a2bc9=_0x7a54[_0x59ea6e];return _0x4a2bc9;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x47a5('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1cb9=['api','moment','bluebird','path','rimraf','./faxQueueReport.attributes','exports','define','FaxQueueReport','uniqueid','lodash','../../config/logger'];(function(_0xc6be3a,_0x540e05){var _0x56a310=function(_0x50a144){while(--_0x50a144){_0xc6be3a['push'](_0xc6be3a['shift']());}};_0x56a310(++_0x540e05);}(_0x1cb9,0x14e));var _0x91cb=function(_0x5d2187,_0x3a0c1f){_0x5d2187=_0x5d2187-0x0;var _0x306c4c=_0x1cb9[_0x5d2187];return _0x306c4c;};'use strict';var _=require(_0x91cb('0x0'));var util=require('util');var logger=require(_0x91cb('0x1'))(_0x91cb('0x2'));var moment=require(_0x91cb('0x3'));var BPromise=require(_0x91cb('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x91cb('0x5'));var rimraf=require(_0x91cb('0x6'));var config=require('../../config/environment');var attributes=require(_0x91cb('0x7'));module[_0x91cb('0x8')]=function(_0x186dc3,_0x28543e){return _0x186dc3[_0x91cb('0x9')](_0x91cb('0xa'),attributes,{'tableName':'report_fax_queue','paranoid':![],'indexes':[{'name':_0x91cb('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 1456573..a069acb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74bc=['ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','CreateFaxQueueReport','create','body','raw','debug','UpdateFaxQueueReport','update','options','lodash','util','moment','bluebird','randomstring'];(function(_0x1c654b,_0x51167d){var _0x5df324=function(_0x27ff21){while(--_0x27ff21){_0x1c654b['push'](_0x1c654b['shift']());}};_0x5df324(++_0x51167d);}(_0x74bc,0x18e));var _0xc74b=function(_0x33c030,_0x3376de){_0x33c030=_0x33c030-0x0;var _0x3793f1=_0x74bc[_0x33c030];return _0x3793f1;};'use strict';var _=require(_0xc74b('0x0'));var util=require(_0xc74b('0x1'));var moment=require(_0xc74b('0x2'));var BPromise=require(_0xc74b('0x3'));var rs=require(_0xc74b('0x4'));var fs=require('fs');var Redis=require(_0xc74b('0x5'));var db=require(_0xc74b('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xc74b('0x7'))(_0xc74b('0x8'));var config=require(_0xc74b('0x9'));var jayson=require(_0xc74b('0xa'));var client=jayson[_0xc74b('0xb')][_0xc74b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x590abc,_0x48f3dd,_0x45d399){return new BPromise(function(_0x3cf819,_0x4b36d2){return client[_0xc74b('0xd')](_0x590abc,_0x45d399)[_0xc74b('0xe')](function(_0x304db1){logger[_0xc74b('0xf')](_0xc74b('0x10'),_0x48f3dd,_0xc74b('0x11'));logger['debug']('FaxQueueReport,\x20%s,\x20%s,\x20%s',_0x48f3dd,_0xc74b('0x11'),JSON[_0xc74b('0x12')](_0x304db1));if(_0x304db1['error']){if(_0x304db1[_0xc74b('0x13')]['code']===0x1f4){logger['error'](_0xc74b('0x10'),_0x48f3dd,_0x304db1['error'][_0xc74b('0x14')]);return _0x4b36d2(_0x304db1['error']['message']);}logger[_0xc74b('0x13')](_0xc74b('0x10'),_0x48f3dd,_0x304db1[_0xc74b('0x13')][_0xc74b('0x14')]);return _0x3cf819(_0x304db1[_0xc74b('0x13')]['message']);}else{logger['info'](_0xc74b('0x10'),_0x48f3dd,_0xc74b('0x11'));_0x3cf819(_0x304db1[_0xc74b('0x15')][_0xc74b('0x14')]);}})[_0xc74b('0x16')](function(_0x6bc8be){logger[_0xc74b('0x13')](_0xc74b('0x10'),_0x48f3dd,_0x6bc8be);_0x4b36d2(_0x6bc8be);});});}exports[_0xc74b('0x17')]=function(_0x122abb){var _0x2d2167=this;return new Promise(function(_0x139f57,_0x433b8c){return db['FaxQueueReport'][_0xc74b('0x18')](_0x122abb[_0xc74b('0x19')],{'raw':_0x122abb['options']?_0x122abb['options'][_0xc74b('0x1a')]===undefined?!![]:![]:!![]})[_0xc74b('0xe')](function(_0x20d33f){logger['info'](_0xc74b('0x17'),_0x122abb);logger[_0xc74b('0x1b')](_0xc74b('0x17'),_0x122abb,JSON[_0xc74b('0x12')](_0x20d33f));_0x139f57(_0x20d33f);})[_0xc74b('0x16')](function(_0x226ee3){logger['error'](_0xc74b('0x17'),_0x226ee3[_0xc74b('0x14')],_0x122abb);_0x433b8c(_0x2d2167['error'](0x1f4,_0x226ee3[_0xc74b('0x14')]));});});};exports[_0xc74b('0x1c')]=function(_0x542403){var _0x432a06=this;return new Promise(function(_0x3cb9b8,_0x2778c){return db['FaxQueueReport'][_0xc74b('0x1d')](_0x542403[_0xc74b('0x19')],{'raw':_0x542403[_0xc74b('0x1e')]?_0x542403['options'][_0xc74b('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x542403[_0xc74b('0x1e')]?_0x542403[_0xc74b('0x1e')]['where']||null:null,'attributes':_0x542403['options']?_0x542403[_0xc74b('0x1e')]['attributes']||null:null,'limit':_0x542403[_0xc74b('0x1e')]?_0x542403['options']['limit']||null:null})[_0xc74b('0xe')](function(_0x15770f){logger[_0xc74b('0xf')](_0xc74b('0x1c'),_0x542403);logger[_0xc74b('0x1b')](_0xc74b('0x1c'),_0x542403,JSON[_0xc74b('0x12')](_0x15770f));_0x3cb9b8(_0x15770f);})[_0xc74b('0x16')](function(_0x120888){logger[_0xc74b('0x13')](_0xc74b('0x1c'),_0x120888[_0xc74b('0x14')],_0x542403);_0x2778c(_0x432a06[_0xc74b('0x13')](0x1f4,_0x120888[_0xc74b('0x14')]));});});};
\ No newline at end of file
+var _0xbfe5=['FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateFaxQueueReport','FaxQueueReport','create','options','debug','update','body','where','attributes','limit','lodash','util','moment','bluebird','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent'];(function(_0x253476,_0x16b31a){var _0x134271=function(_0x20623c){while(--_0x20623c){_0x253476['push'](_0x253476['shift']());}};_0x134271(++_0x16b31a);}(_0xbfe5,0x1d3));var _0x5bfe=function(_0x5db126,_0x488835){_0x5db126=_0x5db126-0x0;var _0x209760=_0xbfe5[_0x5db126];return _0x209760;};'use strict';var _=require(_0x5bfe('0x0'));var util=require(_0x5bfe('0x1'));var moment=require(_0x5bfe('0x2'));var BPromise=require(_0x5bfe('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5bfe('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x5bfe('0x5'))(_0x5bfe('0x6'));var config=require(_0x5bfe('0x7'));var jayson=require(_0x5bfe('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2e62e4,_0x3e1bb3,_0x254bf7){return new BPromise(function(_0xa38c8,_0x432e5e){return client['request'](_0x2e62e4,_0x254bf7)[_0x5bfe('0x9')](function(_0x535f95){logger[_0x5bfe('0xa')](_0x5bfe('0xb'),_0x3e1bb3,_0x5bfe('0xc'));logger['debug'](_0x5bfe('0xd'),_0x3e1bb3,'request\x20sent',JSON[_0x5bfe('0xe')](_0x535f95));if(_0x535f95[_0x5bfe('0xf')]){if(_0x535f95[_0x5bfe('0xf')][_0x5bfe('0x10')]===0x1f4){logger['error'](_0x5bfe('0xb'),_0x3e1bb3,_0x535f95[_0x5bfe('0xf')][_0x5bfe('0x11')]);return _0x432e5e(_0x535f95[_0x5bfe('0xf')][_0x5bfe('0x11')]);}logger[_0x5bfe('0xf')]('FaxQueueReport,\x20%s,\x20%s',_0x3e1bb3,_0x535f95[_0x5bfe('0xf')]['message']);return _0xa38c8(_0x535f95['error'][_0x5bfe('0x11')]);}else{logger[_0x5bfe('0xa')](_0x5bfe('0xb'),_0x3e1bb3,_0x5bfe('0xc'));_0xa38c8(_0x535f95[_0x5bfe('0x12')]['message']);}})[_0x5bfe('0x13')](function(_0x388e27){logger[_0x5bfe('0xf')](_0x5bfe('0xb'),_0x3e1bb3,_0x388e27);_0x432e5e(_0x388e27);});});}exports[_0x5bfe('0x14')]=function(_0x94947d){var _0x436680=this;return new Promise(function(_0x593beb,_0x4de669){return db[_0x5bfe('0x15')][_0x5bfe('0x16')](_0x94947d['body'],{'raw':_0x94947d[_0x5bfe('0x17')]?_0x94947d[_0x5bfe('0x17')]['raw']===undefined?!![]:![]:!![]})[_0x5bfe('0x9')](function(_0x48bef3){logger['info'](_0x5bfe('0x14'),_0x94947d);logger[_0x5bfe('0x18')](_0x5bfe('0x14'),_0x94947d,JSON[_0x5bfe('0xe')](_0x48bef3));_0x593beb(_0x48bef3);})['catch'](function(_0x3638f1){logger[_0x5bfe('0xf')](_0x5bfe('0x14'),_0x3638f1['message'],_0x94947d);_0x4de669(_0x436680[_0x5bfe('0xf')](0x1f4,_0x3638f1[_0x5bfe('0x11')]));});});};exports['UpdateFaxQueueReport']=function(_0x320521){var _0xb4c044=this;return new Promise(function(_0x4d4b24,_0x519884){return db[_0x5bfe('0x15')][_0x5bfe('0x19')](_0x320521[_0x5bfe('0x1a')],{'raw':_0x320521['options']?_0x320521['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x320521[_0x5bfe('0x17')]?_0x320521[_0x5bfe('0x17')][_0x5bfe('0x1b')]||null:null,'attributes':_0x320521[_0x5bfe('0x17')]?_0x320521[_0x5bfe('0x17')][_0x5bfe('0x1c')]||null:null,'limit':_0x320521[_0x5bfe('0x17')]?_0x320521[_0x5bfe('0x17')][_0x5bfe('0x1d')]||null:null})[_0x5bfe('0x9')](function(_0x424dec){logger[_0x5bfe('0xa')]('UpdateFaxQueueReport',_0x320521);logger[_0x5bfe('0x18')]('UpdateFaxQueueReport',_0x320521,JSON[_0x5bfe('0xe')](_0x424dec));_0x4d4b24(_0x424dec);})['catch'](function(_0x2a0bc5){logger['error']('UpdateFaxQueueReport',_0x2a0bc5[_0x5bfe('0x11')],_0x320521);_0x519884(_0xb4c044['error'](0x1f4,_0x2a0bc5[_0x5bfe('0x11')]));});});};
\ No newline at end of file
index fddd485..561ef1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5358=['index','describe','show','post','create','put','/:id','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','get','isAuthenticated'];(function(_0x43fa80,_0x502ab9){var _0x2b176c=function(_0x34e04c){while(--_0x34e04c){_0x43fa80['push'](_0x43fa80['shift']());}};_0x2b176c(++_0x502ab9);}(_0x5358,0xfd));var _0x8535=function(_0x5e7d52,_0x4ca4a2){_0x5e7d52=_0x5e7d52-0x0;var _0x397ce8=_0x5358[_0x5e7d52];return _0x397ce8;};'use strict';var multer=require(_0x8535('0x0'));var util=require('util');var path=require(_0x8535('0x1'));var timeout=require(_0x8535('0x2'));var express=require(_0x8535('0x3'));var router=express[_0x8535('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8535('0x5'));var interaction=require(_0x8535('0x6'));var config=require(_0x8535('0x7'));var controller=require(_0x8535('0x8'));router[_0x8535('0x9')]('/',auth[_0x8535('0xa')](),controller[_0x8535('0xb')]);router['get']('/describe',auth[_0x8535('0xa')](),controller[_0x8535('0xc')]);router[_0x8535('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x8535('0xd')]);router[_0x8535('0xe')]('/',auth['isAuthenticated'](),controller[_0x8535('0xf')]);router[_0x8535('0x10')](_0x8535('0x11'),auth[_0x8535('0xa')](),controller[_0x8535('0x12')]);router[_0x8535('0x13')]('/:id',auth[_0x8535('0xa')](),controller[_0x8535('0x14')]);module[_0x8535('0x15')]=router;
\ No newline at end of file
+var _0x4249=['update','delete','destroy','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','index','get','/describe','isAuthenticated','describe','show','post','put'];(function(_0x38877f,_0x1b937d){var _0xce786e=function(_0x3caf5f){while(--_0x3caf5f){_0x38877f['push'](_0x38877f['shift']());}};_0xce786e(++_0x1b937d);}(_0x4249,0xae));var _0x9424=function(_0x55977d,_0x5eea5f){_0x55977d=_0x55977d-0x0;var _0x5847ce=_0x4249[_0x55977d];return _0x5847ce;};'use strict';var multer=require(_0x9424('0x0'));var util=require(_0x9424('0x1'));var path=require(_0x9424('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x9424('0x3')]();var fs_extra=require(_0x9424('0x4'));var auth=require(_0x9424('0x5'));var interaction=require(_0x9424('0x6'));var config=require(_0x9424('0x7'));var controller=require('./faxQueueReport.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x9424('0x8')]);router[_0x9424('0x9')](_0x9424('0xa'),auth[_0x9424('0xb')](),controller[_0x9424('0xc')]);router[_0x9424('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x9424('0xd')]);router[_0x9424('0xe')]('/',auth[_0x9424('0xb')](),controller['create']);router[_0x9424('0xf')]('/:id',auth[_0x9424('0xb')](),controller[_0x9424('0x10')]);router[_0x9424('0x11')]('/:id',auth[_0x9424('0xb')](),controller[_0x9424('0x12')]);module['exports']=router;
\ No newline at end of file
index e4b316c..e601a46 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(_0x54fff6,_0x410540){var _0x2fd2c0=function(_0x53bf04){while(--_0x53bf04){_0x54fff6['push'](_0x54fff6['shift']());}};_0x2fd2c0(++_0x410540);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x5cdacf,_0x7c82b1){_0x5cdacf=_0x5cdacf-0x0;var _0xa68a8b=_0xf3cd[_0x5cdacf];return _0xa68a8b;};'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 _0xa9e0=['account','queue','DATE','NOW','moment','sequelize','exports'];(function(_0x9844c2,_0x4a6e0a){var _0x425407=function(_0x36141d){while(--_0x36141d){_0x9844c2['push'](_0x9844c2['shift']());}};_0x425407(++_0x4a6e0a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0xa9e0[_0x55f8b4];return _0x2475f9;};'use strict';var moment=require(_0x0a9e('0x0'));var Sequelize=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x0a9e('0x3'),'agent',_0x0a9e('0x4')),'allowNull':![],'defaultValue':_0x0a9e('0x4')},'transferredAt':{'type':Sequelize[_0x0a9e('0x5')],'allowNull':![],'defaultValue':Sequelize[_0x0a9e('0x6')]}};
\ No newline at end of file
index 73217d6..3e25ded 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3126=['undefined','count','limit','set','Content-Range','reject','save','then','destroy','end','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','FaxTransferReport','includeAll','include','catch','show','params','options','create','body','update','find','describe','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset'];(function(_0x2f5b44,_0x516b06){var _0x25fbcd=function(_0x3bffc8){while(--_0x3bffc8){_0x2f5b44['push'](_0x2f5b44['shift']());}};_0x25fbcd(++_0x516b06);}(_0x3126,0x1e4));var _0x6312=function(_0x383129,_0x1d458e){_0x383129=_0x383129-0x0;var _0x18d4b9=_0x3126[_0x383129];return _0x18d4b9;};'use strict';var emlformat=require(_0x6312('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6312('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6312('0x2'));var moment=require(_0x6312('0x3'));var BPromise=require(_0x6312('0x4'));var Mustache=require(_0x6312('0x5'));var util=require(_0x6312('0x6'));var path=require('path');var sox=require(_0x6312('0x7'));var csv=require(_0x6312('0x8'));var ejs=require(_0x6312('0x9'));var fs=require('fs');var fs_extra=require(_0x6312('0xa'));var _=require('lodash');var squel=require(_0x6312('0xb'));var crypto=require(_0x6312('0xc'));var jsforce=require(_0x6312('0xd'));var deskjs=require(_0x6312('0xe'));var toCsv=require(_0x6312('0x8'));var querystring=require(_0x6312('0xf'));var Papa=require(_0x6312('0x10'));var Redis=require(_0x6312('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x6312('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6312('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x6312('0x14'));var licenseUtil=require(_0x6312('0x15'));var db=require(_0x6312('0x16'))['db'];function respondWithStatusCode(_0x35acc1,_0x1209d6){_0x1209d6=_0x1209d6||0xcc;return function(_0x4ec813){if(_0x4ec813){return _0x35acc1[_0x6312('0x17')](_0x1209d6);}return _0x35acc1[_0x6312('0x18')](_0x1209d6)['end']();};}function respondWithResult(_0x5334e5,_0x30c754){_0x30c754=_0x30c754||0xc8;return function(_0xcc929d){if(_0xcc929d){return _0x5334e5['status'](_0x30c754)[_0x6312('0x19')](_0xcc929d);}};}function respondWithFilteredResult(_0x5b0c92,_0x174f03){return function(_0x3eb235){if(_0x3eb235){var _0x44564b=typeof _0x174f03[_0x6312('0x1a')]===_0x6312('0x1b')&&typeof _0x174f03['limit']===_0x6312('0x1b');var _0x1d95c9=_0x3eb235[_0x6312('0x1c')];var _0x524cf7=_0x44564b?0x0:_0x174f03[_0x6312('0x1a')];var _0x355d8f=_0x44564b?_0x3eb235[_0x6312('0x1c')]:_0x174f03[_0x6312('0x1a')]+_0x174f03[_0x6312('0x1d')];var _0x1295e3;if(_0x355d8f>=_0x1d95c9){_0x355d8f=_0x1d95c9;_0x1295e3=0xc8;}else{_0x1295e3=0xce;}_0x5b0c92['status'](_0x1295e3);return _0x5b0c92[_0x6312('0x1e')](_0x6312('0x1f'),_0x524cf7+'-'+_0x355d8f+'/'+_0x1d95c9)[_0x6312('0x19')](_0x3eb235);}return null;};}function patchUpdates(_0xa5ce9e){return function(_0x5a515b){try{jsonpatch['apply'](_0x5a515b,_0xa5ce9e,!![]);}catch(_0x440a91){return BPromise[_0x6312('0x20')](_0x440a91);}return _0x5a515b[_0x6312('0x21')]();};}function saveUpdates(_0x3531b6,_0x5d051f){return function(_0xdf54bf){if(_0xdf54bf){return _0xdf54bf['update'](_0x3531b6)[_0x6312('0x22')](function(_0x46264f){return _0x46264f;});}return null;};}function removeEntity(_0x2763b6,_0xd46b77){return function(_0x24e753){if(_0x24e753){return _0x24e753[_0x6312('0x23')]()[_0x6312('0x22')](function(){_0x2763b6[_0x6312('0x18')](0xcc)[_0x6312('0x24')]();});}};}function handleEntityNotFound(_0x4e60c2,_0x3ae191){return function(_0x339135){if(!_0x339135){_0x4e60c2['sendStatus'](0x194);}return _0x339135;};}function handleError(_0xc1c29,_0x12b8d9){_0x12b8d9=_0x12b8d9||0x1f4;return function(_0x5130bb){logger['error'](_0x5130bb[_0x6312('0x25')]);if(_0x5130bb[_0x6312('0x26')]){delete _0x5130bb[_0x6312('0x26')];}_0xc1c29[_0x6312('0x18')](_0x12b8d9)[_0x6312('0x27')](_0x5130bb);};}exports[_0x6312('0x28')]=function(_0x50893b,_0x1b5142){var _0x1a1bfb={},_0x7d12ba={},_0x49a0a2={'count':0x0,'rows':[]};var _0x1b47be=_[_0x6312('0x29')](db['FaxTransferReport'][_0x6312('0x2a')],function(_0x5297b7){return{'name':_0x5297b7[_0x6312('0x2b')],'type':_0x5297b7[_0x6312('0x2c')][_0x6312('0x2d')]};});_0x7d12ba['model']=_['map'](_0x1b47be,_0x6312('0x26'));_0x7d12ba[_0x6312('0x2e')]=_[_0x6312('0x2f')](_0x50893b[_0x6312('0x2e')]);_0x7d12ba[_0x6312('0x30')]=_[_0x6312('0x31')](_0x7d12ba[_0x6312('0x32')],_0x7d12ba[_0x6312('0x2e')]);_0x1a1bfb[_0x6312('0x33')]=_[_0x6312('0x31')](_0x7d12ba[_0x6312('0x32')],qs[_0x6312('0x34')](_0x50893b[_0x6312('0x2e')]['fields']));_0x1a1bfb[_0x6312('0x33')]=_0x1a1bfb['attributes']['length']?_0x1a1bfb[_0x6312('0x33')]:_0x7d12ba[_0x6312('0x32')];if(!_0x50893b['query'][_0x6312('0x35')](_0x6312('0x36'))){_0x1a1bfb['limit']=qs['limit'](_0x50893b[_0x6312('0x2e')][_0x6312('0x1d')]);_0x1a1bfb['offset']=qs[_0x6312('0x1a')](_0x50893b[_0x6312('0x2e')][_0x6312('0x1a')]);}_0x1a1bfb[_0x6312('0x37')]=qs[_0x6312('0x38')](_0x50893b[_0x6312('0x2e')][_0x6312('0x38')]);_0x1a1bfb['where']=qs['filters'](_[_0x6312('0x39')](_0x50893b[_0x6312('0x2e')],_0x7d12ba[_0x6312('0x30')]),_0x1b47be);if(_0x50893b['query'][_0x6312('0x3a')]){_0x1a1bfb['where']=_['merge'](_0x1a1bfb[_0x6312('0x3b')],{'$or':_[_0x6312('0x29')](_0x1b47be,function(_0x31eede){if(_0x31eede[_0x6312('0x2c')]!=='VIRTUAL'){var _0x285715={};_0x285715[_0x31eede[_0x6312('0x26')]]={'$like':'%'+_0x50893b['query']['filter']+'%'};return _0x285715;}})});}_0x1a1bfb=_[_0x6312('0x3c')]({},_0x1a1bfb,_0x50893b['options']);var _0x5ce5ca={'where':_0x1a1bfb[_0x6312('0x3b')]};return db[_0x6312('0x3d')]['count'](_0x5ce5ca)[_0x6312('0x22')](function(_0x260da3){_0x49a0a2[_0x6312('0x1c')]=_0x260da3;if(_0x50893b[_0x6312('0x2e')][_0x6312('0x3e')]){_0x1a1bfb[_0x6312('0x3f')]=[{'all':!![]}];}return db[_0x6312('0x3d')]['findAll'](_0x1a1bfb);})['then'](function(_0x162d6e){_0x49a0a2['rows']=_0x162d6e;return _0x49a0a2;})[_0x6312('0x22')](respondWithFilteredResult(_0x1b5142,_0x1a1bfb))[_0x6312('0x40')](handleError(_0x1b5142,null));};exports[_0x6312('0x41')]=function(_0x2f1a23,_0x3d6314){var _0x5f2ab3={'raw':!![],'where':{'id':_0x2f1a23[_0x6312('0x42')]['id']}},_0x52ab44={};_0x52ab44[_0x6312('0x32')]=_[_0x6312('0x2f')](db[_0x6312('0x3d')][_0x6312('0x2a')]);_0x52ab44[_0x6312('0x2e')]=_[_0x6312('0x2f')](_0x2f1a23['query']);_0x52ab44['filters']=_[_0x6312('0x31')](_0x52ab44[_0x6312('0x32')],_0x52ab44[_0x6312('0x2e')]);_0x5f2ab3[_0x6312('0x33')]=_[_0x6312('0x31')](_0x52ab44[_0x6312('0x32')],qs['fields'](_0x2f1a23[_0x6312('0x2e')][_0x6312('0x34')]));_0x5f2ab3['attributes']=_0x5f2ab3[_0x6312('0x33')]['length']?_0x5f2ab3[_0x6312('0x33')]:_0x52ab44['model'];if(_0x2f1a23['query'][_0x6312('0x3e')]){_0x5f2ab3[_0x6312('0x3f')]=[{'all':!![]}];}_0x5f2ab3=_[_0x6312('0x3c')]({},_0x5f2ab3,_0x2f1a23[_0x6312('0x43')]);return db[_0x6312('0x3d')]['find'](_0x5f2ab3)['then'](handleEntityNotFound(_0x3d6314,null))[_0x6312('0x22')](respondWithResult(_0x3d6314,null))[_0x6312('0x40')](handleError(_0x3d6314,null));};exports[_0x6312('0x44')]=function(_0x43d0f8,_0x4d1167){return db['FaxTransferReport'][_0x6312('0x44')](_0x43d0f8[_0x6312('0x45')],{})[_0x6312('0x22')](respondWithResult(_0x4d1167,0xc9))['catch'](handleError(_0x4d1167,null));};exports[_0x6312('0x46')]=function(_0x118942,_0x1b6f87){if(_0x118942[_0x6312('0x45')]['id']){delete _0x118942[_0x6312('0x45')]['id'];}return db['FaxTransferReport'][_0x6312('0x47')]({'where':{'id':_0x118942['params']['id']}})['then'](handleEntityNotFound(_0x1b6f87,null))[_0x6312('0x22')](saveUpdates(_0x118942[_0x6312('0x45')],null))[_0x6312('0x22')](respondWithResult(_0x1b6f87,null))[_0x6312('0x40')](handleError(_0x1b6f87,null));};exports[_0x6312('0x23')]=function(_0x460d69,_0x3564c1){return db['FaxTransferReport'][_0x6312('0x47')]({'where':{'id':_0x460d69[_0x6312('0x42')]['id']}})[_0x6312('0x22')](handleEntityNotFound(_0x3564c1,null))['then'](removeEntity(_0x3564c1,null))[_0x6312('0x40')](handleError(_0x3564c1,null));};exports[_0x6312('0x48')]=function(_0x584431,_0x2523d3){return db[_0x6312('0x3d')][_0x6312('0x48')]()[_0x6312('0x22')](respondWithResult(_0x2523d3,null))[_0x6312('0x40')](handleError(_0x2523d3,null));};
\ No newline at end of file
+var _0x6963=['order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','rows','show','params','length','catch','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','then','destroy','sendStatus','stack','name','send','index','FaxTransferReport','rawAttributes','fieldName','type','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit'];(function(_0x30558d,_0x53dfdb){var _0x3ab37d=function(_0x3ed430){while(--_0x3ed430){_0x30558d['push'](_0x30558d['shift']());}};_0x3ab37d(++_0x53dfdb);}(_0x6963,0x137));var _0x3696=function(_0x2359e6,_0x3fc714){_0x2359e6=_0x2359e6-0x0;var _0x5a2823=_0x6963[_0x2359e6];return _0x5a2823;};'use strict';var emlformat=require(_0x3696('0x0'));var rimraf=require(_0x3696('0x1'));var zipdir=require(_0x3696('0x2'));var jsonpatch=require(_0x3696('0x3'));var rp=require(_0x3696('0x4'));var moment=require(_0x3696('0x5'));var BPromise=require(_0x3696('0x6'));var Mustache=require(_0x3696('0x7'));var util=require(_0x3696('0x8'));var path=require(_0x3696('0x9'));var sox=require(_0x3696('0xa'));var csv=require(_0x3696('0xb'));var ejs=require(_0x3696('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x3696('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x3696('0xe'));var toCsv=require('to-csv');var querystring=require(_0x3696('0xf'));var Papa=require(_0x3696('0x10'));var Redis=require(_0x3696('0x11'));var authService=require(_0x3696('0x12'));var qs=require(_0x3696('0x13'));var as=require(_0x3696('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x3696('0x15'));var utils=require('../../config/utils');var config=require(_0x3696('0x16'));var licenseUtil=require(_0x3696('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x27d395,_0x54b12a){_0x54b12a=_0x54b12a||0xcc;return function(_0x2b011e){if(_0x2b011e){return _0x27d395['sendStatus'](_0x54b12a);}return _0x27d395[_0x3696('0x18')](_0x54b12a)[_0x3696('0x19')]();};}function respondWithResult(_0x19b881,_0x562be4){_0x562be4=_0x562be4||0xc8;return function(_0x1911bc){if(_0x1911bc){return _0x19b881[_0x3696('0x18')](_0x562be4)[_0x3696('0x1a')](_0x1911bc);}};}function respondWithFilteredResult(_0x43b112,_0x5195ba){return function(_0x4ae772){if(_0x4ae772){var _0x239fb5=typeof _0x5195ba[_0x3696('0x1b')]===_0x3696('0x1c')&&typeof _0x5195ba[_0x3696('0x1d')]==='undefined';var _0x905c75=_0x4ae772[_0x3696('0x1e')];var _0xa65ecb=_0x239fb5?0x0:_0x5195ba[_0x3696('0x1b')];var _0x1f12da=_0x239fb5?_0x4ae772[_0x3696('0x1e')]:_0x5195ba[_0x3696('0x1b')]+_0x5195ba[_0x3696('0x1d')];var _0x1e91d0;if(_0x1f12da>=_0x905c75){_0x1f12da=_0x905c75;_0x1e91d0=0xc8;}else{_0x1e91d0=0xce;}_0x43b112[_0x3696('0x18')](_0x1e91d0);return _0x43b112['set'](_0x3696('0x1f'),_0xa65ecb+'-'+_0x1f12da+'/'+_0x905c75)['json'](_0x4ae772);}return null;};}function patchUpdates(_0x5c0004){return function(_0x5b112e){try{jsonpatch[_0x3696('0x20')](_0x5b112e,_0x5c0004,!![]);}catch(_0x4dec1c){return BPromise['reject'](_0x4dec1c);}return _0x5b112e[_0x3696('0x21')]();};}function saveUpdates(_0x385a15,_0x40a399){return function(_0x1da979){if(_0x1da979){return _0x1da979['update'](_0x385a15)[_0x3696('0x22')](function(_0xb564c3){return _0xb564c3;});}return null;};}function removeEntity(_0x11fefd,_0x2c7104){return function(_0x4edf15){if(_0x4edf15){return _0x4edf15[_0x3696('0x23')]()[_0x3696('0x22')](function(){_0x11fefd['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4bb64e,_0x55c4c0){return function(_0x4ef0f6){if(!_0x4ef0f6){_0x4bb64e[_0x3696('0x24')](0x194);}return _0x4ef0f6;};}function handleError(_0x2ccc6e,_0x54e0ba){_0x54e0ba=_0x54e0ba||0x1f4;return function(_0x5b0339){logger['error'](_0x5b0339[_0x3696('0x25')]);if(_0x5b0339['name']){delete _0x5b0339[_0x3696('0x26')];}_0x2ccc6e[_0x3696('0x18')](_0x54e0ba)[_0x3696('0x27')](_0x5b0339);};}exports[_0x3696('0x28')]=function(_0x3b5bc5,_0x37ddce){var _0x549670={},_0x48d614={},_0x2da031={'count':0x0,'rows':[]};var _0x330225=_['map'](db[_0x3696('0x29')][_0x3696('0x2a')],function(_0x20ff4c){return{'name':_0x20ff4c[_0x3696('0x2b')],'type':_0x20ff4c[_0x3696('0x2c')]['key']};});_0x48d614[_0x3696('0x2d')]=_['map'](_0x330225,_0x3696('0x26'));_0x48d614['query']=_[_0x3696('0x2e')](_0x3b5bc5[_0x3696('0x2f')]);_0x48d614[_0x3696('0x30')]=_[_0x3696('0x31')](_0x48d614[_0x3696('0x2d')],_0x48d614[_0x3696('0x2f')]);_0x549670['attributes']=_[_0x3696('0x31')](_0x48d614[_0x3696('0x2d')],qs[_0x3696('0x32')](_0x3b5bc5[_0x3696('0x2f')][_0x3696('0x32')]));_0x549670[_0x3696('0x33')]=_0x549670['attributes']['length']?_0x549670['attributes']:_0x48d614['model'];if(!_0x3b5bc5[_0x3696('0x2f')][_0x3696('0x34')](_0x3696('0x35'))){_0x549670[_0x3696('0x1d')]=qs['limit'](_0x3b5bc5[_0x3696('0x2f')][_0x3696('0x1d')]);_0x549670[_0x3696('0x1b')]=qs[_0x3696('0x1b')](_0x3b5bc5['query'][_0x3696('0x1b')]);}_0x549670[_0x3696('0x36')]=qs[_0x3696('0x37')](_0x3b5bc5[_0x3696('0x2f')][_0x3696('0x37')]);_0x549670[_0x3696('0x38')]=qs[_0x3696('0x30')](_[_0x3696('0x39')](_0x3b5bc5[_0x3696('0x2f')],_0x48d614[_0x3696('0x30')]),_0x330225);if(_0x3b5bc5[_0x3696('0x2f')]['filter']){_0x549670[_0x3696('0x38')]=_[_0x3696('0x3a')](_0x549670['where'],{'$or':_['map'](_0x330225,function(_0xaacebd){if(_0xaacebd['type']!==_0x3696('0x3b')){var _0x25024d={};_0x25024d[_0xaacebd['name']]={'$like':'%'+_0x3b5bc5[_0x3696('0x2f')][_0x3696('0x3c')]+'%'};return _0x25024d;}})});}_0x549670=_[_0x3696('0x3a')]({},_0x549670,_0x3b5bc5[_0x3696('0x3d')]);var _0x339dca={'where':_0x549670[_0x3696('0x38')]};return db['FaxTransferReport'][_0x3696('0x1e')](_0x339dca)['then'](function(_0x2892a2){_0x2da031[_0x3696('0x1e')]=_0x2892a2;if(_0x3b5bc5['query'][_0x3696('0x3e')]){_0x549670[_0x3696('0x3f')]=[{'all':!![]}];}return db[_0x3696('0x29')]['findAll'](_0x549670);})['then'](function(_0x5c3157){_0x2da031[_0x3696('0x40')]=_0x5c3157;return _0x2da031;})[_0x3696('0x22')](respondWithFilteredResult(_0x37ddce,_0x549670))['catch'](handleError(_0x37ddce,null));};exports[_0x3696('0x41')]=function(_0xba39c,_0x129b61){var _0x3408e1={'raw':!![],'where':{'id':_0xba39c[_0x3696('0x42')]['id']}},_0xd0978a={};_0xd0978a['model']=_[_0x3696('0x2e')](db[_0x3696('0x29')][_0x3696('0x2a')]);_0xd0978a[_0x3696('0x2f')]=_[_0x3696('0x2e')](_0xba39c[_0x3696('0x2f')]);_0xd0978a[_0x3696('0x30')]=_[_0x3696('0x31')](_0xd0978a[_0x3696('0x2d')],_0xd0978a[_0x3696('0x2f')]);_0x3408e1[_0x3696('0x33')]=_[_0x3696('0x31')](_0xd0978a['model'],qs[_0x3696('0x32')](_0xba39c[_0x3696('0x2f')][_0x3696('0x32')]));_0x3408e1[_0x3696('0x33')]=_0x3408e1[_0x3696('0x33')][_0x3696('0x43')]?_0x3408e1['attributes']:_0xd0978a[_0x3696('0x2d')];if(_0xba39c[_0x3696('0x2f')]['includeAll']){_0x3408e1['include']=[{'all':!![]}];}_0x3408e1=_[_0x3696('0x3a')]({},_0x3408e1,_0xba39c[_0x3696('0x3d')]);return db[_0x3696('0x29')]['find'](_0x3408e1)[_0x3696('0x22')](handleEntityNotFound(_0x129b61,null))[_0x3696('0x22')](respondWithResult(_0x129b61,null))[_0x3696('0x44')](handleError(_0x129b61,null));};exports[_0x3696('0x45')]=function(_0x1d165c,_0x22715b){return db[_0x3696('0x29')][_0x3696('0x45')](_0x1d165c[_0x3696('0x46')],{})[_0x3696('0x22')](respondWithResult(_0x22715b,0xc9))['catch'](handleError(_0x22715b,null));};exports['update']=function(_0x194dd7,_0xd9c681){if(_0x194dd7[_0x3696('0x46')]['id']){delete _0x194dd7[_0x3696('0x46')]['id'];}return db[_0x3696('0x29')][_0x3696('0x47')]({'where':{'id':_0x194dd7[_0x3696('0x42')]['id']}})[_0x3696('0x22')](handleEntityNotFound(_0xd9c681,null))[_0x3696('0x22')](saveUpdates(_0x194dd7[_0x3696('0x46')],null))[_0x3696('0x22')](respondWithResult(_0xd9c681,null))[_0x3696('0x44')](handleError(_0xd9c681,null));};exports[_0x3696('0x23')]=function(_0x5582b2,_0x202f9e){return db['FaxTransferReport']['find']({'where':{'id':_0x5582b2[_0x3696('0x42')]['id']}})[_0x3696('0x22')](handleEntityNotFound(_0x202f9e,null))[_0x3696('0x22')](removeEntity(_0x202f9e,null))[_0x3696('0x44')](handleError(_0x202f9e,null));};exports[_0x3696('0x48')]=function(_0x3874d4,_0xb9fc3){return db[_0x3696('0x29')][_0x3696('0x48')]()[_0x3696('0x22')](respondWithResult(_0xb9fc3,null))[_0x3696('0x44')](handleError(_0xb9fc3,null));};
\ No newline at end of file
index 46024bf..b086d9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09d1=['../../config/environment','./faxTransferReport.attributes','define','FaxTransferReport','report_fax_transfer','uniqueid','lodash','util','api','moment','path','rimraf'];(function(_0x369a9d,_0x4d6a02){var _0x3d85dd=function(_0x2a36e6){while(--_0x2a36e6){_0x369a9d['push'](_0x369a9d['shift']());}};_0x3d85dd(++_0x4d6a02);}(_0x09d1,0xba));var _0x109d=function(_0x2f3795,_0x9c95be){_0x2f3795=_0x2f3795-0x0;var _0x592eeb=_0x09d1[_0x2f3795];return _0x592eeb;};'use strict';var _=require(_0x109d('0x0'));var util=require(_0x109d('0x1'));var logger=require('../../config/logger')(_0x109d('0x2'));var moment=require(_0x109d('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x109d('0x4'));var rimraf=require(_0x109d('0x5'));var config=require(_0x109d('0x6'));var attributes=require(_0x109d('0x7'));module['exports']=function(_0x590e4d,_0x2d5064){return _0x590e4d[_0x109d('0x8')](_0x109d('0x9'),attributes,{'tableName':_0x109d('0xa'),'paranoid':![],'indexes':[{'name':_0x109d('0xb'),'fields':[_0x109d('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1d3a=['util','moment','bluebird','path','rimraf','../../config/environment','./faxTransferReport.attributes','FaxTransferReport','uniqueid','lodash'];(function(_0x200183,_0x30f2c7){var _0x36c53c=function(_0x184156){while(--_0x184156){_0x200183['push'](_0x200183['shift']());}};_0x36c53c(++_0x30f2c7);}(_0x1d3a,0x18f));var _0xa1d3=function(_0x38ced4,_0x24263f){_0x38ced4=_0x38ced4-0x0;var _0x547c07=_0x1d3a[_0x38ced4];return _0x547c07;};'use strict';var _=require(_0xa1d3('0x0'));var util=require(_0xa1d3('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xa1d3('0x2'));var BPromise=require(_0xa1d3('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa1d3('0x4'));var rimraf=require(_0xa1d3('0x5'));var config=require(_0xa1d3('0x6'));var attributes=require(_0xa1d3('0x7'));module['exports']=function(_0x548a04,_0x223c8d){return _0x548a04['define'](_0xa1d3('0x8'),attributes,{'tableName':'report_fax_transfer','paranoid':![],'indexes':[{'name':_0xa1d3('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 01c02ea..142787d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe23=['result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message'];(function(_0x5a504a,_0x1c9027){var _0xbe8543=function(_0x40c217){while(--_0x40c217){_0x5a504a['push'](_0x5a504a['shift']());}};_0xbe8543(++_0x1c9027);}(_0xfe23,0xe8));var _0x3fe2=function(_0x3511d3,_0x4107ae){_0x3511d3=_0x3511d3-0x0;var _0x5d6321=_0xfe23[_0x3511d3];return _0x5d6321;};'use strict';var _=require('lodash');var util=require(_0x3fe2('0x0'));var moment=require(_0x3fe2('0x1'));var BPromise=require(_0x3fe2('0x2'));var rs=require(_0x3fe2('0x3'));var fs=require('fs');var Redis=require(_0x3fe2('0x4'));var db=require(_0x3fe2('0x5'))['db'];var utils=require(_0x3fe2('0x6'));var logger=require(_0x3fe2('0x7'))('rpc');var config=require(_0x3fe2('0x8'));var jayson=require(_0x3fe2('0x9'));var client=jayson[_0x3fe2('0xa')][_0x3fe2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x438b07,_0xbdfc0c,_0x3137d6){return new BPromise(function(_0x5d3a87,_0xdc9800){return client[_0x3fe2('0xc')](_0x438b07,_0x3137d6)[_0x3fe2('0xd')](function(_0x3f908b){logger[_0x3fe2('0xe')](_0x3fe2('0xf'),_0xbdfc0c,_0x3fe2('0x10'));logger[_0x3fe2('0x11')]('FaxTransferReport,\x20%s,\x20%s,\x20%s',_0xbdfc0c,_0x3fe2('0x10'),JSON['stringify'](_0x3f908b));if(_0x3f908b[_0x3fe2('0x12')]){if(_0x3f908b[_0x3fe2('0x12')][_0x3fe2('0x13')]===0x1f4){logger[_0x3fe2('0x12')]('FaxTransferReport,\x20%s,\x20%s',_0xbdfc0c,_0x3f908b[_0x3fe2('0x12')]['message']);return _0xdc9800(_0x3f908b[_0x3fe2('0x12')][_0x3fe2('0x14')]);}logger['error']('FaxTransferReport,\x20%s,\x20%s',_0xbdfc0c,_0x3f908b[_0x3fe2('0x12')]['message']);return _0x5d3a87(_0x3f908b[_0x3fe2('0x12')]['message']);}else{logger[_0x3fe2('0xe')]('FaxTransferReport,\x20%s,\x20%s',_0xbdfc0c,'request\x20sent');_0x5d3a87(_0x3f908b[_0x3fe2('0x15')][_0x3fe2('0x14')]);}})[_0x3fe2('0x16')](function(_0x3b034e){logger[_0x3fe2('0x12')](_0x3fe2('0xf'),_0xbdfc0c,_0x3b034e);_0xdc9800(_0x3b034e);});});}
\ No newline at end of file
+var _0x1ea0=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0xcde425,_0x179c47){var _0x588ff5=function(_0x1f8ed2){while(--_0x1f8ed2){_0xcde425['push'](_0xcde425['shift']());}};_0x588ff5(++_0x179c47);}(_0x1ea0,0x142));var _0x01ea=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x1ea0[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0x01ea('0x0'));var moment=require(_0x01ea('0x1'));var BPromise=require(_0x01ea('0x2'));var rs=require(_0x01ea('0x3'));var fs=require('fs');var Redis=require(_0x01ea('0x4'));var db=require(_0x01ea('0x5'))['db'];var utils=require(_0x01ea('0x6'));var logger=require(_0x01ea('0x7'))(_0x01ea('0x8'));var config=require('../../config/environment');var jayson=require(_0x01ea('0x9'));var client=jayson[_0x01ea('0xa')][_0x01ea('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1ef82c,_0x575810,_0x4d93df){return new BPromise(function(_0x2ca65,_0x1285b3){return client['request'](_0x1ef82c,_0x4d93df)[_0x01ea('0xc')](function(_0x2c7a78){logger[_0x01ea('0xd')](_0x01ea('0xe'),_0x575810,_0x01ea('0xf'));logger[_0x01ea('0x10')](_0x01ea('0x11'),_0x575810,'request\x20sent',JSON[_0x01ea('0x12')](_0x2c7a78));if(_0x2c7a78[_0x01ea('0x13')]){if(_0x2c7a78[_0x01ea('0x13')][_0x01ea('0x14')]===0x1f4){logger[_0x01ea('0x13')](_0x01ea('0xe'),_0x575810,_0x2c7a78[_0x01ea('0x13')][_0x01ea('0x15')]);return _0x1285b3(_0x2c7a78[_0x01ea('0x13')][_0x01ea('0x15')]);}logger[_0x01ea('0x13')](_0x01ea('0xe'),_0x575810,_0x2c7a78[_0x01ea('0x13')][_0x01ea('0x15')]);return _0x2ca65(_0x2c7a78[_0x01ea('0x13')][_0x01ea('0x15')]);}else{logger[_0x01ea('0xd')](_0x01ea('0xe'),_0x575810,_0x01ea('0xf'));_0x2ca65(_0x2c7a78[_0x01ea('0x16')][_0x01ea('0x15')]);}})['catch'](function(_0x19a3f1){logger[_0x01ea('0x13')](_0x01ea('0xe'),_0x575810,_0x19a3f1);_0x1285b3(_0x19a3f1);});});}
\ No newline at end of file
index 7fd0b11..36aacf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf28c=['create','put','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./faxTransferReport.controller','isAuthenticated','index','/describe','describe','/:id','post'];(function(_0x14b3a3,_0x43cef1){var _0x327aac=function(_0x313505){while(--_0x313505){_0x14b3a3['push'](_0x14b3a3['shift']());}};_0x327aac(++_0x43cef1);}(_0xf28c,0xdf));var _0xcf28=function(_0x4c8bb6,_0x517b16){_0x4c8bb6=_0x4c8bb6-0x0;var _0xa43e16=_0xf28c[_0x4c8bb6];return _0xa43e16;};'use strict';var multer=require(_0xcf28('0x0'));var util=require(_0xcf28('0x1'));var path=require(_0xcf28('0x2'));var timeout=require(_0xcf28('0x3'));var express=require(_0xcf28('0x4'));var router=express[_0xcf28('0x5')]();var fs_extra=require(_0xcf28('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xcf28('0x7'));var controller=require(_0xcf28('0x8'));router['get']('/',auth[_0xcf28('0x9')](),controller[_0xcf28('0xa')]);router['get'](_0xcf28('0xb'),auth[_0xcf28('0x9')](),controller[_0xcf28('0xc')]);router['get'](_0xcf28('0xd'),auth[_0xcf28('0x9')](),controller['show']);router[_0xcf28('0xe')]('/',auth[_0xcf28('0x9')](),controller[_0xcf28('0xf')]);router[_0xcf28('0x10')](_0xcf28('0xd'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xcf28('0xd'),auth[_0xcf28('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x1361=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','isAuthenticated','describe','/:id','show','post','create','put','update','delete','exports','multer','util','connect-timeout','express','Router'];(function(_0x6d7eb5,_0x5f1287){var _0x42bae1=function(_0x58f161){while(--_0x58f161){_0x6d7eb5['push'](_0x6d7eb5['shift']());}};_0x42bae1(++_0x5f1287);}(_0x1361,0x163));var _0x1136=function(_0x542759,_0x1de942){_0x542759=_0x542759-0x0;var _0x59b562=_0x1361[_0x542759];return _0x59b562;};'use strict';var multer=require(_0x1136('0x0'));var util=require(_0x1136('0x1'));var path=require('path');var timeout=require(_0x1136('0x2'));var express=require(_0x1136('0x3'));var router=express[_0x1136('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x1136('0x5'));var interaction=require(_0x1136('0x6'));var config=require(_0x1136('0x7'));var controller=require('./faxTransferReport.controller');router[_0x1136('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x1136('0x8')](_0x1136('0x9'),auth[_0x1136('0xa')](),controller[_0x1136('0xb')]);router[_0x1136('0x8')](_0x1136('0xc'),auth['isAuthenticated'](),controller[_0x1136('0xd')]);router[_0x1136('0xe')]('/',auth[_0x1136('0xa')](),controller[_0x1136('0xf')]);router[_0x1136('0x10')](_0x1136('0xc'),auth[_0x1136('0xa')](),controller[_0x1136('0x11')]);router[_0x1136('0x12')](_0x1136('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x1136('0x13')]=router;
\ No newline at end of file
index 9c4994d..c6908b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29b2=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index','get','/:id','show','getFields','post','create','/:id/configurations','addConfiguration','put','update','delete','destroy','exports','util','path'];(function(_0xa2f2c0,_0x1bd315){var _0x3f2623=function(_0x38ff37){while(--_0x38ff37){_0xa2f2c0['push'](_0xa2f2c0['shift']());}};_0x3f2623(++_0x1bd315);}(_0x29b2,0x140));var _0x229b=function(_0x122994,_0x464bcc){_0x122994=_0x122994-0x0;var _0x343c43=_0x29b2[_0x122994];return _0x343c43;};'use strict';var multer=require('multer');var util=require(_0x229b('0x0'));var path=require(_0x229b('0x1'));var timeout=require(_0x229b('0x2'));var express=require(_0x229b('0x3'));var router=express[_0x229b('0x4')]();var fs_extra=require(_0x229b('0x5'));var auth=require(_0x229b('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x229b('0x7'));var controller=require('./intDeskAccount.controller');router['get']('/',auth[_0x229b('0x8')](),controller[_0x229b('0x9')]);router[_0x229b('0xa')](_0x229b('0xb'),auth[_0x229b('0x8')](),controller[_0x229b('0xc')]);router['get']('/:id/configurations',auth[_0x229b('0x8')](),controller['getConfigurations']);router[_0x229b('0xa')]('/:id/fields',auth['isAuthenticated'](),controller[_0x229b('0xd')]);router[_0x229b('0xe')]('/',auth['isAuthenticated'](),controller[_0x229b('0xf')]);router[_0x229b('0xe')](_0x229b('0x10'),auth[_0x229b('0x8')](),controller[_0x229b('0x11')]);router[_0x229b('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x229b('0x13')]);router[_0x229b('0x14')]('/:id',auth[_0x229b('0x8')](),controller[_0x229b('0x15')]);module[_0x229b('0x16')]=router;
\ No newline at end of file
+var _0xc8bc=['show','/:id/configurations','getConfigurations','getFields','post','put','update','destroy','multer','path','connect-timeout','express','../../components/auth/service','../../config/environment','./intDeskAccount.controller','get','index','/:id','isAuthenticated'];(function(_0x54a09d,_0x5b14fb){var _0x1bd962=function(_0x48f426){while(--_0x48f426){_0x54a09d['push'](_0x54a09d['shift']());}};_0x1bd962(++_0x5b14fb);}(_0xc8bc,0x8d));var _0xcc8b=function(_0x403c20,_0x4a7b99){_0x403c20=_0x403c20-0x0;var _0x2b271a=_0xc8bc[_0x403c20];return _0x2b271a;};'use strict';var multer=require(_0xcc8b('0x0'));var util=require('util');var path=require(_0xcc8b('0x1'));var timeout=require(_0xcc8b('0x2'));var express=require(_0xcc8b('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xcc8b('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xcc8b('0x5'));var controller=require(_0xcc8b('0x6'));router[_0xcc8b('0x7')]('/',auth['isAuthenticated'](),controller[_0xcc8b('0x8')]);router['get'](_0xcc8b('0x9'),auth[_0xcc8b('0xa')](),controller[_0xcc8b('0xb')]);router[_0xcc8b('0x7')](_0xcc8b('0xc'),auth[_0xcc8b('0xa')](),controller[_0xcc8b('0xd')]);router[_0xcc8b('0x7')]('/:id/fields',auth[_0xcc8b('0xa')](),controller[_0xcc8b('0xe')]);router[_0xcc8b('0xf')]('/',auth[_0xcc8b('0xa')](),controller['create']);router['post'](_0xcc8b('0xc'),auth[_0xcc8b('0xa')](),controller['addConfiguration']);router[_0xcc8b('0x10')]('/:id',auth['isAuthenticated'](),controller[_0xcc8b('0x11')]);router['delete'](_0xcc8b('0x9'),auth['isAuthenticated'](),controller[_0xcc8b('0x12')]);module['exports']=router;
\ No newline at end of file
index a839d5d..bb6d377 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a56=['newTab','sequelize','exports','STRING','integrationTab'];(function(_0x139374,_0x513e4c){var _0x2d2d40=function(_0x93a16d){while(--_0x93a16d){_0x139374['push'](_0x139374['shift']());}};_0x2d2d40(++_0x513e4c);}(_0x5a56,0x164));var _0x65a5=function(_0x3652f7,_0x39448c){_0x3652f7=_0x3652f7-0x0;var _0x365c5c=_0x5a56[_0x3652f7];return _0x365c5c;};'use strict';var Sequelize=require(_0x65a5('0x0'));module[_0x65a5('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x65a5('0x2')]},'username':{'type':Sequelize[_0x65a5('0x2')]},'remoteUri':{'type':Sequelize[_0x65a5('0x2')]},'authType':{'type':Sequelize['ENUM']('basic'),'defaultValue':'basic'},'password':{'type':Sequelize['STRING']},'consumerKey':{'type':Sequelize['STRING']},'consumerSecret':{'type':Sequelize[_0x65a5('0x2')]},'token':{'type':Sequelize[_0x65a5('0x2')]},'tokenSecret':{'type':Sequelize[_0x65a5('0x2')]},'serverUrl':{'type':Sequelize[_0x65a5('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x65a5('0x3'),_0x65a5('0x4')),'defaultValue':_0x65a5('0x3')}};
\ No newline at end of file
+var _0xe2c3=['integrationTab','newTab','exports','STRING','ENUM','basic'];(function(_0x2949a9,_0x26b51d){var _0x156baf=function(_0x265d90){while(--_0x265d90){_0x2949a9['push'](_0x2949a9['shift']());}};_0x156baf(++_0x26b51d);}(_0xe2c3,0xf2));var _0x3e2c=function(_0x248afa,_0xc057df){_0x248afa=_0x248afa-0x0;var _0x26d2d2=_0xe2c3[_0x248afa];return _0x26d2d2;};'use strict';var Sequelize=require('sequelize');module[_0x3e2c('0x0')]={'name':{'type':Sequelize[_0x3e2c('0x1')]},'description':{'type':Sequelize[_0x3e2c('0x1')]},'username':{'type':Sequelize[_0x3e2c('0x1')]},'remoteUri':{'type':Sequelize[_0x3e2c('0x1')]},'authType':{'type':Sequelize[_0x3e2c('0x2')](_0x3e2c('0x3')),'defaultValue':'basic'},'password':{'type':Sequelize[_0x3e2c('0x1')]},'consumerKey':{'type':Sequelize[_0x3e2c('0x1')]},'consumerSecret':{'type':Sequelize[_0x3e2c('0x1')]},'token':{'type':Sequelize['STRING']},'tokenSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x3e2c('0x2')](_0x3e2c('0x4'),_0x3e2c('0x5')),'defaultValue':_0x3e2c('0x4')}};
\ No newline at end of file
index b0624d3..6dcf7af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd460=['../../components/integrations/configuration','status','json','offset','undefined','limit','count','set','apply','reject','update','then','destroy','sendStatus','error','stack','name','send','index','map','DeskAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','includeAll','findAll','rows','catch','show','params','length','include','options','find','create','body','getConfigurations','findOne','DeskConfiguration','nolimit','addConfiguration','AccountId','getSubjects','channel','Descriptions','getDescriptions','Subjects','DeskField','getFields','priority','remoteUri','authType','username','password','consumerKey','consumerSecret','token','slice','substring','lastIndexOf','GET','format','%s/custom_fields','application/json','basic','headers','Authorization','base64','concat','_embedded','entries','active','label','statusCode','stringify','test','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb'];(function(_0xd6500b,_0x2a9cf5){var _0xae0548=function(_0x32a1cb){while(--_0x32a1cb){_0xd6500b['push'](_0xd6500b['shift']());}};_0xae0548(++_0x2a9cf5);}(_0xd460,0xd0));var _0x0d46=function(_0x4d30c0,_0x3a0ae7){_0x4d30c0=_0x4d30c0-0x0;var _0x5b0c2e=_0xd460[_0x4d30c0];return _0x5b0c2e;};'use strict';var emlformat=require(_0x0d46('0x0'));var rimraf=require(_0x0d46('0x1'));var zipdir=require(_0x0d46('0x2'));var jsonpatch=require(_0x0d46('0x3'));var rp=require(_0x0d46('0x4'));var moment=require(_0x0d46('0x5'));var BPromise=require(_0x0d46('0x6'));var Mustache=require(_0x0d46('0x7'));var util=require(_0x0d46('0x8'));var path=require(_0x0d46('0x9'));var sox=require(_0x0d46('0xa'));var csv=require('to-csv');var ejs=require(_0x0d46('0xb'));var fs=require('fs');var fs_extra=require(_0x0d46('0xc'));var _=require(_0x0d46('0xd'));var squel=require(_0x0d46('0xe'));var crypto=require('crypto');var jsforce=require(_0x0d46('0xf'));var deskjs=require(_0x0d46('0x10'));var toCsv=require(_0x0d46('0x11'));var querystring=require('querystring');var Papa=require(_0x0d46('0x12'));var Redis=require(_0x0d46('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x0d46('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0d46('0x15'));var logger=require('../../config/logger')(_0x0d46('0x16'));var utils=require(_0x0d46('0x17'));var config=require(_0x0d46('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x0d46('0x19'))['db'];var integrations=require(_0x0d46('0x1a'));function respondWithStatusCode(_0x294a08,_0x3d111a){_0x3d111a=_0x3d111a||0xcc;return function(_0xcb3027){if(_0xcb3027){return _0x294a08['sendStatus'](_0x3d111a);}return _0x294a08[_0x0d46('0x1b')](_0x3d111a)['end']();};}function respondWithResult(_0x125570,_0x5b7f7b){_0x5b7f7b=_0x5b7f7b||0xc8;return function(_0x3adde3){if(_0x3adde3){return _0x125570[_0x0d46('0x1b')](_0x5b7f7b)[_0x0d46('0x1c')](_0x3adde3);}};}function respondWithFilteredResult(_0x5af874,_0xe672db){return function(_0x522e13){if(_0x522e13){var _0x97fba3=typeof _0xe672db[_0x0d46('0x1d')]===_0x0d46('0x1e')&&typeof _0xe672db[_0x0d46('0x1f')]==='undefined';var _0x38e04a=_0x522e13[_0x0d46('0x20')];var _0x377371=_0x97fba3?0x0:_0xe672db[_0x0d46('0x1d')];var _0x179b7f=_0x97fba3?_0x522e13['count']:_0xe672db['offset']+_0xe672db[_0x0d46('0x1f')];var _0x1edd68;if(_0x179b7f>=_0x38e04a){_0x179b7f=_0x38e04a;_0x1edd68=0xc8;}else{_0x1edd68=0xce;}_0x5af874['status'](_0x1edd68);return _0x5af874[_0x0d46('0x21')]('Content-Range',_0x377371+'-'+_0x179b7f+'/'+_0x38e04a)[_0x0d46('0x1c')](_0x522e13);}return null;};}function patchUpdates(_0x100d21){return function(_0x37fa1a){try{jsonpatch[_0x0d46('0x22')](_0x37fa1a,_0x100d21,!![]);}catch(_0x2c0672){return BPromise[_0x0d46('0x23')](_0x2c0672);}return _0x37fa1a['save']();};}function saveUpdates(_0x38fd92,_0x1fb1e7){return function(_0x36122c){if(_0x36122c){return _0x36122c[_0x0d46('0x24')](_0x38fd92)[_0x0d46('0x25')](function(_0x381def){return _0x381def;});}return null;};}function removeEntity(_0x15b7d1,_0x35629e){return function(_0x5cc561){if(_0x5cc561){return _0x5cc561[_0x0d46('0x26')]()[_0x0d46('0x25')](function(){_0x15b7d1[_0x0d46('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x59e9ee,_0x5329e8){return function(_0x5a92f5){if(!_0x5a92f5){_0x59e9ee[_0x0d46('0x27')](0x194);}return _0x5a92f5;};}function handleError(_0xbba9bb,_0x525ca6){_0x525ca6=_0x525ca6||0x1f4;return function(_0x3c9aa7){logger[_0x0d46('0x28')](_0x3c9aa7[_0x0d46('0x29')]);if(_0x3c9aa7[_0x0d46('0x2a')]){delete _0x3c9aa7['name'];}_0xbba9bb[_0x0d46('0x1b')](_0x525ca6)[_0x0d46('0x2b')](_0x3c9aa7);};}exports[_0x0d46('0x2c')]=function(_0x370b6f,_0x1b5b01){var _0x5eb535={},_0x1d47b9={},_0x4b6c0b={'count':0x0,'rows':[]};var _0xe0c4df=_[_0x0d46('0x2d')](db[_0x0d46('0x2e')][_0x0d46('0x2f')],function(_0x1f2c85){return{'name':_0x1f2c85[_0x0d46('0x30')],'type':_0x1f2c85[_0x0d46('0x31')][_0x0d46('0x32')]};});_0x1d47b9[_0x0d46('0x33')]=_['map'](_0xe0c4df,_0x0d46('0x2a'));_0x1d47b9[_0x0d46('0x34')]=_[_0x0d46('0x35')](_0x370b6f[_0x0d46('0x34')]);_0x1d47b9[_0x0d46('0x36')]=_[_0x0d46('0x37')](_0x1d47b9[_0x0d46('0x33')],_0x1d47b9[_0x0d46('0x34')]);_0x5eb535[_0x0d46('0x38')]=_[_0x0d46('0x37')](_0x1d47b9[_0x0d46('0x33')],qs[_0x0d46('0x39')](_0x370b6f[_0x0d46('0x34')][_0x0d46('0x39')]));_0x5eb535[_0x0d46('0x38')]=_0x5eb535['attributes']['length']?_0x5eb535['attributes']:_0x1d47b9[_0x0d46('0x33')];if(!_0x370b6f[_0x0d46('0x34')][_0x0d46('0x3a')]('nolimit')){_0x5eb535[_0x0d46('0x1f')]=qs[_0x0d46('0x1f')](_0x370b6f[_0x0d46('0x34')][_0x0d46('0x1f')]);_0x5eb535[_0x0d46('0x1d')]=qs[_0x0d46('0x1d')](_0x370b6f[_0x0d46('0x34')][_0x0d46('0x1d')]);}_0x5eb535[_0x0d46('0x3b')]=qs[_0x0d46('0x3c')](_0x370b6f['query'][_0x0d46('0x3c')]);_0x5eb535[_0x0d46('0x3d')]=qs[_0x0d46('0x36')](_['pick'](_0x370b6f['query'],_0x1d47b9[_0x0d46('0x36')]),_0xe0c4df);if(_0x370b6f[_0x0d46('0x34')][_0x0d46('0x3e')]){_0x5eb535['where']=_[_0x0d46('0x3f')](_0x5eb535['where'],{'$or':_[_0x0d46('0x2d')](_0xe0c4df,function(_0x364743){if(_0x364743[_0x0d46('0x31')]!==_0x0d46('0x40')){var _0x19d52e={};_0x19d52e[_0x364743[_0x0d46('0x2a')]]={'$like':'%'+_0x370b6f[_0x0d46('0x34')][_0x0d46('0x3e')]+'%'};return _0x19d52e;}})});}_0x5eb535=_[_0x0d46('0x3f')]({},_0x5eb535,_0x370b6f['options']);var _0x459223={'where':_0x5eb535['where']};return db[_0x0d46('0x2e')]['count'](_0x459223)[_0x0d46('0x25')](function(_0x2f2651){_0x4b6c0b[_0x0d46('0x20')]=_0x2f2651;if(_0x370b6f[_0x0d46('0x34')][_0x0d46('0x41')]){_0x5eb535['include']=[{'all':!![]}];}return db[_0x0d46('0x2e')][_0x0d46('0x42')](_0x5eb535);})[_0x0d46('0x25')](function(_0x8c5b8d){_0x4b6c0b[_0x0d46('0x43')]=_0x8c5b8d;return _0x4b6c0b;})[_0x0d46('0x25')](respondWithFilteredResult(_0x1b5b01,_0x5eb535))[_0x0d46('0x44')](handleError(_0x1b5b01,null));};exports[_0x0d46('0x45')]=function(_0x600477,_0x56c191){var _0x266ce3={'raw':![],'where':{'id':_0x600477[_0x0d46('0x46')]['id']}},_0x4fcf88={};_0x4fcf88['model']=_[_0x0d46('0x35')](db[_0x0d46('0x2e')][_0x0d46('0x2f')]);_0x4fcf88['query']=_[_0x0d46('0x35')](_0x600477[_0x0d46('0x34')]);_0x4fcf88[_0x0d46('0x36')]=_[_0x0d46('0x37')](_0x4fcf88[_0x0d46('0x33')],_0x4fcf88['query']);_0x266ce3[_0x0d46('0x38')]=_[_0x0d46('0x37')](_0x4fcf88[_0x0d46('0x33')],qs[_0x0d46('0x39')](_0x600477['query'][_0x0d46('0x39')]));_0x266ce3['attributes']=_0x266ce3['attributes'][_0x0d46('0x47')]?_0x266ce3[_0x0d46('0x38')]:_0x4fcf88[_0x0d46('0x33')];if(_0x600477[_0x0d46('0x34')][_0x0d46('0x41')]){_0x266ce3[_0x0d46('0x48')]=[{'all':!![]}];}_0x266ce3=_['merge']({},_0x266ce3,_0x600477[_0x0d46('0x49')]);return db[_0x0d46('0x2e')][_0x0d46('0x4a')](_0x266ce3)[_0x0d46('0x25')](handleEntityNotFound(_0x56c191,null))[_0x0d46('0x25')](respondWithResult(_0x56c191,null))[_0x0d46('0x44')](handleError(_0x56c191,null));};exports[_0x0d46('0x4b')]=function(_0x55c772,_0x267853){return db['DeskAccount']['create'](_0x55c772[_0x0d46('0x4c')],{})[_0x0d46('0x25')](respondWithResult(_0x267853,0xc9))['catch'](handleError(_0x267853,null));};exports[_0x0d46('0x24')]=function(_0x5d4c56,_0x3a86fc){if(_0x5d4c56[_0x0d46('0x4c')]['id']){delete _0x5d4c56[_0x0d46('0x4c')]['id'];}return db['DeskAccount'][_0x0d46('0x4a')]({'where':{'id':_0x5d4c56[_0x0d46('0x46')]['id']}})['then'](handleEntityNotFound(_0x3a86fc,null))[_0x0d46('0x25')](saveUpdates(_0x5d4c56[_0x0d46('0x4c')],null))['then'](respondWithResult(_0x3a86fc,null))[_0x0d46('0x44')](handleError(_0x3a86fc,null));};exports[_0x0d46('0x26')]=function(_0x400cb4,_0x3c1d41){return db['DeskAccount'][_0x0d46('0x4a')]({'where':{'id':_0x400cb4[_0x0d46('0x46')]['id']}})[_0x0d46('0x25')](handleEntityNotFound(_0x3c1d41,null))['then'](removeEntity(_0x3c1d41,null))[_0x0d46('0x44')](handleError(_0x3c1d41,null));};exports[_0x0d46('0x4d')]=function(_0x112e43,_0x412527,_0x44cb22){var _0x44661d={};var _0x3f8e18={};var _0x471b54;var _0x1b9ac3;return db[_0x0d46('0x2e')][_0x0d46('0x4e')]({'where':{'id':_0x112e43[_0x0d46('0x46')]['id']}})['then'](handleEntityNotFound(_0x412527,null))[_0x0d46('0x25')](function(_0x5946a0){if(_0x5946a0){_0x471b54=_0x5946a0;_0x3f8e18['model']=_[_0x0d46('0x35')](db[_0x0d46('0x4f')]['rawAttributes']);_0x3f8e18[_0x0d46('0x34')]=_[_0x0d46('0x35')](_0x112e43['query']);_0x3f8e18['filters']=_[_0x0d46('0x37')](_0x3f8e18[_0x0d46('0x33')],_0x3f8e18[_0x0d46('0x34')]);_0x44661d[_0x0d46('0x38')]=_['intersection'](_0x3f8e18['model'],qs[_0x0d46('0x39')](_0x112e43[_0x0d46('0x34')]['fields']));_0x44661d[_0x0d46('0x38')]=_0x44661d['attributes'][_0x0d46('0x47')]?_0x44661d['attributes']:_0x3f8e18[_0x0d46('0x33')];_0x44661d[_0x0d46('0x3b')]=qs[_0x0d46('0x3c')](_0x112e43[_0x0d46('0x34')][_0x0d46('0x3c')]);_0x44661d[_0x0d46('0x3d')]=qs[_0x0d46('0x36')](_['pick'](_0x112e43[_0x0d46('0x34')],_0x3f8e18[_0x0d46('0x36')]));if(_0x112e43[_0x0d46('0x34')][_0x0d46('0x3e')]){_0x44661d[_0x0d46('0x3d')]=_[_0x0d46('0x3f')](_0x44661d[_0x0d46('0x3d')],{'$or':_[_0x0d46('0x2d')](_0x44661d['attributes'],function(_0x21fc12){var _0x4c28d9={};_0x4c28d9[_0x21fc12]={'$like':'%'+_0x112e43[_0x0d46('0x34')][_0x0d46('0x3e')]+'%'};return _0x4c28d9;})});}_0x44661d=_[_0x0d46('0x3f')]({},_0x44661d,_0x112e43[_0x0d46('0x49')]);return _0x471b54[_0x0d46('0x4d')](_0x44661d);}})['then'](function(_0x2db44d){if(_0x2db44d){_0x1b9ac3=_0x2db44d[_0x0d46('0x47')];if(!_0x112e43[_0x0d46('0x34')][_0x0d46('0x3a')](_0x0d46('0x50'))){_0x44661d['limit']=qs[_0x0d46('0x1f')](_0x112e43[_0x0d46('0x34')]['limit']);_0x44661d[_0x0d46('0x1d')]=qs[_0x0d46('0x1d')](_0x112e43[_0x0d46('0x34')][_0x0d46('0x1d')]);}return _0x471b54[_0x0d46('0x4d')](_0x44661d);}})[_0x0d46('0x25')](function(_0x2ac23f){if(_0x2ac23f){return _0x2ac23f?{'count':_0x1b9ac3,'rows':_0x2ac23f}:null;}})[_0x0d46('0x25')](respondWithResult(_0x412527,null))[_0x0d46('0x44')](handleError(_0x412527,null));};exports[_0x0d46('0x51')]=function(_0x378b5e,_0x3a74ff,_0x4dcb9c){if(_0x378b5e[_0x0d46('0x4c')]['id']){delete _0x378b5e['body']['id'];}return db[_0x0d46('0x2e')][_0x0d46('0x4e')]({'where':{'id':_0x378b5e[_0x0d46('0x46')]['id']}})[_0x0d46('0x25')](handleEntityNotFound(_0x3a74ff,null))[_0x0d46('0x25')](function(_0xbab903){if(_0xbab903){_0x378b5e[_0x0d46('0x4c')][_0x0d46('0x52')]=_0xbab903['id'];_0x378b5e[_0x0d46('0x4c')]['Subjects']=integrations[_0x0d46('0x53')](_0x378b5e[_0x0d46('0x4c')][_0x0d46('0x54')],_0x378b5e[_0x0d46('0x4c')]['type']);_0x378b5e['body'][_0x0d46('0x55')]=integrations[_0x0d46('0x56')](_0x378b5e[_0x0d46('0x4c')]['channel'],_0x378b5e[_0x0d46('0x4c')][_0x0d46('0x31')]);return db[_0x0d46('0x4f')]['create'](_0x378b5e[_0x0d46('0x4c')],{'include':[{'model':db['DeskField'],'as':_0x0d46('0x57')},{'model':db[_0x0d46('0x58')],'as':_0x0d46('0x55')}]});}return null;})[_0x0d46('0x25')](respondWithResult(_0x3a74ff,null))[_0x0d46('0x44')](handleError(_0x3a74ff,null));};exports[_0x0d46('0x59')]=function(_0x5ce192,_0x2cc337,_0x1ed026){var _0x505051=[{'name':'priority','label':_0x0d46('0x5a'),'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 _0x455ed3='';return db[_0x0d46('0x2e')]['findOne']({'where':{'id':_0x5ce192[_0x0d46('0x46')]['id']},'attributes':['id',_0x0d46('0x5b'),_0x0d46('0x5c'),_0x0d46('0x5d'),_0x0d46('0x5e'),_0x0d46('0x5f'),_0x0d46('0x60'),_0x0d46('0x61'),'tokenSecret']})['then'](handleEntityNotFound(_0x2cc337,null))[_0x0d46('0x25')](function(_0xbce9af){if(_0xbce9af){_0x455ed3=_0xbce9af[_0x0d46('0x5b')];var _0x3aa2cc=_0x455ed3[_0x0d46('0x62')](-0x1);if(_0x3aa2cc==='/'){_0x455ed3=_0x455ed3[_0x0d46('0x63')](0x0,_0x455ed3[_0x0d46('0x64')](_0x3aa2cc));}var _0xbb4a97={'method':_0x0d46('0x65'),'uri':util[_0x0d46('0x66')](_0x0d46('0x67'),_0x455ed3),'headers':{'Content-Type':_0x0d46('0x68'),'Accept':'application/json'},'json':!![]};if(_0xbce9af[_0x0d46('0x5c')]===_0x0d46('0x69')){_0xbb4a97[_0x0d46('0x6a')][_0x0d46('0x6b')]=util[_0x0d46('0x66')]('Basic\x20%s',new Buffer(util[_0x0d46('0x66')]('%s:%s',_0xbce9af[_0x0d46('0x5d')],_0xbce9af[_0x0d46('0x5e')]))['toString'](_0x0d46('0x6c')));}return rp(_0xbb4a97)['then'](function(_0x284ff0){return _0x505051[_0x0d46('0x6d')](_[_0x0d46('0x2d')](_0x284ff0[_0x0d46('0x6e')][_0x0d46('0x6f')],function(_0xc24300){return{'id':_0xc24300[_0x0d46('0x2a')],'name':_0xc24300[_0x0d46('0x2a')],'type':_0xc24300[_0x0d46('0x31')],'active':_0xc24300[_0x0d46('0x70')],'label':_0xc24300[_0x0d46('0x71')],'custom':!![]};}));});}})[_0x0d46('0x25')](function(_0x46447d){return{'count':_0x46447d[_0x0d46('0x47')],'rows':_0x46447d};})[_0x0d46('0x25')](respondWithResult(_0x2cc337,null))[_0x0d46('0x44')](function(_0x38c9af){var _0x4b06e3=_0x5ce192[_0x0d46('0x34')]['test']?0x1f4:_0x38c9af[_0x0d46('0x72')]||0x1f4;logger[_0x0d46('0x28')]('getFields,\x20%s,\x20%s,\x20%s',_0x0d46('0x59'),_0x4b06e3,JSON[_0x0d46('0x73')](_0x38c9af));delete _0x38c9af[_0x0d46('0x2a')];if(_0x4b06e3===0x191){_0x4b06e3=0x190;}_0x2cc337[_0x0d46('0x1b')](_0x4b06e3)[_0x0d46('0x2b')](_0x5ce192[_0x0d46('0x34')][_0x0d46('0x74')]?{'message':'Wrong\x20credentials','statusCode':_0x38c9af['statusCode']}:_0x38c9af);});};
\ No newline at end of file
+var _0x49e4=['sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','params','length','find','create','body','getConfigurations','findOne','DeskConfiguration','nolimit','AccountId','Subjects','channel','Descriptions','DeskField','getFields','priority','remoteUri','password','consumerSecret','slice','substring','%s/custom_fields','application/json','basic','headers','format','Basic\x20%s','%s:%s','username','toString','base64','concat','_embedded','entries','active','label','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','then','destroy','stack','name','send','map','DeskAccount','rawAttributes','fieldName','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','order'];(function(_0x4c45b1,_0x1dd3cc){var _0x50f1ad=function(_0x115f84){while(--_0x115f84){_0x4c45b1['push'](_0x4c45b1['shift']());}};_0x50f1ad(++_0x1dd3cc);}(_0x49e4,0x113));var _0x449e=function(_0x2444d0,_0x5baeed){_0x2444d0=_0x2444d0-0x0;var _0x3a7a82=_0x49e4[_0x2444d0];return _0x3a7a82;};'use strict';var emlformat=require(_0x449e('0x0'));var rimraf=require(_0x449e('0x1'));var zipdir=require(_0x449e('0x2'));var jsonpatch=require(_0x449e('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x449e('0x4'));var path=require(_0x449e('0x5'));var sox=require(_0x449e('0x6'));var csv=require(_0x449e('0x7'));var ejs=require(_0x449e('0x8'));var fs=require('fs');var fs_extra=require(_0x449e('0x9'));var _=require(_0x449e('0xa'));var squel=require(_0x449e('0xb'));var crypto=require(_0x449e('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x449e('0x7'));var querystring=require(_0x449e('0xd'));var Papa=require(_0x449e('0xe'));var Redis=require(_0x449e('0xf'));var authService=require(_0x449e('0x10'));var qs=require(_0x449e('0x11'));var as=require(_0x449e('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x449e('0x13'));var utils=require(_0x449e('0x14'));var config=require(_0x449e('0x15'));var licenseUtil=require(_0x449e('0x16'));var db=require(_0x449e('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x29a1cb,_0x4af7ac){_0x4af7ac=_0x4af7ac||0xcc;return function(_0x5199aa){if(_0x5199aa){return _0x29a1cb[_0x449e('0x18')](_0x4af7ac);}return _0x29a1cb[_0x449e('0x19')](_0x4af7ac)[_0x449e('0x1a')]();};}function respondWithResult(_0x1f1f1a,_0xbf03cf){_0xbf03cf=_0xbf03cf||0xc8;return function(_0x48ada0){if(_0x48ada0){return _0x1f1f1a[_0x449e('0x19')](_0xbf03cf)['json'](_0x48ada0);}};}function respondWithFilteredResult(_0x37c6c4,_0x516d44){return function(_0x1476d8){if(_0x1476d8){var _0x465abb=typeof _0x516d44[_0x449e('0x1b')]===_0x449e('0x1c')&&typeof _0x516d44[_0x449e('0x1d')]==='undefined';var _0x360f13=_0x1476d8[_0x449e('0x1e')];var _0x502100=_0x465abb?0x0:_0x516d44[_0x449e('0x1b')];var _0x564066=_0x465abb?_0x1476d8[_0x449e('0x1e')]:_0x516d44[_0x449e('0x1b')]+_0x516d44[_0x449e('0x1d')];var _0x1ff52d;if(_0x564066>=_0x360f13){_0x564066=_0x360f13;_0x1ff52d=0xc8;}else{_0x1ff52d=0xce;}_0x37c6c4[_0x449e('0x19')](_0x1ff52d);return _0x37c6c4[_0x449e('0x1f')](_0x449e('0x20'),_0x502100+'-'+_0x564066+'/'+_0x360f13)[_0x449e('0x21')](_0x1476d8);}return null;};}function patchUpdates(_0x58ee3f){return function(_0x595b82){try{jsonpatch['apply'](_0x595b82,_0x58ee3f,!![]);}catch(_0x164d4e){return BPromise[_0x449e('0x22')](_0x164d4e);}return _0x595b82[_0x449e('0x23')]();};}function saveUpdates(_0x6979ba,_0x1511a0){return function(_0x55f726){if(_0x55f726){return _0x55f726[_0x449e('0x24')](_0x6979ba)[_0x449e('0x25')](function(_0xfb5c69){return _0xfb5c69;});}return null;};}function removeEntity(_0x278426,_0x3d95f4){return function(_0x19b23e){if(_0x19b23e){return _0x19b23e[_0x449e('0x26')]()['then'](function(){_0x278426[_0x449e('0x19')](0xcc)[_0x449e('0x1a')]();});}};}function handleEntityNotFound(_0x13a7cb,_0x51ea2e){return function(_0x24c901){if(!_0x24c901){_0x13a7cb[_0x449e('0x18')](0x194);}return _0x24c901;};}function handleError(_0x41f898,_0x75fd14){_0x75fd14=_0x75fd14||0x1f4;return function(_0x1bc1e3){logger['error'](_0x1bc1e3[_0x449e('0x27')]);if(_0x1bc1e3[_0x449e('0x28')]){delete _0x1bc1e3[_0x449e('0x28')];}_0x41f898['status'](_0x75fd14)[_0x449e('0x29')](_0x1bc1e3);};}exports['index']=function(_0x883c44,_0x78e7b2){var _0x18ea85={},_0x414c2a={},_0x5158a7={'count':0x0,'rows':[]};var _0x11070=_[_0x449e('0x2a')](db[_0x449e('0x2b')][_0x449e('0x2c')],function(_0x25a45f){return{'name':_0x25a45f[_0x449e('0x2d')],'type':_0x25a45f['type']['key']};});_0x414c2a[_0x449e('0x2e')]=_[_0x449e('0x2a')](_0x11070,'name');_0x414c2a[_0x449e('0x2f')]=_[_0x449e('0x30')](_0x883c44[_0x449e('0x2f')]);_0x414c2a[_0x449e('0x31')]=_[_0x449e('0x32')](_0x414c2a[_0x449e('0x2e')],_0x414c2a[_0x449e('0x2f')]);_0x18ea85['attributes']=_[_0x449e('0x32')](_0x414c2a[_0x449e('0x2e')],qs[_0x449e('0x33')](_0x883c44[_0x449e('0x2f')][_0x449e('0x33')]));_0x18ea85[_0x449e('0x34')]=_0x18ea85[_0x449e('0x34')]['length']?_0x18ea85[_0x449e('0x34')]:_0x414c2a['model'];if(!_0x883c44[_0x449e('0x2f')][_0x449e('0x35')]('nolimit')){_0x18ea85[_0x449e('0x1d')]=qs['limit'](_0x883c44[_0x449e('0x2f')][_0x449e('0x1d')]);_0x18ea85[_0x449e('0x1b')]=qs[_0x449e('0x1b')](_0x883c44['query'][_0x449e('0x1b')]);}_0x18ea85[_0x449e('0x36')]=qs[_0x449e('0x37')](_0x883c44['query']['sort']);_0x18ea85[_0x449e('0x38')]=qs[_0x449e('0x31')](_[_0x449e('0x39')](_0x883c44[_0x449e('0x2f')],_0x414c2a[_0x449e('0x31')]),_0x11070);if(_0x883c44['query'][_0x449e('0x3a')]){_0x18ea85[_0x449e('0x38')]=_['merge'](_0x18ea85[_0x449e('0x38')],{'$or':_['map'](_0x11070,function(_0x5c166c){if(_0x5c166c[_0x449e('0x3b')]!==_0x449e('0x3c')){var _0x4bfab2={};_0x4bfab2[_0x5c166c[_0x449e('0x28')]]={'$like':'%'+_0x883c44['query']['filter']+'%'};return _0x4bfab2;}})});}_0x18ea85=_[_0x449e('0x3d')]({},_0x18ea85,_0x883c44[_0x449e('0x3e')]);var _0x31c07e={'where':_0x18ea85[_0x449e('0x38')]};return db[_0x449e('0x2b')][_0x449e('0x1e')](_0x31c07e)[_0x449e('0x25')](function(_0x1760df){_0x5158a7[_0x449e('0x1e')]=_0x1760df;if(_0x883c44[_0x449e('0x2f')][_0x449e('0x3f')]){_0x18ea85[_0x449e('0x40')]=[{'all':!![]}];}return db[_0x449e('0x2b')][_0x449e('0x41')](_0x18ea85);})[_0x449e('0x25')](function(_0x28e781){_0x5158a7['rows']=_0x28e781;return _0x5158a7;})[_0x449e('0x25')](respondWithFilteredResult(_0x78e7b2,_0x18ea85))[_0x449e('0x42')](handleError(_0x78e7b2,null));};exports[_0x449e('0x43')]=function(_0x7b9026,_0x3222fd){var _0x441588={'raw':![],'where':{'id':_0x7b9026[_0x449e('0x44')]['id']}},_0x5bb1f5={};_0x5bb1f5[_0x449e('0x2e')]=_[_0x449e('0x30')](db[_0x449e('0x2b')][_0x449e('0x2c')]);_0x5bb1f5[_0x449e('0x2f')]=_[_0x449e('0x30')](_0x7b9026['query']);_0x5bb1f5[_0x449e('0x31')]=_[_0x449e('0x32')](_0x5bb1f5[_0x449e('0x2e')],_0x5bb1f5[_0x449e('0x2f')]);_0x441588[_0x449e('0x34')]=_[_0x449e('0x32')](_0x5bb1f5[_0x449e('0x2e')],qs[_0x449e('0x33')](_0x7b9026[_0x449e('0x2f')][_0x449e('0x33')]));_0x441588[_0x449e('0x34')]=_0x441588['attributes'][_0x449e('0x45')]?_0x441588[_0x449e('0x34')]:_0x5bb1f5[_0x449e('0x2e')];if(_0x7b9026[_0x449e('0x2f')][_0x449e('0x3f')]){_0x441588[_0x449e('0x40')]=[{'all':!![]}];}_0x441588=_[_0x449e('0x3d')]({},_0x441588,_0x7b9026[_0x449e('0x3e')]);return db[_0x449e('0x2b')][_0x449e('0x46')](_0x441588)['then'](handleEntityNotFound(_0x3222fd,null))[_0x449e('0x25')](respondWithResult(_0x3222fd,null))[_0x449e('0x42')](handleError(_0x3222fd,null));};exports[_0x449e('0x47')]=function(_0x57958c,_0x572aa5){return db[_0x449e('0x2b')][_0x449e('0x47')](_0x57958c[_0x449e('0x48')],{})[_0x449e('0x25')](respondWithResult(_0x572aa5,0xc9))['catch'](handleError(_0x572aa5,null));};exports[_0x449e('0x24')]=function(_0x3b8bdc,_0x324adc){if(_0x3b8bdc[_0x449e('0x48')]['id']){delete _0x3b8bdc['body']['id'];}return db['DeskAccount'][_0x449e('0x46')]({'where':{'id':_0x3b8bdc[_0x449e('0x44')]['id']}})['then'](handleEntityNotFound(_0x324adc,null))[_0x449e('0x25')](saveUpdates(_0x3b8bdc[_0x449e('0x48')],null))[_0x449e('0x25')](respondWithResult(_0x324adc,null))[_0x449e('0x42')](handleError(_0x324adc,null));};exports[_0x449e('0x26')]=function(_0x5bf29b,_0x2ac000){return db[_0x449e('0x2b')][_0x449e('0x46')]({'where':{'id':_0x5bf29b[_0x449e('0x44')]['id']}})[_0x449e('0x25')](handleEntityNotFound(_0x2ac000,null))[_0x449e('0x25')](removeEntity(_0x2ac000,null))[_0x449e('0x42')](handleError(_0x2ac000,null));};exports[_0x449e('0x49')]=function(_0x3baf3f,_0x426d3f,_0x5320d7){var _0x557372={};var _0x19981a={};var _0x5f05e5;var _0x220c77;return db[_0x449e('0x2b')][_0x449e('0x4a')]({'where':{'id':_0x3baf3f[_0x449e('0x44')]['id']}})[_0x449e('0x25')](handleEntityNotFound(_0x426d3f,null))[_0x449e('0x25')](function(_0x145a0b){if(_0x145a0b){_0x5f05e5=_0x145a0b;_0x19981a[_0x449e('0x2e')]=_['keys'](db[_0x449e('0x4b')][_0x449e('0x2c')]);_0x19981a[_0x449e('0x2f')]=_[_0x449e('0x30')](_0x3baf3f[_0x449e('0x2f')]);_0x19981a[_0x449e('0x31')]=_[_0x449e('0x32')](_0x19981a['model'],_0x19981a[_0x449e('0x2f')]);_0x557372['attributes']=_['intersection'](_0x19981a['model'],qs[_0x449e('0x33')](_0x3baf3f[_0x449e('0x2f')][_0x449e('0x33')]));_0x557372[_0x449e('0x34')]=_0x557372[_0x449e('0x34')][_0x449e('0x45')]?_0x557372[_0x449e('0x34')]:_0x19981a['model'];_0x557372[_0x449e('0x36')]=qs[_0x449e('0x37')](_0x3baf3f[_0x449e('0x2f')][_0x449e('0x37')]);_0x557372[_0x449e('0x38')]=qs[_0x449e('0x31')](_['pick'](_0x3baf3f[_0x449e('0x2f')],_0x19981a[_0x449e('0x31')]));if(_0x3baf3f[_0x449e('0x2f')][_0x449e('0x3a')]){_0x557372['where']=_[_0x449e('0x3d')](_0x557372[_0x449e('0x38')],{'$or':_[_0x449e('0x2a')](_0x557372[_0x449e('0x34')],function(_0x3844ec){var _0x415d36={};_0x415d36[_0x3844ec]={'$like':'%'+_0x3baf3f['query'][_0x449e('0x3a')]+'%'};return _0x415d36;})});}_0x557372=_['merge']({},_0x557372,_0x3baf3f[_0x449e('0x3e')]);return _0x5f05e5['getConfigurations'](_0x557372);}})[_0x449e('0x25')](function(_0x5e707d){if(_0x5e707d){_0x220c77=_0x5e707d[_0x449e('0x45')];if(!_0x3baf3f[_0x449e('0x2f')][_0x449e('0x35')](_0x449e('0x4c'))){_0x557372['limit']=qs['limit'](_0x3baf3f[_0x449e('0x2f')]['limit']);_0x557372[_0x449e('0x1b')]=qs[_0x449e('0x1b')](_0x3baf3f[_0x449e('0x2f')][_0x449e('0x1b')]);}return _0x5f05e5[_0x449e('0x49')](_0x557372);}})[_0x449e('0x25')](function(_0x239e13){if(_0x239e13){return _0x239e13?{'count':_0x220c77,'rows':_0x239e13}:null;}})[_0x449e('0x25')](respondWithResult(_0x426d3f,null))[_0x449e('0x42')](handleError(_0x426d3f,null));};exports['addConfiguration']=function(_0x39e62e,_0x320dcc,_0x5b7d12){if(_0x39e62e['body']['id']){delete _0x39e62e[_0x449e('0x48')]['id'];}return db[_0x449e('0x2b')][_0x449e('0x4a')]({'where':{'id':_0x39e62e['params']['id']}})[_0x449e('0x25')](handleEntityNotFound(_0x320dcc,null))[_0x449e('0x25')](function(_0x582b3e){if(_0x582b3e){_0x39e62e[_0x449e('0x48')][_0x449e('0x4d')]=_0x582b3e['id'];_0x39e62e[_0x449e('0x48')][_0x449e('0x4e')]=integrations['getSubjects'](_0x39e62e[_0x449e('0x48')][_0x449e('0x4f')],_0x39e62e[_0x449e('0x48')]['type']);_0x39e62e['body'][_0x449e('0x50')]=integrations['getDescriptions'](_0x39e62e[_0x449e('0x48')]['channel'],_0x39e62e[_0x449e('0x48')]['type']);return db['DeskConfiguration'][_0x449e('0x47')](_0x39e62e[_0x449e('0x48')],{'include':[{'model':db[_0x449e('0x51')],'as':_0x449e('0x4e')},{'model':db[_0x449e('0x51')],'as':_0x449e('0x50')}]});}return null;})['then'](respondWithResult(_0x320dcc,null))[_0x449e('0x42')](handleError(_0x320dcc,null));};exports[_0x449e('0x52')]=function(_0x20c86b,_0x5ea651,_0x281b89){var _0x1cff52=[{'name':_0x449e('0x53'),'label':_0x449e('0x53'),'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 _0x48a8ff='';return db[_0x449e('0x2b')][_0x449e('0x4a')]({'where':{'id':_0x20c86b[_0x449e('0x44')]['id']},'attributes':['id',_0x449e('0x54'),'authType','username',_0x449e('0x55'),'consumerKey',_0x449e('0x56'),'token','tokenSecret']})['then'](handleEntityNotFound(_0x5ea651,null))[_0x449e('0x25')](function(_0x2beae9){if(_0x2beae9){_0x48a8ff=_0x2beae9[_0x449e('0x54')];var _0x318af0=_0x48a8ff[_0x449e('0x57')](-0x1);if(_0x318af0==='/'){_0x48a8ff=_0x48a8ff[_0x449e('0x58')](0x0,_0x48a8ff['lastIndexOf'](_0x318af0));}var _0x58c70a={'method':'GET','uri':util['format'](_0x449e('0x59'),_0x48a8ff),'headers':{'Content-Type':'application/json','Accept':_0x449e('0x5a')},'json':!![]};if(_0x2beae9['authType']===_0x449e('0x5b')){_0x58c70a[_0x449e('0x5c')]['Authorization']=util[_0x449e('0x5d')](_0x449e('0x5e'),new Buffer(util[_0x449e('0x5d')](_0x449e('0x5f'),_0x2beae9[_0x449e('0x60')],_0x2beae9[_0x449e('0x55')]))[_0x449e('0x61')](_0x449e('0x62')));}return rp(_0x58c70a)['then'](function(_0x1dd773){return _0x1cff52[_0x449e('0x63')](_['map'](_0x1dd773[_0x449e('0x64')][_0x449e('0x65')],function(_0x19055d){return{'id':_0x19055d[_0x449e('0x28')],'name':_0x19055d[_0x449e('0x28')],'type':_0x19055d[_0x449e('0x3b')],'active':_0x19055d[_0x449e('0x66')],'label':_0x19055d[_0x449e('0x67')],'custom':!![]};}));});}})[_0x449e('0x25')](function(_0x25b1a4){return{'count':_0x25b1a4[_0x449e('0x45')],'rows':_0x25b1a4};})[_0x449e('0x25')](respondWithResult(_0x5ea651,null))[_0x449e('0x42')](function(_0xe2fff){var _0x94d261=_0x20c86b[_0x449e('0x2f')]['test']?0x1f4:_0xe2fff[_0x449e('0x68')]||0x1f4;logger[_0x449e('0x69')](_0x449e('0x6a'),_0x449e('0x52'),_0x94d261,JSON[_0x449e('0x6b')](_0xe2fff));delete _0xe2fff['name'];if(_0x94d261===0x191){_0x94d261=0x190;}_0x5ea651[_0x449e('0x19')](_0x94d261)[_0x449e('0x29')](_0x20c86b['query'][_0x449e('0x6c')]?{'message':_0x449e('0x6d'),'statusCode':_0xe2fff[_0x449e('0x68')]}:_0xe2fff);});};
\ No newline at end of file
index 09dbe33..eb89e4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7a3=['exports','define','int_desk_accounts','../../config/logger','api','moment','bluebird','path','rimraf','./intDeskAccount.attributes'];(function(_0x29c3f3,_0x17cc26){var _0x420c9e=function(_0x5c660c){while(--_0x5c660c){_0x29c3f3['push'](_0x29c3f3['shift']());}};_0x420c9e(++_0x17cc26);}(_0xe7a3,0x85));var _0x3e7a=function(_0x1e7431,_0x5ab70d){_0x1e7431=_0x1e7431-0x0;var _0x48823b=_0xe7a3[_0x1e7431];return _0x48823b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3e7a('0x0'))(_0x3e7a('0x1'));var moment=require(_0x3e7a('0x2'));var BPromise=require(_0x3e7a('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3e7a('0x4'));var rimraf=require(_0x3e7a('0x5'));var config=require('../../config/environment');var attributes=require(_0x3e7a('0x6'));var integrations=require('../../components/integrations/configuration');module[_0x3e7a('0x7')]=function(_0x1a6a0c,_0x3011fa){return _0x1a6a0c[_0x3e7a('0x8')]('DeskAccount',attributes,{'tableName':_0x3e7a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0ed9=['path','rimraf','./intDeskAccount.attributes','../../components/integrations/configuration','exports','define','lodash','util','../../config/logger','moment','bluebird'];(function(_0x3f0155,_0x357cb1){var _0xa5d98e=function(_0x123b36){while(--_0x123b36){_0x3f0155['push'](_0x3f0155['shift']());}};_0xa5d98e(++_0x357cb1);}(_0x0ed9,0x10e));var _0x90ed=function(_0x406e46,_0x5799cb){_0x406e46=_0x406e46-0x0;var _0x4a3742=_0x0ed9[_0x406e46];return _0x4a3742;};'use strict';var _=require(_0x90ed('0x0'));var util=require(_0x90ed('0x1'));var logger=require(_0x90ed('0x2'))('api');var moment=require(_0x90ed('0x3'));var BPromise=require(_0x90ed('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x90ed('0x5'));var rimraf=require(_0x90ed('0x6'));var config=require('../../config/environment');var attributes=require(_0x90ed('0x7'));var integrations=require(_0x90ed('0x8'));module[_0x90ed('0x9')]=function(_0x2fb6f1,_0x20c2e3){return _0x2fb6f1[_0x90ed('0xa')]('DeskAccount',attributes,{'tableName':'int_desk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d434056..1c824df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ee6=['GetDeskAccount','ShowDeskAccount','lodash','util','moment','bluebird','ioredis','../../mysqldb','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','code','error','message','result','catch','DeskAccount','findAll','options','raw','where','attributes','limit','include','map','model'];(function(_0x55b7a4,_0x10998f){var _0x2db534=function(_0x2fbd62){while(--_0x2fbd62){_0x55b7a4['push'](_0x55b7a4['shift']());}};_0x2db534(++_0x10998f);}(_0x3ee6,0xfe));var _0x63ee=function(_0x1e5953,_0x44a0e1){_0x1e5953=_0x1e5953-0x0;var _0x46f9eb=_0x3ee6[_0x1e5953];return _0x46f9eb;};'use strict';var _=require(_0x63ee('0x0'));var util=require(_0x63ee('0x1'));var moment=require(_0x63ee('0x2'));var BPromise=require(_0x63ee('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x63ee('0x4'));var db=require(_0x63ee('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x63ee('0x6'));var config=require(_0x63ee('0x7'));var jayson=require(_0x63ee('0x8'));var client=jayson[_0x63ee('0x9')][_0x63ee('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x579af9,_0x34b8aa,_0x62e7ee){return new BPromise(function(_0x1708fe,_0x25660f){return client[_0x63ee('0xb')](_0x579af9,_0x62e7ee)[_0x63ee('0xc')](function(_0xefefa3){logger[_0x63ee('0xd')](_0x63ee('0xe'),_0x34b8aa,_0x63ee('0xf'));logger[_0x63ee('0x10')](_0x63ee('0x11'),_0x34b8aa,'request\x20sent',JSON[_0x63ee('0x12')](_0xefefa3));if(_0xefefa3['error']){if(_0xefefa3['error'][_0x63ee('0x13')]===0x1f4){logger[_0x63ee('0x14')]('DeskAccount,\x20%s,\x20%s',_0x34b8aa,_0xefefa3[_0x63ee('0x14')][_0x63ee('0x15')]);return _0x25660f(_0xefefa3['error'][_0x63ee('0x15')]);}logger['error']('DeskAccount,\x20%s,\x20%s',_0x34b8aa,_0xefefa3[_0x63ee('0x14')][_0x63ee('0x15')]);return _0x1708fe(_0xefefa3['error']['message']);}else{logger[_0x63ee('0xd')](_0x63ee('0xe'),_0x34b8aa,_0x63ee('0xf'));_0x1708fe(_0xefefa3[_0x63ee('0x16')][_0x63ee('0x15')]);}})[_0x63ee('0x17')](function(_0x215412){logger[_0x63ee('0x14')](_0x63ee('0xe'),_0x34b8aa,_0x215412);_0x25660f(_0x215412);});});}exports['GetDeskAccount']=function(_0xa1d282){var _0x11e1b4=this;return new Promise(function(_0x57796c,_0x26a8c3){return db[_0x63ee('0x18')][_0x63ee('0x19')]({'raw':_0xa1d282[_0x63ee('0x1a')]?_0xa1d282[_0x63ee('0x1a')][_0x63ee('0x1b')]===undefined?!![]:![]:!![],'where':_0xa1d282[_0x63ee('0x1a')]?_0xa1d282[_0x63ee('0x1a')][_0x63ee('0x1c')]||null:null,'attributes':_0xa1d282[_0x63ee('0x1a')]?_0xa1d282[_0x63ee('0x1a')][_0x63ee('0x1d')]||null:null,'limit':_0xa1d282[_0x63ee('0x1a')]?_0xa1d282[_0x63ee('0x1a')][_0x63ee('0x1e')]||null:null,'include':_0xa1d282['options']?_0xa1d282[_0x63ee('0x1a')][_0x63ee('0x1f')]?_[_0x63ee('0x20')](_0xa1d282[_0x63ee('0x1a')][_0x63ee('0x1f')],function(_0x41529b){return{'model':db[_0x41529b[_0x63ee('0x21')]],'as':_0x41529b['as'],'attributes':_0x41529b['attributes'],'include':_0x41529b[_0x63ee('0x1f')]?_[_0x63ee('0x20')](_0x41529b[_0x63ee('0x1f')],function(_0xdea5d9){return{'model':db[_0xdea5d9['model']],'as':_0xdea5d9['as'],'attributes':_0xdea5d9['attributes'],'include':_0xdea5d9[_0x63ee('0x1f')]?_['map'](_0xdea5d9['include'],function(_0x679c90){return{'model':db[_0x679c90[_0x63ee('0x21')]],'as':_0x679c90['as'],'attributes':_0x679c90[_0x63ee('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x63ee('0xc')](function(_0x2b40ec){logger[_0x63ee('0xd')]('GetDeskAccount',_0xa1d282);logger['debug'](_0x63ee('0x22'),_0xa1d282,JSON[_0x63ee('0x12')](_0x2b40ec));_0x57796c(_0x2b40ec);})[_0x63ee('0x17')](function(_0x43c94f){logger[_0x63ee('0x14')]('GetDeskAccount',_0x43c94f[_0x63ee('0x15')],_0xa1d282);_0x26a8c3(_0x11e1b4[_0x63ee('0x14')](0x1f4,_0x43c94f[_0x63ee('0x15')]));});});};exports['ShowDeskAccount']=function(_0x2cd55b){var _0x333d5c=this;return new Promise(function(_0x7d1058,_0x4bfc7c){return db[_0x63ee('0x18')]['find']({'raw':_0x2cd55b[_0x63ee('0x1a')]?_0x2cd55b[_0x63ee('0x1a')][_0x63ee('0x1b')]===undefined?!![]:![]:!![],'where':_0x2cd55b['options']?_0x2cd55b[_0x63ee('0x1a')][_0x63ee('0x1c')]||null:null,'attributes':_0x2cd55b[_0x63ee('0x1a')]?_0x2cd55b[_0x63ee('0x1a')][_0x63ee('0x1d')]||null:null,'include':_0x2cd55b[_0x63ee('0x1a')]?_0x2cd55b['options']['include']?_[_0x63ee('0x20')](_0x2cd55b['options'][_0x63ee('0x1f')],function(_0x3c63a8){return{'model':db[_0x3c63a8[_0x63ee('0x21')]],'as':_0x3c63a8['as'],'attributes':_0x3c63a8[_0x63ee('0x1d')],'include':_0x3c63a8[_0x63ee('0x1f')]?_['map'](_0x3c63a8[_0x63ee('0x1f')],function(_0x24aee6){return{'model':db[_0x24aee6[_0x63ee('0x21')]],'as':_0x24aee6['as'],'attributes':_0x24aee6['attributes'],'include':_0x24aee6[_0x63ee('0x1f')]?_['map'](_0x24aee6[_0x63ee('0x1f')],function(_0x5ebb4d){return{'model':db[_0x5ebb4d['model']],'as':_0x5ebb4d['as'],'attributes':_0x5ebb4d[_0x63ee('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2d668a){logger[_0x63ee('0xd')]('ShowDeskAccount',_0x2cd55b);logger[_0x63ee('0x10')](_0x63ee('0x23'),_0x2cd55b,JSON[_0x63ee('0x12')](_0x2d668a));_0x7d1058(_0x2d668a);})[_0x63ee('0x17')](function(_0x4d9fb1){logger[_0x63ee('0x14')](_0x63ee('0x23'),_0x4d9fb1['message'],_0x2cd55b);_0x4bfc7c(_0x333d5c[_0x63ee('0x14')](0x1f4,_0x4d9fb1[_0x63ee('0x15')]));});});};
\ No newline at end of file
+var _0xebb6=['ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','request','then','info','DeskAccount,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','GetDeskAccount','DeskAccount','findAll','options','raw','where','attributes','limit','include','map','model','debug','catch','ShowDeskAccount','find','lodash','util','moment','bluebird','randomstring'];(function(_0x377a6e,_0x59b99d){var _0x37f751=function(_0x2ed25c){while(--_0x2ed25c){_0x377a6e['push'](_0x377a6e['shift']());}};_0x37f751(++_0x59b99d);}(_0xebb6,0xf0));var _0x6ebb=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0xebb6[_0x3b5250];return _0xc844a1;};'use strict';var _=require(_0x6ebb('0x0'));var util=require(_0x6ebb('0x1'));var moment=require(_0x6ebb('0x2'));var BPromise=require(_0x6ebb('0x3'));var rs=require(_0x6ebb('0x4'));var fs=require('fs');var Redis=require(_0x6ebb('0x5'));var db=require(_0x6ebb('0x6'))['db'];var utils=require(_0x6ebb('0x7'));var logger=require(_0x6ebb('0x8'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x6ebb('0x9')][_0x6ebb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1f807b,_0x3961b8,_0x31b607){return new BPromise(function(_0x2de50a,_0x2c3107){return client[_0x6ebb('0xb')](_0x1f807b,_0x31b607)[_0x6ebb('0xc')](function(_0x22a24f){logger[_0x6ebb('0xd')](_0x6ebb('0xe'),_0x3961b8,_0x6ebb('0xf'));logger['debug']('DeskAccount,\x20%s,\x20%s,\x20%s',_0x3961b8,_0x6ebb('0xf'),JSON[_0x6ebb('0x10')](_0x22a24f));if(_0x22a24f['error']){if(_0x22a24f['error']['code']===0x1f4){logger[_0x6ebb('0x11')](_0x6ebb('0xe'),_0x3961b8,_0x22a24f['error'][_0x6ebb('0x12')]);return _0x2c3107(_0x22a24f[_0x6ebb('0x11')]['message']);}logger['error'](_0x6ebb('0xe'),_0x3961b8,_0x22a24f[_0x6ebb('0x11')]['message']);return _0x2de50a(_0x22a24f[_0x6ebb('0x11')][_0x6ebb('0x12')]);}else{logger[_0x6ebb('0xd')](_0x6ebb('0xe'),_0x3961b8,'request\x20sent');_0x2de50a(_0x22a24f[_0x6ebb('0x13')][_0x6ebb('0x12')]);}})['catch'](function(_0x3c0aeb){logger['error'](_0x6ebb('0xe'),_0x3961b8,_0x3c0aeb);_0x2c3107(_0x3c0aeb);});});}exports[_0x6ebb('0x14')]=function(_0x1d9b85){var _0xf6f26a=this;return new Promise(function(_0x419c6e,_0x4d583c){return db[_0x6ebb('0x15')][_0x6ebb('0x16')]({'raw':_0x1d9b85[_0x6ebb('0x17')]?_0x1d9b85[_0x6ebb('0x17')][_0x6ebb('0x18')]===undefined?!![]:![]:!![],'where':_0x1d9b85[_0x6ebb('0x17')]?_0x1d9b85[_0x6ebb('0x17')][_0x6ebb('0x19')]||null:null,'attributes':_0x1d9b85[_0x6ebb('0x17')]?_0x1d9b85[_0x6ebb('0x17')][_0x6ebb('0x1a')]||null:null,'limit':_0x1d9b85[_0x6ebb('0x17')]?_0x1d9b85['options'][_0x6ebb('0x1b')]||null:null,'include':_0x1d9b85[_0x6ebb('0x17')]?_0x1d9b85[_0x6ebb('0x17')][_0x6ebb('0x1c')]?_[_0x6ebb('0x1d')](_0x1d9b85[_0x6ebb('0x17')]['include'],function(_0x2b90de){return{'model':db[_0x2b90de[_0x6ebb('0x1e')]],'as':_0x2b90de['as'],'attributes':_0x2b90de[_0x6ebb('0x1a')],'include':_0x2b90de[_0x6ebb('0x1c')]?_[_0x6ebb('0x1d')](_0x2b90de[_0x6ebb('0x1c')],function(_0x5aed03){return{'model':db[_0x5aed03[_0x6ebb('0x1e')]],'as':_0x5aed03['as'],'attributes':_0x5aed03['attributes'],'include':_0x5aed03[_0x6ebb('0x1c')]?_[_0x6ebb('0x1d')](_0x5aed03[_0x6ebb('0x1c')],function(_0x42e90c){return{'model':db[_0x42e90c[_0x6ebb('0x1e')]],'as':_0x42e90c['as'],'attributes':_0x42e90c[_0x6ebb('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x6ebb('0xc')](function(_0x1fd5b4){logger[_0x6ebb('0xd')](_0x6ebb('0x14'),_0x1d9b85);logger[_0x6ebb('0x1f')](_0x6ebb('0x14'),_0x1d9b85,JSON[_0x6ebb('0x10')](_0x1fd5b4));_0x419c6e(_0x1fd5b4);})[_0x6ebb('0x20')](function(_0xf3b33b){logger[_0x6ebb('0x11')]('GetDeskAccount',_0xf3b33b[_0x6ebb('0x12')],_0x1d9b85);_0x4d583c(_0xf6f26a[_0x6ebb('0x11')](0x1f4,_0xf3b33b[_0x6ebb('0x12')]));});});};exports[_0x6ebb('0x21')]=function(_0x13bdb3){var _0x266858=this;return new Promise(function(_0x18e3e6,_0x89534a){return db[_0x6ebb('0x15')][_0x6ebb('0x22')]({'raw':_0x13bdb3['options']?_0x13bdb3['options'][_0x6ebb('0x18')]===undefined?!![]:![]:!![],'where':_0x13bdb3[_0x6ebb('0x17')]?_0x13bdb3['options']['where']||null:null,'attributes':_0x13bdb3[_0x6ebb('0x17')]?_0x13bdb3[_0x6ebb('0x17')][_0x6ebb('0x1a')]||null:null,'include':_0x13bdb3[_0x6ebb('0x17')]?_0x13bdb3[_0x6ebb('0x17')][_0x6ebb('0x1c')]?_['map'](_0x13bdb3[_0x6ebb('0x17')][_0x6ebb('0x1c')],function(_0x535a8d){return{'model':db[_0x535a8d[_0x6ebb('0x1e')]],'as':_0x535a8d['as'],'attributes':_0x535a8d[_0x6ebb('0x1a')],'include':_0x535a8d[_0x6ebb('0x1c')]?_[_0x6ebb('0x1d')](_0x535a8d[_0x6ebb('0x1c')],function(_0x317b9d){return{'model':db[_0x317b9d[_0x6ebb('0x1e')]],'as':_0x317b9d['as'],'attributes':_0x317b9d[_0x6ebb('0x1a')],'include':_0x317b9d[_0x6ebb('0x1c')]?_[_0x6ebb('0x1d')](_0x317b9d[_0x6ebb('0x1c')],function(_0x3c16a5){return{'model':db[_0x3c16a5['model']],'as':_0x3c16a5['as'],'attributes':_0x3c16a5[_0x6ebb('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x6ebb('0xc')](function(_0x4bce04){logger[_0x6ebb('0xd')]('ShowDeskAccount',_0x13bdb3);logger[_0x6ebb('0x1f')](_0x6ebb('0x21'),_0x13bdb3,JSON[_0x6ebb('0x10')](_0x4bce04));_0x18e3e6(_0x4bce04);})[_0x6ebb('0x20')](function(_0x3085d2){logger[_0x6ebb('0x11')](_0x6ebb('0x21'),_0x3085d2[_0x6ebb('0x12')],_0x13bdb3);_0x89534a(_0x266858['error'](0x1f4,_0x3085d2['message']));});});};
\ No newline at end of file
index d9b0a73..386b6b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['getTags','post','create','setTags','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getSubjects','/:id/descriptions','/:id/tags'];(function(_0x3b0657,_0x860d88){var _0x510ea3=function(_0x451ac3){while(--_0x451ac3){_0x3b0657['push'](_0x3b0657['shift']());}};_0x510ea3(++_0x860d88);}(_0xedd9,0xfc));var _0x9edd=function(_0xbed58e,_0x314ec7){_0xbed58e=_0xbed58e-0x0;var _0x39e140=_0xedd9[_0xbed58e];return _0x39e140;};'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');var controller=require(_0x9edd('0x8'));router[_0x9edd('0x9')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0xb')]);router['get'](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0xd')]);router[_0x9edd('0x9')](_0x9edd('0xe'),auth[_0x9edd('0xa')](),controller['getFields']);router[_0x9edd('0x9')]('/:id/subjects',auth[_0x9edd('0xa')](),controller[_0x9edd('0xf')]);router['get'](_0x9edd('0x10'),auth[_0x9edd('0xa')](),controller['getDescriptions']);router[_0x9edd('0x9')](_0x9edd('0x11'),auth[_0x9edd('0xa')](),controller[_0x9edd('0x12')]);router[_0x9edd('0x13')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0x14')]);router[_0x9edd('0x13')]('/:id/tags',auth[_0x9edd('0xa')](),controller[_0x9edd('0x15')]);router[_0x9edd('0x16')](_0x9edd('0xc'),auth[_0x9edd('0xa')](),controller[_0x9edd('0x17')]);router[_0x9edd('0x18')](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0x19')]);module[_0x9edd('0x1a')]=router;
\ No newline at end of file
+var _0x008c=['../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','getFields','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','setTags','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x49e3a1,_0x287108){var _0x539478=function(_0x2799b2){while(--_0x2799b2){_0x49e3a1['push'](_0x49e3a1['shift']());}};_0x539478(++_0x287108);}(_0x008c,0x188));var _0xc008=function(_0x282ccc,_0x5d66a1){_0x282ccc=_0x282ccc-0x0;var _0x27c2dd=_0x008c[_0x282ccc];return _0x27c2dd;};'use strict';var multer=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var path=require(_0xc008('0x2'));var timeout=require(_0xc008('0x3'));var express=require(_0xc008('0x4'));var router=express['Router']();var fs_extra=require(_0xc008('0x5'));var auth=require(_0xc008('0x6'));var interaction=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var controller=require(_0xc008('0x9'));router[_0xc008('0xa')]('/',auth[_0xc008('0xb')](),controller[_0xc008('0xc')]);router[_0xc008('0xa')]('/:id',auth[_0xc008('0xb')](),controller['show']);router[_0xc008('0xa')]('/:id/fields',auth['isAuthenticated'](),controller[_0xc008('0xd')]);router[_0xc008('0xa')]('/:id/subjects',auth['isAuthenticated'](),controller['getSubjects']);router[_0xc008('0xa')](_0xc008('0xe'),auth['isAuthenticated'](),controller[_0xc008('0xf')]);router[_0xc008('0xa')](_0xc008('0x10'),auth[_0xc008('0xb')](),controller[_0xc008('0x11')]);router[_0xc008('0x12')]('/',auth[_0xc008('0xb')](),controller['create']);router['post'](_0xc008('0x10'),auth['isAuthenticated'](),controller[_0xc008('0x13')]);router[_0xc008('0x14')](_0xc008('0x15'),auth[_0xc008('0xb')](),controller[_0xc008('0x16')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xc008('0x17')]);module[_0xc008('0x18')]=router;
\ No newline at end of file
index e01db97..64133e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafd6=['sequelize','STRING'];(function(_0x5bd426,_0x4878e5){var _0x23a7eb=function(_0x594b42){while(--_0x594b42){_0x5bd426['push'](_0x5bd426['shift']());}};_0x23a7eb(++_0x4878e5);}(_0xafd6,0x88));var _0x6afd=function(_0x132979,_0x3856ef){_0x132979=_0x132979-0x0;var _0x5c89f2=_0xafd6[_0x132979];return _0x5c89f2;};'use strict';var Sequelize=require(_0x6afd('0x0'));module['exports']={'name':{'type':Sequelize[_0x6afd('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x9802=['STRING','exports'];(function(_0x3511d3,_0x4107ae){var _0x5d6321=function(_0x1a23da){while(--_0x1a23da){_0x3511d3['push'](_0x3511d3['shift']());}};_0x5d6321(++_0x4107ae);}(_0x9802,0x1b7));var _0x2980=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0x9802[_0x4d613c];return _0x301fe3;};'use strict';var Sequelize=require('sequelize');module[_0x2980('0x0')]={'name':{'type':Sequelize[_0x2980('0x1')]},'description':{'type':Sequelize[_0x2980('0x1')]}};
\ No newline at end of file
index db111dd..5a5f366 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59f0=['../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','map','DeskConfiguration','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','find','create','body','getFields','findOne','order','getSubjects','getDescriptions','params','DeskField','getTags','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x59f0,0x18c));var _0x059f=function(_0x229e8e,_0x2bf415){_0x229e8e=_0x229e8e-0x0;var _0x457d2a=_0x59f0[_0x229e8e];return _0x457d2a;};'use strict';var emlformat=require(_0x059f('0x0'));var rimraf=require(_0x059f('0x1'));var zipdir=require(_0x059f('0x2'));var jsonpatch=require(_0x059f('0x3'));var rp=require('request-promise');var moment=require(_0x059f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x059f('0x5'));var util=require(_0x059f('0x6'));var path=require(_0x059f('0x7'));var sox=require(_0x059f('0x8'));var csv=require(_0x059f('0x9'));var ejs=require(_0x059f('0xa'));var fs=require('fs');var fs_extra=require(_0x059f('0xb'));var _=require(_0x059f('0xc'));var squel=require('squel');var crypto=require(_0x059f('0xd'));var jsforce=require(_0x059f('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x059f('0x9'));var querystring=require(_0x059f('0xf'));var Papa=require(_0x059f('0x10'));var Redis=require(_0x059f('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x059f('0x12'));var hardwareService=require(_0x059f('0x13'));var logger=require(_0x059f('0x14'))('api');var utils=require(_0x059f('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x059f('0x16'));var db=require(_0x059f('0x17'))['db'];function respondWithStatusCode(_0x44a682,_0x113b21){_0x113b21=_0x113b21||0xcc;return function(_0x1a799e){if(_0x1a799e){return _0x44a682['sendStatus'](_0x113b21);}return _0x44a682[_0x059f('0x18')](_0x113b21)[_0x059f('0x19')]();};}function respondWithResult(_0x384189,_0x4a0734){_0x4a0734=_0x4a0734||0xc8;return function(_0x46515a){if(_0x46515a){return _0x384189[_0x059f('0x18')](_0x4a0734)[_0x059f('0x1a')](_0x46515a);}};}function respondWithFilteredResult(_0x287296,_0x1f6073){return function(_0x25a5db){if(_0x25a5db){var _0x575344=typeof _0x1f6073[_0x059f('0x1b')]==='undefined'&&typeof _0x1f6073['limit']===_0x059f('0x1c');var _0x2866bc=_0x25a5db['count'];var _0x143462=_0x575344?0x0:_0x1f6073[_0x059f('0x1b')];var _0x3659a3=_0x575344?_0x25a5db[_0x059f('0x1d')]:_0x1f6073[_0x059f('0x1b')]+_0x1f6073[_0x059f('0x1e')];var _0x2e35a9;if(_0x3659a3>=_0x2866bc){_0x3659a3=_0x2866bc;_0x2e35a9=0xc8;}else{_0x2e35a9=0xce;}_0x287296[_0x059f('0x18')](_0x2e35a9);return _0x287296[_0x059f('0x1f')]('Content-Range',_0x143462+'-'+_0x3659a3+'/'+_0x2866bc)[_0x059f('0x1a')](_0x25a5db);}return null;};}function patchUpdates(_0x3d9726){return function(_0x1b6987){try{jsonpatch[_0x059f('0x20')](_0x1b6987,_0x3d9726,!![]);}catch(_0x44f549){return BPromise[_0x059f('0x21')](_0x44f549);}return _0x1b6987[_0x059f('0x22')]();};}function saveUpdates(_0x51009e,_0x48355d){return function(_0xa3635f){if(_0xa3635f){return _0xa3635f[_0x059f('0x23')](_0x51009e)[_0x059f('0x24')](function(_0x2344ae){return _0x2344ae;});}return null;};}function removeEntity(_0x5903c1,_0x446eda){return function(_0x1706fc){if(_0x1706fc){return _0x1706fc[_0x059f('0x25')]()[_0x059f('0x24')](function(){_0x5903c1[_0x059f('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2cfe72,_0xf3eab7){return function(_0x142964){if(!_0x142964){_0x2cfe72[_0x059f('0x26')](0x194);}return _0x142964;};}function handleError(_0xbc0db9,_0x418e4d){_0x418e4d=_0x418e4d||0x1f4;return function(_0x320999){logger[_0x059f('0x27')](_0x320999[_0x059f('0x28')]);if(_0x320999['name']){delete _0x320999[_0x059f('0x29')];}_0xbc0db9['status'](_0x418e4d)[_0x059f('0x2a')](_0x320999);};}exports['index']=function(_0x196a09,_0x1d92cb){var _0x25ef62={},_0x420c7b={},_0x52e29d={'count':0x0,'rows':[]};var _0x3c7711=_[_0x059f('0x2b')](db[_0x059f('0x2c')][_0x059f('0x2d')],function(_0x3e5c0d){return{'name':_0x3e5c0d['fieldName'],'type':_0x3e5c0d[_0x059f('0x2e')][_0x059f('0x2f')]};});_0x420c7b[_0x059f('0x30')]=_[_0x059f('0x2b')](_0x3c7711,_0x059f('0x29'));_0x420c7b[_0x059f('0x31')]=_[_0x059f('0x32')](_0x196a09[_0x059f('0x31')]);_0x420c7b[_0x059f('0x33')]=_['intersection'](_0x420c7b[_0x059f('0x30')],_0x420c7b['query']);_0x25ef62['attributes']=_[_0x059f('0x34')](_0x420c7b['model'],qs[_0x059f('0x35')](_0x196a09['query'][_0x059f('0x35')]));_0x25ef62['attributes']=_0x25ef62[_0x059f('0x36')][_0x059f('0x37')]?_0x25ef62[_0x059f('0x36')]:_0x420c7b[_0x059f('0x30')];if(!_0x196a09[_0x059f('0x31')][_0x059f('0x38')](_0x059f('0x39'))){_0x25ef62['limit']=qs[_0x059f('0x1e')](_0x196a09['query'][_0x059f('0x1e')]);_0x25ef62['offset']=qs[_0x059f('0x1b')](_0x196a09[_0x059f('0x31')][_0x059f('0x1b')]);}_0x25ef62['order']=qs[_0x059f('0x3a')](_0x196a09[_0x059f('0x31')][_0x059f('0x3a')]);_0x25ef62[_0x059f('0x3b')]=qs['filters'](_[_0x059f('0x3c')](_0x196a09['query'],_0x420c7b[_0x059f('0x33')]),_0x3c7711);if(_0x196a09[_0x059f('0x31')][_0x059f('0x3d')]){_0x25ef62[_0x059f('0x3b')]=_[_0x059f('0x3e')](_0x25ef62[_0x059f('0x3b')],{'$or':_['map'](_0x3c7711,function(_0x1a75d6){if(_0x1a75d6[_0x059f('0x2e')]!==_0x059f('0x3f')){var _0x10a6b2={};_0x10a6b2[_0x1a75d6[_0x059f('0x29')]]={'$like':'%'+_0x196a09['query'][_0x059f('0x3d')]+'%'};return _0x10a6b2;}})});}_0x25ef62=_[_0x059f('0x3e')]({},_0x25ef62,_0x196a09[_0x059f('0x40')]);var _0x4b3279={'where':_0x25ef62[_0x059f('0x3b')]};return db[_0x059f('0x2c')]['count'](_0x4b3279)[_0x059f('0x24')](function(_0x339508){_0x52e29d[_0x059f('0x1d')]=_0x339508;if(_0x196a09[_0x059f('0x31')][_0x059f('0x41')]){_0x25ef62['include']=[{'all':!![]}];}return db[_0x059f('0x2c')][_0x059f('0x42')](_0x25ef62);})[_0x059f('0x24')](function(_0x2d1f1e){_0x52e29d[_0x059f('0x43')]=_0x2d1f1e;return _0x52e29d;})[_0x059f('0x24')](respondWithFilteredResult(_0x1d92cb,_0x25ef62))[_0x059f('0x44')](handleError(_0x1d92cb,null));};exports[_0x059f('0x45')]=function(_0x130704,_0x35cfdc){var _0x30216d={'raw':![],'where':{'id':_0x130704['params']['id']}},_0x565684={};_0x565684[_0x059f('0x30')]=_[_0x059f('0x32')](db[_0x059f('0x2c')][_0x059f('0x2d')]);_0x565684[_0x059f('0x31')]=_[_0x059f('0x32')](_0x130704[_0x059f('0x31')]);_0x565684[_0x059f('0x33')]=_[_0x059f('0x34')](_0x565684[_0x059f('0x30')],_0x565684['query']);_0x30216d[_0x059f('0x36')]=_[_0x059f('0x34')](_0x565684[_0x059f('0x30')],qs[_0x059f('0x35')](_0x130704[_0x059f('0x31')][_0x059f('0x35')]));_0x30216d['attributes']=_0x30216d[_0x059f('0x36')][_0x059f('0x37')]?_0x30216d[_0x059f('0x36')]:_0x565684['model'];if(_0x130704[_0x059f('0x31')]['includeAll']){_0x30216d['include']=[{'all':!![]}];}_0x30216d=_[_0x059f('0x3e')]({},_0x30216d,_0x130704[_0x059f('0x40')]);return db[_0x059f('0x2c')][_0x059f('0x46')](_0x30216d)[_0x059f('0x24')](handleEntityNotFound(_0x35cfdc,null))[_0x059f('0x24')](respondWithResult(_0x35cfdc,null))[_0x059f('0x44')](handleError(_0x35cfdc,null));};exports[_0x059f('0x47')]=function(_0x57a8eb,_0x23aa29){return db[_0x059f('0x2c')]['create'](_0x57a8eb[_0x059f('0x48')],{})[_0x059f('0x24')](respondWithResult(_0x23aa29,0xc9))['catch'](handleError(_0x23aa29,null));};exports[_0x059f('0x23')]=function(_0x33690e,_0x5c4790){if(_0x33690e[_0x059f('0x48')]['id']){delete _0x33690e[_0x059f('0x48')]['id'];}return db[_0x059f('0x2c')][_0x059f('0x46')]({'where':{'id':_0x33690e['params']['id']}})['then'](handleEntityNotFound(_0x5c4790,null))[_0x059f('0x24')](saveUpdates(_0x33690e['body'],null))[_0x059f('0x24')](respondWithResult(_0x5c4790,null))[_0x059f('0x44')](handleError(_0x5c4790,null));};exports[_0x059f('0x25')]=function(_0x57616e,_0x39b6b6){return db[_0x059f('0x2c')][_0x059f('0x46')]({'where':{'id':_0x57616e['params']['id']}})[_0x059f('0x24')](handleEntityNotFound(_0x39b6b6,null))['then'](removeEntity(_0x39b6b6,null))[_0x059f('0x44')](handleError(_0x39b6b6,null));};exports[_0x059f('0x49')]=function(_0x34571a,_0x504107,_0x114f36){var _0x48b4c6={};var _0x4085ad={};var _0x14fa07;var _0x56969e;return db['DeskConfiguration'][_0x059f('0x4a')]({'where':{'id':_0x34571a['params']['id']}})[_0x059f('0x24')](handleEntityNotFound(_0x504107,null))[_0x059f('0x24')](function(_0xa84496){if(_0xa84496){_0x14fa07=_0xa84496;_0x4085ad[_0x059f('0x30')]=_[_0x059f('0x32')](db['DeskField'][_0x059f('0x2d')]);_0x4085ad[_0x059f('0x31')]=_[_0x059f('0x32')](_0x34571a[_0x059f('0x31')]);_0x4085ad[_0x059f('0x33')]=_[_0x059f('0x34')](_0x4085ad['model'],_0x4085ad['query']);_0x48b4c6[_0x059f('0x36')]=_[_0x059f('0x34')](_0x4085ad[_0x059f('0x30')],qs['fields'](_0x34571a[_0x059f('0x31')]['fields']));_0x48b4c6[_0x059f('0x36')]=_0x48b4c6[_0x059f('0x36')][_0x059f('0x37')]?_0x48b4c6[_0x059f('0x36')]:_0x4085ad[_0x059f('0x30')];_0x48b4c6[_0x059f('0x4b')]=qs[_0x059f('0x3a')](_0x34571a[_0x059f('0x31')]['sort']);_0x48b4c6[_0x059f('0x3b')]=qs[_0x059f('0x33')](_['pick'](_0x34571a['query'],_0x4085ad['filters']));if(_0x34571a[_0x059f('0x31')][_0x059f('0x3d')]){_0x48b4c6[_0x059f('0x3b')]=_['merge'](_0x48b4c6[_0x059f('0x3b')],{'$or':_[_0x059f('0x2b')](_0x48b4c6[_0x059f('0x36')],function(_0x3f9e7e){var _0x36791b={};_0x36791b[_0x3f9e7e]={'$like':'%'+_0x34571a['query'][_0x059f('0x3d')]+'%'};return _0x36791b;})});}_0x48b4c6=_[_0x059f('0x3e')]({},_0x48b4c6,_0x34571a[_0x059f('0x40')]);return _0x14fa07[_0x059f('0x49')](_0x48b4c6);}})['then'](function(_0x30673f){if(_0x30673f){_0x56969e=_0x30673f[_0x059f('0x37')];if(!_0x34571a[_0x059f('0x31')][_0x059f('0x38')](_0x059f('0x39'))){_0x48b4c6[_0x059f('0x1e')]=qs['limit'](_0x34571a['query'][_0x059f('0x1e')]);_0x48b4c6[_0x059f('0x1b')]=qs[_0x059f('0x1b')](_0x34571a['query'][_0x059f('0x1b')]);}return _0x14fa07['getFields'](_0x48b4c6);}})[_0x059f('0x24')](function(_0x2e5016){if(_0x2e5016){return _0x2e5016?{'count':_0x56969e,'rows':_0x2e5016}:null;}})[_0x059f('0x24')](respondWithResult(_0x504107,null))[_0x059f('0x44')](handleError(_0x504107,null));};exports['getSubjects']=function(_0x4ae470,_0x1c6be2,_0x3fb005){var _0x15c3e8={};var _0x47981f={};var _0x1e929d;var _0x3e98da;return db[_0x059f('0x2c')][_0x059f('0x4a')]({'where':{'id':_0x4ae470['params']['id']}})[_0x059f('0x24')](handleEntityNotFound(_0x1c6be2,null))[_0x059f('0x24')](function(_0x359e76){if(_0x359e76){_0x1e929d=_0x359e76;_0x47981f['model']=_[_0x059f('0x32')](db['DeskField'][_0x059f('0x2d')]);_0x47981f[_0x059f('0x31')]=_[_0x059f('0x32')](_0x4ae470[_0x059f('0x31')]);_0x47981f['filters']=_[_0x059f('0x34')](_0x47981f['model'],_0x47981f[_0x059f('0x31')]);_0x15c3e8[_0x059f('0x36')]=_[_0x059f('0x34')](_0x47981f[_0x059f('0x30')],qs[_0x059f('0x35')](_0x4ae470[_0x059f('0x31')][_0x059f('0x35')]));_0x15c3e8[_0x059f('0x36')]=_0x15c3e8[_0x059f('0x36')]['length']?_0x15c3e8[_0x059f('0x36')]:_0x47981f[_0x059f('0x30')];_0x15c3e8[_0x059f('0x4b')]=qs['sort'](_0x4ae470['query'][_0x059f('0x3a')]);_0x15c3e8[_0x059f('0x3b')]=qs['filters'](_[_0x059f('0x3c')](_0x4ae470[_0x059f('0x31')],_0x47981f['filters']));if(_0x4ae470['query'][_0x059f('0x3d')]){_0x15c3e8[_0x059f('0x3b')]=_[_0x059f('0x3e')](_0x15c3e8[_0x059f('0x3b')],{'$or':_[_0x059f('0x2b')](_0x15c3e8[_0x059f('0x36')],function(_0x2a16f5){var _0x33bb6d={};_0x33bb6d[_0x2a16f5]={'$like':'%'+_0x4ae470[_0x059f('0x31')][_0x059f('0x3d')]+'%'};return _0x33bb6d;})});}_0x15c3e8=_['merge']({},_0x15c3e8,_0x4ae470['options']);return _0x1e929d['getSubjects'](_0x15c3e8);}})['then'](function(_0xdf92bd){if(_0xdf92bd){_0x3e98da=_0xdf92bd[_0x059f('0x37')];if(!_0x4ae470[_0x059f('0x31')][_0x059f('0x38')]('nolimit')){_0x15c3e8[_0x059f('0x1e')]=qs[_0x059f('0x1e')](_0x4ae470[_0x059f('0x31')][_0x059f('0x1e')]);_0x15c3e8[_0x059f('0x1b')]=qs['offset'](_0x4ae470[_0x059f('0x31')][_0x059f('0x1b')]);}return _0x1e929d[_0x059f('0x4c')](_0x15c3e8);}})[_0x059f('0x24')](function(_0x2568f8){if(_0x2568f8){return _0x2568f8?{'count':_0x3e98da,'rows':_0x2568f8}:null;}})[_0x059f('0x24')](respondWithResult(_0x1c6be2,null))[_0x059f('0x44')](handleError(_0x1c6be2,null));};exports[_0x059f('0x4d')]=function(_0x45d1b4,_0x4c0890,_0xfe9427){var _0xd1ae34={};var _0xac250c={};var _0x15fc9d;var _0x44e701;return db[_0x059f('0x2c')][_0x059f('0x4a')]({'where':{'id':_0x45d1b4[_0x059f('0x4e')]['id']}})[_0x059f('0x24')](handleEntityNotFound(_0x4c0890,null))[_0x059f('0x24')](function(_0xc85dd8){if(_0xc85dd8){_0x15fc9d=_0xc85dd8;_0xac250c[_0x059f('0x30')]=_[_0x059f('0x32')](db[_0x059f('0x4f')][_0x059f('0x2d')]);_0xac250c[_0x059f('0x31')]=_['keys'](_0x45d1b4[_0x059f('0x31')]);_0xac250c[_0x059f('0x33')]=_[_0x059f('0x34')](_0xac250c[_0x059f('0x30')],_0xac250c[_0x059f('0x31')]);_0xd1ae34[_0x059f('0x36')]=_['intersection'](_0xac250c[_0x059f('0x30')],qs[_0x059f('0x35')](_0x45d1b4['query'][_0x059f('0x35')]));_0xd1ae34[_0x059f('0x36')]=_0xd1ae34[_0x059f('0x36')][_0x059f('0x37')]?_0xd1ae34[_0x059f('0x36')]:_0xac250c[_0x059f('0x30')];_0xd1ae34[_0x059f('0x4b')]=qs[_0x059f('0x3a')](_0x45d1b4['query']['sort']);_0xd1ae34[_0x059f('0x3b')]=qs[_0x059f('0x33')](_[_0x059f('0x3c')](_0x45d1b4[_0x059f('0x31')],_0xac250c[_0x059f('0x33')]));if(_0x45d1b4[_0x059f('0x31')][_0x059f('0x3d')]){_0xd1ae34[_0x059f('0x3b')]=_['merge'](_0xd1ae34[_0x059f('0x3b')],{'$or':_['map'](_0xd1ae34[_0x059f('0x36')],function(_0x554c26){var _0x2f4e10={};_0x2f4e10[_0x554c26]={'$like':'%'+_0x45d1b4[_0x059f('0x31')][_0x059f('0x3d')]+'%'};return _0x2f4e10;})});}_0xd1ae34=_[_0x059f('0x3e')]({},_0xd1ae34,_0x45d1b4[_0x059f('0x40')]);return _0x15fc9d[_0x059f('0x4d')](_0xd1ae34);}})['then'](function(_0x541859){if(_0x541859){_0x44e701=_0x541859['length'];if(!_0x45d1b4['query'][_0x059f('0x38')](_0x059f('0x39'))){_0xd1ae34['limit']=qs['limit'](_0x45d1b4[_0x059f('0x31')][_0x059f('0x1e')]);_0xd1ae34[_0x059f('0x1b')]=qs[_0x059f('0x1b')](_0x45d1b4['query']['offset']);}return _0x15fc9d[_0x059f('0x4d')](_0xd1ae34);}})['then'](function(_0x1ca6a5){if(_0x1ca6a5){return _0x1ca6a5?{'count':_0x44e701,'rows':_0x1ca6a5}:null;}})[_0x059f('0x24')](respondWithResult(_0x4c0890,null))['catch'](handleError(_0x4c0890,null));};exports[_0x059f('0x50')]=function(_0x16e5bc,_0x4af02a,_0x2e6ae5){var _0x23214c={};var _0x4ebcac={};var _0x102903;var _0xd7d782;return db[_0x059f('0x2c')]['findOne']({'where':{'id':_0x16e5bc[_0x059f('0x4e')]['id']}})[_0x059f('0x24')](handleEntityNotFound(_0x4af02a,null))[_0x059f('0x24')](function(_0x1c866c){if(_0x1c866c){_0x102903=_0x1c866c;_0x4ebcac[_0x059f('0x30')]=_[_0x059f('0x32')](db['Tag'][_0x059f('0x2d')]);_0x4ebcac[_0x059f('0x31')]=_['keys'](_0x16e5bc[_0x059f('0x31')]);_0x4ebcac[_0x059f('0x33')]=_[_0x059f('0x34')](_0x4ebcac[_0x059f('0x30')],_0x4ebcac['query']);_0x23214c[_0x059f('0x36')]=_[_0x059f('0x34')](_0x4ebcac[_0x059f('0x30')],qs['fields'](_0x16e5bc['query']['fields']));_0x23214c[_0x059f('0x36')]=_0x23214c['attributes'][_0x059f('0x37')]?_0x23214c['attributes']:_0x4ebcac[_0x059f('0x30')];_0x23214c['order']=qs[_0x059f('0x3a')](_0x16e5bc['query'][_0x059f('0x3a')]);_0x23214c[_0x059f('0x3b')]=qs[_0x059f('0x33')](_['pick'](_0x16e5bc['query'],_0x4ebcac[_0x059f('0x33')]));if(_0x16e5bc['query'][_0x059f('0x3d')]){_0x23214c['where']=_['merge'](_0x23214c[_0x059f('0x3b')],{'$or':_[_0x059f('0x2b')](_0x23214c[_0x059f('0x36')],function(_0x4ba44d){var _0x1add7c={};_0x1add7c[_0x4ba44d]={'$like':'%'+_0x16e5bc[_0x059f('0x31')]['filter']+'%'};return _0x1add7c;})});}_0x23214c=_['merge']({},_0x23214c,_0x16e5bc['options']);return _0x102903['getTags'](_0x23214c);}})[_0x059f('0x24')](function(_0xfedf09){if(_0xfedf09){_0xd7d782=_0xfedf09[_0x059f('0x37')];if(!_0x16e5bc[_0x059f('0x31')]['hasOwnProperty'](_0x059f('0x39'))){_0x23214c[_0x059f('0x1e')]=qs[_0x059f('0x1e')](_0x16e5bc[_0x059f('0x31')][_0x059f('0x1e')]);_0x23214c['offset']=qs[_0x059f('0x1b')](_0x16e5bc[_0x059f('0x31')]['offset']);}return _0x102903[_0x059f('0x50')](_0x23214c);}})[_0x059f('0x24')](function(_0xb79644){if(_0xb79644){return _0xb79644?{'count':_0xd7d782,'rows':_0xb79644}:null;}})['then'](respondWithResult(_0x4af02a,null))[_0x059f('0x44')](handleError(_0x4af02a,null));};exports[_0x059f('0x51')]=function(_0xbf8fe5,_0x4b9b4c,_0x340cde){if(_0xbf8fe5[_0x059f('0x48')]['id']){delete _0xbf8fe5['body']['id'];}return db[_0x059f('0x2c')][_0x059f('0x4a')]({'where':{'id':_0xbf8fe5[_0x059f('0x4e')]['id']}})[_0x059f('0x24')](handleEntityNotFound(_0x4b9b4c,null))[_0x059f('0x24')](function(_0x1223bc){if(_0x1223bc){return _0x1223bc[_0x059f('0x51')](_0xbf8fe5['body'][_0x059f('0x52')]||[]);}return null;})[_0x059f('0x24')](respondWithResult(_0x4b9b4c,null))[_0x059f('0x44')](handleError(_0x4b9b4c,null));};
\ No newline at end of file
+var _0x0cee=['nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','then','catch','params','find','create','body','getFields','findOne','DeskField','hasOwnProperty','getSubjects','getDescriptions','getTags','setTags','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','destroy','end','error','stack','send','index','map','DeskConfiguration','rawAttributes','type','key','model','name','query','keys','filters','intersection','attributes','fields','length'];(function(_0x469d07,_0x1da668){var _0x3bb8ca=function(_0x3672e3){while(--_0x3672e3){_0x469d07['push'](_0x469d07['shift']());}};_0x3bb8ca(++_0x1da668);}(_0x0cee,0x1ba));var _0xe0ce=function(_0x342aac,_0x49e51f){_0x342aac=_0x342aac-0x0;var _0x50238e=_0x0cee[_0x342aac];return _0x50238e;};'use strict';var emlformat=require(_0xe0ce('0x0'));var rimraf=require(_0xe0ce('0x1'));var zipdir=require(_0xe0ce('0x2'));var jsonpatch=require(_0xe0ce('0x3'));var rp=require(_0xe0ce('0x4'));var moment=require(_0xe0ce('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xe0ce('0x6'));var util=require(_0xe0ce('0x7'));var path=require(_0xe0ce('0x8'));var sox=require(_0xe0ce('0x9'));var csv=require(_0xe0ce('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe0ce('0xb'));var squel=require(_0xe0ce('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xe0ce('0xd'));var toCsv=require(_0xe0ce('0xa'));var querystring=require('querystring');var Papa=require(_0xe0ce('0xe'));var Redis=require(_0xe0ce('0xf'));var authService=require(_0xe0ce('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xe0ce('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe0ce('0x12'))(_0xe0ce('0x13'));var utils=require(_0xe0ce('0x14'));var config=require(_0xe0ce('0x15'));var licenseUtil=require(_0xe0ce('0x16'));var db=require(_0xe0ce('0x17'))['db'];function respondWithStatusCode(_0x4fb9dd,_0x4780c3){_0x4780c3=_0x4780c3||0xcc;return function(_0x5584ab){if(_0x5584ab){return _0x4fb9dd[_0xe0ce('0x18')](_0x4780c3);}return _0x4fb9dd['status'](_0x4780c3)['end']();};}function respondWithResult(_0x339a6e,_0x4e9506){_0x4e9506=_0x4e9506||0xc8;return function(_0x2ff824){if(_0x2ff824){return _0x339a6e[_0xe0ce('0x19')](_0x4e9506)[_0xe0ce('0x1a')](_0x2ff824);}};}function respondWithFilteredResult(_0x2e5945,_0x6f0031){return function(_0x31ec4f){if(_0x31ec4f){var _0x24f308=typeof _0x6f0031[_0xe0ce('0x1b')]===_0xe0ce('0x1c')&&typeof _0x6f0031['limit']===_0xe0ce('0x1c');var _0x24b1ea=_0x31ec4f[_0xe0ce('0x1d')];var _0x1a7f08=_0x24f308?0x0:_0x6f0031[_0xe0ce('0x1b')];var _0x44dc64=_0x24f308?_0x31ec4f[_0xe0ce('0x1d')]:_0x6f0031['offset']+_0x6f0031[_0xe0ce('0x1e')];var _0x29655a;if(_0x44dc64>=_0x24b1ea){_0x44dc64=_0x24b1ea;_0x29655a=0xc8;}else{_0x29655a=0xce;}_0x2e5945['status'](_0x29655a);return _0x2e5945[_0xe0ce('0x1f')](_0xe0ce('0x20'),_0x1a7f08+'-'+_0x44dc64+'/'+_0x24b1ea)[_0xe0ce('0x1a')](_0x31ec4f);}return null;};}function patchUpdates(_0x3c538e){return function(_0x3885c1){try{jsonpatch[_0xe0ce('0x21')](_0x3885c1,_0x3c538e,!![]);}catch(_0x2463e9){return BPromise['reject'](_0x2463e9);}return _0x3885c1[_0xe0ce('0x22')]();};}function saveUpdates(_0x4789a5,_0x37488d){return function(_0x5c7d11){if(_0x5c7d11){return _0x5c7d11[_0xe0ce('0x23')](_0x4789a5)['then'](function(_0x55bfde){return _0x55bfde;});}return null;};}function removeEntity(_0x711252,_0x3871df){return function(_0x2f0d5f){if(_0x2f0d5f){return _0x2f0d5f[_0xe0ce('0x24')]()['then'](function(){_0x711252[_0xe0ce('0x19')](0xcc)[_0xe0ce('0x25')]();});}};}function handleEntityNotFound(_0x49fc3f,_0x6af40b){return function(_0x569169){if(!_0x569169){_0x49fc3f[_0xe0ce('0x18')](0x194);}return _0x569169;};}function handleError(_0x216738,_0x4059c1){_0x4059c1=_0x4059c1||0x1f4;return function(_0x48514f){logger[_0xe0ce('0x26')](_0x48514f[_0xe0ce('0x27')]);if(_0x48514f['name']){delete _0x48514f['name'];}_0x216738[_0xe0ce('0x19')](_0x4059c1)[_0xe0ce('0x28')](_0x48514f);};}exports[_0xe0ce('0x29')]=function(_0x2678f0,_0x223c34){var _0x3a9b4e={},_0x2194c2={},_0x54d16d={'count':0x0,'rows':[]};var _0x584d2b=_[_0xe0ce('0x2a')](db[_0xe0ce('0x2b')][_0xe0ce('0x2c')],function(_0x3919b4){return{'name':_0x3919b4['fieldName'],'type':_0x3919b4[_0xe0ce('0x2d')][_0xe0ce('0x2e')]};});_0x2194c2[_0xe0ce('0x2f')]=_[_0xe0ce('0x2a')](_0x584d2b,_0xe0ce('0x30'));_0x2194c2[_0xe0ce('0x31')]=_[_0xe0ce('0x32')](_0x2678f0[_0xe0ce('0x31')]);_0x2194c2[_0xe0ce('0x33')]=_[_0xe0ce('0x34')](_0x2194c2[_0xe0ce('0x2f')],_0x2194c2['query']);_0x3a9b4e[_0xe0ce('0x35')]=_[_0xe0ce('0x34')](_0x2194c2[_0xe0ce('0x2f')],qs['fields'](_0x2678f0[_0xe0ce('0x31')][_0xe0ce('0x36')]));_0x3a9b4e[_0xe0ce('0x35')]=_0x3a9b4e[_0xe0ce('0x35')][_0xe0ce('0x37')]?_0x3a9b4e['attributes']:_0x2194c2[_0xe0ce('0x2f')];if(!_0x2678f0[_0xe0ce('0x31')]['hasOwnProperty'](_0xe0ce('0x38'))){_0x3a9b4e[_0xe0ce('0x1e')]=qs[_0xe0ce('0x1e')](_0x2678f0[_0xe0ce('0x31')][_0xe0ce('0x1e')]);_0x3a9b4e[_0xe0ce('0x1b')]=qs[_0xe0ce('0x1b')](_0x2678f0[_0xe0ce('0x31')][_0xe0ce('0x1b')]);}_0x3a9b4e[_0xe0ce('0x39')]=qs[_0xe0ce('0x3a')](_0x2678f0[_0xe0ce('0x31')][_0xe0ce('0x3a')]);_0x3a9b4e[_0xe0ce('0x3b')]=qs[_0xe0ce('0x33')](_[_0xe0ce('0x3c')](_0x2678f0[_0xe0ce('0x31')],_0x2194c2[_0xe0ce('0x33')]),_0x584d2b);if(_0x2678f0[_0xe0ce('0x31')][_0xe0ce('0x3d')]){_0x3a9b4e['where']=_['merge'](_0x3a9b4e[_0xe0ce('0x3b')],{'$or':_[_0xe0ce('0x2a')](_0x584d2b,function(_0x28c453){if(_0x28c453['type']!==_0xe0ce('0x3e')){var _0x33305c={};_0x33305c[_0x28c453[_0xe0ce('0x30')]]={'$like':'%'+_0x2678f0[_0xe0ce('0x31')][_0xe0ce('0x3d')]+'%'};return _0x33305c;}})});}_0x3a9b4e=_[_0xe0ce('0x3f')]({},_0x3a9b4e,_0x2678f0[_0xe0ce('0x40')]);var _0x16adee={'where':_0x3a9b4e[_0xe0ce('0x3b')]};return db[_0xe0ce('0x2b')]['count'](_0x16adee)['then'](function(_0x511fb4){_0x54d16d[_0xe0ce('0x1d')]=_0x511fb4;if(_0x2678f0[_0xe0ce('0x31')][_0xe0ce('0x41')]){_0x3a9b4e[_0xe0ce('0x42')]=[{'all':!![]}];}return db[_0xe0ce('0x2b')][_0xe0ce('0x43')](_0x3a9b4e);})['then'](function(_0x2a52ed){_0x54d16d[_0xe0ce('0x44')]=_0x2a52ed;return _0x54d16d;})[_0xe0ce('0x45')](respondWithFilteredResult(_0x223c34,_0x3a9b4e))[_0xe0ce('0x46')](handleError(_0x223c34,null));};exports['show']=function(_0x1d7695,_0x30dc6d){var _0x372b73={'raw':![],'where':{'id':_0x1d7695[_0xe0ce('0x47')]['id']}},_0x2d540e={};_0x2d540e[_0xe0ce('0x2f')]=_[_0xe0ce('0x32')](db[_0xe0ce('0x2b')][_0xe0ce('0x2c')]);_0x2d540e[_0xe0ce('0x31')]=_['keys'](_0x1d7695['query']);_0x2d540e['filters']=_['intersection'](_0x2d540e[_0xe0ce('0x2f')],_0x2d540e[_0xe0ce('0x31')]);_0x372b73[_0xe0ce('0x35')]=_[_0xe0ce('0x34')](_0x2d540e[_0xe0ce('0x2f')],qs[_0xe0ce('0x36')](_0x1d7695[_0xe0ce('0x31')]['fields']));_0x372b73['attributes']=_0x372b73[_0xe0ce('0x35')][_0xe0ce('0x37')]?_0x372b73[_0xe0ce('0x35')]:_0x2d540e[_0xe0ce('0x2f')];if(_0x1d7695[_0xe0ce('0x31')][_0xe0ce('0x41')]){_0x372b73[_0xe0ce('0x42')]=[{'all':!![]}];}_0x372b73=_[_0xe0ce('0x3f')]({},_0x372b73,_0x1d7695[_0xe0ce('0x40')]);return db[_0xe0ce('0x2b')][_0xe0ce('0x48')](_0x372b73)[_0xe0ce('0x45')](handleEntityNotFound(_0x30dc6d,null))['then'](respondWithResult(_0x30dc6d,null))['catch'](handleError(_0x30dc6d,null));};exports[_0xe0ce('0x49')]=function(_0x4b955e,_0x278637){return db[_0xe0ce('0x2b')][_0xe0ce('0x49')](_0x4b955e[_0xe0ce('0x4a')],{})[_0xe0ce('0x45')](respondWithResult(_0x278637,0xc9))[_0xe0ce('0x46')](handleError(_0x278637,null));};exports[_0xe0ce('0x23')]=function(_0x50a5e4,_0x13d95a){if(_0x50a5e4['body']['id']){delete _0x50a5e4[_0xe0ce('0x4a')]['id'];}return db[_0xe0ce('0x2b')][_0xe0ce('0x48')]({'where':{'id':_0x50a5e4[_0xe0ce('0x47')]['id']}})[_0xe0ce('0x45')](handleEntityNotFound(_0x13d95a,null))[_0xe0ce('0x45')](saveUpdates(_0x50a5e4[_0xe0ce('0x4a')],null))['then'](respondWithResult(_0x13d95a,null))[_0xe0ce('0x46')](handleError(_0x13d95a,null));};exports[_0xe0ce('0x24')]=function(_0x17c552,_0x2b7357){return db['DeskConfiguration']['find']({'where':{'id':_0x17c552[_0xe0ce('0x47')]['id']}})[_0xe0ce('0x45')](handleEntityNotFound(_0x2b7357,null))[_0xe0ce('0x45')](removeEntity(_0x2b7357,null))[_0xe0ce('0x46')](handleError(_0x2b7357,null));};exports[_0xe0ce('0x4b')]=function(_0x5ed1b5,_0xa7703c,_0x221edf){var _0x3fff06={};var _0x26fa6e={};var _0x4a4bd8;var _0x451500;return db['DeskConfiguration'][_0xe0ce('0x4c')]({'where':{'id':_0x5ed1b5[_0xe0ce('0x47')]['id']}})[_0xe0ce('0x45')](handleEntityNotFound(_0xa7703c,null))['then'](function(_0x1a8e9b){if(_0x1a8e9b){_0x4a4bd8=_0x1a8e9b;_0x26fa6e['model']=_[_0xe0ce('0x32')](db[_0xe0ce('0x4d')][_0xe0ce('0x2c')]);_0x26fa6e['query']=_[_0xe0ce('0x32')](_0x5ed1b5[_0xe0ce('0x31')]);_0x26fa6e[_0xe0ce('0x33')]=_['intersection'](_0x26fa6e[_0xe0ce('0x2f')],_0x26fa6e[_0xe0ce('0x31')]);_0x3fff06[_0xe0ce('0x35')]=_[_0xe0ce('0x34')](_0x26fa6e[_0xe0ce('0x2f')],qs['fields'](_0x5ed1b5[_0xe0ce('0x31')][_0xe0ce('0x36')]));_0x3fff06[_0xe0ce('0x35')]=_0x3fff06[_0xe0ce('0x35')]['length']?_0x3fff06[_0xe0ce('0x35')]:_0x26fa6e[_0xe0ce('0x2f')];_0x3fff06[_0xe0ce('0x39')]=qs['sort'](_0x5ed1b5['query'][_0xe0ce('0x3a')]);_0x3fff06[_0xe0ce('0x3b')]=qs[_0xe0ce('0x33')](_[_0xe0ce('0x3c')](_0x5ed1b5['query'],_0x26fa6e['filters']));if(_0x5ed1b5['query'][_0xe0ce('0x3d')]){_0x3fff06[_0xe0ce('0x3b')]=_[_0xe0ce('0x3f')](_0x3fff06[_0xe0ce('0x3b')],{'$or':_[_0xe0ce('0x2a')](_0x3fff06[_0xe0ce('0x35')],function(_0xc81798){var _0x4d99d2={};_0x4d99d2[_0xc81798]={'$like':'%'+_0x5ed1b5[_0xe0ce('0x31')][_0xe0ce('0x3d')]+'%'};return _0x4d99d2;})});}_0x3fff06=_[_0xe0ce('0x3f')]({},_0x3fff06,_0x5ed1b5[_0xe0ce('0x40')]);return _0x4a4bd8[_0xe0ce('0x4b')](_0x3fff06);}})[_0xe0ce('0x45')](function(_0x114616){if(_0x114616){_0x451500=_0x114616[_0xe0ce('0x37')];if(!_0x5ed1b5[_0xe0ce('0x31')][_0xe0ce('0x4e')](_0xe0ce('0x38'))){_0x3fff06['limit']=qs[_0xe0ce('0x1e')](_0x5ed1b5['query'][_0xe0ce('0x1e')]);_0x3fff06[_0xe0ce('0x1b')]=qs['offset'](_0x5ed1b5['query'][_0xe0ce('0x1b')]);}return _0x4a4bd8['getFields'](_0x3fff06);}})[_0xe0ce('0x45')](function(_0x487002){if(_0x487002){return _0x487002?{'count':_0x451500,'rows':_0x487002}:null;}})['then'](respondWithResult(_0xa7703c,null))['catch'](handleError(_0xa7703c,null));};exports[_0xe0ce('0x4f')]=function(_0x418ad0,_0xcd4b73,_0x332873){var _0xf9d102={};var _0x19a2cc={};var _0x32e901;var _0x38fa4f;return db[_0xe0ce('0x2b')]['findOne']({'where':{'id':_0x418ad0[_0xe0ce('0x47')]['id']}})['then'](handleEntityNotFound(_0xcd4b73,null))['then'](function(_0x54cf75){if(_0x54cf75){_0x32e901=_0x54cf75;_0x19a2cc[_0xe0ce('0x2f')]=_[_0xe0ce('0x32')](db[_0xe0ce('0x4d')][_0xe0ce('0x2c')]);_0x19a2cc[_0xe0ce('0x31')]=_[_0xe0ce('0x32')](_0x418ad0[_0xe0ce('0x31')]);_0x19a2cc[_0xe0ce('0x33')]=_[_0xe0ce('0x34')](_0x19a2cc[_0xe0ce('0x2f')],_0x19a2cc[_0xe0ce('0x31')]);_0xf9d102[_0xe0ce('0x35')]=_[_0xe0ce('0x34')](_0x19a2cc[_0xe0ce('0x2f')],qs['fields'](_0x418ad0[_0xe0ce('0x31')][_0xe0ce('0x36')]));_0xf9d102['attributes']=_0xf9d102[_0xe0ce('0x35')][_0xe0ce('0x37')]?_0xf9d102[_0xe0ce('0x35')]:_0x19a2cc[_0xe0ce('0x2f')];_0xf9d102[_0xe0ce('0x39')]=qs[_0xe0ce('0x3a')](_0x418ad0[_0xe0ce('0x31')][_0xe0ce('0x3a')]);_0xf9d102[_0xe0ce('0x3b')]=qs[_0xe0ce('0x33')](_[_0xe0ce('0x3c')](_0x418ad0[_0xe0ce('0x31')],_0x19a2cc[_0xe0ce('0x33')]));if(_0x418ad0[_0xe0ce('0x31')]['filter']){_0xf9d102[_0xe0ce('0x3b')]=_[_0xe0ce('0x3f')](_0xf9d102[_0xe0ce('0x3b')],{'$or':_['map'](_0xf9d102[_0xe0ce('0x35')],function(_0x2d1058){var _0x77693f={};_0x77693f[_0x2d1058]={'$like':'%'+_0x418ad0[_0xe0ce('0x31')][_0xe0ce('0x3d')]+'%'};return _0x77693f;})});}_0xf9d102=_[_0xe0ce('0x3f')]({},_0xf9d102,_0x418ad0[_0xe0ce('0x40')]);return _0x32e901[_0xe0ce('0x4f')](_0xf9d102);}})[_0xe0ce('0x45')](function(_0x4ebd75){if(_0x4ebd75){_0x38fa4f=_0x4ebd75[_0xe0ce('0x37')];if(!_0x418ad0[_0xe0ce('0x31')][_0xe0ce('0x4e')](_0xe0ce('0x38'))){_0xf9d102[_0xe0ce('0x1e')]=qs['limit'](_0x418ad0[_0xe0ce('0x31')]['limit']);_0xf9d102[_0xe0ce('0x1b')]=qs[_0xe0ce('0x1b')](_0x418ad0[_0xe0ce('0x31')][_0xe0ce('0x1b')]);}return _0x32e901[_0xe0ce('0x4f')](_0xf9d102);}})[_0xe0ce('0x45')](function(_0x1d29fd){if(_0x1d29fd){return _0x1d29fd?{'count':_0x38fa4f,'rows':_0x1d29fd}:null;}})[_0xe0ce('0x45')](respondWithResult(_0xcd4b73,null))[_0xe0ce('0x46')](handleError(_0xcd4b73,null));};exports[_0xe0ce('0x50')]=function(_0x42c146,_0x3ab847,_0x1772a7){var _0x424627={};var _0x39261e={};var _0x177803;var _0x20d8a0;return db['DeskConfiguration'][_0xe0ce('0x4c')]({'where':{'id':_0x42c146[_0xe0ce('0x47')]['id']}})['then'](handleEntityNotFound(_0x3ab847,null))[_0xe0ce('0x45')](function(_0x3182f1){if(_0x3182f1){_0x177803=_0x3182f1;_0x39261e[_0xe0ce('0x2f')]=_[_0xe0ce('0x32')](db['DeskField']['rawAttributes']);_0x39261e[_0xe0ce('0x31')]=_[_0xe0ce('0x32')](_0x42c146[_0xe0ce('0x31')]);_0x39261e[_0xe0ce('0x33')]=_['intersection'](_0x39261e[_0xe0ce('0x2f')],_0x39261e['query']);_0x424627[_0xe0ce('0x35')]=_[_0xe0ce('0x34')](_0x39261e['model'],qs[_0xe0ce('0x36')](_0x42c146[_0xe0ce('0x31')]['fields']));_0x424627[_0xe0ce('0x35')]=_0x424627[_0xe0ce('0x35')][_0xe0ce('0x37')]?_0x424627[_0xe0ce('0x35')]:_0x39261e[_0xe0ce('0x2f')];_0x424627['order']=qs[_0xe0ce('0x3a')](_0x42c146[_0xe0ce('0x31')][_0xe0ce('0x3a')]);_0x424627[_0xe0ce('0x3b')]=qs[_0xe0ce('0x33')](_[_0xe0ce('0x3c')](_0x42c146['query'],_0x39261e[_0xe0ce('0x33')]));if(_0x42c146[_0xe0ce('0x31')][_0xe0ce('0x3d')]){_0x424627[_0xe0ce('0x3b')]=_[_0xe0ce('0x3f')](_0x424627[_0xe0ce('0x3b')],{'$or':_['map'](_0x424627['attributes'],function(_0x380042){var _0x56e1f3={};_0x56e1f3[_0x380042]={'$like':'%'+_0x42c146['query'][_0xe0ce('0x3d')]+'%'};return _0x56e1f3;})});}_0x424627=_[_0xe0ce('0x3f')]({},_0x424627,_0x42c146[_0xe0ce('0x40')]);return _0x177803['getDescriptions'](_0x424627);}})['then'](function(_0x147ee9){if(_0x147ee9){_0x20d8a0=_0x147ee9[_0xe0ce('0x37')];if(!_0x42c146[_0xe0ce('0x31')][_0xe0ce('0x4e')](_0xe0ce('0x38'))){_0x424627[_0xe0ce('0x1e')]=qs[_0xe0ce('0x1e')](_0x42c146[_0xe0ce('0x31')][_0xe0ce('0x1e')]);_0x424627[_0xe0ce('0x1b')]=qs[_0xe0ce('0x1b')](_0x42c146[_0xe0ce('0x31')][_0xe0ce('0x1b')]);}return _0x177803[_0xe0ce('0x50')](_0x424627);}})[_0xe0ce('0x45')](function(_0x41260b){if(_0x41260b){return _0x41260b?{'count':_0x20d8a0,'rows':_0x41260b}:null;}})[_0xe0ce('0x45')](respondWithResult(_0x3ab847,null))[_0xe0ce('0x46')](handleError(_0x3ab847,null));};exports[_0xe0ce('0x51')]=function(_0x58f218,_0x1256e0,_0x5715ea){var _0x5b6b30={};var _0x4c94da={};var _0x3e3cc2;var _0x31b036;return db[_0xe0ce('0x2b')][_0xe0ce('0x4c')]({'where':{'id':_0x58f218[_0xe0ce('0x47')]['id']}})[_0xe0ce('0x45')](handleEntityNotFound(_0x1256e0,null))[_0xe0ce('0x45')](function(_0x53e222){if(_0x53e222){_0x3e3cc2=_0x53e222;_0x4c94da[_0xe0ce('0x2f')]=_[_0xe0ce('0x32')](db['Tag'][_0xe0ce('0x2c')]);_0x4c94da[_0xe0ce('0x31')]=_[_0xe0ce('0x32')](_0x58f218['query']);_0x4c94da[_0xe0ce('0x33')]=_[_0xe0ce('0x34')](_0x4c94da['model'],_0x4c94da[_0xe0ce('0x31')]);_0x5b6b30[_0xe0ce('0x35')]=_[_0xe0ce('0x34')](_0x4c94da[_0xe0ce('0x2f')],qs[_0xe0ce('0x36')](_0x58f218['query'][_0xe0ce('0x36')]));_0x5b6b30[_0xe0ce('0x35')]=_0x5b6b30[_0xe0ce('0x35')][_0xe0ce('0x37')]?_0x5b6b30[_0xe0ce('0x35')]:_0x4c94da[_0xe0ce('0x2f')];_0x5b6b30[_0xe0ce('0x39')]=qs[_0xe0ce('0x3a')](_0x58f218[_0xe0ce('0x31')]['sort']);_0x5b6b30['where']=qs[_0xe0ce('0x33')](_['pick'](_0x58f218[_0xe0ce('0x31')],_0x4c94da[_0xe0ce('0x33')]));if(_0x58f218['query'][_0xe0ce('0x3d')]){_0x5b6b30[_0xe0ce('0x3b')]=_[_0xe0ce('0x3f')](_0x5b6b30[_0xe0ce('0x3b')],{'$or':_[_0xe0ce('0x2a')](_0x5b6b30['attributes'],function(_0x1f1915){var _0x1afba8={};_0x1afba8[_0x1f1915]={'$like':'%'+_0x58f218[_0xe0ce('0x31')]['filter']+'%'};return _0x1afba8;})});}_0x5b6b30=_[_0xe0ce('0x3f')]({},_0x5b6b30,_0x58f218['options']);return _0x3e3cc2[_0xe0ce('0x51')](_0x5b6b30);}})[_0xe0ce('0x45')](function(_0x40d131){if(_0x40d131){_0x31b036=_0x40d131[_0xe0ce('0x37')];if(!_0x58f218[_0xe0ce('0x31')][_0xe0ce('0x4e')](_0xe0ce('0x38'))){_0x5b6b30[_0xe0ce('0x1e')]=qs[_0xe0ce('0x1e')](_0x58f218[_0xe0ce('0x31')][_0xe0ce('0x1e')]);_0x5b6b30[_0xe0ce('0x1b')]=qs[_0xe0ce('0x1b')](_0x58f218['query']['offset']);}return _0x3e3cc2['getTags'](_0x5b6b30);}})[_0xe0ce('0x45')](function(_0x311c9d){if(_0x311c9d){return _0x311c9d?{'count':_0x31b036,'rows':_0x311c9d}:null;}})['then'](respondWithResult(_0x1256e0,null))[_0xe0ce('0x46')](handleError(_0x1256e0,null));};exports[_0xe0ce('0x52')]=function(_0x10ffc6,_0x4d5ade,_0x5e76b8){if(_0x10ffc6[_0xe0ce('0x4a')]['id']){delete _0x10ffc6[_0xe0ce('0x4a')]['id'];}return db[_0xe0ce('0x2b')]['findOne']({'where':{'id':_0x10ffc6[_0xe0ce('0x47')]['id']}})['then'](handleEntityNotFound(_0x4d5ade,null))[_0xe0ce('0x45')](function(_0x4295bb){if(_0x4295bb){return _0x4295bb[_0xe0ce('0x52')](_0x10ffc6['body']['ids']||[]);}return null;})[_0xe0ce('0x45')](respondWithResult(_0x4d5ade,null))[_0xe0ce('0x46')](handleError(_0x4d5ade,null));};
\ No newline at end of file
index 7ac8603..78987ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f48=['int_desk_configurations','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x2915ec,_0x3fd7e0){var _0x259a79=function(_0x278587){while(--_0x278587){_0x2915ec['push'](_0x2915ec['shift']());}};_0x259a79(++_0x3fd7e0);}(_0x3f48,0x1e1));var _0x83f4=function(_0x3b9542,_0x3e6bf6){_0x3b9542=_0x3b9542-0x0;var _0x5dc004=_0x3f48[_0x3b9542];return _0x5dc004;};'use strict';var _=require(_0x83f4('0x0'));var util=require('util');var logger=require(_0x83f4('0x1'))('api');var moment=require(_0x83f4('0x2'));var BPromise=require(_0x83f4('0x3'));var rp=require(_0x83f4('0x4'));var fs=require('fs');var path=require(_0x83f4('0x5'));var rimraf=require(_0x83f4('0x6'));var config=require(_0x83f4('0x7'));var attributes=require('./intDeskConfiguration.attributes');module[_0x83f4('0x8')]=function(_0x4067c0,_0xb54494){return _0x4067c0['define']('DeskConfiguration',attributes,{'tableName':_0x83f4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a4a=['rimraf','./intDeskConfiguration.attributes','define','DeskConfiguration','int_desk_configurations','util','moment','bluebird','request-promise','path'];(function(_0x406626,_0x10928e){var _0x4dc453=function(_0x35b495){while(--_0x35b495){_0x406626['push'](_0x406626['shift']());}};_0x4dc453(++_0x10928e);}(_0x7a4a,0x1c7));var _0xa7a4=function(_0x28d231,_0x55888a){_0x28d231=_0x28d231-0x0;var _0x3814c5=_0x7a4a[_0x28d231];return _0x3814c5;};'use strict';var _=require('lodash');var util=require(_0xa7a4('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xa7a4('0x1'));var BPromise=require(_0xa7a4('0x2'));var rp=require(_0xa7a4('0x3'));var fs=require('fs');var path=require(_0xa7a4('0x4'));var rimraf=require(_0xa7a4('0x5'));var config=require('../../config/environment');var attributes=require(_0xa7a4('0x6'));module['exports']=function(_0x458894,_0xd0b44e){return _0x458894[_0xa7a4('0x7')](_0xa7a4('0x8'),attributes,{'tableName':_0xa7a4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9a26e3f..bc8651b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11f3=['util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','request','then','info','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','DeskConfiguration,\x20%s,\x20%s','message','result','catch','lodash'];(function(_0xbb091,_0x3fe7ee){var _0x467a04=function(_0x3a978d){while(--_0x3a978d){_0xbb091['push'](_0xbb091['shift']());}};_0x467a04(++_0x3fe7ee);}(_0x11f3,0x149));var _0x311f=function(_0x1549ae,_0x4ea436){_0x1549ae=_0x1549ae-0x0;var _0x141302=_0x11f3[_0x1549ae];return _0x141302;};'use strict';var _=require(_0x311f('0x0'));var util=require(_0x311f('0x1'));var moment=require(_0x311f('0x2'));var BPromise=require('bluebird');var rs=require(_0x311f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x311f('0x4'))['db'];var utils=require(_0x311f('0x5'));var logger=require(_0x311f('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x311f('0x7'));var client=jayson['client'][_0x311f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xcbec7b,_0x11c88d,_0x3381a7){return new BPromise(function(_0x565d4d,_0x24a3fc){return client[_0x311f('0x9')](_0xcbec7b,_0x3381a7)[_0x311f('0xa')](function(_0x21b762){logger[_0x311f('0xb')]('DeskConfiguration,\x20%s,\x20%s',_0x11c88d,_0x311f('0xc'));logger[_0x311f('0xd')](_0x311f('0xe'),_0x11c88d,_0x311f('0xc'),JSON[_0x311f('0xf')](_0x21b762));if(_0x21b762[_0x311f('0x10')]){if(_0x21b762[_0x311f('0x10')][_0x311f('0x11')]===0x1f4){logger[_0x311f('0x10')](_0x311f('0x12'),_0x11c88d,_0x21b762[_0x311f('0x10')][_0x311f('0x13')]);return _0x24a3fc(_0x21b762[_0x311f('0x10')][_0x311f('0x13')]);}logger[_0x311f('0x10')](_0x311f('0x12'),_0x11c88d,_0x21b762[_0x311f('0x10')][_0x311f('0x13')]);return _0x565d4d(_0x21b762[_0x311f('0x10')]['message']);}else{logger['info']('DeskConfiguration,\x20%s,\x20%s',_0x11c88d,_0x311f('0xc'));_0x565d4d(_0x21b762[_0x311f('0x14')][_0x311f('0x13')]);}})[_0x311f('0x15')](function(_0xb8227e){logger[_0x311f('0x10')](_0x311f('0x12'),_0x11c88d,_0xb8227e);_0x24a3fc(_0xb8227e);});});}
\ No newline at end of file
+var _0x56e7=['DeskConfiguration,\x20%s,\x20%s','request\x20sent','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','then','info'];(function(_0x284689,_0x55c246){var _0x22e03e=function(_0x5297e7){while(--_0x5297e7){_0x284689['push'](_0x284689['shift']());}};_0x22e03e(++_0x55c246);}(_0x56e7,0x93));var _0x756e=function(_0x4d4e7c,_0x1a8689){_0x4d4e7c=_0x4d4e7c-0x0;var _0x408125=_0x56e7[_0x4d4e7c];return _0x408125;};'use strict';var _=require(_0x756e('0x0'));var util=require(_0x756e('0x1'));var moment=require(_0x756e('0x2'));var BPromise=require(_0x756e('0x3'));var rs=require(_0x756e('0x4'));var fs=require('fs');var Redis=require(_0x756e('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x756e('0x6'));var logger=require(_0x756e('0x7'))(_0x756e('0x8'));var config=require('../../config/environment');var jayson=require(_0x756e('0x9'));var client=jayson[_0x756e('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x53077b,_0x167f6,_0x2676c8){return new BPromise(function(_0x4fb27a,_0x516581){return client['request'](_0x53077b,_0x2676c8)[_0x756e('0xb')](function(_0x833ba7){logger[_0x756e('0xc')](_0x756e('0xd'),_0x167f6,_0x756e('0xe'));logger['debug'](_0x756e('0xf'),_0x167f6,'request\x20sent',JSON[_0x756e('0x10')](_0x833ba7));if(_0x833ba7[_0x756e('0x11')]){if(_0x833ba7[_0x756e('0x11')]['code']===0x1f4){logger[_0x756e('0x11')](_0x756e('0xd'),_0x167f6,_0x833ba7[_0x756e('0x11')]['message']);return _0x516581(_0x833ba7[_0x756e('0x11')][_0x756e('0x12')]);}logger[_0x756e('0x11')](_0x756e('0xd'),_0x167f6,_0x833ba7[_0x756e('0x11')][_0x756e('0x12')]);return _0x4fb27a(_0x833ba7['error'][_0x756e('0x12')]);}else{logger[_0x756e('0xc')](_0x756e('0xd'),_0x167f6,_0x756e('0xe'));_0x4fb27a(_0x833ba7[_0x756e('0x13')]['message']);}})['catch'](function(_0x5916aa){logger[_0x756e('0x11')](_0x756e('0xd'),_0x167f6,_0x5916aa);_0x516581(_0x5916aa);});});}
\ No newline at end of file
index 9291591..3a7532a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50fa=['get','isAuthenticated','index','/:id','post','create','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskField.controller'];(function(_0x15ba3c,_0x6da31a){var _0x485e72=function(_0x24a449){while(--_0x24a449){_0x15ba3c['push'](_0x15ba3c['shift']());}};_0x485e72(++_0x6da31a);}(_0x50fa,0x70));var _0xa50f=function(_0x42caa6,_0x5a8b05){_0x42caa6=_0x42caa6-0x0;var _0xa88adb=_0x50fa[_0x42caa6];return _0xa88adb;};'use strict';var multer=require(_0xa50f('0x0'));var util=require(_0xa50f('0x1'));var path=require(_0xa50f('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa50f('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xa50f('0x4'));var interaction=require(_0xa50f('0x5'));var config=require(_0xa50f('0x6'));var controller=require(_0xa50f('0x7'));router[_0xa50f('0x8')]('/',auth[_0xa50f('0x9')](),controller[_0xa50f('0xa')]);router['get'](_0xa50f('0xb'),auth['isAuthenticated'](),controller['show']);router[_0xa50f('0xc')]('/',auth[_0xa50f('0x9')](),controller[_0xa50f('0xd')]);router['put'](_0xa50f('0xb'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0xa50f('0x9')](),controller['destroy']);module[_0xa50f('0xe')]=router;
\ No newline at end of file
+var _0x4ff9=['exports','util','path','express','Router','fs-extra','./intDeskField.controller','get','isAuthenticated','/:id','create','update','delete','destroy'];(function(_0x56975f,_0x5405b2){var _0x514940=function(_0x3e6be6){while(--_0x3e6be6){_0x56975f['push'](_0x56975f['shift']());}};_0x514940(++_0x5405b2);}(_0x4ff9,0xe1));var _0x94ff=function(_0x174072,_0x15c8d0){_0x174072=_0x174072-0x0;var _0xbe3e5e=_0x4ff9[_0x174072];return _0xbe3e5e;};'use strict';var multer=require('multer');var util=require(_0x94ff('0x0'));var path=require(_0x94ff('0x1'));var timeout=require('connect-timeout');var express=require(_0x94ff('0x2'));var router=express[_0x94ff('0x3')]();var fs_extra=require(_0x94ff('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x94ff('0x5'));router[_0x94ff('0x6')]('/',auth[_0x94ff('0x7')](),controller['index']);router[_0x94ff('0x6')](_0x94ff('0x8'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x94ff('0x9')]);router['put'](_0x94ff('0x8'),auth[_0x94ff('0x7')](),controller[_0x94ff('0xa')]);router[_0x94ff('0xb')](_0x94ff('0x8'),auth[_0x94ff('0x7')](),controller[_0x94ff('0xc')]);module[_0x94ff('0xd')]=router;
\ No newline at end of file
index 3031763..2530719 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fc6=['STRING','sequelize','exports','ENUM','variable','customVariable','string'];(function(_0x19085d,_0x5d8bc0){var _0xdb3f69=function(_0x3009c8){while(--_0x3009c8){_0x19085d['push'](_0x19085d['shift']());}};_0xdb3f69(++_0x5d8bc0);}(_0x9fc6,0xf6));var _0x69fc=function(_0x999b85,_0x1edc2b){_0x999b85=_0x999b85-0x0;var _0x1d7124=_0x9fc6[_0x999b85];return _0x1d7124;};'use strict';var Sequelize=require(_0x69fc('0x0'));module[_0x69fc('0x1')]={'type':{'type':Sequelize[_0x69fc('0x2')]('string',_0x69fc('0x3'),_0x69fc('0x4'),'keyValue','picklist'),'defaultValue':_0x69fc('0x5')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x69fc('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0x69fc('0x5'),_0x69fc('0x3'),_0x69fc('0x4'))},'keyContent':{'type':Sequelize[_0x69fc('0x6')]},'idField':{'type':Sequelize[_0x69fc('0x6')]},'nameField':{'type':Sequelize[_0x69fc('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x69fc('0x6')]}};
\ No newline at end of file
+var _0x517a=['string','STRING','ENUM','variable','customVariable','keyValue','picklist'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x517a,0x1c3));var _0xa517=function(_0x4c4293,_0x2ad119){_0x4c4293=_0x4c4293-0x0;var _0x4e2402=_0x517a[_0x4c4293];return _0x4e2402;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize['ENUM']('string',_0xa517('0x0'),_0xa517('0x1'),_0xa517('0x2'),_0xa517('0x3')),'defaultValue':_0xa517('0x4')},'content':{'type':Sequelize[_0xa517('0x5')]},'key':{'type':Sequelize[_0xa517('0x5')]},'keyType':{'type':Sequelize[_0xa517('0x6')](_0xa517('0x4'),_0xa517('0x0'),'customVariable')},'keyContent':{'type':Sequelize[_0xa517('0x5')]},'idField':{'type':Sequelize[_0xa517('0x5')]},'nameField':{'type':Sequelize[_0xa517('0x5')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xa517('0x5')]}};
\ No newline at end of file
index d73367f..42b6542 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6075=['ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','set','reject','save','update','then','destroy','error','stack','name','send','index','map','DeskField','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','offset','order','sort','where','pick','filter','merge','type','includeAll','include','findAll','rows','catch','show','params','options','create','body','find','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse'];(function(_0x19ec40,_0x448f0b){var _0x43ef8d=function(_0x154a8f){while(--_0x154a8f){_0x19ec40['push'](_0x19ec40['shift']());}};_0x43ef8d(++_0x448f0b);}(_0x6075,0x126));var _0x5607=function(_0x36a407,_0x5826d0){_0x36a407=_0x36a407-0x0;var _0x3ce877=_0x6075[_0x36a407];return _0x3ce877;};'use strict';var emlformat=require(_0x5607('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5607('0x1'));var jsonpatch=require(_0x5607('0x2'));var rp=require('request-promise');var moment=require(_0x5607('0x3'));var BPromise=require(_0x5607('0x4'));var Mustache=require(_0x5607('0x5'));var util=require(_0x5607('0x6'));var path=require(_0x5607('0x7'));var sox=require(_0x5607('0x8'));var csv=require('to-csv');var ejs=require(_0x5607('0x9'));var fs=require('fs');var fs_extra=require(_0x5607('0xa'));var _=require(_0x5607('0xb'));var squel=require(_0x5607('0xc'));var crypto=require(_0x5607('0xd'));var jsforce=require(_0x5607('0xe'));var deskjs=require(_0x5607('0xf'));var toCsv=require(_0x5607('0x10'));var querystring=require('querystring');var Papa=require(_0x5607('0x11'));var Redis=require(_0x5607('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x5607('0x13'));var as=require(_0x5607('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5607('0x15'))(_0x5607('0x16'));var utils=require(_0x5607('0x17'));var config=require(_0x5607('0x18'));var licenseUtil=require(_0x5607('0x19'));var db=require(_0x5607('0x1a'))['db'];function respondWithStatusCode(_0x79cb4e,_0x147fc6){_0x147fc6=_0x147fc6||0xcc;return function(_0x40c2a2){if(_0x40c2a2){return _0x79cb4e[_0x5607('0x1b')](_0x147fc6);}return _0x79cb4e[_0x5607('0x1c')](_0x147fc6)[_0x5607('0x1d')]();};}function respondWithResult(_0x3dd987,_0x564b08){_0x564b08=_0x564b08||0xc8;return function(_0x2c8352){if(_0x2c8352){return _0x3dd987['status'](_0x564b08)[_0x5607('0x1e')](_0x2c8352);}};}function respondWithFilteredResult(_0x41b92f,_0x274829){return function(_0x423507){if(_0x423507){var _0x8573c=typeof _0x274829['offset']===_0x5607('0x1f')&&typeof _0x274829[_0x5607('0x20')]===_0x5607('0x1f');var _0x3c73f2=_0x423507['count'];var _0x2bf04b=_0x8573c?0x0:_0x274829['offset'];var _0x4d9218=_0x8573c?_0x423507[_0x5607('0x21')]:_0x274829['offset']+_0x274829[_0x5607('0x20')];var _0x14862a;if(_0x4d9218>=_0x3c73f2){_0x4d9218=_0x3c73f2;_0x14862a=0xc8;}else{_0x14862a=0xce;}_0x41b92f['status'](_0x14862a);return _0x41b92f[_0x5607('0x22')]('Content-Range',_0x2bf04b+'-'+_0x4d9218+'/'+_0x3c73f2)[_0x5607('0x1e')](_0x423507);}return null;};}function patchUpdates(_0x259e32){return function(_0x35bd58){try{jsonpatch['apply'](_0x35bd58,_0x259e32,!![]);}catch(_0xd136ca){return BPromise[_0x5607('0x23')](_0xd136ca);}return _0x35bd58[_0x5607('0x24')]();};}function saveUpdates(_0x59367e,_0x1b87a3){return function(_0x62819b){if(_0x62819b){return _0x62819b[_0x5607('0x25')](_0x59367e)[_0x5607('0x26')](function(_0x2570fd){return _0x2570fd;});}return null;};}function removeEntity(_0x63e5a3,_0x5a913a){return function(_0x3e5d10){if(_0x3e5d10){return _0x3e5d10[_0x5607('0x27')]()[_0x5607('0x26')](function(){_0x63e5a3['status'](0xcc)[_0x5607('0x1d')]();});}};}function handleEntityNotFound(_0x24ca34,_0x29a71e){return function(_0x19715d){if(!_0x19715d){_0x24ca34[_0x5607('0x1b')](0x194);}return _0x19715d;};}function handleError(_0x46b787,_0x2468dc){_0x2468dc=_0x2468dc||0x1f4;return function(_0x4ff19d){logger[_0x5607('0x28')](_0x4ff19d[_0x5607('0x29')]);if(_0x4ff19d[_0x5607('0x2a')]){delete _0x4ff19d[_0x5607('0x2a')];}_0x46b787[_0x5607('0x1c')](_0x2468dc)[_0x5607('0x2b')](_0x4ff19d);};}exports[_0x5607('0x2c')]=function(_0xc5bf85,_0x4bb306){var _0x5622bb={},_0x395c18={},_0x5557ac={'count':0x0,'rows':[]};var _0x6dcbc4=_[_0x5607('0x2d')](db[_0x5607('0x2e')][_0x5607('0x2f')],function(_0x44fb99){return{'name':_0x44fb99[_0x5607('0x30')],'type':_0x44fb99['type'][_0x5607('0x31')]};});_0x395c18[_0x5607('0x32')]=_[_0x5607('0x2d')](_0x6dcbc4,_0x5607('0x2a'));_0x395c18[_0x5607('0x33')]=_[_0x5607('0x34')](_0xc5bf85[_0x5607('0x33')]);_0x395c18[_0x5607('0x35')]=_['intersection'](_0x395c18[_0x5607('0x32')],_0x395c18['query']);_0x5622bb['attributes']=_[_0x5607('0x36')](_0x395c18[_0x5607('0x32')],qs[_0x5607('0x37')](_0xc5bf85[_0x5607('0x33')][_0x5607('0x37')]));_0x5622bb['attributes']=_0x5622bb[_0x5607('0x38')][_0x5607('0x39')]?_0x5622bb[_0x5607('0x38')]:_0x395c18[_0x5607('0x32')];if(!_0xc5bf85[_0x5607('0x33')]['hasOwnProperty'](_0x5607('0x3a'))){_0x5622bb[_0x5607('0x20')]=qs[_0x5607('0x20')](_0xc5bf85[_0x5607('0x33')][_0x5607('0x20')]);_0x5622bb[_0x5607('0x3b')]=qs['offset'](_0xc5bf85[_0x5607('0x33')][_0x5607('0x3b')]);}_0x5622bb[_0x5607('0x3c')]=qs[_0x5607('0x3d')](_0xc5bf85['query'][_0x5607('0x3d')]);_0x5622bb[_0x5607('0x3e')]=qs['filters'](_[_0x5607('0x3f')](_0xc5bf85[_0x5607('0x33')],_0x395c18[_0x5607('0x35')]),_0x6dcbc4);if(_0xc5bf85[_0x5607('0x33')][_0x5607('0x40')]){_0x5622bb[_0x5607('0x3e')]=_[_0x5607('0x41')](_0x5622bb[_0x5607('0x3e')],{'$or':_[_0x5607('0x2d')](_0x6dcbc4,function(_0x30782e){if(_0x30782e[_0x5607('0x42')]!=='VIRTUAL'){var _0x1098ff={};_0x1098ff[_0x30782e[_0x5607('0x2a')]]={'$like':'%'+_0xc5bf85[_0x5607('0x33')][_0x5607('0x40')]+'%'};return _0x1098ff;}})});}_0x5622bb=_['merge']({},_0x5622bb,_0xc5bf85['options']);var _0x28e4f6={'where':_0x5622bb['where']};return db['DeskField'][_0x5607('0x21')](_0x28e4f6)[_0x5607('0x26')](function(_0x1f71ad){_0x5557ac[_0x5607('0x21')]=_0x1f71ad;if(_0xc5bf85[_0x5607('0x33')][_0x5607('0x43')]){_0x5622bb[_0x5607('0x44')]=[{'all':!![]}];}return db[_0x5607('0x2e')][_0x5607('0x45')](_0x5622bb);})[_0x5607('0x26')](function(_0x2054cc){_0x5557ac[_0x5607('0x46')]=_0x2054cc;return _0x5557ac;})['then'](respondWithFilteredResult(_0x4bb306,_0x5622bb))[_0x5607('0x47')](handleError(_0x4bb306,null));};exports[_0x5607('0x48')]=function(_0xec2767,_0x510da5){var _0x53515e={'raw':!![],'where':{'id':_0xec2767[_0x5607('0x49')]['id']}},_0x4b47b5={};_0x4b47b5[_0x5607('0x32')]=_[_0x5607('0x34')](db[_0x5607('0x2e')]['rawAttributes']);_0x4b47b5[_0x5607('0x33')]=_['keys'](_0xec2767['query']);_0x4b47b5[_0x5607('0x35')]=_[_0x5607('0x36')](_0x4b47b5['model'],_0x4b47b5['query']);_0x53515e['attributes']=_[_0x5607('0x36')](_0x4b47b5[_0x5607('0x32')],qs['fields'](_0xec2767[_0x5607('0x33')][_0x5607('0x37')]));_0x53515e[_0x5607('0x38')]=_0x53515e[_0x5607('0x38')][_0x5607('0x39')]?_0x53515e[_0x5607('0x38')]:_0x4b47b5['model'];if(_0xec2767[_0x5607('0x33')][_0x5607('0x43')]){_0x53515e[_0x5607('0x44')]=[{'all':!![]}];}_0x53515e=_[_0x5607('0x41')]({},_0x53515e,_0xec2767[_0x5607('0x4a')]);return db[_0x5607('0x2e')]['find'](_0x53515e)[_0x5607('0x26')](handleEntityNotFound(_0x510da5,null))['then'](respondWithResult(_0x510da5,null))[_0x5607('0x47')](handleError(_0x510da5,null));};exports[_0x5607('0x4b')]=function(_0x474550,_0xf44f43){return db[_0x5607('0x2e')][_0x5607('0x4b')](_0x474550[_0x5607('0x4c')],{})['then'](respondWithResult(_0xf44f43,0xc9))[_0x5607('0x47')](handleError(_0xf44f43,null));};exports['update']=function(_0x745d7b,_0x115c59){if(_0x745d7b[_0x5607('0x4c')]['id']){delete _0x745d7b[_0x5607('0x4c')]['id'];}return db[_0x5607('0x2e')][_0x5607('0x4d')]({'where':{'id':_0x745d7b['params']['id']}})[_0x5607('0x26')](handleEntityNotFound(_0x115c59,null))['then'](saveUpdates(_0x745d7b[_0x5607('0x4c')],null))[_0x5607('0x26')](respondWithResult(_0x115c59,null))[_0x5607('0x47')](handleError(_0x115c59,null));};exports[_0x5607('0x27')]=function(_0x2e0bc5,_0x8fbf03){return db[_0x5607('0x2e')][_0x5607('0x4d')]({'where':{'id':_0x2e0bc5[_0x5607('0x49')]['id']}})[_0x5607('0x26')](handleEntityNotFound(_0x8fbf03,null))[_0x5607('0x26')](removeEntity(_0x8fbf03,null))['catch'](handleError(_0x8fbf03,null));};
\ No newline at end of file
+var _0x59f2=['limit','count','set','apply','then','destroy','sendStatus','error','name','send','map','DeskField','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','type','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','catch','show','find','create','body','params','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','status','end','json','offset','undefined'];(function(_0x4f0e62,_0x28e44f){var _0x117ab8=function(_0x1a74bb){while(--_0x1a74bb){_0x4f0e62['push'](_0x4f0e62['shift']());}};_0x117ab8(++_0x28e44f);}(_0x59f2,0xb3));var _0x259f=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x59f2[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x259f('0x0'));var rp=require('request-promise');var moment=require(_0x259f('0x1'));var BPromise=require(_0x259f('0x2'));var Mustache=require(_0x259f('0x3'));var util=require(_0x259f('0x4'));var path=require('path');var sox=require(_0x259f('0x5'));var csv=require(_0x259f('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x259f('0x7'));var squel=require(_0x259f('0x8'));var crypto=require(_0x259f('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x259f('0xa'));var toCsv=require('to-csv');var querystring=require(_0x259f('0xb'));var Papa=require(_0x259f('0xc'));var Redis=require(_0x259f('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x259f('0xe'));var as=require(_0x259f('0xf'));var hardwareService=require(_0x259f('0x10'));var logger=require('../../config/logger')(_0x259f('0x11'));var utils=require(_0x259f('0x12'));var config=require(_0x259f('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x314e55,_0x31a57f){_0x31a57f=_0x31a57f||0xcc;return function(_0x4d130f){if(_0x4d130f){return _0x314e55['sendStatus'](_0x31a57f);}return _0x314e55[_0x259f('0x14')](_0x31a57f)[_0x259f('0x15')]();};}function respondWithResult(_0x4007d9,_0xea5fa){_0xea5fa=_0xea5fa||0xc8;return function(_0x12a6ef){if(_0x12a6ef){return _0x4007d9[_0x259f('0x14')](_0xea5fa)[_0x259f('0x16')](_0x12a6ef);}};}function respondWithFilteredResult(_0x421c66,_0x4cb8a3){return function(_0x333c38){if(_0x333c38){var _0x447145=typeof _0x4cb8a3[_0x259f('0x17')]===_0x259f('0x18')&&typeof _0x4cb8a3[_0x259f('0x19')]===_0x259f('0x18');var _0x3303ca=_0x333c38[_0x259f('0x1a')];var _0x6daf07=_0x447145?0x0:_0x4cb8a3[_0x259f('0x17')];var _0x39e4ab=_0x447145?_0x333c38[_0x259f('0x1a')]:_0x4cb8a3['offset']+_0x4cb8a3[_0x259f('0x19')];var _0x4343b5;if(_0x39e4ab>=_0x3303ca){_0x39e4ab=_0x3303ca;_0x4343b5=0xc8;}else{_0x4343b5=0xce;}_0x421c66['status'](_0x4343b5);return _0x421c66[_0x259f('0x1b')]('Content-Range',_0x6daf07+'-'+_0x39e4ab+'/'+_0x3303ca)[_0x259f('0x16')](_0x333c38);}return null;};}function patchUpdates(_0x225d21){return function(_0x4d69c4){try{jsonpatch[_0x259f('0x1c')](_0x4d69c4,_0x225d21,!![]);}catch(_0x395a9e){return BPromise['reject'](_0x395a9e);}return _0x4d69c4['save']();};}function saveUpdates(_0x33b646,_0x3832b0){return function(_0x163d83){if(_0x163d83){return _0x163d83['update'](_0x33b646)[_0x259f('0x1d')](function(_0x55a58e){return _0x55a58e;});}return null;};}function removeEntity(_0xb78775,_0x55a9e0){return function(_0x42b578){if(_0x42b578){return _0x42b578[_0x259f('0x1e')]()[_0x259f('0x1d')](function(){_0xb78775[_0x259f('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x23079d,_0x4e3413){return function(_0x24de04){if(!_0x24de04){_0x23079d[_0x259f('0x1f')](0x194);}return _0x24de04;};}function handleError(_0x549d37,_0x47bf4b){_0x47bf4b=_0x47bf4b||0x1f4;return function(_0x208698){logger[_0x259f('0x20')](_0x208698['stack']);if(_0x208698[_0x259f('0x21')]){delete _0x208698[_0x259f('0x21')];}_0x549d37[_0x259f('0x14')](_0x47bf4b)[_0x259f('0x22')](_0x208698);};}exports['index']=function(_0x4c339b,_0x341635){var _0x47bf1e={},_0xc32493={},_0x14aef7={'count':0x0,'rows':[]};var _0x535b48=_[_0x259f('0x23')](db[_0x259f('0x24')][_0x259f('0x25')],function(_0x22ef0a){return{'name':_0x22ef0a[_0x259f('0x26')],'type':_0x22ef0a['type'][_0x259f('0x27')]};});_0xc32493[_0x259f('0x28')]=_[_0x259f('0x23')](_0x535b48,_0x259f('0x21'));_0xc32493[_0x259f('0x29')]=_[_0x259f('0x2a')](_0x4c339b[_0x259f('0x29')]);_0xc32493[_0x259f('0x2b')]=_[_0x259f('0x2c')](_0xc32493[_0x259f('0x28')],_0xc32493['query']);_0x47bf1e[_0x259f('0x2d')]=_[_0x259f('0x2c')](_0xc32493['model'],qs[_0x259f('0x2e')](_0x4c339b[_0x259f('0x29')][_0x259f('0x2e')]));_0x47bf1e[_0x259f('0x2d')]=_0x47bf1e[_0x259f('0x2d')][_0x259f('0x2f')]?_0x47bf1e[_0x259f('0x2d')]:_0xc32493[_0x259f('0x28')];if(!_0x4c339b[_0x259f('0x29')][_0x259f('0x30')](_0x259f('0x31'))){_0x47bf1e[_0x259f('0x19')]=qs[_0x259f('0x19')](_0x4c339b[_0x259f('0x29')][_0x259f('0x19')]);_0x47bf1e['offset']=qs[_0x259f('0x17')](_0x4c339b[_0x259f('0x29')][_0x259f('0x17')]);}_0x47bf1e[_0x259f('0x32')]=qs['sort'](_0x4c339b[_0x259f('0x29')][_0x259f('0x33')]);_0x47bf1e['where']=qs[_0x259f('0x2b')](_['pick'](_0x4c339b[_0x259f('0x29')],_0xc32493['filters']),_0x535b48);if(_0x4c339b['query']['filter']){_0x47bf1e[_0x259f('0x34')]=_['merge'](_0x47bf1e[_0x259f('0x34')],{'$or':_['map'](_0x535b48,function(_0x2732ea){if(_0x2732ea[_0x259f('0x35')]!==_0x259f('0x36')){var _0x1cd5c5={};_0x1cd5c5[_0x2732ea[_0x259f('0x21')]]={'$like':'%'+_0x4c339b[_0x259f('0x29')][_0x259f('0x37')]+'%'};return _0x1cd5c5;}})});}_0x47bf1e=_[_0x259f('0x38')]({},_0x47bf1e,_0x4c339b[_0x259f('0x39')]);var _0x122026={'where':_0x47bf1e[_0x259f('0x34')]};return db['DeskField']['count'](_0x122026)['then'](function(_0x3d402a){_0x14aef7[_0x259f('0x1a')]=_0x3d402a;if(_0x4c339b[_0x259f('0x29')][_0x259f('0x3a')]){_0x47bf1e[_0x259f('0x3b')]=[{'all':!![]}];}return db['DeskField'][_0x259f('0x3c')](_0x47bf1e);})[_0x259f('0x1d')](function(_0x5542a1){_0x14aef7[_0x259f('0x3d')]=_0x5542a1;return _0x14aef7;})[_0x259f('0x1d')](respondWithFilteredResult(_0x341635,_0x47bf1e))[_0x259f('0x3e')](handleError(_0x341635,null));};exports[_0x259f('0x3f')]=function(_0x4a01a8,_0xdc25a4){var _0x5ea1e3={'raw':!![],'where':{'id':_0x4a01a8['params']['id']}},_0x45774b={};_0x45774b[_0x259f('0x28')]=_['keys'](db[_0x259f('0x24')][_0x259f('0x25')]);_0x45774b[_0x259f('0x29')]=_[_0x259f('0x2a')](_0x4a01a8[_0x259f('0x29')]);_0x45774b[_0x259f('0x2b')]=_[_0x259f('0x2c')](_0x45774b['model'],_0x45774b[_0x259f('0x29')]);_0x5ea1e3[_0x259f('0x2d')]=_[_0x259f('0x2c')](_0x45774b[_0x259f('0x28')],qs[_0x259f('0x2e')](_0x4a01a8[_0x259f('0x29')]['fields']));_0x5ea1e3[_0x259f('0x2d')]=_0x5ea1e3[_0x259f('0x2d')][_0x259f('0x2f')]?_0x5ea1e3[_0x259f('0x2d')]:_0x45774b[_0x259f('0x28')];if(_0x4a01a8['query'][_0x259f('0x3a')]){_0x5ea1e3[_0x259f('0x3b')]=[{'all':!![]}];}_0x5ea1e3=_['merge']({},_0x5ea1e3,_0x4a01a8[_0x259f('0x39')]);return db[_0x259f('0x24')][_0x259f('0x40')](_0x5ea1e3)['then'](handleEntityNotFound(_0xdc25a4,null))[_0x259f('0x1d')](respondWithResult(_0xdc25a4,null))['catch'](handleError(_0xdc25a4,null));};exports['create']=function(_0xe4ff,_0x114461){return db[_0x259f('0x24')][_0x259f('0x41')](_0xe4ff[_0x259f('0x42')],{})['then'](respondWithResult(_0x114461,0xc9))[_0x259f('0x3e')](handleError(_0x114461,null));};exports['update']=function(_0x4f8446,_0x12bef4){if(_0x4f8446[_0x259f('0x42')]['id']){delete _0x4f8446[_0x259f('0x42')]['id'];}return db[_0x259f('0x24')][_0x259f('0x40')]({'where':{'id':_0x4f8446[_0x259f('0x43')]['id']}})[_0x259f('0x1d')](handleEntityNotFound(_0x12bef4,null))[_0x259f('0x1d')](saveUpdates(_0x4f8446[_0x259f('0x42')],null))[_0x259f('0x1d')](respondWithResult(_0x12bef4,null))[_0x259f('0x3e')](handleError(_0x12bef4,null));};exports['destroy']=function(_0x111ba5,_0x521a42){return db['DeskField']['find']({'where':{'id':_0x111ba5[_0x259f('0x43')]['id']}})[_0x259f('0x1d')](handleEntityNotFound(_0x521a42,null))[_0x259f('0x1d')](removeEntity(_0x521a42,null))[_0x259f('0x3e')](handleError(_0x521a42,null));};
\ No newline at end of file
index 570d6cf..4a55f70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13c7=['FieldId','lodash','util','../../config/logger','api','moment','path','../../config/environment','./intDeskField.attributes','define','DeskField','int_desk_fields','desk_unique_index'];(function(_0x5ec0b6,_0xaaf298){var _0x1e4c5f=function(_0x7e77d6){while(--_0x7e77d6){_0x5ec0b6['push'](_0x5ec0b6['shift']());}};_0x1e4c5f(++_0xaaf298);}(_0x13c7,0xde));var _0x713c=function(_0x353190,_0x5b0ca8){_0x353190=_0x353190-0x0;var _0x2fa150=_0x13c7[_0x353190];return _0x2fa150;};'use strict';var _=require(_0x713c('0x0'));var util=require(_0x713c('0x1'));var logger=require(_0x713c('0x2'))(_0x713c('0x3'));var moment=require(_0x713c('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x713c('0x5'));var rimraf=require('rimraf');var config=require(_0x713c('0x6'));var attributes=require(_0x713c('0x7'));module['exports']=function(_0x41544c,_0x37d30e){return _0x41544c[_0x713c('0x8')](_0x713c('0x9'),attributes,{'tableName':_0x713c('0xa'),'paranoid':![],'indexes':[{'name':_0x713c('0xb'),'fields':['idField',_0x713c('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x446a=['desk_unique_index','idField','FieldId','util','api','moment','bluebird','../../config/environment','./intDeskField.attributes','exports','define','DeskField','int_desk_fields'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x446a,0x1d7));var _0xa446=function(_0x10c94c,_0x60aa4b){_0x10c94c=_0x10c94c-0x0;var _0x10d2ca=_0x446a[_0x10c94c];return _0x10d2ca;};'use strict';var _=require('lodash');var util=require(_0xa446('0x0'));var logger=require('../../config/logger')(_0xa446('0x1'));var moment=require(_0xa446('0x2'));var BPromise=require(_0xa446('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xa446('0x4'));var attributes=require(_0xa446('0x5'));module[_0xa446('0x6')]=function(_0xbd8a3f,_0x1a3747){return _0xbd8a3f[_0xa446('0x7')](_0xa446('0x8'),attributes,{'tableName':_0xa446('0x9'),'paranoid':![],'indexes':[{'name':_0xa446('0xa'),'fields':[_0xa446('0xb'),_0xa446('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 3ec7759..f424553 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x164a=['DeskField,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','DeskField,\x20%s,\x20%s','request\x20sent'];(function(_0x55f1b5,_0x3dba02){var _0x339978=function(_0x2b91d7){while(--_0x2b91d7){_0x55f1b5['push'](_0x55f1b5['shift']());}};_0x339978(++_0x3dba02);}(_0x164a,0xa0));var _0xa164=function(_0xa64da9,_0x549be6){_0xa64da9=_0xa64da9-0x0;var _0x2e5f3a=_0x164a[_0xa64da9];return _0x2e5f3a;};'use strict';var _=require(_0xa164('0x0'));var util=require(_0xa164('0x1'));var moment=require('moment');var BPromise=require(_0xa164('0x2'));var rs=require(_0xa164('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa164('0x4'))['db'];var utils=require(_0xa164('0x5'));var logger=require(_0xa164('0x6'))(_0xa164('0x7'));var config=require(_0xa164('0x8'));var jayson=require(_0xa164('0x9'));var client=jayson[_0xa164('0xa')][_0xa164('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4a3861,_0xe2d92a,_0x43a648){return new BPromise(function(_0x4ee03b,_0x56701c){return client[_0xa164('0xc')](_0x4a3861,_0x43a648)[_0xa164('0xd')](function(_0x44cb3b){logger['info'](_0xa164('0xe'),_0xe2d92a,_0xa164('0xf'));logger['debug'](_0xa164('0x10'),_0xe2d92a,_0xa164('0xf'),JSON[_0xa164('0x11')](_0x44cb3b));if(_0x44cb3b['error']){if(_0x44cb3b['error'][_0xa164('0x12')]===0x1f4){logger[_0xa164('0x13')]('DeskField,\x20%s,\x20%s',_0xe2d92a,_0x44cb3b[_0xa164('0x13')]['message']);return _0x56701c(_0x44cb3b[_0xa164('0x13')][_0xa164('0x14')]);}logger[_0xa164('0x13')](_0xa164('0xe'),_0xe2d92a,_0x44cb3b[_0xa164('0x13')][_0xa164('0x14')]);return _0x4ee03b(_0x44cb3b['error']['message']);}else{logger[_0xa164('0x15')](_0xa164('0xe'),_0xe2d92a,_0xa164('0xf'));_0x4ee03b(_0x44cb3b['result'][_0xa164('0x14')]);}})['catch'](function(_0x4b1772){logger['error'](_0xa164('0xe'),_0xe2d92a,_0x4b1772);_0x56701c(_0x4b1772);});});}
\ No newline at end of file
+var _0x31dc=['catch','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','DeskField,\x20%s,\x20%s','debug','DeskField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result'];(function(_0x33e61d,_0x182628){var _0x185b31=function(_0x32ce31){while(--_0x32ce31){_0x33e61d['push'](_0x33e61d['shift']());}};_0x185b31(++_0x182628);}(_0x31dc,0x6f));var _0xc31d=function(_0x3ebaed,_0xb704a9){_0x3ebaed=_0x3ebaed-0x0;var _0x421e07=_0x31dc[_0x3ebaed];return _0x421e07;};'use strict';var _=require('lodash');var util=require(_0xc31d('0x0'));var moment=require(_0xc31d('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc31d('0x2'));var db=require(_0xc31d('0x3'))['db'];var utils=require(_0xc31d('0x4'));var logger=require('../../config/logger')(_0xc31d('0x5'));var config=require(_0xc31d('0x6'));var jayson=require(_0xc31d('0x7'));var client=jayson[_0xc31d('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1b27fd,_0xe90f0e,_0x2efee0){return new BPromise(function(_0x218d1d,_0x53817b){return client[_0xc31d('0x9')](_0x1b27fd,_0x2efee0)[_0xc31d('0xa')](function(_0x5136be){logger[_0xc31d('0xb')](_0xc31d('0xc'),_0xe90f0e,'request\x20sent');logger[_0xc31d('0xd')](_0xc31d('0xe'),_0xe90f0e,_0xc31d('0xf'),JSON[_0xc31d('0x10')](_0x5136be));if(_0x5136be['error']){if(_0x5136be[_0xc31d('0x11')][_0xc31d('0x12')]===0x1f4){logger['error'](_0xc31d('0xc'),_0xe90f0e,_0x5136be[_0xc31d('0x11')][_0xc31d('0x13')]);return _0x53817b(_0x5136be[_0xc31d('0x11')]['message']);}logger[_0xc31d('0x11')]('DeskField,\x20%s,\x20%s',_0xe90f0e,_0x5136be[_0xc31d('0x11')][_0xc31d('0x13')]);return _0x218d1d(_0x5136be['error'][_0xc31d('0x13')]);}else{logger[_0xc31d('0xb')](_0xc31d('0xc'),_0xe90f0e,_0xc31d('0xf'));_0x218d1d(_0x5136be[_0xc31d('0x14')][_0xc31d('0x13')]);}})[_0xc31d('0x15')](function(_0xbb3705){logger[_0xc31d('0x11')](_0xc31d('0xc'),_0xe90f0e,_0xbb3705);_0x53817b(_0xbb3705);});});}
\ No newline at end of file
index 7bf0438..4e5dc37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c5f=['isAuthenticated','index','/:id','show','create','post','/:id/configurations','addConfiguration','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','get'];(function(_0x51baf0,_0x3eec65){var _0x37b4ef=function(_0x28359b){while(--_0x28359b){_0x51baf0['push'](_0x51baf0['shift']());}};_0x37b4ef(++_0x3eec65);}(_0x9c5f,0x17c));var _0xf9c5=function(_0x4530da,_0x20b71e){_0x4530da=_0x4530da-0x0;var _0xf8401e=_0x9c5f[_0x4530da];return _0xf8401e;};'use strict';var multer=require(_0xf9c5('0x0'));var util=require(_0xf9c5('0x1'));var path=require(_0xf9c5('0x2'));var timeout=require(_0xf9c5('0x3'));var express=require(_0xf9c5('0x4'));var router=express[_0xf9c5('0x5')]();var fs_extra=require(_0xf9c5('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xf9c5('0x7'));var config=require(_0xf9c5('0x8'));var controller=require(_0xf9c5('0x9'));router[_0xf9c5('0xa')]('/',auth[_0xf9c5('0xb')](),controller[_0xf9c5('0xc')]);router['get'](_0xf9c5('0xd'),auth[_0xf9c5('0xb')](),controller[_0xf9c5('0xe')]);router[_0xf9c5('0xa')]('/:id/configurations',auth[_0xf9c5('0xb')](),controller['getConfigurations']);router['get']('/:id/fields',auth[_0xf9c5('0xb')](),controller['getFields']);router['post']('/',auth[_0xf9c5('0xb')](),controller[_0xf9c5('0xf')]);router[_0xf9c5('0x10')](_0xf9c5('0x11'),auth[_0xf9c5('0xb')](),controller[_0xf9c5('0x12')]);router[_0xf9c5('0x13')]('/:id',auth[_0xf9c5('0xb')](),controller[_0xf9c5('0x14')]);router['delete'](_0xf9c5('0xd'),auth[_0xf9c5('0xb')](),controller[_0xf9c5('0x15')]);module[_0xf9c5('0x16')]=router;
\ No newline at end of file
+var _0x016b=['get','isAuthenticated','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','create','post','addConfiguration','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller'];(function(_0x4ae487,_0x452e02){var _0x336358=function(_0x21ba83){while(--_0x21ba83){_0x4ae487['push'](_0x4ae487['shift']());}};_0x336358(++_0x452e02);}(_0x016b,0xbf));var _0xb016=function(_0x2b757f,_0x4b8c91){_0x2b757f=_0x2b757f-0x0;var _0x1ee53d=_0x016b[_0x2b757f];return _0x1ee53d;};'use strict';var multer=require(_0xb016('0x0'));var util=require(_0xb016('0x1'));var path=require(_0xb016('0x2'));var timeout=require('connect-timeout');var express=require(_0xb016('0x3'));var router=express[_0xb016('0x4')]();var fs_extra=require(_0xb016('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xb016('0x6'));var config=require(_0xb016('0x7'));var controller=require(_0xb016('0x8'));router[_0xb016('0x9')]('/',auth[_0xb016('0xa')](),controller['index']);router['get'](_0xb016('0xb'),auth['isAuthenticated'](),controller[_0xb016('0xc')]);router[_0xb016('0x9')](_0xb016('0xd'),auth[_0xb016('0xa')](),controller[_0xb016('0xe')]);router[_0xb016('0x9')](_0xb016('0xf'),auth['isAuthenticated'](),controller[_0xb016('0x10')]);router['post']('/',auth[_0xb016('0xa')](),controller[_0xb016('0x11')]);router[_0xb016('0x12')](_0xb016('0xd'),auth['isAuthenticated'](),controller[_0xb016('0x13')]);router[_0xb016('0x14')](_0xb016('0xb'),auth[_0xb016('0xa')](),controller[_0xb016('0x15')]);router[_0xb016('0x16')](_0xb016('0xb'),auth['isAuthenticated'](),controller[_0xb016('0x17')]);module[_0xb016('0x18')]=router;
\ No newline at end of file
index 056938f..d0ce388 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf759=['STRING','sequelize','exports'];(function(_0x270474,_0x313635){var _0xf6414a=function(_0x588a6e){while(--_0x588a6e){_0x270474['push'](_0x270474['shift']());}};_0xf6414a(++_0x313635);}(_0xf759,0x154));var _0x9f75=function(_0x401a8a,_0x24f0d7){_0x401a8a=_0x401a8a-0x0;var _0x32fb1f=_0xf759[_0x401a8a];return _0x32fb1f;};'use strict';var Sequelize=require(_0x9f75('0x0'));module[_0x9f75('0x1')]={'name':{'type':Sequelize[_0x9f75('0x2')]},'username':{'type':Sequelize[_0x9f75('0x2')]},'password':{'type':Sequelize[_0x9f75('0x2')]},'remoteUri':{'type':Sequelize[_0x9f75('0x2')]},'tenantId':{'type':Sequelize[_0x9f75('0x2')]},'clientId':{'type':Sequelize[_0x9f75('0x2')]},'clientSecret':{'type':Sequelize[_0x9f75('0x2')]},'serverUrl':{'type':Sequelize[_0x9f75('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x9f75('0x2')]}};
\ No newline at end of file
+var _0xb45e=['exports','STRING','sequelize'];(function(_0x59b01a,_0x362d1a){var _0x1722d5=function(_0x162bc0){while(--_0x162bc0){_0x59b01a['push'](_0x59b01a['shift']());}};_0x1722d5(++_0x362d1a);}(_0xb45e,0xe6));var _0xeb45=function(_0x41333d,_0x423c8d){_0x41333d=_0x41333d-0x0;var _0x261369=_0xb45e[_0x41333d];return _0x261369;};'use strict';var Sequelize=require(_0xeb45('0x0'));module[_0xeb45('0x1')]={'name':{'type':Sequelize[_0xeb45('0x2')]},'username':{'type':Sequelize[_0xeb45('0x2')]},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xeb45('0x2')]},'tenantId':{'type':Sequelize[_0xeb45('0x2')]},'clientId':{'type':Sequelize[_0xeb45('0x2')]},'clientSecret':{'type':Sequelize[_0xeb45('0x2')]},'serverUrl':{'type':Sequelize[_0xeb45('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xeb45('0x2')]}};
\ No newline at end of file
index 73b4313..0b014db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2137=['channel','create','Dynamics365Field','Subjects','getFields','ticketType','incident','Incident','title','customerid','ownerid','caseorigincode','subject','directioncode','phonecall_activity_parties','accountidyominame','actualserviceunits','billedserviceunits','contactidname','contactidyominame','contractidname','createdbyexternalpartyname','createdbyname','createdbyyominame','createdonbehalfbyyominame','customeridname','customeridtype','customeridyominame','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url','escalatedon','exchangerate','firstresponsebykpiidname','importsequencenumber','influencescore','kbarticleidname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_iotalertname','numberofchildincidents','onholdtime','overriddencreatedon','owneridname','owneridtype','owneridyominame','parentcaseidname','primarycontactidname','prioritycodename','productserialnumber','responseby','responsiblecontactidname','sentimentvalue','slaname','statecode','ticketnumber','timezoneruleversionnumber','utcconversiontimezonecode','versionnumber','concat','username','remoteUri','tenantId','clientSecret','slice','lastIndexOf','POST','https://login.microsoftonline.com/','/oauth2/token','clientId','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Bearer\x20','4.0','Attributes','remove','@odata.type','substring','push','all','isNil','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','DecimalAttributeMetadata','test','statusCode','Wrong\x20credentials',')/Attributes(','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','forEach','UserLocalizedLabel','Label','Value','LogicalName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','TrueOption','FalseOption','false','DisplayName',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','eml-format','rimraf','zip-dir','moment','mustache','util','path','fs-extra','lodash','crypto','jsforce','to-csv','ioredis','../../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','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','send','index','map','Dynamics365Account','fieldName','type','key','model','name','query','keys','intersection','attributes','fields','length','nolimit','sort','filters','filter','where','VIRTUAL','merge','options','rows','catch','show','params','includeAll','include','find','body','getConfigurations','Dynamics365Configuration','rawAttributes','order','pick','addConfiguration','findOne','getSubjects','Descriptions','getDescriptions'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x2137,0x134));var _0x7213=function(_0x4789c9,_0x4a6ae6){_0x4789c9=_0x4789c9-0x0;var _0x577fe0=_0x2137[_0x4789c9];return _0x577fe0;};'use strict';var emlformat=require(_0x7213('0x0'));var rimraf=require(_0x7213('0x1'));var zipdir=require(_0x7213('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7213('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x7213('0x4'));var util=require(_0x7213('0x5'));var path=require(_0x7213('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7213('0x7'));var _=require(_0x7213('0x8'));var squel=require('squel');var crypto=require(_0x7213('0x9'));var jsforce=require(_0x7213('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x7213('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x7213('0xc'));var authService=require('../../components/auth/service');var qs=require(_0x7213('0xd'));var as=require(_0x7213('0xe'));var hardwareService=require(_0x7213('0xf'));var logger=require(_0x7213('0x10'))(_0x7213('0x11'));var utils=require(_0x7213('0x12'));var config=require(_0x7213('0x13'));var licenseUtil=require(_0x7213('0x14'));var db=require(_0x7213('0x15'))['db'];var integrations=require(_0x7213('0x16'));function respondWithStatusCode(_0x58e74a,_0x3d0115){_0x3d0115=_0x3d0115||0xcc;return function(_0x413132){if(_0x413132){return _0x58e74a[_0x7213('0x17')](_0x3d0115);}return _0x58e74a[_0x7213('0x18')](_0x3d0115)[_0x7213('0x19')]();};}function respondWithResult(_0x9764e1,_0x121036){_0x121036=_0x121036||0xc8;return function(_0x215750){if(_0x215750){return _0x9764e1[_0x7213('0x18')](_0x121036)[_0x7213('0x1a')](_0x215750);}};}function respondWithFilteredResult(_0xe91a2f,_0x277455){return function(_0x4809fb){if(_0x4809fb){var _0xc6b44e=typeof _0x277455[_0x7213('0x1b')]===_0x7213('0x1c')&&typeof _0x277455[_0x7213('0x1d')]===_0x7213('0x1c');var _0x90bc4d=_0x4809fb[_0x7213('0x1e')];var _0x24e2a5=_0xc6b44e?0x0:_0x277455[_0x7213('0x1b')];var _0xbd1ded=_0xc6b44e?_0x4809fb[_0x7213('0x1e')]:_0x277455[_0x7213('0x1b')]+_0x277455[_0x7213('0x1d')];var _0x4c947b;if(_0xbd1ded>=_0x90bc4d){_0xbd1ded=_0x90bc4d;_0x4c947b=0xc8;}else{_0x4c947b=0xce;}_0xe91a2f[_0x7213('0x18')](_0x4c947b);return _0xe91a2f[_0x7213('0x1f')](_0x7213('0x20'),_0x24e2a5+'-'+_0xbd1ded+'/'+_0x90bc4d)[_0x7213('0x1a')](_0x4809fb);}return null;};}function patchUpdates(_0x1b17d0){return function(_0x5bddc2){try{jsonpatch[_0x7213('0x21')](_0x5bddc2,_0x1b17d0,!![]);}catch(_0x452b5c){return BPromise[_0x7213('0x22')](_0x452b5c);}return _0x5bddc2[_0x7213('0x23')]();};}function saveUpdates(_0x43c17c,_0x2e49d8){return function(_0x13e489){if(_0x13e489){return _0x13e489[_0x7213('0x24')](_0x43c17c)[_0x7213('0x25')](function(_0x4f3756){return _0x4f3756;});}return null;};}function removeEntity(_0x5ddb6b,_0x40d1a6){return function(_0x5627fd){if(_0x5627fd){return _0x5627fd[_0x7213('0x26')]()['then'](function(){_0x5ddb6b[_0x7213('0x18')](0xcc)[_0x7213('0x19')]();});}};}function handleEntityNotFound(_0x4eedf1,_0x5ecadd){return function(_0x4a46ac){if(!_0x4a46ac){_0x4eedf1[_0x7213('0x17')](0x194);}return _0x4a46ac;};}function handleError(_0x139f2f,_0x1e443d){_0x1e443d=_0x1e443d||0x1f4;return function(_0x1740a2){logger[_0x7213('0x27')](_0x1740a2[_0x7213('0x28')]);if(_0x1740a2['name']){delete _0x1740a2['name'];}_0x139f2f[_0x7213('0x18')](_0x1e443d)[_0x7213('0x29')](_0x1740a2);};}exports[_0x7213('0x2a')]=function(_0x59139e,_0x562783){var _0x59a540={},_0x11ed63={},_0x100766={'count':0x0,'rows':[]};var _0x2f8b8c=_[_0x7213('0x2b')](db[_0x7213('0x2c')]['rawAttributes'],function(_0x1c9fb9){return{'name':_0x1c9fb9[_0x7213('0x2d')],'type':_0x1c9fb9[_0x7213('0x2e')][_0x7213('0x2f')]};});_0x11ed63[_0x7213('0x30')]=_[_0x7213('0x2b')](_0x2f8b8c,_0x7213('0x31'));_0x11ed63[_0x7213('0x32')]=_[_0x7213('0x33')](_0x59139e['query']);_0x11ed63['filters']=_[_0x7213('0x34')](_0x11ed63[_0x7213('0x30')],_0x11ed63[_0x7213('0x32')]);_0x59a540[_0x7213('0x35')]=_['intersection'](_0x11ed63[_0x7213('0x30')],qs[_0x7213('0x36')](_0x59139e[_0x7213('0x32')]['fields']));_0x59a540['attributes']=_0x59a540[_0x7213('0x35')][_0x7213('0x37')]?_0x59a540[_0x7213('0x35')]:_0x11ed63[_0x7213('0x30')];if(!_0x59139e[_0x7213('0x32')]['hasOwnProperty'](_0x7213('0x38'))){_0x59a540[_0x7213('0x1d')]=qs['limit'](_0x59139e[_0x7213('0x32')][_0x7213('0x1d')]);_0x59a540['offset']=qs['offset'](_0x59139e['query'][_0x7213('0x1b')]);}_0x59a540['order']=qs[_0x7213('0x39')](_0x59139e[_0x7213('0x32')][_0x7213('0x39')]);_0x59a540['where']=qs[_0x7213('0x3a')](_['pick'](_0x59139e[_0x7213('0x32')],_0x11ed63['filters']),_0x2f8b8c);if(_0x59139e['query'][_0x7213('0x3b')]){_0x59a540[_0x7213('0x3c')]=_['merge'](_0x59a540[_0x7213('0x3c')],{'$or':_[_0x7213('0x2b')](_0x2f8b8c,function(_0x3af817){if(_0x3af817[_0x7213('0x2e')]!==_0x7213('0x3d')){var _0x210728={};_0x210728[_0x3af817[_0x7213('0x31')]]={'$like':'%'+_0x59139e[_0x7213('0x32')][_0x7213('0x3b')]+'%'};return _0x210728;}})});}_0x59a540=_[_0x7213('0x3e')]({},_0x59a540,_0x59139e[_0x7213('0x3f')]);var _0x368ec8={'where':_0x59a540[_0x7213('0x3c')]};return db[_0x7213('0x2c')][_0x7213('0x1e')](_0x368ec8)[_0x7213('0x25')](function(_0x30544c){_0x100766[_0x7213('0x1e')]=_0x30544c;if(_0x59139e[_0x7213('0x32')]['includeAll']){_0x59a540['include']=[{'all':!![]}];}return db['Dynamics365Account']['findAll'](_0x59a540);})['then'](function(_0x567125){_0x100766[_0x7213('0x40')]=_0x567125;return _0x100766;})[_0x7213('0x25')](respondWithFilteredResult(_0x562783,_0x59a540))[_0x7213('0x41')](handleError(_0x562783,null));};exports[_0x7213('0x42')]=function(_0x11faa8,_0x154ce9){var _0x2174d3={'raw':![],'where':{'id':_0x11faa8[_0x7213('0x43')]['id']}},_0x233c6b={};_0x233c6b[_0x7213('0x30')]=_[_0x7213('0x33')](db[_0x7213('0x2c')]['rawAttributes']);_0x233c6b['query']=_['keys'](_0x11faa8['query']);_0x233c6b['filters']=_[_0x7213('0x34')](_0x233c6b['model'],_0x233c6b[_0x7213('0x32')]);_0x2174d3[_0x7213('0x35')]=_[_0x7213('0x34')](_0x233c6b['model'],qs[_0x7213('0x36')](_0x11faa8[_0x7213('0x32')][_0x7213('0x36')]));_0x2174d3['attributes']=_0x2174d3[_0x7213('0x35')][_0x7213('0x37')]?_0x2174d3[_0x7213('0x35')]:_0x233c6b['model'];if(_0x11faa8[_0x7213('0x32')][_0x7213('0x44')]){_0x2174d3[_0x7213('0x45')]=[{'all':!![]}];}_0x2174d3=_[_0x7213('0x3e')]({},_0x2174d3,_0x11faa8[_0x7213('0x3f')]);return db[_0x7213('0x2c')][_0x7213('0x46')](_0x2174d3)[_0x7213('0x25')](handleEntityNotFound(_0x154ce9,null))[_0x7213('0x25')](respondWithResult(_0x154ce9,null))['catch'](handleError(_0x154ce9,null));};exports['create']=function(_0x2d276b,_0x2657c9){return db[_0x7213('0x2c')]['create'](_0x2d276b[_0x7213('0x47')],{})[_0x7213('0x25')](respondWithResult(_0x2657c9,0xc9))['catch'](handleError(_0x2657c9,null));};exports['update']=function(_0x517162,_0x24f637){if(_0x517162[_0x7213('0x47')]['id']){delete _0x517162['body']['id'];}return db[_0x7213('0x2c')][_0x7213('0x46')]({'where':{'id':_0x517162[_0x7213('0x43')]['id']}})[_0x7213('0x25')](handleEntityNotFound(_0x24f637,null))['then'](saveUpdates(_0x517162['body'],null))['then'](respondWithResult(_0x24f637,null))[_0x7213('0x41')](handleError(_0x24f637,null));};exports['destroy']=function(_0x245795,_0x127b24){return db[_0x7213('0x2c')][_0x7213('0x46')]({'where':{'id':_0x245795[_0x7213('0x43')]['id']}})[_0x7213('0x25')](handleEntityNotFound(_0x127b24,null))[_0x7213('0x25')](removeEntity(_0x127b24,null))[_0x7213('0x41')](handleError(_0x127b24,null));};exports[_0x7213('0x48')]=function(_0xc50ec1,_0xe0a818,_0x3c89f9){var _0x4dc545={};var _0x10c778={};var _0x50531c;var _0x4d8313;return db[_0x7213('0x2c')]['findOne']({'where':{'id':_0xc50ec1[_0x7213('0x43')]['id']}})[_0x7213('0x25')](handleEntityNotFound(_0xe0a818,null))[_0x7213('0x25')](function(_0xdeaaef){if(_0xdeaaef){_0x50531c=_0xdeaaef;_0x10c778[_0x7213('0x30')]=_['keys'](db[_0x7213('0x49')][_0x7213('0x4a')]);_0x10c778[_0x7213('0x32')]=_['keys'](_0xc50ec1[_0x7213('0x32')]);_0x10c778[_0x7213('0x3a')]=_['intersection'](_0x10c778[_0x7213('0x30')],_0x10c778[_0x7213('0x32')]);_0x4dc545[_0x7213('0x35')]=_['intersection'](_0x10c778[_0x7213('0x30')],qs[_0x7213('0x36')](_0xc50ec1[_0x7213('0x32')][_0x7213('0x36')]));_0x4dc545['attributes']=_0x4dc545[_0x7213('0x35')][_0x7213('0x37')]?_0x4dc545['attributes']:_0x10c778[_0x7213('0x30')];_0x4dc545[_0x7213('0x4b')]=qs[_0x7213('0x39')](_0xc50ec1[_0x7213('0x32')][_0x7213('0x39')]);_0x4dc545[_0x7213('0x3c')]=qs[_0x7213('0x3a')](_[_0x7213('0x4c')](_0xc50ec1[_0x7213('0x32')],_0x10c778[_0x7213('0x3a')]));if(_0xc50ec1['query'][_0x7213('0x3b')]){_0x4dc545['where']=_[_0x7213('0x3e')](_0x4dc545[_0x7213('0x3c')],{'$or':_[_0x7213('0x2b')](_0x4dc545[_0x7213('0x35')],function(_0x8dd958){var _0x452aeb={};_0x452aeb[_0x8dd958]={'$like':'%'+_0xc50ec1[_0x7213('0x32')][_0x7213('0x3b')]+'%'};return _0x452aeb;})});}_0x4dc545=_[_0x7213('0x3e')]({},_0x4dc545,_0xc50ec1['options']);return _0x50531c[_0x7213('0x48')](_0x4dc545);}})['then'](function(_0x2efa27){if(_0x2efa27){_0x4d8313=_0x2efa27[_0x7213('0x37')];if(!_0xc50ec1['query']['hasOwnProperty']('nolimit')){_0x4dc545[_0x7213('0x1d')]=qs[_0x7213('0x1d')](_0xc50ec1[_0x7213('0x32')][_0x7213('0x1d')]);_0x4dc545[_0x7213('0x1b')]=qs[_0x7213('0x1b')](_0xc50ec1[_0x7213('0x32')][_0x7213('0x1b')]);}return _0x50531c[_0x7213('0x48')](_0x4dc545);}})[_0x7213('0x25')](function(_0x91fdd6){if(_0x91fdd6){return _0x91fdd6?{'count':_0x4d8313,'rows':_0x91fdd6}:null;}})[_0x7213('0x25')](respondWithResult(_0xe0a818,null))[_0x7213('0x41')](handleError(_0xe0a818,null));};exports[_0x7213('0x4d')]=function(_0x3c9856,_0x4310b3,_0x49636f){if(_0x3c9856['body']['id']){delete _0x3c9856['body']['id'];}return db[_0x7213('0x2c')][_0x7213('0x4e')]({'where':{'id':_0x3c9856[_0x7213('0x43')]['id']}})['then'](handleEntityNotFound(_0x4310b3,null))[_0x7213('0x25')](function(_0x1cb6c0){if(_0x1cb6c0){_0x3c9856['body']['AccountId']=_0x1cb6c0['id'];_0x3c9856['body']['Subjects']=integrations[_0x7213('0x4f')](_0x3c9856[_0x7213('0x47')]['channel'],_0x3c9856[_0x7213('0x47')][_0x7213('0x2e')]);_0x3c9856[_0x7213('0x47')][_0x7213('0x50')]=integrations[_0x7213('0x51')](_0x3c9856['body'][_0x7213('0x52')],_0x3c9856[_0x7213('0x47')][_0x7213('0x2e')]);return db[_0x7213('0x49')][_0x7213('0x53')](_0x3c9856['body'],{'include':[{'model':db[_0x7213('0x54')],'as':_0x7213('0x55')},{'model':db[_0x7213('0x54')],'as':_0x7213('0x50')}]});}return null;})['then'](respondWithResult(_0x4310b3,null))['catch'](handleError(_0x4310b3,null));};exports[_0x7213('0x56')]=function(_0x5eba59,_0x4a5aa2,_0x435a35){var _0x3f7ca2=_0x5eba59[_0x7213('0x32')][_0x7213('0x57')];var _0xda82e4=_0x3f7ca2===_0x7213('0x58')?_0x7213('0x59'):'PhoneCall';var _0x371015='';var _0x255ff5='';var _0x36e8a0='';var _0x450200='';var _0x9a223c='';var _0x55afbf='';var _0x23aabb='';var _0x300924='';var _0x455aa1=[_0x7213('0x5a'),'description',_0x7213('0x5b'),_0x7213('0x5c'),_0x7213('0x5d'),_0x7213('0x5e'),'phonenumber','regardingobjectid',_0x7213('0x5f'),_0x7213('0x60')];var _0x2bdec7=['accountidname',_0x7213('0x61'),_0x7213('0x62'),_0x7213('0x63'),_0x7213('0x64'),_0x7213('0x65'),'contractdetailidname',_0x7213('0x66'),_0x7213('0x67'),'createdbyexternalpartyyominame',_0x7213('0x68'),_0x7213('0x69'),'createdon','createdonbehalfbyname',_0x7213('0x6a'),_0x7213('0x6b'),_0x7213('0x6c'),_0x7213('0x6d'),_0x7213('0x6e'),_0x7213('0x6f'),_0x7213('0x70'),_0x7213('0x71'),_0x7213('0x72'),_0x7213('0x73'),_0x7213('0x74'),'followupby',_0x7213('0x75'),_0x7213('0x76'),_0x7213('0x77'),'lastonholdtime','masteridname',_0x7213('0x78'),_0x7213('0x79'),_0x7213('0x7a'),_0x7213('0x7b'),_0x7213('0x7c'),_0x7213('0x7d'),_0x7213('0x7e'),'msdyn_incidenttypename',_0x7213('0x7f'),_0x7213('0x80'),_0x7213('0x81'),_0x7213('0x82'),_0x7213('0x83'),_0x7213('0x84'),_0x7213('0x85'),_0x7213('0x86'),_0x7213('0x87'),'primarycontactidyominame',_0x7213('0x88'),'productidname',_0x7213('0x89'),'resolveby','resolvebykpiidname',_0x7213('0x8a'),_0x7213('0x8b'),'responsiblecontactidyominame',_0x7213('0x8c'),'slainvokedidname',_0x7213('0x8d'),'socialprofileidname',_0x7213('0x8e'),'statuscode','subjectidname',_0x7213('0x8f'),_0x7213('0x90'),'transactioncurrencyidname','traversedpath',_0x7213('0x91'),_0x7213('0x92')];var _0x28db9f=_0x455aa1[_0x7213('0x93')](_0x2bdec7);return db['Dynamics365Account'][_0x7213('0x4e')]({'where':{'id':_0x5eba59['params']['id']},'attributes':['id',_0x7213('0x94'),'password',_0x7213('0x95'),_0x7213('0x96'),'clientId',_0x7213('0x97')]})[_0x7213('0x25')](handleEntityNotFound(_0x4a5aa2,null))['then'](function(_0x26b1a3){if(_0x26b1a3){_0x300924=_0x26b1a3['remoteUri'];var _0x4c581e=_0x300924[_0x7213('0x98')](-0x1);if(_0x4c581e==='/'){_0x300924=_0x300924['substring'](0x0,_0x300924[_0x7213('0x99')](_0x4c581e));}_0x23aabb=util['format']('%s/api/data/v9.0/',_0x300924);var _0x99cee1={'method':_0x7213('0x9a'),'uri':_0x7213('0x9b')+_0x26b1a3[_0x7213('0x96')]+_0x7213('0x9c'),'form':{'client_id':_0x26b1a3[_0x7213('0x9d')],'resource':_0x300924,'username':_0x26b1a3[_0x7213('0x94')],'password':_0x26b1a3['password'],'grant_type':'password','client_secret':_0x26b1a3[_0x7213('0x97')]},'json':!![]};return rp(_0x99cee1);}})[_0x7213('0x25')](function(_0x315b5d){_0x55afbf=_0x315b5d['access_token'];var _0x464e27={'method':_0x7213('0x9e'),'uri':encodeURI(_0x23aabb+_0x7213('0x9f')+_0xda82e4+'\x27'),'headers':{'Authorization':'Bearer\x20'+_0x55afbf,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x464e27);})[_0x7213('0x25')](function(_0x32bb3a){var _0x33a5b9=_0x32bb3a['value'][0x0];var _0x402c1f=_0x33a5b9[_0x7213('0xa0')];var _0x2b74ef={'method':_0x7213('0x9e'),'uri':_0x23aabb+_0x7213('0xa1')+_0x402c1f+_0x7213('0xa2'),'headers':{'Authorization':_0x7213('0xa3')+_0x55afbf,'If-None-Match':null,'OData-Version':_0x7213('0xa4')},'json':!![]};return rp(_0x2b74ef);})[_0x7213('0x25')](function(_0x2573c3){_0x371015=_0x2573c3;_0x255ff5=_0x371015[_0x7213('0xa5')];_0x255ff5=_[_0x7213('0xa6')](_0x255ff5,function(_0x3315da){return!_0x28db9f['includes'](_0x3315da['LogicalName']);});var _0x151e72=[];var _0x58f81e=[];_0x255ff5['forEach'](function(_0x38f49b){if(_0x38f49b[_0x7213('0xa7')]){var _0x4cbdd1=_0x38f49b[_0x7213('0xa7')][_0x7213('0xa8')](_0x38f49b[_0x7213('0xa7')][_0x7213('0x99')]('.')+0x1);if(_0x4cbdd1==='PicklistAttributeMetadata'){_0x151e72[_0x7213('0xa9')](getSelectList(_0x23aabb,_0x3f7ca2,_0x58f81e,_0x371015[_0x7213('0xa0')],_0x38f49b['MetadataId'],_0x55afbf));}}});return Promise[_0x7213('0xaa')](_0x151e72);})[_0x7213('0x25')](function(_0xc1f02f){_0x36e8a0=_0xc1f02f[0x0];var _0x36ad7f=[];var _0x1ead9f=[];_0x255ff5['forEach'](function(_0x6d3b38){if(!_[_0x7213('0xab')](_0x6d3b38[_0x7213('0xa7')])){var _0x27f1c8=_0x6d3b38[_0x7213('0xa7')]['substring'](_0x6d3b38[_0x7213('0xa7')][_0x7213('0x99')]('.')+0x1);if(_0x27f1c8==='BooleanAttributeMetadata'){_0x36ad7f[_0x7213('0xa9')](getBooleanList(_0x23aabb,_0x3f7ca2,_0x1ead9f,_0x371015['MetadataId'],_0x6d3b38['MetadataId'],_0x55afbf));}}});return Promise[_0x7213('0xaa')](_0x36ad7f);})[_0x7213('0x25')](function(_0xca097e){_0x450200=_0xca097e[0x0];var _0x5ca6fa=[];var _0x1a23c6=[];_0x255ff5['forEach'](function(_0x12b1b1){if(_0x12b1b1[_0x7213('0xa7')]){var _0x20cb13=_0x12b1b1[_0x7213('0xa7')][_0x7213('0xa8')](_0x12b1b1['@odata.type'][_0x7213('0x99')]('.')+0x1);if(_0x20cb13==='StringAttributeMetadata'||_0x20cb13==='DoubleAttributeMetadata'||_0x20cb13==='BigIntAttributeMetadata'||_0x20cb13===_0x7213('0xac')||_0x20cb13===_0x7213('0xad')||_0x20cb13===_0x7213('0xae')||_0x20cb13===_0x7213('0xaf')||_0x20cb13==='EntityNameAttributeMetadata'||_0x20cb13==='StateAttributeMetadata'||_0x20cb13===_0x7213('0xb0')){_0x5ca6fa[_0x7213('0xa9')](getInputList(_0x23aabb,_0x3f7ca2,_0x20cb13,_0x1a23c6,_0x371015[_0x7213('0xa0')],_0x12b1b1[_0x7213('0xa0')],_0x55afbf));}}});return Promise['all'](_0x5ca6fa);})[_0x7213('0x25')](function(_0x50b9d5){_0x9a223c=_0x50b9d5[0x0];var _0x302c73=_0x36e8a0[_0x7213('0x93')](_0x450200)[_0x7213('0x93')](_0x9a223c);var _0x285c83={'count':_0x302c73[_0x7213('0x37')],'rows':_0x302c73};return _0x285c83;})['then'](respondWithResult(_0x4a5aa2,null))[_0x7213('0x41')](function(_0x49c40c){var _0x48e6c3=_0x5eba59[_0x7213('0x32')][_0x7213('0xb1')]?0x1f4:_0x49c40c[_0x7213('0xb2')]||0x1f4;logger[_0x7213('0x27')](_0x49c40c[_0x7213('0x28')]);delete _0x49c40c[_0x7213('0x31')];if(_0x48e6c3===0x191){_0x48e6c3=0x190;}_0x4a5aa2[_0x7213('0x18')](_0x48e6c3)[_0x7213('0x29')](_0x5eba59[_0x7213('0x32')][_0x7213('0xb1')]?{'message':_0x7213('0xb3'),'statusCode':_0x49c40c[_0x7213('0xb2')]}:_0x49c40c);});};function getSelectList(_0x1b6b12,_0x4c5766,_0x32479a,_0x453261,_0x4f0043,_0x224dd0){var _0x37f290={'method':_0x7213('0x9e'),'uri':_0x1b6b12+_0x7213('0xa1')+_0x453261+_0x7213('0xb4')+_0x4f0043+')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?'+_0x7213('0xb5'),'headers':{'Authorization':_0x7213('0xa3')+_0x224dd0,'If-None-Match':null,'OData-Version':_0x7213('0xa4')},'json':!![]};return rp(_0x37f290)['then'](function(_0x17318f){var _0x14ffaa=[];var _0xcf5dba=_0x17318f[_0x7213('0xb6')]['Options'];_0xcf5dba[_0x7213('0xb7')](function(_0x380f2c){_0x14ffaa[_0x7213('0xa9')]({'name':_0x380f2c['Label'][_0x7213('0xb8')][_0x7213('0xb9')],'value':String(_0x380f2c[_0x7213('0xba')])});});var _0x419bec={'id':_0x4c5766+'_'+_0x17318f[_0x7213('0xbb')],'name':_0x17318f['DisplayName']['UserLocalizedLabel'][_0x7213('0xb9')],'custom':![],'options':_0x14ffaa};_0x32479a[_0x7213('0xa9')](_0x419bec);return _0x32479a;});}function getBooleanList(_0x576402,_0x43be2a,_0xe2653c,_0x5d4c25,_0xd5c476,_0x13a2e3){var _0x4a205b={'method':'GET','uri':_0x576402+_0x7213('0xa1')+_0x5d4c25+_0x7213('0xb4')+_0xd5c476+_0x7213('0xbc'),'headers':{'Authorization':_0x7213('0xa3')+_0x13a2e3,'If-None-Match':null,'OData-Version':_0x7213('0xa4')},'json':!![]};return rp(_0x4a205b)['then'](function(_0x35cf62){var _0x1385c0=[];_0x1385c0[_0x7213('0xa9')]({'name':_0x35cf62['OptionSet'][_0x7213('0xbd')][_0x7213('0xb9')][_0x7213('0xb8')]['Label'],'value':'true'},{'name':_0x35cf62[_0x7213('0xb6')][_0x7213('0xbe')]['Label'][_0x7213('0xb8')]['Label'],'value':_0x7213('0xbf')});var _0x163ee6={'id':_0x43be2a+'_'+_0x35cf62['LogicalName'],'name':_0x35cf62[_0x7213('0xc0')]['UserLocalizedLabel'][_0x7213('0xb9')],'custom':![],'options':_0x1385c0};_0xe2653c[_0x7213('0xa9')](_0x163ee6);return _0xe2653c;});}function getInputList(_0x4f1b8b,_0x3d008b,_0x31c43f,_0x23be4e,_0x2e6410,_0x235c75,_0xcf78e8){var _0x135037={'method':_0x7213('0x9e'),'uri':_0x4f1b8b+'EntityDefinitions('+_0x2e6410+_0x7213('0xb4')+_0x235c75+_0x7213('0xc1')+_0x31c43f+_0x7213('0xc2'),'headers':{'Authorization':'Bearer\x20'+_0xcf78e8,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x135037)[_0x7213('0x25')](function(_0x49488d){var _0x5d2d1c={'id':_0x3d008b+'_'+_0x49488d[_0x7213('0xbb')],'name':_0x49488d[_0x7213('0xc0')]['UserLocalizedLabel']?_0x49488d['DisplayName'][_0x7213('0xb8')][_0x7213('0xb9')]:_0x49488d[_0x7213('0xbb')],'custom':![],'options':[]};_0x23be4e['push'](_0x5d2d1c);return _0x23be4e;});}
\ No newline at end of file
+var _0xaf5a=['regardingobjectid','phonecall_activity_parties','accountidname','accountidyominame','billedserviceunits','contactidname','contactidyominame','contractdetailidname','contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdonbehalfbyname','createdonbehalfbyyominame','customeridname','customeridtype','customeridyominame','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url','exchangerate','followupby','importsequencenumber','influencescore','kbarticleidname','modifiedbyexternalpartyname','modifiedbyname','modifiedon','modifiedonbehalfbyname','msdyn_iotalertname','numberofchildincidents','onholdtime','overriddencreatedon','owneridname','owneridtype','owneridyominame','parentcaseidname','primarycontactidyominame','prioritycodename','productidname','productserialnumber','resolvebykpiidname','responsiblecontactidname','responsiblecontactidyominame','slainvokedidname','slaname','statecode','statuscode','subjectidname','traversedpath','utcconversiontimezonecode','versionnumber','username','remoteUri','clientId','clientSecret','slice','substring','%s/api/data/v9.0/','POST','https://login.microsoftonline.com/','tenantId','/oauth2/token','password','access_token','GET','4.0','value','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','remove','includes','LogicalName','forEach','@odata.type','lastIndexOf','PicklistAttributeMetadata','push','all','BooleanAttributeMetadata','StringAttributeMetadata','DoubleAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','concat','test','send','Wrong\x20credentials',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','Bearer\x20','OptionSet','Options','Label','UserLocalizedLabel','Value','DisplayName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','TrueOption','true','false','?$select=DisplayName,LogicalName','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','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','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','index','map','rawAttributes','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','Dynamics365Account','includeAll','findAll','rows','params','find','catch','create','body','getConfigurations','findOne','Dynamics365Configuration','AccountId','Subjects','getSubjects','channel','type','Descriptions','getDescriptions','Dynamics365Field','getFields','ticketType','incident','Incident','PhoneCall','title','description','customerid','ownerid','caseorigincode','subject','phonenumber'];(function(_0x5e0407,_0x384843){var _0x10a4b8=function(_0x5b2f32){while(--_0x5b2f32){_0x5e0407['push'](_0x5e0407['shift']());}};_0x10a4b8(++_0x384843);}(_0xaf5a,0x144));var _0xaaf5=function(_0x8cb470,_0x2b9757){_0x8cb470=_0x8cb470-0x0;var _0x2ca139=_0xaf5a[_0x8cb470];return _0x2ca139;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xaaf5('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xaaf5('0x1'));var rp=require(_0xaaf5('0x2'));var moment=require(_0xaaf5('0x3'));var BPromise=require(_0xaaf5('0x4'));var Mustache=require(_0xaaf5('0x5'));var util=require(_0xaaf5('0x6'));var path=require(_0xaaf5('0x7'));var sox=require(_0xaaf5('0x8'));var csv=require('to-csv');var ejs=require(_0xaaf5('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xaaf5('0xa'));var squel=require(_0xaaf5('0xb'));var crypto=require(_0xaaf5('0xc'));var jsforce=require(_0xaaf5('0xd'));var deskjs=require(_0xaaf5('0xe'));var toCsv=require('to-csv');var querystring=require(_0xaaf5('0xf'));var Papa=require(_0xaaf5('0x10'));var Redis=require(_0xaaf5('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xaaf5('0x12'));var as=require(_0xaaf5('0x13'));var hardwareService=require(_0xaaf5('0x14'));var logger=require(_0xaaf5('0x15'))(_0xaaf5('0x16'));var utils=require(_0xaaf5('0x17'));var config=require(_0xaaf5('0x18'));var licenseUtil=require(_0xaaf5('0x19'));var db=require(_0xaaf5('0x1a'))['db'];var integrations=require(_0xaaf5('0x1b'));function respondWithStatusCode(_0x55794e,_0x200236){_0x200236=_0x200236||0xcc;return function(_0x268051){if(_0x268051){return _0x55794e[_0xaaf5('0x1c')](_0x200236);}return _0x55794e[_0xaaf5('0x1d')](_0x200236)[_0xaaf5('0x1e')]();};}function respondWithResult(_0x33647b,_0x39bf16){_0x39bf16=_0x39bf16||0xc8;return function(_0x2e45ad){if(_0x2e45ad){return _0x33647b['status'](_0x39bf16)['json'](_0x2e45ad);}};}function respondWithFilteredResult(_0x4f6721,_0x3e5981){return function(_0x3a58e6){if(_0x3a58e6){var _0x55f8f3=typeof _0x3e5981[_0xaaf5('0x1f')]===_0xaaf5('0x20')&&typeof _0x3e5981[_0xaaf5('0x21')]==='undefined';var _0x56e709=_0x3a58e6[_0xaaf5('0x22')];var _0x29d42a=_0x55f8f3?0x0:_0x3e5981[_0xaaf5('0x1f')];var _0x37b34a=_0x55f8f3?_0x3a58e6[_0xaaf5('0x22')]:_0x3e5981['offset']+_0x3e5981[_0xaaf5('0x21')];var _0x4643a2;if(_0x37b34a>=_0x56e709){_0x37b34a=_0x56e709;_0x4643a2=0xc8;}else{_0x4643a2=0xce;}_0x4f6721[_0xaaf5('0x1d')](_0x4643a2);return _0x4f6721[_0xaaf5('0x23')](_0xaaf5('0x24'),_0x29d42a+'-'+_0x37b34a+'/'+_0x56e709)[_0xaaf5('0x25')](_0x3a58e6);}return null;};}function patchUpdates(_0x35d940){return function(_0x278fb5){try{jsonpatch[_0xaaf5('0x26')](_0x278fb5,_0x35d940,!![]);}catch(_0x51abf3){return BPromise[_0xaaf5('0x27')](_0x51abf3);}return _0x278fb5[_0xaaf5('0x28')]();};}function saveUpdates(_0x232a5d,_0x2ac3cf){return function(_0x8c129){if(_0x8c129){return _0x8c129[_0xaaf5('0x29')](_0x232a5d)[_0xaaf5('0x2a')](function(_0x16a1d0){return _0x16a1d0;});}return null;};}function removeEntity(_0x577761,_0x290d68){return function(_0x30f383){if(_0x30f383){return _0x30f383[_0xaaf5('0x2b')]()[_0xaaf5('0x2a')](function(){_0x577761[_0xaaf5('0x1d')](0xcc)[_0xaaf5('0x1e')]();});}};}function handleEntityNotFound(_0x115800,_0x433041){return function(_0x187285){if(!_0x187285){_0x115800[_0xaaf5('0x1c')](0x194);}return _0x187285;};}function handleError(_0x53cf4e,_0x8b417e){_0x8b417e=_0x8b417e||0x1f4;return function(_0x3355ef){logger[_0xaaf5('0x2c')](_0x3355ef[_0xaaf5('0x2d')]);if(_0x3355ef[_0xaaf5('0x2e')]){delete _0x3355ef[_0xaaf5('0x2e')];}_0x53cf4e[_0xaaf5('0x1d')](_0x8b417e)['send'](_0x3355ef);};}exports[_0xaaf5('0x2f')]=function(_0x34177a,_0x325ab9){var _0x49c7f2={},_0x5e9b31={},_0x4265e5={'count':0x0,'rows':[]};var _0x5b8030=_[_0xaaf5('0x30')](db['Dynamics365Account'][_0xaaf5('0x31')],function(_0x1951ae){return{'name':_0x1951ae['fieldName'],'type':_0x1951ae['type']['key']};});_0x5e9b31['model']=_[_0xaaf5('0x30')](_0x5b8030,_0xaaf5('0x2e'));_0x5e9b31[_0xaaf5('0x32')]=_[_0xaaf5('0x33')](_0x34177a[_0xaaf5('0x32')]);_0x5e9b31[_0xaaf5('0x34')]=_[_0xaaf5('0x35')](_0x5e9b31['model'],_0x5e9b31[_0xaaf5('0x32')]);_0x49c7f2[_0xaaf5('0x36')]=_[_0xaaf5('0x35')](_0x5e9b31[_0xaaf5('0x37')],qs['fields'](_0x34177a['query'][_0xaaf5('0x38')]));_0x49c7f2[_0xaaf5('0x36')]=_0x49c7f2['attributes'][_0xaaf5('0x39')]?_0x49c7f2[_0xaaf5('0x36')]:_0x5e9b31['model'];if(!_0x34177a[_0xaaf5('0x32')][_0xaaf5('0x3a')](_0xaaf5('0x3b'))){_0x49c7f2['limit']=qs[_0xaaf5('0x21')](_0x34177a[_0xaaf5('0x32')]['limit']);_0x49c7f2[_0xaaf5('0x1f')]=qs['offset'](_0x34177a[_0xaaf5('0x32')][_0xaaf5('0x1f')]);}_0x49c7f2[_0xaaf5('0x3c')]=qs[_0xaaf5('0x3d')](_0x34177a[_0xaaf5('0x32')]['sort']);_0x49c7f2[_0xaaf5('0x3e')]=qs['filters'](_[_0xaaf5('0x3f')](_0x34177a[_0xaaf5('0x32')],_0x5e9b31['filters']),_0x5b8030);if(_0x34177a[_0xaaf5('0x32')][_0xaaf5('0x40')]){_0x49c7f2[_0xaaf5('0x3e')]=_[_0xaaf5('0x41')](_0x49c7f2['where'],{'$or':_['map'](_0x5b8030,function(_0x2a1a93){if(_0x2a1a93['type']!==_0xaaf5('0x42')){var _0x5c5a40={};_0x5c5a40[_0x2a1a93['name']]={'$like':'%'+_0x34177a['query']['filter']+'%'};return _0x5c5a40;}})});}_0x49c7f2=_['merge']({},_0x49c7f2,_0x34177a[_0xaaf5('0x43')]);var _0x5b5cac={'where':_0x49c7f2[_0xaaf5('0x3e')]};return db[_0xaaf5('0x44')][_0xaaf5('0x22')](_0x5b5cac)['then'](function(_0x21d173){_0x4265e5[_0xaaf5('0x22')]=_0x21d173;if(_0x34177a['query'][_0xaaf5('0x45')]){_0x49c7f2['include']=[{'all':!![]}];}return db['Dynamics365Account'][_0xaaf5('0x46')](_0x49c7f2);})[_0xaaf5('0x2a')](function(_0x42ba6d){_0x4265e5[_0xaaf5('0x47')]=_0x42ba6d;return _0x4265e5;})[_0xaaf5('0x2a')](respondWithFilteredResult(_0x325ab9,_0x49c7f2))['catch'](handleError(_0x325ab9,null));};exports['show']=function(_0x353e76,_0x3d0978){var _0x240118={'raw':![],'where':{'id':_0x353e76[_0xaaf5('0x48')]['id']}},_0x7df7bc={};_0x7df7bc[_0xaaf5('0x37')]=_[_0xaaf5('0x33')](db['Dynamics365Account'][_0xaaf5('0x31')]);_0x7df7bc[_0xaaf5('0x32')]=_[_0xaaf5('0x33')](_0x353e76[_0xaaf5('0x32')]);_0x7df7bc['filters']=_[_0xaaf5('0x35')](_0x7df7bc['model'],_0x7df7bc[_0xaaf5('0x32')]);_0x240118['attributes']=_[_0xaaf5('0x35')](_0x7df7bc['model'],qs['fields'](_0x353e76['query']['fields']));_0x240118[_0xaaf5('0x36')]=_0x240118[_0xaaf5('0x36')][_0xaaf5('0x39')]?_0x240118[_0xaaf5('0x36')]:_0x7df7bc[_0xaaf5('0x37')];if(_0x353e76[_0xaaf5('0x32')][_0xaaf5('0x45')]){_0x240118['include']=[{'all':!![]}];}_0x240118=_[_0xaaf5('0x41')]({},_0x240118,_0x353e76[_0xaaf5('0x43')]);return db['Dynamics365Account'][_0xaaf5('0x49')](_0x240118)[_0xaaf5('0x2a')](handleEntityNotFound(_0x3d0978,null))[_0xaaf5('0x2a')](respondWithResult(_0x3d0978,null))[_0xaaf5('0x4a')](handleError(_0x3d0978,null));};exports[_0xaaf5('0x4b')]=function(_0x1f9925,_0x56de90){return db['Dynamics365Account'][_0xaaf5('0x4b')](_0x1f9925[_0xaaf5('0x4c')],{})[_0xaaf5('0x2a')](respondWithResult(_0x56de90,0xc9))['catch'](handleError(_0x56de90,null));};exports[_0xaaf5('0x29')]=function(_0x584cce,_0x116ab9){if(_0x584cce[_0xaaf5('0x4c')]['id']){delete _0x584cce[_0xaaf5('0x4c')]['id'];}return db[_0xaaf5('0x44')][_0xaaf5('0x49')]({'where':{'id':_0x584cce[_0xaaf5('0x48')]['id']}})[_0xaaf5('0x2a')](handleEntityNotFound(_0x116ab9,null))['then'](saveUpdates(_0x584cce['body'],null))[_0xaaf5('0x2a')](respondWithResult(_0x116ab9,null))[_0xaaf5('0x4a')](handleError(_0x116ab9,null));};exports[_0xaaf5('0x2b')]=function(_0x41528a,_0x46ddfa){return db['Dynamics365Account'][_0xaaf5('0x49')]({'where':{'id':_0x41528a[_0xaaf5('0x48')]['id']}})['then'](handleEntityNotFound(_0x46ddfa,null))[_0xaaf5('0x2a')](removeEntity(_0x46ddfa,null))[_0xaaf5('0x4a')](handleError(_0x46ddfa,null));};exports[_0xaaf5('0x4d')]=function(_0x4b7b23,_0x9d6c6b,_0x5d3325){var _0x498af2={};var _0x4a18be={};var _0x2fa4c9;var _0x5b1318;return db[_0xaaf5('0x44')][_0xaaf5('0x4e')]({'where':{'id':_0x4b7b23[_0xaaf5('0x48')]['id']}})[_0xaaf5('0x2a')](handleEntityNotFound(_0x9d6c6b,null))[_0xaaf5('0x2a')](function(_0x528d4f){if(_0x528d4f){_0x2fa4c9=_0x528d4f;_0x4a18be[_0xaaf5('0x37')]=_[_0xaaf5('0x33')](db[_0xaaf5('0x4f')][_0xaaf5('0x31')]);_0x4a18be['query']=_[_0xaaf5('0x33')](_0x4b7b23[_0xaaf5('0x32')]);_0x4a18be[_0xaaf5('0x34')]=_['intersection'](_0x4a18be['model'],_0x4a18be[_0xaaf5('0x32')]);_0x498af2[_0xaaf5('0x36')]=_[_0xaaf5('0x35')](_0x4a18be[_0xaaf5('0x37')],qs['fields'](_0x4b7b23[_0xaaf5('0x32')][_0xaaf5('0x38')]));_0x498af2['attributes']=_0x498af2[_0xaaf5('0x36')][_0xaaf5('0x39')]?_0x498af2[_0xaaf5('0x36')]:_0x4a18be[_0xaaf5('0x37')];_0x498af2[_0xaaf5('0x3c')]=qs[_0xaaf5('0x3d')](_0x4b7b23[_0xaaf5('0x32')][_0xaaf5('0x3d')]);_0x498af2[_0xaaf5('0x3e')]=qs[_0xaaf5('0x34')](_[_0xaaf5('0x3f')](_0x4b7b23['query'],_0x4a18be[_0xaaf5('0x34')]));if(_0x4b7b23[_0xaaf5('0x32')]['filter']){_0x498af2['where']=_[_0xaaf5('0x41')](_0x498af2['where'],{'$or':_[_0xaaf5('0x30')](_0x498af2[_0xaaf5('0x36')],function(_0xff3339){var _0x310c55={};_0x310c55[_0xff3339]={'$like':'%'+_0x4b7b23[_0xaaf5('0x32')][_0xaaf5('0x40')]+'%'};return _0x310c55;})});}_0x498af2=_[_0xaaf5('0x41')]({},_0x498af2,_0x4b7b23[_0xaaf5('0x43')]);return _0x2fa4c9['getConfigurations'](_0x498af2);}})[_0xaaf5('0x2a')](function(_0x15f198){if(_0x15f198){_0x5b1318=_0x15f198['length'];if(!_0x4b7b23[_0xaaf5('0x32')][_0xaaf5('0x3a')]('nolimit')){_0x498af2[_0xaaf5('0x21')]=qs[_0xaaf5('0x21')](_0x4b7b23[_0xaaf5('0x32')][_0xaaf5('0x21')]);_0x498af2[_0xaaf5('0x1f')]=qs[_0xaaf5('0x1f')](_0x4b7b23[_0xaaf5('0x32')][_0xaaf5('0x1f')]);}return _0x2fa4c9[_0xaaf5('0x4d')](_0x498af2);}})[_0xaaf5('0x2a')](function(_0x373853){if(_0x373853){return _0x373853?{'count':_0x5b1318,'rows':_0x373853}:null;}})[_0xaaf5('0x2a')](respondWithResult(_0x9d6c6b,null))['catch'](handleError(_0x9d6c6b,null));};exports['addConfiguration']=function(_0xbb0a44,_0x99e094,_0x1de9da){if(_0xbb0a44[_0xaaf5('0x4c')]['id']){delete _0xbb0a44[_0xaaf5('0x4c')]['id'];}return db[_0xaaf5('0x44')][_0xaaf5('0x4e')]({'where':{'id':_0xbb0a44[_0xaaf5('0x48')]['id']}})['then'](handleEntityNotFound(_0x99e094,null))[_0xaaf5('0x2a')](function(_0x51c372){if(_0x51c372){_0xbb0a44[_0xaaf5('0x4c')][_0xaaf5('0x50')]=_0x51c372['id'];_0xbb0a44[_0xaaf5('0x4c')][_0xaaf5('0x51')]=integrations[_0xaaf5('0x52')](_0xbb0a44[_0xaaf5('0x4c')][_0xaaf5('0x53')],_0xbb0a44[_0xaaf5('0x4c')][_0xaaf5('0x54')]);_0xbb0a44['body'][_0xaaf5('0x55')]=integrations[_0xaaf5('0x56')](_0xbb0a44[_0xaaf5('0x4c')][_0xaaf5('0x53')],_0xbb0a44[_0xaaf5('0x4c')][_0xaaf5('0x54')]);return db['Dynamics365Configuration'][_0xaaf5('0x4b')](_0xbb0a44[_0xaaf5('0x4c')],{'include':[{'model':db[_0xaaf5('0x57')],'as':_0xaaf5('0x51')},{'model':db[_0xaaf5('0x57')],'as':'Descriptions'}]});}return null;})[_0xaaf5('0x2a')](respondWithResult(_0x99e094,null))[_0xaaf5('0x4a')](handleError(_0x99e094,null));};exports[_0xaaf5('0x58')]=function(_0x389873,_0x31dbc3,_0x68c7a5){var _0xe0a8ff=_0x389873[_0xaaf5('0x32')][_0xaaf5('0x59')];var _0x277ff3=_0xe0a8ff===_0xaaf5('0x5a')?_0xaaf5('0x5b'):_0xaaf5('0x5c');var _0x3e0ae8='';var _0x6cb658='';var _0x416d73='';var _0x46336b='';var _0x19dddc='';var _0x1e18f3='';var _0x8e3f21='';var _0x417e93='';var _0x21aa9c=[_0xaaf5('0x5d'),_0xaaf5('0x5e'),_0xaaf5('0x5f'),_0xaaf5('0x60'),_0xaaf5('0x61'),_0xaaf5('0x62'),_0xaaf5('0x63'),_0xaaf5('0x64'),'directioncode',_0xaaf5('0x65')];var _0x28eb40=[_0xaaf5('0x66'),_0xaaf5('0x67'),'actualserviceunits',_0xaaf5('0x68'),_0xaaf5('0x69'),_0xaaf5('0x6a'),_0xaaf5('0x6b'),_0xaaf5('0x6c'),_0xaaf5('0x6d'),_0xaaf5('0x6e'),_0xaaf5('0x6f'),_0xaaf5('0x70'),'createdon',_0xaaf5('0x71'),_0xaaf5('0x72'),_0xaaf5('0x73'),_0xaaf5('0x74'),_0xaaf5('0x75'),_0xaaf5('0x76'),_0xaaf5('0x77'),_0xaaf5('0x78'),_0xaaf5('0x79'),'escalatedon',_0xaaf5('0x7a'),'firstresponsebykpiidname',_0xaaf5('0x7b'),_0xaaf5('0x7c'),_0xaaf5('0x7d'),_0xaaf5('0x7e'),'lastonholdtime','masteridname',_0xaaf5('0x7f'),'modifiedbyexternalpartyyominame',_0xaaf5('0x80'),'modifiedbyyominame',_0xaaf5('0x81'),_0xaaf5('0x82'),'modifiedonbehalfbyyominame','msdyn_incidenttypename',_0xaaf5('0x83'),_0xaaf5('0x84'),_0xaaf5('0x85'),_0xaaf5('0x86'),_0xaaf5('0x87'),_0xaaf5('0x88'),_0xaaf5('0x89'),_0xaaf5('0x8a'),'primarycontactidname',_0xaaf5('0x8b'),_0xaaf5('0x8c'),_0xaaf5('0x8d'),_0xaaf5('0x8e'),'resolveby',_0xaaf5('0x8f'),'responseby',_0xaaf5('0x90'),_0xaaf5('0x91'),'sentimentvalue',_0xaaf5('0x92'),_0xaaf5('0x93'),'socialprofileidname',_0xaaf5('0x94'),_0xaaf5('0x95'),_0xaaf5('0x96'),'ticketnumber','timezoneruleversionnumber','transactioncurrencyidname',_0xaaf5('0x97'),_0xaaf5('0x98'),_0xaaf5('0x99')];var _0x4a0d11=_0x21aa9c['concat'](_0x28eb40);return db[_0xaaf5('0x44')][_0xaaf5('0x4e')]({'where':{'id':_0x389873[_0xaaf5('0x48')]['id']},'attributes':['id',_0xaaf5('0x9a'),'password',_0xaaf5('0x9b'),'tenantId',_0xaaf5('0x9c'),_0xaaf5('0x9d')]})[_0xaaf5('0x2a')](handleEntityNotFound(_0x31dbc3,null))[_0xaaf5('0x2a')](function(_0x261793){if(_0x261793){_0x417e93=_0x261793[_0xaaf5('0x9b')];var _0xbc1a4=_0x417e93[_0xaaf5('0x9e')](-0x1);if(_0xbc1a4==='/'){_0x417e93=_0x417e93[_0xaaf5('0x9f')](0x0,_0x417e93['lastIndexOf'](_0xbc1a4));}_0x8e3f21=util['format'](_0xaaf5('0xa0'),_0x417e93);var _0x30ad29={'method':_0xaaf5('0xa1'),'uri':_0xaaf5('0xa2')+_0x261793[_0xaaf5('0xa3')]+_0xaaf5('0xa4'),'form':{'client_id':_0x261793[_0xaaf5('0x9c')],'resource':_0x417e93,'username':_0x261793[_0xaaf5('0x9a')],'password':_0x261793[_0xaaf5('0xa5')],'grant_type':_0xaaf5('0xa5'),'client_secret':_0x261793['clientSecret']},'json':!![]};return rp(_0x30ad29);}})[_0xaaf5('0x2a')](function(_0x24c5b3){_0x1e18f3=_0x24c5b3[_0xaaf5('0xa6')];var _0x54aaeb={'method':_0xaaf5('0xa7'),'uri':encodeURI(_0x8e3f21+'EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27'+_0x277ff3+'\x27'),'headers':{'Authorization':'Bearer\x20'+_0x1e18f3,'If-None-Match':null,'OData-Version':_0xaaf5('0xa8')},'json':!![]};return rp(_0x54aaeb);})[_0xaaf5('0x2a')](function(_0x16a7ef){var _0x1478db=_0x16a7ef[_0xaaf5('0xa9')][0x0];var _0x21d736=_0x1478db[_0xaaf5('0xaa')];var _0x471531={'method':_0xaaf5('0xa7'),'uri':_0x8e3f21+_0xaaf5('0xab')+_0x21d736+_0xaaf5('0xac'),'headers':{'Authorization':'Bearer\x20'+_0x1e18f3,'If-None-Match':null,'OData-Version':_0xaaf5('0xa8')},'json':!![]};return rp(_0x471531);})['then'](function(_0x4b7af4){_0x3e0ae8=_0x4b7af4;_0x6cb658=_0x3e0ae8[_0xaaf5('0xad')];_0x6cb658=_[_0xaaf5('0xae')](_0x6cb658,function(_0x12f86f){return!_0x4a0d11[_0xaaf5('0xaf')](_0x12f86f[_0xaaf5('0xb0')]);});var _0x112b0d=[];var _0x19f37c=[];_0x6cb658[_0xaaf5('0xb1')](function(_0x243f52){if(_0x243f52[_0xaaf5('0xb2')]){var _0x3881f1=_0x243f52[_0xaaf5('0xb2')]['substring'](_0x243f52[_0xaaf5('0xb2')][_0xaaf5('0xb3')]('.')+0x1);if(_0x3881f1===_0xaaf5('0xb4')){_0x112b0d[_0xaaf5('0xb5')](getSelectList(_0x8e3f21,_0xe0a8ff,_0x19f37c,_0x3e0ae8[_0xaaf5('0xaa')],_0x243f52['MetadataId'],_0x1e18f3));}}});return Promise[_0xaaf5('0xb6')](_0x112b0d);})['then'](function(_0x15b016){_0x416d73=_0x15b016[0x0];var _0x978a97=[];var _0x564178=[];_0x6cb658['forEach'](function(_0x2283cc){if(!_['isNil'](_0x2283cc[_0xaaf5('0xb2')])){var _0x535e5b=_0x2283cc[_0xaaf5('0xb2')]['substring'](_0x2283cc[_0xaaf5('0xb2')][_0xaaf5('0xb3')]('.')+0x1);if(_0x535e5b===_0xaaf5('0xb7')){_0x978a97['push'](getBooleanList(_0x8e3f21,_0xe0a8ff,_0x564178,_0x3e0ae8[_0xaaf5('0xaa')],_0x2283cc[_0xaaf5('0xaa')],_0x1e18f3));}}});return Promise[_0xaaf5('0xb6')](_0x978a97);})[_0xaaf5('0x2a')](function(_0x18dedf){_0x46336b=_0x18dedf[0x0];var _0x59ab3b=[];var _0x3a6415=[];_0x6cb658[_0xaaf5('0xb1')](function(_0x3732bb){if(_0x3732bb['@odata.type']){var _0x4e7329=_0x3732bb['@odata.type']['substring'](_0x3732bb['@odata.type'][_0xaaf5('0xb3')]('.')+0x1);if(_0x4e7329===_0xaaf5('0xb8')||_0x4e7329===_0xaaf5('0xb9')||_0x4e7329==='BigIntAttributeMetadata'||_0x4e7329===_0xaaf5('0xba')||_0x4e7329===_0xaaf5('0xbb')||_0x4e7329===_0xaaf5('0xbc')||_0x4e7329===_0xaaf5('0xbd')||_0x4e7329===_0xaaf5('0xbe')||_0x4e7329===_0xaaf5('0xbf')||_0x4e7329===_0xaaf5('0xc0')){_0x59ab3b['push'](getInputList(_0x8e3f21,_0xe0a8ff,_0x4e7329,_0x3a6415,_0x3e0ae8[_0xaaf5('0xaa')],_0x3732bb['MetadataId'],_0x1e18f3));}}});return Promise[_0xaaf5('0xb6')](_0x59ab3b);})['then'](function(_0x5e4f58){_0x19dddc=_0x5e4f58[0x0];var _0x5a06a2=_0x416d73[_0xaaf5('0xc1')](_0x46336b)['concat'](_0x19dddc);var _0x167b2c={'count':_0x5a06a2[_0xaaf5('0x39')],'rows':_0x5a06a2};return _0x167b2c;})['then'](respondWithResult(_0x31dbc3,null))[_0xaaf5('0x4a')](function(_0x5aebe0){var _0x575f77=_0x389873[_0xaaf5('0x32')][_0xaaf5('0xc2')]?0x1f4:_0x5aebe0['statusCode']||0x1f4;logger[_0xaaf5('0x2c')](_0x5aebe0[_0xaaf5('0x2d')]);delete _0x5aebe0[_0xaaf5('0x2e')];if(_0x575f77===0x191){_0x575f77=0x190;}_0x31dbc3[_0xaaf5('0x1d')](_0x575f77)[_0xaaf5('0xc3')](_0x389873[_0xaaf5('0x32')][_0xaaf5('0xc2')]?{'message':_0xaaf5('0xc4'),'statusCode':_0x5aebe0['statusCode']}:_0x5aebe0);});};function getSelectList(_0x840bde,_0x5dbb39,_0x1d032c,_0x1c9cc0,_0x1fd4b2,_0x14aac2){var _0x4bbdce={'method':_0xaaf5('0xa7'),'uri':_0x840bde+_0xaaf5('0xab')+_0x1c9cc0+_0xaaf5('0xc5')+_0x1fd4b2+_0xaaf5('0xc6')+_0xaaf5('0xc7'),'headers':{'Authorization':_0xaaf5('0xc8')+_0x14aac2,'If-None-Match':null,'OData-Version':_0xaaf5('0xa8')},'json':!![]};return rp(_0x4bbdce)[_0xaaf5('0x2a')](function(_0x2ce875){var _0x2d4e3a=[];var _0x43e679=_0x2ce875[_0xaaf5('0xc9')][_0xaaf5('0xca')];_0x43e679[_0xaaf5('0xb1')](function(_0x40e193){_0x2d4e3a[_0xaaf5('0xb5')]({'name':_0x40e193[_0xaaf5('0xcb')][_0xaaf5('0xcc')][_0xaaf5('0xcb')],'value':String(_0x40e193[_0xaaf5('0xcd')])});});var _0x41a327={'id':_0x5dbb39+'_'+_0x2ce875[_0xaaf5('0xb0')],'name':_0x2ce875[_0xaaf5('0xce')][_0xaaf5('0xcc')][_0xaaf5('0xcb')],'custom':![],'options':_0x2d4e3a};_0x1d032c['push'](_0x41a327);return _0x1d032c;});}function getBooleanList(_0x49bb3b,_0x2c9328,_0x913e88,_0x2d5b55,_0x4f1bdb,_0x5ba0b8){var _0x5f05c6={'method':_0xaaf5('0xa7'),'uri':_0x49bb3b+_0xaaf5('0xab')+_0x2d5b55+_0xaaf5('0xc5')+_0x4f1bdb+_0xaaf5('0xcf'),'headers':{'Authorization':_0xaaf5('0xc8')+_0x5ba0b8,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x5f05c6)[_0xaaf5('0x2a')](function(_0x23b501){var _0x242ca7=[];_0x242ca7['push']({'name':_0x23b501[_0xaaf5('0xc9')][_0xaaf5('0xd0')][_0xaaf5('0xcb')][_0xaaf5('0xcc')][_0xaaf5('0xcb')],'value':_0xaaf5('0xd1')},{'name':_0x23b501[_0xaaf5('0xc9')]['FalseOption']['Label']['UserLocalizedLabel']['Label'],'value':_0xaaf5('0xd2')});var _0x8e8193={'id':_0x2c9328+'_'+_0x23b501[_0xaaf5('0xb0')],'name':_0x23b501[_0xaaf5('0xce')]['UserLocalizedLabel']['Label'],'custom':![],'options':_0x242ca7};_0x913e88[_0xaaf5('0xb5')](_0x8e8193);return _0x913e88;});}function getInputList(_0x179ba7,_0x5e6d46,_0x5ea13e,_0x1c6bba,_0x4af225,_0xa202b5,_0x362033){var _0x41d060={'method':_0xaaf5('0xa7'),'uri':_0x179ba7+_0xaaf5('0xab')+_0x4af225+_0xaaf5('0xc5')+_0xa202b5+')/Microsoft.Dynamics.CRM.'+_0x5ea13e+_0xaaf5('0xd3'),'headers':{'Authorization':_0xaaf5('0xc8')+_0x362033,'If-None-Match':null,'OData-Version':_0xaaf5('0xa8')},'json':!![]};return rp(_0x41d060)[_0xaaf5('0x2a')](function(_0x497f55){var _0x2a7c10={'id':_0x5e6d46+'_'+_0x497f55[_0xaaf5('0xb0')],'name':_0x497f55['DisplayName'][_0xaaf5('0xcc')]?_0x497f55[_0xaaf5('0xce')][_0xaaf5('0xcc')][_0xaaf5('0xcb')]:_0x497f55[_0xaaf5('0xb0')],'custom':![],'options':[]};_0x1c6bba[_0xaaf5('0xb5')](_0x2a7c10);return _0x1c6bba;});}
\ No newline at end of file
index f47c82b..e6a8510 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration','exports','define','Dynamics365Account','util'];(function(_0xe2496f,_0x2673a0){var _0x16cdaf=function(_0x5794f8){while(--_0x5794f8){_0xe2496f['push'](_0xe2496f['shift']());}};_0x16cdaf(++_0x2673a0);}(_0xbaf0,0x12a));var _0x0baf=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xbaf0[_0x432682];return _0x463d05;};'use strict';var _=require('lodash');var util=require(_0x0baf('0x0'));var logger=require(_0x0baf('0x1'))(_0x0baf('0x2'));var moment=require(_0x0baf('0x3'));var BPromise=require(_0x0baf('0x4'));var rp=require(_0x0baf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var attributes=require(_0x0baf('0x8'));var integrations=require(_0x0baf('0x9'));module[_0x0baf('0xa')]=function(_0x335e24,_0x1a10b1){return _0x335e24[_0x0baf('0xb')](_0x0baf('0xc'),attributes,{'tableName':'int_dynamics365_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb7e7=['int_dynamics365_accounts','lodash','../../config/logger','moment','request-promise','rimraf','../../config/environment','./intDynamics365Account.attributes','define'];(function(_0x50700a,_0x4ac6e5){var _0x285621=function(_0x560d6d){while(--_0x560d6d){_0x50700a['push'](_0x50700a['shift']());}};_0x285621(++_0x4ac6e5);}(_0xb7e7,0x121));var _0x7b7e=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0xb7e7[_0x3e5086];return _0xfeb102;};'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'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x333fa4,_0x372bde){return _0x333fa4[_0x7b7e('0x7')]('Dynamics365Account',attributes,{'tableName':_0x7b7e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ab12bad..ce977af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd975=['lodash','util','moment','../../mysqldb','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','code','Dynamics365Account,\x20%s,\x20%s','message','catch','GetDynamics365Account','Dynamics365Account','findAll','options','raw','where','attributes','limit','include','model','map','ShowDynamics365Account','find'];(function(_0x26a33a,_0x5246b1){var _0x41b6be=function(_0x5204a6){while(--_0x5204a6){_0x26a33a['push'](_0x26a33a['shift']());}};_0x41b6be(++_0x5246b1);}(_0xd975,0x120));var _0x5d97=function(_0x1e5bae,_0x580def){_0x1e5bae=_0x1e5bae-0x0;var _0xf482a5=_0xd975[_0x1e5bae];return _0xf482a5;};'use strict';var _=require(_0x5d97('0x0'));var util=require(_0x5d97('0x1'));var moment=require(_0x5d97('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5d97('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x5d97('0x4'));var jayson=require(_0x5d97('0x5'));var client=jayson['client'][_0x5d97('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x57630b,_0x221911,_0x5a8dc6){return new BPromise(function(_0x5b701b,_0x19f0d2){return client[_0x5d97('0x7')](_0x57630b,_0x5a8dc6)[_0x5d97('0x8')](function(_0x219838){logger[_0x5d97('0x9')]('Dynamics365Account,\x20%s,\x20%s',_0x221911,_0x5d97('0xa'));logger[_0x5d97('0xb')](_0x5d97('0xc'),_0x221911,_0x5d97('0xa'),JSON[_0x5d97('0xd')](_0x219838));if(_0x219838['error']){if(_0x219838[_0x5d97('0xe')][_0x5d97('0xf')]===0x1f4){logger[_0x5d97('0xe')](_0x5d97('0x10'),_0x221911,_0x219838[_0x5d97('0xe')][_0x5d97('0x11')]);return _0x19f0d2(_0x219838[_0x5d97('0xe')][_0x5d97('0x11')]);}logger[_0x5d97('0xe')](_0x5d97('0x10'),_0x221911,_0x219838[_0x5d97('0xe')][_0x5d97('0x11')]);return _0x5b701b(_0x219838[_0x5d97('0xe')][_0x5d97('0x11')]);}else{logger[_0x5d97('0x9')](_0x5d97('0x10'),_0x221911,_0x5d97('0xa'));_0x5b701b(_0x219838['result'][_0x5d97('0x11')]);}})[_0x5d97('0x12')](function(_0x4a8107){logger[_0x5d97('0xe')](_0x5d97('0x10'),_0x221911,_0x4a8107);_0x19f0d2(_0x4a8107);});});}exports[_0x5d97('0x13')]=function(_0x28c4dc){var _0x1b6df0=this;return new Promise(function(_0x1e02d4,_0x45fc5c){return db[_0x5d97('0x14')][_0x5d97('0x15')]({'raw':_0x28c4dc[_0x5d97('0x16')]?_0x28c4dc[_0x5d97('0x16')][_0x5d97('0x17')]===undefined?!![]:![]:!![],'where':_0x28c4dc[_0x5d97('0x16')]?_0x28c4dc[_0x5d97('0x16')][_0x5d97('0x18')]||null:null,'attributes':_0x28c4dc[_0x5d97('0x16')]?_0x28c4dc['options'][_0x5d97('0x19')]||null:null,'limit':_0x28c4dc[_0x5d97('0x16')]?_0x28c4dc[_0x5d97('0x16')][_0x5d97('0x1a')]||null:null,'include':_0x28c4dc[_0x5d97('0x16')]?_0x28c4dc[_0x5d97('0x16')][_0x5d97('0x1b')]?_['map'](_0x28c4dc[_0x5d97('0x16')][_0x5d97('0x1b')],function(_0x4e6a39){return{'model':db[_0x4e6a39[_0x5d97('0x1c')]],'as':_0x4e6a39['as'],'attributes':_0x4e6a39[_0x5d97('0x19')],'include':_0x4e6a39[_0x5d97('0x1b')]?_[_0x5d97('0x1d')](_0x4e6a39[_0x5d97('0x1b')],function(_0x31436b){return{'model':db[_0x31436b[_0x5d97('0x1c')]],'as':_0x31436b['as'],'attributes':_0x31436b[_0x5d97('0x19')],'include':_0x31436b[_0x5d97('0x1b')]?_[_0x5d97('0x1d')](_0x31436b[_0x5d97('0x1b')],function(_0x58cb1d){return{'model':db[_0x58cb1d[_0x5d97('0x1c')]],'as':_0x58cb1d['as'],'attributes':_0x58cb1d[_0x5d97('0x19')]};}):[]};}):[]};}):[]:[]})[_0x5d97('0x8')](function(_0x538edf){logger[_0x5d97('0x9')](_0x5d97('0x13'),_0x28c4dc);logger['debug'](_0x5d97('0x13'),_0x28c4dc,JSON[_0x5d97('0xd')](_0x538edf));_0x1e02d4(_0x538edf);})[_0x5d97('0x12')](function(_0x57a087){logger[_0x5d97('0xe')](_0x5d97('0x13'),_0x57a087[_0x5d97('0x11')],_0x28c4dc);_0x45fc5c(_0x1b6df0['error'](0x1f4,_0x57a087[_0x5d97('0x11')]));});});};exports[_0x5d97('0x1e')]=function(_0x571805){var _0x11ad1c=this;return new Promise(function(_0x4fc7c1,_0x5ada2d){return db['Dynamics365Account'][_0x5d97('0x1f')]({'raw':_0x571805[_0x5d97('0x16')]?_0x571805[_0x5d97('0x16')][_0x5d97('0x17')]===undefined?!![]:![]:!![],'where':_0x571805[_0x5d97('0x16')]?_0x571805[_0x5d97('0x16')][_0x5d97('0x18')]||null:null,'attributes':_0x571805[_0x5d97('0x16')]?_0x571805[_0x5d97('0x16')][_0x5d97('0x19')]||null:null,'include':_0x571805[_0x5d97('0x16')]?_0x571805['options'][_0x5d97('0x1b')]?_[_0x5d97('0x1d')](_0x571805[_0x5d97('0x16')][_0x5d97('0x1b')],function(_0x4b40f1){return{'model':db[_0x4b40f1[_0x5d97('0x1c')]],'as':_0x4b40f1['as'],'attributes':_0x4b40f1[_0x5d97('0x19')],'include':_0x4b40f1[_0x5d97('0x1b')]?_[_0x5d97('0x1d')](_0x4b40f1[_0x5d97('0x1b')],function(_0xe926a){return{'model':db[_0xe926a[_0x5d97('0x1c')]],'as':_0xe926a['as'],'attributes':_0xe926a[_0x5d97('0x19')],'include':_0xe926a[_0x5d97('0x1b')]?_[_0x5d97('0x1d')](_0xe926a['include'],function(_0x24ae4f){return{'model':db[_0x24ae4f[_0x5d97('0x1c')]],'as':_0x24ae4f['as'],'attributes':_0x24ae4f[_0x5d97('0x19')]};}):[]};}):[]};}):[]:[]})[_0x5d97('0x8')](function(_0x43f4c7){logger[_0x5d97('0x9')](_0x5d97('0x1e'),_0x571805);logger[_0x5d97('0xb')](_0x5d97('0x1e'),_0x571805,JSON[_0x5d97('0xd')](_0x43f4c7));_0x4fc7c1(_0x43f4c7);})[_0x5d97('0x12')](function(_0x390e02){logger[_0x5d97('0xe')]('ShowDynamics365Account',_0x390e02['message'],_0x571805);_0x5ada2d(_0x11ad1c[_0x5d97('0xe')](0x1f4,_0x390e02[_0x5d97('0x11')]));});});};
\ No newline at end of file
+var _0x7a40=['catch','Dynamics365Account','options','raw','where','attributes','limit','include','map','model','GetDynamics365Account','debug','ShowDynamics365Account','find','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','info','Dynamics365Account,\x20%s,\x20%s','Dynamics365Account,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result'];(function(_0x535250,_0x1127f7){var _0x16ffe8=function(_0x3062dc){while(--_0x3062dc){_0x535250['push'](_0x535250['shift']());}};_0x16ffe8(++_0x1127f7);}(_0x7a40,0x1b2));var _0x07a4=function(_0x2fec82,_0x307370){_0x2fec82=_0x2fec82-0x0;var _0xdd7d21=_0x7a40[_0x2fec82];return _0xdd7d21;};'use strict';var _=require(_0x07a4('0x0'));var util=require(_0x07a4('0x1'));var moment=require(_0x07a4('0x2'));var BPromise=require(_0x07a4('0x3'));var rs=require(_0x07a4('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x07a4('0x5'))['db'];var utils=require(_0x07a4('0x6'));var logger=require('../../config/logger')(_0x07a4('0x7'));var config=require(_0x07a4('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x07a4('0x9')][_0x07a4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x21ec7b,_0x1def9b,_0x44fb5c){return new BPromise(function(_0x2aa109,_0x483876){return client[_0x07a4('0xb')](_0x21ec7b,_0x44fb5c)['then'](function(_0x2af91f){logger[_0x07a4('0xc')](_0x07a4('0xd'),_0x1def9b,'request\x20sent');logger['debug'](_0x07a4('0xe'),_0x1def9b,_0x07a4('0xf'),JSON[_0x07a4('0x10')](_0x2af91f));if(_0x2af91f[_0x07a4('0x11')]){if(_0x2af91f['error'][_0x07a4('0x12')]===0x1f4){logger[_0x07a4('0x11')](_0x07a4('0xd'),_0x1def9b,_0x2af91f[_0x07a4('0x11')]['message']);return _0x483876(_0x2af91f[_0x07a4('0x11')][_0x07a4('0x13')]);}logger[_0x07a4('0x11')](_0x07a4('0xd'),_0x1def9b,_0x2af91f['error'][_0x07a4('0x13')]);return _0x2aa109(_0x2af91f[_0x07a4('0x11')][_0x07a4('0x13')]);}else{logger[_0x07a4('0xc')](_0x07a4('0xd'),_0x1def9b,_0x07a4('0xf'));_0x2aa109(_0x2af91f[_0x07a4('0x14')][_0x07a4('0x13')]);}})[_0x07a4('0x15')](function(_0x5e4c88){logger['error'](_0x07a4('0xd'),_0x1def9b,_0x5e4c88);_0x483876(_0x5e4c88);});});}exports['GetDynamics365Account']=function(_0x2a9398){var _0x593b79=this;return new Promise(function(_0x134439,_0x173b40){return db[_0x07a4('0x16')]['findAll']({'raw':_0x2a9398[_0x07a4('0x17')]?_0x2a9398['options'][_0x07a4('0x18')]===undefined?!![]:![]:!![],'where':_0x2a9398['options']?_0x2a9398[_0x07a4('0x17')][_0x07a4('0x19')]||null:null,'attributes':_0x2a9398[_0x07a4('0x17')]?_0x2a9398[_0x07a4('0x17')][_0x07a4('0x1a')]||null:null,'limit':_0x2a9398[_0x07a4('0x17')]?_0x2a9398[_0x07a4('0x17')][_0x07a4('0x1b')]||null:null,'include':_0x2a9398[_0x07a4('0x17')]?_0x2a9398[_0x07a4('0x17')][_0x07a4('0x1c')]?_[_0x07a4('0x1d')](_0x2a9398['options'][_0x07a4('0x1c')],function(_0x357d98){return{'model':db[_0x357d98['model']],'as':_0x357d98['as'],'attributes':_0x357d98[_0x07a4('0x1a')],'include':_0x357d98['include']?_[_0x07a4('0x1d')](_0x357d98[_0x07a4('0x1c')],function(_0x559164){return{'model':db[_0x559164[_0x07a4('0x1e')]],'as':_0x559164['as'],'attributes':_0x559164[_0x07a4('0x1a')],'include':_0x559164[_0x07a4('0x1c')]?_[_0x07a4('0x1d')](_0x559164[_0x07a4('0x1c')],function(_0x340452){return{'model':db[_0x340452['model']],'as':_0x340452['as'],'attributes':_0x340452['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x49e4d5){logger[_0x07a4('0xc')](_0x07a4('0x1f'),_0x2a9398);logger[_0x07a4('0x20')](_0x07a4('0x1f'),_0x2a9398,JSON[_0x07a4('0x10')](_0x49e4d5));_0x134439(_0x49e4d5);})[_0x07a4('0x15')](function(_0x38741e){logger[_0x07a4('0x11')](_0x07a4('0x1f'),_0x38741e[_0x07a4('0x13')],_0x2a9398);_0x173b40(_0x593b79[_0x07a4('0x11')](0x1f4,_0x38741e[_0x07a4('0x13')]));});});};exports[_0x07a4('0x21')]=function(_0x57688e){var _0x96160c=this;return new Promise(function(_0x2be03b,_0x171d1e){return db[_0x07a4('0x16')][_0x07a4('0x22')]({'raw':_0x57688e[_0x07a4('0x17')]?_0x57688e[_0x07a4('0x17')][_0x07a4('0x18')]===undefined?!![]:![]:!![],'where':_0x57688e[_0x07a4('0x17')]?_0x57688e['options'][_0x07a4('0x19')]||null:null,'attributes':_0x57688e[_0x07a4('0x17')]?_0x57688e[_0x07a4('0x17')]['attributes']||null:null,'include':_0x57688e[_0x07a4('0x17')]?_0x57688e[_0x07a4('0x17')][_0x07a4('0x1c')]?_['map'](_0x57688e[_0x07a4('0x17')][_0x07a4('0x1c')],function(_0x252ca3){return{'model':db[_0x252ca3['model']],'as':_0x252ca3['as'],'attributes':_0x252ca3[_0x07a4('0x1a')],'include':_0x252ca3[_0x07a4('0x1c')]?_[_0x07a4('0x1d')](_0x252ca3[_0x07a4('0x1c')],function(_0x51c749){return{'model':db[_0x51c749[_0x07a4('0x1e')]],'as':_0x51c749['as'],'attributes':_0x51c749[_0x07a4('0x1a')],'include':_0x51c749[_0x07a4('0x1c')]?_[_0x07a4('0x1d')](_0x51c749[_0x07a4('0x1c')],function(_0x8104ab){return{'model':db[_0x8104ab[_0x07a4('0x1e')]],'as':_0x8104ab['as'],'attributes':_0x8104ab[_0x07a4('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x11c273){logger['info'](_0x07a4('0x21'),_0x57688e);logger[_0x07a4('0x20')](_0x07a4('0x21'),_0x57688e,JSON['stringify'](_0x11c273));_0x2be03b(_0x11c273);})[_0x07a4('0x15')](function(_0x2a527a){logger[_0x07a4('0x11')](_0x07a4('0x21'),_0x2a527a[_0x07a4('0x13')],_0x57688e);_0x171d1e(_0x96160c[_0x07a4('0x11')](0x1f4,_0x2a527a[_0x07a4('0x13')]));});});};
\ No newline at end of file
index 26808fd..ef9e6e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x784a=['get','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put','update','delete','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../config/environment','index'];(function(_0x48e7a6,_0x3e015e){var _0x24d3a6=function(_0x524deb){while(--_0x524deb){_0x48e7a6['push'](_0x48e7a6['shift']());}};_0x24d3a6(++_0x3e015e);}(_0x784a,0x130));var _0xa784=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0x784a[_0x3ff085];return _0x2b68c3;};'use strict';var multer=require(_0xa784('0x0'));var util=require(_0xa784('0x1'));var path=require(_0xa784('0x2'));var timeout=require('connect-timeout');var express=require(_0xa784('0x3'));var router=express['Router']();var fs_extra=require(_0xa784('0x4'));var auth=require(_0xa784('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xa784('0x6'));var controller=require('./intDynamics365Configuration.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xa784('0x7')]);router[_0xa784('0x8')](_0xa784('0x9'),auth[_0xa784('0xa')](),controller[_0xa784('0xb')]);router[_0xa784('0x8')](_0xa784('0xc'),auth[_0xa784('0xa')](),controller[_0xa784('0xd')]);router[_0xa784('0x8')](_0xa784('0xe'),auth[_0xa784('0xa')](),controller[_0xa784('0xf')]);router[_0xa784('0x8')](_0xa784('0x10'),auth[_0xa784('0xa')](),controller[_0xa784('0x11')]);router[_0xa784('0x12')]('/',auth[_0xa784('0xa')](),controller[_0xa784('0x13')]);router[_0xa784('0x14')]('/:id',auth[_0xa784('0xa')](),controller[_0xa784('0x15')]);router[_0xa784('0x16')](_0xa784('0x9'),auth['isAuthenticated'](),controller['destroy']);module[_0xa784('0x17')]=router;
\ No newline at end of file
+var _0x9ba6=['isAuthenticated','index','/:id','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put','update','delete','destroy','exports','multer','path','express','fs-extra','../../components/auth/service','./intDynamics365Configuration.controller','get'];(function(_0x453f0c,_0x5f1d53){var _0x204e8f=function(_0x48c6a5){while(--_0x48c6a5){_0x453f0c['push'](_0x453f0c['shift']());}};_0x204e8f(++_0x5f1d53);}(_0x9ba6,0x13b));var _0x69ba=function(_0x2497b1,_0x1920dd){_0x2497b1=_0x2497b1-0x0;var _0x33c111=_0x9ba6[_0x2497b1];return _0x33c111;};'use strict';var multer=require(_0x69ba('0x0'));var util=require('util');var path=require(_0x69ba('0x1'));var timeout=require('connect-timeout');var express=require(_0x69ba('0x2'));var router=express['Router']();var fs_extra=require(_0x69ba('0x3'));var auth=require(_0x69ba('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x69ba('0x5'));router[_0x69ba('0x6')]('/',auth[_0x69ba('0x7')](),controller[_0x69ba('0x8')]);router[_0x69ba('0x6')](_0x69ba('0x9'),auth[_0x69ba('0x7')](),controller[_0x69ba('0xa')]);router['get'](_0x69ba('0xb'),auth[_0x69ba('0x7')](),controller['getFields']);router['get'](_0x69ba('0xc'),auth[_0x69ba('0x7')](),controller[_0x69ba('0xd')]);router['get'](_0x69ba('0xe'),auth[_0x69ba('0x7')](),controller[_0x69ba('0xf')]);router[_0x69ba('0x10')]('/',auth['isAuthenticated'](),controller[_0x69ba('0x11')]);router[_0x69ba('0x12')](_0x69ba('0x9'),auth[_0x69ba('0x7')](),controller[_0x69ba('0x13')]);router[_0x69ba('0x14')]('/:id',auth[_0x69ba('0x7')](),controller[_0x69ba('0x15')]);module[_0x69ba('0x16')]=router;
\ No newline at end of file
index 72c3263..c293b00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7aeb=['phonecall','exports','STRING','ENUM','incident'];(function(_0x53372b,_0x856df1){var _0x4705e0=function(_0x454a92){while(--_0x454a92){_0x53372b['push'](_0x53372b['shift']());}};_0x4705e0(++_0x856df1);}(_0x7aeb,0x88));var _0xb7ae=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0x7aeb[_0x243b59];return _0x3e1676;};'use strict';var Sequelize=require('sequelize');module[_0xb7ae('0x0')]={'name':{'type':Sequelize[_0xb7ae('0x1')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0xb7ae('0x2')](_0xb7ae('0x3'),_0xb7ae('0x4')),'defaultValue':_0xb7ae('0x3')}};
\ No newline at end of file
+var _0x69dc=['ENUM','incident','phonecall','sequelize','exports','STRING'];(function(_0x193e72,_0x366193){var _0x5f1f76=function(_0x24f7fb){while(--_0x24f7fb){_0x193e72['push'](_0x193e72['shift']());}};_0x5f1f76(++_0x366193);}(_0x69dc,0x165));var _0xc69d=function(_0x594b61,_0xffafb4){_0x594b61=_0x594b61-0x0;var _0x540617=_0x69dc[_0x594b61];return _0x540617;};'use strict';var Sequelize=require(_0xc69d('0x0'));module[_0xc69d('0x1')]={'name':{'type':Sequelize[_0xc69d('0x2')]},'description':{'type':Sequelize[_0xc69d('0x2')]},'ticketType':{'type':Sequelize[_0xc69d('0x3')](_0xc69d('0x4'),_0xc69d('0x5')),'defaultValue':_0xc69d('0x4')}};
\ No newline at end of file
index eec943e..8a412c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefd3=['VIRTUAL','merge','options','includeAll','findAll','rows','catch','params','keys','include','find','create','body','update','findOne','getFields','nolimit','getSubjects','Dynamics365Field','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','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','count','limit','json','apply','save','then','destroy','end','error','stack','name','send','index','map','Dynamics365Configuration','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter'];(function(_0x153c02,_0x4b89f9){var _0x2f38b0=function(_0x1b572d){while(--_0x1b572d){_0x153c02['push'](_0x153c02['shift']());}};_0x2f38b0(++_0x4b89f9);}(_0xefd3,0xbc));var _0x3efd=function(_0x378d9c,_0xabec53){_0x378d9c=_0x378d9c-0x0;var _0x2f238e=_0xefd3[_0x378d9c];return _0x2f238e;};'use strict';var emlformat=require(_0x3efd('0x0'));var rimraf=require(_0x3efd('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3efd('0x2'));var rp=require(_0x3efd('0x3'));var moment=require(_0x3efd('0x4'));var BPromise=require(_0x3efd('0x5'));var Mustache=require(_0x3efd('0x6'));var util=require(_0x3efd('0x7'));var path=require(_0x3efd('0x8'));var sox=require(_0x3efd('0x9'));var csv=require(_0x3efd('0xa'));var ejs=require(_0x3efd('0xb'));var fs=require('fs');var fs_extra=require(_0x3efd('0xc'));var _=require('lodash');var squel=require(_0x3efd('0xd'));var crypto=require(_0x3efd('0xe'));var jsforce=require(_0x3efd('0xf'));var deskjs=require(_0x3efd('0x10'));var toCsv=require(_0x3efd('0xa'));var querystring=require('querystring');var Papa=require(_0x3efd('0x11'));var Redis=require('ioredis');var authService=require(_0x3efd('0x12'));var qs=require(_0x3efd('0x13'));var as=require(_0x3efd('0x14'));var hardwareService=require(_0x3efd('0x15'));var logger=require(_0x3efd('0x16'))(_0x3efd('0x17'));var utils=require(_0x3efd('0x18'));var config=require(_0x3efd('0x19'));var licenseUtil=require(_0x3efd('0x1a'));var db=require(_0x3efd('0x1b'))['db'];function respondWithStatusCode(_0x5f2e29,_0x5a0dad){_0x5a0dad=_0x5a0dad||0xcc;return function(_0x166908){if(_0x166908){return _0x5f2e29[_0x3efd('0x1c')](_0x5a0dad);}return _0x5f2e29[_0x3efd('0x1d')](_0x5a0dad)['end']();};}function respondWithResult(_0x1d9ccb,_0x44f2cc){_0x44f2cc=_0x44f2cc||0xc8;return function(_0x39213d){if(_0x39213d){return _0x1d9ccb[_0x3efd('0x1d')](_0x44f2cc)['json'](_0x39213d);}};}function respondWithFilteredResult(_0x23f30d,_0x3d8ee2){return function(_0x10dec3){if(_0x10dec3){var _0x2c8b5e=typeof _0x3d8ee2[_0x3efd('0x1e')]==='undefined'&&typeof _0x3d8ee2['limit']===_0x3efd('0x1f');var _0xf6f7bb=_0x10dec3[_0x3efd('0x20')];var _0x53830f=_0x2c8b5e?0x0:_0x3d8ee2[_0x3efd('0x1e')];var _0x55b69f=_0x2c8b5e?_0x10dec3[_0x3efd('0x20')]:_0x3d8ee2['offset']+_0x3d8ee2[_0x3efd('0x21')];var _0x435ca3;if(_0x55b69f>=_0xf6f7bb){_0x55b69f=_0xf6f7bb;_0x435ca3=0xc8;}else{_0x435ca3=0xce;}_0x23f30d[_0x3efd('0x1d')](_0x435ca3);return _0x23f30d['set']('Content-Range',_0x53830f+'-'+_0x55b69f+'/'+_0xf6f7bb)[_0x3efd('0x22')](_0x10dec3);}return null;};}function patchUpdates(_0xa43c58){return function(_0x4fcb36){try{jsonpatch[_0x3efd('0x23')](_0x4fcb36,_0xa43c58,!![]);}catch(_0x99e149){return BPromise['reject'](_0x99e149);}return _0x4fcb36[_0x3efd('0x24')]();};}function saveUpdates(_0x18a08f,_0x1fedff){return function(_0x33e066){if(_0x33e066){return _0x33e066['update'](_0x18a08f)[_0x3efd('0x25')](function(_0x21f0bc){return _0x21f0bc;});}return null;};}function removeEntity(_0x424c71,_0x445e82){return function(_0x57289d){if(_0x57289d){return _0x57289d[_0x3efd('0x26')]()[_0x3efd('0x25')](function(){_0x424c71['status'](0xcc)[_0x3efd('0x27')]();});}};}function handleEntityNotFound(_0x1435a6,_0x3872b9){return function(_0x3a16ac){if(!_0x3a16ac){_0x1435a6['sendStatus'](0x194);}return _0x3a16ac;};}function handleError(_0x4c1d78,_0x1fbf08){_0x1fbf08=_0x1fbf08||0x1f4;return function(_0x4f5726){logger[_0x3efd('0x28')](_0x4f5726[_0x3efd('0x29')]);if(_0x4f5726[_0x3efd('0x2a')]){delete _0x4f5726[_0x3efd('0x2a')];}_0x4c1d78[_0x3efd('0x1d')](_0x1fbf08)[_0x3efd('0x2b')](_0x4f5726);};}exports[_0x3efd('0x2c')]=function(_0x337774,_0x2cc010){var _0x10ce21={},_0x5c3a35={},_0x368b99={'count':0x0,'rows':[]};var _0x3dd854=_[_0x3efd('0x2d')](db[_0x3efd('0x2e')][_0x3efd('0x2f')],function(_0x1cfe84){return{'name':_0x1cfe84[_0x3efd('0x30')],'type':_0x1cfe84[_0x3efd('0x31')][_0x3efd('0x32')]};});_0x5c3a35[_0x3efd('0x33')]=_[_0x3efd('0x2d')](_0x3dd854,_0x3efd('0x2a'));_0x5c3a35[_0x3efd('0x34')]=_['keys'](_0x337774[_0x3efd('0x34')]);_0x5c3a35[_0x3efd('0x35')]=_[_0x3efd('0x36')](_0x5c3a35['model'],_0x5c3a35[_0x3efd('0x34')]);_0x10ce21[_0x3efd('0x37')]=_[_0x3efd('0x36')](_0x5c3a35[_0x3efd('0x33')],qs[_0x3efd('0x38')](_0x337774['query'][_0x3efd('0x38')]));_0x10ce21[_0x3efd('0x37')]=_0x10ce21[_0x3efd('0x37')][_0x3efd('0x39')]?_0x10ce21[_0x3efd('0x37')]:_0x5c3a35[_0x3efd('0x33')];if(!_0x337774[_0x3efd('0x34')][_0x3efd('0x3a')]('nolimit')){_0x10ce21[_0x3efd('0x21')]=qs[_0x3efd('0x21')](_0x337774[_0x3efd('0x34')][_0x3efd('0x21')]);_0x10ce21[_0x3efd('0x1e')]=qs[_0x3efd('0x1e')](_0x337774[_0x3efd('0x34')][_0x3efd('0x1e')]);}_0x10ce21[_0x3efd('0x3b')]=qs[_0x3efd('0x3c')](_0x337774[_0x3efd('0x34')][_0x3efd('0x3c')]);_0x10ce21[_0x3efd('0x3d')]=qs[_0x3efd('0x35')](_[_0x3efd('0x3e')](_0x337774[_0x3efd('0x34')],_0x5c3a35['filters']),_0x3dd854);if(_0x337774[_0x3efd('0x34')][_0x3efd('0x3f')]){_0x10ce21[_0x3efd('0x3d')]=_['merge'](_0x10ce21[_0x3efd('0x3d')],{'$or':_[_0x3efd('0x2d')](_0x3dd854,function(_0x553aee){if(_0x553aee[_0x3efd('0x31')]!==_0x3efd('0x40')){var _0x39e2b7={};_0x39e2b7[_0x553aee[_0x3efd('0x2a')]]={'$like':'%'+_0x337774[_0x3efd('0x34')][_0x3efd('0x3f')]+'%'};return _0x39e2b7;}})});}_0x10ce21=_[_0x3efd('0x41')]({},_0x10ce21,_0x337774[_0x3efd('0x42')]);var _0x430882={'where':_0x10ce21['where']};return db[_0x3efd('0x2e')][_0x3efd('0x20')](_0x430882)[_0x3efd('0x25')](function(_0x10177b){_0x368b99['count']=_0x10177b;if(_0x337774[_0x3efd('0x34')][_0x3efd('0x43')]){_0x10ce21['include']=[{'all':!![]}];}return db[_0x3efd('0x2e')][_0x3efd('0x44')](_0x10ce21);})[_0x3efd('0x25')](function(_0x16fda2){_0x368b99[_0x3efd('0x45')]=_0x16fda2;return _0x368b99;})[_0x3efd('0x25')](respondWithFilteredResult(_0x2cc010,_0x10ce21))[_0x3efd('0x46')](handleError(_0x2cc010,null));};exports['show']=function(_0x587c40,_0x46d07f){var _0x52ea6a={'raw':![],'where':{'id':_0x587c40[_0x3efd('0x47')]['id']}},_0x2ed09e={};_0x2ed09e[_0x3efd('0x33')]=_[_0x3efd('0x48')](db[_0x3efd('0x2e')]['rawAttributes']);_0x2ed09e[_0x3efd('0x34')]=_[_0x3efd('0x48')](_0x587c40[_0x3efd('0x34')]);_0x2ed09e[_0x3efd('0x35')]=_[_0x3efd('0x36')](_0x2ed09e[_0x3efd('0x33')],_0x2ed09e[_0x3efd('0x34')]);_0x52ea6a[_0x3efd('0x37')]=_[_0x3efd('0x36')](_0x2ed09e[_0x3efd('0x33')],qs[_0x3efd('0x38')](_0x587c40[_0x3efd('0x34')][_0x3efd('0x38')]));_0x52ea6a[_0x3efd('0x37')]=_0x52ea6a[_0x3efd('0x37')][_0x3efd('0x39')]?_0x52ea6a[_0x3efd('0x37')]:_0x2ed09e[_0x3efd('0x33')];if(_0x587c40['query'][_0x3efd('0x43')]){_0x52ea6a[_0x3efd('0x49')]=[{'all':!![]}];}_0x52ea6a=_[_0x3efd('0x41')]({},_0x52ea6a,_0x587c40[_0x3efd('0x42')]);return db[_0x3efd('0x2e')][_0x3efd('0x4a')](_0x52ea6a)[_0x3efd('0x25')](handleEntityNotFound(_0x46d07f,null))[_0x3efd('0x25')](respondWithResult(_0x46d07f,null))['catch'](handleError(_0x46d07f,null));};exports[_0x3efd('0x4b')]=function(_0x592711,_0x59d6b7){return db[_0x3efd('0x2e')]['create'](_0x592711[_0x3efd('0x4c')],{})[_0x3efd('0x25')](respondWithResult(_0x59d6b7,0xc9))[_0x3efd('0x46')](handleError(_0x59d6b7,null));};exports[_0x3efd('0x4d')]=function(_0xb78a7b,_0xdbf8bd){if(_0xb78a7b[_0x3efd('0x4c')]['id']){delete _0xb78a7b[_0x3efd('0x4c')]['id'];}return db['Dynamics365Configuration'][_0x3efd('0x4a')]({'where':{'id':_0xb78a7b[_0x3efd('0x47')]['id']}})['then'](handleEntityNotFound(_0xdbf8bd,null))[_0x3efd('0x25')](saveUpdates(_0xb78a7b[_0x3efd('0x4c')],null))[_0x3efd('0x25')](respondWithResult(_0xdbf8bd,null))['catch'](handleError(_0xdbf8bd,null));};exports[_0x3efd('0x26')]=function(_0x51ad08,_0x19166b){return db[_0x3efd('0x2e')][_0x3efd('0x4a')]({'where':{'id':_0x51ad08[_0x3efd('0x47')]['id']}})[_0x3efd('0x25')](handleEntityNotFound(_0x19166b,null))['then'](removeEntity(_0x19166b,null))[_0x3efd('0x46')](handleError(_0x19166b,null));};exports['getFields']=function(_0x4dff23,_0xdba2bb,_0x5761fc){var _0x2ed9a2={};var _0x548a47={};var _0x3685d1;var _0x1261b7;return db['Dynamics365Configuration'][_0x3efd('0x4e')]({'where':{'id':_0x4dff23['params']['id']}})[_0x3efd('0x25')](handleEntityNotFound(_0xdba2bb,null))[_0x3efd('0x25')](function(_0x50584c){if(_0x50584c){_0x3685d1=_0x50584c;_0x548a47[_0x3efd('0x33')]=_[_0x3efd('0x48')](db['Dynamics365Field'][_0x3efd('0x2f')]);_0x548a47[_0x3efd('0x34')]=_['keys'](_0x4dff23[_0x3efd('0x34')]);_0x548a47['filters']=_[_0x3efd('0x36')](_0x548a47[_0x3efd('0x33')],_0x548a47[_0x3efd('0x34')]);_0x2ed9a2['attributes']=_['intersection'](_0x548a47['model'],qs[_0x3efd('0x38')](_0x4dff23[_0x3efd('0x34')][_0x3efd('0x38')]));_0x2ed9a2[_0x3efd('0x37')]=_0x2ed9a2['attributes'][_0x3efd('0x39')]?_0x2ed9a2['attributes']:_0x548a47[_0x3efd('0x33')];_0x2ed9a2[_0x3efd('0x3b')]=qs[_0x3efd('0x3c')](_0x4dff23['query'][_0x3efd('0x3c')]);_0x2ed9a2[_0x3efd('0x3d')]=qs[_0x3efd('0x35')](_[_0x3efd('0x3e')](_0x4dff23[_0x3efd('0x34')],_0x548a47[_0x3efd('0x35')]));if(_0x4dff23[_0x3efd('0x34')][_0x3efd('0x3f')]){_0x2ed9a2[_0x3efd('0x3d')]=_[_0x3efd('0x41')](_0x2ed9a2[_0x3efd('0x3d')],{'$or':_[_0x3efd('0x2d')](_0x2ed9a2['attributes'],function(_0x278eee){var _0x418aef={};_0x418aef[_0x278eee]={'$like':'%'+_0x4dff23['query']['filter']+'%'};return _0x418aef;})});}_0x2ed9a2=_[_0x3efd('0x41')]({},_0x2ed9a2,_0x4dff23['options']);return _0x3685d1[_0x3efd('0x4f')](_0x2ed9a2);}})['then'](function(_0x271a80){if(_0x271a80){_0x1261b7=_0x271a80[_0x3efd('0x39')];if(!_0x4dff23['query']['hasOwnProperty'](_0x3efd('0x50'))){_0x2ed9a2[_0x3efd('0x21')]=qs[_0x3efd('0x21')](_0x4dff23[_0x3efd('0x34')][_0x3efd('0x21')]);_0x2ed9a2[_0x3efd('0x1e')]=qs[_0x3efd('0x1e')](_0x4dff23[_0x3efd('0x34')][_0x3efd('0x1e')]);}return _0x3685d1['getFields'](_0x2ed9a2);}})['then'](function(_0x1bd84f){if(_0x1bd84f){return _0x1bd84f?{'count':_0x1261b7,'rows':_0x1bd84f}:null;}})[_0x3efd('0x25')](respondWithResult(_0xdba2bb,null))[_0x3efd('0x46')](handleError(_0xdba2bb,null));};exports[_0x3efd('0x51')]=function(_0x23a5e4,_0x2f64ab,_0x20fa93){var _0x59e33d={};var _0x5a0ecb={};var _0x4335f5;var _0x5b5e84;return db[_0x3efd('0x2e')][_0x3efd('0x4e')]({'where':{'id':_0x23a5e4['params']['id']}})[_0x3efd('0x25')](handleEntityNotFound(_0x2f64ab,null))[_0x3efd('0x25')](function(_0x2f6f76){if(_0x2f6f76){_0x4335f5=_0x2f6f76;_0x5a0ecb['model']=_['keys'](db[_0x3efd('0x52')][_0x3efd('0x2f')]);_0x5a0ecb[_0x3efd('0x34')]=_['keys'](_0x23a5e4[_0x3efd('0x34')]);_0x5a0ecb[_0x3efd('0x35')]=_[_0x3efd('0x36')](_0x5a0ecb[_0x3efd('0x33')],_0x5a0ecb[_0x3efd('0x34')]);_0x59e33d[_0x3efd('0x37')]=_[_0x3efd('0x36')](_0x5a0ecb[_0x3efd('0x33')],qs[_0x3efd('0x38')](_0x23a5e4[_0x3efd('0x34')][_0x3efd('0x38')]));_0x59e33d['attributes']=_0x59e33d[_0x3efd('0x37')]['length']?_0x59e33d['attributes']:_0x5a0ecb[_0x3efd('0x33')];_0x59e33d[_0x3efd('0x3b')]=qs['sort'](_0x23a5e4['query']['sort']);_0x59e33d[_0x3efd('0x3d')]=qs['filters'](_[_0x3efd('0x3e')](_0x23a5e4['query'],_0x5a0ecb[_0x3efd('0x35')]));if(_0x23a5e4['query'][_0x3efd('0x3f')]){_0x59e33d['where']=_['merge'](_0x59e33d[_0x3efd('0x3d')],{'$or':_['map'](_0x59e33d[_0x3efd('0x37')],function(_0x1f4fd3){var _0x238d5c={};_0x238d5c[_0x1f4fd3]={'$like':'%'+_0x23a5e4[_0x3efd('0x34')][_0x3efd('0x3f')]+'%'};return _0x238d5c;})});}_0x59e33d=_[_0x3efd('0x41')]({},_0x59e33d,_0x23a5e4[_0x3efd('0x42')]);return _0x4335f5[_0x3efd('0x51')](_0x59e33d);}})[_0x3efd('0x25')](function(_0x2f8091){if(_0x2f8091){_0x5b5e84=_0x2f8091[_0x3efd('0x39')];if(!_0x23a5e4['query'][_0x3efd('0x3a')](_0x3efd('0x50'))){_0x59e33d[_0x3efd('0x21')]=qs[_0x3efd('0x21')](_0x23a5e4[_0x3efd('0x34')]['limit']);_0x59e33d[_0x3efd('0x1e')]=qs['offset'](_0x23a5e4['query'][_0x3efd('0x1e')]);}return _0x4335f5[_0x3efd('0x51')](_0x59e33d);}})[_0x3efd('0x25')](function(_0x541458){if(_0x541458){return _0x541458?{'count':_0x5b5e84,'rows':_0x541458}:null;}})['then'](respondWithResult(_0x2f64ab,null))[_0x3efd('0x46')](handleError(_0x2f64ab,null));};exports[_0x3efd('0x53')]=function(_0x522e9e,_0x57b288,_0x33973d){var _0x5ac25e={};var _0x2100cf={};var _0x70b4b2;var _0x5918a0;return db[_0x3efd('0x2e')][_0x3efd('0x4e')]({'where':{'id':_0x522e9e['params']['id']}})[_0x3efd('0x25')](handleEntityNotFound(_0x57b288,null))[_0x3efd('0x25')](function(_0x2e8723){if(_0x2e8723){_0x70b4b2=_0x2e8723;_0x2100cf[_0x3efd('0x33')]=_[_0x3efd('0x48')](db['Dynamics365Field'][_0x3efd('0x2f')]);_0x2100cf[_0x3efd('0x34')]=_[_0x3efd('0x48')](_0x522e9e[_0x3efd('0x34')]);_0x2100cf[_0x3efd('0x35')]=_[_0x3efd('0x36')](_0x2100cf[_0x3efd('0x33')],_0x2100cf['query']);_0x5ac25e[_0x3efd('0x37')]=_[_0x3efd('0x36')](_0x2100cf[_0x3efd('0x33')],qs[_0x3efd('0x38')](_0x522e9e[_0x3efd('0x34')][_0x3efd('0x38')]));_0x5ac25e[_0x3efd('0x37')]=_0x5ac25e[_0x3efd('0x37')]['length']?_0x5ac25e[_0x3efd('0x37')]:_0x2100cf['model'];_0x5ac25e['order']=qs[_0x3efd('0x3c')](_0x522e9e[_0x3efd('0x34')][_0x3efd('0x3c')]);_0x5ac25e[_0x3efd('0x3d')]=qs[_0x3efd('0x35')](_[_0x3efd('0x3e')](_0x522e9e[_0x3efd('0x34')],_0x2100cf[_0x3efd('0x35')]));if(_0x522e9e[_0x3efd('0x34')][_0x3efd('0x3f')]){_0x5ac25e['where']=_[_0x3efd('0x41')](_0x5ac25e[_0x3efd('0x3d')],{'$or':_[_0x3efd('0x2d')](_0x5ac25e['attributes'],function(_0x4893f5){var _0x305b3f={};_0x305b3f[_0x4893f5]={'$like':'%'+_0x522e9e[_0x3efd('0x34')][_0x3efd('0x3f')]+'%'};return _0x305b3f;})});}_0x5ac25e=_[_0x3efd('0x41')]({},_0x5ac25e,_0x522e9e[_0x3efd('0x42')]);return _0x70b4b2[_0x3efd('0x53')](_0x5ac25e);}})[_0x3efd('0x25')](function(_0x2a42c1){if(_0x2a42c1){_0x5918a0=_0x2a42c1['length'];if(!_0x522e9e[_0x3efd('0x34')][_0x3efd('0x3a')]('nolimit')){_0x5ac25e[_0x3efd('0x21')]=qs[_0x3efd('0x21')](_0x522e9e[_0x3efd('0x34')][_0x3efd('0x21')]);_0x5ac25e[_0x3efd('0x1e')]=qs[_0x3efd('0x1e')](_0x522e9e[_0x3efd('0x34')][_0x3efd('0x1e')]);}return _0x70b4b2[_0x3efd('0x53')](_0x5ac25e);}})[_0x3efd('0x25')](function(_0x14741b){if(_0x14741b){return _0x14741b?{'count':_0x5918a0,'rows':_0x14741b}:null;}})[_0x3efd('0x25')](respondWithResult(_0x57b288,null))[_0x3efd('0x46')](handleError(_0x57b288,null));};
\ No newline at end of file
+var _0x1f18=['fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','Dynamics365Configuration','includeAll','include','findAll','rows','show','length','find','catch','create','body','params','getFields','findOne','options','getSubjects','Dynamics365Field','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','rawAttributes'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x1f18,0x124));var _0x81f1=function(_0x5e4dfe,_0x5da9b1){_0x5e4dfe=_0x5e4dfe-0x0;var _0x1bf26d=_0x1f18[_0x5e4dfe];return _0x1bf26d;};'use strict';var emlformat=require(_0x81f1('0x0'));var rimraf=require(_0x81f1('0x1'));var zipdir=require(_0x81f1('0x2'));var jsonpatch=require(_0x81f1('0x3'));var rp=require(_0x81f1('0x4'));var moment=require(_0x81f1('0x5'));var BPromise=require(_0x81f1('0x6'));var Mustache=require(_0x81f1('0x7'));var util=require(_0x81f1('0x8'));var path=require(_0x81f1('0x9'));var sox=require(_0x81f1('0xa'));var csv=require(_0x81f1('0xb'));var ejs=require(_0x81f1('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x81f1('0xd'));var squel=require(_0x81f1('0xe'));var crypto=require(_0x81f1('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x81f1('0x10'));var toCsv=require(_0x81f1('0xb'));var querystring=require('querystring');var Papa=require(_0x81f1('0x11'));var Redis=require(_0x81f1('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x81f1('0x13'));var as=require(_0x81f1('0x14'));var hardwareService=require(_0x81f1('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x81f1('0x16'));var config=require(_0x81f1('0x17'));var licenseUtil=require(_0x81f1('0x18'));var db=require(_0x81f1('0x19'))['db'];function respondWithStatusCode(_0x27c10b,_0x5ed016){_0x5ed016=_0x5ed016||0xcc;return function(_0x18a3cf){if(_0x18a3cf){return _0x27c10b[_0x81f1('0x1a')](_0x5ed016);}return _0x27c10b[_0x81f1('0x1b')](_0x5ed016)[_0x81f1('0x1c')]();};}function respondWithResult(_0x4797ff,_0x3f5321){_0x3f5321=_0x3f5321||0xc8;return function(_0x3f09c0){if(_0x3f09c0){return _0x4797ff[_0x81f1('0x1b')](_0x3f5321)[_0x81f1('0x1d')](_0x3f09c0);}};}function respondWithFilteredResult(_0x3d30a8,_0x30a9b1){return function(_0x5f22a9){if(_0x5f22a9){var _0x9f6b5d=typeof _0x30a9b1[_0x81f1('0x1e')]===_0x81f1('0x1f')&&typeof _0x30a9b1['limit']===_0x81f1('0x1f');var _0x76b832=_0x5f22a9[_0x81f1('0x20')];var _0x3277ec=_0x9f6b5d?0x0:_0x30a9b1[_0x81f1('0x1e')];var _0x3c567e=_0x9f6b5d?_0x5f22a9[_0x81f1('0x20')]:_0x30a9b1['offset']+_0x30a9b1[_0x81f1('0x21')];var _0x5a4786;if(_0x3c567e>=_0x76b832){_0x3c567e=_0x76b832;_0x5a4786=0xc8;}else{_0x5a4786=0xce;}_0x3d30a8[_0x81f1('0x1b')](_0x5a4786);return _0x3d30a8[_0x81f1('0x22')](_0x81f1('0x23'),_0x3277ec+'-'+_0x3c567e+'/'+_0x76b832)[_0x81f1('0x1d')](_0x5f22a9);}return null;};}function patchUpdates(_0x59af1f){return function(_0x5bf985){try{jsonpatch[_0x81f1('0x24')](_0x5bf985,_0x59af1f,!![]);}catch(_0x33602b){return BPromise[_0x81f1('0x25')](_0x33602b);}return _0x5bf985[_0x81f1('0x26')]();};}function saveUpdates(_0x522783,_0xf3c28b){return function(_0x3803c7){if(_0x3803c7){return _0x3803c7[_0x81f1('0x27')](_0x522783)[_0x81f1('0x28')](function(_0x29eaf0){return _0x29eaf0;});}return null;};}function removeEntity(_0x5e17db,_0x544b34){return function(_0x4b583a){if(_0x4b583a){return _0x4b583a[_0x81f1('0x29')]()['then'](function(){_0x5e17db[_0x81f1('0x1b')](0xcc)[_0x81f1('0x1c')]();});}};}function handleEntityNotFound(_0x19f302,_0x505a99){return function(_0x1b9c21){if(!_0x1b9c21){_0x19f302[_0x81f1('0x1a')](0x194);}return _0x1b9c21;};}function handleError(_0x5cd6f9,_0x50c8c5){_0x50c8c5=_0x50c8c5||0x1f4;return function(_0x7c4e40){logger['error'](_0x7c4e40[_0x81f1('0x2a')]);if(_0x7c4e40[_0x81f1('0x2b')]){delete _0x7c4e40[_0x81f1('0x2b')];}_0x5cd6f9[_0x81f1('0x1b')](_0x50c8c5)[_0x81f1('0x2c')](_0x7c4e40);};}exports[_0x81f1('0x2d')]=function(_0x28c7a3,_0x196394){var _0x5402cf={},_0x816a0c={},_0x195cc3={'count':0x0,'rows':[]};var _0x500cf1=_[_0x81f1('0x2e')](db['Dynamics365Configuration'][_0x81f1('0x2f')],function(_0x4a4e74){return{'name':_0x4a4e74[_0x81f1('0x30')],'type':_0x4a4e74['type'][_0x81f1('0x31')]};});_0x816a0c[_0x81f1('0x32')]=_[_0x81f1('0x2e')](_0x500cf1,_0x81f1('0x2b'));_0x816a0c[_0x81f1('0x33')]=_[_0x81f1('0x34')](_0x28c7a3[_0x81f1('0x33')]);_0x816a0c[_0x81f1('0x35')]=_[_0x81f1('0x36')](_0x816a0c[_0x81f1('0x32')],_0x816a0c[_0x81f1('0x33')]);_0x5402cf[_0x81f1('0x37')]=_[_0x81f1('0x36')](_0x816a0c[_0x81f1('0x32')],qs['fields'](_0x28c7a3[_0x81f1('0x33')][_0x81f1('0x38')]));_0x5402cf[_0x81f1('0x37')]=_0x5402cf[_0x81f1('0x37')]['length']?_0x5402cf[_0x81f1('0x37')]:_0x816a0c['model'];if(!_0x28c7a3[_0x81f1('0x33')][_0x81f1('0x39')](_0x81f1('0x3a'))){_0x5402cf['limit']=qs[_0x81f1('0x21')](_0x28c7a3['query'][_0x81f1('0x21')]);_0x5402cf[_0x81f1('0x1e')]=qs[_0x81f1('0x1e')](_0x28c7a3[_0x81f1('0x33')][_0x81f1('0x1e')]);}_0x5402cf[_0x81f1('0x3b')]=qs[_0x81f1('0x3c')](_0x28c7a3[_0x81f1('0x33')][_0x81f1('0x3c')]);_0x5402cf[_0x81f1('0x3d')]=qs[_0x81f1('0x35')](_[_0x81f1('0x3e')](_0x28c7a3['query'],_0x816a0c[_0x81f1('0x35')]),_0x500cf1);if(_0x28c7a3[_0x81f1('0x33')][_0x81f1('0x3f')]){_0x5402cf[_0x81f1('0x3d')]=_[_0x81f1('0x40')](_0x5402cf[_0x81f1('0x3d')],{'$or':_['map'](_0x500cf1,function(_0x1da9c9){if(_0x1da9c9[_0x81f1('0x41')]!==_0x81f1('0x42')){var _0x1e66db={};_0x1e66db[_0x1da9c9['name']]={'$like':'%'+_0x28c7a3[_0x81f1('0x33')]['filter']+'%'};return _0x1e66db;}})});}_0x5402cf=_[_0x81f1('0x40')]({},_0x5402cf,_0x28c7a3['options']);var _0x2e2ddd={'where':_0x5402cf[_0x81f1('0x3d')]};return db[_0x81f1('0x43')][_0x81f1('0x20')](_0x2e2ddd)[_0x81f1('0x28')](function(_0x46e72f){_0x195cc3['count']=_0x46e72f;if(_0x28c7a3[_0x81f1('0x33')][_0x81f1('0x44')]){_0x5402cf[_0x81f1('0x45')]=[{'all':!![]}];}return db[_0x81f1('0x43')][_0x81f1('0x46')](_0x5402cf);})[_0x81f1('0x28')](function(_0x3a0b81){_0x195cc3[_0x81f1('0x47')]=_0x3a0b81;return _0x195cc3;})[_0x81f1('0x28')](respondWithFilteredResult(_0x196394,_0x5402cf))['catch'](handleError(_0x196394,null));};exports[_0x81f1('0x48')]=function(_0x54b6da,_0x6114a){var _0x4f6d2f={'raw':![],'where':{'id':_0x54b6da['params']['id']}},_0x37c50b={};_0x37c50b[_0x81f1('0x32')]=_['keys'](db[_0x81f1('0x43')]['rawAttributes']);_0x37c50b[_0x81f1('0x33')]=_[_0x81f1('0x34')](_0x54b6da[_0x81f1('0x33')]);_0x37c50b[_0x81f1('0x35')]=_[_0x81f1('0x36')](_0x37c50b['model'],_0x37c50b['query']);_0x4f6d2f[_0x81f1('0x37')]=_[_0x81f1('0x36')](_0x37c50b[_0x81f1('0x32')],qs[_0x81f1('0x38')](_0x54b6da[_0x81f1('0x33')][_0x81f1('0x38')]));_0x4f6d2f['attributes']=_0x4f6d2f[_0x81f1('0x37')][_0x81f1('0x49')]?_0x4f6d2f[_0x81f1('0x37')]:_0x37c50b[_0x81f1('0x32')];if(_0x54b6da[_0x81f1('0x33')][_0x81f1('0x44')]){_0x4f6d2f[_0x81f1('0x45')]=[{'all':!![]}];}_0x4f6d2f=_['merge']({},_0x4f6d2f,_0x54b6da['options']);return db[_0x81f1('0x43')][_0x81f1('0x4a')](_0x4f6d2f)[_0x81f1('0x28')](handleEntityNotFound(_0x6114a,null))[_0x81f1('0x28')](respondWithResult(_0x6114a,null))[_0x81f1('0x4b')](handleError(_0x6114a,null));};exports[_0x81f1('0x4c')]=function(_0x36e8f0,_0x40b741){return db['Dynamics365Configuration']['create'](_0x36e8f0[_0x81f1('0x4d')],{})[_0x81f1('0x28')](respondWithResult(_0x40b741,0xc9))['catch'](handleError(_0x40b741,null));};exports[_0x81f1('0x27')]=function(_0x1a4390,_0x214ae9){if(_0x1a4390[_0x81f1('0x4d')]['id']){delete _0x1a4390['body']['id'];}return db[_0x81f1('0x43')]['find']({'where':{'id':_0x1a4390[_0x81f1('0x4e')]['id']}})[_0x81f1('0x28')](handleEntityNotFound(_0x214ae9,null))[_0x81f1('0x28')](saveUpdates(_0x1a4390[_0x81f1('0x4d')],null))[_0x81f1('0x28')](respondWithResult(_0x214ae9,null))[_0x81f1('0x4b')](handleError(_0x214ae9,null));};exports[_0x81f1('0x29')]=function(_0x27da92,_0x4b7b27){return db[_0x81f1('0x43')]['find']({'where':{'id':_0x27da92[_0x81f1('0x4e')]['id']}})[_0x81f1('0x28')](handleEntityNotFound(_0x4b7b27,null))[_0x81f1('0x28')](removeEntity(_0x4b7b27,null))[_0x81f1('0x4b')](handleError(_0x4b7b27,null));};exports[_0x81f1('0x4f')]=function(_0x196989,_0xf778ba,_0x410df5){var _0x69d666={};var _0x1c34f8={};var _0x1d5b5c;var _0x599677;return db['Dynamics365Configuration'][_0x81f1('0x50')]({'where':{'id':_0x196989[_0x81f1('0x4e')]['id']}})[_0x81f1('0x28')](handleEntityNotFound(_0xf778ba,null))[_0x81f1('0x28')](function(_0x223c01){if(_0x223c01){_0x1d5b5c=_0x223c01;_0x1c34f8[_0x81f1('0x32')]=_['keys'](db['Dynamics365Field'][_0x81f1('0x2f')]);_0x1c34f8[_0x81f1('0x33')]=_['keys'](_0x196989[_0x81f1('0x33')]);_0x1c34f8['filters']=_[_0x81f1('0x36')](_0x1c34f8[_0x81f1('0x32')],_0x1c34f8[_0x81f1('0x33')]);_0x69d666[_0x81f1('0x37')]=_[_0x81f1('0x36')](_0x1c34f8[_0x81f1('0x32')],qs[_0x81f1('0x38')](_0x196989['query'][_0x81f1('0x38')]));_0x69d666['attributes']=_0x69d666[_0x81f1('0x37')][_0x81f1('0x49')]?_0x69d666['attributes']:_0x1c34f8[_0x81f1('0x32')];_0x69d666[_0x81f1('0x3b')]=qs[_0x81f1('0x3c')](_0x196989['query'][_0x81f1('0x3c')]);_0x69d666[_0x81f1('0x3d')]=qs['filters'](_[_0x81f1('0x3e')](_0x196989[_0x81f1('0x33')],_0x1c34f8['filters']));if(_0x196989[_0x81f1('0x33')][_0x81f1('0x3f')]){_0x69d666[_0x81f1('0x3d')]=_[_0x81f1('0x40')](_0x69d666[_0x81f1('0x3d')],{'$or':_[_0x81f1('0x2e')](_0x69d666['attributes'],function(_0x391929){var _0x5f1a78={};_0x5f1a78[_0x391929]={'$like':'%'+_0x196989[_0x81f1('0x33')][_0x81f1('0x3f')]+'%'};return _0x5f1a78;})});}_0x69d666=_[_0x81f1('0x40')]({},_0x69d666,_0x196989[_0x81f1('0x51')]);return _0x1d5b5c[_0x81f1('0x4f')](_0x69d666);}})[_0x81f1('0x28')](function(_0x36841b){if(_0x36841b){_0x599677=_0x36841b[_0x81f1('0x49')];if(!_0x196989[_0x81f1('0x33')][_0x81f1('0x39')]('nolimit')){_0x69d666['limit']=qs[_0x81f1('0x21')](_0x196989['query'][_0x81f1('0x21')]);_0x69d666[_0x81f1('0x1e')]=qs[_0x81f1('0x1e')](_0x196989[_0x81f1('0x33')]['offset']);}return _0x1d5b5c[_0x81f1('0x4f')](_0x69d666);}})[_0x81f1('0x28')](function(_0x5a6214){if(_0x5a6214){return _0x5a6214?{'count':_0x599677,'rows':_0x5a6214}:null;}})[_0x81f1('0x28')](respondWithResult(_0xf778ba,null))[_0x81f1('0x4b')](handleError(_0xf778ba,null));};exports[_0x81f1('0x52')]=function(_0x5e6115,_0x4a9f60,_0x2b878b){var _0x3669a3={};var _0x3919dd={};var _0x3f0fdd;var _0xab6583;return db['Dynamics365Configuration']['findOne']({'where':{'id':_0x5e6115[_0x81f1('0x4e')]['id']}})[_0x81f1('0x28')](handleEntityNotFound(_0x4a9f60,null))[_0x81f1('0x28')](function(_0x233818){if(_0x233818){_0x3f0fdd=_0x233818;_0x3919dd['model']=_[_0x81f1('0x34')](db[_0x81f1('0x53')][_0x81f1('0x2f')]);_0x3919dd[_0x81f1('0x33')]=_['keys'](_0x5e6115['query']);_0x3919dd[_0x81f1('0x35')]=_[_0x81f1('0x36')](_0x3919dd[_0x81f1('0x32')],_0x3919dd['query']);_0x3669a3[_0x81f1('0x37')]=_[_0x81f1('0x36')](_0x3919dd['model'],qs[_0x81f1('0x38')](_0x5e6115['query'][_0x81f1('0x38')]));_0x3669a3[_0x81f1('0x37')]=_0x3669a3[_0x81f1('0x37')][_0x81f1('0x49')]?_0x3669a3[_0x81f1('0x37')]:_0x3919dd[_0x81f1('0x32')];_0x3669a3[_0x81f1('0x3b')]=qs[_0x81f1('0x3c')](_0x5e6115[_0x81f1('0x33')][_0x81f1('0x3c')]);_0x3669a3[_0x81f1('0x3d')]=qs[_0x81f1('0x35')](_[_0x81f1('0x3e')](_0x5e6115[_0x81f1('0x33')],_0x3919dd[_0x81f1('0x35')]));if(_0x5e6115[_0x81f1('0x33')]['filter']){_0x3669a3[_0x81f1('0x3d')]=_[_0x81f1('0x40')](_0x3669a3['where'],{'$or':_[_0x81f1('0x2e')](_0x3669a3['attributes'],function(_0x550531){var _0x5731e8={};_0x5731e8[_0x550531]={'$like':'%'+_0x5e6115[_0x81f1('0x33')][_0x81f1('0x3f')]+'%'};return _0x5731e8;})});}_0x3669a3=_[_0x81f1('0x40')]({},_0x3669a3,_0x5e6115['options']);return _0x3f0fdd[_0x81f1('0x52')](_0x3669a3);}})['then'](function(_0x3ddfd8){if(_0x3ddfd8){_0xab6583=_0x3ddfd8[_0x81f1('0x49')];if(!_0x5e6115[_0x81f1('0x33')][_0x81f1('0x39')](_0x81f1('0x3a'))){_0x3669a3[_0x81f1('0x21')]=qs['limit'](_0x5e6115[_0x81f1('0x33')][_0x81f1('0x21')]);_0x3669a3[_0x81f1('0x1e')]=qs[_0x81f1('0x1e')](_0x5e6115['query'][_0x81f1('0x1e')]);}return _0x3f0fdd[_0x81f1('0x52')](_0x3669a3);}})['then'](function(_0x341c54){if(_0x341c54){return _0x341c54?{'count':_0xab6583,'rows':_0x341c54}:null;}})[_0x81f1('0x28')](respondWithResult(_0x4a9f60,null))['catch'](handleError(_0x4a9f60,null));};exports[_0x81f1('0x54')]=function(_0x438013,_0x365900,_0x3c92fa){var _0x4e667c={};var _0x2b3920={};var _0x1b05e9;var _0x3fc275;return db[_0x81f1('0x43')][_0x81f1('0x50')]({'where':{'id':_0x438013[_0x81f1('0x4e')]['id']}})[_0x81f1('0x28')](handleEntityNotFound(_0x365900,null))[_0x81f1('0x28')](function(_0x644e58){if(_0x644e58){_0x1b05e9=_0x644e58;_0x2b3920[_0x81f1('0x32')]=_[_0x81f1('0x34')](db['Dynamics365Field']['rawAttributes']);_0x2b3920['query']=_['keys'](_0x438013['query']);_0x2b3920['filters']=_[_0x81f1('0x36')](_0x2b3920[_0x81f1('0x32')],_0x2b3920[_0x81f1('0x33')]);_0x4e667c[_0x81f1('0x37')]=_[_0x81f1('0x36')](_0x2b3920['model'],qs[_0x81f1('0x38')](_0x438013['query'][_0x81f1('0x38')]));_0x4e667c[_0x81f1('0x37')]=_0x4e667c[_0x81f1('0x37')][_0x81f1('0x49')]?_0x4e667c[_0x81f1('0x37')]:_0x2b3920[_0x81f1('0x32')];_0x4e667c[_0x81f1('0x3b')]=qs['sort'](_0x438013['query'][_0x81f1('0x3c')]);_0x4e667c[_0x81f1('0x3d')]=qs[_0x81f1('0x35')](_[_0x81f1('0x3e')](_0x438013['query'],_0x2b3920[_0x81f1('0x35')]));if(_0x438013[_0x81f1('0x33')][_0x81f1('0x3f')]){_0x4e667c['where']=_[_0x81f1('0x40')](_0x4e667c[_0x81f1('0x3d')],{'$or':_[_0x81f1('0x2e')](_0x4e667c['attributes'],function(_0x31cd0c){var _0x5170d9={};_0x5170d9[_0x31cd0c]={'$like':'%'+_0x438013[_0x81f1('0x33')][_0x81f1('0x3f')]+'%'};return _0x5170d9;})});}_0x4e667c=_[_0x81f1('0x40')]({},_0x4e667c,_0x438013[_0x81f1('0x51')]);return _0x1b05e9[_0x81f1('0x54')](_0x4e667c);}})['then'](function(_0x5e51b1){if(_0x5e51b1){_0x3fc275=_0x5e51b1[_0x81f1('0x49')];if(!_0x438013[_0x81f1('0x33')][_0x81f1('0x39')]('nolimit')){_0x4e667c['limit']=qs[_0x81f1('0x21')](_0x438013[_0x81f1('0x33')][_0x81f1('0x21')]);_0x4e667c[_0x81f1('0x1e')]=qs['offset'](_0x438013[_0x81f1('0x33')]['offset']);}return _0x1b05e9['getDescriptions'](_0x4e667c);}})[_0x81f1('0x28')](function(_0x33dcb6){if(_0x33dcb6){return _0x33dcb6?{'count':_0x3fc275,'rows':_0x33dcb6}:null;}})['then'](respondWithResult(_0x365900,null))['catch'](handleError(_0x365900,null));};
\ No newline at end of file
index 282a422..75fe8c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['rimraf','../../config/environment','./intDynamics365Configuration.attributes','Dynamics365Configuration','int_dynamics365_configurations','lodash','util','api','moment','bluebird','path'];(function(_0x3b05d5,_0x48be5d){var _0x141e17=function(_0x4e631e){while(--_0x4e631e){_0x3b05d5['push'](_0x3b05d5['shift']());}};_0x141e17(++_0x48be5d);}(_0xb43b,0x1b2));var _0xbb43=function(_0x49c0de,_0x21ee12){_0x49c0de=_0x49c0de-0x0;var _0x196b9e=_0xb43b[_0x49c0de];return _0x196b9e;};'use strict';var _=require(_0xbb43('0x0'));var util=require(_0xbb43('0x1'));var logger=require('../../config/logger')(_0xbb43('0x2'));var moment=require(_0xbb43('0x3'));var BPromise=require(_0xbb43('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbb43('0x5'));var rimraf=require(_0xbb43('0x6'));var config=require(_0xbb43('0x7'));var attributes=require(_0xbb43('0x8'));module['exports']=function(_0x491fb9,_0x378df5){return _0x491fb9['define'](_0xbb43('0x9'),attributes,{'tableName':_0xbb43('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9c44=['request-promise','path','./intDynamics365Configuration.attributes','define','Dynamics365Configuration','int_dynamics365_configurations','../../config/logger','api','moment','bluebird'];(function(_0x5884ed,_0x461291){var _0x3a9138=function(_0x419355){while(--_0x419355){_0x5884ed['push'](_0x5884ed['shift']());}};_0x3a9138(++_0x461291);}(_0x9c44,0x178));var _0x49c4=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0x9c44[_0x543084];return _0x306a57;};'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 455f51c..86b91b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bd3=['result','catch','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','client','http','request','then','info','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','error','code','Dynamics365Configuration,\x20%s,\x20%s','message'];(function(_0x3394de,_0x169a18){var _0x51ea55=function(_0x1474ab){while(--_0x1474ab){_0x3394de['push'](_0x3394de['shift']());}};_0x51ea55(++_0x169a18);}(_0x2bd3,0xa2));var _0x32bd=function(_0x41216a,_0x53e83d){_0x41216a=_0x41216a-0x0;var _0x122cf1=_0x2bd3[_0x41216a];return _0x122cf1;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x32bd('0x0'));var BPromise=require('bluebird');var rs=require(_0x32bd('0x1'));var fs=require('fs');var Redis=require(_0x32bd('0x2'));var db=require(_0x32bd('0x3'))['db'];var utils=require(_0x32bd('0x4'));var logger=require('../../config/logger')(_0x32bd('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x32bd('0x6')][_0x32bd('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1bf468,_0x31bd51,_0x2b7d2d){return new BPromise(function(_0x52bca0,_0x529334){return client[_0x32bd('0x8')](_0x1bf468,_0x2b7d2d)[_0x32bd('0x9')](function(_0x315f33){logger[_0x32bd('0xa')]('Dynamics365Configuration,\x20%s,\x20%s',_0x31bd51,_0x32bd('0xb'));logger[_0x32bd('0xc')](_0x32bd('0xd'),_0x31bd51,_0x32bd('0xb'),JSON['stringify'](_0x315f33));if(_0x315f33[_0x32bd('0xe')]){if(_0x315f33[_0x32bd('0xe')][_0x32bd('0xf')]===0x1f4){logger['error'](_0x32bd('0x10'),_0x31bd51,_0x315f33[_0x32bd('0xe')][_0x32bd('0x11')]);return _0x529334(_0x315f33[_0x32bd('0xe')][_0x32bd('0x11')]);}logger[_0x32bd('0xe')]('Dynamics365Configuration,\x20%s,\x20%s',_0x31bd51,_0x315f33[_0x32bd('0xe')]['message']);return _0x52bca0(_0x315f33[_0x32bd('0xe')][_0x32bd('0x11')]);}else{logger[_0x32bd('0xa')]('Dynamics365Configuration,\x20%s,\x20%s',_0x31bd51,'request\x20sent');_0x52bca0(_0x315f33[_0x32bd('0x12')]['message']);}})[_0x32bd('0x13')](function(_0x498f3d){logger[_0x32bd('0xe')]('Dynamics365Configuration,\x20%s,\x20%s',_0x31bd51,_0x498f3d);_0x529334(_0x498f3d);});});}
\ No newline at end of file
+var _0x94bc=['error','message','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x40015a,_0x415db5){var _0x42f8a4=function(_0x5685ad){while(--_0x5685ad){_0x40015a['push'](_0x40015a['shift']());}};_0x42f8a4(++_0x415db5);}(_0x94bc,0xc0));var _0xc94b=function(_0x397d61,_0x1f2002){_0x397d61=_0x397d61-0x0;var _0x270833=_0x94bc[_0x397d61];return _0x270833;};'use strict';var _=require('lodash');var util=require(_0xc94b('0x0'));var moment=require(_0xc94b('0x1'));var BPromise=require('bluebird');var rs=require(_0xc94b('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc94b('0x3'))['db'];var utils=require(_0xc94b('0x4'));var logger=require('../../config/logger')(_0xc94b('0x5'));var config=require(_0xc94b('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xc94b('0x7')][_0xc94b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3cf34d,_0x754ab,_0x5f57a2){return new BPromise(function(_0x305335,_0x5ac379){return client[_0xc94b('0x9')](_0x3cf34d,_0x5f57a2)[_0xc94b('0xa')](function(_0x8025a3){logger[_0xc94b('0xb')](_0xc94b('0xc'),_0x754ab,_0xc94b('0xd'));logger[_0xc94b('0xe')](_0xc94b('0xf'),_0x754ab,_0xc94b('0xd'),JSON[_0xc94b('0x10')](_0x8025a3));if(_0x8025a3[_0xc94b('0x11')]){if(_0x8025a3['error']['code']===0x1f4){logger[_0xc94b('0x11')](_0xc94b('0xc'),_0x754ab,_0x8025a3[_0xc94b('0x11')][_0xc94b('0x12')]);return _0x5ac379(_0x8025a3[_0xc94b('0x11')]['message']);}logger[_0xc94b('0x11')](_0xc94b('0xc'),_0x754ab,_0x8025a3['error']['message']);return _0x305335(_0x8025a3['error']['message']);}else{logger[_0xc94b('0xb')](_0xc94b('0xc'),_0x754ab,_0xc94b('0xd'));_0x305335(_0x8025a3['result'][_0xc94b('0x12')]);}})['catch'](function(_0x5b732a){logger[_0xc94b('0x11')](_0xc94b('0xc'),_0x754ab,_0x5b732a);_0x5ac379(_0x5b732a);});});}
\ No newline at end of file
index 242dba1..c760227 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13c1=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intDynamics365Field.controller','get','isAuthenticated','index','post','/:id'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x13c1,0x82));var _0x113c=function(_0xaaeca0,_0x25a235){_0xaaeca0=_0xaaeca0-0x0;var _0x54ab5c=_0x13c1[_0xaaeca0];return _0x54ab5c;};'use strict';var multer=require(_0x113c('0x0'));var util=require(_0x113c('0x1'));var path=require(_0x113c('0x2'));var timeout=require(_0x113c('0x3'));var express=require(_0x113c('0x4'));var router=express[_0x113c('0x5')]();var fs_extra=require(_0x113c('0x6'));var auth=require(_0x113c('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x113c('0x8'));router[_0x113c('0x9')]('/',auth[_0x113c('0xa')](),controller[_0x113c('0xb')]);router[_0x113c('0x9')]('/:id',auth[_0x113c('0xa')](),controller['show']);router[_0x113c('0xc')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x113c('0xd'),auth[_0x113c('0xa')](),controller[_0x113c('0xe')]);router[_0x113c('0xf')](_0x113c('0xd'),auth[_0x113c('0xa')](),controller[_0x113c('0x10')]);module[_0x113c('0x11')]=router;
\ No newline at end of file
+var _0x4555=['multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Field.controller','get','isAuthenticated','index','/:id','create','put','update','delete','exports'];(function(_0x14b29a,_0x227b22){var _0x49b040=function(_0x9d51fa){while(--_0x9d51fa){_0x14b29a['push'](_0x14b29a['shift']());}};_0x49b040(++_0x227b22);}(_0x4555,0xea));var _0x5455=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x4555[_0x2dafbe];return _0x58a45a;};'use strict';var multer=require(_0x5455('0x0'));var util=require('util');var path=require(_0x5455('0x1'));var timeout=require(_0x5455('0x2'));var express=require(_0x5455('0x3'));var router=express['Router']();var fs_extra=require(_0x5455('0x4'));var auth=require(_0x5455('0x5'));var interaction=require(_0x5455('0x6'));var config=require(_0x5455('0x7'));var controller=require(_0x5455('0x8'));router[_0x5455('0x9')]('/',auth[_0x5455('0xa')](),controller[_0x5455('0xb')]);router[_0x5455('0x9')](_0x5455('0xc'),auth[_0x5455('0xa')](),controller['show']);router['post']('/',auth[_0x5455('0xa')](),controller[_0x5455('0xd')]);router[_0x5455('0xe')](_0x5455('0xc'),auth[_0x5455('0xa')](),controller[_0x5455('0xf')]);router[_0x5455('0x10')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x5455('0x11')]=router;
\ No newline at end of file
index 5f0dfc4..11c1474 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe753=['variable','customVariable','keyValue','picklist','STRING','ENUM','string'];(function(_0xdbce8,_0x550d11){var _0x4e8866=function(_0x570546){while(--_0x570546){_0xdbce8['push'](_0xdbce8['shift']());}};_0x4e8866(++_0x550d11);}(_0xe753,0x8a));var _0x3e75=function(_0x588bd0,_0x3a760b){_0x588bd0=_0x588bd0-0x0;var _0x824a8d=_0xe753[_0x588bd0];return _0x824a8d;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x3e75('0x0')](_0x3e75('0x1'),_0x3e75('0x2'),_0x3e75('0x3'),_0x3e75('0x4'),_0x3e75('0x5')),'defaultValue':_0x3e75('0x1')},'content':{'type':Sequelize[_0x3e75('0x6')]},'key':{'type':Sequelize[_0x3e75('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0x3e75('0x1'),_0x3e75('0x2'),_0x3e75('0x3'))},'keyContent':{'type':Sequelize[_0x3e75('0x6')]},'idField':{'type':Sequelize[_0x3e75('0x6')]},'nameField':{'type':Sequelize[_0x3e75('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x2a4f=['customVariable','BOOLEAN','sequelize','exports','string','keyValue','picklist','STRING','variable'];(function(_0x5d92c2,_0x26d815){var _0x415601=function(_0x507e8f){while(--_0x507e8f){_0x5d92c2['push'](_0x5d92c2['shift']());}};_0x415601(++_0x26d815);}(_0x2a4f,0x1a0));var _0xf2a4=function(_0x3fbeb7,_0x316335){_0x3fbeb7=_0x3fbeb7-0x0;var _0x4dcb89=_0x2a4f[_0x3fbeb7];return _0x4dcb89;};'use strict';var Sequelize=require(_0xf2a4('0x0'));module[_0xf2a4('0x1')]={'type':{'type':Sequelize['ENUM'](_0xf2a4('0x2'),'variable','customVariable',_0xf2a4('0x3'),_0xf2a4('0x4')),'defaultValue':_0xf2a4('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xf2a4('0x5')]},'keyType':{'type':Sequelize['ENUM'](_0xf2a4('0x2'),_0xf2a4('0x6'),_0xf2a4('0x7'))},'keyContent':{'type':Sequelize[_0xf2a4('0x5')]},'idField':{'type':Sequelize[_0xf2a4('0x5')]},'nameField':{'type':Sequelize[_0xf2a4('0x5')]},'customField':{'type':Sequelize[_0xf2a4('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf2a4('0x5')]}};
\ No newline at end of file
index 2f263f4..b45efac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8028=['desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','reject','update','then','destroy','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','Dynamics365Field','includeAll','findAll','rows','catch','show','params','include','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce'];(function(_0x19e1e8,_0x150698){var _0x21fc2c=function(_0x55facc){while(--_0x55facc){_0x19e1e8['push'](_0x19e1e8['shift']());}};_0x21fc2c(++_0x150698);}(_0x8028,0x12a));var _0x8802=function(_0x310458,_0x495bfd){_0x310458=_0x310458-0x0;var _0x4bc2ee=_0x8028[_0x310458];return _0x4bc2ee;};'use strict';var emlformat=require(_0x8802('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8802('0x1'));var jsonpatch=require(_0x8802('0x2'));var rp=require(_0x8802('0x3'));var moment=require('moment');var BPromise=require(_0x8802('0x4'));var Mustache=require(_0x8802('0x5'));var util=require(_0x8802('0x6'));var path=require(_0x8802('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x8802('0x8'));var fs=require('fs');var fs_extra=require(_0x8802('0x9'));var _=require(_0x8802('0xa'));var squel=require(_0x8802('0xb'));var crypto=require(_0x8802('0xc'));var jsforce=require(_0x8802('0xd'));var deskjs=require(_0x8802('0xe'));var toCsv=require(_0x8802('0xf'));var querystring=require(_0x8802('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x8802('0x11'));var qs=require(_0x8802('0x12'));var as=require(_0x8802('0x13'));var hardwareService=require(_0x8802('0x14'));var logger=require(_0x8802('0x15'))(_0x8802('0x16'));var utils=require('../../config/utils');var config=require(_0x8802('0x17'));var licenseUtil=require(_0x8802('0x18'));var db=require(_0x8802('0x19'))['db'];function respondWithStatusCode(_0x1e3caf,_0x187761){_0x187761=_0x187761||0xcc;return function(_0x4cc3bb){if(_0x4cc3bb){return _0x1e3caf[_0x8802('0x1a')](_0x187761);}return _0x1e3caf['status'](_0x187761)[_0x8802('0x1b')]();};}function respondWithResult(_0x1e0db7,_0x5ea44b){_0x5ea44b=_0x5ea44b||0xc8;return function(_0x1c7e40){if(_0x1c7e40){return _0x1e0db7[_0x8802('0x1c')](_0x5ea44b)[_0x8802('0x1d')](_0x1c7e40);}};}function respondWithFilteredResult(_0x15ea3d,_0x30efd5){return function(_0xaeb548){if(_0xaeb548){var _0x35b0ab=typeof _0x30efd5[_0x8802('0x1e')]===_0x8802('0x1f')&&typeof _0x30efd5[_0x8802('0x20')]===_0x8802('0x1f');var _0x293c12=_0xaeb548[_0x8802('0x21')];var _0x59a230=_0x35b0ab?0x0:_0x30efd5[_0x8802('0x1e')];var _0x5796a7=_0x35b0ab?_0xaeb548[_0x8802('0x21')]:_0x30efd5['offset']+_0x30efd5[_0x8802('0x20')];var _0x508611;if(_0x5796a7>=_0x293c12){_0x5796a7=_0x293c12;_0x508611=0xc8;}else{_0x508611=0xce;}_0x15ea3d[_0x8802('0x1c')](_0x508611);return _0x15ea3d['set'](_0x8802('0x22'),_0x59a230+'-'+_0x5796a7+'/'+_0x293c12)[_0x8802('0x1d')](_0xaeb548);}return null;};}function patchUpdates(_0xbf4d6e){return function(_0x40f1dd){try{jsonpatch['apply'](_0x40f1dd,_0xbf4d6e,!![]);}catch(_0x20b8e1){return BPromise[_0x8802('0x23')](_0x20b8e1);}return _0x40f1dd['save']();};}function saveUpdates(_0x47b305,_0x52af3c){return function(_0x330338){if(_0x330338){return _0x330338[_0x8802('0x24')](_0x47b305)[_0x8802('0x25')](function(_0xc0a233){return _0xc0a233;});}return null;};}function removeEntity(_0x1c5ffc,_0x290f30){return function(_0x11c60a){if(_0x11c60a){return _0x11c60a[_0x8802('0x26')]()['then'](function(){_0x1c5ffc['status'](0xcc)[_0x8802('0x1b')]();});}};}function handleEntityNotFound(_0x3608e4,_0x481ce6){return function(_0x4ffcbb){if(!_0x4ffcbb){_0x3608e4['sendStatus'](0x194);}return _0x4ffcbb;};}function handleError(_0x215f61,_0xbe5b08){_0xbe5b08=_0xbe5b08||0x1f4;return function(_0x377783){logger[_0x8802('0x27')](_0x377783[_0x8802('0x28')]);if(_0x377783[_0x8802('0x29')]){delete _0x377783[_0x8802('0x29')];}_0x215f61[_0x8802('0x1c')](_0xbe5b08)[_0x8802('0x2a')](_0x377783);};}exports[_0x8802('0x2b')]=function(_0x4ac8b1,_0xf705){var _0x153a26={},_0x428e44={},_0x54ec5b={'count':0x0,'rows':[]};var _0x19060e=_['map'](db['Dynamics365Field'][_0x8802('0x2c')],function(_0x6a4568){return{'name':_0x6a4568[_0x8802('0x2d')],'type':_0x6a4568[_0x8802('0x2e')][_0x8802('0x2f')]};});_0x428e44[_0x8802('0x30')]=_[_0x8802('0x31')](_0x19060e,_0x8802('0x29'));_0x428e44['query']=_[_0x8802('0x32')](_0x4ac8b1[_0x8802('0x33')]);_0x428e44[_0x8802('0x34')]=_['intersection'](_0x428e44[_0x8802('0x30')],_0x428e44[_0x8802('0x33')]);_0x153a26[_0x8802('0x35')]=_[_0x8802('0x36')](_0x428e44[_0x8802('0x30')],qs['fields'](_0x4ac8b1[_0x8802('0x33')][_0x8802('0x37')]));_0x153a26[_0x8802('0x35')]=_0x153a26[_0x8802('0x35')][_0x8802('0x38')]?_0x153a26[_0x8802('0x35')]:_0x428e44['model'];if(!_0x4ac8b1[_0x8802('0x33')][_0x8802('0x39')](_0x8802('0x3a'))){_0x153a26[_0x8802('0x20')]=qs['limit'](_0x4ac8b1[_0x8802('0x33')]['limit']);_0x153a26['offset']=qs[_0x8802('0x1e')](_0x4ac8b1[_0x8802('0x33')][_0x8802('0x1e')]);}_0x153a26[_0x8802('0x3b')]=qs[_0x8802('0x3c')](_0x4ac8b1['query'][_0x8802('0x3c')]);_0x153a26[_0x8802('0x3d')]=qs[_0x8802('0x34')](_[_0x8802('0x3e')](_0x4ac8b1[_0x8802('0x33')],_0x428e44[_0x8802('0x34')]),_0x19060e);if(_0x4ac8b1['query'][_0x8802('0x3f')]){_0x153a26[_0x8802('0x3d')]=_[_0x8802('0x40')](_0x153a26[_0x8802('0x3d')],{'$or':_[_0x8802('0x31')](_0x19060e,function(_0x4077bf){if(_0x4077bf[_0x8802('0x2e')]!==_0x8802('0x41')){var _0x1f3254={};_0x1f3254[_0x4077bf[_0x8802('0x29')]]={'$like':'%'+_0x4ac8b1[_0x8802('0x33')]['filter']+'%'};return _0x1f3254;}})});}_0x153a26=_[_0x8802('0x40')]({},_0x153a26,_0x4ac8b1[_0x8802('0x42')]);var _0xe4e5a={'where':_0x153a26['where']};return db[_0x8802('0x43')][_0x8802('0x21')](_0xe4e5a)[_0x8802('0x25')](function(_0x5d03dd){_0x54ec5b[_0x8802('0x21')]=_0x5d03dd;if(_0x4ac8b1[_0x8802('0x33')][_0x8802('0x44')]){_0x153a26['include']=[{'all':!![]}];}return db[_0x8802('0x43')][_0x8802('0x45')](_0x153a26);})[_0x8802('0x25')](function(_0x1c5158){_0x54ec5b[_0x8802('0x46')]=_0x1c5158;return _0x54ec5b;})[_0x8802('0x25')](respondWithFilteredResult(_0xf705,_0x153a26))[_0x8802('0x47')](handleError(_0xf705,null));};exports[_0x8802('0x48')]=function(_0x3a2608,_0x26e9d5){var _0x51fb98={'raw':!![],'where':{'id':_0x3a2608[_0x8802('0x49')]['id']}},_0x56296c={};_0x56296c['model']=_[_0x8802('0x32')](db[_0x8802('0x43')][_0x8802('0x2c')]);_0x56296c[_0x8802('0x33')]=_['keys'](_0x3a2608[_0x8802('0x33')]);_0x56296c[_0x8802('0x34')]=_[_0x8802('0x36')](_0x56296c[_0x8802('0x30')],_0x56296c[_0x8802('0x33')]);_0x51fb98[_0x8802('0x35')]=_['intersection'](_0x56296c[_0x8802('0x30')],qs[_0x8802('0x37')](_0x3a2608[_0x8802('0x33')][_0x8802('0x37')]));_0x51fb98['attributes']=_0x51fb98[_0x8802('0x35')][_0x8802('0x38')]?_0x51fb98[_0x8802('0x35')]:_0x56296c[_0x8802('0x30')];if(_0x3a2608[_0x8802('0x33')][_0x8802('0x44')]){_0x51fb98[_0x8802('0x4a')]=[{'all':!![]}];}_0x51fb98=_[_0x8802('0x40')]({},_0x51fb98,_0x3a2608[_0x8802('0x42')]);return db[_0x8802('0x43')][_0x8802('0x4b')](_0x51fb98)[_0x8802('0x25')](handleEntityNotFound(_0x26e9d5,null))['then'](respondWithResult(_0x26e9d5,null))['catch'](handleError(_0x26e9d5,null));};exports['create']=function(_0x201fab,_0x5a80b6){return db[_0x8802('0x43')][_0x8802('0x4c')](_0x201fab[_0x8802('0x4d')],{})[_0x8802('0x25')](respondWithResult(_0x5a80b6,0xc9))['catch'](handleError(_0x5a80b6,null));};exports['update']=function(_0x1e3a64,_0x540c68){if(_0x1e3a64[_0x8802('0x4d')]['id']){delete _0x1e3a64['body']['id'];}return db[_0x8802('0x43')][_0x8802('0x4b')]({'where':{'id':_0x1e3a64[_0x8802('0x49')]['id']}})['then'](handleEntityNotFound(_0x540c68,null))['then'](saveUpdates(_0x1e3a64['body'],null))[_0x8802('0x25')](respondWithResult(_0x540c68,null))[_0x8802('0x47')](handleError(_0x540c68,null));};exports['destroy']=function(_0xf111b9,_0x2080cd){return db['Dynamics365Field'][_0x8802('0x4b')]({'where':{'id':_0xf111b9['params']['id']}})['then'](handleEntityNotFound(_0x2080cd,null))[_0x8802('0x25')](removeEntity(_0x2080cd,null))[_0x8802('0x47')](handleError(_0x2080cd,null));};
\ No newline at end of file
+var _0x2088=['apply','update','then','destroy','stack','name','index','Dynamics365Field','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','to-csv','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range'];(function(_0x2a2c53,_0x3ea47e){var _0x3ba7e9=function(_0x3a3337){while(--_0x3a3337){_0x2a2c53['push'](_0x2a2c53['shift']());}};_0x3ba7e9(++_0x3ea47e);}(_0x2088,0x147));var _0x8208=function(_0x49a57f,_0x405f38){_0x49a57f=_0x49a57f-0x0;var _0x2fa2a5=_0x2088[_0x49a57f];return _0x2fa2a5;};'use strict';var emlformat=require(_0x8208('0x0'));var rimraf=require(_0x8208('0x1'));var zipdir=require(_0x8208('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8208('0x3'));var moment=require(_0x8208('0x4'));var BPromise=require(_0x8208('0x5'));var Mustache=require(_0x8208('0x6'));var util=require('util');var path=require(_0x8208('0x7'));var sox=require('sox');var csv=require(_0x8208('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8208('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x8208('0xa'));var deskjs=require(_0x8208('0xb'));var toCsv=require('to-csv');var querystring=require(_0x8208('0xc'));var Papa=require('papaparse');var Redis=require(_0x8208('0xd'));var authService=require(_0x8208('0xe'));var qs=require(_0x8208('0xf'));var as=require(_0x8208('0x10'));var hardwareService=require(_0x8208('0x11'));var logger=require(_0x8208('0x12'))('api');var utils=require(_0x8208('0x13'));var config=require(_0x8208('0x14'));var licenseUtil=require(_0x8208('0x15'));var db=require(_0x8208('0x16'))['db'];function respondWithStatusCode(_0x4993ba,_0x1ce5bf){_0x1ce5bf=_0x1ce5bf||0xcc;return function(_0x67d0ce){if(_0x67d0ce){return _0x4993ba[_0x8208('0x17')](_0x1ce5bf);}return _0x4993ba[_0x8208('0x18')](_0x1ce5bf)[_0x8208('0x19')]();};}function respondWithResult(_0x57d801,_0x5c5c6f){_0x5c5c6f=_0x5c5c6f||0xc8;return function(_0x637e23){if(_0x637e23){return _0x57d801[_0x8208('0x18')](_0x5c5c6f)[_0x8208('0x1a')](_0x637e23);}};}function respondWithFilteredResult(_0x14694e,_0x23320e){return function(_0x235f6a){if(_0x235f6a){var _0x58baa1=typeof _0x23320e['offset']===_0x8208('0x1b')&&typeof _0x23320e[_0x8208('0x1c')]===_0x8208('0x1b');var _0x180bfa=_0x235f6a[_0x8208('0x1d')];var _0x367269=_0x58baa1?0x0:_0x23320e[_0x8208('0x1e')];var _0x86a3b6=_0x58baa1?_0x235f6a[_0x8208('0x1d')]:_0x23320e[_0x8208('0x1e')]+_0x23320e[_0x8208('0x1c')];var _0x458fa9;if(_0x86a3b6>=_0x180bfa){_0x86a3b6=_0x180bfa;_0x458fa9=0xc8;}else{_0x458fa9=0xce;}_0x14694e['status'](_0x458fa9);return _0x14694e[_0x8208('0x1f')](_0x8208('0x20'),_0x367269+'-'+_0x86a3b6+'/'+_0x180bfa)[_0x8208('0x1a')](_0x235f6a);}return null;};}function patchUpdates(_0x25bfdd){return function(_0x485c13){try{jsonpatch[_0x8208('0x21')](_0x485c13,_0x25bfdd,!![]);}catch(_0x4a52bb){return BPromise['reject'](_0x4a52bb);}return _0x485c13['save']();};}function saveUpdates(_0x3a990b,_0x1185c8){return function(_0x5e91e5){if(_0x5e91e5){return _0x5e91e5[_0x8208('0x22')](_0x3a990b)[_0x8208('0x23')](function(_0x4824fd){return _0x4824fd;});}return null;};}function removeEntity(_0x1317d4,_0x41190f){return function(_0x55589c){if(_0x55589c){return _0x55589c[_0x8208('0x24')]()[_0x8208('0x23')](function(){_0x1317d4['status'](0xcc)[_0x8208('0x19')]();});}};}function handleEntityNotFound(_0xc00444,_0x532220){return function(_0x621de5){if(!_0x621de5){_0xc00444[_0x8208('0x17')](0x194);}return _0x621de5;};}function handleError(_0x1b4283,_0x4e674a){_0x4e674a=_0x4e674a||0x1f4;return function(_0x3bfafe){logger['error'](_0x3bfafe[_0x8208('0x25')]);if(_0x3bfafe[_0x8208('0x26')]){delete _0x3bfafe[_0x8208('0x26')];}_0x1b4283[_0x8208('0x18')](_0x4e674a)['send'](_0x3bfafe);};}exports[_0x8208('0x27')]=function(_0x1c3778,_0x5c0983){var _0x2e0622={},_0x125266={},_0x36c94c={'count':0x0,'rows':[]};var _0x27935c=_['map'](db[_0x8208('0x28')][_0x8208('0x29')],function(_0x4c7f8f){return{'name':_0x4c7f8f[_0x8208('0x2a')],'type':_0x4c7f8f[_0x8208('0x2b')]['key']};});_0x125266[_0x8208('0x2c')]=_[_0x8208('0x2d')](_0x27935c,_0x8208('0x26'));_0x125266[_0x8208('0x2e')]=_[_0x8208('0x2f')](_0x1c3778[_0x8208('0x2e')]);_0x125266[_0x8208('0x30')]=_[_0x8208('0x31')](_0x125266['model'],_0x125266[_0x8208('0x2e')]);_0x2e0622[_0x8208('0x32')]=_[_0x8208('0x31')](_0x125266[_0x8208('0x2c')],qs[_0x8208('0x33')](_0x1c3778[_0x8208('0x2e')][_0x8208('0x33')]));_0x2e0622[_0x8208('0x32')]=_0x2e0622[_0x8208('0x32')]['length']?_0x2e0622[_0x8208('0x32')]:_0x125266[_0x8208('0x2c')];if(!_0x1c3778[_0x8208('0x2e')][_0x8208('0x34')](_0x8208('0x35'))){_0x2e0622[_0x8208('0x1c')]=qs[_0x8208('0x1c')](_0x1c3778[_0x8208('0x2e')][_0x8208('0x1c')]);_0x2e0622[_0x8208('0x1e')]=qs['offset'](_0x1c3778[_0x8208('0x2e')][_0x8208('0x1e')]);}_0x2e0622[_0x8208('0x36')]=qs[_0x8208('0x37')](_0x1c3778[_0x8208('0x2e')][_0x8208('0x37')]);_0x2e0622['where']=qs[_0x8208('0x30')](_[_0x8208('0x38')](_0x1c3778[_0x8208('0x2e')],_0x125266[_0x8208('0x30')]),_0x27935c);if(_0x1c3778[_0x8208('0x2e')][_0x8208('0x39')]){_0x2e0622['where']=_[_0x8208('0x3a')](_0x2e0622['where'],{'$or':_[_0x8208('0x2d')](_0x27935c,function(_0x488831){if(_0x488831[_0x8208('0x2b')]!==_0x8208('0x3b')){var _0x496755={};_0x496755[_0x488831[_0x8208('0x26')]]={'$like':'%'+_0x1c3778[_0x8208('0x2e')]['filter']+'%'};return _0x496755;}})});}_0x2e0622=_[_0x8208('0x3a')]({},_0x2e0622,_0x1c3778[_0x8208('0x3c')]);var _0x4122f9={'where':_0x2e0622['where']};return db[_0x8208('0x28')]['count'](_0x4122f9)[_0x8208('0x23')](function(_0x483783){_0x36c94c[_0x8208('0x1d')]=_0x483783;if(_0x1c3778['query'][_0x8208('0x3d')]){_0x2e0622[_0x8208('0x3e')]=[{'all':!![]}];}return db['Dynamics365Field'][_0x8208('0x3f')](_0x2e0622);})[_0x8208('0x23')](function(_0x186d57){_0x36c94c[_0x8208('0x40')]=_0x186d57;return _0x36c94c;})[_0x8208('0x23')](respondWithFilteredResult(_0x5c0983,_0x2e0622))[_0x8208('0x41')](handleError(_0x5c0983,null));};exports[_0x8208('0x42')]=function(_0x329906,_0x9c8382){var _0x1fcc13={'raw':!![],'where':{'id':_0x329906[_0x8208('0x43')]['id']}},_0x1950e5={};_0x1950e5[_0x8208('0x2c')]=_[_0x8208('0x2f')](db[_0x8208('0x28')]['rawAttributes']);_0x1950e5[_0x8208('0x2e')]=_[_0x8208('0x2f')](_0x329906[_0x8208('0x2e')]);_0x1950e5[_0x8208('0x30')]=_[_0x8208('0x31')](_0x1950e5[_0x8208('0x2c')],_0x1950e5[_0x8208('0x2e')]);_0x1fcc13[_0x8208('0x32')]=_[_0x8208('0x31')](_0x1950e5[_0x8208('0x2c')],qs[_0x8208('0x33')](_0x329906[_0x8208('0x2e')]['fields']));_0x1fcc13[_0x8208('0x32')]=_0x1fcc13['attributes'][_0x8208('0x44')]?_0x1fcc13[_0x8208('0x32')]:_0x1950e5[_0x8208('0x2c')];if(_0x329906[_0x8208('0x2e')]['includeAll']){_0x1fcc13[_0x8208('0x3e')]=[{'all':!![]}];}_0x1fcc13=_[_0x8208('0x3a')]({},_0x1fcc13,_0x329906[_0x8208('0x3c')]);return db[_0x8208('0x28')][_0x8208('0x45')](_0x1fcc13)[_0x8208('0x23')](handleEntityNotFound(_0x9c8382,null))['then'](respondWithResult(_0x9c8382,null))[_0x8208('0x41')](handleError(_0x9c8382,null));};exports[_0x8208('0x46')]=function(_0x4982ff,_0x24e974){return db[_0x8208('0x28')][_0x8208('0x46')](_0x4982ff['body'],{})['then'](respondWithResult(_0x24e974,0xc9))[_0x8208('0x41')](handleError(_0x24e974,null));};exports['update']=function(_0x2e2343,_0xadcc1f){if(_0x2e2343[_0x8208('0x47')]['id']){delete _0x2e2343[_0x8208('0x47')]['id'];}return db[_0x8208('0x28')][_0x8208('0x45')]({'where':{'id':_0x2e2343[_0x8208('0x43')]['id']}})[_0x8208('0x23')](handleEntityNotFound(_0xadcc1f,null))[_0x8208('0x23')](saveUpdates(_0x2e2343[_0x8208('0x47')],null))[_0x8208('0x23')](respondWithResult(_0xadcc1f,null))[_0x8208('0x41')](handleError(_0xadcc1f,null));};exports[_0x8208('0x24')]=function(_0x19b4bf,_0x3d1a3b){return db[_0x8208('0x28')][_0x8208('0x45')]({'where':{'id':_0x19b4bf[_0x8208('0x43')]['id']}})[_0x8208('0x23')](handleEntityNotFound(_0x3d1a3b,null))[_0x8208('0x23')](removeEntity(_0x3d1a3b,null))[_0x8208('0x41')](handleError(_0x3d1a3b,null));};
\ No newline at end of file
index 90570fa..b449eaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x665c=['path','rimraf','exports','define','Dynamics365Field','idField','FieldId','lodash','util','../../config/logger','moment','request-promise'];(function(_0x4ed520,_0x21be63){var _0x4415a6=function(_0x14b151){while(--_0x14b151){_0x4ed520['push'](_0x4ed520['shift']());}};_0x4415a6(++_0x21be63);}(_0x665c,0xa3));var _0xc665=function(_0x43d5b5,_0xbce44){_0x43d5b5=_0x43d5b5-0x0;var _0xc22500=_0x665c[_0x43d5b5];return _0xc22500;};'use strict';var _=require(_0xc665('0x0'));var util=require(_0xc665('0x1'));var logger=require(_0xc665('0x2'))('api');var moment=require(_0xc665('0x3'));var BPromise=require('bluebird');var rp=require(_0xc665('0x4'));var fs=require('fs');var path=require(_0xc665('0x5'));var rimraf=require(_0xc665('0x6'));var config=require('../../config/environment');var attributes=require('./intDynamics365Field.attributes');module[_0xc665('0x7')]=function(_0x24342e,_0xd3bbf5){return _0x24342e[_0xc665('0x8')](_0xc665('0x9'),attributes,{'tableName':'int_dynamics365_fields','paranoid':![],'indexes':[{'name':'dynamics365_unique_index','fields':[_0xc665('0xa'),_0xc665('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x04de=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intDynamics365Field.attributes','exports','define','Dynamics365Field','int_dynamics365_fields','idField','FieldId','lodash','util'];(function(_0x3999a0,_0x5befea){var _0x3e8d91=function(_0x1ac09e){while(--_0x1ac09e){_0x3999a0['push'](_0x3999a0['shift']());}};_0x3e8d91(++_0x5befea);}(_0x04de,0x19e));var _0xe04d=function(_0x5e269c,_0x1f22dc){_0x5e269c=_0x5e269c-0x0;var _0xefd44e=_0x04de[_0x5e269c];return _0xefd44e;};'use strict';var _=require(_0xe04d('0x0'));var util=require(_0xe04d('0x1'));var logger=require(_0xe04d('0x2'))(_0xe04d('0x3'));var moment=require(_0xe04d('0x4'));var BPromise=require(_0xe04d('0x5'));var rp=require(_0xe04d('0x6'));var fs=require('fs');var path=require(_0xe04d('0x7'));var rimraf=require(_0xe04d('0x8'));var config=require('../../config/environment');var attributes=require(_0xe04d('0x9'));module[_0xe04d('0xa')]=function(_0x265ede,_0x2d652a){return _0x265ede[_0xe04d('0xb')](_0xe04d('0xc'),attributes,{'tableName':_0xe04d('0xd'),'paranoid':![],'indexes':[{'name':'dynamics365_unique_index','fields':[_0xe04d('0xe'),_0xe04d('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index ec2769c..3ef3cb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa50d=['Dynamics365Field,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','request\x20sent','error','code'];(function(_0xc6be3a,_0x540e05){var _0x56a310=function(_0x50a144){while(--_0x50a144){_0xc6be3a['push'](_0xc6be3a['shift']());}};_0x56a310(++_0x540e05);}(_0xa50d,0xcb));var _0xda50=function(_0x120dea,_0x62daa3){_0x120dea=_0x120dea-0x0;var _0x2ba797=_0xa50d[_0x120dea];return _0x2ba797;};'use strict';var _=require(_0xda50('0x0'));var util=require(_0xda50('0x1'));var moment=require(_0xda50('0x2'));var BPromise=require(_0xda50('0x3'));var rs=require(_0xda50('0x4'));var fs=require('fs');var Redis=require(_0xda50('0x5'));var db=require(_0xda50('0x6'))['db'];var utils=require(_0xda50('0x7'));var logger=require(_0xda50('0x8'))(_0xda50('0x9'));var config=require(_0xda50('0xa'));var jayson=require(_0xda50('0xb'));var client=jayson[_0xda50('0xc')][_0xda50('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x2d5758,_0x23759b,_0x573482){return new BPromise(function(_0x42c6f5,_0x1d997d){return client[_0xda50('0xe')](_0x2d5758,_0x573482)[_0xda50('0xf')](function(_0x105bdf){logger[_0xda50('0x10')]('Dynamics365Field,\x20%s,\x20%s',_0x23759b,'request\x20sent');logger[_0xda50('0x11')](_0xda50('0x12'),_0x23759b,_0xda50('0x13'),JSON['stringify'](_0x105bdf));if(_0x105bdf[_0xda50('0x14')]){if(_0x105bdf['error'][_0xda50('0x15')]===0x1f4){logger[_0xda50('0x14')](_0xda50('0x16'),_0x23759b,_0x105bdf[_0xda50('0x14')][_0xda50('0x17')]);return _0x1d997d(_0x105bdf['error'][_0xda50('0x17')]);}logger[_0xda50('0x14')](_0xda50('0x16'),_0x23759b,_0x105bdf['error']['message']);return _0x42c6f5(_0x105bdf[_0xda50('0x14')][_0xda50('0x17')]);}else{logger[_0xda50('0x10')](_0xda50('0x16'),_0x23759b,_0xda50('0x13'));_0x42c6f5(_0x105bdf['result']['message']);}})[_0xda50('0x18')](function(_0x397812){logger[_0xda50('0x14')]('Dynamics365Field,\x20%s,\x20%s',_0x23759b,_0x397812);_0x1d997d(_0x397812);});});}
\ No newline at end of file
+var _0x6bc6=['randomstring','ioredis','../../config/logger','rpc','client','http','request','then','info','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','error','code','message','Dynamics365Field,\x20%s,\x20%s','catch','lodash','moment','bluebird'];(function(_0x5c244b,_0x3eab94){var _0x52f7cb=function(_0x28a24f){while(--_0x28a24f){_0x5c244b['push'](_0x5c244b['shift']());}};_0x52f7cb(++_0x3eab94);}(_0x6bc6,0xd9));var _0x66bc=function(_0x33f1f1,_0x3f2a10){_0x33f1f1=_0x33f1f1-0x0;var _0x3052d4=_0x6bc6[_0x33f1f1];return _0x3052d4;};'use strict';var _=require(_0x66bc('0x0'));var util=require('util');var moment=require(_0x66bc('0x1'));var BPromise=require(_0x66bc('0x2'));var rs=require(_0x66bc('0x3'));var fs=require('fs');var Redis=require(_0x66bc('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x66bc('0x5'))(_0x66bc('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x66bc('0x7')][_0x66bc('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x51ab0a,_0x3e5e2f,_0x9b2bc){return new BPromise(function(_0x1e975b,_0x59a7e6){return client[_0x66bc('0x9')](_0x51ab0a,_0x9b2bc)[_0x66bc('0xa')](function(_0x2a696e){logger[_0x66bc('0xb')]('Dynamics365Field,\x20%s,\x20%s',_0x3e5e2f,_0x66bc('0xc'));logger[_0x66bc('0xd')](_0x66bc('0xe'),_0x3e5e2f,_0x66bc('0xc'),JSON['stringify'](_0x2a696e));if(_0x2a696e[_0x66bc('0xf')]){if(_0x2a696e[_0x66bc('0xf')][_0x66bc('0x10')]===0x1f4){logger[_0x66bc('0xf')]('Dynamics365Field,\x20%s,\x20%s',_0x3e5e2f,_0x2a696e[_0x66bc('0xf')]['message']);return _0x59a7e6(_0x2a696e[_0x66bc('0xf')][_0x66bc('0x11')]);}logger[_0x66bc('0xf')]('Dynamics365Field,\x20%s,\x20%s',_0x3e5e2f,_0x2a696e[_0x66bc('0xf')]['message']);return _0x1e975b(_0x2a696e['error'][_0x66bc('0x11')]);}else{logger[_0x66bc('0xb')](_0x66bc('0x12'),_0x3e5e2f,_0x66bc('0xc'));_0x1e975b(_0x2a696e['result']['message']);}})[_0x66bc('0x13')](function(_0x21f7ed){logger['error'](_0x66bc('0x12'),_0x3e5e2f,_0x21f7ed);_0x59a7e6(_0x21f7ed);});});}
\ No newline at end of file
index ebbc6a2..b292dc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2833=['addConfiguration','put','/:id','update','delete','destroy','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','index','/:id/configurations','getConfigurations','/:id/fields','getFields','post','isAuthenticated'];(function(_0x24be50,_0x3535df){var _0x5c9fa9=function(_0x29b32b){while(--_0x29b32b){_0x24be50['push'](_0x24be50['shift']());}};_0x5c9fa9(++_0x3535df);}(_0x2833,0xec));var _0x3283=function(_0x39b77d,_0x1af2f7){_0x39b77d=_0x39b77d-0x0;var _0x745673=_0x2833[_0x39b77d];return _0x745673;};'use strict';var multer=require('multer');var util=require(_0x3283('0x0'));var path=require(_0x3283('0x1'));var timeout=require(_0x3283('0x2'));var express=require(_0x3283('0x3'));var router=express['Router']();var fs_extra=require(_0x3283('0x4'));var auth=require(_0x3283('0x5'));var interaction=require(_0x3283('0x6'));var config=require(_0x3283('0x7'));var controller=require(_0x3283('0x8'));router[_0x3283('0x9')]('/',auth['isAuthenticated'](),controller[_0x3283('0xa')]);router[_0x3283('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x3283('0x9')](_0x3283('0xb'),auth['isAuthenticated'](),controller[_0x3283('0xc')]);router[_0x3283('0x9')](_0x3283('0xd'),auth['isAuthenticated'](),controller[_0x3283('0xe')]);router[_0x3283('0xf')]('/',auth[_0x3283('0x10')](),controller['create']);router[_0x3283('0xf')](_0x3283('0xb'),auth[_0x3283('0x10')](),controller[_0x3283('0x11')]);router[_0x3283('0x12')](_0x3283('0x13'),auth['isAuthenticated'](),controller[_0x3283('0x14')]);router[_0x3283('0x15')](_0x3283('0x13'),auth['isAuthenticated'](),controller[_0x3283('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x27f8=['getConfigurations','/:id/fields','getFields','post','create','/:id/configurations','addConfiguration','put','update','delete','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','index','/:id','isAuthenticated'];(function(_0x2e4aa2,_0x11956a){var _0x5e6092=function(_0x4c12c2){while(--_0x4c12c2){_0x2e4aa2['push'](_0x2e4aa2['shift']());}};_0x5e6092(++_0x11956a);}(_0x27f8,0xa4));var _0x827f=function(_0x76faa4,_0x4a8b9c){_0x76faa4=_0x76faa4-0x0;var _0x5cab58=_0x27f8[_0x76faa4];return _0x5cab58;};'use strict';var multer=require(_0x827f('0x0'));var util=require('util');var path=require(_0x827f('0x1'));var timeout=require(_0x827f('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x827f('0x3'));var auth=require(_0x827f('0x4'));var interaction=require(_0x827f('0x5'));var config=require(_0x827f('0x6'));var controller=require(_0x827f('0x7'));router[_0x827f('0x8')]('/',auth['isAuthenticated'](),controller[_0x827f('0x9')]);router[_0x827f('0x8')](_0x827f('0xa'),auth['isAuthenticated'](),controller['show']);router['get']('/:id/configurations',auth[_0x827f('0xb')](),controller[_0x827f('0xc')]);router['get'](_0x827f('0xd'),auth[_0x827f('0xb')](),controller[_0x827f('0xe')]);router[_0x827f('0xf')]('/',auth[_0x827f('0xb')](),controller[_0x827f('0x10')]);router[_0x827f('0xf')](_0x827f('0x11'),auth[_0x827f('0xb')](),controller[_0x827f('0x12')]);router[_0x827f('0x13')]('/:id',auth[_0x827f('0xb')](),controller[_0x827f('0x14')]);router[_0x827f('0x15')](_0x827f('0xa'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index c2b2433..2b885d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a07=['sequelize','exports','STRING','remoteUri'];(function(_0x47604d,_0x15a014){var _0x388e4c=function(_0x42a446){while(--_0x42a446){_0x47604d['push'](_0x47604d['shift']());}};_0x388e4c(++_0x15a014);}(_0x2a07,0x74));var _0x72a0=function(_0x4e0b8c,_0x443f31){_0x4e0b8c=_0x4e0b8c-0x0;var _0x633ecc=_0x2a07[_0x4e0b8c];return _0x633ecc;};'use strict';var Sequelize=require(_0x72a0('0x0'));module[_0x72a0('0x1')]={'name':{'type':Sequelize[_0x72a0('0x2')]},'description':{'type':Sequelize[_0x72a0('0x2')]},'username':{'type':Sequelize[_0x72a0('0x2')],'unique':'username'},'apiKey':{'type':Sequelize[_0x72a0('0x2')]},'remoteUri':{'type':Sequelize[_0x72a0('0x2')],'unique':_0x72a0('0x3')},'serverUrl':{'type':Sequelize[_0x72a0('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x160f=['sequelize','exports','STRING','username','remoteUri'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x160f,0x1ef));var _0xf160=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x160f[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xf160('0x0'));module[_0xf160('0x1')]={'name':{'type':Sequelize[_0xf160('0x2')]},'description':{'type':Sequelize[_0xf160('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0xf160('0x3')},'apiKey':{'type':Sequelize[_0xf160('0x2')]},'remoteUri':{'type':Sequelize[_0xf160('0x2')],'unique':_0xf160('0x4')},'serverUrl':{'type':Sequelize[_0xf160('0x2')],'allowNull':![]}};
\ No newline at end of file
index ad9f826..a367403 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd6f=['keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','then','rows','catch','show','params','length','find','create','body','getConfigurations','FreshdeskConfiguration','order','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshdeskField','getFields','remoteUri','apiKey','slice','substring','lastIndexOf','GET','format','%s/%s','api/v2/ticket_fields','Basic\x20%s','toString','requester','subject','description','priority','group','source','ticket_type','company','includes','custom_text','custom_dropdown','label','default','choices','capitalize','test','statusCode','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','undefined','limit','count','offset','json','apply','reject','update','end','stack','name','send','index','map','FreshdeskAccount','rawAttributes','fieldName','type','model','query'];(function(_0x2c261e,_0x46c697){var _0x1525d4=function(_0x67ba21){while(--_0x67ba21){_0x2c261e['push'](_0x2c261e['shift']());}};_0x1525d4(++_0x46c697);}(_0xfd6f,0x19d));var _0xffd6=function(_0x509a23,_0x406dfe){_0x509a23=_0x509a23-0x0;var _0x5de1cf=_0xfd6f[_0x509a23];return _0x5de1cf;};'use strict';var emlformat=require(_0xffd6('0x0'));var rimraf=require(_0xffd6('0x1'));var zipdir=require(_0xffd6('0x2'));var jsonpatch=require(_0xffd6('0x3'));var rp=require(_0xffd6('0x4'));var moment=require('moment');var BPromise=require(_0xffd6('0x5'));var Mustache=require(_0xffd6('0x6'));var util=require(_0xffd6('0x7'));var path=require(_0xffd6('0x8'));var sox=require('sox');var csv=require(_0xffd6('0x9'));var ejs=require(_0xffd6('0xa'));var fs=require('fs');var fs_extra=require(_0xffd6('0xb'));var _=require(_0xffd6('0xc'));var squel=require('squel');var crypto=require(_0xffd6('0xd'));var jsforce=require(_0xffd6('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xffd6('0xf'));var Papa=require(_0xffd6('0x10'));var Redis=require(_0xffd6('0x11'));var authService=require(_0xffd6('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xffd6('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xffd6('0x14'));var utils=require(_0xffd6('0x15'));var config=require(_0xffd6('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xffd6('0x17'))['db'];var integrations=require(_0xffd6('0x18'));function respondWithStatusCode(_0x59d2d8,_0x12cbe9){_0x12cbe9=_0x12cbe9||0xcc;return function(_0x1bef90){if(_0x1bef90){return _0x59d2d8[_0xffd6('0x19')](_0x12cbe9);}return _0x59d2d8[_0xffd6('0x1a')](_0x12cbe9)['end']();};}function respondWithResult(_0x5f4765,_0x26ef4){_0x26ef4=_0x26ef4||0xc8;return function(_0x345c44){if(_0x345c44){return _0x5f4765[_0xffd6('0x1a')](_0x26ef4)['json'](_0x345c44);}};}function respondWithFilteredResult(_0x17114f,_0x131661){return function(_0x57e34e){if(_0x57e34e){var _0x39c0a6=typeof _0x131661['offset']===_0xffd6('0x1b')&&typeof _0x131661[_0xffd6('0x1c')]===_0xffd6('0x1b');var _0xb4cfe2=_0x57e34e[_0xffd6('0x1d')];var _0x57af76=_0x39c0a6?0x0:_0x131661[_0xffd6('0x1e')];var _0x39938d=_0x39c0a6?_0x57e34e[_0xffd6('0x1d')]:_0x131661[_0xffd6('0x1e')]+_0x131661['limit'];var _0x4e0446;if(_0x39938d>=_0xb4cfe2){_0x39938d=_0xb4cfe2;_0x4e0446=0xc8;}else{_0x4e0446=0xce;}_0x17114f[_0xffd6('0x1a')](_0x4e0446);return _0x17114f['set']('Content-Range',_0x57af76+'-'+_0x39938d+'/'+_0xb4cfe2)[_0xffd6('0x1f')](_0x57e34e);}return null;};}function patchUpdates(_0x1a7102){return function(_0x3240b1){try{jsonpatch[_0xffd6('0x20')](_0x3240b1,_0x1a7102,!![]);}catch(_0x191642){return BPromise[_0xffd6('0x21')](_0x191642);}return _0x3240b1['save']();};}function saveUpdates(_0x44e5f5,_0x26daf2){return function(_0x531b45){if(_0x531b45){return _0x531b45[_0xffd6('0x22')](_0x44e5f5)['then'](function(_0x270704){return _0x270704;});}return null;};}function removeEntity(_0x207f18,_0x18fd0f){return function(_0x5e0e4c){if(_0x5e0e4c){return _0x5e0e4c['destroy']()['then'](function(){_0x207f18[_0xffd6('0x1a')](0xcc)[_0xffd6('0x23')]();});}};}function handleEntityNotFound(_0x17218b,_0x55c752){return function(_0x423bb8){if(!_0x423bb8){_0x17218b[_0xffd6('0x19')](0x194);}return _0x423bb8;};}function handleError(_0x12352c,_0xdec862){_0xdec862=_0xdec862||0x1f4;return function(_0x3789f8){logger['error'](_0x3789f8[_0xffd6('0x24')]);if(_0x3789f8[_0xffd6('0x25')]){delete _0x3789f8[_0xffd6('0x25')];}_0x12352c[_0xffd6('0x1a')](_0xdec862)[_0xffd6('0x26')](_0x3789f8);};}exports[_0xffd6('0x27')]=function(_0x2f3645,_0x902b39){var _0x23bd05={},_0x4440f8={},_0x44276a={'count':0x0,'rows':[]};var _0x4d0901=_[_0xffd6('0x28')](db[_0xffd6('0x29')][_0xffd6('0x2a')],function(_0x35328a){return{'name':_0x35328a[_0xffd6('0x2b')],'type':_0x35328a[_0xffd6('0x2c')]['key']};});_0x4440f8[_0xffd6('0x2d')]=_[_0xffd6('0x28')](_0x4d0901,_0xffd6('0x25'));_0x4440f8[_0xffd6('0x2e')]=_[_0xffd6('0x2f')](_0x2f3645[_0xffd6('0x2e')]);_0x4440f8[_0xffd6('0x30')]=_[_0xffd6('0x31')](_0x4440f8[_0xffd6('0x2d')],_0x4440f8[_0xffd6('0x2e')]);_0x23bd05[_0xffd6('0x32')]=_[_0xffd6('0x31')](_0x4440f8['model'],qs[_0xffd6('0x33')](_0x2f3645[_0xffd6('0x2e')][_0xffd6('0x33')]));_0x23bd05['attributes']=_0x23bd05['attributes']['length']?_0x23bd05[_0xffd6('0x32')]:_0x4440f8[_0xffd6('0x2d')];if(!_0x2f3645[_0xffd6('0x2e')][_0xffd6('0x34')](_0xffd6('0x35'))){_0x23bd05[_0xffd6('0x1c')]=qs[_0xffd6('0x1c')](_0x2f3645['query'][_0xffd6('0x1c')]);_0x23bd05['offset']=qs[_0xffd6('0x1e')](_0x2f3645[_0xffd6('0x2e')][_0xffd6('0x1e')]);}_0x23bd05['order']=qs[_0xffd6('0x36')](_0x2f3645[_0xffd6('0x2e')]['sort']);_0x23bd05[_0xffd6('0x37')]=qs['filters'](_[_0xffd6('0x38')](_0x2f3645[_0xffd6('0x2e')],_0x4440f8[_0xffd6('0x30')]),_0x4d0901);if(_0x2f3645[_0xffd6('0x2e')][_0xffd6('0x39')]){_0x23bd05[_0xffd6('0x37')]=_[_0xffd6('0x3a')](_0x23bd05[_0xffd6('0x37')],{'$or':_[_0xffd6('0x28')](_0x4d0901,function(_0x4b91fa){if(_0x4b91fa[_0xffd6('0x2c')]!==_0xffd6('0x3b')){var _0x27d0c5={};_0x27d0c5[_0x4b91fa[_0xffd6('0x25')]]={'$like':'%'+_0x2f3645[_0xffd6('0x2e')][_0xffd6('0x39')]+'%'};return _0x27d0c5;}})});}_0x23bd05=_[_0xffd6('0x3a')]({},_0x23bd05,_0x2f3645[_0xffd6('0x3c')]);var _0x2abf19={'where':_0x23bd05[_0xffd6('0x37')]};return db[_0xffd6('0x29')]['count'](_0x2abf19)['then'](function(_0x1bdbc0){_0x44276a[_0xffd6('0x1d')]=_0x1bdbc0;if(_0x2f3645['query'][_0xffd6('0x3d')]){_0x23bd05[_0xffd6('0x3e')]=[{'all':!![]}];}return db[_0xffd6('0x29')][_0xffd6('0x3f')](_0x23bd05);})[_0xffd6('0x40')](function(_0x359998){_0x44276a[_0xffd6('0x41')]=_0x359998;return _0x44276a;})[_0xffd6('0x40')](respondWithFilteredResult(_0x902b39,_0x23bd05))[_0xffd6('0x42')](handleError(_0x902b39,null));};exports[_0xffd6('0x43')]=function(_0x297d05,_0x3791be){var _0x1b680a={'raw':![],'where':{'id':_0x297d05[_0xffd6('0x44')]['id']}},_0x3b5d60={};_0x3b5d60[_0xffd6('0x2d')]=_['keys'](db['FreshdeskAccount']['rawAttributes']);_0x3b5d60[_0xffd6('0x2e')]=_[_0xffd6('0x2f')](_0x297d05[_0xffd6('0x2e')]);_0x3b5d60['filters']=_['intersection'](_0x3b5d60['model'],_0x3b5d60['query']);_0x1b680a[_0xffd6('0x32')]=_[_0xffd6('0x31')](_0x3b5d60[_0xffd6('0x2d')],qs[_0xffd6('0x33')](_0x297d05[_0xffd6('0x2e')][_0xffd6('0x33')]));_0x1b680a[_0xffd6('0x32')]=_0x1b680a[_0xffd6('0x32')][_0xffd6('0x45')]?_0x1b680a[_0xffd6('0x32')]:_0x3b5d60[_0xffd6('0x2d')];if(_0x297d05[_0xffd6('0x2e')][_0xffd6('0x3d')]){_0x1b680a[_0xffd6('0x3e')]=[{'all':!![]}];}_0x1b680a=_['merge']({},_0x1b680a,_0x297d05[_0xffd6('0x3c')]);return db[_0xffd6('0x29')][_0xffd6('0x46')](_0x1b680a)[_0xffd6('0x40')](handleEntityNotFound(_0x3791be,null))[_0xffd6('0x40')](respondWithResult(_0x3791be,null))['catch'](handleError(_0x3791be,null));};exports[_0xffd6('0x47')]=function(_0x2d0a51,_0x5d81b5){return db[_0xffd6('0x29')][_0xffd6('0x47')](_0x2d0a51[_0xffd6('0x48')],{})[_0xffd6('0x40')](respondWithResult(_0x5d81b5,0xc9))[_0xffd6('0x42')](handleError(_0x5d81b5,null));};exports[_0xffd6('0x22')]=function(_0x17e609,_0x1930f9){if(_0x17e609[_0xffd6('0x48')]['id']){delete _0x17e609['body']['id'];}return db[_0xffd6('0x29')][_0xffd6('0x46')]({'where':{'id':_0x17e609['params']['id']}})[_0xffd6('0x40')](handleEntityNotFound(_0x1930f9,null))[_0xffd6('0x40')](saveUpdates(_0x17e609[_0xffd6('0x48')],null))['then'](respondWithResult(_0x1930f9,null))[_0xffd6('0x42')](handleError(_0x1930f9,null));};exports['destroy']=function(_0x48366a,_0x5ebed3){return db[_0xffd6('0x29')]['find']({'where':{'id':_0x48366a[_0xffd6('0x44')]['id']}})[_0xffd6('0x40')](handleEntityNotFound(_0x5ebed3,null))[_0xffd6('0x40')](removeEntity(_0x5ebed3,null))['catch'](handleError(_0x5ebed3,null));};exports[_0xffd6('0x49')]=function(_0x50aa80,_0x124912,_0x2b377e){var _0x295646={};var _0x3c1b27={};var _0x7dc3ae;var _0x2a27d9;return db[_0xffd6('0x29')]['findOne']({'where':{'id':_0x50aa80[_0xffd6('0x44')]['id']}})[_0xffd6('0x40')](handleEntityNotFound(_0x124912,null))[_0xffd6('0x40')](function(_0xa788ab){if(_0xa788ab){_0x7dc3ae=_0xa788ab;_0x3c1b27[_0xffd6('0x2d')]=_[_0xffd6('0x2f')](db[_0xffd6('0x4a')]['rawAttributes']);_0x3c1b27[_0xffd6('0x2e')]=_[_0xffd6('0x2f')](_0x50aa80[_0xffd6('0x2e')]);_0x3c1b27[_0xffd6('0x30')]=_['intersection'](_0x3c1b27[_0xffd6('0x2d')],_0x3c1b27[_0xffd6('0x2e')]);_0x295646[_0xffd6('0x32')]=_[_0xffd6('0x31')](_0x3c1b27[_0xffd6('0x2d')],qs[_0xffd6('0x33')](_0x50aa80[_0xffd6('0x2e')][_0xffd6('0x33')]));_0x295646[_0xffd6('0x32')]=_0x295646['attributes'][_0xffd6('0x45')]?_0x295646[_0xffd6('0x32')]:_0x3c1b27[_0xffd6('0x2d')];_0x295646[_0xffd6('0x4b')]=qs[_0xffd6('0x36')](_0x50aa80[_0xffd6('0x2e')][_0xffd6('0x36')]);_0x295646['where']=qs[_0xffd6('0x30')](_[_0xffd6('0x38')](_0x50aa80[_0xffd6('0x2e')],_0x3c1b27[_0xffd6('0x30')]));if(_0x50aa80[_0xffd6('0x2e')][_0xffd6('0x39')]){_0x295646['where']=_[_0xffd6('0x3a')](_0x295646[_0xffd6('0x37')],{'$or':_[_0xffd6('0x28')](_0x295646[_0xffd6('0x32')],function(_0x28f1df){var _0x12aff9={};_0x12aff9[_0x28f1df]={'$like':'%'+_0x50aa80[_0xffd6('0x2e')][_0xffd6('0x39')]+'%'};return _0x12aff9;})});}_0x295646=_[_0xffd6('0x3a')]({},_0x295646,_0x50aa80[_0xffd6('0x3c')]);return _0x7dc3ae[_0xffd6('0x49')](_0x295646);}})['then'](function(_0x461771){if(_0x461771){_0x2a27d9=_0x461771['length'];if(!_0x50aa80['query'][_0xffd6('0x34')]('nolimit')){_0x295646[_0xffd6('0x1c')]=qs['limit'](_0x50aa80[_0xffd6('0x2e')]['limit']);_0x295646[_0xffd6('0x1e')]=qs['offset'](_0x50aa80[_0xffd6('0x2e')][_0xffd6('0x1e')]);}return _0x7dc3ae[_0xffd6('0x49')](_0x295646);}})[_0xffd6('0x40')](function(_0x4f0db0){if(_0x4f0db0){return _0x4f0db0?{'count':_0x2a27d9,'rows':_0x4f0db0}:null;}})[_0xffd6('0x40')](respondWithResult(_0x124912,null))[_0xffd6('0x42')](handleError(_0x124912,null));};exports['addConfiguration']=function(_0x438264,_0x1c324c,_0x25b1a2){if(_0x438264['body']['id']){delete _0x438264['body']['id'];}return db['FreshdeskAccount'][_0xffd6('0x4c')]({'where':{'id':_0x438264['params']['id']}})['then'](handleEntityNotFound(_0x1c324c,null))[_0xffd6('0x40')](function(_0x8d5a9){if(_0x8d5a9){_0x438264[_0xffd6('0x48')][_0xffd6('0x4d')]=_0x8d5a9['id'];_0x438264['body'][_0xffd6('0x4e')]=integrations[_0xffd6('0x4f')](_0x438264['body'][_0xffd6('0x50')],_0x438264[_0xffd6('0x48')]['type']);_0x438264[_0xffd6('0x48')][_0xffd6('0x51')]=integrations[_0xffd6('0x52')](_0x438264[_0xffd6('0x48')][_0xffd6('0x50')],_0x438264[_0xffd6('0x48')]['type']);return db[_0xffd6('0x4a')]['create'](_0x438264[_0xffd6('0x48')],{'include':[{'model':db[_0xffd6('0x53')],'as':'Subjects'},{'model':db[_0xffd6('0x53')],'as':_0xffd6('0x51')}]});}return null;})[_0xffd6('0x40')](respondWithResult(_0x1c324c,null))[_0xffd6('0x42')](handleError(_0x1c324c,null));};exports[_0xffd6('0x54')]=function(_0x3e9b21,_0x8b8b47,_0x4c115e){var _0x4bf7a1='';return db['FreshdeskAccount'][_0xffd6('0x4c')]({'where':{'id':_0x3e9b21[_0xffd6('0x44')]['id']},'attributes':['id',_0xffd6('0x55'),_0xffd6('0x56')]})[_0xffd6('0x40')](handleEntityNotFound(_0x8b8b47,null))[_0xffd6('0x40')](function(_0x431a6e){if(_0x431a6e){_0x4bf7a1=_0x431a6e[_0xffd6('0x55')];var _0x9bd712=_0x4bf7a1[_0xffd6('0x57')](-0x1);if(_0x9bd712==='/'){_0x4bf7a1=_0x4bf7a1[_0xffd6('0x58')](0x0,_0x4bf7a1[_0xffd6('0x59')](_0x9bd712));}return rp({'method':_0xffd6('0x5a'),'uri':util[_0xffd6('0x5b')](_0xffd6('0x5c'),_0x4bf7a1,_0xffd6('0x5d')),'headers':{'Authorization':util[_0xffd6('0x5b')](_0xffd6('0x5e'),new Buffer(util[_0xffd6('0x5b')]('%s:X',_0x431a6e[_0xffd6('0x56')]))[_0xffd6('0x5f')]('base64'))},'json':!![]});}})[_0xffd6('0x40')](function(_0x2c0592){if(_0x2c0592){var _0x5c9382=[_0xffd6('0x60'),_0xffd6('0x61'),'agent',_0xffd6('0x62'),'status',_0xffd6('0x63'),_0xffd6('0x64'),_0xffd6('0x65'),_0xffd6('0x66'),_0xffd6('0x64'),_0xffd6('0x67')];_['remove'](_0x2c0592,function(_0x23e630){return _0x5c9382[_0xffd6('0x68')](_0x23e630[_0xffd6('0x25')])||!_0x23e630['default']&&_0x23e630['type']!==_0xffd6('0x69')&&_0x23e630[_0xffd6('0x2c')]!==_0xffd6('0x6a');});return{'count':_0x2c0592[_0xffd6('0x45')],'rows':_['map'](_0x2c0592,function(_0x278cbf){return{'id':_0x278cbf[_0xffd6('0x25')],'name':_0x278cbf[_0xffd6('0x6b')],'custom':!_0x278cbf[_0xffd6('0x6c')],'options':_0x278cbf[_0xffd6('0x6d')]?_[_0xffd6('0x28')](_0x278cbf[_0xffd6('0x6d')],function(_0xbc3d41){return{'name':_[_0xffd6('0x6e')](_0xbc3d41),'value':_0xbc3d41};}):[]};})};}})[_0xffd6('0x40')](respondWithResult(_0x8b8b47,null))[_0xffd6('0x42')](function(_0x5b1ade){var _0x114f90=_0x3e9b21[_0xffd6('0x2e')][_0xffd6('0x6f')]?0x1f4:_0x5b1ade[_0xffd6('0x70')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0xffd6('0x54'),_0x114f90,JSON[_0xffd6('0x71')](_0x5b1ade));delete _0x5b1ade['name'];if(_0x114f90===0x191){_0x114f90=0x190;}_0x8b8b47[_0xffd6('0x1a')](_0x114f90)[_0xffd6('0x26')](_0x3e9b21[_0xffd6('0x2e')][_0xffd6('0x6f')]?{'message':_0xffd6('0x72'),'statusCode':_0x5b1ade[_0xffd6('0x70')]}:_0x5b1ade);});};
\ No newline at end of file
+var _0x220b=['intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','findAll','rows','show','filters','length','include','catch','create','body','find','params','getConfigurations','findOne','FreshdeskConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','FreshdeskField','getFields','remoteUri','slice','substring','lastIndexOf','GET','%s/%s','Basic\x20%s','format','%s:X','toString','base64','requester','subject','agent','description','priority','group','source','company','remove','includes','default','custom_text','label','choices','capitalize','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','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','api','../../config/utils','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','map','FreshdeskAccount','rawAttributes','fieldName','key','model','keys','query','attributes'];(function(_0x64fd8d,_0xc0c66e){var _0x50dd0e=function(_0x1197d2){while(--_0x1197d2){_0x64fd8d['push'](_0x64fd8d['shift']());}};_0x50dd0e(++_0xc0c66e);}(_0x220b,0x1a2));var _0xb220=function(_0x54d4a8,_0x585a59){_0x54d4a8=_0x54d4a8-0x0;var _0x3b321b=_0x220b[_0x54d4a8];return _0x3b321b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb220('0x0'));var zipdir=require(_0xb220('0x1'));var jsonpatch=require(_0xb220('0x2'));var rp=require(_0xb220('0x3'));var moment=require('moment');var BPromise=require(_0xb220('0x4'));var Mustache=require('mustache');var util=require(_0xb220('0x5'));var path=require('path');var sox=require(_0xb220('0x6'));var csv=require(_0xb220('0x7'));var ejs=require(_0xb220('0x8'));var fs=require('fs');var fs_extra=require(_0xb220('0x9'));var _=require('lodash');var squel=require(_0xb220('0xa'));var crypto=require(_0xb220('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xb220('0xc'));var toCsv=require(_0xb220('0x7'));var querystring=require(_0xb220('0xd'));var Papa=require(_0xb220('0xe'));var Redis=require(_0xb220('0xf'));var authService=require(_0xb220('0x10'));var qs=require(_0xb220('0x11'));var as=require(_0xb220('0x12'));var hardwareService=require(_0xb220('0x13'));var logger=require('../../config/logger')(_0xb220('0x14'));var utils=require(_0xb220('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x59ef3e,_0x11229c){_0x11229c=_0x11229c||0xcc;return function(_0x573971){if(_0x573971){return _0x59ef3e[_0xb220('0x16')](_0x11229c);}return _0x59ef3e[_0xb220('0x17')](_0x11229c)[_0xb220('0x18')]();};}function respondWithResult(_0x312c59,_0x576649){_0x576649=_0x576649||0xc8;return function(_0x5af78d){if(_0x5af78d){return _0x312c59[_0xb220('0x17')](_0x576649)[_0xb220('0x19')](_0x5af78d);}};}function respondWithFilteredResult(_0x159eb7,_0x2ee3d2){return function(_0x16a34b){if(_0x16a34b){var _0x2458a8=typeof _0x2ee3d2[_0xb220('0x1a')]===_0xb220('0x1b')&&typeof _0x2ee3d2[_0xb220('0x1c')]===_0xb220('0x1b');var _0x33201a=_0x16a34b[_0xb220('0x1d')];var _0x3fe419=_0x2458a8?0x0:_0x2ee3d2[_0xb220('0x1a')];var _0x87c879=_0x2458a8?_0x16a34b[_0xb220('0x1d')]:_0x2ee3d2[_0xb220('0x1a')]+_0x2ee3d2[_0xb220('0x1c')];var _0x242aee;if(_0x87c879>=_0x33201a){_0x87c879=_0x33201a;_0x242aee=0xc8;}else{_0x242aee=0xce;}_0x159eb7[_0xb220('0x17')](_0x242aee);return _0x159eb7[_0xb220('0x1e')](_0xb220('0x1f'),_0x3fe419+'-'+_0x87c879+'/'+_0x33201a)[_0xb220('0x19')](_0x16a34b);}return null;};}function patchUpdates(_0x358035){return function(_0x5d38ad){try{jsonpatch[_0xb220('0x20')](_0x5d38ad,_0x358035,!![]);}catch(_0x5ddebe){return BPromise[_0xb220('0x21')](_0x5ddebe);}return _0x5d38ad['save']();};}function saveUpdates(_0x3a1ad7,_0x501f0f){return function(_0x15ca2f){if(_0x15ca2f){return _0x15ca2f[_0xb220('0x22')](_0x3a1ad7)[_0xb220('0x23')](function(_0x2f5a0d){return _0x2f5a0d;});}return null;};}function removeEntity(_0x396c72,_0x2975ff){return function(_0x5bb719){if(_0x5bb719){return _0x5bb719[_0xb220('0x24')]()[_0xb220('0x23')](function(){_0x396c72[_0xb220('0x17')](0xcc)[_0xb220('0x18')]();});}};}function handleEntityNotFound(_0x180b94,_0x4d83aa){return function(_0x19f13a){if(!_0x19f13a){_0x180b94[_0xb220('0x16')](0x194);}return _0x19f13a;};}function handleError(_0x57768e,_0x2b9b1a){_0x2b9b1a=_0x2b9b1a||0x1f4;return function(_0x277601){logger[_0xb220('0x25')](_0x277601[_0xb220('0x26')]);if(_0x277601[_0xb220('0x27')]){delete _0x277601[_0xb220('0x27')];}_0x57768e['status'](_0x2b9b1a)[_0xb220('0x28')](_0x277601);};}exports['index']=function(_0x589e07,_0x181b14){var _0x1a9b82={},_0x2d66a3={},_0x389a4d={'count':0x0,'rows':[]};var _0x2c016e=_[_0xb220('0x29')](db[_0xb220('0x2a')][_0xb220('0x2b')],function(_0x44da01){return{'name':_0x44da01[_0xb220('0x2c')],'type':_0x44da01['type'][_0xb220('0x2d')]};});_0x2d66a3[_0xb220('0x2e')]=_[_0xb220('0x29')](_0x2c016e,'name');_0x2d66a3['query']=_[_0xb220('0x2f')](_0x589e07['query']);_0x2d66a3['filters']=_['intersection'](_0x2d66a3[_0xb220('0x2e')],_0x2d66a3[_0xb220('0x30')]);_0x1a9b82[_0xb220('0x31')]=_[_0xb220('0x32')](_0x2d66a3[_0xb220('0x2e')],qs[_0xb220('0x33')](_0x589e07['query']['fields']));_0x1a9b82[_0xb220('0x31')]=_0x1a9b82[_0xb220('0x31')]['length']?_0x1a9b82[_0xb220('0x31')]:_0x2d66a3['model'];if(!_0x589e07[_0xb220('0x30')][_0xb220('0x34')](_0xb220('0x35'))){_0x1a9b82[_0xb220('0x1c')]=qs[_0xb220('0x1c')](_0x589e07['query']['limit']);_0x1a9b82['offset']=qs[_0xb220('0x1a')](_0x589e07['query'][_0xb220('0x1a')]);}_0x1a9b82[_0xb220('0x36')]=qs[_0xb220('0x37')](_0x589e07['query']['sort']);_0x1a9b82[_0xb220('0x38')]=qs['filters'](_[_0xb220('0x39')](_0x589e07[_0xb220('0x30')],_0x2d66a3['filters']),_0x2c016e);if(_0x589e07[_0xb220('0x30')][_0xb220('0x3a')]){_0x1a9b82[_0xb220('0x38')]=_[_0xb220('0x3b')](_0x1a9b82[_0xb220('0x38')],{'$or':_[_0xb220('0x29')](_0x2c016e,function(_0x725e18){if(_0x725e18[_0xb220('0x3c')]!==_0xb220('0x3d')){var _0x8b394={};_0x8b394[_0x725e18[_0xb220('0x27')]]={'$like':'%'+_0x589e07[_0xb220('0x30')][_0xb220('0x3a')]+'%'};return _0x8b394;}})});}_0x1a9b82=_['merge']({},_0x1a9b82,_0x589e07[_0xb220('0x3e')]);var _0x211568={'where':_0x1a9b82[_0xb220('0x38')]};return db[_0xb220('0x2a')][_0xb220('0x1d')](_0x211568)['then'](function(_0x27f116){_0x389a4d[_0xb220('0x1d')]=_0x27f116;if(_0x589e07[_0xb220('0x30')][_0xb220('0x3f')]){_0x1a9b82['include']=[{'all':!![]}];}return db['FreshdeskAccount'][_0xb220('0x40')](_0x1a9b82);})['then'](function(_0x4ed027){_0x389a4d[_0xb220('0x41')]=_0x4ed027;return _0x389a4d;})['then'](respondWithFilteredResult(_0x181b14,_0x1a9b82))['catch'](handleError(_0x181b14,null));};exports[_0xb220('0x42')]=function(_0x14c6fd,_0x3f357a){var _0x24d75c={'raw':![],'where':{'id':_0x14c6fd['params']['id']}},_0x447bf7={};_0x447bf7[_0xb220('0x2e')]=_[_0xb220('0x2f')](db[_0xb220('0x2a')][_0xb220('0x2b')]);_0x447bf7[_0xb220('0x30')]=_[_0xb220('0x2f')](_0x14c6fd[_0xb220('0x30')]);_0x447bf7[_0xb220('0x43')]=_[_0xb220('0x32')](_0x447bf7['model'],_0x447bf7['query']);_0x24d75c['attributes']=_[_0xb220('0x32')](_0x447bf7[_0xb220('0x2e')],qs[_0xb220('0x33')](_0x14c6fd[_0xb220('0x30')][_0xb220('0x33')]));_0x24d75c[_0xb220('0x31')]=_0x24d75c[_0xb220('0x31')][_0xb220('0x44')]?_0x24d75c[_0xb220('0x31')]:_0x447bf7[_0xb220('0x2e')];if(_0x14c6fd[_0xb220('0x30')][_0xb220('0x3f')]){_0x24d75c[_0xb220('0x45')]=[{'all':!![]}];}_0x24d75c=_['merge']({},_0x24d75c,_0x14c6fd[_0xb220('0x3e')]);return db[_0xb220('0x2a')]['find'](_0x24d75c)[_0xb220('0x23')](handleEntityNotFound(_0x3f357a,null))[_0xb220('0x23')](respondWithResult(_0x3f357a,null))[_0xb220('0x46')](handleError(_0x3f357a,null));};exports[_0xb220('0x47')]=function(_0x3d084d,_0x42906d){return db[_0xb220('0x2a')][_0xb220('0x47')](_0x3d084d[_0xb220('0x48')],{})[_0xb220('0x23')](respondWithResult(_0x42906d,0xc9))['catch'](handleError(_0x42906d,null));};exports['update']=function(_0x4d80f6,_0x4172ed){if(_0x4d80f6[_0xb220('0x48')]['id']){delete _0x4d80f6[_0xb220('0x48')]['id'];}return db[_0xb220('0x2a')]['find']({'where':{'id':_0x4d80f6['params']['id']}})[_0xb220('0x23')](handleEntityNotFound(_0x4172ed,null))[_0xb220('0x23')](saveUpdates(_0x4d80f6['body'],null))['then'](respondWithResult(_0x4172ed,null))[_0xb220('0x46')](handleError(_0x4172ed,null));};exports['destroy']=function(_0x427dd8,_0xa4ce65){return db[_0xb220('0x2a')][_0xb220('0x49')]({'where':{'id':_0x427dd8[_0xb220('0x4a')]['id']}})[_0xb220('0x23')](handleEntityNotFound(_0xa4ce65,null))['then'](removeEntity(_0xa4ce65,null))[_0xb220('0x46')](handleError(_0xa4ce65,null));};exports[_0xb220('0x4b')]=function(_0x3f1f9b,_0x1bb899,_0x366519){var _0x2fdbe8={};var _0x5bc519={};var _0x5218e3;var _0x179cc5;return db[_0xb220('0x2a')][_0xb220('0x4c')]({'where':{'id':_0x3f1f9b[_0xb220('0x4a')]['id']}})[_0xb220('0x23')](handleEntityNotFound(_0x1bb899,null))[_0xb220('0x23')](function(_0x255b7b){if(_0x255b7b){_0x5218e3=_0x255b7b;_0x5bc519[_0xb220('0x2e')]=_[_0xb220('0x2f')](db[_0xb220('0x4d')]['rawAttributes']);_0x5bc519[_0xb220('0x30')]=_['keys'](_0x3f1f9b[_0xb220('0x30')]);_0x5bc519[_0xb220('0x43')]=_[_0xb220('0x32')](_0x5bc519[_0xb220('0x2e')],_0x5bc519[_0xb220('0x30')]);_0x2fdbe8[_0xb220('0x31')]=_[_0xb220('0x32')](_0x5bc519['model'],qs['fields'](_0x3f1f9b[_0xb220('0x30')][_0xb220('0x33')]));_0x2fdbe8['attributes']=_0x2fdbe8[_0xb220('0x31')]['length']?_0x2fdbe8[_0xb220('0x31')]:_0x5bc519['model'];_0x2fdbe8[_0xb220('0x36')]=qs[_0xb220('0x37')](_0x3f1f9b[_0xb220('0x30')]['sort']);_0x2fdbe8['where']=qs[_0xb220('0x43')](_[_0xb220('0x39')](_0x3f1f9b[_0xb220('0x30')],_0x5bc519['filters']));if(_0x3f1f9b[_0xb220('0x30')][_0xb220('0x3a')]){_0x2fdbe8[_0xb220('0x38')]=_[_0xb220('0x3b')](_0x2fdbe8[_0xb220('0x38')],{'$or':_[_0xb220('0x29')](_0x2fdbe8[_0xb220('0x31')],function(_0x1812fd){var _0x186951={};_0x186951[_0x1812fd]={'$like':'%'+_0x3f1f9b[_0xb220('0x30')][_0xb220('0x3a')]+'%'};return _0x186951;})});}_0x2fdbe8=_[_0xb220('0x3b')]({},_0x2fdbe8,_0x3f1f9b[_0xb220('0x3e')]);return _0x5218e3['getConfigurations'](_0x2fdbe8);}})['then'](function(_0x56bf00){if(_0x56bf00){_0x179cc5=_0x56bf00[_0xb220('0x44')];if(!_0x3f1f9b[_0xb220('0x30')][_0xb220('0x34')](_0xb220('0x35'))){_0x2fdbe8[_0xb220('0x1c')]=qs[_0xb220('0x1c')](_0x3f1f9b[_0xb220('0x30')][_0xb220('0x1c')]);_0x2fdbe8['offset']=qs[_0xb220('0x1a')](_0x3f1f9b[_0xb220('0x30')]['offset']);}return _0x5218e3[_0xb220('0x4b')](_0x2fdbe8);}})['then'](function(_0x147c2c){if(_0x147c2c){return _0x147c2c?{'count':_0x179cc5,'rows':_0x147c2c}:null;}})[_0xb220('0x23')](respondWithResult(_0x1bb899,null))[_0xb220('0x46')](handleError(_0x1bb899,null));};exports[_0xb220('0x4e')]=function(_0x2b8dea,_0x218c5f,_0x13f0b7){if(_0x2b8dea['body']['id']){delete _0x2b8dea[_0xb220('0x48')]['id'];}return db[_0xb220('0x2a')]['findOne']({'where':{'id':_0x2b8dea[_0xb220('0x4a')]['id']}})[_0xb220('0x23')](handleEntityNotFound(_0x218c5f,null))['then'](function(_0x17c2b6){if(_0x17c2b6){_0x2b8dea[_0xb220('0x48')][_0xb220('0x4f')]=_0x17c2b6['id'];_0x2b8dea[_0xb220('0x48')][_0xb220('0x50')]=integrations[_0xb220('0x51')](_0x2b8dea[_0xb220('0x48')][_0xb220('0x52')],_0x2b8dea['body'][_0xb220('0x3c')]);_0x2b8dea['body'][_0xb220('0x53')]=integrations['getDescriptions'](_0x2b8dea[_0xb220('0x48')][_0xb220('0x52')],_0x2b8dea[_0xb220('0x48')][_0xb220('0x3c')]);return db[_0xb220('0x4d')][_0xb220('0x47')](_0x2b8dea[_0xb220('0x48')],{'include':[{'model':db[_0xb220('0x54')],'as':_0xb220('0x50')},{'model':db['FreshdeskField'],'as':'Descriptions'}]});}return null;})[_0xb220('0x23')](respondWithResult(_0x218c5f,null))[_0xb220('0x46')](handleError(_0x218c5f,null));};exports[_0xb220('0x55')]=function(_0x56a8af,_0x4e392c,_0x37e21c){var _0x5adb7a='';return db[_0xb220('0x2a')][_0xb220('0x4c')]({'where':{'id':_0x56a8af[_0xb220('0x4a')]['id']},'attributes':['id',_0xb220('0x56'),'apiKey']})[_0xb220('0x23')](handleEntityNotFound(_0x4e392c,null))[_0xb220('0x23')](function(_0x5c86c0){if(_0x5c86c0){_0x5adb7a=_0x5c86c0[_0xb220('0x56')];var _0x4c2f80=_0x5adb7a[_0xb220('0x57')](-0x1);if(_0x4c2f80==='/'){_0x5adb7a=_0x5adb7a[_0xb220('0x58')](0x0,_0x5adb7a[_0xb220('0x59')](_0x4c2f80));}return rp({'method':_0xb220('0x5a'),'uri':util['format'](_0xb220('0x5b'),_0x5adb7a,'api/v2/ticket_fields'),'headers':{'Authorization':util['format'](_0xb220('0x5c'),new Buffer(util[_0xb220('0x5d')](_0xb220('0x5e'),_0x5c86c0['apiKey']))[_0xb220('0x5f')](_0xb220('0x60')))},'json':!![]});}})['then'](function(_0x2741cb){if(_0x2741cb){var _0x3ecafc=[_0xb220('0x61'),_0xb220('0x62'),_0xb220('0x63'),_0xb220('0x64'),_0xb220('0x17'),_0xb220('0x65'),_0xb220('0x66'),_0xb220('0x67'),'ticket_type','group',_0xb220('0x68')];_[_0xb220('0x69')](_0x2741cb,function(_0x498f98){return _0x3ecafc[_0xb220('0x6a')](_0x498f98[_0xb220('0x27')])||!_0x498f98[_0xb220('0x6b')]&&_0x498f98[_0xb220('0x3c')]!==_0xb220('0x6c')&&_0x498f98[_0xb220('0x3c')]!=='custom_dropdown';});return{'count':_0x2741cb[_0xb220('0x44')],'rows':_[_0xb220('0x29')](_0x2741cb,function(_0x1a4bbf){return{'id':_0x1a4bbf[_0xb220('0x27')],'name':_0x1a4bbf[_0xb220('0x6d')],'custom':!_0x1a4bbf['default'],'options':_0x1a4bbf[_0xb220('0x6e')]?_[_0xb220('0x29')](_0x1a4bbf[_0xb220('0x6e')],function(_0x43e280){return{'name':_[_0xb220('0x6f')](_0x43e280),'value':_0x43e280};}):[]};})};}})['then'](respondWithResult(_0x4e392c,null))[_0xb220('0x46')](function(_0x57c5ee){var _0x5679f0=_0x56a8af[_0xb220('0x30')][_0xb220('0x70')]?0x1f4:_0x57c5ee[_0xb220('0x71')]||0x1f4;logger[_0xb220('0x25')](_0xb220('0x72'),_0xb220('0x55'),_0x5679f0,JSON[_0xb220('0x73')](_0x57c5ee));delete _0x57c5ee[_0xb220('0x27')];if(_0x5679f0===0x191){_0x5679f0=0x190;}_0x4e392c[_0xb220('0x17')](_0x5679f0)[_0xb220('0x28')](_0x56a8af[_0xb220('0x30')][_0xb220('0x70')]?{'message':_0xb220('0x74'),'statusCode':_0x57c5ee['statusCode']}:_0x57c5ee);});};
\ No newline at end of file
index 819e096..20b7652 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x838b=['rimraf','../../config/environment','../../components/integrations/configuration','exports','define','FreshdeskAccount','int_freshdesk_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x27dfb5,_0x5d4bfd){var _0x3ec841=function(_0x1f8682){while(--_0x1f8682){_0x27dfb5['push'](_0x27dfb5['shift']());}};_0x3ec841(++_0x5d4bfd);}(_0x838b,0x1e7));var _0xb838=function(_0x2b6550,_0x3b4eaf){_0x2b6550=_0x2b6550-0x0;var _0x313f95=_0x838b[_0x2b6550];return _0x313f95;};'use strict';var _=require(_0xb838('0x0'));var util=require(_0xb838('0x1'));var logger=require(_0xb838('0x2'))(_0xb838('0x3'));var moment=require(_0xb838('0x4'));var BPromise=require(_0xb838('0x5'));var rp=require(_0xb838('0x6'));var fs=require('fs');var path=require(_0xb838('0x7'));var rimraf=require(_0xb838('0x8'));var config=require(_0xb838('0x9'));var attributes=require('./intFreshdeskAccount.attributes');var integrations=require(_0xb838('0xa'));module[_0xb838('0xb')]=function(_0x3264cb,_0x1ddb5c){return _0x3264cb[_0xb838('0xc')](_0xb838('0xd'),attributes,{'tableName':_0xb838('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3981=['request-promise','path','rimraf','./intFreshdeskAccount.attributes','define','FreshdeskAccount','int_freshdesk_accounts','lodash','util','api','bluebird'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x3981,0x151));var _0x1398=function(_0x52cb89,_0x42fca1){_0x52cb89=_0x52cb89-0x0;var _0x4ab7be=_0x3981[_0x52cb89];return _0x4ab7be;};'use strict';var _=require(_0x1398('0x0'));var util=require(_0x1398('0x1'));var logger=require('../../config/logger')(_0x1398('0x2'));var moment=require('moment');var BPromise=require(_0x1398('0x3'));var rp=require(_0x1398('0x4'));var fs=require('fs');var path=require(_0x1398('0x5'));var rimraf=require(_0x1398('0x6'));var config=require('../../config/environment');var attributes=require(_0x1398('0x7'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0xb185de,_0x312854){return _0xb185de[_0x1398('0x8')](_0x1398('0x9'),attributes,{'tableName':_0x1398('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 18119c4..0507bb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33dc=['raw','options','attributes','limit','include','map','model','ShowFreshdeskAccount','where','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetFreshdeskAccount','FreshdeskAccount','findAll'];(function(_0x144c37,_0x587fbe){var _0xe104bd=function(_0x1410b6){while(--_0x1410b6){_0x144c37['push'](_0x144c37['shift']());}};_0xe104bd(++_0x587fbe);}(_0x33dc,0x91));var _0xc33d=function(_0x334599,_0x4b1cfa){_0x334599=_0x334599-0x0;var _0x4cdff2=_0x33dc[_0x334599];return _0x4cdff2;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xc33d('0x0'));var BPromise=require('bluebird');var rs=require(_0xc33d('0x1'));var fs=require('fs');var Redis=require(_0xc33d('0x2'));var db=require(_0xc33d('0x3'))['db'];var utils=require(_0xc33d('0x4'));var logger=require(_0xc33d('0x5'))(_0xc33d('0x6'));var config=require(_0xc33d('0x7'));var jayson=require(_0xc33d('0x8'));var client=jayson[_0xc33d('0x9')][_0xc33d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4c2634,_0x2158d1,_0xe9008f){return new BPromise(function(_0x53f659,_0xb0910f){return client['request'](_0x4c2634,_0xe9008f)[_0xc33d('0xb')](function(_0x806541){logger[_0xc33d('0xc')](_0xc33d('0xd'),_0x2158d1,_0xc33d('0xe'));logger[_0xc33d('0xf')](_0xc33d('0x10'),_0x2158d1,'request\x20sent',JSON[_0xc33d('0x11')](_0x806541));if(_0x806541['error']){if(_0x806541[_0xc33d('0x12')]['code']===0x1f4){logger['error'](_0xc33d('0xd'),_0x2158d1,_0x806541[_0xc33d('0x12')][_0xc33d('0x13')]);return _0xb0910f(_0x806541[_0xc33d('0x12')][_0xc33d('0x13')]);}logger[_0xc33d('0x12')](_0xc33d('0xd'),_0x2158d1,_0x806541[_0xc33d('0x12')][_0xc33d('0x13')]);return _0x53f659(_0x806541[_0xc33d('0x12')][_0xc33d('0x13')]);}else{logger[_0xc33d('0xc')](_0xc33d('0xd'),_0x2158d1,_0xc33d('0xe'));_0x53f659(_0x806541[_0xc33d('0x14')][_0xc33d('0x13')]);}})[_0xc33d('0x15')](function(_0x2e5c12){logger[_0xc33d('0x12')](_0xc33d('0xd'),_0x2158d1,_0x2e5c12);_0xb0910f(_0x2e5c12);});});}exports[_0xc33d('0x16')]=function(_0x5b9dfd){var _0x4bb6dd=this;return new Promise(function(_0x337b09,_0x5bf45b){return db[_0xc33d('0x17')][_0xc33d('0x18')]({'raw':_0x5b9dfd['options']?_0x5b9dfd['options'][_0xc33d('0x19')]===undefined?!![]:![]:!![],'where':_0x5b9dfd[_0xc33d('0x1a')]?_0x5b9dfd['options']['where']||null:null,'attributes':_0x5b9dfd[_0xc33d('0x1a')]?_0x5b9dfd[_0xc33d('0x1a')][_0xc33d('0x1b')]||null:null,'limit':_0x5b9dfd[_0xc33d('0x1a')]?_0x5b9dfd[_0xc33d('0x1a')][_0xc33d('0x1c')]||null:null,'include':_0x5b9dfd[_0xc33d('0x1a')]?_0x5b9dfd[_0xc33d('0x1a')][_0xc33d('0x1d')]?_[_0xc33d('0x1e')](_0x5b9dfd[_0xc33d('0x1a')][_0xc33d('0x1d')],function(_0x4c94da){return{'model':db[_0x4c94da[_0xc33d('0x1f')]],'as':_0x4c94da['as'],'attributes':_0x4c94da[_0xc33d('0x1b')],'include':_0x4c94da['include']?_['map'](_0x4c94da[_0xc33d('0x1d')],function(_0xffa64e){return{'model':db[_0xffa64e[_0xc33d('0x1f')]],'as':_0xffa64e['as'],'attributes':_0xffa64e[_0xc33d('0x1b')],'include':_0xffa64e[_0xc33d('0x1d')]?_[_0xc33d('0x1e')](_0xffa64e[_0xc33d('0x1d')],function(_0x5995b5){return{'model':db[_0x5995b5[_0xc33d('0x1f')]],'as':_0x5995b5['as'],'attributes':_0x5995b5[_0xc33d('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xc33d('0xb')](function(_0x292190){logger['info']('GetFreshdeskAccount',_0x5b9dfd);logger[_0xc33d('0xf')]('GetFreshdeskAccount',_0x5b9dfd,JSON[_0xc33d('0x11')](_0x292190));_0x337b09(_0x292190);})['catch'](function(_0x39ac27){logger[_0xc33d('0x12')](_0xc33d('0x16'),_0x39ac27[_0xc33d('0x13')],_0x5b9dfd);_0x5bf45b(_0x4bb6dd[_0xc33d('0x12')](0x1f4,_0x39ac27[_0xc33d('0x13')]));});});};exports[_0xc33d('0x20')]=function(_0x3df32b){var _0x453e80=this;return new Promise(function(_0x12f784,_0x560d33){return db[_0xc33d('0x17')]['find']({'raw':_0x3df32b[_0xc33d('0x1a')]?_0x3df32b['options'][_0xc33d('0x19')]===undefined?!![]:![]:!![],'where':_0x3df32b[_0xc33d('0x1a')]?_0x3df32b[_0xc33d('0x1a')][_0xc33d('0x21')]||null:null,'attributes':_0x3df32b[_0xc33d('0x1a')]?_0x3df32b[_0xc33d('0x1a')][_0xc33d('0x1b')]||null:null,'include':_0x3df32b[_0xc33d('0x1a')]?_0x3df32b[_0xc33d('0x1a')]['include']?_[_0xc33d('0x1e')](_0x3df32b['options']['include'],function(_0x2662a5){return{'model':db[_0x2662a5[_0xc33d('0x1f')]],'as':_0x2662a5['as'],'attributes':_0x2662a5['attributes'],'include':_0x2662a5['include']?_[_0xc33d('0x1e')](_0x2662a5['include'],function(_0x9f1f5d){return{'model':db[_0x9f1f5d[_0xc33d('0x1f')]],'as':_0x9f1f5d['as'],'attributes':_0x9f1f5d[_0xc33d('0x1b')],'include':_0x9f1f5d[_0xc33d('0x1d')]?_[_0xc33d('0x1e')](_0x9f1f5d[_0xc33d('0x1d')],function(_0x367884){return{'model':db[_0x367884[_0xc33d('0x1f')]],'as':_0x367884['as'],'attributes':_0x367884[_0xc33d('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x165db2){logger[_0xc33d('0xc')](_0xc33d('0x20'),_0x3df32b);logger['debug'](_0xc33d('0x20'),_0x3df32b,JSON[_0xc33d('0x11')](_0x165db2));_0x12f784(_0x165db2);})[_0xc33d('0x15')](function(_0x162092){logger[_0xc33d('0x12')](_0xc33d('0x20'),_0x162092[_0xc33d('0x13')],_0x3df32b);_0x560d33(_0x453e80[_0xc33d('0x12')](0x1f4,_0x162092['message']));});});};
\ No newline at end of file
+var _0x0060=['catch','FreshdeskAccount','options','raw','where','limit','include','map','attributes','model','then','GetFreshdeskAccount','ShowFreshdeskAccount','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client','http','request','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result'];(function(_0x8f7c80,_0x18d080){var _0x4a9e7b=function(_0x10562d){while(--_0x10562d){_0x8f7c80['push'](_0x8f7c80['shift']());}};_0x4a9e7b(++_0x18d080);}(_0x0060,0x124));var _0x0006=function(_0xcf22a8,_0x35d51c){_0xcf22a8=_0xcf22a8-0x0;var _0x1137eb=_0x0060[_0xcf22a8];return _0x1137eb;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x0006('0x0'));var rs=require(_0x0006('0x1'));var fs=require('fs');var Redis=require(_0x0006('0x2'));var db=require(_0x0006('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x0006('0x4'))(_0x0006('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0006('0x6')][_0x0006('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1c26ab,_0x3f7261,_0x5449ea){return new BPromise(function(_0x1e9b43,_0x45a457){return client[_0x0006('0x8')](_0x1c26ab,_0x5449ea)['then'](function(_0x39c9a9){logger[_0x0006('0x9')](_0x0006('0xa'),_0x3f7261,_0x0006('0xb'));logger[_0x0006('0xc')](_0x0006('0xd'),_0x3f7261,_0x0006('0xb'),JSON[_0x0006('0xe')](_0x39c9a9));if(_0x39c9a9[_0x0006('0xf')]){if(_0x39c9a9[_0x0006('0xf')]['code']===0x1f4){logger[_0x0006('0xf')]('FreshdeskAccount,\x20%s,\x20%s',_0x3f7261,_0x39c9a9[_0x0006('0xf')]['message']);return _0x45a457(_0x39c9a9[_0x0006('0xf')]['message']);}logger[_0x0006('0xf')](_0x0006('0xa'),_0x3f7261,_0x39c9a9[_0x0006('0xf')][_0x0006('0x10')]);return _0x1e9b43(_0x39c9a9['error']['message']);}else{logger[_0x0006('0x9')](_0x0006('0xa'),_0x3f7261,'request\x20sent');_0x1e9b43(_0x39c9a9[_0x0006('0x11')][_0x0006('0x10')]);}})[_0x0006('0x12')](function(_0x1de017){logger[_0x0006('0xf')]('FreshdeskAccount,\x20%s,\x20%s',_0x3f7261,_0x1de017);_0x45a457(_0x1de017);});});}exports['GetFreshdeskAccount']=function(_0x2fc144){var _0x1174e6=this;return new Promise(function(_0x1a092c,_0x1253bf){return db[_0x0006('0x13')]['findAll']({'raw':_0x2fc144[_0x0006('0x14')]?_0x2fc144[_0x0006('0x14')][_0x0006('0x15')]===undefined?!![]:![]:!![],'where':_0x2fc144[_0x0006('0x14')]?_0x2fc144[_0x0006('0x14')][_0x0006('0x16')]||null:null,'attributes':_0x2fc144['options']?_0x2fc144[_0x0006('0x14')]['attributes']||null:null,'limit':_0x2fc144[_0x0006('0x14')]?_0x2fc144[_0x0006('0x14')][_0x0006('0x17')]||null:null,'include':_0x2fc144[_0x0006('0x14')]?_0x2fc144[_0x0006('0x14')][_0x0006('0x18')]?_[_0x0006('0x19')](_0x2fc144[_0x0006('0x14')][_0x0006('0x18')],function(_0x4e5ee6){return{'model':db[_0x4e5ee6['model']],'as':_0x4e5ee6['as'],'attributes':_0x4e5ee6[_0x0006('0x1a')],'include':_0x4e5ee6[_0x0006('0x18')]?_['map'](_0x4e5ee6['include'],function(_0x3bb16b){return{'model':db[_0x3bb16b[_0x0006('0x1b')]],'as':_0x3bb16b['as'],'attributes':_0x3bb16b['attributes'],'include':_0x3bb16b['include']?_[_0x0006('0x19')](_0x3bb16b[_0x0006('0x18')],function(_0x5c4e27){return{'model':db[_0x5c4e27[_0x0006('0x1b')]],'as':_0x5c4e27['as'],'attributes':_0x5c4e27[_0x0006('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x0006('0x1c')](function(_0x3ddd09){logger[_0x0006('0x9')](_0x0006('0x1d'),_0x2fc144);logger['debug']('GetFreshdeskAccount',_0x2fc144,JSON[_0x0006('0xe')](_0x3ddd09));_0x1a092c(_0x3ddd09);})[_0x0006('0x12')](function(_0x4b955e){logger[_0x0006('0xf')](_0x0006('0x1d'),_0x4b955e[_0x0006('0x10')],_0x2fc144);_0x1253bf(_0x1174e6[_0x0006('0xf')](0x1f4,_0x4b955e[_0x0006('0x10')]));});});};exports['ShowFreshdeskAccount']=function(_0x27be48){var _0x5332ef=this;return new Promise(function(_0x46b336,_0x34a049){return db[_0x0006('0x13')]['find']({'raw':_0x27be48[_0x0006('0x14')]?_0x27be48[_0x0006('0x14')][_0x0006('0x15')]===undefined?!![]:![]:!![],'where':_0x27be48[_0x0006('0x14')]?_0x27be48[_0x0006('0x14')][_0x0006('0x16')]||null:null,'attributes':_0x27be48[_0x0006('0x14')]?_0x27be48['options']['attributes']||null:null,'include':_0x27be48[_0x0006('0x14')]?_0x27be48['options']['include']?_[_0x0006('0x19')](_0x27be48['options'][_0x0006('0x18')],function(_0x25b184){return{'model':db[_0x25b184['model']],'as':_0x25b184['as'],'attributes':_0x25b184[_0x0006('0x1a')],'include':_0x25b184[_0x0006('0x18')]?_[_0x0006('0x19')](_0x25b184['include'],function(_0x40854f){return{'model':db[_0x40854f['model']],'as':_0x40854f['as'],'attributes':_0x40854f[_0x0006('0x1a')],'include':_0x40854f['include']?_[_0x0006('0x19')](_0x40854f[_0x0006('0x18')],function(_0x321797){return{'model':db[_0x321797[_0x0006('0x1b')]],'as':_0x321797['as'],'attributes':_0x321797[_0x0006('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x0006('0x1c')](function(_0x15efae){logger['info']('ShowFreshdeskAccount',_0x27be48);logger[_0x0006('0xc')](_0x0006('0x1e'),_0x27be48,JSON[_0x0006('0xe')](_0x15efae));_0x46b336(_0x15efae);})[_0x0006('0x12')](function(_0x36662f){logger[_0x0006('0xf')](_0x0006('0x1e'),_0x36662f[_0x0006('0x10')],_0x27be48);_0x34a049(_0x5332ef[_0x0006('0xf')](0x1f4,_0x36662f[_0x0006('0x10')]));});});};
\ No newline at end of file
index fcd210a..464d9f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0d5=['fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshdeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','create','post','put','destroy','multer','util','path','connect-timeout','Router'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0xd0d5,0x1cf));var _0x5d0d=function(_0xbcbeaa,_0x5612b1){_0xbcbeaa=_0xbcbeaa-0x0;var _0x56aa43=_0xd0d5[_0xbcbeaa];return _0x56aa43;};'use strict';var multer=require(_0x5d0d('0x0'));var util=require(_0x5d0d('0x1'));var path=require(_0x5d0d('0x2'));var timeout=require(_0x5d0d('0x3'));var express=require('express');var router=express[_0x5d0d('0x4')]();var fs_extra=require(_0x5d0d('0x5'));var auth=require(_0x5d0d('0x6'));var interaction=require(_0x5d0d('0x7'));var config=require('../../config/environment');var controller=require(_0x5d0d('0x8'));router[_0x5d0d('0x9')]('/',auth[_0x5d0d('0xa')](),controller[_0x5d0d('0xb')]);router['get'](_0x5d0d('0xc'),auth[_0x5d0d('0xa')](),controller[_0x5d0d('0xd')]);router[_0x5d0d('0x9')](_0x5d0d('0xe'),auth[_0x5d0d('0xa')](),controller[_0x5d0d('0xf')]);router[_0x5d0d('0x9')](_0x5d0d('0x10'),auth['isAuthenticated'](),controller[_0x5d0d('0x11')]);router['get'](_0x5d0d('0x12'),auth[_0x5d0d('0xa')](),controller[_0x5d0d('0x13')]);router[_0x5d0d('0x9')](_0x5d0d('0x14'),auth[_0x5d0d('0xa')](),controller[_0x5d0d('0x15')]);router['post']('/',auth[_0x5d0d('0xa')](),controller[_0x5d0d('0x16')]);router[_0x5d0d('0x17')](_0x5d0d('0x14'),auth[_0x5d0d('0xa')](),controller['setTags']);router[_0x5d0d('0x18')](_0x5d0d('0xc'),auth[_0x5d0d('0xa')](),controller['update']);router['delete']('/:id',auth[_0x5d0d('0xa')](),controller[_0x5d0d('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0x3211=['getFields','/:id/subjects','/:id/descriptions','getDescriptions','getTags','post','create','/:id/tags','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskConfiguration.controller','isAuthenticated','index','get','/:id','/:id/fields'];(function(_0x111293,_0x10ff45){var _0x69e613=function(_0x4c89f4){while(--_0x4c89f4){_0x111293['push'](_0x111293['shift']());}};_0x69e613(++_0x10ff45);}(_0x3211,0x1a2));var _0x1321=function(_0x49b38f,_0x1828f1){_0x49b38f=_0x49b38f-0x0;var _0x3fa66d=_0x3211[_0x49b38f];return _0x3fa66d;};'use strict';var multer=require('multer');var util=require(_0x1321('0x0'));var path=require(_0x1321('0x1'));var timeout=require(_0x1321('0x2'));var express=require(_0x1321('0x3'));var router=express[_0x1321('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x1321('0x5'));var interaction=require(_0x1321('0x6'));var config=require(_0x1321('0x7'));var controller=require(_0x1321('0x8'));router['get']('/',auth[_0x1321('0x9')](),controller[_0x1321('0xa')]);router[_0x1321('0xb')](_0x1321('0xc'),auth[_0x1321('0x9')](),controller['show']);router[_0x1321('0xb')](_0x1321('0xd'),auth[_0x1321('0x9')](),controller[_0x1321('0xe')]);router[_0x1321('0xb')](_0x1321('0xf'),auth[_0x1321('0x9')](),controller['getSubjects']);router['get'](_0x1321('0x10'),auth['isAuthenticated'](),controller[_0x1321('0x11')]);router[_0x1321('0xb')]('/:id/tags',auth[_0x1321('0x9')](),controller[_0x1321('0x12')]);router[_0x1321('0x13')]('/',auth[_0x1321('0x9')](),controller[_0x1321('0x14')]);router[_0x1321('0x13')](_0x1321('0x15'),auth[_0x1321('0x9')](),controller['setTags']);router[_0x1321('0x16')](_0x1321('0xc'),auth['isAuthenticated'](),controller[_0x1321('0x17')]);router[_0x1321('0x18')]('/:id',auth['isAuthenticated'](),controller[_0x1321('0x19')]);module[_0x1321('0x1a')]=router;
\ No newline at end of file
index 349c672..0ce4814 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x791f=['STRING','exports'];(function(_0x56af3a,_0xdb5ac9){var _0x392ed6=function(_0x3694e0){while(--_0x3694e0){_0x56af3a['push'](_0x56af3a['shift']());}};_0x392ed6(++_0xdb5ac9);}(_0x791f,0x1a9));var _0xf791=function(_0x59e821,_0x86c723){_0x59e821=_0x59e821-0x0;var _0x5333f6=_0x791f[_0x59e821];return _0x5333f6;};'use strict';var Sequelize=require('sequelize');module[_0xf791('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xf791('0x1')]}};
\ No newline at end of file
+var _0x24be=['exports','STRING'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x24be,0xfc));var _0xe24b=function(_0x56790a,_0x39e8ed){_0x56790a=_0x56790a-0x0;var _0x145e9b=_0x24be[_0x56790a];return _0x145e9b;};'use strict';var Sequelize=require('sequelize');module[_0xe24b('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xe24b('0x1')]}};
\ No newline at end of file
index 60a8982..b5769c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0db=['path','sox','to-csv','lodash','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','FreshdeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','length','hasOwnProperty','nolimit','sort','pick','filter','merge','VIRTUAL','options','where','count','includeAll','include','findAll','rows','catch','show','fields','create','body','find','params','getFields','FreshdeskField','getSubjects','findOne','order','getDescriptions','getTags','setTags','ids','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util'];(function(_0x44f554,_0x4345d7){var _0x3148a9=function(_0x48fa43){while(--_0x48fa43){_0x44f554['push'](_0x44f554['shift']());}};_0x3148a9(++_0x4345d7);}(_0xa0db,0xf8));var _0xba0d=function(_0x2e7ee2,_0x9933f5){_0x2e7ee2=_0x2e7ee2-0x0;var _0x38b63c=_0xa0db[_0x2e7ee2];return _0x38b63c;};'use strict';var emlformat=require(_0xba0d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xba0d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xba0d('0x2'));var moment=require(_0xba0d('0x3'));var BPromise=require(_0xba0d('0x4'));var Mustache=require(_0xba0d('0x5'));var util=require(_0xba0d('0x6'));var path=require(_0xba0d('0x7'));var sox=require(_0xba0d('0x8'));var csv=require(_0xba0d('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xba0d('0xa'));var squel=require('squel');var crypto=require(_0xba0d('0xb'));var jsforce=require(_0xba0d('0xc'));var deskjs=require(_0xba0d('0xd'));var toCsv=require(_0xba0d('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xba0d('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xba0d('0xf'));var as=require(_0xba0d('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xba0d('0x11'))(_0xba0d('0x12'));var utils=require('../../config/utils');var config=require(_0xba0d('0x13'));var licenseUtil=require(_0xba0d('0x14'));var db=require(_0xba0d('0x15'))['db'];function respondWithStatusCode(_0x31e3ec,_0x11acd2){_0x11acd2=_0x11acd2||0xcc;return function(_0x562591){if(_0x562591){return _0x31e3ec[_0xba0d('0x16')](_0x11acd2);}return _0x31e3ec[_0xba0d('0x17')](_0x11acd2)[_0xba0d('0x18')]();};}function respondWithResult(_0x5a9a1e,_0x648e2d){_0x648e2d=_0x648e2d||0xc8;return function(_0x50840d){if(_0x50840d){return _0x5a9a1e['status'](_0x648e2d)['json'](_0x50840d);}};}function respondWithFilteredResult(_0x5a9c4d,_0x476bff){return function(_0x4b6c7a){if(_0x4b6c7a){var _0x1f9d44=typeof _0x476bff['offset']===_0xba0d('0x19')&&typeof _0x476bff[_0xba0d('0x1a')]==='undefined';var _0x3ac5a0=_0x4b6c7a['count'];var _0x435cf8=_0x1f9d44?0x0:_0x476bff[_0xba0d('0x1b')];var _0x2a841c=_0x1f9d44?_0x4b6c7a['count']:_0x476bff[_0xba0d('0x1b')]+_0x476bff[_0xba0d('0x1a')];var _0x2b496d;if(_0x2a841c>=_0x3ac5a0){_0x2a841c=_0x3ac5a0;_0x2b496d=0xc8;}else{_0x2b496d=0xce;}_0x5a9c4d[_0xba0d('0x17')](_0x2b496d);return _0x5a9c4d[_0xba0d('0x1c')](_0xba0d('0x1d'),_0x435cf8+'-'+_0x2a841c+'/'+_0x3ac5a0)[_0xba0d('0x1e')](_0x4b6c7a);}return null;};}function patchUpdates(_0x75a25c){return function(_0xc80171){try{jsonpatch[_0xba0d('0x1f')](_0xc80171,_0x75a25c,!![]);}catch(_0x7fed54){return BPromise[_0xba0d('0x20')](_0x7fed54);}return _0xc80171[_0xba0d('0x21')]();};}function saveUpdates(_0x3d41d3,_0x5a4a86){return function(_0x5c8e82){if(_0x5c8e82){return _0x5c8e82[_0xba0d('0x22')](_0x3d41d3)[_0xba0d('0x23')](function(_0x43e704){return _0x43e704;});}return null;};}function removeEntity(_0x4e21d0,_0x3b69dd){return function(_0x17e0da){if(_0x17e0da){return _0x17e0da[_0xba0d('0x24')]()[_0xba0d('0x23')](function(){_0x4e21d0['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x273b3c,_0x3ce80e){return function(_0x1335f1){if(!_0x1335f1){_0x273b3c[_0xba0d('0x16')](0x194);}return _0x1335f1;};}function handleError(_0x23f4de,_0x5251f2){_0x5251f2=_0x5251f2||0x1f4;return function(_0x31aeb3){logger[_0xba0d('0x25')](_0x31aeb3[_0xba0d('0x26')]);if(_0x31aeb3[_0xba0d('0x27')]){delete _0x31aeb3['name'];}_0x23f4de['status'](_0x5251f2)[_0xba0d('0x28')](_0x31aeb3);};}exports[_0xba0d('0x29')]=function(_0x15aaec,_0x4520d0){var _0x40e15d={},_0x5df00d={},_0x1d3039={'count':0x0,'rows':[]};var _0x7e2f26=_[_0xba0d('0x2a')](db[_0xba0d('0x2b')][_0xba0d('0x2c')],function(_0x22c92c){return{'name':_0x22c92c[_0xba0d('0x2d')],'type':_0x22c92c[_0xba0d('0x2e')][_0xba0d('0x2f')]};});_0x5df00d[_0xba0d('0x30')]=_[_0xba0d('0x2a')](_0x7e2f26,_0xba0d('0x27'));_0x5df00d[_0xba0d('0x31')]=_[_0xba0d('0x32')](_0x15aaec[_0xba0d('0x31')]);_0x5df00d[_0xba0d('0x33')]=_['intersection'](_0x5df00d[_0xba0d('0x30')],_0x5df00d['query']);_0x40e15d[_0xba0d('0x34')]=_[_0xba0d('0x35')](_0x5df00d[_0xba0d('0x30')],qs['fields'](_0x15aaec[_0xba0d('0x31')]['fields']));_0x40e15d[_0xba0d('0x34')]=_0x40e15d[_0xba0d('0x34')][_0xba0d('0x36')]?_0x40e15d[_0xba0d('0x34')]:_0x5df00d[_0xba0d('0x30')];if(!_0x15aaec[_0xba0d('0x31')][_0xba0d('0x37')](_0xba0d('0x38'))){_0x40e15d[_0xba0d('0x1a')]=qs[_0xba0d('0x1a')](_0x15aaec[_0xba0d('0x31')][_0xba0d('0x1a')]);_0x40e15d[_0xba0d('0x1b')]=qs[_0xba0d('0x1b')](_0x15aaec[_0xba0d('0x31')][_0xba0d('0x1b')]);}_0x40e15d['order']=qs[_0xba0d('0x39')](_0x15aaec['query'][_0xba0d('0x39')]);_0x40e15d['where']=qs[_0xba0d('0x33')](_[_0xba0d('0x3a')](_0x15aaec['query'],_0x5df00d[_0xba0d('0x33')]),_0x7e2f26);if(_0x15aaec[_0xba0d('0x31')][_0xba0d('0x3b')]){_0x40e15d['where']=_[_0xba0d('0x3c')](_0x40e15d['where'],{'$or':_['map'](_0x7e2f26,function(_0x202d9e){if(_0x202d9e[_0xba0d('0x2e')]!==_0xba0d('0x3d')){var _0x55c82d={};_0x55c82d[_0x202d9e[_0xba0d('0x27')]]={'$like':'%'+_0x15aaec[_0xba0d('0x31')][_0xba0d('0x3b')]+'%'};return _0x55c82d;}})});}_0x40e15d=_[_0xba0d('0x3c')]({},_0x40e15d,_0x15aaec[_0xba0d('0x3e')]);var _0x57bdf8={'where':_0x40e15d[_0xba0d('0x3f')]};return db[_0xba0d('0x2b')]['count'](_0x57bdf8)['then'](function(_0x8d18fb){_0x1d3039[_0xba0d('0x40')]=_0x8d18fb;if(_0x15aaec[_0xba0d('0x31')][_0xba0d('0x41')]){_0x40e15d[_0xba0d('0x42')]=[{'all':!![]}];}return db[_0xba0d('0x2b')][_0xba0d('0x43')](_0x40e15d);})[_0xba0d('0x23')](function(_0x148d40){_0x1d3039[_0xba0d('0x44')]=_0x148d40;return _0x1d3039;})[_0xba0d('0x23')](respondWithFilteredResult(_0x4520d0,_0x40e15d))[_0xba0d('0x45')](handleError(_0x4520d0,null));};exports[_0xba0d('0x46')]=function(_0xc088cc,_0x3a772a){var _0x990542={'raw':![],'where':{'id':_0xc088cc['params']['id']}},_0x15ccf6={};_0x15ccf6[_0xba0d('0x30')]=_[_0xba0d('0x32')](db[_0xba0d('0x2b')][_0xba0d('0x2c')]);_0x15ccf6[_0xba0d('0x31')]=_[_0xba0d('0x32')](_0xc088cc[_0xba0d('0x31')]);_0x15ccf6['filters']=_['intersection'](_0x15ccf6['model'],_0x15ccf6[_0xba0d('0x31')]);_0x990542[_0xba0d('0x34')]=_[_0xba0d('0x35')](_0x15ccf6[_0xba0d('0x30')],qs[_0xba0d('0x47')](_0xc088cc[_0xba0d('0x31')]['fields']));_0x990542[_0xba0d('0x34')]=_0x990542[_0xba0d('0x34')][_0xba0d('0x36')]?_0x990542[_0xba0d('0x34')]:_0x15ccf6[_0xba0d('0x30')];if(_0xc088cc[_0xba0d('0x31')][_0xba0d('0x41')]){_0x990542[_0xba0d('0x42')]=[{'all':!![]}];}_0x990542=_[_0xba0d('0x3c')]({},_0x990542,_0xc088cc['options']);return db['FreshdeskConfiguration']['find'](_0x990542)[_0xba0d('0x23')](handleEntityNotFound(_0x3a772a,null))[_0xba0d('0x23')](respondWithResult(_0x3a772a,null))[_0xba0d('0x45')](handleError(_0x3a772a,null));};exports[_0xba0d('0x48')]=function(_0x223d35,_0x2b31ba){return db[_0xba0d('0x2b')][_0xba0d('0x48')](_0x223d35[_0xba0d('0x49')],{})[_0xba0d('0x23')](respondWithResult(_0x2b31ba,0xc9))[_0xba0d('0x45')](handleError(_0x2b31ba,null));};exports[_0xba0d('0x22')]=function(_0x1a3b3a,_0x4edcef){if(_0x1a3b3a[_0xba0d('0x49')]['id']){delete _0x1a3b3a[_0xba0d('0x49')]['id'];}return db[_0xba0d('0x2b')][_0xba0d('0x4a')]({'where':{'id':_0x1a3b3a[_0xba0d('0x4b')]['id']}})[_0xba0d('0x23')](handleEntityNotFound(_0x4edcef,null))[_0xba0d('0x23')](saveUpdates(_0x1a3b3a['body'],null))[_0xba0d('0x23')](respondWithResult(_0x4edcef,null))[_0xba0d('0x45')](handleError(_0x4edcef,null));};exports[_0xba0d('0x24')]=function(_0xd83532,_0x1490a6){return db[_0xba0d('0x2b')][_0xba0d('0x4a')]({'where':{'id':_0xd83532['params']['id']}})[_0xba0d('0x23')](handleEntityNotFound(_0x1490a6,null))[_0xba0d('0x23')](removeEntity(_0x1490a6,null))[_0xba0d('0x45')](handleError(_0x1490a6,null));};exports[_0xba0d('0x4c')]=function(_0x1e66b6,_0x8a64e3,_0x36e5d8){var _0x506dd7={};var _0x1832ef={};var _0x33ccab;var _0x39acc1;return db[_0xba0d('0x2b')]['findOne']({'where':{'id':_0x1e66b6[_0xba0d('0x4b')]['id']}})[_0xba0d('0x23')](handleEntityNotFound(_0x8a64e3,null))[_0xba0d('0x23')](function(_0x247dee){if(_0x247dee){_0x33ccab=_0x247dee;_0x1832ef['model']=_[_0xba0d('0x32')](db[_0xba0d('0x4d')][_0xba0d('0x2c')]);_0x1832ef['query']=_['keys'](_0x1e66b6[_0xba0d('0x31')]);_0x1832ef[_0xba0d('0x33')]=_[_0xba0d('0x35')](_0x1832ef['model'],_0x1832ef[_0xba0d('0x31')]);_0x506dd7[_0xba0d('0x34')]=_['intersection'](_0x1832ef[_0xba0d('0x30')],qs[_0xba0d('0x47')](_0x1e66b6[_0xba0d('0x31')]['fields']));_0x506dd7[_0xba0d('0x34')]=_0x506dd7[_0xba0d('0x34')][_0xba0d('0x36')]?_0x506dd7[_0xba0d('0x34')]:_0x1832ef[_0xba0d('0x30')];_0x506dd7['order']=qs['sort'](_0x1e66b6[_0xba0d('0x31')][_0xba0d('0x39')]);_0x506dd7[_0xba0d('0x3f')]=qs['filters'](_[_0xba0d('0x3a')](_0x1e66b6[_0xba0d('0x31')],_0x1832ef[_0xba0d('0x33')]));if(_0x1e66b6[_0xba0d('0x31')][_0xba0d('0x3b')]){_0x506dd7[_0xba0d('0x3f')]=_[_0xba0d('0x3c')](_0x506dd7[_0xba0d('0x3f')],{'$or':_[_0xba0d('0x2a')](_0x506dd7[_0xba0d('0x34')],function(_0x1b7ab6){var _0x953f17={};_0x953f17[_0x1b7ab6]={'$like':'%'+_0x1e66b6['query'][_0xba0d('0x3b')]+'%'};return _0x953f17;})});}_0x506dd7=_[_0xba0d('0x3c')]({},_0x506dd7,_0x1e66b6[_0xba0d('0x3e')]);return _0x33ccab[_0xba0d('0x4c')](_0x506dd7);}})[_0xba0d('0x23')](function(_0x1e72df){if(_0x1e72df){_0x39acc1=_0x1e72df[_0xba0d('0x36')];if(!_0x1e66b6['query'][_0xba0d('0x37')](_0xba0d('0x38'))){_0x506dd7['limit']=qs[_0xba0d('0x1a')](_0x1e66b6['query'][_0xba0d('0x1a')]);_0x506dd7[_0xba0d('0x1b')]=qs['offset'](_0x1e66b6[_0xba0d('0x31')][_0xba0d('0x1b')]);}return _0x33ccab[_0xba0d('0x4c')](_0x506dd7);}})['then'](function(_0x565676){if(_0x565676){return _0x565676?{'count':_0x39acc1,'rows':_0x565676}:null;}})[_0xba0d('0x23')](respondWithResult(_0x8a64e3,null))['catch'](handleError(_0x8a64e3,null));};exports[_0xba0d('0x4e')]=function(_0x27a2d6,_0x2d6b2c,_0x387300){var _0x366468={};var _0x3cb7d3={};var _0x210326;var _0x411c3f;return db[_0xba0d('0x2b')][_0xba0d('0x4f')]({'where':{'id':_0x27a2d6['params']['id']}})[_0xba0d('0x23')](handleEntityNotFound(_0x2d6b2c,null))[_0xba0d('0x23')](function(_0x211d9c){if(_0x211d9c){_0x210326=_0x211d9c;_0x3cb7d3['model']=_['keys'](db[_0xba0d('0x4d')]['rawAttributes']);_0x3cb7d3['query']=_[_0xba0d('0x32')](_0x27a2d6['query']);_0x3cb7d3['filters']=_[_0xba0d('0x35')](_0x3cb7d3[_0xba0d('0x30')],_0x3cb7d3['query']);_0x366468[_0xba0d('0x34')]=_[_0xba0d('0x35')](_0x3cb7d3[_0xba0d('0x30')],qs['fields'](_0x27a2d6[_0xba0d('0x31')][_0xba0d('0x47')]));_0x366468[_0xba0d('0x34')]=_0x366468[_0xba0d('0x34')]['length']?_0x366468['attributes']:_0x3cb7d3[_0xba0d('0x30')];_0x366468[_0xba0d('0x50')]=qs[_0xba0d('0x39')](_0x27a2d6[_0xba0d('0x31')][_0xba0d('0x39')]);_0x366468[_0xba0d('0x3f')]=qs[_0xba0d('0x33')](_[_0xba0d('0x3a')](_0x27a2d6[_0xba0d('0x31')],_0x3cb7d3[_0xba0d('0x33')]));if(_0x27a2d6['query']['filter']){_0x366468[_0xba0d('0x3f')]=_[_0xba0d('0x3c')](_0x366468[_0xba0d('0x3f')],{'$or':_[_0xba0d('0x2a')](_0x366468[_0xba0d('0x34')],function(_0x151081){var _0x346bf7={};_0x346bf7[_0x151081]={'$like':'%'+_0x27a2d6[_0xba0d('0x31')][_0xba0d('0x3b')]+'%'};return _0x346bf7;})});}_0x366468=_[_0xba0d('0x3c')]({},_0x366468,_0x27a2d6[_0xba0d('0x3e')]);return _0x210326[_0xba0d('0x4e')](_0x366468);}})[_0xba0d('0x23')](function(_0x37ea73){if(_0x37ea73){_0x411c3f=_0x37ea73['length'];if(!_0x27a2d6[_0xba0d('0x31')][_0xba0d('0x37')](_0xba0d('0x38'))){_0x366468['limit']=qs[_0xba0d('0x1a')](_0x27a2d6[_0xba0d('0x31')][_0xba0d('0x1a')]);_0x366468[_0xba0d('0x1b')]=qs[_0xba0d('0x1b')](_0x27a2d6[_0xba0d('0x31')][_0xba0d('0x1b')]);}return _0x210326[_0xba0d('0x4e')](_0x366468);}})[_0xba0d('0x23')](function(_0x164b7e){if(_0x164b7e){return _0x164b7e?{'count':_0x411c3f,'rows':_0x164b7e}:null;}})[_0xba0d('0x23')](respondWithResult(_0x2d6b2c,null))[_0xba0d('0x45')](handleError(_0x2d6b2c,null));};exports['getDescriptions']=function(_0x372bad,_0x3bf2df,_0x525cbe){var _0x34ce25={};var _0x2d9556={};var _0x2068a3;var _0xf01912;return db[_0xba0d('0x2b')][_0xba0d('0x4f')]({'where':{'id':_0x372bad[_0xba0d('0x4b')]['id']}})[_0xba0d('0x23')](handleEntityNotFound(_0x3bf2df,null))['then'](function(_0x442d51){if(_0x442d51){_0x2068a3=_0x442d51;_0x2d9556[_0xba0d('0x30')]=_[_0xba0d('0x32')](db[_0xba0d('0x4d')][_0xba0d('0x2c')]);_0x2d9556[_0xba0d('0x31')]=_['keys'](_0x372bad[_0xba0d('0x31')]);_0x2d9556[_0xba0d('0x33')]=_[_0xba0d('0x35')](_0x2d9556[_0xba0d('0x30')],_0x2d9556[_0xba0d('0x31')]);_0x34ce25['attributes']=_[_0xba0d('0x35')](_0x2d9556[_0xba0d('0x30')],qs['fields'](_0x372bad['query'][_0xba0d('0x47')]));_0x34ce25[_0xba0d('0x34')]=_0x34ce25[_0xba0d('0x34')]['length']?_0x34ce25[_0xba0d('0x34')]:_0x2d9556[_0xba0d('0x30')];_0x34ce25[_0xba0d('0x50')]=qs[_0xba0d('0x39')](_0x372bad[_0xba0d('0x31')][_0xba0d('0x39')]);_0x34ce25[_0xba0d('0x3f')]=qs['filters'](_['pick'](_0x372bad[_0xba0d('0x31')],_0x2d9556[_0xba0d('0x33')]));if(_0x372bad[_0xba0d('0x31')][_0xba0d('0x3b')]){_0x34ce25[_0xba0d('0x3f')]=_[_0xba0d('0x3c')](_0x34ce25[_0xba0d('0x3f')],{'$or':_[_0xba0d('0x2a')](_0x34ce25[_0xba0d('0x34')],function(_0x5457ba){var _0x2300b1={};_0x2300b1[_0x5457ba]={'$like':'%'+_0x372bad[_0xba0d('0x31')][_0xba0d('0x3b')]+'%'};return _0x2300b1;})});}_0x34ce25=_['merge']({},_0x34ce25,_0x372bad[_0xba0d('0x3e')]);return _0x2068a3[_0xba0d('0x51')](_0x34ce25);}})[_0xba0d('0x23')](function(_0x56b51e){if(_0x56b51e){_0xf01912=_0x56b51e[_0xba0d('0x36')];if(!_0x372bad[_0xba0d('0x31')][_0xba0d('0x37')](_0xba0d('0x38'))){_0x34ce25[_0xba0d('0x1a')]=qs[_0xba0d('0x1a')](_0x372bad[_0xba0d('0x31')][_0xba0d('0x1a')]);_0x34ce25[_0xba0d('0x1b')]=qs[_0xba0d('0x1b')](_0x372bad[_0xba0d('0x31')][_0xba0d('0x1b')]);}return _0x2068a3['getDescriptions'](_0x34ce25);}})[_0xba0d('0x23')](function(_0x31c49a){if(_0x31c49a){return _0x31c49a?{'count':_0xf01912,'rows':_0x31c49a}:null;}})[_0xba0d('0x23')](respondWithResult(_0x3bf2df,null))[_0xba0d('0x45')](handleError(_0x3bf2df,null));};exports[_0xba0d('0x52')]=function(_0x39b7ea,_0x185446,_0x42c4c7){var _0x7c35ef={};var _0x398d15={};var _0x31d4cd;var _0x11aaf0;return db[_0xba0d('0x2b')][_0xba0d('0x4f')]({'where':{'id':_0x39b7ea[_0xba0d('0x4b')]['id']}})[_0xba0d('0x23')](handleEntityNotFound(_0x185446,null))[_0xba0d('0x23')](function(_0x232ef4){if(_0x232ef4){_0x31d4cd=_0x232ef4;_0x398d15[_0xba0d('0x30')]=_[_0xba0d('0x32')](db['Tag']['rawAttributes']);_0x398d15[_0xba0d('0x31')]=_[_0xba0d('0x32')](_0x39b7ea[_0xba0d('0x31')]);_0x398d15[_0xba0d('0x33')]=_[_0xba0d('0x35')](_0x398d15[_0xba0d('0x30')],_0x398d15['query']);_0x7c35ef[_0xba0d('0x34')]=_[_0xba0d('0x35')](_0x398d15['model'],qs['fields'](_0x39b7ea[_0xba0d('0x31')][_0xba0d('0x47')]));_0x7c35ef['attributes']=_0x7c35ef[_0xba0d('0x34')]['length']?_0x7c35ef[_0xba0d('0x34')]:_0x398d15[_0xba0d('0x30')];_0x7c35ef[_0xba0d('0x50')]=qs[_0xba0d('0x39')](_0x39b7ea[_0xba0d('0x31')][_0xba0d('0x39')]);_0x7c35ef[_0xba0d('0x3f')]=qs[_0xba0d('0x33')](_[_0xba0d('0x3a')](_0x39b7ea['query'],_0x398d15[_0xba0d('0x33')]));if(_0x39b7ea[_0xba0d('0x31')]['filter']){_0x7c35ef['where']=_[_0xba0d('0x3c')](_0x7c35ef['where'],{'$or':_[_0xba0d('0x2a')](_0x7c35ef['attributes'],function(_0x286fdc){var _0x59dc23={};_0x59dc23[_0x286fdc]={'$like':'%'+_0x39b7ea[_0xba0d('0x31')][_0xba0d('0x3b')]+'%'};return _0x59dc23;})});}_0x7c35ef=_[_0xba0d('0x3c')]({},_0x7c35ef,_0x39b7ea[_0xba0d('0x3e')]);return _0x31d4cd[_0xba0d('0x52')](_0x7c35ef);}})[_0xba0d('0x23')](function(_0x189628){if(_0x189628){_0x11aaf0=_0x189628[_0xba0d('0x36')];if(!_0x39b7ea[_0xba0d('0x31')][_0xba0d('0x37')](_0xba0d('0x38'))){_0x7c35ef['limit']=qs[_0xba0d('0x1a')](_0x39b7ea[_0xba0d('0x31')]['limit']);_0x7c35ef['offset']=qs[_0xba0d('0x1b')](_0x39b7ea[_0xba0d('0x31')][_0xba0d('0x1b')]);}return _0x31d4cd[_0xba0d('0x52')](_0x7c35ef);}})[_0xba0d('0x23')](function(_0x3603e9){if(_0x3603e9){return _0x3603e9?{'count':_0x11aaf0,'rows':_0x3603e9}:null;}})[_0xba0d('0x23')](respondWithResult(_0x185446,null))[_0xba0d('0x45')](handleError(_0x185446,null));};exports[_0xba0d('0x53')]=function(_0x5bf844,_0xca2383,_0x3961a2){if(_0x5bf844[_0xba0d('0x49')]['id']){delete _0x5bf844[_0xba0d('0x49')]['id'];}return db['FreshdeskConfiguration'][_0xba0d('0x4f')]({'where':{'id':_0x5bf844[_0xba0d('0x4b')]['id']}})['then'](handleEntityNotFound(_0xca2383,null))[_0xba0d('0x23')](function(_0x5e84cb){if(_0x5e84cb){return _0x5e84cb['setTags'](_0x5bf844['body'][_0xba0d('0x54')]||[]);}return null;})[_0xba0d('0x23')](respondWithResult(_0xca2383,null))[_0xba0d('0x45')](handleError(_0xca2383,null));};
\ No newline at end of file
+var _0x9b57=['ejs','fs-extra','lodash','crypto','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','destroy','sendStatus','error','name','send','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','FreshdeskConfiguration','includeAll','include','rows','catch','show','params','create','body','find','getFields','findOne','FreshdeskField','order','getSubjects','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','path','sox'];(function(_0x25662e,_0x4cec68){var _0x59b7bc=function(_0xafb159){while(--_0xafb159){_0x25662e['push'](_0x25662e['shift']());}};_0x59b7bc(++_0x4cec68);}(_0x9b57,0x1de));var _0x79b5=function(_0x3741eb,_0x4aad25){_0x3741eb=_0x3741eb-0x0;var _0x499286=_0x9b57[_0x3741eb];return _0x499286;};'use strict';var emlformat=require(_0x79b5('0x0'));var rimraf=require(_0x79b5('0x1'));var zipdir=require(_0x79b5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x79b5('0x3'));var moment=require('moment');var BPromise=require(_0x79b5('0x4'));var Mustache=require(_0x79b5('0x5'));var util=require('util');var path=require(_0x79b5('0x6'));var sox=require(_0x79b5('0x7'));var csv=require('to-csv');var ejs=require(_0x79b5('0x8'));var fs=require('fs');var fs_extra=require(_0x79b5('0x9'));var _=require(_0x79b5('0xa'));var squel=require('squel');var crypto=require(_0x79b5('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x79b5('0xc'));var toCsv=require(_0x79b5('0xd'));var querystring=require('querystring');var Papa=require(_0x79b5('0xe'));var Redis=require(_0x79b5('0xf'));var authService=require(_0x79b5('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x79b5('0x11'));var hardwareService=require(_0x79b5('0x12'));var logger=require(_0x79b5('0x13'))(_0x79b5('0x14'));var utils=require('../../config/utils');var config=require(_0x79b5('0x15'));var licenseUtil=require(_0x79b5('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x53bd26,_0x1365d8){_0x1365d8=_0x1365d8||0xcc;return function(_0xdc445f){if(_0xdc445f){return _0x53bd26['sendStatus'](_0x1365d8);}return _0x53bd26[_0x79b5('0x17')](_0x1365d8)[_0x79b5('0x18')]();};}function respondWithResult(_0x34dd3f,_0x53edcf){_0x53edcf=_0x53edcf||0xc8;return function(_0x320d7e){if(_0x320d7e){return _0x34dd3f[_0x79b5('0x17')](_0x53edcf)[_0x79b5('0x19')](_0x320d7e);}};}function respondWithFilteredResult(_0x1514e6,_0x3c8b6d){return function(_0x17e215){if(_0x17e215){var _0x3dc348=typeof _0x3c8b6d[_0x79b5('0x1a')]===_0x79b5('0x1b')&&typeof _0x3c8b6d[_0x79b5('0x1c')]===_0x79b5('0x1b');var _0x8a7059=_0x17e215[_0x79b5('0x1d')];var _0x11dbd7=_0x3dc348?0x0:_0x3c8b6d['offset'];var _0x472967=_0x3dc348?_0x17e215['count']:_0x3c8b6d[_0x79b5('0x1a')]+_0x3c8b6d[_0x79b5('0x1c')];var _0x5124d7;if(_0x472967>=_0x8a7059){_0x472967=_0x8a7059;_0x5124d7=0xc8;}else{_0x5124d7=0xce;}_0x1514e6[_0x79b5('0x17')](_0x5124d7);return _0x1514e6['set'](_0x79b5('0x1e'),_0x11dbd7+'-'+_0x472967+'/'+_0x8a7059)[_0x79b5('0x19')](_0x17e215);}return null;};}function patchUpdates(_0x1a1a9a){return function(_0x150a09){try{jsonpatch['apply'](_0x150a09,_0x1a1a9a,!![]);}catch(_0x23c8bd){return BPromise[_0x79b5('0x1f')](_0x23c8bd);}return _0x150a09[_0x79b5('0x20')]();};}function saveUpdates(_0x56acaa,_0x4b0e8e){return function(_0x2c79ec){if(_0x2c79ec){return _0x2c79ec[_0x79b5('0x21')](_0x56acaa)[_0x79b5('0x22')](function(_0x4b65c5){return _0x4b65c5;});}return null;};}function removeEntity(_0x255a41,_0x58e514){return function(_0x4dfe33){if(_0x4dfe33){return _0x4dfe33[_0x79b5('0x23')]()[_0x79b5('0x22')](function(){_0x255a41[_0x79b5('0x17')](0xcc)[_0x79b5('0x18')]();});}};}function handleEntityNotFound(_0x16ec63,_0x1eca80){return function(_0x34615d){if(!_0x34615d){_0x16ec63[_0x79b5('0x24')](0x194);}return _0x34615d;};}function handleError(_0x26fd20,_0xc82c){_0xc82c=_0xc82c||0x1f4;return function(_0x13b8f1){logger[_0x79b5('0x25')](_0x13b8f1['stack']);if(_0x13b8f1['name']){delete _0x13b8f1[_0x79b5('0x26')];}_0x26fd20[_0x79b5('0x17')](_0xc82c)[_0x79b5('0x27')](_0x13b8f1);};}exports['index']=function(_0xf66c23,_0x3f59a8){var _0x5c1177={},_0x57a543={},_0x5ac6bf={'count':0x0,'rows':[]};var _0x32ebc2=_[_0x79b5('0x28')](db['FreshdeskConfiguration'][_0x79b5('0x29')],function(_0x54fb11){return{'name':_0x54fb11['fieldName'],'type':_0x54fb11[_0x79b5('0x2a')][_0x79b5('0x2b')]};});_0x57a543[_0x79b5('0x2c')]=_[_0x79b5('0x28')](_0x32ebc2,_0x79b5('0x26'));_0x57a543[_0x79b5('0x2d')]=_[_0x79b5('0x2e')](_0xf66c23[_0x79b5('0x2d')]);_0x57a543[_0x79b5('0x2f')]=_[_0x79b5('0x30')](_0x57a543['model'],_0x57a543[_0x79b5('0x2d')]);_0x5c1177[_0x79b5('0x31')]=_[_0x79b5('0x30')](_0x57a543[_0x79b5('0x2c')],qs[_0x79b5('0x32')](_0xf66c23[_0x79b5('0x2d')][_0x79b5('0x32')]));_0x5c1177['attributes']=_0x5c1177[_0x79b5('0x31')][_0x79b5('0x33')]?_0x5c1177[_0x79b5('0x31')]:_0x57a543[_0x79b5('0x2c')];if(!_0xf66c23[_0x79b5('0x2d')][_0x79b5('0x34')](_0x79b5('0x35'))){_0x5c1177[_0x79b5('0x1c')]=qs[_0x79b5('0x1c')](_0xf66c23['query'][_0x79b5('0x1c')]);_0x5c1177[_0x79b5('0x1a')]=qs[_0x79b5('0x1a')](_0xf66c23['query'][_0x79b5('0x1a')]);}_0x5c1177['order']=qs[_0x79b5('0x36')](_0xf66c23['query'][_0x79b5('0x36')]);_0x5c1177[_0x79b5('0x37')]=qs['filters'](_[_0x79b5('0x38')](_0xf66c23[_0x79b5('0x2d')],_0x57a543['filters']),_0x32ebc2);if(_0xf66c23['query'][_0x79b5('0x39')]){_0x5c1177[_0x79b5('0x37')]=_[_0x79b5('0x3a')](_0x5c1177[_0x79b5('0x37')],{'$or':_[_0x79b5('0x28')](_0x32ebc2,function(_0x2792be){if(_0x2792be[_0x79b5('0x2a')]!==_0x79b5('0x3b')){var _0x332b7e={};_0x332b7e[_0x2792be[_0x79b5('0x26')]]={'$like':'%'+_0xf66c23[_0x79b5('0x2d')][_0x79b5('0x39')]+'%'};return _0x332b7e;}})});}_0x5c1177=_['merge']({},_0x5c1177,_0xf66c23[_0x79b5('0x3c')]);var _0x1d49ac={'where':_0x5c1177[_0x79b5('0x37')]};return db[_0x79b5('0x3d')][_0x79b5('0x1d')](_0x1d49ac)[_0x79b5('0x22')](function(_0x2577d3){_0x5ac6bf['count']=_0x2577d3;if(_0xf66c23[_0x79b5('0x2d')][_0x79b5('0x3e')]){_0x5c1177[_0x79b5('0x3f')]=[{'all':!![]}];}return db[_0x79b5('0x3d')]['findAll'](_0x5c1177);})[_0x79b5('0x22')](function(_0x5e601b){_0x5ac6bf[_0x79b5('0x40')]=_0x5e601b;return _0x5ac6bf;})[_0x79b5('0x22')](respondWithFilteredResult(_0x3f59a8,_0x5c1177))[_0x79b5('0x41')](handleError(_0x3f59a8,null));};exports[_0x79b5('0x42')]=function(_0x434431,_0x46f681){var _0x51d2a5={'raw':![],'where':{'id':_0x434431[_0x79b5('0x43')]['id']}},_0x23b286={};_0x23b286[_0x79b5('0x2c')]=_[_0x79b5('0x2e')](db['FreshdeskConfiguration'][_0x79b5('0x29')]);_0x23b286['query']=_[_0x79b5('0x2e')](_0x434431['query']);_0x23b286[_0x79b5('0x2f')]=_[_0x79b5('0x30')](_0x23b286[_0x79b5('0x2c')],_0x23b286[_0x79b5('0x2d')]);_0x51d2a5[_0x79b5('0x31')]=_[_0x79b5('0x30')](_0x23b286[_0x79b5('0x2c')],qs[_0x79b5('0x32')](_0x434431[_0x79b5('0x2d')]['fields']));_0x51d2a5[_0x79b5('0x31')]=_0x51d2a5['attributes'][_0x79b5('0x33')]?_0x51d2a5[_0x79b5('0x31')]:_0x23b286[_0x79b5('0x2c')];if(_0x434431['query'][_0x79b5('0x3e')]){_0x51d2a5[_0x79b5('0x3f')]=[{'all':!![]}];}_0x51d2a5=_[_0x79b5('0x3a')]({},_0x51d2a5,_0x434431[_0x79b5('0x3c')]);return db[_0x79b5('0x3d')]['find'](_0x51d2a5)[_0x79b5('0x22')](handleEntityNotFound(_0x46f681,null))[_0x79b5('0x22')](respondWithResult(_0x46f681,null))['catch'](handleError(_0x46f681,null));};exports['create']=function(_0x3627e8,_0x287249){return db[_0x79b5('0x3d')][_0x79b5('0x44')](_0x3627e8[_0x79b5('0x45')],{})[_0x79b5('0x22')](respondWithResult(_0x287249,0xc9))[_0x79b5('0x41')](handleError(_0x287249,null));};exports['update']=function(_0x14483f,_0x1ad801){if(_0x14483f[_0x79b5('0x45')]['id']){delete _0x14483f['body']['id'];}return db[_0x79b5('0x3d')]['find']({'where':{'id':_0x14483f['params']['id']}})[_0x79b5('0x22')](handleEntityNotFound(_0x1ad801,null))[_0x79b5('0x22')](saveUpdates(_0x14483f[_0x79b5('0x45')],null))[_0x79b5('0x22')](respondWithResult(_0x1ad801,null))[_0x79b5('0x41')](handleError(_0x1ad801,null));};exports[_0x79b5('0x23')]=function(_0x5b2a96,_0x433810){return db[_0x79b5('0x3d')][_0x79b5('0x46')]({'where':{'id':_0x5b2a96['params']['id']}})[_0x79b5('0x22')](handleEntityNotFound(_0x433810,null))[_0x79b5('0x22')](removeEntity(_0x433810,null))[_0x79b5('0x41')](handleError(_0x433810,null));};exports[_0x79b5('0x47')]=function(_0x1ea294,_0x17ca60,_0x2566f8){var _0xfc196f={};var _0x1a607d={};var _0x3cd644;var _0x4e7ad7;return db[_0x79b5('0x3d')][_0x79b5('0x48')]({'where':{'id':_0x1ea294['params']['id']}})[_0x79b5('0x22')](handleEntityNotFound(_0x17ca60,null))[_0x79b5('0x22')](function(_0x134bca){if(_0x134bca){_0x3cd644=_0x134bca;_0x1a607d[_0x79b5('0x2c')]=_['keys'](db[_0x79b5('0x49')][_0x79b5('0x29')]);_0x1a607d[_0x79b5('0x2d')]=_[_0x79b5('0x2e')](_0x1ea294[_0x79b5('0x2d')]);_0x1a607d[_0x79b5('0x2f')]=_[_0x79b5('0x30')](_0x1a607d['model'],_0x1a607d[_0x79b5('0x2d')]);_0xfc196f['attributes']=_['intersection'](_0x1a607d['model'],qs['fields'](_0x1ea294[_0x79b5('0x2d')][_0x79b5('0x32')]));_0xfc196f[_0x79b5('0x31')]=_0xfc196f[_0x79b5('0x31')][_0x79b5('0x33')]?_0xfc196f[_0x79b5('0x31')]:_0x1a607d[_0x79b5('0x2c')];_0xfc196f[_0x79b5('0x4a')]=qs['sort'](_0x1ea294[_0x79b5('0x2d')][_0x79b5('0x36')]);_0xfc196f[_0x79b5('0x37')]=qs[_0x79b5('0x2f')](_[_0x79b5('0x38')](_0x1ea294['query'],_0x1a607d['filters']));if(_0x1ea294[_0x79b5('0x2d')][_0x79b5('0x39')]){_0xfc196f[_0x79b5('0x37')]=_['merge'](_0xfc196f['where'],{'$or':_['map'](_0xfc196f[_0x79b5('0x31')],function(_0x4ac287){var _0x50070b={};_0x50070b[_0x4ac287]={'$like':'%'+_0x1ea294['query']['filter']+'%'};return _0x50070b;})});}_0xfc196f=_['merge']({},_0xfc196f,_0x1ea294['options']);return _0x3cd644[_0x79b5('0x47')](_0xfc196f);}})['then'](function(_0x2bd997){if(_0x2bd997){_0x4e7ad7=_0x2bd997[_0x79b5('0x33')];if(!_0x1ea294[_0x79b5('0x2d')][_0x79b5('0x34')]('nolimit')){_0xfc196f['limit']=qs[_0x79b5('0x1c')](_0x1ea294['query']['limit']);_0xfc196f[_0x79b5('0x1a')]=qs[_0x79b5('0x1a')](_0x1ea294['query'][_0x79b5('0x1a')]);}return _0x3cd644[_0x79b5('0x47')](_0xfc196f);}})[_0x79b5('0x22')](function(_0x4e5f08){if(_0x4e5f08){return _0x4e5f08?{'count':_0x4e7ad7,'rows':_0x4e5f08}:null;}})[_0x79b5('0x22')](respondWithResult(_0x17ca60,null))[_0x79b5('0x41')](handleError(_0x17ca60,null));};exports[_0x79b5('0x4b')]=function(_0x5b24b6,_0x302f73,_0x5031e4){var _0x37ff7a={};var _0x871b45={};var _0x1d7dff;var _0xf3ea2c;return db[_0x79b5('0x3d')][_0x79b5('0x48')]({'where':{'id':_0x5b24b6['params']['id']}})[_0x79b5('0x22')](handleEntityNotFound(_0x302f73,null))[_0x79b5('0x22')](function(_0x37169a){if(_0x37169a){_0x1d7dff=_0x37169a;_0x871b45[_0x79b5('0x2c')]=_['keys'](db[_0x79b5('0x49')][_0x79b5('0x29')]);_0x871b45[_0x79b5('0x2d')]=_[_0x79b5('0x2e')](_0x5b24b6[_0x79b5('0x2d')]);_0x871b45[_0x79b5('0x2f')]=_[_0x79b5('0x30')](_0x871b45[_0x79b5('0x2c')],_0x871b45[_0x79b5('0x2d')]);_0x37ff7a[_0x79b5('0x31')]=_['intersection'](_0x871b45[_0x79b5('0x2c')],qs[_0x79b5('0x32')](_0x5b24b6[_0x79b5('0x2d')][_0x79b5('0x32')]));_0x37ff7a[_0x79b5('0x31')]=_0x37ff7a[_0x79b5('0x31')][_0x79b5('0x33')]?_0x37ff7a['attributes']:_0x871b45[_0x79b5('0x2c')];_0x37ff7a[_0x79b5('0x4a')]=qs[_0x79b5('0x36')](_0x5b24b6[_0x79b5('0x2d')][_0x79b5('0x36')]);_0x37ff7a[_0x79b5('0x37')]=qs[_0x79b5('0x2f')](_[_0x79b5('0x38')](_0x5b24b6['query'],_0x871b45[_0x79b5('0x2f')]));if(_0x5b24b6['query'][_0x79b5('0x39')]){_0x37ff7a[_0x79b5('0x37')]=_['merge'](_0x37ff7a[_0x79b5('0x37')],{'$or':_[_0x79b5('0x28')](_0x37ff7a[_0x79b5('0x31')],function(_0x5a7adb){var _0x4268f5={};_0x4268f5[_0x5a7adb]={'$like':'%'+_0x5b24b6[_0x79b5('0x2d')]['filter']+'%'};return _0x4268f5;})});}_0x37ff7a=_[_0x79b5('0x3a')]({},_0x37ff7a,_0x5b24b6[_0x79b5('0x3c')]);return _0x1d7dff[_0x79b5('0x4b')](_0x37ff7a);}})['then'](function(_0x57665a){if(_0x57665a){_0xf3ea2c=_0x57665a[_0x79b5('0x33')];if(!_0x5b24b6[_0x79b5('0x2d')][_0x79b5('0x34')]('nolimit')){_0x37ff7a[_0x79b5('0x1c')]=qs[_0x79b5('0x1c')](_0x5b24b6[_0x79b5('0x2d')][_0x79b5('0x1c')]);_0x37ff7a[_0x79b5('0x1a')]=qs[_0x79b5('0x1a')](_0x5b24b6[_0x79b5('0x2d')][_0x79b5('0x1a')]);}return _0x1d7dff[_0x79b5('0x4b')](_0x37ff7a);}})['then'](function(_0x281c17){if(_0x281c17){return _0x281c17?{'count':_0xf3ea2c,'rows':_0x281c17}:null;}})['then'](respondWithResult(_0x302f73,null))[_0x79b5('0x41')](handleError(_0x302f73,null));};exports[_0x79b5('0x4c')]=function(_0x30b8b2,_0x4da260,_0x5cfeac){var _0x512ec6={};var _0x187c08={};var _0x1f6841;var _0x557863;return db[_0x79b5('0x3d')][_0x79b5('0x48')]({'where':{'id':_0x30b8b2[_0x79b5('0x43')]['id']}})[_0x79b5('0x22')](handleEntityNotFound(_0x4da260,null))[_0x79b5('0x22')](function(_0x54208d){if(_0x54208d){_0x1f6841=_0x54208d;_0x187c08[_0x79b5('0x2c')]=_[_0x79b5('0x2e')](db[_0x79b5('0x49')]['rawAttributes']);_0x187c08[_0x79b5('0x2d')]=_['keys'](_0x30b8b2[_0x79b5('0x2d')]);_0x187c08[_0x79b5('0x2f')]=_[_0x79b5('0x30')](_0x187c08[_0x79b5('0x2c')],_0x187c08[_0x79b5('0x2d')]);_0x512ec6[_0x79b5('0x31')]=_[_0x79b5('0x30')](_0x187c08[_0x79b5('0x2c')],qs[_0x79b5('0x32')](_0x30b8b2[_0x79b5('0x2d')][_0x79b5('0x32')]));_0x512ec6[_0x79b5('0x31')]=_0x512ec6[_0x79b5('0x31')][_0x79b5('0x33')]?_0x512ec6[_0x79b5('0x31')]:_0x187c08[_0x79b5('0x2c')];_0x512ec6[_0x79b5('0x4a')]=qs['sort'](_0x30b8b2[_0x79b5('0x2d')][_0x79b5('0x36')]);_0x512ec6[_0x79b5('0x37')]=qs[_0x79b5('0x2f')](_[_0x79b5('0x38')](_0x30b8b2[_0x79b5('0x2d')],_0x187c08[_0x79b5('0x2f')]));if(_0x30b8b2[_0x79b5('0x2d')][_0x79b5('0x39')]){_0x512ec6[_0x79b5('0x37')]=_['merge'](_0x512ec6[_0x79b5('0x37')],{'$or':_[_0x79b5('0x28')](_0x512ec6[_0x79b5('0x31')],function(_0x19cacc){var _0x13c884={};_0x13c884[_0x19cacc]={'$like':'%'+_0x30b8b2['query'][_0x79b5('0x39')]+'%'};return _0x13c884;})});}_0x512ec6=_[_0x79b5('0x3a')]({},_0x512ec6,_0x30b8b2[_0x79b5('0x3c')]);return _0x1f6841[_0x79b5('0x4c')](_0x512ec6);}})['then'](function(_0x263397){if(_0x263397){_0x557863=_0x263397[_0x79b5('0x33')];if(!_0x30b8b2[_0x79b5('0x2d')]['hasOwnProperty'](_0x79b5('0x35'))){_0x512ec6['limit']=qs[_0x79b5('0x1c')](_0x30b8b2['query']['limit']);_0x512ec6['offset']=qs[_0x79b5('0x1a')](_0x30b8b2[_0x79b5('0x2d')]['offset']);}return _0x1f6841['getDescriptions'](_0x512ec6);}})['then'](function(_0x37c27b){if(_0x37c27b){return _0x37c27b?{'count':_0x557863,'rows':_0x37c27b}:null;}})['then'](respondWithResult(_0x4da260,null))['catch'](handleError(_0x4da260,null));};exports[_0x79b5('0x4d')]=function(_0x1b9339,_0x1749bb,_0x56166b){var _0x1155d6={};var _0x47e9fe={};var _0x5bfa73;var _0x55ff1c;return db['FreshdeskConfiguration'][_0x79b5('0x48')]({'where':{'id':_0x1b9339[_0x79b5('0x43')]['id']}})[_0x79b5('0x22')](handleEntityNotFound(_0x1749bb,null))[_0x79b5('0x22')](function(_0x28d8c2){if(_0x28d8c2){_0x5bfa73=_0x28d8c2;_0x47e9fe['model']=_[_0x79b5('0x2e')](db[_0x79b5('0x4e')][_0x79b5('0x29')]);_0x47e9fe[_0x79b5('0x2d')]=_[_0x79b5('0x2e')](_0x1b9339['query']);_0x47e9fe['filters']=_[_0x79b5('0x30')](_0x47e9fe[_0x79b5('0x2c')],_0x47e9fe[_0x79b5('0x2d')]);_0x1155d6[_0x79b5('0x31')]=_['intersection'](_0x47e9fe[_0x79b5('0x2c')],qs['fields'](_0x1b9339[_0x79b5('0x2d')]['fields']));_0x1155d6['attributes']=_0x1155d6[_0x79b5('0x31')][_0x79b5('0x33')]?_0x1155d6['attributes']:_0x47e9fe['model'];_0x1155d6[_0x79b5('0x4a')]=qs[_0x79b5('0x36')](_0x1b9339[_0x79b5('0x2d')][_0x79b5('0x36')]);_0x1155d6[_0x79b5('0x37')]=qs[_0x79b5('0x2f')](_[_0x79b5('0x38')](_0x1b9339[_0x79b5('0x2d')],_0x47e9fe[_0x79b5('0x2f')]));if(_0x1b9339[_0x79b5('0x2d')][_0x79b5('0x39')]){_0x1155d6[_0x79b5('0x37')]=_[_0x79b5('0x3a')](_0x1155d6['where'],{'$or':_[_0x79b5('0x28')](_0x1155d6[_0x79b5('0x31')],function(_0x38557f){var _0x4d0d9e={};_0x4d0d9e[_0x38557f]={'$like':'%'+_0x1b9339['query'][_0x79b5('0x39')]+'%'};return _0x4d0d9e;})});}_0x1155d6=_[_0x79b5('0x3a')]({},_0x1155d6,_0x1b9339[_0x79b5('0x3c')]);return _0x5bfa73['getTags'](_0x1155d6);}})[_0x79b5('0x22')](function(_0x2d1174){if(_0x2d1174){_0x55ff1c=_0x2d1174[_0x79b5('0x33')];if(!_0x1b9339[_0x79b5('0x2d')]['hasOwnProperty'](_0x79b5('0x35'))){_0x1155d6['limit']=qs['limit'](_0x1b9339[_0x79b5('0x2d')]['limit']);_0x1155d6[_0x79b5('0x1a')]=qs[_0x79b5('0x1a')](_0x1b9339['query'][_0x79b5('0x1a')]);}return _0x5bfa73[_0x79b5('0x4d')](_0x1155d6);}})['then'](function(_0x9a3ca8){if(_0x9a3ca8){return _0x9a3ca8?{'count':_0x55ff1c,'rows':_0x9a3ca8}:null;}})[_0x79b5('0x22')](respondWithResult(_0x1749bb,null))[_0x79b5('0x41')](handleError(_0x1749bb,null));};exports[_0x79b5('0x4f')]=function(_0x433591,_0x3f1af8,_0x4537f5){if(_0x433591[_0x79b5('0x45')]['id']){delete _0x433591[_0x79b5('0x45')]['id'];}return db[_0x79b5('0x3d')][_0x79b5('0x48')]({'where':{'id':_0x433591[_0x79b5('0x43')]['id']}})[_0x79b5('0x22')](handleEntityNotFound(_0x3f1af8,null))['then'](function(_0x4b6ba5){if(_0x4b6ba5){return _0x4b6ba5[_0x79b5('0x4f')](_0x433591[_0x79b5('0x45')][_0x79b5('0x50')]||[]);}return null;})[_0x79b5('0x22')](respondWithResult(_0x3f1af8,null))[_0x79b5('0x41')](handleError(_0x3f1af8,null));};
\ No newline at end of file
index 67dea2d..6774f94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a61=['FreshdeskConfiguration','lodash','../../config/logger','api','moment','bluebird','request-promise','./intFreshdeskConfiguration.attributes','exports','define'];(function(_0x4b3e44,_0x58d7e6){var _0xc44d2=function(_0x155e42){while(--_0x155e42){_0x4b3e44['push'](_0x4b3e44['shift']());}};_0xc44d2(++_0x58d7e6);}(_0x1a61,0xb5));var _0x11a6=function(_0x1d7b59,_0x3c49e1){_0x1d7b59=_0x1d7b59-0x0;var _0x537e0c=_0x1a61[_0x1d7b59];return _0x537e0c;};'use strict';var _=require(_0x11a6('0x0'));var util=require('util');var logger=require(_0x11a6('0x1'))(_0x11a6('0x2'));var moment=require(_0x11a6('0x3'));var BPromise=require(_0x11a6('0x4'));var rp=require(_0x11a6('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x11a6('0x6'));module[_0x11a6('0x7')]=function(_0x52aeae,_0x15a9e3){return _0x52aeae[_0x11a6('0x8')](_0x11a6('0x9'),attributes,{'tableName':'int_freshdesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbd40=['util','api','moment','bluebird','path','rimraf','./intFreshdeskConfiguration.attributes','exports','define','FreshdeskConfiguration','int_freshdesk_configurations','lodash'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xbd40,0xd7));var _0x0bd4=function(_0x51b216,_0x58154b){_0x51b216=_0x51b216-0x0;var _0x684ff6=_0xbd40[_0x51b216];return _0x684ff6;};'use strict';var _=require(_0x0bd4('0x0'));var util=require(_0x0bd4('0x1'));var logger=require('../../config/logger')(_0x0bd4('0x2'));var moment=require(_0x0bd4('0x3'));var BPromise=require(_0x0bd4('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0bd4('0x5'));var rimraf=require(_0x0bd4('0x6'));var config=require('../../config/environment');var attributes=require(_0x0bd4('0x7'));module[_0x0bd4('0x8')]=function(_0x8109aa,_0x378099){return _0x8109aa[_0x0bd4('0x9')](_0x0bd4('0xa'),attributes,{'tableName':_0x0bd4('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f128895..7b1a4ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0df=['request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','FreshdeskConfiguration,\x20%s,\x20%s'];(function(_0x3d0289,_0x4bd2ec){var _0x339f04=function(_0x495d2d){while(--_0x495d2d){_0x3d0289['push'](_0x3d0289['shift']());}};_0x339f04(++_0x4bd2ec);}(_0xb0df,0xa9));var _0xfb0d=function(_0x45346d,_0xffd56b){_0x45346d=_0x45346d-0x0;var _0x5ce7ca=_0xb0df[_0x45346d];return _0x5ce7ca;};'use strict';var _=require(_0xfb0d('0x0'));var util=require(_0xfb0d('0x1'));var moment=require(_0xfb0d('0x2'));var BPromise=require('bluebird');var rs=require(_0xfb0d('0x3'));var fs=require('fs');var Redis=require(_0xfb0d('0x4'));var db=require(_0xfb0d('0x5'))['db'];var utils=require(_0xfb0d('0x6'));var logger=require(_0xfb0d('0x7'))('rpc');var config=require(_0xfb0d('0x8'));var jayson=require(_0xfb0d('0x9'));var client=jayson[_0xfb0d('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x596522,_0x3323e4,_0x32008b){return new BPromise(function(_0xae53b0,_0x459638){return client[_0xfb0d('0xb')](_0x596522,_0x32008b)[_0xfb0d('0xc')](function(_0x165a82){logger[_0xfb0d('0xd')](_0xfb0d('0xe'),_0x3323e4,_0xfb0d('0xf'));logger[_0xfb0d('0x10')]('FreshdeskConfiguration,\x20%s,\x20%s,\x20%s',_0x3323e4,'request\x20sent',JSON[_0xfb0d('0x11')](_0x165a82));if(_0x165a82[_0xfb0d('0x12')]){if(_0x165a82['error'][_0xfb0d('0x13')]===0x1f4){logger[_0xfb0d('0x12')](_0xfb0d('0xe'),_0x3323e4,_0x165a82[_0xfb0d('0x12')][_0xfb0d('0x14')]);return _0x459638(_0x165a82[_0xfb0d('0x12')][_0xfb0d('0x14')]);}logger[_0xfb0d('0x12')](_0xfb0d('0xe'),_0x3323e4,_0x165a82[_0xfb0d('0x12')][_0xfb0d('0x14')]);return _0xae53b0(_0x165a82[_0xfb0d('0x12')][_0xfb0d('0x14')]);}else{logger['info'](_0xfb0d('0xe'),_0x3323e4,_0xfb0d('0xf'));_0xae53b0(_0x165a82[_0xfb0d('0x15')]['message']);}})[_0xfb0d('0x16')](function(_0x2ff6b2){logger['error'](_0xfb0d('0xe'),_0x3323e4,_0x2ff6b2);_0x459638(_0x2ff6b2);});});}
\ No newline at end of file
+var _0xe426=['result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info'];(function(_0x1ba5f9,_0x2b6ca8){var _0x491c5f=function(_0x586af8){while(--_0x586af8){_0x1ba5f9['push'](_0x1ba5f9['shift']());}};_0x491c5f(++_0x2b6ca8);}(_0xe426,0xda));var _0x6e42=function(_0x2aa1a7,_0x4b59d8){_0x2aa1a7=_0x2aa1a7-0x0;var _0x1a1221=_0xe426[_0x2aa1a7];return _0x1a1221;};'use strict';var _=require(_0x6e42('0x0'));var util=require(_0x6e42('0x1'));var moment=require(_0x6e42('0x2'));var BPromise=require(_0x6e42('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6e42('0x4'));var db=require(_0x6e42('0x5'))['db'];var utils=require(_0x6e42('0x6'));var logger=require('../../config/logger')(_0x6e42('0x7'));var config=require(_0x6e42('0x8'));var jayson=require(_0x6e42('0x9'));var client=jayson['client'][_0x6e42('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5e90f1,_0x4b2f23,_0x202723){return new BPromise(function(_0x4ba65b,_0x3a2028){return client[_0x6e42('0xb')](_0x5e90f1,_0x202723)[_0x6e42('0xc')](function(_0x4efb3d){logger['info'](_0x6e42('0xd'),_0x4b2f23,_0x6e42('0xe'));logger[_0x6e42('0xf')](_0x6e42('0x10'),_0x4b2f23,_0x6e42('0xe'),JSON[_0x6e42('0x11')](_0x4efb3d));if(_0x4efb3d[_0x6e42('0x12')]){if(_0x4efb3d[_0x6e42('0x12')][_0x6e42('0x13')]===0x1f4){logger[_0x6e42('0x12')](_0x6e42('0xd'),_0x4b2f23,_0x4efb3d[_0x6e42('0x12')][_0x6e42('0x14')]);return _0x3a2028(_0x4efb3d['error'][_0x6e42('0x14')]);}logger[_0x6e42('0x12')](_0x6e42('0xd'),_0x4b2f23,_0x4efb3d[_0x6e42('0x12')]['message']);return _0x4ba65b(_0x4efb3d[_0x6e42('0x12')][_0x6e42('0x14')]);}else{logger[_0x6e42('0x15')](_0x6e42('0xd'),_0x4b2f23,_0x6e42('0xe'));_0x4ba65b(_0x4efb3d[_0x6e42('0x16')][_0x6e42('0x14')]);}})[_0x6e42('0x17')](function(_0x257956){logger[_0x6e42('0x12')](_0x6e42('0xd'),_0x4b2f23,_0x257956);_0x3a2028(_0x257956);});});}
\ No newline at end of file
index cecdac2..1189408 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5feb=['destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshdeskField.controller','index','get','/:id','show','post','create','put','isAuthenticated','update','delete'];(function(_0x197a02,_0x3b357a){var _0x3d9c8b=function(_0x57188d){while(--_0x57188d){_0x197a02['push'](_0x197a02['shift']());}};_0x3d9c8b(++_0x3b357a);}(_0x5feb,0x192));var _0xb5fe=function(_0x37e7a4,_0xb7a496){_0x37e7a4=_0x37e7a4-0x0;var _0x269b2a=_0x5feb[_0x37e7a4];return _0x269b2a;};'use strict';var multer=require(_0xb5fe('0x0'));var util=require('util');var path=require(_0xb5fe('0x1'));var timeout=require(_0xb5fe('0x2'));var express=require(_0xb5fe('0x3'));var router=express['Router']();var fs_extra=require(_0xb5fe('0x4'));var auth=require(_0xb5fe('0x5'));var interaction=require(_0xb5fe('0x6'));var config=require('../../config/environment');var controller=require(_0xb5fe('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xb5fe('0x8')]);router[_0xb5fe('0x9')](_0xb5fe('0xa'),auth['isAuthenticated'](),controller[_0xb5fe('0xb')]);router[_0xb5fe('0xc')]('/',auth['isAuthenticated'](),controller[_0xb5fe('0xd')]);router[_0xb5fe('0xe')](_0xb5fe('0xa'),auth[_0xb5fe('0xf')](),controller[_0xb5fe('0x10')]);router[_0xb5fe('0x11')](_0xb5fe('0xa'),auth[_0xb5fe('0xf')](),controller[_0xb5fe('0x12')]);module[_0xb5fe('0x13')]=router;
\ No newline at end of file
+var _0x59c0=['Router','../../components/interaction/service','../../config/environment','./intFreshdeskField.controller','get','isAuthenticated','index','/:id','post','put','destroy','multer','path','connect-timeout','express'];(function(_0x5e88c3,_0x3fbc3e){var _0x4045a3=function(_0x5c63c4){while(--_0x5c63c4){_0x5e88c3['push'](_0x5e88c3['shift']());}};_0x4045a3(++_0x3fbc3e);}(_0x59c0,0x155));var _0x059c=function(_0xb929d1,_0x1320f5){_0xb929d1=_0xb929d1-0x0;var _0xc6265e=_0x59c0[_0xb929d1];return _0xc6265e;};'use strict';var multer=require(_0x059c('0x0'));var util=require('util');var path=require(_0x059c('0x1'));var timeout=require(_0x059c('0x2'));var express=require(_0x059c('0x3'));var router=express[_0x059c('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x059c('0x5'));var config=require(_0x059c('0x6'));var controller=require(_0x059c('0x7'));router[_0x059c('0x8')]('/',auth[_0x059c('0x9')](),controller[_0x059c('0xa')]);router[_0x059c('0x8')](_0x059c('0xb'),auth[_0x059c('0x9')](),controller['show']);router[_0x059c('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0x059c('0xd')](_0x059c('0xb'),auth[_0x059c('0x9')](),controller['update']);router['delete'](_0x059c('0xb'),auth[_0x059c('0x9')](),controller[_0x059c('0xe')]);module['exports']=router;
\ No newline at end of file
index ed25c12..d30a63f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd997=['variable','customVariable','keyValue','picklist','STRING','sequelize','exports','ENUM','string'];(function(_0x1c7605,_0x143bd3){var _0xa8dd18=function(_0x23b76f){while(--_0x23b76f){_0x1c7605['push'](_0x1c7605['shift']());}};_0xa8dd18(++_0x143bd3);}(_0xd997,0x1ac));var _0x7d99=function(_0xb59b70,_0x1336d4){_0xb59b70=_0xb59b70-0x0;var _0x21296c=_0xd997[_0xb59b70];return _0x21296c;};'use strict';var Sequelize=require(_0x7d99('0x0'));module[_0x7d99('0x1')]={'type':{'type':Sequelize[_0x7d99('0x2')](_0x7d99('0x3'),_0x7d99('0x4'),_0x7d99('0x5'),_0x7d99('0x6'),_0x7d99('0x7')),'defaultValue':_0x7d99('0x3')},'content':{'type':Sequelize[_0x7d99('0x8')]},'key':{'type':Sequelize[_0x7d99('0x8')]},'keyType':{'type':Sequelize[_0x7d99('0x2')](_0x7d99('0x3'),_0x7d99('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0x7d99('0x8')]},'idField':{'type':Sequelize[_0x7d99('0x8')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7d99('0x8')]}};
\ No newline at end of file
+var _0x4d0d=['customVariable','keyValue','string','STRING','sequelize','exports','ENUM','variable'];(function(_0x1bffd0,_0x5c57f3){var _0x15893a=function(_0x11cd75){while(--_0x11cd75){_0x1bffd0['push'](_0x1bffd0['shift']());}};_0x15893a(++_0x5c57f3);}(_0x4d0d,0xec));var _0xd4d0=function(_0x1ff6ec,_0x2b6b66){_0x1ff6ec=_0x1ff6ec-0x0;var _0x18259e=_0x4d0d[_0x1ff6ec];return _0x18259e;};'use strict';var Sequelize=require(_0xd4d0('0x0'));module[_0xd4d0('0x1')]={'type':{'type':Sequelize[_0xd4d0('0x2')]('string',_0xd4d0('0x3'),_0xd4d0('0x4'),_0xd4d0('0x5'),'picklist'),'defaultValue':_0xd4d0('0x6')},'content':{'type':Sequelize[_0xd4d0('0x7')]},'key':{'type':Sequelize[_0xd4d0('0x7')]},'keyType':{'type':Sequelize[_0xd4d0('0x2')]('string',_0xd4d0('0x3'),_0xd4d0('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xd4d0('0x7')]},'nameField':{'type':Sequelize[_0xd4d0('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xd4d0('0x7')]}};
\ No newline at end of file
index 6c8c651..31bd9d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b20=['../../components/auth/service','../../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','then','destroy','error','stack','name','index','FreshdeskField','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','includeAll','findAll','rows','catch','show','params','include','options','find','create','update','body','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse'];(function(_0x877609,_0x5e9082){var _0x3d2f0c=function(_0xf743b0){while(--_0xf743b0){_0x877609['push'](_0x877609['shift']());}};_0x3d2f0c(++_0x5e9082);}(_0x6b20,0xd1));var _0x06b2=function(_0xd80479,_0x42764e){_0xd80479=_0xd80479-0x0;var _0xa4fd1f=_0x6b20[_0xd80479];return _0xa4fd1f;};'use strict';var emlformat=require(_0x06b2('0x0'));var rimraf=require(_0x06b2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x06b2('0x2'));var rp=require('request-promise');var moment=require(_0x06b2('0x3'));var BPromise=require(_0x06b2('0x4'));var Mustache=require(_0x06b2('0x5'));var util=require('util');var path=require(_0x06b2('0x6'));var sox=require(_0x06b2('0x7'));var csv=require(_0x06b2('0x8'));var ejs=require(_0x06b2('0x9'));var fs=require('fs');var fs_extra=require(_0x06b2('0xa'));var _=require(_0x06b2('0xb'));var squel=require(_0x06b2('0xc'));var crypto=require('crypto');var jsforce=require(_0x06b2('0xd'));var deskjs=require(_0x06b2('0xe'));var toCsv=require(_0x06b2('0x8'));var querystring=require('querystring');var Papa=require(_0x06b2('0xf'));var Redis=require('ioredis');var authService=require(_0x06b2('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x06b2('0x11'));var logger=require(_0x06b2('0x12'))('api');var utils=require(_0x06b2('0x13'));var config=require(_0x06b2('0x14'));var licenseUtil=require(_0x06b2('0x15'));var db=require(_0x06b2('0x16'))['db'];function respondWithStatusCode(_0x44a9b4,_0x810a12){_0x810a12=_0x810a12||0xcc;return function(_0x3039c9){if(_0x3039c9){return _0x44a9b4[_0x06b2('0x17')](_0x810a12);}return _0x44a9b4[_0x06b2('0x18')](_0x810a12)[_0x06b2('0x19')]();};}function respondWithResult(_0xa81f11,_0x2822e9){_0x2822e9=_0x2822e9||0xc8;return function(_0x26faee){if(_0x26faee){return _0xa81f11['status'](_0x2822e9)[_0x06b2('0x1a')](_0x26faee);}};}function respondWithFilteredResult(_0xaee98c,_0x47496c){return function(_0x3830e9){if(_0x3830e9){var _0xef0466=typeof _0x47496c[_0x06b2('0x1b')]==='undefined'&&typeof _0x47496c[_0x06b2('0x1c')]===_0x06b2('0x1d');var _0x525945=_0x3830e9[_0x06b2('0x1e')];var _0x594b48=_0xef0466?0x0:_0x47496c['offset'];var _0x192270=_0xef0466?_0x3830e9[_0x06b2('0x1e')]:_0x47496c[_0x06b2('0x1b')]+_0x47496c[_0x06b2('0x1c')];var _0x4c4e21;if(_0x192270>=_0x525945){_0x192270=_0x525945;_0x4c4e21=0xc8;}else{_0x4c4e21=0xce;}_0xaee98c[_0x06b2('0x18')](_0x4c4e21);return _0xaee98c[_0x06b2('0x1f')](_0x06b2('0x20'),_0x594b48+'-'+_0x192270+'/'+_0x525945)[_0x06b2('0x1a')](_0x3830e9);}return null;};}function patchUpdates(_0xe28985){return function(_0x368ad8){try{jsonpatch[_0x06b2('0x21')](_0x368ad8,_0xe28985,!![]);}catch(_0x5ca622){return BPromise[_0x06b2('0x22')](_0x5ca622);}return _0x368ad8[_0x06b2('0x23')]();};}function saveUpdates(_0xb05f65,_0x208384){return function(_0x4e2a4c){if(_0x4e2a4c){return _0x4e2a4c['update'](_0xb05f65)[_0x06b2('0x24')](function(_0xb5231e){return _0xb5231e;});}return null;};}function removeEntity(_0x4fc95f,_0x39659f){return function(_0x5e40f2){if(_0x5e40f2){return _0x5e40f2[_0x06b2('0x25')]()[_0x06b2('0x24')](function(){_0x4fc95f[_0x06b2('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4382ce,_0x306ce){return function(_0xc65820){if(!_0xc65820){_0x4382ce[_0x06b2('0x17')](0x194);}return _0xc65820;};}function handleError(_0x1173fc,_0x4f5e90){_0x4f5e90=_0x4f5e90||0x1f4;return function(_0xbb00ea){logger[_0x06b2('0x26')](_0xbb00ea[_0x06b2('0x27')]);if(_0xbb00ea[_0x06b2('0x28')]){delete _0xbb00ea[_0x06b2('0x28')];}_0x1173fc[_0x06b2('0x18')](_0x4f5e90)['send'](_0xbb00ea);};}exports[_0x06b2('0x29')]=function(_0x2a3228,_0x2720fa){var _0x13c0eb={},_0x1f02d8={},_0x1bfaa9={'count':0x0,'rows':[]};var _0x3668bb=_['map'](db[_0x06b2('0x2a')][_0x06b2('0x2b')],function(_0x1637c2){return{'name':_0x1637c2[_0x06b2('0x2c')],'type':_0x1637c2[_0x06b2('0x2d')][_0x06b2('0x2e')]};});_0x1f02d8[_0x06b2('0x2f')]=_[_0x06b2('0x30')](_0x3668bb,'name');_0x1f02d8[_0x06b2('0x31')]=_[_0x06b2('0x32')](_0x2a3228[_0x06b2('0x31')]);_0x1f02d8[_0x06b2('0x33')]=_[_0x06b2('0x34')](_0x1f02d8[_0x06b2('0x2f')],_0x1f02d8[_0x06b2('0x31')]);_0x13c0eb['attributes']=_['intersection'](_0x1f02d8[_0x06b2('0x2f')],qs[_0x06b2('0x35')](_0x2a3228[_0x06b2('0x31')]['fields']));_0x13c0eb[_0x06b2('0x36')]=_0x13c0eb[_0x06b2('0x36')][_0x06b2('0x37')]?_0x13c0eb[_0x06b2('0x36')]:_0x1f02d8[_0x06b2('0x2f')];if(!_0x2a3228[_0x06b2('0x31')]['hasOwnProperty'](_0x06b2('0x38'))){_0x13c0eb[_0x06b2('0x1c')]=qs[_0x06b2('0x1c')](_0x2a3228['query'][_0x06b2('0x1c')]);_0x13c0eb[_0x06b2('0x1b')]=qs['offset'](_0x2a3228[_0x06b2('0x31')][_0x06b2('0x1b')]);}_0x13c0eb[_0x06b2('0x39')]=qs[_0x06b2('0x3a')](_0x2a3228[_0x06b2('0x31')][_0x06b2('0x3a')]);_0x13c0eb[_0x06b2('0x3b')]=qs[_0x06b2('0x33')](_[_0x06b2('0x3c')](_0x2a3228[_0x06b2('0x31')],_0x1f02d8[_0x06b2('0x33')]),_0x3668bb);if(_0x2a3228[_0x06b2('0x31')]['filter']){_0x13c0eb[_0x06b2('0x3b')]=_['merge'](_0x13c0eb['where'],{'$or':_[_0x06b2('0x30')](_0x3668bb,function(_0x4e92e0){if(_0x4e92e0[_0x06b2('0x2d')]!=='VIRTUAL'){var _0x35e29c={};_0x35e29c[_0x4e92e0[_0x06b2('0x28')]]={'$like':'%'+_0x2a3228[_0x06b2('0x31')][_0x06b2('0x3d')]+'%'};return _0x35e29c;}})});}_0x13c0eb=_[_0x06b2('0x3e')]({},_0x13c0eb,_0x2a3228['options']);var _0x404eab={'where':_0x13c0eb[_0x06b2('0x3b')]};return db[_0x06b2('0x2a')][_0x06b2('0x1e')](_0x404eab)[_0x06b2('0x24')](function(_0x39fd60){_0x1bfaa9['count']=_0x39fd60;if(_0x2a3228[_0x06b2('0x31')][_0x06b2('0x3f')]){_0x13c0eb['include']=[{'all':!![]}];}return db['FreshdeskField'][_0x06b2('0x40')](_0x13c0eb);})[_0x06b2('0x24')](function(_0x286c9b){_0x1bfaa9[_0x06b2('0x41')]=_0x286c9b;return _0x1bfaa9;})[_0x06b2('0x24')](respondWithFilteredResult(_0x2720fa,_0x13c0eb))[_0x06b2('0x42')](handleError(_0x2720fa,null));};exports[_0x06b2('0x43')]=function(_0x2ff968,_0x2e2a80){var _0x117bf4={'raw':!![],'where':{'id':_0x2ff968[_0x06b2('0x44')]['id']}},_0x1d7750={};_0x1d7750[_0x06b2('0x2f')]=_[_0x06b2('0x32')](db[_0x06b2('0x2a')][_0x06b2('0x2b')]);_0x1d7750[_0x06b2('0x31')]=_[_0x06b2('0x32')](_0x2ff968[_0x06b2('0x31')]);_0x1d7750['filters']=_[_0x06b2('0x34')](_0x1d7750[_0x06b2('0x2f')],_0x1d7750[_0x06b2('0x31')]);_0x117bf4[_0x06b2('0x36')]=_['intersection'](_0x1d7750[_0x06b2('0x2f')],qs[_0x06b2('0x35')](_0x2ff968['query'][_0x06b2('0x35')]));_0x117bf4[_0x06b2('0x36')]=_0x117bf4['attributes'][_0x06b2('0x37')]?_0x117bf4[_0x06b2('0x36')]:_0x1d7750['model'];if(_0x2ff968['query']['includeAll']){_0x117bf4[_0x06b2('0x45')]=[{'all':!![]}];}_0x117bf4=_[_0x06b2('0x3e')]({},_0x117bf4,_0x2ff968[_0x06b2('0x46')]);return db[_0x06b2('0x2a')][_0x06b2('0x47')](_0x117bf4)['then'](handleEntityNotFound(_0x2e2a80,null))['then'](respondWithResult(_0x2e2a80,null))[_0x06b2('0x42')](handleError(_0x2e2a80,null));};exports[_0x06b2('0x48')]=function(_0x979759,_0x1f4d89){return db[_0x06b2('0x2a')][_0x06b2('0x48')](_0x979759['body'],{})[_0x06b2('0x24')](respondWithResult(_0x1f4d89,0xc9))[_0x06b2('0x42')](handleError(_0x1f4d89,null));};exports[_0x06b2('0x49')]=function(_0x33f72e,_0x146c5c){if(_0x33f72e[_0x06b2('0x4a')]['id']){delete _0x33f72e['body']['id'];}return db[_0x06b2('0x2a')][_0x06b2('0x47')]({'where':{'id':_0x33f72e[_0x06b2('0x44')]['id']}})[_0x06b2('0x24')](handleEntityNotFound(_0x146c5c,null))['then'](saveUpdates(_0x33f72e[_0x06b2('0x4a')],null))[_0x06b2('0x24')](respondWithResult(_0x146c5c,null))[_0x06b2('0x42')](handleError(_0x146c5c,null));};exports[_0x06b2('0x25')]=function(_0x546c9e,_0x346f04){return db[_0x06b2('0x2a')][_0x06b2('0x47')]({'where':{'id':_0x546c9e[_0x06b2('0x44')]['id']}})[_0x06b2('0x24')](handleEntityNotFound(_0x346f04,null))[_0x06b2('0x24')](removeEntity(_0x346f04,null))[_0x06b2('0x42')](handleError(_0x346f04,null));};
\ No newline at end of file
+var _0xcffe=['apply','reject','save','then','error','name','send','FreshdeskField','rawAttributes','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','catch','show','find','create','body','update','params','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','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','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range'];(function(_0x5831c7,_0x4abd6a){var _0x1b1074=function(_0x54f800){while(--_0x54f800){_0x5831c7['push'](_0x5831c7['shift']());}};_0x1b1074(++_0x4abd6a);}(_0xcffe,0x1a1));var _0xecff=function(_0x54691e,_0x28b041){_0x54691e=_0x54691e-0x0;var _0x5520b2=_0xcffe[_0x54691e];return _0x5520b2;};'use strict';var emlformat=require(_0xecff('0x0'));var rimraf=require(_0xecff('0x1'));var zipdir=require(_0xecff('0x2'));var jsonpatch=require(_0xecff('0x3'));var rp=require(_0xecff('0x4'));var moment=require(_0xecff('0x5'));var BPromise=require(_0xecff('0x6'));var Mustache=require(_0xecff('0x7'));var util=require(_0xecff('0x8'));var path=require(_0xecff('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xecff('0xa'));var fs=require('fs');var fs_extra=require(_0xecff('0xb'));var _=require(_0xecff('0xc'));var squel=require(_0xecff('0xd'));var crypto=require(_0xecff('0xe'));var jsforce=require(_0xecff('0xf'));var deskjs=require(_0xecff('0x10'));var toCsv=require('to-csv');var querystring=require(_0xecff('0x11'));var Papa=require(_0xecff('0x12'));var Redis=require(_0xecff('0x13'));var authService=require(_0xecff('0x14'));var qs=require(_0xecff('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xecff('0x16'));var logger=require(_0xecff('0x17'))(_0xecff('0x18'));var utils=require(_0xecff('0x19'));var config=require(_0xecff('0x1a'));var licenseUtil=require(_0xecff('0x1b'));var db=require(_0xecff('0x1c'))['db'];function respondWithStatusCode(_0x32627c,_0x3e907d){_0x3e907d=_0x3e907d||0xcc;return function(_0x151a79){if(_0x151a79){return _0x32627c[_0xecff('0x1d')](_0x3e907d);}return _0x32627c[_0xecff('0x1e')](_0x3e907d)[_0xecff('0x1f')]();};}function respondWithResult(_0xb8745f,_0x5495f9){_0x5495f9=_0x5495f9||0xc8;return function(_0x4b1893){if(_0x4b1893){return _0xb8745f[_0xecff('0x1e')](_0x5495f9)[_0xecff('0x20')](_0x4b1893);}};}function respondWithFilteredResult(_0x558ecd,_0x35ce1f){return function(_0x362ed0){if(_0x362ed0){var _0x3a7623=typeof _0x35ce1f['offset']==='undefined'&&typeof _0x35ce1f[_0xecff('0x21')]===_0xecff('0x22');var _0x53ff8e=_0x362ed0[_0xecff('0x23')];var _0x3adc81=_0x3a7623?0x0:_0x35ce1f[_0xecff('0x24')];var _0x2393db=_0x3a7623?_0x362ed0[_0xecff('0x23')]:_0x35ce1f[_0xecff('0x24')]+_0x35ce1f['limit'];var _0x229728;if(_0x2393db>=_0x53ff8e){_0x2393db=_0x53ff8e;_0x229728=0xc8;}else{_0x229728=0xce;}_0x558ecd[_0xecff('0x1e')](_0x229728);return _0x558ecd[_0xecff('0x25')](_0xecff('0x26'),_0x3adc81+'-'+_0x2393db+'/'+_0x53ff8e)['json'](_0x362ed0);}return null;};}function patchUpdates(_0x4bb94e){return function(_0x2e2bdd){try{jsonpatch[_0xecff('0x27')](_0x2e2bdd,_0x4bb94e,!![]);}catch(_0x333eb7){return BPromise[_0xecff('0x28')](_0x333eb7);}return _0x2e2bdd[_0xecff('0x29')]();};}function saveUpdates(_0x494754,_0x14378d){return function(_0x520d6d){if(_0x520d6d){return _0x520d6d['update'](_0x494754)[_0xecff('0x2a')](function(_0x4fdc8e){return _0x4fdc8e;});}return null;};}function removeEntity(_0x2447da,_0x49c0cd){return function(_0x389281){if(_0x389281){return _0x389281['destroy']()[_0xecff('0x2a')](function(){_0x2447da[_0xecff('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9f173d,_0x18f4d4){return function(_0x393312){if(!_0x393312){_0x9f173d[_0xecff('0x1d')](0x194);}return _0x393312;};}function handleError(_0x19202e,_0x493465){_0x493465=_0x493465||0x1f4;return function(_0x4f987b){logger[_0xecff('0x2b')](_0x4f987b['stack']);if(_0x4f987b[_0xecff('0x2c')]){delete _0x4f987b[_0xecff('0x2c')];}_0x19202e[_0xecff('0x1e')](_0x493465)[_0xecff('0x2d')](_0x4f987b);};}exports['index']=function(_0x4e7afa,_0x55502f){var _0x202ee0={},_0xabe5da={},_0x230d04={'count':0x0,'rows':[]};var _0x1e3175=_['map'](db[_0xecff('0x2e')][_0xecff('0x2f')],function(_0x1926a5){return{'name':_0x1926a5['fieldName'],'type':_0x1926a5[_0xecff('0x30')][_0xecff('0x31')]};});_0xabe5da[_0xecff('0x32')]=_[_0xecff('0x33')](_0x1e3175,'name');_0xabe5da[_0xecff('0x34')]=_[_0xecff('0x35')](_0x4e7afa['query']);_0xabe5da[_0xecff('0x36')]=_[_0xecff('0x37')](_0xabe5da[_0xecff('0x32')],_0xabe5da[_0xecff('0x34')]);_0x202ee0['attributes']=_[_0xecff('0x37')](_0xabe5da[_0xecff('0x32')],qs[_0xecff('0x38')](_0x4e7afa['query'][_0xecff('0x38')]));_0x202ee0[_0xecff('0x39')]=_0x202ee0[_0xecff('0x39')][_0xecff('0x3a')]?_0x202ee0[_0xecff('0x39')]:_0xabe5da[_0xecff('0x32')];if(!_0x4e7afa['query']['hasOwnProperty']('nolimit')){_0x202ee0[_0xecff('0x21')]=qs['limit'](_0x4e7afa[_0xecff('0x34')][_0xecff('0x21')]);_0x202ee0['offset']=qs[_0xecff('0x24')](_0x4e7afa[_0xecff('0x34')][_0xecff('0x24')]);}_0x202ee0['order']=qs[_0xecff('0x3b')](_0x4e7afa[_0xecff('0x34')][_0xecff('0x3b')]);_0x202ee0['where']=qs[_0xecff('0x36')](_[_0xecff('0x3c')](_0x4e7afa[_0xecff('0x34')],_0xabe5da[_0xecff('0x36')]),_0x1e3175);if(_0x4e7afa[_0xecff('0x34')][_0xecff('0x3d')]){_0x202ee0[_0xecff('0x3e')]=_[_0xecff('0x3f')](_0x202ee0[_0xecff('0x3e')],{'$or':_[_0xecff('0x33')](_0x1e3175,function(_0xb9a367){if(_0xb9a367['type']!==_0xecff('0x40')){var _0x23c8f1={};_0x23c8f1[_0xb9a367[_0xecff('0x2c')]]={'$like':'%'+_0x4e7afa[_0xecff('0x34')][_0xecff('0x3d')]+'%'};return _0x23c8f1;}})});}_0x202ee0=_[_0xecff('0x3f')]({},_0x202ee0,_0x4e7afa[_0xecff('0x41')]);var _0x2ed2ab={'where':_0x202ee0['where']};return db[_0xecff('0x2e')]['count'](_0x2ed2ab)[_0xecff('0x2a')](function(_0x344108){_0x230d04[_0xecff('0x23')]=_0x344108;if(_0x4e7afa[_0xecff('0x34')][_0xecff('0x42')]){_0x202ee0[_0xecff('0x43')]=[{'all':!![]}];}return db[_0xecff('0x2e')]['findAll'](_0x202ee0);})[_0xecff('0x2a')](function(_0x3dc857){_0x230d04['rows']=_0x3dc857;return _0x230d04;})['then'](respondWithFilteredResult(_0x55502f,_0x202ee0))[_0xecff('0x44')](handleError(_0x55502f,null));};exports[_0xecff('0x45')]=function(_0x27f0dd,_0x1f095e){var _0x47084b={'raw':!![],'where':{'id':_0x27f0dd['params']['id']}},_0xb9117c={};_0xb9117c[_0xecff('0x32')]=_[_0xecff('0x35')](db['FreshdeskField'][_0xecff('0x2f')]);_0xb9117c[_0xecff('0x34')]=_[_0xecff('0x35')](_0x27f0dd[_0xecff('0x34')]);_0xb9117c[_0xecff('0x36')]=_[_0xecff('0x37')](_0xb9117c['model'],_0xb9117c[_0xecff('0x34')]);_0x47084b[_0xecff('0x39')]=_[_0xecff('0x37')](_0xb9117c['model'],qs[_0xecff('0x38')](_0x27f0dd[_0xecff('0x34')][_0xecff('0x38')]));_0x47084b[_0xecff('0x39')]=_0x47084b['attributes'][_0xecff('0x3a')]?_0x47084b[_0xecff('0x39')]:_0xb9117c['model'];if(_0x27f0dd[_0xecff('0x34')][_0xecff('0x42')]){_0x47084b['include']=[{'all':!![]}];}_0x47084b=_[_0xecff('0x3f')]({},_0x47084b,_0x27f0dd['options']);return db[_0xecff('0x2e')][_0xecff('0x46')](_0x47084b)[_0xecff('0x2a')](handleEntityNotFound(_0x1f095e,null))[_0xecff('0x2a')](respondWithResult(_0x1f095e,null))[_0xecff('0x44')](handleError(_0x1f095e,null));};exports[_0xecff('0x47')]=function(_0x563f68,_0x596eb8){return db[_0xecff('0x2e')][_0xecff('0x47')](_0x563f68[_0xecff('0x48')],{})[_0xecff('0x2a')](respondWithResult(_0x596eb8,0xc9))[_0xecff('0x44')](handleError(_0x596eb8,null));};exports[_0xecff('0x49')]=function(_0x36c50f,_0x3ac749){if(_0x36c50f['body']['id']){delete _0x36c50f[_0xecff('0x48')]['id'];}return db[_0xecff('0x2e')]['find']({'where':{'id':_0x36c50f[_0xecff('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3ac749,null))[_0xecff('0x2a')](saveUpdates(_0x36c50f[_0xecff('0x48')],null))['then'](respondWithResult(_0x3ac749,null))[_0xecff('0x44')](handleError(_0x3ac749,null));};exports[_0xecff('0x4b')]=function(_0x3e79f9,_0x188d08){return db[_0xecff('0x2e')]['find']({'where':{'id':_0x3e79f9['params']['id']}})[_0xecff('0x2a')](handleEntityNotFound(_0x188d08,null))[_0xecff('0x2a')](removeEntity(_0x188d08,null))[_0xecff('0x44')](handleError(_0x188d08,null));};
\ No newline at end of file
index ea52acf..5fcf9bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd65=['exports','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','idField','api','moment','request-promise','path','rimraf','../../config/environment','./intFreshdeskField.attributes'];(function(_0x298d16,_0x525964){var _0x471ff7=function(_0x5d313a){while(--_0x5d313a){_0x298d16['push'](_0x298d16['shift']());}};_0x471ff7(++_0x525964);}(_0xfd65,0x13d));var _0x5fd6=function(_0x9c2427,_0x17c865){_0x9c2427=_0x9c2427-0x0;var _0x51984f=_0xfd65[_0x9c2427];return _0x51984f;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x5fd6('0x0'));var moment=require(_0x5fd6('0x1'));var BPromise=require('bluebird');var rp=require(_0x5fd6('0x2'));var fs=require('fs');var path=require(_0x5fd6('0x3'));var rimraf=require(_0x5fd6('0x4'));var config=require(_0x5fd6('0x5'));var attributes=require(_0x5fd6('0x6'));module[_0x5fd6('0x7')]=function(_0x2daf43,_0x4865ee){return _0x2daf43['define'](_0x5fd6('0x8'),attributes,{'tableName':_0x5fd6('0x9'),'paranoid':![],'indexes':[{'name':_0x5fd6('0xa'),'fields':[_0x5fd6('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6904=['FieldId','lodash','../../config/logger','request-promise','path','rimraf','./intFreshdeskField.attributes','exports','define','int_freshdesk_fields','freshdesk_unique_index','idField'];(function(_0x3fe469,_0x40058a){var _0x78e9ae=function(_0xe474eb){while(--_0xe474eb){_0x3fe469['push'](_0x3fe469['shift']());}};_0x78e9ae(++_0x40058a);}(_0x6904,0xd9));var _0x4690=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0x6904[_0x273c39];return _0x46d6b5;};'use strict';var _=require(_0x4690('0x0'));var util=require('util');var logger=require(_0x4690('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x4690('0x2'));var fs=require('fs');var path=require(_0x4690('0x3'));var rimraf=require(_0x4690('0x4'));var config=require('../../config/environment');var attributes=require(_0x4690('0x5'));module[_0x4690('0x6')]=function(_0x50f994,_0x3cae20){return _0x50f994[_0x4690('0x7')]('FreshdeskField',attributes,{'tableName':_0x4690('0x8'),'paranoid':![],'indexes':[{'name':_0x4690('0x9'),'fields':[_0x4690('0xa'),_0x4690('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 8fb47fc..4fc96d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d5d=['message','info','util','moment','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','FreshdeskField,\x20%s,\x20%s','request\x20sent','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x403c20,_0x4a7b99){var _0x2b271a=function(_0x106ecb){while(--_0x106ecb){_0x403c20['push'](_0x403c20['shift']());}};_0x2b271a(++_0x4a7b99);}(_0x4d5d,0x191));var _0xd4d5=function(_0x1f0213,_0x3c3c9e){_0x1f0213=_0x1f0213-0x0;var _0x2048c4=_0x4d5d[_0x1f0213];return _0x2048c4;};'use strict';var _=require('lodash');var util=require(_0xd4d5('0x0'));var moment=require(_0xd4d5('0x1'));var BPromise=require('bluebird');var rs=require(_0xd4d5('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd4d5('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xd4d5('0x4'))('rpc');var config=require(_0xd4d5('0x5'));var jayson=require(_0xd4d5('0x6'));var client=jayson[_0xd4d5('0x7')][_0xd4d5('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x215f6c,_0x5dae58,_0x416080){return new BPromise(function(_0x28ecd2,_0x1696eb){return client[_0xd4d5('0x9')](_0x215f6c,_0x416080)[_0xd4d5('0xa')](function(_0x5c5cb1){logger['info'](_0xd4d5('0xb'),_0x5dae58,_0xd4d5('0xc'));logger['debug'](_0xd4d5('0xd'),_0x5dae58,_0xd4d5('0xc'),JSON[_0xd4d5('0xe')](_0x5c5cb1));if(_0x5c5cb1[_0xd4d5('0xf')]){if(_0x5c5cb1[_0xd4d5('0xf')][_0xd4d5('0x10')]===0x1f4){logger[_0xd4d5('0xf')](_0xd4d5('0xb'),_0x5dae58,_0x5c5cb1[_0xd4d5('0xf')]['message']);return _0x1696eb(_0x5c5cb1['error']['message']);}logger[_0xd4d5('0xf')](_0xd4d5('0xb'),_0x5dae58,_0x5c5cb1[_0xd4d5('0xf')][_0xd4d5('0x11')]);return _0x28ecd2(_0x5c5cb1[_0xd4d5('0xf')][_0xd4d5('0x11')]);}else{logger[_0xd4d5('0x12')](_0xd4d5('0xb'),_0x5dae58,_0xd4d5('0xc'));_0x28ecd2(_0x5c5cb1['result'][_0xd4d5('0x11')]);}})['catch'](function(_0x345750){logger[_0xd4d5('0xf')](_0xd4d5('0xb'),_0x5dae58,_0x345750);_0x1696eb(_0x345750);});});}
\ No newline at end of file
+var _0xd4f1=['client','http','request','then','info','FreshdeskField,\x20%s,\x20%s','request\x20sent','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x5b8ac0,_0x111e9d){var _0x370099=function(_0x558edb){while(--_0x558edb){_0x5b8ac0['push'](_0x5b8ac0['shift']());}};_0x370099(++_0x111e9d);}(_0xd4f1,0x6a));var _0x1d4f=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd4f1[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1d4f('0x0'));var BPromise=require(_0x1d4f('0x1'));var rs=require(_0x1d4f('0x2'));var fs=require('fs');var Redis=require(_0x1d4f('0x3'));var db=require(_0x1d4f('0x4'))['db'];var utils=require(_0x1d4f('0x5'));var logger=require(_0x1d4f('0x6'))('rpc');var config=require(_0x1d4f('0x7'));var jayson=require(_0x1d4f('0x8'));var client=jayson[_0x1d4f('0x9')][_0x1d4f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5f5976,_0x2e9d4f,_0x41b52f){return new BPromise(function(_0x23e0f8,_0x4eb5da){return client[_0x1d4f('0xb')](_0x5f5976,_0x41b52f)[_0x1d4f('0xc')](function(_0x48a41a){logger[_0x1d4f('0xd')](_0x1d4f('0xe'),_0x2e9d4f,_0x1d4f('0xf'));logger['debug'](_0x1d4f('0x10'),_0x2e9d4f,_0x1d4f('0xf'),JSON[_0x1d4f('0x11')](_0x48a41a));if(_0x48a41a[_0x1d4f('0x12')]){if(_0x48a41a[_0x1d4f('0x12')][_0x1d4f('0x13')]===0x1f4){logger[_0x1d4f('0x12')]('FreshdeskField,\x20%s,\x20%s',_0x2e9d4f,_0x48a41a[_0x1d4f('0x12')][_0x1d4f('0x14')]);return _0x4eb5da(_0x48a41a[_0x1d4f('0x12')][_0x1d4f('0x14')]);}logger[_0x1d4f('0x12')]('FreshdeskField,\x20%s,\x20%s',_0x2e9d4f,_0x48a41a[_0x1d4f('0x12')][_0x1d4f('0x14')]);return _0x23e0f8(_0x48a41a[_0x1d4f('0x12')][_0x1d4f('0x14')]);}else{logger[_0x1d4f('0xd')](_0x1d4f('0xe'),_0x2e9d4f,'request\x20sent');_0x23e0f8(_0x48a41a[_0x1d4f('0x15')]['message']);}})[_0x1d4f('0x16')](function(_0x225ec9){logger[_0x1d4f('0x12')](_0x1d4f('0xe'),_0x2e9d4f,_0x225ec9);_0x4eb5da(_0x225ec9);});});}
\ No newline at end of file
index de854ab..d6e8896 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9aea=['index','/:id','show','/:id/configurations','isAuthenticated','getConfigurations','/:id/fields','getFields','post','addConfiguration','put','update','destroy','exports','multer','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get'];(function(_0x43d11d,_0xccff91){var _0x38cd08=function(_0x131ae2){while(--_0x131ae2){_0x43d11d['push'](_0x43d11d['shift']());}};_0x38cd08(++_0xccff91);}(_0x9aea,0xdd));var _0xa9ae=function(_0x147c73,_0x36d060){_0x147c73=_0x147c73-0x0;var _0x4e974e=_0x9aea[_0x147c73];return _0x4e974e;};'use strict';var multer=require(_0xa9ae('0x0'));var util=require('util');var path=require(_0xa9ae('0x1'));var timeout=require('connect-timeout');var express=require(_0xa9ae('0x2'));var router=express[_0xa9ae('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xa9ae('0x4'));var interaction=require(_0xa9ae('0x5'));var config=require(_0xa9ae('0x6'));var controller=require(_0xa9ae('0x7'));router[_0xa9ae('0x8')]('/',auth['isAuthenticated'](),controller[_0xa9ae('0x9')]);router[_0xa9ae('0x8')](_0xa9ae('0xa'),auth['isAuthenticated'](),controller[_0xa9ae('0xb')]);router[_0xa9ae('0x8')](_0xa9ae('0xc'),auth[_0xa9ae('0xd')](),controller[_0xa9ae('0xe')]);router[_0xa9ae('0x8')](_0xa9ae('0xf'),auth[_0xa9ae('0xd')](),controller[_0xa9ae('0x10')]);router['post']('/',auth[_0xa9ae('0xd')](),controller['create']);router[_0xa9ae('0x11')](_0xa9ae('0xc'),auth[_0xa9ae('0xd')](),controller[_0xa9ae('0x12')]);router[_0xa9ae('0x13')](_0xa9ae('0xa'),auth[_0xa9ae('0xd')](),controller[_0xa9ae('0x14')]);router['delete'](_0xa9ae('0xa'),auth[_0xa9ae('0xd')](),controller[_0xa9ae('0x15')]);module[_0xa9ae('0x16')]=router;
\ No newline at end of file
+var _0x0bb5=['./intFreshsalesAccount.controller','get','/:id','isAuthenticated','show','getConfigurations','/:id/fields','getFields','post','create','/:id/configurations','put','update','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x2d9674,_0x39a161){var _0x4f6a63=function(_0x3df05c){while(--_0x3df05c){_0x2d9674['push'](_0x2d9674['shift']());}};_0x4f6a63(++_0x39a161);}(_0x0bb5,0x148));var _0x50bb=function(_0x5c98be,_0xb590de){_0x5c98be=_0x5c98be-0x0;var _0x33b65f=_0x0bb5[_0x5c98be];return _0x33b65f;};'use strict';var multer=require(_0x50bb('0x0'));var util=require(_0x50bb('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x50bb('0x2'));var router=express[_0x50bb('0x3')]();var fs_extra=require(_0x50bb('0x4'));var auth=require(_0x50bb('0x5'));var interaction=require(_0x50bb('0x6'));var config=require(_0x50bb('0x7'));var controller=require(_0x50bb('0x8'));router[_0x50bb('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x50bb('0x9')](_0x50bb('0xa'),auth[_0x50bb('0xb')](),controller[_0x50bb('0xc')]);router['get']('/:id/configurations',auth[_0x50bb('0xb')](),controller[_0x50bb('0xd')]);router[_0x50bb('0x9')](_0x50bb('0xe'),auth['isAuthenticated'](),controller[_0x50bb('0xf')]);router[_0x50bb('0x10')]('/',auth[_0x50bb('0xb')](),controller[_0x50bb('0x11')]);router[_0x50bb('0x10')](_0x50bb('0x12'),auth[_0x50bb('0xb')](),controller['addConfiguration']);router[_0x50bb('0x13')]('/:id',auth[_0x50bb('0xb')](),controller[_0x50bb('0x14')]);router[_0x50bb('0x15')]('/:id',auth[_0x50bb('0xb')](),controller[_0x50bb('0x16')]);module[_0x50bb('0x17')]=router;
\ No newline at end of file
index 3068bbb..204e72a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['remoteUri','sequelize','exports','STRING','username'];(function(_0x115d6b,_0xe722a9){var _0x295fec=function(_0x489677){while(--_0x489677){_0x115d6b['push'](_0x115d6b['shift']());}};_0x295fec(++_0xe722a9);}(_0x2ef3,0xba));var _0x32ef=function(_0xf85c36,_0x333331){_0xf85c36=_0xf85c36-0x0;var _0x201b85=_0x2ef3[_0xf85c36];return _0x201b85;};'use strict';var Sequelize=require(_0x32ef('0x0'));module[_0x32ef('0x1')]={'name':{'type':Sequelize[_0x32ef('0x2')]},'description':{'type':Sequelize[_0x32ef('0x2')]},'username':{'type':Sequelize[_0x32ef('0x2')],'unique':_0x32ef('0x3')},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x32ef('0x2')],'unique':_0x32ef('0x4')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x0b0e=['STRING','username','remoteUri','sequelize'];(function(_0x2ef5e0,_0x42af1c){var _0x18f392=function(_0x4840cc){while(--_0x4840cc){_0x2ef5e0['push'](_0x2ef5e0['shift']());}};_0x18f392(++_0x42af1c);}(_0x0b0e,0x187));var _0xe0b0=function(_0x3e99cb,_0x1d2fe0){_0x3e99cb=_0x3e99cb-0x0;var _0x1bc729=_0x0b0e[_0x3e99cb];return _0x1bc729;};'use strict';var Sequelize=require(_0xe0b0('0x0'));module['exports']={'name':{'type':Sequelize[_0xe0b0('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xe0b0('0x1')],'unique':_0xe0b0('0x2')},'apiKey':{'type':Sequelize[_0xe0b0('0x1')]},'remoteUri':{'type':Sequelize[_0xe0b0('0x1')],'unique':_0xe0b0('0x3')},'serverUrl':{'type':Sequelize[_0xe0b0('0x1')],'allowNull':![]}};
\ No newline at end of file
index 76912f5..51981e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa0a=['squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','FreshsalesAccount','type','query','filters','model','attributes','intersection','fields','hasOwnProperty','nolimit','order','where','filter','merge','map','VIRTUAL','options','includeAll','include','findAll','catch','show','params','keys','rawAttributes','length','find','create','body','getConfigurations','findOne','FreshsalesConfiguration','sort','pick','AccountId','Subjects','getDescriptions','FreshsalesField','getFields','username','apiKey','remoteUri','slice','substring','GET','format','%s%s','/api/selector/owners','Token\x20token=','users','email','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','moment','mustache','util','to-csv','lodash'];(function(_0xb1e42f,_0x321a3f){var _0x513359=function(_0x2cf4a2){while(--_0x2cf4a2){_0xb1e42f['push'](_0xb1e42f['shift']());}};_0x513359(++_0x321a3f);}(_0xaa0a,0x118));var _0xaaa0=function(_0x4c009b,_0x3ad90e){_0x4c009b=_0x4c009b-0x0;var _0x359e26=_0xaa0a[_0x4c009b];return _0x359e26;};'use strict';var emlformat=require(_0xaaa0('0x0'));var rimraf=require(_0xaaa0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xaaa0('0x2'));var rp=require('request-promise');var moment=require(_0xaaa0('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xaaa0('0x4'));var util=require(_0xaaa0('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xaaa0('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xaaa0('0x7'));var squel=require(_0xaaa0('0x8'));var crypto=require('crypto');var jsforce=require(_0xaaa0('0x9'));var deskjs=require(_0xaaa0('0xa'));var toCsv=require(_0xaaa0('0x6'));var querystring=require(_0xaaa0('0xb'));var Papa=require(_0xaaa0('0xc'));var Redis=require('ioredis');var authService=require(_0xaaa0('0xd'));var qs=require(_0xaaa0('0xe'));var as=require(_0xaaa0('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xaaa0('0x10'))(_0xaaa0('0x11'));var utils=require(_0xaaa0('0x12'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0xaaa0('0x13'));function respondWithStatusCode(_0x49c2e3,_0x15d499){_0x15d499=_0x15d499||0xcc;return function(_0x491e49){if(_0x491e49){return _0x49c2e3[_0xaaa0('0x14')](_0x15d499);}return _0x49c2e3[_0xaaa0('0x15')](_0x15d499)[_0xaaa0('0x16')]();};}function respondWithResult(_0x2577bc,_0x1c4523){_0x1c4523=_0x1c4523||0xc8;return function(_0x1a11b5){if(_0x1a11b5){return _0x2577bc[_0xaaa0('0x15')](_0x1c4523)[_0xaaa0('0x17')](_0x1a11b5);}};}function respondWithFilteredResult(_0x27a071,_0x3cc5c0){return function(_0x1eea2f){if(_0x1eea2f){var _0x340931=typeof _0x3cc5c0[_0xaaa0('0x18')]===_0xaaa0('0x19')&&typeof _0x3cc5c0[_0xaaa0('0x1a')]===_0xaaa0('0x19');var _0x3790f3=_0x1eea2f[_0xaaa0('0x1b')];var _0x5c08fa=_0x340931?0x0:_0x3cc5c0[_0xaaa0('0x18')];var _0x590a74=_0x340931?_0x1eea2f['count']:_0x3cc5c0[_0xaaa0('0x18')]+_0x3cc5c0[_0xaaa0('0x1a')];var _0x979312;if(_0x590a74>=_0x3790f3){_0x590a74=_0x3790f3;_0x979312=0xc8;}else{_0x979312=0xce;}_0x27a071[_0xaaa0('0x15')](_0x979312);return _0x27a071[_0xaaa0('0x1c')](_0xaaa0('0x1d'),_0x5c08fa+'-'+_0x590a74+'/'+_0x3790f3)[_0xaaa0('0x17')](_0x1eea2f);}return null;};}function patchUpdates(_0xb5425f){return function(_0x1ce486){try{jsonpatch[_0xaaa0('0x1e')](_0x1ce486,_0xb5425f,!![]);}catch(_0x14bdd5){return BPromise[_0xaaa0('0x1f')](_0x14bdd5);}return _0x1ce486[_0xaaa0('0x20')]();};}function saveUpdates(_0xb8b185,_0x9d3092){return function(_0x255d8f){if(_0x255d8f){return _0x255d8f[_0xaaa0('0x21')](_0xb8b185)[_0xaaa0('0x22')](function(_0x4227d7){return _0x4227d7;});}return null;};}function removeEntity(_0x3ae298,_0x528baf){return function(_0x42534a){if(_0x42534a){return _0x42534a[_0xaaa0('0x23')]()[_0xaaa0('0x22')](function(){_0x3ae298[_0xaaa0('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x299a5d,_0x452bce){return function(_0x21a02f){if(!_0x21a02f){_0x299a5d[_0xaaa0('0x14')](0x194);}return _0x21a02f;};}function handleError(_0x450464,_0xeb29fa){_0xeb29fa=_0xeb29fa||0x1f4;return function(_0x126ebc){logger[_0xaaa0('0x24')](_0x126ebc[_0xaaa0('0x25')]);if(_0x126ebc['name']){delete _0x126ebc[_0xaaa0('0x26')];}_0x450464[_0xaaa0('0x15')](_0xeb29fa)[_0xaaa0('0x27')](_0x126ebc);};}exports[_0xaaa0('0x28')]=function(_0x51c6e5,_0x28da0d){var _0xc99088={},_0x726dd1={},_0x4be7c2={'count':0x0,'rows':[]};var _0x143807=_['map'](db[_0xaaa0('0x29')]['rawAttributes'],function(_0x4b08df){return{'name':_0x4b08df['fieldName'],'type':_0x4b08df[_0xaaa0('0x2a')]['key']};});_0x726dd1['model']=_['map'](_0x143807,_0xaaa0('0x26'));_0x726dd1['query']=_['keys'](_0x51c6e5[_0xaaa0('0x2b')]);_0x726dd1[_0xaaa0('0x2c')]=_['intersection'](_0x726dd1[_0xaaa0('0x2d')],_0x726dd1[_0xaaa0('0x2b')]);_0xc99088[_0xaaa0('0x2e')]=_[_0xaaa0('0x2f')](_0x726dd1['model'],qs[_0xaaa0('0x30')](_0x51c6e5['query'][_0xaaa0('0x30')]));_0xc99088[_0xaaa0('0x2e')]=_0xc99088[_0xaaa0('0x2e')]['length']?_0xc99088[_0xaaa0('0x2e')]:_0x726dd1[_0xaaa0('0x2d')];if(!_0x51c6e5['query'][_0xaaa0('0x31')](_0xaaa0('0x32'))){_0xc99088[_0xaaa0('0x1a')]=qs['limit'](_0x51c6e5[_0xaaa0('0x2b')][_0xaaa0('0x1a')]);_0xc99088[_0xaaa0('0x18')]=qs[_0xaaa0('0x18')](_0x51c6e5[_0xaaa0('0x2b')][_0xaaa0('0x18')]);}_0xc99088[_0xaaa0('0x33')]=qs['sort'](_0x51c6e5[_0xaaa0('0x2b')]['sort']);_0xc99088[_0xaaa0('0x34')]=qs[_0xaaa0('0x2c')](_['pick'](_0x51c6e5['query'],_0x726dd1['filters']),_0x143807);if(_0x51c6e5[_0xaaa0('0x2b')][_0xaaa0('0x35')]){_0xc99088[_0xaaa0('0x34')]=_[_0xaaa0('0x36')](_0xc99088['where'],{'$or':_[_0xaaa0('0x37')](_0x143807,function(_0x44cd66){if(_0x44cd66[_0xaaa0('0x2a')]!==_0xaaa0('0x38')){var _0x54d05b={};_0x54d05b[_0x44cd66[_0xaaa0('0x26')]]={'$like':'%'+_0x51c6e5[_0xaaa0('0x2b')][_0xaaa0('0x35')]+'%'};return _0x54d05b;}})});}_0xc99088=_['merge']({},_0xc99088,_0x51c6e5[_0xaaa0('0x39')]);var _0x419985={'where':_0xc99088[_0xaaa0('0x34')]};return db[_0xaaa0('0x29')][_0xaaa0('0x1b')](_0x419985)[_0xaaa0('0x22')](function(_0x2f9c87){_0x4be7c2['count']=_0x2f9c87;if(_0x51c6e5[_0xaaa0('0x2b')][_0xaaa0('0x3a')]){_0xc99088[_0xaaa0('0x3b')]=[{'all':!![]}];}return db[_0xaaa0('0x29')][_0xaaa0('0x3c')](_0xc99088);})[_0xaaa0('0x22')](function(_0x45d213){_0x4be7c2['rows']=_0x45d213;return _0x4be7c2;})[_0xaaa0('0x22')](respondWithFilteredResult(_0x28da0d,_0xc99088))[_0xaaa0('0x3d')](handleError(_0x28da0d,null));};exports[_0xaaa0('0x3e')]=function(_0x4c7b0d,_0x2f35ee){var _0xec9ae8={'raw':![],'where':{'id':_0x4c7b0d[_0xaaa0('0x3f')]['id']}},_0x5b53d2={};_0x5b53d2['model']=_[_0xaaa0('0x40')](db[_0xaaa0('0x29')][_0xaaa0('0x41')]);_0x5b53d2[_0xaaa0('0x2b')]=_[_0xaaa0('0x40')](_0x4c7b0d['query']);_0x5b53d2['filters']=_[_0xaaa0('0x2f')](_0x5b53d2[_0xaaa0('0x2d')],_0x5b53d2[_0xaaa0('0x2b')]);_0xec9ae8[_0xaaa0('0x2e')]=_[_0xaaa0('0x2f')](_0x5b53d2['model'],qs['fields'](_0x4c7b0d['query'][_0xaaa0('0x30')]));_0xec9ae8[_0xaaa0('0x2e')]=_0xec9ae8['attributes'][_0xaaa0('0x42')]?_0xec9ae8['attributes']:_0x5b53d2[_0xaaa0('0x2d')];if(_0x4c7b0d[_0xaaa0('0x2b')][_0xaaa0('0x3a')]){_0xec9ae8[_0xaaa0('0x3b')]=[{'all':!![]}];}_0xec9ae8=_[_0xaaa0('0x36')]({},_0xec9ae8,_0x4c7b0d[_0xaaa0('0x39')]);return db[_0xaaa0('0x29')][_0xaaa0('0x43')](_0xec9ae8)[_0xaaa0('0x22')](handleEntityNotFound(_0x2f35ee,null))[_0xaaa0('0x22')](respondWithResult(_0x2f35ee,null))[_0xaaa0('0x3d')](handleError(_0x2f35ee,null));};exports[_0xaaa0('0x44')]=function(_0x2d7d6d,_0x174111){return db[_0xaaa0('0x29')][_0xaaa0('0x44')](_0x2d7d6d[_0xaaa0('0x45')],{})[_0xaaa0('0x22')](respondWithResult(_0x174111,0xc9))[_0xaaa0('0x3d')](handleError(_0x174111,null));};exports['update']=function(_0x39ecb7,_0x29d08b){if(_0x39ecb7[_0xaaa0('0x45')]['id']){delete _0x39ecb7[_0xaaa0('0x45')]['id'];}return db['FreshsalesAccount']['find']({'where':{'id':_0x39ecb7[_0xaaa0('0x3f')]['id']}})[_0xaaa0('0x22')](handleEntityNotFound(_0x29d08b,null))['then'](saveUpdates(_0x39ecb7[_0xaaa0('0x45')],null))['then'](respondWithResult(_0x29d08b,null))[_0xaaa0('0x3d')](handleError(_0x29d08b,null));};exports[_0xaaa0('0x23')]=function(_0x1350da,_0x30abe7){return db[_0xaaa0('0x29')]['find']({'where':{'id':_0x1350da[_0xaaa0('0x3f')]['id']}})['then'](handleEntityNotFound(_0x30abe7,null))[_0xaaa0('0x22')](removeEntity(_0x30abe7,null))[_0xaaa0('0x3d')](handleError(_0x30abe7,null));};exports[_0xaaa0('0x46')]=function(_0x28dfe1,_0x2850a6,_0x2c7483){var _0x453b38={};var _0x2c00ee={};var _0x1c4eb;var _0x1d7adf;return db[_0xaaa0('0x29')][_0xaaa0('0x47')]({'where':{'id':_0x28dfe1[_0xaaa0('0x3f')]['id']}})['then'](handleEntityNotFound(_0x2850a6,null))['then'](function(_0x4dafc6){if(_0x4dafc6){_0x1c4eb=_0x4dafc6;_0x2c00ee[_0xaaa0('0x2d')]=_['keys'](db[_0xaaa0('0x48')][_0xaaa0('0x41')]);_0x2c00ee['query']=_[_0xaaa0('0x40')](_0x28dfe1['query']);_0x2c00ee[_0xaaa0('0x2c')]=_[_0xaaa0('0x2f')](_0x2c00ee[_0xaaa0('0x2d')],_0x2c00ee[_0xaaa0('0x2b')]);_0x453b38[_0xaaa0('0x2e')]=_[_0xaaa0('0x2f')](_0x2c00ee['model'],qs[_0xaaa0('0x30')](_0x28dfe1[_0xaaa0('0x2b')][_0xaaa0('0x30')]));_0x453b38['attributes']=_0x453b38[_0xaaa0('0x2e')][_0xaaa0('0x42')]?_0x453b38[_0xaaa0('0x2e')]:_0x2c00ee[_0xaaa0('0x2d')];_0x453b38['order']=qs[_0xaaa0('0x49')](_0x28dfe1[_0xaaa0('0x2b')][_0xaaa0('0x49')]);_0x453b38[_0xaaa0('0x34')]=qs['filters'](_[_0xaaa0('0x4a')](_0x28dfe1[_0xaaa0('0x2b')],_0x2c00ee[_0xaaa0('0x2c')]));if(_0x28dfe1[_0xaaa0('0x2b')][_0xaaa0('0x35')]){_0x453b38[_0xaaa0('0x34')]=_['merge'](_0x453b38[_0xaaa0('0x34')],{'$or':_[_0xaaa0('0x37')](_0x453b38[_0xaaa0('0x2e')],function(_0x3c95ff){var _0x245767={};_0x245767[_0x3c95ff]={'$like':'%'+_0x28dfe1[_0xaaa0('0x2b')][_0xaaa0('0x35')]+'%'};return _0x245767;})});}_0x453b38=_[_0xaaa0('0x36')]({},_0x453b38,_0x28dfe1[_0xaaa0('0x39')]);return _0x1c4eb[_0xaaa0('0x46')](_0x453b38);}})[_0xaaa0('0x22')](function(_0x1331eb){if(_0x1331eb){_0x1d7adf=_0x1331eb['length'];if(!_0x28dfe1['query'][_0xaaa0('0x31')](_0xaaa0('0x32'))){_0x453b38['limit']=qs[_0xaaa0('0x1a')](_0x28dfe1['query'][_0xaaa0('0x1a')]);_0x453b38[_0xaaa0('0x18')]=qs[_0xaaa0('0x18')](_0x28dfe1[_0xaaa0('0x2b')][_0xaaa0('0x18')]);}return _0x1c4eb[_0xaaa0('0x46')](_0x453b38);}})['then'](function(_0x9c3d49){if(_0x9c3d49){return _0x9c3d49?{'count':_0x1d7adf,'rows':_0x9c3d49}:null;}})[_0xaaa0('0x22')](respondWithResult(_0x2850a6,null))['catch'](handleError(_0x2850a6,null));};exports['addConfiguration']=function(_0x51a039,_0x38a4ff,_0x513fbb){if(_0x51a039[_0xaaa0('0x45')]['id']){delete _0x51a039['body']['id'];}return db[_0xaaa0('0x29')][_0xaaa0('0x47')]({'where':{'id':_0x51a039[_0xaaa0('0x3f')]['id']}})[_0xaaa0('0x22')](handleEntityNotFound(_0x38a4ff,null))[_0xaaa0('0x22')](function(_0x5d1af4){if(_0x5d1af4){_0x51a039[_0xaaa0('0x45')][_0xaaa0('0x4b')]=_0x5d1af4['id'];_0x51a039[_0xaaa0('0x45')][_0xaaa0('0x4c')]=integrations['getSubjects'](_0x51a039[_0xaaa0('0x45')]['channel'],_0x51a039[_0xaaa0('0x45')]['type']);_0x51a039[_0xaaa0('0x45')]['Descriptions']=integrations[_0xaaa0('0x4d')](_0x51a039[_0xaaa0('0x45')]['channel'],_0x51a039[_0xaaa0('0x45')]['type']);return db[_0xaaa0('0x48')][_0xaaa0('0x44')](_0x51a039[_0xaaa0('0x45')],{'include':[{'model':db[_0xaaa0('0x4e')],'as':'Subjects'},{'model':db['FreshsalesField'],'as':'Descriptions'}]});}return null;})[_0xaaa0('0x22')](respondWithResult(_0x38a4ff,null))[_0xaaa0('0x3d')](handleError(_0x38a4ff,null));};exports[_0xaaa0('0x4f')]=function(_0xe28122,_0x4a3855,_0x4e468c){var _0x2240ce='';var _0x4009f3='';return db[_0xaaa0('0x29')][_0xaaa0('0x47')]({'where':{'id':_0xe28122[_0xaaa0('0x3f')]['id']},'attributes':['id',_0xaaa0('0x50'),'remoteUri',_0xaaa0('0x51')]})[_0xaaa0('0x22')](handleEntityNotFound(_0x4a3855,null))[_0xaaa0('0x22')](function(_0x24b823){if(_0x24b823){_0x4009f3=_0x24b823[_0xaaa0('0x50')];_0x2240ce=_0x24b823[_0xaaa0('0x52')];var _0x3976cc=_0x24b823['remoteUri'][_0xaaa0('0x53')](-0x1);if(_0x3976cc==='/'){_0x2240ce=_0x2240ce[_0xaaa0('0x54')](0x0,_0x2240ce['lastIndexOf'](_0x3976cc));}return rp({'method':_0xaaa0('0x55'),'uri':util[_0xaaa0('0x56')](_0xaaa0('0x57'),_0x2240ce,_0xaaa0('0x58')),'headers':{'Authorization':_0xaaa0('0x59')+_0x24b823[_0xaaa0('0x51')]},'json':!![]});}})[_0xaaa0('0x22')](function(_0x4f731c){if(_0x4f731c){var _0x11e15b=_0x4f731c[_0xaaa0('0x5a')];var _0x5bcdce=![];var _0x352240=null;for(_0x352240=0x0;_0x352240<_0x11e15b[_0xaaa0('0x42')];_0x352240++){if(_0x11e15b[_0x352240][_0xaaa0('0x5b')]===_0x4009f3){_0x5bcdce=!![];}}if(_0x5bcdce){return!![];}else{throw new Error({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}})['then'](respondWithResult(_0x4a3855,null))[_0xaaa0('0x3d')](function(_0x42de80){var _0x498f99=_0xe28122[_0xaaa0('0x2b')][_0xaaa0('0x5c')]?0x1f4:_0x42de80[_0xaaa0('0x5d')]||0x1f4;logger['error'](_0xaaa0('0x5e'),_0xaaa0('0x4f'),_0x498f99,JSON['stringify'](_0x42de80));delete _0x42de80[_0xaaa0('0x26')];if(_0x498f99===0x191){_0x498f99=0x190;}_0x4a3855['status'](_0x498f99)['send'](_0xe28122[_0xaaa0('0x2b')][_0xaaa0('0x5c')]?{'message':_0xaaa0('0x5f'),'statusCode':_0x42de80['statusCode']}:_0x42de80);});};
\ No newline at end of file
+var _0xfe66=['attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','keys','length','merge','find','body','destroy','getConfigurations','findOne','FreshsalesConfiguration','rawAttributes','addConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions','create','FreshsalesField','getFields','username','remoteUri','apiKey','slice','lastIndexOf','format','%s%s','Token\x20token=','users','Requested\x20Resource\x20not\x20Found','test','getFields,\x20%s,\x20%s,\x20%s','send','Wrong\x20credentials','statusCode','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','update','then','name','index','map','FreshsalesAccount','fieldName','type','model','query','filters','intersection'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0xfe66,0xfa));var _0x6fe6=function(_0x356127,_0x4873ac){_0x356127=_0x356127-0x0;var _0x5d4c75=_0xfe66[_0x356127];return _0x5d4c75;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6fe6('0x0'));var zipdir=require(_0x6fe6('0x1'));var jsonpatch=require(_0x6fe6('0x2'));var rp=require(_0x6fe6('0x3'));var moment=require(_0x6fe6('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x6fe6('0x5'));var util=require(_0x6fe6('0x6'));var path=require(_0x6fe6('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x6fe6('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6fe6('0x9'));var squel=require(_0x6fe6('0xa'));var crypto=require(_0x6fe6('0xb'));var jsforce=require(_0x6fe6('0xc'));var deskjs=require(_0x6fe6('0xd'));var toCsv=require('to-csv');var querystring=require(_0x6fe6('0xe'));var Papa=require(_0x6fe6('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6fe6('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6fe6('0x11'));var logger=require(_0x6fe6('0x12'))(_0x6fe6('0x13'));var utils=require(_0x6fe6('0x14'));var config=require(_0x6fe6('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x6fe6('0x16'))['db'];var integrations=require(_0x6fe6('0x17'));function respondWithStatusCode(_0x50dfaa,_0x5634c9){_0x5634c9=_0x5634c9||0xcc;return function(_0x28cf72){if(_0x28cf72){return _0x50dfaa[_0x6fe6('0x18')](_0x5634c9);}return _0x50dfaa[_0x6fe6('0x19')](_0x5634c9)[_0x6fe6('0x1a')]();};}function respondWithResult(_0x1db0cc,_0x427fd5){_0x427fd5=_0x427fd5||0xc8;return function(_0x11dc81){if(_0x11dc81){return _0x1db0cc[_0x6fe6('0x19')](_0x427fd5)[_0x6fe6('0x1b')](_0x11dc81);}};}function respondWithFilteredResult(_0x19ae59,_0x30f787){return function(_0x416a3a){if(_0x416a3a){var _0x24be91=typeof _0x30f787[_0x6fe6('0x1c')]===_0x6fe6('0x1d')&&typeof _0x30f787[_0x6fe6('0x1e')]===_0x6fe6('0x1d');var _0x76d36e=_0x416a3a[_0x6fe6('0x1f')];var _0x3cae4c=_0x24be91?0x0:_0x30f787[_0x6fe6('0x1c')];var _0x1060d8=_0x24be91?_0x416a3a['count']:_0x30f787[_0x6fe6('0x1c')]+_0x30f787[_0x6fe6('0x1e')];var _0x3c1de8;if(_0x1060d8>=_0x76d36e){_0x1060d8=_0x76d36e;_0x3c1de8=0xc8;}else{_0x3c1de8=0xce;}_0x19ae59[_0x6fe6('0x19')](_0x3c1de8);return _0x19ae59[_0x6fe6('0x20')]('Content-Range',_0x3cae4c+'-'+_0x1060d8+'/'+_0x76d36e)[_0x6fe6('0x1b')](_0x416a3a);}return null;};}function patchUpdates(_0x5ec1f6){return function(_0x4c2ebf){try{jsonpatch[_0x6fe6('0x21')](_0x4c2ebf,_0x5ec1f6,!![]);}catch(_0x33ad08){return BPromise[_0x6fe6('0x22')](_0x33ad08);}return _0x4c2ebf['save']();};}function saveUpdates(_0x2c8a44,_0x3074a7){return function(_0x104bd9){if(_0x104bd9){return _0x104bd9[_0x6fe6('0x23')](_0x2c8a44)['then'](function(_0x15d1f5){return _0x15d1f5;});}return null;};}function removeEntity(_0xc3b563,_0x590575){return function(_0x20d26b){if(_0x20d26b){return _0x20d26b['destroy']()[_0x6fe6('0x24')](function(){_0xc3b563[_0x6fe6('0x19')](0xcc)[_0x6fe6('0x1a')]();});}};}function handleEntityNotFound(_0x351947,_0x1074e4){return function(_0x695120){if(!_0x695120){_0x351947[_0x6fe6('0x18')](0x194);}return _0x695120;};}function handleError(_0x423b7b,_0x4a6e69){_0x4a6e69=_0x4a6e69||0x1f4;return function(_0x14d178){logger['error'](_0x14d178['stack']);if(_0x14d178['name']){delete _0x14d178[_0x6fe6('0x25')];}_0x423b7b['status'](_0x4a6e69)['send'](_0x14d178);};}exports[_0x6fe6('0x26')]=function(_0x52b952,_0x13a30f){var _0x5e70e7={},_0x1ff979={},_0x2621d1={'count':0x0,'rows':[]};var _0x30de60=_[_0x6fe6('0x27')](db[_0x6fe6('0x28')]['rawAttributes'],function(_0x2b7b82){return{'name':_0x2b7b82[_0x6fe6('0x29')],'type':_0x2b7b82[_0x6fe6('0x2a')]['key']};});_0x1ff979[_0x6fe6('0x2b')]=_['map'](_0x30de60,_0x6fe6('0x25'));_0x1ff979['query']=_['keys'](_0x52b952[_0x6fe6('0x2c')]);_0x1ff979[_0x6fe6('0x2d')]=_[_0x6fe6('0x2e')](_0x1ff979[_0x6fe6('0x2b')],_0x1ff979[_0x6fe6('0x2c')]);_0x5e70e7[_0x6fe6('0x2f')]=_[_0x6fe6('0x2e')](_0x1ff979[_0x6fe6('0x2b')],qs[_0x6fe6('0x30')](_0x52b952[_0x6fe6('0x2c')][_0x6fe6('0x30')]));_0x5e70e7[_0x6fe6('0x2f')]=_0x5e70e7[_0x6fe6('0x2f')]['length']?_0x5e70e7[_0x6fe6('0x2f')]:_0x1ff979[_0x6fe6('0x2b')];if(!_0x52b952[_0x6fe6('0x2c')][_0x6fe6('0x31')](_0x6fe6('0x32'))){_0x5e70e7['limit']=qs['limit'](_0x52b952[_0x6fe6('0x2c')][_0x6fe6('0x1e')]);_0x5e70e7[_0x6fe6('0x1c')]=qs[_0x6fe6('0x1c')](_0x52b952[_0x6fe6('0x2c')][_0x6fe6('0x1c')]);}_0x5e70e7[_0x6fe6('0x33')]=qs[_0x6fe6('0x34')](_0x52b952[_0x6fe6('0x2c')][_0x6fe6('0x34')]);_0x5e70e7['where']=qs[_0x6fe6('0x2d')](_[_0x6fe6('0x35')](_0x52b952[_0x6fe6('0x2c')],_0x1ff979['filters']),_0x30de60);if(_0x52b952[_0x6fe6('0x2c')]['filter']){_0x5e70e7[_0x6fe6('0x36')]=_['merge'](_0x5e70e7[_0x6fe6('0x36')],{'$or':_[_0x6fe6('0x27')](_0x30de60,function(_0xb52f40){if(_0xb52f40[_0x6fe6('0x2a')]!==_0x6fe6('0x37')){var _0x483b55={};_0x483b55[_0xb52f40[_0x6fe6('0x25')]]={'$like':'%'+_0x52b952[_0x6fe6('0x2c')][_0x6fe6('0x38')]+'%'};return _0x483b55;}})});}_0x5e70e7=_['merge']({},_0x5e70e7,_0x52b952[_0x6fe6('0x39')]);var _0x1cf235={'where':_0x5e70e7['where']};return db[_0x6fe6('0x28')][_0x6fe6('0x1f')](_0x1cf235)[_0x6fe6('0x24')](function(_0x32c0e8){_0x2621d1[_0x6fe6('0x1f')]=_0x32c0e8;if(_0x52b952['query'][_0x6fe6('0x3a')]){_0x5e70e7[_0x6fe6('0x3b')]=[{'all':!![]}];}return db[_0x6fe6('0x28')][_0x6fe6('0x3c')](_0x5e70e7);})[_0x6fe6('0x24')](function(_0xc7e5b5){_0x2621d1[_0x6fe6('0x3d')]=_0xc7e5b5;return _0x2621d1;})[_0x6fe6('0x24')](respondWithFilteredResult(_0x13a30f,_0x5e70e7))[_0x6fe6('0x3e')](handleError(_0x13a30f,null));};exports[_0x6fe6('0x3f')]=function(_0x110a16,_0xb3aa0b){var _0x2645c5={'raw':![],'where':{'id':_0x110a16[_0x6fe6('0x40')]['id']}},_0x503c69={};_0x503c69['model']=_[_0x6fe6('0x41')](db[_0x6fe6('0x28')]['rawAttributes']);_0x503c69[_0x6fe6('0x2c')]=_[_0x6fe6('0x41')](_0x110a16[_0x6fe6('0x2c')]);_0x503c69[_0x6fe6('0x2d')]=_[_0x6fe6('0x2e')](_0x503c69[_0x6fe6('0x2b')],_0x503c69[_0x6fe6('0x2c')]);_0x2645c5['attributes']=_[_0x6fe6('0x2e')](_0x503c69[_0x6fe6('0x2b')],qs['fields'](_0x110a16['query'][_0x6fe6('0x30')]));_0x2645c5[_0x6fe6('0x2f')]=_0x2645c5['attributes'][_0x6fe6('0x42')]?_0x2645c5[_0x6fe6('0x2f')]:_0x503c69[_0x6fe6('0x2b')];if(_0x110a16[_0x6fe6('0x2c')][_0x6fe6('0x3a')]){_0x2645c5[_0x6fe6('0x3b')]=[{'all':!![]}];}_0x2645c5=_[_0x6fe6('0x43')]({},_0x2645c5,_0x110a16['options']);return db[_0x6fe6('0x28')][_0x6fe6('0x44')](_0x2645c5)[_0x6fe6('0x24')](handleEntityNotFound(_0xb3aa0b,null))[_0x6fe6('0x24')](respondWithResult(_0xb3aa0b,null))[_0x6fe6('0x3e')](handleError(_0xb3aa0b,null));};exports['create']=function(_0x3f4359,_0x2cc53b){return db[_0x6fe6('0x28')]['create'](_0x3f4359['body'],{})[_0x6fe6('0x24')](respondWithResult(_0x2cc53b,0xc9))['catch'](handleError(_0x2cc53b,null));};exports[_0x6fe6('0x23')]=function(_0x16b75f,_0x406a6a){if(_0x16b75f['body']['id']){delete _0x16b75f[_0x6fe6('0x45')]['id'];}return db[_0x6fe6('0x28')][_0x6fe6('0x44')]({'where':{'id':_0x16b75f[_0x6fe6('0x40')]['id']}})['then'](handleEntityNotFound(_0x406a6a,null))[_0x6fe6('0x24')](saveUpdates(_0x16b75f[_0x6fe6('0x45')],null))[_0x6fe6('0x24')](respondWithResult(_0x406a6a,null))['catch'](handleError(_0x406a6a,null));};exports[_0x6fe6('0x46')]=function(_0x5b9581,_0x297113){return db[_0x6fe6('0x28')][_0x6fe6('0x44')]({'where':{'id':_0x5b9581[_0x6fe6('0x40')]['id']}})[_0x6fe6('0x24')](handleEntityNotFound(_0x297113,null))['then'](removeEntity(_0x297113,null))[_0x6fe6('0x3e')](handleError(_0x297113,null));};exports[_0x6fe6('0x47')]=function(_0x52679a,_0x26b7b8,_0x4378b9){var _0x558ade={};var _0xd2e597={};var _0x10b7a2;var _0x128e3e;return db[_0x6fe6('0x28')][_0x6fe6('0x48')]({'where':{'id':_0x52679a['params']['id']}})[_0x6fe6('0x24')](handleEntityNotFound(_0x26b7b8,null))[_0x6fe6('0x24')](function(_0x1acd06){if(_0x1acd06){_0x10b7a2=_0x1acd06;_0xd2e597[_0x6fe6('0x2b')]=_[_0x6fe6('0x41')](db[_0x6fe6('0x49')][_0x6fe6('0x4a')]);_0xd2e597[_0x6fe6('0x2c')]=_['keys'](_0x52679a[_0x6fe6('0x2c')]);_0xd2e597[_0x6fe6('0x2d')]=_[_0x6fe6('0x2e')](_0xd2e597['model'],_0xd2e597['query']);_0x558ade[_0x6fe6('0x2f')]=_[_0x6fe6('0x2e')](_0xd2e597['model'],qs[_0x6fe6('0x30')](_0x52679a[_0x6fe6('0x2c')]['fields']));_0x558ade[_0x6fe6('0x2f')]=_0x558ade[_0x6fe6('0x2f')][_0x6fe6('0x42')]?_0x558ade[_0x6fe6('0x2f')]:_0xd2e597[_0x6fe6('0x2b')];_0x558ade[_0x6fe6('0x33')]=qs[_0x6fe6('0x34')](_0x52679a[_0x6fe6('0x2c')][_0x6fe6('0x34')]);_0x558ade[_0x6fe6('0x36')]=qs[_0x6fe6('0x2d')](_['pick'](_0x52679a[_0x6fe6('0x2c')],_0xd2e597['filters']));if(_0x52679a[_0x6fe6('0x2c')][_0x6fe6('0x38')]){_0x558ade['where']=_[_0x6fe6('0x43')](_0x558ade[_0x6fe6('0x36')],{'$or':_['map'](_0x558ade['attributes'],function(_0x417e93){var _0x773471={};_0x773471[_0x417e93]={'$like':'%'+_0x52679a[_0x6fe6('0x2c')][_0x6fe6('0x38')]+'%'};return _0x773471;})});}_0x558ade=_[_0x6fe6('0x43')]({},_0x558ade,_0x52679a['options']);return _0x10b7a2[_0x6fe6('0x47')](_0x558ade);}})[_0x6fe6('0x24')](function(_0x48fb07){if(_0x48fb07){_0x128e3e=_0x48fb07[_0x6fe6('0x42')];if(!_0x52679a[_0x6fe6('0x2c')]['hasOwnProperty'](_0x6fe6('0x32'))){_0x558ade[_0x6fe6('0x1e')]=qs['limit'](_0x52679a['query'][_0x6fe6('0x1e')]);_0x558ade['offset']=qs[_0x6fe6('0x1c')](_0x52679a[_0x6fe6('0x2c')][_0x6fe6('0x1c')]);}return _0x10b7a2[_0x6fe6('0x47')](_0x558ade);}})[_0x6fe6('0x24')](function(_0x5adcfb){if(_0x5adcfb){return _0x5adcfb?{'count':_0x128e3e,'rows':_0x5adcfb}:null;}})['then'](respondWithResult(_0x26b7b8,null))[_0x6fe6('0x3e')](handleError(_0x26b7b8,null));};exports[_0x6fe6('0x4b')]=function(_0x1758f9,_0x48d6cd,_0x5aca34){if(_0x1758f9[_0x6fe6('0x45')]['id']){delete _0x1758f9[_0x6fe6('0x45')]['id'];}return db['FreshsalesAccount']['findOne']({'where':{'id':_0x1758f9[_0x6fe6('0x40')]['id']}})[_0x6fe6('0x24')](handleEntityNotFound(_0x48d6cd,null))[_0x6fe6('0x24')](function(_0x58fc3b){if(_0x58fc3b){_0x1758f9[_0x6fe6('0x45')][_0x6fe6('0x4c')]=_0x58fc3b['id'];_0x1758f9[_0x6fe6('0x45')][_0x6fe6('0x4d')]=integrations['getSubjects'](_0x1758f9[_0x6fe6('0x45')][_0x6fe6('0x4e')],_0x1758f9[_0x6fe6('0x45')][_0x6fe6('0x2a')]);_0x1758f9[_0x6fe6('0x45')][_0x6fe6('0x4f')]=integrations[_0x6fe6('0x50')](_0x1758f9['body'][_0x6fe6('0x4e')],_0x1758f9['body'][_0x6fe6('0x2a')]);return db[_0x6fe6('0x49')][_0x6fe6('0x51')](_0x1758f9[_0x6fe6('0x45')],{'include':[{'model':db[_0x6fe6('0x52')],'as':_0x6fe6('0x4d')},{'model':db[_0x6fe6('0x52')],'as':_0x6fe6('0x4f')}]});}return null;})[_0x6fe6('0x24')](respondWithResult(_0x48d6cd,null))[_0x6fe6('0x3e')](handleError(_0x48d6cd,null));};exports[_0x6fe6('0x53')]=function(_0x1617e6,_0x14ec5e,_0x3cfaba){var _0x12a998='';var _0xad576f='';return db[_0x6fe6('0x28')][_0x6fe6('0x48')]({'where':{'id':_0x1617e6['params']['id']},'attributes':['id',_0x6fe6('0x54'),_0x6fe6('0x55'),_0x6fe6('0x56')]})[_0x6fe6('0x24')](handleEntityNotFound(_0x14ec5e,null))['then'](function(_0x43ddb5){if(_0x43ddb5){_0xad576f=_0x43ddb5[_0x6fe6('0x54')];_0x12a998=_0x43ddb5[_0x6fe6('0x55')];var _0x5df022=_0x43ddb5['remoteUri'][_0x6fe6('0x57')](-0x1);if(_0x5df022==='/'){_0x12a998=_0x12a998['substring'](0x0,_0x12a998[_0x6fe6('0x58')](_0x5df022));}return rp({'method':'GET','uri':util[_0x6fe6('0x59')](_0x6fe6('0x5a'),_0x12a998,'/api/selector/owners'),'headers':{'Authorization':_0x6fe6('0x5b')+_0x43ddb5[_0x6fe6('0x56')]},'json':!![]});}})[_0x6fe6('0x24')](function(_0x415b65){if(_0x415b65){var _0x2ca1f4=_0x415b65[_0x6fe6('0x5c')];var _0x25eded=![];var _0x59f1da=null;for(_0x59f1da=0x0;_0x59f1da<_0x2ca1f4['length'];_0x59f1da++){if(_0x2ca1f4[_0x59f1da]['email']===_0xad576f){_0x25eded=!![];}}if(_0x25eded){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x6fe6('0x5d')});}}})[_0x6fe6('0x24')](respondWithResult(_0x14ec5e,null))[_0x6fe6('0x3e')](function(_0x2dc8c4){var _0x17f807=_0x1617e6[_0x6fe6('0x2c')][_0x6fe6('0x5e')]?0x1f4:_0x2dc8c4['statusCode']||0x1f4;logger['error'](_0x6fe6('0x5f'),_0x6fe6('0x53'),_0x17f807,JSON['stringify'](_0x2dc8c4));delete _0x2dc8c4['name'];if(_0x17f807===0x191){_0x17f807=0x190;}_0x14ec5e[_0x6fe6('0x19')](_0x17f807)[_0x6fe6('0x60')](_0x1617e6[_0x6fe6('0x2c')][_0x6fe6('0x5e')]?{'message':_0x6fe6('0x61'),'statusCode':_0x2dc8c4[_0x6fe6('0x62')]}:_0x2dc8c4);});};
\ No newline at end of file
index 01f24e4..341dc83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3da=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports','define','int_freshsales_accounts','lodash','util','../../config/logger','api'];(function(_0x3ec0bd,_0x162d62){var _0x5b2a28=function(_0x16f417){while(--_0x16f417){_0x3ec0bd['push'](_0x3ec0bd['shift']());}};_0x5b2a28(++_0x162d62);}(_0xe3da,0x1cd));var _0xae3d=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xe3da[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0xae3d('0x0'));var util=require(_0xae3d('0x1'));var logger=require(_0xae3d('0x2'))(_0xae3d('0x3'));var moment=require(_0xae3d('0x4'));var BPromise=require(_0xae3d('0x5'));var rp=require(_0xae3d('0x6'));var fs=require('fs');var path=require(_0xae3d('0x7'));var rimraf=require(_0xae3d('0x8'));var config=require(_0xae3d('0x9'));var attributes=require(_0xae3d('0xa'));var integrations=require(_0xae3d('0xb'));module[_0xae3d('0xc')]=function(_0xa54808,_0x476579){return _0xa54808[_0xae3d('0xd')]('FreshsalesAccount',attributes,{'tableName':_0xae3d('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9f0e=['define','FreshsalesAccount','lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration'];(function(_0x153f69,_0x4bd921){var _0x528235=function(_0x3780f2){while(--_0x3780f2){_0x153f69['push'](_0x153f69['shift']());}};_0x528235(++_0x4bd921);}(_0x9f0e,0x116));var _0xe9f0=function(_0x1007cd,_0x158405){_0x1007cd=_0x1007cd-0x0;var _0x58551e=_0x9f0e[_0x1007cd];return _0x58551e;};'use strict';var _=require(_0xe9f0('0x0'));var util=require(_0xe9f0('0x1'));var logger=require(_0xe9f0('0x2'))(_0xe9f0('0x3'));var moment=require(_0xe9f0('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xe9f0('0x5'));var rimraf=require(_0xe9f0('0x6'));var config=require(_0xe9f0('0x7'));var attributes=require(_0xe9f0('0x8'));var integrations=require(_0xe9f0('0x9'));module['exports']=function(_0x5b87c1,_0x3a17b3){return _0x5b87c1[_0xe9f0('0xa')](_0xe9f0('0xb'),attributes,{'tableName':'int_freshsales_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b23f7c0..bb4c685 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['jayson/promise','http','request','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','FreshsalesAccount','findAll','options','raw','where','attributes','include','map','model','GetFreshsalesAccount','ShowFreshsalesAccount','find','then','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4975,0x86));var _0x5497=function(_0x340e82,_0x436242){_0x340e82=_0x340e82-0x0;var _0x5629bc=_0x4975[_0x340e82];return _0x5629bc;};'use strict';var _=require(_0x5497('0x0'));var util=require('util');var moment=require(_0x5497('0x1'));var BPromise=require(_0x5497('0x2'));var rs=require(_0x5497('0x3'));var fs=require('fs');var Redis=require(_0x5497('0x4'));var db=require(_0x5497('0x5'))['db'];var utils=require(_0x5497('0x6'));var logger=require(_0x5497('0x7'))(_0x5497('0x8'));var config=require(_0x5497('0x9'));var jayson=require(_0x5497('0xa'));var client=jayson['client'][_0x5497('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4f563d,_0x1d0019,_0x674a2a){return new BPromise(function(_0x368e8b,_0x57f930){return client[_0x5497('0xc')](_0x4f563d,_0x674a2a)['then'](function(_0x1f63d8){logger[_0x5497('0xd')](_0x5497('0xe'),_0x1d0019,_0x5497('0xf'));logger[_0x5497('0x10')](_0x5497('0x11'),_0x1d0019,_0x5497('0xf'),JSON[_0x5497('0x12')](_0x1f63d8));if(_0x1f63d8['error']){if(_0x1f63d8['error']['code']===0x1f4){logger[_0x5497('0x13')](_0x5497('0xe'),_0x1d0019,_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);return _0x57f930(_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);}logger[_0x5497('0x13')](_0x5497('0xe'),_0x1d0019,_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);return _0x368e8b(_0x1f63d8['error'][_0x5497('0x14')]);}else{logger['info'](_0x5497('0xe'),_0x1d0019,_0x5497('0xf'));_0x368e8b(_0x1f63d8[_0x5497('0x15')][_0x5497('0x14')]);}})[_0x5497('0x16')](function(_0x4073e6){logger[_0x5497('0x13')]('FreshsalesAccount,\x20%s,\x20%s',_0x1d0019,_0x4073e6);_0x57f930(_0x4073e6);});});}exports['GetFreshsalesAccount']=function(_0x3f4d20){var _0x1bf442=this;return new Promise(function(_0x3a47fd,_0x5d9e24){return db[_0x5497('0x17')][_0x5497('0x18')]({'raw':_0x3f4d20[_0x5497('0x19')]?_0x3f4d20[_0x5497('0x19')][_0x5497('0x1a')]===undefined?!![]:![]:!![],'where':_0x3f4d20[_0x5497('0x19')]?_0x3f4d20[_0x5497('0x19')][_0x5497('0x1b')]||null:null,'attributes':_0x3f4d20[_0x5497('0x19')]?_0x3f4d20[_0x5497('0x19')][_0x5497('0x1c')]||null:null,'limit':_0x3f4d20['options']?_0x3f4d20[_0x5497('0x19')]['limit']||null:null,'include':_0x3f4d20[_0x5497('0x19')]?_0x3f4d20[_0x5497('0x19')][_0x5497('0x1d')]?_[_0x5497('0x1e')](_0x3f4d20[_0x5497('0x19')][_0x5497('0x1d')],function(_0x5018fa){return{'model':db[_0x5018fa['model']],'as':_0x5018fa['as'],'attributes':_0x5018fa[_0x5497('0x1c')],'include':_0x5018fa[_0x5497('0x1d')]?_[_0x5497('0x1e')](_0x5018fa[_0x5497('0x1d')],function(_0x5223b5){return{'model':db[_0x5223b5[_0x5497('0x1f')]],'as':_0x5223b5['as'],'attributes':_0x5223b5['attributes'],'include':_0x5223b5[_0x5497('0x1d')]?_[_0x5497('0x1e')](_0x5223b5[_0x5497('0x1d')],function(_0x34a1a5){return{'model':db[_0x34a1a5[_0x5497('0x1f')]],'as':_0x34a1a5['as'],'attributes':_0x34a1a5[_0x5497('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4af5f4){logger['info']('GetFreshsalesAccount',_0x3f4d20);logger['debug'](_0x5497('0x20'),_0x3f4d20,JSON['stringify'](_0x4af5f4));_0x3a47fd(_0x4af5f4);})['catch'](function(_0xc3465){logger[_0x5497('0x13')](_0x5497('0x20'),_0xc3465['message'],_0x3f4d20);_0x5d9e24(_0x1bf442['error'](0x1f4,_0xc3465['message']));});});};exports[_0x5497('0x21')]=function(_0x471e0b){var _0xf4c117=this;return new Promise(function(_0x5b8f79,_0x489f71){return db['FreshsalesAccount'][_0x5497('0x22')]({'raw':_0x471e0b['options']?_0x471e0b[_0x5497('0x19')][_0x5497('0x1a')]===undefined?!![]:![]:!![],'where':_0x471e0b[_0x5497('0x19')]?_0x471e0b['options'][_0x5497('0x1b')]||null:null,'attributes':_0x471e0b[_0x5497('0x19')]?_0x471e0b['options'][_0x5497('0x1c')]||null:null,'include':_0x471e0b[_0x5497('0x19')]?_0x471e0b[_0x5497('0x19')]['include']?_[_0x5497('0x1e')](_0x471e0b[_0x5497('0x19')][_0x5497('0x1d')],function(_0x362b96){return{'model':db[_0x362b96[_0x5497('0x1f')]],'as':_0x362b96['as'],'attributes':_0x362b96['attributes'],'include':_0x362b96[_0x5497('0x1d')]?_[_0x5497('0x1e')](_0x362b96['include'],function(_0x1ffc9b){return{'model':db[_0x1ffc9b[_0x5497('0x1f')]],'as':_0x1ffc9b['as'],'attributes':_0x1ffc9b[_0x5497('0x1c')],'include':_0x1ffc9b[_0x5497('0x1d')]?_[_0x5497('0x1e')](_0x1ffc9b[_0x5497('0x1d')],function(_0x580e86){return{'model':db[_0x580e86[_0x5497('0x1f')]],'as':_0x580e86['as'],'attributes':_0x580e86['attributes']};}):[]};}):[]};}):[]:[]})[_0x5497('0x23')](function(_0x212199){logger[_0x5497('0xd')]('ShowFreshsalesAccount',_0x471e0b);logger['debug'](_0x5497('0x21'),_0x471e0b,JSON[_0x5497('0x12')](_0x212199));_0x5b8f79(_0x212199);})[_0x5497('0x16')](function(_0x429cbf){logger[_0x5497('0x13')](_0x5497('0x21'),_0x429cbf['message'],_0x471e0b);_0x489f71(_0xf4c117[_0x5497('0x13')](0x1f4,_0x429cbf[_0x5497('0x14')]));});});};
\ No newline at end of file
+var _0xacf4=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','FreshsalesAccount,\x20%s,\x20%s,\x20%s','error','message','result','catch','GetFreshsalesAccount','FreshsalesAccount','findAll','options','raw','where','attributes','limit','include','map','model','debug','stringify','ShowFreshsalesAccount'];(function(_0x85673f,_0x534e81){var _0x539e99=function(_0xc40926){while(--_0xc40926){_0x85673f['push'](_0x85673f['shift']());}};_0x539e99(++_0x534e81);}(_0xacf4,0xe7));var _0x4acf=function(_0x133c35,_0x2226ae){_0x133c35=_0x133c35-0x0;var _0x1e93fa=_0xacf4[_0x133c35];return _0x1e93fa;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x4acf('0x0'));var BPromise=require(_0x4acf('0x1'));var rs=require(_0x4acf('0x2'));var fs=require('fs');var Redis=require(_0x4acf('0x3'));var db=require(_0x4acf('0x4'))['db'];var utils=require(_0x4acf('0x5'));var logger=require(_0x4acf('0x6'))('rpc');var config=require(_0x4acf('0x7'));var jayson=require(_0x4acf('0x8'));var client=jayson['client'][_0x4acf('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2ba08a,_0x649ad2,_0x45a5a4){return new BPromise(function(_0x25d345,_0x50f5f4){return client['request'](_0x2ba08a,_0x45a5a4)[_0x4acf('0xa')](function(_0x59f559){logger[_0x4acf('0xb')](_0x4acf('0xc'),_0x649ad2,_0x4acf('0xd'));logger['debug'](_0x4acf('0xe'),_0x649ad2,_0x4acf('0xd'),JSON['stringify'](_0x59f559));if(_0x59f559['error']){if(_0x59f559[_0x4acf('0xf')]['code']===0x1f4){logger['error'](_0x4acf('0xc'),_0x649ad2,_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);return _0x50f5f4(_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);}logger[_0x4acf('0xf')](_0x4acf('0xc'),_0x649ad2,_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);return _0x25d345(_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);}else{logger['info'](_0x4acf('0xc'),_0x649ad2,'request\x20sent');_0x25d345(_0x59f559[_0x4acf('0x11')][_0x4acf('0x10')]);}})[_0x4acf('0x12')](function(_0x5d934a){logger['error'](_0x4acf('0xc'),_0x649ad2,_0x5d934a);_0x50f5f4(_0x5d934a);});});}exports[_0x4acf('0x13')]=function(_0x240c00){var _0x4b1d93=this;return new Promise(function(_0x2a678b,_0x137302){return db[_0x4acf('0x14')][_0x4acf('0x15')]({'raw':_0x240c00[_0x4acf('0x16')]?_0x240c00[_0x4acf('0x16')][_0x4acf('0x17')]===undefined?!![]:![]:!![],'where':_0x240c00[_0x4acf('0x16')]?_0x240c00[_0x4acf('0x16')][_0x4acf('0x18')]||null:null,'attributes':_0x240c00[_0x4acf('0x16')]?_0x240c00['options'][_0x4acf('0x19')]||null:null,'limit':_0x240c00[_0x4acf('0x16')]?_0x240c00['options'][_0x4acf('0x1a')]||null:null,'include':_0x240c00[_0x4acf('0x16')]?_0x240c00['options'][_0x4acf('0x1b')]?_[_0x4acf('0x1c')](_0x240c00[_0x4acf('0x16')][_0x4acf('0x1b')],function(_0x53885f){return{'model':db[_0x53885f[_0x4acf('0x1d')]],'as':_0x53885f['as'],'attributes':_0x53885f[_0x4acf('0x19')],'include':_0x53885f['include']?_[_0x4acf('0x1c')](_0x53885f[_0x4acf('0x1b')],function(_0x52a84a){return{'model':db[_0x52a84a[_0x4acf('0x1d')]],'as':_0x52a84a['as'],'attributes':_0x52a84a[_0x4acf('0x19')],'include':_0x52a84a[_0x4acf('0x1b')]?_[_0x4acf('0x1c')](_0x52a84a['include'],function(_0x50236d){return{'model':db[_0x50236d[_0x4acf('0x1d')]],'as':_0x50236d['as'],'attributes':_0x50236d[_0x4acf('0x19')]};}):[]};}):[]};}):[]:[]})[_0x4acf('0xa')](function(_0x42c90c){logger[_0x4acf('0xb')](_0x4acf('0x13'),_0x240c00);logger[_0x4acf('0x1e')](_0x4acf('0x13'),_0x240c00,JSON[_0x4acf('0x1f')](_0x42c90c));_0x2a678b(_0x42c90c);})[_0x4acf('0x12')](function(_0x57989e){logger[_0x4acf('0xf')](_0x4acf('0x13'),_0x57989e[_0x4acf('0x10')],_0x240c00);_0x137302(_0x4b1d93[_0x4acf('0xf')](0x1f4,_0x57989e[_0x4acf('0x10')]));});});};exports[_0x4acf('0x20')]=function(_0x27384c){var _0x5d862f=this;return new Promise(function(_0x337b3c,_0x1d221b){return db[_0x4acf('0x14')]['find']({'raw':_0x27384c[_0x4acf('0x16')]?_0x27384c[_0x4acf('0x16')][_0x4acf('0x17')]===undefined?!![]:![]:!![],'where':_0x27384c[_0x4acf('0x16')]?_0x27384c['options'][_0x4acf('0x18')]||null:null,'attributes':_0x27384c[_0x4acf('0x16')]?_0x27384c[_0x4acf('0x16')]['attributes']||null:null,'include':_0x27384c[_0x4acf('0x16')]?_0x27384c[_0x4acf('0x16')][_0x4acf('0x1b')]?_[_0x4acf('0x1c')](_0x27384c[_0x4acf('0x16')][_0x4acf('0x1b')],function(_0x490880){return{'model':db[_0x490880[_0x4acf('0x1d')]],'as':_0x490880['as'],'attributes':_0x490880[_0x4acf('0x19')],'include':_0x490880['include']?_[_0x4acf('0x1c')](_0x490880['include'],function(_0x4cd020){return{'model':db[_0x4cd020['model']],'as':_0x4cd020['as'],'attributes':_0x4cd020['attributes'],'include':_0x4cd020['include']?_['map'](_0x4cd020['include'],function(_0x3364dd){return{'model':db[_0x3364dd[_0x4acf('0x1d')]],'as':_0x3364dd['as'],'attributes':_0x3364dd['attributes']};}):[]};}):[]};}):[]:[]})[_0x4acf('0xa')](function(_0xbd0f92){logger[_0x4acf('0xb')](_0x4acf('0x20'),_0x27384c);logger[_0x4acf('0x1e')](_0x4acf('0x20'),_0x27384c,JSON[_0x4acf('0x1f')](_0xbd0f92));_0x337b3c(_0xbd0f92);})[_0x4acf('0x12')](function(_0x24465b){logger[_0x4acf('0xf')]('ShowFreshsalesAccount',_0x24465b['message'],_0x27384c);_0x1d221b(_0x5d862f[_0x4acf('0xf')](0x1f4,_0x24465b[_0x4acf('0x10')]));});});};
\ No newline at end of file
index 9192469..87071b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe608=['/:id/subjects','getSubjects','getDescriptions','post','put','update','delete','destroy','exports','multer','path','fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshsalesConfiguration.controller','get','index','/:id','isAuthenticated'];(function(_0x20ad0d,_0x54e2fd){var _0x500d75=function(_0x5abcda){while(--_0x5abcda){_0x20ad0d['push'](_0x20ad0d['shift']());}};_0x500d75(++_0x54e2fd);}(_0xe608,0xa1));var _0x8e60=function(_0x38eb23,_0x196e8b){_0x38eb23=_0x38eb23-0x0;var _0x48506a=_0xe608[_0x38eb23];return _0x48506a;};'use strict';var multer=require(_0x8e60('0x0'));var util=require('util');var path=require(_0x8e60('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x8e60('0x2'));var auth=require(_0x8e60('0x3'));var interaction=require(_0x8e60('0x4'));var config=require('../../config/environment');var controller=require(_0x8e60('0x5'));router[_0x8e60('0x6')]('/',auth['isAuthenticated'](),controller[_0x8e60('0x7')]);router[_0x8e60('0x6')](_0x8e60('0x8'),auth[_0x8e60('0x9')](),controller['show']);router[_0x8e60('0x6')](_0x8e60('0xa'),auth[_0x8e60('0x9')](),controller[_0x8e60('0xb')]);router[_0x8e60('0x6')]('/:id/descriptions',auth[_0x8e60('0x9')](),controller[_0x8e60('0xc')]);router[_0x8e60('0x6')]('/:id/fields',auth[_0x8e60('0x9')](),controller['getFields']);router[_0x8e60('0xd')]('/',auth[_0x8e60('0x9')](),controller['create']);router[_0x8e60('0xe')]('/:id',auth[_0x8e60('0x9')](),controller[_0x8e60('0xf')]);router[_0x8e60('0x10')]('/:id',auth[_0x8e60('0x9')](),controller[_0x8e60('0x11')]);module[_0x8e60('0x12')]=router;
\ No newline at end of file
+var _0x77b7=['util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','/:id/subjects','getSubjects','/:id/descriptions','/:id/fields','getFields','post','create','put','update','destroy','multer'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0x77b7,0x1b7));var _0x777b=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x77b7[_0x5b644e];return _0x49c6bf;};'use strict';var multer=require(_0x777b('0x0'));var util=require(_0x777b('0x1'));var path=require('path');var timeout=require(_0x777b('0x2'));var express=require(_0x777b('0x3'));var router=express[_0x777b('0x4')]();var fs_extra=require(_0x777b('0x5'));var auth=require(_0x777b('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x777b('0x7'));var controller=require('./intFreshsalesConfiguration.controller');router[_0x777b('0x8')]('/',auth[_0x777b('0x9')](),controller[_0x777b('0xa')]);router[_0x777b('0x8')](_0x777b('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x777b('0x8')](_0x777b('0xc'),auth['isAuthenticated'](),controller[_0x777b('0xd')]);router['get'](_0x777b('0xe'),auth[_0x777b('0x9')](),controller['getDescriptions']);router[_0x777b('0x8')](_0x777b('0xf'),auth[_0x777b('0x9')](),controller[_0x777b('0x10')]);router[_0x777b('0x11')]('/',auth[_0x777b('0x9')](),controller[_0x777b('0x12')]);router[_0x777b('0x13')](_0x777b('0xb'),auth[_0x777b('0x9')](),controller[_0x777b('0x14')]);router['delete'](_0x777b('0xb'),auth[_0x777b('0x9')](),controller[_0x777b('0x15')]);module['exports']=router;
\ No newline at end of file
index 08f6ffa..c12354a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1454=['sequelize','exports','STRING'];(function(_0xd506f7,_0x54c409){var _0x4f74fa=function(_0xbc8171){while(--_0xbc8171){_0xd506f7['push'](_0xd506f7['shift']());}};_0x4f74fa(++_0x54c409);}(_0x1454,0x132));var _0x4145=function(_0x4e6e44,_0xcfef35){_0x4e6e44=_0x4e6e44-0x0;var _0x1bfc2a=_0x1454[_0x4e6e44];return _0x1bfc2a;};'use strict';var Sequelize=require(_0x4145('0x0'));module[_0x4145('0x1')]={'name':{'type':Sequelize[_0x4145('0x2')]},'description':{'type':Sequelize[_0x4145('0x2')]}};
\ No newline at end of file
+var _0xf2eb=['exports','STRING','sequelize'];(function(_0xf2d1c5,_0xf5e2a1){var _0x3d7adb=function(_0x550a86){while(--_0x550a86){_0xf2d1c5['push'](_0xf2d1c5['shift']());}};_0x3d7adb(++_0xf5e2a1);}(_0xf2eb,0x167));var _0xbf2e=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0xf2eb[_0x2d7f0e];return _0x110b07;};'use strict';var Sequelize=require(_0xbf2e('0x0'));module[_0xbf2e('0x1')]={'name':{'type':Sequelize[_0xbf2e('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 62b7e76..b6a1296 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8231=['index','map','FreshsalesConfiguration','fieldName','key','model','keys','query','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','options','includeAll','include','rows','catch','show','rawAttributes','find','create','body','params','destroy','findOne','FreshsalesField','length','pick','getSubjects','getDescriptions','getFields','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','save','update','then','error','stack','name','send'];(function(_0x30b406,_0x5d551d){var _0x30b9a0=function(_0x87295c){while(--_0x87295c){_0x30b406['push'](_0x30b406['shift']());}};_0x30b9a0(++_0x5d551d);}(_0x8231,0x162));var _0x1823=function(_0x3b9e26,_0x7a52ac){_0x3b9e26=_0x3b9e26-0x0;var _0x4fb2be=_0x8231[_0x3b9e26];return _0x4fb2be;};'use strict';var emlformat=require(_0x1823('0x0'));var rimraf=require(_0x1823('0x1'));var zipdir=require(_0x1823('0x2'));var jsonpatch=require(_0x1823('0x3'));var rp=require(_0x1823('0x4'));var moment=require(_0x1823('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x1823('0x6'));var util=require('util');var path=require(_0x1823('0x7'));var sox=require(_0x1823('0x8'));var csv=require(_0x1823('0x9'));var ejs=require(_0x1823('0xa'));var fs=require('fs');var fs_extra=require(_0x1823('0xb'));var _=require(_0x1823('0xc'));var squel=require('squel');var crypto=require(_0x1823('0xd'));var jsforce=require(_0x1823('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x1823('0x9'));var querystring=require(_0x1823('0xf'));var Papa=require(_0x1823('0x10'));var Redis=require(_0x1823('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1823('0x12'));var logger=require(_0x1823('0x13'))(_0x1823('0x14'));var utils=require(_0x1823('0x15'));var config=require(_0x1823('0x16'));var licenseUtil=require(_0x1823('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1d6de2,_0x278027){_0x278027=_0x278027||0xcc;return function(_0x369db3){if(_0x369db3){return _0x1d6de2[_0x1823('0x18')](_0x278027);}return _0x1d6de2[_0x1823('0x19')](_0x278027)[_0x1823('0x1a')]();};}function respondWithResult(_0xd75a9b,_0xb524e4){_0xb524e4=_0xb524e4||0xc8;return function(_0x150266){if(_0x150266){return _0xd75a9b[_0x1823('0x19')](_0xb524e4)[_0x1823('0x1b')](_0x150266);}};}function respondWithFilteredResult(_0x4038cc,_0x198963){return function(_0x39d4f5){if(_0x39d4f5){var _0x5a962a=typeof _0x198963['offset']===_0x1823('0x1c')&&typeof _0x198963[_0x1823('0x1d')]===_0x1823('0x1c');var _0x5347ae=_0x39d4f5['count'];var _0x22ee48=_0x5a962a?0x0:_0x198963[_0x1823('0x1e')];var _0x41efd5=_0x5a962a?_0x39d4f5[_0x1823('0x1f')]:_0x198963[_0x1823('0x1e')]+_0x198963[_0x1823('0x1d')];var _0x45f573;if(_0x41efd5>=_0x5347ae){_0x41efd5=_0x5347ae;_0x45f573=0xc8;}else{_0x45f573=0xce;}_0x4038cc[_0x1823('0x19')](_0x45f573);return _0x4038cc[_0x1823('0x20')](_0x1823('0x21'),_0x22ee48+'-'+_0x41efd5+'/'+_0x5347ae)[_0x1823('0x1b')](_0x39d4f5);}return null;};}function patchUpdates(_0x59eccf){return function(_0x69cfaa){try{jsonpatch['apply'](_0x69cfaa,_0x59eccf,!![]);}catch(_0x3d2884){return BPromise['reject'](_0x3d2884);}return _0x69cfaa[_0x1823('0x22')]();};}function saveUpdates(_0x52632d,_0x54f1be){return function(_0x1a76bf){if(_0x1a76bf){return _0x1a76bf[_0x1823('0x23')](_0x52632d)['then'](function(_0x3472f0){return _0x3472f0;});}return null;};}function removeEntity(_0x226a45,_0xc4a672){return function(_0x46046a){if(_0x46046a){return _0x46046a['destroy']()[_0x1823('0x24')](function(){_0x226a45[_0x1823('0x19')](0xcc)[_0x1823('0x1a')]();});}};}function handleEntityNotFound(_0x8db7fc,_0x58f609){return function(_0x29560c){if(!_0x29560c){_0x8db7fc[_0x1823('0x18')](0x194);}return _0x29560c;};}function handleError(_0x115c47,_0x4cc9ed){_0x4cc9ed=_0x4cc9ed||0x1f4;return function(_0x519a2b){logger[_0x1823('0x25')](_0x519a2b[_0x1823('0x26')]);if(_0x519a2b[_0x1823('0x27')]){delete _0x519a2b[_0x1823('0x27')];}_0x115c47[_0x1823('0x19')](_0x4cc9ed)[_0x1823('0x28')](_0x519a2b);};}exports[_0x1823('0x29')]=function(_0x5673b1,_0x3e57d8){var _0x4115ac={},_0x3add1f={},_0xc88836={'count':0x0,'rows':[]};var _0xf20a62=_[_0x1823('0x2a')](db[_0x1823('0x2b')]['rawAttributes'],function(_0x4df1e7){return{'name':_0x4df1e7[_0x1823('0x2c')],'type':_0x4df1e7['type'][_0x1823('0x2d')]};});_0x3add1f[_0x1823('0x2e')]=_['map'](_0xf20a62,_0x1823('0x27'));_0x3add1f['query']=_[_0x1823('0x2f')](_0x5673b1[_0x1823('0x30')]);_0x3add1f['filters']=_[_0x1823('0x31')](_0x3add1f[_0x1823('0x2e')],_0x3add1f[_0x1823('0x30')]);_0x4115ac['attributes']=_['intersection'](_0x3add1f[_0x1823('0x2e')],qs[_0x1823('0x32')](_0x5673b1['query'][_0x1823('0x32')]));_0x4115ac[_0x1823('0x33')]=_0x4115ac['attributes']['length']?_0x4115ac[_0x1823('0x33')]:_0x3add1f[_0x1823('0x2e')];if(!_0x5673b1['query'][_0x1823('0x34')](_0x1823('0x35'))){_0x4115ac[_0x1823('0x1d')]=qs[_0x1823('0x1d')](_0x5673b1[_0x1823('0x30')][_0x1823('0x1d')]);_0x4115ac[_0x1823('0x1e')]=qs['offset'](_0x5673b1[_0x1823('0x30')]['offset']);}_0x4115ac[_0x1823('0x36')]=qs[_0x1823('0x37')](_0x5673b1['query'][_0x1823('0x37')]);_0x4115ac[_0x1823('0x38')]=qs[_0x1823('0x39')](_['pick'](_0x5673b1[_0x1823('0x30')],_0x3add1f[_0x1823('0x39')]),_0xf20a62);if(_0x5673b1[_0x1823('0x30')][_0x1823('0x3a')]){_0x4115ac[_0x1823('0x38')]=_[_0x1823('0x3b')](_0x4115ac['where'],{'$or':_[_0x1823('0x2a')](_0xf20a62,function(_0x4dc3f7){if(_0x4dc3f7['type']!=='VIRTUAL'){var _0x5260b2={};_0x5260b2[_0x4dc3f7[_0x1823('0x27')]]={'$like':'%'+_0x5673b1['query'][_0x1823('0x3a')]+'%'};return _0x5260b2;}})});}_0x4115ac=_[_0x1823('0x3b')]({},_0x4115ac,_0x5673b1[_0x1823('0x3c')]);var _0x3a5f0d={'where':_0x4115ac[_0x1823('0x38')]};return db[_0x1823('0x2b')][_0x1823('0x1f')](_0x3a5f0d)['then'](function(_0x4a0340){_0xc88836[_0x1823('0x1f')]=_0x4a0340;if(_0x5673b1[_0x1823('0x30')][_0x1823('0x3d')]){_0x4115ac[_0x1823('0x3e')]=[{'all':!![]}];}return db['FreshsalesConfiguration']['findAll'](_0x4115ac);})[_0x1823('0x24')](function(_0x3f5cc8){_0xc88836[_0x1823('0x3f')]=_0x3f5cc8;return _0xc88836;})['then'](respondWithFilteredResult(_0x3e57d8,_0x4115ac))[_0x1823('0x40')](handleError(_0x3e57d8,null));};exports[_0x1823('0x41')]=function(_0x5a90d9,_0x100c20){var _0x178ad1={'raw':![],'where':{'id':_0x5a90d9['params']['id']}},_0x36cc99={};_0x36cc99['model']=_[_0x1823('0x2f')](db['FreshsalesConfiguration'][_0x1823('0x42')]);_0x36cc99[_0x1823('0x30')]=_[_0x1823('0x2f')](_0x5a90d9['query']);_0x36cc99['filters']=_['intersection'](_0x36cc99[_0x1823('0x2e')],_0x36cc99[_0x1823('0x30')]);_0x178ad1[_0x1823('0x33')]=_[_0x1823('0x31')](_0x36cc99[_0x1823('0x2e')],qs[_0x1823('0x32')](_0x5a90d9[_0x1823('0x30')][_0x1823('0x32')]));_0x178ad1['attributes']=_0x178ad1[_0x1823('0x33')]['length']?_0x178ad1[_0x1823('0x33')]:_0x36cc99['model'];if(_0x5a90d9[_0x1823('0x30')][_0x1823('0x3d')]){_0x178ad1['include']=[{'all':!![]}];}_0x178ad1=_[_0x1823('0x3b')]({},_0x178ad1,_0x5a90d9[_0x1823('0x3c')]);return db[_0x1823('0x2b')][_0x1823('0x43')](_0x178ad1)[_0x1823('0x24')](handleEntityNotFound(_0x100c20,null))[_0x1823('0x24')](respondWithResult(_0x100c20,null))[_0x1823('0x40')](handleError(_0x100c20,null));};exports[_0x1823('0x44')]=function(_0x1a19bb,_0x1166d6){return db[_0x1823('0x2b')][_0x1823('0x44')](_0x1a19bb['body'],{})[_0x1823('0x24')](respondWithResult(_0x1166d6,0xc9))[_0x1823('0x40')](handleError(_0x1166d6,null));};exports[_0x1823('0x23')]=function(_0x286173,_0x411450){if(_0x286173[_0x1823('0x45')]['id']){delete _0x286173[_0x1823('0x45')]['id'];}return db[_0x1823('0x2b')][_0x1823('0x43')]({'where':{'id':_0x286173[_0x1823('0x46')]['id']}})[_0x1823('0x24')](handleEntityNotFound(_0x411450,null))['then'](saveUpdates(_0x286173['body'],null))['then'](respondWithResult(_0x411450,null))[_0x1823('0x40')](handleError(_0x411450,null));};exports[_0x1823('0x47')]=function(_0x33b601,_0x4c7bac){return db[_0x1823('0x2b')]['find']({'where':{'id':_0x33b601[_0x1823('0x46')]['id']}})[_0x1823('0x24')](handleEntityNotFound(_0x4c7bac,null))[_0x1823('0x24')](removeEntity(_0x4c7bac,null))[_0x1823('0x40')](handleError(_0x4c7bac,null));};exports['getSubjects']=function(_0x20d22a,_0x737bee,_0x2e4186){var _0x3219fb={};var _0xefbc3b={};var _0x291aae;var _0x2fbf0f;return db[_0x1823('0x2b')][_0x1823('0x48')]({'where':{'id':_0x20d22a[_0x1823('0x46')]['id']}})[_0x1823('0x24')](handleEntityNotFound(_0x737bee,null))[_0x1823('0x24')](function(_0xe73e61){if(_0xe73e61){_0x291aae=_0xe73e61;_0xefbc3b[_0x1823('0x2e')]=_[_0x1823('0x2f')](db[_0x1823('0x49')]['rawAttributes']);_0xefbc3b[_0x1823('0x30')]=_['keys'](_0x20d22a[_0x1823('0x30')]);_0xefbc3b[_0x1823('0x39')]=_[_0x1823('0x31')](_0xefbc3b['model'],_0xefbc3b[_0x1823('0x30')]);_0x3219fb[_0x1823('0x33')]=_[_0x1823('0x31')](_0xefbc3b['model'],qs[_0x1823('0x32')](_0x20d22a[_0x1823('0x30')][_0x1823('0x32')]));_0x3219fb['attributes']=_0x3219fb[_0x1823('0x33')][_0x1823('0x4a')]?_0x3219fb[_0x1823('0x33')]:_0xefbc3b[_0x1823('0x2e')];_0x3219fb[_0x1823('0x36')]=qs[_0x1823('0x37')](_0x20d22a['query'][_0x1823('0x37')]);_0x3219fb['where']=qs[_0x1823('0x39')](_[_0x1823('0x4b')](_0x20d22a[_0x1823('0x30')],_0xefbc3b[_0x1823('0x39')]));if(_0x20d22a[_0x1823('0x30')][_0x1823('0x3a')]){_0x3219fb['where']=_[_0x1823('0x3b')](_0x3219fb[_0x1823('0x38')],{'$or':_['map'](_0x3219fb[_0x1823('0x33')],function(_0x152690){var _0x180f47={};_0x180f47[_0x152690]={'$like':'%'+_0x20d22a['query'][_0x1823('0x3a')]+'%'};return _0x180f47;})});}_0x3219fb=_[_0x1823('0x3b')]({},_0x3219fb,_0x20d22a['options']);return _0x291aae[_0x1823('0x4c')](_0x3219fb);}})[_0x1823('0x24')](function(_0x5c61cf){if(_0x5c61cf){_0x2fbf0f=_0x5c61cf['length'];if(!_0x20d22a[_0x1823('0x30')][_0x1823('0x34')]('nolimit')){_0x3219fb[_0x1823('0x1d')]=qs[_0x1823('0x1d')](_0x20d22a[_0x1823('0x30')][_0x1823('0x1d')]);_0x3219fb['offset']=qs[_0x1823('0x1e')](_0x20d22a[_0x1823('0x30')][_0x1823('0x1e')]);}return _0x291aae[_0x1823('0x4c')](_0x3219fb);}})[_0x1823('0x24')](function(_0x440740){if(_0x440740){return _0x440740?{'count':_0x2fbf0f,'rows':_0x440740}:null;}})['then'](respondWithResult(_0x737bee,null))[_0x1823('0x40')](handleError(_0x737bee,null));};exports[_0x1823('0x4d')]=function(_0x15f55f,_0x492045,_0x1ce8e8){var _0x26b881={};var _0x3abf69={};var _0x32b6d9;var _0x15c739;return db['FreshsalesConfiguration'][_0x1823('0x48')]({'where':{'id':_0x15f55f[_0x1823('0x46')]['id']}})[_0x1823('0x24')](handleEntityNotFound(_0x492045,null))[_0x1823('0x24')](function(_0x176e93){if(_0x176e93){_0x32b6d9=_0x176e93;_0x3abf69[_0x1823('0x2e')]=_[_0x1823('0x2f')](db[_0x1823('0x49')][_0x1823('0x42')]);_0x3abf69[_0x1823('0x30')]=_[_0x1823('0x2f')](_0x15f55f[_0x1823('0x30')]);_0x3abf69['filters']=_['intersection'](_0x3abf69[_0x1823('0x2e')],_0x3abf69[_0x1823('0x30')]);_0x26b881[_0x1823('0x33')]=_[_0x1823('0x31')](_0x3abf69['model'],qs[_0x1823('0x32')](_0x15f55f[_0x1823('0x30')][_0x1823('0x32')]));_0x26b881[_0x1823('0x33')]=_0x26b881[_0x1823('0x33')][_0x1823('0x4a')]?_0x26b881[_0x1823('0x33')]:_0x3abf69[_0x1823('0x2e')];_0x26b881[_0x1823('0x36')]=qs[_0x1823('0x37')](_0x15f55f[_0x1823('0x30')][_0x1823('0x37')]);_0x26b881[_0x1823('0x38')]=qs[_0x1823('0x39')](_['pick'](_0x15f55f[_0x1823('0x30')],_0x3abf69[_0x1823('0x39')]));if(_0x15f55f['query'][_0x1823('0x3a')]){_0x26b881[_0x1823('0x38')]=_[_0x1823('0x3b')](_0x26b881[_0x1823('0x38')],{'$or':_['map'](_0x26b881[_0x1823('0x33')],function(_0x3bd858){var _0x3fe7f={};_0x3fe7f[_0x3bd858]={'$like':'%'+_0x15f55f['query'][_0x1823('0x3a')]+'%'};return _0x3fe7f;})});}_0x26b881=_[_0x1823('0x3b')]({},_0x26b881,_0x15f55f['options']);return _0x32b6d9[_0x1823('0x4d')](_0x26b881);}})[_0x1823('0x24')](function(_0x7723d2){if(_0x7723d2){_0x15c739=_0x7723d2[_0x1823('0x4a')];if(!_0x15f55f[_0x1823('0x30')][_0x1823('0x34')](_0x1823('0x35'))){_0x26b881[_0x1823('0x1d')]=qs[_0x1823('0x1d')](_0x15f55f[_0x1823('0x30')][_0x1823('0x1d')]);_0x26b881[_0x1823('0x1e')]=qs[_0x1823('0x1e')](_0x15f55f[_0x1823('0x30')]['offset']);}return _0x32b6d9['getDescriptions'](_0x26b881);}})[_0x1823('0x24')](function(_0x31d778){if(_0x31d778){return _0x31d778?{'count':_0x15c739,'rows':_0x31d778}:null;}})[_0x1823('0x24')](respondWithResult(_0x492045,null))['catch'](handleError(_0x492045,null));};exports[_0x1823('0x4e')]=function(_0x339cc7,_0x3f5fc0,_0x3256e8){var _0x3979f8={};var _0x97083c={};var _0x1a8822;var _0x24d2c6;return db[_0x1823('0x2b')][_0x1823('0x48')]({'where':{'id':_0x339cc7['params']['id']}})['then'](handleEntityNotFound(_0x3f5fc0,null))[_0x1823('0x24')](function(_0x3f2481){if(_0x3f2481){_0x1a8822=_0x3f2481;_0x97083c[_0x1823('0x2e')]=_['keys'](db[_0x1823('0x49')][_0x1823('0x42')]);_0x97083c[_0x1823('0x30')]=_[_0x1823('0x2f')](_0x339cc7[_0x1823('0x30')]);_0x97083c[_0x1823('0x39')]=_['intersection'](_0x97083c['model'],_0x97083c[_0x1823('0x30')]);_0x3979f8[_0x1823('0x33')]=_['intersection'](_0x97083c[_0x1823('0x2e')],qs[_0x1823('0x32')](_0x339cc7['query'][_0x1823('0x32')]));_0x3979f8['attributes']=_0x3979f8[_0x1823('0x33')][_0x1823('0x4a')]?_0x3979f8[_0x1823('0x33')]:_0x97083c[_0x1823('0x2e')];_0x3979f8[_0x1823('0x36')]=qs[_0x1823('0x37')](_0x339cc7[_0x1823('0x30')][_0x1823('0x37')]);_0x3979f8[_0x1823('0x38')]=qs[_0x1823('0x39')](_[_0x1823('0x4b')](_0x339cc7[_0x1823('0x30')],_0x97083c['filters']));if(_0x339cc7['query'][_0x1823('0x3a')]){_0x3979f8[_0x1823('0x38')]=_[_0x1823('0x3b')](_0x3979f8['where'],{'$or':_[_0x1823('0x2a')](_0x3979f8[_0x1823('0x33')],function(_0x271917){var _0x109bab={};_0x109bab[_0x271917]={'$like':'%'+_0x339cc7[_0x1823('0x30')][_0x1823('0x3a')]+'%'};return _0x109bab;})});}_0x3979f8=_[_0x1823('0x3b')]({},_0x3979f8,_0x339cc7[_0x1823('0x3c')]);return _0x1a8822[_0x1823('0x4e')](_0x3979f8);}})[_0x1823('0x24')](function(_0x4e3591){if(_0x4e3591){_0x24d2c6=_0x4e3591['length'];if(!_0x339cc7[_0x1823('0x30')]['hasOwnProperty']('nolimit')){_0x3979f8[_0x1823('0x1d')]=qs[_0x1823('0x1d')](_0x339cc7['query']['limit']);_0x3979f8[_0x1823('0x1e')]=qs[_0x1823('0x1e')](_0x339cc7[_0x1823('0x30')][_0x1823('0x1e')]);}return _0x1a8822[_0x1823('0x4e')](_0x3979f8);}})[_0x1823('0x24')](function(_0x530a40){if(_0x530a40){return _0x530a40?{'count':_0x24d2c6,'rows':_0x530a40}:null;}})[_0x1823('0x24')](respondWithResult(_0x3f5fc0,null))[_0x1823('0x40')](handleError(_0x3f5fc0,null));};
\ No newline at end of file
+var _0xffb7=['end','json','undefined','count','offset','limit','Content-Range','apply','reject','update','destroy','error','stack','name','index','map','FreshsalesConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','order','sort','where','pick','VIRTUAL','filter','merge','options','then','includeAll','include','findAll','rows','show','params','fields','find','catch','create','body','getSubjects','hasOwnProperty','nolimit','getDescriptions','findOne','FreshsalesField','getFields','eml-format','rimraf','zip-dir','request-promise','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status'];(function(_0xde9059,_0x750aab){var _0x23197d=function(_0x457724){while(--_0x457724){_0xde9059['push'](_0xde9059['shift']());}};_0x23197d(++_0x750aab);}(_0xffb7,0x86));var _0x7ffb=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xffb7[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x7ffb('0x0'));var rimraf=require(_0x7ffb('0x1'));var zipdir=require(_0x7ffb('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7ffb('0x3'));var moment=require('moment');var BPromise=require(_0x7ffb('0x4'));var Mustache=require('mustache');var util=require(_0x7ffb('0x5'));var path=require(_0x7ffb('0x6'));var sox=require(_0x7ffb('0x7'));var csv=require(_0x7ffb('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7ffb('0x9'));var _=require(_0x7ffb('0xa'));var squel=require(_0x7ffb('0xb'));var crypto=require(_0x7ffb('0xc'));var jsforce=require(_0x7ffb('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x7ffb('0x8'));var querystring=require(_0x7ffb('0xe'));var Papa=require(_0x7ffb('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7ffb('0x10'));var logger=require(_0x7ffb('0x11'))(_0x7ffb('0x12'));var utils=require(_0x7ffb('0x13'));var config=require(_0x7ffb('0x14'));var licenseUtil=require(_0x7ffb('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x259386,_0x12ea1c){_0x12ea1c=_0x12ea1c||0xcc;return function(_0x241895){if(_0x241895){return _0x259386[_0x7ffb('0x16')](_0x12ea1c);}return _0x259386[_0x7ffb('0x17')](_0x12ea1c)[_0x7ffb('0x18')]();};}function respondWithResult(_0x443bdf,_0x4e4eb7){_0x4e4eb7=_0x4e4eb7||0xc8;return function(_0x285348){if(_0x285348){return _0x443bdf[_0x7ffb('0x17')](_0x4e4eb7)[_0x7ffb('0x19')](_0x285348);}};}function respondWithFilteredResult(_0x550b43,_0x1b0c5b){return function(_0x2a1a61){if(_0x2a1a61){var _0x205b5e=typeof _0x1b0c5b['offset']===_0x7ffb('0x1a')&&typeof _0x1b0c5b['limit']===_0x7ffb('0x1a');var _0xa11364=_0x2a1a61[_0x7ffb('0x1b')];var _0x3c233c=_0x205b5e?0x0:_0x1b0c5b[_0x7ffb('0x1c')];var _0x4e57dc=_0x205b5e?_0x2a1a61[_0x7ffb('0x1b')]:_0x1b0c5b[_0x7ffb('0x1c')]+_0x1b0c5b[_0x7ffb('0x1d')];var _0x2f1575;if(_0x4e57dc>=_0xa11364){_0x4e57dc=_0xa11364;_0x2f1575=0xc8;}else{_0x2f1575=0xce;}_0x550b43[_0x7ffb('0x17')](_0x2f1575);return _0x550b43['set'](_0x7ffb('0x1e'),_0x3c233c+'-'+_0x4e57dc+'/'+_0xa11364)['json'](_0x2a1a61);}return null;};}function patchUpdates(_0x50ed3a){return function(_0x4e6d15){try{jsonpatch[_0x7ffb('0x1f')](_0x4e6d15,_0x50ed3a,!![]);}catch(_0x3de03a){return BPromise[_0x7ffb('0x20')](_0x3de03a);}return _0x4e6d15['save']();};}function saveUpdates(_0x40bc5e,_0x1a71a0){return function(_0x33f81b){if(_0x33f81b){return _0x33f81b[_0x7ffb('0x21')](_0x40bc5e)['then'](function(_0x57d38c){return _0x57d38c;});}return null;};}function removeEntity(_0x3cbbfa,_0x471772){return function(_0x17895d){if(_0x17895d){return _0x17895d[_0x7ffb('0x22')]()['then'](function(){_0x3cbbfa['status'](0xcc)[_0x7ffb('0x18')]();});}};}function handleEntityNotFound(_0x21e928,_0x131c28){return function(_0x5d8618){if(!_0x5d8618){_0x21e928[_0x7ffb('0x16')](0x194);}return _0x5d8618;};}function handleError(_0x27e6b5,_0x50a622){_0x50a622=_0x50a622||0x1f4;return function(_0x3e125e){logger[_0x7ffb('0x23')](_0x3e125e[_0x7ffb('0x24')]);if(_0x3e125e[_0x7ffb('0x25')]){delete _0x3e125e[_0x7ffb('0x25')];}_0x27e6b5[_0x7ffb('0x17')](_0x50a622)['send'](_0x3e125e);};}exports[_0x7ffb('0x26')]=function(_0xc5211d,_0x15b72a){var _0x43572a={},_0x52fae0={},_0x64cde1={'count':0x0,'rows':[]};var _0x52a1bf=_[_0x7ffb('0x27')](db[_0x7ffb('0x28')][_0x7ffb('0x29')],function(_0x21b9b4){return{'name':_0x21b9b4[_0x7ffb('0x2a')],'type':_0x21b9b4[_0x7ffb('0x2b')][_0x7ffb('0x2c')]};});_0x52fae0[_0x7ffb('0x2d')]=_[_0x7ffb('0x27')](_0x52a1bf,_0x7ffb('0x25'));_0x52fae0[_0x7ffb('0x2e')]=_[_0x7ffb('0x2f')](_0xc5211d[_0x7ffb('0x2e')]);_0x52fae0[_0x7ffb('0x30')]=_[_0x7ffb('0x31')](_0x52fae0['model'],_0x52fae0[_0x7ffb('0x2e')]);_0x43572a[_0x7ffb('0x32')]=_[_0x7ffb('0x31')](_0x52fae0[_0x7ffb('0x2d')],qs['fields'](_0xc5211d[_0x7ffb('0x2e')]['fields']));_0x43572a[_0x7ffb('0x32')]=_0x43572a[_0x7ffb('0x32')][_0x7ffb('0x33')]?_0x43572a[_0x7ffb('0x32')]:_0x52fae0[_0x7ffb('0x2d')];if(!_0xc5211d[_0x7ffb('0x2e')]['hasOwnProperty']('nolimit')){_0x43572a[_0x7ffb('0x1d')]=qs[_0x7ffb('0x1d')](_0xc5211d[_0x7ffb('0x2e')][_0x7ffb('0x1d')]);_0x43572a[_0x7ffb('0x1c')]=qs[_0x7ffb('0x1c')](_0xc5211d[_0x7ffb('0x2e')][_0x7ffb('0x1c')]);}_0x43572a[_0x7ffb('0x34')]=qs[_0x7ffb('0x35')](_0xc5211d[_0x7ffb('0x2e')][_0x7ffb('0x35')]);_0x43572a[_0x7ffb('0x36')]=qs[_0x7ffb('0x30')](_[_0x7ffb('0x37')](_0xc5211d[_0x7ffb('0x2e')],_0x52fae0[_0x7ffb('0x30')]),_0x52a1bf);if(_0xc5211d[_0x7ffb('0x2e')]['filter']){_0x43572a[_0x7ffb('0x36')]=_['merge'](_0x43572a[_0x7ffb('0x36')],{'$or':_[_0x7ffb('0x27')](_0x52a1bf,function(_0x26cc1){if(_0x26cc1[_0x7ffb('0x2b')]!==_0x7ffb('0x38')){var _0x7df05d={};_0x7df05d[_0x26cc1['name']]={'$like':'%'+_0xc5211d[_0x7ffb('0x2e')][_0x7ffb('0x39')]+'%'};return _0x7df05d;}})});}_0x43572a=_[_0x7ffb('0x3a')]({},_0x43572a,_0xc5211d[_0x7ffb('0x3b')]);var _0x4961d5={'where':_0x43572a[_0x7ffb('0x36')]};return db[_0x7ffb('0x28')][_0x7ffb('0x1b')](_0x4961d5)[_0x7ffb('0x3c')](function(_0xf0aa27){_0x64cde1[_0x7ffb('0x1b')]=_0xf0aa27;if(_0xc5211d['query'][_0x7ffb('0x3d')]){_0x43572a[_0x7ffb('0x3e')]=[{'all':!![]}];}return db[_0x7ffb('0x28')][_0x7ffb('0x3f')](_0x43572a);})[_0x7ffb('0x3c')](function(_0x1105b1){_0x64cde1[_0x7ffb('0x40')]=_0x1105b1;return _0x64cde1;})[_0x7ffb('0x3c')](respondWithFilteredResult(_0x15b72a,_0x43572a))['catch'](handleError(_0x15b72a,null));};exports[_0x7ffb('0x41')]=function(_0x1fdf8a,_0x3b9f29){var _0x2c098d={'raw':![],'where':{'id':_0x1fdf8a[_0x7ffb('0x42')]['id']}},_0x23aa04={};_0x23aa04['model']=_[_0x7ffb('0x2f')](db['FreshsalesConfiguration'][_0x7ffb('0x29')]);_0x23aa04[_0x7ffb('0x2e')]=_['keys'](_0x1fdf8a[_0x7ffb('0x2e')]);_0x23aa04[_0x7ffb('0x30')]=_[_0x7ffb('0x31')](_0x23aa04[_0x7ffb('0x2d')],_0x23aa04['query']);_0x2c098d[_0x7ffb('0x32')]=_[_0x7ffb('0x31')](_0x23aa04[_0x7ffb('0x2d')],qs[_0x7ffb('0x43')](_0x1fdf8a[_0x7ffb('0x2e')]['fields']));_0x2c098d['attributes']=_0x2c098d[_0x7ffb('0x32')][_0x7ffb('0x33')]?_0x2c098d['attributes']:_0x23aa04[_0x7ffb('0x2d')];if(_0x1fdf8a[_0x7ffb('0x2e')][_0x7ffb('0x3d')]){_0x2c098d['include']=[{'all':!![]}];}_0x2c098d=_[_0x7ffb('0x3a')]({},_0x2c098d,_0x1fdf8a[_0x7ffb('0x3b')]);return db[_0x7ffb('0x28')][_0x7ffb('0x44')](_0x2c098d)[_0x7ffb('0x3c')](handleEntityNotFound(_0x3b9f29,null))[_0x7ffb('0x3c')](respondWithResult(_0x3b9f29,null))[_0x7ffb('0x45')](handleError(_0x3b9f29,null));};exports[_0x7ffb('0x46')]=function(_0x37af75,_0x1267ee){return db[_0x7ffb('0x28')][_0x7ffb('0x46')](_0x37af75['body'],{})[_0x7ffb('0x3c')](respondWithResult(_0x1267ee,0xc9))[_0x7ffb('0x45')](handleError(_0x1267ee,null));};exports[_0x7ffb('0x21')]=function(_0x41ceac,_0x184bba){if(_0x41ceac['body']['id']){delete _0x41ceac[_0x7ffb('0x47')]['id'];}return db[_0x7ffb('0x28')][_0x7ffb('0x44')]({'where':{'id':_0x41ceac[_0x7ffb('0x42')]['id']}})[_0x7ffb('0x3c')](handleEntityNotFound(_0x184bba,null))[_0x7ffb('0x3c')](saveUpdates(_0x41ceac[_0x7ffb('0x47')],null))[_0x7ffb('0x3c')](respondWithResult(_0x184bba,null))[_0x7ffb('0x45')](handleError(_0x184bba,null));};exports[_0x7ffb('0x22')]=function(_0x50e740,_0x116432){return db[_0x7ffb('0x28')][_0x7ffb('0x44')]({'where':{'id':_0x50e740[_0x7ffb('0x42')]['id']}})['then'](handleEntityNotFound(_0x116432,null))['then'](removeEntity(_0x116432,null))[_0x7ffb('0x45')](handleError(_0x116432,null));};exports[_0x7ffb('0x48')]=function(_0x3266a0,_0x381b13,_0x26b1ed){var _0x120d6e={};var _0x27b9e5={};var _0xf7bc43;var _0x13863a;return db[_0x7ffb('0x28')]['findOne']({'where':{'id':_0x3266a0[_0x7ffb('0x42')]['id']}})['then'](handleEntityNotFound(_0x381b13,null))[_0x7ffb('0x3c')](function(_0xdf5ca7){if(_0xdf5ca7){_0xf7bc43=_0xdf5ca7;_0x27b9e5[_0x7ffb('0x2d')]=_[_0x7ffb('0x2f')](db['FreshsalesField'][_0x7ffb('0x29')]);_0x27b9e5[_0x7ffb('0x2e')]=_['keys'](_0x3266a0[_0x7ffb('0x2e')]);_0x27b9e5['filters']=_[_0x7ffb('0x31')](_0x27b9e5[_0x7ffb('0x2d')],_0x27b9e5['query']);_0x120d6e[_0x7ffb('0x32')]=_[_0x7ffb('0x31')](_0x27b9e5[_0x7ffb('0x2d')],qs[_0x7ffb('0x43')](_0x3266a0[_0x7ffb('0x2e')][_0x7ffb('0x43')]));_0x120d6e['attributes']=_0x120d6e['attributes']['length']?_0x120d6e[_0x7ffb('0x32')]:_0x27b9e5[_0x7ffb('0x2d')];_0x120d6e[_0x7ffb('0x34')]=qs[_0x7ffb('0x35')](_0x3266a0['query'][_0x7ffb('0x35')]);_0x120d6e[_0x7ffb('0x36')]=qs[_0x7ffb('0x30')](_[_0x7ffb('0x37')](_0x3266a0[_0x7ffb('0x2e')],_0x27b9e5[_0x7ffb('0x30')]));if(_0x3266a0['query'][_0x7ffb('0x39')]){_0x120d6e[_0x7ffb('0x36')]=_['merge'](_0x120d6e['where'],{'$or':_['map'](_0x120d6e[_0x7ffb('0x32')],function(_0x2107d9){var _0x503a05={};_0x503a05[_0x2107d9]={'$like':'%'+_0x3266a0[_0x7ffb('0x2e')][_0x7ffb('0x39')]+'%'};return _0x503a05;})});}_0x120d6e=_[_0x7ffb('0x3a')]({},_0x120d6e,_0x3266a0['options']);return _0xf7bc43[_0x7ffb('0x48')](_0x120d6e);}})[_0x7ffb('0x3c')](function(_0x5462c1){if(_0x5462c1){_0x13863a=_0x5462c1[_0x7ffb('0x33')];if(!_0x3266a0[_0x7ffb('0x2e')][_0x7ffb('0x49')](_0x7ffb('0x4a'))){_0x120d6e['limit']=qs[_0x7ffb('0x1d')](_0x3266a0[_0x7ffb('0x2e')][_0x7ffb('0x1d')]);_0x120d6e['offset']=qs[_0x7ffb('0x1c')](_0x3266a0[_0x7ffb('0x2e')]['offset']);}return _0xf7bc43[_0x7ffb('0x48')](_0x120d6e);}})[_0x7ffb('0x3c')](function(_0x5b93cb){if(_0x5b93cb){return _0x5b93cb?{'count':_0x13863a,'rows':_0x5b93cb}:null;}})['then'](respondWithResult(_0x381b13,null))[_0x7ffb('0x45')](handleError(_0x381b13,null));};exports[_0x7ffb('0x4b')]=function(_0xbdb081,_0x2c052f,_0x222f59){var _0xa1d09f={};var _0x204406={};var _0x4558f9;var _0x114b4a;return db['FreshsalesConfiguration'][_0x7ffb('0x4c')]({'where':{'id':_0xbdb081[_0x7ffb('0x42')]['id']}})[_0x7ffb('0x3c')](handleEntityNotFound(_0x2c052f,null))['then'](function(_0xa41d64){if(_0xa41d64){_0x4558f9=_0xa41d64;_0x204406['model']=_[_0x7ffb('0x2f')](db[_0x7ffb('0x4d')][_0x7ffb('0x29')]);_0x204406[_0x7ffb('0x2e')]=_[_0x7ffb('0x2f')](_0xbdb081[_0x7ffb('0x2e')]);_0x204406[_0x7ffb('0x30')]=_[_0x7ffb('0x31')](_0x204406[_0x7ffb('0x2d')],_0x204406[_0x7ffb('0x2e')]);_0xa1d09f[_0x7ffb('0x32')]=_[_0x7ffb('0x31')](_0x204406['model'],qs[_0x7ffb('0x43')](_0xbdb081[_0x7ffb('0x2e')][_0x7ffb('0x43')]));_0xa1d09f[_0x7ffb('0x32')]=_0xa1d09f[_0x7ffb('0x32')][_0x7ffb('0x33')]?_0xa1d09f['attributes']:_0x204406[_0x7ffb('0x2d')];_0xa1d09f[_0x7ffb('0x34')]=qs[_0x7ffb('0x35')](_0xbdb081[_0x7ffb('0x2e')][_0x7ffb('0x35')]);_0xa1d09f[_0x7ffb('0x36')]=qs[_0x7ffb('0x30')](_[_0x7ffb('0x37')](_0xbdb081[_0x7ffb('0x2e')],_0x204406[_0x7ffb('0x30')]));if(_0xbdb081['query'][_0x7ffb('0x39')]){_0xa1d09f['where']=_['merge'](_0xa1d09f[_0x7ffb('0x36')],{'$or':_[_0x7ffb('0x27')](_0xa1d09f[_0x7ffb('0x32')],function(_0x19b476){var _0x43098b={};_0x43098b[_0x19b476]={'$like':'%'+_0xbdb081[_0x7ffb('0x2e')][_0x7ffb('0x39')]+'%'};return _0x43098b;})});}_0xa1d09f=_[_0x7ffb('0x3a')]({},_0xa1d09f,_0xbdb081[_0x7ffb('0x3b')]);return _0x4558f9[_0x7ffb('0x4b')](_0xa1d09f);}})[_0x7ffb('0x3c')](function(_0x236cfa){if(_0x236cfa){_0x114b4a=_0x236cfa[_0x7ffb('0x33')];if(!_0xbdb081[_0x7ffb('0x2e')][_0x7ffb('0x49')](_0x7ffb('0x4a'))){_0xa1d09f[_0x7ffb('0x1d')]=qs[_0x7ffb('0x1d')](_0xbdb081['query'][_0x7ffb('0x1d')]);_0xa1d09f['offset']=qs[_0x7ffb('0x1c')](_0xbdb081['query']['offset']);}return _0x4558f9[_0x7ffb('0x4b')](_0xa1d09f);}})[_0x7ffb('0x3c')](function(_0x129c8b){if(_0x129c8b){return _0x129c8b?{'count':_0x114b4a,'rows':_0x129c8b}:null;}})['then'](respondWithResult(_0x2c052f,null))[_0x7ffb('0x45')](handleError(_0x2c052f,null));};exports['getFields']=function(_0x17aecd,_0x3aa42,_0x317ff1){var _0x3f7d93={};var _0x5e699a={};var _0xa4c0d0;var _0x4a3421;return db[_0x7ffb('0x28')][_0x7ffb('0x4c')]({'where':{'id':_0x17aecd[_0x7ffb('0x42')]['id']}})['then'](handleEntityNotFound(_0x3aa42,null))['then'](function(_0x52e522){if(_0x52e522){_0xa4c0d0=_0x52e522;_0x5e699a[_0x7ffb('0x2d')]=_[_0x7ffb('0x2f')](db['FreshsalesField'][_0x7ffb('0x29')]);_0x5e699a[_0x7ffb('0x2e')]=_['keys'](_0x17aecd[_0x7ffb('0x2e')]);_0x5e699a['filters']=_[_0x7ffb('0x31')](_0x5e699a[_0x7ffb('0x2d')],_0x5e699a[_0x7ffb('0x2e')]);_0x3f7d93[_0x7ffb('0x32')]=_[_0x7ffb('0x31')](_0x5e699a[_0x7ffb('0x2d')],qs['fields'](_0x17aecd[_0x7ffb('0x2e')][_0x7ffb('0x43')]));_0x3f7d93['attributes']=_0x3f7d93['attributes'][_0x7ffb('0x33')]?_0x3f7d93['attributes']:_0x5e699a[_0x7ffb('0x2d')];_0x3f7d93[_0x7ffb('0x34')]=qs[_0x7ffb('0x35')](_0x17aecd[_0x7ffb('0x2e')][_0x7ffb('0x35')]);_0x3f7d93['where']=qs['filters'](_[_0x7ffb('0x37')](_0x17aecd[_0x7ffb('0x2e')],_0x5e699a[_0x7ffb('0x30')]));if(_0x17aecd[_0x7ffb('0x2e')]['filter']){_0x3f7d93[_0x7ffb('0x36')]=_['merge'](_0x3f7d93[_0x7ffb('0x36')],{'$or':_[_0x7ffb('0x27')](_0x3f7d93[_0x7ffb('0x32')],function(_0x4f5f0b){var _0x354229={};_0x354229[_0x4f5f0b]={'$like':'%'+_0x17aecd[_0x7ffb('0x2e')][_0x7ffb('0x39')]+'%'};return _0x354229;})});}_0x3f7d93=_[_0x7ffb('0x3a')]({},_0x3f7d93,_0x17aecd[_0x7ffb('0x3b')]);return _0xa4c0d0[_0x7ffb('0x4e')](_0x3f7d93);}})['then'](function(_0x3f7217){if(_0x3f7217){_0x4a3421=_0x3f7217[_0x7ffb('0x33')];if(!_0x17aecd['query'][_0x7ffb('0x49')](_0x7ffb('0x4a'))){_0x3f7d93[_0x7ffb('0x1d')]=qs['limit'](_0x17aecd['query']['limit']);_0x3f7d93['offset']=qs[_0x7ffb('0x1c')](_0x17aecd['query']['offset']);}return _0xa4c0d0[_0x7ffb('0x4e')](_0x3f7d93);}})[_0x7ffb('0x3c')](function(_0x7b1504){if(_0x7b1504){return _0x7b1504?{'count':_0x4a3421,'rows':_0x7b1504}:null;}})['then'](respondWithResult(_0x3aa42,null))[_0x7ffb('0x45')](handleError(_0x3aa42,null));};
\ No newline at end of file
index df15bd4..067d8e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf14=['rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','define','int_freshsales_configurations','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x2dd324,_0x2d0881){var _0x33bc5c=function(_0x4bcbc7){while(--_0x4bcbc7){_0x2dd324['push'](_0x2dd324['shift']());}};_0x33bc5c(++_0x2d0881);}(_0xcf14,0x185));var _0x4cf1=function(_0x3592c2,_0x5f1634){_0x3592c2=_0x3592c2-0x0;var _0x189724=_0xcf14[_0x3592c2];return _0x189724;};'use strict';var _=require(_0x4cf1('0x0'));var util=require(_0x4cf1('0x1'));var logger=require('../../config/logger')(_0x4cf1('0x2'));var moment=require(_0x4cf1('0x3'));var BPromise=require(_0x4cf1('0x4'));var rp=require(_0x4cf1('0x5'));var fs=require('fs');var path=require(_0x4cf1('0x6'));var rimraf=require(_0x4cf1('0x7'));var config=require(_0x4cf1('0x8'));var attributes=require(_0x4cf1('0x9'));module['exports']=function(_0x214f99,_0x393a03){return _0x214f99[_0x4cf1('0xa')]('FreshsalesConfiguration',attributes,{'tableName':_0x4cf1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4c5c=['int_freshsales_configurations','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','define','FreshsalesConfiguration'];(function(_0x599f41,_0x4db732){var _0x2e4d58=function(_0x14c882){while(--_0x14c882){_0x599f41['push'](_0x599f41['shift']());}};_0x2e4d58(++_0x4db732);}(_0x4c5c,0x199));var _0xc4c5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4c5c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xc4c5('0x0'));var logger=require(_0xc4c5('0x1'))(_0xc4c5('0x2'));var moment=require(_0xc4c5('0x3'));var BPromise=require(_0xc4c5('0x4'));var rp=require(_0xc4c5('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc4c5('0x6'));var config=require(_0xc4c5('0x7'));var attributes=require(_0xc4c5('0x8'));module['exports']=function(_0x482533,_0x8f42af){return _0x482533[_0xc4c5('0x9')](_0xc4c5('0xa'),attributes,{'tableName':_0xc4c5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c5d5a9c..4c2d9f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8b9=['stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s'];(function(_0x53eaa1,_0x5c3fc3){var _0x5a1022=function(_0x17fa3f){while(--_0x17fa3f){_0x53eaa1['push'](_0x53eaa1['shift']());}};_0x5a1022(++_0x5c3fc3);}(_0xf8b9,0xd5));var _0x9f8b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf8b9[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x9f8b('0x0'));var util=require('util');var moment=require(_0x9f8b('0x1'));var BPromise=require(_0x9f8b('0x2'));var rs=require(_0x9f8b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9f8b('0x4'))['db'];var utils=require(_0x9f8b('0x5'));var logger=require(_0x9f8b('0x6'))(_0x9f8b('0x7'));var config=require('../../config/environment');var jayson=require(_0x9f8b('0x8'));var client=jayson[_0x9f8b('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x515fe0,_0x40ba33,_0x17f091){return new BPromise(function(_0x4904b1,_0x4a05f7){return client[_0x9f8b('0xa')](_0x515fe0,_0x17f091)[_0x9f8b('0xb')](function(_0x5298d7){logger[_0x9f8b('0xc')](_0x9f8b('0xd'),_0x40ba33,_0x9f8b('0xe'));logger[_0x9f8b('0xf')](_0x9f8b('0x10'),_0x40ba33,'request\x20sent',JSON[_0x9f8b('0x11')](_0x5298d7));if(_0x5298d7[_0x9f8b('0x12')]){if(_0x5298d7[_0x9f8b('0x12')][_0x9f8b('0x13')]===0x1f4){logger[_0x9f8b('0x12')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x40ba33,_0x5298d7['error'][_0x9f8b('0x14')]);return _0x4a05f7(_0x5298d7[_0x9f8b('0x12')]['message']);}logger[_0x9f8b('0x12')](_0x9f8b('0xd'),_0x40ba33,_0x5298d7[_0x9f8b('0x12')]['message']);return _0x4904b1(_0x5298d7[_0x9f8b('0x12')][_0x9f8b('0x14')]);}else{logger[_0x9f8b('0xc')](_0x9f8b('0xd'),_0x40ba33,_0x9f8b('0xe'));_0x4904b1(_0x5298d7[_0x9f8b('0x15')]['message']);}})[_0x9f8b('0x16')](function(_0x520469){logger[_0x9f8b('0x12')](_0x9f8b('0xd'),_0x40ba33,_0x520469);_0x4a05f7(_0x520469);});});}
\ No newline at end of file
+var _0x78ea=['FreshsalesConfiguration,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x18c929,_0x212835){var _0x509845=function(_0x6294b6){while(--_0x6294b6){_0x18c929['push'](_0x18c929['shift']());}};_0x509845(++_0x212835);}(_0x78ea,0x76));var _0xa78e=function(_0x1ed388,_0x4c1474){_0x1ed388=_0x1ed388-0x0;var _0x356c7f=_0x78ea[_0x1ed388];return _0x356c7f;};'use strict';var _=require(_0xa78e('0x0'));var util=require(_0xa78e('0x1'));var moment=require(_0xa78e('0x2'));var BPromise=require(_0xa78e('0x3'));var rs=require(_0xa78e('0x4'));var fs=require('fs');var Redis=require(_0xa78e('0x5'));var db=require(_0xa78e('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xa78e('0x7'))('rpc');var config=require(_0xa78e('0x8'));var jayson=require(_0xa78e('0x9'));var client=jayson[_0xa78e('0xa')][_0xa78e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x36db57,_0x42f15b,_0x13d39a){return new BPromise(function(_0x34d76b,_0xeaf6f9){return client['request'](_0x36db57,_0x13d39a)[_0xa78e('0xc')](function(_0x53a2c3){logger[_0xa78e('0xd')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x42f15b,_0xa78e('0xe'));logger['debug'](_0xa78e('0xf'),_0x42f15b,_0xa78e('0xe'),JSON[_0xa78e('0x10')](_0x53a2c3));if(_0x53a2c3[_0xa78e('0x11')]){if(_0x53a2c3[_0xa78e('0x11')][_0xa78e('0x12')]===0x1f4){logger[_0xa78e('0x11')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x42f15b,_0x53a2c3[_0xa78e('0x11')][_0xa78e('0x13')]);return _0xeaf6f9(_0x53a2c3['error'][_0xa78e('0x13')]);}logger['error'](_0xa78e('0x14'),_0x42f15b,_0x53a2c3[_0xa78e('0x11')][_0xa78e('0x13')]);return _0x34d76b(_0x53a2c3[_0xa78e('0x11')][_0xa78e('0x13')]);}else{logger['info'](_0xa78e('0x14'),_0x42f15b,_0xa78e('0xe'));_0x34d76b(_0x53a2c3[_0xa78e('0x15')][_0xa78e('0x13')]);}})[_0xa78e('0x16')](function(_0x44b9c5){logger['error'](_0xa78e('0x14'),_0x42f15b,_0x44b9c5);_0xeaf6f9(_0x44b9c5);});});}
\ No newline at end of file
index 25d1a51..8665e01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fec=['../../components/auth/service','../../components/interaction/service','./intFreshsalesField.controller','isAuthenticated','index','show','post','delete','destroy','exports','multer','util','path','Router'];(function(_0x493de9,_0x387d41){var _0x5e7c8a=function(_0xa87772){while(--_0xa87772){_0x493de9['push'](_0x493de9['shift']());}};_0x5e7c8a(++_0x387d41);}(_0x0fec,0x1ca));var _0xc0fe=function(_0x67960c,_0x1da730){_0x67960c=_0x67960c-0x0;var _0x4c6cb6=_0x0fec[_0x67960c];return _0x4c6cb6;};'use strict';var multer=require(_0xc0fe('0x0'));var util=require(_0xc0fe('0x1'));var path=require(_0xc0fe('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc0fe('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xc0fe('0x4'));var interaction=require(_0xc0fe('0x5'));var config=require('../../config/environment');var controller=require(_0xc0fe('0x6'));router['get']('/',auth[_0xc0fe('0x7')](),controller[_0xc0fe('0x8')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xc0fe('0x9')]);router[_0xc0fe('0xa')]('/',auth[_0xc0fe('0x7')](),controller['create']);router['put']('/:id',auth[_0xc0fe('0x7')](),controller['update']);router[_0xc0fe('0xb')]('/:id',auth[_0xc0fe('0x7')](),controller[_0xc0fe('0xc')]);module[_0xc0fe('0xd')]=router;
\ No newline at end of file
+var _0x18e0=['get','isAuthenticated','/:id','post','create','put','delete','exports','util','connect-timeout','express','Router','../../components/auth/service','./intFreshsalesField.controller'];(function(_0x29c706,_0x328244){var _0x3ca004=function(_0x1fd177){while(--_0x1fd177){_0x29c706['push'](_0x29c706['shift']());}};_0x3ca004(++_0x328244);}(_0x18e0,0xa2));var _0x018e=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0x18e0[_0x1cc8fe];return _0x230054;};'use strict';var multer=require('multer');var util=require(_0x018e('0x0'));var path=require('path');var timeout=require(_0x018e('0x1'));var express=require(_0x018e('0x2'));var router=express[_0x018e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x018e('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x018e('0x5'));router[_0x018e('0x6')]('/',auth[_0x018e('0x7')](),controller['index']);router['get'](_0x018e('0x8'),auth[_0x018e('0x7')](),controller['show']);router[_0x018e('0x9')]('/',auth[_0x018e('0x7')](),controller[_0x018e('0xa')]);router[_0x018e('0xb')](_0x018e('0x8'),auth[_0x018e('0x7')](),controller['update']);router[_0x018e('0xc')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x018e('0xd')]=router;
\ No newline at end of file
index 2610e35..f75763b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4550=['BOOLEAN','sequelize','ENUM','string','variable','keyValue','picklist','STRING'];(function(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0x4550,0x111));var _0x0455=function(_0xf67acd,_0x1256f7){_0xf67acd=_0xf67acd-0x0;var _0x34766d=_0x4550[_0xf67acd];return _0x34766d;};'use strict';var Sequelize=require(_0x0455('0x0'));module['exports']={'type':{'type':Sequelize[_0x0455('0x1')](_0x0455('0x2'),_0x0455('0x3'),'customVariable',_0x0455('0x4'),_0x0455('0x5')),'defaultValue':_0x0455('0x2')},'content':{'type':Sequelize[_0x0455('0x6')]},'key':{'type':Sequelize[_0x0455('0x6')]},'keyType':{'type':Sequelize[_0x0455('0x1')](_0x0455('0x2'),_0x0455('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x0455('0x6')]},'idField':{'type':Sequelize[_0x0455('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x0455('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x0455('0x6')]}};
\ No newline at end of file
+var _0xe150=['customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable'];(function(_0x55697f,_0x314fb6){var _0x1fc10c=function(_0x280a80){while(--_0x280a80){_0x55697f['push'](_0x55697f['shift']());}};_0x1fc10c(++_0x314fb6);}(_0xe150,0x131));var _0x0e15=function(_0xc3db1e,_0x50d9cc){_0xc3db1e=_0xc3db1e-0x0;var _0x56db8a=_0xe150[_0xc3db1e];return _0x56db8a;};'use strict';var Sequelize=require(_0x0e15('0x0'));module[_0x0e15('0x1')]={'type':{'type':Sequelize[_0x0e15('0x2')](_0x0e15('0x3'),_0x0e15('0x4'),_0x0e15('0x5'),_0x0e15('0x6'),_0x0e15('0x7')),'defaultValue':_0x0e15('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x0e15('0x8')]},'keyType':{'type':Sequelize['ENUM'](_0x0e15('0x3'),_0x0e15('0x4'),_0x0e15('0x5'))},'keyContent':{'type':Sequelize[_0x0e15('0x8')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x0e15('0x8')]},'customField':{'type':Sequelize[_0x0e15('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x0e15('0x8')]}};
\ No newline at end of file
index 416c98c..d17dd72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x841c=['reject','save','update','then','error','stack','name','send','index','map','FreshsalesField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','params','fields','find','create','body','destroy','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set','apply'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x841c,0xb9));var _0xc841=function(_0x49b207,_0x408ade){_0x49b207=_0x49b207-0x0;var _0x2dc8fa=_0x841c[_0x49b207];return _0x2dc8fa;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xc841('0x0'));var jsonpatch=require(_0xc841('0x1'));var rp=require(_0xc841('0x2'));var moment=require(_0xc841('0x3'));var BPromise=require(_0xc841('0x4'));var Mustache=require(_0xc841('0x5'));var util=require(_0xc841('0x6'));var path=require(_0xc841('0x7'));var sox=require('sox');var csv=require(_0xc841('0x8'));var ejs=require(_0xc841('0x9'));var fs=require('fs');var fs_extra=require(_0xc841('0xa'));var _=require(_0xc841('0xb'));var squel=require('squel');var crypto=require(_0xc841('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xc841('0x8'));var querystring=require(_0xc841('0xd'));var Papa=require('papaparse');var Redis=require(_0xc841('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xc841('0xf'));var as=require(_0xc841('0x10'));var hardwareService=require(_0xc841('0x11'));var logger=require(_0xc841('0x12'))('api');var utils=require(_0xc841('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xc841('0x14'))['db'];function respondWithStatusCode(_0x5d572e,_0x9e2d89){_0x9e2d89=_0x9e2d89||0xcc;return function(_0x53b12a){if(_0x53b12a){return _0x5d572e[_0xc841('0x15')](_0x9e2d89);}return _0x5d572e['status'](_0x9e2d89)[_0xc841('0x16')]();};}function respondWithResult(_0x5bba49,_0x496ed9){_0x496ed9=_0x496ed9||0xc8;return function(_0x77bad5){if(_0x77bad5){return _0x5bba49[_0xc841('0x17')](_0x496ed9)[_0xc841('0x18')](_0x77bad5);}};}function respondWithFilteredResult(_0x4f0c46,_0x9deb86){return function(_0x39567a){if(_0x39567a){var _0x5172aa=typeof _0x9deb86[_0xc841('0x19')]==='undefined'&&typeof _0x9deb86[_0xc841('0x1a')]===_0xc841('0x1b');var _0x32dbb6=_0x39567a[_0xc841('0x1c')];var _0x718797=_0x5172aa?0x0:_0x9deb86[_0xc841('0x19')];var _0x26594b=_0x5172aa?_0x39567a['count']:_0x9deb86[_0xc841('0x19')]+_0x9deb86['limit'];var _0x2f9fff;if(_0x26594b>=_0x32dbb6){_0x26594b=_0x32dbb6;_0x2f9fff=0xc8;}else{_0x2f9fff=0xce;}_0x4f0c46[_0xc841('0x17')](_0x2f9fff);return _0x4f0c46[_0xc841('0x1d')]('Content-Range',_0x718797+'-'+_0x26594b+'/'+_0x32dbb6)[_0xc841('0x18')](_0x39567a);}return null;};}function patchUpdates(_0x270760){return function(_0x359599){try{jsonpatch[_0xc841('0x1e')](_0x359599,_0x270760,!![]);}catch(_0x936446){return BPromise[_0xc841('0x1f')](_0x936446);}return _0x359599[_0xc841('0x20')]();};}function saveUpdates(_0x10a1b3,_0x810625){return function(_0x10cc38){if(_0x10cc38){return _0x10cc38[_0xc841('0x21')](_0x10a1b3)[_0xc841('0x22')](function(_0x5d8e0a){return _0x5d8e0a;});}return null;};}function removeEntity(_0x437b8e,_0x1e2879){return function(_0x1f4e5d){if(_0x1f4e5d){return _0x1f4e5d['destroy']()[_0xc841('0x22')](function(){_0x437b8e[_0xc841('0x17')](0xcc)[_0xc841('0x16')]();});}};}function handleEntityNotFound(_0x251b68,_0x578c04){return function(_0x3281ea){if(!_0x3281ea){_0x251b68[_0xc841('0x15')](0x194);}return _0x3281ea;};}function handleError(_0x533725,_0xfb8778){_0xfb8778=_0xfb8778||0x1f4;return function(_0x4ce892){logger[_0xc841('0x23')](_0x4ce892[_0xc841('0x24')]);if(_0x4ce892[_0xc841('0x25')]){delete _0x4ce892['name'];}_0x533725[_0xc841('0x17')](_0xfb8778)[_0xc841('0x26')](_0x4ce892);};}exports[_0xc841('0x27')]=function(_0x4145b8,_0x4105da){var _0x2952ed={},_0x13606b={},_0x368027={'count':0x0,'rows':[]};var _0x13b745=_[_0xc841('0x28')](db[_0xc841('0x29')][_0xc841('0x2a')],function(_0x595063){return{'name':_0x595063[_0xc841('0x2b')],'type':_0x595063[_0xc841('0x2c')][_0xc841('0x2d')]};});_0x13606b[_0xc841('0x2e')]=_[_0xc841('0x28')](_0x13b745,_0xc841('0x25'));_0x13606b[_0xc841('0x2f')]=_[_0xc841('0x30')](_0x4145b8[_0xc841('0x2f')]);_0x13606b[_0xc841('0x31')]=_[_0xc841('0x32')](_0x13606b[_0xc841('0x2e')],_0x13606b[_0xc841('0x2f')]);_0x2952ed[_0xc841('0x33')]=_[_0xc841('0x32')](_0x13606b[_0xc841('0x2e')],qs['fields'](_0x4145b8[_0xc841('0x2f')]['fields']));_0x2952ed[_0xc841('0x33')]=_0x2952ed[_0xc841('0x33')][_0xc841('0x34')]?_0x2952ed[_0xc841('0x33')]:_0x13606b[_0xc841('0x2e')];if(!_0x4145b8['query']['hasOwnProperty'](_0xc841('0x35'))){_0x2952ed[_0xc841('0x1a')]=qs[_0xc841('0x1a')](_0x4145b8[_0xc841('0x2f')][_0xc841('0x1a')]);_0x2952ed['offset']=qs[_0xc841('0x19')](_0x4145b8[_0xc841('0x2f')]['offset']);}_0x2952ed['order']=qs[_0xc841('0x36')](_0x4145b8[_0xc841('0x2f')][_0xc841('0x36')]);_0x2952ed[_0xc841('0x37')]=qs[_0xc841('0x31')](_[_0xc841('0x38')](_0x4145b8[_0xc841('0x2f')],_0x13606b[_0xc841('0x31')]),_0x13b745);if(_0x4145b8[_0xc841('0x2f')]['filter']){_0x2952ed[_0xc841('0x37')]=_[_0xc841('0x39')](_0x2952ed[_0xc841('0x37')],{'$or':_[_0xc841('0x28')](_0x13b745,function(_0x2c5b6e){if(_0x2c5b6e[_0xc841('0x2c')]!==_0xc841('0x3a')){var _0x593bc0={};_0x593bc0[_0x2c5b6e[_0xc841('0x25')]]={'$like':'%'+_0x4145b8[_0xc841('0x2f')][_0xc841('0x3b')]+'%'};return _0x593bc0;}})});}_0x2952ed=_[_0xc841('0x39')]({},_0x2952ed,_0x4145b8[_0xc841('0x3c')]);var _0x4c9efe={'where':_0x2952ed[_0xc841('0x37')]};return db['FreshsalesField'][_0xc841('0x1c')](_0x4c9efe)[_0xc841('0x22')](function(_0x392008){_0x368027[_0xc841('0x1c')]=_0x392008;if(_0x4145b8[_0xc841('0x2f')][_0xc841('0x3d')]){_0x2952ed[_0xc841('0x3e')]=[{'all':!![]}];}return db[_0xc841('0x29')][_0xc841('0x3f')](_0x2952ed);})[_0xc841('0x22')](function(_0x59a69f){_0x368027['rows']=_0x59a69f;return _0x368027;})[_0xc841('0x22')](respondWithFilteredResult(_0x4105da,_0x2952ed))[_0xc841('0x40')](handleError(_0x4105da,null));};exports[_0xc841('0x41')]=function(_0x3def49,_0x13f10b){var _0x4b21f5={'raw':!![],'where':{'id':_0x3def49[_0xc841('0x42')]['id']}},_0x111257={};_0x111257[_0xc841('0x2e')]=_[_0xc841('0x30')](db[_0xc841('0x29')][_0xc841('0x2a')]);_0x111257['query']=_['keys'](_0x3def49[_0xc841('0x2f')]);_0x111257[_0xc841('0x31')]=_['intersection'](_0x111257[_0xc841('0x2e')],_0x111257[_0xc841('0x2f')]);_0x4b21f5[_0xc841('0x33')]=_['intersection'](_0x111257['model'],qs[_0xc841('0x43')](_0x3def49[_0xc841('0x2f')][_0xc841('0x43')]));_0x4b21f5[_0xc841('0x33')]=_0x4b21f5[_0xc841('0x33')][_0xc841('0x34')]?_0x4b21f5[_0xc841('0x33')]:_0x111257['model'];if(_0x3def49[_0xc841('0x2f')][_0xc841('0x3d')]){_0x4b21f5['include']=[{'all':!![]}];}_0x4b21f5=_['merge']({},_0x4b21f5,_0x3def49[_0xc841('0x3c')]);return db['FreshsalesField'][_0xc841('0x44')](_0x4b21f5)['then'](handleEntityNotFound(_0x13f10b,null))['then'](respondWithResult(_0x13f10b,null))[_0xc841('0x40')](handleError(_0x13f10b,null));};exports[_0xc841('0x45')]=function(_0x246c28,_0x837b80){return db[_0xc841('0x29')][_0xc841('0x45')](_0x246c28[_0xc841('0x46')],{})[_0xc841('0x22')](respondWithResult(_0x837b80,0xc9))[_0xc841('0x40')](handleError(_0x837b80,null));};exports[_0xc841('0x21')]=function(_0x1df002,_0xbc1fdf){if(_0x1df002['body']['id']){delete _0x1df002[_0xc841('0x46')]['id'];}return db[_0xc841('0x29')]['find']({'where':{'id':_0x1df002[_0xc841('0x42')]['id']}})[_0xc841('0x22')](handleEntityNotFound(_0xbc1fdf,null))[_0xc841('0x22')](saveUpdates(_0x1df002[_0xc841('0x46')],null))[_0xc841('0x22')](respondWithResult(_0xbc1fdf,null))['catch'](handleError(_0xbc1fdf,null));};exports[_0xc841('0x47')]=function(_0x523f60,_0x574a4a){return db[_0xc841('0x29')]['find']({'where':{'id':_0x523f60[_0xc841('0x42')]['id']}})[_0xc841('0x22')](handleEntityNotFound(_0x574a4a,null))[_0xc841('0x22')](removeEntity(_0x574a4a,null))[_0xc841('0x40')](handleError(_0x574a4a,null));};
\ No newline at end of file
+var _0x738a=['bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','limit','count','offset','set','reject','save','then','destroy','sendStatus','error','stack','name','send','index','FreshsalesField','fieldName','model','map','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','filter','where','type','VIRTUAL','options','includeAll','include','findAll','catch','show','params','rawAttributes','merge','find','create','update','body','eml-format','rimraf','zip-dir','request-promise','moment'];(function(_0x5684d7,_0x188b18){var _0x25570d=function(_0x1e0fd3){while(--_0x1e0fd3){_0x5684d7['push'](_0x5684d7['shift']());}};_0x25570d(++_0x188b18);}(_0x738a,0x172));var _0xa738=function(_0x21a1a6,_0x1474bf){_0x21a1a6=_0x21a1a6-0x0;var _0x5cec0e=_0x738a[_0x21a1a6];return _0x5cec0e;};'use strict';var emlformat=require(_0xa738('0x0'));var rimraf=require(_0xa738('0x1'));var zipdir=require(_0xa738('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa738('0x3'));var moment=require(_0xa738('0x4'));var BPromise=require(_0xa738('0x5'));var Mustache=require(_0xa738('0x6'));var util=require(_0xa738('0x7'));var path=require(_0xa738('0x8'));var sox=require(_0xa738('0x9'));var csv=require(_0xa738('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa738('0xb'));var squel=require(_0xa738('0xc'));var crypto=require(_0xa738('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xa738('0xa'));var querystring=require(_0xa738('0xe'));var Papa=require(_0xa738('0xf'));var Redis=require(_0xa738('0x10'));var authService=require(_0xa738('0x11'));var qs=require(_0xa738('0x12'));var as=require(_0xa738('0x13'));var hardwareService=require(_0xa738('0x14'));var logger=require(_0xa738('0x15'))(_0xa738('0x16'));var utils=require(_0xa738('0x17'));var config=require(_0xa738('0x18'));var licenseUtil=require(_0xa738('0x19'));var db=require(_0xa738('0x1a'))['db'];function respondWithStatusCode(_0x1358c5,_0x2d1ec2){_0x2d1ec2=_0x2d1ec2||0xcc;return function(_0x476356){if(_0x476356){return _0x1358c5['sendStatus'](_0x2d1ec2);}return _0x1358c5[_0xa738('0x1b')](_0x2d1ec2)[_0xa738('0x1c')]();};}function respondWithResult(_0x19e58f,_0x16ffd3){_0x16ffd3=_0x16ffd3||0xc8;return function(_0x45b9f6){if(_0x45b9f6){return _0x19e58f['status'](_0x16ffd3)[_0xa738('0x1d')](_0x45b9f6);}};}function respondWithFilteredResult(_0x3c4881,_0x39180e){return function(_0x5b4c5c){if(_0x5b4c5c){var _0x25b7b8=typeof _0x39180e['offset']==='undefined'&&typeof _0x39180e[_0xa738('0x1e')]==='undefined';var _0x47f16e=_0x5b4c5c[_0xa738('0x1f')];var _0xee3e62=_0x25b7b8?0x0:_0x39180e[_0xa738('0x20')];var _0x440770=_0x25b7b8?_0x5b4c5c['count']:_0x39180e[_0xa738('0x20')]+_0x39180e[_0xa738('0x1e')];var _0x408725;if(_0x440770>=_0x47f16e){_0x440770=_0x47f16e;_0x408725=0xc8;}else{_0x408725=0xce;}_0x3c4881[_0xa738('0x1b')](_0x408725);return _0x3c4881[_0xa738('0x21')]('Content-Range',_0xee3e62+'-'+_0x440770+'/'+_0x47f16e)['json'](_0x5b4c5c);}return null;};}function patchUpdates(_0x310699){return function(_0x1ec5a5){try{jsonpatch['apply'](_0x1ec5a5,_0x310699,!![]);}catch(_0x46d64b){return BPromise[_0xa738('0x22')](_0x46d64b);}return _0x1ec5a5[_0xa738('0x23')]();};}function saveUpdates(_0x4f1c58,_0x447457){return function(_0x559efd){if(_0x559efd){return _0x559efd['update'](_0x4f1c58)[_0xa738('0x24')](function(_0x405734){return _0x405734;});}return null;};}function removeEntity(_0x303a43,_0x29317c){return function(_0x2c4d4c){if(_0x2c4d4c){return _0x2c4d4c[_0xa738('0x25')]()[_0xa738('0x24')](function(){_0x303a43['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x379007,_0x3b12a9){return function(_0xd423ee){if(!_0xd423ee){_0x379007[_0xa738('0x26')](0x194);}return _0xd423ee;};}function handleError(_0x29c09c,_0x24fd24){_0x24fd24=_0x24fd24||0x1f4;return function(_0x39c27c){logger[_0xa738('0x27')](_0x39c27c[_0xa738('0x28')]);if(_0x39c27c[_0xa738('0x29')]){delete _0x39c27c[_0xa738('0x29')];}_0x29c09c[_0xa738('0x1b')](_0x24fd24)[_0xa738('0x2a')](_0x39c27c);};}exports[_0xa738('0x2b')]=function(_0x4dd062,_0x23406c){var _0x5b6ba3={},_0x32ab31={},_0x1def59={'count':0x0,'rows':[]};var _0x211264=_['map'](db[_0xa738('0x2c')]['rawAttributes'],function(_0x426bf2){return{'name':_0x426bf2[_0xa738('0x2d')],'type':_0x426bf2['type']['key']};});_0x32ab31[_0xa738('0x2e')]=_[_0xa738('0x2f')](_0x211264,_0xa738('0x29'));_0x32ab31['query']=_[_0xa738('0x30')](_0x4dd062[_0xa738('0x31')]);_0x32ab31[_0xa738('0x32')]=_[_0xa738('0x33')](_0x32ab31[_0xa738('0x2e')],_0x32ab31[_0xa738('0x31')]);_0x5b6ba3[_0xa738('0x34')]=_[_0xa738('0x33')](_0x32ab31[_0xa738('0x2e')],qs[_0xa738('0x35')](_0x4dd062['query'][_0xa738('0x35')]));_0x5b6ba3['attributes']=_0x5b6ba3['attributes'][_0xa738('0x36')]?_0x5b6ba3[_0xa738('0x34')]:_0x32ab31[_0xa738('0x2e')];if(!_0x4dd062[_0xa738('0x31')]['hasOwnProperty'](_0xa738('0x37'))){_0x5b6ba3[_0xa738('0x1e')]=qs[_0xa738('0x1e')](_0x4dd062[_0xa738('0x31')]['limit']);_0x5b6ba3[_0xa738('0x20')]=qs[_0xa738('0x20')](_0x4dd062['query'][_0xa738('0x20')]);}_0x5b6ba3[_0xa738('0x38')]=qs[_0xa738('0x39')](_0x4dd062[_0xa738('0x31')][_0xa738('0x39')]);_0x5b6ba3['where']=qs[_0xa738('0x32')](_['pick'](_0x4dd062['query'],_0x32ab31[_0xa738('0x32')]),_0x211264);if(_0x4dd062[_0xa738('0x31')][_0xa738('0x3a')]){_0x5b6ba3[_0xa738('0x3b')]=_['merge'](_0x5b6ba3[_0xa738('0x3b')],{'$or':_[_0xa738('0x2f')](_0x211264,function(_0x162cf4){if(_0x162cf4[_0xa738('0x3c')]!==_0xa738('0x3d')){var _0x4b6e8f={};_0x4b6e8f[_0x162cf4[_0xa738('0x29')]]={'$like':'%'+_0x4dd062[_0xa738('0x31')][_0xa738('0x3a')]+'%'};return _0x4b6e8f;}})});}_0x5b6ba3=_['merge']({},_0x5b6ba3,_0x4dd062[_0xa738('0x3e')]);var _0x1a8469={'where':_0x5b6ba3['where']};return db['FreshsalesField'][_0xa738('0x1f')](_0x1a8469)[_0xa738('0x24')](function(_0x42edf0){_0x1def59[_0xa738('0x1f')]=_0x42edf0;if(_0x4dd062['query'][_0xa738('0x3f')]){_0x5b6ba3[_0xa738('0x40')]=[{'all':!![]}];}return db['FreshsalesField'][_0xa738('0x41')](_0x5b6ba3);})['then'](function(_0x35b87b){_0x1def59['rows']=_0x35b87b;return _0x1def59;})[_0xa738('0x24')](respondWithFilteredResult(_0x23406c,_0x5b6ba3))[_0xa738('0x42')](handleError(_0x23406c,null));};exports[_0xa738('0x43')]=function(_0x2a2085,_0x27a081){var _0x104d75={'raw':!![],'where':{'id':_0x2a2085[_0xa738('0x44')]['id']}},_0x172e8f={};_0x172e8f[_0xa738('0x2e')]=_['keys'](db['FreshsalesField'][_0xa738('0x45')]);_0x172e8f[_0xa738('0x31')]=_[_0xa738('0x30')](_0x2a2085['query']);_0x172e8f[_0xa738('0x32')]=_[_0xa738('0x33')](_0x172e8f[_0xa738('0x2e')],_0x172e8f[_0xa738('0x31')]);_0x104d75[_0xa738('0x34')]=_['intersection'](_0x172e8f['model'],qs[_0xa738('0x35')](_0x2a2085[_0xa738('0x31')][_0xa738('0x35')]));_0x104d75['attributes']=_0x104d75['attributes'][_0xa738('0x36')]?_0x104d75['attributes']:_0x172e8f['model'];if(_0x2a2085['query'][_0xa738('0x3f')]){_0x104d75[_0xa738('0x40')]=[{'all':!![]}];}_0x104d75=_[_0xa738('0x46')]({},_0x104d75,_0x2a2085[_0xa738('0x3e')]);return db[_0xa738('0x2c')][_0xa738('0x47')](_0x104d75)[_0xa738('0x24')](handleEntityNotFound(_0x27a081,null))[_0xa738('0x24')](respondWithResult(_0x27a081,null))[_0xa738('0x42')](handleError(_0x27a081,null));};exports[_0xa738('0x48')]=function(_0xb11a44,_0x4a19c9){return db[_0xa738('0x2c')]['create'](_0xb11a44['body'],{})[_0xa738('0x24')](respondWithResult(_0x4a19c9,0xc9))[_0xa738('0x42')](handleError(_0x4a19c9,null));};exports[_0xa738('0x49')]=function(_0x590492,_0x5d3408){if(_0x590492[_0xa738('0x4a')]['id']){delete _0x590492[_0xa738('0x4a')]['id'];}return db[_0xa738('0x2c')][_0xa738('0x47')]({'where':{'id':_0x590492[_0xa738('0x44')]['id']}})['then'](handleEntityNotFound(_0x5d3408,null))[_0xa738('0x24')](saveUpdates(_0x590492['body'],null))[_0xa738('0x24')](respondWithResult(_0x5d3408,null))[_0xa738('0x42')](handleError(_0x5d3408,null));};exports[_0xa738('0x25')]=function(_0x3f3599,_0x52fefc){return db[_0xa738('0x2c')][_0xa738('0x47')]({'where':{'id':_0x3f3599[_0xa738('0x44')]['id']}})[_0xa738('0x24')](handleEntityNotFound(_0x52fefc,null))['then'](removeEntity(_0x52fefc,null))[_0xa738('0x42')](handleError(_0x52fefc,null));};
\ No newline at end of file
index 7df3bbe..c504ea5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6d7=['FieldId','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./intFreshsalesField.attributes','exports','define','FreshsalesField','int_freshsales_fields','freshsales_unique_index','idField'];(function(_0x48b810,_0x173a5e){var _0x23c17d=function(_0x38531e){while(--_0x38531e){_0x48b810['push'](_0x48b810['shift']());}};_0x23c17d(++_0x173a5e);}(_0xc6d7,0x71));var _0x7c6d=function(_0x21e1a0,_0x3df1f3){_0x21e1a0=_0x21e1a0-0x0;var _0x3f6bcd=_0xc6d7[_0x21e1a0];return _0x3f6bcd;};'use strict';var _=require(_0x7c6d('0x0'));var util=require(_0x7c6d('0x1'));var logger=require(_0x7c6d('0x2'))(_0x7c6d('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x7c6d('0x4'));var fs=require('fs');var path=require(_0x7c6d('0x5'));var rimraf=require(_0x7c6d('0x6'));var config=require(_0x7c6d('0x7'));var attributes=require(_0x7c6d('0x8'));module[_0x7c6d('0x9')]=function(_0x679fc1,_0x4120c1){return _0x679fc1[_0x7c6d('0xa')](_0x7c6d('0xb'),attributes,{'tableName':_0x7c6d('0xc'),'paranoid':![],'indexes':[{'name':_0x7c6d('0xd'),'fields':[_0x7c6d('0xe'),_0x7c6d('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa2cb=['request-promise','path','FreshsalesField','freshsales_unique_index','idField','lodash','util','api','moment','bluebird'];(function(_0x231b49,_0x328160){var _0x24dbbd=function(_0x1b636b){while(--_0x1b636b){_0x231b49['push'](_0x231b49['shift']());}};_0x24dbbd(++_0x328160);}(_0xa2cb,0x7d));var _0xba2c=function(_0x4f74a4,_0x38d51b){_0x4f74a4=_0x4f74a4-0x0;var _0x1b938f=_0xa2cb[_0x4f74a4];return _0x1b938f;};'use strict';var _=require(_0xba2c('0x0'));var util=require(_0xba2c('0x1'));var logger=require('../../config/logger')(_0xba2c('0x2'));var moment=require(_0xba2c('0x3'));var BPromise=require(_0xba2c('0x4'));var rp=require(_0xba2c('0x5'));var fs=require('fs');var path=require(_0xba2c('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./intFreshsalesField.attributes');module['exports']=function(_0x55034c,_0x21acc2){return _0x55034c['define'](_0xba2c('0x7'),attributes,{'tableName':'int_freshsales_fields','paranoid':![],'indexes':[{'name':_0xba2c('0x8'),'fields':[_0xba2c('0x9'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index db9ebc0..ee739f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4819=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','FreshsalesField,\x20%s,\x20%s','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','util','moment'];(function(_0x309931,_0x47085e){var _0x4c6ecb=function(_0x3ce378){while(--_0x3ce378){_0x309931['push'](_0x309931['shift']());}};_0x4c6ecb(++_0x47085e);}(_0x4819,0xcd));var _0x9481=function(_0x499001,_0x3f27ae){_0x499001=_0x499001-0x0;var _0x320c65=_0x4819[_0x499001];return _0x320c65;};'use strict';var _=require('lodash');var util=require(_0x9481('0x0'));var moment=require(_0x9481('0x1'));var BPromise=require(_0x9481('0x2'));var rs=require(_0x9481('0x3'));var fs=require('fs');var Redis=require(_0x9481('0x4'));var db=require(_0x9481('0x5'))['db'];var utils=require(_0x9481('0x6'));var logger=require(_0x9481('0x7'))(_0x9481('0x8'));var config=require(_0x9481('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x9481('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x54cc78,_0x14e05a,_0x6c6a08){return new BPromise(function(_0x27c033,_0x3278ff){return client[_0x9481('0xb')](_0x54cc78,_0x6c6a08)['then'](function(_0x1818cf){logger['info'](_0x9481('0xc'),_0x14e05a,'request\x20sent');logger[_0x9481('0xd')](_0x9481('0xe'),_0x14e05a,_0x9481('0xf'),JSON[_0x9481('0x10')](_0x1818cf));if(_0x1818cf[_0x9481('0x11')]){if(_0x1818cf[_0x9481('0x11')][_0x9481('0x12')]===0x1f4){logger[_0x9481('0x11')](_0x9481('0xc'),_0x14e05a,_0x1818cf['error']['message']);return _0x3278ff(_0x1818cf[_0x9481('0x11')][_0x9481('0x13')]);}logger[_0x9481('0x11')](_0x9481('0xc'),_0x14e05a,_0x1818cf[_0x9481('0x11')][_0x9481('0x13')]);return _0x27c033(_0x1818cf[_0x9481('0x11')]['message']);}else{logger[_0x9481('0x14')](_0x9481('0xc'),_0x14e05a,'request\x20sent');_0x27c033(_0x1818cf[_0x9481('0x15')]['message']);}})[_0x9481('0x16')](function(_0x7a2ac8){logger[_0x9481('0x11')](_0x9481('0xc'),_0x14e05a,_0x7a2ac8);_0x3278ff(_0x7a2ac8);});});}
\ No newline at end of file
+var _0x9536=['request\x20sent','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','FreshsalesField,\x20%s,\x20%s'];(function(_0x29f25c,_0x29f951){var _0x422bd3=function(_0x4e847f){while(--_0x4e847f){_0x29f25c['push'](_0x29f25c['shift']());}};_0x422bd3(++_0x29f951);}(_0x9536,0x179));var _0x6953=function(_0x19691f,_0x159737){_0x19691f=_0x19691f-0x0;var _0x5677b6=_0x9536[_0x19691f];return _0x5677b6;};'use strict';var _=require(_0x6953('0x0'));var util=require(_0x6953('0x1'));var moment=require(_0x6953('0x2'));var BPromise=require(_0x6953('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6953('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6953('0x5'));var logger=require(_0x6953('0x6'))(_0x6953('0x7'));var config=require(_0x6953('0x8'));var jayson=require(_0x6953('0x9'));var client=jayson['client'][_0x6953('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2bb026,_0x385f2d,_0x3e1aff){return new BPromise(function(_0x1c8225,_0x58ac30){return client[_0x6953('0xb')](_0x2bb026,_0x3e1aff)[_0x6953('0xc')](function(_0x449acb){logger['info'](_0x6953('0xd'),_0x385f2d,_0x6953('0xe'));logger[_0x6953('0xf')](_0x6953('0x10'),_0x385f2d,_0x6953('0xe'),JSON[_0x6953('0x11')](_0x449acb));if(_0x449acb[_0x6953('0x12')]){if(_0x449acb[_0x6953('0x12')][_0x6953('0x13')]===0x1f4){logger['error'](_0x6953('0xd'),_0x385f2d,_0x449acb['error'][_0x6953('0x14')]);return _0x58ac30(_0x449acb[_0x6953('0x12')][_0x6953('0x14')]);}logger[_0x6953('0x12')](_0x6953('0xd'),_0x385f2d,_0x449acb[_0x6953('0x12')][_0x6953('0x14')]);return _0x1c8225(_0x449acb[_0x6953('0x12')][_0x6953('0x14')]);}else{logger[_0x6953('0x15')](_0x6953('0xd'),_0x385f2d,'request\x20sent');_0x1c8225(_0x449acb['result'][_0x6953('0x14')]);}})[_0x6953('0x16')](function(_0x16b79b){logger[_0x6953('0x12')]('FreshsalesField,\x20%s,\x20%s',_0x385f2d,_0x16b79b);_0x58ac30(_0x16b79b);});});}
\ No newline at end of file
index cd404be..1ae1dd6 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(_0x4acc74,_0x3fb33e){var _0xe6161d=function(_0x2657e7){while(--_0x2657e7){_0x4acc74['push'](_0x4acc74['shift']());}};_0xe6161d(++_0x3fb33e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0xa9e0[_0x484e36];return _0xafc85d;};'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(_0x23533e,_0x2fb328){var _0x5a9db1=function(_0x116276){while(--_0x116276){_0x23533e['push'](_0x23533e['shift']());}};_0x5a9db1(++_0x2fb328);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'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 58845e5..ce09586 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb296=['newTab','sequelize','exports','STRING','username','integrationTab'];(function(_0xed89f9,_0x548963){var _0x503894=function(_0x36f495){while(--_0x36f495){_0xed89f9['push'](_0xed89f9['shift']());}};_0x503894(++_0x548963);}(_0xb296,0xa3));var _0x6b29=function(_0x27e8eb,_0x34312b){_0x27e8eb=_0x27e8eb-0x0;var _0x4510e7=_0xb296[_0x27e8eb];return _0x4510e7;};'use strict';var Sequelize=require(_0x6b29('0x0'));module[_0x6b29('0x1')]={'name':{'type':Sequelize[_0x6b29('0x2')]},'description':{'type':Sequelize[_0x6b29('0x2')]},'username':{'type':Sequelize[_0x6b29('0x2')],'unique':_0x6b29('0x3')},'remoteUri':{'type':Sequelize[_0x6b29('0x2')]},'password':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0x6b29('0x2')]},'clientSecret':{'type':Sequelize['STRING']},'securityToken':{'type':Sequelize[_0x6b29('0x2')]},'serverUrl':{'type':Sequelize[_0x6b29('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x6b29('0x4'),_0x6b29('0x5')),'defaultValue':_0x6b29('0x4')}};
\ No newline at end of file
+var _0x62cf=['ENUM','integrationTab','newTab','sequelize','STRING','username'];(function(_0xc0bbe3,_0x23573e){var _0x2289eb=function(_0x24519d){while(--_0x24519d){_0xc0bbe3['push'](_0xc0bbe3['shift']());}};_0x2289eb(++_0x23573e);}(_0x62cf,0x81));var _0xf62c=function(_0x380d4f,_0x4025c4){_0x380d4f=_0x380d4f-0x0;var _0x4c3562=_0x62cf[_0x380d4f];return _0x4c3562;};'use strict';var Sequelize=require(_0xf62c('0x0'));module['exports']={'name':{'type':Sequelize[_0xf62c('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xf62c('0x1')],'unique':_0xf62c('0x2')},'remoteUri':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0xf62c('0x1')]},'clientSecret':{'type':Sequelize[_0xf62c('0x1')]},'securityToken':{'type':Sequelize[_0xf62c('0x1')]},'serverUrl':{'type':Sequelize[_0xf62c('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xf62c('0x3')](_0xf62c('0x4'),_0xf62c('0x5')),'defaultValue':_0xf62c('0x4')}};
\ No newline at end of file
index f93a641..45a39bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61ba=['papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','status','end','json','offset','undefined','count','set','Content-Range','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','SalesforceAccount','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','limit','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','findAll','show','params','include','options','find','catch','create','body','getConfigurations','SalesforceConfiguration','hasOwnProperty','findOne','AccountId','Subjects','getSubjects','channel','getDescriptions','SalesforceField','Descriptions','getFields','Task','remoteUri','clientSecret','username','password','securityToken','slice','substring','lastIndexOf','Connection','clientId','login','concat','isNil','ticketType','sobject','describe','OwnerId','ActivityDate','IsReminderSet','IsRecurrence','Subject','Description','string','int','picklist','email','includes','label','custom','picklistValues','value','boolean','True','true','False','false','test','statusCode','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce'];(function(_0x23b550,_0x21515e){var _0x11cb24=function(_0xafeadb){while(--_0xafeadb){_0x23b550['push'](_0x23b550['shift']());}};_0x11cb24(++_0x21515e);}(_0x61ba,0x164));var _0xa61b=function(_0x3e8d3c,_0x2e4078){_0x3e8d3c=_0x3e8d3c-0x0;var _0x5e64c6=_0x61ba[_0x3e8d3c];return _0x5e64c6;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xa61b('0x0'));var rp=require(_0xa61b('0x1'));var moment=require(_0xa61b('0x2'));var BPromise=require(_0xa61b('0x3'));var Mustache=require(_0xa61b('0x4'));var util=require(_0xa61b('0x5'));var path=require(_0xa61b('0x6'));var sox=require(_0xa61b('0x7'));var csv=require(_0xa61b('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa61b('0x9'));var _=require(_0xa61b('0xa'));var squel=require(_0xa61b('0xb'));var crypto=require('crypto');var jsforce=require(_0xa61b('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa61b('0x8'));var querystring=require('querystring');var Papa=require(_0xa61b('0xd'));var Redis=require(_0xa61b('0xe'));var authService=require(_0xa61b('0xf'));var qs=require(_0xa61b('0x10'));var as=require(_0xa61b('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa61b('0x12'))(_0xa61b('0x13'));var utils=require('../../config/utils');var config=require(_0xa61b('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x5e154c,_0x5b0438){_0x5b0438=_0x5b0438||0xcc;return function(_0x591119){if(_0x591119){return _0x5e154c['sendStatus'](_0x5b0438);}return _0x5e154c[_0xa61b('0x15')](_0x5b0438)[_0xa61b('0x16')]();};}function respondWithResult(_0x3556c1,_0x75096d){_0x75096d=_0x75096d||0xc8;return function(_0x48714a){if(_0x48714a){return _0x3556c1[_0xa61b('0x15')](_0x75096d)[_0xa61b('0x17')](_0x48714a);}};}function respondWithFilteredResult(_0x15af64,_0x1309d5){return function(_0x365e1b){if(_0x365e1b){var _0x1906a6=typeof _0x1309d5[_0xa61b('0x18')]===_0xa61b('0x19')&&typeof _0x1309d5['limit']===_0xa61b('0x19');var _0x641a5e=_0x365e1b[_0xa61b('0x1a')];var _0x51e4a3=_0x1906a6?0x0:_0x1309d5[_0xa61b('0x18')];var _0x20d1bd=_0x1906a6?_0x365e1b['count']:_0x1309d5[_0xa61b('0x18')]+_0x1309d5['limit'];var _0x2107a7;if(_0x20d1bd>=_0x641a5e){_0x20d1bd=_0x641a5e;_0x2107a7=0xc8;}else{_0x2107a7=0xce;}_0x15af64['status'](_0x2107a7);return _0x15af64[_0xa61b('0x1b')](_0xa61b('0x1c'),_0x51e4a3+'-'+_0x20d1bd+'/'+_0x641a5e)[_0xa61b('0x17')](_0x365e1b);}return null;};}function patchUpdates(_0x3ecbc5){return function(_0x12151a){try{jsonpatch['apply'](_0x12151a,_0x3ecbc5,!![]);}catch(_0x1231b4){return BPromise[_0xa61b('0x1d')](_0x1231b4);}return _0x12151a[_0xa61b('0x1e')]();};}function saveUpdates(_0x25ecb4,_0x18bd9a){return function(_0x26f3c4){if(_0x26f3c4){return _0x26f3c4[_0xa61b('0x1f')](_0x25ecb4)[_0xa61b('0x20')](function(_0x38583d){return _0x38583d;});}return null;};}function removeEntity(_0x2d7320,_0x3e874a){return function(_0x2ec660){if(_0x2ec660){return _0x2ec660[_0xa61b('0x21')]()['then'](function(){_0x2d7320['status'](0xcc)[_0xa61b('0x16')]();});}};}function handleEntityNotFound(_0x118eaa,_0x11dfbc){return function(_0x223b69){if(!_0x223b69){_0x118eaa[_0xa61b('0x22')](0x194);}return _0x223b69;};}function handleError(_0xf15d5d,_0x12417f){_0x12417f=_0x12417f||0x1f4;return function(_0x2cd9c8){logger[_0xa61b('0x23')](_0x2cd9c8[_0xa61b('0x24')]);if(_0x2cd9c8[_0xa61b('0x25')]){delete _0x2cd9c8[_0xa61b('0x25')];}_0xf15d5d[_0xa61b('0x15')](_0x12417f)[_0xa61b('0x26')](_0x2cd9c8);};}exports[_0xa61b('0x27')]=function(_0x3b5d05,_0x51798c){var _0xf3c5b0={},_0x403125={},_0x551bb0={'count':0x0,'rows':[]};var _0xdf224c=_[_0xa61b('0x28')](db[_0xa61b('0x29')][_0xa61b('0x2a')],function(_0x258251){return{'name':_0x258251['fieldName'],'type':_0x258251[_0xa61b('0x2b')][_0xa61b('0x2c')]};});_0x403125['model']=_[_0xa61b('0x28')](_0xdf224c,'name');_0x403125[_0xa61b('0x2d')]=_[_0xa61b('0x2e')](_0x3b5d05[_0xa61b('0x2d')]);_0x403125[_0xa61b('0x2f')]=_[_0xa61b('0x30')](_0x403125[_0xa61b('0x31')],_0x403125[_0xa61b('0x2d')]);_0xf3c5b0[_0xa61b('0x32')]=_[_0xa61b('0x30')](_0x403125['model'],qs['fields'](_0x3b5d05[_0xa61b('0x2d')][_0xa61b('0x33')]));_0xf3c5b0['attributes']=_0xf3c5b0[_0xa61b('0x32')][_0xa61b('0x34')]?_0xf3c5b0[_0xa61b('0x32')]:_0x403125[_0xa61b('0x31')];if(!_0x3b5d05[_0xa61b('0x2d')]['hasOwnProperty'](_0xa61b('0x35'))){_0xf3c5b0[_0xa61b('0x36')]=qs[_0xa61b('0x36')](_0x3b5d05['query'][_0xa61b('0x36')]);_0xf3c5b0['offset']=qs[_0xa61b('0x18')](_0x3b5d05['query'][_0xa61b('0x18')]);}_0xf3c5b0[_0xa61b('0x37')]=qs[_0xa61b('0x38')](_0x3b5d05['query'][_0xa61b('0x38')]);_0xf3c5b0[_0xa61b('0x39')]=qs['filters'](_[_0xa61b('0x3a')](_0x3b5d05[_0xa61b('0x2d')],_0x403125['filters']),_0xdf224c);if(_0x3b5d05[_0xa61b('0x2d')]['filter']){_0xf3c5b0[_0xa61b('0x39')]=_[_0xa61b('0x3b')](_0xf3c5b0[_0xa61b('0x39')],{'$or':_['map'](_0xdf224c,function(_0x445858){if(_0x445858[_0xa61b('0x2b')]!==_0xa61b('0x3c')){var _0x5372d6={};_0x5372d6[_0x445858[_0xa61b('0x25')]]={'$like':'%'+_0x3b5d05['query'][_0xa61b('0x3d')]+'%'};return _0x5372d6;}})});}_0xf3c5b0=_[_0xa61b('0x3b')]({},_0xf3c5b0,_0x3b5d05['options']);var _0x2110a9={'where':_0xf3c5b0[_0xa61b('0x39')]};return db[_0xa61b('0x29')]['count'](_0x2110a9)['then'](function(_0x85b770){_0x551bb0[_0xa61b('0x1a')]=_0x85b770;if(_0x3b5d05[_0xa61b('0x2d')][_0xa61b('0x3e')]){_0xf3c5b0['include']=[{'all':!![]}];}return db[_0xa61b('0x29')][_0xa61b('0x3f')](_0xf3c5b0);})[_0xa61b('0x20')](function(_0x229a7c){_0x551bb0['rows']=_0x229a7c;return _0x551bb0;})['then'](respondWithFilteredResult(_0x51798c,_0xf3c5b0))['catch'](handleError(_0x51798c,null));};exports[_0xa61b('0x40')]=function(_0x18a17a,_0x6c435f){var _0x38a898={'raw':![],'where':{'id':_0x18a17a[_0xa61b('0x41')]['id']}},_0x252b9e={};_0x252b9e['model']=_[_0xa61b('0x2e')](db[_0xa61b('0x29')]['rawAttributes']);_0x252b9e[_0xa61b('0x2d')]=_[_0xa61b('0x2e')](_0x18a17a[_0xa61b('0x2d')]);_0x252b9e[_0xa61b('0x2f')]=_[_0xa61b('0x30')](_0x252b9e[_0xa61b('0x31')],_0x252b9e[_0xa61b('0x2d')]);_0x38a898[_0xa61b('0x32')]=_['intersection'](_0x252b9e[_0xa61b('0x31')],qs[_0xa61b('0x33')](_0x18a17a[_0xa61b('0x2d')][_0xa61b('0x33')]));_0x38a898['attributes']=_0x38a898[_0xa61b('0x32')][_0xa61b('0x34')]?_0x38a898[_0xa61b('0x32')]:_0x252b9e[_0xa61b('0x31')];if(_0x18a17a['query']['includeAll']){_0x38a898[_0xa61b('0x42')]=[{'all':!![]}];}_0x38a898=_[_0xa61b('0x3b')]({},_0x38a898,_0x18a17a[_0xa61b('0x43')]);return db['SalesforceAccount'][_0xa61b('0x44')](_0x38a898)[_0xa61b('0x20')](handleEntityNotFound(_0x6c435f,null))[_0xa61b('0x20')](respondWithResult(_0x6c435f,null))[_0xa61b('0x45')](handleError(_0x6c435f,null));};exports[_0xa61b('0x46')]=function(_0x456fea,_0x578905){return db[_0xa61b('0x29')][_0xa61b('0x46')](_0x456fea[_0xa61b('0x47')],{})['then'](respondWithResult(_0x578905,0xc9))[_0xa61b('0x45')](handleError(_0x578905,null));};exports['update']=function(_0x2e5514,_0x17cc78){if(_0x2e5514[_0xa61b('0x47')]['id']){delete _0x2e5514['body']['id'];}return db[_0xa61b('0x29')][_0xa61b('0x44')]({'where':{'id':_0x2e5514['params']['id']}})[_0xa61b('0x20')](handleEntityNotFound(_0x17cc78,null))['then'](saveUpdates(_0x2e5514[_0xa61b('0x47')],null))['then'](respondWithResult(_0x17cc78,null))[_0xa61b('0x45')](handleError(_0x17cc78,null));};exports[_0xa61b('0x21')]=function(_0x2fe912,_0x96a7ca){return db[_0xa61b('0x29')][_0xa61b('0x44')]({'where':{'id':_0x2fe912[_0xa61b('0x41')]['id']}})[_0xa61b('0x20')](handleEntityNotFound(_0x96a7ca,null))[_0xa61b('0x20')](removeEntity(_0x96a7ca,null))['catch'](handleError(_0x96a7ca,null));};exports[_0xa61b('0x48')]=function(_0x2dcc62,_0x2d5806,_0x471c87){var _0x3a7d96={};var _0x2f912c={};var _0x20625d;var _0x524b7c;return db[_0xa61b('0x29')]['findOne']({'where':{'id':_0x2dcc62[_0xa61b('0x41')]['id']}})[_0xa61b('0x20')](handleEntityNotFound(_0x2d5806,null))['then'](function(_0x5caf15){if(_0x5caf15){_0x20625d=_0x5caf15;_0x2f912c[_0xa61b('0x31')]=_[_0xa61b('0x2e')](db[_0xa61b('0x49')]['rawAttributes']);_0x2f912c[_0xa61b('0x2d')]=_['keys'](_0x2dcc62[_0xa61b('0x2d')]);_0x2f912c[_0xa61b('0x2f')]=_[_0xa61b('0x30')](_0x2f912c[_0xa61b('0x31')],_0x2f912c[_0xa61b('0x2d')]);_0x3a7d96[_0xa61b('0x32')]=_[_0xa61b('0x30')](_0x2f912c[_0xa61b('0x31')],qs[_0xa61b('0x33')](_0x2dcc62[_0xa61b('0x2d')][_0xa61b('0x33')]));_0x3a7d96['attributes']=_0x3a7d96[_0xa61b('0x32')][_0xa61b('0x34')]?_0x3a7d96['attributes']:_0x2f912c[_0xa61b('0x31')];_0x3a7d96[_0xa61b('0x37')]=qs['sort'](_0x2dcc62[_0xa61b('0x2d')]['sort']);_0x3a7d96[_0xa61b('0x39')]=qs['filters'](_[_0xa61b('0x3a')](_0x2dcc62['query'],_0x2f912c[_0xa61b('0x2f')]));if(_0x2dcc62['query'][_0xa61b('0x3d')]){_0x3a7d96['where']=_[_0xa61b('0x3b')](_0x3a7d96[_0xa61b('0x39')],{'$or':_['map'](_0x3a7d96[_0xa61b('0x32')],function(_0x5926b3){var _0x395c90={};_0x395c90[_0x5926b3]={'$like':'%'+_0x2dcc62[_0xa61b('0x2d')][_0xa61b('0x3d')]+'%'};return _0x395c90;})});}_0x3a7d96=_[_0xa61b('0x3b')]({},_0x3a7d96,_0x2dcc62['options']);return _0x20625d[_0xa61b('0x48')](_0x3a7d96);}})[_0xa61b('0x20')](function(_0x474304){if(_0x474304){_0x524b7c=_0x474304[_0xa61b('0x34')];if(!_0x2dcc62['query'][_0xa61b('0x4a')](_0xa61b('0x35'))){_0x3a7d96[_0xa61b('0x36')]=qs[_0xa61b('0x36')](_0x2dcc62[_0xa61b('0x2d')][_0xa61b('0x36')]);_0x3a7d96[_0xa61b('0x18')]=qs[_0xa61b('0x18')](_0x2dcc62[_0xa61b('0x2d')][_0xa61b('0x18')]);}return _0x20625d['getConfigurations'](_0x3a7d96);}})['then'](function(_0x38e2d7){if(_0x38e2d7){return _0x38e2d7?{'count':_0x524b7c,'rows':_0x38e2d7}:null;}})[_0xa61b('0x20')](respondWithResult(_0x2d5806,null))[_0xa61b('0x45')](handleError(_0x2d5806,null));};exports['addConfiguration']=function(_0x224f58,_0x501cde,_0x1cb9f9){if(_0x224f58[_0xa61b('0x47')]['id']){delete _0x224f58[_0xa61b('0x47')]['id'];}return db[_0xa61b('0x29')][_0xa61b('0x4b')]({'where':{'id':_0x224f58[_0xa61b('0x41')]['id']}})[_0xa61b('0x20')](handleEntityNotFound(_0x501cde,null))[_0xa61b('0x20')](function(_0xdbad22){if(_0xdbad22){_0x224f58[_0xa61b('0x47')][_0xa61b('0x4c')]=_0xdbad22['id'];_0x224f58[_0xa61b('0x47')][_0xa61b('0x4d')]=integrations[_0xa61b('0x4e')](_0x224f58[_0xa61b('0x47')][_0xa61b('0x4f')],_0x224f58['body'][_0xa61b('0x2b')]);_0x224f58[_0xa61b('0x47')]['Descriptions']=integrations[_0xa61b('0x50')](_0x224f58['body'][_0xa61b('0x4f')],_0x224f58[_0xa61b('0x47')][_0xa61b('0x2b')]);return db['SalesforceConfiguration']['create'](_0x224f58['body'],{'include':[{'model':db[_0xa61b('0x51')],'as':_0xa61b('0x4d')},{'model':db[_0xa61b('0x51')],'as':_0xa61b('0x52')}]});}return null;})[_0xa61b('0x20')](respondWithResult(_0x501cde,null))[_0xa61b('0x45')](handleError(_0x501cde,null));};exports[_0xa61b('0x53')]=function(_0xac3c9b,_0x3aa8ff,_0x34e5de){var _0x3817e4;var _0x2cc63c='';var _0x4615ca=_0xa61b('0x54');return db[_0xa61b('0x29')][_0xa61b('0x4b')]({'where':{'id':_0xac3c9b[_0xa61b('0x41')]['id']},'attributes':['id',_0xa61b('0x55'),'clientId',_0xa61b('0x56'),_0xa61b('0x57'),_0xa61b('0x58'),_0xa61b('0x59')]})[_0xa61b('0x20')](handleEntityNotFound(_0x3aa8ff,null))[_0xa61b('0x20')](function(_0x4d76c9){if(_0x4d76c9){_0x2cc63c=_0x4d76c9[_0xa61b('0x55')];var _0x420280=_0x2cc63c[_0xa61b('0x5a')](-0x1);if(_0x420280==='/'){_0x2cc63c=_0x2cc63c[_0xa61b('0x5b')](0x0,_0x2cc63c[_0xa61b('0x5c')](_0x420280));}_0x3817e4=new jsforce[(_0xa61b('0x5d'))]({'oauth2':{'loginUrl':_0x2cc63c,'clientId':_0x4d76c9[_0xa61b('0x5e')],'clientSecret':_0x4d76c9['clientSecret']}});return _0x3817e4[_0xa61b('0x5f')](_0x4d76c9[_0xa61b('0x57')],_0x4d76c9[_0xa61b('0x58')][_0xa61b('0x60')](_0x4d76c9['securityToken']));}})['then'](function(_0x4d2ed1){if(_0x4d2ed1){if(!_[_0xa61b('0x61')](_0xac3c9b[_0xa61b('0x2d')][_0xa61b('0x62')])){_0x4615ca=_0xac3c9b['query'][_0xa61b('0x62')];}return _0x3817e4[_0xa61b('0x63')](_0x4615ca)[_0xa61b('0x64')]();}})[_0xa61b('0x20')](function(_0x40e2db){var _0x507a81=[_0xa61b('0x65'),_0xa61b('0x66'),_0xa61b('0x67'),_0xa61b('0x68'),_0xa61b('0x69'),_0xa61b('0x6a')];var _0x4b1e51=[_0xa61b('0x6b'),_0xa61b('0x6c'),_0xa61b('0x6d'),'boolean',_0xa61b('0x6e'),'textarea','phone'];if(_0x40e2db){_['remove'](_0x40e2db['fields'],function(_0x180049){return _0x507a81['includes'](_0x180049[_0xa61b('0x25')])||!_0x4b1e51[_0xa61b('0x6f')](_0x180049[_0xa61b('0x2b')]);});return{'count':_0x40e2db[_0xa61b('0x33')][_0xa61b('0x34')],'rows':_[_0xa61b('0x28')](_0x40e2db['fields'],function(_0x53229c){return{'id':_0x53229c[_0xa61b('0x25')],'name':_0x53229c[_0xa61b('0x70')],'custom':_0x53229c[_0xa61b('0x71')],'options':_0x53229c[_0xa61b('0x72')][_0xa61b('0x34')]>0x0?_[_0xa61b('0x28')](_0x53229c[_0xa61b('0x72')],function(_0x51a131){return{'name':_0x51a131[_0xa61b('0x70')],'value':_0x51a131[_0xa61b('0x73')]};}):_0x53229c[_0xa61b('0x2b')]==_0xa61b('0x74')?[{'name':_0xa61b('0x75'),'value':_0xa61b('0x76')},{'name':_0xa61b('0x77'),'value':_0xa61b('0x78')}]:[]};})};}})['then'](respondWithResult(_0x3aa8ff,null))['catch'](function(_0x5a312e){var _0x1cd0b6=_0xac3c9b['query'][_0xa61b('0x79')]?0x1f4:_0x5a312e[_0xa61b('0x7a')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0xa61b('0x53'),_0x1cd0b6,JSON['stringify'](_0x5a312e));delete _0x5a312e['name'];if(_0x1cd0b6===0x191){_0x1cd0b6=0x190;}_0x3aa8ff['status'](_0x1cd0b6)[_0xa61b('0x26')](_0xac3c9b[_0xa61b('0x2d')]['test']?{'message':'Wrong\x20credentials','statusCode':_0x5a312e[_0xa61b('0x7a')]}:_0x5a312e);});};
\ No newline at end of file
+var _0x9ce4=['offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','sendStatus','error','name','index','map','SalesforceAccount','rawAttributes','fieldName','key','model','keys','query','attributes','intersection','fields','length','hasOwnProperty','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','rows','catch','show','params','find','create','body','findOne','SalesforceConfiguration','getConfigurations','nolimit','addConfiguration','Subjects','getSubjects','type','channel','SalesforceField','Descriptions','getFields','remoteUri','clientSecret','username','password','securityToken','slice','substring','lastIndexOf','Connection','clientId','login','concat','isNil','ticketType','sobject','ActivityDate','IsReminderSet','IsRecurrence','Subject','Description','boolean','textarea','phone','remove','includes','label','picklistValues','value','True','False','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','send','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','to-csv','fs-extra','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','status','json'];(function(_0x546d5a,_0x538f87){var _0x10e405=function(_0x5cb86c){while(--_0x5cb86c){_0x546d5a['push'](_0x546d5a['shift']());}};_0x10e405(++_0x538f87);}(_0x9ce4,0x140));var _0x49ce=function(_0x8806a6,_0x686e06){_0x8806a6=_0x8806a6-0x0;var _0x49cdd3=_0x9ce4[_0x8806a6];return _0x49cdd3;};'use strict';var emlformat=require(_0x49ce('0x0'));var rimraf=require(_0x49ce('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x49ce('0x2'));var rp=require(_0x49ce('0x3'));var moment=require('moment');var BPromise=require(_0x49ce('0x4'));var Mustache=require(_0x49ce('0x5'));var util=require('util');var path=require(_0x49ce('0x6'));var sox=require('sox');var csv=require(_0x49ce('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x49ce('0x8'));var _=require('lodash');var squel=require(_0x49ce('0x9'));var crypto=require(_0x49ce('0xa'));var jsforce=require(_0x49ce('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x49ce('0xc'));var Papa=require(_0x49ce('0xd'));var Redis=require('ioredis');var authService=require(_0x49ce('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x49ce('0xf'));var hardwareService=require(_0x49ce('0x10'));var logger=require('../../config/logger')(_0x49ce('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x49ce('0x12'));var db=require(_0x49ce('0x13'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x2486e6,_0x6c39c){_0x6c39c=_0x6c39c||0xcc;return function(_0x2985cc){if(_0x2985cc){return _0x2486e6['sendStatus'](_0x6c39c);}return _0x2486e6[_0x49ce('0x14')](_0x6c39c)['end']();};}function respondWithResult(_0xc3861b,_0x71388d){_0x71388d=_0x71388d||0xc8;return function(_0x385daa){if(_0x385daa){return _0xc3861b['status'](_0x71388d)[_0x49ce('0x15')](_0x385daa);}};}function respondWithFilteredResult(_0x273144,_0x566f3a){return function(_0x5301ac){if(_0x5301ac){var _0x36ebce=typeof _0x566f3a[_0x49ce('0x16')]===_0x49ce('0x17')&&typeof _0x566f3a[_0x49ce('0x18')]===_0x49ce('0x17');var _0x5c0ba3=_0x5301ac[_0x49ce('0x19')];var _0x5b44a4=_0x36ebce?0x0:_0x566f3a['offset'];var _0x2f4053=_0x36ebce?_0x5301ac['count']:_0x566f3a[_0x49ce('0x16')]+_0x566f3a[_0x49ce('0x18')];var _0x2f3755;if(_0x2f4053>=_0x5c0ba3){_0x2f4053=_0x5c0ba3;_0x2f3755=0xc8;}else{_0x2f3755=0xce;}_0x273144['status'](_0x2f3755);return _0x273144[_0x49ce('0x1a')](_0x49ce('0x1b'),_0x5b44a4+'-'+_0x2f4053+'/'+_0x5c0ba3)['json'](_0x5301ac);}return null;};}function patchUpdates(_0x1994f8){return function(_0x370923){try{jsonpatch['apply'](_0x370923,_0x1994f8,!![]);}catch(_0x173e04){return BPromise[_0x49ce('0x1c')](_0x173e04);}return _0x370923[_0x49ce('0x1d')]();};}function saveUpdates(_0x454f79,_0xb8a7f1){return function(_0x46160c){if(_0x46160c){return _0x46160c[_0x49ce('0x1e')](_0x454f79)[_0x49ce('0x1f')](function(_0x4d7932){return _0x4d7932;});}return null;};}function removeEntity(_0x5153a3,_0x5b260d){return function(_0x2f7c49){if(_0x2f7c49){return _0x2f7c49[_0x49ce('0x20')]()[_0x49ce('0x1f')](function(){_0x5153a3['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xa75e2a,_0xcf4505){return function(_0x5a8aab){if(!_0x5a8aab){_0xa75e2a[_0x49ce('0x21')](0x194);}return _0x5a8aab;};}function handleError(_0x3c9bc0,_0x1983d2){_0x1983d2=_0x1983d2||0x1f4;return function(_0x51c59b){logger[_0x49ce('0x22')](_0x51c59b['stack']);if(_0x51c59b[_0x49ce('0x23')]){delete _0x51c59b[_0x49ce('0x23')];}_0x3c9bc0['status'](_0x1983d2)['send'](_0x51c59b);};}exports[_0x49ce('0x24')]=function(_0x1d17b5,_0x25bb92){var _0x4b15ff={},_0x3af22e={},_0x100e57={'count':0x0,'rows':[]};var _0x5e463d=_[_0x49ce('0x25')](db[_0x49ce('0x26')][_0x49ce('0x27')],function(_0x34f8a5){return{'name':_0x34f8a5[_0x49ce('0x28')],'type':_0x34f8a5['type'][_0x49ce('0x29')]};});_0x3af22e[_0x49ce('0x2a')]=_[_0x49ce('0x25')](_0x5e463d,_0x49ce('0x23'));_0x3af22e['query']=_[_0x49ce('0x2b')](_0x1d17b5[_0x49ce('0x2c')]);_0x3af22e['filters']=_['intersection'](_0x3af22e[_0x49ce('0x2a')],_0x3af22e[_0x49ce('0x2c')]);_0x4b15ff[_0x49ce('0x2d')]=_[_0x49ce('0x2e')](_0x3af22e[_0x49ce('0x2a')],qs[_0x49ce('0x2f')](_0x1d17b5[_0x49ce('0x2c')]['fields']));_0x4b15ff[_0x49ce('0x2d')]=_0x4b15ff[_0x49ce('0x2d')][_0x49ce('0x30')]?_0x4b15ff[_0x49ce('0x2d')]:_0x3af22e[_0x49ce('0x2a')];if(!_0x1d17b5[_0x49ce('0x2c')][_0x49ce('0x31')]('nolimit')){_0x4b15ff[_0x49ce('0x18')]=qs['limit'](_0x1d17b5[_0x49ce('0x2c')][_0x49ce('0x18')]);_0x4b15ff[_0x49ce('0x16')]=qs[_0x49ce('0x16')](_0x1d17b5[_0x49ce('0x2c')][_0x49ce('0x16')]);}_0x4b15ff['order']=qs['sort'](_0x1d17b5[_0x49ce('0x2c')][_0x49ce('0x32')]);_0x4b15ff[_0x49ce('0x33')]=qs[_0x49ce('0x34')](_[_0x49ce('0x35')](_0x1d17b5['query'],_0x3af22e[_0x49ce('0x34')]),_0x5e463d);if(_0x1d17b5[_0x49ce('0x2c')][_0x49ce('0x36')]){_0x4b15ff[_0x49ce('0x33')]=_[_0x49ce('0x37')](_0x4b15ff[_0x49ce('0x33')],{'$or':_[_0x49ce('0x25')](_0x5e463d,function(_0x3cd551){if(_0x3cd551['type']!==_0x49ce('0x38')){var _0x51d53c={};_0x51d53c[_0x3cd551['name']]={'$like':'%'+_0x1d17b5[_0x49ce('0x2c')][_0x49ce('0x36')]+'%'};return _0x51d53c;}})});}_0x4b15ff=_[_0x49ce('0x37')]({},_0x4b15ff,_0x1d17b5[_0x49ce('0x39')]);var _0x204211={'where':_0x4b15ff[_0x49ce('0x33')]};return db[_0x49ce('0x26')][_0x49ce('0x19')](_0x204211)[_0x49ce('0x1f')](function(_0x5bf15b){_0x100e57[_0x49ce('0x19')]=_0x5bf15b;if(_0x1d17b5[_0x49ce('0x2c')][_0x49ce('0x3a')]){_0x4b15ff['include']=[{'all':!![]}];}return db[_0x49ce('0x26')]['findAll'](_0x4b15ff);})[_0x49ce('0x1f')](function(_0x5366eb){_0x100e57[_0x49ce('0x3b')]=_0x5366eb;return _0x100e57;})[_0x49ce('0x1f')](respondWithFilteredResult(_0x25bb92,_0x4b15ff))[_0x49ce('0x3c')](handleError(_0x25bb92,null));};exports[_0x49ce('0x3d')]=function(_0x2471ab,_0x27bb06){var _0x3ddffe={'raw':![],'where':{'id':_0x2471ab[_0x49ce('0x3e')]['id']}},_0x108fe4={};_0x108fe4[_0x49ce('0x2a')]=_['keys'](db['SalesforceAccount'][_0x49ce('0x27')]);_0x108fe4[_0x49ce('0x2c')]=_[_0x49ce('0x2b')](_0x2471ab[_0x49ce('0x2c')]);_0x108fe4[_0x49ce('0x34')]=_[_0x49ce('0x2e')](_0x108fe4[_0x49ce('0x2a')],_0x108fe4[_0x49ce('0x2c')]);_0x3ddffe[_0x49ce('0x2d')]=_['intersection'](_0x108fe4['model'],qs[_0x49ce('0x2f')](_0x2471ab[_0x49ce('0x2c')][_0x49ce('0x2f')]));_0x3ddffe[_0x49ce('0x2d')]=_0x3ddffe['attributes'][_0x49ce('0x30')]?_0x3ddffe[_0x49ce('0x2d')]:_0x108fe4['model'];if(_0x2471ab[_0x49ce('0x2c')][_0x49ce('0x3a')]){_0x3ddffe['include']=[{'all':!![]}];}_0x3ddffe=_['merge']({},_0x3ddffe,_0x2471ab['options']);return db['SalesforceAccount'][_0x49ce('0x3f')](_0x3ddffe)[_0x49ce('0x1f')](handleEntityNotFound(_0x27bb06,null))[_0x49ce('0x1f')](respondWithResult(_0x27bb06,null))[_0x49ce('0x3c')](handleError(_0x27bb06,null));};exports[_0x49ce('0x40')]=function(_0x572346,_0xe9c53c){return db[_0x49ce('0x26')][_0x49ce('0x40')](_0x572346[_0x49ce('0x41')],{})[_0x49ce('0x1f')](respondWithResult(_0xe9c53c,0xc9))[_0x49ce('0x3c')](handleError(_0xe9c53c,null));};exports[_0x49ce('0x1e')]=function(_0x29bd2d,_0x1992ef){if(_0x29bd2d[_0x49ce('0x41')]['id']){delete _0x29bd2d[_0x49ce('0x41')]['id'];}return db[_0x49ce('0x26')][_0x49ce('0x3f')]({'where':{'id':_0x29bd2d[_0x49ce('0x3e')]['id']}})['then'](handleEntityNotFound(_0x1992ef,null))[_0x49ce('0x1f')](saveUpdates(_0x29bd2d['body'],null))[_0x49ce('0x1f')](respondWithResult(_0x1992ef,null))['catch'](handleError(_0x1992ef,null));};exports['destroy']=function(_0x39abcf,_0x46fd72){return db['SalesforceAccount'][_0x49ce('0x3f')]({'where':{'id':_0x39abcf['params']['id']}})[_0x49ce('0x1f')](handleEntityNotFound(_0x46fd72,null))[_0x49ce('0x1f')](removeEntity(_0x46fd72,null))[_0x49ce('0x3c')](handleError(_0x46fd72,null));};exports['getConfigurations']=function(_0x3c452c,_0x52f95d,_0x30d38f){var _0x2cc5cb={};var _0xb70a1={};var _0x493917;var _0xd5385c;return db['SalesforceAccount'][_0x49ce('0x42')]({'where':{'id':_0x3c452c['params']['id']}})[_0x49ce('0x1f')](handleEntityNotFound(_0x52f95d,null))[_0x49ce('0x1f')](function(_0x4d4b8b){if(_0x4d4b8b){_0x493917=_0x4d4b8b;_0xb70a1['model']=_[_0x49ce('0x2b')](db[_0x49ce('0x43')][_0x49ce('0x27')]);_0xb70a1[_0x49ce('0x2c')]=_[_0x49ce('0x2b')](_0x3c452c[_0x49ce('0x2c')]);_0xb70a1[_0x49ce('0x34')]=_['intersection'](_0xb70a1[_0x49ce('0x2a')],_0xb70a1['query']);_0x2cc5cb[_0x49ce('0x2d')]=_[_0x49ce('0x2e')](_0xb70a1[_0x49ce('0x2a')],qs['fields'](_0x3c452c[_0x49ce('0x2c')]['fields']));_0x2cc5cb[_0x49ce('0x2d')]=_0x2cc5cb[_0x49ce('0x2d')][_0x49ce('0x30')]?_0x2cc5cb[_0x49ce('0x2d')]:_0xb70a1[_0x49ce('0x2a')];_0x2cc5cb['order']=qs[_0x49ce('0x32')](_0x3c452c['query'][_0x49ce('0x32')]);_0x2cc5cb[_0x49ce('0x33')]=qs[_0x49ce('0x34')](_[_0x49ce('0x35')](_0x3c452c[_0x49ce('0x2c')],_0xb70a1[_0x49ce('0x34')]));if(_0x3c452c[_0x49ce('0x2c')][_0x49ce('0x36')]){_0x2cc5cb[_0x49ce('0x33')]=_[_0x49ce('0x37')](_0x2cc5cb[_0x49ce('0x33')],{'$or':_[_0x49ce('0x25')](_0x2cc5cb[_0x49ce('0x2d')],function(_0x1a999d){var _0x5d3f59={};_0x5d3f59[_0x1a999d]={'$like':'%'+_0x3c452c[_0x49ce('0x2c')][_0x49ce('0x36')]+'%'};return _0x5d3f59;})});}_0x2cc5cb=_[_0x49ce('0x37')]({},_0x2cc5cb,_0x3c452c[_0x49ce('0x39')]);return _0x493917[_0x49ce('0x44')](_0x2cc5cb);}})[_0x49ce('0x1f')](function(_0x18a304){if(_0x18a304){_0xd5385c=_0x18a304['length'];if(!_0x3c452c['query'][_0x49ce('0x31')](_0x49ce('0x45'))){_0x2cc5cb[_0x49ce('0x18')]=qs[_0x49ce('0x18')](_0x3c452c[_0x49ce('0x2c')][_0x49ce('0x18')]);_0x2cc5cb['offset']=qs[_0x49ce('0x16')](_0x3c452c[_0x49ce('0x2c')][_0x49ce('0x16')]);}return _0x493917[_0x49ce('0x44')](_0x2cc5cb);}})['then'](function(_0x19dc4e){if(_0x19dc4e){return _0x19dc4e?{'count':_0xd5385c,'rows':_0x19dc4e}:null;}})['then'](respondWithResult(_0x52f95d,null))['catch'](handleError(_0x52f95d,null));};exports[_0x49ce('0x46')]=function(_0xdc7af9,_0x2ee931,_0xa907a4){if(_0xdc7af9[_0x49ce('0x41')]['id']){delete _0xdc7af9[_0x49ce('0x41')]['id'];}return db['SalesforceAccount'][_0x49ce('0x42')]({'where':{'id':_0xdc7af9[_0x49ce('0x3e')]['id']}})[_0x49ce('0x1f')](handleEntityNotFound(_0x2ee931,null))[_0x49ce('0x1f')](function(_0x284a19){if(_0x284a19){_0xdc7af9[_0x49ce('0x41')]['AccountId']=_0x284a19['id'];_0xdc7af9['body'][_0x49ce('0x47')]=integrations[_0x49ce('0x48')](_0xdc7af9[_0x49ce('0x41')]['channel'],_0xdc7af9[_0x49ce('0x41')][_0x49ce('0x49')]);_0xdc7af9[_0x49ce('0x41')]['Descriptions']=integrations['getDescriptions'](_0xdc7af9['body'][_0x49ce('0x4a')],_0xdc7af9[_0x49ce('0x41')]['type']);return db[_0x49ce('0x43')]['create'](_0xdc7af9[_0x49ce('0x41')],{'include':[{'model':db[_0x49ce('0x4b')],'as':'Subjects'},{'model':db[_0x49ce('0x4b')],'as':_0x49ce('0x4c')}]});}return null;})['then'](respondWithResult(_0x2ee931,null))[_0x49ce('0x3c')](handleError(_0x2ee931,null));};exports[_0x49ce('0x4d')]=function(_0x59811c,_0x181f89,_0x46979f){var _0x5a5b53;var _0x493623='';var _0x49ac14='Task';return db['SalesforceAccount'][_0x49ce('0x42')]({'where':{'id':_0x59811c[_0x49ce('0x3e')]['id']},'attributes':['id',_0x49ce('0x4e'),'clientId',_0x49ce('0x4f'),_0x49ce('0x50'),_0x49ce('0x51'),_0x49ce('0x52')]})[_0x49ce('0x1f')](handleEntityNotFound(_0x181f89,null))[_0x49ce('0x1f')](function(_0xd2c1b8){if(_0xd2c1b8){_0x493623=_0xd2c1b8['remoteUri'];var _0x13a9e1=_0x493623[_0x49ce('0x53')](-0x1);if(_0x13a9e1==='/'){_0x493623=_0x493623[_0x49ce('0x54')](0x0,_0x493623[_0x49ce('0x55')](_0x13a9e1));}_0x5a5b53=new jsforce[(_0x49ce('0x56'))]({'oauth2':{'loginUrl':_0x493623,'clientId':_0xd2c1b8[_0x49ce('0x57')],'clientSecret':_0xd2c1b8[_0x49ce('0x4f')]}});return _0x5a5b53[_0x49ce('0x58')](_0xd2c1b8[_0x49ce('0x50')],_0xd2c1b8[_0x49ce('0x51')][_0x49ce('0x59')](_0xd2c1b8[_0x49ce('0x52')]));}})[_0x49ce('0x1f')](function(_0x1e4e67){if(_0x1e4e67){if(!_[_0x49ce('0x5a')](_0x59811c['query']['ticketType'])){_0x49ac14=_0x59811c[_0x49ce('0x2c')][_0x49ce('0x5b')];}return _0x5a5b53[_0x49ce('0x5c')](_0x49ac14)['describe']();}})[_0x49ce('0x1f')](function(_0x681cf7){var _0x3a507c=['OwnerId',_0x49ce('0x5d'),_0x49ce('0x5e'),_0x49ce('0x5f'),_0x49ce('0x60'),_0x49ce('0x61')];var _0x49c3e3=['string','int','picklist',_0x49ce('0x62'),'email',_0x49ce('0x63'),_0x49ce('0x64')];if(_0x681cf7){_[_0x49ce('0x65')](_0x681cf7[_0x49ce('0x2f')],function(_0x2fef5d){return _0x3a507c[_0x49ce('0x66')](_0x2fef5d[_0x49ce('0x23')])||!_0x49c3e3['includes'](_0x2fef5d[_0x49ce('0x49')]);});return{'count':_0x681cf7[_0x49ce('0x2f')]['length'],'rows':_[_0x49ce('0x25')](_0x681cf7[_0x49ce('0x2f')],function(_0x5dd5f4){return{'id':_0x5dd5f4[_0x49ce('0x23')],'name':_0x5dd5f4[_0x49ce('0x67')],'custom':_0x5dd5f4['custom'],'options':_0x5dd5f4['picklistValues'][_0x49ce('0x30')]>0x0?_[_0x49ce('0x25')](_0x5dd5f4[_0x49ce('0x68')],function(_0x46fdad){return{'name':_0x46fdad[_0x49ce('0x67')],'value':_0x46fdad[_0x49ce('0x69')]};}):_0x5dd5f4['type']==_0x49ce('0x62')?[{'name':_0x49ce('0x6a'),'value':'true'},{'name':_0x49ce('0x6b'),'value':'false'}]:[]};})};}})[_0x49ce('0x1f')](respondWithResult(_0x181f89,null))['catch'](function(_0x5158f0){var _0x42e5e5=_0x59811c['query'][_0x49ce('0x6c')]?0x1f4:_0x5158f0[_0x49ce('0x6d')]||0x1f4;logger[_0x49ce('0x22')](_0x49ce('0x6e'),_0x49ce('0x4d'),_0x42e5e5,JSON[_0x49ce('0x6f')](_0x5158f0));delete _0x5158f0[_0x49ce('0x23')];if(_0x42e5e5===0x191){_0x42e5e5=0x190;}_0x181f89['status'](_0x42e5e5)[_0x49ce('0x70')](_0x59811c['query'][_0x49ce('0x6c')]?{'message':_0x49ce('0x71'),'statusCode':_0x5158f0['statusCode']}:_0x5158f0);});};
\ No newline at end of file
index 719c822..be82e8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcd6=['exports','define','SalesforceAccount','int_salesforce_accounts','lodash','../../config/logger','api','request-promise','path','rimraf','./intSalesforceAccount.attributes','../../components/integrations/configuration'];(function(_0x47a854,_0x5871dd){var _0x51a0af=function(_0x3c0d6d){while(--_0x3c0d6d){_0x47a854['push'](_0x47a854['shift']());}};_0x51a0af(++_0x5871dd);}(_0xfcd6,0x1d8));var _0x6fcd=function(_0xf13ca6,_0x5735ea){_0xf13ca6=_0xf13ca6-0x0;var _0x4a4387=_0xfcd6[_0xf13ca6];return _0x4a4387;};'use strict';var _=require(_0x6fcd('0x0'));var util=require('util');var logger=require(_0x6fcd('0x1'))(_0x6fcd('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6fcd('0x3'));var fs=require('fs');var path=require(_0x6fcd('0x4'));var rimraf=require(_0x6fcd('0x5'));var config=require('../../config/environment');var attributes=require(_0x6fcd('0x6'));var integrations=require(_0x6fcd('0x7'));module[_0x6fcd('0x8')]=function(_0x3be5f3,_0x53dd81){return _0x3be5f3[_0x6fcd('0x9')](_0x6fcd('0xa'),attributes,{'tableName':_0x6fcd('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x80fb=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration','define','SalesforceAccount','int_salesforce_accounts'];(function(_0x282fc8,_0x50b4b5){var _0xf69939=function(_0x537cfc){while(--_0x537cfc){_0x282fc8['push'](_0x282fc8['shift']());}};_0xf69939(++_0x50b4b5);}(_0x80fb,0x11e));var _0xb80f=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0x80fb[_0xf71120];return _0xbe2fd3;};'use strict';var _=require('lodash');var util=require(_0xb80f('0x0'));var logger=require(_0xb80f('0x1'))('api');var moment=require(_0xb80f('0x2'));var BPromise=require(_0xb80f('0x3'));var rp=require(_0xb80f('0x4'));var fs=require('fs');var path=require(_0xb80f('0x5'));var rimraf=require(_0xb80f('0x6'));var config=require(_0xb80f('0x7'));var attributes=require(_0xb80f('0x8'));var integrations=require(_0xb80f('0x9'));module['exports']=function(_0x1676a9,_0x251de5){return _0x1676a9[_0xb80f('0xa')](_0xb80f('0xb'),attributes,{'tableName':_0xb80f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 36e7dc6..08de0eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7ae=['bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','SalesforceAccount','findAll','options','where','attributes','limit','map','include','model','GetSalesforceAccount','ShowSalesforceAccount','raw','moment'];(function(_0x412e27,_0x20a978){var _0x53da42=function(_0x43cae5){while(--_0x43cae5){_0x412e27['push'](_0x412e27['shift']());}};_0x53da42(++_0x20a978);}(_0xe7ae,0x192));var _0xee7a=function(_0x56dbe5,_0x57fa97){_0x56dbe5=_0x56dbe5-0x0;var _0x47009d=_0xe7ae[_0x56dbe5];return _0x47009d;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xee7a('0x0'));var BPromise=require(_0xee7a('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xee7a('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xee7a('0x3'));var logger=require(_0xee7a('0x4'))(_0xee7a('0x5'));var config=require(_0xee7a('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xee7a('0x7')][_0xee7a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1c8bf7,_0x201690,_0x31673b){return new BPromise(function(_0x306564,_0x41a2eb){return client[_0xee7a('0x9')](_0x1c8bf7,_0x31673b)[_0xee7a('0xa')](function(_0x57ba62){logger[_0xee7a('0xb')](_0xee7a('0xc'),_0x201690,_0xee7a('0xd'));logger['debug']('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0x201690,_0xee7a('0xd'),JSON[_0xee7a('0xe')](_0x57ba62));if(_0x57ba62['error']){if(_0x57ba62[_0xee7a('0xf')][_0xee7a('0x10')]===0x1f4){logger[_0xee7a('0xf')](_0xee7a('0xc'),_0x201690,_0x57ba62[_0xee7a('0xf')][_0xee7a('0x11')]);return _0x41a2eb(_0x57ba62[_0xee7a('0xf')][_0xee7a('0x11')]);}logger[_0xee7a('0xf')]('SalesforceAccount,\x20%s,\x20%s',_0x201690,_0x57ba62[_0xee7a('0xf')][_0xee7a('0x11')]);return _0x306564(_0x57ba62[_0xee7a('0xf')][_0xee7a('0x11')]);}else{logger[_0xee7a('0xb')](_0xee7a('0xc'),_0x201690,_0xee7a('0xd'));_0x306564(_0x57ba62[_0xee7a('0x12')][_0xee7a('0x11')]);}})['catch'](function(_0x50b1ed){logger[_0xee7a('0xf')](_0xee7a('0xc'),_0x201690,_0x50b1ed);_0x41a2eb(_0x50b1ed);});});}exports['GetSalesforceAccount']=function(_0x3736b5){var _0x56d2f=this;return new Promise(function(_0x49b32e,_0x2f6f12){return db[_0xee7a('0x13')][_0xee7a('0x14')]({'raw':_0x3736b5[_0xee7a('0x15')]?_0x3736b5[_0xee7a('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x3736b5[_0xee7a('0x15')]?_0x3736b5[_0xee7a('0x15')][_0xee7a('0x16')]||null:null,'attributes':_0x3736b5[_0xee7a('0x15')]?_0x3736b5[_0xee7a('0x15')][_0xee7a('0x17')]||null:null,'limit':_0x3736b5['options']?_0x3736b5[_0xee7a('0x15')][_0xee7a('0x18')]||null:null,'include':_0x3736b5[_0xee7a('0x15')]?_0x3736b5['options']['include']?_[_0xee7a('0x19')](_0x3736b5[_0xee7a('0x15')][_0xee7a('0x1a')],function(_0xa06401){return{'model':db[_0xa06401[_0xee7a('0x1b')]],'as':_0xa06401['as'],'attributes':_0xa06401[_0xee7a('0x17')],'include':_0xa06401[_0xee7a('0x1a')]?_[_0xee7a('0x19')](_0xa06401[_0xee7a('0x1a')],function(_0x3b53e0){return{'model':db[_0x3b53e0[_0xee7a('0x1b')]],'as':_0x3b53e0['as'],'attributes':_0x3b53e0['attributes'],'include':_0x3b53e0[_0xee7a('0x1a')]?_[_0xee7a('0x19')](_0x3b53e0[_0xee7a('0x1a')],function(_0x5765d6){return{'model':db[_0x5765d6[_0xee7a('0x1b')]],'as':_0x5765d6['as'],'attributes':_0x5765d6[_0xee7a('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x8103ff){logger['info'](_0xee7a('0x1c'),_0x3736b5);logger['debug']('GetSalesforceAccount',_0x3736b5,JSON[_0xee7a('0xe')](_0x8103ff));_0x49b32e(_0x8103ff);})['catch'](function(_0x4dfc26){logger['error']('GetSalesforceAccount',_0x4dfc26[_0xee7a('0x11')],_0x3736b5);_0x2f6f12(_0x56d2f[_0xee7a('0xf')](0x1f4,_0x4dfc26[_0xee7a('0x11')]));});});};exports[_0xee7a('0x1d')]=function(_0xe6c79f){var _0x3474fa=this;return new Promise(function(_0x4e93ca,_0x476f2a){return db[_0xee7a('0x13')]['find']({'raw':_0xe6c79f[_0xee7a('0x15')]?_0xe6c79f['options'][_0xee7a('0x1e')]===undefined?!![]:![]:!![],'where':_0xe6c79f[_0xee7a('0x15')]?_0xe6c79f[_0xee7a('0x15')][_0xee7a('0x16')]||null:null,'attributes':_0xe6c79f[_0xee7a('0x15')]?_0xe6c79f[_0xee7a('0x15')][_0xee7a('0x17')]||null:null,'include':_0xe6c79f['options']?_0xe6c79f[_0xee7a('0x15')]['include']?_[_0xee7a('0x19')](_0xe6c79f[_0xee7a('0x15')][_0xee7a('0x1a')],function(_0x57e291){return{'model':db[_0x57e291[_0xee7a('0x1b')]],'as':_0x57e291['as'],'attributes':_0x57e291['attributes'],'include':_0x57e291[_0xee7a('0x1a')]?_[_0xee7a('0x19')](_0x57e291[_0xee7a('0x1a')],function(_0x52cb5e){return{'model':db[_0x52cb5e[_0xee7a('0x1b')]],'as':_0x52cb5e['as'],'attributes':_0x52cb5e['attributes'],'include':_0x52cb5e[_0xee7a('0x1a')]?_[_0xee7a('0x19')](_0x52cb5e['include'],function(_0x22c00e){return{'model':db[_0x22c00e[_0xee7a('0x1b')]],'as':_0x22c00e['as'],'attributes':_0x22c00e[_0xee7a('0x17')]};}):[]};}):[]};}):[]:[]})[_0xee7a('0xa')](function(_0x305d26){logger[_0xee7a('0xb')]('ShowSalesforceAccount',_0xe6c79f);logger['debug'](_0xee7a('0x1d'),_0xe6c79f,JSON[_0xee7a('0xe')](_0x305d26));_0x4e93ca(_0x305d26);})['catch'](function(_0x326fd9){logger[_0xee7a('0xf')](_0xee7a('0x1d'),_0x326fd9[_0xee7a('0x11')],_0xe6c79f);_0x476f2a(_0x3474fa[_0xee7a('0xf')](0x1f4,_0x326fd9[_0xee7a('0x11')]));});});};
\ No newline at end of file
+var _0x6c72=['../../config/environment','client','then','SalesforceAccount,\x20%s,\x20%s','SalesforceAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','GetSalesforceAccount','SalesforceAccount','findAll','options','where','attributes','include','map','model','debug','ShowSalesforceAccount','find','raw','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x22b8a3,_0x2a79a7){var _0x199a0c=function(_0x544c66){while(--_0x544c66){_0x22b8a3['push'](_0x22b8a3['shift']());}};_0x199a0c(++_0x2a79a7);}(_0x6c72,0xf9));var _0x26c7=function(_0x537bb5,_0x151c8b){_0x537bb5=_0x537bb5-0x0;var _0x505c21=_0x6c72[_0x537bb5];return _0x505c21;};'use strict';var _=require('lodash');var util=require(_0x26c7('0x0'));var moment=require(_0x26c7('0x1'));var BPromise=require(_0x26c7('0x2'));var rs=require(_0x26c7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x26c7('0x4'))['db'];var utils=require(_0x26c7('0x5'));var logger=require(_0x26c7('0x6'))('rpc');var config=require(_0x26c7('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x26c7('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x33db03,_0x26ac2f,_0x51fd47){return new BPromise(function(_0x1567f1,_0x54b46e){return client['request'](_0x33db03,_0x51fd47)[_0x26c7('0x9')](function(_0x1f3dc6){logger['info'](_0x26c7('0xa'),_0x26ac2f,'request\x20sent');logger['debug'](_0x26c7('0xb'),_0x26ac2f,_0x26c7('0xc'),JSON['stringify'](_0x1f3dc6));if(_0x1f3dc6[_0x26c7('0xd')]){if(_0x1f3dc6[_0x26c7('0xd')][_0x26c7('0xe')]===0x1f4){logger[_0x26c7('0xd')]('SalesforceAccount,\x20%s,\x20%s',_0x26ac2f,_0x1f3dc6[_0x26c7('0xd')][_0x26c7('0xf')]);return _0x54b46e(_0x1f3dc6[_0x26c7('0xd')][_0x26c7('0xf')]);}logger[_0x26c7('0xd')](_0x26c7('0xa'),_0x26ac2f,_0x1f3dc6[_0x26c7('0xd')]['message']);return _0x1567f1(_0x1f3dc6[_0x26c7('0xd')][_0x26c7('0xf')]);}else{logger[_0x26c7('0x10')](_0x26c7('0xa'),_0x26ac2f,_0x26c7('0xc'));_0x1567f1(_0x1f3dc6[_0x26c7('0x11')][_0x26c7('0xf')]);}})['catch'](function(_0xfc085){logger[_0x26c7('0xd')](_0x26c7('0xa'),_0x26ac2f,_0xfc085);_0x54b46e(_0xfc085);});});}exports[_0x26c7('0x12')]=function(_0x413f1e){var _0x5c45da=this;return new Promise(function(_0xaa0d4,_0x2b0c13){return db[_0x26c7('0x13')][_0x26c7('0x14')]({'raw':_0x413f1e['options']?_0x413f1e[_0x26c7('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x413f1e[_0x26c7('0x15')]?_0x413f1e[_0x26c7('0x15')][_0x26c7('0x16')]||null:null,'attributes':_0x413f1e['options']?_0x413f1e['options'][_0x26c7('0x17')]||null:null,'limit':_0x413f1e[_0x26c7('0x15')]?_0x413f1e[_0x26c7('0x15')]['limit']||null:null,'include':_0x413f1e[_0x26c7('0x15')]?_0x413f1e[_0x26c7('0x15')][_0x26c7('0x18')]?_[_0x26c7('0x19')](_0x413f1e[_0x26c7('0x15')][_0x26c7('0x18')],function(_0x103cba){return{'model':db[_0x103cba[_0x26c7('0x1a')]],'as':_0x103cba['as'],'attributes':_0x103cba['attributes'],'include':_0x103cba[_0x26c7('0x18')]?_[_0x26c7('0x19')](_0x103cba[_0x26c7('0x18')],function(_0x24be7a){return{'model':db[_0x24be7a[_0x26c7('0x1a')]],'as':_0x24be7a['as'],'attributes':_0x24be7a[_0x26c7('0x17')],'include':_0x24be7a[_0x26c7('0x18')]?_[_0x26c7('0x19')](_0x24be7a[_0x26c7('0x18')],function(_0x23e82d){return{'model':db[_0x23e82d['model']],'as':_0x23e82d['as'],'attributes':_0x23e82d['attributes']};}):[]};}):[]};}):[]:[]})[_0x26c7('0x9')](function(_0x1f6f11){logger['info'](_0x26c7('0x12'),_0x413f1e);logger[_0x26c7('0x1b')]('GetSalesforceAccount',_0x413f1e,JSON['stringify'](_0x1f6f11));_0xaa0d4(_0x1f6f11);})['catch'](function(_0x1a4ddb){logger['error']('GetSalesforceAccount',_0x1a4ddb[_0x26c7('0xf')],_0x413f1e);_0x2b0c13(_0x5c45da[_0x26c7('0xd')](0x1f4,_0x1a4ddb['message']));});});};exports[_0x26c7('0x1c')]=function(_0x549b25){var _0x2ace37=this;return new Promise(function(_0x2c5240,_0x1922fe){return db[_0x26c7('0x13')][_0x26c7('0x1d')]({'raw':_0x549b25[_0x26c7('0x15')]?_0x549b25[_0x26c7('0x15')][_0x26c7('0x1e')]===undefined?!![]:![]:!![],'where':_0x549b25[_0x26c7('0x15')]?_0x549b25[_0x26c7('0x15')][_0x26c7('0x16')]||null:null,'attributes':_0x549b25[_0x26c7('0x15')]?_0x549b25['options'][_0x26c7('0x17')]||null:null,'include':_0x549b25[_0x26c7('0x15')]?_0x549b25[_0x26c7('0x15')][_0x26c7('0x18')]?_['map'](_0x549b25[_0x26c7('0x15')][_0x26c7('0x18')],function(_0x664d06){return{'model':db[_0x664d06[_0x26c7('0x1a')]],'as':_0x664d06['as'],'attributes':_0x664d06[_0x26c7('0x17')],'include':_0x664d06['include']?_['map'](_0x664d06[_0x26c7('0x18')],function(_0x35a008){return{'model':db[_0x35a008[_0x26c7('0x1a')]],'as':_0x35a008['as'],'attributes':_0x35a008[_0x26c7('0x17')],'include':_0x35a008['include']?_[_0x26c7('0x19')](_0x35a008[_0x26c7('0x18')],function(_0x50344e){return{'model':db[_0x50344e[_0x26c7('0x1a')]],'as':_0x50344e['as'],'attributes':_0x50344e[_0x26c7('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4dca45){logger[_0x26c7('0x10')](_0x26c7('0x1c'),_0x549b25);logger['debug'](_0x26c7('0x1c'),_0x549b25,JSON['stringify'](_0x4dca45));_0x2c5240(_0x4dca45);})[_0x26c7('0x1f')](function(_0x558c6c){logger['error']('ShowSalesforceAccount',_0x558c6c[_0x26c7('0xf')],_0x549b25);_0x1922fe(_0x2ace37['error'](0x1f4,_0x558c6c[_0x26c7('0xf')]));});});};
\ No newline at end of file
index a6af3d2..81c15c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/fields','/:id/subjects','getSubjects','put','update','delete','destroy','exports','util','connect-timeout'];(function(_0x28855b,_0x596385){var _0x29988e=function(_0x4a597c){while(--_0x4a597c){_0x28855b['push'](_0x28855b['shift']());}};_0x29988e(++_0x596385);}(_0x5f66,0x1a0));var _0x65f6=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x5f66[_0x3e5086];return _0xfeb102;};'use strict';var multer=require('multer');var util=require(_0x65f6('0x0'));var path=require('path');var timeout=require(_0x65f6('0x1'));var express=require(_0x65f6('0x2'));var router=express[_0x65f6('0x3')]();var fs_extra=require(_0x65f6('0x4'));var auth=require(_0x65f6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x65f6('0x6'));var controller=require('./intSalesforceConfiguration.controller');router[_0x65f6('0x7')]('/',auth[_0x65f6('0x8')](),controller['index']);router['get'](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xa')]);router[_0x65f6('0x7')](_0x65f6('0xb'),auth[_0x65f6('0x8')](),controller['getFields']);router['get'](_0x65f6('0xc'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xd')]);router[_0x65f6('0x7')]('/:id/descriptions',auth[_0x65f6('0x8')](),controller['getDescriptions']);router['post']('/',auth[_0x65f6('0x8')](),controller['create']);router[_0x65f6('0xe')]('/:id',auth[_0x65f6('0x8')](),controller[_0x65f6('0xf')]);router[_0x65f6('0x10')](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0x11')]);module[_0x65f6('0x12')]=router;
\ No newline at end of file
+var _0xdb28=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','post','create','put','delete','destroy','exports','multer','util'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0xdb28,0x106));var _0x8db2=function(_0x4cd695,_0x24a204){_0x4cd695=_0x4cd695-0x0;var _0x3d4946=_0xdb28[_0x4cd695];return _0x3d4946;};'use strict';var multer=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var path=require(_0x8db2('0x2'));var timeout=require(_0x8db2('0x3'));var express=require('express');var router=express[_0x8db2('0x4')]();var fs_extra=require(_0x8db2('0x5'));var auth=require(_0x8db2('0x6'));var interaction=require(_0x8db2('0x7'));var config=require(_0x8db2('0x8'));var controller=require('./intSalesforceConfiguration.controller');router[_0x8db2('0x9')]('/',auth[_0x8db2('0xa')](),controller['index']);router['get'](_0x8db2('0xb'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xc')]);router[_0x8db2('0x9')](_0x8db2('0xd'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xe')]);router['get'](_0x8db2('0xf'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x10')]);router['get'](_0x8db2('0x11'),auth[_0x8db2('0xa')](),controller['getDescriptions']);router[_0x8db2('0x12')]('/',auth[_0x8db2('0xa')](),controller[_0x8db2('0x13')]);router[_0x8db2('0x14')](_0x8db2('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x8db2('0x15')](_0x8db2('0xb'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x16')]);module[_0x8db2('0x17')]=router;
\ No newline at end of file
index d3d7e76..9b36d83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe67d=['nothing','contact','sequelize','exports','STRING','ENUM','Case','Task','contact_lead','lead','account'];(function(_0xd3a8c8,_0x177703){var _0x4d9295=function(_0x39bfda){while(--_0x39bfda){_0xd3a8c8['push'](_0xd3a8c8['shift']());}};_0x4d9295(++_0x177703);}(_0xe67d,0x1af));var _0xde67=function(_0xe8fa1f,_0x12bba1){_0xe8fa1f=_0xe8fa1f-0x0;var _0x4b3a65=_0xe67d[_0xe8fa1f];return _0x4b3a65;};'use strict';var Sequelize=require(_0xde67('0x0'));module[_0xde67('0x1')]={'name':{'type':Sequelize[_0xde67('0x2')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0xde67('0x3')]('Task',_0xde67('0x4')),'defaultValue':_0xde67('0x5')},'moduleSearch':{'type':Sequelize[_0xde67('0x3')](_0xde67('0x6'),'contact',_0xde67('0x7'),'account_contact_lead',_0xde67('0x8')),'defaultValue':'contact_lead'},'moduleCreate':{'type':Sequelize[_0xde67('0x3')](_0xde67('0x9'),_0xde67('0xa'),'lead',_0xde67('0x8')),'defaultValue':_0xde67('0x7')},'leadId':{'type':Sequelize[_0xde67('0x2')]},'additionalSearchAccount':{'type':Sequelize['STRING']},'additionalSearchContact':{'type':Sequelize[_0xde67('0x2')]},'additionalSearchLead':{'type':Sequelize[_0xde67('0x2')]}};
\ No newline at end of file
+var _0xfdc9=['Task','Case','ENUM','contact_lead','contact','lead','account','nothing','STRING'];(function(_0xb63a4f,_0x6d00fa){var _0x27ce23=function(_0x411460){while(--_0x411460){_0xb63a4f['push'](_0xb63a4f['shift']());}};_0x27ce23(++_0x6d00fa);}(_0xfdc9,0xe9));var _0x9fdc=function(_0x31eddb,_0x2c3ee5){_0x31eddb=_0x31eddb-0x0;var _0x123e0d=_0xfdc9[_0x31eddb];return _0x123e0d;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x9fdc('0x0')]},'description':{'type':Sequelize[_0x9fdc('0x0')]},'ticketType':{'type':Sequelize['ENUM'](_0x9fdc('0x1'),_0x9fdc('0x2')),'defaultValue':_0x9fdc('0x1')},'moduleSearch':{'type':Sequelize[_0x9fdc('0x3')](_0x9fdc('0x4'),_0x9fdc('0x5'),_0x9fdc('0x6'),'account_contact_lead',_0x9fdc('0x7')),'defaultValue':'contact_lead'},'moduleCreate':{'type':Sequelize[_0x9fdc('0x3')](_0x9fdc('0x8'),'contact',_0x9fdc('0x6'),_0x9fdc('0x7')),'defaultValue':_0x9fdc('0x6')},'leadId':{'type':Sequelize[_0x9fdc('0x0')]},'additionalSearchAccount':{'type':Sequelize[_0x9fdc('0x0')]},'additionalSearchContact':{'type':Sequelize[_0x9fdc('0x0')]},'additionalSearchLead':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 9c771b3..c6932fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x873a=['../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../mysqldb','status','end','json','undefined','count','offset','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','SalesforceConfiguration','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where','filters','filter','merge','options','includeAll','include','findAll','catch','show','params','length','find','create','body','getFields','findOne','SalesforceField','pick','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','request-promise','mustache','util','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x2fbe2c,_0x295c2c){var _0xa60617=function(_0x21e2ff){while(--_0x21e2ff){_0x2fbe2c['push'](_0x2fbe2c['shift']());}};_0xa60617(++_0x295c2c);}(_0x873a,0x1c2));var _0xa873=function(_0x11ba84,_0x36e3de){_0x11ba84=_0x11ba84-0x0;var _0x438c95=_0x873a[_0x11ba84];return _0x438c95;};'use strict';var emlformat=require(_0xa873('0x0'));var rimraf=require(_0xa873('0x1'));var zipdir=require(_0xa873('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa873('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xa873('0x4'));var util=require(_0xa873('0x5'));var path=require('path');var sox=require(_0xa873('0x6'));var csv=require(_0xa873('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa873('0x8'));var _=require('lodash');var squel=require(_0xa873('0x9'));var crypto=require(_0xa873('0xa'));var jsforce=require(_0xa873('0xb'));var deskjs=require(_0xa873('0xc'));var toCsv=require(_0xa873('0x7'));var querystring=require(_0xa873('0xd'));var Papa=require(_0xa873('0xe'));var Redis=require(_0xa873('0xf'));var authService=require(_0xa873('0x10'));var qs=require(_0xa873('0x11'));var as=require(_0xa873('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa873('0x13'))('api');var utils=require(_0xa873('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xa873('0x15'))['db'];function respondWithStatusCode(_0x5f0355,_0x3db305){_0x3db305=_0x3db305||0xcc;return function(_0x37479e){if(_0x37479e){return _0x5f0355['sendStatus'](_0x3db305);}return _0x5f0355[_0xa873('0x16')](_0x3db305)[_0xa873('0x17')]();};}function respondWithResult(_0xe0e26a,_0x4994cd){_0x4994cd=_0x4994cd||0xc8;return function(_0x3ed9e3){if(_0x3ed9e3){return _0xe0e26a[_0xa873('0x16')](_0x4994cd)[_0xa873('0x18')](_0x3ed9e3);}};}function respondWithFilteredResult(_0x4f9c74,_0x34a4bf){return function(_0xb38512){if(_0xb38512){var _0x321dab=typeof _0x34a4bf['offset']===_0xa873('0x19')&&typeof _0x34a4bf['limit']===_0xa873('0x19');var _0x5189a6=_0xb38512[_0xa873('0x1a')];var _0x1b6937=_0x321dab?0x0:_0x34a4bf['offset'];var _0x301f13=_0x321dab?_0xb38512[_0xa873('0x1a')]:_0x34a4bf[_0xa873('0x1b')]+_0x34a4bf['limit'];var _0x89ea59;if(_0x301f13>=_0x5189a6){_0x301f13=_0x5189a6;_0x89ea59=0xc8;}else{_0x89ea59=0xce;}_0x4f9c74[_0xa873('0x16')](_0x89ea59);return _0x4f9c74[_0xa873('0x1c')](_0xa873('0x1d'),_0x1b6937+'-'+_0x301f13+'/'+_0x5189a6)[_0xa873('0x18')](_0xb38512);}return null;};}function patchUpdates(_0x2e2d5a){return function(_0x39724b){try{jsonpatch['apply'](_0x39724b,_0x2e2d5a,!![]);}catch(_0x38a3c3){return BPromise[_0xa873('0x1e')](_0x38a3c3);}return _0x39724b[_0xa873('0x1f')]();};}function saveUpdates(_0x305f2e,_0x3c4a86){return function(_0x48f7f5){if(_0x48f7f5){return _0x48f7f5[_0xa873('0x20')](_0x305f2e)[_0xa873('0x21')](function(_0x47f1c9){return _0x47f1c9;});}return null;};}function removeEntity(_0x44983e,_0x587167){return function(_0x9d5a15){if(_0x9d5a15){return _0x9d5a15[_0xa873('0x22')]()[_0xa873('0x21')](function(){_0x44983e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xd2be51,_0x4cbcbb){return function(_0x4326f6){if(!_0x4326f6){_0xd2be51['sendStatus'](0x194);}return _0x4326f6;};}function handleError(_0x10bc15,_0x3bccb6){_0x3bccb6=_0x3bccb6||0x1f4;return function(_0x57915d){logger[_0xa873('0x23')](_0x57915d[_0xa873('0x24')]);if(_0x57915d[_0xa873('0x25')]){delete _0x57915d[_0xa873('0x25')];}_0x10bc15[_0xa873('0x16')](_0x3bccb6)[_0xa873('0x26')](_0x57915d);};}exports[_0xa873('0x27')]=function(_0xae680,_0x3f1695){var _0x33dc2e={},_0x24a593={},_0xcdae11={'count':0x0,'rows':[]};var _0x465eaa=_[_0xa873('0x28')](db[_0xa873('0x29')][_0xa873('0x2a')],function(_0x165d16){return{'name':_0x165d16[_0xa873('0x2b')],'type':_0x165d16[_0xa873('0x2c')][_0xa873('0x2d')]};});_0x24a593[_0xa873('0x2e')]=_[_0xa873('0x28')](_0x465eaa,_0xa873('0x25'));_0x24a593[_0xa873('0x2f')]=_[_0xa873('0x30')](_0xae680[_0xa873('0x2f')]);_0x24a593['filters']=_[_0xa873('0x31')](_0x24a593[_0xa873('0x2e')],_0x24a593[_0xa873('0x2f')]);_0x33dc2e[_0xa873('0x32')]=_[_0xa873('0x31')](_0x24a593[_0xa873('0x2e')],qs[_0xa873('0x33')](_0xae680['query'][_0xa873('0x33')]));_0x33dc2e[_0xa873('0x32')]=_0x33dc2e[_0xa873('0x32')]['length']?_0x33dc2e[_0xa873('0x32')]:_0x24a593[_0xa873('0x2e')];if(!_0xae680[_0xa873('0x2f')][_0xa873('0x34')](_0xa873('0x35'))){_0x33dc2e[_0xa873('0x36')]=qs['limit'](_0xae680['query']['limit']);_0x33dc2e[_0xa873('0x1b')]=qs[_0xa873('0x1b')](_0xae680['query'][_0xa873('0x1b')]);}_0x33dc2e[_0xa873('0x37')]=qs[_0xa873('0x38')](_0xae680[_0xa873('0x2f')][_0xa873('0x38')]);_0x33dc2e[_0xa873('0x39')]=qs[_0xa873('0x3a')](_['pick'](_0xae680[_0xa873('0x2f')],_0x24a593['filters']),_0x465eaa);if(_0xae680[_0xa873('0x2f')][_0xa873('0x3b')]){_0x33dc2e[_0xa873('0x39')]=_[_0xa873('0x3c')](_0x33dc2e['where'],{'$or':_[_0xa873('0x28')](_0x465eaa,function(_0x2915cc){if(_0x2915cc[_0xa873('0x2c')]!=='VIRTUAL'){var _0x569591={};_0x569591[_0x2915cc[_0xa873('0x25')]]={'$like':'%'+_0xae680[_0xa873('0x2f')][_0xa873('0x3b')]+'%'};return _0x569591;}})});}_0x33dc2e=_['merge']({},_0x33dc2e,_0xae680[_0xa873('0x3d')]);var _0x280f11={'where':_0x33dc2e[_0xa873('0x39')]};return db[_0xa873('0x29')]['count'](_0x280f11)[_0xa873('0x21')](function(_0x2493e3){_0xcdae11[_0xa873('0x1a')]=_0x2493e3;if(_0xae680[_0xa873('0x2f')][_0xa873('0x3e')]){_0x33dc2e[_0xa873('0x3f')]=[{'all':!![]}];}return db[_0xa873('0x29')][_0xa873('0x40')](_0x33dc2e);})[_0xa873('0x21')](function(_0x577575){_0xcdae11['rows']=_0x577575;return _0xcdae11;})[_0xa873('0x21')](respondWithFilteredResult(_0x3f1695,_0x33dc2e))[_0xa873('0x41')](handleError(_0x3f1695,null));};exports[_0xa873('0x42')]=function(_0x242b01,_0x29a9b8){var _0x50d70c={'raw':![],'where':{'id':_0x242b01[_0xa873('0x43')]['id']}},_0x3d93ce={};_0x3d93ce[_0xa873('0x2e')]=_[_0xa873('0x30')](db['SalesforceConfiguration'][_0xa873('0x2a')]);_0x3d93ce[_0xa873('0x2f')]=_[_0xa873('0x30')](_0x242b01['query']);_0x3d93ce[_0xa873('0x3a')]=_['intersection'](_0x3d93ce['model'],_0x3d93ce[_0xa873('0x2f')]);_0x50d70c[_0xa873('0x32')]=_[_0xa873('0x31')](_0x3d93ce[_0xa873('0x2e')],qs[_0xa873('0x33')](_0x242b01[_0xa873('0x2f')]['fields']));_0x50d70c[_0xa873('0x32')]=_0x50d70c['attributes'][_0xa873('0x44')]?_0x50d70c[_0xa873('0x32')]:_0x3d93ce[_0xa873('0x2e')];if(_0x242b01[_0xa873('0x2f')][_0xa873('0x3e')]){_0x50d70c[_0xa873('0x3f')]=[{'all':!![]}];}_0x50d70c=_[_0xa873('0x3c')]({},_0x50d70c,_0x242b01[_0xa873('0x3d')]);return db[_0xa873('0x29')][_0xa873('0x45')](_0x50d70c)['then'](handleEntityNotFound(_0x29a9b8,null))[_0xa873('0x21')](respondWithResult(_0x29a9b8,null))[_0xa873('0x41')](handleError(_0x29a9b8,null));};exports[_0xa873('0x46')]=function(_0x839d62,_0x572381){return db[_0xa873('0x29')]['create'](_0x839d62['body'],{})[_0xa873('0x21')](respondWithResult(_0x572381,0xc9))[_0xa873('0x41')](handleError(_0x572381,null));};exports[_0xa873('0x20')]=function(_0x78e53b,_0x57e4d2){if(_0x78e53b[_0xa873('0x47')]['id']){delete _0x78e53b[_0xa873('0x47')]['id'];}return db[_0xa873('0x29')][_0xa873('0x45')]({'where':{'id':_0x78e53b['params']['id']}})[_0xa873('0x21')](handleEntityNotFound(_0x57e4d2,null))[_0xa873('0x21')](saveUpdates(_0x78e53b[_0xa873('0x47')],null))[_0xa873('0x21')](respondWithResult(_0x57e4d2,null))[_0xa873('0x41')](handleError(_0x57e4d2,null));};exports['destroy']=function(_0xf12de5,_0x4fc8ef){return db['SalesforceConfiguration'][_0xa873('0x45')]({'where':{'id':_0xf12de5[_0xa873('0x43')]['id']}})['then'](handleEntityNotFound(_0x4fc8ef,null))[_0xa873('0x21')](removeEntity(_0x4fc8ef,null))['catch'](handleError(_0x4fc8ef,null));};exports[_0xa873('0x48')]=function(_0x1aa002,_0x2539e2,_0x164958){var _0x18884c={};var _0x223ff3={};var _0x2a35ed;var _0x3b9fbe;return db[_0xa873('0x29')][_0xa873('0x49')]({'where':{'id':_0x1aa002[_0xa873('0x43')]['id']}})[_0xa873('0x21')](handleEntityNotFound(_0x2539e2,null))[_0xa873('0x21')](function(_0x5938c2){if(_0x5938c2){_0x2a35ed=_0x5938c2;_0x223ff3[_0xa873('0x2e')]=_[_0xa873('0x30')](db[_0xa873('0x4a')][_0xa873('0x2a')]);_0x223ff3[_0xa873('0x2f')]=_[_0xa873('0x30')](_0x1aa002['query']);_0x223ff3[_0xa873('0x3a')]=_[_0xa873('0x31')](_0x223ff3['model'],_0x223ff3['query']);_0x18884c['attributes']=_[_0xa873('0x31')](_0x223ff3[_0xa873('0x2e')],qs['fields'](_0x1aa002[_0xa873('0x2f')][_0xa873('0x33')]));_0x18884c[_0xa873('0x32')]=_0x18884c[_0xa873('0x32')][_0xa873('0x44')]?_0x18884c[_0xa873('0x32')]:_0x223ff3[_0xa873('0x2e')];_0x18884c[_0xa873('0x37')]=qs['sort'](_0x1aa002[_0xa873('0x2f')][_0xa873('0x38')]);_0x18884c[_0xa873('0x39')]=qs['filters'](_[_0xa873('0x4b')](_0x1aa002['query'],_0x223ff3['filters']));if(_0x1aa002[_0xa873('0x2f')][_0xa873('0x3b')]){_0x18884c[_0xa873('0x39')]=_[_0xa873('0x3c')](_0x18884c[_0xa873('0x39')],{'$or':_[_0xa873('0x28')](_0x18884c[_0xa873('0x32')],function(_0x1638ae){var _0xcbc790={};_0xcbc790[_0x1638ae]={'$like':'%'+_0x1aa002[_0xa873('0x2f')][_0xa873('0x3b')]+'%'};return _0xcbc790;})});}_0x18884c=_[_0xa873('0x3c')]({},_0x18884c,_0x1aa002['options']);return _0x2a35ed[_0xa873('0x48')](_0x18884c);}})[_0xa873('0x21')](function(_0xdb7030){if(_0xdb7030){_0x3b9fbe=_0xdb7030[_0xa873('0x44')];if(!_0x1aa002[_0xa873('0x2f')]['hasOwnProperty']('nolimit')){_0x18884c[_0xa873('0x36')]=qs[_0xa873('0x36')](_0x1aa002[_0xa873('0x2f')]['limit']);_0x18884c[_0xa873('0x1b')]=qs[_0xa873('0x1b')](_0x1aa002[_0xa873('0x2f')][_0xa873('0x1b')]);}return _0x2a35ed['getFields'](_0x18884c);}})['then'](function(_0x2c5bd7){if(_0x2c5bd7){return _0x2c5bd7?{'count':_0x3b9fbe,'rows':_0x2c5bd7}:null;}})[_0xa873('0x21')](respondWithResult(_0x2539e2,null))[_0xa873('0x41')](handleError(_0x2539e2,null));};exports[_0xa873('0x4c')]=function(_0x255f6c,_0x1da074,_0x12ff09){var _0x57de73={};var _0x5c9302={};var _0x546d1b;var _0x11d0e9;return db[_0xa873('0x29')][_0xa873('0x49')]({'where':{'id':_0x255f6c[_0xa873('0x43')]['id']}})[_0xa873('0x21')](handleEntityNotFound(_0x1da074,null))[_0xa873('0x21')](function(_0x4c5b59){if(_0x4c5b59){_0x546d1b=_0x4c5b59;_0x5c9302[_0xa873('0x2e')]=_['keys'](db[_0xa873('0x4a')][_0xa873('0x2a')]);_0x5c9302[_0xa873('0x2f')]=_[_0xa873('0x30')](_0x255f6c[_0xa873('0x2f')]);_0x5c9302[_0xa873('0x3a')]=_[_0xa873('0x31')](_0x5c9302[_0xa873('0x2e')],_0x5c9302[_0xa873('0x2f')]);_0x57de73[_0xa873('0x32')]=_[_0xa873('0x31')](_0x5c9302[_0xa873('0x2e')],qs[_0xa873('0x33')](_0x255f6c[_0xa873('0x2f')][_0xa873('0x33')]));_0x57de73['attributes']=_0x57de73[_0xa873('0x32')][_0xa873('0x44')]?_0x57de73['attributes']:_0x5c9302[_0xa873('0x2e')];_0x57de73[_0xa873('0x37')]=qs[_0xa873('0x38')](_0x255f6c['query'][_0xa873('0x38')]);_0x57de73[_0xa873('0x39')]=qs[_0xa873('0x3a')](_[_0xa873('0x4b')](_0x255f6c[_0xa873('0x2f')],_0x5c9302[_0xa873('0x3a')]));if(_0x255f6c[_0xa873('0x2f')][_0xa873('0x3b')]){_0x57de73['where']=_[_0xa873('0x3c')](_0x57de73[_0xa873('0x39')],{'$or':_['map'](_0x57de73['attributes'],function(_0x277d0c){var _0x4a3a86={};_0x4a3a86[_0x277d0c]={'$like':'%'+_0x255f6c[_0xa873('0x2f')][_0xa873('0x3b')]+'%'};return _0x4a3a86;})});}_0x57de73=_[_0xa873('0x3c')]({},_0x57de73,_0x255f6c['options']);return _0x546d1b['getSubjects'](_0x57de73);}})[_0xa873('0x21')](function(_0x3bf780){if(_0x3bf780){_0x11d0e9=_0x3bf780[_0xa873('0x44')];if(!_0x255f6c[_0xa873('0x2f')][_0xa873('0x34')](_0xa873('0x35'))){_0x57de73[_0xa873('0x36')]=qs[_0xa873('0x36')](_0x255f6c[_0xa873('0x2f')][_0xa873('0x36')]);_0x57de73['offset']=qs[_0xa873('0x1b')](_0x255f6c[_0xa873('0x2f')][_0xa873('0x1b')]);}return _0x546d1b['getSubjects'](_0x57de73);}})[_0xa873('0x21')](function(_0x5aeebc){if(_0x5aeebc){return _0x5aeebc?{'count':_0x11d0e9,'rows':_0x5aeebc}:null;}})[_0xa873('0x21')](respondWithResult(_0x1da074,null))[_0xa873('0x41')](handleError(_0x1da074,null));};exports[_0xa873('0x4d')]=function(_0x1dac41,_0x13f2c3,_0x49b650){var _0x1889b5={};var _0xcdd503={};var _0x4d1591;var _0x59d433;return db[_0xa873('0x29')][_0xa873('0x49')]({'where':{'id':_0x1dac41[_0xa873('0x43')]['id']}})[_0xa873('0x21')](handleEntityNotFound(_0x13f2c3,null))[_0xa873('0x21')](function(_0x358393){if(_0x358393){_0x4d1591=_0x358393;_0xcdd503['model']=_[_0xa873('0x30')](db[_0xa873('0x4a')][_0xa873('0x2a')]);_0xcdd503['query']=_[_0xa873('0x30')](_0x1dac41[_0xa873('0x2f')]);_0xcdd503[_0xa873('0x3a')]=_['intersection'](_0xcdd503[_0xa873('0x2e')],_0xcdd503['query']);_0x1889b5[_0xa873('0x32')]=_[_0xa873('0x31')](_0xcdd503[_0xa873('0x2e')],qs[_0xa873('0x33')](_0x1dac41['query']['fields']));_0x1889b5[_0xa873('0x32')]=_0x1889b5[_0xa873('0x32')][_0xa873('0x44')]?_0x1889b5['attributes']:_0xcdd503[_0xa873('0x2e')];_0x1889b5['order']=qs[_0xa873('0x38')](_0x1dac41[_0xa873('0x2f')][_0xa873('0x38')]);_0x1889b5[_0xa873('0x39')]=qs[_0xa873('0x3a')](_[_0xa873('0x4b')](_0x1dac41[_0xa873('0x2f')],_0xcdd503[_0xa873('0x3a')]));if(_0x1dac41[_0xa873('0x2f')][_0xa873('0x3b')]){_0x1889b5[_0xa873('0x39')]=_[_0xa873('0x3c')](_0x1889b5[_0xa873('0x39')],{'$or':_[_0xa873('0x28')](_0x1889b5[_0xa873('0x32')],function(_0x4b0cf9){var _0x28e705={};_0x28e705[_0x4b0cf9]={'$like':'%'+_0x1dac41[_0xa873('0x2f')][_0xa873('0x3b')]+'%'};return _0x28e705;})});}_0x1889b5=_[_0xa873('0x3c')]({},_0x1889b5,_0x1dac41['options']);return _0x4d1591['getDescriptions'](_0x1889b5);}})[_0xa873('0x21')](function(_0x546e7a){if(_0x546e7a){_0x59d433=_0x546e7a[_0xa873('0x44')];if(!_0x1dac41['query']['hasOwnProperty']('nolimit')){_0x1889b5[_0xa873('0x36')]=qs['limit'](_0x1dac41['query'][_0xa873('0x36')]);_0x1889b5[_0xa873('0x1b')]=qs[_0xa873('0x1b')](_0x1dac41['query'][_0xa873('0x1b')]);}return _0x4d1591['getDescriptions'](_0x1889b5);}})[_0xa873('0x21')](function(_0x330bcf){if(_0x330bcf){return _0x330bcf?{'count':_0x59d433,'rows':_0x330bcf}:null;}})['then'](respondWithResult(_0x13f2c3,null))['catch'](handleError(_0x13f2c3,null));};
\ No newline at end of file
+var _0x38e2=['type','VIRTUAL','options','SalesforceConfiguration','includeAll','include','findAll','catch','show','params','keys','rawAttributes','create','body','find','getFields','findOne','SalesforceField','hasOwnProperty','getSubjects','getDescriptions','rimraf','zip-dir','moment','bluebird','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','then','destroy','stack','name','send','index','fieldName','key','map','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge'];(function(_0x1dc879,_0x27fce9){var _0x4c881f=function(_0x496bf1){while(--_0x496bf1){_0x1dc879['push'](_0x1dc879['shift']());}};_0x4c881f(++_0x27fce9);}(_0x38e2,0xff));var _0x238e=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x38e2[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x238e('0x0'));var zipdir=require(_0x238e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x238e('0x2'));var BPromise=require(_0x238e('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x238e('0x4'));var sox=require(_0x238e('0x5'));var csv=require(_0x238e('0x6'));var ejs=require(_0x238e('0x7'));var fs=require('fs');var fs_extra=require(_0x238e('0x8'));var _=require('lodash');var squel=require(_0x238e('0x9'));var crypto=require(_0x238e('0xa'));var jsforce=require(_0x238e('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x238e('0x6'));var querystring=require('querystring');var Papa=require(_0x238e('0xc'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x238e('0xd'));var as=require(_0x238e('0xe'));var hardwareService=require(_0x238e('0xf'));var logger=require('../../config/logger')(_0x238e('0x10'));var utils=require(_0x238e('0x11'));var config=require(_0x238e('0x12'));var licenseUtil=require(_0x238e('0x13'));var db=require(_0x238e('0x14'))['db'];function respondWithStatusCode(_0x4adc80,_0x848387){_0x848387=_0x848387||0xcc;return function(_0x5d4ee2){if(_0x5d4ee2){return _0x4adc80[_0x238e('0x15')](_0x848387);}return _0x4adc80[_0x238e('0x16')](_0x848387)[_0x238e('0x17')]();};}function respondWithResult(_0x164131,_0x3d1079){_0x3d1079=_0x3d1079||0xc8;return function(_0x5efda9){if(_0x5efda9){return _0x164131[_0x238e('0x16')](_0x3d1079)[_0x238e('0x18')](_0x5efda9);}};}function respondWithFilteredResult(_0x5be8b9,_0x52c321){return function(_0x12a96c){if(_0x12a96c){var _0x1016d9=typeof _0x52c321['offset']===_0x238e('0x19')&&typeof _0x52c321[_0x238e('0x1a')]===_0x238e('0x19');var _0x2c5abe=_0x12a96c[_0x238e('0x1b')];var _0x2127da=_0x1016d9?0x0:_0x52c321[_0x238e('0x1c')];var _0x350ca8=_0x1016d9?_0x12a96c['count']:_0x52c321[_0x238e('0x1c')]+_0x52c321[_0x238e('0x1a')];var _0x24f70a;if(_0x350ca8>=_0x2c5abe){_0x350ca8=_0x2c5abe;_0x24f70a=0xc8;}else{_0x24f70a=0xce;}_0x5be8b9[_0x238e('0x16')](_0x24f70a);return _0x5be8b9[_0x238e('0x1d')](_0x238e('0x1e'),_0x2127da+'-'+_0x350ca8+'/'+_0x2c5abe)[_0x238e('0x18')](_0x12a96c);}return null;};}function patchUpdates(_0x16ce46){return function(_0x492c5c){try{jsonpatch['apply'](_0x492c5c,_0x16ce46,!![]);}catch(_0x34dd67){return BPromise[_0x238e('0x1f')](_0x34dd67);}return _0x492c5c[_0x238e('0x20')]();};}function saveUpdates(_0x56cefa,_0x2b040e){return function(_0x175fe9){if(_0x175fe9){return _0x175fe9[_0x238e('0x21')](_0x56cefa)[_0x238e('0x22')](function(_0x1bbfc2){return _0x1bbfc2;});}return null;};}function removeEntity(_0x606443,_0x344726){return function(_0x27123d){if(_0x27123d){return _0x27123d[_0x238e('0x23')]()[_0x238e('0x22')](function(){_0x606443['status'](0xcc)[_0x238e('0x17')]();});}};}function handleEntityNotFound(_0x4055f5,_0x2c77fd){return function(_0x50e406){if(!_0x50e406){_0x4055f5[_0x238e('0x15')](0x194);}return _0x50e406;};}function handleError(_0x3a2b2d,_0x46b95b){_0x46b95b=_0x46b95b||0x1f4;return function(_0x1ad6a7){logger['error'](_0x1ad6a7[_0x238e('0x24')]);if(_0x1ad6a7['name']){delete _0x1ad6a7[_0x238e('0x25')];}_0x3a2b2d[_0x238e('0x16')](_0x46b95b)[_0x238e('0x26')](_0x1ad6a7);};}exports[_0x238e('0x27')]=function(_0x517c29,_0x570f32){var _0x5c7370={},_0xe9f680={},_0x2f0c6b={'count':0x0,'rows':[]};var _0x460706=_['map'](db['SalesforceConfiguration']['rawAttributes'],function(_0x3c773c){return{'name':_0x3c773c[_0x238e('0x28')],'type':_0x3c773c['type'][_0x238e('0x29')]};});_0xe9f680['model']=_[_0x238e('0x2a')](_0x460706,_0x238e('0x25'));_0xe9f680[_0x238e('0x2b')]=_['keys'](_0x517c29[_0x238e('0x2b')]);_0xe9f680[_0x238e('0x2c')]=_[_0x238e('0x2d')](_0xe9f680[_0x238e('0x2e')],_0xe9f680[_0x238e('0x2b')]);_0x5c7370[_0x238e('0x2f')]=_[_0x238e('0x2d')](_0xe9f680[_0x238e('0x2e')],qs[_0x238e('0x30')](_0x517c29['query'][_0x238e('0x30')]));_0x5c7370['attributes']=_0x5c7370[_0x238e('0x2f')][_0x238e('0x31')]?_0x5c7370[_0x238e('0x2f')]:_0xe9f680[_0x238e('0x2e')];if(!_0x517c29[_0x238e('0x2b')]['hasOwnProperty'](_0x238e('0x32'))){_0x5c7370[_0x238e('0x1a')]=qs['limit'](_0x517c29[_0x238e('0x2b')][_0x238e('0x1a')]);_0x5c7370['offset']=qs[_0x238e('0x1c')](_0x517c29[_0x238e('0x2b')][_0x238e('0x1c')]);}_0x5c7370[_0x238e('0x33')]=qs[_0x238e('0x34')](_0x517c29[_0x238e('0x2b')][_0x238e('0x34')]);_0x5c7370[_0x238e('0x35')]=qs[_0x238e('0x2c')](_[_0x238e('0x36')](_0x517c29['query'],_0xe9f680[_0x238e('0x2c')]),_0x460706);if(_0x517c29[_0x238e('0x2b')][_0x238e('0x37')]){_0x5c7370[_0x238e('0x35')]=_[_0x238e('0x38')](_0x5c7370[_0x238e('0x35')],{'$or':_['map'](_0x460706,function(_0x40c3a4){if(_0x40c3a4[_0x238e('0x39')]!==_0x238e('0x3a')){var _0x2af5c0={};_0x2af5c0[_0x40c3a4[_0x238e('0x25')]]={'$like':'%'+_0x517c29[_0x238e('0x2b')]['filter']+'%'};return _0x2af5c0;}})});}_0x5c7370=_[_0x238e('0x38')]({},_0x5c7370,_0x517c29[_0x238e('0x3b')]);var _0x89d96c={'where':_0x5c7370[_0x238e('0x35')]};return db[_0x238e('0x3c')]['count'](_0x89d96c)[_0x238e('0x22')](function(_0x57844e){_0x2f0c6b[_0x238e('0x1b')]=_0x57844e;if(_0x517c29['query'][_0x238e('0x3d')]){_0x5c7370[_0x238e('0x3e')]=[{'all':!![]}];}return db[_0x238e('0x3c')][_0x238e('0x3f')](_0x5c7370);})['then'](function(_0x11bba2){_0x2f0c6b['rows']=_0x11bba2;return _0x2f0c6b;})[_0x238e('0x22')](respondWithFilteredResult(_0x570f32,_0x5c7370))[_0x238e('0x40')](handleError(_0x570f32,null));};exports[_0x238e('0x41')]=function(_0x31e637,_0x11f7e8){var _0x580db1={'raw':![],'where':{'id':_0x31e637[_0x238e('0x42')]['id']}},_0x389a7e={};_0x389a7e['model']=_[_0x238e('0x43')](db[_0x238e('0x3c')][_0x238e('0x44')]);_0x389a7e['query']=_[_0x238e('0x43')](_0x31e637[_0x238e('0x2b')]);_0x389a7e[_0x238e('0x2c')]=_['intersection'](_0x389a7e['model'],_0x389a7e[_0x238e('0x2b')]);_0x580db1[_0x238e('0x2f')]=_[_0x238e('0x2d')](_0x389a7e[_0x238e('0x2e')],qs[_0x238e('0x30')](_0x31e637[_0x238e('0x2b')][_0x238e('0x30')]));_0x580db1['attributes']=_0x580db1[_0x238e('0x2f')][_0x238e('0x31')]?_0x580db1[_0x238e('0x2f')]:_0x389a7e[_0x238e('0x2e')];if(_0x31e637[_0x238e('0x2b')][_0x238e('0x3d')]){_0x580db1[_0x238e('0x3e')]=[{'all':!![]}];}_0x580db1=_[_0x238e('0x38')]({},_0x580db1,_0x31e637[_0x238e('0x3b')]);return db[_0x238e('0x3c')]['find'](_0x580db1)[_0x238e('0x22')](handleEntityNotFound(_0x11f7e8,null))[_0x238e('0x22')](respondWithResult(_0x11f7e8,null))[_0x238e('0x40')](handleError(_0x11f7e8,null));};exports[_0x238e('0x45')]=function(_0x1d074e,_0x3f7db0){return db[_0x238e('0x3c')][_0x238e('0x45')](_0x1d074e[_0x238e('0x46')],{})['then'](respondWithResult(_0x3f7db0,0xc9))[_0x238e('0x40')](handleError(_0x3f7db0,null));};exports[_0x238e('0x21')]=function(_0x250666,_0x37dd29){if(_0x250666[_0x238e('0x46')]['id']){delete _0x250666[_0x238e('0x46')]['id'];}return db[_0x238e('0x3c')][_0x238e('0x47')]({'where':{'id':_0x250666[_0x238e('0x42')]['id']}})[_0x238e('0x22')](handleEntityNotFound(_0x37dd29,null))['then'](saveUpdates(_0x250666[_0x238e('0x46')],null))[_0x238e('0x22')](respondWithResult(_0x37dd29,null))[_0x238e('0x40')](handleError(_0x37dd29,null));};exports['destroy']=function(_0xe3784c,_0x6492f8){return db[_0x238e('0x3c')][_0x238e('0x47')]({'where':{'id':_0xe3784c[_0x238e('0x42')]['id']}})[_0x238e('0x22')](handleEntityNotFound(_0x6492f8,null))[_0x238e('0x22')](removeEntity(_0x6492f8,null))[_0x238e('0x40')](handleError(_0x6492f8,null));};exports[_0x238e('0x48')]=function(_0x2e5a54,_0x389c80,_0x5b17e8){var _0x467db7={};var _0x15599b={};var _0x5a4a52;var _0x16b08e;return db[_0x238e('0x3c')][_0x238e('0x49')]({'where':{'id':_0x2e5a54[_0x238e('0x42')]['id']}})[_0x238e('0x22')](handleEntityNotFound(_0x389c80,null))['then'](function(_0x3d519d){if(_0x3d519d){_0x5a4a52=_0x3d519d;_0x15599b[_0x238e('0x2e')]=_[_0x238e('0x43')](db[_0x238e('0x4a')][_0x238e('0x44')]);_0x15599b['query']=_[_0x238e('0x43')](_0x2e5a54[_0x238e('0x2b')]);_0x15599b[_0x238e('0x2c')]=_[_0x238e('0x2d')](_0x15599b['model'],_0x15599b['query']);_0x467db7[_0x238e('0x2f')]=_['intersection'](_0x15599b[_0x238e('0x2e')],qs[_0x238e('0x30')](_0x2e5a54['query'][_0x238e('0x30')]));_0x467db7[_0x238e('0x2f')]=_0x467db7['attributes']['length']?_0x467db7[_0x238e('0x2f')]:_0x15599b[_0x238e('0x2e')];_0x467db7[_0x238e('0x33')]=qs['sort'](_0x2e5a54[_0x238e('0x2b')][_0x238e('0x34')]);_0x467db7['where']=qs[_0x238e('0x2c')](_[_0x238e('0x36')](_0x2e5a54[_0x238e('0x2b')],_0x15599b[_0x238e('0x2c')]));if(_0x2e5a54['query'][_0x238e('0x37')]){_0x467db7['where']=_[_0x238e('0x38')](_0x467db7[_0x238e('0x35')],{'$or':_['map'](_0x467db7['attributes'],function(_0x542763){var _0x155461={};_0x155461[_0x542763]={'$like':'%'+_0x2e5a54['query'][_0x238e('0x37')]+'%'};return _0x155461;})});}_0x467db7=_[_0x238e('0x38')]({},_0x467db7,_0x2e5a54[_0x238e('0x3b')]);return _0x5a4a52[_0x238e('0x48')](_0x467db7);}})[_0x238e('0x22')](function(_0x117f51){if(_0x117f51){_0x16b08e=_0x117f51[_0x238e('0x31')];if(!_0x2e5a54[_0x238e('0x2b')][_0x238e('0x4b')]('nolimit')){_0x467db7[_0x238e('0x1a')]=qs[_0x238e('0x1a')](_0x2e5a54[_0x238e('0x2b')][_0x238e('0x1a')]);_0x467db7[_0x238e('0x1c')]=qs[_0x238e('0x1c')](_0x2e5a54[_0x238e('0x2b')][_0x238e('0x1c')]);}return _0x5a4a52[_0x238e('0x48')](_0x467db7);}})['then'](function(_0xdcad7b){if(_0xdcad7b){return _0xdcad7b?{'count':_0x16b08e,'rows':_0xdcad7b}:null;}})['then'](respondWithResult(_0x389c80,null))[_0x238e('0x40')](handleError(_0x389c80,null));};exports[_0x238e('0x4c')]=function(_0x403224,_0x545110,_0x52545d){var _0x41d5db={};var _0x594e1d={};var _0x145397;var _0x66ded1;return db[_0x238e('0x3c')][_0x238e('0x49')]({'where':{'id':_0x403224[_0x238e('0x42')]['id']}})['then'](handleEntityNotFound(_0x545110,null))['then'](function(_0xaafccc){if(_0xaafccc){_0x145397=_0xaafccc;_0x594e1d['model']=_[_0x238e('0x43')](db[_0x238e('0x4a')]['rawAttributes']);_0x594e1d[_0x238e('0x2b')]=_[_0x238e('0x43')](_0x403224[_0x238e('0x2b')]);_0x594e1d['filters']=_[_0x238e('0x2d')](_0x594e1d[_0x238e('0x2e')],_0x594e1d[_0x238e('0x2b')]);_0x41d5db[_0x238e('0x2f')]=_[_0x238e('0x2d')](_0x594e1d[_0x238e('0x2e')],qs[_0x238e('0x30')](_0x403224['query']['fields']));_0x41d5db[_0x238e('0x2f')]=_0x41d5db[_0x238e('0x2f')][_0x238e('0x31')]?_0x41d5db['attributes']:_0x594e1d[_0x238e('0x2e')];_0x41d5db[_0x238e('0x33')]=qs[_0x238e('0x34')](_0x403224[_0x238e('0x2b')][_0x238e('0x34')]);_0x41d5db[_0x238e('0x35')]=qs['filters'](_['pick'](_0x403224[_0x238e('0x2b')],_0x594e1d['filters']));if(_0x403224[_0x238e('0x2b')][_0x238e('0x37')]){_0x41d5db[_0x238e('0x35')]=_['merge'](_0x41d5db[_0x238e('0x35')],{'$or':_[_0x238e('0x2a')](_0x41d5db[_0x238e('0x2f')],function(_0x8535e1){var _0x11336a={};_0x11336a[_0x8535e1]={'$like':'%'+_0x403224[_0x238e('0x2b')][_0x238e('0x37')]+'%'};return _0x11336a;})});}_0x41d5db=_[_0x238e('0x38')]({},_0x41d5db,_0x403224[_0x238e('0x3b')]);return _0x145397[_0x238e('0x4c')](_0x41d5db);}})[_0x238e('0x22')](function(_0x365237){if(_0x365237){_0x66ded1=_0x365237['length'];if(!_0x403224[_0x238e('0x2b')]['hasOwnProperty'](_0x238e('0x32'))){_0x41d5db[_0x238e('0x1a')]=qs[_0x238e('0x1a')](_0x403224['query'][_0x238e('0x1a')]);_0x41d5db[_0x238e('0x1c')]=qs[_0x238e('0x1c')](_0x403224[_0x238e('0x2b')][_0x238e('0x1c')]);}return _0x145397['getSubjects'](_0x41d5db);}})[_0x238e('0x22')](function(_0x5f0472){if(_0x5f0472){return _0x5f0472?{'count':_0x66ded1,'rows':_0x5f0472}:null;}})[_0x238e('0x22')](respondWithResult(_0x545110,null))[_0x238e('0x40')](handleError(_0x545110,null));};exports[_0x238e('0x4d')]=function(_0x3c0c09,_0xe27016,_0x57a382){var _0x5c2afc={};var _0x3a8e2a={};var _0xa9678d;var _0x512985;return db[_0x238e('0x3c')]['findOne']({'where':{'id':_0x3c0c09[_0x238e('0x42')]['id']}})[_0x238e('0x22')](handleEntityNotFound(_0xe27016,null))['then'](function(_0x2f96f9){if(_0x2f96f9){_0xa9678d=_0x2f96f9;_0x3a8e2a[_0x238e('0x2e')]=_[_0x238e('0x43')](db[_0x238e('0x4a')][_0x238e('0x44')]);_0x3a8e2a[_0x238e('0x2b')]=_[_0x238e('0x43')](_0x3c0c09['query']);_0x3a8e2a[_0x238e('0x2c')]=_[_0x238e('0x2d')](_0x3a8e2a['model'],_0x3a8e2a[_0x238e('0x2b')]);_0x5c2afc[_0x238e('0x2f')]=_['intersection'](_0x3a8e2a['model'],qs[_0x238e('0x30')](_0x3c0c09[_0x238e('0x2b')]['fields']));_0x5c2afc[_0x238e('0x2f')]=_0x5c2afc[_0x238e('0x2f')][_0x238e('0x31')]?_0x5c2afc[_0x238e('0x2f')]:_0x3a8e2a[_0x238e('0x2e')];_0x5c2afc[_0x238e('0x33')]=qs[_0x238e('0x34')](_0x3c0c09[_0x238e('0x2b')][_0x238e('0x34')]);_0x5c2afc[_0x238e('0x35')]=qs['filters'](_[_0x238e('0x36')](_0x3c0c09[_0x238e('0x2b')],_0x3a8e2a[_0x238e('0x2c')]));if(_0x3c0c09['query'][_0x238e('0x37')]){_0x5c2afc['where']=_[_0x238e('0x38')](_0x5c2afc['where'],{'$or':_[_0x238e('0x2a')](_0x5c2afc['attributes'],function(_0x311407){var _0x3d9ba7={};_0x3d9ba7[_0x311407]={'$like':'%'+_0x3c0c09[_0x238e('0x2b')][_0x238e('0x37')]+'%'};return _0x3d9ba7;})});}_0x5c2afc=_[_0x238e('0x38')]({},_0x5c2afc,_0x3c0c09[_0x238e('0x3b')]);return _0xa9678d[_0x238e('0x4d')](_0x5c2afc);}})['then'](function(_0x560d07){if(_0x560d07){_0x512985=_0x560d07[_0x238e('0x31')];if(!_0x3c0c09['query']['hasOwnProperty'](_0x238e('0x32'))){_0x5c2afc[_0x238e('0x1a')]=qs[_0x238e('0x1a')](_0x3c0c09[_0x238e('0x2b')][_0x238e('0x1a')]);_0x5c2afc[_0x238e('0x1c')]=qs[_0x238e('0x1c')](_0x3c0c09[_0x238e('0x2b')][_0x238e('0x1c')]);}return _0xa9678d[_0x238e('0x4d')](_0x5c2afc);}})[_0x238e('0x22')](function(_0x14cf26){if(_0x14cf26){return _0x14cf26?{'count':_0x512985,'rows':_0x14cf26}:null;}})['then'](respondWithResult(_0xe27016,null))[_0x238e('0x40')](handleError(_0xe27016,null));};
\ No newline at end of file
index 648f6ba..f4a1000 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79f5=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceConfiguration.attributes','define','SalesforceConfiguration','int_salesforce_configurations','lodash','../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x79f5,0x1df));var _0x579f=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0x79f5[_0x25bea7];return _0x175952;};'use strict';var _=require(_0x579f('0x0'));var util=require('util');var logger=require(_0x579f('0x1'))(_0x579f('0x2'));var moment=require(_0x579f('0x3'));var BPromise=require(_0x579f('0x4'));var rp=require(_0x579f('0x5'));var fs=require('fs');var path=require(_0x579f('0x6'));var rimraf=require(_0x579f('0x7'));var config=require(_0x579f('0x8'));var attributes=require(_0x579f('0x9'));module['exports']=function(_0x261264,_0x2ea2aa){return _0x261264[_0x579f('0xa')](_0x579f('0xb'),attributes,{'tableName':_0x579f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd30a=['rimraf','../../config/environment','./intSalesforceConfiguration.attributes','define','SalesforceConfiguration','int_salesforce_configurations','lodash','util','api','bluebird','request-promise','path'];(function(_0x556e5f,_0x215af8){var _0xd3d83d=function(_0x5d99b3){while(--_0x5d99b3){_0x556e5f['push'](_0x556e5f['shift']());}};_0xd3d83d(++_0x215af8);}(_0xd30a,0x16e));var _0xad30=function(_0x33032e,_0x31411a){_0x33032e=_0x33032e-0x0;var _0x13316b=_0xd30a[_0x33032e];return _0x13316b;};'use strict';var _=require(_0xad30('0x0'));var util=require(_0xad30('0x1'));var logger=require('../../config/logger')(_0xad30('0x2'));var moment=require('moment');var BPromise=require(_0xad30('0x3'));var rp=require(_0xad30('0x4'));var fs=require('fs');var path=require(_0xad30('0x5'));var rimraf=require(_0xad30('0x6'));var config=require(_0xad30('0x7'));var attributes=require(_0xad30('0x8'));module['exports']=function(_0x25e7ae,_0x17db63){return _0x25e7ae[_0xad30('0x9')](_0xad30('0xa'),attributes,{'tableName':_0xad30('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5da0c83..421f0a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1955=['bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','lodash','util','moment'];(function(_0x1e6970,_0x3aff90){var _0x5e43f6=function(_0x8925d1){while(--_0x8925d1){_0x1e6970['push'](_0x1e6970['shift']());}};_0x5e43f6(++_0x3aff90);}(_0x1955,0x82));var _0x5195=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x1955[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x5195('0x0'));var util=require(_0x5195('0x1'));var moment=require(_0x5195('0x2'));var BPromise=require(_0x5195('0x3'));var rs=require(_0x5195('0x4'));var fs=require('fs');var Redis=require(_0x5195('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x5195('0x6'))('rpc');var config=require(_0x5195('0x7'));var jayson=require(_0x5195('0x8'));var client=jayson[_0x5195('0x9')][_0x5195('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x763904,_0xaf23b,_0x1379d1){return new BPromise(function(_0x447e60,_0x33fd35){return client[_0x5195('0xb')](_0x763904,_0x1379d1)[_0x5195('0xc')](function(_0x3e47dd){logger['info'](_0x5195('0xd'),_0xaf23b,'request\x20sent');logger['debug']('SalesforceConfiguration,\x20%s,\x20%s,\x20%s',_0xaf23b,_0x5195('0xe'),JSON[_0x5195('0xf')](_0x3e47dd));if(_0x3e47dd[_0x5195('0x10')]){if(_0x3e47dd[_0x5195('0x10')]['code']===0x1f4){logger[_0x5195('0x10')](_0x5195('0xd'),_0xaf23b,_0x3e47dd[_0x5195('0x10')][_0x5195('0x11')]);return _0x33fd35(_0x3e47dd[_0x5195('0x10')][_0x5195('0x11')]);}logger[_0x5195('0x10')](_0x5195('0xd'),_0xaf23b,_0x3e47dd[_0x5195('0x10')]['message']);return _0x447e60(_0x3e47dd[_0x5195('0x10')][_0x5195('0x11')]);}else{logger['info']('SalesforceConfiguration,\x20%s,\x20%s',_0xaf23b,_0x5195('0xe'));_0x447e60(_0x3e47dd[_0x5195('0x12')]['message']);}})['catch'](function(_0x4e73b7){logger[_0x5195('0x10')](_0x5195('0xd'),_0xaf23b,_0x4e73b7);_0x33fd35(_0x4e73b7);});});}
\ No newline at end of file
+var _0xe856=['stringify','error','message','info','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s'];(function(_0x590da5,_0x298084){var _0x54d4c4=function(_0xf67551){while(--_0xf67551){_0x590da5['push'](_0x590da5['shift']());}};_0x54d4c4(++_0x298084);}(_0xe856,0xc2));var _0x6e85=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0xe856[_0x8c43de];return _0xa6591b;};'use strict';var _=require(_0x6e85('0x0'));var util=require('util');var moment=require(_0x6e85('0x1'));var BPromise=require(_0x6e85('0x2'));var rs=require(_0x6e85('0x3'));var fs=require('fs');var Redis=require(_0x6e85('0x4'));var db=require(_0x6e85('0x5'))['db'];var utils=require(_0x6e85('0x6'));var logger=require(_0x6e85('0x7'))('rpc');var config=require(_0x6e85('0x8'));var jayson=require(_0x6e85('0x9'));var client=jayson[_0x6e85('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2b21a9,_0x3bfca4,_0x4c636b){return new BPromise(function(_0x4100ca,_0x302ffe){return client[_0x6e85('0xb')](_0x2b21a9,_0x4c636b)['then'](function(_0x2daf0d){logger['info'](_0x6e85('0xc'),_0x3bfca4,_0x6e85('0xd'));logger[_0x6e85('0xe')](_0x6e85('0xf'),_0x3bfca4,_0x6e85('0xd'),JSON[_0x6e85('0x10')](_0x2daf0d));if(_0x2daf0d[_0x6e85('0x11')]){if(_0x2daf0d[_0x6e85('0x11')]['code']===0x1f4){logger[_0x6e85('0x11')](_0x6e85('0xc'),_0x3bfca4,_0x2daf0d[_0x6e85('0x11')][_0x6e85('0x12')]);return _0x302ffe(_0x2daf0d[_0x6e85('0x11')][_0x6e85('0x12')]);}logger[_0x6e85('0x11')]('SalesforceConfiguration,\x20%s,\x20%s',_0x3bfca4,_0x2daf0d[_0x6e85('0x11')][_0x6e85('0x12')]);return _0x4100ca(_0x2daf0d[_0x6e85('0x11')][_0x6e85('0x12')]);}else{logger[_0x6e85('0x13')]('SalesforceConfiguration,\x20%s,\x20%s',_0x3bfca4,'request\x20sent');_0x4100ca(_0x2daf0d['result'][_0x6e85('0x12')]);}})[_0x6e85('0x14')](function(_0x49ce41){logger[_0x6e85('0x11')](_0x6e85('0xc'),_0x3bfca4,_0x49ce41);_0x302ffe(_0x49ce41);});});}
\ No newline at end of file
index 972f0c6..f3505db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe030=['destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceField.controller','isAuthenticated','index','show','post','create','put','/:id','update','delete'];(function(_0x43edfc,_0x5ba7b9){var _0x34428c=function(_0x1f138e){while(--_0x1f138e){_0x43edfc['push'](_0x43edfc['shift']());}};_0x34428c(++_0x5ba7b9);}(_0xe030,0x8e));var _0x0e03=function(_0x3062cb,_0x44ca12){_0x3062cb=_0x3062cb-0x0;var _0xf29731=_0xe030[_0x3062cb];return _0xf29731;};'use strict';var multer=require(_0x0e03('0x0'));var util=require(_0x0e03('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x0e03('0x2'));var router=express[_0x0e03('0x3')]();var fs_extra=require(_0x0e03('0x4'));var auth=require(_0x0e03('0x5'));var interaction=require(_0x0e03('0x6'));var config=require(_0x0e03('0x7'));var controller=require(_0x0e03('0x8'));router['get']('/',auth[_0x0e03('0x9')](),controller[_0x0e03('0xa')]);router['get']('/:id',auth[_0x0e03('0x9')](),controller[_0x0e03('0xb')]);router[_0x0e03('0xc')]('/',auth['isAuthenticated'](),controller[_0x0e03('0xd')]);router[_0x0e03('0xe')](_0x0e03('0xf'),auth[_0x0e03('0x9')](),controller[_0x0e03('0x10')]);router[_0x0e03('0x11')](_0x0e03('0xf'),auth[_0x0e03('0x9')](),controller[_0x0e03('0x12')]);module[_0x0e03('0x13')]=router;
\ No newline at end of file
+var _0x8286=['multer','util','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','create','/:id','update','delete','destroy','exports'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0x8286,0xf0));var _0x6828=function(_0x899dae,_0x4e7f56){_0x899dae=_0x899dae-0x0;var _0x34e018=_0x8286[_0x899dae];return _0x34e018;};'use strict';var multer=require(_0x6828('0x0'));var util=require(_0x6828('0x1'));var path=require(_0x6828('0x2'));var timeout=require('connect-timeout');var express=require(_0x6828('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x6828('0x4'));var interaction=require(_0x6828('0x5'));var config=require(_0x6828('0x6'));var controller=require('./intSalesforceField.controller');router[_0x6828('0x7')]('/',auth[_0x6828('0x8')](),controller[_0x6828('0x9')]);router[_0x6828('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x6828('0xa')]);router['put'](_0x6828('0xb'),auth[_0x6828('0x8')](),controller[_0x6828('0xc')]);router[_0x6828('0xd')](_0x6828('0xb'),auth[_0x6828('0x8')](),controller[_0x6828('0xe')]);module[_0x6828('0xf')]=router;
\ No newline at end of file
index 44c152c..00a14ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08d1=['ENUM','string','variable','customVariable','keyValue','picklist','STRING','sequelize','exports'];(function(_0x35f6b4,_0x505966){var _0x10f072=function(_0x20e563){while(--_0x20e563){_0x35f6b4['push'](_0x35f6b4['shift']());}};_0x10f072(++_0x505966);}(_0x08d1,0x85));var _0x108d=function(_0x43a739,_0x3d0dde){_0x43a739=_0x43a739-0x0;var _0x3dba0f=_0x08d1[_0x43a739];return _0x3dba0f;};'use strict';var Sequelize=require(_0x108d('0x0'));module[_0x108d('0x1')]={'type':{'type':Sequelize[_0x108d('0x2')](_0x108d('0x3'),_0x108d('0x4'),_0x108d('0x5'),_0x108d('0x6'),_0x108d('0x7')),'defaultValue':_0x108d('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x108d('0x8')]},'keyType':{'type':Sequelize[_0x108d('0x2')]('string',_0x108d('0x4'),_0x108d('0x5'))},'keyContent':{'type':Sequelize[_0x108d('0x8')]},'idField':{'type':Sequelize[_0x108d('0x8')]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xca93=['picklist','string','STRING','sequelize','exports','ENUM','variable','customVariable','keyValue'];(function(_0x1e17eb,_0x2e15c5){var _0x4de4c7=function(_0x52d003){while(--_0x52d003){_0x1e17eb['push'](_0x1e17eb['shift']());}};_0x4de4c7(++_0x2e15c5);}(_0xca93,0x8a));var _0x3ca9=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0xca93[_0x4c7fb5];return _0x2e10ac;};'use strict';var Sequelize=require(_0x3ca9('0x0'));module[_0x3ca9('0x1')]={'type':{'type':Sequelize[_0x3ca9('0x2')]('string',_0x3ca9('0x3'),_0x3ca9('0x4'),_0x3ca9('0x5'),_0x3ca9('0x6')),'defaultValue':_0x3ca9('0x7')},'content':{'type':Sequelize[_0x3ca9('0x8')]},'key':{'type':Sequelize[_0x3ca9('0x8')]},'keyType':{'type':Sequelize[_0x3ca9('0x2')](_0x3ca9('0x7'),_0x3ca9('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x3ca9('0x8')]},'idField':{'type':Sequelize[_0x3ca9('0x8')]},'variableName':{'type':Sequelize[_0x3ca9('0x8')]}};
\ No newline at end of file
index c72b04a..bcca343 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfed=['attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filters','merge','VIRTUAL','filter','options','includeAll','include','catch','show','params','create','update','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','crypto','to-csv','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','Content-Range','json','apply','then','destroy','name','send','index','SalesforceField','rawAttributes','fieldName','type','key','model','map','query','keys','intersection'];(function(_0xc88a7b,_0x381dba){var _0x294d36=function(_0x2db4cf){while(--_0x2db4cf){_0xc88a7b['push'](_0xc88a7b['shift']());}};_0x294d36(++_0x381dba);}(_0xbfed,0xa5));var _0xdbfe=function(_0x1fc84d,_0x3f469d){_0x1fc84d=_0x1fc84d-0x0;var _0x2658fa=_0xbfed[_0x1fc84d];return _0x2658fa;};'use strict';var emlformat=require(_0xdbfe('0x0'));var rimraf=require(_0xdbfe('0x1'));var zipdir=require(_0xdbfe('0x2'));var jsonpatch=require(_0xdbfe('0x3'));var rp=require(_0xdbfe('0x4'));var moment=require(_0xdbfe('0x5'));var BPromise=require(_0xdbfe('0x6'));var Mustache=require(_0xdbfe('0x7'));var util=require(_0xdbfe('0x8'));var path=require(_0xdbfe('0x9'));var sox=require(_0xdbfe('0xa'));var csv=require('to-csv');var ejs=require(_0xdbfe('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdbfe('0xc'));var squel=require('squel');var crypto=require(_0xdbfe('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xdbfe('0xe'));var querystring=require(_0xdbfe('0xf'));var Papa=require(_0xdbfe('0x10'));var Redis=require(_0xdbfe('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdbfe('0x12'));var logger=require(_0xdbfe('0x13'))('api');var utils=require(_0xdbfe('0x14'));var config=require(_0xdbfe('0x15'));var licenseUtil=require(_0xdbfe('0x16'));var db=require(_0xdbfe('0x17'))['db'];function respondWithStatusCode(_0x1aea7f,_0x49dfb2){_0x49dfb2=_0x49dfb2||0xcc;return function(_0x2a465e){if(_0x2a465e){return _0x1aea7f[_0xdbfe('0x18')](_0x49dfb2);}return _0x1aea7f[_0xdbfe('0x19')](_0x49dfb2)[_0xdbfe('0x1a')]();};}function respondWithResult(_0x11802f,_0x40f9f8){_0x40f9f8=_0x40f9f8||0xc8;return function(_0x2d8183){if(_0x2d8183){return _0x11802f['status'](_0x40f9f8)['json'](_0x2d8183);}};}function respondWithFilteredResult(_0x33194,_0x30dd87){return function(_0x44d7f4){if(_0x44d7f4){var _0x198da2=typeof _0x30dd87[_0xdbfe('0x1b')]===_0xdbfe('0x1c')&&typeof _0x30dd87['limit']===_0xdbfe('0x1c');var _0x320fdc=_0x44d7f4['count'];var _0x4399ff=_0x198da2?0x0:_0x30dd87[_0xdbfe('0x1b')];var _0x3de68e=_0x198da2?_0x44d7f4[_0xdbfe('0x1d')]:_0x30dd87[_0xdbfe('0x1b')]+_0x30dd87['limit'];var _0xde41f0;if(_0x3de68e>=_0x320fdc){_0x3de68e=_0x320fdc;_0xde41f0=0xc8;}else{_0xde41f0=0xce;}_0x33194['status'](_0xde41f0);return _0x33194['set'](_0xdbfe('0x1e'),_0x4399ff+'-'+_0x3de68e+'/'+_0x320fdc)[_0xdbfe('0x1f')](_0x44d7f4);}return null;};}function patchUpdates(_0x2fe447){return function(_0x180bdc){try{jsonpatch[_0xdbfe('0x20')](_0x180bdc,_0x2fe447,!![]);}catch(_0x3402f5){return BPromise['reject'](_0x3402f5);}return _0x180bdc['save']();};}function saveUpdates(_0x19f8f4,_0x25422f){return function(_0x36d889){if(_0x36d889){return _0x36d889['update'](_0x19f8f4)[_0xdbfe('0x21')](function(_0x2d3c91){return _0x2d3c91;});}return null;};}function removeEntity(_0x32c063,_0x36d1ee){return function(_0x373b12){if(_0x373b12){return _0x373b12[_0xdbfe('0x22')]()[_0xdbfe('0x21')](function(){_0x32c063[_0xdbfe('0x19')](0xcc)[_0xdbfe('0x1a')]();});}};}function handleEntityNotFound(_0x433f95,_0x2f8ada){return function(_0x15e40a){if(!_0x15e40a){_0x433f95[_0xdbfe('0x18')](0x194);}return _0x15e40a;};}function handleError(_0xed96d2,_0x4b68a0){_0x4b68a0=_0x4b68a0||0x1f4;return function(_0x237a62){logger['error'](_0x237a62['stack']);if(_0x237a62[_0xdbfe('0x23')]){delete _0x237a62[_0xdbfe('0x23')];}_0xed96d2[_0xdbfe('0x19')](_0x4b68a0)[_0xdbfe('0x24')](_0x237a62);};}exports[_0xdbfe('0x25')]=function(_0x84a99f,_0x1a967a){var _0x178cb6={},_0x4407b6={},_0x4347d2={'count':0x0,'rows':[]};var _0x1a566d=_['map'](db[_0xdbfe('0x26')][_0xdbfe('0x27')],function(_0x4c5766){return{'name':_0x4c5766[_0xdbfe('0x28')],'type':_0x4c5766[_0xdbfe('0x29')][_0xdbfe('0x2a')]};});_0x4407b6[_0xdbfe('0x2b')]=_[_0xdbfe('0x2c')](_0x1a566d,'name');_0x4407b6[_0xdbfe('0x2d')]=_[_0xdbfe('0x2e')](_0x84a99f['query']);_0x4407b6['filters']=_[_0xdbfe('0x2f')](_0x4407b6[_0xdbfe('0x2b')],_0x4407b6['query']);_0x178cb6[_0xdbfe('0x30')]=_['intersection'](_0x4407b6['model'],qs['fields'](_0x84a99f['query'][_0xdbfe('0x31')]));_0x178cb6[_0xdbfe('0x30')]=_0x178cb6['attributes'][_0xdbfe('0x32')]?_0x178cb6['attributes']:_0x4407b6['model'];if(!_0x84a99f[_0xdbfe('0x2d')][_0xdbfe('0x33')](_0xdbfe('0x34'))){_0x178cb6[_0xdbfe('0x35')]=qs[_0xdbfe('0x35')](_0x84a99f[_0xdbfe('0x2d')][_0xdbfe('0x35')]);_0x178cb6['offset']=qs[_0xdbfe('0x1b')](_0x84a99f['query']['offset']);}_0x178cb6[_0xdbfe('0x36')]=qs[_0xdbfe('0x37')](_0x84a99f[_0xdbfe('0x2d')][_0xdbfe('0x37')]);_0x178cb6[_0xdbfe('0x38')]=qs[_0xdbfe('0x39')](_['pick'](_0x84a99f[_0xdbfe('0x2d')],_0x4407b6[_0xdbfe('0x39')]),_0x1a566d);if(_0x84a99f[_0xdbfe('0x2d')]['filter']){_0x178cb6[_0xdbfe('0x38')]=_[_0xdbfe('0x3a')](_0x178cb6[_0xdbfe('0x38')],{'$or':_[_0xdbfe('0x2c')](_0x1a566d,function(_0x5c35ff){if(_0x5c35ff[_0xdbfe('0x29')]!==_0xdbfe('0x3b')){var _0x3cd622={};_0x3cd622[_0x5c35ff[_0xdbfe('0x23')]]={'$like':'%'+_0x84a99f['query'][_0xdbfe('0x3c')]+'%'};return _0x3cd622;}})});}_0x178cb6=_[_0xdbfe('0x3a')]({},_0x178cb6,_0x84a99f[_0xdbfe('0x3d')]);var _0x2af770={'where':_0x178cb6[_0xdbfe('0x38')]};return db[_0xdbfe('0x26')][_0xdbfe('0x1d')](_0x2af770)[_0xdbfe('0x21')](function(_0x582641){_0x4347d2[_0xdbfe('0x1d')]=_0x582641;if(_0x84a99f['query'][_0xdbfe('0x3e')]){_0x178cb6[_0xdbfe('0x3f')]=[{'all':!![]}];}return db[_0xdbfe('0x26')]['findAll'](_0x178cb6);})['then'](function(_0x1f42c0){_0x4347d2['rows']=_0x1f42c0;return _0x4347d2;})[_0xdbfe('0x21')](respondWithFilteredResult(_0x1a967a,_0x178cb6))[_0xdbfe('0x40')](handleError(_0x1a967a,null));};exports[_0xdbfe('0x41')]=function(_0x5c39d1,_0x1dc854){var _0x1478ee={'raw':!![],'where':{'id':_0x5c39d1[_0xdbfe('0x42')]['id']}},_0x412ea8={};_0x412ea8[_0xdbfe('0x2b')]=_[_0xdbfe('0x2e')](db[_0xdbfe('0x26')][_0xdbfe('0x27')]);_0x412ea8['query']=_[_0xdbfe('0x2e')](_0x5c39d1['query']);_0x412ea8[_0xdbfe('0x39')]=_['intersection'](_0x412ea8[_0xdbfe('0x2b')],_0x412ea8[_0xdbfe('0x2d')]);_0x1478ee['attributes']=_['intersection'](_0x412ea8[_0xdbfe('0x2b')],qs[_0xdbfe('0x31')](_0x5c39d1[_0xdbfe('0x2d')][_0xdbfe('0x31')]));_0x1478ee[_0xdbfe('0x30')]=_0x1478ee[_0xdbfe('0x30')][_0xdbfe('0x32')]?_0x1478ee[_0xdbfe('0x30')]:_0x412ea8[_0xdbfe('0x2b')];if(_0x5c39d1[_0xdbfe('0x2d')][_0xdbfe('0x3e')]){_0x1478ee['include']=[{'all':!![]}];}_0x1478ee=_[_0xdbfe('0x3a')]({},_0x1478ee,_0x5c39d1[_0xdbfe('0x3d')]);return db[_0xdbfe('0x26')]['find'](_0x1478ee)[_0xdbfe('0x21')](handleEntityNotFound(_0x1dc854,null))[_0xdbfe('0x21')](respondWithResult(_0x1dc854,null))[_0xdbfe('0x40')](handleError(_0x1dc854,null));};exports[_0xdbfe('0x43')]=function(_0x3bd85f,_0x3659d5){return db['SalesforceField']['create'](_0x3bd85f['body'],{})[_0xdbfe('0x21')](respondWithResult(_0x3659d5,0xc9))[_0xdbfe('0x40')](handleError(_0x3659d5,null));};exports[_0xdbfe('0x44')]=function(_0x35fdcc,_0x510c15){if(_0x35fdcc[_0xdbfe('0x45')]['id']){delete _0x35fdcc[_0xdbfe('0x45')]['id'];}return db['SalesforceField'][_0xdbfe('0x46')]({'where':{'id':_0x35fdcc['params']['id']}})[_0xdbfe('0x21')](handleEntityNotFound(_0x510c15,null))[_0xdbfe('0x21')](saveUpdates(_0x35fdcc[_0xdbfe('0x45')],null))[_0xdbfe('0x21')](respondWithResult(_0x510c15,null))[_0xdbfe('0x40')](handleError(_0x510c15,null));};exports['destroy']=function(_0x463a10,_0x35be95){return db[_0xdbfe('0x26')][_0xdbfe('0x46')]({'where':{'id':_0x463a10['params']['id']}})[_0xdbfe('0x21')](handleEntityNotFound(_0x35be95,null))[_0xdbfe('0x21')](removeEntity(_0x35be95,null))[_0xdbfe('0x40')](handleError(_0x35be95,null));};
\ No newline at end of file
+var _0xa1ed=['../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','error','name','send','index','map','SalesforceField','rawAttributes','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','filter','VIRTUAL','merge','where','then','includeAll','findAll','rows','catch','show','params','length','include','options','create','body','update','find','destroy','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util'];(function(_0x5e21b0,_0x4d7961){var _0x5903e2=function(_0x510551){while(--_0x510551){_0x5e21b0['push'](_0x5e21b0['shift']());}};_0x5903e2(++_0x4d7961);}(_0xa1ed,0x1b6));var _0xda1e=function(_0x5519a9,_0x1c5147){_0x5519a9=_0x5519a9-0x0;var _0x32f2cc=_0xa1ed[_0x5519a9];return _0x32f2cc;};'use strict';var emlformat=require(_0xda1e('0x0'));var rimraf=require(_0xda1e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xda1e('0x2'));var rp=require(_0xda1e('0x3'));var moment=require(_0xda1e('0x4'));var BPromise=require(_0xda1e('0x5'));var Mustache=require(_0xda1e('0x6'));var util=require('util');var path=require(_0xda1e('0x7'));var sox=require(_0xda1e('0x8'));var csv=require(_0xda1e('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xda1e('0xa'));var squel=require(_0xda1e('0xb'));var crypto=require('crypto');var jsforce=require(_0xda1e('0xc'));var deskjs=require(_0xda1e('0xd'));var toCsv=require(_0xda1e('0x9'));var querystring=require(_0xda1e('0xe'));var Papa=require(_0xda1e('0xf'));var Redis=require('ioredis');var authService=require(_0xda1e('0x10'));var qs=require(_0xda1e('0x11'));var as=require(_0xda1e('0x12'));var hardwareService=require(_0xda1e('0x13'));var logger=require(_0xda1e('0x14'))(_0xda1e('0x15'));var utils=require('../../config/utils');var config=require(_0xda1e('0x16'));var licenseUtil=require(_0xda1e('0x17'));var db=require(_0xda1e('0x18'))['db'];function respondWithStatusCode(_0x1761eb,_0x5a0d24){_0x5a0d24=_0x5a0d24||0xcc;return function(_0x381706){if(_0x381706){return _0x1761eb[_0xda1e('0x19')](_0x5a0d24);}return _0x1761eb[_0xda1e('0x1a')](_0x5a0d24)[_0xda1e('0x1b')]();};}function respondWithResult(_0x1502be,_0x252f09){_0x252f09=_0x252f09||0xc8;return function(_0x845010){if(_0x845010){return _0x1502be['status'](_0x252f09)[_0xda1e('0x1c')](_0x845010);}};}function respondWithFilteredResult(_0x9373a5,_0x540db3){return function(_0x436441){if(_0x436441){var _0x565622=typeof _0x540db3[_0xda1e('0x1d')]===_0xda1e('0x1e')&&typeof _0x540db3[_0xda1e('0x1f')]==='undefined';var _0x440643=_0x436441[_0xda1e('0x20')];var _0x3f8d37=_0x565622?0x0:_0x540db3[_0xda1e('0x1d')];var _0x7af715=_0x565622?_0x436441['count']:_0x540db3['offset']+_0x540db3[_0xda1e('0x1f')];var _0x28939f;if(_0x7af715>=_0x440643){_0x7af715=_0x440643;_0x28939f=0xc8;}else{_0x28939f=0xce;}_0x9373a5['status'](_0x28939f);return _0x9373a5[_0xda1e('0x21')](_0xda1e('0x22'),_0x3f8d37+'-'+_0x7af715+'/'+_0x440643)['json'](_0x436441);}return null;};}function patchUpdates(_0x5d06c8){return function(_0x3c0a08){try{jsonpatch[_0xda1e('0x23')](_0x3c0a08,_0x5d06c8,!![]);}catch(_0x20ec9c){return BPromise[_0xda1e('0x24')](_0x20ec9c);}return _0x3c0a08['save']();};}function saveUpdates(_0x5ba0db,_0x2694f4){return function(_0x56bea0){if(_0x56bea0){return _0x56bea0['update'](_0x5ba0db)['then'](function(_0x3d4478){return _0x3d4478;});}return null;};}function removeEntity(_0x37cefb,_0x449461){return function(_0x247c01){if(_0x247c01){return _0x247c01['destroy']()['then'](function(){_0x37cefb[_0xda1e('0x1a')](0xcc)[_0xda1e('0x1b')]();});}};}function handleEntityNotFound(_0x2db28f,_0x3ee60f){return function(_0x449078){if(!_0x449078){_0x2db28f[_0xda1e('0x19')](0x194);}return _0x449078;};}function handleError(_0x594cf7,_0x13c523){_0x13c523=_0x13c523||0x1f4;return function(_0x27c89d){logger[_0xda1e('0x25')](_0x27c89d['stack']);if(_0x27c89d[_0xda1e('0x26')]){delete _0x27c89d['name'];}_0x594cf7['status'](_0x13c523)[_0xda1e('0x27')](_0x27c89d);};}exports[_0xda1e('0x28')]=function(_0xde5c97,_0x5d64c7){var _0x2c34a0={},_0x268f6f={},_0x388d51={'count':0x0,'rows':[]};var _0x28ecb8=_[_0xda1e('0x29')](db[_0xda1e('0x2a')][_0xda1e('0x2b')],function(_0x588aac){return{'name':_0x588aac[_0xda1e('0x2c')],'type':_0x588aac[_0xda1e('0x2d')][_0xda1e('0x2e')]};});_0x268f6f['model']=_['map'](_0x28ecb8,_0xda1e('0x26'));_0x268f6f[_0xda1e('0x2f')]=_[_0xda1e('0x30')](_0xde5c97[_0xda1e('0x2f')]);_0x268f6f[_0xda1e('0x31')]=_['intersection'](_0x268f6f[_0xda1e('0x32')],_0x268f6f[_0xda1e('0x2f')]);_0x2c34a0[_0xda1e('0x33')]=_[_0xda1e('0x34')](_0x268f6f[_0xda1e('0x32')],qs[_0xda1e('0x35')](_0xde5c97[_0xda1e('0x2f')][_0xda1e('0x35')]));_0x2c34a0[_0xda1e('0x33')]=_0x2c34a0[_0xda1e('0x33')]['length']?_0x2c34a0[_0xda1e('0x33')]:_0x268f6f[_0xda1e('0x32')];if(!_0xde5c97[_0xda1e('0x2f')][_0xda1e('0x36')](_0xda1e('0x37'))){_0x2c34a0[_0xda1e('0x1f')]=qs[_0xda1e('0x1f')](_0xde5c97['query'][_0xda1e('0x1f')]);_0x2c34a0[_0xda1e('0x1d')]=qs['offset'](_0xde5c97[_0xda1e('0x2f')][_0xda1e('0x1d')]);}_0x2c34a0[_0xda1e('0x38')]=qs[_0xda1e('0x39')](_0xde5c97['query']['sort']);_0x2c34a0['where']=qs['filters'](_['pick'](_0xde5c97[_0xda1e('0x2f')],_0x268f6f['filters']),_0x28ecb8);if(_0xde5c97[_0xda1e('0x2f')][_0xda1e('0x3a')]){_0x2c34a0['where']=_['merge'](_0x2c34a0['where'],{'$or':_[_0xda1e('0x29')](_0x28ecb8,function(_0x3bc57a){if(_0x3bc57a[_0xda1e('0x2d')]!==_0xda1e('0x3b')){var _0x317447={};_0x317447[_0x3bc57a[_0xda1e('0x26')]]={'$like':'%'+_0xde5c97['query'][_0xda1e('0x3a')]+'%'};return _0x317447;}})});}_0x2c34a0=_[_0xda1e('0x3c')]({},_0x2c34a0,_0xde5c97['options']);var _0x188204={'where':_0x2c34a0[_0xda1e('0x3d')]};return db[_0xda1e('0x2a')]['count'](_0x188204)[_0xda1e('0x3e')](function(_0xc50687){_0x388d51['count']=_0xc50687;if(_0xde5c97[_0xda1e('0x2f')][_0xda1e('0x3f')]){_0x2c34a0['include']=[{'all':!![]}];}return db['SalesforceField'][_0xda1e('0x40')](_0x2c34a0);})[_0xda1e('0x3e')](function(_0x2f0773){_0x388d51[_0xda1e('0x41')]=_0x2f0773;return _0x388d51;})[_0xda1e('0x3e')](respondWithFilteredResult(_0x5d64c7,_0x2c34a0))[_0xda1e('0x42')](handleError(_0x5d64c7,null));};exports[_0xda1e('0x43')]=function(_0x1ee005,_0xd7429d){var _0x56eb12={'raw':!![],'where':{'id':_0x1ee005[_0xda1e('0x44')]['id']}},_0x8ad965={};_0x8ad965['model']=_['keys'](db[_0xda1e('0x2a')][_0xda1e('0x2b')]);_0x8ad965[_0xda1e('0x2f')]=_[_0xda1e('0x30')](_0x1ee005['query']);_0x8ad965[_0xda1e('0x31')]=_[_0xda1e('0x34')](_0x8ad965['model'],_0x8ad965[_0xda1e('0x2f')]);_0x56eb12[_0xda1e('0x33')]=_[_0xda1e('0x34')](_0x8ad965['model'],qs[_0xda1e('0x35')](_0x1ee005[_0xda1e('0x2f')]['fields']));_0x56eb12['attributes']=_0x56eb12[_0xda1e('0x33')][_0xda1e('0x45')]?_0x56eb12[_0xda1e('0x33')]:_0x8ad965[_0xda1e('0x32')];if(_0x1ee005[_0xda1e('0x2f')][_0xda1e('0x3f')]){_0x56eb12[_0xda1e('0x46')]=[{'all':!![]}];}_0x56eb12=_[_0xda1e('0x3c')]({},_0x56eb12,_0x1ee005[_0xda1e('0x47')]);return db['SalesforceField']['find'](_0x56eb12)[_0xda1e('0x3e')](handleEntityNotFound(_0xd7429d,null))[_0xda1e('0x3e')](respondWithResult(_0xd7429d,null))[_0xda1e('0x42')](handleError(_0xd7429d,null));};exports[_0xda1e('0x48')]=function(_0x52ba66,_0xa761f9){return db[_0xda1e('0x2a')][_0xda1e('0x48')](_0x52ba66[_0xda1e('0x49')],{})['then'](respondWithResult(_0xa761f9,0xc9))[_0xda1e('0x42')](handleError(_0xa761f9,null));};exports[_0xda1e('0x4a')]=function(_0x33c8d4,_0x16c117){if(_0x33c8d4[_0xda1e('0x49')]['id']){delete _0x33c8d4[_0xda1e('0x49')]['id'];}return db[_0xda1e('0x2a')][_0xda1e('0x4b')]({'where':{'id':_0x33c8d4['params']['id']}})[_0xda1e('0x3e')](handleEntityNotFound(_0x16c117,null))[_0xda1e('0x3e')](saveUpdates(_0x33c8d4[_0xda1e('0x49')],null))[_0xda1e('0x3e')](respondWithResult(_0x16c117,null))[_0xda1e('0x42')](handleError(_0x16c117,null));};exports[_0xda1e('0x4c')]=function(_0x27dc47,_0x1da8f8){return db[_0xda1e('0x2a')][_0xda1e('0x4b')]({'where':{'id':_0x27dc47[_0xda1e('0x44')]['id']}})[_0xda1e('0x3e')](handleEntityNotFound(_0x1da8f8,null))[_0xda1e('0x3e')](removeEntity(_0x1da8f8,null))['catch'](handleError(_0x1da8f8,null));};
\ No newline at end of file
index c29bae3..9d38a51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1b8=['request-promise','path','rimraf','../../config/environment','define','int_salesforce_fields','salesforce_unique_index','idField','FieldId','../../config/logger','api','moment'];(function(_0x5ecb6b,_0x395e2c){var _0x5b921f=function(_0xc71f12){while(--_0xc71f12){_0x5ecb6b['push'](_0x5ecb6b['shift']());}};_0x5b921f(++_0x395e2c);}(_0xe1b8,0x189));var _0x8e1b=function(_0x1c5be8,_0x4b6be6){_0x1c5be8=_0x1c5be8-0x0;var _0x23d245=_0xe1b8[_0x1c5be8];return _0x23d245;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x8e1b('0x0'))(_0x8e1b('0x1'));var moment=require(_0x8e1b('0x2'));var BPromise=require('bluebird');var rp=require(_0x8e1b('0x3'));var fs=require('fs');var path=require(_0x8e1b('0x4'));var rimraf=require(_0x8e1b('0x5'));var config=require(_0x8e1b('0x6'));var attributes=require('./intSalesforceField.attributes');module['exports']=function(_0x500853,_0x5d4486){return _0x500853[_0x8e1b('0x7')]('SalesforceField',attributes,{'tableName':_0x8e1b('0x8'),'paranoid':![],'indexes':[{'name':_0x8e1b('0x9'),'fields':[_0x8e1b('0xa'),_0x8e1b('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa64b=['FieldId','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./intSalesforceField.attributes','exports','SalesforceField','int_salesforce_fields','idField'];(function(_0x2b8388,_0x246b8f){var _0x3ba12a=function(_0x848995){while(--_0x848995){_0x2b8388['push'](_0x2b8388['shift']());}};_0x3ba12a(++_0x246b8f);}(_0xa64b,0xa9));var _0xba64=function(_0x30d4e8,_0xaae2a9){_0x30d4e8=_0x30d4e8-0x0;var _0x4a2d9d=_0xa64b[_0x30d4e8];return _0x4a2d9d;};'use strict';var _=require(_0xba64('0x0'));var util=require(_0xba64('0x1'));var logger=require('../../config/logger')(_0xba64('0x2'));var moment=require(_0xba64('0x3'));var BPromise=require(_0xba64('0x4'));var rp=require(_0xba64('0x5'));var fs=require('fs');var path=require(_0xba64('0x6'));var rimraf=require('rimraf');var config=require(_0xba64('0x7'));var attributes=require(_0xba64('0x8'));module[_0xba64('0x9')]=function(_0x5d5a05,_0x26448a){return _0x5d5a05['define'](_0xba64('0xa'),attributes,{'tableName':_0xba64('0xb'),'paranoid':![],'indexes':[{'name':'salesforce_unique_index','fields':[_0xba64('0xc'),_0xba64('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 247b56e..743eb9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa50e=['request','then','info','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','http'];(function(_0x22ad7d,_0x5bba12){var _0x4ee4a1=function(_0x24e36){while(--_0x24e36){_0x22ad7d['push'](_0x22ad7d['shift']());}};_0x4ee4a1(++_0x5bba12);}(_0xa50e,0x17c));var _0xea50=function(_0x2803e5,_0x270079){_0x2803e5=_0x2803e5-0x0;var _0x27e403=_0xa50e[_0x2803e5];return _0x27e403;};'use strict';var _=require(_0xea50('0x0'));var util=require(_0xea50('0x1'));var moment=require(_0xea50('0x2'));var BPromise=require(_0xea50('0x3'));var rs=require(_0xea50('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xea50('0x5'));var logger=require(_0xea50('0x6'))(_0xea50('0x7'));var config=require('../../config/environment');var jayson=require(_0xea50('0x8'));var client=jayson[_0xea50('0x9')][_0xea50('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3c138c,_0x5a8fb4,_0x1aaffa){return new BPromise(function(_0x6b69,_0x58ec5a){return client[_0xea50('0xb')](_0x3c138c,_0x1aaffa)[_0xea50('0xc')](function(_0x57feb0){logger[_0xea50('0xd')](_0xea50('0xe'),_0x5a8fb4,_0xea50('0xf'));logger[_0xea50('0x10')](_0xea50('0x11'),_0x5a8fb4,_0xea50('0xf'),JSON[_0xea50('0x12')](_0x57feb0));if(_0x57feb0[_0xea50('0x13')]){if(_0x57feb0['error']['code']===0x1f4){logger[_0xea50('0x13')](_0xea50('0xe'),_0x5a8fb4,_0x57feb0['error']['message']);return _0x58ec5a(_0x57feb0[_0xea50('0x13')]['message']);}logger[_0xea50('0x13')]('SalesforceField,\x20%s,\x20%s',_0x5a8fb4,_0x57feb0[_0xea50('0x13')][_0xea50('0x14')]);return _0x6b69(_0x57feb0[_0xea50('0x13')][_0xea50('0x14')]);}else{logger[_0xea50('0xd')](_0xea50('0xe'),_0x5a8fb4,_0xea50('0xf'));_0x6b69(_0x57feb0[_0xea50('0x15')][_0xea50('0x14')]);}})[_0xea50('0x16')](function(_0x395bd3){logger['error']('SalesforceField,\x20%s,\x20%s',_0x5a8fb4,_0x395bd3);_0x58ec5a(_0x395bd3);});});}
\ No newline at end of file
+var _0x894a=['../../config/logger','rpc','jayson/promise','http','request','then','SalesforceField,\x20%s,\x20%s','debug','SalesforceField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','util','moment','bluebird','randomstring','../../config/utils'];(function(_0x3125ea,_0x52eb93){var _0x296132=function(_0x5e4417){while(--_0x5e4417){_0x3125ea['push'](_0x3125ea['shift']());}};_0x296132(++_0x52eb93);}(_0x894a,0xb8));var _0xa894=function(_0x435db1,_0xa45498){_0x435db1=_0x435db1-0x0;var _0x38f449=_0x894a[_0x435db1];return _0x38f449;};'use strict';var _=require('lodash');var util=require(_0xa894('0x0'));var moment=require(_0xa894('0x1'));var BPromise=require(_0xa894('0x2'));var rs=require(_0xa894('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xa894('0x4'));var logger=require(_0xa894('0x5'))(_0xa894('0x6'));var config=require('../../config/environment');var jayson=require(_0xa894('0x7'));var client=jayson['client'][_0xa894('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1a81fb,_0x208a90,_0x56526d){return new BPromise(function(_0x1fed76,_0x12dd76){return client[_0xa894('0x9')](_0x1a81fb,_0x56526d)[_0xa894('0xa')](function(_0x4f50dc){logger['info'](_0xa894('0xb'),_0x208a90,'request\x20sent');logger[_0xa894('0xc')](_0xa894('0xd'),_0x208a90,_0xa894('0xe'),JSON[_0xa894('0xf')](_0x4f50dc));if(_0x4f50dc[_0xa894('0x10')]){if(_0x4f50dc[_0xa894('0x10')][_0xa894('0x11')]===0x1f4){logger[_0xa894('0x10')](_0xa894('0xb'),_0x208a90,_0x4f50dc[_0xa894('0x10')][_0xa894('0x12')]);return _0x12dd76(_0x4f50dc[_0xa894('0x10')]['message']);}logger[_0xa894('0x10')](_0xa894('0xb'),_0x208a90,_0x4f50dc['error']['message']);return _0x1fed76(_0x4f50dc['error'][_0xa894('0x12')]);}else{logger[_0xa894('0x13')]('SalesforceField,\x20%s,\x20%s',_0x208a90,_0xa894('0xe'));_0x1fed76(_0x4f50dc[_0xa894('0x14')][_0xa894('0x12')]);}})['catch'](function(_0x3f4f7e){logger['error'](_0xa894('0xb'),_0x208a90,_0x3f4f7e);_0x12dd76(_0x3f4f7e);});});}
\ No newline at end of file
index b6407e4..b2dcfb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae13=['delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update'];(function(_0x22ea01,_0x29bcaf){var _0x57fa1b=function(_0x1c576e){while(--_0x1c576e){_0x22ea01['push'](_0x22ea01['shift']());}};_0x57fa1b(++_0x29bcaf);}(_0xae13,0x154));var _0x3ae1=function(_0x3a376d,_0x8cda43){_0x3a376d=_0x3a376d-0x0;var _0x1ffca0=_0xae13[_0x3a376d];return _0x1ffca0;};'use strict';var multer=require(_0x3ae1('0x0'));var util=require(_0x3ae1('0x1'));var path=require(_0x3ae1('0x2'));var timeout=require(_0x3ae1('0x3'));var express=require(_0x3ae1('0x4'));var router=express[_0x3ae1('0x5')]();var fs_extra=require(_0x3ae1('0x6'));var auth=require(_0x3ae1('0x7'));var interaction=require(_0x3ae1('0x8'));var config=require(_0x3ae1('0x9'));var controller=require(_0x3ae1('0xa'));router[_0x3ae1('0xb')]('/',auth[_0x3ae1('0xc')](),controller[_0x3ae1('0xd')]);router['get']('/:id',auth[_0x3ae1('0xc')](),controller[_0x3ae1('0xe')]);router[_0x3ae1('0xb')](_0x3ae1('0xf'),auth[_0x3ae1('0xc')](),controller[_0x3ae1('0x10')]);router[_0x3ae1('0xb')](_0x3ae1('0x11'),auth[_0x3ae1('0xc')](),controller[_0x3ae1('0x12')]);router[_0x3ae1('0x13')]('/',auth['isAuthenticated'](),controller[_0x3ae1('0x14')]);router[_0x3ae1('0x13')](_0x3ae1('0xf'),auth[_0x3ae1('0xc')](),controller[_0x3ae1('0x15')]);router[_0x3ae1('0x16')]('/:id',auth[_0x3ae1('0xc')](),controller[_0x3ae1('0x17')]);router[_0x3ae1('0x18')]('/:id',auth['isAuthenticated'](),controller[_0x3ae1('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0x0911=['getConfigurations','/:id/fields','post','addConfiguration','update','delete','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations'];(function(_0x2353fe,_0x4b0bca){var _0x4d43f6=function(_0x5d0bd9){while(--_0x5d0bd9){_0x2353fe['push'](_0x2353fe['shift']());}};_0x4d43f6(++_0x4b0bca);}(_0x0911,0x1a9));var _0x1091=function(_0x4cf8d4,_0x5aee73){_0x4cf8d4=_0x4cf8d4-0x0;var _0x2c1beb=_0x0911[_0x4cf8d4];return _0x2c1beb;};'use strict';var multer=require(_0x1091('0x0'));var util=require(_0x1091('0x1'));var path=require(_0x1091('0x2'));var timeout=require(_0x1091('0x3'));var express=require(_0x1091('0x4'));var router=express['Router']();var fs_extra=require(_0x1091('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x1091('0x6'));var config=require(_0x1091('0x7'));var controller=require(_0x1091('0x8'));router[_0x1091('0x9')]('/',auth[_0x1091('0xa')](),controller[_0x1091('0xb')]);router[_0x1091('0x9')](_0x1091('0xc'),auth[_0x1091('0xa')](),controller[_0x1091('0xd')]);router['get'](_0x1091('0xe'),auth[_0x1091('0xa')](),controller[_0x1091('0xf')]);router[_0x1091('0x9')](_0x1091('0x10'),auth[_0x1091('0xa')](),controller['getFields']);router[_0x1091('0x11')]('/',auth[_0x1091('0xa')](),controller['create']);router['post'](_0x1091('0xe'),auth['isAuthenticated'](),controller[_0x1091('0x12')]);router['put'](_0x1091('0xc'),auth[_0x1091('0xa')](),controller[_0x1091('0x13')]);router[_0x1091('0x14')]('/:id',auth[_0x1091('0xa')](),controller[_0x1091('0x15')]);module['exports']=router;
\ No newline at end of file
index 901f191..564b789 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c96=['STRING','username','sequelize','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9c96,0x6a));var _0x69c9=function(_0x4995ad,_0x4e31b4){_0x4995ad=_0x4995ad-0x0;var _0x27de47=_0x9c96[_0x4995ad];return _0x27de47;};'use strict';var Sequelize=require(_0x69c9('0x0'));module[_0x69c9('0x1')]={'name':{'type':Sequelize[_0x69c9('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x69c9('0x2')],'unique':_0x69c9('0x3')},'password':{'type':Sequelize[_0x69c9('0x2')]},'email':{'type':Sequelize[_0x69c9('0x2')]},'remoteUri':{'type':Sequelize[_0x69c9('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x69c9('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xb671=['sequelize','exports','STRING','username','remoteUri'];(function(_0x5a56cc,_0x29650c){var _0x589caa=function(_0x1e3ce5){while(--_0x1e3ce5){_0x5a56cc['push'](_0x5a56cc['shift']());}};_0x589caa(++_0x29650c);}(_0xb671,0x73));var _0x1b67=function(_0x5843b3,_0x161e9b){_0x5843b3=_0x5843b3-0x0;var _0x2c4a0f=_0xb671[_0x5843b3];return _0x2c4a0f;};'use strict';var Sequelize=require(_0x1b67('0x0'));module[_0x1b67('0x1')]={'name':{'type':Sequelize[_0x1b67('0x2')]},'description':{'type':Sequelize[_0x1b67('0x2')]},'username':{'type':Sequelize[_0x1b67('0x2')],'unique':_0x1b67('0x3')},'password':{'type':Sequelize[_0x1b67('0x2')]},'email':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x1b67('0x2')],'unique':_0x1b67('0x4')},'serverUrl':{'type':Sequelize[_0x1b67('0x2')],'allowNull':![]}};
\ No newline at end of file
index d02ae0b..ddcda68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44d9=['type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','include','findAll','show','params','includeAll','find','catch','create','body','getConfigurations','findOne','ServicenowConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','ServicenowField','Descriptions','getFields','made_sla','hold_reason','knowledge','close_code','notify','incident_state','category','caused_by','watch_list','upon_reject','approval_history','number','resolved_by','opened_by','user_input','sys_created_on','sys_domain','state','sys_created_by','calendar_stc','closed_at','cmdb_ci','delivery_plan','impact','work_notes_list','business_service','priority','sys_domain_path','rfc','time_worked','expected_start','opened_at','business_duration','work_end','resolved_at','caller_id','approval_set','subcategory','work_notes','short_description','correlation_display','delivery_task','work_start','assignment_group','business_stc','additional_assignee_list','description','calendar_duration','sys_class_name','close_notes','closed_by','follow_up','parent_incident','sys_id','contact_type','reopened_by','urgency','problem_id','company','reassignment_count','assigned_to','severity','comments','sla_due','approval','comments_and_work_notes','reopen_count','sys_tags','escalation','upon_approval','correlation_id','username','password','email','remoteUri','serverUrl','slice','substring','lastIndexOf','format','GET','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','assign','remove','includes','forEach','internalType','all','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','label','push','concat','ServiceNow\x20error:\x20','test','statusCode','send','Wrong\x20credentials','boolean','True','true','false','value','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','map','ServicenowAccount','rawAttributes','fieldName'];(function(_0x52e954,_0x52ec44){var _0x16e4a3=function(_0x438eb0){while(--_0x438eb0){_0x52e954['push'](_0x52e954['shift']());}};_0x16e4a3(++_0x52ec44);}(_0x44d9,0x14f));var _0x944d=function(_0x31c0a5,_0x1703ec){_0x31c0a5=_0x31c0a5-0x0;var _0x65b250=_0x44d9[_0x31c0a5];return _0x65b250;};'use strict';var emlformat=require(_0x944d('0x0'));var rimraf=require(_0x944d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x944d('0x2'));var moment=require(_0x944d('0x3'));var BPromise=require(_0x944d('0x4'));var Mustache=require(_0x944d('0x5'));var util=require(_0x944d('0x6'));var path=require(_0x944d('0x7'));var sox=require('sox');var csv=require(_0x944d('0x8'));var ejs=require(_0x944d('0x9'));var fs=require('fs');var fs_extra=require(_0x944d('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x944d('0xb'));var jsforce=require(_0x944d('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x944d('0x8'));var querystring=require(_0x944d('0xd'));var Papa=require('papaparse');var Redis=require(_0x944d('0xe'));var authService=require(_0x944d('0xf'));var qs=require(_0x944d('0x10'));var as=require(_0x944d('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x944d('0x12'))(_0x944d('0x13'));var utils=require(_0x944d('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x944d('0x15'));var db=require(_0x944d('0x16'))['db'];var integrations=require(_0x944d('0x17'));function respondWithStatusCode(_0x2b9595,_0x3773bc){_0x3773bc=_0x3773bc||0xcc;return function(_0x3bf5f7){if(_0x3bf5f7){return _0x2b9595[_0x944d('0x18')](_0x3773bc);}return _0x2b9595[_0x944d('0x19')](_0x3773bc)['end']();};}function respondWithResult(_0x5b4fbf,_0x4b8352){_0x4b8352=_0x4b8352||0xc8;return function(_0x282394){if(_0x282394){return _0x5b4fbf[_0x944d('0x19')](_0x4b8352)[_0x944d('0x1a')](_0x282394);}};}function respondWithFilteredResult(_0x17aa11,_0x1a41c0){return function(_0x4a3577){if(_0x4a3577){var _0x1bb82e=typeof _0x1a41c0[_0x944d('0x1b')]===_0x944d('0x1c')&&typeof _0x1a41c0[_0x944d('0x1d')]==='undefined';var _0x49dc99=_0x4a3577[_0x944d('0x1e')];var _0x3158a4=_0x1bb82e?0x0:_0x1a41c0[_0x944d('0x1b')];var _0x4a0eba=_0x1bb82e?_0x4a3577[_0x944d('0x1e')]:_0x1a41c0['offset']+_0x1a41c0[_0x944d('0x1d')];var _0x4fbdf4;if(_0x4a0eba>=_0x49dc99){_0x4a0eba=_0x49dc99;_0x4fbdf4=0xc8;}else{_0x4fbdf4=0xce;}_0x17aa11[_0x944d('0x19')](_0x4fbdf4);return _0x17aa11[_0x944d('0x1f')](_0x944d('0x20'),_0x3158a4+'-'+_0x4a0eba+'/'+_0x49dc99)[_0x944d('0x1a')](_0x4a3577);}return null;};}function patchUpdates(_0x7056b){return function(_0x418fab){try{jsonpatch[_0x944d('0x21')](_0x418fab,_0x7056b,!![]);}catch(_0x4a784b){return BPromise[_0x944d('0x22')](_0x4a784b);}return _0x418fab[_0x944d('0x23')]();};}function saveUpdates(_0x5a9a7a,_0x1afd20){return function(_0x50995d){if(_0x50995d){return _0x50995d[_0x944d('0x24')](_0x5a9a7a)[_0x944d('0x25')](function(_0x3dd117){return _0x3dd117;});}return null;};}function removeEntity(_0x1ce35b,_0xceb0f4){return function(_0x8a8531){if(_0x8a8531){return _0x8a8531[_0x944d('0x26')]()[_0x944d('0x25')](function(){_0x1ce35b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x392827,_0x5a35d3){return function(_0x5ca6f2){if(!_0x5ca6f2){_0x392827['sendStatus'](0x194);}return _0x5ca6f2;};}function handleError(_0x229f55,_0x168f73){_0x168f73=_0x168f73||0x1f4;return function(_0x24a671){logger[_0x944d('0x27')](_0x24a671[_0x944d('0x28')]);if(_0x24a671[_0x944d('0x29')]){delete _0x24a671['name'];}_0x229f55[_0x944d('0x19')](_0x168f73)['send'](_0x24a671);};}exports[_0x944d('0x2a')]=function(_0xf2bd39,_0x25b1dc){var _0x54b936={},_0x290332={},_0x37c3d5={'count':0x0,'rows':[]};var _0x435c20=_[_0x944d('0x2b')](db[_0x944d('0x2c')][_0x944d('0x2d')],function(_0x23e9f4){return{'name':_0x23e9f4[_0x944d('0x2e')],'type':_0x23e9f4[_0x944d('0x2f')][_0x944d('0x30')]};});_0x290332[_0x944d('0x31')]=_['map'](_0x435c20,_0x944d('0x29'));_0x290332[_0x944d('0x32')]=_[_0x944d('0x33')](_0xf2bd39[_0x944d('0x32')]);_0x290332[_0x944d('0x34')]=_[_0x944d('0x35')](_0x290332[_0x944d('0x31')],_0x290332[_0x944d('0x32')]);_0x54b936[_0x944d('0x36')]=_[_0x944d('0x35')](_0x290332['model'],qs[_0x944d('0x37')](_0xf2bd39[_0x944d('0x32')][_0x944d('0x37')]));_0x54b936[_0x944d('0x36')]=_0x54b936[_0x944d('0x36')][_0x944d('0x38')]?_0x54b936[_0x944d('0x36')]:_0x290332[_0x944d('0x31')];if(!_0xf2bd39[_0x944d('0x32')][_0x944d('0x39')](_0x944d('0x3a'))){_0x54b936[_0x944d('0x1d')]=qs[_0x944d('0x1d')](_0xf2bd39[_0x944d('0x32')]['limit']);_0x54b936[_0x944d('0x1b')]=qs[_0x944d('0x1b')](_0xf2bd39[_0x944d('0x32')][_0x944d('0x1b')]);}_0x54b936[_0x944d('0x3b')]=qs[_0x944d('0x3c')](_0xf2bd39[_0x944d('0x32')]['sort']);_0x54b936[_0x944d('0x3d')]=qs['filters'](_[_0x944d('0x3e')](_0xf2bd39[_0x944d('0x32')],_0x290332[_0x944d('0x34')]),_0x435c20);if(_0xf2bd39[_0x944d('0x32')][_0x944d('0x3f')]){_0x54b936['where']=_[_0x944d('0x40')](_0x54b936[_0x944d('0x3d')],{'$or':_[_0x944d('0x2b')](_0x435c20,function(_0x22af9f){if(_0x22af9f[_0x944d('0x2f')]!=='VIRTUAL'){var _0x5c6121={};_0x5c6121[_0x22af9f[_0x944d('0x29')]]={'$like':'%'+_0xf2bd39[_0x944d('0x32')][_0x944d('0x3f')]+'%'};return _0x5c6121;}})});}_0x54b936=_[_0x944d('0x40')]({},_0x54b936,_0xf2bd39[_0x944d('0x41')]);var _0x30cbc7={'where':_0x54b936[_0x944d('0x3d')]};return db[_0x944d('0x2c')][_0x944d('0x1e')](_0x30cbc7)[_0x944d('0x25')](function(_0x1e32d7){_0x37c3d5[_0x944d('0x1e')]=_0x1e32d7;if(_0xf2bd39[_0x944d('0x32')]['includeAll']){_0x54b936[_0x944d('0x42')]=[{'all':!![]}];}return db['ServicenowAccount'][_0x944d('0x43')](_0x54b936);})[_0x944d('0x25')](function(_0x77ff3d){_0x37c3d5['rows']=_0x77ff3d;return _0x37c3d5;})[_0x944d('0x25')](respondWithFilteredResult(_0x25b1dc,_0x54b936))['catch'](handleError(_0x25b1dc,null));};exports[_0x944d('0x44')]=function(_0x288979,_0x31ff74){var _0x483362={'raw':![],'where':{'id':_0x288979[_0x944d('0x45')]['id']}},_0x5e6752={};_0x5e6752[_0x944d('0x31')]=_[_0x944d('0x33')](db['ServicenowAccount'][_0x944d('0x2d')]);_0x5e6752[_0x944d('0x32')]=_[_0x944d('0x33')](_0x288979[_0x944d('0x32')]);_0x5e6752[_0x944d('0x34')]=_[_0x944d('0x35')](_0x5e6752[_0x944d('0x31')],_0x5e6752[_0x944d('0x32')]);_0x483362[_0x944d('0x36')]=_[_0x944d('0x35')](_0x5e6752[_0x944d('0x31')],qs[_0x944d('0x37')](_0x288979[_0x944d('0x32')][_0x944d('0x37')]));_0x483362[_0x944d('0x36')]=_0x483362[_0x944d('0x36')][_0x944d('0x38')]?_0x483362[_0x944d('0x36')]:_0x5e6752[_0x944d('0x31')];if(_0x288979[_0x944d('0x32')][_0x944d('0x46')]){_0x483362[_0x944d('0x42')]=[{'all':!![]}];}_0x483362=_[_0x944d('0x40')]({},_0x483362,_0x288979[_0x944d('0x41')]);return db[_0x944d('0x2c')][_0x944d('0x47')](_0x483362)['then'](handleEntityNotFound(_0x31ff74,null))['then'](respondWithResult(_0x31ff74,null))[_0x944d('0x48')](handleError(_0x31ff74,null));};exports[_0x944d('0x49')]=function(_0x5ae6a4,_0x27386e){return db[_0x944d('0x2c')]['create'](_0x5ae6a4[_0x944d('0x4a')],{})[_0x944d('0x25')](respondWithResult(_0x27386e,0xc9))[_0x944d('0x48')](handleError(_0x27386e,null));};exports[_0x944d('0x24')]=function(_0x5c3130,_0x3054ab){if(_0x5c3130[_0x944d('0x4a')]['id']){delete _0x5c3130[_0x944d('0x4a')]['id'];}return db[_0x944d('0x2c')]['find']({'where':{'id':_0x5c3130[_0x944d('0x45')]['id']}})[_0x944d('0x25')](handleEntityNotFound(_0x3054ab,null))[_0x944d('0x25')](saveUpdates(_0x5c3130[_0x944d('0x4a')],null))[_0x944d('0x25')](respondWithResult(_0x3054ab,null))[_0x944d('0x48')](handleError(_0x3054ab,null));};exports[_0x944d('0x26')]=function(_0x172ce9,_0xe4c85){return db[_0x944d('0x2c')][_0x944d('0x47')]({'where':{'id':_0x172ce9['params']['id']}})[_0x944d('0x25')](handleEntityNotFound(_0xe4c85,null))[_0x944d('0x25')](removeEntity(_0xe4c85,null))['catch'](handleError(_0xe4c85,null));};exports[_0x944d('0x4b')]=function(_0x345248,_0x364206,_0x53b732){var _0x1649cb={};var _0x70a5ad={};var _0x307ef2;var _0x5409e7;return db[_0x944d('0x2c')][_0x944d('0x4c')]({'where':{'id':_0x345248[_0x944d('0x45')]['id']}})[_0x944d('0x25')](handleEntityNotFound(_0x364206,null))[_0x944d('0x25')](function(_0x217a11){if(_0x217a11){_0x307ef2=_0x217a11;_0x70a5ad[_0x944d('0x31')]=_['keys'](db[_0x944d('0x4d')][_0x944d('0x2d')]);_0x70a5ad['query']=_['keys'](_0x345248[_0x944d('0x32')]);_0x70a5ad[_0x944d('0x34')]=_[_0x944d('0x35')](_0x70a5ad['model'],_0x70a5ad['query']);_0x1649cb[_0x944d('0x36')]=_[_0x944d('0x35')](_0x70a5ad['model'],qs[_0x944d('0x37')](_0x345248[_0x944d('0x32')][_0x944d('0x37')]));_0x1649cb[_0x944d('0x36')]=_0x1649cb[_0x944d('0x36')][_0x944d('0x38')]?_0x1649cb[_0x944d('0x36')]:_0x70a5ad[_0x944d('0x31')];_0x1649cb[_0x944d('0x3b')]=qs[_0x944d('0x3c')](_0x345248[_0x944d('0x32')][_0x944d('0x3c')]);_0x1649cb[_0x944d('0x3d')]=qs[_0x944d('0x34')](_[_0x944d('0x3e')](_0x345248[_0x944d('0x32')],_0x70a5ad[_0x944d('0x34')]));if(_0x345248[_0x944d('0x32')][_0x944d('0x3f')]){_0x1649cb[_0x944d('0x3d')]=_[_0x944d('0x40')](_0x1649cb[_0x944d('0x3d')],{'$or':_[_0x944d('0x2b')](_0x1649cb[_0x944d('0x36')],function(_0x16f89a){var _0x207485={};_0x207485[_0x16f89a]={'$like':'%'+_0x345248['query'][_0x944d('0x3f')]+'%'};return _0x207485;})});}_0x1649cb=_['merge']({},_0x1649cb,_0x345248[_0x944d('0x41')]);return _0x307ef2[_0x944d('0x4b')](_0x1649cb);}})['then'](function(_0x234640){if(_0x234640){_0x5409e7=_0x234640[_0x944d('0x38')];if(!_0x345248[_0x944d('0x32')]['hasOwnProperty'](_0x944d('0x3a'))){_0x1649cb['limit']=qs[_0x944d('0x1d')](_0x345248[_0x944d('0x32')][_0x944d('0x1d')]);_0x1649cb[_0x944d('0x1b')]=qs[_0x944d('0x1b')](_0x345248[_0x944d('0x32')][_0x944d('0x1b')]);}return _0x307ef2[_0x944d('0x4b')](_0x1649cb);}})['then'](function(_0x50826a){if(_0x50826a){return _0x50826a?{'count':_0x5409e7,'rows':_0x50826a}:null;}})['then'](respondWithResult(_0x364206,null))[_0x944d('0x48')](handleError(_0x364206,null));};exports[_0x944d('0x4e')]=function(_0x2fdc52,_0xebdd9b,_0x245040){if(_0x2fdc52[_0x944d('0x4a')]['id']){delete _0x2fdc52[_0x944d('0x4a')]['id'];}return db[_0x944d('0x2c')]['findOne']({'where':{'id':_0x2fdc52[_0x944d('0x45')]['id']}})[_0x944d('0x25')](handleEntityNotFound(_0xebdd9b,null))[_0x944d('0x25')](function(_0x5acc11){if(_0x5acc11){_0x2fdc52['body'][_0x944d('0x4f')]=_0x5acc11['id'];_0x2fdc52['body'][_0x944d('0x50')]=integrations[_0x944d('0x51')](_0x2fdc52[_0x944d('0x4a')]['channel'],_0x2fdc52['body'][_0x944d('0x2f')]);_0x2fdc52[_0x944d('0x4a')]['Descriptions']=integrations['getDescriptions'](_0x2fdc52[_0x944d('0x4a')][_0x944d('0x52')],_0x2fdc52[_0x944d('0x4a')][_0x944d('0x2f')]);return db[_0x944d('0x4d')][_0x944d('0x49')](_0x2fdc52[_0x944d('0x4a')],{'include':[{'model':db[_0x944d('0x53')],'as':_0x944d('0x50')},{'model':db[_0x944d('0x53')],'as':_0x944d('0x54')}]});}return null;})[_0x944d('0x25')](respondWithResult(_0xebdd9b,null))[_0x944d('0x48')](handleError(_0xebdd9b,null));};exports[_0x944d('0x55')]=function(_0x45d577,_0x127d86,_0x4f2b34){var _0x11189b=[_0x944d('0x56'),_0x944d('0x57'),_0x944d('0x58'),'subcategory',_0x944d('0x59'),_0x944d('0x5a'),_0x944d('0x5b'),'severity',_0x944d('0x5c')];var _0x5dd061=['parent',_0x944d('0x56'),_0x944d('0x5d'),_0x944d('0x5e'),_0x944d('0x5f'),'sys_updated_on','child_incidents',_0x944d('0x57'),_0x944d('0x60'),_0x944d('0x61'),_0x944d('0x62'),'sys_updated_by',_0x944d('0x63'),_0x944d('0x64'),_0x944d('0x65'),_0x944d('0x66'),_0x944d('0x67'),_0x944d('0x68'),_0x944d('0x58'),_0x944d('0x3b'),_0x944d('0x69'),_0x944d('0x6a'),_0x944d('0x6b'),_0x944d('0x6c'),_0x944d('0x6d'),'active',_0x944d('0x6e'),_0x944d('0x6f'),_0x944d('0x70'),_0x944d('0x71'),_0x944d('0x72'),_0x944d('0x73'),_0x944d('0x74'),_0x944d('0x75'),_0x944d('0x76'),'group_list',_0x944d('0x77'),'reopened_time',_0x944d('0x78'),_0x944d('0x79'),_0x944d('0x7a'),_0x944d('0x7b'),_0x944d('0x7c'),_0x944d('0x7d'),_0x944d('0x59'),_0x944d('0x7e'),_0x944d('0x7f'),_0x944d('0x80'),_0x944d('0x81'),_0x944d('0x82'),_0x944d('0x83'),_0x944d('0x84'),_0x944d('0x85'),'notify',_0x944d('0x86'),_0x944d('0x87'),_0x944d('0x88'),_0x944d('0x89'),_0x944d('0x8a'),_0x944d('0x8b'),_0x944d('0x8c'),_0x944d('0x8d'),_0x944d('0x5b'),_0x944d('0x8e'),_0x944d('0x8f'),_0x944d('0x90'),_0x944d('0x91'),'activity_due',_0x944d('0x92'),_0x944d('0x93'),_0x944d('0x94'),_0x944d('0x95'),_0x944d('0x96'),_0x944d('0x97'),'due_date','sys_mod_count',_0x944d('0x98'),_0x944d('0x99'),_0x944d('0x9a'),_0x944d('0x9b'),_0x944d('0x9c'),'location',_0x944d('0x5c')];var _0x40e46f='';var _0x5d06a2='';var _0x364b9f=[];var _0x2e2c14='';var _0x1ee1ff='';var _0x299ab2=[];var _0x5cea6e='';var _0x48b6a8='';var _0x7806b8={};var _0x3a2372='';return db[_0x944d('0x2c')][_0x944d('0x4c')]({'where':{'id':_0x45d577[_0x944d('0x45')]['id']},'attributes':['id',_0x944d('0x9d'),_0x944d('0x9e'),_0x944d('0x9f'),_0x944d('0xa0'),_0x944d('0xa1')]})[_0x944d('0x25')](handleEntityNotFound(_0x127d86,null))[_0x944d('0x25')](function(_0x4073f6){if(_0x4073f6){_0x3a2372=_0x4073f6[_0x944d('0xa0')];var _0x2f0be5=_0x3a2372[_0x944d('0xa2')](-0x1);if(_0x2f0be5==='/'){_0x3a2372=_0x3a2372[_0x944d('0xa3')](0x0,_0x3a2372[_0x944d('0xa4')](_0x2f0be5));}_0x48b6a8=util[_0x944d('0xa5')]('%s/api/now/doc/table/schema/',_0x3a2372);_0x5cea6e=util[_0x944d('0xa5')]('%s/api/now/table/',_0x3a2372);_0x7806b8={'user':_0x4073f6[_0x944d('0x9d')],'pass':_0x4073f6[_0x944d('0x9e')]};var _0x25dfdf={'method':_0x944d('0xa6'),'uri':_0x48b6a8+_0x944d('0xa7'),'auth':_0x7806b8,'json':!![]};return rp(_0x25dfdf);}})[_0x944d('0x25')](function(_0x3b9fe7){if(_0x3b9fe7[_0x944d('0xa8')][_0x944d('0x38')]>0x0){_0x40e46f=_0x3b9fe7[_0x944d('0xa8')];}console[_0x944d('0xa9')](_0x944d('0xaa'),_0x40e46f);_0x299ab2=[];_0x5d06a2=Object[_0x944d('0xab')]([],_0x40e46f);_[_0x944d('0xac')](_0x5d06a2,function(_0x4b7ffb){return!_0x11189b[_0x944d('0xad')](_0x4b7ffb['name']);});_0x5d06a2[_0x944d('0xae')](function(_0x1baa9b){var _0x49a6ef=createFieldObject(_0x5cea6e,_0x7806b8,_0x1baa9b[_0x944d('0xaf')],_0x1baa9b['name'],_0x1baa9b['label'],![]);_0x299ab2['push'](_0x49a6ef);});return Promise[_0x944d('0xb0')](_0x299ab2);})[_0x944d('0x25')](function(_0x32493f){_0x364b9f=_0x32493f;_0x2e2c14=Object[_0x944d('0xab')]([],_0x40e46f);console['log']('TCL:\x20_object',_0x40e46f);_[_0x944d('0xac')](_0x2e2c14,function(_0x30bec3){return _0x5dd061[_0x944d('0xad')](_0x30bec3[_0x944d('0x29')]);});console[_0x944d('0xa9')](_0x944d('0xb1'),_0x2e2c14);_0x299ab2=[];_0x2e2c14['forEach'](function(_0x2c58d0){var _0x4aba7f=createFieldObject(_0x5cea6e,_0x7806b8,_0x2c58d0[_0x944d('0xaf')],_0x2c58d0[_0x944d('0x29')],_0x2c58d0[_0x944d('0xb2')],!![]);_0x299ab2[_0x944d('0xb3')](_0x4aba7f);});return Promise['all'](_0x299ab2);})[_0x944d('0x25')](function(_0x27f18b){_0x1ee1ff=_0x27f18b;var _0x3e4a39=_0x364b9f[_0x944d('0xb4')](_0x1ee1ff);return{'count':_0x3e4a39[_0x944d('0x38')],'rows':_0x3e4a39};})[_0x944d('0x25')](respondWithResult(_0x127d86,null))[_0x944d('0x48')](function(_0x42b3a4){console[_0x944d('0xa9')](_0x944d('0xb5')+_0x42b3a4);var _0x257c68=_0x45d577['query'][_0x944d('0xb6')]?0x1f4:_0x42b3a4[_0x944d('0xb7')]||0x1f4;logger[_0x944d('0x27')](_0x42b3a4['stack']);delete _0x42b3a4['name'];if(_0x257c68===0x191){_0x257c68=0x190;}_0x127d86[_0x944d('0x19')](_0x257c68)[_0x944d('0xb8')](_0x45d577['query'][_0x944d('0xb6')]?{'message':_0x944d('0xb9'),'statusCode':_0x42b3a4[_0x944d('0xb7')]}:_0x42b3a4);});};function createFieldObject(_0x406fa4,_0x36950a,_0x287a7a,_0x17362d,_0xd6cbc7,_0x1a4a1f){return new Promise(function(_0x12343c,_0x598ff0){var _0x3658fa={'id':_0x17362d,'name':_0xd6cbc7,'custom':_0x1a4a1f};if(_0x287a7a===_0x944d('0xba')){_0x3658fa['options']=[{'name':_0x944d('0xbb'),'value':_0x944d('0xbc')},{'name':'False','value':'false'}];_0x12343c(_0x3658fa);}else{var _0x366435={'method':_0x944d('0xa6'),'uri':_0x406fa4+'sys_choice?sysparm_query=name=incident^element='+_0x17362d,'auth':_0x36950a,'json':!![]};return rp(_0x366435)[_0x944d('0x25')](function(_0xe92568){var _0x58acf0=[];if(_0xe92568[_0x944d('0xa8')][_0x944d('0x38')]>0x0){_0xe92568[_0x944d('0xa8')][_0x944d('0xae')](function(_0x3fff16){if(_0x3fff16['inactive']===_0x944d('0xbd')){var _0xd7ca8c={'name':_0x3fff16[_0x944d('0xb2')],'value':_0x3fff16[_0x944d('0xbe')]};_0x58acf0[_0x944d('0xb3')](_0xd7ca8c);}});}_0x3658fa['options']=_0x58acf0;if(_0x3658fa[_0x944d('0x41')]['length']>0x0){_0x12343c(_0x3658fa);}else{if(_0x1a4a1f==![]){_0x12343c();}else{_0x12343c(_0x3658fa);}}});}});}
\ No newline at end of file
+var _0xd8bb=['update','destroy','then','error','stack','name','send','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','map','options','ServicenowAccount','rows','catch','show','params','includeAll','include','find','create','body','getConfigurations','findOne','ServicenowConfiguration','order','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ServicenowField','made_sla','hold_reason','knowledge','subcategory','close_code','notify','incident_state','category','parent','watch_list','upon_reject','sys_updated_on','child_incidents','resolved_by','opened_by','user_input','sys_created_on','sys_domain','sys_created_by','calendar_stc','delivery_plan','impact','active','work_notes_list','business_service','priority','sys_domain_path','opened_at','business_duration','reopened_time','resolved_at','caller_id','approval_set','work_notes','short_description','correlation_display','delivery_task','work_start','assignment_group','additional_assignee_list','description','calendar_duration','sys_class_name','close_notes','closed_by','urgency','company','reassignment_count','assigned_to','severity','comments','sla_due','comments_and_work_notes','due_date','sys_mod_count','reopen_count','sys_tags','upon_approval','correlation_id','location','username','password','email','remoteUri','serverUrl','slice','%s/api/now/doc/table/schema/','GET','result','log','assign','remove','forEach','internalType','label','push','all','TCL:\x20_object','includes','concat','ServiceNow\x20error:\x20','test','Wrong\x20credentials','statusCode','True','true','sys_choice?sysparm_query=name=incident^element=','inactive','value','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','util','path','ejs','lodash','squel','jsforce','desk.js','querystring','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','reject','save'];(function(_0x4a8e82,_0x4c53c1){var _0x3ba3e6=function(_0x1b5c59){while(--_0x1b5c59){_0x4a8e82['push'](_0x4a8e82['shift']());}};_0x3ba3e6(++_0x4c53c1);}(_0xd8bb,0x1e1));var _0xbd8b=function(_0x2e8c98,_0x5c10cc){_0x2e8c98=_0x2e8c98-0x0;var _0x31b0cd=_0xd8bb[_0x2e8c98];return _0x31b0cd;};'use strict';var emlformat=require(_0xbd8b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbd8b('0x1'));var jsonpatch=require(_0xbd8b('0x2'));var rp=require(_0xbd8b('0x3'));var moment=require('moment');var BPromise=require(_0xbd8b('0x4'));var Mustache=require('mustache');var util=require(_0xbd8b('0x5'));var path=require(_0xbd8b('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xbd8b('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbd8b('0x8'));var squel=require(_0xbd8b('0x9'));var crypto=require('crypto');var jsforce=require(_0xbd8b('0xa'));var deskjs=require(_0xbd8b('0xb'));var toCsv=require('to-csv');var querystring=require(_0xbd8b('0xc'));var Papa=require('papaparse');var Redis=require(_0xbd8b('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbd8b('0xe'));var logger=require(_0xbd8b('0xf'))(_0xbd8b('0x10'));var utils=require(_0xbd8b('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0xbd8b('0x12'));var db=require(_0xbd8b('0x13'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x4f701c,_0x1d12ad){_0x1d12ad=_0x1d12ad||0xcc;return function(_0x47db88){if(_0x47db88){return _0x4f701c[_0xbd8b('0x14')](_0x1d12ad);}return _0x4f701c[_0xbd8b('0x15')](_0x1d12ad)[_0xbd8b('0x16')]();};}function respondWithResult(_0xbc7d99,_0x1c5ae0){_0x1c5ae0=_0x1c5ae0||0xc8;return function(_0x213907){if(_0x213907){return _0xbc7d99[_0xbd8b('0x15')](_0x1c5ae0)['json'](_0x213907);}};}function respondWithFilteredResult(_0xd357dc,_0x5dcdb8){return function(_0x22c292){if(_0x22c292){var _0x17372d=typeof _0x5dcdb8[_0xbd8b('0x17')]==='undefined'&&typeof _0x5dcdb8[_0xbd8b('0x18')]===_0xbd8b('0x19');var _0x2d1baf=_0x22c292[_0xbd8b('0x1a')];var _0x492e34=_0x17372d?0x0:_0x5dcdb8[_0xbd8b('0x17')];var _0x4a7ab4=_0x17372d?_0x22c292[_0xbd8b('0x1a')]:_0x5dcdb8[_0xbd8b('0x17')]+_0x5dcdb8[_0xbd8b('0x18')];var _0x49c8bd;if(_0x4a7ab4>=_0x2d1baf){_0x4a7ab4=_0x2d1baf;_0x49c8bd=0xc8;}else{_0x49c8bd=0xce;}_0xd357dc[_0xbd8b('0x15')](_0x49c8bd);return _0xd357dc[_0xbd8b('0x1b')](_0xbd8b('0x1c'),_0x492e34+'-'+_0x4a7ab4+'/'+_0x2d1baf)[_0xbd8b('0x1d')](_0x22c292);}return null;};}function patchUpdates(_0x2ccdc0){return function(_0x52e8b6){try{jsonpatch['apply'](_0x52e8b6,_0x2ccdc0,!![]);}catch(_0x48c822){return BPromise[_0xbd8b('0x1e')](_0x48c822);}return _0x52e8b6[_0xbd8b('0x1f')]();};}function saveUpdates(_0x2defe6,_0x5e9d61){return function(_0xfed733){if(_0xfed733){return _0xfed733[_0xbd8b('0x20')](_0x2defe6)['then'](function(_0x40b7a5){return _0x40b7a5;});}return null;};}function removeEntity(_0x514404,_0x27deae){return function(_0x4a8849){if(_0x4a8849){return _0x4a8849[_0xbd8b('0x21')]()[_0xbd8b('0x22')](function(){_0x514404[_0xbd8b('0x15')](0xcc)[_0xbd8b('0x16')]();});}};}function handleEntityNotFound(_0x18ffbd,_0x3769fa){return function(_0x1b9fb8){if(!_0x1b9fb8){_0x18ffbd[_0xbd8b('0x14')](0x194);}return _0x1b9fb8;};}function handleError(_0x9dd1af,_0x5889a2){_0x5889a2=_0x5889a2||0x1f4;return function(_0x1ba97e){logger[_0xbd8b('0x23')](_0x1ba97e[_0xbd8b('0x24')]);if(_0x1ba97e[_0xbd8b('0x25')]){delete _0x1ba97e[_0xbd8b('0x25')];}_0x9dd1af['status'](_0x5889a2)[_0xbd8b('0x26')](_0x1ba97e);};}exports['index']=function(_0x1d9c28,_0xad1958){var _0x4d11a1={},_0x1a7a41={},_0x564569={'count':0x0,'rows':[]};var _0x1f439a=_['map'](db['ServicenowAccount'][_0xbd8b('0x27')],function(_0x5827d4){return{'name':_0x5827d4[_0xbd8b('0x28')],'type':_0x5827d4[_0xbd8b('0x29')][_0xbd8b('0x2a')]};});_0x1a7a41[_0xbd8b('0x2b')]=_['map'](_0x1f439a,_0xbd8b('0x25'));_0x1a7a41[_0xbd8b('0x2c')]=_[_0xbd8b('0x2d')](_0x1d9c28['query']);_0x1a7a41['filters']=_[_0xbd8b('0x2e')](_0x1a7a41['model'],_0x1a7a41[_0xbd8b('0x2c')]);_0x4d11a1['attributes']=_['intersection'](_0x1a7a41['model'],qs[_0xbd8b('0x2f')](_0x1d9c28[_0xbd8b('0x2c')][_0xbd8b('0x2f')]));_0x4d11a1[_0xbd8b('0x30')]=_0x4d11a1[_0xbd8b('0x30')][_0xbd8b('0x31')]?_0x4d11a1[_0xbd8b('0x30')]:_0x1a7a41[_0xbd8b('0x2b')];if(!_0x1d9c28[_0xbd8b('0x2c')][_0xbd8b('0x32')](_0xbd8b('0x33'))){_0x4d11a1[_0xbd8b('0x18')]=qs['limit'](_0x1d9c28['query']['limit']);_0x4d11a1['offset']=qs['offset'](_0x1d9c28[_0xbd8b('0x2c')][_0xbd8b('0x17')]);}_0x4d11a1['order']=qs[_0xbd8b('0x34')](_0x1d9c28[_0xbd8b('0x2c')][_0xbd8b('0x34')]);_0x4d11a1[_0xbd8b('0x35')]=qs[_0xbd8b('0x36')](_[_0xbd8b('0x37')](_0x1d9c28['query'],_0x1a7a41[_0xbd8b('0x36')]),_0x1f439a);if(_0x1d9c28['query'][_0xbd8b('0x38')]){_0x4d11a1[_0xbd8b('0x35')]=_[_0xbd8b('0x39')](_0x4d11a1[_0xbd8b('0x35')],{'$or':_[_0xbd8b('0x3a')](_0x1f439a,function(_0x4a9221){if(_0x4a9221['type']!=='VIRTUAL'){var _0x38786e={};_0x38786e[_0x4a9221[_0xbd8b('0x25')]]={'$like':'%'+_0x1d9c28[_0xbd8b('0x2c')][_0xbd8b('0x38')]+'%'};return _0x38786e;}})});}_0x4d11a1=_[_0xbd8b('0x39')]({},_0x4d11a1,_0x1d9c28[_0xbd8b('0x3b')]);var _0x3eed8b={'where':_0x4d11a1[_0xbd8b('0x35')]};return db[_0xbd8b('0x3c')][_0xbd8b('0x1a')](_0x3eed8b)[_0xbd8b('0x22')](function(_0x2903e){_0x564569[_0xbd8b('0x1a')]=_0x2903e;if(_0x1d9c28[_0xbd8b('0x2c')]['includeAll']){_0x4d11a1['include']=[{'all':!![]}];}return db[_0xbd8b('0x3c')]['findAll'](_0x4d11a1);})['then'](function(_0x1fdfa9){_0x564569[_0xbd8b('0x3d')]=_0x1fdfa9;return _0x564569;})['then'](respondWithFilteredResult(_0xad1958,_0x4d11a1))[_0xbd8b('0x3e')](handleError(_0xad1958,null));};exports[_0xbd8b('0x3f')]=function(_0x59da53,_0x55771f){var _0x46d8f2={'raw':![],'where':{'id':_0x59da53[_0xbd8b('0x40')]['id']}},_0x126c73={};_0x126c73['model']=_['keys'](db['ServicenowAccount'][_0xbd8b('0x27')]);_0x126c73[_0xbd8b('0x2c')]=_[_0xbd8b('0x2d')](_0x59da53[_0xbd8b('0x2c')]);_0x126c73['filters']=_[_0xbd8b('0x2e')](_0x126c73['model'],_0x126c73[_0xbd8b('0x2c')]);_0x46d8f2[_0xbd8b('0x30')]=_[_0xbd8b('0x2e')](_0x126c73[_0xbd8b('0x2b')],qs[_0xbd8b('0x2f')](_0x59da53[_0xbd8b('0x2c')][_0xbd8b('0x2f')]));_0x46d8f2[_0xbd8b('0x30')]=_0x46d8f2[_0xbd8b('0x30')][_0xbd8b('0x31')]?_0x46d8f2[_0xbd8b('0x30')]:_0x126c73[_0xbd8b('0x2b')];if(_0x59da53[_0xbd8b('0x2c')][_0xbd8b('0x41')]){_0x46d8f2[_0xbd8b('0x42')]=[{'all':!![]}];}_0x46d8f2=_['merge']({},_0x46d8f2,_0x59da53[_0xbd8b('0x3b')]);return db[_0xbd8b('0x3c')][_0xbd8b('0x43')](_0x46d8f2)[_0xbd8b('0x22')](handleEntityNotFound(_0x55771f,null))[_0xbd8b('0x22')](respondWithResult(_0x55771f,null))['catch'](handleError(_0x55771f,null));};exports[_0xbd8b('0x44')]=function(_0x2140c8,_0x21a9f2){return db[_0xbd8b('0x3c')][_0xbd8b('0x44')](_0x2140c8[_0xbd8b('0x45')],{})[_0xbd8b('0x22')](respondWithResult(_0x21a9f2,0xc9))['catch'](handleError(_0x21a9f2,null));};exports[_0xbd8b('0x20')]=function(_0x23f70e,_0x12ab5c){if(_0x23f70e[_0xbd8b('0x45')]['id']){delete _0x23f70e['body']['id'];}return db[_0xbd8b('0x3c')][_0xbd8b('0x43')]({'where':{'id':_0x23f70e[_0xbd8b('0x40')]['id']}})[_0xbd8b('0x22')](handleEntityNotFound(_0x12ab5c,null))[_0xbd8b('0x22')](saveUpdates(_0x23f70e[_0xbd8b('0x45')],null))[_0xbd8b('0x22')](respondWithResult(_0x12ab5c,null))[_0xbd8b('0x3e')](handleError(_0x12ab5c,null));};exports[_0xbd8b('0x21')]=function(_0x4935dd,_0x4eb4a3){return db['ServicenowAccount']['find']({'where':{'id':_0x4935dd[_0xbd8b('0x40')]['id']}})[_0xbd8b('0x22')](handleEntityNotFound(_0x4eb4a3,null))[_0xbd8b('0x22')](removeEntity(_0x4eb4a3,null))['catch'](handleError(_0x4eb4a3,null));};exports[_0xbd8b('0x46')]=function(_0x28f254,_0x388b5f,_0x3507a1){var _0x29cfb9={};var _0x32b8a2={};var _0x8b2fac;var _0x751b54;return db[_0xbd8b('0x3c')][_0xbd8b('0x47')]({'where':{'id':_0x28f254['params']['id']}})[_0xbd8b('0x22')](handleEntityNotFound(_0x388b5f,null))[_0xbd8b('0x22')](function(_0x1d8fbf){if(_0x1d8fbf){_0x8b2fac=_0x1d8fbf;_0x32b8a2[_0xbd8b('0x2b')]=_['keys'](db[_0xbd8b('0x48')][_0xbd8b('0x27')]);_0x32b8a2[_0xbd8b('0x2c')]=_[_0xbd8b('0x2d')](_0x28f254[_0xbd8b('0x2c')]);_0x32b8a2['filters']=_[_0xbd8b('0x2e')](_0x32b8a2[_0xbd8b('0x2b')],_0x32b8a2[_0xbd8b('0x2c')]);_0x29cfb9[_0xbd8b('0x30')]=_['intersection'](_0x32b8a2['model'],qs['fields'](_0x28f254['query'][_0xbd8b('0x2f')]));_0x29cfb9[_0xbd8b('0x30')]=_0x29cfb9['attributes'][_0xbd8b('0x31')]?_0x29cfb9['attributes']:_0x32b8a2[_0xbd8b('0x2b')];_0x29cfb9[_0xbd8b('0x49')]=qs['sort'](_0x28f254[_0xbd8b('0x2c')][_0xbd8b('0x34')]);_0x29cfb9[_0xbd8b('0x35')]=qs[_0xbd8b('0x36')](_['pick'](_0x28f254['query'],_0x32b8a2[_0xbd8b('0x36')]));if(_0x28f254[_0xbd8b('0x2c')][_0xbd8b('0x38')]){_0x29cfb9['where']=_[_0xbd8b('0x39')](_0x29cfb9[_0xbd8b('0x35')],{'$or':_['map'](_0x29cfb9['attributes'],function(_0x4f3070){var _0x13ab37={};_0x13ab37[_0x4f3070]={'$like':'%'+_0x28f254[_0xbd8b('0x2c')]['filter']+'%'};return _0x13ab37;})});}_0x29cfb9=_[_0xbd8b('0x39')]({},_0x29cfb9,_0x28f254[_0xbd8b('0x3b')]);return _0x8b2fac['getConfigurations'](_0x29cfb9);}})[_0xbd8b('0x22')](function(_0x131cd4){if(_0x131cd4){_0x751b54=_0x131cd4[_0xbd8b('0x31')];if(!_0x28f254['query']['hasOwnProperty'](_0xbd8b('0x33'))){_0x29cfb9[_0xbd8b('0x18')]=qs['limit'](_0x28f254['query'][_0xbd8b('0x18')]);_0x29cfb9[_0xbd8b('0x17')]=qs['offset'](_0x28f254['query'][_0xbd8b('0x17')]);}return _0x8b2fac['getConfigurations'](_0x29cfb9);}})[_0xbd8b('0x22')](function(_0x4b11ab){if(_0x4b11ab){return _0x4b11ab?{'count':_0x751b54,'rows':_0x4b11ab}:null;}})[_0xbd8b('0x22')](respondWithResult(_0x388b5f,null))[_0xbd8b('0x3e')](handleError(_0x388b5f,null));};exports[_0xbd8b('0x4a')]=function(_0xda8017,_0xaa2f77,_0x3eea52){if(_0xda8017[_0xbd8b('0x45')]['id']){delete _0xda8017[_0xbd8b('0x45')]['id'];}return db['ServicenowAccount']['findOne']({'where':{'id':_0xda8017['params']['id']}})['then'](handleEntityNotFound(_0xaa2f77,null))[_0xbd8b('0x22')](function(_0x4993e1){if(_0x4993e1){_0xda8017['body'][_0xbd8b('0x4b')]=_0x4993e1['id'];_0xda8017[_0xbd8b('0x45')][_0xbd8b('0x4c')]=integrations[_0xbd8b('0x4d')](_0xda8017[_0xbd8b('0x45')][_0xbd8b('0x4e')],_0xda8017[_0xbd8b('0x45')][_0xbd8b('0x29')]);_0xda8017[_0xbd8b('0x45')][_0xbd8b('0x4f')]=integrations[_0xbd8b('0x50')](_0xda8017[_0xbd8b('0x45')][_0xbd8b('0x4e')],_0xda8017['body'][_0xbd8b('0x29')]);return db[_0xbd8b('0x48')]['create'](_0xda8017[_0xbd8b('0x45')],{'include':[{'model':db[_0xbd8b('0x51')],'as':_0xbd8b('0x4c')},{'model':db[_0xbd8b('0x51')],'as':_0xbd8b('0x4f')}]});}return null;})[_0xbd8b('0x22')](respondWithResult(_0xaa2f77,null))[_0xbd8b('0x3e')](handleError(_0xaa2f77,null));};exports['getFields']=function(_0x3cda07,_0x4f15da,_0x385946){var _0x37165a=[_0xbd8b('0x52'),_0xbd8b('0x53'),_0xbd8b('0x54'),_0xbd8b('0x55'),_0xbd8b('0x56'),_0xbd8b('0x57'),_0xbd8b('0x58'),'severity',_0xbd8b('0x59')];var _0x261095=[_0xbd8b('0x5a'),_0xbd8b('0x52'),'caused_by',_0xbd8b('0x5b'),_0xbd8b('0x5c'),_0xbd8b('0x5d'),_0xbd8b('0x5e'),_0xbd8b('0x53'),'approval_history','number',_0xbd8b('0x5f'),'sys_updated_by',_0xbd8b('0x60'),_0xbd8b('0x61'),_0xbd8b('0x62'),_0xbd8b('0x63'),'state',_0xbd8b('0x64'),_0xbd8b('0x54'),_0xbd8b('0x49'),_0xbd8b('0x65'),'closed_at','cmdb_ci',_0xbd8b('0x66'),_0xbd8b('0x67'),_0xbd8b('0x68'),_0xbd8b('0x69'),_0xbd8b('0x6a'),_0xbd8b('0x6b'),_0xbd8b('0x6c'),'rfc','time_worked','expected_start',_0xbd8b('0x6d'),_0xbd8b('0x6e'),'group_list','work_end',_0xbd8b('0x6f'),_0xbd8b('0x70'),_0xbd8b('0x71'),_0xbd8b('0x72'),'subcategory',_0xbd8b('0x73'),_0xbd8b('0x74'),_0xbd8b('0x56'),_0xbd8b('0x75'),_0xbd8b('0x76'),_0xbd8b('0x77'),_0xbd8b('0x78'),'business_stc',_0xbd8b('0x79'),_0xbd8b('0x7a'),_0xbd8b('0x7b'),_0xbd8b('0x57'),_0xbd8b('0x7c'),_0xbd8b('0x7d'),_0xbd8b('0x7e'),'follow_up','parent_incident','sys_id','contact_type','reopened_by',_0xbd8b('0x58'),_0xbd8b('0x7f'),'problem_id',_0xbd8b('0x80'),_0xbd8b('0x81'),'activity_due',_0xbd8b('0x82'),_0xbd8b('0x83'),_0xbd8b('0x84'),_0xbd8b('0x85'),'approval',_0xbd8b('0x86'),_0xbd8b('0x87'),_0xbd8b('0x88'),_0xbd8b('0x89'),_0xbd8b('0x8a'),'escalation',_0xbd8b('0x8b'),_0xbd8b('0x8c'),_0xbd8b('0x8d'),_0xbd8b('0x59')];var _0x54328c='';var _0x53b0d7='';var _0x442409=[];var _0x4210f1='';var _0x465ffa='';var _0x58d36e=[];var _0x3146c5='';var _0x52e7dc='';var _0x2ecb5f={};var _0x277366='';return db['ServicenowAccount'][_0xbd8b('0x47')]({'where':{'id':_0x3cda07[_0xbd8b('0x40')]['id']},'attributes':['id',_0xbd8b('0x8e'),_0xbd8b('0x8f'),_0xbd8b('0x90'),_0xbd8b('0x91'),_0xbd8b('0x92')]})[_0xbd8b('0x22')](handleEntityNotFound(_0x4f15da,null))['then'](function(_0xc53640){if(_0xc53640){_0x277366=_0xc53640['remoteUri'];var _0xcde231=_0x277366[_0xbd8b('0x93')](-0x1);if(_0xcde231==='/'){_0x277366=_0x277366['substring'](0x0,_0x277366['lastIndexOf'](_0xcde231));}_0x52e7dc=util['format'](_0xbd8b('0x94'),_0x277366);_0x3146c5=util['format']('%s/api/now/table/',_0x277366);_0x2ecb5f={'user':_0xc53640[_0xbd8b('0x8e')],'pass':_0xc53640[_0xbd8b('0x8f')]};var _0x3d3417={'method':_0xbd8b('0x95'),'uri':_0x52e7dc+'incident?sysparm_display_value=all','auth':_0x2ecb5f,'json':!![]};return rp(_0x3d3417);}})[_0xbd8b('0x22')](function(_0x2b610a){if(_0x2b610a[_0xbd8b('0x96')][_0xbd8b('0x31')]>0x0){_0x54328c=_0x2b610a[_0xbd8b('0x96')];}console[_0xbd8b('0x97')]('incident\x20table\x20objects',_0x54328c);_0x58d36e=[];_0x53b0d7=Object[_0xbd8b('0x98')]([],_0x54328c);_[_0xbd8b('0x99')](_0x53b0d7,function(_0x6904ad){return!_0x37165a['includes'](_0x6904ad[_0xbd8b('0x25')]);});_0x53b0d7[_0xbd8b('0x9a')](function(_0x15b6fd){var _0x1f1fdb=createFieldObject(_0x3146c5,_0x2ecb5f,_0x15b6fd[_0xbd8b('0x9b')],_0x15b6fd['name'],_0x15b6fd[_0xbd8b('0x9c')],![]);_0x58d36e[_0xbd8b('0x9d')](_0x1f1fdb);});return Promise[_0xbd8b('0x9e')](_0x58d36e);})[_0xbd8b('0x22')](function(_0x4984c3){_0x442409=_0x4984c3;_0x4210f1=Object[_0xbd8b('0x98')]([],_0x54328c);console[_0xbd8b('0x97')](_0xbd8b('0x9f'),_0x54328c);_[_0xbd8b('0x99')](_0x4210f1,function(_0x33832d){return _0x261095[_0xbd8b('0xa0')](_0x33832d[_0xbd8b('0x25')]);});console[_0xbd8b('0x97')]('TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom',_0x4210f1);_0x58d36e=[];_0x4210f1[_0xbd8b('0x9a')](function(_0x7d7997){var _0x53e7a9=createFieldObject(_0x3146c5,_0x2ecb5f,_0x7d7997['internalType'],_0x7d7997[_0xbd8b('0x25')],_0x7d7997['label'],!![]);_0x58d36e[_0xbd8b('0x9d')](_0x53e7a9);});return Promise[_0xbd8b('0x9e')](_0x58d36e);})[_0xbd8b('0x22')](function(_0x47c10b){_0x465ffa=_0x47c10b;var _0x528e34=_0x442409[_0xbd8b('0xa1')](_0x465ffa);return{'count':_0x528e34[_0xbd8b('0x31')],'rows':_0x528e34};})[_0xbd8b('0x22')](respondWithResult(_0x4f15da,null))[_0xbd8b('0x3e')](function(_0x2a393b){console['log'](_0xbd8b('0xa2')+_0x2a393b);var _0x31c502=_0x3cda07[_0xbd8b('0x2c')][_0xbd8b('0xa3')]?0x1f4:_0x2a393b['statusCode']||0x1f4;logger['error'](_0x2a393b[_0xbd8b('0x24')]);delete _0x2a393b['name'];if(_0x31c502===0x191){_0x31c502=0x190;}_0x4f15da['status'](_0x31c502)[_0xbd8b('0x26')](_0x3cda07[_0xbd8b('0x2c')]['test']?{'message':_0xbd8b('0xa4'),'statusCode':_0x2a393b[_0xbd8b('0xa5')]}:_0x2a393b);});};function createFieldObject(_0x13e0ff,_0x583304,_0x4fe912,_0x25865d,_0x266862,_0x1a3999){return new Promise(function(_0x593692,_0x5de5d4){var _0xff645a={'id':_0x25865d,'name':_0x266862,'custom':_0x1a3999};if(_0x4fe912==='boolean'){_0xff645a[_0xbd8b('0x3b')]=[{'name':_0xbd8b('0xa6'),'value':_0xbd8b('0xa7')},{'name':'False','value':'false'}];_0x593692(_0xff645a);}else{var _0x1a45fe={'method':_0xbd8b('0x95'),'uri':_0x13e0ff+_0xbd8b('0xa8')+_0x25865d,'auth':_0x583304,'json':!![]};return rp(_0x1a45fe)[_0xbd8b('0x22')](function(_0x3f6498){var _0x580ddb=[];if(_0x3f6498['result'][_0xbd8b('0x31')]>0x0){_0x3f6498[_0xbd8b('0x96')][_0xbd8b('0x9a')](function(_0x53802f){if(_0x53802f[_0xbd8b('0xa9')]==='false'){var _0x3fd35b={'name':_0x53802f['label'],'value':_0x53802f[_0xbd8b('0xaa')]};_0x580ddb['push'](_0x3fd35b);}});}_0xff645a['options']=_0x580ddb;if(_0xff645a[_0xbd8b('0x3b')]['length']>0x0){_0x593692(_0xff645a);}else{if(_0x1a3999==![]){_0x593692();}else{_0x593692(_0xff645a);}}});}});}
\ No newline at end of file
index 4bcb403..f316d34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x687b=['./intServicenowAccount.attributes','../../components/integrations/configuration','exports','define','int_servicenow_accounts','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment'];(function(_0x1a5433,_0x5e6eef){var _0x4d003b=function(_0x24b797){while(--_0x24b797){_0x1a5433['push'](_0x1a5433['shift']());}};_0x4d003b(++_0x5e6eef);}(_0x687b,0x14a));var _0xb687=function(_0x55b087,_0x2e94fa){_0x55b087=_0x55b087-0x0;var _0x583d66=_0x687b[_0x55b087];return _0x583d66;};'use strict';var _=require(_0xb687('0x0'));var util=require(_0xb687('0x1'));var logger=require(_0xb687('0x2'))(_0xb687('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xb687('0x4'));var fs=require('fs');var path=require(_0xb687('0x5'));var rimraf=require(_0xb687('0x6'));var config=require(_0xb687('0x7'));var attributes=require(_0xb687('0x8'));var integrations=require(_0xb687('0x9'));module[_0xb687('0xa')]=function(_0xf43a1f,_0x47ffea){return _0xf43a1f[_0xb687('0xb')]('ServicenowAccount',attributes,{'tableName':_0xb687('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x31f0=['./intServicenowAccount.attributes','ServicenowAccount','int_servicenow_accounts','lodash','../../config/logger','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x575bf0,_0x3ca9cb){var _0x32bc42=function(_0x3d8b71){while(--_0x3d8b71){_0x575bf0['push'](_0x575bf0['shift']());}};_0x32bc42(++_0x3ca9cb);}(_0x31f0,0xb7));var _0x031f=function(_0x43d14f,_0x51cfa0){_0x43d14f=_0x43d14f-0x0;var _0x1abcb9=_0x31f0[_0x43d14f];return _0x1abcb9;};'use strict';var _=require(_0x031f('0x0'));var util=require('util');var logger=require(_0x031f('0x1'))('api');var moment=require(_0x031f('0x2'));var BPromise=require(_0x031f('0x3'));var rp=require(_0x031f('0x4'));var fs=require('fs');var path=require(_0x031f('0x5'));var rimraf=require('rimraf');var config=require(_0x031f('0x6'));var attributes=require(_0x031f('0x7'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x56328c,_0x3dc98e){return _0x56328c['define'](_0x031f('0x8'),attributes,{'tableName':_0x031f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f80cd08..5200288 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29e1=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetServicenowAccount','ServicenowAccount','findAll','options','raw','attributes','limit','map','include','model','stringify','ShowServicenowAccount','find','where','lodash','util'];(function(_0x5447fd,_0x52a6b5){var _0x15b28a=function(_0x370d4f){while(--_0x370d4f){_0x5447fd['push'](_0x5447fd['shift']());}};_0x15b28a(++_0x52a6b5);}(_0x29e1,0x195));var _0x129e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x29e1[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x129e('0x0'));var util=require(_0x129e('0x1'));var moment=require(_0x129e('0x2'));var BPromise=require(_0x129e('0x3'));var rs=require(_0x129e('0x4'));var fs=require('fs');var Redis=require(_0x129e('0x5'));var db=require(_0x129e('0x6'))['db'];var utils=require(_0x129e('0x7'));var logger=require(_0x129e('0x8'))(_0x129e('0x9'));var config=require('../../config/environment');var jayson=require(_0x129e('0xa'));var client=jayson['client'][_0x129e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1623b5,_0x37784e,_0x5d2600){return new BPromise(function(_0x27b9aa,_0x1be098){return client[_0x129e('0xc')](_0x1623b5,_0x5d2600)[_0x129e('0xd')](function(_0xbee167){logger[_0x129e('0xe')](_0x129e('0xf'),_0x37784e,_0x129e('0x10'));logger[_0x129e('0x11')](_0x129e('0x12'),_0x37784e,_0x129e('0x10'),JSON['stringify'](_0xbee167));if(_0xbee167['error']){if(_0xbee167[_0x129e('0x13')][_0x129e('0x14')]===0x1f4){logger[_0x129e('0x13')](_0x129e('0xf'),_0x37784e,_0xbee167[_0x129e('0x13')][_0x129e('0x15')]);return _0x1be098(_0xbee167[_0x129e('0x13')][_0x129e('0x15')]);}logger[_0x129e('0x13')](_0x129e('0xf'),_0x37784e,_0xbee167[_0x129e('0x13')][_0x129e('0x15')]);return _0x27b9aa(_0xbee167[_0x129e('0x13')][_0x129e('0x15')]);}else{logger[_0x129e('0xe')]('ServicenowAccount,\x20%s,\x20%s',_0x37784e,'request\x20sent');_0x27b9aa(_0xbee167['result'][_0x129e('0x15')]);}})[_0x129e('0x16')](function(_0x2e31f4){logger[_0x129e('0x13')]('ServicenowAccount,\x20%s,\x20%s',_0x37784e,_0x2e31f4);_0x1be098(_0x2e31f4);});});}exports[_0x129e('0x17')]=function(_0x4715c7){var _0x59960d=this;return new Promise(function(_0x3544a,_0x2113fe){return db[_0x129e('0x18')][_0x129e('0x19')]({'raw':_0x4715c7[_0x129e('0x1a')]?_0x4715c7['options'][_0x129e('0x1b')]===undefined?!![]:![]:!![],'where':_0x4715c7['options']?_0x4715c7['options']['where']||null:null,'attributes':_0x4715c7[_0x129e('0x1a')]?_0x4715c7['options'][_0x129e('0x1c')]||null:null,'limit':_0x4715c7['options']?_0x4715c7[_0x129e('0x1a')][_0x129e('0x1d')]||null:null,'include':_0x4715c7['options']?_0x4715c7['options']['include']?_[_0x129e('0x1e')](_0x4715c7[_0x129e('0x1a')][_0x129e('0x1f')],function(_0x4a9765){return{'model':db[_0x4a9765[_0x129e('0x20')]],'as':_0x4a9765['as'],'attributes':_0x4a9765[_0x129e('0x1c')],'include':_0x4a9765[_0x129e('0x1f')]?_[_0x129e('0x1e')](_0x4a9765[_0x129e('0x1f')],function(_0x5b1a60){return{'model':db[_0x5b1a60[_0x129e('0x20')]],'as':_0x5b1a60['as'],'attributes':_0x5b1a60['attributes'],'include':_0x5b1a60[_0x129e('0x1f')]?_[_0x129e('0x1e')](_0x5b1a60[_0x129e('0x1f')],function(_0x37dcc5){return{'model':db[_0x37dcc5[_0x129e('0x20')]],'as':_0x37dcc5['as'],'attributes':_0x37dcc5[_0x129e('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x129e('0xd')](function(_0x5cc574){logger['info'](_0x129e('0x17'),_0x4715c7);logger['debug'](_0x129e('0x17'),_0x4715c7,JSON[_0x129e('0x21')](_0x5cc574));_0x3544a(_0x5cc574);})[_0x129e('0x16')](function(_0x48cd15){logger[_0x129e('0x13')]('GetServicenowAccount',_0x48cd15[_0x129e('0x15')],_0x4715c7);_0x2113fe(_0x59960d['error'](0x1f4,_0x48cd15[_0x129e('0x15')]));});});};exports[_0x129e('0x22')]=function(_0x14f1be){var _0x1cde7a=this;return new Promise(function(_0x3f6704,_0x1c56fc){return db[_0x129e('0x18')][_0x129e('0x23')]({'raw':_0x14f1be[_0x129e('0x1a')]?_0x14f1be[_0x129e('0x1a')][_0x129e('0x1b')]===undefined?!![]:![]:!![],'where':_0x14f1be[_0x129e('0x1a')]?_0x14f1be['options'][_0x129e('0x24')]||null:null,'attributes':_0x14f1be[_0x129e('0x1a')]?_0x14f1be['options'][_0x129e('0x1c')]||null:null,'include':_0x14f1be[_0x129e('0x1a')]?_0x14f1be[_0x129e('0x1a')][_0x129e('0x1f')]?_['map'](_0x14f1be[_0x129e('0x1a')][_0x129e('0x1f')],function(_0xdf5b7){return{'model':db[_0xdf5b7[_0x129e('0x20')]],'as':_0xdf5b7['as'],'attributes':_0xdf5b7[_0x129e('0x1c')],'include':_0xdf5b7['include']?_[_0x129e('0x1e')](_0xdf5b7[_0x129e('0x1f')],function(_0x262b83){return{'model':db[_0x262b83[_0x129e('0x20')]],'as':_0x262b83['as'],'attributes':_0x262b83[_0x129e('0x1c')],'include':_0x262b83['include']?_[_0x129e('0x1e')](_0x262b83['include'],function(_0x1bb2f7){return{'model':db[_0x1bb2f7['model']],'as':_0x1bb2f7['as'],'attributes':_0x1bb2f7['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x12aca3){logger['info'](_0x129e('0x22'),_0x14f1be);logger[_0x129e('0x11')](_0x129e('0x22'),_0x14f1be,JSON[_0x129e('0x21')](_0x12aca3));_0x3f6704(_0x12aca3);})[_0x129e('0x16')](function(_0xd75d32){logger[_0x129e('0x13')](_0x129e('0x22'),_0xd75d32[_0x129e('0x15')],_0x14f1be);_0x1c56fc(_0x1cde7a[_0x129e('0x13')](0x1f4,_0xd75d32['message']));});});};
\ No newline at end of file
+var _0xcaf1=['rpc','../../config/environment','jayson/promise','client','http','info','ServicenowAccount,\x20%s,\x20%s','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','GetServicenowAccount','ServicenowAccount','findAll','options','raw','attributes','limit','include','model','then','catch','find','map','ShowServicenowAccount','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x482438,_0x39c98e){var _0x538a04=function(_0x36b8d0){while(--_0x36b8d0){_0x482438['push'](_0x482438['shift']());}};_0x538a04(++_0x39c98e);}(_0xcaf1,0x89));var _0x1caf=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcaf1[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x1caf('0x0'));var moment=require(_0x1caf('0x1'));var BPromise=require(_0x1caf('0x2'));var rs=require(_0x1caf('0x3'));var fs=require('fs');var Redis=require(_0x1caf('0x4'));var db=require(_0x1caf('0x5'))['db'];var utils=require(_0x1caf('0x6'));var logger=require('../../config/logger')(_0x1caf('0x7'));var config=require(_0x1caf('0x8'));var jayson=require(_0x1caf('0x9'));var client=jayson[_0x1caf('0xa')][_0x1caf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1f0e2a,_0xde597c,_0x1f2cc9){return new BPromise(function(_0x11423a,_0x1c89a6){return client['request'](_0x1f0e2a,_0x1f2cc9)['then'](function(_0x388940){logger[_0x1caf('0xc')](_0x1caf('0xd'),_0xde597c,'request\x20sent');logger[_0x1caf('0xe')](_0x1caf('0xf'),_0xde597c,_0x1caf('0x10'),JSON[_0x1caf('0x11')](_0x388940));if(_0x388940[_0x1caf('0x12')]){if(_0x388940[_0x1caf('0x12')][_0x1caf('0x13')]===0x1f4){logger[_0x1caf('0x12')](_0x1caf('0xd'),_0xde597c,_0x388940['error'][_0x1caf('0x14')]);return _0x1c89a6(_0x388940[_0x1caf('0x12')]['message']);}logger['error'](_0x1caf('0xd'),_0xde597c,_0x388940[_0x1caf('0x12')][_0x1caf('0x14')]);return _0x11423a(_0x388940[_0x1caf('0x12')][_0x1caf('0x14')]);}else{logger[_0x1caf('0xc')](_0x1caf('0xd'),_0xde597c,'request\x20sent');_0x11423a(_0x388940[_0x1caf('0x15')][_0x1caf('0x14')]);}})['catch'](function(_0x4e54ec){logger['error'](_0x1caf('0xd'),_0xde597c,_0x4e54ec);_0x1c89a6(_0x4e54ec);});});}exports[_0x1caf('0x16')]=function(_0x28b648){var _0x5a2474=this;return new Promise(function(_0x36aa3a,_0x3b17bf){return db[_0x1caf('0x17')][_0x1caf('0x18')]({'raw':_0x28b648[_0x1caf('0x19')]?_0x28b648[_0x1caf('0x19')][_0x1caf('0x1a')]===undefined?!![]:![]:!![],'where':_0x28b648[_0x1caf('0x19')]?_0x28b648['options']['where']||null:null,'attributes':_0x28b648[_0x1caf('0x19')]?_0x28b648[_0x1caf('0x19')][_0x1caf('0x1b')]||null:null,'limit':_0x28b648[_0x1caf('0x19')]?_0x28b648[_0x1caf('0x19')][_0x1caf('0x1c')]||null:null,'include':_0x28b648[_0x1caf('0x19')]?_0x28b648['options'][_0x1caf('0x1d')]?_['map'](_0x28b648[_0x1caf('0x19')][_0x1caf('0x1d')],function(_0x54bcbd){return{'model':db[_0x54bcbd['model']],'as':_0x54bcbd['as'],'attributes':_0x54bcbd[_0x1caf('0x1b')],'include':_0x54bcbd[_0x1caf('0x1d')]?_['map'](_0x54bcbd[_0x1caf('0x1d')],function(_0x2405f6){return{'model':db[_0x2405f6[_0x1caf('0x1e')]],'as':_0x2405f6['as'],'attributes':_0x2405f6[_0x1caf('0x1b')],'include':_0x2405f6[_0x1caf('0x1d')]?_['map'](_0x2405f6[_0x1caf('0x1d')],function(_0x569296){return{'model':db[_0x569296['model']],'as':_0x569296['as'],'attributes':_0x569296['attributes']};}):[]};}):[]};}):[]:[]})[_0x1caf('0x1f')](function(_0x4ca1c6){logger[_0x1caf('0xc')](_0x1caf('0x16'),_0x28b648);logger['debug'](_0x1caf('0x16'),_0x28b648,JSON[_0x1caf('0x11')](_0x4ca1c6));_0x36aa3a(_0x4ca1c6);})[_0x1caf('0x20')](function(_0x4fc52f){logger['error'](_0x1caf('0x16'),_0x4fc52f[_0x1caf('0x14')],_0x28b648);_0x3b17bf(_0x5a2474[_0x1caf('0x12')](0x1f4,_0x4fc52f[_0x1caf('0x14')]));});});};exports['ShowServicenowAccount']=function(_0x2b7118){var _0x56f041=this;return new Promise(function(_0x3627d2,_0x39b21b){return db[_0x1caf('0x17')][_0x1caf('0x21')]({'raw':_0x2b7118[_0x1caf('0x19')]?_0x2b7118['options'][_0x1caf('0x1a')]===undefined?!![]:![]:!![],'where':_0x2b7118[_0x1caf('0x19')]?_0x2b7118[_0x1caf('0x19')]['where']||null:null,'attributes':_0x2b7118[_0x1caf('0x19')]?_0x2b7118[_0x1caf('0x19')][_0x1caf('0x1b')]||null:null,'include':_0x2b7118[_0x1caf('0x19')]?_0x2b7118[_0x1caf('0x19')][_0x1caf('0x1d')]?_[_0x1caf('0x22')](_0x2b7118[_0x1caf('0x19')][_0x1caf('0x1d')],function(_0x23a8fc){return{'model':db[_0x23a8fc[_0x1caf('0x1e')]],'as':_0x23a8fc['as'],'attributes':_0x23a8fc['attributes'],'include':_0x23a8fc['include']?_[_0x1caf('0x22')](_0x23a8fc[_0x1caf('0x1d')],function(_0x550d94){return{'model':db[_0x550d94[_0x1caf('0x1e')]],'as':_0x550d94['as'],'attributes':_0x550d94[_0x1caf('0x1b')],'include':_0x550d94[_0x1caf('0x1d')]?_[_0x1caf('0x22')](_0x550d94[_0x1caf('0x1d')],function(_0x326302){return{'model':db[_0x326302[_0x1caf('0x1e')]],'as':_0x326302['as'],'attributes':_0x326302['attributes']};}):[]};}):[]};}):[]:[]})[_0x1caf('0x1f')](function(_0x2d2f9f){logger['info'](_0x1caf('0x23'),_0x2b7118);logger[_0x1caf('0xe')](_0x1caf('0x23'),_0x2b7118,JSON[_0x1caf('0x11')](_0x2d2f9f));_0x3627d2(_0x2d2f9f);})['catch'](function(_0x5862f3){logger['error'](_0x1caf('0x23'),_0x5862f3['message'],_0x2b7118);_0x39b21b(_0x56f041[_0x1caf('0x12')](0x1f4,_0x5862f3[_0x1caf('0x14')]));});});};
\ No newline at end of file
index cc68f82..cf4fce8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf700=['destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','index','get','/:id','isAuthenticated','show','/:id/fields','/:id/subjects','/:id/descriptions','post','create','put','update','delete'];(function(_0x265122,_0x1ae805){var _0x4a9eaa=function(_0x303a88){while(--_0x303a88){_0x265122['push'](_0x265122['shift']());}};_0x4a9eaa(++_0x1ae805);}(_0xf700,0x139));var _0x0f70=function(_0x37b74f,_0x260fce){_0x37b74f=_0x37b74f-0x0;var _0x35f223=_0xf700[_0x37b74f];return _0x35f223;};'use strict';var multer=require(_0x0f70('0x0'));var util=require(_0x0f70('0x1'));var path=require(_0x0f70('0x2'));var timeout=require(_0x0f70('0x3'));var express=require(_0x0f70('0x4'));var router=express['Router']();var fs_extra=require(_0x0f70('0x5'));var auth=require(_0x0f70('0x6'));var interaction=require(_0x0f70('0x7'));var config=require(_0x0f70('0x8'));var controller=require(_0x0f70('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x0f70('0xa')]);router[_0x0f70('0xb')](_0x0f70('0xc'),auth[_0x0f70('0xd')](),controller[_0x0f70('0xe')]);router[_0x0f70('0xb')](_0x0f70('0xf'),auth[_0x0f70('0xd')](),controller['getFields']);router[_0x0f70('0xb')](_0x0f70('0x10'),auth[_0x0f70('0xd')](),controller['getSubjects']);router[_0x0f70('0xb')](_0x0f70('0x11'),auth[_0x0f70('0xd')](),controller['getDescriptions']);router[_0x0f70('0x12')]('/',auth[_0x0f70('0xd')](),controller[_0x0f70('0x13')]);router[_0x0f70('0x14')](_0x0f70('0xc'),auth[_0x0f70('0xd')](),controller[_0x0f70('0x15')]);router[_0x0f70('0x16')](_0x0f70('0xc'),auth[_0x0f70('0xd')](),controller[_0x0f70('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0xb68c=['destroy','multer','util','path','connect-timeout','express','Router','../../config/environment','index','get','/:id','isAuthenticated','show','/:id/fields','getDescriptions','post','create','update','delete'];(function(_0x5b4473,_0x1c5e15){var _0x4d0302=function(_0x48389a){while(--_0x48389a){_0x5b4473['push'](_0x5b4473['shift']());}};_0x4d0302(++_0x1c5e15);}(_0xb68c,0xe5));var _0xcb68=function(_0x2b5580,_0x15b0c1){_0x2b5580=_0x2b5580-0x0;var _0x2b5bf3=_0xb68c[_0x2b5580];return _0x2b5bf3;};'use strict';var multer=require(_0xcb68('0x0'));var util=require(_0xcb68('0x1'));var path=require(_0xcb68('0x2'));var timeout=require(_0xcb68('0x3'));var express=require(_0xcb68('0x4'));var router=express[_0xcb68('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xcb68('0x6'));var controller=require('./intServicenowConfiguration.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xcb68('0x7')]);router[_0xcb68('0x8')](_0xcb68('0x9'),auth[_0xcb68('0xa')](),controller[_0xcb68('0xb')]);router['get'](_0xcb68('0xc'),auth[_0xcb68('0xa')](),controller['getFields']);router[_0xcb68('0x8')]('/:id/subjects',auth[_0xcb68('0xa')](),controller['getSubjects']);router['get']('/:id/descriptions',auth['isAuthenticated'](),controller[_0xcb68('0xd')]);router[_0xcb68('0xe')]('/',auth[_0xcb68('0xa')](),controller[_0xcb68('0xf')]);router['put'](_0xcb68('0x9'),auth[_0xcb68('0xa')](),controller[_0xcb68('0x10')]);router[_0xcb68('0x11')]('/:id',auth[_0xcb68('0xa')](),controller[_0xcb68('0x12')]);module['exports']=router;
\ No newline at end of file
index b02db83..9229576 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabe1=['STRING','sequelize','exports'];(function(_0x259b70,_0x173c8a){var _0x70989e=function(_0x4c1119){while(--_0x4c1119){_0x259b70['push'](_0x259b70['shift']());}};_0x70989e(++_0x173c8a);}(_0xabe1,0x187));var _0x1abe=function(_0x2356e6,_0x130b1f){_0x2356e6=_0x2356e6-0x0;var _0x31094e=_0xabe1[_0x2356e6];return _0x31094e;};'use strict';var Sequelize=require(_0x1abe('0x0'));module[_0x1abe('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x1abe('0x2')]}};
\ No newline at end of file
+var _0x6517=['STRING'];(function(_0x4e9fe4,_0x3c9f38){var _0x531c77=function(_0x4ccfd2){while(--_0x4ccfd2){_0x4e9fe4['push'](_0x4e9fe4['shift']());}};_0x531c77(++_0x3c9f38);}(_0x6517,0x1a1));var _0x7651=function(_0x576164,_0x4ccfbf){_0x576164=_0x576164-0x0;var _0x3e8d02=_0x6517[_0x576164];return _0x3e8d02;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x7651('0x0')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index ecebd6c..ddfd2c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcff2=['ejs','fs-extra','lodash','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','offset','undefined','limit','count','status','set','Content-Range','json','reject','then','destroy','error','name','send','index','map','ServicenowConfiguration','rawAttributes','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','VIRTUAL','filter','options','includeAll','rows','show','merge','catch','create','body','update','find','params','getFields','findOne','nolimit','getSubjects','ServicenowField','getDescriptions','eml-format','rimraf','fast-json-patch','moment','mustache','util','path','to-csv'];(function(_0x1bc954,_0x260393){var _0x740462=function(_0x45cca6){while(--_0x45cca6){_0x1bc954['push'](_0x1bc954['shift']());}};_0x740462(++_0x260393);}(_0xcff2,0x1ba));var _0x2cff=function(_0x202c61,_0x3673e0){_0x202c61=_0x202c61-0x0;var _0x540691=_0xcff2[_0x202c61];return _0x540691;};'use strict';var emlformat=require(_0x2cff('0x0'));var rimraf=require(_0x2cff('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2cff('0x2'));var rp=require('request-promise');var moment=require(_0x2cff('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x2cff('0x4'));var util=require(_0x2cff('0x5'));var path=require(_0x2cff('0x6'));var sox=require('sox');var csv=require(_0x2cff('0x7'));var ejs=require(_0x2cff('0x8'));var fs=require('fs');var fs_extra=require(_0x2cff('0x9'));var _=require(_0x2cff('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x2cff('0xb'));var deskjs=require(_0x2cff('0xc'));var toCsv=require(_0x2cff('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x2cff('0xd'));var authService=require(_0x2cff('0xe'));var qs=require(_0x2cff('0xf'));var as=require(_0x2cff('0x10'));var hardwareService=require(_0x2cff('0x11'));var logger=require(_0x2cff('0x12'))(_0x2cff('0x13'));var utils=require('../../config/utils');var config=require(_0x2cff('0x14'));var licenseUtil=require(_0x2cff('0x15'));var db=require(_0x2cff('0x16'))['db'];function respondWithStatusCode(_0x2f57f7,_0xa105b4){_0xa105b4=_0xa105b4||0xcc;return function(_0x32d057){if(_0x32d057){return _0x2f57f7['sendStatus'](_0xa105b4);}return _0x2f57f7['status'](_0xa105b4)['end']();};}function respondWithResult(_0x57cc64,_0xc49e5e){_0xc49e5e=_0xc49e5e||0xc8;return function(_0x18eb03){if(_0x18eb03){return _0x57cc64['status'](_0xc49e5e)['json'](_0x18eb03);}};}function respondWithFilteredResult(_0x202c44,_0x1c4d80){return function(_0x219d94){if(_0x219d94){var _0x1c1361=typeof _0x1c4d80[_0x2cff('0x17')]===_0x2cff('0x18')&&typeof _0x1c4d80[_0x2cff('0x19')]===_0x2cff('0x18');var _0x111680=_0x219d94[_0x2cff('0x1a')];var _0x285117=_0x1c1361?0x0:_0x1c4d80['offset'];var _0x157562=_0x1c1361?_0x219d94[_0x2cff('0x1a')]:_0x1c4d80['offset']+_0x1c4d80[_0x2cff('0x19')];var _0x47d099;if(_0x157562>=_0x111680){_0x157562=_0x111680;_0x47d099=0xc8;}else{_0x47d099=0xce;}_0x202c44[_0x2cff('0x1b')](_0x47d099);return _0x202c44[_0x2cff('0x1c')](_0x2cff('0x1d'),_0x285117+'-'+_0x157562+'/'+_0x111680)[_0x2cff('0x1e')](_0x219d94);}return null;};}function patchUpdates(_0x4ea447){return function(_0x10363b){try{jsonpatch['apply'](_0x10363b,_0x4ea447,!![]);}catch(_0x4ef3a1){return BPromise[_0x2cff('0x1f')](_0x4ef3a1);}return _0x10363b['save']();};}function saveUpdates(_0x1d7c90,_0x3ddf0a){return function(_0x5878be){if(_0x5878be){return _0x5878be['update'](_0x1d7c90)[_0x2cff('0x20')](function(_0x4a2f9b){return _0x4a2f9b;});}return null;};}function removeEntity(_0x36104a,_0x277592){return function(_0x25ca19){if(_0x25ca19){return _0x25ca19[_0x2cff('0x21')]()[_0x2cff('0x20')](function(){_0x36104a[_0x2cff('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x164ae2,_0x4cb826){return function(_0x2ea793){if(!_0x2ea793){_0x164ae2['sendStatus'](0x194);}return _0x2ea793;};}function handleError(_0x4f3c21,_0x44e97d){_0x44e97d=_0x44e97d||0x1f4;return function(_0x23580b){logger[_0x2cff('0x22')](_0x23580b['stack']);if(_0x23580b[_0x2cff('0x23')]){delete _0x23580b['name'];}_0x4f3c21[_0x2cff('0x1b')](_0x44e97d)[_0x2cff('0x24')](_0x23580b);};}exports[_0x2cff('0x25')]=function(_0x3c51d2,_0x138745){var _0x4a7e0c={},_0x10e29e={},_0x5c1d38={'count':0x0,'rows':[]};var _0x14e250=_[_0x2cff('0x26')](db[_0x2cff('0x27')][_0x2cff('0x28')],function(_0x4c9d35){return{'name':_0x4c9d35['fieldName'],'type':_0x4c9d35[_0x2cff('0x29')][_0x2cff('0x2a')]};});_0x10e29e[_0x2cff('0x2b')]=_[_0x2cff('0x26')](_0x14e250,'name');_0x10e29e['query']=_[_0x2cff('0x2c')](_0x3c51d2[_0x2cff('0x2d')]);_0x10e29e[_0x2cff('0x2e')]=_[_0x2cff('0x2f')](_0x10e29e[_0x2cff('0x2b')],_0x10e29e[_0x2cff('0x2d')]);_0x4a7e0c[_0x2cff('0x30')]=_[_0x2cff('0x2f')](_0x10e29e[_0x2cff('0x2b')],qs['fields'](_0x3c51d2[_0x2cff('0x2d')][_0x2cff('0x31')]));_0x4a7e0c[_0x2cff('0x30')]=_0x4a7e0c[_0x2cff('0x30')][_0x2cff('0x32')]?_0x4a7e0c[_0x2cff('0x30')]:_0x10e29e[_0x2cff('0x2b')];if(!_0x3c51d2[_0x2cff('0x2d')][_0x2cff('0x33')]('nolimit')){_0x4a7e0c[_0x2cff('0x19')]=qs['limit'](_0x3c51d2['query'][_0x2cff('0x19')]);_0x4a7e0c[_0x2cff('0x17')]=qs[_0x2cff('0x17')](_0x3c51d2[_0x2cff('0x2d')]['offset']);}_0x4a7e0c[_0x2cff('0x34')]=qs[_0x2cff('0x35')](_0x3c51d2[_0x2cff('0x2d')][_0x2cff('0x35')]);_0x4a7e0c[_0x2cff('0x36')]=qs[_0x2cff('0x2e')](_[_0x2cff('0x37')](_0x3c51d2[_0x2cff('0x2d')],_0x10e29e[_0x2cff('0x2e')]),_0x14e250);if(_0x3c51d2[_0x2cff('0x2d')]['filter']){_0x4a7e0c[_0x2cff('0x36')]=_['merge'](_0x4a7e0c[_0x2cff('0x36')],{'$or':_[_0x2cff('0x26')](_0x14e250,function(_0x445376){if(_0x445376[_0x2cff('0x29')]!==_0x2cff('0x38')){var _0x4976f7={};_0x4976f7[_0x445376[_0x2cff('0x23')]]={'$like':'%'+_0x3c51d2[_0x2cff('0x2d')][_0x2cff('0x39')]+'%'};return _0x4976f7;}})});}_0x4a7e0c=_['merge']({},_0x4a7e0c,_0x3c51d2[_0x2cff('0x3a')]);var _0x1d5c04={'where':_0x4a7e0c[_0x2cff('0x36')]};return db['ServicenowConfiguration'][_0x2cff('0x1a')](_0x1d5c04)[_0x2cff('0x20')](function(_0x3c1a80){_0x5c1d38[_0x2cff('0x1a')]=_0x3c1a80;if(_0x3c51d2[_0x2cff('0x2d')][_0x2cff('0x3b')]){_0x4a7e0c['include']=[{'all':!![]}];}return db[_0x2cff('0x27')]['findAll'](_0x4a7e0c);})[_0x2cff('0x20')](function(_0x13db03){_0x5c1d38[_0x2cff('0x3c')]=_0x13db03;return _0x5c1d38;})[_0x2cff('0x20')](respondWithFilteredResult(_0x138745,_0x4a7e0c))['catch'](handleError(_0x138745,null));};exports[_0x2cff('0x3d')]=function(_0x1d9366,_0x28fc08){var _0x41a766={'raw':![],'where':{'id':_0x1d9366['params']['id']}},_0x1af0d={};_0x1af0d[_0x2cff('0x2b')]=_['keys'](db[_0x2cff('0x27')]['rawAttributes']);_0x1af0d[_0x2cff('0x2d')]=_[_0x2cff('0x2c')](_0x1d9366[_0x2cff('0x2d')]);_0x1af0d[_0x2cff('0x2e')]=_[_0x2cff('0x2f')](_0x1af0d[_0x2cff('0x2b')],_0x1af0d['query']);_0x41a766[_0x2cff('0x30')]=_[_0x2cff('0x2f')](_0x1af0d[_0x2cff('0x2b')],qs[_0x2cff('0x31')](_0x1d9366['query'][_0x2cff('0x31')]));_0x41a766[_0x2cff('0x30')]=_0x41a766[_0x2cff('0x30')][_0x2cff('0x32')]?_0x41a766[_0x2cff('0x30')]:_0x1af0d['model'];if(_0x1d9366['query'][_0x2cff('0x3b')]){_0x41a766['include']=[{'all':!![]}];}_0x41a766=_[_0x2cff('0x3e')]({},_0x41a766,_0x1d9366[_0x2cff('0x3a')]);return db[_0x2cff('0x27')]['find'](_0x41a766)[_0x2cff('0x20')](handleEntityNotFound(_0x28fc08,null))[_0x2cff('0x20')](respondWithResult(_0x28fc08,null))[_0x2cff('0x3f')](handleError(_0x28fc08,null));};exports[_0x2cff('0x40')]=function(_0x2fe062,_0x134d88){return db[_0x2cff('0x27')][_0x2cff('0x40')](_0x2fe062[_0x2cff('0x41')],{})[_0x2cff('0x20')](respondWithResult(_0x134d88,0xc9))['catch'](handleError(_0x134d88,null));};exports[_0x2cff('0x42')]=function(_0xef8e83,_0x3a08db){if(_0xef8e83['body']['id']){delete _0xef8e83[_0x2cff('0x41')]['id'];}return db[_0x2cff('0x27')][_0x2cff('0x43')]({'where':{'id':_0xef8e83[_0x2cff('0x44')]['id']}})[_0x2cff('0x20')](handleEntityNotFound(_0x3a08db,null))[_0x2cff('0x20')](saveUpdates(_0xef8e83[_0x2cff('0x41')],null))[_0x2cff('0x20')](respondWithResult(_0x3a08db,null))['catch'](handleError(_0x3a08db,null));};exports['destroy']=function(_0x5746d4,_0x29dc9b){return db[_0x2cff('0x27')][_0x2cff('0x43')]({'where':{'id':_0x5746d4[_0x2cff('0x44')]['id']}})['then'](handleEntityNotFound(_0x29dc9b,null))['then'](removeEntity(_0x29dc9b,null))[_0x2cff('0x3f')](handleError(_0x29dc9b,null));};exports[_0x2cff('0x45')]=function(_0x411106,_0x2a99d5,_0x538363){var _0x16469b={};var _0x144dfd={};var _0x3d1ab9;var _0x1618f6;return db[_0x2cff('0x27')][_0x2cff('0x46')]({'where':{'id':_0x411106[_0x2cff('0x44')]['id']}})['then'](handleEntityNotFound(_0x2a99d5,null))[_0x2cff('0x20')](function(_0x388ac0){if(_0x388ac0){_0x3d1ab9=_0x388ac0;_0x144dfd[_0x2cff('0x2b')]=_[_0x2cff('0x2c')](db['ServicenowField']['rawAttributes']);_0x144dfd['query']=_[_0x2cff('0x2c')](_0x411106['query']);_0x144dfd['filters']=_[_0x2cff('0x2f')](_0x144dfd[_0x2cff('0x2b')],_0x144dfd[_0x2cff('0x2d')]);_0x16469b[_0x2cff('0x30')]=_[_0x2cff('0x2f')](_0x144dfd['model'],qs[_0x2cff('0x31')](_0x411106[_0x2cff('0x2d')][_0x2cff('0x31')]));_0x16469b[_0x2cff('0x30')]=_0x16469b[_0x2cff('0x30')][_0x2cff('0x32')]?_0x16469b[_0x2cff('0x30')]:_0x144dfd[_0x2cff('0x2b')];_0x16469b[_0x2cff('0x34')]=qs['sort'](_0x411106[_0x2cff('0x2d')][_0x2cff('0x35')]);_0x16469b[_0x2cff('0x36')]=qs[_0x2cff('0x2e')](_['pick'](_0x411106[_0x2cff('0x2d')],_0x144dfd['filters']));if(_0x411106[_0x2cff('0x2d')][_0x2cff('0x39')]){_0x16469b['where']=_[_0x2cff('0x3e')](_0x16469b['where'],{'$or':_[_0x2cff('0x26')](_0x16469b[_0x2cff('0x30')],function(_0x14a5f4){var _0x1ca73e={};_0x1ca73e[_0x14a5f4]={'$like':'%'+_0x411106['query']['filter']+'%'};return _0x1ca73e;})});}_0x16469b=_[_0x2cff('0x3e')]({},_0x16469b,_0x411106[_0x2cff('0x3a')]);return _0x3d1ab9['getFields'](_0x16469b);}})[_0x2cff('0x20')](function(_0x1d4727){if(_0x1d4727){_0x1618f6=_0x1d4727[_0x2cff('0x32')];if(!_0x411106[_0x2cff('0x2d')][_0x2cff('0x33')](_0x2cff('0x47'))){_0x16469b['limit']=qs[_0x2cff('0x19')](_0x411106[_0x2cff('0x2d')]['limit']);_0x16469b[_0x2cff('0x17')]=qs[_0x2cff('0x17')](_0x411106[_0x2cff('0x2d')][_0x2cff('0x17')]);}return _0x3d1ab9[_0x2cff('0x45')](_0x16469b);}})['then'](function(_0x2c36b9){if(_0x2c36b9){return _0x2c36b9?{'count':_0x1618f6,'rows':_0x2c36b9}:null;}})[_0x2cff('0x20')](respondWithResult(_0x2a99d5,null))[_0x2cff('0x3f')](handleError(_0x2a99d5,null));};exports[_0x2cff('0x48')]=function(_0x4780b5,_0x18094a,_0x109a94){var _0x6ba7c9={};var _0x591e45={};var _0x2fa841;var _0x9b4b8b;return db[_0x2cff('0x27')]['findOne']({'where':{'id':_0x4780b5[_0x2cff('0x44')]['id']}})['then'](handleEntityNotFound(_0x18094a,null))[_0x2cff('0x20')](function(_0x59336f){if(_0x59336f){_0x2fa841=_0x59336f;_0x591e45['model']=_[_0x2cff('0x2c')](db[_0x2cff('0x49')][_0x2cff('0x28')]);_0x591e45[_0x2cff('0x2d')]=_[_0x2cff('0x2c')](_0x4780b5[_0x2cff('0x2d')]);_0x591e45[_0x2cff('0x2e')]=_[_0x2cff('0x2f')](_0x591e45[_0x2cff('0x2b')],_0x591e45[_0x2cff('0x2d')]);_0x6ba7c9[_0x2cff('0x30')]=_[_0x2cff('0x2f')](_0x591e45['model'],qs['fields'](_0x4780b5['query']['fields']));_0x6ba7c9['attributes']=_0x6ba7c9[_0x2cff('0x30')]['length']?_0x6ba7c9[_0x2cff('0x30')]:_0x591e45['model'];_0x6ba7c9[_0x2cff('0x34')]=qs[_0x2cff('0x35')](_0x4780b5['query'][_0x2cff('0x35')]);_0x6ba7c9[_0x2cff('0x36')]=qs['filters'](_[_0x2cff('0x37')](_0x4780b5['query'],_0x591e45[_0x2cff('0x2e')]));if(_0x4780b5['query'][_0x2cff('0x39')]){_0x6ba7c9[_0x2cff('0x36')]=_[_0x2cff('0x3e')](_0x6ba7c9[_0x2cff('0x36')],{'$or':_['map'](_0x6ba7c9[_0x2cff('0x30')],function(_0x1c68e2){var _0xd750af={};_0xd750af[_0x1c68e2]={'$like':'%'+_0x4780b5['query'][_0x2cff('0x39')]+'%'};return _0xd750af;})});}_0x6ba7c9=_['merge']({},_0x6ba7c9,_0x4780b5[_0x2cff('0x3a')]);return _0x2fa841[_0x2cff('0x48')](_0x6ba7c9);}})[_0x2cff('0x20')](function(_0x19b596){if(_0x19b596){_0x9b4b8b=_0x19b596[_0x2cff('0x32')];if(!_0x4780b5['query'][_0x2cff('0x33')](_0x2cff('0x47'))){_0x6ba7c9['limit']=qs['limit'](_0x4780b5[_0x2cff('0x2d')][_0x2cff('0x19')]);_0x6ba7c9['offset']=qs[_0x2cff('0x17')](_0x4780b5[_0x2cff('0x2d')][_0x2cff('0x17')]);}return _0x2fa841[_0x2cff('0x48')](_0x6ba7c9);}})['then'](function(_0x120e33){if(_0x120e33){return _0x120e33?{'count':_0x9b4b8b,'rows':_0x120e33}:null;}})[_0x2cff('0x20')](respondWithResult(_0x18094a,null))['catch'](handleError(_0x18094a,null));};exports[_0x2cff('0x4a')]=function(_0x5caa08,_0x5bfd2b,_0x6cc4a6){var _0x35a4c0={};var _0x4edf13={};var _0x593593;var _0x5c5b3d;return db[_0x2cff('0x27')]['findOne']({'where':{'id':_0x5caa08[_0x2cff('0x44')]['id']}})[_0x2cff('0x20')](handleEntityNotFound(_0x5bfd2b,null))['then'](function(_0x5d7bd8){if(_0x5d7bd8){_0x593593=_0x5d7bd8;_0x4edf13[_0x2cff('0x2b')]=_['keys'](db['ServicenowField'][_0x2cff('0x28')]);_0x4edf13[_0x2cff('0x2d')]=_[_0x2cff('0x2c')](_0x5caa08[_0x2cff('0x2d')]);_0x4edf13[_0x2cff('0x2e')]=_[_0x2cff('0x2f')](_0x4edf13[_0x2cff('0x2b')],_0x4edf13[_0x2cff('0x2d')]);_0x35a4c0[_0x2cff('0x30')]=_['intersection'](_0x4edf13['model'],qs[_0x2cff('0x31')](_0x5caa08['query']['fields']));_0x35a4c0[_0x2cff('0x30')]=_0x35a4c0[_0x2cff('0x30')][_0x2cff('0x32')]?_0x35a4c0[_0x2cff('0x30')]:_0x4edf13[_0x2cff('0x2b')];_0x35a4c0[_0x2cff('0x34')]=qs[_0x2cff('0x35')](_0x5caa08[_0x2cff('0x2d')]['sort']);_0x35a4c0[_0x2cff('0x36')]=qs[_0x2cff('0x2e')](_[_0x2cff('0x37')](_0x5caa08[_0x2cff('0x2d')],_0x4edf13[_0x2cff('0x2e')]));if(_0x5caa08['query']['filter']){_0x35a4c0['where']=_['merge'](_0x35a4c0[_0x2cff('0x36')],{'$or':_['map'](_0x35a4c0['attributes'],function(_0x4578c0){var _0xa2e5f5={};_0xa2e5f5[_0x4578c0]={'$like':'%'+_0x5caa08[_0x2cff('0x2d')]['filter']+'%'};return _0xa2e5f5;})});}_0x35a4c0=_[_0x2cff('0x3e')]({},_0x35a4c0,_0x5caa08['options']);return _0x593593['getDescriptions'](_0x35a4c0);}})['then'](function(_0x4f5ca3){if(_0x4f5ca3){_0x5c5b3d=_0x4f5ca3[_0x2cff('0x32')];if(!_0x5caa08[_0x2cff('0x2d')]['hasOwnProperty']('nolimit')){_0x35a4c0[_0x2cff('0x19')]=qs[_0x2cff('0x19')](_0x5caa08[_0x2cff('0x2d')]['limit']);_0x35a4c0['offset']=qs[_0x2cff('0x17')](_0x5caa08[_0x2cff('0x2d')][_0x2cff('0x17')]);}return _0x593593[_0x2cff('0x4a')](_0x35a4c0);}})[_0x2cff('0x20')](function(_0x290ce5){if(_0x290ce5){return _0x290ce5?{'count':_0x5c5b3d,'rows':_0x290ce5}:null;}})[_0x2cff('0x20')](respondWithResult(_0x5bfd2b,null))['catch'](handleError(_0x5bfd2b,null));};
\ No newline at end of file
+var _0xd331=['attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','ServicenowConfiguration','include','rows','params','includeAll','create','body','catch','find','getFields','findOne','ServicenowField','getSubjects','getDescriptions','rimraf','fast-json-patch','request-promise','bluebird','path','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','apply','reject','save','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields'];(function(_0x5525c7,_0x2bae8b){var _0x1f68c2=function(_0x5de9cb){while(--_0x5de9cb){_0x5525c7['push'](_0x5525c7['shift']());}};_0x1f68c2(++_0x2bae8b);}(_0xd331,0x14e));var _0x1d33=function(_0x3fc9a3,_0x223b97){_0x3fc9a3=_0x3fc9a3-0x0;var _0x1670cc=_0xd331[_0x3fc9a3];return _0x1670cc;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1d33('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1d33('0x1'));var rp=require(_0x1d33('0x2'));var moment=require('moment');var BPromise=require(_0x1d33('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x1d33('0x4'));var sox=require(_0x1d33('0x5'));var csv=require(_0x1d33('0x6'));var ejs=require(_0x1d33('0x7'));var fs=require('fs');var fs_extra=require(_0x1d33('0x8'));var _=require('lodash');var squel=require(_0x1d33('0x9'));var crypto=require(_0x1d33('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x1d33('0xb'));var Papa=require(_0x1d33('0xc'));var Redis=require('ioredis');var authService=require(_0x1d33('0xd'));var qs=require(_0x1d33('0xe'));var as=require(_0x1d33('0xf'));var hardwareService=require(_0x1d33('0x10'));var logger=require('../../config/logger')(_0x1d33('0x11'));var utils=require(_0x1d33('0x12'));var config=require(_0x1d33('0x13'));var licenseUtil=require(_0x1d33('0x14'));var db=require(_0x1d33('0x15'))['db'];function respondWithStatusCode(_0x55ba5b,_0x398c20){_0x398c20=_0x398c20||0xcc;return function(_0x5a0e69){if(_0x5a0e69){return _0x55ba5b[_0x1d33('0x16')](_0x398c20);}return _0x55ba5b['status'](_0x398c20)[_0x1d33('0x17')]();};}function respondWithResult(_0x34f7a6,_0x4ab826){_0x4ab826=_0x4ab826||0xc8;return function(_0x49f4a9){if(_0x49f4a9){return _0x34f7a6[_0x1d33('0x18')](_0x4ab826)[_0x1d33('0x19')](_0x49f4a9);}};}function respondWithFilteredResult(_0x2f5bf8,_0x397984){return function(_0x2f1640){if(_0x2f1640){var _0x8f8247=typeof _0x397984[_0x1d33('0x1a')]===_0x1d33('0x1b')&&typeof _0x397984['limit']===_0x1d33('0x1b');var _0x3893e1=_0x2f1640[_0x1d33('0x1c')];var _0x3d374a=_0x8f8247?0x0:_0x397984[_0x1d33('0x1a')];var _0x39a416=_0x8f8247?_0x2f1640['count']:_0x397984[_0x1d33('0x1a')]+_0x397984[_0x1d33('0x1d')];var _0x5bf9c5;if(_0x39a416>=_0x3893e1){_0x39a416=_0x3893e1;_0x5bf9c5=0xc8;}else{_0x5bf9c5=0xce;}_0x2f5bf8[_0x1d33('0x18')](_0x5bf9c5);return _0x2f5bf8['set']('Content-Range',_0x3d374a+'-'+_0x39a416+'/'+_0x3893e1)[_0x1d33('0x19')](_0x2f1640);}return null;};}function patchUpdates(_0x1f1d06){return function(_0x56edd5){try{jsonpatch[_0x1d33('0x1e')](_0x56edd5,_0x1f1d06,!![]);}catch(_0x1a57cf){return BPromise[_0x1d33('0x1f')](_0x1a57cf);}return _0x56edd5[_0x1d33('0x20')]();};}function saveUpdates(_0x4e094d,_0xf266ac){return function(_0x10245b){if(_0x10245b){return _0x10245b[_0x1d33('0x21')](_0x4e094d)[_0x1d33('0x22')](function(_0x5d1b1f){return _0x5d1b1f;});}return null;};}function removeEntity(_0x23788c,_0xe0b64){return function(_0x1b9044){if(_0x1b9044){return _0x1b9044[_0x1d33('0x23')]()[_0x1d33('0x22')](function(){_0x23788c['status'](0xcc)[_0x1d33('0x17')]();});}};}function handleEntityNotFound(_0x24523e,_0x59d99b){return function(_0x41580c){if(!_0x41580c){_0x24523e[_0x1d33('0x16')](0x194);}return _0x41580c;};}function handleError(_0x10be24,_0x2d7a32){_0x2d7a32=_0x2d7a32||0x1f4;return function(_0x2f2ce9){logger['error'](_0x2f2ce9[_0x1d33('0x24')]);if(_0x2f2ce9[_0x1d33('0x25')]){delete _0x2f2ce9['name'];}_0x10be24['status'](_0x2d7a32)[_0x1d33('0x26')](_0x2f2ce9);};}exports[_0x1d33('0x27')]=function(_0x3997cd,_0xc29ae9){var _0xab4ce0={},_0x452785={},_0x39632e={'count':0x0,'rows':[]};var _0x532be9=_[_0x1d33('0x28')](db['ServicenowConfiguration'][_0x1d33('0x29')],function(_0x474be){return{'name':_0x474be[_0x1d33('0x2a')],'type':_0x474be[_0x1d33('0x2b')][_0x1d33('0x2c')]};});_0x452785[_0x1d33('0x2d')]=_[_0x1d33('0x28')](_0x532be9,_0x1d33('0x25'));_0x452785[_0x1d33('0x2e')]=_[_0x1d33('0x2f')](_0x3997cd[_0x1d33('0x2e')]);_0x452785[_0x1d33('0x30')]=_[_0x1d33('0x31')](_0x452785['model'],_0x452785[_0x1d33('0x2e')]);_0xab4ce0['attributes']=_[_0x1d33('0x31')](_0x452785[_0x1d33('0x2d')],qs[_0x1d33('0x32')](_0x3997cd[_0x1d33('0x2e')]['fields']));_0xab4ce0[_0x1d33('0x33')]=_0xab4ce0[_0x1d33('0x33')][_0x1d33('0x34')]?_0xab4ce0[_0x1d33('0x33')]:_0x452785[_0x1d33('0x2d')];if(!_0x3997cd[_0x1d33('0x2e')][_0x1d33('0x35')](_0x1d33('0x36'))){_0xab4ce0[_0x1d33('0x1d')]=qs[_0x1d33('0x1d')](_0x3997cd[_0x1d33('0x2e')]['limit']);_0xab4ce0[_0x1d33('0x1a')]=qs['offset'](_0x3997cd['query'][_0x1d33('0x1a')]);}_0xab4ce0[_0x1d33('0x37')]=qs[_0x1d33('0x38')](_0x3997cd[_0x1d33('0x2e')][_0x1d33('0x38')]);_0xab4ce0[_0x1d33('0x39')]=qs[_0x1d33('0x30')](_[_0x1d33('0x3a')](_0x3997cd[_0x1d33('0x2e')],_0x452785[_0x1d33('0x30')]),_0x532be9);if(_0x3997cd['query'][_0x1d33('0x3b')]){_0xab4ce0[_0x1d33('0x39')]=_[_0x1d33('0x3c')](_0xab4ce0[_0x1d33('0x39')],{'$or':_[_0x1d33('0x28')](_0x532be9,function(_0x1e9c31){if(_0x1e9c31[_0x1d33('0x2b')]!==_0x1d33('0x3d')){var _0x25b5a9={};_0x25b5a9[_0x1e9c31['name']]={'$like':'%'+_0x3997cd[_0x1d33('0x2e')][_0x1d33('0x3b')]+'%'};return _0x25b5a9;}})});}_0xab4ce0=_[_0x1d33('0x3c')]({},_0xab4ce0,_0x3997cd[_0x1d33('0x3e')]);var _0x66c46={'where':_0xab4ce0[_0x1d33('0x39')]};return db[_0x1d33('0x3f')][_0x1d33('0x1c')](_0x66c46)[_0x1d33('0x22')](function(_0x4090b0){_0x39632e[_0x1d33('0x1c')]=_0x4090b0;if(_0x3997cd[_0x1d33('0x2e')]['includeAll']){_0xab4ce0[_0x1d33('0x40')]=[{'all':!![]}];}return db[_0x1d33('0x3f')]['findAll'](_0xab4ce0);})[_0x1d33('0x22')](function(_0x2f4072){_0x39632e[_0x1d33('0x41')]=_0x2f4072;return _0x39632e;})[_0x1d33('0x22')](respondWithFilteredResult(_0xc29ae9,_0xab4ce0))['catch'](handleError(_0xc29ae9,null));};exports['show']=function(_0x38aa8b,_0xbdb3e7){var _0xf4ed2e={'raw':![],'where':{'id':_0x38aa8b[_0x1d33('0x42')]['id']}},_0x24b3d4={};_0x24b3d4['model']=_[_0x1d33('0x2f')](db[_0x1d33('0x3f')][_0x1d33('0x29')]);_0x24b3d4[_0x1d33('0x2e')]=_[_0x1d33('0x2f')](_0x38aa8b[_0x1d33('0x2e')]);_0x24b3d4[_0x1d33('0x30')]=_['intersection'](_0x24b3d4[_0x1d33('0x2d')],_0x24b3d4[_0x1d33('0x2e')]);_0xf4ed2e['attributes']=_[_0x1d33('0x31')](_0x24b3d4['model'],qs[_0x1d33('0x32')](_0x38aa8b[_0x1d33('0x2e')][_0x1d33('0x32')]));_0xf4ed2e[_0x1d33('0x33')]=_0xf4ed2e[_0x1d33('0x33')][_0x1d33('0x34')]?_0xf4ed2e[_0x1d33('0x33')]:_0x24b3d4['model'];if(_0x38aa8b[_0x1d33('0x2e')][_0x1d33('0x43')]){_0xf4ed2e[_0x1d33('0x40')]=[{'all':!![]}];}_0xf4ed2e=_[_0x1d33('0x3c')]({},_0xf4ed2e,_0x38aa8b[_0x1d33('0x3e')]);return db[_0x1d33('0x3f')]['find'](_0xf4ed2e)[_0x1d33('0x22')](handleEntityNotFound(_0xbdb3e7,null))[_0x1d33('0x22')](respondWithResult(_0xbdb3e7,null))['catch'](handleError(_0xbdb3e7,null));};exports[_0x1d33('0x44')]=function(_0x335aa4,_0x22d224){return db[_0x1d33('0x3f')]['create'](_0x335aa4[_0x1d33('0x45')],{})['then'](respondWithResult(_0x22d224,0xc9))[_0x1d33('0x46')](handleError(_0x22d224,null));};exports[_0x1d33('0x21')]=function(_0x2e96a8,_0x51fbaa){if(_0x2e96a8[_0x1d33('0x45')]['id']){delete _0x2e96a8[_0x1d33('0x45')]['id'];}return db[_0x1d33('0x3f')][_0x1d33('0x47')]({'where':{'id':_0x2e96a8[_0x1d33('0x42')]['id']}})[_0x1d33('0x22')](handleEntityNotFound(_0x51fbaa,null))['then'](saveUpdates(_0x2e96a8[_0x1d33('0x45')],null))['then'](respondWithResult(_0x51fbaa,null))['catch'](handleError(_0x51fbaa,null));};exports[_0x1d33('0x23')]=function(_0x21b61f,_0x1c9015){return db[_0x1d33('0x3f')]['find']({'where':{'id':_0x21b61f[_0x1d33('0x42')]['id']}})[_0x1d33('0x22')](handleEntityNotFound(_0x1c9015,null))[_0x1d33('0x22')](removeEntity(_0x1c9015,null))[_0x1d33('0x46')](handleError(_0x1c9015,null));};exports[_0x1d33('0x48')]=function(_0x389ed,_0x45cb47,_0x563ebd){var _0x545b30={};var _0x249308={};var _0x2a7447;var _0x4f3070;return db[_0x1d33('0x3f')][_0x1d33('0x49')]({'where':{'id':_0x389ed[_0x1d33('0x42')]['id']}})[_0x1d33('0x22')](handleEntityNotFound(_0x45cb47,null))[_0x1d33('0x22')](function(_0x1a2655){if(_0x1a2655){_0x2a7447=_0x1a2655;_0x249308[_0x1d33('0x2d')]=_['keys'](db[_0x1d33('0x4a')][_0x1d33('0x29')]);_0x249308[_0x1d33('0x2e')]=_[_0x1d33('0x2f')](_0x389ed[_0x1d33('0x2e')]);_0x249308[_0x1d33('0x30')]=_['intersection'](_0x249308[_0x1d33('0x2d')],_0x249308['query']);_0x545b30[_0x1d33('0x33')]=_[_0x1d33('0x31')](_0x249308[_0x1d33('0x2d')],qs[_0x1d33('0x32')](_0x389ed[_0x1d33('0x2e')][_0x1d33('0x32')]));_0x545b30[_0x1d33('0x33')]=_0x545b30['attributes'][_0x1d33('0x34')]?_0x545b30['attributes']:_0x249308[_0x1d33('0x2d')];_0x545b30[_0x1d33('0x37')]=qs[_0x1d33('0x38')](_0x389ed[_0x1d33('0x2e')][_0x1d33('0x38')]);_0x545b30[_0x1d33('0x39')]=qs[_0x1d33('0x30')](_['pick'](_0x389ed[_0x1d33('0x2e')],_0x249308[_0x1d33('0x30')]));if(_0x389ed[_0x1d33('0x2e')][_0x1d33('0x3b')]){_0x545b30[_0x1d33('0x39')]=_['merge'](_0x545b30[_0x1d33('0x39')],{'$or':_[_0x1d33('0x28')](_0x545b30[_0x1d33('0x33')],function(_0x3a8845){var _0x37dc0c={};_0x37dc0c[_0x3a8845]={'$like':'%'+_0x389ed[_0x1d33('0x2e')]['filter']+'%'};return _0x37dc0c;})});}_0x545b30=_[_0x1d33('0x3c')]({},_0x545b30,_0x389ed[_0x1d33('0x3e')]);return _0x2a7447[_0x1d33('0x48')](_0x545b30);}})['then'](function(_0x1294e6){if(_0x1294e6){_0x4f3070=_0x1294e6[_0x1d33('0x34')];if(!_0x389ed['query'][_0x1d33('0x35')](_0x1d33('0x36'))){_0x545b30[_0x1d33('0x1d')]=qs[_0x1d33('0x1d')](_0x389ed[_0x1d33('0x2e')][_0x1d33('0x1d')]);_0x545b30[_0x1d33('0x1a')]=qs[_0x1d33('0x1a')](_0x389ed['query']['offset']);}return _0x2a7447['getFields'](_0x545b30);}})[_0x1d33('0x22')](function(_0x103b14){if(_0x103b14){return _0x103b14?{'count':_0x4f3070,'rows':_0x103b14}:null;}})[_0x1d33('0x22')](respondWithResult(_0x45cb47,null))[_0x1d33('0x46')](handleError(_0x45cb47,null));};exports['getSubjects']=function(_0x466eaf,_0x57cfb2,_0xdd5f85){var _0x1139e1={};var _0x3b5679={};var _0x313fc3;var _0x21c2f6;return db[_0x1d33('0x3f')]['findOne']({'where':{'id':_0x466eaf[_0x1d33('0x42')]['id']}})[_0x1d33('0x22')](handleEntityNotFound(_0x57cfb2,null))[_0x1d33('0x22')](function(_0x13205c){if(_0x13205c){_0x313fc3=_0x13205c;_0x3b5679[_0x1d33('0x2d')]=_[_0x1d33('0x2f')](db[_0x1d33('0x4a')]['rawAttributes']);_0x3b5679[_0x1d33('0x2e')]=_[_0x1d33('0x2f')](_0x466eaf['query']);_0x3b5679[_0x1d33('0x30')]=_[_0x1d33('0x31')](_0x3b5679[_0x1d33('0x2d')],_0x3b5679[_0x1d33('0x2e')]);_0x1139e1[_0x1d33('0x33')]=_[_0x1d33('0x31')](_0x3b5679['model'],qs['fields'](_0x466eaf[_0x1d33('0x2e')][_0x1d33('0x32')]));_0x1139e1[_0x1d33('0x33')]=_0x1139e1['attributes'][_0x1d33('0x34')]?_0x1139e1[_0x1d33('0x33')]:_0x3b5679[_0x1d33('0x2d')];_0x1139e1['order']=qs[_0x1d33('0x38')](_0x466eaf[_0x1d33('0x2e')]['sort']);_0x1139e1['where']=qs['filters'](_[_0x1d33('0x3a')](_0x466eaf[_0x1d33('0x2e')],_0x3b5679['filters']));if(_0x466eaf[_0x1d33('0x2e')][_0x1d33('0x3b')]){_0x1139e1[_0x1d33('0x39')]=_[_0x1d33('0x3c')](_0x1139e1[_0x1d33('0x39')],{'$or':_[_0x1d33('0x28')](_0x1139e1[_0x1d33('0x33')],function(_0x5455a1){var _0x12cb95={};_0x12cb95[_0x5455a1]={'$like':'%'+_0x466eaf[_0x1d33('0x2e')][_0x1d33('0x3b')]+'%'};return _0x12cb95;})});}_0x1139e1=_[_0x1d33('0x3c')]({},_0x1139e1,_0x466eaf[_0x1d33('0x3e')]);return _0x313fc3[_0x1d33('0x4b')](_0x1139e1);}})[_0x1d33('0x22')](function(_0x4bfd31){if(_0x4bfd31){_0x21c2f6=_0x4bfd31[_0x1d33('0x34')];if(!_0x466eaf[_0x1d33('0x2e')][_0x1d33('0x35')](_0x1d33('0x36'))){_0x1139e1[_0x1d33('0x1d')]=qs['limit'](_0x466eaf['query'][_0x1d33('0x1d')]);_0x1139e1[_0x1d33('0x1a')]=qs[_0x1d33('0x1a')](_0x466eaf['query'][_0x1d33('0x1a')]);}return _0x313fc3[_0x1d33('0x4b')](_0x1139e1);}})['then'](function(_0x1ec2ad){if(_0x1ec2ad){return _0x1ec2ad?{'count':_0x21c2f6,'rows':_0x1ec2ad}:null;}})[_0x1d33('0x22')](respondWithResult(_0x57cfb2,null))['catch'](handleError(_0x57cfb2,null));};exports['getDescriptions']=function(_0x2441b6,_0x435850,_0x1f3c66){var _0x36c6a7={};var _0x44eb35={};var _0x2acded;var _0x466390;return db['ServicenowConfiguration'][_0x1d33('0x49')]({'where':{'id':_0x2441b6[_0x1d33('0x42')]['id']}})['then'](handleEntityNotFound(_0x435850,null))['then'](function(_0x111a8e){if(_0x111a8e){_0x2acded=_0x111a8e;_0x44eb35[_0x1d33('0x2d')]=_[_0x1d33('0x2f')](db[_0x1d33('0x4a')]['rawAttributes']);_0x44eb35['query']=_[_0x1d33('0x2f')](_0x2441b6[_0x1d33('0x2e')]);_0x44eb35['filters']=_['intersection'](_0x44eb35[_0x1d33('0x2d')],_0x44eb35[_0x1d33('0x2e')]);_0x36c6a7[_0x1d33('0x33')]=_[_0x1d33('0x31')](_0x44eb35[_0x1d33('0x2d')],qs[_0x1d33('0x32')](_0x2441b6[_0x1d33('0x2e')][_0x1d33('0x32')]));_0x36c6a7[_0x1d33('0x33')]=_0x36c6a7[_0x1d33('0x33')][_0x1d33('0x34')]?_0x36c6a7['attributes']:_0x44eb35[_0x1d33('0x2d')];_0x36c6a7[_0x1d33('0x37')]=qs['sort'](_0x2441b6[_0x1d33('0x2e')]['sort']);_0x36c6a7[_0x1d33('0x39')]=qs[_0x1d33('0x30')](_[_0x1d33('0x3a')](_0x2441b6[_0x1d33('0x2e')],_0x44eb35['filters']));if(_0x2441b6['query'][_0x1d33('0x3b')]){_0x36c6a7['where']=_['merge'](_0x36c6a7[_0x1d33('0x39')],{'$or':_[_0x1d33('0x28')](_0x36c6a7['attributes'],function(_0x573164){var _0x4e43fc={};_0x4e43fc[_0x573164]={'$like':'%'+_0x2441b6[_0x1d33('0x2e')][_0x1d33('0x3b')]+'%'};return _0x4e43fc;})});}_0x36c6a7=_[_0x1d33('0x3c')]({},_0x36c6a7,_0x2441b6[_0x1d33('0x3e')]);return _0x2acded[_0x1d33('0x4c')](_0x36c6a7);}})[_0x1d33('0x22')](function(_0x1028b1){if(_0x1028b1){_0x466390=_0x1028b1[_0x1d33('0x34')];if(!_0x2441b6[_0x1d33('0x2e')][_0x1d33('0x35')](_0x1d33('0x36'))){_0x36c6a7[_0x1d33('0x1d')]=qs[_0x1d33('0x1d')](_0x2441b6[_0x1d33('0x2e')][_0x1d33('0x1d')]);_0x36c6a7[_0x1d33('0x1a')]=qs['offset'](_0x2441b6[_0x1d33('0x2e')][_0x1d33('0x1a')]);}return _0x2acded[_0x1d33('0x4c')](_0x36c6a7);}})['then'](function(_0x59c905){if(_0x59c905){return _0x59c905?{'count':_0x466390,'rows':_0x59c905}:null;}})[_0x1d33('0x22')](respondWithResult(_0x435850,null))['catch'](handleError(_0x435850,null));};
\ No newline at end of file
index 27ab734..1886285 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d41=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','lodash'];(function(_0x405f7c,_0x59aaab){var _0x184afb=function(_0x3a188c){while(--_0x3a188c){_0x405f7c['push'](_0x405f7c['shift']());}};_0x184afb(++_0x59aaab);}(_0x4d41,0x153));var _0x14d4=function(_0x31ba95,_0x3dcb4c){_0x31ba95=_0x31ba95-0x0;var _0x1be31f=_0x4d41[_0x31ba95];return _0x1be31f;};'use strict';var _=require(_0x14d4('0x0'));var util=require(_0x14d4('0x1'));var logger=require(_0x14d4('0x2'))('api');var moment=require(_0x14d4('0x3'));var BPromise=require(_0x14d4('0x4'));var rp=require(_0x14d4('0x5'));var fs=require('fs');var path=require(_0x14d4('0x6'));var rimraf=require(_0x14d4('0x7'));var config=require(_0x14d4('0x8'));var attributes=require('./intServicenowConfiguration.attributes');module['exports']=function(_0x21f1f2,_0x35eabb){return _0x21f1f2[_0x14d4('0x9')]('ServicenowConfiguration',attributes,{'tableName':'int_servicenow_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc7a7=['moment','bluebird','path','rimraf','../../config/environment','./intServicenowConfiguration.attributes','exports','define','int_servicenow_configurations','lodash','util','../../config/logger'];(function(_0x393e29,_0x25a0d8){var _0xe4a1e0=function(_0x31703a){while(--_0x31703a){_0x393e29['push'](_0x393e29['shift']());}};_0xe4a1e0(++_0x25a0d8);}(_0xc7a7,0x171));var _0x7c7a=function(_0x553f0f,_0x4a15f3){_0x553f0f=_0x553f0f-0x0;var _0x20acf8=_0xc7a7[_0x553f0f];return _0x20acf8;};'use strict';var _=require(_0x7c7a('0x0'));var util=require(_0x7c7a('0x1'));var logger=require(_0x7c7a('0x2'))('api');var moment=require(_0x7c7a('0x3'));var BPromise=require(_0x7c7a('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7c7a('0x5'));var rimraf=require(_0x7c7a('0x6'));var config=require(_0x7c7a('0x7'));var attributes=require(_0x7c7a('0x8'));module[_0x7c7a('0x9')]=function(_0xc84abf,_0x346f96){return _0xc84abf[_0x7c7a('0xa')]('ServicenowConfiguration',attributes,{'tableName':_0x7c7a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c5397bd..26bd9e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74af=['result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x20e575,_0x14bc97){var _0x1224a0=function(_0xf0179){while(--_0xf0179){_0x20e575['push'](_0x20e575['shift']());}};_0x1224a0(++_0x14bc97);}(_0x74af,0x178));var _0xf74a=function(_0x39f5bd,_0x32e0b0){_0x39f5bd=_0x39f5bd-0x0;var _0x570d22=_0x74af[_0x39f5bd];return _0x570d22;};'use strict';var _=require(_0xf74a('0x0'));var util=require(_0xf74a('0x1'));var moment=require(_0xf74a('0x2'));var BPromise=require(_0xf74a('0x3'));var rs=require(_0xf74a('0x4'));var fs=require('fs');var Redis=require(_0xf74a('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xf74a('0x6'));var logger=require(_0xf74a('0x7'))(_0xf74a('0x8'));var config=require(_0xf74a('0x9'));var jayson=require(_0xf74a('0xa'));var client=jayson[_0xf74a('0xb')][_0xf74a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x543438,_0x32601f,_0x444108){return new BPromise(function(_0x25fdb7,_0x9015f9){return client[_0xf74a('0xd')](_0x543438,_0x444108)[_0xf74a('0xe')](function(_0x404aa2){logger[_0xf74a('0xf')](_0xf74a('0x10'),_0x32601f,_0xf74a('0x11'));logger[_0xf74a('0x12')](_0xf74a('0x13'),_0x32601f,_0xf74a('0x11'),JSON[_0xf74a('0x14')](_0x404aa2));if(_0x404aa2[_0xf74a('0x15')]){if(_0x404aa2['error'][_0xf74a('0x16')]===0x1f4){logger['error'](_0xf74a('0x10'),_0x32601f,_0x404aa2[_0xf74a('0x15')][_0xf74a('0x17')]);return _0x9015f9(_0x404aa2[_0xf74a('0x15')][_0xf74a('0x17')]);}logger[_0xf74a('0x15')]('ServicenowConfiguration,\x20%s,\x20%s',_0x32601f,_0x404aa2[_0xf74a('0x15')]['message']);return _0x25fdb7(_0x404aa2[_0xf74a('0x15')][_0xf74a('0x17')]);}else{logger['info'](_0xf74a('0x10'),_0x32601f,_0xf74a('0x11'));_0x25fdb7(_0x404aa2[_0xf74a('0x18')][_0xf74a('0x17')]);}})['catch'](function(_0x398d39){logger['error']('ServicenowConfiguration,\x20%s,\x20%s',_0x32601f,_0x398d39);_0x9015f9(_0x398d39);});});}
\ No newline at end of file
+var _0x4c8f=['debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent'];(function(_0x197241,_0x53f3b1){var _0x378d57=function(_0x21b39e){while(--_0x21b39e){_0x197241['push'](_0x197241['shift']());}};_0x378d57(++_0x53f3b1);}(_0x4c8f,0x10b));var _0xf4c8=function(_0x4eef59,_0x19a03d){_0x4eef59=_0x4eef59-0x0;var _0x2e954b=_0x4c8f[_0x4eef59];return _0x2e954b;};'use strict';var _=require(_0xf4c8('0x0'));var util=require(_0xf4c8('0x1'));var moment=require('moment');var BPromise=require(_0xf4c8('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf4c8('0x3'));var db=require(_0xf4c8('0x4'))['db'];var utils=require(_0xf4c8('0x5'));var logger=require(_0xf4c8('0x6'))(_0xf4c8('0x7'));var config=require(_0xf4c8('0x8'));var jayson=require(_0xf4c8('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3faa64,_0x3c3ce0,_0x472ec9){return new BPromise(function(_0x28ad7a,_0x29283d){return client[_0xf4c8('0xa')](_0x3faa64,_0x472ec9)['then'](function(_0xf75c3){logger['info'](_0xf4c8('0xb'),_0x3c3ce0,_0xf4c8('0xc'));logger[_0xf4c8('0xd')](_0xf4c8('0xe'),_0x3c3ce0,'request\x20sent',JSON[_0xf4c8('0xf')](_0xf75c3));if(_0xf75c3[_0xf4c8('0x10')]){if(_0xf75c3[_0xf4c8('0x10')]['code']===0x1f4){logger[_0xf4c8('0x10')]('ServicenowConfiguration,\x20%s,\x20%s',_0x3c3ce0,_0xf75c3[_0xf4c8('0x10')]['message']);return _0x29283d(_0xf75c3[_0xf4c8('0x10')][_0xf4c8('0x11')]);}logger[_0xf4c8('0x10')](_0xf4c8('0xb'),_0x3c3ce0,_0xf75c3['error'][_0xf4c8('0x11')]);return _0x28ad7a(_0xf75c3[_0xf4c8('0x10')]['message']);}else{logger['info'](_0xf4c8('0xb'),_0x3c3ce0,_0xf4c8('0xc'));_0x28ad7a(_0xf75c3[_0xf4c8('0x12')][_0xf4c8('0x11')]);}})[_0xf4c8('0x13')](function(_0x590d82){logger[_0xf4c8('0x10')]('ServicenowConfiguration,\x20%s,\x20%s',_0x3c3ce0,_0x590d82);_0x29283d(_0x590d82);});});}
\ No newline at end of file
index 75e80fb..64c9799 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ec1=['exports','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowField.controller','get','index','isAuthenticated','show','create','put','/:id','update','delete'];(function(_0x4084aa,_0x456d3d){var _0x6953d6=function(_0x417533){while(--_0x417533){_0x4084aa['push'](_0x4084aa['shift']());}};_0x6953d6(++_0x456d3d);}(_0x0ec1,0xd3));var _0x10ec=function(_0x378277,_0x182e8e){_0x378277=_0x378277-0x0;var _0x1a72f6=_0x0ec1[_0x378277];return _0x1a72f6;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x10ec('0x0'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x10ec('0x1'));var interaction=require(_0x10ec('0x2'));var config=require(_0x10ec('0x3'));var controller=require(_0x10ec('0x4'));router[_0x10ec('0x5')]('/',auth['isAuthenticated'](),controller[_0x10ec('0x6')]);router[_0x10ec('0x5')]('/:id',auth[_0x10ec('0x7')](),controller[_0x10ec('0x8')]);router['post']('/',auth['isAuthenticated'](),controller[_0x10ec('0x9')]);router[_0x10ec('0xa')](_0x10ec('0xb'),auth[_0x10ec('0x7')](),controller[_0x10ec('0xc')]);router[_0x10ec('0xd')](_0x10ec('0xb'),auth[_0x10ec('0x7')](),controller['destroy']);module[_0x10ec('0xe')]=router;
\ No newline at end of file
+var _0x6628=['/:id','show','post','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowField.controller','get','isAuthenticated','index'];(function(_0x319a03,_0x4456d4){var _0x3b6704=function(_0x1f3476){while(--_0x1f3476){_0x319a03['push'](_0x319a03['shift']());}};_0x3b6704(++_0x4456d4);}(_0x6628,0x113));var _0x8662=function(_0x10e763,_0x4ed7df){_0x10e763=_0x10e763-0x0;var _0x53abee=_0x6628[_0x10e763];return _0x53abee;};'use strict';var multer=require(_0x8662('0x0'));var util=require(_0x8662('0x1'));var path=require(_0x8662('0x2'));var timeout=require(_0x8662('0x3'));var express=require(_0x8662('0x4'));var router=express['Router']();var fs_extra=require(_0x8662('0x5'));var auth=require(_0x8662('0x6'));var interaction=require(_0x8662('0x7'));var config=require(_0x8662('0x8'));var controller=require(_0x8662('0x9'));router[_0x8662('0xa')]('/',auth[_0x8662('0xb')](),controller[_0x8662('0xc')]);router['get'](_0x8662('0xd'),auth[_0x8662('0xb')](),controller[_0x8662('0xe')]);router[_0x8662('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['put']('/:id',auth[_0x8662('0xb')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x8662('0x10')]);module[_0x8662('0x11')]=router;
\ No newline at end of file
index 7cc5c2b..ec7b4e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae76=['string','variable','customVariable','keyValue','picklist','STRING','sequelize','ENUM'];(function(_0x45d886,_0x694715){var _0x3c1904=function(_0x120ec1){while(--_0x120ec1){_0x45d886['push'](_0x45d886['shift']());}};_0x3c1904(++_0x694715);}(_0xae76,0xde));var _0x6ae7=function(_0x3962b6,_0x40f112){_0x3962b6=_0x3962b6-0x0;var _0xbe12e4=_0xae76[_0x3962b6];return _0xbe12e4;};'use strict';var Sequelize=require(_0x6ae7('0x0'));module['exports']={'type':{'type':Sequelize[_0x6ae7('0x1')](_0x6ae7('0x2'),_0x6ae7('0x3'),_0x6ae7('0x4'),_0x6ae7('0x5'),_0x6ae7('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0x6ae7('0x7')]},'key':{'type':Sequelize[_0x6ae7('0x7')]},'keyType':{'type':Sequelize[_0x6ae7('0x1')]('string','variable',_0x6ae7('0x4'))},'keyContent':{'type':Sequelize[_0x6ae7('0x7')]},'idField':{'type':Sequelize[_0x6ae7('0x7')]},'nameField':{'type':Sequelize[_0x6ae7('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xdcda=['customVariable','picklist','STRING','ENUM','BOOLEAN','sequelize','exports','string','variable'];(function(_0x343aa1,_0x443588){var _0x145484=function(_0x4f14ee){while(--_0x4f14ee){_0x343aa1['push'](_0x343aa1['shift']());}};_0x145484(++_0x443588);}(_0xdcda,0xa7));var _0xadcd=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0xdcda[_0xfae23b];return _0x200640;};'use strict';var Sequelize=require(_0xadcd('0x0'));module[_0xadcd('0x1')]={'type':{'type':Sequelize['ENUM'](_0xadcd('0x2'),_0xadcd('0x3'),_0xadcd('0x4'),'keyValue',_0xadcd('0x5')),'defaultValue':_0xadcd('0x2')},'content':{'type':Sequelize[_0xadcd('0x6')]},'key':{'type':Sequelize[_0xadcd('0x6')]},'keyType':{'type':Sequelize[_0xadcd('0x7')](_0xadcd('0x2'),_0xadcd('0x3'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xadcd('0x6')]},'nameField':{'type':Sequelize[_0xadcd('0x6')]},'customField':{'type':Sequelize[_0xadcd('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xadcd('0x6')]}};
\ No newline at end of file
index 2936c93..fcaeb4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafe3=['offset','undefined','limit','count','set','reject','update','then','destroy','end','stack','name','ServicenowField','fieldName','type','keys','query','filters','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','sort','where','filter','merge','options','includeAll','findAll','catch','show','params','include','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','status','json'];(function(_0x5190d1,_0x6b8d68){var _0x4ce3f3=function(_0xe7170a){while(--_0xe7170a){_0x5190d1['push'](_0x5190d1['shift']());}};_0x4ce3f3(++_0x6b8d68);}(_0xafe3,0x1ad));var _0x3afe=function(_0x2dedcc,_0x1f4ace){_0x2dedcc=_0x2dedcc-0x0;var _0x3c16ab=_0xafe3[_0x2dedcc];return _0x3c16ab;};'use strict';var emlformat=require(_0x3afe('0x0'));var rimraf=require(_0x3afe('0x1'));var zipdir=require(_0x3afe('0x2'));var jsonpatch=require(_0x3afe('0x3'));var rp=require(_0x3afe('0x4'));var moment=require('moment');var BPromise=require(_0x3afe('0x5'));var Mustache=require(_0x3afe('0x6'));var util=require(_0x3afe('0x7'));var path=require(_0x3afe('0x8'));var sox=require(_0x3afe('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3afe('0xa'));var squel=require(_0x3afe('0xb'));var crypto=require('crypto');var jsforce=require(_0x3afe('0xc'));var deskjs=require(_0x3afe('0xd'));var toCsv=require(_0x3afe('0xe'));var querystring=require(_0x3afe('0xf'));var Papa=require(_0x3afe('0x10'));var Redis=require(_0x3afe('0x11'));var authService=require(_0x3afe('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x3afe('0x13'));var hardwareService=require(_0x3afe('0x14'));var logger=require('../../config/logger')(_0x3afe('0x15'));var utils=require(_0x3afe('0x16'));var config=require(_0x3afe('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x31bd1a,_0x22a312){_0x22a312=_0x22a312||0xcc;return function(_0x142508){if(_0x142508){return _0x31bd1a['sendStatus'](_0x22a312);}return _0x31bd1a[_0x3afe('0x18')](_0x22a312)['end']();};}function respondWithResult(_0x439f59,_0x1a8990){_0x1a8990=_0x1a8990||0xc8;return function(_0x28f61b){if(_0x28f61b){return _0x439f59[_0x3afe('0x18')](_0x1a8990)[_0x3afe('0x19')](_0x28f61b);}};}function respondWithFilteredResult(_0x1859db,_0x11407f){return function(_0x55bf5d){if(_0x55bf5d){var _0x4a70a0=typeof _0x11407f[_0x3afe('0x1a')]===_0x3afe('0x1b')&&typeof _0x11407f[_0x3afe('0x1c')]===_0x3afe('0x1b');var _0x372c8b=_0x55bf5d['count'];var _0x4af4b9=_0x4a70a0?0x0:_0x11407f[_0x3afe('0x1a')];var _0xdb252d=_0x4a70a0?_0x55bf5d[_0x3afe('0x1d')]:_0x11407f[_0x3afe('0x1a')]+_0x11407f[_0x3afe('0x1c')];var _0x4721de;if(_0xdb252d>=_0x372c8b){_0xdb252d=_0x372c8b;_0x4721de=0xc8;}else{_0x4721de=0xce;}_0x1859db[_0x3afe('0x18')](_0x4721de);return _0x1859db[_0x3afe('0x1e')]('Content-Range',_0x4af4b9+'-'+_0xdb252d+'/'+_0x372c8b)[_0x3afe('0x19')](_0x55bf5d);}return null;};}function patchUpdates(_0x1da63c){return function(_0x5766cb){try{jsonpatch['apply'](_0x5766cb,_0x1da63c,!![]);}catch(_0x512032){return BPromise[_0x3afe('0x1f')](_0x512032);}return _0x5766cb['save']();};}function saveUpdates(_0x544829,_0x2f2951){return function(_0x354810){if(_0x354810){return _0x354810[_0x3afe('0x20')](_0x544829)[_0x3afe('0x21')](function(_0x7e326f){return _0x7e326f;});}return null;};}function removeEntity(_0x45d039,_0x4add36){return function(_0x20e889){if(_0x20e889){return _0x20e889[_0x3afe('0x22')]()['then'](function(){_0x45d039['status'](0xcc)[_0x3afe('0x23')]();});}};}function handleEntityNotFound(_0x572ec5,_0x4844c4){return function(_0x3015b3){if(!_0x3015b3){_0x572ec5['sendStatus'](0x194);}return _0x3015b3;};}function handleError(_0x4c7cc3,_0x520674){_0x520674=_0x520674||0x1f4;return function(_0x5abd4c){logger['error'](_0x5abd4c[_0x3afe('0x24')]);if(_0x5abd4c['name']){delete _0x5abd4c[_0x3afe('0x25')];}_0x4c7cc3['status'](_0x520674)['send'](_0x5abd4c);};}exports['index']=function(_0x50837f,_0x4647b4){var _0xfe1a4f={},_0x186dab={},_0x5d7965={'count':0x0,'rows':[]};var _0x339ffd=_['map'](db[_0x3afe('0x26')]['rawAttributes'],function(_0x9a871e){return{'name':_0x9a871e[_0x3afe('0x27')],'type':_0x9a871e[_0x3afe('0x28')]['key']};});_0x186dab['model']=_['map'](_0x339ffd,_0x3afe('0x25'));_0x186dab['query']=_[_0x3afe('0x29')](_0x50837f[_0x3afe('0x2a')]);_0x186dab[_0x3afe('0x2b')]=_[_0x3afe('0x2c')](_0x186dab['model'],_0x186dab[_0x3afe('0x2a')]);_0xfe1a4f[_0x3afe('0x2d')]=_[_0x3afe('0x2c')](_0x186dab['model'],qs[_0x3afe('0x2e')](_0x50837f['query'][_0x3afe('0x2e')]));_0xfe1a4f['attributes']=_0xfe1a4f[_0x3afe('0x2d')][_0x3afe('0x2f')]?_0xfe1a4f[_0x3afe('0x2d')]:_0x186dab[_0x3afe('0x30')];if(!_0x50837f['query'][_0x3afe('0x31')](_0x3afe('0x32'))){_0xfe1a4f['limit']=qs['limit'](_0x50837f['query'][_0x3afe('0x1c')]);_0xfe1a4f[_0x3afe('0x1a')]=qs[_0x3afe('0x1a')](_0x50837f['query']['offset']);}_0xfe1a4f['order']=qs[_0x3afe('0x33')](_0x50837f['query'][_0x3afe('0x33')]);_0xfe1a4f[_0x3afe('0x34')]=qs[_0x3afe('0x2b')](_['pick'](_0x50837f['query'],_0x186dab[_0x3afe('0x2b')]),_0x339ffd);if(_0x50837f[_0x3afe('0x2a')][_0x3afe('0x35')]){_0xfe1a4f[_0x3afe('0x34')]=_[_0x3afe('0x36')](_0xfe1a4f[_0x3afe('0x34')],{'$or':_['map'](_0x339ffd,function(_0x24e00f){if(_0x24e00f[_0x3afe('0x28')]!=='VIRTUAL'){var _0x953e44={};_0x953e44[_0x24e00f[_0x3afe('0x25')]]={'$like':'%'+_0x50837f[_0x3afe('0x2a')]['filter']+'%'};return _0x953e44;}})});}_0xfe1a4f=_[_0x3afe('0x36')]({},_0xfe1a4f,_0x50837f[_0x3afe('0x37')]);var _0x2068a3={'where':_0xfe1a4f[_0x3afe('0x34')]};return db[_0x3afe('0x26')]['count'](_0x2068a3)[_0x3afe('0x21')](function(_0x23a265){_0x5d7965[_0x3afe('0x1d')]=_0x23a265;if(_0x50837f[_0x3afe('0x2a')][_0x3afe('0x38')]){_0xfe1a4f['include']=[{'all':!![]}];}return db[_0x3afe('0x26')][_0x3afe('0x39')](_0xfe1a4f);})[_0x3afe('0x21')](function(_0x2cdba5){_0x5d7965['rows']=_0x2cdba5;return _0x5d7965;})[_0x3afe('0x21')](respondWithFilteredResult(_0x4647b4,_0xfe1a4f))[_0x3afe('0x3a')](handleError(_0x4647b4,null));};exports[_0x3afe('0x3b')]=function(_0x412fcb,_0x4dedfe){var _0xd69c44={'raw':!![],'where':{'id':_0x412fcb[_0x3afe('0x3c')]['id']}},_0xf8dc84={};_0xf8dc84[_0x3afe('0x30')]=_[_0x3afe('0x29')](db['ServicenowField']['rawAttributes']);_0xf8dc84['query']=_[_0x3afe('0x29')](_0x412fcb[_0x3afe('0x2a')]);_0xf8dc84[_0x3afe('0x2b')]=_[_0x3afe('0x2c')](_0xf8dc84[_0x3afe('0x30')],_0xf8dc84[_0x3afe('0x2a')]);_0xd69c44[_0x3afe('0x2d')]=_['intersection'](_0xf8dc84[_0x3afe('0x30')],qs[_0x3afe('0x2e')](_0x412fcb[_0x3afe('0x2a')][_0x3afe('0x2e')]));_0xd69c44[_0x3afe('0x2d')]=_0xd69c44[_0x3afe('0x2d')]['length']?_0xd69c44[_0x3afe('0x2d')]:_0xf8dc84[_0x3afe('0x30')];if(_0x412fcb['query'][_0x3afe('0x38')]){_0xd69c44[_0x3afe('0x3d')]=[{'all':!![]}];}_0xd69c44=_['merge']({},_0xd69c44,_0x412fcb[_0x3afe('0x37')]);return db[_0x3afe('0x26')][_0x3afe('0x3e')](_0xd69c44)[_0x3afe('0x21')](handleEntityNotFound(_0x4dedfe,null))['then'](respondWithResult(_0x4dedfe,null))[_0x3afe('0x3a')](handleError(_0x4dedfe,null));};exports[_0x3afe('0x3f')]=function(_0x19b25a,_0x3d6f22){return db[_0x3afe('0x26')][_0x3afe('0x3f')](_0x19b25a[_0x3afe('0x40')],{})[_0x3afe('0x21')](respondWithResult(_0x3d6f22,0xc9))[_0x3afe('0x3a')](handleError(_0x3d6f22,null));};exports[_0x3afe('0x20')]=function(_0x5f344e,_0x54a8d5){if(_0x5f344e['body']['id']){delete _0x5f344e[_0x3afe('0x40')]['id'];}return db['ServicenowField'][_0x3afe('0x3e')]({'where':{'id':_0x5f344e['params']['id']}})[_0x3afe('0x21')](handleEntityNotFound(_0x54a8d5,null))[_0x3afe('0x21')](saveUpdates(_0x5f344e[_0x3afe('0x40')],null))[_0x3afe('0x21')](respondWithResult(_0x54a8d5,null))['catch'](handleError(_0x54a8d5,null));};exports[_0x3afe('0x22')]=function(_0x3bafb0,_0x431489){return db[_0x3afe('0x26')]['find']({'where':{'id':_0x3bafb0[_0x3afe('0x3c')]['id']}})['then'](handleEntityNotFound(_0x431489,null))[_0x3afe('0x21')](removeEntity(_0x431489,null))[_0x3afe('0x3a')](handleError(_0x431489,null));};
\ No newline at end of file
+var _0xebc0=['sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','undefined','limit','count','offset','set','Content-Range','json','reject','update','then','status','error','stack','name','send','ServicenowField','rawAttributes','fieldName','type','key','model','map','keys','filters','intersection','fields','query','attributes','length','hasOwnProperty','nolimit','sort','where','filter','VIRTUAL','merge','options','include','findAll','rows','catch','params','includeAll','find','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache'];(function(_0x4852ad,_0x3707b2){var _0x8563e8=function(_0x29528e){while(--_0x29528e){_0x4852ad['push'](_0x4852ad['shift']());}};_0x8563e8(++_0x3707b2);}(_0xebc0,0x111));var _0x0ebc=function(_0x331f2d,_0x4e0fe5){_0x331f2d=_0x331f2d-0x0;var _0x3d9ea1=_0xebc0[_0x331f2d];return _0x3d9ea1;};'use strict';var emlformat=require(_0x0ebc('0x0'));var rimraf=require(_0x0ebc('0x1'));var zipdir=require(_0x0ebc('0x2'));var jsonpatch=require(_0x0ebc('0x3'));var rp=require(_0x0ebc('0x4'));var moment=require(_0x0ebc('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x0ebc('0x6'));var util=require('util');var path=require('path');var sox=require(_0x0ebc('0x7'));var csv=require(_0x0ebc('0x8'));var ejs=require(_0x0ebc('0x9'));var fs=require('fs');var fs_extra=require(_0x0ebc('0xa'));var _=require(_0x0ebc('0xb'));var squel=require(_0x0ebc('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0ebc('0xd'));var toCsv=require(_0x0ebc('0x8'));var querystring=require('querystring');var Papa=require(_0x0ebc('0xe'));var Redis=require('ioredis');var authService=require(_0x0ebc('0xf'));var qs=require(_0x0ebc('0x10'));var as=require(_0x0ebc('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x0ebc('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x0ebc('0x13'));var db=require(_0x0ebc('0x14'))['db'];function respondWithStatusCode(_0x20cb40,_0x24f568){_0x24f568=_0x24f568||0xcc;return function(_0x7f54cc){if(_0x7f54cc){return _0x20cb40[_0x0ebc('0x15')](_0x24f568);}return _0x20cb40['status'](_0x24f568)[_0x0ebc('0x16')]();};}function respondWithResult(_0xc9a5ef,_0x54f318){_0x54f318=_0x54f318||0xc8;return function(_0x2f45bf){if(_0x2f45bf){return _0xc9a5ef['status'](_0x54f318)['json'](_0x2f45bf);}};}function respondWithFilteredResult(_0x46d9df,_0x237d5e){return function(_0x564bd2){if(_0x564bd2){var _0x557da9=typeof _0x237d5e['offset']===_0x0ebc('0x17')&&typeof _0x237d5e[_0x0ebc('0x18')]===_0x0ebc('0x17');var _0x5a73a7=_0x564bd2[_0x0ebc('0x19')];var _0x5f0594=_0x557da9?0x0:_0x237d5e[_0x0ebc('0x1a')];var _0x1161cc=_0x557da9?_0x564bd2[_0x0ebc('0x19')]:_0x237d5e[_0x0ebc('0x1a')]+_0x237d5e['limit'];var _0x4e6e9c;if(_0x1161cc>=_0x5a73a7){_0x1161cc=_0x5a73a7;_0x4e6e9c=0xc8;}else{_0x4e6e9c=0xce;}_0x46d9df['status'](_0x4e6e9c);return _0x46d9df[_0x0ebc('0x1b')](_0x0ebc('0x1c'),_0x5f0594+'-'+_0x1161cc+'/'+_0x5a73a7)[_0x0ebc('0x1d')](_0x564bd2);}return null;};}function patchUpdates(_0x3256a9){return function(_0x3641aa){try{jsonpatch['apply'](_0x3641aa,_0x3256a9,!![]);}catch(_0x388125){return BPromise[_0x0ebc('0x1e')](_0x388125);}return _0x3641aa['save']();};}function saveUpdates(_0x10006f,_0x59b888){return function(_0xf8dc5a){if(_0xf8dc5a){return _0xf8dc5a[_0x0ebc('0x1f')](_0x10006f)[_0x0ebc('0x20')](function(_0x2704db){return _0x2704db;});}return null;};}function removeEntity(_0x33ad39,_0x54f9d1){return function(_0x4da89b){if(_0x4da89b){return _0x4da89b['destroy']()[_0x0ebc('0x20')](function(){_0x33ad39[_0x0ebc('0x21')](0xcc)[_0x0ebc('0x16')]();});}};}function handleEntityNotFound(_0x18f8fe,_0x3c7e94){return function(_0x13090e){if(!_0x13090e){_0x18f8fe[_0x0ebc('0x15')](0x194);}return _0x13090e;};}function handleError(_0x11da14,_0x460856){_0x460856=_0x460856||0x1f4;return function(_0x3ad702){logger[_0x0ebc('0x22')](_0x3ad702[_0x0ebc('0x23')]);if(_0x3ad702[_0x0ebc('0x24')]){delete _0x3ad702[_0x0ebc('0x24')];}_0x11da14[_0x0ebc('0x21')](_0x460856)[_0x0ebc('0x25')](_0x3ad702);};}exports['index']=function(_0x44b2f5,_0x3ce509){var _0x513969={},_0x463019={},_0x102dde={'count':0x0,'rows':[]};var _0x2fe1cc=_['map'](db[_0x0ebc('0x26')][_0x0ebc('0x27')],function(_0x3698d2){return{'name':_0x3698d2[_0x0ebc('0x28')],'type':_0x3698d2[_0x0ebc('0x29')][_0x0ebc('0x2a')]};});_0x463019[_0x0ebc('0x2b')]=_[_0x0ebc('0x2c')](_0x2fe1cc,_0x0ebc('0x24'));_0x463019['query']=_[_0x0ebc('0x2d')](_0x44b2f5['query']);_0x463019[_0x0ebc('0x2e')]=_[_0x0ebc('0x2f')](_0x463019['model'],_0x463019['query']);_0x513969['attributes']=_['intersection'](_0x463019['model'],qs[_0x0ebc('0x30')](_0x44b2f5[_0x0ebc('0x31')][_0x0ebc('0x30')]));_0x513969[_0x0ebc('0x32')]=_0x513969['attributes'][_0x0ebc('0x33')]?_0x513969[_0x0ebc('0x32')]:_0x463019['model'];if(!_0x44b2f5['query'][_0x0ebc('0x34')](_0x0ebc('0x35'))){_0x513969[_0x0ebc('0x18')]=qs[_0x0ebc('0x18')](_0x44b2f5[_0x0ebc('0x31')][_0x0ebc('0x18')]);_0x513969[_0x0ebc('0x1a')]=qs[_0x0ebc('0x1a')](_0x44b2f5['query']['offset']);}_0x513969['order']=qs[_0x0ebc('0x36')](_0x44b2f5[_0x0ebc('0x31')][_0x0ebc('0x36')]);_0x513969[_0x0ebc('0x37')]=qs[_0x0ebc('0x2e')](_['pick'](_0x44b2f5[_0x0ebc('0x31')],_0x463019['filters']),_0x2fe1cc);if(_0x44b2f5[_0x0ebc('0x31')][_0x0ebc('0x38')]){_0x513969[_0x0ebc('0x37')]=_['merge'](_0x513969[_0x0ebc('0x37')],{'$or':_['map'](_0x2fe1cc,function(_0x4884d4){if(_0x4884d4[_0x0ebc('0x29')]!==_0x0ebc('0x39')){var _0x2a21c2={};_0x2a21c2[_0x4884d4[_0x0ebc('0x24')]]={'$like':'%'+_0x44b2f5['query'][_0x0ebc('0x38')]+'%'};return _0x2a21c2;}})});}_0x513969=_[_0x0ebc('0x3a')]({},_0x513969,_0x44b2f5[_0x0ebc('0x3b')]);var _0x39f0f3={'where':_0x513969[_0x0ebc('0x37')]};return db[_0x0ebc('0x26')][_0x0ebc('0x19')](_0x39f0f3)[_0x0ebc('0x20')](function(_0x8732d3){_0x102dde['count']=_0x8732d3;if(_0x44b2f5['query']['includeAll']){_0x513969[_0x0ebc('0x3c')]=[{'all':!![]}];}return db[_0x0ebc('0x26')][_0x0ebc('0x3d')](_0x513969);})[_0x0ebc('0x20')](function(_0x4aab40){_0x102dde[_0x0ebc('0x3e')]=_0x4aab40;return _0x102dde;})[_0x0ebc('0x20')](respondWithFilteredResult(_0x3ce509,_0x513969))[_0x0ebc('0x3f')](handleError(_0x3ce509,null));};exports['show']=function(_0x1a7ddd,_0x163a54){var _0x4b3654={'raw':!![],'where':{'id':_0x1a7ddd[_0x0ebc('0x40')]['id']}},_0x572753={};_0x572753[_0x0ebc('0x2b')]=_[_0x0ebc('0x2d')](db[_0x0ebc('0x26')][_0x0ebc('0x27')]);_0x572753[_0x0ebc('0x31')]=_[_0x0ebc('0x2d')](_0x1a7ddd[_0x0ebc('0x31')]);_0x572753[_0x0ebc('0x2e')]=_[_0x0ebc('0x2f')](_0x572753[_0x0ebc('0x2b')],_0x572753[_0x0ebc('0x31')]);_0x4b3654['attributes']=_[_0x0ebc('0x2f')](_0x572753[_0x0ebc('0x2b')],qs[_0x0ebc('0x30')](_0x1a7ddd[_0x0ebc('0x31')][_0x0ebc('0x30')]));_0x4b3654[_0x0ebc('0x32')]=_0x4b3654[_0x0ebc('0x32')]['length']?_0x4b3654['attributes']:_0x572753[_0x0ebc('0x2b')];if(_0x1a7ddd[_0x0ebc('0x31')][_0x0ebc('0x41')]){_0x4b3654['include']=[{'all':!![]}];}_0x4b3654=_[_0x0ebc('0x3a')]({},_0x4b3654,_0x1a7ddd[_0x0ebc('0x3b')]);return db[_0x0ebc('0x26')][_0x0ebc('0x42')](_0x4b3654)['then'](handleEntityNotFound(_0x163a54,null))['then'](respondWithResult(_0x163a54,null))[_0x0ebc('0x3f')](handleError(_0x163a54,null));};exports[_0x0ebc('0x43')]=function(_0x4c5687,_0xc9b103){return db['ServicenowField'][_0x0ebc('0x43')](_0x4c5687[_0x0ebc('0x44')],{})['then'](respondWithResult(_0xc9b103,0xc9))[_0x0ebc('0x3f')](handleError(_0xc9b103,null));};exports[_0x0ebc('0x1f')]=function(_0x35f84e,_0x250479){if(_0x35f84e[_0x0ebc('0x44')]['id']){delete _0x35f84e[_0x0ebc('0x44')]['id'];}return db[_0x0ebc('0x26')][_0x0ebc('0x42')]({'where':{'id':_0x35f84e[_0x0ebc('0x40')]['id']}})['then'](handleEntityNotFound(_0x250479,null))[_0x0ebc('0x20')](saveUpdates(_0x35f84e[_0x0ebc('0x44')],null))[_0x0ebc('0x20')](respondWithResult(_0x250479,null))[_0x0ebc('0x3f')](handleError(_0x250479,null));};exports[_0x0ebc('0x45')]=function(_0x68c42e,_0x146fa9){return db[_0x0ebc('0x26')][_0x0ebc('0x42')]({'where':{'id':_0x68c42e[_0x0ebc('0x40')]['id']}})[_0x0ebc('0x20')](handleEntityNotFound(_0x146fa9,null))['then'](removeEntity(_0x146fa9,null))[_0x0ebc('0x3f')](handleError(_0x146fa9,null));};
\ No newline at end of file
index cc19c23..bee9f93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b24=['ServicenowField','int_servicenow_fields','servicenow_unique_index','FieldId','../../config/logger','api','moment','path','rimraf','../../config/environment','./intServicenowField.attributes','exports','define'];(function(_0x3d5d41,_0x1a962b){var _0x27e366=function(_0x417d54){while(--_0x417d54){_0x3d5d41['push'](_0x3d5d41['shift']());}};_0x27e366(++_0x1a962b);}(_0x5b24,0x122));var _0x45b2=function(_0x40e5e7,_0x5de9fb){_0x40e5e7=_0x40e5e7-0x0;var _0x305d7b=_0x5b24[_0x40e5e7];return _0x305d7b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x45b2('0x0'))(_0x45b2('0x1'));var moment=require(_0x45b2('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x45b2('0x3'));var rimraf=require(_0x45b2('0x4'));var config=require(_0x45b2('0x5'));var attributes=require(_0x45b2('0x6'));module[_0x45b2('0x7')]=function(_0x137390,_0x283261){return _0x137390[_0x45b2('0x8')](_0x45b2('0x9'),attributes,{'tableName':_0x45b2('0xa'),'paranoid':![],'indexes':[{'name':_0x45b2('0xb'),'fields':['idField',_0x45b2('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd82a=['ServicenowField','int_servicenow_fields','servicenow_unique_index','idField','FieldId','lodash','api','bluebird','request-promise','path','rimraf','../../config/environment','./intServicenowField.attributes','exports','define'];(function(_0x527824,_0xc824a9){var _0xc8b8ed=function(_0x1b0e19){while(--_0x1b0e19){_0x527824['push'](_0x527824['shift']());}};_0xc8b8ed(++_0xc824a9);}(_0xd82a,0x7d));var _0xad82=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xd82a[_0x167cc1];return _0x10bc4b;};'use strict';var _=require(_0xad82('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xad82('0x1'));var moment=require('moment');var BPromise=require(_0xad82('0x2'));var rp=require(_0xad82('0x3'));var fs=require('fs');var path=require(_0xad82('0x4'));var rimraf=require(_0xad82('0x5'));var config=require(_0xad82('0x6'));var attributes=require(_0xad82('0x7'));module[_0xad82('0x8')]=function(_0x5710d5,_0xeb6f94){return _0x5710d5[_0xad82('0x9')](_0xad82('0xa'),attributes,{'tableName':_0xad82('0xb'),'paranoid':![],'indexes':[{'name':_0xad82('0xc'),'fields':[_0xad82('0xd'),_0xad82('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 812137c..d9c9473 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda3f=['rpc','jayson/promise','client','request','then','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','../../mysqldb','../../config/logger'];(function(_0x10d0f0,_0x1eba3d){var _0x93e308=function(_0x388548){while(--_0x388548){_0x10d0f0['push'](_0x10d0f0['shift']());}};_0x93e308(++_0x1eba3d);}(_0xda3f,0xec));var _0xfda3=function(_0x5af302,_0xf4c44e){_0x5af302=_0x5af302-0x0;var _0x412b6e=_0xda3f[_0x5af302];return _0x412b6e;};'use strict';var _=require('lodash');var util=require(_0xfda3('0x0'));var moment=require(_0xfda3('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfda3('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xfda3('0x3'))(_0xfda3('0x4'));var config=require('../../config/environment');var jayson=require(_0xfda3('0x5'));var client=jayson[_0xfda3('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4e72d1,_0x316792,_0x42476a){return new BPromise(function(_0x125e2a,_0x4018c0){return client[_0xfda3('0x7')](_0x4e72d1,_0x42476a)[_0xfda3('0x8')](function(_0x46655c){logger[_0xfda3('0x9')](_0xfda3('0xa'),_0x316792,_0xfda3('0xb'));logger[_0xfda3('0xc')](_0xfda3('0xd'),_0x316792,'request\x20sent',JSON[_0xfda3('0xe')](_0x46655c));if(_0x46655c[_0xfda3('0xf')]){if(_0x46655c[_0xfda3('0xf')][_0xfda3('0x10')]===0x1f4){logger[_0xfda3('0xf')]('ServicenowField,\x20%s,\x20%s',_0x316792,_0x46655c[_0xfda3('0xf')]['message']);return _0x4018c0(_0x46655c[_0xfda3('0xf')][_0xfda3('0x11')]);}logger['error']('ServicenowField,\x20%s,\x20%s',_0x316792,_0x46655c['error'][_0xfda3('0x11')]);return _0x125e2a(_0x46655c[_0xfda3('0xf')]['message']);}else{logger['info']('ServicenowField,\x20%s,\x20%s',_0x316792,_0xfda3('0xb'));_0x125e2a(_0x46655c[_0xfda3('0x12')][_0xfda3('0x11')]);}})[_0xfda3('0x13')](function(_0x34900d){logger[_0xfda3('0xf')](_0xfda3('0xa'),_0x316792,_0x34900d);_0x4018c0(_0x34900d);});});}
\ No newline at end of file
+var _0xda3f=['rpc','jayson/promise','client','request','then','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','../../mysqldb','../../config/logger'];(function(_0x5d72da,_0xb7ce32){var _0x43ebe7=function(_0x503755){while(--_0x503755){_0x5d72da['push'](_0x5d72da['shift']());}};_0x43ebe7(++_0xb7ce32);}(_0xda3f,0xec));var _0xfda3=function(_0x287096,_0x1c8c29){_0x287096=_0x287096-0x0;var _0x1545d4=_0xda3f[_0x287096];return _0x1545d4;};'use strict';var _=require('lodash');var util=require(_0xfda3('0x0'));var moment=require(_0xfda3('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfda3('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xfda3('0x3'))(_0xfda3('0x4'));var config=require('../../config/environment');var jayson=require(_0xfda3('0x5'));var client=jayson[_0xfda3('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4e72d1,_0x316792,_0x42476a){return new BPromise(function(_0x125e2a,_0x4018c0){return client[_0xfda3('0x7')](_0x4e72d1,_0x42476a)[_0xfda3('0x8')](function(_0x46655c){logger[_0xfda3('0x9')](_0xfda3('0xa'),_0x316792,_0xfda3('0xb'));logger[_0xfda3('0xc')](_0xfda3('0xd'),_0x316792,'request\x20sent',JSON[_0xfda3('0xe')](_0x46655c));if(_0x46655c[_0xfda3('0xf')]){if(_0x46655c[_0xfda3('0xf')][_0xfda3('0x10')]===0x1f4){logger[_0xfda3('0xf')]('ServicenowField,\x20%s,\x20%s',_0x316792,_0x46655c[_0xfda3('0xf')]['message']);return _0x4018c0(_0x46655c[_0xfda3('0xf')][_0xfda3('0x11')]);}logger['error']('ServicenowField,\x20%s,\x20%s',_0x316792,_0x46655c['error'][_0xfda3('0x11')]);return _0x125e2a(_0x46655c[_0xfda3('0xf')]['message']);}else{logger['info']('ServicenowField,\x20%s,\x20%s',_0x316792,_0xfda3('0xb'));_0x125e2a(_0x46655c[_0xfda3('0x12')][_0xfda3('0x11')]);}})[_0xfda3('0x13')](function(_0x34900d){logger[_0xfda3('0xf')](_0xfda3('0xa'),_0x316792,_0x34900d);_0x4018c0(_0x34900d);});});}
\ No newline at end of file
index 4598c78..bc4b4c7 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(_0x36ae92,_0x152cdb){var _0x1a95a9=function(_0x5cd4a7){while(--_0x5cd4a7){_0x36ae92['push'](_0x36ae92['shift']());}};_0x1a95a9(++_0x152cdb);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'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(_0xa0aa45,_0x2c7518){var _0x4cbef2=function(_0x4318ea){while(--_0x4318ea){_0xa0aa45['push'](_0xa0aa45['shift']());}};_0x4cbef2(++_0x2c7518);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index 405a155..fd21bab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0xa2cf3c,_0x153e14){var _0x127d55=function(_0x3b494a){while(--_0x3b494a){_0xa2cf3c['push'](_0xa2cf3c['shift']());}};_0x127d55(++_0x153e14);}(_0xa9e0,0x123));var _0x0a9e=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0xa9e0[_0x433a86];return _0x23000c;};'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(_0x29ee3c,_0x12eb99){var _0x3d9d30=function(_0x53360d){while(--_0x53360d){_0x29ee3c['push'](_0x29ee3c['shift']());}};_0x3d9d30(++_0x12eb99);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xa9e0[_0x4243a3];return _0x1b2a33;};'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 0458f6a..8479d18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda5b=['login','JSON','stringify','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','get_module_fields','Calls','values','module_fields','remove','label','endsWith','value','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','rimraf','util','path','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','SugarcrmAccount','rawAttributes','fieldName','model','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','includeAll','findAll','rows','catch','show','params','keys','include','options','find','create','body','getConfigurations','findOne','SugarcrmConfiguration','intersection','pick','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','SugarcrmField','getFields','assigned_user_id','created_by','description','duration_hours','duration_minutes','parent_id','parent_type','parent_name','username','password','remoteUri','lastIndexOf','POST','format','%s%s','/service/v4_1/rest.php'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xda5b,0x177));var _0xbda5=function(_0x17ba7d,_0x3d1ace){_0x17ba7d=_0x17ba7d-0x0;var _0x8fd171=_0xda5b[_0x17ba7d];return _0x8fd171;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbda5('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xbda5('0x1'));var path=require(_0xbda5('0x2'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xbda5('0x3'));var fs=require('fs');var fs_extra=require(_0xbda5('0x4'));var _=require(_0xbda5('0x5'));var squel=require(_0xbda5('0x6'));var crypto=require(_0xbda5('0x7'));var jsforce=require('jsforce');var deskjs=require(_0xbda5('0x8'));var toCsv=require('to-csv');var querystring=require(_0xbda5('0x9'));var Papa=require(_0xbda5('0xa'));var Redis=require(_0xbda5('0xb'));var authService=require(_0xbda5('0xc'));var qs=require(_0xbda5('0xd'));var as=require(_0xbda5('0xe'));var hardwareService=require(_0xbda5('0xf'));var logger=require('../../config/logger')('api');var utils=require(_0xbda5('0x10'));var config=require(_0xbda5('0x11'));var licenseUtil=require(_0xbda5('0x12'));var db=require(_0xbda5('0x13'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x491e26,_0x1eae89){_0x1eae89=_0x1eae89||0xcc;return function(_0x531118){if(_0x531118){return _0x491e26[_0xbda5('0x14')](_0x1eae89);}return _0x491e26[_0xbda5('0x15')](_0x1eae89)[_0xbda5('0x16')]();};}function respondWithResult(_0x4ba5bf,_0x49c82f){_0x49c82f=_0x49c82f||0xc8;return function(_0x59ffa5){if(_0x59ffa5){return _0x4ba5bf[_0xbda5('0x15')](_0x49c82f)['json'](_0x59ffa5);}};}function respondWithFilteredResult(_0x2d3bcc,_0x3895a2){return function(_0x3f7c35){if(_0x3f7c35){var _0x56434e=typeof _0x3895a2[_0xbda5('0x17')]===_0xbda5('0x18')&&typeof _0x3895a2['limit']==='undefined';var _0xa0aab9=_0x3f7c35['count'];var _0x1c69af=_0x56434e?0x0:_0x3895a2[_0xbda5('0x17')];var _0xb4e271=_0x56434e?_0x3f7c35[_0xbda5('0x19')]:_0x3895a2['offset']+_0x3895a2[_0xbda5('0x1a')];var _0x5992af;if(_0xb4e271>=_0xa0aab9){_0xb4e271=_0xa0aab9;_0x5992af=0xc8;}else{_0x5992af=0xce;}_0x2d3bcc[_0xbda5('0x15')](_0x5992af);return _0x2d3bcc['set'](_0xbda5('0x1b'),_0x1c69af+'-'+_0xb4e271+'/'+_0xa0aab9)[_0xbda5('0x1c')](_0x3f7c35);}return null;};}function patchUpdates(_0x5fb634){return function(_0xd24a59){try{jsonpatch[_0xbda5('0x1d')](_0xd24a59,_0x5fb634,!![]);}catch(_0x38ba16){return BPromise[_0xbda5('0x1e')](_0x38ba16);}return _0xd24a59[_0xbda5('0x1f')]();};}function saveUpdates(_0x5f0e32,_0x20ccaa){return function(_0x367271){if(_0x367271){return _0x367271[_0xbda5('0x20')](_0x5f0e32)[_0xbda5('0x21')](function(_0x3e7d4e){return _0x3e7d4e;});}return null;};}function removeEntity(_0x137e64,_0x103362){return function(_0x1a75bb){if(_0x1a75bb){return _0x1a75bb[_0xbda5('0x22')]()[_0xbda5('0x21')](function(){_0x137e64[_0xbda5('0x15')](0xcc)[_0xbda5('0x16')]();});}};}function handleEntityNotFound(_0x11561c,_0x37d5be){return function(_0x5e886c){if(!_0x5e886c){_0x11561c[_0xbda5('0x14')](0x194);}return _0x5e886c;};}function handleError(_0x578b65,_0x2244e9){_0x2244e9=_0x2244e9||0x1f4;return function(_0x2b4f56){logger[_0xbda5('0x23')](_0x2b4f56[_0xbda5('0x24')]);if(_0x2b4f56[_0xbda5('0x25')]){delete _0x2b4f56[_0xbda5('0x25')];}_0x578b65[_0xbda5('0x15')](_0x2244e9)[_0xbda5('0x26')](_0x2b4f56);};}exports[_0xbda5('0x27')]=function(_0x5d5f91,_0x2dbe56){var _0x3861e2={},_0x168022={},_0x1382c2={'count':0x0,'rows':[]};var _0x4c29bb=_[_0xbda5('0x28')](db[_0xbda5('0x29')][_0xbda5('0x2a')],function(_0x32894f){return{'name':_0x32894f[_0xbda5('0x2b')],'type':_0x32894f['type']['key']};});_0x168022[_0xbda5('0x2c')]=_['map'](_0x4c29bb,_0xbda5('0x25'));_0x168022['query']=_['keys'](_0x5d5f91[_0xbda5('0x2d')]);_0x168022[_0xbda5('0x2e')]=_['intersection'](_0x168022[_0xbda5('0x2c')],_0x168022['query']);_0x3861e2[_0xbda5('0x2f')]=_['intersection'](_0x168022[_0xbda5('0x2c')],qs[_0xbda5('0x30')](_0x5d5f91[_0xbda5('0x2d')]['fields']));_0x3861e2[_0xbda5('0x2f')]=_0x3861e2['attributes'][_0xbda5('0x31')]?_0x3861e2[_0xbda5('0x2f')]:_0x168022[_0xbda5('0x2c')];if(!_0x5d5f91[_0xbda5('0x2d')][_0xbda5('0x32')](_0xbda5('0x33'))){_0x3861e2['limit']=qs[_0xbda5('0x1a')](_0x5d5f91['query']['limit']);_0x3861e2['offset']=qs[_0xbda5('0x17')](_0x5d5f91[_0xbda5('0x2d')][_0xbda5('0x17')]);}_0x3861e2[_0xbda5('0x34')]=qs[_0xbda5('0x35')](_0x5d5f91['query']['sort']);_0x3861e2[_0xbda5('0x36')]=qs[_0xbda5('0x2e')](_['pick'](_0x5d5f91[_0xbda5('0x2d')],_0x168022[_0xbda5('0x2e')]),_0x4c29bb);if(_0x5d5f91['query'][_0xbda5('0x37')]){_0x3861e2['where']=_[_0xbda5('0x38')](_0x3861e2[_0xbda5('0x36')],{'$or':_['map'](_0x4c29bb,function(_0x30d00b){if(_0x30d00b[_0xbda5('0x39')]!==_0xbda5('0x3a')){var _0x3bfd83={};_0x3bfd83[_0x30d00b[_0xbda5('0x25')]]={'$like':'%'+_0x5d5f91[_0xbda5('0x2d')][_0xbda5('0x37')]+'%'};return _0x3bfd83;}})});}_0x3861e2=_[_0xbda5('0x38')]({},_0x3861e2,_0x5d5f91['options']);var _0x24f05d={'where':_0x3861e2[_0xbda5('0x36')]};return db[_0xbda5('0x29')]['count'](_0x24f05d)[_0xbda5('0x21')](function(_0x41c9a7){_0x1382c2[_0xbda5('0x19')]=_0x41c9a7;if(_0x5d5f91[_0xbda5('0x2d')][_0xbda5('0x3b')]){_0x3861e2['include']=[{'all':!![]}];}return db[_0xbda5('0x29')][_0xbda5('0x3c')](_0x3861e2);})[_0xbda5('0x21')](function(_0xfb46f){_0x1382c2[_0xbda5('0x3d')]=_0xfb46f;return _0x1382c2;})[_0xbda5('0x21')](respondWithFilteredResult(_0x2dbe56,_0x3861e2))[_0xbda5('0x3e')](handleError(_0x2dbe56,null));};exports[_0xbda5('0x3f')]=function(_0x49e4ab,_0x4de8f5){var _0x3f23fb={'raw':![],'where':{'id':_0x49e4ab[_0xbda5('0x40')]['id']}},_0xb30145={};_0xb30145[_0xbda5('0x2c')]=_[_0xbda5('0x41')](db[_0xbda5('0x29')]['rawAttributes']);_0xb30145['query']=_[_0xbda5('0x41')](_0x49e4ab[_0xbda5('0x2d')]);_0xb30145[_0xbda5('0x2e')]=_['intersection'](_0xb30145[_0xbda5('0x2c')],_0xb30145[_0xbda5('0x2d')]);_0x3f23fb[_0xbda5('0x2f')]=_['intersection'](_0xb30145['model'],qs[_0xbda5('0x30')](_0x49e4ab[_0xbda5('0x2d')][_0xbda5('0x30')]));_0x3f23fb[_0xbda5('0x2f')]=_0x3f23fb[_0xbda5('0x2f')][_0xbda5('0x31')]?_0x3f23fb[_0xbda5('0x2f')]:_0xb30145[_0xbda5('0x2c')];if(_0x49e4ab[_0xbda5('0x2d')]['includeAll']){_0x3f23fb[_0xbda5('0x42')]=[{'all':!![]}];}_0x3f23fb=_['merge']({},_0x3f23fb,_0x49e4ab[_0xbda5('0x43')]);return db[_0xbda5('0x29')][_0xbda5('0x44')](_0x3f23fb)['then'](handleEntityNotFound(_0x4de8f5,null))[_0xbda5('0x21')](respondWithResult(_0x4de8f5,null))[_0xbda5('0x3e')](handleError(_0x4de8f5,null));};exports[_0xbda5('0x45')]=function(_0x184360,_0x57171c){return db[_0xbda5('0x29')]['create'](_0x184360[_0xbda5('0x46')],{})[_0xbda5('0x21')](respondWithResult(_0x57171c,0xc9))[_0xbda5('0x3e')](handleError(_0x57171c,null));};exports['update']=function(_0x3cf296,_0x573021){if(_0x3cf296['body']['id']){delete _0x3cf296[_0xbda5('0x46')]['id'];}return db[_0xbda5('0x29')][_0xbda5('0x44')]({'where':{'id':_0x3cf296['params']['id']}})['then'](handleEntityNotFound(_0x573021,null))['then'](saveUpdates(_0x3cf296['body'],null))[_0xbda5('0x21')](respondWithResult(_0x573021,null))[_0xbda5('0x3e')](handleError(_0x573021,null));};exports[_0xbda5('0x22')]=function(_0x107a34,_0x149296){return db[_0xbda5('0x29')][_0xbda5('0x44')]({'where':{'id':_0x107a34[_0xbda5('0x40')]['id']}})[_0xbda5('0x21')](handleEntityNotFound(_0x149296,null))[_0xbda5('0x21')](removeEntity(_0x149296,null))['catch'](handleError(_0x149296,null));};exports[_0xbda5('0x47')]=function(_0x16c93d,_0x23fa10,_0xb8c65b){var _0x3388f7={};var _0x431995={};var _0x202324;var _0xf01291;return db['SugarcrmAccount'][_0xbda5('0x48')]({'where':{'id':_0x16c93d['params']['id']}})[_0xbda5('0x21')](handleEntityNotFound(_0x23fa10,null))[_0xbda5('0x21')](function(_0x436d42){if(_0x436d42){_0x202324=_0x436d42;_0x431995[_0xbda5('0x2c')]=_['keys'](db[_0xbda5('0x49')][_0xbda5('0x2a')]);_0x431995['query']=_[_0xbda5('0x41')](_0x16c93d[_0xbda5('0x2d')]);_0x431995[_0xbda5('0x2e')]=_[_0xbda5('0x4a')](_0x431995[_0xbda5('0x2c')],_0x431995[_0xbda5('0x2d')]);_0x3388f7[_0xbda5('0x2f')]=_[_0xbda5('0x4a')](_0x431995['model'],qs['fields'](_0x16c93d[_0xbda5('0x2d')][_0xbda5('0x30')]));_0x3388f7[_0xbda5('0x2f')]=_0x3388f7[_0xbda5('0x2f')][_0xbda5('0x31')]?_0x3388f7['attributes']:_0x431995[_0xbda5('0x2c')];_0x3388f7[_0xbda5('0x34')]=qs[_0xbda5('0x35')](_0x16c93d[_0xbda5('0x2d')][_0xbda5('0x35')]);_0x3388f7[_0xbda5('0x36')]=qs[_0xbda5('0x2e')](_[_0xbda5('0x4b')](_0x16c93d[_0xbda5('0x2d')],_0x431995[_0xbda5('0x2e')]));if(_0x16c93d['query'][_0xbda5('0x37')]){_0x3388f7[_0xbda5('0x36')]=_['merge'](_0x3388f7[_0xbda5('0x36')],{'$or':_[_0xbda5('0x28')](_0x3388f7[_0xbda5('0x2f')],function(_0x14319e){var _0x1a0892={};_0x1a0892[_0x14319e]={'$like':'%'+_0x16c93d[_0xbda5('0x2d')][_0xbda5('0x37')]+'%'};return _0x1a0892;})});}_0x3388f7=_[_0xbda5('0x38')]({},_0x3388f7,_0x16c93d['options']);return _0x202324['getConfigurations'](_0x3388f7);}})[_0xbda5('0x21')](function(_0x112b89){if(_0x112b89){_0xf01291=_0x112b89[_0xbda5('0x31')];if(!_0x16c93d['query'][_0xbda5('0x32')](_0xbda5('0x33'))){_0x3388f7[_0xbda5('0x1a')]=qs[_0xbda5('0x1a')](_0x16c93d['query'][_0xbda5('0x1a')]);_0x3388f7[_0xbda5('0x17')]=qs[_0xbda5('0x17')](_0x16c93d['query'][_0xbda5('0x17')]);}return _0x202324[_0xbda5('0x47')](_0x3388f7);}})[_0xbda5('0x21')](function(_0x43f78d){if(_0x43f78d){return _0x43f78d?{'count':_0xf01291,'rows':_0x43f78d}:null;}})[_0xbda5('0x21')](respondWithResult(_0x23fa10,null))['catch'](handleError(_0x23fa10,null));};exports[_0xbda5('0x4c')]=function(_0x41c820,_0x11fcba,_0x4e6f6b){if(_0x41c820[_0xbda5('0x46')]['id']){delete _0x41c820['body']['id'];}return db[_0xbda5('0x29')][_0xbda5('0x48')]({'where':{'id':_0x41c820[_0xbda5('0x40')]['id']}})['then'](handleEntityNotFound(_0x11fcba,null))[_0xbda5('0x21')](function(_0x1e646b){if(_0x1e646b){_0x41c820['body'][_0xbda5('0x4d')]=_0x1e646b['id'];_0x41c820[_0xbda5('0x46')][_0xbda5('0x4e')]=integrations[_0xbda5('0x4f')](_0x41c820[_0xbda5('0x46')][_0xbda5('0x50')],_0x41c820[_0xbda5('0x46')]['type']);_0x41c820[_0xbda5('0x46')][_0xbda5('0x51')]=integrations[_0xbda5('0x52')](_0x41c820['body'][_0xbda5('0x50')],_0x41c820[_0xbda5('0x46')]['type']);return db[_0xbda5('0x49')][_0xbda5('0x45')](_0x41c820['body'],{'include':[{'model':db['SugarcrmField'],'as':_0xbda5('0x4e')},{'model':db[_0xbda5('0x53')],'as':_0xbda5('0x51')}]});}return null;})[_0xbda5('0x21')](respondWithResult(_0x11fcba,null))['catch'](handleError(_0x11fcba,null));};exports[_0xbda5('0x54')]=function(_0x2f076b,_0x590446,_0x38d2e0){var _0x4bc7cc='';var _0x4be1f5=['id',_0xbda5('0x25'),_0xbda5('0x55'),_0xbda5('0x56'),_0xbda5('0x57'),'date_start',_0xbda5('0x58'),_0xbda5('0x59'),_0xbda5('0x5a'),_0xbda5('0x5b'),_0xbda5('0x5c'),'direction'];return db['SugarcrmAccount'][_0xbda5('0x48')]({'where':{'id':_0x2f076b[_0xbda5('0x40')]['id']},'attributes':['id',_0xbda5('0x5d'),_0xbda5('0x5e'),_0xbda5('0x5f')]})[_0xbda5('0x21')](handleEntityNotFound(_0x590446,null))[_0xbda5('0x21')](function(_0x365ccd){if(_0x365ccd){_0x4bc7cc=_0x365ccd[_0xbda5('0x5f')];var _0x139515=_0x4bc7cc['slice'](-0x1);if(_0x139515==='/'){_0x4bc7cc=_0x4bc7cc['substring'](0x0,_0x4bc7cc[_0xbda5('0x60')](_0x139515));}return rp({'method':_0xbda5('0x61'),'uri':util[_0xbda5('0x62')](_0xbda5('0x63'),_0x4bc7cc,_0xbda5('0x64')),'json':!![],'form':{'method':_0xbda5('0x65'),'input_type':_0xbda5('0x66'),'response_type':_0xbda5('0x66'),'rest_data':JSON[_0xbda5('0x67')]({'user_auth':{'user_name':_0x365ccd[_0xbda5('0x5d')],'password':_0x365ccd['password'],'encryption':'PLAIN'},'application':_0xbda5('0x68')})}});}})[_0xbda5('0x21')](function(_0x59754f){if(_0x59754f&&_0x59754f[_0xbda5('0x25')]!==_0xbda5('0x69')&&_0x59754f[_0xbda5('0x25')]!==_0xbda5('0x6a')){return rp({'method':_0xbda5('0x61'),'uri':util[_0xbda5('0x62')](_0xbda5('0x63'),_0x4bc7cc,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0xbda5('0x6b'),'input_type':_0xbda5('0x66'),'response_type':_0xbda5('0x66'),'rest_data':JSON[_0xbda5('0x67')]({'session':_0x59754f['id'],'module_name':_0xbda5('0x6c')})}})[_0xbda5('0x21')](function(_0x578543){if(_0x578543){var _0x1faf55=_[_0xbda5('0x6d')](_0x578543[_0xbda5('0x6e')]);_[_0xbda5('0x6f')](_0x1faf55,function(_0x400a86){return _0x4be1f5['includes'](_0x400a86[_0xbda5('0x25')]);});return{'count':_0x1faf55[_0xbda5('0x31')],'rows':_[_0xbda5('0x28')](_0x1faf55,function(_0x1a6096){return{'id':_0x1a6096[_0xbda5('0x25')],'name':_0x1a6096[_0xbda5('0x70')],'custom':_[_0xbda5('0x71')](_0x1a6096[_0xbda5('0x25')],'_c')?!![]:![],'options':_0x1a6096[_0xbda5('0x43')]?_[_0xbda5('0x28')](_[_0xbda5('0x6d')](_0x1a6096['options']),function(_0x3ab890){return{'name':_0x3ab890[_0xbda5('0x72')],'value':_0x3ab890[_0xbda5('0x25')]};}):[]};})};}})['then'](respondWithResult(_0x590446,null))[_0xbda5('0x3e')](function(_0x100085){var _0x12f51f=_0x2f076b[_0xbda5('0x2d')][_0xbda5('0x73')]?0x1f4:_0x100085[_0xbda5('0x74')]||0x1f4;logger[_0xbda5('0x23')](_0xbda5('0x75'),_0xbda5('0x54'),_0x12f51f,JSON['stringify'](_0x100085));delete _0x100085[_0xbda5('0x25')];if(_0x12f51f===0x191){_0x12f51f=0x190;}_0x590446[_0xbda5('0x15')](_0x12f51f)[_0xbda5('0x26')](_0x2f076b[_0xbda5('0x2d')][_0xbda5('0x73')]?{'message':_0xbda5('0x76'),'statusCode':_0x100085[_0xbda5('0x74')]}:_0x100085);});}else{var _0x3d5ddd=0x1f4;_0x590446[_0xbda5('0x15')](_0x3d5ddd)['send']({'message':_0xbda5('0x76'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0x6a6d=['statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','rimraf','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','then','destroy','error','stack','name','send','map','SugarcrmAccount','fieldName','type','model','query','filters','attributes','intersection','fields','hasOwnProperty','sort','merge','VIRTUAL','filter','where','findAll','rows','keys','rawAttributes','length','includeAll','include','options','find','catch','create','body','params','getConfigurations','findOne','order','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','SugarcrmConfiguration','SugarcrmField','getFields','assigned_user_id','description','date_start','duration_hours','duration_minutes','parent_id','parent_type','parent_name','direction','username','password','remoteUri','lastIndexOf','POST','format','%s%s','JSON','stringify','PLAIN','/service/v4_1/rest.php','get_module_fields','Calls','module_fields','remove','label','endsWith','values','value','test'];(function(_0x128022,_0x328b12){var _0xae9839=function(_0x11b916){while(--_0x11b916){_0x128022['push'](_0x128022['shift']());}};_0xae9839(++_0x328b12);}(_0x6a6d,0x73));var _0xd6a6=function(_0x91e341,_0x298ff2){_0x91e341=_0x91e341-0x0;var _0x1db814=_0x6a6d[_0x91e341];return _0x1db814;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd6a6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd6a6('0x1'));var rp=require(_0xd6a6('0x2'));var moment=require(_0xd6a6('0x3'));var BPromise=require(_0xd6a6('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xd6a6('0x5'));var sox=require(_0xd6a6('0x6'));var csv=require(_0xd6a6('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd6a6('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xd6a6('0x9'));var jsforce=require(_0xd6a6('0xa'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xd6a6('0xb'));var Papa=require(_0xd6a6('0xc'));var Redis=require(_0xd6a6('0xd'));var authService=require(_0xd6a6('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xd6a6('0xf'));var hardwareService=require(_0xd6a6('0x10'));var logger=require('../../config/logger')(_0xd6a6('0x11'));var utils=require(_0xd6a6('0x12'));var config=require(_0xd6a6('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xd6a6('0x14'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x2ad69b,_0x271607){_0x271607=_0x271607||0xcc;return function(_0x4c7fd5){if(_0x4c7fd5){return _0x2ad69b[_0xd6a6('0x15')](_0x271607);}return _0x2ad69b[_0xd6a6('0x16')](_0x271607)[_0xd6a6('0x17')]();};}function respondWithResult(_0x116c75,_0x576688){_0x576688=_0x576688||0xc8;return function(_0x2d31e7){if(_0x2d31e7){return _0x116c75['status'](_0x576688)[_0xd6a6('0x18')](_0x2d31e7);}};}function respondWithFilteredResult(_0x1c8f5a,_0x2a7d9f){return function(_0x46f737){if(_0x46f737){var _0x23fb80=typeof _0x2a7d9f[_0xd6a6('0x19')]===_0xd6a6('0x1a')&&typeof _0x2a7d9f[_0xd6a6('0x1b')]===_0xd6a6('0x1a');var _0x4f184c=_0x46f737[_0xd6a6('0x1c')];var _0x4d360f=_0x23fb80?0x0:_0x2a7d9f['offset'];var _0x4cd192=_0x23fb80?_0x46f737[_0xd6a6('0x1c')]:_0x2a7d9f[_0xd6a6('0x19')]+_0x2a7d9f['limit'];var _0xfbf648;if(_0x4cd192>=_0x4f184c){_0x4cd192=_0x4f184c;_0xfbf648=0xc8;}else{_0xfbf648=0xce;}_0x1c8f5a[_0xd6a6('0x16')](_0xfbf648);return _0x1c8f5a[_0xd6a6('0x1d')](_0xd6a6('0x1e'),_0x4d360f+'-'+_0x4cd192+'/'+_0x4f184c)[_0xd6a6('0x18')](_0x46f737);}return null;};}function patchUpdates(_0x165c60){return function(_0x380182){try{jsonpatch['apply'](_0x380182,_0x165c60,!![]);}catch(_0x3d75e8){return BPromise[_0xd6a6('0x1f')](_0x3d75e8);}return _0x380182['save']();};}function saveUpdates(_0x35c99b,_0x341d81){return function(_0xe28f53){if(_0xe28f53){return _0xe28f53['update'](_0x35c99b)[_0xd6a6('0x20')](function(_0x2a0256){return _0x2a0256;});}return null;};}function removeEntity(_0x353da9,_0x25a5fc){return function(_0x528661){if(_0x528661){return _0x528661[_0xd6a6('0x21')]()[_0xd6a6('0x20')](function(){_0x353da9[_0xd6a6('0x16')](0xcc)[_0xd6a6('0x17')]();});}};}function handleEntityNotFound(_0x378317,_0x416256){return function(_0xeb6ceb){if(!_0xeb6ceb){_0x378317[_0xd6a6('0x15')](0x194);}return _0xeb6ceb;};}function handleError(_0x5603e9,_0xb9ea39){_0xb9ea39=_0xb9ea39||0x1f4;return function(_0x20d32d){logger[_0xd6a6('0x22')](_0x20d32d[_0xd6a6('0x23')]);if(_0x20d32d[_0xd6a6('0x24')]){delete _0x20d32d[_0xd6a6('0x24')];}_0x5603e9[_0xd6a6('0x16')](_0xb9ea39)[_0xd6a6('0x25')](_0x20d32d);};}exports['index']=function(_0x49e0ae,_0x4ccdb9){var _0x887b11={},_0x423e28={},_0x10999f={'count':0x0,'rows':[]};var _0x1db94f=_[_0xd6a6('0x26')](db[_0xd6a6('0x27')]['rawAttributes'],function(_0x5d4252){return{'name':_0x5d4252[_0xd6a6('0x28')],'type':_0x5d4252[_0xd6a6('0x29')]['key']};});_0x423e28[_0xd6a6('0x2a')]=_['map'](_0x1db94f,_0xd6a6('0x24'));_0x423e28[_0xd6a6('0x2b')]=_['keys'](_0x49e0ae[_0xd6a6('0x2b')]);_0x423e28[_0xd6a6('0x2c')]=_['intersection'](_0x423e28[_0xd6a6('0x2a')],_0x423e28['query']);_0x887b11[_0xd6a6('0x2d')]=_[_0xd6a6('0x2e')](_0x423e28[_0xd6a6('0x2a')],qs[_0xd6a6('0x2f')](_0x49e0ae[_0xd6a6('0x2b')][_0xd6a6('0x2f')]));_0x887b11[_0xd6a6('0x2d')]=_0x887b11[_0xd6a6('0x2d')]['length']?_0x887b11[_0xd6a6('0x2d')]:_0x423e28['model'];if(!_0x49e0ae[_0xd6a6('0x2b')][_0xd6a6('0x30')]('nolimit')){_0x887b11[_0xd6a6('0x1b')]=qs[_0xd6a6('0x1b')](_0x49e0ae[_0xd6a6('0x2b')][_0xd6a6('0x1b')]);_0x887b11[_0xd6a6('0x19')]=qs[_0xd6a6('0x19')](_0x49e0ae['query']['offset']);}_0x887b11['order']=qs[_0xd6a6('0x31')](_0x49e0ae['query'][_0xd6a6('0x31')]);_0x887b11['where']=qs[_0xd6a6('0x2c')](_['pick'](_0x49e0ae[_0xd6a6('0x2b')],_0x423e28[_0xd6a6('0x2c')]),_0x1db94f);if(_0x49e0ae[_0xd6a6('0x2b')]['filter']){_0x887b11['where']=_[_0xd6a6('0x32')](_0x887b11['where'],{'$or':_[_0xd6a6('0x26')](_0x1db94f,function(_0x54e410){if(_0x54e410[_0xd6a6('0x29')]!==_0xd6a6('0x33')){var _0x419818={};_0x419818[_0x54e410['name']]={'$like':'%'+_0x49e0ae[_0xd6a6('0x2b')][_0xd6a6('0x34')]+'%'};return _0x419818;}})});}_0x887b11=_[_0xd6a6('0x32')]({},_0x887b11,_0x49e0ae['options']);var _0x1efbd0={'where':_0x887b11[_0xd6a6('0x35')]};return db[_0xd6a6('0x27')][_0xd6a6('0x1c')](_0x1efbd0)[_0xd6a6('0x20')](function(_0x59b154){_0x10999f['count']=_0x59b154;if(_0x49e0ae[_0xd6a6('0x2b')]['includeAll']){_0x887b11['include']=[{'all':!![]}];}return db[_0xd6a6('0x27')][_0xd6a6('0x36')](_0x887b11);})[_0xd6a6('0x20')](function(_0x2a9487){_0x10999f[_0xd6a6('0x37')]=_0x2a9487;return _0x10999f;})[_0xd6a6('0x20')](respondWithFilteredResult(_0x4ccdb9,_0x887b11))['catch'](handleError(_0x4ccdb9,null));};exports['show']=function(_0x1f5629,_0x14c184){var _0x4542a8={'raw':![],'where':{'id':_0x1f5629['params']['id']}},_0xade49a={};_0xade49a['model']=_[_0xd6a6('0x38')](db[_0xd6a6('0x27')][_0xd6a6('0x39')]);_0xade49a[_0xd6a6('0x2b')]=_[_0xd6a6('0x38')](_0x1f5629[_0xd6a6('0x2b')]);_0xade49a[_0xd6a6('0x2c')]=_['intersection'](_0xade49a[_0xd6a6('0x2a')],_0xade49a[_0xd6a6('0x2b')]);_0x4542a8[_0xd6a6('0x2d')]=_['intersection'](_0xade49a[_0xd6a6('0x2a')],qs[_0xd6a6('0x2f')](_0x1f5629['query']['fields']));_0x4542a8['attributes']=_0x4542a8[_0xd6a6('0x2d')][_0xd6a6('0x3a')]?_0x4542a8[_0xd6a6('0x2d')]:_0xade49a[_0xd6a6('0x2a')];if(_0x1f5629[_0xd6a6('0x2b')][_0xd6a6('0x3b')]){_0x4542a8[_0xd6a6('0x3c')]=[{'all':!![]}];}_0x4542a8=_[_0xd6a6('0x32')]({},_0x4542a8,_0x1f5629[_0xd6a6('0x3d')]);return db[_0xd6a6('0x27')][_0xd6a6('0x3e')](_0x4542a8)['then'](handleEntityNotFound(_0x14c184,null))[_0xd6a6('0x20')](respondWithResult(_0x14c184,null))[_0xd6a6('0x3f')](handleError(_0x14c184,null));};exports[_0xd6a6('0x40')]=function(_0xa29480,_0x128acd){return db[_0xd6a6('0x27')][_0xd6a6('0x40')](_0xa29480[_0xd6a6('0x41')],{})[_0xd6a6('0x20')](respondWithResult(_0x128acd,0xc9))[_0xd6a6('0x3f')](handleError(_0x128acd,null));};exports['update']=function(_0x55b40e,_0x49528d){if(_0x55b40e[_0xd6a6('0x41')]['id']){delete _0x55b40e[_0xd6a6('0x41')]['id'];}return db['SugarcrmAccount'][_0xd6a6('0x3e')]({'where':{'id':_0x55b40e[_0xd6a6('0x42')]['id']}})[_0xd6a6('0x20')](handleEntityNotFound(_0x49528d,null))[_0xd6a6('0x20')](saveUpdates(_0x55b40e['body'],null))[_0xd6a6('0x20')](respondWithResult(_0x49528d,null))[_0xd6a6('0x3f')](handleError(_0x49528d,null));};exports[_0xd6a6('0x21')]=function(_0x943d19,_0x590e55){return db['SugarcrmAccount'][_0xd6a6('0x3e')]({'where':{'id':_0x943d19[_0xd6a6('0x42')]['id']}})[_0xd6a6('0x20')](handleEntityNotFound(_0x590e55,null))[_0xd6a6('0x20')](removeEntity(_0x590e55,null))[_0xd6a6('0x3f')](handleError(_0x590e55,null));};exports[_0xd6a6('0x43')]=function(_0x131f8b,_0x419c81,_0x794885){var _0x4036f0={};var _0x53671d={};var _0x13ae4e;var _0xe72846;return db[_0xd6a6('0x27')][_0xd6a6('0x44')]({'where':{'id':_0x131f8b[_0xd6a6('0x42')]['id']}})[_0xd6a6('0x20')](handleEntityNotFound(_0x419c81,null))[_0xd6a6('0x20')](function(_0x3ff8d6){if(_0x3ff8d6){_0x13ae4e=_0x3ff8d6;_0x53671d['model']=_[_0xd6a6('0x38')](db['SugarcrmConfiguration'][_0xd6a6('0x39')]);_0x53671d[_0xd6a6('0x2b')]=_[_0xd6a6('0x38')](_0x131f8b['query']);_0x53671d[_0xd6a6('0x2c')]=_[_0xd6a6('0x2e')](_0x53671d[_0xd6a6('0x2a')],_0x53671d[_0xd6a6('0x2b')]);_0x4036f0[_0xd6a6('0x2d')]=_['intersection'](_0x53671d[_0xd6a6('0x2a')],qs[_0xd6a6('0x2f')](_0x131f8b[_0xd6a6('0x2b')][_0xd6a6('0x2f')]));_0x4036f0[_0xd6a6('0x2d')]=_0x4036f0['attributes'][_0xd6a6('0x3a')]?_0x4036f0[_0xd6a6('0x2d')]:_0x53671d[_0xd6a6('0x2a')];_0x4036f0[_0xd6a6('0x45')]=qs[_0xd6a6('0x31')](_0x131f8b[_0xd6a6('0x2b')][_0xd6a6('0x31')]);_0x4036f0['where']=qs[_0xd6a6('0x2c')](_['pick'](_0x131f8b[_0xd6a6('0x2b')],_0x53671d[_0xd6a6('0x2c')]));if(_0x131f8b[_0xd6a6('0x2b')][_0xd6a6('0x34')]){_0x4036f0[_0xd6a6('0x35')]=_['merge'](_0x4036f0[_0xd6a6('0x35')],{'$or':_['map'](_0x4036f0[_0xd6a6('0x2d')],function(_0x3ab891){var _0x2a5dad={};_0x2a5dad[_0x3ab891]={'$like':'%'+_0x131f8b[_0xd6a6('0x2b')][_0xd6a6('0x34')]+'%'};return _0x2a5dad;})});}_0x4036f0=_[_0xd6a6('0x32')]({},_0x4036f0,_0x131f8b[_0xd6a6('0x3d')]);return _0x13ae4e[_0xd6a6('0x43')](_0x4036f0);}})[_0xd6a6('0x20')](function(_0x18a2d1){if(_0x18a2d1){_0xe72846=_0x18a2d1[_0xd6a6('0x3a')];if(!_0x131f8b['query'][_0xd6a6('0x30')](_0xd6a6('0x46'))){_0x4036f0[_0xd6a6('0x1b')]=qs[_0xd6a6('0x1b')](_0x131f8b[_0xd6a6('0x2b')]['limit']);_0x4036f0['offset']=qs[_0xd6a6('0x19')](_0x131f8b[_0xd6a6('0x2b')]['offset']);}return _0x13ae4e[_0xd6a6('0x43')](_0x4036f0);}})[_0xd6a6('0x20')](function(_0x5ab3d0){if(_0x5ab3d0){return _0x5ab3d0?{'count':_0xe72846,'rows':_0x5ab3d0}:null;}})[_0xd6a6('0x20')](respondWithResult(_0x419c81,null))[_0xd6a6('0x3f')](handleError(_0x419c81,null));};exports[_0xd6a6('0x47')]=function(_0x4ae5f9,_0x3b0aa0,_0x1c1cec){if(_0x4ae5f9[_0xd6a6('0x41')]['id']){delete _0x4ae5f9['body']['id'];}return db[_0xd6a6('0x27')][_0xd6a6('0x44')]({'where':{'id':_0x4ae5f9[_0xd6a6('0x42')]['id']}})[_0xd6a6('0x20')](handleEntityNotFound(_0x3b0aa0,null))[_0xd6a6('0x20')](function(_0x59596){if(_0x59596){_0x4ae5f9[_0xd6a6('0x41')][_0xd6a6('0x48')]=_0x59596['id'];_0x4ae5f9[_0xd6a6('0x41')][_0xd6a6('0x49')]=integrations[_0xd6a6('0x4a')](_0x4ae5f9['body'][_0xd6a6('0x4b')],_0x4ae5f9[_0xd6a6('0x41')][_0xd6a6('0x29')]);_0x4ae5f9[_0xd6a6('0x41')][_0xd6a6('0x4c')]=integrations['getDescriptions'](_0x4ae5f9[_0xd6a6('0x41')][_0xd6a6('0x4b')],_0x4ae5f9[_0xd6a6('0x41')]['type']);return db[_0xd6a6('0x4d')][_0xd6a6('0x40')](_0x4ae5f9[_0xd6a6('0x41')],{'include':[{'model':db[_0xd6a6('0x4e')],'as':_0xd6a6('0x49')},{'model':db['SugarcrmField'],'as':_0xd6a6('0x4c')}]});}return null;})[_0xd6a6('0x20')](respondWithResult(_0x3b0aa0,null))[_0xd6a6('0x3f')](handleError(_0x3b0aa0,null));};exports[_0xd6a6('0x4f')]=function(_0x1ed7c9,_0x2f117b,_0x1354c7){var _0x364fdb='';var _0x22a454=['id',_0xd6a6('0x24'),_0xd6a6('0x50'),'created_by',_0xd6a6('0x51'),_0xd6a6('0x52'),_0xd6a6('0x53'),_0xd6a6('0x54'),_0xd6a6('0x55'),_0xd6a6('0x56'),_0xd6a6('0x57'),_0xd6a6('0x58')];return db['SugarcrmAccount'][_0xd6a6('0x44')]({'where':{'id':_0x1ed7c9['params']['id']},'attributes':['id',_0xd6a6('0x59'),_0xd6a6('0x5a'),_0xd6a6('0x5b')]})['then'](handleEntityNotFound(_0x2f117b,null))[_0xd6a6('0x20')](function(_0x4943b5){if(_0x4943b5){_0x364fdb=_0x4943b5[_0xd6a6('0x5b')];var _0x4afcf5=_0x364fdb['slice'](-0x1);if(_0x4afcf5==='/'){_0x364fdb=_0x364fdb['substring'](0x0,_0x364fdb[_0xd6a6('0x5c')](_0x4afcf5));}return rp({'method':_0xd6a6('0x5d'),'uri':util[_0xd6a6('0x5e')](_0xd6a6('0x5f'),_0x364fdb,'/service/v4_1/rest.php'),'json':!![],'form':{'method':'login','input_type':_0xd6a6('0x60'),'response_type':_0xd6a6('0x60'),'rest_data':JSON[_0xd6a6('0x61')]({'user_auth':{'user_name':_0x4943b5[_0xd6a6('0x59')],'password':_0x4943b5['password'],'encryption':_0xd6a6('0x62')},'application':'xCALLY\x20Motion\x20Integration'})}});}})['then'](function(_0x58d3f1){if(_0x58d3f1&&_0x58d3f1[_0xd6a6('0x24')]!=='Invalid\x20Login'&&_0x58d3f1[_0xd6a6('0x24')]!=='Password\x20Expired'){return rp({'method':_0xd6a6('0x5d'),'uri':util[_0xd6a6('0x5e')](_0xd6a6('0x5f'),_0x364fdb,_0xd6a6('0x63')),'json':!![],'form':{'method':_0xd6a6('0x64'),'input_type':_0xd6a6('0x60'),'response_type':_0xd6a6('0x60'),'rest_data':JSON[_0xd6a6('0x61')]({'session':_0x58d3f1['id'],'module_name':_0xd6a6('0x65')})}})[_0xd6a6('0x20')](function(_0x1c6afd){if(_0x1c6afd){var _0x579e4a=_['values'](_0x1c6afd[_0xd6a6('0x66')]);_[_0xd6a6('0x67')](_0x579e4a,function(_0xb458f5){return _0x22a454['includes'](_0xb458f5[_0xd6a6('0x24')]);});return{'count':_0x579e4a[_0xd6a6('0x3a')],'rows':_['map'](_0x579e4a,function(_0x4cc8ea){return{'id':_0x4cc8ea[_0xd6a6('0x24')],'name':_0x4cc8ea[_0xd6a6('0x68')],'custom':_[_0xd6a6('0x69')](_0x4cc8ea[_0xd6a6('0x24')],'_c')?!![]:![],'options':_0x4cc8ea[_0xd6a6('0x3d')]?_['map'](_[_0xd6a6('0x6a')](_0x4cc8ea[_0xd6a6('0x3d')]),function(_0x4a7891){return{'name':_0x4a7891[_0xd6a6('0x6b')],'value':_0x4a7891[_0xd6a6('0x24')]};}):[]};})};}})[_0xd6a6('0x20')](respondWithResult(_0x2f117b,null))[_0xd6a6('0x3f')](function(_0x2b09f1){var _0x450eb0=_0x1ed7c9[_0xd6a6('0x2b')][_0xd6a6('0x6c')]?0x1f4:_0x2b09f1[_0xd6a6('0x6d')]||0x1f4;logger['error'](_0xd6a6('0x6e'),_0xd6a6('0x4f'),_0x450eb0,JSON[_0xd6a6('0x61')](_0x2b09f1));delete _0x2b09f1[_0xd6a6('0x24')];if(_0x450eb0===0x191){_0x450eb0=0x190;}_0x2f117b[_0xd6a6('0x16')](_0x450eb0)[_0xd6a6('0x25')](_0x1ed7c9[_0xd6a6('0x2b')]['test']?{'message':_0xd6a6('0x6f'),'statusCode':_0x2b09f1['statusCode']}:_0x2b09f1);});}else{var _0x956577=0x1f4;_0x2f117b[_0xd6a6('0x16')](_0x956577)[_0xd6a6('0x25')]({'message':_0xd6a6('0x6f'),'statusCode':0x190});}});};
\ No newline at end of file
index ca285e2..534ffd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd719=['path','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','lodash','util','api','bluebird','request-promise'];(function(_0x97af71,_0x3088dc){var _0xbcd91b=function(_0x46078c){while(--_0x46078c){_0x97af71['push'](_0x97af71['shift']());}};_0xbcd91b(++_0x3088dc);}(_0xd719,0xb8));var _0x9d71=function(_0x35b06c,_0x5b71ea){_0x35b06c=_0x35b06c-0x0;var _0x25eeb6=_0xd719[_0x35b06c];return _0x25eeb6;};'use strict';var _=require(_0x9d71('0x0'));var util=require(_0x9d71('0x1'));var logger=require('../../config/logger')(_0x9d71('0x2'));var moment=require('moment');var BPromise=require(_0x9d71('0x3'));var rp=require(_0x9d71('0x4'));var fs=require('fs');var path=require(_0x9d71('0x5'));var rimraf=require('rimraf');var config=require(_0x9d71('0x6'));var attributes=require(_0x9d71('0x7'));var integrations=require(_0x9d71('0x8'));module['exports']=function(_0x25e98a,_0xc3d8c8){return _0x25e98a['define']('SugarcrmAccount',attributes,{'tableName':'int_sugarcrm_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2032=['request-promise','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','define','SugarcrmAccount','int_sugarcrm_accounts','util','../../config/logger','api','bluebird'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x2032,0xd9));var _0x2203=function(_0x479aac,_0x58a635){_0x479aac=_0x479aac-0x0;var _0xb6e2f4=_0x2032[_0x479aac];return _0xb6e2f4;};'use strict';var _=require('lodash');var util=require(_0x2203('0x0'));var logger=require(_0x2203('0x1'))(_0x2203('0x2'));var moment=require('moment');var BPromise=require(_0x2203('0x3'));var rp=require(_0x2203('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2203('0x5'));var config=require(_0x2203('0x6'));var attributes=require(_0x2203('0x7'));var integrations=require(_0x2203('0x8'));module[_0x2203('0x9')]=function(_0x13367a,_0x2e0f63){return _0x13367a[_0x2203('0xa')](_0x2203('0xb'),attributes,{'tableName':_0x2203('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 810ebc3..2673c0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8536=['../../config/logger','rpc','jayson/promise','client','http','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','GetSugarcrmAccount','SugarcrmAccount','findAll','options','raw','where','limit','include','map','model','attributes','debug','ShowSugarcrmAccount','find','then','moment','randomstring','ioredis','../../config/utils'];(function(_0x5e4100,_0xc2be9c){var _0x22f675=function(_0x15eaec){while(--_0x15eaec){_0x5e4100['push'](_0x5e4100['shift']());}};_0x22f675(++_0xc2be9c);}(_0x8536,0x19c));var _0x6853=function(_0x4c4245,_0x3d772a){_0x4c4245=_0x4c4245-0x0;var _0x52a45e=_0x8536[_0x4c4245];return _0x52a45e;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x6853('0x0'));var BPromise=require('bluebird');var rs=require(_0x6853('0x1'));var fs=require('fs');var Redis=require(_0x6853('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x6853('0x3'));var logger=require(_0x6853('0x4'))(_0x6853('0x5'));var config=require('../../config/environment');var jayson=require(_0x6853('0x6'));var client=jayson[_0x6853('0x7')][_0x6853('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x40fad6,_0x4739f9,_0x469495){return new BPromise(function(_0x2d9267,_0x289f7c){return client['request'](_0x40fad6,_0x469495)['then'](function(_0x29725c){logger[_0x6853('0x9')](_0x6853('0xa'),_0x4739f9,_0x6853('0xb'));logger['debug']('SugarcrmAccount,\x20%s,\x20%s,\x20%s',_0x4739f9,'request\x20sent',JSON[_0x6853('0xc')](_0x29725c));if(_0x29725c[_0x6853('0xd')]){if(_0x29725c['error'][_0x6853('0xe')]===0x1f4){logger[_0x6853('0xd')](_0x6853('0xa'),_0x4739f9,_0x29725c[_0x6853('0xd')]['message']);return _0x289f7c(_0x29725c[_0x6853('0xd')][_0x6853('0xf')]);}logger[_0x6853('0xd')]('SugarcrmAccount,\x20%s,\x20%s',_0x4739f9,_0x29725c['error'][_0x6853('0xf')]);return _0x2d9267(_0x29725c['error']['message']);}else{logger[_0x6853('0x9')](_0x6853('0xa'),_0x4739f9,_0x6853('0xb'));_0x2d9267(_0x29725c['result'][_0x6853('0xf')]);}})[_0x6853('0x10')](function(_0x1c27cd){logger[_0x6853('0xd')](_0x6853('0xa'),_0x4739f9,_0x1c27cd);_0x289f7c(_0x1c27cd);});});}exports[_0x6853('0x11')]=function(_0x5ad3e9){var _0x2a4700=this;return new Promise(function(_0x12d340,_0x6956d9){return db[_0x6853('0x12')][_0x6853('0x13')]({'raw':_0x5ad3e9[_0x6853('0x14')]?_0x5ad3e9[_0x6853('0x14')][_0x6853('0x15')]===undefined?!![]:![]:!![],'where':_0x5ad3e9[_0x6853('0x14')]?_0x5ad3e9[_0x6853('0x14')][_0x6853('0x16')]||null:null,'attributes':_0x5ad3e9[_0x6853('0x14')]?_0x5ad3e9['options']['attributes']||null:null,'limit':_0x5ad3e9['options']?_0x5ad3e9['options'][_0x6853('0x17')]||null:null,'include':_0x5ad3e9[_0x6853('0x14')]?_0x5ad3e9[_0x6853('0x14')][_0x6853('0x18')]?_[_0x6853('0x19')](_0x5ad3e9[_0x6853('0x14')][_0x6853('0x18')],function(_0x5e6c8f){return{'model':db[_0x5e6c8f[_0x6853('0x1a')]],'as':_0x5e6c8f['as'],'attributes':_0x5e6c8f['attributes'],'include':_0x5e6c8f['include']?_['map'](_0x5e6c8f[_0x6853('0x18')],function(_0x436409){return{'model':db[_0x436409[_0x6853('0x1a')]],'as':_0x436409['as'],'attributes':_0x436409['attributes'],'include':_0x436409[_0x6853('0x18')]?_['map'](_0x436409[_0x6853('0x18')],function(_0xfbdf6e){return{'model':db[_0xfbdf6e[_0x6853('0x1a')]],'as':_0xfbdf6e['as'],'attributes':_0xfbdf6e[_0x6853('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x245590){logger[_0x6853('0x9')](_0x6853('0x11'),_0x5ad3e9);logger[_0x6853('0x1c')](_0x6853('0x11'),_0x5ad3e9,JSON[_0x6853('0xc')](_0x245590));_0x12d340(_0x245590);})[_0x6853('0x10')](function(_0x5f147b){logger[_0x6853('0xd')]('GetSugarcrmAccount',_0x5f147b[_0x6853('0xf')],_0x5ad3e9);_0x6956d9(_0x2a4700[_0x6853('0xd')](0x1f4,_0x5f147b[_0x6853('0xf')]));});});};exports[_0x6853('0x1d')]=function(_0x3fc393){var _0x4bd8b3=this;return new Promise(function(_0x64c664,_0x5e72e1){return db[_0x6853('0x12')][_0x6853('0x1e')]({'raw':_0x3fc393[_0x6853('0x14')]?_0x3fc393['options'][_0x6853('0x15')]===undefined?!![]:![]:!![],'where':_0x3fc393[_0x6853('0x14')]?_0x3fc393[_0x6853('0x14')][_0x6853('0x16')]||null:null,'attributes':_0x3fc393[_0x6853('0x14')]?_0x3fc393[_0x6853('0x14')][_0x6853('0x1b')]||null:null,'include':_0x3fc393[_0x6853('0x14')]?_0x3fc393['options'][_0x6853('0x18')]?_[_0x6853('0x19')](_0x3fc393['options'][_0x6853('0x18')],function(_0x55fb37){return{'model':db[_0x55fb37[_0x6853('0x1a')]],'as':_0x55fb37['as'],'attributes':_0x55fb37[_0x6853('0x1b')],'include':_0x55fb37[_0x6853('0x18')]?_[_0x6853('0x19')](_0x55fb37[_0x6853('0x18')],function(_0x9164ac){return{'model':db[_0x9164ac[_0x6853('0x1a')]],'as':_0x9164ac['as'],'attributes':_0x9164ac[_0x6853('0x1b')],'include':_0x9164ac[_0x6853('0x18')]?_[_0x6853('0x19')](_0x9164ac[_0x6853('0x18')],function(_0x46fcf5){return{'model':db[_0x46fcf5[_0x6853('0x1a')]],'as':_0x46fcf5['as'],'attributes':_0x46fcf5[_0x6853('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x6853('0x1f')](function(_0x318e32){logger[_0x6853('0x9')](_0x6853('0x1d'),_0x3fc393);logger[_0x6853('0x1c')](_0x6853('0x1d'),_0x3fc393,JSON[_0x6853('0xc')](_0x318e32));_0x64c664(_0x318e32);})['catch'](function(_0x4456a0){logger[_0x6853('0xd')](_0x6853('0x1d'),_0x4456a0['message'],_0x3fc393);_0x5e72e1(_0x4bd8b3[_0x6853('0xd')](0x1f4,_0x4456a0[_0x6853('0xf')]));});});};
\ No newline at end of file
+var _0x89b1=['where','limit','include','map','attributes','model','GetSugarcrmAccount','find','ShowSugarcrmAccount','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','request','then','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','SugarcrmAccount','findAll','raw','options'];(function(_0x42dbe5,_0x237f34){var _0x2b1607=function(_0x517405){while(--_0x517405){_0x42dbe5['push'](_0x42dbe5['shift']());}};_0x2b1607(++_0x237f34);}(_0x89b1,0x8d));var _0x189b=function(_0x565f9c,_0xb9050a){_0x565f9c=_0x565f9c-0x0;var _0x42d58b=_0x89b1[_0x565f9c];return _0x42d58b;};'use strict';var _=require(_0x189b('0x0'));var util=require(_0x189b('0x1'));var moment=require(_0x189b('0x2'));var BPromise=require('bluebird');var rs=require(_0x189b('0x3'));var fs=require('fs');var Redis=require(_0x189b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x189b('0x5'));var logger=require(_0x189b('0x6'))(_0x189b('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x189b('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1baeea,_0x5399b1,_0x55ca67){return new BPromise(function(_0x19a05d,_0x1a52e6){return client[_0x189b('0x9')](_0x1baeea,_0x55ca67)[_0x189b('0xa')](function(_0x24dd00){logger[_0x189b('0xb')](_0x189b('0xc'),_0x5399b1,_0x189b('0xd'));logger[_0x189b('0xe')]('SugarcrmAccount,\x20%s,\x20%s,\x20%s',_0x5399b1,_0x189b('0xd'),JSON[_0x189b('0xf')](_0x24dd00));if(_0x24dd00[_0x189b('0x10')]){if(_0x24dd00[_0x189b('0x10')][_0x189b('0x11')]===0x1f4){logger[_0x189b('0x10')](_0x189b('0xc'),_0x5399b1,_0x24dd00[_0x189b('0x10')]['message']);return _0x1a52e6(_0x24dd00[_0x189b('0x10')]['message']);}logger['error'](_0x189b('0xc'),_0x5399b1,_0x24dd00[_0x189b('0x10')][_0x189b('0x12')]);return _0x19a05d(_0x24dd00[_0x189b('0x10')][_0x189b('0x12')]);}else{logger[_0x189b('0xb')]('SugarcrmAccount,\x20%s,\x20%s',_0x5399b1,_0x189b('0xd'));_0x19a05d(_0x24dd00['result'][_0x189b('0x12')]);}})[_0x189b('0x13')](function(_0x1f2b72){logger[_0x189b('0x10')]('SugarcrmAccount,\x20%s,\x20%s',_0x5399b1,_0x1f2b72);_0x1a52e6(_0x1f2b72);});});}exports['GetSugarcrmAccount']=function(_0x36eb3d){var _0x465a60=this;return new Promise(function(_0x5073b5,_0x4ed871){return db[_0x189b('0x14')][_0x189b('0x15')]({'raw':_0x36eb3d['options']?_0x36eb3d['options'][_0x189b('0x16')]===undefined?!![]:![]:!![],'where':_0x36eb3d[_0x189b('0x17')]?_0x36eb3d[_0x189b('0x17')][_0x189b('0x18')]||null:null,'attributes':_0x36eb3d[_0x189b('0x17')]?_0x36eb3d['options']['attributes']||null:null,'limit':_0x36eb3d[_0x189b('0x17')]?_0x36eb3d[_0x189b('0x17')][_0x189b('0x19')]||null:null,'include':_0x36eb3d[_0x189b('0x17')]?_0x36eb3d[_0x189b('0x17')][_0x189b('0x1a')]?_[_0x189b('0x1b')](_0x36eb3d[_0x189b('0x17')][_0x189b('0x1a')],function(_0x51dde7){return{'model':db[_0x51dde7['model']],'as':_0x51dde7['as'],'attributes':_0x51dde7[_0x189b('0x1c')],'include':_0x51dde7[_0x189b('0x1a')]?_[_0x189b('0x1b')](_0x51dde7[_0x189b('0x1a')],function(_0x38173f){return{'model':db[_0x38173f[_0x189b('0x1d')]],'as':_0x38173f['as'],'attributes':_0x38173f['attributes'],'include':_0x38173f[_0x189b('0x1a')]?_[_0x189b('0x1b')](_0x38173f[_0x189b('0x1a')],function(_0x563cef){return{'model':db[_0x563cef[_0x189b('0x1d')]],'as':_0x563cef['as'],'attributes':_0x563cef[_0x189b('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x189b('0xa')](function(_0xf4067b){logger[_0x189b('0xb')](_0x189b('0x1e'),_0x36eb3d);logger[_0x189b('0xe')](_0x189b('0x1e'),_0x36eb3d,JSON[_0x189b('0xf')](_0xf4067b));_0x5073b5(_0xf4067b);})[_0x189b('0x13')](function(_0x19a624){logger['error'](_0x189b('0x1e'),_0x19a624['message'],_0x36eb3d);_0x4ed871(_0x465a60[_0x189b('0x10')](0x1f4,_0x19a624['message']));});});};exports['ShowSugarcrmAccount']=function(_0xb7a62){var _0xb9ac00=this;return new Promise(function(_0x4dae7d,_0x103de1){return db['SugarcrmAccount'][_0x189b('0x1f')]({'raw':_0xb7a62[_0x189b('0x17')]?_0xb7a62['options'][_0x189b('0x16')]===undefined?!![]:![]:!![],'where':_0xb7a62['options']?_0xb7a62['options']['where']||null:null,'attributes':_0xb7a62[_0x189b('0x17')]?_0xb7a62['options'][_0x189b('0x1c')]||null:null,'include':_0xb7a62[_0x189b('0x17')]?_0xb7a62[_0x189b('0x17')][_0x189b('0x1a')]?_[_0x189b('0x1b')](_0xb7a62[_0x189b('0x17')][_0x189b('0x1a')],function(_0x39ea46){return{'model':db[_0x39ea46[_0x189b('0x1d')]],'as':_0x39ea46['as'],'attributes':_0x39ea46['attributes'],'include':_0x39ea46[_0x189b('0x1a')]?_[_0x189b('0x1b')](_0x39ea46[_0x189b('0x1a')],function(_0x59e953){return{'model':db[_0x59e953['model']],'as':_0x59e953['as'],'attributes':_0x59e953[_0x189b('0x1c')],'include':_0x59e953[_0x189b('0x1a')]?_[_0x189b('0x1b')](_0x59e953[_0x189b('0x1a')],function(_0x3884e2){return{'model':db[_0x3884e2[_0x189b('0x1d')]],'as':_0x3884e2['as'],'attributes':_0x3884e2[_0x189b('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x411393){logger[_0x189b('0xb')](_0x189b('0x20'),_0xb7a62);logger[_0x189b('0xe')](_0x189b('0x20'),_0xb7a62,JSON[_0x189b('0xf')](_0x411393));_0x4dae7d(_0x411393);})['catch'](function(_0x24833a){logger[_0x189b('0x10')](_0x189b('0x20'),_0x24833a[_0x189b('0x12')],_0xb7a62);_0x103de1(_0xb9ac00[_0x189b('0x10')](0x1f4,_0x24833a[_0x189b('0x12')]));});});};
\ No newline at end of file
index 1caabeb..947c36d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6da0=['post','create','put','update','delete','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/subjects','getDescriptions'];(function(_0x3f29c6,_0x16bbf0){var _0x34f03b=function(_0x390693){while(--_0x390693){_0x3f29c6['push'](_0x3f29c6['shift']());}};_0x34f03b(++_0x16bbf0);}(_0x6da0,0x176));var _0x06da=function(_0x89ef4f,_0x10225e){_0x89ef4f=_0x89ef4f-0x0;var _0x3bef0f=_0x6da0[_0x89ef4f];return _0x3bef0f;};'use strict';var multer=require('multer');var util=require(_0x06da('0x0'));var path=require(_0x06da('0x1'));var timeout=require(_0x06da('0x2'));var express=require(_0x06da('0x3'));var router=express['Router']();var fs_extra=require(_0x06da('0x4'));var auth=require(_0x06da('0x5'));var interaction=require(_0x06da('0x6'));var config=require(_0x06da('0x7'));var controller=require(_0x06da('0x8'));router[_0x06da('0x9')]('/',auth[_0x06da('0xa')](),controller['index']);router[_0x06da('0x9')](_0x06da('0xb'),auth[_0x06da('0xa')](),controller[_0x06da('0xc')]);router[_0x06da('0x9')](_0x06da('0xd'),auth[_0x06da('0xa')](),controller[_0x06da('0xe')]);router[_0x06da('0x9')](_0x06da('0xf'),auth['isAuthenticated'](),controller['getSubjects']);router[_0x06da('0x9')]('/:id/descriptions',auth[_0x06da('0xa')](),controller[_0x06da('0x10')]);router[_0x06da('0x11')]('/',auth[_0x06da('0xa')](),controller[_0x06da('0x12')]);router[_0x06da('0x13')](_0x06da('0xb'),auth['isAuthenticated'](),controller[_0x06da('0x14')]);router[_0x06da('0x15')](_0x06da('0xb'),auth[_0x06da('0xa')](),controller['destroy']);module[_0x06da('0x16')]=router;
\ No newline at end of file
+var _0x8cc1=['fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmConfiguration.controller','get','isAuthenticated','index','/:id','show','getFields','/:id/subjects','getSubjects','getDescriptions','post','put','update','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x2201ee,_0xf01c75){var _0x8f3a1=function(_0x119a32){while(--_0x119a32){_0x2201ee['push'](_0x2201ee['shift']());}};_0x8f3a1(++_0xf01c75);}(_0x8cc1,0x6e));var _0x18cc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8cc1[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x18cc('0x0'));var util=require(_0x18cc('0x1'));var path=require(_0x18cc('0x2'));var timeout=require(_0x18cc('0x3'));var express=require(_0x18cc('0x4'));var router=express['Router']();var fs_extra=require(_0x18cc('0x5'));var auth=require(_0x18cc('0x6'));var interaction=require(_0x18cc('0x7'));var config=require('../../config/environment');var controller=require(_0x18cc('0x8'));router[_0x18cc('0x9')]('/',auth[_0x18cc('0xa')](),controller[_0x18cc('0xb')]);router[_0x18cc('0x9')](_0x18cc('0xc'),auth[_0x18cc('0xa')](),controller[_0x18cc('0xd')]);router[_0x18cc('0x9')]('/:id/fields',auth['isAuthenticated'](),controller[_0x18cc('0xe')]);router[_0x18cc('0x9')](_0x18cc('0xf'),auth[_0x18cc('0xa')](),controller[_0x18cc('0x10')]);router[_0x18cc('0x9')]('/:id/descriptions',auth[_0x18cc('0xa')](),controller[_0x18cc('0x11')]);router[_0x18cc('0x12')]('/',auth[_0x18cc('0xa')](),controller['create']);router[_0x18cc('0x13')]('/:id',auth[_0x18cc('0xa')](),controller[_0x18cc('0x14')]);router['delete'](_0x18cc('0xc'),auth[_0x18cc('0xa')](),controller[_0x18cc('0x15')]);module[_0x18cc('0x16')]=router;
\ No newline at end of file
index b2ec8fc..bf29144 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd36c=['exports','STRING','sequelize'];(function(_0x36884e,_0x48008f){var _0x1cc367=function(_0x388a78){while(--_0x388a78){_0x36884e['push'](_0x36884e['shift']());}};_0x1cc367(++_0x48008f);}(_0xd36c,0x1d0));var _0xcd36=function(_0x279d37,_0x14de3f){_0x279d37=_0x279d37-0x0;var _0x530173=_0xd36c[_0x279d37];return _0x530173;};'use strict';var Sequelize=require(_0xcd36('0x0'));module[_0xcd36('0x1')]={'name':{'type':Sequelize[_0xcd36('0x2')]},'description':{'type':Sequelize[_0xcd36('0x2')]}};
\ No newline at end of file
+var _0x8cda=['exports','STRING','sequelize'];(function(_0x2ff127,_0x3d6e2b){var _0x53af48=function(_0x4a0c47){while(--_0x4a0c47){_0x2ff127['push'](_0x2ff127['shift']());}};_0x53af48(++_0x3d6e2b);}(_0x8cda,0xb6));var _0xa8cd=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x8cda[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0xa8cd('0x0'));module[_0xa8cd('0x1')]={'name':{'type':Sequelize[_0xa8cd('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index d82fb73..c9b020d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53d9=['params','keys','options','find','catch','create','body','getFields','SugarcrmField','findOne','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','Content-Range','apply','save','update','then','destroy','sendStatus','stack','name','send','index','SugarcrmConfiguration','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','show'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x53d9,0x108));var _0x953d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x53d9[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x953d('0x0'));var rimraf=require(_0x953d('0x1'));var zipdir=require(_0x953d('0x2'));var jsonpatch=require(_0x953d('0x3'));var rp=require(_0x953d('0x4'));var moment=require('moment');var BPromise=require(_0x953d('0x5'));var Mustache=require(_0x953d('0x6'));var util=require(_0x953d('0x7'));var path=require(_0x953d('0x8'));var sox=require(_0x953d('0x9'));var csv=require(_0x953d('0xa'));var ejs=require(_0x953d('0xb'));var fs=require('fs');var fs_extra=require(_0x953d('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x953d('0xd'));var jsforce=require(_0x953d('0xe'));var deskjs=require(_0x953d('0xf'));var toCsv=require(_0x953d('0xa'));var querystring=require(_0x953d('0x10'));var Papa=require(_0x953d('0x11'));var Redis=require('ioredis');var authService=require(_0x953d('0x12'));var qs=require(_0x953d('0x13'));var as=require(_0x953d('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x953d('0x15'))(_0x953d('0x16'));var utils=require(_0x953d('0x17'));var config=require(_0x953d('0x18'));var licenseUtil=require(_0x953d('0x19'));var db=require(_0x953d('0x1a'))['db'];function respondWithStatusCode(_0x36ff2e,_0x41927e){_0x41927e=_0x41927e||0xcc;return function(_0x47538f){if(_0x47538f){return _0x36ff2e['sendStatus'](_0x41927e);}return _0x36ff2e[_0x953d('0x1b')](_0x41927e)[_0x953d('0x1c')]();};}function respondWithResult(_0x5ce87d,_0x90e52a){_0x90e52a=_0x90e52a||0xc8;return function(_0xa25346){if(_0xa25346){return _0x5ce87d[_0x953d('0x1b')](_0x90e52a)[_0x953d('0x1d')](_0xa25346);}};}function respondWithFilteredResult(_0x581e89,_0x41e57c){return function(_0x11fcd3){if(_0x11fcd3){var _0x3f4854=typeof _0x41e57c[_0x953d('0x1e')]===_0x953d('0x1f')&&typeof _0x41e57c['limit']===_0x953d('0x1f');var _0x173731=_0x11fcd3[_0x953d('0x20')];var _0x311c42=_0x3f4854?0x0:_0x41e57c['offset'];var _0x7015fa=_0x3f4854?_0x11fcd3[_0x953d('0x20')]:_0x41e57c['offset']+_0x41e57c['limit'];var _0x157a43;if(_0x7015fa>=_0x173731){_0x7015fa=_0x173731;_0x157a43=0xc8;}else{_0x157a43=0xce;}_0x581e89[_0x953d('0x1b')](_0x157a43);return _0x581e89['set'](_0x953d('0x21'),_0x311c42+'-'+_0x7015fa+'/'+_0x173731)[_0x953d('0x1d')](_0x11fcd3);}return null;};}function patchUpdates(_0x40d7e1){return function(_0x69530){try{jsonpatch[_0x953d('0x22')](_0x69530,_0x40d7e1,!![]);}catch(_0x57fcfb){return BPromise['reject'](_0x57fcfb);}return _0x69530[_0x953d('0x23')]();};}function saveUpdates(_0x348fd9,_0x4c8f08){return function(_0x5b398b){if(_0x5b398b){return _0x5b398b[_0x953d('0x24')](_0x348fd9)[_0x953d('0x25')](function(_0x1cb87c){return _0x1cb87c;});}return null;};}function removeEntity(_0x2e4893,_0x3bf3c3){return function(_0x150c24){if(_0x150c24){return _0x150c24[_0x953d('0x26')]()[_0x953d('0x25')](function(){_0x2e4893[_0x953d('0x1b')](0xcc)[_0x953d('0x1c')]();});}};}function handleEntityNotFound(_0x386cd2,_0x3ea276){return function(_0x2ebffc){if(!_0x2ebffc){_0x386cd2[_0x953d('0x27')](0x194);}return _0x2ebffc;};}function handleError(_0x40db55,_0x5c036e){_0x5c036e=_0x5c036e||0x1f4;return function(_0x59a91e){logger['error'](_0x59a91e[_0x953d('0x28')]);if(_0x59a91e[_0x953d('0x29')]){delete _0x59a91e[_0x953d('0x29')];}_0x40db55[_0x953d('0x1b')](_0x5c036e)[_0x953d('0x2a')](_0x59a91e);};}exports[_0x953d('0x2b')]=function(_0x25ded2,_0x211d40){var _0x3784e9={},_0x4c9a36={},_0x664e51={'count':0x0,'rows':[]};var _0x279f2f=_['map'](db[_0x953d('0x2c')][_0x953d('0x2d')],function(_0x9db308){return{'name':_0x9db308[_0x953d('0x2e')],'type':_0x9db308[_0x953d('0x2f')][_0x953d('0x30')]};});_0x4c9a36[_0x953d('0x31')]=_[_0x953d('0x32')](_0x279f2f,'name');_0x4c9a36[_0x953d('0x33')]=_['keys'](_0x25ded2['query']);_0x4c9a36[_0x953d('0x34')]=_[_0x953d('0x35')](_0x4c9a36[_0x953d('0x31')],_0x4c9a36[_0x953d('0x33')]);_0x3784e9[_0x953d('0x36')]=_[_0x953d('0x35')](_0x4c9a36[_0x953d('0x31')],qs[_0x953d('0x37')](_0x25ded2['query'][_0x953d('0x37')]));_0x3784e9['attributes']=_0x3784e9[_0x953d('0x36')][_0x953d('0x38')]?_0x3784e9[_0x953d('0x36')]:_0x4c9a36[_0x953d('0x31')];if(!_0x25ded2['query'][_0x953d('0x39')](_0x953d('0x3a'))){_0x3784e9[_0x953d('0x3b')]=qs['limit'](_0x25ded2['query']['limit']);_0x3784e9['offset']=qs[_0x953d('0x1e')](_0x25ded2[_0x953d('0x33')][_0x953d('0x1e')]);}_0x3784e9[_0x953d('0x3c')]=qs[_0x953d('0x3d')](_0x25ded2[_0x953d('0x33')][_0x953d('0x3d')]);_0x3784e9['where']=qs['filters'](_[_0x953d('0x3e')](_0x25ded2[_0x953d('0x33')],_0x4c9a36[_0x953d('0x34')]),_0x279f2f);if(_0x25ded2[_0x953d('0x33')][_0x953d('0x3f')]){_0x3784e9[_0x953d('0x40')]=_[_0x953d('0x41')](_0x3784e9[_0x953d('0x40')],{'$or':_[_0x953d('0x32')](_0x279f2f,function(_0x472386){if(_0x472386[_0x953d('0x2f')]!==_0x953d('0x42')){var _0xfb45d4={};_0xfb45d4[_0x472386[_0x953d('0x29')]]={'$like':'%'+_0x25ded2[_0x953d('0x33')][_0x953d('0x3f')]+'%'};return _0xfb45d4;}})});}_0x3784e9=_['merge']({},_0x3784e9,_0x25ded2['options']);var _0x3e1663={'where':_0x3784e9[_0x953d('0x40')]};return db['SugarcrmConfiguration'][_0x953d('0x20')](_0x3e1663)[_0x953d('0x25')](function(_0x3dca78){_0x664e51[_0x953d('0x20')]=_0x3dca78;if(_0x25ded2[_0x953d('0x33')][_0x953d('0x43')]){_0x3784e9[_0x953d('0x44')]=[{'all':!![]}];}return db['SugarcrmConfiguration'][_0x953d('0x45')](_0x3784e9);})['then'](function(_0x26977b){_0x664e51[_0x953d('0x46')]=_0x26977b;return _0x664e51;})['then'](respondWithFilteredResult(_0x211d40,_0x3784e9))['catch'](handleError(_0x211d40,null));};exports[_0x953d('0x47')]=function(_0x1b5103,_0x575091){var _0x125b2b={'raw':![],'where':{'id':_0x1b5103[_0x953d('0x48')]['id']}},_0xa34fa4={};_0xa34fa4[_0x953d('0x31')]=_[_0x953d('0x49')](db[_0x953d('0x2c')][_0x953d('0x2d')]);_0xa34fa4['query']=_[_0x953d('0x49')](_0x1b5103[_0x953d('0x33')]);_0xa34fa4['filters']=_['intersection'](_0xa34fa4[_0x953d('0x31')],_0xa34fa4[_0x953d('0x33')]);_0x125b2b['attributes']=_['intersection'](_0xa34fa4[_0x953d('0x31')],qs[_0x953d('0x37')](_0x1b5103[_0x953d('0x33')][_0x953d('0x37')]));_0x125b2b['attributes']=_0x125b2b[_0x953d('0x36')][_0x953d('0x38')]?_0x125b2b['attributes']:_0xa34fa4[_0x953d('0x31')];if(_0x1b5103[_0x953d('0x33')][_0x953d('0x43')]){_0x125b2b[_0x953d('0x44')]=[{'all':!![]}];}_0x125b2b=_[_0x953d('0x41')]({},_0x125b2b,_0x1b5103[_0x953d('0x4a')]);return db[_0x953d('0x2c')][_0x953d('0x4b')](_0x125b2b)[_0x953d('0x25')](handleEntityNotFound(_0x575091,null))[_0x953d('0x25')](respondWithResult(_0x575091,null))[_0x953d('0x4c')](handleError(_0x575091,null));};exports[_0x953d('0x4d')]=function(_0x278849,_0x37aee9){return db[_0x953d('0x2c')][_0x953d('0x4d')](_0x278849['body'],{})[_0x953d('0x25')](respondWithResult(_0x37aee9,0xc9))[_0x953d('0x4c')](handleError(_0x37aee9,null));};exports[_0x953d('0x24')]=function(_0xb2da9c,_0x5f3b68){if(_0xb2da9c[_0x953d('0x4e')]['id']){delete _0xb2da9c[_0x953d('0x4e')]['id'];}return db['SugarcrmConfiguration']['find']({'where':{'id':_0xb2da9c[_0x953d('0x48')]['id']}})[_0x953d('0x25')](handleEntityNotFound(_0x5f3b68,null))[_0x953d('0x25')](saveUpdates(_0xb2da9c[_0x953d('0x4e')],null))[_0x953d('0x25')](respondWithResult(_0x5f3b68,null))['catch'](handleError(_0x5f3b68,null));};exports[_0x953d('0x26')]=function(_0x54556a,_0x149cb4){return db[_0x953d('0x2c')]['find']({'where':{'id':_0x54556a[_0x953d('0x48')]['id']}})[_0x953d('0x25')](handleEntityNotFound(_0x149cb4,null))['then'](removeEntity(_0x149cb4,null))[_0x953d('0x4c')](handleError(_0x149cb4,null));};exports[_0x953d('0x4f')]=function(_0x7d0307,_0x22ef1b,_0x1ad421){var _0x4272db={};var _0x130f23={};var _0x237575;var _0x93cb37;return db[_0x953d('0x2c')]['findOne']({'where':{'id':_0x7d0307[_0x953d('0x48')]['id']}})['then'](handleEntityNotFound(_0x22ef1b,null))[_0x953d('0x25')](function(_0x4b0797){if(_0x4b0797){_0x237575=_0x4b0797;_0x130f23[_0x953d('0x31')]=_['keys'](db[_0x953d('0x50')][_0x953d('0x2d')]);_0x130f23[_0x953d('0x33')]=_[_0x953d('0x49')](_0x7d0307['query']);_0x130f23[_0x953d('0x34')]=_[_0x953d('0x35')](_0x130f23[_0x953d('0x31')],_0x130f23[_0x953d('0x33')]);_0x4272db[_0x953d('0x36')]=_[_0x953d('0x35')](_0x130f23[_0x953d('0x31')],qs[_0x953d('0x37')](_0x7d0307['query']['fields']));_0x4272db[_0x953d('0x36')]=_0x4272db[_0x953d('0x36')][_0x953d('0x38')]?_0x4272db['attributes']:_0x130f23[_0x953d('0x31')];_0x4272db[_0x953d('0x3c')]=qs[_0x953d('0x3d')](_0x7d0307[_0x953d('0x33')][_0x953d('0x3d')]);_0x4272db[_0x953d('0x40')]=qs[_0x953d('0x34')](_['pick'](_0x7d0307['query'],_0x130f23[_0x953d('0x34')]));if(_0x7d0307[_0x953d('0x33')][_0x953d('0x3f')]){_0x4272db['where']=_['merge'](_0x4272db['where'],{'$or':_[_0x953d('0x32')](_0x4272db[_0x953d('0x36')],function(_0x3652b5){var _0x5d7c63={};_0x5d7c63[_0x3652b5]={'$like':'%'+_0x7d0307[_0x953d('0x33')][_0x953d('0x3f')]+'%'};return _0x5d7c63;})});}_0x4272db=_['merge']({},_0x4272db,_0x7d0307[_0x953d('0x4a')]);return _0x237575['getFields'](_0x4272db);}})[_0x953d('0x25')](function(_0xa62c04){if(_0xa62c04){_0x93cb37=_0xa62c04[_0x953d('0x38')];if(!_0x7d0307[_0x953d('0x33')][_0x953d('0x39')](_0x953d('0x3a'))){_0x4272db[_0x953d('0x3b')]=qs[_0x953d('0x3b')](_0x7d0307[_0x953d('0x33')]['limit']);_0x4272db[_0x953d('0x1e')]=qs[_0x953d('0x1e')](_0x7d0307[_0x953d('0x33')]['offset']);}return _0x237575[_0x953d('0x4f')](_0x4272db);}})[_0x953d('0x25')](function(_0x41f83e){if(_0x41f83e){return _0x41f83e?{'count':_0x93cb37,'rows':_0x41f83e}:null;}})['then'](respondWithResult(_0x22ef1b,null))['catch'](handleError(_0x22ef1b,null));};exports['getSubjects']=function(_0x4e07da,_0x543096,_0x40249a){var _0x1a8c21={};var _0x15f462={};var _0x3966f1;var _0xdafddb;return db[_0x953d('0x2c')][_0x953d('0x51')]({'where':{'id':_0x4e07da[_0x953d('0x48')]['id']}})[_0x953d('0x25')](handleEntityNotFound(_0x543096,null))['then'](function(_0x2fbada){if(_0x2fbada){_0x3966f1=_0x2fbada;_0x15f462[_0x953d('0x31')]=_[_0x953d('0x49')](db['SugarcrmField'][_0x953d('0x2d')]);_0x15f462['query']=_['keys'](_0x4e07da[_0x953d('0x33')]);_0x15f462[_0x953d('0x34')]=_[_0x953d('0x35')](_0x15f462[_0x953d('0x31')],_0x15f462[_0x953d('0x33')]);_0x1a8c21[_0x953d('0x36')]=_[_0x953d('0x35')](_0x15f462[_0x953d('0x31')],qs[_0x953d('0x37')](_0x4e07da[_0x953d('0x33')][_0x953d('0x37')]));_0x1a8c21['attributes']=_0x1a8c21['attributes']['length']?_0x1a8c21[_0x953d('0x36')]:_0x15f462[_0x953d('0x31')];_0x1a8c21['order']=qs[_0x953d('0x3d')](_0x4e07da[_0x953d('0x33')]['sort']);_0x1a8c21['where']=qs[_0x953d('0x34')](_[_0x953d('0x3e')](_0x4e07da[_0x953d('0x33')],_0x15f462[_0x953d('0x34')]));if(_0x4e07da['query'][_0x953d('0x3f')]){_0x1a8c21[_0x953d('0x40')]=_[_0x953d('0x41')](_0x1a8c21[_0x953d('0x40')],{'$or':_[_0x953d('0x32')](_0x1a8c21[_0x953d('0x36')],function(_0x3da1f9){var _0x42e8e3={};_0x42e8e3[_0x3da1f9]={'$like':'%'+_0x4e07da['query'][_0x953d('0x3f')]+'%'};return _0x42e8e3;})});}_0x1a8c21=_[_0x953d('0x41')]({},_0x1a8c21,_0x4e07da['options']);return _0x3966f1['getSubjects'](_0x1a8c21);}})[_0x953d('0x25')](function(_0x15f45d){if(_0x15f45d){_0xdafddb=_0x15f45d[_0x953d('0x38')];if(!_0x4e07da[_0x953d('0x33')][_0x953d('0x39')](_0x953d('0x3a'))){_0x1a8c21[_0x953d('0x3b')]=qs['limit'](_0x4e07da[_0x953d('0x33')][_0x953d('0x3b')]);_0x1a8c21['offset']=qs['offset'](_0x4e07da[_0x953d('0x33')][_0x953d('0x1e')]);}return _0x3966f1[_0x953d('0x52')](_0x1a8c21);}})[_0x953d('0x25')](function(_0x458e76){if(_0x458e76){return _0x458e76?{'count':_0xdafddb,'rows':_0x458e76}:null;}})[_0x953d('0x25')](respondWithResult(_0x543096,null))[_0x953d('0x4c')](handleError(_0x543096,null));};exports[_0x953d('0x53')]=function(_0x372804,_0x2f3e8e,_0x128d5e){var _0xecf9b5={};var _0x1fe9dc={};var _0x57bcd5;var _0x5352bb;return db[_0x953d('0x2c')]['findOne']({'where':{'id':_0x372804['params']['id']}})[_0x953d('0x25')](handleEntityNotFound(_0x2f3e8e,null))[_0x953d('0x25')](function(_0x49bf9d){if(_0x49bf9d){_0x57bcd5=_0x49bf9d;_0x1fe9dc[_0x953d('0x31')]=_[_0x953d('0x49')](db[_0x953d('0x50')][_0x953d('0x2d')]);_0x1fe9dc[_0x953d('0x33')]=_['keys'](_0x372804[_0x953d('0x33')]);_0x1fe9dc[_0x953d('0x34')]=_[_0x953d('0x35')](_0x1fe9dc[_0x953d('0x31')],_0x1fe9dc['query']);_0xecf9b5[_0x953d('0x36')]=_[_0x953d('0x35')](_0x1fe9dc[_0x953d('0x31')],qs[_0x953d('0x37')](_0x372804[_0x953d('0x33')]['fields']));_0xecf9b5[_0x953d('0x36')]=_0xecf9b5[_0x953d('0x36')][_0x953d('0x38')]?_0xecf9b5[_0x953d('0x36')]:_0x1fe9dc[_0x953d('0x31')];_0xecf9b5[_0x953d('0x3c')]=qs[_0x953d('0x3d')](_0x372804[_0x953d('0x33')][_0x953d('0x3d')]);_0xecf9b5[_0x953d('0x40')]=qs['filters'](_[_0x953d('0x3e')](_0x372804[_0x953d('0x33')],_0x1fe9dc[_0x953d('0x34')]));if(_0x372804[_0x953d('0x33')]['filter']){_0xecf9b5[_0x953d('0x40')]=_['merge'](_0xecf9b5[_0x953d('0x40')],{'$or':_[_0x953d('0x32')](_0xecf9b5[_0x953d('0x36')],function(_0x3a8824){var _0x298b20={};_0x298b20[_0x3a8824]={'$like':'%'+_0x372804[_0x953d('0x33')][_0x953d('0x3f')]+'%'};return _0x298b20;})});}_0xecf9b5=_[_0x953d('0x41')]({},_0xecf9b5,_0x372804[_0x953d('0x4a')]);return _0x57bcd5[_0x953d('0x53')](_0xecf9b5);}})['then'](function(_0x80781c){if(_0x80781c){_0x5352bb=_0x80781c[_0x953d('0x38')];if(!_0x372804[_0x953d('0x33')]['hasOwnProperty'](_0x953d('0x3a'))){_0xecf9b5[_0x953d('0x3b')]=qs[_0x953d('0x3b')](_0x372804['query']['limit']);_0xecf9b5[_0x953d('0x1e')]=qs[_0x953d('0x1e')](_0x372804[_0x953d('0x33')][_0x953d('0x1e')]);}return _0x57bcd5['getDescriptions'](_0xecf9b5);}})[_0x953d('0x25')](function(_0x2d202f){if(_0x2d202f){return _0x2d202f?{'count':_0x5352bb,'rows':_0x2d202f}:null;}})[_0x953d('0x25')](respondWithResult(_0x2f3e8e,null))[_0x953d('0x4c')](handleError(_0x2f3e8e,null));};
\ No newline at end of file
+var _0x88c8=['papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','reject','update','then','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','includeAll','include','SugarcrmConfiguration','findAll','rows','catch','params','options','find','create','body','destroy','getFields','findOne','getSubjects','SugarcrmField','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','to-csv','ejs','fs-extra','jsforce','querystring'];(function(_0x4ea539,_0x16f1d6){var _0x554799=function(_0x37feda){while(--_0x37feda){_0x4ea539['push'](_0x4ea539['shift']());}};_0x554799(++_0x16f1d6);}(_0x88c8,0xd7));var _0x888c=function(_0x110e10,_0x22789c){_0x110e10=_0x110e10-0x0;var _0x1d76f1=_0x88c8[_0x110e10];return _0x1d76f1;};'use strict';var emlformat=require(_0x888c('0x0'));var rimraf=require(_0x888c('0x1'));var zipdir=require(_0x888c('0x2'));var jsonpatch=require(_0x888c('0x3'));var rp=require('request-promise');var moment=require(_0x888c('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x888c('0x5'));var ejs=require(_0x888c('0x6'));var fs=require('fs');var fs_extra=require(_0x888c('0x7'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x888c('0x8'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x888c('0x9'));var Papa=require(_0x888c('0xa'));var Redis=require(_0x888c('0xb'));var authService=require(_0x888c('0xc'));var qs=require('../../components/parsers/qs');var as=require(_0x888c('0xd'));var hardwareService=require(_0x888c('0xe'));var logger=require(_0x888c('0xf'))(_0x888c('0x10'));var utils=require('../../config/utils');var config=require(_0x888c('0x11'));var licenseUtil=require(_0x888c('0x12'));var db=require(_0x888c('0x13'))['db'];function respondWithStatusCode(_0x3b1b39,_0xac0fae){_0xac0fae=_0xac0fae||0xcc;return function(_0x1d0e84){if(_0x1d0e84){return _0x3b1b39['sendStatus'](_0xac0fae);}return _0x3b1b39[_0x888c('0x14')](_0xac0fae)[_0x888c('0x15')]();};}function respondWithResult(_0x2fd4fb,_0x24714c){_0x24714c=_0x24714c||0xc8;return function(_0x2b7a3f){if(_0x2b7a3f){return _0x2fd4fb[_0x888c('0x14')](_0x24714c)[_0x888c('0x16')](_0x2b7a3f);}};}function respondWithFilteredResult(_0xf7b6a1,_0x390a41){return function(_0x4f0912){if(_0x4f0912){var _0x36d4de=typeof _0x390a41[_0x888c('0x17')]===_0x888c('0x18')&&typeof _0x390a41[_0x888c('0x19')]===_0x888c('0x18');var _0x417852=_0x4f0912[_0x888c('0x1a')];var _0x1a4907=_0x36d4de?0x0:_0x390a41[_0x888c('0x17')];var _0x2d2bbe=_0x36d4de?_0x4f0912[_0x888c('0x1a')]:_0x390a41['offset']+_0x390a41[_0x888c('0x19')];var _0xd2e277;if(_0x2d2bbe>=_0x417852){_0x2d2bbe=_0x417852;_0xd2e277=0xc8;}else{_0xd2e277=0xce;}_0xf7b6a1[_0x888c('0x14')](_0xd2e277);return _0xf7b6a1['set'](_0x888c('0x1b'),_0x1a4907+'-'+_0x2d2bbe+'/'+_0x417852)[_0x888c('0x16')](_0x4f0912);}return null;};}function patchUpdates(_0x9bd892){return function(_0x51180c){try{jsonpatch['apply'](_0x51180c,_0x9bd892,!![]);}catch(_0x382f56){return BPromise[_0x888c('0x1c')](_0x382f56);}return _0x51180c['save']();};}function saveUpdates(_0x1d82f4,_0x3b4faf){return function(_0x4e4157){if(_0x4e4157){return _0x4e4157[_0x888c('0x1d')](_0x1d82f4)[_0x888c('0x1e')](function(_0x4ac593){return _0x4ac593;});}return null;};}function removeEntity(_0x34bba5,_0x557f44){return function(_0x3eb831){if(_0x3eb831){return _0x3eb831['destroy']()['then'](function(){_0x34bba5[_0x888c('0x14')](0xcc)[_0x888c('0x15')]();});}};}function handleEntityNotFound(_0x2a4f30,_0x3aadd2){return function(_0x60d42d){if(!_0x60d42d){_0x2a4f30['sendStatus'](0x194);}return _0x60d42d;};}function handleError(_0x266a58,_0x5c014f){_0x5c014f=_0x5c014f||0x1f4;return function(_0x5b1ede){logger[_0x888c('0x1f')](_0x5b1ede[_0x888c('0x20')]);if(_0x5b1ede[_0x888c('0x21')]){delete _0x5b1ede['name'];}_0x266a58['status'](_0x5c014f)[_0x888c('0x22')](_0x5b1ede);};}exports[_0x888c('0x23')]=function(_0x44fdd8,_0x2b28a5){var _0x248424={},_0x482cb8={},_0x511a36={'count':0x0,'rows':[]};var _0x110b9b=_[_0x888c('0x24')](db['SugarcrmConfiguration'][_0x888c('0x25')],function(_0x5f43d3){return{'name':_0x5f43d3[_0x888c('0x26')],'type':_0x5f43d3['type'][_0x888c('0x27')]};});_0x482cb8[_0x888c('0x28')]=_[_0x888c('0x24')](_0x110b9b,_0x888c('0x21'));_0x482cb8[_0x888c('0x29')]=_[_0x888c('0x2a')](_0x44fdd8['query']);_0x482cb8[_0x888c('0x2b')]=_[_0x888c('0x2c')](_0x482cb8[_0x888c('0x28')],_0x482cb8['query']);_0x248424[_0x888c('0x2d')]=_['intersection'](_0x482cb8[_0x888c('0x28')],qs[_0x888c('0x2e')](_0x44fdd8['query'][_0x888c('0x2e')]));_0x248424['attributes']=_0x248424[_0x888c('0x2d')][_0x888c('0x2f')]?_0x248424[_0x888c('0x2d')]:_0x482cb8[_0x888c('0x28')];if(!_0x44fdd8[_0x888c('0x29')][_0x888c('0x30')](_0x888c('0x31'))){_0x248424[_0x888c('0x19')]=qs[_0x888c('0x19')](_0x44fdd8[_0x888c('0x29')][_0x888c('0x19')]);_0x248424[_0x888c('0x17')]=qs[_0x888c('0x17')](_0x44fdd8[_0x888c('0x29')][_0x888c('0x17')]);}_0x248424[_0x888c('0x32')]=qs[_0x888c('0x33')](_0x44fdd8[_0x888c('0x29')]['sort']);_0x248424[_0x888c('0x34')]=qs[_0x888c('0x2b')](_[_0x888c('0x35')](_0x44fdd8[_0x888c('0x29')],_0x482cb8[_0x888c('0x2b')]),_0x110b9b);if(_0x44fdd8['query'][_0x888c('0x36')]){_0x248424['where']=_['merge'](_0x248424[_0x888c('0x34')],{'$or':_[_0x888c('0x24')](_0x110b9b,function(_0x60b0a8){if(_0x60b0a8[_0x888c('0x37')]!==_0x888c('0x38')){var _0x11e8eb={};_0x11e8eb[_0x60b0a8[_0x888c('0x21')]]={'$like':'%'+_0x44fdd8[_0x888c('0x29')][_0x888c('0x36')]+'%'};return _0x11e8eb;}})});}_0x248424=_[_0x888c('0x39')]({},_0x248424,_0x44fdd8['options']);var _0x26b65d={'where':_0x248424['where']};return db['SugarcrmConfiguration'][_0x888c('0x1a')](_0x26b65d)[_0x888c('0x1e')](function(_0x59bb3f){_0x511a36[_0x888c('0x1a')]=_0x59bb3f;if(_0x44fdd8[_0x888c('0x29')][_0x888c('0x3a')]){_0x248424[_0x888c('0x3b')]=[{'all':!![]}];}return db[_0x888c('0x3c')][_0x888c('0x3d')](_0x248424);})[_0x888c('0x1e')](function(_0x3c5789){_0x511a36[_0x888c('0x3e')]=_0x3c5789;return _0x511a36;})['then'](respondWithFilteredResult(_0x2b28a5,_0x248424))[_0x888c('0x3f')](handleError(_0x2b28a5,null));};exports['show']=function(_0x4465ff,_0x35adb1){var _0x5da0a7={'raw':![],'where':{'id':_0x4465ff[_0x888c('0x40')]['id']}},_0x19828d={};_0x19828d[_0x888c('0x28')]=_['keys'](db[_0x888c('0x3c')][_0x888c('0x25')]);_0x19828d[_0x888c('0x29')]=_['keys'](_0x4465ff[_0x888c('0x29')]);_0x19828d[_0x888c('0x2b')]=_[_0x888c('0x2c')](_0x19828d['model'],_0x19828d[_0x888c('0x29')]);_0x5da0a7[_0x888c('0x2d')]=_['intersection'](_0x19828d[_0x888c('0x28')],qs[_0x888c('0x2e')](_0x4465ff[_0x888c('0x29')][_0x888c('0x2e')]));_0x5da0a7[_0x888c('0x2d')]=_0x5da0a7[_0x888c('0x2d')][_0x888c('0x2f')]?_0x5da0a7[_0x888c('0x2d')]:_0x19828d[_0x888c('0x28')];if(_0x4465ff[_0x888c('0x29')][_0x888c('0x3a')]){_0x5da0a7[_0x888c('0x3b')]=[{'all':!![]}];}_0x5da0a7=_[_0x888c('0x39')]({},_0x5da0a7,_0x4465ff[_0x888c('0x41')]);return db['SugarcrmConfiguration'][_0x888c('0x42')](_0x5da0a7)[_0x888c('0x1e')](handleEntityNotFound(_0x35adb1,null))[_0x888c('0x1e')](respondWithResult(_0x35adb1,null))[_0x888c('0x3f')](handleError(_0x35adb1,null));};exports[_0x888c('0x43')]=function(_0x270d1b,_0x1dba5a){return db['SugarcrmConfiguration']['create'](_0x270d1b[_0x888c('0x44')],{})[_0x888c('0x1e')](respondWithResult(_0x1dba5a,0xc9))[_0x888c('0x3f')](handleError(_0x1dba5a,null));};exports[_0x888c('0x1d')]=function(_0x34cb36,_0x37c75c){if(_0x34cb36[_0x888c('0x44')]['id']){delete _0x34cb36[_0x888c('0x44')]['id'];}return db[_0x888c('0x3c')][_0x888c('0x42')]({'where':{'id':_0x34cb36[_0x888c('0x40')]['id']}})[_0x888c('0x1e')](handleEntityNotFound(_0x37c75c,null))[_0x888c('0x1e')](saveUpdates(_0x34cb36[_0x888c('0x44')],null))[_0x888c('0x1e')](respondWithResult(_0x37c75c,null))[_0x888c('0x3f')](handleError(_0x37c75c,null));};exports[_0x888c('0x45')]=function(_0x9937b1,_0x38d30c){return db[_0x888c('0x3c')][_0x888c('0x42')]({'where':{'id':_0x9937b1[_0x888c('0x40')]['id']}})['then'](handleEntityNotFound(_0x38d30c,null))[_0x888c('0x1e')](removeEntity(_0x38d30c,null))['catch'](handleError(_0x38d30c,null));};exports[_0x888c('0x46')]=function(_0x1de204,_0x5c127b,_0x500c8a){var _0xd7b641={};var _0x2db32f={};var _0xe9b24a;var _0x40ca9c;return db[_0x888c('0x3c')][_0x888c('0x47')]({'where':{'id':_0x1de204['params']['id']}})['then'](handleEntityNotFound(_0x5c127b,null))[_0x888c('0x1e')](function(_0xca376a){if(_0xca376a){_0xe9b24a=_0xca376a;_0x2db32f[_0x888c('0x28')]=_[_0x888c('0x2a')](db['SugarcrmField'][_0x888c('0x25')]);_0x2db32f['query']=_[_0x888c('0x2a')](_0x1de204['query']);_0x2db32f[_0x888c('0x2b')]=_[_0x888c('0x2c')](_0x2db32f[_0x888c('0x28')],_0x2db32f['query']);_0xd7b641[_0x888c('0x2d')]=_[_0x888c('0x2c')](_0x2db32f[_0x888c('0x28')],qs[_0x888c('0x2e')](_0x1de204[_0x888c('0x29')][_0x888c('0x2e')]));_0xd7b641[_0x888c('0x2d')]=_0xd7b641[_0x888c('0x2d')]['length']?_0xd7b641['attributes']:_0x2db32f[_0x888c('0x28')];_0xd7b641[_0x888c('0x32')]=qs[_0x888c('0x33')](_0x1de204[_0x888c('0x29')][_0x888c('0x33')]);_0xd7b641[_0x888c('0x34')]=qs[_0x888c('0x2b')](_[_0x888c('0x35')](_0x1de204[_0x888c('0x29')],_0x2db32f['filters']));if(_0x1de204[_0x888c('0x29')]['filter']){_0xd7b641[_0x888c('0x34')]=_['merge'](_0xd7b641[_0x888c('0x34')],{'$or':_[_0x888c('0x24')](_0xd7b641[_0x888c('0x2d')],function(_0x57a786){var _0x44d38c={};_0x44d38c[_0x57a786]={'$like':'%'+_0x1de204['query'][_0x888c('0x36')]+'%'};return _0x44d38c;})});}_0xd7b641=_[_0x888c('0x39')]({},_0xd7b641,_0x1de204[_0x888c('0x41')]);return _0xe9b24a['getFields'](_0xd7b641);}})[_0x888c('0x1e')](function(_0x5927f1){if(_0x5927f1){_0x40ca9c=_0x5927f1['length'];if(!_0x1de204[_0x888c('0x29')][_0x888c('0x30')](_0x888c('0x31'))){_0xd7b641[_0x888c('0x19')]=qs[_0x888c('0x19')](_0x1de204[_0x888c('0x29')]['limit']);_0xd7b641[_0x888c('0x17')]=qs[_0x888c('0x17')](_0x1de204[_0x888c('0x29')][_0x888c('0x17')]);}return _0xe9b24a[_0x888c('0x46')](_0xd7b641);}})['then'](function(_0x2159f9){if(_0x2159f9){return _0x2159f9?{'count':_0x40ca9c,'rows':_0x2159f9}:null;}})[_0x888c('0x1e')](respondWithResult(_0x5c127b,null))['catch'](handleError(_0x5c127b,null));};exports[_0x888c('0x48')]=function(_0x17e2a5,_0x171209,_0x11b7e7){var _0x13c9df={};var _0x554f3c={};var _0x196549;var _0x4fc52e;return db[_0x888c('0x3c')][_0x888c('0x47')]({'where':{'id':_0x17e2a5[_0x888c('0x40')]['id']}})[_0x888c('0x1e')](handleEntityNotFound(_0x171209,null))[_0x888c('0x1e')](function(_0x5cc332){if(_0x5cc332){_0x196549=_0x5cc332;_0x554f3c[_0x888c('0x28')]=_['keys'](db[_0x888c('0x49')][_0x888c('0x25')]);_0x554f3c['query']=_['keys'](_0x17e2a5[_0x888c('0x29')]);_0x554f3c[_0x888c('0x2b')]=_[_0x888c('0x2c')](_0x554f3c[_0x888c('0x28')],_0x554f3c[_0x888c('0x29')]);_0x13c9df['attributes']=_[_0x888c('0x2c')](_0x554f3c[_0x888c('0x28')],qs['fields'](_0x17e2a5['query'][_0x888c('0x2e')]));_0x13c9df['attributes']=_0x13c9df[_0x888c('0x2d')]['length']?_0x13c9df[_0x888c('0x2d')]:_0x554f3c[_0x888c('0x28')];_0x13c9df[_0x888c('0x32')]=qs[_0x888c('0x33')](_0x17e2a5[_0x888c('0x29')]['sort']);_0x13c9df[_0x888c('0x34')]=qs[_0x888c('0x2b')](_['pick'](_0x17e2a5[_0x888c('0x29')],_0x554f3c[_0x888c('0x2b')]));if(_0x17e2a5[_0x888c('0x29')][_0x888c('0x36')]){_0x13c9df[_0x888c('0x34')]=_[_0x888c('0x39')](_0x13c9df['where'],{'$or':_[_0x888c('0x24')](_0x13c9df[_0x888c('0x2d')],function(_0x532493){var _0x39bafd={};_0x39bafd[_0x532493]={'$like':'%'+_0x17e2a5[_0x888c('0x29')][_0x888c('0x36')]+'%'};return _0x39bafd;})});}_0x13c9df=_[_0x888c('0x39')]({},_0x13c9df,_0x17e2a5[_0x888c('0x41')]);return _0x196549[_0x888c('0x48')](_0x13c9df);}})[_0x888c('0x1e')](function(_0x5a652f){if(_0x5a652f){_0x4fc52e=_0x5a652f[_0x888c('0x2f')];if(!_0x17e2a5['query']['hasOwnProperty'](_0x888c('0x31'))){_0x13c9df[_0x888c('0x19')]=qs[_0x888c('0x19')](_0x17e2a5['query'][_0x888c('0x19')]);_0x13c9df['offset']=qs[_0x888c('0x17')](_0x17e2a5['query'][_0x888c('0x17')]);}return _0x196549['getSubjects'](_0x13c9df);}})[_0x888c('0x1e')](function(_0x281bf2){if(_0x281bf2){return _0x281bf2?{'count':_0x4fc52e,'rows':_0x281bf2}:null;}})[_0x888c('0x1e')](respondWithResult(_0x171209,null))[_0x888c('0x3f')](handleError(_0x171209,null));};exports['getDescriptions']=function(_0x51fcec,_0x1f9900,_0x5c1bce){var _0x570335={};var _0x85a4c8={};var _0x420664;var _0x485cf0;return db[_0x888c('0x3c')][_0x888c('0x47')]({'where':{'id':_0x51fcec[_0x888c('0x40')]['id']}})[_0x888c('0x1e')](handleEntityNotFound(_0x1f9900,null))[_0x888c('0x1e')](function(_0x1cf898){if(_0x1cf898){_0x420664=_0x1cf898;_0x85a4c8[_0x888c('0x28')]=_[_0x888c('0x2a')](db[_0x888c('0x49')][_0x888c('0x25')]);_0x85a4c8[_0x888c('0x29')]=_[_0x888c('0x2a')](_0x51fcec[_0x888c('0x29')]);_0x85a4c8['filters']=_[_0x888c('0x2c')](_0x85a4c8[_0x888c('0x28')],_0x85a4c8['query']);_0x570335[_0x888c('0x2d')]=_['intersection'](_0x85a4c8[_0x888c('0x28')],qs['fields'](_0x51fcec['query']['fields']));_0x570335[_0x888c('0x2d')]=_0x570335['attributes'][_0x888c('0x2f')]?_0x570335[_0x888c('0x2d')]:_0x85a4c8[_0x888c('0x28')];_0x570335['order']=qs['sort'](_0x51fcec[_0x888c('0x29')][_0x888c('0x33')]);_0x570335[_0x888c('0x34')]=qs[_0x888c('0x2b')](_[_0x888c('0x35')](_0x51fcec[_0x888c('0x29')],_0x85a4c8[_0x888c('0x2b')]));if(_0x51fcec[_0x888c('0x29')][_0x888c('0x36')]){_0x570335['where']=_['merge'](_0x570335[_0x888c('0x34')],{'$or':_[_0x888c('0x24')](_0x570335[_0x888c('0x2d')],function(_0x2e837f){var _0x355545={};_0x355545[_0x2e837f]={'$like':'%'+_0x51fcec[_0x888c('0x29')][_0x888c('0x36')]+'%'};return _0x355545;})});}_0x570335=_['merge']({},_0x570335,_0x51fcec[_0x888c('0x41')]);return _0x420664[_0x888c('0x4a')](_0x570335);}})['then'](function(_0x136478){if(_0x136478){_0x485cf0=_0x136478['length'];if(!_0x51fcec[_0x888c('0x29')]['hasOwnProperty'](_0x888c('0x31'))){_0x570335[_0x888c('0x19')]=qs[_0x888c('0x19')](_0x51fcec['query']['limit']);_0x570335['offset']=qs[_0x888c('0x17')](_0x51fcec[_0x888c('0x29')][_0x888c('0x17')]);}return _0x420664[_0x888c('0x4a')](_0x570335);}})[_0x888c('0x1e')](function(_0x5b2295){if(_0x5b2295){return _0x5b2295?{'count':_0x485cf0,'rows':_0x5b2295}:null;}})['then'](respondWithResult(_0x1f9900,null))[_0x888c('0x3f')](handleError(_0x1f9900,null));};
\ No newline at end of file
index 4d29b9e..365b930 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1d2=['moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','SugarcrmConfiguration','../../config/logger','api'];(function(_0x2e3d63,_0xb43a9b){var _0x105946=function(_0x466785){while(--_0x466785){_0x2e3d63['push'](_0x2e3d63['shift']());}};_0x105946(++_0xb43a9b);}(_0xb1d2,0x116));var _0x2b1d=function(_0x22824f,_0x5780a0){_0x22824f=_0x22824f-0x0;var _0x432af9=_0xb1d2[_0x22824f];return _0x432af9;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x2b1d('0x0'))(_0x2b1d('0x1'));var moment=require(_0x2b1d('0x2'));var BPromise=require(_0x2b1d('0x3'));var rp=require(_0x2b1d('0x4'));var fs=require('fs');var path=require(_0x2b1d('0x5'));var rimraf=require(_0x2b1d('0x6'));var config=require(_0x2b1d('0x7'));var attributes=require('./intSugarcrmConfiguration.attributes');module[_0x2b1d('0x8')]=function(_0x40f0ac,_0x35cc51){return _0x40f0ac['define'](_0x2b1d('0x9'),attributes,{'tableName':'int_sugarcrm_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x52b6=['../../config/environment','./intSugarcrmConfiguration.attributes','exports','define','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf'];(function(_0x24061a,_0x1c9f4d){var _0x82054e=function(_0x2ec346){while(--_0x2ec346){_0x24061a['push'](_0x24061a['shift']());}};_0x82054e(++_0x1c9f4d);}(_0x52b6,0x131));var _0x652b=function(_0x45ce66,_0x54bdb1){_0x45ce66=_0x45ce66-0x0;var _0x32c0be=_0x52b6[_0x45ce66];return _0x32c0be;};'use strict';var _=require(_0x652b('0x0'));var util=require('util');var logger=require(_0x652b('0x1'))('api');var moment=require(_0x652b('0x2'));var BPromise=require(_0x652b('0x3'));var rp=require(_0x652b('0x4'));var fs=require('fs');var path=require(_0x652b('0x5'));var rimraf=require(_0x652b('0x6'));var config=require(_0x652b('0x7'));var attributes=require(_0x652b('0x8'));module[_0x652b('0x9')]=function(_0x4e6e0e,_0x4c64be){return _0x4e6e0e[_0x652b('0xa')](_0x652b('0xb'),attributes,{'tableName':_0x652b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2ee8904..ead962c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49c6=['code','message','result','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x566155,_0x275b7a){var _0x326b28=function(_0x5b41e0){while(--_0x5b41e0){_0x566155['push'](_0x566155['shift']());}};_0x326b28(++_0x275b7a);}(_0x49c6,0x72));var _0x649c=function(_0x4b366e,_0x479e1f){_0x4b366e=_0x4b366e-0x0;var _0x464dff=_0x49c6[_0x4b366e];return _0x464dff;};'use strict';var _=require('lodash');var util=require(_0x649c('0x0'));var moment=require('moment');var BPromise=require(_0x649c('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x649c('0x2'));var db=require(_0x649c('0x3'))['db'];var utils=require(_0x649c('0x4'));var logger=require(_0x649c('0x5'))(_0x649c('0x6'));var config=require(_0x649c('0x7'));var jayson=require(_0x649c('0x8'));var client=jayson[_0x649c('0x9')][_0x649c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1ca145,_0x5ec3dd,_0x41ffc4){return new BPromise(function(_0x57f196,_0x31113e){return client['request'](_0x1ca145,_0x41ffc4)['then'](function(_0x290c1f){logger[_0x649c('0xb')](_0x649c('0xc'),_0x5ec3dd,_0x649c('0xd'));logger[_0x649c('0xe')](_0x649c('0xf'),_0x5ec3dd,'request\x20sent',JSON[_0x649c('0x10')](_0x290c1f));if(_0x290c1f[_0x649c('0x11')]){if(_0x290c1f['error'][_0x649c('0x12')]===0x1f4){logger[_0x649c('0x11')](_0x649c('0xc'),_0x5ec3dd,_0x290c1f[_0x649c('0x11')][_0x649c('0x13')]);return _0x31113e(_0x290c1f['error']['message']);}logger[_0x649c('0x11')](_0x649c('0xc'),_0x5ec3dd,_0x290c1f[_0x649c('0x11')][_0x649c('0x13')]);return _0x57f196(_0x290c1f[_0x649c('0x11')][_0x649c('0x13')]);}else{logger[_0x649c('0xb')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x5ec3dd,_0x649c('0xd'));_0x57f196(_0x290c1f[_0x649c('0x14')][_0x649c('0x13')]);}})[_0x649c('0x15')](function(_0x4c56d9){logger[_0x649c('0x11')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x5ec3dd,_0x4c56d9);_0x31113e(_0x4c56d9);});});}
\ No newline at end of file
+var _0xdffa=['SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','SugarcrmConfiguration,\x20%s,\x20%s','message','result','catch','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent'];(function(_0x24c8ea,_0xa29a34){var _0x139c08=function(_0x12e609){while(--_0x12e609){_0x24c8ea['push'](_0x24c8ea['shift']());}};_0x139c08(++_0xa29a34);}(_0xdffa,0x151));var _0xadff=function(_0x4c3b8c,_0x574b60){_0x4c3b8c=_0x4c3b8c-0x0;var _0x458c13=_0xdffa[_0x4c3b8c];return _0x458c13;};'use strict';var _=require(_0xadff('0x0'));var util=require(_0xadff('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xadff('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xadff('0x3'))['db'];var utils=require(_0xadff('0x4'));var logger=require(_0xadff('0x5'))(_0xadff('0x6'));var config=require(_0xadff('0x7'));var jayson=require(_0xadff('0x8'));var client=jayson[_0xadff('0x9')][_0xadff('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x26a2e6,_0x3e3caa,_0x3559d8){return new BPromise(function(_0x2fe8b7,_0x2bcc6b){return client[_0xadff('0xb')](_0x26a2e6,_0x3559d8)[_0xadff('0xc')](function(_0x291728){logger[_0xadff('0xd')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x3e3caa,_0xadff('0xe'));logger['debug'](_0xadff('0xf'),_0x3e3caa,_0xadff('0xe'),JSON[_0xadff('0x10')](_0x291728));if(_0x291728[_0xadff('0x11')]){if(_0x291728['error']['code']===0x1f4){logger[_0xadff('0x11')](_0xadff('0x12'),_0x3e3caa,_0x291728['error'][_0xadff('0x13')]);return _0x2bcc6b(_0x291728[_0xadff('0x11')][_0xadff('0x13')]);}logger['error'](_0xadff('0x12'),_0x3e3caa,_0x291728[_0xadff('0x11')]['message']);return _0x2fe8b7(_0x291728[_0xadff('0x11')]['message']);}else{logger[_0xadff('0xd')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x3e3caa,_0xadff('0xe'));_0x2fe8b7(_0x291728[_0xadff('0x14')][_0xadff('0x13')]);}})[_0xadff('0x15')](function(_0x2adbe8){logger[_0xadff('0x11')](_0xadff('0x12'),_0x3e3caa,_0x2adbe8);_0x2bcc6b(_0x2adbe8);});});}
\ No newline at end of file
index 09b3255..90b0a16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6a2=['/:id','show','post','put','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmField.controller','get','isAuthenticated'];(function(_0x22875e,_0xb601fb){var _0x934224=function(_0x37ab05){while(--_0x37ab05){_0x22875e['push'](_0x22875e['shift']());}};_0x934224(++_0xb601fb);}(_0xa6a2,0x1a5));var _0x2a6a=function(_0x2355a8,_0x16c9d4){_0x2355a8=_0x2355a8-0x0;var _0x3ebb0d=_0xa6a2[_0x2355a8];return _0x3ebb0d;};'use strict';var multer=require(_0x2a6a('0x0'));var util=require('util');var path=require(_0x2a6a('0x1'));var timeout=require('connect-timeout');var express=require(_0x2a6a('0x2'));var router=express[_0x2a6a('0x3')]();var fs_extra=require(_0x2a6a('0x4'));var auth=require(_0x2a6a('0x5'));var interaction=require(_0x2a6a('0x6'));var config=require(_0x2a6a('0x7'));var controller=require(_0x2a6a('0x8'));router[_0x2a6a('0x9')]('/',auth[_0x2a6a('0xa')](),controller['index']);router[_0x2a6a('0x9')](_0x2a6a('0xb'),auth[_0x2a6a('0xa')](),controller[_0x2a6a('0xc')]);router[_0x2a6a('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2a6a('0xe')](_0x2a6a('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x2a6a('0xf')](_0x2a6a('0xb'),auth[_0x2a6a('0xa')](),controller[_0x2a6a('0x10')]);module[_0x2a6a('0x11')]=router;
\ No newline at end of file
+var _0xe6b7=['/:id','isAuthenticated','show','post','put','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get'];(function(_0x5a99db,_0x1cece5){var _0x3aad62=function(_0x334cb7){while(--_0x334cb7){_0x5a99db['push'](_0x5a99db['shift']());}};_0x3aad62(++_0x1cece5);}(_0xe6b7,0x1d2));var _0x7e6b=function(_0x426c38,_0x56b57a){_0x426c38=_0x426c38-0x0;var _0x2a38cd=_0xe6b7[_0x426c38];return _0x2a38cd;};'use strict';var multer=require(_0x7e6b('0x0'));var util=require(_0x7e6b('0x1'));var path=require(_0x7e6b('0x2'));var timeout=require(_0x7e6b('0x3'));var express=require(_0x7e6b('0x4'));var router=express[_0x7e6b('0x5')]();var fs_extra=require(_0x7e6b('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x7e6b('0x7'));var config=require(_0x7e6b('0x8'));var controller=require('./intSugarcrmField.controller');router[_0x7e6b('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x7e6b('0x9')](_0x7e6b('0xa'),auth[_0x7e6b('0xb')](),controller[_0x7e6b('0xc')]);router[_0x7e6b('0xd')]('/',auth[_0x7e6b('0xb')](),controller['create']);router[_0x7e6b('0xe')](_0x7e6b('0xa'),auth[_0x7e6b('0xb')](),controller[_0x7e6b('0xf')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x7e6b('0x10')]=router;
\ No newline at end of file
index 242e3eb..56178bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2e0=['customVariable','keyValue','picklist','STRING','variable','BOOLEAN','sequelize','exports','ENUM','string'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xe2e0,0x100));var _0x0e2e=function(_0xefef6f,_0x5f9f66){_0xefef6f=_0xefef6f-0x0;var _0x454173=_0xe2e0[_0xefef6f];return _0x454173;};'use strict';var Sequelize=require(_0x0e2e('0x0'));module[_0x0e2e('0x1')]={'type':{'type':Sequelize[_0x0e2e('0x2')](_0x0e2e('0x3'),'variable',_0x0e2e('0x4'),_0x0e2e('0x5'),_0x0e2e('0x6')),'defaultValue':_0x0e2e('0x3')},'content':{'type':Sequelize[_0x0e2e('0x7')]},'key':{'type':Sequelize[_0x0e2e('0x7')]},'keyType':{'type':Sequelize[_0x0e2e('0x2')]('string',_0x0e2e('0x8'),_0x0e2e('0x4'))},'keyContent':{'type':Sequelize[_0x0e2e('0x7')]},'idField':{'type':Sequelize[_0x0e2e('0x7')]},'nameField':{'type':Sequelize[_0x0e2e('0x7')]},'customField':{'type':Sequelize[_0x0e2e('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x0e2e('0x7')]}};
\ No newline at end of file
+var _0x07ce=['STRING','exports','ENUM','string','customVariable','keyValue','variable'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x07ce,0x1eb));var _0xe07c=function(_0xda6b23,_0x280f43){_0xda6b23=_0xda6b23-0x0;var _0x24f68b=_0x07ce[_0xda6b23];return _0x24f68b;};'use strict';var Sequelize=require('sequelize');module[_0xe07c('0x0')]={'type':{'type':Sequelize[_0xe07c('0x1')](_0xe07c('0x2'),'variable',_0xe07c('0x3'),_0xe07c('0x4'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xe07c('0x1')](_0xe07c('0x2'),_0xe07c('0x5'),_0xe07c('0x3'))},'keyContent':{'type':Sequelize[_0xe07c('0x6')]},'idField':{'type':Sequelize[_0xe07c('0x6')]},'nameField':{'type':Sequelize[_0xe07c('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xe07c('0x6')]}};
\ No newline at end of file
index 752886d..6303b24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5890=['catch','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','error','stack','name','index','rawAttributes','fieldName','key','model','map','keys','query','intersection','attributes','fields','hasOwnProperty','sort','where','filters','filter','merge','VIRTUAL','options','SugarcrmField','includeAll','include','findAll','show','params','length','find'];(function(_0x5ef32e,_0x307684){var _0x59b3dd=function(_0x278172){while(--_0x278172){_0x5ef32e['push'](_0x5ef32e['shift']());}};_0x59b3dd(++_0x307684);}(_0x5890,0x1a8));var _0x0589=function(_0xf23a61,_0x93b1f7){_0xf23a61=_0xf23a61-0x0;var _0xbfdfa0=_0x5890[_0xf23a61];return _0xbfdfa0;};'use strict';var emlformat=require(_0x0589('0x0'));var rimraf=require(_0x0589('0x1'));var zipdir=require(_0x0589('0x2'));var jsonpatch=require(_0x0589('0x3'));var rp=require(_0x0589('0x4'));var moment=require('moment');var BPromise=require(_0x0589('0x5'));var Mustache=require(_0x0589('0x6'));var util=require(_0x0589('0x7'));var path=require('path');var sox=require(_0x0589('0x8'));var csv=require('to-csv');var ejs=require(_0x0589('0x9'));var fs=require('fs');var fs_extra=require(_0x0589('0xa'));var _=require(_0x0589('0xb'));var squel=require(_0x0589('0xc'));var crypto=require(_0x0589('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x0589('0xe'));var toCsv=require(_0x0589('0xf'));var querystring=require(_0x0589('0x10'));var Papa=require('papaparse');var Redis=require(_0x0589('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0589('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x0589('0x13'));var config=require(_0x0589('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x0589('0x15'))['db'];function respondWithStatusCode(_0xd3ff52,_0x37b00a){_0x37b00a=_0x37b00a||0xcc;return function(_0x4b9c63){if(_0x4b9c63){return _0xd3ff52[_0x0589('0x16')](_0x37b00a);}return _0xd3ff52[_0x0589('0x17')](_0x37b00a)[_0x0589('0x18')]();};}function respondWithResult(_0x2ea701,_0x27300f){_0x27300f=_0x27300f||0xc8;return function(_0x3ed016){if(_0x3ed016){return _0x2ea701['status'](_0x27300f)[_0x0589('0x19')](_0x3ed016);}};}function respondWithFilteredResult(_0x4bedb5,_0xf048f2){return function(_0x5f42d5){if(_0x5f42d5){var _0x3abc9c=typeof _0xf048f2[_0x0589('0x1a')]===_0x0589('0x1b')&&typeof _0xf048f2['limit']===_0x0589('0x1b');var _0x2da04a=_0x5f42d5[_0x0589('0x1c')];var _0x484c32=_0x3abc9c?0x0:_0xf048f2[_0x0589('0x1a')];var _0x2ef548=_0x3abc9c?_0x5f42d5[_0x0589('0x1c')]:_0xf048f2[_0x0589('0x1a')]+_0xf048f2[_0x0589('0x1d')];var _0x28debe;if(_0x2ef548>=_0x2da04a){_0x2ef548=_0x2da04a;_0x28debe=0xc8;}else{_0x28debe=0xce;}_0x4bedb5[_0x0589('0x17')](_0x28debe);return _0x4bedb5['set'](_0x0589('0x1e'),_0x484c32+'-'+_0x2ef548+'/'+_0x2da04a)[_0x0589('0x19')](_0x5f42d5);}return null;};}function patchUpdates(_0x15d1be){return function(_0x3d38f4){try{jsonpatch[_0x0589('0x1f')](_0x3d38f4,_0x15d1be,!![]);}catch(_0x13a2d8){return BPromise[_0x0589('0x20')](_0x13a2d8);}return _0x3d38f4[_0x0589('0x21')]();};}function saveUpdates(_0x13b89c,_0x54155d){return function(_0x397876){if(_0x397876){return _0x397876[_0x0589('0x22')](_0x13b89c)['then'](function(_0x4dc64f){return _0x4dc64f;});}return null;};}function removeEntity(_0x4befda,_0x55d3ac){return function(_0x23f5bb){if(_0x23f5bb){return _0x23f5bb['destroy']()[_0x0589('0x23')](function(){_0x4befda[_0x0589('0x17')](0xcc)[_0x0589('0x18')]();});}};}function handleEntityNotFound(_0x30efa9,_0x480293){return function(_0x4d4d3c){if(!_0x4d4d3c){_0x30efa9[_0x0589('0x16')](0x194);}return _0x4d4d3c;};}function handleError(_0x4b3c89,_0x2d95a0){_0x2d95a0=_0x2d95a0||0x1f4;return function(_0x5a46d5){logger[_0x0589('0x24')](_0x5a46d5[_0x0589('0x25')]);if(_0x5a46d5['name']){delete _0x5a46d5[_0x0589('0x26')];}_0x4b3c89[_0x0589('0x17')](_0x2d95a0)['send'](_0x5a46d5);};}exports[_0x0589('0x27')]=function(_0x4fb303,_0x53a1be){var _0x29d1ff={},_0x3a6df6={},_0x535a81={'count':0x0,'rows':[]};var _0x5e0ab2=_['map'](db['SugarcrmField'][_0x0589('0x28')],function(_0x3f9174){return{'name':_0x3f9174[_0x0589('0x29')],'type':_0x3f9174['type'][_0x0589('0x2a')]};});_0x3a6df6[_0x0589('0x2b')]=_[_0x0589('0x2c')](_0x5e0ab2,_0x0589('0x26'));_0x3a6df6['query']=_[_0x0589('0x2d')](_0x4fb303[_0x0589('0x2e')]);_0x3a6df6['filters']=_[_0x0589('0x2f')](_0x3a6df6[_0x0589('0x2b')],_0x3a6df6[_0x0589('0x2e')]);_0x29d1ff[_0x0589('0x30')]=_[_0x0589('0x2f')](_0x3a6df6[_0x0589('0x2b')],qs[_0x0589('0x31')](_0x4fb303['query']['fields']));_0x29d1ff['attributes']=_0x29d1ff[_0x0589('0x30')]['length']?_0x29d1ff[_0x0589('0x30')]:_0x3a6df6[_0x0589('0x2b')];if(!_0x4fb303[_0x0589('0x2e')][_0x0589('0x32')]('nolimit')){_0x29d1ff[_0x0589('0x1d')]=qs[_0x0589('0x1d')](_0x4fb303[_0x0589('0x2e')][_0x0589('0x1d')]);_0x29d1ff[_0x0589('0x1a')]=qs[_0x0589('0x1a')](_0x4fb303[_0x0589('0x2e')][_0x0589('0x1a')]);}_0x29d1ff['order']=qs[_0x0589('0x33')](_0x4fb303['query'][_0x0589('0x33')]);_0x29d1ff[_0x0589('0x34')]=qs[_0x0589('0x35')](_['pick'](_0x4fb303[_0x0589('0x2e')],_0x3a6df6['filters']),_0x5e0ab2);if(_0x4fb303[_0x0589('0x2e')][_0x0589('0x36')]){_0x29d1ff[_0x0589('0x34')]=_[_0x0589('0x37')](_0x29d1ff[_0x0589('0x34')],{'$or':_[_0x0589('0x2c')](_0x5e0ab2,function(_0x3059e3){if(_0x3059e3['type']!==_0x0589('0x38')){var _0x32da09={};_0x32da09[_0x3059e3[_0x0589('0x26')]]={'$like':'%'+_0x4fb303[_0x0589('0x2e')][_0x0589('0x36')]+'%'};return _0x32da09;}})});}_0x29d1ff=_['merge']({},_0x29d1ff,_0x4fb303[_0x0589('0x39')]);var _0x27af2e={'where':_0x29d1ff[_0x0589('0x34')]};return db[_0x0589('0x3a')]['count'](_0x27af2e)[_0x0589('0x23')](function(_0x3bdee7){_0x535a81[_0x0589('0x1c')]=_0x3bdee7;if(_0x4fb303[_0x0589('0x2e')][_0x0589('0x3b')]){_0x29d1ff[_0x0589('0x3c')]=[{'all':!![]}];}return db[_0x0589('0x3a')][_0x0589('0x3d')](_0x29d1ff);})[_0x0589('0x23')](function(_0x31ce4a){_0x535a81['rows']=_0x31ce4a;return _0x535a81;})[_0x0589('0x23')](respondWithFilteredResult(_0x53a1be,_0x29d1ff))['catch'](handleError(_0x53a1be,null));};exports[_0x0589('0x3e')]=function(_0x2fc80b,_0x28d158){var _0x33a6d7={'raw':!![],'where':{'id':_0x2fc80b[_0x0589('0x3f')]['id']}},_0x3f5a4e={};_0x3f5a4e['model']=_[_0x0589('0x2d')](db['SugarcrmField'][_0x0589('0x28')]);_0x3f5a4e[_0x0589('0x2e')]=_[_0x0589('0x2d')](_0x2fc80b[_0x0589('0x2e')]);_0x3f5a4e[_0x0589('0x35')]=_[_0x0589('0x2f')](_0x3f5a4e[_0x0589('0x2b')],_0x3f5a4e[_0x0589('0x2e')]);_0x33a6d7['attributes']=_[_0x0589('0x2f')](_0x3f5a4e[_0x0589('0x2b')],qs['fields'](_0x2fc80b[_0x0589('0x2e')][_0x0589('0x31')]));_0x33a6d7[_0x0589('0x30')]=_0x33a6d7['attributes'][_0x0589('0x40')]?_0x33a6d7[_0x0589('0x30')]:_0x3f5a4e[_0x0589('0x2b')];if(_0x2fc80b[_0x0589('0x2e')][_0x0589('0x3b')]){_0x33a6d7['include']=[{'all':!![]}];}_0x33a6d7=_[_0x0589('0x37')]({},_0x33a6d7,_0x2fc80b[_0x0589('0x39')]);return db[_0x0589('0x3a')][_0x0589('0x41')](_0x33a6d7)['then'](handleEntityNotFound(_0x28d158,null))['then'](respondWithResult(_0x28d158,null))[_0x0589('0x42')](handleError(_0x28d158,null));};exports[_0x0589('0x43')]=function(_0x5ee162,_0x494c15){return db[_0x0589('0x3a')][_0x0589('0x43')](_0x5ee162[_0x0589('0x44')],{})[_0x0589('0x23')](respondWithResult(_0x494c15,0xc9))[_0x0589('0x42')](handleError(_0x494c15,null));};exports[_0x0589('0x22')]=function(_0x4ae2ec,_0x2feb98){if(_0x4ae2ec['body']['id']){delete _0x4ae2ec[_0x0589('0x44')]['id'];}return db['SugarcrmField'][_0x0589('0x41')]({'where':{'id':_0x4ae2ec['params']['id']}})[_0x0589('0x23')](handleEntityNotFound(_0x2feb98,null))['then'](saveUpdates(_0x4ae2ec[_0x0589('0x44')],null))[_0x0589('0x23')](respondWithResult(_0x2feb98,null))[_0x0589('0x42')](handleError(_0x2feb98,null));};exports[_0x0589('0x45')]=function(_0x453636,_0x23ef76){return db[_0x0589('0x3a')][_0x0589('0x41')]({'where':{'id':_0x453636[_0x0589('0x3f')]['id']}})[_0x0589('0x23')](handleEntityNotFound(_0x23ef76,null))[_0x0589('0x23')](removeEntity(_0x23ef76,null))[_0x0589('0x42')](handleError(_0x23ef76,null));};
\ No newline at end of file
+var _0xbe77=['undefined','count','set','apply','reject','save','update','destroy','then','end','error','stack','name','send','rawAttributes','key','model','map','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','type','VIRTUAL','filter','merge','options','SugarcrmField','include','findAll','rows','catch','show','params','keys','intersection','includeAll','find','create','body','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit'];(function(_0x158b54,_0xc7a51b){var _0x5d0e54=function(_0x10dcfd){while(--_0x10dcfd){_0x158b54['push'](_0x158b54['shift']());}};_0x5d0e54(++_0xc7a51b);}(_0xbe77,0x192));var _0x7be7=function(_0x2a70f4,_0x440e7f){_0x2a70f4=_0x2a70f4-0x0;var _0x479442=_0xbe77[_0x2a70f4];return _0x479442;};'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(_0x7be7('0x0'));var BPromise=require(_0x7be7('0x1'));var Mustache=require('mustache');var util=require(_0x7be7('0x2'));var path=require(_0x7be7('0x3'));var sox=require(_0x7be7('0x4'));var csv=require(_0x7be7('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7be7('0x6'));var _=require(_0x7be7('0x7'));var squel=require(_0x7be7('0x8'));var crypto=require('crypto');var jsforce=require(_0x7be7('0x9'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x7be7('0xa'));var Redis=require(_0x7be7('0xb'));var authService=require(_0x7be7('0xc'));var qs=require(_0x7be7('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x7be7('0xe'))(_0x7be7('0xf'));var utils=require('../../config/utils');var config=require(_0x7be7('0x10'));var licenseUtil=require(_0x7be7('0x11'));var db=require(_0x7be7('0x12'))['db'];function respondWithStatusCode(_0x2309ac,_0x4a326d){_0x4a326d=_0x4a326d||0xcc;return function(_0x692ca6){if(_0x692ca6){return _0x2309ac[_0x7be7('0x13')](_0x4a326d);}return _0x2309ac['status'](_0x4a326d)['end']();};}function respondWithResult(_0x4ff2f8,_0x4e0758){_0x4e0758=_0x4e0758||0xc8;return function(_0x19ccc9){if(_0x19ccc9){return _0x4ff2f8[_0x7be7('0x14')](_0x4e0758)[_0x7be7('0x15')](_0x19ccc9);}};}function respondWithFilteredResult(_0x4021e1,_0x55b9a4){return function(_0x7e2763){if(_0x7e2763){var _0x4dd674=typeof _0x55b9a4[_0x7be7('0x16')]==='undefined'&&typeof _0x55b9a4[_0x7be7('0x17')]===_0x7be7('0x18');var _0x404690=_0x7e2763['count'];var _0x97aa1d=_0x4dd674?0x0:_0x55b9a4[_0x7be7('0x16')];var _0xc9b4d8=_0x4dd674?_0x7e2763[_0x7be7('0x19')]:_0x55b9a4[_0x7be7('0x16')]+_0x55b9a4[_0x7be7('0x17')];var _0x540157;if(_0xc9b4d8>=_0x404690){_0xc9b4d8=_0x404690;_0x540157=0xc8;}else{_0x540157=0xce;}_0x4021e1['status'](_0x540157);return _0x4021e1[_0x7be7('0x1a')]('Content-Range',_0x97aa1d+'-'+_0xc9b4d8+'/'+_0x404690)['json'](_0x7e2763);}return null;};}function patchUpdates(_0x1abfbf){return function(_0x51ce38){try{jsonpatch[_0x7be7('0x1b')](_0x51ce38,_0x1abfbf,!![]);}catch(_0xced22b){return BPromise[_0x7be7('0x1c')](_0xced22b);}return _0x51ce38[_0x7be7('0x1d')]();};}function saveUpdates(_0x47a9d2,_0x444807){return function(_0x478ee1){if(_0x478ee1){return _0x478ee1[_0x7be7('0x1e')](_0x47a9d2)['then'](function(_0x4d7e94){return _0x4d7e94;});}return null;};}function removeEntity(_0x1611fa,_0x5dca7d){return function(_0x49577e){if(_0x49577e){return _0x49577e[_0x7be7('0x1f')]()[_0x7be7('0x20')](function(){_0x1611fa['status'](0xcc)[_0x7be7('0x21')]();});}};}function handleEntityNotFound(_0x26c3e1,_0x1ff9f6){return function(_0x3fe60a){if(!_0x3fe60a){_0x26c3e1[_0x7be7('0x13')](0x194);}return _0x3fe60a;};}function handleError(_0xa38198,_0x2a7b35){_0x2a7b35=_0x2a7b35||0x1f4;return function(_0x23ec67){logger[_0x7be7('0x22')](_0x23ec67[_0x7be7('0x23')]);if(_0x23ec67[_0x7be7('0x24')]){delete _0x23ec67['name'];}_0xa38198['status'](_0x2a7b35)[_0x7be7('0x25')](_0x23ec67);};}exports['index']=function(_0xb73cc,_0x5a33ea){var _0x16a399={},_0x11425f={},_0x38979a={'count':0x0,'rows':[]};var _0x515845=_['map'](db['SugarcrmField'][_0x7be7('0x26')],function(_0x596fa5){return{'name':_0x596fa5['fieldName'],'type':_0x596fa5['type'][_0x7be7('0x27')]};});_0x11425f[_0x7be7('0x28')]=_[_0x7be7('0x29')](_0x515845,_0x7be7('0x24'));_0x11425f[_0x7be7('0x2a')]=_['keys'](_0xb73cc[_0x7be7('0x2a')]);_0x11425f[_0x7be7('0x2b')]=_['intersection'](_0x11425f[_0x7be7('0x28')],_0x11425f['query']);_0x16a399[_0x7be7('0x2c')]=_['intersection'](_0x11425f['model'],qs[_0x7be7('0x2d')](_0xb73cc[_0x7be7('0x2a')][_0x7be7('0x2d')]));_0x16a399[_0x7be7('0x2c')]=_0x16a399['attributes'][_0x7be7('0x2e')]?_0x16a399['attributes']:_0x11425f[_0x7be7('0x28')];if(!_0xb73cc[_0x7be7('0x2a')][_0x7be7('0x2f')](_0x7be7('0x30'))){_0x16a399[_0x7be7('0x17')]=qs[_0x7be7('0x17')](_0xb73cc[_0x7be7('0x2a')][_0x7be7('0x17')]);_0x16a399[_0x7be7('0x16')]=qs[_0x7be7('0x16')](_0xb73cc['query'][_0x7be7('0x16')]);}_0x16a399[_0x7be7('0x31')]=qs[_0x7be7('0x32')](_0xb73cc['query']['sort']);_0x16a399[_0x7be7('0x33')]=qs[_0x7be7('0x2b')](_[_0x7be7('0x34')](_0xb73cc[_0x7be7('0x2a')],_0x11425f[_0x7be7('0x2b')]),_0x515845);if(_0xb73cc['query']['filter']){_0x16a399[_0x7be7('0x33')]=_['merge'](_0x16a399[_0x7be7('0x33')],{'$or':_['map'](_0x515845,function(_0x4444cf){if(_0x4444cf[_0x7be7('0x35')]!==_0x7be7('0x36')){var _0x3cc3d7={};_0x3cc3d7[_0x4444cf[_0x7be7('0x24')]]={'$like':'%'+_0xb73cc[_0x7be7('0x2a')][_0x7be7('0x37')]+'%'};return _0x3cc3d7;}})});}_0x16a399=_[_0x7be7('0x38')]({},_0x16a399,_0xb73cc[_0x7be7('0x39')]);var _0x26da0b={'where':_0x16a399[_0x7be7('0x33')]};return db[_0x7be7('0x3a')][_0x7be7('0x19')](_0x26da0b)[_0x7be7('0x20')](function(_0x2c3c53){_0x38979a[_0x7be7('0x19')]=_0x2c3c53;if(_0xb73cc['query']['includeAll']){_0x16a399[_0x7be7('0x3b')]=[{'all':!![]}];}return db[_0x7be7('0x3a')][_0x7be7('0x3c')](_0x16a399);})[_0x7be7('0x20')](function(_0x30d41a){_0x38979a[_0x7be7('0x3d')]=_0x30d41a;return _0x38979a;})[_0x7be7('0x20')](respondWithFilteredResult(_0x5a33ea,_0x16a399))[_0x7be7('0x3e')](handleError(_0x5a33ea,null));};exports[_0x7be7('0x3f')]=function(_0x4f58e2,_0x61a0d7){var _0x3a2fee={'raw':!![],'where':{'id':_0x4f58e2[_0x7be7('0x40')]['id']}},_0x204c66={};_0x204c66['model']=_[_0x7be7('0x41')](db[_0x7be7('0x3a')]['rawAttributes']);_0x204c66[_0x7be7('0x2a')]=_[_0x7be7('0x41')](_0x4f58e2[_0x7be7('0x2a')]);_0x204c66[_0x7be7('0x2b')]=_[_0x7be7('0x42')](_0x204c66['model'],_0x204c66[_0x7be7('0x2a')]);_0x3a2fee[_0x7be7('0x2c')]=_['intersection'](_0x204c66['model'],qs[_0x7be7('0x2d')](_0x4f58e2[_0x7be7('0x2a')][_0x7be7('0x2d')]));_0x3a2fee[_0x7be7('0x2c')]=_0x3a2fee[_0x7be7('0x2c')]['length']?_0x3a2fee[_0x7be7('0x2c')]:_0x204c66['model'];if(_0x4f58e2['query'][_0x7be7('0x43')]){_0x3a2fee[_0x7be7('0x3b')]=[{'all':!![]}];}_0x3a2fee=_[_0x7be7('0x38')]({},_0x3a2fee,_0x4f58e2['options']);return db[_0x7be7('0x3a')][_0x7be7('0x44')](_0x3a2fee)['then'](handleEntityNotFound(_0x61a0d7,null))['then'](respondWithResult(_0x61a0d7,null))['catch'](handleError(_0x61a0d7,null));};exports[_0x7be7('0x45')]=function(_0x54ca9c,_0x4f6cfa){return db['SugarcrmField'][_0x7be7('0x45')](_0x54ca9c[_0x7be7('0x46')],{})[_0x7be7('0x20')](respondWithResult(_0x4f6cfa,0xc9))['catch'](handleError(_0x4f6cfa,null));};exports[_0x7be7('0x1e')]=function(_0x17b7fe,_0x9b01f){if(_0x17b7fe['body']['id']){delete _0x17b7fe[_0x7be7('0x46')]['id'];}return db[_0x7be7('0x3a')][_0x7be7('0x44')]({'where':{'id':_0x17b7fe['params']['id']}})[_0x7be7('0x20')](handleEntityNotFound(_0x9b01f,null))['then'](saveUpdates(_0x17b7fe[_0x7be7('0x46')],null))[_0x7be7('0x20')](respondWithResult(_0x9b01f,null))[_0x7be7('0x3e')](handleError(_0x9b01f,null));};exports['destroy']=function(_0x348542,_0x341054){return db[_0x7be7('0x3a')][_0x7be7('0x44')]({'where':{'id':_0x348542['params']['id']}})[_0x7be7('0x20')](handleEntityNotFound(_0x341054,null))[_0x7be7('0x20')](removeEntity(_0x341054,null))[_0x7be7('0x3e')](handleError(_0x341054,null));};
\ No newline at end of file
index 4439b20..1316136 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1e7=['rimraf','../../config/environment','./intSugarcrmField.attributes','exports','define','int_sugarcrm_fields','sugarcrm_unique_index','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x15f96c,_0x5b7c90){var _0x2b7ef6=function(_0x38b632){while(--_0x38b632){_0x15f96c['push'](_0x15f96c['shift']());}};_0x2b7ef6(++_0x5b7c90);}(_0xf1e7,0xd9));var _0x7f1e=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0xf1e7[_0x1cc8fe];return _0x230054;};'use strict';var _=require(_0x7f1e('0x0'));var util=require(_0x7f1e('0x1'));var logger=require(_0x7f1e('0x2'))(_0x7f1e('0x3'));var moment=require(_0x7f1e('0x4'));var BPromise=require('bluebird');var rp=require(_0x7f1e('0x5'));var fs=require('fs');var path=require(_0x7f1e('0x6'));var rimraf=require(_0x7f1e('0x7'));var config=require(_0x7f1e('0x8'));var attributes=require(_0x7f1e('0x9'));module[_0x7f1e('0xa')]=function(_0x1314a1,_0x317196){return _0x1314a1[_0x7f1e('0xb')]('SugarcrmField',attributes,{'tableName':_0x7f1e('0xc'),'paranoid':![],'indexes':[{'name':_0x7f1e('0xd'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc7ff=['idField','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','define','int_sugarcrm_fields','sugarcrm_unique_index'];(function(_0x3b40ac,_0x43e467){var _0x31adeb=function(_0x1efeca){while(--_0x1efeca){_0x3b40ac['push'](_0x3b40ac['shift']());}};_0x31adeb(++_0x43e467);}(_0xc7ff,0xd1));var _0xfc7f=function(_0xb77dd4,_0x371dd8){_0xb77dd4=_0xb77dd4-0x0;var _0x29db3c=_0xc7ff[_0xb77dd4];return _0x29db3c;};'use strict';var _=require(_0xfc7f('0x0'));var util=require(_0xfc7f('0x1'));var logger=require(_0xfc7f('0x2'))(_0xfc7f('0x3'));var moment=require(_0xfc7f('0x4'));var BPromise=require(_0xfc7f('0x5'));var rp=require(_0xfc7f('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xfc7f('0x7'));var config=require(_0xfc7f('0x8'));var attributes=require('./intSugarcrmField.attributes');module['exports']=function(_0x2f98ab,_0x4c1071){return _0x2f98ab[_0xfc7f('0x9')]('SugarcrmField',attributes,{'tableName':_0xfc7f('0xa'),'paranoid':![],'indexes':[{'name':_0xfc7f('0xb'),'fields':[_0xfc7f('0xc'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 7f40af5..74ffeb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4584=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis'];(function(_0x1c45f7,_0xd6232c){var _0x16a026=function(_0x5cd5f2){while(--_0x5cd5f2){_0x1c45f7['push'](_0x1c45f7['shift']());}};_0x16a026(++_0xd6232c);}(_0x4584,0x1b5));var _0x4458=function(_0x53dc24,_0x332760){_0x53dc24=_0x53dc24-0x0;var _0x57dae9=_0x4584[_0x53dc24];return _0x57dae9;};'use strict';var _=require(_0x4458('0x0'));var util=require(_0x4458('0x1'));var moment=require(_0x4458('0x2'));var BPromise=require(_0x4458('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4458('0x4'));var db=require(_0x4458('0x5'))['db'];var utils=require(_0x4458('0x6'));var logger=require(_0x4458('0x7'))(_0x4458('0x8'));var config=require(_0x4458('0x9'));var jayson=require(_0x4458('0xa'));var client=jayson[_0x4458('0xb')][_0x4458('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x50b386,_0x3dfb20,_0x1f693a){return new BPromise(function(_0x53e9f7,_0x4ef7f7){return client[_0x4458('0xd')](_0x50b386,_0x1f693a)[_0x4458('0xe')](function(_0x5b9722){logger[_0x4458('0xf')](_0x4458('0x10'),_0x3dfb20,_0x4458('0x11'));logger[_0x4458('0x12')](_0x4458('0x13'),_0x3dfb20,'request\x20sent',JSON[_0x4458('0x14')](_0x5b9722));if(_0x5b9722[_0x4458('0x15')]){if(_0x5b9722[_0x4458('0x15')][_0x4458('0x16')]===0x1f4){logger['error']('SugarcrmField,\x20%s,\x20%s',_0x3dfb20,_0x5b9722[_0x4458('0x15')]['message']);return _0x4ef7f7(_0x5b9722[_0x4458('0x15')][_0x4458('0x17')]);}logger[_0x4458('0x15')](_0x4458('0x10'),_0x3dfb20,_0x5b9722[_0x4458('0x15')][_0x4458('0x17')]);return _0x53e9f7(_0x5b9722[_0x4458('0x15')]['message']);}else{logger['info'](_0x4458('0x10'),_0x3dfb20,_0x4458('0x11'));_0x53e9f7(_0x5b9722[_0x4458('0x18')][_0x4458('0x17')]);}})[_0x4458('0x19')](function(_0x3eb1f7){logger[_0x4458('0x15')](_0x4458('0x10'),_0x3dfb20,_0x3eb1f7);_0x4ef7f7(_0x3eb1f7);});});}
\ No newline at end of file
+var _0x3585=['SugarcrmField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','client','info','request\x20sent','debug','stringify','error','code'];(function(_0x4fbfd9,_0x3ab91a){var _0x31dc94=function(_0x11e53b){while(--_0x11e53b){_0x4fbfd9['push'](_0x4fbfd9['shift']());}};_0x31dc94(++_0x3ab91a);}(_0x3585,0x193));var _0x5358=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3585[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x5358('0x0'));var util=require(_0x5358('0x1'));var moment=require(_0x5358('0x2'));var BPromise=require(_0x5358('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5358('0x4'));var db=require(_0x5358('0x5'))['db'];var utils=require(_0x5358('0x6'));var logger=require('../../config/logger')(_0x5358('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5358('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5a0470,_0x30c946,_0x33f9f2){return new BPromise(function(_0x131f91,_0x2aa30e){return client['request'](_0x5a0470,_0x33f9f2)['then'](function(_0x5789f8){logger[_0x5358('0x9')]('SugarcrmField,\x20%s,\x20%s',_0x30c946,_0x5358('0xa'));logger[_0x5358('0xb')]('SugarcrmField,\x20%s,\x20%s,\x20%s',_0x30c946,'request\x20sent',JSON[_0x5358('0xc')](_0x5789f8));if(_0x5789f8[_0x5358('0xd')]){if(_0x5789f8[_0x5358('0xd')][_0x5358('0xe')]===0x1f4){logger[_0x5358('0xd')](_0x5358('0xf'),_0x30c946,_0x5789f8[_0x5358('0xd')][_0x5358('0x10')]);return _0x2aa30e(_0x5789f8[_0x5358('0xd')][_0x5358('0x10')]);}logger[_0x5358('0xd')]('SugarcrmField,\x20%s,\x20%s',_0x30c946,_0x5789f8['error'][_0x5358('0x10')]);return _0x131f91(_0x5789f8[_0x5358('0xd')][_0x5358('0x10')]);}else{logger[_0x5358('0x9')](_0x5358('0xf'),_0x30c946,'request\x20sent');_0x131f91(_0x5789f8[_0x5358('0x11')][_0x5358('0x10')]);}})[_0x5358('0x12')](function(_0xc4799f){logger[_0x5358('0xd')](_0x5358('0xf'),_0x30c946,_0xc4799f);_0x2aa30e(_0xc4799f);});});}
\ No newline at end of file
index adca7a0..c97af62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f88=['exports','multer','util','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','get','isAuthenticated','index','/:id','/:id/configurations','getConfigurations','/:id/fields','getFields','post','addConfiguration','put','update','delete'];(function(_0x5c98ea,_0xa782aa){var _0x51e853=function(_0x57d5b0){while(--_0x57d5b0){_0x5c98ea['push'](_0x5c98ea['shift']());}};_0x51e853(++_0xa782aa);}(_0x4f88,0xf3));var _0x84f8=function(_0x12d812,_0x496bb7){_0x12d812=_0x12d812-0x0;var _0x3711ab=_0x4f88[_0x12d812];return _0x3711ab;};'use strict';var multer=require(_0x84f8('0x0'));var util=require(_0x84f8('0x1'));var path=require('path');var timeout=require(_0x84f8('0x2'));var express=require(_0x84f8('0x3'));var router=express[_0x84f8('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x84f8('0x5'));var config=require(_0x84f8('0x6'));var controller=require(_0x84f8('0x7'));router[_0x84f8('0x8')]('/',auth[_0x84f8('0x9')](),controller[_0x84f8('0xa')]);router['get'](_0x84f8('0xb'),auth[_0x84f8('0x9')](),controller['show']);router['get'](_0x84f8('0xc'),auth[_0x84f8('0x9')](),controller[_0x84f8('0xd')]);router[_0x84f8('0x8')](_0x84f8('0xe'),auth[_0x84f8('0x9')](),controller[_0x84f8('0xf')]);router[_0x84f8('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0x84f8('0x10')](_0x84f8('0xc'),auth[_0x84f8('0x9')](),controller[_0x84f8('0x11')]);router[_0x84f8('0x12')]('/:id',auth[_0x84f8('0x9')](),controller[_0x84f8('0x13')]);router[_0x84f8('0x14')](_0x84f8('0xb'),auth[_0x84f8('0x9')](),controller['destroy']);module[_0x84f8('0x15')]=router;
\ No newline at end of file
+var _0x8128=['isAuthenticated','index','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','/:id','update','destroy','multer','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x3aaf0a,_0x450970){var _0x33e6bc=function(_0x1db54d){while(--_0x1db54d){_0x3aaf0a['push'](_0x3aaf0a['shift']());}};_0x33e6bc(++_0x450970);}(_0x8128,0x1b1));var _0x8812=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0x8128[_0x17b6e3];return _0x3906f3;};'use strict';var multer=require(_0x8812('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x8812('0x1'));var express=require(_0x8812('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x8812('0x3'));var interaction=require(_0x8812('0x4'));var config=require(_0x8812('0x5'));var controller=require('./intVtigerAccount.controller');router[_0x8812('0x6')]('/',auth[_0x8812('0x7')](),controller[_0x8812('0x8')]);router[_0x8812('0x6')]('/:id',auth[_0x8812('0x7')](),controller[_0x8812('0x9')]);router['get']('/:id/configurations',auth['isAuthenticated'](),controller[_0x8812('0xa')]);router[_0x8812('0x6')](_0x8812('0xb'),auth[_0x8812('0x7')](),controller[_0x8812('0xc')]);router[_0x8812('0xd')]('/',auth[_0x8812('0x7')](),controller[_0x8812('0xe')]);router[_0x8812('0xd')]('/:id/configurations',auth[_0x8812('0x7')](),controller[_0x8812('0xf')]);router[_0x8812('0x10')](_0x8812('0x11'),auth[_0x8812('0x7')](),controller[_0x8812('0x12')]);router['delete'](_0x8812('0x11'),auth[_0x8812('0x7')](),controller[_0x8812('0x13')]);module['exports']=router;
\ No newline at end of file
index 8ad7735..e7edb63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3d9=['STRING','HelpDesk','sequelize'];(function(_0x1e618a,_0x334183){var _0x419ef6=function(_0x446db4){while(--_0x446db4){_0x1e618a['push'](_0x1e618a['shift']());}};_0x419ef6(++_0x334183);}(_0xe3d9,0x18e));var _0x9e3d=function(_0x307eb3,_0x534e5d){_0x307eb3=_0x307eb3-0x0;var _0x5b02c0=_0xe3d9[_0x307eb3];return _0x5b02c0;};'use strict';var Sequelize=require(_0x9e3d('0x0'));module['exports']={'name':{'type':Sequelize[_0x9e3d('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x9e3d('0x1')]},'username':{'type':Sequelize[_0x9e3d('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x9e3d('0x2')},'remoteUri':{'type':Sequelize[_0x9e3d('0x1')],'allowNull':![]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'accessKey':{'type':Sequelize[_0x9e3d('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xfe52=['STRING','HelpDesk','exports'];(function(_0x390a62,_0x410ce3){var _0x320c67=function(_0x4382e9){while(--_0x4382e9){_0x390a62['push'](_0x390a62['shift']());}};_0x320c67(++_0x410ce3);}(_0xfe52,0x122));var _0x2fe5=function(_0x12a84f,_0x200604){_0x12a84f=_0x12a84f-0x0;var _0x1fc582=_0xfe52[_0x12a84f];return _0x1fc582;};'use strict';var Sequelize=require('sequelize');module[_0x2fe5('0x0')]={'name':{'type':Sequelize[_0x2fe5('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x2fe5('0x1')]},'username':{'type':Sequelize[_0x2fe5('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x2fe5('0x2')},'remoteUri':{'type':Sequelize[_0x2fe5('0x1')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x2fe5('0x1')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x2fe5('0x1')],'allowNull':![]}};
\ No newline at end of file
index 8eb6673..140d255 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4187=['where','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','length','find','create','body','getConfigurations','findOne','sort','pick','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','VtigerField','getFields','username','moduleName','remoteUri','accessKey','lastIndexOf','%s/webservice.php','GET','getchallenge','success','POST','token','result','sessionName','reference','owner','includes','remove','editable','startsWith','cf_','picklistValues','label','value','log','vTiger\x20error:\x20','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','send','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','to-csv','../../components/auth/service','../../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','json','apply','reject','save','update','then','destroy','error','stack','name','map','VtigerAccount','fieldName','type','key','keys','query','filters','attributes','intersection','model','fields','hasOwnProperty','nolimit','order'];(function(_0x3455c0,_0x363b27){var _0x206ab4=function(_0x2cc95f){while(--_0x2cc95f){_0x3455c0['push'](_0x3455c0['shift']());}};_0x206ab4(++_0x363b27);}(_0x4187,0x121));var _0x7418=function(_0x55070a,_0x4ee426){_0x55070a=_0x55070a-0x0;var _0x3c9b7d=_0x4187[_0x55070a];return _0x3c9b7d;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x7418('0x0'));var jsonpatch=require(_0x7418('0x1'));var rp=require(_0x7418('0x2'));var moment=require(_0x7418('0x3'));var BPromise=require(_0x7418('0x4'));var Mustache=require(_0x7418('0x5'));var util=require(_0x7418('0x6'));var path=require('path');var sox=require(_0x7418('0x7'));var csv=require('to-csv');var ejs=require(_0x7418('0x8'));var fs=require('fs');var fs_extra=require(_0x7418('0x9'));var _=require(_0x7418('0xa'));var squel=require(_0x7418('0xb'));var crypto=require('crypto');var jsforce=require(_0x7418('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x7418('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x7418('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x7418('0xf'));var hardwareService=require(_0x7418('0x10'));var logger=require(_0x7418('0x11'))(_0x7418('0x12'));var utils=require(_0x7418('0x13'));var config=require(_0x7418('0x14'));var licenseUtil=require(_0x7418('0x15'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x7cb2e5,_0x4174ff){_0x4174ff=_0x4174ff||0xcc;return function(_0x23173b){if(_0x23173b){return _0x7cb2e5[_0x7418('0x16')](_0x4174ff);}return _0x7cb2e5[_0x7418('0x17')](_0x4174ff)[_0x7418('0x18')]();};}function respondWithResult(_0x51229b,_0x44e81d){_0x44e81d=_0x44e81d||0xc8;return function(_0x54342d){if(_0x54342d){return _0x51229b[_0x7418('0x17')](_0x44e81d)['json'](_0x54342d);}};}function respondWithFilteredResult(_0x3a7504,_0x6b56d7){return function(_0x80e248){if(_0x80e248){var _0x23c769=typeof _0x6b56d7[_0x7418('0x19')]===_0x7418('0x1a')&&typeof _0x6b56d7[_0x7418('0x1b')]===_0x7418('0x1a');var _0x354aba=_0x80e248[_0x7418('0x1c')];var _0x42e940=_0x23c769?0x0:_0x6b56d7[_0x7418('0x19')];var _0x460f1e=_0x23c769?_0x80e248[_0x7418('0x1c')]:_0x6b56d7[_0x7418('0x19')]+_0x6b56d7[_0x7418('0x1b')];var _0x23c01a;if(_0x460f1e>=_0x354aba){_0x460f1e=_0x354aba;_0x23c01a=0xc8;}else{_0x23c01a=0xce;}_0x3a7504['status'](_0x23c01a);return _0x3a7504[_0x7418('0x1d')](_0x7418('0x1e'),_0x42e940+'-'+_0x460f1e+'/'+_0x354aba)[_0x7418('0x1f')](_0x80e248);}return null;};}function patchUpdates(_0x2da215){return function(_0x19b406){try{jsonpatch[_0x7418('0x20')](_0x19b406,_0x2da215,!![]);}catch(_0x56271b){return BPromise[_0x7418('0x21')](_0x56271b);}return _0x19b406[_0x7418('0x22')]();};}function saveUpdates(_0x19aa5,_0x45cdd1){return function(_0x2b5fc3){if(_0x2b5fc3){return _0x2b5fc3[_0x7418('0x23')](_0x19aa5)[_0x7418('0x24')](function(_0x4fed65){return _0x4fed65;});}return null;};}function removeEntity(_0x463e55,_0x578eb4){return function(_0x3fed76){if(_0x3fed76){return _0x3fed76[_0x7418('0x25')]()[_0x7418('0x24')](function(){_0x463e55[_0x7418('0x17')](0xcc)[_0x7418('0x18')]();});}};}function handleEntityNotFound(_0x2282f1,_0x496094){return function(_0x3ee220){if(!_0x3ee220){_0x2282f1[_0x7418('0x16')](0x194);}return _0x3ee220;};}function handleError(_0x456ca4,_0xc8c00d){_0xc8c00d=_0xc8c00d||0x1f4;return function(_0xca2bc1){logger[_0x7418('0x26')](_0xca2bc1[_0x7418('0x27')]);if(_0xca2bc1[_0x7418('0x28')]){delete _0xca2bc1[_0x7418('0x28')];}_0x456ca4[_0x7418('0x17')](_0xc8c00d)['send'](_0xca2bc1);};}exports['index']=function(_0x216c75,_0x55d6d8){var _0x287d88={},_0x3a0dc7={},_0xe0dbed={'count':0x0,'rows':[]};var _0x44b760=_[_0x7418('0x29')](db[_0x7418('0x2a')]['rawAttributes'],function(_0x423efb){return{'name':_0x423efb[_0x7418('0x2b')],'type':_0x423efb[_0x7418('0x2c')][_0x7418('0x2d')]};});_0x3a0dc7['model']=_[_0x7418('0x29')](_0x44b760,_0x7418('0x28'));_0x3a0dc7['query']=_[_0x7418('0x2e')](_0x216c75[_0x7418('0x2f')]);_0x3a0dc7[_0x7418('0x30')]=_['intersection'](_0x3a0dc7['model'],_0x3a0dc7[_0x7418('0x2f')]);_0x287d88[_0x7418('0x31')]=_[_0x7418('0x32')](_0x3a0dc7[_0x7418('0x33')],qs[_0x7418('0x34')](_0x216c75[_0x7418('0x2f')][_0x7418('0x34')]));_0x287d88[_0x7418('0x31')]=_0x287d88['attributes']['length']?_0x287d88[_0x7418('0x31')]:_0x3a0dc7['model'];if(!_0x216c75[_0x7418('0x2f')][_0x7418('0x35')](_0x7418('0x36'))){_0x287d88[_0x7418('0x1b')]=qs[_0x7418('0x1b')](_0x216c75['query'][_0x7418('0x1b')]);_0x287d88[_0x7418('0x19')]=qs[_0x7418('0x19')](_0x216c75['query'][_0x7418('0x19')]);}_0x287d88[_0x7418('0x37')]=qs['sort'](_0x216c75[_0x7418('0x2f')]['sort']);_0x287d88[_0x7418('0x38')]=qs[_0x7418('0x30')](_['pick'](_0x216c75['query'],_0x3a0dc7[_0x7418('0x30')]),_0x44b760);if(_0x216c75[_0x7418('0x2f')][_0x7418('0x39')]){_0x287d88[_0x7418('0x38')]=_[_0x7418('0x3a')](_0x287d88[_0x7418('0x38')],{'$or':_[_0x7418('0x29')](_0x44b760,function(_0xe6542e){if(_0xe6542e[_0x7418('0x2c')]!=='VIRTUAL'){var _0x37f3f9={};_0x37f3f9[_0xe6542e[_0x7418('0x28')]]={'$like':'%'+_0x216c75[_0x7418('0x2f')][_0x7418('0x39')]+'%'};return _0x37f3f9;}})});}_0x287d88=_[_0x7418('0x3a')]({},_0x287d88,_0x216c75[_0x7418('0x3b')]);var _0x3c9b14={'where':_0x287d88[_0x7418('0x38')]};return db[_0x7418('0x2a')][_0x7418('0x1c')](_0x3c9b14)[_0x7418('0x24')](function(_0x2b191b){_0xe0dbed[_0x7418('0x1c')]=_0x2b191b;if(_0x216c75['query'][_0x7418('0x3c')]){_0x287d88[_0x7418('0x3d')]=[{'all':!![]}];}return db[_0x7418('0x2a')][_0x7418('0x3e')](_0x287d88);})[_0x7418('0x24')](function(_0x447701){_0xe0dbed[_0x7418('0x3f')]=_0x447701;return _0xe0dbed;})[_0x7418('0x24')](respondWithFilteredResult(_0x55d6d8,_0x287d88))[_0x7418('0x40')](handleError(_0x55d6d8,null));};exports[_0x7418('0x41')]=function(_0x452fc7,_0x5ada98){var _0x26cf29={'raw':![],'where':{'id':_0x452fc7[_0x7418('0x42')]['id']}},_0x387562={};_0x387562[_0x7418('0x33')]=_['keys'](db[_0x7418('0x2a')][_0x7418('0x43')]);_0x387562[_0x7418('0x2f')]=_[_0x7418('0x2e')](_0x452fc7[_0x7418('0x2f')]);_0x387562[_0x7418('0x30')]=_[_0x7418('0x32')](_0x387562[_0x7418('0x33')],_0x387562['query']);_0x26cf29[_0x7418('0x31')]=_[_0x7418('0x32')](_0x387562[_0x7418('0x33')],qs[_0x7418('0x34')](_0x452fc7['query']['fields']));_0x26cf29[_0x7418('0x31')]=_0x26cf29[_0x7418('0x31')][_0x7418('0x44')]?_0x26cf29[_0x7418('0x31')]:_0x387562['model'];if(_0x452fc7['query']['includeAll']){_0x26cf29['include']=[{'all':!![]}];}_0x26cf29=_[_0x7418('0x3a')]({},_0x26cf29,_0x452fc7[_0x7418('0x3b')]);return db['VtigerAccount'][_0x7418('0x45')](_0x26cf29)[_0x7418('0x24')](handleEntityNotFound(_0x5ada98,null))[_0x7418('0x24')](respondWithResult(_0x5ada98,null))['catch'](handleError(_0x5ada98,null));};exports[_0x7418('0x46')]=function(_0x2b20a9,_0x4a09e6){return db[_0x7418('0x2a')]['create'](_0x2b20a9[_0x7418('0x47')],{})['then'](respondWithResult(_0x4a09e6,0xc9))[_0x7418('0x40')](handleError(_0x4a09e6,null));};exports[_0x7418('0x23')]=function(_0x23a92a,_0x2152f0){if(_0x23a92a[_0x7418('0x47')]['id']){delete _0x23a92a['body']['id'];}return db[_0x7418('0x2a')][_0x7418('0x45')]({'where':{'id':_0x23a92a[_0x7418('0x42')]['id']}})[_0x7418('0x24')](handleEntityNotFound(_0x2152f0,null))[_0x7418('0x24')](saveUpdates(_0x23a92a['body'],null))[_0x7418('0x24')](respondWithResult(_0x2152f0,null))['catch'](handleError(_0x2152f0,null));};exports['destroy']=function(_0x21f3c1,_0x57c505){return db[_0x7418('0x2a')][_0x7418('0x45')]({'where':{'id':_0x21f3c1[_0x7418('0x42')]['id']}})[_0x7418('0x24')](handleEntityNotFound(_0x57c505,null))['then'](removeEntity(_0x57c505,null))['catch'](handleError(_0x57c505,null));};exports[_0x7418('0x48')]=function(_0x12b531,_0x4be34a,_0xe18a98){var _0x3772b2={};var _0x2b9bf9={};var _0xfbdf1c;var _0x46a4e1;return db['VtigerAccount'][_0x7418('0x49')]({'where':{'id':_0x12b531[_0x7418('0x42')]['id']}})['then'](handleEntityNotFound(_0x4be34a,null))[_0x7418('0x24')](function(_0x3d714f){if(_0x3d714f){_0xfbdf1c=_0x3d714f;_0x2b9bf9[_0x7418('0x33')]=_['keys'](db['VtigerConfiguration']['rawAttributes']);_0x2b9bf9['query']=_[_0x7418('0x2e')](_0x12b531[_0x7418('0x2f')]);_0x2b9bf9[_0x7418('0x30')]=_[_0x7418('0x32')](_0x2b9bf9[_0x7418('0x33')],_0x2b9bf9[_0x7418('0x2f')]);_0x3772b2['attributes']=_[_0x7418('0x32')](_0x2b9bf9['model'],qs[_0x7418('0x34')](_0x12b531[_0x7418('0x2f')]['fields']));_0x3772b2['attributes']=_0x3772b2[_0x7418('0x31')][_0x7418('0x44')]?_0x3772b2[_0x7418('0x31')]:_0x2b9bf9[_0x7418('0x33')];_0x3772b2[_0x7418('0x37')]=qs[_0x7418('0x4a')](_0x12b531[_0x7418('0x2f')][_0x7418('0x4a')]);_0x3772b2['where']=qs[_0x7418('0x30')](_[_0x7418('0x4b')](_0x12b531[_0x7418('0x2f')],_0x2b9bf9[_0x7418('0x30')]));if(_0x12b531['query'][_0x7418('0x39')]){_0x3772b2[_0x7418('0x38')]=_['merge'](_0x3772b2[_0x7418('0x38')],{'$or':_[_0x7418('0x29')](_0x3772b2[_0x7418('0x31')],function(_0x216cf9){var _0x5e02d5={};_0x5e02d5[_0x216cf9]={'$like':'%'+_0x12b531[_0x7418('0x2f')]['filter']+'%'};return _0x5e02d5;})});}_0x3772b2=_[_0x7418('0x3a')]({},_0x3772b2,_0x12b531[_0x7418('0x3b')]);return _0xfbdf1c[_0x7418('0x48')](_0x3772b2);}})[_0x7418('0x24')](function(_0x1b7030){if(_0x1b7030){_0x46a4e1=_0x1b7030[_0x7418('0x44')];if(!_0x12b531['query'][_0x7418('0x35')](_0x7418('0x36'))){_0x3772b2[_0x7418('0x1b')]=qs[_0x7418('0x1b')](_0x12b531[_0x7418('0x2f')][_0x7418('0x1b')]);_0x3772b2[_0x7418('0x19')]=qs[_0x7418('0x19')](_0x12b531[_0x7418('0x2f')][_0x7418('0x19')]);}return _0xfbdf1c[_0x7418('0x48')](_0x3772b2);}})[_0x7418('0x24')](function(_0x1b2bc4){if(_0x1b2bc4){return _0x1b2bc4?{'count':_0x46a4e1,'rows':_0x1b2bc4}:null;}})[_0x7418('0x24')](respondWithResult(_0x4be34a,null))['catch'](handleError(_0x4be34a,null));};exports[_0x7418('0x4c')]=function(_0x20a3d1,_0x272a5e,_0x1b3d20){if(_0x20a3d1['body']['id']){delete _0x20a3d1[_0x7418('0x47')]['id'];}return db['VtigerAccount'][_0x7418('0x49')]({'where':{'id':_0x20a3d1[_0x7418('0x42')]['id']}})[_0x7418('0x24')](handleEntityNotFound(_0x272a5e,null))['then'](function(_0x5c3951){if(_0x5c3951){_0x20a3d1[_0x7418('0x47')][_0x7418('0x4d')]=_0x5c3951['id'];_0x20a3d1[_0x7418('0x47')][_0x7418('0x4e')]=integrations[_0x7418('0x4f')](_0x20a3d1[_0x7418('0x47')][_0x7418('0x50')],_0x20a3d1[_0x7418('0x47')]['type']);_0x20a3d1[_0x7418('0x47')][_0x7418('0x51')]=integrations[_0x7418('0x52')](_0x20a3d1['body'][_0x7418('0x50')],_0x20a3d1[_0x7418('0x47')]['type']);return db['VtigerConfiguration'][_0x7418('0x46')](_0x20a3d1[_0x7418('0x47')],{'include':[{'model':db[_0x7418('0x53')],'as':_0x7418('0x4e')},{'model':db[_0x7418('0x53')],'as':_0x7418('0x51')}]});}return null;})[_0x7418('0x24')](respondWithResult(_0x272a5e,null))[_0x7418('0x40')](handleError(_0x272a5e,null));};var md5=require('md5');exports[_0x7418('0x54')]=function(_0x229cd4,_0x3a5d96,_0x4a412a){var _0x383dac=null;var _0x338a93=null;var _0x5c5b98=null;var _0x3ab95e=null;var _0xc2e0d3='';return db['VtigerAccount'][_0x7418('0x49')]({'where':{'id':_0x229cd4['params']['id']},'attributes':['id','name',_0x7418('0x55'),'description',_0x7418('0x56'),_0x7418('0x57'),'serverUrl',_0x7418('0x58')]})[_0x7418('0x24')](handleEntityNotFound(_0x3a5d96,null))[_0x7418('0x24')](function(_0x1cf2e4){if(_0x1cf2e4){_0x383dac=_0x1cf2e4[_0x7418('0x55')];_0x338a93=_0x1cf2e4['accessKey'];_0x5c5b98=_0x1cf2e4[_0x7418('0x56')];_0xc2e0d3=_0x1cf2e4[_0x7418('0x57')];var _0x5555b3=_0xc2e0d3['slice'](-0x1);if(_0x5555b3==='/'){_0xc2e0d3=_0xc2e0d3['substring'](0x0,_0xc2e0d3[_0x7418('0x59')](_0x5555b3));}_0x3ab95e=util['format'](_0x7418('0x5a'),_0xc2e0d3);var _0x59b17a={'method':_0x7418('0x5b'),'uri':_0x3ab95e,'qs':{'operation':_0x7418('0x5c'),'username':_0x1cf2e4[_0x7418('0x55')]},'json':!![]};return rp(_0x59b17a);}})[_0x7418('0x24')](function(_0x2bda98){if(_0x2bda98[_0x7418('0x5d')]){var _0xb5c7b0={'method':_0x7418('0x5e'),'uri':_0x3ab95e,'form':{'operation':'login','username':_0x383dac,'accessKey':md5(_0x2bda98['result'][_0x7418('0x5f')]+_0x338a93)},'json':!![]};return rp(_0xb5c7b0);}})[_0x7418('0x24')](function(_0x519493){if(_0x519493[_0x7418('0x5d')]){var _0x59b737={'method':_0x7418('0x5b'),'uri':_0x3ab95e,'qs':{'operation':'describe','username':_0x383dac,'sessionName':_0x519493[_0x7418('0x60')][_0x7418('0x61')],'elementType':_0x5c5b98},'json':!![]};return rp(_0x59b737);}})[_0x7418('0x24')](function(_0x1af906){if(_0x1af906['success']){var _0x5e4ccc=['autogenerated',_0x7418('0x62'),_0x7418('0x63')];_['remove'](_0x1af906[_0x7418('0x60')]['fields'],function(_0x1420b0){return _0x5e4ccc[_0x7418('0x64')](_0x1420b0['type'][_0x7418('0x28')]);});_[_0x7418('0x65')](_0x1af906[_0x7418('0x60')][_0x7418('0x34')],function(_0x1f4ed6){return _0x1f4ed6[_0x7418('0x66')]==='false';});return{'count':_0x1af906[_0x7418('0x60')][_0x7418('0x34')][_0x7418('0x44')],'rows':_[_0x7418('0x29')](_0x1af906[_0x7418('0x60')]['fields'],function(_0x131de1){return{'id':_0x131de1[_0x7418('0x28')],'name':_0x131de1['label'],'custom':_[_0x7418('0x67')](_0x131de1[_0x7418('0x28')],_0x7418('0x68'))?!![]:![],'options':_0x131de1[_0x7418('0x2c')][_0x7418('0x28')]==='picklist'&&_0x131de1[_0x7418('0x2c')]['picklistValues'][_0x7418('0x44')]>0x0?_[_0x7418('0x29')](_0x131de1['type'][_0x7418('0x69')],function(_0x203b38){return{'name':_0x203b38[_0x7418('0x6a')],'value':_0x203b38[_0x7418('0x6b')]};}):[]};})};}})[_0x7418('0x24')](respondWithResult(_0x3a5d96,null))['catch'](function(_0x36eade){console[_0x7418('0x6c')](_0x7418('0x6d')+_0x36eade);var _0x399dae=_0x229cd4[_0x7418('0x2f')][_0x7418('0x6e')]?0x1f4:_0x36eade[_0x7418('0x6f')]||0x1f4;logger[_0x7418('0x26')](_0x7418('0x70'),_0x7418('0x54'),_0x399dae,JSON[_0x7418('0x71')](_0x36eade));delete _0x36eade[_0x7418('0x28')];if(_0x399dae===0x191){_0x399dae=0x190;}_0x3a5d96[_0x7418('0x17')](_0x399dae)[_0x7418('0x72')](_0x229cd4[_0x7418('0x2f')][_0x7418('0x6e')]?{'message':'Wrong\x20credentials','statusCode':_0x36eade['statusCode']}:_0x36eade);});};
\ No newline at end of file
+var _0xc074=['../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','set','Content-Range','apply','save','then','destroy','error','stack','name','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','VtigerAccount','count','includeAll','findAll','length','include','catch','create','body','update','getConfigurations','params','findOne','AccountId','getSubjects','Descriptions','getDescriptions','VtigerConfiguration','VtigerField','Subjects','md5','getFields','username','description','remoteUri','serverUrl','accessKey','moduleName','slice','substring','lastIndexOf','format','GET','success','POST','login','result','token','describe','sessionName','reference','owner','remove','editable','false','startsWith','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','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x5740a7,_0x19e089){var _0x436f32=function(_0x44e171){while(--_0x44e171){_0x5740a7['push'](_0x5740a7['shift']());}};_0x436f32(++_0x19e089);}(_0xc074,0x151));var _0x4c07=function(_0x4c6d6f,_0x291557){_0x4c6d6f=_0x4c6d6f-0x0;var _0x2d4478=_0xc074[_0x4c6d6f];return _0x2d4478;};'use strict';var emlformat=require(_0x4c07('0x0'));var rimraf=require(_0x4c07('0x1'));var zipdir=require(_0x4c07('0x2'));var jsonpatch=require(_0x4c07('0x3'));var rp=require(_0x4c07('0x4'));var moment=require('moment');var BPromise=require(_0x4c07('0x5'));var Mustache=require(_0x4c07('0x6'));var util=require(_0x4c07('0x7'));var path=require(_0x4c07('0x8'));var sox=require('sox');var csv=require(_0x4c07('0x9'));var ejs=require(_0x4c07('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x4c07('0xb'));var crypto=require(_0x4c07('0xc'));var jsforce=require(_0x4c07('0xd'));var deskjs=require(_0x4c07('0xe'));var toCsv=require(_0x4c07('0x9'));var querystring=require(_0x4c07('0xf'));var Papa=require(_0x4c07('0x10'));var Redis=require(_0x4c07('0x11'));var authService=require(_0x4c07('0x12'));var qs=require(_0x4c07('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4c07('0x14'));var logger=require(_0x4c07('0x15'))('api');var utils=require(_0x4c07('0x16'));var config=require(_0x4c07('0x17'));var licenseUtil=require(_0x4c07('0x18'));var db=require(_0x4c07('0x19'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x279398,_0x12523f){_0x12523f=_0x12523f||0xcc;return function(_0x3fa609){if(_0x3fa609){return _0x279398[_0x4c07('0x1a')](_0x12523f);}return _0x279398[_0x4c07('0x1b')](_0x12523f)[_0x4c07('0x1c')]();};}function respondWithResult(_0x541684,_0x25461b){_0x25461b=_0x25461b||0xc8;return function(_0x3eeaf3){if(_0x3eeaf3){return _0x541684[_0x4c07('0x1b')](_0x25461b)[_0x4c07('0x1d')](_0x3eeaf3);}};}function respondWithFilteredResult(_0x4d81c3,_0x7de134){return function(_0x4b4054){if(_0x4b4054){var _0x569f34=typeof _0x7de134['offset']===_0x4c07('0x1e')&&typeof _0x7de134[_0x4c07('0x1f')]===_0x4c07('0x1e');var _0x3fe1b0=_0x4b4054['count'];var _0xfdd5f0=_0x569f34?0x0:_0x7de134['offset'];var _0x1da37c=_0x569f34?_0x4b4054['count']:_0x7de134[_0x4c07('0x20')]+_0x7de134['limit'];var _0x1b662c;if(_0x1da37c>=_0x3fe1b0){_0x1da37c=_0x3fe1b0;_0x1b662c=0xc8;}else{_0x1b662c=0xce;}_0x4d81c3['status'](_0x1b662c);return _0x4d81c3[_0x4c07('0x21')](_0x4c07('0x22'),_0xfdd5f0+'-'+_0x1da37c+'/'+_0x3fe1b0)['json'](_0x4b4054);}return null;};}function patchUpdates(_0x66990d){return function(_0x482adc){try{jsonpatch[_0x4c07('0x23')](_0x482adc,_0x66990d,!![]);}catch(_0x44834a){return BPromise['reject'](_0x44834a);}return _0x482adc[_0x4c07('0x24')]();};}function saveUpdates(_0x4c99d7,_0x203ece){return function(_0xe2b685){if(_0xe2b685){return _0xe2b685['update'](_0x4c99d7)[_0x4c07('0x25')](function(_0x1dbbca){return _0x1dbbca;});}return null;};}function removeEntity(_0x4d12e4,_0x42f73a){return function(_0x473fad){if(_0x473fad){return _0x473fad[_0x4c07('0x26')]()['then'](function(){_0x4d12e4[_0x4c07('0x1b')](0xcc)[_0x4c07('0x1c')]();});}};}function handleEntityNotFound(_0x273ea2,_0x30502e){return function(_0x40e43a){if(!_0x40e43a){_0x273ea2[_0x4c07('0x1a')](0x194);}return _0x40e43a;};}function handleError(_0x1c266d,_0x41d258){_0x41d258=_0x41d258||0x1f4;return function(_0x226bc6){logger[_0x4c07('0x27')](_0x226bc6[_0x4c07('0x28')]);if(_0x226bc6['name']){delete _0x226bc6[_0x4c07('0x29')];}_0x1c266d[_0x4c07('0x1b')](_0x41d258)['send'](_0x226bc6);};}exports[_0x4c07('0x2a')]=function(_0x447145,_0x4c221b){var _0x8ac8a8={},_0x46dd76={},_0x2884e5={'count':0x0,'rows':[]};var _0x292ab4=_[_0x4c07('0x2b')](db['VtigerAccount'][_0x4c07('0x2c')],function(_0x57e08c){return{'name':_0x57e08c[_0x4c07('0x2d')],'type':_0x57e08c[_0x4c07('0x2e')][_0x4c07('0x2f')]};});_0x46dd76['model']=_[_0x4c07('0x2b')](_0x292ab4,_0x4c07('0x29'));_0x46dd76[_0x4c07('0x30')]=_[_0x4c07('0x31')](_0x447145[_0x4c07('0x30')]);_0x46dd76[_0x4c07('0x32')]=_[_0x4c07('0x33')](_0x46dd76[_0x4c07('0x34')],_0x46dd76[_0x4c07('0x30')]);_0x8ac8a8[_0x4c07('0x35')]=_['intersection'](_0x46dd76[_0x4c07('0x34')],qs[_0x4c07('0x36')](_0x447145['query']['fields']));_0x8ac8a8['attributes']=_0x8ac8a8[_0x4c07('0x35')]['length']?_0x8ac8a8['attributes']:_0x46dd76[_0x4c07('0x34')];if(!_0x447145[_0x4c07('0x30')][_0x4c07('0x37')](_0x4c07('0x38'))){_0x8ac8a8[_0x4c07('0x1f')]=qs[_0x4c07('0x1f')](_0x447145[_0x4c07('0x30')]['limit']);_0x8ac8a8[_0x4c07('0x20')]=qs[_0x4c07('0x20')](_0x447145[_0x4c07('0x30')][_0x4c07('0x20')]);}_0x8ac8a8[_0x4c07('0x39')]=qs['sort'](_0x447145[_0x4c07('0x30')][_0x4c07('0x3a')]);_0x8ac8a8[_0x4c07('0x3b')]=qs[_0x4c07('0x32')](_['pick'](_0x447145[_0x4c07('0x30')],_0x46dd76[_0x4c07('0x32')]),_0x292ab4);if(_0x447145[_0x4c07('0x30')][_0x4c07('0x3c')]){_0x8ac8a8[_0x4c07('0x3b')]=_[_0x4c07('0x3d')](_0x8ac8a8['where'],{'$or':_[_0x4c07('0x2b')](_0x292ab4,function(_0x141157){if(_0x141157['type']!==_0x4c07('0x3e')){var _0x19b2cc={};_0x19b2cc[_0x141157[_0x4c07('0x29')]]={'$like':'%'+_0x447145[_0x4c07('0x30')][_0x4c07('0x3c')]+'%'};return _0x19b2cc;}})});}_0x8ac8a8=_[_0x4c07('0x3d')]({},_0x8ac8a8,_0x447145[_0x4c07('0x3f')]);var _0x5a0fd2={'where':_0x8ac8a8[_0x4c07('0x3b')]};return db[_0x4c07('0x40')][_0x4c07('0x41')](_0x5a0fd2)[_0x4c07('0x25')](function(_0x49929e){_0x2884e5[_0x4c07('0x41')]=_0x49929e;if(_0x447145[_0x4c07('0x30')][_0x4c07('0x42')]){_0x8ac8a8['include']=[{'all':!![]}];}return db[_0x4c07('0x40')][_0x4c07('0x43')](_0x8ac8a8);})[_0x4c07('0x25')](function(_0x687d9c){_0x2884e5['rows']=_0x687d9c;return _0x2884e5;})[_0x4c07('0x25')](respondWithFilteredResult(_0x4c221b,_0x8ac8a8))['catch'](handleError(_0x4c221b,null));};exports['show']=function(_0x8b2146,_0x97e5d8){var _0x314b67={'raw':![],'where':{'id':_0x8b2146['params']['id']}},_0x1ed0d7={};_0x1ed0d7['model']=_[_0x4c07('0x31')](db[_0x4c07('0x40')]['rawAttributes']);_0x1ed0d7[_0x4c07('0x30')]=_[_0x4c07('0x31')](_0x8b2146[_0x4c07('0x30')]);_0x1ed0d7['filters']=_['intersection'](_0x1ed0d7['model'],_0x1ed0d7['query']);_0x314b67[_0x4c07('0x35')]=_[_0x4c07('0x33')](_0x1ed0d7[_0x4c07('0x34')],qs[_0x4c07('0x36')](_0x8b2146[_0x4c07('0x30')]['fields']));_0x314b67[_0x4c07('0x35')]=_0x314b67[_0x4c07('0x35')][_0x4c07('0x44')]?_0x314b67[_0x4c07('0x35')]:_0x1ed0d7[_0x4c07('0x34')];if(_0x8b2146['query'][_0x4c07('0x42')]){_0x314b67[_0x4c07('0x45')]=[{'all':!![]}];}_0x314b67=_[_0x4c07('0x3d')]({},_0x314b67,_0x8b2146['options']);return db[_0x4c07('0x40')]['find'](_0x314b67)['then'](handleEntityNotFound(_0x97e5d8,null))[_0x4c07('0x25')](respondWithResult(_0x97e5d8,null))[_0x4c07('0x46')](handleError(_0x97e5d8,null));};exports[_0x4c07('0x47')]=function(_0x117e82,_0x237727){return db[_0x4c07('0x40')][_0x4c07('0x47')](_0x117e82[_0x4c07('0x48')],{})[_0x4c07('0x25')](respondWithResult(_0x237727,0xc9))['catch'](handleError(_0x237727,null));};exports[_0x4c07('0x49')]=function(_0x52ffb9,_0x423956){if(_0x52ffb9['body']['id']){delete _0x52ffb9[_0x4c07('0x48')]['id'];}return db[_0x4c07('0x40')]['find']({'where':{'id':_0x52ffb9['params']['id']}})['then'](handleEntityNotFound(_0x423956,null))['then'](saveUpdates(_0x52ffb9[_0x4c07('0x48')],null))[_0x4c07('0x25')](respondWithResult(_0x423956,null))[_0x4c07('0x46')](handleError(_0x423956,null));};exports[_0x4c07('0x26')]=function(_0x122e7d,_0x514c4e){return db[_0x4c07('0x40')]['find']({'where':{'id':_0x122e7d['params']['id']}})['then'](handleEntityNotFound(_0x514c4e,null))[_0x4c07('0x25')](removeEntity(_0x514c4e,null))[_0x4c07('0x46')](handleError(_0x514c4e,null));};exports[_0x4c07('0x4a')]=function(_0x3ebc4c,_0x2a1599,_0x37d09b){var _0x4ff60a={};var _0x36b7cb={};var _0x4de018;var _0x6a3ac3;return db[_0x4c07('0x40')]['findOne']({'where':{'id':_0x3ebc4c[_0x4c07('0x4b')]['id']}})[_0x4c07('0x25')](handleEntityNotFound(_0x2a1599,null))[_0x4c07('0x25')](function(_0x1c9108){if(_0x1c9108){_0x4de018=_0x1c9108;_0x36b7cb[_0x4c07('0x34')]=_[_0x4c07('0x31')](db['VtigerConfiguration']['rawAttributes']);_0x36b7cb[_0x4c07('0x30')]=_['keys'](_0x3ebc4c[_0x4c07('0x30')]);_0x36b7cb[_0x4c07('0x32')]=_[_0x4c07('0x33')](_0x36b7cb[_0x4c07('0x34')],_0x36b7cb[_0x4c07('0x30')]);_0x4ff60a[_0x4c07('0x35')]=_[_0x4c07('0x33')](_0x36b7cb[_0x4c07('0x34')],qs['fields'](_0x3ebc4c['query'][_0x4c07('0x36')]));_0x4ff60a[_0x4c07('0x35')]=_0x4ff60a[_0x4c07('0x35')][_0x4c07('0x44')]?_0x4ff60a['attributes']:_0x36b7cb[_0x4c07('0x34')];_0x4ff60a['order']=qs[_0x4c07('0x3a')](_0x3ebc4c[_0x4c07('0x30')][_0x4c07('0x3a')]);_0x4ff60a[_0x4c07('0x3b')]=qs['filters'](_['pick'](_0x3ebc4c[_0x4c07('0x30')],_0x36b7cb[_0x4c07('0x32')]));if(_0x3ebc4c[_0x4c07('0x30')][_0x4c07('0x3c')]){_0x4ff60a[_0x4c07('0x3b')]=_[_0x4c07('0x3d')](_0x4ff60a[_0x4c07('0x3b')],{'$or':_['map'](_0x4ff60a[_0x4c07('0x35')],function(_0x5f37a1){var _0x315817={};_0x315817[_0x5f37a1]={'$like':'%'+_0x3ebc4c[_0x4c07('0x30')]['filter']+'%'};return _0x315817;})});}_0x4ff60a=_['merge']({},_0x4ff60a,_0x3ebc4c[_0x4c07('0x3f')]);return _0x4de018[_0x4c07('0x4a')](_0x4ff60a);}})[_0x4c07('0x25')](function(_0x1e9d02){if(_0x1e9d02){_0x6a3ac3=_0x1e9d02[_0x4c07('0x44')];if(!_0x3ebc4c[_0x4c07('0x30')][_0x4c07('0x37')](_0x4c07('0x38'))){_0x4ff60a[_0x4c07('0x1f')]=qs[_0x4c07('0x1f')](_0x3ebc4c[_0x4c07('0x30')]['limit']);_0x4ff60a['offset']=qs[_0x4c07('0x20')](_0x3ebc4c[_0x4c07('0x30')][_0x4c07('0x20')]);}return _0x4de018[_0x4c07('0x4a')](_0x4ff60a);}})[_0x4c07('0x25')](function(_0x41e5c4){if(_0x41e5c4){return _0x41e5c4?{'count':_0x6a3ac3,'rows':_0x41e5c4}:null;}})[_0x4c07('0x25')](respondWithResult(_0x2a1599,null))[_0x4c07('0x46')](handleError(_0x2a1599,null));};exports['addConfiguration']=function(_0x54440c,_0x36cb36,_0x15dcd9){if(_0x54440c[_0x4c07('0x48')]['id']){delete _0x54440c[_0x4c07('0x48')]['id'];}return db['VtigerAccount'][_0x4c07('0x4c')]({'where':{'id':_0x54440c[_0x4c07('0x4b')]['id']}})['then'](handleEntityNotFound(_0x36cb36,null))[_0x4c07('0x25')](function(_0x210da8){if(_0x210da8){_0x54440c[_0x4c07('0x48')][_0x4c07('0x4d')]=_0x210da8['id'];_0x54440c['body']['Subjects']=integrations[_0x4c07('0x4e')](_0x54440c[_0x4c07('0x48')]['channel'],_0x54440c[_0x4c07('0x48')]['type']);_0x54440c[_0x4c07('0x48')][_0x4c07('0x4f')]=integrations[_0x4c07('0x50')](_0x54440c['body']['channel'],_0x54440c[_0x4c07('0x48')][_0x4c07('0x2e')]);return db[_0x4c07('0x51')][_0x4c07('0x47')](_0x54440c[_0x4c07('0x48')],{'include':[{'model':db[_0x4c07('0x52')],'as':_0x4c07('0x53')},{'model':db[_0x4c07('0x52')],'as':'Descriptions'}]});}return null;})[_0x4c07('0x25')](respondWithResult(_0x36cb36,null))[_0x4c07('0x46')](handleError(_0x36cb36,null));};var md5=require(_0x4c07('0x54'));exports[_0x4c07('0x55')]=function(_0x4a370c,_0x493c19,_0x4870ce){var _0x4b277a=null;var _0x2e3fa3=null;var _0x2dcafe=null;var _0x5765b8=null;var _0x26f38d='';return db[_0x4c07('0x40')][_0x4c07('0x4c')]({'where':{'id':_0x4a370c[_0x4c07('0x4b')]['id']},'attributes':['id','name',_0x4c07('0x56'),_0x4c07('0x57'),'moduleName',_0x4c07('0x58'),_0x4c07('0x59'),_0x4c07('0x5a')]})[_0x4c07('0x25')](handleEntityNotFound(_0x493c19,null))[_0x4c07('0x25')](function(_0x4a193c){if(_0x4a193c){_0x4b277a=_0x4a193c['username'];_0x2e3fa3=_0x4a193c[_0x4c07('0x5a')];_0x2dcafe=_0x4a193c[_0x4c07('0x5b')];_0x26f38d=_0x4a193c[_0x4c07('0x58')];var _0x465459=_0x26f38d[_0x4c07('0x5c')](-0x1);if(_0x465459==='/'){_0x26f38d=_0x26f38d[_0x4c07('0x5d')](0x0,_0x26f38d[_0x4c07('0x5e')](_0x465459));}_0x5765b8=util[_0x4c07('0x5f')]('%s/webservice.php',_0x26f38d);var _0x2596a1={'method':_0x4c07('0x60'),'uri':_0x5765b8,'qs':{'operation':'getchallenge','username':_0x4a193c[_0x4c07('0x56')]},'json':!![]};return rp(_0x2596a1);}})['then'](function(_0x598676){if(_0x598676[_0x4c07('0x61')]){var _0x1fb6d5={'method':_0x4c07('0x62'),'uri':_0x5765b8,'form':{'operation':_0x4c07('0x63'),'username':_0x4b277a,'accessKey':md5(_0x598676[_0x4c07('0x64')][_0x4c07('0x65')]+_0x2e3fa3)},'json':!![]};return rp(_0x1fb6d5);}})['then'](function(_0x550efb){if(_0x550efb[_0x4c07('0x61')]){var _0x2effb7={'method':'GET','uri':_0x5765b8,'qs':{'operation':_0x4c07('0x66'),'username':_0x4b277a,'sessionName':_0x550efb[_0x4c07('0x64')][_0x4c07('0x67')],'elementType':_0x2dcafe},'json':!![]};return rp(_0x2effb7);}})[_0x4c07('0x25')](function(_0x4861df){if(_0x4861df[_0x4c07('0x61')]){var _0x267eeb=['autogenerated',_0x4c07('0x68'),_0x4c07('0x69')];_[_0x4c07('0x6a')](_0x4861df[_0x4c07('0x64')][_0x4c07('0x36')],function(_0x4659e4){return _0x267eeb['includes'](_0x4659e4[_0x4c07('0x2e')][_0x4c07('0x29')]);});_[_0x4c07('0x6a')](_0x4861df[_0x4c07('0x64')][_0x4c07('0x36')],function(_0xe29e6b){return _0xe29e6b[_0x4c07('0x6b')]===_0x4c07('0x6c');});return{'count':_0x4861df[_0x4c07('0x64')][_0x4c07('0x36')][_0x4c07('0x44')],'rows':_[_0x4c07('0x2b')](_0x4861df[_0x4c07('0x64')][_0x4c07('0x36')],function(_0x13aaaf){return{'id':_0x13aaaf['name'],'name':_0x13aaaf['label'],'custom':_[_0x4c07('0x6d')](_0x13aaaf[_0x4c07('0x29')],'cf_')?!![]:![],'options':_0x13aaaf[_0x4c07('0x2e')]['name']===_0x4c07('0x6e')&&_0x13aaaf[_0x4c07('0x2e')][_0x4c07('0x6f')][_0x4c07('0x44')]>0x0?_[_0x4c07('0x2b')](_0x13aaaf['type']['picklistValues'],function(_0x3627b4){return{'name':_0x3627b4['label'],'value':_0x3627b4[_0x4c07('0x70')]};}):[]};})};}})[_0x4c07('0x25')](respondWithResult(_0x493c19,null))['catch'](function(_0x48b90d){console[_0x4c07('0x71')]('vTiger\x20error:\x20'+_0x48b90d);var _0x318d8a=_0x4a370c['query'][_0x4c07('0x72')]?0x1f4:_0x48b90d[_0x4c07('0x73')]||0x1f4;logger['error'](_0x4c07('0x74'),_0x4c07('0x55'),_0x318d8a,JSON[_0x4c07('0x75')](_0x48b90d));delete _0x48b90d[_0x4c07('0x29')];if(_0x318d8a===0x191){_0x318d8a=0x190;}_0x493c19[_0x4c07('0x1b')](_0x318d8a)[_0x4c07('0x76')](_0x4a370c[_0x4c07('0x30')][_0x4c07('0x72')]?{'message':'Wrong\x20credentials','statusCode':_0x48b90d['statusCode']}:_0x48b90d);});};
\ No newline at end of file
index 23306ed..00c503e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x787f=['rimraf','../../config/environment','exports','define','int_vtiger_accounts','lodash','../../config/logger','bluebird','request-promise','path'];(function(_0x8113e5,_0x4bdca8){var _0x22b2ee=function(_0x27df14){while(--_0x27df14){_0x8113e5['push'](_0x8113e5['shift']());}};_0x22b2ee(++_0x4bdca8);}(_0x787f,0x113));var _0xf787=function(_0x3b58c9,_0x1f46c3){_0x3b58c9=_0x3b58c9-0x0;var _0x5b653a=_0x787f[_0x3b58c9];return _0x5b653a;};'use strict';var _=require(_0xf787('0x0'));var util=require('util');var logger=require(_0xf787('0x1'))('api');var moment=require('moment');var BPromise=require(_0xf787('0x2'));var rp=require(_0xf787('0x3'));var fs=require('fs');var path=require(_0xf787('0x4'));var rimraf=require(_0xf787('0x5'));var config=require(_0xf787('0x6'));var attributes=require('./intVtigerAccount.attributes');var integrations=require('../../components/integrations/configuration');module[_0xf787('0x7')]=function(_0x150765,_0x524596){return _0x150765[_0xf787('0x8')]('VtigerAccount',attributes,{'tableName':_0xf787('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd704=['path','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','define','VtigerAccount','int_vtiger_accounts','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x4843f9,_0x4af459){var _0x193c6a=function(_0x51eca9){while(--_0x51eca9){_0x4843f9['push'](_0x4843f9['shift']());}};_0x193c6a(++_0x4af459);}(_0xd704,0xe4));var _0x4d70=function(_0x3d485a,_0x2ac0d8){_0x3d485a=_0x3d485a-0x0;var _0x7d0beb=_0xd704[_0x3d485a];return _0x7d0beb;};'use strict';var _=require(_0x4d70('0x0'));var util=require(_0x4d70('0x1'));var logger=require(_0x4d70('0x2'))(_0x4d70('0x3'));var moment=require(_0x4d70('0x4'));var BPromise=require(_0x4d70('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4d70('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4d70('0x7'));var integrations=require(_0x4d70('0x8'));module[_0x4d70('0x9')]=function(_0xeb8996,_0x5f4646){return _0xeb8996[_0x4d70('0xa')](_0x4d70('0xb'),attributes,{'tableName':_0x4d70('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bfd1eff..e036690 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0102=['util','moment','bluebird','randomstring','../../config/environment','jayson/promise','client','http','then','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetVtigerAccount','findAll','options','raw','where','attributes','include','model','map','find','ShowVtigerAccount'];(function(_0x4c8a5c,_0x69ee86){var _0x48c8c3=function(_0x5b6c9e){while(--_0x5b6c9e){_0x4c8a5c['push'](_0x4c8a5c['shift']());}};_0x48c8c3(++_0x69ee86);}(_0x0102,0x186));var _0x2010=function(_0x167c3d,_0x26e2d2){_0x167c3d=_0x167c3d-0x0;var _0x5a1d0e=_0x0102[_0x167c3d];return _0x5a1d0e;};'use strict';var _=require('lodash');var util=require(_0x2010('0x0'));var moment=require(_0x2010('0x1'));var BPromise=require(_0x2010('0x2'));var rs=require(_0x2010('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x2010('0x4'));var jayson=require(_0x2010('0x5'));var client=jayson[_0x2010('0x6')][_0x2010('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4eeb67,_0x453fc0,_0x495d98){return new BPromise(function(_0x4728c0,_0x160e41){return client['request'](_0x4eeb67,_0x495d98)[_0x2010('0x8')](function(_0x3c2d98){logger[_0x2010('0x9')](_0x2010('0xa'),_0x453fc0,_0x2010('0xb'));logger[_0x2010('0xc')](_0x2010('0xd'),_0x453fc0,_0x2010('0xb'),JSON[_0x2010('0xe')](_0x3c2d98));if(_0x3c2d98[_0x2010('0xf')]){if(_0x3c2d98[_0x2010('0xf')][_0x2010('0x10')]===0x1f4){logger[_0x2010('0xf')](_0x2010('0xa'),_0x453fc0,_0x3c2d98[_0x2010('0xf')][_0x2010('0x11')]);return _0x160e41(_0x3c2d98['error']['message']);}logger[_0x2010('0xf')](_0x2010('0xa'),_0x453fc0,_0x3c2d98[_0x2010('0xf')][_0x2010('0x11')]);return _0x4728c0(_0x3c2d98[_0x2010('0xf')][_0x2010('0x11')]);}else{logger['info'](_0x2010('0xa'),_0x453fc0,_0x2010('0xb'));_0x4728c0(_0x3c2d98['result'][_0x2010('0x11')]);}})[_0x2010('0x12')](function(_0x410889){logger[_0x2010('0xf')](_0x2010('0xa'),_0x453fc0,_0x410889);_0x160e41(_0x410889);});});}exports[_0x2010('0x13')]=function(_0x83cd35){var _0x1476c0=this;return new Promise(function(_0x309477,_0x569de2){return db['VtigerAccount'][_0x2010('0x14')]({'raw':_0x83cd35[_0x2010('0x15')]?_0x83cd35[_0x2010('0x15')][_0x2010('0x16')]===undefined?!![]:![]:!![],'where':_0x83cd35['options']?_0x83cd35['options'][_0x2010('0x17')]||null:null,'attributes':_0x83cd35[_0x2010('0x15')]?_0x83cd35[_0x2010('0x15')][_0x2010('0x18')]||null:null,'limit':_0x83cd35[_0x2010('0x15')]?_0x83cd35[_0x2010('0x15')]['limit']||null:null,'include':_0x83cd35[_0x2010('0x15')]?_0x83cd35[_0x2010('0x15')]['include']?_['map'](_0x83cd35['options'][_0x2010('0x19')],function(_0x574719){return{'model':db[_0x574719[_0x2010('0x1a')]],'as':_0x574719['as'],'attributes':_0x574719['attributes'],'include':_0x574719['include']?_[_0x2010('0x1b')](_0x574719[_0x2010('0x19')],function(_0x52b4fe){return{'model':db[_0x52b4fe[_0x2010('0x1a')]],'as':_0x52b4fe['as'],'attributes':_0x52b4fe['attributes'],'include':_0x52b4fe[_0x2010('0x19')]?_[_0x2010('0x1b')](_0x52b4fe[_0x2010('0x19')],function(_0x3dcea4){return{'model':db[_0x3dcea4[_0x2010('0x1a')]],'as':_0x3dcea4['as'],'attributes':_0x3dcea4[_0x2010('0x18')]};}):[]};}):[]};}):[]:[]})[_0x2010('0x8')](function(_0x3eb4dc){logger[_0x2010('0x9')](_0x2010('0x13'),_0x83cd35);logger[_0x2010('0xc')](_0x2010('0x13'),_0x83cd35,JSON['stringify'](_0x3eb4dc));_0x309477(_0x3eb4dc);})[_0x2010('0x12')](function(_0x52fe5e){logger[_0x2010('0xf')](_0x2010('0x13'),_0x52fe5e[_0x2010('0x11')],_0x83cd35);_0x569de2(_0x1476c0[_0x2010('0xf')](0x1f4,_0x52fe5e['message']));});});};exports['ShowVtigerAccount']=function(_0x136d5f){var _0x48d9f2=this;return new Promise(function(_0x2839f2,_0x1d5d7a){return db['VtigerAccount'][_0x2010('0x1c')]({'raw':_0x136d5f[_0x2010('0x15')]?_0x136d5f[_0x2010('0x15')][_0x2010('0x16')]===undefined?!![]:![]:!![],'where':_0x136d5f[_0x2010('0x15')]?_0x136d5f['options'][_0x2010('0x17')]||null:null,'attributes':_0x136d5f[_0x2010('0x15')]?_0x136d5f[_0x2010('0x15')]['attributes']||null:null,'include':_0x136d5f['options']?_0x136d5f[_0x2010('0x15')][_0x2010('0x19')]?_[_0x2010('0x1b')](_0x136d5f['options']['include'],function(_0xac64e1){return{'model':db[_0xac64e1[_0x2010('0x1a')]],'as':_0xac64e1['as'],'attributes':_0xac64e1[_0x2010('0x18')],'include':_0xac64e1[_0x2010('0x19')]?_[_0x2010('0x1b')](_0xac64e1['include'],function(_0x569e13){return{'model':db[_0x569e13['model']],'as':_0x569e13['as'],'attributes':_0x569e13[_0x2010('0x18')],'include':_0x569e13[_0x2010('0x19')]?_[_0x2010('0x1b')](_0x569e13['include'],function(_0x1f7f49){return{'model':db[_0x1f7f49[_0x2010('0x1a')]],'as':_0x1f7f49['as'],'attributes':_0x1f7f49[_0x2010('0x18')]};}):[]};}):[]};}):[]:[]})[_0x2010('0x8')](function(_0x4f5106){logger[_0x2010('0x9')](_0x2010('0x1d'),_0x136d5f);logger[_0x2010('0xc')]('ShowVtigerAccount',_0x136d5f,JSON[_0x2010('0xe')](_0x4f5106));_0x2839f2(_0x4f5106);})['catch'](function(_0x13f88a){logger[_0x2010('0xf')](_0x2010('0x1d'),_0x13f88a[_0x2010('0x11')],_0x136d5f);_0x1d5d7a(_0x48d9f2[_0x2010('0xf')](0x1f4,_0x13f88a[_0x2010('0x11')]));});});};
\ No newline at end of file
+var _0x8f59=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','VtigerAccount,\x20%s,\x20%s,\x20%s','error','message','result','GetVtigerAccount','VtigerAccount','findAll','options','raw','where','attributes','limit','map','include','model','then','debug','catch','ShowVtigerAccount','stringify','lodash','util','moment'];(function(_0x42bc91,_0x41f40a){var _0x3f5507=function(_0x20cfaf){while(--_0x20cfaf){_0x42bc91['push'](_0x42bc91['shift']());}};_0x3f5507(++_0x41f40a);}(_0x8f59,0x11d));var _0x98f5=function(_0x220d1a,_0x31f1e3){_0x220d1a=_0x220d1a-0x0;var _0x4f0fe3=_0x8f59[_0x220d1a];return _0x4f0fe3;};'use strict';var _=require(_0x98f5('0x0'));var util=require(_0x98f5('0x1'));var moment=require(_0x98f5('0x2'));var BPromise=require(_0x98f5('0x3'));var rs=require(_0x98f5('0x4'));var fs=require('fs');var Redis=require(_0x98f5('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x98f5('0x6'));var logger=require(_0x98f5('0x7'))(_0x98f5('0x8'));var config=require(_0x98f5('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x98f5('0xa')][_0x98f5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2e2acf,_0x5869ee,_0x5e91b3){return new BPromise(function(_0x109417,_0x1cd8a8){return client[_0x98f5('0xc')](_0x2e2acf,_0x5e91b3)['then'](function(_0x456329){logger[_0x98f5('0xd')](_0x98f5('0xe'),_0x5869ee,_0x98f5('0xf'));logger['debug'](_0x98f5('0x10'),_0x5869ee,'request\x20sent',JSON['stringify'](_0x456329));if(_0x456329[_0x98f5('0x11')]){if(_0x456329[_0x98f5('0x11')]['code']===0x1f4){logger[_0x98f5('0x11')](_0x98f5('0xe'),_0x5869ee,_0x456329[_0x98f5('0x11')][_0x98f5('0x12')]);return _0x1cd8a8(_0x456329[_0x98f5('0x11')][_0x98f5('0x12')]);}logger['error'](_0x98f5('0xe'),_0x5869ee,_0x456329[_0x98f5('0x11')]['message']);return _0x109417(_0x456329[_0x98f5('0x11')][_0x98f5('0x12')]);}else{logger[_0x98f5('0xd')]('VtigerAccount,\x20%s,\x20%s',_0x5869ee,_0x98f5('0xf'));_0x109417(_0x456329[_0x98f5('0x13')][_0x98f5('0x12')]);}})['catch'](function(_0x440cfa){logger[_0x98f5('0x11')]('VtigerAccount,\x20%s,\x20%s',_0x5869ee,_0x440cfa);_0x1cd8a8(_0x440cfa);});});}exports[_0x98f5('0x14')]=function(_0x51a567){var _0x10c57c=this;return new Promise(function(_0x9e42dd,_0x2291d5){return db[_0x98f5('0x15')][_0x98f5('0x16')]({'raw':_0x51a567[_0x98f5('0x17')]?_0x51a567['options'][_0x98f5('0x18')]===undefined?!![]:![]:!![],'where':_0x51a567['options']?_0x51a567[_0x98f5('0x17')][_0x98f5('0x19')]||null:null,'attributes':_0x51a567['options']?_0x51a567[_0x98f5('0x17')][_0x98f5('0x1a')]||null:null,'limit':_0x51a567[_0x98f5('0x17')]?_0x51a567[_0x98f5('0x17')][_0x98f5('0x1b')]||null:null,'include':_0x51a567[_0x98f5('0x17')]?_0x51a567[_0x98f5('0x17')]['include']?_[_0x98f5('0x1c')](_0x51a567['options'][_0x98f5('0x1d')],function(_0x495889){return{'model':db[_0x495889[_0x98f5('0x1e')]],'as':_0x495889['as'],'attributes':_0x495889[_0x98f5('0x1a')],'include':_0x495889[_0x98f5('0x1d')]?_[_0x98f5('0x1c')](_0x495889[_0x98f5('0x1d')],function(_0x18052d){return{'model':db[_0x18052d[_0x98f5('0x1e')]],'as':_0x18052d['as'],'attributes':_0x18052d['attributes'],'include':_0x18052d[_0x98f5('0x1d')]?_[_0x98f5('0x1c')](_0x18052d['include'],function(_0x1a1c55){return{'model':db[_0x1a1c55[_0x98f5('0x1e')]],'as':_0x1a1c55['as'],'attributes':_0x1a1c55[_0x98f5('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x98f5('0x1f')](function(_0x230d1b){logger[_0x98f5('0xd')](_0x98f5('0x14'),_0x51a567);logger[_0x98f5('0x20')]('GetVtigerAccount',_0x51a567,JSON['stringify'](_0x230d1b));_0x9e42dd(_0x230d1b);})[_0x98f5('0x21')](function(_0x71661e){logger[_0x98f5('0x11')](_0x98f5('0x14'),_0x71661e[_0x98f5('0x12')],_0x51a567);_0x2291d5(_0x10c57c[_0x98f5('0x11')](0x1f4,_0x71661e['message']));});});};exports[_0x98f5('0x22')]=function(_0x6d7418){var _0x7a922b=this;return new Promise(function(_0xd20823,_0x1e7138){return db[_0x98f5('0x15')]['find']({'raw':_0x6d7418[_0x98f5('0x17')]?_0x6d7418[_0x98f5('0x17')][_0x98f5('0x18')]===undefined?!![]:![]:!![],'where':_0x6d7418[_0x98f5('0x17')]?_0x6d7418['options'][_0x98f5('0x19')]||null:null,'attributes':_0x6d7418[_0x98f5('0x17')]?_0x6d7418[_0x98f5('0x17')][_0x98f5('0x1a')]||null:null,'include':_0x6d7418[_0x98f5('0x17')]?_0x6d7418[_0x98f5('0x17')][_0x98f5('0x1d')]?_[_0x98f5('0x1c')](_0x6d7418[_0x98f5('0x17')][_0x98f5('0x1d')],function(_0x12d874){return{'model':db[_0x12d874[_0x98f5('0x1e')]],'as':_0x12d874['as'],'attributes':_0x12d874[_0x98f5('0x1a')],'include':_0x12d874[_0x98f5('0x1d')]?_[_0x98f5('0x1c')](_0x12d874[_0x98f5('0x1d')],function(_0x2227f1){return{'model':db[_0x2227f1[_0x98f5('0x1e')]],'as':_0x2227f1['as'],'attributes':_0x2227f1[_0x98f5('0x1a')],'include':_0x2227f1[_0x98f5('0x1d')]?_['map'](_0x2227f1[_0x98f5('0x1d')],function(_0x4aba7a){return{'model':db[_0x4aba7a['model']],'as':_0x4aba7a['as'],'attributes':_0x4aba7a[_0x98f5('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x98f5('0x1f')](function(_0x65c03b){logger[_0x98f5('0xd')]('ShowVtigerAccount',_0x6d7418);logger[_0x98f5('0x20')](_0x98f5('0x22'),_0x6d7418,JSON[_0x98f5('0x23')](_0x65c03b));_0xd20823(_0x65c03b);})['catch'](function(_0x17bfe2){logger[_0x98f5('0x11')]('ShowVtigerAccount',_0x17bfe2[_0x98f5('0x12')],_0x6d7418);_0x1e7138(_0x7a922b[_0x98f5('0x11')](0x1f4,_0x17bfe2[_0x98f5('0x12')]));});});};
\ No newline at end of file
index dedb6d8..a486dd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf82=['update','delete','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','getFields','/:id/subjects','getSubjects','getDescriptions','post','create','put','/:id'];(function(_0x5bc458,_0x288f6b){var _0xb96bf9=function(_0x7e0820){while(--_0x7e0820){_0x5bc458['push'](_0x5bc458['shift']());}};_0xb96bf9(++_0x288f6b);}(_0xdf82,0x1b3));var _0x2df8=function(_0x507ca1,_0x489375){_0x507ca1=_0x507ca1-0x0;var _0x2bbb60=_0xdf82[_0x507ca1];return _0x2bbb60;};'use strict';var multer=require(_0x2df8('0x0'));var util=require(_0x2df8('0x1'));var path=require('path');var timeout=require(_0x2df8('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x2df8('0x3'));var auth=require(_0x2df8('0x4'));var interaction=require(_0x2df8('0x5'));var config=require(_0x2df8('0x6'));var controller=require(_0x2df8('0x7'));router[_0x2df8('0x8')]('/',auth[_0x2df8('0x9')](),controller[_0x2df8('0xa')]);router['get']('/:id',auth[_0x2df8('0x9')](),controller[_0x2df8('0xb')]);router[_0x2df8('0x8')](_0x2df8('0xc'),auth[_0x2df8('0x9')](),controller[_0x2df8('0xd')]);router['get'](_0x2df8('0xe'),auth[_0x2df8('0x9')](),controller[_0x2df8('0xf')]);router['get']('/:id/descriptions',auth[_0x2df8('0x9')](),controller[_0x2df8('0x10')]);router[_0x2df8('0x11')]('/',auth[_0x2df8('0x9')](),controller[_0x2df8('0x12')]);router[_0x2df8('0x13')](_0x2df8('0x14'),auth[_0x2df8('0x9')](),controller[_0x2df8('0x15')]);router[_0x2df8('0x16')]('/:id',auth[_0x2df8('0x9')](),controller['destroy']);module[_0x2df8('0x17')]=router;
\ No newline at end of file
+var _0x10cc=['/:id/fields','getFields','/:id/subjects','getSubjects','create','/:id','update','delete','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show'];(function(_0x43b88c,_0x46fb04){var _0x407299=function(_0x16dcd3){while(--_0x16dcd3){_0x43b88c['push'](_0x43b88c['shift']());}};_0x407299(++_0x46fb04);}(_0x10cc,0x143));var _0xc10c=function(_0x5a8349,_0x2d611c){_0x5a8349=_0x5a8349-0x0;var _0x1bff84=_0x10cc[_0x5a8349];return _0x1bff84;};'use strict';var multer=require(_0xc10c('0x0'));var util=require(_0xc10c('0x1'));var path=require(_0xc10c('0x2'));var timeout=require('connect-timeout');var express=require(_0xc10c('0x3'));var router=express[_0xc10c('0x4')]();var fs_extra=require(_0xc10c('0x5'));var auth=require(_0xc10c('0x6'));var interaction=require(_0xc10c('0x7'));var config=require(_0xc10c('0x8'));var controller=require('./intVtigerConfiguration.controller');router[_0xc10c('0x9')]('/',auth[_0xc10c('0xa')](),controller[_0xc10c('0xb')]);router[_0xc10c('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xc10c('0xc')]);router[_0xc10c('0x9')](_0xc10c('0xd'),auth[_0xc10c('0xa')](),controller[_0xc10c('0xe')]);router[_0xc10c('0x9')](_0xc10c('0xf'),auth[_0xc10c('0xa')](),controller[_0xc10c('0x10')]);router['get']('/:id/descriptions',auth[_0xc10c('0xa')](),controller['getDescriptions']);router['post']('/',auth['isAuthenticated'](),controller[_0xc10c('0x11')]);router['put'](_0xc10c('0x12'),auth[_0xc10c('0xa')](),controller[_0xc10c('0x13')]);router[_0xc10c('0x14')](_0xc10c('0x12'),auth[_0xc10c('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 86e1d44..b468841 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec06=['sequelize','exports','STRING'];(function(_0x6937af,_0x1e6e2c){var _0x1a3e5f=function(_0x14c1a5){while(--_0x14c1a5){_0x6937af['push'](_0x6937af['shift']());}};_0x1a3e5f(++_0x1e6e2c);}(_0xec06,0xd8));var _0x6ec0=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xec06[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0x6ec0('0x0'));module[_0x6ec0('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x6ec0('0x2')]}};
\ No newline at end of file
+var _0xc335=['exports','STRING'];(function(_0x593c41,_0x5bb5a0){var _0x5d5da1=function(_0x48f9fa){while(--_0x48f9fa){_0x593c41['push'](_0x593c41['shift']());}};_0x5d5da1(++_0x5bb5a0);}(_0xc335,0x17c));var _0x5c33=function(_0x5601b3,_0x152d6f){_0x5601b3=_0x5601b3-0x0;var _0x1269f4=_0xc335[_0x5601b3];return _0x1269f4;};'use strict';var Sequelize=require('sequelize');module[_0x5c33('0x0')]={'name':{'type':Sequelize[_0x5c33('0x1')]},'description':{'type':Sequelize[_0x5c33('0x1')]}};
\ No newline at end of file
index 2f59ab9..5e405ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6985=['order','where','filters','pick','filter','VIRTUAL','merge','include','catch','params','keys','length','includeAll','find','create','body','destroy','getFields','findOne','VtigerField','sort','options','nolimit','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','offset','undefined','limit','count','status','set','reject','save','update','then','error','stack','name','send','VtigerConfiguration','rawAttributes','fieldName','type','key','model','map','query','intersection','fields','attributes','hasOwnProperty'];(function(_0x2828df,_0x740896){var _0x490604=function(_0x10ffb2){while(--_0x10ffb2){_0x2828df['push'](_0x2828df['shift']());}};_0x490604(++_0x740896);}(_0x6985,0x67));var _0x5698=function(_0x5a35ab,_0x43baa7){_0x5a35ab=_0x5a35ab-0x0;var _0x21d102=_0x6985[_0x5a35ab];return _0x21d102;};'use strict';var emlformat=require(_0x5698('0x0'));var rimraf=require(_0x5698('0x1'));var zipdir=require(_0x5698('0x2'));var jsonpatch=require(_0x5698('0x3'));var rp=require(_0x5698('0x4'));var moment=require(_0x5698('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x5698('0x6'));var util=require(_0x5698('0x7'));var path=require(_0x5698('0x8'));var sox=require(_0x5698('0x9'));var csv=require('to-csv');var ejs=require(_0x5698('0xa'));var fs=require('fs');var fs_extra=require(_0x5698('0xb'));var _=require(_0x5698('0xc'));var squel=require(_0x5698('0xd'));var crypto=require(_0x5698('0xe'));var jsforce=require(_0x5698('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x5698('0x10'));var querystring=require(_0x5698('0x11'));var Papa=require(_0x5698('0x12'));var Redis=require(_0x5698('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x5698('0x14'));var as=require(_0x5698('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x5698('0x16'));var licenseUtil=require(_0x5698('0x17'));var db=require(_0x5698('0x18'))['db'];function respondWithStatusCode(_0xc34166,_0x4c3044){_0x4c3044=_0x4c3044||0xcc;return function(_0xf06f06){if(_0xf06f06){return _0xc34166[_0x5698('0x19')](_0x4c3044);}return _0xc34166['status'](_0x4c3044)[_0x5698('0x1a')]();};}function respondWithResult(_0x181be8,_0x2563b7){_0x2563b7=_0x2563b7||0xc8;return function(_0x2ff1f4){if(_0x2ff1f4){return _0x181be8['status'](_0x2563b7)['json'](_0x2ff1f4);}};}function respondWithFilteredResult(_0x34e336,_0x5ea018){return function(_0x3aa8e0){if(_0x3aa8e0){var _0x271a7f=typeof _0x5ea018[_0x5698('0x1b')]===_0x5698('0x1c')&&typeof _0x5ea018[_0x5698('0x1d')]===_0x5698('0x1c');var _0x1555c0=_0x3aa8e0[_0x5698('0x1e')];var _0x920be0=_0x271a7f?0x0:_0x5ea018[_0x5698('0x1b')];var _0x3f7a98=_0x271a7f?_0x3aa8e0[_0x5698('0x1e')]:_0x5ea018[_0x5698('0x1b')]+_0x5ea018['limit'];var _0x6d9b42;if(_0x3f7a98>=_0x1555c0){_0x3f7a98=_0x1555c0;_0x6d9b42=0xc8;}else{_0x6d9b42=0xce;}_0x34e336[_0x5698('0x1f')](_0x6d9b42);return _0x34e336[_0x5698('0x20')]('Content-Range',_0x920be0+'-'+_0x3f7a98+'/'+_0x1555c0)['json'](_0x3aa8e0);}return null;};}function patchUpdates(_0xb54f35){return function(_0x40d20e){try{jsonpatch['apply'](_0x40d20e,_0xb54f35,!![]);}catch(_0x4857b3){return BPromise[_0x5698('0x21')](_0x4857b3);}return _0x40d20e[_0x5698('0x22')]();};}function saveUpdates(_0x45d44a,_0x18bc24){return function(_0x6079d6){if(_0x6079d6){return _0x6079d6[_0x5698('0x23')](_0x45d44a)[_0x5698('0x24')](function(_0x102b34){return _0x102b34;});}return null;};}function removeEntity(_0x14fa0a,_0x22a862){return function(_0x3baa40){if(_0x3baa40){return _0x3baa40['destroy']()['then'](function(){_0x14fa0a[_0x5698('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4bb0c7,_0x2e496e){return function(_0x53e77a){if(!_0x53e77a){_0x4bb0c7['sendStatus'](0x194);}return _0x53e77a;};}function handleError(_0x54cf0b,_0x31b4ad){_0x31b4ad=_0x31b4ad||0x1f4;return function(_0x28d630){logger[_0x5698('0x25')](_0x28d630[_0x5698('0x26')]);if(_0x28d630['name']){delete _0x28d630[_0x5698('0x27')];}_0x54cf0b[_0x5698('0x1f')](_0x31b4ad)[_0x5698('0x28')](_0x28d630);};}exports['index']=function(_0x58e9bb,_0x36177e){var _0x503262={},_0xfea92c={},_0x5aaa3a={'count':0x0,'rows':[]};var _0x28c8c4=_['map'](db[_0x5698('0x29')][_0x5698('0x2a')],function(_0x35692b){return{'name':_0x35692b[_0x5698('0x2b')],'type':_0x35692b[_0x5698('0x2c')][_0x5698('0x2d')]};});_0xfea92c[_0x5698('0x2e')]=_[_0x5698('0x2f')](_0x28c8c4,_0x5698('0x27'));_0xfea92c[_0x5698('0x30')]=_['keys'](_0x58e9bb[_0x5698('0x30')]);_0xfea92c['filters']=_[_0x5698('0x31')](_0xfea92c[_0x5698('0x2e')],_0xfea92c['query']);_0x503262['attributes']=_['intersection'](_0xfea92c[_0x5698('0x2e')],qs[_0x5698('0x32')](_0x58e9bb['query'][_0x5698('0x32')]));_0x503262[_0x5698('0x33')]=_0x503262[_0x5698('0x33')]['length']?_0x503262[_0x5698('0x33')]:_0xfea92c[_0x5698('0x2e')];if(!_0x58e9bb[_0x5698('0x30')][_0x5698('0x34')]('nolimit')){_0x503262[_0x5698('0x1d')]=qs[_0x5698('0x1d')](_0x58e9bb[_0x5698('0x30')][_0x5698('0x1d')]);_0x503262[_0x5698('0x1b')]=qs[_0x5698('0x1b')](_0x58e9bb['query'][_0x5698('0x1b')]);}_0x503262[_0x5698('0x35')]=qs['sort'](_0x58e9bb['query']['sort']);_0x503262[_0x5698('0x36')]=qs[_0x5698('0x37')](_[_0x5698('0x38')](_0x58e9bb['query'],_0xfea92c[_0x5698('0x37')]),_0x28c8c4);if(_0x58e9bb[_0x5698('0x30')][_0x5698('0x39')]){_0x503262[_0x5698('0x36')]=_['merge'](_0x503262['where'],{'$or':_[_0x5698('0x2f')](_0x28c8c4,function(_0x739766){if(_0x739766['type']!==_0x5698('0x3a')){var _0x1f9142={};_0x1f9142[_0x739766[_0x5698('0x27')]]={'$like':'%'+_0x58e9bb['query'][_0x5698('0x39')]+'%'};return _0x1f9142;}})});}_0x503262=_[_0x5698('0x3b')]({},_0x503262,_0x58e9bb['options']);var _0x2acb4a={'where':_0x503262[_0x5698('0x36')]};return db[_0x5698('0x29')]['count'](_0x2acb4a)[_0x5698('0x24')](function(_0xea48d1){_0x5aaa3a['count']=_0xea48d1;if(_0x58e9bb['query']['includeAll']){_0x503262[_0x5698('0x3c')]=[{'all':!![]}];}return db[_0x5698('0x29')]['findAll'](_0x503262);})[_0x5698('0x24')](function(_0x50a5ef){_0x5aaa3a['rows']=_0x50a5ef;return _0x5aaa3a;})[_0x5698('0x24')](respondWithFilteredResult(_0x36177e,_0x503262))[_0x5698('0x3d')](handleError(_0x36177e,null));};exports['show']=function(_0x48343b,_0x5151ea){var _0xc107a9={'raw':![],'where':{'id':_0x48343b[_0x5698('0x3e')]['id']}},_0x40ff8e={};_0x40ff8e[_0x5698('0x2e')]=_[_0x5698('0x3f')](db[_0x5698('0x29')][_0x5698('0x2a')]);_0x40ff8e[_0x5698('0x30')]=_['keys'](_0x48343b[_0x5698('0x30')]);_0x40ff8e[_0x5698('0x37')]=_[_0x5698('0x31')](_0x40ff8e[_0x5698('0x2e')],_0x40ff8e['query']);_0xc107a9[_0x5698('0x33')]=_[_0x5698('0x31')](_0x40ff8e[_0x5698('0x2e')],qs[_0x5698('0x32')](_0x48343b[_0x5698('0x30')][_0x5698('0x32')]));_0xc107a9[_0x5698('0x33')]=_0xc107a9[_0x5698('0x33')][_0x5698('0x40')]?_0xc107a9[_0x5698('0x33')]:_0x40ff8e[_0x5698('0x2e')];if(_0x48343b[_0x5698('0x30')][_0x5698('0x41')]){_0xc107a9['include']=[{'all':!![]}];}_0xc107a9=_[_0x5698('0x3b')]({},_0xc107a9,_0x48343b['options']);return db[_0x5698('0x29')][_0x5698('0x42')](_0xc107a9)[_0x5698('0x24')](handleEntityNotFound(_0x5151ea,null))[_0x5698('0x24')](respondWithResult(_0x5151ea,null))['catch'](handleError(_0x5151ea,null));};exports['create']=function(_0x4e1dd5,_0x135039){return db[_0x5698('0x29')][_0x5698('0x43')](_0x4e1dd5['body'],{})[_0x5698('0x24')](respondWithResult(_0x135039,0xc9))[_0x5698('0x3d')](handleError(_0x135039,null));};exports['update']=function(_0x57ca1c,_0x1dcccd){if(_0x57ca1c[_0x5698('0x44')]['id']){delete _0x57ca1c['body']['id'];}return db[_0x5698('0x29')]['find']({'where':{'id':_0x57ca1c[_0x5698('0x3e')]['id']}})[_0x5698('0x24')](handleEntityNotFound(_0x1dcccd,null))['then'](saveUpdates(_0x57ca1c[_0x5698('0x44')],null))[_0x5698('0x24')](respondWithResult(_0x1dcccd,null))[_0x5698('0x3d')](handleError(_0x1dcccd,null));};exports[_0x5698('0x45')]=function(_0x1ed756,_0x26f02c){return db[_0x5698('0x29')][_0x5698('0x42')]({'where':{'id':_0x1ed756[_0x5698('0x3e')]['id']}})[_0x5698('0x24')](handleEntityNotFound(_0x26f02c,null))[_0x5698('0x24')](removeEntity(_0x26f02c,null))['catch'](handleError(_0x26f02c,null));};exports[_0x5698('0x46')]=function(_0x1947f7,_0x314164,_0x40dc13){var _0x471adf={};var _0x462853={};var _0x507967;var _0x1fdb86;return db[_0x5698('0x29')][_0x5698('0x47')]({'where':{'id':_0x1947f7['params']['id']}})[_0x5698('0x24')](handleEntityNotFound(_0x314164,null))[_0x5698('0x24')](function(_0x3033ab){if(_0x3033ab){_0x507967=_0x3033ab;_0x462853[_0x5698('0x2e')]=_[_0x5698('0x3f')](db[_0x5698('0x48')][_0x5698('0x2a')]);_0x462853[_0x5698('0x30')]=_[_0x5698('0x3f')](_0x1947f7[_0x5698('0x30')]);_0x462853[_0x5698('0x37')]=_['intersection'](_0x462853[_0x5698('0x2e')],_0x462853['query']);_0x471adf[_0x5698('0x33')]=_[_0x5698('0x31')](_0x462853['model'],qs[_0x5698('0x32')](_0x1947f7[_0x5698('0x30')][_0x5698('0x32')]));_0x471adf[_0x5698('0x33')]=_0x471adf[_0x5698('0x33')][_0x5698('0x40')]?_0x471adf[_0x5698('0x33')]:_0x462853['model'];_0x471adf['order']=qs[_0x5698('0x49')](_0x1947f7[_0x5698('0x30')][_0x5698('0x49')]);_0x471adf[_0x5698('0x36')]=qs[_0x5698('0x37')](_[_0x5698('0x38')](_0x1947f7[_0x5698('0x30')],_0x462853[_0x5698('0x37')]));if(_0x1947f7[_0x5698('0x30')]['filter']){_0x471adf['where']=_[_0x5698('0x3b')](_0x471adf['where'],{'$or':_['map'](_0x471adf[_0x5698('0x33')],function(_0x59ca32){var _0x2353fa={};_0x2353fa[_0x59ca32]={'$like':'%'+_0x1947f7[_0x5698('0x30')][_0x5698('0x39')]+'%'};return _0x2353fa;})});}_0x471adf=_[_0x5698('0x3b')]({},_0x471adf,_0x1947f7[_0x5698('0x4a')]);return _0x507967[_0x5698('0x46')](_0x471adf);}})[_0x5698('0x24')](function(_0x774d9){if(_0x774d9){_0x1fdb86=_0x774d9[_0x5698('0x40')];if(!_0x1947f7['query']['hasOwnProperty'](_0x5698('0x4b'))){_0x471adf[_0x5698('0x1d')]=qs[_0x5698('0x1d')](_0x1947f7[_0x5698('0x30')]['limit']);_0x471adf[_0x5698('0x1b')]=qs[_0x5698('0x1b')](_0x1947f7[_0x5698('0x30')]['offset']);}return _0x507967['getFields'](_0x471adf);}})[_0x5698('0x24')](function(_0x3e53e4){if(_0x3e53e4){return _0x3e53e4?{'count':_0x1fdb86,'rows':_0x3e53e4}:null;}})[_0x5698('0x24')](respondWithResult(_0x314164,null))[_0x5698('0x3d')](handleError(_0x314164,null));};exports[_0x5698('0x4c')]=function(_0x1c3b5b,_0x3dbc27,_0x1fc222){var _0x1e4fe1={};var _0x229ce1={};var _0x34cb1d;var _0x18cd47;return db[_0x5698('0x29')][_0x5698('0x47')]({'where':{'id':_0x1c3b5b[_0x5698('0x3e')]['id']}})[_0x5698('0x24')](handleEntityNotFound(_0x3dbc27,null))[_0x5698('0x24')](function(_0x1bfac4){if(_0x1bfac4){_0x34cb1d=_0x1bfac4;_0x229ce1[_0x5698('0x2e')]=_[_0x5698('0x3f')](db[_0x5698('0x48')][_0x5698('0x2a')]);_0x229ce1[_0x5698('0x30')]=_[_0x5698('0x3f')](_0x1c3b5b['query']);_0x229ce1['filters']=_[_0x5698('0x31')](_0x229ce1[_0x5698('0x2e')],_0x229ce1[_0x5698('0x30')]);_0x1e4fe1[_0x5698('0x33')]=_[_0x5698('0x31')](_0x229ce1[_0x5698('0x2e')],qs['fields'](_0x1c3b5b[_0x5698('0x30')][_0x5698('0x32')]));_0x1e4fe1[_0x5698('0x33')]=_0x1e4fe1[_0x5698('0x33')][_0x5698('0x40')]?_0x1e4fe1[_0x5698('0x33')]:_0x229ce1[_0x5698('0x2e')];_0x1e4fe1[_0x5698('0x35')]=qs[_0x5698('0x49')](_0x1c3b5b[_0x5698('0x30')]['sort']);_0x1e4fe1[_0x5698('0x36')]=qs['filters'](_[_0x5698('0x38')](_0x1c3b5b[_0x5698('0x30')],_0x229ce1[_0x5698('0x37')]));if(_0x1c3b5b[_0x5698('0x30')][_0x5698('0x39')]){_0x1e4fe1[_0x5698('0x36')]=_[_0x5698('0x3b')](_0x1e4fe1['where'],{'$or':_[_0x5698('0x2f')](_0x1e4fe1['attributes'],function(_0x2f64ec){var _0x3ce3e0={};_0x3ce3e0[_0x2f64ec]={'$like':'%'+_0x1c3b5b[_0x5698('0x30')][_0x5698('0x39')]+'%'};return _0x3ce3e0;})});}_0x1e4fe1=_['merge']({},_0x1e4fe1,_0x1c3b5b['options']);return _0x34cb1d['getSubjects'](_0x1e4fe1);}})[_0x5698('0x24')](function(_0x75b427){if(_0x75b427){_0x18cd47=_0x75b427[_0x5698('0x40')];if(!_0x1c3b5b[_0x5698('0x30')]['hasOwnProperty']('nolimit')){_0x1e4fe1[_0x5698('0x1d')]=qs[_0x5698('0x1d')](_0x1c3b5b['query']['limit']);_0x1e4fe1[_0x5698('0x1b')]=qs[_0x5698('0x1b')](_0x1c3b5b[_0x5698('0x30')][_0x5698('0x1b')]);}return _0x34cb1d[_0x5698('0x4c')](_0x1e4fe1);}})[_0x5698('0x24')](function(_0x4214bc){if(_0x4214bc){return _0x4214bc?{'count':_0x18cd47,'rows':_0x4214bc}:null;}})[_0x5698('0x24')](respondWithResult(_0x3dbc27,null))['catch'](handleError(_0x3dbc27,null));};exports['getDescriptions']=function(_0x390e60,_0x1ce4d9,_0x2b63da){var _0x475d08={};var _0x27c9cd={};var _0x3a573e;var _0x5cfdd3;return db[_0x5698('0x29')][_0x5698('0x47')]({'where':{'id':_0x390e60[_0x5698('0x3e')]['id']}})[_0x5698('0x24')](handleEntityNotFound(_0x1ce4d9,null))['then'](function(_0x5e63e2){if(_0x5e63e2){_0x3a573e=_0x5e63e2;_0x27c9cd[_0x5698('0x2e')]=_['keys'](db[_0x5698('0x48')][_0x5698('0x2a')]);_0x27c9cd[_0x5698('0x30')]=_[_0x5698('0x3f')](_0x390e60[_0x5698('0x30')]);_0x27c9cd['filters']=_[_0x5698('0x31')](_0x27c9cd['model'],_0x27c9cd['query']);_0x475d08['attributes']=_[_0x5698('0x31')](_0x27c9cd['model'],qs[_0x5698('0x32')](_0x390e60[_0x5698('0x30')][_0x5698('0x32')]));_0x475d08['attributes']=_0x475d08['attributes'][_0x5698('0x40')]?_0x475d08[_0x5698('0x33')]:_0x27c9cd[_0x5698('0x2e')];_0x475d08[_0x5698('0x35')]=qs[_0x5698('0x49')](_0x390e60['query'][_0x5698('0x49')]);_0x475d08[_0x5698('0x36')]=qs[_0x5698('0x37')](_['pick'](_0x390e60[_0x5698('0x30')],_0x27c9cd[_0x5698('0x37')]));if(_0x390e60['query']['filter']){_0x475d08[_0x5698('0x36')]=_['merge'](_0x475d08[_0x5698('0x36')],{'$or':_[_0x5698('0x2f')](_0x475d08[_0x5698('0x33')],function(_0x313098){var _0x49de71={};_0x49de71[_0x313098]={'$like':'%'+_0x390e60[_0x5698('0x30')][_0x5698('0x39')]+'%'};return _0x49de71;})});}_0x475d08=_[_0x5698('0x3b')]({},_0x475d08,_0x390e60[_0x5698('0x4a')]);return _0x3a573e[_0x5698('0x4d')](_0x475d08);}})[_0x5698('0x24')](function(_0x198ec1){if(_0x198ec1){_0x5cfdd3=_0x198ec1[_0x5698('0x40')];if(!_0x390e60[_0x5698('0x30')][_0x5698('0x34')](_0x5698('0x4b'))){_0x475d08['limit']=qs[_0x5698('0x1d')](_0x390e60['query'][_0x5698('0x1d')]);_0x475d08[_0x5698('0x1b')]=qs['offset'](_0x390e60[_0x5698('0x30')]['offset']);}return _0x3a573e[_0x5698('0x4d')](_0x475d08);}})[_0x5698('0x24')](function(_0x1e7722){if(_0x1e7722){return _0x1e7722?{'count':_0x5cfdd3,'rows':_0x1e7722}:null;}})[_0x5698('0x24')](respondWithResult(_0x1ce4d9,null))[_0x5698('0x3d')](handleError(_0x1ce4d9,null));};
\ No newline at end of file
+var _0xe5b0=['merge','includeAll','include','rows','catch','show','params','keys','find','create','body','findOne','VtigerField','order','options','getFields','getSubjects','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','destroy','then','end','stack','name','send','index','VtigerConfiguration','rawAttributes','fieldName','key','model','map','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter'];(function(_0x1fb4a0,_0x48a602){var _0x1094e7=function(_0x25fcd5){while(--_0x25fcd5){_0x1fb4a0['push'](_0x1fb4a0['shift']());}};_0x1094e7(++_0x48a602);}(_0xe5b0,0x156));var _0x0e5b=function(_0x5b9619,_0x4aed16){_0x5b9619=_0x5b9619-0x0;var _0x338e7a=_0xe5b0[_0x5b9619];return _0x338e7a;};'use strict';var emlformat=require(_0x0e5b('0x0'));var rimraf=require(_0x0e5b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0e5b('0x2'));var rp=require(_0x0e5b('0x3'));var moment=require(_0x0e5b('0x4'));var BPromise=require(_0x0e5b('0x5'));var Mustache=require(_0x0e5b('0x6'));var util=require(_0x0e5b('0x7'));var path=require(_0x0e5b('0x8'));var sox=require(_0x0e5b('0x9'));var csv=require(_0x0e5b('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0e5b('0xb'));var _=require(_0x0e5b('0xc'));var squel=require(_0x0e5b('0xd'));var crypto=require(_0x0e5b('0xe'));var jsforce=require(_0x0e5b('0xf'));var deskjs=require(_0x0e5b('0x10'));var toCsv=require(_0x0e5b('0xa'));var querystring=require(_0x0e5b('0x11'));var Papa=require(_0x0e5b('0x12'));var Redis=require('ioredis');var authService=require(_0x0e5b('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x0e5b('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0e5b('0x15'))(_0x0e5b('0x16'));var utils=require(_0x0e5b('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x0e5b('0x18'));var db=require(_0x0e5b('0x19'))['db'];function respondWithStatusCode(_0x39f8c1,_0x5f45a7){_0x5f45a7=_0x5f45a7||0xcc;return function(_0xf8631c){if(_0xf8631c){return _0x39f8c1[_0x0e5b('0x1a')](_0x5f45a7);}return _0x39f8c1[_0x0e5b('0x1b')](_0x5f45a7)['end']();};}function respondWithResult(_0x357ba6,_0x69f9e9){_0x69f9e9=_0x69f9e9||0xc8;return function(_0x28b3d8){if(_0x28b3d8){return _0x357ba6['status'](_0x69f9e9)[_0x0e5b('0x1c')](_0x28b3d8);}};}function respondWithFilteredResult(_0x5a0e8e,_0x468f9b){return function(_0xb5ffd1){if(_0xb5ffd1){var _0x543850=typeof _0x468f9b['offset']===_0x0e5b('0x1d')&&typeof _0x468f9b[_0x0e5b('0x1e')]==='undefined';var _0x509dc3=_0xb5ffd1[_0x0e5b('0x1f')];var _0x44d3ca=_0x543850?0x0:_0x468f9b['offset'];var _0x199278=_0x543850?_0xb5ffd1[_0x0e5b('0x1f')]:_0x468f9b[_0x0e5b('0x20')]+_0x468f9b[_0x0e5b('0x1e')];var _0x3e6bf9;if(_0x199278>=_0x509dc3){_0x199278=_0x509dc3;_0x3e6bf9=0xc8;}else{_0x3e6bf9=0xce;}_0x5a0e8e['status'](_0x3e6bf9);return _0x5a0e8e[_0x0e5b('0x21')](_0x0e5b('0x22'),_0x44d3ca+'-'+_0x199278+'/'+_0x509dc3)[_0x0e5b('0x1c')](_0xb5ffd1);}return null;};}function patchUpdates(_0xc75cfa){return function(_0x476c3d){try{jsonpatch[_0x0e5b('0x23')](_0x476c3d,_0xc75cfa,!![]);}catch(_0x2aa820){return BPromise[_0x0e5b('0x24')](_0x2aa820);}return _0x476c3d['save']();};}function saveUpdates(_0x3f086e,_0x5a8480){return function(_0x31383f){if(_0x31383f){return _0x31383f[_0x0e5b('0x25')](_0x3f086e)['then'](function(_0x340aa8){return _0x340aa8;});}return null;};}function removeEntity(_0x1f4486,_0x5b5b7f){return function(_0x31a2dd){if(_0x31a2dd){return _0x31a2dd[_0x0e5b('0x26')]()[_0x0e5b('0x27')](function(){_0x1f4486[_0x0e5b('0x1b')](0xcc)[_0x0e5b('0x28')]();});}};}function handleEntityNotFound(_0x21f609,_0x12c443){return function(_0x46b38e){if(!_0x46b38e){_0x21f609[_0x0e5b('0x1a')](0x194);}return _0x46b38e;};}function handleError(_0x3ce211,_0x532ecb){_0x532ecb=_0x532ecb||0x1f4;return function(_0x8389d9){logger['error'](_0x8389d9[_0x0e5b('0x29')]);if(_0x8389d9[_0x0e5b('0x2a')]){delete _0x8389d9[_0x0e5b('0x2a')];}_0x3ce211[_0x0e5b('0x1b')](_0x532ecb)[_0x0e5b('0x2b')](_0x8389d9);};}exports[_0x0e5b('0x2c')]=function(_0x56abea,_0x86ec60){var _0x475aed={},_0x57c087={},_0x55af0b={'count':0x0,'rows':[]};var _0x364f3d=_['map'](db[_0x0e5b('0x2d')][_0x0e5b('0x2e')],function(_0x1b5831){return{'name':_0x1b5831[_0x0e5b('0x2f')],'type':_0x1b5831['type'][_0x0e5b('0x30')]};});_0x57c087[_0x0e5b('0x31')]=_[_0x0e5b('0x32')](_0x364f3d,_0x0e5b('0x2a'));_0x57c087['query']=_['keys'](_0x56abea[_0x0e5b('0x33')]);_0x57c087['filters']=_[_0x0e5b('0x34')](_0x57c087[_0x0e5b('0x31')],_0x57c087[_0x0e5b('0x33')]);_0x475aed[_0x0e5b('0x35')]=_[_0x0e5b('0x34')](_0x57c087['model'],qs['fields'](_0x56abea[_0x0e5b('0x33')][_0x0e5b('0x36')]));_0x475aed[_0x0e5b('0x35')]=_0x475aed[_0x0e5b('0x35')][_0x0e5b('0x37')]?_0x475aed[_0x0e5b('0x35')]:_0x57c087[_0x0e5b('0x31')];if(!_0x56abea['query'][_0x0e5b('0x38')](_0x0e5b('0x39'))){_0x475aed[_0x0e5b('0x1e')]=qs[_0x0e5b('0x1e')](_0x56abea[_0x0e5b('0x33')][_0x0e5b('0x1e')]);_0x475aed[_0x0e5b('0x20')]=qs[_0x0e5b('0x20')](_0x56abea['query']['offset']);}_0x475aed['order']=qs[_0x0e5b('0x3a')](_0x56abea[_0x0e5b('0x33')]['sort']);_0x475aed[_0x0e5b('0x3b')]=qs[_0x0e5b('0x3c')](_[_0x0e5b('0x3d')](_0x56abea[_0x0e5b('0x33')],_0x57c087[_0x0e5b('0x3c')]),_0x364f3d);if(_0x56abea[_0x0e5b('0x33')][_0x0e5b('0x3e')]){_0x475aed[_0x0e5b('0x3b')]=_[_0x0e5b('0x3f')](_0x475aed[_0x0e5b('0x3b')],{'$or':_[_0x0e5b('0x32')](_0x364f3d,function(_0x1a8324){if(_0x1a8324['type']!=='VIRTUAL'){var _0x5e8984={};_0x5e8984[_0x1a8324['name']]={'$like':'%'+_0x56abea[_0x0e5b('0x33')]['filter']+'%'};return _0x5e8984;}})});}_0x475aed=_[_0x0e5b('0x3f')]({},_0x475aed,_0x56abea['options']);var _0x16f4d8={'where':_0x475aed['where']};return db[_0x0e5b('0x2d')][_0x0e5b('0x1f')](_0x16f4d8)[_0x0e5b('0x27')](function(_0x25c205){_0x55af0b[_0x0e5b('0x1f')]=_0x25c205;if(_0x56abea[_0x0e5b('0x33')][_0x0e5b('0x40')]){_0x475aed[_0x0e5b('0x41')]=[{'all':!![]}];}return db['VtigerConfiguration']['findAll'](_0x475aed);})[_0x0e5b('0x27')](function(_0x366284){_0x55af0b[_0x0e5b('0x42')]=_0x366284;return _0x55af0b;})[_0x0e5b('0x27')](respondWithFilteredResult(_0x86ec60,_0x475aed))[_0x0e5b('0x43')](handleError(_0x86ec60,null));};exports[_0x0e5b('0x44')]=function(_0x69d903,_0x5256d9){var _0x494e3d={'raw':![],'where':{'id':_0x69d903[_0x0e5b('0x45')]['id']}},_0x494c03={};_0x494c03['model']=_[_0x0e5b('0x46')](db[_0x0e5b('0x2d')][_0x0e5b('0x2e')]);_0x494c03[_0x0e5b('0x33')]=_[_0x0e5b('0x46')](_0x69d903[_0x0e5b('0x33')]);_0x494c03[_0x0e5b('0x3c')]=_['intersection'](_0x494c03['model'],_0x494c03['query']);_0x494e3d['attributes']=_[_0x0e5b('0x34')](_0x494c03[_0x0e5b('0x31')],qs['fields'](_0x69d903['query'][_0x0e5b('0x36')]));_0x494e3d['attributes']=_0x494e3d['attributes'][_0x0e5b('0x37')]?_0x494e3d[_0x0e5b('0x35')]:_0x494c03[_0x0e5b('0x31')];if(_0x69d903[_0x0e5b('0x33')][_0x0e5b('0x40')]){_0x494e3d[_0x0e5b('0x41')]=[{'all':!![]}];}_0x494e3d=_[_0x0e5b('0x3f')]({},_0x494e3d,_0x69d903['options']);return db['VtigerConfiguration'][_0x0e5b('0x47')](_0x494e3d)['then'](handleEntityNotFound(_0x5256d9,null))[_0x0e5b('0x27')](respondWithResult(_0x5256d9,null))[_0x0e5b('0x43')](handleError(_0x5256d9,null));};exports[_0x0e5b('0x48')]=function(_0x40fc14,_0x208fbb){return db[_0x0e5b('0x2d')][_0x0e5b('0x48')](_0x40fc14[_0x0e5b('0x49')],{})[_0x0e5b('0x27')](respondWithResult(_0x208fbb,0xc9))[_0x0e5b('0x43')](handleError(_0x208fbb,null));};exports[_0x0e5b('0x25')]=function(_0x42f3cf,_0xc9d09f){if(_0x42f3cf[_0x0e5b('0x49')]['id']){delete _0x42f3cf[_0x0e5b('0x49')]['id'];}return db['VtigerConfiguration'][_0x0e5b('0x47')]({'where':{'id':_0x42f3cf[_0x0e5b('0x45')]['id']}})['then'](handleEntityNotFound(_0xc9d09f,null))['then'](saveUpdates(_0x42f3cf[_0x0e5b('0x49')],null))[_0x0e5b('0x27')](respondWithResult(_0xc9d09f,null))['catch'](handleError(_0xc9d09f,null));};exports[_0x0e5b('0x26')]=function(_0x254950,_0xb326cd){return db[_0x0e5b('0x2d')]['find']({'where':{'id':_0x254950['params']['id']}})[_0x0e5b('0x27')](handleEntityNotFound(_0xb326cd,null))[_0x0e5b('0x27')](removeEntity(_0xb326cd,null))[_0x0e5b('0x43')](handleError(_0xb326cd,null));};exports['getFields']=function(_0x5f21a8,_0x54d1e8,_0x193001){var _0x136e09={};var _0x29021c={};var _0xb28c72;var _0x247bbd;return db[_0x0e5b('0x2d')][_0x0e5b('0x4a')]({'where':{'id':_0x5f21a8[_0x0e5b('0x45')]['id']}})[_0x0e5b('0x27')](handleEntityNotFound(_0x54d1e8,null))[_0x0e5b('0x27')](function(_0x1bc3e0){if(_0x1bc3e0){_0xb28c72=_0x1bc3e0;_0x29021c[_0x0e5b('0x31')]=_[_0x0e5b('0x46')](db[_0x0e5b('0x4b')][_0x0e5b('0x2e')]);_0x29021c[_0x0e5b('0x33')]=_[_0x0e5b('0x46')](_0x5f21a8[_0x0e5b('0x33')]);_0x29021c[_0x0e5b('0x3c')]=_[_0x0e5b('0x34')](_0x29021c[_0x0e5b('0x31')],_0x29021c['query']);_0x136e09[_0x0e5b('0x35')]=_[_0x0e5b('0x34')](_0x29021c[_0x0e5b('0x31')],qs[_0x0e5b('0x36')](_0x5f21a8[_0x0e5b('0x33')][_0x0e5b('0x36')]));_0x136e09[_0x0e5b('0x35')]=_0x136e09[_0x0e5b('0x35')][_0x0e5b('0x37')]?_0x136e09[_0x0e5b('0x35')]:_0x29021c['model'];_0x136e09[_0x0e5b('0x4c')]=qs[_0x0e5b('0x3a')](_0x5f21a8[_0x0e5b('0x33')][_0x0e5b('0x3a')]);_0x136e09['where']=qs[_0x0e5b('0x3c')](_['pick'](_0x5f21a8[_0x0e5b('0x33')],_0x29021c[_0x0e5b('0x3c')]));if(_0x5f21a8['query'][_0x0e5b('0x3e')]){_0x136e09[_0x0e5b('0x3b')]=_[_0x0e5b('0x3f')](_0x136e09[_0x0e5b('0x3b')],{'$or':_['map'](_0x136e09[_0x0e5b('0x35')],function(_0x11bcea){var _0x10adcb={};_0x10adcb[_0x11bcea]={'$like':'%'+_0x5f21a8[_0x0e5b('0x33')][_0x0e5b('0x3e')]+'%'};return _0x10adcb;})});}_0x136e09=_['merge']({},_0x136e09,_0x5f21a8[_0x0e5b('0x4d')]);return _0xb28c72[_0x0e5b('0x4e')](_0x136e09);}})[_0x0e5b('0x27')](function(_0x48f0fb){if(_0x48f0fb){_0x247bbd=_0x48f0fb[_0x0e5b('0x37')];if(!_0x5f21a8['query'][_0x0e5b('0x38')](_0x0e5b('0x39'))){_0x136e09[_0x0e5b('0x1e')]=qs['limit'](_0x5f21a8[_0x0e5b('0x33')]['limit']);_0x136e09[_0x0e5b('0x20')]=qs[_0x0e5b('0x20')](_0x5f21a8[_0x0e5b('0x33')][_0x0e5b('0x20')]);}return _0xb28c72['getFields'](_0x136e09);}})[_0x0e5b('0x27')](function(_0x4c6a32){if(_0x4c6a32){return _0x4c6a32?{'count':_0x247bbd,'rows':_0x4c6a32}:null;}})[_0x0e5b('0x27')](respondWithResult(_0x54d1e8,null))[_0x0e5b('0x43')](handleError(_0x54d1e8,null));};exports['getSubjects']=function(_0x334a35,_0x314257,_0x1a444d){var _0x547500={};var _0x473b1a={};var _0x4a30fb;var _0x1a1779;return db[_0x0e5b('0x2d')][_0x0e5b('0x4a')]({'where':{'id':_0x334a35['params']['id']}})[_0x0e5b('0x27')](handleEntityNotFound(_0x314257,null))[_0x0e5b('0x27')](function(_0x1208d1){if(_0x1208d1){_0x4a30fb=_0x1208d1;_0x473b1a['model']=_[_0x0e5b('0x46')](db[_0x0e5b('0x4b')][_0x0e5b('0x2e')]);_0x473b1a[_0x0e5b('0x33')]=_[_0x0e5b('0x46')](_0x334a35[_0x0e5b('0x33')]);_0x473b1a[_0x0e5b('0x3c')]=_[_0x0e5b('0x34')](_0x473b1a['model'],_0x473b1a[_0x0e5b('0x33')]);_0x547500['attributes']=_['intersection'](_0x473b1a[_0x0e5b('0x31')],qs[_0x0e5b('0x36')](_0x334a35[_0x0e5b('0x33')]['fields']));_0x547500[_0x0e5b('0x35')]=_0x547500['attributes']['length']?_0x547500['attributes']:_0x473b1a[_0x0e5b('0x31')];_0x547500['order']=qs['sort'](_0x334a35[_0x0e5b('0x33')][_0x0e5b('0x3a')]);_0x547500['where']=qs[_0x0e5b('0x3c')](_['pick'](_0x334a35['query'],_0x473b1a[_0x0e5b('0x3c')]));if(_0x334a35[_0x0e5b('0x33')][_0x0e5b('0x3e')]){_0x547500[_0x0e5b('0x3b')]=_[_0x0e5b('0x3f')](_0x547500[_0x0e5b('0x3b')],{'$or':_[_0x0e5b('0x32')](_0x547500[_0x0e5b('0x35')],function(_0x499d13){var _0x4d7ffa={};_0x4d7ffa[_0x499d13]={'$like':'%'+_0x334a35[_0x0e5b('0x33')]['filter']+'%'};return _0x4d7ffa;})});}_0x547500=_[_0x0e5b('0x3f')]({},_0x547500,_0x334a35[_0x0e5b('0x4d')]);return _0x4a30fb[_0x0e5b('0x4f')](_0x547500);}})['then'](function(_0x24af91){if(_0x24af91){_0x1a1779=_0x24af91[_0x0e5b('0x37')];if(!_0x334a35['query'][_0x0e5b('0x38')](_0x0e5b('0x39'))){_0x547500[_0x0e5b('0x1e')]=qs[_0x0e5b('0x1e')](_0x334a35[_0x0e5b('0x33')][_0x0e5b('0x1e')]);_0x547500[_0x0e5b('0x20')]=qs[_0x0e5b('0x20')](_0x334a35[_0x0e5b('0x33')]['offset']);}return _0x4a30fb[_0x0e5b('0x4f')](_0x547500);}})[_0x0e5b('0x27')](function(_0x140de4){if(_0x140de4){return _0x140de4?{'count':_0x1a1779,'rows':_0x140de4}:null;}})['then'](respondWithResult(_0x314257,null))[_0x0e5b('0x43')](handleError(_0x314257,null));};exports['getDescriptions']=function(_0x260da6,_0x4e7037,_0x20bc1f){var _0x31ac7b={};var _0x1d5fa8={};var _0x181ff2;var _0x4b8e73;return db['VtigerConfiguration'][_0x0e5b('0x4a')]({'where':{'id':_0x260da6[_0x0e5b('0x45')]['id']}})['then'](handleEntityNotFound(_0x4e7037,null))['then'](function(_0x129e19){if(_0x129e19){_0x181ff2=_0x129e19;_0x1d5fa8[_0x0e5b('0x31')]=_[_0x0e5b('0x46')](db[_0x0e5b('0x4b')]['rawAttributes']);_0x1d5fa8['query']=_[_0x0e5b('0x46')](_0x260da6[_0x0e5b('0x33')]);_0x1d5fa8[_0x0e5b('0x3c')]=_[_0x0e5b('0x34')](_0x1d5fa8[_0x0e5b('0x31')],_0x1d5fa8['query']);_0x31ac7b[_0x0e5b('0x35')]=_[_0x0e5b('0x34')](_0x1d5fa8[_0x0e5b('0x31')],qs[_0x0e5b('0x36')](_0x260da6[_0x0e5b('0x33')]['fields']));_0x31ac7b[_0x0e5b('0x35')]=_0x31ac7b[_0x0e5b('0x35')][_0x0e5b('0x37')]?_0x31ac7b[_0x0e5b('0x35')]:_0x1d5fa8[_0x0e5b('0x31')];_0x31ac7b[_0x0e5b('0x4c')]=qs[_0x0e5b('0x3a')](_0x260da6[_0x0e5b('0x33')]['sort']);_0x31ac7b[_0x0e5b('0x3b')]=qs[_0x0e5b('0x3c')](_[_0x0e5b('0x3d')](_0x260da6[_0x0e5b('0x33')],_0x1d5fa8[_0x0e5b('0x3c')]));if(_0x260da6['query'][_0x0e5b('0x3e')]){_0x31ac7b[_0x0e5b('0x3b')]=_[_0x0e5b('0x3f')](_0x31ac7b[_0x0e5b('0x3b')],{'$or':_['map'](_0x31ac7b['attributes'],function(_0x4fc48c){var _0xcf3f81={};_0xcf3f81[_0x4fc48c]={'$like':'%'+_0x260da6[_0x0e5b('0x33')][_0x0e5b('0x3e')]+'%'};return _0xcf3f81;})});}_0x31ac7b=_[_0x0e5b('0x3f')]({},_0x31ac7b,_0x260da6[_0x0e5b('0x4d')]);return _0x181ff2[_0x0e5b('0x50')](_0x31ac7b);}})['then'](function(_0x4662f5){if(_0x4662f5){_0x4b8e73=_0x4662f5['length'];if(!_0x260da6['query'][_0x0e5b('0x38')](_0x0e5b('0x39'))){_0x31ac7b[_0x0e5b('0x1e')]=qs['limit'](_0x260da6[_0x0e5b('0x33')][_0x0e5b('0x1e')]);_0x31ac7b['offset']=qs[_0x0e5b('0x20')](_0x260da6[_0x0e5b('0x33')][_0x0e5b('0x20')]);}return _0x181ff2[_0x0e5b('0x50')](_0x31ac7b);}})[_0x0e5b('0x27')](function(_0x2dd154){if(_0x2dd154){return _0x2dd154?{'count':_0x4b8e73,'rows':_0x2dd154}:null;}})[_0x0e5b('0x27')](respondWithResult(_0x4e7037,null))[_0x0e5b('0x43')](handleError(_0x4e7037,null));};
\ No newline at end of file
index abe6d25..cea992c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x395d=['rimraf','../../config/environment','./intVtigerConfiguration.attributes','VtigerConfiguration','int_vtiger_configurations','lodash','util','../../config/logger','moment','request-promise'];(function(_0xb1b986,_0x2ca8d8){var _0x4b7144=function(_0x43632c){while(--_0x43632c){_0xb1b986['push'](_0xb1b986['shift']());}};_0x4b7144(++_0x2ca8d8);}(_0x395d,0x1c7));var _0xd395=function(_0x4a4906,_0x33ada5){_0x4a4906=_0x4a4906-0x0;var _0x23607c=_0x395d[_0x4a4906];return _0x23607c;};'use strict';var _=require(_0xd395('0x0'));var util=require(_0xd395('0x1'));var logger=require(_0xd395('0x2'))('api');var moment=require(_0xd395('0x3'));var BPromise=require('bluebird');var rp=require(_0xd395('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd395('0x5'));var config=require(_0xd395('0x6'));var attributes=require(_0xd395('0x7'));module['exports']=function(_0x14029a,_0x28c930){return _0x14029a['define'](_0xd395('0x8'),attributes,{'tableName':_0xd395('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0569=['define','int_vtiger_configurations','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intVtigerConfiguration.attributes'];(function(_0x149dfc,_0x3c53df){var _0x4246ce=function(_0x159e35){while(--_0x159e35){_0x149dfc['push'](_0x149dfc['shift']());}};_0x4246ce(++_0x3c53df);}(_0x0569,0x146));var _0x9056=function(_0x4191bc,_0x3096c5){_0x4191bc=_0x4191bc-0x0;var _0x1ffd4e=_0x0569[_0x4191bc];return _0x1ffd4e;};'use strict';var _=require('lodash');var util=require(_0x9056('0x0'));var logger=require(_0x9056('0x1'))(_0x9056('0x2'));var moment=require(_0x9056('0x3'));var BPromise=require(_0x9056('0x4'));var rp=require(_0x9056('0x5'));var fs=require('fs');var path=require(_0x9056('0x6'));var rimraf=require(_0x9056('0x7'));var config=require(_0x9056('0x8'));var attributes=require(_0x9056('0x9'));module['exports']=function(_0x28a78e,_0x54c993){return _0x28a78e[_0x9056('0xa')]('VtigerConfiguration',attributes,{'tableName':_0x9056('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 82fb342..0b3ab19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe02=['result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x3b2f12,_0x1e7128){var _0x36a818=function(_0x5cca31){while(--_0x5cca31){_0x3b2f12['push'](_0x3b2f12['shift']());}};_0x36a818(++_0x1e7128);}(_0xfe02,0x1a4));var _0x2fe0=function(_0x4ce15c,_0x1bbcbd){_0x4ce15c=_0x4ce15c-0x0;var _0x5ee259=_0xfe02[_0x4ce15c];return _0x5ee259;};'use strict';var _=require(_0x2fe0('0x0'));var util=require(_0x2fe0('0x1'));var moment=require(_0x2fe0('0x2'));var BPromise=require(_0x2fe0('0x3'));var rs=require(_0x2fe0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2fe0('0x5'))['db'];var utils=require(_0x2fe0('0x6'));var logger=require(_0x2fe0('0x7'))(_0x2fe0('0x8'));var config=require(_0x2fe0('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x2fe0('0xa')][_0x2fe0('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x24ce50,_0x40d067,_0x257e66){return new BPromise(function(_0xa4be8f,_0x19552e){return client['request'](_0x24ce50,_0x257e66)['then'](function(_0xd7bffd){logger[_0x2fe0('0xc')](_0x2fe0('0xd'),_0x40d067,_0x2fe0('0xe'));logger[_0x2fe0('0xf')]('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x40d067,_0x2fe0('0xe'),JSON[_0x2fe0('0x10')](_0xd7bffd));if(_0xd7bffd[_0x2fe0('0x11')]){if(_0xd7bffd[_0x2fe0('0x11')][_0x2fe0('0x12')]===0x1f4){logger[_0x2fe0('0x11')](_0x2fe0('0xd'),_0x40d067,_0xd7bffd['error']['message']);return _0x19552e(_0xd7bffd[_0x2fe0('0x11')][_0x2fe0('0x13')]);}logger[_0x2fe0('0x11')](_0x2fe0('0xd'),_0x40d067,_0xd7bffd['error'][_0x2fe0('0x13')]);return _0xa4be8f(_0xd7bffd[_0x2fe0('0x11')][_0x2fe0('0x13')]);}else{logger['info'](_0x2fe0('0xd'),_0x40d067,'request\x20sent');_0xa4be8f(_0xd7bffd[_0x2fe0('0x14')][_0x2fe0('0x13')]);}})[_0x2fe0('0x15')](function(_0x4ae575){logger[_0x2fe0('0x11')](_0x2fe0('0xd'),_0x40d067,_0x4ae575);_0x19552e(_0x4ae575);});});}
\ No newline at end of file
+var _0x60e9=['jayson/promise','http','request','then','info','request\x20sent','debug','stringify','error','code','VtigerConfiguration,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x7c2035,_0x13334){var _0x50f5c1=function(_0x20a9b4){while(--_0x20a9b4){_0x7c2035['push'](_0x7c2035['shift']());}};_0x50f5c1(++_0x13334);}(_0x60e9,0x116));var _0x960e=function(_0x4305ac,_0x12e430){_0x4305ac=_0x4305ac-0x0;var _0xfdaae0=_0x60e9[_0x4305ac];return _0xfdaae0;};'use strict';var _=require(_0x960e('0x0'));var util=require(_0x960e('0x1'));var moment=require(_0x960e('0x2'));var BPromise=require('bluebird');var rs=require(_0x960e('0x3'));var fs=require('fs');var Redis=require(_0x960e('0x4'));var db=require(_0x960e('0x5'))['db'];var utils=require(_0x960e('0x6'));var logger=require(_0x960e('0x7'))(_0x960e('0x8'));var config=require(_0x960e('0x9'));var jayson=require(_0x960e('0xa'));var client=jayson['client'][_0x960e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xe954dd,_0x39d928,_0x4d63b7){return new BPromise(function(_0x3e9b41,_0x506c9e){return client[_0x960e('0xc')](_0xe954dd,_0x4d63b7)[_0x960e('0xd')](function(_0x599c84){logger[_0x960e('0xe')]('VtigerConfiguration,\x20%s,\x20%s',_0x39d928,_0x960e('0xf'));logger[_0x960e('0x10')]('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x39d928,_0x960e('0xf'),JSON[_0x960e('0x11')](_0x599c84));if(_0x599c84['error']){if(_0x599c84[_0x960e('0x12')][_0x960e('0x13')]===0x1f4){logger[_0x960e('0x12')](_0x960e('0x14'),_0x39d928,_0x599c84[_0x960e('0x12')][_0x960e('0x15')]);return _0x506c9e(_0x599c84[_0x960e('0x12')][_0x960e('0x15')]);}logger[_0x960e('0x12')](_0x960e('0x14'),_0x39d928,_0x599c84[_0x960e('0x12')]['message']);return _0x3e9b41(_0x599c84['error'][_0x960e('0x15')]);}else{logger[_0x960e('0xe')](_0x960e('0x14'),_0x39d928,_0x960e('0xf'));_0x3e9b41(_0x599c84[_0x960e('0x16')]['message']);}})[_0x960e('0x17')](function(_0x1b3660){logger[_0x960e('0x12')](_0x960e('0x14'),_0x39d928,_0x1b3660);_0x506c9e(_0x1b3660);});});}
\ No newline at end of file
index ad631f2..685885a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x079f=['destroy','exports','util','express','fs-extra','../../components/auth/service','../../config/environment','./intVtigerField.controller','index','get','isAuthenticated','show','post','create','put','/:id','update','delete'];(function(_0x2053ea,_0x1ab2d4){var _0x2232c4=function(_0x4230df){while(--_0x4230df){_0x2053ea['push'](_0x2053ea['shift']());}};_0x2232c4(++_0x1ab2d4);}(_0x079f,0x1b2));var _0xf079=function(_0x2825e4,_0x2dea1f){_0x2825e4=_0x2825e4-0x0;var _0x1e9d55=_0x079f[_0x2825e4];return _0x1e9d55;};'use strict';var multer=require('multer');var util=require(_0xf079('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xf079('0x1'));var router=express['Router']();var fs_extra=require(_0xf079('0x2'));var auth=require(_0xf079('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xf079('0x4'));var controller=require(_0xf079('0x5'));router['get']('/',auth['isAuthenticated'](),controller[_0xf079('0x6')]);router[_0xf079('0x7')]('/:id',auth[_0xf079('0x8')](),controller[_0xf079('0x9')]);router[_0xf079('0xa')]('/',auth[_0xf079('0x8')](),controller[_0xf079('0xb')]);router[_0xf079('0xc')](_0xf079('0xd'),auth['isAuthenticated'](),controller[_0xf079('0xe')]);router[_0xf079('0xf')]('/:id',auth[_0xf079('0x8')](),controller[_0xf079('0x10')]);module[_0xf079('0x11')]=router;
\ No newline at end of file
+var _0xaaf1=['exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerField.controller','get','isAuthenticated','index','show','post','create','put','/:id','update','delete','destroy'];(function(_0x55abd9,_0x1148af){var _0x3e5669=function(_0x6f2105){while(--_0x6f2105){_0x55abd9['push'](_0x55abd9['shift']());}};_0x3e5669(++_0x1148af);}(_0xaaf1,0x6a));var _0x1aaf=function(_0x2e0114,_0x15c885){_0x2e0114=_0x2e0114-0x0;var _0x50df1b=_0xaaf1[_0x2e0114];return _0x50df1b;};'use strict';var multer=require('multer');var util=require(_0x1aaf('0x0'));var path=require('path');var timeout=require(_0x1aaf('0x1'));var express=require(_0x1aaf('0x2'));var router=express[_0x1aaf('0x3')]();var fs_extra=require(_0x1aaf('0x4'));var auth=require(_0x1aaf('0x5'));var interaction=require(_0x1aaf('0x6'));var config=require(_0x1aaf('0x7'));var controller=require(_0x1aaf('0x8'));router[_0x1aaf('0x9')]('/',auth[_0x1aaf('0xa')](),controller[_0x1aaf('0xb')]);router[_0x1aaf('0x9')]('/:id',auth[_0x1aaf('0xa')](),controller[_0x1aaf('0xc')]);router[_0x1aaf('0xd')]('/',auth[_0x1aaf('0xa')](),controller[_0x1aaf('0xe')]);router[_0x1aaf('0xf')](_0x1aaf('0x10'),auth['isAuthenticated'](),controller[_0x1aaf('0x11')]);router[_0x1aaf('0x12')](_0x1aaf('0x10'),auth[_0x1aaf('0xa')](),controller[_0x1aaf('0x13')]);module[_0x1aaf('0x14')]=router;
\ No newline at end of file
index cdf1ef6..0304fa4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3432=['STRING','BOOLEAN','ENUM','string','variable','customVariable','picklist'];(function(_0x2a855b,_0x1c4cdc){var _0x1b5bbb=function(_0x2aebb9){while(--_0x2aebb9){_0x2a855b['push'](_0x2a855b['shift']());}};_0x1b5bbb(++_0x1c4cdc);}(_0x3432,0xa3));var _0x2343=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x3432[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x2343('0x0')](_0x2343('0x1'),_0x2343('0x2'),_0x2343('0x3'),'keyValue',_0x2343('0x4')),'defaultValue':'string'},'content':{'type':Sequelize[_0x2343('0x5')]},'key':{'type':Sequelize[_0x2343('0x5')]},'keyType':{'type':Sequelize[_0x2343('0x0')](_0x2343('0x1'),_0x2343('0x2'),_0x2343('0x3'))},'keyContent':{'type':Sequelize[_0x2343('0x5')]},'idField':{'type':Sequelize[_0x2343('0x5')]},'nameField':{'type':Sequelize[_0x2343('0x5')]},'customField':{'type':Sequelize[_0x2343('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xad53=['exports','ENUM','string','variable','customVariable','STRING','sequelize'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xad53,0xd1));var _0x3ad5=function(_0x3ea2ff,_0x148396){_0x3ea2ff=_0x3ea2ff-0x0;var _0x164122=_0xad53[_0x3ea2ff];return _0x164122;};'use strict';var Sequelize=require(_0x3ad5('0x0'));module[_0x3ad5('0x1')]={'type':{'type':Sequelize[_0x3ad5('0x2')](_0x3ad5('0x3'),_0x3ad5('0x4'),_0x3ad5('0x5'),'keyValue','picklist'),'defaultValue':_0x3ad5('0x3')},'content':{'type':Sequelize[_0x3ad5('0x6')]},'key':{'type':Sequelize[_0x3ad5('0x6')]},'keyType':{'type':Sequelize[_0x3ad5('0x2')]('string',_0x3ad5('0x4'),_0x3ad5('0x5'))},'keyContent':{'type':Sequelize[_0x3ad5('0x6')]},'idField':{'type':Sequelize[_0x3ad5('0x6')]},'nameField':{'type':Sequelize[_0x3ad5('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index ea301c4..b855f52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaac=['destroy','stack','name','send','index','map','VtigerField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','rows','show','includeAll','find','catch','create','body','params','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','to-csv','fs-extra','squel','crypto','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then'];(function(_0x16f8f7,_0x2cf94f){var _0x36d841=function(_0x2ecabf){while(--_0x2ecabf){_0x16f8f7['push'](_0x16f8f7['shift']());}};_0x36d841(++_0x2cf94f);}(_0xbaac,0x149));var _0xcbaa=function(_0x590b64,_0x231b9c){_0x590b64=_0x590b64-0x0;var _0x18d602=_0xbaac[_0x590b64];return _0x18d602;};'use strict';var emlformat=require(_0xcbaa('0x0'));var rimraf=require(_0xcbaa('0x1'));var zipdir=require(_0xcbaa('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xcbaa('0x3'));var moment=require(_0xcbaa('0x4'));var BPromise=require(_0xcbaa('0x5'));var Mustache=require(_0xcbaa('0x6'));var util=require(_0xcbaa('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xcbaa('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcbaa('0x9'));var _=require('lodash');var squel=require(_0xcbaa('0xa'));var crypto=require(_0xcbaa('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xcbaa('0x8'));var querystring=require(_0xcbaa('0xc'));var Papa=require('papaparse');var Redis=require(_0xcbaa('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xcbaa('0xe'));var as=require(_0xcbaa('0xf'));var hardwareService=require(_0xcbaa('0x10'));var logger=require('../../config/logger')(_0xcbaa('0x11'));var utils=require(_0xcbaa('0x12'));var config=require(_0xcbaa('0x13'));var licenseUtil=require(_0xcbaa('0x14'));var db=require(_0xcbaa('0x15'))['db'];function respondWithStatusCode(_0x4f6031,_0x4f05e0){_0x4f05e0=_0x4f05e0||0xcc;return function(_0x47c8c1){if(_0x47c8c1){return _0x4f6031[_0xcbaa('0x16')](_0x4f05e0);}return _0x4f6031[_0xcbaa('0x17')](_0x4f05e0)[_0xcbaa('0x18')]();};}function respondWithResult(_0x4fdd48,_0x1c8139){_0x1c8139=_0x1c8139||0xc8;return function(_0x1f25a3){if(_0x1f25a3){return _0x4fdd48[_0xcbaa('0x17')](_0x1c8139)[_0xcbaa('0x19')](_0x1f25a3);}};}function respondWithFilteredResult(_0x35a408,_0x156031){return function(_0x57c01a){if(_0x57c01a){var _0x31df11=typeof _0x156031[_0xcbaa('0x1a')]===_0xcbaa('0x1b')&&typeof _0x156031[_0xcbaa('0x1c')]===_0xcbaa('0x1b');var _0x4297c6=_0x57c01a['count'];var _0x4610a2=_0x31df11?0x0:_0x156031[_0xcbaa('0x1a')];var _0x59174b=_0x31df11?_0x57c01a[_0xcbaa('0x1d')]:_0x156031[_0xcbaa('0x1a')]+_0x156031[_0xcbaa('0x1c')];var _0xa2b14e;if(_0x59174b>=_0x4297c6){_0x59174b=_0x4297c6;_0xa2b14e=0xc8;}else{_0xa2b14e=0xce;}_0x35a408[_0xcbaa('0x17')](_0xa2b14e);return _0x35a408['set'](_0xcbaa('0x1e'),_0x4610a2+'-'+_0x59174b+'/'+_0x4297c6)[_0xcbaa('0x19')](_0x57c01a);}return null;};}function patchUpdates(_0x1b2b78){return function(_0x1eaac8){try{jsonpatch[_0xcbaa('0x1f')](_0x1eaac8,_0x1b2b78,!![]);}catch(_0x417ed0){return BPromise[_0xcbaa('0x20')](_0x417ed0);}return _0x1eaac8[_0xcbaa('0x21')]();};}function saveUpdates(_0x4ae603,_0x42bff7){return function(_0x5f3208){if(_0x5f3208){return _0x5f3208[_0xcbaa('0x22')](_0x4ae603)[_0xcbaa('0x23')](function(_0x3052c5){return _0x3052c5;});}return null;};}function removeEntity(_0x3b1b39,_0x2bbe06){return function(_0x5d85b9){if(_0x5d85b9){return _0x5d85b9[_0xcbaa('0x24')]()['then'](function(){_0x3b1b39[_0xcbaa('0x17')](0xcc)[_0xcbaa('0x18')]();});}};}function handleEntityNotFound(_0x396403,_0x2f4eab){return function(_0x30327c){if(!_0x30327c){_0x396403[_0xcbaa('0x16')](0x194);}return _0x30327c;};}function handleError(_0x5b6950,_0x335db2){_0x335db2=_0x335db2||0x1f4;return function(_0x1fdeb6){logger['error'](_0x1fdeb6[_0xcbaa('0x25')]);if(_0x1fdeb6[_0xcbaa('0x26')]){delete _0x1fdeb6[_0xcbaa('0x26')];}_0x5b6950[_0xcbaa('0x17')](_0x335db2)[_0xcbaa('0x27')](_0x1fdeb6);};}exports[_0xcbaa('0x28')]=function(_0x14bb77,_0x3b631a){var _0x5e738c={},_0x5569a4={},_0x45df06={'count':0x0,'rows':[]};var _0x257e9d=_[_0xcbaa('0x29')](db[_0xcbaa('0x2a')][_0xcbaa('0x2b')],function(_0x31332a){return{'name':_0x31332a[_0xcbaa('0x2c')],'type':_0x31332a[_0xcbaa('0x2d')][_0xcbaa('0x2e')]};});_0x5569a4[_0xcbaa('0x2f')]=_[_0xcbaa('0x29')](_0x257e9d,_0xcbaa('0x26'));_0x5569a4[_0xcbaa('0x30')]=_[_0xcbaa('0x31')](_0x14bb77['query']);_0x5569a4[_0xcbaa('0x32')]=_[_0xcbaa('0x33')](_0x5569a4['model'],_0x5569a4['query']);_0x5e738c[_0xcbaa('0x34')]=_[_0xcbaa('0x33')](_0x5569a4['model'],qs[_0xcbaa('0x35')](_0x14bb77['query']['fields']));_0x5e738c[_0xcbaa('0x34')]=_0x5e738c[_0xcbaa('0x34')][_0xcbaa('0x36')]?_0x5e738c[_0xcbaa('0x34')]:_0x5569a4[_0xcbaa('0x2f')];if(!_0x14bb77['query']['hasOwnProperty']('nolimit')){_0x5e738c[_0xcbaa('0x1c')]=qs[_0xcbaa('0x1c')](_0x14bb77[_0xcbaa('0x30')][_0xcbaa('0x1c')]);_0x5e738c[_0xcbaa('0x1a')]=qs[_0xcbaa('0x1a')](_0x14bb77[_0xcbaa('0x30')][_0xcbaa('0x1a')]);}_0x5e738c[_0xcbaa('0x37')]=qs['sort'](_0x14bb77[_0xcbaa('0x30')][_0xcbaa('0x38')]);_0x5e738c[_0xcbaa('0x39')]=qs[_0xcbaa('0x32')](_[_0xcbaa('0x3a')](_0x14bb77[_0xcbaa('0x30')],_0x5569a4['filters']),_0x257e9d);if(_0x14bb77[_0xcbaa('0x30')][_0xcbaa('0x3b')]){_0x5e738c[_0xcbaa('0x39')]=_['merge'](_0x5e738c[_0xcbaa('0x39')],{'$or':_[_0xcbaa('0x29')](_0x257e9d,function(_0x23a821){if(_0x23a821[_0xcbaa('0x2d')]!==_0xcbaa('0x3c')){var _0x1d9d4b={};_0x1d9d4b[_0x23a821['name']]={'$like':'%'+_0x14bb77[_0xcbaa('0x30')][_0xcbaa('0x3b')]+'%'};return _0x1d9d4b;}})});}_0x5e738c=_[_0xcbaa('0x3d')]({},_0x5e738c,_0x14bb77[_0xcbaa('0x3e')]);var _0x269b40={'where':_0x5e738c[_0xcbaa('0x39')]};return db[_0xcbaa('0x2a')]['count'](_0x269b40)[_0xcbaa('0x23')](function(_0x37548a){_0x45df06[_0xcbaa('0x1d')]=_0x37548a;if(_0x14bb77[_0xcbaa('0x30')]['includeAll']){_0x5e738c[_0xcbaa('0x3f')]=[{'all':!![]}];}return db[_0xcbaa('0x2a')][_0xcbaa('0x40')](_0x5e738c);})[_0xcbaa('0x23')](function(_0x6bc322){_0x45df06[_0xcbaa('0x41')]=_0x6bc322;return _0x45df06;})[_0xcbaa('0x23')](respondWithFilteredResult(_0x3b631a,_0x5e738c))['catch'](handleError(_0x3b631a,null));};exports[_0xcbaa('0x42')]=function(_0x40f74b,_0x42a8f8){var _0x583656={'raw':!![],'where':{'id':_0x40f74b['params']['id']}},_0x5d4ea5={};_0x5d4ea5['model']=_[_0xcbaa('0x31')](db[_0xcbaa('0x2a')][_0xcbaa('0x2b')]);_0x5d4ea5[_0xcbaa('0x30')]=_[_0xcbaa('0x31')](_0x40f74b[_0xcbaa('0x30')]);_0x5d4ea5[_0xcbaa('0x32')]=_['intersection'](_0x5d4ea5[_0xcbaa('0x2f')],_0x5d4ea5[_0xcbaa('0x30')]);_0x583656['attributes']=_[_0xcbaa('0x33')](_0x5d4ea5[_0xcbaa('0x2f')],qs[_0xcbaa('0x35')](_0x40f74b['query']['fields']));_0x583656[_0xcbaa('0x34')]=_0x583656['attributes'][_0xcbaa('0x36')]?_0x583656[_0xcbaa('0x34')]:_0x5d4ea5[_0xcbaa('0x2f')];if(_0x40f74b[_0xcbaa('0x30')][_0xcbaa('0x43')]){_0x583656['include']=[{'all':!![]}];}_0x583656=_[_0xcbaa('0x3d')]({},_0x583656,_0x40f74b['options']);return db[_0xcbaa('0x2a')][_0xcbaa('0x44')](_0x583656)[_0xcbaa('0x23')](handleEntityNotFound(_0x42a8f8,null))['then'](respondWithResult(_0x42a8f8,null))[_0xcbaa('0x45')](handleError(_0x42a8f8,null));};exports['create']=function(_0x10a223,_0x15bd8f){return db[_0xcbaa('0x2a')][_0xcbaa('0x46')](_0x10a223[_0xcbaa('0x47')],{})[_0xcbaa('0x23')](respondWithResult(_0x15bd8f,0xc9))[_0xcbaa('0x45')](handleError(_0x15bd8f,null));};exports[_0xcbaa('0x22')]=function(_0x2627ed,_0x36a14e){if(_0x2627ed[_0xcbaa('0x47')]['id']){delete _0x2627ed[_0xcbaa('0x47')]['id'];}return db[_0xcbaa('0x2a')][_0xcbaa('0x44')]({'where':{'id':_0x2627ed[_0xcbaa('0x48')]['id']}})[_0xcbaa('0x23')](handleEntityNotFound(_0x36a14e,null))[_0xcbaa('0x23')](saveUpdates(_0x2627ed[_0xcbaa('0x47')],null))[_0xcbaa('0x23')](respondWithResult(_0x36a14e,null))[_0xcbaa('0x45')](handleError(_0x36a14e,null));};exports[_0xcbaa('0x24')]=function(_0x4d3b7b,_0x330986){return db[_0xcbaa('0x2a')][_0xcbaa('0x44')]({'where':{'id':_0x4d3b7b['params']['id']}})[_0xcbaa('0x23')](handleEntityNotFound(_0x330986,null))[_0xcbaa('0x23')](removeEntity(_0x330986,null))[_0xcbaa('0x45')](handleError(_0x330986,null));};
\ No newline at end of file
+var _0x9993=['fields','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','includeAll','findAll','rows','show','rawAttributes','include','options','find','catch','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','VtigerField','type','query','keys','filters','intersection','model','attributes'];(function(_0x1d8107,_0x4d91ae){var _0x59e251=function(_0x151e6d){while(--_0x151e6d){_0x1d8107['push'](_0x1d8107['shift']());}};_0x59e251(++_0x4d91ae);}(_0x9993,0xfa));var _0x3999=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x9993[_0x57b54c];return _0x59cc19;};'use strict';var emlformat=require(_0x3999('0x0'));var rimraf=require(_0x3999('0x1'));var zipdir=require(_0x3999('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3999('0x3'));var moment=require(_0x3999('0x4'));var BPromise=require(_0x3999('0x5'));var Mustache=require(_0x3999('0x6'));var util=require(_0x3999('0x7'));var path=require(_0x3999('0x8'));var sox=require(_0x3999('0x9'));var csv=require(_0x3999('0xa'));var ejs=require(_0x3999('0xb'));var fs=require('fs');var fs_extra=require(_0x3999('0xc'));var _=require(_0x3999('0xd'));var squel=require(_0x3999('0xe'));var crypto=require(_0x3999('0xf'));var jsforce=require(_0x3999('0x10'));var deskjs=require(_0x3999('0x11'));var toCsv=require(_0x3999('0xa'));var querystring=require(_0x3999('0x12'));var Papa=require(_0x3999('0x13'));var Redis=require(_0x3999('0x14'));var authService=require(_0x3999('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0x3999('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3999('0x17'))(_0x3999('0x18'));var utils=require(_0x3999('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x3999('0x1a'));var db=require(_0x3999('0x1b'))['db'];function respondWithStatusCode(_0x44375d,_0x1a5175){_0x1a5175=_0x1a5175||0xcc;return function(_0x5bc5f4){if(_0x5bc5f4){return _0x44375d[_0x3999('0x1c')](_0x1a5175);}return _0x44375d[_0x3999('0x1d')](_0x1a5175)['end']();};}function respondWithResult(_0x5a586f,_0x474990){_0x474990=_0x474990||0xc8;return function(_0x1ba666){if(_0x1ba666){return _0x5a586f[_0x3999('0x1d')](_0x474990)[_0x3999('0x1e')](_0x1ba666);}};}function respondWithFilteredResult(_0x2303b4,_0x5e1ca2){return function(_0x4339fd){if(_0x4339fd){var _0x36357a=typeof _0x5e1ca2['offset']==='undefined'&&typeof _0x5e1ca2[_0x3999('0x1f')]===_0x3999('0x20');var _0x12954c=_0x4339fd[_0x3999('0x21')];var _0xfb183c=_0x36357a?0x0:_0x5e1ca2[_0x3999('0x22')];var _0x4f7802=_0x36357a?_0x4339fd[_0x3999('0x21')]:_0x5e1ca2[_0x3999('0x22')]+_0x5e1ca2[_0x3999('0x1f')];var _0xb5e372;if(_0x4f7802>=_0x12954c){_0x4f7802=_0x12954c;_0xb5e372=0xc8;}else{_0xb5e372=0xce;}_0x2303b4[_0x3999('0x1d')](_0xb5e372);return _0x2303b4[_0x3999('0x23')](_0x3999('0x24'),_0xfb183c+'-'+_0x4f7802+'/'+_0x12954c)[_0x3999('0x1e')](_0x4339fd);}return null;};}function patchUpdates(_0x48e836){return function(_0x617efb){try{jsonpatch[_0x3999('0x25')](_0x617efb,_0x48e836,!![]);}catch(_0x1771e9){return BPromise[_0x3999('0x26')](_0x1771e9);}return _0x617efb[_0x3999('0x27')]();};}function saveUpdates(_0xf7a472,_0x4f1777){return function(_0x5ed0bf){if(_0x5ed0bf){return _0x5ed0bf[_0x3999('0x28')](_0xf7a472)[_0x3999('0x29')](function(_0x1ef952){return _0x1ef952;});}return null;};}function removeEntity(_0x5cd106,_0x187a95){return function(_0xfe4adc){if(_0xfe4adc){return _0xfe4adc[_0x3999('0x2a')]()[_0x3999('0x29')](function(){_0x5cd106[_0x3999('0x1d')](0xcc)[_0x3999('0x2b')]();});}};}function handleEntityNotFound(_0x182bb3,_0x28d49b){return function(_0x32c267){if(!_0x32c267){_0x182bb3[_0x3999('0x1c')](0x194);}return _0x32c267;};}function handleError(_0x59966,_0xc7740e){_0xc7740e=_0xc7740e||0x1f4;return function(_0x2f70f1){logger[_0x3999('0x2c')](_0x2f70f1[_0x3999('0x2d')]);if(_0x2f70f1[_0x3999('0x2e')]){delete _0x2f70f1['name'];}_0x59966['status'](_0xc7740e)[_0x3999('0x2f')](_0x2f70f1);};}exports[_0x3999('0x30')]=function(_0x286e50,_0x33f282){var _0xc2eaf9={},_0x2d8c61={},_0x4d8660={'count':0x0,'rows':[]};var _0x1c279d=_[_0x3999('0x31')](db[_0x3999('0x32')]['rawAttributes'],function(_0x1d3863){return{'name':_0x1d3863['fieldName'],'type':_0x1d3863[_0x3999('0x33')]['key']};});_0x2d8c61['model']=_[_0x3999('0x31')](_0x1c279d,_0x3999('0x2e'));_0x2d8c61[_0x3999('0x34')]=_[_0x3999('0x35')](_0x286e50[_0x3999('0x34')]);_0x2d8c61[_0x3999('0x36')]=_[_0x3999('0x37')](_0x2d8c61[_0x3999('0x38')],_0x2d8c61['query']);_0xc2eaf9[_0x3999('0x39')]=_['intersection'](_0x2d8c61['model'],qs['fields'](_0x286e50[_0x3999('0x34')][_0x3999('0x3a')]));_0xc2eaf9[_0x3999('0x39')]=_0xc2eaf9['attributes']['length']?_0xc2eaf9[_0x3999('0x39')]:_0x2d8c61[_0x3999('0x38')];if(!_0x286e50[_0x3999('0x34')][_0x3999('0x3b')](_0x3999('0x3c'))){_0xc2eaf9[_0x3999('0x1f')]=qs['limit'](_0x286e50['query'][_0x3999('0x1f')]);_0xc2eaf9[_0x3999('0x22')]=qs[_0x3999('0x22')](_0x286e50[_0x3999('0x34')][_0x3999('0x22')]);}_0xc2eaf9['order']=qs[_0x3999('0x3d')](_0x286e50[_0x3999('0x34')][_0x3999('0x3d')]);_0xc2eaf9[_0x3999('0x3e')]=qs[_0x3999('0x36')](_['pick'](_0x286e50[_0x3999('0x34')],_0x2d8c61['filters']),_0x1c279d);if(_0x286e50[_0x3999('0x34')][_0x3999('0x3f')]){_0xc2eaf9[_0x3999('0x3e')]=_[_0x3999('0x40')](_0xc2eaf9[_0x3999('0x3e')],{'$or':_[_0x3999('0x31')](_0x1c279d,function(_0x413141){if(_0x413141[_0x3999('0x33')]!==_0x3999('0x41')){var _0x1c7211={};_0x1c7211[_0x413141['name']]={'$like':'%'+_0x286e50[_0x3999('0x34')]['filter']+'%'};return _0x1c7211;}})});}_0xc2eaf9=_['merge']({},_0xc2eaf9,_0x286e50['options']);var _0x3f451c={'where':_0xc2eaf9[_0x3999('0x3e')]};return db[_0x3999('0x32')][_0x3999('0x21')](_0x3f451c)[_0x3999('0x29')](function(_0x10b9f3){_0x4d8660['count']=_0x10b9f3;if(_0x286e50['query'][_0x3999('0x42')]){_0xc2eaf9['include']=[{'all':!![]}];}return db[_0x3999('0x32')][_0x3999('0x43')](_0xc2eaf9);})['then'](function(_0x4aef8f){_0x4d8660[_0x3999('0x44')]=_0x4aef8f;return _0x4d8660;})['then'](respondWithFilteredResult(_0x33f282,_0xc2eaf9))['catch'](handleError(_0x33f282,null));};exports[_0x3999('0x45')]=function(_0x43f027,_0x1a22d8){var _0x4dce9c={'raw':!![],'where':{'id':_0x43f027['params']['id']}},_0x592f99={};_0x592f99[_0x3999('0x38')]=_[_0x3999('0x35')](db[_0x3999('0x32')][_0x3999('0x46')]);_0x592f99['query']=_['keys'](_0x43f027[_0x3999('0x34')]);_0x592f99[_0x3999('0x36')]=_[_0x3999('0x37')](_0x592f99[_0x3999('0x38')],_0x592f99[_0x3999('0x34')]);_0x4dce9c[_0x3999('0x39')]=_[_0x3999('0x37')](_0x592f99[_0x3999('0x38')],qs[_0x3999('0x3a')](_0x43f027[_0x3999('0x34')][_0x3999('0x3a')]));_0x4dce9c[_0x3999('0x39')]=_0x4dce9c[_0x3999('0x39')]['length']?_0x4dce9c[_0x3999('0x39')]:_0x592f99['model'];if(_0x43f027[_0x3999('0x34')][_0x3999('0x42')]){_0x4dce9c[_0x3999('0x47')]=[{'all':!![]}];}_0x4dce9c=_[_0x3999('0x40')]({},_0x4dce9c,_0x43f027[_0x3999('0x48')]);return db[_0x3999('0x32')][_0x3999('0x49')](_0x4dce9c)[_0x3999('0x29')](handleEntityNotFound(_0x1a22d8,null))[_0x3999('0x29')](respondWithResult(_0x1a22d8,null))[_0x3999('0x4a')](handleError(_0x1a22d8,null));};exports[_0x3999('0x4b')]=function(_0x221ecd,_0x387782){return db[_0x3999('0x32')]['create'](_0x221ecd[_0x3999('0x4c')],{})[_0x3999('0x29')](respondWithResult(_0x387782,0xc9))[_0x3999('0x4a')](handleError(_0x387782,null));};exports['update']=function(_0x5c2a9d,_0x431d5f){if(_0x5c2a9d[_0x3999('0x4c')]['id']){delete _0x5c2a9d[_0x3999('0x4c')]['id'];}return db[_0x3999('0x32')][_0x3999('0x49')]({'where':{'id':_0x5c2a9d['params']['id']}})['then'](handleEntityNotFound(_0x431d5f,null))[_0x3999('0x29')](saveUpdates(_0x5c2a9d[_0x3999('0x4c')],null))[_0x3999('0x29')](respondWithResult(_0x431d5f,null))[_0x3999('0x4a')](handleError(_0x431d5f,null));};exports[_0x3999('0x2a')]=function(_0x1d5ed8,_0x27e4b9){return db[_0x3999('0x32')][_0x3999('0x49')]({'where':{'id':_0x1d5ed8['params']['id']}})[_0x3999('0x29')](handleEntityNotFound(_0x27e4b9,null))[_0x3999('0x29')](removeEntity(_0x27e4b9,null))[_0x3999('0x4a')](handleError(_0x27e4b9,null));};
\ No newline at end of file
index f8759aa..114ed41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86db=['request-promise','rimraf','./intVtigerField.attributes','exports','define','VtigerField','int_vtiger_fields','idField','lodash','../../config/logger'];(function(_0xe4a487,_0x5419aa){var _0x203de6=function(_0x529484){while(--_0x529484){_0xe4a487['push'](_0xe4a487['shift']());}};_0x203de6(++_0x5419aa);}(_0x86db,0x166));var _0xb86d=function(_0x1602fd,_0x847115){_0x1602fd=_0x1602fd-0x0;var _0x1eaf42=_0x86db[_0x1602fd];return _0x1eaf42;};'use strict';var _=require(_0xb86d('0x0'));var util=require('util');var logger=require(_0xb86d('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xb86d('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb86d('0x3'));var config=require('../../config/environment');var attributes=require(_0xb86d('0x4'));module[_0xb86d('0x5')]=function(_0x36a312,_0x243191){return _0x36a312[_0xb86d('0x6')](_0xb86d('0x7'),attributes,{'tableName':_0xb86d('0x8'),'paranoid':![],'indexes':[{'name':'vtiger_unique_index','fields':[_0xb86d('0x9'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7255=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','define','VtigerField','int_vtiger_fields','vtiger_unique_index','idField','FieldId','util'];(function(_0x46f585,_0x2affad){var _0x2915bb=function(_0x39bd0c){while(--_0x39bd0c){_0x46f585['push'](_0x46f585['shift']());}};_0x2915bb(++_0x2affad);}(_0x7255,0x1db));var _0x5725=function(_0x1a8528,_0x50f473){_0x1a8528=_0x1a8528-0x0;var _0xae3778=_0x7255[_0x1a8528];return _0xae3778;};'use strict';var _=require('lodash');var util=require(_0x5725('0x0'));var logger=require(_0x5725('0x1'))(_0x5725('0x2'));var moment=require(_0x5725('0x3'));var BPromise=require(_0x5725('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5725('0x5'));var rimraf=require(_0x5725('0x6'));var config=require(_0x5725('0x7'));var attributes=require('./intVtigerField.attributes');module['exports']=function(_0xd21548,_0x2e45c6){return _0xd21548[_0x5725('0x8')](_0x5725('0x9'),attributes,{'tableName':_0x5725('0xa'),'paranoid':![],'indexes':[{'name':_0x5725('0xb'),'fields':[_0x5725('0xc'),_0x5725('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 1ea117d..3d4fd37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64f6=['then','info','VtigerField,\x20%s,\x20%s','request\x20sent','VtigerField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0x64f6,0xb3));var _0x664f=function(_0x3d967,_0x1d3d71){_0x3d967=_0x3d967-0x0;var _0x22caf4=_0x64f6[_0x3d967];return _0x22caf4;};'use strict';var _=require(_0x664f('0x0'));var util=require(_0x664f('0x1'));var moment=require(_0x664f('0x2'));var BPromise=require(_0x664f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x664f('0x4'))['db'];var utils=require(_0x664f('0x5'));var logger=require(_0x664f('0x6'))(_0x664f('0x7'));var config=require(_0x664f('0x8'));var jayson=require(_0x664f('0x9'));var client=jayson[_0x664f('0xa')][_0x664f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x511a77,_0x5e5d92,_0x3085db){return new BPromise(function(_0x59b6c0,_0x44a9d4){return client[_0x664f('0xc')](_0x511a77,_0x3085db)[_0x664f('0xd')](function(_0x1dba79){logger[_0x664f('0xe')](_0x664f('0xf'),_0x5e5d92,_0x664f('0x10'));logger['debug'](_0x664f('0x11'),_0x5e5d92,'request\x20sent',JSON[_0x664f('0x12')](_0x1dba79));if(_0x1dba79[_0x664f('0x13')]){if(_0x1dba79[_0x664f('0x13')][_0x664f('0x14')]===0x1f4){logger[_0x664f('0x13')]('VtigerField,\x20%s,\x20%s',_0x5e5d92,_0x1dba79[_0x664f('0x13')][_0x664f('0x15')]);return _0x44a9d4(_0x1dba79[_0x664f('0x13')][_0x664f('0x15')]);}logger[_0x664f('0x13')](_0x664f('0xf'),_0x5e5d92,_0x1dba79[_0x664f('0x13')]['message']);return _0x59b6c0(_0x1dba79[_0x664f('0x13')][_0x664f('0x15')]);}else{logger['info']('VtigerField,\x20%s,\x20%s',_0x5e5d92,_0x664f('0x10'));_0x59b6c0(_0x1dba79[_0x664f('0x16')]['message']);}})[_0x664f('0x17')](function(_0x160b8c){logger['error']('VtigerField,\x20%s,\x20%s',_0x5e5d92,_0x160b8c);_0x44a9d4(_0x160b8c);});});}
\ No newline at end of file
+var _0x831e=['debug','VtigerField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','VtigerField,\x20%s,\x20%s','request\x20sent'];(function(_0x5b5eb4,_0x117c87){var _0x42af53=function(_0xdf6fcb){while(--_0xdf6fcb){_0x5b5eb4['push'](_0x5b5eb4['shift']());}};_0x42af53(++_0x117c87);}(_0x831e,0xb0));var _0xe831=function(_0x42af98,_0x105e1a){_0x42af98=_0x42af98-0x0;var _0x294e1c=_0x831e[_0x42af98];return _0x294e1c;};'use strict';var _=require(_0xe831('0x0'));var util=require('util');var moment=require(_0xe831('0x1'));var BPromise=require(_0xe831('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe831('0x3'));var db=require(_0xe831('0x4'))['db'];var utils=require(_0xe831('0x5'));var logger=require(_0xe831('0x6'))(_0xe831('0x7'));var config=require(_0xe831('0x8'));var jayson=require(_0xe831('0x9'));var client=jayson[_0xe831('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x582bcd,_0xe43687,_0x3b9078){return new BPromise(function(_0x3f725a,_0x27ff52){return client[_0xe831('0xb')](_0x582bcd,_0x3b9078)[_0xe831('0xc')](function(_0x4b61fe){logger[_0xe831('0xd')](_0xe831('0xe'),_0xe43687,_0xe831('0xf'));logger[_0xe831('0x10')](_0xe831('0x11'),_0xe43687,_0xe831('0xf'),JSON[_0xe831('0x12')](_0x4b61fe));if(_0x4b61fe[_0xe831('0x13')]){if(_0x4b61fe[_0xe831('0x13')][_0xe831('0x14')]===0x1f4){logger[_0xe831('0x13')](_0xe831('0xe'),_0xe43687,_0x4b61fe['error'][_0xe831('0x15')]);return _0x27ff52(_0x4b61fe[_0xe831('0x13')][_0xe831('0x15')]);}logger[_0xe831('0x13')](_0xe831('0xe'),_0xe43687,_0x4b61fe[_0xe831('0x13')][_0xe831('0x15')]);return _0x3f725a(_0x4b61fe[_0xe831('0x13')][_0xe831('0x15')]);}else{logger['info']('VtigerField,\x20%s,\x20%s',_0xe43687,_0xe831('0xf'));_0x3f725a(_0x4b61fe[_0xe831('0x16')][_0xe831('0x15')]);}})[_0xe831('0x17')](function(_0x2ae6b5){logger[_0xe831('0x13')](_0xe831('0xe'),_0xe43687,_0x2ae6b5);_0x27ff52(_0x2ae6b5);});});}
\ No newline at end of file
index 1539542..1ef7d6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf606=['/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intZendeskAccount.controller','get','isAuthenticated','/:id','show'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xf606,0x169));var _0x6f60=function(_0x201c53,_0x22c40c){_0x201c53=_0x201c53-0x0;var _0x18e830=_0xf606[_0x201c53];return _0x18e830;};'use strict';var multer=require(_0x6f60('0x0'));var util=require(_0x6f60('0x1'));var path=require(_0x6f60('0x2'));var timeout=require(_0x6f60('0x3'));var express=require(_0x6f60('0x4'));var router=express[_0x6f60('0x5')]();var fs_extra=require(_0x6f60('0x6'));var auth=require(_0x6f60('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x6f60('0x8'));var controller=require(_0x6f60('0x9'));router[_0x6f60('0xa')]('/',auth[_0x6f60('0xb')](),controller['index']);router[_0x6f60('0xa')](_0x6f60('0xc'),auth['isAuthenticated'](),controller[_0x6f60('0xd')]);router['get'](_0x6f60('0xe'),auth[_0x6f60('0xb')](),controller[_0x6f60('0xf')]);router[_0x6f60('0xa')](_0x6f60('0x10'),auth['isAuthenticated'](),controller[_0x6f60('0x11')]);router[_0x6f60('0x12')]('/',auth[_0x6f60('0xb')](),controller[_0x6f60('0x13')]);router[_0x6f60('0x12')](_0x6f60('0xe'),auth[_0x6f60('0xb')](),controller[_0x6f60('0x14')]);router[_0x6f60('0x15')]('/:id',auth['isAuthenticated'](),controller[_0x6f60('0x16')]);router[_0x6f60('0x17')](_0x6f60('0xc'),auth[_0x6f60('0xb')](),controller[_0x6f60('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0xdc59=['multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','post','create','addConfiguration','put','update','delete','destroy','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xdc59,0x12c));var _0x9dc5=function(_0x3c8e9a,_0x384306){_0x3c8e9a=_0x3c8e9a-0x0;var _0x2d4c57=_0xdc59[_0x3c8e9a];return _0x2d4c57;};'use strict';var multer=require(_0x9dc5('0x0'));var util=require(_0x9dc5('0x1'));var path=require(_0x9dc5('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x9dc5('0x3')]();var fs_extra=require(_0x9dc5('0x4'));var auth=require(_0x9dc5('0x5'));var interaction=require(_0x9dc5('0x6'));var config=require(_0x9dc5('0x7'));var controller=require(_0x9dc5('0x8'));router[_0x9dc5('0x9')]('/',auth[_0x9dc5('0xa')](),controller[_0x9dc5('0xb')]);router['get'](_0x9dc5('0xc'),auth[_0x9dc5('0xa')](),controller[_0x9dc5('0xd')]);router[_0x9dc5('0x9')](_0x9dc5('0xe'),auth[_0x9dc5('0xa')](),controller[_0x9dc5('0xf')]);router[_0x9dc5('0x9')](_0x9dc5('0x10'),auth[_0x9dc5('0xa')](),controller['getFields']);router[_0x9dc5('0x11')]('/',auth[_0x9dc5('0xa')](),controller[_0x9dc5('0x12')]);router[_0x9dc5('0x11')]('/:id/configurations',auth[_0x9dc5('0xa')](),controller[_0x9dc5('0x13')]);router[_0x9dc5('0x14')]('/:id',auth[_0x9dc5('0xa')](),controller[_0x9dc5('0x15')]);router[_0x9dc5('0x16')](_0x9dc5('0xc'),auth[_0x9dc5('0xa')](),controller[_0x9dc5('0x17')]);module[_0x9dc5('0x18')]=router;
\ No newline at end of file
index 67d766f..88b5a6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f0e=['STRING','remoteUri','ENUM','password','integrationTab','sequelize','exports'];(function(_0x18e792,_0x494266){var _0x1b1a78=function(_0x1df338){while(--_0x1df338){_0x18e792['push'](_0x18e792['shift']());}};_0x1b1a78(++_0x494266);}(_0x9f0e,0x116));var _0xe9f0=function(_0x9d61c2,_0x468f27){_0x9d61c2=_0x9d61c2-0x0;var _0x4c6400=_0x9f0e[_0x9d61c2];return _0x4c6400;};'use strict';var Sequelize=require(_0xe9f0('0x0'));module[_0xe9f0('0x1')]={'name':{'type':Sequelize[_0xe9f0('0x2')]},'description':{'type':Sequelize[_0xe9f0('0x2')]},'username':{'type':Sequelize[_0xe9f0('0x2')],'unique':'username'},'password':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0xe9f0('0x2')]},'remoteUri':{'type':Sequelize[_0xe9f0('0x2')],'unique':_0xe9f0('0x3')},'authType':{'type':Sequelize[_0xe9f0('0x4')](_0xe9f0('0x5'),'token'),'defaultValue':'password'},'serverUrl':{'type':Sequelize[_0xe9f0('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xe9f0('0x4')](_0xe9f0('0x6'),'newTab'),'defaultValue':_0xe9f0('0x6')}};
\ No newline at end of file
+var _0x5324=['sequelize','exports','STRING','username','remoteUri','ENUM','password','token','integrationTab','newTab'];(function(_0x14c95b,_0x4acb8d){var _0x8f9fbb=function(_0x569f5c){while(--_0x569f5c){_0x14c95b['push'](_0x14c95b['shift']());}};_0x8f9fbb(++_0x4acb8d);}(_0x5324,0x154));var _0x4532=function(_0x4b7411,_0xfcdba2){_0x4b7411=_0x4b7411-0x0;var _0x5984c7=_0x5324[_0x4b7411];return _0x5984c7;};'use strict';var Sequelize=require(_0x4532('0x0'));module[_0x4532('0x1')]={'name':{'type':Sequelize[_0x4532('0x2')]},'description':{'type':Sequelize[_0x4532('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0x4532('0x3')},'password':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x4532('0x2')]},'remoteUri':{'type':Sequelize[_0x4532('0x2')],'unique':_0x4532('0x4')},'authType':{'type':Sequelize[_0x4532('0x5')](_0x4532('0x6'),_0x4532('0x7')),'defaultValue':_0x4532('0x6')},'serverUrl':{'type':Sequelize[_0x4532('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x4532('0x8'),_0x4532('0x9')),'defaultValue':_0x4532('0x8')}};
\ No newline at end of file
index af4c77e..e6a6a07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x373d=['ZendeskField','username','password','authType','remoteUri','slice','substring','lastIndexOf','GET','format','%s/%s','ticket_fields','headers','Basic\x20%s','%s:%s','base64','toString','Sequelize','ValidationError','Unknown\x20authentication\x20type','description','remove','includes','position','title','system_field_options','custom_field_options','test','stringify','statusCode','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','ejs','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','includeAll','include','ZendeskAccount','rows','catch','show','keys','rawAttributes','find','create','body','params','findOne','options','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions'];(function(_0x1de2bd,_0x953fb){var _0x595960=function(_0xea260b){while(--_0xea260b){_0x1de2bd['push'](_0x1de2bd['shift']());}};_0x595960(++_0x953fb);}(_0x373d,0x1e2));var _0xd373=function(_0x385d5f,_0x43c178){_0x385d5f=_0x385d5f-0x0;var _0x17dcd8=_0x373d[_0x385d5f];return _0x17dcd8;};'use strict';var emlformat=require(_0xd373('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd373('0x1'));var jsonpatch=require(_0xd373('0x2'));var rp=require(_0xd373('0x3'));var moment=require(_0xd373('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd373('0x5'));var util=require(_0xd373('0x6'));var path=require(_0xd373('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd373('0x8'));var fs=require('fs');var fs_extra=require(_0xd373('0x9'));var _=require(_0xd373('0xa'));var squel=require(_0xd373('0xb'));var crypto=require('crypto');var jsforce=require(_0xd373('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xd373('0xd'));var Redis=require(_0xd373('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xd373('0xf'));var as=require(_0xd373('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd373('0x11'));var utils=require(_0xd373('0x12'));var config=require(_0xd373('0x13'));var licenseUtil=require(_0xd373('0x14'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x5ab89c,_0xcd9b8c){_0xcd9b8c=_0xcd9b8c||0xcc;return function(_0x14a0ee){if(_0x14a0ee){return _0x5ab89c['sendStatus'](_0xcd9b8c);}return _0x5ab89c[_0xd373('0x15')](_0xcd9b8c)[_0xd373('0x16')]();};}function respondWithResult(_0x27c161,_0x23ed86){_0x23ed86=_0x23ed86||0xc8;return function(_0x28b2bf){if(_0x28b2bf){return _0x27c161[_0xd373('0x15')](_0x23ed86)[_0xd373('0x17')](_0x28b2bf);}};}function respondWithFilteredResult(_0x2eacb1,_0x5a286a){return function(_0x2c5854){if(_0x2c5854){var _0x3a5316=typeof _0x5a286a[_0xd373('0x18')]===_0xd373('0x19')&&typeof _0x5a286a['limit']===_0xd373('0x19');var _0x5eab00=_0x2c5854[_0xd373('0x1a')];var _0x36d47a=_0x3a5316?0x0:_0x5a286a['offset'];var _0x1bbdbd=_0x3a5316?_0x2c5854['count']:_0x5a286a['offset']+_0x5a286a[_0xd373('0x1b')];var _0x186fdd;if(_0x1bbdbd>=_0x5eab00){_0x1bbdbd=_0x5eab00;_0x186fdd=0xc8;}else{_0x186fdd=0xce;}_0x2eacb1[_0xd373('0x15')](_0x186fdd);return _0x2eacb1[_0xd373('0x1c')](_0xd373('0x1d'),_0x36d47a+'-'+_0x1bbdbd+'/'+_0x5eab00)[_0xd373('0x17')](_0x2c5854);}return null;};}function patchUpdates(_0x4ba510){return function(_0x18b681){try{jsonpatch[_0xd373('0x1e')](_0x18b681,_0x4ba510,!![]);}catch(_0x1378a0){return BPromise[_0xd373('0x1f')](_0x1378a0);}return _0x18b681[_0xd373('0x20')]();};}function saveUpdates(_0x3aa1c5,_0x4f64bd){return function(_0x355fca){if(_0x355fca){return _0x355fca[_0xd373('0x21')](_0x3aa1c5)[_0xd373('0x22')](function(_0x209ca7){return _0x209ca7;});}return null;};}function removeEntity(_0x217ee7,_0x238ffd){return function(_0x466a03){if(_0x466a03){return _0x466a03[_0xd373('0x23')]()[_0xd373('0x22')](function(){_0x217ee7[_0xd373('0x15')](0xcc)[_0xd373('0x16')]();});}};}function handleEntityNotFound(_0x34f05a,_0x388182){return function(_0x420a30){if(!_0x420a30){_0x34f05a[_0xd373('0x24')](0x194);}return _0x420a30;};}function handleError(_0x38ba50,_0x50b987){_0x50b987=_0x50b987||0x1f4;return function(_0x13a012){logger[_0xd373('0x25')](_0x13a012[_0xd373('0x26')]);if(_0x13a012[_0xd373('0x27')]){delete _0x13a012[_0xd373('0x27')];}_0x38ba50[_0xd373('0x15')](_0x50b987)[_0xd373('0x28')](_0x13a012);};}exports[_0xd373('0x29')]=function(_0x2869e5,_0x158825){var _0xbc420b={},_0x2ee37c={},_0x7dad3e={'count':0x0,'rows':[]};var _0x5287e7=_[_0xd373('0x2a')](db['ZendeskAccount']['rawAttributes'],function(_0xedc8f3){return{'name':_0xedc8f3[_0xd373('0x2b')],'type':_0xedc8f3[_0xd373('0x2c')][_0xd373('0x2d')]};});_0x2ee37c[_0xd373('0x2e')]=_['map'](_0x5287e7,_0xd373('0x27'));_0x2ee37c[_0xd373('0x2f')]=_['keys'](_0x2869e5[_0xd373('0x2f')]);_0x2ee37c[_0xd373('0x30')]=_[_0xd373('0x31')](_0x2ee37c[_0xd373('0x2e')],_0x2ee37c[_0xd373('0x2f')]);_0xbc420b[_0xd373('0x32')]=_[_0xd373('0x31')](_0x2ee37c[_0xd373('0x2e')],qs[_0xd373('0x33')](_0x2869e5['query'][_0xd373('0x33')]));_0xbc420b[_0xd373('0x32')]=_0xbc420b[_0xd373('0x32')][_0xd373('0x34')]?_0xbc420b[_0xd373('0x32')]:_0x2ee37c[_0xd373('0x2e')];if(!_0x2869e5[_0xd373('0x2f')][_0xd373('0x35')](_0xd373('0x36'))){_0xbc420b[_0xd373('0x1b')]=qs[_0xd373('0x1b')](_0x2869e5[_0xd373('0x2f')][_0xd373('0x1b')]);_0xbc420b[_0xd373('0x18')]=qs[_0xd373('0x18')](_0x2869e5['query'][_0xd373('0x18')]);}_0xbc420b[_0xd373('0x37')]=qs[_0xd373('0x38')](_0x2869e5[_0xd373('0x2f')]['sort']);_0xbc420b[_0xd373('0x39')]=qs[_0xd373('0x30')](_[_0xd373('0x3a')](_0x2869e5[_0xd373('0x2f')],_0x2ee37c[_0xd373('0x30')]),_0x5287e7);if(_0x2869e5[_0xd373('0x2f')]['filter']){_0xbc420b['where']=_[_0xd373('0x3b')](_0xbc420b['where'],{'$or':_[_0xd373('0x2a')](_0x5287e7,function(_0xe19d5b){if(_0xe19d5b[_0xd373('0x2c')]!=='VIRTUAL'){var _0x287136={};_0x287136[_0xe19d5b[_0xd373('0x27')]]={'$like':'%'+_0x2869e5[_0xd373('0x2f')][_0xd373('0x3c')]+'%'};return _0x287136;}})});}_0xbc420b=_['merge']({},_0xbc420b,_0x2869e5['options']);var _0x5de74e={'where':_0xbc420b[_0xd373('0x39')]};return db['ZendeskAccount'][_0xd373('0x1a')](_0x5de74e)[_0xd373('0x22')](function(_0x4e5e80){_0x7dad3e['count']=_0x4e5e80;if(_0x2869e5['query'][_0xd373('0x3d')]){_0xbc420b[_0xd373('0x3e')]=[{'all':!![]}];}return db[_0xd373('0x3f')]['findAll'](_0xbc420b);})['then'](function(_0xb87e16){_0x7dad3e[_0xd373('0x40')]=_0xb87e16;return _0x7dad3e;})['then'](respondWithFilteredResult(_0x158825,_0xbc420b))[_0xd373('0x41')](handleError(_0x158825,null));};exports[_0xd373('0x42')]=function(_0x1e3de1,_0x9989e4){var _0x2d8c7d={'raw':![],'where':{'id':_0x1e3de1['params']['id']}},_0x4e8bc6={};_0x4e8bc6[_0xd373('0x2e')]=_[_0xd373('0x43')](db[_0xd373('0x3f')][_0xd373('0x44')]);_0x4e8bc6['query']=_[_0xd373('0x43')](_0x1e3de1['query']);_0x4e8bc6[_0xd373('0x30')]=_[_0xd373('0x31')](_0x4e8bc6[_0xd373('0x2e')],_0x4e8bc6[_0xd373('0x2f')]);_0x2d8c7d[_0xd373('0x32')]=_['intersection'](_0x4e8bc6[_0xd373('0x2e')],qs[_0xd373('0x33')](_0x1e3de1['query'][_0xd373('0x33')]));_0x2d8c7d[_0xd373('0x32')]=_0x2d8c7d[_0xd373('0x32')][_0xd373('0x34')]?_0x2d8c7d[_0xd373('0x32')]:_0x4e8bc6[_0xd373('0x2e')];if(_0x1e3de1[_0xd373('0x2f')][_0xd373('0x3d')]){_0x2d8c7d[_0xd373('0x3e')]=[{'all':!![]}];}_0x2d8c7d=_[_0xd373('0x3b')]({},_0x2d8c7d,_0x1e3de1['options']);return db['ZendeskAccount'][_0xd373('0x45')](_0x2d8c7d)['then'](handleEntityNotFound(_0x9989e4,null))[_0xd373('0x22')](respondWithResult(_0x9989e4,null))['catch'](handleError(_0x9989e4,null));};exports['create']=function(_0x5cbc16,_0x280598){return db[_0xd373('0x3f')][_0xd373('0x46')](_0x5cbc16[_0xd373('0x47')],{})[_0xd373('0x22')](respondWithResult(_0x280598,0xc9))[_0xd373('0x41')](handleError(_0x280598,null));};exports[_0xd373('0x21')]=function(_0x4d1088,_0x28ec3e){if(_0x4d1088['body']['id']){delete _0x4d1088[_0xd373('0x47')]['id'];}return db[_0xd373('0x3f')]['find']({'where':{'id':_0x4d1088[_0xd373('0x48')]['id']}})['then'](handleEntityNotFound(_0x28ec3e,null))[_0xd373('0x22')](saveUpdates(_0x4d1088[_0xd373('0x47')],null))[_0xd373('0x22')](respondWithResult(_0x28ec3e,null))[_0xd373('0x41')](handleError(_0x28ec3e,null));};exports[_0xd373('0x23')]=function(_0x4bc631,_0x4971a0){return db['ZendeskAccount'][_0xd373('0x45')]({'where':{'id':_0x4bc631[_0xd373('0x48')]['id']}})['then'](handleEntityNotFound(_0x4971a0,null))[_0xd373('0x22')](removeEntity(_0x4971a0,null))[_0xd373('0x41')](handleError(_0x4971a0,null));};exports['getConfigurations']=function(_0xae7067,_0xb6b583,_0x102101){var _0x473af2={};var _0x3b5e70={};var _0xa2758;var _0xc255ec;return db[_0xd373('0x3f')][_0xd373('0x49')]({'where':{'id':_0xae7067[_0xd373('0x48')]['id']}})[_0xd373('0x22')](handleEntityNotFound(_0xb6b583,null))['then'](function(_0x4b2645){if(_0x4b2645){_0xa2758=_0x4b2645;_0x3b5e70['model']=_['keys'](db['ZendeskConfiguration']['rawAttributes']);_0x3b5e70[_0xd373('0x2f')]=_[_0xd373('0x43')](_0xae7067['query']);_0x3b5e70['filters']=_['intersection'](_0x3b5e70[_0xd373('0x2e')],_0x3b5e70[_0xd373('0x2f')]);_0x473af2['attributes']=_['intersection'](_0x3b5e70[_0xd373('0x2e')],qs[_0xd373('0x33')](_0xae7067[_0xd373('0x2f')][_0xd373('0x33')]));_0x473af2[_0xd373('0x32')]=_0x473af2['attributes'][_0xd373('0x34')]?_0x473af2[_0xd373('0x32')]:_0x3b5e70[_0xd373('0x2e')];_0x473af2[_0xd373('0x37')]=qs[_0xd373('0x38')](_0xae7067[_0xd373('0x2f')][_0xd373('0x38')]);_0x473af2[_0xd373('0x39')]=qs[_0xd373('0x30')](_[_0xd373('0x3a')](_0xae7067[_0xd373('0x2f')],_0x3b5e70[_0xd373('0x30')]));if(_0xae7067[_0xd373('0x2f')][_0xd373('0x3c')]){_0x473af2[_0xd373('0x39')]=_['merge'](_0x473af2[_0xd373('0x39')],{'$or':_[_0xd373('0x2a')](_0x473af2[_0xd373('0x32')],function(_0x4dba1d){var _0x2bdadf={};_0x2bdadf[_0x4dba1d]={'$like':'%'+_0xae7067['query'][_0xd373('0x3c')]+'%'};return _0x2bdadf;})});}_0x473af2=_['merge']({},_0x473af2,_0xae7067[_0xd373('0x4a')]);return _0xa2758[_0xd373('0x4b')](_0x473af2);}})[_0xd373('0x22')](function(_0x19924a){if(_0x19924a){_0xc255ec=_0x19924a[_0xd373('0x34')];if(!_0xae7067[_0xd373('0x2f')][_0xd373('0x35')](_0xd373('0x36'))){_0x473af2[_0xd373('0x1b')]=qs[_0xd373('0x1b')](_0xae7067[_0xd373('0x2f')][_0xd373('0x1b')]);_0x473af2[_0xd373('0x18')]=qs[_0xd373('0x18')](_0xae7067[_0xd373('0x2f')][_0xd373('0x18')]);}return _0xa2758[_0xd373('0x4b')](_0x473af2);}})[_0xd373('0x22')](function(_0x209e76){if(_0x209e76){return _0x209e76?{'count':_0xc255ec,'rows':_0x209e76}:null;}})[_0xd373('0x22')](respondWithResult(_0xb6b583,null))[_0xd373('0x41')](handleError(_0xb6b583,null));};exports[_0xd373('0x4c')]=function(_0x296242,_0x5133,_0x2ada2f){if(_0x296242[_0xd373('0x47')]['id']){delete _0x296242['body']['id'];}return db[_0xd373('0x3f')][_0xd373('0x49')]({'where':{'id':_0x296242[_0xd373('0x48')]['id']}})['then'](handleEntityNotFound(_0x5133,null))[_0xd373('0x22')](function(_0x2d9019){if(_0x2d9019){_0x296242[_0xd373('0x47')][_0xd373('0x4d')]=_0x2d9019['id'];_0x296242[_0xd373('0x47')][_0xd373('0x4e')]=integrations[_0xd373('0x4f')](_0x296242['body'][_0xd373('0x50')],_0x296242[_0xd373('0x47')][_0xd373('0x2c')]);_0x296242[_0xd373('0x47')][_0xd373('0x51')]=integrations[_0xd373('0x52')](_0x296242[_0xd373('0x47')][_0xd373('0x50')],_0x296242['body'][_0xd373('0x2c')]);return db['ZendeskConfiguration'][_0xd373('0x46')](_0x296242[_0xd373('0x47')],{'include':[{'model':db[_0xd373('0x53')],'as':_0xd373('0x4e')},{'model':db[_0xd373('0x53')],'as':_0xd373('0x51')}]});}return null;})[_0xd373('0x22')](respondWithResult(_0x5133,null))[_0xd373('0x41')](handleError(_0x5133,null));};exports['getFields']=function(_0x237f15,_0x5c5855,_0x40f5ad){var _0x27fcbe='';return db[_0xd373('0x3f')][_0xd373('0x49')]({'where':{'id':_0x237f15[_0xd373('0x48')]['id']},'attributes':['id',_0xd373('0x54'),_0xd373('0x55'),'token',_0xd373('0x56'),_0xd373('0x57')]})[_0xd373('0x22')](handleEntityNotFound(_0x5c5855,null))['then'](function(_0x4035d4){if(_0x4035d4){_0x27fcbe=_0x4035d4[_0xd373('0x57')];var _0xaf9102=_0x27fcbe[_0xd373('0x58')](-0x1);if(_0xaf9102==='/'){_0x27fcbe=_0x27fcbe[_0xd373('0x59')](0x0,_0x27fcbe[_0xd373('0x5a')](_0xaf9102));}var _0x6c7c8d={'method':_0xd373('0x5b'),'uri':util[_0xd373('0x5c')](_0xd373('0x5d'),_0x27fcbe,_0xd373('0x5e')),'json':!![]};switch(_0x4035d4[_0xd373('0x56')]){case'password':_0x6c7c8d[_0xd373('0x5f')]={'Authorization':util[_0xd373('0x5c')](_0xd373('0x60'),new Buffer(util['format'](_0xd373('0x61'),_0x4035d4[_0xd373('0x54')],_0x4035d4[_0xd373('0x55')]))['toString'](_0xd373('0x62')))};break;case'token':_0x6c7c8d[_0xd373('0x5f')]={'Authorization':util[_0xd373('0x5c')](_0xd373('0x60'),new Buffer(util[_0xd373('0x5c')]('%s/token:%s',_0x4035d4[_0xd373('0x54')],_0x4035d4['token']))[_0xd373('0x63')](_0xd373('0x62')))};break;default:throw new db[(_0xd373('0x64'))][(_0xd373('0x65'))](_0xd373('0x66'));}return rp(_0x6c7c8d);}})[_0xd373('0x22')](function(_0x53c0a7){if(_0x53c0a7){var _0xb01a00=['subject',_0xd373('0x67'),'group','assignee'];_[_0xd373('0x68')](_0x53c0a7[_0xd373('0x5e')],function(_0x1cff58){return _0xb01a00[_0xd373('0x69')](_0x1cff58['type']);});return{'count':_0x53c0a7['ticket_fields'][_0xd373('0x34')],'rows':_[_0xd373('0x2a')](_0x53c0a7[_0xd373('0x5e')],function(_0x25bf55){return{'id':_0x25bf55['id'],'name':_0x25bf55[_0xd373('0x6a')]>0x7?_0x25bf55[_0xd373('0x6b')]:_0x25bf55[_0xd373('0x2c')],'custom':_0x25bf55[_0xd373('0x6a')]>0x7?!![]:![],'options':_0x25bf55[_0xd373('0x6c')]?_0x25bf55[_0xd373('0x6c')]:_0x25bf55['custom_field_options']?_0x25bf55[_0xd373('0x6d')]:[]};})};}})[_0xd373('0x22')](respondWithResult(_0x5c5855,null))[_0xd373('0x41')](function(_0xa77a42){var _0x9bdd39=_0x237f15[_0xd373('0x2f')][_0xd373('0x6e')]?0x1f4:_0xa77a42['statusCode']||0x1f4;logger[_0xd373('0x25')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x9bdd39,JSON[_0xd373('0x6f')](_0xa77a42));delete _0xa77a42[_0xd373('0x27')];if(_0x9bdd39===0x191){_0x9bdd39=0x190;}_0x5c5855[_0xd373('0x15')](_0x9bdd39)[_0xd373('0x28')](_0x237f15[_0xd373('0x2f')][_0xd373('0x6e')]?{'message':'Wrong\x20credentials','statusCode':_0xa77a42[_0xd373('0x70')]}:_0xa77a42);});};
\ No newline at end of file
+var _0x4ded=['hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','params','keys','rawAttributes','intersection','include','find','create','body','findOne','ZendeskConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','username','password','token','authType','remoteUri','substring','format','%s/%s','headers','Basic\x20%s','toString','base64','%s/token:%s','Sequelize','subject','description','group','assignee','ticket_fields','includes','position','system_field_options','custom_field_options','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','ZendeskAccount','type','model','query','filters','fields','attributes','length'];(function(_0x5d6cfe,_0x32cab1){var _0x58b64f=function(_0x2fe469){while(--_0x2fe469){_0x5d6cfe['push'](_0x5d6cfe['shift']());}};_0x58b64f(++_0x32cab1);}(_0x4ded,0x116));var _0xd4de=function(_0x553ab1,_0xc45423){_0x553ab1=_0x553ab1-0x0;var _0x599d7f=_0x4ded[_0x553ab1];return _0x599d7f;};'use strict';var emlformat=require(_0xd4de('0x0'));var rimraf=require(_0xd4de('0x1'));var zipdir=require(_0xd4de('0x2'));var jsonpatch=require(_0xd4de('0x3'));var rp=require(_0xd4de('0x4'));var moment=require(_0xd4de('0x5'));var BPromise=require(_0xd4de('0x6'));var Mustache=require(_0xd4de('0x7'));var util=require(_0xd4de('0x8'));var path=require(_0xd4de('0x9'));var sox=require(_0xd4de('0xa'));var csv=require(_0xd4de('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd4de('0xc'));var _=require(_0xd4de('0xd'));var squel=require(_0xd4de('0xe'));var crypto=require(_0xd4de('0xf'));var jsforce=require(_0xd4de('0x10'));var deskjs=require(_0xd4de('0x11'));var toCsv=require('to-csv');var querystring=require(_0xd4de('0x12'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xd4de('0x13'));var as=require(_0xd4de('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xd4de('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xd4de('0x16'));var db=require(_0xd4de('0x17'))['db'];var integrations=require(_0xd4de('0x18'));function respondWithStatusCode(_0x2aa09d,_0x3ffc72){_0x3ffc72=_0x3ffc72||0xcc;return function(_0x3af6e0){if(_0x3af6e0){return _0x2aa09d[_0xd4de('0x19')](_0x3ffc72);}return _0x2aa09d[_0xd4de('0x1a')](_0x3ffc72)[_0xd4de('0x1b')]();};}function respondWithResult(_0x37cb9f,_0x691ba9){_0x691ba9=_0x691ba9||0xc8;return function(_0xd0d906){if(_0xd0d906){return _0x37cb9f[_0xd4de('0x1a')](_0x691ba9)[_0xd4de('0x1c')](_0xd0d906);}};}function respondWithFilteredResult(_0x102e5b,_0xa7c18b){return function(_0x325fba){if(_0x325fba){var _0x4b0a95=typeof _0xa7c18b['offset']===_0xd4de('0x1d')&&typeof _0xa7c18b[_0xd4de('0x1e')]===_0xd4de('0x1d');var _0x428aa2=_0x325fba['count'];var _0x4d0df6=_0x4b0a95?0x0:_0xa7c18b[_0xd4de('0x1f')];var _0x54b757=_0x4b0a95?_0x325fba[_0xd4de('0x20')]:_0xa7c18b[_0xd4de('0x1f')]+_0xa7c18b['limit'];var _0xc15081;if(_0x54b757>=_0x428aa2){_0x54b757=_0x428aa2;_0xc15081=0xc8;}else{_0xc15081=0xce;}_0x102e5b['status'](_0xc15081);return _0x102e5b[_0xd4de('0x21')](_0xd4de('0x22'),_0x4d0df6+'-'+_0x54b757+'/'+_0x428aa2)[_0xd4de('0x1c')](_0x325fba);}return null;};}function patchUpdates(_0x8e8712){return function(_0x5368f5){try{jsonpatch[_0xd4de('0x23')](_0x5368f5,_0x8e8712,!![]);}catch(_0x47311c){return BPromise[_0xd4de('0x24')](_0x47311c);}return _0x5368f5[_0xd4de('0x25')]();};}function saveUpdates(_0x1c631a,_0x2d092a){return function(_0x1561fd){if(_0x1561fd){return _0x1561fd[_0xd4de('0x26')](_0x1c631a)[_0xd4de('0x27')](function(_0x413f68){return _0x413f68;});}return null;};}function removeEntity(_0x534b37,_0xad333f){return function(_0x88a0b9){if(_0x88a0b9){return _0x88a0b9[_0xd4de('0x28')]()[_0xd4de('0x27')](function(){_0x534b37[_0xd4de('0x1a')](0xcc)[_0xd4de('0x1b')]();});}};}function handleEntityNotFound(_0xffe1cc,_0x36308c){return function(_0x2aa82a){if(!_0x2aa82a){_0xffe1cc[_0xd4de('0x19')](0x194);}return _0x2aa82a;};}function handleError(_0x2ea712,_0xb2d8a1){_0xb2d8a1=_0xb2d8a1||0x1f4;return function(_0x586126){logger[_0xd4de('0x29')](_0x586126[_0xd4de('0x2a')]);if(_0x586126['name']){delete _0x586126[_0xd4de('0x2b')];}_0x2ea712['status'](_0xb2d8a1)[_0xd4de('0x2c')](_0x586126);};}exports[_0xd4de('0x2d')]=function(_0x15d2b7,_0x4fa53a){var _0xd4de93={},_0x36f2f1={},_0x17f0a={'count':0x0,'rows':[]};var _0x50cb73=_[_0xd4de('0x2e')](db[_0xd4de('0x2f')]['rawAttributes'],function(_0x5103b5){return{'name':_0x5103b5['fieldName'],'type':_0x5103b5[_0xd4de('0x30')]['key']};});_0x36f2f1[_0xd4de('0x31')]=_[_0xd4de('0x2e')](_0x50cb73,_0xd4de('0x2b'));_0x36f2f1[_0xd4de('0x32')]=_['keys'](_0x15d2b7[_0xd4de('0x32')]);_0x36f2f1[_0xd4de('0x33')]=_['intersection'](_0x36f2f1[_0xd4de('0x31')],_0x36f2f1[_0xd4de('0x32')]);_0xd4de93['attributes']=_['intersection'](_0x36f2f1[_0xd4de('0x31')],qs[_0xd4de('0x34')](_0x15d2b7[_0xd4de('0x32')][_0xd4de('0x34')]));_0xd4de93['attributes']=_0xd4de93[_0xd4de('0x35')][_0xd4de('0x36')]?_0xd4de93['attributes']:_0x36f2f1[_0xd4de('0x31')];if(!_0x15d2b7[_0xd4de('0x32')][_0xd4de('0x37')](_0xd4de('0x38'))){_0xd4de93[_0xd4de('0x1e')]=qs[_0xd4de('0x1e')](_0x15d2b7['query']['limit']);_0xd4de93[_0xd4de('0x1f')]=qs[_0xd4de('0x1f')](_0x15d2b7[_0xd4de('0x32')]['offset']);}_0xd4de93[_0xd4de('0x39')]=qs[_0xd4de('0x3a')](_0x15d2b7['query'][_0xd4de('0x3a')]);_0xd4de93[_0xd4de('0x3b')]=qs[_0xd4de('0x33')](_[_0xd4de('0x3c')](_0x15d2b7['query'],_0x36f2f1['filters']),_0x50cb73);if(_0x15d2b7[_0xd4de('0x32')]['filter']){_0xd4de93[_0xd4de('0x3b')]=_['merge'](_0xd4de93[_0xd4de('0x3b')],{'$or':_[_0xd4de('0x2e')](_0x50cb73,function(_0x21cd77){if(_0x21cd77[_0xd4de('0x30')]!=='VIRTUAL'){var _0x21209d={};_0x21209d[_0x21cd77['name']]={'$like':'%'+_0x15d2b7[_0xd4de('0x32')][_0xd4de('0x3d')]+'%'};return _0x21209d;}})});}_0xd4de93=_[_0xd4de('0x3e')]({},_0xd4de93,_0x15d2b7[_0xd4de('0x3f')]);var _0x349c5f={'where':_0xd4de93[_0xd4de('0x3b')]};return db[_0xd4de('0x2f')]['count'](_0x349c5f)[_0xd4de('0x27')](function(_0x1eb001){_0x17f0a[_0xd4de('0x20')]=_0x1eb001;if(_0x15d2b7[_0xd4de('0x32')][_0xd4de('0x40')]){_0xd4de93['include']=[{'all':!![]}];}return db[_0xd4de('0x2f')][_0xd4de('0x41')](_0xd4de93);})[_0xd4de('0x27')](function(_0x593ee9){_0x17f0a[_0xd4de('0x42')]=_0x593ee9;return _0x17f0a;})[_0xd4de('0x27')](respondWithFilteredResult(_0x4fa53a,_0xd4de93))[_0xd4de('0x43')](handleError(_0x4fa53a,null));};exports['show']=function(_0x3b9026,_0x10a42c){var _0x419c49={'raw':![],'where':{'id':_0x3b9026[_0xd4de('0x44')]['id']}},_0x3f1e22={};_0x3f1e22[_0xd4de('0x31')]=_[_0xd4de('0x45')](db['ZendeskAccount'][_0xd4de('0x46')]);_0x3f1e22[_0xd4de('0x32')]=_[_0xd4de('0x45')](_0x3b9026['query']);_0x3f1e22[_0xd4de('0x33')]=_[_0xd4de('0x47')](_0x3f1e22[_0xd4de('0x31')],_0x3f1e22['query']);_0x419c49['attributes']=_[_0xd4de('0x47')](_0x3f1e22[_0xd4de('0x31')],qs['fields'](_0x3b9026[_0xd4de('0x32')][_0xd4de('0x34')]));_0x419c49[_0xd4de('0x35')]=_0x419c49[_0xd4de('0x35')]['length']?_0x419c49[_0xd4de('0x35')]:_0x3f1e22[_0xd4de('0x31')];if(_0x3b9026[_0xd4de('0x32')][_0xd4de('0x40')]){_0x419c49[_0xd4de('0x48')]=[{'all':!![]}];}_0x419c49=_[_0xd4de('0x3e')]({},_0x419c49,_0x3b9026['options']);return db[_0xd4de('0x2f')][_0xd4de('0x49')](_0x419c49)[_0xd4de('0x27')](handleEntityNotFound(_0x10a42c,null))[_0xd4de('0x27')](respondWithResult(_0x10a42c,null))[_0xd4de('0x43')](handleError(_0x10a42c,null));};exports[_0xd4de('0x4a')]=function(_0x40bf55,_0x425a7e){return db[_0xd4de('0x2f')][_0xd4de('0x4a')](_0x40bf55['body'],{})[_0xd4de('0x27')](respondWithResult(_0x425a7e,0xc9))[_0xd4de('0x43')](handleError(_0x425a7e,null));};exports[_0xd4de('0x26')]=function(_0x518bfe,_0x13a900){if(_0x518bfe[_0xd4de('0x4b')]['id']){delete _0x518bfe[_0xd4de('0x4b')]['id'];}return db[_0xd4de('0x2f')][_0xd4de('0x49')]({'where':{'id':_0x518bfe[_0xd4de('0x44')]['id']}})[_0xd4de('0x27')](handleEntityNotFound(_0x13a900,null))[_0xd4de('0x27')](saveUpdates(_0x518bfe[_0xd4de('0x4b')],null))[_0xd4de('0x27')](respondWithResult(_0x13a900,null))['catch'](handleError(_0x13a900,null));};exports[_0xd4de('0x28')]=function(_0x26d032,_0x215f85){return db[_0xd4de('0x2f')][_0xd4de('0x49')]({'where':{'id':_0x26d032['params']['id']}})['then'](handleEntityNotFound(_0x215f85,null))[_0xd4de('0x27')](removeEntity(_0x215f85,null))[_0xd4de('0x43')](handleError(_0x215f85,null));};exports['getConfigurations']=function(_0x48cb7d,_0x2d8589,_0x368081){var _0x377376={};var _0x199440={};var _0x34d772;var _0x15c8cd;return db[_0xd4de('0x2f')][_0xd4de('0x4c')]({'where':{'id':_0x48cb7d[_0xd4de('0x44')]['id']}})[_0xd4de('0x27')](handleEntityNotFound(_0x2d8589,null))[_0xd4de('0x27')](function(_0x2e1780){if(_0x2e1780){_0x34d772=_0x2e1780;_0x199440['model']=_[_0xd4de('0x45')](db[_0xd4de('0x4d')][_0xd4de('0x46')]);_0x199440[_0xd4de('0x32')]=_[_0xd4de('0x45')](_0x48cb7d[_0xd4de('0x32')]);_0x199440['filters']=_[_0xd4de('0x47')](_0x199440['model'],_0x199440['query']);_0x377376[_0xd4de('0x35')]=_[_0xd4de('0x47')](_0x199440[_0xd4de('0x31')],qs[_0xd4de('0x34')](_0x48cb7d['query'][_0xd4de('0x34')]));_0x377376[_0xd4de('0x35')]=_0x377376[_0xd4de('0x35')][_0xd4de('0x36')]?_0x377376[_0xd4de('0x35')]:_0x199440['model'];_0x377376['order']=qs['sort'](_0x48cb7d[_0xd4de('0x32')][_0xd4de('0x3a')]);_0x377376[_0xd4de('0x3b')]=qs[_0xd4de('0x33')](_['pick'](_0x48cb7d[_0xd4de('0x32')],_0x199440[_0xd4de('0x33')]));if(_0x48cb7d[_0xd4de('0x32')][_0xd4de('0x3d')]){_0x377376['where']=_[_0xd4de('0x3e')](_0x377376[_0xd4de('0x3b')],{'$or':_[_0xd4de('0x2e')](_0x377376[_0xd4de('0x35')],function(_0x598b60){var _0x4fd7c2={};_0x4fd7c2[_0x598b60]={'$like':'%'+_0x48cb7d['query'][_0xd4de('0x3d')]+'%'};return _0x4fd7c2;})});}_0x377376=_[_0xd4de('0x3e')]({},_0x377376,_0x48cb7d[_0xd4de('0x3f')]);return _0x34d772['getConfigurations'](_0x377376);}})[_0xd4de('0x27')](function(_0x3005c2){if(_0x3005c2){_0x15c8cd=_0x3005c2[_0xd4de('0x36')];if(!_0x48cb7d['query'][_0xd4de('0x37')]('nolimit')){_0x377376[_0xd4de('0x1e')]=qs[_0xd4de('0x1e')](_0x48cb7d[_0xd4de('0x32')][_0xd4de('0x1e')]);_0x377376[_0xd4de('0x1f')]=qs[_0xd4de('0x1f')](_0x48cb7d[_0xd4de('0x32')][_0xd4de('0x1f')]);}return _0x34d772['getConfigurations'](_0x377376);}})[_0xd4de('0x27')](function(_0x59f9d9){if(_0x59f9d9){return _0x59f9d9?{'count':_0x15c8cd,'rows':_0x59f9d9}:null;}})[_0xd4de('0x27')](respondWithResult(_0x2d8589,null))[_0xd4de('0x43')](handleError(_0x2d8589,null));};exports['addConfiguration']=function(_0x29c840,_0xb366b0,_0x21f7f7){if(_0x29c840[_0xd4de('0x4b')]['id']){delete _0x29c840[_0xd4de('0x4b')]['id'];}return db[_0xd4de('0x2f')][_0xd4de('0x4c')]({'where':{'id':_0x29c840[_0xd4de('0x44')]['id']}})[_0xd4de('0x27')](handleEntityNotFound(_0xb366b0,null))[_0xd4de('0x27')](function(_0x1e7e93){if(_0x1e7e93){_0x29c840[_0xd4de('0x4b')][_0xd4de('0x4e')]=_0x1e7e93['id'];_0x29c840['body'][_0xd4de('0x4f')]=integrations[_0xd4de('0x50')](_0x29c840[_0xd4de('0x4b')][_0xd4de('0x51')],_0x29c840[_0xd4de('0x4b')][_0xd4de('0x30')]);_0x29c840[_0xd4de('0x4b')][_0xd4de('0x52')]=integrations['getDescriptions'](_0x29c840[_0xd4de('0x4b')]['channel'],_0x29c840['body']['type']);return db[_0xd4de('0x4d')][_0xd4de('0x4a')](_0x29c840['body'],{'include':[{'model':db['ZendeskField'],'as':'Subjects'},{'model':db['ZendeskField'],'as':_0xd4de('0x52')}]});}return null;})['then'](respondWithResult(_0xb366b0,null))[_0xd4de('0x43')](handleError(_0xb366b0,null));};exports['getFields']=function(_0x1a0e6c,_0x223b1a,_0x4ee475){var _0x5df891='';return db['ZendeskAccount']['findOne']({'where':{'id':_0x1a0e6c[_0xd4de('0x44')]['id']},'attributes':['id',_0xd4de('0x53'),_0xd4de('0x54'),_0xd4de('0x55'),_0xd4de('0x56'),_0xd4de('0x57')]})['then'](handleEntityNotFound(_0x223b1a,null))['then'](function(_0x53cbd9){if(_0x53cbd9){_0x5df891=_0x53cbd9[_0xd4de('0x57')];var _0x2bb19d=_0x5df891['slice'](-0x1);if(_0x2bb19d==='/'){_0x5df891=_0x5df891[_0xd4de('0x58')](0x0,_0x5df891['lastIndexOf'](_0x2bb19d));}var _0x1bc101={'method':'GET','uri':util[_0xd4de('0x59')](_0xd4de('0x5a'),_0x5df891,'ticket_fields'),'json':!![]};switch(_0x53cbd9[_0xd4de('0x56')]){case'password':_0x1bc101[_0xd4de('0x5b')]={'Authorization':util[_0xd4de('0x59')](_0xd4de('0x5c'),new Buffer(util[_0xd4de('0x59')]('%s:%s',_0x53cbd9[_0xd4de('0x53')],_0x53cbd9[_0xd4de('0x54')]))[_0xd4de('0x5d')](_0xd4de('0x5e')))};break;case _0xd4de('0x55'):_0x1bc101[_0xd4de('0x5b')]={'Authorization':util[_0xd4de('0x59')](_0xd4de('0x5c'),new Buffer(util[_0xd4de('0x59')](_0xd4de('0x5f'),_0x53cbd9[_0xd4de('0x53')],_0x53cbd9[_0xd4de('0x55')]))[_0xd4de('0x5d')]('base64'))};break;default:throw new db[(_0xd4de('0x60'))]['ValidationError']('Unknown\x20authentication\x20type');}return rp(_0x1bc101);}})[_0xd4de('0x27')](function(_0x595ee){if(_0x595ee){var _0x5f197d=[_0xd4de('0x61'),_0xd4de('0x62'),_0xd4de('0x63'),_0xd4de('0x64')];_['remove'](_0x595ee[_0xd4de('0x65')],function(_0xee18fc){return _0x5f197d[_0xd4de('0x66')](_0xee18fc[_0xd4de('0x30')]);});return{'count':_0x595ee[_0xd4de('0x65')]['length'],'rows':_['map'](_0x595ee['ticket_fields'],function(_0x4a2467){return{'id':_0x4a2467['id'],'name':_0x4a2467[_0xd4de('0x67')]>0x7?_0x4a2467['title']:_0x4a2467[_0xd4de('0x30')],'custom':_0x4a2467['position']>0x7?!![]:![],'options':_0x4a2467[_0xd4de('0x68')]?_0x4a2467[_0xd4de('0x68')]:_0x4a2467[_0xd4de('0x69')]?_0x4a2467[_0xd4de('0x69')]:[]};})};}})[_0xd4de('0x27')](respondWithResult(_0x223b1a,null))[_0xd4de('0x43')](function(_0x15f056){var _0x31b518=_0x1a0e6c['query'][_0xd4de('0x6a')]?0x1f4:_0x15f056[_0xd4de('0x6b')]||0x1f4;logger[_0xd4de('0x29')](_0xd4de('0x6c'),'getFields',_0x31b518,JSON[_0xd4de('0x6d')](_0x15f056));delete _0x15f056[_0xd4de('0x2b')];if(_0x31b518===0x191){_0x31b518=0x190;}_0x223b1a['status'](_0x31b518)[_0xd4de('0x2c')](_0x1a0e6c[_0xd4de('0x32')][_0xd4de('0x6a')]?{'message':_0xd4de('0x6e'),'statusCode':_0x15f056[_0xd4de('0x6b')]}:_0x15f056);});};
\ No newline at end of file
index 1f87d7c..696e6ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22b0=['../../components/integrations/configuration','exports','define','ZendeskAccount','int_zendesk_accounts','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZendeskAccount.attributes'];(function(_0xa4f636,_0xaca1b6){var _0x37e02a=function(_0x49bd47){while(--_0x49bd47){_0xa4f636['push'](_0xa4f636['shift']());}};_0x37e02a(++_0xaca1b6);}(_0x22b0,0x17c));var _0x022b=function(_0x50278b,_0xfb0e2c){_0x50278b=_0x50278b-0x0;var _0x2c952f=_0x22b0[_0x50278b];return _0x2c952f;};'use strict';var _=require('lodash');var util=require(_0x022b('0x0'));var logger=require(_0x022b('0x1'))(_0x022b('0x2'));var moment=require(_0x022b('0x3'));var BPromise=require(_0x022b('0x4'));var rp=require(_0x022b('0x5'));var fs=require('fs');var path=require(_0x022b('0x6'));var rimraf=require(_0x022b('0x7'));var config=require(_0x022b('0x8'));var attributes=require(_0x022b('0x9'));var integrations=require(_0x022b('0xa'));module[_0x022b('0xb')]=function(_0x328696,_0x18e752){return _0x328696[_0x022b('0xc')](_0x022b('0xd'),attributes,{'tableName':_0x022b('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb252=['exports','define','lodash','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./intZendeskAccount.attributes','../../components/integrations/configuration'];(function(_0xa98302,_0x844f27){var _0x1ad8e3=function(_0x57e51d){while(--_0x57e51d){_0xa98302['push'](_0xa98302['shift']());}};_0x1ad8e3(++_0x844f27);}(_0xb252,0x176));var _0x2b25=function(_0x5a3625,_0x12ec42){_0x5a3625=_0x5a3625-0x0;var _0x4e273c=_0xb252[_0x5a3625];return _0x4e273c;};'use strict';var _=require(_0x2b25('0x0'));var util=require(_0x2b25('0x1'));var logger=require(_0x2b25('0x2'))('api');var moment=require(_0x2b25('0x3'));var BPromise=require(_0x2b25('0x4'));var rp=require(_0x2b25('0x5'));var fs=require('fs');var path=require(_0x2b25('0x6'));var rimraf=require('rimraf');var config=require(_0x2b25('0x7'));var attributes=require(_0x2b25('0x8'));var integrations=require(_0x2b25('0x9'));module[_0x2b25('0xa')]=function(_0x2bba50,_0x3839e0){return _0x2bba50[_0x2b25('0xb')]('ZendeskAccount',attributes,{'tableName':'int_zendesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d617096..45f3246 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1b4=['where','attributes','limit','include','model','map','GetZendeskAccount','catch','ShowZendeskAccount','find','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info','ZendeskAccount,\x20%s,\x20%s','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','ZendeskAccount','findAll','options','raw'];(function(_0x45d450,_0x2016c0){var _0x41775a=function(_0x402eca){while(--_0x402eca){_0x45d450['push'](_0x45d450['shift']());}};_0x41775a(++_0x2016c0);}(_0xa1b4,0xff));var _0x4a1b=function(_0x5bd4f6,_0xf4e45c){_0x5bd4f6=_0x5bd4f6-0x0;var _0x33a165=_0xa1b4[_0x5bd4f6];return _0x33a165;};'use strict';var _=require(_0x4a1b('0x0'));var util=require(_0x4a1b('0x1'));var moment=require(_0x4a1b('0x2'));var BPromise=require(_0x4a1b('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4a1b('0x4'))['db'];var utils=require(_0x4a1b('0x5'));var logger=require('../../config/logger')(_0x4a1b('0x6'));var config=require('../../config/environment');var jayson=require(_0x4a1b('0x7'));var client=jayson[_0x4a1b('0x8')][_0x4a1b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5532c6,_0xea63cc,_0x30c54c){return new BPromise(function(_0x2ac768,_0x5ef7d0){return client[_0x4a1b('0xa')](_0x5532c6,_0x30c54c)[_0x4a1b('0xb')](function(_0x3c574d){logger[_0x4a1b('0xc')](_0x4a1b('0xd'),_0xea63cc,'request\x20sent');logger[_0x4a1b('0xe')](_0x4a1b('0xf'),_0xea63cc,_0x4a1b('0x10'),JSON[_0x4a1b('0x11')](_0x3c574d));if(_0x3c574d['error']){if(_0x3c574d[_0x4a1b('0x12')]['code']===0x1f4){logger['error'](_0x4a1b('0xd'),_0xea63cc,_0x3c574d[_0x4a1b('0x12')][_0x4a1b('0x13')]);return _0x5ef7d0(_0x3c574d[_0x4a1b('0x12')][_0x4a1b('0x13')]);}logger['error'](_0x4a1b('0xd'),_0xea63cc,_0x3c574d[_0x4a1b('0x12')][_0x4a1b('0x13')]);return _0x2ac768(_0x3c574d[_0x4a1b('0x12')][_0x4a1b('0x13')]);}else{logger['info'](_0x4a1b('0xd'),_0xea63cc,_0x4a1b('0x10'));_0x2ac768(_0x3c574d[_0x4a1b('0x14')][_0x4a1b('0x13')]);}})['catch'](function(_0x536a48){logger[_0x4a1b('0x12')](_0x4a1b('0xd'),_0xea63cc,_0x536a48);_0x5ef7d0(_0x536a48);});});}exports['GetZendeskAccount']=function(_0x5e5cdb){var _0x3ac718=this;return new Promise(function(_0x322830,_0x310747){return db[_0x4a1b('0x15')][_0x4a1b('0x16')]({'raw':_0x5e5cdb[_0x4a1b('0x17')]?_0x5e5cdb[_0x4a1b('0x17')][_0x4a1b('0x18')]===undefined?!![]:![]:!![],'where':_0x5e5cdb[_0x4a1b('0x17')]?_0x5e5cdb[_0x4a1b('0x17')][_0x4a1b('0x19')]||null:null,'attributes':_0x5e5cdb[_0x4a1b('0x17')]?_0x5e5cdb[_0x4a1b('0x17')][_0x4a1b('0x1a')]||null:null,'limit':_0x5e5cdb[_0x4a1b('0x17')]?_0x5e5cdb[_0x4a1b('0x17')][_0x4a1b('0x1b')]||null:null,'include':_0x5e5cdb[_0x4a1b('0x17')]?_0x5e5cdb['options']['include']?_['map'](_0x5e5cdb[_0x4a1b('0x17')][_0x4a1b('0x1c')],function(_0x5edfa2){return{'model':db[_0x5edfa2[_0x4a1b('0x1d')]],'as':_0x5edfa2['as'],'attributes':_0x5edfa2[_0x4a1b('0x1a')],'include':_0x5edfa2[_0x4a1b('0x1c')]?_[_0x4a1b('0x1e')](_0x5edfa2[_0x4a1b('0x1c')],function(_0x8ab852){return{'model':db[_0x8ab852[_0x4a1b('0x1d')]],'as':_0x8ab852['as'],'attributes':_0x8ab852['attributes'],'include':_0x8ab852['include']?_[_0x4a1b('0x1e')](_0x8ab852[_0x4a1b('0x1c')],function(_0x4ceb97){return{'model':db[_0x4ceb97[_0x4a1b('0x1d')]],'as':_0x4ceb97['as'],'attributes':_0x4ceb97[_0x4a1b('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x4a1b('0xb')](function(_0x547ae0){logger['info'](_0x4a1b('0x1f'),_0x5e5cdb);logger['debug'](_0x4a1b('0x1f'),_0x5e5cdb,JSON[_0x4a1b('0x11')](_0x547ae0));_0x322830(_0x547ae0);})[_0x4a1b('0x20')](function(_0x535602){logger[_0x4a1b('0x12')]('GetZendeskAccount',_0x535602[_0x4a1b('0x13')],_0x5e5cdb);_0x310747(_0x3ac718[_0x4a1b('0x12')](0x1f4,_0x535602[_0x4a1b('0x13')]));});});};exports[_0x4a1b('0x21')]=function(_0x2f5772){var _0x2c7b9a=this;return new Promise(function(_0x705eea,_0x4bc97d){return db[_0x4a1b('0x15')][_0x4a1b('0x22')]({'raw':_0x2f5772[_0x4a1b('0x17')]?_0x2f5772[_0x4a1b('0x17')][_0x4a1b('0x18')]===undefined?!![]:![]:!![],'where':_0x2f5772[_0x4a1b('0x17')]?_0x2f5772[_0x4a1b('0x17')][_0x4a1b('0x19')]||null:null,'attributes':_0x2f5772[_0x4a1b('0x17')]?_0x2f5772[_0x4a1b('0x17')][_0x4a1b('0x1a')]||null:null,'include':_0x2f5772[_0x4a1b('0x17')]?_0x2f5772['options'][_0x4a1b('0x1c')]?_[_0x4a1b('0x1e')](_0x2f5772['options'][_0x4a1b('0x1c')],function(_0x1511fc){return{'model':db[_0x1511fc['model']],'as':_0x1511fc['as'],'attributes':_0x1511fc['attributes'],'include':_0x1511fc['include']?_['map'](_0x1511fc[_0x4a1b('0x1c')],function(_0x28b50b){return{'model':db[_0x28b50b[_0x4a1b('0x1d')]],'as':_0x28b50b['as'],'attributes':_0x28b50b[_0x4a1b('0x1a')],'include':_0x28b50b['include']?_['map'](_0x28b50b[_0x4a1b('0x1c')],function(_0x3e9cfd){return{'model':db[_0x3e9cfd['model']],'as':_0x3e9cfd['as'],'attributes':_0x3e9cfd[_0x4a1b('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x4a1b('0xb')](function(_0x54e96d){logger[_0x4a1b('0xc')](_0x4a1b('0x21'),_0x2f5772);logger[_0x4a1b('0xe')](_0x4a1b('0x21'),_0x2f5772,JSON[_0x4a1b('0x11')](_0x54e96d));_0x705eea(_0x54e96d);})['catch'](function(_0x28a16f){logger['error'](_0x4a1b('0x21'),_0x28a16f[_0x4a1b('0x13')],_0x2f5772);_0x4bc97d(_0x2c7b9a[_0x4a1b('0x12')](0x1f4,_0x28a16f[_0x4a1b('0x13')]));});});};
\ No newline at end of file
+var _0xf568=['moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ZendeskAccount','findAll','options','raw','where','attributes','include','map','model','GetZendeskAccount','ShowZendeskAccount','find','catch','lodash','util'];(function(_0x2ad9f1,_0x24b057){var _0x3fb56c=function(_0x5af8b0){while(--_0x5af8b0){_0x2ad9f1['push'](_0x2ad9f1['shift']());}};_0x3fb56c(++_0x24b057);}(_0xf568,0x67));var _0x8f56=function(_0x17861c,_0x1b24b){_0x17861c=_0x17861c-0x0;var _0x1fd17e=_0xf568[_0x17861c];return _0x1fd17e;};'use strict';var _=require(_0x8f56('0x0'));var util=require(_0x8f56('0x1'));var moment=require(_0x8f56('0x2'));var BPromise=require('bluebird');var rs=require(_0x8f56('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8f56('0x4'))['db'];var utils=require(_0x8f56('0x5'));var logger=require('../../config/logger')(_0x8f56('0x6'));var config=require(_0x8f56('0x7'));var jayson=require(_0x8f56('0x8'));var client=jayson[_0x8f56('0x9')][_0x8f56('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59a72c,_0x16e025,_0x2a71dc){return new BPromise(function(_0x233e56,_0x326c4b){return client[_0x8f56('0xb')](_0x59a72c,_0x2a71dc)[_0x8f56('0xc')](function(_0x4d550d){logger[_0x8f56('0xd')](_0x8f56('0xe'),_0x16e025,_0x8f56('0xf'));logger[_0x8f56('0x10')](_0x8f56('0x11'),_0x16e025,_0x8f56('0xf'),JSON[_0x8f56('0x12')](_0x4d550d));if(_0x4d550d[_0x8f56('0x13')]){if(_0x4d550d[_0x8f56('0x13')][_0x8f56('0x14')]===0x1f4){logger[_0x8f56('0x13')](_0x8f56('0xe'),_0x16e025,_0x4d550d[_0x8f56('0x13')]['message']);return _0x326c4b(_0x4d550d[_0x8f56('0x13')][_0x8f56('0x15')]);}logger[_0x8f56('0x13')](_0x8f56('0xe'),_0x16e025,_0x4d550d['error'][_0x8f56('0x15')]);return _0x233e56(_0x4d550d[_0x8f56('0x13')][_0x8f56('0x15')]);}else{logger[_0x8f56('0xd')]('ZendeskAccount,\x20%s,\x20%s',_0x16e025,_0x8f56('0xf'));_0x233e56(_0x4d550d['result'][_0x8f56('0x15')]);}})['catch'](function(_0x790e74){logger['error']('ZendeskAccount,\x20%s,\x20%s',_0x16e025,_0x790e74);_0x326c4b(_0x790e74);});});}exports['GetZendeskAccount']=function(_0x14d017){var _0x216612=this;return new Promise(function(_0x31b55e,_0x405706){return db[_0x8f56('0x16')][_0x8f56('0x17')]({'raw':_0x14d017[_0x8f56('0x18')]?_0x14d017['options'][_0x8f56('0x19')]===undefined?!![]:![]:!![],'where':_0x14d017[_0x8f56('0x18')]?_0x14d017['options'][_0x8f56('0x1a')]||null:null,'attributes':_0x14d017['options']?_0x14d017['options'][_0x8f56('0x1b')]||null:null,'limit':_0x14d017[_0x8f56('0x18')]?_0x14d017['options']['limit']||null:null,'include':_0x14d017[_0x8f56('0x18')]?_0x14d017[_0x8f56('0x18')][_0x8f56('0x1c')]?_[_0x8f56('0x1d')](_0x14d017[_0x8f56('0x18')]['include'],function(_0x5b7216){return{'model':db[_0x5b7216[_0x8f56('0x1e')]],'as':_0x5b7216['as'],'attributes':_0x5b7216[_0x8f56('0x1b')],'include':_0x5b7216[_0x8f56('0x1c')]?_[_0x8f56('0x1d')](_0x5b7216[_0x8f56('0x1c')],function(_0x194626){return{'model':db[_0x194626['model']],'as':_0x194626['as'],'attributes':_0x194626[_0x8f56('0x1b')],'include':_0x194626[_0x8f56('0x1c')]?_[_0x8f56('0x1d')](_0x194626[_0x8f56('0x1c')],function(_0x958175){return{'model':db[_0x958175[_0x8f56('0x1e')]],'as':_0x958175['as'],'attributes':_0x958175['attributes']};}):[]};}):[]};}):[]:[]})[_0x8f56('0xc')](function(_0x415c52){logger[_0x8f56('0xd')](_0x8f56('0x1f'),_0x14d017);logger['debug'](_0x8f56('0x1f'),_0x14d017,JSON[_0x8f56('0x12')](_0x415c52));_0x31b55e(_0x415c52);})['catch'](function(_0x2b2a00){logger[_0x8f56('0x13')](_0x8f56('0x1f'),_0x2b2a00[_0x8f56('0x15')],_0x14d017);_0x405706(_0x216612[_0x8f56('0x13')](0x1f4,_0x2b2a00[_0x8f56('0x15')]));});});};exports[_0x8f56('0x20')]=function(_0x3ca341){var _0x2a37bd=this;return new Promise(function(_0x29dcc5,_0x3a942b){return db['ZendeskAccount'][_0x8f56('0x21')]({'raw':_0x3ca341[_0x8f56('0x18')]?_0x3ca341['options'][_0x8f56('0x19')]===undefined?!![]:![]:!![],'where':_0x3ca341[_0x8f56('0x18')]?_0x3ca341[_0x8f56('0x18')]['where']||null:null,'attributes':_0x3ca341['options']?_0x3ca341['options']['attributes']||null:null,'include':_0x3ca341[_0x8f56('0x18')]?_0x3ca341['options']['include']?_['map'](_0x3ca341[_0x8f56('0x18')]['include'],function(_0x5181b8){return{'model':db[_0x5181b8[_0x8f56('0x1e')]],'as':_0x5181b8['as'],'attributes':_0x5181b8[_0x8f56('0x1b')],'include':_0x5181b8['include']?_[_0x8f56('0x1d')](_0x5181b8[_0x8f56('0x1c')],function(_0x52deaf){return{'model':db[_0x52deaf[_0x8f56('0x1e')]],'as':_0x52deaf['as'],'attributes':_0x52deaf['attributes'],'include':_0x52deaf[_0x8f56('0x1c')]?_[_0x8f56('0x1d')](_0x52deaf[_0x8f56('0x1c')],function(_0x485bdb){return{'model':db[_0x485bdb[_0x8f56('0x1e')]],'as':_0x485bdb['as'],'attributes':_0x485bdb['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x24875f){logger[_0x8f56('0xd')](_0x8f56('0x20'),_0x3ca341);logger['debug']('ShowZendeskAccount',_0x3ca341,JSON['stringify'](_0x24875f));_0x29dcc5(_0x24875f);})[_0x8f56('0x22')](function(_0x2fbd03){logger['error'](_0x8f56('0x20'),_0x2fbd03[_0x8f56('0x15')],_0x3ca341);_0x3a942b(_0x2a37bd[_0x8f56('0x13')](0x1f4,_0x2fbd03[_0x8f56('0x15')]));});});};
\ No newline at end of file
index 0df9aff..fddf442 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['put','update','delete','/:id','destroy','exports','multer','Router','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','isAuthenticated','index','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/tags','getTags','create','post','setTags'];(function(_0x24b91f,_0x176650){var _0x51336e=function(_0x19af03){while(--_0x19af03){_0x24b91f['push'](_0x24b91f['shift']());}};_0x51336e(++_0x176650);}(_0xf4eb,0xec));var _0xbf4e=function(_0x4ccadb,_0x513ba8){_0x4ccadb=_0x4ccadb-0x0;var _0x493498=_0xf4eb[_0x4ccadb];return _0x493498;};'use strict';var multer=require(_0xbf4e('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xbf4e('0x1')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xbf4e('0x2'));var config=require(_0xbf4e('0x3'));var controller=require(_0xbf4e('0x4'));router[_0xbf4e('0x5')]('/',auth[_0xbf4e('0x6')](),controller[_0xbf4e('0x7')]);router[_0xbf4e('0x5')]('/:id',auth[_0xbf4e('0x6')](),controller['show']);router['get'](_0xbf4e('0x8'),auth[_0xbf4e('0x6')](),controller[_0xbf4e('0x9')]);router[_0xbf4e('0x5')](_0xbf4e('0xa'),auth[_0xbf4e('0x6')](),controller[_0xbf4e('0xb')]);router['get']('/:id/descriptions',auth[_0xbf4e('0x6')](),controller['getDescriptions']);router[_0xbf4e('0x5')](_0xbf4e('0xc'),auth['isAuthenticated'](),controller[_0xbf4e('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0xbf4e('0xe')]);router[_0xbf4e('0xf')](_0xbf4e('0xc'),auth[_0xbf4e('0x6')](),controller[_0xbf4e('0x10')]);router[_0xbf4e('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xbf4e('0x12')]);router[_0xbf4e('0x13')](_0xbf4e('0x14'),auth['isAuthenticated'](),controller[_0xbf4e('0x15')]);module[_0xbf4e('0x16')]=router;
\ No newline at end of file
+var _0x0713=['/:id/subjects','getSubjects','getDescriptions','/:id/tags','post','setTags','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields'];(function(_0x185cd2,_0xe226d6){var _0x5b8902=function(_0x374abc){while(--_0x374abc){_0x185cd2['push'](_0x185cd2['shift']());}};_0x5b8902(++_0xe226d6);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));var controller=require(_0x3071('0x7'));router[_0x3071('0x8')]('/',auth[_0x3071('0x9')](),controller[_0x3071('0xa')]);router[_0x3071('0x8')](_0x3071('0xb'),auth[_0x3071('0x9')](),controller[_0x3071('0xc')]);router[_0x3071('0x8')](_0x3071('0xd'),auth[_0x3071('0x9')](),controller['getFields']);router[_0x3071('0x8')](_0x3071('0xe'),auth[_0x3071('0x9')](),controller[_0x3071('0xf')]);router[_0x3071('0x8')]('/:id/descriptions',auth[_0x3071('0x9')](),controller[_0x3071('0x10')]);router[_0x3071('0x8')](_0x3071('0x11'),auth[_0x3071('0x9')](),controller['getTags']);router['post']('/',auth[_0x3071('0x9')](),controller['create']);router[_0x3071('0x12')](_0x3071('0x11'),auth['isAuthenticated'](),controller[_0x3071('0x13')]);router['put'](_0x3071('0xb'),auth[_0x3071('0x9')](),controller[_0x3071('0x14')]);router[_0x3071('0x15')](_0x3071('0xb'),auth[_0x3071('0x9')](),controller[_0x3071('0x16')]);module[_0x3071('0x17')]=router;
\ No newline at end of file
index 0e121da..2e99947 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b76=['sequelize','exports','STRING'];(function(_0x5aa360,_0x83e723){var _0x16e7f1=function(_0x5efa33){while(--_0x5efa33){_0x5aa360['push'](_0x5aa360['shift']());}};_0x16e7f1(++_0x83e723);}(_0x4b76,0x162));var _0x64b7=function(_0x47c392,_0x1fbc8f){_0x47c392=_0x47c392-0x0;var _0x3a1fa5=_0x4b76[_0x47c392];return _0x3a1fa5;};'use strict';var Sequelize=require(_0x64b7('0x0'));module[_0x64b7('0x1')]={'name':{'type':Sequelize[_0x64b7('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x29f4=['exports','STRING','sequelize'];(function(_0x2c8b7a,_0x483fe0){var _0x1c1cf9=function(_0x464bcf){while(--_0x464bcf){_0x2c8b7a['push'](_0x2c8b7a['shift']());}};_0x1c1cf9(++_0x483fe0);}(_0x29f4,0x152));var _0x429f=function(_0x494b32,_0x2f82e5){_0x494b32=_0x494b32-0x0;var _0x45efd0=_0x29f4[_0x494b32];return _0x45efd0;};'use strict';var Sequelize=require(_0x429f('0x0'));module[_0x429f('0x1')]={'name':{'type':Sequelize[_0x429f('0x2')]},'description':{'type':Sequelize[_0x429f('0x2')]}};
\ No newline at end of file
index a3126de..f36844a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x940c=['Tag','getTags','setTags','ids','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','limit','count','offset','set','Content-Range','json','save','then','error','name','send','index','map','ZendeskConfiguration','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','catch','params','keys','includeAll','find','create','body','update','destroy','getFields','findOne','ZendeskField','rawAttributes','getSubjects','getDescriptions'];(function(_0x42bdad,_0x12836c){var _0x122626=function(_0x2eb29c){while(--_0x2eb29c){_0x42bdad['push'](_0x42bdad['shift']());}};_0x122626(++_0x12836c);}(_0x940c,0x19e));var _0xc940=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x940c[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xc940('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc940('0x1'));var jsonpatch=require(_0xc940('0x2'));var rp=require(_0xc940('0x3'));var moment=require(_0xc940('0x4'));var BPromise=require(_0xc940('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xc940('0x6'));var sox=require(_0xc940('0x7'));var csv=require('to-csv');var ejs=require(_0xc940('0x8'));var fs=require('fs');var fs_extra=require(_0xc940('0x9'));var _=require(_0xc940('0xa'));var squel=require(_0xc940('0xb'));var crypto=require(_0xc940('0xc'));var jsforce=require(_0xc940('0xd'));var deskjs=require(_0xc940('0xe'));var toCsv=require(_0xc940('0xf'));var querystring=require(_0xc940('0x10'));var Papa=require(_0xc940('0x11'));var Redis=require(_0xc940('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xc940('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc940('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0xc940('0x15'));var config=require(_0xc940('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xc940('0x17'))['db'];function respondWithStatusCode(_0x2ffd9b,_0x12df1e){_0x12df1e=_0x12df1e||0xcc;return function(_0x250107){if(_0x250107){return _0x2ffd9b[_0xc940('0x18')](_0x12df1e);}return _0x2ffd9b[_0xc940('0x19')](_0x12df1e)[_0xc940('0x1a')]();};}function respondWithResult(_0x3e6776,_0x4cd5f4){_0x4cd5f4=_0x4cd5f4||0xc8;return function(_0x31f52f){if(_0x31f52f){return _0x3e6776[_0xc940('0x19')](_0x4cd5f4)['json'](_0x31f52f);}};}function respondWithFilteredResult(_0x15c537,_0x2c774b){return function(_0x14f439){if(_0x14f439){var _0x34740f=typeof _0x2c774b['offset']==='undefined'&&typeof _0x2c774b[_0xc940('0x1b')]==='undefined';var _0x2cfbc3=_0x14f439[_0xc940('0x1c')];var _0x45b9f2=_0x34740f?0x0:_0x2c774b[_0xc940('0x1d')];var _0x1ddec9=_0x34740f?_0x14f439[_0xc940('0x1c')]:_0x2c774b['offset']+_0x2c774b[_0xc940('0x1b')];var _0x336a53;if(_0x1ddec9>=_0x2cfbc3){_0x1ddec9=_0x2cfbc3;_0x336a53=0xc8;}else{_0x336a53=0xce;}_0x15c537[_0xc940('0x19')](_0x336a53);return _0x15c537[_0xc940('0x1e')](_0xc940('0x1f'),_0x45b9f2+'-'+_0x1ddec9+'/'+_0x2cfbc3)[_0xc940('0x20')](_0x14f439);}return null;};}function patchUpdates(_0x337a82){return function(_0x4518fc){try{jsonpatch['apply'](_0x4518fc,_0x337a82,!![]);}catch(_0x388608){return BPromise['reject'](_0x388608);}return _0x4518fc[_0xc940('0x21')]();};}function saveUpdates(_0x479245,_0x59645d){return function(_0x35d4b4){if(_0x35d4b4){return _0x35d4b4['update'](_0x479245)[_0xc940('0x22')](function(_0x8d324d){return _0x8d324d;});}return null;};}function removeEntity(_0xce39be,_0x5df103){return function(_0x4e73f9){if(_0x4e73f9){return _0x4e73f9['destroy']()[_0xc940('0x22')](function(){_0xce39be[_0xc940('0x19')](0xcc)[_0xc940('0x1a')]();});}};}function handleEntityNotFound(_0x476dc2,_0x536208){return function(_0x439799){if(!_0x439799){_0x476dc2[_0xc940('0x18')](0x194);}return _0x439799;};}function handleError(_0x48a069,_0x559833){_0x559833=_0x559833||0x1f4;return function(_0x472371){logger[_0xc940('0x23')](_0x472371['stack']);if(_0x472371[_0xc940('0x24')]){delete _0x472371[_0xc940('0x24')];}_0x48a069[_0xc940('0x19')](_0x559833)[_0xc940('0x25')](_0x472371);};}exports[_0xc940('0x26')]=function(_0x4fda59,_0x4ebbd1){var _0xc9e010={},_0x5efa88={},_0x55897e={'count':0x0,'rows':[]};var _0x4957b7=_[_0xc940('0x27')](db[_0xc940('0x28')]['rawAttributes'],function(_0x155150){return{'name':_0x155150[_0xc940('0x29')],'type':_0x155150[_0xc940('0x2a')][_0xc940('0x2b')]};});_0x5efa88[_0xc940('0x2c')]=_[_0xc940('0x27')](_0x4957b7,'name');_0x5efa88['query']=_['keys'](_0x4fda59[_0xc940('0x2d')]);_0x5efa88[_0xc940('0x2e')]=_['intersection'](_0x5efa88['model'],_0x5efa88['query']);_0xc9e010['attributes']=_[_0xc940('0x2f')](_0x5efa88[_0xc940('0x2c')],qs[_0xc940('0x30')](_0x4fda59['query']['fields']));_0xc9e010[_0xc940('0x31')]=_0xc9e010[_0xc940('0x31')][_0xc940('0x32')]?_0xc9e010[_0xc940('0x31')]:_0x5efa88[_0xc940('0x2c')];if(!_0x4fda59[_0xc940('0x2d')][_0xc940('0x33')](_0xc940('0x34'))){_0xc9e010[_0xc940('0x1b')]=qs[_0xc940('0x1b')](_0x4fda59[_0xc940('0x2d')]['limit']);_0xc9e010['offset']=qs[_0xc940('0x1d')](_0x4fda59[_0xc940('0x2d')][_0xc940('0x1d')]);}_0xc9e010[_0xc940('0x35')]=qs[_0xc940('0x36')](_0x4fda59[_0xc940('0x2d')]['sort']);_0xc9e010[_0xc940('0x37')]=qs['filters'](_[_0xc940('0x38')](_0x4fda59[_0xc940('0x2d')],_0x5efa88[_0xc940('0x2e')]),_0x4957b7);if(_0x4fda59[_0xc940('0x2d')][_0xc940('0x39')]){_0xc9e010['where']=_[_0xc940('0x3a')](_0xc9e010[_0xc940('0x37')],{'$or':_[_0xc940('0x27')](_0x4957b7,function(_0x5e1d24){if(_0x5e1d24[_0xc940('0x2a')]!==_0xc940('0x3b')){var _0x116bbe={};_0x116bbe[_0x5e1d24[_0xc940('0x24')]]={'$like':'%'+_0x4fda59[_0xc940('0x2d')][_0xc940('0x39')]+'%'};return _0x116bbe;}})});}_0xc9e010=_[_0xc940('0x3a')]({},_0xc9e010,_0x4fda59[_0xc940('0x3c')]);var _0x2ab074={'where':_0xc9e010[_0xc940('0x37')]};return db['ZendeskConfiguration']['count'](_0x2ab074)[_0xc940('0x22')](function(_0x151de6){_0x55897e['count']=_0x151de6;if(_0x4fda59[_0xc940('0x2d')]['includeAll']){_0xc9e010['include']=[{'all':!![]}];}return db[_0xc940('0x28')][_0xc940('0x3d')](_0xc9e010);})['then'](function(_0x587f4d){_0x55897e[_0xc940('0x3e')]=_0x587f4d;return _0x55897e;})[_0xc940('0x22')](respondWithFilteredResult(_0x4ebbd1,_0xc9e010))[_0xc940('0x3f')](handleError(_0x4ebbd1,null));};exports['show']=function(_0xa99982,_0x1b3be0){var _0x153c87={'raw':![],'where':{'id':_0xa99982[_0xc940('0x40')]['id']}},_0x218f0b={};_0x218f0b['model']=_[_0xc940('0x41')](db[_0xc940('0x28')]['rawAttributes']);_0x218f0b[_0xc940('0x2d')]=_[_0xc940('0x41')](_0xa99982[_0xc940('0x2d')]);_0x218f0b[_0xc940('0x2e')]=_['intersection'](_0x218f0b[_0xc940('0x2c')],_0x218f0b[_0xc940('0x2d')]);_0x153c87[_0xc940('0x31')]=_['intersection'](_0x218f0b[_0xc940('0x2c')],qs[_0xc940('0x30')](_0xa99982[_0xc940('0x2d')]['fields']));_0x153c87[_0xc940('0x31')]=_0x153c87[_0xc940('0x31')]['length']?_0x153c87[_0xc940('0x31')]:_0x218f0b['model'];if(_0xa99982[_0xc940('0x2d')][_0xc940('0x42')]){_0x153c87['include']=[{'all':!![]}];}_0x153c87=_[_0xc940('0x3a')]({},_0x153c87,_0xa99982[_0xc940('0x3c')]);return db[_0xc940('0x28')][_0xc940('0x43')](_0x153c87)[_0xc940('0x22')](handleEntityNotFound(_0x1b3be0,null))[_0xc940('0x22')](respondWithResult(_0x1b3be0,null))['catch'](handleError(_0x1b3be0,null));};exports[_0xc940('0x44')]=function(_0x5e79dd,_0x48a003){return db[_0xc940('0x28')][_0xc940('0x44')](_0x5e79dd[_0xc940('0x45')],{})[_0xc940('0x22')](respondWithResult(_0x48a003,0xc9))[_0xc940('0x3f')](handleError(_0x48a003,null));};exports[_0xc940('0x46')]=function(_0x244a20,_0x15c680){if(_0x244a20[_0xc940('0x45')]['id']){delete _0x244a20[_0xc940('0x45')]['id'];}return db[_0xc940('0x28')][_0xc940('0x43')]({'where':{'id':_0x244a20[_0xc940('0x40')]['id']}})['then'](handleEntityNotFound(_0x15c680,null))[_0xc940('0x22')](saveUpdates(_0x244a20[_0xc940('0x45')],null))['then'](respondWithResult(_0x15c680,null))['catch'](handleError(_0x15c680,null));};exports[_0xc940('0x47')]=function(_0x38ff27,_0x9b56d6){return db[_0xc940('0x28')][_0xc940('0x43')]({'where':{'id':_0x38ff27[_0xc940('0x40')]['id']}})[_0xc940('0x22')](handleEntityNotFound(_0x9b56d6,null))[_0xc940('0x22')](removeEntity(_0x9b56d6,null))['catch'](handleError(_0x9b56d6,null));};exports[_0xc940('0x48')]=function(_0x5a279f,_0x598b82,_0x135b37){var _0x1b64cc={};var _0x18b974={};var _0x3f008a;var _0x31b99c;return db[_0xc940('0x28')][_0xc940('0x49')]({'where':{'id':_0x5a279f[_0xc940('0x40')]['id']}})['then'](handleEntityNotFound(_0x598b82,null))[_0xc940('0x22')](function(_0x32bc63){if(_0x32bc63){_0x3f008a=_0x32bc63;_0x18b974[_0xc940('0x2c')]=_[_0xc940('0x41')](db[_0xc940('0x4a')][_0xc940('0x4b')]);_0x18b974[_0xc940('0x2d')]=_['keys'](_0x5a279f['query']);_0x18b974['filters']=_[_0xc940('0x2f')](_0x18b974[_0xc940('0x2c')],_0x18b974[_0xc940('0x2d')]);_0x1b64cc[_0xc940('0x31')]=_[_0xc940('0x2f')](_0x18b974[_0xc940('0x2c')],qs[_0xc940('0x30')](_0x5a279f[_0xc940('0x2d')][_0xc940('0x30')]));_0x1b64cc['attributes']=_0x1b64cc[_0xc940('0x31')][_0xc940('0x32')]?_0x1b64cc[_0xc940('0x31')]:_0x18b974['model'];_0x1b64cc['order']=qs[_0xc940('0x36')](_0x5a279f[_0xc940('0x2d')][_0xc940('0x36')]);_0x1b64cc[_0xc940('0x37')]=qs['filters'](_[_0xc940('0x38')](_0x5a279f['query'],_0x18b974[_0xc940('0x2e')]));if(_0x5a279f[_0xc940('0x2d')][_0xc940('0x39')]){_0x1b64cc[_0xc940('0x37')]=_[_0xc940('0x3a')](_0x1b64cc[_0xc940('0x37')],{'$or':_['map'](_0x1b64cc[_0xc940('0x31')],function(_0x182f93){var _0x4348bc={};_0x4348bc[_0x182f93]={'$like':'%'+_0x5a279f['query'][_0xc940('0x39')]+'%'};return _0x4348bc;})});}_0x1b64cc=_['merge']({},_0x1b64cc,_0x5a279f['options']);return _0x3f008a['getFields'](_0x1b64cc);}})[_0xc940('0x22')](function(_0x2bd5a0){if(_0x2bd5a0){_0x31b99c=_0x2bd5a0[_0xc940('0x32')];if(!_0x5a279f[_0xc940('0x2d')][_0xc940('0x33')](_0xc940('0x34'))){_0x1b64cc[_0xc940('0x1b')]=qs[_0xc940('0x1b')](_0x5a279f[_0xc940('0x2d')][_0xc940('0x1b')]);_0x1b64cc[_0xc940('0x1d')]=qs['offset'](_0x5a279f['query'][_0xc940('0x1d')]);}return _0x3f008a['getFields'](_0x1b64cc);}})['then'](function(_0x15f0cc){if(_0x15f0cc){return _0x15f0cc?{'count':_0x31b99c,'rows':_0x15f0cc}:null;}})['then'](respondWithResult(_0x598b82,null))[_0xc940('0x3f')](handleError(_0x598b82,null));};exports[_0xc940('0x4c')]=function(_0x4fde02,_0x2b1ff1,_0x2869e2){var _0x1c4e7d={};var _0xf44721={};var _0x4309e2;var _0x67346;return db[_0xc940('0x28')][_0xc940('0x49')]({'where':{'id':_0x4fde02[_0xc940('0x40')]['id']}})['then'](handleEntityNotFound(_0x2b1ff1,null))['then'](function(_0x596084){if(_0x596084){_0x4309e2=_0x596084;_0xf44721[_0xc940('0x2c')]=_['keys'](db['ZendeskField']['rawAttributes']);_0xf44721[_0xc940('0x2d')]=_['keys'](_0x4fde02[_0xc940('0x2d')]);_0xf44721[_0xc940('0x2e')]=_[_0xc940('0x2f')](_0xf44721[_0xc940('0x2c')],_0xf44721['query']);_0x1c4e7d[_0xc940('0x31')]=_[_0xc940('0x2f')](_0xf44721[_0xc940('0x2c')],qs['fields'](_0x4fde02[_0xc940('0x2d')][_0xc940('0x30')]));_0x1c4e7d[_0xc940('0x31')]=_0x1c4e7d[_0xc940('0x31')][_0xc940('0x32')]?_0x1c4e7d[_0xc940('0x31')]:_0xf44721['model'];_0x1c4e7d['order']=qs[_0xc940('0x36')](_0x4fde02[_0xc940('0x2d')]['sort']);_0x1c4e7d['where']=qs[_0xc940('0x2e')](_[_0xc940('0x38')](_0x4fde02['query'],_0xf44721[_0xc940('0x2e')]));if(_0x4fde02[_0xc940('0x2d')][_0xc940('0x39')]){_0x1c4e7d[_0xc940('0x37')]=_[_0xc940('0x3a')](_0x1c4e7d[_0xc940('0x37')],{'$or':_[_0xc940('0x27')](_0x1c4e7d[_0xc940('0x31')],function(_0xd2d4fd){var _0xa9564={};_0xa9564[_0xd2d4fd]={'$like':'%'+_0x4fde02[_0xc940('0x2d')][_0xc940('0x39')]+'%'};return _0xa9564;})});}_0x1c4e7d=_['merge']({},_0x1c4e7d,_0x4fde02[_0xc940('0x3c')]);return _0x4309e2[_0xc940('0x4c')](_0x1c4e7d);}})[_0xc940('0x22')](function(_0x5c4cfd){if(_0x5c4cfd){_0x67346=_0x5c4cfd['length'];if(!_0x4fde02[_0xc940('0x2d')][_0xc940('0x33')]('nolimit')){_0x1c4e7d[_0xc940('0x1b')]=qs['limit'](_0x4fde02[_0xc940('0x2d')][_0xc940('0x1b')]);_0x1c4e7d[_0xc940('0x1d')]=qs[_0xc940('0x1d')](_0x4fde02[_0xc940('0x2d')]['offset']);}return _0x4309e2['getSubjects'](_0x1c4e7d);}})['then'](function(_0x58f10a){if(_0x58f10a){return _0x58f10a?{'count':_0x67346,'rows':_0x58f10a}:null;}})[_0xc940('0x22')](respondWithResult(_0x2b1ff1,null))[_0xc940('0x3f')](handleError(_0x2b1ff1,null));};exports[_0xc940('0x4d')]=function(_0x2723f3,_0x2342b3,_0x4c974d){var _0x9a2046={};var _0xb9f458={};var _0x550028;var _0x281ad3;return db[_0xc940('0x28')][_0xc940('0x49')]({'where':{'id':_0x2723f3[_0xc940('0x40')]['id']}})[_0xc940('0x22')](handleEntityNotFound(_0x2342b3,null))[_0xc940('0x22')](function(_0x115b2e){if(_0x115b2e){_0x550028=_0x115b2e;_0xb9f458[_0xc940('0x2c')]=_[_0xc940('0x41')](db[_0xc940('0x4a')][_0xc940('0x4b')]);_0xb9f458[_0xc940('0x2d')]=_['keys'](_0x2723f3[_0xc940('0x2d')]);_0xb9f458[_0xc940('0x2e')]=_[_0xc940('0x2f')](_0xb9f458['model'],_0xb9f458['query']);_0x9a2046[_0xc940('0x31')]=_[_0xc940('0x2f')](_0xb9f458[_0xc940('0x2c')],qs[_0xc940('0x30')](_0x2723f3[_0xc940('0x2d')]['fields']));_0x9a2046['attributes']=_0x9a2046[_0xc940('0x31')][_0xc940('0x32')]?_0x9a2046[_0xc940('0x31')]:_0xb9f458['model'];_0x9a2046[_0xc940('0x35')]=qs[_0xc940('0x36')](_0x2723f3['query'][_0xc940('0x36')]);_0x9a2046[_0xc940('0x37')]=qs[_0xc940('0x2e')](_['pick'](_0x2723f3[_0xc940('0x2d')],_0xb9f458[_0xc940('0x2e')]));if(_0x2723f3[_0xc940('0x2d')][_0xc940('0x39')]){_0x9a2046[_0xc940('0x37')]=_[_0xc940('0x3a')](_0x9a2046[_0xc940('0x37')],{'$or':_['map'](_0x9a2046['attributes'],function(_0x317065){var _0x3accb0={};_0x3accb0[_0x317065]={'$like':'%'+_0x2723f3['query']['filter']+'%'};return _0x3accb0;})});}_0x9a2046=_[_0xc940('0x3a')]({},_0x9a2046,_0x2723f3[_0xc940('0x3c')]);return _0x550028[_0xc940('0x4d')](_0x9a2046);}})['then'](function(_0x5532dd){if(_0x5532dd){_0x281ad3=_0x5532dd[_0xc940('0x32')];if(!_0x2723f3['query'][_0xc940('0x33')]('nolimit')){_0x9a2046[_0xc940('0x1b')]=qs[_0xc940('0x1b')](_0x2723f3[_0xc940('0x2d')][_0xc940('0x1b')]);_0x9a2046[_0xc940('0x1d')]=qs[_0xc940('0x1d')](_0x2723f3[_0xc940('0x2d')]['offset']);}return _0x550028[_0xc940('0x4d')](_0x9a2046);}})[_0xc940('0x22')](function(_0x356425){if(_0x356425){return _0x356425?{'count':_0x281ad3,'rows':_0x356425}:null;}})[_0xc940('0x22')](respondWithResult(_0x2342b3,null))[_0xc940('0x3f')](handleError(_0x2342b3,null));};exports['getTags']=function(_0x1d33bb,_0x1dcadf,_0x222295){var _0x5cf708={};var _0x3353c1={};var _0x31badc;var _0x457a9c;return db[_0xc940('0x28')]['findOne']({'where':{'id':_0x1d33bb[_0xc940('0x40')]['id']}})[_0xc940('0x22')](handleEntityNotFound(_0x1dcadf,null))[_0xc940('0x22')](function(_0x5c0817){if(_0x5c0817){_0x31badc=_0x5c0817;_0x3353c1['model']=_[_0xc940('0x41')](db[_0xc940('0x4e')][_0xc940('0x4b')]);_0x3353c1['query']=_[_0xc940('0x41')](_0x1d33bb['query']);_0x3353c1[_0xc940('0x2e')]=_[_0xc940('0x2f')](_0x3353c1[_0xc940('0x2c')],_0x3353c1['query']);_0x5cf708[_0xc940('0x31')]=_[_0xc940('0x2f')](_0x3353c1[_0xc940('0x2c')],qs['fields'](_0x1d33bb[_0xc940('0x2d')][_0xc940('0x30')]));_0x5cf708[_0xc940('0x31')]=_0x5cf708[_0xc940('0x31')]['length']?_0x5cf708['attributes']:_0x3353c1[_0xc940('0x2c')];_0x5cf708[_0xc940('0x35')]=qs[_0xc940('0x36')](_0x1d33bb['query'][_0xc940('0x36')]);_0x5cf708[_0xc940('0x37')]=qs[_0xc940('0x2e')](_[_0xc940('0x38')](_0x1d33bb['query'],_0x3353c1[_0xc940('0x2e')]));if(_0x1d33bb[_0xc940('0x2d')][_0xc940('0x39')]){_0x5cf708[_0xc940('0x37')]=_[_0xc940('0x3a')](_0x5cf708[_0xc940('0x37')],{'$or':_[_0xc940('0x27')](_0x5cf708[_0xc940('0x31')],function(_0xdb200b){var _0x59324b={};_0x59324b[_0xdb200b]={'$like':'%'+_0x1d33bb[_0xc940('0x2d')][_0xc940('0x39')]+'%'};return _0x59324b;})});}_0x5cf708=_[_0xc940('0x3a')]({},_0x5cf708,_0x1d33bb[_0xc940('0x3c')]);return _0x31badc[_0xc940('0x4f')](_0x5cf708);}})[_0xc940('0x22')](function(_0x49a824){if(_0x49a824){_0x457a9c=_0x49a824[_0xc940('0x32')];if(!_0x1d33bb[_0xc940('0x2d')][_0xc940('0x33')](_0xc940('0x34'))){_0x5cf708[_0xc940('0x1b')]=qs['limit'](_0x1d33bb[_0xc940('0x2d')][_0xc940('0x1b')]);_0x5cf708[_0xc940('0x1d')]=qs[_0xc940('0x1d')](_0x1d33bb['query'][_0xc940('0x1d')]);}return _0x31badc[_0xc940('0x4f')](_0x5cf708);}})[_0xc940('0x22')](function(_0x3ae9b0){if(_0x3ae9b0){return _0x3ae9b0?{'count':_0x457a9c,'rows':_0x3ae9b0}:null;}})[_0xc940('0x22')](respondWithResult(_0x1dcadf,null))['catch'](handleError(_0x1dcadf,null));};exports[_0xc940('0x50')]=function(_0x58ede7,_0x2edbd7,_0xd0444d){if(_0x58ede7[_0xc940('0x45')]['id']){delete _0x58ede7['body']['id'];}return db[_0xc940('0x28')][_0xc940('0x49')]({'where':{'id':_0x58ede7['params']['id']}})[_0xc940('0x22')](handleEntityNotFound(_0x2edbd7,null))[_0xc940('0x22')](function(_0x588a66){if(_0x588a66){return _0x588a66[_0xc940('0x50')](_0x58ede7[_0xc940('0x45')][_0xc940('0x51')]||[]);}return null;})[_0xc940('0x22')](respondWithResult(_0x2edbd7,null))[_0xc940('0x3f')](handleError(_0x2edbd7,null));};
\ No newline at end of file
+var _0x157d=['send','index','map','ZendeskConfiguration','rawAttributes','fieldName','type','model','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','getFields','findOne','ZendeskField','order','getSubjects','getDescriptions','getTags','setTags','ids','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','lodash','squel','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','offset','undefined','limit','count','Content-Range','apply','save','update','then','destroy','end','sendStatus','error','stack'];(function(_0x2b2330,_0x564df5){var _0x27a0c2=function(_0x1dfc16){while(--_0x1dfc16){_0x2b2330['push'](_0x2b2330['shift']());}};_0x27a0c2(++_0x564df5);}(_0x157d,0x128));var _0xd157=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x157d[_0x3bf83f];return _0x22c4a9;};'use strict';var emlformat=require(_0xd157('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd157('0x1'));var jsonpatch=require(_0xd157('0x2'));var rp=require(_0xd157('0x3'));var moment=require(_0xd157('0x4'));var BPromise=require(_0xd157('0x5'));var Mustache=require(_0xd157('0x6'));var util=require(_0xd157('0x7'));var path=require(_0xd157('0x8'));var sox=require(_0xd157('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd157('0xa'));var squel=require(_0xd157('0xb'));var crypto=require('crypto');var jsforce=require(_0xd157('0xc'));var deskjs=require(_0xd157('0xd'));var toCsv=require(_0xd157('0xe'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd157('0xf'));var authService=require(_0xd157('0x10'));var qs=require(_0xd157('0x11'));var as=require(_0xd157('0x12'));var hardwareService=require(_0xd157('0x13'));var logger=require(_0xd157('0x14'))(_0xd157('0x15'));var utils=require(_0xd157('0x16'));var config=require(_0xd157('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xd157('0x18'))['db'];function respondWithStatusCode(_0x395270,_0x5826f9){_0x5826f9=_0x5826f9||0xcc;return function(_0x5a31a8){if(_0x5a31a8){return _0x395270['sendStatus'](_0x5826f9);}return _0x395270[_0xd157('0x19')](_0x5826f9)['end']();};}function respondWithResult(_0x2a54f7,_0x2216ee){_0x2216ee=_0x2216ee||0xc8;return function(_0x2509b5){if(_0x2509b5){return _0x2a54f7['status'](_0x2216ee)['json'](_0x2509b5);}};}function respondWithFilteredResult(_0xb83f99,_0x8be30){return function(_0x3884d6){if(_0x3884d6){var _0x5c4d28=typeof _0x8be30[_0xd157('0x1a')]===_0xd157('0x1b')&&typeof _0x8be30[_0xd157('0x1c')]==='undefined';var _0x3ada2a=_0x3884d6[_0xd157('0x1d')];var _0x64fcb=_0x5c4d28?0x0:_0x8be30[_0xd157('0x1a')];var _0x19efe7=_0x5c4d28?_0x3884d6['count']:_0x8be30[_0xd157('0x1a')]+_0x8be30['limit'];var _0x2bdcce;if(_0x19efe7>=_0x3ada2a){_0x19efe7=_0x3ada2a;_0x2bdcce=0xc8;}else{_0x2bdcce=0xce;}_0xb83f99['status'](_0x2bdcce);return _0xb83f99['set'](_0xd157('0x1e'),_0x64fcb+'-'+_0x19efe7+'/'+_0x3ada2a)['json'](_0x3884d6);}return null;};}function patchUpdates(_0x49c6da){return function(_0x4b4628){try{jsonpatch[_0xd157('0x1f')](_0x4b4628,_0x49c6da,!![]);}catch(_0x2d9d73){return BPromise['reject'](_0x2d9d73);}return _0x4b4628[_0xd157('0x20')]();};}function saveUpdates(_0x675062,_0x143bb4){return function(_0x370730){if(_0x370730){return _0x370730[_0xd157('0x21')](_0x675062)[_0xd157('0x22')](function(_0x12c011){return _0x12c011;});}return null;};}function removeEntity(_0xa6000c,_0x359cf9){return function(_0x4723c4){if(_0x4723c4){return _0x4723c4[_0xd157('0x23')]()['then'](function(){_0xa6000c[_0xd157('0x19')](0xcc)[_0xd157('0x24')]();});}};}function handleEntityNotFound(_0x2376e9,_0xd5c57a){return function(_0x24af12){if(!_0x24af12){_0x2376e9[_0xd157('0x25')](0x194);}return _0x24af12;};}function handleError(_0x3f68fd,_0x2bf889){_0x2bf889=_0x2bf889||0x1f4;return function(_0x495e7f){logger[_0xd157('0x26')](_0x495e7f[_0xd157('0x27')]);if(_0x495e7f['name']){delete _0x495e7f['name'];}_0x3f68fd[_0xd157('0x19')](_0x2bf889)[_0xd157('0x28')](_0x495e7f);};}exports[_0xd157('0x29')]=function(_0x60f486,_0x2b62cb){var _0x7ffc79={},_0x329e23={},_0x2751d5={'count':0x0,'rows':[]};var _0x469837=_[_0xd157('0x2a')](db[_0xd157('0x2b')][_0xd157('0x2c')],function(_0x266e28){return{'name':_0x266e28[_0xd157('0x2d')],'type':_0x266e28[_0xd157('0x2e')]['key']};});_0x329e23[_0xd157('0x2f')]=_[_0xd157('0x2a')](_0x469837,_0xd157('0x30'));_0x329e23[_0xd157('0x31')]=_[_0xd157('0x32')](_0x60f486['query']);_0x329e23[_0xd157('0x33')]=_[_0xd157('0x34')](_0x329e23[_0xd157('0x2f')],_0x329e23['query']);_0x7ffc79[_0xd157('0x35')]=_['intersection'](_0x329e23[_0xd157('0x2f')],qs[_0xd157('0x36')](_0x60f486[_0xd157('0x31')][_0xd157('0x36')]));_0x7ffc79[_0xd157('0x35')]=_0x7ffc79[_0xd157('0x35')][_0xd157('0x37')]?_0x7ffc79[_0xd157('0x35')]:_0x329e23[_0xd157('0x2f')];if(!_0x60f486['query'][_0xd157('0x38')](_0xd157('0x39'))){_0x7ffc79[_0xd157('0x1c')]=qs[_0xd157('0x1c')](_0x60f486[_0xd157('0x31')][_0xd157('0x1c')]);_0x7ffc79[_0xd157('0x1a')]=qs[_0xd157('0x1a')](_0x60f486[_0xd157('0x31')][_0xd157('0x1a')]);}_0x7ffc79['order']=qs[_0xd157('0x3a')](_0x60f486['query'][_0xd157('0x3a')]);_0x7ffc79['where']=qs[_0xd157('0x33')](_[_0xd157('0x3b')](_0x60f486['query'],_0x329e23[_0xd157('0x33')]),_0x469837);if(_0x60f486[_0xd157('0x31')][_0xd157('0x3c')]){_0x7ffc79[_0xd157('0x3d')]=_[_0xd157('0x3e')](_0x7ffc79[_0xd157('0x3d')],{'$or':_[_0xd157('0x2a')](_0x469837,function(_0x50e9f8){if(_0x50e9f8[_0xd157('0x2e')]!==_0xd157('0x3f')){var _0x554792={};_0x554792[_0x50e9f8[_0xd157('0x30')]]={'$like':'%'+_0x60f486[_0xd157('0x31')][_0xd157('0x3c')]+'%'};return _0x554792;}})});}_0x7ffc79=_[_0xd157('0x3e')]({},_0x7ffc79,_0x60f486['options']);var _0x1d06df={'where':_0x7ffc79[_0xd157('0x3d')]};return db[_0xd157('0x2b')]['count'](_0x1d06df)[_0xd157('0x22')](function(_0x2722e7){_0x2751d5[_0xd157('0x1d')]=_0x2722e7;if(_0x60f486[_0xd157('0x31')][_0xd157('0x40')]){_0x7ffc79[_0xd157('0x41')]=[{'all':!![]}];}return db['ZendeskConfiguration'][_0xd157('0x42')](_0x7ffc79);})['then'](function(_0x2c4686){_0x2751d5[_0xd157('0x43')]=_0x2c4686;return _0x2751d5;})['then'](respondWithFilteredResult(_0x2b62cb,_0x7ffc79))[_0xd157('0x44')](handleError(_0x2b62cb,null));};exports[_0xd157('0x45')]=function(_0x42e094,_0xa13c4e){var _0x3273b8={'raw':![],'where':{'id':_0x42e094[_0xd157('0x46')]['id']}},_0x398b9e={};_0x398b9e['model']=_['keys'](db[_0xd157('0x2b')][_0xd157('0x2c')]);_0x398b9e[_0xd157('0x31')]=_['keys'](_0x42e094[_0xd157('0x31')]);_0x398b9e[_0xd157('0x33')]=_['intersection'](_0x398b9e[_0xd157('0x2f')],_0x398b9e[_0xd157('0x31')]);_0x3273b8[_0xd157('0x35')]=_['intersection'](_0x398b9e[_0xd157('0x2f')],qs[_0xd157('0x36')](_0x42e094[_0xd157('0x31')][_0xd157('0x36')]));_0x3273b8['attributes']=_0x3273b8[_0xd157('0x35')][_0xd157('0x37')]?_0x3273b8['attributes']:_0x398b9e['model'];if(_0x42e094['query'][_0xd157('0x40')]){_0x3273b8[_0xd157('0x41')]=[{'all':!![]}];}_0x3273b8=_[_0xd157('0x3e')]({},_0x3273b8,_0x42e094[_0xd157('0x47')]);return db['ZendeskConfiguration'][_0xd157('0x48')](_0x3273b8)[_0xd157('0x22')](handleEntityNotFound(_0xa13c4e,null))['then'](respondWithResult(_0xa13c4e,null))[_0xd157('0x44')](handleError(_0xa13c4e,null));};exports['create']=function(_0x4bd3d4,_0x3e016b){return db[_0xd157('0x2b')][_0xd157('0x49')](_0x4bd3d4[_0xd157('0x4a')],{})[_0xd157('0x22')](respondWithResult(_0x3e016b,0xc9))[_0xd157('0x44')](handleError(_0x3e016b,null));};exports[_0xd157('0x21')]=function(_0x31c893,_0x3e4d1b){if(_0x31c893[_0xd157('0x4a')]['id']){delete _0x31c893[_0xd157('0x4a')]['id'];}return db[_0xd157('0x2b')][_0xd157('0x48')]({'where':{'id':_0x31c893['params']['id']}})[_0xd157('0x22')](handleEntityNotFound(_0x3e4d1b,null))[_0xd157('0x22')](saveUpdates(_0x31c893['body'],null))[_0xd157('0x22')](respondWithResult(_0x3e4d1b,null))[_0xd157('0x44')](handleError(_0x3e4d1b,null));};exports[_0xd157('0x23')]=function(_0x50502a,_0x155d5c){return db[_0xd157('0x2b')][_0xd157('0x48')]({'where':{'id':_0x50502a[_0xd157('0x46')]['id']}})[_0xd157('0x22')](handleEntityNotFound(_0x155d5c,null))[_0xd157('0x22')](removeEntity(_0x155d5c,null))['catch'](handleError(_0x155d5c,null));};exports[_0xd157('0x4b')]=function(_0x356914,_0x2ee14b,_0x191ac0){var _0x13d873={};var _0x3f8d19={};var _0x1bac31;var _0x5be7e5;return db[_0xd157('0x2b')][_0xd157('0x4c')]({'where':{'id':_0x356914[_0xd157('0x46')]['id']}})['then'](handleEntityNotFound(_0x2ee14b,null))['then'](function(_0x31ccf7){if(_0x31ccf7){_0x1bac31=_0x31ccf7;_0x3f8d19[_0xd157('0x2f')]=_[_0xd157('0x32')](db[_0xd157('0x4d')]['rawAttributes']);_0x3f8d19[_0xd157('0x31')]=_[_0xd157('0x32')](_0x356914[_0xd157('0x31')]);_0x3f8d19[_0xd157('0x33')]=_[_0xd157('0x34')](_0x3f8d19[_0xd157('0x2f')],_0x3f8d19[_0xd157('0x31')]);_0x13d873[_0xd157('0x35')]=_[_0xd157('0x34')](_0x3f8d19[_0xd157('0x2f')],qs[_0xd157('0x36')](_0x356914[_0xd157('0x31')][_0xd157('0x36')]));_0x13d873[_0xd157('0x35')]=_0x13d873[_0xd157('0x35')][_0xd157('0x37')]?_0x13d873[_0xd157('0x35')]:_0x3f8d19[_0xd157('0x2f')];_0x13d873[_0xd157('0x4e')]=qs[_0xd157('0x3a')](_0x356914[_0xd157('0x31')][_0xd157('0x3a')]);_0x13d873[_0xd157('0x3d')]=qs['filters'](_[_0xd157('0x3b')](_0x356914[_0xd157('0x31')],_0x3f8d19[_0xd157('0x33')]));if(_0x356914[_0xd157('0x31')][_0xd157('0x3c')]){_0x13d873[_0xd157('0x3d')]=_['merge'](_0x13d873['where'],{'$or':_['map'](_0x13d873['attributes'],function(_0x5a8f15){var _0x141dfd={};_0x141dfd[_0x5a8f15]={'$like':'%'+_0x356914[_0xd157('0x31')][_0xd157('0x3c')]+'%'};return _0x141dfd;})});}_0x13d873=_[_0xd157('0x3e')]({},_0x13d873,_0x356914['options']);return _0x1bac31[_0xd157('0x4b')](_0x13d873);}})[_0xd157('0x22')](function(_0x49f174){if(_0x49f174){_0x5be7e5=_0x49f174[_0xd157('0x37')];if(!_0x356914[_0xd157('0x31')][_0xd157('0x38')]('nolimit')){_0x13d873[_0xd157('0x1c')]=qs[_0xd157('0x1c')](_0x356914[_0xd157('0x31')]['limit']);_0x13d873[_0xd157('0x1a')]=qs[_0xd157('0x1a')](_0x356914[_0xd157('0x31')][_0xd157('0x1a')]);}return _0x1bac31[_0xd157('0x4b')](_0x13d873);}})[_0xd157('0x22')](function(_0x567518){if(_0x567518){return _0x567518?{'count':_0x5be7e5,'rows':_0x567518}:null;}})[_0xd157('0x22')](respondWithResult(_0x2ee14b,null))['catch'](handleError(_0x2ee14b,null));};exports['getSubjects']=function(_0x1c1e70,_0x1836fb,_0x15ca0d){var _0x18508f={};var _0x2c96e5={};var _0x15191a;var _0x20065c;return db[_0xd157('0x2b')][_0xd157('0x4c')]({'where':{'id':_0x1c1e70[_0xd157('0x46')]['id']}})[_0xd157('0x22')](handleEntityNotFound(_0x1836fb,null))['then'](function(_0x288c09){if(_0x288c09){_0x15191a=_0x288c09;_0x2c96e5[_0xd157('0x2f')]=_[_0xd157('0x32')](db['ZendeskField'][_0xd157('0x2c')]);_0x2c96e5[_0xd157('0x31')]=_[_0xd157('0x32')](_0x1c1e70['query']);_0x2c96e5[_0xd157('0x33')]=_['intersection'](_0x2c96e5[_0xd157('0x2f')],_0x2c96e5[_0xd157('0x31')]);_0x18508f[_0xd157('0x35')]=_[_0xd157('0x34')](_0x2c96e5[_0xd157('0x2f')],qs[_0xd157('0x36')](_0x1c1e70[_0xd157('0x31')][_0xd157('0x36')]));_0x18508f[_0xd157('0x35')]=_0x18508f[_0xd157('0x35')][_0xd157('0x37')]?_0x18508f[_0xd157('0x35')]:_0x2c96e5[_0xd157('0x2f')];_0x18508f[_0xd157('0x4e')]=qs['sort'](_0x1c1e70[_0xd157('0x31')]['sort']);_0x18508f['where']=qs[_0xd157('0x33')](_[_0xd157('0x3b')](_0x1c1e70[_0xd157('0x31')],_0x2c96e5[_0xd157('0x33')]));if(_0x1c1e70['query'][_0xd157('0x3c')]){_0x18508f[_0xd157('0x3d')]=_[_0xd157('0x3e')](_0x18508f[_0xd157('0x3d')],{'$or':_[_0xd157('0x2a')](_0x18508f['attributes'],function(_0x25f0d3){var _0x24c30e={};_0x24c30e[_0x25f0d3]={'$like':'%'+_0x1c1e70[_0xd157('0x31')][_0xd157('0x3c')]+'%'};return _0x24c30e;})});}_0x18508f=_[_0xd157('0x3e')]({},_0x18508f,_0x1c1e70[_0xd157('0x47')]);return _0x15191a[_0xd157('0x4f')](_0x18508f);}})[_0xd157('0x22')](function(_0xa9ab03){if(_0xa9ab03){_0x20065c=_0xa9ab03['length'];if(!_0x1c1e70[_0xd157('0x31')][_0xd157('0x38')](_0xd157('0x39'))){_0x18508f[_0xd157('0x1c')]=qs[_0xd157('0x1c')](_0x1c1e70['query'][_0xd157('0x1c')]);_0x18508f['offset']=qs[_0xd157('0x1a')](_0x1c1e70[_0xd157('0x31')]['offset']);}return _0x15191a['getSubjects'](_0x18508f);}})['then'](function(_0x8d1365){if(_0x8d1365){return _0x8d1365?{'count':_0x20065c,'rows':_0x8d1365}:null;}})[_0xd157('0x22')](respondWithResult(_0x1836fb,null))[_0xd157('0x44')](handleError(_0x1836fb,null));};exports[_0xd157('0x50')]=function(_0x59384a,_0x598826,_0x213855){var _0x38091a={};var _0x72ccd0={};var _0x3546aa;var _0x155d1f;return db[_0xd157('0x2b')][_0xd157('0x4c')]({'where':{'id':_0x59384a[_0xd157('0x46')]['id']}})[_0xd157('0x22')](handleEntityNotFound(_0x598826,null))['then'](function(_0x4e4542){if(_0x4e4542){_0x3546aa=_0x4e4542;_0x72ccd0[_0xd157('0x2f')]=_[_0xd157('0x32')](db[_0xd157('0x4d')]['rawAttributes']);_0x72ccd0['query']=_[_0xd157('0x32')](_0x59384a[_0xd157('0x31')]);_0x72ccd0[_0xd157('0x33')]=_[_0xd157('0x34')](_0x72ccd0[_0xd157('0x2f')],_0x72ccd0['query']);_0x38091a[_0xd157('0x35')]=_['intersection'](_0x72ccd0[_0xd157('0x2f')],qs[_0xd157('0x36')](_0x59384a['query']['fields']));_0x38091a['attributes']=_0x38091a[_0xd157('0x35')]['length']?_0x38091a['attributes']:_0x72ccd0[_0xd157('0x2f')];_0x38091a['order']=qs[_0xd157('0x3a')](_0x59384a[_0xd157('0x31')][_0xd157('0x3a')]);_0x38091a[_0xd157('0x3d')]=qs[_0xd157('0x33')](_[_0xd157('0x3b')](_0x59384a['query'],_0x72ccd0[_0xd157('0x33')]));if(_0x59384a[_0xd157('0x31')][_0xd157('0x3c')]){_0x38091a[_0xd157('0x3d')]=_[_0xd157('0x3e')](_0x38091a[_0xd157('0x3d')],{'$or':_[_0xd157('0x2a')](_0x38091a[_0xd157('0x35')],function(_0x4d4de7){var _0x1e02d6={};_0x1e02d6[_0x4d4de7]={'$like':'%'+_0x59384a[_0xd157('0x31')][_0xd157('0x3c')]+'%'};return _0x1e02d6;})});}_0x38091a=_[_0xd157('0x3e')]({},_0x38091a,_0x59384a[_0xd157('0x47')]);return _0x3546aa[_0xd157('0x50')](_0x38091a);}})['then'](function(_0x4d2560){if(_0x4d2560){_0x155d1f=_0x4d2560['length'];if(!_0x59384a['query'][_0xd157('0x38')](_0xd157('0x39'))){_0x38091a[_0xd157('0x1c')]=qs['limit'](_0x59384a[_0xd157('0x31')][_0xd157('0x1c')]);_0x38091a[_0xd157('0x1a')]=qs[_0xd157('0x1a')](_0x59384a[_0xd157('0x31')][_0xd157('0x1a')]);}return _0x3546aa[_0xd157('0x50')](_0x38091a);}})[_0xd157('0x22')](function(_0x2f960b){if(_0x2f960b){return _0x2f960b?{'count':_0x155d1f,'rows':_0x2f960b}:null;}})[_0xd157('0x22')](respondWithResult(_0x598826,null))[_0xd157('0x44')](handleError(_0x598826,null));};exports[_0xd157('0x51')]=function(_0x42f26b,_0xb53cba,_0x31e0e1){var _0x2921c4={};var _0x59cd7d={};var _0x14c356;var _0x385f31;return db[_0xd157('0x2b')][_0xd157('0x4c')]({'where':{'id':_0x42f26b['params']['id']}})[_0xd157('0x22')](handleEntityNotFound(_0xb53cba,null))[_0xd157('0x22')](function(_0x52f126){if(_0x52f126){_0x14c356=_0x52f126;_0x59cd7d[_0xd157('0x2f')]=_[_0xd157('0x32')](db['Tag']['rawAttributes']);_0x59cd7d[_0xd157('0x31')]=_[_0xd157('0x32')](_0x42f26b[_0xd157('0x31')]);_0x59cd7d[_0xd157('0x33')]=_[_0xd157('0x34')](_0x59cd7d[_0xd157('0x2f')],_0x59cd7d[_0xd157('0x31')]);_0x2921c4[_0xd157('0x35')]=_[_0xd157('0x34')](_0x59cd7d['model'],qs[_0xd157('0x36')](_0x42f26b['query'][_0xd157('0x36')]));_0x2921c4[_0xd157('0x35')]=_0x2921c4[_0xd157('0x35')][_0xd157('0x37')]?_0x2921c4['attributes']:_0x59cd7d['model'];_0x2921c4[_0xd157('0x4e')]=qs[_0xd157('0x3a')](_0x42f26b[_0xd157('0x31')][_0xd157('0x3a')]);_0x2921c4[_0xd157('0x3d')]=qs[_0xd157('0x33')](_['pick'](_0x42f26b[_0xd157('0x31')],_0x59cd7d[_0xd157('0x33')]));if(_0x42f26b[_0xd157('0x31')][_0xd157('0x3c')]){_0x2921c4['where']=_[_0xd157('0x3e')](_0x2921c4[_0xd157('0x3d')],{'$or':_[_0xd157('0x2a')](_0x2921c4[_0xd157('0x35')],function(_0x159d0c){var _0x3c8076={};_0x3c8076[_0x159d0c]={'$like':'%'+_0x42f26b[_0xd157('0x31')][_0xd157('0x3c')]+'%'};return _0x3c8076;})});}_0x2921c4=_[_0xd157('0x3e')]({},_0x2921c4,_0x42f26b[_0xd157('0x47')]);return _0x14c356[_0xd157('0x51')](_0x2921c4);}})[_0xd157('0x22')](function(_0x4b2189){if(_0x4b2189){_0x385f31=_0x4b2189[_0xd157('0x37')];if(!_0x42f26b['query'][_0xd157('0x38')]('nolimit')){_0x2921c4[_0xd157('0x1c')]=qs[_0xd157('0x1c')](_0x42f26b['query']['limit']);_0x2921c4[_0xd157('0x1a')]=qs[_0xd157('0x1a')](_0x42f26b[_0xd157('0x31')][_0xd157('0x1a')]);}return _0x14c356[_0xd157('0x51')](_0x2921c4);}})['then'](function(_0x2d078d){if(_0x2d078d){return _0x2d078d?{'count':_0x385f31,'rows':_0x2d078d}:null;}})[_0xd157('0x22')](respondWithResult(_0xb53cba,null))[_0xd157('0x44')](handleError(_0xb53cba,null));};exports[_0xd157('0x52')]=function(_0x1beb9f,_0x4b9141,_0x26f2a1){if(_0x1beb9f[_0xd157('0x4a')]['id']){delete _0x1beb9f[_0xd157('0x4a')]['id'];}return db['ZendeskConfiguration'][_0xd157('0x4c')]({'where':{'id':_0x1beb9f[_0xd157('0x46')]['id']}})['then'](handleEntityNotFound(_0x4b9141,null))[_0xd157('0x22')](function(_0x5ec805){if(_0x5ec805){return _0x5ec805[_0xd157('0x52')](_0x1beb9f[_0xd157('0x4a')][_0xd157('0x53')]||[]);}return null;})['then'](respondWithResult(_0x4b9141,null))['catch'](handleError(_0x4b9141,null));};
\ No newline at end of file
index 7f33410..851899d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda3f=['../../config/environment','exports','ZendeskConfiguration','int_zendesk_configurations','util','../../config/logger','request-promise','rimraf'];(function(_0x46dcde,_0x2e85ee){var _0x3323de=function(_0x21ce05){while(--_0x21ce05){_0x46dcde['push'](_0x46dcde['shift']());}};_0x3323de(++_0x2e85ee);}(_0xda3f,0xec));var _0xfda3=function(_0x20780a,_0x3cc394){_0x20780a=_0x20780a-0x0;var _0x51d3d0=_0xda3f[_0x20780a];return _0x51d3d0;};'use strict';var _=require('lodash');var util=require(_0xfda3('0x0'));var logger=require(_0xfda3('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xfda3('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0xfda3('0x3'));var config=require(_0xfda3('0x4'));var attributes=require('./intZendeskConfiguration.attributes');module[_0xfda3('0x5')]=function(_0x43a010,_0x47e7e2){return _0x43a010['define'](_0xfda3('0x6'),attributes,{'tableName':_0xfda3('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe1e3=['exports','ZendeskConfiguration','int_zendesk_configurations','lodash','util','api','request-promise','rimraf','../../config/environment','./intZendeskConfiguration.attributes'];(function(_0x2cd708,_0x40810a){var _0x5dbdaf=function(_0x275349){while(--_0x275349){_0x2cd708['push'](_0x2cd708['shift']());}};_0x5dbdaf(++_0x40810a);}(_0xe1e3,0x1bb));var _0x3e1e=function(_0x5391a9,_0x119e43){_0x5391a9=_0x5391a9-0x0;var _0x4f0c45=_0xe1e3[_0x5391a9];return _0x4f0c45;};'use strict';var _=require(_0x3e1e('0x0'));var util=require(_0x3e1e('0x1'));var logger=require('../../config/logger')(_0x3e1e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3e1e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3e1e('0x4'));var config=require(_0x3e1e('0x5'));var attributes=require(_0x3e1e('0x6'));module[_0x3e1e('0x7')]=function(_0x40d6d8,_0x25701f){return _0x40d6d8['define'](_0x3e1e('0x8'),attributes,{'tableName':_0x3e1e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c22b256..e28960f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18d9=['debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent'];(function(_0x1ab1e0,_0x3c2277){var _0xfa44fb=function(_0xc8e769){while(--_0xc8e769){_0x1ab1e0['push'](_0x1ab1e0['shift']());}};_0xfa44fb(++_0x3c2277);}(_0x18d9,0x1b7));var _0x918d=function(_0x84314a,_0x564bfc){_0x84314a=_0x84314a-0x0;var _0x186ebe=_0x18d9[_0x84314a];return _0x186ebe;};'use strict';var _=require(_0x918d('0x0'));var util=require(_0x918d('0x1'));var moment=require(_0x918d('0x2'));var BPromise=require(_0x918d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x918d('0x4'));var db=require(_0x918d('0x5'))['db'];var utils=require(_0x918d('0x6'));var logger=require(_0x918d('0x7'))(_0x918d('0x8'));var config=require(_0x918d('0x9'));var jayson=require(_0x918d('0xa'));var client=jayson[_0x918d('0xb')][_0x918d('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3e8124,_0x4b78ee,_0x5c6c10){return new BPromise(function(_0x2ae6cb,_0x3f6d7f){return client[_0x918d('0xd')](_0x3e8124,_0x5c6c10)[_0x918d('0xe')](function(_0x422f81){logger['info'](_0x918d('0xf'),_0x4b78ee,_0x918d('0x10'));logger[_0x918d('0x11')](_0x918d('0x12'),_0x4b78ee,_0x918d('0x10'),JSON[_0x918d('0x13')](_0x422f81));if(_0x422f81[_0x918d('0x14')]){if(_0x422f81[_0x918d('0x14')][_0x918d('0x15')]===0x1f4){logger[_0x918d('0x14')](_0x918d('0xf'),_0x4b78ee,_0x422f81[_0x918d('0x14')][_0x918d('0x16')]);return _0x3f6d7f(_0x422f81['error'][_0x918d('0x16')]);}logger[_0x918d('0x14')](_0x918d('0xf'),_0x4b78ee,_0x422f81[_0x918d('0x14')][_0x918d('0x16')]);return _0x2ae6cb(_0x422f81[_0x918d('0x14')][_0x918d('0x16')]);}else{logger['info'](_0x918d('0xf'),_0x4b78ee,_0x918d('0x10'));_0x2ae6cb(_0x422f81['result'][_0x918d('0x16')]);}})[_0x918d('0x17')](function(_0x114d0e){logger[_0x918d('0x14')](_0x918d('0xf'),_0x4b78ee,_0x114d0e);_0x3f6d7f(_0x114d0e);});});}
\ No newline at end of file
+var _0x21be=['../../config/logger','rpc','../../config/environment','client','request','then','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x37657a,_0x25aa09){var _0x7126b9=function(_0x2c4cf4){while(--_0x2c4cf4){_0x37657a['push'](_0x37657a['shift']());}};_0x7126b9(++_0x25aa09);}(_0x21be,0x125));var _0xe21b=function(_0x37d7f5,_0x478e72){_0x37d7f5=_0x37d7f5-0x0;var _0x582bc7=_0x21be[_0x37d7f5];return _0x582bc7;};'use strict';var _=require(_0xe21b('0x0'));var util=require('util');var moment=require(_0xe21b('0x1'));var BPromise=require(_0xe21b('0x2'));var rs=require(_0xe21b('0x3'));var fs=require('fs');var Redis=require(_0xe21b('0x4'));var db=require(_0xe21b('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xe21b('0x6'))(_0xe21b('0x7'));var config=require(_0xe21b('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xe21b('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x436d56,_0x51317c,_0x5b568a){return new BPromise(function(_0x3614a5,_0x483c11){return client[_0xe21b('0xa')](_0x436d56,_0x5b568a)[_0xe21b('0xb')](function(_0xebb556){logger['info'](_0xe21b('0xc'),_0x51317c,_0xe21b('0xd'));logger[_0xe21b('0xe')](_0xe21b('0xf'),_0x51317c,'request\x20sent',JSON[_0xe21b('0x10')](_0xebb556));if(_0xebb556[_0xe21b('0x11')]){if(_0xebb556[_0xe21b('0x11')][_0xe21b('0x12')]===0x1f4){logger[_0xe21b('0x11')](_0xe21b('0xc'),_0x51317c,_0xebb556['error']['message']);return _0x483c11(_0xebb556[_0xe21b('0x11')][_0xe21b('0x13')]);}logger['error'](_0xe21b('0xc'),_0x51317c,_0xebb556['error']['message']);return _0x3614a5(_0xebb556[_0xe21b('0x11')][_0xe21b('0x13')]);}else{logger[_0xe21b('0x14')](_0xe21b('0xc'),_0x51317c,_0xe21b('0xd'));_0x3614a5(_0xebb556[_0xe21b('0x15')][_0xe21b('0x13')]);}})[_0xe21b('0x16')](function(_0x146b2e){logger[_0xe21b('0x11')](_0xe21b('0xc'),_0x51317c,_0x146b2e);_0x483c11(_0x146b2e);});});}
\ No newline at end of file
index 9ddbc01..4b0299d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3392=['create','put','update','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','post'];(function(_0x39ea42,_0x3c1f50){var _0x33f5b7=function(_0x5d8e73){while(--_0x5d8e73){_0x39ea42['push'](_0x39ea42['shift']());}};_0x33f5b7(++_0x3c1f50);}(_0x3392,0x7b));var _0x2339=function(_0x195577,_0x421360){_0x195577=_0x195577-0x0;var _0x11d962=_0x3392[_0x195577];return _0x11d962;};'use strict';var multer=require(_0x2339('0x0'));var util=require(_0x2339('0x1'));var path=require(_0x2339('0x2'));var timeout=require(_0x2339('0x3'));var express=require(_0x2339('0x4'));var router=express['Router']();var fs_extra=require(_0x2339('0x5'));var auth=require(_0x2339('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x2339('0x7'));var controller=require('./intZendeskField.controller');router[_0x2339('0x8')]('/',auth[_0x2339('0x9')](),controller[_0x2339('0xa')]);router[_0x2339('0x8')](_0x2339('0xb'),auth[_0x2339('0x9')](),controller['show']);router[_0x2339('0xc')]('/',auth[_0x2339('0x9')](),controller[_0x2339('0xd')]);router[_0x2339('0xe')]('/:id',auth[_0x2339('0x9')](),controller[_0x2339('0xf')]);router['delete'](_0x2339('0xb'),auth[_0x2339('0x9')](),controller['destroy']);module[_0x2339('0x10')]=router;
\ No newline at end of file
+var _0x7727=['connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./intZendeskField.controller','get','isAuthenticated','index','/:id','show','post','create','update','destroy','multer','util','path'];(function(_0x2ff238,_0x1811d2){var _0x204a56=function(_0x5bf2e1){while(--_0x5bf2e1){_0x2ff238['push'](_0x2ff238['shift']());}};_0x204a56(++_0x1811d2);}(_0x7727,0x1bf));var _0x7772=function(_0x5d75ff,_0x5bc7ac){_0x5d75ff=_0x5d75ff-0x0;var _0x1c1894=_0x7727[_0x5d75ff];return _0x1c1894;};'use strict';var multer=require(_0x7772('0x0'));var util=require(_0x7772('0x1'));var path=require(_0x7772('0x2'));var timeout=require(_0x7772('0x3'));var express=require('express');var router=express[_0x7772('0x4')]();var fs_extra=require(_0x7772('0x5'));var auth=require(_0x7772('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x7772('0x7'));var controller=require(_0x7772('0x8'));router[_0x7772('0x9')]('/',auth[_0x7772('0xa')](),controller[_0x7772('0xb')]);router[_0x7772('0x9')](_0x7772('0xc'),auth[_0x7772('0xa')](),controller[_0x7772('0xd')]);router[_0x7772('0xe')]('/',auth[_0x7772('0xa')](),controller[_0x7772('0xf')]);router['put']('/:id',auth[_0x7772('0xa')](),controller[_0x7772('0x10')]);router['delete'](_0x7772('0xc'),auth[_0x7772('0xa')](),controller[_0x7772('0x11')]);module['exports']=router;
\ No newline at end of file
index 6cb1b87..cc3ee56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cf0=['sequelize','string','keyValue','picklist','STRING','ENUM','customVariable','BOOLEAN'];(function(_0x12ee7b,_0x55f5d3){var _0x98c22a=function(_0x326600){while(--_0x326600){_0x12ee7b['push'](_0x12ee7b['shift']());}};_0x98c22a(++_0x55f5d3);}(_0x8cf0,0x1c8));var _0x08cf=function(_0x5db9a3,_0x2b6d31){_0x5db9a3=_0x5db9a3-0x0;var _0x4ebf6f=_0x8cf0[_0x5db9a3];return _0x4ebf6f;};'use strict';var Sequelize=require(_0x08cf('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0x08cf('0x1'),'variable','customVariable',_0x08cf('0x2'),_0x08cf('0x3')),'defaultValue':'string'},'content':{'type':Sequelize[_0x08cf('0x4')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x08cf('0x5')]('string','variable',_0x08cf('0x6'))},'keyContent':{'type':Sequelize[_0x08cf('0x4')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x08cf('0x4')]},'customField':{'type':Sequelize[_0x08cf('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x08cf('0x4')]}};
\ No newline at end of file
+var _0xaadf=['keyValue','picklist','variable','STRING','BOOLEAN','ENUM','string'];(function(_0x245327,_0x2bbe5f){var _0x4d441c=function(_0x281a13){while(--_0x281a13){_0x245327['push'](_0x245327['shift']());}};_0x4d441c(++_0x2bbe5f);}(_0xaadf,0xe5));var _0xfaad=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xaadf[_0x4565bf];return _0x5610ba;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0xfaad('0x0')](_0xfaad('0x1'),'variable','customVariable',_0xfaad('0x2'),_0xfaad('0x3')),'defaultValue':_0xfaad('0x1')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xfaad('0x0')](_0xfaad('0x1'),_0xfaad('0x4'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xfaad('0x5')]},'nameField':{'type':Sequelize[_0xfaad('0x5')]},'customField':{'type':Sequelize[_0xfaad('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xfaad('0x5')]}};
\ No newline at end of file
index 3d5041a..350775b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x132b=['sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','Content-Range','apply','reject','save','update','then','end','error','stack','name','send','index','map','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','offset','order','sort','filter','where','merge','VIRTUAL','options','ZendeskField','includeAll','include','findAll','rows','catch','params','length','find','create','body','destroy','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util'];(function(_0x3eaddc,_0x1c94d3){var _0x1e9aa0=function(_0x30818d){while(--_0x30818d){_0x3eaddc['push'](_0x3eaddc['shift']());}};_0x1e9aa0(++_0x1c94d3);}(_0x132b,0x8d));var _0xb132=function(_0x1e564b,_0x48e3b0){_0x1e564b=_0x1e564b-0x0;var _0x3aa7aa=_0x132b[_0x1e564b];return _0x3aa7aa;};'use strict';var emlformat=require(_0xb132('0x0'));var rimraf=require(_0xb132('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb132('0x2'));var rp=require(_0xb132('0x3'));var moment=require(_0xb132('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb132('0x5'));var util=require(_0xb132('0x6'));var path=require('path');var sox=require(_0xb132('0x7'));var csv=require(_0xb132('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb132('0x9'));var _=require(_0xb132('0xa'));var squel=require(_0xb132('0xb'));var crypto=require('crypto');var jsforce=require(_0xb132('0xc'));var deskjs=require(_0xb132('0xd'));var toCsv=require(_0xb132('0x8'));var querystring=require('querystring');var Papa=require(_0xb132('0xe'));var Redis=require(_0xb132('0xf'));var authService=require(_0xb132('0x10'));var qs=require(_0xb132('0x11'));var as=require(_0xb132('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb132('0x13'))(_0xb132('0x14'));var utils=require(_0xb132('0x15'));var config=require(_0xb132('0x16'));var licenseUtil=require(_0xb132('0x17'));var db=require(_0xb132('0x18'))['db'];function respondWithStatusCode(_0x376655,_0x2f8be8){_0x2f8be8=_0x2f8be8||0xcc;return function(_0x43f104){if(_0x43f104){return _0x376655[_0xb132('0x19')](_0x2f8be8);}return _0x376655[_0xb132('0x1a')](_0x2f8be8)['end']();};}function respondWithResult(_0x3a7c9d,_0x1779ef){_0x1779ef=_0x1779ef||0xc8;return function(_0x520cd6){if(_0x520cd6){return _0x3a7c9d[_0xb132('0x1a')](_0x1779ef)[_0xb132('0x1b')](_0x520cd6);}};}function respondWithFilteredResult(_0x547844,_0x27713e){return function(_0x3c4e03){if(_0x3c4e03){var _0x12d3d2=typeof _0x27713e['offset']===_0xb132('0x1c')&&typeof _0x27713e[_0xb132('0x1d')]===_0xb132('0x1c');var _0x3eb103=_0x3c4e03[_0xb132('0x1e')];var _0x2b8010=_0x12d3d2?0x0:_0x27713e['offset'];var _0x2d7a70=_0x12d3d2?_0x3c4e03[_0xb132('0x1e')]:_0x27713e['offset']+_0x27713e[_0xb132('0x1d')];var _0x101066;if(_0x2d7a70>=_0x3eb103){_0x2d7a70=_0x3eb103;_0x101066=0xc8;}else{_0x101066=0xce;}_0x547844['status'](_0x101066);return _0x547844['set'](_0xb132('0x1f'),_0x2b8010+'-'+_0x2d7a70+'/'+_0x3eb103)[_0xb132('0x1b')](_0x3c4e03);}return null;};}function patchUpdates(_0x2cf9e7){return function(_0x40277e){try{jsonpatch[_0xb132('0x20')](_0x40277e,_0x2cf9e7,!![]);}catch(_0x5980b7){return BPromise[_0xb132('0x21')](_0x5980b7);}return _0x40277e[_0xb132('0x22')]();};}function saveUpdates(_0x24d1e1,_0x327a0e){return function(_0x1eae20){if(_0x1eae20){return _0x1eae20[_0xb132('0x23')](_0x24d1e1)['then'](function(_0x8cd301){return _0x8cd301;});}return null;};}function removeEntity(_0x294a29,_0x1fcb82){return function(_0x36090c){if(_0x36090c){return _0x36090c['destroy']()[_0xb132('0x24')](function(){_0x294a29['status'](0xcc)[_0xb132('0x25')]();});}};}function handleEntityNotFound(_0x218154,_0x1643fa){return function(_0x4d8d96){if(!_0x4d8d96){_0x218154[_0xb132('0x19')](0x194);}return _0x4d8d96;};}function handleError(_0x4084ca,_0x13a51a){_0x13a51a=_0x13a51a||0x1f4;return function(_0x24bfda){logger[_0xb132('0x26')](_0x24bfda[_0xb132('0x27')]);if(_0x24bfda[_0xb132('0x28')]){delete _0x24bfda[_0xb132('0x28')];}_0x4084ca['status'](_0x13a51a)[_0xb132('0x29')](_0x24bfda);};}exports[_0xb132('0x2a')]=function(_0xf4e443,_0x3e6122){var _0x4d1d40={},_0x4bb9b0={},_0x2ec8d4={'count':0x0,'rows':[]};var _0x9c31f8=_[_0xb132('0x2b')](db['ZendeskField']['rawAttributes'],function(_0x278fe2){return{'name':_0x278fe2[_0xb132('0x2c')],'type':_0x278fe2[_0xb132('0x2d')][_0xb132('0x2e')]};});_0x4bb9b0[_0xb132('0x2f')]=_[_0xb132('0x2b')](_0x9c31f8,_0xb132('0x28'));_0x4bb9b0['query']=_[_0xb132('0x30')](_0xf4e443[_0xb132('0x31')]);_0x4bb9b0[_0xb132('0x32')]=_[_0xb132('0x33')](_0x4bb9b0[_0xb132('0x2f')],_0x4bb9b0[_0xb132('0x31')]);_0x4d1d40[_0xb132('0x34')]=_[_0xb132('0x33')](_0x4bb9b0[_0xb132('0x2f')],qs[_0xb132('0x35')](_0xf4e443[_0xb132('0x31')][_0xb132('0x35')]));_0x4d1d40[_0xb132('0x34')]=_0x4d1d40[_0xb132('0x34')]['length']?_0x4d1d40[_0xb132('0x34')]:_0x4bb9b0[_0xb132('0x2f')];if(!_0xf4e443[_0xb132('0x31')]['hasOwnProperty']('nolimit')){_0x4d1d40[_0xb132('0x1d')]=qs[_0xb132('0x1d')](_0xf4e443[_0xb132('0x31')][_0xb132('0x1d')]);_0x4d1d40[_0xb132('0x36')]=qs[_0xb132('0x36')](_0xf4e443[_0xb132('0x31')][_0xb132('0x36')]);}_0x4d1d40[_0xb132('0x37')]=qs['sort'](_0xf4e443[_0xb132('0x31')][_0xb132('0x38')]);_0x4d1d40['where']=qs[_0xb132('0x32')](_['pick'](_0xf4e443[_0xb132('0x31')],_0x4bb9b0[_0xb132('0x32')]),_0x9c31f8);if(_0xf4e443[_0xb132('0x31')][_0xb132('0x39')]){_0x4d1d40[_0xb132('0x3a')]=_[_0xb132('0x3b')](_0x4d1d40[_0xb132('0x3a')],{'$or':_[_0xb132('0x2b')](_0x9c31f8,function(_0x41e9fa){if(_0x41e9fa['type']!==_0xb132('0x3c')){var _0x56ce4d={};_0x56ce4d[_0x41e9fa[_0xb132('0x28')]]={'$like':'%'+_0xf4e443[_0xb132('0x31')][_0xb132('0x39')]+'%'};return _0x56ce4d;}})});}_0x4d1d40=_[_0xb132('0x3b')]({},_0x4d1d40,_0xf4e443[_0xb132('0x3d')]);var _0xfc9b03={'where':_0x4d1d40[_0xb132('0x3a')]};return db[_0xb132('0x3e')][_0xb132('0x1e')](_0xfc9b03)[_0xb132('0x24')](function(_0x4279f0){_0x2ec8d4[_0xb132('0x1e')]=_0x4279f0;if(_0xf4e443[_0xb132('0x31')][_0xb132('0x3f')]){_0x4d1d40[_0xb132('0x40')]=[{'all':!![]}];}return db[_0xb132('0x3e')][_0xb132('0x41')](_0x4d1d40);})['then'](function(_0x48685c){_0x2ec8d4[_0xb132('0x42')]=_0x48685c;return _0x2ec8d4;})[_0xb132('0x24')](respondWithFilteredResult(_0x3e6122,_0x4d1d40))[_0xb132('0x43')](handleError(_0x3e6122,null));};exports['show']=function(_0x462451,_0xe725cc){var _0xd82e35={'raw':!![],'where':{'id':_0x462451[_0xb132('0x44')]['id']}},_0x46a376={};_0x46a376[_0xb132('0x2f')]=_[_0xb132('0x30')](db[_0xb132('0x3e')]['rawAttributes']);_0x46a376[_0xb132('0x31')]=_[_0xb132('0x30')](_0x462451[_0xb132('0x31')]);_0x46a376[_0xb132('0x32')]=_['intersection'](_0x46a376[_0xb132('0x2f')],_0x46a376[_0xb132('0x31')]);_0xd82e35[_0xb132('0x34')]=_[_0xb132('0x33')](_0x46a376['model'],qs[_0xb132('0x35')](_0x462451[_0xb132('0x31')][_0xb132('0x35')]));_0xd82e35['attributes']=_0xd82e35[_0xb132('0x34')][_0xb132('0x45')]?_0xd82e35[_0xb132('0x34')]:_0x46a376['model'];if(_0x462451[_0xb132('0x31')]['includeAll']){_0xd82e35['include']=[{'all':!![]}];}_0xd82e35=_[_0xb132('0x3b')]({},_0xd82e35,_0x462451['options']);return db['ZendeskField'][_0xb132('0x46')](_0xd82e35)[_0xb132('0x24')](handleEntityNotFound(_0xe725cc,null))[_0xb132('0x24')](respondWithResult(_0xe725cc,null))[_0xb132('0x43')](handleError(_0xe725cc,null));};exports[_0xb132('0x47')]=function(_0x1eab24,_0x2d634c){return db[_0xb132('0x3e')]['create'](_0x1eab24['body'],{})[_0xb132('0x24')](respondWithResult(_0x2d634c,0xc9))[_0xb132('0x43')](handleError(_0x2d634c,null));};exports[_0xb132('0x23')]=function(_0x1f3bd2,_0x426fa9){if(_0x1f3bd2[_0xb132('0x48')]['id']){delete _0x1f3bd2[_0xb132('0x48')]['id'];}return db[_0xb132('0x3e')]['find']({'where':{'id':_0x1f3bd2[_0xb132('0x44')]['id']}})[_0xb132('0x24')](handleEntityNotFound(_0x426fa9,null))['then'](saveUpdates(_0x1f3bd2[_0xb132('0x48')],null))[_0xb132('0x24')](respondWithResult(_0x426fa9,null))[_0xb132('0x43')](handleError(_0x426fa9,null));};exports[_0xb132('0x49')]=function(_0x1cead9,_0x4e2598){return db[_0xb132('0x3e')]['find']({'where':{'id':_0x1cead9[_0xb132('0x44')]['id']}})[_0xb132('0x24')](handleEntityNotFound(_0x4e2598,null))[_0xb132('0x24')](removeEntity(_0x4e2598,null))[_0xb132('0x43')](handleError(_0x4e2598,null));};
\ No newline at end of file
+var _0x0be4=['../../config/license/util','sendStatus','status','end','json','count','offset','limit','set','Content-Range','apply','reject','update','then','destroy','error','name','index','map','ZendeskField','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','params','catch','create','body','find','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','path','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'];(function(_0x5f09c5,_0x2bfca0){var _0x426ad9=function(_0x18fe5f){while(--_0x18fe5f){_0x5f09c5['push'](_0x5f09c5['shift']());}};_0x426ad9(++_0x2bfca0);}(_0x0be4,0x1ed));var _0x40be=function(_0x3d04d8,_0x35709f){_0x3d04d8=_0x3d04d8-0x0;var _0x35d01f=_0x0be4[_0x3d04d8];return _0x35d01f;};'use strict';var emlformat=require(_0x40be('0x0'));var rimraf=require(_0x40be('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x40be('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x40be('0x3'));var Mustache=require(_0x40be('0x4'));var util=require(_0x40be('0x5'));var path=require(_0x40be('0x6'));var sox=require('sox');var csv=require(_0x40be('0x7'));var ejs=require(_0x40be('0x8'));var fs=require('fs');var fs_extra=require(_0x40be('0x9'));var _=require('lodash');var squel=require(_0x40be('0xa'));var crypto=require(_0x40be('0xb'));var jsforce=require(_0x40be('0xc'));var deskjs=require(_0x40be('0xd'));var toCsv=require('to-csv');var querystring=require(_0x40be('0xe'));var Papa=require(_0x40be('0xf'));var Redis=require(_0x40be('0x10'));var authService=require(_0x40be('0x11'));var qs=require(_0x40be('0x12'));var as=require(_0x40be('0x13'));var hardwareService=require(_0x40be('0x14'));var logger=require(_0x40be('0x15'))(_0x40be('0x16'));var utils=require(_0x40be('0x17'));var config=require(_0x40be('0x18'));var licenseUtil=require(_0x40be('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x19f4a2,_0xa01481){_0xa01481=_0xa01481||0xcc;return function(_0x1f00e7){if(_0x1f00e7){return _0x19f4a2[_0x40be('0x1a')](_0xa01481);}return _0x19f4a2[_0x40be('0x1b')](_0xa01481)[_0x40be('0x1c')]();};}function respondWithResult(_0xe9dbe3,_0x45b737){_0x45b737=_0x45b737||0xc8;return function(_0x5934af){if(_0x5934af){return _0xe9dbe3[_0x40be('0x1b')](_0x45b737)[_0x40be('0x1d')](_0x5934af);}};}function respondWithFilteredResult(_0x3ad07c,_0x5b062c){return function(_0xcec47d){if(_0xcec47d){var _0x58d9a0=typeof _0x5b062c['offset']==='undefined'&&typeof _0x5b062c['limit']==='undefined';var _0x5944a4=_0xcec47d[_0x40be('0x1e')];var _0x3ca6ec=_0x58d9a0?0x0:_0x5b062c[_0x40be('0x1f')];var _0x4b98b1=_0x58d9a0?_0xcec47d[_0x40be('0x1e')]:_0x5b062c[_0x40be('0x1f')]+_0x5b062c[_0x40be('0x20')];var _0xac524;if(_0x4b98b1>=_0x5944a4){_0x4b98b1=_0x5944a4;_0xac524=0xc8;}else{_0xac524=0xce;}_0x3ad07c[_0x40be('0x1b')](_0xac524);return _0x3ad07c[_0x40be('0x21')](_0x40be('0x22'),_0x3ca6ec+'-'+_0x4b98b1+'/'+_0x5944a4)[_0x40be('0x1d')](_0xcec47d);}return null;};}function patchUpdates(_0x251c86){return function(_0x2b213c){try{jsonpatch[_0x40be('0x23')](_0x2b213c,_0x251c86,!![]);}catch(_0x178ead){return BPromise[_0x40be('0x24')](_0x178ead);}return _0x2b213c['save']();};}function saveUpdates(_0x4acc15,_0x252168){return function(_0x82871a){if(_0x82871a){return _0x82871a[_0x40be('0x25')](_0x4acc15)[_0x40be('0x26')](function(_0x563ec1){return _0x563ec1;});}return null;};}function removeEntity(_0x2d4ba5,_0xba9ff4){return function(_0x37314f){if(_0x37314f){return _0x37314f[_0x40be('0x27')]()[_0x40be('0x26')](function(){_0x2d4ba5[_0x40be('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4e1a97,_0x28a835){return function(_0x2c7f25){if(!_0x2c7f25){_0x4e1a97['sendStatus'](0x194);}return _0x2c7f25;};}function handleError(_0x2d6e57,_0x2e600a){_0x2e600a=_0x2e600a||0x1f4;return function(_0x336dcb){logger[_0x40be('0x28')](_0x336dcb['stack']);if(_0x336dcb[_0x40be('0x29')]){delete _0x336dcb[_0x40be('0x29')];}_0x2d6e57['status'](_0x2e600a)['send'](_0x336dcb);};}exports[_0x40be('0x2a')]=function(_0x311996,_0xce4d1c){var _0x17ad1f={},_0x45df58={},_0x46ca54={'count':0x0,'rows':[]};var _0x47b1d0=_[_0x40be('0x2b')](db[_0x40be('0x2c')][_0x40be('0x2d')],function(_0x51316d){return{'name':_0x51316d['fieldName'],'type':_0x51316d[_0x40be('0x2e')][_0x40be('0x2f')]};});_0x45df58[_0x40be('0x30')]=_[_0x40be('0x2b')](_0x47b1d0,'name');_0x45df58[_0x40be('0x31')]=_[_0x40be('0x32')](_0x311996[_0x40be('0x31')]);_0x45df58[_0x40be('0x33')]=_['intersection'](_0x45df58[_0x40be('0x30')],_0x45df58[_0x40be('0x31')]);_0x17ad1f[_0x40be('0x34')]=_[_0x40be('0x35')](_0x45df58['model'],qs[_0x40be('0x36')](_0x311996[_0x40be('0x31')][_0x40be('0x36')]));_0x17ad1f['attributes']=_0x17ad1f[_0x40be('0x34')][_0x40be('0x37')]?_0x17ad1f['attributes']:_0x45df58[_0x40be('0x30')];if(!_0x311996[_0x40be('0x31')][_0x40be('0x38')](_0x40be('0x39'))){_0x17ad1f['limit']=qs[_0x40be('0x20')](_0x311996[_0x40be('0x31')][_0x40be('0x20')]);_0x17ad1f[_0x40be('0x1f')]=qs[_0x40be('0x1f')](_0x311996[_0x40be('0x31')]['offset']);}_0x17ad1f['order']=qs[_0x40be('0x3a')](_0x311996[_0x40be('0x31')][_0x40be('0x3a')]);_0x17ad1f[_0x40be('0x3b')]=qs[_0x40be('0x33')](_[_0x40be('0x3c')](_0x311996['query'],_0x45df58[_0x40be('0x33')]),_0x47b1d0);if(_0x311996['query'][_0x40be('0x3d')]){_0x17ad1f[_0x40be('0x3b')]=_[_0x40be('0x3e')](_0x17ad1f['where'],{'$or':_['map'](_0x47b1d0,function(_0x30a112){if(_0x30a112[_0x40be('0x2e')]!==_0x40be('0x3f')){var _0x267422={};_0x267422[_0x30a112[_0x40be('0x29')]]={'$like':'%'+_0x311996[_0x40be('0x31')][_0x40be('0x3d')]+'%'};return _0x267422;}})});}_0x17ad1f=_['merge']({},_0x17ad1f,_0x311996[_0x40be('0x40')]);var _0x5dc6c2={'where':_0x17ad1f[_0x40be('0x3b')]};return db[_0x40be('0x2c')][_0x40be('0x1e')](_0x5dc6c2)[_0x40be('0x26')](function(_0x913e45){_0x46ca54['count']=_0x913e45;if(_0x311996[_0x40be('0x31')][_0x40be('0x41')]){_0x17ad1f[_0x40be('0x42')]=[{'all':!![]}];}return db[_0x40be('0x2c')][_0x40be('0x43')](_0x17ad1f);})[_0x40be('0x26')](function(_0x1c1361){_0x46ca54['rows']=_0x1c1361;return _0x46ca54;})[_0x40be('0x26')](respondWithFilteredResult(_0xce4d1c,_0x17ad1f))['catch'](handleError(_0xce4d1c,null));};exports[_0x40be('0x44')]=function(_0x2a2535,_0x4bc838){var _0x58ce4f={'raw':!![],'where':{'id':_0x2a2535[_0x40be('0x45')]['id']}},_0x39c74e={};_0x39c74e[_0x40be('0x30')]=_[_0x40be('0x32')](db[_0x40be('0x2c')][_0x40be('0x2d')]);_0x39c74e[_0x40be('0x31')]=_[_0x40be('0x32')](_0x2a2535[_0x40be('0x31')]);_0x39c74e['filters']=_[_0x40be('0x35')](_0x39c74e[_0x40be('0x30')],_0x39c74e[_0x40be('0x31')]);_0x58ce4f[_0x40be('0x34')]=_[_0x40be('0x35')](_0x39c74e['model'],qs[_0x40be('0x36')](_0x2a2535['query'][_0x40be('0x36')]));_0x58ce4f['attributes']=_0x58ce4f['attributes']['length']?_0x58ce4f[_0x40be('0x34')]:_0x39c74e[_0x40be('0x30')];if(_0x2a2535[_0x40be('0x31')]['includeAll']){_0x58ce4f['include']=[{'all':!![]}];}_0x58ce4f=_[_0x40be('0x3e')]({},_0x58ce4f,_0x2a2535['options']);return db[_0x40be('0x2c')]['find'](_0x58ce4f)[_0x40be('0x26')](handleEntityNotFound(_0x4bc838,null))[_0x40be('0x26')](respondWithResult(_0x4bc838,null))[_0x40be('0x46')](handleError(_0x4bc838,null));};exports['create']=function(_0x48fc0b,_0x45df19){return db[_0x40be('0x2c')][_0x40be('0x47')](_0x48fc0b[_0x40be('0x48')],{})['then'](respondWithResult(_0x45df19,0xc9))[_0x40be('0x46')](handleError(_0x45df19,null));};exports['update']=function(_0x5972af,_0xd459c7){if(_0x5972af[_0x40be('0x48')]['id']){delete _0x5972af[_0x40be('0x48')]['id'];}return db['ZendeskField'][_0x40be('0x49')]({'where':{'id':_0x5972af[_0x40be('0x45')]['id']}})['then'](handleEntityNotFound(_0xd459c7,null))[_0x40be('0x26')](saveUpdates(_0x5972af[_0x40be('0x48')],null))[_0x40be('0x26')](respondWithResult(_0xd459c7,null))[_0x40be('0x46')](handleError(_0xd459c7,null));};exports[_0x40be('0x27')]=function(_0x11fb0e,_0x291eb6){return db[_0x40be('0x2c')]['find']({'where':{'id':_0x11fb0e[_0x40be('0x45')]['id']}})[_0x40be('0x26')](handleEntityNotFound(_0x291eb6,null))[_0x40be('0x26')](removeEntity(_0x291eb6,null))[_0x40be('0x46')](handleError(_0x291eb6,null));};
\ No newline at end of file
index eb0d1d3..1761240 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ce6=['int_zendesk_fields','zendesk_unique_index','FieldId','lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZendeskField.attributes','exports','ZendeskField'];(function(_0x426121,_0x433941){var _0x179569=function(_0x5e75fb){while(--_0x5e75fb){_0x426121['push'](_0x426121['shift']());}};_0x179569(++_0x433941);}(_0x8ce6,0xf1));var _0x68ce=function(_0x484c64,_0x1cbbd){_0x484c64=_0x484c64-0x0;var _0x3fc964=_0x8ce6[_0x484c64];return _0x3fc964;};'use strict';var _=require(_0x68ce('0x0'));var util=require(_0x68ce('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x68ce('0x2'));var BPromise=require(_0x68ce('0x3'));var rp=require(_0x68ce('0x4'));var fs=require('fs');var path=require(_0x68ce('0x5'));var rimraf=require(_0x68ce('0x6'));var config=require(_0x68ce('0x7'));var attributes=require(_0x68ce('0x8'));module[_0x68ce('0x9')]=function(_0x13c0c9,_0x45837d){return _0x13c0c9['define'](_0x68ce('0xa'),attributes,{'tableName':_0x68ce('0xb'),'paranoid':![],'indexes':[{'name':_0x68ce('0xc'),'fields':['idField',_0x68ce('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1e00=['FieldId','util','../../config/logger','api','moment','request-promise','path','./intZendeskField.attributes','define','ZendeskField','zendesk_unique_index'];(function(_0x17c483,_0xc69535){var _0x112bdb=function(_0x19adb9){while(--_0x19adb9){_0x17c483['push'](_0x17c483['shift']());}};_0x112bdb(++_0xc69535);}(_0x1e00,0x1b9));var _0x01e0=function(_0x1fd912,_0x5f27b7){_0x1fd912=_0x1fd912-0x0;var _0xe87d35=_0x1e00[_0x1fd912];return _0xe87d35;};'use strict';var _=require('lodash');var util=require(_0x01e0('0x0'));var logger=require(_0x01e0('0x1'))(_0x01e0('0x2'));var moment=require(_0x01e0('0x3'));var BPromise=require('bluebird');var rp=require(_0x01e0('0x4'));var fs=require('fs');var path=require(_0x01e0('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x01e0('0x6'));module['exports']=function(_0x301ddf,_0xd3761d){return _0x301ddf[_0x01e0('0x7')](_0x01e0('0x8'),attributes,{'tableName':'int_zendesk_fields','paranoid':![],'indexes':[{'name':_0x01e0('0x9'),'fields':['idField',_0x01e0('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index e35d058..632b50d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a7d=['client','http','request','request\x20sent','debug','stringify','error','code','message','ZendeskField,\x20%s,\x20%s','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x37aad6,_0xa67ee1){var _0x5bb576=function(_0x3e298f){while(--_0x3e298f){_0x37aad6['push'](_0x37aad6['shift']());}};_0x5bb576(++_0xa67ee1);}(_0x6a7d,0x79));var _0xd6a7=function(_0x5713b5,_0x423f83){_0x5713b5=_0x5713b5-0x0;var _0x2f795d=_0x6a7d[_0x5713b5];return _0x2f795d;};'use strict';var _=require(_0xd6a7('0x0'));var util=require(_0xd6a7('0x1'));var moment=require(_0xd6a7('0x2'));var BPromise=require('bluebird');var rs=require(_0xd6a7('0x3'));var fs=require('fs');var Redis=require(_0xd6a7('0x4'));var db=require(_0xd6a7('0x5'))['db'];var utils=require(_0xd6a7('0x6'));var logger=require(_0xd6a7('0x7'))(_0xd6a7('0x8'));var config=require(_0xd6a7('0x9'));var jayson=require(_0xd6a7('0xa'));var client=jayson[_0xd6a7('0xb')][_0xd6a7('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x55fcdd,_0x358a4e,_0x16d821){return new BPromise(function(_0x151cb4,_0x255cf4){return client[_0xd6a7('0xd')](_0x55fcdd,_0x16d821)['then'](function(_0xd1e91b){logger['info']('ZendeskField,\x20%s,\x20%s',_0x358a4e,_0xd6a7('0xe'));logger[_0xd6a7('0xf')]('ZendeskField,\x20%s,\x20%s,\x20%s',_0x358a4e,_0xd6a7('0xe'),JSON[_0xd6a7('0x10')](_0xd1e91b));if(_0xd1e91b['error']){if(_0xd1e91b[_0xd6a7('0x11')][_0xd6a7('0x12')]===0x1f4){logger['error']('ZendeskField,\x20%s,\x20%s',_0x358a4e,_0xd1e91b[_0xd6a7('0x11')][_0xd6a7('0x13')]);return _0x255cf4(_0xd1e91b[_0xd6a7('0x11')][_0xd6a7('0x13')]);}logger[_0xd6a7('0x11')](_0xd6a7('0x14'),_0x358a4e,_0xd1e91b[_0xd6a7('0x11')][_0xd6a7('0x13')]);return _0x151cb4(_0xd1e91b[_0xd6a7('0x11')]['message']);}else{logger['info'](_0xd6a7('0x14'),_0x358a4e,_0xd6a7('0xe'));_0x151cb4(_0xd1e91b['result'][_0xd6a7('0x13')]);}})[_0xd6a7('0x15')](function(_0x294d12){logger[_0xd6a7('0x11')](_0xd6a7('0x14'),_0x358a4e,_0x294d12);_0x255cf4(_0x294d12);});});}
\ No newline at end of file
+var _0xb16c=['then','ZendeskField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','util','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','http','request'];(function(_0x159b5b,_0x4ec484){var _0x5c82c5=function(_0x26694f){while(--_0x26694f){_0x159b5b['push'](_0x159b5b['shift']());}};_0x5c82c5(++_0x4ec484);}(_0xb16c,0x161));var _0xcb16=function(_0x2f8375,_0x347fd7){_0x2f8375=_0x2f8375-0x0;var _0x2c003c=_0xb16c[_0x2f8375];return _0x2c003c;};'use strict';var _=require('lodash');var util=require(_0xcb16('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xcb16('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcb16('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xcb16('0x3'))(_0xcb16('0x4'));var config=require('../../config/environment');var jayson=require(_0xcb16('0x5'));var client=jayson['client'][_0xcb16('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x34dd3b,_0x5d1fc9,_0x4b1aba){return new BPromise(function(_0x22a05d,_0x5dae70){return client[_0xcb16('0x7')](_0x34dd3b,_0x4b1aba)[_0xcb16('0x8')](function(_0x546a19){logger['info'](_0xcb16('0x9'),_0x5d1fc9,_0xcb16('0xa'));logger[_0xcb16('0xb')]('ZendeskField,\x20%s,\x20%s,\x20%s',_0x5d1fc9,_0xcb16('0xa'),JSON[_0xcb16('0xc')](_0x546a19));if(_0x546a19['error']){if(_0x546a19[_0xcb16('0xd')][_0xcb16('0xe')]===0x1f4){logger['error'](_0xcb16('0x9'),_0x5d1fc9,_0x546a19[_0xcb16('0xd')][_0xcb16('0xf')]);return _0x5dae70(_0x546a19[_0xcb16('0xd')][_0xcb16('0xf')]);}logger['error']('ZendeskField,\x20%s,\x20%s',_0x5d1fc9,_0x546a19[_0xcb16('0xd')][_0xcb16('0xf')]);return _0x22a05d(_0x546a19[_0xcb16('0xd')]['message']);}else{logger[_0xcb16('0x10')]('ZendeskField,\x20%s,\x20%s',_0x5d1fc9,_0xcb16('0xa'));_0x22a05d(_0x546a19[_0xcb16('0x11')][_0xcb16('0xf')]);}})[_0xcb16('0x12')](function(_0x4f3043){logger[_0xcb16('0xd')](_0xcb16('0x9'),_0x5d1fc9,_0x4f3043);_0x5dae70(_0x4f3043);});});}
\ No newline at end of file
index f66d70f..2632e9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x418f=['getFields','post','create','addConfiguration','put','/:id','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations'];(function(_0x2202e2,_0x384799){var _0x211f25=function(_0x3b0426){while(--_0x3b0426){_0x2202e2['push'](_0x2202e2['shift']());}};_0x211f25(++_0x384799);}(_0x418f,0xb7));var _0xf418=function(_0x2abf68,_0x4ec499){_0x2abf68=_0x2abf68-0x0;var _0x2adec3=_0x418f[_0x2abf68];return _0x2adec3;};'use strict';var multer=require(_0xf418('0x0'));var util=require(_0xf418('0x1'));var path=require(_0xf418('0x2'));var timeout=require(_0xf418('0x3'));var express=require(_0xf418('0x4'));var router=express[_0xf418('0x5')]();var fs_extra=require(_0xf418('0x6'));var auth=require(_0xf418('0x7'));var interaction=require(_0xf418('0x8'));var config=require(_0xf418('0x9'));var controller=require(_0xf418('0xa'));router[_0xf418('0xb')]('/',auth[_0xf418('0xc')](),controller[_0xf418('0xd')]);router[_0xf418('0xb')]('/:id',auth[_0xf418('0xc')](),controller[_0xf418('0xe')]);router['get'](_0xf418('0xf'),auth[_0xf418('0xc')](),controller[_0xf418('0x10')]);router[_0xf418('0xb')]('/:id/fields',auth[_0xf418('0xc')](),controller[_0xf418('0x11')]);router[_0xf418('0x12')]('/',auth[_0xf418('0xc')](),controller[_0xf418('0x13')]);router['post']('/:id/configurations',auth[_0xf418('0xc')](),controller[_0xf418('0x14')]);router[_0xf418('0x15')](_0xf418('0x16'),auth['isAuthenticated'](),controller[_0xf418('0x17')]);router['delete'](_0xf418('0x16'),auth[_0xf418('0xc')](),controller['destroy']);module[_0xf418('0x18')]=router;
\ No newline at end of file
+var _0xe68e=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','get','isAuthenticated','/:id/configurations','getConfigurations','/:id/fields','getFields','post','put','/:id','delete','exports','util'];(function(_0x3014a4,_0x56b5aa){var _0x4ff3da=function(_0x17c093){while(--_0x17c093){_0x3014a4['push'](_0x3014a4['shift']());}};_0x4ff3da(++_0x56b5aa);}(_0xe68e,0x14f));var _0xee68=function(_0x3a2deb,_0x2f8c2d){_0x3a2deb=_0x3a2deb-0x0;var _0x203ab0=_0xe68e[_0x3a2deb];return _0x203ab0;};'use strict';var multer=require('multer');var util=require(_0xee68('0x0'));var path=require(_0xee68('0x1'));var timeout=require(_0xee68('0x2'));var express=require(_0xee68('0x3'));var router=express[_0xee68('0x4')]();var fs_extra=require(_0xee68('0x5'));var auth=require(_0xee68('0x6'));var interaction=require(_0xee68('0x7'));var config=require(_0xee68('0x8'));var controller=require(_0xee68('0x9'));router[_0xee68('0xa')]('/',auth[_0xee68('0xb')](),controller['index']);router[_0xee68('0xa')]('/:id',auth[_0xee68('0xb')](),controller['show']);router['get'](_0xee68('0xc'),auth['isAuthenticated'](),controller[_0xee68('0xd')]);router[_0xee68('0xa')](_0xee68('0xe'),auth['isAuthenticated'](),controller[_0xee68('0xf')]);router[_0xee68('0x10')]('/',auth[_0xee68('0xb')](),controller['create']);router[_0xee68('0x10')]('/:id/configurations',auth[_0xee68('0xb')](),controller['addConfiguration']);router[_0xee68('0x11')](_0xee68('0x12'),auth[_0xee68('0xb')](),controller['update']);router[_0xee68('0x13')](_0xee68('0x12'),auth['isAuthenticated'](),controller['destroy']);module[_0xee68('0x14')]=router;
\ No newline at end of file
index 303d6e3..0b40e15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0bb=['exports','STRING','sequelize'];(function(_0xfe76cd,_0x8c73cd){var _0x118106=function(_0x4f05a0){while(--_0x4f05a0){_0xfe76cd['push'](_0xfe76cd['shift']());}};_0x118106(++_0x8c73cd);}(_0xd0bb,0x1eb));var _0xbd0b=function(_0x4ae5b9,_0x4a42d2){_0x4ae5b9=_0x4ae5b9-0x0;var _0x3f94f4=_0xd0bb[_0x4ae5b9];return _0x3f94f4;};'use strict';var Sequelize=require(_0xbd0b('0x0'));module[_0xbd0b('0x1')]={'name':{'type':Sequelize[_0xbd0b('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xbd0b('0x2')]},'zone':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0xbd0b('0x2')]},'clientSecret':{'type':Sequelize[_0xbd0b('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'code':{'type':Sequelize[_0xbd0b('0x2')]},'refreshToken':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xda55=['STRING','sequelize','exports'];(function(_0x4e1d03,_0x786f3a){var _0x362d4b=function(_0x1924d2){while(--_0x1924d2){_0x4e1d03['push'](_0x4e1d03['shift']());}};_0x362d4b(++_0x786f3a);}(_0xda55,0x6d));var _0x5da5=function(_0x610144,_0x1be4c5){_0x610144=_0x610144-0x0;var _0x43b6e4=_0xda55[_0x610144];return _0x43b6e4;};'use strict';var Sequelize=require(_0x5da5('0x0'));module[_0x5da5('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x5da5('0x2')]},'zone':{'type':Sequelize[_0x5da5('0x2')]},'clientId':{'type':Sequelize[_0x5da5('0x2')]},'clientSecret':{'type':Sequelize[_0x5da5('0x2')]},'serverUrl':{'type':Sequelize[_0x5da5('0x2')],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0x5da5('0x2')]}};
\ No newline at end of file
index af3127c..d7e4d4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7eae=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','end','status','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','stack','name','send','map','ZohoAccount','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','rows','catch','show','params','find','create','body','getConfigurations','findOne','ZohoConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','ZohoField','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','clientSecret','refresh_token','host','serverUrl','code','zoho.eu','slice','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','response','error','message','Owner','Subject','Description','WhoId','Call_Duration','Call_Result','remove','system_mandatory','push','display_label','data_type','picklist','test','getFields,\x20%s,\x20%s,\x20%s','getFields','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x5045e2,_0x4f8a89){var _0x33bd4c=function(_0x1e4ba1){while(--_0x1e4ba1){_0x5045e2['push'](_0x5045e2['shift']());}};_0x33bd4c(++_0x4f8a89);}(_0x7eae,0x165));var _0xe7ea=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0x7eae[_0x2763f2];return _0x3ef471;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe7ea('0x0'));var zipdir=require(_0xe7ea('0x1'));var jsonpatch=require(_0xe7ea('0x2'));var rp=require('request-promise');var moment=require(_0xe7ea('0x3'));var BPromise=require(_0xe7ea('0x4'));var Mustache=require(_0xe7ea('0x5'));var util=require(_0xe7ea('0x6'));var path=require(_0xe7ea('0x7'));var sox=require(_0xe7ea('0x8'));var csv=require(_0xe7ea('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe7ea('0xa'));var _=require('lodash');var squel=require(_0xe7ea('0xb'));var crypto=require(_0xe7ea('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xe7ea('0x9'));var querystring=require(_0xe7ea('0xd'));var Papa=require(_0xe7ea('0xe'));var Redis=require(_0xe7ea('0xf'));var authService=require(_0xe7ea('0x10'));var qs=require(_0xe7ea('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe7ea('0x12'));var logger=require(_0xe7ea('0x13'))(_0xe7ea('0x14'));var utils=require(_0xe7ea('0x15'));var config=require(_0xe7ea('0x16'));var licenseUtil=require(_0xe7ea('0x17'));var db=require('../../mysqldb')['db'];var integrations=require(_0xe7ea('0x18'));function respondWithStatusCode(_0x481b60,_0x30189e){_0x30189e=_0x30189e||0xcc;return function(_0x33a55d){if(_0x33a55d){return _0x481b60[_0xe7ea('0x19')](_0x30189e);}return _0x481b60['status'](_0x30189e)[_0xe7ea('0x1a')]();};}function respondWithResult(_0x15a42d,_0x59dc40){_0x59dc40=_0x59dc40||0xc8;return function(_0x21b9b4){if(_0x21b9b4){return _0x15a42d[_0xe7ea('0x1b')](_0x59dc40)[_0xe7ea('0x1c')](_0x21b9b4);}};}function respondWithFilteredResult(_0x4e3b7c,_0x18977c){return function(_0x3ffb09){if(_0x3ffb09){var _0x4736fd=typeof _0x18977c['offset']==='undefined'&&typeof _0x18977c[_0xe7ea('0x1d')]===_0xe7ea('0x1e');var _0x17ee43=_0x3ffb09[_0xe7ea('0x1f')];var _0xdbb5bd=_0x4736fd?0x0:_0x18977c[_0xe7ea('0x20')];var _0x39f2e3=_0x4736fd?_0x3ffb09['count']:_0x18977c['offset']+_0x18977c[_0xe7ea('0x1d')];var _0x2a4111;if(_0x39f2e3>=_0x17ee43){_0x39f2e3=_0x17ee43;_0x2a4111=0xc8;}else{_0x2a4111=0xce;}_0x4e3b7c[_0xe7ea('0x1b')](_0x2a4111);return _0x4e3b7c[_0xe7ea('0x21')](_0xe7ea('0x22'),_0xdbb5bd+'-'+_0x39f2e3+'/'+_0x17ee43)[_0xe7ea('0x1c')](_0x3ffb09);}return null;};}function patchUpdates(_0x40124c){return function(_0x921a8){try{jsonpatch[_0xe7ea('0x23')](_0x921a8,_0x40124c,!![]);}catch(_0x14190b){return BPromise[_0xe7ea('0x24')](_0x14190b);}return _0x921a8[_0xe7ea('0x25')]();};}function saveUpdates(_0x253dc5,_0x4aea99){return function(_0x34ebb0){if(_0x34ebb0){return _0x34ebb0[_0xe7ea('0x26')](_0x253dc5)[_0xe7ea('0x27')](function(_0x3eb5ab){return _0x3eb5ab;});}return null;};}function removeEntity(_0x206e78,_0x57f830){return function(_0x321c61){if(_0x321c61){return _0x321c61['destroy']()[_0xe7ea('0x27')](function(){_0x206e78[_0xe7ea('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1d628e,_0x5cd5e9){return function(_0x35940e){if(!_0x35940e){_0x1d628e['sendStatus'](0x194);}return _0x35940e;};}function handleError(_0x37aeb0,_0x59bb3b){_0x59bb3b=_0x59bb3b||0x1f4;return function(_0x30bb38){logger['error'](_0x30bb38[_0xe7ea('0x28')]);if(_0x30bb38[_0xe7ea('0x29')]){delete _0x30bb38[_0xe7ea('0x29')];}_0x37aeb0[_0xe7ea('0x1b')](_0x59bb3b)[_0xe7ea('0x2a')](_0x30bb38);};}exports['index']=function(_0x1c9020,_0x4fe19f){var _0x3f53aa={},_0x1c823c={},_0x2c0d3b={'count':0x0,'rows':[]};var _0x54f1cb=_[_0xe7ea('0x2b')](db[_0xe7ea('0x2c')][_0xe7ea('0x2d')],function(_0x2a7740){return{'name':_0x2a7740['fieldName'],'type':_0x2a7740[_0xe7ea('0x2e')]['key']};});_0x1c823c[_0xe7ea('0x2f')]=_[_0xe7ea('0x2b')](_0x54f1cb,_0xe7ea('0x29'));_0x1c823c[_0xe7ea('0x30')]=_[_0xe7ea('0x31')](_0x1c9020[_0xe7ea('0x30')]);_0x1c823c[_0xe7ea('0x32')]=_[_0xe7ea('0x33')](_0x1c823c[_0xe7ea('0x2f')],_0x1c823c[_0xe7ea('0x30')]);_0x3f53aa[_0xe7ea('0x34')]=_[_0xe7ea('0x33')](_0x1c823c[_0xe7ea('0x2f')],qs[_0xe7ea('0x35')](_0x1c9020[_0xe7ea('0x30')][_0xe7ea('0x35')]));_0x3f53aa[_0xe7ea('0x34')]=_0x3f53aa['attributes'][_0xe7ea('0x36')]?_0x3f53aa['attributes']:_0x1c823c[_0xe7ea('0x2f')];if(!_0x1c9020[_0xe7ea('0x30')][_0xe7ea('0x37')](_0xe7ea('0x38'))){_0x3f53aa[_0xe7ea('0x1d')]=qs[_0xe7ea('0x1d')](_0x1c9020[_0xe7ea('0x30')][_0xe7ea('0x1d')]);_0x3f53aa[_0xe7ea('0x20')]=qs[_0xe7ea('0x20')](_0x1c9020[_0xe7ea('0x30')][_0xe7ea('0x20')]);}_0x3f53aa[_0xe7ea('0x39')]=qs[_0xe7ea('0x3a')](_0x1c9020['query'][_0xe7ea('0x3a')]);_0x3f53aa[_0xe7ea('0x3b')]=qs[_0xe7ea('0x32')](_[_0xe7ea('0x3c')](_0x1c9020[_0xe7ea('0x30')],_0x1c823c[_0xe7ea('0x32')]),_0x54f1cb);if(_0x1c9020[_0xe7ea('0x30')]['filter']){_0x3f53aa[_0xe7ea('0x3b')]=_[_0xe7ea('0x3d')](_0x3f53aa[_0xe7ea('0x3b')],{'$or':_[_0xe7ea('0x2b')](_0x54f1cb,function(_0x371b07){if(_0x371b07['type']!==_0xe7ea('0x3e')){var _0xf8ebf6={};_0xf8ebf6[_0x371b07[_0xe7ea('0x29')]]={'$like':'%'+_0x1c9020[_0xe7ea('0x30')][_0xe7ea('0x3f')]+'%'};return _0xf8ebf6;}})});}_0x3f53aa=_[_0xe7ea('0x3d')]({},_0x3f53aa,_0x1c9020[_0xe7ea('0x40')]);var _0x4767ff={'where':_0x3f53aa['where']};return db[_0xe7ea('0x2c')][_0xe7ea('0x1f')](_0x4767ff)[_0xe7ea('0x27')](function(_0xcef032){_0x2c0d3b[_0xe7ea('0x1f')]=_0xcef032;if(_0x1c9020[_0xe7ea('0x30')][_0xe7ea('0x41')]){_0x3f53aa[_0xe7ea('0x42')]=[{'all':!![]}];}return db[_0xe7ea('0x2c')]['findAll'](_0x3f53aa);})['then'](function(_0x462ad2){_0x2c0d3b[_0xe7ea('0x43')]=_0x462ad2;return _0x2c0d3b;})[_0xe7ea('0x27')](respondWithFilteredResult(_0x4fe19f,_0x3f53aa))[_0xe7ea('0x44')](handleError(_0x4fe19f,null));};exports[_0xe7ea('0x45')]=function(_0x3fabf8,_0x54ddce){var _0x425f62={'raw':![],'where':{'id':_0x3fabf8[_0xe7ea('0x46')]['id']}},_0x287db2={};_0x287db2[_0xe7ea('0x2f')]=_[_0xe7ea('0x31')](db[_0xe7ea('0x2c')]['rawAttributes']);_0x287db2[_0xe7ea('0x30')]=_[_0xe7ea('0x31')](_0x3fabf8[_0xe7ea('0x30')]);_0x287db2['filters']=_[_0xe7ea('0x33')](_0x287db2[_0xe7ea('0x2f')],_0x287db2[_0xe7ea('0x30')]);_0x425f62['attributes']=_[_0xe7ea('0x33')](_0x287db2[_0xe7ea('0x2f')],qs[_0xe7ea('0x35')](_0x3fabf8[_0xe7ea('0x30')][_0xe7ea('0x35')]));_0x425f62[_0xe7ea('0x34')]=_0x425f62['attributes'][_0xe7ea('0x36')]?_0x425f62['attributes']:_0x287db2['model'];if(_0x3fabf8[_0xe7ea('0x30')]['includeAll']){_0x425f62[_0xe7ea('0x42')]=[{'all':!![]}];}_0x425f62=_[_0xe7ea('0x3d')]({},_0x425f62,_0x3fabf8['options']);return db[_0xe7ea('0x2c')][_0xe7ea('0x47')](_0x425f62)[_0xe7ea('0x27')](handleEntityNotFound(_0x54ddce,null))[_0xe7ea('0x27')](respondWithResult(_0x54ddce,null))['catch'](handleError(_0x54ddce,null));};exports[_0xe7ea('0x48')]=function(_0x3d2796,_0x406b47){return db[_0xe7ea('0x2c')][_0xe7ea('0x48')](_0x3d2796[_0xe7ea('0x49')],{})[_0xe7ea('0x27')](respondWithResult(_0x406b47,0xc9))[_0xe7ea('0x44')](handleError(_0x406b47,null));};exports[_0xe7ea('0x26')]=function(_0x346d3d,_0x3ac1c4){if(_0x346d3d['body']['id']){delete _0x346d3d[_0xe7ea('0x49')]['id'];}return db['ZohoAccount'][_0xe7ea('0x47')]({'where':{'id':_0x346d3d[_0xe7ea('0x46')]['id']}})[_0xe7ea('0x27')](handleEntityNotFound(_0x3ac1c4,null))[_0xe7ea('0x27')](saveUpdates(_0x346d3d[_0xe7ea('0x49')],null))[_0xe7ea('0x27')](respondWithResult(_0x3ac1c4,null))['catch'](handleError(_0x3ac1c4,null));};exports['destroy']=function(_0x3ea021,_0x25c1a8){return db[_0xe7ea('0x2c')][_0xe7ea('0x47')]({'where':{'id':_0x3ea021[_0xe7ea('0x46')]['id']}})[_0xe7ea('0x27')](handleEntityNotFound(_0x25c1a8,null))[_0xe7ea('0x27')](removeEntity(_0x25c1a8,null))[_0xe7ea('0x44')](handleError(_0x25c1a8,null));};exports[_0xe7ea('0x4a')]=function(_0x136cb5,_0x3b3f26,_0x9dc34b){var _0x477be4={};var _0x58f81a={};var _0x1adb3f;var _0x565095;return db[_0xe7ea('0x2c')][_0xe7ea('0x4b')]({'where':{'id':_0x136cb5[_0xe7ea('0x46')]['id']}})[_0xe7ea('0x27')](handleEntityNotFound(_0x3b3f26,null))[_0xe7ea('0x27')](function(_0xfbb137){if(_0xfbb137){_0x1adb3f=_0xfbb137;_0x58f81a['model']=_[_0xe7ea('0x31')](db[_0xe7ea('0x4c')][_0xe7ea('0x2d')]);_0x58f81a[_0xe7ea('0x30')]=_[_0xe7ea('0x31')](_0x136cb5[_0xe7ea('0x30')]);_0x58f81a[_0xe7ea('0x32')]=_[_0xe7ea('0x33')](_0x58f81a['model'],_0x58f81a['query']);_0x477be4['attributes']=_[_0xe7ea('0x33')](_0x58f81a['model'],qs[_0xe7ea('0x35')](_0x136cb5[_0xe7ea('0x30')]['fields']));_0x477be4[_0xe7ea('0x34')]=_0x477be4[_0xe7ea('0x34')][_0xe7ea('0x36')]?_0x477be4[_0xe7ea('0x34')]:_0x58f81a[_0xe7ea('0x2f')];_0x477be4[_0xe7ea('0x39')]=qs['sort'](_0x136cb5[_0xe7ea('0x30')][_0xe7ea('0x3a')]);_0x477be4[_0xe7ea('0x3b')]=qs[_0xe7ea('0x32')](_[_0xe7ea('0x3c')](_0x136cb5[_0xe7ea('0x30')],_0x58f81a[_0xe7ea('0x32')]));if(_0x136cb5[_0xe7ea('0x30')]['filter']){_0x477be4[_0xe7ea('0x3b')]=_['merge'](_0x477be4[_0xe7ea('0x3b')],{'$or':_['map'](_0x477be4[_0xe7ea('0x34')],function(_0x553f12){var _0x8d6879={};_0x8d6879[_0x553f12]={'$like':'%'+_0x136cb5[_0xe7ea('0x30')]['filter']+'%'};return _0x8d6879;})});}_0x477be4=_[_0xe7ea('0x3d')]({},_0x477be4,_0x136cb5[_0xe7ea('0x40')]);return _0x1adb3f[_0xe7ea('0x4a')](_0x477be4);}})[_0xe7ea('0x27')](function(_0x4ce06c){if(_0x4ce06c){_0x565095=_0x4ce06c[_0xe7ea('0x36')];if(!_0x136cb5[_0xe7ea('0x30')][_0xe7ea('0x37')](_0xe7ea('0x38'))){_0x477be4[_0xe7ea('0x1d')]=qs[_0xe7ea('0x1d')](_0x136cb5[_0xe7ea('0x30')][_0xe7ea('0x1d')]);_0x477be4[_0xe7ea('0x20')]=qs['offset'](_0x136cb5[_0xe7ea('0x30')][_0xe7ea('0x20')]);}return _0x1adb3f[_0xe7ea('0x4a')](_0x477be4);}})[_0xe7ea('0x27')](function(_0x26c2b5){if(_0x26c2b5){return _0x26c2b5?{'count':_0x565095,'rows':_0x26c2b5}:null;}})[_0xe7ea('0x27')](respondWithResult(_0x3b3f26,null))[_0xe7ea('0x44')](handleError(_0x3b3f26,null));};exports[_0xe7ea('0x4d')]=function(_0x425a29,_0x416028,_0x1a6beb){if(_0x425a29[_0xe7ea('0x49')]['id']){delete _0x425a29['body']['id'];}return db[_0xe7ea('0x2c')]['findOne']({'where':{'id':_0x425a29[_0xe7ea('0x46')]['id']}})[_0xe7ea('0x27')](handleEntityNotFound(_0x416028,null))[_0xe7ea('0x27')](function(_0x395351){if(_0x395351){_0x425a29['body'][_0xe7ea('0x4e')]=_0x395351['id'];_0x425a29['body'][_0xe7ea('0x4f')]=integrations[_0xe7ea('0x50')](_0x425a29['body'][_0xe7ea('0x51')],_0x425a29[_0xe7ea('0x49')][_0xe7ea('0x2e')]);_0x425a29[_0xe7ea('0x49')]['Descriptions']=integrations['getDescriptions'](_0x425a29[_0xe7ea('0x49')][_0xe7ea('0x51')],_0x425a29[_0xe7ea('0x49')][_0xe7ea('0x2e')]);return db[_0xe7ea('0x4c')][_0xe7ea('0x48')](_0x425a29[_0xe7ea('0x49')],{'include':[{'model':db[_0xe7ea('0x52')],'as':_0xe7ea('0x4f')},{'model':db[_0xe7ea('0x52')],'as':'Descriptions'}]});}return null;})[_0xe7ea('0x27')](respondWithResult(_0x416028,null))[_0xe7ea('0x44')](handleError(_0x416028,null));};function getAccessToken(_0x4b651a){return new Promise(function(_0x1ebf2f,_0x35cc66){var _0x57391a;switch(_0x4b651a[_0xe7ea('0x53')]){case'US':_0x57391a=_0xe7ea('0x54');break;case'AU':_0x57391a=_0xe7ea('0x55');break;case'EU':_0x57391a=_0xe7ea('0x56');break;case'IN':_0x57391a=_0xe7ea('0x57');break;case'CN':_0x57391a=_0xe7ea('0x58');break;default:_0x57391a=_0xe7ea('0x56');break;}var _0x330b2e={'method':_0xe7ea('0x59'),'uri':_0x57391a+_0xe7ea('0x5a'),'qs':{'refresh_token':_0x4b651a[_0xe7ea('0x5b')],'client_id':_0x4b651a[_0xe7ea('0x5c')],'client_secret':_0x4b651a[_0xe7ea('0x5d')],'grant_type':_0xe7ea('0x5e')},'json':!![]};return rp(_0x330b2e)[_0xe7ea('0x27')](function(_0xbc8f23){if(_0xbc8f23['access_token']){_0x1ebf2f(_0xbc8f23['access_token']);}else{_0x35cc66('Unable\x20to\x20retrieve\x20the\x20access\x20token');}})['catch'](function(_0x26326b){_0x35cc66(_0x26326b);});});}exports['getFields']=function(_0x48f878,_0x39f352,_0x59c96b){var _0x503312,_0x44511e,_0x5682b8,_0x213606,_0x28079c;return db['ZohoAccount'][_0xe7ea('0x4b')]({'where':{'id':_0x48f878[_0xe7ea('0x46')]['id']},'attributes':['id',_0xe7ea('0x5f'),'zone',_0xe7ea('0x5c'),_0xe7ea('0x5d'),_0xe7ea('0x60'),_0xe7ea('0x61'),_0xe7ea('0x5b')]})[_0xe7ea('0x27')](handleEntityNotFound(_0x39f352,null))[_0xe7ea('0x27')](function(_0x7e973a){_0x28079c=_0x7e973a;_0x503312=_0x28079c['host'];_0x44511e=_0x503312===_0xe7ea('0x62')?'eu':'com';_0x5682b8=_0x28079c[_0xe7ea('0x60')];var _0xe9ec58=_0x5682b8[_0xe7ea('0x63')](-0x1);if(_0xe9ec58==='/'||_0xe9ec58==='\x5c'||_0xe9ec58===':'){_0x5682b8=_0x5682b8[_0xe7ea('0x64')](0x0,_0x5682b8[_0xe7ea('0x65')](_0xe9ec58));}if(!_0x28079c['refreshToken']){throw new Error(_0xe7ea('0x66'));}return getAccessToken(_0x28079c);})[_0xe7ea('0x27')](function(_0x57b364){if(_0x57b364){return rp({'method':'GET','uri':util[_0xe7ea('0x67')](_0xe7ea('0x68'),_0x44511e),'qs':{'module':_0xe7ea('0x69')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x57b364},'json':!![]});}})[_0xe7ea('0x27')](function(_0xcc6a8e){if(_0xcc6a8e){if(_0xcc6a8e['response']&&_0xcc6a8e[_0xe7ea('0x6a')][_0xe7ea('0x6b')]){throw new Error(_0xcc6a8e[_0xe7ea('0x6a')][_0xe7ea('0x6b')][_0xe7ea('0x6c')]);}var _0x1b020e=[];var _0x4b5ac9=[];var _0x18ac17=[_0xe7ea('0x6d'),_0xe7ea('0x6e'),_0xe7ea('0x6f'),_0xe7ea('0x70'),_0xe7ea('0x71'),_0xe7ea('0x72'),'Call_Start_Time','Call_Type'];_0x4b5ac9=_[_0xe7ea('0x73')](_0xcc6a8e['fields'],function(_0x1464b2){return _0x18ac17['includes'](_0x1464b2['api_name']);});for(var _0x2c7166=0x0;_0x2c7166<_0x4b5ac9[_0xe7ea('0x36')];_0x2c7166++){if(_0x4b5ac9[_0x2c7166][_0xe7ea('0x74')]===![]){_0x1b020e[_0xe7ea('0x75')]({'id':_0x4b5ac9[_0x2c7166]['id'],'name':_0x4b5ac9[_0x2c7166][_0xe7ea('0x76')],'custom':_0x4b5ac9[_0x2c7166]['custom_field'],'options':_0x4b5ac9[_0x2c7166][_0xe7ea('0x77')]===_0xe7ea('0x78')&&_0x4b5ac9[_0x2c7166]['pick_list_values'][_0xe7ea('0x36')]>-0x1?_[_0xe7ea('0x2b')](_0x4b5ac9[_0x2c7166]['pick_list_values'],function(_0xf6b85f){return{'name':_0xf6b85f,'value':_0xf6b85f};}):[]});}}return{'count':_0x1b020e[_0xe7ea('0x36')],'rows':_0x1b020e};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x39f352,null))['catch'](function(_0x214f1f){var _0x26a81c=_0x48f878[_0xe7ea('0x30')][_0xe7ea('0x79')]?0x1f4:_0x214f1f['statusCode']||0x1f4;logger['error'](_0xe7ea('0x7a'),_0xe7ea('0x7b'),_0x26a81c,JSON['stringify'](_0x214f1f));delete _0x214f1f['name'];if(_0x26a81c===0x191){_0x26a81c=0x190;}_0x39f352['status'](_0x26a81c)[_0xe7ea('0x2a')](_0x48f878[_0xe7ea('0x30')][_0xe7ea('0x79')]?{'message':_0xe7ea('0x7c'),'statusCode':_0x214f1f['statusCode']}:_0x214f1f);});};
\ No newline at end of file
+var _0xc689=['body','params','getConfigurations','findOne','ZohoConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZohoField','https://accounts.zoho.com','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','clientId','refresh_token','access_token','getFields','host','zone','serverUrl','refreshToken','zoho.eu','com','slice','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','Owner','Subject','Description','WhoId','Call_Result','Call_Type','remove','includes','system_mandatory','push','custom_field','picklist','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','send','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','request-promise','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','destroy','then','sendStatus','error','name','map','ZohoAccount','rawAttributes','fieldName','type','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','merge','VIRTUAL','filter','options','includeAll','include','rows','catch','show','keys','find','create'];(function(_0x228598,_0x489492){var _0x1bd8c3=function(_0x16874f){while(--_0x16874f){_0x228598['push'](_0x228598['shift']());}};_0x1bd8c3(++_0x489492);}(_0xc689,0xb8));var _0x9c68=function(_0x340756,_0xad31ae){_0x340756=_0x340756-0x0;var _0x2ef745=_0xc689[_0x340756];return _0x2ef745;};'use strict';var emlformat=require(_0x9c68('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9c68('0x1'));var jsonpatch=require(_0x9c68('0x2'));var rp=require(_0x9c68('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x9c68('0x4'));var util=require('util');var path=require(_0x9c68('0x5'));var sox=require('sox');var csv=require(_0x9c68('0x6'));var ejs=require(_0x9c68('0x7'));var fs=require('fs');var fs_extra=require(_0x9c68('0x8'));var _=require(_0x9c68('0x9'));var squel=require(_0x9c68('0xa'));var crypto=require(_0x9c68('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x9c68('0xc'));var toCsv=require(_0x9c68('0x6'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x9c68('0xd'));var authService=require(_0x9c68('0xe'));var qs=require(_0x9c68('0xf'));var as=require(_0x9c68('0x10'));var hardwareService=require(_0x9c68('0x11'));var logger=require(_0x9c68('0x12'))('api');var utils=require(_0x9c68('0x13'));var config=require(_0x9c68('0x14'));var licenseUtil=require(_0x9c68('0x15'));var db=require(_0x9c68('0x16'))['db'];var integrations=require(_0x9c68('0x17'));function respondWithStatusCode(_0x1791c0,_0x1ee99f){_0x1ee99f=_0x1ee99f||0xcc;return function(_0x4ed282){if(_0x4ed282){return _0x1791c0['sendStatus'](_0x1ee99f);}return _0x1791c0[_0x9c68('0x18')](_0x1ee99f)[_0x9c68('0x19')]();};}function respondWithResult(_0x18992f,_0x5bd5dd){_0x5bd5dd=_0x5bd5dd||0xc8;return function(_0x3a45e2){if(_0x3a45e2){return _0x18992f[_0x9c68('0x18')](_0x5bd5dd)[_0x9c68('0x1a')](_0x3a45e2);}};}function respondWithFilteredResult(_0x4fcc34,_0x1e5560){return function(_0x47753b){if(_0x47753b){var _0x4d4f21=typeof _0x1e5560[_0x9c68('0x1b')]==='undefined'&&typeof _0x1e5560[_0x9c68('0x1c')]===_0x9c68('0x1d');var _0x2c9440=_0x47753b[_0x9c68('0x1e')];var _0x531092=_0x4d4f21?0x0:_0x1e5560[_0x9c68('0x1b')];var _0x3486=_0x4d4f21?_0x47753b[_0x9c68('0x1e')]:_0x1e5560['offset']+_0x1e5560[_0x9c68('0x1c')];var _0x190c70;if(_0x3486>=_0x2c9440){_0x3486=_0x2c9440;_0x190c70=0xc8;}else{_0x190c70=0xce;}_0x4fcc34['status'](_0x190c70);return _0x4fcc34[_0x9c68('0x1f')](_0x9c68('0x20'),_0x531092+'-'+_0x3486+'/'+_0x2c9440)[_0x9c68('0x1a')](_0x47753b);}return null;};}function patchUpdates(_0x207db4){return function(_0x586f18){try{jsonpatch[_0x9c68('0x21')](_0x586f18,_0x207db4,!![]);}catch(_0x5dc95f){return BPromise[_0x9c68('0x22')](_0x5dc95f);}return _0x586f18['save']();};}function saveUpdates(_0x2c5be8,_0x2c43b8){return function(_0x1148ff){if(_0x1148ff){return _0x1148ff[_0x9c68('0x23')](_0x2c5be8)['then'](function(_0x3174cf){return _0x3174cf;});}return null;};}function removeEntity(_0x4db795,_0x5cb8f9){return function(_0x11dc6c){if(_0x11dc6c){return _0x11dc6c[_0x9c68('0x24')]()[_0x9c68('0x25')](function(){_0x4db795[_0x9c68('0x18')](0xcc)[_0x9c68('0x19')]();});}};}function handleEntityNotFound(_0x238b07,_0xe689a9){return function(_0xa972b2){if(!_0xa972b2){_0x238b07[_0x9c68('0x26')](0x194);}return _0xa972b2;};}function handleError(_0x18d1f8,_0x1ffab1){_0x1ffab1=_0x1ffab1||0x1f4;return function(_0x1d2cea){logger[_0x9c68('0x27')](_0x1d2cea['stack']);if(_0x1d2cea['name']){delete _0x1d2cea[_0x9c68('0x28')];}_0x18d1f8[_0x9c68('0x18')](_0x1ffab1)['send'](_0x1d2cea);};}exports['index']=function(_0x49332a,_0x2dd987){var _0x150d23={},_0x4823ae={},_0x3f27cd={'count':0x0,'rows':[]};var _0x32e7a6=_[_0x9c68('0x29')](db[_0x9c68('0x2a')][_0x9c68('0x2b')],function(_0x411bfa){return{'name':_0x411bfa[_0x9c68('0x2c')],'type':_0x411bfa[_0x9c68('0x2d')]['key']};});_0x4823ae[_0x9c68('0x2e')]=_[_0x9c68('0x29')](_0x32e7a6,_0x9c68('0x28'));_0x4823ae[_0x9c68('0x2f')]=_['keys'](_0x49332a[_0x9c68('0x2f')]);_0x4823ae['filters']=_[_0x9c68('0x30')](_0x4823ae[_0x9c68('0x2e')],_0x4823ae['query']);_0x150d23[_0x9c68('0x31')]=_[_0x9c68('0x30')](_0x4823ae[_0x9c68('0x2e')],qs[_0x9c68('0x32')](_0x49332a[_0x9c68('0x2f')][_0x9c68('0x32')]));_0x150d23[_0x9c68('0x31')]=_0x150d23[_0x9c68('0x31')][_0x9c68('0x33')]?_0x150d23[_0x9c68('0x31')]:_0x4823ae[_0x9c68('0x2e')];if(!_0x49332a[_0x9c68('0x2f')][_0x9c68('0x34')](_0x9c68('0x35'))){_0x150d23[_0x9c68('0x1c')]=qs[_0x9c68('0x1c')](_0x49332a['query'][_0x9c68('0x1c')]);_0x150d23[_0x9c68('0x1b')]=qs[_0x9c68('0x1b')](_0x49332a[_0x9c68('0x2f')][_0x9c68('0x1b')]);}_0x150d23['order']=qs[_0x9c68('0x36')](_0x49332a[_0x9c68('0x2f')][_0x9c68('0x36')]);_0x150d23[_0x9c68('0x37')]=qs[_0x9c68('0x38')](_[_0x9c68('0x39')](_0x49332a[_0x9c68('0x2f')],_0x4823ae[_0x9c68('0x38')]),_0x32e7a6);if(_0x49332a[_0x9c68('0x2f')]['filter']){_0x150d23['where']=_[_0x9c68('0x3a')](_0x150d23[_0x9c68('0x37')],{'$or':_[_0x9c68('0x29')](_0x32e7a6,function(_0x884aa0){if(_0x884aa0[_0x9c68('0x2d')]!==_0x9c68('0x3b')){var _0x4c661f={};_0x4c661f[_0x884aa0['name']]={'$like':'%'+_0x49332a[_0x9c68('0x2f')][_0x9c68('0x3c')]+'%'};return _0x4c661f;}})});}_0x150d23=_[_0x9c68('0x3a')]({},_0x150d23,_0x49332a[_0x9c68('0x3d')]);var _0x3c4000={'where':_0x150d23[_0x9c68('0x37')]};return db['ZohoAccount'][_0x9c68('0x1e')](_0x3c4000)['then'](function(_0x34f70c){_0x3f27cd[_0x9c68('0x1e')]=_0x34f70c;if(_0x49332a[_0x9c68('0x2f')][_0x9c68('0x3e')]){_0x150d23[_0x9c68('0x3f')]=[{'all':!![]}];}return db[_0x9c68('0x2a')]['findAll'](_0x150d23);})[_0x9c68('0x25')](function(_0x3ed2a8){_0x3f27cd[_0x9c68('0x40')]=_0x3ed2a8;return _0x3f27cd;})[_0x9c68('0x25')](respondWithFilteredResult(_0x2dd987,_0x150d23))[_0x9c68('0x41')](handleError(_0x2dd987,null));};exports[_0x9c68('0x42')]=function(_0x51d8c7,_0x53bc5f){var _0x4512bb={'raw':![],'where':{'id':_0x51d8c7['params']['id']}},_0x48fb4b={};_0x48fb4b[_0x9c68('0x2e')]=_[_0x9c68('0x43')](db[_0x9c68('0x2a')][_0x9c68('0x2b')]);_0x48fb4b[_0x9c68('0x2f')]=_[_0x9c68('0x43')](_0x51d8c7[_0x9c68('0x2f')]);_0x48fb4b[_0x9c68('0x38')]=_[_0x9c68('0x30')](_0x48fb4b['model'],_0x48fb4b['query']);_0x4512bb[_0x9c68('0x31')]=_['intersection'](_0x48fb4b['model'],qs[_0x9c68('0x32')](_0x51d8c7[_0x9c68('0x2f')]['fields']));_0x4512bb[_0x9c68('0x31')]=_0x4512bb[_0x9c68('0x31')][_0x9c68('0x33')]?_0x4512bb[_0x9c68('0x31')]:_0x48fb4b[_0x9c68('0x2e')];if(_0x51d8c7[_0x9c68('0x2f')][_0x9c68('0x3e')]){_0x4512bb[_0x9c68('0x3f')]=[{'all':!![]}];}_0x4512bb=_[_0x9c68('0x3a')]({},_0x4512bb,_0x51d8c7[_0x9c68('0x3d')]);return db[_0x9c68('0x2a')][_0x9c68('0x44')](_0x4512bb)[_0x9c68('0x25')](handleEntityNotFound(_0x53bc5f,null))[_0x9c68('0x25')](respondWithResult(_0x53bc5f,null))[_0x9c68('0x41')](handleError(_0x53bc5f,null));};exports[_0x9c68('0x45')]=function(_0x5c9878,_0x3e79da){return db[_0x9c68('0x2a')]['create'](_0x5c9878['body'],{})[_0x9c68('0x25')](respondWithResult(_0x3e79da,0xc9))[_0x9c68('0x41')](handleError(_0x3e79da,null));};exports[_0x9c68('0x23')]=function(_0x5aa9b3,_0x208a72){if(_0x5aa9b3[_0x9c68('0x46')]['id']){delete _0x5aa9b3[_0x9c68('0x46')]['id'];}return db[_0x9c68('0x2a')]['find']({'where':{'id':_0x5aa9b3[_0x9c68('0x47')]['id']}})[_0x9c68('0x25')](handleEntityNotFound(_0x208a72,null))[_0x9c68('0x25')](saveUpdates(_0x5aa9b3[_0x9c68('0x46')],null))[_0x9c68('0x25')](respondWithResult(_0x208a72,null))['catch'](handleError(_0x208a72,null));};exports[_0x9c68('0x24')]=function(_0x290e6d,_0xf3c194){return db['ZohoAccount'][_0x9c68('0x44')]({'where':{'id':_0x290e6d['params']['id']}})['then'](handleEntityNotFound(_0xf3c194,null))[_0x9c68('0x25')](removeEntity(_0xf3c194,null))[_0x9c68('0x41')](handleError(_0xf3c194,null));};exports[_0x9c68('0x48')]=function(_0x923571,_0x4a688c,_0x356bc6){var _0x337c3b={};var _0x415d74={};var _0x2d3b77;var _0x1c482f;return db[_0x9c68('0x2a')][_0x9c68('0x49')]({'where':{'id':_0x923571[_0x9c68('0x47')]['id']}})['then'](handleEntityNotFound(_0x4a688c,null))['then'](function(_0x5c6bb8){if(_0x5c6bb8){_0x2d3b77=_0x5c6bb8;_0x415d74[_0x9c68('0x2e')]=_[_0x9c68('0x43')](db[_0x9c68('0x4a')][_0x9c68('0x2b')]);_0x415d74['query']=_[_0x9c68('0x43')](_0x923571[_0x9c68('0x2f')]);_0x415d74['filters']=_['intersection'](_0x415d74[_0x9c68('0x2e')],_0x415d74[_0x9c68('0x2f')]);_0x337c3b[_0x9c68('0x31')]=_[_0x9c68('0x30')](_0x415d74[_0x9c68('0x2e')],qs[_0x9c68('0x32')](_0x923571[_0x9c68('0x2f')]['fields']));_0x337c3b['attributes']=_0x337c3b[_0x9c68('0x31')][_0x9c68('0x33')]?_0x337c3b[_0x9c68('0x31')]:_0x415d74[_0x9c68('0x2e')];_0x337c3b['order']=qs['sort'](_0x923571['query']['sort']);_0x337c3b[_0x9c68('0x37')]=qs['filters'](_[_0x9c68('0x39')](_0x923571[_0x9c68('0x2f')],_0x415d74[_0x9c68('0x38')]));if(_0x923571['query']['filter']){_0x337c3b['where']=_[_0x9c68('0x3a')](_0x337c3b[_0x9c68('0x37')],{'$or':_[_0x9c68('0x29')](_0x337c3b['attributes'],function(_0xc6f054){var _0xad997c={};_0xad997c[_0xc6f054]={'$like':'%'+_0x923571[_0x9c68('0x2f')][_0x9c68('0x3c')]+'%'};return _0xad997c;})});}_0x337c3b=_['merge']({},_0x337c3b,_0x923571[_0x9c68('0x3d')]);return _0x2d3b77[_0x9c68('0x48')](_0x337c3b);}})[_0x9c68('0x25')](function(_0x34128e){if(_0x34128e){_0x1c482f=_0x34128e[_0x9c68('0x33')];if(!_0x923571['query'][_0x9c68('0x34')](_0x9c68('0x35'))){_0x337c3b[_0x9c68('0x1c')]=qs['limit'](_0x923571[_0x9c68('0x2f')][_0x9c68('0x1c')]);_0x337c3b[_0x9c68('0x1b')]=qs[_0x9c68('0x1b')](_0x923571['query'][_0x9c68('0x1b')]);}return _0x2d3b77[_0x9c68('0x48')](_0x337c3b);}})[_0x9c68('0x25')](function(_0xeba0dc){if(_0xeba0dc){return _0xeba0dc?{'count':_0x1c482f,'rows':_0xeba0dc}:null;}})['then'](respondWithResult(_0x4a688c,null))[_0x9c68('0x41')](handleError(_0x4a688c,null));};exports[_0x9c68('0x4b')]=function(_0x32dd1a,_0x240b5b,_0x507337){if(_0x32dd1a[_0x9c68('0x46')]['id']){delete _0x32dd1a[_0x9c68('0x46')]['id'];}return db['ZohoAccount'][_0x9c68('0x49')]({'where':{'id':_0x32dd1a[_0x9c68('0x47')]['id']}})['then'](handleEntityNotFound(_0x240b5b,null))[_0x9c68('0x25')](function(_0x5ef53d){if(_0x5ef53d){_0x32dd1a[_0x9c68('0x46')][_0x9c68('0x4c')]=_0x5ef53d['id'];_0x32dd1a[_0x9c68('0x46')][_0x9c68('0x4d')]=integrations[_0x9c68('0x4e')](_0x32dd1a[_0x9c68('0x46')][_0x9c68('0x4f')],_0x32dd1a[_0x9c68('0x46')][_0x9c68('0x2d')]);_0x32dd1a['body'][_0x9c68('0x50')]=integrations[_0x9c68('0x51')](_0x32dd1a['body'][_0x9c68('0x4f')],_0x32dd1a[_0x9c68('0x46')][_0x9c68('0x2d')]);return db[_0x9c68('0x4a')][_0x9c68('0x45')](_0x32dd1a[_0x9c68('0x46')],{'include':[{'model':db[_0x9c68('0x52')],'as':_0x9c68('0x4d')},{'model':db[_0x9c68('0x52')],'as':_0x9c68('0x50')}]});}return null;})[_0x9c68('0x25')](respondWithResult(_0x240b5b,null))[_0x9c68('0x41')](handleError(_0x240b5b,null));};function getAccessToken(_0x4cf25c){return new Promise(function(_0x5e49a9,_0x1f441a){var _0x5228d8;switch(_0x4cf25c['zone']){case'US':_0x5228d8=_0x9c68('0x53');break;case'AU':_0x5228d8='https://accounts.zoho.com.au';break;case'EU':_0x5228d8=_0x9c68('0x54');break;case'IN':_0x5228d8=_0x9c68('0x55');break;case'CN':_0x5228d8=_0x9c68('0x56');break;default:_0x5228d8=_0x9c68('0x54');break;}var _0x8f0480={'method':_0x9c68('0x57'),'uri':_0x5228d8+_0x9c68('0x58'),'qs':{'refresh_token':_0x4cf25c['refreshToken'],'client_id':_0x4cf25c[_0x9c68('0x59')],'client_secret':_0x4cf25c['clientSecret'],'grant_type':_0x9c68('0x5a')},'json':!![]};return rp(_0x8f0480)['then'](function(_0x5ead38){if(_0x5ead38['access_token']){_0x5e49a9(_0x5ead38[_0x9c68('0x5b')]);}else{_0x1f441a('Unable\x20to\x20retrieve\x20the\x20access\x20token');}})[_0x9c68('0x41')](function(_0x540c10){_0x1f441a(_0x540c10);});});}exports[_0x9c68('0x5c')]=function(_0x160a96,_0x776db4,_0x4afed2){var _0x275740,_0x516f4a,_0x2d7191,_0x7be7a6,_0x12ea39;return db[_0x9c68('0x2a')][_0x9c68('0x49')]({'where':{'id':_0x160a96[_0x9c68('0x47')]['id']},'attributes':['id',_0x9c68('0x5d'),_0x9c68('0x5e'),'clientId','clientSecret',_0x9c68('0x5f'),'code',_0x9c68('0x60')]})[_0x9c68('0x25')](handleEntityNotFound(_0x776db4,null))[_0x9c68('0x25')](function(_0x5c61dd){_0x12ea39=_0x5c61dd;_0x275740=_0x12ea39[_0x9c68('0x5d')];_0x516f4a=_0x275740===_0x9c68('0x61')?'eu':_0x9c68('0x62');_0x2d7191=_0x12ea39[_0x9c68('0x5f')];var _0x4c266e=_0x2d7191[_0x9c68('0x63')](-0x1);if(_0x4c266e==='/'||_0x4c266e==='\x5c'||_0x4c266e===':'){_0x2d7191=_0x2d7191['substring'](0x0,_0x2d7191[_0x9c68('0x64')](_0x4c266e));}if(!_0x12ea39[_0x9c68('0x60')]){throw new Error(_0x9c68('0x65'));}return getAccessToken(_0x12ea39);})[_0x9c68('0x25')](function(_0x20465a){if(_0x20465a){return rp({'method':_0x9c68('0x66'),'uri':util[_0x9c68('0x67')](_0x9c68('0x68'),_0x516f4a),'qs':{'module':_0x9c68('0x69')},'headers':{'Authorization':_0x9c68('0x6a')+_0x20465a},'json':!![]});}})['then'](function(_0x4af482){if(_0x4af482){if(_0x4af482[_0x9c68('0x6b')]&&_0x4af482[_0x9c68('0x6b')][_0x9c68('0x27')]){throw new Error(_0x4af482[_0x9c68('0x6b')][_0x9c68('0x27')]['message']);}var _0x27a4b0=[];var _0x38af77=[];var _0x1b05a8=[_0x9c68('0x6c'),_0x9c68('0x6d'),_0x9c68('0x6e'),_0x9c68('0x6f'),'Call_Duration',_0x9c68('0x70'),'Call_Start_Time',_0x9c68('0x71')];_0x38af77=_[_0x9c68('0x72')](_0x4af482[_0x9c68('0x32')],function(_0x1085e2){return _0x1b05a8[_0x9c68('0x73')](_0x1085e2['api_name']);});for(var _0x50996d=0x0;_0x50996d<_0x38af77[_0x9c68('0x33')];_0x50996d++){if(_0x38af77[_0x50996d][_0x9c68('0x74')]===![]){_0x27a4b0[_0x9c68('0x75')]({'id':_0x38af77[_0x50996d]['id'],'name':_0x38af77[_0x50996d]['display_label'],'custom':_0x38af77[_0x50996d][_0x9c68('0x76')],'options':_0x38af77[_0x50996d]['data_type']===_0x9c68('0x77')&&_0x38af77[_0x50996d][_0x9c68('0x78')][_0x9c68('0x33')]>-0x1?_[_0x9c68('0x29')](_0x38af77[_0x50996d][_0x9c68('0x78')],function(_0x3c5f7e){return{'name':_0x3c5f7e,'value':_0x3c5f7e};}):[]});}}return{'count':_0x27a4b0[_0x9c68('0x33')],'rows':_0x27a4b0};}else{return{'count':0x0,'rows':[]};}})[_0x9c68('0x25')](respondWithResult(_0x776db4,null))[_0x9c68('0x41')](function(_0x2e711a){var _0x51b2b0=_0x160a96[_0x9c68('0x2f')][_0x9c68('0x79')]?0x1f4:_0x2e711a[_0x9c68('0x7a')]||0x1f4;logger[_0x9c68('0x27')](_0x9c68('0x7b'),_0x9c68('0x5c'),_0x51b2b0,JSON[_0x9c68('0x7c')](_0x2e711a));delete _0x2e711a['name'];if(_0x51b2b0===0x191){_0x51b2b0=0x190;}_0x776db4[_0x9c68('0x18')](_0x51b2b0)[_0x9c68('0x7d')](_0x160a96['query'][_0x9c68('0x79')]?{'message':_0x9c68('0x7e'),'statusCode':_0x2e711a[_0x9c68('0x7a')]}:_0x2e711a);});};
\ No newline at end of file
index c708fba..6451201 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca83=['define','changed','serverUrl','clientId','clientSecret','code','slice','substring','lastIndexOf','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','authorization_code','then','parse','refreshToken','info','format','name','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','catch','host','https://accounts.zoho.eu','application/x-www-form-urlencoded','refresh_token','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZohoAccount.attributes','../../components/integrations/configuration','exports'];(function(_0x23777f,_0x422a0c){var _0x5174f=function(_0x1d0984){while(--_0x1d0984){_0x23777f['push'](_0x23777f['shift']());}};_0x5174f(++_0x422a0c);}(_0xca83,0x17f));var _0x3ca8=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0xca83[_0x8c43de];return _0xa6591b;};'use strict';var _=require(_0x3ca8('0x0'));var util=require(_0x3ca8('0x1'));var logger=require(_0x3ca8('0x2'))(_0x3ca8('0x3'));var moment=require(_0x3ca8('0x4'));var BPromise=require(_0x3ca8('0x5'));var rp=require(_0x3ca8('0x6'));var fs=require('fs');var path=require(_0x3ca8('0x7'));var rimraf=require(_0x3ca8('0x8'));var config=require(_0x3ca8('0x9'));var attributes=require(_0x3ca8('0xa'));var integrations=require(_0x3ca8('0xb'));module[_0x3ca8('0xc')]=function(_0x351a13,_0x4c6e5a){return _0x351a13[_0x3ca8('0xd')]('ZohoAccount',attributes,{'tableName':'int_zoho_accounts','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x1e6255,_0x22219a,_0x156af3){if(_0x1e6255['changed']('zone')||_0x1e6255[_0x3ca8('0xe')](_0x3ca8('0xf'))||_0x1e6255['changed'](_0x3ca8('0x10'))||_0x1e6255['changed'](_0x3ca8('0x11'))||_0x1e6255['changed'](_0x3ca8('0x12'))||_0x1e6255['changed']('host')){var _0x4e57da,_0x4ba651;_0x4e57da=_0x1e6255[_0x3ca8('0xf')];var _0x30a619=_0x4e57da[_0x3ca8('0x13')](-0x1);if(_0x30a619==='/'||_0x30a619==='\x5c'||_0x30a619===':'){_0x4e57da=_0x4e57da[_0x3ca8('0x14')](0x0,_0x4e57da[_0x3ca8('0x15')](_0x30a619));}switch(_0x1e6255[_0x3ca8('0x16')]){case'US':_0x4ba651=_0x3ca8('0x17');break;case'AU':_0x4ba651=_0x3ca8('0x18');break;case'IN':_0x4ba651=_0x3ca8('0x19');break;case'CN':_0x4ba651=_0x3ca8('0x1a');break;default:_0x4ba651='https://accounts.zoho.eu';break;}var _0x754851={'method':_0x3ca8('0x1b'),'uri':_0x4ba651+'/oauth/v2/token','form':{'grant_type':_0x3ca8('0x1c'),'client_id':_0x1e6255[_0x3ca8('0x10')],'client_secret':_0x1e6255[_0x3ca8('0x11')],'redirect_uri':_0x1e6255[_0x3ca8('0xf')],'code':_0x1e6255[_0x3ca8('0x12')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x754851)[_0x3ca8('0x1d')](function(_0x1824da){var _0xe2ff93=JSON[_0x3ca8('0x1e')](_0x1824da);if(_0xe2ff93['refresh_token']){_0x1e6255[_0x3ca8('0x1f')]=_0xe2ff93['refresh_token'];logger[_0x3ca8('0x20')](util[_0x3ca8('0x21')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x1e6255[_0x3ca8('0x22')],_0x1e6255['id']));}else{logger[_0x3ca8('0x23')](util['format'](_0x3ca8('0x24'),_0x1e6255[_0x3ca8('0x22')],_0x1e6255['id']),util[_0x3ca8('0x25')](_0xe2ff93,{'showHidden':![],'depth':null}));}return _0x156af3(null,_0x22219a);})[_0x3ca8('0x26')](function(_0x3ddf5a){logger['error'](util[_0x3ca8('0x21')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x1e6255[_0x3ca8('0x22')],_0x1e6255['id']),util[_0x3ca8('0x25')](parsedResult,{'showHidden':![],'depth':null}));return _0x156af3(_0x3ddf5a);});}else{return _0x156af3(null,_0x22219a);}},'beforeUpdate':function(_0x37dd4c,_0x16de2d,_0x208268){if(_0x37dd4c[_0x3ca8('0xe')](_0x3ca8('0x16'))||_0x37dd4c[_0x3ca8('0xe')](_0x3ca8('0xf'))||_0x37dd4c['changed'](_0x3ca8('0x10'))||_0x37dd4c[_0x3ca8('0xe')](_0x3ca8('0x11'))||_0x37dd4c['changed'](_0x3ca8('0x12'))||_0x37dd4c[_0x3ca8('0xe')](_0x3ca8('0x27'))){var _0x47dab8,_0x726823;_0x47dab8=_0x37dd4c[_0x3ca8('0xf')];var _0xac6c6e=_0x47dab8['slice'](-0x1);if(_0xac6c6e==='/'||_0xac6c6e==='\x5c'||_0xac6c6e===':'){_0x47dab8=_0x47dab8[_0x3ca8('0x14')](0x0,_0x47dab8['lastIndexOf'](_0xac6c6e));}switch(_0x37dd4c['zone']){case'US':_0x726823=_0x3ca8('0x17');break;case'AU':_0x726823=_0x3ca8('0x18');break;case'IN':_0x726823='https://accounts.zoho.in';break;case'CN':_0x726823=_0x3ca8('0x1a');break;default:_0x726823=_0x3ca8('0x28');break;}var _0x4c9c57={'method':'POST','uri':_0x726823+'/oauth/v2/token','form':{'grant_type':_0x3ca8('0x1c'),'client_id':_0x37dd4c[_0x3ca8('0x10')],'client_secret':_0x37dd4c[_0x3ca8('0x11')],'redirect_uri':_0x37dd4c['serverUrl'],'code':_0x37dd4c['code']},'headers':{'Content-Type':_0x3ca8('0x29')}};return rp(_0x4c9c57)[_0x3ca8('0x1d')](function(_0x58eb5d){var _0x153d27=JSON[_0x3ca8('0x1e')](_0x58eb5d);if(_0x153d27[_0x3ca8('0x2a')]){_0x37dd4c['refreshToken']=_0x153d27['refresh_token'];logger[_0x3ca8('0x20')](util[_0x3ca8('0x21')](_0x3ca8('0x2b'),_0x37dd4c[_0x3ca8('0x22')],_0x37dd4c['id']));}else{logger[_0x3ca8('0x23')](util['format'](_0x3ca8('0x24'),_0x37dd4c[_0x3ca8('0x22')],_0x37dd4c['id']),util['inspect'](_0x153d27,{'showHidden':![],'depth':null}));}return _0x208268(null,_0x16de2d);})['catch'](function(_0x516f52){logger['error'](util['format'](_0x3ca8('0x24'),_0x37dd4c[_0x3ca8('0x22')],_0x37dd4c['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x208268(_0x516f52);});}else{return _0x208268(null,_0x16de2d);}}}});};
\ No newline at end of file
+var _0x85e6=['ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','lodash','util','api','moment','request-promise','path','rimraf','./intZohoAccount.attributes','exports','ZohoAccount','int_zoho_accounts','zone','serverUrl','clientId','changed','clientSecret','code','host','slice','substring','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','authorization_code','application/x-www-form-urlencoded','refresh_token','refreshToken','info','format','name','error','catch','inspect','https://accounts.zoho.com.au','/oauth/v2/token','then','parse','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d'];(function(_0x5192de,_0x4e91cd){var _0x4e287e=function(_0x3639bc){while(--_0x3639bc){_0x5192de['push'](_0x5192de['shift']());}};_0x4e287e(++_0x4e91cd);}(_0x85e6,0x1a5));var _0x685e=function(_0x8a2d76,_0x519b02){_0x8a2d76=_0x8a2d76-0x0;var _0xe71214=_0x85e6[_0x8a2d76];return _0xe71214;};'use strict';var _=require(_0x685e('0x0'));var util=require(_0x685e('0x1'));var logger=require('../../config/logger')(_0x685e('0x2'));var moment=require(_0x685e('0x3'));var BPromise=require('bluebird');var rp=require(_0x685e('0x4'));var fs=require('fs');var path=require(_0x685e('0x5'));var rimraf=require(_0x685e('0x6'));var config=require('../../config/environment');var attributes=require(_0x685e('0x7'));var integrations=require('../../components/integrations/configuration');module[_0x685e('0x8')]=function(_0x41f13f,_0x3cde2c){return _0x41f13f['define'](_0x685e('0x9'),attributes,{'tableName':_0x685e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x3a3035,_0x41b38f,_0x3804ae){if(_0x3a3035['changed'](_0x685e('0xb'))||_0x3a3035['changed'](_0x685e('0xc'))||_0x3a3035['changed'](_0x685e('0xd'))||_0x3a3035[_0x685e('0xe')](_0x685e('0xf'))||_0x3a3035[_0x685e('0xe')](_0x685e('0x10'))||_0x3a3035[_0x685e('0xe')](_0x685e('0x11'))){var _0x2d28ca,_0x11401c;_0x2d28ca=_0x3a3035[_0x685e('0xc')];var _0x42fca4=_0x2d28ca[_0x685e('0x12')](-0x1);if(_0x42fca4==='/'||_0x42fca4==='\x5c'||_0x42fca4===':'){_0x2d28ca=_0x2d28ca[_0x685e('0x13')](0x0,_0x2d28ca[_0x685e('0x14')](_0x42fca4));}switch(_0x3a3035[_0x685e('0xb')]){case'US':_0x11401c=_0x685e('0x15');break;case'AU':_0x11401c='https://accounts.zoho.com.au';break;case'IN':_0x11401c=_0x685e('0x16');break;case'CN':_0x11401c=_0x685e('0x17');break;default:_0x11401c=_0x685e('0x18');break;}var _0x3e2a13={'method':_0x685e('0x19'),'uri':_0x11401c+'/oauth/v2/token','form':{'grant_type':_0x685e('0x1a'),'client_id':_0x3a3035[_0x685e('0xd')],'client_secret':_0x3a3035[_0x685e('0xf')],'redirect_uri':_0x3a3035[_0x685e('0xc')],'code':_0x3a3035[_0x685e('0x10')]},'headers':{'Content-Type':_0x685e('0x1b')}};return rp(_0x3e2a13)['then'](function(_0x762e43){var _0x5cfd87=JSON['parse'](_0x762e43);if(_0x5cfd87[_0x685e('0x1c')]){_0x3a3035[_0x685e('0x1d')]=_0x5cfd87[_0x685e('0x1c')];logger[_0x685e('0x1e')](util[_0x685e('0x1f')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x3a3035[_0x685e('0x20')],_0x3a3035['id']));}else{logger[_0x685e('0x21')](util[_0x685e('0x1f')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x3a3035[_0x685e('0x20')],_0x3a3035['id']),util['inspect'](_0x5cfd87,{'showHidden':![],'depth':null}));}return _0x3804ae(null,_0x41b38f);})[_0x685e('0x22')](function(_0x4de4fe){logger[_0x685e('0x21')](util[_0x685e('0x1f')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x3a3035[_0x685e('0x20')],_0x3a3035['id']),util[_0x685e('0x23')](parsedResult,{'showHidden':![],'depth':null}));return _0x3804ae(_0x4de4fe);});}else{return _0x3804ae(null,_0x41b38f);}},'beforeUpdate':function(_0x3f55a6,_0x2dff6d,_0x486ad2){if(_0x3f55a6[_0x685e('0xe')](_0x685e('0xb'))||_0x3f55a6[_0x685e('0xe')](_0x685e('0xc'))||_0x3f55a6[_0x685e('0xe')](_0x685e('0xd'))||_0x3f55a6[_0x685e('0xe')](_0x685e('0xf'))||_0x3f55a6['changed']('code')||_0x3f55a6[_0x685e('0xe')](_0x685e('0x11'))){var _0x8b1125,_0xd9835d;_0x8b1125=_0x3f55a6['serverUrl'];var _0x11c271=_0x8b1125[_0x685e('0x12')](-0x1);if(_0x11c271==='/'||_0x11c271==='\x5c'||_0x11c271===':'){_0x8b1125=_0x8b1125[_0x685e('0x13')](0x0,_0x8b1125['lastIndexOf'](_0x11c271));}switch(_0x3f55a6[_0x685e('0xb')]){case'US':_0xd9835d=_0x685e('0x15');break;case'AU':_0xd9835d=_0x685e('0x24');break;case'IN':_0xd9835d=_0x685e('0x16');break;case'CN':_0xd9835d='https://accounts.zoho.com.cn';break;default:_0xd9835d=_0x685e('0x18');break;}var _0x28f422={'method':_0x685e('0x19'),'uri':_0xd9835d+_0x685e('0x25'),'form':{'grant_type':'authorization_code','client_id':_0x3f55a6[_0x685e('0xd')],'client_secret':_0x3f55a6[_0x685e('0xf')],'redirect_uri':_0x3f55a6['serverUrl'],'code':_0x3f55a6[_0x685e('0x10')]},'headers':{'Content-Type':_0x685e('0x1b')}};return rp(_0x28f422)[_0x685e('0x26')](function(_0x54de3c){var _0x286b4a=JSON[_0x685e('0x27')](_0x54de3c);if(_0x286b4a[_0x685e('0x1c')]){_0x3f55a6[_0x685e('0x1d')]=_0x286b4a[_0x685e('0x1c')];logger['info'](util[_0x685e('0x1f')](_0x685e('0x28'),_0x3f55a6[_0x685e('0x20')],_0x3f55a6['id']));}else{logger['error'](util[_0x685e('0x1f')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x3f55a6[_0x685e('0x20')],_0x3f55a6['id']),util[_0x685e('0x23')](_0x286b4a,{'showHidden':![],'depth':null}));}return _0x486ad2(null,_0x2dff6d);})[_0x685e('0x22')](function(_0x39babc){logger[_0x685e('0x21')](util['format'](_0x685e('0x29'),_0x3f55a6[_0x685e('0x20')],_0x3f55a6['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x486ad2(_0x39babc);});}else{return _0x486ad2(null,_0x2dff6d);}}}});};
\ No newline at end of file
index 5a0dcdc..413c538 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa817=['stringify','error','code','message','catch','GetZohoAccount','ZohoAccount','findAll','options','raw','where','attributes','include','map','model','info','find','ShowZohoAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','ZohoAccount,\x20%s,\x20%s','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x4d216c,_0x363a80){var _0x36fe74=function(_0x460e09){while(--_0x460e09){_0x4d216c['push'](_0x4d216c['shift']());}};_0x36fe74(++_0x363a80);}(_0xa817,0x7b));var _0x7a81=function(_0x3bf153,_0x18c359){_0x3bf153=_0x3bf153-0x0;var _0x97976a=_0xa817[_0x3bf153];return _0x97976a;};'use strict';var _=require(_0x7a81('0x0'));var util=require(_0x7a81('0x1'));var moment=require(_0x7a81('0x2'));var BPromise=require(_0x7a81('0x3'));var rs=require(_0x7a81('0x4'));var fs=require('fs');var Redis=require(_0x7a81('0x5'));var db=require(_0x7a81('0x6'))['db'];var utils=require(_0x7a81('0x7'));var logger=require(_0x7a81('0x8'))('rpc');var config=require(_0x7a81('0x9'));var jayson=require(_0x7a81('0xa'));var client=jayson['client'][_0x7a81('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x35c35a,_0x3ab25c,_0x705d4e){return new BPromise(function(_0x1869fb,_0x18f6f6){return client['request'](_0x35c35a,_0x705d4e)[_0x7a81('0xc')](function(_0x5b3b66){logger['info'](_0x7a81('0xd'),_0x3ab25c,'request\x20sent');logger[_0x7a81('0xe')](_0x7a81('0xf'),_0x3ab25c,_0x7a81('0x10'),JSON[_0x7a81('0x11')](_0x5b3b66));if(_0x5b3b66[_0x7a81('0x12')]){if(_0x5b3b66[_0x7a81('0x12')][_0x7a81('0x13')]===0x1f4){logger['error'](_0x7a81('0xd'),_0x3ab25c,_0x5b3b66[_0x7a81('0x12')][_0x7a81('0x14')]);return _0x18f6f6(_0x5b3b66['error'][_0x7a81('0x14')]);}logger[_0x7a81('0x12')](_0x7a81('0xd'),_0x3ab25c,_0x5b3b66[_0x7a81('0x12')][_0x7a81('0x14')]);return _0x1869fb(_0x5b3b66[_0x7a81('0x12')]['message']);}else{logger['info'](_0x7a81('0xd'),_0x3ab25c,_0x7a81('0x10'));_0x1869fb(_0x5b3b66['result'][_0x7a81('0x14')]);}})[_0x7a81('0x15')](function(_0x179afd){logger[_0x7a81('0x12')](_0x7a81('0xd'),_0x3ab25c,_0x179afd);_0x18f6f6(_0x179afd);});});}exports[_0x7a81('0x16')]=function(_0x114cfa){var _0x3d9a4f=this;return new Promise(function(_0x2b5720,_0x220da9){return db[_0x7a81('0x17')][_0x7a81('0x18')]({'raw':_0x114cfa[_0x7a81('0x19')]?_0x114cfa['options'][_0x7a81('0x1a')]===undefined?!![]:![]:!![],'where':_0x114cfa[_0x7a81('0x19')]?_0x114cfa[_0x7a81('0x19')][_0x7a81('0x1b')]||null:null,'attributes':_0x114cfa[_0x7a81('0x19')]?_0x114cfa[_0x7a81('0x19')][_0x7a81('0x1c')]||null:null,'limit':_0x114cfa[_0x7a81('0x19')]?_0x114cfa[_0x7a81('0x19')]['limit']||null:null,'include':_0x114cfa[_0x7a81('0x19')]?_0x114cfa[_0x7a81('0x19')][_0x7a81('0x1d')]?_[_0x7a81('0x1e')](_0x114cfa[_0x7a81('0x19')][_0x7a81('0x1d')],function(_0x249ae1){return{'model':db[_0x249ae1[_0x7a81('0x1f')]],'as':_0x249ae1['as'],'attributes':_0x249ae1['attributes'],'include':_0x249ae1[_0x7a81('0x1d')]?_['map'](_0x249ae1['include'],function(_0x1e2476){return{'model':db[_0x1e2476[_0x7a81('0x1f')]],'as':_0x1e2476['as'],'attributes':_0x1e2476[_0x7a81('0x1c')],'include':_0x1e2476['include']?_[_0x7a81('0x1e')](_0x1e2476[_0x7a81('0x1d')],function(_0x87e708){return{'model':db[_0x87e708[_0x7a81('0x1f')]],'as':_0x87e708['as'],'attributes':_0x87e708[_0x7a81('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x38de7c){logger[_0x7a81('0x20')](_0x7a81('0x16'),_0x114cfa);logger[_0x7a81('0xe')](_0x7a81('0x16'),_0x114cfa,JSON[_0x7a81('0x11')](_0x38de7c));_0x2b5720(_0x38de7c);})[_0x7a81('0x15')](function(_0x551c14){logger[_0x7a81('0x12')]('GetZohoAccount',_0x551c14[_0x7a81('0x14')],_0x114cfa);_0x220da9(_0x3d9a4f[_0x7a81('0x12')](0x1f4,_0x551c14[_0x7a81('0x14')]));});});};exports['ShowZohoAccount']=function(_0x3f7e20){var _0x4fc73a=this;return new Promise(function(_0x5e9589,_0x1441bf){return db[_0x7a81('0x17')][_0x7a81('0x21')]({'raw':_0x3f7e20[_0x7a81('0x19')]?_0x3f7e20[_0x7a81('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x3f7e20[_0x7a81('0x19')]?_0x3f7e20[_0x7a81('0x19')][_0x7a81('0x1b')]||null:null,'attributes':_0x3f7e20[_0x7a81('0x19')]?_0x3f7e20[_0x7a81('0x19')][_0x7a81('0x1c')]||null:null,'include':_0x3f7e20[_0x7a81('0x19')]?_0x3f7e20['options'][_0x7a81('0x1d')]?_[_0x7a81('0x1e')](_0x3f7e20[_0x7a81('0x19')]['include'],function(_0x3161fe){return{'model':db[_0x3161fe[_0x7a81('0x1f')]],'as':_0x3161fe['as'],'attributes':_0x3161fe[_0x7a81('0x1c')],'include':_0x3161fe[_0x7a81('0x1d')]?_['map'](_0x3161fe[_0x7a81('0x1d')],function(_0x262a0f){return{'model':db[_0x262a0f[_0x7a81('0x1f')]],'as':_0x262a0f['as'],'attributes':_0x262a0f[_0x7a81('0x1c')],'include':_0x262a0f[_0x7a81('0x1d')]?_['map'](_0x262a0f[_0x7a81('0x1d')],function(_0x200b03){return{'model':db[_0x200b03[_0x7a81('0x1f')]],'as':_0x200b03['as'],'attributes':_0x200b03[_0x7a81('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x7a81('0xc')](function(_0x41a124){logger[_0x7a81('0x20')]('ShowZohoAccount',_0x3f7e20);logger['debug'](_0x7a81('0x22'),_0x3f7e20,JSON[_0x7a81('0x11')](_0x41a124));_0x5e9589(_0x41a124);})['catch'](function(_0x11c809){logger[_0x7a81('0x12')](_0x7a81('0x22'),_0x11c809['message'],_0x3f7e20);_0x1441bf(_0x4fc73a[_0x7a81('0x12')](0x1f4,_0x11c809[_0x7a81('0x14')]));});});};
\ No newline at end of file
+var _0xacf4=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','ZohoAccount,\x20%s,\x20%s,\x20%s','error','message','result','catch','GetZohoAccount','ZohoAccount','findAll','options','raw','where','attributes','limit','include','map','model','debug','stringify','ShowZohoAccount'];(function(_0x55849a,_0x312a0f){var _0x44508f=function(_0x1df85c){while(--_0x1df85c){_0x55849a['push'](_0x55849a['shift']());}};_0x44508f(++_0x312a0f);}(_0xacf4,0xe7));var _0x4acf=function(_0x35d291,_0x1a131b){_0x35d291=_0x35d291-0x0;var _0x370b86=_0xacf4[_0x35d291];return _0x370b86;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x4acf('0x0'));var BPromise=require(_0x4acf('0x1'));var rs=require(_0x4acf('0x2'));var fs=require('fs');var Redis=require(_0x4acf('0x3'));var db=require(_0x4acf('0x4'))['db'];var utils=require(_0x4acf('0x5'));var logger=require(_0x4acf('0x6'))('rpc');var config=require(_0x4acf('0x7'));var jayson=require(_0x4acf('0x8'));var client=jayson['client'][_0x4acf('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2ba08a,_0x649ad2,_0x45a5a4){return new BPromise(function(_0x25d345,_0x50f5f4){return client['request'](_0x2ba08a,_0x45a5a4)[_0x4acf('0xa')](function(_0x59f559){logger[_0x4acf('0xb')](_0x4acf('0xc'),_0x649ad2,_0x4acf('0xd'));logger['debug'](_0x4acf('0xe'),_0x649ad2,_0x4acf('0xd'),JSON['stringify'](_0x59f559));if(_0x59f559['error']){if(_0x59f559[_0x4acf('0xf')]['code']===0x1f4){logger['error'](_0x4acf('0xc'),_0x649ad2,_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);return _0x50f5f4(_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);}logger[_0x4acf('0xf')](_0x4acf('0xc'),_0x649ad2,_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);return _0x25d345(_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);}else{logger['info'](_0x4acf('0xc'),_0x649ad2,'request\x20sent');_0x25d345(_0x59f559[_0x4acf('0x11')][_0x4acf('0x10')]);}})[_0x4acf('0x12')](function(_0x5d934a){logger['error'](_0x4acf('0xc'),_0x649ad2,_0x5d934a);_0x50f5f4(_0x5d934a);});});}exports[_0x4acf('0x13')]=function(_0x240c00){var _0x4b1d93=this;return new Promise(function(_0x2a678b,_0x137302){return db[_0x4acf('0x14')][_0x4acf('0x15')]({'raw':_0x240c00[_0x4acf('0x16')]?_0x240c00[_0x4acf('0x16')][_0x4acf('0x17')]===undefined?!![]:![]:!![],'where':_0x240c00[_0x4acf('0x16')]?_0x240c00[_0x4acf('0x16')][_0x4acf('0x18')]||null:null,'attributes':_0x240c00[_0x4acf('0x16')]?_0x240c00['options'][_0x4acf('0x19')]||null:null,'limit':_0x240c00[_0x4acf('0x16')]?_0x240c00['options'][_0x4acf('0x1a')]||null:null,'include':_0x240c00[_0x4acf('0x16')]?_0x240c00['options'][_0x4acf('0x1b')]?_[_0x4acf('0x1c')](_0x240c00[_0x4acf('0x16')][_0x4acf('0x1b')],function(_0x53885f){return{'model':db[_0x53885f[_0x4acf('0x1d')]],'as':_0x53885f['as'],'attributes':_0x53885f[_0x4acf('0x19')],'include':_0x53885f['include']?_[_0x4acf('0x1c')](_0x53885f[_0x4acf('0x1b')],function(_0x52a84a){return{'model':db[_0x52a84a[_0x4acf('0x1d')]],'as':_0x52a84a['as'],'attributes':_0x52a84a[_0x4acf('0x19')],'include':_0x52a84a[_0x4acf('0x1b')]?_[_0x4acf('0x1c')](_0x52a84a['include'],function(_0x50236d){return{'model':db[_0x50236d[_0x4acf('0x1d')]],'as':_0x50236d['as'],'attributes':_0x50236d[_0x4acf('0x19')]};}):[]};}):[]};}):[]:[]})[_0x4acf('0xa')](function(_0x42c90c){logger[_0x4acf('0xb')](_0x4acf('0x13'),_0x240c00);logger[_0x4acf('0x1e')](_0x4acf('0x13'),_0x240c00,JSON[_0x4acf('0x1f')](_0x42c90c));_0x2a678b(_0x42c90c);})[_0x4acf('0x12')](function(_0x57989e){logger[_0x4acf('0xf')](_0x4acf('0x13'),_0x57989e[_0x4acf('0x10')],_0x240c00);_0x137302(_0x4b1d93[_0x4acf('0xf')](0x1f4,_0x57989e[_0x4acf('0x10')]));});});};exports[_0x4acf('0x20')]=function(_0x27384c){var _0x5d862f=this;return new Promise(function(_0x337b3c,_0x1d221b){return db[_0x4acf('0x14')]['find']({'raw':_0x27384c[_0x4acf('0x16')]?_0x27384c[_0x4acf('0x16')][_0x4acf('0x17')]===undefined?!![]:![]:!![],'where':_0x27384c[_0x4acf('0x16')]?_0x27384c['options'][_0x4acf('0x18')]||null:null,'attributes':_0x27384c[_0x4acf('0x16')]?_0x27384c[_0x4acf('0x16')]['attributes']||null:null,'include':_0x27384c[_0x4acf('0x16')]?_0x27384c[_0x4acf('0x16')][_0x4acf('0x1b')]?_[_0x4acf('0x1c')](_0x27384c[_0x4acf('0x16')][_0x4acf('0x1b')],function(_0x490880){return{'model':db[_0x490880[_0x4acf('0x1d')]],'as':_0x490880['as'],'attributes':_0x490880[_0x4acf('0x19')],'include':_0x490880['include']?_[_0x4acf('0x1c')](_0x490880['include'],function(_0x4cd020){return{'model':db[_0x4cd020['model']],'as':_0x4cd020['as'],'attributes':_0x4cd020['attributes'],'include':_0x4cd020['include']?_['map'](_0x4cd020['include'],function(_0x3364dd){return{'model':db[_0x3364dd[_0x4acf('0x1d')]],'as':_0x3364dd['as'],'attributes':_0x3364dd['attributes']};}):[]};}):[]};}):[]:[]})[_0x4acf('0xa')](function(_0xbd0f92){logger[_0x4acf('0xb')](_0x4acf('0x20'),_0x27384c);logger[_0x4acf('0x1e')](_0x4acf('0x20'),_0x27384c,JSON[_0x4acf('0x1f')](_0xbd0f92));_0x337b3c(_0xbd0f92);})[_0x4acf('0x12')](function(_0x24465b){logger[_0x4acf('0xf')]('ShowZohoAccount',_0x24465b['message'],_0x27384c);_0x1d221b(_0x5d862f[_0x4acf('0xf')](0x1f4,_0x24465b[_0x4acf('0x10')]));});});};
\ No newline at end of file
index a95938f..d8a99a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3892=['/:id','show','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','create','put','delete','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated'];(function(_0x5633f0,_0x27197b){var _0x4b842e=function(_0x5ddc2a){while(--_0x5ddc2a){_0x5633f0['push'](_0x5633f0['shift']());}};_0x4b842e(++_0x27197b);}(_0x3892,0x87));var _0x2389=function(_0x328185,_0x53afd3){_0x328185=_0x328185-0x0;var _0x14e624=_0x3892[_0x328185];return _0x14e624;};'use strict';var multer=require(_0x2389('0x0'));var util=require(_0x2389('0x1'));var path=require(_0x2389('0x2'));var timeout=require('connect-timeout');var express=require(_0x2389('0x3'));var router=express[_0x2389('0x4')]();var fs_extra=require(_0x2389('0x5'));var auth=require(_0x2389('0x6'));var interaction=require(_0x2389('0x7'));var config=require(_0x2389('0x8'));var controller=require(_0x2389('0x9'));router[_0x2389('0xa')]('/',auth[_0x2389('0xb')](),controller['index']);router['get'](_0x2389('0xc'),auth[_0x2389('0xb')](),controller[_0x2389('0xd')]);router['get']('/:id/fields',auth[_0x2389('0xb')](),controller['getFields']);router[_0x2389('0xa')](_0x2389('0xe'),auth[_0x2389('0xb')](),controller[_0x2389('0xf')]);router['get'](_0x2389('0x10'),auth[_0x2389('0xb')](),controller[_0x2389('0x11')]);router['post']('/',auth['isAuthenticated'](),controller[_0x2389('0x12')]);router[_0x2389('0x13')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x2389('0x14')](_0x2389('0xc'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x6618=['getDescriptions','post','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','show','isAuthenticated','getFields','/:id/subjects','/:id/descriptions'];(function(_0x2d66a8,_0x1625a2){var _0x374b6e=function(_0x35ec72){while(--_0x35ec72){_0x2d66a8['push'](_0x2d66a8['shift']());}};_0x374b6e(++_0x1625a2);}(_0x6618,0x96));var _0x8661=function(_0x58df59,_0x5a0824){_0x58df59=_0x58df59-0x0;var _0x3888fe=_0x6618[_0x58df59];return _0x3888fe;};'use strict';var multer=require(_0x8661('0x0'));var util=require(_0x8661('0x1'));var path=require(_0x8661('0x2'));var timeout=require(_0x8661('0x3'));var express=require(_0x8661('0x4'));var router=express[_0x8661('0x5')]();var fs_extra=require(_0x8661('0x6'));var auth=require(_0x8661('0x7'));var interaction=require(_0x8661('0x8'));var config=require(_0x8661('0x9'));var controller=require('./intZohoConfiguration.controller');router[_0x8661('0xa')]('/',auth['isAuthenticated'](),controller[_0x8661('0xb')]);router['get'](_0x8661('0xc'),auth['isAuthenticated'](),controller[_0x8661('0xd')]);router[_0x8661('0xa')]('/:id/fields',auth[_0x8661('0xe')](),controller[_0x8661('0xf')]);router[_0x8661('0xa')](_0x8661('0x10'),auth[_0x8661('0xe')](),controller['getSubjects']);router['get'](_0x8661('0x11'),auth[_0x8661('0xe')](),controller[_0x8661('0x12')]);router[_0x8661('0x13')]('/',auth[_0x8661('0xe')](),controller['create']);router['put'](_0x8661('0xc'),auth[_0x8661('0xe')](),controller[_0x8661('0x14')]);router[_0x8661('0x15')](_0x8661('0xc'),auth[_0x8661('0xe')](),controller[_0x8661('0x16')]);module[_0x8661('0x17')]=router;
\ No newline at end of file
index d700989..304d128 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3565=['contact','contact_lead','exports','STRING','ENUM','lead'];(function(_0x3e5bc8,_0x457d89){var _0xfd84bc=function(_0x1a766c){while(--_0x1a766c){_0x3e5bc8['push'](_0x3e5bc8['shift']());}};_0xfd84bc(++_0x457d89);}(_0x3565,0x158));var _0x5356=function(_0x247b95,_0x4313c8){_0x247b95=_0x247b95-0x0;var _0x442387=_0x3565[_0x247b95];return _0x442387;};'use strict';var Sequelize=require('sequelize');module[_0x5356('0x0')]={'name':{'type':Sequelize[_0x5356('0x1')]},'moduleCreate':{'type':Sequelize[_0x5356('0x2')](_0x5356('0x3'),_0x5356('0x4'),'nothing'),'defaultValue':_0x5356('0x3')},'moduleSearch':{'type':Sequelize[_0x5356('0x2')]('contact_lead',_0x5356('0x4'),_0x5356('0x3')),'defaultValue':_0x5356('0x5')},'description':{'type':Sequelize[_0x5356('0x1')]}};
\ No newline at end of file
+var _0x9aee=['contact_lead','sequelize','exports','STRING','ENUM','lead','contact','nothing'];(function(_0x5bcb92,_0x40de87){var _0x9a3e07=function(_0x2af088){while(--_0x2af088){_0x5bcb92['push'](_0x5bcb92['shift']());}};_0x9a3e07(++_0x40de87);}(_0x9aee,0x71));var _0xe9ae=function(_0x1b43e3,_0x9f8fed){_0x1b43e3=_0x1b43e3-0x0;var _0xbfcd48=_0x9aee[_0x1b43e3];return _0xbfcd48;};'use strict';var Sequelize=require(_0xe9ae('0x0'));module[_0xe9ae('0x1')]={'name':{'type':Sequelize[_0xe9ae('0x2')]},'moduleCreate':{'type':Sequelize[_0xe9ae('0x3')](_0xe9ae('0x4'),_0xe9ae('0x5'),_0xe9ae('0x6')),'defaultValue':_0xe9ae('0x4')},'moduleSearch':{'type':Sequelize[_0xe9ae('0x3')]('contact_lead','contact','lead'),'defaultValue':_0xe9ae('0x7')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index e24afef..41b3ab1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25a8=['fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','VIRTUAL','options','include','findAll','rows','includeAll','find','catch','create','body','params','getFields','findOne','ZohoField','getSubjects','pick','getDescriptions','eml-format','zip-dir','fast-json-patch','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','undefined','count','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','ZohoConfiguration','rawAttributes'];(function(_0x1ee0a1,_0x51058e){var _0x1d2d5b=function(_0x35cfb5){while(--_0x35cfb5){_0x1ee0a1['push'](_0x1ee0a1['shift']());}};_0x1d2d5b(++_0x51058e);}(_0x25a8,0x76));var _0x825a=function(_0x2bb5d4,_0x6a781d){_0x2bb5d4=_0x2bb5d4-0x0;var _0x37da87=_0x25a8[_0x2bb5d4];return _0x37da87;};'use strict';var emlformat=require(_0x825a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x825a('0x1'));var jsonpatch=require(_0x825a('0x2'));var rp=require('request-promise');var moment=require(_0x825a('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x825a('0x4'));var util=require('util');var path=require(_0x825a('0x5'));var sox=require(_0x825a('0x6'));var csv=require(_0x825a('0x7'));var ejs=require(_0x825a('0x8'));var fs=require('fs');var fs_extra=require(_0x825a('0x9'));var _=require(_0x825a('0xa'));var squel=require(_0x825a('0xb'));var crypto=require(_0x825a('0xc'));var jsforce=require(_0x825a('0xd'));var deskjs=require(_0x825a('0xe'));var toCsv=require(_0x825a('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x825a('0xf'));var authService=require(_0x825a('0x10'));var qs=require(_0x825a('0x11'));var as=require(_0x825a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x825a('0x13'))(_0x825a('0x14'));var utils=require(_0x825a('0x15'));var config=require(_0x825a('0x16'));var licenseUtil=require(_0x825a('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x51d141,_0x3611ca){_0x3611ca=_0x3611ca||0xcc;return function(_0x230693){if(_0x230693){return _0x51d141['sendStatus'](_0x3611ca);}return _0x51d141[_0x825a('0x18')](_0x3611ca)['end']();};}function respondWithResult(_0x4625c6,_0x2cda2b){_0x2cda2b=_0x2cda2b||0xc8;return function(_0x1d8fbc){if(_0x1d8fbc){return _0x4625c6[_0x825a('0x18')](_0x2cda2b)['json'](_0x1d8fbc);}};}function respondWithFilteredResult(_0x41a018,_0x1f7342){return function(_0x17e81e){if(_0x17e81e){var _0x5d2606=typeof _0x1f7342['offset']==='undefined'&&typeof _0x1f7342['limit']===_0x825a('0x19');var _0x54967d=_0x17e81e[_0x825a('0x1a')];var _0x50d923=_0x5d2606?0x0:_0x1f7342['offset'];var _0x482aa4=_0x5d2606?_0x17e81e[_0x825a('0x1a')]:_0x1f7342[_0x825a('0x1b')]+_0x1f7342['limit'];var _0x3f5ac1;if(_0x482aa4>=_0x54967d){_0x482aa4=_0x54967d;_0x3f5ac1=0xc8;}else{_0x3f5ac1=0xce;}_0x41a018[_0x825a('0x18')](_0x3f5ac1);return _0x41a018[_0x825a('0x1c')](_0x825a('0x1d'),_0x50d923+'-'+_0x482aa4+'/'+_0x54967d)[_0x825a('0x1e')](_0x17e81e);}return null;};}function patchUpdates(_0x3d94a3){return function(_0x51c58b){try{jsonpatch[_0x825a('0x1f')](_0x51c58b,_0x3d94a3,!![]);}catch(_0x32b50f){return BPromise[_0x825a('0x20')](_0x32b50f);}return _0x51c58b[_0x825a('0x21')]();};}function saveUpdates(_0x118096,_0x3a1ad1){return function(_0x92736e){if(_0x92736e){return _0x92736e[_0x825a('0x22')](_0x118096)[_0x825a('0x23')](function(_0x2d0c16){return _0x2d0c16;});}return null;};}function removeEntity(_0x49a661,_0x39f4e4){return function(_0x1a274e){if(_0x1a274e){return _0x1a274e[_0x825a('0x24')]()[_0x825a('0x23')](function(){_0x49a661[_0x825a('0x18')](0xcc)[_0x825a('0x25')]();});}};}function handleEntityNotFound(_0x1dc4f2,_0x23cd64){return function(_0x10ee0f){if(!_0x10ee0f){_0x1dc4f2['sendStatus'](0x194);}return _0x10ee0f;};}function handleError(_0x2fdf45,_0x2fb6ef){_0x2fb6ef=_0x2fb6ef||0x1f4;return function(_0x48f7ef){logger[_0x825a('0x26')](_0x48f7ef[_0x825a('0x27')]);if(_0x48f7ef[_0x825a('0x28')]){delete _0x48f7ef[_0x825a('0x28')];}_0x2fdf45['status'](_0x2fb6ef)[_0x825a('0x29')](_0x48f7ef);};}exports[_0x825a('0x2a')]=function(_0xe2bd85,_0x5ab4c1){var _0x319e0d={},_0x1509a9={},_0x4fb639={'count':0x0,'rows':[]};var _0x40c70b=_[_0x825a('0x2b')](db[_0x825a('0x2c')][_0x825a('0x2d')],function(_0x4ce4c1){return{'name':_0x4ce4c1[_0x825a('0x2e')],'type':_0x4ce4c1[_0x825a('0x2f')][_0x825a('0x30')]};});_0x1509a9['model']=_[_0x825a('0x2b')](_0x40c70b,_0x825a('0x28'));_0x1509a9[_0x825a('0x31')]=_[_0x825a('0x32')](_0xe2bd85[_0x825a('0x31')]);_0x1509a9[_0x825a('0x33')]=_['intersection'](_0x1509a9[_0x825a('0x34')],_0x1509a9[_0x825a('0x31')]);_0x319e0d[_0x825a('0x35')]=_[_0x825a('0x36')](_0x1509a9[_0x825a('0x34')],qs[_0x825a('0x37')](_0xe2bd85['query'][_0x825a('0x37')]));_0x319e0d[_0x825a('0x35')]=_0x319e0d[_0x825a('0x35')][_0x825a('0x38')]?_0x319e0d[_0x825a('0x35')]:_0x1509a9[_0x825a('0x34')];if(!_0xe2bd85['query'][_0x825a('0x39')](_0x825a('0x3a'))){_0x319e0d[_0x825a('0x3b')]=qs[_0x825a('0x3b')](_0xe2bd85[_0x825a('0x31')][_0x825a('0x3b')]);_0x319e0d['offset']=qs[_0x825a('0x1b')](_0xe2bd85[_0x825a('0x31')][_0x825a('0x1b')]);}_0x319e0d[_0x825a('0x3c')]=qs['sort'](_0xe2bd85[_0x825a('0x31')][_0x825a('0x3d')]);_0x319e0d[_0x825a('0x3e')]=qs[_0x825a('0x33')](_['pick'](_0xe2bd85['query'],_0x1509a9['filters']),_0x40c70b);if(_0xe2bd85['query'][_0x825a('0x3f')]){_0x319e0d[_0x825a('0x3e')]=_[_0x825a('0x40')](_0x319e0d['where'],{'$or':_[_0x825a('0x2b')](_0x40c70b,function(_0x239cf8){if(_0x239cf8['type']!==_0x825a('0x41')){var _0x38a3ce={};_0x38a3ce[_0x239cf8[_0x825a('0x28')]]={'$like':'%'+_0xe2bd85[_0x825a('0x31')][_0x825a('0x3f')]+'%'};return _0x38a3ce;}})});}_0x319e0d=_[_0x825a('0x40')]({},_0x319e0d,_0xe2bd85[_0x825a('0x42')]);var _0x32347c={'where':_0x319e0d[_0x825a('0x3e')]};return db['ZohoConfiguration'][_0x825a('0x1a')](_0x32347c)[_0x825a('0x23')](function(_0x4d5618){_0x4fb639[_0x825a('0x1a')]=_0x4d5618;if(_0xe2bd85[_0x825a('0x31')]['includeAll']){_0x319e0d[_0x825a('0x43')]=[{'all':!![]}];}return db[_0x825a('0x2c')][_0x825a('0x44')](_0x319e0d);})[_0x825a('0x23')](function(_0x5da7e9){_0x4fb639[_0x825a('0x45')]=_0x5da7e9;return _0x4fb639;})['then'](respondWithFilteredResult(_0x5ab4c1,_0x319e0d))['catch'](handleError(_0x5ab4c1,null));};exports['show']=function(_0x3d0c41,_0x80cff0){var _0x9add81={'raw':![],'where':{'id':_0x3d0c41['params']['id']}},_0x4212a5={};_0x4212a5[_0x825a('0x34')]=_[_0x825a('0x32')](db[_0x825a('0x2c')][_0x825a('0x2d')]);_0x4212a5['query']=_[_0x825a('0x32')](_0x3d0c41[_0x825a('0x31')]);_0x4212a5[_0x825a('0x33')]=_[_0x825a('0x36')](_0x4212a5['model'],_0x4212a5['query']);_0x9add81[_0x825a('0x35')]=_[_0x825a('0x36')](_0x4212a5['model'],qs[_0x825a('0x37')](_0x3d0c41[_0x825a('0x31')][_0x825a('0x37')]));_0x9add81[_0x825a('0x35')]=_0x9add81['attributes'][_0x825a('0x38')]?_0x9add81[_0x825a('0x35')]:_0x4212a5['model'];if(_0x3d0c41['query'][_0x825a('0x46')]){_0x9add81[_0x825a('0x43')]=[{'all':!![]}];}_0x9add81=_[_0x825a('0x40')]({},_0x9add81,_0x3d0c41['options']);return db['ZohoConfiguration'][_0x825a('0x47')](_0x9add81)[_0x825a('0x23')](handleEntityNotFound(_0x80cff0,null))[_0x825a('0x23')](respondWithResult(_0x80cff0,null))[_0x825a('0x48')](handleError(_0x80cff0,null));};exports[_0x825a('0x49')]=function(_0x2c06f7,_0x450903){return db[_0x825a('0x2c')][_0x825a('0x49')](_0x2c06f7[_0x825a('0x4a')],{})['then'](respondWithResult(_0x450903,0xc9))[_0x825a('0x48')](handleError(_0x450903,null));};exports[_0x825a('0x22')]=function(_0x5348a4,_0x15b054){if(_0x5348a4[_0x825a('0x4a')]['id']){delete _0x5348a4[_0x825a('0x4a')]['id'];}return db[_0x825a('0x2c')][_0x825a('0x47')]({'where':{'id':_0x5348a4[_0x825a('0x4b')]['id']}})[_0x825a('0x23')](handleEntityNotFound(_0x15b054,null))[_0x825a('0x23')](saveUpdates(_0x5348a4[_0x825a('0x4a')],null))[_0x825a('0x23')](respondWithResult(_0x15b054,null))[_0x825a('0x48')](handleError(_0x15b054,null));};exports[_0x825a('0x24')]=function(_0xe4bbe9,_0x2b5a53){return db[_0x825a('0x2c')]['find']({'where':{'id':_0xe4bbe9[_0x825a('0x4b')]['id']}})[_0x825a('0x23')](handleEntityNotFound(_0x2b5a53,null))['then'](removeEntity(_0x2b5a53,null))[_0x825a('0x48')](handleError(_0x2b5a53,null));};exports[_0x825a('0x4c')]=function(_0x547bbd,_0x2b2115,_0x12cb7e){var _0x2f54e3={};var _0x453cb5={};var _0x596cda;var _0x1704a5;return db[_0x825a('0x2c')][_0x825a('0x4d')]({'where':{'id':_0x547bbd['params']['id']}})[_0x825a('0x23')](handleEntityNotFound(_0x2b2115,null))[_0x825a('0x23')](function(_0x1054af){if(_0x1054af){_0x596cda=_0x1054af;_0x453cb5[_0x825a('0x34')]=_[_0x825a('0x32')](db[_0x825a('0x4e')][_0x825a('0x2d')]);_0x453cb5[_0x825a('0x31')]=_['keys'](_0x547bbd[_0x825a('0x31')]);_0x453cb5[_0x825a('0x33')]=_[_0x825a('0x36')](_0x453cb5[_0x825a('0x34')],_0x453cb5[_0x825a('0x31')]);_0x2f54e3[_0x825a('0x35')]=_[_0x825a('0x36')](_0x453cb5[_0x825a('0x34')],qs[_0x825a('0x37')](_0x547bbd[_0x825a('0x31')][_0x825a('0x37')]));_0x2f54e3[_0x825a('0x35')]=_0x2f54e3[_0x825a('0x35')][_0x825a('0x38')]?_0x2f54e3[_0x825a('0x35')]:_0x453cb5[_0x825a('0x34')];_0x2f54e3[_0x825a('0x3c')]=qs[_0x825a('0x3d')](_0x547bbd[_0x825a('0x31')][_0x825a('0x3d')]);_0x2f54e3['where']=qs[_0x825a('0x33')](_['pick'](_0x547bbd[_0x825a('0x31')],_0x453cb5[_0x825a('0x33')]));if(_0x547bbd[_0x825a('0x31')][_0x825a('0x3f')]){_0x2f54e3[_0x825a('0x3e')]=_['merge'](_0x2f54e3[_0x825a('0x3e')],{'$or':_[_0x825a('0x2b')](_0x2f54e3[_0x825a('0x35')],function(_0x21da0e){var _0xdfeff7={};_0xdfeff7[_0x21da0e]={'$like':'%'+_0x547bbd['query'][_0x825a('0x3f')]+'%'};return _0xdfeff7;})});}_0x2f54e3=_[_0x825a('0x40')]({},_0x2f54e3,_0x547bbd[_0x825a('0x42')]);return _0x596cda['getFields'](_0x2f54e3);}})[_0x825a('0x23')](function(_0x174183){if(_0x174183){_0x1704a5=_0x174183[_0x825a('0x38')];if(!_0x547bbd[_0x825a('0x31')][_0x825a('0x39')](_0x825a('0x3a'))){_0x2f54e3['limit']=qs[_0x825a('0x3b')](_0x547bbd[_0x825a('0x31')][_0x825a('0x3b')]);_0x2f54e3[_0x825a('0x1b')]=qs[_0x825a('0x1b')](_0x547bbd[_0x825a('0x31')][_0x825a('0x1b')]);}return _0x596cda[_0x825a('0x4c')](_0x2f54e3);}})[_0x825a('0x23')](function(_0x26bc9c){if(_0x26bc9c){return _0x26bc9c?{'count':_0x1704a5,'rows':_0x26bc9c}:null;}})[_0x825a('0x23')](respondWithResult(_0x2b2115,null))[_0x825a('0x48')](handleError(_0x2b2115,null));};exports[_0x825a('0x4f')]=function(_0xfbdbb5,_0x2affc9,_0xf3ea7e){var _0x1f67b1={};var _0x1635b7={};var _0x4e0674;var _0xbfed6e;return db[_0x825a('0x2c')][_0x825a('0x4d')]({'where':{'id':_0xfbdbb5[_0x825a('0x4b')]['id']}})[_0x825a('0x23')](handleEntityNotFound(_0x2affc9,null))[_0x825a('0x23')](function(_0x14531c){if(_0x14531c){_0x4e0674=_0x14531c;_0x1635b7[_0x825a('0x34')]=_[_0x825a('0x32')](db[_0x825a('0x4e')][_0x825a('0x2d')]);_0x1635b7[_0x825a('0x31')]=_[_0x825a('0x32')](_0xfbdbb5[_0x825a('0x31')]);_0x1635b7[_0x825a('0x33')]=_[_0x825a('0x36')](_0x1635b7[_0x825a('0x34')],_0x1635b7[_0x825a('0x31')]);_0x1f67b1[_0x825a('0x35')]=_[_0x825a('0x36')](_0x1635b7[_0x825a('0x34')],qs[_0x825a('0x37')](_0xfbdbb5[_0x825a('0x31')][_0x825a('0x37')]));_0x1f67b1[_0x825a('0x35')]=_0x1f67b1['attributes']['length']?_0x1f67b1[_0x825a('0x35')]:_0x1635b7[_0x825a('0x34')];_0x1f67b1[_0x825a('0x3c')]=qs['sort'](_0xfbdbb5[_0x825a('0x31')][_0x825a('0x3d')]);_0x1f67b1[_0x825a('0x3e')]=qs[_0x825a('0x33')](_[_0x825a('0x50')](_0xfbdbb5[_0x825a('0x31')],_0x1635b7[_0x825a('0x33')]));if(_0xfbdbb5[_0x825a('0x31')][_0x825a('0x3f')]){_0x1f67b1[_0x825a('0x3e')]=_['merge'](_0x1f67b1[_0x825a('0x3e')],{'$or':_[_0x825a('0x2b')](_0x1f67b1[_0x825a('0x35')],function(_0x8106a8){var _0xf360fa={};_0xf360fa[_0x8106a8]={'$like':'%'+_0xfbdbb5[_0x825a('0x31')]['filter']+'%'};return _0xf360fa;})});}_0x1f67b1=_[_0x825a('0x40')]({},_0x1f67b1,_0xfbdbb5[_0x825a('0x42')]);return _0x4e0674['getSubjects'](_0x1f67b1);}})[_0x825a('0x23')](function(_0x5bf69d){if(_0x5bf69d){_0xbfed6e=_0x5bf69d[_0x825a('0x38')];if(!_0xfbdbb5[_0x825a('0x31')]['hasOwnProperty'](_0x825a('0x3a'))){_0x1f67b1['limit']=qs[_0x825a('0x3b')](_0xfbdbb5[_0x825a('0x31')][_0x825a('0x3b')]);_0x1f67b1[_0x825a('0x1b')]=qs[_0x825a('0x1b')](_0xfbdbb5['query']['offset']);}return _0x4e0674[_0x825a('0x4f')](_0x1f67b1);}})['then'](function(_0x460e3d){if(_0x460e3d){return _0x460e3d?{'count':_0xbfed6e,'rows':_0x460e3d}:null;}})[_0x825a('0x23')](respondWithResult(_0x2affc9,null))['catch'](handleError(_0x2affc9,null));};exports[_0x825a('0x51')]=function(_0x39193e,_0x3d9d97,_0x5d74b3){var _0x355e1f={};var _0x1f9d65={};var _0x2163a4;var _0x5028ef;return db[_0x825a('0x2c')][_0x825a('0x4d')]({'where':{'id':_0x39193e['params']['id']}})['then'](handleEntityNotFound(_0x3d9d97,null))[_0x825a('0x23')](function(_0x333d02){if(_0x333d02){_0x2163a4=_0x333d02;_0x1f9d65['model']=_['keys'](db[_0x825a('0x4e')][_0x825a('0x2d')]);_0x1f9d65[_0x825a('0x31')]=_[_0x825a('0x32')](_0x39193e[_0x825a('0x31')]);_0x1f9d65[_0x825a('0x33')]=_[_0x825a('0x36')](_0x1f9d65['model'],_0x1f9d65[_0x825a('0x31')]);_0x355e1f[_0x825a('0x35')]=_[_0x825a('0x36')](_0x1f9d65[_0x825a('0x34')],qs[_0x825a('0x37')](_0x39193e[_0x825a('0x31')][_0x825a('0x37')]));_0x355e1f[_0x825a('0x35')]=_0x355e1f[_0x825a('0x35')][_0x825a('0x38')]?_0x355e1f[_0x825a('0x35')]:_0x1f9d65[_0x825a('0x34')];_0x355e1f['order']=qs[_0x825a('0x3d')](_0x39193e[_0x825a('0x31')]['sort']);_0x355e1f['where']=qs[_0x825a('0x33')](_[_0x825a('0x50')](_0x39193e[_0x825a('0x31')],_0x1f9d65['filters']));if(_0x39193e['query'][_0x825a('0x3f')]){_0x355e1f[_0x825a('0x3e')]=_['merge'](_0x355e1f[_0x825a('0x3e')],{'$or':_[_0x825a('0x2b')](_0x355e1f[_0x825a('0x35')],function(_0x24e6c6){var _0x567934={};_0x567934[_0x24e6c6]={'$like':'%'+_0x39193e[_0x825a('0x31')][_0x825a('0x3f')]+'%'};return _0x567934;})});}_0x355e1f=_[_0x825a('0x40')]({},_0x355e1f,_0x39193e[_0x825a('0x42')]);return _0x2163a4[_0x825a('0x51')](_0x355e1f);}})[_0x825a('0x23')](function(_0x228109){if(_0x228109){_0x5028ef=_0x228109[_0x825a('0x38')];if(!_0x39193e['query']['hasOwnProperty'](_0x825a('0x3a'))){_0x355e1f[_0x825a('0x3b')]=qs[_0x825a('0x3b')](_0x39193e[_0x825a('0x31')]['limit']);_0x355e1f[_0x825a('0x1b')]=qs[_0x825a('0x1b')](_0x39193e[_0x825a('0x31')][_0x825a('0x1b')]);}return _0x2163a4[_0x825a('0x51')](_0x355e1f);}})[_0x825a('0x23')](function(_0x9e9f03){if(_0x9e9f03){return _0x9e9f03?{'count':_0x5028ef,'rows':_0x9e9f03}:null;}})[_0x825a('0x23')](respondWithResult(_0x3d9d97,null))[_0x825a('0x48')](handleError(_0x3d9d97,null));};
\ No newline at end of file
+var _0xc366=['api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','end','error','name','send','index','map','ZohoConfiguration','rawAttributes','fieldName','type','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','rows','catch','show','keys','include','find','create','body','update','params','destroy','getFields','findOne','order','ZohoField','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','ejs','lodash','squel','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger'];(function(_0x1af097,_0x5f2b5f){var _0x2d7e2e=function(_0x30b742){while(--_0x30b742){_0x1af097['push'](_0x1af097['shift']());}};_0x2d7e2e(++_0x5f2b5f);}(_0xc366,0x88));var _0x6c36=function(_0x49390c,_0xbeec97){_0x49390c=_0x49390c-0x0;var _0xbb8940=_0xc366[_0x49390c];return _0xbb8940;};'use strict';var emlformat=require(_0x6c36('0x0'));var rimraf=require(_0x6c36('0x1'));var zipdir=require(_0x6c36('0x2'));var jsonpatch=require(_0x6c36('0x3'));var rp=require(_0x6c36('0x4'));var moment=require(_0x6c36('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x6c36('0x6'));var util=require(_0x6c36('0x7'));var path=require(_0x6c36('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x6c36('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6c36('0xa'));var squel=require(_0x6c36('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x6c36('0xc'));var querystring=require(_0x6c36('0xd'));var Papa=require('papaparse');var Redis=require(_0x6c36('0xe'));var authService=require(_0x6c36('0xf'));var qs=require(_0x6c36('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x6c36('0x11'))(_0x6c36('0x12'));var utils=require(_0x6c36('0x13'));var config=require(_0x6c36('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x6c36('0x15'))['db'];function respondWithStatusCode(_0x2bdecf,_0x3d3f98){_0x3d3f98=_0x3d3f98||0xcc;return function(_0x4bb8da){if(_0x4bb8da){return _0x2bdecf[_0x6c36('0x16')](_0x3d3f98);}return _0x2bdecf['status'](_0x3d3f98)['end']();};}function respondWithResult(_0x30c1c9,_0x2ce417){_0x2ce417=_0x2ce417||0xc8;return function(_0x5c8d32){if(_0x5c8d32){return _0x30c1c9[_0x6c36('0x17')](_0x2ce417)[_0x6c36('0x18')](_0x5c8d32);}};}function respondWithFilteredResult(_0x549498,_0x3f02d6){return function(_0x50d7eb){if(_0x50d7eb){var _0x850558=typeof _0x3f02d6[_0x6c36('0x19')]===_0x6c36('0x1a')&&typeof _0x3f02d6[_0x6c36('0x1b')]===_0x6c36('0x1a');var _0x1f53a1=_0x50d7eb[_0x6c36('0x1c')];var _0x4764a8=_0x850558?0x0:_0x3f02d6[_0x6c36('0x19')];var _0x2280e5=_0x850558?_0x50d7eb[_0x6c36('0x1c')]:_0x3f02d6['offset']+_0x3f02d6['limit'];var _0x13d9c1;if(_0x2280e5>=_0x1f53a1){_0x2280e5=_0x1f53a1;_0x13d9c1=0xc8;}else{_0x13d9c1=0xce;}_0x549498[_0x6c36('0x17')](_0x13d9c1);return _0x549498[_0x6c36('0x1d')](_0x6c36('0x1e'),_0x4764a8+'-'+_0x2280e5+'/'+_0x1f53a1)[_0x6c36('0x18')](_0x50d7eb);}return null;};}function patchUpdates(_0x2bbd43){return function(_0x5c4195){try{jsonpatch[_0x6c36('0x1f')](_0x5c4195,_0x2bbd43,!![]);}catch(_0x246d7b){return BPromise[_0x6c36('0x20')](_0x246d7b);}return _0x5c4195['save']();};}function saveUpdates(_0x429e1a,_0x3e351d){return function(_0x14f45e){if(_0x14f45e){return _0x14f45e['update'](_0x429e1a)[_0x6c36('0x21')](function(_0x2cf908){return _0x2cf908;});}return null;};}function removeEntity(_0xc57970,_0x1c7e61){return function(_0xe82604){if(_0xe82604){return _0xe82604['destroy']()[_0x6c36('0x21')](function(){_0xc57970['status'](0xcc)[_0x6c36('0x22')]();});}};}function handleEntityNotFound(_0x203622,_0x143ac2){return function(_0x402707){if(!_0x402707){_0x203622['sendStatus'](0x194);}return _0x402707;};}function handleError(_0x5da2aa,_0x23e3fc){_0x23e3fc=_0x23e3fc||0x1f4;return function(_0x594a57){logger[_0x6c36('0x23')](_0x594a57['stack']);if(_0x594a57[_0x6c36('0x24')]){delete _0x594a57['name'];}_0x5da2aa[_0x6c36('0x17')](_0x23e3fc)[_0x6c36('0x25')](_0x594a57);};}exports[_0x6c36('0x26')]=function(_0x3f9767,_0x17ebfe){var _0x4e1c43={},_0x49610c={},_0x2bd1f5={'count':0x0,'rows':[]};var _0x1884a5=_[_0x6c36('0x27')](db[_0x6c36('0x28')][_0x6c36('0x29')],function(_0x3fa0d1){return{'name':_0x3fa0d1[_0x6c36('0x2a')],'type':_0x3fa0d1[_0x6c36('0x2b')]['key']};});_0x49610c[_0x6c36('0x2c')]=_[_0x6c36('0x27')](_0x1884a5,_0x6c36('0x24'));_0x49610c[_0x6c36('0x2d')]=_['keys'](_0x3f9767[_0x6c36('0x2d')]);_0x49610c[_0x6c36('0x2e')]=_['intersection'](_0x49610c[_0x6c36('0x2c')],_0x49610c[_0x6c36('0x2d')]);_0x4e1c43['attributes']=_[_0x6c36('0x2f')](_0x49610c['model'],qs[_0x6c36('0x30')](_0x3f9767[_0x6c36('0x2d')]['fields']));_0x4e1c43[_0x6c36('0x31')]=_0x4e1c43[_0x6c36('0x31')][_0x6c36('0x32')]?_0x4e1c43[_0x6c36('0x31')]:_0x49610c[_0x6c36('0x2c')];if(!_0x3f9767['query'][_0x6c36('0x33')](_0x6c36('0x34'))){_0x4e1c43[_0x6c36('0x1b')]=qs[_0x6c36('0x1b')](_0x3f9767[_0x6c36('0x2d')][_0x6c36('0x1b')]);_0x4e1c43[_0x6c36('0x19')]=qs[_0x6c36('0x19')](_0x3f9767['query'][_0x6c36('0x19')]);}_0x4e1c43['order']=qs[_0x6c36('0x35')](_0x3f9767[_0x6c36('0x2d')][_0x6c36('0x35')]);_0x4e1c43['where']=qs[_0x6c36('0x2e')](_[_0x6c36('0x36')](_0x3f9767[_0x6c36('0x2d')],_0x49610c[_0x6c36('0x2e')]),_0x1884a5);if(_0x3f9767[_0x6c36('0x2d')][_0x6c36('0x37')]){_0x4e1c43[_0x6c36('0x38')]=_[_0x6c36('0x39')](_0x4e1c43[_0x6c36('0x38')],{'$or':_[_0x6c36('0x27')](_0x1884a5,function(_0x4b3a14){if(_0x4b3a14['type']!==_0x6c36('0x3a')){var _0x57ee7a={};_0x57ee7a[_0x4b3a14[_0x6c36('0x24')]]={'$like':'%'+_0x3f9767[_0x6c36('0x2d')][_0x6c36('0x37')]+'%'};return _0x57ee7a;}})});}_0x4e1c43=_[_0x6c36('0x39')]({},_0x4e1c43,_0x3f9767[_0x6c36('0x3b')]);var _0x31b0e0={'where':_0x4e1c43[_0x6c36('0x38')]};return db[_0x6c36('0x28')][_0x6c36('0x1c')](_0x31b0e0)[_0x6c36('0x21')](function(_0x4c6143){_0x2bd1f5[_0x6c36('0x1c')]=_0x4c6143;if(_0x3f9767[_0x6c36('0x2d')]['includeAll']){_0x4e1c43['include']=[{'all':!![]}];}return db[_0x6c36('0x28')]['findAll'](_0x4e1c43);})['then'](function(_0x2b7c40){_0x2bd1f5[_0x6c36('0x3c')]=_0x2b7c40;return _0x2bd1f5;})[_0x6c36('0x21')](respondWithFilteredResult(_0x17ebfe,_0x4e1c43))[_0x6c36('0x3d')](handleError(_0x17ebfe,null));};exports[_0x6c36('0x3e')]=function(_0x296b4a,_0x43cbba){var _0x13dc9a={'raw':![],'where':{'id':_0x296b4a['params']['id']}},_0x3db1e5={};_0x3db1e5['model']=_[_0x6c36('0x3f')](db[_0x6c36('0x28')][_0x6c36('0x29')]);_0x3db1e5['query']=_[_0x6c36('0x3f')](_0x296b4a['query']);_0x3db1e5[_0x6c36('0x2e')]=_[_0x6c36('0x2f')](_0x3db1e5[_0x6c36('0x2c')],_0x3db1e5[_0x6c36('0x2d')]);_0x13dc9a[_0x6c36('0x31')]=_[_0x6c36('0x2f')](_0x3db1e5[_0x6c36('0x2c')],qs[_0x6c36('0x30')](_0x296b4a[_0x6c36('0x2d')][_0x6c36('0x30')]));_0x13dc9a[_0x6c36('0x31')]=_0x13dc9a[_0x6c36('0x31')]['length']?_0x13dc9a[_0x6c36('0x31')]:_0x3db1e5[_0x6c36('0x2c')];if(_0x296b4a[_0x6c36('0x2d')]['includeAll']){_0x13dc9a[_0x6c36('0x40')]=[{'all':!![]}];}_0x13dc9a=_['merge']({},_0x13dc9a,_0x296b4a['options']);return db[_0x6c36('0x28')][_0x6c36('0x41')](_0x13dc9a)[_0x6c36('0x21')](handleEntityNotFound(_0x43cbba,null))['then'](respondWithResult(_0x43cbba,null))[_0x6c36('0x3d')](handleError(_0x43cbba,null));};exports[_0x6c36('0x42')]=function(_0x354b86,_0x5162d6){return db[_0x6c36('0x28')]['create'](_0x354b86[_0x6c36('0x43')],{})['then'](respondWithResult(_0x5162d6,0xc9))[_0x6c36('0x3d')](handleError(_0x5162d6,null));};exports[_0x6c36('0x44')]=function(_0x54168a,_0x44fed8){if(_0x54168a['body']['id']){delete _0x54168a['body']['id'];}return db[_0x6c36('0x28')][_0x6c36('0x41')]({'where':{'id':_0x54168a[_0x6c36('0x45')]['id']}})['then'](handleEntityNotFound(_0x44fed8,null))['then'](saveUpdates(_0x54168a[_0x6c36('0x43')],null))[_0x6c36('0x21')](respondWithResult(_0x44fed8,null))[_0x6c36('0x3d')](handleError(_0x44fed8,null));};exports[_0x6c36('0x46')]=function(_0x367e3c,_0x214e60){return db[_0x6c36('0x28')][_0x6c36('0x41')]({'where':{'id':_0x367e3c['params']['id']}})[_0x6c36('0x21')](handleEntityNotFound(_0x214e60,null))['then'](removeEntity(_0x214e60,null))['catch'](handleError(_0x214e60,null));};exports[_0x6c36('0x47')]=function(_0x2afcda,_0x5356d4,_0x549a6a){var _0x3e6cc6={};var _0x48c84e={};var _0x4f6904;var _0x515042;return db[_0x6c36('0x28')][_0x6c36('0x48')]({'where':{'id':_0x2afcda['params']['id']}})[_0x6c36('0x21')](handleEntityNotFound(_0x5356d4,null))[_0x6c36('0x21')](function(_0x40d567){if(_0x40d567){_0x4f6904=_0x40d567;_0x48c84e[_0x6c36('0x2c')]=_[_0x6c36('0x3f')](db['ZohoField']['rawAttributes']);_0x48c84e[_0x6c36('0x2d')]=_['keys'](_0x2afcda['query']);_0x48c84e['filters']=_['intersection'](_0x48c84e[_0x6c36('0x2c')],_0x48c84e[_0x6c36('0x2d')]);_0x3e6cc6['attributes']=_['intersection'](_0x48c84e[_0x6c36('0x2c')],qs[_0x6c36('0x30')](_0x2afcda['query']['fields']));_0x3e6cc6[_0x6c36('0x31')]=_0x3e6cc6[_0x6c36('0x31')][_0x6c36('0x32')]?_0x3e6cc6[_0x6c36('0x31')]:_0x48c84e[_0x6c36('0x2c')];_0x3e6cc6[_0x6c36('0x49')]=qs[_0x6c36('0x35')](_0x2afcda[_0x6c36('0x2d')]['sort']);_0x3e6cc6['where']=qs[_0x6c36('0x2e')](_[_0x6c36('0x36')](_0x2afcda[_0x6c36('0x2d')],_0x48c84e[_0x6c36('0x2e')]));if(_0x2afcda['query'][_0x6c36('0x37')]){_0x3e6cc6[_0x6c36('0x38')]=_['merge'](_0x3e6cc6[_0x6c36('0x38')],{'$or':_[_0x6c36('0x27')](_0x3e6cc6['attributes'],function(_0x3508ce){var _0x17832f={};_0x17832f[_0x3508ce]={'$like':'%'+_0x2afcda[_0x6c36('0x2d')][_0x6c36('0x37')]+'%'};return _0x17832f;})});}_0x3e6cc6=_[_0x6c36('0x39')]({},_0x3e6cc6,_0x2afcda[_0x6c36('0x3b')]);return _0x4f6904[_0x6c36('0x47')](_0x3e6cc6);}})[_0x6c36('0x21')](function(_0x37a1f5){if(_0x37a1f5){_0x515042=_0x37a1f5[_0x6c36('0x32')];if(!_0x2afcda['query'][_0x6c36('0x33')](_0x6c36('0x34'))){_0x3e6cc6[_0x6c36('0x1b')]=qs[_0x6c36('0x1b')](_0x2afcda['query']['limit']);_0x3e6cc6[_0x6c36('0x19')]=qs[_0x6c36('0x19')](_0x2afcda[_0x6c36('0x2d')][_0x6c36('0x19')]);}return _0x4f6904[_0x6c36('0x47')](_0x3e6cc6);}})[_0x6c36('0x21')](function(_0x1154fd){if(_0x1154fd){return _0x1154fd?{'count':_0x515042,'rows':_0x1154fd}:null;}})[_0x6c36('0x21')](respondWithResult(_0x5356d4,null))[_0x6c36('0x3d')](handleError(_0x5356d4,null));};exports['getSubjects']=function(_0x2079f1,_0x198a5e,_0x3cd6f5){var _0x3d2efa={};var _0x585bcf={};var _0xc7511f;var _0x4c50ee;return db[_0x6c36('0x28')][_0x6c36('0x48')]({'where':{'id':_0x2079f1[_0x6c36('0x45')]['id']}})[_0x6c36('0x21')](handleEntityNotFound(_0x198a5e,null))[_0x6c36('0x21')](function(_0x543e11){if(_0x543e11){_0xc7511f=_0x543e11;_0x585bcf[_0x6c36('0x2c')]=_[_0x6c36('0x3f')](db[_0x6c36('0x4a')][_0x6c36('0x29')]);_0x585bcf[_0x6c36('0x2d')]=_['keys'](_0x2079f1[_0x6c36('0x2d')]);_0x585bcf[_0x6c36('0x2e')]=_[_0x6c36('0x2f')](_0x585bcf['model'],_0x585bcf['query']);_0x3d2efa[_0x6c36('0x31')]=_['intersection'](_0x585bcf[_0x6c36('0x2c')],qs[_0x6c36('0x30')](_0x2079f1[_0x6c36('0x2d')][_0x6c36('0x30')]));_0x3d2efa[_0x6c36('0x31')]=_0x3d2efa[_0x6c36('0x31')][_0x6c36('0x32')]?_0x3d2efa[_0x6c36('0x31')]:_0x585bcf[_0x6c36('0x2c')];_0x3d2efa[_0x6c36('0x49')]=qs[_0x6c36('0x35')](_0x2079f1[_0x6c36('0x2d')][_0x6c36('0x35')]);_0x3d2efa[_0x6c36('0x38')]=qs[_0x6c36('0x2e')](_[_0x6c36('0x36')](_0x2079f1[_0x6c36('0x2d')],_0x585bcf[_0x6c36('0x2e')]));if(_0x2079f1[_0x6c36('0x2d')][_0x6c36('0x37')]){_0x3d2efa[_0x6c36('0x38')]=_[_0x6c36('0x39')](_0x3d2efa['where'],{'$or':_[_0x6c36('0x27')](_0x3d2efa[_0x6c36('0x31')],function(_0x310619){var _0xbd84d3={};_0xbd84d3[_0x310619]={'$like':'%'+_0x2079f1[_0x6c36('0x2d')][_0x6c36('0x37')]+'%'};return _0xbd84d3;})});}_0x3d2efa=_[_0x6c36('0x39')]({},_0x3d2efa,_0x2079f1[_0x6c36('0x3b')]);return _0xc7511f['getSubjects'](_0x3d2efa);}})[_0x6c36('0x21')](function(_0x38d5ed){if(_0x38d5ed){_0x4c50ee=_0x38d5ed[_0x6c36('0x32')];if(!_0x2079f1[_0x6c36('0x2d')][_0x6c36('0x33')](_0x6c36('0x34'))){_0x3d2efa[_0x6c36('0x1b')]=qs[_0x6c36('0x1b')](_0x2079f1[_0x6c36('0x2d')][_0x6c36('0x1b')]);_0x3d2efa[_0x6c36('0x19')]=qs[_0x6c36('0x19')](_0x2079f1['query']['offset']);}return _0xc7511f[_0x6c36('0x4b')](_0x3d2efa);}})[_0x6c36('0x21')](function(_0x1db452){if(_0x1db452){return _0x1db452?{'count':_0x4c50ee,'rows':_0x1db452}:null;}})[_0x6c36('0x21')](respondWithResult(_0x198a5e,null))['catch'](handleError(_0x198a5e,null));};exports[_0x6c36('0x4c')]=function(_0x389698,_0x600ac5,_0x5f50f6){var _0xe2de9={};var _0x516813={};var _0x228392;var _0x15ca91;return db[_0x6c36('0x28')][_0x6c36('0x48')]({'where':{'id':_0x389698[_0x6c36('0x45')]['id']}})[_0x6c36('0x21')](handleEntityNotFound(_0x600ac5,null))[_0x6c36('0x21')](function(_0x43bc24){if(_0x43bc24){_0x228392=_0x43bc24;_0x516813[_0x6c36('0x2c')]=_['keys'](db['ZohoField']['rawAttributes']);_0x516813[_0x6c36('0x2d')]=_[_0x6c36('0x3f')](_0x389698[_0x6c36('0x2d')]);_0x516813['filters']=_[_0x6c36('0x2f')](_0x516813[_0x6c36('0x2c')],_0x516813[_0x6c36('0x2d')]);_0xe2de9['attributes']=_['intersection'](_0x516813[_0x6c36('0x2c')],qs['fields'](_0x389698[_0x6c36('0x2d')][_0x6c36('0x30')]));_0xe2de9['attributes']=_0xe2de9[_0x6c36('0x31')]['length']?_0xe2de9[_0x6c36('0x31')]:_0x516813[_0x6c36('0x2c')];_0xe2de9[_0x6c36('0x49')]=qs[_0x6c36('0x35')](_0x389698[_0x6c36('0x2d')][_0x6c36('0x35')]);_0xe2de9[_0x6c36('0x38')]=qs[_0x6c36('0x2e')](_['pick'](_0x389698[_0x6c36('0x2d')],_0x516813['filters']));if(_0x389698[_0x6c36('0x2d')][_0x6c36('0x37')]){_0xe2de9[_0x6c36('0x38')]=_[_0x6c36('0x39')](_0xe2de9[_0x6c36('0x38')],{'$or':_[_0x6c36('0x27')](_0xe2de9[_0x6c36('0x31')],function(_0x496c32){var _0x344290={};_0x344290[_0x496c32]={'$like':'%'+_0x389698['query'][_0x6c36('0x37')]+'%'};return _0x344290;})});}_0xe2de9=_['merge']({},_0xe2de9,_0x389698[_0x6c36('0x3b')]);return _0x228392[_0x6c36('0x4c')](_0xe2de9);}})[_0x6c36('0x21')](function(_0x386f9d){if(_0x386f9d){_0x15ca91=_0x386f9d[_0x6c36('0x32')];if(!_0x389698[_0x6c36('0x2d')]['hasOwnProperty'](_0x6c36('0x34'))){_0xe2de9['limit']=qs[_0x6c36('0x1b')](_0x389698[_0x6c36('0x2d')]['limit']);_0xe2de9[_0x6c36('0x19')]=qs[_0x6c36('0x19')](_0x389698['query']['offset']);}return _0x228392['getDescriptions'](_0xe2de9);}})[_0x6c36('0x21')](function(_0x205477){if(_0x205477){return _0x205477?{'count':_0x15ca91,'rows':_0x205477}:null;}})[_0x6c36('0x21')](respondWithResult(_0x600ac5,null))[_0x6c36('0x3d')](handleError(_0x600ac5,null));};
\ No newline at end of file
index e81121b..285dcd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1950=['bluebird','request-promise','rimraf','../../config/environment','exports','define','ZohoConfiguration','int_zoho_configurations','lodash','api','moment'];(function(_0xea35d1,_0x302471){var _0x1d7a7c=function(_0x1bc101){while(--_0x1bc101){_0xea35d1['push'](_0xea35d1['shift']());}};_0x1d7a7c(++_0x302471);}(_0x1950,0xce));var _0x0195=function(_0x2504c4,_0x5e9287){_0x2504c4=_0x2504c4-0x0;var _0x4cf358=_0x1950[_0x2504c4];return _0x4cf358;};'use strict';var _=require(_0x0195('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x0195('0x1'));var moment=require(_0x0195('0x2'));var BPromise=require(_0x0195('0x3'));var rp=require(_0x0195('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0195('0x5'));var config=require(_0x0195('0x6'));var attributes=require('./intZohoConfiguration.attributes');module[_0x0195('0x7')]=function(_0x3c686d,_0x21347b){return _0x3c686d[_0x0195('0x8')](_0x0195('0x9'),attributes,{'tableName':_0x0195('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1ac7=['../../config/environment','./intZohoConfiguration.attributes','exports','define','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x4e2861,_0x199be0){var _0x2265e3=function(_0x469693){while(--_0x469693){_0x4e2861['push'](_0x4e2861['shift']());}};_0x2265e3(++_0x199be0);}(_0x1ac7,0x126));var _0x71ac=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0x1ac7[_0x2064e5];return _0x21a233;};'use strict';var _=require('lodash');var util=require(_0x71ac('0x0'));var logger=require(_0x71ac('0x1'))(_0x71ac('0x2'));var moment=require('moment');var BPromise=require(_0x71ac('0x3'));var rp=require(_0x71ac('0x4'));var fs=require('fs');var path=require(_0x71ac('0x5'));var rimraf=require('rimraf');var config=require(_0x71ac('0x6'));var attributes=require(_0x71ac('0x7'));module[_0x71ac('0x8')]=function(_0x469b2b,_0x3159cc){return _0x469b2b[_0x71ac('0x9')]('ZohoConfiguration',attributes,{'tableName':'int_zoho_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 314f80c..c4d96a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0db1=['ioredis','../../config/utils','client','http','request','then','info','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0xa5db05,_0x431d23){var _0x269a83=function(_0xdbced1){while(--_0xdbced1){_0xa5db05['push'](_0xa5db05['shift']());}};_0x269a83(++_0x431d23);}(_0x0db1,0x79));var _0x10db=function(_0x509b61,_0x48adbb){_0x509b61=_0x509b61-0x0;var _0x41182c=_0x0db1[_0x509b61];return _0x41182c;};'use strict';var _=require(_0x10db('0x0'));var util=require(_0x10db('0x1'));var moment=require(_0x10db('0x2'));var BPromise=require(_0x10db('0x3'));var rs=require(_0x10db('0x4'));var fs=require('fs');var Redis=require(_0x10db('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x10db('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x10db('0x7')][_0x10db('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3b8825,_0x5d2c33,_0x5a9582){return new BPromise(function(_0x485a7f,_0x492a0e){return client[_0x10db('0x9')](_0x3b8825,_0x5a9582)[_0x10db('0xa')](function(_0x472a6b){logger[_0x10db('0xb')](_0x10db('0xc'),_0x5d2c33,_0x10db('0xd'));logger['debug'](_0x10db('0xe'),_0x5d2c33,'request\x20sent',JSON[_0x10db('0xf')](_0x472a6b));if(_0x472a6b[_0x10db('0x10')]){if(_0x472a6b['error'][_0x10db('0x11')]===0x1f4){logger[_0x10db('0x10')](_0x10db('0xc'),_0x5d2c33,_0x472a6b[_0x10db('0x10')][_0x10db('0x12')]);return _0x492a0e(_0x472a6b[_0x10db('0x10')][_0x10db('0x12')]);}logger[_0x10db('0x10')](_0x10db('0xc'),_0x5d2c33,_0x472a6b[_0x10db('0x10')]['message']);return _0x485a7f(_0x472a6b['error'][_0x10db('0x12')]);}else{logger[_0x10db('0xb')](_0x10db('0xc'),_0x5d2c33,'request\x20sent');_0x485a7f(_0x472a6b[_0x10db('0x13')][_0x10db('0x12')]);}})[_0x10db('0x14')](function(_0x1728e0){logger[_0x10db('0x10')]('ZohoConfiguration,\x20%s,\x20%s',_0x5d2c33,_0x1728e0);_0x492a0e(_0x1728e0);});});}
\ No newline at end of file
+var _0x3f9d=['error','code','message','result','catch','ZohoConfiguration,\x20%s,\x20%s','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','request','info','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x3f9d,0x16e));var _0xd3f9=function(_0x118749,_0x50e848){_0x118749=_0x118749-0x0;var _0x20d489=_0x3f9d[_0x118749];return _0x20d489;};'use strict';var _=require('lodash');var util=require(_0xd3f9('0x0'));var moment=require(_0xd3f9('0x1'));var BPromise=require('bluebird');var rs=require(_0xd3f9('0x2'));var fs=require('fs');var Redis=require(_0xd3f9('0x3'));var db=require(_0xd3f9('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xd3f9('0x5'))(_0xd3f9('0x6'));var config=require(_0xd3f9('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xd3f9('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2bcb56,_0x1b381b,_0x4abab9){return new BPromise(function(_0x495985,_0x4d4d20){return client[_0xd3f9('0x9')](_0x2bcb56,_0x4abab9)['then'](function(_0x366d45){logger[_0xd3f9('0xa')]('ZohoConfiguration,\x20%s,\x20%s',_0x1b381b,_0xd3f9('0xb'));logger[_0xd3f9('0xc')](_0xd3f9('0xd'),_0x1b381b,'request\x20sent',JSON['stringify'](_0x366d45));if(_0x366d45['error']){if(_0x366d45[_0xd3f9('0xe')][_0xd3f9('0xf')]===0x1f4){logger[_0xd3f9('0xe')]('ZohoConfiguration,\x20%s,\x20%s',_0x1b381b,_0x366d45[_0xd3f9('0xe')][_0xd3f9('0x10')]);return _0x4d4d20(_0x366d45[_0xd3f9('0xe')][_0xd3f9('0x10')]);}logger[_0xd3f9('0xe')]('ZohoConfiguration,\x20%s,\x20%s',_0x1b381b,_0x366d45[_0xd3f9('0xe')]['message']);return _0x495985(_0x366d45[_0xd3f9('0xe')][_0xd3f9('0x10')]);}else{logger['info']('ZohoConfiguration,\x20%s,\x20%s',_0x1b381b,_0xd3f9('0xb'));_0x495985(_0x366d45[_0xd3f9('0x11')][_0xd3f9('0x10')]);}})[_0xd3f9('0x12')](function(_0x4c8a48){logger[_0xd3f9('0xe')](_0xd3f9('0x13'),_0x1b381b,_0x4c8a48);_0x4d4d20(_0x4c8a48);});});}
\ No newline at end of file
index 325c643..2ed675a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13e3=['show','post','create','put','update','delete','exports','multer','util','path','express','Router','fs-extra','../../config/environment','get','/:id','isAuthenticated'];(function(_0x4fbfd9,_0x3ab91a){var _0x31dc94=function(_0x11e53b){while(--_0x11e53b){_0x4fbfd9['push'](_0x4fbfd9['shift']());}};_0x31dc94(++_0x3ab91a);}(_0x13e3,0x117));var _0x313e=function(_0x4709c8,_0x3384ca){_0x4709c8=_0x4709c8-0x0;var _0x478cdd=_0x13e3[_0x4709c8];return _0x478cdd;};'use strict';var multer=require(_0x313e('0x0'));var util=require(_0x313e('0x1'));var path=require(_0x313e('0x2'));var timeout=require('connect-timeout');var express=require(_0x313e('0x3'));var router=express[_0x313e('0x4')]();var fs_extra=require(_0x313e('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x313e('0x6'));var controller=require('./intZohoField.controller');router[_0x313e('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x313e('0x7')](_0x313e('0x8'),auth[_0x313e('0x9')](),controller[_0x313e('0xa')]);router[_0x313e('0xb')]('/',auth[_0x313e('0x9')](),controller[_0x313e('0xc')]);router[_0x313e('0xd')](_0x313e('0x8'),auth[_0x313e('0x9')](),controller[_0x313e('0xe')]);router[_0x313e('0xf')](_0x313e('0x8'),auth[_0x313e('0x9')](),controller['destroy']);module[_0x313e('0x10')]=router;
\ No newline at end of file
+var _0x9cb0=['express','fs-extra','../../components/auth/service','../../config/environment','./intZohoField.controller','isAuthenticated','index','get','/:id','show','post','create','put','delete','destroy','exports','multer','util','connect-timeout'];(function(_0xb1b864,_0x222c52){var _0x587bfc=function(_0x55e549){while(--_0x55e549){_0xb1b864['push'](_0xb1b864['shift']());}};_0x587bfc(++_0x222c52);}(_0x9cb0,0x1b2));var _0x09cb=function(_0xe6aba1,_0x4ff2b4){_0xe6aba1=_0xe6aba1-0x0;var _0x56482c=_0x9cb0[_0xe6aba1];return _0x56482c;};'use strict';var multer=require(_0x09cb('0x0'));var util=require(_0x09cb('0x1'));var path=require('path');var timeout=require(_0x09cb('0x2'));var express=require(_0x09cb('0x3'));var router=express['Router']();var fs_extra=require(_0x09cb('0x4'));var auth=require(_0x09cb('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x09cb('0x6'));var controller=require(_0x09cb('0x7'));router['get']('/',auth[_0x09cb('0x8')](),controller[_0x09cb('0x9')]);router[_0x09cb('0xa')](_0x09cb('0xb'),auth[_0x09cb('0x8')](),controller[_0x09cb('0xc')]);router[_0x09cb('0xd')]('/',auth[_0x09cb('0x8')](),controller[_0x09cb('0xe')]);router[_0x09cb('0xf')](_0x09cb('0xb'),auth[_0x09cb('0x8')](),controller['update']);router[_0x09cb('0x10')](_0x09cb('0xb'),auth['isAuthenticated'](),controller[_0x09cb('0x11')]);module[_0x09cb('0x12')]=router;
\ No newline at end of file
index 7812fb4..99e4011 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20d7=['keyValue','picklist','STRING','ENUM','BOOLEAN','exports','string','variable','customVariable'];(function(_0x441e9a,_0x549e51){var _0x225027=function(_0x24fd97){while(--_0x24fd97){_0x441e9a['push'](_0x441e9a['shift']());}};_0x225027(++_0x549e51);}(_0x20d7,0x164));var _0x720d=function(_0x158bb0,_0x3fb564){_0x158bb0=_0x158bb0-0x0;var _0x2ba1b4=_0x20d7[_0x158bb0];return _0x2ba1b4;};'use strict';var Sequelize=require('sequelize');module[_0x720d('0x0')]={'type':{'type':Sequelize['ENUM'](_0x720d('0x1'),_0x720d('0x2'),_0x720d('0x3'),_0x720d('0x4'),_0x720d('0x5')),'defaultValue':_0x720d('0x1')},'content':{'type':Sequelize[_0x720d('0x6')]},'key':{'type':Sequelize[_0x720d('0x6')]},'keyType':{'type':Sequelize[_0x720d('0x7')](_0x720d('0x1'),_0x720d('0x2'),'customVariable')},'keyContent':{'type':Sequelize[_0x720d('0x6')]},'idField':{'type':Sequelize[_0x720d('0x6')]},'nameField':{'type':Sequelize[_0x720d('0x6')]},'customField':{'type':Sequelize[_0x720d('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x720d('0x6')]}};
\ No newline at end of file
+var _0xafb0=['sequelize','exports','string','customVariable','keyValue','picklist','STRING','ENUM','variable','BOOLEAN'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xafb0,0x17c));var _0x0afb=function(_0x231e16,_0x67347b){_0x231e16=_0x231e16-0x0;var _0x570a7c=_0xafb0[_0x231e16];return _0x570a7c;};'use strict';var Sequelize=require(_0x0afb('0x0'));module[_0x0afb('0x1')]={'type':{'type':Sequelize['ENUM'](_0x0afb('0x2'),'variable',_0x0afb('0x3'),_0x0afb('0x4'),_0x0afb('0x5')),'defaultValue':_0x0afb('0x2')},'content':{'type':Sequelize[_0x0afb('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x0afb('0x7')](_0x0afb('0x2'),_0x0afb('0x8'),'customVariable')},'keyContent':{'type':Sequelize[_0x0afb('0x6')]},'idField':{'type':Sequelize[_0x0afb('0x6')]},'nameField':{'type':Sequelize[_0x0afb('0x6')]},'customField':{'type':Sequelize[_0x0afb('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x0afb('0x6')]}};
\ No newline at end of file
index 3c5e730..1c1ed99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x358d=['save','update','then','end','sendStatus','error','stack','name','index','map','ZohoField','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','intersection','find','create','body','params','destroy','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','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','status','undefined','limit','count','offset','set','Content-Range','apply','reject'];(function(_0x5a187b,_0x1f64fe){var _0x14d601=function(_0x45fd29){while(--_0x45fd29){_0x5a187b['push'](_0x5a187b['shift']());}};_0x14d601(++_0x1f64fe);}(_0x358d,0xbd));var _0xd358=function(_0x369289,_0xb779d8){_0x369289=_0x369289-0x0;var _0x1c8ba4=_0x358d[_0x369289];return _0x1c8ba4;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xd358('0x0'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xd358('0x1'));var Mustache=require(_0xd358('0x2'));var util=require(_0xd358('0x3'));var path=require(_0xd358('0x4'));var sox=require(_0xd358('0x5'));var csv=require(_0xd358('0x6'));var ejs=require(_0xd358('0x7'));var fs=require('fs');var fs_extra=require(_0xd358('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xd358('0x9'));var jsforce=require(_0xd358('0xa'));var deskjs=require(_0xd358('0xb'));var toCsv=require(_0xd358('0x6'));var querystring=require(_0xd358('0xc'));var Papa=require(_0xd358('0xd'));var Redis=require(_0xd358('0xe'));var authService=require(_0xd358('0xf'));var qs=require(_0xd358('0x10'));var as=require(_0xd358('0x11'));var hardwareService=require(_0xd358('0x12'));var logger=require('../../config/logger')(_0xd358('0x13'));var utils=require(_0xd358('0x14'));var config=require(_0xd358('0x15'));var licenseUtil=require(_0xd358('0x16'));var db=require(_0xd358('0x17'))['db'];function respondWithStatusCode(_0x25be80,_0x558c49){_0x558c49=_0x558c49||0xcc;return function(_0x4ddfeb){if(_0x4ddfeb){return _0x25be80['sendStatus'](_0x558c49);}return _0x25be80[_0xd358('0x18')](_0x558c49)['end']();};}function respondWithResult(_0x32fc69,_0x2dc263){_0x2dc263=_0x2dc263||0xc8;return function(_0xd1d0af){if(_0xd1d0af){return _0x32fc69[_0xd358('0x18')](_0x2dc263)['json'](_0xd1d0af);}};}function respondWithFilteredResult(_0x2c7113,_0x88f7ab){return function(_0x23cc0e){if(_0x23cc0e){var _0x352608=typeof _0x88f7ab['offset']===_0xd358('0x19')&&typeof _0x88f7ab[_0xd358('0x1a')]===_0xd358('0x19');var _0x602787=_0x23cc0e[_0xd358('0x1b')];var _0x30f2c3=_0x352608?0x0:_0x88f7ab[_0xd358('0x1c')];var _0x479b8b=_0x352608?_0x23cc0e[_0xd358('0x1b')]:_0x88f7ab[_0xd358('0x1c')]+_0x88f7ab[_0xd358('0x1a')];var _0x45a4ea;if(_0x479b8b>=_0x602787){_0x479b8b=_0x602787;_0x45a4ea=0xc8;}else{_0x45a4ea=0xce;}_0x2c7113[_0xd358('0x18')](_0x45a4ea);return _0x2c7113[_0xd358('0x1d')](_0xd358('0x1e'),_0x30f2c3+'-'+_0x479b8b+'/'+_0x602787)['json'](_0x23cc0e);}return null;};}function patchUpdates(_0x3473d1){return function(_0x20e4b0){try{jsonpatch[_0xd358('0x1f')](_0x20e4b0,_0x3473d1,!![]);}catch(_0x2050e6){return BPromise[_0xd358('0x20')](_0x2050e6);}return _0x20e4b0[_0xd358('0x21')]();};}function saveUpdates(_0x407173,_0x1abd61){return function(_0x2103a1){if(_0x2103a1){return _0x2103a1[_0xd358('0x22')](_0x407173)[_0xd358('0x23')](function(_0xe4a1d3){return _0xe4a1d3;});}return null;};}function removeEntity(_0xd375ce,_0x5dfe45){return function(_0x379afa){if(_0x379afa){return _0x379afa['destroy']()[_0xd358('0x23')](function(){_0xd375ce[_0xd358('0x18')](0xcc)[_0xd358('0x24')]();});}};}function handleEntityNotFound(_0x2109f0,_0x29983f){return function(_0x290b45){if(!_0x290b45){_0x2109f0[_0xd358('0x25')](0x194);}return _0x290b45;};}function handleError(_0x4c95f5,_0x383082){_0x383082=_0x383082||0x1f4;return function(_0x42717d){logger[_0xd358('0x26')](_0x42717d[_0xd358('0x27')]);if(_0x42717d['name']){delete _0x42717d[_0xd358('0x28')];}_0x4c95f5[_0xd358('0x18')](_0x383082)['send'](_0x42717d);};}exports[_0xd358('0x29')]=function(_0x468f79,_0x125996){var _0x3046a0={},_0x42aeac={},_0x2eca86={'count':0x0,'rows':[]};var _0x5480ef=_[_0xd358('0x2a')](db[_0xd358('0x2b')][_0xd358('0x2c')],function(_0x560b98){return{'name':_0x560b98[_0xd358('0x2d')],'type':_0x560b98[_0xd358('0x2e')][_0xd358('0x2f')]};});_0x42aeac[_0xd358('0x30')]=_[_0xd358('0x2a')](_0x5480ef,_0xd358('0x28'));_0x42aeac[_0xd358('0x31')]=_[_0xd358('0x32')](_0x468f79[_0xd358('0x31')]);_0x42aeac[_0xd358('0x33')]=_['intersection'](_0x42aeac[_0xd358('0x30')],_0x42aeac['query']);_0x3046a0[_0xd358('0x34')]=_['intersection'](_0x42aeac[_0xd358('0x30')],qs[_0xd358('0x35')](_0x468f79[_0xd358('0x31')][_0xd358('0x35')]));_0x3046a0['attributes']=_0x3046a0[_0xd358('0x34')][_0xd358('0x36')]?_0x3046a0[_0xd358('0x34')]:_0x42aeac[_0xd358('0x30')];if(!_0x468f79['query']['hasOwnProperty'](_0xd358('0x37'))){_0x3046a0[_0xd358('0x1a')]=qs[_0xd358('0x1a')](_0x468f79['query']['limit']);_0x3046a0[_0xd358('0x1c')]=qs[_0xd358('0x1c')](_0x468f79[_0xd358('0x31')]['offset']);}_0x3046a0[_0xd358('0x38')]=qs['sort'](_0x468f79[_0xd358('0x31')][_0xd358('0x39')]);_0x3046a0[_0xd358('0x3a')]=qs['filters'](_[_0xd358('0x3b')](_0x468f79['query'],_0x42aeac[_0xd358('0x33')]),_0x5480ef);if(_0x468f79[_0xd358('0x31')][_0xd358('0x3c')]){_0x3046a0[_0xd358('0x3a')]=_[_0xd358('0x3d')](_0x3046a0[_0xd358('0x3a')],{'$or':_[_0xd358('0x2a')](_0x5480ef,function(_0x511920){if(_0x511920[_0xd358('0x2e')]!==_0xd358('0x3e')){var _0x1d5b7b={};_0x1d5b7b[_0x511920[_0xd358('0x28')]]={'$like':'%'+_0x468f79[_0xd358('0x31')][_0xd358('0x3c')]+'%'};return _0x1d5b7b;}})});}_0x3046a0=_[_0xd358('0x3d')]({},_0x3046a0,_0x468f79[_0xd358('0x3f')]);var _0x5c615b={'where':_0x3046a0[_0xd358('0x3a')]};return db['ZohoField'][_0xd358('0x1b')](_0x5c615b)[_0xd358('0x23')](function(_0x18c0d1){_0x2eca86[_0xd358('0x1b')]=_0x18c0d1;if(_0x468f79[_0xd358('0x31')][_0xd358('0x40')]){_0x3046a0[_0xd358('0x41')]=[{'all':!![]}];}return db['ZohoField']['findAll'](_0x3046a0);})[_0xd358('0x23')](function(_0x3e89be){_0x2eca86[_0xd358('0x42')]=_0x3e89be;return _0x2eca86;})['then'](respondWithFilteredResult(_0x125996,_0x3046a0))[_0xd358('0x43')](handleError(_0x125996,null));};exports['show']=function(_0x497a34,_0x3a7756){var _0x38eebf={'raw':!![],'where':{'id':_0x497a34['params']['id']}},_0x425ca4={};_0x425ca4[_0xd358('0x30')]=_[_0xd358('0x32')](db[_0xd358('0x2b')]['rawAttributes']);_0x425ca4[_0xd358('0x31')]=_['keys'](_0x497a34[_0xd358('0x31')]);_0x425ca4[_0xd358('0x33')]=_['intersection'](_0x425ca4[_0xd358('0x30')],_0x425ca4['query']);_0x38eebf['attributes']=_[_0xd358('0x44')](_0x425ca4[_0xd358('0x30')],qs[_0xd358('0x35')](_0x497a34['query'][_0xd358('0x35')]));_0x38eebf[_0xd358('0x34')]=_0x38eebf[_0xd358('0x34')][_0xd358('0x36')]?_0x38eebf[_0xd358('0x34')]:_0x425ca4[_0xd358('0x30')];if(_0x497a34[_0xd358('0x31')]['includeAll']){_0x38eebf[_0xd358('0x41')]=[{'all':!![]}];}_0x38eebf=_[_0xd358('0x3d')]({},_0x38eebf,_0x497a34[_0xd358('0x3f')]);return db[_0xd358('0x2b')][_0xd358('0x45')](_0x38eebf)[_0xd358('0x23')](handleEntityNotFound(_0x3a7756,null))['then'](respondWithResult(_0x3a7756,null))[_0xd358('0x43')](handleError(_0x3a7756,null));};exports[_0xd358('0x46')]=function(_0x1bb160,_0x1705ac){return db['ZohoField']['create'](_0x1bb160[_0xd358('0x47')],{})[_0xd358('0x23')](respondWithResult(_0x1705ac,0xc9))['catch'](handleError(_0x1705ac,null));};exports[_0xd358('0x22')]=function(_0x783aa4,_0x261ccf){if(_0x783aa4['body']['id']){delete _0x783aa4['body']['id'];}return db[_0xd358('0x2b')]['find']({'where':{'id':_0x783aa4[_0xd358('0x48')]['id']}})['then'](handleEntityNotFound(_0x261ccf,null))[_0xd358('0x23')](saveUpdates(_0x783aa4['body'],null))[_0xd358('0x23')](respondWithResult(_0x261ccf,null))[_0xd358('0x43')](handleError(_0x261ccf,null));};exports[_0xd358('0x49')]=function(_0x5a24ec,_0x232f4a){return db[_0xd358('0x2b')][_0xd358('0x45')]({'where':{'id':_0x5a24ec['params']['id']}})['then'](handleEntityNotFound(_0x232f4a,null))[_0xd358('0x23')](removeEntity(_0x232f4a,null))[_0xd358('0x43')](handleError(_0x232f4a,null));};
\ No newline at end of file
+var _0xce0d=['jsforce','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','limit','undefined','count','apply','reject','save','update','then','sendStatus','error','stack','name','index','map','rawAttributes','fieldName','key','model','keys','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','filter','where','merge','type','VIRTUAL','options','includeAll','ZohoField','findAll','rows','params','length','include','find','catch','create','body','destroy','eml-format','rimraf','zip-dir','request-promise','moment','util','path','ejs','fs-extra','lodash','squel'];(function(_0x6751ce,_0x261da6){var _0x51b6ce=function(_0x5784b2){while(--_0x5784b2){_0x6751ce['push'](_0x6751ce['shift']());}};_0x51b6ce(++_0x261da6);}(_0xce0d,0x1e6));var _0xdce0=function(_0x1c7137,_0x4c7c26){_0x1c7137=_0x1c7137-0x0;var _0xeb4432=_0xce0d[_0x1c7137];return _0xeb4432;};'use strict';var emlformat=require(_0xdce0('0x0'));var rimraf=require(_0xdce0('0x1'));var zipdir=require(_0xdce0('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xdce0('0x3'));var moment=require(_0xdce0('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xdce0('0x5'));var path=require(_0xdce0('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xdce0('0x7'));var fs=require('fs');var fs_extra=require(_0xdce0('0x8'));var _=require(_0xdce0('0x9'));var squel=require(_0xdce0('0xa'));var crypto=require('crypto');var jsforce=require(_0xdce0('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xdce0('0xc'));var querystring=require('querystring');var Papa=require(_0xdce0('0xd'));var Redis=require(_0xdce0('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xdce0('0xf'));var as=require(_0xdce0('0x10'));var hardwareService=require(_0xdce0('0x11'));var logger=require(_0xdce0('0x12'))(_0xdce0('0x13'));var utils=require('../../config/utils');var config=require(_0xdce0('0x14'));var licenseUtil=require(_0xdce0('0x15'));var db=require(_0xdce0('0x16'))['db'];function respondWithStatusCode(_0x28138d,_0x3e0225){_0x3e0225=_0x3e0225||0xcc;return function(_0x2577c0){if(_0x2577c0){return _0x28138d['sendStatus'](_0x3e0225);}return _0x28138d[_0xdce0('0x17')](_0x3e0225)['end']();};}function respondWithResult(_0xffd8e4,_0x3f0931){_0x3f0931=_0x3f0931||0xc8;return function(_0x3045f4){if(_0x3045f4){return _0xffd8e4[_0xdce0('0x17')](_0x3f0931)[_0xdce0('0x18')](_0x3045f4);}};}function respondWithFilteredResult(_0x390afe,_0x267fa1){return function(_0x40a66b){if(_0x40a66b){var _0x54ff2d=typeof _0x267fa1[_0xdce0('0x19')]==='undefined'&&typeof _0x267fa1[_0xdce0('0x1a')]===_0xdce0('0x1b');var _0x43ba6b=_0x40a66b[_0xdce0('0x1c')];var _0x519db3=_0x54ff2d?0x0:_0x267fa1[_0xdce0('0x19')];var _0x35837c=_0x54ff2d?_0x40a66b[_0xdce0('0x1c')]:_0x267fa1['offset']+_0x267fa1[_0xdce0('0x1a')];var _0x2f7b5c;if(_0x35837c>=_0x43ba6b){_0x35837c=_0x43ba6b;_0x2f7b5c=0xc8;}else{_0x2f7b5c=0xce;}_0x390afe[_0xdce0('0x17')](_0x2f7b5c);return _0x390afe['set']('Content-Range',_0x519db3+'-'+_0x35837c+'/'+_0x43ba6b)[_0xdce0('0x18')](_0x40a66b);}return null;};}function patchUpdates(_0x2a473e){return function(_0x4782ac){try{jsonpatch[_0xdce0('0x1d')](_0x4782ac,_0x2a473e,!![]);}catch(_0x1c2507){return BPromise[_0xdce0('0x1e')](_0x1c2507);}return _0x4782ac[_0xdce0('0x1f')]();};}function saveUpdates(_0x133e53,_0x25f096){return function(_0x139db3){if(_0x139db3){return _0x139db3[_0xdce0('0x20')](_0x133e53)[_0xdce0('0x21')](function(_0x582e3e){return _0x582e3e;});}return null;};}function removeEntity(_0x385c7f,_0xe56fd6){return function(_0x1a6b09){if(_0x1a6b09){return _0x1a6b09['destroy']()[_0xdce0('0x21')](function(){_0x385c7f[_0xdce0('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x12c621,_0x23d3bb){return function(_0x8c4c51){if(!_0x8c4c51){_0x12c621[_0xdce0('0x22')](0x194);}return _0x8c4c51;};}function handleError(_0x150c81,_0x37e279){_0x37e279=_0x37e279||0x1f4;return function(_0x1c27f5){logger[_0xdce0('0x23')](_0x1c27f5[_0xdce0('0x24')]);if(_0x1c27f5[_0xdce0('0x25')]){delete _0x1c27f5[_0xdce0('0x25')];}_0x150c81[_0xdce0('0x17')](_0x37e279)['send'](_0x1c27f5);};}exports[_0xdce0('0x26')]=function(_0x1d6016,_0x2b877f){var _0x5573cb={},_0x2bf8d8={},_0x15b329={'count':0x0,'rows':[]};var _0x2985fa=_[_0xdce0('0x27')](db['ZohoField'][_0xdce0('0x28')],function(_0x34aa76){return{'name':_0x34aa76[_0xdce0('0x29')],'type':_0x34aa76['type'][_0xdce0('0x2a')]};});_0x2bf8d8[_0xdce0('0x2b')]=_[_0xdce0('0x27')](_0x2985fa,'name');_0x2bf8d8['query']=_[_0xdce0('0x2c')](_0x1d6016[_0xdce0('0x2d')]);_0x2bf8d8[_0xdce0('0x2e')]=_['intersection'](_0x2bf8d8[_0xdce0('0x2b')],_0x2bf8d8[_0xdce0('0x2d')]);_0x5573cb[_0xdce0('0x2f')]=_[_0xdce0('0x30')](_0x2bf8d8[_0xdce0('0x2b')],qs[_0xdce0('0x31')](_0x1d6016[_0xdce0('0x2d')][_0xdce0('0x31')]));_0x5573cb['attributes']=_0x5573cb['attributes']['length']?_0x5573cb['attributes']:_0x2bf8d8[_0xdce0('0x2b')];if(!_0x1d6016[_0xdce0('0x2d')][_0xdce0('0x32')](_0xdce0('0x33'))){_0x5573cb[_0xdce0('0x1a')]=qs['limit'](_0x1d6016[_0xdce0('0x2d')][_0xdce0('0x1a')]);_0x5573cb[_0xdce0('0x19')]=qs['offset'](_0x1d6016[_0xdce0('0x2d')][_0xdce0('0x19')]);}_0x5573cb['order']=qs['sort'](_0x1d6016[_0xdce0('0x2d')][_0xdce0('0x34')]);_0x5573cb['where']=qs[_0xdce0('0x2e')](_['pick'](_0x1d6016[_0xdce0('0x2d')],_0x2bf8d8[_0xdce0('0x2e')]),_0x2985fa);if(_0x1d6016[_0xdce0('0x2d')][_0xdce0('0x35')]){_0x5573cb[_0xdce0('0x36')]=_[_0xdce0('0x37')](_0x5573cb['where'],{'$or':_[_0xdce0('0x27')](_0x2985fa,function(_0xcb9b16){if(_0xcb9b16[_0xdce0('0x38')]!==_0xdce0('0x39')){var _0xcb359b={};_0xcb359b[_0xcb9b16[_0xdce0('0x25')]]={'$like':'%'+_0x1d6016[_0xdce0('0x2d')]['filter']+'%'};return _0xcb359b;}})});}_0x5573cb=_[_0xdce0('0x37')]({},_0x5573cb,_0x1d6016[_0xdce0('0x3a')]);var _0x1d1f2d={'where':_0x5573cb['where']};return db['ZohoField'][_0xdce0('0x1c')](_0x1d1f2d)['then'](function(_0x1e8671){_0x15b329[_0xdce0('0x1c')]=_0x1e8671;if(_0x1d6016[_0xdce0('0x2d')][_0xdce0('0x3b')]){_0x5573cb['include']=[{'all':!![]}];}return db[_0xdce0('0x3c')][_0xdce0('0x3d')](_0x5573cb);})[_0xdce0('0x21')](function(_0x5e1cbd){_0x15b329[_0xdce0('0x3e')]=_0x5e1cbd;return _0x15b329;})[_0xdce0('0x21')](respondWithFilteredResult(_0x2b877f,_0x5573cb))['catch'](handleError(_0x2b877f,null));};exports['show']=function(_0x10543e,_0x4745c6){var _0x4ef05c={'raw':!![],'where':{'id':_0x10543e[_0xdce0('0x3f')]['id']}},_0x1a3b25={};_0x1a3b25[_0xdce0('0x2b')]=_[_0xdce0('0x2c')](db[_0xdce0('0x3c')]['rawAttributes']);_0x1a3b25[_0xdce0('0x2d')]=_['keys'](_0x10543e[_0xdce0('0x2d')]);_0x1a3b25[_0xdce0('0x2e')]=_[_0xdce0('0x30')](_0x1a3b25['model'],_0x1a3b25['query']);_0x4ef05c[_0xdce0('0x2f')]=_[_0xdce0('0x30')](_0x1a3b25[_0xdce0('0x2b')],qs['fields'](_0x10543e[_0xdce0('0x2d')][_0xdce0('0x31')]));_0x4ef05c[_0xdce0('0x2f')]=_0x4ef05c[_0xdce0('0x2f')][_0xdce0('0x40')]?_0x4ef05c[_0xdce0('0x2f')]:_0x1a3b25[_0xdce0('0x2b')];if(_0x10543e[_0xdce0('0x2d')][_0xdce0('0x3b')]){_0x4ef05c[_0xdce0('0x41')]=[{'all':!![]}];}_0x4ef05c=_[_0xdce0('0x37')]({},_0x4ef05c,_0x10543e[_0xdce0('0x3a')]);return db[_0xdce0('0x3c')][_0xdce0('0x42')](_0x4ef05c)[_0xdce0('0x21')](handleEntityNotFound(_0x4745c6,null))[_0xdce0('0x21')](respondWithResult(_0x4745c6,null))[_0xdce0('0x43')](handleError(_0x4745c6,null));};exports[_0xdce0('0x44')]=function(_0x4e19ac,_0x2eed8b){return db[_0xdce0('0x3c')][_0xdce0('0x44')](_0x4e19ac['body'],{})['then'](respondWithResult(_0x2eed8b,0xc9))['catch'](handleError(_0x2eed8b,null));};exports['update']=function(_0x71e6a9,_0x360d80){if(_0x71e6a9[_0xdce0('0x45')]['id']){delete _0x71e6a9[_0xdce0('0x45')]['id'];}return db[_0xdce0('0x3c')][_0xdce0('0x42')]({'where':{'id':_0x71e6a9['params']['id']}})[_0xdce0('0x21')](handleEntityNotFound(_0x360d80,null))[_0xdce0('0x21')](saveUpdates(_0x71e6a9['body'],null))[_0xdce0('0x21')](respondWithResult(_0x360d80,null))[_0xdce0('0x43')](handleError(_0x360d80,null));};exports[_0xdce0('0x46')]=function(_0x105b5c,_0x21bbab){return db[_0xdce0('0x3c')]['find']({'where':{'id':_0x105b5c['params']['id']}})[_0xdce0('0x21')](handleEntityNotFound(_0x21bbab,null))[_0xdce0('0x21')](removeEntity(_0x21bbab,null))[_0xdce0('0x43')](handleError(_0x21bbab,null));};
\ No newline at end of file
index 9f57113..0598e0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6b0=['rimraf','../../config/environment','./intZohoField.attributes','exports','define','ZohoField','int_zoho_fields','zoho_unique_index','idField','FieldId','lodash','util','moment','bluebird','request-promise'];(function(_0x435887,_0x108c0c){var _0x1bc041=function(_0x41b180){while(--_0x41b180){_0x435887['push'](_0x435887['shift']());}};_0x1bc041(++_0x108c0c);}(_0xa6b0,0xaf));var _0x0a6b=function(_0x3eb59f,_0xd25c0d){_0x3eb59f=_0x3eb59f-0x0;var _0x3d2819=_0xa6b0[_0x3eb59f];return _0x3d2819;};'use strict';var _=require(_0x0a6b('0x0'));var util=require(_0x0a6b('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x0a6b('0x2'));var BPromise=require(_0x0a6b('0x3'));var rp=require(_0x0a6b('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0a6b('0x5'));var config=require(_0x0a6b('0x6'));var attributes=require(_0x0a6b('0x7'));module[_0x0a6b('0x8')]=function(_0x3dc2b0,_0x3b6967){return _0x3dc2b0[_0x0a6b('0x9')](_0x0a6b('0xa'),attributes,{'tableName':_0x0a6b('0xb'),'paranoid':![],'indexes':[{'name':_0x0a6b('0xc'),'fields':[_0x0a6b('0xd'),_0x0a6b('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x33af=['moment','bluebird','request-promise','path','rimraf','./intZohoField.attributes','exports','define','ZohoField','int_zoho_fields','zoho_unique_index','idField','util','api'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x33af,0xec));var _0xf33a=function(_0x485bad,_0x21c418){_0x485bad=_0x485bad-0x0;var _0x523c91=_0x33af[_0x485bad];return _0x523c91;};'use strict';var _=require('lodash');var util=require(_0xf33a('0x0'));var logger=require('../../config/logger')(_0xf33a('0x1'));var moment=require(_0xf33a('0x2'));var BPromise=require(_0xf33a('0x3'));var rp=require(_0xf33a('0x4'));var fs=require('fs');var path=require(_0xf33a('0x5'));var rimraf=require(_0xf33a('0x6'));var config=require('../../config/environment');var attributes=require(_0xf33a('0x7'));module[_0xf33a('0x8')]=function(_0x583e54,_0xc0dd13){return _0x583e54[_0xf33a('0x9')](_0xf33a('0xa'),attributes,{'tableName':_0xf33a('0xb'),'paranoid':![],'indexes':[{'name':_0xf33a('0xc'),'fields':[_0xf33a('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 0646b44..37198ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd1b=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','lodash','util'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xfd1b,0x1b6));var _0xbfd1=function(_0x3ddd93,_0x47f328){_0x3ddd93=_0x3ddd93-0x0;var _0x236269=_0xfd1b[_0x3ddd93];return _0x236269;};'use strict';var _=require(_0xbfd1('0x0'));var util=require(_0xbfd1('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xbfd1('0x2'));var fs=require('fs');var Redis=require(_0xbfd1('0x3'));var db=require(_0xbfd1('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xbfd1('0x5'))(_0xbfd1('0x6'));var config=require(_0xbfd1('0x7'));var jayson=require(_0xbfd1('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x485e3a,_0x240aea,_0x57362d){return new BPromise(function(_0x3bd645,_0x22f6d6){return client[_0xbfd1('0x9')](_0x485e3a,_0x57362d)[_0xbfd1('0xa')](function(_0x148cfa){logger[_0xbfd1('0xb')](_0xbfd1('0xc'),_0x240aea,_0xbfd1('0xd'));logger[_0xbfd1('0xe')]('ZohoField,\x20%s,\x20%s,\x20%s',_0x240aea,'request\x20sent',JSON[_0xbfd1('0xf')](_0x148cfa));if(_0x148cfa[_0xbfd1('0x10')]){if(_0x148cfa['error'][_0xbfd1('0x11')]===0x1f4){logger[_0xbfd1('0x10')](_0xbfd1('0xc'),_0x240aea,_0x148cfa[_0xbfd1('0x10')][_0xbfd1('0x12')]);return _0x22f6d6(_0x148cfa[_0xbfd1('0x10')][_0xbfd1('0x12')]);}logger['error'](_0xbfd1('0xc'),_0x240aea,_0x148cfa[_0xbfd1('0x10')][_0xbfd1('0x12')]);return _0x3bd645(_0x148cfa['error'][_0xbfd1('0x12')]);}else{logger[_0xbfd1('0xb')](_0xbfd1('0xc'),_0x240aea,_0xbfd1('0xd'));_0x3bd645(_0x148cfa[_0xbfd1('0x13')][_0xbfd1('0x12')]);}})['catch'](function(_0x285231){logger[_0xbfd1('0x10')](_0xbfd1('0xc'),_0x240aea,_0x285231);_0x22f6d6(_0x285231);});});}
\ No newline at end of file
+var _0xcab5=['ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','http','request','then','ZohoField,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xcab5,0xcd));var _0x5cab=function(_0x12ed9f,_0x59d900){_0x12ed9f=_0x12ed9f-0x0;var _0x28db1d=_0xcab5[_0x12ed9f];return _0x28db1d;};'use strict';var _=require(_0x5cab('0x0'));var util=require(_0x5cab('0x1'));var moment=require(_0x5cab('0x2'));var BPromise=require(_0x5cab('0x3'));var rs=require(_0x5cab('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5cab('0x5'))['db'];var utils=require(_0x5cab('0x6'));var logger=require('../../config/logger')(_0x5cab('0x7'));var config=require('../../config/environment');var jayson=require(_0x5cab('0x8'));var client=jayson['client'][_0x5cab('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x545615,_0x323592,_0x31444f){return new BPromise(function(_0x5da7e6,_0x5854ae){return client[_0x5cab('0xa')](_0x545615,_0x31444f)[_0x5cab('0xb')](function(_0x359763){logger['info'](_0x5cab('0xc'),_0x323592,_0x5cab('0xd'));logger[_0x5cab('0xe')](_0x5cab('0xf'),_0x323592,_0x5cab('0xd'),JSON[_0x5cab('0x10')](_0x359763));if(_0x359763[_0x5cab('0x11')]){if(_0x359763[_0x5cab('0x11')]['code']===0x1f4){logger[_0x5cab('0x11')](_0x5cab('0xc'),_0x323592,_0x359763['error'][_0x5cab('0x12')]);return _0x5854ae(_0x359763[_0x5cab('0x11')][_0x5cab('0x12')]);}logger['error']('ZohoField,\x20%s,\x20%s',_0x323592,_0x359763[_0x5cab('0x11')][_0x5cab('0x12')]);return _0x5da7e6(_0x359763[_0x5cab('0x11')][_0x5cab('0x12')]);}else{logger[_0x5cab('0x13')](_0x5cab('0xc'),_0x323592,'request\x20sent');_0x5da7e6(_0x359763[_0x5cab('0x14')][_0x5cab('0x12')]);}})[_0x5cab('0x15')](function(_0x133b9a){logger[_0x5cab('0x11')](_0x5cab('0xc'),_0x323592,_0x133b9a);_0x5854ae(_0x133b9a);});});}
\ No newline at end of file
index 27b0ea5..e892833 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(_0x2ec727,_0x42bbe0){var _0x598bc9=function(_0xc4542c){while(--_0xc4542c){_0x2ec727['push'](_0x2ec727['shift']());}};_0x598bc9(++_0x42bbe0);}(_0xe706,0xa3));var _0x6e70=function(_0xfcbf57,_0x4b05fd){_0xfcbf57=_0xfcbf57-0x0;var _0x1078fa=_0xe706[_0xfcbf57];return _0x1078fa;};'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 _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x220b8a,_0x1e0b2d){var _0x2f57c7=function(_0x4beb23){while(--_0x4beb23){_0x220b8a['push'](_0x220b8a['shift']());}};_0x2f57c7(++_0x1e0b2d);}(_0xe706,0xa3));var _0x6e70=function(_0x19dd8a,_0x4af545){_0x19dd8a=_0x19dd8a-0x0;var _0x6245d3=_0xe706[_0x19dd8a];return _0x6245d3;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
index 8f43e01..4ae30c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecb7=['STRING','unique_name_and_version','BOOLEAN','state','sequelize'];(function(_0x5800a5,_0x2823f6){var _0x420c85=function(_0x42e2e7){while(--_0x42e2e7){_0x5800a5['push'](_0x5800a5['shift']());}};_0x420c85(++_0x2823f6);}(_0xecb7,0xdb));var _0x7ecb=function(_0x24eacb,_0x4a1bce){_0x24eacb=_0x24eacb-0x0;var _0xb5df1=_0xecb7[_0x24eacb];return _0xb5df1;};'use strict';var Sequelize=require(_0x7ecb('0x0'));module['exports']={'name':{'type':Sequelize[_0x7ecb('0x1')],'allowNull':![],'unique':_0x7ecb('0x2')},'version':{'type':Sequelize[_0x7ecb('0x1')],'allowNull':![],'unique':_0x7ecb('0x2')},'main':{'type':Sequelize['STRING'],'defaultValue':'app.js'},'filename':{'type':Sequelize[_0x7ecb('0x1')]},'path':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x7ecb('0x1')]},'size':{'type':Sequelize['INTEGER']},'active':{'type':Sequelize[_0x7ecb('0x3')],'defaultValue':![]},'author':{'type':Sequelize[_0x7ecb('0x1')]},'logo':{'type':Sequelize[_0x7ecb('0x1')]},'state':{'type':Sequelize[_0x7ecb('0x1')],'unique':_0x7ecb('0x4')},'description':{'type':Sequelize['STRING']},'title':{'type':Sequelize[_0x7ecb('0x1')]},'remoteUri':{'type':Sequelize[_0x7ecb('0x1')]},'link':{'type':Sequelize[_0x7ecb('0x1')],'defaultValue':'#'}};
\ No newline at end of file
+var _0x6635=['app.js','INTEGER','BOOLEAN','state','exports','STRING','unique_name_and_version'];(function(_0x3239a4,_0x3eb4d1){var _0x45d773=function(_0x39df47){while(--_0x39df47){_0x3239a4['push'](_0x3239a4['shift']());}};_0x45d773(++_0x3eb4d1);}(_0x6635,0x90));var _0x5663=function(_0x1b6c6d,_0x2983b0){_0x1b6c6d=_0x1b6c6d-0x0;var _0x290d9d=_0x6635[_0x1b6c6d];return _0x290d9d;};'use strict';var Sequelize=require('sequelize');module[_0x5663('0x0')]={'name':{'type':Sequelize[_0x5663('0x1')],'allowNull':![],'unique':_0x5663('0x2')},'version':{'type':Sequelize[_0x5663('0x1')],'allowNull':![],'unique':'unique_name_and_version'},'main':{'type':Sequelize[_0x5663('0x1')],'defaultValue':_0x5663('0x3')},'filename':{'type':Sequelize[_0x5663('0x1')]},'path':{'type':Sequelize[_0x5663('0x1')]},'type':{'type':Sequelize['STRING']},'size':{'type':Sequelize[_0x5663('0x4')]},'active':{'type':Sequelize[_0x5663('0x5')],'defaultValue':![]},'author':{'type':Sequelize['STRING']},'logo':{'type':Sequelize[_0x5663('0x1')]},'state':{'type':Sequelize[_0x5663('0x1')],'unique':_0x5663('0x6')},'description':{'type':Sequelize[_0x5663('0x1')]},'title':{'type':Sequelize[_0x5663('0x1')]},'remoteUri':{'type':Sequelize[_0x5663('0x1')]},'link':{'type':Sequelize['STRING'],'defaultValue':'#'}};
\ No newline at end of file
index 4b2b0a7..0f8b5c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4991=['intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','type','filter','options','Integration','includeAll','include','findAll','rows','show','params','keys','find','create','body','catch','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','map','rawAttributes','fieldName','key','model','query','filters'];(function(_0x4dc7f5,_0x312c14){var _0x3e37db=function(_0x820d0e){while(--_0x820d0e){_0x4dc7f5['push'](_0x4dc7f5['shift']());}};_0x3e37db(++_0x312c14);}(_0x4991,0xf7));var _0x1499=function(_0x17019f,_0x1e2237){_0x17019f=_0x17019f-0x0;var _0x4889c9=_0x4991[_0x17019f];return _0x4889c9;};'use strict';var emlformat=require(_0x1499('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1499('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1499('0x2'));var moment=require(_0x1499('0x3'));var BPromise=require(_0x1499('0x4'));var Mustache=require(_0x1499('0x5'));var util=require(_0x1499('0x6'));var path=require(_0x1499('0x7'));var sox=require(_0x1499('0x8'));var csv=require(_0x1499('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1499('0xa'));var _=require(_0x1499('0xb'));var squel=require(_0x1499('0xc'));var crypto=require(_0x1499('0xd'));var jsforce=require(_0x1499('0xe'));var deskjs=require(_0x1499('0xf'));var toCsv=require(_0x1499('0x9'));var querystring=require(_0x1499('0x10'));var Papa=require('papaparse');var Redis=require(_0x1499('0x11'));var authService=require(_0x1499('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x1499('0x13'));var hardwareService=require(_0x1499('0x14'));var logger=require('../../config/logger')(_0x1499('0x15'));var utils=require(_0x1499('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3039ce,_0x274bc1){_0x274bc1=_0x274bc1||0xcc;return function(_0x34a928){if(_0x34a928){return _0x3039ce[_0x1499('0x17')](_0x274bc1);}return _0x3039ce[_0x1499('0x18')](_0x274bc1)['end']();};}function respondWithResult(_0x5f34f2,_0x308177){_0x308177=_0x308177||0xc8;return function(_0x4e5195){if(_0x4e5195){return _0x5f34f2[_0x1499('0x18')](_0x308177)[_0x1499('0x19')](_0x4e5195);}};}function respondWithFilteredResult(_0x308318,_0x3ab605){return function(_0x48f654){if(_0x48f654){var _0x1ed43b=typeof _0x3ab605[_0x1499('0x1a')]==='undefined'&&typeof _0x3ab605[_0x1499('0x1b')]===_0x1499('0x1c');var _0x46b364=_0x48f654[_0x1499('0x1d')];var _0x1e45a9=_0x1ed43b?0x0:_0x3ab605[_0x1499('0x1a')];var _0x5b9859=_0x1ed43b?_0x48f654['count']:_0x3ab605['offset']+_0x3ab605[_0x1499('0x1b')];var _0xad534b;if(_0x5b9859>=_0x46b364){_0x5b9859=_0x46b364;_0xad534b=0xc8;}else{_0xad534b=0xce;}_0x308318['status'](_0xad534b);return _0x308318[_0x1499('0x1e')](_0x1499('0x1f'),_0x1e45a9+'-'+_0x5b9859+'/'+_0x46b364)[_0x1499('0x19')](_0x48f654);}return null;};}function patchUpdates(_0x18e4a6){return function(_0x21e887){try{jsonpatch[_0x1499('0x20')](_0x21e887,_0x18e4a6,!![]);}catch(_0x2b0458){return BPromise[_0x1499('0x21')](_0x2b0458);}return _0x21e887[_0x1499('0x22')]();};}function saveUpdates(_0x15bcd4,_0x2bb71f){return function(_0x836081){if(_0x836081){return _0x836081[_0x1499('0x23')](_0x15bcd4)[_0x1499('0x24')](function(_0x4ec57a){return _0x4ec57a;});}return null;};}function removeEntity(_0x1e2c51,_0x2c7f57){return function(_0x5615b4){if(_0x5615b4){return _0x5615b4[_0x1499('0x25')]()[_0x1499('0x24')](function(){_0x1e2c51[_0x1499('0x18')](0xcc)[_0x1499('0x26')]();});}};}function handleEntityNotFound(_0x3968e0,_0x16d036){return function(_0x54f3c2){if(!_0x54f3c2){_0x3968e0['sendStatus'](0x194);}return _0x54f3c2;};}function handleError(_0x12739b,_0x3c9aca){_0x3c9aca=_0x3c9aca||0x1f4;return function(_0x3b9259){logger[_0x1499('0x27')](_0x3b9259[_0x1499('0x28')]);if(_0x3b9259['name']){delete _0x3b9259[_0x1499('0x29')];}_0x12739b['status'](_0x3c9aca)['send'](_0x3b9259);};}exports['index']=function(_0x21d204,_0x103efa){var _0x40932a={},_0x1b460b={},_0x3dad86={'count':0x0,'rows':[]};var _0x388513=_[_0x1499('0x2a')](db['Integration'][_0x1499('0x2b')],function(_0x1a2c99){return{'name':_0x1a2c99[_0x1499('0x2c')],'type':_0x1a2c99['type'][_0x1499('0x2d')]};});_0x1b460b[_0x1499('0x2e')]=_['map'](_0x388513,_0x1499('0x29'));_0x1b460b[_0x1499('0x2f')]=_['keys'](_0x21d204[_0x1499('0x2f')]);_0x1b460b[_0x1499('0x30')]=_[_0x1499('0x31')](_0x1b460b[_0x1499('0x2e')],_0x1b460b[_0x1499('0x2f')]);_0x40932a[_0x1499('0x32')]=_[_0x1499('0x31')](_0x1b460b[_0x1499('0x2e')],qs[_0x1499('0x33')](_0x21d204[_0x1499('0x2f')][_0x1499('0x33')]));_0x40932a[_0x1499('0x32')]=_0x40932a[_0x1499('0x32')][_0x1499('0x34')]?_0x40932a[_0x1499('0x32')]:_0x1b460b[_0x1499('0x2e')];if(!_0x21d204[_0x1499('0x2f')][_0x1499('0x35')](_0x1499('0x36'))){_0x40932a[_0x1499('0x1b')]=qs['limit'](_0x21d204[_0x1499('0x2f')][_0x1499('0x1b')]);_0x40932a[_0x1499('0x1a')]=qs[_0x1499('0x1a')](_0x21d204[_0x1499('0x2f')][_0x1499('0x1a')]);}_0x40932a[_0x1499('0x37')]=qs[_0x1499('0x38')](_0x21d204[_0x1499('0x2f')][_0x1499('0x38')]);_0x40932a[_0x1499('0x39')]=qs['filters'](_['pick'](_0x21d204[_0x1499('0x2f')],_0x1b460b['filters']),_0x388513);if(_0x21d204[_0x1499('0x2f')]['filter']){_0x40932a[_0x1499('0x39')]=_[_0x1499('0x3a')](_0x40932a[_0x1499('0x39')],{'$or':_[_0x1499('0x2a')](_0x388513,function(_0x531933){if(_0x531933[_0x1499('0x3b')]!=='VIRTUAL'){var _0x2f9c59={};_0x2f9c59[_0x531933[_0x1499('0x29')]]={'$like':'%'+_0x21d204[_0x1499('0x2f')][_0x1499('0x3c')]+'%'};return _0x2f9c59;}})});}_0x40932a=_['merge']({},_0x40932a,_0x21d204[_0x1499('0x3d')]);var _0x815a99={'where':_0x40932a[_0x1499('0x39')]};return db[_0x1499('0x3e')]['count'](_0x815a99)[_0x1499('0x24')](function(_0x4cc411){_0x3dad86[_0x1499('0x1d')]=_0x4cc411;if(_0x21d204[_0x1499('0x2f')][_0x1499('0x3f')]){_0x40932a[_0x1499('0x40')]=[{'all':!![]}];}return db[_0x1499('0x3e')][_0x1499('0x41')](_0x40932a);})[_0x1499('0x24')](function(_0xcb85eb){_0x3dad86[_0x1499('0x42')]=_0xcb85eb;return _0x3dad86;})[_0x1499('0x24')](respondWithFilteredResult(_0x103efa,_0x40932a))['catch'](handleError(_0x103efa,null));};exports[_0x1499('0x43')]=function(_0x5dd36c,_0x2cfdaf){var _0x1af1a1={'raw':![],'where':{'id':_0x5dd36c[_0x1499('0x44')]['id']}},_0x5646cf={};_0x5646cf[_0x1499('0x2e')]=_[_0x1499('0x45')](db[_0x1499('0x3e')][_0x1499('0x2b')]);_0x5646cf['query']=_['keys'](_0x5dd36c[_0x1499('0x2f')]);_0x5646cf[_0x1499('0x30')]=_['intersection'](_0x5646cf[_0x1499('0x2e')],_0x5646cf[_0x1499('0x2f')]);_0x1af1a1['attributes']=_['intersection'](_0x5646cf[_0x1499('0x2e')],qs[_0x1499('0x33')](_0x5dd36c[_0x1499('0x2f')]['fields']));_0x1af1a1[_0x1499('0x32')]=_0x1af1a1[_0x1499('0x32')][_0x1499('0x34')]?_0x1af1a1[_0x1499('0x32')]:_0x5646cf['model'];if(_0x5dd36c[_0x1499('0x2f')][_0x1499('0x3f')]){_0x1af1a1[_0x1499('0x40')]=[{'all':!![]}];}_0x1af1a1=_[_0x1499('0x3a')]({},_0x1af1a1,_0x5dd36c['options']);return db[_0x1499('0x3e')][_0x1499('0x46')](_0x1af1a1)[_0x1499('0x24')](handleEntityNotFound(_0x2cfdaf,null))['then'](respondWithResult(_0x2cfdaf,null))['catch'](handleError(_0x2cfdaf,null));};exports[_0x1499('0x47')]=function(_0x491777,_0x7fa101){return db[_0x1499('0x3e')][_0x1499('0x47')](_0x491777[_0x1499('0x48')],{})[_0x1499('0x24')](respondWithResult(_0x7fa101,0xc9))[_0x1499('0x49')](handleError(_0x7fa101,null));};exports[_0x1499('0x23')]=function(_0x591aa8,_0x420d16){if(_0x591aa8['body']['id']){delete _0x591aa8[_0x1499('0x48')]['id'];}return db[_0x1499('0x3e')]['find']({'where':{'id':_0x591aa8[_0x1499('0x44')]['id']}})[_0x1499('0x24')](handleEntityNotFound(_0x420d16,null))[_0x1499('0x24')](saveUpdates(_0x591aa8['body'],null))[_0x1499('0x24')](respondWithResult(_0x420d16,null))[_0x1499('0x49')](handleError(_0x420d16,null));};exports[_0x1499('0x25')]=function(_0x29ac0f,_0x305599){return db[_0x1499('0x3e')][_0x1499('0x46')]({'where':{'id':_0x29ac0f[_0x1499('0x44')]['id']}})[_0x1499('0x24')](handleEntityNotFound(_0x305599,null))[_0x1499('0x24')](removeEntity(_0x305599,null))['catch'](handleError(_0x305599,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(_0xfeb2c1,_0x59e500){var _0x569da7=function(_0x5b2e22){while(--_0x5b2e22){_0xfeb2c1['push'](_0xfeb2c1['shift']());}};_0x569da7(++_0x59e500);}(_0x57ca,0x108));var _0xa57c=function(_0x1e31aa,_0x169602){_0x1e31aa=_0x1e31aa-0x0;var _0x13dc54=_0x57ca[_0x1e31aa];return _0x13dc54;};'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 b98f884..a872529 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc02f=['bluebird','request-promise','path','rimraf','./integration.attributes','exports','integrations','lodash','util','../../config/logger','api','moment'];(function(_0x4a68bd,_0x702597){var _0x32a81a=function(_0x3b0bd2){while(--_0x3b0bd2){_0x4a68bd['push'](_0x4a68bd['shift']());}};_0x32a81a(++_0x702597);}(_0xc02f,0x1db));var _0xfc02=function(_0x184a0a,_0x4802cb){_0x184a0a=_0x184a0a-0x0;var _0x2af1b4=_0xc02f[_0x184a0a];return _0x2af1b4;};'use strict';var _=require(_0xfc02('0x0'));var util=require(_0xfc02('0x1'));var logger=require(_0xfc02('0x2'))(_0xfc02('0x3'));var moment=require(_0xfc02('0x4'));var BPromise=require(_0xfc02('0x5'));var rp=require(_0xfc02('0x6'));var fs=require('fs');var path=require(_0xfc02('0x7'));var rimraf=require(_0xfc02('0x8'));var config=require('../../config/environment');var attributes=require(_0xfc02('0x9'));module[_0xfc02('0xa')]=function(_0x2dccbe,_0x5dcb0e){return _0x2dccbe['define']('Integration',attributes,{'tableName':_0xfc02('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa138=['../../config/environment','./integration.attributes','exports','integrations','lodash','util','../../config/logger','api','bluebird','rimraf'];(function(_0x1303b6,_0x3d7288){var _0x4a983f=function(_0x77db26){while(--_0x77db26){_0x1303b6['push'](_0x1303b6['shift']());}};_0x4a983f(++_0x3d7288);}(_0xa138,0x7c));var _0x8a13=function(_0x1ae0d5,_0x5d9a7b){_0x1ae0d5=_0x1ae0d5-0x0;var _0x48e447=_0xa138[_0x1ae0d5];return _0x48e447;};'use strict';var _=require(_0x8a13('0x0'));var util=require(_0x8a13('0x1'));var logger=require(_0x8a13('0x2'))(_0x8a13('0x3'));var moment=require('moment');var BPromise=require(_0x8a13('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x8a13('0x5'));var config=require(_0x8a13('0x6'));var attributes=require(_0x8a13('0x7'));module[_0x8a13('0x8')]=function(_0x5f3c66,_0xa2b7dc){return _0x5f3c66['define']('Integration',attributes,{'tableName':_0x8a13('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 638384d..2866292 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6ac=['http','request','then','info','Integration,\x20%s,\x20%s','debug','Integration,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x5cfbe7,_0x3b797d){var _0x5dda41=function(_0x344040){while(--_0x344040){_0x5cfbe7['push'](_0x5cfbe7['shift']());}};_0x5dda41(++_0x3b797d);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x4c7e7f,_0x5b9533){_0x4c7e7f=_0x4c7e7f-0x0;var _0x3aefb9=_0xc6ac[_0x4c7e7f];return _0x3aefb9;};'use strict';var _=require(_0xcc6a('0x0'));var util=require(_0xcc6a('0x1'));var moment=require(_0xcc6a('0x2'));var BPromise=require(_0xcc6a('0x3'));var rs=require(_0xcc6a('0x4'));var fs=require('fs');var Redis=require(_0xcc6a('0x5'));var db=require(_0xcc6a('0x6'))['db'];var utils=require(_0xcc6a('0x7'));var logger=require(_0xcc6a('0x8'))(_0xcc6a('0x9'));var config=require(_0xcc6a('0xa'));var jayson=require(_0xcc6a('0xb'));var client=jayson[_0xcc6a('0xc')][_0xcc6a('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x5f3887,_0x3dd497,_0x11b919){return new BPromise(function(_0xf02261,_0x560cc4){return client[_0xcc6a('0xe')](_0x5f3887,_0x11b919)[_0xcc6a('0xf')](function(_0x7806a0){logger[_0xcc6a('0x10')](_0xcc6a('0x11'),_0x3dd497,'request\x20sent');logger[_0xcc6a('0x12')](_0xcc6a('0x13'),_0x3dd497,_0xcc6a('0x14'),JSON['stringify'](_0x7806a0));if(_0x7806a0[_0xcc6a('0x15')]){if(_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x16')]===0x1f4){logger['error']('Integration,\x20%s,\x20%s',_0x3dd497,_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x17')]);return _0x560cc4(_0x7806a0[_0xcc6a('0x15')]['message']);}logger['error'](_0xcc6a('0x11'),_0x3dd497,_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x17')]);return _0xf02261(_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x17')]);}else{logger[_0xcc6a('0x10')](_0xcc6a('0x11'),_0x3dd497,_0xcc6a('0x14'));_0xf02261(_0x7806a0['result']['message']);}})['catch'](function(_0x395a55){logger[_0xcc6a('0x15')](_0xcc6a('0x11'),_0x3dd497,_0x395a55);_0x560cc4(_0x395a55);});});}
\ No newline at end of file
+var _0x524e=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Integration,\x20%s,\x20%s','request\x20sent','debug','Integration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','moment','bluebird'];(function(_0x2d9c6a,_0x59393d){var _0xf3c918=function(_0x4f3f26){while(--_0x4f3f26){_0x2d9c6a['push'](_0x2d9c6a['shift']());}};_0xf3c918(++_0x59393d);}(_0x524e,0x15e));var _0xe524=function(_0x5d61c7,_0x472679){_0x5d61c7=_0x5d61c7-0x0;var _0x4f978d=_0x524e[_0x5d61c7];return _0x4f978d;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe524('0x0'));var BPromise=require(_0xe524('0x1'));var rs=require(_0xe524('0x2'));var fs=require('fs');var Redis=require(_0xe524('0x3'));var db=require(_0xe524('0x4'))['db'];var utils=require(_0xe524('0x5'));var logger=require(_0xe524('0x6'))(_0xe524('0x7'));var config=require(_0xe524('0x8'));var jayson=require(_0xe524('0x9'));var client=jayson['client'][_0xe524('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x41e1a3,_0x347bed,_0x533c14){return new BPromise(function(_0x384935,_0x3e4cda){return client[_0xe524('0xb')](_0x41e1a3,_0x533c14)[_0xe524('0xc')](function(_0x991924){logger[_0xe524('0xd')](_0xe524('0xe'),_0x347bed,_0xe524('0xf'));logger[_0xe524('0x10')](_0xe524('0x11'),_0x347bed,_0xe524('0xf'),JSON[_0xe524('0x12')](_0x991924));if(_0x991924[_0xe524('0x13')]){if(_0x991924[_0xe524('0x13')][_0xe524('0x14')]===0x1f4){logger[_0xe524('0x13')]('Integration,\x20%s,\x20%s',_0x347bed,_0x991924['error'][_0xe524('0x15')]);return _0x3e4cda(_0x991924[_0xe524('0x13')][_0xe524('0x15')]);}logger[_0xe524('0x13')](_0xe524('0xe'),_0x347bed,_0x991924['error'][_0xe524('0x15')]);return _0x384935(_0x991924['error'][_0xe524('0x15')]);}else{logger[_0xe524('0xd')]('Integration,\x20%s,\x20%s',_0x347bed,_0xe524('0xf'));_0x384935(_0x991924['result'][_0xe524('0x15')]);}})['catch'](function(_0x29a031){logger['error']('Integration,\x20%s,\x20%s',_0x347bed,_0x29a031);_0x3e4cda(_0x29a031);});});}
\ No newline at end of file
index 0405ca2..a89462d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d38=['path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./integrationReport.controller','isAuthenticated','index','get','/describe','/:id','create','update','destroy','exports','util'];(function(_0x1323f5,_0x10c6c3){var _0x17597e=function(_0x484458){while(--_0x484458){_0x1323f5['push'](_0x1323f5['shift']());}};_0x17597e(++_0x10c6c3);}(_0x6d38,0x1ef));var _0x86d3=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0x6d38[_0x31e29a];return _0x32d892;};'use strict';var multer=require('multer');var util=require(_0x86d3('0x0'));var path=require(_0x86d3('0x1'));var timeout=require(_0x86d3('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x86d3('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x86d3('0x4'));var config=require(_0x86d3('0x5'));var controller=require(_0x86d3('0x6'));router['get']('/',auth[_0x86d3('0x7')](),controller[_0x86d3('0x8')]);router[_0x86d3('0x9')](_0x86d3('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x86d3('0x9')](_0x86d3('0xb'),auth[_0x86d3('0x7')](),controller['show']);router['post']('/',auth[_0x86d3('0x7')](),controller[_0x86d3('0xc')]);router['put']('/:id',auth[_0x86d3('0x7')](),controller[_0x86d3('0xd')]);router['delete'](_0x86d3('0xb'),auth['isAuthenticated'](),controller[_0x86d3('0xe')]);module[_0x86d3('0xf')]=router;
\ No newline at end of file
+var _0xe2fe=['describe','/:id','post','update','destroy','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe'];(function(_0x5ef161,_0x27d16c){var _0x1c6e9e=function(_0x8fc2a6){while(--_0x8fc2a6){_0x5ef161['push'](_0x5ef161['shift']());}};_0x1c6e9e(++_0x27d16c);}(_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('./integrationReport.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('0xc')]('/',auth[_0xee2f('0x8')](),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller[_0xee2f('0xd')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xee2f('0xe')]);module[_0xee2f('0xf')]=router;
\ No newline at end of file
index aa5193e..0f19e53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a9f=['sequelize','exports','STRING','INTEGER','DATE','BOOLEAN','TEXT','ENUM','SENDING','RECEIVED','FAILED'];(function(_0xf0bcac,_0x531755){var _0x4e4c65=function(_0x35a77a){while(--_0x35a77a){_0xf0bcac['push'](_0xf0bcac['shift']());}};_0x4e4c65(++_0x531755);}(_0x9a9f,0x113));var _0xf9a9=function(_0x11b9c9,_0x37fced){_0x11b9c9=_0x11b9c9-0x0;var _0x4509cb=_0x9a9f[_0x11b9c9];return _0x4509cb;};'use strict';var Sequelize=require(_0xf9a9('0x0'));module[_0xf9a9('0x1')]={'integration':{'type':Sequelize[_0xf9a9('0x2')]},'eventChannel':{'type':Sequelize[_0xf9a9('0x2')]},'exitStatus':{'type':Sequelize['STRING']},'ticketId':{'type':Sequelize[_0xf9a9('0x2')]},'integrationId':{'type':Sequelize[_0xf9a9('0x3')]},'contacts':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xf9a9('0x2')]},'calleridnum':{'type':Sequelize[_0xf9a9('0x2')]},'calleridname':{'type':Sequelize[_0xf9a9('0x2')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0xf9a9('0x2')]},'membername':{'type':Sequelize[_0xf9a9('0x2')]},'agentcalledAt':{'type':Sequelize[_0xf9a9('0x4')]},'agentconnectAt':{'type':Sequelize[_0xf9a9('0x4')]},'holdtime':{'type':Sequelize[_0xf9a9('0x3')]},'agentcomplete':{'type':Sequelize[_0xf9a9('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0xf9a9('0x4')]},'talktime':{'type':Sequelize['INTEGER']},'agentacw':{'type':Sequelize[_0xf9a9('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xf9a9('0x3')]},'reason':{'type':Sequelize[_0xf9a9('0x2')]},'agentringnoanswer':{'type':Sequelize[_0xf9a9('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0xf9a9('0x4')]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdumpAt':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize[_0xf9a9('0x2')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0xf9a9('0x2')]},'connectedlinenum':{'type':Sequelize[_0xf9a9('0x2')]},'connectedlinename':{'type':Sequelize[_0xf9a9('0x2')]},'language':{'type':Sequelize[_0xf9a9('0x2')]},'accountcode':{'type':Sequelize[_0xf9a9('0x2')]},'context':{'type':Sequelize[_0xf9a9('0x2')]},'exten':{'type':Sequelize[_0xf9a9('0x2')]},'priority':{'type':Sequelize[_0xf9a9('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0xf9a9('0x2')]},'destcalleridname':{'type':Sequelize[_0xf9a9('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xf9a9('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xf9a9('0x2')]},'destlanguage':{'type':Sequelize[_0xf9a9('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0xf9a9('0x2')]},'destexten':{'type':Sequelize[_0xf9a9('0x2')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize[_0xf9a9('0x2')]},'messageId':{'type':Sequelize[_0xf9a9('0x2')]},'inReplyTo':{'type':Sequelize[_0xf9a9('0x2')]},'subject':{'type':Sequelize['STRING']},'from':{'type':Sequelize[_0xf9a9('0x2')]},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0xf9a9('0x2')]},'attachment':{'type':Sequelize[_0xf9a9('0x6')]},'html':{'type':Sequelize[_0xf9a9('0x6')]},'text':{'type':Sequelize[_0xf9a9('0x6')]},'status':{'type':Sequelize[_0xf9a9('0x7')]('SENT',_0xf9a9('0x8'),_0xf9a9('0x9'),_0xf9a9('0xa'))},'url':{'type':Sequelize[_0xf9a9('0x2')]},'app':{'type':Sequelize[_0xf9a9('0x2')]},'appdata':{'type':Sequelize[_0xf9a9('0x2')]},'projectId':{'type':Sequelize[_0xf9a9('0x3')]}};
\ No newline at end of file
+var _0xb10a=['BOOLEAN','TEXT','ENUM','SENT','SENDING','RECEIVED','FAILED','sequelize','exports','STRING','INTEGER','DATE'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xb10a,0x73));var _0xab10=function(_0x52ebb0,_0x2b13ca){_0x52ebb0=_0x52ebb0-0x0;var _0x230177=_0xb10a[_0x52ebb0];return _0x230177;};'use strict';var Sequelize=require(_0xab10('0x0'));module[_0xab10('0x1')]={'integration':{'type':Sequelize[_0xab10('0x2')]},'eventChannel':{'type':Sequelize['STRING']},'exitStatus':{'type':Sequelize[_0xab10('0x2')]},'ticketId':{'type':Sequelize[_0xab10('0x2')]},'integrationId':{'type':Sequelize[_0xab10('0x3')]},'contacts':{'type':Sequelize[_0xab10('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xab10('0x2')]},'calleridname':{'type':Sequelize[_0xab10('0x2')]},'queue':{'type':Sequelize[_0xab10('0x2')]},'interface':{'type':Sequelize[_0xab10('0x2')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0xab10('0x4')]},'holdtime':{'type':Sequelize[_0xab10('0x3')]},'agentcomplete':{'type':Sequelize[_0xab10('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize['DATE']},'talktime':{'type':Sequelize['INTEGER']},'agentacw':{'type':Sequelize[_0xab10('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xab10('0x3')]},'reason':{'type':Sequelize[_0xab10('0x2')]},'agentringnoanswer':{'type':Sequelize[_0xab10('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0xab10('0x4')]},'agentdump':{'type':Sequelize[_0xab10('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0xab10('0x4')]},'lastevent':{'type':Sequelize[_0xab10('0x2')]},'channel':{'type':Sequelize[_0xab10('0x2')]},'channelstate':{'type':Sequelize[_0xab10('0x3')]},'channelstatedesc':{'type':Sequelize[_0xab10('0x2')]},'connectedlinenum':{'type':Sequelize[_0xab10('0x2')]},'connectedlinename':{'type':Sequelize[_0xab10('0x2')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xab10('0x2')]},'exten':{'type':Sequelize[_0xab10('0x2')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0xab10('0x2')]},'destchannelstate':{'type':Sequelize[_0xab10('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0xab10('0x2')]},'destcalleridnum':{'type':Sequelize[_0xab10('0x2')]},'destcalleridname':{'type':Sequelize[_0xab10('0x2')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0xab10('0x2')]},'destlanguage':{'type':Sequelize[_0xab10('0x2')]},'destaccountcode':{'type':Sequelize[_0xab10('0x2')]},'destcontext':{'type':Sequelize[_0xab10('0x2')]},'destexten':{'type':Sequelize[_0xab10('0x2')]},'destpriority':{'type':Sequelize[_0xab10('0x2')]},'destuniqueid':{'type':Sequelize[_0xab10('0x2')]},'messageId':{'type':Sequelize[_0xab10('0x2')]},'inReplyTo':{'type':Sequelize[_0xab10('0x2')]},'subject':{'type':Sequelize[_0xab10('0x2')]},'from':{'type':Sequelize[_0xab10('0x2')]},'to':{'type':Sequelize[_0xab10('0x2')]},'cc':{'type':Sequelize[_0xab10('0x2')]},'attachment':{'type':Sequelize[_0xab10('0x6')]},'html':{'type':Sequelize[_0xab10('0x6')]},'text':{'type':Sequelize[_0xab10('0x6')]},'status':{'type':Sequelize[_0xab10('0x7')](_0xab10('0x8'),_0xab10('0x9'),_0xab10('0xa'),_0xab10('0xb'))},'url':{'type':Sequelize[_0xab10('0x2')]},'app':{'type':Sequelize['STRING']},'appdata':{'type':Sequelize[_0xab10('0x2')]},'projectId':{'type':Sequelize[_0xab10('0x3')]}};
\ No newline at end of file
index 7a08b0d..e009bca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24f7=['../../mysqldb','status','end','limit','undefined','count','offset','json','apply','reject','save','then','destroy','sendStatus','error','stack','name','send','index','map','fieldName','type','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','where','merge','VIRTUAL','filter','options','IntegrationReport','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','body','update','find','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment'];(function(_0x3ed054,_0x4d4f16){var _0x16dd95=function(_0xc0c19c){while(--_0xc0c19c){_0x3ed054['push'](_0x3ed054['shift']());}};_0x16dd95(++_0x4d4f16);}(_0x24f7,0xd2));var _0x724f=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x24f7[_0x413feb];return _0x40ee88;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x724f('0x0'));var zipdir=require(_0x724f('0x1'));var jsonpatch=require(_0x724f('0x2'));var rp=require(_0x724f('0x3'));var moment=require(_0x724f('0x4'));var BPromise=require(_0x724f('0x5'));var Mustache=require(_0x724f('0x6'));var util=require(_0x724f('0x7'));var path=require(_0x724f('0x8'));var sox=require(_0x724f('0x9'));var csv=require(_0x724f('0xa'));var ejs=require(_0x724f('0xb'));var fs=require('fs');var fs_extra=require(_0x724f('0xc'));var _=require(_0x724f('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x724f('0xe'));var deskjs=require(_0x724f('0xf'));var toCsv=require(_0x724f('0xa'));var querystring=require(_0x724f('0x10'));var Papa=require('papaparse');var Redis=require(_0x724f('0x11'));var authService=require(_0x724f('0x12'));var qs=require(_0x724f('0x13'));var as=require(_0x724f('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x724f('0x15'));var utils=require(_0x724f('0x16'));var config=require(_0x724f('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x724f('0x18'))['db'];function respondWithStatusCode(_0x4073d7,_0x22b72f){_0x22b72f=_0x22b72f||0xcc;return function(_0x23d051){if(_0x23d051){return _0x4073d7['sendStatus'](_0x22b72f);}return _0x4073d7[_0x724f('0x19')](_0x22b72f)[_0x724f('0x1a')]();};}function respondWithResult(_0xef2caa,_0x55c3db){_0x55c3db=_0x55c3db||0xc8;return function(_0x1bd2fd){if(_0x1bd2fd){return _0xef2caa[_0x724f('0x19')](_0x55c3db)['json'](_0x1bd2fd);}};}function respondWithFilteredResult(_0x119888,_0x5be65e){return function(_0x4ac03a){if(_0x4ac03a){var _0x5aa7ab=typeof _0x5be65e['offset']==='undefined'&&typeof _0x5be65e[_0x724f('0x1b')]===_0x724f('0x1c');var _0x331b43=_0x4ac03a[_0x724f('0x1d')];var _0x37c9be=_0x5aa7ab?0x0:_0x5be65e[_0x724f('0x1e')];var _0x56f4ee=_0x5aa7ab?_0x4ac03a[_0x724f('0x1d')]:_0x5be65e[_0x724f('0x1e')]+_0x5be65e[_0x724f('0x1b')];var _0x17120c;if(_0x56f4ee>=_0x331b43){_0x56f4ee=_0x331b43;_0x17120c=0xc8;}else{_0x17120c=0xce;}_0x119888[_0x724f('0x19')](_0x17120c);return _0x119888['set']('Content-Range',_0x37c9be+'-'+_0x56f4ee+'/'+_0x331b43)[_0x724f('0x1f')](_0x4ac03a);}return null;};}function patchUpdates(_0x4fbf68){return function(_0x4caff8){try{jsonpatch[_0x724f('0x20')](_0x4caff8,_0x4fbf68,!![]);}catch(_0x3e488b){return BPromise[_0x724f('0x21')](_0x3e488b);}return _0x4caff8[_0x724f('0x22')]();};}function saveUpdates(_0x985222,_0x3198f8){return function(_0x4e9ebf){if(_0x4e9ebf){return _0x4e9ebf['update'](_0x985222)[_0x724f('0x23')](function(_0x2df07e){return _0x2df07e;});}return null;};}function removeEntity(_0x1a9068,_0x2ce946){return function(_0x45cd19){if(_0x45cd19){return _0x45cd19[_0x724f('0x24')]()['then'](function(){_0x1a9068[_0x724f('0x19')](0xcc)[_0x724f('0x1a')]();});}};}function handleEntityNotFound(_0x3e0151,_0xf6b735){return function(_0x363884){if(!_0x363884){_0x3e0151[_0x724f('0x25')](0x194);}return _0x363884;};}function handleError(_0x1fff9b,_0x29259b){_0x29259b=_0x29259b||0x1f4;return function(_0x735ecf){logger[_0x724f('0x26')](_0x735ecf[_0x724f('0x27')]);if(_0x735ecf[_0x724f('0x28')]){delete _0x735ecf['name'];}_0x1fff9b[_0x724f('0x19')](_0x29259b)[_0x724f('0x29')](_0x735ecf);};}exports[_0x724f('0x2a')]=function(_0x51017b,_0x103663){var _0x182674={},_0x3b165f={},_0xc8b168={'count':0x0,'rows':[]};var _0x200631=_[_0x724f('0x2b')](db['IntegrationReport']['rawAttributes'],function(_0x9740a0){return{'name':_0x9740a0[_0x724f('0x2c')],'type':_0x9740a0[_0x724f('0x2d')]['key']};});_0x3b165f['model']=_[_0x724f('0x2b')](_0x200631,_0x724f('0x28'));_0x3b165f[_0x724f('0x2e')]=_[_0x724f('0x2f')](_0x51017b[_0x724f('0x2e')]);_0x3b165f['filters']=_[_0x724f('0x30')](_0x3b165f[_0x724f('0x31')],_0x3b165f['query']);_0x182674[_0x724f('0x32')]=_['intersection'](_0x3b165f[_0x724f('0x31')],qs[_0x724f('0x33')](_0x51017b['query'][_0x724f('0x33')]));_0x182674['attributes']=_0x182674[_0x724f('0x32')][_0x724f('0x34')]?_0x182674[_0x724f('0x32')]:_0x3b165f['model'];if(!_0x51017b['query'][_0x724f('0x35')](_0x724f('0x36'))){_0x182674[_0x724f('0x1b')]=qs[_0x724f('0x1b')](_0x51017b[_0x724f('0x2e')]['limit']);_0x182674[_0x724f('0x1e')]=qs['offset'](_0x51017b[_0x724f('0x2e')][_0x724f('0x1e')]);}_0x182674[_0x724f('0x37')]=qs['sort'](_0x51017b['query'][_0x724f('0x38')]);_0x182674['where']=qs[_0x724f('0x39')](_[_0x724f('0x3a')](_0x51017b[_0x724f('0x2e')],_0x3b165f[_0x724f('0x39')]),_0x200631);if(_0x51017b[_0x724f('0x2e')]['filter']){_0x182674[_0x724f('0x3b')]=_[_0x724f('0x3c')](_0x182674[_0x724f('0x3b')],{'$or':_[_0x724f('0x2b')](_0x200631,function(_0x3d3cba){if(_0x3d3cba[_0x724f('0x2d')]!==_0x724f('0x3d')){var _0x166877={};_0x166877[_0x3d3cba[_0x724f('0x28')]]={'$like':'%'+_0x51017b[_0x724f('0x2e')][_0x724f('0x3e')]+'%'};return _0x166877;}})});}_0x182674=_[_0x724f('0x3c')]({},_0x182674,_0x51017b[_0x724f('0x3f')]);var _0x1ddf7f={'where':_0x182674['where']};return db[_0x724f('0x40')][_0x724f('0x1d')](_0x1ddf7f)[_0x724f('0x23')](function(_0xdade03){_0xc8b168[_0x724f('0x1d')]=_0xdade03;if(_0x51017b['query'][_0x724f('0x41')]){_0x182674[_0x724f('0x42')]=[{'all':!![]}];}return db[_0x724f('0x40')][_0x724f('0x43')](_0x182674);})[_0x724f('0x23')](function(_0xa9897c){_0xc8b168[_0x724f('0x44')]=_0xa9897c;return _0xc8b168;})[_0x724f('0x23')](respondWithFilteredResult(_0x103663,_0x182674))[_0x724f('0x45')](handleError(_0x103663,null));};exports[_0x724f('0x46')]=function(_0x1885f3,_0x38f4d2){var _0x489268={'raw':![],'where':{'id':_0x1885f3[_0x724f('0x47')]['id']}},_0x385150={};_0x385150['model']=_[_0x724f('0x2f')](db[_0x724f('0x40')][_0x724f('0x48')]);_0x385150[_0x724f('0x2e')]=_[_0x724f('0x2f')](_0x1885f3[_0x724f('0x2e')]);_0x385150['filters']=_[_0x724f('0x30')](_0x385150['model'],_0x385150[_0x724f('0x2e')]);_0x489268['attributes']=_['intersection'](_0x385150[_0x724f('0x31')],qs['fields'](_0x1885f3[_0x724f('0x2e')][_0x724f('0x33')]));_0x489268[_0x724f('0x32')]=_0x489268['attributes'][_0x724f('0x34')]?_0x489268[_0x724f('0x32')]:_0x385150[_0x724f('0x31')];if(_0x1885f3[_0x724f('0x2e')]['includeAll']){_0x489268['include']=[{'all':!![]}];}_0x489268=_[_0x724f('0x3c')]({},_0x489268,_0x1885f3[_0x724f('0x3f')]);return db[_0x724f('0x40')]['find'](_0x489268)[_0x724f('0x23')](handleEntityNotFound(_0x38f4d2,null))[_0x724f('0x23')](respondWithResult(_0x38f4d2,null))[_0x724f('0x45')](handleError(_0x38f4d2,null));};exports[_0x724f('0x49')]=function(_0x3448fb,_0x54b99f){return db['IntegrationReport'][_0x724f('0x49')](_0x3448fb[_0x724f('0x4a')],{})[_0x724f('0x23')](respondWithResult(_0x54b99f,0xc9))[_0x724f('0x45')](handleError(_0x54b99f,null));};exports[_0x724f('0x4b')]=function(_0x12df5f,_0x4f6713){if(_0x12df5f[_0x724f('0x4a')]['id']){delete _0x12df5f[_0x724f('0x4a')]['id'];}return db[_0x724f('0x40')][_0x724f('0x4c')]({'where':{'id':_0x12df5f['params']['id']}})[_0x724f('0x23')](handleEntityNotFound(_0x4f6713,null))[_0x724f('0x23')](saveUpdates(_0x12df5f[_0x724f('0x4a')],null))['then'](respondWithResult(_0x4f6713,null))[_0x724f('0x45')](handleError(_0x4f6713,null));};exports[_0x724f('0x24')]=function(_0x5df951,_0x2056e1){return db['IntegrationReport'][_0x724f('0x4c')]({'where':{'id':_0x5df951[_0x724f('0x47')]['id']}})[_0x724f('0x23')](handleEntityNotFound(_0x2056e1,null))['then'](removeEntity(_0x2056e1,null))[_0x724f('0x45')](handleError(_0x2056e1,null));};exports[_0x724f('0x4d')]=function(_0x1e7689,_0x397fba){return db[_0x724f('0x40')][_0x724f('0x4d')]()[_0x724f('0x23')](respondWithResult(_0x397fba,null))[_0x724f('0x45')](handleError(_0x397fba,null));};
\ No newline at end of file
+var _0x238b=['../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','destroy','then','sendStatus','error','stack','name','send','IntegrationReport','map','query','keys','filters','intersection','model','fields','attributes','hasOwnProperty','order','sort','where','filter','merge','type','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','body','find','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x31c6a2,_0x38cd91){var _0x19d5d4=function(_0x124929){while(--_0x124929){_0x31c6a2['push'](_0x31c6a2['shift']());}};_0x19d5d4(++_0x38cd91);}(_0x238b,0x199));var _0xb238=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x238b[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb238('0x0'));var zipdir=require(_0xb238('0x1'));var jsonpatch=require(_0xb238('0x2'));var rp=require(_0xb238('0x3'));var moment=require('moment');var BPromise=require(_0xb238('0x4'));var Mustache=require(_0xb238('0x5'));var util=require(_0xb238('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xb238('0x7'));var ejs=require(_0xb238('0x8'));var fs=require('fs');var fs_extra=require(_0xb238('0x9'));var _=require(_0xb238('0xa'));var squel=require(_0xb238('0xb'));var crypto=require(_0xb238('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xb238('0x7'));var querystring=require(_0xb238('0xd'));var Papa=require('papaparse');var Redis=require(_0xb238('0xe'));var authService=require(_0xb238('0xf'));var qs=require(_0xb238('0x10'));var as=require(_0xb238('0x11'));var hardwareService=require(_0xb238('0x12'));var logger=require('../../config/logger')(_0xb238('0x13'));var utils=require(_0xb238('0x14'));var config=require(_0xb238('0x15'));var licenseUtil=require(_0xb238('0x16'));var db=require(_0xb238('0x17'))['db'];function respondWithStatusCode(_0x49a170,_0x1ba044){_0x1ba044=_0x1ba044||0xcc;return function(_0x5a615f){if(_0x5a615f){return _0x49a170['sendStatus'](_0x1ba044);}return _0x49a170['status'](_0x1ba044)[_0xb238('0x18')]();};}function respondWithResult(_0x3b51db,_0x102cc4){_0x102cc4=_0x102cc4||0xc8;return function(_0x31e9bb){if(_0x31e9bb){return _0x3b51db[_0xb238('0x19')](_0x102cc4)[_0xb238('0x1a')](_0x31e9bb);}};}function respondWithFilteredResult(_0x4c8263,_0x511ce4){return function(_0x242d9f){if(_0x242d9f){var _0x412803=typeof _0x511ce4[_0xb238('0x1b')]===_0xb238('0x1c')&&typeof _0x511ce4[_0xb238('0x1d')]===_0xb238('0x1c');var _0x46f111=_0x242d9f[_0xb238('0x1e')];var _0x8e4c70=_0x412803?0x0:_0x511ce4[_0xb238('0x1b')];var _0x14cac0=_0x412803?_0x242d9f[_0xb238('0x1e')]:_0x511ce4[_0xb238('0x1b')]+_0x511ce4['limit'];var _0xf9f797;if(_0x14cac0>=_0x46f111){_0x14cac0=_0x46f111;_0xf9f797=0xc8;}else{_0xf9f797=0xce;}_0x4c8263['status'](_0xf9f797);return _0x4c8263['set'](_0xb238('0x1f'),_0x8e4c70+'-'+_0x14cac0+'/'+_0x46f111)['json'](_0x242d9f);}return null;};}function patchUpdates(_0x1fc6ff){return function(_0x10a2be){try{jsonpatch[_0xb238('0x20')](_0x10a2be,_0x1fc6ff,!![]);}catch(_0x2103e3){return BPromise['reject'](_0x2103e3);}return _0x10a2be[_0xb238('0x21')]();};}function saveUpdates(_0x6d248f,_0x1f6a3f){return function(_0x4953fc){if(_0x4953fc){return _0x4953fc[_0xb238('0x22')](_0x6d248f)['then'](function(_0x5133c7){return _0x5133c7;});}return null;};}function removeEntity(_0x970d7c,_0xf98521){return function(_0x27937b){if(_0x27937b){return _0x27937b[_0xb238('0x23')]()[_0xb238('0x24')](function(){_0x970d7c[_0xb238('0x19')](0xcc)[_0xb238('0x18')]();});}};}function handleEntityNotFound(_0x56aab7,_0xcd2595){return function(_0x50defb){if(!_0x50defb){_0x56aab7[_0xb238('0x25')](0x194);}return _0x50defb;};}function handleError(_0x11fd03,_0x6e877){_0x6e877=_0x6e877||0x1f4;return function(_0x2074b0){logger[_0xb238('0x26')](_0x2074b0[_0xb238('0x27')]);if(_0x2074b0[_0xb238('0x28')]){delete _0x2074b0['name'];}_0x11fd03['status'](_0x6e877)[_0xb238('0x29')](_0x2074b0);};}exports['index']=function(_0x4e133a,_0x19e970){var _0x447bee={},_0x335a82={},_0x2d1d7b={'count':0x0,'rows':[]};var _0x14ab11=_['map'](db[_0xb238('0x2a')]['rawAttributes'],function(_0x53421e){return{'name':_0x53421e['fieldName'],'type':_0x53421e['type']['key']};});_0x335a82['model']=_[_0xb238('0x2b')](_0x14ab11,'name');_0x335a82[_0xb238('0x2c')]=_[_0xb238('0x2d')](_0x4e133a[_0xb238('0x2c')]);_0x335a82[_0xb238('0x2e')]=_[_0xb238('0x2f')](_0x335a82[_0xb238('0x30')],_0x335a82[_0xb238('0x2c')]);_0x447bee['attributes']=_[_0xb238('0x2f')](_0x335a82[_0xb238('0x30')],qs[_0xb238('0x31')](_0x4e133a[_0xb238('0x2c')][_0xb238('0x31')]));_0x447bee[_0xb238('0x32')]=_0x447bee[_0xb238('0x32')]['length']?_0x447bee[_0xb238('0x32')]:_0x335a82[_0xb238('0x30')];if(!_0x4e133a[_0xb238('0x2c')][_0xb238('0x33')]('nolimit')){_0x447bee[_0xb238('0x1d')]=qs[_0xb238('0x1d')](_0x4e133a[_0xb238('0x2c')]['limit']);_0x447bee[_0xb238('0x1b')]=qs[_0xb238('0x1b')](_0x4e133a[_0xb238('0x2c')]['offset']);}_0x447bee[_0xb238('0x34')]=qs[_0xb238('0x35')](_0x4e133a['query'][_0xb238('0x35')]);_0x447bee[_0xb238('0x36')]=qs['filters'](_['pick'](_0x4e133a[_0xb238('0x2c')],_0x335a82['filters']),_0x14ab11);if(_0x4e133a['query'][_0xb238('0x37')]){_0x447bee[_0xb238('0x36')]=_[_0xb238('0x38')](_0x447bee[_0xb238('0x36')],{'$or':_[_0xb238('0x2b')](_0x14ab11,function(_0x93a174){if(_0x93a174[_0xb238('0x39')]!=='VIRTUAL'){var _0x501cfb={};_0x501cfb[_0x93a174[_0xb238('0x28')]]={'$like':'%'+_0x4e133a[_0xb238('0x2c')][_0xb238('0x37')]+'%'};return _0x501cfb;}})});}_0x447bee=_[_0xb238('0x38')]({},_0x447bee,_0x4e133a[_0xb238('0x3a')]);var _0x56ebe5={'where':_0x447bee[_0xb238('0x36')]};return db[_0xb238('0x2a')]['count'](_0x56ebe5)[_0xb238('0x24')](function(_0x355a22){_0x2d1d7b[_0xb238('0x1e')]=_0x355a22;if(_0x4e133a[_0xb238('0x2c')][_0xb238('0x3b')]){_0x447bee[_0xb238('0x3c')]=[{'all':!![]}];}return db[_0xb238('0x2a')][_0xb238('0x3d')](_0x447bee);})[_0xb238('0x24')](function(_0x18d425){_0x2d1d7b[_0xb238('0x3e')]=_0x18d425;return _0x2d1d7b;})[_0xb238('0x24')](respondWithFilteredResult(_0x19e970,_0x447bee))[_0xb238('0x3f')](handleError(_0x19e970,null));};exports[_0xb238('0x40')]=function(_0x5a1030,_0x20ed24){var _0x1c77c3={'raw':![],'where':{'id':_0x5a1030[_0xb238('0x41')]['id']}},_0x447b13={};_0x447b13['model']=_[_0xb238('0x2d')](db[_0xb238('0x2a')][_0xb238('0x42')]);_0x447b13[_0xb238('0x2c')]=_[_0xb238('0x2d')](_0x5a1030[_0xb238('0x2c')]);_0x447b13[_0xb238('0x2e')]=_[_0xb238('0x2f')](_0x447b13[_0xb238('0x30')],_0x447b13['query']);_0x1c77c3[_0xb238('0x32')]=_[_0xb238('0x2f')](_0x447b13[_0xb238('0x30')],qs[_0xb238('0x31')](_0x5a1030[_0xb238('0x2c')]['fields']));_0x1c77c3[_0xb238('0x32')]=_0x1c77c3['attributes']['length']?_0x1c77c3[_0xb238('0x32')]:_0x447b13[_0xb238('0x30')];if(_0x5a1030['query']['includeAll']){_0x1c77c3[_0xb238('0x3c')]=[{'all':!![]}];}_0x1c77c3=_[_0xb238('0x38')]({},_0x1c77c3,_0x5a1030[_0xb238('0x3a')]);return db['IntegrationReport']['find'](_0x1c77c3)[_0xb238('0x24')](handleEntityNotFound(_0x20ed24,null))[_0xb238('0x24')](respondWithResult(_0x20ed24,null))[_0xb238('0x3f')](handleError(_0x20ed24,null));};exports[_0xb238('0x43')]=function(_0x857929,_0x2ab243){return db[_0xb238('0x2a')][_0xb238('0x43')](_0x857929[_0xb238('0x44')],{})['then'](respondWithResult(_0x2ab243,0xc9))[_0xb238('0x3f')](handleError(_0x2ab243,null));};exports[_0xb238('0x22')]=function(_0x3dc884,_0x598b05){if(_0x3dc884[_0xb238('0x44')]['id']){delete _0x3dc884[_0xb238('0x44')]['id'];}return db[_0xb238('0x2a')][_0xb238('0x45')]({'where':{'id':_0x3dc884[_0xb238('0x41')]['id']}})[_0xb238('0x24')](handleEntityNotFound(_0x598b05,null))[_0xb238('0x24')](saveUpdates(_0x3dc884[_0xb238('0x44')],null))['then'](respondWithResult(_0x598b05,null))[_0xb238('0x3f')](handleError(_0x598b05,null));};exports[_0xb238('0x23')]=function(_0x4fe430,_0x309113){return db[_0xb238('0x2a')][_0xb238('0x45')]({'where':{'id':_0x4fe430[_0xb238('0x41')]['id']}})[_0xb238('0x24')](handleEntityNotFound(_0x309113,null))[_0xb238('0x24')](removeEntity(_0x309113,null))[_0xb238('0x3f')](handleError(_0x309113,null));};exports[_0xb238('0x46')]=function(_0xe90ad0,_0x166dc5){return db[_0xb238('0x2a')]['describe']()[_0xb238('0x24')](respondWithResult(_0x166dc5,null))[_0xb238('0x3f')](handleError(_0x166dc5,null));};
\ No newline at end of file
index 1a08857..60f8b60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b88=['report_integration','lodash','util','api','moment','request-promise','rimraf','./integrationReport.attributes','exports','define','IntegrationReport'];(function(_0x17a91f,_0x34ba10){var _0x151e31=function(_0x33192a){while(--_0x33192a){_0x17a91f['push'](_0x17a91f['shift']());}};_0x151e31(++_0x34ba10);}(_0x0b88,0x1c4));var _0x80b8=function(_0x27e559,_0x2107ce){_0x27e559=_0x27e559-0x0;var _0x35a8a1=_0x0b88[_0x27e559];return _0x35a8a1;};'use strict';var _=require(_0x80b8('0x0'));var util=require(_0x80b8('0x1'));var logger=require('../../config/logger')(_0x80b8('0x2'));var moment=require(_0x80b8('0x3'));var BPromise=require('bluebird');var rp=require(_0x80b8('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x80b8('0x5'));var config=require('../../config/environment');var attributes=require(_0x80b8('0x6'));module[_0x80b8('0x7')]=function(_0x5d58a2,_0x8f92a7){return _0x5d58a2[_0x80b8('0x8')](_0x80b8('0x9'),attributes,{'tableName':_0x80b8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc13e=['path','rimraf','../../config/environment','./integrationReport.attributes','exports','define','IntegrationReport','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x580197,_0xbb7e10){var _0x54a754=function(_0x271e2b){while(--_0x271e2b){_0x580197['push'](_0x580197['shift']());}};_0x54a754(++_0xbb7e10);}(_0xc13e,0xa3));var _0xec13=function(_0x1c678c,_0x11fa6b){_0x1c678c=_0x1c678c-0x0;var _0x29cf5f=_0xc13e[_0x1c678c];return _0x29cf5f;};'use strict';var _=require(_0xec13('0x0'));var util=require(_0xec13('0x1'));var logger=require(_0xec13('0x2'))(_0xec13('0x3'));var moment=require(_0xec13('0x4'));var BPromise=require(_0xec13('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xec13('0x6'));var rimraf=require(_0xec13('0x7'));var config=require(_0xec13('0x8'));var attributes=require(_0xec13('0x9'));module[_0xec13('0xa')]=function(_0xd81abc,_0x1f08d7){return _0xd81abc[_0xec13('0xb')](_0xec13('0xc'),attributes,{'tableName':'report_integration','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f6094af..f800dc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x524e=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','moment','bluebird'];(function(_0x33ceeb,_0x58b863){var _0x5b6556=function(_0x23a6b1){while(--_0x23a6b1){_0x33ceeb['push'](_0x33ceeb['shift']());}};_0x5b6556(++_0x58b863);}(_0x524e,0x15e));var _0xe524=function(_0x3f7ed2,_0x20a080){_0x3f7ed2=_0x3f7ed2-0x0;var _0xc72f2d=_0x524e[_0x3f7ed2];return _0xc72f2d;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe524('0x0'));var BPromise=require(_0xe524('0x1'));var rs=require(_0xe524('0x2'));var fs=require('fs');var Redis=require(_0xe524('0x3'));var db=require(_0xe524('0x4'))['db'];var utils=require(_0xe524('0x5'));var logger=require(_0xe524('0x6'))(_0xe524('0x7'));var config=require(_0xe524('0x8'));var jayson=require(_0xe524('0x9'));var client=jayson['client'][_0xe524('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x41e1a3,_0x347bed,_0x533c14){return new BPromise(function(_0x384935,_0x3e4cda){return client[_0xe524('0xb')](_0x41e1a3,_0x533c14)[_0xe524('0xc')](function(_0x991924){logger[_0xe524('0xd')](_0xe524('0xe'),_0x347bed,_0xe524('0xf'));logger[_0xe524('0x10')](_0xe524('0x11'),_0x347bed,_0xe524('0xf'),JSON[_0xe524('0x12')](_0x991924));if(_0x991924[_0xe524('0x13')]){if(_0x991924[_0xe524('0x13')][_0xe524('0x14')]===0x1f4){logger[_0xe524('0x13')]('IntegrationReport,\x20%s,\x20%s',_0x347bed,_0x991924['error'][_0xe524('0x15')]);return _0x3e4cda(_0x991924[_0xe524('0x13')][_0xe524('0x15')]);}logger[_0xe524('0x13')](_0xe524('0xe'),_0x347bed,_0x991924['error'][_0xe524('0x15')]);return _0x384935(_0x991924['error'][_0xe524('0x15')]);}else{logger[_0xe524('0xd')]('IntegrationReport,\x20%s,\x20%s',_0x347bed,_0xe524('0xf'));_0x384935(_0x991924['result'][_0xe524('0x15')]);}})['catch'](function(_0x29a031){logger['error']('IntegrationReport,\x20%s,\x20%s',_0x347bed,_0x29a031);_0x3e4cda(_0x29a031);});});}
\ No newline at end of file
+var _0x814b=['info','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then'];(function(_0x20c9b2,_0x55d7b1){var _0x2c6030=function(_0x10845f){while(--_0x10845f){_0x20c9b2['push'](_0x20c9b2['shift']());}};_0x2c6030(++_0x55d7b1);}(_0x814b,0x1a2));var _0xb814=function(_0x9148ba,_0x2cb1b5){_0x9148ba=_0x9148ba-0x0;var _0x355e3b=_0x814b[_0x9148ba];return _0x355e3b;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var moment=require(_0xb814('0x2'));var BPromise=require(_0xb814('0x3'));var rs=require(_0xb814('0x4'));var fs=require('fs');var Redis=require(_0xb814('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xb814('0x6'));var logger=require(_0xb814('0x7'))(_0xb814('0x8'));var config=require(_0xb814('0x9'));var jayson=require(_0xb814('0xa'));var client=jayson[_0xb814('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3b0829,_0x2e6272,_0x5c8539){return new BPromise(function(_0x271af9,_0x2913a6){return client[_0xb814('0xc')](_0x3b0829,_0x5c8539)[_0xb814('0xd')](function(_0x1fea33){logger[_0xb814('0xe')](_0xb814('0xf'),_0x2e6272,_0xb814('0x10'));logger[_0xb814('0x11')](_0xb814('0x12'),_0x2e6272,_0xb814('0x10'),JSON['stringify'](_0x1fea33));if(_0x1fea33[_0xb814('0x13')]){if(_0x1fea33['error'][_0xb814('0x14')]===0x1f4){logger[_0xb814('0x13')](_0xb814('0xf'),_0x2e6272,_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);return _0x2913a6(_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);}logger[_0xb814('0x13')](_0xb814('0xf'),_0x2e6272,_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);return _0x271af9(_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);}else{logger[_0xb814('0xe')](_0xb814('0xf'),_0x2e6272,_0xb814('0x10'));_0x271af9(_0x1fea33[_0xb814('0x16')][_0xb814('0x15')]);}})[_0xb814('0x17')](function(_0x21b73f){logger[_0xb814('0x13')]('IntegrationReport,\x20%s,\x20%s',_0x2e6272,_0x21b73f);_0x2913a6(_0x21b73f);});});}
\ No newline at end of file
index c7addfc..c2ae08d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9c8=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','index','get','/:id','show','/:id/sub_intervals','isAuthenticated','getIntervals','post','create','addInterval','/:id/sub_intervals/create_many','put','update','delete','destroy','exports','multer','util'];(function(_0xaca422,_0x307ad3){var _0x3cb69e=function(_0x10d04d){while(--_0x10d04d){_0xaca422['push'](_0xaca422['shift']());}};_0x3cb69e(++_0x307ad3);}(_0xd9c8,0x15c));var _0x8d9c=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xd9c8[_0x502c7d];return _0x30b7ed;};'use strict';var multer=require(_0x8d9c('0x0'));var util=require(_0x8d9c('0x1'));var path=require('path');var timeout=require(_0x8d9c('0x2'));var express=require(_0x8d9c('0x3'));var router=express[_0x8d9c('0x4')]();var fs_extra=require(_0x8d9c('0x5'));var auth=require(_0x8d9c('0x6'));var interaction=require(_0x8d9c('0x7'));var config=require(_0x8d9c('0x8'));var controller=require('./interval.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x8d9c('0x9')]);router[_0x8d9c('0xa')](_0x8d9c('0xb'),auth['isAuthenticated'](),controller[_0x8d9c('0xc')]);router[_0x8d9c('0xa')](_0x8d9c('0xd'),auth[_0x8d9c('0xe')](),controller[_0x8d9c('0xf')]);router[_0x8d9c('0x10')]('/',auth[_0x8d9c('0xe')](),controller[_0x8d9c('0x11')]);router['post'](_0x8d9c('0xd'),auth['isAuthenticated'](),controller[_0x8d9c('0x12')]);router['post'](_0x8d9c('0x13'),auth['isAuthenticated'](),controller['addIntervals']);router[_0x8d9c('0x14')]('/:id',auth[_0x8d9c('0xe')](),controller[_0x8d9c('0x15')]);router[_0x8d9c('0x16')](_0x8d9c('0xb'),auth[_0x8d9c('0xe')](),controller[_0x8d9c('0x17')]);module[_0x8d9c('0x18')]=router;
\ No newline at end of file
+var _0x4553=['addInterval','/:id/sub_intervals/create_many','addIntervals','put','/:id','update','delete','destroy','exports','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./interval.controller','get','isAuthenticated','index','getIntervals','post','/:id/sub_intervals'];(function(_0x360f00,_0x345389){var _0x2d2832=function(_0xebb3b9){while(--_0xebb3b9){_0x360f00['push'](_0x360f00['shift']());}};_0x2d2832(++_0x345389);}(_0x4553,0x1be));var _0x3455=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0x4553[_0x46aff0];return _0x9d78cf;};'use strict';var multer=require('multer');var util=require(_0x3455('0x0'));var path=require(_0x3455('0x1'));var timeout=require(_0x3455('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x3455('0x3'));var auth=require(_0x3455('0x4'));var interaction=require(_0x3455('0x5'));var config=require(_0x3455('0x6'));var controller=require(_0x3455('0x7'));router[_0x3455('0x8')]('/',auth[_0x3455('0x9')](),controller[_0x3455('0xa')]);router[_0x3455('0x8')]('/:id',auth[_0x3455('0x9')](),controller['show']);router[_0x3455('0x8')]('/:id/sub_intervals',auth[_0x3455('0x9')](),controller[_0x3455('0xb')]);router[_0x3455('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0x3455('0xc')](_0x3455('0xd'),auth[_0x3455('0x9')](),controller[_0x3455('0xe')]);router[_0x3455('0xc')](_0x3455('0xf'),auth[_0x3455('0x9')](),controller[_0x3455('0x10')]);router[_0x3455('0x11')](_0x3455('0x12'),auth[_0x3455('0x9')](),controller[_0x3455('0x13')]);router[_0x3455('0x14')](_0x3455('0x12'),auth[_0x3455('0x9')](),controller[_0x3455('0x15')]);module[_0x3455('0x16')]=router;
\ No newline at end of file
index 3da26c7..605abcb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5f3=['sequelize','STRING'];(function(_0x48af38,_0x4b59c0){var _0x3d2de7=function(_0x377c21){while(--_0x377c21){_0x48af38['push'](_0x48af38['shift']());}};_0x3d2de7(++_0x4b59c0);}(_0xc5f3,0x1b0));var _0x3c5f=function(_0x14941c,_0x25cb16){_0x14941c=_0x14941c-0x0;var _0x76d911=_0xc5f3[_0x14941c];return _0x76d911;};'use strict';var Sequelize=require(_0x3c5f('0x0'));module['exports']={'name':{'type':Sequelize[_0x3c5f('0x1')]},'description':{'type':Sequelize[_0x3c5f('0x1')]},'interval':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
+var _0x2984=['STRING','sequelize','exports'];(function(_0x4ef712,_0x11525e){var _0x17c8d2=function(_0x953ec7){while(--_0x953ec7){_0x4ef712['push'](_0x4ef712['shift']());}};_0x17c8d2(++_0x11525e);}(_0x2984,0x15a));var _0x4298=function(_0x2cc842,_0xd6800d){_0x2cc842=_0x2cc842-0x0;var _0x24adab=_0x2984[_0x2cc842];return _0x24adab;};'use strict';var Sequelize=require(_0x4298('0x0'));module[_0x4298('0x1')]={'name':{'type':Sequelize[_0x4298('0x2')]},'description':{'type':Sequelize[_0x4298('0x2')]},'interval':{'type':Sequelize[_0x4298('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 769eb84..e3ddf2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a79=['ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','json','offset','limit','count','Content-Range','apply','reject','save','then','destroy','get','Intervals','UserProfileResource','error','stack','name','index','map','Interval','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','order','sort','where','pick','filter','merge','options','includeAll','findAll','show','length','include','catch','create','body','role','user','UserProfileSection','find','userProfileId','update','addInterval','params','IntervalId','getIntervals','hasOwnProperty','nolimit','addIntervals','sequelize','transaction','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse'];(function(_0xa90169,_0x39f1ad){var _0x1a8eda=function(_0x11c37d){while(--_0x11c37d){_0xa90169['push'](_0xa90169['shift']());}};_0x1a8eda(++_0x39f1ad);}(_0x5a79,0x1a7));var _0x95a7=function(_0x4d7707,_0x9784ca){_0x4d7707=_0x4d7707-0x0;var _0x5d3421=_0x5a79[_0x4d7707];return _0x5d3421;};'use strict';var emlformat=require(_0x95a7('0x0'));var rimraf=require(_0x95a7('0x1'));var zipdir=require(_0x95a7('0x2'));var jsonpatch=require(_0x95a7('0x3'));var rp=require(_0x95a7('0x4'));var moment=require('moment');var BPromise=require(_0x95a7('0x5'));var Mustache=require(_0x95a7('0x6'));var util=require(_0x95a7('0x7'));var path=require(_0x95a7('0x8'));var sox=require('sox');var csv=require(_0x95a7('0x9'));var ejs=require(_0x95a7('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x95a7('0xb'));var crypto=require(_0x95a7('0xc'));var jsforce=require(_0x95a7('0xd'));var deskjs=require(_0x95a7('0xe'));var toCsv=require('to-csv');var querystring=require(_0x95a7('0xf'));var Papa=require(_0x95a7('0x10'));var Redis=require(_0x95a7('0x11'));var authService=require(_0x95a7('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x95a7('0x13'));var hardwareService=require(_0x95a7('0x14'));var logger=require(_0x95a7('0x15'))(_0x95a7('0x16'));var utils=require(_0x95a7('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x95a7('0x18'));var db=require(_0x95a7('0x19'))['db'];var extensions=require(_0x95a7('0x1a'));function respondWithStatusCode(_0x412995,_0x3d0607){_0x3d0607=_0x3d0607||0xcc;return function(_0xf64120){if(_0xf64120){return _0x412995[_0x95a7('0x1b')](_0x3d0607);}return _0x412995[_0x95a7('0x1c')](_0x3d0607)['end']();};}function respondWithResult(_0x7dfca4,_0x49b253){_0x49b253=_0x49b253||0xc8;return function(_0x4b6870){if(_0x4b6870){return _0x7dfca4[_0x95a7('0x1c')](_0x49b253)[_0x95a7('0x1d')](_0x4b6870);}};}function respondWithFilteredResult(_0x86103a,_0x3a1759){return function(_0x563548){if(_0x563548){var _0x3e2e67=typeof _0x3a1759[_0x95a7('0x1e')]==='undefined'&&typeof _0x3a1759[_0x95a7('0x1f')]==='undefined';var _0x22069f=_0x563548[_0x95a7('0x20')];var _0x470ecb=_0x3e2e67?0x0:_0x3a1759[_0x95a7('0x1e')];var _0x5ee13b=_0x3e2e67?_0x563548[_0x95a7('0x20')]:_0x3a1759[_0x95a7('0x1e')]+_0x3a1759[_0x95a7('0x1f')];var _0x11f9c1;if(_0x5ee13b>=_0x22069f){_0x5ee13b=_0x22069f;_0x11f9c1=0xc8;}else{_0x11f9c1=0xce;}_0x86103a[_0x95a7('0x1c')](_0x11f9c1);return _0x86103a['set'](_0x95a7('0x21'),_0x470ecb+'-'+_0x5ee13b+'/'+_0x22069f)['json'](_0x563548);}return null;};}function patchUpdates(_0x37ebc3){return function(_0xd9c560){try{jsonpatch[_0x95a7('0x22')](_0xd9c560,_0x37ebc3,!![]);}catch(_0x22e2be){return BPromise[_0x95a7('0x23')](_0x22e2be);}return _0xd9c560[_0x95a7('0x24')]();};}function saveUpdates(_0x318480,_0x4da06c){return function(_0xab85bf){if(_0xab85bf){return _0xab85bf['update'](_0x318480)[_0x95a7('0x25')](function(_0x5e40c0){return _0x5e40c0;});}return null;};}function removeEntity(_0x3b6afb,_0x4723a8){return function(_0x3e1abe){if(_0x3e1abe){return _0x3e1abe[_0x95a7('0x26')]()[_0x95a7('0x25')](function(){var _0x518263=_0x3e1abe[_0x95a7('0x27')]({'plain':!![]});var _0x2f536a=_0x95a7('0x28');return db[_0x95a7('0x29')][_0x95a7('0x26')]({'where':{'type':_0x2f536a,'resourceId':_0x518263['id']}})[_0x95a7('0x25')](function(){return _0x3e1abe;});})['then'](function(){_0x3b6afb['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x430fcc,_0x3ffea3){return function(_0x438771){if(!_0x438771){_0x430fcc[_0x95a7('0x1b')](0x194);}return _0x438771;};}function handleError(_0x78dc37,_0x29ce04){_0x29ce04=_0x29ce04||0x1f4;return function(_0x1f22d5){logger[_0x95a7('0x2a')](_0x1f22d5[_0x95a7('0x2b')]);if(_0x1f22d5[_0x95a7('0x2c')]){delete _0x1f22d5['name'];}_0x78dc37[_0x95a7('0x1c')](_0x29ce04)['send'](_0x1f22d5);};}exports[_0x95a7('0x2d')]=function(_0x3151dc,_0x4693e8){var _0x48e9a9={},_0x4c5a84={},_0x65d324={'count':0x0,'rows':[]};var _0x3f3cce=_[_0x95a7('0x2e')](db[_0x95a7('0x2f')][_0x95a7('0x30')],function(_0x5bfb4f){return{'name':_0x5bfb4f[_0x95a7('0x31')],'type':_0x5bfb4f[_0x95a7('0x32')]['key']};});_0x4c5a84[_0x95a7('0x33')]=_[_0x95a7('0x2e')](_0x3f3cce,'name');_0x4c5a84[_0x95a7('0x34')]=_[_0x95a7('0x35')](_0x3151dc[_0x95a7('0x34')]);_0x4c5a84[_0x95a7('0x36')]=_[_0x95a7('0x37')](_0x4c5a84['model'],_0x4c5a84[_0x95a7('0x34')]);_0x48e9a9[_0x95a7('0x38')]=_[_0x95a7('0x37')](_0x4c5a84[_0x95a7('0x33')],qs[_0x95a7('0x39')](_0x3151dc[_0x95a7('0x34')][_0x95a7('0x39')]));_0x48e9a9[_0x95a7('0x38')]=_0x48e9a9['attributes']['length']?_0x48e9a9[_0x95a7('0x38')]:_0x4c5a84['model'];if(!_0x3151dc[_0x95a7('0x34')]['hasOwnProperty']('nolimit')){_0x48e9a9['limit']=qs[_0x95a7('0x1f')](_0x3151dc[_0x95a7('0x34')][_0x95a7('0x1f')]);_0x48e9a9[_0x95a7('0x1e')]=qs['offset'](_0x3151dc[_0x95a7('0x34')][_0x95a7('0x1e')]);}_0x48e9a9[_0x95a7('0x3a')]=qs[_0x95a7('0x3b')](_0x3151dc[_0x95a7('0x34')][_0x95a7('0x3b')]);_0x48e9a9[_0x95a7('0x3c')]=qs[_0x95a7('0x36')](_[_0x95a7('0x3d')](_0x3151dc[_0x95a7('0x34')],_0x4c5a84[_0x95a7('0x36')]),_0x3f3cce);if(_0x3151dc[_0x95a7('0x34')][_0x95a7('0x3e')]){_0x48e9a9[_0x95a7('0x3c')]=_[_0x95a7('0x3f')](_0x48e9a9[_0x95a7('0x3c')],{'$or':_['map'](_0x3f3cce,function(_0x1dec7b){if(_0x1dec7b[_0x95a7('0x32')]!=='VIRTUAL'){var _0x19f248={};_0x19f248[_0x1dec7b[_0x95a7('0x2c')]]={'$like':'%'+_0x3151dc[_0x95a7('0x34')][_0x95a7('0x3e')]+'%'};return _0x19f248;}})});}_0x48e9a9=_[_0x95a7('0x3f')]({},_0x48e9a9,_0x3151dc[_0x95a7('0x40')]);var _0x31d349={'where':_0x48e9a9[_0x95a7('0x3c')]};return db['Interval'][_0x95a7('0x20')](_0x31d349)[_0x95a7('0x25')](function(_0x2c21b2){_0x65d324[_0x95a7('0x20')]=_0x2c21b2;if(_0x3151dc[_0x95a7('0x34')][_0x95a7('0x41')]){_0x48e9a9['include']=[{'all':!![]}];}return db[_0x95a7('0x2f')][_0x95a7('0x42')](_0x48e9a9);})[_0x95a7('0x25')](function(_0x10bf16){_0x65d324['rows']=_0x10bf16;return _0x65d324;})[_0x95a7('0x25')](respondWithFilteredResult(_0x4693e8,_0x48e9a9))['catch'](handleError(_0x4693e8,null));};exports[_0x95a7('0x43')]=function(_0x201994,_0x36ff09){var _0x2a4e07={'raw':!![],'where':{'id':_0x201994['params']['id']}},_0x35674b={};_0x35674b['model']=_[_0x95a7('0x35')](db[_0x95a7('0x2f')][_0x95a7('0x30')]);_0x35674b[_0x95a7('0x34')]=_[_0x95a7('0x35')](_0x201994[_0x95a7('0x34')]);_0x35674b['filters']=_[_0x95a7('0x37')](_0x35674b['model'],_0x35674b[_0x95a7('0x34')]);_0x2a4e07['attributes']=_['intersection'](_0x35674b['model'],qs[_0x95a7('0x39')](_0x201994['query']['fields']));_0x2a4e07[_0x95a7('0x38')]=_0x2a4e07[_0x95a7('0x38')][_0x95a7('0x44')]?_0x2a4e07[_0x95a7('0x38')]:_0x35674b['model'];if(_0x201994['query'][_0x95a7('0x41')]){_0x2a4e07[_0x95a7('0x45')]=[{'all':!![]}];}_0x2a4e07=_[_0x95a7('0x3f')]({},_0x2a4e07,_0x201994[_0x95a7('0x40')]);return db['Interval']['find'](_0x2a4e07)['then'](handleEntityNotFound(_0x36ff09,null))[_0x95a7('0x25')](respondWithResult(_0x36ff09,null))[_0x95a7('0x46')](handleError(_0x36ff09,null));};exports[_0x95a7('0x47')]=function(_0x217631,_0x23aa3f){return db[_0x95a7('0x2f')][_0x95a7('0x47')](_0x217631[_0x95a7('0x48')],{})[_0x95a7('0x25')](function(_0x17b6ff){var _0x5857a0=_0x217631['user']['get']({'plain':!![]});if(!_0x5857a0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5857a0[_0x95a7('0x49')]===_0x95a7('0x4a')){var _0x39d74d=_0x17b6ff[_0x95a7('0x27')]({'plain':!![]});var _0x2537d6='Intervals';return db[_0x95a7('0x4b')][_0x95a7('0x4c')]({'where':{'name':_0x2537d6,'userProfileId':_0x5857a0[_0x95a7('0x4d')]},'raw':!![]})[_0x95a7('0x25')](function(_0x11b2e0){if(_0x11b2e0&&_0x11b2e0['autoAssociation']===0x0){return db[_0x95a7('0x29')][_0x95a7('0x47')]({'name':_0x39d74d[_0x95a7('0x2c')],'resourceId':_0x39d74d['id'],'type':_0x11b2e0[_0x95a7('0x2c')],'sectionId':_0x11b2e0['id']},{})[_0x95a7('0x25')](function(){return _0x17b6ff;});}else{return _0x17b6ff;}})[_0x95a7('0x46')](function(_0x25e3f7){logger[_0x95a7('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x25e3f7);throw _0x25e3f7;});}return _0x17b6ff;})[_0x95a7('0x25')](respondWithResult(_0x23aa3f,0xc9))['catch'](handleError(_0x23aa3f,null));};exports[_0x95a7('0x4e')]=function(_0x28d06e,_0x1142d9){if(_0x28d06e[_0x95a7('0x48')]['id']){delete _0x28d06e[_0x95a7('0x48')]['id'];}return db[_0x95a7('0x2f')][_0x95a7('0x4c')]({'where':{'id':_0x28d06e['params']['id']}})[_0x95a7('0x25')](handleEntityNotFound(_0x1142d9,null))[_0x95a7('0x25')](saveUpdates(_0x28d06e[_0x95a7('0x48')],null))[_0x95a7('0x25')](respondWithResult(_0x1142d9,null))[_0x95a7('0x46')](handleError(_0x1142d9,null));};exports[_0x95a7('0x26')]=function(_0x1297b3,_0x3e9b34){return db[_0x95a7('0x2f')][_0x95a7('0x4c')]({'where':{'id':_0x1297b3['params']['id']}})[_0x95a7('0x25')](handleEntityNotFound(_0x3e9b34,null))[_0x95a7('0x25')](removeEntity(_0x3e9b34,null))['catch'](handleError(_0x3e9b34,null));};exports[_0x95a7('0x4f')]=function(_0xdaaa92,_0x1adcc1,_0xf897d3){if(_0xdaaa92[_0x95a7('0x48')]['id']){delete _0xdaaa92[_0x95a7('0x48')]['id'];}return db[_0x95a7('0x2f')][_0x95a7('0x4c')]({'where':{'id':_0xdaaa92[_0x95a7('0x50')]['id']}})[_0x95a7('0x25')](handleEntityNotFound(_0x1adcc1,null))[_0x95a7('0x25')](function(_0x4be9e9){if(_0x4be9e9){_0xdaaa92[_0x95a7('0x48')][_0x95a7('0x51')]=_0x4be9e9['id'];return db['Interval']['create'](_0xdaaa92[_0x95a7('0x48')]);}})[_0x95a7('0x25')](respondWithResult(_0x1adcc1,null))[_0x95a7('0x46')](handleError(_0x1adcc1,null));};exports[_0x95a7('0x52')]=function(_0x134676,_0x293779,_0x347882){var _0x2d6478={};var _0x1a29e7={};var _0x1010ba;var _0x4bd79d;return db[_0x95a7('0x2f')]['findOne']({'where':{'id':_0x134676[_0x95a7('0x50')]['id']}})[_0x95a7('0x25')](handleEntityNotFound(_0x293779,null))[_0x95a7('0x25')](function(_0x2f5677){if(_0x2f5677){_0x1010ba=_0x2f5677;_0x1a29e7[_0x95a7('0x33')]=_[_0x95a7('0x35')](db[_0x95a7('0x2f')][_0x95a7('0x30')]);_0x1a29e7['query']=_['keys'](_0x134676['query']);_0x1a29e7[_0x95a7('0x36')]=_[_0x95a7('0x37')](_0x1a29e7[_0x95a7('0x33')],_0x1a29e7[_0x95a7('0x34')]);_0x2d6478[_0x95a7('0x38')]=_[_0x95a7('0x37')](_0x1a29e7['model'],qs['fields'](_0x134676['query'][_0x95a7('0x39')]));_0x2d6478['attributes']=_0x2d6478['attributes'][_0x95a7('0x44')]?_0x2d6478[_0x95a7('0x38')]:_0x1a29e7['model'];_0x2d6478['order']=qs[_0x95a7('0x3b')](_0x134676[_0x95a7('0x34')][_0x95a7('0x3b')]);_0x2d6478[_0x95a7('0x3c')]=qs['filters'](_[_0x95a7('0x3d')](_0x134676['query'],_0x1a29e7[_0x95a7('0x36')]));if(_0x134676[_0x95a7('0x34')][_0x95a7('0x3e')]){_0x2d6478[_0x95a7('0x3c')]=_[_0x95a7('0x3f')](_0x2d6478[_0x95a7('0x3c')],{'$or':_[_0x95a7('0x2e')](_0x2d6478[_0x95a7('0x38')],function(_0x21890a){var _0xba2631={};_0xba2631[_0x21890a]={'$like':'%'+_0x134676[_0x95a7('0x34')][_0x95a7('0x3e')]+'%'};return _0xba2631;})});}_0x2d6478=_[_0x95a7('0x3f')]({},_0x2d6478,_0x134676[_0x95a7('0x40')]);return _0x1010ba[_0x95a7('0x52')](_0x2d6478);}})[_0x95a7('0x25')](function(_0xdda264){if(_0xdda264){_0x4bd79d=_0xdda264[_0x95a7('0x44')];if(!_0x134676[_0x95a7('0x34')][_0x95a7('0x53')](_0x95a7('0x54'))){_0x2d6478['limit']=qs[_0x95a7('0x1f')](_0x134676['query'][_0x95a7('0x1f')]);_0x2d6478[_0x95a7('0x1e')]=qs['offset'](_0x134676[_0x95a7('0x34')][_0x95a7('0x1e')]);}return _0x1010ba[_0x95a7('0x52')](_0x2d6478);}})['then'](function(_0x447b31){if(_0x447b31){return _0x447b31?{'count':_0x4bd79d,'rows':_0x447b31}:null;}})['then'](respondWithResult(_0x293779,null))[_0x95a7('0x46')](handleError(_0x293779,null));};exports[_0x95a7('0x55')]=function(_0x5f8f2d,_0x4b1ba3,_0x2e3e07){return db[_0x95a7('0x2f')]['findOne']({'where':{'id':_0x5f8f2d[_0x95a7('0x50')]['id']}})[_0x95a7('0x25')](handleEntityNotFound(_0x4b1ba3,null))['then'](function(_0x57444e){if(_0x57444e){return db[_0x95a7('0x56')][_0x95a7('0x57')](function(_0x1014e1){return db[_0x95a7('0x2f')][_0x95a7('0x26')]({'where':{'IntervalId':_0x5f8f2d['params']['id']},'transaction':_0x1014e1})[_0x95a7('0x25')](function(_0x575a73){var _0x1ee015=_[_0x95a7('0x2e')](_0x5f8f2d[_0x95a7('0x48')],function(_0x450e27){delete _0x450e27['id'];_0x450e27['IntervalId']=_0x5f8f2d[_0x95a7('0x50')]['id'];return _0x450e27;});return db[_0x95a7('0x2f')]['bulkCreate'](_0x1ee015,{'transaction':_0x1014e1});});})[_0x95a7('0x25')](function(){return db[_0x95a7('0x2f')][_0x95a7('0x42')]({'where':{'IntervalId':_0x5f8f2d['params']['id']}});});}})[_0x95a7('0x25')](respondWithResult(_0x4b1ba3,null))['catch'](handleError(_0x4b1ba3,null));};
\ No newline at end of file
+var _0x8788=['type','key','map','keys','query','filters','model','attributes','intersection','fields','length','nolimit','order','sort','where','merge','VIRTUAL','options','includeAll','include','rows','catch','show','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','addInterval','IntervalId','getIntervals','findOne','pick','filter','hasOwnProperty','sequelize','transaction','bulkCreate','findAll','rimraf','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Intervals','UserProfileResource','error','stack','name','Interval','rawAttributes'];(function(_0x287502,_0x4cf65a){var _0x26b939=function(_0x2c9213){while(--_0x2c9213){_0x287502['push'](_0x287502['shift']());}};_0x26b939(++_0x4cf65a);}(_0x8788,0x1f3));var _0x8878=function(_0x1bcc92,_0x4929b8){_0x1bcc92=_0x1bcc92-0x0;var _0x88406a=_0x8788[_0x1bcc92];return _0x88406a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8878('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8878('0x1'));var rp=require('request-promise');var moment=require(_0x8878('0x2'));var BPromise=require(_0x8878('0x3'));var Mustache=require(_0x8878('0x4'));var util=require('util');var path=require(_0x8878('0x5'));var sox=require(_0x8878('0x6'));var csv=require(_0x8878('0x7'));var ejs=require(_0x8878('0x8'));var fs=require('fs');var fs_extra=require(_0x8878('0x9'));var _=require('lodash');var squel=require(_0x8878('0xa'));var crypto=require('crypto');var jsforce=require(_0x8878('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x8878('0x7'));var querystring=require(_0x8878('0xc'));var Papa=require(_0x8878('0xd'));var Redis=require(_0x8878('0xe'));var authService=require(_0x8878('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x8878('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8878('0x11'))(_0x8878('0x12'));var utils=require(_0x8878('0x13'));var config=require(_0x8878('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x8878('0x15'))['db'];var extensions=require(_0x8878('0x16'));function respondWithStatusCode(_0x419868,_0x887144){_0x887144=_0x887144||0xcc;return function(_0x1e9ea3){if(_0x1e9ea3){return _0x419868[_0x8878('0x17')](_0x887144);}return _0x419868[_0x8878('0x18')](_0x887144)[_0x8878('0x19')]();};}function respondWithResult(_0x1d8a26,_0x374841){_0x374841=_0x374841||0xc8;return function(_0x2a1efd){if(_0x2a1efd){return _0x1d8a26[_0x8878('0x18')](_0x374841)[_0x8878('0x1a')](_0x2a1efd);}};}function respondWithFilteredResult(_0x37ed52,_0x22a962){return function(_0x1133d0){if(_0x1133d0){var _0x2e07b5=typeof _0x22a962[_0x8878('0x1b')]===_0x8878('0x1c')&&typeof _0x22a962[_0x8878('0x1d')]===_0x8878('0x1c');var _0x2d12f8=_0x1133d0[_0x8878('0x1e')];var _0xe244aa=_0x2e07b5?0x0:_0x22a962[_0x8878('0x1b')];var _0x1c5ab1=_0x2e07b5?_0x1133d0[_0x8878('0x1e')]:_0x22a962['offset']+_0x22a962[_0x8878('0x1d')];var _0x22298e;if(_0x1c5ab1>=_0x2d12f8){_0x1c5ab1=_0x2d12f8;_0x22298e=0xc8;}else{_0x22298e=0xce;}_0x37ed52[_0x8878('0x18')](_0x22298e);return _0x37ed52[_0x8878('0x1f')](_0x8878('0x20'),_0xe244aa+'-'+_0x1c5ab1+'/'+_0x2d12f8)[_0x8878('0x1a')](_0x1133d0);}return null;};}function patchUpdates(_0x1e6630){return function(_0x33a812){try{jsonpatch[_0x8878('0x21')](_0x33a812,_0x1e6630,!![]);}catch(_0xd93d46){return BPromise[_0x8878('0x22')](_0xd93d46);}return _0x33a812[_0x8878('0x23')]();};}function saveUpdates(_0x1e49c3,_0x5e8dce){return function(_0x17f646){if(_0x17f646){return _0x17f646[_0x8878('0x24')](_0x1e49c3)[_0x8878('0x25')](function(_0x45d00a){return _0x45d00a;});}return null;};}function removeEntity(_0x12c8d3,_0x3db20b){return function(_0x572f2d){if(_0x572f2d){return _0x572f2d[_0x8878('0x26')]()['then'](function(){var _0x22948e=_0x572f2d[_0x8878('0x27')]({'plain':!![]});var _0x5789b1=_0x8878('0x28');return db[_0x8878('0x29')][_0x8878('0x26')]({'where':{'type':_0x5789b1,'resourceId':_0x22948e['id']}})[_0x8878('0x25')](function(){return _0x572f2d;});})[_0x8878('0x25')](function(){_0x12c8d3[_0x8878('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x317485,_0x385c12){return function(_0x39b0af){if(!_0x39b0af){_0x317485[_0x8878('0x17')](0x194);}return _0x39b0af;};}function handleError(_0x19e68d,_0x241f94){_0x241f94=_0x241f94||0x1f4;return function(_0x5392e1){logger[_0x8878('0x2a')](_0x5392e1[_0x8878('0x2b')]);if(_0x5392e1[_0x8878('0x2c')]){delete _0x5392e1[_0x8878('0x2c')];}_0x19e68d[_0x8878('0x18')](_0x241f94)['send'](_0x5392e1);};}exports['index']=function(_0x110232,_0x4c8f76){var _0x4850a2={},_0x27291f={},_0x52921b={'count':0x0,'rows':[]};var _0x196299=_['map'](db[_0x8878('0x2d')][_0x8878('0x2e')],function(_0x16f4c8){return{'name':_0x16f4c8['fieldName'],'type':_0x16f4c8[_0x8878('0x2f')][_0x8878('0x30')]};});_0x27291f['model']=_[_0x8878('0x31')](_0x196299,_0x8878('0x2c'));_0x27291f['query']=_[_0x8878('0x32')](_0x110232[_0x8878('0x33')]);_0x27291f[_0x8878('0x34')]=_['intersection'](_0x27291f[_0x8878('0x35')],_0x27291f[_0x8878('0x33')]);_0x4850a2[_0x8878('0x36')]=_[_0x8878('0x37')](_0x27291f[_0x8878('0x35')],qs[_0x8878('0x38')](_0x110232[_0x8878('0x33')][_0x8878('0x38')]));_0x4850a2[_0x8878('0x36')]=_0x4850a2[_0x8878('0x36')][_0x8878('0x39')]?_0x4850a2[_0x8878('0x36')]:_0x27291f[_0x8878('0x35')];if(!_0x110232[_0x8878('0x33')]['hasOwnProperty'](_0x8878('0x3a'))){_0x4850a2[_0x8878('0x1d')]=qs[_0x8878('0x1d')](_0x110232[_0x8878('0x33')][_0x8878('0x1d')]);_0x4850a2['offset']=qs[_0x8878('0x1b')](_0x110232[_0x8878('0x33')][_0x8878('0x1b')]);}_0x4850a2[_0x8878('0x3b')]=qs[_0x8878('0x3c')](_0x110232[_0x8878('0x33')]['sort']);_0x4850a2[_0x8878('0x3d')]=qs[_0x8878('0x34')](_['pick'](_0x110232[_0x8878('0x33')],_0x27291f['filters']),_0x196299);if(_0x110232[_0x8878('0x33')]['filter']){_0x4850a2[_0x8878('0x3d')]=_[_0x8878('0x3e')](_0x4850a2[_0x8878('0x3d')],{'$or':_[_0x8878('0x31')](_0x196299,function(_0x16d969){if(_0x16d969[_0x8878('0x2f')]!==_0x8878('0x3f')){var _0x401694={};_0x401694[_0x16d969[_0x8878('0x2c')]]={'$like':'%'+_0x110232[_0x8878('0x33')]['filter']+'%'};return _0x401694;}})});}_0x4850a2=_['merge']({},_0x4850a2,_0x110232[_0x8878('0x40')]);var _0x4314c9={'where':_0x4850a2[_0x8878('0x3d')]};return db[_0x8878('0x2d')][_0x8878('0x1e')](_0x4314c9)[_0x8878('0x25')](function(_0x306035){_0x52921b[_0x8878('0x1e')]=_0x306035;if(_0x110232[_0x8878('0x33')][_0x8878('0x41')]){_0x4850a2[_0x8878('0x42')]=[{'all':!![]}];}return db[_0x8878('0x2d')]['findAll'](_0x4850a2);})[_0x8878('0x25')](function(_0xd5d4c4){_0x52921b[_0x8878('0x43')]=_0xd5d4c4;return _0x52921b;})[_0x8878('0x25')](respondWithFilteredResult(_0x4c8f76,_0x4850a2))[_0x8878('0x44')](handleError(_0x4c8f76,null));};exports[_0x8878('0x45')]=function(_0x3c4c54,_0x23b050){var _0x583c24={'raw':!![],'where':{'id':_0x3c4c54['params']['id']}},_0x3264fe={};_0x3264fe[_0x8878('0x35')]=_[_0x8878('0x32')](db[_0x8878('0x2d')][_0x8878('0x2e')]);_0x3264fe['query']=_['keys'](_0x3c4c54[_0x8878('0x33')]);_0x3264fe['filters']=_[_0x8878('0x37')](_0x3264fe[_0x8878('0x35')],_0x3264fe[_0x8878('0x33')]);_0x583c24[_0x8878('0x36')]=_['intersection'](_0x3264fe[_0x8878('0x35')],qs[_0x8878('0x38')](_0x3c4c54['query'][_0x8878('0x38')]));_0x583c24['attributes']=_0x583c24[_0x8878('0x36')][_0x8878('0x39')]?_0x583c24['attributes']:_0x3264fe[_0x8878('0x35')];if(_0x3c4c54[_0x8878('0x33')][_0x8878('0x41')]){_0x583c24[_0x8878('0x42')]=[{'all':!![]}];}_0x583c24=_[_0x8878('0x3e')]({},_0x583c24,_0x3c4c54[_0x8878('0x40')]);return db[_0x8878('0x2d')][_0x8878('0x46')](_0x583c24)[_0x8878('0x25')](handleEntityNotFound(_0x23b050,null))[_0x8878('0x25')](respondWithResult(_0x23b050,null))['catch'](handleError(_0x23b050,null));};exports[_0x8878('0x47')]=function(_0x22e042,_0x10e390){return db['Interval'][_0x8878('0x47')](_0x22e042['body'],{})['then'](function(_0x31fcf4){var _0x3183a0=_0x22e042[_0x8878('0x48')][_0x8878('0x27')]({'plain':!![]});if(!_0x3183a0)throw new Error(_0x8878('0x49'));if(_0x3183a0[_0x8878('0x4a')]===_0x8878('0x48')){var _0x48993e=_0x31fcf4['get']({'plain':!![]});var _0x3d0a33=_0x8878('0x28');return db['UserProfileSection'][_0x8878('0x46')]({'where':{'name':_0x3d0a33,'userProfileId':_0x3183a0[_0x8878('0x4b')]},'raw':!![]})[_0x8878('0x25')](function(_0x501620){if(_0x501620&&_0x501620[_0x8878('0x4c')]===0x0){return db['UserProfileResource'][_0x8878('0x47')]({'name':_0x48993e['name'],'resourceId':_0x48993e['id'],'type':_0x501620[_0x8878('0x2c')],'sectionId':_0x501620['id']},{})['then'](function(){return _0x31fcf4;});}else{return _0x31fcf4;}})['catch'](function(_0x1aafa6){logger['error'](_0x8878('0x4d'),_0x1aafa6);throw _0x1aafa6;});}return _0x31fcf4;})[_0x8878('0x25')](respondWithResult(_0x10e390,0xc9))[_0x8878('0x44')](handleError(_0x10e390,null));};exports[_0x8878('0x24')]=function(_0x184104,_0x2d8b8d){if(_0x184104['body']['id']){delete _0x184104[_0x8878('0x4e')]['id'];}return db[_0x8878('0x2d')][_0x8878('0x46')]({'where':{'id':_0x184104[_0x8878('0x4f')]['id']}})[_0x8878('0x25')](handleEntityNotFound(_0x2d8b8d,null))[_0x8878('0x25')](saveUpdates(_0x184104[_0x8878('0x4e')],null))[_0x8878('0x25')](respondWithResult(_0x2d8b8d,null))[_0x8878('0x44')](handleError(_0x2d8b8d,null));};exports[_0x8878('0x26')]=function(_0x3b3ade,_0x674b77){return db[_0x8878('0x2d')][_0x8878('0x46')]({'where':{'id':_0x3b3ade[_0x8878('0x4f')]['id']}})['then'](handleEntityNotFound(_0x674b77,null))['then'](removeEntity(_0x674b77,null))[_0x8878('0x44')](handleError(_0x674b77,null));};exports[_0x8878('0x50')]=function(_0x4905a5,_0xd09b46,_0x529cfd){if(_0x4905a5[_0x8878('0x4e')]['id']){delete _0x4905a5[_0x8878('0x4e')]['id'];}return db[_0x8878('0x2d')][_0x8878('0x46')]({'where':{'id':_0x4905a5[_0x8878('0x4f')]['id']}})[_0x8878('0x25')](handleEntityNotFound(_0xd09b46,null))[_0x8878('0x25')](function(_0x2ec87d){if(_0x2ec87d){_0x4905a5[_0x8878('0x4e')][_0x8878('0x51')]=_0x2ec87d['id'];return db[_0x8878('0x2d')][_0x8878('0x47')](_0x4905a5[_0x8878('0x4e')]);}})['then'](respondWithResult(_0xd09b46,null))[_0x8878('0x44')](handleError(_0xd09b46,null));};exports[_0x8878('0x52')]=function(_0x56ea31,_0x488a09,_0x1a1f38){var _0x10aed6={};var _0x3f634b={};var _0xd2e1c1;var _0x2dbe4c;return db[_0x8878('0x2d')][_0x8878('0x53')]({'where':{'id':_0x56ea31['params']['id']}})[_0x8878('0x25')](handleEntityNotFound(_0x488a09,null))[_0x8878('0x25')](function(_0x1725f4){if(_0x1725f4){_0xd2e1c1=_0x1725f4;_0x3f634b[_0x8878('0x35')]=_[_0x8878('0x32')](db[_0x8878('0x2d')]['rawAttributes']);_0x3f634b[_0x8878('0x33')]=_[_0x8878('0x32')](_0x56ea31[_0x8878('0x33')]);_0x3f634b[_0x8878('0x34')]=_[_0x8878('0x37')](_0x3f634b[_0x8878('0x35')],_0x3f634b['query']);_0x10aed6[_0x8878('0x36')]=_['intersection'](_0x3f634b[_0x8878('0x35')],qs['fields'](_0x56ea31[_0x8878('0x33')]['fields']));_0x10aed6['attributes']=_0x10aed6['attributes']['length']?_0x10aed6[_0x8878('0x36')]:_0x3f634b[_0x8878('0x35')];_0x10aed6[_0x8878('0x3b')]=qs['sort'](_0x56ea31[_0x8878('0x33')][_0x8878('0x3c')]);_0x10aed6[_0x8878('0x3d')]=qs[_0x8878('0x34')](_[_0x8878('0x54')](_0x56ea31[_0x8878('0x33')],_0x3f634b[_0x8878('0x34')]));if(_0x56ea31['query'][_0x8878('0x55')]){_0x10aed6['where']=_[_0x8878('0x3e')](_0x10aed6[_0x8878('0x3d')],{'$or':_[_0x8878('0x31')](_0x10aed6[_0x8878('0x36')],function(_0x509a65){var _0x55db8e={};_0x55db8e[_0x509a65]={'$like':'%'+_0x56ea31['query'][_0x8878('0x55')]+'%'};return _0x55db8e;})});}_0x10aed6=_['merge']({},_0x10aed6,_0x56ea31[_0x8878('0x40')]);return _0xd2e1c1[_0x8878('0x52')](_0x10aed6);}})['then'](function(_0x47f2d2){if(_0x47f2d2){_0x2dbe4c=_0x47f2d2['length'];if(!_0x56ea31[_0x8878('0x33')][_0x8878('0x56')]('nolimit')){_0x10aed6[_0x8878('0x1d')]=qs[_0x8878('0x1d')](_0x56ea31[_0x8878('0x33')][_0x8878('0x1d')]);_0x10aed6[_0x8878('0x1b')]=qs[_0x8878('0x1b')](_0x56ea31[_0x8878('0x33')]['offset']);}return _0xd2e1c1['getIntervals'](_0x10aed6);}})[_0x8878('0x25')](function(_0xbff4e3){if(_0xbff4e3){return _0xbff4e3?{'count':_0x2dbe4c,'rows':_0xbff4e3}:null;}})[_0x8878('0x25')](respondWithResult(_0x488a09,null))[_0x8878('0x44')](handleError(_0x488a09,null));};exports['addIntervals']=function(_0x22d0ed,_0x21be6f,_0x481ba7){return db['Interval'][_0x8878('0x53')]({'where':{'id':_0x22d0ed[_0x8878('0x4f')]['id']}})[_0x8878('0x25')](handleEntityNotFound(_0x21be6f,null))[_0x8878('0x25')](function(_0x4a208f){if(_0x4a208f){return db[_0x8878('0x57')][_0x8878('0x58')](function(_0x4d558f){return db[_0x8878('0x2d')][_0x8878('0x26')]({'where':{'IntervalId':_0x22d0ed[_0x8878('0x4f')]['id']},'transaction':_0x4d558f})[_0x8878('0x25')](function(_0x501a9b){var _0xaf997d=_[_0x8878('0x31')](_0x22d0ed[_0x8878('0x4e')],function(_0x3f915b){delete _0x3f915b['id'];_0x3f915b['IntervalId']=_0x22d0ed[_0x8878('0x4f')]['id'];return _0x3f915b;});return db[_0x8878('0x2d')][_0x8878('0x59')](_0xaf997d,{'transaction':_0x4d558f});});})[_0x8878('0x25')](function(){return db[_0x8878('0x2d')][_0x8878('0x5a')]({'where':{'IntervalId':_0x22d0ed[_0x8878('0x4f')]['id']}});});}})[_0x8878('0x25')](respondWithResult(_0x21be6f,null))['catch'](handleError(_0x21be6f,null));};
\ No newline at end of file
index 3bfa3bc..652d414 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a83=['Interval','tools_intervals','rewrite','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../components/extensions/rewrite','exports'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0x3a83,0x16b));var _0x33a8=function(_0x340ede,_0x4b16af){_0x340ede=_0x340ede-0x0;var _0xc19cc4=_0x3a83[_0x340ede];return _0xc19cc4;};'use strict';var _=require(_0x33a8('0x0'));var util=require('util');var logger=require(_0x33a8('0x1'))(_0x33a8('0x2'));var moment=require(_0x33a8('0x3'));var BPromise=require(_0x33a8('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x33a8('0x5'));var rimraf=require(_0x33a8('0x6'));var config=require('../../config/environment');var attributes=require('./interval.attributes');var extensions=require(_0x33a8('0x7'));module[_0x33a8('0x8')]=function(_0x55cdeb,_0x19741e){return _0x55cdeb['define'](_0x33a8('0x9'),attributes,{'tableName':_0x33a8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x369684,_0x18e601){extensions[_0x33a8('0xb')](_0x55cdeb,_0x369684);},'afterBulkCreate':function(_0x40f1d2,_0x453ecf,_0x5942f6){_0x5942f6();extensions[_0x33a8('0xb')](_0x55cdeb,_0x40f1d2[0x0]);},'afterUpdate':function(_0x381825,_0x4aa7d2){extensions[_0x33a8('0xb')](_0x55cdeb,_0x381825);},'afterDestroy':function(_0xd8f8c6,_0x140375){extensions[_0x33a8('0xb')](_0x55cdeb,_0xd8f8c6);}}});};
\ No newline at end of file
+var _0xbd33=['Interval','tools_intervals','rewrite','lodash','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./interval.attributes','../../components/extensions/rewrite','define'];(function(_0x112377,_0x5b22d9){var _0x424918=function(_0x28d282){while(--_0x28d282){_0x112377['push'](_0x112377['shift']());}};_0x424918(++_0x5b22d9);}(_0xbd33,0x155));var _0x3bd3=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xbd33[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x3bd3('0x0'));var util=require('util');var logger=require(_0x3bd3('0x1'))('api');var moment=require(_0x3bd3('0x2'));var BPromise=require(_0x3bd3('0x3'));var rp=require(_0x3bd3('0x4'));var fs=require('fs');var path=require(_0x3bd3('0x5'));var rimraf=require('rimraf');var config=require(_0x3bd3('0x6'));var attributes=require(_0x3bd3('0x7'));var extensions=require(_0x3bd3('0x8'));module['exports']=function(_0x47d924,_0x154da8){return _0x47d924[_0x3bd3('0x9')](_0x3bd3('0xa'),attributes,{'tableName':_0x3bd3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x5dee57,_0x307a5b){extensions['rewrite'](_0x47d924,_0x5dee57);},'afterBulkCreate':function(_0x252481,_0x3875ef,_0x7ef803){_0x7ef803();extensions[_0x3bd3('0xc')](_0x47d924,_0x252481[0x0]);},'afterUpdate':function(_0x22fc3c,_0x1a9f54){extensions[_0x3bd3('0xc')](_0x47d924,_0x22fc3c);},'afterDestroy':function(_0xa4adde,_0x10ed59){extensions[_0x3bd3('0xc')](_0x47d924,_0xa4adde);}}});};
\ No newline at end of file
index f98dc82..f350cb7 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(_0x5f3de3,_0x40f0f5){var _0x287e0d=function(_0x3189dc){while(--_0x3189dc){_0x5f3de3['push'](_0x5f3de3['shift']());}};_0x287e0d(++_0x40f0f5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2cfb58,_0x3d9412){_0x2cfb58=_0x2cfb58-0x0;var _0xd99951=_0xa9e0[_0x2cfb58];return _0xd99951;};'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(_0x495e9f,_0x1b1d80){var _0xb249d2=function(_0x3db4e4){while(--_0x3db4e4){_0x495e9f['push'](_0x495e9f['shift']());}};_0xb249d2(++_0x1b1d80);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f3848,_0x48564d){_0x2f3848=_0x2f3848-0x0;var _0x102668=_0xa9e0[_0x2f3848];return _0x102668;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}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 ef1a853..9527b81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['isAuthenticated','send','exports','express','Router','../../components/auth/service','./jira.controller'];(function(_0x4b3ce3,_0x250b2a){var _0x503faf=function(_0x56468e){while(--_0x56468e){_0x4b3ce3['push'](_0x4b3ce3['shift']());}};_0x503faf(++_0x250b2a);}(_0xdb28,0x106));var _0x8db2=function(_0x2f1a74,_0x1ae877){_0x2f1a74=_0x2f1a74-0x0;var _0x2ab55a=_0xdb28[_0x2f1a74];return _0x2ab55a;};'use strict';var express=require(_0x8db2('0x0'));var router=express[_0x8db2('0x1')]();var auth=require(_0x8db2('0x2'));var controller=require(_0x8db2('0x3'));router['post']('/',auth[_0x8db2('0x4')](),controller[_0x8db2('0x5')]);module[_0x8db2('0x6')]=router;
\ No newline at end of file
+var _0xadb5=['post','isAuthenticated','exports','Router','./jira.controller'];(function(_0x508afb,_0x5ae8fc){var _0x2b9550=function(_0x2b67f6){while(--_0x2b67f6){_0x508afb['push'](_0x508afb['shift']());}};_0x2b9550(++_0x5ae8fc);}(_0xadb5,0xad));var _0x5adb=function(_0x5abb71,_0x50d5bd){_0x5abb71=_0x5abb71-0x0;var _0x56d873=_0xadb5[_0x5abb71];return _0x56d873;};'use strict';var express=require('express');var router=express[_0x5adb('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x5adb('0x1'));router[_0x5adb('0x2')]('/',auth[_0x5adb('0x3')](),controller['send']);module[_0x5adb('0x4')]=router;
\ No newline at end of file
index 8d3adf6..152858e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x306a=['base64','setEncoding','utf8','status','statusCode','json','parse','error','api.jira','write','openIssue','send','body','headers','x-forwarded-for','connection','remoteAddress','socket','bluebird','https','api','support','3eAmWpBVP0','key','MOTGUI','summary','description','stringify','issuetype','customfield_11500','email','fields','customfield_11501','newToken','customfield_11503','name','customfield_11504','reason','track.xcallymotion.com','/rest/api/2/issue','POST','Basic\x20','toString'];(function(_0x5e0383,_0x5b4654){var _0x53f6a0=function(_0x50bf02){while(--_0x50bf02){_0x5e0383['push'](_0x5e0383['shift']());}};_0x53f6a0(++_0x5b4654);}(_0x306a,0xe9));var _0xa306=function(_0x4ea971,_0x174234){_0x4ea971=_0x4ea971-0x0;var _0x86b88d=_0x306a[_0x4ea971];return _0x86b88d;};'use strict';var BPromise=require(_0xa306('0x0'));var https=require(_0xa306('0x1'));var logger=require('../../config/logger')(_0xa306('0x2'));var USERNAME=_0xa306('0x3');var PASSWORD=_0xa306('0x4');function openIssue(_0x52f998,_0x35de12){var _0x563136={'fields':{'project':{'key':_0x52f998[_0xa306('0x5')]||_0xa306('0x6')},'summary':(_0x52f998[_0xa306('0x7')]||'Report')+'\x20from\x20'+_0x52f998['ip'],'description':_0x52f998[_0xa306('0x8')]||JSON[_0xa306('0x9')](_0x52f998),'issuetype':{'name':_0x52f998[_0xa306('0xa')]||'Bug'}}};_0x563136['fields'][_0xa306('0xb')]=_0x52f998[_0xa306('0xc')];_0x563136[_0xa306('0xd')][_0xa306('0xe')]=_0x52f998['oldToken'];_0x563136[_0xa306('0xd')]['customfield_11502']=_0x52f998[_0xa306('0xf')];_0x563136['fields'][_0xa306('0x10')]=_0x52f998[_0xa306('0x11')];_0x563136[_0xa306('0xd')][_0xa306('0x12')]=_0x52f998[_0xa306('0x13')];_0x563136[_0xa306('0xd')]['customfield_10102']=_0x52f998['ip'];var _0x1511f6={'host':_0xa306('0x14'),'port':0x1bb,'path':_0xa306('0x15'),'method':_0xa306('0x16'),'timeout':0x4e20,'headers':{'Content-Type':'application/json','Authorization':_0xa306('0x17')+new Buffer(USERNAME+':'+PASSWORD)[_0xa306('0x18')](_0xa306('0x19'))}};var _0x47ac83=JSON[_0xa306('0x9')](_0x563136);var _0x560478=https['request'](_0x1511f6,function(_0x207e4b){_0x207e4b[_0xa306('0x1a')](_0xa306('0x1b'));var _0x455e70='';_0x207e4b['on']('data',function(_0x57bee1){_0x455e70+=_0x57bee1;});_0x207e4b['on']('end',function(){if(_0x35de12){return _0x35de12[_0xa306('0x1c')](_0x207e4b[_0xa306('0x1d')])[_0xa306('0x1e')](JSON[_0xa306('0x1f')](_0x455e70));}});});_0x560478['on'](_0xa306('0x20'),function(_0xe6521a){if(_0x35de12){return _0x35de12[_0xa306('0x1c')](0x1f4)[_0xa306('0x1e')]({'errors':[{'message':'Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','type':_0xa306('0x21')}]});}});_0x560478[_0xa306('0x22')](_0x47ac83);_0x560478['end']();}exports[_0xa306('0x23')]=openIssue;exports[_0xa306('0x24')]=function(_0x1b58a1,_0x2ed55c){_0x1b58a1[_0xa306('0x25')]['ip']=_0x1b58a1[_0xa306('0x26')][_0xa306('0x27')]||_0x1b58a1[_0xa306('0x28')][_0xa306('0x29')]||_0x1b58a1[_0xa306('0x2a')][_0xa306('0x29')]||_0x1b58a1[_0xa306('0x28')][_0xa306('0x2a')][_0xa306('0x29')];return openIssue(_0x1b58a1[_0xa306('0x25')],_0x2ed55c);};
\ No newline at end of file
+var _0x6324=['name','customfield_11504','reason','track.xcallymotion.com','POST','application/json','Basic\x20','toString','request','setEncoding','utf8','end','statusCode','json','parse','status','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','write','openIssue','send','body','x-forwarded-for','connection','remoteAddress','socket','bluebird','https','../../config/logger','api','support','3eAmWpBVP0','MOTGUI','Report','description','stringify','Bug','email','fields','customfield_11501','oldToken','customfield_11502'];(function(_0x5ae794,_0x36def7){var _0x26b363=function(_0x1b8395){while(--_0x1b8395){_0x5ae794['push'](_0x5ae794['shift']());}};_0x26b363(++_0x36def7);}(_0x6324,0x10f));var _0x4632=function(_0x20e1fd,_0x506bf0){_0x20e1fd=_0x20e1fd-0x0;var _0x3be635=_0x6324[_0x20e1fd];return _0x3be635;};'use strict';var BPromise=require(_0x4632('0x0'));var https=require(_0x4632('0x1'));var logger=require(_0x4632('0x2'))(_0x4632('0x3'));var USERNAME=_0x4632('0x4');var PASSWORD=_0x4632('0x5');function openIssue(_0x2827e6,_0x1bcd3c){var _0xb017ef={'fields':{'project':{'key':_0x2827e6['key']||_0x4632('0x6')},'summary':(_0x2827e6['summary']||_0x4632('0x7'))+'\x20from\x20'+_0x2827e6['ip'],'description':_0x2827e6[_0x4632('0x8')]||JSON[_0x4632('0x9')](_0x2827e6),'issuetype':{'name':_0x2827e6['issuetype']||_0x4632('0xa')}}};_0xb017ef['fields']['customfield_11500']=_0x2827e6[_0x4632('0xb')];_0xb017ef[_0x4632('0xc')][_0x4632('0xd')]=_0x2827e6[_0x4632('0xe')];_0xb017ef[_0x4632('0xc')][_0x4632('0xf')]=_0x2827e6['newToken'];_0xb017ef['fields']['customfield_11503']=_0x2827e6[_0x4632('0x10')];_0xb017ef[_0x4632('0xc')][_0x4632('0x11')]=_0x2827e6[_0x4632('0x12')];_0xb017ef[_0x4632('0xc')]['customfield_10102']=_0x2827e6['ip'];var _0x25c860={'host':_0x4632('0x13'),'port':0x1bb,'path':'/rest/api/2/issue','method':_0x4632('0x14'),'timeout':0x4e20,'headers':{'Content-Type':_0x4632('0x15'),'Authorization':_0x4632('0x16')+new Buffer(USERNAME+':'+PASSWORD)[_0x4632('0x17')]('base64')}};var _0x2e7548=JSON[_0x4632('0x9')](_0xb017ef);var _0x143e7e=https[_0x4632('0x18')](_0x25c860,function(_0x2de2ff){_0x2de2ff[_0x4632('0x19')](_0x4632('0x1a'));var _0x1423d0='';_0x2de2ff['on']('data',function(_0x5bb91a){_0x1423d0+=_0x5bb91a;});_0x2de2ff['on'](_0x4632('0x1b'),function(){if(_0x1bcd3c){return _0x1bcd3c['status'](_0x2de2ff[_0x4632('0x1c')])[_0x4632('0x1d')](JSON[_0x4632('0x1e')](_0x1423d0));}});});_0x143e7e['on']('error',function(_0x169029){if(_0x1bcd3c){return _0x1bcd3c[_0x4632('0x1f')](0x1f4)[_0x4632('0x1d')]({'errors':[{'message':_0x4632('0x20'),'type':'api.jira'}]});}});_0x143e7e[_0x4632('0x21')](_0x2e7548);_0x143e7e[_0x4632('0x1b')]();}exports[_0x4632('0x22')]=openIssue;exports[_0x4632('0x23')]=function(_0xbd54c7,_0x5847cf){_0xbd54c7[_0x4632('0x24')]['ip']=_0xbd54c7['headers'][_0x4632('0x25')]||_0xbd54c7[_0x4632('0x26')]['remoteAddress']||_0xbd54c7['socket'][_0x4632('0x27')]||_0xbd54c7[_0x4632('0x26')][_0x4632('0x28')][_0x4632('0x27')];return openIssue(_0xbd54c7['body'],_0x5847cf);};
\ No newline at end of file
index 627b349..875334d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bb5=['describe','show','post','put','/:id','update','delete','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyAnswerReport.controller','get','/describe','isAuthenticated'];(function(_0x2fa45e,_0x4445ba){var _0x13e09b=function(_0x70cd0d){while(--_0x70cd0d){_0x2fa45e['push'](_0x2fa45e['shift']());}};_0x13e09b(++_0x4445ba);}(_0x0bb5,0x148));var _0x50bb=function(_0x35aa3d,_0x39731f){_0x35aa3d=_0x35aa3d-0x0;var _0x5f5b55=_0x0bb5[_0x35aa3d];return _0x5f5b55;};'use strict';var multer=require(_0x50bb('0x0'));var util=require(_0x50bb('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x50bb('0x2'));var router=express[_0x50bb('0x3')]();var fs_extra=require(_0x50bb('0x4'));var auth=require(_0x50bb('0x5'));var interaction=require(_0x50bb('0x6'));var config=require(_0x50bb('0x7'));var controller=require(_0x50bb('0x8'));router[_0x50bb('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x50bb('0x9')](_0x50bb('0xa'),auth[_0x50bb('0xb')](),controller[_0x50bb('0xc')]);router['get']('/:id',auth[_0x50bb('0xb')](),controller[_0x50bb('0xd')]);router[_0x50bb('0xe')]('/',auth[_0x50bb('0xb')](),controller['create']);router[_0x50bb('0xf')](_0x50bb('0x10'),auth[_0x50bb('0xb')](),controller[_0x50bb('0x11')]);router[_0x50bb('0x12')](_0x50bb('0x10'),auth[_0x50bb('0xb')](),controller['destroy']);module[_0x50bb('0x13')]=router;
\ No newline at end of file
+var _0x22fb=['./jscriptyAnswerReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x384fbc,_0x11696f){var _0x2b7827=function(_0x33ee67){while(--_0x33ee67){_0x384fbc['push'](_0x384fbc['shift']());}};_0x2b7827(++_0x11696f);}(_0x22fb,0x192));var _0xb22f=function(_0x39b03c,_0x15be11){_0x39b03c=_0x39b03c-0x0;var _0x58d778=_0x22fb[_0x39b03c];return _0x58d778;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xb22f('0x0'));var timeout=require('connect-timeout');var express=require(_0xb22f('0x1'));var router=express[_0xb22f('0x2')]();var fs_extra=require(_0xb22f('0x3'));var auth=require(_0xb22f('0x4'));var interaction=require(_0xb22f('0x5'));var config=require('../../config/environment');var controller=require(_0xb22f('0x6'));router[_0xb22f('0x7')]('/',auth[_0xb22f('0x8')](),controller[_0xb22f('0x9')]);router[_0xb22f('0x7')](_0xb22f('0xa'),auth['isAuthenticated'](),controller[_0xb22f('0xb')]);router[_0xb22f('0x7')](_0xb22f('0xc'),auth[_0xb22f('0x8')](),controller[_0xb22f('0xd')]);router[_0xb22f('0xe')]('/',auth[_0xb22f('0x8')](),controller[_0xb22f('0xf')]);router[_0xb22f('0x10')](_0xb22f('0xc'),auth[_0xb22f('0x8')](),controller['update']);router['delete']('/:id',auth[_0xb22f('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index d72b20a..b4c149e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0x7a54,0x106));var _0x47a5=function(_0x6b21f3,_0x205c0f){_0x6b21f3=_0x6b21f3-0x0;var _0x193ee2=_0x7a54[_0x6b21f3];return _0x193ee2;};'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(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0x7a54,0x106));var _0x47a5=function(_0x2450d9,_0x309495){_0x2450d9=_0x2450d9-0x0;var _0x35e91f=_0x7a54[_0x2450d9];return _0x35e91f;};'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 1a78053..b17728c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41fe=['fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','save','update','then','error','stack','name','send','index','map','JscriptyAnswerReport','rawAttributes','fieldName','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','options','includeAll','include','findAll','catch','show','keys','create','body','find','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs'];(function(_0x5c6b56,_0x50899c){var _0x422328=function(_0x1da49e){while(--_0x1da49e){_0x5c6b56['push'](_0x5c6b56['shift']());}};_0x422328(++_0x50899c);}(_0x41fe,0xd1));var _0xe41f=function(_0x585d81,_0xf6d74f){_0x585d81=_0x585d81-0x0;var _0x1aca0d=_0x41fe[_0x585d81];return _0x1aca0d;};'use strict';var emlformat=require(_0xe41f('0x0'));var rimraf=require(_0xe41f('0x1'));var zipdir=require(_0xe41f('0x2'));var jsonpatch=require(_0xe41f('0x3'));var rp=require(_0xe41f('0x4'));var moment=require(_0xe41f('0x5'));var BPromise=require(_0xe41f('0x6'));var Mustache=require(_0xe41f('0x7'));var util=require(_0xe41f('0x8'));var path=require(_0xe41f('0x9'));var sox=require(_0xe41f('0xa'));var csv=require(_0xe41f('0xb'));var ejs=require(_0xe41f('0xc'));var fs=require('fs');var fs_extra=require(_0xe41f('0xd'));var _=require(_0xe41f('0xe'));var squel=require(_0xe41f('0xf'));var crypto=require(_0xe41f('0x10'));var jsforce=require('jsforce');var deskjs=require(_0xe41f('0x11'));var toCsv=require(_0xe41f('0xb'));var querystring=require('querystring');var Papa=require(_0xe41f('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe41f('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xe41f('0x14'));var config=require(_0xe41f('0x15'));var licenseUtil=require(_0xe41f('0x16'));var db=require(_0xe41f('0x17'))['db'];function respondWithStatusCode(_0x2ed268,_0x139162){_0x139162=_0x139162||0xcc;return function(_0x34ae3a){if(_0x34ae3a){return _0x2ed268[_0xe41f('0x18')](_0x139162);}return _0x2ed268[_0xe41f('0x19')](_0x139162)[_0xe41f('0x1a')]();};}function respondWithResult(_0x53e2f6,_0x445e1c){_0x445e1c=_0x445e1c||0xc8;return function(_0x13a2dd){if(_0x13a2dd){return _0x53e2f6['status'](_0x445e1c)[_0xe41f('0x1b')](_0x13a2dd);}};}function respondWithFilteredResult(_0x9cb27c,_0x3b5992){return function(_0x1fb373){if(_0x1fb373){var _0x194653=typeof _0x3b5992[_0xe41f('0x1c')]===_0xe41f('0x1d')&&typeof _0x3b5992['limit']==='undefined';var _0x2b5688=_0x1fb373['count'];var _0x5b5dd7=_0x194653?0x0:_0x3b5992[_0xe41f('0x1c')];var _0x15f6c1=_0x194653?_0x1fb373[_0xe41f('0x1e')]:_0x3b5992[_0xe41f('0x1c')]+_0x3b5992[_0xe41f('0x1f')];var _0x5bd220;if(_0x15f6c1>=_0x2b5688){_0x15f6c1=_0x2b5688;_0x5bd220=0xc8;}else{_0x5bd220=0xce;}_0x9cb27c[_0xe41f('0x19')](_0x5bd220);return _0x9cb27c['set'](_0xe41f('0x20'),_0x5b5dd7+'-'+_0x15f6c1+'/'+_0x2b5688)[_0xe41f('0x1b')](_0x1fb373);}return null;};}function patchUpdates(_0x4dcb21){return function(_0x3ce4d8){try{jsonpatch[_0xe41f('0x21')](_0x3ce4d8,_0x4dcb21,!![]);}catch(_0x171851){return BPromise['reject'](_0x171851);}return _0x3ce4d8[_0xe41f('0x22')]();};}function saveUpdates(_0x3666c3,_0x37fce9){return function(_0x10ee63){if(_0x10ee63){return _0x10ee63[_0xe41f('0x23')](_0x3666c3)[_0xe41f('0x24')](function(_0x9c0c33){return _0x9c0c33;});}return null;};}function removeEntity(_0x520136,_0x18c6ba){return function(_0x5a443f){if(_0x5a443f){return _0x5a443f['destroy']()[_0xe41f('0x24')](function(){_0x520136[_0xe41f('0x19')](0xcc)[_0xe41f('0x1a')]();});}};}function handleEntityNotFound(_0x4f7965,_0x1ac25a){return function(_0x573b3){if(!_0x573b3){_0x4f7965[_0xe41f('0x18')](0x194);}return _0x573b3;};}function handleError(_0x479387,_0x15ccae){_0x15ccae=_0x15ccae||0x1f4;return function(_0x5790ae){logger[_0xe41f('0x25')](_0x5790ae[_0xe41f('0x26')]);if(_0x5790ae['name']){delete _0x5790ae[_0xe41f('0x27')];}_0x479387[_0xe41f('0x19')](_0x15ccae)[_0xe41f('0x28')](_0x5790ae);};}exports[_0xe41f('0x29')]=function(_0x348531,_0x2a7bf4){var _0x1a182b={},_0x4438cf={},_0x6ec664={'count':0x0,'rows':[]};var _0x1c3c38=_[_0xe41f('0x2a')](db[_0xe41f('0x2b')][_0xe41f('0x2c')],function(_0xbca5b0){return{'name':_0xbca5b0[_0xe41f('0x2d')],'type':_0xbca5b0['type'][_0xe41f('0x2e')]};});_0x4438cf[_0xe41f('0x2f')]=_[_0xe41f('0x2a')](_0x1c3c38,_0xe41f('0x27'));_0x4438cf[_0xe41f('0x30')]=_['keys'](_0x348531[_0xe41f('0x30')]);_0x4438cf[_0xe41f('0x31')]=_[_0xe41f('0x32')](_0x4438cf[_0xe41f('0x2f')],_0x4438cf['query']);_0x1a182b['attributes']=_['intersection'](_0x4438cf[_0xe41f('0x2f')],qs[_0xe41f('0x33')](_0x348531[_0xe41f('0x30')]['fields']));_0x1a182b[_0xe41f('0x34')]=_0x1a182b[_0xe41f('0x34')][_0xe41f('0x35')]?_0x1a182b[_0xe41f('0x34')]:_0x4438cf[_0xe41f('0x2f')];if(!_0x348531[_0xe41f('0x30')][_0xe41f('0x36')](_0xe41f('0x37'))){_0x1a182b[_0xe41f('0x1f')]=qs[_0xe41f('0x1f')](_0x348531[_0xe41f('0x30')][_0xe41f('0x1f')]);_0x1a182b['offset']=qs[_0xe41f('0x1c')](_0x348531['query'][_0xe41f('0x1c')]);}_0x1a182b['order']=qs[_0xe41f('0x38')](_0x348531['query']['sort']);_0x1a182b[_0xe41f('0x39')]=qs[_0xe41f('0x31')](_[_0xe41f('0x3a')](_0x348531[_0xe41f('0x30')],_0x4438cf[_0xe41f('0x31')]),_0x1c3c38);if(_0x348531['query'][_0xe41f('0x3b')]){_0x1a182b[_0xe41f('0x39')]=_[_0xe41f('0x3c')](_0x1a182b[_0xe41f('0x39')],{'$or':_[_0xe41f('0x2a')](_0x1c3c38,function(_0x10083c){if(_0x10083c[_0xe41f('0x3d')]!=='VIRTUAL'){var _0x438ead={};_0x438ead[_0x10083c[_0xe41f('0x27')]]={'$like':'%'+_0x348531[_0xe41f('0x30')][_0xe41f('0x3b')]+'%'};return _0x438ead;}})});}_0x1a182b=_[_0xe41f('0x3c')]({},_0x1a182b,_0x348531[_0xe41f('0x3e')]);var _0x2d0cf7={'where':_0x1a182b[_0xe41f('0x39')]};return db[_0xe41f('0x2b')]['count'](_0x2d0cf7)['then'](function(_0x537fbf){_0x6ec664['count']=_0x537fbf;if(_0x348531[_0xe41f('0x30')][_0xe41f('0x3f')]){_0x1a182b[_0xe41f('0x40')]=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0xe41f('0x41')](_0x1a182b);})[_0xe41f('0x24')](function(_0x55bf6f){_0x6ec664['rows']=_0x55bf6f;return _0x6ec664;})[_0xe41f('0x24')](respondWithFilteredResult(_0x2a7bf4,_0x1a182b))[_0xe41f('0x42')](handleError(_0x2a7bf4,null));};exports[_0xe41f('0x43')]=function(_0x384001,_0x27bdee){var _0x56e180={'raw':!![],'where':{'id':_0x384001['params']['id']}},_0x82727b={};_0x82727b[_0xe41f('0x2f')]=_[_0xe41f('0x44')](db['JscriptyAnswerReport'][_0xe41f('0x2c')]);_0x82727b['query']=_[_0xe41f('0x44')](_0x384001[_0xe41f('0x30')]);_0x82727b[_0xe41f('0x31')]=_['intersection'](_0x82727b[_0xe41f('0x2f')],_0x82727b['query']);_0x56e180[_0xe41f('0x34')]=_[_0xe41f('0x32')](_0x82727b[_0xe41f('0x2f')],qs[_0xe41f('0x33')](_0x384001[_0xe41f('0x30')][_0xe41f('0x33')]));_0x56e180[_0xe41f('0x34')]=_0x56e180[_0xe41f('0x34')]['length']?_0x56e180[_0xe41f('0x34')]:_0x82727b['model'];if(_0x384001[_0xe41f('0x30')]['includeAll']){_0x56e180[_0xe41f('0x40')]=[{'all':!![]}];}_0x56e180=_[_0xe41f('0x3c')]({},_0x56e180,_0x384001[_0xe41f('0x3e')]);return db[_0xe41f('0x2b')]['find'](_0x56e180)[_0xe41f('0x24')](handleEntityNotFound(_0x27bdee,null))['then'](respondWithResult(_0x27bdee,null))[_0xe41f('0x42')](handleError(_0x27bdee,null));};exports[_0xe41f('0x45')]=function(_0x6154a,_0x3a5974){return db['JscriptyAnswerReport'][_0xe41f('0x45')](_0x6154a['body'],{})['then'](respondWithResult(_0x3a5974,0xc9))['catch'](handleError(_0x3a5974,null));};exports[_0xe41f('0x23')]=function(_0x25b374,_0x59ef57){if(_0x25b374[_0xe41f('0x46')]['id']){delete _0x25b374[_0xe41f('0x46')]['id'];}return db[_0xe41f('0x2b')][_0xe41f('0x47')]({'where':{'id':_0x25b374[_0xe41f('0x48')]['id']}})[_0xe41f('0x24')](handleEntityNotFound(_0x59ef57,null))[_0xe41f('0x24')](saveUpdates(_0x25b374[_0xe41f('0x46')],null))[_0xe41f('0x24')](respondWithResult(_0x59ef57,null))[_0xe41f('0x42')](handleError(_0x59ef57,null));};exports['destroy']=function(_0x119e32,_0x97c6c6){return db[_0xe41f('0x2b')]['find']({'where':{'id':_0x119e32[_0xe41f('0x48')]['id']}})[_0xe41f('0x24')](handleEntityNotFound(_0x97c6c6,null))[_0xe41f('0x24')](removeEntity(_0x97c6c6,null))[_0xe41f('0x42')](handleError(_0x97c6c6,null));};exports[_0xe41f('0x49')]=function(_0x4f8f47,_0x23cb73){return db[_0xe41f('0x2b')]['describe']()['then'](respondWithResult(_0x23cb73,null))['catch'](handleError(_0x23cb73,null));};
\ No newline at end of file
+var _0xf2ca=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','then','error','stack','name','send','index','map','JscriptyAnswerReport','rawAttributes','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','filters','pick','filter','merge','where','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','params','keys','find','create','body','update','destroy','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs'];(function(_0x25f5b8,_0x2d8313){var _0x364bdc=function(_0x4b2038){while(--_0x4b2038){_0x25f5b8['push'](_0x25f5b8['shift']());}};_0x364bdc(++_0x2d8313);}(_0xf2ca,0x16a));var _0xaf2c=function(_0x1b964a,_0x40fdc2){_0x1b964a=_0x1b964a-0x0;var _0x2559fa=_0xf2ca[_0x1b964a];return _0x2559fa;};'use strict';var emlformat=require(_0xaf2c('0x0'));var rimraf=require(_0xaf2c('0x1'));var zipdir=require(_0xaf2c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xaf2c('0x3'));var moment=require(_0xaf2c('0x4'));var BPromise=require(_0xaf2c('0x5'));var Mustache=require(_0xaf2c('0x6'));var util=require(_0xaf2c('0x7'));var path=require(_0xaf2c('0x8'));var sox=require('sox');var csv=require(_0xaf2c('0x9'));var ejs=require(_0xaf2c('0xa'));var fs=require('fs');var fs_extra=require(_0xaf2c('0xb'));var _=require(_0xaf2c('0xc'));var squel=require('squel');var crypto=require(_0xaf2c('0xd'));var jsforce=require(_0xaf2c('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xaf2c('0x9'));var querystring=require('querystring');var Papa=require(_0xaf2c('0xf'));var Redis=require('ioredis');var authService=require(_0xaf2c('0x10'));var qs=require(_0xaf2c('0x11'));var as=require(_0xaf2c('0x12'));var hardwareService=require(_0xaf2c('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xaf2c('0x14'));var config=require(_0xaf2c('0x15'));var licenseUtil=require(_0xaf2c('0x16'));var db=require(_0xaf2c('0x17'))['db'];function respondWithStatusCode(_0x285dac,_0x59a59b){_0x59a59b=_0x59a59b||0xcc;return function(_0x590126){if(_0x590126){return _0x285dac[_0xaf2c('0x18')](_0x59a59b);}return _0x285dac[_0xaf2c('0x19')](_0x59a59b)[_0xaf2c('0x1a')]();};}function respondWithResult(_0x18a8a5,_0x293ca6){_0x293ca6=_0x293ca6||0xc8;return function(_0x152c73){if(_0x152c73){return _0x18a8a5[_0xaf2c('0x19')](_0x293ca6)[_0xaf2c('0x1b')](_0x152c73);}};}function respondWithFilteredResult(_0x2119c8,_0x1d0633){return function(_0x6ac8e){if(_0x6ac8e){var _0x2b4d13=typeof _0x1d0633[_0xaf2c('0x1c')]===_0xaf2c('0x1d')&&typeof _0x1d0633[_0xaf2c('0x1e')]==='undefined';var _0x3ca650=_0x6ac8e['count'];var _0x278a28=_0x2b4d13?0x0:_0x1d0633[_0xaf2c('0x1c')];var _0x1d544a=_0x2b4d13?_0x6ac8e['count']:_0x1d0633[_0xaf2c('0x1c')]+_0x1d0633[_0xaf2c('0x1e')];var _0x1fec4c;if(_0x1d544a>=_0x3ca650){_0x1d544a=_0x3ca650;_0x1fec4c=0xc8;}else{_0x1fec4c=0xce;}_0x2119c8[_0xaf2c('0x19')](_0x1fec4c);return _0x2119c8[_0xaf2c('0x1f')](_0xaf2c('0x20'),_0x278a28+'-'+_0x1d544a+'/'+_0x3ca650)['json'](_0x6ac8e);}return null;};}function patchUpdates(_0x35e712){return function(_0x164bcb){try{jsonpatch[_0xaf2c('0x21')](_0x164bcb,_0x35e712,!![]);}catch(_0x3bfd3f){return BPromise[_0xaf2c('0x22')](_0x3bfd3f);}return _0x164bcb['save']();};}function saveUpdates(_0x396646,_0xbf6f62){return function(_0x18153c){if(_0x18153c){return _0x18153c['update'](_0x396646)['then'](function(_0x29cbdf){return _0x29cbdf;});}return null;};}function removeEntity(_0x303546,_0x1cafad){return function(_0x99f78d){if(_0x99f78d){return _0x99f78d['destroy']()[_0xaf2c('0x23')](function(){_0x303546[_0xaf2c('0x19')](0xcc)[_0xaf2c('0x1a')]();});}};}function handleEntityNotFound(_0x3c1ae6,_0xe929b5){return function(_0xff396f){if(!_0xff396f){_0x3c1ae6[_0xaf2c('0x18')](0x194);}return _0xff396f;};}function handleError(_0x4a8dd8,_0x29f8b0){_0x29f8b0=_0x29f8b0||0x1f4;return function(_0x2051be){logger[_0xaf2c('0x24')](_0x2051be[_0xaf2c('0x25')]);if(_0x2051be['name']){delete _0x2051be[_0xaf2c('0x26')];}_0x4a8dd8['status'](_0x29f8b0)[_0xaf2c('0x27')](_0x2051be);};}exports[_0xaf2c('0x28')]=function(_0x15466b,_0x5d685a){var _0x2747bb={},_0x2ea490={},_0x3baee2={'count':0x0,'rows':[]};var _0x4a96d2=_[_0xaf2c('0x29')](db[_0xaf2c('0x2a')][_0xaf2c('0x2b')],function(_0x19364e){return{'name':_0x19364e['fieldName'],'type':_0x19364e[_0xaf2c('0x2c')][_0xaf2c('0x2d')]};});_0x2ea490[_0xaf2c('0x2e')]=_['map'](_0x4a96d2,'name');_0x2ea490[_0xaf2c('0x2f')]=_['keys'](_0x15466b[_0xaf2c('0x2f')]);_0x2ea490['filters']=_[_0xaf2c('0x30')](_0x2ea490[_0xaf2c('0x2e')],_0x2ea490['query']);_0x2747bb[_0xaf2c('0x31')]=_[_0xaf2c('0x30')](_0x2ea490['model'],qs[_0xaf2c('0x32')](_0x15466b[_0xaf2c('0x2f')][_0xaf2c('0x32')]));_0x2747bb[_0xaf2c('0x31')]=_0x2747bb[_0xaf2c('0x31')][_0xaf2c('0x33')]?_0x2747bb['attributes']:_0x2ea490[_0xaf2c('0x2e')];if(!_0x15466b['query'][_0xaf2c('0x34')]('nolimit')){_0x2747bb[_0xaf2c('0x1e')]=qs['limit'](_0x15466b[_0xaf2c('0x2f')]['limit']);_0x2747bb[_0xaf2c('0x1c')]=qs['offset'](_0x15466b[_0xaf2c('0x2f')][_0xaf2c('0x1c')]);}_0x2747bb[_0xaf2c('0x35')]=qs[_0xaf2c('0x36')](_0x15466b[_0xaf2c('0x2f')]['sort']);_0x2747bb['where']=qs[_0xaf2c('0x37')](_[_0xaf2c('0x38')](_0x15466b[_0xaf2c('0x2f')],_0x2ea490[_0xaf2c('0x37')]),_0x4a96d2);if(_0x15466b[_0xaf2c('0x2f')][_0xaf2c('0x39')]){_0x2747bb['where']=_[_0xaf2c('0x3a')](_0x2747bb[_0xaf2c('0x3b')],{'$or':_['map'](_0x4a96d2,function(_0x36081a){if(_0x36081a[_0xaf2c('0x2c')]!==_0xaf2c('0x3c')){var _0x71c597={};_0x71c597[_0x36081a[_0xaf2c('0x26')]]={'$like':'%'+_0x15466b[_0xaf2c('0x2f')][_0xaf2c('0x39')]+'%'};return _0x71c597;}})});}_0x2747bb=_[_0xaf2c('0x3a')]({},_0x2747bb,_0x15466b[_0xaf2c('0x3d')]);var _0x106eb9={'where':_0x2747bb[_0xaf2c('0x3b')]};return db[_0xaf2c('0x2a')][_0xaf2c('0x3e')](_0x106eb9)['then'](function(_0x54a953){_0x3baee2['count']=_0x54a953;if(_0x15466b[_0xaf2c('0x2f')][_0xaf2c('0x3f')]){_0x2747bb[_0xaf2c('0x40')]=[{'all':!![]}];}return db[_0xaf2c('0x2a')][_0xaf2c('0x41')](_0x2747bb);})[_0xaf2c('0x23')](function(_0x51c441){_0x3baee2[_0xaf2c('0x42')]=_0x51c441;return _0x3baee2;})[_0xaf2c('0x23')](respondWithFilteredResult(_0x5d685a,_0x2747bb))[_0xaf2c('0x43')](handleError(_0x5d685a,null));};exports['show']=function(_0x493266,_0x4ac61a){var _0x4f8440={'raw':!![],'where':{'id':_0x493266[_0xaf2c('0x44')]['id']}},_0x181787={};_0x181787[_0xaf2c('0x2e')]=_[_0xaf2c('0x45')](db['JscriptyAnswerReport'][_0xaf2c('0x2b')]);_0x181787['query']=_[_0xaf2c('0x45')](_0x493266[_0xaf2c('0x2f')]);_0x181787['filters']=_[_0xaf2c('0x30')](_0x181787['model'],_0x181787[_0xaf2c('0x2f')]);_0x4f8440[_0xaf2c('0x31')]=_[_0xaf2c('0x30')](_0x181787[_0xaf2c('0x2e')],qs[_0xaf2c('0x32')](_0x493266[_0xaf2c('0x2f')][_0xaf2c('0x32')]));_0x4f8440[_0xaf2c('0x31')]=_0x4f8440[_0xaf2c('0x31')]['length']?_0x4f8440['attributes']:_0x181787[_0xaf2c('0x2e')];if(_0x493266['query']['includeAll']){_0x4f8440['include']=[{'all':!![]}];}_0x4f8440=_[_0xaf2c('0x3a')]({},_0x4f8440,_0x493266[_0xaf2c('0x3d')]);return db[_0xaf2c('0x2a')][_0xaf2c('0x46')](_0x4f8440)['then'](handleEntityNotFound(_0x4ac61a,null))[_0xaf2c('0x23')](respondWithResult(_0x4ac61a,null))['catch'](handleError(_0x4ac61a,null));};exports[_0xaf2c('0x47')]=function(_0x5ae138,_0x166c26){return db[_0xaf2c('0x2a')][_0xaf2c('0x47')](_0x5ae138[_0xaf2c('0x48')],{})[_0xaf2c('0x23')](respondWithResult(_0x166c26,0xc9))['catch'](handleError(_0x166c26,null));};exports[_0xaf2c('0x49')]=function(_0x26afee,_0x4b3ca4){if(_0x26afee['body']['id']){delete _0x26afee[_0xaf2c('0x48')]['id'];}return db['JscriptyAnswerReport'][_0xaf2c('0x46')]({'where':{'id':_0x26afee[_0xaf2c('0x44')]['id']}})[_0xaf2c('0x23')](handleEntityNotFound(_0x4b3ca4,null))[_0xaf2c('0x23')](saveUpdates(_0x26afee[_0xaf2c('0x48')],null))[_0xaf2c('0x23')](respondWithResult(_0x4b3ca4,null))[_0xaf2c('0x43')](handleError(_0x4b3ca4,null));};exports[_0xaf2c('0x4a')]=function(_0x31ccfe,_0x1e72b0){return db[_0xaf2c('0x2a')]['find']({'where':{'id':_0x31ccfe[_0xaf2c('0x44')]['id']}})[_0xaf2c('0x23')](handleEntityNotFound(_0x1e72b0,null))['then'](removeEntity(_0x1e72b0,null))['catch'](handleError(_0x1e72b0,null));};exports['describe']=function(_0x7ddca0,_0x1f6907){return db['JscriptyAnswerReport'][_0xaf2c('0x4b')]()[_0xaf2c('0x23')](respondWithResult(_0x1f6907,null))[_0xaf2c('0x43')](handleError(_0x1f6907,null));};
\ No newline at end of file
index 061ac8b..686f985 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1e0=['exports','define','report_jscripty_answers','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./jscriptyAnswerReport.attributes'];(function(_0x5c4e16,_0x113035){var _0x36044a=function(_0xde2f25){while(--_0xde2f25){_0x5c4e16['push'](_0x5c4e16['shift']());}};_0x36044a(++_0x113035);}(_0xc1e0,0xe7));var _0x0c1e=function(_0x3d278d,_0x56918d){_0x3d278d=_0x3d278d-0x0;var _0x178303=_0xc1e0[_0x3d278d];return _0x178303;};'use strict';var _=require(_0x0c1e('0x0'));var util=require(_0x0c1e('0x1'));var logger=require('../../config/logger')(_0x0c1e('0x2'));var moment=require(_0x0c1e('0x3'));var BPromise=require(_0x0c1e('0x4'));var rp=require(_0x0c1e('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0c1e('0x6'));var config=require(_0x0c1e('0x7'));var attributes=require(_0x0c1e('0x8'));module[_0x0c1e('0x9')]=function(_0x59e1e4,_0x270b6c){return _0x59e1e4[_0x0c1e('0xa')]('JscriptyAnswerReport',attributes,{'tableName':_0x0c1e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8eb0=['path','../../config/environment','./jscriptyAnswerReport.attributes','define','JscriptyAnswerReport','report_jscripty_answers','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x5bf828,_0xdc0357){var _0x1192b9=function(_0x3c0443){while(--_0x3c0443){_0x5bf828['push'](_0x5bf828['shift']());}};_0x1192b9(++_0xdc0357);}(_0x8eb0,0x162));var _0x08eb=function(_0x3f27e3,_0x48b14e){_0x3f27e3=_0x3f27e3-0x0;var _0x24e167=_0x8eb0[_0x3f27e3];return _0x24e167;};'use strict';var _=require(_0x08eb('0x0'));var util=require('util');var logger=require(_0x08eb('0x1'))(_0x08eb('0x2'));var moment=require(_0x08eb('0x3'));var BPromise=require(_0x08eb('0x4'));var rp=require(_0x08eb('0x5'));var fs=require('fs');var path=require(_0x08eb('0x6'));var rimraf=require('rimraf');var config=require(_0x08eb('0x7'));var attributes=require(_0x08eb('0x8'));module['exports']=function(_0x5ac8fd,_0x12f37c){return _0x5ac8fd[_0x08eb('0x9')](_0x08eb('0xa'),attributes,{'tableName':_0x08eb('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9b1ef6a..711eebc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00bf=['../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','code','JscriptyAnswerReport,\x20%s,\x20%s','message','result','util','moment','bluebird','randomstring','../../config/utils'];(function(_0x3fcab4,_0x224020){var _0x245550=function(_0xab0acb){while(--_0xab0acb){_0x3fcab4['push'](_0x3fcab4['shift']());}};_0x245550(++_0x224020);}(_0x00bf,0x7f));var _0xf00b=function(_0x13047f,_0x551a9d){_0x13047f=_0x13047f-0x0;var _0xd2b46a=_0x00bf[_0x13047f];return _0xd2b46a;};'use strict';var _=require('lodash');var util=require(_0xf00b('0x0'));var moment=require(_0xf00b('0x1'));var BPromise=require(_0xf00b('0x2'));var rs=require(_0xf00b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xf00b('0x4'));var logger=require(_0xf00b('0x5'))(_0xf00b('0x6'));var config=require(_0xf00b('0x7'));var jayson=require(_0xf00b('0x8'));var client=jayson['client'][_0xf00b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4ea29a,_0x2814df,_0x4f1a55){return new BPromise(function(_0x24864c,_0x8c609){return client[_0xf00b('0xa')](_0x4ea29a,_0x4f1a55)[_0xf00b('0xb')](function(_0x432f40){logger[_0xf00b('0xc')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x2814df,_0xf00b('0xd'));logger[_0xf00b('0xe')](_0xf00b('0xf'),_0x2814df,_0xf00b('0xd'),JSON[_0xf00b('0x10')](_0x432f40));if(_0x432f40['error']){if(_0x432f40[_0xf00b('0x11')][_0xf00b('0x12')]===0x1f4){logger['error'](_0xf00b('0x13'),_0x2814df,_0x432f40[_0xf00b('0x11')][_0xf00b('0x14')]);return _0x8c609(_0x432f40[_0xf00b('0x11')][_0xf00b('0x14')]);}logger[_0xf00b('0x11')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x2814df,_0x432f40['error']['message']);return _0x24864c(_0x432f40['error'][_0xf00b('0x14')]);}else{logger[_0xf00b('0xc')](_0xf00b('0x13'),_0x2814df,_0xf00b('0xd'));_0x24864c(_0x432f40[_0xf00b('0x15')]['message']);}})['catch'](function(_0x199a3c){logger[_0xf00b('0x11')](_0xf00b('0x13'),_0x2814df,_0x199a3c);_0x8c609(_0x199a3c);});});}
\ No newline at end of file
+var _0x7fef=['JscriptyAnswerReport,\x20%s,\x20%s','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result','catch','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x7fef,0xd1));var _0xf7fe=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x7fef[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xf7fe('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf7fe('0x1'));var rs=require(_0xf7fe('0x2'));var fs=require('fs');var Redis=require(_0xf7fe('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xf7fe('0x4'));var logger=require(_0xf7fe('0x5'))('rpc');var config=require(_0xf7fe('0x6'));var jayson=require(_0xf7fe('0x7'));var client=jayson[_0xf7fe('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x385646,_0x5ca079,_0x2e440f){return new BPromise(function(_0x1ad040,_0x5492c6){return client[_0xf7fe('0x9')](_0x385646,_0x2e440f)[_0xf7fe('0xa')](function(_0x5a160d){logger['info'](_0xf7fe('0xb'),_0x5ca079,'request\x20sent');logger[_0xf7fe('0xc')](_0xf7fe('0xd'),_0x5ca079,'request\x20sent',JSON[_0xf7fe('0xe')](_0x5a160d));if(_0x5a160d[_0xf7fe('0xf')]){if(_0x5a160d[_0xf7fe('0xf')][_0xf7fe('0x10')]===0x1f4){logger[_0xf7fe('0xf')](_0xf7fe('0xb'),_0x5ca079,_0x5a160d[_0xf7fe('0xf')][_0xf7fe('0x11')]);return _0x5492c6(_0x5a160d[_0xf7fe('0xf')][_0xf7fe('0x11')]);}logger[_0xf7fe('0xf')](_0xf7fe('0xb'),_0x5ca079,_0x5a160d[_0xf7fe('0xf')][_0xf7fe('0x11')]);return _0x1ad040(_0x5a160d[_0xf7fe('0xf')][_0xf7fe('0x11')]);}else{logger[_0xf7fe('0x12')](_0xf7fe('0xb'),_0x5ca079,_0xf7fe('0x13'));_0x1ad040(_0x5a160d[_0xf7fe('0x14')]['message']);}})[_0xf7fe('0x15')](function(_0x1ad117){logger[_0xf7fe('0xf')](_0xf7fe('0xb'),_0x5ca079,_0x1ad117);_0x5492c6(_0x1ad117);});});}
\ No newline at end of file
index 6f33d12..6416754 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2c5=['isAuthenticated','index','/:id/sessions','getSessions','/:id/answers','getAnswers','/:id/summary','getSummary','post','create','clone','put','/:id','update','delete','exports','multer','util','path','express','Router','../../components/auth/service','./jscriptyProject.controller','get'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xb2c5,0x160));var _0x5b2c=function(_0x1e1b18,_0x5d471b){_0x1e1b18=_0x1e1b18-0x0;var _0x3da8f2=_0xb2c5[_0x1e1b18];return _0x3da8f2;};'use strict';var multer=require(_0x5b2c('0x0'));var util=require(_0x5b2c('0x1'));var path=require(_0x5b2c('0x2'));var timeout=require('connect-timeout');var express=require(_0x5b2c('0x3'));var router=express[_0x5b2c('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x5b2c('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x5b2c('0x6'));router[_0x5b2c('0x7')]('/',auth[_0x5b2c('0x8')](),controller[_0x5b2c('0x9')]);router[_0x5b2c('0x7')]('/:id',auth[_0x5b2c('0x8')](),controller['show']);router[_0x5b2c('0x7')](_0x5b2c('0xa'),auth[_0x5b2c('0x8')](),controller[_0x5b2c('0xb')]);router[_0x5b2c('0x7')](_0x5b2c('0xc'),auth[_0x5b2c('0x8')](),controller[_0x5b2c('0xd')]);router[_0x5b2c('0x7')](_0x5b2c('0xe'),auth[_0x5b2c('0x8')](),timeout('30s'),controller[_0x5b2c('0xf')]);router[_0x5b2c('0x10')]('/',auth[_0x5b2c('0x8')](),controller[_0x5b2c('0x11')]);router[_0x5b2c('0x10')]('/:id/clone',auth[_0x5b2c('0x8')](),controller[_0x5b2c('0x12')]);router[_0x5b2c('0x13')](_0x5b2c('0x14'),auth[_0x5b2c('0x8')](),controller[_0x5b2c('0x15')]);router[_0x5b2c('0x16')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x5b2c('0x17')]=router;
\ No newline at end of file
+var _0x0eb7=['fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/sessions','getSessions','/:id/answers','30s','getSummary','create','post','/:id/clone','clone','put','delete','destroy','multer','path','connect-timeout','express','Router'];(function(_0x47b7bc,_0x56e90c){var _0x34e64e=function(_0x5b84f6){while(--_0x5b84f6){_0x47b7bc['push'](_0x47b7bc['shift']());}};_0x34e64e(++_0x56e90c);}(_0x0eb7,0x14b));var _0x70eb=function(_0x13e0cf,_0x583514){_0x13e0cf=_0x13e0cf-0x0;var _0x5ed8b4=_0x0eb7[_0x13e0cf];return _0x5ed8b4;};'use strict';var multer=require(_0x70eb('0x0'));var util=require('util');var path=require(_0x70eb('0x1'));var timeout=require(_0x70eb('0x2'));var express=require(_0x70eb('0x3'));var router=express[_0x70eb('0x4')]();var fs_extra=require(_0x70eb('0x5'));var auth=require(_0x70eb('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x70eb('0x7'));var controller=require('./jscriptyProject.controller');router[_0x70eb('0x8')]('/',auth[_0x70eb('0x9')](),controller['index']);router[_0x70eb('0x8')](_0x70eb('0xa'),auth['isAuthenticated'](),controller[_0x70eb('0xb')]);router[_0x70eb('0x8')](_0x70eb('0xc'),auth[_0x70eb('0x9')](),controller[_0x70eb('0xd')]);router[_0x70eb('0x8')](_0x70eb('0xe'),auth[_0x70eb('0x9')](),controller['getAnswers']);router[_0x70eb('0x8')]('/:id/summary',auth[_0x70eb('0x9')](),timeout(_0x70eb('0xf')),controller[_0x70eb('0x10')]);router['post']('/',auth[_0x70eb('0x9')](),controller[_0x70eb('0x11')]);router[_0x70eb('0x12')](_0x70eb('0x13'),auth[_0x70eb('0x9')](),controller[_0x70eb('0x14')]);router[_0x70eb('0x15')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x70eb('0x16')](_0x70eb('0xa'),auth[_0x70eb('0x9')](),controller[_0x70eb('0x17')]);module['exports']=router;
\ No newline at end of file
index 30b5d34..578c375 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62a9=['sequelize','util','STRING','name','TEXT','long','isObjectLike','stringify','isString','setDataValue','formData','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','BOOLEAN'];(function(_0x109430,_0x395adf){var _0x3465a2=function(_0x496ff2){while(--_0x496ff2){_0x109430['push'](_0x109430['shift']());}};_0x3465a2(++_0x395adf);}(_0x62a9,0xf0));var _0x962a=function(_0x295a3d,_0x56d487){_0x295a3d=_0x295a3d-0x0;var _0x23a732=_0x62a9[_0x295a3d];return _0x23a732;};'use strict';var Sequelize=require(_0x962a('0x0'));var _=require('lodash');var util=require(_0x962a('0x1'));module['exports']={'name':{'type':Sequelize[_0x962a('0x2')],'unique':_0x962a('0x3')},'description':{'type':Sequelize[_0x962a('0x2')]},'formData':{'type':Sequelize[_0x962a('0x4')](_0x962a('0x5')),'set':function(_0x56a416){if(_[_0x962a('0x6')](_0x56a416)){this['setDataValue']('formData',JSON[_0x962a('0x7')](_0x56a416));}else if(_[_0x962a('0x8')](_0x56a416)){this[_0x962a('0x9')](_0x962a('0xa'),_0x56a416);}else{this[_0x962a('0x9')](_0x962a('0xa'),util[_0x962a('0xb')](_0x962a('0xc'),this[_0x962a('0xd')]('name')||'',this[_0x962a('0xd')](_0x962a('0xe'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x962a('0xf')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x962a('0xf')],'defaultValue':![]}};
\ No newline at end of file
+var _0x8204=['{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','BOOLEAN','sequelize','lodash','util','exports','STRING','name','TEXT','long','isObjectLike','setDataValue','formData','stringify','isString','format'];(function(_0x30a3a7,_0x3fe1c0){var _0x4ce9f5=function(_0x9c88b9){while(--_0x9c88b9){_0x30a3a7['push'](_0x30a3a7['shift']());}};_0x4ce9f5(++_0x3fe1c0);}(_0x8204,0xee));var _0x4820=function(_0x568743,_0x532a67){_0x568743=_0x568743-0x0;var _0x390328=_0x8204[_0x568743];return _0x390328;};'use strict';var Sequelize=require(_0x4820('0x0'));var _=require(_0x4820('0x1'));var util=require(_0x4820('0x2'));module[_0x4820('0x3')]={'name':{'type':Sequelize[_0x4820('0x4')],'unique':_0x4820('0x5')},'description':{'type':Sequelize[_0x4820('0x4')]},'formData':{'type':Sequelize[_0x4820('0x6')](_0x4820('0x7')),'set':function(_0x54634b){if(_[_0x4820('0x8')](_0x54634b)){this[_0x4820('0x9')](_0x4820('0xa'),JSON[_0x4820('0xb')](_0x54634b));}else if(_[_0x4820('0xc')](_0x54634b)){this[_0x4820('0x9')](_0x4820('0xa'),_0x54634b);}else{this['setDataValue'](_0x4820('0xa'),util[_0x4820('0xd')](_0x4820('0xe'),this[_0x4820('0xf')](_0x4820('0x5'))||'',this[_0x4820('0xf')](_0x4820('0x10'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x4820('0x11')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 4f8e7ea..34cb321 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7497=['UserProfileResource','error','stack','name','send','index','map','JscriptyProject','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','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','params','omit','createdAt','updatedAt','Projects','update','destroy','getSessions','JscriptySessionReport','ProjectId','getAnswers','findOne','JscriptyAnswerReport','number','fromCharCode','indexOf','toString','replace','startTime','starttime','JscriptyQuestionReport','-createdAt','questionId','question','YYYY-MM-DD\x20HH:mm:ss','SessionId','push','isEmpty','now','writeFileSync','format','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','download','sendStatus','eml-format','rimraf','zip-dir','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','offset','undefined','limit','count','set','json','apply','reject','save','then','get'];(function(_0x308374,_0x550e85){var _0x1f71e0=function(_0x18377d){while(--_0x18377d){_0x308374['push'](_0x308374['shift']());}};_0x1f71e0(++_0x550e85);}(_0x7497,0xd0));var _0x7749=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7497[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x7749('0x0'));var rimraf=require(_0x7749('0x1'));var zipdir=require(_0x7749('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x7749('0x3'));var Mustache=require(_0x7749('0x4'));var util=require('util');var path=require(_0x7749('0x5'));var sox=require(_0x7749('0x6'));var csv=require(_0x7749('0x7'));var ejs=require(_0x7749('0x8'));var fs=require('fs');var fs_extra=require(_0x7749('0x9'));var _=require(_0x7749('0xa'));var squel=require(_0x7749('0xb'));var crypto=require(_0x7749('0xc'));var jsforce=require(_0x7749('0xd'));var deskjs=require(_0x7749('0xe'));var toCsv=require(_0x7749('0x7'));var querystring=require('querystring');var Papa=require(_0x7749('0xf'));var Redis=require('ioredis');var authService=require(_0x7749('0x10'));var qs=require(_0x7749('0x11'));var as=require(_0x7749('0x12'));var hardwareService=require(_0x7749('0x13'));var logger=require(_0x7749('0x14'))(_0x7749('0x15'));var utils=require(_0x7749('0x16'));var config=require(_0x7749('0x17'));var licenseUtil=require(_0x7749('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4d3608,_0xd24e42){_0xd24e42=_0xd24e42||0xcc;return function(_0x5b5ac5){if(_0x5b5ac5){return _0x4d3608['sendStatus'](_0xd24e42);}return _0x4d3608[_0x7749('0x19')](_0xd24e42)[_0x7749('0x1a')]();};}function respondWithResult(_0x165837,_0x92dc6c){_0x92dc6c=_0x92dc6c||0xc8;return function(_0x112ab8){if(_0x112ab8){return _0x165837[_0x7749('0x19')](_0x92dc6c)['json'](_0x112ab8);}};}function respondWithFilteredResult(_0x4ecd00,_0x209ba6){return function(_0x427943){if(_0x427943){var _0x5f4a55=typeof _0x209ba6[_0x7749('0x1b')]===_0x7749('0x1c')&&typeof _0x209ba6[_0x7749('0x1d')]===_0x7749('0x1c');var _0x129e27=_0x427943[_0x7749('0x1e')];var _0x46e548=_0x5f4a55?0x0:_0x209ba6[_0x7749('0x1b')];var _0x41ba4d=_0x5f4a55?_0x427943[_0x7749('0x1e')]:_0x209ba6['offset']+_0x209ba6[_0x7749('0x1d')];var _0x16f276;if(_0x41ba4d>=_0x129e27){_0x41ba4d=_0x129e27;_0x16f276=0xc8;}else{_0x16f276=0xce;}_0x4ecd00['status'](_0x16f276);return _0x4ecd00[_0x7749('0x1f')]('Content-Range',_0x46e548+'-'+_0x41ba4d+'/'+_0x129e27)[_0x7749('0x20')](_0x427943);}return null;};}function patchUpdates(_0x11013a){return function(_0x4040ef){try{jsonpatch[_0x7749('0x21')](_0x4040ef,_0x11013a,!![]);}catch(_0x356f3b){return BPromise[_0x7749('0x22')](_0x356f3b);}return _0x4040ef[_0x7749('0x23')]();};}function saveUpdates(_0x397a24,_0x4366a8){return function(_0x1a1d2d){if(_0x1a1d2d){return _0x1a1d2d['update'](_0x397a24)[_0x7749('0x24')](function(_0x9a2283){return _0x9a2283;});}return null;};}function removeEntity(_0x5df614,_0x5efcae){return function(_0x413eae){if(_0x413eae){return _0x413eae['destroy']()[_0x7749('0x24')](function(){var _0x2c9879=_0x413eae[_0x7749('0x25')]({'plain':!![]});var _0x40f84b='Projects';return db[_0x7749('0x26')]['destroy']({'where':{'type':_0x40f84b,'resourceId':_0x2c9879['id']}})['then'](function(){return _0x413eae;});})['then'](function(){_0x5df614['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5cd489,_0x1b9353){return function(_0x3e3698){if(!_0x3e3698){_0x5cd489['sendStatus'](0x194);}return _0x3e3698;};}function handleError(_0x40f44a,_0x2a90af){_0x2a90af=_0x2a90af||0x1f4;return function(_0x8112c9){logger[_0x7749('0x27')](_0x8112c9[_0x7749('0x28')]);if(_0x8112c9[_0x7749('0x29')]){delete _0x8112c9['name'];}_0x40f44a[_0x7749('0x19')](_0x2a90af)[_0x7749('0x2a')](_0x8112c9);};}exports[_0x7749('0x2b')]=function(_0x51216e,_0xfda033){var _0x98a9b5={},_0xdc2321={},_0xe35172={'count':0x0,'rows':[]};var _0x38ea3d=_[_0x7749('0x2c')](db[_0x7749('0x2d')][_0x7749('0x2e')],function(_0x34478f){return{'name':_0x34478f[_0x7749('0x2f')],'type':_0x34478f[_0x7749('0x30')][_0x7749('0x31')]};});_0xdc2321[_0x7749('0x32')]=_[_0x7749('0x2c')](_0x38ea3d,_0x7749('0x29'));_0xdc2321[_0x7749('0x33')]=_[_0x7749('0x34')](_0x51216e['query']);_0xdc2321[_0x7749('0x35')]=_[_0x7749('0x36')](_0xdc2321[_0x7749('0x32')],_0xdc2321[_0x7749('0x33')]);_0x98a9b5['attributes']=_['intersection'](_0xdc2321['model'],qs[_0x7749('0x37')](_0x51216e[_0x7749('0x33')][_0x7749('0x37')]));_0x98a9b5[_0x7749('0x38')]=_0x98a9b5['attributes'][_0x7749('0x39')]?_0x98a9b5[_0x7749('0x38')]:_0xdc2321[_0x7749('0x32')];if(!_0x51216e['query'][_0x7749('0x3a')](_0x7749('0x3b'))){_0x98a9b5['limit']=qs[_0x7749('0x1d')](_0x51216e['query'][_0x7749('0x1d')]);_0x98a9b5[_0x7749('0x1b')]=qs[_0x7749('0x1b')](_0x51216e['query'][_0x7749('0x1b')]);}_0x98a9b5[_0x7749('0x3c')]=qs[_0x7749('0x3d')](_0x51216e[_0x7749('0x33')]['sort']);_0x98a9b5['where']=qs['filters'](_[_0x7749('0x3e')](_0x51216e[_0x7749('0x33')],_0xdc2321[_0x7749('0x35')]),_0x38ea3d);if(_0x51216e[_0x7749('0x33')][_0x7749('0x3f')]){_0x98a9b5[_0x7749('0x40')]=_[_0x7749('0x41')](_0x98a9b5[_0x7749('0x40')],{'$or':_['map'](_0x38ea3d,function(_0x43849a){if(_0x43849a[_0x7749('0x30')]!==_0x7749('0x42')){var _0x42fc31={};_0x42fc31[_0x43849a[_0x7749('0x29')]]={'$like':'%'+_0x51216e[_0x7749('0x33')][_0x7749('0x3f')]+'%'};return _0x42fc31;}})});}_0x98a9b5=_[_0x7749('0x41')]({},_0x98a9b5,_0x51216e[_0x7749('0x43')]);var _0xf13593={'where':_0x98a9b5[_0x7749('0x40')]};return db[_0x7749('0x2d')][_0x7749('0x1e')](_0xf13593)[_0x7749('0x24')](function(_0x2ffbd9){_0xe35172['count']=_0x2ffbd9;if(_0x51216e[_0x7749('0x33')][_0x7749('0x44')]){_0x98a9b5['include']=[{'all':!![]}];}return db['JscriptyProject'][_0x7749('0x45')](_0x98a9b5);})[_0x7749('0x24')](function(_0x183cdd){_0xe35172[_0x7749('0x46')]=_0x183cdd;return _0xe35172;})['then'](respondWithFilteredResult(_0xfda033,_0x98a9b5))[_0x7749('0x47')](handleError(_0xfda033,null));};exports[_0x7749('0x48')]=function(_0x43d8d0,_0x586827){var _0x2bb284={'raw':![],'where':{'id':_0x43d8d0['params']['id']}},_0x3add19={};_0x3add19[_0x7749('0x32')]=_[_0x7749('0x34')](db[_0x7749('0x2d')][_0x7749('0x2e')]);_0x3add19['query']=_[_0x7749('0x34')](_0x43d8d0[_0x7749('0x33')]);_0x3add19[_0x7749('0x35')]=_[_0x7749('0x36')](_0x3add19[_0x7749('0x32')],_0x3add19['query']);_0x2bb284[_0x7749('0x38')]=_['intersection'](_0x3add19['model'],qs[_0x7749('0x37')](_0x43d8d0[_0x7749('0x33')][_0x7749('0x37')]));_0x2bb284['attributes']=_0x2bb284[_0x7749('0x38')][_0x7749('0x39')]?_0x2bb284[_0x7749('0x38')]:_0x3add19[_0x7749('0x32')];if(_0x43d8d0[_0x7749('0x33')][_0x7749('0x44')]){_0x2bb284[_0x7749('0x49')]=[{'all':!![]}];}_0x2bb284=_[_0x7749('0x41')]({},_0x2bb284,_0x43d8d0[_0x7749('0x43')]);return db[_0x7749('0x2d')]['find'](_0x2bb284)[_0x7749('0x24')](handleEntityNotFound(_0x586827,null))[_0x7749('0x24')](respondWithResult(_0x586827,null))[_0x7749('0x47')](handleError(_0x586827,null));};exports[_0x7749('0x4a')]=function(_0x2fde3d,_0x23cb53){return db[_0x7749('0x2d')][_0x7749('0x4a')](_0x2fde3d[_0x7749('0x4b')],{})[_0x7749('0x24')](function(_0x2b1fd7){var _0x604575=_0x2fde3d[_0x7749('0x4c')][_0x7749('0x25')]({'plain':!![]});if(!_0x604575)throw new Error(_0x7749('0x4d'));if(_0x604575[_0x7749('0x4e')]==='user'){var _0xca060b=_0x2b1fd7[_0x7749('0x25')]({'plain':!![]});var _0x1825dc='Projects';return db[_0x7749('0x4f')][_0x7749('0x50')]({'where':{'name':_0x1825dc,'userProfileId':_0x604575[_0x7749('0x51')]},'raw':!![]})[_0x7749('0x24')](function(_0x9f363e){if(_0x9f363e&&_0x9f363e[_0x7749('0x52')]===0x0){return db[_0x7749('0x26')][_0x7749('0x4a')]({'name':_0xca060b[_0x7749('0x29')],'resourceId':_0xca060b['id'],'type':_0x9f363e[_0x7749('0x29')],'sectionId':_0x9f363e['id']},{})[_0x7749('0x24')](function(){return _0x2b1fd7;});}else{return _0x2b1fd7;}})['catch'](function(_0x15c2b4){logger[_0x7749('0x27')](_0x7749('0x53'),_0x15c2b4);throw _0x15c2b4;});}return _0x2b1fd7;})[_0x7749('0x24')](respondWithResult(_0x23cb53,0xc9))['catch'](handleError(_0x23cb53,null));};exports['clone']=function(_0x5c32e4,_0x4db113){var _0x32e918={'where':{'id':_0x5c32e4[_0x7749('0x54')]['id']}},_0x5c0a54={};_0x5c0a54[_0x7749('0x32')]=_['keys'](db['JscriptyProject'][_0x7749('0x2e')]);_0x32e918['attributes']=_[_0x7749('0x36')](_0x5c0a54[_0x7749('0x32')],qs[_0x7749('0x37')](_0x5c32e4[_0x7749('0x33')][_0x7749('0x37')]));_0x32e918[_0x7749('0x38')]=_0x32e918[_0x7749('0x38')]['length']?_0x32e918['attributes']:_0x5c0a54[_0x7749('0x32')];if(_0x5c32e4[_0x7749('0x33')][_0x7749('0x44')]){_0x32e918[_0x7749('0x49')]=[{'all':!![]}];}_0x32e918=_[_0x7749('0x41')]({},_0x32e918,_0x5c32e4[_0x7749('0x43')]);return db[_0x7749('0x2d')][_0x7749('0x50')](_0x32e918)[_0x7749('0x24')](handleEntityNotFound(_0x4db113,null))[_0x7749('0x24')](function(_0x1f0c1c){if(_0x1f0c1c){var _0x4b9fdc=_0x1f0c1c[_0x7749('0x25')]({'plain':!![]});_0x4b9fdc=qs[_0x7749('0x55')](_0x4b9fdc,['id',_0x7749('0x56'),_0x7749('0x57')]);_0x5c32e4[_0x7749('0x4b')]=_[_0x7749('0x55')](_0x5c32e4[_0x7749('0x4b')],['id',_0x7749('0x56'),_0x7749('0x57')]);return db['JscriptyProject'][_0x7749('0x4a')](_[_0x7749('0x41')](_0x4b9fdc,_0x5c32e4['body']),{'include':_0x5c32e4[_0x7749('0x33')][_0x7749('0x44')]?[{'all':!![]}]:undefined})[_0x7749('0x24')](function(_0x599e18){var _0x3111a9=_0x5c32e4[_0x7749('0x4c')][_0x7749('0x25')]({'plain':!![]});if(!_0x3111a9)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3111a9[_0x7749('0x4e')]===_0x7749('0x4c')){var _0x5e77a8=_0x599e18[_0x7749('0x25')]({'plain':!![]});var _0x2601a9=_0x7749('0x58');return db['UserProfileSection'][_0x7749('0x50')]({'where':{'name':_0x2601a9,'userProfileId':_0x3111a9[_0x7749('0x51')]},'raw':!![]})[_0x7749('0x24')](function(_0x33b41d){if(_0x33b41d&&_0x33b41d['autoAssociation']===0x0){return db[_0x7749('0x26')][_0x7749('0x4a')]({'name':_0x5e77a8['name'],'resourceId':_0x5e77a8['id'],'type':_0x33b41d[_0x7749('0x29')],'sectionId':_0x33b41d['id']},{})['then'](function(){return _0x599e18;});}else{return _0x599e18;}})[_0x7749('0x47')](function(_0x1d943e){logger[_0x7749('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1d943e);throw _0x1d943e;});}return _0x599e18;});}})['then'](respondWithResult(_0x4db113,0xc9))[_0x7749('0x47')](handleError(_0x4db113,null));};exports[_0x7749('0x59')]=function(_0x356809,_0x349814){if(_0x356809[_0x7749('0x4b')]['id']){delete _0x356809[_0x7749('0x4b')]['id'];}return db[_0x7749('0x2d')][_0x7749('0x50')]({'where':{'id':_0x356809[_0x7749('0x54')]['id']}})['then'](handleEntityNotFound(_0x349814,null))[_0x7749('0x24')](saveUpdates(_0x356809[_0x7749('0x4b')],null))[_0x7749('0x24')](respondWithResult(_0x349814,null))[_0x7749('0x47')](handleError(_0x349814,null));};exports[_0x7749('0x5a')]=function(_0xc7345,_0x47ac52){return db[_0x7749('0x2d')]['find']({'where':{'id':_0xc7345[_0x7749('0x54')]['id']}})[_0x7749('0x24')](handleEntityNotFound(_0x47ac52,null))[_0x7749('0x24')](removeEntity(_0x47ac52,null))[_0x7749('0x47')](handleError(_0x47ac52,null));};exports[_0x7749('0x5b')]=function(_0x1cf3ea,_0x9d117c,_0x330414){var _0x136efe={'raw':!![],'where':{}};var _0x25cfa1={};var _0x180c69={'count':0x0,'rows':[]};return db[_0x7749('0x2d')]['findOne']({'where':{'id':_0x1cf3ea[_0x7749('0x54')]['id']}})[_0x7749('0x24')](handleEntityNotFound(_0x9d117c,null))['then'](function(_0x46338b){if(_0x46338b){_0x25cfa1[_0x7749('0x32')]=_[_0x7749('0x34')](db[_0x7749('0x5c')]['rawAttributes']);_0x25cfa1[_0x7749('0x33')]=_[_0x7749('0x34')](_0x1cf3ea[_0x7749('0x33')]);_0x25cfa1[_0x7749('0x35')]=_[_0x7749('0x36')](_0x25cfa1[_0x7749('0x32')],_0x25cfa1[_0x7749('0x33')]);_0x136efe[_0x7749('0x38')]=_[_0x7749('0x36')](_0x25cfa1[_0x7749('0x32')],qs[_0x7749('0x37')](_0x1cf3ea['query'][_0x7749('0x37')]));_0x136efe[_0x7749('0x38')]=_0x136efe['attributes']['length']?_0x136efe[_0x7749('0x38')]:_0x25cfa1[_0x7749('0x32')];if(!_0x1cf3ea[_0x7749('0x33')][_0x7749('0x3a')](_0x7749('0x3b'))){_0x136efe[_0x7749('0x1d')]=qs[_0x7749('0x1d')](_0x1cf3ea[_0x7749('0x33')][_0x7749('0x1d')]);_0x136efe[_0x7749('0x1b')]=qs[_0x7749('0x1b')](_0x1cf3ea['query'][_0x7749('0x1b')]);}_0x136efe[_0x7749('0x3c')]=qs[_0x7749('0x3d')](_0x1cf3ea[_0x7749('0x33')][_0x7749('0x3d')]);_0x136efe[_0x7749('0x40')]=qs[_0x7749('0x35')](_[_0x7749('0x3e')](_0x1cf3ea[_0x7749('0x33')],_0x25cfa1[_0x7749('0x35')]));_0x136efe['where'][_0x7749('0x5d')]=_0x46338b['id'];if(_0x1cf3ea['query'][_0x7749('0x3f')]){_0x136efe['where']=_[_0x7749('0x41')](_0x136efe[_0x7749('0x40')],{'$or':_[_0x7749('0x2c')](_0x136efe[_0x7749('0x38')],function(_0x2903a0){var _0x2656b2={};_0x2656b2[_0x2903a0]={'$like':'%'+_0x1cf3ea[_0x7749('0x33')]['filter']+'%'};return _0x2656b2;})});}_0x136efe=_[_0x7749('0x41')]({},_0x136efe,_0x1cf3ea[_0x7749('0x43')]);return db[_0x7749('0x5c')][_0x7749('0x1e')]({'where':_0x136efe['where']})[_0x7749('0x24')](function(_0x52b082){_0x180c69[_0x7749('0x1e')]=_0x52b082;if(_0x1cf3ea[_0x7749('0x33')][_0x7749('0x44')]){_0x136efe['include']=[{'all':!![]}];}return db[_0x7749('0x5c')][_0x7749('0x45')](_0x136efe);})['then'](function(_0x2b73dd){_0x180c69['rows']=_0x2b73dd;return _0x180c69;});}})[_0x7749('0x24')](respondWithFilteredResult(_0x9d117c,_0x136efe))[_0x7749('0x47')](handleError(_0x9d117c,null));};exports[_0x7749('0x5e')]=function(_0x4a9631,_0x3924de,_0x149e05){var _0x25238a={'raw':!![],'where':{}};var _0x5ef528={};var _0x4df999={'count':0x0,'rows':[]};return db[_0x7749('0x2d')][_0x7749('0x5f')]({'where':{'id':_0x4a9631[_0x7749('0x54')]['id']}})['then'](handleEntityNotFound(_0x3924de,null))[_0x7749('0x24')](function(_0x10426b){if(_0x10426b){_0x5ef528[_0x7749('0x32')]=_[_0x7749('0x34')](db[_0x7749('0x60')][_0x7749('0x2e')]);_0x5ef528[_0x7749('0x33')]=_['keys'](_0x4a9631[_0x7749('0x33')]);_0x5ef528[_0x7749('0x35')]=_[_0x7749('0x36')](_0x5ef528[_0x7749('0x32')],_0x5ef528[_0x7749('0x33')]);_0x25238a['attributes']=_['intersection'](_0x5ef528[_0x7749('0x32')],qs[_0x7749('0x37')](_0x4a9631[_0x7749('0x33')]['fields']));_0x25238a[_0x7749('0x38')]=_0x25238a[_0x7749('0x38')][_0x7749('0x39')]?_0x25238a['attributes']:_0x5ef528[_0x7749('0x32')];if(!_0x4a9631[_0x7749('0x33')][_0x7749('0x3a')](_0x7749('0x3b'))){_0x25238a[_0x7749('0x1d')]=qs[_0x7749('0x1d')](_0x4a9631['query'][_0x7749('0x1d')]);_0x25238a[_0x7749('0x1b')]=qs['offset'](_0x4a9631[_0x7749('0x33')]['offset']);}_0x25238a['order']=qs[_0x7749('0x3d')](_0x4a9631[_0x7749('0x33')][_0x7749('0x3d')]);_0x25238a['where']=qs['filters'](_[_0x7749('0x3e')](_0x4a9631[_0x7749('0x33')],_0x5ef528[_0x7749('0x35')]));_0x25238a[_0x7749('0x40')][_0x7749('0x5d')]=_0x10426b['id'];if(_0x4a9631['query']['filter']){_0x25238a[_0x7749('0x40')]=_[_0x7749('0x41')](_0x25238a['where'],{'$or':_[_0x7749('0x2c')](_0x25238a['attributes'],function(_0x20bba1){var _0x1d2914={};_0x1d2914[_0x20bba1]={'$like':'%'+_0x4a9631[_0x7749('0x33')][_0x7749('0x3f')]+'%'};return _0x1d2914;})});}_0x25238a=_['merge']({},_0x25238a,_0x4a9631[_0x7749('0x43')]);return db[_0x7749('0x60')][_0x7749('0x1e')]({'where':_0x25238a[_0x7749('0x40')]})['then'](function(_0x21f773){_0x4df999['count']=_0x21f773;if(_0x4a9631[_0x7749('0x33')][_0x7749('0x44')]){_0x25238a[_0x7749('0x49')]=[{'all':!![]}];}return db[_0x7749('0x60')][_0x7749('0x45')](_0x25238a);})[_0x7749('0x24')](function(_0x1fcd50){_0x4df999['rows']=_0x1fcd50;return _0x4df999;});}})['then'](respondWithFilteredResult(_0x3924de,_0x25238a))[_0x7749('0x47')](handleError(_0x3924de,null));};function char(_0x58aad3){return _0x7749('0x61')===typeof _0x58aad3?String[_0x7749('0x62')][_0x7749('0x21')](null,arguments):_0x58aad3;}function needsEncapsulation(_0x1d7b24){return!!_0x1d7b24&&(_0x1d7b24['toString']()[_0x7749('0x63')](char(0xd))>=0x0||_0x1d7b24['toString']()['indexOf'](char(0xa))>=0x0||_0x1d7b24[_0x7749('0x64')]()[_0x7749('0x63')](char(0x2c))>=0x0||_0x1d7b24[_0x7749('0x64')]()[_0x7749('0x63')](char(0x22))>=0x0);}function encapsulate(_0x588bc1){var _0x35783a=char(0x22),_0x476e98='\x5c'+char(0x22),_0x198c30=_0x588bc1[_0x7749('0x64')]()[_0x7749('0x65')](new RegExp(_0x35783a,'g'),_0x476e98);return _0x35783a+_0x198c30+_0x35783a;}exports['getSummary']=function(_0x2b0b74,_0x1e613a,_0x4aac11){var _0xe08b59,_0x16fdf5;var _0x507294={'where':{'ProjectId':_0x2b0b74['params']['id']}};if(_0x2b0b74[_0x7749('0x33')][_0x7749('0x66')]){_0x507294[_0x7749('0x40')][_0x7749('0x67')]=JSON['parse'](_0x2b0b74[_0x7749('0x33')][_0x7749('0x66')]);}return db[_0x7749('0x5c')][_0x7749('0x45')](_0x507294)[_0x7749('0x24')](handleEntityNotFound(_0x1e613a,null))['then'](function(_0x1c6858){if(_0x1c6858){_0xe08b59=_0x1c6858;return db[_0x7749('0x68')]['findAll']({'where':{'SessionId':{'$in':_[_0x7749('0x2c')](_0xe08b59,'id')},'ProjectId':_0x2b0b74[_0x7749('0x54')]['id']},'order':_0x7749('0x69')});}})[_0x7749('0x24')](handleEntityNotFound(_0x1e613a,null))['then'](function(_0x457dc2){if(_0x457dc2){_0x16fdf5=_0x457dc2;var _0x3152bd={};for(var _0xd9355c=0x0,_0x2e873a=_0x16fdf5[_0x7749('0x39')];_0xd9355c<_0x2e873a;_0xd9355c++){if(!_0x3152bd[_0x7749('0x3a')](_0x16fdf5[_0xd9355c][_0x7749('0x6a')])){_0x3152bd[_0x16fdf5[_0xd9355c][_0x7749('0x6a')]]=needsEncapsulation(_0x16fdf5[_0xd9355c][_0x7749('0x6b')])?encapsulate(_0x16fdf5[_0xd9355c][_0x7749('0x6b')]):_0x16fdf5[_0xd9355c][_0x7749('0x6b')];}}var _0xb6d4f5=[],_0x1fc2df={};for(var _0x2116b8=0x0,_0xb83145=_0xe08b59[_0x7749('0x39')];_0x2116b8<_0xb83145;_0x2116b8++){_0x1fc2df={'ProjectId':_0x2b0b74['params']['id'],'SessionId':_0xe08b59[_0x2116b8]['id'],'StartTime':moment(_0xe08b59[_0x2116b8]['starttime'])['format'](_0x7749('0x6c'))};for(var _0x40dac2=0x0,_0x29c04c=_0x16fdf5[_0x7749('0x39')];_0x40dac2<_0x29c04c;_0x40dac2++){if(_0x16fdf5[_0x40dac2][_0x7749('0x6d')]==_0xe08b59[_0x2116b8]['id']&&_0x3152bd[_0x7749('0x3a')](_0x16fdf5[_0x40dac2]['questionId'])){_0x1fc2df[_0x3152bd[_0x16fdf5[_0x40dac2][_0x7749('0x6a')]]]=_0x16fdf5[_0x40dac2]['answer'];}}for(var _0x22c91f in _0x3152bd){if(!_0x1fc2df[_0x7749('0x3a')](_0x3152bd[_0x22c91f])){_0x1fc2df[_0x3152bd[_0x22c91f]]=null;}}_0xb6d4f5[_0x7749('0x6e')](_0x1fc2df);}return _0xb6d4f5;}})[_0x7749('0x24')](function(_0x1ec4e3){if(!_[_0x7749('0x6f')](_0x1ec4e3)){var _0x18b885=toCsv(_0x1ec4e3);var _0x6da9c9=Date[_0x7749('0x70')]();fs[_0x7749('0x71')](util[_0x7749('0x72')](_0x7749('0x73'),_0x2b0b74[_0x7749('0x54')]['id'],_0x6da9c9),_0x18b885);_0x1e613a[_0x7749('0x74')](_0x7749('0x75'),_0x7749('0x76')+util[_0x7749('0x72')](_0x7749('0x77'),_0x2b0b74[_0x7749('0x54')]['id'],_0x6da9c9));_0x1e613a[_0x7749('0x74')](_0x7749('0x78'),'text/csv');return _0x1e613a[_0x7749('0x79')](util[_0x7749('0x72')](_0x7749('0x73'),_0x2b0b74[_0x7749('0x54')]['id'],_0x6da9c9));}else{return _0x1e613a[_0x7749('0x7a')](0xcc);}})[_0x7749('0x47')](handleError(_0x1e613a,null));};
\ No newline at end of file
+var _0x78e2=['rawAttributes','intersection','length','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','Projects','UserProfileSection','userProfileId','autoAssociation','clone','omit','createdAt','updatedAt','role','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','findOne','JscriptySessionReport','pick','ProjectId','include','getAnswers','JscriptyAnswerReport','order','number','toString','indexOf','getSummary','startTime','starttime','parse','JscriptyQuestionReport','-createdAt','questionId','question','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','push','isEmpty','now','writeFileSync','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','format','Content-type','text/csv','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','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','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','then','destroy','UserProfileResource','sendStatus','error','stack','name','index','JscriptyProject','type','key','model','map','query','keys','filters','attributes','fields','hasOwnProperty','nolimit','sort','where','VIRTUAL','filter','merge','options','includeAll','findAll','rows','catch','show','params'];(function(_0x1732f2,_0x3150b9){var _0x1f8f83=function(_0x20c2c5){while(--_0x20c2c5){_0x1732f2['push'](_0x1732f2['shift']());}};_0x1f8f83(++_0x3150b9);}(_0x78e2,0x1a8));var _0x278e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x78e2[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x278e('0x0'));var rimraf=require(_0x278e('0x1'));var zipdir=require(_0x278e('0x2'));var jsonpatch=require(_0x278e('0x3'));var rp=require(_0x278e('0x4'));var moment=require('moment');var BPromise=require(_0x278e('0x5'));var Mustache=require('mustache');var util=require(_0x278e('0x6'));var path=require(_0x278e('0x7'));var sox=require(_0x278e('0x8'));var csv=require(_0x278e('0x9'));var ejs=require(_0x278e('0xa'));var fs=require('fs');var fs_extra=require(_0x278e('0xb'));var _=require(_0x278e('0xc'));var squel=require(_0x278e('0xd'));var crypto=require(_0x278e('0xe'));var jsforce=require(_0x278e('0xf'));var deskjs=require(_0x278e('0x10'));var toCsv=require(_0x278e('0x9'));var querystring=require(_0x278e('0x11'));var Papa=require(_0x278e('0x12'));var Redis=require(_0x278e('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x278e('0x14'));var as=require(_0x278e('0x15'));var hardwareService=require(_0x278e('0x16'));var logger=require(_0x278e('0x17'))(_0x278e('0x18'));var utils=require(_0x278e('0x19'));var config=require(_0x278e('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x278e('0x1b'))['db'];function respondWithStatusCode(_0x3f2a66,_0x4fe711){_0x4fe711=_0x4fe711||0xcc;return function(_0x2bfe2b){if(_0x2bfe2b){return _0x3f2a66['sendStatus'](_0x4fe711);}return _0x3f2a66[_0x278e('0x1c')](_0x4fe711)['end']();};}function respondWithResult(_0x580b58,_0x4503ba){_0x4503ba=_0x4503ba||0xc8;return function(_0x108ce5){if(_0x108ce5){return _0x580b58['status'](_0x4503ba)['json'](_0x108ce5);}};}function respondWithFilteredResult(_0x43f659,_0x15be55){return function(_0x58f1ec){if(_0x58f1ec){var _0x1b6300=typeof _0x15be55[_0x278e('0x1d')]==='undefined'&&typeof _0x15be55[_0x278e('0x1e')]===_0x278e('0x1f');var _0x2cc807=_0x58f1ec['count'];var _0x381cc9=_0x1b6300?0x0:_0x15be55[_0x278e('0x1d')];var _0x58a511=_0x1b6300?_0x58f1ec[_0x278e('0x20')]:_0x15be55[_0x278e('0x1d')]+_0x15be55[_0x278e('0x1e')];var _0x4b66a9;if(_0x58a511>=_0x2cc807){_0x58a511=_0x2cc807;_0x4b66a9=0xc8;}else{_0x4b66a9=0xce;}_0x43f659[_0x278e('0x1c')](_0x4b66a9);return _0x43f659[_0x278e('0x21')](_0x278e('0x22'),_0x381cc9+'-'+_0x58a511+'/'+_0x2cc807)[_0x278e('0x23')](_0x58f1ec);}return null;};}function patchUpdates(_0x576470){return function(_0x380a10){try{jsonpatch[_0x278e('0x24')](_0x380a10,_0x576470,!![]);}catch(_0x5c0920){return BPromise[_0x278e('0x25')](_0x5c0920);}return _0x380a10[_0x278e('0x26')]();};}function saveUpdates(_0x2f4e73,_0x9562e3){return function(_0x461d37){if(_0x461d37){return _0x461d37[_0x278e('0x27')](_0x2f4e73)[_0x278e('0x28')](function(_0x30262f){return _0x30262f;});}return null;};}function removeEntity(_0x1dbc09,_0x269148){return function(_0x3c5de5){if(_0x3c5de5){return _0x3c5de5[_0x278e('0x29')]()['then'](function(){var _0x57054f=_0x3c5de5['get']({'plain':!![]});var _0x42bccd='Projects';return db[_0x278e('0x2a')][_0x278e('0x29')]({'where':{'type':_0x42bccd,'resourceId':_0x57054f['id']}})[_0x278e('0x28')](function(){return _0x3c5de5;});})[_0x278e('0x28')](function(){_0x1dbc09[_0x278e('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2b2f0b,_0x15b8e6){return function(_0x14fbc0){if(!_0x14fbc0){_0x2b2f0b[_0x278e('0x2b')](0x194);}return _0x14fbc0;};}function handleError(_0x50cc81,_0x370151){_0x370151=_0x370151||0x1f4;return function(_0x1b91d9){logger[_0x278e('0x2c')](_0x1b91d9[_0x278e('0x2d')]);if(_0x1b91d9[_0x278e('0x2e')]){delete _0x1b91d9[_0x278e('0x2e')];}_0x50cc81[_0x278e('0x1c')](_0x370151)['send'](_0x1b91d9);};}exports[_0x278e('0x2f')]=function(_0x319043,_0x302eec){var _0x3f3c79={},_0x47a14c={},_0x4c5dfd={'count':0x0,'rows':[]};var _0x48b0ad=_['map'](db[_0x278e('0x30')]['rawAttributes'],function(_0x307941){return{'name':_0x307941['fieldName'],'type':_0x307941[_0x278e('0x31')][_0x278e('0x32')]};});_0x47a14c[_0x278e('0x33')]=_[_0x278e('0x34')](_0x48b0ad,'name');_0x47a14c[_0x278e('0x35')]=_[_0x278e('0x36')](_0x319043[_0x278e('0x35')]);_0x47a14c[_0x278e('0x37')]=_['intersection'](_0x47a14c[_0x278e('0x33')],_0x47a14c[_0x278e('0x35')]);_0x3f3c79[_0x278e('0x38')]=_['intersection'](_0x47a14c['model'],qs['fields'](_0x319043[_0x278e('0x35')][_0x278e('0x39')]));_0x3f3c79[_0x278e('0x38')]=_0x3f3c79[_0x278e('0x38')]['length']?_0x3f3c79[_0x278e('0x38')]:_0x47a14c['model'];if(!_0x319043[_0x278e('0x35')][_0x278e('0x3a')](_0x278e('0x3b'))){_0x3f3c79[_0x278e('0x1e')]=qs[_0x278e('0x1e')](_0x319043['query'][_0x278e('0x1e')]);_0x3f3c79[_0x278e('0x1d')]=qs[_0x278e('0x1d')](_0x319043[_0x278e('0x35')][_0x278e('0x1d')]);}_0x3f3c79['order']=qs[_0x278e('0x3c')](_0x319043[_0x278e('0x35')][_0x278e('0x3c')]);_0x3f3c79[_0x278e('0x3d')]=qs[_0x278e('0x37')](_['pick'](_0x319043[_0x278e('0x35')],_0x47a14c[_0x278e('0x37')]),_0x48b0ad);if(_0x319043[_0x278e('0x35')]['filter']){_0x3f3c79[_0x278e('0x3d')]=_['merge'](_0x3f3c79['where'],{'$or':_[_0x278e('0x34')](_0x48b0ad,function(_0x546bda){if(_0x546bda[_0x278e('0x31')]!==_0x278e('0x3e')){var _0x1bb9b9={};_0x1bb9b9[_0x546bda['name']]={'$like':'%'+_0x319043[_0x278e('0x35')][_0x278e('0x3f')]+'%'};return _0x1bb9b9;}})});}_0x3f3c79=_[_0x278e('0x40')]({},_0x3f3c79,_0x319043[_0x278e('0x41')]);var _0x410259={'where':_0x3f3c79['where']};return db['JscriptyProject'][_0x278e('0x20')](_0x410259)['then'](function(_0x34b3ba){_0x4c5dfd['count']=_0x34b3ba;if(_0x319043[_0x278e('0x35')][_0x278e('0x42')]){_0x3f3c79['include']=[{'all':!![]}];}return db[_0x278e('0x30')][_0x278e('0x43')](_0x3f3c79);})[_0x278e('0x28')](function(_0x8d48f5){_0x4c5dfd[_0x278e('0x44')]=_0x8d48f5;return _0x4c5dfd;})[_0x278e('0x28')](respondWithFilteredResult(_0x302eec,_0x3f3c79))[_0x278e('0x45')](handleError(_0x302eec,null));};exports[_0x278e('0x46')]=function(_0x3cde01,_0x1e2d70){var _0x24d696={'raw':![],'where':{'id':_0x3cde01[_0x278e('0x47')]['id']}},_0x285490={};_0x285490[_0x278e('0x33')]=_[_0x278e('0x36')](db[_0x278e('0x30')][_0x278e('0x48')]);_0x285490[_0x278e('0x35')]=_['keys'](_0x3cde01['query']);_0x285490[_0x278e('0x37')]=_['intersection'](_0x285490[_0x278e('0x33')],_0x285490[_0x278e('0x35')]);_0x24d696[_0x278e('0x38')]=_[_0x278e('0x49')](_0x285490[_0x278e('0x33')],qs[_0x278e('0x39')](_0x3cde01[_0x278e('0x35')][_0x278e('0x39')]));_0x24d696[_0x278e('0x38')]=_0x24d696[_0x278e('0x38')][_0x278e('0x4a')]?_0x24d696[_0x278e('0x38')]:_0x285490[_0x278e('0x33')];if(_0x3cde01[_0x278e('0x35')][_0x278e('0x42')]){_0x24d696['include']=[{'all':!![]}];}_0x24d696=_[_0x278e('0x40')]({},_0x24d696,_0x3cde01[_0x278e('0x41')]);return db[_0x278e('0x30')][_0x278e('0x4b')](_0x24d696)[_0x278e('0x28')](handleEntityNotFound(_0x1e2d70,null))[_0x278e('0x28')](respondWithResult(_0x1e2d70,null))[_0x278e('0x45')](handleError(_0x1e2d70,null));};exports[_0x278e('0x4c')]=function(_0x12411f,_0x2e7c86){return db[_0x278e('0x30')][_0x278e('0x4c')](_0x12411f[_0x278e('0x4d')],{})[_0x278e('0x28')](function(_0x37cf1e){var _0x58b996=_0x12411f[_0x278e('0x4e')][_0x278e('0x4f')]({'plain':!![]});if(!_0x58b996)throw new Error(_0x278e('0x50'));if(_0x58b996['role']===_0x278e('0x4e')){var _0xd5a35b=_0x37cf1e[_0x278e('0x4f')]({'plain':!![]});var _0x4c2c43=_0x278e('0x51');return db[_0x278e('0x52')]['find']({'where':{'name':_0x4c2c43,'userProfileId':_0x58b996[_0x278e('0x53')]},'raw':!![]})['then'](function(_0x19d658){if(_0x19d658&&_0x19d658[_0x278e('0x54')]===0x0){return db['UserProfileResource'][_0x278e('0x4c')]({'name':_0xd5a35b['name'],'resourceId':_0xd5a35b['id'],'type':_0x19d658[_0x278e('0x2e')],'sectionId':_0x19d658['id']},{})['then'](function(){return _0x37cf1e;});}else{return _0x37cf1e;}})[_0x278e('0x45')](function(_0x115d7a){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x115d7a);throw _0x115d7a;});}return _0x37cf1e;})[_0x278e('0x28')](respondWithResult(_0x2e7c86,0xc9))[_0x278e('0x45')](handleError(_0x2e7c86,null));};exports[_0x278e('0x55')]=function(_0x32b77f,_0x2115dd){var _0x36a696={'where':{'id':_0x32b77f[_0x278e('0x47')]['id']}},_0x9dbc55={};_0x9dbc55['model']=_[_0x278e('0x36')](db[_0x278e('0x30')]['rawAttributes']);_0x36a696[_0x278e('0x38')]=_[_0x278e('0x49')](_0x9dbc55[_0x278e('0x33')],qs['fields'](_0x32b77f['query'][_0x278e('0x39')]));_0x36a696[_0x278e('0x38')]=_0x36a696[_0x278e('0x38')][_0x278e('0x4a')]?_0x36a696['attributes']:_0x9dbc55[_0x278e('0x33')];if(_0x32b77f[_0x278e('0x35')]['includeAll']){_0x36a696['include']=[{'all':!![]}];}_0x36a696=_[_0x278e('0x40')]({},_0x36a696,_0x32b77f[_0x278e('0x41')]);return db[_0x278e('0x30')][_0x278e('0x4b')](_0x36a696)[_0x278e('0x28')](handleEntityNotFound(_0x2115dd,null))[_0x278e('0x28')](function(_0x467bf2){if(_0x467bf2){var _0x292ecc=_0x467bf2[_0x278e('0x4f')]({'plain':!![]});_0x292ecc=qs[_0x278e('0x56')](_0x292ecc,['id',_0x278e('0x57'),'updatedAt']);_0x32b77f['body']=_['omit'](_0x32b77f[_0x278e('0x4d')],['id',_0x278e('0x57'),_0x278e('0x58')]);return db[_0x278e('0x30')][_0x278e('0x4c')](_[_0x278e('0x40')](_0x292ecc,_0x32b77f[_0x278e('0x4d')]),{'include':_0x32b77f[_0x278e('0x35')][_0x278e('0x42')]?[{'all':!![]}]:undefined})[_0x278e('0x28')](function(_0x11c639){var _0x3e6992=_0x32b77f[_0x278e('0x4e')][_0x278e('0x4f')]({'plain':!![]});if(!_0x3e6992)throw new Error(_0x278e('0x50'));if(_0x3e6992[_0x278e('0x59')]===_0x278e('0x4e')){var _0x28bfa3=_0x11c639[_0x278e('0x4f')]({'plain':!![]});var _0xf07224=_0x278e('0x51');return db[_0x278e('0x52')][_0x278e('0x4b')]({'where':{'name':_0xf07224,'userProfileId':_0x3e6992['userProfileId']},'raw':!![]})[_0x278e('0x28')](function(_0x46574a){if(_0x46574a&&_0x46574a['autoAssociation']===0x0){return db[_0x278e('0x2a')]['create']({'name':_0x28bfa3['name'],'resourceId':_0x28bfa3['id'],'type':_0x46574a['name'],'sectionId':_0x46574a['id']},{})[_0x278e('0x28')](function(){return _0x11c639;});}else{return _0x11c639;}})['catch'](function(_0x1152f6){logger[_0x278e('0x2c')](_0x278e('0x5a'),_0x1152f6);throw _0x1152f6;});}return _0x11c639;});}})['then'](respondWithResult(_0x2115dd,0xc9))[_0x278e('0x45')](handleError(_0x2115dd,null));};exports[_0x278e('0x27')]=function(_0x2ab62e,_0xe8e420){if(_0x2ab62e[_0x278e('0x4d')]['id']){delete _0x2ab62e[_0x278e('0x4d')]['id'];}return db[_0x278e('0x30')][_0x278e('0x4b')]({'where':{'id':_0x2ab62e[_0x278e('0x47')]['id']}})['then'](handleEntityNotFound(_0xe8e420,null))[_0x278e('0x28')](saveUpdates(_0x2ab62e[_0x278e('0x4d')],null))[_0x278e('0x28')](respondWithResult(_0xe8e420,null))[_0x278e('0x45')](handleError(_0xe8e420,null));};exports['destroy']=function(_0x9e9199,_0x231437){return db[_0x278e('0x30')][_0x278e('0x4b')]({'where':{'id':_0x9e9199[_0x278e('0x47')]['id']}})[_0x278e('0x28')](handleEntityNotFound(_0x231437,null))[_0x278e('0x28')](removeEntity(_0x231437,null))[_0x278e('0x45')](handleError(_0x231437,null));};exports['getSessions']=function(_0x28cee6,_0x473edf,_0x5d82c8){var _0x51fcd4={'raw':!![],'where':{}};var _0x3fa9b4={};var _0xf82bf6={'count':0x0,'rows':[]};return db['JscriptyProject'][_0x278e('0x5b')]({'where':{'id':_0x28cee6[_0x278e('0x47')]['id']}})[_0x278e('0x28')](handleEntityNotFound(_0x473edf,null))['then'](function(_0x3516b3){if(_0x3516b3){_0x3fa9b4[_0x278e('0x33')]=_[_0x278e('0x36')](db[_0x278e('0x5c')]['rawAttributes']);_0x3fa9b4[_0x278e('0x35')]=_[_0x278e('0x36')](_0x28cee6[_0x278e('0x35')]);_0x3fa9b4[_0x278e('0x37')]=_[_0x278e('0x49')](_0x3fa9b4[_0x278e('0x33')],_0x3fa9b4[_0x278e('0x35')]);_0x51fcd4[_0x278e('0x38')]=_[_0x278e('0x49')](_0x3fa9b4[_0x278e('0x33')],qs['fields'](_0x28cee6['query'][_0x278e('0x39')]));_0x51fcd4[_0x278e('0x38')]=_0x51fcd4[_0x278e('0x38')][_0x278e('0x4a')]?_0x51fcd4['attributes']:_0x3fa9b4['model'];if(!_0x28cee6[_0x278e('0x35')][_0x278e('0x3a')](_0x278e('0x3b'))){_0x51fcd4[_0x278e('0x1e')]=qs[_0x278e('0x1e')](_0x28cee6['query'][_0x278e('0x1e')]);_0x51fcd4[_0x278e('0x1d')]=qs['offset'](_0x28cee6[_0x278e('0x35')][_0x278e('0x1d')]);}_0x51fcd4['order']=qs['sort'](_0x28cee6[_0x278e('0x35')]['sort']);_0x51fcd4[_0x278e('0x3d')]=qs[_0x278e('0x37')](_[_0x278e('0x5d')](_0x28cee6[_0x278e('0x35')],_0x3fa9b4[_0x278e('0x37')]));_0x51fcd4[_0x278e('0x3d')][_0x278e('0x5e')]=_0x3516b3['id'];if(_0x28cee6['query'][_0x278e('0x3f')]){_0x51fcd4[_0x278e('0x3d')]=_[_0x278e('0x40')](_0x51fcd4['where'],{'$or':_[_0x278e('0x34')](_0x51fcd4[_0x278e('0x38')],function(_0x656864){var _0x304639={};_0x304639[_0x656864]={'$like':'%'+_0x28cee6[_0x278e('0x35')]['filter']+'%'};return _0x304639;})});}_0x51fcd4=_[_0x278e('0x40')]({},_0x51fcd4,_0x28cee6[_0x278e('0x41')]);return db[_0x278e('0x5c')][_0x278e('0x20')]({'where':_0x51fcd4[_0x278e('0x3d')]})[_0x278e('0x28')](function(_0x325681){_0xf82bf6[_0x278e('0x20')]=_0x325681;if(_0x28cee6[_0x278e('0x35')][_0x278e('0x42')]){_0x51fcd4[_0x278e('0x5f')]=[{'all':!![]}];}return db[_0x278e('0x5c')]['findAll'](_0x51fcd4);})['then'](function(_0x593b21){_0xf82bf6[_0x278e('0x44')]=_0x593b21;return _0xf82bf6;});}})[_0x278e('0x28')](respondWithFilteredResult(_0x473edf,_0x51fcd4))[_0x278e('0x45')](handleError(_0x473edf,null));};exports[_0x278e('0x60')]=function(_0x492382,_0x29be6f,_0x5a1c56){var _0x3f516a={'raw':!![],'where':{}};var _0x3f176e={};var _0xb3e777={'count':0x0,'rows':[]};return db[_0x278e('0x30')][_0x278e('0x5b')]({'where':{'id':_0x492382[_0x278e('0x47')]['id']}})[_0x278e('0x28')](handleEntityNotFound(_0x29be6f,null))['then'](function(_0x787373){if(_0x787373){_0x3f176e[_0x278e('0x33')]=_[_0x278e('0x36')](db[_0x278e('0x61')][_0x278e('0x48')]);_0x3f176e['query']=_['keys'](_0x492382['query']);_0x3f176e['filters']=_['intersection'](_0x3f176e[_0x278e('0x33')],_0x3f176e[_0x278e('0x35')]);_0x3f516a[_0x278e('0x38')]=_[_0x278e('0x49')](_0x3f176e[_0x278e('0x33')],qs[_0x278e('0x39')](_0x492382['query'][_0x278e('0x39')]));_0x3f516a[_0x278e('0x38')]=_0x3f516a[_0x278e('0x38')]['length']?_0x3f516a[_0x278e('0x38')]:_0x3f176e[_0x278e('0x33')];if(!_0x492382[_0x278e('0x35')][_0x278e('0x3a')](_0x278e('0x3b'))){_0x3f516a['limit']=qs['limit'](_0x492382[_0x278e('0x35')][_0x278e('0x1e')]);_0x3f516a[_0x278e('0x1d')]=qs[_0x278e('0x1d')](_0x492382[_0x278e('0x35')][_0x278e('0x1d')]);}_0x3f516a[_0x278e('0x62')]=qs[_0x278e('0x3c')](_0x492382['query'][_0x278e('0x3c')]);_0x3f516a[_0x278e('0x3d')]=qs['filters'](_[_0x278e('0x5d')](_0x492382['query'],_0x3f176e[_0x278e('0x37')]));_0x3f516a[_0x278e('0x3d')][_0x278e('0x5e')]=_0x787373['id'];if(_0x492382[_0x278e('0x35')]['filter']){_0x3f516a[_0x278e('0x3d')]=_[_0x278e('0x40')](_0x3f516a[_0x278e('0x3d')],{'$or':_[_0x278e('0x34')](_0x3f516a[_0x278e('0x38')],function(_0x17d9ca){var _0x43916d={};_0x43916d[_0x17d9ca]={'$like':'%'+_0x492382[_0x278e('0x35')][_0x278e('0x3f')]+'%'};return _0x43916d;})});}_0x3f516a=_[_0x278e('0x40')]({},_0x3f516a,_0x492382[_0x278e('0x41')]);return db[_0x278e('0x61')][_0x278e('0x20')]({'where':_0x3f516a[_0x278e('0x3d')]})['then'](function(_0x47e97d){_0xb3e777[_0x278e('0x20')]=_0x47e97d;if(_0x492382[_0x278e('0x35')]['includeAll']){_0x3f516a['include']=[{'all':!![]}];}return db[_0x278e('0x61')]['findAll'](_0x3f516a);})[_0x278e('0x28')](function(_0x1bbb9b){_0xb3e777[_0x278e('0x44')]=_0x1bbb9b;return _0xb3e777;});}})[_0x278e('0x28')](respondWithFilteredResult(_0x29be6f,_0x3f516a))[_0x278e('0x45')](handleError(_0x29be6f,null));};function char(_0x92281f){return _0x278e('0x63')===typeof _0x92281f?String['fromCharCode'][_0x278e('0x24')](null,arguments):_0x92281f;}function needsEncapsulation(_0x303287){return!!_0x303287&&(_0x303287[_0x278e('0x64')]()[_0x278e('0x65')](char(0xd))>=0x0||_0x303287[_0x278e('0x64')]()[_0x278e('0x65')](char(0xa))>=0x0||_0x303287[_0x278e('0x64')]()[_0x278e('0x65')](char(0x2c))>=0x0||_0x303287['toString']()[_0x278e('0x65')](char(0x22))>=0x0);}function encapsulate(_0x1e52a4){var _0x3ec15a=char(0x22),_0x13365c='\x5c'+char(0x22),_0x495bdc=_0x1e52a4[_0x278e('0x64')]()['replace'](new RegExp(_0x3ec15a,'g'),_0x13365c);return _0x3ec15a+_0x495bdc+_0x3ec15a;}exports[_0x278e('0x66')]=function(_0x379af8,_0x5f2a95,_0x30d91b){var _0x4bedd3,_0x1ce7e0;var _0x246a86={'where':{'ProjectId':_0x379af8[_0x278e('0x47')]['id']}};if(_0x379af8[_0x278e('0x35')][_0x278e('0x67')]){_0x246a86[_0x278e('0x3d')][_0x278e('0x68')]=JSON[_0x278e('0x69')](_0x379af8['query'][_0x278e('0x67')]);}return db[_0x278e('0x5c')][_0x278e('0x43')](_0x246a86)[_0x278e('0x28')](handleEntityNotFound(_0x5f2a95,null))[_0x278e('0x28')](function(_0x3c5b7e){if(_0x3c5b7e){_0x4bedd3=_0x3c5b7e;return db[_0x278e('0x6a')][_0x278e('0x43')]({'where':{'SessionId':{'$in':_['map'](_0x4bedd3,'id')},'ProjectId':_0x379af8[_0x278e('0x47')]['id']},'order':_0x278e('0x6b')});}})[_0x278e('0x28')](handleEntityNotFound(_0x5f2a95,null))[_0x278e('0x28')](function(_0x39d74c){if(_0x39d74c){_0x1ce7e0=_0x39d74c;var _0xbba205={};for(var _0x4ea066=0x0,_0x1db1b5=_0x1ce7e0[_0x278e('0x4a')];_0x4ea066<_0x1db1b5;_0x4ea066++){if(!_0xbba205[_0x278e('0x3a')](_0x1ce7e0[_0x4ea066][_0x278e('0x6c')])){_0xbba205[_0x1ce7e0[_0x4ea066]['questionId']]=needsEncapsulation(_0x1ce7e0[_0x4ea066][_0x278e('0x6d')])?encapsulate(_0x1ce7e0[_0x4ea066][_0x278e('0x6d')]):_0x1ce7e0[_0x4ea066][_0x278e('0x6d')];}}var _0x210320=[],_0x3ee6df={};for(var _0x919126=0x0,_0x1a41a0=_0x4bedd3[_0x278e('0x4a')];_0x919126<_0x1a41a0;_0x919126++){_0x3ee6df={'ProjectId':_0x379af8[_0x278e('0x47')]['id'],'SessionId':_0x4bedd3[_0x919126]['id'],'StartTime':moment(_0x4bedd3[_0x919126]['starttime'])['format'](_0x278e('0x6e'))};for(var _0x58a3b2=0x0,_0x25fcd2=_0x1ce7e0[_0x278e('0x4a')];_0x58a3b2<_0x25fcd2;_0x58a3b2++){if(_0x1ce7e0[_0x58a3b2][_0x278e('0x6f')]==_0x4bedd3[_0x919126]['id']&&_0xbba205[_0x278e('0x3a')](_0x1ce7e0[_0x58a3b2]['questionId'])){_0x3ee6df[_0xbba205[_0x1ce7e0[_0x58a3b2]['questionId']]]=_0x1ce7e0[_0x58a3b2][_0x278e('0x70')];}}for(var _0x47f567 in _0xbba205){if(!_0x3ee6df[_0x278e('0x3a')](_0xbba205[_0x47f567])){_0x3ee6df[_0xbba205[_0x47f567]]=null;}}_0x210320[_0x278e('0x71')](_0x3ee6df);}return _0x210320;}})[_0x278e('0x28')](function(_0x2386d1){if(!_[_0x278e('0x72')](_0x2386d1)){var _0x2c8768=toCsv(_0x2386d1);var _0x5d87e3=Date[_0x278e('0x73')]();fs[_0x278e('0x74')](util['format'](_0x278e('0x75'),_0x379af8[_0x278e('0x47')]['id'],_0x5d87e3),_0x2c8768);_0x5f2a95[_0x278e('0x76')](_0x278e('0x77'),'attachment;\x20filename='+util[_0x278e('0x78')]('Jscripty_Project_%d_Summary_%s.csv',_0x379af8['params']['id'],_0x5d87e3));_0x5f2a95['setHeader'](_0x278e('0x79'),_0x278e('0x7a'));return _0x5f2a95[_0x278e('0x7b')](util['format'](_0x278e('0x75'),_0x379af8['params']['id'],_0x5d87e3));}else{return _0x5f2a95[_0x278e('0x2b')](0xcc);}})[_0x278e('0x45')](handleError(_0x5f2a95,null));};
\ No newline at end of file
index 0f52d69..545e527 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8585=['JscriptyProject','lodash','util','../../config/logger','moment','bluebird','../../config/environment','./jscriptyProject.attributes','define'];(function(_0x1fc979,_0x548f81){var _0xc59aef=function(_0x1d482e){while(--_0x1d482e){_0x1fc979['push'](_0x1fc979['shift']());}};_0xc59aef(++_0x548f81);}(_0x8585,0x64));var _0x5858=function(_0x518e80,_0x3c9c4b){_0x518e80=_0x518e80-0x0;var _0x268513=_0x8585[_0x518e80];return _0x268513;};'use strict';var _=require(_0x5858('0x0'));var util=require(_0x5858('0x1'));var logger=require(_0x5858('0x2'))('api');var moment=require(_0x5858('0x3'));var BPromise=require(_0x5858('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x5858('0x5'));var attributes=require(_0x5858('0x6'));module['exports']=function(_0x5807a2,_0x35b37a){return _0x5807a2[_0x5858('0x7')](_0x5858('0x8'),attributes,{'tableName':'jscripty_projects','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x23ea=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptyProject.attributes','define','JscriptyProject','jscripty_projects','lodash'];(function(_0x2d323f,_0x231fe6){var _0x11e018=function(_0x4f326b){while(--_0x4f326b){_0x2d323f['push'](_0x2d323f['shift']());}};_0x11e018(++_0x231fe6);}(_0x23ea,0xc3));var _0xa23e=function(_0x415264,_0x4e71cc){_0x415264=_0x415264-0x0;var _0x305b9e=_0x23ea[_0x415264];return _0x305b9e;};'use strict';var _=require(_0xa23e('0x0'));var util=require(_0xa23e('0x1'));var logger=require(_0xa23e('0x2'))(_0xa23e('0x3'));var moment=require(_0xa23e('0x4'));var BPromise=require(_0xa23e('0x5'));var rp=require(_0xa23e('0x6'));var fs=require('fs');var path=require(_0xa23e('0x7'));var rimraf=require(_0xa23e('0x8'));var config=require(_0xa23e('0x9'));var attributes=require(_0xa23e('0xa'));module['exports']=function(_0x3baf3d,_0x423454){return _0x3baf3d[_0xa23e('0xb')](_0xa23e('0xc'),attributes,{'tableName':_0xa23e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 766621a..ca07718 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['code','JscriptyProject,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x3910b6,_0x5246eb){var _0x301f67=function(_0x50a9ea){while(--_0x50a9ea){_0x3910b6['push'](_0x3910b6['shift']());}};_0x301f67(++_0x5246eb);}(_0x70e0,0x17b));var _0x070e=function(_0x58ffcb,_0x52d0cb){_0x58ffcb=_0x58ffcb-0x0;var _0x143df6=_0x70e0[_0x58ffcb];return _0x143df6;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var moment=require(_0x070e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x070e('0x3'));var db=require(_0x070e('0x4'))['db'];var utils=require(_0x070e('0x5'));var logger=require(_0x070e('0x6'))('rpc');var config=require(_0x070e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x070e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x56e420,_0x5032e5,_0x35ab0c){return new BPromise(function(_0x1e11f0,_0x604664){return client[_0x070e('0x9')](_0x56e420,_0x35ab0c)[_0x070e('0xa')](function(_0x68a09e){logger[_0x070e('0xb')]('JscriptyProject,\x20%s,\x20%s',_0x5032e5,'request\x20sent');logger[_0x070e('0xc')](_0x070e('0xd'),_0x5032e5,_0x070e('0xe'),JSON[_0x070e('0xf')](_0x68a09e));if(_0x68a09e[_0x070e('0x10')]){if(_0x68a09e[_0x070e('0x10')][_0x070e('0x11')]===0x1f4){logger[_0x070e('0x10')](_0x070e('0x12'),_0x5032e5,_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);return _0x604664(_0x68a09e['error']['message']);}logger[_0x070e('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x5032e5,_0x68a09e['error']['message']);return _0x1e11f0(_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);}else{logger['info']('JscriptyProject,\x20%s,\x20%s',_0x5032e5,_0x070e('0xe'));_0x1e11f0(_0x68a09e[_0x070e('0x14')][_0x070e('0x13')]);}})[_0x070e('0x15')](function(_0x5bc71e){logger['error'](_0x070e('0x12'),_0x5032e5,_0x5bc71e);_0x604664(_0x5bc71e);});});}
\ No newline at end of file
+var _0xd8b0=['../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','info','JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','ioredis'];(function(_0x174ef5,_0x256e8e){var _0x1cc379=function(_0x3eafcf){while(--_0x3eafcf){_0x174ef5['push'](_0x174ef5['shift']());}};_0x1cc379(++_0x256e8e);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0d8b('0x2'));var db=require(_0x0d8b('0x3'))['db'];var utils=require(_0x0d8b('0x4'));var logger=require(_0x0d8b('0x5'))(_0x0d8b('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0d8b('0x7')][_0x0d8b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x39f43a,_0x4a4470,_0x413284){return new BPromise(function(_0x284169,_0x58e4e2){return client[_0x0d8b('0x9')](_0x39f43a,_0x413284)[_0x0d8b('0xa')](function(_0x3b027f){logger[_0x0d8b('0xb')](_0x0d8b('0xc'),_0x4a4470,_0x0d8b('0xd'));logger[_0x0d8b('0xe')](_0x0d8b('0xf'),_0x4a4470,'request\x20sent',JSON[_0x0d8b('0x10')](_0x3b027f));if(_0x3b027f['error']){if(_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x12')]===0x1f4){logger[_0x0d8b('0x11')](_0x0d8b('0xc'),_0x4a4470,_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);return _0x58e4e2(_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);}logger[_0x0d8b('0x11')](_0x0d8b('0xc'),_0x4a4470,_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);return _0x284169(_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);}else{logger['info'](_0x0d8b('0xc'),_0x4a4470,_0x0d8b('0xd'));_0x284169(_0x3b027f[_0x0d8b('0x14')][_0x0d8b('0x13')]);}})[_0x0d8b('0x15')](function(_0x5cd485){logger[_0x0d8b('0x11')](_0x0d8b('0xc'),_0x4a4470,_0x5cd485);_0x58e4e2(_0x5cd485);});});}
\ No newline at end of file
index 811d469..3146491 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b5c=['destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyQuestionReport.controller','isAuthenticated','index','get','/describe','describe','/:id','post','create','put','update','delete'];(function(_0x2df3b6,_0x2c9f96){var _0x9e4d14=function(_0x497123){while(--_0x497123){_0x2df3b6['push'](_0x2df3b6['shift']());}};_0x9e4d14(++_0x2c9f96);}(_0x1b5c,0x1ba));var _0xc1b5=function(_0x45b034,_0x3a57dd){_0x45b034=_0x45b034-0x0;var _0x509cb0=_0x1b5c[_0x45b034];return _0x509cb0;};'use strict';var multer=require(_0xc1b5('0x0'));var util=require('util');var path=require(_0xc1b5('0x1'));var timeout=require(_0xc1b5('0x2'));var express=require(_0xc1b5('0x3'));var router=express[_0xc1b5('0x4')]();var fs_extra=require(_0xc1b5('0x5'));var auth=require(_0xc1b5('0x6'));var interaction=require(_0xc1b5('0x7'));var config=require('../../config/environment');var controller=require(_0xc1b5('0x8'));router['get']('/',auth[_0xc1b5('0x9')](),controller[_0xc1b5('0xa')]);router[_0xc1b5('0xb')](_0xc1b5('0xc'),auth[_0xc1b5('0x9')](),controller[_0xc1b5('0xd')]);router[_0xc1b5('0xb')](_0xc1b5('0xe'),auth[_0xc1b5('0x9')](),controller['show']);router[_0xc1b5('0xf')]('/',auth['isAuthenticated'](),controller[_0xc1b5('0x10')]);router[_0xc1b5('0x11')](_0xc1b5('0xe'),auth[_0xc1b5('0x9')](),controller[_0xc1b5('0x12')]);router[_0xc1b5('0x13')](_0xc1b5('0xe'),auth[_0xc1b5('0x9')](),controller[_0xc1b5('0x14')]);module[_0xc1b5('0x15')]=router;
\ No newline at end of file
+var _0xe2e1=['delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../config/environment','./jscriptyQuestionReport.controller','isAuthenticated','index','/describe','describe','get','/:id','show','create','put','update'];(function(_0x8fee8e,_0x4efa85){var _0x5bd02d=function(_0x5aaeeb){while(--_0x5aaeeb){_0x8fee8e['push'](_0x8fee8e['shift']());}};_0x5bd02d(++_0x4efa85);}(_0xe2e1,0xd5));var _0x1e2e=function(_0x33f623,_0x242842){_0x33f623=_0x33f623-0x0;var _0xff4394=_0xe2e1[_0x33f623];return _0xff4394;};'use strict';var multer=require(_0x1e2e('0x0'));var util=require(_0x1e2e('0x1'));var path=require(_0x1e2e('0x2'));var timeout=require(_0x1e2e('0x3'));var express=require(_0x1e2e('0x4'));var router=express[_0x1e2e('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x1e2e('0x6'));var controller=require(_0x1e2e('0x7'));router['get']('/',auth[_0x1e2e('0x8')](),controller[_0x1e2e('0x9')]);router['get'](_0x1e2e('0xa'),auth[_0x1e2e('0x8')](),controller[_0x1e2e('0xb')]);router[_0x1e2e('0xc')](_0x1e2e('0xd'),auth[_0x1e2e('0x8')](),controller[_0x1e2e('0xe')]);router['post']('/',auth[_0x1e2e('0x8')](),controller[_0x1e2e('0xf')]);router[_0x1e2e('0x10')](_0x1e2e('0xd'),auth['isAuthenticated'](),controller[_0x1e2e('0x11')]);router[_0x1e2e('0x12')]('/:id',auth[_0x1e2e('0x8')](),controller[_0x1e2e('0x13')]);module[_0x1e2e('0x14')]=router;
\ No newline at end of file
index be466d6..158b0eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x7a54,0x106));var _0x47a5=function(_0x197093,_0x487de9){_0x197093=_0x197093-0x0;var _0x4f1913=_0x7a54[_0x197093];return _0x4f1913;};'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(_0x36c5b0,_0x5001da){var _0xf19333=function(_0x1e880a){while(--_0x1e880a){_0x36c5b0['push'](_0x36c5b0['shift']());}};_0xf19333(++_0x5001da);}(_0x7a54,0x106));var _0x47a5=function(_0x49e4b6,_0x3b1205){_0x49e4b6=_0x49e4b6-0x0;var _0x15ce69=_0x7a54[_0x49e4b6];return _0x15ce69;};'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 4011f3e..c71ba5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x129a=['save','then','destroy','error','stack','index','fieldName','type','key','model','map','name','keys','query','filters','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','VIRTUAL','options','includeAll','JscriptyQuestionReport','findAll','rows','catch','show','rawAttributes','intersection','include','merge','find','create','body','update','params','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject'];(function(_0x2bc051,_0x3f165f){var _0x3c886a=function(_0x2866c6){while(--_0x2866c6){_0x2bc051['push'](_0x2bc051['shift']());}};_0x3c886a(++_0x3f165f);}(_0x129a,0x108));var _0xa129=function(_0x1a4212,_0x208b9c){_0x1a4212=_0x1a4212-0x0;var _0x47a970=_0x129a[_0x1a4212];return _0x47a970;};'use strict';var emlformat=require(_0xa129('0x0'));var rimraf=require(_0xa129('0x1'));var zipdir=require(_0xa129('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa129('0x3'));var moment=require(_0xa129('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa129('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xa129('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa129('0x7'));var squel=require(_0xa129('0x8'));var crypto=require('crypto');var jsforce=require(_0xa129('0x9'));var deskjs=require(_0xa129('0xa'));var toCsv=require(_0xa129('0xb'));var querystring=require(_0xa129('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xa129('0xd'));var as=require(_0xa129('0xe'));var hardwareService=require(_0xa129('0xf'));var logger=require('../../config/logger')(_0xa129('0x10'));var utils=require(_0xa129('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0xa129('0x12'));var db=require(_0xa129('0x13'))['db'];function respondWithStatusCode(_0x20ded5,_0x42722d){_0x42722d=_0x42722d||0xcc;return function(_0x2b1fdc){if(_0x2b1fdc){return _0x20ded5[_0xa129('0x14')](_0x42722d);}return _0x20ded5[_0xa129('0x15')](_0x42722d)[_0xa129('0x16')]();};}function respondWithResult(_0x121291,_0x30c0ff){_0x30c0ff=_0x30c0ff||0xc8;return function(_0x287bab){if(_0x287bab){return _0x121291['status'](_0x30c0ff)[_0xa129('0x17')](_0x287bab);}};}function respondWithFilteredResult(_0x341cc3,_0x385686){return function(_0x1c6545){if(_0x1c6545){var _0x425a5c=typeof _0x385686[_0xa129('0x18')]==='undefined'&&typeof _0x385686['limit']===_0xa129('0x19');var _0x1068e6=_0x1c6545[_0xa129('0x1a')];var _0x5540a8=_0x425a5c?0x0:_0x385686[_0xa129('0x18')];var _0x526c0d=_0x425a5c?_0x1c6545[_0xa129('0x1a')]:_0x385686[_0xa129('0x18')]+_0x385686[_0xa129('0x1b')];var _0x48ff98;if(_0x526c0d>=_0x1068e6){_0x526c0d=_0x1068e6;_0x48ff98=0xc8;}else{_0x48ff98=0xce;}_0x341cc3['status'](_0x48ff98);return _0x341cc3[_0xa129('0x1c')](_0xa129('0x1d'),_0x5540a8+'-'+_0x526c0d+'/'+_0x1068e6)[_0xa129('0x17')](_0x1c6545);}return null;};}function patchUpdates(_0x2a8369){return function(_0x123e12){try{jsonpatch[_0xa129('0x1e')](_0x123e12,_0x2a8369,!![]);}catch(_0x267a28){return BPromise[_0xa129('0x1f')](_0x267a28);}return _0x123e12[_0xa129('0x20')]();};}function saveUpdates(_0x26498b,_0x5711b1){return function(_0x50f296){if(_0x50f296){return _0x50f296['update'](_0x26498b)[_0xa129('0x21')](function(_0x1de1f1){return _0x1de1f1;});}return null;};}function removeEntity(_0x1564c5,_0x2bb4c2){return function(_0x13a443){if(_0x13a443){return _0x13a443[_0xa129('0x22')]()[_0xa129('0x21')](function(){_0x1564c5[_0xa129('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ab30a,_0x19538c){return function(_0x2a7417){if(!_0x2a7417){_0x4ab30a[_0xa129('0x14')](0x194);}return _0x2a7417;};}function handleError(_0x13c73b,_0x780a77){_0x780a77=_0x780a77||0x1f4;return function(_0x1ebdf1){logger[_0xa129('0x23')](_0x1ebdf1[_0xa129('0x24')]);if(_0x1ebdf1['name']){delete _0x1ebdf1['name'];}_0x13c73b['status'](_0x780a77)['send'](_0x1ebdf1);};}exports[_0xa129('0x25')]=function(_0x46d517,_0x56090c){var _0x4b740f={},_0x424ea9={},_0x1fa9ca={'count':0x0,'rows':[]};var _0x57d9ba=_['map'](db['JscriptyQuestionReport']['rawAttributes'],function(_0x37138e){return{'name':_0x37138e[_0xa129('0x26')],'type':_0x37138e[_0xa129('0x27')][_0xa129('0x28')]};});_0x424ea9[_0xa129('0x29')]=_[_0xa129('0x2a')](_0x57d9ba,_0xa129('0x2b'));_0x424ea9['query']=_[_0xa129('0x2c')](_0x46d517[_0xa129('0x2d')]);_0x424ea9[_0xa129('0x2e')]=_['intersection'](_0x424ea9[_0xa129('0x29')],_0x424ea9[_0xa129('0x2d')]);_0x4b740f[_0xa129('0x2f')]=_['intersection'](_0x424ea9[_0xa129('0x29')],qs[_0xa129('0x30')](_0x46d517[_0xa129('0x2d')][_0xa129('0x30')]));_0x4b740f[_0xa129('0x2f')]=_0x4b740f[_0xa129('0x2f')][_0xa129('0x31')]?_0x4b740f[_0xa129('0x2f')]:_0x424ea9['model'];if(!_0x46d517[_0xa129('0x2d')][_0xa129('0x32')](_0xa129('0x33'))){_0x4b740f['limit']=qs['limit'](_0x46d517[_0xa129('0x2d')][_0xa129('0x1b')]);_0x4b740f['offset']=qs[_0xa129('0x18')](_0x46d517[_0xa129('0x2d')]['offset']);}_0x4b740f['order']=qs['sort'](_0x46d517[_0xa129('0x2d')][_0xa129('0x34')]);_0x4b740f['where']=qs[_0xa129('0x2e')](_[_0xa129('0x35')](_0x46d517[_0xa129('0x2d')],_0x424ea9[_0xa129('0x2e')]),_0x57d9ba);if(_0x46d517['query'][_0xa129('0x36')]){_0x4b740f['where']=_['merge'](_0x4b740f[_0xa129('0x37')],{'$or':_[_0xa129('0x2a')](_0x57d9ba,function(_0x93b2a0){if(_0x93b2a0[_0xa129('0x27')]!==_0xa129('0x38')){var _0x288f61={};_0x288f61[_0x93b2a0['name']]={'$like':'%'+_0x46d517[_0xa129('0x2d')]['filter']+'%'};return _0x288f61;}})});}_0x4b740f=_['merge']({},_0x4b740f,_0x46d517[_0xa129('0x39')]);var _0x43b05c={'where':_0x4b740f['where']};return db['JscriptyQuestionReport'][_0xa129('0x1a')](_0x43b05c)[_0xa129('0x21')](function(_0x89a2d6){_0x1fa9ca['count']=_0x89a2d6;if(_0x46d517[_0xa129('0x2d')][_0xa129('0x3a')]){_0x4b740f['include']=[{'all':!![]}];}return db[_0xa129('0x3b')][_0xa129('0x3c')](_0x4b740f);})['then'](function(_0x5032f6){_0x1fa9ca[_0xa129('0x3d')]=_0x5032f6;return _0x1fa9ca;})[_0xa129('0x21')](respondWithFilteredResult(_0x56090c,_0x4b740f))[_0xa129('0x3e')](handleError(_0x56090c,null));};exports[_0xa129('0x3f')]=function(_0x192df2,_0x347c09){var _0x3ac3d6={'raw':!![],'where':{'id':_0x192df2['params']['id']}},_0x2693eb={};_0x2693eb[_0xa129('0x29')]=_[_0xa129('0x2c')](db[_0xa129('0x3b')][_0xa129('0x40')]);_0x2693eb[_0xa129('0x2d')]=_[_0xa129('0x2c')](_0x192df2[_0xa129('0x2d')]);_0x2693eb[_0xa129('0x2e')]=_['intersection'](_0x2693eb[_0xa129('0x29')],_0x2693eb['query']);_0x3ac3d6[_0xa129('0x2f')]=_[_0xa129('0x41')](_0x2693eb[_0xa129('0x29')],qs[_0xa129('0x30')](_0x192df2['query'][_0xa129('0x30')]));_0x3ac3d6[_0xa129('0x2f')]=_0x3ac3d6[_0xa129('0x2f')][_0xa129('0x31')]?_0x3ac3d6[_0xa129('0x2f')]:_0x2693eb[_0xa129('0x29')];if(_0x192df2[_0xa129('0x2d')][_0xa129('0x3a')]){_0x3ac3d6[_0xa129('0x42')]=[{'all':!![]}];}_0x3ac3d6=_[_0xa129('0x43')]({},_0x3ac3d6,_0x192df2['options']);return db['JscriptyQuestionReport'][_0xa129('0x44')](_0x3ac3d6)[_0xa129('0x21')](handleEntityNotFound(_0x347c09,null))[_0xa129('0x21')](respondWithResult(_0x347c09,null))[_0xa129('0x3e')](handleError(_0x347c09,null));};exports['create']=function(_0x113a98,_0x3a1cb5){return db[_0xa129('0x3b')][_0xa129('0x45')](_0x113a98[_0xa129('0x46')],{})[_0xa129('0x21')](respondWithResult(_0x3a1cb5,0xc9))['catch'](handleError(_0x3a1cb5,null));};exports[_0xa129('0x47')]=function(_0x2cf788,_0x184327){if(_0x2cf788[_0xa129('0x46')]['id']){delete _0x2cf788[_0xa129('0x46')]['id'];}return db[_0xa129('0x3b')][_0xa129('0x44')]({'where':{'id':_0x2cf788[_0xa129('0x48')]['id']}})[_0xa129('0x21')](handleEntityNotFound(_0x184327,null))[_0xa129('0x21')](saveUpdates(_0x2cf788[_0xa129('0x46')],null))[_0xa129('0x21')](respondWithResult(_0x184327,null))[_0xa129('0x3e')](handleError(_0x184327,null));};exports[_0xa129('0x22')]=function(_0x5c7b57,_0x243a8a){return db[_0xa129('0x3b')][_0xa129('0x44')]({'where':{'id':_0x5c7b57['params']['id']}})[_0xa129('0x21')](handleEntityNotFound(_0x243a8a,null))[_0xa129('0x21')](removeEntity(_0x243a8a,null))[_0xa129('0x3e')](handleError(_0x243a8a,null));};exports[_0xa129('0x49')]=function(_0x9ed05f,_0x3beb40){return db[_0xa129('0x3b')][_0xa129('0x49')]()[_0xa129('0x21')](respondWithResult(_0x3beb40,null))[_0xa129('0x3e')](handleError(_0x3beb40,null));};
\ No newline at end of file
+var _0xbb24=['name','send','map','JscriptyQuestionReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','rows','show','params','includeAll','find','catch','create','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','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/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','sendStatus','error','stack'];(function(_0x1ee413,_0xb2c7e9){var _0x47114e=function(_0x58e7b8){while(--_0x58e7b8){_0x1ee413['push'](_0x1ee413['shift']());}};_0x47114e(++_0xb2c7e9);}(_0xbb24,0xc3));var _0x4bb2=function(_0x2b264c,_0x119a1f){_0x2b264c=_0x2b264c-0x0;var _0xe41d02=_0xbb24[_0x2b264c];return _0xe41d02;};'use strict';var emlformat=require(_0x4bb2('0x0'));var rimraf=require(_0x4bb2('0x1'));var zipdir=require(_0x4bb2('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4bb2('0x3'));var moment=require(_0x4bb2('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4bb2('0x5'));var util=require(_0x4bb2('0x6'));var path=require(_0x4bb2('0x7'));var sox=require(_0x4bb2('0x8'));var csv=require(_0x4bb2('0x9'));var ejs=require(_0x4bb2('0xa'));var fs=require('fs');var fs_extra=require(_0x4bb2('0xb'));var _=require(_0x4bb2('0xc'));var squel=require(_0x4bb2('0xd'));var crypto=require(_0x4bb2('0xe'));var jsforce=require(_0x4bb2('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x4bb2('0x10'));var Papa=require(_0x4bb2('0x11'));var Redis=require(_0x4bb2('0x12'));var authService=require(_0x4bb2('0x13'));var qs=require(_0x4bb2('0x14'));var as=require(_0x4bb2('0x15'));var hardwareService=require(_0x4bb2('0x16'));var logger=require('../../config/logger')(_0x4bb2('0x17'));var utils=require(_0x4bb2('0x18'));var config=require(_0x4bb2('0x19'));var licenseUtil=require(_0x4bb2('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x514d89,_0x19ca0a){_0x19ca0a=_0x19ca0a||0xcc;return function(_0x879038){if(_0x879038){return _0x514d89['sendStatus'](_0x19ca0a);}return _0x514d89[_0x4bb2('0x1b')](_0x19ca0a)['end']();};}function respondWithResult(_0x467a97,_0x54f67b){_0x54f67b=_0x54f67b||0xc8;return function(_0x4e3ac4){if(_0x4e3ac4){return _0x467a97[_0x4bb2('0x1b')](_0x54f67b)[_0x4bb2('0x1c')](_0x4e3ac4);}};}function respondWithFilteredResult(_0x371f5e,_0xee36a5){return function(_0x2d472e){if(_0x2d472e){var _0x1d825e=typeof _0xee36a5[_0x4bb2('0x1d')]===_0x4bb2('0x1e')&&typeof _0xee36a5[_0x4bb2('0x1f')]==='undefined';var _0x154ed3=_0x2d472e[_0x4bb2('0x20')];var _0x5b6f3b=_0x1d825e?0x0:_0xee36a5['offset'];var _0x1153f0=_0x1d825e?_0x2d472e[_0x4bb2('0x20')]:_0xee36a5[_0x4bb2('0x1d')]+_0xee36a5[_0x4bb2('0x1f')];var _0xf96f13;if(_0x1153f0>=_0x154ed3){_0x1153f0=_0x154ed3;_0xf96f13=0xc8;}else{_0xf96f13=0xce;}_0x371f5e['status'](_0xf96f13);return _0x371f5e[_0x4bb2('0x21')](_0x4bb2('0x22'),_0x5b6f3b+'-'+_0x1153f0+'/'+_0x154ed3)[_0x4bb2('0x1c')](_0x2d472e);}return null;};}function patchUpdates(_0x44e173){return function(_0x5b8548){try{jsonpatch[_0x4bb2('0x23')](_0x5b8548,_0x44e173,!![]);}catch(_0x45c918){return BPromise[_0x4bb2('0x24')](_0x45c918);}return _0x5b8548[_0x4bb2('0x25')]();};}function saveUpdates(_0x1c440f,_0x1cd421){return function(_0x5ce308){if(_0x5ce308){return _0x5ce308[_0x4bb2('0x26')](_0x1c440f)[_0x4bb2('0x27')](function(_0x1fe082){return _0x1fe082;});}return null;};}function removeEntity(_0x54697e,_0x2a5150){return function(_0x3b0a2d){if(_0x3b0a2d){return _0x3b0a2d[_0x4bb2('0x28')]()['then'](function(){_0x54697e[_0x4bb2('0x1b')](0xcc)[_0x4bb2('0x29')]();});}};}function handleEntityNotFound(_0x4225fc,_0x459039){return function(_0xdf950a){if(!_0xdf950a){_0x4225fc[_0x4bb2('0x2a')](0x194);}return _0xdf950a;};}function handleError(_0x2ff447,_0x34112c){_0x34112c=_0x34112c||0x1f4;return function(_0x262aba){logger[_0x4bb2('0x2b')](_0x262aba[_0x4bb2('0x2c')]);if(_0x262aba[_0x4bb2('0x2d')]){delete _0x262aba[_0x4bb2('0x2d')];}_0x2ff447[_0x4bb2('0x1b')](_0x34112c)[_0x4bb2('0x2e')](_0x262aba);};}exports['index']=function(_0x3cb75b,_0x40acc1){var _0x24172b={},_0x13ced0={},_0x5c8317={'count':0x0,'rows':[]};var _0x26bdcf=_[_0x4bb2('0x2f')](db[_0x4bb2('0x30')][_0x4bb2('0x31')],function(_0x2780ef){return{'name':_0x2780ef[_0x4bb2('0x32')],'type':_0x2780ef[_0x4bb2('0x33')][_0x4bb2('0x34')]};});_0x13ced0[_0x4bb2('0x35')]=_[_0x4bb2('0x2f')](_0x26bdcf,_0x4bb2('0x2d'));_0x13ced0[_0x4bb2('0x36')]=_[_0x4bb2('0x37')](_0x3cb75b[_0x4bb2('0x36')]);_0x13ced0[_0x4bb2('0x38')]=_[_0x4bb2('0x39')](_0x13ced0[_0x4bb2('0x35')],_0x13ced0[_0x4bb2('0x36')]);_0x24172b['attributes']=_['intersection'](_0x13ced0[_0x4bb2('0x35')],qs['fields'](_0x3cb75b[_0x4bb2('0x36')]['fields']));_0x24172b[_0x4bb2('0x3a')]=_0x24172b[_0x4bb2('0x3a')][_0x4bb2('0x3b')]?_0x24172b[_0x4bb2('0x3a')]:_0x13ced0[_0x4bb2('0x35')];if(!_0x3cb75b[_0x4bb2('0x36')][_0x4bb2('0x3c')](_0x4bb2('0x3d'))){_0x24172b[_0x4bb2('0x1f')]=qs[_0x4bb2('0x1f')](_0x3cb75b[_0x4bb2('0x36')][_0x4bb2('0x1f')]);_0x24172b['offset']=qs['offset'](_0x3cb75b[_0x4bb2('0x36')][_0x4bb2('0x1d')]);}_0x24172b[_0x4bb2('0x3e')]=qs[_0x4bb2('0x3f')](_0x3cb75b[_0x4bb2('0x36')][_0x4bb2('0x3f')]);_0x24172b[_0x4bb2('0x40')]=qs[_0x4bb2('0x38')](_[_0x4bb2('0x41')](_0x3cb75b[_0x4bb2('0x36')],_0x13ced0['filters']),_0x26bdcf);if(_0x3cb75b[_0x4bb2('0x36')][_0x4bb2('0x42')]){_0x24172b[_0x4bb2('0x40')]=_[_0x4bb2('0x43')](_0x24172b[_0x4bb2('0x40')],{'$or':_[_0x4bb2('0x2f')](_0x26bdcf,function(_0x22a9e1){if(_0x22a9e1[_0x4bb2('0x33')]!==_0x4bb2('0x44')){var _0x1a600d={};_0x1a600d[_0x22a9e1[_0x4bb2('0x2d')]]={'$like':'%'+_0x3cb75b[_0x4bb2('0x36')][_0x4bb2('0x42')]+'%'};return _0x1a600d;}})});}_0x24172b=_[_0x4bb2('0x43')]({},_0x24172b,_0x3cb75b[_0x4bb2('0x45')]);var _0x1cf960={'where':_0x24172b[_0x4bb2('0x40')]};return db[_0x4bb2('0x30')][_0x4bb2('0x20')](_0x1cf960)[_0x4bb2('0x27')](function(_0x3b13fd){_0x5c8317['count']=_0x3b13fd;if(_0x3cb75b[_0x4bb2('0x36')]['includeAll']){_0x24172b[_0x4bb2('0x46')]=[{'all':!![]}];}return db[_0x4bb2('0x30')]['findAll'](_0x24172b);})['then'](function(_0x594d01){_0x5c8317[_0x4bb2('0x47')]=_0x594d01;return _0x5c8317;})['then'](respondWithFilteredResult(_0x40acc1,_0x24172b))['catch'](handleError(_0x40acc1,null));};exports[_0x4bb2('0x48')]=function(_0x2390ee,_0x219ab3){var _0x287bd4={'raw':!![],'where':{'id':_0x2390ee[_0x4bb2('0x49')]['id']}},_0x28cef3={};_0x28cef3[_0x4bb2('0x35')]=_[_0x4bb2('0x37')](db[_0x4bb2('0x30')]['rawAttributes']);_0x28cef3[_0x4bb2('0x36')]=_[_0x4bb2('0x37')](_0x2390ee[_0x4bb2('0x36')]);_0x28cef3[_0x4bb2('0x38')]=_[_0x4bb2('0x39')](_0x28cef3[_0x4bb2('0x35')],_0x28cef3[_0x4bb2('0x36')]);_0x287bd4[_0x4bb2('0x3a')]=_[_0x4bb2('0x39')](_0x28cef3[_0x4bb2('0x35')],qs['fields'](_0x2390ee['query']['fields']));_0x287bd4[_0x4bb2('0x3a')]=_0x287bd4[_0x4bb2('0x3a')][_0x4bb2('0x3b')]?_0x287bd4['attributes']:_0x28cef3[_0x4bb2('0x35')];if(_0x2390ee['query'][_0x4bb2('0x4a')]){_0x287bd4[_0x4bb2('0x46')]=[{'all':!![]}];}_0x287bd4=_[_0x4bb2('0x43')]({},_0x287bd4,_0x2390ee['options']);return db[_0x4bb2('0x30')][_0x4bb2('0x4b')](_0x287bd4)[_0x4bb2('0x27')](handleEntityNotFound(_0x219ab3,null))['then'](respondWithResult(_0x219ab3,null))[_0x4bb2('0x4c')](handleError(_0x219ab3,null));};exports[_0x4bb2('0x4d')]=function(_0x492528,_0x3aaa53){return db[_0x4bb2('0x30')][_0x4bb2('0x4d')](_0x492528[_0x4bb2('0x4e')],{})[_0x4bb2('0x27')](respondWithResult(_0x3aaa53,0xc9))['catch'](handleError(_0x3aaa53,null));};exports[_0x4bb2('0x26')]=function(_0x1461bc,_0x2a2ba2){if(_0x1461bc[_0x4bb2('0x4e')]['id']){delete _0x1461bc[_0x4bb2('0x4e')]['id'];}return db[_0x4bb2('0x30')][_0x4bb2('0x4b')]({'where':{'id':_0x1461bc[_0x4bb2('0x49')]['id']}})[_0x4bb2('0x27')](handleEntityNotFound(_0x2a2ba2,null))['then'](saveUpdates(_0x1461bc[_0x4bb2('0x4e')],null))['then'](respondWithResult(_0x2a2ba2,null))[_0x4bb2('0x4c')](handleError(_0x2a2ba2,null));};exports[_0x4bb2('0x28')]=function(_0x597511,_0x29f3cb){return db[_0x4bb2('0x30')][_0x4bb2('0x4b')]({'where':{'id':_0x597511[_0x4bb2('0x49')]['id']}})['then'](handleEntityNotFound(_0x29f3cb,null))['then'](removeEntity(_0x29f3cb,null))[_0x4bb2('0x4c')](handleError(_0x29f3cb,null));};exports[_0x4bb2('0x4f')]=function(_0x5c6b9e,_0x1bfd0){return db['JscriptyQuestionReport']['describe']()[_0x4bb2('0x27')](respondWithResult(_0x1bfd0,null))[_0x4bb2('0x4c')](handleError(_0x1bfd0,null));};
\ No newline at end of file
index df06a95..cdbde8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7db9=['JscriptyQuestionReport','report_jscripty_questions','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptyQuestionReport.attributes','define'];(function(_0x54a073,_0x2872a5){var _0x4981e2=function(_0x55de56){while(--_0x55de56){_0x54a073['push'](_0x54a073['shift']());}};_0x4981e2(++_0x2872a5);}(_0x7db9,0x195));var _0x97db=function(_0x4fe35d,_0x21fee1){_0x4fe35d=_0x4fe35d-0x0;var _0x5bb28e=_0x7db9[_0x4fe35d];return _0x5bb28e;};'use strict';var _=require(_0x97db('0x0'));var util=require(_0x97db('0x1'));var logger=require('../../config/logger')(_0x97db('0x2'));var moment=require(_0x97db('0x3'));var BPromise=require(_0x97db('0x4'));var rp=require(_0x97db('0x5'));var fs=require('fs');var path=require(_0x97db('0x6'));var rimraf=require(_0x97db('0x7'));var config=require(_0x97db('0x8'));var attributes=require(_0x97db('0x9'));module['exports']=function(_0x278d13,_0x49b49a){return _0x278d13[_0x97db('0xa')](_0x97db('0xb'),attributes,{'tableName':_0x97db('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdb1d=['api','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptyQuestionReport.attributes','JscriptyQuestionReport','report_jscripty_questions','lodash','util','../../config/logger'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0xdb1d,0x1a1));var _0xddb1=function(_0x11056d,_0x1826da){_0x11056d=_0x11056d-0x0;var _0x59f7d9=_0xdb1d[_0x11056d];return _0x59f7d9;};'use strict';var _=require(_0xddb1('0x0'));var util=require(_0xddb1('0x1'));var logger=require(_0xddb1('0x2'))(_0xddb1('0x3'));var moment=require('moment');var BPromise=require(_0xddb1('0x4'));var rp=require(_0xddb1('0x5'));var fs=require('fs');var path=require(_0xddb1('0x6'));var rimraf=require(_0xddb1('0x7'));var config=require(_0xddb1('0x8'));var attributes=require(_0xddb1('0x9'));module['exports']=function(_0x5c508f,_0x1095f0){return _0x5c508f['define'](_0xddb1('0xa'),attributes,{'tableName':_0xddb1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e6079a4..7653d5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6ed=['stringify','error','code','JscriptyQuestionReport,\x20%s,\x20%s','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s'];(function(_0x516536,_0x27f68b){var _0x457651=function(_0x360361){while(--_0x360361){_0x516536['push'](_0x516536['shift']());}};_0x457651(++_0x27f68b);}(_0xa6ed,0x1e7));var _0xda6e=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xa6ed[_0x59ee6f];return _0x4c0979;};'use strict';var _=require(_0xda6e('0x0'));var util=require(_0xda6e('0x1'));var moment=require('moment');var BPromise=require(_0xda6e('0x2'));var rs=require(_0xda6e('0x3'));var fs=require('fs');var Redis=require(_0xda6e('0x4'));var db=require(_0xda6e('0x5'))['db'];var utils=require(_0xda6e('0x6'));var logger=require('../../config/logger')(_0xda6e('0x7'));var config=require(_0xda6e('0x8'));var jayson=require(_0xda6e('0x9'));var client=jayson['client'][_0xda6e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1250b4,_0x15cb24,_0x324e42){return new BPromise(function(_0x2dfb1e,_0x53265e){return client[_0xda6e('0xb')](_0x1250b4,_0x324e42)[_0xda6e('0xc')](function(_0x49e3e5){logger[_0xda6e('0xd')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x15cb24,_0xda6e('0xe'));logger[_0xda6e('0xf')](_0xda6e('0x10'),_0x15cb24,'request\x20sent',JSON[_0xda6e('0x11')](_0x49e3e5));if(_0x49e3e5[_0xda6e('0x12')]){if(_0x49e3e5['error'][_0xda6e('0x13')]===0x1f4){logger['error'](_0xda6e('0x14'),_0x15cb24,_0x49e3e5[_0xda6e('0x12')]['message']);return _0x53265e(_0x49e3e5[_0xda6e('0x12')][_0xda6e('0x15')]);}logger['error'](_0xda6e('0x14'),_0x15cb24,_0x49e3e5[_0xda6e('0x12')][_0xda6e('0x15')]);return _0x2dfb1e(_0x49e3e5['error'][_0xda6e('0x15')]);}else{logger[_0xda6e('0xd')](_0xda6e('0x14'),_0x15cb24,_0xda6e('0xe'));_0x2dfb1e(_0x49e3e5[_0xda6e('0x16')][_0xda6e('0x15')]);}})[_0xda6e('0x17')](function(_0x161d39){logger[_0xda6e('0x12')](_0xda6e('0x14'),_0x15cb24,_0x161d39);_0x53265e(_0x161d39);});});}
\ No newline at end of file
+var _0x2229=['../../config/logger','rpc','../../config/environment','client','request','info','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','JscriptyQuestionReport,\x20%s,\x20%s','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x334315,_0x4b2526){var _0x4f044b=function(_0x5adba7){while(--_0x5adba7){_0x334315['push'](_0x334315['shift']());}};_0x4f044b(++_0x4b2526);}(_0x2229,0x9a));var _0x9222=function(_0x4f9449,_0x44f559){_0x4f9449=_0x4f9449-0x0;var _0x5d1884=_0x2229[_0x4f9449];return _0x5d1884;};'use strict';var _=require(_0x9222('0x0'));var util=require(_0x9222('0x1'));var moment=require(_0x9222('0x2'));var BPromise=require('bluebird');var rs=require(_0x9222('0x3'));var fs=require('fs');var Redis=require(_0x9222('0x4'));var db=require(_0x9222('0x5'))['db'];var utils=require(_0x9222('0x6'));var logger=require(_0x9222('0x7'))(_0x9222('0x8'));var config=require(_0x9222('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x9222('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2a576a,_0x33f203,_0xe5923c){return new BPromise(function(_0x3ec731,_0xe006b7){return client[_0x9222('0xb')](_0x2a576a,_0xe5923c)['then'](function(_0x2eeae3){logger[_0x9222('0xc')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x33f203,_0x9222('0xd'));logger[_0x9222('0xe')](_0x9222('0xf'),_0x33f203,_0x9222('0xd'),JSON[_0x9222('0x10')](_0x2eeae3));if(_0x2eeae3[_0x9222('0x11')]){if(_0x2eeae3[_0x9222('0x11')][_0x9222('0x12')]===0x1f4){logger[_0x9222('0x11')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x33f203,_0x2eeae3['error'][_0x9222('0x13')]);return _0xe006b7(_0x2eeae3[_0x9222('0x11')][_0x9222('0x13')]);}logger[_0x9222('0x11')](_0x9222('0x14'),_0x33f203,_0x2eeae3[_0x9222('0x11')][_0x9222('0x13')]);return _0x3ec731(_0x2eeae3['error'][_0x9222('0x13')]);}else{logger[_0x9222('0xc')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x33f203,_0x9222('0xd'));_0x3ec731(_0x2eeae3[_0x9222('0x15')][_0x9222('0x13')]);}})[_0x9222('0x16')](function(_0x3ae0f2){logger[_0x9222('0x11')](_0x9222('0x14'),_0x33f203,_0x3ae0f2);_0xe006b7(_0x3ae0f2);});});}
\ No newline at end of file
index 6f4f828..397db83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9227=['../../components/auth/service','../../components/interaction/service','./jscriptySessionReport.controller','get','isAuthenticated','describe','/:id','show','/:id/questions','getQuestions','post','create','put','update','destroy','exports','util','path','Router','fs-extra'];(function(_0x1f9f37,_0x18776e){var _0x21c080=function(_0x4acb93){while(--_0x4acb93){_0x1f9f37['push'](_0x1f9f37['shift']());}};_0x21c080(++_0x18776e);}(_0x9227,0x9c));var _0x7922=function(_0xd75cc6,_0x3a670d){_0xd75cc6=_0xd75cc6-0x0;var _0x5af7a0=_0x9227[_0xd75cc6];return _0x5af7a0;};'use strict';var multer=require('multer');var util=require(_0x7922('0x0'));var path=require(_0x7922('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x7922('0x2')]();var fs_extra=require(_0x7922('0x3'));var auth=require(_0x7922('0x4'));var interaction=require(_0x7922('0x5'));var config=require('../../config/environment');var controller=require(_0x7922('0x6'));router[_0x7922('0x7')]('/',auth[_0x7922('0x8')](),controller['index']);router[_0x7922('0x7')]('/describe',auth['isAuthenticated'](),controller[_0x7922('0x9')]);router[_0x7922('0x7')](_0x7922('0xa'),auth[_0x7922('0x8')](),controller[_0x7922('0xb')]);router[_0x7922('0x7')](_0x7922('0xc'),auth[_0x7922('0x8')](),controller[_0x7922('0xd')]);router[_0x7922('0xe')]('/',auth[_0x7922('0x8')](),controller[_0x7922('0xf')]);router[_0x7922('0x10')](_0x7922('0xa'),auth[_0x7922('0x8')](),controller[_0x7922('0x11')]);router['delete'](_0x7922('0xa'),auth['isAuthenticated'](),controller[_0x7922('0x12')]);module[_0x7922('0x13')]=router;
\ No newline at end of file
+var _0x6410=['/:id','show','/:id/questions','getQuestions','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/describe','describe'];(function(_0x2ce71c,_0x4a403e){var _0x223e00=function(_0x291496){while(--_0x291496){_0x2ce71c['push'](_0x2ce71c['shift']());}};_0x223e00(++_0x4a403e);}(_0x6410,0x172));var _0x0641=function(_0x20f803,_0x261284){_0x20f803=_0x20f803-0x0;var _0x1ca559=_0x6410[_0x20f803];return _0x1ca559;};'use strict';var multer=require(_0x0641('0x0'));var util=require(_0x0641('0x1'));var path=require(_0x0641('0x2'));var timeout=require(_0x0641('0x3'));var express=require(_0x0641('0x4'));var router=express['Router']();var fs_extra=require(_0x0641('0x5'));var auth=require(_0x0641('0x6'));var interaction=require(_0x0641('0x7'));var config=require(_0x0641('0x8'));var controller=require('./jscriptySessionReport.controller');router['get']('/',auth[_0x0641('0x9')](),controller[_0x0641('0xa')]);router[_0x0641('0xb')](_0x0641('0xc'),auth[_0x0641('0x9')](),controller[_0x0641('0xd')]);router[_0x0641('0xb')](_0x0641('0xe'),auth['isAuthenticated'](),controller[_0x0641('0xf')]);router[_0x0641('0xb')](_0x0641('0x10'),auth[_0x0641('0x9')](),controller[_0x0641('0x11')]);router[_0x0641('0x12')]('/',auth[_0x0641('0x9')](),controller[_0x0641('0x13')]);router[_0x0641('0x14')](_0x0641('0xe'),auth[_0x0641('0x9')](),controller['update']);router[_0x0641('0x15')](_0x0641('0xe'),auth[_0x0641('0x9')](),controller[_0x0641('0x16')]);module[_0x0641('0x17')]=router;
\ No newline at end of file
index 94f9d8b..f87e722 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b9d=['BOOLEAN','moment','sequelize','DATE','starttime','setDataValue','endtime','format','STRING'];(function(_0x114a88,_0xcd0483){var _0x3ec44c=function(_0x35ba14){while(--_0x35ba14){_0x114a88['push'](_0x114a88['shift']());}};_0x3ec44c(++_0xcd0483);}(_0x4b9d,0x1c3));var _0xd4b9=function(_0x53b53e,_0x498437){_0x53b53e=_0x53b53e-0x0;var _0xbb6179=_0x4b9d[_0x53b53e];return _0xbb6179;};'use strict';var moment=require(_0xd4b9('0x0'));var Sequelize=require(_0xd4b9('0x1'));module['exports']={'starttime':{'type':Sequelize[_0xd4b9('0x2')],'set':function(_0x1fc2d0){this['setDataValue'](_0xd4b9('0x3'),_0x1fc2d0);this[_0xd4b9('0x4')](_0xd4b9('0x5'),moment()[_0xd4b9('0x6')]('YYYY-MM-DD\x20HH:mm:ss'));}},'endtime':{'type':Sequelize[_0xd4b9('0x2')]},'membername':{'type':Sequelize['STRING']},'projectname':{'type':Sequelize[_0xd4b9('0x7')]},'queue':{'type':Sequelize[_0xd4b9('0x7')]},'uniqueid':{'type':Sequelize[_0xd4b9('0x7')]},'calleridname':{'type':Sequelize[_0xd4b9('0x7')]},'calleridnum':{'type':Sequelize['STRING']},'completed':{'type':Sequelize[_0xd4b9('0x8')],'defaultValue':![]}};
\ No newline at end of file
+var _0x53ea=['endtime','format','YYYY-MM-DD\x20HH:mm:ss','STRING','moment','sequelize','exports','DATE','starttime','setDataValue'];(function(_0x3e77ed,_0x3dec1d){var _0x17d3b1=function(_0x1039ce){while(--_0x1039ce){_0x3e77ed['push'](_0x3e77ed['shift']());}};_0x17d3b1(++_0x3dec1d);}(_0x53ea,0x16c));var _0xa53e=function(_0x4cc812,_0x18f2d5){_0x4cc812=_0x4cc812-0x0;var _0x3e54f0=_0x53ea[_0x4cc812];return _0x3e54f0;};'use strict';var moment=require(_0xa53e('0x0'));var Sequelize=require(_0xa53e('0x1'));module[_0xa53e('0x2')]={'starttime':{'type':Sequelize[_0xa53e('0x3')],'set':function(_0x1fed8e){this['setDataValue'](_0xa53e('0x4'),_0x1fed8e);this[_0xa53e('0x5')](_0xa53e('0x6'),moment()[_0xa53e('0x7')](_0xa53e('0x8')));}},'endtime':{'type':Sequelize[_0xa53e('0x3')]},'membername':{'type':Sequelize[_0xa53e('0x9')]},'projectname':{'type':Sequelize[_0xa53e('0x9')]},'queue':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xa53e('0x9')]},'calleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'completed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index b7e3a0e..06ad747 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x226f=['desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','error','stack','name','index','map','JscriptySessionReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','where','pick','filter','merge','include','findAll','catch','show','params','includeAll','options','create','body','update','find','describe','getQuestions','findOne','JscriptyQuestionReport','order','sort','SessionId','rows','eml-format','zip-dir','fast-json-patch','moment','mustache','util','path','to-csv','fs-extra','squel','crypto','jsforce'];(function(_0x49637f,_0xb4393c){var _0x5915c6=function(_0x21b259){while(--_0x21b259){_0x49637f['push'](_0x49637f['shift']());}};_0x5915c6(++_0xb4393c);}(_0x226f,0xe1));var _0xf226=function(_0x4529da,_0x10c92a){_0x4529da=_0x4529da-0x0;var _0x5e2867=_0x226f[_0x4529da];return _0x5e2867;};'use strict';var emlformat=require(_0xf226('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf226('0x1'));var jsonpatch=require(_0xf226('0x2'));var rp=require('request-promise');var moment=require(_0xf226('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xf226('0x4'));var util=require(_0xf226('0x5'));var path=require(_0xf226('0x6'));var sox=require('sox');var csv=require(_0xf226('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf226('0x8'));var _=require('lodash');var squel=require(_0xf226('0x9'));var crypto=require(_0xf226('0xa'));var jsforce=require(_0xf226('0xb'));var deskjs=require(_0xf226('0xc'));var toCsv=require(_0xf226('0x7'));var querystring=require(_0xf226('0xd'));var Papa=require(_0xf226('0xe'));var Redis=require('ioredis');var authService=require(_0xf226('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xf226('0x10'));var hardwareService=require(_0xf226('0x11'));var logger=require(_0xf226('0x12'))(_0xf226('0x13'));var utils=require(_0xf226('0x14'));var config=require(_0xf226('0x15'));var licenseUtil=require(_0xf226('0x16'));var db=require(_0xf226('0x17'))['db'];function respondWithStatusCode(_0x5cafed,_0xbdf60c){_0xbdf60c=_0xbdf60c||0xcc;return function(_0x24f005){if(_0x24f005){return _0x5cafed[_0xf226('0x18')](_0xbdf60c);}return _0x5cafed[_0xf226('0x19')](_0xbdf60c)[_0xf226('0x1a')]();};}function respondWithResult(_0xf97946,_0xa6b75){_0xa6b75=_0xa6b75||0xc8;return function(_0x341cb9){if(_0x341cb9){return _0xf97946[_0xf226('0x19')](_0xa6b75)[_0xf226('0x1b')](_0x341cb9);}};}function respondWithFilteredResult(_0x6f23,_0x522ea3){return function(_0x1b46b9){if(_0x1b46b9){var _0x4ac893=typeof _0x522ea3[_0xf226('0x1c')]===_0xf226('0x1d')&&typeof _0x522ea3[_0xf226('0x1e')]===_0xf226('0x1d');var _0x2e6381=_0x1b46b9[_0xf226('0x1f')];var _0x4721c7=_0x4ac893?0x0:_0x522ea3[_0xf226('0x1c')];var _0x1cfc37=_0x4ac893?_0x1b46b9['count']:_0x522ea3[_0xf226('0x1c')]+_0x522ea3['limit'];var _0x347753;if(_0x1cfc37>=_0x2e6381){_0x1cfc37=_0x2e6381;_0x347753=0xc8;}else{_0x347753=0xce;}_0x6f23[_0xf226('0x19')](_0x347753);return _0x6f23[_0xf226('0x20')](_0xf226('0x21'),_0x4721c7+'-'+_0x1cfc37+'/'+_0x2e6381)[_0xf226('0x1b')](_0x1b46b9);}return null;};}function patchUpdates(_0x444654){return function(_0x1e4d1e){try{jsonpatch[_0xf226('0x22')](_0x1e4d1e,_0x444654,!![]);}catch(_0x3b62b0){return BPromise[_0xf226('0x23')](_0x3b62b0);}return _0x1e4d1e['save']();};}function saveUpdates(_0x1e54c9,_0x2a5060){return function(_0x3ba29c){if(_0x3ba29c){return _0x3ba29c['update'](_0x1e54c9)[_0xf226('0x24')](function(_0x5260e3){return _0x5260e3;});}return null;};}function removeEntity(_0x22354c,_0x1200bc){return function(_0x9011c3){if(_0x9011c3){return _0x9011c3['destroy']()[_0xf226('0x24')](function(){_0x22354c[_0xf226('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xa510c9,_0x107124){return function(_0x304076){if(!_0x304076){_0xa510c9[_0xf226('0x18')](0x194);}return _0x304076;};}function handleError(_0x36e681,_0x1b92ca){_0x1b92ca=_0x1b92ca||0x1f4;return function(_0x22f50e){logger[_0xf226('0x25')](_0x22f50e[_0xf226('0x26')]);if(_0x22f50e['name']){delete _0x22f50e[_0xf226('0x27')];}_0x36e681[_0xf226('0x19')](_0x1b92ca)['send'](_0x22f50e);};}exports[_0xf226('0x28')]=function(_0x4cde64,_0x44d0e5){var _0x4fc85b={},_0x27aa88={},_0x32f069={'count':0x0,'rows':[]};var _0x266f5d=_[_0xf226('0x29')](db[_0xf226('0x2a')][_0xf226('0x2b')],function(_0x1b9ad1){return{'name':_0x1b9ad1[_0xf226('0x2c')],'type':_0x1b9ad1['type'][_0xf226('0x2d')]};});_0x27aa88[_0xf226('0x2e')]=_['map'](_0x266f5d,_0xf226('0x27'));_0x27aa88[_0xf226('0x2f')]=_[_0xf226('0x30')](_0x4cde64[_0xf226('0x2f')]);_0x27aa88[_0xf226('0x31')]=_[_0xf226('0x32')](_0x27aa88[_0xf226('0x2e')],_0x27aa88['query']);_0x4fc85b[_0xf226('0x33')]=_['intersection'](_0x27aa88[_0xf226('0x2e')],qs[_0xf226('0x34')](_0x4cde64['query']['fields']));_0x4fc85b[_0xf226('0x33')]=_0x4fc85b['attributes'][_0xf226('0x35')]?_0x4fc85b[_0xf226('0x33')]:_0x27aa88[_0xf226('0x2e')];if(!_0x4cde64['query'][_0xf226('0x36')](_0xf226('0x37'))){_0x4fc85b[_0xf226('0x1e')]=qs['limit'](_0x4cde64['query']['limit']);_0x4fc85b['offset']=qs[_0xf226('0x1c')](_0x4cde64[_0xf226('0x2f')][_0xf226('0x1c')]);}_0x4fc85b['order']=qs['sort'](_0x4cde64[_0xf226('0x2f')]['sort']);_0x4fc85b[_0xf226('0x38')]=qs[_0xf226('0x31')](_[_0xf226('0x39')](_0x4cde64['query'],_0x27aa88[_0xf226('0x31')]),_0x266f5d);if(_0x4cde64['query'][_0xf226('0x3a')]){_0x4fc85b['where']=_[_0xf226('0x3b')](_0x4fc85b[_0xf226('0x38')],{'$or':_[_0xf226('0x29')](_0x266f5d,function(_0xeb7658){if(_0xeb7658['type']!=='VIRTUAL'){var _0x1623e3={};_0x1623e3[_0xeb7658[_0xf226('0x27')]]={'$like':'%'+_0x4cde64['query']['filter']+'%'};return _0x1623e3;}})});}_0x4fc85b=_['merge']({},_0x4fc85b,_0x4cde64['options']);var _0x34812f={'where':_0x4fc85b[_0xf226('0x38')]};return db[_0xf226('0x2a')]['count'](_0x34812f)[_0xf226('0x24')](function(_0x21575d){_0x32f069['count']=_0x21575d;if(_0x4cde64['query']['includeAll']){_0x4fc85b[_0xf226('0x3c')]=[{'all':!![]}];}return db[_0xf226('0x2a')][_0xf226('0x3d')](_0x4fc85b);})[_0xf226('0x24')](function(_0x1bb344){_0x32f069['rows']=_0x1bb344;return _0x32f069;})['then'](respondWithFilteredResult(_0x44d0e5,_0x4fc85b))[_0xf226('0x3e')](handleError(_0x44d0e5,null));};exports[_0xf226('0x3f')]=function(_0x522c2c,_0x307283){var _0x595e3a={'raw':!![],'where':{'id':_0x522c2c[_0xf226('0x40')]['id']}},_0x52adf6={};_0x52adf6[_0xf226('0x2e')]=_['keys'](db['JscriptySessionReport']['rawAttributes']);_0x52adf6['query']=_[_0xf226('0x30')](_0x522c2c[_0xf226('0x2f')]);_0x52adf6[_0xf226('0x31')]=_[_0xf226('0x32')](_0x52adf6['model'],_0x52adf6[_0xf226('0x2f')]);_0x595e3a['attributes']=_['intersection'](_0x52adf6[_0xf226('0x2e')],qs[_0xf226('0x34')](_0x522c2c[_0xf226('0x2f')][_0xf226('0x34')]));_0x595e3a[_0xf226('0x33')]=_0x595e3a[_0xf226('0x33')]['length']?_0x595e3a[_0xf226('0x33')]:_0x52adf6[_0xf226('0x2e')];if(_0x522c2c['query'][_0xf226('0x41')]){_0x595e3a[_0xf226('0x3c')]=[{'all':!![]}];}_0x595e3a=_[_0xf226('0x3b')]({},_0x595e3a,_0x522c2c[_0xf226('0x42')]);return db[_0xf226('0x2a')]['find'](_0x595e3a)[_0xf226('0x24')](handleEntityNotFound(_0x307283,null))[_0xf226('0x24')](respondWithResult(_0x307283,null))['catch'](handleError(_0x307283,null));};exports[_0xf226('0x43')]=function(_0x4f72fa,_0x53e2cf){return db[_0xf226('0x2a')][_0xf226('0x43')](_0x4f72fa[_0xf226('0x44')],{})['then'](respondWithResult(_0x53e2cf,0xc9))[_0xf226('0x3e')](handleError(_0x53e2cf,null));};exports[_0xf226('0x45')]=function(_0x54c9d7,_0x5d6823){if(_0x54c9d7[_0xf226('0x44')]['id']){delete _0x54c9d7[_0xf226('0x44')]['id'];}return db[_0xf226('0x2a')][_0xf226('0x46')]({'where':{'id':_0x54c9d7[_0xf226('0x40')]['id']}})['then'](handleEntityNotFound(_0x5d6823,null))[_0xf226('0x24')](saveUpdates(_0x54c9d7['body'],null))[_0xf226('0x24')](respondWithResult(_0x5d6823,null))[_0xf226('0x3e')](handleError(_0x5d6823,null));};exports['destroy']=function(_0xa6303a,_0x3738ad){return db['JscriptySessionReport'][_0xf226('0x46')]({'where':{'id':_0xa6303a[_0xf226('0x40')]['id']}})['then'](handleEntityNotFound(_0x3738ad,null))[_0xf226('0x24')](removeEntity(_0x3738ad,null))[_0xf226('0x3e')](handleError(_0x3738ad,null));};exports[_0xf226('0x47')]=function(_0x508297,_0x3b06eb){return db[_0xf226('0x2a')]['describe']()['then'](respondWithResult(_0x3b06eb,null))['catch'](handleError(_0x3b06eb,null));};exports[_0xf226('0x48')]=function(_0x102490,_0x9b4e79,_0x2fdc1c){var _0x5cc789={'raw':!![],'where':{}};var _0x4724d7={};var _0x153b80={'count':0x0,'rows':[]};return db[_0xf226('0x2a')][_0xf226('0x49')]({'where':{'id':_0x102490[_0xf226('0x40')]['id']}})[_0xf226('0x24')](handleEntityNotFound(_0x9b4e79,null))[_0xf226('0x24')](function(_0x2546ab){if(_0x2546ab){_0x4724d7[_0xf226('0x2e')]=_[_0xf226('0x30')](db[_0xf226('0x4a')][_0xf226('0x2b')]);_0x4724d7[_0xf226('0x2f')]=_[_0xf226('0x30')](_0x102490['query']);_0x4724d7[_0xf226('0x31')]=_[_0xf226('0x32')](_0x4724d7[_0xf226('0x2e')],_0x4724d7['query']);_0x5cc789[_0xf226('0x33')]=_[_0xf226('0x32')](_0x4724d7['model'],qs[_0xf226('0x34')](_0x102490[_0xf226('0x2f')][_0xf226('0x34')]));_0x5cc789[_0xf226('0x33')]=_0x5cc789[_0xf226('0x33')][_0xf226('0x35')]?_0x5cc789[_0xf226('0x33')]:_0x4724d7[_0xf226('0x2e')];if(!_0x102490[_0xf226('0x2f')][_0xf226('0x36')]('nolimit')){_0x5cc789[_0xf226('0x1e')]=qs[_0xf226('0x1e')](_0x102490[_0xf226('0x2f')][_0xf226('0x1e')]);_0x5cc789[_0xf226('0x1c')]=qs[_0xf226('0x1c')](_0x102490[_0xf226('0x2f')][_0xf226('0x1c')]);}_0x5cc789[_0xf226('0x4b')]=qs['sort'](_0x102490['query'][_0xf226('0x4c')]);_0x5cc789[_0xf226('0x38')]=qs['filters'](_[_0xf226('0x39')](_0x102490[_0xf226('0x2f')],_0x4724d7[_0xf226('0x31')]));_0x5cc789[_0xf226('0x38')][_0xf226('0x4d')]=_0x2546ab['id'];if(_0x102490[_0xf226('0x2f')][_0xf226('0x3a')]){_0x5cc789[_0xf226('0x38')]=_[_0xf226('0x3b')](_0x5cc789[_0xf226('0x38')],{'$or':_[_0xf226('0x29')](_0x5cc789[_0xf226('0x33')],function(_0x5d9e6c){var _0x56c3a1={};_0x56c3a1[_0x5d9e6c]={'$like':'%'+_0x102490[_0xf226('0x2f')][_0xf226('0x3a')]+'%'};return _0x56c3a1;})});}_0x5cc789=_[_0xf226('0x3b')]({},_0x5cc789,_0x102490[_0xf226('0x42')]);return db[_0xf226('0x4a')][_0xf226('0x1f')]({'where':_0x5cc789[_0xf226('0x38')]})[_0xf226('0x24')](function(_0x53860d){_0x153b80[_0xf226('0x1f')]=_0x53860d;if(_0x102490[_0xf226('0x2f')][_0xf226('0x41')]){_0x5cc789[_0xf226('0x3c')]=[{'all':!![]}];}return db['JscriptyQuestionReport']['findAll'](_0x5cc789);})[_0xf226('0x24')](function(_0x50a1fd){_0x153b80[_0xf226('0x4e')]=_0x50a1fd;return _0x153b80;});}})['then'](respondWithFilteredResult(_0x9b4e79,_0x5cc789))[_0xf226('0x3e')](handleError(_0x9b4e79,null));};
\ No newline at end of file
+var _0x45d9=['../../config/environment','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','end','error','name','send','JscriptySessionReport','type','model','map','filters','intersection','query','fields','attributes','hasOwnProperty','nolimit','order','sort','merge','where','VIRTUAL','options','includeAll','rows','catch','show','params','keys','length','include','find','create','body','describe','findOne','rawAttributes','pick','SessionId','filter','JscriptyQuestionReport','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x45d9,0x1b7));var _0x945d=function(_0x52eba2,_0x6a85b9){_0x52eba2=_0x52eba2-0x0;var _0x93b44d=_0x45d9[_0x52eba2];return _0x93b44d;};'use strict';var emlformat=require(_0x945d('0x0'));var rimraf=require(_0x945d('0x1'));var zipdir=require(_0x945d('0x2'));var jsonpatch=require(_0x945d('0x3'));var rp=require(_0x945d('0x4'));var moment=require(_0x945d('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x945d('0x6'));var util=require(_0x945d('0x7'));var path=require(_0x945d('0x8'));var sox=require(_0x945d('0x9'));var csv=require(_0x945d('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x945d('0xb'));var _=require(_0x945d('0xc'));var squel=require(_0x945d('0xd'));var crypto=require('crypto');var jsforce=require(_0x945d('0xe'));var deskjs=require(_0x945d('0xf'));var toCsv=require(_0x945d('0xa'));var querystring=require('querystring');var Papa=require(_0x945d('0x10'));var Redis=require('ioredis');var authService=require(_0x945d('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x945d('0x12'));var hardwareService=require(_0x945d('0x13'));var logger=require(_0x945d('0x14'))(_0x945d('0x15'));var utils=require(_0x945d('0x16'));var config=require(_0x945d('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x325a13,_0x179836){_0x179836=_0x179836||0xcc;return function(_0x123060){if(_0x123060){return _0x325a13[_0x945d('0x18')](_0x179836);}return _0x325a13['status'](_0x179836)['end']();};}function respondWithResult(_0x49c2bc,_0x18dcad){_0x18dcad=_0x18dcad||0xc8;return function(_0x56cfd6){if(_0x56cfd6){return _0x49c2bc[_0x945d('0x19')](_0x18dcad)[_0x945d('0x1a')](_0x56cfd6);}};}function respondWithFilteredResult(_0x12d3bf,_0x4374f4){return function(_0x179004){if(_0x179004){var _0x1c210d=typeof _0x4374f4[_0x945d('0x1b')]===_0x945d('0x1c')&&typeof _0x4374f4[_0x945d('0x1d')]===_0x945d('0x1c');var _0x3ee98c=_0x179004[_0x945d('0x1e')];var _0x28e029=_0x1c210d?0x0:_0x4374f4[_0x945d('0x1b')];var _0x1bcca2=_0x1c210d?_0x179004[_0x945d('0x1e')]:_0x4374f4[_0x945d('0x1b')]+_0x4374f4[_0x945d('0x1d')];var _0x1a3d3e;if(_0x1bcca2>=_0x3ee98c){_0x1bcca2=_0x3ee98c;_0x1a3d3e=0xc8;}else{_0x1a3d3e=0xce;}_0x12d3bf[_0x945d('0x19')](_0x1a3d3e);return _0x12d3bf[_0x945d('0x1f')](_0x945d('0x20'),_0x28e029+'-'+_0x1bcca2+'/'+_0x3ee98c)[_0x945d('0x1a')](_0x179004);}return null;};}function patchUpdates(_0x36dfb8){return function(_0x3aa331){try{jsonpatch[_0x945d('0x21')](_0x3aa331,_0x36dfb8,!![]);}catch(_0x461966){return BPromise[_0x945d('0x22')](_0x461966);}return _0x3aa331[_0x945d('0x23')]();};}function saveUpdates(_0x15fbe6,_0x46b448){return function(_0x5a9143){if(_0x5a9143){return _0x5a9143[_0x945d('0x24')](_0x15fbe6)['then'](function(_0x537cdc){return _0x537cdc;});}return null;};}function removeEntity(_0xc60f4d,_0x418fc6){return function(_0xcaa403){if(_0xcaa403){return _0xcaa403['destroy']()[_0x945d('0x25')](function(){_0xc60f4d[_0x945d('0x19')](0xcc)[_0x945d('0x26')]();});}};}function handleEntityNotFound(_0x2b0138,_0x2e0267){return function(_0x1ad2b8){if(!_0x1ad2b8){_0x2b0138['sendStatus'](0x194);}return _0x1ad2b8;};}function handleError(_0x354421,_0x414e4d){_0x414e4d=_0x414e4d||0x1f4;return function(_0x5412d5){logger[_0x945d('0x27')](_0x5412d5['stack']);if(_0x5412d5[_0x945d('0x28')]){delete _0x5412d5[_0x945d('0x28')];}_0x354421[_0x945d('0x19')](_0x414e4d)[_0x945d('0x29')](_0x5412d5);};}exports['index']=function(_0x28a55b,_0x1fe340){var _0x4d236f={},_0x7cbe91={},_0x426a5b={'count':0x0,'rows':[]};var _0x2e2f19=_['map'](db[_0x945d('0x2a')]['rawAttributes'],function(_0x54e488){return{'name':_0x54e488['fieldName'],'type':_0x54e488[_0x945d('0x2b')]['key']};});_0x7cbe91[_0x945d('0x2c')]=_[_0x945d('0x2d')](_0x2e2f19,_0x945d('0x28'));_0x7cbe91['query']=_['keys'](_0x28a55b['query']);_0x7cbe91[_0x945d('0x2e')]=_[_0x945d('0x2f')](_0x7cbe91[_0x945d('0x2c')],_0x7cbe91[_0x945d('0x30')]);_0x4d236f['attributes']=_['intersection'](_0x7cbe91['model'],qs['fields'](_0x28a55b['query'][_0x945d('0x31')]));_0x4d236f[_0x945d('0x32')]=_0x4d236f[_0x945d('0x32')]['length']?_0x4d236f[_0x945d('0x32')]:_0x7cbe91[_0x945d('0x2c')];if(!_0x28a55b[_0x945d('0x30')][_0x945d('0x33')](_0x945d('0x34'))){_0x4d236f['limit']=qs[_0x945d('0x1d')](_0x28a55b[_0x945d('0x30')][_0x945d('0x1d')]);_0x4d236f[_0x945d('0x1b')]=qs[_0x945d('0x1b')](_0x28a55b[_0x945d('0x30')][_0x945d('0x1b')]);}_0x4d236f[_0x945d('0x35')]=qs['sort'](_0x28a55b[_0x945d('0x30')][_0x945d('0x36')]);_0x4d236f['where']=qs['filters'](_['pick'](_0x28a55b[_0x945d('0x30')],_0x7cbe91[_0x945d('0x2e')]),_0x2e2f19);if(_0x28a55b[_0x945d('0x30')]['filter']){_0x4d236f['where']=_[_0x945d('0x37')](_0x4d236f[_0x945d('0x38')],{'$or':_[_0x945d('0x2d')](_0x2e2f19,function(_0x5e2c1c){if(_0x5e2c1c[_0x945d('0x2b')]!==_0x945d('0x39')){var _0x58c46d={};_0x58c46d[_0x5e2c1c[_0x945d('0x28')]]={'$like':'%'+_0x28a55b[_0x945d('0x30')]['filter']+'%'};return _0x58c46d;}})});}_0x4d236f=_['merge']({},_0x4d236f,_0x28a55b[_0x945d('0x3a')]);var _0x47989b={'where':_0x4d236f['where']};return db[_0x945d('0x2a')]['count'](_0x47989b)[_0x945d('0x25')](function(_0x2674cf){_0x426a5b[_0x945d('0x1e')]=_0x2674cf;if(_0x28a55b[_0x945d('0x30')][_0x945d('0x3b')]){_0x4d236f['include']=[{'all':!![]}];}return db[_0x945d('0x2a')]['findAll'](_0x4d236f);})['then'](function(_0x51a222){_0x426a5b[_0x945d('0x3c')]=_0x51a222;return _0x426a5b;})['then'](respondWithFilteredResult(_0x1fe340,_0x4d236f))[_0x945d('0x3d')](handleError(_0x1fe340,null));};exports[_0x945d('0x3e')]=function(_0x20a7c5,_0x2d9630){var _0xe2744b={'raw':!![],'where':{'id':_0x20a7c5[_0x945d('0x3f')]['id']}},_0x34b62b={};_0x34b62b[_0x945d('0x2c')]=_['keys'](db[_0x945d('0x2a')]['rawAttributes']);_0x34b62b[_0x945d('0x30')]=_[_0x945d('0x40')](_0x20a7c5[_0x945d('0x30')]);_0x34b62b[_0x945d('0x2e')]=_[_0x945d('0x2f')](_0x34b62b['model'],_0x34b62b[_0x945d('0x30')]);_0xe2744b[_0x945d('0x32')]=_['intersection'](_0x34b62b[_0x945d('0x2c')],qs[_0x945d('0x31')](_0x20a7c5[_0x945d('0x30')][_0x945d('0x31')]));_0xe2744b[_0x945d('0x32')]=_0xe2744b[_0x945d('0x32')][_0x945d('0x41')]?_0xe2744b[_0x945d('0x32')]:_0x34b62b[_0x945d('0x2c')];if(_0x20a7c5[_0x945d('0x30')][_0x945d('0x3b')]){_0xe2744b[_0x945d('0x42')]=[{'all':!![]}];}_0xe2744b=_['merge']({},_0xe2744b,_0x20a7c5[_0x945d('0x3a')]);return db[_0x945d('0x2a')][_0x945d('0x43')](_0xe2744b)[_0x945d('0x25')](handleEntityNotFound(_0x2d9630,null))[_0x945d('0x25')](respondWithResult(_0x2d9630,null))[_0x945d('0x3d')](handleError(_0x2d9630,null));};exports['create']=function(_0xb95269,_0x3211f4){return db['JscriptySessionReport'][_0x945d('0x44')](_0xb95269['body'],{})[_0x945d('0x25')](respondWithResult(_0x3211f4,0xc9))[_0x945d('0x3d')](handleError(_0x3211f4,null));};exports['update']=function(_0x30a9ff,_0x5c9e8f){if(_0x30a9ff[_0x945d('0x45')]['id']){delete _0x30a9ff[_0x945d('0x45')]['id'];}return db[_0x945d('0x2a')][_0x945d('0x43')]({'where':{'id':_0x30a9ff[_0x945d('0x3f')]['id']}})[_0x945d('0x25')](handleEntityNotFound(_0x5c9e8f,null))[_0x945d('0x25')](saveUpdates(_0x30a9ff[_0x945d('0x45')],null))[_0x945d('0x25')](respondWithResult(_0x5c9e8f,null))['catch'](handleError(_0x5c9e8f,null));};exports['destroy']=function(_0xf2134e,_0x418dc1){return db[_0x945d('0x2a')][_0x945d('0x43')]({'where':{'id':_0xf2134e['params']['id']}})[_0x945d('0x25')](handleEntityNotFound(_0x418dc1,null))[_0x945d('0x25')](removeEntity(_0x418dc1,null))[_0x945d('0x3d')](handleError(_0x418dc1,null));};exports['describe']=function(_0x1c15f5,_0x12bec6){return db['JscriptySessionReport'][_0x945d('0x46')]()[_0x945d('0x25')](respondWithResult(_0x12bec6,null))[_0x945d('0x3d')](handleError(_0x12bec6,null));};exports['getQuestions']=function(_0x253ba0,_0x401fd9,_0x220054){var _0x5d75b3={'raw':!![],'where':{}};var _0x52e59e={};var _0x2ca646={'count':0x0,'rows':[]};return db[_0x945d('0x2a')][_0x945d('0x47')]({'where':{'id':_0x253ba0[_0x945d('0x3f')]['id']}})[_0x945d('0x25')](handleEntityNotFound(_0x401fd9,null))[_0x945d('0x25')](function(_0x587629){if(_0x587629){_0x52e59e['model']=_['keys'](db['JscriptyQuestionReport'][_0x945d('0x48')]);_0x52e59e[_0x945d('0x30')]=_[_0x945d('0x40')](_0x253ba0[_0x945d('0x30')]);_0x52e59e[_0x945d('0x2e')]=_['intersection'](_0x52e59e[_0x945d('0x2c')],_0x52e59e[_0x945d('0x30')]);_0x5d75b3[_0x945d('0x32')]=_[_0x945d('0x2f')](_0x52e59e['model'],qs[_0x945d('0x31')](_0x253ba0[_0x945d('0x30')][_0x945d('0x31')]));_0x5d75b3[_0x945d('0x32')]=_0x5d75b3[_0x945d('0x32')][_0x945d('0x41')]?_0x5d75b3[_0x945d('0x32')]:_0x52e59e[_0x945d('0x2c')];if(!_0x253ba0[_0x945d('0x30')][_0x945d('0x33')]('nolimit')){_0x5d75b3[_0x945d('0x1d')]=qs[_0x945d('0x1d')](_0x253ba0[_0x945d('0x30')][_0x945d('0x1d')]);_0x5d75b3[_0x945d('0x1b')]=qs['offset'](_0x253ba0['query'][_0x945d('0x1b')]);}_0x5d75b3[_0x945d('0x35')]=qs[_0x945d('0x36')](_0x253ba0[_0x945d('0x30')][_0x945d('0x36')]);_0x5d75b3[_0x945d('0x38')]=qs[_0x945d('0x2e')](_[_0x945d('0x49')](_0x253ba0['query'],_0x52e59e['filters']));_0x5d75b3['where'][_0x945d('0x4a')]=_0x587629['id'];if(_0x253ba0[_0x945d('0x30')][_0x945d('0x4b')]){_0x5d75b3['where']=_['merge'](_0x5d75b3[_0x945d('0x38')],{'$or':_[_0x945d('0x2d')](_0x5d75b3[_0x945d('0x32')],function(_0x54b66d){var _0x28a6c2={};_0x28a6c2[_0x54b66d]={'$like':'%'+_0x253ba0[_0x945d('0x30')][_0x945d('0x4b')]+'%'};return _0x28a6c2;})});}_0x5d75b3=_[_0x945d('0x37')]({},_0x5d75b3,_0x253ba0[_0x945d('0x3a')]);return db['JscriptyQuestionReport'][_0x945d('0x1e')]({'where':_0x5d75b3[_0x945d('0x38')]})[_0x945d('0x25')](function(_0x18d702){_0x2ca646[_0x945d('0x1e')]=_0x18d702;if(_0x253ba0[_0x945d('0x30')][_0x945d('0x3b')]){_0x5d75b3[_0x945d('0x42')]=[{'all':!![]}];}return db[_0x945d('0x4c')]['findAll'](_0x5d75b3);})['then'](function(_0xe55dc7){_0x2ca646[_0x945d('0x3c')]=_0xe55dc7;return _0x2ca646;});}})[_0x945d('0x25')](respondWithFilteredResult(_0x401fd9,_0x5d75b3))['catch'](handleError(_0x401fd9,null));};
\ No newline at end of file
index f934ce6..c7cc30f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84e7=['./jscriptySessionReport.attributes','exports','define','report_jscripty_sessions','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x4f3b2d,_0x3bbf46){var _0x3dddfa=function(_0xb8179a){while(--_0xb8179a){_0x4f3b2d['push'](_0x4f3b2d['shift']());}};_0x3dddfa(++_0x3bbf46);}(_0x84e7,0x122));var _0x784e=function(_0x49bfe4,_0x5ce13c){_0x49bfe4=_0x49bfe4-0x0;var _0x40cb34=_0x84e7[_0x49bfe4];return _0x40cb34;};'use strict';var _=require('lodash');var util=require(_0x784e('0x0'));var logger=require(_0x784e('0x1'))('api');var moment=require(_0x784e('0x2'));var BPromise=require(_0x784e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x784e('0x4'));var rimraf=require(_0x784e('0x5'));var config=require(_0x784e('0x6'));var attributes=require(_0x784e('0x7'));module[_0x784e('0x8')]=function(_0x133296,_0x48ed22){return _0x133296[_0x784e('0x9')]('JscriptySessionReport',attributes,{'tableName':_0x784e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x11e5=['path','../../config/environment','define','lodash','../../config/logger','api','bluebird','request-promise'];(function(_0x5aa891,_0x414f30){var _0x251790=function(_0x430eab){while(--_0x430eab){_0x5aa891['push'](_0x5aa891['shift']());}};_0x251790(++_0x414f30);}(_0x11e5,0x8b));var _0x511e=function(_0x135cd7,_0x6bdc01){_0x135cd7=_0x135cd7-0x0;var _0x300a1d=_0x11e5[_0x135cd7];return _0x300a1d;};'use strict';var _=require(_0x511e('0x0'));var util=require('util');var logger=require(_0x511e('0x1'))(_0x511e('0x2'));var moment=require('moment');var BPromise=require(_0x511e('0x3'));var rp=require(_0x511e('0x4'));var fs=require('fs');var path=require(_0x511e('0x5'));var rimraf=require('rimraf');var config=require(_0x511e('0x6'));var attributes=require('./jscriptySessionReport.attributes');module['exports']=function(_0x342539,_0x323f8c){return _0x342539[_0x511e('0x7')]('JscriptySessionReport',attributes,{'tableName':'report_jscripty_sessions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b9fe088..6df879c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa46e=['request','then','request\x20sent','debug','stringify','error','code','message','JscriptySessionReport,\x20%s,\x20%s','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','jayson/promise','http'];(function(_0x2a419e,_0x1aef84){var _0x1b6f49=function(_0x500274){while(--_0x500274){_0x2a419e['push'](_0x2a419e['shift']());}};_0x1b6f49(++_0x1aef84);}(_0xa46e,0x8a));var _0xea46=function(_0x383dbb,_0x17d41b){_0x383dbb=_0x383dbb-0x0;var _0x6e8bde=_0xa46e[_0x383dbb];return _0x6e8bde;};'use strict';var _=require(_0xea46('0x0'));var util=require(_0xea46('0x1'));var moment=require('moment');var BPromise=require(_0xea46('0x2'));var rs=require(_0xea46('0x3'));var fs=require('fs');var Redis=require(_0xea46('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xea46('0x5'));var logger=require('../../config/logger')(_0xea46('0x6'));var config=require('../../config/environment');var jayson=require(_0xea46('0x7'));var client=jayson['client'][_0xea46('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3dc26f,_0x5f1cd1,_0x2d1b30){return new BPromise(function(_0x42771a,_0xe7d428){return client[_0xea46('0x9')](_0x3dc26f,_0x2d1b30)[_0xea46('0xa')](function(_0x4cf206){logger['info']('JscriptySessionReport,\x20%s,\x20%s',_0x5f1cd1,_0xea46('0xb'));logger[_0xea46('0xc')]('JscriptySessionReport,\x20%s,\x20%s,\x20%s',_0x5f1cd1,_0xea46('0xb'),JSON[_0xea46('0xd')](_0x4cf206));if(_0x4cf206[_0xea46('0xe')]){if(_0x4cf206['error'][_0xea46('0xf')]===0x1f4){logger[_0xea46('0xe')]('JscriptySessionReport,\x20%s,\x20%s',_0x5f1cd1,_0x4cf206[_0xea46('0xe')][_0xea46('0x10')]);return _0xe7d428(_0x4cf206['error'][_0xea46('0x10')]);}logger['error'](_0xea46('0x11'),_0x5f1cd1,_0x4cf206[_0xea46('0xe')][_0xea46('0x10')]);return _0x42771a(_0x4cf206[_0xea46('0xe')][_0xea46('0x10')]);}else{logger[_0xea46('0x12')](_0xea46('0x11'),_0x5f1cd1,_0xea46('0xb'));_0x42771a(_0x4cf206[_0xea46('0x13')]['message']);}})[_0xea46('0x14')](function(_0xbf225e){logger[_0xea46('0xe')]('JscriptySessionReport,\x20%s,\x20%s',_0x5f1cd1,_0xbf225e);_0xe7d428(_0xbf225e);});});}
\ No newline at end of file
+var _0x6d38=['request','then','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http'];(function(_0x3eed68,_0x1ef8a4){var _0x10ce08=function(_0x4403ed){while(--_0x4403ed){_0x3eed68['push'](_0x3eed68['shift']());}};_0x10ce08(++_0x1ef8a4);}(_0x6d38,0x1ef));var _0x86d3=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0x6d38[_0x138adb];return _0x1b27f2;};'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']('JscriptySessionReport,\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);});});}
\ No newline at end of file
index 98e372a..c2e11b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9d5=['index','/:id','isAuthenticated','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./license.controller'];(function(_0x238325,_0x4bee96){var _0x39ebba=function(_0x3af23a){while(--_0x3af23a){_0x238325['push'](_0x238325['shift']());}};_0x39ebba(++_0x4bee96);}(_0xf9d5,0x122));var _0x5f9d=function(_0x422afa,_0x1ea712){_0x422afa=_0x422afa-0x0;var _0x14344c=_0xf9d5[_0x422afa];return _0x14344c;};'use strict';var multer=require('multer');var util=require(_0x5f9d('0x0'));var path=require(_0x5f9d('0x1'));var timeout=require('connect-timeout');var express=require(_0x5f9d('0x2'));var router=express[_0x5f9d('0x3')]();var fs_extra=require(_0x5f9d('0x4'));var auth=require(_0x5f9d('0x5'));var interaction=require(_0x5f9d('0x6'));var config=require(_0x5f9d('0x7'));var controller=require(_0x5f9d('0x8'));router['get']('/',controller[_0x5f9d('0x9')]);router['put'](_0x5f9d('0xa'),auth[_0x5f9d('0xb')](),controller['update']);module[_0x5f9d('0xc')]=router;
\ No newline at end of file
+var _0xe74d=['update','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../config/environment','./license.controller','get','index','/:id','isAuthenticated'];(function(_0x1eec3a,_0x168828){var _0x133cf7=function(_0x1a0c97){while(--_0x1a0c97){_0x1eec3a['push'](_0x1eec3a['shift']());}};_0x133cf7(++_0x168828);}(_0xe74d,0x16e));var _0xde74=function(_0x527228,_0x2bf9d1){_0x527228=_0x527228-0x0;var _0x18fc82=_0xe74d[_0x527228];return _0x18fc82;};'use strict';var multer=require(_0xde74('0x0'));var util=require(_0xde74('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xde74('0x2'));var router=express[_0xde74('0x3')]();var fs_extra=require(_0xde74('0x4'));var auth=require(_0xde74('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xde74('0x6'));var controller=require(_0xde74('0x7'));router[_0xde74('0x8')]('/',controller[_0xde74('0x9')]);router['put'](_0xde74('0xa'),auth[_0xde74('0xb')](),controller[_0xde74('0xc')]);module[_0xde74('0xd')]=router;
\ No newline at end of file
index 0fafd3f..21453e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa73c=['STRING','sequelize','TEXT'];(function(_0x2f175b,_0x4066c5){var _0x1548fa=function(_0x58b256){while(--_0x58b256){_0x2f175b['push'](_0x2f175b['shift']());}};_0x1548fa(++_0x4066c5);}(_0xa73c,0x17b));var _0xca73=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa73c[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xca73('0x0'));module['exports']={'license':{'type':Sequelize[_0xca73('0x1')]},'data1':{'type':Sequelize[_0xca73('0x2')]},'data2':{'type':Sequelize[_0xca73('0x2')]},'chatLicenseExceeded':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x03f6=['exports','STRING'];(function(_0x46ec32,_0x1e842f){var _0x338f60=function(_0x10e02c){while(--_0x10e02c){_0x46ec32['push'](_0x46ec32['shift']());}};_0x338f60(++_0x1e842f);}(_0x03f6,0x16a));var _0x603f=function(_0x56e0a5,_0x49191d){_0x56e0a5=_0x56e0a5-0x0;var _0x4ceb56=_0x03f6[_0x56e0a5];return _0x4ceb56;};'use strict';var Sequelize=require('sequelize');module[_0x603f('0x0')]={'license':{'type':Sequelize['TEXT']},'data1':{'type':Sequelize[_0x603f('0x1')]},'data2':{'type':Sequelize[_0x603f('0x1')]},'chatLicenseExceeded':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index f903c75..90f6324 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','model','keys','License','query','filters','intersection','attributes','fields','length','merge','options','getLicense','catch','body','find','params','get','checkLicense','key','demo','eml-format','rimraf'];(function(_0x48961c,_0x280e9d){var _0x1d895d=function(_0x248ffa){while(--_0x248ffa){_0x48961c['push'](_0x48961c['shift']());}};_0x1d895d(++_0x280e9d);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0xc4aa[_0x32f7d7];return _0x133d09;};'use strict';var emlformat=require(_0xac4a('0x0'));var rimraf=require(_0xac4a('0x1'));var zipdir=require(_0xac4a('0x2'));var jsonpatch=require(_0xac4a('0x3'));var rp=require(_0xac4a('0x4'));var moment=require(_0xac4a('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xac4a('0x6'));var sox=require(_0xac4a('0x7'));var csv=require(_0xac4a('0x8'));var ejs=require(_0xac4a('0x9'));var fs=require('fs');var fs_extra=require(_0xac4a('0xa'));var _=require(_0xac4a('0xb'));var squel=require(_0xac4a('0xc'));var crypto=require(_0xac4a('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xac4a('0x8'));var querystring=require(_0xac4a('0xe'));var Papa=require(_0xac4a('0xf'));var Redis=require('ioredis');var authService=require(_0xac4a('0x10'));var qs=require(_0xac4a('0x11'));var as=require(_0xac4a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xac4a('0x13'))('api');var utils=require(_0xac4a('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xac4a('0x15'));var db=require(_0xac4a('0x16'))['db'];function respondWithStatusCode(_0x24291d,_0x5e16aa){_0x5e16aa=_0x5e16aa||0xcc;return function(_0x21a79){if(_0x21a79){return _0x24291d[_0xac4a('0x17')](_0x5e16aa);}return _0x24291d[_0xac4a('0x18')](_0x5e16aa)[_0xac4a('0x19')]();};}function respondWithResult(_0x1b4313,_0x3b71c0){_0x3b71c0=_0x3b71c0||0xc8;return function(_0x34bc01){if(_0x34bc01){return _0x1b4313[_0xac4a('0x18')](_0x3b71c0)[_0xac4a('0x1a')](_0x34bc01);}};}function respondWithFilteredResult(_0x42c7fc,_0x11e101){return function(_0x26dbb8){if(_0x26dbb8){var _0x4a2119=typeof _0x11e101[_0xac4a('0x1b')]===_0xac4a('0x1c')&&typeof _0x11e101[_0xac4a('0x1d')]===_0xac4a('0x1c');var _0x3e88e3=_0x26dbb8[_0xac4a('0x1e')];var _0x28e304=_0x4a2119?0x0:_0x11e101[_0xac4a('0x1b')];var _0x546c5d=_0x4a2119?_0x26dbb8['count']:_0x11e101[_0xac4a('0x1b')]+_0x11e101[_0xac4a('0x1d')];var _0x39b691;if(_0x546c5d>=_0x3e88e3){_0x546c5d=_0x3e88e3;_0x39b691=0xc8;}else{_0x39b691=0xce;}_0x42c7fc['status'](_0x39b691);return _0x42c7fc[_0xac4a('0x1f')](_0xac4a('0x20'),_0x28e304+'-'+_0x546c5d+'/'+_0x3e88e3)[_0xac4a('0x1a')](_0x26dbb8);}return null;};}function patchUpdates(_0x3a3cdb){return function(_0x123694){try{jsonpatch[_0xac4a('0x21')](_0x123694,_0x3a3cdb,!![]);}catch(_0xe38996){return BPromise[_0xac4a('0x22')](_0xe38996);}return _0x123694['save']();};}function saveUpdates(_0x3d8f0a,_0x3204ad){return function(_0x599787){if(_0x599787){return _0x599787[_0xac4a('0x23')](_0x3d8f0a)[_0xac4a('0x24')](function(_0x3eacd3){return _0x3eacd3;});}return null;};}function removeEntity(_0x947d8e,_0x4d2d6c){return function(_0x1b7998){if(_0x1b7998){return _0x1b7998[_0xac4a('0x25')]()[_0xac4a('0x24')](function(){_0x947d8e[_0xac4a('0x18')](0xcc)[_0xac4a('0x19')]();});}};}function handleEntityNotFound(_0x2b0dc2,_0x222507){return function(_0x36054a){if(!_0x36054a){_0x2b0dc2[_0xac4a('0x17')](0x194);}return _0x36054a;};}function handleError(_0x3bc318,_0x1d0539){_0x1d0539=_0x1d0539||0x1f4;return function(_0x215a31){logger[_0xac4a('0x26')](_0x215a31[_0xac4a('0x27')]);if(_0x215a31[_0xac4a('0x28')]){delete _0x215a31[_0xac4a('0x28')];}_0x3bc318['status'](_0x1d0539)[_0xac4a('0x29')](_0x215a31);};}var utilLicense=require(_0xac4a('0x15'));exports[_0xac4a('0x2a')]=function(_0x2772fe,_0x116700){var _0x4a5a9e={'raw':!![],'where':{'id':0x1}},_0x47f49c={};_0x47f49c[_0xac4a('0x2b')]=_[_0xac4a('0x2c')](db[_0xac4a('0x2d')]['rawAttributes']);_0x47f49c['query']=_[_0xac4a('0x2c')](_0x2772fe[_0xac4a('0x2e')]);_0x47f49c[_0xac4a('0x2f')]=_[_0xac4a('0x30')](_0x47f49c[_0xac4a('0x2b')],_0x47f49c['query']);_0x4a5a9e[_0xac4a('0x31')]=_['intersection'](_0x47f49c[_0xac4a('0x2b')],qs['fields'](_0x2772fe[_0xac4a('0x2e')][_0xac4a('0x32')]));_0x4a5a9e[_0xac4a('0x31')]=_0x4a5a9e[_0xac4a('0x31')][_0xac4a('0x33')]?_0x4a5a9e[_0xac4a('0x31')]:_0x47f49c[_0xac4a('0x2b')];_0x4a5a9e=_[_0xac4a('0x34')]({},_0x4a5a9e,_0x2772fe[_0xac4a('0x35')]);return utilLicense[_0xac4a('0x36')](_0x4a5a9e)[_0xac4a('0x24')](respondWithResult(_0x116700,null))[_0xac4a('0x37')](handleError(_0x116700,null));};exports[_0xac4a('0x23')]=function(_0x1a9d4e,_0x5634e2){if(_0x1a9d4e[_0xac4a('0x38')]['id']){delete _0x1a9d4e[_0xac4a('0x38')]['id'];}return db['License'][_0xac4a('0x39')]({'where':{'id':_0x1a9d4e[_0xac4a('0x3a')]['id']}})['then'](handleEntityNotFound(_0x5634e2,null))['then'](function(_0x11f0be){var _0x1ba096=_0x11f0be[_0xac4a('0x3b')]({'plain':!![]});return utilLicense[_0xac4a('0x3c')](_0x1ba096,_0x1a9d4e['body'][_0xac4a('0x3d')]);})[_0xac4a('0x24')](function(_0x4e7630){if(!_0x4e7630[_0xac4a('0x3e')]){return saveUpdates(_0x1a9d4e[_0xac4a('0x38')],null);}return _0x4e7630;})[_0xac4a('0x24')](respondWithResult(_0x5634e2,null))['catch'](handleError(_0x5634e2,null));};
\ No newline at end of file
+var _0x7a54=['count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','model','License','query','keys','intersection','attributes','fields','length','options','getLicense','body','find','checkLicense','key','demo','catch','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'];(function(_0x26e105,_0x821a88){var _0x534f19=function(_0x3cbc79){while(--_0x3cbc79){_0x26e105['push'](_0x26e105['shift']());}};_0x534f19(++_0x821a88);}(_0x7a54,0x106));var _0x47a5=function(_0x5e275d,_0x1b7e48){_0x5e275d=_0x5e275d-0x0;var _0x2ee1bf=_0x7a54[_0x5e275d];return _0x2ee1bf;};'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);};}var utilLicense=require(_0x47a5('0x14'));exports[_0x47a5('0x29')]=function(_0x16631f,_0x361bfa){var _0x1127f8={'raw':!![],'where':{'id':0x1}},_0x11a4fa={};_0x11a4fa[_0x47a5('0x2a')]=_['keys'](db[_0x47a5('0x2b')]['rawAttributes']);_0x11a4fa[_0x47a5('0x2c')]=_[_0x47a5('0x2d')](_0x16631f[_0x47a5('0x2c')]);_0x11a4fa['filters']=_[_0x47a5('0x2e')](_0x11a4fa[_0x47a5('0x2a')],_0x11a4fa[_0x47a5('0x2c')]);_0x1127f8[_0x47a5('0x2f')]=_['intersection'](_0x11a4fa['model'],qs[_0x47a5('0x30')](_0x16631f[_0x47a5('0x2c')]['fields']));_0x1127f8['attributes']=_0x1127f8[_0x47a5('0x2f')][_0x47a5('0x31')]?_0x1127f8['attributes']:_0x11a4fa[_0x47a5('0x2a')];_0x1127f8=_['merge']({},_0x1127f8,_0x16631f[_0x47a5('0x32')]);return utilLicense[_0x47a5('0x33')](_0x1127f8)['then'](respondWithResult(_0x361bfa,null))['catch'](handleError(_0x361bfa,null));};exports[_0x47a5('0x22')]=function(_0x5910bb,_0x403028){if(_0x5910bb[_0x47a5('0x34')]['id']){delete _0x5910bb[_0x47a5('0x34')]['id'];}return db['License'][_0x47a5('0x35')]({'where':{'id':_0x5910bb['params']['id']}})['then'](handleEntityNotFound(_0x403028,null))[_0x47a5('0x23')](function(_0x5a8a7c){var _0x25cce0=_0x5a8a7c['get']({'plain':!![]});return utilLicense[_0x47a5('0x36')](_0x25cce0,_0x5910bb[_0x47a5('0x34')][_0x47a5('0x37')]);})[_0x47a5('0x23')](function(_0x36add5){if(!_0x36add5[_0x47a5('0x38')]){return saveUpdates(_0x5910bb[_0x47a5('0x34')],null);}return _0x36add5;})[_0x47a5('0x23')](respondWithResult(_0x403028,null))[_0x47a5('0x39')](handleError(_0x403028,null));};
\ No newline at end of file
index 16f3dee..ca10133 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x107f=['rimraf','./license.attributes','exports','define','License','license','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x22e213,_0xe90d42){var _0x13244d=function(_0x1f30fc){while(--_0x1f30fc){_0x22e213['push'](_0x22e213['shift']());}};_0x13244d(++_0xe90d42);}(_0x107f,0x14b));var _0xf107=function(_0x34ded7,_0x5752df){_0x34ded7=_0x34ded7-0x0;var _0x39e7ce=_0x107f[_0x34ded7];return _0x39e7ce;};'use strict';var _=require(_0xf107('0x0'));var util=require(_0xf107('0x1'));var logger=require(_0xf107('0x2'))(_0xf107('0x3'));var moment=require(_0xf107('0x4'));var BPromise=require('bluebird');var rp=require(_0xf107('0x5'));var fs=require('fs');var path=require(_0xf107('0x6'));var rimraf=require(_0xf107('0x7'));var config=require('../../config/environment');var attributes=require(_0xf107('0x8'));module[_0xf107('0x9')]=function(_0x30d773,_0x5ed385){return _0x30d773[_0xf107('0xa')](_0xf107('0xb'),attributes,{'tableName':_0xf107('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x980d=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./license.attributes','define','license','lodash','util'];(function(_0x516899,_0x38eb50){var _0x507eba=function(_0x3e9182){while(--_0x3e9182){_0x516899['push'](_0x516899['shift']());}};_0x507eba(++_0x38eb50);}(_0x980d,0x184));var _0xd980=function(_0x3d9b04,_0x1e851a){_0x3d9b04=_0x3d9b04-0x0;var _0x557936=_0x980d[_0x3d9b04];return _0x557936;};'use strict';var _=require(_0xd980('0x0'));var util=require(_0xd980('0x1'));var logger=require(_0xd980('0x2'))(_0xd980('0x3'));var moment=require(_0xd980('0x4'));var BPromise=require(_0xd980('0x5'));var rp=require(_0xd980('0x6'));var fs=require('fs');var path=require(_0xd980('0x7'));var rimraf=require(_0xd980('0x8'));var config=require(_0xd980('0x9'));var attributes=require(_0xd980('0xa'));module['exports']=function(_0x17552d,_0x422a10){return _0x17552d[_0xd980('0xb')]('License',attributes,{'tableName':_0xd980('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bb42024..216109c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a84=['error','code','message','License,\x20%s,\x20%s','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s'];(function(_0x1b6186,_0x1ec7f2){var _0x186121=function(_0x1748a8){while(--_0x1748a8){_0x1b6186['push'](_0x1b6186['shift']());}};_0x186121(++_0x1ec7f2);}(_0x5a84,0x17f));var _0x45a8=function(_0x5b8c78,_0x31805f){_0x5b8c78=_0x5b8c78-0x0;var _0x48826e=_0x5a84[_0x5b8c78];return _0x48826e;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x45a8('0x0'));var BPromise=require(_0x45a8('0x1'));var rs=require(_0x45a8('0x2'));var fs=require('fs');var Redis=require(_0x45a8('0x3'));var db=require(_0x45a8('0x4'))['db'];var utils=require(_0x45a8('0x5'));var logger=require(_0x45a8('0x6'))('rpc');var config=require(_0x45a8('0x7'));var jayson=require(_0x45a8('0x8'));var client=jayson[_0x45a8('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4de20d,_0x17df03,_0x16263c){return new BPromise(function(_0x4cc5d4,_0x342c5b){return client[_0x45a8('0xa')](_0x4de20d,_0x16263c)[_0x45a8('0xb')](function(_0x12fb59){logger[_0x45a8('0xc')]('License,\x20%s,\x20%s',_0x17df03,_0x45a8('0xd'));logger[_0x45a8('0xe')](_0x45a8('0xf'),_0x17df03,'request\x20sent',JSON['stringify'](_0x12fb59));if(_0x12fb59[_0x45a8('0x10')]){if(_0x12fb59[_0x45a8('0x10')][_0x45a8('0x11')]===0x1f4){logger[_0x45a8('0x10')]('License,\x20%s,\x20%s',_0x17df03,_0x12fb59[_0x45a8('0x10')][_0x45a8('0x12')]);return _0x342c5b(_0x12fb59[_0x45a8('0x10')][_0x45a8('0x12')]);}logger[_0x45a8('0x10')](_0x45a8('0x13'),_0x17df03,_0x12fb59['error'][_0x45a8('0x12')]);return _0x4cc5d4(_0x12fb59[_0x45a8('0x10')][_0x45a8('0x12')]);}else{logger[_0x45a8('0xc')]('License,\x20%s,\x20%s',_0x17df03,_0x45a8('0xd'));_0x4cc5d4(_0x12fb59['result'][_0x45a8('0x12')]);}})[_0x45a8('0x14')](function(_0x1460aa){logger[_0x45a8('0x10')]('License,\x20%s,\x20%s',_0x17df03,_0x1460aa);_0x342c5b(_0x1460aa);});});}
\ No newline at end of file
+var _0x18f4=['info','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','stringify','error','code','message','License,\x20%s,\x20%s','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request'];(function(_0x55fb9f,_0x6993d6){var _0x4bc218=function(_0x554378){while(--_0x554378){_0x55fb9f['push'](_0x55fb9f['shift']());}};_0x4bc218(++_0x6993d6);}(_0x18f4,0x180));var _0x418f=function(_0x5806b1,_0x38c276){_0x5806b1=_0x5806b1-0x0;var _0x15f734=_0x18f4[_0x5806b1];return _0x15f734;};'use strict';var _=require(_0x418f('0x0'));var util=require(_0x418f('0x1'));var moment=require(_0x418f('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x418f('0x3'));var db=require(_0x418f('0x4'))['db'];var utils=require(_0x418f('0x5'));var logger=require(_0x418f('0x6'))('rpc');var config=require(_0x418f('0x7'));var jayson=require(_0x418f('0x8'));var client=jayson[_0x418f('0x9')][_0x418f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4549b7,_0x3c80ac,_0x238640){return new BPromise(function(_0x362fa1,_0x3deeb4){return client[_0x418f('0xb')](_0x4549b7,_0x238640)['then'](function(_0x4c4f8f){logger[_0x418f('0xc')]('License,\x20%s,\x20%s',_0x3c80ac,_0x418f('0xd'));logger[_0x418f('0xe')](_0x418f('0xf'),_0x3c80ac,_0x418f('0xd'),JSON[_0x418f('0x10')](_0x4c4f8f));if(_0x4c4f8f['error']){if(_0x4c4f8f[_0x418f('0x11')][_0x418f('0x12')]===0x1f4){logger[_0x418f('0x11')]('License,\x20%s,\x20%s',_0x3c80ac,_0x4c4f8f['error'][_0x418f('0x13')]);return _0x3deeb4(_0x4c4f8f[_0x418f('0x11')][_0x418f('0x13')]);}logger['error'](_0x418f('0x14'),_0x3c80ac,_0x4c4f8f['error']['message']);return _0x362fa1(_0x4c4f8f['error'][_0x418f('0x13')]);}else{logger['info'](_0x418f('0x14'),_0x3c80ac,_0x418f('0xd'));_0x362fa1(_0x4c4f8f['result']['message']);}})[_0x418f('0x15')](function(_0x3edd22){logger[_0x418f('0x11')](_0x418f('0x14'),_0x3c80ac,_0x3edd22);_0x3deeb4(_0x3edd22);});});}
\ No newline at end of file
index 3354de7..c9d463a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4db=['getAgents','post','addDisposition','create','addSmtp','addApplications','/:id/send','put','removeDispositions','delete','removeAnswers','removeImap','destroy','removeAgents','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./mailAccount.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/in_servers','/:id/out_servers','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/messages','/:id/verify','/:id/users'];(function(_0x264eb3,_0x127326){var _0x250c97=function(_0x5be9ee){while(--_0x5be9ee){_0x264eb3['push'](_0x264eb3['shift']());}};_0x250c97(++_0x127326);}(_0xa4db,0xbf));var _0xba4d=function(_0xa8361,_0x581944){_0xa8361=_0xa8361-0x0;var _0x307baf=_0xa4db[_0xa8361];return _0x307baf;};'use strict';var multer=require(_0xba4d('0x0'));var util=require(_0xba4d('0x1'));var path=require(_0xba4d('0x2'));var timeout=require(_0xba4d('0x3'));var express=require(_0xba4d('0x4'));var router=express['Router']();var fs_extra=require(_0xba4d('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xba4d('0x6'));var config=require(_0xba4d('0x7'));var controller=require(_0xba4d('0x8'));router['get']('/',auth[_0xba4d('0x9')](),controller[_0xba4d('0xa')]);router[_0xba4d('0xb')](_0xba4d('0xc'),auth[_0xba4d('0x9')](),controller[_0xba4d('0xd')]);router[_0xba4d('0xb')](_0xba4d('0xe'),auth[_0xba4d('0x9')](),controller[_0xba4d('0xf')]);router['get'](_0xba4d('0x10'),auth[_0xba4d('0x9')](),controller[_0xba4d('0x11')]);router[_0xba4d('0xb')](_0xba4d('0x12'),auth[_0xba4d('0x9')](),controller[_0xba4d('0x13')]);router[_0xba4d('0xb')](_0xba4d('0x14'),auth[_0xba4d('0x9')](),controller['getImap']);router['get'](_0xba4d('0x15'),auth[_0xba4d('0x9')](),controller['getSmtp']);router[_0xba4d('0xb')](_0xba4d('0x16'),auth[_0xba4d('0x9')](),controller[_0xba4d('0x17')]);router['get'](_0xba4d('0x18'),auth[_0xba4d('0x9')](),controller[_0xba4d('0x19')]);router[_0xba4d('0xb')](_0xba4d('0x1a'),auth[_0xba4d('0x9')](),controller['getMessages']);router[_0xba4d('0xb')](_0xba4d('0x1b'),auth[_0xba4d('0x9')](),controller['verifySmtp']);router[_0xba4d('0xb')](_0xba4d('0x1c'),auth[_0xba4d('0x9')](),controller[_0xba4d('0x1d')]);router[_0xba4d('0x1e')](_0xba4d('0x10'),auth[_0xba4d('0x9')](),controller[_0xba4d('0x1f')]);router[_0xba4d('0x1e')](_0xba4d('0x12'),auth[_0xba4d('0x9')](),controller['addAnswer']);router[_0xba4d('0x1e')]('/',auth[_0xba4d('0x9')](),controller[_0xba4d('0x20')]);router[_0xba4d('0x1e')](_0xba4d('0x14'),auth[_0xba4d('0x9')](),controller['addImap']);router[_0xba4d('0x1e')](_0xba4d('0x15'),auth['isAuthenticated'](),controller[_0xba4d('0x21')]);router['post'](_0xba4d('0x16'),auth[_0xba4d('0x9')](),controller['addInteraction']);router[_0xba4d('0x1e')](_0xba4d('0x18'),auth[_0xba4d('0x9')](),controller[_0xba4d('0x22')]);router['post'](_0xba4d('0x23'),auth[_0xba4d('0x9')](),controller['send']);router['post'](_0xba4d('0x1c'),auth[_0xba4d('0x9')](),controller['addAgents']);router[_0xba4d('0x24')](_0xba4d('0xe'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xba4d('0x10'),auth[_0xba4d('0x9')](),controller[_0xba4d('0x25')]);router[_0xba4d('0x26')](_0xba4d('0x12'),auth['isAuthenticated'](),controller[_0xba4d('0x27')]);router[_0xba4d('0x26')](_0xba4d('0x14'),auth[_0xba4d('0x9')](),controller[_0xba4d('0x28')]);router[_0xba4d('0x26')]('/:id/out_servers',auth[_0xba4d('0x9')](),controller['removeSmtp']);router[_0xba4d('0x26')](_0xba4d('0xe'),auth[_0xba4d('0x9')](),controller[_0xba4d('0x29')]);router['delete'](_0xba4d('0x1c'),auth[_0xba4d('0x9')](),controller[_0xba4d('0x2a')]);module[_0xba4d('0x2b')]=router;
\ No newline at end of file
+var _0xa6f2=['/:id/applications','getApplications','getMessages','verifySmtp','/:id/users','getAgents','post','/:id/canned_answers','create','addImap','addSmtp','addInteraction','/:id/send','send','addAgents','put','update','delete','removeDispositions','removeImap','removeSmtp','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./mailAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getAnswers','/:id/in_servers','getImap','/:id/out_servers','/:id/interactions','getInteractions'];(function(_0x117eb9,_0x373dd1){var _0x5ee00b=function(_0x4ac96c){while(--_0x4ac96c){_0x117eb9['push'](_0x117eb9['shift']());}};_0x5ee00b(++_0x373dd1);}(_0xa6f2,0x187));var _0x2a6f=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0xa6f2[_0x126558];return _0x1f6d14;};'use strict';var multer=require(_0x2a6f('0x0'));var util=require(_0x2a6f('0x1'));var path=require(_0x2a6f('0x2'));var timeout=require(_0x2a6f('0x3'));var express=require(_0x2a6f('0x4'));var router=express[_0x2a6f('0x5')]();var fs_extra=require(_0x2a6f('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x2a6f('0x7'));var controller=require(_0x2a6f('0x8'));router[_0x2a6f('0x9')]('/',auth[_0x2a6f('0xa')](),controller[_0x2a6f('0xb')]);router[_0x2a6f('0x9')](_0x2a6f('0xc'),auth[_0x2a6f('0xa')](),controller[_0x2a6f('0xd')]);router[_0x2a6f('0x9')](_0x2a6f('0xe'),auth[_0x2a6f('0xa')](),controller[_0x2a6f('0xf')]);router[_0x2a6f('0x9')](_0x2a6f('0x10'),auth[_0x2a6f('0xa')](),controller['getDispositions']);router[_0x2a6f('0x9')]('/:id/canned_answers',auth[_0x2a6f('0xa')](),controller[_0x2a6f('0x11')]);router['get'](_0x2a6f('0x12'),auth['isAuthenticated'](),controller[_0x2a6f('0x13')]);router[_0x2a6f('0x9')](_0x2a6f('0x14'),auth[_0x2a6f('0xa')](),controller['getSmtp']);router[_0x2a6f('0x9')](_0x2a6f('0x15'),auth[_0x2a6f('0xa')](),controller[_0x2a6f('0x16')]);router['get'](_0x2a6f('0x17'),auth[_0x2a6f('0xa')](),controller[_0x2a6f('0x18')]);router[_0x2a6f('0x9')]('/:id/messages',auth['isAuthenticated'](),controller[_0x2a6f('0x19')]);router[_0x2a6f('0x9')]('/:id/verify',auth['isAuthenticated'](),controller[_0x2a6f('0x1a')]);router[_0x2a6f('0x9')](_0x2a6f('0x1b'),auth[_0x2a6f('0xa')](),controller[_0x2a6f('0x1c')]);router[_0x2a6f('0x1d')]('/:id/dispositions',auth[_0x2a6f('0xa')](),controller['addDisposition']);router[_0x2a6f('0x1d')](_0x2a6f('0x1e'),auth[_0x2a6f('0xa')](),controller['addAnswer']);router[_0x2a6f('0x1d')]('/',auth[_0x2a6f('0xa')](),controller[_0x2a6f('0x1f')]);router[_0x2a6f('0x1d')](_0x2a6f('0x12'),auth[_0x2a6f('0xa')](),controller[_0x2a6f('0x20')]);router[_0x2a6f('0x1d')]('/:id/out_servers',auth[_0x2a6f('0xa')](),controller[_0x2a6f('0x21')]);router[_0x2a6f('0x1d')](_0x2a6f('0x15'),auth[_0x2a6f('0xa')](),controller[_0x2a6f('0x22')]);router['post'](_0x2a6f('0x17'),auth['isAuthenticated'](),controller['addApplications']);router['post'](_0x2a6f('0x23'),auth['isAuthenticated'](),controller[_0x2a6f('0x24')]);router['post'](_0x2a6f('0x1b'),auth[_0x2a6f('0xa')](),controller[_0x2a6f('0x25')]);router[_0x2a6f('0x26')](_0x2a6f('0xe'),auth['isAuthenticated'](),controller[_0x2a6f('0x27')]);router[_0x2a6f('0x28')](_0x2a6f('0x10'),auth[_0x2a6f('0xa')](),controller[_0x2a6f('0x29')]);router[_0x2a6f('0x28')](_0x2a6f('0x1e'),auth[_0x2a6f('0xa')](),controller['removeAnswers']);router[_0x2a6f('0x28')](_0x2a6f('0x12'),auth[_0x2a6f('0xa')](),controller[_0x2a6f('0x2a')]);router['delete'](_0x2a6f('0x14'),auth[_0x2a6f('0xa')](),controller[_0x2a6f('0x2b')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x2a6f('0x2c')]);router[_0x2a6f('0x28')](_0x2a6f('0x1b'),auth['isAuthenticated'](),controller['removeAgents']);module[_0x2a6f('0x2d')]=router;
\ No newline at end of file
index 02a15a6..27bcc30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd58c=['Arial,Helvetica,sans-serif','INTEGER','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','sequelize','exports','STRING','BOOLEAN','TEXT'];(function(_0x1a13b1,_0x4d1d25){var _0x395e05=function(_0x209692){while(--_0x209692){_0x1a13b1['push'](_0x1a13b1['shift']());}};_0x395e05(++_0x4d1d25);}(_0xd58c,0xb6));var _0xcd58=function(_0x244618,_0x46e001){_0x244618=_0x244618-0x0;var _0x16c64c=_0xd58c[_0x244618];return _0x16c64c;};'use strict';var Sequelize=require(_0xcd58('0x0'));module[_0xcd58('0x1')]={'description':{'type':Sequelize[_0xcd58('0x2')]},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize[_0xcd58('0x3')],'defaultValue':![]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0xcd58('0x3')],'defaultValue':!![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'template':{'type':Sequelize[_0xcd58('0x4')]},'markAsUnread':{'type':Sequelize[_0xcd58('0x3')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0xcd58('0x2')],'allowNull':![],'defaultValue':_0xcd58('0x5')},'fontSize':{'type':Sequelize[_0xcd58('0x6')](0x2)['UNSIGNED'],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xcd58('0x7');}},'notificationSound':{'type':Sequelize[_0xcd58('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xcd58('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xcd58('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xcd58('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xcd58('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xcd58('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0xcd58('0x8')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xcd58('0x9'),'set':function(_0x440776){if(!_0x440776)this[_0xcd58('0xa')]('mandatoryDispositionPauseId',null);this[_0xcd58('0xa')]('mandatoryDisposition',_0x440776);}}};
\ No newline at end of file
+var _0x24cd=['mandatoryDisposition','sequelize','exports','STRING','BOOLEAN','INTEGER','UNSIGNED','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId'];(function(_0x3e4189,_0x225517){var _0x23221d=function(_0xf09b39){while(--_0xf09b39){_0x3e4189['push'](_0x3e4189['shift']());}};_0x23221d(++_0x225517);}(_0x24cd,0x83));var _0xd24c=function(_0x443d0b,_0x42d426){_0x443d0b=_0x443d0b-0x0;var _0x212e3b=_0x24cd[_0x443d0b];return _0x212e3b;};'use strict';var Sequelize=require(_0xd24c('0x0'));module[_0xd24c('0x1')]={'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize[_0xd24c('0x2')],'allowNull':![]},'service':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0xd24c('0x2')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0xd24c('0x3')],'defaultValue':!![]},'key':{'type':Sequelize[_0xd24c('0x2')],'allowNull':![]},'template':{'type':Sequelize['TEXT']},'markAsUnread':{'type':Sequelize[_0xd24c('0x3')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0xd24c('0x2')],'allowNull':![],'defaultValue':'Arial,Helvetica,sans-serif'},'fontSize':{'type':Sequelize[_0xd24c('0x4')](0x2)[_0xd24c('0x5')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0xd24c('0x6')],'defaultValue':function(){return _0xd24c('0x7');}},'notificationSound':{'type':Sequelize[_0xd24c('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xd24c('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xd24c('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xd24c('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xd24c('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xd24c('0x4')],'allowNull':!![],'defaultValue':null,'comment':_0xd24c('0x8')},'mandatoryDisposition':{'type':Sequelize[_0xd24c('0x3')],'defaultValue':![],'comment':_0xd24c('0x9'),'set':function(_0x1aa701){if(!_0x1aa701)this[_0xd24c('0xa')](_0xd24c('0xb'),null);this['setDataValue'](_0xd24c('0xc'),_0x1aa701);}}};
\ No newline at end of file
index b0afe90..7b9dd32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae00=['../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','client','http','request','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','code','error','message','request\x20sent','result','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','reject','update','then','destroy','get','MailAccounts','UserProfileResource','stack','name','send','index','Imap','MailServerOut','Smtp','mandatoryDispositionPause','MailAccount','rawAttributes','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','findAll','catch','show','params','MailServerIn','Pause','includeAll','include','find','body','describe','addDisposition','MailAccountId','Disposition','create','getDispositions','findOne','hasOwnProperty','rows','removeDispositions','addAnswer','CannedAnswer','removeAnswers','ids','email','ListId','isNil','active','description','cservice','cauthentication','user','cuser','password','pass','cpassword','authentication','host','port','service','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','setImap','getSmtp','removeSmtp','setSmtp','addInteraction','MailInteraction','omit','getInteractions','CmContact','Contact','User','Owner','fullname','internal','Tag','Tags','color','tag','sequelize','transaction','MailApplication','findAndCountAll','priority','getApplications','getMessages','MailMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','true','Contacts','updatedAt','DESC','from','%s\x20<%s>','attachments','join','root','server/files/attachments','basename','auth','SendMail','sendMail','List\x20not\x20found','List','messageId','subject','attach','out','Interaction','verifySmtp','VerifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','html-to-text','juice','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0x530b94,_0x4d7379){var _0x26ba83=function(_0x1ecb6f){while(--_0x1ecb6f){_0x530b94['push'](_0x530b94['shift']());}};_0x26ba83(++_0x4d7379);}(_0xae00,0x17b));var _0x0ae0=function(_0x136a0d,_0x476fe2){_0x136a0d=_0x136a0d-0x0;var _0x212ea5=_0xae00[_0x136a0d];return _0x212ea5;};'use strict';var emlformat=require(_0x0ae0('0x0'));var rimraf=require(_0x0ae0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0ae0('0x2'));var rp=require(_0x0ae0('0x3'));var moment=require(_0x0ae0('0x4'));var BPromise=require(_0x0ae0('0x5'));var Mustache=require(_0x0ae0('0x6'));var util=require(_0x0ae0('0x7'));var path=require(_0x0ae0('0x8'));var sox=require('sox');var csv=require(_0x0ae0('0x9'));var ejs=require(_0x0ae0('0xa'));var fs=require('fs');var fs_extra=require(_0x0ae0('0xb'));var _=require(_0x0ae0('0xc'));var squel=require('squel');var crypto=require(_0x0ae0('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x0ae0('0xe'));var toCsv=require(_0x0ae0('0x9'));var querystring=require(_0x0ae0('0xf'));var Papa=require('papaparse');var htmlToText=require(_0x0ae0('0x10'));var juice=require(_0x0ae0('0x11'));var Redis=require('ioredis');var authService=require(_0x0ae0('0x12'));var qs=require(_0x0ae0('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0ae0('0x14'));var logger=require(_0x0ae0('0x15'))(_0x0ae0('0x16'));var utils=require(_0x0ae0('0x17'));var config=require(_0x0ae0('0x18'));var licenseUtil=require(_0x0ae0('0x19'));var db=require(_0x0ae0('0x1a'))['db'];config[_0x0ae0('0x1b')]=_[_0x0ae0('0x1c')](config[_0x0ae0('0x1b')],{'host':_0x0ae0('0x1d'),'port':0x18eb});var socket=require(_0x0ae0('0x1e'))(new Redis(config[_0x0ae0('0x1b')]));require('./mailAccount.socket')[_0x0ae0('0x1f')](socket);var jayson=require('jayson/promise');var client=jayson[_0x0ae0('0x20')][_0x0ae0('0x21')]({'port':0x232b});function respondWithRpcPromise(_0xe620fd,_0x307478,_0x341b43,_0x5f25d4){return new BPromise(function(_0x4bcbad,_0x25fb92){var _0x29913f=_0x5f25d4||client;return _0x29913f[_0x0ae0('0x22')](_0xe620fd,_0x341b43)['then'](function(_0x26a732){logger['info'](_0x0ae0('0x23'),_0x307478,'request\x20sent');logger[_0x0ae0('0x24')](_0x0ae0('0x25'),_0x307478,'request\x20sent',JSON[_0x0ae0('0x26')](_0x26a732));if(_0x26a732['error']){if(_0x26a732['error'][_0x0ae0('0x27')]===0x1f4){logger[_0x0ae0('0x28')](_0x0ae0('0x23'),_0x307478,_0x26a732[_0x0ae0('0x28')][_0x0ae0('0x29')]);return _0x25fb92(_0x26a732[_0x0ae0('0x28')]['message']);}logger[_0x0ae0('0x28')](_0x0ae0('0x23'),_0x307478,_0x26a732[_0x0ae0('0x28')][_0x0ae0('0x29')]);return _0x4bcbad(_0x26a732[_0x0ae0('0x28')][_0x0ae0('0x29')]);}else{logger['info'](_0x0ae0('0x23'),_0x307478,_0x0ae0('0x2a'));_0x4bcbad(_0x26a732[_0x0ae0('0x2b')]['message']);}})['catch'](function(_0x244d7b){logger[_0x0ae0('0x28')](_0x0ae0('0x23'),_0x307478,_0x244d7b);_0x25fb92(_0x244d7b);});});}function respondWithStatusCode(_0x328b4f,_0x1ef7c1){_0x1ef7c1=_0x1ef7c1||0xcc;return function(_0x3a7585){if(_0x3a7585){return _0x328b4f[_0x0ae0('0x2c')](_0x1ef7c1);}return _0x328b4f[_0x0ae0('0x2d')](_0x1ef7c1)[_0x0ae0('0x2e')]();};}function respondWithResult(_0x256894,_0x1c2dc3){_0x1c2dc3=_0x1c2dc3||0xc8;return function(_0xd6921d){if(_0xd6921d){return _0x256894[_0x0ae0('0x2d')](_0x1c2dc3)[_0x0ae0('0x2f')](_0xd6921d);}};}function respondWithFilteredResult(_0x2fbc02,_0x22b8c0){return function(_0x404967){if(_0x404967){var _0x4dd407=typeof _0x22b8c0[_0x0ae0('0x30')]==='undefined'&&typeof _0x22b8c0[_0x0ae0('0x31')]==='undefined';var _0x1ee473=_0x404967[_0x0ae0('0x32')];var _0x1d8aee=_0x4dd407?0x0:_0x22b8c0['offset'];var _0x5723ab=_0x4dd407?_0x404967[_0x0ae0('0x32')]:_0x22b8c0[_0x0ae0('0x30')]+_0x22b8c0['limit'];var _0x165fd9;if(_0x5723ab>=_0x1ee473){_0x5723ab=_0x1ee473;_0x165fd9=0xc8;}else{_0x165fd9=0xce;}_0x2fbc02['status'](_0x165fd9);return _0x2fbc02[_0x0ae0('0x33')](_0x0ae0('0x34'),_0x1d8aee+'-'+_0x5723ab+'/'+_0x1ee473)['json'](_0x404967);}return null;};}function patchUpdates(_0x4dcb09){return function(_0x191c46){try{jsonpatch[_0x0ae0('0x35')](_0x191c46,_0x4dcb09,!![]);}catch(_0x2bb113){return BPromise[_0x0ae0('0x36')](_0x2bb113);}return _0x191c46['save']();};}function saveUpdates(_0x3080ec,_0x2788d5){return function(_0x7501ac){if(_0x7501ac){return _0x7501ac[_0x0ae0('0x37')](_0x3080ec)[_0x0ae0('0x38')](function(_0x2dc927){return _0x2dc927;});}return null;};}function removeEntity(_0x5aa992,_0x52f9be){return function(_0x2a6775){if(_0x2a6775){return _0x2a6775[_0x0ae0('0x39')]()['then'](function(){var _0x36fc46=_0x2a6775[_0x0ae0('0x3a')]({'plain':!![]});var _0xefbca9=_0x0ae0('0x3b');return db[_0x0ae0('0x3c')][_0x0ae0('0x39')]({'where':{'type':_0xefbca9,'resourceId':_0x36fc46['id']}})[_0x0ae0('0x38')](function(){return _0x2a6775;});})[_0x0ae0('0x38')](function(){_0x5aa992['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1e2c45,_0xd239ee){return function(_0x2a84d3){if(!_0x2a84d3){_0x1e2c45[_0x0ae0('0x2c')](0x194);}return _0x2a84d3;};}function handleError(_0x333897,_0x8b2ed7){_0x8b2ed7=_0x8b2ed7||0x1f4;return function(_0x4de4ef){logger[_0x0ae0('0x28')](_0x4de4ef[_0x0ae0('0x3d')]);if(_0x4de4ef[_0x0ae0('0x3e')]){delete _0x4de4ef[_0x0ae0('0x3e')];}_0x333897[_0x0ae0('0x2d')](_0x8b2ed7)[_0x0ae0('0x3f')](_0x4de4ef);};}exports[_0x0ae0('0x40')]=function(_0x44a812,_0x35e772){var _0x547d5a={'include':[{'model':db['MailServerIn'],'as':_0x0ae0('0x41')},{'model':db[_0x0ae0('0x42')],'as':_0x0ae0('0x43')},{'model':db['Pause'],'as':_0x0ae0('0x44')}]},_0x3aae5f={},_0x102bb5={'count':0x0,'rows':[]};var _0x2f76ba=_['map'](db[_0x0ae0('0x45')][_0x0ae0('0x46')],function(_0x41f3a5){return{'name':_0x41f3a5['fieldName'],'type':_0x41f3a5[_0x0ae0('0x47')][_0x0ae0('0x48')]};});_0x3aae5f[_0x0ae0('0x49')]=_[_0x0ae0('0x4a')](_0x2f76ba,_0x0ae0('0x3e'));_0x3aae5f[_0x0ae0('0x4b')]=_[_0x0ae0('0x4c')](_0x44a812['query']);_0x3aae5f[_0x0ae0('0x4d')]=_[_0x0ae0('0x4e')](_0x3aae5f['model'],_0x3aae5f['query']);_0x547d5a['attributes']=_[_0x0ae0('0x4e')](_0x3aae5f[_0x0ae0('0x49')],qs[_0x0ae0('0x4f')](_0x44a812[_0x0ae0('0x4b')][_0x0ae0('0x4f')]));_0x547d5a[_0x0ae0('0x50')]=_0x547d5a[_0x0ae0('0x50')][_0x0ae0('0x51')]?_0x547d5a['attributes']:_0x3aae5f[_0x0ae0('0x49')];if(!_0x44a812[_0x0ae0('0x4b')]['hasOwnProperty'](_0x0ae0('0x52'))){_0x547d5a['limit']=qs['limit'](_0x44a812[_0x0ae0('0x4b')][_0x0ae0('0x31')]);_0x547d5a['offset']=qs[_0x0ae0('0x30')](_0x44a812[_0x0ae0('0x4b')][_0x0ae0('0x30')]);}_0x547d5a[_0x0ae0('0x53')]=qs[_0x0ae0('0x54')](_0x44a812[_0x0ae0('0x4b')][_0x0ae0('0x54')]);_0x547d5a[_0x0ae0('0x55')]=qs[_0x0ae0('0x4d')](_[_0x0ae0('0x56')](_0x44a812[_0x0ae0('0x4b')],_0x3aae5f[_0x0ae0('0x4d')]),_0x2f76ba);if(_0x44a812[_0x0ae0('0x4b')][_0x0ae0('0x57')]){_0x547d5a['where']=_['merge'](_0x547d5a[_0x0ae0('0x55')],{'$or':_[_0x0ae0('0x4a')](_0x2f76ba,function(_0x1121b9){if(_0x1121b9[_0x0ae0('0x47')]!==_0x0ae0('0x58')){var _0x24f82d={};_0x24f82d[_0x1121b9['name']]={'$like':'%'+_0x44a812[_0x0ae0('0x4b')][_0x0ae0('0x57')]+'%'};return _0x24f82d;}})});}_0x547d5a=_[_0x0ae0('0x59')]({},_0x547d5a,_0x44a812[_0x0ae0('0x5a')]);var _0x1eeb7c={'where':_0x547d5a['where']};return db[_0x0ae0('0x45')]['count'](_0x1eeb7c)[_0x0ae0('0x38')](function(_0x38b470){_0x102bb5[_0x0ae0('0x32')]=_0x38b470;if(_0x44a812[_0x0ae0('0x4b')]['includeAll']){_0x547d5a['include']=[{'all':!![]}];}return db[_0x0ae0('0x45')][_0x0ae0('0x5b')](_0x547d5a);})[_0x0ae0('0x38')](function(_0x1e933e){_0x102bb5['rows']=_0x1e933e;return _0x102bb5;})['then'](respondWithFilteredResult(_0x35e772,_0x547d5a))[_0x0ae0('0x5c')](handleError(_0x35e772,null));};exports[_0x0ae0('0x5d')]=function(_0xbcdab0,_0x17c74d){var _0x162334={'raw':![],'where':{'id':_0xbcdab0[_0x0ae0('0x5e')]['id']},'include':[{'model':db[_0x0ae0('0x5f')],'as':_0x0ae0('0x41')},{'model':db[_0x0ae0('0x42')],'as':'Smtp'},{'model':db[_0x0ae0('0x60')],'as':_0x0ae0('0x44')}]},_0x5e5745={};_0x5e5745[_0x0ae0('0x49')]=_['keys'](db[_0x0ae0('0x45')]['rawAttributes']);_0x5e5745['query']=_[_0x0ae0('0x4c')](_0xbcdab0[_0x0ae0('0x4b')]);_0x5e5745['filters']=_['intersection'](_0x5e5745['model'],_0x5e5745['query']);_0x162334[_0x0ae0('0x50')]=_[_0x0ae0('0x4e')](_0x5e5745[_0x0ae0('0x49')],qs['fields'](_0xbcdab0[_0x0ae0('0x4b')][_0x0ae0('0x4f')]));_0x162334[_0x0ae0('0x50')]=_0x162334[_0x0ae0('0x50')][_0x0ae0('0x51')]?_0x162334[_0x0ae0('0x50')]:_0x5e5745['model'];if(_0xbcdab0['query'][_0x0ae0('0x61')]){_0x162334[_0x0ae0('0x62')]=[{'all':!![]}];}_0x162334=_[_0x0ae0('0x59')]({},_0x162334,_0xbcdab0[_0x0ae0('0x5a')]);return db[_0x0ae0('0x45')][_0x0ae0('0x63')](_0x162334)[_0x0ae0('0x38')](handleEntityNotFound(_0x17c74d,null))[_0x0ae0('0x38')](respondWithResult(_0x17c74d,null))[_0x0ae0('0x5c')](handleError(_0x17c74d,null));};exports[_0x0ae0('0x37')]=function(_0xaee3bf,_0x188b5f){if(_0xaee3bf[_0x0ae0('0x64')]['id']){delete _0xaee3bf[_0x0ae0('0x64')]['id'];}return db[_0x0ae0('0x45')][_0x0ae0('0x63')]({'where':{'id':_0xaee3bf[_0x0ae0('0x5e')]['id']},'include':[{'model':db[_0x0ae0('0x5f')],'as':_0x0ae0('0x41')},{'model':db[_0x0ae0('0x42')],'as':'Smtp'},{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0x0ae0('0x38')](handleEntityNotFound(_0x188b5f,null))['then'](saveUpdates(_0xaee3bf[_0x0ae0('0x64')],null))['then'](function(_0x2a42ec){if(_0x2a42ec&&_0xaee3bf[_0x0ae0('0x64')][_0x0ae0('0x41')]){return db[_0x0ae0('0x5f')]['update'](_0xaee3bf[_0x0ae0('0x64')][_0x0ae0('0x41')],{'where':{'MailAccountId':_0x2a42ec['id']}})['then'](function(){return _0x2a42ec;});}return _0x2a42ec;})[_0x0ae0('0x38')](function(_0x1535cf){if(_0x1535cf&&_0xaee3bf[_0x0ae0('0x64')]['Smtp']){return db[_0x0ae0('0x42')]['update'](_0xaee3bf['body'][_0x0ae0('0x43')],{'where':{'MailAccountId':_0x1535cf['id']}})[_0x0ae0('0x38')](function(){return _0x1535cf;});}return _0x1535cf;})['then'](respondWithResult(_0x188b5f,null))[_0x0ae0('0x5c')](handleError(_0x188b5f,null));};exports[_0x0ae0('0x65')]=function(_0x3e5274,_0x508bbd){return db['MailAccount'][_0x0ae0('0x65')]()[_0x0ae0('0x38')](respondWithResult(_0x508bbd,null))['catch'](handleError(_0x508bbd,null));};exports[_0x0ae0('0x66')]=function(_0x240f4e,_0x3016cc,_0x106985){if(_0x240f4e[_0x0ae0('0x64')]['id']){delete _0x240f4e['body']['id'];}return db[_0x0ae0('0x45')][_0x0ae0('0x63')]({'where':{'id':_0x240f4e[_0x0ae0('0x5e')]['id']}})['then'](handleEntityNotFound(_0x3016cc,null))[_0x0ae0('0x38')](function(_0x25e7b3){if(_0x25e7b3){_0x240f4e[_0x0ae0('0x64')][_0x0ae0('0x67')]=_0x25e7b3['id'];return db[_0x0ae0('0x68')][_0x0ae0('0x69')](_0x240f4e[_0x0ae0('0x64')]);}})[_0x0ae0('0x38')](respondWithResult(_0x3016cc,null))[_0x0ae0('0x5c')](handleError(_0x3016cc,null));};exports[_0x0ae0('0x6a')]=function(_0x8522ab,_0x1ee935,_0x48b7aa){var _0xb83953={'raw':![],'where':{}};var _0x51e945={};var _0x40b266={'count':0x0,'rows':[]};return db[_0x0ae0('0x45')][_0x0ae0('0x6b')]({'where':{'id':_0x8522ab[_0x0ae0('0x5e')]['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x1ee935,null))['then'](function(_0x1e41d2){if(_0x1e41d2){_0x51e945[_0x0ae0('0x49')]=_[_0x0ae0('0x4c')](db['Disposition'][_0x0ae0('0x46')]);_0x51e945[_0x0ae0('0x4b')]=_[_0x0ae0('0x4c')](_0x8522ab[_0x0ae0('0x4b')]);_0x51e945[_0x0ae0('0x4d')]=_[_0x0ae0('0x4e')](_0x51e945[_0x0ae0('0x49')],_0x51e945[_0x0ae0('0x4b')]);_0xb83953[_0x0ae0('0x50')]=_[_0x0ae0('0x4e')](_0x51e945[_0x0ae0('0x49')],qs[_0x0ae0('0x4f')](_0x8522ab['query'][_0x0ae0('0x4f')]));_0xb83953[_0x0ae0('0x50')]=_0xb83953[_0x0ae0('0x50')]['length']?_0xb83953[_0x0ae0('0x50')]:_0x51e945[_0x0ae0('0x49')];if(!_0x8522ab[_0x0ae0('0x4b')][_0x0ae0('0x6c')](_0x0ae0('0x52'))){_0xb83953['limit']=qs[_0x0ae0('0x31')](_0x8522ab['query'][_0x0ae0('0x31')]);_0xb83953[_0x0ae0('0x30')]=qs[_0x0ae0('0x30')](_0x8522ab[_0x0ae0('0x4b')][_0x0ae0('0x30')]);}_0xb83953[_0x0ae0('0x53')]=qs[_0x0ae0('0x54')](_0x8522ab['query'][_0x0ae0('0x54')]);_0xb83953[_0x0ae0('0x55')]=qs[_0x0ae0('0x4d')](_['pick'](_0x8522ab['query'],_0x51e945[_0x0ae0('0x4d')]));_0xb83953['where'][_0x0ae0('0x67')]=_0x1e41d2['id'];if(_0x8522ab[_0x0ae0('0x4b')][_0x0ae0('0x57')]){_0xb83953[_0x0ae0('0x55')]=_['merge'](_0xb83953['where'],{'$or':_['map'](_0xb83953[_0x0ae0('0x50')],function(_0x311fd4){var _0x4b4369={};_0x4b4369[_0x311fd4]={'$like':'%'+_0x8522ab[_0x0ae0('0x4b')][_0x0ae0('0x57')]+'%'};return _0x4b4369;})});}_0xb83953=_[_0x0ae0('0x59')]({},_0xb83953,_0x8522ab[_0x0ae0('0x5a')]);return db['Disposition'][_0x0ae0('0x32')]({'where':_0xb83953[_0x0ae0('0x55')]})[_0x0ae0('0x38')](function(_0x1d5205){_0x40b266[_0x0ae0('0x32')]=_0x1d5205;if(_0x8522ab[_0x0ae0('0x4b')][_0x0ae0('0x61')]){_0xb83953[_0x0ae0('0x62')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0xb83953);})['then'](function(_0x439f7c){_0x40b266[_0x0ae0('0x6d')]=_0x439f7c;return _0x40b266;});}})[_0x0ae0('0x38')](respondWithFilteredResult(_0x1ee935,_0xb83953))['catch'](handleError(_0x1ee935,null));};exports[_0x0ae0('0x6e')]=function(_0x5e809e,_0x374606,_0x18bf35){return db[_0x0ae0('0x45')][_0x0ae0('0x63')]({'where':{'id':_0x5e809e[_0x0ae0('0x5e')]['id']}})['then'](handleEntityNotFound(_0x374606,null))[_0x0ae0('0x38')](function(_0x42cc6d){if(_0x42cc6d){return _0x42cc6d['removeDispositions'](_0x5e809e[_0x0ae0('0x4b')]['ids']);}})[_0x0ae0('0x38')](respondWithStatusCode(_0x374606,null))['catch'](handleError(_0x374606,null));};exports[_0x0ae0('0x6f')]=function(_0x4eaa98,_0x33d978,_0x571349){if(_0x4eaa98[_0x0ae0('0x64')]['id']){delete _0x4eaa98[_0x0ae0('0x64')]['id'];}return db['MailAccount'][_0x0ae0('0x63')]({'where':{'id':_0x4eaa98[_0x0ae0('0x5e')]['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x33d978,null))[_0x0ae0('0x38')](function(_0x26141f){if(_0x26141f){_0x4eaa98['body'][_0x0ae0('0x67')]=_0x26141f['id'];return db[_0x0ae0('0x70')]['create'](_0x4eaa98[_0x0ae0('0x64')]);}})[_0x0ae0('0x38')](respondWithResult(_0x33d978,null))[_0x0ae0('0x5c')](handleError(_0x33d978,null));};exports['getAnswers']=function(_0xf156a8,_0x57188e,_0x543808){var _0x1b57ae={'raw':![],'where':{}};var _0x3949ea={};var _0x3c9357={'count':0x0,'rows':[]};return db[_0x0ae0('0x45')][_0x0ae0('0x6b')]({'where':{'id':_0xf156a8['params']['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x57188e,null))['then'](function(_0x5e45cb){if(_0x5e45cb){_0x3949ea[_0x0ae0('0x49')]=_[_0x0ae0('0x4c')](db['CannedAnswer'][_0x0ae0('0x46')]);_0x3949ea[_0x0ae0('0x4b')]=_[_0x0ae0('0x4c')](_0xf156a8[_0x0ae0('0x4b')]);_0x3949ea[_0x0ae0('0x4d')]=_[_0x0ae0('0x4e')](_0x3949ea[_0x0ae0('0x49')],_0x3949ea[_0x0ae0('0x4b')]);_0x1b57ae[_0x0ae0('0x50')]=_[_0x0ae0('0x4e')](_0x3949ea[_0x0ae0('0x49')],qs[_0x0ae0('0x4f')](_0xf156a8[_0x0ae0('0x4b')]['fields']));_0x1b57ae[_0x0ae0('0x50')]=_0x1b57ae[_0x0ae0('0x50')][_0x0ae0('0x51')]?_0x1b57ae['attributes']:_0x3949ea[_0x0ae0('0x49')];if(!_0xf156a8[_0x0ae0('0x4b')][_0x0ae0('0x6c')](_0x0ae0('0x52'))){_0x1b57ae[_0x0ae0('0x31')]=qs['limit'](_0xf156a8['query'][_0x0ae0('0x31')]);_0x1b57ae[_0x0ae0('0x30')]=qs[_0x0ae0('0x30')](_0xf156a8[_0x0ae0('0x4b')]['offset']);}_0x1b57ae[_0x0ae0('0x53')]=qs[_0x0ae0('0x54')](_0xf156a8[_0x0ae0('0x4b')]['sort']);_0x1b57ae[_0x0ae0('0x55')]=qs['filters'](_['pick'](_0xf156a8[_0x0ae0('0x4b')],_0x3949ea[_0x0ae0('0x4d')]));_0x1b57ae[_0x0ae0('0x55')][_0x0ae0('0x67')]=_0x5e45cb['id'];if(_0xf156a8[_0x0ae0('0x4b')]['filter']){_0x1b57ae[_0x0ae0('0x55')]=_[_0x0ae0('0x59')](_0x1b57ae[_0x0ae0('0x55')],{'$or':_[_0x0ae0('0x4a')](_0x1b57ae['attributes'],function(_0x1985f8){var _0x3dedf8={};_0x3dedf8[_0x1985f8]={'$like':'%'+_0xf156a8[_0x0ae0('0x4b')][_0x0ae0('0x57')]+'%'};return _0x3dedf8;})});}_0x1b57ae=_[_0x0ae0('0x59')]({},_0x1b57ae,_0xf156a8[_0x0ae0('0x5a')]);return db[_0x0ae0('0x70')][_0x0ae0('0x32')]({'where':_0x1b57ae[_0x0ae0('0x55')]})['then'](function(_0x322a7f){_0x3c9357['count']=_0x322a7f;if(_0xf156a8[_0x0ae0('0x4b')][_0x0ae0('0x61')]){_0x1b57ae[_0x0ae0('0x62')]=[{'all':!![]}];}return db[_0x0ae0('0x70')][_0x0ae0('0x5b')](_0x1b57ae);})[_0x0ae0('0x38')](function(_0x9e9740){_0x3c9357['rows']=_0x9e9740;return _0x3c9357;});}})[_0x0ae0('0x38')](respondWithFilteredResult(_0x57188e,_0x1b57ae))[_0x0ae0('0x5c')](handleError(_0x57188e,null));};exports[_0x0ae0('0x71')]=function(_0x4afad7,_0x67b809,_0x90281b){return db[_0x0ae0('0x45')][_0x0ae0('0x63')]({'where':{'id':_0x4afad7[_0x0ae0('0x5e')]['id']}})['then'](handleEntityNotFound(_0x67b809,null))[_0x0ae0('0x38')](function(_0x493995){if(_0x493995){return _0x493995['removeAnswers'](_0x4afad7[_0x0ae0('0x4b')][_0x0ae0('0x72')]);}})[_0x0ae0('0x38')](respondWithStatusCode(_0x67b809,null))['catch'](handleError(_0x67b809,null));};exports[_0x0ae0('0x69')]=function(_0x33f5b6,_0x9509b){var _0x4a01cb={'name':_0x33f5b6[_0x0ae0('0x64')]['name'],'key':_0x33f5b6['body'][_0x0ae0('0x48')],'email':_0x33f5b6[_0x0ae0('0x64')][_0x0ae0('0x73')],'ListId':_0x33f5b6[_0x0ae0('0x64')][_0x0ae0('0x74')],'active':!_[_0x0ae0('0x75')](_0x33f5b6[_0x0ae0('0x64')][_0x0ae0('0x76')])?_0x33f5b6[_0x0ae0('0x64')][_0x0ae0('0x76')]:!![],'description':_0x33f5b6[_0x0ae0('0x64')][_0x0ae0('0x77')]||null,'Imap':{},'Smtp':{}};if(_[_0x0ae0('0x75')](_0x33f5b6[_0x0ae0('0x64')][_0x0ae0('0x78')])){if(_0x33f5b6[_0x0ae0('0x64')][_0x0ae0('0x79')]){_0x4a01cb[_0x0ae0('0x41')][_0x0ae0('0x7a')]=_0x4a01cb[_0x0ae0('0x43')]['user']=_0x33f5b6['body'][_0x0ae0('0x7b')];_0x4a01cb[_0x0ae0('0x41')][_0x0ae0('0x7c')]=_0x4a01cb[_0x0ae0('0x43')][_0x0ae0('0x7d')]=_0x33f5b6['body'][_0x0ae0('0x7e')];}else{_0x4a01cb['Imap']['authentication']=_0x4a01cb[_0x0ae0('0x43')][_0x0ae0('0x7f')]=![];}_0x4a01cb['Imap'][_0x0ae0('0x80')]=_0x33f5b6[_0x0ae0('0x64')][_0x0ae0('0x41')][_0x0ae0('0x80')];_0x4a01cb[_0x0ae0('0x41')][_0x0ae0('0x81')]=_0x33f5b6[_0x0ae0('0x64')][_0x0ae0('0x41')][_0x0ae0('0x81')];_0x4a01cb[_0x0ae0('0x43')]['host']=_0x33f5b6[_0x0ae0('0x64')]['Smtp']['host'];_0x4a01cb['Smtp'][_0x0ae0('0x81')]=_0x33f5b6[_0x0ae0('0x64')]['Smtp'][_0x0ae0('0x81')];}else{_0x4a01cb[_0x0ae0('0x41')][_0x0ae0('0x82')]=_0x4a01cb['Smtp']['service']=_0x33f5b6[_0x0ae0('0x64')][_0x0ae0('0x78')];_0x4a01cb['Imap'][_0x0ae0('0x7a')]=_0x4a01cb[_0x0ae0('0x43')]['user']=_0x33f5b6['body']['cuser'];_0x4a01cb['Imap'][_0x0ae0('0x7c')]=_0x4a01cb[_0x0ae0('0x43')][_0x0ae0('0x7d')]=_0x33f5b6['body'][_0x0ae0('0x7e')];}return db[_0x0ae0('0x45')][_0x0ae0('0x69')](_0x4a01cb,{'include':[{'model':db[_0x0ae0('0x42')],'as':_0x0ae0('0x43')},{'model':db[_0x0ae0('0x5f')],'as':_0x0ae0('0x41')}]})['then'](function(_0x5cd155){var _0x50c239=_0x33f5b6['user'][_0x0ae0('0x3a')]({'plain':!![]});if(!_0x50c239)throw new Error(_0x0ae0('0x83'));if(_0x50c239['role']===_0x0ae0('0x7a')){var _0x55c6c9=_0x5cd155[_0x0ae0('0x3a')]({'plain':!![]});return db[_0x0ae0('0x84')]['find']({'where':{'name':'MailAccounts','userProfileId':_0x50c239[_0x0ae0('0x85')]},'raw':!![]})[_0x0ae0('0x38')](function(_0xa49e36){if(_0xa49e36&&_0xa49e36[_0x0ae0('0x86')]===0x0){return db[_0x0ae0('0x3c')]['create']({'name':_0x55c6c9[_0x0ae0('0x3e')],'resourceId':_0x55c6c9['id'],'type':_0xa49e36[_0x0ae0('0x3e')],'sectionId':_0xa49e36['id']},{})[_0x0ae0('0x38')](function(){return _0x5cd155;});}else{return _0x5cd155;}})['catch'](function(_0x2ca0ef){logger[_0x0ae0('0x28')](_0x0ae0('0x87'),_0x2ca0ef);throw _0x2ca0ef;});}return _0x5cd155;})[_0x0ae0('0x38')](respondWithResult(_0x9509b,0xc9))[_0x0ae0('0x5c')](handleError(_0x9509b,null));};exports[_0x0ae0('0x88')]=function(_0x2c80f5,_0x5b622d,_0x91439d){return db['MailAccount'][_0x0ae0('0x6b')]({'where':{'id':_0x2c80f5[_0x0ae0('0x5e')]['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x5b622d,null))[_0x0ae0('0x38')](function(_0x2ae09e){if(_0x2ae09e){return _0x2ae09e[_0x0ae0('0x88')]();}return null;})[_0x0ae0('0x38')](respondWithResult(_0x5b622d,null))[_0x0ae0('0x5c')](handleError(_0x5b622d,null));};exports['addImap']=function(_0x2ce84d,_0x22bb6f,_0x391a3d){if(_0x2ce84d[_0x0ae0('0x64')]['id']){delete _0x2ce84d[_0x0ae0('0x64')]['id'];}return db['MailAccount'][_0x0ae0('0x63')]({'where':{'id':_0x2ce84d['params']['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x22bb6f,null))['then'](function(_0x74ee58){if(_0x74ee58){_0x2ce84d[_0x0ae0('0x64')]['MailAccountId']=_0x74ee58['id'];return db[_0x0ae0('0x5f')][_0x0ae0('0x69')](_0x2ce84d['body']);}})['then'](respondWithResult(_0x22bb6f,null))[_0x0ae0('0x5c')](handleError(_0x22bb6f,null));};exports['removeImap']=function(_0x407938,_0x156ce4,_0x362537){return db[_0x0ae0('0x45')]['findOne']({'where':{'id':_0x407938[_0x0ae0('0x5e')]['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x156ce4,null))[_0x0ae0('0x38')](function(_0x5bf59e){if(_0x5bf59e){return _0x5bf59e[_0x0ae0('0x89')](null);}return null;})[_0x0ae0('0x38')](respondWithStatusCode(_0x156ce4,null))[_0x0ae0('0x5c')](handleError(_0x156ce4,null));};exports[_0x0ae0('0x8a')]=function(_0x4eeed6,_0x3d7ab0,_0x217eea){return db[_0x0ae0('0x45')]['findOne']({'where':{'id':_0x4eeed6[_0x0ae0('0x5e')]['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x3d7ab0,null))[_0x0ae0('0x38')](function(_0x1c9606){if(_0x1c9606){return _0x1c9606[_0x0ae0('0x8a')]();}return null;})[_0x0ae0('0x38')](respondWithResult(_0x3d7ab0,null))['catch'](handleError(_0x3d7ab0,null));};exports['addSmtp']=function(_0x212e59,_0x36c185,_0x28b33c){if(_0x212e59['body']['id']){delete _0x212e59[_0x0ae0('0x64')]['id'];}return db['MailAccount'][_0x0ae0('0x63')]({'where':{'id':_0x212e59[_0x0ae0('0x5e')]['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x36c185,null))['then'](function(_0x458b82){if(_0x458b82){_0x212e59[_0x0ae0('0x64')][_0x0ae0('0x67')]=_0x458b82['id'];return db[_0x0ae0('0x42')][_0x0ae0('0x69')](_0x212e59['body']);}})[_0x0ae0('0x38')](respondWithResult(_0x36c185,null))['catch'](handleError(_0x36c185,null));};exports[_0x0ae0('0x8b')]=function(_0x279358,_0x38645,_0x3d482f){return db[_0x0ae0('0x45')][_0x0ae0('0x6b')]({'where':{'id':_0x279358[_0x0ae0('0x5e')]['id']}})['then'](handleEntityNotFound(_0x38645,null))[_0x0ae0('0x38')](function(_0x317391){if(_0x317391){return _0x317391[_0x0ae0('0x8c')](null);}return null;})[_0x0ae0('0x38')](respondWithStatusCode(_0x38645,null))[_0x0ae0('0x5c')](handleError(_0x38645,null));};exports[_0x0ae0('0x8d')]=function(_0x32bb63,_0x276c65,_0x61bd90){return db[_0x0ae0('0x8e')][_0x0ae0('0x63')]({'where':{'id':_0x32bb63[_0x0ae0('0x5e')]['id']}})['then'](handleEntityNotFound(_0x276c65,null))[_0x0ae0('0x38')](function(_0x148587){if(_0x148587){return _0x148587[_0x0ae0('0x8d')](_0x32bb63[_0x0ae0('0x64')][_0x0ae0('0x72')],_[_0x0ae0('0x8f')](_0x32bb63[_0x0ae0('0x64')],['ids','id'])||{});}})[_0x0ae0('0x38')](respondWithResult(_0x276c65,null))[_0x0ae0('0x5c')](handleError(_0x276c65,null));};exports[_0x0ae0('0x90')]=function(_0x59ebb0,_0x1e64f5,_0x2c58a0){var _0x104c81={'raw':![],'where':{}};var _0x3a4757={};var _0x258e94={'count':0x0,'rows':[]};return db[_0x0ae0('0x45')][_0x0ae0('0x6b')]({'where':{'id':_0x59ebb0[_0x0ae0('0x5e')]['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x1e64f5,null))['then'](function(_0x5c845f){if(_0x5c845f){_0x3a4757[_0x0ae0('0x49')]=_[_0x0ae0('0x4c')](db[_0x0ae0('0x8e')][_0x0ae0('0x46')]);_0x3a4757[_0x0ae0('0x4b')]=_[_0x0ae0('0x4c')](_0x59ebb0['query']);_0x3a4757[_0x0ae0('0x4d')]=_['intersection'](_0x3a4757['model'],_0x3a4757[_0x0ae0('0x4b')]);_0x104c81[_0x0ae0('0x50')]=_['intersection'](_0x3a4757[_0x0ae0('0x49')],qs[_0x0ae0('0x4f')](_0x59ebb0[_0x0ae0('0x4b')][_0x0ae0('0x4f')]));_0x104c81[_0x0ae0('0x50')]=_0x104c81[_0x0ae0('0x50')]['length']?_0x104c81[_0x0ae0('0x50')]:_0x3a4757[_0x0ae0('0x49')];if(!_0x59ebb0[_0x0ae0('0x4b')][_0x0ae0('0x6c')]('nolimit')){_0x104c81['limit']=qs[_0x0ae0('0x31')](_0x59ebb0[_0x0ae0('0x4b')][_0x0ae0('0x31')]);_0x104c81['offset']=qs[_0x0ae0('0x30')](_0x59ebb0[_0x0ae0('0x4b')]['offset']);}_0x104c81[_0x0ae0('0x53')]=qs[_0x0ae0('0x54')](_0x59ebb0[_0x0ae0('0x4b')][_0x0ae0('0x54')]);_0x104c81['where']=qs[_0x0ae0('0x4d')](_[_0x0ae0('0x56')](_0x59ebb0[_0x0ae0('0x4b')],_0x3a4757[_0x0ae0('0x4d')]));_0x104c81['where'][_0x0ae0('0x67')]=_0x5c845f['id'];if(_0x59ebb0[_0x0ae0('0x4b')][_0x0ae0('0x57')]){_0x104c81[_0x0ae0('0x55')]=_[_0x0ae0('0x59')](_0x104c81[_0x0ae0('0x55')],{'$or':_[_0x0ae0('0x4a')](_0x104c81['attributes'],function(_0x4e34d8){var _0x1fd36b={};_0x1fd36b[_0x4e34d8]={'$like':'%'+_0x59ebb0['query'][_0x0ae0('0x57')]+'%'};return _0x1fd36b;})});}_0x104c81=_['merge']({},_0x104c81,_0x59ebb0[_0x0ae0('0x5a')]);return db[_0x0ae0('0x8e')]['count']({'where':_0x104c81[_0x0ae0('0x55')]})['then'](function(_0x36e6bf){_0x258e94[_0x0ae0('0x32')]=_0x36e6bf;if(_0x59ebb0['query']['includeAll']){_0x104c81['include']=[{'model':db[_0x0ae0('0x91')],'as':_0x0ae0('0x92'),'required':![]},{'model':db[_0x0ae0('0x93')],'as':_0x0ae0('0x94'),'attributes':['name',_0x0ae0('0x95'),_0x0ae0('0x96')],'required':![]},{'model':db[_0x0ae0('0x97')],'as':_0x0ae0('0x98'),'attributes':['id',_0x0ae0('0x3e'),_0x0ae0('0x99')],'where':_0x59ebb0['query'][_0x0ae0('0x9a')]?{'id':_0x59ebb0[_0x0ae0('0x4b')][_0x0ae0('0x9a')]}:undefined,'required':_0x59ebb0[_0x0ae0('0x4b')]['tag']?!![]:![]}];}return db[_0x0ae0('0x8e')][_0x0ae0('0x5b')](_0x104c81);})[_0x0ae0('0x38')](function(_0x36fceb){_0x258e94['rows']=_0x36fceb;return _0x258e94;});}})['then'](respondWithFilteredResult(_0x1e64f5,_0x104c81))['catch'](handleError(_0x1e64f5,null));};exports['addApplications']=function(_0x3efa38,_0x3dc525,_0x1bb694){return db[_0x0ae0('0x45')][_0x0ae0('0x6b')]({'where':{'id':_0x3efa38[_0x0ae0('0x5e')]['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x3dc525,null))[_0x0ae0('0x38')](function(_0x12b86c){if(_0x12b86c){return db[_0x0ae0('0x9b')][_0x0ae0('0x9c')](function(_0x513f74){return db[_0x0ae0('0x9d')][_0x0ae0('0x39')]({'where':{'MailAccountId':_0x3efa38[_0x0ae0('0x5e')]['id']},'transaction':_0x513f74})[_0x0ae0('0x38')](function(_0x30688a){var _0x28f959=_[_0x0ae0('0x4a')](_0x3efa38[_0x0ae0('0x64')],function(_0x5d21e8){_0x5d21e8[_0x0ae0('0x67')]=_0x3efa38[_0x0ae0('0x5e')]['id'];return _0x5d21e8;});return db[_0x0ae0('0x9d')]['bulkCreate'](_0x28f959,{'transaction':_0x513f74});});})['then'](function(){return db[_0x0ae0('0x9d')][_0x0ae0('0x9e')]({'where':{'MailAccountId':_0x3efa38['params']['id']},'order':_0x0ae0('0x9f')});});}})[_0x0ae0('0x38')](respondWithResult(_0x3dc525,null))[_0x0ae0('0x5c')](handleError(_0x3dc525,null));};exports[_0x0ae0('0xa0')]=function(_0x287081,_0x44280c,_0x4ebc13){var _0x3a321b={};var _0x5236cd={};var _0x5619a8;var _0x138726;return db['MailAccount'][_0x0ae0('0x6b')]({'where':{'id':_0x287081['params']['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x44280c,null))[_0x0ae0('0x38')](function(_0x49e0fa){if(_0x49e0fa){_0x5619a8=_0x49e0fa;_0x5236cd[_0x0ae0('0x49')]=_[_0x0ae0('0x4c')](db['MailApplication'][_0x0ae0('0x46')]);_0x5236cd[_0x0ae0('0x4b')]=_[_0x0ae0('0x4c')](_0x287081[_0x0ae0('0x4b')]);_0x5236cd[_0x0ae0('0x4d')]=_['intersection'](_0x5236cd[_0x0ae0('0x49')],_0x5236cd[_0x0ae0('0x4b')]);_0x3a321b[_0x0ae0('0x50')]=_[_0x0ae0('0x4e')](_0x5236cd[_0x0ae0('0x49')],qs[_0x0ae0('0x4f')](_0x287081[_0x0ae0('0x4b')][_0x0ae0('0x4f')]));_0x3a321b['attributes']=_0x3a321b['attributes'][_0x0ae0('0x51')]?_0x3a321b[_0x0ae0('0x50')]:_0x5236cd['model'];_0x3a321b['order']=qs['sort'](_0x287081[_0x0ae0('0x4b')]['sort']);_0x3a321b[_0x0ae0('0x55')]=qs[_0x0ae0('0x4d')](_['pick'](_0x287081[_0x0ae0('0x4b')],_0x5236cd[_0x0ae0('0x4d')]));if(_0x287081[_0x0ae0('0x4b')]['filter']){_0x3a321b['where']=_[_0x0ae0('0x59')](_0x3a321b['where'],{'$or':_[_0x0ae0('0x4a')](_0x3a321b[_0x0ae0('0x50')],function(_0x2f7870){var _0x45b42d={};_0x45b42d[_0x2f7870]={'$like':'%'+_0x287081[_0x0ae0('0x4b')]['filter']+'%'};return _0x45b42d;})});}_0x3a321b=_[_0x0ae0('0x59')]({},_0x3a321b,_0x287081[_0x0ae0('0x5a')]);return _0x5619a8['getApplications'](_0x3a321b);}})[_0x0ae0('0x38')](function(_0x4097be){if(_0x4097be){_0x138726=_0x4097be[_0x0ae0('0x51')];if(!_0x287081[_0x0ae0('0x4b')][_0x0ae0('0x6c')](_0x0ae0('0x52'))){_0x3a321b[_0x0ae0('0x31')]=qs['limit'](_0x287081[_0x0ae0('0x4b')][_0x0ae0('0x31')]);_0x3a321b[_0x0ae0('0x30')]=qs['offset'](_0x287081[_0x0ae0('0x4b')][_0x0ae0('0x30')]);}return _0x5619a8[_0x0ae0('0xa0')](_0x3a321b);}})[_0x0ae0('0x38')](function(_0x430bbd){if(_0x430bbd){return _0x430bbd?{'count':_0x138726,'rows':_0x430bbd}:null;}})[_0x0ae0('0x38')](respondWithResult(_0x44280c,null))[_0x0ae0('0x5c')](handleError(_0x44280c,null));};exports[_0x0ae0('0xa1')]=function(_0x1de84c,_0x4615c7,_0x22cd24){var _0x5b72d8={'raw':!![],'where':{}};var _0x2c2d14={};var _0x42c15f={'count':0x0,'rows':[]};return db[_0x0ae0('0x45')]['findOne']({'where':{'id':_0x1de84c[_0x0ae0('0x5e')]['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x4615c7,null))['then'](function(_0x4bd4d2){if(_0x4bd4d2){_0x2c2d14['model']=_[_0x0ae0('0x4c')](db[_0x0ae0('0xa2')][_0x0ae0('0x46')]);_0x2c2d14[_0x0ae0('0x4b')]=_[_0x0ae0('0x4c')](_0x1de84c[_0x0ae0('0x4b')]);_0x2c2d14['filters']=_['intersection'](_0x2c2d14['model'],_0x2c2d14[_0x0ae0('0x4b')]);_0x5b72d8['attributes']=_['intersection'](_0x2c2d14[_0x0ae0('0x49')],qs['fields'](_0x1de84c[_0x0ae0('0x4b')][_0x0ae0('0x4f')]));_0x5b72d8[_0x0ae0('0x50')]=_0x5b72d8['attributes'][_0x0ae0('0x51')]?_0x5b72d8[_0x0ae0('0x50')]:_0x2c2d14['model'];if(!_0x1de84c['query'][_0x0ae0('0x6c')](_0x0ae0('0x52'))){_0x5b72d8[_0x0ae0('0x31')]=qs[_0x0ae0('0x31')](_0x1de84c[_0x0ae0('0x4b')][_0x0ae0('0x31')]);_0x5b72d8[_0x0ae0('0x30')]=qs[_0x0ae0('0x30')](_0x1de84c[_0x0ae0('0x4b')][_0x0ae0('0x30')]);}_0x5b72d8[_0x0ae0('0x53')]=qs[_0x0ae0('0x54')](_0x1de84c[_0x0ae0('0x4b')][_0x0ae0('0x54')]);_0x5b72d8[_0x0ae0('0x55')]=qs[_0x0ae0('0x4d')](_['pick'](_0x1de84c[_0x0ae0('0x4b')],_0x2c2d14[_0x0ae0('0x4d')]));_0x5b72d8[_0x0ae0('0x55')]['MailAccountId']=_0x4bd4d2['id'];if(_0x1de84c[_0x0ae0('0x4b')]['filter']){_0x5b72d8[_0x0ae0('0x55')]=_['merge'](_0x5b72d8['where'],{'$or':_[_0x0ae0('0x4a')](_0x5b72d8[_0x0ae0('0x50')],function(_0x5929de){var _0x48eda6={};_0x48eda6[_0x5929de]={'$like':'%'+_0x1de84c['query'][_0x0ae0('0x57')]+'%'};return _0x48eda6;})});}if(_0x1de84c[_0x0ae0('0x4b')][_0x0ae0('0xa3')]){var _0x409521=_0x1de84c['query']['$gte'][_0x0ae0('0xa4')](',');var _0x51c456={};_0x51c456[_0x409521[0x0]]={'$gte':moment(_0x409521[0x1])[_0x0ae0('0xa5')](_0x0ae0('0xa6'))};_0x5b72d8['where']=_[_0x0ae0('0x59')](_0x5b72d8['where'],_0x51c456);}_0x5b72d8=_[_0x0ae0('0x59')]({},_0x5b72d8,_0x1de84c[_0x0ae0('0x5a')]);return db[_0x0ae0('0xa2')][_0x0ae0('0x32')]({'where':_0x5b72d8[_0x0ae0('0x55')]})['then'](function(_0x5b07e2){_0x42c15f[_0x0ae0('0x32')]=_0x5b07e2;if(_0x1de84c[_0x0ae0('0x4b')][_0x0ae0('0x61')]){_0x5b72d8[_0x0ae0('0x62')]=[{'all':!![]}];}return db[_0x0ae0('0xa2')]['findAll'](_0x5b72d8);})[_0x0ae0('0x38')](function(_0x2c536f){if(_0x1de84c['query'][_0x0ae0('0xa7')]===_0x0ae0('0xa8')){for(var _0x3a3c2f=0x0;_0x3a3c2f<_0x2c536f[_0x0ae0('0x51')];_0x3a3c2f++){_0x2c536f[_0x3a3c2f][_0x0ae0('0x64')]=juice(_0x2c536f[_0x3a3c2f][_0x0ae0('0x64')]);}}_0x42c15f[_0x0ae0('0x6d')]=_0x2c536f;return _0x42c15f;});}})[_0x0ae0('0x38')](respondWithFilteredResult(_0x4615c7,_0x5b72d8))[_0x0ae0('0x5c')](handleError(_0x4615c7,null));};exports[_0x0ae0('0x3f')]=function(_0x2b87a8,_0x32035a,_0xf41669){var _0x10d1da,_0x3eea33={},_0x482968;if(_0x2b87a8[_0x0ae0('0x64')]['to']){_0x482968=_0x2b87a8[_0x0ae0('0x64')]['to']['split'](',')[0x0];}return db[_0x0ae0('0x45')][_0x0ae0('0x63')]({'where':{'id':_0x2b87a8[_0x0ae0('0x5e')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0x0ae0('0x91')],'as':_0x0ae0('0xa9'),'where':{'email':_0x482968},'limit':0x1,'order':[[_0x0ae0('0xaa'),_0x0ae0('0xab')]]}]},{'model':db[_0x0ae0('0x42')],'as':_0x0ae0('0x43'),'raw':!![]}]})[_0x0ae0('0x38')](handleEntityNotFound(_0x32035a,null))['then'](function(_0x5e0f55){if(_0x5e0f55){_0x10d1da=_0x5e0f55;if(_0x5e0f55['Smtp']){if(_[_0x0ae0('0x75')](_0x2b87a8[_0x0ae0('0x64')][_0x0ae0('0xac')])){_0x2b87a8[_0x0ae0('0x64')]['from']=util[_0x0ae0('0xa5')](_0x0ae0('0xad'),_0x5e0f55[_0x0ae0('0x3e')],_0x5e0f55['email']||_0x5e0f55[_0x0ae0('0x43')][_0x0ae0('0x7a')]);}if(_0x2b87a8[_0x0ae0('0x64')][_0x0ae0('0xae')]&&_0x2b87a8[_0x0ae0('0x64')][_0x0ae0('0xae')][_0x0ae0('0x51')]){for(var _0x411c2a=0x0;_0x411c2a<_0x2b87a8[_0x0ae0('0x64')][_0x0ae0('0xae')][_0x0ae0('0x51')];_0x411c2a+=0x1){_0x2b87a8[_0x0ae0('0x64')]['attachments'][_0x411c2a]={'filename':_0x2b87a8[_0x0ae0('0x64')][_0x0ae0('0xae')][_0x411c2a]['name'],'path':path[_0x0ae0('0xaf')](config[_0x0ae0('0xb0')],_0x0ae0('0xb1'),_0x2b87a8[_0x0ae0('0x64')][_0x0ae0('0xae')][_0x411c2a][_0x0ae0('0xb2')])};}}var _0x52fe44={'tls':{'rejectUnauthorized':![]}};if(_[_0x0ae0('0x75')](_0x5e0f55[_0x0ae0('0x43')][_0x0ae0('0x82')])){if(_0x5e0f55['Smtp'][_0x0ae0('0x7f')]){_0x52fe44[_0x0ae0('0xb3')]={'user':_0x5e0f55[_0x0ae0('0x43')][_0x0ae0('0x7a')],'pass':_0x5e0f55[_0x0ae0('0x43')][_0x0ae0('0x7d')]};}_0x52fe44['host']=_0x5e0f55[_0x0ae0('0x43')]['host'];_0x52fe44['port']=_0x5e0f55['Smtp']['port'];_0x52fe44['secure']=_0x5e0f55['Smtp']['secure'];}else{_0x52fe44['service']=_0x5e0f55[_0x0ae0('0x43')]['service'];_0x52fe44['auth']={'user':_0x5e0f55['Smtp'][_0x0ae0('0x7a')],'pass':_0x5e0f55[_0x0ae0('0x43')][_0x0ae0('0x7d')]};}return respondWithRpcPromise(_0x0ae0('0xb4'),_0x0ae0('0xb5'),{'account':_0x52fe44,'message':_0x2b87a8['body']});}else{throw new Error(_0x0ae0('0xb6'));}}})[_0x0ae0('0x38')](function(_0xf84780){if(_0xf84780){_0x3eea33=_0xf84780;if(_0x10d1da[_0x0ae0('0xb7')]){if(_0x10d1da[_0x0ae0('0xb7')][_0x0ae0('0xa9')][_0x0ae0('0x51')]){return _0x10d1da[_0x0ae0('0xb7')][_0x0ae0('0xa9')][0x0];}else{return db[_0x0ae0('0x91')]['create'](_[_0x0ae0('0x1c')](_0x2b87a8['body'],{'firstName':_0x2b87a8['body']['to'],'email':_0x2b87a8[_0x0ae0('0x64')]['to'],'phone':_0x2b87a8[_0x0ae0('0x64')]['to'],'ListId':_0x10d1da[_0x0ae0('0x74')]}));}}else{throw new Error(_0x0ae0('0xb6'));}}})[_0x0ae0('0x38')](function(_0x2971b0){if(_0x2971b0){var _0x3efac2={'UserId':_0x2b87a8['user']['id'],'ContactId':_0x2971b0['id'],'MailAccountId':_0x10d1da['id'],'inReplyTo':_0x3eea33[_0x0ae0('0xb8')],'to':_0x2b87a8[_0x0ae0('0x64')][_0x0ae0('0xac')],'cc':_0x2b87a8[_0x0ae0('0x64')]['cc'],'subject':_0x2b87a8[_0x0ae0('0x64')][_0x0ae0('0xb9')],'attach':_0x2b87a8[_0x0ae0('0x64')][_0x0ae0('0xba')],'firstMsgDirection':_0x0ae0('0xbb'),'lastMsgAt':moment()[_0x0ae0('0xa5')](_0x0ae0('0xa6')),'lastMsgDirection':'out','Messages':[_[_0x0ae0('0x59')](_0x2b87a8[_0x0ae0('0x64')],{'messageId':_0x3eea33['messageId'],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'read':!![],'MailAccountId':_0x10d1da['id'],'UserId':_0x2b87a8['user']['id'],'ContactId':_0x2971b0['id']})]};if(_0x2b87a8[_0x0ae0('0x64')]['Interaction']){_0x3efac2=_[_0x0ae0('0x59')](_0x3efac2,_0x2b87a8[_0x0ae0('0x64')][_0x0ae0('0xbc')]);}return db[_0x0ae0('0x8e')][_0x0ae0('0x69')](_0x3efac2,{'include':[{'model':db['MailMessage'],'as':'Messages'}]});}})[_0x0ae0('0x38')](respondWithResult(_0x32035a,null))[_0x0ae0('0x5c')](handleError(_0x32035a,null));};exports[_0x0ae0('0xbd')]=function(_0x20c363,_0x15a951,_0x3a60c4){return db[_0x0ae0('0x45')][_0x0ae0('0x63')]({'where':{'id':_0x20c363[_0x0ae0('0x5e')]['id']},'include':[{'model':db['MailServerOut'],'as':'Smtp','raw':!![]}]})['then'](handleEntityNotFound(_0x15a951,null))[_0x0ae0('0x38')](function(_0x26473e){if(_0x26473e&&_0x26473e[_0x0ae0('0x43')]){var _0x5bd2f5={'id':_0x26473e['id'],'tls':{'rejectUnauthorized':![]}};if(_0x26473e[_0x0ae0('0x43')][_0x0ae0('0x82')]){_0x5bd2f5[_0x0ae0('0x82')]=_0x26473e[_0x0ae0('0x43')][_0x0ae0('0x82')];}else{_0x5bd2f5[_0x0ae0('0x80')]=_0x26473e[_0x0ae0('0x43')]['host'];_0x5bd2f5['port']=_0x26473e[_0x0ae0('0x43')][_0x0ae0('0x81')];_0x5bd2f5['secure']=_0x26473e[_0x0ae0('0x43')]['secure'];}if(_0x26473e[_0x0ae0('0x43')][_0x0ae0('0x7f')]){_0x5bd2f5[_0x0ae0('0xb3')]={'user':_0x26473e['Smtp']['user'],'pass':_0x26473e[_0x0ae0('0x43')][_0x0ae0('0x7d')]};}return respondWithRpcPromise(_0x0ae0('0xbe'),_0x0ae0('0xbd'),{'account':_0x5bd2f5});}})[_0x0ae0('0x38')](respondWithResult(_0x15a951,null))[_0x0ae0('0x5c')](handleError(_0x15a951,null));};exports['destroy']=function(_0x42484d,_0x135bd6){return db[_0x0ae0('0x45')][_0x0ae0('0x63')]({'where':{'id':_0x42484d['params']['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x135bd6,null))[_0x0ae0('0x38')](function(_0x3cc46c){if(_0x3cc46c&&_0x3cc46c['service']){throw new db[(_0x0ae0('0xbf'))][(_0x0ae0('0xc0'))](_0x0ae0('0xc1'));}return _0x3cc46c;})[_0x0ae0('0x38')](removeEntity(_0x135bd6,null))[_0x0ae0('0x5c')](handleError(_0x135bd6,null));};exports[_0x0ae0('0xc2')]=function(_0x523373,_0x360e83,_0x366399){return db[_0x0ae0('0x45')][_0x0ae0('0x63')]({'where':{'id':_0x523373[_0x0ae0('0x5e')]['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x360e83,null))[_0x0ae0('0x38')](function(_0x43df2f){if(_0x43df2f){return _0x43df2f[_0x0ae0('0xc2')](_0x523373[_0x0ae0('0x64')][_0x0ae0('0x72')],_[_0x0ae0('0x8f')](_0x523373[_0x0ae0('0x64')],[_0x0ae0('0x72'),'id'])||{})[_0x0ae0('0xc3')](function(_0x2aebc2){for(var _0x54777a=0x0;_0x54777a<_0x523373['body'][_0x0ae0('0x72')][_0x0ae0('0x51')];_0x54777a+=0x1){socket[_0x0ae0('0xc4')](_0x0ae0('0xc5'),{'UserId':Number(_0x523373[_0x0ae0('0x64')][_0x0ae0('0x72')][_0x54777a]),'MailAccountId':Number(_0x523373[_0x0ae0('0x5e')]['id'])});}return _0x2aebc2;});}})[_0x0ae0('0x38')](respondWithResult(_0x360e83,null))[_0x0ae0('0x5c')](handleError(_0x360e83,null));};exports[_0x0ae0('0xc6')]=function(_0x1c5f5a,_0x1902a9,_0x2352b3){return db[_0x0ae0('0x45')][_0x0ae0('0x63')]({'where':{'id':_0x1c5f5a[_0x0ae0('0x5e')]['id']}})[_0x0ae0('0x38')](handleEntityNotFound(_0x1902a9,null))[_0x0ae0('0x38')](function(_0x40f226){if(_0x40f226){return _0x40f226[_0x0ae0('0xc6')](_0x1c5f5a[_0x0ae0('0x4b')][_0x0ae0('0x72')])[_0x0ae0('0x38')](function(){if(_[_0x0ae0('0xc7')](_0x1c5f5a[_0x0ae0('0x4b')][_0x0ae0('0x72')])){for(var _0x130566=0x0;_0x130566<_0x1c5f5a[_0x0ae0('0x4b')][_0x0ae0('0x72')]['length'];_0x130566+=0x1){socket[_0x0ae0('0xc4')]('userMailAccount:remove',{'UserId':Number(_0x1c5f5a['query'][_0x0ae0('0x72')][_0x130566]),'MailAccountId':Number(_0x1c5f5a['params']['id'])});}}else{socket[_0x0ae0('0xc4')](_0x0ae0('0xc8'),{'UserId':Number(_0x1c5f5a[_0x0ae0('0x4b')]['ids']),'MailAccountId':Number(_0x1c5f5a[_0x0ae0('0x5e')]['id'])});}});}})['then'](respondWithStatusCode(_0x1902a9,null))[_0x0ae0('0x5c')](handleError(_0x1902a9,null));};exports['getAgents']=function(_0x4ff711,_0x34b476,_0x12c14b){var _0x50bb50={};var _0x59b24d={};var _0x11a458;var _0x1f920b;return db[_0x0ae0('0x45')][_0x0ae0('0x6b')]({'where':{'id':_0x4ff711[_0x0ae0('0x5e')]['id']}})['then'](handleEntityNotFound(_0x34b476,null))['then'](function(_0x2d2467){if(_0x2d2467){_0x11a458=_0x2d2467;_0x59b24d['model']=_[_0x0ae0('0x4c')](db[_0x0ae0('0x93')][_0x0ae0('0x46')]);_0x59b24d[_0x0ae0('0x4b')]=_[_0x0ae0('0x4c')](_0x4ff711[_0x0ae0('0x4b')]);_0x59b24d[_0x0ae0('0x4d')]=_[_0x0ae0('0x4e')](_0x59b24d[_0x0ae0('0x49')],_0x59b24d[_0x0ae0('0x4b')]);_0x50bb50[_0x0ae0('0x50')]=_['intersection'](_0x59b24d[_0x0ae0('0x49')],qs[_0x0ae0('0x4f')](_0x4ff711['query'][_0x0ae0('0x4f')]));_0x50bb50[_0x0ae0('0x50')]=_0x50bb50['attributes']['length']?_0x50bb50[_0x0ae0('0x50')]:_0x59b24d[_0x0ae0('0x49')];_0x50bb50[_0x0ae0('0x53')]=qs[_0x0ae0('0x54')](_0x4ff711['query'][_0x0ae0('0x54')]);_0x50bb50['where']=qs[_0x0ae0('0x4d')](_[_0x0ae0('0x56')](_0x4ff711[_0x0ae0('0x4b')],_0x59b24d['filters']));if(_0x4ff711[_0x0ae0('0x4b')][_0x0ae0('0x57')]){_0x50bb50[_0x0ae0('0x55')]=_[_0x0ae0('0x59')](_0x50bb50[_0x0ae0('0x55')],{'$or':_[_0x0ae0('0x4a')](_0x50bb50['attributes'],function(_0x3ff57d){var _0x495723={};_0x495723[_0x3ff57d]={'$like':'%'+_0x4ff711[_0x0ae0('0x4b')][_0x0ae0('0x57')]+'%'};return _0x495723;})});}_0x50bb50=_['merge']({},_0x50bb50,_0x4ff711['options']);return _0x11a458[_0x0ae0('0xc9')](_0x50bb50);}})[_0x0ae0('0x38')](function(_0x1636ec){if(_0x1636ec){_0x1f920b=_0x1636ec[_0x0ae0('0x51')];if(!_0x4ff711[_0x0ae0('0x4b')][_0x0ae0('0x6c')](_0x0ae0('0x52'))){_0x50bb50[_0x0ae0('0x31')]=qs[_0x0ae0('0x31')](_0x4ff711[_0x0ae0('0x4b')]['limit']);_0x50bb50['offset']=qs[_0x0ae0('0x30')](_0x4ff711[_0x0ae0('0x4b')][_0x0ae0('0x30')]);}return _0x11a458[_0x0ae0('0xc9')](_0x50bb50);}})[_0x0ae0('0x38')](function(_0x452172){if(_0x452172){return _0x452172?{'count':_0x1f920b,'rows':_0x452172}:null;}})[_0x0ae0('0x38')](respondWithResult(_0x34b476,null))[_0x0ae0('0x5c')](handleError(_0x34b476,null));};
\ No newline at end of file
+var _0x0725=['Sequelize','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','getAgents','eml-format','rimraf','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','html-to-text','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','register','jayson/promise','client','http','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','reject','update','destroy','MailAccounts','UserProfileResource','stack','name','send','index','MailServerIn','Imap','Smtp','Pause','map','MailAccount','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','include','rows','catch','show','params','MailServerOut','mandatoryDispositionPause','includeAll','find','body','describe','addDisposition','MailAccountId','create','getDispositions','findOne','Disposition','fields','findAll','removeDispositions','ids','CannedAnswer','removeAnswers','email','ListId','active','isNil','cservice','cauthentication','user','pass','cpassword','authentication','host','port','cuser','password','get','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','setImap','getSmtp','addSmtp','removeSmtp','setSmtp','addInteraction','MailInteraction','omit','CmContact','User','fullname','internal','Tags','tag','sequelize','MailApplication','priority','getApplications','getMessages','MailMessage','split','YYYY-MM-DD\x20HH:mm:ss','inlineCss','true','CmList','List','updatedAt','from','format','%s\x20<%s>','attachments','join','root','server/files/attachments','basename','auth','secure','service','SendMail','sendMail','Contacts','List\x20not\x20found','messageId','Interaction','VerifySmtp','verifySmtp'];(function(_0x3e482d,_0x27e689){var _0x5223ab=function(_0x580b4f){while(--_0x580b4f){_0x3e482d['push'](_0x3e482d['shift']());}};_0x5223ab(++_0x27e689);}(_0x0725,0xc7));var _0x5072=function(_0x2e2b4c,_0xcc1065){_0x2e2b4c=_0x2e2b4c-0x0;var _0x45f48c=_0x0725[_0x2e2b4c];return _0x45f48c;};'use strict';var emlformat=require(_0x5072('0x0'));var rimraf=require(_0x5072('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x5072('0x2'));var BPromise=require(_0x5072('0x3'));var Mustache=require('mustache');var util=require(_0x5072('0x4'));var path=require(_0x5072('0x5'));var sox=require(_0x5072('0x6'));var csv=require(_0x5072('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5072('0x8'));var _=require(_0x5072('0x9'));var squel=require(_0x5072('0xa'));var crypto=require(_0x5072('0xb'));var jsforce=require(_0x5072('0xc'));var deskjs=require(_0x5072('0xd'));var toCsv=require('to-csv');var querystring=require(_0x5072('0xe'));var Papa=require('papaparse');var htmlToText=require(_0x5072('0xf'));var juice=require('juice');var Redis=require('ioredis');var authService=require(_0x5072('0x10'));var qs=require(_0x5072('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5072('0x12'));var logger=require(_0x5072('0x13'))(_0x5072('0x14'));var utils=require('../../config/utils');var config=require(_0x5072('0x15'));var licenseUtil=require(_0x5072('0x16'));var db=require(_0x5072('0x17'))['db'];config[_0x5072('0x18')]=_[_0x5072('0x19')](config['redis'],{'host':_0x5072('0x1a'),'port':0x18eb});var socket=require(_0x5072('0x1b'))(new Redis(config['redis']));require(_0x5072('0x1c'))[_0x5072('0x1d')](socket);var jayson=require(_0x5072('0x1e'));var client=jayson[_0x5072('0x1f')][_0x5072('0x20')]({'port':0x232b});function respondWithRpcPromise(_0x420c41,_0x49ae45,_0x159971,_0x592065){return new BPromise(function(_0xb3d375,_0xe4a3cb){var _0x44b907=_0x592065||client;return _0x44b907[_0x5072('0x21')](_0x420c41,_0x159971)[_0x5072('0x22')](function(_0x17b923){logger[_0x5072('0x23')](_0x5072('0x24'),_0x49ae45,_0x5072('0x25'));logger[_0x5072('0x26')](_0x5072('0x27'),_0x49ae45,'request\x20sent',JSON[_0x5072('0x28')](_0x17b923));if(_0x17b923[_0x5072('0x29')]){if(_0x17b923[_0x5072('0x29')][_0x5072('0x2a')]===0x1f4){logger[_0x5072('0x29')](_0x5072('0x24'),_0x49ae45,_0x17b923[_0x5072('0x29')]['message']);return _0xe4a3cb(_0x17b923[_0x5072('0x29')][_0x5072('0x2b')]);}logger['error'](_0x5072('0x24'),_0x49ae45,_0x17b923[_0x5072('0x29')][_0x5072('0x2b')]);return _0xb3d375(_0x17b923[_0x5072('0x29')][_0x5072('0x2b')]);}else{logger[_0x5072('0x23')](_0x5072('0x24'),_0x49ae45,_0x5072('0x25'));_0xb3d375(_0x17b923['result'][_0x5072('0x2b')]);}})['catch'](function(_0x4a4c44){logger[_0x5072('0x29')](_0x5072('0x24'),_0x49ae45,_0x4a4c44);_0xe4a3cb(_0x4a4c44);});});}function respondWithStatusCode(_0x479c66,_0x2d09d8){_0x2d09d8=_0x2d09d8||0xcc;return function(_0x5eb5fd){if(_0x5eb5fd){return _0x479c66[_0x5072('0x2c')](_0x2d09d8);}return _0x479c66[_0x5072('0x2d')](_0x2d09d8)[_0x5072('0x2e')]();};}function respondWithResult(_0x484787,_0x53c618){_0x53c618=_0x53c618||0xc8;return function(_0x27419d){if(_0x27419d){return _0x484787['status'](_0x53c618)[_0x5072('0x2f')](_0x27419d);}};}function respondWithFilteredResult(_0x200985,_0x5c81fa){return function(_0x41ed2d){if(_0x41ed2d){var _0x32ccf6=typeof _0x5c81fa['offset']==='undefined'&&typeof _0x5c81fa[_0x5072('0x30')]===_0x5072('0x31');var _0x333fa0=_0x41ed2d[_0x5072('0x32')];var _0x5f52ba=_0x32ccf6?0x0:_0x5c81fa[_0x5072('0x33')];var _0x40e54e=_0x32ccf6?_0x41ed2d[_0x5072('0x32')]:_0x5c81fa[_0x5072('0x33')]+_0x5c81fa['limit'];var _0x2035c0;if(_0x40e54e>=_0x333fa0){_0x40e54e=_0x333fa0;_0x2035c0=0xc8;}else{_0x2035c0=0xce;}_0x200985['status'](_0x2035c0);return _0x200985[_0x5072('0x34')](_0x5072('0x35'),_0x5f52ba+'-'+_0x40e54e+'/'+_0x333fa0)[_0x5072('0x2f')](_0x41ed2d);}return null;};}function patchUpdates(_0x15f3f2){return function(_0x418599){try{jsonpatch['apply'](_0x418599,_0x15f3f2,!![]);}catch(_0x43df10){return BPromise[_0x5072('0x36')](_0x43df10);}return _0x418599['save']();};}function saveUpdates(_0x287a34,_0x5464dc){return function(_0x279647){if(_0x279647){return _0x279647[_0x5072('0x37')](_0x287a34)['then'](function(_0x36df8d){return _0x36df8d;});}return null;};}function removeEntity(_0x10bc95,_0xa343a){return function(_0x212f11){if(_0x212f11){return _0x212f11[_0x5072('0x38')]()['then'](function(){var _0x3cff6e=_0x212f11['get']({'plain':!![]});var _0x57a064=_0x5072('0x39');return db[_0x5072('0x3a')][_0x5072('0x38')]({'where':{'type':_0x57a064,'resourceId':_0x3cff6e['id']}})[_0x5072('0x22')](function(){return _0x212f11;});})[_0x5072('0x22')](function(){_0x10bc95[_0x5072('0x2d')](0xcc)[_0x5072('0x2e')]();});}};}function handleEntityNotFound(_0x4749b0,_0xc7e848){return function(_0x5009c2){if(!_0x5009c2){_0x4749b0['sendStatus'](0x194);}return _0x5009c2;};}function handleError(_0x441bbd,_0x40e75c){_0x40e75c=_0x40e75c||0x1f4;return function(_0x259f3a){logger['error'](_0x259f3a[_0x5072('0x3b')]);if(_0x259f3a[_0x5072('0x3c')]){delete _0x259f3a[_0x5072('0x3c')];}_0x441bbd[_0x5072('0x2d')](_0x40e75c)[_0x5072('0x3d')](_0x259f3a);};}exports[_0x5072('0x3e')]=function(_0x22caf7,_0x520429){var _0x141eb6={'include':[{'model':db[_0x5072('0x3f')],'as':_0x5072('0x40')},{'model':db['MailServerOut'],'as':_0x5072('0x41')},{'model':db[_0x5072('0x42')],'as':'mandatoryDispositionPause'}]},_0x5102c3={},_0x523f0e={'count':0x0,'rows':[]};var _0x246be0=_[_0x5072('0x43')](db[_0x5072('0x44')][_0x5072('0x45')],function(_0x1b6175){return{'name':_0x1b6175['fieldName'],'type':_0x1b6175[_0x5072('0x46')][_0x5072('0x47')]};});_0x5102c3[_0x5072('0x48')]=_['map'](_0x246be0,_0x5072('0x3c'));_0x5102c3[_0x5072('0x49')]=_[_0x5072('0x4a')](_0x22caf7['query']);_0x5102c3[_0x5072('0x4b')]=_[_0x5072('0x4c')](_0x5102c3[_0x5072('0x48')],_0x5102c3['query']);_0x141eb6[_0x5072('0x4d')]=_[_0x5072('0x4c')](_0x5102c3[_0x5072('0x48')],qs['fields'](_0x22caf7[_0x5072('0x49')]['fields']));_0x141eb6[_0x5072('0x4d')]=_0x141eb6['attributes'][_0x5072('0x4e')]?_0x141eb6[_0x5072('0x4d')]:_0x5102c3[_0x5072('0x48')];if(!_0x22caf7['query'][_0x5072('0x4f')](_0x5072('0x50'))){_0x141eb6[_0x5072('0x30')]=qs[_0x5072('0x30')](_0x22caf7[_0x5072('0x49')][_0x5072('0x30')]);_0x141eb6[_0x5072('0x33')]=qs['offset'](_0x22caf7['query'][_0x5072('0x33')]);}_0x141eb6[_0x5072('0x51')]=qs[_0x5072('0x52')](_0x22caf7['query'][_0x5072('0x52')]);_0x141eb6[_0x5072('0x53')]=qs[_0x5072('0x4b')](_[_0x5072('0x54')](_0x22caf7[_0x5072('0x49')],_0x5102c3[_0x5072('0x4b')]),_0x246be0);if(_0x22caf7[_0x5072('0x49')][_0x5072('0x55')]){_0x141eb6[_0x5072('0x53')]=_[_0x5072('0x56')](_0x141eb6['where'],{'$or':_[_0x5072('0x43')](_0x246be0,function(_0x372498){if(_0x372498[_0x5072('0x46')]!=='VIRTUAL'){var _0x26836e={};_0x26836e[_0x372498['name']]={'$like':'%'+_0x22caf7[_0x5072('0x49')][_0x5072('0x55')]+'%'};return _0x26836e;}})});}_0x141eb6=_[_0x5072('0x56')]({},_0x141eb6,_0x22caf7[_0x5072('0x57')]);var _0x221f04={'where':_0x141eb6[_0x5072('0x53')]};return db[_0x5072('0x44')]['count'](_0x221f04)[_0x5072('0x22')](function(_0x2ce0ca){_0x523f0e['count']=_0x2ce0ca;if(_0x22caf7[_0x5072('0x49')]['includeAll']){_0x141eb6[_0x5072('0x58')]=[{'all':!![]}];}return db[_0x5072('0x44')]['findAll'](_0x141eb6);})[_0x5072('0x22')](function(_0x308470){_0x523f0e[_0x5072('0x59')]=_0x308470;return _0x523f0e;})[_0x5072('0x22')](respondWithFilteredResult(_0x520429,_0x141eb6))[_0x5072('0x5a')](handleError(_0x520429,null));};exports[_0x5072('0x5b')]=function(_0x3fe83f,_0x52ee04){var _0x46936a={'raw':![],'where':{'id':_0x3fe83f[_0x5072('0x5c')]['id']},'include':[{'model':db[_0x5072('0x3f')],'as':_0x5072('0x40')},{'model':db[_0x5072('0x5d')],'as':_0x5072('0x41')},{'model':db[_0x5072('0x42')],'as':_0x5072('0x5e')}]},_0x52981a={};_0x52981a[_0x5072('0x48')]=_[_0x5072('0x4a')](db[_0x5072('0x44')][_0x5072('0x45')]);_0x52981a[_0x5072('0x49')]=_['keys'](_0x3fe83f[_0x5072('0x49')]);_0x52981a[_0x5072('0x4b')]=_[_0x5072('0x4c')](_0x52981a['model'],_0x52981a[_0x5072('0x49')]);_0x46936a['attributes']=_[_0x5072('0x4c')](_0x52981a[_0x5072('0x48')],qs['fields'](_0x3fe83f['query']['fields']));_0x46936a[_0x5072('0x4d')]=_0x46936a[_0x5072('0x4d')][_0x5072('0x4e')]?_0x46936a[_0x5072('0x4d')]:_0x52981a[_0x5072('0x48')];if(_0x3fe83f['query'][_0x5072('0x5f')]){_0x46936a[_0x5072('0x58')]=[{'all':!![]}];}_0x46936a=_[_0x5072('0x56')]({},_0x46936a,_0x3fe83f[_0x5072('0x57')]);return db['MailAccount'][_0x5072('0x60')](_0x46936a)['then'](handleEntityNotFound(_0x52ee04,null))[_0x5072('0x22')](respondWithResult(_0x52ee04,null))[_0x5072('0x5a')](handleError(_0x52ee04,null));};exports['update']=function(_0x3691f1,_0x465085){if(_0x3691f1['body']['id']){delete _0x3691f1['body']['id'];}return db[_0x5072('0x44')]['find']({'where':{'id':_0x3691f1['params']['id']},'include':[{'model':db['MailServerIn'],'as':'Imap'},{'model':db[_0x5072('0x5d')],'as':'Smtp'},{'model':db[_0x5072('0x42')],'as':_0x5072('0x5e')}]})[_0x5072('0x22')](handleEntityNotFound(_0x465085,null))['then'](saveUpdates(_0x3691f1[_0x5072('0x61')],null))[_0x5072('0x22')](function(_0x4114b6){if(_0x4114b6&&_0x3691f1[_0x5072('0x61')]['Imap']){return db['MailServerIn'][_0x5072('0x37')](_0x3691f1[_0x5072('0x61')]['Imap'],{'where':{'MailAccountId':_0x4114b6['id']}})['then'](function(){return _0x4114b6;});}return _0x4114b6;})['then'](function(_0x4541a9){if(_0x4541a9&&_0x3691f1[_0x5072('0x61')][_0x5072('0x41')]){return db[_0x5072('0x5d')][_0x5072('0x37')](_0x3691f1['body'][_0x5072('0x41')],{'where':{'MailAccountId':_0x4541a9['id']}})[_0x5072('0x22')](function(){return _0x4541a9;});}return _0x4541a9;})[_0x5072('0x22')](respondWithResult(_0x465085,null))[_0x5072('0x5a')](handleError(_0x465085,null));};exports[_0x5072('0x62')]=function(_0x573d2d,_0x56ebe4){return db['MailAccount'][_0x5072('0x62')]()[_0x5072('0x22')](respondWithResult(_0x56ebe4,null))[_0x5072('0x5a')](handleError(_0x56ebe4,null));};exports[_0x5072('0x63')]=function(_0xd9040b,_0x255d21,_0x20fee7){if(_0xd9040b[_0x5072('0x61')]['id']){delete _0xd9040b[_0x5072('0x61')]['id'];}return db[_0x5072('0x44')][_0x5072('0x60')]({'where':{'id':_0xd9040b[_0x5072('0x5c')]['id']}})[_0x5072('0x22')](handleEntityNotFound(_0x255d21,null))['then'](function(_0x2b39c1){if(_0x2b39c1){_0xd9040b['body'][_0x5072('0x64')]=_0x2b39c1['id'];return db['Disposition'][_0x5072('0x65')](_0xd9040b[_0x5072('0x61')]);}})['then'](respondWithResult(_0x255d21,null))[_0x5072('0x5a')](handleError(_0x255d21,null));};exports[_0x5072('0x66')]=function(_0x5eb528,_0x28ceb2,_0x1864fa){var _0x5c6676={'raw':![],'where':{}};var _0x2d8363={};var _0x1888ab={'count':0x0,'rows':[]};return db['MailAccount'][_0x5072('0x67')]({'where':{'id':_0x5eb528[_0x5072('0x5c')]['id']}})[_0x5072('0x22')](handleEntityNotFound(_0x28ceb2,null))['then'](function(_0x37c53d){if(_0x37c53d){_0x2d8363[_0x5072('0x48')]=_[_0x5072('0x4a')](db[_0x5072('0x68')]['rawAttributes']);_0x2d8363[_0x5072('0x49')]=_['keys'](_0x5eb528['query']);_0x2d8363['filters']=_[_0x5072('0x4c')](_0x2d8363[_0x5072('0x48')],_0x2d8363[_0x5072('0x49')]);_0x5c6676[_0x5072('0x4d')]=_[_0x5072('0x4c')](_0x2d8363[_0x5072('0x48')],qs[_0x5072('0x69')](_0x5eb528[_0x5072('0x49')][_0x5072('0x69')]));_0x5c6676['attributes']=_0x5c6676[_0x5072('0x4d')][_0x5072('0x4e')]?_0x5c6676[_0x5072('0x4d')]:_0x2d8363['model'];if(!_0x5eb528[_0x5072('0x49')][_0x5072('0x4f')](_0x5072('0x50'))){_0x5c6676[_0x5072('0x30')]=qs[_0x5072('0x30')](_0x5eb528[_0x5072('0x49')][_0x5072('0x30')]);_0x5c6676[_0x5072('0x33')]=qs[_0x5072('0x33')](_0x5eb528['query'][_0x5072('0x33')]);}_0x5c6676[_0x5072('0x51')]=qs[_0x5072('0x52')](_0x5eb528[_0x5072('0x49')][_0x5072('0x52')]);_0x5c6676[_0x5072('0x53')]=qs[_0x5072('0x4b')](_[_0x5072('0x54')](_0x5eb528[_0x5072('0x49')],_0x2d8363['filters']));_0x5c6676['where'][_0x5072('0x64')]=_0x37c53d['id'];if(_0x5eb528[_0x5072('0x49')][_0x5072('0x55')]){_0x5c6676[_0x5072('0x53')]=_[_0x5072('0x56')](_0x5c6676[_0x5072('0x53')],{'$or':_[_0x5072('0x43')](_0x5c6676[_0x5072('0x4d')],function(_0x3af84e){var _0x23a668={};_0x23a668[_0x3af84e]={'$like':'%'+_0x5eb528[_0x5072('0x49')][_0x5072('0x55')]+'%'};return _0x23a668;})});}_0x5c6676=_[_0x5072('0x56')]({},_0x5c6676,_0x5eb528[_0x5072('0x57')]);return db[_0x5072('0x68')][_0x5072('0x32')]({'where':_0x5c6676['where']})[_0x5072('0x22')](function(_0x180122){_0x1888ab[_0x5072('0x32')]=_0x180122;if(_0x5eb528[_0x5072('0x49')]['includeAll']){_0x5c6676['include']=[{'all':!![]}];}return db[_0x5072('0x68')][_0x5072('0x6a')](_0x5c6676);})[_0x5072('0x22')](function(_0x1a7094){_0x1888ab[_0x5072('0x59')]=_0x1a7094;return _0x1888ab;});}})[_0x5072('0x22')](respondWithFilteredResult(_0x28ceb2,_0x5c6676))[_0x5072('0x5a')](handleError(_0x28ceb2,null));};exports[_0x5072('0x6b')]=function(_0x40f5fd,_0x3479ba,_0x925d21){return db[_0x5072('0x44')][_0x5072('0x60')]({'where':{'id':_0x40f5fd[_0x5072('0x5c')]['id']}})[_0x5072('0x22')](handleEntityNotFound(_0x3479ba,null))[_0x5072('0x22')](function(_0x3512ff){if(_0x3512ff){return _0x3512ff[_0x5072('0x6b')](_0x40f5fd[_0x5072('0x49')][_0x5072('0x6c')]);}})[_0x5072('0x22')](respondWithStatusCode(_0x3479ba,null))[_0x5072('0x5a')](handleError(_0x3479ba,null));};exports['addAnswer']=function(_0x1ab987,_0x1ddd10,_0x2e8626){if(_0x1ab987[_0x5072('0x61')]['id']){delete _0x1ab987[_0x5072('0x61')]['id'];}return db[_0x5072('0x44')][_0x5072('0x60')]({'where':{'id':_0x1ab987[_0x5072('0x5c')]['id']}})[_0x5072('0x22')](handleEntityNotFound(_0x1ddd10,null))[_0x5072('0x22')](function(_0x5739af){if(_0x5739af){_0x1ab987[_0x5072('0x61')]['MailAccountId']=_0x5739af['id'];return db[_0x5072('0x6d')]['create'](_0x1ab987[_0x5072('0x61')]);}})[_0x5072('0x22')](respondWithResult(_0x1ddd10,null))['catch'](handleError(_0x1ddd10,null));};exports['getAnswers']=function(_0x3053be,_0x24b734,_0x36a7f6){var _0x3619ff={'raw':![],'where':{}};var _0x3925d2={};var _0x42a312={'count':0x0,'rows':[]};return db[_0x5072('0x44')][_0x5072('0x67')]({'where':{'id':_0x3053be[_0x5072('0x5c')]['id']}})[_0x5072('0x22')](handleEntityNotFound(_0x24b734,null))['then'](function(_0x40dc20){if(_0x40dc20){_0x3925d2[_0x5072('0x48')]=_['keys'](db[_0x5072('0x6d')][_0x5072('0x45')]);_0x3925d2[_0x5072('0x49')]=_['keys'](_0x3053be[_0x5072('0x49')]);_0x3925d2['filters']=_[_0x5072('0x4c')](_0x3925d2[_0x5072('0x48')],_0x3925d2['query']);_0x3619ff[_0x5072('0x4d')]=_[_0x5072('0x4c')](_0x3925d2[_0x5072('0x48')],qs['fields'](_0x3053be[_0x5072('0x49')][_0x5072('0x69')]));_0x3619ff['attributes']=_0x3619ff[_0x5072('0x4d')][_0x5072('0x4e')]?_0x3619ff[_0x5072('0x4d')]:_0x3925d2[_0x5072('0x48')];if(!_0x3053be[_0x5072('0x49')][_0x5072('0x4f')](_0x5072('0x50'))){_0x3619ff[_0x5072('0x30')]=qs[_0x5072('0x30')](_0x3053be['query']['limit']);_0x3619ff[_0x5072('0x33')]=qs[_0x5072('0x33')](_0x3053be[_0x5072('0x49')][_0x5072('0x33')]);}_0x3619ff[_0x5072('0x51')]=qs[_0x5072('0x52')](_0x3053be[_0x5072('0x49')]['sort']);_0x3619ff[_0x5072('0x53')]=qs[_0x5072('0x4b')](_[_0x5072('0x54')](_0x3053be['query'],_0x3925d2[_0x5072('0x4b')]));_0x3619ff[_0x5072('0x53')][_0x5072('0x64')]=_0x40dc20['id'];if(_0x3053be['query'][_0x5072('0x55')]){_0x3619ff[_0x5072('0x53')]=_[_0x5072('0x56')](_0x3619ff[_0x5072('0x53')],{'$or':_[_0x5072('0x43')](_0x3619ff[_0x5072('0x4d')],function(_0x3917ea){var _0x3546dc={};_0x3546dc[_0x3917ea]={'$like':'%'+_0x3053be['query'][_0x5072('0x55')]+'%'};return _0x3546dc;})});}_0x3619ff=_[_0x5072('0x56')]({},_0x3619ff,_0x3053be[_0x5072('0x57')]);return db[_0x5072('0x6d')]['count']({'where':_0x3619ff['where']})['then'](function(_0x3b7cb3){_0x42a312['count']=_0x3b7cb3;if(_0x3053be[_0x5072('0x49')][_0x5072('0x5f')]){_0x3619ff[_0x5072('0x58')]=[{'all':!![]}];}return db[_0x5072('0x6d')][_0x5072('0x6a')](_0x3619ff);})[_0x5072('0x22')](function(_0x4ce1fc){_0x42a312[_0x5072('0x59')]=_0x4ce1fc;return _0x42a312;});}})[_0x5072('0x22')](respondWithFilteredResult(_0x24b734,_0x3619ff))['catch'](handleError(_0x24b734,null));};exports['removeAnswers']=function(_0x55dbdf,_0x9c3d08,_0x18b220){return db['MailAccount'][_0x5072('0x60')]({'where':{'id':_0x55dbdf[_0x5072('0x5c')]['id']}})[_0x5072('0x22')](handleEntityNotFound(_0x9c3d08,null))[_0x5072('0x22')](function(_0x52549a){if(_0x52549a){return _0x52549a[_0x5072('0x6e')](_0x55dbdf[_0x5072('0x49')][_0x5072('0x6c')]);}})[_0x5072('0x22')](respondWithStatusCode(_0x9c3d08,null))[_0x5072('0x5a')](handleError(_0x9c3d08,null));};exports[_0x5072('0x65')]=function(_0x57f3ba,_0x1c31f3){var _0x37d2b0={'name':_0x57f3ba[_0x5072('0x61')][_0x5072('0x3c')],'key':_0x57f3ba[_0x5072('0x61')]['key'],'email':_0x57f3ba[_0x5072('0x61')][_0x5072('0x6f')],'ListId':_0x57f3ba[_0x5072('0x61')][_0x5072('0x70')],'active':!_['isNil'](_0x57f3ba[_0x5072('0x61')][_0x5072('0x71')])?_0x57f3ba[_0x5072('0x61')]['active']:!![],'description':_0x57f3ba[_0x5072('0x61')]['description']||null,'Imap':{},'Smtp':{}};if(_[_0x5072('0x72')](_0x57f3ba[_0x5072('0x61')][_0x5072('0x73')])){if(_0x57f3ba[_0x5072('0x61')][_0x5072('0x74')]){_0x37d2b0[_0x5072('0x40')][_0x5072('0x75')]=_0x37d2b0[_0x5072('0x41')][_0x5072('0x75')]=_0x57f3ba['body']['cuser'];_0x37d2b0['Imap']['password']=_0x37d2b0[_0x5072('0x41')][_0x5072('0x76')]=_0x57f3ba[_0x5072('0x61')][_0x5072('0x77')];}else{_0x37d2b0['Imap'][_0x5072('0x78')]=_0x37d2b0[_0x5072('0x41')][_0x5072('0x78')]=![];}_0x37d2b0[_0x5072('0x40')]['host']=_0x57f3ba['body'][_0x5072('0x40')][_0x5072('0x79')];_0x37d2b0[_0x5072('0x40')][_0x5072('0x7a')]=_0x57f3ba[_0x5072('0x61')][_0x5072('0x40')]['port'];_0x37d2b0[_0x5072('0x41')][_0x5072('0x79')]=_0x57f3ba[_0x5072('0x61')]['Smtp'][_0x5072('0x79')];_0x37d2b0['Smtp'][_0x5072('0x7a')]=_0x57f3ba[_0x5072('0x61')][_0x5072('0x41')][_0x5072('0x7a')];}else{_0x37d2b0['Imap']['service']=_0x37d2b0[_0x5072('0x41')]['service']=_0x57f3ba['body'][_0x5072('0x73')];_0x37d2b0['Imap']['user']=_0x37d2b0[_0x5072('0x41')][_0x5072('0x75')]=_0x57f3ba[_0x5072('0x61')][_0x5072('0x7b')];_0x37d2b0[_0x5072('0x40')][_0x5072('0x7c')]=_0x37d2b0[_0x5072('0x41')][_0x5072('0x76')]=_0x57f3ba[_0x5072('0x61')][_0x5072('0x77')];}return db[_0x5072('0x44')]['create'](_0x37d2b0,{'include':[{'model':db[_0x5072('0x5d')],'as':_0x5072('0x41')},{'model':db['MailServerIn'],'as':_0x5072('0x40')}]})[_0x5072('0x22')](function(_0x487f1d){var _0x1e7ce0=_0x57f3ba[_0x5072('0x75')][_0x5072('0x7d')]({'plain':!![]});if(!_0x1e7ce0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1e7ce0['role']===_0x5072('0x75')){var _0x1f208f=_0x487f1d['get']({'plain':!![]});return db[_0x5072('0x7e')][_0x5072('0x60')]({'where':{'name':_0x5072('0x39'),'userProfileId':_0x1e7ce0[_0x5072('0x7f')]},'raw':!![]})[_0x5072('0x22')](function(_0x11f297){if(_0x11f297&&_0x11f297[_0x5072('0x80')]===0x0){return db[_0x5072('0x3a')][_0x5072('0x65')]({'name':_0x1f208f[_0x5072('0x3c')],'resourceId':_0x1f208f['id'],'type':_0x11f297[_0x5072('0x3c')],'sectionId':_0x11f297['id']},{})['then'](function(){return _0x487f1d;});}else{return _0x487f1d;}})[_0x5072('0x5a')](function(_0x3ca72a){logger[_0x5072('0x29')](_0x5072('0x81'),_0x3ca72a);throw _0x3ca72a;});}return _0x487f1d;})[_0x5072('0x22')](respondWithResult(_0x1c31f3,0xc9))[_0x5072('0x5a')](handleError(_0x1c31f3,null));};exports[_0x5072('0x82')]=function(_0x2e471b,_0x4cd581,_0x1dea30){return db[_0x5072('0x44')][_0x5072('0x67')]({'where':{'id':_0x2e471b[_0x5072('0x5c')]['id']}})[_0x5072('0x22')](handleEntityNotFound(_0x4cd581,null))[_0x5072('0x22')](function(_0x9658a5){if(_0x9658a5){return _0x9658a5[_0x5072('0x82')]();}return null;})[_0x5072('0x22')](respondWithResult(_0x4cd581,null))[_0x5072('0x5a')](handleError(_0x4cd581,null));};exports[_0x5072('0x83')]=function(_0x11074a,_0x464eaa,_0x46c2dd){if(_0x11074a['body']['id']){delete _0x11074a[_0x5072('0x61')]['id'];}return db[_0x5072('0x44')]['find']({'where':{'id':_0x11074a[_0x5072('0x5c')]['id']}})[_0x5072('0x22')](handleEntityNotFound(_0x464eaa,null))[_0x5072('0x22')](function(_0x14acd3){if(_0x14acd3){_0x11074a[_0x5072('0x61')]['MailAccountId']=_0x14acd3['id'];return db[_0x5072('0x3f')][_0x5072('0x65')](_0x11074a['body']);}})['then'](respondWithResult(_0x464eaa,null))[_0x5072('0x5a')](handleError(_0x464eaa,null));};exports[_0x5072('0x84')]=function(_0x5cbc70,_0x4c837a,_0x5a5e6e){return db['MailAccount']['findOne']({'where':{'id':_0x5cbc70[_0x5072('0x5c')]['id']}})[_0x5072('0x22')](handleEntityNotFound(_0x4c837a,null))['then'](function(_0x30c194){if(_0x30c194){return _0x30c194[_0x5072('0x85')](null);}return null;})[_0x5072('0x22')](respondWithStatusCode(_0x4c837a,null))[_0x5072('0x5a')](handleError(_0x4c837a,null));};exports[_0x5072('0x86')]=function(_0xf1afc2,_0x9803a6,_0x38e320){return db[_0x5072('0x44')]['findOne']({'where':{'id':_0xf1afc2[_0x5072('0x5c')]['id']}})[_0x5072('0x22')](handleEntityNotFound(_0x9803a6,null))['then'](function(_0x3cef49){if(_0x3cef49){return _0x3cef49[_0x5072('0x86')]();}return null;})['then'](respondWithResult(_0x9803a6,null))[_0x5072('0x5a')](handleError(_0x9803a6,null));};exports[_0x5072('0x87')]=function(_0xa3061c,_0x263524,_0x5ccac8){if(_0xa3061c['body']['id']){delete _0xa3061c[_0x5072('0x61')]['id'];}return db[_0x5072('0x44')][_0x5072('0x60')]({'where':{'id':_0xa3061c[_0x5072('0x5c')]['id']}})[_0x5072('0x22')](handleEntityNotFound(_0x263524,null))[_0x5072('0x22')](function(_0x3d3705){if(_0x3d3705){_0xa3061c[_0x5072('0x61')]['MailAccountId']=_0x3d3705['id'];return db[_0x5072('0x5d')][_0x5072('0x65')](_0xa3061c[_0x5072('0x61')]);}})[_0x5072('0x22')](respondWithResult(_0x263524,null))[_0x5072('0x5a')](handleError(_0x263524,null));};exports[_0x5072('0x88')]=function(_0x4555eb,_0x64d89c,_0x11ccca){return db[_0x5072('0x44')][_0x5072('0x67')]({'where':{'id':_0x4555eb[_0x5072('0x5c')]['id']}})[_0x5072('0x22')](handleEntityNotFound(_0x64d89c,null))[_0x5072('0x22')](function(_0x3ebc3c){if(_0x3ebc3c){return _0x3ebc3c[_0x5072('0x89')](null);}return null;})[_0x5072('0x22')](respondWithStatusCode(_0x64d89c,null))[_0x5072('0x5a')](handleError(_0x64d89c,null));};exports[_0x5072('0x8a')]=function(_0x22314e,_0x28590e,_0x1842db){return db[_0x5072('0x8b')][_0x5072('0x60')]({'where':{'id':_0x22314e[_0x5072('0x5c')]['id']}})['then'](handleEntityNotFound(_0x28590e,null))['then'](function(_0x5b4f23){if(_0x5b4f23){return _0x5b4f23['addInteraction'](_0x22314e[_0x5072('0x61')][_0x5072('0x6c')],_[_0x5072('0x8c')](_0x22314e[_0x5072('0x61')],[_0x5072('0x6c'),'id'])||{});}})[_0x5072('0x22')](respondWithResult(_0x28590e,null))[_0x5072('0x5a')](handleError(_0x28590e,null));};exports['getInteractions']=function(_0x18317c,_0x5cb7e4,_0x4a44df){var _0x36c53f={'raw':![],'where':{}};var _0x2be3f8={};var _0x1345eb={'count':0x0,'rows':[]};return db[_0x5072('0x44')][_0x5072('0x67')]({'where':{'id':_0x18317c[_0x5072('0x5c')]['id']}})[_0x5072('0x22')](handleEntityNotFound(_0x5cb7e4,null))['then'](function(_0x3c4590){if(_0x3c4590){_0x2be3f8['model']=_['keys'](db[_0x5072('0x8b')][_0x5072('0x45')]);_0x2be3f8[_0x5072('0x49')]=_[_0x5072('0x4a')](_0x18317c['query']);_0x2be3f8[_0x5072('0x4b')]=_[_0x5072('0x4c')](_0x2be3f8[_0x5072('0x48')],_0x2be3f8[_0x5072('0x49')]);_0x36c53f[_0x5072('0x4d')]=_[_0x5072('0x4c')](_0x2be3f8[_0x5072('0x48')],qs[_0x5072('0x69')](_0x18317c[_0x5072('0x49')][_0x5072('0x69')]));_0x36c53f[_0x5072('0x4d')]=_0x36c53f[_0x5072('0x4d')]['length']?_0x36c53f['attributes']:_0x2be3f8[_0x5072('0x48')];if(!_0x18317c[_0x5072('0x49')][_0x5072('0x4f')](_0x5072('0x50'))){_0x36c53f[_0x5072('0x30')]=qs['limit'](_0x18317c[_0x5072('0x49')][_0x5072('0x30')]);_0x36c53f[_0x5072('0x33')]=qs[_0x5072('0x33')](_0x18317c[_0x5072('0x49')]['offset']);}_0x36c53f['order']=qs['sort'](_0x18317c['query'][_0x5072('0x52')]);_0x36c53f[_0x5072('0x53')]=qs[_0x5072('0x4b')](_[_0x5072('0x54')](_0x18317c[_0x5072('0x49')],_0x2be3f8['filters']));_0x36c53f['where'][_0x5072('0x64')]=_0x3c4590['id'];if(_0x18317c[_0x5072('0x49')][_0x5072('0x55')]){_0x36c53f[_0x5072('0x53')]=_['merge'](_0x36c53f[_0x5072('0x53')],{'$or':_[_0x5072('0x43')](_0x36c53f[_0x5072('0x4d')],function(_0x4a1e18){var _0x994863={};_0x994863[_0x4a1e18]={'$like':'%'+_0x18317c['query'][_0x5072('0x55')]+'%'};return _0x994863;})});}_0x36c53f=_[_0x5072('0x56')]({},_0x36c53f,_0x18317c['options']);return db['MailInteraction'][_0x5072('0x32')]({'where':_0x36c53f['where']})[_0x5072('0x22')](function(_0x30b648){_0x1345eb[_0x5072('0x32')]=_0x30b648;if(_0x18317c[_0x5072('0x49')][_0x5072('0x5f')]){_0x36c53f[_0x5072('0x58')]=[{'model':db[_0x5072('0x8d')],'as':'Contact','required':![]},{'model':db[_0x5072('0x8e')],'as':'Owner','attributes':[_0x5072('0x3c'),_0x5072('0x8f'),_0x5072('0x90')],'required':![]},{'model':db['Tag'],'as':_0x5072('0x91'),'attributes':['id','name','color'],'where':_0x18317c[_0x5072('0x49')][_0x5072('0x92')]?{'id':_0x18317c[_0x5072('0x49')]['tag']}:undefined,'required':_0x18317c[_0x5072('0x49')][_0x5072('0x92')]?!![]:![]}];}return db[_0x5072('0x8b')][_0x5072('0x6a')](_0x36c53f);})['then'](function(_0x366c15){_0x1345eb[_0x5072('0x59')]=_0x366c15;return _0x1345eb;});}})['then'](respondWithFilteredResult(_0x5cb7e4,_0x36c53f))['catch'](handleError(_0x5cb7e4,null));};exports['addApplications']=function(_0x545ceb,_0x33896a,_0x2e28){return db[_0x5072('0x44')][_0x5072('0x67')]({'where':{'id':_0x545ceb[_0x5072('0x5c')]['id']}})['then'](handleEntityNotFound(_0x33896a,null))[_0x5072('0x22')](function(_0x11b138){if(_0x11b138){return db[_0x5072('0x93')]['transaction'](function(_0x1d78b9){return db['MailApplication'][_0x5072('0x38')]({'where':{'MailAccountId':_0x545ceb[_0x5072('0x5c')]['id']},'transaction':_0x1d78b9})[_0x5072('0x22')](function(_0x5c4824){var _0x3b7ca6=_['map'](_0x545ceb[_0x5072('0x61')],function(_0x4cb183){_0x4cb183[_0x5072('0x64')]=_0x545ceb[_0x5072('0x5c')]['id'];return _0x4cb183;});return db['MailApplication']['bulkCreate'](_0x3b7ca6,{'transaction':_0x1d78b9});});})[_0x5072('0x22')](function(){return db[_0x5072('0x94')]['findAndCountAll']({'where':{'MailAccountId':_0x545ceb[_0x5072('0x5c')]['id']},'order':_0x5072('0x95')});});}})[_0x5072('0x22')](respondWithResult(_0x33896a,null))[_0x5072('0x5a')](handleError(_0x33896a,null));};exports['getApplications']=function(_0x1f5398,_0x320e62,_0x2483bd){var _0xa5d6c4={};var _0xf7df3={};var _0x154c60;var _0x555218;return db[_0x5072('0x44')][_0x5072('0x67')]({'where':{'id':_0x1f5398['params']['id']}})['then'](handleEntityNotFound(_0x320e62,null))[_0x5072('0x22')](function(_0x558c91){if(_0x558c91){_0x154c60=_0x558c91;_0xf7df3[_0x5072('0x48')]=_['keys'](db['MailApplication'][_0x5072('0x45')]);_0xf7df3['query']=_[_0x5072('0x4a')](_0x1f5398[_0x5072('0x49')]);_0xf7df3[_0x5072('0x4b')]=_[_0x5072('0x4c')](_0xf7df3[_0x5072('0x48')],_0xf7df3[_0x5072('0x49')]);_0xa5d6c4['attributes']=_['intersection'](_0xf7df3[_0x5072('0x48')],qs[_0x5072('0x69')](_0x1f5398[_0x5072('0x49')][_0x5072('0x69')]));_0xa5d6c4['attributes']=_0xa5d6c4[_0x5072('0x4d')][_0x5072('0x4e')]?_0xa5d6c4['attributes']:_0xf7df3[_0x5072('0x48')];_0xa5d6c4[_0x5072('0x51')]=qs[_0x5072('0x52')](_0x1f5398[_0x5072('0x49')][_0x5072('0x52')]);_0xa5d6c4[_0x5072('0x53')]=qs['filters'](_[_0x5072('0x54')](_0x1f5398[_0x5072('0x49')],_0xf7df3['filters']));if(_0x1f5398[_0x5072('0x49')][_0x5072('0x55')]){_0xa5d6c4[_0x5072('0x53')]=_[_0x5072('0x56')](_0xa5d6c4['where'],{'$or':_[_0x5072('0x43')](_0xa5d6c4[_0x5072('0x4d')],function(_0x57da5a){var _0x296282={};_0x296282[_0x57da5a]={'$like':'%'+_0x1f5398[_0x5072('0x49')][_0x5072('0x55')]+'%'};return _0x296282;})});}_0xa5d6c4=_['merge']({},_0xa5d6c4,_0x1f5398[_0x5072('0x57')]);return _0x154c60[_0x5072('0x96')](_0xa5d6c4);}})[_0x5072('0x22')](function(_0xc6d309){if(_0xc6d309){_0x555218=_0xc6d309[_0x5072('0x4e')];if(!_0x1f5398[_0x5072('0x49')][_0x5072('0x4f')]('nolimit')){_0xa5d6c4[_0x5072('0x30')]=qs[_0x5072('0x30')](_0x1f5398[_0x5072('0x49')][_0x5072('0x30')]);_0xa5d6c4['offset']=qs[_0x5072('0x33')](_0x1f5398[_0x5072('0x49')][_0x5072('0x33')]);}return _0x154c60['getApplications'](_0xa5d6c4);}})[_0x5072('0x22')](function(_0x3ffd52){if(_0x3ffd52){return _0x3ffd52?{'count':_0x555218,'rows':_0x3ffd52}:null;}})[_0x5072('0x22')](respondWithResult(_0x320e62,null))[_0x5072('0x5a')](handleError(_0x320e62,null));};exports[_0x5072('0x97')]=function(_0x431af8,_0x4cd0da,_0x43981c){var _0xbf5869={'raw':!![],'where':{}};var _0x26e482={};var _0x181fc2={'count':0x0,'rows':[]};return db[_0x5072('0x44')][_0x5072('0x67')]({'where':{'id':_0x431af8[_0x5072('0x5c')]['id']}})[_0x5072('0x22')](handleEntityNotFound(_0x4cd0da,null))[_0x5072('0x22')](function(_0x42244a){if(_0x42244a){_0x26e482[_0x5072('0x48')]=_['keys'](db[_0x5072('0x98')][_0x5072('0x45')]);_0x26e482[_0x5072('0x49')]=_[_0x5072('0x4a')](_0x431af8[_0x5072('0x49')]);_0x26e482[_0x5072('0x4b')]=_['intersection'](_0x26e482[_0x5072('0x48')],_0x26e482[_0x5072('0x49')]);_0xbf5869[_0x5072('0x4d')]=_[_0x5072('0x4c')](_0x26e482[_0x5072('0x48')],qs[_0x5072('0x69')](_0x431af8[_0x5072('0x49')]['fields']));_0xbf5869['attributes']=_0xbf5869[_0x5072('0x4d')]['length']?_0xbf5869[_0x5072('0x4d')]:_0x26e482[_0x5072('0x48')];if(!_0x431af8[_0x5072('0x49')]['hasOwnProperty']('nolimit')){_0xbf5869[_0x5072('0x30')]=qs[_0x5072('0x30')](_0x431af8[_0x5072('0x49')][_0x5072('0x30')]);_0xbf5869['offset']=qs['offset'](_0x431af8[_0x5072('0x49')][_0x5072('0x33')]);}_0xbf5869['order']=qs['sort'](_0x431af8['query'][_0x5072('0x52')]);_0xbf5869['where']=qs[_0x5072('0x4b')](_[_0x5072('0x54')](_0x431af8[_0x5072('0x49')],_0x26e482[_0x5072('0x4b')]));_0xbf5869[_0x5072('0x53')]['MailAccountId']=_0x42244a['id'];if(_0x431af8[_0x5072('0x49')]['filter']){_0xbf5869[_0x5072('0x53')]=_[_0x5072('0x56')](_0xbf5869[_0x5072('0x53')],{'$or':_['map'](_0xbf5869['attributes'],function(_0x22be3c){var _0x2a5c99={};_0x2a5c99[_0x22be3c]={'$like':'%'+_0x431af8[_0x5072('0x49')][_0x5072('0x55')]+'%'};return _0x2a5c99;})});}if(_0x431af8[_0x5072('0x49')]['$gte']){var _0x4be2b0=_0x431af8[_0x5072('0x49')]['$gte'][_0x5072('0x99')](',');var _0x309013={};_0x309013[_0x4be2b0[0x0]]={'$gte':moment(_0x4be2b0[0x1])['format'](_0x5072('0x9a'))};_0xbf5869[_0x5072('0x53')]=_[_0x5072('0x56')](_0xbf5869['where'],_0x309013);}_0xbf5869=_[_0x5072('0x56')]({},_0xbf5869,_0x431af8[_0x5072('0x57')]);return db['MailMessage'][_0x5072('0x32')]({'where':_0xbf5869[_0x5072('0x53')]})[_0x5072('0x22')](function(_0xe1419){_0x181fc2[_0x5072('0x32')]=_0xe1419;if(_0x431af8['query'][_0x5072('0x5f')]){_0xbf5869[_0x5072('0x58')]=[{'all':!![]}];}return db[_0x5072('0x98')]['findAll'](_0xbf5869);})['then'](function(_0x11cccc){if(_0x431af8['query'][_0x5072('0x9b')]===_0x5072('0x9c')){for(var _0x110743=0x0;_0x110743<_0x11cccc['length'];_0x110743++){_0x11cccc[_0x110743][_0x5072('0x61')]=juice(_0x11cccc[_0x110743][_0x5072('0x61')]);}}_0x181fc2[_0x5072('0x59')]=_0x11cccc;return _0x181fc2;});}})['then'](respondWithFilteredResult(_0x4cd0da,_0xbf5869))[_0x5072('0x5a')](handleError(_0x4cd0da,null));};exports[_0x5072('0x3d')]=function(_0xdf6c46,_0x3d7580,_0x5d2a81){var _0x252274,_0x50b385={},_0x1a3530;if(_0xdf6c46[_0x5072('0x61')]['to']){_0x1a3530=_0xdf6c46[_0x5072('0x61')]['to'][_0x5072('0x99')](',')[0x0];}return db[_0x5072('0x44')][_0x5072('0x60')]({'where':{'id':_0xdf6c46[_0x5072('0x5c')]['id']},'include':[{'model':db[_0x5072('0x9d')],'as':_0x5072('0x9e'),'include':[{'model':db[_0x5072('0x8d')],'as':'Contacts','where':{'email':_0x1a3530},'limit':0x1,'order':[[_0x5072('0x9f'),'DESC']]}]},{'model':db['MailServerOut'],'as':'Smtp','raw':!![]}]})[_0x5072('0x22')](handleEntityNotFound(_0x3d7580,null))[_0x5072('0x22')](function(_0x1f6e8a){if(_0x1f6e8a){_0x252274=_0x1f6e8a;if(_0x1f6e8a[_0x5072('0x41')]){if(_[_0x5072('0x72')](_0xdf6c46[_0x5072('0x61')][_0x5072('0xa0')])){_0xdf6c46[_0x5072('0x61')]['from']=util[_0x5072('0xa1')](_0x5072('0xa2'),_0x1f6e8a[_0x5072('0x3c')],_0x1f6e8a[_0x5072('0x6f')]||_0x1f6e8a[_0x5072('0x41')][_0x5072('0x75')]);}if(_0xdf6c46[_0x5072('0x61')][_0x5072('0xa3')]&&_0xdf6c46[_0x5072('0x61')]['attachments'][_0x5072('0x4e')]){for(var _0x34769f=0x0;_0x34769f<_0xdf6c46['body'][_0x5072('0xa3')][_0x5072('0x4e')];_0x34769f+=0x1){_0xdf6c46[_0x5072('0x61')][_0x5072('0xa3')][_0x34769f]={'filename':_0xdf6c46[_0x5072('0x61')]['attachments'][_0x34769f][_0x5072('0x3c')],'path':path[_0x5072('0xa4')](config[_0x5072('0xa5')],_0x5072('0xa6'),_0xdf6c46['body'][_0x5072('0xa3')][_0x34769f][_0x5072('0xa7')])};}}var _0x5c6ac6={'tls':{'rejectUnauthorized':![]}};if(_[_0x5072('0x72')](_0x1f6e8a[_0x5072('0x41')]['service'])){if(_0x1f6e8a[_0x5072('0x41')]['authentication']){_0x5c6ac6[_0x5072('0xa8')]={'user':_0x1f6e8a['Smtp'][_0x5072('0x75')],'pass':_0x1f6e8a[_0x5072('0x41')][_0x5072('0x76')]};}_0x5c6ac6['host']=_0x1f6e8a[_0x5072('0x41')]['host'];_0x5c6ac6[_0x5072('0x7a')]=_0x1f6e8a[_0x5072('0x41')][_0x5072('0x7a')];_0x5c6ac6[_0x5072('0xa9')]=_0x1f6e8a[_0x5072('0x41')][_0x5072('0xa9')];}else{_0x5c6ac6['service']=_0x1f6e8a[_0x5072('0x41')][_0x5072('0xaa')];_0x5c6ac6[_0x5072('0xa8')]={'user':_0x1f6e8a[_0x5072('0x41')][_0x5072('0x75')],'pass':_0x1f6e8a[_0x5072('0x41')][_0x5072('0x76')]};}return respondWithRpcPromise(_0x5072('0xab'),_0x5072('0xac'),{'account':_0x5c6ac6,'message':_0xdf6c46[_0x5072('0x61')]});}else{throw new Error('List\x20not\x20found');}}})[_0x5072('0x22')](function(_0x6bba1e){if(_0x6bba1e){_0x50b385=_0x6bba1e;if(_0x252274[_0x5072('0x9e')]){if(_0x252274[_0x5072('0x9e')][_0x5072('0xad')][_0x5072('0x4e')]){return _0x252274[_0x5072('0x9e')]['Contacts'][0x0];}else{return db[_0x5072('0x8d')][_0x5072('0x65')](_[_0x5072('0x19')](_0xdf6c46['body'],{'firstName':_0xdf6c46['body']['to'],'email':_0xdf6c46[_0x5072('0x61')]['to'],'phone':_0xdf6c46[_0x5072('0x61')]['to'],'ListId':_0x252274[_0x5072('0x70')]}));}}else{throw new Error(_0x5072('0xae'));}}})[_0x5072('0x22')](function(_0x38ef35){if(_0x38ef35){var _0x2ed64a={'UserId':_0xdf6c46['user']['id'],'ContactId':_0x38ef35['id'],'MailAccountId':_0x252274['id'],'inReplyTo':_0x50b385['messageId'],'to':_0xdf6c46[_0x5072('0x61')][_0x5072('0xa0')],'cc':_0xdf6c46[_0x5072('0x61')]['cc'],'subject':_0xdf6c46[_0x5072('0x61')]['subject'],'attach':_0xdf6c46[_0x5072('0x61')]['attach'],'firstMsgDirection':'out','lastMsgAt':moment()[_0x5072('0xa1')](_0x5072('0x9a')),'lastMsgDirection':'out','Messages':[_['merge'](_0xdf6c46['body'],{'messageId':_0x50b385[_0x5072('0xaf')],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'read':!![],'MailAccountId':_0x252274['id'],'UserId':_0xdf6c46[_0x5072('0x75')]['id'],'ContactId':_0x38ef35['id']})]};if(_0xdf6c46[_0x5072('0x61')][_0x5072('0xb0')]){_0x2ed64a=_['merge'](_0x2ed64a,_0xdf6c46['body'][_0x5072('0xb0')]);}return db[_0x5072('0x8b')][_0x5072('0x65')](_0x2ed64a,{'include':[{'model':db[_0x5072('0x98')],'as':'Messages'}]});}})['then'](respondWithResult(_0x3d7580,null))[_0x5072('0x5a')](handleError(_0x3d7580,null));};exports['verifySmtp']=function(_0x2cad15,_0x477c03,_0x3cb942){return db[_0x5072('0x44')][_0x5072('0x60')]({'where':{'id':_0x2cad15[_0x5072('0x5c')]['id']},'include':[{'model':db[_0x5072('0x5d')],'as':_0x5072('0x41'),'raw':!![]}]})[_0x5072('0x22')](handleEntityNotFound(_0x477c03,null))[_0x5072('0x22')](function(_0x4d86d5){if(_0x4d86d5&&_0x4d86d5[_0x5072('0x41')]){var _0x54fbd5={'id':_0x4d86d5['id'],'tls':{'rejectUnauthorized':![]}};if(_0x4d86d5['Smtp'][_0x5072('0xaa')]){_0x54fbd5[_0x5072('0xaa')]=_0x4d86d5[_0x5072('0x41')][_0x5072('0xaa')];}else{_0x54fbd5[_0x5072('0x79')]=_0x4d86d5[_0x5072('0x41')][_0x5072('0x79')];_0x54fbd5[_0x5072('0x7a')]=_0x4d86d5[_0x5072('0x41')][_0x5072('0x7a')];_0x54fbd5[_0x5072('0xa9')]=_0x4d86d5['Smtp'][_0x5072('0xa9')];}if(_0x4d86d5[_0x5072('0x41')][_0x5072('0x78')]){_0x54fbd5[_0x5072('0xa8')]={'user':_0x4d86d5['Smtp'][_0x5072('0x75')],'pass':_0x4d86d5[_0x5072('0x41')][_0x5072('0x76')]};}return respondWithRpcPromise(_0x5072('0xb1'),_0x5072('0xb2'),{'account':_0x54fbd5});}})[_0x5072('0x22')](respondWithResult(_0x477c03,null))['catch'](handleError(_0x477c03,null));};exports[_0x5072('0x38')]=function(_0x3c1faa,_0x4a099d){return db[_0x5072('0x44')][_0x5072('0x60')]({'where':{'id':_0x3c1faa['params']['id']}})['then'](handleEntityNotFound(_0x4a099d,null))[_0x5072('0x22')](function(_0x508c96){if(_0x508c96&&_0x508c96['service']){throw new db[(_0x5072('0xb3'))]['ValidationError'](_0x5072('0xb4'));}return _0x508c96;})['then'](removeEntity(_0x4a099d,null))[_0x5072('0x5a')](handleError(_0x4a099d,null));};exports[_0x5072('0xb5')]=function(_0x4f1121,_0x1473ec,_0x5a9055){return db[_0x5072('0x44')][_0x5072('0x60')]({'where':{'id':_0x4f1121[_0x5072('0x5c')]['id']}})[_0x5072('0x22')](handleEntityNotFound(_0x1473ec,null))[_0x5072('0x22')](function(_0x55f12a){if(_0x55f12a){return _0x55f12a[_0x5072('0xb5')](_0x4f1121[_0x5072('0x61')][_0x5072('0x6c')],_[_0x5072('0x8c')](_0x4f1121[_0x5072('0x61')],[_0x5072('0x6c'),'id'])||{})[_0x5072('0xb6')](function(_0x3cf975){for(var _0x29c711=0x0;_0x29c711<_0x4f1121[_0x5072('0x61')][_0x5072('0x6c')]['length'];_0x29c711+=0x1){socket[_0x5072('0xb7')](_0x5072('0xb8'),{'UserId':Number(_0x4f1121[_0x5072('0x61')]['ids'][_0x29c711]),'MailAccountId':Number(_0x4f1121[_0x5072('0x5c')]['id'])});}return _0x3cf975;});}})[_0x5072('0x22')](respondWithResult(_0x1473ec,null))[_0x5072('0x5a')](handleError(_0x1473ec,null));};exports[_0x5072('0xb9')]=function(_0x1964b2,_0x1f1b36,_0x5e5722){return db[_0x5072('0x44')][_0x5072('0x60')]({'where':{'id':_0x1964b2[_0x5072('0x5c')]['id']}})['then'](handleEntityNotFound(_0x1f1b36,null))[_0x5072('0x22')](function(_0x29df31){if(_0x29df31){return _0x29df31[_0x5072('0xb9')](_0x1964b2[_0x5072('0x49')][_0x5072('0x6c')])[_0x5072('0x22')](function(){if(_[_0x5072('0xba')](_0x1964b2['query'][_0x5072('0x6c')])){for(var _0x21a58f=0x0;_0x21a58f<_0x1964b2[_0x5072('0x49')][_0x5072('0x6c')][_0x5072('0x4e')];_0x21a58f+=0x1){socket[_0x5072('0xb7')](_0x5072('0xbb'),{'UserId':Number(_0x1964b2[_0x5072('0x49')]['ids'][_0x21a58f]),'MailAccountId':Number(_0x1964b2[_0x5072('0x5c')]['id'])});}}else{socket[_0x5072('0xb7')]('userMailAccount:remove',{'UserId':Number(_0x1964b2[_0x5072('0x49')][_0x5072('0x6c')]),'MailAccountId':Number(_0x1964b2['params']['id'])});}});}})[_0x5072('0x22')](respondWithStatusCode(_0x1f1b36,null))['catch'](handleError(_0x1f1b36,null));};exports[_0x5072('0xbc')]=function(_0x20fbae,_0x364bef,_0x12b34c){var _0x1987dd={};var _0x295791={};var _0x1d47f5;var _0x5ba18a;return db['MailAccount']['findOne']({'where':{'id':_0x20fbae[_0x5072('0x5c')]['id']}})[_0x5072('0x22')](handleEntityNotFound(_0x364bef,null))[_0x5072('0x22')](function(_0x42ce6d){if(_0x42ce6d){_0x1d47f5=_0x42ce6d;_0x295791[_0x5072('0x48')]=_['keys'](db['User'][_0x5072('0x45')]);_0x295791[_0x5072('0x49')]=_[_0x5072('0x4a')](_0x20fbae[_0x5072('0x49')]);_0x295791[_0x5072('0x4b')]=_[_0x5072('0x4c')](_0x295791[_0x5072('0x48')],_0x295791['query']);_0x1987dd['attributes']=_[_0x5072('0x4c')](_0x295791[_0x5072('0x48')],qs['fields'](_0x20fbae[_0x5072('0x49')][_0x5072('0x69')]));_0x1987dd[_0x5072('0x4d')]=_0x1987dd[_0x5072('0x4d')][_0x5072('0x4e')]?_0x1987dd['attributes']:_0x295791[_0x5072('0x48')];_0x1987dd['order']=qs['sort'](_0x20fbae['query'][_0x5072('0x52')]);_0x1987dd[_0x5072('0x53')]=qs[_0x5072('0x4b')](_['pick'](_0x20fbae[_0x5072('0x49')],_0x295791[_0x5072('0x4b')]));if(_0x20fbae['query'][_0x5072('0x55')]){_0x1987dd[_0x5072('0x53')]=_[_0x5072('0x56')](_0x1987dd['where'],{'$or':_[_0x5072('0x43')](_0x1987dd[_0x5072('0x4d')],function(_0x14a60e){var _0x2c494d={};_0x2c494d[_0x14a60e]={'$like':'%'+_0x20fbae[_0x5072('0x49')][_0x5072('0x55')]+'%'};return _0x2c494d;})});}_0x1987dd=_[_0x5072('0x56')]({},_0x1987dd,_0x20fbae[_0x5072('0x57')]);return _0x1d47f5[_0x5072('0xbc')](_0x1987dd);}})[_0x5072('0x22')](function(_0x3b803f){if(_0x3b803f){_0x5ba18a=_0x3b803f[_0x5072('0x4e')];if(!_0x20fbae[_0x5072('0x49')][_0x5072('0x4f')](_0x5072('0x50'))){_0x1987dd[_0x5072('0x30')]=qs[_0x5072('0x30')](_0x20fbae[_0x5072('0x49')]['limit']);_0x1987dd[_0x5072('0x33')]=qs[_0x5072('0x33')](_0x20fbae[_0x5072('0x49')][_0x5072('0x33')]);}return _0x1d47f5[_0x5072('0xbc')](_0x1987dd);}})['then'](function(_0x133d04){if(_0x133d04){return _0x133d04?{'count':_0x5ba18a,'rows':_0x133d04}:null;}})[_0x5072('0x22')](respondWithResult(_0x364bef,null))['catch'](handleError(_0x364bef,null));};
\ No newline at end of file
index 7ab1b14..987a2ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf693=['remove','emit','hasOwnProperty','hook','exports','../../mysqldb','MailAccount','setMaxListeners','save','update'];(function(_0x281799,_0x14d871){var _0x1178be=function(_0x1f8db0){while(--_0x1f8db0){_0x281799['push'](_0x281799['shift']());}};_0x1178be(++_0x14d871);}(_0xf693,0x181));var _0x3f69=function(_0x4ff1ce,_0x4f0977){_0x4ff1ce=_0x4ff1ce-0x0;var _0xa36150=_0xf693[_0x4ff1ce];return _0xa36150;};'use strict';var EventEmitter=require('events');var MailAccount=require(_0x3f69('0x0'))['db'][_0x3f69('0x1')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x3f69('0x2')](0x0);var events={'afterCreate':_0x3f69('0x3'),'afterUpdate':_0x3f69('0x4'),'afterDestroy':_0x3f69('0x5')};function emitEvent(_0x414ca5){return function(_0x527646,_0xf2fdd8,_0x300282){MailAccountEvents[_0x3f69('0x6')](_0x414ca5+':'+_0x527646['id'],_0x527646);MailAccountEvents[_0x3f69('0x6')](_0x414ca5,_0x527646);_0x300282(null);};}for(var e in events){if(events[_0x3f69('0x7')](e)){var event=events[e];MailAccount[_0x3f69('0x8')](e,emitEvent(event));}}module[_0x3f69('0x9')]=MailAccountEvents;
\ No newline at end of file
+var _0xc4aa=['../../mysqldb','MailAccount','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','events'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x3d42d8,_0x4cffaa){_0x3d42d8=_0x3d42d8-0x0;var _0x27fc41=_0xc4aa[_0x3d42d8];return _0x27fc41;};'use strict';var EventEmitter=require(_0xac4a('0x0'));var MailAccount=require(_0xac4a('0x1'))['db'][_0xac4a('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0xac4a('0x3')](0x0);var events={'afterCreate':_0xac4a('0x4'),'afterUpdate':_0xac4a('0x5'),'afterDestroy':'remove'};function emitEvent(_0x5cda73){return function(_0x47d4f6,_0x2f48ed,_0x15b967){MailAccountEvents[_0xac4a('0x6')](_0x5cda73+':'+_0x47d4f6['id'],_0x47d4f6);MailAccountEvents[_0xac4a('0x6')](_0x5cda73,_0x47d4f6);_0x15b967(null);};}for(var e in events){if(events[_0xac4a('0x7')](e)){var event=events[e];MailAccount[_0xac4a('0x8')](e,emitEvent(event));}}module[_0xac4a('0x9')]=MailAccountEvents;
\ No newline at end of file
index fa141f9..a734022 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa48b=['../../config/environment','./mailAccount.attributes','exports','define','mail_accounts','util','../../config/logger','api','moment','bluebird','path','rimraf'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xa48b,0x1cd));var _0xba48=function(_0x587ba2,_0x42eb40){_0x587ba2=_0x587ba2-0x0;var _0x50ec73=_0xa48b[_0x587ba2];return _0x50ec73;};'use strict';var _=require('lodash');var util=require(_0xba48('0x0'));var logger=require(_0xba48('0x1'))(_0xba48('0x2'));var moment=require(_0xba48('0x3'));var BPromise=require(_0xba48('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xba48('0x5'));var rimraf=require(_0xba48('0x6'));var config=require(_0xba48('0x7'));var attributes=require(_0xba48('0x8'));module[_0xba48('0x9')]=function(_0x41ebc2,_0x2da523){return _0x41ebc2[_0xba48('0xa')]('MailAccount',attributes,{'tableName':_0xba48('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x13a6=['moment','bluebird','request-promise','path','../../config/environment','./mailAccount.attributes','exports','define','MailAccount','mail_accounts','lodash','util','../../config/logger','api'];(function(_0x37d0bc,_0x109b96){var _0x170e60=function(_0xae2ad){while(--_0xae2ad){_0x37d0bc['push'](_0x37d0bc['shift']());}};_0x170e60(++_0x109b96);}(_0x13a6,0xa4));var _0x613a=function(_0x2b0ee6,_0x528f7d){_0x2b0ee6=_0x2b0ee6-0x0;var _0x411283=_0x13a6[_0x2b0ee6];return _0x411283;};'use strict';var _=require(_0x613a('0x0'));var util=require(_0x613a('0x1'));var logger=require(_0x613a('0x2'))(_0x613a('0x3'));var moment=require(_0x613a('0x4'));var BPromise=require(_0x613a('0x5'));var rp=require(_0x613a('0x6'));var fs=require('fs');var path=require(_0x613a('0x7'));var rimraf=require('rimraf');var config=require(_0x613a('0x8'));var attributes=require(_0x613a('0x9'));module[_0x613a('0xa')]=function(_0x5a1d66,_0x192c2e){return _0x5a1d66[_0x613a('0xb')](_0x613a('0xc'),attributes,{'tableName':_0x613a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e94c5a6..1f04fc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b08=['ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','register','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetMailAccount','MailAccount','findAll','options','raw','where','attributes','include','map','model','ShowMailAccount','NotifyMailAccount','body','mail','difference','keys','CmContact','rawAttributes','createdAt','updatedAt','from','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','List','Contacts','DESC','Applications','MailServerOut','applications','list','orderBy','priority','asc','account','push','length','close','*,*,*,*','ListId','create','List\x20not\x20found','contact','messageId','generate','subject','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','spread','update','attach','interaction','get','attachments','originCc','bcc','ChatWebsiteId','Attachment','Attachments','UserId','User','name','agent','Start','startRouting','lodash','randomstring'];(function(_0x7224a9,_0x22ac72){var _0x5bf544=function(_0x24e078){while(--_0x24e078){_0x7224a9['push'](_0x7224a9['shift']());}};_0x5bf544(++_0x22ac72);}(_0x5b08,0x1de));var _0x85b0=function(_0x5608df,_0xff2326){_0x5608df=_0x5608df-0x0;var _0x4c2e63=_0x5b08[_0x5608df];return _0x4c2e63;};'use strict';var _=require(_0x85b0('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x85b0('0x1'));var fs=require('fs');var Redis=require(_0x85b0('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x85b0('0x3'))(_0x85b0('0x4'));var config=require(_0x85b0('0x5'));var jayson=require(_0x85b0('0x6'));var client=jayson[_0x85b0('0x7')][_0x85b0('0x8')]({'port':0x232c});config[_0x85b0('0x9')]=_[_0x85b0('0xa')](config[_0x85b0('0x9')],{'host':_0x85b0('0xb'),'port':0x18eb});var socket=require(_0x85b0('0xc'))(new Redis(config[_0x85b0('0x9')]));require(_0x85b0('0xd'))[_0x85b0('0xe')](socket);function respondWithRpcPromise(_0x284b47,_0x53272e,_0x2bf9dd){return new BPromise(function(_0xeed1d,_0x20c658){return client['request'](_0x284b47,_0x2bf9dd)[_0x85b0('0xf')](function(_0x72ef0d){logger[_0x85b0('0x10')](_0x85b0('0x11'),_0x53272e,_0x85b0('0x12'));logger[_0x85b0('0x13')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x53272e,_0x85b0('0x12'),JSON[_0x85b0('0x14')](_0x72ef0d));if(_0x72ef0d[_0x85b0('0x15')]){if(_0x72ef0d[_0x85b0('0x15')][_0x85b0('0x16')]===0x1f4){logger['error'](_0x85b0('0x11'),_0x53272e,_0x72ef0d[_0x85b0('0x15')][_0x85b0('0x17')]);return _0x20c658(_0x72ef0d['error']['message']);}logger['error'](_0x85b0('0x11'),_0x53272e,_0x72ef0d[_0x85b0('0x15')][_0x85b0('0x17')]);return _0xeed1d(_0x72ef0d[_0x85b0('0x15')][_0x85b0('0x17')]);}else{logger['info'](_0x85b0('0x11'),_0x53272e,_0x85b0('0x12'));_0xeed1d(_0x72ef0d[_0x85b0('0x18')][_0x85b0('0x17')]);}})[_0x85b0('0x19')](function(_0x5c0375){logger[_0x85b0('0x15')](_0x85b0('0x11'),_0x53272e,_0x5c0375);_0x20c658(_0x5c0375);});});}exports[_0x85b0('0x1a')]=function(_0x514a62){var _0x306247=this;return new Promise(function(_0xd8d872,_0xad0328){return db[_0x85b0('0x1b')][_0x85b0('0x1c')]({'raw':_0x514a62[_0x85b0('0x1d')]?_0x514a62[_0x85b0('0x1d')][_0x85b0('0x1e')]===undefined?!![]:![]:!![],'where':_0x514a62['options']?_0x514a62[_0x85b0('0x1d')][_0x85b0('0x1f')]||null:null,'attributes':_0x514a62['options']?_0x514a62[_0x85b0('0x1d')][_0x85b0('0x20')]||null:null,'limit':_0x514a62[_0x85b0('0x1d')]?_0x514a62[_0x85b0('0x1d')]['limit']||null:null,'include':_0x514a62[_0x85b0('0x1d')]?_0x514a62[_0x85b0('0x1d')][_0x85b0('0x21')]?_[_0x85b0('0x22')](_0x514a62[_0x85b0('0x1d')][_0x85b0('0x21')],function(_0x1ce89e){return{'model':db[_0x1ce89e[_0x85b0('0x23')]],'as':_0x1ce89e['as'],'attributes':_0x1ce89e[_0x85b0('0x20')],'include':_0x1ce89e[_0x85b0('0x21')]?_[_0x85b0('0x22')](_0x1ce89e[_0x85b0('0x21')],function(_0x6082d){return{'model':db[_0x6082d[_0x85b0('0x23')]],'as':_0x6082d['as'],'attributes':_0x6082d[_0x85b0('0x20')],'include':_0x6082d['include']?_[_0x85b0('0x22')](_0x6082d[_0x85b0('0x21')],function(_0x474683){return{'model':db[_0x474683['model']],'as':_0x474683['as'],'attributes':_0x474683['attributes']};}):[]};}):[]};}):[]:[]})[_0x85b0('0xf')](function(_0x1cfd29){logger[_0x85b0('0x10')](_0x85b0('0x1a'),_0x514a62);logger['debug'](_0x85b0('0x1a'),_0x514a62,JSON[_0x85b0('0x14')](_0x1cfd29));_0xd8d872(_0x1cfd29);})['catch'](function(_0x42e480){logger[_0x85b0('0x15')](_0x85b0('0x1a'),_0x42e480[_0x85b0('0x17')],_0x514a62);_0xad0328(_0x306247[_0x85b0('0x15')](0x1f4,_0x42e480[_0x85b0('0x17')]));});});};exports[_0x85b0('0x24')]=function(_0x557b2a){var _0x43c773=this;return new Promise(function(_0x22de28,_0x25b70d){return db['MailAccount']['find']({'raw':_0x557b2a['options']?_0x557b2a[_0x85b0('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x557b2a[_0x85b0('0x1d')]?_0x557b2a[_0x85b0('0x1d')][_0x85b0('0x1f')]||null:null,'attributes':_0x557b2a['options']?_0x557b2a['options']['attributes']||null:null,'include':_0x557b2a[_0x85b0('0x1d')]?_0x557b2a[_0x85b0('0x1d')][_0x85b0('0x21')]?_[_0x85b0('0x22')](_0x557b2a[_0x85b0('0x1d')]['include'],function(_0x8eadd2){return{'model':db[_0x8eadd2[_0x85b0('0x23')]],'as':_0x8eadd2['as'],'attributes':_0x8eadd2[_0x85b0('0x20')],'include':_0x8eadd2[_0x85b0('0x21')]?_[_0x85b0('0x22')](_0x8eadd2['include'],function(_0x22efc2){return{'model':db[_0x22efc2[_0x85b0('0x23')]],'as':_0x22efc2['as'],'attributes':_0x22efc2[_0x85b0('0x20')],'include':_0x22efc2[_0x85b0('0x21')]?_[_0x85b0('0x22')](_0x22efc2[_0x85b0('0x21')],function(_0x3d9ed5){return{'model':db[_0x3d9ed5[_0x85b0('0x23')]],'as':_0x3d9ed5['as'],'attributes':_0x3d9ed5['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x3b1af1){logger[_0x85b0('0x10')](_0x85b0('0x24'),_0x557b2a);logger[_0x85b0('0x13')](_0x85b0('0x24'),_0x557b2a,JSON[_0x85b0('0x14')](_0x3b1af1));_0x22de28(_0x3b1af1);})[_0x85b0('0x19')](function(_0x33e02e){logger[_0x85b0('0x15')](_0x85b0('0x24'),_0x33e02e[_0x85b0('0x17')],_0x557b2a);_0x25b70d(_0x43c773[_0x85b0('0x15')](0x1f4,_0x33e02e[_0x85b0('0x17')]));});});};exports[_0x85b0('0x25')]=function(_0x118618){var _0x442b49=this;return new Promise(function(_0x2cac49,_0x30349b){var _0x2732c3={'body':_0x118618[_0x85b0('0x26')],'channel':_0x85b0('0x27')};var _0x5520b4=_[_0x85b0('0x28')](_[_0x85b0('0x29')](db[_0x85b0('0x2a')][_0x85b0('0x2b')]),[_0x85b0('0x2c'),_0x85b0('0x2d'),'CompanyId','ListId']);var _0x362559=![];if(_0x118618[_0x85b0('0x26')]['id']){delete _0x118618[_0x85b0('0x26')]['id'];}if(_['isNil'](_0x118618[_0x85b0('0x26')][_0x85b0('0x2e')])){return _0x30349b(_0x442b49[_0x85b0('0x15')](0x1f4,'from\x20is\x20mandatory'));}if(_[_0x85b0('0x2f')](_0x118618[_0x85b0('0x26')][_0x85b0('0x26')])||_0x118618[_0x85b0('0x26')][_0x85b0('0x26')]===''){return _0x30349b(_0x442b49[_0x85b0('0x15')](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0x85b0('0x2f')](_0x118618[_0x85b0('0x26')][_0x85b0('0x30')])){return _0x30349b(_0x442b49['error'](0x1f4,_0x85b0('0x31')+_0x5520b4));}if(!_['includes'](_0x5520b4,_0x118618['body'][_0x85b0('0x30')])){return _0x30349b(_0x442b49[_0x85b0('0x15')](0x1f4,_0x85b0('0x32')+_0x5520b4));}var _0x29c997={};_0x29c997[_0x118618[_0x85b0('0x26')][_0x85b0('0x30')]]=_0x118618['body'][_0x85b0('0x2e')];return db[_0x85b0('0x1b')][_0x85b0('0x33')]({'where':{'id':_0x118618['account']['id']},'include':[{'model':db['CmList'],'as':_0x85b0('0x34'),'include':[{'model':db[_0x85b0('0x2a')],'as':_0x85b0('0x35'),'where':_0x29c997,'limit':0x1,'order':[[_0x85b0('0x2d'),_0x85b0('0x36')]]}]},{'model':db['MailApplication'],'as':_0x85b0('0x37')},{'model':db[_0x85b0('0x38')],'as':'Smtp'}]})[_0x85b0('0xf')](function(_0x693f64){if(_0x693f64&&_0x693f64['List']){var _0x97c6e2=_0x693f64['get']({'plain':!![]});_0x2732c3['account']=_['omit'](_0x97c6e2,[_0x85b0('0x37'),_0x85b0('0x34')]);_0x2732c3[_0x85b0('0x39')]=_0x97c6e2[_0x85b0('0x37')];_0x2732c3[_0x85b0('0x3a')]=_0x97c6e2[_0x85b0('0x34')];_0x2732c3['applications']=_[_0x85b0('0x3b')](_0x2732c3[_0x85b0('0x39')],[_0x85b0('0x3c')],[_0x85b0('0x3d')]);if(_0x2732c3[_0x85b0('0x3e')]&&_0x2732c3[_0x85b0('0x3e')]['autoclose']){_0x2732c3[_0x85b0('0x39')][_0x85b0('0x3f')]({'id':0x0,'priority':_0x2732c3[_0x85b0('0x39')][_0x85b0('0x40')]+0x1,'app':_0x85b0('0x41'),'appdata':'autoclose','interval':_0x85b0('0x42')});}if(_0x2732c3[_0x85b0('0x3e')][_0x85b0('0x37')]){delete _0x2732c3[_0x85b0('0x3e')]['Applications'];}if(_0x2732c3[_0x85b0('0x3e')][_0x85b0('0x34')]){delete _0x2732c3[_0x85b0('0x3e')][_0x85b0('0x34')];}if(_0x97c6e2[_0x85b0('0x34')][_0x85b0('0x35')][_0x85b0('0x40')]){return _0x97c6e2[_0x85b0('0x34')]['Contacts'][0x0];}var _0x1ad247=_[_0x85b0('0xa')](_0x118618[_0x85b0('0x26')],{'firstName':_0x118618['body'][_0x85b0('0x2e')],'ListId':_0x97c6e2[_0x85b0('0x43')]});_0x1ad247[_0x118618[_0x85b0('0x26')][_0x85b0('0x30')]]=_0x118618['body']['from'];return db[_0x85b0('0x2a')][_0x85b0('0x44')](_0x1ad247);}else{throw new Error(_0x85b0('0x45'));}})[_0x85b0('0xf')](function(_0x5e4f5d){_0x2732c3[_0x85b0('0x46')]=_0x5e4f5d;if(_0x5e4f5d){if(!_0x118618[_0x85b0('0x26')][_0x85b0('0x17')]['messageId']){_0x118618[_0x85b0('0x26')][_0x85b0('0x17')][_0x85b0('0x47')]=rs[_0x85b0('0x48')]()+'\x20'+_0x118618['body'][_0x85b0('0x17')][_0x85b0('0x2e')];}var _0x24b223={'ContactId':_0x5e4f5d['id'],'MailAccountId':_0x118618[_0x85b0('0x3e')]['id'],'inReplyTo':_0x118618[_0x85b0('0x26')]['message'][_0x85b0('0x47')],'to':_0x118618[_0x85b0('0x26')][_0x85b0('0x17')][_0x85b0('0x2e')],'cc':_0x118618[_0x85b0('0x26')]['message']['cc'],'subject':_0x118618['body']['message'][_0x85b0('0x49')],'attach':_0x118618[_0x85b0('0x26')][_0x85b0('0x17')]['attach'],'lastMsgAt':moment()[_0x85b0('0x4a')](_0x85b0('0x4b')),'lastMsgDirection':'in'};return db[_0x85b0('0x4c')][_0x85b0('0x33')]({'where':{'closed':![],'MailAccountId':_0x118618[_0x85b0('0x3e')]['id']},'include':[{'model':db[_0x85b0('0x4d')],'as':_0x85b0('0x4e'),'attributes':['messageId'],'where':{'messageId':_0x118618[_0x85b0('0x26')]['message']['inReplyTo']}}]})[_0x85b0('0xf')](function(_0x5240e3){if(_0x5240e3){return[_0x5240e3,![]];}return db[_0x85b0('0x4c')][_0x85b0('0x44')](_0x24b223)[_0x85b0('0xf')](function(_0xd05b40){return[_0xd05b40,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x85b0('0x4f')](function(_0x454fc4,_0x47f9ac){if(_0x454fc4){_0x362559=_0x47f9ac;if(!_0x47f9ac){return _0x454fc4[_0x85b0('0x50')]({'inReplyTo':_0x118618[_0x85b0('0x26')][_0x85b0('0x17')][_0x85b0('0x47')],'to':_0x118618['body'][_0x85b0('0x17')][_0x85b0('0x2e')],'cc':_0x118618[_0x85b0('0x26')][_0x85b0('0x17')]['cc'],'subject':_0x118618['body'][_0x85b0('0x17')][_0x85b0('0x49')],'attach':_0x454fc4[_0x85b0('0x51')]?_0x454fc4[_0x85b0('0x51')]:_0x118618[_0x85b0('0x26')]['message']['attach'],'substatus':null,'substatusAt':moment()[_0x85b0('0x4a')](_0x85b0('0x4b')),'lastMsgAt':moment()[_0x85b0('0x4a')](_0x85b0('0x4b')),'lastMsgDirection':'in'});}else{return _0x454fc4;}}})[_0x85b0('0xf')](function(_0x371b6e){_0x2732c3[_0x85b0('0x52')]=_0x371b6e[_0x85b0('0x53')]({'plain':!![]});_0x2732c3[_0x85b0('0x52')]['created']=_0x362559;return db[_0x85b0('0x4d')][_0x85b0('0x44')]({'body':_0x118618[_0x85b0('0x26')]['body'],'MailAccountId':_0x118618[_0x85b0('0x3e')]['id'],'MailInteractionId':_0x371b6e['id'],'direction':'in','ContactId':_0x2732c3[_0x85b0('0x46')]['id'],'messageId':_0x118618[_0x85b0('0x26')][_0x85b0('0x17')][_0x85b0('0x47')],'from':_0x118618[_0x85b0('0x26')][_0x85b0('0x17')][_0x85b0('0x2e')],'to':_0x118618['body']['message']['to'],'cc':_0x118618['body'][_0x85b0('0x17')]['cc'],'subject':_0x118618['body'][_0x85b0('0x17')][_0x85b0('0x49')],'attach':_0x118618[_0x85b0('0x26')][_0x85b0('0x17')][_0x85b0('0x51')],'Attachments':_0x118618[_0x85b0('0x26')]['message'][_0x85b0('0x54')],'originTo':_0x118618[_0x85b0('0x26')][_0x85b0('0x17')]['originTo'],'originCc':_0x118618[_0x85b0('0x26')][_0x85b0('0x17')][_0x85b0('0x55')],'bcc':_0x118618[_0x85b0('0x26')][_0x85b0('0x17')][_0x85b0('0x56')],'ChatWebsiteId':_0x118618['body'][_0x85b0('0x17')][_0x85b0('0x57')]||null,'originChannel':_0x118618[_0x85b0('0x26')][_0x85b0('0x17')]['originChannel']||'Email','ChatOfflineMessageId':_0x118618[_0x85b0('0x26')][_0x85b0('0x17')]['ChatOfflineMessageId']||null},{'include':[{'model':db[_0x85b0('0x58')],'as':_0x85b0('0x59')}]});})[_0x85b0('0xf')](function(_0x1507bf){_0x2732c3[_0x85b0('0x17')]=_0x1507bf;if(_0x2732c3[_0x85b0('0x52')][_0x85b0('0x5a')]){return db[_0x85b0('0x5b')][_0x85b0('0x33')]({'attributes':['id',_0x85b0('0x5c')],'where':{'id':_0x2732c3[_0x85b0('0x52')][_0x85b0('0x5a')]}})[_0x85b0('0xf')](function(_0x3390e2){if(_0x3390e2){_0x2732c3[_0x85b0('0x39')]['unshift']({'id':0x0,'priority':0x0,'app':_0x85b0('0x5d'),'appdata':_0x3390e2['name']+','+(_0x2732c3['account']['waitForTheAssignedAgent']||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x85b0('0x5e'),'startRouting',_0x2732c3);});}return respondWithRpcPromise(_0x85b0('0x5e'),_0x85b0('0x5f'),_0x2732c3);})[_0x85b0('0xf')](function(_0x16142f){_0x2cac49(_0x16142f);})[_0x85b0('0x19')](function(_0x580b4f){_0x30349b(_0x442b49[_0x85b0('0x15')](0x1f4,_0x580b4f[_0x85b0('0x17')]));});});};
\ No newline at end of file
+var _0x0079=['info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetMailAccount','MailAccount','findAll','options','raw','where','attributes','limit','include','map','model','catch','find','ShowMailAccount','NotifyMailAccount','body','mail','difference','keys','rawAttributes','createdAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','Contacts','updatedAt','MailApplication','Applications','Smtp','get','List','applications','priority','asc','autoclose','push','length','close','CmContact','List\x20not\x20found','contact','messageId','format','MailMessage','Messages','inReplyTo','create','spread','update','subject','attach','YYYY-MM-DD\x20HH:mm:ss','interaction','created','attachments','originTo','bcc','ChatWebsiteId','ChatOfflineMessageId','Attachment','Attachments','UserId','User','name','unshift','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./mailAccount.socket','register','then'];(function(_0x92c450,_0x41f1e3){var _0x2a9599=function(_0x4f27df){while(--_0x4f27df){_0x92c450['push'](_0x92c450['shift']());}};_0x2a9599(++_0x41f1e3);}(_0x0079,0x1f2));var _0x9007=function(_0x321b01,_0x46c235){_0x321b01=_0x321b01-0x0;var _0x499084=_0x0079[_0x321b01];return _0x499084;};'use strict';var _=require('lodash');var util=require(_0x9007('0x0'));var moment=require(_0x9007('0x1'));var BPromise=require(_0x9007('0x2'));var rs=require(_0x9007('0x3'));var fs=require('fs');var Redis=require(_0x9007('0x4'));var db=require(_0x9007('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x9007('0x6'));var config=require(_0x9007('0x7'));var jayson=require(_0x9007('0x8'));var client=jayson[_0x9007('0x9')][_0x9007('0xa')]({'port':0x232c});config[_0x9007('0xb')]=_[_0x9007('0xc')](config[_0x9007('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x9007('0xd'))(new Redis(config[_0x9007('0xb')]));require(_0x9007('0xe'))[_0x9007('0xf')](socket);function respondWithRpcPromise(_0x59e030,_0x14b1dd,_0x2822df){return new BPromise(function(_0x742c73,_0x5c0a8d){return client['request'](_0x59e030,_0x2822df)[_0x9007('0x10')](function(_0x5a9e92){logger[_0x9007('0x11')](_0x9007('0x12'),_0x14b1dd,_0x9007('0x13'));logger[_0x9007('0x14')](_0x9007('0x15'),_0x14b1dd,_0x9007('0x13'),JSON[_0x9007('0x16')](_0x5a9e92));if(_0x5a9e92[_0x9007('0x17')]){if(_0x5a9e92[_0x9007('0x17')][_0x9007('0x18')]===0x1f4){logger['error']('MailAccount,\x20%s,\x20%s',_0x14b1dd,_0x5a9e92['error'][_0x9007('0x19')]);return _0x5c0a8d(_0x5a9e92[_0x9007('0x17')][_0x9007('0x19')]);}logger[_0x9007('0x17')](_0x9007('0x12'),_0x14b1dd,_0x5a9e92['error']['message']);return _0x742c73(_0x5a9e92['error'][_0x9007('0x19')]);}else{logger[_0x9007('0x11')]('MailAccount,\x20%s,\x20%s',_0x14b1dd,_0x9007('0x13'));_0x742c73(_0x5a9e92[_0x9007('0x1a')][_0x9007('0x19')]);}})['catch'](function(_0x29f32b){logger['error'](_0x9007('0x12'),_0x14b1dd,_0x29f32b);_0x5c0a8d(_0x29f32b);});});}exports[_0x9007('0x1b')]=function(_0x2177bb){var _0x362264=this;return new Promise(function(_0x1374e0,_0x388c3c){return db[_0x9007('0x1c')][_0x9007('0x1d')]({'raw':_0x2177bb[_0x9007('0x1e')]?_0x2177bb[_0x9007('0x1e')][_0x9007('0x1f')]===undefined?!![]:![]:!![],'where':_0x2177bb[_0x9007('0x1e')]?_0x2177bb[_0x9007('0x1e')][_0x9007('0x20')]||null:null,'attributes':_0x2177bb[_0x9007('0x1e')]?_0x2177bb[_0x9007('0x1e')][_0x9007('0x21')]||null:null,'limit':_0x2177bb[_0x9007('0x1e')]?_0x2177bb[_0x9007('0x1e')][_0x9007('0x22')]||null:null,'include':_0x2177bb[_0x9007('0x1e')]?_0x2177bb['options'][_0x9007('0x23')]?_[_0x9007('0x24')](_0x2177bb[_0x9007('0x1e')][_0x9007('0x23')],function(_0x21e643){return{'model':db[_0x21e643[_0x9007('0x25')]],'as':_0x21e643['as'],'attributes':_0x21e643['attributes'],'include':_0x21e643[_0x9007('0x23')]?_[_0x9007('0x24')](_0x21e643[_0x9007('0x23')],function(_0x250bc1){return{'model':db[_0x250bc1[_0x9007('0x25')]],'as':_0x250bc1['as'],'attributes':_0x250bc1['attributes'],'include':_0x250bc1[_0x9007('0x23')]?_[_0x9007('0x24')](_0x250bc1[_0x9007('0x23')],function(_0x3449ed){return{'model':db[_0x3449ed[_0x9007('0x25')]],'as':_0x3449ed['as'],'attributes':_0x3449ed[_0x9007('0x21')]};}):[]};}):[]};}):[]:[]})[_0x9007('0x10')](function(_0x1b0ef9){logger['info']('GetMailAccount',_0x2177bb);logger['debug'](_0x9007('0x1b'),_0x2177bb,JSON[_0x9007('0x16')](_0x1b0ef9));_0x1374e0(_0x1b0ef9);})[_0x9007('0x26')](function(_0x42287a){logger[_0x9007('0x17')]('GetMailAccount',_0x42287a[_0x9007('0x19')],_0x2177bb);_0x388c3c(_0x362264[_0x9007('0x17')](0x1f4,_0x42287a[_0x9007('0x19')]));});});};exports['ShowMailAccount']=function(_0x1a5f42){var _0x15fdda=this;return new Promise(function(_0x5e368c,_0x1bfa7f){return db[_0x9007('0x1c')][_0x9007('0x27')]({'raw':_0x1a5f42[_0x9007('0x1e')]?_0x1a5f42['options'][_0x9007('0x1f')]===undefined?!![]:![]:!![],'where':_0x1a5f42[_0x9007('0x1e')]?_0x1a5f42['options'][_0x9007('0x20')]||null:null,'attributes':_0x1a5f42[_0x9007('0x1e')]?_0x1a5f42[_0x9007('0x1e')][_0x9007('0x21')]||null:null,'include':_0x1a5f42[_0x9007('0x1e')]?_0x1a5f42[_0x9007('0x1e')][_0x9007('0x23')]?_[_0x9007('0x24')](_0x1a5f42[_0x9007('0x1e')][_0x9007('0x23')],function(_0x3c24ff){return{'model':db[_0x3c24ff[_0x9007('0x25')]],'as':_0x3c24ff['as'],'attributes':_0x3c24ff[_0x9007('0x21')],'include':_0x3c24ff[_0x9007('0x23')]?_[_0x9007('0x24')](_0x3c24ff[_0x9007('0x23')],function(_0xf83ef8){return{'model':db[_0xf83ef8[_0x9007('0x25')]],'as':_0xf83ef8['as'],'attributes':_0xf83ef8['attributes'],'include':_0xf83ef8[_0x9007('0x23')]?_['map'](_0xf83ef8[_0x9007('0x23')],function(_0x2cd34b){return{'model':db[_0x2cd34b[_0x9007('0x25')]],'as':_0x2cd34b['as'],'attributes':_0x2cd34b['attributes']};}):[]};}):[]};}):[]:[]})[_0x9007('0x10')](function(_0x3d4c3c){logger['info']('ShowMailAccount',_0x1a5f42);logger[_0x9007('0x14')]('ShowMailAccount',_0x1a5f42,JSON[_0x9007('0x16')](_0x3d4c3c));_0x5e368c(_0x3d4c3c);})[_0x9007('0x26')](function(_0x4e45e9){logger[_0x9007('0x17')](_0x9007('0x28'),_0x4e45e9[_0x9007('0x19')],_0x1a5f42);_0x1bfa7f(_0x15fdda[_0x9007('0x17')](0x1f4,_0x4e45e9['message']));});});};exports[_0x9007('0x29')]=function(_0x15549a){var _0x3d263b=this;return new Promise(function(_0x3a358a,_0x59aedc){var _0x34c8ce={'body':_0x15549a[_0x9007('0x2a')],'channel':_0x9007('0x2b')};var _0x29bcae=_[_0x9007('0x2c')](_[_0x9007('0x2d')](db['CmContact'][_0x9007('0x2e')]),[_0x9007('0x2f'),'updatedAt',_0x9007('0x30'),_0x9007('0x31')]);var _0x523e6e=![];if(_0x15549a[_0x9007('0x2a')]['id']){delete _0x15549a[_0x9007('0x2a')]['id'];}if(_[_0x9007('0x32')](_0x15549a[_0x9007('0x2a')][_0x9007('0x33')])){return _0x59aedc(_0x3d263b['error'](0x1f4,_0x9007('0x34')));}if(_[_0x9007('0x32')](_0x15549a[_0x9007('0x2a')][_0x9007('0x2a')])||_0x15549a[_0x9007('0x2a')]['body']===''){return _0x59aedc(_0x3d263b[_0x9007('0x17')](0x1f4,_0x9007('0x35')));}if(_[_0x9007('0x32')](_0x15549a['body']['mapKey'])){return _0x59aedc(_0x3d263b[_0x9007('0x17')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x29bcae));}if(!_[_0x9007('0x36')](_0x29bcae,_0x15549a['body'][_0x9007('0x37')])){return _0x59aedc(_0x3d263b[_0x9007('0x17')](0x1f4,_0x9007('0x38')+_0x29bcae));}var _0x4a7bf5={};_0x4a7bf5[_0x15549a[_0x9007('0x2a')]['mapKey']]=_0x15549a[_0x9007('0x2a')][_0x9007('0x33')];return db[_0x9007('0x1c')]['find']({'where':{'id':_0x15549a[_0x9007('0x39')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db['CmContact'],'as':_0x9007('0x3a'),'where':_0x4a7bf5,'limit':0x1,'order':[[_0x9007('0x3b'),'DESC']]}]},{'model':db[_0x9007('0x3c')],'as':_0x9007('0x3d')},{'model':db['MailServerOut'],'as':_0x9007('0x3e')}]})[_0x9007('0x10')](function(_0x16c936){if(_0x16c936&&_0x16c936['List']){var _0x3fd8ba=_0x16c936[_0x9007('0x3f')]({'plain':!![]});_0x34c8ce[_0x9007('0x39')]=_['omit'](_0x3fd8ba,['Applications',_0x9007('0x40')]);_0x34c8ce[_0x9007('0x41')]=_0x3fd8ba['Applications'];_0x34c8ce['list']=_0x3fd8ba[_0x9007('0x40')];_0x34c8ce[_0x9007('0x41')]=_['orderBy'](_0x34c8ce[_0x9007('0x41')],[_0x9007('0x42')],[_0x9007('0x43')]);if(_0x34c8ce[_0x9007('0x39')]&&_0x34c8ce[_0x9007('0x39')][_0x9007('0x44')]){_0x34c8ce[_0x9007('0x41')][_0x9007('0x45')]({'id':0x0,'priority':_0x34c8ce['applications'][_0x9007('0x46')]+0x1,'app':_0x9007('0x47'),'appdata':_0x9007('0x44'),'interval':'*,*,*,*'});}if(_0x34c8ce[_0x9007('0x39')][_0x9007('0x3d')]){delete _0x34c8ce[_0x9007('0x39')][_0x9007('0x3d')];}if(_0x34c8ce['account'][_0x9007('0x40')]){delete _0x34c8ce['account']['List'];}if(_0x3fd8ba[_0x9007('0x40')][_0x9007('0x3a')][_0x9007('0x46')]){return _0x3fd8ba['List'][_0x9007('0x3a')][0x0];}var _0xc3d34=_['defaults'](_0x15549a[_0x9007('0x2a')],{'firstName':_0x15549a['body']['from'],'ListId':_0x3fd8ba['ListId']});_0xc3d34[_0x15549a[_0x9007('0x2a')][_0x9007('0x37')]]=_0x15549a[_0x9007('0x2a')][_0x9007('0x33')];return db[_0x9007('0x48')]['create'](_0xc3d34);}else{throw new Error(_0x9007('0x49'));}})[_0x9007('0x10')](function(_0x12f96f){_0x34c8ce[_0x9007('0x4a')]=_0x12f96f;if(_0x12f96f){if(!_0x15549a[_0x9007('0x2a')]['message'][_0x9007('0x4b')]){_0x15549a[_0x9007('0x2a')][_0x9007('0x19')][_0x9007('0x4b')]=rs['generate']()+'\x20'+_0x15549a['body'][_0x9007('0x19')][_0x9007('0x33')];}var _0x145650={'ContactId':_0x12f96f['id'],'MailAccountId':_0x15549a[_0x9007('0x39')]['id'],'inReplyTo':_0x15549a[_0x9007('0x2a')][_0x9007('0x19')][_0x9007('0x4b')],'to':_0x15549a[_0x9007('0x2a')]['message'][_0x9007('0x33')],'cc':_0x15549a[_0x9007('0x2a')]['message']['cc'],'subject':_0x15549a[_0x9007('0x2a')][_0x9007('0x19')]['subject'],'attach':_0x15549a[_0x9007('0x2a')][_0x9007('0x19')]['attach'],'lastMsgAt':moment()[_0x9007('0x4c')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'};return db['MailInteraction']['find']({'where':{'closed':![],'MailAccountId':_0x15549a[_0x9007('0x39')]['id']},'include':[{'model':db[_0x9007('0x4d')],'as':_0x9007('0x4e'),'attributes':['messageId'],'where':{'messageId':_0x15549a[_0x9007('0x2a')][_0x9007('0x19')][_0x9007('0x4f')]}}]})[_0x9007('0x10')](function(_0x31cdfe){if(_0x31cdfe){return[_0x31cdfe,![]];}return db['MailInteraction'][_0x9007('0x50')](_0x145650)[_0x9007('0x10')](function(_0xe0683a){return[_0xe0683a,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x9007('0x51')](function(_0x1c8ab5,_0x10331c){if(_0x1c8ab5){_0x523e6e=_0x10331c;if(!_0x10331c){return _0x1c8ab5[_0x9007('0x52')]({'inReplyTo':_0x15549a[_0x9007('0x2a')][_0x9007('0x19')]['messageId'],'to':_0x15549a[_0x9007('0x2a')][_0x9007('0x19')][_0x9007('0x33')],'cc':_0x15549a[_0x9007('0x2a')][_0x9007('0x19')]['cc'],'subject':_0x15549a[_0x9007('0x2a')][_0x9007('0x19')][_0x9007('0x53')],'attach':_0x1c8ab5[_0x9007('0x54')]?_0x1c8ab5[_0x9007('0x54')]:_0x15549a[_0x9007('0x2a')]['message'][_0x9007('0x54')],'substatus':null,'substatusAt':moment()[_0x9007('0x4c')](_0x9007('0x55')),'lastMsgAt':moment()[_0x9007('0x4c')](_0x9007('0x55')),'lastMsgDirection':'in'});}else{return _0x1c8ab5;}}})[_0x9007('0x10')](function(_0x215a86){_0x34c8ce[_0x9007('0x56')]=_0x215a86['get']({'plain':!![]});_0x34c8ce[_0x9007('0x56')][_0x9007('0x57')]=_0x523e6e;return db[_0x9007('0x4d')][_0x9007('0x50')]({'body':_0x15549a['body'][_0x9007('0x2a')],'MailAccountId':_0x15549a[_0x9007('0x39')]['id'],'MailInteractionId':_0x215a86['id'],'direction':'in','ContactId':_0x34c8ce[_0x9007('0x4a')]['id'],'messageId':_0x15549a[_0x9007('0x2a')][_0x9007('0x19')]['messageId'],'from':_0x15549a[_0x9007('0x2a')][_0x9007('0x19')][_0x9007('0x33')],'to':_0x15549a[_0x9007('0x2a')][_0x9007('0x19')]['to'],'cc':_0x15549a[_0x9007('0x2a')][_0x9007('0x19')]['cc'],'subject':_0x15549a[_0x9007('0x2a')][_0x9007('0x19')][_0x9007('0x53')],'attach':_0x15549a[_0x9007('0x2a')][_0x9007('0x19')]['attach'],'Attachments':_0x15549a['body']['message'][_0x9007('0x58')],'originTo':_0x15549a[_0x9007('0x2a')]['message'][_0x9007('0x59')],'originCc':_0x15549a[_0x9007('0x2a')][_0x9007('0x19')]['originCc'],'bcc':_0x15549a['body'][_0x9007('0x19')][_0x9007('0x5a')],'ChatWebsiteId':_0x15549a[_0x9007('0x2a')][_0x9007('0x19')][_0x9007('0x5b')]||null,'originChannel':_0x15549a[_0x9007('0x2a')][_0x9007('0x19')]['originChannel']||'Email','ChatOfflineMessageId':_0x15549a[_0x9007('0x2a')][_0x9007('0x19')][_0x9007('0x5c')]||null},{'include':[{'model':db[_0x9007('0x5d')],'as':_0x9007('0x5e')}]});})[_0x9007('0x10')](function(_0x28b3c7){_0x34c8ce[_0x9007('0x19')]=_0x28b3c7;if(_0x34c8ce[_0x9007('0x56')][_0x9007('0x5f')]){return db[_0x9007('0x60')]['find']({'attributes':['id',_0x9007('0x61')],'where':{'id':_0x34c8ce[_0x9007('0x56')][_0x9007('0x5f')]}})[_0x9007('0x10')](function(_0x1615ca){if(_0x1615ca){_0x34c8ce['applications'][_0x9007('0x62')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x1615ca['name']+','+(_0x34c8ce[_0x9007('0x39')][_0x9007('0x63')]||0xa),'interval':_0x9007('0x64')});}return respondWithRpcPromise(_0x9007('0x65'),'startRouting',_0x34c8ce);});}return respondWithRpcPromise(_0x9007('0x65'),_0x9007('0x66'),_0x34c8ce);})['then'](function(_0x754641){_0x3a358a(_0x754641);})[_0x9007('0x26')](function(_0x21e2c0){_0x59aedc(_0x3d263b[_0x9007('0x17')](0x1f4,_0x21e2c0[_0x9007('0x19')]));});});};
\ No newline at end of file
index f4e1325..9c8772e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7590=['remove','update','emit','register','length','mailAccount:','save'];(function(_0x3e186f,_0x2eb7be){var _0x3595bf=function(_0x5cb578){while(--_0x5cb578){_0x3e186f['push'](_0x3e186f['shift']());}};_0x3595bf(++_0x2eb7be);}(_0x7590,0x1c6));var _0x0759=function(_0x347862,_0x339566){_0x347862=_0x347862-0x0;var _0x2ec88b=_0x7590[_0x347862];return _0x2ec88b;};'use strict';var MailAccountEvents=require('./mailAccount.events');var events=[_0x0759('0x0'),_0x0759('0x1'),_0x0759('0x2')];function createListener(_0x3d0626,_0xf3ba58){return function(_0x26aed4){_0xf3ba58[_0x0759('0x3')](_0x3d0626,_0x26aed4);};}function removeListener(_0x565b80,_0x548ded){return function(){MailAccountEvents['removeListener'](_0x565b80,_0x548ded);};}exports[_0x0759('0x4')]=function(_0x4dfe42){for(var _0x234acf=0x0,_0x266d1f=events[_0x0759('0x5')];_0x234acf<_0x266d1f;_0x234acf++){var _0x1caa4b=events[_0x234acf];var _0x43c208=createListener(_0x0759('0x6')+_0x1caa4b,_0x4dfe42);MailAccountEvents['on'](_0x1caa4b,_0x43c208);}};
\ No newline at end of file
+var _0xb7aa=['./mailAccount.events','save','remove','update','emit','register'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb7aa,0x11a));var _0xab7a=function(_0x4b1573,_0x2d7e3b){_0x4b1573=_0x4b1573-0x0;var _0x5898dc=_0xb7aa[_0x4b1573];return _0x5898dc;};'use strict';var MailAccountEvents=require(_0xab7a('0x0'));var events=[_0xab7a('0x1'),_0xab7a('0x2'),_0xab7a('0x3')];function createListener(_0x1d2507,_0x3eab6c){return function(_0x20b86d){_0x3eab6c[_0xab7a('0x4')](_0x1d2507,_0x20b86d);};}function removeListener(_0x34adc3,_0x3b0621){return function(){MailAccountEvents['removeListener'](_0x34adc3,_0x3b0621);};}exports[_0xab7a('0x5')]=function(_0x1c761b){for(var _0x2ee412=0x0,_0x29ef15=events['length'];_0x2ee412<_0x29ef15;_0x2ee412++){var _0x99ac82=events[_0x2ee412];var _0x1e3b23=createListener('mailAccount:'+_0x99ac82,_0x1c761b);MailAccountEvents['on'](_0x99ac82,_0x1e3b23);}};
\ No newline at end of file
index f17f523..c92d732 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb638=['/:id','isAuthenticated','show','put','update','delete','destroy','path','connect-timeout','express','Router','fs-extra','../../config/environment','./mailApplication.controller','get'];(function(_0x8477e6,_0x5afe44){var _0x5149be=function(_0x3570cc){while(--_0x3570cc){_0x8477e6['push'](_0x8477e6['shift']());}};_0x5149be(++_0x5afe44);}(_0xb638,0x8e));var _0x8b63=function(_0x14da75,_0x46d102){_0x14da75=_0x14da75-0x0;var _0x27b714=_0xb638[_0x14da75];return _0x27b714;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x8b63('0x0'));var timeout=require(_0x8b63('0x1'));var express=require(_0x8b63('0x2'));var router=express[_0x8b63('0x3')]();var fs_extra=require(_0x8b63('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x8b63('0x5'));var controller=require(_0x8b63('0x6'));router[_0x8b63('0x7')](_0x8b63('0x8'),auth[_0x8b63('0x9')](),controller[_0x8b63('0xa')]);router[_0x8b63('0xb')](_0x8b63('0x8'),auth['isAuthenticated'](),controller[_0x8b63('0xc')]);router[_0x8b63('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x8b63('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0xb878=['put','update','destroy','exports','multer','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','show'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xb878,0x112));var _0x8b87=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0xb878[_0x8c43de];return _0xa6591b;};'use strict';var multer=require(_0x8b87('0x0'));var util=require(_0x8b87('0x1'));var path=require(_0x8b87('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x8b87('0x3'));var auth=require(_0x8b87('0x4'));var interaction=require(_0x8b87('0x5'));var config=require(_0x8b87('0x6'));var controller=require('./mailApplication.controller');router[_0x8b87('0x7')](_0x8b87('0x8'),auth[_0x8b87('0x9')](),controller[_0x8b87('0xa')]);router[_0x8b87('0xb')](_0x8b87('0x8'),auth[_0x8b87('0x9')](),controller[_0x8b87('0xc')]);router['delete'](_0x8b87('0x8'),auth[_0x8b87('0x9')](),controller[_0x8b87('0xd')]);module[_0x8b87('0xe')]=router;
\ No newline at end of file
index 9f4f233..dc495df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8fe=['exports','TEXT','STRING'];(function(_0x5564bc,_0x5eef72){var _0x24455f=function(_0x4b2b2d){while(--_0x4b2b2d){_0x5564bc['push'](_0x5564bc['shift']());}};_0x24455f(++_0x5eef72);}(_0xf8fe,0xea));var _0xef8f=function(_0x25b1e0,_0x32d3d5){_0x25b1e0=_0x25b1e0-0x0;var _0xc87ded=_0xf8fe[_0x25b1e0];return _0xc87ded;};'use strict';var Sequelize=require('sequelize');module[_0xef8f('0x0')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xef8f('0x1')]()},'description':{'type':Sequelize[_0xef8f('0x2')]},'interval':{'type':Sequelize[_0xef8f('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x41a9=['noop','exports','STRING'];(function(_0x2749f1,_0x5023e2){var _0xd2c36e=function(_0x3c1bbb){while(--_0x3c1bbb){_0x2749f1['push'](_0x2749f1['shift']());}};_0xd2c36e(++_0x5023e2);}(_0x41a9,0x1a5));var _0x941a=function(_0x3e4e4e,_0x2621d5){_0x3e4e4e=_0x3e4e4e-0x0;var _0x480c9c=_0x41a9[_0x3e4e4e];return _0x480c9c;};'use strict';var Sequelize=require('sequelize');module[_0x941a('0x0')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x941a('0x1')],'allowNull':![],'defaultValue':_0x941a('0x2')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x941a('0x1')]},'interval':{'type':Sequelize[_0x941a('0x1')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 29618d7..4af9ea0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['limit','count','offset','set','Content-Range','json','apply','save','update','then','end','name','send','show','params','model','keys','MailApplication','rawAttributes','query','filters','attributes','intersection','fields','length','includeAll','include','merge','options','find','body','catch','destroy','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined'];(function(_0x54808c,_0x36e290){var _0xe9459=function(_0x55df21){while(--_0x55df21){_0x54808c['push'](_0x54808c['shift']());}};_0xe9459(++_0x36e290);}(_0xe706,0xa3));var _0x6e70=function(_0x4c7892,_0x1c2cb0){_0x4c7892=_0x4c7892-0x0;var _0x2a79c8=_0xe706[_0x4c7892];return _0x2a79c8;};'use strict';var emlformat=require(_0x6e70('0x0'));var rimraf=require(_0x6e70('0x1'));var zipdir=require(_0x6e70('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6e70('0x3'));var moment=require(_0x6e70('0x4'));var BPromise=require(_0x6e70('0x5'));var Mustache=require(_0x6e70('0x6'));var util=require(_0x6e70('0x7'));var path=require(_0x6e70('0x8'));var sox=require(_0x6e70('0x9'));var csv=require(_0x6e70('0xa'));var ejs=require(_0x6e70('0xb'));var fs=require('fs');var fs_extra=require(_0x6e70('0xc'));var _=require(_0x6e70('0xd'));var squel=require(_0x6e70('0xe'));var crypto=require(_0x6e70('0xf'));var jsforce=require(_0x6e70('0x10'));var deskjs=require(_0x6e70('0x11'));var toCsv=require(_0x6e70('0xa'));var querystring=require(_0x6e70('0x12'));var Papa=require(_0x6e70('0x13'));var Redis=require(_0x6e70('0x14'));var authService=require(_0x6e70('0x15'));var qs=require(_0x6e70('0x16'));var as=require(_0x6e70('0x17'));var hardwareService=require(_0x6e70('0x18'));var logger=require(_0x6e70('0x19'))('api');var utils=require('../../config/utils');var config=require(_0x6e70('0x1a'));var licenseUtil=require(_0x6e70('0x1b'));var db=require(_0x6e70('0x1c'))['db'];function respondWithStatusCode(_0x27dd9b,_0x3b38f3){_0x3b38f3=_0x3b38f3||0xcc;return function(_0x310eb7){if(_0x310eb7){return _0x27dd9b[_0x6e70('0x1d')](_0x3b38f3);}return _0x27dd9b[_0x6e70('0x1e')](_0x3b38f3)['end']();};}function respondWithResult(_0x52737e,_0x48bc72){_0x48bc72=_0x48bc72||0xc8;return function(_0x257e81){if(_0x257e81){return _0x52737e['status'](_0x48bc72)['json'](_0x257e81);}};}function respondWithFilteredResult(_0x304716,_0x22c50c){return function(_0x5d9263){if(_0x5d9263){var _0x24f3ac=typeof _0x22c50c['offset']===_0x6e70('0x1f')&&typeof _0x22c50c[_0x6e70('0x20')]==='undefined';var _0x49029f=_0x5d9263[_0x6e70('0x21')];var _0x5ea7a5=_0x24f3ac?0x0:_0x22c50c[_0x6e70('0x22')];var _0x173afe=_0x24f3ac?_0x5d9263['count']:_0x22c50c['offset']+_0x22c50c[_0x6e70('0x20')];var _0x208e21;if(_0x173afe>=_0x49029f){_0x173afe=_0x49029f;_0x208e21=0xc8;}else{_0x208e21=0xce;}_0x304716[_0x6e70('0x1e')](_0x208e21);return _0x304716[_0x6e70('0x23')](_0x6e70('0x24'),_0x5ea7a5+'-'+_0x173afe+'/'+_0x49029f)[_0x6e70('0x25')](_0x5d9263);}return null;};}function patchUpdates(_0x1b2453){return function(_0x44a49f){try{jsonpatch[_0x6e70('0x26')](_0x44a49f,_0x1b2453,!![]);}catch(_0xb29a2a){return BPromise['reject'](_0xb29a2a);}return _0x44a49f[_0x6e70('0x27')]();};}function saveUpdates(_0x344b65,_0x27b294){return function(_0x502b2d){if(_0x502b2d){return _0x502b2d[_0x6e70('0x28')](_0x344b65)[_0x6e70('0x29')](function(_0x3337a6){return _0x3337a6;});}return null;};}function removeEntity(_0x50da2c,_0x10fc91){return function(_0x538b9c){if(_0x538b9c){return _0x538b9c['destroy']()['then'](function(){_0x50da2c[_0x6e70('0x1e')](0xcc)[_0x6e70('0x2a')]();});}};}function handleEntityNotFound(_0x51d292,_0x3ecdf1){return function(_0x1196ed){if(!_0x1196ed){_0x51d292['sendStatus'](0x194);}return _0x1196ed;};}function handleError(_0x338ad6,_0x67fb43){_0x67fb43=_0x67fb43||0x1f4;return function(_0x2bb231){logger['error'](_0x2bb231['stack']);if(_0x2bb231[_0x6e70('0x2b')]){delete _0x2bb231[_0x6e70('0x2b')];}_0x338ad6[_0x6e70('0x1e')](_0x67fb43)[_0x6e70('0x2c')](_0x2bb231);};}exports[_0x6e70('0x2d')]=function(_0x5d772a,_0x1952ea){var _0x406f29={'raw':!![],'where':{'id':_0x5d772a[_0x6e70('0x2e')]['id']}},_0xecf336={};_0xecf336[_0x6e70('0x2f')]=_[_0x6e70('0x30')](db[_0x6e70('0x31')][_0x6e70('0x32')]);_0xecf336[_0x6e70('0x33')]=_[_0x6e70('0x30')](_0x5d772a['query']);_0xecf336[_0x6e70('0x34')]=_['intersection'](_0xecf336[_0x6e70('0x2f')],_0xecf336['query']);_0x406f29[_0x6e70('0x35')]=_[_0x6e70('0x36')](_0xecf336[_0x6e70('0x2f')],qs['fields'](_0x5d772a[_0x6e70('0x33')][_0x6e70('0x37')]));_0x406f29['attributes']=_0x406f29[_0x6e70('0x35')][_0x6e70('0x38')]?_0x406f29['attributes']:_0xecf336[_0x6e70('0x2f')];if(_0x5d772a[_0x6e70('0x33')][_0x6e70('0x39')]){_0x406f29[_0x6e70('0x3a')]=[{'all':!![]}];}_0x406f29=_[_0x6e70('0x3b')]({},_0x406f29,_0x5d772a[_0x6e70('0x3c')]);return db[_0x6e70('0x31')][_0x6e70('0x3d')](_0x406f29)[_0x6e70('0x29')](handleEntityNotFound(_0x1952ea,null))[_0x6e70('0x29')](respondWithResult(_0x1952ea,null))['catch'](handleError(_0x1952ea,null));};exports[_0x6e70('0x28')]=function(_0x4795a0,_0x23cd1a){if(_0x4795a0[_0x6e70('0x3e')]['id']){delete _0x4795a0[_0x6e70('0x3e')]['id'];}return db[_0x6e70('0x31')][_0x6e70('0x3d')]({'where':{'id':_0x4795a0[_0x6e70('0x2e')]['id']}})[_0x6e70('0x29')](handleEntityNotFound(_0x23cd1a,null))[_0x6e70('0x29')](saveUpdates(_0x4795a0[_0x6e70('0x3e')],null))[_0x6e70('0x29')](respondWithResult(_0x23cd1a,null))[_0x6e70('0x3f')](handleError(_0x23cd1a,null));};exports[_0x6e70('0x40')]=function(_0x5594d3,_0x501b53){return db['MailApplication']['find']({'where':{'id':_0x5594d3[_0x6e70('0x2e')]['id']}})[_0x6e70('0x29')](handleEntityNotFound(_0x501b53,null))[_0x6e70('0x29')](removeEntity(_0x501b53,null))[_0x6e70('0x3f')](handleError(_0x501b53,null));};
\ No newline at end of file
+var _0xd8b0=['attributes','length','include','merge','find','catch','body','params','eml-format','rimraf','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','save','update','then','destroy','error','name','show','model','MailApplication','query','keys','intersection','fields'];(function(_0x4c912e,_0x27299d){var _0x2fa424=function(_0x4b0cfb){while(--_0x4b0cfb){_0x4c912e['push'](_0x4c912e['shift']());}};_0x2fa424(++_0x27299d);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require(_0x0d8b('0x0'));var rimraf=require(_0x0d8b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0d8b('0x2'));var BPromise=require(_0x0d8b('0x3'));var Mustache=require(_0x0d8b('0x4'));var util=require(_0x0d8b('0x5'));var path=require(_0x0d8b('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x0d8b('0x7'));var fs=require('fs');var fs_extra=require(_0x0d8b('0x8'));var _=require(_0x0d8b('0x9'));var squel=require('squel');var crypto=require(_0x0d8b('0xa'));var jsforce=require(_0x0d8b('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x0d8b('0xc'));var querystring=require(_0x0d8b('0xd'));var Papa=require(_0x0d8b('0xe'));var Redis=require(_0x0d8b('0xf'));var authService=require(_0x0d8b('0x10'));var qs=require(_0x0d8b('0x11'));var as=require(_0x0d8b('0x12'));var hardwareService=require(_0x0d8b('0x13'));var logger=require('../../config/logger')(_0x0d8b('0x14'));var utils=require('../../config/utils');var config=require(_0x0d8b('0x15'));var licenseUtil=require(_0x0d8b('0x16'));var db=require(_0x0d8b('0x17'))['db'];function respondWithStatusCode(_0x92cdd8,_0x35a07b){_0x35a07b=_0x35a07b||0xcc;return function(_0x32bb1a){if(_0x32bb1a){return _0x92cdd8[_0x0d8b('0x18')](_0x35a07b);}return _0x92cdd8[_0x0d8b('0x19')](_0x35a07b)[_0x0d8b('0x1a')]();};}function respondWithResult(_0x2ce75e,_0x5ad086){_0x5ad086=_0x5ad086||0xc8;return function(_0xe65334){if(_0xe65334){return _0x2ce75e[_0x0d8b('0x19')](_0x5ad086)[_0x0d8b('0x1b')](_0xe65334);}};}function respondWithFilteredResult(_0x4f6f21,_0x23eb7b){return function(_0xa86349){if(_0xa86349){var _0x17f7df=typeof _0x23eb7b[_0x0d8b('0x1c')]===_0x0d8b('0x1d')&&typeof _0x23eb7b['limit']===_0x0d8b('0x1d');var _0x4586c2=_0xa86349[_0x0d8b('0x1e')];var _0x5fecbd=_0x17f7df?0x0:_0x23eb7b[_0x0d8b('0x1c')];var _0x18dd2d=_0x17f7df?_0xa86349[_0x0d8b('0x1e')]:_0x23eb7b[_0x0d8b('0x1c')]+_0x23eb7b['limit'];var _0x27512e;if(_0x18dd2d>=_0x4586c2){_0x18dd2d=_0x4586c2;_0x27512e=0xc8;}else{_0x27512e=0xce;}_0x4f6f21[_0x0d8b('0x19')](_0x27512e);return _0x4f6f21[_0x0d8b('0x1f')](_0x0d8b('0x20'),_0x5fecbd+'-'+_0x18dd2d+'/'+_0x4586c2)[_0x0d8b('0x1b')](_0xa86349);}return null;};}function patchUpdates(_0x5b709c){return function(_0x393beb){try{jsonpatch[_0x0d8b('0x21')](_0x393beb,_0x5b709c,!![]);}catch(_0x50ec1e){return BPromise['reject'](_0x50ec1e);}return _0x393beb[_0x0d8b('0x22')]();};}function saveUpdates(_0x54a9a7,_0x56c729){return function(_0x5527d8){if(_0x5527d8){return _0x5527d8[_0x0d8b('0x23')](_0x54a9a7)[_0x0d8b('0x24')](function(_0x214778){return _0x214778;});}return null;};}function removeEntity(_0x38efc8,_0x221071){return function(_0x2c64e2){if(_0x2c64e2){return _0x2c64e2[_0x0d8b('0x25')]()[_0x0d8b('0x24')](function(){_0x38efc8[_0x0d8b('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe8bbee,_0x4463ee){return function(_0x5363e3){if(!_0x5363e3){_0xe8bbee[_0x0d8b('0x18')](0x194);}return _0x5363e3;};}function handleError(_0x4a0ae4,_0x3dd149){_0x3dd149=_0x3dd149||0x1f4;return function(_0x234bdd){logger[_0x0d8b('0x26')](_0x234bdd['stack']);if(_0x234bdd['name']){delete _0x234bdd[_0x0d8b('0x27')];}_0x4a0ae4[_0x0d8b('0x19')](_0x3dd149)['send'](_0x234bdd);};}exports[_0x0d8b('0x28')]=function(_0x59aa83,_0x1b2b59){var _0x4b59e5={'raw':!![],'where':{'id':_0x59aa83['params']['id']}},_0x97050a={};_0x97050a[_0x0d8b('0x29')]=_['keys'](db[_0x0d8b('0x2a')]['rawAttributes']);_0x97050a[_0x0d8b('0x2b')]=_[_0x0d8b('0x2c')](_0x59aa83[_0x0d8b('0x2b')]);_0x97050a['filters']=_['intersection'](_0x97050a['model'],_0x97050a[_0x0d8b('0x2b')]);_0x4b59e5['attributes']=_[_0x0d8b('0x2d')](_0x97050a['model'],qs['fields'](_0x59aa83[_0x0d8b('0x2b')][_0x0d8b('0x2e')]));_0x4b59e5[_0x0d8b('0x2f')]=_0x4b59e5[_0x0d8b('0x2f')][_0x0d8b('0x30')]?_0x4b59e5[_0x0d8b('0x2f')]:_0x97050a[_0x0d8b('0x29')];if(_0x59aa83[_0x0d8b('0x2b')]['includeAll']){_0x4b59e5[_0x0d8b('0x31')]=[{'all':!![]}];}_0x4b59e5=_[_0x0d8b('0x32')]({},_0x4b59e5,_0x59aa83['options']);return db[_0x0d8b('0x2a')][_0x0d8b('0x33')](_0x4b59e5)[_0x0d8b('0x24')](handleEntityNotFound(_0x1b2b59,null))['then'](respondWithResult(_0x1b2b59,null))[_0x0d8b('0x34')](handleError(_0x1b2b59,null));};exports[_0x0d8b('0x23')]=function(_0x206157,_0x31ceba){if(_0x206157[_0x0d8b('0x35')]['id']){delete _0x206157['body']['id'];}return db[_0x0d8b('0x2a')][_0x0d8b('0x33')]({'where':{'id':_0x206157['params']['id']}})[_0x0d8b('0x24')](handleEntityNotFound(_0x31ceba,null))[_0x0d8b('0x24')](saveUpdates(_0x206157[_0x0d8b('0x35')],null))[_0x0d8b('0x24')](respondWithResult(_0x31ceba,null))[_0x0d8b('0x34')](handleError(_0x31ceba,null));};exports['destroy']=function(_0x497a71,_0x41b4f9){return db['MailApplication']['find']({'where':{'id':_0x497a71[_0x0d8b('0x36')]['id']}})[_0x0d8b('0x24')](handleEntityNotFound(_0x41b4f9,null))[_0x0d8b('0x24')](removeEntity(_0x41b4f9,null))[_0x0d8b('0x34')](handleError(_0x41b4f9,null));};
\ No newline at end of file
index 0597d4e..db86f5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabb9=['api','moment','request-promise','path','rimraf','exports','MailApplication','mail_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger'];(function(_0x261a06,_0x379b82){var _0x250ad6=function(_0x3f50ee){while(--_0x3f50ee){_0x261a06['push'](_0x261a06['shift']());}};_0x250ad6(++_0x379b82);}(_0xabb9,0x10e));var _0x9abb=function(_0x349fee,_0x3267d6){_0x349fee=_0x349fee-0x0;var _0x35977a=_0xabb9[_0x349fee];return _0x35977a;};'use strict';var _=require(_0x9abb('0x0'));var util=require(_0x9abb('0x1'));var logger=require(_0x9abb('0x2'))(_0x9abb('0x3'));var moment=require(_0x9abb('0x4'));var BPromise=require('bluebird');var rp=require(_0x9abb('0x5'));var fs=require('fs');var path=require(_0x9abb('0x6'));var rimraf=require(_0x9abb('0x7'));var config=require('../../config/environment');var attributes=require('./mailApplication.attributes');module[_0x9abb('0x8')]=function(_0x2ea1a4,_0x2ad077){return _0x2ea1a4['define'](_0x9abb('0x9'),attributes,{'tableName':_0x9abb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x9abb('0xb'),'collate':_0x9abb('0xc')});};
\ No newline at end of file
+var _0x685c=['bluebird','request-promise','path','rimraf','exports','MailApplication','mail_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment'];(function(_0x4b23b0,_0xf3d9b4){var _0x1440d7=function(_0xcbf17b){while(--_0xcbf17b){_0x4b23b0['push'](_0x4b23b0['shift']());}};_0x1440d7(++_0xf3d9b4);}(_0x685c,0x1bb));var _0xc685=function(_0x131b6a,_0x13c1d3){_0x131b6a=_0x131b6a-0x0;var _0x11b39d=_0x685c[_0x131b6a];return _0x11b39d;};'use strict';var _=require(_0xc685('0x0'));var util=require(_0xc685('0x1'));var logger=require(_0xc685('0x2'))(_0xc685('0x3'));var moment=require(_0xc685('0x4'));var BPromise=require(_0xc685('0x5'));var rp=require(_0xc685('0x6'));var fs=require('fs');var path=require(_0xc685('0x7'));var rimraf=require(_0xc685('0x8'));var config=require('../../config/environment');var attributes=require('./mailApplication.attributes');module[_0xc685('0x9')]=function(_0x53a11c,_0x20fb5c){return _0x53a11c['define'](_0xc685('0xa'),attributes,{'tableName':_0xc685('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc685('0xc'),'collate':_0xc685('0xd')});};
\ No newline at end of file
index f67ee1f..9366d2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f8d=['util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s','stringify','error','MailApplication,\x20%s,\x20%s','message','result','catch','UpdateMailApplication','update','body','options','where','attributes','limit','then','lodash'];(function(_0x4d39ad,_0x510b46){var _0x9b2a6f=function(_0x5953c7){while(--_0x5953c7){_0x4d39ad['push'](_0x4d39ad['shift']());}};_0x9b2a6f(++_0x510b46);}(_0x0f8d,0x185));var _0xd0f8=function(_0x5c47d8,_0x47eff2){_0x5c47d8=_0x5c47d8-0x0;var _0x5988c7=_0x0f8d[_0x5c47d8];return _0x5988c7;};'use strict';var _=require(_0xd0f8('0x0'));var util=require(_0xd0f8('0x1'));var moment=require(_0xd0f8('0x2'));var BPromise=require('bluebird');var rs=require(_0xd0f8('0x3'));var fs=require('fs');var Redis=require(_0xd0f8('0x4'));var db=require(_0xd0f8('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xd0f8('0x6'))('rpc');var config=require(_0xd0f8('0x7'));var jayson=require(_0xd0f8('0x8'));var client=jayson[_0xd0f8('0x9')][_0xd0f8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5ab218,_0x5bc5ba,_0x683230){return new BPromise(function(_0x13a88d,_0x5d4279){return client[_0xd0f8('0xb')](_0x5ab218,_0x683230)['then'](function(_0x27760d){logger[_0xd0f8('0xc')]('MailApplication,\x20%s,\x20%s',_0x5bc5ba,_0xd0f8('0xd'));logger[_0xd0f8('0xe')](_0xd0f8('0xf'),_0x5bc5ba,_0xd0f8('0xd'),JSON[_0xd0f8('0x10')](_0x27760d));if(_0x27760d[_0xd0f8('0x11')]){if(_0x27760d['error']['code']===0x1f4){logger[_0xd0f8('0x11')](_0xd0f8('0x12'),_0x5bc5ba,_0x27760d[_0xd0f8('0x11')][_0xd0f8('0x13')]);return _0x5d4279(_0x27760d[_0xd0f8('0x11')][_0xd0f8('0x13')]);}logger[_0xd0f8('0x11')](_0xd0f8('0x12'),_0x5bc5ba,_0x27760d[_0xd0f8('0x11')]['message']);return _0x13a88d(_0x27760d[_0xd0f8('0x11')][_0xd0f8('0x13')]);}else{logger[_0xd0f8('0xc')](_0xd0f8('0x12'),_0x5bc5ba,_0xd0f8('0xd'));_0x13a88d(_0x27760d[_0xd0f8('0x14')][_0xd0f8('0x13')]);}})[_0xd0f8('0x15')](function(_0x2af82a){logger['error'](_0xd0f8('0x12'),_0x5bc5ba,_0x2af82a);_0x5d4279(_0x2af82a);});});}exports[_0xd0f8('0x16')]=function(_0x2faa69){var _0x7d759f=this;return new Promise(function(_0xe0c06b,_0x45ef96){return db['MailApplication'][_0xd0f8('0x17')](_0x2faa69[_0xd0f8('0x18')],{'raw':_0x2faa69[_0xd0f8('0x19')]?_0x2faa69['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2faa69[_0xd0f8('0x19')]?_0x2faa69[_0xd0f8('0x19')][_0xd0f8('0x1a')]||null:null,'attributes':_0x2faa69[_0xd0f8('0x19')]?_0x2faa69[_0xd0f8('0x19')][_0xd0f8('0x1b')]||null:null,'limit':_0x2faa69['options']?_0x2faa69[_0xd0f8('0x19')][_0xd0f8('0x1c')]||null:null})[_0xd0f8('0x1d')](function(_0x31a059){logger[_0xd0f8('0xc')](_0xd0f8('0x16'),_0x2faa69);logger[_0xd0f8('0xe')](_0xd0f8('0x16'),_0x2faa69,JSON[_0xd0f8('0x10')](_0x31a059));_0xe0c06b(_0x31a059);})[_0xd0f8('0x15')](function(_0x3af6f5){logger[_0xd0f8('0x11')](_0xd0f8('0x16'),_0x3af6f5['message'],_0x2faa69);_0x45ef96(_0x7d759f[_0xd0f8('0x11')](0x1f4,_0x3af6f5[_0xd0f8('0x13')]));});});};
\ No newline at end of file
+var _0x7788=['raw','options','where','attributes','limit','lodash','util','moment','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','MailApplication,\x20%s,\x20%s','request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','UpdateMailApplication','MailApplication','update','body'];(function(_0x566bb4,_0x2a9b96){var _0xc9d199=function(_0x8b8032){while(--_0x8b8032){_0x566bb4['push'](_0x566bb4['shift']());}};_0xc9d199(++_0x2a9b96);}(_0x7788,0x185));var _0x8778=function(_0x1526a9,_0x48fb64){_0x1526a9=_0x1526a9-0x0;var _0x9f4049=_0x7788[_0x1526a9];return _0x9f4049;};'use strict';var _=require(_0x8778('0x0'));var util=require(_0x8778('0x1'));var moment=require(_0x8778('0x2'));var BPromise=require('bluebird');var rs=require(_0x8778('0x3'));var fs=require('fs');var Redis=require(_0x8778('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x8778('0x5'))(_0x8778('0x6'));var config=require(_0x8778('0x7'));var jayson=require(_0x8778('0x8'));var client=jayson[_0x8778('0x9')][_0x8778('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x431375,_0x1b217e,_0x591ab7){return new BPromise(function(_0x30c345,_0x5ae985){return client[_0x8778('0xb')](_0x431375,_0x591ab7)[_0x8778('0xc')](function(_0x280a92){logger[_0x8778('0xd')](_0x8778('0xe'),_0x1b217e,_0x8778('0xf'));logger[_0x8778('0x10')](_0x8778('0x11'),_0x1b217e,_0x8778('0xf'),JSON['stringify'](_0x280a92));if(_0x280a92['error']){if(_0x280a92[_0x8778('0x12')][_0x8778('0x13')]===0x1f4){logger[_0x8778('0x12')](_0x8778('0xe'),_0x1b217e,_0x280a92[_0x8778('0x12')][_0x8778('0x14')]);return _0x5ae985(_0x280a92['error'][_0x8778('0x14')]);}logger[_0x8778('0x12')]('MailApplication,\x20%s,\x20%s',_0x1b217e,_0x280a92[_0x8778('0x12')]['message']);return _0x30c345(_0x280a92[_0x8778('0x12')]['message']);}else{logger[_0x8778('0xd')]('MailApplication,\x20%s,\x20%s',_0x1b217e,_0x8778('0xf'));_0x30c345(_0x280a92[_0x8778('0x15')][_0x8778('0x14')]);}})[_0x8778('0x16')](function(_0x11c617){logger[_0x8778('0x12')]('MailApplication,\x20%s,\x20%s',_0x1b217e,_0x11c617);_0x5ae985(_0x11c617);});});}exports[_0x8778('0x17')]=function(_0x76ea81){var _0x36a755=this;return new Promise(function(_0x384b7a,_0x2a72ff){return db[_0x8778('0x18')][_0x8778('0x19')](_0x76ea81[_0x8778('0x1a')],{'raw':_0x76ea81['options']?_0x76ea81['options'][_0x8778('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x76ea81[_0x8778('0x1c')]?_0x76ea81[_0x8778('0x1c')][_0x8778('0x1d')]||null:null,'attributes':_0x76ea81[_0x8778('0x1c')]?_0x76ea81[_0x8778('0x1c')][_0x8778('0x1e')]||null:null,'limit':_0x76ea81[_0x8778('0x1c')]?_0x76ea81[_0x8778('0x1c')][_0x8778('0x1f')]||null:null})[_0x8778('0xc')](function(_0x12f979){logger[_0x8778('0xd')](_0x8778('0x17'),_0x76ea81);logger['debug']('UpdateMailApplication',_0x76ea81,JSON['stringify'](_0x12f979));_0x384b7a(_0x12f979);})[_0x8778('0x16')](function(_0x23c1f9){logger[_0x8778('0x12')]('UpdateMailApplication',_0x23c1f9[_0x8778('0x14')],_0x76ea81);_0x2a72ff(_0x36a755[_0x8778('0x12')](0x1f4,_0x23c1f9[_0x8778('0x14')]));});});};
\ No newline at end of file
index 0f0eb51..35fcea2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x129e=['put','tracked','update','delete','destroy','removeTags','exports','express','Router','../../components/auth/service','../../components/interaction/service','isAuthenticated','describe','get','/:id','/:id/messages','getMessages','/:id/download','post','create','/:id/tags','mail','mailinteraction:addtags','addTags'];(function(_0x49e5b3,_0x5bce3d){var _0x12b154=function(_0x1bf90a){while(--_0x1bf90a){_0x49e5b3['push'](_0x49e5b3['shift']());}};_0x12b154(++_0x5bce3d);}(_0x129e,0x67));var _0xe129=function(_0x339633,_0x1052bc){_0x339633=_0x339633-0x0;var _0x3819fb=_0x129e[_0x339633];return _0x3819fb;};'use strict';var express=require(_0xe129('0x0'));var router=express[_0xe129('0x1')]();var auth=require(_0xe129('0x2'));var interaction=require(_0xe129('0x3'));var controller=require('./mailInteraction.controller');router['get']('/',auth[_0xe129('0x4')](),controller['index']);router['get']('/describe',auth['isAuthenticated'](),controller[_0xe129('0x5')]);router[_0xe129('0x6')](_0xe129('0x7'),auth[_0xe129('0x4')](),controller['show']);router[_0xe129('0x6')](_0xe129('0x8'),auth[_0xe129('0x4')](),controller[_0xe129('0x9')]);router['get'](_0xe129('0xa'),auth[_0xe129('0x4')](),controller['download']);router[_0xe129('0xb')]('/',auth[_0xe129('0x4')](),controller[_0xe129('0xc')]);router['post'](_0xe129('0x8'),auth[_0xe129('0x4')](),controller['addMessage']);router[_0xe129('0xb')](_0xe129('0xd'),auth[_0xe129('0x4')](),interaction['tracked'](_0xe129('0xe'),_0xe129('0xf')),controller[_0xe129('0x10')]);router[_0xe129('0x11')](_0xe129('0x7'),auth[_0xe129('0x4')](),interaction[_0xe129('0x12')](_0xe129('0xe'),'mailinteraction:update'),controller[_0xe129('0x13')]);router[_0xe129('0x14')](_0xe129('0x7'),auth[_0xe129('0x4')](),interaction['tracked']('mail','mailinteraction:destroy'),controller[_0xe129('0x15')]);router['delete'](_0xe129('0xd'),auth[_0xe129('0x4')](),controller[_0xe129('0x16')]);module[_0xe129('0x17')]=router;
\ No newline at end of file
+var _0x6d1a=['show','/:id/messages','getMessages','/:id/download','post','addMessage','mail','mailinteraction:addtags','addTags','put','/:id','tracked','update','mailinteraction:destroy','destroy','delete','exports','express','Router','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x15e1ca,_0x50df5d){var _0xd0c43c=function(_0x1f9f78){while(--_0x1f9f78){_0x15e1ca['push'](_0x15e1ca['shift']());}};_0xd0c43c(++_0x50df5d);}(_0x6d1a,0xb3));var _0xa6d1=function(_0xfb72c,_0x400d94){_0xfb72c=_0xfb72c-0x0;var _0x52e905=_0x6d1a[_0xfb72c];return _0x52e905;};'use strict';var express=require(_0xa6d1('0x0'));var router=express[_0xa6d1('0x1')]();var auth=require(_0xa6d1('0x2'));var interaction=require(_0xa6d1('0x3'));var controller=require(_0xa6d1('0x4'));router[_0xa6d1('0x5')]('/',auth[_0xa6d1('0x6')](),controller[_0xa6d1('0x7')]);router['get'](_0xa6d1('0x8'),auth['isAuthenticated'](),controller[_0xa6d1('0x9')]);router['get']('/:id',auth[_0xa6d1('0x6')](),controller[_0xa6d1('0xa')]);router[_0xa6d1('0x5')](_0xa6d1('0xb'),auth[_0xa6d1('0x6')](),controller[_0xa6d1('0xc')]);router['get'](_0xa6d1('0xd'),auth[_0xa6d1('0x6')](),controller['download']);router[_0xa6d1('0xe')]('/',auth[_0xa6d1('0x6')](),controller['create']);router['post'](_0xa6d1('0xb'),auth[_0xa6d1('0x6')](),controller[_0xa6d1('0xf')]);router[_0xa6d1('0xe')]('/:id/tags',auth[_0xa6d1('0x6')](),interaction['tracked'](_0xa6d1('0x10'),_0xa6d1('0x11')),controller[_0xa6d1('0x12')]);router[_0xa6d1('0x13')](_0xa6d1('0x14'),auth[_0xa6d1('0x6')](),interaction[_0xa6d1('0x15')](_0xa6d1('0x10'),'mailinteraction:update'),controller[_0xa6d1('0x16')]);router['delete'](_0xa6d1('0x14'),auth['isAuthenticated'](),interaction[_0xa6d1('0x15')]('mail',_0xa6d1('0x17')),controller[_0xa6d1('0x18')]);router[_0xa6d1('0x19')]('/:id/tags',auth[_0xa6d1('0x6')](),controller['removeTags']);module[_0xa6d1('0x1a')]=router;
\ No newline at end of file
index b87968d..e9e16fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c2b=['STRING','long','TEXT','ENUM','out','iconv','BOOLEAN','DATE'];(function(_0x12fc8d,_0x19ee33){var _0x3f9d04=function(_0x52e51c){while(--_0x52e51c){_0x12fc8d['push'](_0x12fc8d['shift']());}};_0x3f9d04(++_0x19ee33);}(_0x9c2b,0x1a5));var _0xb9c2=function(_0x12fc8d,_0x19ee33){_0x12fc8d=_0x12fc8d-0x0;var _0x3f9d04=_0x9c2b[_0x12fc8d];return _0x3f9d04;};'use strict';var Sequelize=require('sequelize');var iconv=require(_0xb9c2('0x0'));module['exports']={'closed':{'type':Sequelize[_0xb9c2('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xb9c2('0x2')]},'disposition':{'type':Sequelize[_0xb9c2('0x3')]},'secondDisposition':{'type':Sequelize[_0xb9c2('0x3')]},'thirdDisposition':{'type':Sequelize[_0xb9c2('0x3')]},'note':{'type':Sequelize[_0xb9c2('0x3')]},'inReplyTo':{'type':Sequelize['STRING'](0x1fe)},'to':{'type':Sequelize[_0xb9c2('0x3')]},'cc':{'type':Sequelize['TEXT'](_0xb9c2('0x4'))},'subject':{'type':Sequelize[_0xb9c2('0x5')]()},'attach':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0xb9c2('0x2')]},'substatus':{'type':Sequelize[_0xb9c2('0x3')](0x3c)},'substatusAt':{'type':Sequelize[_0xb9c2('0x2')]},'firstMsgDirection':{'type':Sequelize[_0xb9c2('0x6')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0xb9c2('0x6')]('in',_0xb9c2('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xb9c2('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0x4d29=['exports','BOOLEAN','DATE','STRING','long','TEXT','ENUM','out'];(function(_0x167307,_0x5a60ae){var _0x550140=function(_0x5b5009){while(--_0x5b5009){_0x167307['push'](_0x167307['shift']());}};_0x550140(++_0x5a60ae);}(_0x4d29,0xc8));var _0x94d2=function(_0x43205a,_0x3bd9f3){_0x43205a=_0x43205a-0x0;var _0x32d6a4=_0x4d29[_0x43205a];return _0x32d6a4;};'use strict';var Sequelize=require('sequelize');var iconv=require('iconv');module[_0x94d2('0x0')]={'closed':{'type':Sequelize[_0x94d2('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x94d2('0x2')]},'disposition':{'type':Sequelize[_0x94d2('0x3')]},'secondDisposition':{'type':Sequelize[_0x94d2('0x3')]},'thirdDisposition':{'type':Sequelize[_0x94d2('0x3')]},'note':{'type':Sequelize[_0x94d2('0x3')]},'inReplyTo':{'type':Sequelize[_0x94d2('0x3')](0x1fe)},'to':{'type':Sequelize[_0x94d2('0x3')]},'cc':{'type':Sequelize['TEXT'](_0x94d2('0x4'))},'subject':{'type':Sequelize[_0x94d2('0x5')]()},'attach':{'type':Sequelize[_0x94d2('0x1')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x94d2('0x2')]},'substatus':{'type':Sequelize[_0x94d2('0x3')](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x94d2('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x94d2('0x6')]('in',_0x94d2('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x94d2('0x1')],'defaultValue':![]}};
\ No newline at end of file
index 22a94a5..7ee4b62 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(_0x1c557a,_0x554e3b){var _0x30fc54=function(_0x17e964){while(--_0x17e964){_0x1c557a['push'](_0x1c557a['shift']());}};_0x30fc54(++_0x554e3b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0xa9e0[_0x3b5250];return _0xc844a1;};'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 _0x648b=['read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','isEmail','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','i.id','Sequelize','SELECT','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','contactName','i.MailAccountId\x20IS\x20NOT\x20NULL','user','i.MailAccountId\x20IS\x20NULL','role','sequelize','toString','count','keyBy','merge','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','i.createdAt','i.updatedAt','i.lastMsgAt','i.lastMsgDirection','i.subject','i.disposition','i.secondDisposition','i.thirdDisposition','i.ContactId','i.MailAccountId','i.UserId','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.MailInteractionId\x20IN\x20?','groupBy','MailInteractionId','Setting','findOne','enableEmailPreview','all','show','params','rawAttributes','includeAll','include','create','body','describe','addMessage','ids','getMessages','$gte','split','format','options','findAll','true','addTags','setTags','omit','spread','emit','mailInteractionTags:save','removeTags','download','unix','server','tmp','join','files','transcript-%d-%s.zip','Attachment','Attachments','Messages','subject','createdAt','get','mkdirSync','each','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','bcc','basename','existsSync','attachments','readFileSync','writeFileSync','message%d.eml','unlinkSync','eml-format','rimraf','util','path','lodash','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../mysqldb','html-entities','redis','defaults','localhost','./mailInteraction.socket','status','offset','undefined','limit','Content-Range','json','update','destroy','then','end','sendStatus','stack','name','Users','map','fullname','TagIds','Tags','push','MailMessage','out','plainBody','catch','index','MailInteraction','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','filters','pick','select','field','color','from','u.id','u.fullname','user_has_mail_interactions','left_join','u.id\x20=\x20ui.UserId','mail_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','mail_accounts','mail_messages','me.MailInteractionId\x20=\x20i.id','mail_interaction_has_tags','it.MailInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','find','unreadMessages','having','`\x20>\x200','Contact','operator','getFullTextValue','value','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','Tag','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','isEmpty','MailAccountId','where','i.MailAccountId\x20IN\x20?','concat','parse','null','\x20IS\x20NULL','\x20=\x20?'];(function(_0x521929,_0x479be5){var _0x632436=function(_0x288290){while(--_0x288290){_0x521929['push'](_0x521929['shift']());}};_0x632436(++_0x479be5);}(_0x648b,0x73));var _0xb648=function(_0x231ddb,_0xf437f2){_0x231ddb=_0x231ddb-0x0;var _0x5a0521=_0x648b[_0x231ddb];return _0x5a0521;};'use strict';var emlformat=require(_0xb648('0x0'));var rimraf=require(_0xb648('0x1'));var zipdir=require('zip-dir');var moment=require('moment');var BPromise=require('bluebird');var util=require(_0xb648('0x2'));var path=require(_0xb648('0x3'));var fs=require('fs');var _=require(_0xb648('0x4'));var squel=require('squel');var juice=require('juice');var Redis=require(_0xb648('0x5'));var qs=require(_0xb648('0x6'));var as=require(_0xb648('0x7'));var logger=require(_0xb648('0x8'))('api');var config=require(_0xb648('0x9'));var db=require(_0xb648('0xa'))['db'];var htmlEntities=require(_0xb648('0xb'));config[_0xb648('0xc')]=_[_0xb648('0xd')](config[_0xb648('0xc')],{'host':_0xb648('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb648('0xc')]));require(_0xb648('0xf'))['register'](socket);function respondWithStatusCode(_0x56bc22,_0x1ccb6b){_0x1ccb6b=_0x1ccb6b||0xcc;return function(_0x2c817b){if(_0x2c817b){return _0x56bc22['sendStatus'](_0x1ccb6b);}return _0x56bc22[_0xb648('0x10')](_0x1ccb6b)['end']();};}function respondWithResult(_0x4ad507,_0x3db95c){_0x3db95c=_0x3db95c||0xc8;return function(_0x367628){if(_0x367628){return _0x4ad507[_0xb648('0x10')](_0x3db95c)['json'](_0x367628);}};}function respondWithFilteredResult(_0x1229a8,_0x5d49fb){return function(_0x5a7cde){if(_0x5a7cde){var _0x44bd94=typeof _0x5d49fb[_0xb648('0x11')]===_0xb648('0x12')&&typeof _0x5d49fb[_0xb648('0x13')]===_0xb648('0x12');var _0x2e4b16=_0x5a7cde['count'];var _0x26b18b=_0x44bd94?0x0:_0x5d49fb[_0xb648('0x11')];var _0x1be5c9=_0x44bd94?_0x5a7cde['count']:_0x5d49fb[_0xb648('0x11')]+_0x5d49fb[_0xb648('0x13')];var _0x4c7018;if(_0x1be5c9>=_0x2e4b16){_0x1be5c9=_0x2e4b16;_0x4c7018=0xc8;}else{_0x4c7018=0xce;}_0x1229a8[_0xb648('0x10')](_0x4c7018);return _0x1229a8['set'](_0xb648('0x14'),_0x26b18b+'-'+_0x1be5c9+'/'+_0x2e4b16)[_0xb648('0x15')](_0x5a7cde);}return null;};}function saveUpdates(_0x5c8a7b){return function(_0x436d8a){if(_0x436d8a){return _0x436d8a[_0xb648('0x16')](_0x5c8a7b)['then'](function(_0x55cbe0){return _0x55cbe0;});}return null;};}function removeEntity(_0x4e5f44){return function(_0x15e448){if(_0x15e448){return _0x15e448[_0xb648('0x17')]()[_0xb648('0x18')](function(){_0x4e5f44[_0xb648('0x10')](0xcc)[_0xb648('0x19')]();});}};}function handleEntityNotFound(_0x3507ec){return function(_0x1aa43b){if(!_0x1aa43b){_0x3507ec[_0xb648('0x1a')](0x194);}return _0x1aa43b;};}function handleError(_0x22eac9,_0x2d460d){_0x2d460d=_0x2d460d||0x1f4;return function(_0xa73c51){logger['error'](_0xa73c51[_0xb648('0x1b')]);if(_0xa73c51[_0xb648('0x1c')]){delete _0xa73c51[_0xb648('0x1c')];}_0x22eac9['status'](_0x2d460d)['send'](_0xa73c51);};}function getInteractionUsers(_0x2e1779,_0x145efe){return new BPromise(function(_0x38b3d0,_0x32cbca){try{if(_0x145efe[_0x2e1779['id']]){_0x2e1779[_0xb648('0x1d')]=_[_0xb648('0x1e')](_0x145efe[_0x2e1779['id']],function(_0x5cc289){return{'id':_0x5cc289['id'],'fullname':_0x5cc289[_0xb648('0x1f')]};});}}catch(_0x4a5e73){_0x32cbca(_0x4a5e73);}_0x38b3d0(_0x2e1779);});}function getInteractionTags(_0xa64803,_0x1b970a){return new BPromise(function(_0xfe416b,_0x500f86){try{if(_0xa64803[_0xb648('0x20')]){_0xa64803[_0xb648('0x21')]=[];_0xa64803[_0xb648('0x20')]['split'](',')['forEach'](function(_0x53d56a){_0xa64803[_0xb648('0x21')][_0xb648('0x22')](_0x1b970a[_0x53d56a]);});}delete _0xa64803['TagIds'];}catch(_0x356362){_0x500f86(_0x356362);}_0xfe416b(_0xa64803);});}function getLastMessageText(_0x43437f){return new BPromise(function(_0x14f4cb,_0x2ac0d4){return db[_0xb648('0x23')]['findOne']({'where':{'$and':[{'MailInteractionId':_0x43437f['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0xb648('0x24')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':'-id','raw':!![]})['then'](function(_0x4acb9b){if(_0x4acb9b&&_0x4acb9b[_0xb648('0x25')]){_0x43437f['lastMsgText']=_['trimStart'](_0x4acb9b[_0xb648('0x25')]);}_0x14f4cb(_0x43437f);})[_0xb648('0x26')](function(_0x126c64){_0x2ac0d4(_0x126c64);});});}function updateMailInteraction(_0x5c0f3d,_0x3408d5,_0x2153f6,_0x5335e8){return new BPromise(function(_0x1aeaf6,_0x1a2831){return getInteractionUsers(_0x5c0f3d,_0x2153f6)[_0xb648('0x18')](function(_0x8361dd){return getInteractionTags(_0x8361dd,_0x3408d5);})[_0xb648('0x18')](function(_0x1ff7c1){if(_0x5335e8){_0x1aeaf6(getLastMessageText(_0x1ff7c1));}else{_0x1aeaf6(_0x1ff7c1);}})[_0xb648('0x26')](function(_0x3a82e9){_0x1a2831(_0x3a82e9);});});}exports[_0xb648('0x27')]=function(_0x5e6ab2,_0x230749){var _0x41a792={},_0x390c9f={},_0x1c331c={'count':0x0,'rows':[]};var _0x25aaf0=_[_0xb648('0x1e')](db[_0xb648('0x28')]['rawAttributes'],function(_0x3a5843){return{'name':_0x3a5843[_0xb648('0x29')],'type':_0x3a5843[_0xb648('0x2a')]['key']};});_0x390c9f[_0xb648('0x2b')]=_['map'](_0x25aaf0,_0xb648('0x1c'));_0x390c9f[_0xb648('0x2c')]=_[_0xb648('0x2d')](_0x5e6ab2[_0xb648('0x2c')]);_0x390c9f['filters']=_[_0xb648('0x2e')](_0x390c9f[_0xb648('0x2b')],_0x390c9f[_0xb648('0x2c')]);_0x41a792[_0xb648('0x2f')]=_[_0xb648('0x2e')](_0x390c9f[_0xb648('0x2b')],qs['fields'](_0x5e6ab2[_0xb648('0x2c')][_0xb648('0x30')]));_0x41a792[_0xb648('0x2f')]=_0x41a792[_0xb648('0x2f')][_0xb648('0x31')]?_0x41a792['attributes']:_0x390c9f['model'];if(!_0x5e6ab2[_0xb648('0x2c')][_0xb648('0x32')](_0xb648('0x33'))){_0x41a792[_0xb648('0x13')]=qs[_0xb648('0x13')](_0x5e6ab2[_0xb648('0x2c')][_0xb648('0x13')]);_0x41a792[_0xb648('0x11')]=qs[_0xb648('0x11')](_0x5e6ab2[_0xb648('0x2c')][_0xb648('0x11')]);}_0x41a792['order']=qs[_0xb648('0x34')](_0x5e6ab2[_0xb648('0x2c')][_0xb648('0x34')]);_0x41a792['where']=qs[_0xb648('0x35')](_[_0xb648('0x36')](_0x5e6ab2[_0xb648('0x2c')],_0x390c9f[_0xb648('0x35')]),_0x25aaf0);var _0x340144=[];var _0x537468=squel[_0xb648('0x37')]()[_0xb648('0x38')]('id')[_0xb648('0x38')](_0xb648('0x1c'))[_0xb648('0x38')](_0xb648('0x39'))[_0xb648('0x3a')]('tools_tags');var _0x1fcc32=squel[_0xb648('0x37')]()[_0xb648('0x38')](_0xb648('0x3b'))[_0xb648('0x38')](_0xb648('0x3c'))['field']('ui.MailInteractionId')[_0xb648('0x3a')](_0xb648('0x3d'),'ui')[_0xb648('0x3e')]('users','u',_0xb648('0x3f'));var _0x13f9a6=squel[_0xb648('0x37')]()[_0xb648('0x3a')](_0xb648('0x40'),'i')[_0xb648('0x3e')]('cm_contacts','c',_0xb648('0x41'))[_0xb648('0x3e')]('users','o','o.id\x20=\x20i.UserId')[_0xb648('0x3e')](_0xb648('0x42'),'a','a.id\x20=\x20i.MailAccountId')[_0xb648('0x3e')](_0xb648('0x43'),'me',_0xb648('0x44'))[_0xb648('0x3e')](_0xb648('0x45'),'it',_0xb648('0x46'))[_0xb648('0x3e')]('tools_tags','t',_0xb648('0x47'));var _0x57c2f7=squel[_0xb648('0x48')]();var _0x3184eb=[];var _0x1b4c79=squel[_0xb648('0x48')]();var _0x2fe0dd;if(_0x5e6ab2[_0xb648('0x2c')]['search']){_0x2fe0dd=as['parseSearch'](_0x5e6ab2[_0xb648('0x2c')][_0xb648('0x49')]);var _0x3d6dd7=_0x2fe0dd[_0xb648('0x4a')];for(var _0x12d7f6=0x0;_0x12d7f6<_0x2fe0dd[_0xb648('0x4b')][_0xb648('0x31')];_0x12d7f6++){var _0x3faa1d=_0x2fe0dd['conditions'][_0x12d7f6];var _0x330632='i';var _0x465de7=_[_0xb648('0x4c')](_0x25aaf0,[_0xb648('0x1c'),_0x3faa1d[_0xb648('0x38')]]);if(!_0x465de7){switch(_0x3faa1d['field']){case _0xb648('0x4d'):if(_0x3faa1d['value']==0x1){_0x13f9a6[_0xb648('0x4e')]('`'+_0x3faa1d[_0xb648('0x38')]+'`\x20=\x200');}else{_0x13f9a6[_0xb648('0x4e')]('`'+_0x3faa1d[_0xb648('0x38')]+_0xb648('0x4f'));}break;case _0xb648('0x50'):if(_0x3faa1d[_0xb648('0x51')]==='$substring'){if(_0x3faa1d['value']['split']('\x20')[_0xb648('0x31')]>0x1){_0x57c2f7[_0x3d6dd7]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xb648('0x52')](_0x3faa1d[_0xb648('0x53')]),null);}else{var _0x59ccda='%'+_0x3faa1d[_0xb648('0x53')]+'%';_0x57c2f7[_0x3d6dd7](_0xb648('0x54'),_0x59ccda,_0x59ccda,_0x59ccda);}}else{_0x465de7=_['find'](_0x25aaf0,[_0xb648('0x1c'),_0xb648('0x55')]);_0x3faa1d['field']=_0xb648('0x55');_0x5e6cbc=as[_0xb648('0x56')](_0x330632,_0x465de7[_0xb648('0x2a')],_0x3faa1d);_0x57c2f7[_0x3d6dd7](_0x5e6cbc[_0xb648('0x57')],_0x5e6cbc[_0xb648('0x53')][_0xb648('0x58')],_0x5e6cbc[_0xb648('0x53')]['end']);}break;case _0xb648('0x59'):var _0x39d386=_0x3faa1d[_0xb648('0x53')]['split'](',')[_0xb648('0x1e')](function(_0x4ddf2e){return Number(_0x4ddf2e);});_0x39d386[_0xb648('0x5a')](function(_0x10dd0b){_0x1b4c79['or'](_0xb648('0x5b'),'%,'+_0x10dd0b+',%');});_0x3184eb=_[_0xb648('0x5c')](_0x3184eb,_0x39d386);break;case _0xb648('0x5d'):if(_0x3faa1d['operator']===_0xb648('0x5e')){_0x57c2f7[_0x3d6dd7](_0xb648('0x5f'),'%'+_0x3faa1d['value']+'%',null);}else{_0x465de7=_[_0xb648('0x4c')](_0x25aaf0,[_0xb648('0x1c'),'UserId']);_0x3faa1d[_0xb648('0x38')]='UserId';_0x5e6cbc=as[_0xb648('0x56')](_0x330632,_0x465de7['type'],_0x3faa1d);_0x57c2f7[_0x3d6dd7](_0x5e6cbc[_0xb648('0x57')],_0x5e6cbc[_0xb648('0x53')][_0xb648('0x58')],_0x5e6cbc['value']['end']);}break;case _0xb648('0x25'):_0x5e6cbc=as['buildExpression']('me',null,_0x3faa1d);_0x57c2f7[_0x3d6dd7](_0x5e6cbc[_0xb648('0x57')],_0x5e6cbc[_0xb648('0x53')][_0xb648('0x58')],_0x5e6cbc[_0xb648('0x53')]['end']);break;}}else{var _0x5e6cbc=as[_0xb648('0x56')](_0x330632,_0x465de7[_0xb648('0x2a')],_0x3faa1d);_0x57c2f7[_0x3d6dd7](_0x5e6cbc['text'],_0x5e6cbc[_0xb648('0x53')][_0xb648('0x58')],_0x5e6cbc[_0xb648('0x53')]['end']);}}}else{var _0x15c812=_(_0x5e6ab2['query'])['keys']()[_0xb648('0x1e')](function(_0x4dd809){return _['some'](_0x25aaf0,['name',_0x4dd809])?_0x4dd809:undefined;})['compact']()[_0xb648('0x53')]();if(!_[_0xb648('0x60')](_0x15c812)){_0x15c812[_0xb648('0x5a')](function(_0x33058d){if(_0x33058d===_0xb648('0x61')){_0x13f9a6[_0xb648('0x62')](_0xb648('0x63'),[][_0xb648('0x64')](_0x5e6ab2[_0xb648('0x2c')][_0x33058d]));}else if(_0x33058d==='createdAt'){var _0x1cfafd=JSON[_0xb648('0x65')](_0x5e6ab2[_0xb648('0x2c')][_0x33058d])['$gte'];var _0x1bf329=JSON['parse'](_0x5e6ab2[_0xb648('0x2c')][_0x33058d])['$lte'];_0x13f9a6[_0xb648('0x62')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x1cfafd,_0x1bf329);}else{if(_0x5e6ab2[_0xb648('0x2c')][_0x33058d]===_0xb648('0x66')){_0x13f9a6[_0xb648('0x62')]('i.'+_0x33058d+_0xb648('0x67'));}else{_0x13f9a6[_0xb648('0x62')]('i.'+_0x33058d+_0xb648('0x68'),_0x5e6ab2[_0xb648('0x2c')][_0x33058d]);}}});}if(_0x5e6ab2['query']['read']){if(_0x5e6ab2[_0xb648('0x2c')][_0xb648('0x69')]==0x1){_0x13f9a6[_0xb648('0x4e')](_0xb648('0x6a'));}else{_0x13f9a6['having'](_0xb648('0x6b'));}}if(_0x5e6ab2[_0xb648('0x2c')]['tag']){_0x3184eb=_[_0xb648('0x6c')](_0x5e6ab2[_0xb648('0x2c')]['tag'])?_0x5e6ab2[_0xb648('0x2c')][_0xb648('0x6d')]:new Array(_0x5e6ab2['query'][_0xb648('0x6d')]);_0x3184eb[_0xb648('0x5a')](function(_0x6db383){_0x1b4c79['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x6db383+',%');});}if(_0x5e6ab2[_0xb648('0x2c')][_0xb648('0x6e')]){var _0x4f4e35=_0x5e6ab2[_0xb648('0x2c')][_0xb648('0x6e')]['replace']('\x5c','\x5c\x5c')[_0xb648('0x6f')](/'/g,'\x27\x27');if(qs[_0xb648('0x70')](_0x4f4e35)){_0x57c2f7['or'](_0xb648('0x71'),_0x4f4e35+'%');}else if(qs[_0xb648('0x72')](_0x4f4e35)){_0x57c2f7['or']('c.email\x20LIKE\x20?',_0x4f4e35+'%');}else{_0x57c2f7['or'](_0xb648('0x73'),qs['getFullTextValue'](_0x4f4e35))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xb648('0x52')](_0x4f4e35));}}}_0x13f9a6['where'](_0x57c2f7);_0x13f9a6[_0xb648('0x74')](_0xb648('0x75'));var _0x418d47={'type':db[_0xb648('0x76')]['QueryTypes'][_0xb648('0x77')],'raw':!![]};var _0xd56591=_0x13f9a6['clone']();_0xd56591[_0xb648('0x38')](_0xb648('0x75'));_0xd56591['field'](_0xb648('0x78'),_0xb648('0x4d'));if(_0x41a792[_0xb648('0x79')]){_0x41a792[_0xb648('0x79')][_0xb648('0x5a')](function(_0x364ae7){var _0x1c1f80=_0x364ae7[0x0]===_0xb648('0x7a')?_0x364ae7[0x0]:'i.'+_0x364ae7[0x0];_0x13f9a6[_0xb648('0x79')](_0x1c1f80,_0x364ae7[0x1]==='DESC'?![]:!![]);});}if(!_['isEmpty'](_0x3184eb)){_0x13f9a6['having'](_0x1b4c79);_0xd56591['where']('t.id\x20IN\x20?',_0x3184eb);}BPromise['resolve']()['then'](function(){if(!_0x2fe0dd){if(_0x5e6ab2[_0xb648('0x2c')]['MailAccountId'])return;_0xd56591['where'](_0xb648('0x7b'));_0x13f9a6[_0xb648('0x62')](_0xb648('0x7b'));return;}if(_0x5e6ab2[_0xb648('0x7c')]['role']!=='agent')return;return _0x5e6ab2[_0xb648('0x7c')]['getMailAccounts']({'attributes':['id'],'raw':!![]})[_0xb648('0x18')](function(_0x1f5856){if(_['isEmpty'](_0x1f5856)){_0xd56591[_0xb648('0x62')](_0xb648('0x7d'));_0x13f9a6[_0xb648('0x62')](_0xb648('0x7d'));}else{_0xd56591['where'](_0xb648('0x63'),_[_0xb648('0x1e')](_0x1f5856,'id'));_0x13f9a6[_0xb648('0x62')]('i.MailAccountId\x20IN\x20?',_['map'](_0x1f5856,'id'));}});})[_0xb648('0x18')](function(){if(_0x5e6ab2[_0xb648('0x7c')][_0xb648('0x7e')]==='agent'&&!_0x2fe0dd&&!_0x5e6ab2[_0xb648('0x2c')]['MailAccountId'])return[];return db[_0xb648('0x7f')][_0xb648('0x2c')](_0xd56591[_0xb648('0x80')](),_0x418d47);})['then'](function(_0x3e6d86){_0x1c331c[_0xb648('0x81')]=_0x3e6d86[_0xb648('0x31')];if(_0x1c331c[_0xb648('0x81')]===0x0)return[];return db[_0xb648('0x7f')]['query'](_0x537468[_0xb648('0x80')](),_0x418d47)[_0xb648('0x18')](function(_0x53b740){_0x340144=_[_0xb648('0x82')](_0x53b740,'id');_0x418d47=_[_0xb648('0x83')](_0x418d47,{'model':db['MailInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5e6ab2[_0xb648('0x2c')][_0xb648('0x30')]){_0x41a792[_0xb648('0x2f')][_0xb648('0x5a')](function(_0x152600){_0x13f9a6[_0xb648('0x38')]('i.'+_0x152600);});}else{_0x13f9a6[_0xb648('0x38')](_0xb648('0x78'),_0xb648('0x4d'));_0x13f9a6[_0xb648('0x38')](_0xb648('0x84'),_0xb648('0x85'));_0x13f9a6[_0xb648('0x38')](_0xb648('0x86'),_0xb648('0x87'));_0x13f9a6[_0xb648('0x38')]('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',_0xb648('0x7a'));_0x13f9a6[_0xb648('0x38')](_0xb648('0x75'));_0x13f9a6[_0xb648('0x38')](_0xb648('0x88'));_0x13f9a6[_0xb648('0x38')](_0xb648('0x89'));_0x13f9a6[_0xb648('0x38')]('i.closed');_0x13f9a6[_0xb648('0x38')]('i.closedAt');_0x13f9a6[_0xb648('0x38')]('i.attach');_0x13f9a6[_0xb648('0x38')](_0xb648('0x8a'));_0x13f9a6['field'](_0xb648('0x8b'));_0x13f9a6[_0xb648('0x38')](_0xb648('0x8c'));_0x13f9a6[_0xb648('0x38')](_0xb648('0x8d'));_0x13f9a6[_0xb648('0x38')](_0xb648('0x8e'));_0x13f9a6['field'](_0xb648('0x8f'));_0x13f9a6[_0xb648('0x38')]('i.substatus');_0x13f9a6[_0xb648('0x38')]('i.to');_0x13f9a6[_0xb648('0x38')](_0xb648('0x90'));_0x13f9a6['field'](_0xb648('0x91'));_0x13f9a6['field'](_0xb648('0x92'));_0x13f9a6['field'](_0xb648('0x93'),_0xb648('0x94'));_0x13f9a6['field'](_0xb648('0x95'),_0xb648('0x96'));_0x13f9a6[_0xb648('0x38')](_0xb648('0x97'),'Contact.email');_0x13f9a6['field']('c.phone',_0xb648('0x98'));_0x13f9a6['field'](_0xb648('0x99'),_0xb648('0x9a'));_0x13f9a6[_0xb648('0x38')](_0xb648('0x9b'),_0xb648('0x9c'));_0x13f9a6[_0xb648('0x38')](_0xb648('0x9d'),_0xb648('0x9e'));_0x13f9a6[_0xb648('0x38')](_0xb648('0x9f'),_0xb648('0xa0'));_0x13f9a6[_0xb648('0x38')](_0xb648('0xa1'),_0xb648('0x20'));}if(_0x41a792[_0xb648('0x13')])_0x13f9a6[_0xb648('0x13')](_0x41a792['limit']);if(_0x41a792[_0xb648('0x11')])_0x13f9a6[_0xb648('0x11')](_0x41a792[_0xb648('0x11')]);return db[_0xb648('0x7f')]['query'](_0x13f9a6[_0xb648('0x80')](),_0x418d47);})[_0xb648('0x18')](function(_0x53abf8){if(_0x53abf8[_0xb648('0x31')]>0x0)_0x1fcc32[_0xb648('0x62')](_0xb648('0xa2'),_[_0xb648('0x1e')](_0x53abf8,'id'));return db['sequelize'][_0xb648('0x2c')](_0x1fcc32[_0xb648('0x80')](),_0x418d47)[_0xb648('0x18')](function(_0x51bcd8){var _0x2b663b=_[_0xb648('0xa3')](_0x51bcd8,_0xb648('0xa4'));var _0x10ed55=[];return db[_0xb648('0xa5')][_0xb648('0xa6')]({'attributes':[_0xb648('0xa7')],'raw':!![]})[_0xb648('0x18')](function(_0x557b31){var _0x101345=_0x557b31['enableEmailPreview'];_0x53abf8[_0xb648('0x5a')](function(_0x21c965){_0x10ed55[_0xb648('0x22')](updateMailInteraction(_0x21c965,_0x340144,_0x2b663b,_0x101345));});return BPromise[_0xb648('0xa8')](_0x10ed55);});});});})[_0xb648('0x18')](function(_0x169d18){_0x1c331c['rows']=_0x169d18;return _0x1c331c;})[_0xb648('0x18')](respondWithFilteredResult(_0x230749,_0x41a792))[_0xb648('0x26')](handleError(_0x230749,null));};exports[_0xb648('0xa9')]=function(_0x41e5f1,_0x39758b){var _0xe55199={'raw':![],'where':{'id':_0x41e5f1[_0xb648('0xaa')]['id']}},_0x1380c2={};_0x1380c2[_0xb648('0x2b')]=_[_0xb648('0x2d')](db[_0xb648('0x28')][_0xb648('0xab')]);_0x1380c2[_0xb648('0x2c')]=_['keys'](_0x41e5f1[_0xb648('0x2c')]);_0x1380c2[_0xb648('0x35')]=_[_0xb648('0x2e')](_0x1380c2[_0xb648('0x2b')],_0x1380c2[_0xb648('0x2c')]);_0xe55199[_0xb648('0x2f')]=_[_0xb648('0x2e')](_0x1380c2['model'],qs['fields'](_0x41e5f1[_0xb648('0x2c')]['fields']));_0xe55199[_0xb648('0x2f')]=_0xe55199[_0xb648('0x2f')]['length']?_0xe55199[_0xb648('0x2f')]:_0x1380c2[_0xb648('0x2b')];if(_0x41e5f1[_0xb648('0x2c')][_0xb648('0xac')]){_0xe55199[_0xb648('0xad')]=[{'all':!![]}];}_0xe55199=_['merge']({},_0xe55199,_0x41e5f1['options']);return db['MailInteraction'][_0xb648('0x4c')](_0xe55199)['then'](handleEntityNotFound(_0x39758b,null))[_0xb648('0x18')](respondWithResult(_0x39758b,null))[_0xb648('0x26')](handleError(_0x39758b,null));};exports[_0xb648('0xae')]=function(_0x18c96d,_0x1f0d3c){return db['MailInteraction'][_0xb648('0xae')](_0x18c96d[_0xb648('0xaf')],{})[_0xb648('0x18')](respondWithResult(_0x1f0d3c,0xc9))[_0xb648('0x26')](handleError(_0x1f0d3c,null));};exports[_0xb648('0x16')]=function(_0xa2696a,_0x39616d){if(_0xa2696a['body']['id']){delete _0xa2696a[_0xb648('0xaf')]['id'];}return db[_0xb648('0x28')][_0xb648('0x4c')]({'where':{'id':_0xa2696a[_0xb648('0xaa')]['id']}})['then'](handleEntityNotFound(_0x39616d,null))[_0xb648('0x18')](saveUpdates(_0xa2696a[_0xb648('0xaf')],null))[_0xb648('0x18')](respondWithResult(_0x39616d,null))['catch'](handleError(_0x39616d,null));};exports['destroy']=function(_0x5f1df1,_0x320b12){return db['MailInteraction'][_0xb648('0x4c')]({'where':{'id':_0x5f1df1[_0xb648('0xaa')]['id']}})[_0xb648('0x18')](handleEntityNotFound(_0x320b12,null))['then'](removeEntity(_0x320b12,null))[_0xb648('0x26')](handleError(_0x320b12,null));};exports[_0xb648('0xb0')]=function(_0x13adc2,_0x49b8b8){return db['MailInteraction'][_0xb648('0xb0')]()[_0xb648('0x18')](respondWithResult(_0x49b8b8,null))[_0xb648('0x26')](handleError(_0x49b8b8,null));};exports['addMessage']=function(_0x1c6a84,_0x44f3f2){return db['MailMessage']['find']({'where':{'id':_0x1c6a84[_0xb648('0xaa')]['id']}})['then'](handleEntityNotFound(_0x44f3f2,null))[_0xb648('0x18')](function(_0xa27a55){if(_0xa27a55){return _0xa27a55[_0xb648('0xb1')](_0x1c6a84[_0xb648('0xaf')]['ids'],_['omit'](_0x1c6a84[_0xb648('0xaf')],[_0xb648('0xb2'),'id'])||{});}})['then'](respondWithResult(_0x44f3f2,null))[_0xb648('0x26')](handleError(_0x44f3f2,null));};exports[_0xb648('0xb3')]=function(_0x3ccdce,_0x3ac61c){var _0x38ad02={'raw':![],'where':{}};var _0x14e763={};var _0x30b9eb={'count':0x0,'rows':[]};return db[_0xb648('0x28')][_0xb648('0xa6')]({'where':{'id':_0x3ccdce[_0xb648('0xaa')]['id']}})[_0xb648('0x18')](handleEntityNotFound(_0x3ac61c,null))[_0xb648('0x18')](function(_0x4a381f){if(_0x4a381f){_0x14e763[_0xb648('0x2b')]=_['keys'](db[_0xb648('0x23')][_0xb648('0xab')]);_0x14e763[_0xb648('0x2c')]=_[_0xb648('0x2d')](_0x3ccdce[_0xb648('0x2c')]);_0x14e763[_0xb648('0x35')]=_[_0xb648('0x2e')](_0x14e763[_0xb648('0x2b')],_0x14e763[_0xb648('0x2c')]);_0x38ad02[_0xb648('0x2f')]=_[_0xb648('0x2e')](_0x14e763[_0xb648('0x2b')],qs[_0xb648('0x30')](_0x3ccdce['query'][_0xb648('0x30')]));_0x38ad02[_0xb648('0x2f')]=_0x38ad02[_0xb648('0x2f')]['length']?_0x38ad02['attributes']:_0x14e763[_0xb648('0x2b')];if(!_0x3ccdce[_0xb648('0x2c')][_0xb648('0x32')](_0xb648('0x33'))){_0x38ad02[_0xb648('0x13')]=qs['limit'](_0x3ccdce[_0xb648('0x2c')][_0xb648('0x13')]);_0x38ad02[_0xb648('0x11')]=qs['offset'](_0x3ccdce[_0xb648('0x2c')][_0xb648('0x11')]);}_0x38ad02[_0xb648('0x79')]=qs[_0xb648('0x34')](_0x3ccdce[_0xb648('0x2c')][_0xb648('0x34')]);_0x38ad02[_0xb648('0x62')]=qs[_0xb648('0x35')](_[_0xb648('0x36')](_0x3ccdce['query'],_0x14e763[_0xb648('0x35')]));_0x38ad02[_0xb648('0x62')][_0xb648('0xa4')]=_0x4a381f['id'];if(_0x3ccdce[_0xb648('0x2c')]['filter']){_0x38ad02[_0xb648('0x62')]=_[_0xb648('0x83')](_0x38ad02['where'],{'$or':_['map'](_0x38ad02[_0xb648('0x2f')],function(_0xd19aa9){var _0x48c2b9={};_0x48c2b9[_0xd19aa9]={'$like':'%'+_0x3ccdce['query'][_0xb648('0x6e')]+'%'};return _0x48c2b9;})});}if(_0x3ccdce['query'][_0xb648('0xb4')]){var _0xee87b8=_0x3ccdce['query'][_0xb648('0xb4')][_0xb648('0xb5')](',');var _0x34bb76={};_0x34bb76[_0xee87b8[0x0]]={'$gte':moment(_0xee87b8[0x1])[_0xb648('0xb6')]('YYYY-MM-DD\x20HH:mm:ss')};_0x38ad02['where']=_[_0xb648('0x83')](_0x38ad02[_0xb648('0x62')],_0x34bb76);}_0x38ad02=_[_0xb648('0x83')]({},_0x38ad02,_0x3ccdce[_0xb648('0xb7')]);return db[_0xb648('0x23')][_0xb648('0x81')]({'where':_0x38ad02[_0xb648('0x62')]})['then'](function(_0x508681){_0x30b9eb[_0xb648('0x81')]=_0x508681;if(_0x3ccdce[_0xb648('0x2c')][_0xb648('0xac')]){_0x38ad02[_0xb648('0xad')]=[{'all':!![]}];}return db['MailMessage'][_0xb648('0xb8')](_0x38ad02);})[_0xb648('0x18')](function(_0xac6494){if(_0x3ccdce[_0xb648('0x2c')]['inlineCss']===_0xb648('0xb9')){for(var _0x2c79da=0x0;_0x2c79da<_0xac6494['length'];_0x2c79da++){_0xac6494[_0x2c79da][_0xb648('0xaf')]=juice(_0xac6494[_0x2c79da][_0xb648('0xaf')]);}}_0x30b9eb['rows']=_0xac6494;return _0x30b9eb;});}})['then'](respondWithFilteredResult(_0x3ac61c,_0x38ad02))[_0xb648('0x26')](handleError(_0x3ac61c,null));};exports[_0xb648('0xba')]=function(_0x44b6e7,_0xb79def){return db[_0xb648('0x28')][_0xb648('0x4c')]({'where':{'id':_0x44b6e7[_0xb648('0xaa')]['id']}})[_0xb648('0x18')](handleEntityNotFound(_0xb79def,null))[_0xb648('0x18')](function(_0xdbb3cd){if(_0xdbb3cd){return _0xdbb3cd[_0xb648('0xbb')](_0x44b6e7['body'][_0xb648('0xb2')],_[_0xb648('0xbc')](_0x44b6e7[_0xb648('0xaf')],['ids','id'])||{})[_0xb648('0xbd')](function(){return db[_0xb648('0x59')][_0xb648('0xb8')]({'attributes':['id',_0xb648('0x1c'),_0xb648('0x39')],'where':{'id':_0x44b6e7['body'][_0xb648('0xb2')]}});})[_0xb648('0x18')](function(_0x43a409){socket[_0xb648('0xbe')](_0xb648('0xbf'),{'id':Number(_0x44b6e7[_0xb648('0xaa')]['id']),'tags':_0x43a409||[]});return{'id':Number(_0x44b6e7['params']['id']),'tags':_0x43a409||[]};});}})[_0xb648('0x18')](respondWithResult(_0xb79def,null))[_0xb648('0x26')](handleError(_0xb79def,null));};exports['removeTags']=function(_0x1781e3,_0x19f2a1){return db[_0xb648('0x28')]['find']({'where':{'id':_0x1781e3[_0xb648('0xaa')]['id']}})[_0xb648('0x18')](handleEntityNotFound(_0x19f2a1,null))[_0xb648('0x18')](function(_0x1ddd64){if(_0x1ddd64){return _0x1ddd64[_0xb648('0xc0')](_0x1781e3[_0xb648('0x2c')]['ids']);}})['then'](respondWithStatusCode(_0x19f2a1,null))[_0xb648('0x26')](handleError(_0x19f2a1,null));};exports[_0xb648('0xc1')]=function(_0x2dee27,_0xbdd3a6){var _0x1e2f5f=moment()[_0xb648('0xc2')]()[_0xb648('0x80')]();var _0x56d653=path['join'](config['root'],_0xb648('0xc3'),'files',_0xb648('0xc4'));var _0x403a53=path[_0xb648('0xc5')](config['root'],_0xb648('0xc3'),_0xb648('0xc6'),'attachments');var _0x715666=path['join'](_0x56d653,_0x1e2f5f);var _0x3a07d0=util['format'](_0xb648('0xc7'),_0x2dee27['params']['id'],_0x1e2f5f);var _0x3c2192=path['join'](_0x56d653,_0x3a07d0);var _0x193148=[];if(_0x2dee27[_0xb648('0x2c')]['attachments']){_0x193148[_0xb648('0x22')]({'model':db[_0xb648('0xc8')],'as':_0xb648('0xc9'),'raw':!![]});}var _0x5bd6ec=[{'model':db[_0xb648('0x23')],'as':_0xb648('0xca'),'attributes':['id',_0xb648('0xaf'),_0xb648('0x3a'),'to','cc','bcc',_0xb648('0xcb'),_0xb648('0xcc')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0x193148}];return db[_0xb648('0x28')][_0xb648('0x4c')]({'where':{'id':_0x2dee27['params']['id']},'include':_0x5bd6ec})[_0xb648('0x18')](handleEntityNotFound(_0xbdd3a6,null))['then'](function(_0x4c9a1c){if(_0x4c9a1c&&_0x4c9a1c[_0xb648('0xca')]){var _0x2ea94e=_0x4c9a1c[_0xb648('0xcd')]({'plain':!![]});fs[_0xb648('0xce')](_0x715666);return BPromise[_0xb648('0xcf')](_0x2ea94e[_0xb648('0xca')],function(_0x54d907,_0x48ec34){var _0x27a149={'from':_0x54d907[_0xb648('0x3a')],'to':_0x54d907['to'],'subject':_0x54d907['subject'],'html':htmlEntities[_0xb648('0xd0')](_0x54d907[_0xb648('0xaf')]),'headers':{'Date':moment(_0x54d907[_0xb648('0xcc')])[_0xb648('0xb6')](_0xb648('0xd1'))},'attachments':[]};if(_0x54d907['cc']){_0x27a149[_0xb648('0xd2')]['Cc']=_0x54d907['cc'];}if(_0x54d907['bcc']){_0x27a149[_0xb648('0xd2')][_0xb648('0xd3')]=_0x54d907[_0xb648('0xd4')];}return new BPromise(function(_0x55fbfe,_0xfeb5e9){if(_0x54d907[_0xb648('0xc9')]){for(var _0x4ef2b8=0x0;_0x4ef2b8<_0x54d907[_0xb648('0xc9')][_0xb648('0x31')];_0x4ef2b8++){var _0x1b7e47=_0x54d907['Attachments'][_0x4ef2b8];var _0x4f552d=path[_0xb648('0xc5')](_0x403a53,_0x1b7e47[_0xb648('0xd5')]);if(fs[_0xb648('0xd6')](_0x4f552d)){_0x27a149[_0xb648('0xd7')][_0xb648('0x22')]({'name':_0x1b7e47[_0xb648('0x1c')],'contentType':_0x1b7e47[_0xb648('0x2a')],'data':fs[_0xb648('0xd8')](_0x4f552d)});}}}emlformat['build'](_0x27a149,function(_0x236ab6,_0x3122a3){if(_0x236ab6)return _0xfeb5e9(_0x236ab6);fs[_0xb648('0xd9')](path[_0xb648('0xc5')](_0x715666,util[_0xb648('0xb6')](_0xb648('0xda'),_0x48ec34)),_0x3122a3);return _0x55fbfe(_0x3122a3);});});})[_0xb648('0x18')](function(){return new BPromise(function(_0x3f07ba,_0x8fc7fe){zipdir(_0x715666,{'saveTo':_0x3c2192},function(_0x417ed8,_0x3ffc5a){if(_0x417ed8)return _0x8fc7fe(_0x417ed8);return _0x3f07ba(_0x3ffc5a);});})[_0xb648('0x18')](function(){return new BPromise(function(_0x447b76,_0x34b254){rimraf(_0x715666,function(_0x1c9d43){if(_0x1c9d43)_0x34b254(_0x1c9d43);return _0x447b76();});});})['then'](function(){return _0xbdd3a6[_0xb648('0xc1')](_0x3c2192,_0x3a07d0,function(_0x31642f){if(!_0x31642f)fs[_0xb648('0xdb')](_0x3c2192);});});});}else{return _0xbdd3a6[_0xb648('0x1a')](0xc8);}})[_0xb648('0x26')](handleError(_0xbdd3a6,null));};
\ No newline at end of file
index 661e31e..b816507 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64a4=['emit','catch','hasOwnProperty','exports','events','../../mysqldb','MailInteraction','MailMessage','setMaxListeners','save','update','remove','then','setDataValue','Users','map','unreadMessages','length'];(function(_0x472832,_0xff9aab){var _0x19b176=function(_0x4a7279){while(--_0x4a7279){_0x472832['push'](_0x472832['shift']());}};_0x19b176(++_0xff9aab);}(_0x64a4,0xa6));var _0x464a=function(_0x497cd7,_0x1caaf9){_0x497cd7=_0x497cd7-0x0;var _0x433a55=_0x64a4[_0x497cd7];return _0x433a55;};'use strict';var EventEmitter=require(_0x464a('0x0'));var MailInteraction=require(_0x464a('0x1'))['db'][_0x464a('0x2')];var MailMessage=require(_0x464a('0x1'))['db'][_0x464a('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x464a('0x4')](0x0);var events={'afterCreate':_0x464a('0x5'),'afterUpdate':_0x464a('0x6'),'afterDestroy':_0x464a('0x7')};function emitEvent(_0x6c641f){return function(_0x2b5d31,_0x328b20,_0x46cb75){_0x2b5d31['getUsers']({'attributes':['id'],'raw':!![]})[_0x464a('0x8')](function(_0x3d0164){_0x2b5d31[_0x464a('0x9')](_0x464a('0xa'),_0x3d0164[_0x464a('0xb')](function(_0x54d91f){return{'id':_0x54d91f['id']};}));return MailMessage['findAll']({'where':{'MailInteractionId':_0x2b5d31['id'],'direction':'in','read':![]},'raw':!![]});})[_0x464a('0x8')](function(_0x38bda2){_0x2b5d31['setDataValue'](_0x464a('0xc'),_0x38bda2[_0x464a('0xd')]);MailInteractionEvents[_0x464a('0xe')](_0x6c641f+':'+_0x2b5d31['id'],_0x2b5d31);MailInteractionEvents[_0x464a('0xe')](_0x6c641f,_0x2b5d31);_0x46cb75(null);})[_0x464a('0xf')](_0x46cb75(null));};}for(var e in events){if(events[_0x464a('0x10')](e)){var event=events[e];MailInteraction['hook'](e,emitEvent(event));}}module[_0x464a('0x11')]=MailInteractionEvents;
\ No newline at end of file
+var _0x731a=['then','unreadMessages','length','emit','catch','hook','events','../../mysqldb','MailMessage','setMaxListeners','save','update','remove','getUsers','setDataValue','findAll'];(function(_0x3a2dfb,_0x18cd8a){var _0x5bd842=function(_0x443997){while(--_0x443997){_0x3a2dfb['push'](_0x3a2dfb['shift']());}};_0x5bd842(++_0x18cd8a);}(_0x731a,0xa6));var _0xa731=function(_0x4def83,_0x5277f9){_0x4def83=_0x4def83-0x0;var _0xa4c6bf=_0x731a[_0x4def83];return _0xa4c6bf;};'use strict';var EventEmitter=require(_0xa731('0x0'));var MailInteraction=require('../../mysqldb')['db']['MailInteraction'];var MailMessage=require(_0xa731('0x1'))['db'][_0xa731('0x2')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0xa731('0x3')](0x0);var events={'afterCreate':_0xa731('0x4'),'afterUpdate':_0xa731('0x5'),'afterDestroy':_0xa731('0x6')};function emitEvent(_0x1b5808){return function(_0x298bd4,_0x39c29a,_0x4c6e20){_0x298bd4[_0xa731('0x7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x5d5329){_0x298bd4[_0xa731('0x8')]('Users',_0x5d5329['map'](function(_0x144054){return{'id':_0x144054['id']};}));return MailMessage[_0xa731('0x9')]({'where':{'MailInteractionId':_0x298bd4['id'],'direction':'in','read':![]},'raw':!![]});})[_0xa731('0xa')](function(_0x4831b8){_0x298bd4[_0xa731('0x8')](_0xa731('0xb'),_0x4831b8[_0xa731('0xc')]);MailInteractionEvents[_0xa731('0xd')](_0x1b5808+':'+_0x298bd4['id'],_0x298bd4);MailInteractionEvents[_0xa731('0xd')](_0x1b5808,_0x298bd4);_0x4c6e20(null);})[_0xa731('0xe')](_0x4c6e20(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailInteraction[_0xa731('0xf')](e,emitEvent(event));}}module['exports']=MailInteractionEvents;
\ No newline at end of file
index 6fdfe00..090c795 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x137e=['define','fti_mail_interactions','subject','FULLTEXT','substatus','substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','closedAt','changed','closed','MailMessage','update','then','catch','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./mailInteraction.attributes','exports'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x137e,0x17c));var _0xe137=function(_0x2e0e33,_0x2b7155){_0x2e0e33=_0x2e0e33-0x0;var _0x297534=_0x137e[_0x2e0e33];return _0x297534;};'use strict';var _=require('lodash');var util=require(_0xe137('0x0'));var logger=require(_0xe137('0x1'))(_0xe137('0x2'));var moment=require(_0xe137('0x3'));var BPromise=require(_0xe137('0x4'));var rp=require(_0xe137('0x5'));var fs=require('fs');var path=require(_0xe137('0x6'));var rimraf=require('rimraf');var config=require(_0xe137('0x7'));var attributes=require(_0xe137('0x8'));module[_0xe137('0x9')]=function(_0x1eb444,_0x22cee6){return _0x1eb444[_0xe137('0xa')]('MailInteraction',attributes,{'tableName':'mail_interactions','paranoid':![],'indexes':[{'name':_0xe137('0xb'),'fields':[_0xe137('0xc'),'to'],'type':_0xe137('0xd')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x36cdd6,_0x2efa59,_0x46f404){if(_0x36cdd6[_0xe137('0xe')]){_0x36cdd6[_0xe137('0xf')]=moment()[_0xe137('0x10')](_0xe137('0x11'));}if(_0x36cdd6['closed']){_0x36cdd6[_0xe137('0x12')]=moment()[_0xe137('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}_0x46f404(null,_0x2efa59);},'beforeUpdate':function(_0x39c2af,_0x3ef5e7,_0x17b2ec){if(_0x39c2af[_0xe137('0x13')](_0xe137('0xe'))){_0x39c2af[_0xe137('0xf')]=_0x39c2af[_0xe137('0xe')]?moment()[_0xe137('0x10')]('YYYY-MM-DD\x20HH:mm:ss'):null;}if(_0x39c2af[_0xe137('0x13')](_0xe137('0x14'))){_0x39c2af[_0xe137('0x12')]=moment()[_0xe137('0x10')](_0xe137('0x11'));_0x39c2af['substatus']=null;_0x39c2af[_0xe137('0xf')]=null;}_0x17b2ec(null,_0x39c2af);},'afterUpdate':function(_0x11440f,_0x1350c5,_0x540b19){var _0x329852=_0x1eb444['models'];var _0x5ab70c=_0x11440f['get']({'plain':!![]});if(_0x5ab70c['closed']){return _0x329852[_0xe137('0x15')][_0xe137('0x16')]({'read':!![]},{'where':{'MailInteractionId':_0x5ab70c['id']}})[_0xe137('0x17')](function(){_0x540b19();})[_0xe137('0x18')](function(_0x109226){_0x540b19(_0x109226);});}else{_0x540b19();}}},'charset':'utf8mb4','collate':_0xe137('0x19')});};
\ No newline at end of file
+var _0xcf3e=['path','./mailInteraction.attributes','exports','define','MailInteraction','mail_interactions','fti_mail_interactions','subject','FULLTEXT','substatus','substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','closedAt','changed','closed','models','get','MailMessage','update','then','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x315f4c,_0xa9b324){var _0x8e2ba6=function(_0x2b4f1b){while(--_0x2b4f1b){_0x315f4c['push'](_0x315f4c['shift']());}};_0x8e2ba6(++_0xa9b324);}(_0xcf3e,0x69));var _0xecf3=function(_0x329812,_0x5b57a3){_0x329812=_0x329812-0x0;var _0x3073be=_0xcf3e[_0x329812];return _0x3073be;};'use strict';var _=require(_0xecf3('0x0'));var util=require(_0xecf3('0x1'));var logger=require(_0xecf3('0x2'))(_0xecf3('0x3'));var moment=require(_0xecf3('0x4'));var BPromise=require(_0xecf3('0x5'));var rp=require(_0xecf3('0x6'));var fs=require('fs');var path=require(_0xecf3('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xecf3('0x8'));module[_0xecf3('0x9')]=function(_0x26fb2c,_0x2758cc){return _0x26fb2c[_0xecf3('0xa')](_0xecf3('0xb'),attributes,{'tableName':_0xecf3('0xc'),'paranoid':![],'indexes':[{'name':_0xecf3('0xd'),'fields':[_0xecf3('0xe'),'to'],'type':_0xecf3('0xf')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x59ac4a,_0x63145e,_0x87787d){if(_0x59ac4a[_0xecf3('0x10')]){_0x59ac4a[_0xecf3('0x11')]=moment()[_0xecf3('0x12')](_0xecf3('0x13'));}if(_0x59ac4a['closed']){_0x59ac4a[_0xecf3('0x14')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x87787d(null,_0x63145e);},'beforeUpdate':function(_0x32daa4,_0x194a67,_0x49dd96){if(_0x32daa4['changed']('substatus')){_0x32daa4[_0xecf3('0x11')]=_0x32daa4[_0xecf3('0x10')]?moment()[_0xecf3('0x12')](_0xecf3('0x13')):null;}if(_0x32daa4[_0xecf3('0x15')](_0xecf3('0x16'))){_0x32daa4[_0xecf3('0x14')]=moment()[_0xecf3('0x12')](_0xecf3('0x13'));_0x32daa4[_0xecf3('0x10')]=null;_0x32daa4[_0xecf3('0x11')]=null;}_0x49dd96(null,_0x32daa4);},'afterUpdate':function(_0x54def7,_0xf57c3e,_0x3e46bd){var _0x51b29e=_0x26fb2c[_0xecf3('0x17')];var _0x4302d6=_0x54def7[_0xecf3('0x18')]({'plain':!![]});if(_0x4302d6[_0xecf3('0x16')]){return _0x51b29e[_0xecf3('0x19')][_0xecf3('0x1a')]({'read':!![]},{'where':{'MailInteractionId':_0x4302d6['id']}})[_0xecf3('0x1b')](function(){_0x3e46bd();})['catch'](function(_0x334dc9){_0x3e46bd(_0x334dc9);});}else{_0x3e46bd();}}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index ecc5530..6f1fa7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd816=['request','then','MailInteraction,\x20%s,\x20%s','debug','stringify','error','code','message','result','catch','UpdateMailInteraction','MailInteraction','update','body','options','raw','where','attributes','limit','info','AddTagsToMailInteraction','find','addTags','ids','omit','AddTags','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','redis','defaults','localhost','./mailInteraction.socket','register'];(function(_0x3815c2,_0x1f54e3){var _0x271f88=function(_0x53963c){while(--_0x53963c){_0x3815c2['push'](_0x3815c2['shift']());}};_0x271f88(++_0x1f54e3);}(_0xd816,0x18b));var _0x6d81=function(_0x40256b,_0xcdad89){_0x40256b=_0x40256b-0x0;var _0x2b0773=_0xd816[_0x40256b];return _0x2b0773;};'use strict';var _=require('lodash');var util=require(_0x6d81('0x0'));var moment=require(_0x6d81('0x1'));var BPromise=require(_0x6d81('0x2'));var rs=require(_0x6d81('0x3'));var fs=require('fs');var Redis=require(_0x6d81('0x4'));var db=require(_0x6d81('0x5'))['db'];var utils=require(_0x6d81('0x6'));var logger=require(_0x6d81('0x7'))(_0x6d81('0x8'));var config=require('../../config/environment');var jayson=require(_0x6d81('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x6d81('0xa')]=_[_0x6d81('0xb')](config['redis'],{'host':_0x6d81('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x6d81('0xd'))[_0x6d81('0xe')](socket);function respondWithRpcPromise(_0x1213a7,_0x2ef1d2,_0x1686c3){return new BPromise(function(_0xe6a403,_0x105bda){return client[_0x6d81('0xf')](_0x1213a7,_0x1686c3)[_0x6d81('0x10')](function(_0x543f58){logger['info'](_0x6d81('0x11'),_0x2ef1d2,'request\x20sent');logger[_0x6d81('0x12')]('MailInteraction,\x20%s,\x20%s,\x20%s',_0x2ef1d2,'request\x20sent',JSON[_0x6d81('0x13')](_0x543f58));if(_0x543f58[_0x6d81('0x14')]){if(_0x543f58[_0x6d81('0x14')][_0x6d81('0x15')]===0x1f4){logger[_0x6d81('0x14')]('MailInteraction,\x20%s,\x20%s',_0x2ef1d2,_0x543f58[_0x6d81('0x14')][_0x6d81('0x16')]);return _0x105bda(_0x543f58[_0x6d81('0x14')][_0x6d81('0x16')]);}logger['error'](_0x6d81('0x11'),_0x2ef1d2,_0x543f58[_0x6d81('0x14')][_0x6d81('0x16')]);return _0xe6a403(_0x543f58[_0x6d81('0x14')][_0x6d81('0x16')]);}else{logger['info'](_0x6d81('0x11'),_0x2ef1d2,'request\x20sent');_0xe6a403(_0x543f58[_0x6d81('0x17')][_0x6d81('0x16')]);}})[_0x6d81('0x18')](function(_0x51ba89){logger['error'](_0x6d81('0x11'),_0x2ef1d2,_0x51ba89);_0x105bda(_0x51ba89);});});}exports[_0x6d81('0x19')]=function(_0x27800c){var _0x3d0fae=this;return new Promise(function(_0x1f58c1,_0x401850){return db[_0x6d81('0x1a')][_0x6d81('0x1b')](_0x27800c[_0x6d81('0x1c')],{'raw':_0x27800c[_0x6d81('0x1d')]?_0x27800c[_0x6d81('0x1d')][_0x6d81('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x27800c['options']?_0x27800c[_0x6d81('0x1d')][_0x6d81('0x1f')]||null:null,'attributes':_0x27800c[_0x6d81('0x1d')]?_0x27800c['options'][_0x6d81('0x20')]||null:null,'limit':_0x27800c[_0x6d81('0x1d')]?_0x27800c['options'][_0x6d81('0x21')]||null:null})['then'](function(_0x12049e){logger[_0x6d81('0x22')](_0x6d81('0x19'),_0x27800c);logger[_0x6d81('0x12')](_0x6d81('0x19'),_0x27800c,JSON[_0x6d81('0x13')](_0x12049e));_0x1f58c1(_0x12049e);})['catch'](function(_0x5e951f){logger['error'](_0x6d81('0x19'),_0x5e951f[_0x6d81('0x16')],_0x27800c);_0x401850(_0x3d0fae[_0x6d81('0x14')](0x1f4,_0x5e951f[_0x6d81('0x16')]));});});};exports[_0x6d81('0x23')]=function(_0x2f4ed3){return new Promise(function(_0x63c59f,_0xadc392){return db[_0x6d81('0x1a')][_0x6d81('0x24')]({'where':_0x2f4ed3[_0x6d81('0x1d')]?_0x2f4ed3[_0x6d81('0x1d')][_0x6d81('0x1f')]||null:null})[_0x6d81('0x10')](function(_0x4eb030){if(_0x4eb030){return _0x4eb030[_0x6d81('0x25')](_0x2f4ed3[_0x6d81('0x1c')][_0x6d81('0x26')],_[_0x6d81('0x27')](_0x2f4ed3[_0x6d81('0x1c')],[_0x6d81('0x26'),'id'])||{});}})['spread'](function(_0x23ca17){logger['info'](_0x6d81('0x28'),_0x2f4ed3);logger['debug'](_0x6d81('0x28'),_0x2f4ed3,JSON[_0x6d81('0x13')](_0x23ca17));_0x63c59f(_0x23ca17);})[_0x6d81('0x18')](function(_0x2245cc){logger[_0x6d81('0x14')](_0x6d81('0x28'),_0x2245cc['message'],_0x2f4ed3);_0xadc392(_this['error'](0x1f4,_0x2245cc[_0x6d81('0x16')]));});});};
\ No newline at end of file
+var _0xb353=['request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','MailInteraction,\x20%s,\x20%s','catch','UpdateMailInteraction','MailInteraction','update','body','options','raw','where','attributes','find','addTags','ids','omit','AddTags','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','redis','localhost','register','request','then','info'];(function(_0x4bc776,_0x43eb91){var _0x276039=function(_0x3be2aa){while(--_0x3be2aa){_0x4bc776['push'](_0x4bc776['shift']());}};_0x276039(++_0x43eb91);}(_0xb353,0xdd));var _0x3b35=function(_0x397682,_0x2d14ba){_0x397682=_0x397682-0x0;var _0xdfab9e=_0xb353[_0x397682];return _0xdfab9e;};'use strict';var _=require(_0x3b35('0x0'));var util=require(_0x3b35('0x1'));var moment=require(_0x3b35('0x2'));var BPromise=require('bluebird');var rs=require(_0x3b35('0x3'));var fs=require('fs');var Redis=require(_0x3b35('0x4'));var db=require(_0x3b35('0x5'))['db'];var utils=require(_0x3b35('0x6'));var logger=require(_0x3b35('0x7'))(_0x3b35('0x8'));var config=require(_0x3b35('0x9'));var jayson=require(_0x3b35('0xa'));var client=jayson['client'][_0x3b35('0xb')]({'port':0x232a});config['redis']=_[_0x3b35('0xc')](config[_0x3b35('0xd')],{'host':_0x3b35('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3b35('0xd')]));require('./mailInteraction.socket')[_0x3b35('0xf')](socket);function respondWithRpcPromise(_0x413008,_0x4e0ca0,_0x4ba4e3){return new BPromise(function(_0x13ba13,_0x35455f){return client[_0x3b35('0x10')](_0x413008,_0x4ba4e3)[_0x3b35('0x11')](function(_0x4b9a55){logger[_0x3b35('0x12')]('MailInteraction,\x20%s,\x20%s',_0x4e0ca0,_0x3b35('0x13'));logger[_0x3b35('0x14')](_0x3b35('0x15'),_0x4e0ca0,_0x3b35('0x13'),JSON[_0x3b35('0x16')](_0x4b9a55));if(_0x4b9a55[_0x3b35('0x17')]){if(_0x4b9a55[_0x3b35('0x17')]['code']===0x1f4){logger[_0x3b35('0x17')]('MailInteraction,\x20%s,\x20%s',_0x4e0ca0,_0x4b9a55[_0x3b35('0x17')][_0x3b35('0x18')]);return _0x35455f(_0x4b9a55[_0x3b35('0x17')]['message']);}logger[_0x3b35('0x17')](_0x3b35('0x19'),_0x4e0ca0,_0x4b9a55['error'][_0x3b35('0x18')]);return _0x13ba13(_0x4b9a55[_0x3b35('0x17')][_0x3b35('0x18')]);}else{logger[_0x3b35('0x12')]('MailInteraction,\x20%s,\x20%s',_0x4e0ca0,'request\x20sent');_0x13ba13(_0x4b9a55['result'][_0x3b35('0x18')]);}})[_0x3b35('0x1a')](function(_0x2fd014){logger[_0x3b35('0x17')]('MailInteraction,\x20%s,\x20%s',_0x4e0ca0,_0x2fd014);_0x35455f(_0x2fd014);});});}exports[_0x3b35('0x1b')]=function(_0x4f927c){var _0x1a9475=this;return new Promise(function(_0x1357e2,_0x4f2193){return db[_0x3b35('0x1c')][_0x3b35('0x1d')](_0x4f927c[_0x3b35('0x1e')],{'raw':_0x4f927c[_0x3b35('0x1f')]?_0x4f927c[_0x3b35('0x1f')][_0x3b35('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4f927c[_0x3b35('0x1f')]?_0x4f927c[_0x3b35('0x1f')][_0x3b35('0x21')]||null:null,'attributes':_0x4f927c['options']?_0x4f927c[_0x3b35('0x1f')][_0x3b35('0x22')]||null:null,'limit':_0x4f927c[_0x3b35('0x1f')]?_0x4f927c[_0x3b35('0x1f')]['limit']||null:null})[_0x3b35('0x11')](function(_0x40fa65){logger[_0x3b35('0x12')]('UpdateMailInteraction',_0x4f927c);logger[_0x3b35('0x14')](_0x3b35('0x1b'),_0x4f927c,JSON[_0x3b35('0x16')](_0x40fa65));_0x1357e2(_0x40fa65);})[_0x3b35('0x1a')](function(_0x511beb){logger[_0x3b35('0x17')]('UpdateMailInteraction',_0x511beb['message'],_0x4f927c);_0x4f2193(_0x1a9475[_0x3b35('0x17')](0x1f4,_0x511beb[_0x3b35('0x18')]));});});};exports['AddTagsToMailInteraction']=function(_0x548a74){return new Promise(function(_0x4c126b,_0x22d0a5){return db[_0x3b35('0x1c')][_0x3b35('0x23')]({'where':_0x548a74[_0x3b35('0x1f')]?_0x548a74[_0x3b35('0x1f')][_0x3b35('0x21')]||null:null})[_0x3b35('0x11')](function(_0x654865){if(_0x654865){return _0x654865[_0x3b35('0x24')](_0x548a74[_0x3b35('0x1e')][_0x3b35('0x25')],_[_0x3b35('0x26')](_0x548a74[_0x3b35('0x1e')],[_0x3b35('0x25'),'id'])||{});}})['spread'](function(_0x22b421){logger[_0x3b35('0x12')]('AddTags',_0x548a74);logger[_0x3b35('0x14')](_0x3b35('0x27'),_0x548a74,JSON[_0x3b35('0x16')](_0x22b421));_0x4c126b(_0x22b421);})[_0x3b35('0x1a')](function(_0x307ff1){logger[_0x3b35('0x17')](_0x3b35('0x27'),_0x307ff1[_0x3b35('0x18')],_0x548a74);_0x22d0a5(_this[_0x3b35('0x17')](0x1f4,_0x307ff1[_0x3b35('0x18')]));});});};
\ No newline at end of file
index 87da1df..712ca71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c4a=['save','remove','update','emit','removeListener','length'];(function(_0x4a53d,_0x58a95e){var _0x27410e=function(_0x38fc90){while(--_0x38fc90){_0x4a53d['push'](_0x4a53d['shift']());}};_0x27410e(++_0x58a95e);}(_0x5c4a,0x114));var _0xa5c4=function(_0x31ffa3,_0xebda4d){_0x31ffa3=_0x31ffa3-0x0;var _0x5b7296=_0x5c4a[_0x31ffa3];return _0x5b7296;};'use strict';var MailInteractionEvents=require('./mailInteraction.events');var events=[_0xa5c4('0x0'),_0xa5c4('0x1'),_0xa5c4('0x2')];function createListener(_0x3a9b4e,_0x422ee1){return function(_0xc8a36c){_0x422ee1[_0xa5c4('0x3')](_0x3a9b4e,_0xc8a36c);};}function removeListener(_0x40ab67,_0x5dcd28){return function(){MailInteractionEvents[_0xa5c4('0x4')](_0x40ab67,_0x5dcd28);};}exports['register']=function(_0x429e85){for(var _0x1313b1=0x0,_0x34c345=events[_0xa5c4('0x5')];_0x1313b1<_0x34c345;_0x1313b1++){var _0x460def=events[_0x1313b1];var _0x26439b=createListener('mailInteraction:'+_0x460def,_0x429e85);MailInteractionEvents['on'](_0x460def,_0x26439b);}};
\ No newline at end of file
+var _0xc68f=['length','mailInteraction:','./mailInteraction.events','save','update','removeListener','register'];(function(_0x872b02,_0x4f4458){var _0x1a6b24=function(_0x1dfb4e){while(--_0x1dfb4e){_0x872b02['push'](_0x872b02['shift']());}};_0x1a6b24(++_0x4f4458);}(_0xc68f,0x80));var _0xfc68=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xc68f[_0x2dafbe];return _0x58a45a;};'use strict';var MailInteractionEvents=require(_0xfc68('0x0'));var events=[_0xfc68('0x1'),'remove',_0xfc68('0x2')];function createListener(_0x35caf4,_0x39f865){return function(_0x1e9db2){_0x39f865['emit'](_0x35caf4,_0x1e9db2);};}function removeListener(_0x47c786,_0x2e2214){return function(){MailInteractionEvents[_0xfc68('0x3')](_0x47c786,_0x2e2214);};}exports[_0xfc68('0x4')]=function(_0x3a222e){for(var _0x1f1034=0x0,_0x3eb0d2=events[_0xfc68('0x5')];_0x1f1034<_0x3eb0d2;_0x1f1034++){var _0x281568=events[_0x1f1034];var _0x61f19e=createListener(_0xfc68('0x6')+_0x281568,_0x3a222e);MailInteractionEvents['on'](_0x281568,_0x61f19e);}};
\ No newline at end of file
index 210aaf9..2effb03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6215=['describe','show','/:id/download','download','post','mail','mailmessage:create','create','put','/:id','update','/:id/accept','/:id/reject','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','isAuthenticated'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6215,0x198));var _0x5621=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6215[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x5621('0x0'));var util=require(_0x5621('0x1'));var path=require(_0x5621('0x2'));var timeout=require('connect-timeout');var express=require(_0x5621('0x3'));var router=express[_0x5621('0x4')]();var fs_extra=require(_0x5621('0x5'));var auth=require(_0x5621('0x6'));var interaction=require(_0x5621('0x7'));var config=require(_0x5621('0x8'));var controller=require('./mailMessage.controller');router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x5621('0x9')](_0x5621('0xa'),auth[_0x5621('0xb')](),controller[_0x5621('0xc')]);router[_0x5621('0x9')]('/:id',auth[_0x5621('0xb')](),controller[_0x5621('0xd')]);router[_0x5621('0x9')](_0x5621('0xe'),auth['isAuthenticated'](),controller[_0x5621('0xf')]);router[_0x5621('0x10')]('/',auth[_0x5621('0xb')](),interaction['tracked'](_0x5621('0x11'),_0x5621('0x12')),controller[_0x5621('0x13')]);router[_0x5621('0x14')](_0x5621('0x15'),auth[_0x5621('0xb')](),controller[_0x5621('0x16')]);router[_0x5621('0x14')](_0x5621('0x17'),auth[_0x5621('0xb')](),controller['accept']);router[_0x5621('0x14')](_0x5621('0x18'),auth[_0x5621('0xb')](),controller['reject']);router[_0x5621('0x19')](_0x5621('0x15'),auth['isAuthenticated'](),controller[_0x5621('0x1a')]);module[_0x5621('0x1b')]=router;
\ No newline at end of file
+var _0xae13=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','isAuthenticated','index','describe','/:id','show','/:id/download','download','post','tracked','mail','mailmessage:create','create','put','update','/:id/accept','reject','delete','destroy','exports','multer'];(function(_0x38d35c,_0x30e90e){var _0x2f80d4=function(_0x504e22){while(--_0x504e22){_0x38d35c['push'](_0x38d35c['shift']());}};_0x2f80d4(++_0x30e90e);}(_0xae13,0x154));var _0x3ae1=function(_0x252093,_0x576b7d){_0x252093=_0x252093-0x0;var _0x1a57f7=_0xae13[_0x252093];return _0x1a57f7;};'use strict';var multer=require(_0x3ae1('0x0'));var util=require(_0x3ae1('0x1'));var path=require(_0x3ae1('0x2'));var timeout=require(_0x3ae1('0x3'));var express=require(_0x3ae1('0x4'));var router=express[_0x3ae1('0x5')]();var fs_extra=require(_0x3ae1('0x6'));var auth=require(_0x3ae1('0x7'));var interaction=require(_0x3ae1('0x8'));var config=require(_0x3ae1('0x9'));var controller=require(_0x3ae1('0xa'));router[_0x3ae1('0xb')]('/',auth[_0x3ae1('0xc')](),controller[_0x3ae1('0xd')]);router['get']('/describe',auth[_0x3ae1('0xc')](),controller[_0x3ae1('0xe')]);router[_0x3ae1('0xb')](_0x3ae1('0xf'),auth[_0x3ae1('0xc')](),controller[_0x3ae1('0x10')]);router[_0x3ae1('0xb')](_0x3ae1('0x11'),auth[_0x3ae1('0xc')](),controller[_0x3ae1('0x12')]);router[_0x3ae1('0x13')]('/',auth['isAuthenticated'](),interaction[_0x3ae1('0x14')](_0x3ae1('0x15'),_0x3ae1('0x16')),controller[_0x3ae1('0x17')]);router[_0x3ae1('0x18')](_0x3ae1('0xf'),auth['isAuthenticated'](),controller[_0x3ae1('0x19')]);router[_0x3ae1('0x18')](_0x3ae1('0x1a'),auth['isAuthenticated'](),controller['accept']);router[_0x3ae1('0x18')]('/:id/reject',auth[_0x3ae1('0xc')](),controller[_0x3ae1('0x1b')]);router[_0x3ae1('0x1c')](_0x3ae1('0xf'),auth[_0x3ae1('0xc')](),controller[_0x3ae1('0x1d')]);module[_0x3ae1('0x1e')]=router;
\ No newline at end of file
index 56cd658..00296bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44c3=['exports','TEXT','medium','BOOLEAN','ENUM','out','STRING','long','DATE','INTEGER','Chat','lodash'];(function(_0x23b4b1,_0x1ac436){var _0x1b2f14=function(_0x3a18ed){while(--_0x3a18ed){_0x23b4b1['push'](_0x23b4b1['shift']());}};_0x1b2f14(++_0x1ac436);}(_0x44c3,0x14f));var _0x344c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x44c3[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require('sequelize');var _=require(_0x344c('0x0'));module[_0x344c('0x1')]={'body':{'type':Sequelize[_0x344c('0x2')]('long'),'allowNull':![]},'plainBody':{'type':Sequelize[_0x344c('0x2')](_0x344c('0x3'))},'read':{'type':Sequelize[_0x344c('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x344c('0x5')]('in','out'),'defaultValue':_0x344c('0x6'),'allowNull':![]},'messageId':{'type':Sequelize[_0x344c('0x7')](0x1fe)},'from':{'type':Sequelize[_0x344c('0x7')]},'to':{'type':Sequelize['TEXT'](_0x344c('0x8'))},'cc':{'type':Sequelize[_0x344c('0x2')](_0x344c('0x8'))},'bcc':{'type':Sequelize['TEXT'](_0x344c('0x8'))},'subject':{'type':Sequelize[_0x344c('0x2')]},'sentAt':{'type':Sequelize[_0x344c('0x9')]},'attach':{'type':Sequelize[_0x344c('0xa')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x344c('0x4')],'defaultValue':![]},'readAt':{'type':Sequelize[_0x344c('0x9')]},'originTo':{'type':Sequelize[_0x344c('0x2')](_0x344c('0x8'))},'originCc':{'type':Sequelize['TEXT'](_0x344c('0x8'))},'originChannel':{'type':Sequelize[_0x344c('0x5')]('Email',_0x344c('0xb')),'defaultValue':'Email','allowNull':![]}};
\ No newline at end of file
+var _0xa960=['out','long','DATE','INTEGER','Email','sequelize','lodash','exports','TEXT','medium','BOOLEAN','ENUM'];(function(_0x580576,_0x2f107d){var _0x3f55a0=function(_0x2e180b){while(--_0x2e180b){_0x580576['push'](_0x580576['shift']());}};_0x3f55a0(++_0x2f107d);}(_0xa960,0xb9));var _0x0a96=function(_0x299a9e,_0x40a615){_0x299a9e=_0x299a9e-0x0;var _0x41b74f=_0xa960[_0x299a9e];return _0x41b74f;};'use strict';var Sequelize=require(_0x0a96('0x0'));var _=require(_0x0a96('0x1'));module[_0x0a96('0x2')]={'body':{'type':Sequelize[_0x0a96('0x3')]('long'),'allowNull':![]},'plainBody':{'type':Sequelize[_0x0a96('0x3')](_0x0a96('0x4'))},'read':{'type':Sequelize[_0x0a96('0x5')],'defaultValue':![]},'direction':{'type':Sequelize[_0x0a96('0x6')]('in',_0x0a96('0x7')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize['STRING'](0x1fe)},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0x0a96('0x3')](_0x0a96('0x8'))},'cc':{'type':Sequelize[_0x0a96('0x3')](_0x0a96('0x8'))},'bcc':{'type':Sequelize[_0x0a96('0x3')]('long')},'subject':{'type':Sequelize[_0x0a96('0x3')]},'sentAt':{'type':Sequelize[_0x0a96('0x9')]},'attach':{'type':Sequelize[_0x0a96('0xa')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x0a96('0x5')],'defaultValue':![]},'readAt':{'type':Sequelize[_0x0a96('0x9')]},'originTo':{'type':Sequelize[_0x0a96('0x3')](_0x0a96('0x8'))},'originCc':{'type':Sequelize['TEXT'](_0x0a96('0x8'))},'originChannel':{'type':Sequelize[_0x0a96('0x6')](_0x0a96('0xb'),'Chat'),'defaultValue':_0x0a96('0xb'),'allowNull':![]}};
\ No newline at end of file
index fbf8563..3ae695f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d11=['read','readAt','UserId','agent','MailInteractionId','isNil','read1stAt','interaction','get','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','AcceptMessage','acceptMessage','ContactId','sequelize','QueryTypes','SELECT','contact','User','email','internal','manual','SIP/%s','channel','motionChannel','fromString','EventManager','reject','mail','MailInteraction','null','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','fullname','interface','event','rejectmessage','unix','toString','join','server','files','tmp','message-%s.eml','from','bcc','subject','createdAt','Attachment','Attachments','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','push','readFileSync','build','writeFileSync','download','unlinkSync','eml-format','bluebird','util','path','lodash','html-to-text','../../components/parsers/qs','../../config/logger','api','mail-interactions','../../mysqldb','redis','defaults','localhost','register','jayson/promise','client','http','request','then','info','MailMessage,\x20%s,\x20%s','debug','MailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','status','json','undefined','limit','offset','count','set','Content-Range','update','destroy','end','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','MailMessage','include','findAll','rows','show','includeAll','options','find','body','params','describe','direction','out','secret','split','MailAccount','findOne','CmList','List','CmContact','updatedAt','DESC','Smtp','service','host','port','secure','authentication','user','pass','attachments','root','server/files/attachments','basename','Contacts','List\x20not\x20found','SendMail','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','accept'];(function(_0x57f227,_0x72f013){var _0x4fcd4b=function(_0x172329){while(--_0x172329){_0x57f227['push'](_0x57f227['shift']());}};_0x4fcd4b(++_0x72f013);}(_0x7d11,0xe8));var _0x17d1=function(_0x2afe99,_0x2cad3b){_0x2afe99=_0x2afe99-0x0;var _0xf05fea=_0x7d11[_0x2afe99];return _0xf05fea;};'use strict';var emlformat=require(_0x17d1('0x0'));var moment=require('moment');var BPromise=require(_0x17d1('0x1'));var util=require(_0x17d1('0x2'));var path=require(_0x17d1('0x3'));var fs=require('fs');var _=require(_0x17d1('0x4'));var Redis=require('ioredis');var htmlToText=require(_0x17d1('0x5'));var qs=require(_0x17d1('0x6'));var logger=require(_0x17d1('0x7'))(_0x17d1('0x8'));var interaction_log=require(_0x17d1('0x7'))(_0x17d1('0x9'));var config=require('../../config/environment');var db=require(_0x17d1('0xa'))['db'];config[_0x17d1('0xb')]=_[_0x17d1('0xc')](config[_0x17d1('0xb')],{'host':_0x17d1('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x17d1('0xb')]));require('./mailMessage.socket')[_0x17d1('0xe')](socket);var jayson=require(_0x17d1('0xf'));var client=jayson[_0x17d1('0x10')][_0x17d1('0x11')]({'port':0x232c});var client9003=jayson[_0x17d1('0x10')][_0x17d1('0x11')]({'port':0x232b});var client9002=jayson['client'][_0x17d1('0x11')]({'port':0x232a});function respondWithRpcPromise(_0xf27a39,_0x29bc4e,_0x74eb53,_0x2ea046){return new BPromise(function(_0xb86be3,_0x110aa6){var _0x10f51e=_0x2ea046||client;return _0x10f51e[_0x17d1('0x12')](_0xf27a39,_0x74eb53)[_0x17d1('0x13')](function(_0x1a534e){logger[_0x17d1('0x14')](_0x17d1('0x15'),_0x29bc4e,'request\x20sent');logger[_0x17d1('0x16')](_0x17d1('0x17'),_0x29bc4e,_0x17d1('0x18'),JSON[_0x17d1('0x19')](_0x1a534e));if(_0x1a534e[_0x17d1('0x1a')]){if(_0x1a534e[_0x17d1('0x1a')][_0x17d1('0x1b')]===0x1f4){logger[_0x17d1('0x1a')](_0x17d1('0x15'),_0x29bc4e,_0x1a534e['error'][_0x17d1('0x1c')]);return _0x110aa6(_0x1a534e[_0x17d1('0x1a')][_0x17d1('0x1c')]);}logger[_0x17d1('0x1a')](_0x17d1('0x15'),_0x29bc4e,_0x1a534e[_0x17d1('0x1a')]['message']);return _0xb86be3(_0x1a534e[_0x17d1('0x1a')][_0x17d1('0x1c')]);}else{logger[_0x17d1('0x14')](_0x17d1('0x15'),_0x29bc4e,'request\x20sent');_0xb86be3(_0x1a534e[_0x17d1('0x1d')][_0x17d1('0x1c')]);}})[_0x17d1('0x1e')](function(_0x5496db){logger[_0x17d1('0x1a')](_0x17d1('0x15'),_0x29bc4e,_0x5496db);_0x110aa6(_0x5496db);});});}function respondWithResult(_0x240eb2,_0x5a208d){_0x5a208d=_0x5a208d||0xc8;return function(_0x1edcc4){if(_0x1edcc4){return _0x240eb2[_0x17d1('0x1f')](_0x5a208d)[_0x17d1('0x20')](_0x1edcc4);}};}function respondWithFilteredResult(_0x642d05,_0x4731d7){return function(_0x28037b){if(_0x28037b){var _0x1e2a98=typeof _0x4731d7['offset']===_0x17d1('0x21')&&typeof _0x4731d7[_0x17d1('0x22')]===_0x17d1('0x21');var _0xc9dc2b=_0x28037b['count'];var _0x16b006=_0x1e2a98?0x0:_0x4731d7[_0x17d1('0x23')];var _0x5c7e65=_0x1e2a98?_0x28037b[_0x17d1('0x24')]:_0x4731d7['offset']+_0x4731d7[_0x17d1('0x22')];var _0x230073;if(_0x5c7e65>=_0xc9dc2b){_0x5c7e65=_0xc9dc2b;_0x230073=0xc8;}else{_0x230073=0xce;}_0x642d05['status'](_0x230073);return _0x642d05[_0x17d1('0x25')](_0x17d1('0x26'),_0x16b006+'-'+_0x5c7e65+'/'+_0xc9dc2b)[_0x17d1('0x20')](_0x28037b);}return null;};}function saveUpdates(_0x6b9c6f){return function(_0x2d61d0){if(_0x2d61d0){return _0x2d61d0[_0x17d1('0x27')](_0x6b9c6f)[_0x17d1('0x13')](function(_0x23e333){return _0x23e333;});}return null;};}function removeEntity(_0x547590){return function(_0x367362){if(_0x367362){return _0x367362[_0x17d1('0x28')]()[_0x17d1('0x13')](function(){_0x547590[_0x17d1('0x1f')](0xcc)[_0x17d1('0x29')]();});}};}function handleEntityNotFound(_0x10a7d1){return function(_0x279796){if(!_0x279796){_0x10a7d1[_0x17d1('0x2a')](0x194);}return _0x279796;};}function handleError(_0x2f5c19,_0x5d3de5){_0x5d3de5=_0x5d3de5||0x1f4;return function(_0x1143c8){logger[_0x17d1('0x1a')](_0x1143c8[_0x17d1('0x2b')]);if(_0x1143c8[_0x17d1('0x2c')]){delete _0x1143c8[_0x17d1('0x2c')];}_0x2f5c19[_0x17d1('0x1f')](_0x5d3de5)[_0x17d1('0x2d')](_0x1143c8);};}exports[_0x17d1('0x2e')]=function(_0x49abf9,_0x2f2cbe){var _0x1c0f43={},_0x559277={},_0x2456fc={'count':0x0,'rows':[]};var _0xeeb56c=_[_0x17d1('0x2f')](db['MailMessage'][_0x17d1('0x30')],function(_0x376ceb){return{'name':_0x376ceb[_0x17d1('0x31')],'type':_0x376ceb[_0x17d1('0x32')]['key']};});_0x559277['model']=_[_0x17d1('0x2f')](_0xeeb56c,_0x17d1('0x2c'));_0x559277[_0x17d1('0x33')]=_[_0x17d1('0x34')](_0x49abf9[_0x17d1('0x33')]);_0x559277[_0x17d1('0x35')]=_[_0x17d1('0x36')](_0x559277[_0x17d1('0x37')],_0x559277[_0x17d1('0x33')]);_0x1c0f43[_0x17d1('0x38')]=_[_0x17d1('0x36')](_0x559277[_0x17d1('0x37')],qs[_0x17d1('0x39')](_0x49abf9[_0x17d1('0x33')][_0x17d1('0x39')]));_0x1c0f43['attributes']=_0x1c0f43[_0x17d1('0x38')][_0x17d1('0x3a')]?_0x1c0f43[_0x17d1('0x38')]:_0x559277[_0x17d1('0x37')];if(!_0x49abf9['query'][_0x17d1('0x3b')](_0x17d1('0x3c'))){_0x1c0f43[_0x17d1('0x22')]=qs[_0x17d1('0x22')](_0x49abf9[_0x17d1('0x33')][_0x17d1('0x22')]);_0x1c0f43[_0x17d1('0x23')]=qs[_0x17d1('0x23')](_0x49abf9[_0x17d1('0x33')]['offset']);}_0x1c0f43[_0x17d1('0x3d')]=qs[_0x17d1('0x3e')](_0x49abf9[_0x17d1('0x33')][_0x17d1('0x3e')]);_0x1c0f43['where']=qs['filters'](_[_0x17d1('0x3f')](_0x49abf9[_0x17d1('0x33')],_0x559277['filters']),_0xeeb56c);if(_0x49abf9[_0x17d1('0x33')][_0x17d1('0x40')]){_0x1c0f43['where']=_[_0x17d1('0x41')](_0x1c0f43[_0x17d1('0x42')],{'$or':_['map'](_0xeeb56c,function(_0x2b2cd5){if(_0x2b2cd5[_0x17d1('0x32')]!==_0x17d1('0x43')){var _0x1ab7b4={};_0x1ab7b4[_0x2b2cd5[_0x17d1('0x2c')]]={'$like':'%'+_0x49abf9[_0x17d1('0x33')]['filter']+'%'};return _0x1ab7b4;}})});}_0x1c0f43=_['merge']({},_0x1c0f43,_0x49abf9['options']);var _0x57fe69={'where':_0x1c0f43[_0x17d1('0x42')]};return db[_0x17d1('0x44')][_0x17d1('0x24')](_0x57fe69)[_0x17d1('0x13')](function(_0x24481c){_0x2456fc[_0x17d1('0x24')]=_0x24481c;if(_0x49abf9[_0x17d1('0x33')]['includeAll']){_0x1c0f43[_0x17d1('0x45')]=[{'all':!![]}];}return db['MailMessage'][_0x17d1('0x46')](_0x1c0f43);})[_0x17d1('0x13')](function(_0x9caa45){_0x2456fc[_0x17d1('0x47')]=_0x9caa45;return _0x2456fc;})[_0x17d1('0x13')](respondWithFilteredResult(_0x2f2cbe,_0x1c0f43))[_0x17d1('0x1e')](handleError(_0x2f2cbe,null));};exports[_0x17d1('0x48')]=function(_0x2ef185,_0x520608){var _0x33cea6={'raw':!![],'where':{'id':_0x2ef185['params']['id']}},_0x3e0566={};_0x3e0566[_0x17d1('0x37')]=_[_0x17d1('0x34')](db[_0x17d1('0x44')][_0x17d1('0x30')]);_0x3e0566[_0x17d1('0x33')]=_[_0x17d1('0x34')](_0x2ef185[_0x17d1('0x33')]);_0x3e0566[_0x17d1('0x35')]=_[_0x17d1('0x36')](_0x3e0566['model'],_0x3e0566['query']);_0x33cea6[_0x17d1('0x38')]=_[_0x17d1('0x36')](_0x3e0566[_0x17d1('0x37')],qs['fields'](_0x2ef185[_0x17d1('0x33')]['fields']));_0x33cea6[_0x17d1('0x38')]=_0x33cea6['attributes'][_0x17d1('0x3a')]?_0x33cea6[_0x17d1('0x38')]:_0x3e0566['model'];if(_0x2ef185[_0x17d1('0x33')][_0x17d1('0x49')]){_0x33cea6[_0x17d1('0x45')]=[{'all':!![]}];}_0x33cea6=_[_0x17d1('0x41')]({},_0x33cea6,_0x2ef185[_0x17d1('0x4a')]);return db['MailMessage'][_0x17d1('0x4b')](_0x33cea6)[_0x17d1('0x13')](handleEntityNotFound(_0x520608,null))[_0x17d1('0x13')](respondWithResult(_0x520608,null))[_0x17d1('0x1e')](handleError(_0x520608,null));};exports['update']=function(_0x24ca01,_0x274bcf){if(_0x24ca01[_0x17d1('0x4c')]['id']){delete _0x24ca01[_0x17d1('0x4c')]['id'];}return db[_0x17d1('0x44')][_0x17d1('0x4b')]({'where':{'id':_0x24ca01[_0x17d1('0x4d')]['id']}})[_0x17d1('0x13')](handleEntityNotFound(_0x274bcf,null))[_0x17d1('0x13')](saveUpdates(_0x24ca01[_0x17d1('0x4c')],null))['then'](respondWithResult(_0x274bcf,null))[_0x17d1('0x1e')](handleError(_0x274bcf,null));};exports['destroy']=function(_0x96c910,_0x3f8c4a){return db['MailMessage'][_0x17d1('0x4b')]({'where':{'id':_0x96c910[_0x17d1('0x4d')]['id']}})[_0x17d1('0x13')](handleEntityNotFound(_0x3f8c4a,null))['then'](removeEntity(_0x3f8c4a,null))[_0x17d1('0x1e')](handleError(_0x3f8c4a,null));};exports[_0x17d1('0x4e')]=function(_0x2a391c,_0x280379){return db[_0x17d1('0x44')]['describe']()['then'](respondWithResult(_0x280379,null))['catch'](handleError(_0x280379,null));};exports['create']=function(_0x1735d5,_0x50216a){return db[_0x17d1('0x44')]['create'](_0x1735d5[_0x17d1('0x4c')])[_0x17d1('0x13')](function(_0x359eb2){if(_0x359eb2){if(_0x359eb2[_0x17d1('0x4f')]===_0x17d1('0x50')&&!_0x359eb2[_0x17d1('0x51')]){var _0x5ac130,_0x44548a,_0x55f142;if(_0x1735d5[_0x17d1('0x4c')]['to']){_0x44548a=_0x1735d5[_0x17d1('0x4c')]['to'][_0x17d1('0x52')](',')[0x0];}return db[_0x17d1('0x53')][_0x17d1('0x54')]({'where':{'id':_0x359eb2['MailAccountId']},'include':[{'model':db[_0x17d1('0x55')],'as':_0x17d1('0x56'),'include':[{'model':db[_0x17d1('0x57')],'as':'Contacts','where':{'email':_0x44548a},'limit':0x1,'order':[[_0x17d1('0x58'),_0x17d1('0x59')]]}]},{'model':db['MailServerOut'],'as':_0x17d1('0x5a'),'raw':!![]}]})[_0x17d1('0x13')](function(_0x27cff5){_0x5ac130=_0x27cff5;if(_0x5ac130&&_0x5ac130[_0x17d1('0x5a')]){var _0x1c4063={'tls':{'rejectUnauthorized':![]}};if(_['isNil'](_0x5ac130[_0x17d1('0x5a')][_0x17d1('0x5b')])){_0x1c4063[_0x17d1('0x5c')]=_0x5ac130['Smtp']['host'];_0x1c4063['port']=_0x5ac130[_0x17d1('0x5a')][_0x17d1('0x5d')];_0x1c4063[_0x17d1('0x5e')]=_0x5ac130[_0x17d1('0x5a')][_0x17d1('0x5e')];if(_0x5ac130[_0x17d1('0x5a')][_0x17d1('0x5f')]){_0x1c4063['auth']={'user':_0x5ac130['Smtp'][_0x17d1('0x60')],'pass':_0x5ac130[_0x17d1('0x5a')][_0x17d1('0x61')]};}}else{_0x1c4063[_0x17d1('0x5b')]=_0x5ac130[_0x17d1('0x5a')][_0x17d1('0x5b')];_0x1c4063['auth']={'user':_0x5ac130[_0x17d1('0x5a')][_0x17d1('0x60')],'pass':_0x5ac130[_0x17d1('0x5a')][_0x17d1('0x61')]};_0x1c4063[_0x17d1('0x5e')]=_0x5ac130['Smtp']['secure'];}if(_0x1735d5[_0x17d1('0x4c')][_0x17d1('0x62')]&&_0x1735d5[_0x17d1('0x4c')][_0x17d1('0x62')][_0x17d1('0x3a')]){for(var _0x4fc233=0x0;_0x4fc233<_0x1735d5[_0x17d1('0x4c')][_0x17d1('0x62')][_0x17d1('0x3a')];_0x4fc233+=0x1){_0x1735d5[_0x17d1('0x4c')][_0x17d1('0x62')][_0x4fc233]={'filename':_0x1735d5[_0x17d1('0x4c')][_0x17d1('0x62')][_0x4fc233]['name'],'path':path['join'](config[_0x17d1('0x63')],_0x17d1('0x64'),_0x1735d5['body']['attachments'][_0x4fc233][_0x17d1('0x65')])};}}_0x55f142={'account':_0x1c4063,'message':_0x1735d5[_0x17d1('0x4c')]};return;}})['then'](function(){if(_0x5ac130['List']){if(_0x5ac130['List'][_0x17d1('0x66')][_0x17d1('0x3a')]){return _0x5ac130[_0x17d1('0x56')]['Contacts'][0x0];}else{return db['CmContact']['create'](_['defaults'](_0x1735d5['body'],{'firstName':_0x1735d5[_0x17d1('0x4c')]['to'],'email':_0x1735d5[_0x17d1('0x4c')]['to'],'phone':_0x1735d5[_0x17d1('0x4c')]['to'],'ListId':_0x5ac130['ListId']}));}}else{throw new Error(_0x17d1('0x67'));}})[_0x17d1('0x13')](function(){if(_0x55f142){return respondWithRpcPromise(_0x17d1('0x68'),_0x17d1('0x69'),_0x55f142,client9003)[_0x17d1('0x13')](function(_0x2ac290){return _0x359eb2[_0x17d1('0x27')]({'read':!![],'messageId':_0x2ac290[_0x17d1('0x6a')],'sentAt':moment()[_0x17d1('0x6b')](_0x17d1('0x6c'))});})[_0x17d1('0x1e')](function(_0x28c7f9){logger[_0x17d1('0x1a')]('%s',JSON[_0x17d1('0x19')](_0x28c7f9));return _0x359eb2;});}return _0x359eb2;});}return _0x359eb2;}})[_0x17d1('0x13')](respondWithResult(_0x50216a,0xc9))['catch'](handleError(_0x50216a,null));};exports[_0x17d1('0x6d')]=function(_0x1fb2f9,_0x37c0b7){var _0x3f0afc={'agent':{},'channel':'mail'};if(_0x1fb2f9[_0x17d1('0x4c')]['id']){delete _0x1fb2f9[_0x17d1('0x4c')]['id'];}_0x1fb2f9[_0x17d1('0x4c')][_0x17d1('0x6e')]=!![];_0x1fb2f9[_0x17d1('0x4c')][_0x17d1('0x6f')]=moment()[_0x17d1('0x6b')](_0x17d1('0x6c'));_0x1fb2f9['body']['UserId']=_0x1fb2f9[_0x17d1('0x4c')][_0x17d1('0x70')]||_0x1fb2f9[_0x17d1('0x60')]['id'];_0x3f0afc[_0x17d1('0x71')]['id']=_0x1fb2f9['body'][_0x17d1('0x70')];return db['MailMessage'][_0x17d1('0x4b')]({'where':{'id':_0x1fb2f9['params']['id'],'UserId':null}})[_0x17d1('0x13')](handleEntityNotFound(_0x37c0b7,null))[_0x17d1('0x13')](saveUpdates(_0x1fb2f9[_0x17d1('0x4c')],null))[_0x17d1('0x13')](function(_0x2dcd98){if(_0x2dcd98){_0x3f0afc[_0x17d1('0x1c')]=_0x2dcd98['get']({'plain':!![]});return db['MailInteraction'][_0x17d1('0x4b')]({'where':{'id':_0x2dcd98[_0x17d1('0x72')]}});}return null;})['then'](handleEntityNotFound(_0x37c0b7,null))[_0x17d1('0x13')](function(_0x5224e8){if(_0x5224e8){return _0x5224e8['update']({'UserId':_0x1fb2f9[_0x17d1('0x4c')][_0x17d1('0x70')],'read1stAt':_[_0x17d1('0x73')](_0x5224e8[_0x17d1('0x74')])?moment()[_0x17d1('0x6b')](_0x17d1('0x6c')):undefined});}return null;})[_0x17d1('0x13')](function(_0x2fa413){if(_0x2fa413){_0x3f0afc[_0x17d1('0x75')]=_0x2fa413[_0x17d1('0x76')]({'plain':!![]});interaction_log[_0x17d1('0x14')](_0x17d1('0x77'),_0x1fb2f9['user']['id'],_0x1fb2f9['user'][_0x17d1('0x2c')],_0x1fb2f9['user'][_0x17d1('0x78')],_0x3f0afc[_0x17d1('0x75')]['id'],_0x1fb2f9['body']?JSON[_0x17d1('0x19')](_0x1fb2f9[_0x17d1('0x4c')]):'null');return respondWithRpcPromise(_0x17d1('0x79'),_0x17d1('0x7a'),_0x3f0afc);}return null;})[_0x17d1('0x13')](function(_0x5be5c2){var _0x449bb1='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x5be5c2[_0x17d1('0x1c')][_0x17d1('0x7b')];return db[_0x17d1('0x7c')][_0x17d1('0x33')](_0x449bb1,{'type':db['Sequelize'][_0x17d1('0x7d')][_0x17d1('0x7e')],'raw':!![]})['then'](function(_0x4bed4e){return _0x4bed4e;});})[_0x17d1('0x13')](function(_0x5740e4){if(_0x5740e4){_0x3f0afc[_0x17d1('0x1c')][_0x17d1('0x7f')]=_0x5740e4[0x0];if(!_0x1fb2f9['body'][_0x17d1('0x70')])return;return db[_0x17d1('0x80')][_0x17d1('0x4b')]({'where':{'id':_0x1fb2f9[_0x17d1('0x4c')]['UserId'],'role':_0x17d1('0x71')},'attributes':['id',_0x17d1('0x2c'),'fullname',_0x17d1('0x81'),_0x17d1('0x82')],'raw':!![]});}return null;})[_0x17d1('0x13')](function(_0x248453){if(!_0x248453)return null;_0x3f0afc[_0x17d1('0x1c')][_0x17d1('0x71')]=_0x248453;return _0x3f0afc;})[_0x17d1('0x13')](function(_0x2521c9){if(_0x2521c9){if(_0x1fb2f9[_0x17d1('0x4c')][_0x17d1('0x83')]){_0x3f0afc[_0x17d1('0x1c')]['interface']=util['format'](_0x17d1('0x84'),_0x1fb2f9[_0x17d1('0x60')][_0x17d1('0x2c')]);_0x3f0afc[_0x17d1('0x1c')]['channel']=_0x3f0afc[_0x17d1('0x85')];_0x3f0afc[_0x17d1('0x1c')][_0x17d1('0x86')]=_0x3f0afc[_0x17d1('0x85')];_0x3f0afc['message']['event']='accept';_0x3f0afc[_0x17d1('0x1c')]['body']=htmlToText[_0x17d1('0x87')](_0x3f0afc[_0x17d1('0x1c')]['body']);return respondWithRpcPromise('EventManager',_0x17d1('0x88'),{'event':'acceptmessage','message':_0x3f0afc['message']},client9002)['then'](function(){return _0x3f0afc;});}return _0x3f0afc;}return null;})['then'](respondWithResult(_0x37c0b7,null))['catch'](handleError(_0x37c0b7,null));};exports[_0x17d1('0x89')]=function(_0x20a50a,_0x54060f){var _0x592757={'agent':{},'channel':_0x17d1('0x8a')};if(_0x20a50a[_0x17d1('0x4c')]['id']){delete _0x20a50a[_0x17d1('0x4c')]['id'];}_0x20a50a[_0x17d1('0x4c')][_0x17d1('0x70')]=_0x20a50a[_0x17d1('0x4c')][_0x17d1('0x70')]||_0x20a50a[_0x17d1('0x60')]['id'];_0x592757[_0x17d1('0x71')]['id']=_0x20a50a['body'][_0x17d1('0x70')];return db['MailMessage'][_0x17d1('0x4b')]({'where':{'id':_0x20a50a[_0x17d1('0x4d')]['id'],'UserId':null}})[_0x17d1('0x13')](handleEntityNotFound(_0x54060f,null))[_0x17d1('0x13')](function(_0xcfc528){if(_0xcfc528){_0x592757[_0x17d1('0x1c')]=_0xcfc528[_0x17d1('0x76')]({'plain':!![]});return db[_0x17d1('0x8b')]['find']({'where':{'id':_0xcfc528[_0x17d1('0x72')]}});}return null;})[_0x17d1('0x13')](handleEntityNotFound(_0x54060f,null))['then'](function(_0x37cec4){if(_0x37cec4){_0x592757[_0x17d1('0x75')]=_0x37cec4[_0x17d1('0x76')]({'plain':!![]});interaction_log['info']('[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x20a50a[_0x17d1('0x60')]['id'],_0x20a50a[_0x17d1('0x60')][_0x17d1('0x2c')],_0x20a50a[_0x17d1('0x60')][_0x17d1('0x78')],_0x592757['interaction']['id'],_0x20a50a[_0x17d1('0x4c')]?JSON[_0x17d1('0x19')](_0x20a50a[_0x17d1('0x4c')]):_0x17d1('0x8c'));return respondWithRpcPromise(_0x17d1('0x8d'),_0x17d1('0x8e'),_0x592757);}return null;})[_0x17d1('0x13')](function(_0x51fc4f){var _0x165c49=_0x17d1('0x8f')+_0x51fc4f[_0x17d1('0x1c')][_0x17d1('0x7b')];return db[_0x17d1('0x7c')][_0x17d1('0x33')](_0x165c49,{'type':db[_0x17d1('0x90')]['QueryTypes']['SELECT'],'raw':!![]})[_0x17d1('0x13')](function(_0x5cc361){return _0x5cc361;});})[_0x17d1('0x13')](function(_0x289a43){if(_0x289a43){_0x592757['message'][_0x17d1('0x7f')]=_0x289a43[0x0];if(!_0x20a50a['body'][_0x17d1('0x70')])return;return db[_0x17d1('0x80')][_0x17d1('0x4b')]({'where':{'id':_0x20a50a[_0x17d1('0x4c')][_0x17d1('0x70')],'role':_0x17d1('0x71')},'attributes':['id',_0x17d1('0x2c'),_0x17d1('0x91'),_0x17d1('0x81'),_0x17d1('0x82')],'raw':!![]});}return null;})[_0x17d1('0x13')](function(_0x3873f3){if(!_0x3873f3)return null;_0x592757[_0x17d1('0x1c')][_0x17d1('0x71')]=_0x3873f3;return _0x592757;})['then'](function(_0x7a0784){if(_0x7a0784){_0x7a0784[_0x17d1('0x1c')][_0x17d1('0x92')]=util[_0x17d1('0x6b')](_0x17d1('0x84'),_0x20a50a[_0x17d1('0x60')][_0x17d1('0x2c')]);_0x7a0784['message'][_0x17d1('0x85')]=_0x592757[_0x17d1('0x85')];_0x7a0784[_0x17d1('0x1c')][_0x17d1('0x86')]=_0x592757['channel'];_0x7a0784[_0x17d1('0x1c')][_0x17d1('0x93')]='reject';_0x7a0784[_0x17d1('0x1c')][_0x17d1('0x4c')]=htmlToText['fromString'](_0x592757[_0x17d1('0x1c')]['body']);respondWithRpcPromise(_0x17d1('0x88'),_0x17d1('0x88'),{'event':_0x17d1('0x94'),'message':_0x7a0784[_0x17d1('0x1c')]},client9002);return _0x592757;}return null;})[_0x17d1('0x13')](respondWithResult(_0x54060f,null))[_0x17d1('0x1e')](handleError(_0x54060f,null));};exports['download']=function(_0x1ab7aa,_0x11eb1f){var _0x30c2c8=moment()[_0x17d1('0x95')]()[_0x17d1('0x96')]();var _0x4284a8=path[_0x17d1('0x97')](config[_0x17d1('0x63')],_0x17d1('0x98'),_0x17d1('0x99'),_0x17d1('0x9a'));var _0x4d86ab=path['join'](config[_0x17d1('0x63')],_0x17d1('0x98'),_0x17d1('0x99'),_0x17d1('0x62'));var _0x38f5c3=util[_0x17d1('0x6b')](_0x17d1('0x9b'),_0x30c2c8);return db[_0x17d1('0x44')][_0x17d1('0x4b')]({'where':{'id':_0x1ab7aa['params']['id']},'attributes':['id','body',_0x17d1('0x9c'),'to','cc',_0x17d1('0x9d'),_0x17d1('0x9e'),_0x17d1('0x9f')],'include':_0x1ab7aa['query'][_0x17d1('0x62')]?[{'model':db[_0x17d1('0xa0')],'as':_0x17d1('0xa1')}]:undefined})[_0x17d1('0x13')](handleEntityNotFound(_0x11eb1f,null))[_0x17d1('0x13')](function(_0x174bb9){if(_0x174bb9){var _0xba0ffb=_0x174bb9;var _0x333d66={'from':_0xba0ffb[_0x17d1('0x9c')],'to':_0xba0ffb['to'],'subject':_0xba0ffb[_0x17d1('0x9e')],'html':_0xba0ffb[_0x17d1('0x4c')],'headers':{'Date':moment(_0xba0ffb['createdAt'])[_0x17d1('0x6b')](_0x17d1('0xa2'))},'attachments':[]};if(_0x174bb9['cc']){_0x333d66['headers']['Cc']=_0x174bb9['cc'];}if(_0x174bb9[_0x17d1('0x9d')]){_0x333d66[_0x17d1('0xa3')][_0x17d1('0xa4')]=_0x174bb9[_0x17d1('0x9d')];}return new BPromise(function(_0x228d5e,_0x54f70c){if(_0x174bb9[_0x17d1('0xa1')]){for(var _0x2b470f=0x0;_0x2b470f<_0x174bb9[_0x17d1('0xa1')][_0x17d1('0x3a')];_0x2b470f++){var _0x8fc3f0=_0x174bb9[_0x17d1('0xa1')][_0x2b470f];var _0x4b3276=path[_0x17d1('0x97')](_0x4d86ab,_0x8fc3f0[_0x17d1('0x65')]);if(fs['existsSync'](_0x4b3276)){_0x333d66[_0x17d1('0x62')][_0x17d1('0xa5')]({'name':_0x8fc3f0[_0x17d1('0x2c')],'contentType':_0x8fc3f0[_0x17d1('0x32')],'data':fs[_0x17d1('0xa6')](_0x4b3276)});}}}emlformat[_0x17d1('0xa7')](_0x333d66,function(_0x287d73,_0x1eb250){if(_0x287d73)return _0x54f70c(_0x287d73);fs[_0x17d1('0xa8')](path['join'](_0x4284a8,_0x38f5c3),_0x1eb250);return _0x228d5e(_0x1eb250);});});}})[_0x17d1('0x13')](function(_0x1eeadb){if(_0x1eeadb){return _0x11eb1f[_0x17d1('0xa9')](path[_0x17d1('0x97')](_0x4284a8,_0x38f5c3),_0x38f5c3,function(_0x10d586){if(!_0x10d586)fs[_0x17d1('0xaa')](path['join'](_0x4284a8,_0x38f5c3));});}})['catch'](handleError(_0x11eb1f,null));};
\ No newline at end of file
+var _0x2944=['rawAttributes','length','includeAll','options','find','update','body','describe','create','out','split','MailAccount','findOne','CmList','List','CmContact','Smtp','isNil','service','host','port','secure','authentication','auth','user','pass','attachments','join','server/files/attachments','basename','ListId','SendMail','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','accept','read','readAt','UserId','get','MailInteraction','read1stAt','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','agent','fullname','email','interface','SIP/%s','channel','event','fromString','EventManager','reject','mail','MailInteractionId','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','internal','rejectmessage','unix','toString','root','files','tmp','server','from','subject','createdAt','Attachment','Attachments','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','bcc','existsSync','push','download','unlinkSync','eml-format','moment','bluebird','util','path','lodash','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','api','mail-interactions','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','html-entities','jayson/promise','client','http','request','info','MailMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','undefined','limit','count','offset','status','set','Content-Range','json','then','destroy','end','sendStatus','name','send','index','MailMessage','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','map','VIRTUAL','filter','include','show','params'];(function(_0x4848ca,_0x833580){var _0x29878e=function(_0x184683){while(--_0x184683){_0x4848ca['push'](_0x4848ca['shift']());}};_0x29878e(++_0x833580);}(_0x2944,0xfb));var _0x4294=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x2944[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require(_0x4294('0x0'));var moment=require(_0x4294('0x1'));var BPromise=require(_0x4294('0x2'));var util=require(_0x4294('0x3'));var path=require(_0x4294('0x4'));var fs=require('fs');var _=require(_0x4294('0x5'));var Redis=require(_0x4294('0x6'));var htmlToText=require(_0x4294('0x7'));var qs=require(_0x4294('0x8'));var logger=require(_0x4294('0x9'))(_0x4294('0xa'));var interaction_log=require(_0x4294('0x9'))(_0x4294('0xb'));var config=require(_0x4294('0xc'));var db=require(_0x4294('0xd'))['db'];config[_0x4294('0xe')]=_[_0x4294('0xf')](config[_0x4294('0xe')],{'host':'localhost','port':0x18eb});var socket=require(_0x4294('0x10'))(new Redis(config[_0x4294('0xe')]));var htmlEntities=require(_0x4294('0x11'));require('./mailMessage.socket')['register'](socket);var jayson=require(_0x4294('0x12'));var client=jayson[_0x4294('0x13')][_0x4294('0x14')]({'port':0x232c});var client9003=jayson[_0x4294('0x13')][_0x4294('0x14')]({'port':0x232b});var client9002=jayson[_0x4294('0x13')][_0x4294('0x14')]({'port':0x232a});function respondWithRpcPromise(_0x2e36c9,_0x45f538,_0x22953b,_0x591653){return new BPromise(function(_0xfac66f,_0x177ed0){var _0xd0a3d8=_0x591653||client;return _0xd0a3d8[_0x4294('0x15')](_0x2e36c9,_0x22953b)['then'](function(_0x1d1a75){logger[_0x4294('0x16')](_0x4294('0x17'),_0x45f538,'request\x20sent');logger[_0x4294('0x18')]('MailMessage,\x20%s,\x20%s,\x20%s',_0x45f538,_0x4294('0x19'),JSON[_0x4294('0x1a')](_0x1d1a75));if(_0x1d1a75[_0x4294('0x1b')]){if(_0x1d1a75[_0x4294('0x1b')][_0x4294('0x1c')]===0x1f4){logger['error']('MailMessage,\x20%s,\x20%s',_0x45f538,_0x1d1a75[_0x4294('0x1b')]['message']);return _0x177ed0(_0x1d1a75[_0x4294('0x1b')][_0x4294('0x1d')]);}logger[_0x4294('0x1b')]('MailMessage,\x20%s,\x20%s',_0x45f538,_0x1d1a75[_0x4294('0x1b')][_0x4294('0x1d')]);return _0xfac66f(_0x1d1a75[_0x4294('0x1b')]['message']);}else{logger[_0x4294('0x16')]('MailMessage,\x20%s,\x20%s',_0x45f538,_0x4294('0x19'));_0xfac66f(_0x1d1a75['result'][_0x4294('0x1d')]);}})[_0x4294('0x1e')](function(_0x2e7f62){logger[_0x4294('0x1b')](_0x4294('0x17'),_0x45f538,_0x2e7f62);_0x177ed0(_0x2e7f62);});});}function respondWithResult(_0x382fa8,_0x5e29e8){_0x5e29e8=_0x5e29e8||0xc8;return function(_0x37501a){if(_0x37501a){return _0x382fa8['status'](_0x5e29e8)['json'](_0x37501a);}};}function respondWithFilteredResult(_0xb6b1c9,_0x284b24){return function(_0x14ff5b){if(_0x14ff5b){var _0x5b45ec=typeof _0x284b24['offset']===_0x4294('0x1f')&&typeof _0x284b24[_0x4294('0x20')]===_0x4294('0x1f');var _0xbeeba4=_0x14ff5b[_0x4294('0x21')];var _0x524575=_0x5b45ec?0x0:_0x284b24[_0x4294('0x22')];var _0x11fc2c=_0x5b45ec?_0x14ff5b['count']:_0x284b24[_0x4294('0x22')]+_0x284b24[_0x4294('0x20')];var _0x37b75e;if(_0x11fc2c>=_0xbeeba4){_0x11fc2c=_0xbeeba4;_0x37b75e=0xc8;}else{_0x37b75e=0xce;}_0xb6b1c9[_0x4294('0x23')](_0x37b75e);return _0xb6b1c9[_0x4294('0x24')](_0x4294('0x25'),_0x524575+'-'+_0x11fc2c+'/'+_0xbeeba4)[_0x4294('0x26')](_0x14ff5b);}return null;};}function saveUpdates(_0x12527d){return function(_0x2b72e7){if(_0x2b72e7){return _0x2b72e7['update'](_0x12527d)[_0x4294('0x27')](function(_0x40dd48){return _0x40dd48;});}return null;};}function removeEntity(_0xd1bc1a){return function(_0x5f31d7){if(_0x5f31d7){return _0x5f31d7[_0x4294('0x28')]()[_0x4294('0x27')](function(){_0xd1bc1a['status'](0xcc)[_0x4294('0x29')]();});}};}function handleEntityNotFound(_0xef62d9){return function(_0x1e7c16){if(!_0x1e7c16){_0xef62d9[_0x4294('0x2a')](0x194);}return _0x1e7c16;};}function handleError(_0x19ae6a,_0x5ea64b){_0x5ea64b=_0x5ea64b||0x1f4;return function(_0x551de1){logger[_0x4294('0x1b')](_0x551de1['stack']);if(_0x551de1[_0x4294('0x2b')]){delete _0x551de1[_0x4294('0x2b')];}_0x19ae6a[_0x4294('0x23')](_0x5ea64b)[_0x4294('0x2c')](_0x551de1);};}exports[_0x4294('0x2d')]=function(_0x945cc4,_0x4f5cd1){var _0x2ee7af={},_0x1c1c63={},_0x5b3624={'count':0x0,'rows':[]};var _0x5c0517=_['map'](db[_0x4294('0x2e')]['rawAttributes'],function(_0x1f8dbe){return{'name':_0x1f8dbe[_0x4294('0x2f')],'type':_0x1f8dbe[_0x4294('0x30')]['key']};});_0x1c1c63[_0x4294('0x31')]=_['map'](_0x5c0517,_0x4294('0x2b'));_0x1c1c63[_0x4294('0x32')]=_[_0x4294('0x33')](_0x945cc4['query']);_0x1c1c63[_0x4294('0x34')]=_[_0x4294('0x35')](_0x1c1c63[_0x4294('0x31')],_0x1c1c63[_0x4294('0x32')]);_0x2ee7af[_0x4294('0x36')]=_['intersection'](_0x1c1c63[_0x4294('0x31')],qs[_0x4294('0x37')](_0x945cc4[_0x4294('0x32')][_0x4294('0x37')]));_0x2ee7af['attributes']=_0x2ee7af[_0x4294('0x36')]['length']?_0x2ee7af[_0x4294('0x36')]:_0x1c1c63[_0x4294('0x31')];if(!_0x945cc4[_0x4294('0x32')][_0x4294('0x38')](_0x4294('0x39'))){_0x2ee7af[_0x4294('0x20')]=qs['limit'](_0x945cc4[_0x4294('0x32')][_0x4294('0x20')]);_0x2ee7af[_0x4294('0x22')]=qs[_0x4294('0x22')](_0x945cc4['query'][_0x4294('0x22')]);}_0x2ee7af[_0x4294('0x3a')]=qs[_0x4294('0x3b')](_0x945cc4[_0x4294('0x32')]['sort']);_0x2ee7af[_0x4294('0x3c')]=qs[_0x4294('0x34')](_[_0x4294('0x3d')](_0x945cc4[_0x4294('0x32')],_0x1c1c63[_0x4294('0x34')]),_0x5c0517);if(_0x945cc4[_0x4294('0x32')]['filter']){_0x2ee7af[_0x4294('0x3c')]=_[_0x4294('0x3e')](_0x2ee7af[_0x4294('0x3c')],{'$or':_[_0x4294('0x3f')](_0x5c0517,function(_0x254990){if(_0x254990[_0x4294('0x30')]!==_0x4294('0x40')){var _0x3876ff={};_0x3876ff[_0x254990[_0x4294('0x2b')]]={'$like':'%'+_0x945cc4[_0x4294('0x32')][_0x4294('0x41')]+'%'};return _0x3876ff;}})});}_0x2ee7af=_[_0x4294('0x3e')]({},_0x2ee7af,_0x945cc4['options']);var _0x1dcabe={'where':_0x2ee7af[_0x4294('0x3c')]};return db[_0x4294('0x2e')][_0x4294('0x21')](_0x1dcabe)[_0x4294('0x27')](function(_0x5c7a6b){_0x5b3624[_0x4294('0x21')]=_0x5c7a6b;if(_0x945cc4[_0x4294('0x32')]['includeAll']){_0x2ee7af[_0x4294('0x42')]=[{'all':!![]}];}return db[_0x4294('0x2e')]['findAll'](_0x2ee7af);})['then'](function(_0x2fc80f){_0x5b3624['rows']=_0x2fc80f;return _0x5b3624;})[_0x4294('0x27')](respondWithFilteredResult(_0x4f5cd1,_0x2ee7af))[_0x4294('0x1e')](handleError(_0x4f5cd1,null));};exports[_0x4294('0x43')]=function(_0xa78ae7,_0x1dc981){var _0x5d106e={'raw':!![],'where':{'id':_0xa78ae7[_0x4294('0x44')]['id']}},_0x558088={};_0x558088['model']=_['keys'](db[_0x4294('0x2e')][_0x4294('0x45')]);_0x558088[_0x4294('0x32')]=_[_0x4294('0x33')](_0xa78ae7['query']);_0x558088[_0x4294('0x34')]=_['intersection'](_0x558088[_0x4294('0x31')],_0x558088[_0x4294('0x32')]);_0x5d106e[_0x4294('0x36')]=_[_0x4294('0x35')](_0x558088[_0x4294('0x31')],qs['fields'](_0xa78ae7[_0x4294('0x32')]['fields']));_0x5d106e[_0x4294('0x36')]=_0x5d106e[_0x4294('0x36')][_0x4294('0x46')]?_0x5d106e[_0x4294('0x36')]:_0x558088[_0x4294('0x31')];if(_0xa78ae7[_0x4294('0x32')][_0x4294('0x47')]){_0x5d106e[_0x4294('0x42')]=[{'all':!![]}];}_0x5d106e=_[_0x4294('0x3e')]({},_0x5d106e,_0xa78ae7[_0x4294('0x48')]);return db[_0x4294('0x2e')][_0x4294('0x49')](_0x5d106e)[_0x4294('0x27')](handleEntityNotFound(_0x1dc981,null))['then'](respondWithResult(_0x1dc981,null))[_0x4294('0x1e')](handleError(_0x1dc981,null));};exports[_0x4294('0x4a')]=function(_0x48fa46,_0xceece8){if(_0x48fa46[_0x4294('0x4b')]['id']){delete _0x48fa46[_0x4294('0x4b')]['id'];}return db[_0x4294('0x2e')][_0x4294('0x49')]({'where':{'id':_0x48fa46[_0x4294('0x44')]['id']}})[_0x4294('0x27')](handleEntityNotFound(_0xceece8,null))['then'](saveUpdates(_0x48fa46['body'],null))[_0x4294('0x27')](respondWithResult(_0xceece8,null))[_0x4294('0x1e')](handleError(_0xceece8,null));};exports['destroy']=function(_0x1ea011,_0x3c873e){return db[_0x4294('0x2e')][_0x4294('0x49')]({'where':{'id':_0x1ea011['params']['id']}})[_0x4294('0x27')](handleEntityNotFound(_0x3c873e,null))[_0x4294('0x27')](removeEntity(_0x3c873e,null))['catch'](handleError(_0x3c873e,null));};exports[_0x4294('0x4c')]=function(_0x5ae3ad,_0x2f0eac){return db[_0x4294('0x2e')][_0x4294('0x4c')]()[_0x4294('0x27')](respondWithResult(_0x2f0eac,null))[_0x4294('0x1e')](handleError(_0x2f0eac,null));};exports[_0x4294('0x4d')]=function(_0x1ac6d4,_0xbd77aa){return db[_0x4294('0x2e')][_0x4294('0x4d')](_0x1ac6d4[_0x4294('0x4b')])[_0x4294('0x27')](function(_0x4db795){if(_0x4db795){if(_0x4db795['direction']===_0x4294('0x4e')&&!_0x4db795['secret']){var _0x2c256a,_0x5db1d9,_0x438f53;if(_0x1ac6d4[_0x4294('0x4b')]['to']){_0x5db1d9=_0x1ac6d4['body']['to'][_0x4294('0x4f')](',')[0x0];}return db[_0x4294('0x50')][_0x4294('0x51')]({'where':{'id':_0x4db795['MailAccountId']},'include':[{'model':db[_0x4294('0x52')],'as':_0x4294('0x53'),'include':[{'model':db[_0x4294('0x54')],'as':'Contacts','where':{'email':_0x5db1d9},'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db['MailServerOut'],'as':'Smtp','raw':!![]}]})[_0x4294('0x27')](function(_0x59b58a){_0x2c256a=_0x59b58a;if(_0x2c256a&&_0x2c256a[_0x4294('0x55')]){var _0x4ab28f={'tls':{'rejectUnauthorized':![]}};if(_[_0x4294('0x56')](_0x2c256a[_0x4294('0x55')][_0x4294('0x57')])){_0x4ab28f[_0x4294('0x58')]=_0x2c256a['Smtp'][_0x4294('0x58')];_0x4ab28f[_0x4294('0x59')]=_0x2c256a[_0x4294('0x55')]['port'];_0x4ab28f['secure']=_0x2c256a['Smtp'][_0x4294('0x5a')];if(_0x2c256a[_0x4294('0x55')][_0x4294('0x5b')]){_0x4ab28f[_0x4294('0x5c')]={'user':_0x2c256a['Smtp'][_0x4294('0x5d')],'pass':_0x2c256a['Smtp']['pass']};}}else{_0x4ab28f[_0x4294('0x57')]=_0x2c256a[_0x4294('0x55')][_0x4294('0x57')];_0x4ab28f[_0x4294('0x5c')]={'user':_0x2c256a[_0x4294('0x55')][_0x4294('0x5d')],'pass':_0x2c256a[_0x4294('0x55')][_0x4294('0x5e')]};_0x4ab28f[_0x4294('0x5a')]=_0x2c256a[_0x4294('0x55')][_0x4294('0x5a')];}if(_0x1ac6d4[_0x4294('0x4b')]['attachments']&&_0x1ac6d4[_0x4294('0x4b')][_0x4294('0x5f')][_0x4294('0x46')]){for(var _0x3fc56c=0x0;_0x3fc56c<_0x1ac6d4['body'][_0x4294('0x5f')]['length'];_0x3fc56c+=0x1){_0x1ac6d4[_0x4294('0x4b')]['attachments'][_0x3fc56c]={'filename':_0x1ac6d4[_0x4294('0x4b')][_0x4294('0x5f')][_0x3fc56c][_0x4294('0x2b')],'path':path[_0x4294('0x60')](config['root'],_0x4294('0x61'),_0x1ac6d4[_0x4294('0x4b')][_0x4294('0x5f')][_0x3fc56c][_0x4294('0x62')])};}}_0x438f53={'account':_0x4ab28f,'message':_0x1ac6d4[_0x4294('0x4b')]};return;}})[_0x4294('0x27')](function(){if(_0x2c256a[_0x4294('0x53')]){if(_0x2c256a[_0x4294('0x53')]['Contacts'][_0x4294('0x46')]){return _0x2c256a[_0x4294('0x53')]['Contacts'][0x0];}else{return db[_0x4294('0x54')]['create'](_[_0x4294('0xf')](_0x1ac6d4[_0x4294('0x4b')],{'firstName':_0x1ac6d4[_0x4294('0x4b')]['to'],'email':_0x1ac6d4[_0x4294('0x4b')]['to'],'phone':_0x1ac6d4['body']['to'],'ListId':_0x2c256a[_0x4294('0x63')]}));}}else{throw new Error('List\x20not\x20found');}})['then'](function(){if(_0x438f53){return respondWithRpcPromise(_0x4294('0x64'),_0x4294('0x65'),_0x438f53,client9003)[_0x4294('0x27')](function(_0x4c63cc){return _0x4db795[_0x4294('0x4a')]({'read':!![],'messageId':_0x4c63cc[_0x4294('0x66')],'sentAt':moment()[_0x4294('0x67')](_0x4294('0x68'))});})['catch'](function(_0xd8533b){logger[_0x4294('0x1b')]('%s',JSON[_0x4294('0x1a')](_0xd8533b));return _0x4db795;});}return _0x4db795;});}return _0x4db795;}})[_0x4294('0x27')](respondWithResult(_0xbd77aa,0xc9))[_0x4294('0x1e')](handleError(_0xbd77aa,null));};exports[_0x4294('0x69')]=function(_0x1db5cb,_0x39a473){var _0x1bb1af={'agent':{},'channel':'mail'};if(_0x1db5cb['body']['id']){delete _0x1db5cb[_0x4294('0x4b')]['id'];}_0x1db5cb['body'][_0x4294('0x6a')]=!![];_0x1db5cb[_0x4294('0x4b')][_0x4294('0x6b')]=moment()[_0x4294('0x67')](_0x4294('0x68'));_0x1db5cb[_0x4294('0x4b')][_0x4294('0x6c')]=_0x1db5cb['body']['UserId']||_0x1db5cb[_0x4294('0x5d')]['id'];_0x1bb1af['agent']['id']=_0x1db5cb[_0x4294('0x4b')]['UserId'];return db[_0x4294('0x2e')]['find']({'where':{'id':_0x1db5cb['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x39a473,null))[_0x4294('0x27')](saveUpdates(_0x1db5cb[_0x4294('0x4b')],null))[_0x4294('0x27')](function(_0x505900){if(_0x505900){_0x1bb1af['message']=_0x505900[_0x4294('0x6d')]({'plain':!![]});return db[_0x4294('0x6e')][_0x4294('0x49')]({'where':{'id':_0x505900['MailInteractionId']}});}return null;})[_0x4294('0x27')](handleEntityNotFound(_0x39a473,null))[_0x4294('0x27')](function(_0x3205cd){if(_0x3205cd){return _0x3205cd['update']({'UserId':_0x1db5cb['body'][_0x4294('0x6c')],'read1stAt':_[_0x4294('0x56')](_0x3205cd[_0x4294('0x6f')])?moment()[_0x4294('0x67')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x4294('0x27')](function(_0x2c24d1){if(_0x2c24d1){_0x1bb1af[_0x4294('0x70')]=_0x2c24d1[_0x4294('0x6d')]({'plain':!![]});interaction_log[_0x4294('0x16')](_0x4294('0x71'),_0x1db5cb[_0x4294('0x5d')]['id'],_0x1db5cb[_0x4294('0x5d')]['name'],_0x1db5cb['user'][_0x4294('0x72')],_0x1bb1af[_0x4294('0x70')]['id'],_0x1db5cb[_0x4294('0x4b')]?JSON[_0x4294('0x1a')](_0x1db5cb[_0x4294('0x4b')]):'null');return respondWithRpcPromise(_0x4294('0x73'),'acceptMessage',_0x1bb1af);}return null;})['then'](function(_0x19debd){var _0x137965=_0x4294('0x74')+_0x19debd[_0x4294('0x1d')][_0x4294('0x75')];return db[_0x4294('0x76')]['query'](_0x137965,{'type':db[_0x4294('0x77')][_0x4294('0x78')][_0x4294('0x79')],'raw':!![]})[_0x4294('0x27')](function(_0x52bb5b){return _0x52bb5b;});})['then'](function(_0x4bd04f){if(_0x4bd04f){_0x1bb1af['message'][_0x4294('0x7a')]=_0x4bd04f[0x0];if(!_0x1db5cb[_0x4294('0x4b')]['UserId'])return;return db[_0x4294('0x7b')]['find']({'where':{'id':_0x1db5cb['body']['UserId'],'role':_0x4294('0x7c')},'attributes':['id',_0x4294('0x2b'),_0x4294('0x7d'),_0x4294('0x7e'),'internal'],'raw':!![]});}return null;})['then'](function(_0x2baf17){if(!_0x2baf17)return null;_0x1bb1af[_0x4294('0x1d')][_0x4294('0x7c')]=_0x2baf17;return _0x1bb1af;})[_0x4294('0x27')](function(_0x2ffd86){if(_0x2ffd86){if(_0x1db5cb[_0x4294('0x4b')]['manual']){_0x1bb1af[_0x4294('0x1d')][_0x4294('0x7f')]=util[_0x4294('0x67')](_0x4294('0x80'),_0x1db5cb[_0x4294('0x5d')][_0x4294('0x2b')]);_0x1bb1af[_0x4294('0x1d')][_0x4294('0x81')]=_0x1bb1af[_0x4294('0x81')];_0x1bb1af[_0x4294('0x1d')][_0x4294('0x82')]=_0x4294('0x69');_0x1bb1af[_0x4294('0x1d')][_0x4294('0x4b')]=htmlToText[_0x4294('0x83')](_0x1bb1af[_0x4294('0x1d')][_0x4294('0x4b')]);return respondWithRpcPromise('EventManager',_0x4294('0x84'),{'event':'acceptmessage','message':_0x1bb1af['message']},client9002)[_0x4294('0x27')](function(){return _0x1bb1af;});}return _0x1bb1af;}return null;})[_0x4294('0x27')](respondWithResult(_0x39a473,null))['catch'](handleError(_0x39a473,null));};exports[_0x4294('0x85')]=function(_0xaf3368,_0x36c7cb){var _0x19f5ce={'agent':{},'channel':_0x4294('0x86')};if(_0xaf3368[_0x4294('0x4b')]['id']){delete _0xaf3368[_0x4294('0x4b')]['id'];}_0xaf3368[_0x4294('0x4b')][_0x4294('0x6c')]=_0xaf3368[_0x4294('0x4b')][_0x4294('0x6c')]||_0xaf3368[_0x4294('0x5d')]['id'];_0x19f5ce[_0x4294('0x7c')]['id']=_0xaf3368[_0x4294('0x4b')][_0x4294('0x6c')];return db['MailMessage'][_0x4294('0x49')]({'where':{'id':_0xaf3368['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x36c7cb,null))[_0x4294('0x27')](function(_0x13de09){if(_0x13de09){_0x19f5ce[_0x4294('0x1d')]=_0x13de09[_0x4294('0x6d')]({'plain':!![]});return db[_0x4294('0x6e')]['find']({'where':{'id':_0x13de09[_0x4294('0x87')]}});}return null;})[_0x4294('0x27')](handleEntityNotFound(_0x36c7cb,null))[_0x4294('0x27')](function(_0x4b699c){if(_0x4b699c){_0x19f5ce[_0x4294('0x70')]=_0x4b699c[_0x4294('0x6d')]({'plain':!![]});interaction_log['info'](_0x4294('0x88'),_0xaf3368[_0x4294('0x5d')]['id'],_0xaf3368['user'][_0x4294('0x2b')],_0xaf3368[_0x4294('0x5d')]['role'],_0x19f5ce[_0x4294('0x70')]['id'],_0xaf3368[_0x4294('0x4b')]?JSON[_0x4294('0x1a')](_0xaf3368[_0x4294('0x4b')]):_0x4294('0x89'));return respondWithRpcPromise(_0x4294('0x8a'),_0x4294('0x8b'),_0x19f5ce);}return null;})[_0x4294('0x27')](function(_0x5928b3){var _0x1df9f3='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x5928b3[_0x4294('0x1d')]['ContactId'];return db[_0x4294('0x76')][_0x4294('0x32')](_0x1df9f3,{'type':db['Sequelize']['QueryTypes'][_0x4294('0x79')],'raw':!![]})[_0x4294('0x27')](function(_0x4d96ff){return _0x4d96ff;});})['then'](function(_0xe04218){if(_0xe04218){_0x19f5ce[_0x4294('0x1d')]['contact']=_0xe04218[0x0];if(!_0xaf3368[_0x4294('0x4b')][_0x4294('0x6c')])return;return db[_0x4294('0x7b')][_0x4294('0x49')]({'where':{'id':_0xaf3368[_0x4294('0x4b')][_0x4294('0x6c')],'role':'agent'},'attributes':['id','name','fullname',_0x4294('0x7e'),_0x4294('0x8c')],'raw':!![]});}return null;})[_0x4294('0x27')](function(_0x367222){if(!_0x367222)return null;_0x19f5ce['message'][_0x4294('0x7c')]=_0x367222;return _0x19f5ce;})[_0x4294('0x27')](function(_0x237fbf){if(_0x237fbf){_0x237fbf[_0x4294('0x1d')][_0x4294('0x7f')]=util[_0x4294('0x67')](_0x4294('0x80'),_0xaf3368[_0x4294('0x5d')][_0x4294('0x2b')]);_0x237fbf[_0x4294('0x1d')][_0x4294('0x81')]=_0x19f5ce[_0x4294('0x81')];_0x237fbf['message']['event']='reject';_0x237fbf[_0x4294('0x1d')][_0x4294('0x4b')]=htmlToText[_0x4294('0x83')](_0x19f5ce[_0x4294('0x1d')][_0x4294('0x4b')]);respondWithRpcPromise('EventManager',_0x4294('0x84'),{'event':_0x4294('0x8d'),'message':_0x237fbf[_0x4294('0x1d')]},client9002);return _0x19f5ce;}return null;})[_0x4294('0x27')](respondWithResult(_0x36c7cb,null))[_0x4294('0x1e')](handleError(_0x36c7cb,null));};exports['download']=function(_0x282bef,_0x2fe972){var _0xef3adc=moment()[_0x4294('0x8e')]()[_0x4294('0x8f')]();var _0x3db819=path[_0x4294('0x60')](config[_0x4294('0x90')],'server',_0x4294('0x91'),_0x4294('0x92'));var _0x4f8844=path[_0x4294('0x60')](config[_0x4294('0x90')],_0x4294('0x93'),'files',_0x4294('0x5f'));var _0x521ce3=util[_0x4294('0x67')]('message-%s.eml',_0xef3adc);return db[_0x4294('0x2e')][_0x4294('0x49')]({'where':{'id':_0x282bef[_0x4294('0x44')]['id']},'attributes':['id','body',_0x4294('0x94'),'to','cc','bcc',_0x4294('0x95'),_0x4294('0x96')],'include':_0x282bef[_0x4294('0x32')]['attachments']?[{'model':db[_0x4294('0x97')],'as':_0x4294('0x98')}]:undefined})[_0x4294('0x27')](handleEntityNotFound(_0x2fe972,null))[_0x4294('0x27')](function(_0x1a49c9){if(_0x1a49c9){var _0x12f47b=_0x1a49c9;var _0x227508={'from':_0x12f47b[_0x4294('0x94')],'to':_0x12f47b['to'],'subject':_0x12f47b[_0x4294('0x95')],'html':htmlEntities[_0x4294('0x99')](_0x12f47b[_0x4294('0x4b')]),'headers':{'Date':moment(_0x12f47b[_0x4294('0x96')])[_0x4294('0x67')](_0x4294('0x9a'))},'attachments':[]};if(_0x1a49c9['cc']){_0x227508['headers']['Cc']=_0x1a49c9['cc'];}if(_0x1a49c9[_0x4294('0x9b')]){_0x227508['headers']['Bcc']=_0x1a49c9[_0x4294('0x9b')];}return new BPromise(function(_0x818ac5,_0x24c50c){if(_0x1a49c9[_0x4294('0x98')]){for(var _0x31095b=0x0;_0x31095b<_0x1a49c9[_0x4294('0x98')][_0x4294('0x46')];_0x31095b++){var _0x13af41=_0x1a49c9[_0x4294('0x98')][_0x31095b];var _0x40e47c=path[_0x4294('0x60')](_0x4f8844,_0x13af41['basename']);if(fs[_0x4294('0x9c')](_0x40e47c)){_0x227508['attachments'][_0x4294('0x9d')]({'name':_0x13af41[_0x4294('0x2b')],'contentType':_0x13af41[_0x4294('0x30')],'data':fs['readFileSync'](_0x40e47c)});}}}emlformat['build'](_0x227508,function(_0x536580,_0x16e984){if(_0x536580)return _0x24c50c(_0x536580);fs['writeFileSync'](path['join'](_0x3db819,_0x521ce3),_0x16e984);return _0x818ac5(_0x16e984);});});}})[_0x4294('0x27')](function(_0x65e54f){if(_0x65e54f){return _0x2fe972[_0x4294('0x9e')](path[_0x4294('0x60')](_0x3db819,_0x521ce3),_0x521ce3,function(_0x46106e){if(!_0x46106e)fs[_0x4294('0x9f')](path[_0x4294('0x60')](_0x3db819,_0x521ce3));});}})[_0x4294('0x1e')](handleError(_0x2fe972,null));};
\ No newline at end of file
index ac33c33..390ae71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b82=['save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','MailMessage','setMaxListeners'];(function(_0x3ebcab,_0x482df2){var _0x4074d3=function(_0x43ec1a){while(--_0x43ec1a){_0x3ebcab['push'](_0x3ebcab['shift']());}};_0x4074d3(++_0x482df2);}(_0x1b82,0x1a9));var _0x21b8=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x1b82[_0x17d9e3];return _0x14192d;};'use strict';var EventEmitter=require(_0x21b8('0x0'));var MailMessage=require(_0x21b8('0x1'))['db'][_0x21b8('0x2')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x21b8('0x3')](0x0);var events={'afterCreate':_0x21b8('0x4'),'afterUpdate':_0x21b8('0x5'),'afterDestroy':_0x21b8('0x6')};function emitEvent(_0x3d09b7){return function(_0x11f9f8,_0x18231c,_0x397944){MailMessageEvents[_0x21b8('0x7')](_0x3d09b7+':'+_0x11f9f8['id'],_0x11f9f8);MailMessageEvents[_0x21b8('0x7')](_0x3d09b7,_0x11f9f8);_0x397944(null);};}for(var e in events){if(events[_0x21b8('0x8')](e)){var event=events[e];MailMessage[_0x21b8('0x9')](e,emitEvent(event));}}module[_0x21b8('0xa')]=MailMessageEvents;
\ No newline at end of file
+var _0xd38b=['hasOwnProperty','hook','exports','events','../../mysqldb','MailMessage','setMaxListeners','save','update','emit'];(function(_0x183b97,_0x2d297c){var _0x629cf7=function(_0x4ffd24){while(--_0x4ffd24){_0x183b97['push'](_0x183b97['shift']());}};_0x629cf7(++_0x2d297c);}(_0xd38b,0x193));var _0xbd38=function(_0x242bb9,_0x5575b7){_0x242bb9=_0x242bb9-0x0;var _0x2a2760=_0xd38b[_0x242bb9];return _0x2a2760;};'use strict';var EventEmitter=require(_0xbd38('0x0'));var MailMessage=require(_0xbd38('0x1'))['db'][_0xbd38('0x2')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0xbd38('0x3')](0x0);var events={'afterCreate':_0xbd38('0x4'),'afterUpdate':_0xbd38('0x5'),'afterDestroy':'remove'};function emitEvent(_0x41542e){return function(_0x3cec3f,_0xee05ae,_0x4d93da){MailMessageEvents['emit'](_0x41542e+':'+_0x3cec3f['id'],_0x3cec3f);MailMessageEvents[_0xbd38('0x6')](_0x41542e,_0x3cec3f);_0x4d93da(null);};}for(var e in events){if(events[_0xbd38('0x7')](e)){var event=events[e];MailMessage[_0xbd38('0x8')](e,emitEvent(event));}}module[_0xbd38('0x9')]=MailMessageEvents;
\ No newline at end of file
index 1dad086..a15f77b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ee9=['../../config/environment','./mailMessage.attributes','exports','define','MailMessage','mail_messages','messageId','fti_mail_messages','subject','FULLTEXT','body','plainBody','fromString','models','get','direction','toLowerCase','secret','isNil','UserId','MailInteraction','findOne','MailInteractionId','update','createdAt','catch','error','utf8mb4','lodash','util','../../config/logger','api','bluebird','request-promise','html-to-text','rimraf'];(function(_0x26d9ba,_0x3349b7){var _0x47002c=function(_0x52eae6){while(--_0x52eae6){_0x26d9ba['push'](_0x26d9ba['shift']());}};_0x47002c(++_0x3349b7);}(_0x5ee9,0xf4));var _0x95ee=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0x5ee9[_0x138adb];return _0x1b27f2;};'use strict';var _=require(_0x95ee('0x0'));var util=require(_0x95ee('0x1'));var logger=require(_0x95ee('0x2'))(_0x95ee('0x3'));var moment=require('moment');var BPromise=require(_0x95ee('0x4'));var rp=require(_0x95ee('0x5'));var htmlToText=require(_0x95ee('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x95ee('0x7'));var config=require(_0x95ee('0x8'));var attributes=require(_0x95ee('0x9'));module[_0x95ee('0xa')]=function(_0xd348d0,_0x38baab){return _0xd348d0[_0x95ee('0xb')](_0x95ee('0xc'),attributes,{'tableName':_0x95ee('0xd'),'paranoid':![],'indexes':[{'name':_0x95ee('0xe'),'fields':[_0x95ee('0xe')]},{'name':_0x95ee('0xf'),'fields':['plainBody',_0x95ee('0x10')],'type':_0x95ee('0x11')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x479653,_0x2c0ec4,_0x110da6){if(_0x479653[_0x95ee('0x12')]){_0x479653[_0x95ee('0x13')]=htmlToText[_0x95ee('0x14')](_0x479653[_0x95ee('0x12')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x110da6(null,_0x2c0ec4);},'afterCreate':function(_0x1c2b15,_0x52a92b,_0x3a937f){var _0x2851f9=_0xd348d0[_0x95ee('0x15')];var _0x2f00fb=_0x1c2b15[_0x95ee('0x16')]({'plain':!![]});if(_0x2f00fb[_0x95ee('0x17')][_0x95ee('0x18')]()==='in'||_0x2f00fb[_0x95ee('0x17')]['toLowerCase']()==='out'&&!_0x2f00fb[_0x95ee('0x19')]&&!_[_0x95ee('0x1a')](_0x2f00fb[_0x95ee('0x1b')])){_0x2851f9[_0x95ee('0x1c')][_0x95ee('0x1d')]({'where':{'id':_0x2f00fb[_0x95ee('0x1e')]}})['then'](function(_0x59e73f){if(_0x59e73f){_0x59e73f[_0x95ee('0x1f')]({'lastMsgAt':_0x2f00fb[_0x95ee('0x20')],'lastMsgDirection':_0x2f00fb[_0x95ee('0x17')]['toLowerCase']()});}})[_0x95ee('0x21')](function(_0x34db15){console[_0x95ee('0x22')](_0x34db15);});}_0x3a937f();}},'charset':_0x95ee('0x23'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x207b=['./mailMessage.attributes','exports','define','MailMessage','fti_mail_messages','plainBody','FULLTEXT','body','fromString','models','get','direction','toLowerCase','secret','isNil','MailInteraction','findOne','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','html-to-text','path','rimraf','../../config/environment'];(function(_0x12ae97,_0x385f36){var _0xb50847=function(_0x50238c){while(--_0x50238c){_0x12ae97['push'](_0x12ae97['shift']());}};_0xb50847(++_0x385f36);}(_0x207b,0x1f3));var _0xb207=function(_0x699049,_0x51d7d6){_0x699049=_0x699049-0x0;var _0x5e25e4=_0x207b[_0x699049];return _0x5e25e4;};'use strict';var _=require(_0xb207('0x0'));var util=require(_0xb207('0x1'));var logger=require(_0xb207('0x2'))(_0xb207('0x3'));var moment=require(_0xb207('0x4'));var BPromise=require(_0xb207('0x5'));var rp=require(_0xb207('0x6'));var htmlToText=require(_0xb207('0x7'));var fs=require('fs');var path=require(_0xb207('0x8'));var rimraf=require(_0xb207('0x9'));var config=require(_0xb207('0xa'));var attributes=require(_0xb207('0xb'));module[_0xb207('0xc')]=function(_0x248462,_0x5127d8){return _0x248462[_0xb207('0xd')](_0xb207('0xe'),attributes,{'tableName':'mail_messages','paranoid':![],'indexes':[{'name':'messageId','fields':['messageId']},{'name':_0xb207('0xf'),'fields':[_0xb207('0x10'),'subject'],'type':_0xb207('0x11')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5dc19d,_0x123381,_0x37c883){if(_0x5dc19d[_0xb207('0x12')]){_0x5dc19d['plainBody']=htmlToText[_0xb207('0x13')](_0x5dc19d[_0xb207('0x12')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x37c883(null,_0x123381);},'afterCreate':function(_0x1c002b,_0x54da30,_0x41e20c){var _0x1fafba=_0x248462[_0xb207('0x14')];var _0x19f7b6=_0x1c002b[_0xb207('0x15')]({'plain':!![]});if(_0x19f7b6[_0xb207('0x16')][_0xb207('0x17')]()==='in'||_0x19f7b6[_0xb207('0x16')]['toLowerCase']()==='out'&&!_0x19f7b6[_0xb207('0x18')]&&!_[_0xb207('0x19')](_0x19f7b6['UserId'])){_0x1fafba[_0xb207('0x1a')][_0xb207('0x1b')]({'where':{'id':_0x19f7b6['MailInteractionId']}})['then'](function(_0x155557){if(_0x155557){_0x155557[_0xb207('0x1c')]({'lastMsgAt':_0x19f7b6[_0xb207('0x1d')],'lastMsgDirection':_0x19f7b6[_0xb207('0x16')][_0xb207('0x17')]()});}})[_0xb207('0x1e')](function(_0x245769){console[_0xb207('0x1f')](_0x245769);});}_0x41e20c();}},'charset':_0xb207('0x20'),'collate':_0xb207('0x21')});};
\ No newline at end of file
index c36b9ae..9be37bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2e3=['info','request\x20sent','debug','stringify','error','code','MailMessage,\x20%s,\x20%s','message','result','catch','CreateMailMessage','MailMessage','create','body','options','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','register','request','then'];(function(_0xa2384b,_0x291e60){var _0x41dcfb=function(_0x51d17b){while(--_0x51d17b){_0xa2384b['push'](_0xa2384b['shift']());}};_0x41dcfb(++_0x291e60);}(_0xf2e3,0x9b));var _0x3f2e=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0xf2e3[_0x5d6456];return _0x4d66c1;};'use strict';var _=require(_0x3f2e('0x0'));var util=require('util');var moment=require(_0x3f2e('0x1'));var BPromise=require(_0x3f2e('0x2'));var rs=require(_0x3f2e('0x3'));var fs=require('fs');var Redis=require(_0x3f2e('0x4'));var db=require(_0x3f2e('0x5'))['db'];var utils=require(_0x3f2e('0x6'));var logger=require(_0x3f2e('0x7'))(_0x3f2e('0x8'));var config=require(_0x3f2e('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x3f2e('0xa')][_0x3f2e('0xb')]({'port':0x232a});config[_0x3f2e('0xc')]=_[_0x3f2e('0xd')](config[_0x3f2e('0xc')],{'host':_0x3f2e('0xe'),'port':0x18eb});var socket=require(_0x3f2e('0xf'))(new Redis(config[_0x3f2e('0xc')]));require(_0x3f2e('0x10'))[_0x3f2e('0x11')](socket);function respondWithRpcPromise(_0x21f22b,_0x32902a,_0x1dd9d0){return new BPromise(function(_0x10a392,_0x1bb1dd){return client[_0x3f2e('0x12')](_0x21f22b,_0x1dd9d0)[_0x3f2e('0x13')](function(_0x475cd2){logger[_0x3f2e('0x14')]('MailMessage,\x20%s,\x20%s',_0x32902a,_0x3f2e('0x15'));logger[_0x3f2e('0x16')]('MailMessage,\x20%s,\x20%s,\x20%s',_0x32902a,_0x3f2e('0x15'),JSON[_0x3f2e('0x17')](_0x475cd2));if(_0x475cd2[_0x3f2e('0x18')]){if(_0x475cd2[_0x3f2e('0x18')][_0x3f2e('0x19')]===0x1f4){logger['error'](_0x3f2e('0x1a'),_0x32902a,_0x475cd2[_0x3f2e('0x18')][_0x3f2e('0x1b')]);return _0x1bb1dd(_0x475cd2['error'][_0x3f2e('0x1b')]);}logger[_0x3f2e('0x18')](_0x3f2e('0x1a'),_0x32902a,_0x475cd2[_0x3f2e('0x18')][_0x3f2e('0x1b')]);return _0x10a392(_0x475cd2[_0x3f2e('0x18')][_0x3f2e('0x1b')]);}else{logger[_0x3f2e('0x14')](_0x3f2e('0x1a'),_0x32902a,_0x3f2e('0x15'));_0x10a392(_0x475cd2[_0x3f2e('0x1c')]['message']);}})[_0x3f2e('0x1d')](function(_0x243822){logger[_0x3f2e('0x18')](_0x3f2e('0x1a'),_0x32902a,_0x243822);_0x1bb1dd(_0x243822);});});}exports[_0x3f2e('0x1e')]=function(_0x4eb1e7){var _0x4ba868=this;return new Promise(function(_0x904d94,_0x11f84c){return db[_0x3f2e('0x1f')][_0x3f2e('0x20')](_0x4eb1e7[_0x3f2e('0x21')],{'raw':_0x4eb1e7[_0x3f2e('0x22')]?_0x4eb1e7['options']['raw']===undefined?!![]:![]:!![]})[_0x3f2e('0x13')](function(_0x37dab2){logger['info']('CreateMailMessage',_0x4eb1e7);logger[_0x3f2e('0x16')]('CreateMailMessage',_0x4eb1e7,JSON[_0x3f2e('0x17')](_0x37dab2));_0x904d94(_0x37dab2);})[_0x3f2e('0x1d')](function(_0x515e32){logger['error']('CreateMailMessage',_0x515e32[_0x3f2e('0x1b')],_0x4eb1e7);_0x11f84c(_0x4ba868[_0x3f2e('0x18')](0x1f4,_0x515e32['message']));});});};
\ No newline at end of file
+var _0xc900=['jayson/promise','client','http','redis','localhost','socket.io-emitter','./mailMessage.socket','register','request','then','info','request\x20sent','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','MailMessage,\x20%s,\x20%s','message','catch','CreateMailMessage','MailMessage','body','options','raw','debug','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x5a1a51,_0x144c79){var _0x47edd7=function(_0x2259bb){while(--_0x2259bb){_0x5a1a51['push'](_0x5a1a51['shift']());}};_0x47edd7(++_0x144c79);}(_0xc900,0xb3));var _0x0c90=function(_0x71330,_0x7941ee){_0x71330=_0x71330-0x0;var _0x24e508=_0xc900[_0x71330];return _0x24e508;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x0c90('0x0'));var BPromise=require(_0x0c90('0x1'));var rs=require(_0x0c90('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0c90('0x3'))['db'];var utils=require(_0x0c90('0x4'));var logger=require('../../config/logger')(_0x0c90('0x5'));var config=require(_0x0c90('0x6'));var jayson=require(_0x0c90('0x7'));var client=jayson[_0x0c90('0x8')][_0x0c90('0x9')]({'port':0x232a});config[_0x0c90('0xa')]=_['defaults'](config[_0x0c90('0xa')],{'host':_0x0c90('0xb'),'port':0x18eb});var socket=require(_0x0c90('0xc'))(new Redis(config[_0x0c90('0xa')]));require(_0x0c90('0xd'))[_0x0c90('0xe')](socket);function respondWithRpcPromise(_0x313ce9,_0x18d9fd,_0x3e0df6){return new BPromise(function(_0x34456e,_0x10daeb){return client[_0x0c90('0xf')](_0x313ce9,_0x3e0df6)[_0x0c90('0x10')](function(_0x57917b){logger[_0x0c90('0x11')]('MailMessage,\x20%s,\x20%s',_0x18d9fd,_0x0c90('0x12'));logger['debug'](_0x0c90('0x13'),_0x18d9fd,_0x0c90('0x12'),JSON[_0x0c90('0x14')](_0x57917b));if(_0x57917b[_0x0c90('0x15')]){if(_0x57917b[_0x0c90('0x15')]['code']===0x1f4){logger[_0x0c90('0x15')](_0x0c90('0x16'),_0x18d9fd,_0x57917b['error'][_0x0c90('0x17')]);return _0x10daeb(_0x57917b[_0x0c90('0x15')][_0x0c90('0x17')]);}logger['error']('MailMessage,\x20%s,\x20%s',_0x18d9fd,_0x57917b[_0x0c90('0x15')][_0x0c90('0x17')]);return _0x34456e(_0x57917b[_0x0c90('0x15')][_0x0c90('0x17')]);}else{logger[_0x0c90('0x11')](_0x0c90('0x16'),_0x18d9fd,_0x0c90('0x12'));_0x34456e(_0x57917b['result'][_0x0c90('0x17')]);}})[_0x0c90('0x18')](function(_0x462d49){logger[_0x0c90('0x15')]('MailMessage,\x20%s,\x20%s',_0x18d9fd,_0x462d49);_0x10daeb(_0x462d49);});});}exports[_0x0c90('0x19')]=function(_0xd129ca){var _0x143047=this;return new Promise(function(_0x1241a9,_0x315932){return db[_0x0c90('0x1a')]['create'](_0xd129ca[_0x0c90('0x1b')],{'raw':_0xd129ca['options']?_0xd129ca[_0x0c90('0x1c')][_0x0c90('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0x2a053a){logger[_0x0c90('0x11')](_0x0c90('0x19'),_0xd129ca);logger[_0x0c90('0x1e')](_0x0c90('0x19'),_0xd129ca,JSON[_0x0c90('0x14')](_0x2a053a));_0x1241a9(_0x2a053a);})['catch'](function(_0x26f0a3){logger[_0x0c90('0x15')]('CreateMailMessage',_0x26f0a3['message'],_0xd129ca);_0x315932(_0x143047[_0x0c90('0x15')](0x1f4,_0x26f0a3[_0x0c90('0x17')]));});});};
\ No newline at end of file
index 8996ade..247d0ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcca0=['emit','removeListener','register','length','mailMessage:','remove'];(function(_0x52de74,_0x152687){var _0x33113e=function(_0x182424){while(--_0x182424){_0x52de74['push'](_0x52de74['shift']());}};_0x33113e(++_0x152687);}(_0xcca0,0x1d3));var _0x0cca=function(_0x421ff6,_0x40f195){_0x421ff6=_0x421ff6-0x0;var _0x177051=_0xcca0[_0x421ff6];return _0x177051;};'use strict';var MailMessageEvents=require('./mailMessage.events');var events=['save',_0x0cca('0x0'),'update'];function createListener(_0x390f6a,_0x60637f){return function(_0x250d22){_0x60637f[_0x0cca('0x1')](_0x390f6a,_0x250d22);};}function removeListener(_0x3a55b3,_0x1d092d){return function(){MailMessageEvents[_0x0cca('0x2')](_0x3a55b3,_0x1d092d);};}exports[_0x0cca('0x3')]=function(_0x229ecc){for(var _0x5a4a6b=0x0,_0x4aef73=events[_0x0cca('0x4')];_0x5a4a6b<_0x4aef73;_0x5a4a6b++){var _0x3e7328=events[_0x5a4a6b];var _0x45c66a=createListener(_0x0cca('0x5')+_0x3e7328,_0x229ecc);MailMessageEvents['on'](_0x3e7328,_0x45c66a);}};
\ No newline at end of file
+var _0xe60e=['emit','removeListener','register','length','mailMessage:','./mailMessage.events','save','remove','update'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xe60e,0x10a));var _0xee60=function(_0x2ed08e,_0x31e039){_0x2ed08e=_0x2ed08e-0x0;var _0x5d98cb=_0xe60e[_0x2ed08e];return _0x5d98cb;};'use strict';var MailMessageEvents=require(_0xee60('0x0'));var events=[_0xee60('0x1'),_0xee60('0x2'),_0xee60('0x3')];function createListener(_0x452c33,_0x2a9df8){return function(_0x23f305){_0x2a9df8[_0xee60('0x4')](_0x452c33,_0x23f305);};}function removeListener(_0x2e4cf4,_0x4ba086){return function(){MailMessageEvents[_0xee60('0x5')](_0x2e4cf4,_0x4ba086);};}exports[_0xee60('0x6')]=function(_0x3d35f7){for(var _0x595ec1=0x0,_0x53b644=events[_0xee60('0x7')];_0x595ec1<_0x53b644;_0x595ec1++){var _0x25e4f6=events[_0x595ec1];var _0x7f8cdf=createListener(_0xee60('0x8')+_0x25e4f6,_0x3d35f7);MailMessageEvents['on'](_0x25e4f6,_0x7f8cdf);}};
\ No newline at end of file
index a42e4f0..f8d0ef7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d14=['/:id/teams','getTeams','/:id/users','getAgents','create','post','addTeams','addAgents','put','update','delete','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./mailQueue.controller','get','/describe','/:id','isAuthenticated','show','/:id/members'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7d14,0x9f));var _0x47d1=function(_0x2c5df9,_0x2811cb){_0x2c5df9=_0x2c5df9-0x0;var _0x39d1d0=_0x7d14[_0x2c5df9];return _0x39d1d0;};'use strict';var multer=require(_0x47d1('0x0'));var util=require(_0x47d1('0x1'));var path=require(_0x47d1('0x2'));var timeout=require(_0x47d1('0x3'));var express=require(_0x47d1('0x4'));var router=express['Router']();var fs_extra=require(_0x47d1('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x47d1('0x6'));var config=require(_0x47d1('0x7'));var controller=require(_0x47d1('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x47d1('0x9')](_0x47d1('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x47d1('0x9')](_0x47d1('0xb'),auth[_0x47d1('0xc')](),controller[_0x47d1('0xd')]);router[_0x47d1('0x9')](_0x47d1('0xe'),auth[_0x47d1('0xc')](),controller['getMembers']);router[_0x47d1('0x9')](_0x47d1('0xf'),auth[_0x47d1('0xc')](),controller[_0x47d1('0x10')]);router[_0x47d1('0x9')](_0x47d1('0x11'),auth[_0x47d1('0xc')](),controller[_0x47d1('0x12')]);router['post']('/',auth[_0x47d1('0xc')](),controller[_0x47d1('0x13')]);router[_0x47d1('0x14')](_0x47d1('0xf'),auth[_0x47d1('0xc')](),controller[_0x47d1('0x15')]);router[_0x47d1('0x14')](_0x47d1('0x11'),auth[_0x47d1('0xc')](),controller[_0x47d1('0x16')]);router[_0x47d1('0x17')](_0x47d1('0xb'),auth[_0x47d1('0xc')](),controller[_0x47d1('0x18')]);router[_0x47d1('0x19')](_0x47d1('0xb'),auth[_0x47d1('0xc')](),controller['destroy']);router[_0x47d1('0x19')](_0x47d1('0xf'),auth['isAuthenticated'](),controller[_0x47d1('0x1a')]);router[_0x47d1('0x19')](_0x47d1('0x11'),auth[_0x47d1('0xc')](),controller[_0x47d1('0x1b')]);module[_0x47d1('0x1c')]=router;
\ No newline at end of file
+var _0x844f=['getTeams','getAgents','post','create','addTeams','put','delete','removeTeams','/:id/users','removeAgents','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailQueue.controller','get','/describe','isAuthenticated','describe','/:id','/:id/members','/:id/teams'];(function(_0x5dbb04,_0x213d3d){var _0x3de2d9=function(_0x26b1e5){while(--_0x26b1e5){_0x5dbb04['push'](_0x5dbb04['shift']());}};_0x3de2d9(++_0x213d3d);}(_0x844f,0x8c));var _0xf844=function(_0x261228,_0x460a5c){_0x261228=_0x261228-0x0;var _0x26380c=_0x844f[_0x261228];return _0x26380c;};'use strict';var multer=require(_0xf844('0x0'));var util=require(_0xf844('0x1'));var path=require('path');var timeout=require(_0xf844('0x2'));var express=require(_0xf844('0x3'));var router=express[_0xf844('0x4')]();var fs_extra=require(_0xf844('0x5'));var auth=require(_0xf844('0x6'));var interaction=require(_0xf844('0x7'));var config=require('../../config/environment');var controller=require(_0xf844('0x8'));router[_0xf844('0x9')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xf844('0xa'),auth[_0xf844('0xb')](),controller[_0xf844('0xc')]);router[_0xf844('0x9')](_0xf844('0xd'),auth['isAuthenticated'](),controller['show']);router[_0xf844('0x9')](_0xf844('0xe'),auth[_0xf844('0xb')](),controller['getMembers']);router['get'](_0xf844('0xf'),auth[_0xf844('0xb')](),controller[_0xf844('0x10')]);router[_0xf844('0x9')]('/:id/users',auth[_0xf844('0xb')](),controller[_0xf844('0x11')]);router[_0xf844('0x12')]('/',auth[_0xf844('0xb')](),controller[_0xf844('0x13')]);router[_0xf844('0x12')](_0xf844('0xf'),auth[_0xf844('0xb')](),controller[_0xf844('0x14')]);router['post']('/:id/users',auth[_0xf844('0xb')](),controller['addAgents']);router[_0xf844('0x15')](_0xf844('0xd'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xf844('0xd'),auth[_0xf844('0xb')](),controller['destroy']);router[_0xf844('0x16')](_0xf844('0xf'),auth[_0xf844('0xb')](),controller[_0xf844('0x17')]);router[_0xf844('0x16')](_0xf844('0x18'),auth['isAuthenticated'](),controller[_0xf844('0x19')]);module['exports']=router;
\ No newline at end of file
index 688ecc3..0f28e9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f37=['sequelize','exports','name','INTEGER','ENUM','rrmemory'];(function(_0x41dc7c,_0x15924c){var _0x312f67=function(_0x232d1d){while(--_0x232d1d){_0x41dc7c['push'](_0x41dc7c['shift']());}};_0x312f67(++_0x15924c);}(_0x1f37,0x162));var _0x71f3=function(_0x1d1d09,_0x504d77){_0x1d1d09=_0x1d1d09-0x0;var _0x8827e=_0x1f37[_0x1d1d09];return _0x8827e;};'use strict';var Sequelize=require(_0x71f3('0x0'));module[_0x71f3('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x71f3('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x71f3('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x71f3('0x4')](_0x71f3('0x5'),'beepall','roundrobin')}};
\ No newline at end of file
+var _0xd808=['ENUM','rrmemory','beepall','roundrobin','STRING','name','INTEGER'];(function(_0x522897,_0x1c76c9){var _0x1075b8=function(_0x1b23d5){while(--_0x1b23d5){_0x522897['push'](_0x522897['shift']());}};_0x1075b8(++_0x1c76c9);}(_0xd808,0x162));var _0x8d80=function(_0x47c5bf,_0x45977e){_0x47c5bf=_0x47c5bf-0x0;var _0x11b779=_0xd808[_0x47c5bf];return _0x11b779;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x8d80('0x0')],'unique':_0x8d80('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x8d80('0x0')]},'timeout':{'type':Sequelize[_0x8d80('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x8d80('0x3')](_0x8d80('0x4'),_0x8d80('0x5'),_0x8d80('0x6'))}};
\ No newline at end of file
index 2348079..4b51259 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb1e=['TeamId','includes','union','compact','value','isEmpty','removeAgents','userMailQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','get','MailQueues','UserProfileResource','error','stack','name','index','map','MailQueue','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','body','describe','findOne','order','MailQueueId','merge','UserMailQueue','findAndCountAll','UserId','agent','mailPause','updatedAt','format','SIP','getTeams','Team','addTeams','ids','User','Agents','online','voicePause','findOrCreate','forEach','emit','userMailQueue:save','removeTeams','field','tq.TeamId','from','team_has_mail_queues','join','user_has_teams','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','sequelize','toString','QueryTypes'];(function(_0x28fbf5,_0x2e1381){var _0x54a6bc=function(_0x1607fb){while(--_0x1607fb){_0x28fbf5['push'](_0x28fbf5['shift']());}};_0x54a6bc(++_0x2e1381);}(_0xeb1e,0x115));var _0xeeb1=function(_0x339e61,_0x4aa53c){_0x339e61=_0x339e61-0x0;var _0x621185=_0xeb1e[_0x339e61];return _0x621185;};'use strict';var emlformat=require(_0xeeb1('0x0'));var rimraf=require(_0xeeb1('0x1'));var zipdir=require(_0xeeb1('0x2'));var jsonpatch=require(_0xeeb1('0x3'));var rp=require('request-promise');var moment=require(_0xeeb1('0x4'));var BPromise=require(_0xeeb1('0x5'));var Mustache=require(_0xeeb1('0x6'));var util=require(_0xeeb1('0x7'));var path=require(_0xeeb1('0x8'));var sox=require(_0xeeb1('0x9'));var csv=require(_0xeeb1('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xeeb1('0xb'));var _=require('lodash');var squel=require(_0xeeb1('0xc'));var crypto=require(_0xeeb1('0xd'));var jsforce=require(_0xeeb1('0xe'));var deskjs=require(_0xeeb1('0xf'));var toCsv=require(_0xeeb1('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xeeb1('0x10'));var qs=require(_0xeeb1('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xeeb1('0x12'))('api');var utils=require(_0xeeb1('0x13'));var config=require(_0xeeb1('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xeeb1('0x15'))['db'];config[_0xeeb1('0x16')]=_['defaults'](config[_0xeeb1('0x16')],{'host':_0xeeb1('0x17'),'port':0x18eb});var socket=require(_0xeeb1('0x18'))(new Redis(config[_0xeeb1('0x16')]));require('./mailQueue.socket')[_0xeeb1('0x19')](socket);function respondWithStatusCode(_0x54a2c6,_0x2bb339){_0x2bb339=_0x2bb339||0xcc;return function(_0xb46089){if(_0xb46089){return _0x54a2c6[_0xeeb1('0x1a')](_0x2bb339);}return _0x54a2c6[_0xeeb1('0x1b')](_0x2bb339)[_0xeeb1('0x1c')]();};}function respondWithResult(_0x468d21,_0x1f4af1){_0x1f4af1=_0x1f4af1||0xc8;return function(_0x2cb81a){if(_0x2cb81a){return _0x468d21['status'](_0x1f4af1)[_0xeeb1('0x1d')](_0x2cb81a);}};}function respondWithFilteredResult(_0x43a87a,_0x56dc35){return function(_0x53f986){if(_0x53f986){var _0x4decb1=typeof _0x56dc35[_0xeeb1('0x1e')]===_0xeeb1('0x1f')&&typeof _0x56dc35[_0xeeb1('0x20')]==='undefined';var _0x3b7372=_0x53f986[_0xeeb1('0x21')];var _0x8469c0=_0x4decb1?0x0:_0x56dc35[_0xeeb1('0x1e')];var _0x363fcc=_0x4decb1?_0x53f986[_0xeeb1('0x21')]:_0x56dc35[_0xeeb1('0x1e')]+_0x56dc35[_0xeeb1('0x20')];var _0x315de0;if(_0x363fcc>=_0x3b7372){_0x363fcc=_0x3b7372;_0x315de0=0xc8;}else{_0x315de0=0xce;}_0x43a87a[_0xeeb1('0x1b')](_0x315de0);return _0x43a87a[_0xeeb1('0x22')]('Content-Range',_0x8469c0+'-'+_0x363fcc+'/'+_0x3b7372)[_0xeeb1('0x1d')](_0x53f986);}return null;};}function patchUpdates(_0x28f3e4){return function(_0x10612b){try{jsonpatch[_0xeeb1('0x23')](_0x10612b,_0x28f3e4,!![]);}catch(_0xaa1f18){return BPromise['reject'](_0xaa1f18);}return _0x10612b[_0xeeb1('0x24')]();};}function saveUpdates(_0x5d0677,_0x58e2d9){return function(_0x5c61d3){if(_0x5c61d3){return _0x5c61d3[_0xeeb1('0x25')](_0x5d0677)[_0xeeb1('0x26')](function(_0x1c5a21){return _0x1c5a21;});}return null;};}function removeEntity(_0x455a33,_0x16de62){return function(_0x247404){if(_0x247404){return _0x247404[_0xeeb1('0x27')]()[_0xeeb1('0x26')](function(){var _0x2e2dab=_0x247404[_0xeeb1('0x28')]({'plain':!![]});var _0xdcde09=_0xeeb1('0x29');return db[_0xeeb1('0x2a')][_0xeeb1('0x27')]({'where':{'type':_0xdcde09,'resourceId':_0x2e2dab['id']}})['then'](function(){return _0x247404;});})[_0xeeb1('0x26')](function(){_0x455a33[_0xeeb1('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1b285a,_0x5c8e61){return function(_0x394c2d){if(!_0x394c2d){_0x1b285a[_0xeeb1('0x1a')](0x194);}return _0x394c2d;};}function handleError(_0x50f6ff,_0x471fc7){_0x471fc7=_0x471fc7||0x1f4;return function(_0x194894){logger[_0xeeb1('0x2b')](_0x194894[_0xeeb1('0x2c')]);if(_0x194894[_0xeeb1('0x2d')]){delete _0x194894[_0xeeb1('0x2d')];}_0x50f6ff[_0xeeb1('0x1b')](_0x471fc7)['send'](_0x194894);};}exports[_0xeeb1('0x2e')]=function(_0x204456,_0x4c5d4f){var _0x39868f={},_0x2b7a6c={},_0x136059={'count':0x0,'rows':[]};var _0x2f5189=_[_0xeeb1('0x2f')](db[_0xeeb1('0x30')][_0xeeb1('0x31')],function(_0x38d325){return{'name':_0x38d325[_0xeeb1('0x32')],'type':_0x38d325[_0xeeb1('0x33')]['key']};});_0x2b7a6c[_0xeeb1('0x34')]=_[_0xeeb1('0x2f')](_0x2f5189,'name');_0x2b7a6c[_0xeeb1('0x35')]=_[_0xeeb1('0x36')](_0x204456[_0xeeb1('0x35')]);_0x2b7a6c['filters']=_[_0xeeb1('0x37')](_0x2b7a6c['model'],_0x2b7a6c[_0xeeb1('0x35')]);_0x39868f[_0xeeb1('0x38')]=_[_0xeeb1('0x37')](_0x2b7a6c[_0xeeb1('0x34')],qs[_0xeeb1('0x39')](_0x204456[_0xeeb1('0x35')][_0xeeb1('0x39')]));_0x39868f[_0xeeb1('0x38')]=_0x39868f[_0xeeb1('0x38')][_0xeeb1('0x3a')]?_0x39868f[_0xeeb1('0x38')]:_0x2b7a6c['model'];if(!_0x204456[_0xeeb1('0x35')][_0xeeb1('0x3b')](_0xeeb1('0x3c'))){_0x39868f['limit']=qs[_0xeeb1('0x20')](_0x204456['query'][_0xeeb1('0x20')]);_0x39868f[_0xeeb1('0x1e')]=qs[_0xeeb1('0x1e')](_0x204456[_0xeeb1('0x35')]['offset']);}_0x39868f['order']=qs['sort'](_0x204456['query'][_0xeeb1('0x3d')]);_0x39868f[_0xeeb1('0x3e')]=qs[_0xeeb1('0x3f')](_[_0xeeb1('0x40')](_0x204456[_0xeeb1('0x35')],_0x2b7a6c[_0xeeb1('0x3f')]),_0x2f5189);if(_0x204456['query'][_0xeeb1('0x41')]){_0x39868f[_0xeeb1('0x3e')]=_['merge'](_0x39868f[_0xeeb1('0x3e')],{'$or':_[_0xeeb1('0x2f')](_0x2f5189,function(_0x3ee670){if(_0x3ee670[_0xeeb1('0x33')]!==_0xeeb1('0x42')){var _0x5d7031={};_0x5d7031[_0x3ee670[_0xeeb1('0x2d')]]={'$like':'%'+_0x204456[_0xeeb1('0x35')][_0xeeb1('0x41')]+'%'};return _0x5d7031;}})});}_0x39868f=_['merge']({},_0x39868f,_0x204456[_0xeeb1('0x43')]);var _0x360fc4={'where':_0x39868f[_0xeeb1('0x3e')]};return db[_0xeeb1('0x30')][_0xeeb1('0x21')](_0x360fc4)[_0xeeb1('0x26')](function(_0x1044c4){_0x136059[_0xeeb1('0x21')]=_0x1044c4;if(_0x204456[_0xeeb1('0x35')][_0xeeb1('0x44')]){_0x39868f[_0xeeb1('0x45')]=[{'all':!![]}];}return db['MailQueue'][_0xeeb1('0x46')](_0x39868f);})[_0xeeb1('0x26')](function(_0x289a05){_0x136059[_0xeeb1('0x47')]=_0x289a05;return _0x136059;})['then'](respondWithFilteredResult(_0x4c5d4f,_0x39868f))[_0xeeb1('0x48')](handleError(_0x4c5d4f,null));};exports['show']=function(_0x2df0d2,_0x239fc3){var _0x4c6598={'raw':!![],'where':{'id':_0x2df0d2[_0xeeb1('0x49')]['id']}},_0x1f8e71={};_0x1f8e71[_0xeeb1('0x34')]=_[_0xeeb1('0x36')](db[_0xeeb1('0x30')][_0xeeb1('0x31')]);_0x1f8e71['query']=_[_0xeeb1('0x36')](_0x2df0d2[_0xeeb1('0x35')]);_0x1f8e71[_0xeeb1('0x3f')]=_['intersection'](_0x1f8e71['model'],_0x1f8e71['query']);_0x4c6598['attributes']=_[_0xeeb1('0x37')](_0x1f8e71['model'],qs[_0xeeb1('0x39')](_0x2df0d2[_0xeeb1('0x35')][_0xeeb1('0x39')]));_0x4c6598[_0xeeb1('0x38')]=_0x4c6598[_0xeeb1('0x38')]['length']?_0x4c6598['attributes']:_0x1f8e71[_0xeeb1('0x34')];if(_0x2df0d2[_0xeeb1('0x35')][_0xeeb1('0x44')]){_0x4c6598['include']=[{'all':!![]}];}_0x4c6598=_['merge']({},_0x4c6598,_0x2df0d2[_0xeeb1('0x43')]);return db[_0xeeb1('0x30')][_0xeeb1('0x4a')](_0x4c6598)[_0xeeb1('0x26')](handleEntityNotFound(_0x239fc3,null))['then'](respondWithResult(_0x239fc3,null))[_0xeeb1('0x48')](handleError(_0x239fc3,null));};exports['create']=function(_0x46e8e1,_0x171090){return db[_0xeeb1('0x30')][_0xeeb1('0x4b')](_0x46e8e1['body'],{})['then'](function(_0x47f1da){var _0x1e596a=_0x46e8e1[_0xeeb1('0x4c')][_0xeeb1('0x28')]({'plain':!![]});if(!_0x1e596a)throw new Error(_0xeeb1('0x4d'));if(_0x1e596a['role']===_0xeeb1('0x4c')){var _0x595f93=_0x47f1da['get']({'plain':!![]});var _0x2bc31e=_0xeeb1('0x29');return db[_0xeeb1('0x4e')][_0xeeb1('0x4a')]({'where':{'name':_0x2bc31e,'userProfileId':_0x1e596a['userProfileId']},'raw':!![]})[_0xeeb1('0x26')](function(_0x2c0c1c){if(_0x2c0c1c&&_0x2c0c1c[_0xeeb1('0x4f')]===0x0){return db['UserProfileResource']['create']({'name':_0x595f93[_0xeeb1('0x2d')],'resourceId':_0x595f93['id'],'type':_0x2c0c1c[_0xeeb1('0x2d')],'sectionId':_0x2c0c1c['id']},{})[_0xeeb1('0x26')](function(){return _0x47f1da;});}else{return _0x47f1da;}})[_0xeeb1('0x48')](function(_0xebcf0a){logger[_0xeeb1('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xebcf0a);throw _0xebcf0a;});}return _0x47f1da;})[_0xeeb1('0x26')](respondWithResult(_0x171090,0xc9))[_0xeeb1('0x48')](handleError(_0x171090,null));};exports[_0xeeb1('0x25')]=function(_0x591ad3,_0x270c23){if(_0x591ad3[_0xeeb1('0x50')]['id']){delete _0x591ad3[_0xeeb1('0x50')]['id'];}return db['MailQueue']['find']({'where':{'id':_0x591ad3[_0xeeb1('0x49')]['id']}})['then'](handleEntityNotFound(_0x270c23,null))[_0xeeb1('0x26')](saveUpdates(_0x591ad3['body'],null))[_0xeeb1('0x26')](respondWithResult(_0x270c23,null))[_0xeeb1('0x48')](handleError(_0x270c23,null));};exports['destroy']=function(_0xe4bccf,_0x375857){return db[_0xeeb1('0x30')]['find']({'where':{'id':_0xe4bccf[_0xeeb1('0x49')]['id']}})[_0xeeb1('0x26')](handleEntityNotFound(_0x375857,null))[_0xeeb1('0x26')](removeEntity(_0x375857,null))[_0xeeb1('0x48')](handleError(_0x375857,null));};exports[_0xeeb1('0x51')]=function(_0x5a670a,_0x5bcb9c){return db[_0xeeb1('0x30')][_0xeeb1('0x51')]()[_0xeeb1('0x26')](respondWithResult(_0x5bcb9c,null))['catch'](handleError(_0x5bcb9c,null));};exports['getMembers']=function(_0x99dc64,_0x666a3c,_0x29627f){var _0x5ce6d1={'raw':!![],'where':{}},_0x84092b={},_0x2f7f01;return db[_0xeeb1('0x30')][_0xeeb1('0x52')]({'where':{'id':_0x99dc64[_0xeeb1('0x49')]['id']}})[_0xeeb1('0x26')](handleEntityNotFound(_0x666a3c,null))[_0xeeb1('0x26')](function(_0x59d85f){if(_0x59d85f){_0x2f7f01=_0x59d85f[_0xeeb1('0x28')]({'plain':!![]});_0x84092b[_0xeeb1('0x34')]=_[_0xeeb1('0x36')](db['UserMailQueue'][_0xeeb1('0x31')]);_0x84092b[_0xeeb1('0x35')]=_[_0xeeb1('0x36')](_0x99dc64[_0xeeb1('0x35')]);_0x84092b[_0xeeb1('0x3f')]=_[_0xeeb1('0x37')](_0x84092b[_0xeeb1('0x34')],_0x84092b[_0xeeb1('0x35')]);_0x5ce6d1[_0xeeb1('0x38')]=_[_0xeeb1('0x37')](_0x84092b[_0xeeb1('0x34')],qs[_0xeeb1('0x39')](_0x99dc64[_0xeeb1('0x35')][_0xeeb1('0x39')]));_0x5ce6d1['attributes']=_0x5ce6d1[_0xeeb1('0x38')][_0xeeb1('0x3a')]?_0x5ce6d1[_0xeeb1('0x38')]:_0x84092b[_0xeeb1('0x34')];if(!_0x99dc64[_0xeeb1('0x35')][_0xeeb1('0x3b')](_0xeeb1('0x3c'))){_0x5ce6d1[_0xeeb1('0x20')]=qs[_0xeeb1('0x20')](_0x99dc64[_0xeeb1('0x35')][_0xeeb1('0x20')]);_0x5ce6d1[_0xeeb1('0x1e')]=qs[_0xeeb1('0x1e')](_0x99dc64[_0xeeb1('0x35')][_0xeeb1('0x1e')]);}_0x5ce6d1[_0xeeb1('0x53')]=qs[_0xeeb1('0x3d')](_0x99dc64['query'][_0xeeb1('0x3d')]);_0x5ce6d1['where']=qs['filters'](_[_0xeeb1('0x40')](_0x99dc64[_0xeeb1('0x35')],_0x84092b['filters']));_0x5ce6d1['where'][_0xeeb1('0x54')]=_0x59d85f['id'];if(_0x99dc64[_0xeeb1('0x35')][_0xeeb1('0x41')]){_0x5ce6d1[_0xeeb1('0x3e')]=_[_0xeeb1('0x55')](_0x5ce6d1[_0xeeb1('0x3e')],{'$or':_[_0xeeb1('0x2f')](_0x5ce6d1[_0xeeb1('0x38')],function(_0x3272cb){var _0x4d841e={};_0x4d841e[_0x3272cb]={'$like':'%'+_0x99dc64[_0xeeb1('0x35')][_0xeeb1('0x41')]+'%'};return _0x4d841e;})});}_0x5ce6d1=_[_0xeeb1('0x55')]({},_0x5ce6d1,_0x99dc64[_0xeeb1('0x43')]);return db[_0xeeb1('0x56')][_0xeeb1('0x46')](_0x5ce6d1);}})['then'](function(_0x351f4e){if(_0x351f4e){return db['User'][_0xeeb1('0x57')]({'where':{'id':_[_0xeeb1('0x2f')](_0x351f4e,_0xeeb1('0x58')),'role':_0xeeb1('0x59')},'attributes':['id','name',_0xeeb1('0x5a'),_0xeeb1('0x5b'),'createdAt']});}})[_0xeeb1('0x26')](function(_0xd9478e){if(_0xd9478e){return{'count':_0xd9478e[_0xeeb1('0x21')],'rows':_[_0xeeb1('0x2f')](_0xd9478e[_0xeeb1('0x47')],function(_0x5d6304){return{'membername':_0x5d6304['name'],'UserId':_0x5d6304['id'],'queue_name':_0x2f7f01[_0xeeb1('0x2d')],'MailQueueId':_0x2f7f01['id'],'interface':util[_0xeeb1('0x5c')]('%s/%s',_0xeeb1('0x5d'),_0x5d6304['name']),'penalty':0x0,'paused':_0x5d6304['mailPause'],'createdAt':_0x5d6304['createdAt'],'updatedAt':_0x5d6304[_0xeeb1('0x5b')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xeeb1('0x26')](respondWithFilteredResult(_0x666a3c,_0x5ce6d1))['catch'](handleError(_0x666a3c,null));};exports[_0xeeb1('0x5e')]=function(_0x23bf08,_0x20b91f,_0x34cf69){var _0x8da7d8={};var _0x33be14={};var _0x374c4a;var _0x2cb598;return db[_0xeeb1('0x30')][_0xeeb1('0x52')]({'where':{'id':_0x23bf08[_0xeeb1('0x49')]['id']}})[_0xeeb1('0x26')](handleEntityNotFound(_0x20b91f,null))[_0xeeb1('0x26')](function(_0x449f07){if(_0x449f07){_0x374c4a=_0x449f07;_0x33be14[_0xeeb1('0x34')]=_[_0xeeb1('0x36')](db[_0xeeb1('0x5f')][_0xeeb1('0x31')]);_0x33be14[_0xeeb1('0x35')]=_[_0xeeb1('0x36')](_0x23bf08[_0xeeb1('0x35')]);_0x33be14[_0xeeb1('0x3f')]=_[_0xeeb1('0x37')](_0x33be14[_0xeeb1('0x34')],_0x33be14[_0xeeb1('0x35')]);_0x8da7d8['attributes']=_[_0xeeb1('0x37')](_0x33be14[_0xeeb1('0x34')],qs[_0xeeb1('0x39')](_0x23bf08[_0xeeb1('0x35')][_0xeeb1('0x39')]));_0x8da7d8['attributes']=_0x8da7d8[_0xeeb1('0x38')]['length']?_0x8da7d8['attributes']:_0x33be14[_0xeeb1('0x34')];_0x8da7d8['order']=qs[_0xeeb1('0x3d')](_0x23bf08[_0xeeb1('0x35')]['sort']);_0x8da7d8['where']=qs[_0xeeb1('0x3f')](_['pick'](_0x23bf08[_0xeeb1('0x35')],_0x33be14[_0xeeb1('0x3f')]));if(_0x23bf08[_0xeeb1('0x35')]['filter']){_0x8da7d8[_0xeeb1('0x3e')]=_[_0xeeb1('0x55')](_0x8da7d8[_0xeeb1('0x3e')],{'$or':_[_0xeeb1('0x2f')](_0x8da7d8[_0xeeb1('0x38')],function(_0xca8335){var _0x1568c3={};_0x1568c3[_0xca8335]={'$like':'%'+_0x23bf08[_0xeeb1('0x35')][_0xeeb1('0x41')]+'%'};return _0x1568c3;})});}_0x8da7d8=_[_0xeeb1('0x55')]({},_0x8da7d8,_0x23bf08[_0xeeb1('0x43')]);return _0x374c4a[_0xeeb1('0x5e')](_0x8da7d8);}})[_0xeeb1('0x26')](function(_0x501409){if(_0x501409){_0x2cb598=_0x501409[_0xeeb1('0x3a')];if(!_0x23bf08['query'][_0xeeb1('0x3b')](_0xeeb1('0x3c'))){_0x8da7d8[_0xeeb1('0x20')]=qs[_0xeeb1('0x20')](_0x23bf08['query']['limit']);_0x8da7d8['offset']=qs['offset'](_0x23bf08[_0xeeb1('0x35')][_0xeeb1('0x1e')]);}return _0x374c4a[_0xeeb1('0x5e')](_0x8da7d8);}})[_0xeeb1('0x26')](function(_0x1469a9){if(_0x1469a9){return _0x1469a9?{'count':_0x2cb598,'rows':_0x1469a9}:null;}})[_0xeeb1('0x26')](respondWithResult(_0x20b91f,null))[_0xeeb1('0x48')](handleError(_0x20b91f,null));};exports[_0xeeb1('0x60')]=function(_0x2e194e,_0xad0b87,_0x5ab225){var _0x181c90=_0x2e194e['body'][_0xeeb1('0x61')];return db['Team']['findAll']({'where':{'id':_0x181c90},'attributes':['id'],'include':[{'model':db[_0xeeb1('0x62')],'as':_0xeeb1('0x63'),'attributes':['id',_0xeeb1('0x2d'),_0xeeb1('0x64'),_0xeeb1('0x65'),'interface'],'raw':!![]}]})[_0xeeb1('0x26')](function(_0x36c601){if(_0x36c601){var _0x4593ca=_['flatMap'](_0x36c601,function(_0x1d95e3){var _0x1a0b3f=_0x1d95e3[_0xeeb1('0x28')]({'plain':!![]});return _0x1a0b3f['Agents'];});return db[_0xeeb1('0x30')][_0xeeb1('0x4a')]({'where':{'id':_0x2e194e[_0xeeb1('0x49')]['id']}})[_0xeeb1('0x26')](function(_0x5749b7){return db['sequelize']['transaction'](function(_0x19c3f5){return _0x5749b7['addTeams'](_0x181c90,{'transaction':_0x19c3f5})[_0xeeb1('0x26')](function(){return BPromise['each'](_0x4593ca,function(_0x1f48ab){return db[_0xeeb1('0x56')][_0xeeb1('0x66')]({'where':{'UserId':_0x1f48ab['id'],'MailQueueId':_0x2e194e[_0xeeb1('0x49')]['id']},'transaction':_0x19c3f5});});})[_0xeeb1('0x26')](function(){_0x4593ca[_0xeeb1('0x67')](function(_0x3d5ae1){socket[_0xeeb1('0x68')](_0xeeb1('0x69'),{'UserId':_0x3d5ae1['id'],'MailQueueId':_0x5749b7['id']});});});});});}})[_0xeeb1('0x26')](respondWithStatusCode(_0xad0b87,null))[_0xeeb1('0x48')](handleError(_0xad0b87,null));};exports[_0xeeb1('0x6a')]=function(_0x502819,_0x3e6da6,_0x4b4895){return db[_0xeeb1('0x5f')][_0xeeb1('0x46')]({'where':{'id':_0x502819[_0xeeb1('0x35')][_0xeeb1('0x61')]},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xeeb1('0x26')](handleEntityNotFound(_0x3e6da6,null))[_0xeeb1('0x26')](function(_0xf6ebe8){var _0x579e1c=_[_0xeeb1('0x2f')](_0xf6ebe8,'id');var _0x584ba8=[];var _0x54d83d=[];var _0x29e97d=squel['select']();_0x29e97d[_0xeeb1('0x6b')](_0xeeb1('0x6c'))[_0xeeb1('0x6d')](_0xeeb1('0x6e'),'tq')[_0xeeb1('0x6f')](_0xeeb1('0x70'),'ut','ut.TeamId\x20=\x20tq.TeamId')['where'](_0xeeb1('0x71'),_0x502819[_0xeeb1('0x49')]['id']);for(var _0x537e93=0x0;_0x537e93<_0xf6ebe8[_0xeeb1('0x3a')];_0x537e93+=0x1){let _0x2ba88f=_0xf6ebe8[_0x537e93];for(var _0x24587b=0x0;_0x24587b<_0x2ba88f[_0xeeb1('0x63')][_0xeeb1('0x3a')];_0x24587b+=0x1){let _0x9d42c3=_0x2ba88f[_0xeeb1('0x63')][_0x24587b];var _0x540a5b=_0x29e97d[_0xeeb1('0x72')]();_0x540a5b[_0xeeb1('0x3e')](_0xeeb1('0x73'),_0x9d42c3['id']);_0x54d83d['push'](db[_0xeeb1('0x74')][_0xeeb1('0x35')](_0x540a5b[_0xeeb1('0x75')](),{'type':db[_0xeeb1('0x74')][_0xeeb1('0x76')]['SELECT']})[_0xeeb1('0x26')](function(_0x22e0a9){if(_0x22e0a9['length']===0x1){return _0x9d42c3['id'];}else{var _0x42ffe1=_['every'](_[_0xeeb1('0x2f')](_0x22e0a9,_0xeeb1('0x77')),function(_0x2900d2){return _[_0xeeb1('0x78')](_0x579e1c,_0x2900d2);});if(_0x42ffe1){return _0x9d42c3['id'];}}}));}}return BPromise['all'](_0x54d83d)[_0xeeb1('0x26')](function(_0x595f66){_0x584ba8=_(_0x584ba8)[_0xeeb1('0x79')](_0x595f66)[_0xeeb1('0x7a')]()[_0xeeb1('0x7b')]();return db[_0xeeb1('0x30')][_0xeeb1('0x4a')]({'where':{'id':_0x502819['params']['id']}})[_0xeeb1('0x26')](function(_0xfd721c){return db[_0xeeb1('0x74')]['transaction'](function(_0x12b250){return _0xfd721c[_0xeeb1('0x6a')](_0x502819[_0xeeb1('0x35')]['ids'],{'transaction':_0x12b250})[_0xeeb1('0x26')](function(){if(!_[_0xeeb1('0x7c')](_0x584ba8)){return _0xfd721c[_0xeeb1('0x7d')](_0x584ba8,{'transaction':_0x12b250});}})[_0xeeb1('0x26')](function(){_0x584ba8['forEach'](function(_0x122c4f){socket[_0xeeb1('0x68')](_0xeeb1('0x7e'),{'UserId':_0x122c4f,'MailQueueId':_0xfd721c['id']});});});});});});})[_0xeeb1('0x26')](respondWithStatusCode(_0x3e6da6,null))[_0xeeb1('0x48')](handleError(_0x3e6da6,null));};exports[_0xeeb1('0x7f')]=function(_0xf8a787,_0x309abb,_0x582ec5){return db[_0xeeb1('0x30')][_0xeeb1('0x4a')]({'where':{'id':_0xf8a787[_0xeeb1('0x49')]['id']}})['then'](handleEntityNotFound(_0x309abb,null))[_0xeeb1('0x26')](function(_0x4990a0){if(_0x4990a0){return _0x4990a0['addAgents'](_0xf8a787[_0xeeb1('0x50')][_0xeeb1('0x61')],_[_0xeeb1('0x80')](_0xf8a787[_0xeeb1('0x50')],['ids','id'])||{})[_0xeeb1('0x81')](function(_0x3c17c3){for(var _0x3d79a9=0x0;_0x3d79a9<_0xf8a787[_0xeeb1('0x50')][_0xeeb1('0x61')][_0xeeb1('0x3a')];_0x3d79a9+=0x1){socket[_0xeeb1('0x68')](_0xeeb1('0x69'),{'UserId':Number(_0xf8a787[_0xeeb1('0x50')][_0xeeb1('0x61')][_0x3d79a9]),'MailQueueId':Number(_0xf8a787[_0xeeb1('0x49')]['id'])});}return _0x3c17c3;});}})['then'](respondWithResult(_0x309abb,null))[_0xeeb1('0x48')](handleError(_0x309abb,null));};exports[_0xeeb1('0x7d')]=function(_0x511880,_0x42897c,_0x408560){return db[_0xeeb1('0x30')][_0xeeb1('0x4a')]({'where':{'id':_0x511880['params']['id']}})[_0xeeb1('0x26')](handleEntityNotFound(_0x42897c,null))[_0xeeb1('0x26')](function(_0x3bd995){if(_0x3bd995){return _0x3bd995[_0xeeb1('0x7d')](_0x511880[_0xeeb1('0x35')][_0xeeb1('0x61')])[_0xeeb1('0x26')](function(){if(_[_0xeeb1('0x82')](_0x511880[_0xeeb1('0x35')]['ids'])){for(var _0x495d9c=0x0;_0x495d9c<_0x511880[_0xeeb1('0x35')][_0xeeb1('0x61')][_0xeeb1('0x3a')];_0x495d9c+=0x1){socket[_0xeeb1('0x68')](_0xeeb1('0x7e'),{'UserId':Number(_0x511880[_0xeeb1('0x35')][_0xeeb1('0x61')][_0x495d9c]),'MailQueueId':Number(_0x511880[_0xeeb1('0x49')]['id'])});}}else{socket[_0xeeb1('0x68')](_0xeeb1('0x7e'),{'UserId':Number(_0x511880[_0xeeb1('0x35')][_0xeeb1('0x61')]),'MailQueueId':Number(_0x511880[_0xeeb1('0x49')]['id'])});}});}})[_0xeeb1('0x26')](respondWithStatusCode(_0x42897c,null))['catch'](handleError(_0x42897c,null));};exports['getAgents']=function(_0x3f15d3,_0x2b48a9,_0x76a9f4){var _0x7b5d5f={};var _0x2a95bc={};var _0xcdebb5;var _0x5a0ac7;return db[_0xeeb1('0x30')][_0xeeb1('0x52')]({'where':{'id':_0x3f15d3[_0xeeb1('0x49')]['id']}})['then'](handleEntityNotFound(_0x2b48a9,null))[_0xeeb1('0x26')](function(_0x58253b){if(_0x58253b){_0xcdebb5=_0x58253b;_0x2a95bc[_0xeeb1('0x34')]=_[_0xeeb1('0x36')](db[_0xeeb1('0x62')]['rawAttributes']);_0x2a95bc[_0xeeb1('0x35')]=_[_0xeeb1('0x36')](_0x3f15d3[_0xeeb1('0x35')]);_0x2a95bc[_0xeeb1('0x3f')]=_[_0xeeb1('0x37')](_0x2a95bc[_0xeeb1('0x34')],_0x2a95bc[_0xeeb1('0x35')]);_0x7b5d5f[_0xeeb1('0x38')]=_[_0xeeb1('0x37')](_0x2a95bc['model'],qs['fields'](_0x3f15d3[_0xeeb1('0x35')][_0xeeb1('0x39')]));_0x7b5d5f[_0xeeb1('0x38')]=_0x7b5d5f[_0xeeb1('0x38')][_0xeeb1('0x3a')]?_0x7b5d5f[_0xeeb1('0x38')]:_0x2a95bc[_0xeeb1('0x34')];_0x7b5d5f['order']=qs['sort'](_0x3f15d3[_0xeeb1('0x35')]['sort']);_0x7b5d5f[_0xeeb1('0x3e')]=qs[_0xeeb1('0x3f')](_[_0xeeb1('0x40')](_0x3f15d3[_0xeeb1('0x35')],_0x2a95bc[_0xeeb1('0x3f')]));if(_0x3f15d3[_0xeeb1('0x35')][_0xeeb1('0x41')]){_0x7b5d5f[_0xeeb1('0x3e')]=_['merge'](_0x7b5d5f[_0xeeb1('0x3e')],{'$or':_[_0xeeb1('0x2f')](_0x7b5d5f['attributes'],function(_0x1f6c9e){var _0x45be91={};_0x45be91[_0x1f6c9e]={'$like':'%'+_0x3f15d3[_0xeeb1('0x35')][_0xeeb1('0x41')]+'%'};return _0x45be91;})});}_0x7b5d5f=_['merge']({},_0x7b5d5f,_0x3f15d3['options']);return _0xcdebb5['getAgents'](_0x7b5d5f);}})[_0xeeb1('0x26')](function(_0x1e10c6){if(_0x1e10c6){_0x5a0ac7=_0x1e10c6[_0xeeb1('0x3a')];if(!_0x3f15d3[_0xeeb1('0x35')][_0xeeb1('0x3b')](_0xeeb1('0x3c'))){_0x7b5d5f[_0xeeb1('0x20')]=qs[_0xeeb1('0x20')](_0x3f15d3[_0xeeb1('0x35')][_0xeeb1('0x20')]);_0x7b5d5f['offset']=qs[_0xeeb1('0x1e')](_0x3f15d3[_0xeeb1('0x35')]['offset']);}return _0xcdebb5[_0xeeb1('0x83')](_0x7b5d5f);}})['then'](function(_0x4ade44){if(_0x4ade44){return _0x4ade44?{'count':_0x5a0ac7,'rows':_0x4ade44}:null;}})['then'](respondWithResult(_0x2b48a9,null))[_0xeeb1('0x48')](handleError(_0x2b48a9,null));};
\ No newline at end of file
+var _0x7d89=['pick','filter','merge','includeAll','include','findAll','catch','params','keys','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne','UserMailQueue','nolimit','order','MailQueueId','User','findAndCountAll','UserId','updatedAt','createdAt','rows','format','%s/%s','SIP','mailPause','getTeams','addTeams','Team','Agents','online','interface','sequelize','findOrCreate','forEach','userMailQueue:save','removeTeams','ids','select','field','tq.TeamId','from','team_has_mail_queues','user_has_teams','clone','push','toString','QueryTypes','SELECT','every','TeamId','union','compact','transaction','isEmpty','removeAgents','emit','userMailQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','socket.io-emitter','redis','register','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','save','update','then','destroy','get','UserProfileResource','error','stack','name','send','index','map','MailQueue','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where'];(function(_0x84f1ac,_0x3475fc){var _0x28d064=function(_0x2d5e45){while(--_0x2d5e45){_0x84f1ac['push'](_0x84f1ac['shift']());}};_0x28d064(++_0x3475fc);}(_0x7d89,0x158));var _0x97d8=function(_0x2753ef,_0x2ee9c9){_0x2753ef=_0x2753ef-0x0;var _0x21103c=_0x7d89[_0x2753ef];return _0x21103c;};'use strict';var emlformat=require(_0x97d8('0x0'));var rimraf=require(_0x97d8('0x1'));var zipdir=require(_0x97d8('0x2'));var jsonpatch=require(_0x97d8('0x3'));var rp=require(_0x97d8('0x4'));var moment=require(_0x97d8('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x97d8('0x6'));var util=require(_0x97d8('0x7'));var path=require('path');var sox=require(_0x97d8('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x97d8('0x9'));var _=require(_0x97d8('0xa'));var squel=require(_0x97d8('0xb'));var crypto=require(_0x97d8('0xc'));var jsforce=require(_0x97d8('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x97d8('0xe'));var Papa=require(_0x97d8('0xf'));var Redis=require(_0x97d8('0x10'));var authService=require(_0x97d8('0x11'));var qs=require(_0x97d8('0x12'));var as=require(_0x97d8('0x13'));var hardwareService=require(_0x97d8('0x14'));var logger=require(_0x97d8('0x15'))(_0x97d8('0x16'));var utils=require(_0x97d8('0x17'));var config=require(_0x97d8('0x18'));var licenseUtil=require(_0x97d8('0x19'));var db=require(_0x97d8('0x1a'))['db'];config['redis']=_[_0x97d8('0x1b')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x97d8('0x1c'))(new Redis(config[_0x97d8('0x1d')]));require('./mailQueue.socket')[_0x97d8('0x1e')](socket);function respondWithStatusCode(_0x57dc0c,_0x247559){_0x247559=_0x247559||0xcc;return function(_0x486f95){if(_0x486f95){return _0x57dc0c[_0x97d8('0x1f')](_0x247559);}return _0x57dc0c[_0x97d8('0x20')](_0x247559)[_0x97d8('0x21')]();};}function respondWithResult(_0x3f7dd1,_0x16631e){_0x16631e=_0x16631e||0xc8;return function(_0x349df4){if(_0x349df4){return _0x3f7dd1[_0x97d8('0x20')](_0x16631e)[_0x97d8('0x22')](_0x349df4);}};}function respondWithFilteredResult(_0xa1a7bb,_0x27eb5e){return function(_0x3adb79){if(_0x3adb79){var _0x41055b=typeof _0x27eb5e[_0x97d8('0x23')]==='undefined'&&typeof _0x27eb5e[_0x97d8('0x24')]===_0x97d8('0x25');var _0x4a4bcc=_0x3adb79[_0x97d8('0x26')];var _0x260372=_0x41055b?0x0:_0x27eb5e[_0x97d8('0x23')];var _0xd0a089=_0x41055b?_0x3adb79[_0x97d8('0x26')]:_0x27eb5e[_0x97d8('0x23')]+_0x27eb5e['limit'];var _0x452893;if(_0xd0a089>=_0x4a4bcc){_0xd0a089=_0x4a4bcc;_0x452893=0xc8;}else{_0x452893=0xce;}_0xa1a7bb['status'](_0x452893);return _0xa1a7bb[_0x97d8('0x27')](_0x97d8('0x28'),_0x260372+'-'+_0xd0a089+'/'+_0x4a4bcc)[_0x97d8('0x22')](_0x3adb79);}return null;};}function patchUpdates(_0xe34876){return function(_0x2f1c35){try{jsonpatch['apply'](_0x2f1c35,_0xe34876,!![]);}catch(_0x5f3935){return BPromise['reject'](_0x5f3935);}return _0x2f1c35[_0x97d8('0x29')]();};}function saveUpdates(_0x3146af,_0x104c59){return function(_0x31efb3){if(_0x31efb3){return _0x31efb3[_0x97d8('0x2a')](_0x3146af)[_0x97d8('0x2b')](function(_0x5a2338){return _0x5a2338;});}return null;};}function removeEntity(_0x30b0ef,_0x546183){return function(_0x59f7f4){if(_0x59f7f4){return _0x59f7f4[_0x97d8('0x2c')]()['then'](function(){var _0x5d19b7=_0x59f7f4[_0x97d8('0x2d')]({'plain':!![]});var _0x4e02cd='MailQueues';return db[_0x97d8('0x2e')][_0x97d8('0x2c')]({'where':{'type':_0x4e02cd,'resourceId':_0x5d19b7['id']}})[_0x97d8('0x2b')](function(){return _0x59f7f4;});})[_0x97d8('0x2b')](function(){_0x30b0ef['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2c8207,_0x2c8189){return function(_0x4b883d){if(!_0x4b883d){_0x2c8207[_0x97d8('0x1f')](0x194);}return _0x4b883d;};}function handleError(_0x162759,_0x344d87){_0x344d87=_0x344d87||0x1f4;return function(_0x201a9d){logger[_0x97d8('0x2f')](_0x201a9d[_0x97d8('0x30')]);if(_0x201a9d[_0x97d8('0x31')]){delete _0x201a9d['name'];}_0x162759[_0x97d8('0x20')](_0x344d87)[_0x97d8('0x32')](_0x201a9d);};}exports[_0x97d8('0x33')]=function(_0x4a43f0,_0x2c5bea){var _0x5a3121={},_0x1e1f20={},_0x1506dc={'count':0x0,'rows':[]};var _0x3224e4=_[_0x97d8('0x34')](db[_0x97d8('0x35')][_0x97d8('0x36')],function(_0x1ec5be){return{'name':_0x1ec5be['fieldName'],'type':_0x1ec5be[_0x97d8('0x37')][_0x97d8('0x38')]};});_0x1e1f20[_0x97d8('0x39')]=_['map'](_0x3224e4,_0x97d8('0x31'));_0x1e1f20[_0x97d8('0x3a')]=_['keys'](_0x4a43f0[_0x97d8('0x3a')]);_0x1e1f20[_0x97d8('0x3b')]=_[_0x97d8('0x3c')](_0x1e1f20[_0x97d8('0x39')],_0x1e1f20[_0x97d8('0x3a')]);_0x5a3121[_0x97d8('0x3d')]=_[_0x97d8('0x3c')](_0x1e1f20[_0x97d8('0x39')],qs[_0x97d8('0x3e')](_0x4a43f0[_0x97d8('0x3a')]['fields']));_0x5a3121[_0x97d8('0x3d')]=_0x5a3121[_0x97d8('0x3d')][_0x97d8('0x3f')]?_0x5a3121['attributes']:_0x1e1f20[_0x97d8('0x39')];if(!_0x4a43f0[_0x97d8('0x3a')][_0x97d8('0x40')]('nolimit')){_0x5a3121[_0x97d8('0x24')]=qs[_0x97d8('0x24')](_0x4a43f0[_0x97d8('0x3a')][_0x97d8('0x24')]);_0x5a3121['offset']=qs['offset'](_0x4a43f0[_0x97d8('0x3a')][_0x97d8('0x23')]);}_0x5a3121['order']=qs[_0x97d8('0x41')](_0x4a43f0['query'][_0x97d8('0x41')]);_0x5a3121[_0x97d8('0x42')]=qs[_0x97d8('0x3b')](_[_0x97d8('0x43')](_0x4a43f0[_0x97d8('0x3a')],_0x1e1f20['filters']),_0x3224e4);if(_0x4a43f0[_0x97d8('0x3a')][_0x97d8('0x44')]){_0x5a3121['where']=_[_0x97d8('0x45')](_0x5a3121[_0x97d8('0x42')],{'$or':_[_0x97d8('0x34')](_0x3224e4,function(_0x1a90fe){if(_0x1a90fe[_0x97d8('0x37')]!=='VIRTUAL'){var _0x20e304={};_0x20e304[_0x1a90fe[_0x97d8('0x31')]]={'$like':'%'+_0x4a43f0[_0x97d8('0x3a')][_0x97d8('0x44')]+'%'};return _0x20e304;}})});}_0x5a3121=_[_0x97d8('0x45')]({},_0x5a3121,_0x4a43f0['options']);var _0x2db2de={'where':_0x5a3121['where']};return db['MailQueue'][_0x97d8('0x26')](_0x2db2de)['then'](function(_0x175645){_0x1506dc[_0x97d8('0x26')]=_0x175645;if(_0x4a43f0['query'][_0x97d8('0x46')]){_0x5a3121[_0x97d8('0x47')]=[{'all':!![]}];}return db[_0x97d8('0x35')][_0x97d8('0x48')](_0x5a3121);})['then'](function(_0x469028){_0x1506dc['rows']=_0x469028;return _0x1506dc;})[_0x97d8('0x2b')](respondWithFilteredResult(_0x2c5bea,_0x5a3121))[_0x97d8('0x49')](handleError(_0x2c5bea,null));};exports['show']=function(_0x484461,_0x3027de){var _0x3039fa={'raw':!![],'where':{'id':_0x484461[_0x97d8('0x4a')]['id']}},_0x110b43={};_0x110b43[_0x97d8('0x39')]=_[_0x97d8('0x4b')](db['MailQueue']['rawAttributes']);_0x110b43['query']=_[_0x97d8('0x4b')](_0x484461['query']);_0x110b43['filters']=_[_0x97d8('0x3c')](_0x110b43['model'],_0x110b43[_0x97d8('0x3a')]);_0x3039fa[_0x97d8('0x3d')]=_[_0x97d8('0x3c')](_0x110b43[_0x97d8('0x39')],qs[_0x97d8('0x3e')](_0x484461[_0x97d8('0x3a')][_0x97d8('0x3e')]));_0x3039fa[_0x97d8('0x3d')]=_0x3039fa['attributes'][_0x97d8('0x3f')]?_0x3039fa[_0x97d8('0x3d')]:_0x110b43[_0x97d8('0x39')];if(_0x484461['query'][_0x97d8('0x46')]){_0x3039fa[_0x97d8('0x47')]=[{'all':!![]}];}_0x3039fa=_['merge']({},_0x3039fa,_0x484461[_0x97d8('0x4c')]);return db['MailQueue'][_0x97d8('0x4d')](_0x3039fa)['then'](handleEntityNotFound(_0x3027de,null))['then'](respondWithResult(_0x3027de,null))['catch'](handleError(_0x3027de,null));};exports[_0x97d8('0x4e')]=function(_0x1d781d,_0x3de21f){return db[_0x97d8('0x35')]['create'](_0x1d781d[_0x97d8('0x4f')],{})[_0x97d8('0x2b')](function(_0x2792e5){var _0x3c630f=_0x1d781d['user']['get']({'plain':!![]});if(!_0x3c630f)throw new Error(_0x97d8('0x50'));if(_0x3c630f['role']===_0x97d8('0x51')){var _0x1c0594=_0x2792e5[_0x97d8('0x2d')]({'plain':!![]});var _0x4586bf='MailQueues';return db['UserProfileSection']['find']({'where':{'name':_0x4586bf,'userProfileId':_0x3c630f[_0x97d8('0x52')]},'raw':!![]})['then'](function(_0x100ff2){if(_0x100ff2&&_0x100ff2['autoAssociation']===0x0){return db[_0x97d8('0x2e')][_0x97d8('0x4e')]({'name':_0x1c0594[_0x97d8('0x31')],'resourceId':_0x1c0594['id'],'type':_0x100ff2['name'],'sectionId':_0x100ff2['id']},{})[_0x97d8('0x2b')](function(){return _0x2792e5;});}else{return _0x2792e5;}})[_0x97d8('0x49')](function(_0x59acf5){logger[_0x97d8('0x2f')](_0x97d8('0x53'),_0x59acf5);throw _0x59acf5;});}return _0x2792e5;})['then'](respondWithResult(_0x3de21f,0xc9))[_0x97d8('0x49')](handleError(_0x3de21f,null));};exports[_0x97d8('0x2a')]=function(_0x2c1bb7,_0x2fc691){if(_0x2c1bb7[_0x97d8('0x4f')]['id']){delete _0x2c1bb7['body']['id'];}return db[_0x97d8('0x35')][_0x97d8('0x4d')]({'where':{'id':_0x2c1bb7[_0x97d8('0x4a')]['id']}})[_0x97d8('0x2b')](handleEntityNotFound(_0x2fc691,null))['then'](saveUpdates(_0x2c1bb7[_0x97d8('0x4f')],null))[_0x97d8('0x2b')](respondWithResult(_0x2fc691,null))[_0x97d8('0x49')](handleError(_0x2fc691,null));};exports[_0x97d8('0x2c')]=function(_0x551d1b,_0x8d48b9){return db[_0x97d8('0x35')][_0x97d8('0x4d')]({'where':{'id':_0x551d1b[_0x97d8('0x4a')]['id']}})[_0x97d8('0x2b')](handleEntityNotFound(_0x8d48b9,null))[_0x97d8('0x2b')](removeEntity(_0x8d48b9,null))[_0x97d8('0x49')](handleError(_0x8d48b9,null));};exports[_0x97d8('0x54')]=function(_0x476453,_0x45d0b6){return db['MailQueue']['describe']()[_0x97d8('0x2b')](respondWithResult(_0x45d0b6,null))[_0x97d8('0x49')](handleError(_0x45d0b6,null));};exports['getMembers']=function(_0x1482b2,_0x3b2cff,_0x43a309){var _0x78afdb={'raw':!![],'where':{}},_0x4f94bb={},_0x531dc4;return db[_0x97d8('0x35')][_0x97d8('0x55')]({'where':{'id':_0x1482b2[_0x97d8('0x4a')]['id']}})[_0x97d8('0x2b')](handleEntityNotFound(_0x3b2cff,null))[_0x97d8('0x2b')](function(_0x2380ca){if(_0x2380ca){_0x531dc4=_0x2380ca['get']({'plain':!![]});_0x4f94bb[_0x97d8('0x39')]=_[_0x97d8('0x4b')](db[_0x97d8('0x56')]['rawAttributes']);_0x4f94bb['query']=_[_0x97d8('0x4b')](_0x1482b2[_0x97d8('0x3a')]);_0x4f94bb[_0x97d8('0x3b')]=_[_0x97d8('0x3c')](_0x4f94bb['model'],_0x4f94bb[_0x97d8('0x3a')]);_0x78afdb[_0x97d8('0x3d')]=_['intersection'](_0x4f94bb['model'],qs[_0x97d8('0x3e')](_0x1482b2[_0x97d8('0x3a')][_0x97d8('0x3e')]));_0x78afdb['attributes']=_0x78afdb[_0x97d8('0x3d')][_0x97d8('0x3f')]?_0x78afdb[_0x97d8('0x3d')]:_0x4f94bb[_0x97d8('0x39')];if(!_0x1482b2[_0x97d8('0x3a')][_0x97d8('0x40')](_0x97d8('0x57'))){_0x78afdb['limit']=qs[_0x97d8('0x24')](_0x1482b2[_0x97d8('0x3a')][_0x97d8('0x24')]);_0x78afdb[_0x97d8('0x23')]=qs[_0x97d8('0x23')](_0x1482b2[_0x97d8('0x3a')]['offset']);}_0x78afdb[_0x97d8('0x58')]=qs[_0x97d8('0x41')](_0x1482b2[_0x97d8('0x3a')][_0x97d8('0x41')]);_0x78afdb[_0x97d8('0x42')]=qs[_0x97d8('0x3b')](_[_0x97d8('0x43')](_0x1482b2[_0x97d8('0x3a')],_0x4f94bb['filters']));_0x78afdb['where'][_0x97d8('0x59')]=_0x2380ca['id'];if(_0x1482b2[_0x97d8('0x3a')][_0x97d8('0x44')]){_0x78afdb[_0x97d8('0x42')]=_['merge'](_0x78afdb[_0x97d8('0x42')],{'$or':_['map'](_0x78afdb[_0x97d8('0x3d')],function(_0x1fbb3f){var _0x176f3b={};_0x176f3b[_0x1fbb3f]={'$like':'%'+_0x1482b2[_0x97d8('0x3a')][_0x97d8('0x44')]+'%'};return _0x176f3b;})});}_0x78afdb=_[_0x97d8('0x45')]({},_0x78afdb,_0x1482b2[_0x97d8('0x4c')]);return db[_0x97d8('0x56')]['findAll'](_0x78afdb);}})['then'](function(_0x1f0aa5){if(_0x1f0aa5){return db[_0x97d8('0x5a')][_0x97d8('0x5b')]({'where':{'id':_[_0x97d8('0x34')](_0x1f0aa5,_0x97d8('0x5c')),'role':'agent'},'attributes':['id','name','mailPause',_0x97d8('0x5d'),_0x97d8('0x5e')]});}})['then'](function(_0x317044){if(_0x317044){return{'count':_0x317044['count'],'rows':_[_0x97d8('0x34')](_0x317044[_0x97d8('0x5f')],function(_0x21e732){return{'membername':_0x21e732[_0x97d8('0x31')],'UserId':_0x21e732['id'],'queue_name':_0x531dc4['name'],'MailQueueId':_0x531dc4['id'],'interface':util[_0x97d8('0x60')](_0x97d8('0x61'),_0x97d8('0x62'),_0x21e732[_0x97d8('0x31')]),'penalty':0x0,'paused':_0x21e732[_0x97d8('0x63')],'createdAt':_0x21e732['createdAt'],'updatedAt':_0x21e732[_0x97d8('0x5d')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x97d8('0x2b')](respondWithFilteredResult(_0x3b2cff,_0x78afdb))[_0x97d8('0x49')](handleError(_0x3b2cff,null));};exports['getTeams']=function(_0x493834,_0x5df761,_0x96f30a){var _0xaf1597={};var _0x1e2736={};var _0x5c4a11;var _0x498c21;return db[_0x97d8('0x35')][_0x97d8('0x55')]({'where':{'id':_0x493834['params']['id']}})[_0x97d8('0x2b')](handleEntityNotFound(_0x5df761,null))[_0x97d8('0x2b')](function(_0x19b0e0){if(_0x19b0e0){_0x5c4a11=_0x19b0e0;_0x1e2736[_0x97d8('0x39')]=_['keys'](db['Team']['rawAttributes']);_0x1e2736[_0x97d8('0x3a')]=_[_0x97d8('0x4b')](_0x493834[_0x97d8('0x3a')]);_0x1e2736[_0x97d8('0x3b')]=_['intersection'](_0x1e2736[_0x97d8('0x39')],_0x1e2736['query']);_0xaf1597[_0x97d8('0x3d')]=_[_0x97d8('0x3c')](_0x1e2736['model'],qs[_0x97d8('0x3e')](_0x493834[_0x97d8('0x3a')][_0x97d8('0x3e')]));_0xaf1597[_0x97d8('0x3d')]=_0xaf1597[_0x97d8('0x3d')][_0x97d8('0x3f')]?_0xaf1597[_0x97d8('0x3d')]:_0x1e2736[_0x97d8('0x39')];_0xaf1597['order']=qs[_0x97d8('0x41')](_0x493834[_0x97d8('0x3a')]['sort']);_0xaf1597[_0x97d8('0x42')]=qs['filters'](_[_0x97d8('0x43')](_0x493834[_0x97d8('0x3a')],_0x1e2736['filters']));if(_0x493834['query'][_0x97d8('0x44')]){_0xaf1597[_0x97d8('0x42')]=_[_0x97d8('0x45')](_0xaf1597[_0x97d8('0x42')],{'$or':_[_0x97d8('0x34')](_0xaf1597[_0x97d8('0x3d')],function(_0x5a9373){var _0x49fea1={};_0x49fea1[_0x5a9373]={'$like':'%'+_0x493834[_0x97d8('0x3a')]['filter']+'%'};return _0x49fea1;})});}_0xaf1597=_[_0x97d8('0x45')]({},_0xaf1597,_0x493834['options']);return _0x5c4a11[_0x97d8('0x64')](_0xaf1597);}})['then'](function(_0x2c1597){if(_0x2c1597){_0x498c21=_0x2c1597[_0x97d8('0x3f')];if(!_0x493834[_0x97d8('0x3a')][_0x97d8('0x40')]('nolimit')){_0xaf1597[_0x97d8('0x24')]=qs[_0x97d8('0x24')](_0x493834[_0x97d8('0x3a')][_0x97d8('0x24')]);_0xaf1597[_0x97d8('0x23')]=qs[_0x97d8('0x23')](_0x493834[_0x97d8('0x3a')][_0x97d8('0x23')]);}return _0x5c4a11[_0x97d8('0x64')](_0xaf1597);}})[_0x97d8('0x2b')](function(_0x505c78){if(_0x505c78){return _0x505c78?{'count':_0x498c21,'rows':_0x505c78}:null;}})[_0x97d8('0x2b')](respondWithResult(_0x5df761,null))[_0x97d8('0x49')](handleError(_0x5df761,null));};exports[_0x97d8('0x65')]=function(_0x3fa295,_0x2bab7a,_0x4f0ff0){var _0x2307e3=_0x3fa295[_0x97d8('0x4f')]['ids'];return db[_0x97d8('0x66')][_0x97d8('0x48')]({'where':{'id':_0x2307e3},'attributes':['id'],'include':[{'model':db[_0x97d8('0x5a')],'as':_0x97d8('0x67'),'attributes':['id',_0x97d8('0x31'),_0x97d8('0x68'),'voicePause',_0x97d8('0x69')],'raw':!![]}]})['then'](function(_0x3c23c1){if(_0x3c23c1){var _0x4350e6=_['flatMap'](_0x3c23c1,function(_0x41dc16){var _0x4d3d8f=_0x41dc16[_0x97d8('0x2d')]({'plain':!![]});return _0x4d3d8f[_0x97d8('0x67')];});return db[_0x97d8('0x35')][_0x97d8('0x4d')]({'where':{'id':_0x3fa295['params']['id']}})[_0x97d8('0x2b')](function(_0x252ec5){return db[_0x97d8('0x6a')]['transaction'](function(_0x514c10){return _0x252ec5[_0x97d8('0x65')](_0x2307e3,{'transaction':_0x514c10})['then'](function(){return BPromise['each'](_0x4350e6,function(_0x32732c){return db['UserMailQueue'][_0x97d8('0x6b')]({'where':{'UserId':_0x32732c['id'],'MailQueueId':_0x3fa295[_0x97d8('0x4a')]['id']},'transaction':_0x514c10});});})[_0x97d8('0x2b')](function(){_0x4350e6[_0x97d8('0x6c')](function(_0x52ea81){socket['emit'](_0x97d8('0x6d'),{'UserId':_0x52ea81['id'],'MailQueueId':_0x252ec5['id']});});});});});}})[_0x97d8('0x2b')](respondWithStatusCode(_0x2bab7a,null))[_0x97d8('0x49')](handleError(_0x2bab7a,null));};exports[_0x97d8('0x6e')]=function(_0x3b2999,_0x2f5fce,_0x37aa27){return db[_0x97d8('0x66')][_0x97d8('0x48')]({'where':{'id':_0x3b2999[_0x97d8('0x3a')][_0x97d8('0x6f')]},'attributes':['id'],'include':[{'model':db[_0x97d8('0x5a')],'as':_0x97d8('0x67'),'attributes':['id'],'raw':!![]}]})[_0x97d8('0x2b')](handleEntityNotFound(_0x2f5fce,null))['then'](function(_0x37a340){var _0x4bc6bd=_[_0x97d8('0x34')](_0x37a340,'id');var _0x571e19=[];var _0x1c0a0f=[];var _0x18fa22=squel[_0x97d8('0x70')]();_0x18fa22[_0x97d8('0x71')](_0x97d8('0x72'))[_0x97d8('0x73')](_0x97d8('0x74'),'tq')['join'](_0x97d8('0x75'),'ut','ut.TeamId\x20=\x20tq.TeamId')['where']('MailQueueId\x20=\x20?',_0x3b2999[_0x97d8('0x4a')]['id']);for(var _0x5a9b20=0x0;_0x5a9b20<_0x37a340['length'];_0x5a9b20+=0x1){let _0x3fe139=_0x37a340[_0x5a9b20];for(var _0x1ef12c=0x0;_0x1ef12c<_0x3fe139[_0x97d8('0x67')]['length'];_0x1ef12c+=0x1){let _0x6adfcb=_0x3fe139['Agents'][_0x1ef12c];var _0x596458=_0x18fa22[_0x97d8('0x76')]();_0x596458[_0x97d8('0x42')]('ut.UserId\x20=\x20?',_0x6adfcb['id']);_0x1c0a0f[_0x97d8('0x77')](db[_0x97d8('0x6a')]['query'](_0x596458[_0x97d8('0x78')](),{'type':db[_0x97d8('0x6a')][_0x97d8('0x79')][_0x97d8('0x7a')]})['then'](function(_0xadcca6){if(_0xadcca6[_0x97d8('0x3f')]===0x1){return _0x6adfcb['id'];}else{var _0x1f7be5=_[_0x97d8('0x7b')](_[_0x97d8('0x34')](_0xadcca6,_0x97d8('0x7c')),function(_0xf6799){return _['includes'](_0x4bc6bd,_0xf6799);});if(_0x1f7be5){return _0x6adfcb['id'];}}}));}}return BPromise['all'](_0x1c0a0f)[_0x97d8('0x2b')](function(_0x4e5f87){_0x571e19=_(_0x571e19)[_0x97d8('0x7d')](_0x4e5f87)[_0x97d8('0x7e')]()['value']();return db['MailQueue'][_0x97d8('0x4d')]({'where':{'id':_0x3b2999[_0x97d8('0x4a')]['id']}})[_0x97d8('0x2b')](function(_0x2fbfcc){return db['sequelize'][_0x97d8('0x7f')](function(_0x529445){return _0x2fbfcc[_0x97d8('0x6e')](_0x3b2999[_0x97d8('0x3a')][_0x97d8('0x6f')],{'transaction':_0x529445})[_0x97d8('0x2b')](function(){if(!_[_0x97d8('0x80')](_0x571e19)){return _0x2fbfcc[_0x97d8('0x81')](_0x571e19,{'transaction':_0x529445});}})[_0x97d8('0x2b')](function(){_0x571e19[_0x97d8('0x6c')](function(_0x5467b1){socket[_0x97d8('0x82')](_0x97d8('0x83'),{'UserId':_0x5467b1,'MailQueueId':_0x2fbfcc['id']});});});});});});})['then'](respondWithStatusCode(_0x2f5fce,null))[_0x97d8('0x49')](handleError(_0x2f5fce,null));};exports[_0x97d8('0x84')]=function(_0x1710ba,_0x2a3cd2,_0x502df5){return db[_0x97d8('0x35')][_0x97d8('0x4d')]({'where':{'id':_0x1710ba[_0x97d8('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2a3cd2,null))[_0x97d8('0x2b')](function(_0x37aa2d){if(_0x37aa2d){return _0x37aa2d[_0x97d8('0x84')](_0x1710ba['body'][_0x97d8('0x6f')],_[_0x97d8('0x85')](_0x1710ba[_0x97d8('0x4f')],[_0x97d8('0x6f'),'id'])||{})[_0x97d8('0x86')](function(_0x3f5036){for(var _0x34481d=0x0;_0x34481d<_0x1710ba[_0x97d8('0x4f')][_0x97d8('0x6f')][_0x97d8('0x3f')];_0x34481d+=0x1){socket[_0x97d8('0x82')](_0x97d8('0x6d'),{'UserId':Number(_0x1710ba['body'][_0x97d8('0x6f')][_0x34481d]),'MailQueueId':Number(_0x1710ba[_0x97d8('0x4a')]['id'])});}return _0x3f5036;});}})['then'](respondWithResult(_0x2a3cd2,null))['catch'](handleError(_0x2a3cd2,null));};exports['removeAgents']=function(_0x398e63,_0x45d1c1,_0x1395f6){return db[_0x97d8('0x35')][_0x97d8('0x4d')]({'where':{'id':_0x398e63[_0x97d8('0x4a')]['id']}})[_0x97d8('0x2b')](handleEntityNotFound(_0x45d1c1,null))[_0x97d8('0x2b')](function(_0x55292a){if(_0x55292a){return _0x55292a[_0x97d8('0x81')](_0x398e63['query'][_0x97d8('0x6f')])[_0x97d8('0x2b')](function(){if(_[_0x97d8('0x87')](_0x398e63[_0x97d8('0x3a')][_0x97d8('0x6f')])){for(var _0x4ad03a=0x0;_0x4ad03a<_0x398e63[_0x97d8('0x3a')]['ids']['length'];_0x4ad03a+=0x1){socket[_0x97d8('0x82')](_0x97d8('0x83'),{'UserId':Number(_0x398e63['query'][_0x97d8('0x6f')][_0x4ad03a]),'MailQueueId':Number(_0x398e63[_0x97d8('0x4a')]['id'])});}}else{socket['emit'](_0x97d8('0x83'),{'UserId':Number(_0x398e63[_0x97d8('0x3a')]['ids']),'MailQueueId':Number(_0x398e63['params']['id'])});}});}})[_0x97d8('0x2b')](respondWithStatusCode(_0x45d1c1,null))[_0x97d8('0x49')](handleError(_0x45d1c1,null));};exports['getAgents']=function(_0x2336b4,_0x43370c,_0x5c5f36){var _0x165880={};var _0x43f3db={};var _0xbfd4a6;var _0x22c431;return db[_0x97d8('0x35')]['findOne']({'where':{'id':_0x2336b4['params']['id']}})['then'](handleEntityNotFound(_0x43370c,null))[_0x97d8('0x2b')](function(_0x4bac51){if(_0x4bac51){_0xbfd4a6=_0x4bac51;_0x43f3db[_0x97d8('0x39')]=_[_0x97d8('0x4b')](db[_0x97d8('0x5a')][_0x97d8('0x36')]);_0x43f3db['query']=_[_0x97d8('0x4b')](_0x2336b4['query']);_0x43f3db[_0x97d8('0x3b')]=_['intersection'](_0x43f3db[_0x97d8('0x39')],_0x43f3db[_0x97d8('0x3a')]);_0x165880[_0x97d8('0x3d')]=_[_0x97d8('0x3c')](_0x43f3db[_0x97d8('0x39')],qs[_0x97d8('0x3e')](_0x2336b4[_0x97d8('0x3a')][_0x97d8('0x3e')]));_0x165880['attributes']=_0x165880[_0x97d8('0x3d')][_0x97d8('0x3f')]?_0x165880[_0x97d8('0x3d')]:_0x43f3db[_0x97d8('0x39')];_0x165880[_0x97d8('0x58')]=qs[_0x97d8('0x41')](_0x2336b4[_0x97d8('0x3a')][_0x97d8('0x41')]);_0x165880[_0x97d8('0x42')]=qs[_0x97d8('0x3b')](_[_0x97d8('0x43')](_0x2336b4[_0x97d8('0x3a')],_0x43f3db[_0x97d8('0x3b')]));if(_0x2336b4['query']['filter']){_0x165880[_0x97d8('0x42')]=_['merge'](_0x165880[_0x97d8('0x42')],{'$or':_[_0x97d8('0x34')](_0x165880['attributes'],function(_0x1d48b3){var _0x861f7a={};_0x861f7a[_0x1d48b3]={'$like':'%'+_0x2336b4[_0x97d8('0x3a')][_0x97d8('0x44')]+'%'};return _0x861f7a;})});}_0x165880=_[_0x97d8('0x45')]({},_0x165880,_0x2336b4[_0x97d8('0x4c')]);return _0xbfd4a6[_0x97d8('0x88')](_0x165880);}})[_0x97d8('0x2b')](function(_0x5bd916){if(_0x5bd916){_0x22c431=_0x5bd916['length'];if(!_0x2336b4['query'][_0x97d8('0x40')](_0x97d8('0x57'))){_0x165880[_0x97d8('0x24')]=qs['limit'](_0x2336b4[_0x97d8('0x3a')][_0x97d8('0x24')]);_0x165880['offset']=qs['offset'](_0x2336b4['query']['offset']);}return _0xbfd4a6['getAgents'](_0x165880);}})[_0x97d8('0x2b')](function(_0x4b21bb){if(_0x4b21bb){return _0x4b21bb?{'count':_0x22c431,'rows':_0x4b21bb}:null;}})['then'](respondWithResult(_0x43370c,null))[_0x97d8('0x49')](handleError(_0x43370c,null));};
\ No newline at end of file
index 893de3d..628afe5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f33=['remove','emit','hasOwnProperty','hook','exports','events','MailQueue','setMaxListeners','save','update'];(function(_0x3ffccc,_0x39620f){var _0x1583d2=function(_0xdbb320){while(--_0xdbb320){_0x3ffccc['push'](_0x3ffccc['shift']());}};_0x1583d2(++_0x39620f);}(_0x3f33,0x131));var _0x33f3=function(_0x36bab3,_0x19ce33){_0x36bab3=_0x36bab3-0x0;var _0x2d3989=_0x3f33[_0x36bab3];return _0x2d3989;};'use strict';var EventEmitter=require(_0x33f3('0x0'));var MailQueue=require('../../mysqldb')['db'][_0x33f3('0x1')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x33f3('0x2')](0x0);var events={'afterCreate':_0x33f3('0x3'),'afterUpdate':_0x33f3('0x4'),'afterDestroy':_0x33f3('0x5')};function emitEvent(_0x1a0aa1){return function(_0x3ad77c,_0xe39c6e,_0x3e76cd){MailQueueEvents[_0x33f3('0x6')](_0x1a0aa1+':'+_0x3ad77c['id'],_0x3ad77c);MailQueueEvents[_0x33f3('0x6')](_0x1a0aa1,_0x3ad77c);_0x3e76cd(null);};}for(var e in events){if(events[_0x33f3('0x7')](e)){var event=events[e];MailQueue[_0x33f3('0x8')](e,emitEvent(event));}}module[_0x33f3('0x9')]=MailQueueEvents;
\ No newline at end of file
+var _0x4431=['events','save','remove','emit','hasOwnProperty','hook','exports'];(function(_0x294975,_0xba7309){var _0x523628=function(_0x53e7ee){while(--_0x53e7ee){_0x294975['push'](_0x294975['shift']());}};_0x523628(++_0xba7309);}(_0x4431,0x13b));var _0x1443=function(_0xcf3fcc,_0xeceecc){_0xcf3fcc=_0xcf3fcc-0x0;var _0x35cbb1=_0x4431[_0xcf3fcc];return _0x35cbb1;};'use strict';var EventEmitter=require(_0x1443('0x0'));var MailQueue=require('../../mysqldb')['db']['MailQueue'];var MailQueueEvents=new EventEmitter();MailQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x1443('0x1'),'afterUpdate':'update','afterDestroy':_0x1443('0x2')};function emitEvent(_0x229738){return function(_0x2021a1,_0x32ff27,_0xd397ed){MailQueueEvents[_0x1443('0x3')](_0x229738+':'+_0x2021a1['id'],_0x2021a1);MailQueueEvents[_0x1443('0x3')](_0x229738,_0x2021a1);_0xd397ed(null);};}for(var e in events){if(events[_0x1443('0x4')](e)){var event=events[e];MailQueue[_0x1443('0x5')](e,emitEvent(event));}}module[_0x1443('0x6')]=MailQueueEvents;
\ No newline at end of file
index 68a323f..3343652 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e9f=['./mailQueue.attributes','exports','define','MailQueue','mail_queues','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x1b5aea,_0x3f04b7){var _0x15cfc6=function(_0x204e92){while(--_0x204e92){_0x1b5aea['push'](_0x1b5aea['shift']());}};_0x15cfc6(++_0x3f04b7);}(_0x1e9f,0x1a5));var _0xf1e9=function(_0x5c7ea7,_0x4f7d6f){_0x5c7ea7=_0x5c7ea7-0x0;var _0x4c3cf1=_0x1e9f[_0x5c7ea7];return _0x4c3cf1;};'use strict';var _=require(_0xf1e9('0x0'));var util=require('util');var logger=require(_0xf1e9('0x1'))(_0xf1e9('0x2'));var moment=require('moment');var BPromise=require(_0xf1e9('0x3'));var rp=require(_0xf1e9('0x4'));var fs=require('fs');var path=require(_0xf1e9('0x5'));var rimraf=require(_0xf1e9('0x6'));var config=require(_0xf1e9('0x7'));var attributes=require(_0xf1e9('0x8'));module[_0xf1e9('0x9')]=function(_0x2657c0,_0x5962e2){return _0x2657c0[_0xf1e9('0xa')](_0xf1e9('0xb'),attributes,{'tableName':_0xf1e9('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc9be=['define','MailQueue','mail_queues','util','../../config/logger','api','moment','bluebird','request-promise','path','./mailQueue.attributes','exports'];(function(_0xe37cad,_0x9fcbdd){var _0x24593e=function(_0x4170bb){while(--_0x4170bb){_0xe37cad['push'](_0xe37cad['shift']());}};_0x24593e(++_0x9fcbdd);}(_0xc9be,0x1cb));var _0xec9b=function(_0x6beb99,_0x57d4da){_0x6beb99=_0x6beb99-0x0;var _0x241505=_0xc9be[_0x6beb99];return _0x241505;};'use strict';var _=require('lodash');var util=require(_0xec9b('0x0'));var logger=require(_0xec9b('0x1'))(_0xec9b('0x2'));var moment=require(_0xec9b('0x3'));var BPromise=require(_0xec9b('0x4'));var rp=require(_0xec9b('0x5'));var fs=require('fs');var path=require(_0xec9b('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xec9b('0x7'));module[_0xec9b('0x8')]=function(_0x2018de,_0x1b60f3){return _0x2018de[_0xec9b('0x9')](_0xec9b('0xa'),attributes,{'tableName':_0xec9b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b5eb29e..75589db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc35b=['catch','GetMailQueue','findAll','options','limit','include','map','model','attributes','ShowMailQueue','MailQueue','find','raw','where','stringify','util','moment','randomstring','../../config/logger','rpc','client','http','redis','defaults','localhost','./mailQueue.socket','request','then','info','request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','error','code','message','MailQueue,\x20%s,\x20%s','result'];(function(_0x32174f,_0x3b465e){var _0x230d4e=function(_0x43683f){while(--_0x43683f){_0x32174f['push'](_0x32174f['shift']());}};_0x230d4e(++_0x3b465e);}(_0xc35b,0xa3));var _0xbc35=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xc35b[_0xae7c2f];return _0x5d7001;};'use strict';var _=require('lodash');var util=require(_0xbc35('0x0'));var moment=require(_0xbc35('0x1'));var BPromise=require('bluebird');var rs=require(_0xbc35('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbc35('0x3'))(_0xbc35('0x4'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xbc35('0x5')][_0xbc35('0x6')]({'port':0x232a});config[_0xbc35('0x7')]=_[_0xbc35('0x8')](config[_0xbc35('0x7')],{'host':_0xbc35('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xbc35('0xa'))['register'](socket);function respondWithRpcPromise(_0x229509,_0x15ec1e,_0x778c40){return new BPromise(function(_0x5e1912,_0x2b5301){return client[_0xbc35('0xb')](_0x229509,_0x778c40)[_0xbc35('0xc')](function(_0x4443a4){logger[_0xbc35('0xd')]('MailQueue,\x20%s,\x20%s',_0x15ec1e,_0xbc35('0xe'));logger[_0xbc35('0xf')](_0xbc35('0x10'),_0x15ec1e,'request\x20sent',JSON['stringify'](_0x4443a4));if(_0x4443a4[_0xbc35('0x11')]){if(_0x4443a4['error'][_0xbc35('0x12')]===0x1f4){logger[_0xbc35('0x11')]('MailQueue,\x20%s,\x20%s',_0x15ec1e,_0x4443a4[_0xbc35('0x11')][_0xbc35('0x13')]);return _0x2b5301(_0x4443a4[_0xbc35('0x11')][_0xbc35('0x13')]);}logger['error'](_0xbc35('0x14'),_0x15ec1e,_0x4443a4[_0xbc35('0x11')]['message']);return _0x5e1912(_0x4443a4[_0xbc35('0x11')]['message']);}else{logger[_0xbc35('0xd')](_0xbc35('0x14'),_0x15ec1e,_0xbc35('0xe'));_0x5e1912(_0x4443a4[_0xbc35('0x15')][_0xbc35('0x13')]);}})[_0xbc35('0x16')](function(_0x4a95e3){logger[_0xbc35('0x11')](_0xbc35('0x14'),_0x15ec1e,_0x4a95e3);_0x2b5301(_0x4a95e3);});});}exports[_0xbc35('0x17')]=function(_0x358ea7){var _0x548cab=this;return new Promise(function(_0x5419e7,_0x11ec73){return db['MailQueue'][_0xbc35('0x18')]({'raw':_0x358ea7[_0xbc35('0x19')]?_0x358ea7['options']['raw']===undefined?!![]:![]:!![],'where':_0x358ea7[_0xbc35('0x19')]?_0x358ea7[_0xbc35('0x19')]['where']||null:null,'attributes':_0x358ea7[_0xbc35('0x19')]?_0x358ea7['options']['attributes']||null:null,'limit':_0x358ea7[_0xbc35('0x19')]?_0x358ea7[_0xbc35('0x19')][_0xbc35('0x1a')]||null:null,'include':_0x358ea7[_0xbc35('0x19')]?_0x358ea7[_0xbc35('0x19')][_0xbc35('0x1b')]?_[_0xbc35('0x1c')](_0x358ea7[_0xbc35('0x19')]['include'],function(_0x52c422){return{'model':db[_0x52c422[_0xbc35('0x1d')]],'as':_0x52c422['as'],'attributes':_0x52c422['attributes'],'include':_0x52c422[_0xbc35('0x1b')]?_[_0xbc35('0x1c')](_0x52c422['include'],function(_0x2a6646){return{'model':db[_0x2a6646[_0xbc35('0x1d')]],'as':_0x2a6646['as'],'attributes':_0x2a6646[_0xbc35('0x1e')],'include':_0x2a6646[_0xbc35('0x1b')]?_[_0xbc35('0x1c')](_0x2a6646['include'],function(_0x1cc43f){return{'model':db[_0x1cc43f[_0xbc35('0x1d')]],'as':_0x1cc43f['as'],'attributes':_0x1cc43f[_0xbc35('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xbc35('0xc')](function(_0x5514f6){logger[_0xbc35('0xd')]('GetMailQueue',_0x358ea7);logger[_0xbc35('0xf')](_0xbc35('0x17'),_0x358ea7,JSON['stringify'](_0x5514f6));_0x5419e7(_0x5514f6);})[_0xbc35('0x16')](function(_0x248724){logger[_0xbc35('0x11')](_0xbc35('0x17'),_0x248724[_0xbc35('0x13')],_0x358ea7);_0x11ec73(_0x548cab[_0xbc35('0x11')](0x1f4,_0x248724['message']));});});};exports[_0xbc35('0x1f')]=function(_0x5f42c4){var _0x5b23c5=this;return new Promise(function(_0x57d06c,_0x5e4f92){return db[_0xbc35('0x20')][_0xbc35('0x21')]({'raw':_0x5f42c4[_0xbc35('0x19')]?_0x5f42c4[_0xbc35('0x19')][_0xbc35('0x22')]===undefined?!![]:![]:!![],'where':_0x5f42c4['options']?_0x5f42c4[_0xbc35('0x19')][_0xbc35('0x23')]||null:null,'attributes':_0x5f42c4[_0xbc35('0x19')]?_0x5f42c4['options'][_0xbc35('0x1e')]||null:null,'include':_0x5f42c4[_0xbc35('0x19')]?_0x5f42c4[_0xbc35('0x19')][_0xbc35('0x1b')]?_[_0xbc35('0x1c')](_0x5f42c4['options'][_0xbc35('0x1b')],function(_0x258926){return{'model':db[_0x258926['model']],'as':_0x258926['as'],'attributes':_0x258926[_0xbc35('0x1e')],'include':_0x258926[_0xbc35('0x1b')]?_[_0xbc35('0x1c')](_0x258926[_0xbc35('0x1b')],function(_0x4cc659){return{'model':db[_0x4cc659[_0xbc35('0x1d')]],'as':_0x4cc659['as'],'attributes':_0x4cc659[_0xbc35('0x1e')],'include':_0x4cc659[_0xbc35('0x1b')]?_[_0xbc35('0x1c')](_0x4cc659[_0xbc35('0x1b')],function(_0x2dd43a){return{'model':db[_0x2dd43a[_0xbc35('0x1d')]],'as':_0x2dd43a['as'],'attributes':_0x2dd43a[_0xbc35('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xbc35('0xc')](function(_0x167728){logger[_0xbc35('0xd')](_0xbc35('0x1f'),_0x5f42c4);logger[_0xbc35('0xf')](_0xbc35('0x1f'),_0x5f42c4,JSON[_0xbc35('0x24')](_0x167728));_0x57d06c(_0x167728);})['catch'](function(_0x54be18){logger['error'](_0xbc35('0x1f'),_0x54be18[_0xbc35('0x13')],_0x5f42c4);_0x5e4f92(_0x5b23c5[_0xbc35('0x11')](0x1f4,_0x54be18[_0xbc35('0x13')]));});});};
\ No newline at end of file
+var _0xb664=['info','MailQueue,\x20%s,\x20%s','request\x20sent','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetMailQueue','MailQueue','findAll','options','raw','where','attributes','limit','include','map','model','debug','ShowMailQueue','find','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','register','request','then'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xb664,0x192));var _0x4b66=function(_0x2d6088,_0x143ee6){_0x2d6088=_0x2d6088-0x0;var _0x506a0c=_0xb664[_0x2d6088];return _0x506a0c;};'use strict';var _=require(_0x4b66('0x0'));var util=require(_0x4b66('0x1'));var moment=require(_0x4b66('0x2'));var BPromise=require('bluebird');var rs=require(_0x4b66('0x3'));var fs=require('fs');var Redis=require(_0x4b66('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x4b66('0x5'));var logger=require(_0x4b66('0x6'))('rpc');var config=require(_0x4b66('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x4b66('0x8')][_0x4b66('0x9')]({'port':0x232a});config[_0x4b66('0xa')]=_[_0x4b66('0xb')](config[_0x4b66('0xa')],{'host':_0x4b66('0xc'),'port':0x18eb});var socket=require(_0x4b66('0xd'))(new Redis(config[_0x4b66('0xa')]));require(_0x4b66('0xe'))[_0x4b66('0xf')](socket);function respondWithRpcPromise(_0x125d33,_0xb9ceb8,_0x275315){return new BPromise(function(_0xa232ab,_0x455221){return client[_0x4b66('0x10')](_0x125d33,_0x275315)[_0x4b66('0x11')](function(_0x45331c){logger[_0x4b66('0x12')](_0x4b66('0x13'),_0xb9ceb8,_0x4b66('0x14'));logger['debug'](_0x4b66('0x15'),_0xb9ceb8,_0x4b66('0x14'),JSON[_0x4b66('0x16')](_0x45331c));if(_0x45331c[_0x4b66('0x17')]){if(_0x45331c[_0x4b66('0x17')][_0x4b66('0x18')]===0x1f4){logger['error'](_0x4b66('0x13'),_0xb9ceb8,_0x45331c[_0x4b66('0x17')][_0x4b66('0x19')]);return _0x455221(_0x45331c[_0x4b66('0x17')][_0x4b66('0x19')]);}logger[_0x4b66('0x17')](_0x4b66('0x13'),_0xb9ceb8,_0x45331c[_0x4b66('0x17')][_0x4b66('0x19')]);return _0xa232ab(_0x45331c[_0x4b66('0x17')][_0x4b66('0x19')]);}else{logger[_0x4b66('0x12')]('MailQueue,\x20%s,\x20%s',_0xb9ceb8,_0x4b66('0x14'));_0xa232ab(_0x45331c[_0x4b66('0x1a')]['message']);}})[_0x4b66('0x1b')](function(_0x5ae083){logger[_0x4b66('0x17')](_0x4b66('0x13'),_0xb9ceb8,_0x5ae083);_0x455221(_0x5ae083);});});}exports[_0x4b66('0x1c')]=function(_0xf6b696){var _0x52ed39=this;return new Promise(function(_0x54e111,_0x24bb05){return db[_0x4b66('0x1d')][_0x4b66('0x1e')]({'raw':_0xf6b696['options']?_0xf6b696[_0x4b66('0x1f')][_0x4b66('0x20')]===undefined?!![]:![]:!![],'where':_0xf6b696['options']?_0xf6b696[_0x4b66('0x1f')][_0x4b66('0x21')]||null:null,'attributes':_0xf6b696[_0x4b66('0x1f')]?_0xf6b696[_0x4b66('0x1f')][_0x4b66('0x22')]||null:null,'limit':_0xf6b696[_0x4b66('0x1f')]?_0xf6b696[_0x4b66('0x1f')][_0x4b66('0x23')]||null:null,'include':_0xf6b696[_0x4b66('0x1f')]?_0xf6b696[_0x4b66('0x1f')][_0x4b66('0x24')]?_[_0x4b66('0x25')](_0xf6b696['options'][_0x4b66('0x24')],function(_0x334fcd){return{'model':db[_0x334fcd[_0x4b66('0x26')]],'as':_0x334fcd['as'],'attributes':_0x334fcd[_0x4b66('0x22')],'include':_0x334fcd[_0x4b66('0x24')]?_[_0x4b66('0x25')](_0x334fcd[_0x4b66('0x24')],function(_0x437215){return{'model':db[_0x437215['model']],'as':_0x437215['as'],'attributes':_0x437215[_0x4b66('0x22')],'include':_0x437215[_0x4b66('0x24')]?_[_0x4b66('0x25')](_0x437215[_0x4b66('0x24')],function(_0x27c962){return{'model':db[_0x27c962[_0x4b66('0x26')]],'as':_0x27c962['as'],'attributes':_0x27c962[_0x4b66('0x22')]};}):[]};}):[]};}):[]:[]})[_0x4b66('0x11')](function(_0x4d22e5){logger[_0x4b66('0x12')](_0x4b66('0x1c'),_0xf6b696);logger[_0x4b66('0x27')](_0x4b66('0x1c'),_0xf6b696,JSON[_0x4b66('0x16')](_0x4d22e5));_0x54e111(_0x4d22e5);})[_0x4b66('0x1b')](function(_0x1c8ad6){logger['error']('GetMailQueue',_0x1c8ad6[_0x4b66('0x19')],_0xf6b696);_0x24bb05(_0x52ed39[_0x4b66('0x17')](0x1f4,_0x1c8ad6[_0x4b66('0x19')]));});});};exports[_0x4b66('0x28')]=function(_0x38f769){var _0x445540=this;return new Promise(function(_0x22cc63,_0x138751){return db[_0x4b66('0x1d')][_0x4b66('0x29')]({'raw':_0x38f769[_0x4b66('0x1f')]?_0x38f769[_0x4b66('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x38f769[_0x4b66('0x1f')]?_0x38f769[_0x4b66('0x1f')][_0x4b66('0x21')]||null:null,'attributes':_0x38f769['options']?_0x38f769[_0x4b66('0x1f')][_0x4b66('0x22')]||null:null,'include':_0x38f769[_0x4b66('0x1f')]?_0x38f769['options']['include']?_[_0x4b66('0x25')](_0x38f769['options'][_0x4b66('0x24')],function(_0x5c1950){return{'model':db[_0x5c1950[_0x4b66('0x26')]],'as':_0x5c1950['as'],'attributes':_0x5c1950[_0x4b66('0x22')],'include':_0x5c1950[_0x4b66('0x24')]?_[_0x4b66('0x25')](_0x5c1950[_0x4b66('0x24')],function(_0x187d22){return{'model':db[_0x187d22[_0x4b66('0x26')]],'as':_0x187d22['as'],'attributes':_0x187d22['attributes'],'include':_0x187d22[_0x4b66('0x24')]?_[_0x4b66('0x25')](_0x187d22[_0x4b66('0x24')],function(_0xee1b78){return{'model':db[_0xee1b78['model']],'as':_0xee1b78['as'],'attributes':_0xee1b78[_0x4b66('0x22')]};}):[]};}):[]};}):[]:[]})[_0x4b66('0x11')](function(_0x21eb25){logger[_0x4b66('0x12')](_0x4b66('0x28'),_0x38f769);logger[_0x4b66('0x27')](_0x4b66('0x28'),_0x38f769,JSON[_0x4b66('0x16')](_0x21eb25));_0x22cc63(_0x21eb25);})['catch'](function(_0x348509){logger[_0x4b66('0x17')](_0x4b66('0x28'),_0x348509[_0x4b66('0x19')],_0x38f769);_0x138751(_0x445540[_0x4b66('0x17')](0x1f4,_0x348509['message']));});});};
\ No newline at end of file
index 90798df..fad9aad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0cf=['removeListener','register','length','mailQueue:','./mailQueue.events','remove','update','emit'];(function(_0x31e584,_0x4d9f7f){var _0x5686d0=function(_0x1f9e99){while(--_0x1f9e99){_0x31e584['push'](_0x31e584['shift']());}};_0x5686d0(++_0x4d9f7f);}(_0xb0cf,0x84));var _0xfb0c=function(_0x4e00da,_0x6c9063){_0x4e00da=_0x4e00da-0x0;var _0x2f9c7a=_0xb0cf[_0x4e00da];return _0x2f9c7a;};'use strict';var MailQueueEvents=require(_0xfb0c('0x0'));var events=['save',_0xfb0c('0x1'),_0xfb0c('0x2')];function createListener(_0xabe18,_0x2022c3){return function(_0x1a3cbb){_0x2022c3[_0xfb0c('0x3')](_0xabe18,_0x1a3cbb);};}function removeListener(_0x47e418,_0x18ab18){return function(){MailQueueEvents[_0xfb0c('0x4')](_0x47e418,_0x18ab18);};}exports[_0xfb0c('0x5')]=function(_0x496ee3){for(var _0x296356=0x0,_0x180ac9=events[_0xfb0c('0x6')];_0x296356<_0x180ac9;_0x296356++){var _0xe49634=events[_0x296356];var _0x368888=createListener(_0xfb0c('0x7')+_0xe49634,_0x496ee3);MailQueueEvents['on'](_0xe49634,_0x368888);}};
\ No newline at end of file
+var _0x1e50=['update','emit','register','length','mailQueue:','save','remove'];(function(_0x2a2f97,_0x473212){var _0x19149c=function(_0x1a5df3){while(--_0x1a5df3){_0x2a2f97['push'](_0x2a2f97['shift']());}};_0x19149c(++_0x473212);}(_0x1e50,0xa6));var _0x01e5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1e50[_0x3dd15e];return _0x231fd0;};'use strict';var MailQueueEvents=require('./mailQueue.events');var events=[_0x01e5('0x0'),_0x01e5('0x1'),_0x01e5('0x2')];function createListener(_0x4dd0a0,_0x359139){return function(_0x41ca00){_0x359139[_0x01e5('0x3')](_0x4dd0a0,_0x41ca00);};}function removeListener(_0x19f39a,_0x12f461){return function(){MailQueueEvents['removeListener'](_0x19f39a,_0x12f461);};}exports[_0x01e5('0x4')]=function(_0x1f6db6){for(var _0x4f331a=0x0,_0x1eb2b1=events[_0x01e5('0x5')];_0x4f331a<_0x1eb2b1;_0x4f331a++){var _0x2c0305=events[_0x4f331a];var _0x6aaf5e=createListener(_0x01e5('0x6')+_0x2c0305,_0x1f6db6);MailQueueEvents['on'](_0x2c0305,_0x6aaf5e);}};
\ No newline at end of file
index b9afbe7..22b2524 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4693=['fs-extra','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','post','create','update','delete','destroy','exports','multer','path','connect-timeout','express','Router'];(function(_0x4f0e62,_0x28e44f){var _0x117ab8=function(_0x1a74bb){while(--_0x1a74bb){_0x4f0e62['push'](_0x4f0e62['shift']());}};_0x117ab8(++_0x28e44f);}(_0x4693,0xcc));var _0x3469=function(_0x2bc807,_0x57bd84){_0x2bc807=_0x2bc807-0x0;var _0x457bd1=_0x4693[_0x2bc807];return _0x457bd1;};'use strict';var multer=require(_0x3469('0x0'));var util=require('util');var path=require(_0x3469('0x1'));var timeout=require(_0x3469('0x2'));var express=require(_0x3469('0x3'));var router=express[_0x3469('0x4')]();var fs_extra=require(_0x3469('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x3469('0x6'));var controller=require('./mailQueueReport.controller');router[_0x3469('0x7')]('/',auth['isAuthenticated'](),controller[_0x3469('0x8')]);router[_0x3469('0x7')](_0x3469('0x9'),auth[_0x3469('0xa')](),controller[_0x3469('0xb')]);router[_0x3469('0x7')](_0x3469('0xc'),auth[_0x3469('0xa')](),controller['show']);router[_0x3469('0xd')]('/',auth['isAuthenticated'](),controller[_0x3469('0xe')]);router['put'](_0x3469('0xc'),auth[_0x3469('0xa')](),controller[_0x3469('0xf')]);router[_0x3469('0x10')](_0x3469('0xc'),auth['isAuthenticated'](),controller[_0x3469('0x11')]);module[_0x3469('0x12')]=router;
\ No newline at end of file
+var _0x4d5d=['/:id','delete','multer','connect-timeout','Router','fs-extra','../../components/auth/service','./mailQueueReport.controller','get','index','isAuthenticated','describe','show'];(function(_0x39d544,_0x35c14f){var _0x5a5ff2=function(_0x2271fb){while(--_0x2271fb){_0x39d544['push'](_0x39d544['shift']());}};_0x5a5ff2(++_0x35c14f);}(_0x4d5d,0x1a2));var _0xd4d5=function(_0xf96956,_0x201650){_0xf96956=_0xf96956-0x0;var _0x314653=_0x4d5d[_0xf96956];return _0x314653;};'use strict';var multer=require(_0xd4d5('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xd4d5('0x1'));var express=require('express');var router=express[_0xd4d5('0x2')]();var fs_extra=require(_0xd4d5('0x3'));var auth=require(_0xd4d5('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xd4d5('0x5'));router[_0xd4d5('0x6')]('/',auth['isAuthenticated'](),controller[_0xd4d5('0x7')]);router[_0xd4d5('0x6')]('/describe',auth[_0xd4d5('0x8')](),controller[_0xd4d5('0x9')]);router[_0xd4d5('0x6')]('/:id',auth[_0xd4d5('0x8')](),controller[_0xd4d5('0xa')]);router['post']('/',auth[_0xd4d5('0x8')](),controller['create']);router['put'](_0xd4d5('0xb'),auth['isAuthenticated'](),controller['update']);router[_0xd4d5('0xc')]('/:id',auth[_0xd4d5('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 5b7d797..469cdea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a21=['DATE','STRING'];(function(_0x3de7e0,_0x28cbff){var _0x11d0b3=function(_0xd95412){while(--_0xd95412){_0x3de7e0['push'](_0x3de7e0['shift']());}};_0x11d0b3(++_0x28cbff);}(_0x2a21,0x7e));var _0x12a2=function(_0x2d5e4c,_0x11e2b5){_0x2d5e4c=_0x2d5e4c-0x0;var _0x3a7f53=_0x2a21[_0x2d5e4c];return _0x3a7f53;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x12a2('0x0')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x12a2('0x0')]},'reason':{'type':Sequelize[_0x12a2('0x1')]}};
\ No newline at end of file
+var _0xb777=['exports','STRING','DATE','sequelize'];(function(_0x1480bb,_0x5de613){var _0x1c3289=function(_0x18e292){while(--_0x18e292){_0x1480bb['push'](_0x1480bb['shift']());}};_0x1c3289(++_0x5de613);}(_0xb777,0x107));var _0x7b77=function(_0x10be58,_0x41cdad){_0x10be58=_0x10be58-0x0;var _0x14deb3=_0xb777[_0x10be58];return _0x14deb3;};'use strict';var moment=require('moment');var Sequelize=require(_0x7b77('0x0'));module[_0x7b77('0x1')]={'uniqueid':{'type':Sequelize[_0x7b77('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x7b77('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x7b77('0x3')]},'acceptAt':{'type':Sequelize[_0x7b77('0x3')]},'exitAt':{'type':Sequelize[_0x7b77('0x3')]},'reason':{'type':Sequelize[_0x7b77('0x2')]}};
\ No newline at end of file
index 4178d27..036787b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32f4=['destroy','then','end','error','stack','name','send','map','MailQueueReport','rawAttributes','fieldName','type','query','keys','filters','attributes','intersection','fields','length','model','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','count','set','Content-Range','apply','reject','save','update'];(function(_0x391c55,_0x168617){var _0xa434e0=function(_0x51fa5c){while(--_0x51fa5c){_0x391c55['push'](_0x391c55['shift']());}};_0xa434e0(++_0x168617);}(_0x32f4,0x154));var _0x432f=function(_0xe07f00,_0x5107ad){_0xe07f00=_0xe07f00-0x0;var _0x4157b3=_0x32f4[_0xe07f00];return _0x4157b3;};'use strict';var emlformat=require(_0x432f('0x0'));var rimraf=require(_0x432f('0x1'));var zipdir=require(_0x432f('0x2'));var jsonpatch=require(_0x432f('0x3'));var rp=require('request-promise');var moment=require(_0x432f('0x4'));var BPromise=require(_0x432f('0x5'));var Mustache=require('mustache');var util=require(_0x432f('0x6'));var path=require(_0x432f('0x7'));var sox=require(_0x432f('0x8'));var csv=require(_0x432f('0x9'));var ejs=require(_0x432f('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x432f('0xb'));var crypto=require(_0x432f('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x432f('0xd'));var toCsv=require('to-csv');var querystring=require(_0x432f('0xe'));var Papa=require(_0x432f('0xf'));var Redis=require(_0x432f('0x10'));var authService=require(_0x432f('0x11'));var qs=require(_0x432f('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x432f('0x13'));var logger=require('../../config/logger')(_0x432f('0x14'));var utils=require('../../config/utils');var config=require(_0x432f('0x15'));var licenseUtil=require(_0x432f('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x457389,_0x29f7d2){_0x29f7d2=_0x29f7d2||0xcc;return function(_0x52e40f){if(_0x52e40f){return _0x457389[_0x432f('0x17')](_0x29f7d2);}return _0x457389[_0x432f('0x18')](_0x29f7d2)['end']();};}function respondWithResult(_0x48a4db,_0x28d9e9){_0x28d9e9=_0x28d9e9||0xc8;return function(_0x44756d){if(_0x44756d){return _0x48a4db[_0x432f('0x18')](_0x28d9e9)[_0x432f('0x19')](_0x44756d);}};}function respondWithFilteredResult(_0x419bfe,_0x4f91c5){return function(_0x175ba7){if(_0x175ba7){var _0x2f0708=typeof _0x4f91c5[_0x432f('0x1a')]===_0x432f('0x1b')&&typeof _0x4f91c5['limit']===_0x432f('0x1b');var _0x30f231=_0x175ba7[_0x432f('0x1c')];var _0x243cf=_0x2f0708?0x0:_0x4f91c5[_0x432f('0x1a')];var _0x129582=_0x2f0708?_0x175ba7['count']:_0x4f91c5[_0x432f('0x1a')]+_0x4f91c5['limit'];var _0x3d545d;if(_0x129582>=_0x30f231){_0x129582=_0x30f231;_0x3d545d=0xc8;}else{_0x3d545d=0xce;}_0x419bfe[_0x432f('0x18')](_0x3d545d);return _0x419bfe[_0x432f('0x1d')](_0x432f('0x1e'),_0x243cf+'-'+_0x129582+'/'+_0x30f231)[_0x432f('0x19')](_0x175ba7);}return null;};}function patchUpdates(_0xf1f5d){return function(_0x10f39b){try{jsonpatch[_0x432f('0x1f')](_0x10f39b,_0xf1f5d,!![]);}catch(_0x693eb3){return BPromise[_0x432f('0x20')](_0x693eb3);}return _0x10f39b[_0x432f('0x21')]();};}function saveUpdates(_0x3446fd,_0x4dd230){return function(_0x5940bd){if(_0x5940bd){return _0x5940bd[_0x432f('0x22')](_0x3446fd)['then'](function(_0x28968e){return _0x28968e;});}return null;};}function removeEntity(_0x5b9c70,_0x37f136){return function(_0x175d1b){if(_0x175d1b){return _0x175d1b[_0x432f('0x23')]()[_0x432f('0x24')](function(){_0x5b9c70[_0x432f('0x18')](0xcc)[_0x432f('0x25')]();});}};}function handleEntityNotFound(_0x59f352,_0x252b3b){return function(_0x33edec){if(!_0x33edec){_0x59f352['sendStatus'](0x194);}return _0x33edec;};}function handleError(_0x2cbde9,_0x3e37ec){_0x3e37ec=_0x3e37ec||0x1f4;return function(_0x2bcbb4){logger[_0x432f('0x26')](_0x2bcbb4[_0x432f('0x27')]);if(_0x2bcbb4[_0x432f('0x28')]){delete _0x2bcbb4[_0x432f('0x28')];}_0x2cbde9['status'](_0x3e37ec)[_0x432f('0x29')](_0x2bcbb4);};}exports['index']=function(_0x1f1fdd,_0x573cc5){var _0x20404d={},_0x5a2c14={},_0x3f768b={'count':0x0,'rows':[]};var _0x489ba6=_[_0x432f('0x2a')](db[_0x432f('0x2b')][_0x432f('0x2c')],function(_0x59c1ab){return{'name':_0x59c1ab[_0x432f('0x2d')],'type':_0x59c1ab[_0x432f('0x2e')]['key']};});_0x5a2c14['model']=_[_0x432f('0x2a')](_0x489ba6,_0x432f('0x28'));_0x5a2c14[_0x432f('0x2f')]=_[_0x432f('0x30')](_0x1f1fdd[_0x432f('0x2f')]);_0x5a2c14[_0x432f('0x31')]=_['intersection'](_0x5a2c14['model'],_0x5a2c14[_0x432f('0x2f')]);_0x20404d[_0x432f('0x32')]=_[_0x432f('0x33')](_0x5a2c14['model'],qs[_0x432f('0x34')](_0x1f1fdd[_0x432f('0x2f')][_0x432f('0x34')]));_0x20404d[_0x432f('0x32')]=_0x20404d[_0x432f('0x32')][_0x432f('0x35')]?_0x20404d[_0x432f('0x32')]:_0x5a2c14[_0x432f('0x36')];if(!_0x1f1fdd['query']['hasOwnProperty'](_0x432f('0x37'))){_0x20404d[_0x432f('0x38')]=qs['limit'](_0x1f1fdd['query']['limit']);_0x20404d[_0x432f('0x1a')]=qs[_0x432f('0x1a')](_0x1f1fdd['query'][_0x432f('0x1a')]);}_0x20404d[_0x432f('0x39')]=qs[_0x432f('0x3a')](_0x1f1fdd['query'][_0x432f('0x3a')]);_0x20404d[_0x432f('0x3b')]=qs['filters'](_[_0x432f('0x3c')](_0x1f1fdd[_0x432f('0x2f')],_0x5a2c14['filters']),_0x489ba6);if(_0x1f1fdd[_0x432f('0x2f')][_0x432f('0x3d')]){_0x20404d[_0x432f('0x3b')]=_[_0x432f('0x3e')](_0x20404d[_0x432f('0x3b')],{'$or':_[_0x432f('0x2a')](_0x489ba6,function(_0xbef36e){if(_0xbef36e[_0x432f('0x2e')]!==_0x432f('0x3f')){var _0x2545b7={};_0x2545b7[_0xbef36e[_0x432f('0x28')]]={'$like':'%'+_0x1f1fdd['query'][_0x432f('0x3d')]+'%'};return _0x2545b7;}})});}_0x20404d=_['merge']({},_0x20404d,_0x1f1fdd[_0x432f('0x40')]);var _0x3e8a0a={'where':_0x20404d['where']};return db[_0x432f('0x2b')]['count'](_0x3e8a0a)[_0x432f('0x24')](function(_0x3aca68){_0x3f768b['count']=_0x3aca68;if(_0x1f1fdd['query'][_0x432f('0x41')]){_0x20404d[_0x432f('0x42')]=[{'all':!![]}];}return db[_0x432f('0x2b')][_0x432f('0x43')](_0x20404d);})[_0x432f('0x24')](function(_0x513a57){_0x3f768b['rows']=_0x513a57;return _0x3f768b;})['then'](respondWithFilteredResult(_0x573cc5,_0x20404d))[_0x432f('0x44')](handleError(_0x573cc5,null));};exports[_0x432f('0x45')]=function(_0x55d64c,_0x1f58af){var _0x841572={'raw':!![],'where':{'id':_0x55d64c[_0x432f('0x46')]['id']}},_0x41c90c={};_0x41c90c[_0x432f('0x36')]=_[_0x432f('0x30')](db[_0x432f('0x2b')][_0x432f('0x2c')]);_0x41c90c[_0x432f('0x2f')]=_['keys'](_0x55d64c[_0x432f('0x2f')]);_0x41c90c[_0x432f('0x31')]=_['intersection'](_0x41c90c[_0x432f('0x36')],_0x41c90c[_0x432f('0x2f')]);_0x841572[_0x432f('0x32')]=_[_0x432f('0x33')](_0x41c90c[_0x432f('0x36')],qs[_0x432f('0x34')](_0x55d64c[_0x432f('0x2f')][_0x432f('0x34')]));_0x841572[_0x432f('0x32')]=_0x841572[_0x432f('0x32')][_0x432f('0x35')]?_0x841572[_0x432f('0x32')]:_0x41c90c[_0x432f('0x36')];if(_0x55d64c[_0x432f('0x2f')]['includeAll']){_0x841572['include']=[{'all':!![]}];}_0x841572=_[_0x432f('0x3e')]({},_0x841572,_0x55d64c[_0x432f('0x40')]);return db[_0x432f('0x2b')][_0x432f('0x47')](_0x841572)[_0x432f('0x24')](handleEntityNotFound(_0x1f58af,null))['then'](respondWithResult(_0x1f58af,null))[_0x432f('0x44')](handleError(_0x1f58af,null));};exports[_0x432f('0x48')]=function(_0x46c5ee,_0x2f88d6){return db[_0x432f('0x2b')][_0x432f('0x48')](_0x46c5ee[_0x432f('0x49')],{})['then'](respondWithResult(_0x2f88d6,0xc9))[_0x432f('0x44')](handleError(_0x2f88d6,null));};exports[_0x432f('0x22')]=function(_0x359853,_0x547bd0){if(_0x359853[_0x432f('0x49')]['id']){delete _0x359853[_0x432f('0x49')]['id'];}return db['MailQueueReport']['find']({'where':{'id':_0x359853[_0x432f('0x46')]['id']}})[_0x432f('0x24')](handleEntityNotFound(_0x547bd0,null))['then'](saveUpdates(_0x359853['body'],null))[_0x432f('0x24')](respondWithResult(_0x547bd0,null))['catch'](handleError(_0x547bd0,null));};exports[_0x432f('0x23')]=function(_0x66b80e,_0x5df9b3){return db[_0x432f('0x2b')]['find']({'where':{'id':_0x66b80e[_0x432f('0x46')]['id']}})[_0x432f('0x24')](handleEntityNotFound(_0x5df9b3,null))[_0x432f('0x24')](removeEntity(_0x5df9b3,null))[_0x432f('0x44')](handleError(_0x5df9b3,null));};exports[_0x432f('0x4a')]=function(_0x2a4d36,_0x56f526){return db[_0x432f('0x2b')]['describe']()[_0x432f('0x24')](respondWithResult(_0x56f526,null))[_0x432f('0x44')](handleError(_0x56f526,null));};
\ No newline at end of file
+var _0x0424=['index','map','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','VIRTUAL','options','MailQueueReport','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','destroy','describe','zip-dir','fast-json-patch','request-promise','moment','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../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','set','Content-Range','apply','save','update','then','stack','name','send'];(function(_0xd4d369,_0x4f6ad2){var _0x293e5d=function(_0xb0e6a4){while(--_0xb0e6a4){_0xd4d369['push'](_0xd4d369['shift']());}};_0x293e5d(++_0x4f6ad2);}(_0x0424,0x159));var _0x4042=function(_0x35a329,_0x488fee){_0x35a329=_0x35a329-0x0;var _0x4cbdb1=_0x0424[_0x35a329];return _0x4cbdb1;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x4042('0x0'));var jsonpatch=require(_0x4042('0x1'));var rp=require(_0x4042('0x2'));var moment=require(_0x4042('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x4042('0x4'));var util=require('util');var path=require('path');var sox=require(_0x4042('0x5'));var csv=require(_0x4042('0x6'));var ejs=require(_0x4042('0x7'));var fs=require('fs');var fs_extra=require(_0x4042('0x8'));var _=require(_0x4042('0x9'));var squel=require(_0x4042('0xa'));var crypto=require(_0x4042('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4042('0x6'));var querystring=require(_0x4042('0xc'));var Papa=require(_0x4042('0xd'));var Redis=require('ioredis');var authService=require(_0x4042('0xe'));var qs=require(_0x4042('0xf'));var as=require(_0x4042('0x10'));var hardwareService=require(_0x4042('0x11'));var logger=require(_0x4042('0x12'))(_0x4042('0x13'));var utils=require(_0x4042('0x14'));var config=require(_0x4042('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x4042('0x16'))['db'];function respondWithStatusCode(_0x357838,_0x59a068){_0x59a068=_0x59a068||0xcc;return function(_0x25fd0a){if(_0x25fd0a){return _0x357838[_0x4042('0x17')](_0x59a068);}return _0x357838[_0x4042('0x18')](_0x59a068)[_0x4042('0x19')]();};}function respondWithResult(_0x35f82a,_0x1ff3ca){_0x1ff3ca=_0x1ff3ca||0xc8;return function(_0xc115bd){if(_0xc115bd){return _0x35f82a['status'](_0x1ff3ca)[_0x4042('0x1a')](_0xc115bd);}};}function respondWithFilteredResult(_0x291e5c,_0x50206f){return function(_0x28087d){if(_0x28087d){var _0x3f99f8=typeof _0x50206f[_0x4042('0x1b')]===_0x4042('0x1c')&&typeof _0x50206f[_0x4042('0x1d')]===_0x4042('0x1c');var _0x62cb76=_0x28087d[_0x4042('0x1e')];var _0x466077=_0x3f99f8?0x0:_0x50206f['offset'];var _0xe5c1ec=_0x3f99f8?_0x28087d['count']:_0x50206f[_0x4042('0x1b')]+_0x50206f['limit'];var _0xca9ca6;if(_0xe5c1ec>=_0x62cb76){_0xe5c1ec=_0x62cb76;_0xca9ca6=0xc8;}else{_0xca9ca6=0xce;}_0x291e5c[_0x4042('0x18')](_0xca9ca6);return _0x291e5c[_0x4042('0x1f')](_0x4042('0x20'),_0x466077+'-'+_0xe5c1ec+'/'+_0x62cb76)['json'](_0x28087d);}return null;};}function patchUpdates(_0xb72021){return function(_0x4561e3){try{jsonpatch[_0x4042('0x21')](_0x4561e3,_0xb72021,!![]);}catch(_0xd1ddb){return BPromise['reject'](_0xd1ddb);}return _0x4561e3[_0x4042('0x22')]();};}function saveUpdates(_0xf0e0c6,_0xd6fe6c){return function(_0x83ce71){if(_0x83ce71){return _0x83ce71[_0x4042('0x23')](_0xf0e0c6)['then'](function(_0x1f9d4a){return _0x1f9d4a;});}return null;};}function removeEntity(_0x6d12a5,_0x519f2c){return function(_0x1daee8){if(_0x1daee8){return _0x1daee8['destroy']()[_0x4042('0x24')](function(){_0x6d12a5[_0x4042('0x18')](0xcc)[_0x4042('0x19')]();});}};}function handleEntityNotFound(_0x5d5c6d,_0x461c5e){return function(_0x3b9e78){if(!_0x3b9e78){_0x5d5c6d[_0x4042('0x17')](0x194);}return _0x3b9e78;};}function handleError(_0xbdadc8,_0x1c4d9f){_0x1c4d9f=_0x1c4d9f||0x1f4;return function(_0x52e575){logger['error'](_0x52e575[_0x4042('0x25')]);if(_0x52e575[_0x4042('0x26')]){delete _0x52e575[_0x4042('0x26')];}_0xbdadc8[_0x4042('0x18')](_0x1c4d9f)[_0x4042('0x27')](_0x52e575);};}exports[_0x4042('0x28')]=function(_0x5eb84b,_0x33733b){var _0x1e9bd7={},_0x4a6a6e={},_0xae26c2={'count':0x0,'rows':[]};var _0x89e16=_[_0x4042('0x29')](db['MailQueueReport']['rawAttributes'],function(_0x3d1f48){return{'name':_0x3d1f48[_0x4042('0x2a')],'type':_0x3d1f48['type'][_0x4042('0x2b')]};});_0x4a6a6e[_0x4042('0x2c')]=_[_0x4042('0x29')](_0x89e16,_0x4042('0x26'));_0x4a6a6e[_0x4042('0x2d')]=_[_0x4042('0x2e')](_0x5eb84b[_0x4042('0x2d')]);_0x4a6a6e[_0x4042('0x2f')]=_[_0x4042('0x30')](_0x4a6a6e['model'],_0x4a6a6e[_0x4042('0x2d')]);_0x1e9bd7[_0x4042('0x31')]=_['intersection'](_0x4a6a6e[_0x4042('0x2c')],qs[_0x4042('0x32')](_0x5eb84b['query'][_0x4042('0x32')]));_0x1e9bd7[_0x4042('0x31')]=_0x1e9bd7[_0x4042('0x31')][_0x4042('0x33')]?_0x1e9bd7[_0x4042('0x31')]:_0x4a6a6e[_0x4042('0x2c')];if(!_0x5eb84b[_0x4042('0x2d')][_0x4042('0x34')](_0x4042('0x35'))){_0x1e9bd7[_0x4042('0x1d')]=qs[_0x4042('0x1d')](_0x5eb84b[_0x4042('0x2d')][_0x4042('0x1d')]);_0x1e9bd7[_0x4042('0x1b')]=qs[_0x4042('0x1b')](_0x5eb84b[_0x4042('0x2d')][_0x4042('0x1b')]);}_0x1e9bd7[_0x4042('0x36')]=qs[_0x4042('0x37')](_0x5eb84b[_0x4042('0x2d')][_0x4042('0x37')]);_0x1e9bd7['where']=qs[_0x4042('0x2f')](_[_0x4042('0x38')](_0x5eb84b[_0x4042('0x2d')],_0x4a6a6e[_0x4042('0x2f')]),_0x89e16);if(_0x5eb84b['query'][_0x4042('0x39')]){_0x1e9bd7[_0x4042('0x3a')]=_[_0x4042('0x3b')](_0x1e9bd7[_0x4042('0x3a')],{'$or':_[_0x4042('0x29')](_0x89e16,function(_0x13da64){if(_0x13da64[_0x4042('0x3c')]!==_0x4042('0x3d')){var _0x341083={};_0x341083[_0x13da64[_0x4042('0x26')]]={'$like':'%'+_0x5eb84b['query'][_0x4042('0x39')]+'%'};return _0x341083;}})});}_0x1e9bd7=_[_0x4042('0x3b')]({},_0x1e9bd7,_0x5eb84b[_0x4042('0x3e')]);var _0x1eab87={'where':_0x1e9bd7[_0x4042('0x3a')]};return db[_0x4042('0x3f')][_0x4042('0x1e')](_0x1eab87)[_0x4042('0x24')](function(_0x52b1bd){_0xae26c2['count']=_0x52b1bd;if(_0x5eb84b[_0x4042('0x2d')][_0x4042('0x40')]){_0x1e9bd7[_0x4042('0x41')]=[{'all':!![]}];}return db[_0x4042('0x3f')][_0x4042('0x42')](_0x1e9bd7);})[_0x4042('0x24')](function(_0xdfb5cb){_0xae26c2[_0x4042('0x43')]=_0xdfb5cb;return _0xae26c2;})[_0x4042('0x24')](respondWithFilteredResult(_0x33733b,_0x1e9bd7))[_0x4042('0x44')](handleError(_0x33733b,null));};exports[_0x4042('0x45')]=function(_0x35fdc2,_0x5666ed){var _0x5dea57={'raw':!![],'where':{'id':_0x35fdc2[_0x4042('0x46')]['id']}},_0x929884={};_0x929884['model']=_[_0x4042('0x2e')](db['MailQueueReport'][_0x4042('0x47')]);_0x929884[_0x4042('0x2d')]=_[_0x4042('0x2e')](_0x35fdc2['query']);_0x929884[_0x4042('0x2f')]=_[_0x4042('0x30')](_0x929884['model'],_0x929884[_0x4042('0x2d')]);_0x5dea57[_0x4042('0x31')]=_[_0x4042('0x30')](_0x929884[_0x4042('0x2c')],qs[_0x4042('0x32')](_0x35fdc2['query']['fields']));_0x5dea57['attributes']=_0x5dea57[_0x4042('0x31')][_0x4042('0x33')]?_0x5dea57['attributes']:_0x929884['model'];if(_0x35fdc2['query'][_0x4042('0x40')]){_0x5dea57['include']=[{'all':!![]}];}_0x5dea57=_['merge']({},_0x5dea57,_0x35fdc2[_0x4042('0x3e')]);return db[_0x4042('0x3f')][_0x4042('0x48')](_0x5dea57)[_0x4042('0x24')](handleEntityNotFound(_0x5666ed,null))[_0x4042('0x24')](respondWithResult(_0x5666ed,null))[_0x4042('0x44')](handleError(_0x5666ed,null));};exports[_0x4042('0x49')]=function(_0x2abc13,_0x198209){return db['MailQueueReport']['create'](_0x2abc13['body'],{})['then'](respondWithResult(_0x198209,0xc9))[_0x4042('0x44')](handleError(_0x198209,null));};exports[_0x4042('0x23')]=function(_0xd898ea,_0x250434){if(_0xd898ea[_0x4042('0x4a')]['id']){delete _0xd898ea[_0x4042('0x4a')]['id'];}return db[_0x4042('0x3f')][_0x4042('0x48')]({'where':{'id':_0xd898ea['params']['id']}})[_0x4042('0x24')](handleEntityNotFound(_0x250434,null))[_0x4042('0x24')](saveUpdates(_0xd898ea[_0x4042('0x4a')],null))[_0x4042('0x24')](respondWithResult(_0x250434,null))[_0x4042('0x44')](handleError(_0x250434,null));};exports[_0x4042('0x4b')]=function(_0xf5f38a,_0x591a0f){return db['MailQueueReport']['find']({'where':{'id':_0xf5f38a[_0x4042('0x46')]['id']}})[_0x4042('0x24')](handleEntityNotFound(_0x591a0f,null))['then'](removeEntity(_0x591a0f,null))[_0x4042('0x44')](handleError(_0x591a0f,null));};exports[_0x4042('0x4c')]=function(_0x5d42a7,_0x4ec047){return db[_0x4042('0x3f')][_0x4042('0x4c')]()[_0x4042('0x24')](respondWithResult(_0x4ec047,null))[_0x4042('0x44')](handleError(_0x4ec047,null));};
\ No newline at end of file
index bf0b9e2..0a91065 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bcc=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailQueueReport.attributes','define','MailQueueReport','report_mail_queue','uniqueid','util','api'];(function(_0x64b4de,_0xd425bc){var _0x1fecbb=function(_0x414c52){while(--_0x414c52){_0x64b4de['push'](_0x64b4de['shift']());}};_0x1fecbb(++_0xd425bc);}(_0x1bcc,0x11c));var _0xc1bc=function(_0x54afe3,_0x258ce5){_0x54afe3=_0x54afe3-0x0;var _0x3e76d6=_0x1bcc[_0x54afe3];return _0x3e76d6;};'use strict';var _=require('lodash');var util=require(_0xc1bc('0x0'));var logger=require('../../config/logger')(_0xc1bc('0x1'));var moment=require(_0xc1bc('0x2'));var BPromise=require(_0xc1bc('0x3'));var rp=require(_0xc1bc('0x4'));var fs=require('fs');var path=require(_0xc1bc('0x5'));var rimraf=require(_0xc1bc('0x6'));var config=require(_0xc1bc('0x7'));var attributes=require(_0xc1bc('0x8'));module['exports']=function(_0x19fa5d,_0x116846){return _0x19fa5d[_0xc1bc('0x9')](_0xc1bc('0xa'),attributes,{'tableName':_0xc1bc('0xb'),'paranoid':![],'indexes':[{'name':_0xc1bc('0xc'),'fields':[_0xc1bc('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0142=['request-promise','../../config/environment','./mailQueueReport.attributes','exports','define','report_mail_queue','uniqueid','lodash','../../config/logger','moment','bluebird'];(function(_0x29a558,_0x16db73){var _0x6105be=function(_0x122cab){while(--_0x122cab){_0x29a558['push'](_0x29a558['shift']());}};_0x6105be(++_0x16db73);}(_0x0142,0x130));var _0x2014=function(_0x1252bf,_0x53dd51){_0x1252bf=_0x1252bf-0x0;var _0x370be2=_0x0142[_0x1252bf];return _0x370be2;};'use strict';var _=require(_0x2014('0x0'));var util=require('util');var logger=require(_0x2014('0x1'))('api');var moment=require(_0x2014('0x2'));var BPromise=require(_0x2014('0x3'));var rp=require(_0x2014('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x2014('0x5'));var attributes=require(_0x2014('0x6'));module[_0x2014('0x7')]=function(_0x503bc3,_0x59a50e){return _0x503bc3[_0x2014('0x8')]('MailQueueReport',attributes,{'tableName':_0x2014('0x9'),'paranoid':![],'indexes':[{'name':_0x2014('0xa'),'fields':[_0x2014('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 572e865..65c9df5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['MailQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateMailQueueReport','create','options','raw','debug','MailQueueReport','body','attributes','limit','UpdateMailQueueReport','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info'];(function(_0x48bea6,_0x53459a){var _0x222876=function(_0x206a3b){while(--_0x206a3b){_0x48bea6['push'](_0x48bea6['shift']());}};_0x222876(++_0x53459a);}(_0xadb5,0xad));var _0x5adb=function(_0x15a8a2,_0x32ca33){_0x15a8a2=_0x15a8a2-0x0;var _0x4eb1a3=_0xadb5[_0x15a8a2];return _0x4eb1a3;};'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']('MailQueueReport,\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);});});}exports[_0x5adb('0x15')]=function(_0x529b65){var _0x3fff62=this;return new Promise(function(_0x5de028,_0x1d9e86){return db['MailQueueReport'][_0x5adb('0x16')](_0x529b65['body'],{'raw':_0x529b65['options']?_0x529b65[_0x5adb('0x17')][_0x5adb('0x18')]===undefined?!![]:![]:!![]})[_0x5adb('0xb')](function(_0x1fd4a7){logger[_0x5adb('0xc')]('CreateMailQueueReport',_0x529b65);logger[_0x5adb('0x19')]('CreateMailQueueReport',_0x529b65,JSON['stringify'](_0x1fd4a7));_0x5de028(_0x1fd4a7);})[_0x5adb('0x14')](function(_0x379b33){logger[_0x5adb('0x10')](_0x5adb('0x15'),_0x379b33[_0x5adb('0x12')],_0x529b65);_0x1d9e86(_0x3fff62[_0x5adb('0x10')](0x1f4,_0x379b33[_0x5adb('0x12')]));});});};exports['UpdateMailQueueReport']=function(_0x4b1957){var _0x373cc3=this;return new Promise(function(_0x3220cd,_0x3839fb){return db[_0x5adb('0x1a')]['update'](_0x4b1957[_0x5adb('0x1b')],{'raw':_0x4b1957[_0x5adb('0x17')]?_0x4b1957['options'][_0x5adb('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')]['where']||null:null,'attributes':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')][_0x5adb('0x1c')]||null:null,'limit':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')][_0x5adb('0x1d')]||null:null})['then'](function(_0x49992e){logger['info'](_0x5adb('0x1e'),_0x4b1957);logger[_0x5adb('0x19')](_0x5adb('0x1e'),_0x4b1957,JSON[_0x5adb('0xf')](_0x49992e));_0x3220cd(_0x49992e);})[_0x5adb('0x14')](function(_0x4de310){logger[_0x5adb('0x10')](_0x5adb('0x1e'),_0x4de310[_0x5adb('0x12')],_0x4b1957);_0x3839fb(_0x373cc3[_0x5adb('0x10')](0x1f4,_0x4de310[_0x5adb('0x12')]));});});};
\ No newline at end of file
+var _0x326f=['error','code','message','result','catch','CreateMailQueueReport','MailQueueReport','options','raw','stringify','UpdateMailQueueReport','body','attributes','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','MailQueueReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x32e610,_0x46e0a6){var _0x223620=function(_0x18c8b4){while(--_0x18c8b4){_0x32e610['push'](_0x32e610['shift']());}};_0x223620(++_0x46e0a6);}(_0x326f,0xd1));var _0xf326=function(_0x52a8ea,_0xb0d982){_0x52a8ea=_0x52a8ea-0x0;var _0xf98690=_0x326f[_0x52a8ea];return _0xf98690;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf326('0x1'));var rs=require(_0xf326('0x2'));var fs=require('fs');var Redis=require(_0xf326('0x3'));var db=require(_0xf326('0x4'))['db'];var utils=require(_0xf326('0x5'));var logger=require(_0xf326('0x6'))(_0xf326('0x7'));var config=require(_0xf326('0x8'));var jayson=require(_0xf326('0x9'));var client=jayson[_0xf326('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c254d,_0x3851eb,_0x165f95){return new BPromise(function(_0x1e7b8a,_0x515bfa){return client['request'](_0x3c254d,_0x165f95)['then'](function(_0x3bacf2){logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));logger[_0xf326('0xe')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x3851eb,_0xf326('0xd'),JSON['stringify'](_0x3bacf2));if(_0x3bacf2[_0xf326('0xf')]){if(_0x3bacf2['error'][_0xf326('0x10')]===0x1f4){logger['error'](_0xf326('0xc'),_0x3851eb,_0x3bacf2[_0xf326('0xf')]['message']);return _0x515bfa(_0x3bacf2[_0xf326('0xf')][_0xf326('0x11')]);}logger[_0xf326('0xf')](_0xf326('0xc'),_0x3851eb,_0x3bacf2['error'][_0xf326('0x11')]);return _0x1e7b8a(_0x3bacf2['error']['message']);}else{logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));_0x1e7b8a(_0x3bacf2[_0xf326('0x12')][_0xf326('0x11')]);}})[_0xf326('0x13')](function(_0x34128e){logger[_0xf326('0xf')]('MailQueueReport,\x20%s,\x20%s',_0x3851eb,_0x34128e);_0x515bfa(_0x34128e);});});}exports[_0xf326('0x14')]=function(_0x453100){var _0x18bee3=this;return new Promise(function(_0x31ffb9,_0xcef2b5){return db[_0xf326('0x15')]['create'](_0x453100['body'],{'raw':_0x453100['options']?_0x453100[_0xf326('0x16')][_0xf326('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x4cabce){logger[_0xf326('0xb')]('CreateMailQueueReport',_0x453100);logger['debug'](_0xf326('0x14'),_0x453100,JSON[_0xf326('0x18')](_0x4cabce));_0x31ffb9(_0x4cabce);})['catch'](function(_0x5aa184){logger[_0xf326('0xf')](_0xf326('0x14'),_0x5aa184['message'],_0x453100);_0xcef2b5(_0x18bee3[_0xf326('0xf')](0x1f4,_0x5aa184[_0xf326('0x11')]));});});};exports[_0xf326('0x19')]=function(_0x295752){var _0x17c157=this;return new Promise(function(_0x2049ec,_0x5ce532){return db['MailQueueReport']['update'](_0x295752[_0xf326('0x1a')],{'raw':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')][_0xf326('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')]['where']||null:null,'attributes':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')][_0xf326('0x1b')]||null:null,'limit':_0x295752['options']?_0x295752[_0xf326('0x16')]['limit']||null:null})['then'](function(_0x6a8e89){logger[_0xf326('0xb')](_0xf326('0x19'),_0x295752);logger['debug'](_0xf326('0x19'),_0x295752,JSON[_0xf326('0x18')](_0x6a8e89));_0x2049ec(_0x6a8e89);})['catch'](function(_0x225776){logger[_0xf326('0xf')](_0xf326('0x19'),_0x225776[_0xf326('0x11')],_0x295752);_0x5ce532(_0x17c157[_0xf326('0xf')](0x1f4,_0x225776[_0xf326('0x11')]));});});};
\ No newline at end of file
index 86ff4df..688cc73 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(_0x453fec,_0x3373f3){var _0x1a3d09=function(_0x3db42a){while(--_0x3db42a){_0x453fec['push'](_0x453fec['shift']());}};_0x1a3d09(++_0x3373f3);}(_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 _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0xb6a50e,_0x4f9a3e){var _0x102922=function(_0x49d8c0){while(--_0x49d8c0){_0xb6a50e['push'](_0xb6a50e['shift']());}};_0x102922(++_0x4f9a3e);}(_0xe706,0xa3));var _0x6e70=function(_0x3a831f,_0x31c8a4){_0x3a831f=_0x3a831f-0x0;var _0x26786c=_0xe706[_0x3a831f];return _0x26786c;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
index 35897b6..b3d502d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f8c=['BOOLEAN','INTEGER','STRING'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x3f8c,0x104));var _0xc3f8=function(_0x3754df,_0x3a4fff){_0x3754df=_0x3754df-0x0;var _0x4b56b4=_0x3f8c[_0x3754df];return _0x4b56b4;};'use strict';var Sequelize=require('sequelize');module['exports']={'description':{'type':Sequelize[_0xc3f8('0x0')]},'host':{'type':Sequelize[_0xc3f8('0x0')]},'authentication':{'type':Sequelize[_0xc3f8('0x1')],'defaultValue':!![]},'user':{'type':Sequelize[_0xc3f8('0x0')]},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize['INTEGER']},'tls':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'mailbox':{'type':Sequelize['STRING'],'defaultValue':'INBOX'},'connTimeout':{'type':Sequelize[_0xc3f8('0x2')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0xc3f8('0x2')],'defaultValue':0x5},'service':{'type':Sequelize[_0xc3f8('0x0')]}};
\ No newline at end of file
+var _0xc2da=['INTEGER','INBOX','sequelize','STRING','BOOLEAN'];(function(_0x595095,_0x8b993a){var _0x5adac9=function(_0x3dad27){while(--_0x3dad27){_0x595095['push'](_0x595095['shift']());}};_0x5adac9(++_0x8b993a);}(_0xc2da,0x124));var _0xac2d=function(_0x5a6d3b,_0x15a93b){_0x5a6d3b=_0x5a6d3b-0x0;var _0x3aaf17=_0xc2da[_0x5a6d3b];return _0x3aaf17;};'use strict';var Sequelize=require(_0xac2d('0x0'));module['exports']={'description':{'type':Sequelize[_0xac2d('0x1')]},'host':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0xac2d('0x2')],'defaultValue':!![]},'user':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0xac2d('0x1')]},'port':{'type':Sequelize[_0xac2d('0x3')]},'tls':{'type':Sequelize[_0xac2d('0x2')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0xac2d('0x1')],'defaultValue':_0xac2d('0x4')},'connTimeout':{'type':Sequelize[_0xac2d('0x3')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0xac2d('0x3')],'defaultValue':0x5},'service':{'type':Sequelize[_0xac2d('0x1')]}};
\ No newline at end of file
index 7865f78..9e89af5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fbd=['util','rimraf','./mailServerIn.attributes','mail_servers_in'];(function(_0x5bb65c,_0x140bc3){var _0xf53a31=function(_0x59c368){while(--_0x59c368){_0x5bb65c['push'](_0x5bb65c['shift']());}};_0xf53a31(++_0x140bc3);}(_0x8fbd,0x1d0));var _0xd8fb=function(_0x107867,_0x50f00e){_0x107867=_0x107867-0x0;var _0x24e1f7=_0x8fbd[_0x107867];return _0x24e1f7;};'use strict';var _=require('lodash');var util=require(_0xd8fb('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xd8fb('0x1'));var config=require('../../config/environment');var attributes=require(_0xd8fb('0x2'));module['exports']=function(_0x272a45,_0xad8dc7){return _0x272a45['define']('MailServerIn',attributes,{'tableName':_0xd8fb('0x3'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4ee3=['mail_servers_in','lodash','util','../../config/logger','bluebird','rimraf','../../config/environment','./mailServerIn.attributes','exports','define','MailServerIn'];(function(_0x284773,_0x222f16){var _0x343a57=function(_0x2be481){while(--_0x2be481){_0x284773['push'](_0x284773['shift']());}};_0x343a57(++_0x222f16);}(_0x4ee3,0x1ae));var _0x34ee=function(_0x21ba3c,_0x3b04e2){_0x21ba3c=_0x21ba3c-0x0;var _0x19d20d=_0x4ee3[_0x21ba3c];return _0x19d20d;};'use strict';var _=require(_0x34ee('0x0'));var util=require(_0x34ee('0x1'));var logger=require(_0x34ee('0x2'))('api');var moment=require('moment');var BPromise=require(_0x34ee('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x34ee('0x4'));var config=require(_0x34ee('0x5'));var attributes=require(_0x34ee('0x6'));module[_0x34ee('0x7')]=function(_0x35b0cc,_0x2127d2){return _0x35b0cc[_0x34ee('0x8')](_0x34ee('0x9'),attributes,{'tableName':_0x34ee('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ec2aa7e..bfec759 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05e2=['error','code','message','info','result','catch','GetMailServerIn','findAll','options','raw','where','limit','include','map','model','attributes','then','lodash','util','bluebird','../../mysqldb','../../config/logger','../../config/environment','http','MailServerIn,\x20%s,\x20%s','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x1c47f2,_0x560945){var _0x4efedb=function(_0x218805){while(--_0x218805){_0x1c47f2['push'](_0x1c47f2['shift']());}};_0x4efedb(++_0x560945);}(_0x05e2,0x116));var _0x205e=function(_0x2d4421,_0x15a84f){_0x2d4421=_0x2d4421-0x0;var _0x2d3b01=_0x05e2[_0x2d4421];return _0x2d3b01;};'use strict';var _=require(_0x205e('0x0'));var util=require(_0x205e('0x1'));var moment=require('moment');var BPromise=require(_0x205e('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x205e('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x205e('0x4'))('rpc');var config=require(_0x205e('0x5'));var jayson=require('jayson/promise');var client=jayson['client'][_0x205e('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x3c7a2d,_0x4aa246,_0x233156){return new BPromise(function(_0x319698,_0x7d9a99){return client['request'](_0x3c7a2d,_0x233156)['then'](function(_0x4182e9){logger['info'](_0x205e('0x7'),_0x4aa246,_0x205e('0x8'));logger[_0x205e('0x9')](_0x205e('0xa'),_0x4aa246,_0x205e('0x8'),JSON[_0x205e('0xb')](_0x4182e9));if(_0x4182e9[_0x205e('0xc')]){if(_0x4182e9['error'][_0x205e('0xd')]===0x1f4){logger[_0x205e('0xc')](_0x205e('0x7'),_0x4aa246,_0x4182e9[_0x205e('0xc')][_0x205e('0xe')]);return _0x7d9a99(_0x4182e9[_0x205e('0xc')]['message']);}logger[_0x205e('0xc')](_0x205e('0x7'),_0x4aa246,_0x4182e9[_0x205e('0xc')][_0x205e('0xe')]);return _0x319698(_0x4182e9[_0x205e('0xc')]['message']);}else{logger[_0x205e('0xf')]('MailServerIn,\x20%s,\x20%s',_0x4aa246,_0x205e('0x8'));_0x319698(_0x4182e9[_0x205e('0x10')]['message']);}})[_0x205e('0x11')](function(_0x42a3f2){logger[_0x205e('0xc')]('MailServerIn,\x20%s,\x20%s',_0x4aa246,_0x42a3f2);_0x7d9a99(_0x42a3f2);});});}exports[_0x205e('0x12')]=function(_0x53a200){var _0x51a824=this;return new Promise(function(_0x189dea,_0x1e24df){return db['MailServerIn'][_0x205e('0x13')]({'raw':_0x53a200[_0x205e('0x14')]?_0x53a200[_0x205e('0x14')][_0x205e('0x15')]===undefined?!![]:![]:!![],'where':_0x53a200['options']?_0x53a200[_0x205e('0x14')][_0x205e('0x16')]||null:null,'attributes':_0x53a200[_0x205e('0x14')]?_0x53a200[_0x205e('0x14')]['attributes']||null:null,'limit':_0x53a200[_0x205e('0x14')]?_0x53a200['options'][_0x205e('0x17')]||null:null,'include':_0x53a200[_0x205e('0x14')]?_0x53a200[_0x205e('0x14')][_0x205e('0x18')]?_[_0x205e('0x19')](_0x53a200[_0x205e('0x14')][_0x205e('0x18')],function(_0x1277b9){return{'model':db[_0x1277b9[_0x205e('0x1a')]],'as':_0x1277b9['as'],'attributes':_0x1277b9[_0x205e('0x1b')],'include':_0x1277b9[_0x205e('0x18')]?_[_0x205e('0x19')](_0x1277b9[_0x205e('0x18')],function(_0x2a0373){return{'model':db[_0x2a0373['model']],'as':_0x2a0373['as'],'attributes':_0x2a0373[_0x205e('0x1b')],'include':_0x2a0373[_0x205e('0x18')]?_['map'](_0x2a0373[_0x205e('0x18')],function(_0x21af03){return{'model':db[_0x21af03['model']],'as':_0x21af03['as'],'attributes':_0x21af03['attributes']};}):[]};}):[]};}):[]:[]})[_0x205e('0x1c')](function(_0x324701){logger[_0x205e('0xf')](_0x205e('0x12'),_0x53a200);logger[_0x205e('0x9')](_0x205e('0x12'),_0x53a200,JSON[_0x205e('0xb')](_0x324701));_0x189dea(_0x324701);})[_0x205e('0x11')](function(_0x10ce10){logger[_0x205e('0xc')](_0x205e('0x12'),_0x10ce10[_0x205e('0xe')],_0x53a200);_0x1e24df(_0x51a824[_0x205e('0xc')](0x1f4,_0x10ce10[_0x205e('0xe')]));});});};
\ No newline at end of file
+var _0xfdb5=['model','attributes','debug','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','http','request','then','info','MailServerIn,\x20%s,\x20%s','request\x20sent','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','GetMailServerIn','MailServerIn','findAll','options','raw','where','include','map'];(function(_0x5d4607,_0x6b5e7b){var _0x5e4a86=function(_0x46891a){while(--_0x46891a){_0x5d4607['push'](_0x5d4607['shift']());}};_0x5e4a86(++_0x6b5e7b);}(_0xfdb5,0x12f));var _0x5fdb=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0xfdb5[_0x4c12ec];return _0x3ae42c;};'use strict';var _=require(_0x5fdb('0x0'));var util=require(_0x5fdb('0x1'));var moment=require(_0x5fdb('0x2'));var BPromise=require('bluebird');var rs=require(_0x5fdb('0x3'));var fs=require('fs');var Redis=require(_0x5fdb('0x4'));var db=require(_0x5fdb('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x5fdb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5fdb('0x7'));var client=jayson['client'][_0x5fdb('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xda053e,_0x4b6fe0,_0x542bbc){return new BPromise(function(_0x5a556e,_0x340588){return client[_0x5fdb('0x9')](_0xda053e,_0x542bbc)[_0x5fdb('0xa')](function(_0x25cef8){logger[_0x5fdb('0xb')](_0x5fdb('0xc'),_0x4b6fe0,_0x5fdb('0xd'));logger['debug'](_0x5fdb('0xe'),_0x4b6fe0,'request\x20sent',JSON[_0x5fdb('0xf')](_0x25cef8));if(_0x25cef8[_0x5fdb('0x10')]){if(_0x25cef8[_0x5fdb('0x10')]['code']===0x1f4){logger[_0x5fdb('0x10')]('MailServerIn,\x20%s,\x20%s',_0x4b6fe0,_0x25cef8[_0x5fdb('0x10')][_0x5fdb('0x11')]);return _0x340588(_0x25cef8['error'][_0x5fdb('0x11')]);}logger[_0x5fdb('0x10')](_0x5fdb('0xc'),_0x4b6fe0,_0x25cef8['error'][_0x5fdb('0x11')]);return _0x5a556e(_0x25cef8[_0x5fdb('0x10')][_0x5fdb('0x11')]);}else{logger[_0x5fdb('0xb')](_0x5fdb('0xc'),_0x4b6fe0,_0x5fdb('0xd'));_0x5a556e(_0x25cef8['result']['message']);}})[_0x5fdb('0x12')](function(_0x5f1ddc){logger[_0x5fdb('0x10')](_0x5fdb('0xc'),_0x4b6fe0,_0x5f1ddc);_0x340588(_0x5f1ddc);});});}exports[_0x5fdb('0x13')]=function(_0x47a10f){var _0x15fa3e=this;return new Promise(function(_0xb8c99f,_0xf27e5d){return db[_0x5fdb('0x14')][_0x5fdb('0x15')]({'raw':_0x47a10f[_0x5fdb('0x16')]?_0x47a10f['options'][_0x5fdb('0x17')]===undefined?!![]:![]:!![],'where':_0x47a10f['options']?_0x47a10f['options'][_0x5fdb('0x18')]||null:null,'attributes':_0x47a10f[_0x5fdb('0x16')]?_0x47a10f[_0x5fdb('0x16')]['attributes']||null:null,'limit':_0x47a10f[_0x5fdb('0x16')]?_0x47a10f[_0x5fdb('0x16')]['limit']||null:null,'include':_0x47a10f[_0x5fdb('0x16')]?_0x47a10f[_0x5fdb('0x16')]['include']?_['map'](_0x47a10f['options']['include'],function(_0x15d2ec){return{'model':db[_0x15d2ec['model']],'as':_0x15d2ec['as'],'attributes':_0x15d2ec['attributes'],'include':_0x15d2ec[_0x5fdb('0x19')]?_[_0x5fdb('0x1a')](_0x15d2ec[_0x5fdb('0x19')],function(_0x49e795){return{'model':db[_0x49e795[_0x5fdb('0x1b')]],'as':_0x49e795['as'],'attributes':_0x49e795[_0x5fdb('0x1c')],'include':_0x49e795[_0x5fdb('0x19')]?_[_0x5fdb('0x1a')](_0x49e795['include'],function(_0x200eaf){return{'model':db[_0x200eaf['model']],'as':_0x200eaf['as'],'attributes':_0x200eaf[_0x5fdb('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x5fdb('0xa')](function(_0x488843){logger[_0x5fdb('0xb')]('GetMailServerIn',_0x47a10f);logger[_0x5fdb('0x1d')](_0x5fdb('0x13'),_0x47a10f,JSON['stringify'](_0x488843));_0xb8c99f(_0x488843);})['catch'](function(_0xa5c0e2){logger[_0x5fdb('0x10')](_0x5fdb('0x13'),_0xa5c0e2[_0x5fdb('0x11')],_0x47a10f);_0xf27e5d(_0x15fa3e[_0x5fdb('0x10')](0x1f4,_0xa5c0e2['message']));});});};
\ No newline at end of file
index 9aebb28..b9d7dfd 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(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0x9957,0x93));var _0x7995=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x9957[_0x618414];return _0x21c19a;};'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 _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(_0x28d18d,_0x55896b){var _0x470640=function(_0x57e78b){while(--_0x57e78b){_0x28d18d['push'](_0x28d18d['shift']());}};_0x470640(++_0x55896b);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0xe')]('/',auth['isAuthenticated'](),controller[_0x7995('0xf')]);router[_0x7995('0x10')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router[_0x7995('0x12')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0x13')]);module[_0x7995('0x14')]=router;
\ No newline at end of file
index cce5935..df25ccb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc9b=['STRING','INTEGER','BOOLEAN','sequelize','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xbc9b,0x9e));var _0xbbc9=function(_0x5d68a2,_0x4304cf){_0x5d68a2=_0x5d68a2-0x0;var _0x5b3088=_0xbc9b[_0x5d68a2];return _0x5b3088;};'use strict';var Sequelize=require(_0xbbc9('0x0'));module[_0xbbc9('0x1')]={'description':{'type':Sequelize[_0xbbc9('0x2')]},'host':{'type':Sequelize[_0xbbc9('0x2')]},'user':{'type':Sequelize['STRING']},'pass':{'type':Sequelize[_0xbbc9('0x2')]},'port':{'type':Sequelize[_0xbbc9('0x3')]},'secure':{'type':Sequelize[_0xbbc9('0x4')],'defaultValue':![]},'service':{'type':Sequelize[_0xbbc9('0x2')]},'authentication':{'type':Sequelize[_0xbbc9('0x4')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x0810=['STRING','INTEGER','BOOLEAN'];(function(_0x569ab3,_0x36d30b){var _0x549d12=function(_0xd67be8){while(--_0xd67be8){_0x569ab3['push'](_0x569ab3['shift']());}};_0x549d12(++_0x36d30b);}(_0x0810,0x1e6));var _0x0081=function(_0x116c9e,_0x16d22d){_0x116c9e=_0x116c9e-0x0;var _0xc37eb2=_0x0810[_0x116c9e];return _0xc37eb2;};'use strict';var Sequelize=require('sequelize');module['exports']={'description':{'type':Sequelize[_0x0081('0x0')]},'host':{'type':Sequelize['STRING']},'user':{'type':Sequelize[_0x0081('0x0')]},'pass':{'type':Sequelize[_0x0081('0x0')]},'port':{'type':Sequelize[_0x0081('0x1')]},'secure':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'service':{'type':Sequelize[_0x0081('0x0')]},'authentication':{'type':Sequelize[_0x0081('0x2')],'defaultValue':!![]}};
\ No newline at end of file
index 9c1acd2..d8ae384 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ad5=['name','send','index','MailServerOut','rawAttributes','type','key','model','query','filters','attributes','intersection','nolimit','order','sort','pick','where','merge','map','VIRTUAL','filter','options','includeAll','findAll','rows','catch','show','params','keys','fields','length','include','create','body','find','rimraf','request-promise','moment','bluebird','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','then','destroy','stack'];(function(_0x4ec660,_0x50883c){var _0x4efd0d=function(_0x3871a9){while(--_0x3871a9){_0x4ec660['push'](_0x4ec660['shift']());}};_0x4efd0d(++_0x50883c);}(_0x6ad5,0x6b));var _0x56ad=function(_0x4e9689,_0x1c5cd8){_0x4e9689=_0x4e9689-0x0;var _0x2dbda2=_0x6ad5[_0x4e9689];return _0x2dbda2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x56ad('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x56ad('0x1'));var moment=require(_0x56ad('0x2'));var BPromise=require(_0x56ad('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x56ad('0x4'));var sox=require(_0x56ad('0x5'));var csv=require('to-csv');var ejs=require(_0x56ad('0x6'));var fs=require('fs');var fs_extra=require(_0x56ad('0x7'));var _=require(_0x56ad('0x8'));var squel=require('squel');var crypto=require(_0x56ad('0x9'));var jsforce=require(_0x56ad('0xa'));var deskjs=require(_0x56ad('0xb'));var toCsv=require('to-csv');var querystring=require(_0x56ad('0xc'));var Papa=require('papaparse');var Redis=require(_0x56ad('0xd'));var authService=require(_0x56ad('0xe'));var qs=require(_0x56ad('0xf'));var as=require(_0x56ad('0x10'));var hardwareService=require(_0x56ad('0x11'));var logger=require(_0x56ad('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x56ad('0x13'));var licenseUtil=require(_0x56ad('0x14'));var db=require(_0x56ad('0x15'))['db'];function respondWithStatusCode(_0x3cbeb5,_0x11a03c){_0x11a03c=_0x11a03c||0xcc;return function(_0x26ef13){if(_0x26ef13){return _0x3cbeb5[_0x56ad('0x16')](_0x11a03c);}return _0x3cbeb5[_0x56ad('0x17')](_0x11a03c)[_0x56ad('0x18')]();};}function respondWithResult(_0x49bfaa,_0xd6b956){_0xd6b956=_0xd6b956||0xc8;return function(_0x4bc8de){if(_0x4bc8de){return _0x49bfaa[_0x56ad('0x17')](_0xd6b956)['json'](_0x4bc8de);}};}function respondWithFilteredResult(_0x3c400d,_0x37a832){return function(_0x287876){if(_0x287876){var _0x4b158d=typeof _0x37a832[_0x56ad('0x19')]===_0x56ad('0x1a')&&typeof _0x37a832[_0x56ad('0x1b')]===_0x56ad('0x1a');var _0x88d258=_0x287876[_0x56ad('0x1c')];var _0x5ee572=_0x4b158d?0x0:_0x37a832['offset'];var _0x449d49=_0x4b158d?_0x287876['count']:_0x37a832[_0x56ad('0x19')]+_0x37a832[_0x56ad('0x1b')];var _0x37bd90;if(_0x449d49>=_0x88d258){_0x449d49=_0x88d258;_0x37bd90=0xc8;}else{_0x37bd90=0xce;}_0x3c400d['status'](_0x37bd90);return _0x3c400d[_0x56ad('0x1d')](_0x56ad('0x1e'),_0x5ee572+'-'+_0x449d49+'/'+_0x88d258)[_0x56ad('0x1f')](_0x287876);}return null;};}function patchUpdates(_0x3aafd2){return function(_0x409f56){try{jsonpatch[_0x56ad('0x20')](_0x409f56,_0x3aafd2,!![]);}catch(_0x5d8760){return BPromise[_0x56ad('0x21')](_0x5d8760);}return _0x409f56['save']();};}function saveUpdates(_0x250247,_0x18c28d){return function(_0x3a2053){if(_0x3a2053){return _0x3a2053['update'](_0x250247)[_0x56ad('0x22')](function(_0x5cf68e){return _0x5cf68e;});}return null;};}function removeEntity(_0x36d97c,_0x1940b4){return function(_0x5decaa){if(_0x5decaa){return _0x5decaa[_0x56ad('0x23')]()['then'](function(){_0x36d97c[_0x56ad('0x17')](0xcc)[_0x56ad('0x18')]();});}};}function handleEntityNotFound(_0x3fcd46,_0x572296){return function(_0xef2f7c){if(!_0xef2f7c){_0x3fcd46['sendStatus'](0x194);}return _0xef2f7c;};}function handleError(_0x2c6082,_0x30ac06){_0x30ac06=_0x30ac06||0x1f4;return function(_0x171676){logger['error'](_0x171676[_0x56ad('0x24')]);if(_0x171676['name']){delete _0x171676[_0x56ad('0x25')];}_0x2c6082[_0x56ad('0x17')](_0x30ac06)[_0x56ad('0x26')](_0x171676);};}exports[_0x56ad('0x27')]=function(_0x6618c6,_0x45cafb){var _0x100d87={},_0x59a06e={},_0x6211a3={'count':0x0,'rows':[]};var _0x2593fe=_['map'](db[_0x56ad('0x28')][_0x56ad('0x29')],function(_0x15fff1){return{'name':_0x15fff1['fieldName'],'type':_0x15fff1[_0x56ad('0x2a')][_0x56ad('0x2b')]};});_0x59a06e[_0x56ad('0x2c')]=_['map'](_0x2593fe,'name');_0x59a06e[_0x56ad('0x2d')]=_['keys'](_0x6618c6[_0x56ad('0x2d')]);_0x59a06e[_0x56ad('0x2e')]=_['intersection'](_0x59a06e[_0x56ad('0x2c')],_0x59a06e['query']);_0x100d87[_0x56ad('0x2f')]=_[_0x56ad('0x30')](_0x59a06e[_0x56ad('0x2c')],qs['fields'](_0x6618c6[_0x56ad('0x2d')]['fields']));_0x100d87[_0x56ad('0x2f')]=_0x100d87[_0x56ad('0x2f')]['length']?_0x100d87['attributes']:_0x59a06e[_0x56ad('0x2c')];if(!_0x6618c6[_0x56ad('0x2d')]['hasOwnProperty'](_0x56ad('0x31'))){_0x100d87[_0x56ad('0x1b')]=qs[_0x56ad('0x1b')](_0x6618c6['query']['limit']);_0x100d87['offset']=qs[_0x56ad('0x19')](_0x6618c6['query'][_0x56ad('0x19')]);}_0x100d87[_0x56ad('0x32')]=qs[_0x56ad('0x33')](_0x6618c6[_0x56ad('0x2d')][_0x56ad('0x33')]);_0x100d87['where']=qs['filters'](_[_0x56ad('0x34')](_0x6618c6[_0x56ad('0x2d')],_0x59a06e[_0x56ad('0x2e')]),_0x2593fe);if(_0x6618c6[_0x56ad('0x2d')]['filter']){_0x100d87[_0x56ad('0x35')]=_[_0x56ad('0x36')](_0x100d87[_0x56ad('0x35')],{'$or':_[_0x56ad('0x37')](_0x2593fe,function(_0x31ea21){if(_0x31ea21[_0x56ad('0x2a')]!==_0x56ad('0x38')){var _0x3b78ad={};_0x3b78ad[_0x31ea21['name']]={'$like':'%'+_0x6618c6[_0x56ad('0x2d')][_0x56ad('0x39')]+'%'};return _0x3b78ad;}})});}_0x100d87=_[_0x56ad('0x36')]({},_0x100d87,_0x6618c6[_0x56ad('0x3a')]);var _0x49340b={'where':_0x100d87[_0x56ad('0x35')]};return db[_0x56ad('0x28')][_0x56ad('0x1c')](_0x49340b)[_0x56ad('0x22')](function(_0x402943){_0x6211a3[_0x56ad('0x1c')]=_0x402943;if(_0x6618c6[_0x56ad('0x2d')][_0x56ad('0x3b')]){_0x100d87['include']=[{'all':!![]}];}return db[_0x56ad('0x28')][_0x56ad('0x3c')](_0x100d87);})[_0x56ad('0x22')](function(_0x4453d1){_0x6211a3[_0x56ad('0x3d')]=_0x4453d1;return _0x6211a3;})[_0x56ad('0x22')](respondWithFilteredResult(_0x45cafb,_0x100d87))[_0x56ad('0x3e')](handleError(_0x45cafb,null));};exports[_0x56ad('0x3f')]=function(_0x55565b,_0x1ec10f){var _0x6fb8b5={'raw':!![],'where':{'id':_0x55565b[_0x56ad('0x40')]['id']}},_0x27e61b={};_0x27e61b[_0x56ad('0x2c')]=_[_0x56ad('0x41')](db[_0x56ad('0x28')][_0x56ad('0x29')]);_0x27e61b[_0x56ad('0x2d')]=_['keys'](_0x55565b['query']);_0x27e61b[_0x56ad('0x2e')]=_[_0x56ad('0x30')](_0x27e61b['model'],_0x27e61b[_0x56ad('0x2d')]);_0x6fb8b5[_0x56ad('0x2f')]=_[_0x56ad('0x30')](_0x27e61b[_0x56ad('0x2c')],qs['fields'](_0x55565b[_0x56ad('0x2d')][_0x56ad('0x42')]));_0x6fb8b5[_0x56ad('0x2f')]=_0x6fb8b5[_0x56ad('0x2f')][_0x56ad('0x43')]?_0x6fb8b5[_0x56ad('0x2f')]:_0x27e61b[_0x56ad('0x2c')];if(_0x55565b[_0x56ad('0x2d')][_0x56ad('0x3b')]){_0x6fb8b5[_0x56ad('0x44')]=[{'all':!![]}];}_0x6fb8b5=_['merge']({},_0x6fb8b5,_0x55565b[_0x56ad('0x3a')]);return db[_0x56ad('0x28')]['find'](_0x6fb8b5)[_0x56ad('0x22')](handleEntityNotFound(_0x1ec10f,null))[_0x56ad('0x22')](respondWithResult(_0x1ec10f,null))['catch'](handleError(_0x1ec10f,null));};exports[_0x56ad('0x45')]=function(_0x3e06e9,_0x44605f){return db['MailServerOut']['create'](_0x3e06e9[_0x56ad('0x46')],{})[_0x56ad('0x22')](respondWithResult(_0x44605f,0xc9))[_0x56ad('0x3e')](handleError(_0x44605f,null));};exports['update']=function(_0x2ecdd7,_0x737718){if(_0x2ecdd7[_0x56ad('0x46')]['id']){delete _0x2ecdd7[_0x56ad('0x46')]['id'];}return db[_0x56ad('0x28')][_0x56ad('0x47')]({'where':{'id':_0x2ecdd7[_0x56ad('0x40')]['id']}})['then'](handleEntityNotFound(_0x737718,null))[_0x56ad('0x22')](saveUpdates(_0x2ecdd7['body'],null))['then'](respondWithResult(_0x737718,null))[_0x56ad('0x3e')](handleError(_0x737718,null));};exports['destroy']=function(_0x44f2d0,_0x49dfaa){return db[_0x56ad('0x28')]['find']({'where':{'id':_0x44f2d0[_0x56ad('0x40')]['id']}})[_0x56ad('0x22')](handleEntityNotFound(_0x49dfaa,null))[_0x56ad('0x22')](removeEntity(_0x49dfaa,null))[_0x56ad('0x3e')](handleError(_0x49dfaa,null));};
\ No newline at end of file
+var _0x4bcb=['Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','index','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','nolimit','order','sort','where','map','filter','merge','options','MailServerOut','includeAll','include','findAll','rows','params','keys','length','find','create','catch','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','undefined','limit','count','set'];(function(_0x5a187b,_0x1f64fe){var _0x14d601=function(_0x45fd29){while(--_0x45fd29){_0x5a187b['push'](_0x5a187b['shift']());}};_0x14d601(++_0x1f64fe);}(_0x4bcb,0x74));var _0xb4bc=function(_0x29d6e6,_0x264220){_0x29d6e6=_0x29d6e6-0x0;var _0xc75ff0=_0x4bcb[_0x29d6e6];return _0xc75ff0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb4bc('0x0'));var zipdir=require(_0xb4bc('0x1'));var jsonpatch=require(_0xb4bc('0x2'));var rp=require(_0xb4bc('0x3'));var moment=require(_0xb4bc('0x4'));var BPromise=require(_0xb4bc('0x5'));var Mustache=require(_0xb4bc('0x6'));var util=require(_0xb4bc('0x7'));var path=require(_0xb4bc('0x8'));var sox=require('sox');var csv=require(_0xb4bc('0x9'));var ejs=require(_0xb4bc('0xa'));var fs=require('fs');var fs_extra=require(_0xb4bc('0xb'));var _=require(_0xb4bc('0xc'));var squel=require(_0xb4bc('0xd'));var crypto=require(_0xb4bc('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xb4bc('0xf'));var toCsv=require(_0xb4bc('0x9'));var querystring=require(_0xb4bc('0x10'));var Papa=require(_0xb4bc('0x11'));var Redis=require(_0xb4bc('0x12'));var authService=require(_0xb4bc('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xb4bc('0x14'))(_0xb4bc('0x15'));var utils=require(_0xb4bc('0x16'));var config=require(_0xb4bc('0x17'));var licenseUtil=require(_0xb4bc('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x20fa0b,_0x178fc0){_0x178fc0=_0x178fc0||0xcc;return function(_0x20bc3d){if(_0x20bc3d){return _0x20fa0b['sendStatus'](_0x178fc0);}return _0x20fa0b[_0xb4bc('0x19')](_0x178fc0)['end']();};}function respondWithResult(_0x48655c,_0xb50d9c){_0xb50d9c=_0xb50d9c||0xc8;return function(_0x12abb1){if(_0x12abb1){return _0x48655c[_0xb4bc('0x19')](_0xb50d9c)[_0xb4bc('0x1a')](_0x12abb1);}};}function respondWithFilteredResult(_0x490eb1,_0x51a84b){return function(_0x292c75){if(_0x292c75){var _0x25555f=typeof _0x51a84b[_0xb4bc('0x1b')]===_0xb4bc('0x1c')&&typeof _0x51a84b[_0xb4bc('0x1d')]==='undefined';var _0x4d5ee0=_0x292c75[_0xb4bc('0x1e')];var _0x4c83fd=_0x25555f?0x0:_0x51a84b[_0xb4bc('0x1b')];var _0x2784a4=_0x25555f?_0x292c75[_0xb4bc('0x1e')]:_0x51a84b[_0xb4bc('0x1b')]+_0x51a84b[_0xb4bc('0x1d')];var _0x2c0b5c;if(_0x2784a4>=_0x4d5ee0){_0x2784a4=_0x4d5ee0;_0x2c0b5c=0xc8;}else{_0x2c0b5c=0xce;}_0x490eb1[_0xb4bc('0x19')](_0x2c0b5c);return _0x490eb1[_0xb4bc('0x1f')](_0xb4bc('0x20'),_0x4c83fd+'-'+_0x2784a4+'/'+_0x4d5ee0)[_0xb4bc('0x1a')](_0x292c75);}return null;};}function patchUpdates(_0xb3e2c1){return function(_0x5469df){try{jsonpatch[_0xb4bc('0x21')](_0x5469df,_0xb3e2c1,!![]);}catch(_0x398187){return BPromise[_0xb4bc('0x22')](_0x398187);}return _0x5469df[_0xb4bc('0x23')]();};}function saveUpdates(_0x59d189,_0x1af179){return function(_0x2bc7e7){if(_0x2bc7e7){return _0x2bc7e7[_0xb4bc('0x24')](_0x59d189)[_0xb4bc('0x25')](function(_0x395ea2){return _0x395ea2;});}return null;};}function removeEntity(_0x16bdf0,_0x49778e){return function(_0x527595){if(_0x527595){return _0x527595[_0xb4bc('0x26')]()[_0xb4bc('0x25')](function(){_0x16bdf0[_0xb4bc('0x19')](0xcc)[_0xb4bc('0x27')]();});}};}function handleEntityNotFound(_0x3cc2b0,_0x46d330){return function(_0x32d62d){if(!_0x32d62d){_0x3cc2b0['sendStatus'](0x194);}return _0x32d62d;};}function handleError(_0x5205f6,_0x4887f0){_0x4887f0=_0x4887f0||0x1f4;return function(_0x24541d){logger[_0xb4bc('0x28')](_0x24541d[_0xb4bc('0x29')]);if(_0x24541d[_0xb4bc('0x2a')]){delete _0x24541d['name'];}_0x5205f6['status'](_0x4887f0)['send'](_0x24541d);};}exports[_0xb4bc('0x2b')]=function(_0x3b5e87,_0x12de36){var _0x4cd07b={},_0x4c1b34={},_0x592d34={'count':0x0,'rows':[]};var _0x3a79d1=_['map'](db['MailServerOut'][_0xb4bc('0x2c')],function(_0x6b184f){return{'name':_0x6b184f[_0xb4bc('0x2d')],'type':_0x6b184f[_0xb4bc('0x2e')][_0xb4bc('0x2f')]};});_0x4c1b34[_0xb4bc('0x30')]=_['map'](_0x3a79d1,_0xb4bc('0x2a'));_0x4c1b34[_0xb4bc('0x31')]=_['keys'](_0x3b5e87['query']);_0x4c1b34[_0xb4bc('0x32')]=_[_0xb4bc('0x33')](_0x4c1b34['model'],_0x4c1b34[_0xb4bc('0x31')]);_0x4cd07b[_0xb4bc('0x34')]=_[_0xb4bc('0x33')](_0x4c1b34[_0xb4bc('0x30')],qs[_0xb4bc('0x35')](_0x3b5e87[_0xb4bc('0x31')][_0xb4bc('0x35')]));_0x4cd07b[_0xb4bc('0x34')]=_0x4cd07b['attributes']['length']?_0x4cd07b['attributes']:_0x4c1b34[_0xb4bc('0x30')];if(!_0x3b5e87[_0xb4bc('0x31')]['hasOwnProperty'](_0xb4bc('0x36'))){_0x4cd07b[_0xb4bc('0x1d')]=qs['limit'](_0x3b5e87[_0xb4bc('0x31')][_0xb4bc('0x1d')]);_0x4cd07b['offset']=qs[_0xb4bc('0x1b')](_0x3b5e87[_0xb4bc('0x31')]['offset']);}_0x4cd07b[_0xb4bc('0x37')]=qs[_0xb4bc('0x38')](_0x3b5e87[_0xb4bc('0x31')][_0xb4bc('0x38')]);_0x4cd07b[_0xb4bc('0x39')]=qs[_0xb4bc('0x32')](_['pick'](_0x3b5e87[_0xb4bc('0x31')],_0x4c1b34[_0xb4bc('0x32')]),_0x3a79d1);if(_0x3b5e87['query']['filter']){_0x4cd07b[_0xb4bc('0x39')]=_['merge'](_0x4cd07b[_0xb4bc('0x39')],{'$or':_[_0xb4bc('0x3a')](_0x3a79d1,function(_0x1a3722){if(_0x1a3722[_0xb4bc('0x2e')]!=='VIRTUAL'){var _0x13d0ef={};_0x13d0ef[_0x1a3722[_0xb4bc('0x2a')]]={'$like':'%'+_0x3b5e87[_0xb4bc('0x31')][_0xb4bc('0x3b')]+'%'};return _0x13d0ef;}})});}_0x4cd07b=_[_0xb4bc('0x3c')]({},_0x4cd07b,_0x3b5e87[_0xb4bc('0x3d')]);var _0x3b8d48={'where':_0x4cd07b[_0xb4bc('0x39')]};return db[_0xb4bc('0x3e')][_0xb4bc('0x1e')](_0x3b8d48)[_0xb4bc('0x25')](function(_0x25fff2){_0x592d34[_0xb4bc('0x1e')]=_0x25fff2;if(_0x3b5e87['query'][_0xb4bc('0x3f')]){_0x4cd07b[_0xb4bc('0x40')]=[{'all':!![]}];}return db[_0xb4bc('0x3e')][_0xb4bc('0x41')](_0x4cd07b);})[_0xb4bc('0x25')](function(_0x3e2c38){_0x592d34[_0xb4bc('0x42')]=_0x3e2c38;return _0x592d34;})['then'](respondWithFilteredResult(_0x12de36,_0x4cd07b))['catch'](handleError(_0x12de36,null));};exports['show']=function(_0x1d5f0e,_0x3d920e){var _0x5b71f9={'raw':!![],'where':{'id':_0x1d5f0e[_0xb4bc('0x43')]['id']}},_0x2fdc4d={};_0x2fdc4d[_0xb4bc('0x30')]=_[_0xb4bc('0x44')](db[_0xb4bc('0x3e')]['rawAttributes']);_0x2fdc4d['query']=_['keys'](_0x1d5f0e[_0xb4bc('0x31')]);_0x2fdc4d[_0xb4bc('0x32')]=_[_0xb4bc('0x33')](_0x2fdc4d[_0xb4bc('0x30')],_0x2fdc4d[_0xb4bc('0x31')]);_0x5b71f9[_0xb4bc('0x34')]=_[_0xb4bc('0x33')](_0x2fdc4d[_0xb4bc('0x30')],qs['fields'](_0x1d5f0e[_0xb4bc('0x31')][_0xb4bc('0x35')]));_0x5b71f9['attributes']=_0x5b71f9[_0xb4bc('0x34')][_0xb4bc('0x45')]?_0x5b71f9[_0xb4bc('0x34')]:_0x2fdc4d[_0xb4bc('0x30')];if(_0x1d5f0e['query'][_0xb4bc('0x3f')]){_0x5b71f9[_0xb4bc('0x40')]=[{'all':!![]}];}_0x5b71f9=_['merge']({},_0x5b71f9,_0x1d5f0e['options']);return db['MailServerOut'][_0xb4bc('0x46')](_0x5b71f9)[_0xb4bc('0x25')](handleEntityNotFound(_0x3d920e,null))[_0xb4bc('0x25')](respondWithResult(_0x3d920e,null))['catch'](handleError(_0x3d920e,null));};exports[_0xb4bc('0x47')]=function(_0x5da839,_0x14f81a){return db[_0xb4bc('0x3e')]['create'](_0x5da839['body'],{})[_0xb4bc('0x25')](respondWithResult(_0x14f81a,0xc9))[_0xb4bc('0x48')](handleError(_0x14f81a,null));};exports[_0xb4bc('0x24')]=function(_0x340761,_0x2c39a2){if(_0x340761[_0xb4bc('0x49')]['id']){delete _0x340761[_0xb4bc('0x49')]['id'];}return db[_0xb4bc('0x3e')][_0xb4bc('0x46')]({'where':{'id':_0x340761[_0xb4bc('0x43')]['id']}})[_0xb4bc('0x25')](handleEntityNotFound(_0x2c39a2,null))['then'](saveUpdates(_0x340761[_0xb4bc('0x49')],null))[_0xb4bc('0x25')](respondWithResult(_0x2c39a2,null))[_0xb4bc('0x48')](handleError(_0x2c39a2,null));};exports[_0xb4bc('0x26')]=function(_0x4e604a,_0x5a0932){return db[_0xb4bc('0x3e')][_0xb4bc('0x46')]({'where':{'id':_0x4e604a[_0xb4bc('0x43')]['id']}})[_0xb4bc('0x25')](handleEntityNotFound(_0x5a0932,null))[_0xb4bc('0x25')](removeEntity(_0x5a0932,null))[_0xb4bc('0x48')](handleError(_0x5a0932,null));};
\ No newline at end of file
index a50f03e..f42812e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c56=['../../config/environment','./mailServerOut.attributes','MailServerOut','mail_servers_out','util','../../config/logger','bluebird','request-promise','rimraf'];(function(_0x3d326b,_0x8a8a1e){var _0x119033=function(_0x1af393){while(--_0x1af393){_0x3d326b['push'](_0x3d326b['shift']());}};_0x119033(++_0x8a8a1e);}(_0x4c56,0x175));var _0x64c5=function(_0xf25c5f,_0x11ff33){_0xf25c5f=_0xf25c5f-0x0;var _0x4e9211=_0x4c56[_0xf25c5f];return _0x4e9211;};'use strict';var _=require('lodash');var util=require(_0x64c5('0x0'));var logger=require(_0x64c5('0x1'))('api');var moment=require('moment');var BPromise=require(_0x64c5('0x2'));var rp=require(_0x64c5('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x64c5('0x4'));var config=require(_0x64c5('0x5'));var attributes=require(_0x64c5('0x6'));module['exports']=function(_0x280ffe,_0x58665d){return _0x280ffe['define'](_0x64c5('0x7'),attributes,{'tableName':_0x64c5('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd537=['bluebird','path','rimraf','./mailServerOut.attributes','exports','define','MailServerOut','lodash','api'];(function(_0x3d53e6,_0x7a8d60){var _0x5651d5=function(_0x2052f3){while(--_0x2052f3){_0x3d53e6['push'](_0x3d53e6['shift']());}};_0x5651d5(++_0x7a8d60);}(_0xd537,0x103));var _0x7d53=function(_0x26462c,_0xd20a35){_0x26462c=_0x26462c-0x0;var _0x509a42=_0xd537[_0x26462c];return _0x509a42;};'use strict';var _=require(_0x7d53('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x7d53('0x1'));var moment=require('moment');var BPromise=require(_0x7d53('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7d53('0x3'));var rimraf=require(_0x7d53('0x4'));var config=require('../../config/environment');var attributes=require(_0x7d53('0x5'));module[_0x7d53('0x6')]=function(_0x33e6ea,_0x2f974f){return _0x33e6ea[_0x7d53('0x7')](_0x7d53('0x8'),attributes,{'tableName':'mail_servers_out','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8799b64..79ed787 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0xdecb09,_0x47dbe6){var _0x5e0a52=function(_0x382eed){while(--_0x382eed){_0xdecb09['push'](_0xdecb09['shift']());}};_0x5e0a52(++_0x47dbe6);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0xc4aa[_0x8c43de];return _0xa6591b;};'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
+var _0x1261=['then','info','MailServerOut,\x20%s,\x20%s','request\x20sent','MailServerOut,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request'];(function(_0x15b68d,_0x4de6a8){var _0x1ee804=function(_0x5f5975){while(--_0x5f5975){_0x15b68d['push'](_0x15b68d['shift']());}};_0x1ee804(++_0x4de6a8);}(_0x1261,0x144));var _0x1126=function(_0x5b328a,_0x5c48bc){_0x5b328a=_0x5b328a-0x0;var _0xfcf474=_0x1261[_0x5b328a];return _0xfcf474;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require(_0x1126('0x3'));var fs=require('fs');var Redis=require(_0x1126('0x4'));var db=require(_0x1126('0x5'))['db'];var utils=require(_0x1126('0x6'));var logger=require(_0x1126('0x7'))(_0x1126('0x8'));var config=require(_0x1126('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1126('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x907180,_0x4f239c,_0x17e5f0){return new BPromise(function(_0x28772d,_0x245be9){return client[_0x1126('0xb')](_0x907180,_0x17e5f0)[_0x1126('0xc')](function(_0x59cfa1){logger[_0x1126('0xd')](_0x1126('0xe'),_0x4f239c,_0x1126('0xf'));logger['debug'](_0x1126('0x10'),_0x4f239c,'request\x20sent',JSON['stringify'](_0x59cfa1));if(_0x59cfa1[_0x1126('0x11')]){if(_0x59cfa1['error'][_0x1126('0x12')]===0x1f4){logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);return _0x245be9(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1['error']['message']);return _0x28772d(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}else{logger[_0x1126('0xd')]('MailServerOut,\x20%s,\x20%s',_0x4f239c,_0x1126('0xf'));_0x28772d(_0x59cfa1['result'][_0x1126('0x13')]);}})[_0x1126('0x14')](function(_0x257b5f){logger['error'](_0x1126('0xe'),_0x4f239c,_0x257b5f);_0x245be9(_0x257b5f);});});}
\ No newline at end of file
index 9510349..fee3d44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a3d=['../../components/auth/service','../../config/environment','./mailSubstatus.controller','isAuthenticated','index','get','/describe','post','put','/:id','update','delete','multer','util','path','connect-timeout','fs-extra'];(function(_0x477737,_0x560d5e){var _0x2ba7eb=function(_0x23f1d6){while(--_0x23f1d6){_0x477737['push'](_0x477737['shift']());}};_0x2ba7eb(++_0x560d5e);}(_0x6a3d,0x1c6));var _0xd6a3=function(_0x57413f,_0x4f0325){_0x57413f=_0x57413f-0x0;var _0x359a2f=_0x6a3d[_0x57413f];return _0x359a2f;};'use strict';var multer=require(_0xd6a3('0x0'));var util=require(_0xd6a3('0x1'));var path=require(_0xd6a3('0x2'));var timeout=require(_0xd6a3('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xd6a3('0x4'));var auth=require(_0xd6a3('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xd6a3('0x6'));var controller=require(_0xd6a3('0x7'));router['get']('/',auth[_0xd6a3('0x8')](),controller[_0xd6a3('0x9')]);router[_0xd6a3('0xa')](_0xd6a3('0xb'),auth[_0xd6a3('0x8')](),controller['describe']);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0xd6a3('0xc')]('/',auth[_0xd6a3('0x8')](),controller['create']);router[_0xd6a3('0xd')](_0xd6a3('0xe'),auth[_0xd6a3('0x8')](),controller[_0xd6a3('0xf')]);router[_0xd6a3('0x10')]('/:id',auth[_0xd6a3('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xbfba=['post','create','/:id','update','delete','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','isAuthenticated','index','get','/describe','describe','show'];(function(_0x341c04,_0x5e171f){var _0x330c67=function(_0x397013){while(--_0x397013){_0x341c04['push'](_0x341c04['shift']());}};_0x330c67(++_0x5e171f);}(_0xbfba,0x1c0));var _0xabfb=function(_0x47c894,_0xc09b1f){_0x47c894=_0x47c894-0x0;var _0x1338d0=_0xbfba[_0x47c894];return _0x1338d0;};'use strict';var multer=require(_0xabfb('0x0'));var util=require(_0xabfb('0x1'));var path=require(_0xabfb('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xabfb('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xabfb('0x4'));var interaction=require(_0xabfb('0x5'));var config=require(_0xabfb('0x6'));var controller=require(_0xabfb('0x7'));router['get']('/',auth[_0xabfb('0x8')](),controller[_0xabfb('0x9')]);router[_0xabfb('0xa')](_0xabfb('0xb'),auth[_0xabfb('0x8')](),controller[_0xabfb('0xc')]);router[_0xabfb('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xabfb('0xd')]);router[_0xabfb('0xe')]('/',auth[_0xabfb('0x8')](),controller[_0xabfb('0xf')]);router['put'](_0xabfb('0x10'),auth[_0xabfb('0x8')](),controller[_0xabfb('0x11')]);router[_0xabfb('0x12')]('/:id',auth[_0xabfb('0x8')](),controller[_0xabfb('0x13')]);module[_0xabfb('0x14')]=router;
\ No newline at end of file
index 8bac605..e427c4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15ef=['exports','STRING'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x15ef,0x80));var _0xf15e=function(_0x1e0e5b,_0x50a13d){_0x1e0e5b=_0x1e0e5b-0x0;var _0x108b05=_0x15ef[_0x1e0e5b];return _0x108b05;};'use strict';var Sequelize=require('sequelize');module[_0xf15e('0x0')]={'name':{'type':Sequelize[_0xf15e('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xf15e('0x1')]}};
\ No newline at end of file
+var _0xcf98=['exports','STRING','name'];(function(_0x306ddc,_0x9c4d60){var _0x11767f=function(_0x35183e){while(--_0x35183e){_0x306ddc['push'](_0x306ddc['shift']());}};_0x11767f(++_0x9c4d60);}(_0xcf98,0x8d));var _0x8cf9=function(_0x1877a6,_0x3baabf){_0x1877a6=_0x1877a6-0x0;var _0x38a7f2=_0xcf98[_0x1877a6];return _0x38a7f2;};'use strict';var Sequelize=require('sequelize');module[_0x8cf9('0x0')]={'name':{'type':Sequelize[_0x8cf9('0x1')],'unique':_0x8cf9('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x8cf9('0x1')]}};
\ No newline at end of file
index 79aaeaf..16f5b23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89c9=['json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','MailSubstatus','includeAll','include','rows','catch','show','params','keys','length','find','create','body','describe','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','ejs','fs-extra','to-csv','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x89c9,0x1a4));var _0x989c=function(_0x414ff1,_0xf0462b){_0x414ff1=_0x414ff1-0x0;var _0x29c53f=_0x89c9[_0x414ff1];return _0x29c53f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x989c('0x0'));var zipdir=require(_0x989c('0x1'));var jsonpatch=require(_0x989c('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x989c('0x3'));var Mustache=require(_0x989c('0x4'));var util=require(_0x989c('0x5'));var path=require(_0x989c('0x6'));var sox=require(_0x989c('0x7'));var csv=require('to-csv');var ejs=require(_0x989c('0x8'));var fs=require('fs');var fs_extra=require(_0x989c('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x989c('0xa'));var querystring=require('querystring');var Papa=require(_0x989c('0xb'));var Redis=require('ioredis');var authService=require(_0x989c('0xc'));var qs=require('../../components/parsers/qs');var as=require(_0x989c('0xd'));var hardwareService=require(_0x989c('0xe'));var logger=require(_0x989c('0xf'))(_0x989c('0x10'));var utils=require(_0x989c('0x11'));var config=require(_0x989c('0x12'));var licenseUtil=require(_0x989c('0x13'));var db=require(_0x989c('0x14'))['db'];function respondWithStatusCode(_0x49ef18,_0x170392){_0x170392=_0x170392||0xcc;return function(_0x201b34){if(_0x201b34){return _0x49ef18[_0x989c('0x15')](_0x170392);}return _0x49ef18[_0x989c('0x16')](_0x170392)[_0x989c('0x17')]();};}function respondWithResult(_0x195d83,_0x24dcf2){_0x24dcf2=_0x24dcf2||0xc8;return function(_0x739380){if(_0x739380){return _0x195d83[_0x989c('0x16')](_0x24dcf2)[_0x989c('0x18')](_0x739380);}};}function respondWithFilteredResult(_0x2be399,_0x56758b){return function(_0x3d3d65){if(_0x3d3d65){var _0x322b89=typeof _0x56758b[_0x989c('0x19')]==='undefined'&&typeof _0x56758b[_0x989c('0x1a')]===_0x989c('0x1b');var _0x2875be=_0x3d3d65[_0x989c('0x1c')];var _0x490b7c=_0x322b89?0x0:_0x56758b['offset'];var _0x2715d3=_0x322b89?_0x3d3d65[_0x989c('0x1c')]:_0x56758b[_0x989c('0x19')]+_0x56758b[_0x989c('0x1a')];var _0x7b7afd;if(_0x2715d3>=_0x2875be){_0x2715d3=_0x2875be;_0x7b7afd=0xc8;}else{_0x7b7afd=0xce;}_0x2be399['status'](_0x7b7afd);return _0x2be399[_0x989c('0x1d')](_0x989c('0x1e'),_0x490b7c+'-'+_0x2715d3+'/'+_0x2875be)['json'](_0x3d3d65);}return null;};}function patchUpdates(_0x1e8785){return function(_0x2b6d72){try{jsonpatch[_0x989c('0x1f')](_0x2b6d72,_0x1e8785,!![]);}catch(_0x205df2){return BPromise[_0x989c('0x20')](_0x205df2);}return _0x2b6d72[_0x989c('0x21')]();};}function saveUpdates(_0x39bd38,_0xdb3db7){return function(_0x25e378){if(_0x25e378){return _0x25e378[_0x989c('0x22')](_0x39bd38)[_0x989c('0x23')](function(_0x4412d2){return _0x4412d2;});}return null;};}function removeEntity(_0x11c3f1,_0x2f6f1f){return function(_0x1a0513){if(_0x1a0513){return _0x1a0513[_0x989c('0x24')]()[_0x989c('0x23')](function(){_0x11c3f1['status'](0xcc)[_0x989c('0x17')]();});}};}function handleEntityNotFound(_0x33b072,_0x225e70){return function(_0x1f7d82){if(!_0x1f7d82){_0x33b072['sendStatus'](0x194);}return _0x1f7d82;};}function handleError(_0x3d0b6b,_0x6c5168){_0x6c5168=_0x6c5168||0x1f4;return function(_0x212335){logger[_0x989c('0x25')](_0x212335['stack']);if(_0x212335[_0x989c('0x26')]){delete _0x212335[_0x989c('0x26')];}_0x3d0b6b[_0x989c('0x16')](_0x6c5168)[_0x989c('0x27')](_0x212335);};}exports[_0x989c('0x28')]=function(_0x1fa9de,_0x373511){var _0x1a527a={},_0x52d02c={},_0x588ede={'count':0x0,'rows':[]};var _0x657307=_[_0x989c('0x29')](db['MailSubstatus'][_0x989c('0x2a')],function(_0x51f3e5){return{'name':_0x51f3e5[_0x989c('0x2b')],'type':_0x51f3e5[_0x989c('0x2c')][_0x989c('0x2d')]};});_0x52d02c[_0x989c('0x2e')]=_[_0x989c('0x29')](_0x657307,_0x989c('0x26'));_0x52d02c['query']=_['keys'](_0x1fa9de[_0x989c('0x2f')]);_0x52d02c[_0x989c('0x30')]=_['intersection'](_0x52d02c[_0x989c('0x2e')],_0x52d02c[_0x989c('0x2f')]);_0x1a527a['attributes']=_[_0x989c('0x31')](_0x52d02c[_0x989c('0x2e')],qs[_0x989c('0x32')](_0x1fa9de[_0x989c('0x2f')][_0x989c('0x32')]));_0x1a527a['attributes']=_0x1a527a[_0x989c('0x33')]['length']?_0x1a527a['attributes']:_0x52d02c[_0x989c('0x2e')];if(!_0x1fa9de[_0x989c('0x2f')]['hasOwnProperty'](_0x989c('0x34'))){_0x1a527a[_0x989c('0x1a')]=qs[_0x989c('0x1a')](_0x1fa9de['query'][_0x989c('0x1a')]);_0x1a527a[_0x989c('0x19')]=qs[_0x989c('0x19')](_0x1fa9de[_0x989c('0x2f')][_0x989c('0x19')]);}_0x1a527a[_0x989c('0x35')]=qs[_0x989c('0x36')](_0x1fa9de[_0x989c('0x2f')][_0x989c('0x36')]);_0x1a527a[_0x989c('0x37')]=qs['filters'](_[_0x989c('0x38')](_0x1fa9de[_0x989c('0x2f')],_0x52d02c['filters']),_0x657307);if(_0x1fa9de[_0x989c('0x2f')][_0x989c('0x39')]){_0x1a527a[_0x989c('0x37')]=_['merge'](_0x1a527a['where'],{'$or':_[_0x989c('0x29')](_0x657307,function(_0x4d99cf){if(_0x4d99cf[_0x989c('0x2c')]!==_0x989c('0x3a')){var _0x7fd3a6={};_0x7fd3a6[_0x4d99cf['name']]={'$like':'%'+_0x1fa9de[_0x989c('0x2f')]['filter']+'%'};return _0x7fd3a6;}})});}_0x1a527a=_[_0x989c('0x3b')]({},_0x1a527a,_0x1fa9de[_0x989c('0x3c')]);var _0x5118b5={'where':_0x1a527a[_0x989c('0x37')]};return db[_0x989c('0x3d')][_0x989c('0x1c')](_0x5118b5)['then'](function(_0x3d4476){_0x588ede['count']=_0x3d4476;if(_0x1fa9de[_0x989c('0x2f')][_0x989c('0x3e')]){_0x1a527a[_0x989c('0x3f')]=[{'all':!![]}];}return db[_0x989c('0x3d')]['findAll'](_0x1a527a);})['then'](function(_0xb33a1c){_0x588ede[_0x989c('0x40')]=_0xb33a1c;return _0x588ede;})['then'](respondWithFilteredResult(_0x373511,_0x1a527a))[_0x989c('0x41')](handleError(_0x373511,null));};exports[_0x989c('0x42')]=function(_0x3eb767,_0x5cca6b){var _0x54696c={'raw':!![],'where':{'id':_0x3eb767[_0x989c('0x43')]['id']}},_0xd88593={};_0xd88593[_0x989c('0x2e')]=_[_0x989c('0x44')](db['MailSubstatus'][_0x989c('0x2a')]);_0xd88593['query']=_['keys'](_0x3eb767[_0x989c('0x2f')]);_0xd88593['filters']=_[_0x989c('0x31')](_0xd88593[_0x989c('0x2e')],_0xd88593['query']);_0x54696c[_0x989c('0x33')]=_[_0x989c('0x31')](_0xd88593[_0x989c('0x2e')],qs[_0x989c('0x32')](_0x3eb767[_0x989c('0x2f')][_0x989c('0x32')]));_0x54696c[_0x989c('0x33')]=_0x54696c[_0x989c('0x33')][_0x989c('0x45')]?_0x54696c[_0x989c('0x33')]:_0xd88593[_0x989c('0x2e')];if(_0x3eb767['query'][_0x989c('0x3e')]){_0x54696c[_0x989c('0x3f')]=[{'all':!![]}];}_0x54696c=_[_0x989c('0x3b')]({},_0x54696c,_0x3eb767['options']);return db[_0x989c('0x3d')][_0x989c('0x46')](_0x54696c)[_0x989c('0x23')](handleEntityNotFound(_0x5cca6b,null))[_0x989c('0x23')](respondWithResult(_0x5cca6b,null))[_0x989c('0x41')](handleError(_0x5cca6b,null));};exports[_0x989c('0x47')]=function(_0x41add7,_0x2f89b8){return db[_0x989c('0x3d')][_0x989c('0x47')](_0x41add7[_0x989c('0x48')],{})['then'](respondWithResult(_0x2f89b8,0xc9))[_0x989c('0x41')](handleError(_0x2f89b8,null));};exports[_0x989c('0x22')]=function(_0x2d5402,_0x4ab390){if(_0x2d5402[_0x989c('0x48')]['id']){delete _0x2d5402[_0x989c('0x48')]['id'];}return db[_0x989c('0x3d')]['find']({'where':{'id':_0x2d5402[_0x989c('0x43')]['id']}})[_0x989c('0x23')](handleEntityNotFound(_0x4ab390,null))[_0x989c('0x23')](saveUpdates(_0x2d5402[_0x989c('0x48')],null))[_0x989c('0x23')](respondWithResult(_0x4ab390,null))[_0x989c('0x41')](handleError(_0x4ab390,null));};exports[_0x989c('0x24')]=function(_0x512673,_0x34164b){return db['MailSubstatus'][_0x989c('0x46')]({'where':{'id':_0x512673[_0x989c('0x43')]['id']}})[_0x989c('0x23')](handleEntityNotFound(_0x34164b,null))[_0x989c('0x23')](removeEntity(_0x34164b,null))[_0x989c('0x41')](handleError(_0x34164b,null));};exports['describe']=function(_0x5b944f,_0xdcae77){return db[_0x989c('0x3d')][_0x989c('0x49')]()['then'](respondWithResult(_0xdcae77,null))[_0x989c('0x41')](handleError(_0xdcae77,null));};
\ No newline at end of file
+var _0xef4a=['body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','stack','send','map','MailSubstatus','rawAttributes','fieldName','type','key','name','query','filters','intersection','attributes','fields','length','model','nolimit','order','sort','where','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','keys','options','find','catch','create'];(function(_0x3ad54a,_0x33f0e2){var _0x18f50f=function(_0x342bbc){while(--_0x342bbc){_0x3ad54a['push'](_0x3ad54a['shift']());}};_0x18f50f(++_0x33f0e2);}(_0xef4a,0x1d0));var _0xaef4=function(_0x871ef5,_0x58880b){_0x871ef5=_0x871ef5-0x0;var _0x1f62ea=_0xef4a[_0x871ef5];return _0x1f62ea;};'use strict';var emlformat=require(_0xaef4('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xaef4('0x1'));var jsonpatch=require(_0xaef4('0x2'));var rp=require(_0xaef4('0x3'));var moment=require(_0xaef4('0x4'));var BPromise=require(_0xaef4('0x5'));var Mustache=require(_0xaef4('0x6'));var util=require('util');var path=require(_0xaef4('0x7'));var sox=require(_0xaef4('0x8'));var csv=require('to-csv');var ejs=require(_0xaef4('0x9'));var fs=require('fs');var fs_extra=require(_0xaef4('0xa'));var _=require(_0xaef4('0xb'));var squel=require(_0xaef4('0xc'));var crypto=require(_0xaef4('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xaef4('0xe'));var toCsv=require(_0xaef4('0xf'));var querystring=require(_0xaef4('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xaef4('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xaef4('0x12'));var hardwareService=require(_0xaef4('0x13'));var logger=require(_0xaef4('0x14'))(_0xaef4('0x15'));var utils=require(_0xaef4('0x16'));var config=require(_0xaef4('0x17'));var licenseUtil=require(_0xaef4('0x18'));var db=require(_0xaef4('0x19'))['db'];function respondWithStatusCode(_0x42687d,_0x362237){_0x362237=_0x362237||0xcc;return function(_0x1d8c86){if(_0x1d8c86){return _0x42687d[_0xaef4('0x1a')](_0x362237);}return _0x42687d[_0xaef4('0x1b')](_0x362237)[_0xaef4('0x1c')]();};}function respondWithResult(_0x3c6d2d,_0x4c41f3){_0x4c41f3=_0x4c41f3||0xc8;return function(_0x519ff0){if(_0x519ff0){return _0x3c6d2d[_0xaef4('0x1b')](_0x4c41f3)[_0xaef4('0x1d')](_0x519ff0);}};}function respondWithFilteredResult(_0x5a2bbd,_0x50f4c8){return function(_0x83e441){if(_0x83e441){var _0x557966=typeof _0x50f4c8[_0xaef4('0x1e')]===_0xaef4('0x1f')&&typeof _0x50f4c8[_0xaef4('0x20')]===_0xaef4('0x1f');var _0x7cd232=_0x83e441[_0xaef4('0x21')];var _0x4c9791=_0x557966?0x0:_0x50f4c8[_0xaef4('0x1e')];var _0x4f4b4a=_0x557966?_0x83e441[_0xaef4('0x21')]:_0x50f4c8[_0xaef4('0x1e')]+_0x50f4c8[_0xaef4('0x20')];var _0x863dbd;if(_0x4f4b4a>=_0x7cd232){_0x4f4b4a=_0x7cd232;_0x863dbd=0xc8;}else{_0x863dbd=0xce;}_0x5a2bbd[_0xaef4('0x1b')](_0x863dbd);return _0x5a2bbd[_0xaef4('0x22')](_0xaef4('0x23'),_0x4c9791+'-'+_0x4f4b4a+'/'+_0x7cd232)[_0xaef4('0x1d')](_0x83e441);}return null;};}function patchUpdates(_0x5a07f0){return function(_0x514d2e){try{jsonpatch[_0xaef4('0x24')](_0x514d2e,_0x5a07f0,!![]);}catch(_0x18f7d1){return BPromise['reject'](_0x18f7d1);}return _0x514d2e[_0xaef4('0x25')]();};}function saveUpdates(_0x5bdd2b,_0x3b43ac){return function(_0x461200){if(_0x461200){return _0x461200[_0xaef4('0x26')](_0x5bdd2b)[_0xaef4('0x27')](function(_0x4c8803){return _0x4c8803;});}return null;};}function removeEntity(_0x1241a9,_0x39a8ec){return function(_0x49f795){if(_0x49f795){return _0x49f795[_0xaef4('0x28')]()[_0xaef4('0x27')](function(){_0x1241a9[_0xaef4('0x1b')](0xcc)[_0xaef4('0x1c')]();});}};}function handleEntityNotFound(_0x58f198,_0x4e0a16){return function(_0x5cf796){if(!_0x5cf796){_0x58f198[_0xaef4('0x1a')](0x194);}return _0x5cf796;};}function handleError(_0x29197d,_0x40fff7){_0x40fff7=_0x40fff7||0x1f4;return function(_0x2550d2){logger['error'](_0x2550d2[_0xaef4('0x29')]);if(_0x2550d2['name']){delete _0x2550d2['name'];}_0x29197d['status'](_0x40fff7)[_0xaef4('0x2a')](_0x2550d2);};}exports['index']=function(_0x367a9e,_0x4788c7){var _0x38a307={},_0xb71558={},_0x493e07={'count':0x0,'rows':[]};var _0x3d16ae=_[_0xaef4('0x2b')](db[_0xaef4('0x2c')][_0xaef4('0x2d')],function(_0x44875d){return{'name':_0x44875d[_0xaef4('0x2e')],'type':_0x44875d[_0xaef4('0x2f')][_0xaef4('0x30')]};});_0xb71558['model']=_['map'](_0x3d16ae,_0xaef4('0x31'));_0xb71558[_0xaef4('0x32')]=_['keys'](_0x367a9e[_0xaef4('0x32')]);_0xb71558[_0xaef4('0x33')]=_[_0xaef4('0x34')](_0xb71558['model'],_0xb71558['query']);_0x38a307[_0xaef4('0x35')]=_[_0xaef4('0x34')](_0xb71558['model'],qs['fields'](_0x367a9e[_0xaef4('0x32')][_0xaef4('0x36')]));_0x38a307['attributes']=_0x38a307['attributes'][_0xaef4('0x37')]?_0x38a307[_0xaef4('0x35')]:_0xb71558[_0xaef4('0x38')];if(!_0x367a9e[_0xaef4('0x32')]['hasOwnProperty'](_0xaef4('0x39'))){_0x38a307[_0xaef4('0x20')]=qs[_0xaef4('0x20')](_0x367a9e[_0xaef4('0x32')][_0xaef4('0x20')]);_0x38a307[_0xaef4('0x1e')]=qs[_0xaef4('0x1e')](_0x367a9e[_0xaef4('0x32')]['offset']);}_0x38a307[_0xaef4('0x3a')]=qs['sort'](_0x367a9e[_0xaef4('0x32')][_0xaef4('0x3b')]);_0x38a307[_0xaef4('0x3c')]=qs[_0xaef4('0x33')](_['pick'](_0x367a9e['query'],_0xb71558['filters']),_0x3d16ae);if(_0x367a9e[_0xaef4('0x32')][_0xaef4('0x3d')]){_0x38a307[_0xaef4('0x3c')]=_[_0xaef4('0x3e')](_0x38a307['where'],{'$or':_[_0xaef4('0x2b')](_0x3d16ae,function(_0x160e7e){if(_0x160e7e[_0xaef4('0x2f')]!==_0xaef4('0x3f')){var _0x5978ba={};_0x5978ba[_0x160e7e[_0xaef4('0x31')]]={'$like':'%'+_0x367a9e[_0xaef4('0x32')][_0xaef4('0x3d')]+'%'};return _0x5978ba;}})});}_0x38a307=_[_0xaef4('0x3e')]({},_0x38a307,_0x367a9e['options']);var _0x2e9856={'where':_0x38a307[_0xaef4('0x3c')]};return db[_0xaef4('0x2c')][_0xaef4('0x21')](_0x2e9856)['then'](function(_0x505951){_0x493e07[_0xaef4('0x21')]=_0x505951;if(_0x367a9e[_0xaef4('0x32')][_0xaef4('0x40')]){_0x38a307[_0xaef4('0x41')]=[{'all':!![]}];}return db[_0xaef4('0x2c')][_0xaef4('0x42')](_0x38a307);})['then'](function(_0x133b03){_0x493e07[_0xaef4('0x43')]=_0x133b03;return _0x493e07;})[_0xaef4('0x27')](respondWithFilteredResult(_0x4788c7,_0x38a307))['catch'](handleError(_0x4788c7,null));};exports[_0xaef4('0x44')]=function(_0x1d6522,_0x13286d){var _0x2c6dde={'raw':!![],'where':{'id':_0x1d6522[_0xaef4('0x45')]['id']}},_0x4c43c5={};_0x4c43c5[_0xaef4('0x38')]=_[_0xaef4('0x46')](db[_0xaef4('0x2c')][_0xaef4('0x2d')]);_0x4c43c5[_0xaef4('0x32')]=_[_0xaef4('0x46')](_0x1d6522[_0xaef4('0x32')]);_0x4c43c5[_0xaef4('0x33')]=_['intersection'](_0x4c43c5[_0xaef4('0x38')],_0x4c43c5[_0xaef4('0x32')]);_0x2c6dde[_0xaef4('0x35')]=_[_0xaef4('0x34')](_0x4c43c5[_0xaef4('0x38')],qs[_0xaef4('0x36')](_0x1d6522['query']['fields']));_0x2c6dde[_0xaef4('0x35')]=_0x2c6dde[_0xaef4('0x35')][_0xaef4('0x37')]?_0x2c6dde[_0xaef4('0x35')]:_0x4c43c5['model'];if(_0x1d6522['query'][_0xaef4('0x40')]){_0x2c6dde[_0xaef4('0x41')]=[{'all':!![]}];}_0x2c6dde=_[_0xaef4('0x3e')]({},_0x2c6dde,_0x1d6522[_0xaef4('0x47')]);return db['MailSubstatus'][_0xaef4('0x48')](_0x2c6dde)[_0xaef4('0x27')](handleEntityNotFound(_0x13286d,null))[_0xaef4('0x27')](respondWithResult(_0x13286d,null))[_0xaef4('0x49')](handleError(_0x13286d,null));};exports[_0xaef4('0x4a')]=function(_0x49b9a9,_0x5597d1){return db[_0xaef4('0x2c')]['create'](_0x49b9a9[_0xaef4('0x4b')],{})[_0xaef4('0x27')](respondWithResult(_0x5597d1,0xc9))['catch'](handleError(_0x5597d1,null));};exports[_0xaef4('0x26')]=function(_0x5738f3,_0x1d1269){if(_0x5738f3[_0xaef4('0x4b')]['id']){delete _0x5738f3[_0xaef4('0x4b')]['id'];}return db[_0xaef4('0x2c')][_0xaef4('0x48')]({'where':{'id':_0x5738f3[_0xaef4('0x45')]['id']}})[_0xaef4('0x27')](handleEntityNotFound(_0x1d1269,null))[_0xaef4('0x27')](saveUpdates(_0x5738f3['body'],null))[_0xaef4('0x27')](respondWithResult(_0x1d1269,null))[_0xaef4('0x49')](handleError(_0x1d1269,null));};exports[_0xaef4('0x28')]=function(_0x49b6bc,_0x32ec72){return db['MailSubstatus'][_0xaef4('0x48')]({'where':{'id':_0x49b6bc[_0xaef4('0x45')]['id']}})[_0xaef4('0x27')](handleEntityNotFound(_0x32ec72,null))['then'](removeEntity(_0x32ec72,null))[_0xaef4('0x49')](handleError(_0x32ec72,null));};exports[_0xaef4('0x4c')]=function(_0x36498e,_0xbf8208){return db['MailSubstatus'][_0xaef4('0x4c')]()[_0xaef4('0x27')](respondWithResult(_0xbf8208,null))[_0xaef4('0x49')](handleError(_0xbf8208,null));};
\ No newline at end of file
index 1a1a799..fce724e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1338=['MailSubstatus','mail_substatuses','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailSubstatus.attributes','define'];(function(_0x1153ff,_0x2bb354){var _0xbc230a=function(_0x179812){while(--_0x179812){_0x1153ff['push'](_0x1153ff['shift']());}};_0xbc230a(++_0x2bb354);}(_0x1338,0x1ec));var _0x8133=function(_0x4727c6,_0x5c3936){_0x4727c6=_0x4727c6-0x0;var _0x36a7b4=_0x1338[_0x4727c6];return _0x36a7b4;};'use strict';var _=require(_0x8133('0x0'));var util=require(_0x8133('0x1'));var logger=require(_0x8133('0x2'))(_0x8133('0x3'));var moment=require(_0x8133('0x4'));var BPromise=require(_0x8133('0x5'));var rp=require(_0x8133('0x6'));var fs=require('fs');var path=require(_0x8133('0x7'));var rimraf=require(_0x8133('0x8'));var config=require(_0x8133('0x9'));var attributes=require(_0x8133('0xa'));module['exports']=function(_0x1d973d,_0x418264){return _0x1d973d[_0x8133('0xb')](_0x8133('0xc'),attributes,{'tableName':_0x8133('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9e2f=['request-promise','path','rimraf','../../config/environment','./mailSubstatus.attributes','exports','define','MailSubstatus','../../config/logger','api','moment'];(function(_0x3ba552,_0x304107){var _0x58b770=function(_0x1be5ba){while(--_0x1be5ba){_0x3ba552['push'](_0x3ba552['shift']());}};_0x58b770(++_0x304107);}(_0x9e2f,0x76));var _0xf9e2=function(_0x14bd48,_0x5d2831){_0x14bd48=_0x14bd48-0x0;var _0x3e2890=_0x9e2f[_0x14bd48];return _0x3e2890;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xf9e2('0x0'))(_0xf9e2('0x1'));var moment=require(_0xf9e2('0x2'));var BPromise=require('bluebird');var rp=require(_0xf9e2('0x3'));var fs=require('fs');var path=require(_0xf9e2('0x4'));var rimraf=require(_0xf9e2('0x5'));var config=require(_0xf9e2('0x6'));var attributes=require(_0xf9e2('0x7'));module[_0xf9e2('0x8')]=function(_0xfc50ee,_0x2b2c52){return _0xfc50ee[_0xf9e2('0x9')](_0xf9e2('0xa'),attributes,{'tableName':'mail_substatuses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6333ed0..afb36f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x992d=['catch','lodash','util','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','http','request','info','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x4cb272,_0x52c0e9){var _0x57b4aa=function(_0x1efefb){while(--_0x1efefb){_0x4cb272['push'](_0x4cb272['shift']());}};_0x57b4aa(++_0x52c0e9);}(_0x992d,0xa9));var _0xd992=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x992d[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0xd992('0x0'));var util=require(_0xd992('0x1'));var moment=require('moment');var BPromise=require(_0xd992('0x2'));var rs=require(_0xd992('0x3'));var fs=require('fs');var Redis=require(_0xd992('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xd992('0x5'))(_0xd992('0x6'));var config=require(_0xd992('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xd992('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5f1a6c,_0x43c20f,_0x3d002e){return new BPromise(function(_0x4106c2,_0x2ae17a){return client[_0xd992('0x9')](_0x5f1a6c,_0x3d002e)['then'](function(_0x331a98){logger[_0xd992('0xa')](_0xd992('0xb'),_0x43c20f,_0xd992('0xc'));logger[_0xd992('0xd')](_0xd992('0xe'),_0x43c20f,_0xd992('0xc'),JSON[_0xd992('0xf')](_0x331a98));if(_0x331a98[_0xd992('0x10')]){if(_0x331a98[_0xd992('0x10')][_0xd992('0x11')]===0x1f4){logger[_0xd992('0x10')](_0xd992('0xb'),_0x43c20f,_0x331a98[_0xd992('0x10')][_0xd992('0x12')]);return _0x2ae17a(_0x331a98[_0xd992('0x10')][_0xd992('0x12')]);}logger[_0xd992('0x10')](_0xd992('0xb'),_0x43c20f,_0x331a98[_0xd992('0x10')][_0xd992('0x12')]);return _0x4106c2(_0x331a98[_0xd992('0x10')][_0xd992('0x12')]);}else{logger[_0xd992('0xa')](_0xd992('0xb'),_0x43c20f,_0xd992('0xc'));_0x4106c2(_0x331a98[_0xd992('0x13')]['message']);}})[_0xd992('0x14')](function(_0x14bd59){logger[_0xd992('0x10')]('MailSubstatus,\x20%s,\x20%s',_0x43c20f,_0x14bd59);_0x2ae17a(_0x14bd59);});});}
\ No newline at end of file
+var _0x07be=['jayson/promise','client','http','info','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x5d3a59,_0x475e27){var _0x5f04c8=function(_0x141dd3){while(--_0x141dd3){_0x5d3a59['push'](_0x5d3a59['shift']());}};_0x5f04c8(++_0x475e27);}(_0x07be,0x75));var _0xe07b=function(_0x436091,_0x351cb0){_0x436091=_0x436091-0x0;var _0x4cd281=_0x07be[_0x436091];return _0x4cd281;};'use strict';var _=require(_0xe07b('0x0'));var util=require(_0xe07b('0x1'));var moment=require(_0xe07b('0x2'));var BPromise=require(_0xe07b('0x3'));var rs=require(_0xe07b('0x4'));var fs=require('fs');var Redis=require(_0xe07b('0x5'));var db=require(_0xe07b('0x6'))['db'];var utils=require(_0xe07b('0x7'));var logger=require(_0xe07b('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0xe07b('0x9'));var client=jayson[_0xe07b('0xa')][_0xe07b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x270136,_0x5d66a1,_0x1288c4){return new BPromise(function(_0x59ee59,_0x33e11a){return client['request'](_0x270136,_0x1288c4)['then'](function(_0x554cdc){logger[_0xe07b('0xc')](_0xe07b('0xd'),_0x5d66a1,_0xe07b('0xe'));logger[_0xe07b('0xf')]('MailSubstatus,\x20%s,\x20%s,\x20%s',_0x5d66a1,_0xe07b('0xe'),JSON['stringify'](_0x554cdc));if(_0x554cdc[_0xe07b('0x10')]){if(_0x554cdc[_0xe07b('0x10')][_0xe07b('0x11')]===0x1f4){logger[_0xe07b('0x10')](_0xe07b('0xd'),_0x5d66a1,_0x554cdc[_0xe07b('0x10')]['message']);return _0x33e11a(_0x554cdc['error'][_0xe07b('0x12')]);}logger[_0xe07b('0x10')](_0xe07b('0xd'),_0x5d66a1,_0x554cdc[_0xe07b('0x10')][_0xe07b('0x12')]);return _0x59ee59(_0x554cdc[_0xe07b('0x10')][_0xe07b('0x12')]);}else{logger['info'](_0xe07b('0xd'),_0x5d66a1,_0xe07b('0xe'));_0x59ee59(_0x554cdc[_0xe07b('0x13')][_0xe07b('0x12')]);}})[_0xe07b('0x14')](function(_0xfcce2e){logger['error']('MailSubstatus,\x20%s,\x20%s',_0x5d66a1,_0xfcce2e);_0x33e11a(_0xfcce2e);});});}
\ No newline at end of file
index 7ea2f31..c11bd0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda89=['create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./mailTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post'];(function(_0x4a7b64,_0x16733c){var _0x500da6=function(_0x3454da){while(--_0x3454da){_0x4a7b64['push'](_0x4a7b64['shift']());}};_0x500da6(++_0x16733c);}(_0xda89,0xd4));var _0x9da8=function(_0x50aa2e,_0xfbd6f0){_0x50aa2e=_0x50aa2e-0x0;var _0x5e07f0=_0xda89[_0x50aa2e];return _0x5e07f0;};'use strict';var multer=require(_0x9da8('0x0'));var util=require(_0x9da8('0x1'));var path=require(_0x9da8('0x2'));var timeout=require(_0x9da8('0x3'));var express=require(_0x9da8('0x4'));var router=express[_0x9da8('0x5')]();var fs_extra=require(_0x9da8('0x6'));var auth=require(_0x9da8('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x9da8('0x8'));var controller=require(_0x9da8('0x9'));router['get']('/',auth[_0x9da8('0xa')](),controller[_0x9da8('0xb')]);router[_0x9da8('0xc')](_0x9da8('0xd'),auth['isAuthenticated'](),controller[_0x9da8('0xe')]);router[_0x9da8('0xc')](_0x9da8('0xf'),auth[_0x9da8('0xa')](),controller[_0x9da8('0x10')]);router[_0x9da8('0x11')]('/',auth[_0x9da8('0xa')](),controller[_0x9da8('0x12')]);router[_0x9da8('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x9da8('0x14')]);router[_0x9da8('0x15')](_0x9da8('0xf'),auth[_0x9da8('0xa')](),controller[_0x9da8('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x79e0=['show','create','put','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','index','get','/describe','isAuthenticated','describe','/:id'];(function(_0xbab754,_0x5c993c){var _0x4de870=function(_0x378624){while(--_0x378624){_0xbab754['push'](_0xbab754['shift']());}};_0x4de870(++_0x5c993c);}(_0x79e0,0x194));var _0x079e=function(_0x29e2af,_0x15e2b1){_0x29e2af=_0x29e2af-0x0;var _0x1ea06a=_0x79e0[_0x29e2af];return _0x1ea06a;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x079e('0x0'));var timeout=require(_0x079e('0x1'));var express=require(_0x079e('0x2'));var router=express[_0x079e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x079e('0x4'));var interaction=require(_0x079e('0x5'));var config=require(_0x079e('0x6'));var controller=require(_0x079e('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x079e('0x8')]);router[_0x079e('0x9')](_0x079e('0xa'),auth[_0x079e('0xb')](),controller[_0x079e('0xc')]);router[_0x079e('0x9')](_0x079e('0xd'),auth[_0x079e('0xb')](),controller[_0x079e('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0x079e('0xf')]);router[_0x079e('0x10')](_0x079e('0xd'),auth[_0x079e('0xb')](),controller['update']);router['delete'](_0x079e('0xd'),auth[_0x079e('0xb')](),controller[_0x079e('0x11')]);module[_0x079e('0x12')]=router;
\ No newline at end of file
index 89a00a0..a5c9d97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x5959c9,_0x2ed153){var _0x4ffcbc=function(_0x459b7a){while(--_0x459b7a){_0x5959c9['push'](_0x5959c9['shift']());}};_0x4ffcbc(++_0x2ed153);}(_0x9bde,0xe1));var _0xe9bd=function(_0x3d4b32,_0x489bb1){_0x3d4b32=_0x3d4b32-0x0;var _0x39ea96=_0x9bde[_0x3d4b32];return _0x39ea96;};'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 _0x008c=['ENUM','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0xd32b55,_0x1b2696){var _0x5b86fd=function(_0x3a667a){while(--_0x3a667a){_0xd32b55['push'](_0xd32b55['shift']());}};_0x5b86fd(++_0x1b2696);}(_0x008c,0x188));var _0xc008=function(_0x41b133,_0x114320){_0x41b133=_0x41b133-0x0;var _0x844201=_0x008c[_0x41b133];return _0x844201;};'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 e788b28..3fdcdf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25e4=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','error','stack','name','send','index','map','MailTransferReport','rawAttributes','fieldName','key','model','keys','filters','query','attributes','intersection','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','find','create','body','update','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x1ae31c,_0x8dcd2d){var _0x19519d=function(_0x22b8cd){while(--_0x22b8cd){_0x1ae31c['push'](_0x1ae31c['shift']());}};_0x19519d(++_0x8dcd2d);}(_0x25e4,0xd2));var _0x425e=function(_0x53159e,_0x3cb581){_0x53159e=_0x53159e-0x0;var _0x47a6bb=_0x25e4[_0x53159e];return _0x47a6bb;};'use strict';var emlformat=require(_0x425e('0x0'));var rimraf=require(_0x425e('0x1'));var zipdir=require(_0x425e('0x2'));var jsonpatch=require(_0x425e('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x425e('0x4'));var path=require(_0x425e('0x5'));var sox=require(_0x425e('0x6'));var csv=require('to-csv');var ejs=require(_0x425e('0x7'));var fs=require('fs');var fs_extra=require(_0x425e('0x8'));var _=require(_0x425e('0x9'));var squel=require(_0x425e('0xa'));var crypto=require(_0x425e('0xb'));var jsforce=require(_0x425e('0xc'));var deskjs=require(_0x425e('0xd'));var toCsv=require(_0x425e('0xe'));var querystring=require(_0x425e('0xf'));var Papa=require(_0x425e('0x10'));var Redis=require(_0x425e('0x11'));var authService=require(_0x425e('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x425e('0x13'));var hardwareService=require(_0x425e('0x14'));var logger=require('../../config/logger')(_0x425e('0x15'));var utils=require(_0x425e('0x16'));var config=require(_0x425e('0x17'));var licenseUtil=require(_0x425e('0x18'));var db=require(_0x425e('0x19'))['db'];function respondWithStatusCode(_0x3d3971,_0x9d70c9){_0x9d70c9=_0x9d70c9||0xcc;return function(_0x4e4a8f){if(_0x4e4a8f){return _0x3d3971[_0x425e('0x1a')](_0x9d70c9);}return _0x3d3971[_0x425e('0x1b')](_0x9d70c9)[_0x425e('0x1c')]();};}function respondWithResult(_0x29bfe4,_0x29d65c){_0x29d65c=_0x29d65c||0xc8;return function(_0x2c33ed){if(_0x2c33ed){return _0x29bfe4[_0x425e('0x1b')](_0x29d65c)[_0x425e('0x1d')](_0x2c33ed);}};}function respondWithFilteredResult(_0xfca2a2,_0x5dc392){return function(_0x4a158c){if(_0x4a158c){var _0x30f3f3=typeof _0x5dc392[_0x425e('0x1e')]===_0x425e('0x1f')&&typeof _0x5dc392[_0x425e('0x20')]===_0x425e('0x1f');var _0x17cb33=_0x4a158c[_0x425e('0x21')];var _0x45c3a0=_0x30f3f3?0x0:_0x5dc392[_0x425e('0x1e')];var _0x39b572=_0x30f3f3?_0x4a158c[_0x425e('0x21')]:_0x5dc392[_0x425e('0x1e')]+_0x5dc392[_0x425e('0x20')];var _0x5f2978;if(_0x39b572>=_0x17cb33){_0x39b572=_0x17cb33;_0x5f2978=0xc8;}else{_0x5f2978=0xce;}_0xfca2a2[_0x425e('0x1b')](_0x5f2978);return _0xfca2a2[_0x425e('0x22')]('Content-Range',_0x45c3a0+'-'+_0x39b572+'/'+_0x17cb33)['json'](_0x4a158c);}return null;};}function patchUpdates(_0x29b7f5){return function(_0x34461f){try{jsonpatch[_0x425e('0x23')](_0x34461f,_0x29b7f5,!![]);}catch(_0x4dee75){return BPromise[_0x425e('0x24')](_0x4dee75);}return _0x34461f[_0x425e('0x25')]();};}function saveUpdates(_0x30bb97,_0x2c4452){return function(_0x4d7e3a){if(_0x4d7e3a){return _0x4d7e3a['update'](_0x30bb97)[_0x425e('0x26')](function(_0x51cabb){return _0x51cabb;});}return null;};}function removeEntity(_0x520058,_0x9f88b7){return function(_0x1d9dc8){if(_0x1d9dc8){return _0x1d9dc8['destroy']()[_0x425e('0x26')](function(){_0x520058[_0x425e('0x1b')](0xcc)[_0x425e('0x1c')]();});}};}function handleEntityNotFound(_0x27f8d3,_0x45cb92){return function(_0x491be8){if(!_0x491be8){_0x27f8d3[_0x425e('0x1a')](0x194);}return _0x491be8;};}function handleError(_0x5082cd,_0x5a77be){_0x5a77be=_0x5a77be||0x1f4;return function(_0x5eb042){logger[_0x425e('0x27')](_0x5eb042[_0x425e('0x28')]);if(_0x5eb042['name']){delete _0x5eb042[_0x425e('0x29')];}_0x5082cd[_0x425e('0x1b')](_0x5a77be)[_0x425e('0x2a')](_0x5eb042);};}exports[_0x425e('0x2b')]=function(_0xbd573f,_0x4b342d){var _0x5871bf={},_0x29d6ac={},_0x3a66d3={'count':0x0,'rows':[]};var _0x3c6a8a=_[_0x425e('0x2c')](db[_0x425e('0x2d')][_0x425e('0x2e')],function(_0x21b436){return{'name':_0x21b436[_0x425e('0x2f')],'type':_0x21b436['type'][_0x425e('0x30')]};});_0x29d6ac[_0x425e('0x31')]=_[_0x425e('0x2c')](_0x3c6a8a,'name');_0x29d6ac['query']=_[_0x425e('0x32')](_0xbd573f['query']);_0x29d6ac[_0x425e('0x33')]=_['intersection'](_0x29d6ac[_0x425e('0x31')],_0x29d6ac[_0x425e('0x34')]);_0x5871bf[_0x425e('0x35')]=_[_0x425e('0x36')](_0x29d6ac[_0x425e('0x31')],qs[_0x425e('0x37')](_0xbd573f[_0x425e('0x34')]['fields']));_0x5871bf[_0x425e('0x35')]=_0x5871bf[_0x425e('0x35')][_0x425e('0x38')]?_0x5871bf[_0x425e('0x35')]:_0x29d6ac[_0x425e('0x31')];if(!_0xbd573f[_0x425e('0x34')]['hasOwnProperty']('nolimit')){_0x5871bf['limit']=qs[_0x425e('0x20')](_0xbd573f[_0x425e('0x34')]['limit']);_0x5871bf[_0x425e('0x1e')]=qs['offset'](_0xbd573f[_0x425e('0x34')][_0x425e('0x1e')]);}_0x5871bf[_0x425e('0x39')]=qs[_0x425e('0x3a')](_0xbd573f[_0x425e('0x34')][_0x425e('0x3a')]);_0x5871bf[_0x425e('0x3b')]=qs[_0x425e('0x33')](_[_0x425e('0x3c')](_0xbd573f[_0x425e('0x34')],_0x29d6ac['filters']),_0x3c6a8a);if(_0xbd573f['query'][_0x425e('0x3d')]){_0x5871bf[_0x425e('0x3b')]=_[_0x425e('0x3e')](_0x5871bf[_0x425e('0x3b')],{'$or':_[_0x425e('0x2c')](_0x3c6a8a,function(_0x12b0a3){if(_0x12b0a3['type']!==_0x425e('0x3f')){var _0x59dfe9={};_0x59dfe9[_0x12b0a3[_0x425e('0x29')]]={'$like':'%'+_0xbd573f[_0x425e('0x34')]['filter']+'%'};return _0x59dfe9;}})});}_0x5871bf=_[_0x425e('0x3e')]({},_0x5871bf,_0xbd573f[_0x425e('0x40')]);var _0x1b6c66={'where':_0x5871bf[_0x425e('0x3b')]};return db[_0x425e('0x2d')][_0x425e('0x21')](_0x1b6c66)[_0x425e('0x26')](function(_0x4cc137){_0x3a66d3['count']=_0x4cc137;if(_0xbd573f[_0x425e('0x34')][_0x425e('0x41')]){_0x5871bf[_0x425e('0x42')]=[{'all':!![]}];}return db[_0x425e('0x2d')][_0x425e('0x43')](_0x5871bf);})[_0x425e('0x26')](function(_0x1f13e2){_0x3a66d3[_0x425e('0x44')]=_0x1f13e2;return _0x3a66d3;})[_0x425e('0x26')](respondWithFilteredResult(_0x4b342d,_0x5871bf))[_0x425e('0x45')](handleError(_0x4b342d,null));};exports['show']=function(_0x49af7e,_0x2c3475){var _0x2ed7ef={'raw':!![],'where':{'id':_0x49af7e[_0x425e('0x46')]['id']}},_0x57501d={};_0x57501d[_0x425e('0x31')]=_[_0x425e('0x32')](db[_0x425e('0x2d')][_0x425e('0x2e')]);_0x57501d['query']=_[_0x425e('0x32')](_0x49af7e['query']);_0x57501d[_0x425e('0x33')]=_[_0x425e('0x36')](_0x57501d[_0x425e('0x31')],_0x57501d['query']);_0x2ed7ef['attributes']=_[_0x425e('0x36')](_0x57501d['model'],qs[_0x425e('0x37')](_0x49af7e[_0x425e('0x34')]['fields']));_0x2ed7ef['attributes']=_0x2ed7ef[_0x425e('0x35')][_0x425e('0x38')]?_0x2ed7ef['attributes']:_0x57501d[_0x425e('0x31')];if(_0x49af7e['query'][_0x425e('0x41')]){_0x2ed7ef[_0x425e('0x42')]=[{'all':!![]}];}_0x2ed7ef=_[_0x425e('0x3e')]({},_0x2ed7ef,_0x49af7e[_0x425e('0x40')]);return db[_0x425e('0x2d')][_0x425e('0x47')](_0x2ed7ef)['then'](handleEntityNotFound(_0x2c3475,null))[_0x425e('0x26')](respondWithResult(_0x2c3475,null))[_0x425e('0x45')](handleError(_0x2c3475,null));};exports[_0x425e('0x48')]=function(_0x3a5942,_0x4cb022){return db[_0x425e('0x2d')][_0x425e('0x48')](_0x3a5942[_0x425e('0x49')],{})[_0x425e('0x26')](respondWithResult(_0x4cb022,0xc9))[_0x425e('0x45')](handleError(_0x4cb022,null));};exports[_0x425e('0x4a')]=function(_0x1479c8,_0x2f027d){if(_0x1479c8[_0x425e('0x49')]['id']){delete _0x1479c8[_0x425e('0x49')]['id'];}return db[_0x425e('0x2d')][_0x425e('0x47')]({'where':{'id':_0x1479c8[_0x425e('0x46')]['id']}})[_0x425e('0x26')](handleEntityNotFound(_0x2f027d,null))[_0x425e('0x26')](saveUpdates(_0x1479c8[_0x425e('0x49')],null))[_0x425e('0x26')](respondWithResult(_0x2f027d,null))[_0x425e('0x45')](handleError(_0x2f027d,null));};exports[_0x425e('0x4b')]=function(_0x15ce62,_0x408d47){return db['MailTransferReport']['find']({'where':{'id':_0x15ce62[_0x425e('0x46')]['id']}})[_0x425e('0x26')](handleEntityNotFound(_0x408d47,null))[_0x425e('0x26')](removeEntity(_0x408d47,null))[_0x425e('0x45')](handleError(_0x408d47,null));};exports[_0x425e('0x4c')]=function(_0x55fbdf,_0x5defbf){return db[_0x425e('0x2d')]['describe']()['then'](respondWithResult(_0x5defbf,null))[_0x425e('0x45')](handleError(_0x5defbf,null));};
\ No newline at end of file
+var _0xd47d=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','update','then','destroy','error','name','send','index','MailTransferReport','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','include','findAll','rows','catch','show','params','rawAttributes','includeAll','find','create','body','describe','eml-format','rimraf','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service'];(function(_0x206251,_0x6c4977){var _0x442b47=function(_0x1e4beb){while(--_0x1e4beb){_0x206251['push'](_0x206251['shift']());}};_0x442b47(++_0x6c4977);}(_0xd47d,0x117));var _0xdd47=function(_0x23f8c8,_0xb536b9){_0x23f8c8=_0x23f8c8-0x0;var _0x3dc718=_0xd47d[_0x23f8c8];return _0x3dc718;};'use strict';var emlformat=require(_0xdd47('0x0'));var rimraf=require(_0xdd47('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdd47('0x2'));var rp=require('request-promise');var moment=require(_0xdd47('0x3'));var BPromise=require(_0xdd47('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xdd47('0x5'));var sox=require(_0xdd47('0x6'));var csv=require(_0xdd47('0x7'));var ejs=require(_0xdd47('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdd47('0x9'));var squel=require(_0xdd47('0xa'));var crypto=require(_0xdd47('0xb'));var jsforce=require(_0xdd47('0xc'));var deskjs=require(_0xdd47('0xd'));var toCsv=require(_0xdd47('0x7'));var querystring=require('querystring');var Papa=require(_0xdd47('0xe'));var Redis=require(_0xdd47('0xf'));var authService=require(_0xdd47('0x10'));var qs=require(_0xdd47('0x11'));var as=require(_0xdd47('0x12'));var hardwareService=require(_0xdd47('0x13'));var logger=require(_0xdd47('0x14'))(_0xdd47('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xdd47('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x39661f,_0x1bf352){_0x1bf352=_0x1bf352||0xcc;return function(_0x5be26a){if(_0x5be26a){return _0x39661f[_0xdd47('0x17')](_0x1bf352);}return _0x39661f['status'](_0x1bf352)[_0xdd47('0x18')]();};}function respondWithResult(_0x157660,_0x2a98f8){_0x2a98f8=_0x2a98f8||0xc8;return function(_0x3465a8){if(_0x3465a8){return _0x157660[_0xdd47('0x19')](_0x2a98f8)[_0xdd47('0x1a')](_0x3465a8);}};}function respondWithFilteredResult(_0x263aad,_0x4b314f){return function(_0x240a18){if(_0x240a18){var _0xedbfe4=typeof _0x4b314f[_0xdd47('0x1b')]===_0xdd47('0x1c')&&typeof _0x4b314f[_0xdd47('0x1d')]==='undefined';var _0x648ef2=_0x240a18[_0xdd47('0x1e')];var _0x522918=_0xedbfe4?0x0:_0x4b314f['offset'];var _0x35f0c9=_0xedbfe4?_0x240a18['count']:_0x4b314f[_0xdd47('0x1b')]+_0x4b314f[_0xdd47('0x1d')];var _0xd4c007;if(_0x35f0c9>=_0x648ef2){_0x35f0c9=_0x648ef2;_0xd4c007=0xc8;}else{_0xd4c007=0xce;}_0x263aad[_0xdd47('0x19')](_0xd4c007);return _0x263aad['set'](_0xdd47('0x1f'),_0x522918+'-'+_0x35f0c9+'/'+_0x648ef2)[_0xdd47('0x1a')](_0x240a18);}return null;};}function patchUpdates(_0x5e620a){return function(_0x3bbb81){try{jsonpatch[_0xdd47('0x20')](_0x3bbb81,_0x5e620a,!![]);}catch(_0x354e65){return BPromise['reject'](_0x354e65);}return _0x3bbb81['save']();};}function saveUpdates(_0x3954ec,_0x50a707){return function(_0x14d3d1){if(_0x14d3d1){return _0x14d3d1[_0xdd47('0x21')](_0x3954ec)[_0xdd47('0x22')](function(_0x3fb97d){return _0x3fb97d;});}return null;};}function removeEntity(_0x27f2ee,_0x40082f){return function(_0x2a862b){if(_0x2a862b){return _0x2a862b[_0xdd47('0x23')]()[_0xdd47('0x22')](function(){_0x27f2ee[_0xdd47('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x507dec,_0x4be2a3){return function(_0x3bdb88){if(!_0x3bdb88){_0x507dec[_0xdd47('0x17')](0x194);}return _0x3bdb88;};}function handleError(_0x13f636,_0x4bfd35){_0x4bfd35=_0x4bfd35||0x1f4;return function(_0x5d5986){logger[_0xdd47('0x24')](_0x5d5986['stack']);if(_0x5d5986[_0xdd47('0x25')]){delete _0x5d5986['name'];}_0x13f636[_0xdd47('0x19')](_0x4bfd35)[_0xdd47('0x26')](_0x5d5986);};}exports[_0xdd47('0x27')]=function(_0x532b83,_0x1cf2a7){var _0x389e35={},_0x45f213={},_0xac43e5={'count':0x0,'rows':[]};var _0xf3d81a=_['map'](db[_0xdd47('0x28')]['rawAttributes'],function(_0x550e2d){return{'name':_0x550e2d['fieldName'],'type':_0x550e2d['type'][_0xdd47('0x29')]};});_0x45f213[_0xdd47('0x2a')]=_[_0xdd47('0x2b')](_0xf3d81a,_0xdd47('0x25'));_0x45f213[_0xdd47('0x2c')]=_[_0xdd47('0x2d')](_0x532b83['query']);_0x45f213[_0xdd47('0x2e')]=_[_0xdd47('0x2f')](_0x45f213[_0xdd47('0x2a')],_0x45f213[_0xdd47('0x2c')]);_0x389e35[_0xdd47('0x30')]=_[_0xdd47('0x2f')](_0x45f213[_0xdd47('0x2a')],qs['fields'](_0x532b83[_0xdd47('0x2c')][_0xdd47('0x31')]));_0x389e35[_0xdd47('0x30')]=_0x389e35[_0xdd47('0x30')][_0xdd47('0x32')]?_0x389e35[_0xdd47('0x30')]:_0x45f213[_0xdd47('0x2a')];if(!_0x532b83[_0xdd47('0x2c')][_0xdd47('0x33')](_0xdd47('0x34'))){_0x389e35[_0xdd47('0x1d')]=qs[_0xdd47('0x1d')](_0x532b83[_0xdd47('0x2c')][_0xdd47('0x1d')]);_0x389e35['offset']=qs[_0xdd47('0x1b')](_0x532b83[_0xdd47('0x2c')]['offset']);}_0x389e35[_0xdd47('0x35')]=qs[_0xdd47('0x36')](_0x532b83['query']['sort']);_0x389e35[_0xdd47('0x37')]=qs[_0xdd47('0x2e')](_[_0xdd47('0x38')](_0x532b83[_0xdd47('0x2c')],_0x45f213[_0xdd47('0x2e')]),_0xf3d81a);if(_0x532b83['query'][_0xdd47('0x39')]){_0x389e35[_0xdd47('0x37')]=_[_0xdd47('0x3a')](_0x389e35[_0xdd47('0x37')],{'$or':_[_0xdd47('0x2b')](_0xf3d81a,function(_0x58f921){if(_0x58f921[_0xdd47('0x3b')]!==_0xdd47('0x3c')){var _0x2ee4ad={};_0x2ee4ad[_0x58f921[_0xdd47('0x25')]]={'$like':'%'+_0x532b83[_0xdd47('0x2c')][_0xdd47('0x39')]+'%'};return _0x2ee4ad;}})});}_0x389e35=_[_0xdd47('0x3a')]({},_0x389e35,_0x532b83[_0xdd47('0x3d')]);var _0x9910e2={'where':_0x389e35['where']};return db[_0xdd47('0x28')][_0xdd47('0x1e')](_0x9910e2)[_0xdd47('0x22')](function(_0x3eb20e){_0xac43e5['count']=_0x3eb20e;if(_0x532b83[_0xdd47('0x2c')]['includeAll']){_0x389e35[_0xdd47('0x3e')]=[{'all':!![]}];}return db[_0xdd47('0x28')][_0xdd47('0x3f')](_0x389e35);})['then'](function(_0x5b2963){_0xac43e5[_0xdd47('0x40')]=_0x5b2963;return _0xac43e5;})[_0xdd47('0x22')](respondWithFilteredResult(_0x1cf2a7,_0x389e35))[_0xdd47('0x41')](handleError(_0x1cf2a7,null));};exports[_0xdd47('0x42')]=function(_0x18e75c,_0x308576){var _0x2595e0={'raw':!![],'where':{'id':_0x18e75c[_0xdd47('0x43')]['id']}},_0x298946={};_0x298946['model']=_[_0xdd47('0x2d')](db[_0xdd47('0x28')][_0xdd47('0x44')]);_0x298946['query']=_[_0xdd47('0x2d')](_0x18e75c[_0xdd47('0x2c')]);_0x298946[_0xdd47('0x2e')]=_[_0xdd47('0x2f')](_0x298946[_0xdd47('0x2a')],_0x298946[_0xdd47('0x2c')]);_0x2595e0['attributes']=_[_0xdd47('0x2f')](_0x298946['model'],qs[_0xdd47('0x31')](_0x18e75c[_0xdd47('0x2c')][_0xdd47('0x31')]));_0x2595e0['attributes']=_0x2595e0['attributes'][_0xdd47('0x32')]?_0x2595e0[_0xdd47('0x30')]:_0x298946[_0xdd47('0x2a')];if(_0x18e75c[_0xdd47('0x2c')][_0xdd47('0x45')]){_0x2595e0[_0xdd47('0x3e')]=[{'all':!![]}];}_0x2595e0=_['merge']({},_0x2595e0,_0x18e75c[_0xdd47('0x3d')]);return db['MailTransferReport'][_0xdd47('0x46')](_0x2595e0)[_0xdd47('0x22')](handleEntityNotFound(_0x308576,null))[_0xdd47('0x22')](respondWithResult(_0x308576,null))[_0xdd47('0x41')](handleError(_0x308576,null));};exports[_0xdd47('0x47')]=function(_0x29fc73,_0x318fde){return db[_0xdd47('0x28')][_0xdd47('0x47')](_0x29fc73[_0xdd47('0x48')],{})['then'](respondWithResult(_0x318fde,0xc9))['catch'](handleError(_0x318fde,null));};exports[_0xdd47('0x21')]=function(_0x9b6b44,_0x4359e0){if(_0x9b6b44[_0xdd47('0x48')]['id']){delete _0x9b6b44['body']['id'];}return db['MailTransferReport'][_0xdd47('0x46')]({'where':{'id':_0x9b6b44[_0xdd47('0x43')]['id']}})[_0xdd47('0x22')](handleEntityNotFound(_0x4359e0,null))['then'](saveUpdates(_0x9b6b44[_0xdd47('0x48')],null))[_0xdd47('0x22')](respondWithResult(_0x4359e0,null))[_0xdd47('0x41')](handleError(_0x4359e0,null));};exports[_0xdd47('0x23')]=function(_0x37c71a,_0x43ca9f){return db['MailTransferReport']['find']({'where':{'id':_0x37c71a['params']['id']}})[_0xdd47('0x22')](handleEntityNotFound(_0x43ca9f,null))['then'](removeEntity(_0x43ca9f,null))[_0xdd47('0x41')](handleError(_0x43ca9f,null));};exports[_0xdd47('0x49')]=function(_0x1369d4,_0x303b0f){return db[_0xdd47('0x28')]['describe']()[_0xdd47('0x22')](respondWithResult(_0x303b0f,null))['catch'](handleError(_0x303b0f,null));};
\ No newline at end of file
index f01550c..fe28d67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd4e=['path','../../config/environment','exports','define','MailTransferReport','report_mail_transfer','uniqueid','lodash','util','../../config/logger','api','request-promise'];(function(_0x8129d4,_0x18deec){var _0x1b9576=function(_0x3ac7e0){while(--_0x3ac7e0){_0x8129d4['push'](_0x8129d4['shift']());}};_0x1b9576(++_0x18deec);}(_0xcd4e,0x187));var _0xecd4=function(_0x35bcc4,_0x180d7b){_0x35bcc4=_0x35bcc4-0x0;var _0x3b18d2=_0xcd4e[_0x35bcc4];return _0x3b18d2;};'use strict';var _=require(_0xecd4('0x0'));var util=require(_0xecd4('0x1'));var logger=require(_0xecd4('0x2'))(_0xecd4('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xecd4('0x4'));var fs=require('fs');var path=require(_0xecd4('0x5'));var rimraf=require('rimraf');var config=require(_0xecd4('0x6'));var attributes=require('./mailTransferReport.attributes');module[_0xecd4('0x7')]=function(_0x47f6ae,_0x41dd0c){return _0x47f6ae[_0xecd4('0x8')](_0xecd4('0x9'),attributes,{'tableName':_0xecd4('0xa'),'paranoid':![],'indexes':[{'name':_0xecd4('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3c94=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailTransferReport.attributes','exports','define','MailTransferReport','report_mail_transfer','uniqueid','lodash','util','../../config/logger'];(function(_0x120297,_0x1b2fbd){var _0x589f25=function(_0xf1a29b){while(--_0xf1a29b){_0x120297['push'](_0x120297['shift']());}};_0x589f25(++_0x1b2fbd);}(_0x3c94,0xcd));var _0x43c9=function(_0x250514,_0x389eda){_0x250514=_0x250514-0x0;var _0x59c25b=_0x3c94[_0x250514];return _0x59c25b;};'use strict';var _=require(_0x43c9('0x0'));var util=require(_0x43c9('0x1'));var logger=require(_0x43c9('0x2'))(_0x43c9('0x3'));var moment=require(_0x43c9('0x4'));var BPromise=require(_0x43c9('0x5'));var rp=require(_0x43c9('0x6'));var fs=require('fs');var path=require(_0x43c9('0x7'));var rimraf=require(_0x43c9('0x8'));var config=require(_0x43c9('0x9'));var attributes=require(_0x43c9('0xa'));module[_0x43c9('0xb')]=function(_0x4fdfc2,_0x39c220){return _0x4fdfc2[_0x43c9('0xc')](_0x43c9('0xd'),attributes,{'tableName':_0x43c9('0xe'),'paranoid':![],'indexes':[{'name':_0x43c9('0xf'),'fields':[_0x43c9('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index 2c67282..c764686 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa817=['../../config/environment','jayson/promise','http','then','MailTransferReport,\x20%s,\x20%s','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x5a7bfc,_0x5eea0b){var _0x6961e4=function(_0x230ecf){while(--_0x230ecf){_0x5a7bfc['push'](_0x5a7bfc['shift']());}};_0x6961e4(++_0x5eea0b);}(_0xa817,0x7b));var _0x7a81=function(_0x30b39e,_0x284078){_0x30b39e=_0x30b39e-0x0;var _0x5d7dfe=_0xa817[_0x30b39e];return _0x5d7dfe;};'use strict';var _=require(_0x7a81('0x0'));var util=require(_0x7a81('0x1'));var moment=require(_0x7a81('0x2'));var BPromise=require(_0x7a81('0x3'));var rs=require(_0x7a81('0x4'));var fs=require('fs');var Redis=require(_0x7a81('0x5'));var db=require(_0x7a81('0x6'))['db'];var utils=require(_0x7a81('0x7'));var logger=require(_0x7a81('0x8'))('rpc');var config=require(_0x7a81('0x9'));var jayson=require(_0x7a81('0xa'));var client=jayson['client'][_0x7a81('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x35c35a,_0x3ab25c,_0x705d4e){return new BPromise(function(_0x1869fb,_0x18f6f6){return client['request'](_0x35c35a,_0x705d4e)[_0x7a81('0xc')](function(_0x5b3b66){logger['info'](_0x7a81('0xd'),_0x3ab25c,'request\x20sent');logger[_0x7a81('0xe')](_0x7a81('0xf'),_0x3ab25c,_0x7a81('0x10'),JSON[_0x7a81('0x11')](_0x5b3b66));if(_0x5b3b66[_0x7a81('0x12')]){if(_0x5b3b66[_0x7a81('0x12')][_0x7a81('0x13')]===0x1f4){logger['error'](_0x7a81('0xd'),_0x3ab25c,_0x5b3b66[_0x7a81('0x12')][_0x7a81('0x14')]);return _0x18f6f6(_0x5b3b66['error'][_0x7a81('0x14')]);}logger[_0x7a81('0x12')](_0x7a81('0xd'),_0x3ab25c,_0x5b3b66[_0x7a81('0x12')][_0x7a81('0x14')]);return _0x1869fb(_0x5b3b66[_0x7a81('0x12')]['message']);}else{logger['info'](_0x7a81('0xd'),_0x3ab25c,_0x7a81('0x10'));_0x1869fb(_0x5b3b66['result'][_0x7a81('0x14')]);}})[_0x7a81('0x15')](function(_0x179afd){logger[_0x7a81('0x12')](_0x7a81('0xd'),_0x3ab25c,_0x179afd);_0x18f6f6(_0x179afd);});});}
\ No newline at end of file
+var _0x2b1a=['request\x20sent','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','moment','bluebird','randomstring','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','MailTransferReport,\x20%s,\x20%s'];(function(_0x341e0f,_0x4a09d0){var _0x59555a=function(_0x4343a8){while(--_0x4343a8){_0x341e0f['push'](_0x341e0f['shift']());}};_0x59555a(++_0x4a09d0);}(_0x2b1a,0x1aa));var _0xa2b1=function(_0x114efa,_0x507a4f){_0x114efa=_0x114efa-0x0;var _0x52f1d7=_0x2b1a[_0x114efa];return _0x52f1d7;};'use strict';var _=require('lodash');var util=require(_0xa2b1('0x0'));var moment=require(_0xa2b1('0x1'));var BPromise=require(_0xa2b1('0x2'));var rs=require(_0xa2b1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xa2b1('0x4'))(_0xa2b1('0x5'));var config=require(_0xa2b1('0x6'));var jayson=require(_0xa2b1('0x7'));var client=jayson[_0xa2b1('0x8')][_0xa2b1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1033ae,_0x1ef190,_0x1645a8){return new BPromise(function(_0x4aaa39,_0x5c641a){return client[_0xa2b1('0xa')](_0x1033ae,_0x1645a8)[_0xa2b1('0xb')](function(_0x40a68e){logger[_0xa2b1('0xc')](_0xa2b1('0xd'),_0x1ef190,_0xa2b1('0xe'));logger[_0xa2b1('0xf')](_0xa2b1('0x10'),_0x1ef190,_0xa2b1('0xe'),JSON[_0xa2b1('0x11')](_0x40a68e));if(_0x40a68e[_0xa2b1('0x12')]){if(_0x40a68e[_0xa2b1('0x12')][_0xa2b1('0x13')]===0x1f4){logger[_0xa2b1('0x12')](_0xa2b1('0xd'),_0x1ef190,_0x40a68e[_0xa2b1('0x12')][_0xa2b1('0x14')]);return _0x5c641a(_0x40a68e[_0xa2b1('0x12')][_0xa2b1('0x14')]);}logger['error'](_0xa2b1('0xd'),_0x1ef190,_0x40a68e[_0xa2b1('0x12')][_0xa2b1('0x14')]);return _0x4aaa39(_0x40a68e[_0xa2b1('0x12')][_0xa2b1('0x14')]);}else{logger[_0xa2b1('0xc')](_0xa2b1('0xd'),_0x1ef190,_0xa2b1('0xe'));_0x4aaa39(_0x40a68e['result'][_0xa2b1('0x14')]);}})[_0xa2b1('0x15')](function(_0x1564ab){logger[_0xa2b1('0x12')]('MailTransferReport,\x20%s,\x20%s',_0x1ef190,_0x1564ab);_0x5c641a(_0x1564ab);});});}
\ No newline at end of file
index 2815317..b4e6790 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9196=['/describe','describe','show','create','put','/:id','update','delete','exports','multer','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get'];(function(_0x20f7c4,_0x1a02a8){var _0x18a0c2=function(_0x8edfc6){while(--_0x8edfc6){_0x20f7c4['push'](_0x20f7c4['shift']());}};_0x18a0c2(++_0x1a02a8);}(_0x9196,0x8e));var _0x6919=function(_0x115621,_0x341cde){_0x115621=_0x115621-0x0;var _0x5ef5ce=_0x9196[_0x115621];return _0x5ef5ce;};'use strict';var multer=require(_0x6919('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x6919('0x1'));var router=express[_0x6919('0x2')]();var fs_extra=require(_0x6919('0x3'));var auth=require(_0x6919('0x4'));var interaction=require(_0x6919('0x5'));var config=require(_0x6919('0x6'));var controller=require('./memberReport.controller');router['get']('/',auth[_0x6919('0x7')](),controller[_0x6919('0x8')]);router[_0x6919('0x9')](_0x6919('0xa'),auth['isAuthenticated'](),controller[_0x6919('0xb')]);router['get']('/:id',auth[_0x6919('0x7')](),controller[_0x6919('0xc')]);router['post']('/',auth[_0x6919('0x7')](),controller[_0x6919('0xd')]);router[_0x6919('0xe')](_0x6919('0xf'),auth['isAuthenticated'](),controller[_0x6919('0x10')]);router[_0x6919('0x11')](_0x6919('0xf'),auth[_0x6919('0x7')](),controller['destroy']);module[_0x6919('0x12')]=router;
\ No newline at end of file
+var _0xdc10=['../../config/environment','./memberReport.controller','get','/describe','isAuthenticated','describe','/:id','show','post','update','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x55eae4,_0x159cc8){var _0x3771a4=function(_0x18275a){while(--_0x18275a){_0x55eae4['push'](_0x55eae4['shift']());}};_0x3771a4(++_0x159cc8);}(_0xdc10,0x187));var _0x0dc1=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0xdc10[_0x4d613c];return _0x301fe3;};'use strict';var multer=require(_0x0dc1('0x0'));var util=require(_0x0dc1('0x1'));var path=require(_0x0dc1('0x2'));var timeout=require('connect-timeout');var express=require(_0x0dc1('0x3'));var router=express[_0x0dc1('0x4')]();var fs_extra=require(_0x0dc1('0x5'));var auth=require(_0x0dc1('0x6'));var interaction=require(_0x0dc1('0x7'));var config=require(_0x0dc1('0x8'));var controller=require(_0x0dc1('0x9'));router[_0x0dc1('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x0dc1('0xa')](_0x0dc1('0xb'),auth[_0x0dc1('0xc')](),controller[_0x0dc1('0xd')]);router[_0x0dc1('0xa')](_0x0dc1('0xe'),auth[_0x0dc1('0xc')](),controller[_0x0dc1('0xf')]);router[_0x0dc1('0x10')]('/',auth[_0x0dc1('0xc')](),controller['create']);router['put'](_0x0dc1('0xe'),auth['isAuthenticated'](),controller[_0x0dc1('0x11')]);router['delete'](_0x0dc1('0xe'),auth['isAuthenticated'](),controller['destroy']);module[_0x0dc1('0x12')]=router;
\ No newline at end of file
index 9453446..da73967 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf1c=['DATE','getDataValue','enterAt','diff','seconds','setDataValue','exitAt','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[dial\x20string]','talk:[queue]','INTEGER','sequelize','moment','STRING'];(function(_0x55e461,_0x260d5e){var _0x26e885=function(_0xf3121f){while(--_0xf3121f){_0x55e461['push'](_0x55e461['shift']());}};_0x26e885(++_0x260d5e);}(_0xcf1c,0x18d));var _0xccf1=function(_0x54dcad,_0x554f46){_0x54dcad=_0x54dcad-0x0;var _0x537c56=_0xcf1c[_0x54dcad];return _0x537c56;};'use strict';var Sequelize=require(_0xccf1('0x0'));var moment=require(_0xccf1('0x1'));module['exports']={'channel':{'type':Sequelize[_0xccf1('0x2')]},'membername':{'type':Sequelize[_0xccf1('0x2')]},'interface':{'type':Sequelize[_0xccf1('0x2')]},'type':{'type':Sequelize[_0xccf1('0x2')],'defaultValue':'DEFAULT\x20PAUSE','comment':'LOGIN,\x20PAUSE,\x20TALKING'},'duration':{'type':Sequelize['INTEGER']},'enterAt':{'type':Sequelize[_0xccf1('0x3')]},'exitAt':{'type':Sequelize['DATE'],'set':function(_0x17e358){var _0x2ee316=moment(_0x17e358);var _0x2c381f=moment(this[_0xccf1('0x4')](_0xccf1('0x5')));var _0x12ca5d=_0x2ee316[_0xccf1('0x6')](_0x2c381f,_0xccf1('0x7'));this[_0xccf1('0x8')](_0xccf1('0x9'),_0x17e358);this[_0xccf1('0x8')](_0xccf1('0xa'),_0x12ca5d||null);}},'data1':{'type':Sequelize[_0xccf1('0x2')],'comment':_0xccf1('0xb')},'data2':{'type':Sequelize[_0xccf1('0x2')],'comment':_0xccf1('0xc')},'data3':{'type':Sequelize[_0xccf1('0x2')],'comment':'talk:[destination]'},'data4':{'type':Sequelize['STRING'],'comment':_0xccf1('0xd')},'data5':{'type':Sequelize[_0xccf1('0x2')],'comment':_0xccf1('0xe')},'role':{'type':Sequelize[_0xccf1('0x2')]},'internal':{'type':Sequelize[_0xccf1('0xf')]},'uniqueid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xe189=['STRING','INTEGER','DATE','getDataValue','enterAt','seconds','setDataValue','exitAt','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','talk:[dial\x20string]','talk:[queue]','sequelize'];(function(_0x1de195,_0x54eb95){var _0x4bcee9=function(_0xa5ae){while(--_0xa5ae){_0x1de195['push'](_0x1de195['shift']());}};_0x4bcee9(++_0x54eb95);}(_0xe189,0x194));var _0x9e18=function(_0x25c592,_0xe96982){_0x25c592=_0x25c592-0x0;var _0x5eafc3=_0xe189[_0x25c592];return _0x5eafc3;};'use strict';var Sequelize=require(_0x9e18('0x0'));var moment=require('moment');module['exports']={'channel':{'type':Sequelize[_0x9e18('0x1')]},'membername':{'type':Sequelize[_0x9e18('0x1')]},'interface':{'type':Sequelize[_0x9e18('0x1')]},'type':{'type':Sequelize[_0x9e18('0x1')],'defaultValue':'DEFAULT\x20PAUSE','comment':'LOGIN,\x20PAUSE,\x20TALKING'},'duration':{'type':Sequelize[_0x9e18('0x2')]},'enterAt':{'type':Sequelize[_0x9e18('0x3')]},'exitAt':{'type':Sequelize[_0x9e18('0x3')],'set':function(_0x53d7c9){var _0x3e6881=moment(_0x53d7c9);var _0x5e6097=moment(this[_0x9e18('0x4')](_0x9e18('0x5')));var _0x4656a4=_0x3e6881['diff'](_0x5e6097,_0x9e18('0x6'));this[_0x9e18('0x7')](_0x9e18('0x8'),_0x53d7c9);this['setDataValue'](_0x9e18('0x9'),_0x4656a4||null);}},'data1':{'type':Sequelize[_0x9e18('0x1')],'comment':_0x9e18('0xa')},'data2':{'type':Sequelize[_0x9e18('0x1')],'comment':_0x9e18('0xb')},'data3':{'type':Sequelize[_0x9e18('0x1')],'comment':_0x9e18('0xc')},'data4':{'type':Sequelize[_0x9e18('0x1')],'comment':_0x9e18('0xd')},'data5':{'type':Sequelize['STRING'],'comment':_0x9e18('0xe')},'role':{'type':Sequelize['STRING']},'internal':{'type':Sequelize[_0x9e18('0x2')]},'uniqueid':{'type':Sequelize[_0x9e18('0x1')]}};
\ No newline at end of file
index 4ab43c7..51b5647 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['catch','params','find','create','body','describe','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','Content-Range','apply','reject','save','update','destroy','sendStatus','stack','name','send','index','map','MemberReport','rawAttributes','fieldName','type','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','then','includeAll','include','findAll','rows'];(function(_0x100551,_0x38bbb5){var _0x165b01=function(_0xaba92d){while(--_0xaba92d){_0x100551['push'](_0x100551['shift']());}};_0x165b01(++_0x38bbb5);}(_0x9c44,0x178));var _0x49c4=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x9c44[_0x4b055c];return _0x4b62bb;};'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={},_0x46e04d={},_0x4f28a2={'count':0x0,'rows':[]};var _0x6329b3=_[_0x49c4('0x29')](db[_0x49c4('0x2a')][_0x49c4('0x2b')],function(_0x17b50f){return{'name':_0x17b50f[_0x49c4('0x2c')],'type':_0x17b50f[_0x49c4('0x2d')]['key']};});_0x46e04d['model']=_['map'](_0x6329b3,_0x49c4('0x26'));_0x46e04d[_0x49c4('0x2e')]=_[_0x49c4('0x2f')](_0x5987ae[_0x49c4('0x2e')]);_0x46e04d[_0x49c4('0x30')]=_['intersection'](_0x46e04d[_0x49c4('0x31')],_0x46e04d[_0x49c4('0x2e')]);_0x2b2793[_0x49c4('0x32')]=_[_0x49c4('0x33')](_0x46e04d['model'],qs['fields'](_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x34')]));_0x2b2793[_0x49c4('0x32')]=_0x2b2793[_0x49c4('0x32')][_0x49c4('0x35')]?_0x2b2793['attributes']:_0x46e04d[_0x49c4('0x31')];if(!_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x36')]('nolimit')){_0x2b2793['limit']=qs[_0x49c4('0x1b')](_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x1b')]);_0x2b2793[_0x49c4('0x19')]=qs[_0x49c4('0x19')](_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x19')]);}_0x2b2793[_0x49c4('0x37')]=qs[_0x49c4('0x38')](_0x5987ae['query'][_0x49c4('0x38')]);_0x2b2793['where']=qs[_0x49c4('0x30')](_[_0x49c4('0x39')](_0x5987ae[_0x49c4('0x2e')],_0x46e04d[_0x49c4('0x30')]),_0x6329b3);if(_0x5987ae['query'][_0x49c4('0x3a')]){_0x2b2793[_0x49c4('0x3b')]=_[_0x49c4('0x3c')](_0x2b2793['where'],{'$or':_[_0x49c4('0x29')](_0x6329b3,function(_0x21d8c7){if(_0x21d8c7[_0x49c4('0x2d')]!==_0x49c4('0x3d')){var _0x1ba7a0={};_0x1ba7a0[_0x21d8c7[_0x49c4('0x26')]]={'$like':'%'+_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x3a')]+'%'};return _0x1ba7a0;}})});}_0x2b2793=_[_0x49c4('0x3c')]({},_0x2b2793,_0x5987ae[_0x49c4('0x3e')]);var _0x1e506a={'where':_0x2b2793['where']};return db[_0x49c4('0x2a')][_0x49c4('0x1c')](_0x1e506a)[_0x49c4('0x3f')](function(_0x23aa32){_0x4f28a2[_0x49c4('0x1c')]=_0x23aa32;if(_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x40')]){_0x2b2793[_0x49c4('0x41')]=[{'all':!![]}];}return db[_0x49c4('0x2a')][_0x49c4('0x42')](_0x2b2793);})[_0x49c4('0x3f')](function(_0xa3d59e){_0x4f28a2[_0x49c4('0x43')]=_0xa3d59e;return _0x4f28a2;})['then'](respondWithFilteredResult(_0x889909,_0x2b2793))[_0x49c4('0x44')](handleError(_0x889909,null));};exports['show']=function(_0x104efb,_0x4915bc){var _0x28d4fb={'raw':!![],'where':{'id':_0x104efb[_0x49c4('0x45')]['id']}},_0x1480da={};_0x1480da[_0x49c4('0x31')]=_['keys'](db['MemberReport'][_0x49c4('0x2b')]);_0x1480da[_0x49c4('0x2e')]=_[_0x49c4('0x2f')](_0x104efb[_0x49c4('0x2e')]);_0x1480da['filters']=_[_0x49c4('0x33')](_0x1480da[_0x49c4('0x31')],_0x1480da[_0x49c4('0x2e')]);_0x28d4fb[_0x49c4('0x32')]=_[_0x49c4('0x33')](_0x1480da[_0x49c4('0x31')],qs[_0x49c4('0x34')](_0x104efb[_0x49c4('0x2e')][_0x49c4('0x34')]));_0x28d4fb['attributes']=_0x28d4fb[_0x49c4('0x32')]['length']?_0x28d4fb[_0x49c4('0x32')]:_0x1480da[_0x49c4('0x31')];if(_0x104efb[_0x49c4('0x2e')][_0x49c4('0x40')]){_0x28d4fb[_0x49c4('0x41')]=[{'all':!![]}];}_0x28d4fb=_['merge']({},_0x28d4fb,_0x104efb[_0x49c4('0x3e')]);return db[_0x49c4('0x2a')][_0x49c4('0x46')](_0x28d4fb)[_0x49c4('0x3f')](handleEntityNotFound(_0x4915bc,null))[_0x49c4('0x3f')](respondWithResult(_0x4915bc,null))[_0x49c4('0x44')](handleError(_0x4915bc,null));};exports[_0x49c4('0x47')]=function(_0x4d89e0,_0x3bac1b){return db['MemberReport'][_0x49c4('0x47')](_0x4d89e0[_0x49c4('0x48')],{})[_0x49c4('0x3f')](respondWithResult(_0x3bac1b,0xc9))[_0x49c4('0x44')](handleError(_0x3bac1b,null));};exports[_0x49c4('0x22')]=function(_0x30bea5,_0x2c6be1){if(_0x30bea5['body']['id']){delete _0x30bea5[_0x49c4('0x48')]['id'];}return db[_0x49c4('0x2a')]['find']({'where':{'id':_0x30bea5[_0x49c4('0x45')]['id']}})[_0x49c4('0x3f')](handleEntityNotFound(_0x2c6be1,null))[_0x49c4('0x3f')](saveUpdates(_0x30bea5[_0x49c4('0x48')],null))['then'](respondWithResult(_0x2c6be1,null))['catch'](handleError(_0x2c6be1,null));};exports[_0x49c4('0x23')]=function(_0x4e8221,_0x4597c3){return db[_0x49c4('0x2a')][_0x49c4('0x46')]({'where':{'id':_0x4e8221[_0x49c4('0x45')]['id']}})[_0x49c4('0x3f')](handleEntityNotFound(_0x4597c3,null))[_0x49c4('0x3f')](removeEntity(_0x4597c3,null))[_0x49c4('0x44')](handleError(_0x4597c3,null));};exports['describe']=function(_0x1f26c2,_0x1550ce){return db[_0x49c4('0x2a')][_0x49c4('0x49')]()[_0x49c4('0x3f')](respondWithResult(_0x1550ce,null))[_0x49c4('0x44')](handleError(_0x1550ce,null));};
\ No newline at end of file
+var _0x008c=['destroy','sendStatus','send','index','MemberReport','rawAttributes','key','model','map','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','type','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','show','catch','create','body','find','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','save','update','then'];(function(_0x4ebe67,_0x3b8559){var _0x2ece89=function(_0xf7d805){while(--_0xf7d805){_0x4ebe67['push'](_0x4ebe67['shift']());}};_0x2ece89(++_0x3b8559);}(_0x008c,0x188));var _0xc008=function(_0x539fef,_0x17f310){_0x539fef=_0x539fef-0x0;var _0x1c9d6f=_0x008c[_0x539fef];return _0x1c9d6f;};'use strict';var emlformat=require(_0xc008('0x0'));var rimraf=require(_0xc008('0x1'));var zipdir=require(_0xc008('0x2'));var jsonpatch=require(_0xc008('0x3'));var rp=require(_0xc008('0x4'));var moment=require('moment');var BPromise=require(_0xc008('0x5'));var Mustache=require(_0xc008('0x6'));var util=require(_0xc008('0x7'));var path=require(_0xc008('0x8'));var sox=require(_0xc008('0x9'));var csv=require(_0xc008('0xa'));var ejs=require(_0xc008('0xb'));var fs=require('fs');var fs_extra=require(_0xc008('0xc'));var _=require(_0xc008('0xd'));var squel=require('squel');var crypto=require(_0xc008('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xc008('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc008('0x10'));var Redis=require(_0xc008('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc008('0x12'));var logger=require(_0xc008('0x13'))('api');var utils=require(_0xc008('0x14'));var config=require(_0xc008('0x15'));var licenseUtil=require(_0xc008('0x16'));var db=require(_0xc008('0x17'))['db'];function respondWithStatusCode(_0x9ffa93,_0x1819c6){_0x1819c6=_0x1819c6||0xcc;return function(_0x69726e){if(_0x69726e){return _0x9ffa93['sendStatus'](_0x1819c6);}return _0x9ffa93['status'](_0x1819c6)[_0xc008('0x18')]();};}function respondWithResult(_0x50c1ab,_0x25e13f){_0x25e13f=_0x25e13f||0xc8;return function(_0x4584e1){if(_0x4584e1){return _0x50c1ab[_0xc008('0x19')](_0x25e13f)[_0xc008('0x1a')](_0x4584e1);}};}function respondWithFilteredResult(_0x3f0ecf,_0x5ee00b){return function(_0x5e894e){if(_0x5e894e){var _0x4bd0f4=typeof _0x5ee00b[_0xc008('0x1b')]===_0xc008('0x1c')&&typeof _0x5ee00b[_0xc008('0x1d')]===_0xc008('0x1c');var _0x4fe771=_0x5e894e['count'];var _0x540e45=_0x4bd0f4?0x0:_0x5ee00b['offset'];var _0x46042b=_0x4bd0f4?_0x5e894e[_0xc008('0x1e')]:_0x5ee00b['offset']+_0x5ee00b[_0xc008('0x1d')];var _0x5906e6;if(_0x46042b>=_0x4fe771){_0x46042b=_0x4fe771;_0x5906e6=0xc8;}else{_0x5906e6=0xce;}_0x3f0ecf['status'](_0x5906e6);return _0x3f0ecf['set']('Content-Range',_0x540e45+'-'+_0x46042b+'/'+_0x4fe771)[_0xc008('0x1a')](_0x5e894e);}return null;};}function patchUpdates(_0x4b9726){return function(_0x5560b1){try{jsonpatch['apply'](_0x5560b1,_0x4b9726,!![]);}catch(_0x4a582d){return BPromise['reject'](_0x4a582d);}return _0x5560b1[_0xc008('0x1f')]();};}function saveUpdates(_0x4777a6,_0x251db2){return function(_0x415af3){if(_0x415af3){return _0x415af3[_0xc008('0x20')](_0x4777a6)[_0xc008('0x21')](function(_0x4f43e2){return _0x4f43e2;});}return null;};}function removeEntity(_0x459fd9,_0x5c85f2){return function(_0x58a6ea){if(_0x58a6ea){return _0x58a6ea[_0xc008('0x22')]()[_0xc008('0x21')](function(){_0x459fd9[_0xc008('0x19')](0xcc)[_0xc008('0x18')]();});}};}function handleEntityNotFound(_0x5410f5,_0x48582b){return function(_0x5de1e9){if(!_0x5de1e9){_0x5410f5[_0xc008('0x23')](0x194);}return _0x5de1e9;};}function handleError(_0x15dade,_0x92c582){_0x92c582=_0x92c582||0x1f4;return function(_0x2e31c2){logger['error'](_0x2e31c2['stack']);if(_0x2e31c2['name']){delete _0x2e31c2['name'];}_0x15dade['status'](_0x92c582)[_0xc008('0x24')](_0x2e31c2);};}exports[_0xc008('0x25')]=function(_0x25eae4,_0x529961){var _0x24c14c={},_0x32390d={},_0x209591={'count':0x0,'rows':[]};var _0x2a7d4f=_['map'](db[_0xc008('0x26')][_0xc008('0x27')],function(_0x53ed35){return{'name':_0x53ed35['fieldName'],'type':_0x53ed35['type'][_0xc008('0x28')]};});_0x32390d[_0xc008('0x29')]=_[_0xc008('0x2a')](_0x2a7d4f,_0xc008('0x2b'));_0x32390d[_0xc008('0x2c')]=_[_0xc008('0x2d')](_0x25eae4[_0xc008('0x2c')]);_0x32390d[_0xc008('0x2e')]=_[_0xc008('0x2f')](_0x32390d[_0xc008('0x29')],_0x32390d[_0xc008('0x2c')]);_0x24c14c[_0xc008('0x30')]=_['intersection'](_0x32390d[_0xc008('0x29')],qs[_0xc008('0x31')](_0x25eae4['query'][_0xc008('0x31')]));_0x24c14c[_0xc008('0x30')]=_0x24c14c[_0xc008('0x30')][_0xc008('0x32')]?_0x24c14c[_0xc008('0x30')]:_0x32390d[_0xc008('0x29')];if(!_0x25eae4[_0xc008('0x2c')][_0xc008('0x33')](_0xc008('0x34'))){_0x24c14c['limit']=qs[_0xc008('0x1d')](_0x25eae4[_0xc008('0x2c')][_0xc008('0x1d')]);_0x24c14c[_0xc008('0x1b')]=qs[_0xc008('0x1b')](_0x25eae4[_0xc008('0x2c')][_0xc008('0x1b')]);}_0x24c14c['order']=qs[_0xc008('0x35')](_0x25eae4[_0xc008('0x2c')]['sort']);_0x24c14c[_0xc008('0x36')]=qs[_0xc008('0x2e')](_['pick'](_0x25eae4[_0xc008('0x2c')],_0x32390d[_0xc008('0x2e')]),_0x2a7d4f);if(_0x25eae4[_0xc008('0x2c')]['filter']){_0x24c14c['where']=_['merge'](_0x24c14c[_0xc008('0x36')],{'$or':_['map'](_0x2a7d4f,function(_0x3dd0ac){if(_0x3dd0ac[_0xc008('0x37')]!==_0xc008('0x38')){var _0x440459={};_0x440459[_0x3dd0ac[_0xc008('0x2b')]]={'$like':'%'+_0x25eae4[_0xc008('0x2c')][_0xc008('0x39')]+'%'};return _0x440459;}})});}_0x24c14c=_[_0xc008('0x3a')]({},_0x24c14c,_0x25eae4[_0xc008('0x3b')]);var _0x387dfd={'where':_0x24c14c[_0xc008('0x36')]};return db[_0xc008('0x26')][_0xc008('0x1e')](_0x387dfd)[_0xc008('0x21')](function(_0x4cace5){_0x209591[_0xc008('0x1e')]=_0x4cace5;if(_0x25eae4[_0xc008('0x2c')][_0xc008('0x3c')]){_0x24c14c[_0xc008('0x3d')]=[{'all':!![]}];}return db['MemberReport'][_0xc008('0x3e')](_0x24c14c);})[_0xc008('0x21')](function(_0xc8cb91){_0x209591[_0xc008('0x3f')]=_0xc8cb91;return _0x209591;})[_0xc008('0x21')](respondWithFilteredResult(_0x529961,_0x24c14c))['catch'](handleError(_0x529961,null));};exports[_0xc008('0x40')]=function(_0x3323f4,_0x3794b0){var _0x3e9a99={'raw':!![],'where':{'id':_0x3323f4['params']['id']}},_0x7279e8={};_0x7279e8[_0xc008('0x29')]=_[_0xc008('0x2d')](db[_0xc008('0x26')][_0xc008('0x27')]);_0x7279e8['query']=_[_0xc008('0x2d')](_0x3323f4[_0xc008('0x2c')]);_0x7279e8[_0xc008('0x2e')]=_['intersection'](_0x7279e8[_0xc008('0x29')],_0x7279e8['query']);_0x3e9a99[_0xc008('0x30')]=_['intersection'](_0x7279e8[_0xc008('0x29')],qs[_0xc008('0x31')](_0x3323f4['query'][_0xc008('0x31')]));_0x3e9a99[_0xc008('0x30')]=_0x3e9a99[_0xc008('0x30')]['length']?_0x3e9a99[_0xc008('0x30')]:_0x7279e8[_0xc008('0x29')];if(_0x3323f4[_0xc008('0x2c')][_0xc008('0x3c')]){_0x3e9a99[_0xc008('0x3d')]=[{'all':!![]}];}_0x3e9a99=_[_0xc008('0x3a')]({},_0x3e9a99,_0x3323f4['options']);return db['MemberReport']['find'](_0x3e9a99)[_0xc008('0x21')](handleEntityNotFound(_0x3794b0,null))[_0xc008('0x21')](respondWithResult(_0x3794b0,null))[_0xc008('0x41')](handleError(_0x3794b0,null));};exports[_0xc008('0x42')]=function(_0x25289f,_0x24f6a4){return db[_0xc008('0x26')][_0xc008('0x42')](_0x25289f['body'],{})['then'](respondWithResult(_0x24f6a4,0xc9))['catch'](handleError(_0x24f6a4,null));};exports[_0xc008('0x20')]=function(_0x2651cf,_0x158eae){if(_0x2651cf['body']['id']){delete _0x2651cf[_0xc008('0x43')]['id'];}return db[_0xc008('0x26')][_0xc008('0x44')]({'where':{'id':_0x2651cf[_0xc008('0x45')]['id']}})[_0xc008('0x21')](handleEntityNotFound(_0x158eae,null))[_0xc008('0x21')](saveUpdates(_0x2651cf[_0xc008('0x43')],null))[_0xc008('0x21')](respondWithResult(_0x158eae,null))[_0xc008('0x41')](handleError(_0x158eae,null));};exports[_0xc008('0x22')]=function(_0x52c444,_0x4c63d4){return db[_0xc008('0x26')]['find']({'where':{'id':_0x52c444[_0xc008('0x45')]['id']}})[_0xc008('0x21')](handleEntityNotFound(_0x4c63d4,null))[_0xc008('0x21')](removeEntity(_0x4c63d4,null))['catch'](handleError(_0x4c63d4,null));};exports[_0xc008('0x46')]=function(_0x32b435,_0xee64){return db[_0xc008('0x26')][_0xc008('0x46')]()['then'](respondWithResult(_0xee64,null))[_0xc008('0x41')](handleError(_0xee64,null));};
\ No newline at end of file
index 9d27798..25b74c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc1a=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./memberReport.attributes','exports','define','report_member','membername_interface','interface','util'];(function(_0x2a0a6d,_0x25634f){var _0x141c07=function(_0x4945e1){while(--_0x4945e1){_0x2a0a6d['push'](_0x2a0a6d['shift']());}};_0x141c07(++_0x25634f);}(_0xdc1a,0x133));var _0xadc1=function(_0x4559a6,_0x303813){_0x4559a6=_0x4559a6-0x0;var _0x4e84fe=_0xdc1a[_0x4559a6];return _0x4e84fe;};'use strict';var _=require('lodash');var util=require(_0xadc1('0x0'));var logger=require('../../config/logger')(_0xadc1('0x1'));var moment=require(_0xadc1('0x2'));var BPromise=require(_0xadc1('0x3'));var rp=require(_0xadc1('0x4'));var fs=require('fs');var path=require(_0xadc1('0x5'));var rimraf=require(_0xadc1('0x6'));var config=require(_0xadc1('0x7'));var attributes=require(_0xadc1('0x8'));module[_0xadc1('0x9')]=function(_0x14fd14,_0x379bce){return _0x14fd14[_0xadc1('0xa')]('MemberReport',attributes,{'tableName':_0xadc1('0xb'),'paranoid':![],'indexes':[{'name':_0xadc1('0xc'),'fields':['membername',_0xadc1('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf0a8=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./memberReport.attributes','exports','define','MemberReport','membername_interface','interface'];(function(_0x229b5c,_0x2b6d90){var _0x4121dd=function(_0x435d9b){while(--_0x435d9b){_0x229b5c['push'](_0x229b5c['shift']());}};_0x4121dd(++_0x2b6d90);}(_0xf0a8,0xb4));var _0x8f0a=function(_0x28243c,_0x5d3149){_0x28243c=_0x28243c-0x0;var _0x3f41ec=_0xf0a8[_0x28243c];return _0x3f41ec;};'use strict';var _=require(_0x8f0a('0x0'));var util=require(_0x8f0a('0x1'));var logger=require(_0x8f0a('0x2'))(_0x8f0a('0x3'));var moment=require(_0x8f0a('0x4'));var BPromise=require(_0x8f0a('0x5'));var rp=require(_0x8f0a('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8f0a('0x7'));var config=require(_0x8f0a('0x8'));var attributes=require(_0x8f0a('0x9'));module[_0x8f0a('0xa')]=function(_0x32146a,_0x3276d7){return _0x32146a[_0x8f0a('0xb')](_0x8f0a('0xc'),attributes,{'tableName':'report_member','paranoid':![],'indexes':[{'name':_0x8f0a('0xd'),'fields':['membername',_0x8f0a('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 104d783..d41ed36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9ce=['ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','MemberReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','MemberReport','findAll','options','raw','where','attributes','limit','include','map','model','GetMemberReport','create','body','CreateMemberReport','catch','UpdateMemberReport','update','lodash','util','moment','bluebird','randomstring'];(function(_0x516b8e,_0x1620ca){var _0x8863da=function(_0x27c5ea){while(--_0x27c5ea){_0x516b8e['push'](_0x516b8e['shift']());}};_0x8863da(++_0x1620ca);}(_0xd9ce,0xeb));var _0xed9c=function(_0x342782,_0x4236e0){_0x342782=_0x342782-0x0;var _0xadb50c=_0xd9ce[_0x342782];return _0xadb50c;};'use strict';var _=require(_0xed9c('0x0'));var util=require(_0xed9c('0x1'));var moment=require(_0xed9c('0x2'));var BPromise=require(_0xed9c('0x3'));var rs=require(_0xed9c('0x4'));var fs=require('fs');var Redis=require(_0xed9c('0x5'));var db=require(_0xed9c('0x6'))['db'];var utils=require(_0xed9c('0x7'));var logger=require('../../config/logger')(_0xed9c('0x8'));var config=require(_0xed9c('0x9'));var jayson=require(_0xed9c('0xa'));var client=jayson[_0xed9c('0xb')][_0xed9c('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x434898,_0x58c757,_0x2ad757){return new BPromise(function(_0xde32e4,_0x5a312d){return client['request'](_0x434898,_0x2ad757)[_0xed9c('0xd')](function(_0x5ed0ab){logger[_0xed9c('0xe')](_0xed9c('0xf'),_0x58c757,_0xed9c('0x10'));logger[_0xed9c('0x11')]('MemberReport,\x20%s,\x20%s,\x20%s',_0x58c757,_0xed9c('0x10'),JSON[_0xed9c('0x12')](_0x5ed0ab));if(_0x5ed0ab[_0xed9c('0x13')]){if(_0x5ed0ab[_0xed9c('0x13')][_0xed9c('0x14')]===0x1f4){logger['error']('MemberReport,\x20%s,\x20%s',_0x58c757,_0x5ed0ab[_0xed9c('0x13')][_0xed9c('0x15')]);return _0x5a312d(_0x5ed0ab[_0xed9c('0x13')][_0xed9c('0x15')]);}logger['error']('MemberReport,\x20%s,\x20%s',_0x58c757,_0x5ed0ab[_0xed9c('0x13')]['message']);return _0xde32e4(_0x5ed0ab[_0xed9c('0x13')][_0xed9c('0x15')]);}else{logger[_0xed9c('0xe')](_0xed9c('0xf'),_0x58c757,_0xed9c('0x10'));_0xde32e4(_0x5ed0ab[_0xed9c('0x16')][_0xed9c('0x15')]);}})['catch'](function(_0x244d5e){logger[_0xed9c('0x13')](_0xed9c('0xf'),_0x58c757,_0x244d5e);_0x5a312d(_0x244d5e);});});}exports['GetMemberReport']=function(_0x485029){var _0x7eea82=this;return new Promise(function(_0x48b7b4,_0x421834){return db[_0xed9c('0x17')][_0xed9c('0x18')]({'raw':_0x485029[_0xed9c('0x19')]?_0x485029[_0xed9c('0x19')][_0xed9c('0x1a')]===undefined?!![]:![]:!![],'where':_0x485029['options']?_0x485029[_0xed9c('0x19')][_0xed9c('0x1b')]||null:null,'attributes':_0x485029[_0xed9c('0x19')]?_0x485029['options'][_0xed9c('0x1c')]||null:null,'limit':_0x485029[_0xed9c('0x19')]?_0x485029[_0xed9c('0x19')][_0xed9c('0x1d')]||null:null,'include':_0x485029['options']?_0x485029['options'][_0xed9c('0x1e')]?_[_0xed9c('0x1f')](_0x485029[_0xed9c('0x19')][_0xed9c('0x1e')],function(_0x1fd75d){return{'model':db[_0x1fd75d[_0xed9c('0x20')]],'as':_0x1fd75d['as'],'attributes':_0x1fd75d['attributes'],'include':_0x1fd75d[_0xed9c('0x1e')]?_['map'](_0x1fd75d['include'],function(_0x495055){return{'model':db[_0x495055[_0xed9c('0x20')]],'as':_0x495055['as'],'attributes':_0x495055[_0xed9c('0x1c')],'include':_0x495055[_0xed9c('0x1e')]?_[_0xed9c('0x1f')](_0x495055['include'],function(_0x2a1fac){return{'model':db[_0x2a1fac[_0xed9c('0x20')]],'as':_0x2a1fac['as'],'attributes':_0x2a1fac[_0xed9c('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xe3be1){logger[_0xed9c('0xe')](_0xed9c('0x21'),_0x485029);logger[_0xed9c('0x11')]('GetMemberReport',_0x485029,JSON[_0xed9c('0x12')](_0xe3be1));_0x48b7b4(_0xe3be1);})['catch'](function(_0x42c134){logger[_0xed9c('0x13')](_0xed9c('0x21'),_0x42c134[_0xed9c('0x15')],_0x485029);_0x421834(_0x7eea82[_0xed9c('0x13')](0x1f4,_0x42c134['message']));});});};exports['CreateMemberReport']=function(_0x241372){var _0x9a2584=this;return new Promise(function(_0x13d128,_0xf6ddf4){return db['MemberReport'][_0xed9c('0x22')](_0x241372[_0xed9c('0x23')],{'raw':_0x241372[_0xed9c('0x19')]?_0x241372[_0xed9c('0x19')][_0xed9c('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x2226a2){logger['info'](_0xed9c('0x24'),_0x241372);logger[_0xed9c('0x11')](_0xed9c('0x24'),_0x241372,JSON[_0xed9c('0x12')](_0x2226a2));_0x13d128(_0x2226a2);})[_0xed9c('0x25')](function(_0x3ee465){logger[_0xed9c('0x13')](_0xed9c('0x24'),_0x3ee465[_0xed9c('0x15')],_0x241372);_0xf6ddf4(_0x9a2584[_0xed9c('0x13')](0x1f4,_0x3ee465[_0xed9c('0x15')]));});});};exports[_0xed9c('0x26')]=function(_0x281ca0){var _0x4655ba=this;return new Promise(function(_0x436b86,_0x3e986e){return db['MemberReport'][_0xed9c('0x27')](_0x281ca0[_0xed9c('0x23')],{'raw':_0x281ca0[_0xed9c('0x19')]?_0x281ca0[_0xed9c('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x281ca0[_0xed9c('0x19')]?_0x281ca0[_0xed9c('0x19')][_0xed9c('0x1b')]||null:null,'attributes':_0x281ca0[_0xed9c('0x19')]?_0x281ca0[_0xed9c('0x19')][_0xed9c('0x1c')]||null:null,'limit':_0x281ca0[_0xed9c('0x19')]?_0x281ca0[_0xed9c('0x19')][_0xed9c('0x1d')]||null:null})[_0xed9c('0xd')](function(_0x50e6f0){logger['info'](_0xed9c('0x26'),_0x281ca0);logger[_0xed9c('0x11')](_0xed9c('0x26'),_0x281ca0,JSON['stringify'](_0x50e6f0));_0x436b86(_0x50e6f0);})[_0xed9c('0x25')](function(_0x4dc992){logger['error'](_0xed9c('0x26'),_0x4dc992['message'],_0x281ca0);_0x3e986e(_0x4655ba['error'](0x1f4,_0x4dc992[_0xed9c('0x15')]));});});};
\ No newline at end of file
+var _0x6657=['MemberReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','GetMemberReport','MemberReport','options','raw','where','attributes','limit','include','map','model','stringify','CreateMemberReport','create','body','UpdateMemberReport','update','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','MemberReport,\x20%s,\x20%s','debug'];(function(_0x3ee8d1,_0x54afbd){var _0x5e6660=function(_0x3414a5){while(--_0x3414a5){_0x3ee8d1['push'](_0x3ee8d1['shift']());}};_0x5e6660(++_0x54afbd);}(_0x6657,0x17f));var _0x7665=function(_0x58dd0b,_0x39de95){_0x58dd0b=_0x58dd0b-0x0;var _0x30fd30=_0x6657[_0x58dd0b];return _0x30fd30;};'use strict';var _=require(_0x7665('0x0'));var util=require('util');var moment=require(_0x7665('0x1'));var BPromise=require(_0x7665('0x2'));var rs=require(_0x7665('0x3'));var fs=require('fs');var Redis=require(_0x7665('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x7665('0x5'));var logger=require(_0x7665('0x6'))(_0x7665('0x7'));var config=require(_0x7665('0x8'));var jayson=require(_0x7665('0x9'));var client=jayson[_0x7665('0xa')][_0x7665('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3387d8,_0x4c0b5c,_0x31da89){return new BPromise(function(_0x464ec1,_0x24e6aa){return client[_0x7665('0xc')](_0x3387d8,_0x31da89)[_0x7665('0xd')](function(_0x3f3a65){logger[_0x7665('0xe')](_0x7665('0xf'),_0x4c0b5c,'request\x20sent');logger[_0x7665('0x10')](_0x7665('0x11'),_0x4c0b5c,_0x7665('0x12'),JSON['stringify'](_0x3f3a65));if(_0x3f3a65[_0x7665('0x13')]){if(_0x3f3a65['error'][_0x7665('0x14')]===0x1f4){logger[_0x7665('0x13')]('MemberReport,\x20%s,\x20%s',_0x4c0b5c,_0x3f3a65[_0x7665('0x13')][_0x7665('0x15')]);return _0x24e6aa(_0x3f3a65['error'][_0x7665('0x15')]);}logger[_0x7665('0x13')]('MemberReport,\x20%s,\x20%s',_0x4c0b5c,_0x3f3a65[_0x7665('0x13')][_0x7665('0x15')]);return _0x464ec1(_0x3f3a65[_0x7665('0x13')][_0x7665('0x15')]);}else{logger[_0x7665('0xe')](_0x7665('0xf'),_0x4c0b5c,_0x7665('0x12'));_0x464ec1(_0x3f3a65[_0x7665('0x16')][_0x7665('0x15')]);}})[_0x7665('0x17')](function(_0x365469){logger[_0x7665('0x13')](_0x7665('0xf'),_0x4c0b5c,_0x365469);_0x24e6aa(_0x365469);});});}exports[_0x7665('0x18')]=function(_0x2dab51){var _0xa3f5d4=this;return new Promise(function(_0x522944,_0x30dedb){return db[_0x7665('0x19')]['findAll']({'raw':_0x2dab51[_0x7665('0x1a')]?_0x2dab51[_0x7665('0x1a')][_0x7665('0x1b')]===undefined?!![]:![]:!![],'where':_0x2dab51[_0x7665('0x1a')]?_0x2dab51['options'][_0x7665('0x1c')]||null:null,'attributes':_0x2dab51[_0x7665('0x1a')]?_0x2dab51[_0x7665('0x1a')][_0x7665('0x1d')]||null:null,'limit':_0x2dab51[_0x7665('0x1a')]?_0x2dab51['options'][_0x7665('0x1e')]||null:null,'include':_0x2dab51['options']?_0x2dab51[_0x7665('0x1a')][_0x7665('0x1f')]?_['map'](_0x2dab51['options'][_0x7665('0x1f')],function(_0x2b60dc){return{'model':db[_0x2b60dc['model']],'as':_0x2b60dc['as'],'attributes':_0x2b60dc[_0x7665('0x1d')],'include':_0x2b60dc[_0x7665('0x1f')]?_[_0x7665('0x20')](_0x2b60dc['include'],function(_0x5b5be6){return{'model':db[_0x5b5be6['model']],'as':_0x5b5be6['as'],'attributes':_0x5b5be6['attributes'],'include':_0x5b5be6[_0x7665('0x1f')]?_[_0x7665('0x20')](_0x5b5be6[_0x7665('0x1f')],function(_0x5809e9){return{'model':db[_0x5809e9[_0x7665('0x21')]],'as':_0x5809e9['as'],'attributes':_0x5809e9[_0x7665('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x56b6e8){logger[_0x7665('0xe')](_0x7665('0x18'),_0x2dab51);logger[_0x7665('0x10')](_0x7665('0x18'),_0x2dab51,JSON[_0x7665('0x22')](_0x56b6e8));_0x522944(_0x56b6e8);})[_0x7665('0x17')](function(_0x5891fb){logger[_0x7665('0x13')]('GetMemberReport',_0x5891fb['message'],_0x2dab51);_0x30dedb(_0xa3f5d4[_0x7665('0x13')](0x1f4,_0x5891fb[_0x7665('0x15')]));});});};exports[_0x7665('0x23')]=function(_0x34476b){var _0x264b6e=this;return new Promise(function(_0x2837da,_0x39c7a5){return db[_0x7665('0x19')][_0x7665('0x24')](_0x34476b[_0x7665('0x25')],{'raw':_0x34476b[_0x7665('0x1a')]?_0x34476b[_0x7665('0x1a')][_0x7665('0x1b')]===undefined?!![]:![]:!![]})[_0x7665('0xd')](function(_0x42ec7f){logger[_0x7665('0xe')](_0x7665('0x23'),_0x34476b);logger[_0x7665('0x10')](_0x7665('0x23'),_0x34476b,JSON['stringify'](_0x42ec7f));_0x2837da(_0x42ec7f);})[_0x7665('0x17')](function(_0xd93b75){logger[_0x7665('0x13')](_0x7665('0x23'),_0xd93b75[_0x7665('0x15')],_0x34476b);_0x39c7a5(_0x264b6e[_0x7665('0x13')](0x1f4,_0xd93b75['message']));});});};exports[_0x7665('0x26')]=function(_0x2d93b6){var _0x16043b=this;return new Promise(function(_0x1899ad,_0x35abcb){return db['MemberReport'][_0x7665('0x27')](_0x2d93b6['body'],{'raw':_0x2d93b6[_0x7665('0x1a')]?_0x2d93b6['options'][_0x7665('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2d93b6[_0x7665('0x1a')]?_0x2d93b6[_0x7665('0x1a')][_0x7665('0x1c')]||null:null,'attributes':_0x2d93b6[_0x7665('0x1a')]?_0x2d93b6[_0x7665('0x1a')]['attributes']||null:null,'limit':_0x2d93b6[_0x7665('0x1a')]?_0x2d93b6[_0x7665('0x1a')][_0x7665('0x1e')]||null:null})[_0x7665('0xd')](function(_0x4d195d){logger[_0x7665('0xe')](_0x7665('0x26'),_0x2d93b6);logger[_0x7665('0x10')](_0x7665('0x26'),_0x2d93b6,JSON[_0x7665('0x22')](_0x4d195d));_0x1899ad(_0x4d195d);})['catch'](function(_0x16d694){logger[_0x7665('0x13')](_0x7665('0x26'),_0x16d694[_0x7665('0x15')],_0x2d93b6);_0x35abcb(_0x16043b[_0x7665('0x13')](0x1f4,_0x16d694[_0x7665('0x15')]));});});};
\ No newline at end of file
index c75ee2f..dbbf73f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f27=['../../components/auth/service','./migration.controller','get','index','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x1f27,0x13d));var _0x71f2=function(_0x1f00f0,_0x1ff4bc){_0x1f00f0=_0x1f00f0-0x0;var _0x1be3f7=_0x1f27[_0x1f00f0];return _0x1be3f7;};'use strict';var multer=require(_0x71f2('0x0'));var util=require(_0x71f2('0x1'));var path=require(_0x71f2('0x2'));var timeout=require(_0x71f2('0x3'));var express=require(_0x71f2('0x4'));var router=express[_0x71f2('0x5')]();var fs_extra=require(_0x71f2('0x6'));var auth=require(_0x71f2('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x71f2('0x8'));router[_0x71f2('0x9')]('/',controller[_0x71f2('0xa')]);module[_0x71f2('0xb')]=router;
\ No newline at end of file
+var _0x31bb=['connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./migration.controller','get','index','exports','util','path'];(function(_0x383f33,_0x290ffa){var _0x357573=function(_0xe4c4d6){while(--_0xe4c4d6){_0x383f33['push'](_0x383f33['shift']());}};_0x357573(++_0x290ffa);}(_0x31bb,0x1e2));var _0xb31b=function(_0x3b2896,_0xb8c5f7){_0x3b2896=_0x3b2896-0x0;var _0x1e8650=_0x31bb[_0x3b2896];return _0x1e8650;};'use strict';var multer=require('multer');var util=require(_0xb31b('0x0'));var path=require(_0xb31b('0x1'));var timeout=require(_0xb31b('0x2'));var express=require(_0xb31b('0x3'));var router=express[_0xb31b('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xb31b('0x5'));var config=require(_0xb31b('0x6'));var controller=require(_0xb31b('0x7'));router[_0xb31b('0x8')]('/',controller[_0xb31b('0x9')]);module[_0xb31b('0xa')]=router;
\ No newline at end of file
index 915705f..9a645ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1e9=['STRING','version','exports'];(function(_0x66b26e,_0x5adc00){var _0x5d5cb7=function(_0x587695){while(--_0x587695){_0x66b26e['push'](_0x66b26e['shift']());}};_0x5d5cb7(++_0x5adc00);}(_0xd1e9,0x1f4));var _0x9d1e=function(_0x4cbd35,_0x3fd034){_0x4cbd35=_0x4cbd35-0x0;var _0x41961e=_0xd1e9[_0x4cbd35];return _0x41961e;};'use strict';var Sequelize=require('sequelize');module[_0x9d1e('0x0')]={'version':{'type':Sequelize[_0x9d1e('0x1')],'unique':_0x9d1e('0x2')}};
\ No newline at end of file
+var _0x023c=['STRING','version','sequelize','exports'];(function(_0x154666,_0x2144c9){var _0x1d0e84=function(_0x521bfd){while(--_0x521bfd){_0x154666['push'](_0x154666['shift']());}};_0x1d0e84(++_0x2144c9);}(_0x023c,0x182));var _0xc023=function(_0x5e8571,_0xc46307){_0x5e8571=_0x5e8571-0x0;var _0x5e2293=_0x023c[_0x5e8571];return _0x5e2293;};'use strict';var Sequelize=require(_0xc023('0x0'));module[_0xc023('0x1')]={'version':{'type':Sequelize[_0xc023('0x2')],'unique':_0xc023('0x3')}};
\ No newline at end of file
index 16b1587..97e26fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa26=['path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','then','error','stack','name','send','index','Migration','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','options','includeAll','include','findAll','rows','catch','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x31a371,_0x50828e){var _0x2a5bd6=function(_0x2fb481){while(--_0x2fb481){_0x31a371['push'](_0x31a371['shift']());}};_0x2a5bd6(++_0x50828e);}(_0xfa26,0x1a9));var _0x6fa2=function(_0x1b06b4,_0x322789){_0x1b06b4=_0x1b06b4-0x0;var _0x3ad5a8=_0xfa26[_0x1b06b4];return _0x3ad5a8;};'use strict';var emlformat=require(_0x6fa2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6fa2('0x1'));var jsonpatch=require(_0x6fa2('0x2'));var rp=require(_0x6fa2('0x3'));var moment=require(_0x6fa2('0x4'));var BPromise=require(_0x6fa2('0x5'));var Mustache=require(_0x6fa2('0x6'));var util=require('util');var path=require(_0x6fa2('0x7'));var sox=require(_0x6fa2('0x8'));var csv=require(_0x6fa2('0x9'));var ejs=require(_0x6fa2('0xa'));var fs=require('fs');var fs_extra=require(_0x6fa2('0xb'));var _=require(_0x6fa2('0xc'));var squel=require(_0x6fa2('0xd'));var crypto=require(_0x6fa2('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x6fa2('0xf'));var toCsv=require(_0x6fa2('0x9'));var querystring=require('querystring');var Papa=require(_0x6fa2('0x10'));var Redis=require(_0x6fa2('0x11'));var authService=require(_0x6fa2('0x12'));var qs=require(_0x6fa2('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x6fa2('0x14'))('api');var utils=require(_0x6fa2('0x15'));var config=require(_0x6fa2('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x582cb2,_0x3dfcc9){_0x3dfcc9=_0x3dfcc9||0xcc;return function(_0x3fa780){if(_0x3fa780){return _0x582cb2[_0x6fa2('0x17')](_0x3dfcc9);}return _0x582cb2[_0x6fa2('0x18')](_0x3dfcc9)[_0x6fa2('0x19')]();};}function respondWithResult(_0x604567,_0x21f029){_0x21f029=_0x21f029||0xc8;return function(_0x5b3b4f){if(_0x5b3b4f){return _0x604567['status'](_0x21f029)[_0x6fa2('0x1a')](_0x5b3b4f);}};}function respondWithFilteredResult(_0x42be79,_0x5f0843){return function(_0x19b0b7){if(_0x19b0b7){var _0x595996=typeof _0x5f0843[_0x6fa2('0x1b')]===_0x6fa2('0x1c')&&typeof _0x5f0843[_0x6fa2('0x1d')]===_0x6fa2('0x1c');var _0x3212f4=_0x19b0b7['count'];var _0x58c392=_0x595996?0x0:_0x5f0843['offset'];var _0x371201=_0x595996?_0x19b0b7[_0x6fa2('0x1e')]:_0x5f0843[_0x6fa2('0x1b')]+_0x5f0843[_0x6fa2('0x1d')];var _0x1829d7;if(_0x371201>=_0x3212f4){_0x371201=_0x3212f4;_0x1829d7=0xc8;}else{_0x1829d7=0xce;}_0x42be79[_0x6fa2('0x18')](_0x1829d7);return _0x42be79[_0x6fa2('0x1f')](_0x6fa2('0x20'),_0x58c392+'-'+_0x371201+'/'+_0x3212f4)['json'](_0x19b0b7);}return null;};}function patchUpdates(_0x2bd3f4){return function(_0x5f5875){try{jsonpatch[_0x6fa2('0x21')](_0x5f5875,_0x2bd3f4,!![]);}catch(_0x4759a6){return BPromise['reject'](_0x4759a6);}return _0x5f5875[_0x6fa2('0x22')]();};}function saveUpdates(_0x2a1af4,_0xb2297){return function(_0x13bb4e){if(_0x13bb4e){return _0x13bb4e[_0x6fa2('0x23')](_0x2a1af4)['then'](function(_0x30ff5b){return _0x30ff5b;});}return null;};}function removeEntity(_0x220b04,_0x3be6e6){return function(_0x375b71){if(_0x375b71){return _0x375b71[_0x6fa2('0x24')]()[_0x6fa2('0x25')](function(){_0x220b04[_0x6fa2('0x18')](0xcc)[_0x6fa2('0x19')]();});}};}function handleEntityNotFound(_0x30315b,_0xa660fc){return function(_0x451db7){if(!_0x451db7){_0x30315b[_0x6fa2('0x17')](0x194);}return _0x451db7;};}function handleError(_0x49c5be,_0x2b8a05){_0x2b8a05=_0x2b8a05||0x1f4;return function(_0x43a656){logger[_0x6fa2('0x26')](_0x43a656[_0x6fa2('0x27')]);if(_0x43a656[_0x6fa2('0x28')]){delete _0x43a656[_0x6fa2('0x28')];}_0x49c5be['status'](_0x2b8a05)[_0x6fa2('0x29')](_0x43a656);};}exports[_0x6fa2('0x2a')]=function(_0x2385c3,_0x28c6ae){var _0xae62e3={},_0x458bfa={},_0x325a4c={'count':0x0,'rows':[]};var _0x9cc8f0=_['map'](db[_0x6fa2('0x2b')][_0x6fa2('0x2c')],function(_0xd480bd){return{'name':_0xd480bd[_0x6fa2('0x2d')],'type':_0xd480bd[_0x6fa2('0x2e')][_0x6fa2('0x2f')]};});_0x458bfa['model']=_['map'](_0x9cc8f0,_0x6fa2('0x28'));_0x458bfa[_0x6fa2('0x30')]=_[_0x6fa2('0x31')](_0x2385c3[_0x6fa2('0x30')]);_0x458bfa[_0x6fa2('0x32')]=_[_0x6fa2('0x33')](_0x458bfa[_0x6fa2('0x34')],_0x458bfa[_0x6fa2('0x30')]);_0xae62e3['attributes']=_[_0x6fa2('0x33')](_0x458bfa['model'],qs[_0x6fa2('0x35')](_0x2385c3[_0x6fa2('0x30')][_0x6fa2('0x35')]));_0xae62e3[_0x6fa2('0x36')]=_0xae62e3['attributes'][_0x6fa2('0x37')]?_0xae62e3[_0x6fa2('0x36')]:_0x458bfa[_0x6fa2('0x34')];if(!_0x2385c3[_0x6fa2('0x30')][_0x6fa2('0x38')](_0x6fa2('0x39'))){_0xae62e3[_0x6fa2('0x1d')]=qs[_0x6fa2('0x1d')](_0x2385c3[_0x6fa2('0x30')]['limit']);_0xae62e3[_0x6fa2('0x1b')]=qs['offset'](_0x2385c3[_0x6fa2('0x30')][_0x6fa2('0x1b')]);}_0xae62e3[_0x6fa2('0x3a')]=qs[_0x6fa2('0x3b')](_0x2385c3[_0x6fa2('0x30')][_0x6fa2('0x3b')]);_0xae62e3[_0x6fa2('0x3c')]=qs[_0x6fa2('0x32')](_[_0x6fa2('0x3d')](_0x2385c3['query'],_0x458bfa[_0x6fa2('0x32')]),_0x9cc8f0);if(_0x2385c3[_0x6fa2('0x30')][_0x6fa2('0x3e')]){_0xae62e3[_0x6fa2('0x3c')]=_[_0x6fa2('0x3f')](_0xae62e3[_0x6fa2('0x3c')],{'$or':_[_0x6fa2('0x40')](_0x9cc8f0,function(_0xda536d){if(_0xda536d['type']!==_0x6fa2('0x41')){var _0x27bbfa={};_0x27bbfa[_0xda536d['name']]={'$like':'%'+_0x2385c3[_0x6fa2('0x30')][_0x6fa2('0x3e')]+'%'};return _0x27bbfa;}})});}_0xae62e3=_[_0x6fa2('0x3f')]({},_0xae62e3,_0x2385c3[_0x6fa2('0x42')]);var _0x29dee1={'where':_0xae62e3['where']};return db[_0x6fa2('0x2b')]['count'](_0x29dee1)[_0x6fa2('0x25')](function(_0x3d4114){_0x325a4c[_0x6fa2('0x1e')]=_0x3d4114;if(_0x2385c3[_0x6fa2('0x30')][_0x6fa2('0x43')]){_0xae62e3[_0x6fa2('0x44')]=[{'all':!![]}];}return db[_0x6fa2('0x2b')][_0x6fa2('0x45')](_0xae62e3);})[_0x6fa2('0x25')](function(_0x582199){_0x325a4c[_0x6fa2('0x46')]=_0x582199;return _0x325a4c;})[_0x6fa2('0x25')](respondWithFilteredResult(_0x28c6ae,_0xae62e3))[_0x6fa2('0x47')](handleError(_0x28c6ae,null));};
\ No newline at end of file
+var _0x5c30=['lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','offset','undefined','limit','count','json','apply','reject','save','update','destroy','then','end','stack','name','send','index','map','Migration','rawAttributes','fieldName','type','model','keys','filters','intersection','attributes','fields','length','query','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','findAll','catch','eml-format','rimraf','moment','mustache','util','path','to-csv','fs-extra'];(function(_0x4795ea,_0x3584e3){var _0x5e6de2=function(_0x597db9){while(--_0x597db9){_0x4795ea['push'](_0x4795ea['shift']());}};_0x5e6de2(++_0x3584e3);}(_0x5c30,0xb5));var _0x05c3=function(_0xb9f7cf,_0x2b7c4f){_0xb9f7cf=_0xb9f7cf-0x0;var _0x18953a=_0x5c30[_0xb9f7cf];return _0x18953a;};'use strict';var emlformat=require(_0x05c3('0x0'));var rimraf=require(_0x05c3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x05c3('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x05c3('0x3'));var util=require(_0x05c3('0x4'));var path=require(_0x05c3('0x5'));var sox=require('sox');var csv=require(_0x05c3('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x05c3('0x7'));var _=require(_0x05c3('0x8'));var squel=require(_0x05c3('0x9'));var crypto=require(_0x05c3('0xa'));var jsforce=require(_0x05c3('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x05c3('0x6'));var querystring=require(_0x05c3('0xc'));var Papa=require('papaparse');var Redis=require(_0x05c3('0xd'));var authService=require(_0x05c3('0xe'));var qs=require(_0x05c3('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x05c3('0x10'));var logger=require(_0x05c3('0x11'))('api');var utils=require(_0x05c3('0x12'));var config=require(_0x05c3('0x13'));var licenseUtil=require(_0x05c3('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x8fd3e,_0x5c31d7){_0x5c31d7=_0x5c31d7||0xcc;return function(_0xf9ac25){if(_0xf9ac25){return _0x8fd3e[_0x05c3('0x15')](_0x5c31d7);}return _0x8fd3e[_0x05c3('0x16')](_0x5c31d7)['end']();};}function respondWithResult(_0x4c7bad,_0x414c79){_0x414c79=_0x414c79||0xc8;return function(_0xd1fed6){if(_0xd1fed6){return _0x4c7bad['status'](_0x414c79)['json'](_0xd1fed6);}};}function respondWithFilteredResult(_0x1433b3,_0x545e1f){return function(_0x661b28){if(_0x661b28){var _0x603e6a=typeof _0x545e1f[_0x05c3('0x17')]===_0x05c3('0x18')&&typeof _0x545e1f[_0x05c3('0x19')]===_0x05c3('0x18');var _0x3b1e2f=_0x661b28[_0x05c3('0x1a')];var _0x3db74b=_0x603e6a?0x0:_0x545e1f[_0x05c3('0x17')];var _0x3d61ba=_0x603e6a?_0x661b28['count']:_0x545e1f[_0x05c3('0x17')]+_0x545e1f[_0x05c3('0x19')];var _0x3bbd9f;if(_0x3d61ba>=_0x3b1e2f){_0x3d61ba=_0x3b1e2f;_0x3bbd9f=0xc8;}else{_0x3bbd9f=0xce;}_0x1433b3['status'](_0x3bbd9f);return _0x1433b3['set']('Content-Range',_0x3db74b+'-'+_0x3d61ba+'/'+_0x3b1e2f)[_0x05c3('0x1b')](_0x661b28);}return null;};}function patchUpdates(_0x3dde01){return function(_0x2afe35){try{jsonpatch[_0x05c3('0x1c')](_0x2afe35,_0x3dde01,!![]);}catch(_0xe7aaaa){return BPromise[_0x05c3('0x1d')](_0xe7aaaa);}return _0x2afe35[_0x05c3('0x1e')]();};}function saveUpdates(_0x45e30e,_0x4a3813){return function(_0x27a6b6){if(_0x27a6b6){return _0x27a6b6[_0x05c3('0x1f')](_0x45e30e)['then'](function(_0x41009e){return _0x41009e;});}return null;};}function removeEntity(_0x19e8d4,_0x46125e){return function(_0x531a93){if(_0x531a93){return _0x531a93[_0x05c3('0x20')]()[_0x05c3('0x21')](function(){_0x19e8d4['status'](0xcc)[_0x05c3('0x22')]();});}};}function handleEntityNotFound(_0x328df1,_0x2c80dd){return function(_0x3196cf){if(!_0x3196cf){_0x328df1[_0x05c3('0x15')](0x194);}return _0x3196cf;};}function handleError(_0x1b5d93,_0x4271b7){_0x4271b7=_0x4271b7||0x1f4;return function(_0x2fa27b){logger['error'](_0x2fa27b[_0x05c3('0x23')]);if(_0x2fa27b[_0x05c3('0x24')]){delete _0x2fa27b[_0x05c3('0x24')];}_0x1b5d93[_0x05c3('0x16')](_0x4271b7)[_0x05c3('0x25')](_0x2fa27b);};}exports[_0x05c3('0x26')]=function(_0x43136f,_0x4d7868){var _0x4cfbae={},_0x2dff3d={},_0x46f88f={'count':0x0,'rows':[]};var _0x2aa646=_[_0x05c3('0x27')](db[_0x05c3('0x28')][_0x05c3('0x29')],function(_0x36c440){return{'name':_0x36c440[_0x05c3('0x2a')],'type':_0x36c440[_0x05c3('0x2b')]['key']};});_0x2dff3d[_0x05c3('0x2c')]=_[_0x05c3('0x27')](_0x2aa646,_0x05c3('0x24'));_0x2dff3d['query']=_[_0x05c3('0x2d')](_0x43136f['query']);_0x2dff3d[_0x05c3('0x2e')]=_[_0x05c3('0x2f')](_0x2dff3d['model'],_0x2dff3d['query']);_0x4cfbae[_0x05c3('0x30')]=_[_0x05c3('0x2f')](_0x2dff3d[_0x05c3('0x2c')],qs[_0x05c3('0x31')](_0x43136f['query']['fields']));_0x4cfbae[_0x05c3('0x30')]=_0x4cfbae[_0x05c3('0x30')][_0x05c3('0x32')]?_0x4cfbae['attributes']:_0x2dff3d['model'];if(!_0x43136f[_0x05c3('0x33')][_0x05c3('0x34')](_0x05c3('0x35'))){_0x4cfbae[_0x05c3('0x19')]=qs[_0x05c3('0x19')](_0x43136f[_0x05c3('0x33')][_0x05c3('0x19')]);_0x4cfbae[_0x05c3('0x17')]=qs['offset'](_0x43136f['query'][_0x05c3('0x17')]);}_0x4cfbae['order']=qs[_0x05c3('0x36')](_0x43136f[_0x05c3('0x33')][_0x05c3('0x36')]);_0x4cfbae[_0x05c3('0x37')]=qs[_0x05c3('0x2e')](_[_0x05c3('0x38')](_0x43136f['query'],_0x2dff3d['filters']),_0x2aa646);if(_0x43136f[_0x05c3('0x33')][_0x05c3('0x39')]){_0x4cfbae[_0x05c3('0x37')]=_[_0x05c3('0x3a')](_0x4cfbae[_0x05c3('0x37')],{'$or':_['map'](_0x2aa646,function(_0x14663d){if(_0x14663d[_0x05c3('0x2b')]!==_0x05c3('0x3b')){var _0x4e6950={};_0x4e6950[_0x14663d[_0x05c3('0x24')]]={'$like':'%'+_0x43136f[_0x05c3('0x33')][_0x05c3('0x39')]+'%'};return _0x4e6950;}})});}_0x4cfbae=_['merge']({},_0x4cfbae,_0x43136f['options']);var _0x749d20={'where':_0x4cfbae[_0x05c3('0x37')]};return db[_0x05c3('0x28')][_0x05c3('0x1a')](_0x749d20)[_0x05c3('0x21')](function(_0x36e928){_0x46f88f['count']=_0x36e928;if(_0x43136f[_0x05c3('0x33')][_0x05c3('0x3c')]){_0x4cfbae['include']=[{'all':!![]}];}return db[_0x05c3('0x28')][_0x05c3('0x3d')](_0x4cfbae);})[_0x05c3('0x21')](function(_0x5c987f){_0x46f88f['rows']=_0x5c987f;return _0x46f88f;})[_0x05c3('0x21')](respondWithFilteredResult(_0x4d7868,_0x4cfbae))[_0x05c3('0x3e')](handleError(_0x4d7868,null));};
\ No newline at end of file
index a623931..80c66b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dd6=['Migration','migrations','lodash','util','api','moment','request-promise','path','rimraf','exports','define'];(function(_0xc78832,_0x27a347){var _0x21753a=function(_0x2efa96){while(--_0x2efa96){_0xc78832['push'](_0xc78832['shift']());}};_0x21753a(++_0x27a347);}(_0x3dd6,0x199));var _0x63dd=function(_0x23be51,_0xc02a1b){_0x23be51=_0x23be51-0x0;var _0x47a26d=_0x3dd6[_0x23be51];return _0x47a26d;};'use strict';var _=require(_0x63dd('0x0'));var util=require(_0x63dd('0x1'));var logger=require('../../config/logger')(_0x63dd('0x2'));var moment=require(_0x63dd('0x3'));var BPromise=require('bluebird');var rp=require(_0x63dd('0x4'));var fs=require('fs');var path=require(_0x63dd('0x5'));var rimraf=require(_0x63dd('0x6'));var config=require('../../config/environment');var attributes=require('./migration.attributes');module[_0x63dd('0x7')]=function(_0x47ddfa,_0x15cf8b){return _0x47ddfa[_0x63dd('0x8')](_0x63dd('0x9'),attributes,{'tableName':_0x63dd('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc0d1=['../../config/environment','./migration.attributes','define','Migration','migrations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x136c8f,_0xf7a48f){var _0x24eb1f=function(_0x2a4026){while(--_0x2a4026){_0x136c8f['push'](_0x136c8f['shift']());}};_0x24eb1f(++_0xf7a48f);}(_0xc0d1,0x1d3));var _0x1c0d=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0xc0d1[_0x2be8c2];return _0x97f531;};'use strict';var _=require(_0x1c0d('0x0'));var util=require(_0x1c0d('0x1'));var logger=require(_0x1c0d('0x2'))(_0x1c0d('0x3'));var moment=require(_0x1c0d('0x4'));var BPromise=require(_0x1c0d('0x5'));var rp=require(_0x1c0d('0x6'));var fs=require('fs');var path=require(_0x1c0d('0x7'));var rimraf=require(_0x1c0d('0x8'));var config=require(_0x1c0d('0x9'));var attributes=require(_0x1c0d('0xa'));module['exports']=function(_0xaabe8f,_0x4b3382){return _0xaabe8f[_0x1c0d('0xb')](_0x1c0d('0xc'),attributes,{'tableName':_0x1c0d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f4ac963..92794a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21a3=['jayson/promise','client','http','request','then','info','Migration,\x20%s,\x20%s','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment'];(function(_0x3864cf,_0xd9f955){var _0x62500b=function(_0x7f1784){while(--_0x7f1784){_0x3864cf['push'](_0x3864cf['shift']());}};_0x62500b(++_0xd9f955);}(_0x21a3,0x66));var _0x321a=function(_0x19babd,_0x1d4ef7){_0x19babd=_0x19babd-0x0;var _0x314eaf=_0x21a3[_0x19babd];return _0x314eaf;};'use strict';var _=require(_0x321a('0x0'));var util=require('util');var moment=require(_0x321a('0x1'));var BPromise=require(_0x321a('0x2'));var rs=require(_0x321a('0x3'));var fs=require('fs');var Redis=require(_0x321a('0x4'));var db=require(_0x321a('0x5'))['db'];var utils=require(_0x321a('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x321a('0x7'));var jayson=require(_0x321a('0x8'));var client=jayson[_0x321a('0x9')][_0x321a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5f3b81,_0x388901,_0x24a04c){return new BPromise(function(_0x10c1d3,_0xdfd6b8){return client[_0x321a('0xb')](_0x5f3b81,_0x24a04c)[_0x321a('0xc')](function(_0x2c52dc){logger[_0x321a('0xd')](_0x321a('0xe'),_0x388901,_0x321a('0xf'));logger[_0x321a('0x10')](_0x321a('0x11'),_0x388901,'request\x20sent',JSON[_0x321a('0x12')](_0x2c52dc));if(_0x2c52dc[_0x321a('0x13')]){if(_0x2c52dc['error']['code']===0x1f4){logger[_0x321a('0x13')]('Migration,\x20%s,\x20%s',_0x388901,_0x2c52dc[_0x321a('0x13')][_0x321a('0x14')]);return _0xdfd6b8(_0x2c52dc['error']['message']);}logger[_0x321a('0x13')](_0x321a('0xe'),_0x388901,_0x2c52dc[_0x321a('0x13')][_0x321a('0x14')]);return _0x10c1d3(_0x2c52dc[_0x321a('0x13')][_0x321a('0x14')]);}else{logger[_0x321a('0xd')](_0x321a('0xe'),_0x388901,'request\x20sent');_0x10c1d3(_0x2c52dc[_0x321a('0x15')][_0x321a('0x14')]);}})['catch'](function(_0x45ceb2){logger[_0x321a('0x13')](_0x321a('0xe'),_0x388901,_0x45ceb2);_0xdfd6b8(_0x45ceb2);});});}
\ No newline at end of file
+var _0xe28e=['../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','request\x20sent','debug','stringify','error','code','Migration,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x38d3bd,_0x49f837){var _0x19022c=function(_0x30341f){while(--_0x30341f){_0x38d3bd['push'](_0x38d3bd['shift']());}};_0x19022c(++_0x49f837);}(_0xe28e,0x1ba));var _0xee28=function(_0x56d700,_0x47df7a){_0x56d700=_0x56d700-0x0;var _0xdfde29=_0xe28e[_0x56d700];return _0xdfde29;};'use strict';var _=require(_0xee28('0x0'));var util=require(_0xee28('0x1'));var moment=require(_0xee28('0x2'));var BPromise=require(_0xee28('0x3'));var rs=require(_0xee28('0x4'));var fs=require('fs');var Redis=require(_0xee28('0x5'));var db=require(_0xee28('0x6'))['db'];var utils=require(_0xee28('0x7'));var logger=require(_0xee28('0x8'))(_0xee28('0x9'));var config=require(_0xee28('0xa'));var jayson=require(_0xee28('0xb'));var client=jayson[_0xee28('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x39b337,_0x30224a,_0x3f9bd9){return new BPromise(function(_0x66d0b6,_0x156aad){return client[_0xee28('0xd')](_0x39b337,_0x3f9bd9)[_0xee28('0xe')](function(_0x5d7562){logger['info']('Migration,\x20%s,\x20%s',_0x30224a,_0xee28('0xf'));logger[_0xee28('0x10')]('Migration,\x20%s,\x20%s,\x20%s',_0x30224a,_0xee28('0xf'),JSON[_0xee28('0x11')](_0x5d7562));if(_0x5d7562['error']){if(_0x5d7562[_0xee28('0x12')][_0xee28('0x13')]===0x1f4){logger[_0xee28('0x12')](_0xee28('0x14'),_0x30224a,_0x5d7562[_0xee28('0x12')][_0xee28('0x15')]);return _0x156aad(_0x5d7562[_0xee28('0x12')]['message']);}logger[_0xee28('0x12')](_0xee28('0x14'),_0x30224a,_0x5d7562[_0xee28('0x12')][_0xee28('0x15')]);return _0x66d0b6(_0x5d7562[_0xee28('0x12')]['message']);}else{logger[_0xee28('0x16')](_0xee28('0x14'),_0x30224a,_0xee28('0xf'));_0x66d0b6(_0x5d7562[_0xee28('0x17')][_0xee28('0x15')]);}})[_0xee28('0x18')](function(_0x4c0eb9){logger[_0xee28('0x12')]('Migration,\x20%s,\x20%s',_0x30224a,_0x4c0eb9);_0x156aad(_0x4c0eb9);});});}
\ No newline at end of file
index 6a593b0..96575d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4529=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','create','update','delete','destroy','exports','multer'];(function(_0x2a9fc8,_0x2e2cdf){var _0x113e9e=function(_0x28a64f){while(--_0x28a64f){_0x2a9fc8['push'](_0x2a9fc8['shift']());}};_0x113e9e(++_0x2e2cdf);}(_0x4529,0x109));var _0x9452=function(_0x9faa01,_0x1f2e59){_0x9faa01=_0x9faa01-0x0;var _0x4b4cef=_0x4529[_0x9faa01];return _0x4b4cef;};'use strict';var multer=require(_0x9452('0x0'));var util=require('util');var path=require(_0x9452('0x1'));var timeout=require(_0x9452('0x2'));var express=require(_0x9452('0x3'));var router=express[_0x9452('0x4')]();var fs_extra=require(_0x9452('0x5'));var auth=require(_0x9452('0x6'));var interaction=require(_0x9452('0x7'));var config=require(_0x9452('0x8'));var controller=require('./network.controller');router['get']('/',auth[_0x9452('0x9')](),controller[_0x9452('0xa')]);router[_0x9452('0xb')](_0x9452('0xc'),auth[_0x9452('0x9')](),controller[_0x9452('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x9452('0xe')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x9452('0xf')]);router[_0x9452('0x10')](_0x9452('0xc'),auth[_0x9452('0x9')](),controller[_0x9452('0x11')]);module[_0x9452('0x12')]=router;
\ No newline at end of file
+var _0xac41=['get','isAuthenticated','index','/:id','show','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./network.controller'];(function(_0x5853ae,_0x107a03){var _0x1a4a53=function(_0x310797){while(--_0x310797){_0x5853ae['push'](_0x5853ae['shift']());}};_0x1a4a53(++_0x107a03);}(_0xac41,0xdd));var _0x1ac4=function(_0x141598,_0x3bbe65){_0x141598=_0x141598-0x0;var _0x34175d=_0xac41[_0x141598];return _0x34175d;};'use strict';var multer=require(_0x1ac4('0x0'));var util=require(_0x1ac4('0x1'));var path=require(_0x1ac4('0x2'));var timeout=require(_0x1ac4('0x3'));var express=require(_0x1ac4('0x4'));var router=express[_0x1ac4('0x5')]();var fs_extra=require(_0x1ac4('0x6'));var auth=require(_0x1ac4('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x1ac4('0x8'));var controller=require(_0x1ac4('0x9'));router[_0x1ac4('0xa')]('/',auth[_0x1ac4('0xb')](),controller[_0x1ac4('0xc')]);router[_0x1ac4('0xa')](_0x1ac4('0xd'),auth[_0x1ac4('0xb')](),controller[_0x1ac4('0xe')]);router[_0x1ac4('0xf')]('/',auth[_0x1ac4('0xb')](),controller[_0x1ac4('0x10')]);router[_0x1ac4('0x11')](_0x1ac4('0xd'),auth[_0x1ac4('0xb')](),controller[_0x1ac4('0x12')]);router['delete'](_0x1ac4('0xd'),auth['isAuthenticated'](),controller[_0x1ac4('0x13')]);module[_0x1ac4('0x14')]=router;
\ No newline at end of file
index 4f15555..8b105cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2df4=['externip','stun','turn','STRING','sequelize','ENUM'];(function(_0x3394b4,_0x4d8898){var _0x2acad2=function(_0x290be2){while(--_0x290be2){_0x3394b4['push'](_0x3394b4['shift']());}};_0x2acad2(++_0x4d8898);}(_0x2df4,0xd0));var _0x42df=function(_0x2c2954,_0x3cadf4){_0x2c2954=_0x2c2954-0x0;var _0x1e834e=_0x2df4[_0x2c2954];return _0x1e834e;};'use strict';var Sequelize=require(_0x42df('0x0'));module['exports']={'type':{'type':Sequelize[_0x42df('0x1')]('localnet',_0x42df('0x2'),_0x42df('0x3'),_0x42df('0x4'))},'value':{'type':Sequelize[_0x42df('0x5')]},'username':{'type':Sequelize[_0x42df('0x5')]},'password':{'type':Sequelize[_0x42df('0x5')]}};
\ No newline at end of file
+var _0x0135=['ENUM','externip','stun','STRING','sequelize','exports'];(function(_0x119d13,_0x263cd2){var _0x333c35=function(_0x422c6e){while(--_0x422c6e){_0x119d13['push'](_0x119d13['shift']());}};_0x333c35(++_0x263cd2);}(_0x0135,0xd0));var _0x5013=function(_0x470607,_0xc7427e){_0x470607=_0x470607-0x0;var _0x3f404c=_0x0135[_0x470607];return _0x3f404c;};'use strict';var Sequelize=require(_0x5013('0x0'));module[_0x5013('0x1')]={'type':{'type':Sequelize[_0x5013('0x2')]('localnet',_0x5013('0x3'),_0x5013('0x4'),'turn')},'value':{'type':Sequelize[_0x5013('0x5')]},'username':{'type':Sequelize[_0x5013('0x5')]},'password':{'type':Sequelize[_0x5013('0x5')]}};
\ No newline at end of file
index bd544ae..9ed849d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a1d=['then','info','Network,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','sendStatus','status','end','json','offset','limit','undefined','count','set','reject','save','update','stack','name','send','index','map','Network','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','findAll','rows','params','length','includeAll','include','find','create','body','toUpperCase','root','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','res_stun_monitor.so','TURN','readFileSync','join','server/files/templates/turn_multiple.ejs','server/files/templates/network.ejs','format','toLowerCase','Reload','chan_sip.so','sequelize','STUN','/etc/asterisk/turn_xcally.conf','/etc/asterisk/sip_xcally_%s.conf','destroy','zip-dir','request-promise','moment','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','jayson/promise'];(function(_0x3f596d,_0x5e2db7){var _0x32c212=function(_0x336db0){while(--_0x336db0){_0x3f596d['push'](_0x3f596d['shift']());}};_0x32c212(++_0x5e2db7);}(_0x2a1d,0x113));var _0xd2a1=function(_0x4b0d2e,_0x58638b){_0x4b0d2e=_0x4b0d2e-0x0;var _0x1960ab=_0x2a1d[_0x4b0d2e];return _0x1960ab;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xd2a1('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd2a1('0x1'));var moment=require(_0xd2a1('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xd2a1('0x3'));var util=require('util');var path=require(_0xd2a1('0x4'));var sox=require('sox');var csv=require(_0xd2a1('0x5'));var ejs=require(_0xd2a1('0x6'));var fs=require('fs');var fs_extra=require(_0xd2a1('0x7'));var _=require(_0xd2a1('0x8'));var squel=require(_0xd2a1('0x9'));var crypto=require(_0xd2a1('0xa'));var jsforce=require(_0xd2a1('0xb'));var deskjs=require(_0xd2a1('0xc'));var toCsv=require(_0xd2a1('0x5'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd2a1('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xd2a1('0xe'));var hardwareService=require(_0xd2a1('0xf'));var logger=require(_0xd2a1('0x10'))(_0xd2a1('0x11'));var utils=require(_0xd2a1('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xd2a1('0x13'));var db=require(_0xd2a1('0x14'))['db'];var jayson=require(_0xd2a1('0x15'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3dcf82,_0x22dd5e,_0x4dd6bf,_0xb84f04){return new BPromise(function(_0x2d094c,_0xbf88fe){var _0x47ad4e=_0xb84f04||client;return _0x47ad4e['request'](_0x3dcf82,_0x4dd6bf)[_0xd2a1('0x16')](function(_0x58cc46){logger[_0xd2a1('0x17')](_0xd2a1('0x18'),_0x22dd5e,_0xd2a1('0x19'));logger[_0xd2a1('0x1a')]('Network,\x20%s,\x20%s,\x20%s',_0x22dd5e,_0xd2a1('0x19'),JSON[_0xd2a1('0x1b')](_0x58cc46));if(_0x58cc46['error']){if(_0x58cc46[_0xd2a1('0x1c')]['code']===0x1f4){logger[_0xd2a1('0x1c')](_0xd2a1('0x18'),_0x22dd5e,_0x58cc46[_0xd2a1('0x1c')][_0xd2a1('0x1d')]);return _0xbf88fe(_0x58cc46[_0xd2a1('0x1c')][_0xd2a1('0x1d')]);}logger[_0xd2a1('0x1c')](_0xd2a1('0x18'),_0x22dd5e,_0x58cc46[_0xd2a1('0x1c')][_0xd2a1('0x1d')]);return _0x2d094c(_0x58cc46[_0xd2a1('0x1c')]['message']);}else{logger['info']('Network,\x20%s,\x20%s',_0x22dd5e,'request\x20sent');_0x2d094c(_0x58cc46['result'][_0xd2a1('0x1d')]);}})[_0xd2a1('0x1e')](function(_0x2a99ae){logger['error'](_0xd2a1('0x18'),_0x22dd5e,_0x2a99ae);_0xbf88fe(_0x2a99ae);});});}function respondWithStatusCode(_0x3a5839,_0x439451){_0x439451=_0x439451||0xcc;return function(_0x299a9c){if(_0x299a9c){return _0x3a5839[_0xd2a1('0x1f')](_0x439451);}return _0x3a5839[_0xd2a1('0x20')](_0x439451)[_0xd2a1('0x21')]();};}function respondWithResult(_0xb1be8a,_0x448a50){_0x448a50=_0x448a50||0xc8;return function(_0x50fe22){if(_0x50fe22){return _0xb1be8a[_0xd2a1('0x20')](_0x448a50)[_0xd2a1('0x22')](_0x50fe22);}};}function respondWithFilteredResult(_0x724b8b,_0x2d732c){return function(_0x3e2b47){if(_0x3e2b47){var _0x570ed7=typeof _0x2d732c[_0xd2a1('0x23')]==='undefined'&&typeof _0x2d732c[_0xd2a1('0x24')]===_0xd2a1('0x25');var _0xb86c0d=_0x3e2b47[_0xd2a1('0x26')];var _0x293683=_0x570ed7?0x0:_0x2d732c[_0xd2a1('0x23')];var _0x1f9b79=_0x570ed7?_0x3e2b47[_0xd2a1('0x26')]:_0x2d732c['offset']+_0x2d732c[_0xd2a1('0x24')];var _0x2fc0e3;if(_0x1f9b79>=_0xb86c0d){_0x1f9b79=_0xb86c0d;_0x2fc0e3=0xc8;}else{_0x2fc0e3=0xce;}_0x724b8b[_0xd2a1('0x20')](_0x2fc0e3);return _0x724b8b[_0xd2a1('0x27')]('Content-Range',_0x293683+'-'+_0x1f9b79+'/'+_0xb86c0d)[_0xd2a1('0x22')](_0x3e2b47);}return null;};}function patchUpdates(_0x4d2e3f){return function(_0x296df0){try{jsonpatch['apply'](_0x296df0,_0x4d2e3f,!![]);}catch(_0x2ad819){return BPromise[_0xd2a1('0x28')](_0x2ad819);}return _0x296df0[_0xd2a1('0x29')]();};}function saveUpdates(_0xfcc8c,_0x22c401){return function(_0x5c4bb1){if(_0x5c4bb1){return _0x5c4bb1[_0xd2a1('0x2a')](_0xfcc8c)[_0xd2a1('0x16')](function(_0x5eae73){return _0x5eae73;});}return null;};}function removeEntity(_0x4679b3,_0x2e2db4){return function(_0x23f450){if(_0x23f450){return _0x23f450['destroy']()[_0xd2a1('0x16')](function(){_0x4679b3[_0xd2a1('0x20')](0xcc)[_0xd2a1('0x21')]();});}};}function handleEntityNotFound(_0x54944c,_0x5f0d44){return function(_0x115a3f){if(!_0x115a3f){_0x54944c[_0xd2a1('0x1f')](0x194);}return _0x115a3f;};}function handleError(_0x348db0,_0x6a8926){_0x6a8926=_0x6a8926||0x1f4;return function(_0x5ceb43){logger[_0xd2a1('0x1c')](_0x5ceb43[_0xd2a1('0x2b')]);if(_0x5ceb43[_0xd2a1('0x2c')]){delete _0x5ceb43['name'];}_0x348db0[_0xd2a1('0x20')](_0x6a8926)[_0xd2a1('0x2d')](_0x5ceb43);};}exports[_0xd2a1('0x2e')]=function(_0x450a26,_0x3a2e62){var _0x39824d={},_0x141d2c={},_0x2c3680={'count':0x0,'rows':[]};var _0x1b992c=_[_0xd2a1('0x2f')](db[_0xd2a1('0x30')][_0xd2a1('0x31')],function(_0x2a2f2e){return{'name':_0x2a2f2e[_0xd2a1('0x32')],'type':_0x2a2f2e[_0xd2a1('0x33')][_0xd2a1('0x34')]};});_0x141d2c[_0xd2a1('0x35')]=_['map'](_0x1b992c,_0xd2a1('0x2c'));_0x141d2c[_0xd2a1('0x36')]=_[_0xd2a1('0x37')](_0x450a26[_0xd2a1('0x36')]);_0x141d2c[_0xd2a1('0x38')]=_[_0xd2a1('0x39')](_0x141d2c['model'],_0x141d2c[_0xd2a1('0x36')]);_0x39824d[_0xd2a1('0x3a')]=_[_0xd2a1('0x39')](_0x141d2c['model'],qs[_0xd2a1('0x3b')](_0x450a26[_0xd2a1('0x36')][_0xd2a1('0x3b')]));_0x39824d['attributes']=_0x39824d['attributes']['length']?_0x39824d[_0xd2a1('0x3a')]:_0x141d2c[_0xd2a1('0x35')];if(!_0x450a26['query'][_0xd2a1('0x3c')](_0xd2a1('0x3d'))){_0x39824d['limit']=qs[_0xd2a1('0x24')](_0x450a26[_0xd2a1('0x36')][_0xd2a1('0x24')]);_0x39824d[_0xd2a1('0x23')]=qs[_0xd2a1('0x23')](_0x450a26[_0xd2a1('0x36')][_0xd2a1('0x23')]);}_0x39824d['order']=qs[_0xd2a1('0x3e')](_0x450a26[_0xd2a1('0x36')][_0xd2a1('0x3e')]);_0x39824d[_0xd2a1('0x3f')]=qs[_0xd2a1('0x38')](_[_0xd2a1('0x40')](_0x450a26[_0xd2a1('0x36')],_0x141d2c[_0xd2a1('0x38')]),_0x1b992c);if(_0x450a26[_0xd2a1('0x36')][_0xd2a1('0x41')]){_0x39824d['where']=_[_0xd2a1('0x42')](_0x39824d[_0xd2a1('0x3f')],{'$or':_['map'](_0x1b992c,function(_0x2d0040){if(_0x2d0040['type']!==_0xd2a1('0x43')){var _0x5b5c1b={};_0x5b5c1b[_0x2d0040[_0xd2a1('0x2c')]]={'$like':'%'+_0x450a26[_0xd2a1('0x36')][_0xd2a1('0x41')]+'%'};return _0x5b5c1b;}})});}_0x39824d=_['merge']({},_0x39824d,_0x450a26['options']);var _0x2d6ad8={'where':_0x39824d[_0xd2a1('0x3f')]};return db[_0xd2a1('0x30')][_0xd2a1('0x26')](_0x2d6ad8)[_0xd2a1('0x16')](function(_0x3d0fec){_0x2c3680[_0xd2a1('0x26')]=_0x3d0fec;if(_0x450a26['query']['includeAll']){_0x39824d['include']=[{'all':!![]}];}return db[_0xd2a1('0x30')][_0xd2a1('0x44')](_0x39824d);})[_0xd2a1('0x16')](function(_0x1aa413){_0x2c3680[_0xd2a1('0x45')]=_0x1aa413;return _0x2c3680;})['then'](respondWithFilteredResult(_0x3a2e62,_0x39824d))[_0xd2a1('0x1e')](handleError(_0x3a2e62,null));};exports['show']=function(_0x4aec76,_0x3a1b59){var _0x22c08c={'raw':!![],'where':{'id':_0x4aec76[_0xd2a1('0x46')]['id']}},_0x567f37={};_0x567f37[_0xd2a1('0x35')]=_[_0xd2a1('0x37')](db['Network'][_0xd2a1('0x31')]);_0x567f37[_0xd2a1('0x36')]=_[_0xd2a1('0x37')](_0x4aec76[_0xd2a1('0x36')]);_0x567f37[_0xd2a1('0x38')]=_['intersection'](_0x567f37[_0xd2a1('0x35')],_0x567f37[_0xd2a1('0x36')]);_0x22c08c[_0xd2a1('0x3a')]=_['intersection'](_0x567f37[_0xd2a1('0x35')],qs[_0xd2a1('0x3b')](_0x4aec76[_0xd2a1('0x36')][_0xd2a1('0x3b')]));_0x22c08c[_0xd2a1('0x3a')]=_0x22c08c['attributes'][_0xd2a1('0x47')]?_0x22c08c['attributes']:_0x567f37[_0xd2a1('0x35')];if(_0x4aec76[_0xd2a1('0x36')][_0xd2a1('0x48')]){_0x22c08c[_0xd2a1('0x49')]=[{'all':!![]}];}_0x22c08c=_['merge']({},_0x22c08c,_0x4aec76['options']);return db['Network'][_0xd2a1('0x4a')](_0x22c08c)[_0xd2a1('0x16')](handleEntityNotFound(_0x3a1b59,null))[_0xd2a1('0x16')](respondWithResult(_0x3a1b59,null))['catch'](handleError(_0x3a1b59,null));};exports[_0xd2a1('0x4b')]=function(_0x184689,_0x18a02a,_0x1d8105){var _0x84dfc1;return db['sequelize']['transaction'](function(_0x336fe7){return db['Network'][_0xd2a1('0x4b')](_0x184689['body'],{'raw':!![]})[_0xd2a1('0x16')](function(_0x5d76a0){_0x84dfc1=_0x5d76a0;return db[_0xd2a1('0x30')][_0xd2a1('0x44')]({'where':{'type':_0x184689[_0xd2a1('0x4c')][_0xd2a1('0x33')]},'raw':!![]});})[_0xd2a1('0x16')](function(_0x175143){if(_0x84dfc1[_0xd2a1('0x33')][_0xd2a1('0x4d')]()=='STUN'){var _0x5470da=fs['readFileSync'](path['join'](config[_0xd2a1('0x4e')],_0xd2a1('0x4f')),_0xd2a1('0x50'));var _0x154ba9=ejs[_0xd2a1('0x51')](_0x5470da,{'networks':_0x175143||[]});fs[_0xd2a1('0x52')](_0xd2a1('0x53'),_0x154ba9);return respondWithRpcPromise('Reload','create',{'module':_0xd2a1('0x54')});}else if(_0x84dfc1[_0xd2a1('0x33')][_0xd2a1('0x4d')]()==_0xd2a1('0x55')){var _0x11a547=fs[_0xd2a1('0x56')](path[_0xd2a1('0x57')](config[_0xd2a1('0x4e')],_0xd2a1('0x58')),_0xd2a1('0x50'));var _0x3c16b0=ejs[_0xd2a1('0x51')](_0x11a547,{'networks':_0x175143||[]});fs[_0xd2a1('0x52')]('/etc/asterisk/turn_xcally.conf',_0x3c16b0);return respondWithRpcPromise('Reload',_0xd2a1('0x4b'),{'module':_0xd2a1('0x54')});}else{var _0xf00a70=fs['readFileSync'](path['join'](config[_0xd2a1('0x4e')],_0xd2a1('0x59')),_0xd2a1('0x50'));var _0x4041a7=ejs[_0xd2a1('0x51')](_0xf00a70,{'networks':_0x175143||[]});fs[_0xd2a1('0x52')](util[_0xd2a1('0x5a')]('/etc/asterisk/sip_xcally_%s.conf',_0x184689[_0xd2a1('0x4c')][_0xd2a1('0x33')][_0xd2a1('0x5b')]()),_0x4041a7);return respondWithRpcPromise(_0xd2a1('0x5c'),_0xd2a1('0x4b'),{'module':_0xd2a1('0x5d')});}return null;})[_0xd2a1('0x16')](function(){return _0x84dfc1;});})['then'](respondWithResult(_0x18a02a,0xc9))['catch'](handleError(_0x18a02a,null));};exports[_0xd2a1('0x2a')]=function(_0x3dc528,_0x4ad8ad,_0x538e2a){var _0x5671a9;return db[_0xd2a1('0x5e')]['transaction'](function(_0x47247e){return db[_0xd2a1('0x30')]['find']({'where':{'id':_0x3dc528[_0xd2a1('0x46')]['id']}})[_0xd2a1('0x16')](handleEntityNotFound(_0x4ad8ad,null))[_0xd2a1('0x16')](saveUpdates(_0x3dc528['body'],null))[_0xd2a1('0x16')](function(_0x2ba0c4){if(_0x2ba0c4){_0x5671a9=_0x2ba0c4;return db['Network'][_0xd2a1('0x44')]({'where':{'type':_0x5671a9['type']},'raw':!![]});}return null;})[_0xd2a1('0x16')](function(_0x26bb0b){if(_0x5671a9[_0xd2a1('0x33')][_0xd2a1('0x4d')]()==_0xd2a1('0x5f')){var _0x3667f4=fs[_0xd2a1('0x56')](path[_0xd2a1('0x57')](config[_0xd2a1('0x4e')],'server/files/templates/stun_multiple.ejs'),_0xd2a1('0x50'));var _0x44ceb1=ejs[_0xd2a1('0x51')](_0x3667f4,{'networks':_0x26bb0b||[]});fs[_0xd2a1('0x52')](_0xd2a1('0x53'),_0x44ceb1);return respondWithRpcPromise(_0xd2a1('0x5c'),'update',{'module':_0xd2a1('0x54')});}else if(_0x5671a9[_0xd2a1('0x33')][_0xd2a1('0x4d')]()=='TURN'){var _0x55ad3c=fs[_0xd2a1('0x56')](path[_0xd2a1('0x57')](config[_0xd2a1('0x4e')],'server/files/templates/turn_multiple.ejs'),_0xd2a1('0x50'));var _0x4cc7ad=ejs['render'](_0x55ad3c,{'networks':_0x26bb0b||[]});fs[_0xd2a1('0x52')](_0xd2a1('0x60'),_0x4cc7ad);return respondWithRpcPromise(_0xd2a1('0x5c'),_0xd2a1('0x2a'),{'module':_0xd2a1('0x54')});}else{var _0x3dd74c=fs['readFileSync'](path[_0xd2a1('0x57')](config[_0xd2a1('0x4e')],_0xd2a1('0x59')),_0xd2a1('0x50'));var _0x583c8f=ejs[_0xd2a1('0x51')](_0x3dd74c,{'networks':_0x26bb0b||[]});fs[_0xd2a1('0x52')](util[_0xd2a1('0x5a')](_0xd2a1('0x61'),_0x3dc528[_0xd2a1('0x4c')][_0xd2a1('0x33')][_0xd2a1('0x5b')]()),_0x583c8f);return respondWithRpcPromise(_0xd2a1('0x5c'),_0xd2a1('0x2a'),{'module':_0xd2a1('0x5d')});}return null;})[_0xd2a1('0x16')](function(_0x424255){if(_0x424255){return _0x5671a9;}return null;});})[_0xd2a1('0x16')](respondWithResult(_0x4ad8ad,null))[_0xd2a1('0x1e')](handleError(_0x4ad8ad,null));};exports['destroy']=function(_0x100952,_0x5d07a4,_0x595f14){var _0x44864a;return db[_0xd2a1('0x30')][_0xd2a1('0x4a')]({'where':{'id':_0x100952[_0xd2a1('0x46')]['id']}})[_0xd2a1('0x16')](function(_0x5609bc){_0x44864a=_0x5609bc;return _0x5609bc;})['then'](handleEntityNotFound(_0x5d07a4,null))[_0xd2a1('0x16')](removeEntity(_0x5d07a4,null))[_0xd2a1('0x16')](function(){if(_0x44864a){return db[_0xd2a1('0x30')][_0xd2a1('0x44')]({'where':{'type':_0x44864a['type']},'raw':!![]});}})[_0xd2a1('0x16')](function(_0x282a63){if(_0x44864a[_0xd2a1('0x33')][_0xd2a1('0x4d')]()==_0xd2a1('0x5f')){var _0x53f901=fs['readFileSync'](path[_0xd2a1('0x57')](config[_0xd2a1('0x4e')],_0xd2a1('0x4f')),_0xd2a1('0x50'));var _0x24d86e=ejs[_0xd2a1('0x51')](_0x53f901,{'networks':_0x282a63||[]});fs[_0xd2a1('0x52')](_0xd2a1('0x53'),_0x24d86e);return respondWithRpcPromise(_0xd2a1('0x5c'),_0xd2a1('0x62'),{'module':'res_stun_monitor.so'});}else if(_0x44864a[_0xd2a1('0x33')][_0xd2a1('0x4d')]()=='TURN'){var _0x5a5a5e=fs[_0xd2a1('0x56')](path[_0xd2a1('0x57')](config['root'],_0xd2a1('0x58')),_0xd2a1('0x50'));var _0x15b954=ejs[_0xd2a1('0x51')](_0x5a5a5e,{'networks':_0x282a63||[]});fs['writeFileSync'](_0xd2a1('0x60'),_0x15b954);return respondWithRpcPromise(_0xd2a1('0x5c'),_0xd2a1('0x62'),{'module':_0xd2a1('0x54')});}else{var _0x15d731=fs[_0xd2a1('0x56')](path[_0xd2a1('0x57')](config[_0xd2a1('0x4e')],_0xd2a1('0x59')),_0xd2a1('0x50'));var _0xbe0089=ejs[_0xd2a1('0x51')](_0x15d731,{'networks':_0x282a63||[]});fs[_0xd2a1('0x52')](util[_0xd2a1('0x5a')](_0xd2a1('0x61'),_0x100952[_0xd2a1('0x4c')]['type'][_0xd2a1('0x5b')]()),_0xbe0089);return respondWithRpcPromise(_0xd2a1('0x5c'),_0xd2a1('0x62'),{'module':_0xd2a1('0x5d')});}return null;})[_0xd2a1('0x1e')](handleError(_0x5d07a4,null));};
\ No newline at end of file
+var _0xaa48=['render','res_stun_monitor.so','toUpperCase','TURN','utf8','writeFileSync','/etc/asterisk/turn_xcally.conf','Reload','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','STUN','root','/etc/asterisk/stun_xcally.conf','server/files/templates/turn_multiple.ejs','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../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','then','info','Network,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','status','end','json','offset','limit','count','Content-Range','apply','save','update','destroy','sendStatus','stack','name','send','map','rawAttributes','fieldName','key','keys','query','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','includeAll','Network','findAll','params','length','include','find','create','sequelize','transaction','body','type','readFileSync','join','server/files/templates/stun_multiple.ejs'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0xaa48,0x15a));var _0x8aa4=function(_0x4ed91c,_0x187465){_0x4ed91c=_0x4ed91c-0x0;var _0x1da6ef=_0xaa48[_0x4ed91c];return _0x1da6ef;};'use strict';var emlformat=require(_0x8aa4('0x0'));var rimraf=require(_0x8aa4('0x1'));var zipdir=require(_0x8aa4('0x2'));var jsonpatch=require(_0x8aa4('0x3'));var rp=require(_0x8aa4('0x4'));var moment=require(_0x8aa4('0x5'));var BPromise=require(_0x8aa4('0x6'));var Mustache=require(_0x8aa4('0x7'));var util=require(_0x8aa4('0x8'));var path=require(_0x8aa4('0x9'));var sox=require(_0x8aa4('0xa'));var csv=require(_0x8aa4('0xb'));var ejs=require(_0x8aa4('0xc'));var fs=require('fs');var fs_extra=require(_0x8aa4('0xd'));var _=require(_0x8aa4('0xe'));var squel=require(_0x8aa4('0xf'));var crypto=require(_0x8aa4('0x10'));var jsforce=require(_0x8aa4('0x11'));var deskjs=require(_0x8aa4('0x12'));var toCsv=require('to-csv');var querystring=require(_0x8aa4('0x13'));var Papa=require(_0x8aa4('0x14'));var Redis=require('ioredis');var authService=require(_0x8aa4('0x15'));var qs=require(_0x8aa4('0x16'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8aa4('0x17'));var logger=require(_0x8aa4('0x18'))(_0x8aa4('0x19'));var utils=require(_0x8aa4('0x1a'));var config=require(_0x8aa4('0x1b'));var licenseUtil=require(_0x8aa4('0x1c'));var db=require(_0x8aa4('0x1d'))['db'];var jayson=require(_0x8aa4('0x1e'));var client=jayson[_0x8aa4('0x1f')][_0x8aa4('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x569c43,_0x5951ce,_0x3143f7,_0x455a80){return new BPromise(function(_0xb8ce80,_0x38f35f){var _0x7b909c=_0x455a80||client;return _0x7b909c[_0x8aa4('0x21')](_0x569c43,_0x3143f7)[_0x8aa4('0x22')](function(_0x356df1){logger[_0x8aa4('0x23')](_0x8aa4('0x24'),_0x5951ce,'request\x20sent');logger['debug']('Network,\x20%s,\x20%s,\x20%s',_0x5951ce,_0x8aa4('0x25'),JSON[_0x8aa4('0x26')](_0x356df1));if(_0x356df1[_0x8aa4('0x27')]){if(_0x356df1[_0x8aa4('0x27')]['code']===0x1f4){logger[_0x8aa4('0x27')](_0x8aa4('0x24'),_0x5951ce,_0x356df1['error'][_0x8aa4('0x28')]);return _0x38f35f(_0x356df1['error']['message']);}logger[_0x8aa4('0x27')]('Network,\x20%s,\x20%s',_0x5951ce,_0x356df1[_0x8aa4('0x27')][_0x8aa4('0x28')]);return _0xb8ce80(_0x356df1['error'][_0x8aa4('0x28')]);}else{logger[_0x8aa4('0x23')]('Network,\x20%s,\x20%s',_0x5951ce,_0x8aa4('0x25'));_0xb8ce80(_0x356df1[_0x8aa4('0x29')][_0x8aa4('0x28')]);}})[_0x8aa4('0x2a')](function(_0x16259a){logger['error']('Network,\x20%s,\x20%s',_0x5951ce,_0x16259a);_0x38f35f(_0x16259a);});});}function respondWithStatusCode(_0x4c429f,_0x4984f9){_0x4984f9=_0x4984f9||0xcc;return function(_0x32466f){if(_0x32466f){return _0x4c429f['sendStatus'](_0x4984f9);}return _0x4c429f[_0x8aa4('0x2b')](_0x4984f9)[_0x8aa4('0x2c')]();};}function respondWithResult(_0x6b4bd,_0x387434){_0x387434=_0x387434||0xc8;return function(_0x5b8165){if(_0x5b8165){return _0x6b4bd['status'](_0x387434)[_0x8aa4('0x2d')](_0x5b8165);}};}function respondWithFilteredResult(_0x5a070c,_0x286601){return function(_0x4145ed){if(_0x4145ed){var _0x556f5c=typeof _0x286601[_0x8aa4('0x2e')]==='undefined'&&typeof _0x286601[_0x8aa4('0x2f')]==='undefined';var _0x46024e=_0x4145ed[_0x8aa4('0x30')];var _0x41b1e0=_0x556f5c?0x0:_0x286601[_0x8aa4('0x2e')];var _0x169ca3=_0x556f5c?_0x4145ed['count']:_0x286601['offset']+_0x286601['limit'];var _0x2aec56;if(_0x169ca3>=_0x46024e){_0x169ca3=_0x46024e;_0x2aec56=0xc8;}else{_0x2aec56=0xce;}_0x5a070c[_0x8aa4('0x2b')](_0x2aec56);return _0x5a070c['set'](_0x8aa4('0x31'),_0x41b1e0+'-'+_0x169ca3+'/'+_0x46024e)[_0x8aa4('0x2d')](_0x4145ed);}return null;};}function patchUpdates(_0x3e4595){return function(_0x3633d1){try{jsonpatch[_0x8aa4('0x32')](_0x3633d1,_0x3e4595,!![]);}catch(_0x1d6e19){return BPromise['reject'](_0x1d6e19);}return _0x3633d1[_0x8aa4('0x33')]();};}function saveUpdates(_0x599191,_0x4f8bb9){return function(_0x22da7c){if(_0x22da7c){return _0x22da7c[_0x8aa4('0x34')](_0x599191)[_0x8aa4('0x22')](function(_0x5cb97c){return _0x5cb97c;});}return null;};}function removeEntity(_0x27f90c,_0x481800){return function(_0x342938){if(_0x342938){return _0x342938[_0x8aa4('0x35')]()[_0x8aa4('0x22')](function(){_0x27f90c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5ab8a3,_0x541cd9){return function(_0x3eceb8){if(!_0x3eceb8){_0x5ab8a3[_0x8aa4('0x36')](0x194);}return _0x3eceb8;};}function handleError(_0x328732,_0x10d821){_0x10d821=_0x10d821||0x1f4;return function(_0x4e3eb0){logger['error'](_0x4e3eb0[_0x8aa4('0x37')]);if(_0x4e3eb0[_0x8aa4('0x38')]){delete _0x4e3eb0[_0x8aa4('0x38')];}_0x328732[_0x8aa4('0x2b')](_0x10d821)[_0x8aa4('0x39')](_0x4e3eb0);};}exports['index']=function(_0x5b7024,_0x157ae6){var _0x157bfb={},_0x2b579a={},_0x4d9630={'count':0x0,'rows':[]};var _0x132414=_[_0x8aa4('0x3a')](db['Network'][_0x8aa4('0x3b')],function(_0x28c0a1){return{'name':_0x28c0a1[_0x8aa4('0x3c')],'type':_0x28c0a1['type'][_0x8aa4('0x3d')]};});_0x2b579a['model']=_['map'](_0x132414,_0x8aa4('0x38'));_0x2b579a['query']=_[_0x8aa4('0x3e')](_0x5b7024[_0x8aa4('0x3f')]);_0x2b579a['filters']=_[_0x8aa4('0x40')](_0x2b579a[_0x8aa4('0x41')],_0x2b579a[_0x8aa4('0x3f')]);_0x157bfb[_0x8aa4('0x42')]=_['intersection'](_0x2b579a[_0x8aa4('0x41')],qs[_0x8aa4('0x43')](_0x5b7024[_0x8aa4('0x3f')]['fields']));_0x157bfb[_0x8aa4('0x42')]=_0x157bfb[_0x8aa4('0x42')]['length']?_0x157bfb[_0x8aa4('0x42')]:_0x2b579a['model'];if(!_0x5b7024[_0x8aa4('0x3f')][_0x8aa4('0x44')](_0x8aa4('0x45'))){_0x157bfb[_0x8aa4('0x2f')]=qs[_0x8aa4('0x2f')](_0x5b7024[_0x8aa4('0x3f')][_0x8aa4('0x2f')]);_0x157bfb[_0x8aa4('0x2e')]=qs[_0x8aa4('0x2e')](_0x5b7024[_0x8aa4('0x3f')][_0x8aa4('0x2e')]);}_0x157bfb[_0x8aa4('0x46')]=qs[_0x8aa4('0x47')](_0x5b7024['query'][_0x8aa4('0x47')]);_0x157bfb[_0x8aa4('0x48')]=qs[_0x8aa4('0x49')](_[_0x8aa4('0x4a')](_0x5b7024[_0x8aa4('0x3f')],_0x2b579a[_0x8aa4('0x49')]),_0x132414);if(_0x5b7024[_0x8aa4('0x3f')]['filter']){_0x157bfb[_0x8aa4('0x48')]=_[_0x8aa4('0x4b')](_0x157bfb[_0x8aa4('0x48')],{'$or':_['map'](_0x132414,function(_0x53ef35){if(_0x53ef35['type']!==_0x8aa4('0x4c')){var _0x556e26={};_0x556e26[_0x53ef35[_0x8aa4('0x38')]]={'$like':'%'+_0x5b7024[_0x8aa4('0x3f')][_0x8aa4('0x4d')]+'%'};return _0x556e26;}})});}_0x157bfb=_[_0x8aa4('0x4b')]({},_0x157bfb,_0x5b7024[_0x8aa4('0x4e')]);var _0xdd6440={'where':_0x157bfb[_0x8aa4('0x48')]};return db['Network'][_0x8aa4('0x30')](_0xdd6440)[_0x8aa4('0x22')](function(_0x1503c9){_0x4d9630[_0x8aa4('0x30')]=_0x1503c9;if(_0x5b7024[_0x8aa4('0x3f')][_0x8aa4('0x4f')]){_0x157bfb['include']=[{'all':!![]}];}return db[_0x8aa4('0x50')][_0x8aa4('0x51')](_0x157bfb);})['then'](function(_0x436ad7){_0x4d9630['rows']=_0x436ad7;return _0x4d9630;})[_0x8aa4('0x22')](respondWithFilteredResult(_0x157ae6,_0x157bfb))[_0x8aa4('0x2a')](handleError(_0x157ae6,null));};exports['show']=function(_0x38abd4,_0x370725){var _0x4d193b={'raw':!![],'where':{'id':_0x38abd4[_0x8aa4('0x52')]['id']}},_0xc6557e={};_0xc6557e['model']=_['keys'](db[_0x8aa4('0x50')][_0x8aa4('0x3b')]);_0xc6557e[_0x8aa4('0x3f')]=_[_0x8aa4('0x3e')](_0x38abd4['query']);_0xc6557e[_0x8aa4('0x49')]=_['intersection'](_0xc6557e['model'],_0xc6557e[_0x8aa4('0x3f')]);_0x4d193b[_0x8aa4('0x42')]=_['intersection'](_0xc6557e[_0x8aa4('0x41')],qs[_0x8aa4('0x43')](_0x38abd4['query'][_0x8aa4('0x43')]));_0x4d193b[_0x8aa4('0x42')]=_0x4d193b[_0x8aa4('0x42')][_0x8aa4('0x53')]?_0x4d193b['attributes']:_0xc6557e['model'];if(_0x38abd4[_0x8aa4('0x3f')][_0x8aa4('0x4f')]){_0x4d193b[_0x8aa4('0x54')]=[{'all':!![]}];}_0x4d193b=_[_0x8aa4('0x4b')]({},_0x4d193b,_0x38abd4[_0x8aa4('0x4e')]);return db[_0x8aa4('0x50')][_0x8aa4('0x55')](_0x4d193b)[_0x8aa4('0x22')](handleEntityNotFound(_0x370725,null))[_0x8aa4('0x22')](respondWithResult(_0x370725,null))['catch'](handleError(_0x370725,null));};exports[_0x8aa4('0x56')]=function(_0x466b7d,_0x256b72,_0x5bea3b){var _0x3dbd08;return db[_0x8aa4('0x57')][_0x8aa4('0x58')](function(_0x5b0f26){return db['Network'][_0x8aa4('0x56')](_0x466b7d[_0x8aa4('0x59')],{'raw':!![]})['then'](function(_0x3d1ef7){_0x3dbd08=_0x3d1ef7;return db[_0x8aa4('0x50')][_0x8aa4('0x51')]({'where':{'type':_0x466b7d[_0x8aa4('0x59')][_0x8aa4('0x5a')]},'raw':!![]});})[_0x8aa4('0x22')](function(_0x12b2b1){if(_0x3dbd08['type']['toUpperCase']()=='STUN'){var _0x23530c=fs[_0x8aa4('0x5b')](path[_0x8aa4('0x5c')](config['root'],_0x8aa4('0x5d')),'utf8');var _0x30c97b=ejs[_0x8aa4('0x5e')](_0x23530c,{'networks':_0x12b2b1||[]});fs['writeFileSync']('/etc/asterisk/stun_xcally.conf',_0x30c97b);return respondWithRpcPromise('Reload',_0x8aa4('0x56'),{'module':_0x8aa4('0x5f')});}else if(_0x3dbd08['type'][_0x8aa4('0x60')]()==_0x8aa4('0x61')){var _0x36dc50=fs['readFileSync'](path[_0x8aa4('0x5c')](config['root'],'server/files/templates/turn_multiple.ejs'),_0x8aa4('0x62'));var _0x1992af=ejs['render'](_0x36dc50,{'networks':_0x12b2b1||[]});fs[_0x8aa4('0x63')](_0x8aa4('0x64'),_0x1992af);return respondWithRpcPromise(_0x8aa4('0x65'),'create',{'module':_0x8aa4('0x5f')});}else{var _0x4571e6=fs[_0x8aa4('0x5b')](path[_0x8aa4('0x5c')](config['root'],'server/files/templates/network.ejs'),_0x8aa4('0x62'));var _0x1cb811=ejs[_0x8aa4('0x5e')](_0x4571e6,{'networks':_0x12b2b1||[]});fs[_0x8aa4('0x63')](util[_0x8aa4('0x66')](_0x8aa4('0x67'),_0x466b7d[_0x8aa4('0x59')]['type'][_0x8aa4('0x68')]()),_0x1cb811);return respondWithRpcPromise(_0x8aa4('0x65'),_0x8aa4('0x56'),{'module':_0x8aa4('0x69')});}return null;})[_0x8aa4('0x22')](function(){return _0x3dbd08;});})[_0x8aa4('0x22')](respondWithResult(_0x256b72,0xc9))[_0x8aa4('0x2a')](handleError(_0x256b72,null));};exports['update']=function(_0x3915a5,_0x5f3fa6,_0x18faeb){var _0x2a33a9;return db[_0x8aa4('0x57')][_0x8aa4('0x58')](function(_0x2c410b){return db[_0x8aa4('0x50')][_0x8aa4('0x55')]({'where':{'id':_0x3915a5[_0x8aa4('0x52')]['id']}})[_0x8aa4('0x22')](handleEntityNotFound(_0x5f3fa6,null))[_0x8aa4('0x22')](saveUpdates(_0x3915a5[_0x8aa4('0x59')],null))[_0x8aa4('0x22')](function(_0x2e8515){if(_0x2e8515){_0x2a33a9=_0x2e8515;return db[_0x8aa4('0x50')]['findAll']({'where':{'type':_0x2a33a9['type']},'raw':!![]});}return null;})[_0x8aa4('0x22')](function(_0x683c08){if(_0x2a33a9[_0x8aa4('0x5a')][_0x8aa4('0x60')]()==_0x8aa4('0x6a')){var _0x2d15e2=fs['readFileSync'](path['join'](config[_0x8aa4('0x6b')],_0x8aa4('0x5d')),_0x8aa4('0x62'));var _0xd42124=ejs[_0x8aa4('0x5e')](_0x2d15e2,{'networks':_0x683c08||[]});fs[_0x8aa4('0x63')](_0x8aa4('0x6c'),_0xd42124);return respondWithRpcPromise(_0x8aa4('0x65'),_0x8aa4('0x34'),{'module':_0x8aa4('0x5f')});}else if(_0x2a33a9[_0x8aa4('0x5a')]['toUpperCase']()=='TURN'){var _0x472162=fs[_0x8aa4('0x5b')](path[_0x8aa4('0x5c')](config[_0x8aa4('0x6b')],'server/files/templates/turn_multiple.ejs'),_0x8aa4('0x62'));var _0x42fcef=ejs['render'](_0x472162,{'networks':_0x683c08||[]});fs[_0x8aa4('0x63')](_0x8aa4('0x64'),_0x42fcef);return respondWithRpcPromise(_0x8aa4('0x65'),_0x8aa4('0x34'),{'module':'res_stun_monitor.so'});}else{var _0x37bad9=fs['readFileSync'](path[_0x8aa4('0x5c')](config[_0x8aa4('0x6b')],'server/files/templates/network.ejs'),'utf8');var _0x4425fd=ejs[_0x8aa4('0x5e')](_0x37bad9,{'networks':_0x683c08||[]});fs[_0x8aa4('0x63')](util[_0x8aa4('0x66')](_0x8aa4('0x67'),_0x3915a5['body'][_0x8aa4('0x5a')][_0x8aa4('0x68')]()),_0x4425fd);return respondWithRpcPromise('Reload',_0x8aa4('0x34'),{'module':_0x8aa4('0x69')});}return null;})[_0x8aa4('0x22')](function(_0x418e82){if(_0x418e82){return _0x2a33a9;}return null;});})[_0x8aa4('0x22')](respondWithResult(_0x5f3fa6,null))[_0x8aa4('0x2a')](handleError(_0x5f3fa6,null));};exports['destroy']=function(_0x572951,_0x4d1cc5,_0x563766){var _0xcecba8;return db[_0x8aa4('0x50')][_0x8aa4('0x55')]({'where':{'id':_0x572951[_0x8aa4('0x52')]['id']}})['then'](function(_0xc38784){_0xcecba8=_0xc38784;return _0xc38784;})[_0x8aa4('0x22')](handleEntityNotFound(_0x4d1cc5,null))[_0x8aa4('0x22')](removeEntity(_0x4d1cc5,null))[_0x8aa4('0x22')](function(){if(_0xcecba8){return db[_0x8aa4('0x50')]['findAll']({'where':{'type':_0xcecba8[_0x8aa4('0x5a')]},'raw':!![]});}})[_0x8aa4('0x22')](function(_0x13148e){if(_0xcecba8[_0x8aa4('0x5a')][_0x8aa4('0x60')]()==_0x8aa4('0x6a')){var _0x5d0a4f=fs['readFileSync'](path[_0x8aa4('0x5c')](config[_0x8aa4('0x6b')],_0x8aa4('0x5d')),_0x8aa4('0x62'));var _0x127fed=ejs['render'](_0x5d0a4f,{'networks':_0x13148e||[]});fs['writeFileSync'](_0x8aa4('0x6c'),_0x127fed);return respondWithRpcPromise(_0x8aa4('0x65'),'destroy',{'module':_0x8aa4('0x5f')});}else if(_0xcecba8['type'][_0x8aa4('0x60')]()=='TURN'){var _0x330594=fs[_0x8aa4('0x5b')](path[_0x8aa4('0x5c')](config[_0x8aa4('0x6b')],_0x8aa4('0x6d')),_0x8aa4('0x62'));var _0x1cee8e=ejs['render'](_0x330594,{'networks':_0x13148e||[]});fs[_0x8aa4('0x63')](_0x8aa4('0x64'),_0x1cee8e);return respondWithRpcPromise(_0x8aa4('0x65'),_0x8aa4('0x35'),{'module':'res_stun_monitor.so'});}else{var _0x1400eb=fs['readFileSync'](path[_0x8aa4('0x5c')](config[_0x8aa4('0x6b')],'server/files/templates/network.ejs'),'utf8');var _0x1d6679=ejs[_0x8aa4('0x5e')](_0x1400eb,{'networks':_0x13148e||[]});fs['writeFileSync'](util['format'](_0x8aa4('0x67'),_0x572951[_0x8aa4('0x59')][_0x8aa4('0x5a')][_0x8aa4('0x68')]()),_0x1d6679);return respondWithRpcPromise('Reload',_0x8aa4('0x35'),{'module':_0x8aa4('0x69')});}return null;})[_0x8aa4('0x2a')](handleError(_0x4d1cc5,null));};
\ No newline at end of file
index 97a8d8b..680e007 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0427=['api','bluebird','request-promise','path','rimraf','../../config/environment','./network.attributes','exports','define','Network','network','../../config/logger'];(function(_0x1ed116,_0x23bc80){var _0x574066=function(_0x424f9e){while(--_0x424f9e){_0x1ed116['push'](_0x1ed116['shift']());}};_0x574066(++_0x23bc80);}(_0x0427,0x137));var _0x7042=function(_0x4e773f,_0x549a3d){_0x4e773f=_0x4e773f-0x0;var _0x5e00de=_0x0427[_0x4e773f];return _0x5e00de;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x7042('0x0'))(_0x7042('0x1'));var moment=require('moment');var BPromise=require(_0x7042('0x2'));var rp=require(_0x7042('0x3'));var fs=require('fs');var path=require(_0x7042('0x4'));var rimraf=require(_0x7042('0x5'));var config=require(_0x7042('0x6'));var attributes=require(_0x7042('0x7'));module[_0x7042('0x8')]=function(_0x53ab81,_0x37a35b){return _0x53ab81[_0x7042('0x9')](_0x7042('0xa'),attributes,{'tableName':_0x7042('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2dae=['lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./network.attributes','exports','define','Network','network'];(function(_0x50b896,_0x1aa0a9){var _0xb80900=function(_0x2ab794){while(--_0x2ab794){_0x50b896['push'](_0x50b896['shift']());}};_0xb80900(++_0x1aa0a9);}(_0x2dae,0xc3));var _0xe2da=function(_0x874cf1,_0x2a4954){_0x874cf1=_0x874cf1-0x0;var _0x233579=_0x2dae[_0x874cf1];return _0x233579;};'use strict';var _=require(_0xe2da('0x0'));var util=require('util');var logger=require(_0xe2da('0x1'))(_0xe2da('0x2'));var moment=require(_0xe2da('0x3'));var BPromise=require(_0xe2da('0x4'));var rp=require(_0xe2da('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe2da('0x6'));var config=require(_0xe2da('0x7'));var attributes=require(_0xe2da('0x8'));module[_0xe2da('0x9')]=function(_0x523c60,_0x3e3e25){return _0x523c60[_0xe2da('0xa')](_0xe2da('0xb'),attributes,{'tableName':_0xe2da('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 770db20..cc00b7a 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(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x7a54,0x106));var _0x47a5=function(_0xd9b65,_0x5354b7){_0xd9b65=_0xd9b65-0x0;var _0x211ccf=_0x7a54[_0xd9b65];return _0x211ccf;};'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(_0x17a71c,_0x1a6238){var _0x1921b8=function(_0x4a9ddd){while(--_0x4a9ddd){_0x17a71c['push'](_0x17a71c['shift']());}};_0x1921b8(++_0x1a6238);}(_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 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 fb92605..ac935a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2771=['/:id/interactions','/:id/users','getAgents','post','create','addDisposition','addAnswer','/:id/notify','notify','addApplications','addAgents','/:id/send','put','/:id','update','destroy','delete','removeDispositions','removeAgents','exports','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','isAuthenticated','index','/describe','get','show','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/applications','getApplications'];(function(_0x5597a4,_0x161921){var _0x26ed19=function(_0x245cf7){while(--_0x245cf7){_0x5597a4['push'](_0x5597a4['shift']());}};_0x26ed19(++_0x161921);}(_0x2771,0x110));var _0x1277=function(_0x11db0a,_0x4af927){_0x11db0a=_0x11db0a-0x0;var _0x46c7d3=_0x2771[_0x11db0a];return _0x46c7d3;};'use strict';var multer=require(_0x1277('0x0'));var util=require(_0x1277('0x1'));var path=require('path');var timeout=require(_0x1277('0x2'));var express=require('express');var router=express[_0x1277('0x3')]();var fs_extra=require(_0x1277('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x1277('0x5'));var config=require('../../config/environment');var controller=require('./openchannelAccount.controller');router['get']('/',auth[_0x1277('0x6')](),controller[_0x1277('0x7')]);router['get'](_0x1277('0x8'),auth[_0x1277('0x6')](),controller['describe']);router[_0x1277('0x9')]('/:id',auth[_0x1277('0x6')](),controller[_0x1277('0xa')]);router[_0x1277('0x9')](_0x1277('0xb'),auth[_0x1277('0x6')](),controller[_0x1277('0xc')]);router[_0x1277('0x9')](_0x1277('0xd'),auth['isAuthenticated'](),controller['getAnswers']);router[_0x1277('0x9')](_0x1277('0xe'),auth[_0x1277('0x6')](),controller[_0x1277('0xf')]);router[_0x1277('0x9')](_0x1277('0x10'),auth['isAuthenticated'](),controller['getInteractions']);router[_0x1277('0x9')](_0x1277('0x11'),auth[_0x1277('0x6')](),controller[_0x1277('0x12')]);router[_0x1277('0x13')]('/',auth[_0x1277('0x6')](),controller[_0x1277('0x14')]);router['post']('/:id/dispositions',auth[_0x1277('0x6')](),controller[_0x1277('0x15')]);router[_0x1277('0x13')](_0x1277('0xd'),auth['isAuthenticated'](),controller[_0x1277('0x16')]);router[_0x1277('0x13')](_0x1277('0x17'),controller[_0x1277('0x18')]);router[_0x1277('0x13')]('/:id/applications',auth[_0x1277('0x6')](),controller[_0x1277('0x19')]);router['post'](_0x1277('0x11'),auth['isAuthenticated'](),controller[_0x1277('0x1a')]);router['post'](_0x1277('0x1b'),auth[_0x1277('0x6')](),controller['send']);router[_0x1277('0x1c')](_0x1277('0x1d'),auth[_0x1277('0x6')](),controller[_0x1277('0x1e')]);router['delete']('/:id',auth[_0x1277('0x6')](),controller[_0x1277('0x1f')]);router[_0x1277('0x20')](_0x1277('0xb'),auth[_0x1277('0x6')](),controller[_0x1277('0x21')]);router['delete'](_0x1277('0xd'),auth['isAuthenticated'](),controller['removeAnswers']);router[_0x1277('0x20')](_0x1277('0x11'),auth[_0x1277('0x6')](),controller[_0x1277('0x22')]);module[_0x1277('0x23')]=router;
\ No newline at end of file
+var _0x3b7d=['/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/users','getAgents','create','addDisposition','addAnswer','post','/:id/notify','addApplications','addAgents','/:id/send','put','/:id','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','show','/:id/dispositions','/:id/canned_answers'];(function(_0x12eabf,_0x1bd868){var _0x509b5c=function(_0x313c63){while(--_0x313c63){_0x12eabf['push'](_0x12eabf['shift']());}};_0x509b5c(++_0x1bd868);}(_0x3b7d,0xa1));var _0xd3b7=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x3b7d[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0xd3b7('0x0'));var util=require(_0xd3b7('0x1'));var path=require(_0xd3b7('0x2'));var timeout=require(_0xd3b7('0x3'));var express=require(_0xd3b7('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xd3b7('0x5'));var interaction=require(_0xd3b7('0x6'));var config=require(_0xd3b7('0x7'));var controller=require('./openchannelAccount.controller');router[_0xd3b7('0x8')]('/',auth[_0xd3b7('0x9')](),controller['index']);router[_0xd3b7('0x8')](_0xd3b7('0xa'),auth[_0xd3b7('0x9')](),controller['describe']);router[_0xd3b7('0x8')]('/:id',auth[_0xd3b7('0x9')](),controller[_0xd3b7('0xb')]);router[_0xd3b7('0x8')](_0xd3b7('0xc'),auth[_0xd3b7('0x9')](),controller['getDispositions']);router[_0xd3b7('0x8')](_0xd3b7('0xd'),auth[_0xd3b7('0x9')](),controller['getAnswers']);router['get'](_0xd3b7('0xe'),auth[_0xd3b7('0x9')](),controller[_0xd3b7('0xf')]);router['get'](_0xd3b7('0x10'),auth[_0xd3b7('0x9')](),controller[_0xd3b7('0x11')]);router[_0xd3b7('0x8')](_0xd3b7('0x12'),auth[_0xd3b7('0x9')](),controller[_0xd3b7('0x13')]);router['post']('/',auth[_0xd3b7('0x9')](),controller[_0xd3b7('0x14')]);router['post'](_0xd3b7('0xc'),auth['isAuthenticated'](),controller[_0xd3b7('0x15')]);router['post'](_0xd3b7('0xd'),auth[_0xd3b7('0x9')](),controller[_0xd3b7('0x16')]);router[_0xd3b7('0x17')](_0xd3b7('0x18'),controller['notify']);router[_0xd3b7('0x17')](_0xd3b7('0xe'),auth[_0xd3b7('0x9')](),controller[_0xd3b7('0x19')]);router[_0xd3b7('0x17')](_0xd3b7('0x12'),auth[_0xd3b7('0x9')](),controller[_0xd3b7('0x1a')]);router[_0xd3b7('0x17')](_0xd3b7('0x1b'),auth[_0xd3b7('0x9')](),controller['send']);router[_0xd3b7('0x1c')](_0xd3b7('0x1d'),auth[_0xd3b7('0x9')](),controller['update']);router[_0xd3b7('0x1e')](_0xd3b7('0x1d'),auth[_0xd3b7('0x9')](),controller['destroy']);router['delete'](_0xd3b7('0xc'),auth['isAuthenticated'](),controller[_0xd3b7('0x1f')]);router[_0xd3b7('0x1e')](_0xd3b7('0xd'),auth[_0xd3b7('0x9')](),controller[_0xd3b7('0x20')]);router[_0xd3b7('0x1e')](_0xd3b7('0x12'),auth[_0xd3b7('0x9')](),controller[_0xd3b7('0x21')]);module[_0xd3b7('0x22')]=router;
\ No newline at end of file
index 918f155..93d863d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e76=['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','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition'];(function(_0x51cfdf,_0x18acdc){var _0x1f4934=function(_0xa514ef){while(--_0xa514ef){_0x51cfdf['push'](_0x51cfdf['shift']());}};_0x1f4934(++_0x18acdc);}(_0x4e76,0x9c));var _0x64e7=function(_0x54698c,_0x249a74){_0x54698c=_0x54698c-0x0;var _0x20bb37=_0x4e76[_0x54698c];return _0x20bb37;};'use strict';var Sequelize=require(_0x64e7('0x0'));var rs=require(_0x64e7('0x1'));module[_0x64e7('0x2')]={'name':{'type':Sequelize[_0x64e7('0x3')],'unique':_0x64e7('0x4'),'allowNull':![]},'description':{'type':Sequelize[_0x64e7('0x3')]},'token':{'type':Sequelize[_0x64e7('0x3')],'defaultValue':function(){return rs[_0x64e7('0x5')]();}},'replyUri':{'type':Sequelize['STRING'],'validate':{'isUrl':!![]}},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x64e7('0x6')],'defaultValue':function(){return _0x64e7('0x7');}},'notificationSound':{'type':Sequelize[_0x64e7('0x8')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x64e7('0x8')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x64e7('0x3')]},'queueTransfer':{'type':Sequelize[_0x64e7('0x8')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x64e7('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x64e7('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x64e7('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x343d98){if(!_0x343d98)this['setDataValue'](_0x64e7('0xa'),null);this[_0x64e7('0xb')](_0x64e7('0xc'),_0x343d98);}}};
\ No newline at end of file
+var _0xc14b=['INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','sequelize','exports','STRING','generate','BOOLEAN'];(function(_0x49b207,_0x408ade){var _0x2dc8fa=function(_0x150975){while(--_0x150975){_0x49b207['push'](_0x49b207['shift']());}};_0x2dc8fa(++_0x408ade);}(_0xc14b,0x9d));var _0xbc14=function(_0x50bf5a,_0x807bba){_0x50bf5a=_0x50bf5a-0x0;var _0x4ddc1d=_0xc14b[_0x50bf5a];return _0x4ddc1d;};'use strict';var Sequelize=require(_0xbc14('0x0'));var rs=require('randomstring');module[_0xbc14('0x1')]={'name':{'type':Sequelize[_0xbc14('0x2')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0xbc14('0x2')]},'token':{'type':Sequelize[_0xbc14('0x2')],'defaultValue':function(){return rs[_0xbc14('0x3')]();}},'replyUri':{'type':Sequelize[_0xbc14('0x2')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize['STRING'],'allowNull':![]},'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[_0xbc14('0x4')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xbc14('0x4')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xbc14('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0xbc14('0x2')]},'queueTransfer':{'type':Sequelize[_0xbc14('0x4')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xbc14('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xbc14('0x4')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xbc14('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xbc14('0x5')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xbc14('0x6'),'set':function(_0x6d0943){if(!_0x6d0943)this[_0xbc14('0x7')]('mandatoryDispositionPauseId',null);this[_0xbc14('0x7')](_0xbc14('0x8'),_0x6d0943);}}};
\ No newline at end of file
index f2294dd..aa96524 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36e5=['OpenchannelAccount,\x20%s,\x20%s','message','catch','sendStatus','status','json','offset','limit','undefined','count','set','apply','update','then','destroy','get','OpenchannelAccounts','UserProfileResource','end','stack','name','send','index','Pause','map','fieldName','key','model','query','keys','intersection','attributes','fields','length','nolimit','where','filters','filter','merge','type','VIRTUAL','options','OpenchannelAccount','includeAll','include','findAll','rows','show','mandatoryDispositionPause','rawAttributes','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','find','params','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','findOne','hasOwnProperty','order','sort','pick','ids','CannedAnswer','getAnswers','removeAnswers','notify','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','from','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','CmList','List','CmContact','DESC','OpenchannelApplication','Applications','account','applications','list','orderBy','priority','Contacts','contact','firstName','lastName','threadId','OpenchannelInteraction','externalUrl','spread','messageId','interaction','created','autoclose','push','close','unmanaged','OpenchannelMessage','UserId','unshift','agent','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','EventManager','addApplications','transaction','bulkCreate','findAndCountAll','getApplications','getInteractions','Contact','User','Owner','fullname','Tag','Tags','tag','addAgents','omit','userOpenchannelAccount:save','removeAgents','isArray','emit','userOpenchannelAccount:remove','getAgents','out','Messages','dataValues','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','jayson/promise','client','http','request','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x8dc0cc,_0x2df91d){var _0x4f568e=function(_0x2a6dd7){while(--_0x2a6dd7){_0x8dc0cc['push'](_0x8dc0cc['shift']());}};_0x4f568e(++_0x2df91d);}(_0x36e5,0x154));var _0x536e=function(_0xd67723,_0x1e576f){_0xd67723=_0xd67723-0x0;var _0x53b62b=_0x36e5[_0xd67723];return _0x53b62b;};'use strict';var emlformat=require(_0x536e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x536e('0x1'));var rp=require(_0x536e('0x2'));var moment=require(_0x536e('0x3'));var BPromise=require(_0x536e('0x4'));var Mustache=require(_0x536e('0x5'));var util=require(_0x536e('0x6'));var path=require(_0x536e('0x7'));var sox=require(_0x536e('0x8'));var csv=require('to-csv');var ejs=require(_0x536e('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x536e('0xa'));var squel=require(_0x536e('0xb'));var crypto=require(_0x536e('0xc'));var jsforce=require(_0x536e('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x536e('0xe'));var Papa=require(_0x536e('0xf'));var Redis=require('ioredis');var authService=require(_0x536e('0x10'));var qs=require(_0x536e('0x11'));var as=require(_0x536e('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x536e('0x13'))(_0x536e('0x14'));var utils=require('../../config/utils');var config=require(_0x536e('0x15'));var licenseUtil=require(_0x536e('0x16'));var db=require(_0x536e('0x17'))['db'];config[_0x536e('0x18')]=_[_0x536e('0x19')](config[_0x536e('0x18')],{'host':_0x536e('0x1a'),'port':0x18eb});var socket=require(_0x536e('0x1b'))(new Redis(config['redis']));require(_0x536e('0x1c'))[_0x536e('0x1d')](socket);var jayson=require(_0x536e('0x1e'));var client=jayson[_0x536e('0x1f')]['http']({'port':0x232c});var client9002=jayson['client'][_0x536e('0x20')]({'port':0x232a});function respondWithRpcPromise(_0xdf9849,_0x485938,_0x3dfb21,_0xb33668){return new BPromise(function(_0x4ed67d,_0x1ccdd8){var _0x30cb2f=_0xb33668||client;return _0x30cb2f[_0x536e('0x21')](_0xdf9849,_0x3dfb21)['then'](function(_0x44838b){logger['info']('OpenchannelAccount,\x20%s,\x20%s',_0x485938,_0x536e('0x22'));logger[_0x536e('0x23')](_0x536e('0x24'),_0x485938,_0x536e('0x22'),JSON[_0x536e('0x25')](_0x44838b));if(_0x44838b[_0x536e('0x26')]){if(_0x44838b['error'][_0x536e('0x27')]===0x1f4){logger[_0x536e('0x26')](_0x536e('0x28'),_0x485938,_0x44838b[_0x536e('0x26')][_0x536e('0x29')]);return _0x1ccdd8(_0x44838b[_0x536e('0x26')][_0x536e('0x29')]);}logger[_0x536e('0x26')]('OpenchannelAccount,\x20%s,\x20%s',_0x485938,_0x44838b['error']['message']);return _0x4ed67d(_0x44838b[_0x536e('0x26')]['message']);}else{logger['info']('OpenchannelAccount,\x20%s,\x20%s',_0x485938,_0x536e('0x22'));_0x4ed67d(_0x44838b['result'][_0x536e('0x29')]);}})[_0x536e('0x2a')](function(_0x58e8d8){logger[_0x536e('0x26')](_0x536e('0x28'),_0x485938,_0x58e8d8);_0x1ccdd8(_0x58e8d8);});});}function respondWithStatusCode(_0x3f0fde,_0x1f09c6){_0x1f09c6=_0x1f09c6||0xcc;return function(_0x99252b){if(_0x99252b){return _0x3f0fde[_0x536e('0x2b')](_0x1f09c6);}return _0x3f0fde[_0x536e('0x2c')](_0x1f09c6)['end']();};}function respondWithResult(_0x21a3aa,_0x51eae0){_0x51eae0=_0x51eae0||0xc8;return function(_0x11b3ed){if(_0x11b3ed){return _0x21a3aa['status'](_0x51eae0)[_0x536e('0x2d')](_0x11b3ed);}};}function respondWithFilteredResult(_0x548aa7,_0x274998){return function(_0x101aeb){if(_0x101aeb){var _0x56088a=typeof _0x274998[_0x536e('0x2e')]==='undefined'&&typeof _0x274998[_0x536e('0x2f')]===_0x536e('0x30');var _0x211923=_0x101aeb[_0x536e('0x31')];var _0x219827=_0x56088a?0x0:_0x274998[_0x536e('0x2e')];var _0xf2f65d=_0x56088a?_0x101aeb[_0x536e('0x31')]:_0x274998[_0x536e('0x2e')]+_0x274998[_0x536e('0x2f')];var _0x53810f;if(_0xf2f65d>=_0x211923){_0xf2f65d=_0x211923;_0x53810f=0xc8;}else{_0x53810f=0xce;}_0x548aa7['status'](_0x53810f);return _0x548aa7[_0x536e('0x32')]('Content-Range',_0x219827+'-'+_0xf2f65d+'/'+_0x211923)[_0x536e('0x2d')](_0x101aeb);}return null;};}function patchUpdates(_0x48f2dc){return function(_0x1a5466){try{jsonpatch[_0x536e('0x33')](_0x1a5466,_0x48f2dc,!![]);}catch(_0xcf8e56){return BPromise['reject'](_0xcf8e56);}return _0x1a5466['save']();};}function saveUpdates(_0x4ede13,_0x10b2ae){return function(_0x5cf764){if(_0x5cf764){return _0x5cf764[_0x536e('0x34')](_0x4ede13)[_0x536e('0x35')](function(_0x17d9f0){return _0x17d9f0;});}return null;};}function removeEntity(_0x5a0871,_0x2b687b){return function(_0x43b6c2){if(_0x43b6c2){return _0x43b6c2[_0x536e('0x36')]()[_0x536e('0x35')](function(){var _0x524b99=_0x43b6c2[_0x536e('0x37')]({'plain':!![]});var _0x2fb8b5=_0x536e('0x38');return db[_0x536e('0x39')]['destroy']({'where':{'type':_0x2fb8b5,'resourceId':_0x524b99['id']}})[_0x536e('0x35')](function(){return _0x43b6c2;});})[_0x536e('0x35')](function(){_0x5a0871[_0x536e('0x2c')](0xcc)[_0x536e('0x3a')]();});}};}function handleEntityNotFound(_0x654223,_0x33fc2a){return function(_0x8ffebc){if(!_0x8ffebc){_0x654223[_0x536e('0x2b')](0x194);}return _0x8ffebc;};}function handleError(_0x495e03,_0x4c611b){_0x4c611b=_0x4c611b||0x1f4;return function(_0x11db1a){logger[_0x536e('0x26')](_0x11db1a[_0x536e('0x3b')]);if(_0x11db1a[_0x536e('0x3c')]){delete _0x11db1a[_0x536e('0x3c')];}_0x495e03[_0x536e('0x2c')](_0x4c611b)[_0x536e('0x3d')](_0x11db1a);};}exports[_0x536e('0x3e')]=function(_0x50c4c8,_0x2fea80){var _0x406956={'include':[{'model':db[_0x536e('0x3f')],'as':'mandatoryDispositionPause'}]},_0x232693={},_0x5b69c3={'count':0x0,'rows':[]};var _0x2592f2=_[_0x536e('0x40')](db['OpenchannelAccount']['rawAttributes'],function(_0x18a336){return{'name':_0x18a336[_0x536e('0x41')],'type':_0x18a336['type'][_0x536e('0x42')]};});_0x232693[_0x536e('0x43')]=_['map'](_0x2592f2,_0x536e('0x3c'));_0x232693[_0x536e('0x44')]=_[_0x536e('0x45')](_0x50c4c8[_0x536e('0x44')]);_0x232693['filters']=_[_0x536e('0x46')](_0x232693['model'],_0x232693['query']);_0x406956[_0x536e('0x47')]=_[_0x536e('0x46')](_0x232693[_0x536e('0x43')],qs[_0x536e('0x48')](_0x50c4c8[_0x536e('0x44')][_0x536e('0x48')]));_0x406956[_0x536e('0x47')]=_0x406956[_0x536e('0x47')][_0x536e('0x49')]?_0x406956['attributes']:_0x232693[_0x536e('0x43')];if(!_0x50c4c8[_0x536e('0x44')]['hasOwnProperty'](_0x536e('0x4a'))){_0x406956[_0x536e('0x2f')]=qs[_0x536e('0x2f')](_0x50c4c8[_0x536e('0x44')][_0x536e('0x2f')]);_0x406956['offset']=qs['offset'](_0x50c4c8[_0x536e('0x44')][_0x536e('0x2e')]);}_0x406956['order']=qs['sort'](_0x50c4c8[_0x536e('0x44')]['sort']);_0x406956[_0x536e('0x4b')]=qs[_0x536e('0x4c')](_['pick'](_0x50c4c8[_0x536e('0x44')],_0x232693[_0x536e('0x4c')]),_0x2592f2);if(_0x50c4c8[_0x536e('0x44')][_0x536e('0x4d')]){_0x406956[_0x536e('0x4b')]=_[_0x536e('0x4e')](_0x406956[_0x536e('0x4b')],{'$or':_['map'](_0x2592f2,function(_0x472fff){if(_0x472fff[_0x536e('0x4f')]!==_0x536e('0x50')){var _0x26d110={};_0x26d110[_0x472fff[_0x536e('0x3c')]]={'$like':'%'+_0x50c4c8['query']['filter']+'%'};return _0x26d110;}})});}_0x406956=_[_0x536e('0x4e')]({},_0x406956,_0x50c4c8[_0x536e('0x51')]);var _0x30ba1a={'where':_0x406956['where']};return db[_0x536e('0x52')][_0x536e('0x31')](_0x30ba1a)[_0x536e('0x35')](function(_0x47cab0){_0x5b69c3[_0x536e('0x31')]=_0x47cab0;if(_0x50c4c8['query'][_0x536e('0x53')]){_0x406956[_0x536e('0x54')]=[{'all':!![]}];}return db[_0x536e('0x52')][_0x536e('0x55')](_0x406956);})[_0x536e('0x35')](function(_0x3e7b53){_0x5b69c3[_0x536e('0x56')]=_0x3e7b53;return _0x5b69c3;})[_0x536e('0x35')](respondWithFilteredResult(_0x2fea80,_0x406956))[_0x536e('0x2a')](handleError(_0x2fea80,null));};exports[_0x536e('0x57')]=function(_0x205a10,_0x1adf28){var _0x11ddc8={'raw':![],'where':{'id':_0x205a10['params']['id']},'include':[{'model':db['Pause'],'as':_0x536e('0x58')}]},_0x3dcf2f={};_0x3dcf2f[_0x536e('0x43')]=_[_0x536e('0x45')](db[_0x536e('0x52')][_0x536e('0x59')]);_0x3dcf2f[_0x536e('0x44')]=_[_0x536e('0x45')](_0x205a10['query']);_0x3dcf2f[_0x536e('0x4c')]=_['intersection'](_0x3dcf2f['model'],_0x3dcf2f[_0x536e('0x44')]);_0x11ddc8[_0x536e('0x47')]=_['intersection'](_0x3dcf2f[_0x536e('0x43')],qs[_0x536e('0x48')](_0x205a10[_0x536e('0x44')]['fields']));_0x11ddc8[_0x536e('0x47')]=_0x11ddc8[_0x536e('0x47')]['length']?_0x11ddc8[_0x536e('0x47')]:_0x3dcf2f['model'];if(_0x205a10[_0x536e('0x44')][_0x536e('0x53')]){_0x11ddc8['include']=[{'all':!![]}];}_0x11ddc8=_['merge']({},_0x11ddc8,_0x205a10[_0x536e('0x51')]);return db[_0x536e('0x52')]['find'](_0x11ddc8)['then'](handleEntityNotFound(_0x1adf28,null))['then'](respondWithResult(_0x1adf28,null))[_0x536e('0x2a')](handleError(_0x1adf28,null));};exports[_0x536e('0x5a')]=function(_0x5dfa65,_0x708f18){return db[_0x536e('0x52')][_0x536e('0x5a')](_0x5dfa65['body'],{})[_0x536e('0x35')](function(_0x264612){var _0x3c5737=_0x5dfa65[_0x536e('0x5b')][_0x536e('0x37')]({'plain':!![]});if(!_0x3c5737)throw new Error(_0x536e('0x5c'));if(_0x3c5737[_0x536e('0x5d')]===_0x536e('0x5b')){var _0x282ee7=_0x264612['get']({'plain':!![]});var _0x44e05a=_0x536e('0x38');return db[_0x536e('0x5e')]['find']({'where':{'name':_0x44e05a,'userProfileId':_0x3c5737['userProfileId']},'raw':!![]})['then'](function(_0xe349d){if(_0xe349d&&_0xe349d[_0x536e('0x5f')]===0x0){return db[_0x536e('0x39')][_0x536e('0x5a')]({'name':_0x282ee7[_0x536e('0x3c')],'resourceId':_0x282ee7['id'],'type':_0xe349d[_0x536e('0x3c')],'sectionId':_0xe349d['id']},{})[_0x536e('0x35')](function(){return _0x264612;});}else{return _0x264612;}})['catch'](function(_0x5ca4e4){logger[_0x536e('0x26')](_0x536e('0x60'),_0x5ca4e4);throw _0x5ca4e4;});}return _0x264612;})[_0x536e('0x35')](respondWithResult(_0x708f18,0xc9))['catch'](handleError(_0x708f18,null));};exports['update']=function(_0x3b47c8,_0x1fd7ed){if(_0x3b47c8[_0x536e('0x61')]['id']){delete _0x3b47c8[_0x536e('0x61')]['id'];}return db['OpenchannelAccount'][_0x536e('0x62')]({'where':{'id':_0x3b47c8[_0x536e('0x63')]['id']},'include':[{'model':db[_0x536e('0x3f')],'as':'mandatoryDispositionPause'}]})[_0x536e('0x35')](handleEntityNotFound(_0x1fd7ed,null))[_0x536e('0x35')](saveUpdates(_0x3b47c8[_0x536e('0x61')],null))['then'](respondWithResult(_0x1fd7ed,null))[_0x536e('0x2a')](handleError(_0x1fd7ed,null));};exports[_0x536e('0x36')]=function(_0x95bc7f,_0xfb0e50){return db[_0x536e('0x52')][_0x536e('0x62')]({'where':{'id':_0x95bc7f[_0x536e('0x63')]['id']}})[_0x536e('0x35')](handleEntityNotFound(_0xfb0e50,null))['then'](removeEntity(_0xfb0e50,null))[_0x536e('0x2a')](handleError(_0xfb0e50,null));};exports[_0x536e('0x64')]=function(_0x154113,_0x3f54e8){return db[_0x536e('0x52')][_0x536e('0x64')]()[_0x536e('0x35')](respondWithResult(_0x3f54e8,null))['catch'](handleError(_0x3f54e8,null));};exports[_0x536e('0x65')]=function(_0x5cf347,_0x427ee5,_0x5599a6){if(_0x5cf347[_0x536e('0x61')]['id']){delete _0x5cf347[_0x536e('0x61')]['id'];}return db[_0x536e('0x52')][_0x536e('0x62')]({'where':{'id':_0x5cf347[_0x536e('0x63')]['id']}})[_0x536e('0x35')](handleEntityNotFound(_0x427ee5,null))[_0x536e('0x35')](function(_0x5865e7){if(_0x5865e7){_0x5cf347[_0x536e('0x61')][_0x536e('0x66')]=_0x5865e7['id'];return db[_0x536e('0x67')][_0x536e('0x5a')](_0x5cf347[_0x536e('0x61')]);}})[_0x536e('0x35')](respondWithResult(_0x427ee5,null))[_0x536e('0x2a')](handleError(_0x427ee5,null));};exports[_0x536e('0x68')]=function(_0x22c2ef,_0x37bf6d,_0x2ef8ae){var _0x5ce30e={'raw':![],'where':{}};var _0x58d466={};var _0x2a5a80={'count':0x0,'rows':[]};return db[_0x536e('0x52')][_0x536e('0x69')]({'where':{'id':_0x22c2ef[_0x536e('0x63')]['id']}})[_0x536e('0x35')](handleEntityNotFound(_0x37bf6d,null))[_0x536e('0x35')](function(_0x39cfeb){if(_0x39cfeb){_0x58d466['model']=_[_0x536e('0x45')](db[_0x536e('0x67')][_0x536e('0x59')]);_0x58d466['query']=_[_0x536e('0x45')](_0x22c2ef['query']);_0x58d466[_0x536e('0x4c')]=_[_0x536e('0x46')](_0x58d466[_0x536e('0x43')],_0x58d466[_0x536e('0x44')]);_0x5ce30e[_0x536e('0x47')]=_[_0x536e('0x46')](_0x58d466[_0x536e('0x43')],qs[_0x536e('0x48')](_0x22c2ef[_0x536e('0x44')][_0x536e('0x48')]));_0x5ce30e[_0x536e('0x47')]=_0x5ce30e[_0x536e('0x47')][_0x536e('0x49')]?_0x5ce30e['attributes']:_0x58d466[_0x536e('0x43')];if(!_0x22c2ef['query'][_0x536e('0x6a')]('nolimit')){_0x5ce30e[_0x536e('0x2f')]=qs['limit'](_0x22c2ef['query'][_0x536e('0x2f')]);_0x5ce30e[_0x536e('0x2e')]=qs[_0x536e('0x2e')](_0x22c2ef['query'][_0x536e('0x2e')]);}_0x5ce30e[_0x536e('0x6b')]=qs[_0x536e('0x6c')](_0x22c2ef[_0x536e('0x44')]['sort']);_0x5ce30e[_0x536e('0x4b')]=qs[_0x536e('0x4c')](_[_0x536e('0x6d')](_0x22c2ef[_0x536e('0x44')],_0x58d466[_0x536e('0x4c')]));_0x5ce30e[_0x536e('0x4b')][_0x536e('0x66')]=_0x39cfeb['id'];if(_0x22c2ef[_0x536e('0x44')]['filter']){_0x5ce30e[_0x536e('0x4b')]=_[_0x536e('0x4e')](_0x5ce30e[_0x536e('0x4b')],{'$or':_[_0x536e('0x40')](_0x5ce30e[_0x536e('0x47')],function(_0x24ac60){var _0x14d80e={};_0x14d80e[_0x24ac60]={'$like':'%'+_0x22c2ef[_0x536e('0x44')][_0x536e('0x4d')]+'%'};return _0x14d80e;})});}_0x5ce30e=_[_0x536e('0x4e')]({},_0x5ce30e,_0x22c2ef[_0x536e('0x51')]);return db[_0x536e('0x67')]['count']({'where':_0x5ce30e[_0x536e('0x4b')]})[_0x536e('0x35')](function(_0x398e6e){_0x2a5a80['count']=_0x398e6e;if(_0x22c2ef[_0x536e('0x44')][_0x536e('0x53')]){_0x5ce30e[_0x536e('0x54')]=[{'all':!![]}];}return db[_0x536e('0x67')][_0x536e('0x55')](_0x5ce30e);})[_0x536e('0x35')](function(_0xa79667){_0x2a5a80[_0x536e('0x56')]=_0xa79667;return _0x2a5a80;});}})['then'](respondWithFilteredResult(_0x37bf6d,_0x5ce30e))[_0x536e('0x2a')](handleError(_0x37bf6d,null));};exports['removeDispositions']=function(_0x3dc117,_0x156ac6,_0x2595cf){return db[_0x536e('0x52')][_0x536e('0x62')]({'where':{'id':_0x3dc117[_0x536e('0x63')]['id']}})['then'](handleEntityNotFound(_0x156ac6,null))[_0x536e('0x35')](function(_0x20cbc1){if(_0x20cbc1){return _0x20cbc1['removeDispositions'](_0x3dc117['query'][_0x536e('0x6e')]);}})['then'](respondWithStatusCode(_0x156ac6,null))[_0x536e('0x2a')](handleError(_0x156ac6,null));};exports['addAnswer']=function(_0x3f4864,_0x1db8c3,_0x3c2fa8){if(_0x3f4864[_0x536e('0x61')]['id']){delete _0x3f4864[_0x536e('0x61')]['id'];}return db[_0x536e('0x52')]['find']({'where':{'id':_0x3f4864['params']['id']}})[_0x536e('0x35')](handleEntityNotFound(_0x1db8c3,null))[_0x536e('0x35')](function(_0x4c68f3){if(_0x4c68f3){_0x3f4864[_0x536e('0x61')][_0x536e('0x66')]=_0x4c68f3['id'];return db[_0x536e('0x6f')][_0x536e('0x5a')](_0x3f4864[_0x536e('0x61')]);}})[_0x536e('0x35')](respondWithResult(_0x1db8c3,null))[_0x536e('0x2a')](handleError(_0x1db8c3,null));};exports[_0x536e('0x70')]=function(_0x38c9fd,_0x249b9a,_0x72dfa1){var _0x1801a1={'raw':![],'where':{}};var _0x11b4d6={};var _0x5380ae={'count':0x0,'rows':[]};return db['OpenchannelAccount']['findOne']({'where':{'id':_0x38c9fd[_0x536e('0x63')]['id']}})[_0x536e('0x35')](handleEntityNotFound(_0x249b9a,null))[_0x536e('0x35')](function(_0x561c50){if(_0x561c50){_0x11b4d6['model']=_[_0x536e('0x45')](db['CannedAnswer'][_0x536e('0x59')]);_0x11b4d6[_0x536e('0x44')]=_[_0x536e('0x45')](_0x38c9fd[_0x536e('0x44')]);_0x11b4d6[_0x536e('0x4c')]=_[_0x536e('0x46')](_0x11b4d6[_0x536e('0x43')],_0x11b4d6[_0x536e('0x44')]);_0x1801a1[_0x536e('0x47')]=_[_0x536e('0x46')](_0x11b4d6[_0x536e('0x43')],qs[_0x536e('0x48')](_0x38c9fd[_0x536e('0x44')][_0x536e('0x48')]));_0x1801a1['attributes']=_0x1801a1['attributes'][_0x536e('0x49')]?_0x1801a1[_0x536e('0x47')]:_0x11b4d6[_0x536e('0x43')];if(!_0x38c9fd['query'][_0x536e('0x6a')](_0x536e('0x4a'))){_0x1801a1[_0x536e('0x2f')]=qs['limit'](_0x38c9fd[_0x536e('0x44')]['limit']);_0x1801a1[_0x536e('0x2e')]=qs[_0x536e('0x2e')](_0x38c9fd[_0x536e('0x44')][_0x536e('0x2e')]);}_0x1801a1[_0x536e('0x6b')]=qs[_0x536e('0x6c')](_0x38c9fd[_0x536e('0x44')]['sort']);_0x1801a1[_0x536e('0x4b')]=qs[_0x536e('0x4c')](_[_0x536e('0x6d')](_0x38c9fd[_0x536e('0x44')],_0x11b4d6[_0x536e('0x4c')]));_0x1801a1[_0x536e('0x4b')][_0x536e('0x66')]=_0x561c50['id'];if(_0x38c9fd['query']['filter']){_0x1801a1[_0x536e('0x4b')]=_[_0x536e('0x4e')](_0x1801a1[_0x536e('0x4b')],{'$or':_[_0x536e('0x40')](_0x1801a1[_0x536e('0x47')],function(_0x4c32a5){var _0x1db982={};_0x1db982[_0x4c32a5]={'$like':'%'+_0x38c9fd[_0x536e('0x44')][_0x536e('0x4d')]+'%'};return _0x1db982;})});}_0x1801a1=_[_0x536e('0x4e')]({},_0x1801a1,_0x38c9fd['options']);return db['CannedAnswer'][_0x536e('0x31')]({'where':_0x1801a1[_0x536e('0x4b')]})[_0x536e('0x35')](function(_0x4bde09){_0x5380ae[_0x536e('0x31')]=_0x4bde09;if(_0x38c9fd[_0x536e('0x44')][_0x536e('0x53')]){_0x1801a1['include']=[{'all':!![]}];}return db[_0x536e('0x6f')][_0x536e('0x55')](_0x1801a1);})['then'](function(_0x15af5f){_0x5380ae[_0x536e('0x56')]=_0x15af5f;return _0x5380ae;});}})[_0x536e('0x35')](respondWithFilteredResult(_0x249b9a,_0x1801a1))[_0x536e('0x2a')](handleError(_0x249b9a,null));};exports['removeAnswers']=function(_0x3caa4e,_0x31421d,_0x398167){return db['OpenchannelAccount'][_0x536e('0x62')]({'where':{'id':_0x3caa4e['params']['id']}})[_0x536e('0x35')](handleEntityNotFound(_0x31421d,null))['then'](function(_0x2b5426){if(_0x2b5426){return _0x2b5426[_0x536e('0x71')](_0x3caa4e['query']['ids']);}})['then'](respondWithStatusCode(_0x31421d,null))[_0x536e('0x2a')](handleError(_0x31421d,null));};exports[_0x536e('0x72')]=function(_0x15dde7,_0x483ce4,_0x4ca73c){var _0x30c599={'body':_0x15dde7[_0x536e('0x61')],'channel':'openchannel'};var _0x444af4=[];var _0x59b674=[];var _0x4087ef={};var _0x369e98=![];return db['CmContact']['describe']()[_0x536e('0x35')](function(_0x5d22f8){if(!_0x5d22f8){throw new db[(_0x536e('0x73'))][(_0x536e('0x74'))](_0x536e('0x75'));}_0x444af4=_[_0x536e('0x76')](_[_0x536e('0x45')](_0x5d22f8),['createdAt','updatedAt']);_0x59b674=_[_0x536e('0x76')](_[_0x536e('0x45')](_0x5d22f8),[_0x536e('0x77'),_0x536e('0x78'),_0x536e('0x79'),_0x536e('0x7a')]);if(_0x15dde7[_0x536e('0x61')]['id']){delete _0x15dde7[_0x536e('0x61')]['id'];}if(_['isNil'](_0x15dde7['body'][_0x536e('0x7b')])){throw new db['Sequelize'][(_0x536e('0x74'))](_0x536e('0x7c'));}if(_[_0x536e('0x7d')](_0x15dde7[_0x536e('0x61')][_0x536e('0x61')])||_0x15dde7[_0x536e('0x61')][_0x536e('0x61')]===''){throw new db['Sequelize'][(_0x536e('0x74'))](_0x536e('0x7e'));}if(_[_0x536e('0x7d')](_0x15dde7[_0x536e('0x61')][_0x536e('0x7f')])){throw new db[(_0x536e('0x73'))][(_0x536e('0x74'))](_0x536e('0x80')+_0x59b674);}if(!_[_0x536e('0x81')](_0x59b674,_0x15dde7[_0x536e('0x61')][_0x536e('0x7f')])){throw new db[(_0x536e('0x73'))][(_0x536e('0x74'))](_0x536e('0x82')+_0x59b674);}_0x4087ef[_0x15dde7[_0x536e('0x61')][_0x536e('0x7f')]]=_0x15dde7['body'][_0x536e('0x7b')];})[_0x536e('0x35')](function(){return db[_0x536e('0x52')][_0x536e('0x62')]({'where':{'id':_0x15dde7[_0x536e('0x63')]['id']},'include':[{'model':db[_0x536e('0x83')],'as':_0x536e('0x84'),'include':[{'model':db[_0x536e('0x85')],'as':'Contacts','where':_0x4087ef,'limit':0x1,'order':[['updatedAt',_0x536e('0x86')]]}]},{'model':db[_0x536e('0x87')],'as':_0x536e('0x88')}]});})[_0x536e('0x35')](handleEntityNotFound(_0x483ce4,null))[_0x536e('0x35')](function(_0x13ff75){if(_0x13ff75&&_0x13ff75[_0x536e('0x84')]){_0x30c599[_0x536e('0x89')]=_0x13ff75;_0x30c599[_0x536e('0x8a')]=_0x13ff75[_0x536e('0x88')];_0x30c599[_0x536e('0x8b')]=_0x13ff75[_0x536e('0x84')];_0x30c599[_0x536e('0x8a')]=_[_0x536e('0x8c')](_0x30c599[_0x536e('0x8a')],[_0x536e('0x8d')],['asc']);if(_0x30c599[_0x536e('0x89')]['Applications']){delete _0x30c599[_0x536e('0x89')][_0x536e('0x88')];}if(_0x30c599[_0x536e('0x89')][_0x536e('0x84')]&&_0x30c599[_0x536e('0x89')][_0x536e('0x84')][_0x536e('0x8e')][_0x536e('0x49')]){return _0x30c599[_0x536e('0x89')][_0x536e('0x84')][_0x536e('0x8e')][0x0];}var _0xc7f2da=_[_0x536e('0x19')](_0x15dde7[_0x536e('0x61')],{'firstName':_0x15dde7[_0x536e('0x61')][_0x536e('0x7b')],'ListId':_0x13ff75[_0x536e('0x7a')]});_0xc7f2da[_0x15dde7[_0x536e('0x61')][_0x536e('0x7f')]]=_0x15dde7[_0x536e('0x61')][_0x536e('0x7b')];return db[_0x536e('0x85')][_0x536e('0x5a')](_0xc7f2da,{'fields':_0x444af4,'raw':!![]});}})[_0x536e('0x35')](handleEntityNotFound(_0x483ce4,null))[_0x536e('0x35')](function(_0x334af2){_0x30c599[_0x536e('0x8f')]=_0x334af2;if(_0x334af2){var _0x389cc7={'ContactId':_0x334af2['id'],'OpenchannelAccountId':_0x15dde7['params']['id'],'from':(_0x334af2[_0x536e('0x90')]||'')+'\x20'+(_0x334af2[_0x536e('0x91')]||'')};var _0x69cd50={'OpenchannelAccountId':_0x15dde7['params']['id'],'closed':![]};if(_0x15dde7[_0x536e('0x61')]['threadId']){_0x69cd50[_0x536e('0x92')]=_0x15dde7[_0x536e('0x61')]['threadId'];return db[_0x536e('0x93')]['find']({'where':_0x69cd50})['then'](function(_0x336471){if(_0x336471){return[_0x336471,![]];}_0x389cc7[_0x536e('0x92')]=_0x15dde7['body']['threadId'];_0x389cc7['externalUrl']=_0x15dde7[_0x536e('0x61')][_0x536e('0x94')];return db[_0x536e('0x93')][_0x536e('0x5a')](_0x389cc7)[_0x536e('0x35')](function(_0x58b7ef){return[_0x58b7ef,!![]];});});}else{_0x69cd50[_0x536e('0x92')]=null;}_0x69cd50['ContactId']=_0x334af2['id'];return db[_0x536e('0x93')][_0x536e('0x62')]({'where':_0x69cd50})[_0x536e('0x35')](function(_0x1cb090){if(_0x1cb090){return[_0x1cb090,![]];}return db[_0x536e('0x93')][_0x536e('0x5a')](_0x389cc7)[_0x536e('0x35')](function(_0x33703c){return[_0x33703c,!![]];});});}})[_0x536e('0x95')](function(_0x154f62,_0x115adc){if(_0x154f62){_0x369e98=_0x115adc;if(!_0x115adc){var _0x2ed840={'from':(_0x30c599[_0x536e('0x8f')]['firstName']||'')+'\x20'+(_0x30c599[_0x536e('0x8f')]['lastName']||'')};if(_0x15dde7[_0x536e('0x61')][_0x536e('0x92')]&&_0x15dde7[_0x536e('0x61')][_0x536e('0x96')]&&_0x15dde7[_0x536e('0x61')]['threadId']!=_0x15dde7[_0x536e('0x61')][_0x536e('0x96')]){_0x2ed840[_0x536e('0x92')]=_0x15dde7[_0x536e('0x61')][_0x536e('0x96')];}return _0x154f62[_0x536e('0x34')](_0x2ed840);}else{return _0x154f62;}}})[_0x536e('0x35')](function(_0xda1486){_0x30c599[_0x536e('0x97')]=_0xda1486['get']({'plain':!![]});_0x30c599[_0x536e('0x97')][_0x536e('0x98')]=_0x369e98;if(_0x30c599[_0x536e('0x97')][_0x536e('0x98')]){if(_0x30c599[_0x536e('0x89')][_0x536e('0x99')]){_0x30c599['applications'][_0x536e('0x9a')]({'id':0x0,'priority':_0x30c599[_0x536e('0x8a')][_0x536e('0x49')]+0x1,'app':_0x536e('0x9b'),'appdata':_0x536e('0x9c'),'interval':'*,*,*,*'});}}return db[_0x536e('0x9d')][_0x536e('0x5a')]({'body':_0x15dde7[_0x536e('0x61')][_0x536e('0x61')],'OpenchannelAccountId':_0x15dde7[_0x536e('0x63')]['id'],'OpenchannelInteractionId':_0xda1486['id'],'direction':'in','ContactId':_0x30c599[_0x536e('0x8f')]['id'],'AttachmentId':_0x15dde7[_0x536e('0x61')]['AttachmentId']});})['then'](function(_0x4a9b3b){_0x30c599['message']=_0x4a9b3b;if(_0x30c599[_0x536e('0x97')][_0x536e('0x9e')]){return db['User'][_0x536e('0x62')]({'attributes':['id',_0x536e('0x3c')],'where':{'id':_0x30c599['interaction'][_0x536e('0x9e')]}})['then'](function(_0x9fdd92){if(_0x9fdd92){_0x30c599[_0x536e('0x8a')][_0x536e('0x9f')]({'id':0x0,'priority':0x0,'app':_0x536e('0xa0'),'appdata':_0x9fdd92[_0x536e('0x3c')]+','+(_0x30c599[_0x536e('0x89')][_0x536e('0xa1')]||0xa),'interval':_0x536e('0xa2')});_0x30c599['forcedOwnership']=![];}return respondWithRpcPromise(_0x536e('0xa3'),_0x536e('0xa4'),_0x30c599);});}return respondWithRpcPromise('Start',_0x536e('0xa4'),_0x30c599);})[_0x536e('0x35')](function(_0x39acc9){respondWithRpcPromise('EventManager',_0x536e('0xa5'),{'event':_0x536e('0x72'),'message':_0x39acc9},client9002);return _0x39acc9;})[_0x536e('0x35')](respondWithResult(_0x483ce4,null))['catch'](handleError(_0x483ce4,null));};exports[_0x536e('0xa6')]=function(_0x43fabd,_0x2ad602,_0x50a707){return db[_0x536e('0x52')][_0x536e('0x69')]({'where':{'id':_0x43fabd['params']['id']}})[_0x536e('0x35')](handleEntityNotFound(_0x2ad602,null))[_0x536e('0x35')](function(_0x1815f9){if(_0x1815f9){return db['sequelize'][_0x536e('0xa7')](function(_0x4d1fac){return db[_0x536e('0x87')]['destroy']({'where':{'OpenchannelAccountId':_0x43fabd[_0x536e('0x63')]['id']},'transaction':_0x4d1fac})[_0x536e('0x35')](function(_0x505cca){var _0x3172a9=_['map'](_0x43fabd[_0x536e('0x61')],function(_0x5d021d){_0x5d021d[_0x536e('0x66')]=_0x43fabd['params']['id'];return _0x5d021d;});return db[_0x536e('0x87')][_0x536e('0xa8')](_0x3172a9,{'transaction':_0x4d1fac});});})[_0x536e('0x35')](function(){return db[_0x536e('0x87')][_0x536e('0xa9')]({'where':{'OpenchannelAccountId':_0x43fabd[_0x536e('0x63')]['id']},'order':_0x536e('0x8d')});});}})[_0x536e('0x35')](respondWithResult(_0x2ad602,null))[_0x536e('0x2a')](handleError(_0x2ad602,null));};exports[_0x536e('0xaa')]=function(_0x302224,_0x941c97,_0x5d9f62){var _0x183bbf={};var _0x1e2e2a={};var _0x1f3ad3;var _0x48417e;return db[_0x536e('0x52')]['findOne']({'where':{'id':_0x302224['params']['id']}})[_0x536e('0x35')](handleEntityNotFound(_0x941c97,null))[_0x536e('0x35')](function(_0x423956){if(_0x423956){_0x1f3ad3=_0x423956;_0x1e2e2a[_0x536e('0x43')]=_['keys'](db[_0x536e('0x87')][_0x536e('0x59')]);_0x1e2e2a['query']=_['keys'](_0x302224[_0x536e('0x44')]);_0x1e2e2a[_0x536e('0x4c')]=_[_0x536e('0x46')](_0x1e2e2a[_0x536e('0x43')],_0x1e2e2a[_0x536e('0x44')]);_0x183bbf['attributes']=_['intersection'](_0x1e2e2a[_0x536e('0x43')],qs[_0x536e('0x48')](_0x302224['query'][_0x536e('0x48')]));_0x183bbf[_0x536e('0x47')]=_0x183bbf[_0x536e('0x47')]['length']?_0x183bbf[_0x536e('0x47')]:_0x1e2e2a[_0x536e('0x43')];_0x183bbf[_0x536e('0x6b')]=qs[_0x536e('0x6c')](_0x302224[_0x536e('0x44')][_0x536e('0x6c')]);_0x183bbf['where']=qs[_0x536e('0x4c')](_[_0x536e('0x6d')](_0x302224[_0x536e('0x44')],_0x1e2e2a['filters']));if(_0x302224['query'][_0x536e('0x4d')]){_0x183bbf[_0x536e('0x4b')]=_['merge'](_0x183bbf[_0x536e('0x4b')],{'$or':_[_0x536e('0x40')](_0x183bbf[_0x536e('0x47')],function(_0x4c5dc4){var _0x3ca99f={};_0x3ca99f[_0x4c5dc4]={'$like':'%'+_0x302224[_0x536e('0x44')][_0x536e('0x4d')]+'%'};return _0x3ca99f;})});}_0x183bbf=_[_0x536e('0x4e')]({},_0x183bbf,_0x302224['options']);return _0x1f3ad3[_0x536e('0xaa')](_0x183bbf);}})[_0x536e('0x35')](function(_0x50c718){if(_0x50c718){_0x48417e=_0x50c718[_0x536e('0x49')];if(!_0x302224[_0x536e('0x44')]['hasOwnProperty'](_0x536e('0x4a'))){_0x183bbf[_0x536e('0x2f')]=qs[_0x536e('0x2f')](_0x302224[_0x536e('0x44')][_0x536e('0x2f')]);_0x183bbf['offset']=qs[_0x536e('0x2e')](_0x302224[_0x536e('0x44')][_0x536e('0x2e')]);}return _0x1f3ad3[_0x536e('0xaa')](_0x183bbf);}})[_0x536e('0x35')](function(_0x153668){if(_0x153668){return _0x153668?{'count':_0x48417e,'rows':_0x153668}:null;}})[_0x536e('0x35')](respondWithResult(_0x941c97,null))[_0x536e('0x2a')](handleError(_0x941c97,null));};exports[_0x536e('0xab')]=function(_0x2e9cbb,_0x31a49d,_0xbb6b28){var _0x514097={'raw':![],'where':{}};var _0x288872={};var _0x3c7abb={'count':0x0,'rows':[]};return db[_0x536e('0x52')]['findOne']({'where':{'id':_0x2e9cbb[_0x536e('0x63')]['id']}})[_0x536e('0x35')](handleEntityNotFound(_0x31a49d,null))['then'](function(_0x26c01b){if(_0x26c01b){_0x288872[_0x536e('0x43')]=_[_0x536e('0x45')](db[_0x536e('0x93')][_0x536e('0x59')]);_0x288872[_0x536e('0x44')]=_[_0x536e('0x45')](_0x2e9cbb[_0x536e('0x44')]);_0x288872[_0x536e('0x4c')]=_[_0x536e('0x46')](_0x288872[_0x536e('0x43')],_0x288872['query']);_0x514097[_0x536e('0x47')]=_[_0x536e('0x46')](_0x288872[_0x536e('0x43')],qs[_0x536e('0x48')](_0x2e9cbb[_0x536e('0x44')]['fields']));_0x514097[_0x536e('0x47')]=_0x514097[_0x536e('0x47')][_0x536e('0x49')]?_0x514097['attributes']:_0x288872[_0x536e('0x43')];if(!_0x2e9cbb[_0x536e('0x44')]['hasOwnProperty'](_0x536e('0x4a'))){_0x514097[_0x536e('0x2f')]=qs[_0x536e('0x2f')](_0x2e9cbb['query']['limit']);_0x514097['offset']=qs[_0x536e('0x2e')](_0x2e9cbb[_0x536e('0x44')]['offset']);}_0x514097[_0x536e('0x6b')]=qs[_0x536e('0x6c')](_0x2e9cbb[_0x536e('0x44')][_0x536e('0x6c')]);_0x514097[_0x536e('0x4b')]=qs['filters'](_[_0x536e('0x6d')](_0x2e9cbb['query'],_0x288872[_0x536e('0x4c')]));_0x514097['where'][_0x536e('0x66')]=_0x26c01b['id'];if(_0x2e9cbb[_0x536e('0x44')]['filter']){_0x514097['where']=_['merge'](_0x514097['where'],{'$or':_['map'](_0x514097['attributes'],function(_0x4fe8e5){var _0x315ef2={};_0x315ef2[_0x4fe8e5]={'$like':'%'+_0x2e9cbb[_0x536e('0x44')][_0x536e('0x4d')]+'%'};return _0x315ef2;})});}_0x514097=_[_0x536e('0x4e')]({},_0x514097,_0x2e9cbb['options']);return db[_0x536e('0x93')][_0x536e('0x31')]({'where':_0x514097['where']})['then'](function(_0x4b8a57){_0x3c7abb['count']=_0x4b8a57;if(_0x2e9cbb[_0x536e('0x44')][_0x536e('0x53')]){_0x514097[_0x536e('0x54')]=[{'model':db[_0x536e('0x85')],'as':_0x536e('0xac'),'required':![]},{'model':db[_0x536e('0xad')],'as':_0x536e('0xae'),'attributes':['name',_0x536e('0xaf'),'internal'],'required':![]},{'model':db[_0x536e('0xb0')],'as':_0x536e('0xb1'),'attributes':['id','name','color'],'where':_0x2e9cbb[_0x536e('0x44')][_0x536e('0xb2')]?{'id':_0x2e9cbb['query']['tag']}:undefined,'required':_0x2e9cbb[_0x536e('0x44')]['tag']?!![]:![]}];}return db[_0x536e('0x93')][_0x536e('0x55')](_0x514097);})[_0x536e('0x35')](function(_0x5cbe32){_0x3c7abb[_0x536e('0x56')]=_0x5cbe32;return _0x3c7abb;});}})[_0x536e('0x35')](respondWithFilteredResult(_0x31a49d,_0x514097))[_0x536e('0x2a')](handleError(_0x31a49d,null));};exports[_0x536e('0xb3')]=function(_0x44dfab,_0x38f02e,_0x3e6f5c){return db[_0x536e('0x52')][_0x536e('0x62')]({'where':{'id':_0x44dfab[_0x536e('0x63')]['id']}})[_0x536e('0x35')](handleEntityNotFound(_0x38f02e,null))['then'](function(_0xb17244){if(_0xb17244){return _0xb17244[_0x536e('0xb3')](_0x44dfab['body'][_0x536e('0x6e')],_[_0x536e('0xb4')](_0x44dfab[_0x536e('0x61')],[_0x536e('0x6e'),'id'])||{})[_0x536e('0x95')](function(_0x1a6530){for(var _0xfa54bb=0x0;_0xfa54bb<_0x44dfab['body'][_0x536e('0x6e')]['length'];_0xfa54bb+=0x1){socket['emit'](_0x536e('0xb5'),{'UserId':Number(_0x44dfab[_0x536e('0x61')][_0x536e('0x6e')][_0xfa54bb]),'OpenchannelAccountId':Number(_0x44dfab[_0x536e('0x63')]['id'])});}return _0x1a6530;});}})[_0x536e('0x35')](respondWithResult(_0x38f02e,null))[_0x536e('0x2a')](handleError(_0x38f02e,null));};exports['removeAgents']=function(_0x58ec56,_0x13240f,_0x120088){return db[_0x536e('0x52')][_0x536e('0x62')]({'where':{'id':_0x58ec56[_0x536e('0x63')]['id']}})[_0x536e('0x35')](handleEntityNotFound(_0x13240f,null))['then'](function(_0x4eded9){if(_0x4eded9){return _0x4eded9[_0x536e('0xb6')](_0x58ec56['query'][_0x536e('0x6e')])[_0x536e('0x35')](function(){if(_[_0x536e('0xb7')](_0x58ec56['query'][_0x536e('0x6e')])){for(var _0x5113db=0x0;_0x5113db<_0x58ec56['query'][_0x536e('0x6e')][_0x536e('0x49')];_0x5113db+=0x1){socket[_0x536e('0xb8')](_0x536e('0xb9'),{'UserId':Number(_0x58ec56[_0x536e('0x44')][_0x536e('0x6e')][_0x5113db]),'OpenchannelAccountId':Number(_0x58ec56[_0x536e('0x63')]['id'])});}}else{socket[_0x536e('0xb8')](_0x536e('0xb9'),{'UserId':Number(_0x58ec56['query'][_0x536e('0x6e')]),'OpenchannelAccountId':Number(_0x58ec56['params']['id'])});}});}})[_0x536e('0x35')](respondWithStatusCode(_0x13240f,null))[_0x536e('0x2a')](handleError(_0x13240f,null));};exports['getAgents']=function(_0x5a7cd5,_0x379632,_0x25b954){var _0xe6d781={};var _0x59db8b={};var _0x31a7fe;var _0x45e291;return db[_0x536e('0x52')][_0x536e('0x69')]({'where':{'id':_0x5a7cd5[_0x536e('0x63')]['id']}})['then'](handleEntityNotFound(_0x379632,null))['then'](function(_0x423e0f){if(_0x423e0f){_0x31a7fe=_0x423e0f;_0x59db8b['model']=_[_0x536e('0x45')](db[_0x536e('0xad')][_0x536e('0x59')]);_0x59db8b['query']=_[_0x536e('0x45')](_0x5a7cd5[_0x536e('0x44')]);_0x59db8b[_0x536e('0x4c')]=_[_0x536e('0x46')](_0x59db8b[_0x536e('0x43')],_0x59db8b[_0x536e('0x44')]);_0xe6d781[_0x536e('0x47')]=_['intersection'](_0x59db8b[_0x536e('0x43')],qs[_0x536e('0x48')](_0x5a7cd5['query'][_0x536e('0x48')]));_0xe6d781[_0x536e('0x47')]=_0xe6d781['attributes']['length']?_0xe6d781[_0x536e('0x47')]:_0x59db8b[_0x536e('0x43')];_0xe6d781[_0x536e('0x6b')]=qs['sort'](_0x5a7cd5[_0x536e('0x44')][_0x536e('0x6c')]);_0xe6d781['where']=qs[_0x536e('0x4c')](_[_0x536e('0x6d')](_0x5a7cd5[_0x536e('0x44')],_0x59db8b[_0x536e('0x4c')]));if(_0x5a7cd5[_0x536e('0x44')][_0x536e('0x4d')]){_0xe6d781[_0x536e('0x4b')]=_[_0x536e('0x4e')](_0xe6d781[_0x536e('0x4b')],{'$or':_[_0x536e('0x40')](_0xe6d781[_0x536e('0x47')],function(_0x5bdd49){var _0x36e610={};_0x36e610[_0x5bdd49]={'$like':'%'+_0x5a7cd5[_0x536e('0x44')][_0x536e('0x4d')]+'%'};return _0x36e610;})});}_0xe6d781=_['merge']({},_0xe6d781,_0x5a7cd5[_0x536e('0x51')]);return _0x31a7fe[_0x536e('0xba')](_0xe6d781);}})[_0x536e('0x35')](function(_0x406104){if(_0x406104){_0x45e291=_0x406104['length'];if(!_0x5a7cd5[_0x536e('0x44')][_0x536e('0x6a')](_0x536e('0x4a'))){_0xe6d781[_0x536e('0x2f')]=qs[_0x536e('0x2f')](_0x5a7cd5[_0x536e('0x44')][_0x536e('0x2f')]);_0xe6d781[_0x536e('0x2e')]=qs[_0x536e('0x2e')](_0x5a7cd5[_0x536e('0x44')][_0x536e('0x2e')]);}return _0x31a7fe[_0x536e('0xba')](_0xe6d781);}})['then'](function(_0x4800a3){if(_0x4800a3){return _0x4800a3?{'count':_0x45e291,'rows':_0x4800a3}:null;}})[_0x536e('0x35')](respondWithResult(_0x379632,null))['catch'](handleError(_0x379632,null));};exports[_0x536e('0x3d')]=function(_0x4f7e56,_0x440101,_0x34ed7b){var _0x2e5836,_0x3077cc,_0x466aaa;if(_['isNil'](_0x4f7e56['body'][_0x536e('0x61')])||_0x4f7e56[_0x536e('0x61')][_0x536e('0x61')]===''){throw new db[(_0x536e('0x73'))][(_0x536e('0x74'))](_0x536e('0x7e'));}if(_['isNil'](_0x4f7e56[_0x536e('0x61')]['to'])){}_0x2e5836=_0x4f7e56[_0x536e('0x61')]['to'];return db['OpenchannelAccount'][_0x536e('0x69')]({'where':{'id':_0x4f7e56[_0x536e('0x63')]['id']}})['then'](handleEntityNotFound(_0x440101,null))[_0x536e('0x35')](function(_0x505b84){if(_0x505b84){return db[_0x536e('0x52')][_0x536e('0x62')]({'where':{'id':_0x505b84['id']},'include':[{'model':db[_0x536e('0x83')],'as':'List','include':[{'model':db[_0x536e('0x85')],'as':_0x536e('0x8e'),'where':{[_0x505b84[_0x536e('0x7f')]]:_0x2e5836},'limit':0x1,'order':[['updatedAt',_0x536e('0x86')]]}]}]})[_0x536e('0x35')](handleEntityNotFound(_0x440101,null))[_0x536e('0x35')](function(_0x524d92){if(_0x524d92&&_0x524d92[_0x536e('0x84')]){_0x3077cc=_0x524d92['get']({'plain':!![]});if(_0x3077cc[_0x536e('0x84')]&&_0x3077cc[_0x536e('0x84')]['Contacts']['length']){return _0x3077cc[_0x536e('0x84')][_0x536e('0x8e')][0x0];}return db[_0x536e('0x85')][_0x536e('0x5a')](_[_0x536e('0x19')](_0x4f7e56[_0x536e('0x61')],{'firstName':_0x2e5836,[_0x524d92['mapKey']]:_0x2e5836,'phone':_0x2e5836,'ListId':_0x3077cc[_0x536e('0x7a')]}));}})[_0x536e('0x35')](handleEntityNotFound(_0x440101,null))[_0x536e('0x35')](function(_0x4a8533){if(_0x4a8533){_0x466aaa=_0x4a8533;return db[_0x536e('0x93')]['find']({'where':{'ContactId':_0x466aaa['id'],'closed':![],'OpenchannelAccountId':_0x3077cc['id']}})[_0x536e('0x35')](function(_0x2476df){if(_0x2476df){return[_0x2476df,![]];}return db[_0x536e('0x93')][_0x536e('0x5a')]({'UserId':_0x4f7e56['user']['id'],'ContactId':_0x466aaa['id'],'OpenchannelAccountId':_0x3077cc['id'],'lastMsgDirection':_0x536e('0xbb'),'Messages':[_['merge'](_0x4f7e56[_0x536e('0x61')],{'read':![],'body':_0x4f7e56[_0x536e('0x61')][_0x536e('0x61')],'OpenchannelAccountId':_0x3077cc['id'],'UserId':_0x4f7e56['user']['id'],'ContactId':_0x466aaa['id']})]},{'include':[{'model':db[_0x536e('0x9d')],'as':_0x536e('0xbc')}]})[_0x536e('0x35')](function(_0x555a36){return[_0x555a36,!![]];});});}})[_0x536e('0x95')](function(_0x395f55,_0x2e1211){if(_0x2e1211){return _0x395f55;}return db['OpenchannelMessage'][_0x536e('0x5a')](_[_0x536e('0x4e')](_0x4f7e56[_0x536e('0x61')],{'read':![],'body':_0x4f7e56[_0x536e('0x61')][_0x536e('0x61')],'OpenchannelAccountId':_0x3077cc['id'],'OpenchannelInteractionId':_0x395f55['id'],'UserId':_0x4f7e56['user']['id'],'ContactId':_0x466aaa['id']}))[_0x536e('0x35')](function(_0x27cacd){_0x395f55[_0x536e('0xbd')][_0x536e('0xbc')]=[];_0x395f55['dataValues'][_0x536e('0xbc')][_0x536e('0x9a')](_0x27cacd['dataValues']);return _0x395f55;});});}})[_0x536e('0x35')](respondWithResult(_0x440101,null))['catch'](handleError(_0x440101,null));};
\ No newline at end of file
+var _0xe68e=['intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','findAll','rows','show','mandatoryDispositionPause','keys','include','merge','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','params','addDisposition','OpenchannelAccountId','Disposition','getDispositions','includeAll','removeDispositions','addAnswer','getAnswers','findOne','CannedAnswer','rawAttributes','removeAnswers','ids','notify','CmContact','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','DESC','OpenchannelApplication','List','account','applications','Applications','list','priority','asc','contact','firstName','lastName','threadId','externalUrl','OpenchannelInteraction','ContactId','spread','messageId','interaction','created','autoclose','push','unmanaged','*,*,*,*','OpenchannelMessage','UserId','User','agent','waitForTheAssignedAgent','forcedOwnership','startRouting','Start','EventManager','sequelize','bulkCreate','findAndCountAll','getApplications','getInteractions','Contact','Owner','fullname','Tag','Tags','color','tag','addAgents','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','jayson/promise','client','http','request','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','get','OpenchannelAccounts','UserProfileResource','destroy','then','end','name','send','index','Pause','map','OpenchannelAccount','type','model','query','filters'];(function(_0x2c0ac2,_0x3f250e){var _0x1909cc=function(_0x2b9c54){while(--_0x2b9c54){_0x2c0ac2['push'](_0x2c0ac2['shift']());}};_0x1909cc(++_0x3f250e);}(_0xe68e,0x12c));var _0xee68=function(_0x39b07e,_0x33b057){_0x39b07e=_0x39b07e-0x0;var _0x591dae=_0xe68e[_0x39b07e];return _0x591dae;};'use strict';var emlformat=require(_0xee68('0x0'));var rimraf=require(_0xee68('0x1'));var zipdir=require(_0xee68('0x2'));var jsonpatch=require(_0xee68('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xee68('0x4'));var util=require('util');var path=require(_0xee68('0x5'));var sox=require(_0xee68('0x6'));var csv=require(_0xee68('0x7'));var ejs=require(_0xee68('0x8'));var fs=require('fs');var fs_extra=require(_0xee68('0x9'));var _=require(_0xee68('0xa'));var squel=require(_0xee68('0xb'));var crypto=require('crypto');var jsforce=require(_0xee68('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xee68('0x7'));var querystring=require(_0xee68('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xee68('0xe'));var qs=require(_0xee68('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xee68('0x10'));var logger=require(_0xee68('0x11'))('api');var utils=require(_0xee68('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xee68('0x13'));var db=require('../../mysqldb')['db'];config[_0xee68('0x14')]=_[_0xee68('0x15')](config[_0xee68('0x14')],{'host':_0xee68('0x16'),'port':0x18eb});var socket=require(_0xee68('0x17'))(new Redis(config[_0xee68('0x14')]));require(_0xee68('0x18'))[_0xee68('0x19')](socket);var jayson=require(_0xee68('0x1a'));var client=jayson[_0xee68('0x1b')][_0xee68('0x1c')]({'port':0x232c});var client9002=jayson[_0xee68('0x1b')][_0xee68('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x497482,_0x14ec5d,_0x57d981,_0xcf22c8){return new BPromise(function(_0x30aeda,_0x48302f){var _0x4ec9c5=_0xcf22c8||client;return _0x4ec9c5[_0xee68('0x1d')](_0x497482,_0x57d981)['then'](function(_0x56f667){logger[_0xee68('0x1e')](_0xee68('0x1f'),_0x14ec5d,_0xee68('0x20'));logger[_0xee68('0x21')](_0xee68('0x22'),_0x14ec5d,'request\x20sent',JSON[_0xee68('0x23')](_0x56f667));if(_0x56f667[_0xee68('0x24')]){if(_0x56f667[_0xee68('0x24')][_0xee68('0x25')]===0x1f4){logger['error'](_0xee68('0x1f'),_0x14ec5d,_0x56f667[_0xee68('0x24')]['message']);return _0x48302f(_0x56f667[_0xee68('0x24')]['message']);}logger[_0xee68('0x24')](_0xee68('0x1f'),_0x14ec5d,_0x56f667[_0xee68('0x24')]['message']);return _0x30aeda(_0x56f667[_0xee68('0x24')][_0xee68('0x26')]);}else{logger[_0xee68('0x1e')](_0xee68('0x1f'),_0x14ec5d,_0xee68('0x20'));_0x30aeda(_0x56f667[_0xee68('0x27')][_0xee68('0x26')]);}})[_0xee68('0x28')](function(_0x4ca3d5){logger['error'](_0xee68('0x1f'),_0x14ec5d,_0x4ca3d5);_0x48302f(_0x4ca3d5);});});}function respondWithStatusCode(_0x26a2f8,_0x4d2540){_0x4d2540=_0x4d2540||0xcc;return function(_0x3a6f73){if(_0x3a6f73){return _0x26a2f8[_0xee68('0x29')](_0x4d2540);}return _0x26a2f8[_0xee68('0x2a')](_0x4d2540)['end']();};}function respondWithResult(_0x42c473,_0x23c3a3){_0x23c3a3=_0x23c3a3||0xc8;return function(_0x4f7aac){if(_0x4f7aac){return _0x42c473['status'](_0x23c3a3)[_0xee68('0x2b')](_0x4f7aac);}};}function respondWithFilteredResult(_0x2c8c3b,_0xd746df){return function(_0x23933a){if(_0x23933a){var _0x5a0817=typeof _0xd746df[_0xee68('0x2c')]===_0xee68('0x2d')&&typeof _0xd746df[_0xee68('0x2e')]===_0xee68('0x2d');var _0x5123cd=_0x23933a[_0xee68('0x2f')];var _0x587be4=_0x5a0817?0x0:_0xd746df['offset'];var _0x428655=_0x5a0817?_0x23933a[_0xee68('0x2f')]:_0xd746df[_0xee68('0x2c')]+_0xd746df[_0xee68('0x2e')];var _0x55a463;if(_0x428655>=_0x5123cd){_0x428655=_0x5123cd;_0x55a463=0xc8;}else{_0x55a463=0xce;}_0x2c8c3b[_0xee68('0x2a')](_0x55a463);return _0x2c8c3b['set'](_0xee68('0x30'),_0x587be4+'-'+_0x428655+'/'+_0x5123cd)[_0xee68('0x2b')](_0x23933a);}return null;};}function patchUpdates(_0x4b07d9){return function(_0x5cd81b){try{jsonpatch[_0xee68('0x31')](_0x5cd81b,_0x4b07d9,!![]);}catch(_0x24bfc6){return BPromise['reject'](_0x24bfc6);}return _0x5cd81b[_0xee68('0x32')]();};}function saveUpdates(_0x35edb7,_0x4e4540){return function(_0x210148){if(_0x210148){return _0x210148[_0xee68('0x33')](_0x35edb7)['then'](function(_0x1733ec){return _0x1733ec;});}return null;};}function removeEntity(_0xfafbb6,_0x17c634){return function(_0x3d3de1){if(_0x3d3de1){return _0x3d3de1['destroy']()['then'](function(){var _0x1a41ff=_0x3d3de1[_0xee68('0x34')]({'plain':!![]});var _0xd6243d=_0xee68('0x35');return db[_0xee68('0x36')][_0xee68('0x37')]({'where':{'type':_0xd6243d,'resourceId':_0x1a41ff['id']}})[_0xee68('0x38')](function(){return _0x3d3de1;});})[_0xee68('0x38')](function(){_0xfafbb6['status'](0xcc)[_0xee68('0x39')]();});}};}function handleEntityNotFound(_0x5f5736,_0x2af34f){return function(_0xbedbd2){if(!_0xbedbd2){_0x5f5736[_0xee68('0x29')](0x194);}return _0xbedbd2;};}function handleError(_0x55d721,_0x3a6a89){_0x3a6a89=_0x3a6a89||0x1f4;return function(_0x36ff93){logger[_0xee68('0x24')](_0x36ff93['stack']);if(_0x36ff93[_0xee68('0x3a')]){delete _0x36ff93['name'];}_0x55d721[_0xee68('0x2a')](_0x3a6a89)[_0xee68('0x3b')](_0x36ff93);};}exports[_0xee68('0x3c')]=function(_0x4c4528,_0x591ef0){var _0x4c2a23={'include':[{'model':db[_0xee68('0x3d')],'as':'mandatoryDispositionPause'}]},_0x2dbefa={},_0x58cdff={'count':0x0,'rows':[]};var _0x528795=_[_0xee68('0x3e')](db[_0xee68('0x3f')]['rawAttributes'],function(_0x37d57e){return{'name':_0x37d57e['fieldName'],'type':_0x37d57e[_0xee68('0x40')]['key']};});_0x2dbefa[_0xee68('0x41')]=_['map'](_0x528795,_0xee68('0x3a'));_0x2dbefa[_0xee68('0x42')]=_['keys'](_0x4c4528[_0xee68('0x42')]);_0x2dbefa[_0xee68('0x43')]=_[_0xee68('0x44')](_0x2dbefa['model'],_0x2dbefa[_0xee68('0x42')]);_0x4c2a23[_0xee68('0x45')]=_[_0xee68('0x44')](_0x2dbefa[_0xee68('0x41')],qs[_0xee68('0x46')](_0x4c4528[_0xee68('0x42')]['fields']));_0x4c2a23[_0xee68('0x45')]=_0x4c2a23[_0xee68('0x45')][_0xee68('0x47')]?_0x4c2a23['attributes']:_0x2dbefa[_0xee68('0x41')];if(!_0x4c4528[_0xee68('0x42')][_0xee68('0x48')](_0xee68('0x49'))){_0x4c2a23[_0xee68('0x2e')]=qs[_0xee68('0x2e')](_0x4c4528['query'][_0xee68('0x2e')]);_0x4c2a23['offset']=qs[_0xee68('0x2c')](_0x4c4528[_0xee68('0x42')]['offset']);}_0x4c2a23[_0xee68('0x4a')]=qs[_0xee68('0x4b')](_0x4c4528[_0xee68('0x42')][_0xee68('0x4b')]);_0x4c2a23[_0xee68('0x4c')]=qs['filters'](_[_0xee68('0x4d')](_0x4c4528[_0xee68('0x42')],_0x2dbefa[_0xee68('0x43')]),_0x528795);if(_0x4c4528[_0xee68('0x42')][_0xee68('0x4e')]){_0x4c2a23[_0xee68('0x4c')]=_['merge'](_0x4c2a23[_0xee68('0x4c')],{'$or':_['map'](_0x528795,function(_0x5d93f4){if(_0x5d93f4[_0xee68('0x40')]!==_0xee68('0x4f')){var _0x34a4ab={};_0x34a4ab[_0x5d93f4[_0xee68('0x3a')]]={'$like':'%'+_0x4c4528['query']['filter']+'%'};return _0x34a4ab;}})});}_0x4c2a23=_['merge']({},_0x4c2a23,_0x4c4528[_0xee68('0x50')]);var _0x41906b={'where':_0x4c2a23[_0xee68('0x4c')]};return db['OpenchannelAccount'][_0xee68('0x2f')](_0x41906b)[_0xee68('0x38')](function(_0x2ce4da){_0x58cdff[_0xee68('0x2f')]=_0x2ce4da;if(_0x4c4528['query']['includeAll']){_0x4c2a23['include']=[{'all':!![]}];}return db['OpenchannelAccount'][_0xee68('0x51')](_0x4c2a23);})['then'](function(_0x521716){_0x58cdff[_0xee68('0x52')]=_0x521716;return _0x58cdff;})[_0xee68('0x38')](respondWithFilteredResult(_0x591ef0,_0x4c2a23))[_0xee68('0x28')](handleError(_0x591ef0,null));};exports[_0xee68('0x53')]=function(_0x6a00c3,_0x138b45){var _0x2ad7c8={'raw':![],'where':{'id':_0x6a00c3['params']['id']},'include':[{'model':db[_0xee68('0x3d')],'as':_0xee68('0x54')}]},_0x5c0f58={};_0x5c0f58[_0xee68('0x41')]=_[_0xee68('0x55')](db[_0xee68('0x3f')]['rawAttributes']);_0x5c0f58[_0xee68('0x42')]=_['keys'](_0x6a00c3[_0xee68('0x42')]);_0x5c0f58[_0xee68('0x43')]=_['intersection'](_0x5c0f58[_0xee68('0x41')],_0x5c0f58[_0xee68('0x42')]);_0x2ad7c8[_0xee68('0x45')]=_[_0xee68('0x44')](_0x5c0f58[_0xee68('0x41')],qs['fields'](_0x6a00c3['query'][_0xee68('0x46')]));_0x2ad7c8['attributes']=_0x2ad7c8[_0xee68('0x45')][_0xee68('0x47')]?_0x2ad7c8[_0xee68('0x45')]:_0x5c0f58[_0xee68('0x41')];if(_0x6a00c3[_0xee68('0x42')]['includeAll']){_0x2ad7c8[_0xee68('0x56')]=[{'all':!![]}];}_0x2ad7c8=_[_0xee68('0x57')]({},_0x2ad7c8,_0x6a00c3[_0xee68('0x50')]);return db[_0xee68('0x3f')]['find'](_0x2ad7c8)['then'](handleEntityNotFound(_0x138b45,null))[_0xee68('0x38')](respondWithResult(_0x138b45,null))[_0xee68('0x28')](handleError(_0x138b45,null));};exports[_0xee68('0x58')]=function(_0x472fcc,_0x371d88){return db[_0xee68('0x3f')][_0xee68('0x58')](_0x472fcc[_0xee68('0x59')],{})['then'](function(_0x4bcc5c){var _0xc6c120=_0x472fcc[_0xee68('0x5a')][_0xee68('0x34')]({'plain':!![]});if(!_0xc6c120)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xc6c120[_0xee68('0x5b')]===_0xee68('0x5a')){var _0x473e98=_0x4bcc5c[_0xee68('0x34')]({'plain':!![]});var _0x237114=_0xee68('0x35');return db[_0xee68('0x5c')]['find']({'where':{'name':_0x237114,'userProfileId':_0xc6c120[_0xee68('0x5d')]},'raw':!![]})[_0xee68('0x38')](function(_0x9b4e18){if(_0x9b4e18&&_0x9b4e18[_0xee68('0x5e')]===0x0){return db[_0xee68('0x36')][_0xee68('0x58')]({'name':_0x473e98[_0xee68('0x3a')],'resourceId':_0x473e98['id'],'type':_0x9b4e18[_0xee68('0x3a')],'sectionId':_0x9b4e18['id']},{})['then'](function(){return _0x4bcc5c;});}else{return _0x4bcc5c;}})[_0xee68('0x28')](function(_0x4f6c59){logger[_0xee68('0x24')](_0xee68('0x5f'),_0x4f6c59);throw _0x4f6c59;});}return _0x4bcc5c;})[_0xee68('0x38')](respondWithResult(_0x371d88,0xc9))[_0xee68('0x28')](handleError(_0x371d88,null));};exports[_0xee68('0x33')]=function(_0x40e7f9,_0x273470){if(_0x40e7f9[_0xee68('0x59')]['id']){delete _0x40e7f9['body']['id'];}return db['OpenchannelAccount'][_0xee68('0x60')]({'where':{'id':_0x40e7f9[_0xee68('0x61')]['id']},'include':[{'model':db[_0xee68('0x3d')],'as':_0xee68('0x54')}]})['then'](handleEntityNotFound(_0x273470,null))[_0xee68('0x38')](saveUpdates(_0x40e7f9[_0xee68('0x59')],null))[_0xee68('0x38')](respondWithResult(_0x273470,null))[_0xee68('0x28')](handleError(_0x273470,null));};exports[_0xee68('0x37')]=function(_0xc844b6,_0x4e3cbe){return db[_0xee68('0x3f')][_0xee68('0x60')]({'where':{'id':_0xc844b6['params']['id']}})[_0xee68('0x38')](handleEntityNotFound(_0x4e3cbe,null))[_0xee68('0x38')](removeEntity(_0x4e3cbe,null))[_0xee68('0x28')](handleError(_0x4e3cbe,null));};exports['describe']=function(_0xe836a6,_0x9e94a){return db[_0xee68('0x3f')]['describe']()[_0xee68('0x38')](respondWithResult(_0x9e94a,null))['catch'](handleError(_0x9e94a,null));};exports[_0xee68('0x62')]=function(_0x23fd28,_0x113640,_0x44de28){if(_0x23fd28[_0xee68('0x59')]['id']){delete _0x23fd28[_0xee68('0x59')]['id'];}return db['OpenchannelAccount']['find']({'where':{'id':_0x23fd28[_0xee68('0x61')]['id']}})[_0xee68('0x38')](handleEntityNotFound(_0x113640,null))[_0xee68('0x38')](function(_0xbed152){if(_0xbed152){_0x23fd28['body'][_0xee68('0x63')]=_0xbed152['id'];return db[_0xee68('0x64')][_0xee68('0x58')](_0x23fd28['body']);}})[_0xee68('0x38')](respondWithResult(_0x113640,null))[_0xee68('0x28')](handleError(_0x113640,null));};exports[_0xee68('0x65')]=function(_0xc5ecc8,_0x3e0916,_0x226b6a){var _0x201b40={'raw':![],'where':{}};var _0x3c2f69={};var _0x3ded21={'count':0x0,'rows':[]};return db[_0xee68('0x3f')]['findOne']({'where':{'id':_0xc5ecc8['params']['id']}})[_0xee68('0x38')](handleEntityNotFound(_0x3e0916,null))[_0xee68('0x38')](function(_0x37d7cf){if(_0x37d7cf){_0x3c2f69['model']=_[_0xee68('0x55')](db[_0xee68('0x64')]['rawAttributes']);_0x3c2f69[_0xee68('0x42')]=_[_0xee68('0x55')](_0xc5ecc8[_0xee68('0x42')]);_0x3c2f69['filters']=_[_0xee68('0x44')](_0x3c2f69[_0xee68('0x41')],_0x3c2f69[_0xee68('0x42')]);_0x201b40[_0xee68('0x45')]=_[_0xee68('0x44')](_0x3c2f69[_0xee68('0x41')],qs[_0xee68('0x46')](_0xc5ecc8['query'][_0xee68('0x46')]));_0x201b40[_0xee68('0x45')]=_0x201b40[_0xee68('0x45')][_0xee68('0x47')]?_0x201b40[_0xee68('0x45')]:_0x3c2f69[_0xee68('0x41')];if(!_0xc5ecc8[_0xee68('0x42')][_0xee68('0x48')]('nolimit')){_0x201b40[_0xee68('0x2e')]=qs[_0xee68('0x2e')](_0xc5ecc8['query']['limit']);_0x201b40['offset']=qs[_0xee68('0x2c')](_0xc5ecc8[_0xee68('0x42')][_0xee68('0x2c')]);}_0x201b40[_0xee68('0x4a')]=qs['sort'](_0xc5ecc8['query'][_0xee68('0x4b')]);_0x201b40['where']=qs[_0xee68('0x43')](_[_0xee68('0x4d')](_0xc5ecc8[_0xee68('0x42')],_0x3c2f69[_0xee68('0x43')]));_0x201b40[_0xee68('0x4c')][_0xee68('0x63')]=_0x37d7cf['id'];if(_0xc5ecc8['query'][_0xee68('0x4e')]){_0x201b40[_0xee68('0x4c')]=_[_0xee68('0x57')](_0x201b40['where'],{'$or':_['map'](_0x201b40[_0xee68('0x45')],function(_0x88ed1b){var _0x26ce5a={};_0x26ce5a[_0x88ed1b]={'$like':'%'+_0xc5ecc8[_0xee68('0x42')][_0xee68('0x4e')]+'%'};return _0x26ce5a;})});}_0x201b40=_[_0xee68('0x57')]({},_0x201b40,_0xc5ecc8[_0xee68('0x50')]);return db[_0xee68('0x64')][_0xee68('0x2f')]({'where':_0x201b40['where']})[_0xee68('0x38')](function(_0x4a229a){_0x3ded21[_0xee68('0x2f')]=_0x4a229a;if(_0xc5ecc8[_0xee68('0x42')][_0xee68('0x66')]){_0x201b40[_0xee68('0x56')]=[{'all':!![]}];}return db[_0xee68('0x64')][_0xee68('0x51')](_0x201b40);})['then'](function(_0x4e7001){_0x3ded21[_0xee68('0x52')]=_0x4e7001;return _0x3ded21;});}})[_0xee68('0x38')](respondWithFilteredResult(_0x3e0916,_0x201b40))[_0xee68('0x28')](handleError(_0x3e0916,null));};exports['removeDispositions']=function(_0x5b210b,_0x332592,_0x4eec6c){return db[_0xee68('0x3f')]['find']({'where':{'id':_0x5b210b[_0xee68('0x61')]['id']}})[_0xee68('0x38')](handleEntityNotFound(_0x332592,null))[_0xee68('0x38')](function(_0x39fd4a){if(_0x39fd4a){return _0x39fd4a[_0xee68('0x67')](_0x5b210b[_0xee68('0x42')]['ids']);}})[_0xee68('0x38')](respondWithStatusCode(_0x332592,null))[_0xee68('0x28')](handleError(_0x332592,null));};exports[_0xee68('0x68')]=function(_0xe52f4b,_0x17b0c5,_0x29b0d8){if(_0xe52f4b[_0xee68('0x59')]['id']){delete _0xe52f4b['body']['id'];}return db[_0xee68('0x3f')]['find']({'where':{'id':_0xe52f4b[_0xee68('0x61')]['id']}})[_0xee68('0x38')](handleEntityNotFound(_0x17b0c5,null))[_0xee68('0x38')](function(_0x38a7c7){if(_0x38a7c7){_0xe52f4b[_0xee68('0x59')][_0xee68('0x63')]=_0x38a7c7['id'];return db['CannedAnswer'][_0xee68('0x58')](_0xe52f4b[_0xee68('0x59')]);}})[_0xee68('0x38')](respondWithResult(_0x17b0c5,null))[_0xee68('0x28')](handleError(_0x17b0c5,null));};exports[_0xee68('0x69')]=function(_0x5cc98f,_0x1bee8b,_0x4679a2){var _0x1b0910={'raw':![],'where':{}};var _0x2986de={};var _0x34f03d={'count':0x0,'rows':[]};return db[_0xee68('0x3f')][_0xee68('0x6a')]({'where':{'id':_0x5cc98f[_0xee68('0x61')]['id']}})[_0xee68('0x38')](handleEntityNotFound(_0x1bee8b,null))[_0xee68('0x38')](function(_0x29285a){if(_0x29285a){_0x2986de[_0xee68('0x41')]=_['keys'](db[_0xee68('0x6b')][_0xee68('0x6c')]);_0x2986de[_0xee68('0x42')]=_[_0xee68('0x55')](_0x5cc98f[_0xee68('0x42')]);_0x2986de['filters']=_[_0xee68('0x44')](_0x2986de[_0xee68('0x41')],_0x2986de[_0xee68('0x42')]);_0x1b0910['attributes']=_[_0xee68('0x44')](_0x2986de[_0xee68('0x41')],qs[_0xee68('0x46')](_0x5cc98f[_0xee68('0x42')][_0xee68('0x46')]));_0x1b0910[_0xee68('0x45')]=_0x1b0910[_0xee68('0x45')][_0xee68('0x47')]?_0x1b0910[_0xee68('0x45')]:_0x2986de[_0xee68('0x41')];if(!_0x5cc98f['query'][_0xee68('0x48')]('nolimit')){_0x1b0910[_0xee68('0x2e')]=qs[_0xee68('0x2e')](_0x5cc98f['query'][_0xee68('0x2e')]);_0x1b0910[_0xee68('0x2c')]=qs['offset'](_0x5cc98f['query'][_0xee68('0x2c')]);}_0x1b0910[_0xee68('0x4a')]=qs[_0xee68('0x4b')](_0x5cc98f[_0xee68('0x42')][_0xee68('0x4b')]);_0x1b0910['where']=qs[_0xee68('0x43')](_[_0xee68('0x4d')](_0x5cc98f[_0xee68('0x42')],_0x2986de['filters']));_0x1b0910['where'][_0xee68('0x63')]=_0x29285a['id'];if(_0x5cc98f[_0xee68('0x42')][_0xee68('0x4e')]){_0x1b0910[_0xee68('0x4c')]=_[_0xee68('0x57')](_0x1b0910[_0xee68('0x4c')],{'$or':_['map'](_0x1b0910[_0xee68('0x45')],function(_0x26900b){var _0x12416f={};_0x12416f[_0x26900b]={'$like':'%'+_0x5cc98f['query'][_0xee68('0x4e')]+'%'};return _0x12416f;})});}_0x1b0910=_[_0xee68('0x57')]({},_0x1b0910,_0x5cc98f[_0xee68('0x50')]);return db[_0xee68('0x6b')][_0xee68('0x2f')]({'where':_0x1b0910[_0xee68('0x4c')]})[_0xee68('0x38')](function(_0x5a11fd){_0x34f03d[_0xee68('0x2f')]=_0x5a11fd;if(_0x5cc98f[_0xee68('0x42')][_0xee68('0x66')]){_0x1b0910[_0xee68('0x56')]=[{'all':!![]}];}return db[_0xee68('0x6b')][_0xee68('0x51')](_0x1b0910);})[_0xee68('0x38')](function(_0x137fcb){_0x34f03d[_0xee68('0x52')]=_0x137fcb;return _0x34f03d;});}})['then'](respondWithFilteredResult(_0x1bee8b,_0x1b0910))[_0xee68('0x28')](handleError(_0x1bee8b,null));};exports[_0xee68('0x6d')]=function(_0x5a0806,_0x1ec2a2,_0x42623c){return db[_0xee68('0x3f')][_0xee68('0x60')]({'where':{'id':_0x5a0806['params']['id']}})[_0xee68('0x38')](handleEntityNotFound(_0x1ec2a2,null))[_0xee68('0x38')](function(_0x3e1ee3){if(_0x3e1ee3){return _0x3e1ee3[_0xee68('0x6d')](_0x5a0806[_0xee68('0x42')][_0xee68('0x6e')]);}})['then'](respondWithStatusCode(_0x1ec2a2,null))[_0xee68('0x28')](handleError(_0x1ec2a2,null));};exports[_0xee68('0x6f')]=function(_0x41107a,_0x5f0b7c,_0x59c05a){var _0x4ebeb2={'body':_0x41107a['body'],'channel':'openchannel'};var _0x528745=[];var _0x675b20=[];var _0x2cbd67={};var _0x2989e9=![];return db[_0xee68('0x70')]['describe']()[_0xee68('0x38')](function(_0x3250b8){if(!_0x3250b8){throw new db[(_0xee68('0x71'))][(_0xee68('0x72'))]('no\x20available\x20attributes');}_0x528745=_[_0xee68('0x73')](_[_0xee68('0x55')](_0x3250b8),[_0xee68('0x74'),_0xee68('0x75')]);_0x675b20=_['difference'](_[_0xee68('0x55')](_0x3250b8),[_0xee68('0x74'),_0xee68('0x75'),_0xee68('0x76'),_0xee68('0x77')]);if(_0x41107a[_0xee68('0x59')]['id']){delete _0x41107a[_0xee68('0x59')]['id'];}if(_[_0xee68('0x78')](_0x41107a['body'][_0xee68('0x79')])){throw new db[(_0xee68('0x71'))][(_0xee68('0x72'))](_0xee68('0x7a'));}if(_['isNil'](_0x41107a['body'][_0xee68('0x59')])||_0x41107a['body']['body']===''){throw new db[(_0xee68('0x71'))][(_0xee68('0x72'))](_0xee68('0x7b'));}if(_[_0xee68('0x78')](_0x41107a['body'][_0xee68('0x7c')])){throw new db[(_0xee68('0x71'))]['ValidationError'](_0xee68('0x7d')+_0x675b20);}if(!_[_0xee68('0x7e')](_0x675b20,_0x41107a['body'][_0xee68('0x7c')])){throw new db[(_0xee68('0x71'))][(_0xee68('0x72'))](_0xee68('0x7f')+_0x675b20);}_0x2cbd67[_0x41107a['body'][_0xee68('0x7c')]]=_0x41107a['body'][_0xee68('0x79')];})[_0xee68('0x38')](function(){return db[_0xee68('0x3f')][_0xee68('0x60')]({'where':{'id':_0x41107a[_0xee68('0x61')]['id']},'include':[{'model':db[_0xee68('0x80')],'as':'List','include':[{'model':db[_0xee68('0x70')],'as':_0xee68('0x81'),'where':_0x2cbd67,'limit':0x1,'order':[[_0xee68('0x75'),_0xee68('0x82')]]}]},{'model':db[_0xee68('0x83')],'as':'Applications'}]});})[_0xee68('0x38')](handleEntityNotFound(_0x5f0b7c,null))[_0xee68('0x38')](function(_0x50c2e4){if(_0x50c2e4&&_0x50c2e4[_0xee68('0x84')]){_0x4ebeb2[_0xee68('0x85')]=_0x50c2e4;_0x4ebeb2[_0xee68('0x86')]=_0x50c2e4[_0xee68('0x87')];_0x4ebeb2[_0xee68('0x88')]=_0x50c2e4[_0xee68('0x84')];_0x4ebeb2[_0xee68('0x86')]=_['orderBy'](_0x4ebeb2[_0xee68('0x86')],[_0xee68('0x89')],[_0xee68('0x8a')]);if(_0x4ebeb2[_0xee68('0x85')]['Applications']){delete _0x4ebeb2['account']['Applications'];}if(_0x4ebeb2[_0xee68('0x85')][_0xee68('0x84')]&&_0x4ebeb2[_0xee68('0x85')]['List'][_0xee68('0x81')][_0xee68('0x47')]){return _0x4ebeb2[_0xee68('0x85')]['List'][_0xee68('0x81')][0x0];}var _0x56bb7f=_[_0xee68('0x15')](_0x41107a[_0xee68('0x59')],{'firstName':_0x41107a[_0xee68('0x59')][_0xee68('0x79')],'ListId':_0x50c2e4['ListId']});_0x56bb7f[_0x41107a[_0xee68('0x59')][_0xee68('0x7c')]]=_0x41107a[_0xee68('0x59')][_0xee68('0x79')];return db[_0xee68('0x70')]['create'](_0x56bb7f,{'fields':_0x528745,'raw':!![]});}})['then'](handleEntityNotFound(_0x5f0b7c,null))[_0xee68('0x38')](function(_0x3ee731){_0x4ebeb2[_0xee68('0x8b')]=_0x3ee731;if(_0x3ee731){var _0xa7c61a={'ContactId':_0x3ee731['id'],'OpenchannelAccountId':_0x41107a[_0xee68('0x61')]['id'],'from':(_0x3ee731[_0xee68('0x8c')]||'')+'\x20'+(_0x3ee731[_0xee68('0x8d')]||'')};var _0x5d860c={'OpenchannelAccountId':_0x41107a['params']['id'],'closed':![]};if(_0x41107a[_0xee68('0x59')][_0xee68('0x8e')]){_0x5d860c['threadId']=_0x41107a['body'][_0xee68('0x8e')];return db['OpenchannelInteraction'][_0xee68('0x60')]({'where':_0x5d860c})[_0xee68('0x38')](function(_0x489e0a){if(_0x489e0a){return[_0x489e0a,![]];}_0xa7c61a[_0xee68('0x8e')]=_0x41107a[_0xee68('0x59')][_0xee68('0x8e')];_0xa7c61a[_0xee68('0x8f')]=_0x41107a['body'][_0xee68('0x8f')];return db[_0xee68('0x90')][_0xee68('0x58')](_0xa7c61a)['then'](function(_0x3823ec){return[_0x3823ec,!![]];});});}else{_0x5d860c[_0xee68('0x8e')]=null;}_0x5d860c[_0xee68('0x91')]=_0x3ee731['id'];return db[_0xee68('0x90')]['find']({'where':_0x5d860c})[_0xee68('0x38')](function(_0x791f7a){if(_0x791f7a){return[_0x791f7a,![]];}return db['OpenchannelInteraction']['create'](_0xa7c61a)[_0xee68('0x38')](function(_0x9a3248){return[_0x9a3248,!![]];});});}})[_0xee68('0x92')](function(_0x27eb42,_0x1e12cb){if(_0x27eb42){_0x2989e9=_0x1e12cb;if(!_0x1e12cb){var _0x1b30f4={'from':(_0x4ebeb2['contact']['firstName']||'')+'\x20'+(_0x4ebeb2[_0xee68('0x8b')][_0xee68('0x8d')]||'')};if(_0x41107a[_0xee68('0x59')]['threadId']&&_0x41107a[_0xee68('0x59')]['messageId']&&_0x41107a[_0xee68('0x59')]['threadId']!=_0x41107a[_0xee68('0x59')][_0xee68('0x93')]){_0x1b30f4[_0xee68('0x8e')]=_0x41107a[_0xee68('0x59')][_0xee68('0x93')];}return _0x27eb42[_0xee68('0x33')](_0x1b30f4);}else{return _0x27eb42;}}})[_0xee68('0x38')](function(_0x4d4027){_0x4ebeb2[_0xee68('0x94')]=_0x4d4027['get']({'plain':!![]});_0x4ebeb2['interaction'][_0xee68('0x95')]=_0x2989e9;if(_0x4ebeb2[_0xee68('0x94')][_0xee68('0x95')]){if(_0x4ebeb2[_0xee68('0x85')][_0xee68('0x96')]){_0x4ebeb2[_0xee68('0x86')][_0xee68('0x97')]({'id':0x0,'priority':_0x4ebeb2['applications']['length']+0x1,'app':'close','appdata':_0xee68('0x98'),'interval':_0xee68('0x99')});}}return db[_0xee68('0x9a')]['create']({'body':_0x41107a[_0xee68('0x59')][_0xee68('0x59')],'OpenchannelAccountId':_0x41107a[_0xee68('0x61')]['id'],'OpenchannelInteractionId':_0x4d4027['id'],'direction':'in','ContactId':_0x4ebeb2[_0xee68('0x8b')]['id'],'AttachmentId':_0x41107a[_0xee68('0x59')]['AttachmentId']});})['then'](function(_0x185bed){_0x4ebeb2[_0xee68('0x26')]=_0x185bed;if(_0x4ebeb2[_0xee68('0x94')][_0xee68('0x9b')]){return db[_0xee68('0x9c')]['find']({'attributes':['id','name'],'where':{'id':_0x4ebeb2[_0xee68('0x94')][_0xee68('0x9b')]}})[_0xee68('0x38')](function(_0x295dfc){if(_0x295dfc){_0x4ebeb2[_0xee68('0x86')]['unshift']({'id':0x0,'priority':0x0,'app':_0xee68('0x9d'),'appdata':_0x295dfc[_0xee68('0x3a')]+','+(_0x4ebeb2[_0xee68('0x85')][_0xee68('0x9e')]||0xa),'interval':'*,*,*,*'});_0x4ebeb2[_0xee68('0x9f')]=![];}return respondWithRpcPromise('Start',_0xee68('0xa0'),_0x4ebeb2);});}return respondWithRpcPromise(_0xee68('0xa1'),_0xee68('0xa0'),_0x4ebeb2);})[_0xee68('0x38')](function(_0x319dd0){respondWithRpcPromise(_0xee68('0xa2'),_0xee68('0xa2'),{'event':_0xee68('0x6f'),'message':_0x319dd0},client9002);return _0x319dd0;})[_0xee68('0x38')](respondWithResult(_0x5f0b7c,null))[_0xee68('0x28')](handleError(_0x5f0b7c,null));};exports['addApplications']=function(_0x6101df,_0x584b26,_0xe8d98e){return db[_0xee68('0x3f')][_0xee68('0x6a')]({'where':{'id':_0x6101df[_0xee68('0x61')]['id']}})[_0xee68('0x38')](handleEntityNotFound(_0x584b26,null))[_0xee68('0x38')](function(_0x546120){if(_0x546120){return db[_0xee68('0xa3')]['transaction'](function(_0x49697b){return db[_0xee68('0x83')][_0xee68('0x37')]({'where':{'OpenchannelAccountId':_0x6101df[_0xee68('0x61')]['id']},'transaction':_0x49697b})['then'](function(_0x423b70){var _0x14759e=_['map'](_0x6101df[_0xee68('0x59')],function(_0x386e79){_0x386e79['OpenchannelAccountId']=_0x6101df['params']['id'];return _0x386e79;});return db[_0xee68('0x83')][_0xee68('0xa4')](_0x14759e,{'transaction':_0x49697b});});})[_0xee68('0x38')](function(){return db['OpenchannelApplication'][_0xee68('0xa5')]({'where':{'OpenchannelAccountId':_0x6101df[_0xee68('0x61')]['id']},'order':_0xee68('0x89')});});}})['then'](respondWithResult(_0x584b26,null))[_0xee68('0x28')](handleError(_0x584b26,null));};exports['getApplications']=function(_0x1ecf62,_0x1713df,_0x5232cf){var _0x24b5e4={};var _0x110a3b={};var _0x25f208;var _0x206b2c;return db['OpenchannelAccount'][_0xee68('0x6a')]({'where':{'id':_0x1ecf62[_0xee68('0x61')]['id']}})[_0xee68('0x38')](handleEntityNotFound(_0x1713df,null))['then'](function(_0x5e47ec){if(_0x5e47ec){_0x25f208=_0x5e47ec;_0x110a3b[_0xee68('0x41')]=_['keys'](db[_0xee68('0x83')]['rawAttributes']);_0x110a3b[_0xee68('0x42')]=_[_0xee68('0x55')](_0x1ecf62['query']);_0x110a3b[_0xee68('0x43')]=_['intersection'](_0x110a3b[_0xee68('0x41')],_0x110a3b[_0xee68('0x42')]);_0x24b5e4[_0xee68('0x45')]=_['intersection'](_0x110a3b['model'],qs[_0xee68('0x46')](_0x1ecf62[_0xee68('0x42')][_0xee68('0x46')]));_0x24b5e4['attributes']=_0x24b5e4[_0xee68('0x45')][_0xee68('0x47')]?_0x24b5e4[_0xee68('0x45')]:_0x110a3b[_0xee68('0x41')];_0x24b5e4[_0xee68('0x4a')]=qs[_0xee68('0x4b')](_0x1ecf62[_0xee68('0x42')][_0xee68('0x4b')]);_0x24b5e4['where']=qs['filters'](_[_0xee68('0x4d')](_0x1ecf62[_0xee68('0x42')],_0x110a3b[_0xee68('0x43')]));if(_0x1ecf62[_0xee68('0x42')][_0xee68('0x4e')]){_0x24b5e4['where']=_[_0xee68('0x57')](_0x24b5e4[_0xee68('0x4c')],{'$or':_[_0xee68('0x3e')](_0x24b5e4['attributes'],function(_0x416f1f){var _0x33f24a={};_0x33f24a[_0x416f1f]={'$like':'%'+_0x1ecf62[_0xee68('0x42')][_0xee68('0x4e')]+'%'};return _0x33f24a;})});}_0x24b5e4=_[_0xee68('0x57')]({},_0x24b5e4,_0x1ecf62['options']);return _0x25f208[_0xee68('0xa6')](_0x24b5e4);}})[_0xee68('0x38')](function(_0x53972e){if(_0x53972e){_0x206b2c=_0x53972e[_0xee68('0x47')];if(!_0x1ecf62[_0xee68('0x42')]['hasOwnProperty'](_0xee68('0x49'))){_0x24b5e4[_0xee68('0x2e')]=qs[_0xee68('0x2e')](_0x1ecf62['query'][_0xee68('0x2e')]);_0x24b5e4[_0xee68('0x2c')]=qs[_0xee68('0x2c')](_0x1ecf62['query']['offset']);}return _0x25f208[_0xee68('0xa6')](_0x24b5e4);}})[_0xee68('0x38')](function(_0x4b1e1e){if(_0x4b1e1e){return _0x4b1e1e?{'count':_0x206b2c,'rows':_0x4b1e1e}:null;}})[_0xee68('0x38')](respondWithResult(_0x1713df,null))[_0xee68('0x28')](handleError(_0x1713df,null));};exports[_0xee68('0xa7')]=function(_0x321b9b,_0x4c21e2,_0x483e6b){var _0x419c88={'raw':![],'where':{}};var _0x720721={};var _0x282f3e={'count':0x0,'rows':[]};return db[_0xee68('0x3f')][_0xee68('0x6a')]({'where':{'id':_0x321b9b['params']['id']}})[_0xee68('0x38')](handleEntityNotFound(_0x4c21e2,null))[_0xee68('0x38')](function(_0x1fd3f6){if(_0x1fd3f6){_0x720721[_0xee68('0x41')]=_[_0xee68('0x55')](db[_0xee68('0x90')][_0xee68('0x6c')]);_0x720721['query']=_['keys'](_0x321b9b[_0xee68('0x42')]);_0x720721['filters']=_[_0xee68('0x44')](_0x720721[_0xee68('0x41')],_0x720721[_0xee68('0x42')]);_0x419c88[_0xee68('0x45')]=_[_0xee68('0x44')](_0x720721['model'],qs[_0xee68('0x46')](_0x321b9b[_0xee68('0x42')][_0xee68('0x46')]));_0x419c88['attributes']=_0x419c88[_0xee68('0x45')][_0xee68('0x47')]?_0x419c88[_0xee68('0x45')]:_0x720721[_0xee68('0x41')];if(!_0x321b9b[_0xee68('0x42')]['hasOwnProperty'](_0xee68('0x49'))){_0x419c88[_0xee68('0x2e')]=qs[_0xee68('0x2e')](_0x321b9b[_0xee68('0x42')][_0xee68('0x2e')]);_0x419c88[_0xee68('0x2c')]=qs[_0xee68('0x2c')](_0x321b9b['query'][_0xee68('0x2c')]);}_0x419c88[_0xee68('0x4a')]=qs['sort'](_0x321b9b['query']['sort']);_0x419c88[_0xee68('0x4c')]=qs[_0xee68('0x43')](_[_0xee68('0x4d')](_0x321b9b[_0xee68('0x42')],_0x720721[_0xee68('0x43')]));_0x419c88['where'][_0xee68('0x63')]=_0x1fd3f6['id'];if(_0x321b9b[_0xee68('0x42')][_0xee68('0x4e')]){_0x419c88['where']=_[_0xee68('0x57')](_0x419c88[_0xee68('0x4c')],{'$or':_[_0xee68('0x3e')](_0x419c88[_0xee68('0x45')],function(_0xc8aa9c){var _0x3965ec={};_0x3965ec[_0xc8aa9c]={'$like':'%'+_0x321b9b[_0xee68('0x42')][_0xee68('0x4e')]+'%'};return _0x3965ec;})});}_0x419c88=_[_0xee68('0x57')]({},_0x419c88,_0x321b9b['options']);return db[_0xee68('0x90')][_0xee68('0x2f')]({'where':_0x419c88[_0xee68('0x4c')]})[_0xee68('0x38')](function(_0x5f489d){_0x282f3e[_0xee68('0x2f')]=_0x5f489d;if(_0x321b9b[_0xee68('0x42')][_0xee68('0x66')]){_0x419c88[_0xee68('0x56')]=[{'model':db[_0xee68('0x70')],'as':_0xee68('0xa8'),'required':![]},{'model':db[_0xee68('0x9c')],'as':_0xee68('0xa9'),'attributes':[_0xee68('0x3a'),_0xee68('0xaa'),'internal'],'required':![]},{'model':db[_0xee68('0xab')],'as':_0xee68('0xac'),'attributes':['id',_0xee68('0x3a'),_0xee68('0xad')],'where':_0x321b9b[_0xee68('0x42')]['tag']?{'id':_0x321b9b[_0xee68('0x42')][_0xee68('0xae')]}:undefined,'required':_0x321b9b[_0xee68('0x42')][_0xee68('0xae')]?!![]:![]}];}return db[_0xee68('0x90')][_0xee68('0x51')](_0x419c88);})[_0xee68('0x38')](function(_0x12bbb4){_0x282f3e['rows']=_0x12bbb4;return _0x282f3e;});}})[_0xee68('0x38')](respondWithFilteredResult(_0x4c21e2,_0x419c88))[_0xee68('0x28')](handleError(_0x4c21e2,null));};exports[_0xee68('0xaf')]=function(_0x493047,_0x53e379,_0x3e26f8){return db[_0xee68('0x3f')][_0xee68('0x60')]({'where':{'id':_0x493047[_0xee68('0x61')]['id']}})['then'](handleEntityNotFound(_0x53e379,null))[_0xee68('0x38')](function(_0x5502b1){if(_0x5502b1){return _0x5502b1[_0xee68('0xaf')](_0x493047[_0xee68('0x59')][_0xee68('0x6e')],_['omit'](_0x493047['body'],['ids','id'])||{})[_0xee68('0x92')](function(_0x12cd24){for(var _0x4f95c9=0x0;_0x4f95c9<_0x493047['body'][_0xee68('0x6e')]['length'];_0x4f95c9+=0x1){socket[_0xee68('0xb0')](_0xee68('0xb1'),{'UserId':Number(_0x493047['body'][_0xee68('0x6e')][_0x4f95c9]),'OpenchannelAccountId':Number(_0x493047[_0xee68('0x61')]['id'])});}return _0x12cd24;});}})[_0xee68('0x38')](respondWithResult(_0x53e379,null))[_0xee68('0x28')](handleError(_0x53e379,null));};exports['removeAgents']=function(_0x1084b1,_0x51b10c,_0x2ff666){return db['OpenchannelAccount'][_0xee68('0x60')]({'where':{'id':_0x1084b1[_0xee68('0x61')]['id']}})[_0xee68('0x38')](handleEntityNotFound(_0x51b10c,null))[_0xee68('0x38')](function(_0x47c2d0){if(_0x47c2d0){return _0x47c2d0[_0xee68('0xb2')](_0x1084b1[_0xee68('0x42')][_0xee68('0x6e')])[_0xee68('0x38')](function(){if(_[_0xee68('0xb3')](_0x1084b1[_0xee68('0x42')][_0xee68('0x6e')])){for(var _0x52a1a7=0x0;_0x52a1a7<_0x1084b1['query'][_0xee68('0x6e')][_0xee68('0x47')];_0x52a1a7+=0x1){socket['emit'](_0xee68('0xb4'),{'UserId':Number(_0x1084b1['query'][_0xee68('0x6e')][_0x52a1a7]),'OpenchannelAccountId':Number(_0x1084b1[_0xee68('0x61')]['id'])});}}else{socket[_0xee68('0xb0')](_0xee68('0xb4'),{'UserId':Number(_0x1084b1[_0xee68('0x42')]['ids']),'OpenchannelAccountId':Number(_0x1084b1[_0xee68('0x61')]['id'])});}});}})[_0xee68('0x38')](respondWithStatusCode(_0x51b10c,null))[_0xee68('0x28')](handleError(_0x51b10c,null));};exports[_0xee68('0xb5')]=function(_0x57b842,_0x22d827,_0x2bc4b4){var _0xf30058={};var _0x19167c={};var _0x2bb1d7;var _0x372422;return db['OpenchannelAccount']['findOne']({'where':{'id':_0x57b842[_0xee68('0x61')]['id']}})[_0xee68('0x38')](handleEntityNotFound(_0x22d827,null))[_0xee68('0x38')](function(_0x379bc7){if(_0x379bc7){_0x2bb1d7=_0x379bc7;_0x19167c[_0xee68('0x41')]=_[_0xee68('0x55')](db[_0xee68('0x9c')][_0xee68('0x6c')]);_0x19167c[_0xee68('0x42')]=_[_0xee68('0x55')](_0x57b842[_0xee68('0x42')]);_0x19167c[_0xee68('0x43')]=_['intersection'](_0x19167c[_0xee68('0x41')],_0x19167c[_0xee68('0x42')]);_0xf30058[_0xee68('0x45')]=_[_0xee68('0x44')](_0x19167c[_0xee68('0x41')],qs[_0xee68('0x46')](_0x57b842[_0xee68('0x42')][_0xee68('0x46')]));_0xf30058[_0xee68('0x45')]=_0xf30058[_0xee68('0x45')]['length']?_0xf30058[_0xee68('0x45')]:_0x19167c[_0xee68('0x41')];_0xf30058[_0xee68('0x4a')]=qs[_0xee68('0x4b')](_0x57b842[_0xee68('0x42')]['sort']);_0xf30058['where']=qs[_0xee68('0x43')](_[_0xee68('0x4d')](_0x57b842['query'],_0x19167c[_0xee68('0x43')]));if(_0x57b842['query'][_0xee68('0x4e')]){_0xf30058['where']=_[_0xee68('0x57')](_0xf30058[_0xee68('0x4c')],{'$or':_[_0xee68('0x3e')](_0xf30058['attributes'],function(_0x56efbf){var _0x5438d9={};_0x5438d9[_0x56efbf]={'$like':'%'+_0x57b842[_0xee68('0x42')][_0xee68('0x4e')]+'%'};return _0x5438d9;})});}_0xf30058=_[_0xee68('0x57')]({},_0xf30058,_0x57b842[_0xee68('0x50')]);return _0x2bb1d7[_0xee68('0xb5')](_0xf30058);}})[_0xee68('0x38')](function(_0x5acf47){if(_0x5acf47){_0x372422=_0x5acf47['length'];if(!_0x57b842[_0xee68('0x42')][_0xee68('0x48')](_0xee68('0x49'))){_0xf30058[_0xee68('0x2e')]=qs[_0xee68('0x2e')](_0x57b842['query']['limit']);_0xf30058[_0xee68('0x2c')]=qs[_0xee68('0x2c')](_0x57b842[_0xee68('0x42')][_0xee68('0x2c')]);}return _0x2bb1d7['getAgents'](_0xf30058);}})[_0xee68('0x38')](function(_0x271224){if(_0x271224){return _0x271224?{'count':_0x372422,'rows':_0x271224}:null;}})['then'](respondWithResult(_0x22d827,null))[_0xee68('0x28')](handleError(_0x22d827,null));};exports[_0xee68('0x3b')]=function(_0x450819,_0x497672,_0x7e75eb){var _0x5a7ed6,_0x57fd84,_0x5b6d1a;if(_[_0xee68('0x78')](_0x450819[_0xee68('0x59')][_0xee68('0x59')])||_0x450819[_0xee68('0x59')]['body']===''){throw new db['Sequelize'][(_0xee68('0x72'))](_0xee68('0x7b'));}if(_[_0xee68('0x78')](_0x450819['body']['to'])){}_0x5a7ed6=_0x450819[_0xee68('0x59')]['to'];return db['OpenchannelAccount']['findOne']({'where':{'id':_0x450819['params']['id']}})['then'](handleEntityNotFound(_0x497672,null))['then'](function(_0x2945dc){if(_0x2945dc){return db[_0xee68('0x3f')][_0xee68('0x60')]({'where':{'id':_0x2945dc['id']},'include':[{'model':db[_0xee68('0x80')],'as':_0xee68('0x84'),'include':[{'model':db['CmContact'],'as':_0xee68('0x81'),'where':{[_0x2945dc['mapKey']]:_0x5a7ed6},'limit':0x1,'order':[[_0xee68('0x75'),_0xee68('0x82')]]}]}]})[_0xee68('0x38')](handleEntityNotFound(_0x497672,null))[_0xee68('0x38')](function(_0x347176){if(_0x347176&&_0x347176[_0xee68('0x84')]){_0x57fd84=_0x347176[_0xee68('0x34')]({'plain':!![]});if(_0x57fd84['List']&&_0x57fd84[_0xee68('0x84')][_0xee68('0x81')][_0xee68('0x47')]){return _0x57fd84[_0xee68('0x84')][_0xee68('0x81')][0x0];}return db['CmContact']['create'](_['defaults'](_0x450819[_0xee68('0x59')],{'firstName':_0x5a7ed6,[_0x347176[_0xee68('0x7c')]]:_0x5a7ed6,'phone':_0x5a7ed6,'ListId':_0x57fd84['ListId']}));}})[_0xee68('0x38')](handleEntityNotFound(_0x497672,null))[_0xee68('0x38')](function(_0x25e7a8){if(_0x25e7a8){_0x5b6d1a=_0x25e7a8;return db[_0xee68('0x90')][_0xee68('0x60')]({'where':{'ContactId':_0x5b6d1a['id'],'closed':![],'OpenchannelAccountId':_0x57fd84['id']}})[_0xee68('0x38')](function(_0x1c2905){if(_0x1c2905){return[_0x1c2905,![]];}return db[_0xee68('0x90')][_0xee68('0x58')]({'UserId':_0x450819[_0xee68('0x5a')]['id'],'ContactId':_0x5b6d1a['id'],'OpenchannelAccountId':_0x57fd84['id'],'lastMsgDirection':'out','Messages':[_['merge'](_0x450819[_0xee68('0x59')],{'read':![],'body':_0x450819[_0xee68('0x59')][_0xee68('0x59')],'OpenchannelAccountId':_0x57fd84['id'],'UserId':_0x450819[_0xee68('0x5a')]['id'],'ContactId':_0x5b6d1a['id']})]},{'include':[{'model':db[_0xee68('0x9a')],'as':_0xee68('0xb6')}]})[_0xee68('0x38')](function(_0x4ece72){return[_0x4ece72,!![]];});});}})[_0xee68('0x92')](function(_0xb39445,_0xfd6221){if(_0xfd6221){return _0xb39445;}return db['OpenchannelMessage'][_0xee68('0x58')](_[_0xee68('0x57')](_0x450819[_0xee68('0x59')],{'read':![],'body':_0x450819['body']['body'],'OpenchannelAccountId':_0x57fd84['id'],'OpenchannelInteractionId':_0xb39445['id'],'UserId':_0x450819[_0xee68('0x5a')]['id'],'ContactId':_0x5b6d1a['id']}))[_0xee68('0x38')](function(_0x2d851a){_0xb39445['dataValues'][_0xee68('0xb6')]=[];_0xb39445['dataValues'][_0xee68('0xb6')][_0xee68('0x97')](_0x2d851a[_0xee68('0xb7')]);return _0xb39445;});});}})['then'](respondWithResult(_0x497672,null))[_0xee68('0x28')](handleError(_0x497672,null));};
\ No newline at end of file
index 291a996..f51ba1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13f6=['save','update','remove','emit','hasOwnProperty','events','../../mysqldb'];(function(_0x7aab43,_0x57263d){var _0x4ae2e2=function(_0x2f9c79){while(--_0x2f9c79){_0x7aab43['push'](_0x7aab43['shift']());}};_0x4ae2e2(++_0x57263d);}(_0x13f6,0x124));var _0x613f=function(_0x4e3b4d,_0x2d6883){_0x4e3b4d=_0x4e3b4d-0x0;var _0x1d59b0=_0x13f6[_0x4e3b4d];return _0x1d59b0;};'use strict';var EventEmitter=require(_0x613f('0x0'));var OpenchannelAccount=require(_0x613f('0x1'))['db']['OpenchannelAccount'];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x613f('0x2'),'afterUpdate':_0x613f('0x3'),'afterDestroy':_0x613f('0x4')};function emitEvent(_0x5414ff){return function(_0x179f6e,_0x1e01e3,_0x20af2f){OpenchannelAccountEvents['emit'](_0x5414ff+':'+_0x179f6e['id'],_0x179f6e);OpenchannelAccountEvents[_0x613f('0x5')](_0x5414ff,_0x179f6e);_0x20af2f(null);};}for(var e in events){if(events[_0x613f('0x6')](e)){var event=events[e];OpenchannelAccount['hook'](e,emitEvent(event));}}module['exports']=OpenchannelAccountEvents;
\ No newline at end of file
+var _0x0bb5=['events','../../mysqldb','save','update','remove','emit','hook','exports'];(function(_0x16db8b,_0xca7d28){var _0x5ba017=function(_0x35b933){while(--_0x35b933){_0x16db8b['push'](_0x16db8b['shift']());}};_0x5ba017(++_0xca7d28);}(_0x0bb5,0x148));var _0x50bb=function(_0x19b168,_0x34d479){_0x19b168=_0x19b168-0x0;var _0x5df2d6=_0x0bb5[_0x19b168];return _0x5df2d6;};'use strict';var EventEmitter=require(_0x50bb('0x0'));var OpenchannelAccount=require(_0x50bb('0x1'))['db']['OpenchannelAccount'];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x50bb('0x2'),'afterUpdate':_0x50bb('0x3'),'afterDestroy':_0x50bb('0x4')};function emitEvent(_0x117e36){return function(_0x29c72b,_0xfdc9d4,_0x451b4c){OpenchannelAccountEvents[_0x50bb('0x5')](_0x117e36+':'+_0x29c72b['id'],_0x29c72b);OpenchannelAccountEvents['emit'](_0x117e36,_0x29c72b);_0x451b4c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelAccount[_0x50bb('0x6')](e,emitEvent(event));}}module[_0x50bb('0x7')]=OpenchannelAccountEvents;
\ No newline at end of file
index 6773c6c..cb90176 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(_0x526a2f,_0x59b437){var _0x52f5b6=function(_0x32267f){while(--_0x32267f){_0x526a2f['push'](_0x526a2f['shift']());}};_0x52f5b6(++_0x59b437);}(_0xa9e0,0x123));var _0x0a9e=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0xa9e0[_0x311c35];return _0x5cc50c;};'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(_0x38bac8,_0x3ccfcd){var _0x528ead=function(_0x213fc2){while(--_0x213fc2){_0x38bac8['push'](_0x38bac8['shift']());}};_0x528ead(++_0x3ccfcd);}(_0xa9e0,0x123));var _0x0a9e=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0xa9e0[_0xc6be3a];return _0x56a310;};'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 b0e9e29..d6572b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cc8=['code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./openchannelAccount.socket','register','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x47b58b,_0x41a189){var _0x46bebe=function(_0x22bbfa){while(--_0x22bbfa){_0x47b58b['push'](_0x47b58b['shift']());}};_0x46bebe(++_0x41a189);}(_0x8cc8,0x177));var _0x88cc=function(_0x2f1f7f,_0x297200){_0x2f1f7f=_0x2f1f7f-0x0;var _0x4e5bc0=_0x8cc8[_0x2f1f7f];return _0x4e5bc0;};'use strict';var _=require(_0x88cc('0x0'));var util=require(_0x88cc('0x1'));var moment=require(_0x88cc('0x2'));var BPromise=require(_0x88cc('0x3'));var rs=require(_0x88cc('0x4'));var fs=require('fs');var Redis=require(_0x88cc('0x5'));var db=require(_0x88cc('0x6'))['db'];var utils=require(_0x88cc('0x7'));var logger=require(_0x88cc('0x8'))(_0x88cc('0x9'));var config=require(_0x88cc('0xa'));var jayson=require(_0x88cc('0xb'));var client=jayson[_0x88cc('0xc')]['http']({'port':0x232a});config['redis']=_[_0x88cc('0xd')](config[_0x88cc('0xe')],{'host':_0x88cc('0xf'),'port':0x18eb});var socket=require(_0x88cc('0x10'))(new Redis(config['redis']));require(_0x88cc('0x11'))[_0x88cc('0x12')](socket);function respondWithRpcPromise(_0x574946,_0x349991,_0x5586aa){return new BPromise(function(_0x379c2a,_0x23aee8){return client[_0x88cc('0x13')](_0x574946,_0x5586aa)[_0x88cc('0x14')](function(_0x5a70a9){logger[_0x88cc('0x15')](_0x88cc('0x16'),_0x349991,_0x88cc('0x17'));logger[_0x88cc('0x18')](_0x88cc('0x19'),_0x349991,_0x88cc('0x17'),JSON[_0x88cc('0x1a')](_0x5a70a9));if(_0x5a70a9[_0x88cc('0x1b')]){if(_0x5a70a9['error'][_0x88cc('0x1c')]===0x1f4){logger[_0x88cc('0x1b')](_0x88cc('0x16'),_0x349991,_0x5a70a9[_0x88cc('0x1b')][_0x88cc('0x1d')]);return _0x23aee8(_0x5a70a9[_0x88cc('0x1b')]['message']);}logger[_0x88cc('0x1b')](_0x88cc('0x16'),_0x349991,_0x5a70a9[_0x88cc('0x1b')][_0x88cc('0x1d')]);return _0x379c2a(_0x5a70a9[_0x88cc('0x1b')]['message']);}else{logger[_0x88cc('0x15')](_0x88cc('0x16'),_0x349991,_0x88cc('0x17'));_0x379c2a(_0x5a70a9[_0x88cc('0x1e')][_0x88cc('0x1d')]);}})['catch'](function(_0x2a08a4){logger[_0x88cc('0x1b')]('OpenchannelAccount,\x20%s,\x20%s',_0x349991,_0x2a08a4);_0x23aee8(_0x2a08a4);});});}
\ No newline at end of file
+var _0x049e=['localhost','./openchannelAccount.socket','register','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults'];(function(_0xe6f7a7,_0x52c1fa){var _0x15f41b=function(_0x2cea45){while(--_0x2cea45){_0xe6f7a7['push'](_0xe6f7a7['shift']());}};_0x15f41b(++_0x52c1fa);}(_0x049e,0x16a));var _0xe049=function(_0x595013,_0x65a215){_0x595013=_0x595013-0x0;var _0x2a29e3=_0x049e[_0x595013];return _0x2a29e3;};'use strict';var _=require(_0xe049('0x0'));var util=require(_0xe049('0x1'));var moment=require('moment');var BPromise=require(_0xe049('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe049('0x3'));var db=require(_0xe049('0x4'))['db'];var utils=require(_0xe049('0x5'));var logger=require(_0xe049('0x6'))(_0xe049('0x7'));var config=require('../../config/environment');var jayson=require(_0xe049('0x8'));var client=jayson[_0xe049('0x9')][_0xe049('0xa')]({'port':0x232a});config[_0xe049('0xb')]=_[_0xe049('0xc')](config[_0xe049('0xb')],{'host':_0xe049('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe049('0xb')]));require(_0xe049('0xe'))[_0xe049('0xf')](socket);function respondWithRpcPromise(_0x492115,_0x5cd404,_0x45a5fa){return new BPromise(function(_0x2ac671,_0x32a065){return client['request'](_0x492115,_0x45a5fa)['then'](function(_0x574549){logger[_0xe049('0x10')](_0xe049('0x11'),_0x5cd404,_0xe049('0x12'));logger[_0xe049('0x13')](_0xe049('0x14'),_0x5cd404,_0xe049('0x12'),JSON[_0xe049('0x15')](_0x574549));if(_0x574549[_0xe049('0x16')]){if(_0x574549['error'][_0xe049('0x17')]===0x1f4){logger[_0xe049('0x16')](_0xe049('0x11'),_0x5cd404,_0x574549[_0xe049('0x16')]['message']);return _0x32a065(_0x574549[_0xe049('0x16')][_0xe049('0x18')]);}logger['error'](_0xe049('0x11'),_0x5cd404,_0x574549[_0xe049('0x16')]['message']);return _0x2ac671(_0x574549[_0xe049('0x16')][_0xe049('0x18')]);}else{logger['info'](_0xe049('0x11'),_0x5cd404,'request\x20sent');_0x2ac671(_0x574549['result'][_0xe049('0x18')]);}})['catch'](function(_0x55da56){logger[_0xe049('0x16')](_0xe049('0x11'),_0x5cd404,_0x55da56);_0x32a065(_0x55da56);});});}
\ No newline at end of file
index 7b6ac72..46ca602 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd816=['update','emit','removeListener','./openchannelAccount.events','save'];(function(_0x47e7cb,_0x4c1b8d){var _0x2a8874=function(_0x36498f){while(--_0x36498f){_0x47e7cb['push'](_0x47e7cb['shift']());}};_0x2a8874(++_0x4c1b8d);}(_0xd816,0xd5));var _0x6d81=function(_0x3cd89f,_0x38fff1){_0x3cd89f=_0x3cd89f-0x0;var _0x41d138=_0xd816[_0x3cd89f];return _0x41d138;};'use strict';var OpenchannelAccountEvents=require(_0x6d81('0x0'));var events=[_0x6d81('0x1'),'remove',_0x6d81('0x2')];function createListener(_0x538e21,_0x540f68){return function(_0x5d99e4){_0x540f68[_0x6d81('0x3')](_0x538e21,_0x5d99e4);};}function removeListener(_0x39a52f,_0x3511a2){return function(){OpenchannelAccountEvents[_0x6d81('0x4')](_0x39a52f,_0x3511a2);};}exports['register']=function(_0x6c01ef){for(var _0x4ba95f=0x0,_0x10f1a7=events['length'];_0x4ba95f<_0x10f1a7;_0x4ba95f++){var _0x96d1ac=events[_0x4ba95f];var _0x15d634=createListener('openchannelAccount:'+_0x96d1ac,_0x6c01ef);OpenchannelAccountEvents['on'](_0x96d1ac,_0x15d634);}};
\ No newline at end of file
+var _0x4bd1=['removeListener','register','length','openchannelAccount:','save','update','emit'];(function(_0x381589,_0x27a707){var _0x2a075d=function(_0x4ea19d){while(--_0x4ea19d){_0x381589['push'](_0x381589['shift']());}};_0x2a075d(++_0x27a707);}(_0x4bd1,0x90));var _0x14bd=function(_0x47d6dc,_0xc036cc){_0x47d6dc=_0x47d6dc-0x0;var _0x1a1c93=_0x4bd1[_0x47d6dc];return _0x1a1c93;};'use strict';var OpenchannelAccountEvents=require('./openchannelAccount.events');var events=[_0x14bd('0x0'),'remove',_0x14bd('0x1')];function createListener(_0xa0d344,_0x50d79a){return function(_0x17e7b6){_0x50d79a[_0x14bd('0x2')](_0xa0d344,_0x17e7b6);};}function removeListener(_0x51fcdb,_0x4080e1){return function(){OpenchannelAccountEvents[_0x14bd('0x3')](_0x51fcdb,_0x4080e1);};}exports[_0x14bd('0x4')]=function(_0x31b468){for(var _0x5c4680=0x0,_0x35806e=events[_0x14bd('0x5')];_0x5c4680<_0x35806e;_0x5c4680++){var _0xb06dbf=events[_0x5c4680];var _0x2e9a2f=createListener(_0x14bd('0x6')+_0xb06dbf,_0x31b468);OpenchannelAccountEvents['on'](_0xb06dbf,_0x2e9a2f);}};
\ No newline at end of file
index bf263bf..bb0b4a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5aa=['multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelApplication.controller','index','get','/:id','isAuthenticated','show','post','create','put','delete','destroy','exports'];(function(_0x4e2761,_0x29af8e){var _0x391c26=function(_0x880d5d){while(--_0x880d5d){_0x4e2761['push'](_0x4e2761['shift']());}};_0x391c26(++_0x29af8e);}(_0xe5aa,0x1b9));var _0xae5a=function(_0x4620c8,_0x33ffc3){_0x4620c8=_0x4620c8-0x0;var _0x248647=_0xe5aa[_0x4620c8];return _0x248647;};'use strict';var multer=require(_0xae5a('0x0'));var util=require(_0xae5a('0x1'));var path=require(_0xae5a('0x2'));var timeout=require('connect-timeout');var express=require(_0xae5a('0x3'));var router=express[_0xae5a('0x4')]();var fs_extra=require(_0xae5a('0x5'));var auth=require(_0xae5a('0x6'));var interaction=require(_0xae5a('0x7'));var config=require(_0xae5a('0x8'));var controller=require(_0xae5a('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xae5a('0xa')]);router[_0xae5a('0xb')](_0xae5a('0xc'),auth[_0xae5a('0xd')](),controller[_0xae5a('0xe')]);router[_0xae5a('0xf')]('/',auth[_0xae5a('0xd')](),controller[_0xae5a('0x10')]);router[_0xae5a('0x11')](_0xae5a('0xc'),auth[_0xae5a('0xd')](),controller['update']);router[_0xae5a('0x12')]('/:id',auth[_0xae5a('0xd')](),controller[_0xae5a('0x13')]);module[_0xae5a('0x14')]=router;
\ No newline at end of file
+var _0xadb4=['get','isAuthenticated','show','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','../../components/auth/service','../../config/environment','./openchannelApplication.controller'];(function(_0x51b1ef,_0x54e8dc){var _0x4bc52e=function(_0x19e605){while(--_0x19e605){_0x51b1ef['push'](_0x51b1ef['shift']());}};_0x4bc52e(++_0x54e8dc);}(_0xadb4,0x14d));var _0x4adb=function(_0x289c32,_0x1bca41){_0x289c32=_0x289c32-0x0;var _0x365c1d=_0xadb4[_0x289c32];return _0x365c1d;};'use strict';var multer=require(_0x4adb('0x0'));var util=require(_0x4adb('0x1'));var path=require(_0x4adb('0x2'));var timeout=require(_0x4adb('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x4adb('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x4adb('0x5'));var controller=require(_0x4adb('0x6'));router[_0x4adb('0x7')]('/',auth[_0x4adb('0x8')](),controller['index']);router[_0x4adb('0x7')]('/:id',auth[_0x4adb('0x8')](),controller[_0x4adb('0x9')]);router['post']('/',auth[_0x4adb('0x8')](),controller[_0x4adb('0xa')]);router[_0x4adb('0xb')](_0x4adb('0xc'),auth[_0x4adb('0x8')](),controller[_0x4adb('0xd')]);router[_0x4adb('0xe')](_0x4adb('0xc'),auth[_0x4adb('0x8')](),controller[_0x4adb('0xf')]);module[_0x4adb('0x10')]=router;
\ No newline at end of file
index e382db1..e56c913 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6450=['*,*,*,*','sequelize','INTEGER','STRING','noop','TEXT'];(function(_0x3b8f2e,_0x5a99a8){var _0x1433d5=function(_0x5e0353){while(--_0x5e0353){_0x3b8f2e['push'](_0x3b8f2e['shift']());}};_0x1433d5(++_0x5a99a8);}(_0x6450,0x1c9));var _0x0645=function(_0x21ff42,_0x54282f){_0x21ff42=_0x21ff42-0x0;var _0x435dbc=_0x6450[_0x21ff42];return _0x435dbc;};'use strict';var Sequelize=require(_0x0645('0x0'));module['exports']={'priority':{'type':Sequelize[_0x0645('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x0645('0x2')],'allowNull':![],'defaultValue':_0x0645('0x3')},'appdata':{'type':Sequelize[_0x0645('0x4')]()},'description':{'type':Sequelize[_0x0645('0x2')]},'interval':{'type':Sequelize[_0x0645('0x2')],'defaultValue':_0x0645('0x5')}};
\ No newline at end of file
+var _0x6933=['*,*,*,*','sequelize','exports','STRING','noop','TEXT'];(function(_0x1406ae,_0x292395){var _0x23a076=function(_0x5e147a){while(--_0x5e147a){_0x1406ae['push'](_0x1406ae['shift']());}};_0x23a076(++_0x292395);}(_0x6933,0xdf));var _0x3693=function(_0x5e33f6,_0x2e18e6){_0x5e33f6=_0x5e33f6-0x0;var _0x20cb0f=_0x6933[_0x5e33f6];return _0x20cb0f;};'use strict';var Sequelize=require(_0x3693('0x0'));module[_0x3693('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x3693('0x2')],'allowNull':![],'defaultValue':_0x3693('0x3')},'appdata':{'type':Sequelize[_0x3693('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x3693('0x5')}};
\ No newline at end of file
index 76d99cf..c628c9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5c4=['count','set','Content-Range','apply','reject','save','destroy','then','end','error','name','send','index','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','where','merge','VIRTUAL','filter','OpenchannelApplication','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit'];(function(_0xbe19dc,_0x59eaa5){var _0x13d4d0=function(_0x1a2f9b){while(--_0x1a2f9b){_0xbe19dc['push'](_0xbe19dc['shift']());}};_0x13d4d0(++_0x59eaa5);}(_0xc5c4,0x75));var _0x4c5c=function(_0x110e5b,_0x4894cb){_0x110e5b=_0x110e5b-0x0;var _0x5e9d66=_0xc5c4[_0x110e5b];return _0x5e9d66;};'use strict';var emlformat=require(_0x4c5c('0x0'));var rimraf=require(_0x4c5c('0x1'));var zipdir=require(_0x4c5c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4c5c('0x3'));var moment=require('moment');var BPromise=require(_0x4c5c('0x4'));var Mustache=require(_0x4c5c('0x5'));var util=require(_0x4c5c('0x6'));var path=require('path');var sox=require(_0x4c5c('0x7'));var csv=require(_0x4c5c('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4c5c('0x9'));var _=require(_0x4c5c('0xa'));var squel=require(_0x4c5c('0xb'));var crypto=require('crypto');var jsforce=require(_0x4c5c('0xc'));var deskjs=require(_0x4c5c('0xd'));var toCsv=require('to-csv');var querystring=require(_0x4c5c('0xe'));var Papa=require(_0x4c5c('0xf'));var Redis=require('ioredis');var authService=require(_0x4c5c('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x4c5c('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4c5c('0x12'))(_0x4c5c('0x13'));var utils=require(_0x4c5c('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x4c5c('0x15'));var db=require(_0x4c5c('0x16'))['db'];function respondWithStatusCode(_0x20c25b,_0x41ceae){_0x41ceae=_0x41ceae||0xcc;return function(_0x2c149f){if(_0x2c149f){return _0x20c25b[_0x4c5c('0x17')](_0x41ceae);}return _0x20c25b[_0x4c5c('0x18')](_0x41ceae)['end']();};}function respondWithResult(_0x1936d3,_0x6956c){_0x6956c=_0x6956c||0xc8;return function(_0x58abb5){if(_0x58abb5){return _0x1936d3[_0x4c5c('0x18')](_0x6956c)[_0x4c5c('0x19')](_0x58abb5);}};}function respondWithFilteredResult(_0x59dc13,_0x2a4d7b){return function(_0x4a1bde){if(_0x4a1bde){var _0x126775=typeof _0x2a4d7b[_0x4c5c('0x1a')]===_0x4c5c('0x1b')&&typeof _0x2a4d7b[_0x4c5c('0x1c')]===_0x4c5c('0x1b');var _0x478746=_0x4a1bde['count'];var _0x178d64=_0x126775?0x0:_0x2a4d7b[_0x4c5c('0x1a')];var _0x35d081=_0x126775?_0x4a1bde[_0x4c5c('0x1d')]:_0x2a4d7b[_0x4c5c('0x1a')]+_0x2a4d7b[_0x4c5c('0x1c')];var _0x3cceee;if(_0x35d081>=_0x478746){_0x35d081=_0x478746;_0x3cceee=0xc8;}else{_0x3cceee=0xce;}_0x59dc13['status'](_0x3cceee);return _0x59dc13[_0x4c5c('0x1e')](_0x4c5c('0x1f'),_0x178d64+'-'+_0x35d081+'/'+_0x478746)['json'](_0x4a1bde);}return null;};}function patchUpdates(_0x1086df){return function(_0x32e876){try{jsonpatch[_0x4c5c('0x20')](_0x32e876,_0x1086df,!![]);}catch(_0x30130a){return BPromise[_0x4c5c('0x21')](_0x30130a);}return _0x32e876[_0x4c5c('0x22')]();};}function saveUpdates(_0x227d63,_0x3820ca){return function(_0xeaf4ce){if(_0xeaf4ce){return _0xeaf4ce['update'](_0x227d63)['then'](function(_0x35b538){return _0x35b538;});}return null;};}function removeEntity(_0x5b2875,_0x1ea36d){return function(_0x5b8d11){if(_0x5b8d11){return _0x5b8d11[_0x4c5c('0x23')]()[_0x4c5c('0x24')](function(){_0x5b2875[_0x4c5c('0x18')](0xcc)[_0x4c5c('0x25')]();});}};}function handleEntityNotFound(_0x58359d,_0x1919eb){return function(_0x4d3263){if(!_0x4d3263){_0x58359d[_0x4c5c('0x17')](0x194);}return _0x4d3263;};}function handleError(_0x16a90b,_0x2c1ef6){_0x2c1ef6=_0x2c1ef6||0x1f4;return function(_0x592941){logger[_0x4c5c('0x26')](_0x592941['stack']);if(_0x592941[_0x4c5c('0x27')]){delete _0x592941['name'];}_0x16a90b[_0x4c5c('0x18')](_0x2c1ef6)[_0x4c5c('0x28')](_0x592941);};}exports[_0x4c5c('0x29')]=function(_0x42dbd4,_0x535a3f){var _0x2c954f={},_0x184d22={},_0x3a7773={'count':0x0,'rows':[]};var _0xb4e3d3=_['map'](db['OpenchannelApplication'][_0x4c5c('0x2a')],function(_0x2c688e){return{'name':_0x2c688e[_0x4c5c('0x2b')],'type':_0x2c688e[_0x4c5c('0x2c')][_0x4c5c('0x2d')]};});_0x184d22[_0x4c5c('0x2e')]=_[_0x4c5c('0x2f')](_0xb4e3d3,_0x4c5c('0x27'));_0x184d22[_0x4c5c('0x30')]=_[_0x4c5c('0x31')](_0x42dbd4['query']);_0x184d22[_0x4c5c('0x32')]=_[_0x4c5c('0x33')](_0x184d22[_0x4c5c('0x2e')],_0x184d22[_0x4c5c('0x30')]);_0x2c954f[_0x4c5c('0x34')]=_[_0x4c5c('0x33')](_0x184d22['model'],qs[_0x4c5c('0x35')](_0x42dbd4[_0x4c5c('0x30')][_0x4c5c('0x35')]));_0x2c954f[_0x4c5c('0x34')]=_0x2c954f[_0x4c5c('0x34')]['length']?_0x2c954f[_0x4c5c('0x34')]:_0x184d22['model'];if(!_0x42dbd4[_0x4c5c('0x30')][_0x4c5c('0x36')](_0x4c5c('0x37'))){_0x2c954f[_0x4c5c('0x1c')]=qs[_0x4c5c('0x1c')](_0x42dbd4[_0x4c5c('0x30')][_0x4c5c('0x1c')]);_0x2c954f[_0x4c5c('0x1a')]=qs[_0x4c5c('0x1a')](_0x42dbd4[_0x4c5c('0x30')][_0x4c5c('0x1a')]);}_0x2c954f[_0x4c5c('0x38')]=qs['sort'](_0x42dbd4[_0x4c5c('0x30')]['sort']);_0x2c954f[_0x4c5c('0x39')]=qs[_0x4c5c('0x32')](_['pick'](_0x42dbd4[_0x4c5c('0x30')],_0x184d22[_0x4c5c('0x32')]),_0xb4e3d3);if(_0x42dbd4[_0x4c5c('0x30')]['filter']){_0x2c954f[_0x4c5c('0x39')]=_[_0x4c5c('0x3a')](_0x2c954f[_0x4c5c('0x39')],{'$or':_['map'](_0xb4e3d3,function(_0x4ea2bc){if(_0x4ea2bc[_0x4c5c('0x2c')]!==_0x4c5c('0x3b')){var _0x268d3a={};_0x268d3a[_0x4ea2bc[_0x4c5c('0x27')]]={'$like':'%'+_0x42dbd4['query'][_0x4c5c('0x3c')]+'%'};return _0x268d3a;}})});}_0x2c954f=_['merge']({},_0x2c954f,_0x42dbd4['options']);var _0x3b549f={'where':_0x2c954f[_0x4c5c('0x39')]};return db[_0x4c5c('0x3d')]['count'](_0x3b549f)[_0x4c5c('0x24')](function(_0x101014){_0x3a7773[_0x4c5c('0x1d')]=_0x101014;if(_0x42dbd4['query'][_0x4c5c('0x3e')]){_0x2c954f[_0x4c5c('0x3f')]=[{'all':!![]}];}return db['OpenchannelApplication'][_0x4c5c('0x40')](_0x2c954f);})[_0x4c5c('0x24')](function(_0x466e73){_0x3a7773[_0x4c5c('0x41')]=_0x466e73;return _0x3a7773;})[_0x4c5c('0x24')](respondWithFilteredResult(_0x535a3f,_0x2c954f))[_0x4c5c('0x42')](handleError(_0x535a3f,null));};exports[_0x4c5c('0x43')]=function(_0x5c97c6,_0x47bf21){var _0x56c435={'raw':!![],'where':{'id':_0x5c97c6[_0x4c5c('0x44')]['id']}},_0x494d16={};_0x494d16[_0x4c5c('0x2e')]=_[_0x4c5c('0x31')](db[_0x4c5c('0x3d')][_0x4c5c('0x2a')]);_0x494d16[_0x4c5c('0x30')]=_[_0x4c5c('0x31')](_0x5c97c6[_0x4c5c('0x30')]);_0x494d16[_0x4c5c('0x32')]=_['intersection'](_0x494d16['model'],_0x494d16[_0x4c5c('0x30')]);_0x56c435['attributes']=_['intersection'](_0x494d16[_0x4c5c('0x2e')],qs[_0x4c5c('0x35')](_0x5c97c6[_0x4c5c('0x30')][_0x4c5c('0x35')]));_0x56c435['attributes']=_0x56c435['attributes']['length']?_0x56c435[_0x4c5c('0x34')]:_0x494d16[_0x4c5c('0x2e')];if(_0x5c97c6[_0x4c5c('0x30')][_0x4c5c('0x3e')]){_0x56c435[_0x4c5c('0x3f')]=[{'all':!![]}];}_0x56c435=_['merge']({},_0x56c435,_0x5c97c6[_0x4c5c('0x45')]);return db[_0x4c5c('0x3d')][_0x4c5c('0x46')](_0x56c435)[_0x4c5c('0x24')](handleEntityNotFound(_0x47bf21,null))[_0x4c5c('0x24')](respondWithResult(_0x47bf21,null))[_0x4c5c('0x42')](handleError(_0x47bf21,null));};exports[_0x4c5c('0x47')]=function(_0x460289,_0x131fc5){return db[_0x4c5c('0x3d')][_0x4c5c('0x47')](_0x460289['body'],{})['then'](respondWithResult(_0x131fc5,0xc9))['catch'](handleError(_0x131fc5,null));};exports['update']=function(_0x565260,_0x5a4a48){if(_0x565260[_0x4c5c('0x48')]['id']){delete _0x565260['body']['id'];}return db[_0x4c5c('0x3d')][_0x4c5c('0x46')]({'where':{'id':_0x565260[_0x4c5c('0x44')]['id']}})[_0x4c5c('0x24')](handleEntityNotFound(_0x5a4a48,null))[_0x4c5c('0x24')](saveUpdates(_0x565260['body'],null))[_0x4c5c('0x24')](respondWithResult(_0x5a4a48,null))[_0x4c5c('0x42')](handleError(_0x5a4a48,null));};exports['destroy']=function(_0x30d9c4,_0x282335){return db[_0x4c5c('0x3d')]['find']({'where':{'id':_0x30d9c4[_0x4c5c('0x44')]['id']}})[_0x4c5c('0x24')](handleEntityNotFound(_0x282335,null))[_0x4c5c('0x24')](removeEntity(_0x282335,null))[_0x4c5c('0x42')](handleError(_0x282335,null));};
\ No newline at end of file
+var _0x01fc=['merge','options','include','rows','show','rawAttributes','includeAll','find','create','body','catch','params','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','OpenchannelApplication','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL'];(function(_0x4f33a1,_0x3808ea){var _0x571700=function(_0x1c65c6){while(--_0x1c65c6){_0x4f33a1['push'](_0x4f33a1['shift']());}};_0x571700(++_0x3808ea);}(_0x01fc,0x13c));var _0xc01f=function(_0x4a961e,_0x43f968){_0x4a961e=_0x4a961e-0x0;var _0x426312=_0x01fc[_0x4a961e];return _0x426312;};'use strict';var emlformat=require(_0xc01f('0x0'));var rimraf=require(_0xc01f('0x1'));var zipdir=require(_0xc01f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc01f('0x3'));var moment=require(_0xc01f('0x4'));var BPromise=require(_0xc01f('0x5'));var Mustache=require(_0xc01f('0x6'));var util=require(_0xc01f('0x7'));var path=require(_0xc01f('0x8'));var sox=require(_0xc01f('0x9'));var csv=require(_0xc01f('0xa'));var ejs=require(_0xc01f('0xb'));var fs=require('fs');var fs_extra=require(_0xc01f('0xc'));var _=require('lodash');var squel=require(_0xc01f('0xd'));var crypto=require('crypto');var jsforce=require(_0xc01f('0xe'));var deskjs=require(_0xc01f('0xf'));var toCsv=require(_0xc01f('0xa'));var querystring=require(_0xc01f('0x10'));var Papa=require(_0xc01f('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xc01f('0x12'));var hardwareService=require(_0xc01f('0x13'));var logger=require(_0xc01f('0x14'))(_0xc01f('0x15'));var utils=require(_0xc01f('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x534b65,_0x2ade14){_0x2ade14=_0x2ade14||0xcc;return function(_0x1494e1){if(_0x1494e1){return _0x534b65[_0xc01f('0x17')](_0x2ade14);}return _0x534b65[_0xc01f('0x18')](_0x2ade14)[_0xc01f('0x19')]();};}function respondWithResult(_0x2521f0,_0xa2a089){_0xa2a089=_0xa2a089||0xc8;return function(_0x4fc617){if(_0x4fc617){return _0x2521f0[_0xc01f('0x18')](_0xa2a089)[_0xc01f('0x1a')](_0x4fc617);}};}function respondWithFilteredResult(_0x17dfb1,_0x15e9d2){return function(_0x1a80ed){if(_0x1a80ed){var _0x35f237=typeof _0x15e9d2[_0xc01f('0x1b')]==='undefined'&&typeof _0x15e9d2[_0xc01f('0x1c')]===_0xc01f('0x1d');var _0x362591=_0x1a80ed[_0xc01f('0x1e')];var _0x284f38=_0x35f237?0x0:_0x15e9d2[_0xc01f('0x1b')];var _0x46fa4b=_0x35f237?_0x1a80ed[_0xc01f('0x1e')]:_0x15e9d2[_0xc01f('0x1b')]+_0x15e9d2['limit'];var _0x4de9a4;if(_0x46fa4b>=_0x362591){_0x46fa4b=_0x362591;_0x4de9a4=0xc8;}else{_0x4de9a4=0xce;}_0x17dfb1['status'](_0x4de9a4);return _0x17dfb1['set'](_0xc01f('0x1f'),_0x284f38+'-'+_0x46fa4b+'/'+_0x362591)[_0xc01f('0x1a')](_0x1a80ed);}return null;};}function patchUpdates(_0x43ab02){return function(_0xce1bcb){try{jsonpatch[_0xc01f('0x20')](_0xce1bcb,_0x43ab02,!![]);}catch(_0x42b08e){return BPromise[_0xc01f('0x21')](_0x42b08e);}return _0xce1bcb[_0xc01f('0x22')]();};}function saveUpdates(_0x18050b,_0x3a7c3b){return function(_0x5a301c){if(_0x5a301c){return _0x5a301c[_0xc01f('0x23')](_0x18050b)[_0xc01f('0x24')](function(_0x50d295){return _0x50d295;});}return null;};}function removeEntity(_0x4cd6dd,_0x3672a9){return function(_0x446f04){if(_0x446f04){return _0x446f04[_0xc01f('0x25')]()['then'](function(){_0x4cd6dd[_0xc01f('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x502cd2,_0x3bad0f){return function(_0x2badaf){if(!_0x2badaf){_0x502cd2[_0xc01f('0x17')](0x194);}return _0x2badaf;};}function handleError(_0x191be9,_0xa5053f){_0xa5053f=_0xa5053f||0x1f4;return function(_0x482b67){logger[_0xc01f('0x26')](_0x482b67[_0xc01f('0x27')]);if(_0x482b67[_0xc01f('0x28')]){delete _0x482b67[_0xc01f('0x28')];}_0x191be9[_0xc01f('0x18')](_0xa5053f)[_0xc01f('0x29')](_0x482b67);};}exports[_0xc01f('0x2a')]=function(_0x46ab42,_0x17776e){var _0xe36c56={},_0xc9ac42={},_0x203f75={'count':0x0,'rows':[]};var _0x15c648=_[_0xc01f('0x2b')](db[_0xc01f('0x2c')]['rawAttributes'],function(_0x262c87){return{'name':_0x262c87[_0xc01f('0x2d')],'type':_0x262c87[_0xc01f('0x2e')][_0xc01f('0x2f')]};});_0xc9ac42[_0xc01f('0x30')]=_[_0xc01f('0x2b')](_0x15c648,_0xc01f('0x28'));_0xc9ac42[_0xc01f('0x31')]=_[_0xc01f('0x32')](_0x46ab42['query']);_0xc9ac42[_0xc01f('0x33')]=_[_0xc01f('0x34')](_0xc9ac42[_0xc01f('0x30')],_0xc9ac42['query']);_0xe36c56['attributes']=_[_0xc01f('0x34')](_0xc9ac42['model'],qs[_0xc01f('0x35')](_0x46ab42[_0xc01f('0x31')]['fields']));_0xe36c56[_0xc01f('0x36')]=_0xe36c56[_0xc01f('0x36')][_0xc01f('0x37')]?_0xe36c56['attributes']:_0xc9ac42[_0xc01f('0x30')];if(!_0x46ab42['query'][_0xc01f('0x38')](_0xc01f('0x39'))){_0xe36c56[_0xc01f('0x1c')]=qs[_0xc01f('0x1c')](_0x46ab42[_0xc01f('0x31')][_0xc01f('0x1c')]);_0xe36c56[_0xc01f('0x1b')]=qs[_0xc01f('0x1b')](_0x46ab42[_0xc01f('0x31')][_0xc01f('0x1b')]);}_0xe36c56[_0xc01f('0x3a')]=qs[_0xc01f('0x3b')](_0x46ab42['query'][_0xc01f('0x3b')]);_0xe36c56[_0xc01f('0x3c')]=qs[_0xc01f('0x33')](_[_0xc01f('0x3d')](_0x46ab42['query'],_0xc9ac42[_0xc01f('0x33')]),_0x15c648);if(_0x46ab42['query'][_0xc01f('0x3e')]){_0xe36c56[_0xc01f('0x3c')]=_['merge'](_0xe36c56[_0xc01f('0x3c')],{'$or':_[_0xc01f('0x2b')](_0x15c648,function(_0x96e20f){if(_0x96e20f[_0xc01f('0x2e')]!==_0xc01f('0x3f')){var _0x454d28={};_0x454d28[_0x96e20f[_0xc01f('0x28')]]={'$like':'%'+_0x46ab42[_0xc01f('0x31')][_0xc01f('0x3e')]+'%'};return _0x454d28;}})});}_0xe36c56=_[_0xc01f('0x40')]({},_0xe36c56,_0x46ab42[_0xc01f('0x41')]);var _0x545bd7={'where':_0xe36c56[_0xc01f('0x3c')]};return db[_0xc01f('0x2c')][_0xc01f('0x1e')](_0x545bd7)[_0xc01f('0x24')](function(_0x37e866){_0x203f75[_0xc01f('0x1e')]=_0x37e866;if(_0x46ab42[_0xc01f('0x31')]['includeAll']){_0xe36c56[_0xc01f('0x42')]=[{'all':!![]}];}return db['OpenchannelApplication']['findAll'](_0xe36c56);})[_0xc01f('0x24')](function(_0x140133){_0x203f75[_0xc01f('0x43')]=_0x140133;return _0x203f75;})['then'](respondWithFilteredResult(_0x17776e,_0xe36c56))['catch'](handleError(_0x17776e,null));};exports[_0xc01f('0x44')]=function(_0x5d87c4,_0xe3b65d){var _0x430fb8={'raw':!![],'where':{'id':_0x5d87c4['params']['id']}},_0x32c912={};_0x32c912[_0xc01f('0x30')]=_[_0xc01f('0x32')](db[_0xc01f('0x2c')][_0xc01f('0x45')]);_0x32c912[_0xc01f('0x31')]=_[_0xc01f('0x32')](_0x5d87c4[_0xc01f('0x31')]);_0x32c912[_0xc01f('0x33')]=_[_0xc01f('0x34')](_0x32c912[_0xc01f('0x30')],_0x32c912[_0xc01f('0x31')]);_0x430fb8[_0xc01f('0x36')]=_[_0xc01f('0x34')](_0x32c912[_0xc01f('0x30')],qs[_0xc01f('0x35')](_0x5d87c4['query'][_0xc01f('0x35')]));_0x430fb8[_0xc01f('0x36')]=_0x430fb8[_0xc01f('0x36')]['length']?_0x430fb8[_0xc01f('0x36')]:_0x32c912[_0xc01f('0x30')];if(_0x5d87c4[_0xc01f('0x31')][_0xc01f('0x46')]){_0x430fb8[_0xc01f('0x42')]=[{'all':!![]}];}_0x430fb8=_[_0xc01f('0x40')]({},_0x430fb8,_0x5d87c4[_0xc01f('0x41')]);return db['OpenchannelApplication'][_0xc01f('0x47')](_0x430fb8)['then'](handleEntityNotFound(_0xe3b65d,null))[_0xc01f('0x24')](respondWithResult(_0xe3b65d,null))['catch'](handleError(_0xe3b65d,null));};exports[_0xc01f('0x48')]=function(_0xef4bb9,_0x40ba66){return db['OpenchannelApplication'][_0xc01f('0x48')](_0xef4bb9[_0xc01f('0x49')],{})[_0xc01f('0x24')](respondWithResult(_0x40ba66,0xc9))[_0xc01f('0x4a')](handleError(_0x40ba66,null));};exports[_0xc01f('0x23')]=function(_0x4e0f7c,_0x32d0a6){if(_0x4e0f7c[_0xc01f('0x49')]['id']){delete _0x4e0f7c[_0xc01f('0x49')]['id'];}return db[_0xc01f('0x2c')]['find']({'where':{'id':_0x4e0f7c['params']['id']}})[_0xc01f('0x24')](handleEntityNotFound(_0x32d0a6,null))[_0xc01f('0x24')](saveUpdates(_0x4e0f7c[_0xc01f('0x49')],null))['then'](respondWithResult(_0x32d0a6,null))[_0xc01f('0x4a')](handleError(_0x32d0a6,null));};exports[_0xc01f('0x25')]=function(_0x4b83bb,_0x5a794c){return db[_0xc01f('0x2c')][_0xc01f('0x47')]({'where':{'id':_0x4b83bb[_0xc01f('0x4b')]['id']}})[_0xc01f('0x24')](handleEntityNotFound(_0x5a794c,null))[_0xc01f('0x24')](removeEntity(_0x5a794c,null))[_0xc01f('0x4a')](handleError(_0x5a794c,null));};
\ No newline at end of file
index 08209ff..373ffd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a69=['request-promise','path','rimraf','../../config/environment','./openchannelApplication.attributes','exports','define','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird'];(function(_0x5bac50,_0x540d00){var _0x28afd5=function(_0x25b25d){while(--_0x25b25d){_0x5bac50['push'](_0x5bac50['shift']());}};_0x28afd5(++_0x540d00);}(_0x0a69,0xb1));var _0x90a6=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x0a69[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x90a6('0x0'));var util=require(_0x90a6('0x1'));var logger=require(_0x90a6('0x2'))('api');var moment=require(_0x90a6('0x3'));var BPromise=require(_0x90a6('0x4'));var rp=require(_0x90a6('0x5'));var fs=require('fs');var path=require(_0x90a6('0x6'));var rimraf=require(_0x90a6('0x7'));var config=require(_0x90a6('0x8'));var attributes=require(_0x90a6('0x9'));module[_0x90a6('0xa')]=function(_0x5eae87,_0x2ab4c6){return _0x5eae87[_0x90a6('0xb')]('OpenchannelApplication',attributes,{'tableName':'openchannel_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x90a6('0xc')});};
\ No newline at end of file
+var _0x31b2=['lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./openchannelApplication.attributes','exports','openchannel_applications','utf8mb4'];(function(_0x214aa2,_0x41b96e){var _0x3798e6=function(_0x3a7fd6){while(--_0x3a7fd6){_0x214aa2['push'](_0x214aa2['shift']());}};_0x3798e6(++_0x41b96e);}(_0x31b2,0x6c));var _0x231b=function(_0x38e177,_0x59ec9f){_0x38e177=_0x38e177-0x0;var _0x1faf15=_0x31b2[_0x38e177];return _0x1faf15;};'use strict';var _=require(_0x231b('0x0'));var util=require(_0x231b('0x1'));var logger=require(_0x231b('0x2'))('api');var moment=require(_0x231b('0x3'));var BPromise=require('bluebird');var rp=require(_0x231b('0x4'));var fs=require('fs');var path=require(_0x231b('0x5'));var rimraf=require(_0x231b('0x6'));var config=require(_0x231b('0x7'));var attributes=require(_0x231b('0x8'));module[_0x231b('0x9')]=function(_0x26f02a,_0x2f1843){return _0x26f02a['define']('OpenchannelApplication',attributes,{'tableName':_0x231b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x231b('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index a1e48b4..5c998b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26e5=['stringify','error','message','request\x20sent','result','catch','UpdateOpenchannelApplication','OpenchannelApplication','body','options','where','attributes','info','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','OpenchannelApplication,\x20%s,\x20%s','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s'];(function(_0x486f62,_0x46ef35){var _0x493e5d=function(_0x5ead31){while(--_0x5ead31){_0x486f62['push'](_0x486f62['shift']());}};_0x493e5d(++_0x46ef35);}(_0x26e5,0x139));var _0x526e=function(_0x437545,_0x4ab48b){_0x437545=_0x437545-0x0;var _0x408060=_0x26e5[_0x437545];return _0x408060;};'use strict';var _=require(_0x526e('0x0'));var util=require('util');var moment=require(_0x526e('0x1'));var BPromise=require(_0x526e('0x2'));var rs=require(_0x526e('0x3'));var fs=require('fs');var Redis=require(_0x526e('0x4'));var db=require(_0x526e('0x5'))['db'];var utils=require(_0x526e('0x6'));var logger=require(_0x526e('0x7'))('rpc');var config=require(_0x526e('0x8'));var jayson=require(_0x526e('0x9'));var client=jayson[_0x526e('0xa')][_0x526e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x40238d,_0x1039b7,_0x57dd13){return new BPromise(function(_0x3dd326,_0x5c5b73){return client[_0x526e('0xc')](_0x40238d,_0x57dd13)[_0x526e('0xd')](function(_0x2ba965){logger['info'](_0x526e('0xe'),_0x1039b7,'request\x20sent');logger[_0x526e('0xf')](_0x526e('0x10'),_0x1039b7,'request\x20sent',JSON[_0x526e('0x11')](_0x2ba965));if(_0x2ba965['error']){if(_0x2ba965[_0x526e('0x12')]['code']===0x1f4){logger[_0x526e('0x12')]('OpenchannelApplication,\x20%s,\x20%s',_0x1039b7,_0x2ba965[_0x526e('0x12')][_0x526e('0x13')]);return _0x5c5b73(_0x2ba965[_0x526e('0x12')][_0x526e('0x13')]);}logger['error'](_0x526e('0xe'),_0x1039b7,_0x2ba965['error']['message']);return _0x3dd326(_0x2ba965[_0x526e('0x12')][_0x526e('0x13')]);}else{logger['info'](_0x526e('0xe'),_0x1039b7,_0x526e('0x14'));_0x3dd326(_0x2ba965[_0x526e('0x15')]['message']);}})[_0x526e('0x16')](function(_0x506d61){logger[_0x526e('0x12')]('OpenchannelApplication,\x20%s,\x20%s',_0x1039b7,_0x506d61);_0x5c5b73(_0x506d61);});});}exports[_0x526e('0x17')]=function(_0x56b934){var _0x314f87=this;return new Promise(function(_0x543fb7,_0x5ed380){return db[_0x526e('0x18')]['update'](_0x56b934[_0x526e('0x19')],{'raw':_0x56b934['options']?_0x56b934[_0x526e('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x56b934[_0x526e('0x1a')]?_0x56b934[_0x526e('0x1a')][_0x526e('0x1b')]||null:null,'attributes':_0x56b934['options']?_0x56b934[_0x526e('0x1a')][_0x526e('0x1c')]||null:null,'limit':_0x56b934['options']?_0x56b934[_0x526e('0x1a')]['limit']||null:null})[_0x526e('0xd')](function(_0x412b7a){logger[_0x526e('0x1d')](_0x526e('0x17'),_0x56b934);logger[_0x526e('0xf')](_0x526e('0x17'),_0x56b934,JSON['stringify'](_0x412b7a));_0x543fb7(_0x412b7a);})[_0x526e('0x16')](function(_0x3ae6c3){logger['error'](_0x526e('0x17'),_0x3ae6c3[_0x526e('0x13')],_0x56b934);_0x5ed380(_0x314f87[_0x526e('0x12')](0x1f4,_0x3ae6c3[_0x526e('0x13')]));});});};
\ No newline at end of file
+var _0x354b=['request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','UpdateOpenchannelApplication','OpenchannelApplication','update','body','options','where','limit','then','catch','lodash','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','http','request','OpenchannelApplication,\x20%s,\x20%s'];(function(_0x405202,_0xaacb44){var _0x300d57=function(_0xf9fb28){while(--_0xf9fb28){_0x405202['push'](_0x405202['shift']());}};_0x300d57(++_0xaacb44);}(_0x354b,0xd6));var _0xb354=function(_0x3bb10b,_0x546bc2){_0x3bb10b=_0x3bb10b-0x0;var _0x19d91b=_0x354b[_0x3bb10b];return _0x19d91b;};'use strict';var _=require(_0xb354('0x0'));var util=require('util');var moment=require(_0xb354('0x1'));var BPromise=require(_0xb354('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb354('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xb354('0x4'))(_0xb354('0x5'));var config=require(_0xb354('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0xb354('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x401ec7,_0xb2feda,_0x1df9ea){return new BPromise(function(_0x393868,_0x4a6d08){return client[_0xb354('0x8')](_0x401ec7,_0x1df9ea)['then'](function(_0x318573){logger['info'](_0xb354('0x9'),_0xb2feda,_0xb354('0xa'));logger[_0xb354('0xb')](_0xb354('0xc'),_0xb2feda,_0xb354('0xa'),JSON[_0xb354('0xd')](_0x318573));if(_0x318573['error']){if(_0x318573[_0xb354('0xe')][_0xb354('0xf')]===0x1f4){logger[_0xb354('0xe')](_0xb354('0x9'),_0xb2feda,_0x318573[_0xb354('0xe')][_0xb354('0x10')]);return _0x4a6d08(_0x318573['error']['message']);}logger[_0xb354('0xe')](_0xb354('0x9'),_0xb2feda,_0x318573['error'][_0xb354('0x10')]);return _0x393868(_0x318573['error']['message']);}else{logger[_0xb354('0x11')](_0xb354('0x9'),_0xb2feda,'request\x20sent');_0x393868(_0x318573[_0xb354('0x12')][_0xb354('0x10')]);}})['catch'](function(_0x429d6a){logger['error']('OpenchannelApplication,\x20%s,\x20%s',_0xb2feda,_0x429d6a);_0x4a6d08(_0x429d6a);});});}exports[_0xb354('0x13')]=function(_0x2584be){var _0x23eddc=this;return new Promise(function(_0x24806d,_0x59d6ef){return db[_0xb354('0x14')][_0xb354('0x15')](_0x2584be[_0xb354('0x16')],{'raw':_0x2584be['options']?_0x2584be[_0xb354('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2584be[_0xb354('0x17')]?_0x2584be['options'][_0xb354('0x18')]||null:null,'attributes':_0x2584be[_0xb354('0x17')]?_0x2584be[_0xb354('0x17')]['attributes']||null:null,'limit':_0x2584be['options']?_0x2584be['options'][_0xb354('0x19')]||null:null})[_0xb354('0x1a')](function(_0x761ff3){logger['info'](_0xb354('0x13'),_0x2584be);logger[_0xb354('0xb')](_0xb354('0x13'),_0x2584be,JSON['stringify'](_0x761ff3));_0x24806d(_0x761ff3);})[_0xb354('0x1b')](function(_0x3ac5aa){logger[_0xb354('0xe')](_0xb354('0x13'),_0x3ac5aa[_0xb354('0x10')],_0x2584be);_0x59d6ef(_0x23eddc[_0xb354('0xe')](0x1f4,_0x3ac5aa['message']));});});};
\ No newline at end of file
index 00e94ef..0b52706 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa917=['path','connect-timeout','express','Router','../../components/interaction/service','./openchannelInteraction.controller','get','isAuthenticated','/describe','/:id','show','/:id/messages','getMessages','/:id/download','download','create','post','addMessage','/:id/tags','tracked','addTags','put','openchannel','update','delete','destroy','removeTags','exports','multer','util'];(function(_0x1b3a5c,_0x2f9d5f){var _0x2ae8cb=function(_0x549ab8){while(--_0x549ab8){_0x1b3a5c['push'](_0x1b3a5c['shift']());}};_0x2ae8cb(++_0x2f9d5f);}(_0xa917,0x148));var _0x7a91=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xa917[_0x59ee6f];return _0x4c0979;};'use strict';var multer=require(_0x7a91('0x0'));var util=require(_0x7a91('0x1'));var path=require(_0x7a91('0x2'));var timeout=require(_0x7a91('0x3'));var express=require(_0x7a91('0x4'));var router=express[_0x7a91('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x7a91('0x6'));var config=require('../../config/environment');var controller=require(_0x7a91('0x7'));router[_0x7a91('0x8')]('/',auth[_0x7a91('0x9')](),controller['index']);router[_0x7a91('0x8')](_0x7a91('0xa'),auth[_0x7a91('0x9')](),controller['describe']);router[_0x7a91('0x8')](_0x7a91('0xb'),auth[_0x7a91('0x9')](),controller[_0x7a91('0xc')]);router['get'](_0x7a91('0xd'),auth[_0x7a91('0x9')](),controller[_0x7a91('0xe')]);router[_0x7a91('0x8')](_0x7a91('0xf'),auth['isAuthenticated'](),controller[_0x7a91('0x10')]);router['post']('/',auth[_0x7a91('0x9')](),controller[_0x7a91('0x11')]);router[_0x7a91('0x12')]('/:id/messages',auth[_0x7a91('0x9')](),controller[_0x7a91('0x13')]);router[_0x7a91('0x12')](_0x7a91('0x14'),auth[_0x7a91('0x9')](),interaction[_0x7a91('0x15')]('openchannel','openchannelinteraction:addtags'),controller[_0x7a91('0x16')]);router[_0x7a91('0x17')]('/:id',auth[_0x7a91('0x9')](),interaction[_0x7a91('0x15')](_0x7a91('0x18'),'openchannelinteraction:update'),controller[_0x7a91('0x19')]);router[_0x7a91('0x1a')](_0x7a91('0xb'),auth[_0x7a91('0x9')](),interaction[_0x7a91('0x15')]('openchannel','openchannelinteraction:destroy'),controller[_0x7a91('0x1b')]);router[_0x7a91('0x1a')]('/:id/tags',auth[_0x7a91('0x9')](),controller[_0x7a91('0x1c')]);module[_0x7a91('0x1d')]=router;
\ No newline at end of file
+var _0x62c2=['./openchannelInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download','post','create','/:id/tags','tracked','openchannel','openchannelinteraction:addtags','addTags','openchannelinteraction:update','update','delete','destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment'];(function(_0x2d4f08,_0x1c3c2c){var _0x10b031=function(_0x340e33){while(--_0x340e33){_0x2d4f08['push'](_0x2d4f08['shift']());}};_0x10b031(++_0x1c3c2c);}(_0x62c2,0x1d8));var _0x262c=function(_0x55c1d2,_0x180516){_0x55c1d2=_0x55c1d2-0x0;var _0x4b49a3=_0x62c2[_0x55c1d2];return _0x4b49a3;};'use strict';var multer=require(_0x262c('0x0'));var util=require(_0x262c('0x1'));var path=require(_0x262c('0x2'));var timeout=require(_0x262c('0x3'));var express=require(_0x262c('0x4'));var router=express[_0x262c('0x5')]();var fs_extra=require(_0x262c('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x262c('0x7'));var controller=require(_0x262c('0x8'));router[_0x262c('0x9')]('/',auth[_0x262c('0xa')](),controller[_0x262c('0xb')]);router[_0x262c('0x9')](_0x262c('0xc'),auth[_0x262c('0xa')](),controller[_0x262c('0xd')]);router[_0x262c('0x9')](_0x262c('0xe'),auth['isAuthenticated'](),controller[_0x262c('0xf')]);router[_0x262c('0x9')](_0x262c('0x10'),auth[_0x262c('0xa')](),controller[_0x262c('0x11')]);router[_0x262c('0x9')](_0x262c('0x12'),auth[_0x262c('0xa')](),controller['download']);router[_0x262c('0x13')]('/',auth[_0x262c('0xa')](),controller[_0x262c('0x14')]);router['post']('/:id/messages',auth[_0x262c('0xa')](),controller['addMessage']);router['post'](_0x262c('0x15'),auth['isAuthenticated'](),interaction[_0x262c('0x16')](_0x262c('0x17'),_0x262c('0x18')),controller[_0x262c('0x19')]);router['put'](_0x262c('0xe'),auth[_0x262c('0xa')](),interaction[_0x262c('0x16')](_0x262c('0x17'),_0x262c('0x1a')),controller[_0x262c('0x1b')]);router[_0x262c('0x1c')](_0x262c('0xe'),auth['isAuthenticated'](),interaction['tracked'](_0x262c('0x17'),'openchannelinteraction:destroy'),controller[_0x262c('0x1d')]);router[_0x262c('0x1c')](_0x262c('0x15'),auth[_0x262c('0xa')](),controller[_0x262c('0x1e')]);module[_0x262c('0x1f')]=router;
\ No newline at end of file
index 96aac9d..9883056 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29d4=['STRING','ENUM','out','sequelize','BOOLEAN','DATE'];(function(_0x4d613c,_0x55f220){var _0x301fe3=function(_0x5eec0b){while(--_0x5eec0b){_0x4d613c['push'](_0x4d613c['shift']());}};_0x301fe3(++_0x55f220);}(_0x29d4,0x1a1));var _0x429d=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0x29d4[_0x5c351c];return _0x26f3b3;};'use strict';var Sequelize=require(_0x429d('0x0'));module['exports']={'closed':{'type':Sequelize[_0x429d('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x429d('0x2')]},'disposition':{'type':Sequelize[_0x429d('0x3')]},'secondDisposition':{'type':Sequelize[_0x429d('0x3')]},'thirdDisposition':{'type':Sequelize[_0x429d('0x3')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x429d('0x2')]},'threadId':{'type':Sequelize[_0x429d('0x3')]},'externalUrl':{'type':Sequelize[_0x429d('0x3')]},'lastMsgAt':{'type':Sequelize[_0x429d('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x429d('0x4')]('in',_0x429d('0x5')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x429d('0x3')]},'autoreplyExecuted':{'type':Sequelize[_0x429d('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0xaa3f=['exports','DATE','STRING','ENUM','BOOLEAN','sequelize'];(function(_0xe8129c,_0x2fb03c){var _0x709fc5=function(_0xb8e0c6){while(--_0xb8e0c6){_0xe8129c['push'](_0xe8129c['shift']());}};_0x709fc5(++_0x2fb03c);}(_0xaa3f,0x95));var _0xfaa3=function(_0x337bee,_0x53cbca){_0x337bee=_0x337bee-0x0;var _0x24c37d=_0xaa3f[_0x337bee];return _0x24c37d;};'use strict';var Sequelize=require(_0xfaa3('0x0'));module[_0xfaa3('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xfaa3('0x2')]},'disposition':{'type':Sequelize[_0xfaa3('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xfaa3('0x3')]},'read1stAt':{'type':Sequelize[_0xfaa3('0x2')]},'threadId':{'type':Sequelize['STRING']},'externalUrl':{'type':Sequelize[_0xfaa3('0x3')]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0xfaa3('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0xfaa3('0x3')]},'autoreplyExecuted':{'type':Sequelize[_0xfaa3('0x5')],'defaultValue':![]}};
\ No newline at end of file
index b92fce2..112e29b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6cb=['parseSearch','sqlOperator','conditions','unreadMessages','value','`\x20=\x200','having','Contact','operator','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','ContactId','buildExpression','text','Tag','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','$substring','find','UserId','type','start','body','keys','some','isEmpty','i.OpenchannelAccountId\x20IN\x20?','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','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?','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','t.id\x20IN\x20?','resolve','OpenchannelAccountId','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','agent','i.OpenchannelAccountId\x20IS\x20NULL','role','sequelize','toString','keyBy','a.key','Account.mandatoryDisposition','i.*','c.firstName','c.lastName','Contact.lastName','c.phone','c.mobile','Contact.mobile','c.fax','o.fullname','o.internal','Owner.internal','ui.OpenchannelInteractionId\x20IN\x20?','OpenchannelInteractionId','all','catch','params','includeAll','include','merge','create','destroy','describe','addMessage','omit','findOne','pick','options','OpenchannelMessage','findAll','addTags','ids','openchannelInteractionTags:save','removeTags','download','join','root','server','tmp','files','format','push','User','lastName','attachments','Attachment','Messages','secret','OpenchannelAccount','Account','Owner','YYYY-MM-DD\x20HH:mm:ss','disposition','threadId','Public','basename','createWriteStream','direction','out','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','Openchannel','createPdfFromHTML','log','unlinkSync','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','jsforce','desk.js','to-csv','ioredis','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','./openchannelInteraction.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','error','stack','name','Users','map','fullname','TagIds','Tags','split','index','OpenchannelInteraction','rawAttributes','fieldName','key','filters','intersection','model','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','field','color','from','select','u.id','u.fullname','ui.OpenchannelInteractionId','user_has_openchannel_interactions','left_join','users','u.id\x20=\x20ui.UserId','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','openchannel_accounts','a.id\x20=\x20i.OpenchannelAccountId','me.OpenchannelInteractionId\x20=\x20i.id','it.OpenchannelInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','expr','search'];(function(_0x42a24d,_0x2e0cc4){var _0x36422b=function(_0x4cae30){while(--_0x4cae30){_0x42a24d['push'](_0x42a24d['shift']());}};_0x36422b(++_0x2e0cc4);}(_0xc6cb,0x160));var _0xbc6c=function(_0x4a3b7b,_0x2a08f1){_0x4a3b7b=_0x4a3b7b-0x0;var _0x240db5=_0xc6cb[_0x4a3b7b];return _0x240db5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbc6c('0x0'));var zipdir=require(_0xbc6c('0x1'));var jsonpatch=require(_0xbc6c('0x2'));var rp=require(_0xbc6c('0x3'));var moment=require(_0xbc6c('0x4'));var BPromise=require(_0xbc6c('0x5'));var Mustache=require(_0xbc6c('0x6'));var util=require(_0xbc6c('0x7'));var path=require(_0xbc6c('0x8'));var sox=require(_0xbc6c('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbc6c('0xa'));var _=require(_0xbc6c('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xbc6c('0xc'));var deskjs=require(_0xbc6c('0xd'));var toCsv=require(_0xbc6c('0xe'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xbc6c('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xbc6c('0x10'));var pdf=require(_0xbc6c('0x11'));var hardwareService=require(_0xbc6c('0x12'));var logger=require(_0xbc6c('0x13'))(_0xbc6c('0x14'));var utils=require(_0xbc6c('0x15'));var config=require(_0xbc6c('0x16'));var licenseUtil=require(_0xbc6c('0x17'));var db=require('../../mysqldb')['db'];config[_0xbc6c('0x18')]=_[_0xbc6c('0x19')](config[_0xbc6c('0x18')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbc6c('0x18')]));require(_0xbc6c('0x1a'))[_0xbc6c('0x1b')](socket);function respondWithStatusCode(_0x58c8e4,_0x1ba991){_0x1ba991=_0x1ba991||0xcc;return function(_0x397524){if(_0x397524){return _0x58c8e4[_0xbc6c('0x1c')](_0x1ba991);}return _0x58c8e4[_0xbc6c('0x1d')](_0x1ba991)[_0xbc6c('0x1e')]();};}function respondWithResult(_0x489ca1,_0x4e243e){_0x4e243e=_0x4e243e||0xc8;return function(_0x467fa6){if(_0x467fa6){return _0x489ca1[_0xbc6c('0x1d')](_0x4e243e)['json'](_0x467fa6);}};}function respondWithFilteredResult(_0x574a3b,_0x18bffc){return function(_0x274f54){if(_0x274f54){var _0x546dc9=typeof _0x18bffc[_0xbc6c('0x1f')]===_0xbc6c('0x20')&&typeof _0x18bffc[_0xbc6c('0x21')]===_0xbc6c('0x20');var _0x271bcb=_0x274f54[_0xbc6c('0x22')];var _0x3c6745=_0x546dc9?0x0:_0x18bffc[_0xbc6c('0x1f')];var _0x11ef08=_0x546dc9?_0x274f54[_0xbc6c('0x22')]:_0x18bffc[_0xbc6c('0x1f')]+_0x18bffc[_0xbc6c('0x21')];var _0x3a8a24;if(_0x11ef08>=_0x271bcb){_0x11ef08=_0x271bcb;_0x3a8a24=0xc8;}else{_0x3a8a24=0xce;}_0x574a3b[_0xbc6c('0x1d')](_0x3a8a24);return _0x574a3b[_0xbc6c('0x23')](_0xbc6c('0x24'),_0x3c6745+'-'+_0x11ef08+'/'+_0x271bcb)[_0xbc6c('0x25')](_0x274f54);}return null;};}function patchUpdates(_0x59a536){return function(_0x36a14a){try{jsonpatch[_0xbc6c('0x26')](_0x36a14a,_0x59a536,!![]);}catch(_0x44b541){return BPromise[_0xbc6c('0x27')](_0x44b541);}return _0x36a14a[_0xbc6c('0x28')]();};}function saveUpdates(_0x3a4054,_0x4b88f0){return function(_0x327262){if(_0x327262){return _0x327262[_0xbc6c('0x29')](_0x3a4054)[_0xbc6c('0x2a')](function(_0x49f7e5){return _0x49f7e5;});}return null;};}function removeEntity(_0x3b2aa3,_0x357935){return function(_0x131363){if(_0x131363){return _0x131363['destroy']()[_0xbc6c('0x2a')](function(){_0x3b2aa3[_0xbc6c('0x1d')](0xcc)[_0xbc6c('0x1e')]();});}};}function handleEntityNotFound(_0x376a0d,_0x3bb3a6){return function(_0x1b08c9){if(!_0x1b08c9){_0x376a0d[_0xbc6c('0x1c')](0x194);}return _0x1b08c9;};}function handleError(_0x4aea2d,_0x55a7c4){_0x55a7c4=_0x55a7c4||0x1f4;return function(_0x52cd92){logger[_0xbc6c('0x2b')](_0x52cd92[_0xbc6c('0x2c')]);if(_0x52cd92[_0xbc6c('0x2d')]){delete _0x52cd92[_0xbc6c('0x2d')];}_0x4aea2d[_0xbc6c('0x1d')](_0x55a7c4)['send'](_0x52cd92);};}function getInteractionUsers(_0x32313b,_0x98c31d){return new BPromise(function(_0x411eeb,_0x532542){try{if(_0x98c31d[_0x32313b['id']]){_0x32313b[_0xbc6c('0x2e')]=_[_0xbc6c('0x2f')](_0x98c31d[_0x32313b['id']],function(_0x50fec6){return{'id':_0x50fec6['id'],'fullname':_0x50fec6[_0xbc6c('0x30')]};});}}catch(_0x1dd813){_0x532542(_0x1dd813);}_0x411eeb(_0x32313b);});}function getInteractionTags(_0x3f8bee,_0x51a618){return new BPromise(function(_0x1a6ec3,_0x244322){try{if(_0x3f8bee[_0xbc6c('0x31')]){_0x3f8bee[_0xbc6c('0x32')]=[];_0x3f8bee[_0xbc6c('0x31')][_0xbc6c('0x33')](',')['forEach'](function(_0x67c06f){_0x3f8bee[_0xbc6c('0x32')]['push'](_0x51a618[_0x67c06f]);});}delete _0x3f8bee['TagIds'];}catch(_0xfbbfa4){_0x244322(_0xfbbfa4);}_0x1a6ec3(_0x3f8bee);});}function updateOpenchannelInteraction(_0xb87b9c,_0x15361f,_0x14371c){return new BPromise(function(_0x45c57d,_0xcf6a91){return getInteractionUsers(_0xb87b9c,_0x14371c)[_0xbc6c('0x2a')](function(_0x361998){return getInteractionTags(_0x361998,_0x15361f);})[_0xbc6c('0x2a')](function(_0x260cef){_0x45c57d(_0x260cef);})['catch'](function(_0x36e1fa){_0xcf6a91(_0x36e1fa);});});}exports[_0xbc6c('0x34')]=function(_0xd2cf29,_0x21e098){var _0x5a0045={},_0x5b1ab7={},_0x6c5f66={'count':0x0,'rows':[]};var _0x118ae6=_[_0xbc6c('0x2f')](db[_0xbc6c('0x35')][_0xbc6c('0x36')],function(_0x432be4){return{'name':_0x432be4[_0xbc6c('0x37')],'type':_0x432be4['type'][_0xbc6c('0x38')]};});_0x5b1ab7['model']=_[_0xbc6c('0x2f')](_0x118ae6,_0xbc6c('0x2d'));_0x5b1ab7['query']=_['keys'](_0xd2cf29['query']);_0x5b1ab7[_0xbc6c('0x39')]=_[_0xbc6c('0x3a')](_0x5b1ab7[_0xbc6c('0x3b')],_0x5b1ab7[_0xbc6c('0x3c')]);_0x5a0045[_0xbc6c('0x3d')]=_['intersection'](_0x5b1ab7['model'],qs['fields'](_0xd2cf29[_0xbc6c('0x3c')][_0xbc6c('0x3e')]));_0x5a0045[_0xbc6c('0x3d')]=_0x5a0045[_0xbc6c('0x3d')][_0xbc6c('0x3f')]?_0x5a0045[_0xbc6c('0x3d')]:_0x5b1ab7[_0xbc6c('0x3b')];if(!_0xd2cf29[_0xbc6c('0x3c')][_0xbc6c('0x40')](_0xbc6c('0x41'))){_0x5a0045[_0xbc6c('0x21')]=qs[_0xbc6c('0x21')](_0xd2cf29[_0xbc6c('0x3c')][_0xbc6c('0x21')]);_0x5a0045[_0xbc6c('0x1f')]=qs[_0xbc6c('0x1f')](_0xd2cf29[_0xbc6c('0x3c')]['offset']);}_0x5a0045[_0xbc6c('0x42')]=qs[_0xbc6c('0x43')](_0xd2cf29[_0xbc6c('0x3c')][_0xbc6c('0x43')]);_0x5a0045[_0xbc6c('0x44')]=qs['filters'](_['pick'](_0xd2cf29[_0xbc6c('0x3c')],_0x5b1ab7['filters']),_0x118ae6);var _0x3ca1d=[];var _0x4f529e=squel['select']()[_0xbc6c('0x45')]('id')[_0xbc6c('0x45')](_0xbc6c('0x2d'))[_0xbc6c('0x45')](_0xbc6c('0x46'))[_0xbc6c('0x47')]('tools_tags');var _0xf79b9b=squel[_0xbc6c('0x48')]()[_0xbc6c('0x45')](_0xbc6c('0x49'))['field'](_0xbc6c('0x4a'))[_0xbc6c('0x45')](_0xbc6c('0x4b'))[_0xbc6c('0x47')](_0xbc6c('0x4c'),'ui')[_0xbc6c('0x4d')](_0xbc6c('0x4e'),'u',_0xbc6c('0x4f'));var _0x4acbd3=squel[_0xbc6c('0x48')]()['from']('openchannel_interactions','i')[_0xbc6c('0x4d')]('cm_contacts','c',_0xbc6c('0x50'))[_0xbc6c('0x4d')](_0xbc6c('0x4e'),'o',_0xbc6c('0x51'))[_0xbc6c('0x4d')](_0xbc6c('0x52'),'a',_0xbc6c('0x53'))[_0xbc6c('0x4d')]('openchannel_messages','me',_0xbc6c('0x54'))[_0xbc6c('0x4d')]('openchannel_interaction_has_tags','it',_0xbc6c('0x55'))['left_join'](_0xbc6c('0x56'),'t',_0xbc6c('0x57'));var _0x9703ff=squel[_0xbc6c('0x58')]();var _0x21f56f=[];var _0x87b155=squel[_0xbc6c('0x58')]();var _0x221857;if(_0xd2cf29[_0xbc6c('0x3c')][_0xbc6c('0x59')]){_0x221857=as[_0xbc6c('0x5a')](_0xd2cf29[_0xbc6c('0x3c')]['search']);var _0x1dada4=_0x221857[_0xbc6c('0x5b')];for(var _0x3bf132=0x0;_0x3bf132<_0x221857[_0xbc6c('0x5c')][_0xbc6c('0x3f')];_0x3bf132++){var _0x3b9abe=_0x221857['conditions'][_0x3bf132];var _0x14f57a='i';var _0x5c84db=_['find'](_0x118ae6,[_0xbc6c('0x2d'),_0x3b9abe[_0xbc6c('0x45')]]);if(!_0x5c84db){switch(_0x3b9abe['field']){case _0xbc6c('0x5d'):if(_0x3b9abe[_0xbc6c('0x5e')]==0x1){_0x4acbd3['having']('`'+_0x3b9abe[_0xbc6c('0x45')]+_0xbc6c('0x5f'));}else{_0x4acbd3[_0xbc6c('0x60')]('`'+_0x3b9abe[_0xbc6c('0x45')]+'`\x20>\x200');}break;case _0xbc6c('0x61'):if(_0x3b9abe[_0xbc6c('0x62')]==='$substring'){if(_0x3b9abe[_0xbc6c('0x5e')][_0xbc6c('0x33')]('\x20')[_0xbc6c('0x3f')]>0x1){_0x9703ff[_0x1dada4](_0xbc6c('0x63'),qs[_0xbc6c('0x64')](_0x3b9abe['value']),null);}else{var _0x3611d4='%'+_0x3b9abe['value']+'%';_0x9703ff[_0x1dada4]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x3611d4,_0x3611d4,_0x3611d4);}}else{_0x5c84db=_['find'](_0x118ae6,[_0xbc6c('0x2d'),'ContactId']);_0x3b9abe[_0xbc6c('0x45')]=_0xbc6c('0x65');_0x4a4e90=as[_0xbc6c('0x66')](_0x14f57a,_0x5c84db['type'],_0x3b9abe);_0x9703ff[_0x1dada4](_0x4a4e90[_0xbc6c('0x67')],_0x4a4e90[_0xbc6c('0x5e')]['start'],_0x4a4e90['value']['end']);}break;case _0xbc6c('0x68'):var _0x21d278=_0x3b9abe[_0xbc6c('0x5e')][_0xbc6c('0x33')](',')['map'](function(_0x2a5d7b){return Number(_0x2a5d7b);});_0x21d278[_0xbc6c('0x69')](function(_0x346c6d){_0x87b155['or'](_0xbc6c('0x6a'),'%,'+_0x346c6d+',%');});_0x21f56f=_[_0xbc6c('0x6b')](_0x21f56f,_0x21d278);break;case'User':if(_0x3b9abe[_0xbc6c('0x62')]===_0xbc6c('0x6c')){_0x9703ff[_0x1dada4]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x3b9abe['value']+'%',null);}else{_0x5c84db=_[_0xbc6c('0x6d')](_0x118ae6,[_0xbc6c('0x2d'),_0xbc6c('0x6e')]);_0x3b9abe[_0xbc6c('0x45')]=_0xbc6c('0x6e');_0x4a4e90=as[_0xbc6c('0x66')](_0x14f57a,_0x5c84db[_0xbc6c('0x6f')],_0x3b9abe);_0x9703ff[_0x1dada4](_0x4a4e90[_0xbc6c('0x67')],_0x4a4e90[_0xbc6c('0x5e')][_0xbc6c('0x70')],_0x4a4e90[_0xbc6c('0x5e')][_0xbc6c('0x1e')]);}break;case _0xbc6c('0x71'):_0x4a4e90=as[_0xbc6c('0x66')]('me',null,_0x3b9abe);_0x9703ff[_0x1dada4](_0x4a4e90['text'],_0x4a4e90[_0xbc6c('0x5e')][_0xbc6c('0x70')],_0x4a4e90[_0xbc6c('0x5e')][_0xbc6c('0x1e')]);break;}}else{var _0x4a4e90=as['buildExpression'](_0x14f57a,_0x5c84db[_0xbc6c('0x6f')],_0x3b9abe);_0x9703ff[_0x1dada4](_0x4a4e90[_0xbc6c('0x67')],_0x4a4e90[_0xbc6c('0x5e')][_0xbc6c('0x70')],_0x4a4e90[_0xbc6c('0x5e')]['end']);}}}else{var _0x405296=_(_0xd2cf29[_0xbc6c('0x3c')])[_0xbc6c('0x72')]()[_0xbc6c('0x2f')](function(_0x47ecbd){return _[_0xbc6c('0x73')](_0x118ae6,[_0xbc6c('0x2d'),_0x47ecbd])?_0x47ecbd:undefined;})['compact']()[_0xbc6c('0x5e')]();if(!_[_0xbc6c('0x74')](_0x405296)){_0x405296['forEach'](function(_0x3a3c9c){if(_0x3a3c9c==='OpenchannelAccountId'){_0x4acbd3[_0xbc6c('0x44')](_0xbc6c('0x75'),[]['concat'](_0xd2cf29[_0xbc6c('0x3c')][_0x3a3c9c]));}else if(_0x3a3c9c===_0xbc6c('0x76')){var _0x31327f=JSON[_0xbc6c('0x77')](_0xd2cf29['query'][_0x3a3c9c])[_0xbc6c('0x78')];var _0x43b1f9=JSON[_0xbc6c('0x77')](_0xd2cf29[_0xbc6c('0x3c')][_0x3a3c9c])['$lte'];_0x4acbd3[_0xbc6c('0x44')](_0xbc6c('0x79'),_0x31327f,_0x43b1f9);}else{if(_0xd2cf29['query'][_0x3a3c9c]==='null'){_0x4acbd3[_0xbc6c('0x44')]('i.'+_0x3a3c9c+'\x20IS\x20NULL');}else{_0x4acbd3[_0xbc6c('0x44')]('i.'+_0x3a3c9c+_0xbc6c('0x7a'),_0xd2cf29[_0xbc6c('0x3c')][_0x3a3c9c]);}}});}if(_0xd2cf29['query'][_0xbc6c('0x7b')]){if(_0xd2cf29[_0xbc6c('0x3c')]['read']==0x1){_0x4acbd3['having'](_0xbc6c('0x7c'));}else{_0x4acbd3[_0xbc6c('0x60')](_0xbc6c('0x7d'));}}if(_0xd2cf29[_0xbc6c('0x3c')][_0xbc6c('0x7e')]){_0x21f56f=_['isArray'](_0xd2cf29[_0xbc6c('0x3c')]['tag'])?_0xd2cf29[_0xbc6c('0x3c')]['tag']:new Array(_0xd2cf29[_0xbc6c('0x3c')][_0xbc6c('0x7e')]);_0x21f56f[_0xbc6c('0x69')](function(_0xbd8f2c){_0x87b155['or'](_0xbc6c('0x6a'),'%,'+_0xbd8f2c+',%');});}if(_0xd2cf29[_0xbc6c('0x3c')][_0xbc6c('0x7f')]){var _0x2e0e78=_0xd2cf29['query'][_0xbc6c('0x7f')]['replace']('\x5c','\x5c\x5c')[_0xbc6c('0x80')](/'/g,'\x27\x27');if(qs[_0xbc6c('0x81')](_0x2e0e78)){_0x9703ff['or'](_0xbc6c('0x82'),_0x2e0e78+'%');}else{_0x9703ff['or'](_0xbc6c('0x83'),qs[_0xbc6c('0x64')](_0x2e0e78))['or']('i.from\x20LIKE\x20?',_0x2e0e78+'%')['or'](_0xbc6c('0x84'),_0x2e0e78+'%');}}}_0x4acbd3['where'](_0x9703ff);_0x4acbd3[_0xbc6c('0x85')](_0xbc6c('0x86'));var _0xee0a8b={'type':db[_0xbc6c('0x87')][_0xbc6c('0x88')][_0xbc6c('0x89')],'raw':!![]};var _0x1f43c8=_0x4acbd3[_0xbc6c('0x8a')]();_0x1f43c8['field'](_0xbc6c('0x86'));_0x1f43c8[_0xbc6c('0x45')](_0xbc6c('0x8b'),_0xbc6c('0x5d'));if(_0x5a0045[_0xbc6c('0x42')]){_0x5a0045[_0xbc6c('0x42')]['forEach'](function(_0x430b82){var _0x1ba665=_0x430b82[0x0]===_0xbc6c('0x8c')?_0x430b82[0x0]:'i.'+_0x430b82[0x0];_0x4acbd3['order'](_0x1ba665,_0x430b82[0x1]==='DESC'?![]:!![]);});}if(!_[_0xbc6c('0x74')](_0x21f56f)){_0x4acbd3['having'](_0x87b155);_0x1f43c8[_0xbc6c('0x44')](_0xbc6c('0x8d'),_0x21f56f);}BPromise[_0xbc6c('0x8e')]()[_0xbc6c('0x2a')](function(){if(!_0x221857){if(_0xd2cf29[_0xbc6c('0x3c')][_0xbc6c('0x8f')])return;_0x1f43c8[_0xbc6c('0x44')](_0xbc6c('0x90'));_0x4acbd3[_0xbc6c('0x44')](_0xbc6c('0x90'));return;}if(_0xd2cf29[_0xbc6c('0x91')]['role']!==_0xbc6c('0x92'))return;return _0xd2cf29[_0xbc6c('0x91')]['getOpenchannelAccounts']({'attributes':['id'],'raw':!![]})[_0xbc6c('0x2a')](function(_0x59ec9f){if(_[_0xbc6c('0x74')](_0x59ec9f)){_0x1f43c8[_0xbc6c('0x44')](_0xbc6c('0x93'));_0x4acbd3[_0xbc6c('0x44')](_0xbc6c('0x93'));}else{_0x1f43c8[_0xbc6c('0x44')](_0xbc6c('0x75'),_[_0xbc6c('0x2f')](_0x59ec9f,'id'));_0x4acbd3[_0xbc6c('0x44')](_0xbc6c('0x75'),_[_0xbc6c('0x2f')](_0x59ec9f,'id'));}});})[_0xbc6c('0x2a')](function(){if(_0xd2cf29[_0xbc6c('0x91')][_0xbc6c('0x94')]===_0xbc6c('0x92')&&!_0x221857&&!_0xd2cf29[_0xbc6c('0x3c')][_0xbc6c('0x8f')])return[];return db[_0xbc6c('0x95')]['query'](_0x1f43c8[_0xbc6c('0x96')](),_0xee0a8b);})[_0xbc6c('0x2a')](function(_0x2215bd){_0x6c5f66['count']=_0x2215bd[_0xbc6c('0x3f')];if(_0x6c5f66['count']===0x0)return[];return db[_0xbc6c('0x95')][_0xbc6c('0x3c')](_0x4f529e[_0xbc6c('0x96')](),_0xee0a8b)[_0xbc6c('0x2a')](function(_0x39a6e7){_0x3ca1d=_[_0xbc6c('0x97')](_0x39a6e7,'id');_0xee0a8b=_['merge'](_0xee0a8b,{'model':db[_0xbc6c('0x35')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0xd2cf29['query']['fields']){_0x5a0045[_0xbc6c('0x3d')][_0xbc6c('0x69')](function(_0x470ffe){_0x4acbd3[_0xbc6c('0x45')]('i.'+_0x470ffe);});}else{_0x4acbd3[_0xbc6c('0x45')](_0xbc6c('0x8b'),'unreadMessages');_0x4acbd3[_0xbc6c('0x45')](_0xbc6c('0x98'),'Account.key');_0x4acbd3[_0xbc6c('0x45')]('a.mandatoryDisposition',_0xbc6c('0x99'));_0x4acbd3[_0xbc6c('0x45')]('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',_0xbc6c('0x8c'));_0x4acbd3[_0xbc6c('0x45')](_0xbc6c('0x9a'));_0x4acbd3[_0xbc6c('0x45')](_0xbc6c('0x9b'),'Contact.firstName');_0x4acbd3[_0xbc6c('0x45')](_0xbc6c('0x9c'),_0xbc6c('0x9d'));_0x4acbd3['field']('c.email','Contact.email');_0x4acbd3['field'](_0xbc6c('0x9e'),'Contact.phone');_0x4acbd3[_0xbc6c('0x45')](_0xbc6c('0x9f'),_0xbc6c('0xa0'));_0x4acbd3[_0xbc6c('0x45')](_0xbc6c('0xa1'),'Contact.fax');_0x4acbd3[_0xbc6c('0x45')](_0xbc6c('0xa2'),'Owner.fullname');_0x4acbd3[_0xbc6c('0x45')](_0xbc6c('0xa3'),_0xbc6c('0xa4'));_0x4acbd3[_0xbc6c('0x45')]('GROUP_CONCAT(DISTINCT\x20t.id)','TagIds');}if(_0x5a0045[_0xbc6c('0x21')])_0x4acbd3['limit'](_0x5a0045['limit']);if(_0x5a0045[_0xbc6c('0x1f')])_0x4acbd3[_0xbc6c('0x1f')](_0x5a0045[_0xbc6c('0x1f')]);return db[_0xbc6c('0x95')][_0xbc6c('0x3c')](_0x4acbd3[_0xbc6c('0x96')](),_0xee0a8b);})[_0xbc6c('0x2a')](function(_0x3bc823){if(_0x3bc823[_0xbc6c('0x3f')]>0x0)_0xf79b9b[_0xbc6c('0x44')](_0xbc6c('0xa5'),_['map'](_0x3bc823,'id'));return db[_0xbc6c('0x95')][_0xbc6c('0x3c')](_0xf79b9b['toString'](),_0xee0a8b)[_0xbc6c('0x2a')](function(_0x50efce){var _0x33e7c0=_['groupBy'](_0x50efce,_0xbc6c('0xa6'));var _0x3d0b56=[];_0x3bc823[_0xbc6c('0x69')](function(_0x3e5317){_0x3d0b56['push'](updateOpenchannelInteraction(_0x3e5317,_0x3ca1d,_0x33e7c0));});return BPromise[_0xbc6c('0xa7')](_0x3d0b56);});});})[_0xbc6c('0x2a')](function(_0x4e239b){_0x6c5f66['rows']=_0x4e239b;return _0x6c5f66;})[_0xbc6c('0x2a')](respondWithFilteredResult(_0x21e098,_0x5a0045))[_0xbc6c('0xa8')](handleError(_0x21e098,null));};exports['show']=function(_0x149e10,_0x361971){var _0x2fd5b6={};if(_0x149e10[_0xbc6c('0x3c')][_0xbc6c('0x6f')]&&_0x149e10[_0xbc6c('0x3c')]['type']===_0xbc6c('0x47')){_0x2fd5b6[_0xbc6c('0x47')]=_0x149e10['params']['id'];}else{_0x2fd5b6['id']=_0x149e10[_0xbc6c('0xa9')]['id'];}var _0x5e4b7b={'raw':![],'where':_0x2fd5b6},_0x319913={};_0x319913['model']=_[_0xbc6c('0x72')](db[_0xbc6c('0x35')]['rawAttributes']);_0x319913[_0xbc6c('0x3c')]=_[_0xbc6c('0x72')](_0x149e10[_0xbc6c('0x3c')]);_0x319913['filters']=_[_0xbc6c('0x3a')](_0x319913[_0xbc6c('0x3b')],_0x319913[_0xbc6c('0x3c')]);_0x5e4b7b[_0xbc6c('0x3d')]=_[_0xbc6c('0x3a')](_0x319913[_0xbc6c('0x3b')],qs[_0xbc6c('0x3e')](_0x149e10[_0xbc6c('0x3c')]['fields']));_0x5e4b7b[_0xbc6c('0x3d')]=_0x5e4b7b[_0xbc6c('0x3d')][_0xbc6c('0x3f')]?_0x5e4b7b[_0xbc6c('0x3d')]:_0x319913['model'];if(_0x149e10['query'][_0xbc6c('0xaa')]){_0x5e4b7b[_0xbc6c('0xab')]=[{'all':!![]}];}_0x5e4b7b=_[_0xbc6c('0xac')]({},_0x5e4b7b,_0x149e10['options']);return db['OpenchannelInteraction'][_0xbc6c('0x6d')](_0x5e4b7b)[_0xbc6c('0x2a')](handleEntityNotFound(_0x361971,null))['then'](respondWithResult(_0x361971,null))['catch'](handleError(_0x361971,null));};exports[_0xbc6c('0xad')]=function(_0x1e59c4,_0x19337f){return db[_0xbc6c('0x35')][_0xbc6c('0xad')](_0x1e59c4['body'],{})[_0xbc6c('0x2a')](respondWithResult(_0x19337f,0xc9))[_0xbc6c('0xa8')](handleError(_0x19337f,null));};exports[_0xbc6c('0x29')]=function(_0x515d46,_0x57ccf1){if(_0x515d46[_0xbc6c('0x71')]['id']){delete _0x515d46[_0xbc6c('0x71')]['id'];}return db['OpenchannelInteraction']['find']({'where':{'id':_0x515d46[_0xbc6c('0xa9')]['id']}})[_0xbc6c('0x2a')](handleEntityNotFound(_0x57ccf1,null))['then'](saveUpdates(_0x515d46[_0xbc6c('0x71')],null))['then'](respondWithResult(_0x57ccf1,null))['catch'](handleError(_0x57ccf1,null));};exports[_0xbc6c('0xae')]=function(_0x4904ae,_0x46827c){return db[_0xbc6c('0x35')]['find']({'where':{'id':_0x4904ae[_0xbc6c('0xa9')]['id']}})[_0xbc6c('0x2a')](handleEntityNotFound(_0x46827c,null))[_0xbc6c('0x2a')](removeEntity(_0x46827c,null))[_0xbc6c('0xa8')](handleError(_0x46827c,null));};exports[_0xbc6c('0xaf')]=function(_0x280161,_0x1da38a){return db[_0xbc6c('0x35')][_0xbc6c('0xaf')]()['then'](respondWithResult(_0x1da38a,null))[_0xbc6c('0xa8')](handleError(_0x1da38a,null));};exports[_0xbc6c('0xb0')]=function(_0x49ffd7,_0x476b51,_0x8c449c){return db['OpenchannelMessage'][_0xbc6c('0x6d')]({'where':{'id':_0x49ffd7[_0xbc6c('0xa9')]['id']}})[_0xbc6c('0x2a')](handleEntityNotFound(_0x476b51,null))[_0xbc6c('0x2a')](function(_0xda5363){if(_0xda5363){return _0xda5363['addMessage'](_0x49ffd7[_0xbc6c('0x71')]['ids'],_[_0xbc6c('0xb1')](_0x49ffd7[_0xbc6c('0x71')],['ids','id'])||{});}})[_0xbc6c('0x2a')](respondWithResult(_0x476b51,null))[_0xbc6c('0xa8')](handleError(_0x476b51,null));};exports['getMessages']=function(_0x315a2e,_0x614531,_0x5f0f3d){var _0x4f4c81={'raw':![],'where':{}};var _0x295397={};var _0x162f5e={'count':0x0,'rows':[]};return db['OpenchannelInteraction'][_0xbc6c('0xb2')]({'where':{'id':_0x315a2e['params']['id']}})[_0xbc6c('0x2a')](handleEntityNotFound(_0x614531,null))[_0xbc6c('0x2a')](function(_0x155a75){if(_0x155a75){_0x295397[_0xbc6c('0x3b')]=_['keys'](db['OpenchannelMessage'][_0xbc6c('0x36')]);_0x295397[_0xbc6c('0x3c')]=_[_0xbc6c('0x72')](_0x315a2e['query']);_0x295397[_0xbc6c('0x39')]=_[_0xbc6c('0x3a')](_0x295397[_0xbc6c('0x3b')],_0x295397[_0xbc6c('0x3c')]);_0x4f4c81[_0xbc6c('0x3d')]=_[_0xbc6c('0x3a')](_0x295397[_0xbc6c('0x3b')],qs[_0xbc6c('0x3e')](_0x315a2e[_0xbc6c('0x3c')]['fields']));_0x4f4c81['attributes']=_0x4f4c81['attributes'][_0xbc6c('0x3f')]?_0x4f4c81[_0xbc6c('0x3d')]:_0x295397[_0xbc6c('0x3b')];if(!_0x315a2e[_0xbc6c('0x3c')][_0xbc6c('0x40')](_0xbc6c('0x41'))){_0x4f4c81['limit']=qs['limit'](_0x315a2e[_0xbc6c('0x3c')][_0xbc6c('0x21')]);_0x4f4c81[_0xbc6c('0x1f')]=qs[_0xbc6c('0x1f')](_0x315a2e[_0xbc6c('0x3c')][_0xbc6c('0x1f')]);}_0x4f4c81[_0xbc6c('0x42')]=qs[_0xbc6c('0x43')](_0x315a2e[_0xbc6c('0x3c')][_0xbc6c('0x43')]);_0x4f4c81[_0xbc6c('0x44')]=qs['filters'](_[_0xbc6c('0xb3')](_0x315a2e[_0xbc6c('0x3c')],_0x295397[_0xbc6c('0x39')]));_0x4f4c81[_0xbc6c('0x44')][_0xbc6c('0xa6')]=_0x155a75['id'];if(_0x315a2e['query'][_0xbc6c('0x7f')]){_0x4f4c81[_0xbc6c('0x44')]=_[_0xbc6c('0xac')](_0x4f4c81[_0xbc6c('0x44')],{'$or':_[_0xbc6c('0x2f')](_0x4f4c81['attributes'],function(_0x5b522f){var _0x268333={};_0x268333[_0x5b522f]={'$like':'%'+_0x315a2e[_0xbc6c('0x3c')][_0xbc6c('0x7f')]+'%'};return _0x268333;})});}if(_0x315a2e['query'][_0xbc6c('0x78')]){var _0x1c4698=_0x315a2e['query'][_0xbc6c('0x78')][_0xbc6c('0x33')](',');var _0xbc5891={};_0xbc5891[_0x1c4698[0x0]]={'$gte':moment(_0x1c4698[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x4f4c81[_0xbc6c('0x44')]=_[_0xbc6c('0xac')](_0x4f4c81[_0xbc6c('0x44')],_0xbc5891);}_0x4f4c81=_[_0xbc6c('0xac')]({},_0x4f4c81,_0x315a2e[_0xbc6c('0xb4')]);return db['OpenchannelMessage'][_0xbc6c('0x22')]({'where':_0x4f4c81['where']})[_0xbc6c('0x2a')](function(_0x286f53){_0x162f5e[_0xbc6c('0x22')]=_0x286f53;if(_0x315a2e[_0xbc6c('0x3c')][_0xbc6c('0xaa')]){_0x4f4c81[_0xbc6c('0xab')]=[{'all':!![]}];}return db[_0xbc6c('0xb5')][_0xbc6c('0xb6')](_0x4f4c81);})['then'](function(_0xf7ce6c){_0x162f5e['rows']=_0xf7ce6c;return _0x162f5e;});}})['then'](respondWithFilteredResult(_0x614531,_0x4f4c81))[_0xbc6c('0xa8')](handleError(_0x614531,null));};exports[_0xbc6c('0xb7')]=function(_0x5040f9,_0xbdbb1,_0x3a40b2){return db['OpenchannelInteraction'][_0xbc6c('0x6d')]({'where':{'id':_0x5040f9[_0xbc6c('0xa9')]['id']}})['then'](handleEntityNotFound(_0xbdbb1,null))['then'](function(_0x35fbe0){if(_0x35fbe0){return _0x35fbe0['setTags'](_0x5040f9['body'][_0xbc6c('0xb8')],_[_0xbc6c('0xb1')](_0x5040f9[_0xbc6c('0x71')],[_0xbc6c('0xb8'),'id'])||{})['spread'](function(){return db[_0xbc6c('0x68')]['findAll']({'attributes':['id','name',_0xbc6c('0x46')],'where':{'id':_0x5040f9['body'][_0xbc6c('0xb8')]}});})['then'](function(_0x9b22e7){socket['emit'](_0xbc6c('0xb9'),{'id':Number(_0x5040f9[_0xbc6c('0xa9')]['id']),'tags':_0x9b22e7||[]});return{'id':Number(_0x5040f9[_0xbc6c('0xa9')]['id']),'tags':_0x9b22e7||[]};});}})[_0xbc6c('0x2a')](respondWithResult(_0xbdbb1,null))[_0xbc6c('0xa8')](handleError(_0xbdbb1,null));};exports['removeTags']=function(_0x16f7f1,_0x895132,_0x3474f6){return db[_0xbc6c('0x35')][_0xbc6c('0x6d')]({'where':{'id':_0x16f7f1[_0xbc6c('0xa9')]['id']}})[_0xbc6c('0x2a')](handleEntityNotFound(_0x895132,null))[_0xbc6c('0x2a')](function(_0xf140d0){if(_0xf140d0){return _0xf140d0[_0xbc6c('0xba')](_0x16f7f1[_0xbc6c('0x3c')][_0xbc6c('0xb8')]);}})[_0xbc6c('0x2a')](respondWithStatusCode(_0x895132,null))[_0xbc6c('0xa8')](handleError(_0x895132,null));};exports[_0xbc6c('0xbb')]=function(_0x37fc12,_0x1917f1){var _0x447d8c=moment()['unix']()['toString']();var _0x3429b6=path[_0xbc6c('0xbc')](config[_0xbc6c('0xbd')],_0xbc6c('0xbe'),'files',_0xbc6c('0xbf'));var _0x1ee022=path[_0xbc6c('0xbc')](config[_0xbc6c('0xbd')],_0xbc6c('0xbe'),_0xbc6c('0xc0'),'attachments');var _0x5ef0b2=path[_0xbc6c('0xbc')](_0x3429b6,_0x447d8c);var _0x38dbf8=util[_0xbc6c('0xc1')]('transcript-%d-%s.zip',_0x37fc12[_0xbc6c('0xa9')]['id'],_0x447d8c);var _0xd0dffa=path[_0xbc6c('0xbc')](_0x3429b6,_0x38dbf8);var _0x29630a=[];_0x29630a[_0xbc6c('0xc2')]({'model':db[_0xbc6c('0xc3')],'as':_0xbc6c('0xc3'),'attributes':['id',_0xbc6c('0x30')],'raw':!![]});_0x29630a['push']({'model':db['CmContact'],'as':_0xbc6c('0x61'),'attributes':['id','firstName',_0xbc6c('0xc4')],'raw':!![]});if(_0x37fc12[_0xbc6c('0x3c')][_0xbc6c('0xc5')]){_0x29630a[_0xbc6c('0xc2')]({'model':db['Attachment'],'as':_0xbc6c('0xc6'),'raw':!![]});}var _0x2c0b0f=[{'model':db[_0xbc6c('0xb5')],'as':_0xbc6c('0xc7'),'attributes':['id',_0xbc6c('0x71'),_0xbc6c('0x76'),'direction',_0xbc6c('0xc8'),'read'],'include':_0x29630a}];_0x2c0b0f[_0xbc6c('0xc2')]({'model':db[_0xbc6c('0xc9')],'as':_0xbc6c('0xca'),'attributes':['id','name']});_0x2c0b0f[_0xbc6c('0xc2')]({'model':db[_0xbc6c('0xc3')],'as':_0xbc6c('0xcb'),'attributes':['id',_0xbc6c('0x30')]});return db[_0xbc6c('0x35')][_0xbc6c('0x6d')]({'where':{'id':_0x37fc12['params']['id']},'include':_0x2c0b0f})[_0xbc6c('0x2a')](handleEntityNotFound(_0x1917f1,null))['then'](function(_0xdbf901){if(_0xdbf901){var _0x1e7ad2=_0xdbf901['get']({'plain':!![]});fs['mkdirSync'](_0x5ef0b2);var _0x52094d={'channel':'Openchannel','account':_0x1e7ad2[_0xbc6c('0xca')][_0xbc6c('0x2d')],'agent':_0x1e7ad2[_0xbc6c('0xcb')]?_0x1e7ad2[_0xbc6c('0xcb')][_0xbc6c('0x30')]:'N.A.','createdAt':moment(_0x1e7ad2[_0xbc6c('0x76')])[_0xbc6c('0xc1')](_0xbc6c('0xcc'))[_0xbc6c('0x96')](),'closedAt':_0x1e7ad2['closed']?moment(_0x1e7ad2['closedAt'])[_0xbc6c('0xc1')](_0xbc6c('0xcc'))[_0xbc6c('0x96')]():'','disposition':_0x1e7ad2[_0xbc6c('0xcd')],'visibility':_0x1e7ad2[_0xbc6c('0xce')]?_0xbc6c('0xcf'):'Private','messages':_(_0x1e7ad2[_0xbc6c('0xc7')])['filter']({'secret':![]})[_0xbc6c('0x2f')](function(_0x5d9164){if(_0x5d9164[_0xbc6c('0xc6')]){var _0x294c1f=path['join'](_0x1ee022,_0x5d9164[_0xbc6c('0xc6')][_0xbc6c('0xd0')]);if(fs['existsSync'](_0x294c1f)){fs['createReadStream'](_0x294c1f)['pipe'](fs[_0xbc6c('0xd1')](path['join'](_0x5ef0b2,_0x5d9164[_0xbc6c('0xc6')][_0xbc6c('0xd0')])));}}return{'date':moment(_0x5d9164[_0xbc6c('0x76')])[_0xbc6c('0xc1')](_0xbc6c('0xcc'))[_0xbc6c('0x96')](),'sender':_0x5d9164[_0xbc6c('0xd2')]===_0xbc6c('0xd3')?_0x5d9164[_0xbc6c('0xc3')]?_0x5d9164[_0xbc6c('0xc3')]['fullname']:'System':_0x5d9164[_0xbc6c('0x61')]['firstName']+(_0x5d9164['Contact'][_0xbc6c('0xc4')]?'\x20'+_0x5d9164[_0xbc6c('0x61')]['lastName']:''),'body':_0x5d9164['Attachment']?_0x5d9164[_0xbc6c('0xc6')][_0xbc6c('0xd0')]:_0x5d9164[_0xbc6c('0x71')],'direction':_0x5d9164['direction']===_0xbc6c('0xd3')?'A':'C','secret':_0x5d9164['secret'],'read':_0x5d9164[_0xbc6c('0x7b')],'attachment':_0x5d9164[_0xbc6c('0xc6')]};})['value']()};return ejs[_0xbc6c('0xd4')](path[_0xbc6c('0xbc')](config[_0xbc6c('0xbd')],_0xbc6c('0xbe'),_0xbc6c('0xd5'),_0xbc6c('0xd6')),{'interaction':_0x52094d})['then'](function(_0x3086f2){var _0xb7c958=path['join'](_0x5ef0b2,_0xbc6c('0xd7')+_0x1e7ad2['id']+'-'+_0x447d8c+_0xbc6c('0xd8'));var _0x3990fc={'path':_0xb7c958,'channel':_0xbc6c('0xd9'),'interactionId':_0x1e7ad2['id']};return pdf[_0xbc6c('0xda')](_0x3086f2,_0x3990fc);})[_0xbc6c('0x2a')](function(){return new BPromise(function(_0x2fa31f,_0x42ce89){zipdir(_0x5ef0b2,{'saveTo':_0xd0dffa},function(_0x36f3f6,_0x3e4ee4){if(_0x36f3f6)return _0x42ce89(_0x36f3f6);return _0x2fa31f(_0x3e4ee4);});})[_0xbc6c('0x2a')](function(){return new BPromise(function(_0x3148dd,_0x42d9a0){rimraf(_0x5ef0b2,function(_0x2a6b5f){if(_0x2a6b5f)_0x42d9a0(_0x2a6b5f);return _0x3148dd();});});})[_0xbc6c('0x2a')](function(){return _0x1917f1[_0xbc6c('0xbb')](_0xd0dffa,_0x38dbf8,function(_0x501a7f){if(_0x501a7f){console[_0xbc6c('0xdb')]('err',_0x501a7f);}else{fs[_0xbc6c('0xdc')](_0xd0dffa);}});});});}else{return _0x1917f1['sendStatus'](0xc8);}})[_0xbc6c('0xa8')](handleError(_0x1917f1,null));};
\ No newline at end of file
+var _0x7252=['tools_tags','expr','search','parseSearch','find','unreadMessages','value','`\x20=\x200','`\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?','buildExpression','type','start','Tag','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','text','some','compact','isEmpty','OpenchannelAccountId','concat','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','having','`unreadMessages`\x20=\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','i.from\x20LIKE\x20?','i.id','SELECT','clone','contactName','DESC','t.id\x20IN\x20?','resolve','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','agent','user','getOpenchannelAccounts','i.OpenchannelAccountId\x20IS\x20NULL','i.OpenchannelAccountId\x20IN\x20?','toString','sequelize','keyBy','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','c.firstName','Contact.firstName','Contact.lastName','Contact.email','c.phone','c.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','OpenchannelInteractionId','all','rows','params','includeAll','include','options','create','update','body','describe','addMessage','ids','omit','getMessages','findOne','merge','format','OpenchannelMessage','addTags','spread','emit','removeTags','download','unix','join','root','server','files','attachments','transcript-%d-%s.zip','CmContact','firstName','lastName','Attachment','Messages','direction','secret','OpenchannelAccount','Account','Owner','get','mkdirSync','N.A.','closed','YYYY-MM-DD\x20HH:mm:ss','disposition','Public','existsSync','createReadStream','pipe','createWriteStream','basename','out','System','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','Openchannel','log','err','unlinkSync','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','squel','jsforce','desk.js','to-csv','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','register','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','destroy','then','end','stack','name','send','fullname','TagIds','Tags','split','forEach','push','catch','index','map','OpenchannelInteraction','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','field','color','from','select','u.id','u.fullname','ui.OpenchannelInteractionId','user_has_openchannel_interactions','left_join','openchannel_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','users','o.id\x20=\x20i.UserId','a.id\x20=\x20i.OpenchannelAccountId','openchannel_interaction_has_tags','it.OpenchannelInteractionId\x20=\x20i.id'];(function(_0x20f318,_0x4ae4ba){var _0x543ebf=function(_0x34df4c){while(--_0x34df4c){_0x20f318['push'](_0x20f318['shift']());}};_0x543ebf(++_0x4ae4ba);}(_0x7252,0x177));var _0x2725=function(_0x1deb72,_0x3f6338){_0x1deb72=_0x1deb72-0x0;var _0x18bbdf=_0x7252[_0x1deb72];return _0x18bbdf;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2725('0x0'));var zipdir=require(_0x2725('0x1'));var jsonpatch=require(_0x2725('0x2'));var rp=require(_0x2725('0x3'));var moment=require('moment');var BPromise=require(_0x2725('0x4'));var Mustache=require(_0x2725('0x5'));var util=require(_0x2725('0x6'));var path=require('path');var sox=require(_0x2725('0x7'));var csv=require('to-csv');var ejs=require(_0x2725('0x8'));var fs=require('fs');var fs_extra=require(_0x2725('0x9'));var _=require('lodash');var squel=require(_0x2725('0xa'));var crypto=require('crypto');var jsforce=require(_0x2725('0xb'));var deskjs=require(_0x2725('0xc'));var toCsv=require(_0x2725('0xd'));var querystring=require(_0x2725('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x2725('0xf'));var as=require(_0x2725('0x10'));var pdf=require(_0x2725('0x11'));var hardwareService=require(_0x2725('0x12'));var logger=require(_0x2725('0x13'))('api');var utils=require(_0x2725('0x14'));var config=require(_0x2725('0x15'));var licenseUtil=require(_0x2725('0x16'));var db=require('../../mysqldb')['db'];config[_0x2725('0x17')]=_[_0x2725('0x18')](config[_0x2725('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x2725('0x19'))(new Redis(config['redis']));require('./openchannelInteraction.socket')[_0x2725('0x1a')](socket);function respondWithStatusCode(_0x5a69dc,_0x9581c7){_0x9581c7=_0x9581c7||0xcc;return function(_0x50058a){if(_0x50058a){return _0x5a69dc[_0x2725('0x1b')](_0x9581c7);}return _0x5a69dc['status'](_0x9581c7)['end']();};}function respondWithResult(_0x1f636c,_0x40d67a){_0x40d67a=_0x40d67a||0xc8;return function(_0x9957cf){if(_0x9957cf){return _0x1f636c[_0x2725('0x1c')](_0x40d67a)[_0x2725('0x1d')](_0x9957cf);}};}function respondWithFilteredResult(_0x1347ea,_0x37f67b){return function(_0x29fac8){if(_0x29fac8){var _0x33e88b=typeof _0x37f67b[_0x2725('0x1e')]===_0x2725('0x1f')&&typeof _0x37f67b[_0x2725('0x20')]===_0x2725('0x1f');var _0x48b4c2=_0x29fac8[_0x2725('0x21')];var _0x106c9c=_0x33e88b?0x0:_0x37f67b['offset'];var _0xf99564=_0x33e88b?_0x29fac8[_0x2725('0x21')]:_0x37f67b[_0x2725('0x1e')]+_0x37f67b[_0x2725('0x20')];var _0x46284c;if(_0xf99564>=_0x48b4c2){_0xf99564=_0x48b4c2;_0x46284c=0xc8;}else{_0x46284c=0xce;}_0x1347ea[_0x2725('0x1c')](_0x46284c);return _0x1347ea['set'](_0x2725('0x22'),_0x106c9c+'-'+_0xf99564+'/'+_0x48b4c2)[_0x2725('0x1d')](_0x29fac8);}return null;};}function patchUpdates(_0x1d9712){return function(_0x5c1128){try{jsonpatch[_0x2725('0x23')](_0x5c1128,_0x1d9712,!![]);}catch(_0x1c6481){return BPromise[_0x2725('0x24')](_0x1c6481);}return _0x5c1128['save']();};}function saveUpdates(_0x426e10,_0x4bf0a9){return function(_0x4a0ba5){if(_0x4a0ba5){return _0x4a0ba5['update'](_0x426e10)['then'](function(_0x4286cc){return _0x4286cc;});}return null;};}function removeEntity(_0x3eb901,_0x56b108){return function(_0x497ed2){if(_0x497ed2){return _0x497ed2[_0x2725('0x25')]()[_0x2725('0x26')](function(){_0x3eb901[_0x2725('0x1c')](0xcc)[_0x2725('0x27')]();});}};}function handleEntityNotFound(_0x203dbe,_0x5326d7){return function(_0x27ad00){if(!_0x27ad00){_0x203dbe[_0x2725('0x1b')](0x194);}return _0x27ad00;};}function handleError(_0x21018d,_0x3ef869){_0x3ef869=_0x3ef869||0x1f4;return function(_0x4fc694){logger['error'](_0x4fc694[_0x2725('0x28')]);if(_0x4fc694[_0x2725('0x29')]){delete _0x4fc694[_0x2725('0x29')];}_0x21018d[_0x2725('0x1c')](_0x3ef869)[_0x2725('0x2a')](_0x4fc694);};}function getInteractionUsers(_0x138126,_0x494f6a){return new BPromise(function(_0x21927d,_0x57cd14){try{if(_0x494f6a[_0x138126['id']]){_0x138126['Users']=_['map'](_0x494f6a[_0x138126['id']],function(_0x3ab61a){return{'id':_0x3ab61a['id'],'fullname':_0x3ab61a[_0x2725('0x2b')]};});}}catch(_0x572da7){_0x57cd14(_0x572da7);}_0x21927d(_0x138126);});}function getInteractionTags(_0x528d12,_0x2a2d5e){return new BPromise(function(_0x3b701e,_0x3d1ad1){try{if(_0x528d12[_0x2725('0x2c')]){_0x528d12[_0x2725('0x2d')]=[];_0x528d12[_0x2725('0x2c')][_0x2725('0x2e')](',')[_0x2725('0x2f')](function(_0x30ba6d){_0x528d12['Tags'][_0x2725('0x30')](_0x2a2d5e[_0x30ba6d]);});}delete _0x528d12['TagIds'];}catch(_0x56a7a4){_0x3d1ad1(_0x56a7a4);}_0x3b701e(_0x528d12);});}function updateOpenchannelInteraction(_0x4bb2c8,_0x5594ac,_0x5b146d){return new BPromise(function(_0x30fad9,_0x5c5dd6){return getInteractionUsers(_0x4bb2c8,_0x5b146d)[_0x2725('0x26')](function(_0x44bc4b){return getInteractionTags(_0x44bc4b,_0x5594ac);})['then'](function(_0x335ceb){_0x30fad9(_0x335ceb);})[_0x2725('0x31')](function(_0x5dbe95){_0x5c5dd6(_0x5dbe95);});});}exports[_0x2725('0x32')]=function(_0x5a7bce,_0x3040a8){var _0xb9195={},_0x1a4e70={},_0x1c0ac3={'count':0x0,'rows':[]};var _0x41e08a=_[_0x2725('0x33')](db[_0x2725('0x34')][_0x2725('0x35')],function(_0x2579a7){return{'name':_0x2579a7[_0x2725('0x36')],'type':_0x2579a7['type'][_0x2725('0x37')]};});_0x1a4e70[_0x2725('0x38')]=_[_0x2725('0x33')](_0x41e08a,'name');_0x1a4e70[_0x2725('0x39')]=_[_0x2725('0x3a')](_0x5a7bce[_0x2725('0x39')]);_0x1a4e70[_0x2725('0x3b')]=_[_0x2725('0x3c')](_0x1a4e70['model'],_0x1a4e70[_0x2725('0x39')]);_0xb9195[_0x2725('0x3d')]=_['intersection'](_0x1a4e70['model'],qs[_0x2725('0x3e')](_0x5a7bce['query'][_0x2725('0x3e')]));_0xb9195[_0x2725('0x3d')]=_0xb9195[_0x2725('0x3d')][_0x2725('0x3f')]?_0xb9195[_0x2725('0x3d')]:_0x1a4e70[_0x2725('0x38')];if(!_0x5a7bce[_0x2725('0x39')][_0x2725('0x40')](_0x2725('0x41'))){_0xb9195[_0x2725('0x20')]=qs['limit'](_0x5a7bce[_0x2725('0x39')][_0x2725('0x20')]);_0xb9195['offset']=qs[_0x2725('0x1e')](_0x5a7bce[_0x2725('0x39')][_0x2725('0x1e')]);}_0xb9195[_0x2725('0x42')]=qs['sort'](_0x5a7bce[_0x2725('0x39')][_0x2725('0x43')]);_0xb9195[_0x2725('0x44')]=qs[_0x2725('0x3b')](_[_0x2725('0x45')](_0x5a7bce[_0x2725('0x39')],_0x1a4e70[_0x2725('0x3b')]),_0x41e08a);var _0x499c88=[];var _0x5a03e7=squel['select']()[_0x2725('0x46')]('id')[_0x2725('0x46')]('name')[_0x2725('0x46')](_0x2725('0x47'))[_0x2725('0x48')]('tools_tags');var _0xbf7074=squel[_0x2725('0x49')]()[_0x2725('0x46')](_0x2725('0x4a'))[_0x2725('0x46')](_0x2725('0x4b'))[_0x2725('0x46')](_0x2725('0x4c'))[_0x2725('0x48')](_0x2725('0x4d'),'ui')[_0x2725('0x4e')]('users','u','u.id\x20=\x20ui.UserId');var _0x4a0404=squel['select']()[_0x2725('0x48')](_0x2725('0x4f'),'i')[_0x2725('0x4e')](_0x2725('0x50'),'c',_0x2725('0x51'))[_0x2725('0x4e')](_0x2725('0x52'),'o',_0x2725('0x53'))[_0x2725('0x4e')]('openchannel_accounts','a',_0x2725('0x54'))['left_join']('openchannel_messages','me','me.OpenchannelInteractionId\x20=\x20i.id')['left_join'](_0x2725('0x55'),'it',_0x2725('0x56'))[_0x2725('0x4e')](_0x2725('0x57'),'t','t.id\x20=\x20it.TagId');var _0x4af951=squel[_0x2725('0x58')]();var _0x55350b=[];var _0x195677=squel[_0x2725('0x58')]();var _0xcd16d6;if(_0x5a7bce['query'][_0x2725('0x59')]){_0xcd16d6=as[_0x2725('0x5a')](_0x5a7bce[_0x2725('0x39')][_0x2725('0x59')]);var _0x4c7e45=_0xcd16d6['sqlOperator'];for(var _0x3a333d=0x0;_0x3a333d<_0xcd16d6['conditions'][_0x2725('0x3f')];_0x3a333d++){var _0x1f0d2f=_0xcd16d6['conditions'][_0x3a333d];var _0x18226b='i';var _0x3951fa=_[_0x2725('0x5b')](_0x41e08a,[_0x2725('0x29'),_0x1f0d2f['field']]);if(!_0x3951fa){switch(_0x1f0d2f['field']){case _0x2725('0x5c'):if(_0x1f0d2f[_0x2725('0x5d')]==0x1){_0x4a0404['having']('`'+_0x1f0d2f['field']+_0x2725('0x5e'));}else{_0x4a0404['having']('`'+_0x1f0d2f['field']+_0x2725('0x5f'));}break;case _0x2725('0x60'):if(_0x1f0d2f['operator']===_0x2725('0x61')){if(_0x1f0d2f[_0x2725('0x5d')]['split']('\x20')[_0x2725('0x3f')]>0x1){_0x4af951[_0x4c7e45](_0x2725('0x62'),qs['getFullTextValue'](_0x1f0d2f[_0x2725('0x5d')]),null);}else{var _0x5a85dd='%'+_0x1f0d2f[_0x2725('0x5d')]+'%';_0x4af951[_0x4c7e45](_0x2725('0x63'),_0x5a85dd,_0x5a85dd,_0x5a85dd);}}else{_0x3951fa=_[_0x2725('0x5b')](_0x41e08a,['name','ContactId']);_0x1f0d2f[_0x2725('0x46')]='ContactId';_0x2e99fa=as[_0x2725('0x64')](_0x18226b,_0x3951fa[_0x2725('0x65')],_0x1f0d2f);_0x4af951[_0x4c7e45](_0x2e99fa['text'],_0x2e99fa[_0x2725('0x5d')][_0x2725('0x66')],_0x2e99fa['value'][_0x2725('0x27')]);}break;case _0x2725('0x67'):var _0x28ded4=_0x1f0d2f[_0x2725('0x5d')][_0x2725('0x2e')](',')[_0x2725('0x33')](function(_0x1b8b6e){return Number(_0x1b8b6e);});_0x28ded4[_0x2725('0x2f')](function(_0x3e8fea){_0x195677['or'](_0x2725('0x68'),'%,'+_0x3e8fea+',%');});_0x55350b=_[_0x2725('0x69')](_0x55350b,_0x28ded4);break;case _0x2725('0x6a'):if(_0x1f0d2f[_0x2725('0x6b')]==='$substring'){_0x4af951[_0x4c7e45](_0x2725('0x6c'),'%'+_0x1f0d2f[_0x2725('0x5d')]+'%',null);}else{_0x3951fa=_[_0x2725('0x5b')](_0x41e08a,['name',_0x2725('0x6d')]);_0x1f0d2f[_0x2725('0x46')]=_0x2725('0x6d');_0x2e99fa=as[_0x2725('0x64')](_0x18226b,_0x3951fa[_0x2725('0x65')],_0x1f0d2f);_0x4af951[_0x4c7e45](_0x2e99fa['text'],_0x2e99fa[_0x2725('0x5d')][_0x2725('0x66')],_0x2e99fa[_0x2725('0x5d')][_0x2725('0x27')]);}break;case'body':_0x2e99fa=as[_0x2725('0x64')]('me',null,_0x1f0d2f);_0x4af951[_0x4c7e45](_0x2e99fa[_0x2725('0x6e')],_0x2e99fa[_0x2725('0x5d')][_0x2725('0x66')],_0x2e99fa[_0x2725('0x5d')]['end']);break;}}else{var _0x2e99fa=as[_0x2725('0x64')](_0x18226b,_0x3951fa[_0x2725('0x65')],_0x1f0d2f);_0x4af951[_0x4c7e45](_0x2e99fa[_0x2725('0x6e')],_0x2e99fa[_0x2725('0x5d')]['start'],_0x2e99fa['value'][_0x2725('0x27')]);}}}else{var _0x485bc5=_(_0x5a7bce[_0x2725('0x39')])[_0x2725('0x3a')]()[_0x2725('0x33')](function(_0x529e68){return _[_0x2725('0x6f')](_0x41e08a,[_0x2725('0x29'),_0x529e68])?_0x529e68:undefined;})[_0x2725('0x70')]()[_0x2725('0x5d')]();if(!_[_0x2725('0x71')](_0x485bc5)){_0x485bc5[_0x2725('0x2f')](function(_0x5907a3){if(_0x5907a3===_0x2725('0x72')){_0x4a0404['where']('i.OpenchannelAccountId\x20IN\x20?',[][_0x2725('0x73')](_0x5a7bce[_0x2725('0x39')][_0x5907a3]));}else if(_0x5907a3===_0x2725('0x74')){var _0xda902=JSON[_0x2725('0x75')](_0x5a7bce[_0x2725('0x39')][_0x5907a3])[_0x2725('0x76')];var _0x3c0d3e=JSON[_0x2725('0x75')](_0x5a7bce['query'][_0x5907a3])['$lte'];_0x4a0404[_0x2725('0x44')](_0x2725('0x77'),_0xda902,_0x3c0d3e);}else{if(_0x5a7bce['query'][_0x5907a3]===_0x2725('0x78')){_0x4a0404['where']('i.'+_0x5907a3+_0x2725('0x79'));}else{_0x4a0404[_0x2725('0x44')]('i.'+_0x5907a3+_0x2725('0x7a'),_0x5a7bce[_0x2725('0x39')][_0x5907a3]);}}});}if(_0x5a7bce[_0x2725('0x39')][_0x2725('0x7b')]){if(_0x5a7bce[_0x2725('0x39')]['read']==0x1){_0x4a0404[_0x2725('0x7c')](_0x2725('0x7d'));}else{_0x4a0404[_0x2725('0x7c')]('`unreadMessages`\x20>\x200');}}if(_0x5a7bce[_0x2725('0x39')][_0x2725('0x7e')]){_0x55350b=_[_0x2725('0x7f')](_0x5a7bce[_0x2725('0x39')]['tag'])?_0x5a7bce[_0x2725('0x39')]['tag']:new Array(_0x5a7bce[_0x2725('0x39')][_0x2725('0x7e')]);_0x55350b['forEach'](function(_0x5b31e3){_0x195677['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x5b31e3+',%');});}if(_0x5a7bce[_0x2725('0x39')][_0x2725('0x80')]){var _0x281aed=_0x5a7bce[_0x2725('0x39')]['filter'][_0x2725('0x81')]('\x5c','\x5c\x5c')[_0x2725('0x81')](/'/g,'\x27\x27');if(qs[_0x2725('0x82')](_0x281aed)){_0x4af951['or'](_0x2725('0x83'),_0x281aed+'%');}else{_0x4af951['or'](_0x2725('0x84'),qs['getFullTextValue'](_0x281aed))['or'](_0x2725('0x85'),_0x281aed+'%')['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x281aed+'%');}}}_0x4a0404[_0x2725('0x44')](_0x4af951);_0x4a0404['group'](_0x2725('0x86'));var _0x310406={'type':db['Sequelize']['QueryTypes'][_0x2725('0x87')],'raw':!![]};var _0xa8385c=_0x4a0404[_0x2725('0x88')]();_0xa8385c[_0x2725('0x46')](_0x2725('0x86'));_0xa8385c[_0x2725('0x46')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');if(_0xb9195[_0x2725('0x42')]){_0xb9195['order']['forEach'](function(_0x414af9){var _0x475980=_0x414af9[0x0]===_0x2725('0x89')?_0x414af9[0x0]:'i.'+_0x414af9[0x0];_0x4a0404[_0x2725('0x42')](_0x475980,_0x414af9[0x1]===_0x2725('0x8a')?![]:!![]);});}if(!_[_0x2725('0x71')](_0x55350b)){_0x4a0404[_0x2725('0x7c')](_0x195677);_0xa8385c['where'](_0x2725('0x8b'),_0x55350b);}BPromise[_0x2725('0x8c')]()[_0x2725('0x26')](function(){if(!_0xcd16d6){if(_0x5a7bce['query'][_0x2725('0x72')])return;_0xa8385c[_0x2725('0x44')]('i.OpenchannelAccountId\x20IS\x20NOT\x20NULL');_0x4a0404['where'](_0x2725('0x8d'));return;}if(_0x5a7bce['user']['role']!==_0x2725('0x8e'))return;return _0x5a7bce[_0x2725('0x8f')][_0x2725('0x90')]({'attributes':['id'],'raw':!![]})[_0x2725('0x26')](function(_0x4dbd3f){if(_['isEmpty'](_0x4dbd3f)){_0xa8385c[_0x2725('0x44')](_0x2725('0x91'));_0x4a0404['where']('i.OpenchannelAccountId\x20IS\x20NULL');}else{_0xa8385c[_0x2725('0x44')](_0x2725('0x92'),_[_0x2725('0x33')](_0x4dbd3f,'id'));_0x4a0404[_0x2725('0x44')](_0x2725('0x92'),_[_0x2725('0x33')](_0x4dbd3f,'id'));}});})[_0x2725('0x26')](function(){if(_0x5a7bce[_0x2725('0x8f')]['role']===_0x2725('0x8e')&&!_0xcd16d6&&!_0x5a7bce[_0x2725('0x39')][_0x2725('0x72')])return[];return db['sequelize']['query'](_0xa8385c[_0x2725('0x93')](),_0x310406);})[_0x2725('0x26')](function(_0xae0799){_0x1c0ac3[_0x2725('0x21')]=_0xae0799['length'];if(_0x1c0ac3[_0x2725('0x21')]===0x0)return[];return db[_0x2725('0x94')]['query'](_0x5a03e7[_0x2725('0x93')](),_0x310406)[_0x2725('0x26')](function(_0x5b6d6b){_0x499c88=_[_0x2725('0x95')](_0x5b6d6b,'id');_0x310406=_['merge'](_0x310406,{'model':db[_0x2725('0x34')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5a7bce[_0x2725('0x39')]['fields']){_0xb9195[_0x2725('0x3d')][_0x2725('0x2f')](function(_0x18dec4){_0x4a0404[_0x2725('0x46')]('i.'+_0x18dec4);});}else{_0x4a0404['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x2725('0x5c'));_0x4a0404[_0x2725('0x46')]('a.key','Account.key');_0x4a0404[_0x2725('0x46')](_0x2725('0x96'),_0x2725('0x97'));_0x4a0404[_0x2725('0x46')](_0x2725('0x98'),_0x2725('0x89'));_0x4a0404['field']('i.*');_0x4a0404[_0x2725('0x46')](_0x2725('0x99'),_0x2725('0x9a'));_0x4a0404[_0x2725('0x46')]('c.lastName',_0x2725('0x9b'));_0x4a0404[_0x2725('0x46')]('c.email',_0x2725('0x9c'));_0x4a0404[_0x2725('0x46')](_0x2725('0x9d'),'Contact.phone');_0x4a0404[_0x2725('0x46')](_0x2725('0x9e'),'Contact.mobile');_0x4a0404[_0x2725('0x46')]('c.fax',_0x2725('0x9f'));_0x4a0404['field'](_0x2725('0xa0'),_0x2725('0xa1'));_0x4a0404[_0x2725('0x46')](_0x2725('0xa2'),_0x2725('0xa3'));_0x4a0404[_0x2725('0x46')](_0x2725('0xa4'),_0x2725('0x2c'));}if(_0xb9195['limit'])_0x4a0404[_0x2725('0x20')](_0xb9195[_0x2725('0x20')]);if(_0xb9195[_0x2725('0x1e')])_0x4a0404['offset'](_0xb9195[_0x2725('0x1e')]);return db[_0x2725('0x94')][_0x2725('0x39')](_0x4a0404[_0x2725('0x93')](),_0x310406);})[_0x2725('0x26')](function(_0x3c8b2b){if(_0x3c8b2b[_0x2725('0x3f')]>0x0)_0xbf7074[_0x2725('0x44')](_0x2725('0xa5'),_['map'](_0x3c8b2b,'id'));return db['sequelize'][_0x2725('0x39')](_0xbf7074[_0x2725('0x93')](),_0x310406)[_0x2725('0x26')](function(_0x3ca596){var _0x103674=_[_0x2725('0xa6')](_0x3ca596,_0x2725('0xa7'));var _0x235aa2=[];_0x3c8b2b[_0x2725('0x2f')](function(_0x4a4844){_0x235aa2[_0x2725('0x30')](updateOpenchannelInteraction(_0x4a4844,_0x499c88,_0x103674));});return BPromise[_0x2725('0xa8')](_0x235aa2);});});})[_0x2725('0x26')](function(_0x5ef50a){_0x1c0ac3[_0x2725('0xa9')]=_0x5ef50a;return _0x1c0ac3;})[_0x2725('0x26')](respondWithFilteredResult(_0x3040a8,_0xb9195))[_0x2725('0x31')](handleError(_0x3040a8,null));};exports['show']=function(_0x30a21a,_0x3d2e51){var _0x39b1ff={};if(_0x30a21a['query'][_0x2725('0x65')]&&_0x30a21a['query']['type']===_0x2725('0x48')){_0x39b1ff[_0x2725('0x48')]=_0x30a21a[_0x2725('0xaa')]['id'];}else{_0x39b1ff['id']=_0x30a21a['params']['id'];}var _0x2cf068={'raw':![],'where':_0x39b1ff},_0x4afde5={};_0x4afde5[_0x2725('0x38')]=_[_0x2725('0x3a')](db[_0x2725('0x34')][_0x2725('0x35')]);_0x4afde5[_0x2725('0x39')]=_['keys'](_0x30a21a[_0x2725('0x39')]);_0x4afde5[_0x2725('0x3b')]=_['intersection'](_0x4afde5[_0x2725('0x38')],_0x4afde5[_0x2725('0x39')]);_0x2cf068[_0x2725('0x3d')]=_[_0x2725('0x3c')](_0x4afde5[_0x2725('0x38')],qs['fields'](_0x30a21a[_0x2725('0x39')][_0x2725('0x3e')]));_0x2cf068[_0x2725('0x3d')]=_0x2cf068[_0x2725('0x3d')][_0x2725('0x3f')]?_0x2cf068['attributes']:_0x4afde5[_0x2725('0x38')];if(_0x30a21a[_0x2725('0x39')][_0x2725('0xab')]){_0x2cf068[_0x2725('0xac')]=[{'all':!![]}];}_0x2cf068=_['merge']({},_0x2cf068,_0x30a21a[_0x2725('0xad')]);return db[_0x2725('0x34')][_0x2725('0x5b')](_0x2cf068)[_0x2725('0x26')](handleEntityNotFound(_0x3d2e51,null))['then'](respondWithResult(_0x3d2e51,null))[_0x2725('0x31')](handleError(_0x3d2e51,null));};exports[_0x2725('0xae')]=function(_0x28d335,_0x32ece8){return db['OpenchannelInteraction'][_0x2725('0xae')](_0x28d335['body'],{})[_0x2725('0x26')](respondWithResult(_0x32ece8,0xc9))[_0x2725('0x31')](handleError(_0x32ece8,null));};exports[_0x2725('0xaf')]=function(_0x3d6d0b,_0x39ece9){if(_0x3d6d0b[_0x2725('0xb0')]['id']){delete _0x3d6d0b[_0x2725('0xb0')]['id'];}return db[_0x2725('0x34')][_0x2725('0x5b')]({'where':{'id':_0x3d6d0b[_0x2725('0xaa')]['id']}})[_0x2725('0x26')](handleEntityNotFound(_0x39ece9,null))[_0x2725('0x26')](saveUpdates(_0x3d6d0b['body'],null))['then'](respondWithResult(_0x39ece9,null))[_0x2725('0x31')](handleError(_0x39ece9,null));};exports[_0x2725('0x25')]=function(_0x1d5b7c,_0x2a3c44){return db[_0x2725('0x34')][_0x2725('0x5b')]({'where':{'id':_0x1d5b7c['params']['id']}})[_0x2725('0x26')](handleEntityNotFound(_0x2a3c44,null))[_0x2725('0x26')](removeEntity(_0x2a3c44,null))[_0x2725('0x31')](handleError(_0x2a3c44,null));};exports[_0x2725('0xb1')]=function(_0x471d2e,_0x430216){return db[_0x2725('0x34')][_0x2725('0xb1')]()[_0x2725('0x26')](respondWithResult(_0x430216,null))['catch'](handleError(_0x430216,null));};exports[_0x2725('0xb2')]=function(_0x6fdab3,_0x51ee2f,_0x4427e5){return db['OpenchannelMessage'][_0x2725('0x5b')]({'where':{'id':_0x6fdab3[_0x2725('0xaa')]['id']}})[_0x2725('0x26')](handleEntityNotFound(_0x51ee2f,null))[_0x2725('0x26')](function(_0x521dc9){if(_0x521dc9){return _0x521dc9['addMessage'](_0x6fdab3[_0x2725('0xb0')][_0x2725('0xb3')],_[_0x2725('0xb4')](_0x6fdab3[_0x2725('0xb0')],['ids','id'])||{});}})[_0x2725('0x26')](respondWithResult(_0x51ee2f,null))[_0x2725('0x31')](handleError(_0x51ee2f,null));};exports[_0x2725('0xb5')]=function(_0x4220f4,_0x203822,_0x387637){var _0xc48e50={'raw':![],'where':{}};var _0x5c4d55={};var _0xe54bc4={'count':0x0,'rows':[]};return db[_0x2725('0x34')][_0x2725('0xb6')]({'where':{'id':_0x4220f4['params']['id']}})['then'](handleEntityNotFound(_0x203822,null))[_0x2725('0x26')](function(_0x46f4fe){if(_0x46f4fe){_0x5c4d55[_0x2725('0x38')]=_[_0x2725('0x3a')](db['OpenchannelMessage']['rawAttributes']);_0x5c4d55['query']=_[_0x2725('0x3a')](_0x4220f4['query']);_0x5c4d55[_0x2725('0x3b')]=_[_0x2725('0x3c')](_0x5c4d55[_0x2725('0x38')],_0x5c4d55[_0x2725('0x39')]);_0xc48e50['attributes']=_['intersection'](_0x5c4d55[_0x2725('0x38')],qs['fields'](_0x4220f4[_0x2725('0x39')][_0x2725('0x3e')]));_0xc48e50[_0x2725('0x3d')]=_0xc48e50[_0x2725('0x3d')]['length']?_0xc48e50[_0x2725('0x3d')]:_0x5c4d55['model'];if(!_0x4220f4[_0x2725('0x39')][_0x2725('0x40')](_0x2725('0x41'))){_0xc48e50[_0x2725('0x20')]=qs['limit'](_0x4220f4[_0x2725('0x39')][_0x2725('0x20')]);_0xc48e50[_0x2725('0x1e')]=qs['offset'](_0x4220f4['query'][_0x2725('0x1e')]);}_0xc48e50[_0x2725('0x42')]=qs[_0x2725('0x43')](_0x4220f4[_0x2725('0x39')][_0x2725('0x43')]);_0xc48e50[_0x2725('0x44')]=qs[_0x2725('0x3b')](_[_0x2725('0x45')](_0x4220f4[_0x2725('0x39')],_0x5c4d55[_0x2725('0x3b')]));_0xc48e50[_0x2725('0x44')][_0x2725('0xa7')]=_0x46f4fe['id'];if(_0x4220f4[_0x2725('0x39')][_0x2725('0x80')]){_0xc48e50[_0x2725('0x44')]=_[_0x2725('0xb7')](_0xc48e50[_0x2725('0x44')],{'$or':_[_0x2725('0x33')](_0xc48e50[_0x2725('0x3d')],function(_0x3f8253){var _0x557f83={};_0x557f83[_0x3f8253]={'$like':'%'+_0x4220f4[_0x2725('0x39')]['filter']+'%'};return _0x557f83;})});}if(_0x4220f4['query'][_0x2725('0x76')]){var _0x37043f=_0x4220f4[_0x2725('0x39')][_0x2725('0x76')][_0x2725('0x2e')](',');var _0x124458={};_0x124458[_0x37043f[0x0]]={'$gte':moment(_0x37043f[0x1])[_0x2725('0xb8')]('YYYY-MM-DD\x20HH:mm:ss')};_0xc48e50[_0x2725('0x44')]=_[_0x2725('0xb7')](_0xc48e50[_0x2725('0x44')],_0x124458);}_0xc48e50=_[_0x2725('0xb7')]({},_0xc48e50,_0x4220f4[_0x2725('0xad')]);return db[_0x2725('0xb9')][_0x2725('0x21')]({'where':_0xc48e50[_0x2725('0x44')]})[_0x2725('0x26')](function(_0x4f6212){_0xe54bc4[_0x2725('0x21')]=_0x4f6212;if(_0x4220f4[_0x2725('0x39')][_0x2725('0xab')]){_0xc48e50[_0x2725('0xac')]=[{'all':!![]}];}return db['OpenchannelMessage']['findAll'](_0xc48e50);})['then'](function(_0xac45b){_0xe54bc4[_0x2725('0xa9')]=_0xac45b;return _0xe54bc4;});}})['then'](respondWithFilteredResult(_0x203822,_0xc48e50))[_0x2725('0x31')](handleError(_0x203822,null));};exports[_0x2725('0xba')]=function(_0x4fa993,_0x21ee05,_0x5ac197){return db[_0x2725('0x34')][_0x2725('0x5b')]({'where':{'id':_0x4fa993[_0x2725('0xaa')]['id']}})[_0x2725('0x26')](handleEntityNotFound(_0x21ee05,null))['then'](function(_0x43e670){if(_0x43e670){return _0x43e670['setTags'](_0x4fa993[_0x2725('0xb0')]['ids'],_[_0x2725('0xb4')](_0x4fa993['body'],[_0x2725('0xb3'),'id'])||{})[_0x2725('0xbb')](function(){return db[_0x2725('0x67')]['findAll']({'attributes':['id',_0x2725('0x29'),_0x2725('0x47')],'where':{'id':_0x4fa993['body'][_0x2725('0xb3')]}});})[_0x2725('0x26')](function(_0x13f4a6){socket[_0x2725('0xbc')]('openchannelInteractionTags:save',{'id':Number(_0x4fa993[_0x2725('0xaa')]['id']),'tags':_0x13f4a6||[]});return{'id':Number(_0x4fa993[_0x2725('0xaa')]['id']),'tags':_0x13f4a6||[]};});}})[_0x2725('0x26')](respondWithResult(_0x21ee05,null))['catch'](handleError(_0x21ee05,null));};exports['removeTags']=function(_0x30e873,_0x5de2a0,_0x4b7ade){return db[_0x2725('0x34')][_0x2725('0x5b')]({'where':{'id':_0x30e873['params']['id']}})['then'](handleEntityNotFound(_0x5de2a0,null))['then'](function(_0x65ba3b){if(_0x65ba3b){return _0x65ba3b[_0x2725('0xbd')](_0x30e873['query']['ids']);}})[_0x2725('0x26')](respondWithStatusCode(_0x5de2a0,null))[_0x2725('0x31')](handleError(_0x5de2a0,null));};exports[_0x2725('0xbe')]=function(_0x2cd73c,_0x44b870){var _0x1aed16=moment()[_0x2725('0xbf')]()[_0x2725('0x93')]();var _0x17431e=path[_0x2725('0xc0')](config[_0x2725('0xc1')],_0x2725('0xc2'),_0x2725('0xc3'),'tmp');var _0x23027b=path[_0x2725('0xc0')](config[_0x2725('0xc1')],_0x2725('0xc2'),'files',_0x2725('0xc4'));var _0x2767ea=path[_0x2725('0xc0')](_0x17431e,_0x1aed16);var _0x2316fe=util['format'](_0x2725('0xc5'),_0x2cd73c['params']['id'],_0x1aed16);var _0x569919=path[_0x2725('0xc0')](_0x17431e,_0x2316fe);var _0x498e29=[];_0x498e29['push']({'model':db['User'],'as':_0x2725('0x6a'),'attributes':['id',_0x2725('0x2b')],'raw':!![]});_0x498e29['push']({'model':db[_0x2725('0xc6')],'as':_0x2725('0x60'),'attributes':['id',_0x2725('0xc7'),_0x2725('0xc8')],'raw':!![]});if(_0x2cd73c[_0x2725('0x39')][_0x2725('0xc4')]){_0x498e29[_0x2725('0x30')]({'model':db['Attachment'],'as':_0x2725('0xc9'),'raw':!![]});}var _0x5bfe92=[{'model':db[_0x2725('0xb9')],'as':_0x2725('0xca'),'attributes':['id',_0x2725('0xb0'),_0x2725('0x74'),_0x2725('0xcb'),_0x2725('0xcc'),_0x2725('0x7b')],'include':_0x498e29}];_0x5bfe92[_0x2725('0x30')]({'model':db[_0x2725('0xcd')],'as':_0x2725('0xce'),'attributes':['id','name']});_0x5bfe92[_0x2725('0x30')]({'model':db[_0x2725('0x6a')],'as':_0x2725('0xcf'),'attributes':['id',_0x2725('0x2b')]});return db[_0x2725('0x34')][_0x2725('0x5b')]({'where':{'id':_0x2cd73c[_0x2725('0xaa')]['id']},'include':_0x5bfe92})[_0x2725('0x26')](handleEntityNotFound(_0x44b870,null))[_0x2725('0x26')](function(_0x4b3c86){if(_0x4b3c86){var _0x466579=_0x4b3c86[_0x2725('0xd0')]({'plain':!![]});fs[_0x2725('0xd1')](_0x2767ea);var _0xa91462={'channel':'Openchannel','account':_0x466579[_0x2725('0xce')][_0x2725('0x29')],'agent':_0x466579[_0x2725('0xcf')]?_0x466579[_0x2725('0xcf')][_0x2725('0x2b')]:_0x2725('0xd2'),'createdAt':moment(_0x466579[_0x2725('0x74')])[_0x2725('0xb8')]('YYYY-MM-DD\x20HH:mm:ss')[_0x2725('0x93')](),'closedAt':_0x466579[_0x2725('0xd3')]?moment(_0x466579['closedAt'])[_0x2725('0xb8')](_0x2725('0xd4'))[_0x2725('0x93')]():'','disposition':_0x466579[_0x2725('0xd5')],'visibility':_0x466579['threadId']?_0x2725('0xd6'):'Private','messages':_(_0x466579[_0x2725('0xca')])[_0x2725('0x80')]({'secret':![]})['map'](function(_0x1a65b0){if(_0x1a65b0[_0x2725('0xc9')]){var _0x48151a=path[_0x2725('0xc0')](_0x23027b,_0x1a65b0[_0x2725('0xc9')]['basename']);if(fs[_0x2725('0xd7')](_0x48151a)){fs[_0x2725('0xd8')](_0x48151a)[_0x2725('0xd9')](fs[_0x2725('0xda')](path[_0x2725('0xc0')](_0x2767ea,_0x1a65b0[_0x2725('0xc9')][_0x2725('0xdb')])));}}return{'date':moment(_0x1a65b0[_0x2725('0x74')])['format'](_0x2725('0xd4'))[_0x2725('0x93')](),'sender':_0x1a65b0[_0x2725('0xcb')]===_0x2725('0xdc')?_0x1a65b0[_0x2725('0x6a')]?_0x1a65b0[_0x2725('0x6a')][_0x2725('0x2b')]:_0x2725('0xdd'):_0x1a65b0['Contact'][_0x2725('0xc7')]+(_0x1a65b0[_0x2725('0x60')]['lastName']?'\x20'+_0x1a65b0[_0x2725('0x60')][_0x2725('0xc8')]:''),'body':_0x1a65b0[_0x2725('0xc9')]?_0x1a65b0[_0x2725('0xc9')][_0x2725('0xdb')]:_0x1a65b0[_0x2725('0xb0')],'direction':_0x1a65b0[_0x2725('0xcb')]===_0x2725('0xdc')?'A':'C','secret':_0x1a65b0[_0x2725('0xcc')],'read':_0x1a65b0['read'],'attachment':_0x1a65b0[_0x2725('0xc9')]};})['value']()};return ejs[_0x2725('0xde')](path[_0x2725('0xc0')](config[_0x2725('0xc1')],_0x2725('0xc2'),_0x2725('0xdf'),_0x2725('0xe0')),{'interaction':_0xa91462})[_0x2725('0x26')](function(_0x413331){var _0x27d6c5=path[_0x2725('0xc0')](_0x2767ea,_0x2725('0xe1')+_0x466579['id']+'-'+_0x1aed16+_0x2725('0xe2'));var _0x24278c={'path':_0x27d6c5,'channel':_0x2725('0xe3'),'interactionId':_0x466579['id']};return pdf['createPdfFromHTML'](_0x413331,_0x24278c);})[_0x2725('0x26')](function(){return new BPromise(function(_0x2c2ea0,_0x4a8fa2){zipdir(_0x2767ea,{'saveTo':_0x569919},function(_0x3cebb6,_0x49d25e){if(_0x3cebb6)return _0x4a8fa2(_0x3cebb6);return _0x2c2ea0(_0x49d25e);});})[_0x2725('0x26')](function(){return new BPromise(function(_0x212935,_0x4a9c0b){rimraf(_0x2767ea,function(_0x4b0d76){if(_0x4b0d76)_0x4a9c0b(_0x4b0d76);return _0x212935();});});})[_0x2725('0x26')](function(){return _0x44b870[_0x2725('0xbe')](_0x569919,_0x2316fe,function(_0x20c876){if(_0x20c876){console[_0x2725('0xe4')](_0x2725('0xe5'),_0x20c876);}else{fs[_0x2725('0xe6')](_0x569919);}});});});}else{return _0x44b870[_0x2725('0x1b')](0xc8);}})['catch'](handleError(_0x44b870,null));};
\ No newline at end of file
index 6e5e91d..ee55f82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15b0=['OpenchannelMessage','setMaxListeners','save','update','remove','getUsers','then','Users','map','setDataValue','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','../../mysqldb'];(function(_0x3bb8e2,_0x5ee2f6){var _0x69c393=function(_0x2ed25c){while(--_0x2ed25c){_0x3bb8e2['push'](_0x3bb8e2['shift']());}};_0x69c393(++_0x5ee2f6);}(_0x15b0,0x11f));var _0x015b=function(_0x46d4f6,_0x1247b2){_0x46d4f6=_0x46d4f6-0x0;var _0x1900b5=_0x15b0[_0x46d4f6];return _0x1900b5;};'use strict';var EventEmitter=require('events');var OpenchannelInteraction=require('../../mysqldb')['db']['OpenchannelInteraction'];var OpenchannelMessage=require(_0x015b('0x0'))['db'][_0x015b('0x1')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x015b('0x2')](0x0);var events={'afterCreate':_0x015b('0x3'),'afterUpdate':_0x015b('0x4'),'afterDestroy':_0x015b('0x5')};function emitEvent(_0x191dec){return function(_0x47dcd3,_0x54515b,_0x163456){_0x47dcd3[_0x015b('0x6')]({'attributes':['id'],'raw':!![]})[_0x015b('0x7')](function(_0x44c2dc){_0x47dcd3['setDataValue'](_0x015b('0x8'),_0x44c2dc[_0x015b('0x9')](function(_0x374768){return{'id':_0x374768['id']};}));return OpenchannelMessage['findAll']({'where':{'OpenchannelInteractionId':_0x47dcd3['id'],'direction':'in','read':![]},'raw':!![]});})[_0x015b('0x7')](function(_0x260b92){_0x47dcd3[_0x015b('0xa')](_0x015b('0xb'),_0x260b92[_0x015b('0xc')]);OpenchannelInteractionEvents[_0x015b('0xd')](_0x191dec+':'+_0x47dcd3['id'],_0x47dcd3);OpenchannelInteractionEvents['emit'](_0x191dec,_0x47dcd3);_0x163456(null);})[_0x015b('0xe')](_0x163456(null));};}for(var e in events){if(events[_0x015b('0xf')](e)){var event=events[e];OpenchannelInteraction[_0x015b('0x10')](e,emitEvent(event));}}module[_0x015b('0x11')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0xe486=['emit','catch','hasOwnProperty','hook','events','../../mysqldb','OpenchannelInteraction','OpenchannelMessage','update','remove','getUsers','then','setDataValue','map','unreadMessages','length'];(function(_0x34fea9,_0x4454b7){var _0xf5a367=function(_0x4ba17d){while(--_0x4ba17d){_0x34fea9['push'](_0x34fea9['shift']());}};_0xf5a367(++_0x4454b7);}(_0xe486,0xa4));var _0x6e48=function(_0x2a153b,_0x2d5c66){_0x2a153b=_0x2a153b-0x0;var _0x37d930=_0xe486[_0x2a153b];return _0x37d930;};'use strict';var EventEmitter=require(_0x6e48('0x0'));var OpenchannelInteraction=require(_0x6e48('0x1'))['db'][_0x6e48('0x2')];var OpenchannelMessage=require(_0x6e48('0x1'))['db'][_0x6e48('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x6e48('0x4'),'afterDestroy':_0x6e48('0x5')};function emitEvent(_0x3d5593){return function(_0x35430f,_0x33d581,_0x47ede2){_0x35430f[_0x6e48('0x6')]({'attributes':['id'],'raw':!![]})[_0x6e48('0x7')](function(_0x34e84c){_0x35430f[_0x6e48('0x8')]('Users',_0x34e84c[_0x6e48('0x9')](function(_0x13d5d9){return{'id':_0x13d5d9['id']};}));return OpenchannelMessage['findAll']({'where':{'OpenchannelInteractionId':_0x35430f['id'],'direction':'in','read':![]},'raw':!![]});})[_0x6e48('0x7')](function(_0x44f779){_0x35430f[_0x6e48('0x8')](_0x6e48('0xa'),_0x44f779[_0x6e48('0xb')]);OpenchannelInteractionEvents[_0x6e48('0xc')](_0x3d5593+':'+_0x35430f['id'],_0x35430f);OpenchannelInteractionEvents[_0x6e48('0xc')](_0x3d5593,_0x35430f);_0x47ede2(null);})[_0x6e48('0xd')](_0x47ede2(null));};}for(var e in events){if(events[_0x6e48('0xe')](e)){var event=events[e];OpenchannelInteraction[_0x6e48('0xf')](e,emitEvent(event));}}module['exports']=OpenchannelInteractionEvents;
\ No newline at end of file
index 8ae7a1f..7eccd61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b66=['OpenchannelInteraction','utf8mb4','utf8mb4_unicode_ci','closed','closedAt','format','util','moment','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0x1f0c44,_0x434ca4){var _0x1e89b2=function(_0x222ec8){while(--_0x222ec8){_0x1f0c44['push'](_0x1f0c44['shift']());}};_0x1e89b2(++_0x434ca4);}(_0x7b66,0x1aa));var _0x67b6=function(_0x3471d3,_0x18b535){_0x3471d3=_0x3471d3-0x0;var _0x4cebb4=_0x7b66[_0x3471d3];return _0x4cebb4;};'use strict';var _=require('lodash');var util=require(_0x67b6('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x67b6('0x1'));var BPromise=require('bluebird');var rp=require(_0x67b6('0x2'));var fs=require('fs');var path=require(_0x67b6('0x3'));var rimraf=require(_0x67b6('0x4'));var config=require(_0x67b6('0x5'));var attributes=require('./openchannelInteraction.attributes');module[_0x67b6('0x6')]=function(_0x184e45,_0x5ee877){return _0x184e45[_0x67b6('0x7')](_0x67b6('0x8'),attributes,{'tableName':'openchannel_interactions','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x67b6('0x9'),'collate':_0x67b6('0xa'),'hooks':{'beforeUpdate':function(_0x5a1e13,_0x5041a6,_0x3735ed){if(_0x5a1e13['changed'](_0x67b6('0xb'))){_0x5a1e13[_0x67b6('0xc')]=moment()[_0x67b6('0xd')]('YYYY-MM-DD\x20HH:mm:ss');}_0x3735ed(null,_0x5a1e13);}}});};
\ No newline at end of file
+var _0xdc36=['exports','openchannel_interactions','utf8mb4_unicode_ci','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','moment','request-promise','../../config/environment'];(function(_0x398226,_0x4b5eae){var _0x280539=function(_0x50cace){while(--_0x50cace){_0x398226['push'](_0x398226['shift']());}};_0x280539(++_0x4b5eae);}(_0xdc36,0x73));var _0x6dc3=function(_0x16410f,_0x5ec630){_0x16410f=_0x16410f-0x0;var _0xc8bfa8=_0xdc36[_0x16410f];return _0xc8bfa8;};'use strict';var _=require(_0x6dc3('0x0'));var util=require(_0x6dc3('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x6dc3('0x2'));var BPromise=require('bluebird');var rp=require(_0x6dc3('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x6dc3('0x4'));var attributes=require('./openchannelInteraction.attributes');module[_0x6dc3('0x5')]=function(_0x3261b5,_0x2fb7ab){return _0x3261b5['define']('OpenchannelInteraction',attributes,{'tableName':_0x6dc3('0x6'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x6dc3('0x7'),'hooks':{'beforeUpdate':function(_0x56b1aa,_0xb81746,_0x10ce90){if(_0x56b1aa[_0x6dc3('0x8')](_0x6dc3('0x9'))){_0x56b1aa[_0x6dc3('0xa')]=moment()['format'](_0x6dc3('0xb'));}_0x10ce90(null,_0x56b1aa);}}});};
\ No newline at end of file
index 8b88772..b478faf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa777=['ids','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','redis','localhost','socket.io-emitter','register','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','result','update','body','options','raw','attributes','UpdateOpenchannelInteraction','catch','OpenchannelInteraction','find','where'];(function(_0xd84cb2,_0x52d3fa){var _0x1591e6=function(_0x155617){while(--_0x155617){_0xd84cb2['push'](_0xd84cb2['shift']());}};_0x1591e6(++_0x52d3fa);}(_0xa777,0x194));var _0x7a77=function(_0x87903,_0x59c45e){_0x87903=_0x87903-0x0;var _0x15376d=_0xa777[_0x87903];return _0x15376d;};'use strict';var _=require(_0x7a77('0x0'));var util=require(_0x7a77('0x1'));var moment=require(_0x7a77('0x2'));var BPromise=require(_0x7a77('0x3'));var rs=require(_0x7a77('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x7a77('0x5'));var logger=require(_0x7a77('0x6'))(_0x7a77('0x7'));var config=require(_0x7a77('0x8'));var jayson=require(_0x7a77('0x9'));var client=jayson['client'][_0x7a77('0xa')]({'port':0x232a});config['redis']=_[_0x7a77('0xb')](config[_0x7a77('0xc')],{'host':_0x7a77('0xd'),'port':0x18eb});var socket=require(_0x7a77('0xe'))(new Redis(config[_0x7a77('0xc')]));require('./openchannelInteraction.socket')[_0x7a77('0xf')](socket);function respondWithRpcPromise(_0x2ee704,_0xafc4d5,_0x1ba05a){return new BPromise(function(_0x258b0e,_0x5e1446){return client['request'](_0x2ee704,_0x1ba05a)[_0x7a77('0x10')](function(_0x2b08ea){logger[_0x7a77('0x11')](_0x7a77('0x12'),_0xafc4d5,_0x7a77('0x13'));logger[_0x7a77('0x14')](_0x7a77('0x15'),_0xafc4d5,_0x7a77('0x13'),JSON[_0x7a77('0x16')](_0x2b08ea));if(_0x2b08ea[_0x7a77('0x17')]){if(_0x2b08ea['error']['code']===0x1f4){logger[_0x7a77('0x17')](_0x7a77('0x12'),_0xafc4d5,_0x2b08ea['error'][_0x7a77('0x18')]);return _0x5e1446(_0x2b08ea[_0x7a77('0x17')][_0x7a77('0x18')]);}logger['error'](_0x7a77('0x12'),_0xafc4d5,_0x2b08ea[_0x7a77('0x17')]['message']);return _0x258b0e(_0x2b08ea[_0x7a77('0x17')][_0x7a77('0x18')]);}else{logger[_0x7a77('0x11')](_0x7a77('0x12'),_0xafc4d5,_0x7a77('0x13'));_0x258b0e(_0x2b08ea[_0x7a77('0x19')][_0x7a77('0x18')]);}})['catch'](function(_0x8d32aa){logger[_0x7a77('0x17')](_0x7a77('0x12'),_0xafc4d5,_0x8d32aa);_0x5e1446(_0x8d32aa);});});}exports['UpdateOpenchannelInteraction']=function(_0x520506){var _0x3df827=this;return new Promise(function(_0x52b913,_0x230239){return db['OpenchannelInteraction'][_0x7a77('0x1a')](_0x520506[_0x7a77('0x1b')],{'raw':_0x520506[_0x7a77('0x1c')]?_0x520506['options'][_0x7a77('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x520506['options']?_0x520506[_0x7a77('0x1c')]['where']||null:null,'attributes':_0x520506['options']?_0x520506[_0x7a77('0x1c')][_0x7a77('0x1e')]||null:null,'limit':_0x520506[_0x7a77('0x1c')]?_0x520506[_0x7a77('0x1c')]['limit']||null:null})[_0x7a77('0x10')](function(_0x2d6ce0){logger[_0x7a77('0x11')](_0x7a77('0x1f'),_0x520506);logger[_0x7a77('0x14')](_0x7a77('0x1f'),_0x520506,JSON[_0x7a77('0x16')](_0x2d6ce0));_0x52b913(_0x2d6ce0);})[_0x7a77('0x20')](function(_0x547f82){logger[_0x7a77('0x17')](_0x7a77('0x1f'),_0x547f82[_0x7a77('0x18')],_0x520506);_0x230239(_0x3df827[_0x7a77('0x17')](0x1f4,_0x547f82['message']));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x3415b9){return new Promise(function(_0x24431d,_0xae0afc){return db[_0x7a77('0x21')][_0x7a77('0x22')]({'where':_0x3415b9['options']?_0x3415b9[_0x7a77('0x1c')][_0x7a77('0x23')]||null:null})[_0x7a77('0x10')](function(_0x3f1057){if(_0x3f1057){return _0x3f1057['addTags'](_0x3415b9['body'][_0x7a77('0x24')],_[_0x7a77('0x25')](_0x3415b9[_0x7a77('0x1b')],['ids','id'])||{});}})[_0x7a77('0x26')](function(_0x556a45){logger['info'](_0x7a77('0x27'),_0x3415b9);logger[_0x7a77('0x14')]('AddTags',_0x3415b9,JSON[_0x7a77('0x16')](_0x556a45));_0x24431d(_0x556a45);})[_0x7a77('0x20')](function(_0x1437a5){logger[_0x7a77('0x17')](_0x7a77('0x27'),_0x1437a5[_0x7a77('0x18')],_0x3415b9);_0xae0afc(_this[_0x7a77('0x17')](0x1f4,_0x1437a5['message']));});});};
\ No newline at end of file
+var _0x30d1=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','socket.io-emitter','./openchannelInteraction.socket','register','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','OpenchannelInteraction','update','body','options','raw','attributes','limit','UpdateOpenchannelInteraction','catch','where','addTags','ids','omit','spread','AddTags','lodash','util','moment','bluebird'];(function(_0x1558ee,_0x40ed70){var _0x252dba=function(_0x2dbde5){while(--_0x2dbde5){_0x1558ee['push'](_0x1558ee['shift']());}};_0x252dba(++_0x40ed70);}(_0x30d1,0xdd));var _0x130d=function(_0x5806c3,_0x5105d8){_0x5806c3=_0x5806c3-0x0;var _0x48ac77=_0x30d1[_0x5806c3];return _0x48ac77;};'use strict';var _=require(_0x130d('0x0'));var util=require(_0x130d('0x1'));var moment=require(_0x130d('0x2'));var BPromise=require(_0x130d('0x3'));var rs=require(_0x130d('0x4'));var fs=require('fs');var Redis=require(_0x130d('0x5'));var db=require(_0x130d('0x6'))['db'];var utils=require(_0x130d('0x7'));var logger=require(_0x130d('0x8'))(_0x130d('0x9'));var config=require(_0x130d('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x130d('0xb')][_0x130d('0xc')]({'port':0x232a});config[_0x130d('0xd')]=_[_0x130d('0xe')](config[_0x130d('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x130d('0xf'))(new Redis(config[_0x130d('0xd')]));require(_0x130d('0x10'))[_0x130d('0x11')](socket);function respondWithRpcPromise(_0x392063,_0x123a80,_0x436010){return new BPromise(function(_0x353809,_0x37c140){return client[_0x130d('0x12')](_0x392063,_0x436010)[_0x130d('0x13')](function(_0x232dc7){logger[_0x130d('0x14')](_0x130d('0x15'),_0x123a80,_0x130d('0x16'));logger[_0x130d('0x17')](_0x130d('0x18'),_0x123a80,'request\x20sent',JSON[_0x130d('0x19')](_0x232dc7));if(_0x232dc7[_0x130d('0x1a')]){if(_0x232dc7['error'][_0x130d('0x1b')]===0x1f4){logger['error'](_0x130d('0x15'),_0x123a80,_0x232dc7[_0x130d('0x1a')][_0x130d('0x1c')]);return _0x37c140(_0x232dc7[_0x130d('0x1a')][_0x130d('0x1c')]);}logger['error'](_0x130d('0x15'),_0x123a80,_0x232dc7[_0x130d('0x1a')][_0x130d('0x1c')]);return _0x353809(_0x232dc7[_0x130d('0x1a')]['message']);}else{logger[_0x130d('0x14')](_0x130d('0x15'),_0x123a80,'request\x20sent');_0x353809(_0x232dc7[_0x130d('0x1d')]['message']);}})['catch'](function(_0x131ca4){logger[_0x130d('0x1a')](_0x130d('0x15'),_0x123a80,_0x131ca4);_0x37c140(_0x131ca4);});});}exports['UpdateOpenchannelInteraction']=function(_0x603928){var _0x1a1092=this;return new Promise(function(_0x57c92d,_0x9ff687){return db[_0x130d('0x1e')][_0x130d('0x1f')](_0x603928[_0x130d('0x20')],{'raw':_0x603928[_0x130d('0x21')]?_0x603928[_0x130d('0x21')][_0x130d('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x603928[_0x130d('0x21')]?_0x603928[_0x130d('0x21')]['where']||null:null,'attributes':_0x603928[_0x130d('0x21')]?_0x603928[_0x130d('0x21')][_0x130d('0x23')]||null:null,'limit':_0x603928[_0x130d('0x21')]?_0x603928['options'][_0x130d('0x24')]||null:null})['then'](function(_0x13acac){logger[_0x130d('0x14')](_0x130d('0x25'),_0x603928);logger[_0x130d('0x17')](_0x130d('0x25'),_0x603928,JSON[_0x130d('0x19')](_0x13acac));_0x57c92d(_0x13acac);})[_0x130d('0x26')](function(_0x23b014){logger[_0x130d('0x1a')](_0x130d('0x25'),_0x23b014[_0x130d('0x1c')],_0x603928);_0x9ff687(_0x1a1092[_0x130d('0x1a')](0x1f4,_0x23b014['message']));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x859433){return new Promise(function(_0x4281a4,_0x113fcb){return db[_0x130d('0x1e')]['find']({'where':_0x859433['options']?_0x859433[_0x130d('0x21')][_0x130d('0x27')]||null:null})[_0x130d('0x13')](function(_0x37455b){if(_0x37455b){return _0x37455b[_0x130d('0x28')](_0x859433[_0x130d('0x20')][_0x130d('0x29')],_[_0x130d('0x2a')](_0x859433[_0x130d('0x20')],['ids','id'])||{});}})[_0x130d('0x2b')](function(_0x48aa13){logger[_0x130d('0x14')](_0x130d('0x2c'),_0x859433);logger[_0x130d('0x17')]('AddTags',_0x859433,JSON[_0x130d('0x19')](_0x48aa13));_0x4281a4(_0x48aa13);})[_0x130d('0x26')](function(_0x3d263c){logger[_0x130d('0x1a')](_0x130d('0x2c'),_0x3d263c[_0x130d('0x1c')],_0x859433);_0x113fcb(_this[_0x130d('0x1a')](0x1f4,_0x3d263c[_0x130d('0x1c')]));});});};
\ No newline at end of file
index e6d2072..a2e3668 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c48=['save','update','emit','removeListener','register','length','openchannelInteraction:'];(function(_0x49b076,_0x4fb74e){var _0xa3609=function(_0x474e71){while(--_0x474e71){_0x49b076['push'](_0x49b076['shift']());}};_0xa3609(++_0x4fb74e);}(_0x8c48,0x1f1));var _0x88c4=function(_0x19be0d,_0x58b924){_0x19be0d=_0x19be0d-0x0;var _0x5d93e6=_0x8c48[_0x19be0d];return _0x5d93e6;};'use strict';var OpenchannelInteractionEvents=require('./openchannelInteraction.events');var events=[_0x88c4('0x0'),'remove',_0x88c4('0x1')];function createListener(_0x13df9d,_0x8c74c2){return function(_0x4d1639){_0x8c74c2[_0x88c4('0x2')](_0x13df9d,_0x4d1639);};}function removeListener(_0xa964c8,_0x2d7c5a){return function(){OpenchannelInteractionEvents[_0x88c4('0x3')](_0xa964c8,_0x2d7c5a);};}exports[_0x88c4('0x4')]=function(_0xa1ae01){for(var _0x126355=0x0,_0x4a5549=events[_0x88c4('0x5')];_0x126355<_0x4a5549;_0x126355++){var _0x238f48=events[_0x126355];var _0x15a330=createListener(_0x88c4('0x6')+_0x238f48,_0xa1ae01);OpenchannelInteractionEvents['on'](_0x238f48,_0x15a330);}};
\ No newline at end of file
+var _0x539b=['emit','removeListener','openchannelInteraction:','./openchannelInteraction.events','save','update'];(function(_0x525bf2,_0xb771c9){var _0x5a2baa=function(_0x24579c){while(--_0x24579c){_0x525bf2['push'](_0x525bf2['shift']());}};_0x5a2baa(++_0xb771c9);}(_0x539b,0x195));var _0xb539=function(_0x27a32e,_0x491865){_0x27a32e=_0x27a32e-0x0;var _0x2d1c87=_0x539b[_0x27a32e];return _0x2d1c87;};'use strict';var OpenchannelInteractionEvents=require(_0xb539('0x0'));var events=[_0xb539('0x1'),'remove',_0xb539('0x2')];function createListener(_0x302eea,_0x58e2cc){return function(_0x1e6c5f){_0x58e2cc[_0xb539('0x3')](_0x302eea,_0x1e6c5f);};}function removeListener(_0x5f0974,_0x4b5e01){return function(){OpenchannelInteractionEvents[_0xb539('0x4')](_0x5f0974,_0x4b5e01);};}exports['register']=function(_0x3bc2e1){for(var _0x57d594=0x0,_0x549b26=events['length'];_0x57d594<_0x549b26;_0x57d594++){var _0x581bf1=events[_0x57d594];var _0x51c29a=createListener(_0xb539('0x5')+_0x581bf1,_0x3bc2e1);OpenchannelInteractionEvents['on'](_0x581bf1,_0x51c29a);}};
\ No newline at end of file
index e0a1f11..2cf9d1a 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(_0x3902c1,_0x1c9eb2){var _0x1266cc=function(_0x50c2c5){while(--_0x50c2c5){_0x3902c1['push'](_0x3902c1['shift']());}};_0x1266cc(++_0x1c9eb2);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4c440b,_0x3ea627){_0x4c440b=_0x4c440b-0x0;var _0x2d48cf=_0xcb91[_0x4c440b];return _0x2d48cf;};'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 _0xe706=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','tracked','openchannel','openchannelmessage:create','create','update','put','/:id/accept','accept','/:id/reject','exports','multer','util','path','express','Router'];(function(_0x51ee45,_0x3df551){var _0x2ac5dc=function(_0x38c2f1){while(--_0x38c2f1){_0x51ee45['push'](_0x51ee45['shift']());}};_0x2ac5dc(++_0x3df551);}(_0xe706,0xa3));var _0x6e70=function(_0x1e8219,_0x31b4a0){_0x1e8219=_0x1e8219-0x0;var _0x37d537=_0xe706[_0x1e8219];return _0x37d537;};'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'));var controller=require(_0x6e70('0x9'));router[_0x6e70('0xa')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0xc')]);router[_0x6e70('0xa')](_0x6e70('0xd'),auth[_0x6e70('0xb')](),controller[_0x6e70('0xe')]);router[_0x6e70('0xa')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x11')]('/',auth[_0x6e70('0xb')](),interaction[_0x6e70('0x12')](_0x6e70('0x13'),_0x6e70('0x14')),controller[_0x6e70('0x15')]);router['put']('/:id',auth[_0x6e70('0xb')](),controller[_0x6e70('0x16')]);router[_0x6e70('0x17')](_0x6e70('0x18'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x19')]);router[_0x6e70('0x17')](_0x6e70('0x1a'),auth['isAuthenticated'](),controller['reject']);router['delete'](_0x6e70('0xf'),auth['isAuthenticated'](),controller['destroy']);module[_0x6e70('0x1b')]=router;
\ No newline at end of file
index fccf7f7..d20723c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ca5=['medium','BOOLEAN','out','DATE','STRING','exports','TEXT'];(function(_0x52b174,_0x3ac056){var _0x1e3644=function(_0x5b9f16){while(--_0x5b9f16){_0x52b174['push'](_0x52b174['shift']());}};_0x1e3644(++_0x3ac056);}(_0x2ca5,0x108));var _0x52ca=function(_0x4a80f6,_0x3d43ad){_0x4a80f6=_0x4a80f6-0x0;var _0x5bc762=_0x2ca5[_0x4a80f6];return _0x5bc762;};'use strict';var Sequelize=require('sequelize');module[_0x52ca('0x0')]={'body':{'type':Sequelize[_0x52ca('0x1')](_0x52ca('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x52ca('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0x52ca('0x4'),'allowNull':![]},'readAt':{'type':Sequelize[_0x52ca('0x5')]},'providerName':{'type':Sequelize[_0x52ca('0x6')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x117c=['ENUM','out','DATE','STRING','TEXT','medium'];(function(_0x2235bf,_0x3a06a7){var _0x4c3a64=function(_0x3b3bb6){while(--_0x3b3bb6){_0x2235bf['push'](_0x2235bf['shift']());}};_0x4c3a64(++_0x3a06a7);}(_0x117c,0x71));var _0xc117=function(_0x33c3d3,_0x51eed3){_0x33c3d3=_0x33c3d3-0x0;var _0xf3a17f=_0x117c[_0x33c3d3];return _0xf3a17f;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize['TEXT'](_0xc117('0x0')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xc117('0x1')]('in',_0xc117('0x2')),'defaultValue':_0xc117('0x2'),'allowNull':![]},'readAt':{'type':Sequelize[_0xc117('0x3')]},'providerName':{'type':Sequelize[_0xc117('0x4')]},'providerResponse':{'type':Sequelize[_0xc117('0x5')]}};
\ No newline at end of file
index f02978f..30cd42a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefe9=['rejectmessage','eml-format','zip-dir','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','redis','defaults','localhost','socket.io-emitter','register','client','http','request','info','OpenchannelMessage,\x20%s,\x20%s','OpenchannelMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','then','destroy','stack','name','send','map','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','OpenchannelMessage','include','findAll','rows','show','params','keys','rawAttributes','find','create','body','describe','../../config/logger','openchannel-interactions','openchannel','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','format','role','interaction','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','email','internal','manual','interface','SIP/%s','channel','event','accept','EventManager','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','User','fullname','motionChannel'];(function(_0x26c532,_0x35404e){var _0x5b5a01=function(_0x56b6ba){while(--_0x56b6ba){_0x26c532['push'](_0x26c532['shift']());}};_0x5b5a01(++_0x35404e);}(_0xefe9,0x83));var _0x9efe=function(_0x7bd4f5,_0x3a109c){_0x7bd4f5=_0x7bd4f5-0x0;var _0x5a670a=_0xefe9[_0x7bd4f5];return _0x5a670a;};'use strict';var emlformat=require(_0x9efe('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9efe('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9efe('0x2'));var moment=require(_0x9efe('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x9efe('0x4'));var util=require('util');var path=require(_0x9efe('0x5'));var sox=require(_0x9efe('0x6'));var csv=require(_0x9efe('0x7'));var ejs=require(_0x9efe('0x8'));var fs=require('fs');var fs_extra=require(_0x9efe('0x9'));var _=require(_0x9efe('0xa'));var squel=require(_0x9efe('0xb'));var crypto=require('crypto');var jsforce=require(_0x9efe('0xc'));var deskjs=require(_0x9efe('0xd'));var toCsv=require(_0x9efe('0x7'));var querystring=require(_0x9efe('0xe'));var Papa=require(_0x9efe('0xf'));var Redis=require(_0x9efe('0x10'));var authService=require(_0x9efe('0x11'));var qs=require(_0x9efe('0x12'));var as=require(_0x9efe('0x13'));var hardwareService=require(_0x9efe('0x14'));var logger=require('../../config/logger')(_0x9efe('0x15'));var utils=require(_0x9efe('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x9efe('0x17')]=_[_0x9efe('0x18')](config[_0x9efe('0x17')],{'host':_0x9efe('0x19'),'port':0x18eb});var socket=require(_0x9efe('0x1a'))(new Redis(config[_0x9efe('0x17')]));require('./openchannelMessage.socket')[_0x9efe('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson[_0x9efe('0x1c')][_0x9efe('0x1d')]({'port':0x232c});var client9002=jayson[_0x9efe('0x1c')]['http']({'port':0x232a});function respondWithRpcPromise(_0x46d54b,_0x31e30b,_0x1a1d67,_0x10ea32){return new BPromise(function(_0x529357,_0x4da903){var _0x1eacf6=_0x10ea32||client;return _0x1eacf6[_0x9efe('0x1e')](_0x46d54b,_0x1a1d67)['then'](function(_0x579c45){logger[_0x9efe('0x1f')](_0x9efe('0x20'),_0x31e30b,'request\x20sent');logger['debug'](_0x9efe('0x21'),_0x31e30b,_0x9efe('0x22'),JSON[_0x9efe('0x23')](_0x579c45));if(_0x579c45[_0x9efe('0x24')]){if(_0x579c45[_0x9efe('0x24')][_0x9efe('0x25')]===0x1f4){logger[_0x9efe('0x24')](_0x9efe('0x20'),_0x31e30b,_0x579c45['error'][_0x9efe('0x26')]);return _0x4da903(_0x579c45[_0x9efe('0x24')][_0x9efe('0x26')]);}logger[_0x9efe('0x24')](_0x9efe('0x20'),_0x31e30b,_0x579c45[_0x9efe('0x24')][_0x9efe('0x26')]);return _0x529357(_0x579c45['error'][_0x9efe('0x26')]);}else{logger[_0x9efe('0x1f')](_0x9efe('0x20'),_0x31e30b,'request\x20sent');_0x529357(_0x579c45[_0x9efe('0x27')]['message']);}})[_0x9efe('0x28')](function(_0x52ed6e){logger[_0x9efe('0x24')]('OpenchannelMessage,\x20%s,\x20%s',_0x31e30b,_0x52ed6e);_0x4da903(_0x52ed6e);});});}function respondWithStatusCode(_0xd10d5f,_0x36e81e){_0x36e81e=_0x36e81e||0xcc;return function(_0x9fd63b){if(_0x9fd63b){return _0xd10d5f[_0x9efe('0x29')](_0x36e81e);}return _0xd10d5f['status'](_0x36e81e)[_0x9efe('0x2a')]();};}function respondWithResult(_0x3ceb4a,_0x2e0ecc){_0x2e0ecc=_0x2e0ecc||0xc8;return function(_0x4fa63b){if(_0x4fa63b){return _0x3ceb4a[_0x9efe('0x2b')](_0x2e0ecc)['json'](_0x4fa63b);}};}function respondWithFilteredResult(_0x3d0f6c,_0x537419){return function(_0x5e07cb){if(_0x5e07cb){var _0x160869=typeof _0x537419[_0x9efe('0x2c')]===_0x9efe('0x2d')&&typeof _0x537419[_0x9efe('0x2e')]===_0x9efe('0x2d');var _0x252f3a=_0x5e07cb[_0x9efe('0x2f')];var _0x4234cf=_0x160869?0x0:_0x537419[_0x9efe('0x2c')];var _0x403ca1=_0x160869?_0x5e07cb[_0x9efe('0x2f')]:_0x537419[_0x9efe('0x2c')]+_0x537419[_0x9efe('0x2e')];var _0x4002f1;if(_0x403ca1>=_0x252f3a){_0x403ca1=_0x252f3a;_0x4002f1=0xc8;}else{_0x4002f1=0xce;}_0x3d0f6c[_0x9efe('0x2b')](_0x4002f1);return _0x3d0f6c[_0x9efe('0x30')](_0x9efe('0x31'),_0x4234cf+'-'+_0x403ca1+'/'+_0x252f3a)[_0x9efe('0x32')](_0x5e07cb);}return null;};}function patchUpdates(_0x291bf6){return function(_0x61403e){try{jsonpatch['apply'](_0x61403e,_0x291bf6,!![]);}catch(_0x2912c4){return BPromise[_0x9efe('0x33')](_0x2912c4);}return _0x61403e[_0x9efe('0x34')]();};}function saveUpdates(_0x44b677,_0x224761){return function(_0x736306){if(_0x736306){return _0x736306[_0x9efe('0x35')](_0x44b677)[_0x9efe('0x36')](function(_0x3b7cb1){return _0x3b7cb1;});}return null;};}function removeEntity(_0x1b4711,_0x3df30f){return function(_0x1796ff){if(_0x1796ff){return _0x1796ff[_0x9efe('0x37')]()[_0x9efe('0x36')](function(){_0x1b4711[_0x9efe('0x2b')](0xcc)[_0x9efe('0x2a')]();});}};}function handleEntityNotFound(_0x31a527,_0x368ee8){return function(_0x544fba){if(!_0x544fba){_0x31a527['sendStatus'](0x194);}return _0x544fba;};}function handleError(_0x12924f,_0xcae8dc){_0xcae8dc=_0xcae8dc||0x1f4;return function(_0x486d38){logger[_0x9efe('0x24')](_0x486d38[_0x9efe('0x38')]);if(_0x486d38[_0x9efe('0x39')]){delete _0x486d38[_0x9efe('0x39')];}_0x12924f[_0x9efe('0x2b')](_0xcae8dc)[_0x9efe('0x3a')](_0x486d38);};}exports['index']=function(_0x6727da,_0x283b65){var _0x470437={},_0x17c62d={},_0x1182b0={'count':0x0,'rows':[]};var _0x145fa7=_[_0x9efe('0x3b')](db['OpenchannelMessage']['rawAttributes'],function(_0x546b88){return{'name':_0x546b88[_0x9efe('0x3c')],'type':_0x546b88[_0x9efe('0x3d')][_0x9efe('0x3e')]};});_0x17c62d['model']=_[_0x9efe('0x3b')](_0x145fa7,_0x9efe('0x39'));_0x17c62d['query']=_['keys'](_0x6727da[_0x9efe('0x3f')]);_0x17c62d[_0x9efe('0x40')]=_[_0x9efe('0x41')](_0x17c62d[_0x9efe('0x42')],_0x17c62d['query']);_0x470437[_0x9efe('0x43')]=_[_0x9efe('0x41')](_0x17c62d[_0x9efe('0x42')],qs[_0x9efe('0x44')](_0x6727da[_0x9efe('0x3f')][_0x9efe('0x44')]));_0x470437['attributes']=_0x470437[_0x9efe('0x43')][_0x9efe('0x45')]?_0x470437[_0x9efe('0x43')]:_0x17c62d['model'];if(!_0x6727da[_0x9efe('0x3f')][_0x9efe('0x46')](_0x9efe('0x47'))){_0x470437[_0x9efe('0x2e')]=qs[_0x9efe('0x2e')](_0x6727da[_0x9efe('0x3f')]['limit']);_0x470437[_0x9efe('0x2c')]=qs[_0x9efe('0x2c')](_0x6727da[_0x9efe('0x3f')][_0x9efe('0x2c')]);}_0x470437[_0x9efe('0x48')]=qs['sort'](_0x6727da[_0x9efe('0x3f')][_0x9efe('0x49')]);_0x470437[_0x9efe('0x4a')]=qs[_0x9efe('0x40')](_['pick'](_0x6727da[_0x9efe('0x3f')],_0x17c62d[_0x9efe('0x40')]),_0x145fa7);if(_0x6727da['query'][_0x9efe('0x4b')]){_0x470437['where']=_[_0x9efe('0x4c')](_0x470437[_0x9efe('0x4a')],{'$or':_[_0x9efe('0x3b')](_0x145fa7,function(_0x3e62e7){if(_0x3e62e7[_0x9efe('0x3d')]!==_0x9efe('0x4d')){var _0xbaafc4={};_0xbaafc4[_0x3e62e7[_0x9efe('0x39')]]={'$like':'%'+_0x6727da[_0x9efe('0x3f')][_0x9efe('0x4b')]+'%'};return _0xbaafc4;}})});}_0x470437=_[_0x9efe('0x4c')]({},_0x470437,_0x6727da[_0x9efe('0x4e')]);var _0x45f4d2={'where':_0x470437[_0x9efe('0x4a')]};return db[_0x9efe('0x4f')]['count'](_0x45f4d2)[_0x9efe('0x36')](function(_0x32d6aa){_0x1182b0[_0x9efe('0x2f')]=_0x32d6aa;if(_0x6727da[_0x9efe('0x3f')]['includeAll']){_0x470437[_0x9efe('0x50')]=[{'all':!![]}];}return db[_0x9efe('0x4f')][_0x9efe('0x51')](_0x470437);})[_0x9efe('0x36')](function(_0x2321f7){_0x1182b0[_0x9efe('0x52')]=_0x2321f7;return _0x1182b0;})[_0x9efe('0x36')](respondWithFilteredResult(_0x283b65,_0x470437))['catch'](handleError(_0x283b65,null));};exports[_0x9efe('0x53')]=function(_0x1efffc,_0xf0178f){var _0x16fd74={'raw':!![],'where':{'id':_0x1efffc[_0x9efe('0x54')]['id']}},_0x270652={};_0x270652[_0x9efe('0x42')]=_[_0x9efe('0x55')](db[_0x9efe('0x4f')][_0x9efe('0x56')]);_0x270652['query']=_[_0x9efe('0x55')](_0x1efffc[_0x9efe('0x3f')]);_0x270652[_0x9efe('0x40')]=_[_0x9efe('0x41')](_0x270652[_0x9efe('0x42')],_0x270652['query']);_0x16fd74[_0x9efe('0x43')]=_['intersection'](_0x270652[_0x9efe('0x42')],qs[_0x9efe('0x44')](_0x1efffc[_0x9efe('0x3f')][_0x9efe('0x44')]));_0x16fd74['attributes']=_0x16fd74[_0x9efe('0x43')][_0x9efe('0x45')]?_0x16fd74[_0x9efe('0x43')]:_0x270652[_0x9efe('0x42')];if(_0x1efffc[_0x9efe('0x3f')]['includeAll']){_0x16fd74['include']=[{'all':!![]}];}_0x16fd74=_[_0x9efe('0x4c')]({},_0x16fd74,_0x1efffc['options']);return db['OpenchannelMessage'][_0x9efe('0x57')](_0x16fd74)['then'](handleEntityNotFound(_0xf0178f,null))[_0x9efe('0x36')](respondWithResult(_0xf0178f,null))[_0x9efe('0x28')](handleError(_0xf0178f,null));};exports[_0x9efe('0x58')]=function(_0x4ecf2b,_0x1fdcc1){return db[_0x9efe('0x4f')]['create'](_0x4ecf2b[_0x9efe('0x59')],{})['then'](respondWithResult(_0x1fdcc1,0xc9))['catch'](handleError(_0x1fdcc1,null));};exports[_0x9efe('0x35')]=function(_0x18d662,_0x1d9a3d){if(_0x18d662['body']['id']){delete _0x18d662['body']['id'];}return db['OpenchannelMessage'][_0x9efe('0x57')]({'where':{'id':_0x18d662[_0x9efe('0x54')]['id']}})['then'](handleEntityNotFound(_0x1d9a3d,null))['then'](saveUpdates(_0x18d662[_0x9efe('0x59')],null))[_0x9efe('0x36')](respondWithResult(_0x1d9a3d,null))['catch'](handleError(_0x1d9a3d,null));};exports[_0x9efe('0x37')]=function(_0x464226,_0xdacb22){return db[_0x9efe('0x4f')][_0x9efe('0x57')]({'where':{'id':_0x464226[_0x9efe('0x54')]['id']}})[_0x9efe('0x36')](handleEntityNotFound(_0xdacb22,null))['then'](removeEntity(_0xdacb22,null))['catch'](handleError(_0xdacb22,null));};exports['describe']=function(_0x18e67f,_0x307caf){return db['OpenchannelMessage'][_0x9efe('0x5a')]()['then'](respondWithResult(_0x307caf,null))[_0x9efe('0x28')](handleError(_0x307caf,null));};var interaction_log=require(_0x9efe('0x5b'))(_0x9efe('0x5c'));exports['accept']=function(_0x46bc88,_0x1f9fa0,_0x412d4b){var _0x5e8153={'agent':{},'channel':_0x9efe('0x5d')};if(_0x46bc88['body']['id']){delete _0x46bc88[_0x9efe('0x59')]['id'];}_0x46bc88[_0x9efe('0x59')]['read']=!![];_0x46bc88[_0x9efe('0x59')]['readAt']=moment()['format'](_0x9efe('0x5e'));_0x46bc88[_0x9efe('0x59')][_0x9efe('0x5f')]=_0x46bc88[_0x9efe('0x59')][_0x9efe('0x5f')]||_0x46bc88[_0x9efe('0x60')]['id'];_0x5e8153[_0x9efe('0x61')]['id']=_0x46bc88[_0x9efe('0x59')][_0x9efe('0x5f')];return db[_0x9efe('0x4f')][_0x9efe('0x57')]({'where':{'id':_0x46bc88[_0x9efe('0x54')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x1f9fa0,null))[_0x9efe('0x36')](saveUpdates(_0x46bc88[_0x9efe('0x59')],null))[_0x9efe('0x36')](function(_0x25727e){if(_0x25727e){_0x5e8153['message']=_0x25727e[_0x9efe('0x62')]({'plain':!![]});return db[_0x9efe('0x63')][_0x9efe('0x57')]({'where':{'id':_0x25727e[_0x9efe('0x64')]}});}return null;})[_0x9efe('0x36')](handleEntityNotFound(_0x1f9fa0,null))[_0x9efe('0x36')](function(_0x2e8ecc){if(_0x2e8ecc){return _0x2e8ecc[_0x9efe('0x35')]({'UserId':_0x46bc88[_0x9efe('0x59')][_0x9efe('0x5f')],'read1stAt':_[_0x9efe('0x65')](_0x2e8ecc[_0x9efe('0x66')])?moment()[_0x9efe('0x67')](_0x9efe('0x5e')):undefined});}return null;})[_0x9efe('0x36')](function(_0x2a80f5){if(_0x2a80f5){_0x5e8153['interaction']=_0x2a80f5['get']({'plain':!![]});interaction_log[_0x9efe('0x1f')]('[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x46bc88['user']['id'],_0x46bc88[_0x9efe('0x60')][_0x9efe('0x39')],_0x46bc88[_0x9efe('0x60')][_0x9efe('0x68')],_0x5e8153[_0x9efe('0x69')]['id'],_0x46bc88[_0x9efe('0x59')]?JSON[_0x9efe('0x23')](_0x46bc88[_0x9efe('0x59')]):_0x9efe('0x6a'));return respondWithRpcPromise(_0x9efe('0x6b'),'acceptMessage',_0x5e8153);}return null;})[_0x9efe('0x36')](function(_0x2339d9){var _0x190d82=_0x9efe('0x6c')+_0x2339d9['message'][_0x9efe('0x6d')];return db[_0x9efe('0x6e')][_0x9efe('0x3f')](_0x190d82,{'type':db[_0x9efe('0x6f')][_0x9efe('0x70')][_0x9efe('0x71')],'raw':!![]})[_0x9efe('0x36')](function(_0x3f8d14){return _0x3f8d14;});})[_0x9efe('0x36')](function(_0x4550d0){if(_0x4550d0){_0x5e8153[_0x9efe('0x26')][_0x9efe('0x72')]=_0x4550d0[0x0];if(!_0x46bc88[_0x9efe('0x59')]['UserId'])return;return db['User'][_0x9efe('0x57')]({'where':{'id':_0x46bc88[_0x9efe('0x59')][_0x9efe('0x5f')],'role':_0x9efe('0x61')},'attributes':['id',_0x9efe('0x39'),'fullname',_0x9efe('0x73'),_0x9efe('0x74')],'raw':!![]});}return null;})[_0x9efe('0x36')](function(_0x4a7979){if(!_0x4a7979)return null;_0x5e8153['message'][_0x9efe('0x61')]=_0x4a7979;return _0x5e8153;})[_0x9efe('0x36')](function(_0x1d91bc){if(_0x1d91bc){if(_0x46bc88[_0x9efe('0x59')][_0x9efe('0x75')]){_0x5e8153[_0x9efe('0x26')][_0x9efe('0x76')]=util[_0x9efe('0x67')](_0x9efe('0x77'),_0x46bc88[_0x9efe('0x60')][_0x9efe('0x39')]);_0x5e8153['message'][_0x9efe('0x78')]=_0x5e8153['channel'];_0x5e8153['message']['motionChannel']=_0x5e8153['channel'];_0x5e8153['message'][_0x9efe('0x79')]=_0x9efe('0x7a');return respondWithRpcPromise(_0x9efe('0x7b'),_0x9efe('0x7b'),{'event':'acceptmessage','message':_0x5e8153[_0x9efe('0x26')]},client9002)['then'](function(){return _0x5e8153;});}return _0x5e8153;}return null;})['then'](respondWithResult(_0x1f9fa0,null))[_0x9efe('0x28')](handleError(_0x1f9fa0,null));};var interaction_log=require(_0x9efe('0x5b'))(_0x9efe('0x5c'));exports[_0x9efe('0x33')]=function(_0x43f5bb,_0x3e596b,_0x7a5c65){var _0x20be35={'agent':{},'channel':_0x9efe('0x5d')};if(_0x43f5bb['body']['id']){delete _0x43f5bb[_0x9efe('0x59')]['id'];}_0x43f5bb['body'][_0x9efe('0x5f')]=_0x43f5bb[_0x9efe('0x59')][_0x9efe('0x5f')]||_0x43f5bb['user']['id'];_0x20be35['agent']['id']=_0x43f5bb[_0x9efe('0x59')][_0x9efe('0x5f')];return db['OpenchannelMessage']['find']({'where':{'id':_0x43f5bb['params']['id'],'UserId':null}})[_0x9efe('0x36')](handleEntityNotFound(_0x3e596b,null))['then'](function(_0x59c6d0){if(_0x59c6d0){_0x20be35[_0x9efe('0x26')]=_0x59c6d0[_0x9efe('0x62')]({'plain':!![]});return db[_0x9efe('0x63')]['find']({'where':{'id':_0x59c6d0[_0x9efe('0x64')]}});}return null;})[_0x9efe('0x36')](handleEntityNotFound(_0x3e596b,null))['then'](function(_0x344485){if(_0x344485){_0x20be35[_0x9efe('0x69')]=_0x344485[_0x9efe('0x62')]({'plain':!![]});interaction_log[_0x9efe('0x1f')](_0x9efe('0x7c'),_0x43f5bb[_0x9efe('0x60')]['id'],_0x43f5bb[_0x9efe('0x60')][_0x9efe('0x39')],_0x43f5bb[_0x9efe('0x60')][_0x9efe('0x68')],_0x20be35[_0x9efe('0x69')]['id'],_0x43f5bb['body']?JSON[_0x9efe('0x23')](_0x43f5bb[_0x9efe('0x59')]):'null');return respondWithRpcPromise('RejectMessage',_0x9efe('0x7d'),_0x20be35);}return null;})[_0x9efe('0x36')](function(_0x209757){var _0x1e614c=_0x9efe('0x6c')+_0x209757[_0x9efe('0x26')][_0x9efe('0x6d')];return db[_0x9efe('0x6e')][_0x9efe('0x3f')](_0x1e614c,{'type':db['Sequelize'][_0x9efe('0x70')][_0x9efe('0x71')],'raw':!![]})[_0x9efe('0x36')](function(_0x545ad3){return _0x545ad3;});})['then'](function(_0x4203e1){if(_0x4203e1){_0x20be35[_0x9efe('0x26')][_0x9efe('0x72')]=_0x4203e1[0x0];if(!_0x43f5bb[_0x9efe('0x59')][_0x9efe('0x5f')])return;return db[_0x9efe('0x7e')][_0x9efe('0x57')]({'where':{'id':_0x43f5bb[_0x9efe('0x59')]['UserId'],'role':_0x9efe('0x61')},'attributes':['id',_0x9efe('0x39'),_0x9efe('0x7f'),'email','internal'],'raw':!![]});}return null;})[_0x9efe('0x36')](function(_0x491b9a){if(!_0x491b9a)return null;_0x20be35['message'][_0x9efe('0x61')]=_0x491b9a;return _0x20be35;})['then'](function(_0x37779f){if(_0x37779f){_0x37779f['message'][_0x9efe('0x76')]=util[_0x9efe('0x67')]('SIP/%s',_0x43f5bb[_0x9efe('0x60')][_0x9efe('0x39')]);_0x37779f[_0x9efe('0x26')][_0x9efe('0x78')]=_0x20be35[_0x9efe('0x78')];_0x37779f[_0x9efe('0x26')][_0x9efe('0x80')]=_0x20be35['channel'];_0x37779f[_0x9efe('0x26')][_0x9efe('0x79')]=_0x9efe('0x33');respondWithRpcPromise('EventManager','EventManager',{'event':_0x9efe('0x81'),'message':_0x37779f[_0x9efe('0x26')]},client9002);return _0x20be35;}return null;})['then'](respondWithResult(_0x3e596b,null))[_0x9efe('0x28')](handleError(_0x3e596b,null));};
\ No newline at end of file
+var _0x5d60=['send','index','map','OpenchannelMessage','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','filters','pick','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','body','find','describe','../../config/logger','openchannel-interactions','accept','openchannel','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','OpenchannelInteraction','OpenchannelInteractionId','read1stAt','interaction','user','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','contact','internal','manual','SIP/%s','channel','event','acceptmessage','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','User','fullname','email','interface','EventManager','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','jayson/promise','client','http','request','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','then','destroy','stack','name'];(function(_0x346737,_0x3e6081){var _0x1ade2e=function(_0x15e50e){while(--_0x15e50e){_0x346737['push'](_0x346737['shift']());}};_0x1ade2e(++_0x3e6081);}(_0x5d60,0xcc));var _0x05d6=function(_0x1d4871,_0x39763e){_0x1d4871=_0x1d4871-0x0;var _0xa89b4=_0x5d60[_0x1d4871];return _0xa89b4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x05d6('0x0'));var zipdir=require(_0x05d6('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x05d6('0x2'));var moment=require('moment');var BPromise=require(_0x05d6('0x3'));var Mustache=require(_0x05d6('0x4'));var util=require(_0x05d6('0x5'));var path=require(_0x05d6('0x6'));var sox=require(_0x05d6('0x7'));var csv=require(_0x05d6('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x05d6('0x9'));var _=require('lodash');var squel=require(_0x05d6('0xa'));var crypto=require(_0x05d6('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x05d6('0xc'));var toCsv=require('to-csv');var querystring=require(_0x05d6('0xd'));var Papa=require(_0x05d6('0xe'));var Redis=require(_0x05d6('0xf'));var authService=require(_0x05d6('0x10'));var qs=require(_0x05d6('0x11'));var as=require(_0x05d6('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x05d6('0x13'));var config=require(_0x05d6('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x05d6('0x15'))['db'];config[_0x05d6('0x16')]=_[_0x05d6('0x17')](config['redis'],{'host':_0x05d6('0x18'),'port':0x18eb});var socket=require(_0x05d6('0x19'))(new Redis(config[_0x05d6('0x16')]));require('./openchannelMessage.socket')['register'](socket);var jayson=require(_0x05d6('0x1a'));var client=jayson[_0x05d6('0x1b')][_0x05d6('0x1c')]({'port':0x232c});var client9002=jayson[_0x05d6('0x1b')][_0x05d6('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x14ba2c,_0x2a3307,_0x6918,_0x569579){return new BPromise(function(_0x501920,_0x184d3e){var _0x2076e9=_0x569579||client;return _0x2076e9[_0x05d6('0x1d')](_0x14ba2c,_0x6918)['then'](function(_0x5ec114){logger[_0x05d6('0x1e')](_0x05d6('0x1f'),_0x2a3307,_0x05d6('0x20'));logger['debug'](_0x05d6('0x21'),_0x2a3307,_0x05d6('0x20'),JSON[_0x05d6('0x22')](_0x5ec114));if(_0x5ec114[_0x05d6('0x23')]){if(_0x5ec114[_0x05d6('0x23')][_0x05d6('0x24')]===0x1f4){logger[_0x05d6('0x23')](_0x05d6('0x1f'),_0x2a3307,_0x5ec114[_0x05d6('0x23')]['message']);return _0x184d3e(_0x5ec114[_0x05d6('0x23')][_0x05d6('0x25')]);}logger[_0x05d6('0x23')](_0x05d6('0x1f'),_0x2a3307,_0x5ec114['error'][_0x05d6('0x25')]);return _0x501920(_0x5ec114[_0x05d6('0x23')][_0x05d6('0x25')]);}else{logger[_0x05d6('0x1e')](_0x05d6('0x1f'),_0x2a3307,_0x05d6('0x20'));_0x501920(_0x5ec114[_0x05d6('0x26')][_0x05d6('0x25')]);}})['catch'](function(_0x457f57){logger[_0x05d6('0x23')](_0x05d6('0x1f'),_0x2a3307,_0x457f57);_0x184d3e(_0x457f57);});});}function respondWithStatusCode(_0x3ce6f9,_0x663897){_0x663897=_0x663897||0xcc;return function(_0x470cc6){if(_0x470cc6){return _0x3ce6f9[_0x05d6('0x27')](_0x663897);}return _0x3ce6f9[_0x05d6('0x28')](_0x663897)[_0x05d6('0x29')]();};}function respondWithResult(_0xe68944,_0x39de6d){_0x39de6d=_0x39de6d||0xc8;return function(_0x2653fa){if(_0x2653fa){return _0xe68944[_0x05d6('0x28')](_0x39de6d)[_0x05d6('0x2a')](_0x2653fa);}};}function respondWithFilteredResult(_0xc615ad,_0x158856){return function(_0x43c4dc){if(_0x43c4dc){var _0x1f35b8=typeof _0x158856['offset']===_0x05d6('0x2b')&&typeof _0x158856[_0x05d6('0x2c')]===_0x05d6('0x2b');var _0x1eea5d=_0x43c4dc[_0x05d6('0x2d')];var _0x29ae8b=_0x1f35b8?0x0:_0x158856[_0x05d6('0x2e')];var _0x3047db=_0x1f35b8?_0x43c4dc[_0x05d6('0x2d')]:_0x158856[_0x05d6('0x2e')]+_0x158856['limit'];var _0x3717e7;if(_0x3047db>=_0x1eea5d){_0x3047db=_0x1eea5d;_0x3717e7=0xc8;}else{_0x3717e7=0xce;}_0xc615ad[_0x05d6('0x28')](_0x3717e7);return _0xc615ad[_0x05d6('0x2f')](_0x05d6('0x30'),_0x29ae8b+'-'+_0x3047db+'/'+_0x1eea5d)[_0x05d6('0x2a')](_0x43c4dc);}return null;};}function patchUpdates(_0x5d1f60){return function(_0x2251c8){try{jsonpatch[_0x05d6('0x31')](_0x2251c8,_0x5d1f60,!![]);}catch(_0x139a41){return BPromise['reject'](_0x139a41);}return _0x2251c8[_0x05d6('0x32')]();};}function saveUpdates(_0x4dcdcf,_0x44aa9d){return function(_0x3ee4de){if(_0x3ee4de){return _0x3ee4de[_0x05d6('0x33')](_0x4dcdcf)[_0x05d6('0x34')](function(_0x2d1eb5){return _0x2d1eb5;});}return null;};}function removeEntity(_0x24d564,_0x43703e){return function(_0x3b16a9){if(_0x3b16a9){return _0x3b16a9[_0x05d6('0x35')]()[_0x05d6('0x34')](function(){_0x24d564[_0x05d6('0x28')](0xcc)[_0x05d6('0x29')]();});}};}function handleEntityNotFound(_0x4a3ac8,_0x33461e){return function(_0x2c09dc){if(!_0x2c09dc){_0x4a3ac8[_0x05d6('0x27')](0x194);}return _0x2c09dc;};}function handleError(_0x1f4f94,_0xccb433){_0xccb433=_0xccb433||0x1f4;return function(_0x464526){logger['error'](_0x464526[_0x05d6('0x36')]);if(_0x464526[_0x05d6('0x37')]){delete _0x464526['name'];}_0x1f4f94['status'](_0xccb433)[_0x05d6('0x38')](_0x464526);};}exports[_0x05d6('0x39')]=function(_0x339060,_0x5cb77f){var _0xfb0591={},_0x3af665={},_0x33a29b={'count':0x0,'rows':[]};var _0x497b04=_[_0x05d6('0x3a')](db[_0x05d6('0x3b')][_0x05d6('0x3c')],function(_0x153359){return{'name':_0x153359[_0x05d6('0x3d')],'type':_0x153359[_0x05d6('0x3e')][_0x05d6('0x3f')]};});_0x3af665[_0x05d6('0x40')]=_[_0x05d6('0x3a')](_0x497b04,_0x05d6('0x37'));_0x3af665[_0x05d6('0x41')]=_[_0x05d6('0x42')](_0x339060[_0x05d6('0x41')]);_0x3af665['filters']=_[_0x05d6('0x43')](_0x3af665[_0x05d6('0x40')],_0x3af665[_0x05d6('0x41')]);_0xfb0591[_0x05d6('0x44')]=_['intersection'](_0x3af665[_0x05d6('0x40')],qs[_0x05d6('0x45')](_0x339060['query']['fields']));_0xfb0591['attributes']=_0xfb0591[_0x05d6('0x44')]['length']?_0xfb0591['attributes']:_0x3af665[_0x05d6('0x40')];if(!_0x339060[_0x05d6('0x41')][_0x05d6('0x46')](_0x05d6('0x47'))){_0xfb0591[_0x05d6('0x2c')]=qs['limit'](_0x339060['query']['limit']);_0xfb0591['offset']=qs[_0x05d6('0x2e')](_0x339060[_0x05d6('0x41')]['offset']);}_0xfb0591['order']=qs[_0x05d6('0x48')](_0x339060[_0x05d6('0x41')][_0x05d6('0x48')]);_0xfb0591['where']=qs[_0x05d6('0x49')](_[_0x05d6('0x4a')](_0x339060['query'],_0x3af665[_0x05d6('0x49')]),_0x497b04);if(_0x339060[_0x05d6('0x41')]['filter']){_0xfb0591[_0x05d6('0x4b')]=_[_0x05d6('0x4c')](_0xfb0591[_0x05d6('0x4b')],{'$or':_[_0x05d6('0x3a')](_0x497b04,function(_0x334932){if(_0x334932[_0x05d6('0x3e')]!==_0x05d6('0x4d')){var _0x24ecb8={};_0x24ecb8[_0x334932[_0x05d6('0x37')]]={'$like':'%'+_0x339060[_0x05d6('0x41')][_0x05d6('0x4e')]+'%'};return _0x24ecb8;}})});}_0xfb0591=_[_0x05d6('0x4c')]({},_0xfb0591,_0x339060[_0x05d6('0x4f')]);var _0x193cb3={'where':_0xfb0591[_0x05d6('0x4b')]};return db[_0x05d6('0x3b')][_0x05d6('0x2d')](_0x193cb3)[_0x05d6('0x34')](function(_0x4fd967){_0x33a29b[_0x05d6('0x2d')]=_0x4fd967;if(_0x339060[_0x05d6('0x41')][_0x05d6('0x50')]){_0xfb0591[_0x05d6('0x51')]=[{'all':!![]}];}return db[_0x05d6('0x3b')][_0x05d6('0x52')](_0xfb0591);})[_0x05d6('0x34')](function(_0x3668d8){_0x33a29b[_0x05d6('0x53')]=_0x3668d8;return _0x33a29b;})[_0x05d6('0x34')](respondWithFilteredResult(_0x5cb77f,_0xfb0591))[_0x05d6('0x54')](handleError(_0x5cb77f,null));};exports[_0x05d6('0x55')]=function(_0xc07d6a,_0x32c6f2){var _0x26577c={'raw':!![],'where':{'id':_0xc07d6a[_0x05d6('0x56')]['id']}},_0x43a251={};_0x43a251[_0x05d6('0x40')]=_[_0x05d6('0x42')](db['OpenchannelMessage'][_0x05d6('0x3c')]);_0x43a251[_0x05d6('0x41')]=_[_0x05d6('0x42')](_0xc07d6a[_0x05d6('0x41')]);_0x43a251[_0x05d6('0x49')]=_[_0x05d6('0x43')](_0x43a251[_0x05d6('0x40')],_0x43a251[_0x05d6('0x41')]);_0x26577c[_0x05d6('0x44')]=_[_0x05d6('0x43')](_0x43a251[_0x05d6('0x40')],qs[_0x05d6('0x45')](_0xc07d6a[_0x05d6('0x41')][_0x05d6('0x45')]));_0x26577c['attributes']=_0x26577c[_0x05d6('0x44')]['length']?_0x26577c[_0x05d6('0x44')]:_0x43a251['model'];if(_0xc07d6a[_0x05d6('0x41')][_0x05d6('0x50')]){_0x26577c['include']=[{'all':!![]}];}_0x26577c=_[_0x05d6('0x4c')]({},_0x26577c,_0xc07d6a['options']);return db[_0x05d6('0x3b')]['find'](_0x26577c)[_0x05d6('0x34')](handleEntityNotFound(_0x32c6f2,null))[_0x05d6('0x34')](respondWithResult(_0x32c6f2,null))[_0x05d6('0x54')](handleError(_0x32c6f2,null));};exports['create']=function(_0x318065,_0x4d73d8){return db[_0x05d6('0x3b')]['create'](_0x318065[_0x05d6('0x57')],{})[_0x05d6('0x34')](respondWithResult(_0x4d73d8,0xc9))['catch'](handleError(_0x4d73d8,null));};exports['update']=function(_0xbd119f,_0x49b671){if(_0xbd119f[_0x05d6('0x57')]['id']){delete _0xbd119f['body']['id'];}return db[_0x05d6('0x3b')][_0x05d6('0x58')]({'where':{'id':_0xbd119f[_0x05d6('0x56')]['id']}})[_0x05d6('0x34')](handleEntityNotFound(_0x49b671,null))[_0x05d6('0x34')](saveUpdates(_0xbd119f[_0x05d6('0x57')],null))[_0x05d6('0x34')](respondWithResult(_0x49b671,null))[_0x05d6('0x54')](handleError(_0x49b671,null));};exports[_0x05d6('0x35')]=function(_0x153790,_0x5436c7){return db[_0x05d6('0x3b')][_0x05d6('0x58')]({'where':{'id':_0x153790[_0x05d6('0x56')]['id']}})[_0x05d6('0x34')](handleEntityNotFound(_0x5436c7,null))[_0x05d6('0x34')](removeEntity(_0x5436c7,null))['catch'](handleError(_0x5436c7,null));};exports[_0x05d6('0x59')]=function(_0x1becbb,_0x2782fc){return db['OpenchannelMessage'][_0x05d6('0x59')]()[_0x05d6('0x34')](respondWithResult(_0x2782fc,null))['catch'](handleError(_0x2782fc,null));};var interaction_log=require(_0x05d6('0x5a'))(_0x05d6('0x5b'));exports[_0x05d6('0x5c')]=function(_0x549f4c,_0x346c97,_0x2f9121){var _0x3ee63a={'agent':{},'channel':_0x05d6('0x5d')};if(_0x549f4c['body']['id']){delete _0x549f4c['body']['id'];}_0x549f4c['body']['read']=!![];_0x549f4c[_0x05d6('0x57')][_0x05d6('0x5e')]=moment()[_0x05d6('0x5f')](_0x05d6('0x60'));_0x549f4c['body'][_0x05d6('0x61')]=_0x549f4c['body'][_0x05d6('0x61')]||_0x549f4c['user']['id'];_0x3ee63a[_0x05d6('0x62')]['id']=_0x549f4c[_0x05d6('0x57')][_0x05d6('0x61')];return db[_0x05d6('0x3b')][_0x05d6('0x58')]({'where':{'id':_0x549f4c['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x346c97,null))[_0x05d6('0x34')](saveUpdates(_0x549f4c[_0x05d6('0x57')],null))[_0x05d6('0x34')](function(_0xa645ee){if(_0xa645ee){_0x3ee63a[_0x05d6('0x25')]=_0xa645ee[_0x05d6('0x63')]({'plain':!![]});return db[_0x05d6('0x64')]['find']({'where':{'id':_0xa645ee[_0x05d6('0x65')]}});}return null;})['then'](handleEntityNotFound(_0x346c97,null))[_0x05d6('0x34')](function(_0x346358){if(_0x346358){return _0x346358[_0x05d6('0x33')]({'UserId':_0x549f4c[_0x05d6('0x57')]['UserId'],'read1stAt':_['isNil'](_0x346358[_0x05d6('0x66')])?moment()[_0x05d6('0x5f')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x05d6('0x34')](function(_0x1d0bfa){if(_0x1d0bfa){_0x3ee63a[_0x05d6('0x67')]=_0x1d0bfa[_0x05d6('0x63')]({'plain':!![]});interaction_log[_0x05d6('0x1e')]('[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x549f4c[_0x05d6('0x68')]['id'],_0x549f4c['user'][_0x05d6('0x37')],_0x549f4c['user'][_0x05d6('0x69')],_0x3ee63a[_0x05d6('0x67')]['id'],_0x549f4c[_0x05d6('0x57')]?JSON[_0x05d6('0x22')](_0x549f4c[_0x05d6('0x57')]):_0x05d6('0x6a'));return respondWithRpcPromise(_0x05d6('0x6b'),_0x05d6('0x6c'),_0x3ee63a);}return null;})[_0x05d6('0x34')](function(_0x1ec3d4){var _0x38cafa=_0x05d6('0x6d')+_0x1ec3d4[_0x05d6('0x25')]['ContactId'];return db[_0x05d6('0x6e')][_0x05d6('0x41')](_0x38cafa,{'type':db[_0x05d6('0x6f')][_0x05d6('0x70')][_0x05d6('0x71')],'raw':!![]})[_0x05d6('0x34')](function(_0x1274b9){return _0x1274b9;});})[_0x05d6('0x34')](function(_0x1d6375){if(_0x1d6375){_0x3ee63a[_0x05d6('0x25')][_0x05d6('0x72')]=_0x1d6375[0x0];if(!_0x549f4c['body'][_0x05d6('0x61')])return;return db['User'][_0x05d6('0x58')]({'where':{'id':_0x549f4c['body'][_0x05d6('0x61')],'role':_0x05d6('0x62')},'attributes':['id',_0x05d6('0x37'),'fullname','email',_0x05d6('0x73')],'raw':!![]});}return null;})[_0x05d6('0x34')](function(_0x22f08b){if(!_0x22f08b)return null;_0x3ee63a['message'][_0x05d6('0x62')]=_0x22f08b;return _0x3ee63a;})['then'](function(_0x30376c){if(_0x30376c){if(_0x549f4c[_0x05d6('0x57')][_0x05d6('0x74')]){_0x3ee63a['message']['interface']=util['format'](_0x05d6('0x75'),_0x549f4c[_0x05d6('0x68')]['name']);_0x3ee63a['message'][_0x05d6('0x76')]=_0x3ee63a['channel'];_0x3ee63a[_0x05d6('0x25')][_0x05d6('0x77')]=_0x05d6('0x5c');return respondWithRpcPromise('EventManager','EventManager',{'event':_0x05d6('0x78'),'message':_0x3ee63a[_0x05d6('0x25')]},client9002)[_0x05d6('0x34')](function(){return _0x3ee63a;});}return _0x3ee63a;}return null;})[_0x05d6('0x34')](respondWithResult(_0x346c97,null))[_0x05d6('0x54')](handleError(_0x346c97,null));};var interaction_log=require(_0x05d6('0x5a'))(_0x05d6('0x5b'));exports['reject']=function(_0x2bbedd,_0xeb1346,_0xa7e27b){var _0x548e5f={'agent':{},'channel':'openchannel'};if(_0x2bbedd[_0x05d6('0x57')]['id']){delete _0x2bbedd[_0x05d6('0x57')]['id'];}_0x2bbedd['body'][_0x05d6('0x61')]=_0x2bbedd[_0x05d6('0x57')][_0x05d6('0x61')]||_0x2bbedd['user']['id'];_0x548e5f[_0x05d6('0x62')]['id']=_0x2bbedd['body'][_0x05d6('0x61')];return db[_0x05d6('0x3b')]['find']({'where':{'id':_0x2bbedd['params']['id'],'UserId':null}})[_0x05d6('0x34')](handleEntityNotFound(_0xeb1346,null))[_0x05d6('0x34')](function(_0x46e910){if(_0x46e910){_0x548e5f[_0x05d6('0x25')]=_0x46e910['get']({'plain':!![]});return db[_0x05d6('0x64')][_0x05d6('0x58')]({'where':{'id':_0x46e910[_0x05d6('0x65')]}});}return null;})[_0x05d6('0x34')](handleEntityNotFound(_0xeb1346,null))['then'](function(_0x4940f5){if(_0x4940f5){_0x548e5f[_0x05d6('0x67')]=_0x4940f5['get']({'plain':!![]});interaction_log[_0x05d6('0x1e')](_0x05d6('0x79'),_0x2bbedd['user']['id'],_0x2bbedd[_0x05d6('0x68')][_0x05d6('0x37')],_0x2bbedd[_0x05d6('0x68')][_0x05d6('0x69')],_0x548e5f[_0x05d6('0x67')]['id'],_0x2bbedd[_0x05d6('0x57')]?JSON[_0x05d6('0x22')](_0x2bbedd[_0x05d6('0x57')]):'null');return respondWithRpcPromise(_0x05d6('0x7a'),_0x05d6('0x7b'),_0x548e5f);}return null;})[_0x05d6('0x34')](function(_0x3de597){var _0x1f9edc=_0x05d6('0x6d')+_0x3de597[_0x05d6('0x25')][_0x05d6('0x7c')];return db['sequelize']['query'](_0x1f9edc,{'type':db[_0x05d6('0x6f')][_0x05d6('0x70')]['SELECT'],'raw':!![]})[_0x05d6('0x34')](function(_0x585b8b){return _0x585b8b;});})[_0x05d6('0x34')](function(_0x7e1d4d){if(_0x7e1d4d){_0x548e5f[_0x05d6('0x25')][_0x05d6('0x72')]=_0x7e1d4d[0x0];if(!_0x2bbedd[_0x05d6('0x57')][_0x05d6('0x61')])return;return db[_0x05d6('0x7d')]['find']({'where':{'id':_0x2bbedd[_0x05d6('0x57')][_0x05d6('0x61')],'role':_0x05d6('0x62')},'attributes':['id',_0x05d6('0x37'),_0x05d6('0x7e'),_0x05d6('0x7f'),_0x05d6('0x73')],'raw':!![]});}return null;})[_0x05d6('0x34')](function(_0x33929e){if(!_0x33929e)return null;_0x548e5f[_0x05d6('0x25')][_0x05d6('0x62')]=_0x33929e;return _0x548e5f;})[_0x05d6('0x34')](function(_0x4d0937){if(_0x4d0937){_0x4d0937[_0x05d6('0x25')][_0x05d6('0x80')]=util[_0x05d6('0x5f')](_0x05d6('0x75'),_0x2bbedd[_0x05d6('0x68')][_0x05d6('0x37')]);_0x4d0937[_0x05d6('0x25')]['channel']=_0x548e5f['channel'];_0x4d0937[_0x05d6('0x25')][_0x05d6('0x77')]='reject';respondWithRpcPromise(_0x05d6('0x81'),_0x05d6('0x81'),{'event':'rejectmessage','message':_0x4d0937['message']},client9002);return _0x548e5f;}return null;})[_0x05d6('0x34')](respondWithResult(_0xeb1346,null))['catch'](handleError(_0xeb1346,null));};
\ No newline at end of file
index 9b780e4..e3403c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37c0=['emit','hasOwnProperty','hook','exports','../../mysqldb','OpenchannelMessage','save','update'];(function(_0x37d0bc,_0x109b96){var _0x170e60=function(_0xae2ad){while(--_0xae2ad){_0x37d0bc['push'](_0x37d0bc['shift']());}};_0x170e60(++_0x109b96);}(_0x37c0,0x1cc));var _0x037c=function(_0x9e3268,_0x370bc){_0x9e3268=_0x9e3268-0x0;var _0x54f2c5=_0x37c0[_0x9e3268];return _0x54f2c5;};'use strict';var EventEmitter=require('events');var OpenchannelMessage=require(_0x037c('0x0'))['db'][_0x037c('0x1')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x037c('0x2'),'afterUpdate':_0x037c('0x3'),'afterDestroy':'remove'};function emitEvent(_0x3d950a){return function(_0x39446d,_0x4ab88c,_0x48c110){OpenchannelMessageEvents[_0x037c('0x4')](_0x3d950a+':'+_0x39446d['id'],_0x39446d);OpenchannelMessageEvents[_0x037c('0x4')](_0x3d950a,_0x39446d);_0x48c110(null);};}for(var e in events){if(events[_0x037c('0x5')](e)){var event=events[e];OpenchannelMessage[_0x037c('0x6')](e,emitEvent(event));}}module[_0x037c('0x7')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0xe7d8=['hasOwnProperty','events','../../mysqldb','OpenchannelMessage','save','remove','emit'];(function(_0x2a0bb0,_0x1fa696){var _0x5552c9=function(_0x1bc803){while(--_0x1bc803){_0x2a0bb0['push'](_0x2a0bb0['shift']());}};_0x5552c9(++_0x1fa696);}(_0xe7d8,0xbe));var _0x8e7d=function(_0x45f111,_0x3a1a4a){_0x45f111=_0x45f111-0x0;var _0x483508=_0xe7d8[_0x45f111];return _0x483508;};'use strict';var EventEmitter=require(_0x8e7d('0x0'));var OpenchannelMessage=require(_0x8e7d('0x1'))['db'][_0x8e7d('0x2')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8e7d('0x3'),'afterUpdate':'update','afterDestroy':_0x8e7d('0x4')};function emitEvent(_0xcb18b5){return function(_0x4afd3f,_0x3b6cf1,_0xff740e){OpenchannelMessageEvents[_0x8e7d('0x5')](_0xcb18b5+':'+_0x4afd3f['id'],_0x4afd3f);OpenchannelMessageEvents[_0x8e7d('0x5')](_0xcb18b5,_0x4afd3f);_0xff740e(null);};}for(var e in events){if(events[_0x8e7d('0x6')](e)){var event=events[e];OpenchannelMessage['hook'](e,emitEvent(event));}}module['exports']=OpenchannelMessageEvents;
\ No newline at end of file
index 206165e..72fcf7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4a2=['OpenchannelInteractionId','then','createdAt','toLowerCase','catch','error','describe','OpenchannelAccount','Interactions','CmContact','Contact','keys','replyUri','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','length','Interaction','omit','method','POST','threadId','update','inspect','finally','utf8mb4','lodash','api','bluebird','path','../../config/environment','./openchannelMessage.attributes','exports','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body','FULLTEXT','models','get','direction','out','secret','isNil','UserId','OpenchannelInteraction','findOne'];(function(_0x3a2c23,_0x5592cb){var _0xced757=function(_0x1704ff){while(--_0x1704ff){_0x3a2c23['push'](_0x3a2c23['shift']());}};_0xced757(++_0x5592cb);}(_0xd4a2,0x173));var _0x2d4a=function(_0x47fb0b,_0x41900d){_0x47fb0b=_0x47fb0b-0x0;var _0x21ac43=_0xd4a2[_0x47fb0b];return _0x21ac43;};'use strict';var _=require(_0x2d4a('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x2d4a('0x1'));var moment=require('moment');var BPromise=require(_0x2d4a('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2d4a('0x3'));var rimraf=require('rimraf');var config=require(_0x2d4a('0x4'));var attributes=require(_0x2d4a('0x5'));module[_0x2d4a('0x6')]=function(_0x3a88e2,_0x1ca10b){return _0x3a88e2['define'](_0x2d4a('0x7'),attributes,{'tableName':_0x2d4a('0x8'),'paranoid':![],'indexes':[{'name':_0x2d4a('0x9'),'fields':[_0x2d4a('0xa')],'type':_0x2d4a('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x535b2f,_0xb9f016,_0x113839){var _0x33b786=_0x3a88e2[_0x2d4a('0xc')];var _0x3abbbd=_0x535b2f[_0x2d4a('0xd')]({'plain':!![]});if(_0x3abbbd['direction']['toLowerCase']()==='in'||_0x3abbbd[_0x2d4a('0xe')]['toLowerCase']()===_0x2d4a('0xf')&&!_0x3abbbd[_0x2d4a('0x10')]&&!_[_0x2d4a('0x11')](_0x3abbbd[_0x2d4a('0x12')])){_0x33b786[_0x2d4a('0x13')][_0x2d4a('0x14')]({'where':{'id':_0x3abbbd[_0x2d4a('0x15')]}})[_0x2d4a('0x16')](function(_0x544622){if(_0x544622){_0x544622['update']({'lastMsgAt':_0x3abbbd[_0x2d4a('0x17')],'lastMsgDirection':_0x3abbbd['direction'][_0x2d4a('0x18')]()});}})[_0x2d4a('0x19')](function(_0x11896d){console[_0x2d4a('0x1a')](_0x11896d);});}if(_0x3abbbd['direction']===_0x2d4a('0xf')&&!_0x3abbbd['secret']){var _0x2838fa;_0x33b786['CmContact'][_0x2d4a('0x1b')]()[_0x2d4a('0x16')](function(_0x2188b2){return _0x33b786[_0x2d4a('0x1c')]['find']({'where':{'id':_0x3abbbd['OpenchannelAccountId']},'include':[{'model':_0x33b786['OpenchannelInteraction'],'as':_0x2d4a('0x1d'),'where':{'id':_0x3abbbd[_0x2d4a('0x15')]},'limit':0x1,'include':[{'model':_0x33b786[_0x2d4a('0x1e')],'as':_0x2d4a('0x1f'),'attributes':_[_0x2d4a('0x20')](_0x2188b2)}]}]});})[_0x2d4a('0x16')](function(_0x56445a){_0x2838fa=_0x56445a['get']({'plain':!![]});if(_0x2838fa&&_0x2838fa[_0x2d4a('0x21')]){logger[_0x2d4a('0x22')](_0x2d4a('0x23'),_0x2d4a('0x24'),util[_0x2d4a('0x25')](_0x2d4a('0x26'),_0x3abbbd['id'],_0x2838fa[_0x2d4a('0x21')]));if(_0x2838fa[_0x2d4a('0x1d')]&&_0x2838fa['Interactions'][_0x2d4a('0x27')]){_0x3abbbd[_0x2d4a('0x28')]=_[_0x2d4a('0x29')](_0x2838fa[_0x2d4a('0x1d')][0x0],_0x2d4a('0x1f'));_0x3abbbd[_0x2d4a('0x1f')]=_0x2838fa[_0x2d4a('0x1d')][0x0][_0x2d4a('0x1f')];}var _0xb9f016={'method':'POST','uri':encodeURI(_0x2838fa['replyUri']),'json':!![],'resolveWithFullResponse':!![]};switch(_0xb9f016[_0x2d4a('0x2a')]){case'GET':_0xb9f016['qs']=_0x3abbbd;break;case _0x2d4a('0x2b'):_0xb9f016[_0x2d4a('0xa')]=_0x3abbbd;break;}return rp(_0xb9f016)[_0x2d4a('0x16')](function(_0x1d2fa6){logger[_0x2d4a('0x22')](_0x2d4a('0x23'),_0x2d4a('0x24'),util[_0x2d4a('0x25')]('Message\x20%d\x20forwarded\x20to\x20%s',_0x3abbbd['id'],_0x2838fa[_0x2d4a('0x21')]));if(_0x1d2fa6['body'][_0x2d4a('0x2c')]&&_0x1d2fa6[_0x2d4a('0xa')][_0x2d4a('0x2c')]!=_0x3abbbd[_0x2d4a('0x28')][_0x2d4a('0x2c')]){return _0x33b786[_0x2d4a('0x13')][_0x2d4a('0x2d')]({'threadId':_0x1d2fa6[_0x2d4a('0xa')]['threadId']},{'logging':!![],'where':{'id':_0x3abbbd[_0x2d4a('0x28')]['id']}});}else{return;}})[_0x2d4a('0x16')](function(){return _0x535b2f[_0x2d4a('0x2d')]({'read':!![]});})[_0x2d4a('0x19')](function(_0x2b66af){logger['error'](_0x2d4a('0x23'),_0x2d4a('0x24'),util[_0x2d4a('0x2e')](_0x2b66af,{'showHidden':![],'depth':null}));_0x113839();});}else{_0x113839();}})[_0x2d4a('0x2f')](function(){_0x113839();});}else{_0x113839();}}},'charset':_0x2d4a('0x30'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x1775=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelMessage.attributes','exports','define','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body','FULLTEXT','get','direction','toLowerCase','out','secret','isNil','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId','then','update','createdAt','catch','error','CmContact','describe','find','OpenchannelAccountId','Contact','keys','replyUri','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','Interactions','Interaction','omit','POST','GET','Message\x20%d\x20forwarded\x20to\x20%s','threadId','inspect','utf8mb4_unicode_ci','util','../../config/logger'];(function(_0x5d737f,_0xa7269){var _0x1ffe01=function(_0x3c143b){while(--_0x3c143b){_0x5d737f['push'](_0x5d737f['shift']());}};_0x1ffe01(++_0xa7269);}(_0x1775,0x1db));var _0x5177=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1775[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0x5177('0x0'));var logger=require(_0x5177('0x1'))(_0x5177('0x2'));var moment=require(_0x5177('0x3'));var BPromise=require(_0x5177('0x4'));var rp=require(_0x5177('0x5'));var fs=require('fs');var path=require(_0x5177('0x6'));var rimraf=require(_0x5177('0x7'));var config=require(_0x5177('0x8'));var attributes=require(_0x5177('0x9'));module[_0x5177('0xa')]=function(_0x2c5c42,_0x153c1a){return _0x2c5c42[_0x5177('0xb')](_0x5177('0xc'),attributes,{'tableName':_0x5177('0xd'),'paranoid':![],'indexes':[{'name':_0x5177('0xe'),'fields':[_0x5177('0xf')],'type':_0x5177('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x2e5a3b,_0x2c23d8,_0x206035){var _0x5bdca9=_0x2c5c42['models'];var _0x13c7f6=_0x2e5a3b[_0x5177('0x11')]({'plain':!![]});if(_0x13c7f6[_0x5177('0x12')][_0x5177('0x13')]()==='in'||_0x13c7f6[_0x5177('0x12')]['toLowerCase']()===_0x5177('0x14')&&!_0x13c7f6[_0x5177('0x15')]&&!_[_0x5177('0x16')](_0x13c7f6[_0x5177('0x17')])){_0x5bdca9[_0x5177('0x18')][_0x5177('0x19')]({'where':{'id':_0x13c7f6[_0x5177('0x1a')]}})[_0x5177('0x1b')](function(_0x3e6224){if(_0x3e6224){_0x3e6224[_0x5177('0x1c')]({'lastMsgAt':_0x13c7f6[_0x5177('0x1d')],'lastMsgDirection':_0x13c7f6[_0x5177('0x12')][_0x5177('0x13')]()});}})[_0x5177('0x1e')](function(_0x1b32e6){console[_0x5177('0x1f')](_0x1b32e6);});}if(_0x13c7f6[_0x5177('0x12')]===_0x5177('0x14')&&!_0x13c7f6[_0x5177('0x15')]){var _0x50ce2c;_0x5bdca9[_0x5177('0x20')][_0x5177('0x21')]()[_0x5177('0x1b')](function(_0x1b4102){return _0x5bdca9['OpenchannelAccount'][_0x5177('0x22')]({'where':{'id':_0x13c7f6[_0x5177('0x23')]},'include':[{'model':_0x5bdca9[_0x5177('0x18')],'as':'Interactions','where':{'id':_0x13c7f6[_0x5177('0x1a')]},'limit':0x1,'include':[{'model':_0x5bdca9['CmContact'],'as':_0x5177('0x24'),'attributes':_[_0x5177('0x25')](_0x1b4102)}]}]});})[_0x5177('0x1b')](function(_0x27b732){_0x50ce2c=_0x27b732[_0x5177('0x11')]({'plain':!![]});if(_0x50ce2c&&_0x50ce2c[_0x5177('0x26')]){logger[_0x5177('0x27')](_0x5177('0x28'),_0x5177('0x29'),util[_0x5177('0x2a')](_0x5177('0x2b'),_0x13c7f6['id'],_0x50ce2c[_0x5177('0x26')]));if(_0x50ce2c['Interactions']&&_0x50ce2c[_0x5177('0x2c')]['length']){_0x13c7f6[_0x5177('0x2d')]=_[_0x5177('0x2e')](_0x50ce2c[_0x5177('0x2c')][0x0],_0x5177('0x24'));_0x13c7f6['Contact']=_0x50ce2c[_0x5177('0x2c')][0x0]['Contact'];}var _0x2c23d8={'method':_0x5177('0x2f'),'uri':encodeURI(_0x50ce2c[_0x5177('0x26')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x2c23d8['method']){case _0x5177('0x30'):_0x2c23d8['qs']=_0x13c7f6;break;case'POST':_0x2c23d8[_0x5177('0xf')]=_0x13c7f6;break;}return rp(_0x2c23d8)[_0x5177('0x1b')](function(_0x58846c){logger[_0x5177('0x27')](_0x5177('0x28'),_0x5177('0x29'),util[_0x5177('0x2a')](_0x5177('0x31'),_0x13c7f6['id'],_0x50ce2c[_0x5177('0x26')]));if(_0x58846c['body']['threadId']&&_0x58846c[_0x5177('0xf')][_0x5177('0x32')]!=_0x13c7f6[_0x5177('0x2d')][_0x5177('0x32')]){return _0x5bdca9[_0x5177('0x18')][_0x5177('0x1c')]({'threadId':_0x58846c[_0x5177('0xf')][_0x5177('0x32')]},{'logging':!![],'where':{'id':_0x13c7f6['Interaction']['id']}});}else{return;}})[_0x5177('0x1b')](function(){return _0x2e5a3b[_0x5177('0x1c')]({'read':!![]});})['catch'](function(_0x32bea9){logger['error'](_0x5177('0x28'),_0x5177('0x29'),util[_0x5177('0x33')](_0x32bea9,{'showHidden':![],'depth':null}));_0x206035();});}else{_0x206035();}})['finally'](function(){_0x206035();});}else{_0x206035();}}},'charset':'utf8mb4','collate':_0x5177('0x34')});};
\ No newline at end of file
index ae03c5a..576b3c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','OpenchannelMessage','create','options','raw','CreateOpenchannelMessage','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','then','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x5165e3,_0x2d28c8){var _0x40ad72=function(_0xf06655){while(--_0xf06655){_0x5165e3['push'](_0x5165e3['shift']());}};_0x40ad72(++_0x2d28c8);}(_0x5f2f,0x73));var _0xf5f2=function(_0x1b47ed,_0x582619){_0x1b47ed=_0x1b47ed-0x0;var _0x4eb1e1=_0x5f2f[_0x1b47ed];return _0x4eb1e1;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});config[_0xf5f2('0xc')]=_[_0xf5f2('0xd')](config['redis'],{'host':_0xf5f2('0xe'),'port':0x18eb});var socket=require(_0xf5f2('0xf'))(new Redis(config[_0xf5f2('0xc')]));require('./openchannelMessage.socket')[_0xf5f2('0x10')](socket);function respondWithRpcPromise(_0x15dd7c,_0x218ae3,_0x4e0e6b){return new BPromise(function(_0x977a59,_0x4ebbbe){return client['request'](_0x15dd7c,_0x4e0e6b)[_0xf5f2('0x11')](function(_0x151aba){logger['info'](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));logger[_0xf5f2('0x14')](_0xf5f2('0x15'),_0x218ae3,_0xf5f2('0x13'),JSON[_0xf5f2('0x16')](_0x151aba));if(_0x151aba['error']){if(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x18')]===0x1f4){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')]['message']);return _0x4ebbbe(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);return _0x977a59(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}else{logger[_0xf5f2('0x1a')](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));_0x977a59(_0x151aba[_0xf5f2('0x1b')][_0xf5f2('0x19')]);}})[_0xf5f2('0x1c')](function(_0x3cf5ea){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x3cf5ea);_0x4ebbbe(_0x3cf5ea);});});}exports['CreateOpenchannelMessage']=function(_0x34706d){var _0x47101e=this;return new Promise(function(_0x49dac2,_0x47acfc){return db[_0xf5f2('0x1d')][_0xf5f2('0x1e')](_0x34706d['body'],{'raw':_0x34706d[_0xf5f2('0x1f')]?_0x34706d[_0xf5f2('0x1f')][_0xf5f2('0x20')]===undefined?!![]:![]:!![]})[_0xf5f2('0x11')](function(_0x36f1cb){logger['info'](_0xf5f2('0x21'),_0x34706d);logger[_0xf5f2('0x14')](_0xf5f2('0x21'),_0x34706d,JSON[_0xf5f2('0x16')](_0x36f1cb));_0x49dac2(_0x36f1cb);})[_0xf5f2('0x1c')](function(_0x5bdf4a){logger['error'](_0xf5f2('0x21'),_0x5bdf4a[_0xf5f2('0x19')],_0x34706d);_0x47acfc(_0x47101e[_0xf5f2('0x17')](0x1f4,_0x5bdf4a[_0xf5f2('0x19')]));});});};
\ No newline at end of file
+var _0x5f2f=['OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','OpenchannelMessage','create','options','raw','CreateOpenchannelMessage','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','then','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0xce66bf,_0x3b37a2){var _0xb93d70=function(_0x3f2ded){while(--_0x3f2ded){_0xce66bf['push'](_0xce66bf['shift']());}};_0xb93d70(++_0x3b37a2);}(_0x5f2f,0x73));var _0xf5f2=function(_0x545ed6,_0x7ddca6){_0x545ed6=_0x545ed6-0x0;var _0x51704b=_0x5f2f[_0x545ed6];return _0x51704b;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});config[_0xf5f2('0xc')]=_[_0xf5f2('0xd')](config['redis'],{'host':_0xf5f2('0xe'),'port':0x18eb});var socket=require(_0xf5f2('0xf'))(new Redis(config[_0xf5f2('0xc')]));require('./openchannelMessage.socket')[_0xf5f2('0x10')](socket);function respondWithRpcPromise(_0x15dd7c,_0x218ae3,_0x4e0e6b){return new BPromise(function(_0x977a59,_0x4ebbbe){return client['request'](_0x15dd7c,_0x4e0e6b)[_0xf5f2('0x11')](function(_0x151aba){logger['info'](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));logger[_0xf5f2('0x14')](_0xf5f2('0x15'),_0x218ae3,_0xf5f2('0x13'),JSON[_0xf5f2('0x16')](_0x151aba));if(_0x151aba['error']){if(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x18')]===0x1f4){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')]['message']);return _0x4ebbbe(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);return _0x977a59(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}else{logger[_0xf5f2('0x1a')](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));_0x977a59(_0x151aba[_0xf5f2('0x1b')][_0xf5f2('0x19')]);}})[_0xf5f2('0x1c')](function(_0x3cf5ea){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x3cf5ea);_0x4ebbbe(_0x3cf5ea);});});}exports['CreateOpenchannelMessage']=function(_0x34706d){var _0x47101e=this;return new Promise(function(_0x49dac2,_0x47acfc){return db[_0xf5f2('0x1d')][_0xf5f2('0x1e')](_0x34706d['body'],{'raw':_0x34706d[_0xf5f2('0x1f')]?_0x34706d[_0xf5f2('0x1f')][_0xf5f2('0x20')]===undefined?!![]:![]:!![]})[_0xf5f2('0x11')](function(_0x36f1cb){logger['info'](_0xf5f2('0x21'),_0x34706d);logger[_0xf5f2('0x14')](_0xf5f2('0x21'),_0x34706d,JSON[_0xf5f2('0x16')](_0x36f1cb));_0x49dac2(_0x36f1cb);})[_0xf5f2('0x1c')](function(_0x5bdf4a){logger['error'](_0xf5f2('0x21'),_0x5bdf4a[_0xf5f2('0x19')],_0x34706d);_0x47acfc(_0x47101e[_0xf5f2('0x17')](0x1f4,_0x5bdf4a[_0xf5f2('0x19')]));});});};
\ No newline at end of file
index dec3281..2c61782 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x872f=['openchannelMessage:','./openchannelMessage.events','save','remove','update','emit','register'];(function(_0x45bbe7,_0x4c5658){var _0x66ed74=function(_0x77efbd){while(--_0x77efbd){_0x45bbe7['push'](_0x45bbe7['shift']());}};_0x66ed74(++_0x4c5658);}(_0x872f,0x143));var _0xf872=function(_0x37df6c,_0x2a9666){_0x37df6c=_0x37df6c-0x0;var _0x41f7aa=_0x872f[_0x37df6c];return _0x41f7aa;};'use strict';var OpenchannelMessageEvents=require(_0xf872('0x0'));var events=[_0xf872('0x1'),_0xf872('0x2'),_0xf872('0x3')];function createListener(_0x3904c4,_0x22461f){return function(_0x2868bc){_0x22461f[_0xf872('0x4')](_0x3904c4,_0x2868bc);};}function removeListener(_0x3a1126,_0x1a71a9){return function(){OpenchannelMessageEvents['removeListener'](_0x3a1126,_0x1a71a9);};}exports[_0xf872('0x5')]=function(_0x51e579){for(var _0x11759f=0x0,_0x578512=events['length'];_0x11759f<_0x578512;_0x11759f++){var _0x315e32=events[_0x11759f];var _0x1ee4f7=createListener(_0xf872('0x6')+_0x315e32,_0x51e579);OpenchannelMessageEvents['on'](_0x315e32,_0x1ee4f7);}};
\ No newline at end of file
+var _0xab13=['openchannelMessage:','./openchannelMessage.events','remove','removeListener','register','length'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xab13,0x8b));var _0x3ab1=function(_0x1465dc,_0x4d684d){_0x1465dc=_0x1465dc-0x0;var _0x226206=_0xab13[_0x1465dc];return _0x226206;};'use strict';var OpenchannelMessageEvents=require(_0x3ab1('0x0'));var events=['save',_0x3ab1('0x1'),'update'];function createListener(_0x2c4021,_0x84b028){return function(_0x299319){_0x84b028['emit'](_0x2c4021,_0x299319);};}function removeListener(_0x49ff19,_0x87151e){return function(){OpenchannelMessageEvents[_0x3ab1('0x2')](_0x49ff19,_0x87151e);};}exports[_0x3ab1('0x3')]=function(_0x31ea13){for(var _0x3236f3=0x0,_0x4428fc=events[_0x3ab1('0x4')];_0x3236f3<_0x4428fc;_0x3236f3++){var _0x46fc8f=events[_0x3236f3];var _0x5f572e=createListener(_0x3ab1('0x5')+_0x46fc8f,_0x31ea13);OpenchannelMessageEvents['on'](_0x46fc8f,_0x5f572e);}};
\ No newline at end of file
index f85f85c..f7e7502 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2c7=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','/:id/teams','/:id/users','getAgents','post','addTeams','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','connect-timeout'];(function(_0x2b5466,_0x43fe49){var _0x4f6e42=function(_0x585504){while(--_0x585504){_0x2b5466['push'](_0x2b5466['shift']());}};_0x4f6e42(++_0x43fe49);}(_0xe2c7,0x1ed));var _0x7e2c=function(_0x31ed12,_0x2a38f9){_0x31ed12=_0x31ed12-0x0;var _0x1afd40=_0xe2c7[_0x31ed12];return _0x1afd40;};'use strict';var multer=require(_0x7e2c('0x0'));var util=require(_0x7e2c('0x1'));var path=require('path');var timeout=require(_0x7e2c('0x2'));var express=require(_0x7e2c('0x3'));var router=express[_0x7e2c('0x4')]();var fs_extra=require(_0x7e2c('0x5'));var auth=require(_0x7e2c('0x6'));var interaction=require(_0x7e2c('0x7'));var config=require(_0x7e2c('0x8'));var controller=require(_0x7e2c('0x9'));router[_0x7e2c('0xa')]('/',auth[_0x7e2c('0xb')](),controller[_0x7e2c('0xc')]);router[_0x7e2c('0xa')](_0x7e2c('0xd'),auth[_0x7e2c('0xb')](),controller[_0x7e2c('0xe')]);router[_0x7e2c('0xa')](_0x7e2c('0xf'),auth[_0x7e2c('0xb')](),controller[_0x7e2c('0x10')]);router[_0x7e2c('0xa')](_0x7e2c('0x11'),auth[_0x7e2c('0xb')](),controller['getMembers']);router[_0x7e2c('0xa')](_0x7e2c('0x12'),auth[_0x7e2c('0xb')](),controller['getTeams']);router['get'](_0x7e2c('0x13'),auth[_0x7e2c('0xb')](),controller[_0x7e2c('0x14')]);router[_0x7e2c('0x15')]('/',auth['isAuthenticated'](),controller['create']);router[_0x7e2c('0x15')](_0x7e2c('0x12'),auth[_0x7e2c('0xb')](),controller[_0x7e2c('0x16')]);router[_0x7e2c('0x15')](_0x7e2c('0x13'),auth[_0x7e2c('0xb')](),controller[_0x7e2c('0x17')]);router[_0x7e2c('0x18')](_0x7e2c('0xf'),auth[_0x7e2c('0xb')](),controller[_0x7e2c('0x19')]);router[_0x7e2c('0x1a')](_0x7e2c('0xf'),auth[_0x7e2c('0xb')](),controller[_0x7e2c('0x1b')]);router[_0x7e2c('0x1a')](_0x7e2c('0x12'),auth[_0x7e2c('0xb')](),controller[_0x7e2c('0x1c')]);router[_0x7e2c('0x1a')](_0x7e2c('0x13'),auth['isAuthenticated'](),controller[_0x7e2c('0x1d')]);module[_0x7e2c('0x1e')]=router;
\ No newline at end of file
+var _0x9434=['removeTeams','removeAgents','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./openchannelQueue.controller','isAuthenticated','index','get','show','/:id/members','getMembers','/:id/teams','getTeams','post','create','/:id/users','addAgents','/:id','delete'];(function(_0x5058f1,_0x12fd68){var _0x32c2f3=function(_0x1d097a){while(--_0x1d097a){_0x5058f1['push'](_0x5058f1['shift']());}};_0x32c2f3(++_0x12fd68);}(_0x9434,0x193));var _0x4943=function(_0x1b1b7b,_0xf3cb03){_0x1b1b7b=_0x1b1b7b-0x0;var _0x4d3852=_0x9434[_0x1b1b7b];return _0x4d3852;};'use strict';var multer=require(_0x4943('0x0'));var util=require(_0x4943('0x1'));var path=require('path');var timeout=require(_0x4943('0x2'));var express=require(_0x4943('0x3'));var router=express['Router']();var fs_extra=require(_0x4943('0x4'));var auth=require(_0x4943('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x4943('0x6'));var controller=require(_0x4943('0x7'));router['get']('/',auth[_0x4943('0x8')](),controller[_0x4943('0x9')]);router[_0x4943('0xa')]('/describe',auth[_0x4943('0x8')](),controller['describe']);router[_0x4943('0xa')]('/:id',auth[_0x4943('0x8')](),controller[_0x4943('0xb')]);router[_0x4943('0xa')](_0x4943('0xc'),auth[_0x4943('0x8')](),controller[_0x4943('0xd')]);router[_0x4943('0xa')](_0x4943('0xe'),auth[_0x4943('0x8')](),controller[_0x4943('0xf')]);router[_0x4943('0xa')]('/:id/users',auth['isAuthenticated'](),controller['getAgents']);router[_0x4943('0x10')]('/',auth['isAuthenticated'](),controller[_0x4943('0x11')]);router[_0x4943('0x10')](_0x4943('0xe'),auth[_0x4943('0x8')](),controller['addTeams']);router[_0x4943('0x10')](_0x4943('0x12'),auth[_0x4943('0x8')](),controller[_0x4943('0x13')]);router['put'](_0x4943('0x14'),auth[_0x4943('0x8')](),controller['update']);router[_0x4943('0x15')]('/:id',auth[_0x4943('0x8')](),controller['destroy']);router[_0x4943('0x15')](_0x4943('0xe'),auth[_0x4943('0x8')](),controller[_0x4943('0x16')]);router[_0x4943('0x15')](_0x4943('0x12'),auth[_0x4943('0x8')](),controller[_0x4943('0x17')]);module[_0x4943('0x18')]=router;
\ No newline at end of file
index f177bba..890e6ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5e7=['beepall','roundrobin','exports','STRING','INTEGER','rrmemory'];(function(_0x430cd2,_0xffa4f5){var _0x47ad7d=function(_0x2b44aa){while(--_0x2b44aa){_0x430cd2['push'](_0x430cd2['shift']());}};_0x47ad7d(++_0xffa4f5);}(_0xc5e7,0x68));var _0x7c5e=function(_0x3491c6,_0x441ec4){_0x3491c6=_0x3491c6-0x0;var _0x59dca5=_0xc5e7[_0x3491c6];return _0x59dca5;};'use strict';var Sequelize=require('sequelize');module[_0x7c5e('0x0')]={'name':{'type':Sequelize[_0x7c5e('0x1')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x7c5e('0x1')]},'timeout':{'type':Sequelize[_0x7c5e('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x7c5e('0x3'),_0x7c5e('0x4'),_0x7c5e('0x5'))}};
\ No newline at end of file
+var _0x0681=['ENUM','rrmemory','beepall','roundrobin','sequelize','exports','STRING','name','INTEGER'];(function(_0x550124,_0x3fc10a){var _0xcf0613=function(_0x489045){while(--_0x489045){_0x550124['push'](_0x550124['shift']());}};_0xcf0613(++_0x3fc10a);}(_0x0681,0x17e));var _0x1068=function(_0x3862cd,_0x299e88){_0x3862cd=_0x3862cd-0x0;var _0x2864a1=_0x0681[_0x3862cd];return _0x2864a1;};'use strict';var Sequelize=require(_0x1068('0x0'));module[_0x1068('0x1')]={'name':{'type':Sequelize[_0x1068('0x2')],'unique':_0x1068('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x1068('0x2')]},'timeout':{'type':Sequelize[_0x1068('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x1068('0x5')](_0x1068('0x6'),_0x1068('0x7'),_0x1068('0x8'))}};
\ No newline at end of file
index d363d9b..260fedb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x099b=['keys','intersection','model','attributes','fields','length','nolimit','sort','filters','pick','filter','where','merge','map','VIRTUAL','options','OpenchannelQueue','include','findAll','rows','catch','show','params','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne','UserOpenchannelQueue','hasOwnProperty','OpenchannelQueueId','User','findAndCountAll','UserId','agent','openchannelPause','updatedAt','format','%s/%s','SIP','createdAt','Team','order','getTeams','ids','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','forEach','userOpenchannelQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_openchannel_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','toString','QueryTypes','SELECT','every','includes','all','compact','value','isEmpty','removeAgents','emit','addAgents','spread','userOpenchannelQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','register','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','then','OpenchannelQueues','UserProfileResource','destroy','error','name','send','index','rawAttributes','fieldName','key','query'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x099b,0x174));var _0xb099=function(_0x494dc7,_0x28c380){_0x494dc7=_0x494dc7-0x0;var _0x36c980=_0x099b[_0x494dc7];return _0x36c980;};'use strict';var emlformat=require(_0xb099('0x0'));var rimraf=require(_0xb099('0x1'));var zipdir=require(_0xb099('0x2'));var jsonpatch=require(_0xb099('0x3'));var rp=require('request-promise');var moment=require(_0xb099('0x4'));var BPromise=require(_0xb099('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xb099('0x6'));var csv=require(_0xb099('0x7'));var ejs=require(_0xb099('0x8'));var fs=require('fs');var fs_extra=require(_0xb099('0x9'));var _=require(_0xb099('0xa'));var squel=require(_0xb099('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xb099('0xc'));var toCsv=require(_0xb099('0x7'));var querystring=require(_0xb099('0xd'));var Papa=require(_0xb099('0xe'));var Redis=require('ioredis');var authService=require(_0xb099('0xf'));var qs=require(_0xb099('0x10'));var as=require(_0xb099('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb099('0x12'))(_0xb099('0x13'));var utils=require('../../config/utils');var config=require(_0xb099('0x14'));var licenseUtil=require(_0xb099('0x15'));var db=require(_0xb099('0x16'))['db'];config[_0xb099('0x17')]=_[_0xb099('0x18')](config[_0xb099('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0xb099('0x19'))(new Redis(config[_0xb099('0x17')]));require('./openchannelQueue.socket')[_0xb099('0x1a')](socket);function respondWithStatusCode(_0x53f5db,_0x19ef98){_0x19ef98=_0x19ef98||0xcc;return function(_0x783ec4){if(_0x783ec4){return _0x53f5db[_0xb099('0x1b')](_0x19ef98);}return _0x53f5db[_0xb099('0x1c')](_0x19ef98)[_0xb099('0x1d')]();};}function respondWithResult(_0x23f33f,_0xf84a68){_0xf84a68=_0xf84a68||0xc8;return function(_0x3f6d46){if(_0x3f6d46){return _0x23f33f[_0xb099('0x1c')](_0xf84a68)[_0xb099('0x1e')](_0x3f6d46);}};}function respondWithFilteredResult(_0x4c4907,_0x693218){return function(_0x5a7be0){if(_0x5a7be0){var _0xd67cbe=typeof _0x693218[_0xb099('0x1f')]==='undefined'&&typeof _0x693218[_0xb099('0x20')]===_0xb099('0x21');var _0x595003=_0x5a7be0[_0xb099('0x22')];var _0x3bf156=_0xd67cbe?0x0:_0x693218[_0xb099('0x1f')];var _0x45a8ba=_0xd67cbe?_0x5a7be0['count']:_0x693218[_0xb099('0x1f')]+_0x693218['limit'];var _0xd6d7f3;if(_0x45a8ba>=_0x595003){_0x45a8ba=_0x595003;_0xd6d7f3=0xc8;}else{_0xd6d7f3=0xce;}_0x4c4907['status'](_0xd6d7f3);return _0x4c4907[_0xb099('0x23')](_0xb099('0x24'),_0x3bf156+'-'+_0x45a8ba+'/'+_0x595003)['json'](_0x5a7be0);}return null;};}function patchUpdates(_0x4af0bb){return function(_0x1fb2ce){try{jsonpatch['apply'](_0x1fb2ce,_0x4af0bb,!![]);}catch(_0x3a56b0){return BPromise[_0xb099('0x25')](_0x3a56b0);}return _0x1fb2ce[_0xb099('0x26')]();};}function saveUpdates(_0x2d2388,_0xf4a929){return function(_0xa5bef0){if(_0xa5bef0){return _0xa5bef0['update'](_0x2d2388)[_0xb099('0x27')](function(_0x3641b6){return _0x3641b6;});}return null;};}function removeEntity(_0x386c64,_0x5f5546){return function(_0x5dc376){if(_0x5dc376){return _0x5dc376['destroy']()['then'](function(){var _0xd8fc74=_0x5dc376['get']({'plain':!![]});var _0x296624=_0xb099('0x28');return db[_0xb099('0x29')][_0xb099('0x2a')]({'where':{'type':_0x296624,'resourceId':_0xd8fc74['id']}})[_0xb099('0x27')](function(){return _0x5dc376;});})[_0xb099('0x27')](function(){_0x386c64['status'](0xcc)[_0xb099('0x1d')]();});}};}function handleEntityNotFound(_0x25a759,_0x54cba6){return function(_0x1bbba1){if(!_0x1bbba1){_0x25a759[_0xb099('0x1b')](0x194);}return _0x1bbba1;};}function handleError(_0x4aa0ac,_0x2e5c0f){_0x2e5c0f=_0x2e5c0f||0x1f4;return function(_0x4276c2){logger[_0xb099('0x2b')](_0x4276c2['stack']);if(_0x4276c2[_0xb099('0x2c')]){delete _0x4276c2[_0xb099('0x2c')];}_0x4aa0ac[_0xb099('0x1c')](_0x2e5c0f)[_0xb099('0x2d')](_0x4276c2);};}exports[_0xb099('0x2e')]=function(_0x1889f3,_0x3b4de4){var _0x2ea16b={},_0x37f759={},_0x190be1={'count':0x0,'rows':[]};var _0x5d30a2=_['map'](db['OpenchannelQueue'][_0xb099('0x2f')],function(_0x50ea2c){return{'name':_0x50ea2c[_0xb099('0x30')],'type':_0x50ea2c['type'][_0xb099('0x31')]};});_0x37f759['model']=_['map'](_0x5d30a2,_0xb099('0x2c'));_0x37f759[_0xb099('0x32')]=_[_0xb099('0x33')](_0x1889f3[_0xb099('0x32')]);_0x37f759['filters']=_[_0xb099('0x34')](_0x37f759[_0xb099('0x35')],_0x37f759[_0xb099('0x32')]);_0x2ea16b[_0xb099('0x36')]=_['intersection'](_0x37f759[_0xb099('0x35')],qs[_0xb099('0x37')](_0x1889f3[_0xb099('0x32')][_0xb099('0x37')]));_0x2ea16b['attributes']=_0x2ea16b[_0xb099('0x36')][_0xb099('0x38')]?_0x2ea16b[_0xb099('0x36')]:_0x37f759[_0xb099('0x35')];if(!_0x1889f3['query']['hasOwnProperty'](_0xb099('0x39'))){_0x2ea16b[_0xb099('0x20')]=qs[_0xb099('0x20')](_0x1889f3[_0xb099('0x32')][_0xb099('0x20')]);_0x2ea16b[_0xb099('0x1f')]=qs[_0xb099('0x1f')](_0x1889f3[_0xb099('0x32')][_0xb099('0x1f')]);}_0x2ea16b['order']=qs[_0xb099('0x3a')](_0x1889f3[_0xb099('0x32')][_0xb099('0x3a')]);_0x2ea16b['where']=qs[_0xb099('0x3b')](_[_0xb099('0x3c')](_0x1889f3[_0xb099('0x32')],_0x37f759['filters']),_0x5d30a2);if(_0x1889f3[_0xb099('0x32')][_0xb099('0x3d')]){_0x2ea16b[_0xb099('0x3e')]=_[_0xb099('0x3f')](_0x2ea16b[_0xb099('0x3e')],{'$or':_[_0xb099('0x40')](_0x5d30a2,function(_0x54b267){if(_0x54b267['type']!==_0xb099('0x41')){var _0x1b4afe={};_0x1b4afe[_0x54b267['name']]={'$like':'%'+_0x1889f3[_0xb099('0x32')][_0xb099('0x3d')]+'%'};return _0x1b4afe;}})});}_0x2ea16b=_['merge']({},_0x2ea16b,_0x1889f3[_0xb099('0x42')]);var _0x319a87={'where':_0x2ea16b[_0xb099('0x3e')]};return db[_0xb099('0x43')][_0xb099('0x22')](_0x319a87)['then'](function(_0x1b42ea){_0x190be1[_0xb099('0x22')]=_0x1b42ea;if(_0x1889f3[_0xb099('0x32')]['includeAll']){_0x2ea16b[_0xb099('0x44')]=[{'all':!![]}];}return db[_0xb099('0x43')][_0xb099('0x45')](_0x2ea16b);})[_0xb099('0x27')](function(_0x18682a){_0x190be1[_0xb099('0x46')]=_0x18682a;return _0x190be1;})[_0xb099('0x27')](respondWithFilteredResult(_0x3b4de4,_0x2ea16b))[_0xb099('0x47')](handleError(_0x3b4de4,null));};exports[_0xb099('0x48')]=function(_0x5ecdb3,_0x89d306){var _0x4118fb={'raw':!![],'where':{'id':_0x5ecdb3[_0xb099('0x49')]['id']}},_0x5bd882={};_0x5bd882[_0xb099('0x35')]=_['keys'](db[_0xb099('0x43')][_0xb099('0x2f')]);_0x5bd882[_0xb099('0x32')]=_[_0xb099('0x33')](_0x5ecdb3[_0xb099('0x32')]);_0x5bd882['filters']=_[_0xb099('0x34')](_0x5bd882[_0xb099('0x35')],_0x5bd882[_0xb099('0x32')]);_0x4118fb[_0xb099('0x36')]=_[_0xb099('0x34')](_0x5bd882[_0xb099('0x35')],qs[_0xb099('0x37')](_0x5ecdb3['query'][_0xb099('0x37')]));_0x4118fb[_0xb099('0x36')]=_0x4118fb[_0xb099('0x36')][_0xb099('0x38')]?_0x4118fb[_0xb099('0x36')]:_0x5bd882['model'];if(_0x5ecdb3[_0xb099('0x32')][_0xb099('0x4a')]){_0x4118fb[_0xb099('0x44')]=[{'all':!![]}];}_0x4118fb=_['merge']({},_0x4118fb,_0x5ecdb3['options']);return db[_0xb099('0x43')][_0xb099('0x4b')](_0x4118fb)[_0xb099('0x27')](handleEntityNotFound(_0x89d306,null))[_0xb099('0x27')](respondWithResult(_0x89d306,null))[_0xb099('0x47')](handleError(_0x89d306,null));};exports[_0xb099('0x4c')]=function(_0xa8e95b,_0x19f7cd){return db['OpenchannelQueue'][_0xb099('0x4c')](_0xa8e95b[_0xb099('0x4d')],{})[_0xb099('0x27')](function(_0x2f0ee9){var _0x4381f8=_0xa8e95b[_0xb099('0x4e')]['get']({'plain':!![]});if(!_0x4381f8)throw new Error(_0xb099('0x4f'));if(_0x4381f8[_0xb099('0x50')]==='user'){var _0x2f266e=_0x2f0ee9[_0xb099('0x51')]({'plain':!![]});var _0x351c22='OpenchannelQueues';return db[_0xb099('0x52')]['find']({'where':{'name':_0x351c22,'userProfileId':_0x4381f8[_0xb099('0x53')]},'raw':!![]})[_0xb099('0x27')](function(_0x2dbeef){if(_0x2dbeef&&_0x2dbeef[_0xb099('0x54')]===0x0){return db['UserProfileResource'][_0xb099('0x4c')]({'name':_0x2f266e[_0xb099('0x2c')],'resourceId':_0x2f266e['id'],'type':_0x2dbeef[_0xb099('0x2c')],'sectionId':_0x2dbeef['id']},{})[_0xb099('0x27')](function(){return _0x2f0ee9;});}else{return _0x2f0ee9;}})[_0xb099('0x47')](function(_0x1ffead){logger[_0xb099('0x2b')](_0xb099('0x55'),_0x1ffead);throw _0x1ffead;});}return _0x2f0ee9;})['then'](respondWithResult(_0x19f7cd,0xc9))[_0xb099('0x47')](handleError(_0x19f7cd,null));};exports['update']=function(_0x3ab2ed,_0xcb74ba){if(_0x3ab2ed[_0xb099('0x4d')]['id']){delete _0x3ab2ed[_0xb099('0x4d')]['id'];}return db[_0xb099('0x43')]['find']({'where':{'id':_0x3ab2ed[_0xb099('0x49')]['id']}})[_0xb099('0x27')](handleEntityNotFound(_0xcb74ba,null))['then'](saveUpdates(_0x3ab2ed['body'],null))[_0xb099('0x27')](respondWithResult(_0xcb74ba,null))['catch'](handleError(_0xcb74ba,null));};exports[_0xb099('0x2a')]=function(_0x12a452,_0x107c56){return db['OpenchannelQueue'][_0xb099('0x4b')]({'where':{'id':_0x12a452[_0xb099('0x49')]['id']}})[_0xb099('0x27')](handleEntityNotFound(_0x107c56,null))['then'](removeEntity(_0x107c56,null))[_0xb099('0x47')](handleError(_0x107c56,null));};exports[_0xb099('0x56')]=function(_0x5abafd,_0x298465){return db[_0xb099('0x43')][_0xb099('0x56')]()[_0xb099('0x27')](respondWithResult(_0x298465,null))[_0xb099('0x47')](handleError(_0x298465,null));};exports['getMembers']=function(_0x48090b,_0x4bea47,_0x379144){var _0x330d81={'raw':!![],'where':{}},_0x5c6a17={},_0x2ca8c4;return db[_0xb099('0x43')][_0xb099('0x57')]({'where':{'id':_0x48090b[_0xb099('0x49')]['id']}})['then'](handleEntityNotFound(_0x4bea47,null))[_0xb099('0x27')](function(_0x495c9e){if(_0x495c9e){_0x2ca8c4=_0x495c9e[_0xb099('0x51')]({'plain':!![]});_0x5c6a17[_0xb099('0x35')]=_[_0xb099('0x33')](db[_0xb099('0x58')]['rawAttributes']);_0x5c6a17[_0xb099('0x32')]=_[_0xb099('0x33')](_0x48090b[_0xb099('0x32')]);_0x5c6a17[_0xb099('0x3b')]=_[_0xb099('0x34')](_0x5c6a17['model'],_0x5c6a17['query']);_0x330d81[_0xb099('0x36')]=_[_0xb099('0x34')](_0x5c6a17[_0xb099('0x35')],qs[_0xb099('0x37')](_0x48090b[_0xb099('0x32')][_0xb099('0x37')]));_0x330d81[_0xb099('0x36')]=_0x330d81[_0xb099('0x36')][_0xb099('0x38')]?_0x330d81[_0xb099('0x36')]:_0x5c6a17['model'];if(!_0x48090b[_0xb099('0x32')][_0xb099('0x59')]('nolimit')){_0x330d81[_0xb099('0x20')]=qs[_0xb099('0x20')](_0x48090b[_0xb099('0x32')][_0xb099('0x20')]);_0x330d81['offset']=qs[_0xb099('0x1f')](_0x48090b['query'][_0xb099('0x1f')]);}_0x330d81['order']=qs[_0xb099('0x3a')](_0x48090b[_0xb099('0x32')][_0xb099('0x3a')]);_0x330d81[_0xb099('0x3e')]=qs[_0xb099('0x3b')](_['pick'](_0x48090b['query'],_0x5c6a17[_0xb099('0x3b')]));_0x330d81['where'][_0xb099('0x5a')]=_0x495c9e['id'];if(_0x48090b[_0xb099('0x32')][_0xb099('0x3d')]){_0x330d81[_0xb099('0x3e')]=_[_0xb099('0x3f')](_0x330d81['where'],{'$or':_[_0xb099('0x40')](_0x330d81[_0xb099('0x36')],function(_0x43e95d){var _0xacb8cb={};_0xacb8cb[_0x43e95d]={'$like':'%'+_0x48090b[_0xb099('0x32')][_0xb099('0x3d')]+'%'};return _0xacb8cb;})});}_0x330d81=_[_0xb099('0x3f')]({},_0x330d81,_0x48090b[_0xb099('0x42')]);return db[_0xb099('0x58')][_0xb099('0x45')](_0x330d81);}})[_0xb099('0x27')](function(_0x313b76){if(_0x313b76){return db[_0xb099('0x5b')][_0xb099('0x5c')]({'where':{'id':_['map'](_0x313b76,_0xb099('0x5d')),'role':_0xb099('0x5e')},'attributes':['id','name',_0xb099('0x5f'),_0xb099('0x60'),'createdAt']});}})[_0xb099('0x27')](function(_0x2398bd){if(_0x2398bd){return{'count':_0x2398bd[_0xb099('0x22')],'rows':_['map'](_0x2398bd['rows'],function(_0x4397c7){return{'membername':_0x4397c7[_0xb099('0x2c')],'UserId':_0x4397c7['id'],'queue_name':_0x2ca8c4['name'],'OpenchannelQueueId':_0x2ca8c4['id'],'interface':util[_0xb099('0x61')](_0xb099('0x62'),_0xb099('0x63'),_0x4397c7[_0xb099('0x2c')]),'penalty':0x0,'paused':_0x4397c7['openchannelPause'],'createdAt':_0x4397c7[_0xb099('0x64')],'updatedAt':_0x4397c7[_0xb099('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xb099('0x27')](respondWithFilteredResult(_0x4bea47,_0x330d81))[_0xb099('0x47')](handleError(_0x4bea47,null));};exports['getTeams']=function(_0xb5c882,_0x5391df,_0x3c8dcc){var _0xc226fa={};var _0x1a3050={};var _0x380543;var _0x47b791;return db[_0xb099('0x43')][_0xb099('0x57')]({'where':{'id':_0xb5c882[_0xb099('0x49')]['id']}})['then'](handleEntityNotFound(_0x5391df,null))[_0xb099('0x27')](function(_0x37c9c1){if(_0x37c9c1){_0x380543=_0x37c9c1;_0x1a3050[_0xb099('0x35')]=_[_0xb099('0x33')](db[_0xb099('0x65')]['rawAttributes']);_0x1a3050[_0xb099('0x32')]=_[_0xb099('0x33')](_0xb5c882[_0xb099('0x32')]);_0x1a3050[_0xb099('0x3b')]=_[_0xb099('0x34')](_0x1a3050['model'],_0x1a3050[_0xb099('0x32')]);_0xc226fa[_0xb099('0x36')]=_[_0xb099('0x34')](_0x1a3050[_0xb099('0x35')],qs[_0xb099('0x37')](_0xb5c882[_0xb099('0x32')][_0xb099('0x37')]));_0xc226fa[_0xb099('0x36')]=_0xc226fa[_0xb099('0x36')][_0xb099('0x38')]?_0xc226fa['attributes']:_0x1a3050['model'];_0xc226fa[_0xb099('0x66')]=qs[_0xb099('0x3a')](_0xb5c882['query'][_0xb099('0x3a')]);_0xc226fa[_0xb099('0x3e')]=qs[_0xb099('0x3b')](_['pick'](_0xb5c882['query'],_0x1a3050[_0xb099('0x3b')]));if(_0xb5c882[_0xb099('0x32')][_0xb099('0x3d')]){_0xc226fa[_0xb099('0x3e')]=_[_0xb099('0x3f')](_0xc226fa['where'],{'$or':_[_0xb099('0x40')](_0xc226fa['attributes'],function(_0x16de38){var _0x1cad80={};_0x1cad80[_0x16de38]={'$like':'%'+_0xb5c882[_0xb099('0x32')]['filter']+'%'};return _0x1cad80;})});}_0xc226fa=_[_0xb099('0x3f')]({},_0xc226fa,_0xb5c882[_0xb099('0x42')]);return _0x380543['getTeams'](_0xc226fa);}})[_0xb099('0x27')](function(_0x33b081){if(_0x33b081){_0x47b791=_0x33b081[_0xb099('0x38')];if(!_0xb5c882['query'][_0xb099('0x59')](_0xb099('0x39'))){_0xc226fa[_0xb099('0x20')]=qs['limit'](_0xb5c882[_0xb099('0x32')][_0xb099('0x20')]);_0xc226fa['offset']=qs[_0xb099('0x1f')](_0xb5c882['query']['offset']);}return _0x380543[_0xb099('0x67')](_0xc226fa);}})[_0xb099('0x27')](function(_0x377ab3){if(_0x377ab3){return _0x377ab3?{'count':_0x47b791,'rows':_0x377ab3}:null;}})[_0xb099('0x27')](respondWithResult(_0x5391df,null))['catch'](handleError(_0x5391df,null));};exports['addTeams']=function(_0x3870e1,_0x167d79,_0x53ffd7){var _0x3f12dd=_0x3870e1[_0xb099('0x4d')][_0xb099('0x68')];return db['Team']['findAll']({'where':{'id':_0x3f12dd},'attributes':['id'],'include':[{'model':db[_0xb099('0x5b')],'as':_0xb099('0x69'),'attributes':['id','name',_0xb099('0x6a'),_0xb099('0x6b'),_0xb099('0x6c')],'raw':!![]}]})[_0xb099('0x27')](function(_0x1a2485){if(_0x1a2485){var _0x44723e=_[_0xb099('0x6d')](_0x1a2485,function(_0x348456){var _0xf6ae07=_0x348456[_0xb099('0x51')]({'plain':!![]});return _0xf6ae07[_0xb099('0x69')];});return db[_0xb099('0x43')][_0xb099('0x4b')]({'where':{'id':_0x3870e1[_0xb099('0x49')]['id']}})['then'](function(_0x3246cb){return db[_0xb099('0x6e')][_0xb099('0x6f')](function(_0x2c3473){return _0x3246cb['addTeams'](_0x3f12dd,{'transaction':_0x2c3473})[_0xb099('0x27')](function(){return BPromise[_0xb099('0x70')](_0x44723e,function(_0x2536de){return db[_0xb099('0x58')]['findOrCreate']({'where':{'UserId':_0x2536de['id'],'OpenchannelQueueId':_0x3870e1[_0xb099('0x49')]['id']},'transaction':_0x2c3473});});})[_0xb099('0x27')](function(){_0x44723e[_0xb099('0x71')](function(_0x2257f1){socket['emit'](_0xb099('0x72'),{'UserId':_0x2257f1['id'],'OpenchannelQueueId':_0x3246cb['id']});});});});});}})[_0xb099('0x27')](respondWithStatusCode(_0x167d79,null))[_0xb099('0x47')](handleError(_0x167d79,null));};exports[_0xb099('0x73')]=function(_0x15f229,_0x2859be,_0x46c03a){return db[_0xb099('0x65')][_0xb099('0x45')]({'where':{'id':_0x15f229[_0xb099('0x32')][_0xb099('0x68')]},'attributes':['id'],'include':[{'model':db[_0xb099('0x5b')],'as':_0xb099('0x69'),'attributes':['id'],'raw':!![]}]})[_0xb099('0x27')](handleEntityNotFound(_0x2859be,null))[_0xb099('0x27')](function(_0x1e02ae){var _0x35d024=_['map'](_0x1e02ae,'id');var _0xd237d1=[];var _0x27569d=[];var _0x520214=squel[_0xb099('0x74')]();_0x520214[_0xb099('0x75')](_0xb099('0x76'))[_0xb099('0x77')](_0xb099('0x78'),'tq')[_0xb099('0x79')](_0xb099('0x7a'),'ut',_0xb099('0x7b'))[_0xb099('0x3e')](_0xb099('0x7c'),_0x15f229['params']['id']);for(var _0x5f5554=0x0;_0x5f5554<_0x1e02ae[_0xb099('0x38')];_0x5f5554+=0x1){let _0x5524af=_0x1e02ae[_0x5f5554];for(var _0x474ab7=0x0;_0x474ab7<_0x5524af[_0xb099('0x69')][_0xb099('0x38')];_0x474ab7+=0x1){let _0x32cc68=_0x5524af[_0xb099('0x69')][_0x474ab7];var _0x24251a=_0x520214[_0xb099('0x7d')]();_0x24251a[_0xb099('0x3e')]('ut.UserId\x20=\x20?',_0x32cc68['id']);_0x27569d['push'](db['sequelize'][_0xb099('0x32')](_0x24251a[_0xb099('0x7e')](),{'type':db[_0xb099('0x6e')][_0xb099('0x7f')][_0xb099('0x80')]})[_0xb099('0x27')](function(_0x281de4){if(_0x281de4[_0xb099('0x38')]===0x1){return _0x32cc68['id'];}else{var _0x327b30=_[_0xb099('0x81')](_[_0xb099('0x40')](_0x281de4,'TeamId'),function(_0x393933){return _[_0xb099('0x82')](_0x35d024,_0x393933);});if(_0x327b30){return _0x32cc68['id'];}}}));}}return BPromise[_0xb099('0x83')](_0x27569d)['then'](function(_0x155fe4){_0xd237d1=_(_0xd237d1)['union'](_0x155fe4)[_0xb099('0x84')]()[_0xb099('0x85')]();return db[_0xb099('0x43')][_0xb099('0x4b')]({'where':{'id':_0x15f229[_0xb099('0x49')]['id']}})[_0xb099('0x27')](function(_0x13d242){return db[_0xb099('0x6e')]['transaction'](function(_0x11f2f4){return _0x13d242[_0xb099('0x73')](_0x15f229[_0xb099('0x32')][_0xb099('0x68')],{'transaction':_0x11f2f4})[_0xb099('0x27')](function(){if(!_[_0xb099('0x86')](_0xd237d1)){return _0x13d242[_0xb099('0x87')](_0xd237d1,{'transaction':_0x11f2f4});}})[_0xb099('0x27')](function(){_0xd237d1['forEach'](function(_0x2f543e){socket[_0xb099('0x88')]('userOpenchannelQueue:remove',{'UserId':_0x2f543e,'OpenchannelQueueId':_0x13d242['id']});});});});});});})[_0xb099('0x27')](respondWithStatusCode(_0x2859be,null))[_0xb099('0x47')](handleError(_0x2859be,null));};exports[_0xb099('0x89')]=function(_0x2484f5,_0xf52ab9,_0x11de46){return db['OpenchannelQueue'][_0xb099('0x4b')]({'where':{'id':_0x2484f5[_0xb099('0x49')]['id']}})[_0xb099('0x27')](handleEntityNotFound(_0xf52ab9,null))[_0xb099('0x27')](function(_0x55d4b5){if(_0x55d4b5){return _0x55d4b5[_0xb099('0x89')](_0x2484f5[_0xb099('0x4d')]['ids'],_['omit'](_0x2484f5[_0xb099('0x4d')],['ids','id'])||{})[_0xb099('0x8a')](function(_0x417cc6){for(var _0x137321=0x0;_0x137321<_0x2484f5[_0xb099('0x4d')][_0xb099('0x68')][_0xb099('0x38')];_0x137321+=0x1){socket[_0xb099('0x88')]('userOpenchannelQueue:save',{'UserId':Number(_0x2484f5[_0xb099('0x4d')][_0xb099('0x68')][_0x137321]),'OpenchannelQueueId':Number(_0x2484f5[_0xb099('0x49')]['id'])});}return _0x417cc6;});}})['then'](respondWithResult(_0xf52ab9,null))[_0xb099('0x47')](handleError(_0xf52ab9,null));};exports[_0xb099('0x87')]=function(_0x39fd0e,_0x4d0425,_0x258f06){return db[_0xb099('0x43')][_0xb099('0x4b')]({'where':{'id':_0x39fd0e[_0xb099('0x49')]['id']}})[_0xb099('0x27')](handleEntityNotFound(_0x4d0425,null))[_0xb099('0x27')](function(_0x3b162e){if(_0x3b162e){return _0x3b162e[_0xb099('0x87')](_0x39fd0e[_0xb099('0x32')][_0xb099('0x68')])['then'](function(){if(_['isArray'](_0x39fd0e['query'][_0xb099('0x68')])){for(var _0x1d9c7d=0x0;_0x1d9c7d<_0x39fd0e[_0xb099('0x32')][_0xb099('0x68')]['length'];_0x1d9c7d+=0x1){socket['emit'](_0xb099('0x8b'),{'UserId':Number(_0x39fd0e[_0xb099('0x32')][_0xb099('0x68')][_0x1d9c7d]),'OpenchannelQueueId':Number(_0x39fd0e['params']['id'])});}}else{socket[_0xb099('0x88')](_0xb099('0x8b'),{'UserId':Number(_0x39fd0e[_0xb099('0x32')][_0xb099('0x68')]),'OpenchannelQueueId':Number(_0x39fd0e[_0xb099('0x49')]['id'])});}});}})[_0xb099('0x27')](respondWithStatusCode(_0x4d0425,null))['catch'](handleError(_0x4d0425,null));};exports['getAgents']=function(_0x4d78d3,_0x9960ed,_0xaf4b66){var _0x4e9f3e={};var _0x140d38={};var _0x16d19a;var _0x50ef9d;return db[_0xb099('0x43')][_0xb099('0x57')]({'where':{'id':_0x4d78d3[_0xb099('0x49')]['id']}})[_0xb099('0x27')](handleEntityNotFound(_0x9960ed,null))[_0xb099('0x27')](function(_0x4452c7){if(_0x4452c7){_0x16d19a=_0x4452c7;_0x140d38[_0xb099('0x35')]=_[_0xb099('0x33')](db[_0xb099('0x5b')][_0xb099('0x2f')]);_0x140d38['query']=_[_0xb099('0x33')](_0x4d78d3[_0xb099('0x32')]);_0x140d38[_0xb099('0x3b')]=_[_0xb099('0x34')](_0x140d38[_0xb099('0x35')],_0x140d38[_0xb099('0x32')]);_0x4e9f3e[_0xb099('0x36')]=_[_0xb099('0x34')](_0x140d38[_0xb099('0x35')],qs[_0xb099('0x37')](_0x4d78d3[_0xb099('0x32')][_0xb099('0x37')]));_0x4e9f3e[_0xb099('0x36')]=_0x4e9f3e[_0xb099('0x36')]['length']?_0x4e9f3e['attributes']:_0x140d38[_0xb099('0x35')];_0x4e9f3e['order']=qs['sort'](_0x4d78d3[_0xb099('0x32')][_0xb099('0x3a')]);_0x4e9f3e[_0xb099('0x3e')]=qs['filters'](_[_0xb099('0x3c')](_0x4d78d3['query'],_0x140d38[_0xb099('0x3b')]));if(_0x4d78d3[_0xb099('0x32')][_0xb099('0x3d')]){_0x4e9f3e['where']=_['merge'](_0x4e9f3e[_0xb099('0x3e')],{'$or':_[_0xb099('0x40')](_0x4e9f3e[_0xb099('0x36')],function(_0x4fd7fa){var _0x1b3932={};_0x1b3932[_0x4fd7fa]={'$like':'%'+_0x4d78d3[_0xb099('0x32')][_0xb099('0x3d')]+'%'};return _0x1b3932;})});}_0x4e9f3e=_[_0xb099('0x3f')]({},_0x4e9f3e,_0x4d78d3[_0xb099('0x42')]);return _0x16d19a[_0xb099('0x8c')](_0x4e9f3e);}})[_0xb099('0x27')](function(_0x18cb4d){if(_0x18cb4d){_0x50ef9d=_0x18cb4d[_0xb099('0x38')];if(!_0x4d78d3['query'][_0xb099('0x59')](_0xb099('0x39'))){_0x4e9f3e[_0xb099('0x20')]=qs['limit'](_0x4d78d3['query'][_0xb099('0x20')]);_0x4e9f3e[_0xb099('0x1f')]=qs[_0xb099('0x1f')](_0x4d78d3[_0xb099('0x32')][_0xb099('0x1f')]);}return _0x16d19a['getAgents'](_0x4e9f3e);}})['then'](function(_0x5b4ec0){if(_0x5b4ec0){return _0x5b4ec0?{'count':_0x50ef9d,'rows':_0x5b4ec0}:null;}})[_0xb099('0x27')](respondWithResult(_0x9960ed,null))[_0xb099('0x47')](handleError(_0x9960ed,null));};
\ No newline at end of file
+var _0x4ad9=['findOne','UserOpenchannelQueue','hasOwnProperty','filter','User','findAndCountAll','UserId','agent','openchannelPause','createdAt','rows','%s/%s','SIP','updatedAt','getTeams','Team','Agents','online','voicePause','flatMap','transaction','each','findOrCreate','userOpenchannelQueue:save','removeTeams','ids','select','field','from','team_has_openchannel_queues','join','user_has_teams','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','sequelize','QueryTypes','every','includes','union','compact','value','isEmpty','removeAgents','forEach','emit','userOpenchannelQueue:remove','addAgents','omit','spread','isArray','getAgents','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','get','OpenchannelQueues','UserProfileResource','destroy','error','name','send','index','OpenchannelQueue','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','VIRTUAL','options','includeAll','include','findAll','catch','params','merge','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers'];(function(_0x261969,_0x1cb619){var _0x22feaa=function(_0x4f1243){while(--_0x4f1243){_0x261969['push'](_0x261969['shift']());}};_0x22feaa(++_0x1cb619);}(_0x4ad9,0xbe));var _0x94ad=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x4ad9[_0x3bf83f];return _0x22c4a9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x94ad('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x94ad('0x1'));var rp=require(_0x94ad('0x2'));var moment=require(_0x94ad('0x3'));var BPromise=require(_0x94ad('0x4'));var Mustache=require(_0x94ad('0x5'));var util=require(_0x94ad('0x6'));var path=require(_0x94ad('0x7'));var sox=require(_0x94ad('0x8'));var csv=require(_0x94ad('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x94ad('0xa'));var _=require(_0x94ad('0xb'));var squel=require(_0x94ad('0xc'));var crypto=require(_0x94ad('0xd'));var jsforce=require(_0x94ad('0xe'));var deskjs=require(_0x94ad('0xf'));var toCsv=require(_0x94ad('0x9'));var querystring=require(_0x94ad('0x10'));var Papa=require(_0x94ad('0x11'));var Redis=require(_0x94ad('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x94ad('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x94ad('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x94ad('0x15'))['db'];config['redis']=_['defaults'](config[_0x94ad('0x16')],{'host':_0x94ad('0x17'),'port':0x18eb});var socket=require(_0x94ad('0x18'))(new Redis(config['redis']));require('./openchannelQueue.socket')['register'](socket);function respondWithStatusCode(_0x55ac6b,_0x53eeb4){_0x53eeb4=_0x53eeb4||0xcc;return function(_0x5d447b){if(_0x5d447b){return _0x55ac6b[_0x94ad('0x19')](_0x53eeb4);}return _0x55ac6b['status'](_0x53eeb4)[_0x94ad('0x1a')]();};}function respondWithResult(_0x3c3940,_0x2f5fd3){_0x2f5fd3=_0x2f5fd3||0xc8;return function(_0x4fa504){if(_0x4fa504){return _0x3c3940[_0x94ad('0x1b')](_0x2f5fd3)[_0x94ad('0x1c')](_0x4fa504);}};}function respondWithFilteredResult(_0x57b0f4,_0x20befd){return function(_0xee2c0c){if(_0xee2c0c){var _0x24927a=typeof _0x20befd[_0x94ad('0x1d')]===_0x94ad('0x1e')&&typeof _0x20befd[_0x94ad('0x1f')]==='undefined';var _0x7aea2e=_0xee2c0c['count'];var _0xf1b1a0=_0x24927a?0x0:_0x20befd[_0x94ad('0x1d')];var _0x1acc72=_0x24927a?_0xee2c0c[_0x94ad('0x20')]:_0x20befd['offset']+_0x20befd['limit'];var _0x325fd9;if(_0x1acc72>=_0x7aea2e){_0x1acc72=_0x7aea2e;_0x325fd9=0xc8;}else{_0x325fd9=0xce;}_0x57b0f4[_0x94ad('0x1b')](_0x325fd9);return _0x57b0f4[_0x94ad('0x21')](_0x94ad('0x22'),_0xf1b1a0+'-'+_0x1acc72+'/'+_0x7aea2e)['json'](_0xee2c0c);}return null;};}function patchUpdates(_0x424237){return function(_0x148cd4){try{jsonpatch[_0x94ad('0x23')](_0x148cd4,_0x424237,!![]);}catch(_0x31d47a){return BPromise['reject'](_0x31d47a);}return _0x148cd4[_0x94ad('0x24')]();};}function saveUpdates(_0x253aa9,_0x244e0f){return function(_0x1983db){if(_0x1983db){return _0x1983db[_0x94ad('0x25')](_0x253aa9)[_0x94ad('0x26')](function(_0x1c05c3){return _0x1c05c3;});}return null;};}function removeEntity(_0x35e10b,_0x57e6e8){return function(_0x29447c){if(_0x29447c){return _0x29447c['destroy']()['then'](function(){var _0x2a3659=_0x29447c[_0x94ad('0x27')]({'plain':!![]});var _0x3186e2=_0x94ad('0x28');return db[_0x94ad('0x29')][_0x94ad('0x2a')]({'where':{'type':_0x3186e2,'resourceId':_0x2a3659['id']}})['then'](function(){return _0x29447c;});})[_0x94ad('0x26')](function(){_0x35e10b[_0x94ad('0x1b')](0xcc)[_0x94ad('0x1a')]();});}};}function handleEntityNotFound(_0x56d4da,_0x36ef82){return function(_0x543e99){if(!_0x543e99){_0x56d4da[_0x94ad('0x19')](0x194);}return _0x543e99;};}function handleError(_0x45c9d9,_0x49c856){_0x49c856=_0x49c856||0x1f4;return function(_0x1abecc){logger[_0x94ad('0x2b')](_0x1abecc['stack']);if(_0x1abecc[_0x94ad('0x2c')]){delete _0x1abecc[_0x94ad('0x2c')];}_0x45c9d9[_0x94ad('0x1b')](_0x49c856)[_0x94ad('0x2d')](_0x1abecc);};}exports[_0x94ad('0x2e')]=function(_0x38a56f,_0x445bfd){var _0x3beb5d={},_0x2c12bc={},_0x433036={'count':0x0,'rows':[]};var _0x115b5e=_['map'](db[_0x94ad('0x2f')][_0x94ad('0x30')],function(_0x81d57d){return{'name':_0x81d57d[_0x94ad('0x31')],'type':_0x81d57d[_0x94ad('0x32')]['key']};});_0x2c12bc[_0x94ad('0x33')]=_[_0x94ad('0x34')](_0x115b5e,_0x94ad('0x2c'));_0x2c12bc[_0x94ad('0x35')]=_[_0x94ad('0x36')](_0x38a56f[_0x94ad('0x35')]);_0x2c12bc[_0x94ad('0x37')]=_[_0x94ad('0x38')](_0x2c12bc[_0x94ad('0x33')],_0x2c12bc[_0x94ad('0x35')]);_0x3beb5d['attributes']=_[_0x94ad('0x38')](_0x2c12bc[_0x94ad('0x33')],qs['fields'](_0x38a56f[_0x94ad('0x35')][_0x94ad('0x39')]));_0x3beb5d[_0x94ad('0x3a')]=_0x3beb5d[_0x94ad('0x3a')][_0x94ad('0x3b')]?_0x3beb5d[_0x94ad('0x3a')]:_0x2c12bc[_0x94ad('0x33')];if(!_0x38a56f[_0x94ad('0x35')]['hasOwnProperty'](_0x94ad('0x3c'))){_0x3beb5d[_0x94ad('0x1f')]=qs[_0x94ad('0x1f')](_0x38a56f[_0x94ad('0x35')][_0x94ad('0x1f')]);_0x3beb5d[_0x94ad('0x1d')]=qs[_0x94ad('0x1d')](_0x38a56f[_0x94ad('0x35')][_0x94ad('0x1d')]);}_0x3beb5d[_0x94ad('0x3d')]=qs[_0x94ad('0x3e')](_0x38a56f[_0x94ad('0x35')]['sort']);_0x3beb5d[_0x94ad('0x3f')]=qs['filters'](_[_0x94ad('0x40')](_0x38a56f[_0x94ad('0x35')],_0x2c12bc[_0x94ad('0x37')]),_0x115b5e);if(_0x38a56f['query']['filter']){_0x3beb5d['where']=_['merge'](_0x3beb5d[_0x94ad('0x3f')],{'$or':_[_0x94ad('0x34')](_0x115b5e,function(_0x470000){if(_0x470000[_0x94ad('0x32')]!==_0x94ad('0x41')){var _0x43eb68={};_0x43eb68[_0x470000[_0x94ad('0x2c')]]={'$like':'%'+_0x38a56f['query']['filter']+'%'};return _0x43eb68;}})});}_0x3beb5d=_['merge']({},_0x3beb5d,_0x38a56f[_0x94ad('0x42')]);var _0x3e8383={'where':_0x3beb5d[_0x94ad('0x3f')]};return db[_0x94ad('0x2f')][_0x94ad('0x20')](_0x3e8383)[_0x94ad('0x26')](function(_0x19a5ca){_0x433036[_0x94ad('0x20')]=_0x19a5ca;if(_0x38a56f[_0x94ad('0x35')][_0x94ad('0x43')]){_0x3beb5d[_0x94ad('0x44')]=[{'all':!![]}];}return db[_0x94ad('0x2f')][_0x94ad('0x45')](_0x3beb5d);})[_0x94ad('0x26')](function(_0x1dce15){_0x433036['rows']=_0x1dce15;return _0x433036;})['then'](respondWithFilteredResult(_0x445bfd,_0x3beb5d))[_0x94ad('0x46')](handleError(_0x445bfd,null));};exports['show']=function(_0x279997,_0x1fdb59){var _0x1fdac3={'raw':!![],'where':{'id':_0x279997[_0x94ad('0x47')]['id']}},_0x74d010={};_0x74d010[_0x94ad('0x33')]=_[_0x94ad('0x36')](db[_0x94ad('0x2f')]['rawAttributes']);_0x74d010[_0x94ad('0x35')]=_[_0x94ad('0x36')](_0x279997['query']);_0x74d010['filters']=_[_0x94ad('0x38')](_0x74d010[_0x94ad('0x33')],_0x74d010['query']);_0x1fdac3[_0x94ad('0x3a')]=_[_0x94ad('0x38')](_0x74d010[_0x94ad('0x33')],qs[_0x94ad('0x39')](_0x279997['query'][_0x94ad('0x39')]));_0x1fdac3[_0x94ad('0x3a')]=_0x1fdac3[_0x94ad('0x3a')][_0x94ad('0x3b')]?_0x1fdac3[_0x94ad('0x3a')]:_0x74d010[_0x94ad('0x33')];if(_0x279997[_0x94ad('0x35')][_0x94ad('0x43')]){_0x1fdac3[_0x94ad('0x44')]=[{'all':!![]}];}_0x1fdac3=_[_0x94ad('0x48')]({},_0x1fdac3,_0x279997[_0x94ad('0x42')]);return db['OpenchannelQueue'][_0x94ad('0x49')](_0x1fdac3)[_0x94ad('0x26')](handleEntityNotFound(_0x1fdb59,null))[_0x94ad('0x26')](respondWithResult(_0x1fdb59,null))['catch'](handleError(_0x1fdb59,null));};exports[_0x94ad('0x4a')]=function(_0x5e1103,_0x187691){return db[_0x94ad('0x2f')][_0x94ad('0x4a')](_0x5e1103[_0x94ad('0x4b')],{})['then'](function(_0x18e54a){var _0x4b8912=_0x5e1103[_0x94ad('0x4c')][_0x94ad('0x27')]({'plain':!![]});if(!_0x4b8912)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4b8912[_0x94ad('0x4d')]===_0x94ad('0x4c')){var _0x191c90=_0x18e54a[_0x94ad('0x27')]({'plain':!![]});var _0x126274=_0x94ad('0x28');return db[_0x94ad('0x4e')][_0x94ad('0x49')]({'where':{'name':_0x126274,'userProfileId':_0x4b8912[_0x94ad('0x4f')]},'raw':!![]})['then'](function(_0x2b4ed3){if(_0x2b4ed3&&_0x2b4ed3[_0x94ad('0x50')]===0x0){return db['UserProfileResource'][_0x94ad('0x4a')]({'name':_0x191c90[_0x94ad('0x2c')],'resourceId':_0x191c90['id'],'type':_0x2b4ed3[_0x94ad('0x2c')],'sectionId':_0x2b4ed3['id']},{})[_0x94ad('0x26')](function(){return _0x18e54a;});}else{return _0x18e54a;}})[_0x94ad('0x46')](function(_0x4eeaf3){logger[_0x94ad('0x2b')](_0x94ad('0x51'),_0x4eeaf3);throw _0x4eeaf3;});}return _0x18e54a;})[_0x94ad('0x26')](respondWithResult(_0x187691,0xc9))[_0x94ad('0x46')](handleError(_0x187691,null));};exports[_0x94ad('0x25')]=function(_0x5c405e,_0x54f340){if(_0x5c405e[_0x94ad('0x4b')]['id']){delete _0x5c405e[_0x94ad('0x4b')]['id'];}return db[_0x94ad('0x2f')][_0x94ad('0x49')]({'where':{'id':_0x5c405e[_0x94ad('0x47')]['id']}})[_0x94ad('0x26')](handleEntityNotFound(_0x54f340,null))['then'](saveUpdates(_0x5c405e['body'],null))[_0x94ad('0x26')](respondWithResult(_0x54f340,null))[_0x94ad('0x46')](handleError(_0x54f340,null));};exports[_0x94ad('0x2a')]=function(_0x44860a,_0x20b968){return db[_0x94ad('0x2f')][_0x94ad('0x49')]({'where':{'id':_0x44860a[_0x94ad('0x47')]['id']}})['then'](handleEntityNotFound(_0x20b968,null))['then'](removeEntity(_0x20b968,null))[_0x94ad('0x46')](handleError(_0x20b968,null));};exports[_0x94ad('0x52')]=function(_0x2412c4,_0x14aba6){return db['OpenchannelQueue'][_0x94ad('0x52')]()[_0x94ad('0x26')](respondWithResult(_0x14aba6,null))[_0x94ad('0x46')](handleError(_0x14aba6,null));};exports[_0x94ad('0x53')]=function(_0x297604,_0x5f73e6,_0x46297a){var _0x350af7={'raw':!![],'where':{}},_0x3f14a7={},_0x3ba468;return db[_0x94ad('0x2f')][_0x94ad('0x54')]({'where':{'id':_0x297604[_0x94ad('0x47')]['id']}})[_0x94ad('0x26')](handleEntityNotFound(_0x5f73e6,null))[_0x94ad('0x26')](function(_0x15ca9a){if(_0x15ca9a){_0x3ba468=_0x15ca9a[_0x94ad('0x27')]({'plain':!![]});_0x3f14a7['model']=_[_0x94ad('0x36')](db[_0x94ad('0x55')][_0x94ad('0x30')]);_0x3f14a7[_0x94ad('0x35')]=_[_0x94ad('0x36')](_0x297604[_0x94ad('0x35')]);_0x3f14a7['filters']=_[_0x94ad('0x38')](_0x3f14a7[_0x94ad('0x33')],_0x3f14a7[_0x94ad('0x35')]);_0x350af7[_0x94ad('0x3a')]=_[_0x94ad('0x38')](_0x3f14a7['model'],qs['fields'](_0x297604[_0x94ad('0x35')][_0x94ad('0x39')]));_0x350af7[_0x94ad('0x3a')]=_0x350af7[_0x94ad('0x3a')][_0x94ad('0x3b')]?_0x350af7[_0x94ad('0x3a')]:_0x3f14a7[_0x94ad('0x33')];if(!_0x297604[_0x94ad('0x35')][_0x94ad('0x56')](_0x94ad('0x3c'))){_0x350af7[_0x94ad('0x1f')]=qs[_0x94ad('0x1f')](_0x297604[_0x94ad('0x35')][_0x94ad('0x1f')]);_0x350af7[_0x94ad('0x1d')]=qs[_0x94ad('0x1d')](_0x297604['query']['offset']);}_0x350af7[_0x94ad('0x3d')]=qs['sort'](_0x297604[_0x94ad('0x35')]['sort']);_0x350af7[_0x94ad('0x3f')]=qs[_0x94ad('0x37')](_[_0x94ad('0x40')](_0x297604[_0x94ad('0x35')],_0x3f14a7[_0x94ad('0x37')]));_0x350af7[_0x94ad('0x3f')]['OpenchannelQueueId']=_0x15ca9a['id'];if(_0x297604[_0x94ad('0x35')][_0x94ad('0x57')]){_0x350af7[_0x94ad('0x3f')]=_['merge'](_0x350af7[_0x94ad('0x3f')],{'$or':_[_0x94ad('0x34')](_0x350af7[_0x94ad('0x3a')],function(_0xade5b5){var _0x477020={};_0x477020[_0xade5b5]={'$like':'%'+_0x297604[_0x94ad('0x35')]['filter']+'%'};return _0x477020;})});}_0x350af7=_[_0x94ad('0x48')]({},_0x350af7,_0x297604[_0x94ad('0x42')]);return db[_0x94ad('0x55')][_0x94ad('0x45')](_0x350af7);}})['then'](function(_0x426155){if(_0x426155){return db[_0x94ad('0x58')][_0x94ad('0x59')]({'where':{'id':_[_0x94ad('0x34')](_0x426155,_0x94ad('0x5a')),'role':_0x94ad('0x5b')},'attributes':['id',_0x94ad('0x2c'),_0x94ad('0x5c'),'updatedAt',_0x94ad('0x5d')]});}})['then'](function(_0x1b836a){if(_0x1b836a){return{'count':_0x1b836a[_0x94ad('0x20')],'rows':_[_0x94ad('0x34')](_0x1b836a[_0x94ad('0x5e')],function(_0x4155fd){return{'membername':_0x4155fd[_0x94ad('0x2c')],'UserId':_0x4155fd['id'],'queue_name':_0x3ba468['name'],'OpenchannelQueueId':_0x3ba468['id'],'interface':util['format'](_0x94ad('0x5f'),_0x94ad('0x60'),_0x4155fd[_0x94ad('0x2c')]),'penalty':0x0,'paused':_0x4155fd[_0x94ad('0x5c')],'createdAt':_0x4155fd[_0x94ad('0x5d')],'updatedAt':_0x4155fd[_0x94ad('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x5f73e6,_0x350af7))[_0x94ad('0x46')](handleError(_0x5f73e6,null));};exports[_0x94ad('0x62')]=function(_0x216e40,_0x3976b7,_0x3158dd){var _0x313e13={};var _0x3196ab={};var _0x1d41c7;var _0x373b48;return db['OpenchannelQueue']['findOne']({'where':{'id':_0x216e40[_0x94ad('0x47')]['id']}})['then'](handleEntityNotFound(_0x3976b7,null))[_0x94ad('0x26')](function(_0xa09380){if(_0xa09380){_0x1d41c7=_0xa09380;_0x3196ab['model']=_[_0x94ad('0x36')](db[_0x94ad('0x63')][_0x94ad('0x30')]);_0x3196ab[_0x94ad('0x35')]=_[_0x94ad('0x36')](_0x216e40[_0x94ad('0x35')]);_0x3196ab[_0x94ad('0x37')]=_[_0x94ad('0x38')](_0x3196ab[_0x94ad('0x33')],_0x3196ab[_0x94ad('0x35')]);_0x313e13['attributes']=_[_0x94ad('0x38')](_0x3196ab['model'],qs[_0x94ad('0x39')](_0x216e40[_0x94ad('0x35')]['fields']));_0x313e13[_0x94ad('0x3a')]=_0x313e13[_0x94ad('0x3a')]['length']?_0x313e13[_0x94ad('0x3a')]:_0x3196ab[_0x94ad('0x33')];_0x313e13[_0x94ad('0x3d')]=qs[_0x94ad('0x3e')](_0x216e40['query'][_0x94ad('0x3e')]);_0x313e13[_0x94ad('0x3f')]=qs[_0x94ad('0x37')](_[_0x94ad('0x40')](_0x216e40['query'],_0x3196ab[_0x94ad('0x37')]));if(_0x216e40[_0x94ad('0x35')][_0x94ad('0x57')]){_0x313e13['where']=_[_0x94ad('0x48')](_0x313e13[_0x94ad('0x3f')],{'$or':_[_0x94ad('0x34')](_0x313e13[_0x94ad('0x3a')],function(_0x565cb4){var _0x596ebe={};_0x596ebe[_0x565cb4]={'$like':'%'+_0x216e40['query'][_0x94ad('0x57')]+'%'};return _0x596ebe;})});}_0x313e13=_[_0x94ad('0x48')]({},_0x313e13,_0x216e40['options']);return _0x1d41c7[_0x94ad('0x62')](_0x313e13);}})['then'](function(_0x2fc775){if(_0x2fc775){_0x373b48=_0x2fc775[_0x94ad('0x3b')];if(!_0x216e40[_0x94ad('0x35')][_0x94ad('0x56')]('nolimit')){_0x313e13[_0x94ad('0x1f')]=qs[_0x94ad('0x1f')](_0x216e40[_0x94ad('0x35')]['limit']);_0x313e13[_0x94ad('0x1d')]=qs['offset'](_0x216e40[_0x94ad('0x35')][_0x94ad('0x1d')]);}return _0x1d41c7[_0x94ad('0x62')](_0x313e13);}})[_0x94ad('0x26')](function(_0x37a93a){if(_0x37a93a){return _0x37a93a?{'count':_0x373b48,'rows':_0x37a93a}:null;}})['then'](respondWithResult(_0x3976b7,null))['catch'](handleError(_0x3976b7,null));};exports['addTeams']=function(_0x509898,_0x41b67f,_0x1f57d8){var _0x26c1b3=_0x509898[_0x94ad('0x4b')]['ids'];return db[_0x94ad('0x63')]['findAll']({'where':{'id':_0x26c1b3},'attributes':['id'],'include':[{'model':db[_0x94ad('0x58')],'as':_0x94ad('0x64'),'attributes':['id',_0x94ad('0x2c'),_0x94ad('0x65'),_0x94ad('0x66'),'interface'],'raw':!![]}]})['then'](function(_0x4025a1){if(_0x4025a1){var _0x140fc1=_[_0x94ad('0x67')](_0x4025a1,function(_0x513dd4){var _0xcb3c99=_0x513dd4['get']({'plain':!![]});return _0xcb3c99[_0x94ad('0x64')];});return db['OpenchannelQueue'][_0x94ad('0x49')]({'where':{'id':_0x509898[_0x94ad('0x47')]['id']}})[_0x94ad('0x26')](function(_0x2162f8){return db['sequelize'][_0x94ad('0x68')](function(_0x593d2e){return _0x2162f8['addTeams'](_0x26c1b3,{'transaction':_0x593d2e})[_0x94ad('0x26')](function(){return BPromise[_0x94ad('0x69')](_0x140fc1,function(_0x314402){return db[_0x94ad('0x55')][_0x94ad('0x6a')]({'where':{'UserId':_0x314402['id'],'OpenchannelQueueId':_0x509898[_0x94ad('0x47')]['id']},'transaction':_0x593d2e});});})[_0x94ad('0x26')](function(){_0x140fc1['forEach'](function(_0x4a268f){socket['emit'](_0x94ad('0x6b'),{'UserId':_0x4a268f['id'],'OpenchannelQueueId':_0x2162f8['id']});});});});});}})['then'](respondWithStatusCode(_0x41b67f,null))[_0x94ad('0x46')](handleError(_0x41b67f,null));};exports[_0x94ad('0x6c')]=function(_0x42bd81,_0x181643,_0x27e091){return db[_0x94ad('0x63')]['findAll']({'where':{'id':_0x42bd81[_0x94ad('0x35')][_0x94ad('0x6d')]},'attributes':['id'],'include':[{'model':db[_0x94ad('0x58')],'as':_0x94ad('0x64'),'attributes':['id'],'raw':!![]}]})[_0x94ad('0x26')](handleEntityNotFound(_0x181643,null))['then'](function(_0x255556){var _0xea54a3=_[_0x94ad('0x34')](_0x255556,'id');var _0x3078f0=[];var _0x61bc6b=[];var _0x6b8751=squel[_0x94ad('0x6e')]();_0x6b8751[_0x94ad('0x6f')]('tq.TeamId')[_0x94ad('0x70')](_0x94ad('0x71'),'tq')[_0x94ad('0x72')](_0x94ad('0x73'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x94ad('0x3f')](_0x94ad('0x74'),_0x42bd81[_0x94ad('0x47')]['id']);for(var _0x17212b=0x0;_0x17212b<_0x255556[_0x94ad('0x3b')];_0x17212b+=0x1){let _0x2bf67d=_0x255556[_0x17212b];for(var _0x15543f=0x0;_0x15543f<_0x2bf67d[_0x94ad('0x64')][_0x94ad('0x3b')];_0x15543f+=0x1){let _0xbb33a1=_0x2bf67d[_0x94ad('0x64')][_0x15543f];var _0x1fdcec=_0x6b8751[_0x94ad('0x75')]();_0x1fdcec[_0x94ad('0x3f')](_0x94ad('0x76'),_0xbb33a1['id']);_0x61bc6b['push'](db['sequelize'][_0x94ad('0x35')](_0x1fdcec[_0x94ad('0x77')](),{'type':db[_0x94ad('0x78')][_0x94ad('0x79')]['SELECT']})[_0x94ad('0x26')](function(_0x564869){if(_0x564869[_0x94ad('0x3b')]===0x1){return _0xbb33a1['id'];}else{var _0x7e305f=_[_0x94ad('0x7a')](_[_0x94ad('0x34')](_0x564869,'TeamId'),function(_0x26124d){return _[_0x94ad('0x7b')](_0xea54a3,_0x26124d);});if(_0x7e305f){return _0xbb33a1['id'];}}}));}}return BPromise['all'](_0x61bc6b)[_0x94ad('0x26')](function(_0x230d89){_0x3078f0=_(_0x3078f0)[_0x94ad('0x7c')](_0x230d89)[_0x94ad('0x7d')]()[_0x94ad('0x7e')]();return db[_0x94ad('0x2f')][_0x94ad('0x49')]({'where':{'id':_0x42bd81[_0x94ad('0x47')]['id']}})[_0x94ad('0x26')](function(_0x58d560){return db[_0x94ad('0x78')][_0x94ad('0x68')](function(_0x1a4a01){return _0x58d560[_0x94ad('0x6c')](_0x42bd81[_0x94ad('0x35')]['ids'],{'transaction':_0x1a4a01})[_0x94ad('0x26')](function(){if(!_[_0x94ad('0x7f')](_0x3078f0)){return _0x58d560[_0x94ad('0x80')](_0x3078f0,{'transaction':_0x1a4a01});}})[_0x94ad('0x26')](function(){_0x3078f0[_0x94ad('0x81')](function(_0x3c847f){socket[_0x94ad('0x82')](_0x94ad('0x83'),{'UserId':_0x3c847f,'OpenchannelQueueId':_0x58d560['id']});});});});});});})[_0x94ad('0x26')](respondWithStatusCode(_0x181643,null))[_0x94ad('0x46')](handleError(_0x181643,null));};exports['addAgents']=function(_0x18ef27,_0x503bdf,_0x58ee63){return db[_0x94ad('0x2f')][_0x94ad('0x49')]({'where':{'id':_0x18ef27[_0x94ad('0x47')]['id']}})[_0x94ad('0x26')](handleEntityNotFound(_0x503bdf,null))[_0x94ad('0x26')](function(_0x1bb05d){if(_0x1bb05d){return _0x1bb05d[_0x94ad('0x84')](_0x18ef27[_0x94ad('0x4b')][_0x94ad('0x6d')],_[_0x94ad('0x85')](_0x18ef27[_0x94ad('0x4b')],[_0x94ad('0x6d'),'id'])||{})[_0x94ad('0x86')](function(_0x51a062){for(var _0x385acc=0x0;_0x385acc<_0x18ef27['body'][_0x94ad('0x6d')]['length'];_0x385acc+=0x1){socket[_0x94ad('0x82')]('userOpenchannelQueue:save',{'UserId':Number(_0x18ef27['body'][_0x94ad('0x6d')][_0x385acc]),'OpenchannelQueueId':Number(_0x18ef27[_0x94ad('0x47')]['id'])});}return _0x51a062;});}})['then'](respondWithResult(_0x503bdf,null))[_0x94ad('0x46')](handleError(_0x503bdf,null));};exports[_0x94ad('0x80')]=function(_0x4d0d75,_0x291f53,_0x3c78f5){return db[_0x94ad('0x2f')]['find']({'where':{'id':_0x4d0d75[_0x94ad('0x47')]['id']}})['then'](handleEntityNotFound(_0x291f53,null))[_0x94ad('0x26')](function(_0x25f372){if(_0x25f372){return _0x25f372['removeAgents'](_0x4d0d75[_0x94ad('0x35')][_0x94ad('0x6d')])[_0x94ad('0x26')](function(){if(_[_0x94ad('0x87')](_0x4d0d75[_0x94ad('0x35')][_0x94ad('0x6d')])){for(var _0x29598f=0x0;_0x29598f<_0x4d0d75['query'][_0x94ad('0x6d')][_0x94ad('0x3b')];_0x29598f+=0x1){socket[_0x94ad('0x82')](_0x94ad('0x83'),{'UserId':Number(_0x4d0d75[_0x94ad('0x35')][_0x94ad('0x6d')][_0x29598f]),'OpenchannelQueueId':Number(_0x4d0d75[_0x94ad('0x47')]['id'])});}}else{socket[_0x94ad('0x82')](_0x94ad('0x83'),{'UserId':Number(_0x4d0d75['query']['ids']),'OpenchannelQueueId':Number(_0x4d0d75[_0x94ad('0x47')]['id'])});}});}})[_0x94ad('0x26')](respondWithStatusCode(_0x291f53,null))[_0x94ad('0x46')](handleError(_0x291f53,null));};exports[_0x94ad('0x88')]=function(_0x21a950,_0x2e12b3,_0x1edcf9){var _0x51652d={};var _0x53438d={};var _0xe10c19;var _0x26f73d;return db[_0x94ad('0x2f')]['findOne']({'where':{'id':_0x21a950[_0x94ad('0x47')]['id']}})[_0x94ad('0x26')](handleEntityNotFound(_0x2e12b3,null))['then'](function(_0x35c4d0){if(_0x35c4d0){_0xe10c19=_0x35c4d0;_0x53438d[_0x94ad('0x33')]=_[_0x94ad('0x36')](db[_0x94ad('0x58')]['rawAttributes']);_0x53438d['query']=_[_0x94ad('0x36')](_0x21a950[_0x94ad('0x35')]);_0x53438d[_0x94ad('0x37')]=_[_0x94ad('0x38')](_0x53438d[_0x94ad('0x33')],_0x53438d[_0x94ad('0x35')]);_0x51652d[_0x94ad('0x3a')]=_[_0x94ad('0x38')](_0x53438d[_0x94ad('0x33')],qs[_0x94ad('0x39')](_0x21a950[_0x94ad('0x35')][_0x94ad('0x39')]));_0x51652d[_0x94ad('0x3a')]=_0x51652d[_0x94ad('0x3a')]['length']?_0x51652d['attributes']:_0x53438d['model'];_0x51652d[_0x94ad('0x3d')]=qs[_0x94ad('0x3e')](_0x21a950['query']['sort']);_0x51652d['where']=qs['filters'](_[_0x94ad('0x40')](_0x21a950[_0x94ad('0x35')],_0x53438d[_0x94ad('0x37')]));if(_0x21a950[_0x94ad('0x35')][_0x94ad('0x57')]){_0x51652d[_0x94ad('0x3f')]=_[_0x94ad('0x48')](_0x51652d[_0x94ad('0x3f')],{'$or':_[_0x94ad('0x34')](_0x51652d['attributes'],function(_0x4c29e6){var _0x26d584={};_0x26d584[_0x4c29e6]={'$like':'%'+_0x21a950[_0x94ad('0x35')]['filter']+'%'};return _0x26d584;})});}_0x51652d=_[_0x94ad('0x48')]({},_0x51652d,_0x21a950[_0x94ad('0x42')]);return _0xe10c19[_0x94ad('0x88')](_0x51652d);}})[_0x94ad('0x26')](function(_0x2ac2f2){if(_0x2ac2f2){_0x26f73d=_0x2ac2f2[_0x94ad('0x3b')];if(!_0x21a950['query'][_0x94ad('0x56')](_0x94ad('0x3c'))){_0x51652d[_0x94ad('0x1f')]=qs['limit'](_0x21a950[_0x94ad('0x35')]['limit']);_0x51652d[_0x94ad('0x1d')]=qs[_0x94ad('0x1d')](_0x21a950[_0x94ad('0x35')][_0x94ad('0x1d')]);}return _0xe10c19[_0x94ad('0x88')](_0x51652d);}})['then'](function(_0x3a932d){if(_0x3a932d){return _0x3a932d?{'count':_0x26f73d,'rows':_0x3a932d}:null;}})[_0x94ad('0x26')](respondWithResult(_0x2e12b3,null))[_0x94ad('0x46')](handleError(_0x2e12b3,null));};
\ No newline at end of file
index 4f6209d..5cd7b6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc89c=['emit','hook','../../mysqldb','setMaxListeners','save','update'];(function(_0xbf8ebe,_0x3b69a5){var _0x1e25e8=function(_0x40c390){while(--_0x40c390){_0xbf8ebe['push'](_0xbf8ebe['shift']());}};_0x1e25e8(++_0x3b69a5);}(_0xc89c,0x1a6));var _0xcc89=function(_0x64958c,_0x43ed27){_0x64958c=_0x64958c-0x0;var _0x54e61f=_0xc89c[_0x64958c];return _0x54e61f;};'use strict';var EventEmitter=require('events');var OpenchannelQueue=require(_0xcc89('0x0'))['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0xcc89('0x1')](0x0);var events={'afterCreate':_0xcc89('0x2'),'afterUpdate':_0xcc89('0x3'),'afterDestroy':'remove'};function emitEvent(_0x23b5aa){return function(_0x31da67,_0x86fc13,_0x3d7bd1){OpenchannelQueueEvents[_0xcc89('0x4')](_0x23b5aa+':'+_0x31da67['id'],_0x31da67);OpenchannelQueueEvents[_0xcc89('0x4')](_0x23b5aa,_0x31da67);_0x3d7bd1(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelQueue[_0xcc89('0x5')](e,emitEvent(event));}}module['exports']=OpenchannelQueueEvents;
\ No newline at end of file
+var _0x3294=['emit','hook','events','OpenchannelQueue','setMaxListeners','save','update','remove'];(function(_0x4b4154,_0x38a122){var _0x340ed7=function(_0x1250b9){while(--_0x1250b9){_0x4b4154['push'](_0x4b4154['shift']());}};_0x340ed7(++_0x38a122);}(_0x3294,0x172));var _0x4329=function(_0x4d3bfb,_0x7baca8){_0x4d3bfb=_0x4d3bfb-0x0;var _0x330929=_0x3294[_0x4d3bfb];return _0x330929;};'use strict';var EventEmitter=require(_0x4329('0x0'));var OpenchannelQueue=require('../../mysqldb')['db'][_0x4329('0x1')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x4329('0x2')](0x0);var events={'afterCreate':_0x4329('0x3'),'afterUpdate':_0x4329('0x4'),'afterDestroy':_0x4329('0x5')};function emitEvent(_0x368c47){return function(_0x53ef7d,_0x4e9c0c,_0x12b38f){OpenchannelQueueEvents[_0x4329('0x6')](_0x368c47+':'+_0x53ef7d['id'],_0x53ef7d);OpenchannelQueueEvents[_0x4329('0x6')](_0x368c47,_0x53ef7d);_0x12b38f(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelQueue[_0x4329('0x7')](e,emitEvent(event));}}module['exports']=OpenchannelQueueEvents;
\ No newline at end of file
index 395eee0..eafea48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ca6=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./openchannelQueue.attributes','exports','define','OpenchannelQueue'];(function(_0x328aa1,_0x3ce2de){var _0x210ffc=function(_0x57d5e4){while(--_0x57d5e4){_0x328aa1['push'](_0x328aa1['shift']());}};_0x210ffc(++_0x3ce2de);}(_0x1ca6,0x108));var _0x61ca=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x1ca6[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0x61ca('0x0'));var util=require(_0x61ca('0x1'));var logger=require(_0x61ca('0x2'))(_0x61ca('0x3'));var moment=require(_0x61ca('0x4'));var BPromise=require(_0x61ca('0x5'));var rp=require(_0x61ca('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x61ca('0x7'));var attributes=require(_0x61ca('0x8'));module[_0x61ca('0x9')]=function(_0x1c8e36,_0x49928c){return _0x1c8e36[_0x61ca('0xa')](_0x61ca('0xb'),attributes,{'tableName':'openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x935c=['api','bluebird','request-promise','path','../../config/environment','exports','OpenchannelQueue','lodash','util','../../config/logger'];(function(_0x5265d5,_0x51a837){var _0x44899d=function(_0x13d39b){while(--_0x13d39b){_0x5265d5['push'](_0x5265d5['shift']());}};_0x44899d(++_0x51a837);}(_0x935c,0x115));var _0xc935=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0x935c[_0x1cc8fe];return _0x230054;};'use strict';var _=require(_0xc935('0x0'));var util=require(_0xc935('0x1'));var logger=require(_0xc935('0x2'))(_0xc935('0x3'));var moment=require('moment');var BPromise=require(_0xc935('0x4'));var rp=require(_0xc935('0x5'));var fs=require('fs');var path=require(_0xc935('0x6'));var rimraf=require('rimraf');var config=require(_0xc935('0x7'));var attributes=require('./openchannelQueue.attributes');module[_0xc935('0x8')]=function(_0x10fe52,_0x59bc51){return _0x10fe52['define'](_0xc935('0x9'),attributes,{'tableName':'openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 18afa05..2282577 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc4e=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','register','request','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw','where','attributes','limit','include','map','model','ShowOpenchannelQueue','find','util','moment'];(function(_0x3472ed,_0x492f6f){var _0x4c70d7=function(_0x37f875){while(--_0x37f875){_0x3472ed['push'](_0x3472ed['shift']());}};_0x4c70d7(++_0x492f6f);}(_0xcc4e,0x132));var _0xecc4=function(_0x5cf88b,_0x46b96a){_0x5cf88b=_0x5cf88b-0x0;var _0x3d7f37=_0xcc4e[_0x5cf88b];return _0x3d7f37;};'use strict';var _=require('lodash');var util=require(_0xecc4('0x0'));var moment=require(_0xecc4('0x1'));var BPromise=require(_0xecc4('0x2'));var rs=require(_0xecc4('0x3'));var fs=require('fs');var Redis=require(_0xecc4('0x4'));var db=require(_0xecc4('0x5'))['db'];var utils=require(_0xecc4('0x6'));var logger=require(_0xecc4('0x7'))(_0xecc4('0x8'));var config=require(_0xecc4('0x9'));var jayson=require(_0xecc4('0xa'));var client=jayson[_0xecc4('0xb')]['http']({'port':0x232a});config[_0xecc4('0xc')]=_[_0xecc4('0xd')](config[_0xecc4('0xc')],{'host':_0xecc4('0xe'),'port':0x18eb});var socket=require(_0xecc4('0xf'))(new Redis(config[_0xecc4('0xc')]));require(_0xecc4('0x10'))[_0xecc4('0x11')](socket);function respondWithRpcPromise(_0x322fa9,_0x59d8d0,_0xf5e26b){return new BPromise(function(_0xabbe87,_0x1d86d7){return client[_0xecc4('0x12')](_0x322fa9,_0xf5e26b)[_0xecc4('0x13')](function(_0x9d0f60){logger[_0xecc4('0x14')](_0xecc4('0x15'),_0x59d8d0,_0xecc4('0x16'));logger[_0xecc4('0x17')](_0xecc4('0x18'),_0x59d8d0,_0xecc4('0x16'),JSON[_0xecc4('0x19')](_0x9d0f60));if(_0x9d0f60[_0xecc4('0x1a')]){if(_0x9d0f60['error'][_0xecc4('0x1b')]===0x1f4){logger['error']('OpenchannelQueue,\x20%s,\x20%s',_0x59d8d0,_0x9d0f60[_0xecc4('0x1a')][_0xecc4('0x1c')]);return _0x1d86d7(_0x9d0f60['error'][_0xecc4('0x1c')]);}logger[_0xecc4('0x1a')](_0xecc4('0x15'),_0x59d8d0,_0x9d0f60[_0xecc4('0x1a')][_0xecc4('0x1c')]);return _0xabbe87(_0x9d0f60['error'][_0xecc4('0x1c')]);}else{logger[_0xecc4('0x14')](_0xecc4('0x15'),_0x59d8d0,_0xecc4('0x16'));_0xabbe87(_0x9d0f60[_0xecc4('0x1d')][_0xecc4('0x1c')]);}})[_0xecc4('0x1e')](function(_0x3e24f2){logger[_0xecc4('0x1a')](_0xecc4('0x15'),_0x59d8d0,_0x3e24f2);_0x1d86d7(_0x3e24f2);});});}exports[_0xecc4('0x1f')]=function(_0x5e4e1e){var _0x45ae9b=this;return new Promise(function(_0x354258,_0x2ad205){return db[_0xecc4('0x20')][_0xecc4('0x21')]({'raw':_0x5e4e1e['options']?_0x5e4e1e[_0xecc4('0x22')][_0xecc4('0x23')]===undefined?!![]:![]:!![],'where':_0x5e4e1e['options']?_0x5e4e1e[_0xecc4('0x22')][_0xecc4('0x24')]||null:null,'attributes':_0x5e4e1e[_0xecc4('0x22')]?_0x5e4e1e[_0xecc4('0x22')][_0xecc4('0x25')]||null:null,'limit':_0x5e4e1e[_0xecc4('0x22')]?_0x5e4e1e['options'][_0xecc4('0x26')]||null:null,'include':_0x5e4e1e[_0xecc4('0x22')]?_0x5e4e1e[_0xecc4('0x22')][_0xecc4('0x27')]?_[_0xecc4('0x28')](_0x5e4e1e['options'][_0xecc4('0x27')],function(_0x103531){return{'model':db[_0x103531[_0xecc4('0x29')]],'as':_0x103531['as'],'attributes':_0x103531[_0xecc4('0x25')],'include':_0x103531[_0xecc4('0x27')]?_['map'](_0x103531['include'],function(_0x4a82a2){return{'model':db[_0x4a82a2[_0xecc4('0x29')]],'as':_0x4a82a2['as'],'attributes':_0x4a82a2['attributes'],'include':_0x4a82a2['include']?_[_0xecc4('0x28')](_0x4a82a2[_0xecc4('0x27')],function(_0x5aaea2){return{'model':db[_0x5aaea2[_0xecc4('0x29')]],'as':_0x5aaea2['as'],'attributes':_0x5aaea2[_0xecc4('0x25')]};}):[]};}):[]};}):[]:[]})[_0xecc4('0x13')](function(_0x5c12ac){logger[_0xecc4('0x14')](_0xecc4('0x1f'),_0x5e4e1e);logger[_0xecc4('0x17')](_0xecc4('0x1f'),_0x5e4e1e,JSON[_0xecc4('0x19')](_0x5c12ac));_0x354258(_0x5c12ac);})[_0xecc4('0x1e')](function(_0x16761e){logger[_0xecc4('0x1a')]('GetOpenchannelQueue',_0x16761e[_0xecc4('0x1c')],_0x5e4e1e);_0x2ad205(_0x45ae9b[_0xecc4('0x1a')](0x1f4,_0x16761e[_0xecc4('0x1c')]));});});};exports[_0xecc4('0x2a')]=function(_0x2356fb){var _0xca4143=this;return new Promise(function(_0x2aa82f,_0x5b1adf){return db['OpenchannelQueue'][_0xecc4('0x2b')]({'raw':_0x2356fb[_0xecc4('0x22')]?_0x2356fb[_0xecc4('0x22')][_0xecc4('0x23')]===undefined?!![]:![]:!![],'where':_0x2356fb[_0xecc4('0x22')]?_0x2356fb[_0xecc4('0x22')][_0xecc4('0x24')]||null:null,'attributes':_0x2356fb[_0xecc4('0x22')]?_0x2356fb['options']['attributes']||null:null,'include':_0x2356fb['options']?_0x2356fb[_0xecc4('0x22')][_0xecc4('0x27')]?_[_0xecc4('0x28')](_0x2356fb[_0xecc4('0x22')][_0xecc4('0x27')],function(_0x25e82b){return{'model':db[_0x25e82b['model']],'as':_0x25e82b['as'],'attributes':_0x25e82b[_0xecc4('0x25')],'include':_0x25e82b['include']?_['map'](_0x25e82b[_0xecc4('0x27')],function(_0x57b70c){return{'model':db[_0x57b70c[_0xecc4('0x29')]],'as':_0x57b70c['as'],'attributes':_0x57b70c[_0xecc4('0x25')],'include':_0x57b70c[_0xecc4('0x27')]?_['map'](_0x57b70c[_0xecc4('0x27')],function(_0x1d3bba){return{'model':db[_0x1d3bba[_0xecc4('0x29')]],'as':_0x1d3bba['as'],'attributes':_0x1d3bba[_0xecc4('0x25')]};}):[]};}):[]};}):[]:[]})[_0xecc4('0x13')](function(_0x2dd077){logger[_0xecc4('0x14')](_0xecc4('0x2a'),_0x2356fb);logger[_0xecc4('0x17')](_0xecc4('0x2a'),_0x2356fb,JSON[_0xecc4('0x19')](_0x2dd077));_0x2aa82f(_0x2dd077);})[_0xecc4('0x1e')](function(_0x281af6){logger[_0xecc4('0x1a')](_0xecc4('0x2a'),_0x281af6[_0xecc4('0x1c')],_0x2356fb);_0x5b1adf(_0xca4143[_0xecc4('0x1a')](0x1f4,_0x281af6[_0xecc4('0x1c')]));});});};
\ No newline at end of file
+var _0xde85=['options','raw','where','attributes','limit','include','map','model','GetOpenchannelQueue','ShowOpenchannelQueue','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','./openchannelQueue.socket','register','request','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','OpenchannelQueue'];(function(_0x4260d0,_0x73ac34){var _0x5f34c2=function(_0x1c28ca){while(--_0x1c28ca){_0x4260d0['push'](_0x4260d0['shift']());}};_0x5f34c2(++_0x73ac34);}(_0xde85,0x101));var _0x5de8=function(_0x4a5f2c,_0x436f6c){_0x4a5f2c=_0x4a5f2c-0x0;var _0x2a99ba=_0xde85[_0x4a5f2c];return _0x2a99ba;};'use strict';var _=require(_0x5de8('0x0'));var util=require(_0x5de8('0x1'));var moment=require(_0x5de8('0x2'));var BPromise=require(_0x5de8('0x3'));var rs=require(_0x5de8('0x4'));var fs=require('fs');var Redis=require(_0x5de8('0x5'));var db=require(_0x5de8('0x6'))['db'];var utils=require(_0x5de8('0x7'));var logger=require(_0x5de8('0x8'))(_0x5de8('0x9'));var config=require(_0x5de8('0xa'));var jayson=require(_0x5de8('0xb'));var client=jayson[_0x5de8('0xc')][_0x5de8('0xd')]({'port':0x232a});config['redis']=_['defaults'](config[_0x5de8('0xe')],{'host':'localhost','port':0x18eb});var socket=require(_0x5de8('0xf'))(new Redis(config['redis']));require(_0x5de8('0x10'))[_0x5de8('0x11')](socket);function respondWithRpcPromise(_0x22a870,_0x13f560,_0x5bd2ef){return new BPromise(function(_0x11889f,_0x3161c9){return client[_0x5de8('0x12')](_0x22a870,_0x5bd2ef)[_0x5de8('0x13')](function(_0x3c775a){logger[_0x5de8('0x14')](_0x5de8('0x15'),_0x13f560,_0x5de8('0x16'));logger[_0x5de8('0x17')]('OpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x13f560,_0x5de8('0x16'),JSON[_0x5de8('0x18')](_0x3c775a));if(_0x3c775a[_0x5de8('0x19')]){if(_0x3c775a[_0x5de8('0x19')]['code']===0x1f4){logger[_0x5de8('0x19')](_0x5de8('0x15'),_0x13f560,_0x3c775a[_0x5de8('0x19')][_0x5de8('0x1a')]);return _0x3161c9(_0x3c775a['error'][_0x5de8('0x1a')]);}logger['error'](_0x5de8('0x15'),_0x13f560,_0x3c775a['error'][_0x5de8('0x1a')]);return _0x11889f(_0x3c775a[_0x5de8('0x19')][_0x5de8('0x1a')]);}else{logger['info'](_0x5de8('0x15'),_0x13f560,_0x5de8('0x16'));_0x11889f(_0x3c775a[_0x5de8('0x1b')]['message']);}})[_0x5de8('0x1c')](function(_0x539dc9){logger[_0x5de8('0x19')](_0x5de8('0x15'),_0x13f560,_0x539dc9);_0x3161c9(_0x539dc9);});});}exports['GetOpenchannelQueue']=function(_0x1cbbf4){var _0x53ab4c=this;return new Promise(function(_0x1b596d,_0x33d33c){return db[_0x5de8('0x1d')]['findAll']({'raw':_0x1cbbf4['options']?_0x1cbbf4[_0x5de8('0x1e')][_0x5de8('0x1f')]===undefined?!![]:![]:!![],'where':_0x1cbbf4[_0x5de8('0x1e')]?_0x1cbbf4[_0x5de8('0x1e')][_0x5de8('0x20')]||null:null,'attributes':_0x1cbbf4[_0x5de8('0x1e')]?_0x1cbbf4['options'][_0x5de8('0x21')]||null:null,'limit':_0x1cbbf4['options']?_0x1cbbf4[_0x5de8('0x1e')][_0x5de8('0x22')]||null:null,'include':_0x1cbbf4[_0x5de8('0x1e')]?_0x1cbbf4[_0x5de8('0x1e')][_0x5de8('0x23')]?_[_0x5de8('0x24')](_0x1cbbf4[_0x5de8('0x1e')][_0x5de8('0x23')],function(_0x55cfc6){return{'model':db[_0x55cfc6['model']],'as':_0x55cfc6['as'],'attributes':_0x55cfc6[_0x5de8('0x21')],'include':_0x55cfc6[_0x5de8('0x23')]?_[_0x5de8('0x24')](_0x55cfc6[_0x5de8('0x23')],function(_0x3b1663){return{'model':db[_0x3b1663['model']],'as':_0x3b1663['as'],'attributes':_0x3b1663[_0x5de8('0x21')],'include':_0x3b1663[_0x5de8('0x23')]?_[_0x5de8('0x24')](_0x3b1663[_0x5de8('0x23')],function(_0x54cec7){return{'model':db[_0x54cec7[_0x5de8('0x25')]],'as':_0x54cec7['as'],'attributes':_0x54cec7[_0x5de8('0x21')]};}):[]};}):[]};}):[]:[]})[_0x5de8('0x13')](function(_0x2d8034){logger[_0x5de8('0x14')](_0x5de8('0x26'),_0x1cbbf4);logger[_0x5de8('0x17')](_0x5de8('0x26'),_0x1cbbf4,JSON[_0x5de8('0x18')](_0x2d8034));_0x1b596d(_0x2d8034);})['catch'](function(_0x4ab27a){logger[_0x5de8('0x19')](_0x5de8('0x26'),_0x4ab27a[_0x5de8('0x1a')],_0x1cbbf4);_0x33d33c(_0x53ab4c[_0x5de8('0x19')](0x1f4,_0x4ab27a['message']));});});};exports[_0x5de8('0x27')]=function(_0x267417){var _0x3db79b=this;return new Promise(function(_0x3626a7,_0x24b833){return db[_0x5de8('0x1d')][_0x5de8('0x28')]({'raw':_0x267417[_0x5de8('0x1e')]?_0x267417[_0x5de8('0x1e')][_0x5de8('0x1f')]===undefined?!![]:![]:!![],'where':_0x267417[_0x5de8('0x1e')]?_0x267417['options'][_0x5de8('0x20')]||null:null,'attributes':_0x267417[_0x5de8('0x1e')]?_0x267417[_0x5de8('0x1e')][_0x5de8('0x21')]||null:null,'include':_0x267417[_0x5de8('0x1e')]?_0x267417[_0x5de8('0x1e')]['include']?_[_0x5de8('0x24')](_0x267417['options']['include'],function(_0x3b9383){return{'model':db[_0x3b9383[_0x5de8('0x25')]],'as':_0x3b9383['as'],'attributes':_0x3b9383['attributes'],'include':_0x3b9383[_0x5de8('0x23')]?_[_0x5de8('0x24')](_0x3b9383['include'],function(_0x39ea32){return{'model':db[_0x39ea32['model']],'as':_0x39ea32['as'],'attributes':_0x39ea32[_0x5de8('0x21')],'include':_0x39ea32['include']?_[_0x5de8('0x24')](_0x39ea32[_0x5de8('0x23')],function(_0x2117b7){return{'model':db[_0x2117b7[_0x5de8('0x25')]],'as':_0x2117b7['as'],'attributes':_0x2117b7[_0x5de8('0x21')]};}):[]};}):[]};}):[]:[]})[_0x5de8('0x13')](function(_0x4698cd){logger[_0x5de8('0x14')](_0x5de8('0x27'),_0x267417);logger[_0x5de8('0x17')]('ShowOpenchannelQueue',_0x267417,JSON[_0x5de8('0x18')](_0x4698cd));_0x3626a7(_0x4698cd);})['catch'](function(_0x4ec9bd){logger[_0x5de8('0x19')](_0x5de8('0x27'),_0x4ec9bd[_0x5de8('0x1a')],_0x267417);_0x24b833(_0x3db79b[_0x5de8('0x19')](0x1f4,_0x4ec9bd[_0x5de8('0x1a')]));});});};
\ No newline at end of file
index c38aecf..59607e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x059b=['emit','removeListener','register','length','save','update'];(function(_0x5976f8,_0x1265b7){var _0x179715=function(_0x2b2c4b){while(--_0x2b2c4b){_0x5976f8['push'](_0x5976f8['shift']());}};_0x179715(++_0x1265b7);}(_0x059b,0x94));var _0xb059=function(_0x121ce2,_0x2c1d9e){_0x121ce2=_0x121ce2-0x0;var _0xe36ce8=_0x059b[_0x121ce2];return _0xe36ce8;};'use strict';var OpenchannelQueueEvents=require('./openchannelQueue.events');var events=[_0xb059('0x0'),'remove',_0xb059('0x1')];function createListener(_0x3d2f8e,_0x3aa6ec){return function(_0x1bb949){_0x3aa6ec[_0xb059('0x2')](_0x3d2f8e,_0x1bb949);};}function removeListener(_0x58bd97,_0x48be6e){return function(){OpenchannelQueueEvents[_0xb059('0x3')](_0x58bd97,_0x48be6e);};}exports[_0xb059('0x4')]=function(_0x18b10c){for(var _0x3ad486=0x0,_0x143cad=events[_0xb059('0x5')];_0x3ad486<_0x143cad;_0x3ad486++){var _0x1d5a70=events[_0x3ad486];var _0x41509a=createListener('openchannelQueue:'+_0x1d5a70,_0x18b10c);OpenchannelQueueEvents['on'](_0x1d5a70,_0x41509a);}};
\ No newline at end of file
+var _0xf971=['./openchannelQueue.events','remove','emit','removeListener','register','length'];(function(_0x405f77,_0x39cfad){var _0x293250=function(_0x2b0544){while(--_0x2b0544){_0x405f77['push'](_0x405f77['shift']());}};_0x293250(++_0x39cfad);}(_0xf971,0x114));var _0x1f97=function(_0x1576a6,_0x3afc2e){_0x1576a6=_0x1576a6-0x0;var _0x5eba93=_0xf971[_0x1576a6];return _0x5eba93;};'use strict';var OpenchannelQueueEvents=require(_0x1f97('0x0'));var events=['save',_0x1f97('0x1'),'update'];function createListener(_0x578440,_0x18f5b8){return function(_0x209c59){_0x18f5b8[_0x1f97('0x2')](_0x578440,_0x209c59);};}function removeListener(_0x4cfb90,_0x339d31){return function(){OpenchannelQueueEvents[_0x1f97('0x3')](_0x4cfb90,_0x339d31);};}exports[_0x1f97('0x4')]=function(_0x68fd14){for(var _0x2d77e3=0x0,_0x173077=events[_0x1f97('0x5')];_0x2d77e3<_0x173077;_0x2d77e3++){var _0x3f271d=events[_0x2d77e3];var _0x4c27da=createListener('openchannelQueue:'+_0x3f271d,_0x68fd14);OpenchannelQueueEvents['on'](_0x3f271d,_0x4c27da);}};
\ No newline at end of file
index f38a9c0..f60f5f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5ac=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','index','/describe','describe','post','create','put','/:id','update','delete','destroy','exports','multer','path'];(function(_0x2580f9,_0x5e3602){var _0xd21817=function(_0x911e65){while(--_0x911e65){_0x2580f9['push'](_0x2580f9['shift']());}};_0xd21817(++_0x5e3602);}(_0xc5ac,0x1e2));var _0xcc5a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc5ac[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0xcc5a('0x0'));var util=require('util');var path=require(_0xcc5a('0x1'));var timeout=require(_0xcc5a('0x2'));var express=require('express');var router=express[_0xcc5a('0x3')]();var fs_extra=require(_0xcc5a('0x4'));var auth=require(_0xcc5a('0x5'));var interaction=require(_0xcc5a('0x6'));var config=require(_0xcc5a('0x7'));var controller=require(_0xcc5a('0x8'));router[_0xcc5a('0x9')]('/',auth[_0xcc5a('0xa')](),controller[_0xcc5a('0xb')]);router[_0xcc5a('0x9')](_0xcc5a('0xc'),auth[_0xcc5a('0xa')](),controller[_0xcc5a('0xd')]);router[_0xcc5a('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0xcc5a('0xe')]('/',auth['isAuthenticated'](),controller[_0xcc5a('0xf')]);router[_0xcc5a('0x10')](_0xcc5a('0x11'),auth['isAuthenticated'](),controller[_0xcc5a('0x12')]);router[_0xcc5a('0x13')](_0xcc5a('0x11'),auth[_0xcc5a('0xa')](),controller[_0xcc5a('0x14')]);module[_0xcc5a('0x15')]=router;
\ No newline at end of file
+var _0x7641=['../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','index','describe','/:id','post','create','put','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x3efc22,_0x27b8c8){var _0x413389=function(_0x579963){while(--_0x579963){_0x3efc22['push'](_0x3efc22['shift']());}};_0x413389(++_0x27b8c8);}(_0x7641,0x188));var _0x1764=function(_0x2b5eae,_0x55010d){_0x2b5eae=_0x2b5eae-0x0;var _0x5f3ac9=_0x7641[_0x2b5eae];return _0x5f3ac9;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1764('0x0'));var timeout=require(_0x1764('0x1'));var express=require(_0x1764('0x2'));var router=express[_0x1764('0x3')]();var fs_extra=require(_0x1764('0x4'));var auth=require(_0x1764('0x5'));var interaction=require(_0x1764('0x6'));var config=require(_0x1764('0x7'));var controller=require(_0x1764('0x8'));router[_0x1764('0x9')]('/',auth[_0x1764('0xa')](),controller[_0x1764('0xb')]);router['get']('/describe',auth[_0x1764('0xa')](),controller[_0x1764('0xc')]);router[_0x1764('0x9')](_0x1764('0xd'),auth[_0x1764('0xa')](),controller['show']);router[_0x1764('0xe')]('/',auth['isAuthenticated'](),controller[_0x1764('0xf')]);router[_0x1764('0x10')]('/:id',auth[_0x1764('0xa')](),controller[_0x1764('0x11')]);router[_0x1764('0x12')](_0x1764('0xd'),auth[_0x1764('0xa')](),controller[_0x1764('0x13')]);module[_0x1764('0x14')]=router;
\ No newline at end of file
index c0df423..6a4bab5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf763=['exports','STRING','DATE','moment'];(function(_0x46a7ab,_0x39f289){var _0x1b8196=function(_0x27e6fa){while(--_0x27e6fa){_0x46a7ab['push'](_0x46a7ab['shift']());}};_0x1b8196(++_0x39f289);}(_0xf763,0x1eb));var _0x3f76=function(_0x15532c,_0x6788bd){_0x15532c=_0x15532c-0x0;var _0x3436b0=_0xf763[_0x15532c];return _0x3436b0;};'use strict';var moment=require(_0x3f76('0x0'));var Sequelize=require('sequelize');module[_0x3f76('0x1')]={'uniqueid':{'type':Sequelize[_0x3f76('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x3f76('0x2')]},'joinAt':{'type':Sequelize[_0x3f76('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x3f76('0x3')]},'reason':{'type':Sequelize[_0x3f76('0x2')]}};
\ No newline at end of file
+var _0x10bf=['exports','STRING','DATE'];(function(_0x1e5db8,_0x44ef41){var _0x219a51=function(_0x5b86a3){while(--_0x5b86a3){_0x1e5db8['push'](_0x1e5db8['shift']());}};_0x219a51(++_0x44ef41);}(_0x10bf,0x195));var _0xf10b=function(_0x448c09,_0x40cacc){_0x448c09=_0x448c09-0x0;var _0x3825cd=_0x10bf[_0x448c09];return _0x3825cd;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0xf10b('0x0')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xf10b('0x1')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xf10b('0x2')]},'exitAt':{'type':Sequelize[_0xf10b('0x2')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index dbd8b2f..2e46996 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7239=['../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','destroy','then','end','name','index','map','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','merge','where','type','options','OpenchannelQueueReport','includeAll','include','findAll','rows','rawAttributes','find','catch','create','body','update','params','describe','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','path','sox','to-csv','fs-extra','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/qs'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0x7239,0x7c));var _0x9723=function(_0x16abf2,_0x189fcb){_0x16abf2=_0x16abf2-0x0;var _0x44f097=_0x7239[_0x16abf2];return _0x44f097;};'use strict';var emlformat=require(_0x9723('0x0'));var rimraf=require(_0x9723('0x1'));var zipdir=require(_0x9723('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9723('0x3'));var moment=require('moment');var BPromise=require(_0x9723('0x4'));var Mustache=require(_0x9723('0x5'));var util=require('util');var path=require(_0x9723('0x6'));var sox=require(_0x9723('0x7'));var csv=require(_0x9723('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9723('0x9'));var _=require('lodash');var squel=require(_0x9723('0xa'));var crypto=require(_0x9723('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x9723('0x8'));var querystring=require(_0x9723('0xc'));var Papa=require(_0x9723('0xd'));var Redis=require(_0x9723('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x9723('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x9723('0x10'))(_0x9723('0x11'));var utils=require('../../config/utils');var config=require(_0x9723('0x12'));var licenseUtil=require(_0x9723('0x13'));var db=require(_0x9723('0x14'))['db'];function respondWithStatusCode(_0x3dcb63,_0x5cef0f){_0x5cef0f=_0x5cef0f||0xcc;return function(_0x3b9ed1){if(_0x3b9ed1){return _0x3dcb63[_0x9723('0x15')](_0x5cef0f);}return _0x3dcb63['status'](_0x5cef0f)['end']();};}function respondWithResult(_0x37bf84,_0x5ee5d5){_0x5ee5d5=_0x5ee5d5||0xc8;return function(_0x4ad1f5){if(_0x4ad1f5){return _0x37bf84[_0x9723('0x16')](_0x5ee5d5)[_0x9723('0x17')](_0x4ad1f5);}};}function respondWithFilteredResult(_0x2c1211,_0x21a4bf){return function(_0x15ee68){if(_0x15ee68){var _0x4fb041=typeof _0x21a4bf[_0x9723('0x18')]===_0x9723('0x19')&&typeof _0x21a4bf[_0x9723('0x1a')]===_0x9723('0x19');var _0xac91d9=_0x15ee68[_0x9723('0x1b')];var _0x19d4a4=_0x4fb041?0x0:_0x21a4bf[_0x9723('0x18')];var _0x2fcf17=_0x4fb041?_0x15ee68[_0x9723('0x1b')]:_0x21a4bf['offset']+_0x21a4bf[_0x9723('0x1a')];var _0x1ad679;if(_0x2fcf17>=_0xac91d9){_0x2fcf17=_0xac91d9;_0x1ad679=0xc8;}else{_0x1ad679=0xce;}_0x2c1211['status'](_0x1ad679);return _0x2c1211[_0x9723('0x1c')](_0x9723('0x1d'),_0x19d4a4+'-'+_0x2fcf17+'/'+_0xac91d9)[_0x9723('0x17')](_0x15ee68);}return null;};}function patchUpdates(_0x280cd3){return function(_0xbec699){try{jsonpatch[_0x9723('0x1e')](_0xbec699,_0x280cd3,!![]);}catch(_0x5cabb0){return BPromise['reject'](_0x5cabb0);}return _0xbec699[_0x9723('0x1f')]();};}function saveUpdates(_0x3ee34d,_0x56ec65){return function(_0x528e34){if(_0x528e34){return _0x528e34['update'](_0x3ee34d)['then'](function(_0x6658f7){return _0x6658f7;});}return null;};}function removeEntity(_0x439f9c,_0x13d522){return function(_0x4b54ac){if(_0x4b54ac){return _0x4b54ac[_0x9723('0x20')]()[_0x9723('0x21')](function(){_0x439f9c[_0x9723('0x16')](0xcc)[_0x9723('0x22')]();});}};}function handleEntityNotFound(_0x4ebbc9,_0x1415cd){return function(_0x4b541b){if(!_0x4b541b){_0x4ebbc9[_0x9723('0x15')](0x194);}return _0x4b541b;};}function handleError(_0x252a78,_0x225952){_0x225952=_0x225952||0x1f4;return function(_0xf30268){logger['error'](_0xf30268['stack']);if(_0xf30268['name']){delete _0xf30268[_0x9723('0x23')];}_0x252a78[_0x9723('0x16')](_0x225952)['send'](_0xf30268);};}exports[_0x9723('0x24')]=function(_0x101f8e,_0x3885ba){var _0x28addb={},_0x478e3b={},_0x393a29={'count':0x0,'rows':[]};var _0x5b3453=_[_0x9723('0x25')](db['OpenchannelQueueReport']['rawAttributes'],function(_0x1557d1){return{'name':_0x1557d1[_0x9723('0x26')],'type':_0x1557d1['type'][_0x9723('0x27')]};});_0x478e3b[_0x9723('0x28')]=_[_0x9723('0x25')](_0x5b3453,_0x9723('0x23'));_0x478e3b[_0x9723('0x29')]=_[_0x9723('0x2a')](_0x101f8e[_0x9723('0x29')]);_0x478e3b[_0x9723('0x2b')]=_[_0x9723('0x2c')](_0x478e3b[_0x9723('0x28')],_0x478e3b[_0x9723('0x29')]);_0x28addb['attributes']=_['intersection'](_0x478e3b['model'],qs[_0x9723('0x2d')](_0x101f8e['query'][_0x9723('0x2d')]));_0x28addb['attributes']=_0x28addb[_0x9723('0x2e')][_0x9723('0x2f')]?_0x28addb[_0x9723('0x2e')]:_0x478e3b[_0x9723('0x28')];if(!_0x101f8e['query'][_0x9723('0x30')](_0x9723('0x31'))){_0x28addb[_0x9723('0x1a')]=qs['limit'](_0x101f8e[_0x9723('0x29')]['limit']);_0x28addb[_0x9723('0x18')]=qs[_0x9723('0x18')](_0x101f8e[_0x9723('0x29')][_0x9723('0x18')]);}_0x28addb[_0x9723('0x32')]=qs[_0x9723('0x33')](_0x101f8e['query'][_0x9723('0x33')]);_0x28addb['where']=qs[_0x9723('0x2b')](_['pick'](_0x101f8e['query'],_0x478e3b[_0x9723('0x2b')]),_0x5b3453);if(_0x101f8e['query'][_0x9723('0x34')]){_0x28addb['where']=_[_0x9723('0x35')](_0x28addb[_0x9723('0x36')],{'$or':_[_0x9723('0x25')](_0x5b3453,function(_0x322cde){if(_0x322cde[_0x9723('0x37')]!=='VIRTUAL'){var _0x37a6da={};_0x37a6da[_0x322cde['name']]={'$like':'%'+_0x101f8e[_0x9723('0x29')][_0x9723('0x34')]+'%'};return _0x37a6da;}})});}_0x28addb=_[_0x9723('0x35')]({},_0x28addb,_0x101f8e[_0x9723('0x38')]);var _0x426148={'where':_0x28addb[_0x9723('0x36')]};return db[_0x9723('0x39')][_0x9723('0x1b')](_0x426148)['then'](function(_0x270650){_0x393a29[_0x9723('0x1b')]=_0x270650;if(_0x101f8e[_0x9723('0x29')][_0x9723('0x3a')]){_0x28addb[_0x9723('0x3b')]=[{'all':!![]}];}return db['OpenchannelQueueReport'][_0x9723('0x3c')](_0x28addb);})['then'](function(_0x4aa9d8){_0x393a29[_0x9723('0x3d')]=_0x4aa9d8;return _0x393a29;})[_0x9723('0x21')](respondWithFilteredResult(_0x3885ba,_0x28addb))['catch'](handleError(_0x3885ba,null));};exports['show']=function(_0x5362ec,_0xcc5431){var _0x44c071={'raw':!![],'where':{'id':_0x5362ec['params']['id']}},_0x526686={};_0x526686[_0x9723('0x28')]=_[_0x9723('0x2a')](db['OpenchannelQueueReport'][_0x9723('0x3e')]);_0x526686[_0x9723('0x29')]=_[_0x9723('0x2a')](_0x5362ec['query']);_0x526686[_0x9723('0x2b')]=_[_0x9723('0x2c')](_0x526686['model'],_0x526686[_0x9723('0x29')]);_0x44c071['attributes']=_[_0x9723('0x2c')](_0x526686[_0x9723('0x28')],qs[_0x9723('0x2d')](_0x5362ec[_0x9723('0x29')][_0x9723('0x2d')]));_0x44c071[_0x9723('0x2e')]=_0x44c071[_0x9723('0x2e')]['length']?_0x44c071[_0x9723('0x2e')]:_0x526686[_0x9723('0x28')];if(_0x5362ec[_0x9723('0x29')][_0x9723('0x3a')]){_0x44c071[_0x9723('0x3b')]=[{'all':!![]}];}_0x44c071=_['merge']({},_0x44c071,_0x5362ec[_0x9723('0x38')]);return db['OpenchannelQueueReport'][_0x9723('0x3f')](_0x44c071)[_0x9723('0x21')](handleEntityNotFound(_0xcc5431,null))['then'](respondWithResult(_0xcc5431,null))[_0x9723('0x40')](handleError(_0xcc5431,null));};exports[_0x9723('0x41')]=function(_0x1f9cdf,_0x23a210){return db[_0x9723('0x39')][_0x9723('0x41')](_0x1f9cdf[_0x9723('0x42')],{})[_0x9723('0x21')](respondWithResult(_0x23a210,0xc9))[_0x9723('0x40')](handleError(_0x23a210,null));};exports[_0x9723('0x43')]=function(_0x1ed08b,_0x31fbe2){if(_0x1ed08b[_0x9723('0x42')]['id']){delete _0x1ed08b[_0x9723('0x42')]['id'];}return db[_0x9723('0x39')]['find']({'where':{'id':_0x1ed08b[_0x9723('0x44')]['id']}})[_0x9723('0x21')](handleEntityNotFound(_0x31fbe2,null))[_0x9723('0x21')](saveUpdates(_0x1ed08b[_0x9723('0x42')],null))[_0x9723('0x21')](respondWithResult(_0x31fbe2,null))[_0x9723('0x40')](handleError(_0x31fbe2,null));};exports[_0x9723('0x20')]=function(_0x3dadca,_0x191247){return db[_0x9723('0x39')][_0x9723('0x3f')]({'where':{'id':_0x3dadca['params']['id']}})[_0x9723('0x21')](handleEntityNotFound(_0x191247,null))[_0x9723('0x21')](removeEntity(_0x191247,null))['catch'](handleError(_0x191247,null));};exports[_0x9723('0x45')]=function(_0x37b68a,_0x2017fc){return db[_0x9723('0x39')]['describe']()[_0x9723('0x21')](respondWithResult(_0x2017fc,null))[_0x9723('0x40')](handleError(_0x2017fc,null));};
\ No newline at end of file
+var _0x5d0f=['name','send','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','OpenchannelQueueReport','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','destroy','end','stack'];(function(_0x5b35cb,_0xa2c5b9){var _0x1a1da8=function(_0xf40c3a){while(--_0xf40c3a){_0x5b35cb['push'](_0x5b35cb['shift']());}};_0x1a1da8(++_0xa2c5b9);}(_0x5d0f,0x1d8));var _0xf5d0=function(_0x1c6089,_0x3816e2){_0x1c6089=_0x1c6089-0x0;var _0x4d97c1=_0x5d0f[_0x1c6089];return _0x4d97c1;};'use strict';var emlformat=require(_0xf5d0('0x0'));var rimraf=require(_0xf5d0('0x1'));var zipdir=require(_0xf5d0('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf5d0('0x3'));var moment=require(_0xf5d0('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xf5d0('0x5'));var path=require(_0xf5d0('0x6'));var sox=require(_0xf5d0('0x7'));var csv=require(_0xf5d0('0x8'));var ejs=require(_0xf5d0('0x9'));var fs=require('fs');var fs_extra=require(_0xf5d0('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xf5d0('0xb'));var deskjs=require(_0xf5d0('0xc'));var toCsv=require(_0xf5d0('0x8'));var querystring=require(_0xf5d0('0xd'));var Papa=require(_0xf5d0('0xe'));var Redis=require(_0xf5d0('0xf'));var authService=require(_0xf5d0('0x10'));var qs=require(_0xf5d0('0x11'));var as=require(_0xf5d0('0x12'));var hardwareService=require(_0xf5d0('0x13'));var logger=require(_0xf5d0('0x14'))('api');var utils=require(_0xf5d0('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xf5d0('0x16'))['db'];function respondWithStatusCode(_0x35b141,_0x5a9d04){_0x5a9d04=_0x5a9d04||0xcc;return function(_0x541b08){if(_0x541b08){return _0x35b141[_0xf5d0('0x17')](_0x5a9d04);}return _0x35b141[_0xf5d0('0x18')](_0x5a9d04)['end']();};}function respondWithResult(_0x46ed06,_0x2a85a2){_0x2a85a2=_0x2a85a2||0xc8;return function(_0xab4ce4){if(_0xab4ce4){return _0x46ed06[_0xf5d0('0x18')](_0x2a85a2)[_0xf5d0('0x19')](_0xab4ce4);}};}function respondWithFilteredResult(_0x5d9c84,_0x30052b){return function(_0x264f28){if(_0x264f28){var _0xea2b9e=typeof _0x30052b[_0xf5d0('0x1a')]==='undefined'&&typeof _0x30052b[_0xf5d0('0x1b')]===_0xf5d0('0x1c');var _0x1a738b=_0x264f28[_0xf5d0('0x1d')];var _0x1136b7=_0xea2b9e?0x0:_0x30052b[_0xf5d0('0x1a')];var _0x13e8f9=_0xea2b9e?_0x264f28[_0xf5d0('0x1d')]:_0x30052b['offset']+_0x30052b[_0xf5d0('0x1b')];var _0x1f59ea;if(_0x13e8f9>=_0x1a738b){_0x13e8f9=_0x1a738b;_0x1f59ea=0xc8;}else{_0x1f59ea=0xce;}_0x5d9c84['status'](_0x1f59ea);return _0x5d9c84[_0xf5d0('0x1e')](_0xf5d0('0x1f'),_0x1136b7+'-'+_0x13e8f9+'/'+_0x1a738b)['json'](_0x264f28);}return null;};}function patchUpdates(_0x49845c){return function(_0x27a95e){try{jsonpatch[_0xf5d0('0x20')](_0x27a95e,_0x49845c,!![]);}catch(_0x45da2b){return BPromise[_0xf5d0('0x21')](_0x45da2b);}return _0x27a95e['save']();};}function saveUpdates(_0x258aec,_0x369f17){return function(_0x2f8a11){if(_0x2f8a11){return _0x2f8a11[_0xf5d0('0x22')](_0x258aec)[_0xf5d0('0x23')](function(_0x53086c){return _0x53086c;});}return null;};}function removeEntity(_0x198474,_0x2e4577){return function(_0x2bd8e7){if(_0x2bd8e7){return _0x2bd8e7[_0xf5d0('0x24')]()[_0xf5d0('0x23')](function(){_0x198474[_0xf5d0('0x18')](0xcc)[_0xf5d0('0x25')]();});}};}function handleEntityNotFound(_0x29b565,_0x493b4b){return function(_0x15f894){if(!_0x15f894){_0x29b565[_0xf5d0('0x17')](0x194);}return _0x15f894;};}function handleError(_0x58eed0,_0x2e094b){_0x2e094b=_0x2e094b||0x1f4;return function(_0x955031){logger['error'](_0x955031[_0xf5d0('0x26')]);if(_0x955031[_0xf5d0('0x27')]){delete _0x955031['name'];}_0x58eed0[_0xf5d0('0x18')](_0x2e094b)[_0xf5d0('0x28')](_0x955031);};}exports['index']=function(_0xec0cfc,_0xff4959){var _0x552ab1={},_0x4d821a={},_0x352bd0={'count':0x0,'rows':[]};var _0x51c6ea=_[_0xf5d0('0x29')](db['OpenchannelQueueReport'][_0xf5d0('0x2a')],function(_0x21b77f){return{'name':_0x21b77f[_0xf5d0('0x2b')],'type':_0x21b77f[_0xf5d0('0x2c')][_0xf5d0('0x2d')]};});_0x4d821a[_0xf5d0('0x2e')]=_[_0xf5d0('0x29')](_0x51c6ea,_0xf5d0('0x27'));_0x4d821a[_0xf5d0('0x2f')]=_[_0xf5d0('0x30')](_0xec0cfc[_0xf5d0('0x2f')]);_0x4d821a['filters']=_[_0xf5d0('0x31')](_0x4d821a['model'],_0x4d821a['query']);_0x552ab1[_0xf5d0('0x32')]=_[_0xf5d0('0x31')](_0x4d821a[_0xf5d0('0x2e')],qs[_0xf5d0('0x33')](_0xec0cfc[_0xf5d0('0x2f')]['fields']));_0x552ab1[_0xf5d0('0x32')]=_0x552ab1[_0xf5d0('0x32')][_0xf5d0('0x34')]?_0x552ab1[_0xf5d0('0x32')]:_0x4d821a[_0xf5d0('0x2e')];if(!_0xec0cfc[_0xf5d0('0x2f')][_0xf5d0('0x35')](_0xf5d0('0x36'))){_0x552ab1[_0xf5d0('0x1b')]=qs[_0xf5d0('0x1b')](_0xec0cfc[_0xf5d0('0x2f')][_0xf5d0('0x1b')]);_0x552ab1[_0xf5d0('0x1a')]=qs['offset'](_0xec0cfc[_0xf5d0('0x2f')]['offset']);}_0x552ab1['order']=qs['sort'](_0xec0cfc[_0xf5d0('0x2f')][_0xf5d0('0x37')]);_0x552ab1[_0xf5d0('0x38')]=qs[_0xf5d0('0x39')](_[_0xf5d0('0x3a')](_0xec0cfc['query'],_0x4d821a[_0xf5d0('0x39')]),_0x51c6ea);if(_0xec0cfc[_0xf5d0('0x2f')][_0xf5d0('0x3b')]){_0x552ab1[_0xf5d0('0x38')]=_[_0xf5d0('0x3c')](_0x552ab1[_0xf5d0('0x38')],{'$or':_[_0xf5d0('0x29')](_0x51c6ea,function(_0xcf4574){if(_0xcf4574[_0xf5d0('0x2c')]!=='VIRTUAL'){var _0x23aae2={};_0x23aae2[_0xcf4574[_0xf5d0('0x27')]]={'$like':'%'+_0xec0cfc[_0xf5d0('0x2f')][_0xf5d0('0x3b')]+'%'};return _0x23aae2;}})});}_0x552ab1=_[_0xf5d0('0x3c')]({},_0x552ab1,_0xec0cfc['options']);var _0x23075e={'where':_0x552ab1[_0xf5d0('0x38')]};return db[_0xf5d0('0x3d')][_0xf5d0('0x1d')](_0x23075e)[_0xf5d0('0x23')](function(_0xd07c26){_0x352bd0['count']=_0xd07c26;if(_0xec0cfc['query'][_0xf5d0('0x3e')]){_0x552ab1[_0xf5d0('0x3f')]=[{'all':!![]}];}return db[_0xf5d0('0x3d')][_0xf5d0('0x40')](_0x552ab1);})[_0xf5d0('0x23')](function(_0x2778b7){_0x352bd0[_0xf5d0('0x41')]=_0x2778b7;return _0x352bd0;})[_0xf5d0('0x23')](respondWithFilteredResult(_0xff4959,_0x552ab1))[_0xf5d0('0x42')](handleError(_0xff4959,null));};exports[_0xf5d0('0x43')]=function(_0xdc5a78,_0x30795b){var _0x1272f5={'raw':!![],'where':{'id':_0xdc5a78[_0xf5d0('0x44')]['id']}},_0x1c0705={};_0x1c0705['model']=_[_0xf5d0('0x30')](db[_0xf5d0('0x3d')][_0xf5d0('0x2a')]);_0x1c0705[_0xf5d0('0x2f')]=_[_0xf5d0('0x30')](_0xdc5a78[_0xf5d0('0x2f')]);_0x1c0705[_0xf5d0('0x39')]=_['intersection'](_0x1c0705['model'],_0x1c0705[_0xf5d0('0x2f')]);_0x1272f5[_0xf5d0('0x32')]=_[_0xf5d0('0x31')](_0x1c0705[_0xf5d0('0x2e')],qs['fields'](_0xdc5a78[_0xf5d0('0x2f')][_0xf5d0('0x33')]));_0x1272f5[_0xf5d0('0x32')]=_0x1272f5[_0xf5d0('0x32')]['length']?_0x1272f5[_0xf5d0('0x32')]:_0x1c0705[_0xf5d0('0x2e')];if(_0xdc5a78['query'][_0xf5d0('0x3e')]){_0x1272f5['include']=[{'all':!![]}];}_0x1272f5=_['merge']({},_0x1272f5,_0xdc5a78['options']);return db[_0xf5d0('0x3d')][_0xf5d0('0x45')](_0x1272f5)['then'](handleEntityNotFound(_0x30795b,null))[_0xf5d0('0x23')](respondWithResult(_0x30795b,null))[_0xf5d0('0x42')](handleError(_0x30795b,null));};exports[_0xf5d0('0x46')]=function(_0x55c6a0,_0x556cdc){return db[_0xf5d0('0x3d')][_0xf5d0('0x46')](_0x55c6a0[_0xf5d0('0x47')],{})[_0xf5d0('0x23')](respondWithResult(_0x556cdc,0xc9))[_0xf5d0('0x42')](handleError(_0x556cdc,null));};exports[_0xf5d0('0x22')]=function(_0x17641a,_0x25a31d){if(_0x17641a['body']['id']){delete _0x17641a[_0xf5d0('0x47')]['id'];}return db[_0xf5d0('0x3d')]['find']({'where':{'id':_0x17641a[_0xf5d0('0x44')]['id']}})[_0xf5d0('0x23')](handleEntityNotFound(_0x25a31d,null))[_0xf5d0('0x23')](saveUpdates(_0x17641a[_0xf5d0('0x47')],null))[_0xf5d0('0x23')](respondWithResult(_0x25a31d,null))[_0xf5d0('0x42')](handleError(_0x25a31d,null));};exports[_0xf5d0('0x24')]=function(_0x33f4a1,_0x82987d){return db[_0xf5d0('0x3d')][_0xf5d0('0x45')]({'where':{'id':_0x33f4a1[_0xf5d0('0x44')]['id']}})[_0xf5d0('0x23')](handleEntityNotFound(_0x82987d,null))['then'](removeEntity(_0x82987d,null))[_0xf5d0('0x42')](handleError(_0x82987d,null));};exports[_0xf5d0('0x48')]=function(_0x3fe00e,_0x5da767){return db[_0xf5d0('0x3d')][_0xf5d0('0x48')]()['then'](respondWithResult(_0x5da767,null))[_0xf5d0('0x42')](handleError(_0x5da767,null));};
\ No newline at end of file
index 7671265..7d977b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['define','OpenchannelQueueReport','report_openchannel_queue','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./openchannelQueueReport.attributes','exports'];(function(_0xb653f3,_0x5cccc0){var _0x5b5ed1=function(_0x53b077){while(--_0x53b077){_0xb653f3['push'](_0xb653f3['shift']());}};_0x5b5ed1(++_0x5cccc0);}(_0x2ef3,0xba));var _0x32ef=function(_0x5cf149,_0x410bb7){_0x5cf149=_0x5cf149-0x0;var _0x3b88cb=_0x2ef3[_0x5cf149];return _0x3b88cb;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var logger=require(_0x32ef('0x2'))(_0x32ef('0x3'));var moment=require(_0x32ef('0x4'));var BPromise=require(_0x32ef('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x32ef('0x6'));var rimraf=require(_0x32ef('0x7'));var config=require('../../config/environment');var attributes=require(_0x32ef('0x8'));module[_0x32ef('0x9')]=function(_0x4c8104,_0x5dfa09){return _0x4c8104[_0x32ef('0xa')](_0x32ef('0xb'),attributes,{'tableName':_0x32ef('0xc'),'paranoid':![],'indexes':[{'name':_0x32ef('0xd'),'fields':[_0x32ef('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1261=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','define','report_openchannel_queue','uniqueid','util'];(function(_0x192a2f,_0x3e782e){var _0x546abb=function(_0x3b8bf5){while(--_0x3b8bf5){_0x192a2f['push'](_0x192a2f['shift']());}};_0x546abb(++_0x3e782e);}(_0x1261,0x144));var _0x1126=function(_0x544cd7,_0x20f588){_0x544cd7=_0x544cd7-0x0;var _0x43c000=_0x1261[_0x544cd7];return _0x43c000;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var logger=require(_0x1126('0x1'))(_0x1126('0x2'));var moment=require(_0x1126('0x3'));var BPromise=require(_0x1126('0x4'));var rp=require(_0x1126('0x5'));var fs=require('fs');var path=require(_0x1126('0x6'));var rimraf=require(_0x1126('0x7'));var config=require(_0x1126('0x8'));var attributes=require(_0x1126('0x9'));module['exports']=function(_0x5c68c8,_0x40ba58){return _0x5c68c8[_0x1126('0xa')]('OpenchannelQueueReport',attributes,{'tableName':_0x1126('0xb'),'paranoid':![],'indexes':[{'name':_0x1126('0xc'),'fields':[_0x1126('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index eef47b3..f22f479 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb59=['then','info','OpenchannelQueueReport,\x20%s,\x20%s','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','CreateOpenchannelQueueReport','body','options','catch','UpdateOpenchannelQueueReport','update','where','attributes','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request'];(function(_0x562faa,_0x23adc7){var _0xc70f59=function(_0x2d7dec){while(--_0x2d7dec){_0x562faa['push'](_0x562faa['shift']());}};_0xc70f59(++_0x23adc7);}(_0xbb59,0xec));var _0x9bb5=function(_0xecdc8b,_0x4167f2){_0xecdc8b=_0xecdc8b-0x0;var _0x201999=_0xbb59[_0xecdc8b];return _0x201999;};'use strict';var _=require(_0x9bb5('0x0'));var util=require(_0x9bb5('0x1'));var moment=require(_0x9bb5('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9bb5('0x3'));var db=require(_0x9bb5('0x4'))['db'];var utils=require(_0x9bb5('0x5'));var logger=require(_0x9bb5('0x6'))(_0x9bb5('0x7'));var config=require('../../config/environment');var jayson=require(_0x9bb5('0x8'));var client=jayson[_0x9bb5('0x9')][_0x9bb5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2df722,_0xe362e0,_0x83fd10){return new BPromise(function(_0x2d6cce,_0x4e3857){return client[_0x9bb5('0xb')](_0x2df722,_0x83fd10)[_0x9bb5('0xc')](function(_0x2fdbcb){logger[_0x9bb5('0xd')](_0x9bb5('0xe'),_0xe362e0,'request\x20sent');logger[_0x9bb5('0xf')](_0x9bb5('0x10'),_0xe362e0,_0x9bb5('0x11'),JSON[_0x9bb5('0x12')](_0x2fdbcb));if(_0x2fdbcb[_0x9bb5('0x13')]){if(_0x2fdbcb[_0x9bb5('0x13')][_0x9bb5('0x14')]===0x1f4){logger[_0x9bb5('0x13')](_0x9bb5('0xe'),_0xe362e0,_0x2fdbcb[_0x9bb5('0x13')][_0x9bb5('0x15')]);return _0x4e3857(_0x2fdbcb[_0x9bb5('0x13')][_0x9bb5('0x15')]);}logger[_0x9bb5('0x13')]('OpenchannelQueueReport,\x20%s,\x20%s',_0xe362e0,_0x2fdbcb['error'][_0x9bb5('0x15')]);return _0x2d6cce(_0x2fdbcb['error']['message']);}else{logger[_0x9bb5('0xd')]('OpenchannelQueueReport,\x20%s,\x20%s',_0xe362e0,_0x9bb5('0x11'));_0x2d6cce(_0x2fdbcb[_0x9bb5('0x16')][_0x9bb5('0x15')]);}})['catch'](function(_0xb471e){logger[_0x9bb5('0x13')](_0x9bb5('0xe'),_0xe362e0,_0xb471e);_0x4e3857(_0xb471e);});});}exports[_0x9bb5('0x17')]=function(_0xba8392){var _0x19d1e9=this;return new Promise(function(_0x162815,_0xe44bdd){return db['OpenchannelQueueReport']['create'](_0xba8392[_0x9bb5('0x18')],{'raw':_0xba8392[_0x9bb5('0x19')]?_0xba8392['options']['raw']===undefined?!![]:![]:!![]})[_0x9bb5('0xc')](function(_0x182966){logger[_0x9bb5('0xd')]('CreateOpenchannelQueueReport',_0xba8392);logger[_0x9bb5('0xf')](_0x9bb5('0x17'),_0xba8392,JSON[_0x9bb5('0x12')](_0x182966));_0x162815(_0x182966);})[_0x9bb5('0x1a')](function(_0x51fa34){logger[_0x9bb5('0x13')](_0x9bb5('0x17'),_0x51fa34['message'],_0xba8392);_0xe44bdd(_0x19d1e9[_0x9bb5('0x13')](0x1f4,_0x51fa34['message']));});});};exports[_0x9bb5('0x1b')]=function(_0x5357e9){var _0x4be52b=this;return new Promise(function(_0x1d7195,_0x16db23){return db['OpenchannelQueueReport'][_0x9bb5('0x1c')](_0x5357e9[_0x9bb5('0x18')],{'raw':_0x5357e9[_0x9bb5('0x19')]?_0x5357e9['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5357e9[_0x9bb5('0x19')]?_0x5357e9[_0x9bb5('0x19')][_0x9bb5('0x1d')]||null:null,'attributes':_0x5357e9['options']?_0x5357e9[_0x9bb5('0x19')][_0x9bb5('0x1e')]||null:null,'limit':_0x5357e9[_0x9bb5('0x19')]?_0x5357e9['options']['limit']||null:null})['then'](function(_0x1ad67b){logger[_0x9bb5('0xd')](_0x9bb5('0x1b'),_0x5357e9);logger[_0x9bb5('0xf')](_0x9bb5('0x1b'),_0x5357e9,JSON['stringify'](_0x1ad67b));_0x1d7195(_0x1ad67b);})['catch'](function(_0x59ef00){logger[_0x9bb5('0x13')](_0x9bb5('0x1b'),_0x59ef00[_0x9bb5('0x15')],_0x5357e9);_0x16db23(_0x4be52b['error'](0x1f4,_0x59ef00['message']));});});};
\ No newline at end of file
+var _0x8603=['create','options','raw','debug','stringify','UpdateOpenchannelQueueReport','where','attributes','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','then','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport'];(function(_0x2bf141,_0x31eac7){var _0x48277b=function(_0x9fe560){while(--_0x9fe560){_0x2bf141['push'](_0x2bf141['shift']());}};_0x48277b(++_0x31eac7);}(_0x8603,0x190));var _0x3860=function(_0xbcb4bf,_0x5296ed){_0xbcb4bf=_0xbcb4bf-0x0;var _0x3932b3=_0x8603[_0xbcb4bf];return _0x3932b3;};'use strict';var _=require('lodash');var util=require(_0x3860('0x0'));var moment=require(_0x3860('0x1'));var BPromise=require(_0x3860('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3860('0x3'))['db'];var utils=require(_0x3860('0x4'));var logger=require(_0x3860('0x5'))('rpc');var config=require(_0x3860('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x3860('0x7')][_0x3860('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1eca44,_0xd3ce26,_0x472bf2){return new BPromise(function(_0x4aba10,_0x5c7350){return client['request'](_0x1eca44,_0x472bf2)[_0x3860('0x9')](function(_0x441dc4){logger['info'](_0x3860('0xa'),_0xd3ce26,_0x3860('0xb'));logger['debug'](_0x3860('0xc'),_0xd3ce26,_0x3860('0xb'),JSON['stringify'](_0x441dc4));if(_0x441dc4[_0x3860('0xd')]){if(_0x441dc4[_0x3860('0xd')]['code']===0x1f4){logger[_0x3860('0xd')](_0x3860('0xa'),_0xd3ce26,_0x441dc4[_0x3860('0xd')][_0x3860('0xe')]);return _0x5c7350(_0x441dc4[_0x3860('0xd')][_0x3860('0xe')]);}logger[_0x3860('0xd')](_0x3860('0xa'),_0xd3ce26,_0x441dc4[_0x3860('0xd')][_0x3860('0xe')]);return _0x4aba10(_0x441dc4['error'][_0x3860('0xe')]);}else{logger[_0x3860('0xf')](_0x3860('0xa'),_0xd3ce26,_0x3860('0xb'));_0x4aba10(_0x441dc4[_0x3860('0x10')][_0x3860('0xe')]);}})[_0x3860('0x11')](function(_0x378305){logger[_0x3860('0xd')](_0x3860('0xa'),_0xd3ce26,_0x378305);_0x5c7350(_0x378305);});});}exports[_0x3860('0x12')]=function(_0x45b799){var _0x4b6b15=this;return new Promise(function(_0x4863bd,_0x373b06){return db[_0x3860('0x13')][_0x3860('0x14')](_0x45b799['body'],{'raw':_0x45b799[_0x3860('0x15')]?_0x45b799[_0x3860('0x15')][_0x3860('0x16')]===undefined?!![]:![]:!![]})[_0x3860('0x9')](function(_0x20a5b0){logger[_0x3860('0xf')](_0x3860('0x12'),_0x45b799);logger[_0x3860('0x17')](_0x3860('0x12'),_0x45b799,JSON[_0x3860('0x18')](_0x20a5b0));_0x4863bd(_0x20a5b0);})[_0x3860('0x11')](function(_0x2e0b6e){logger[_0x3860('0xd')](_0x3860('0x12'),_0x2e0b6e[_0x3860('0xe')],_0x45b799);_0x373b06(_0x4b6b15['error'](0x1f4,_0x2e0b6e[_0x3860('0xe')]));});});};exports[_0x3860('0x19')]=function(_0x2b91f2){var _0x301e03=this;return new Promise(function(_0x20bb1e,_0x56a6d1){return db[_0x3860('0x13')]['update'](_0x2b91f2['body'],{'raw':_0x2b91f2[_0x3860('0x15')]?_0x2b91f2[_0x3860('0x15')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2b91f2['options']?_0x2b91f2['options'][_0x3860('0x1a')]||null:null,'attributes':_0x2b91f2[_0x3860('0x15')]?_0x2b91f2[_0x3860('0x15')][_0x3860('0x1b')]||null:null,'limit':_0x2b91f2[_0x3860('0x15')]?_0x2b91f2[_0x3860('0x15')]['limit']||null:null})['then'](function(_0x389bd0){logger[_0x3860('0xf')]('UpdateOpenchannelQueueReport',_0x2b91f2);logger[_0x3860('0x17')](_0x3860('0x19'),_0x2b91f2,JSON[_0x3860('0x18')](_0x389bd0));_0x20bb1e(_0x389bd0);})[_0x3860('0x11')](function(_0x3628f7){logger['error'](_0x3860('0x19'),_0x3628f7[_0x3860('0xe')],_0x2b91f2);_0x56a6d1(_0x301e03[_0x3860('0xd')](0x1f4,_0x3628f7['message']));});});};
\ No newline at end of file
index 655d2bb..78c2842 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10ef=['/:id','show','post','create','put','update','multer','util','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe'];(function(_0x255553,_0x3eb4cd){var _0x4bf0f6=function(_0x44c016){while(--_0x44c016){_0x255553['push'](_0x255553['shift']());}};_0x4bf0f6(++_0x3eb4cd);}(_0x10ef,0x1a4));var _0xf10e=function(_0x8be34a,_0x446d42){_0x8be34a=_0x8be34a-0x0;var _0x33b2db=_0x10ef[_0x8be34a];return _0x33b2db;};'use strict';var multer=require(_0xf10e('0x0'));var util=require(_0xf10e('0x1'));var path=require(_0xf10e('0x2'));var timeout=require('connect-timeout');var express=require(_0xf10e('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xf10e('0x4'));var interaction=require(_0xf10e('0x5'));var config=require(_0xf10e('0x6'));var controller=require('./openchannelTransferReport.controller');router[_0xf10e('0x7')]('/',auth[_0xf10e('0x8')](),controller[_0xf10e('0x9')]);router[_0xf10e('0x7')](_0xf10e('0xa'),auth[_0xf10e('0x8')](),controller[_0xf10e('0xb')]);router[_0xf10e('0x7')](_0xf10e('0xc'),auth[_0xf10e('0x8')](),controller[_0xf10e('0xd')]);router[_0xf10e('0xe')]('/',auth[_0xf10e('0x8')](),controller[_0xf10e('0xf')]);router[_0xf10e('0x10')](_0xf10e('0xc'),auth[_0xf10e('0x8')](),controller[_0xf10e('0x11')]);router['delete'](_0xf10e('0xc'),auth[_0xf10e('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x1609=['get','isAuthenticated','describe','/:id','show','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller'];(function(_0x331c8d,_0x1093fa){var _0x167c9b=function(_0x9c775){while(--_0x9c775){_0x331c8d['push'](_0x331c8d['shift']());}};_0x167c9b(++_0x1093fa);}(_0x1609,0x170));var _0x9160=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0x1609[_0x491a7f];return _0x3d8f44;};'use strict';var multer=require(_0x9160('0x0'));var util=require(_0x9160('0x1'));var path=require('path');var timeout=require(_0x9160('0x2'));var express=require(_0x9160('0x3'));var router=express[_0x9160('0x4')]();var fs_extra=require(_0x9160('0x5'));var auth=require(_0x9160('0x6'));var interaction=require(_0x9160('0x7'));var config=require(_0x9160('0x8'));var controller=require(_0x9160('0x9'));router[_0x9160('0xa')]('/',auth[_0x9160('0xb')](),controller['index']);router[_0x9160('0xa')]('/describe',auth[_0x9160('0xb')](),controller[_0x9160('0xc')]);router[_0x9160('0xa')](_0x9160('0xd'),auth[_0x9160('0xb')](),controller[_0x9160('0xe')]);router['post']('/',auth[_0x9160('0xb')](),controller[_0x9160('0xf')]);router[_0x9160('0x10')](_0x9160('0xd'),auth[_0x9160('0xb')](),controller[_0x9160('0x11')]);router[_0x9160('0x12')]('/:id',auth[_0x9160('0xb')](),controller[_0x9160('0x13')]);module[_0x9160('0x14')]=router;
\ No newline at end of file
index 4901a6b..a19dae9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x1e73fc,_0x533750){var _0xeceac4=function(_0x2c6dda){while(--_0x2c6dda){_0x1e73fc['push'](_0x1e73fc['shift']());}};_0xeceac4(++_0x533750);}(_0x9c44,0x178));var _0x49c4=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0x9c44[_0x334841];return _0x5beb4b;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x49c4('0x0')]={'uniqueid':{'type':Sequelize[_0x49c4('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x49c4('0x2')](_0x49c4('0x3'),_0x49c4('0x4'),_0x49c4('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x49c4('0x6')]}};
\ No newline at end of file
+var _0xe706=['NOW','moment','sequelize','exports','ENUM','account','agent','queue','DATE'];(function(_0x3ba6bf,_0x290126){var _0x4c7e0a=function(_0x2bbf74){while(--_0x2bbf74){_0x3ba6bf['push'](_0x3ba6bf['shift']());}};_0x4c7e0a(++_0x290126);}(_0xe706,0xa3));var _0x6e70=function(_0x2f3412,_0x2b8d24){_0x2f3412=_0x2f3412-0x0;var _0x4071d6=_0xe706[_0x2f3412];return _0x4071d6;};'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
index b00431e..f2234bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94dc=['OpenchannelTransferReport','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','filters','pick','filter','where','merge','VIRTUAL','options','includeAll','include','rows','catch','show','keys','find','create','body','params','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','crypto','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','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map'];(function(_0x3bb341,_0x3b7ba1){var _0x2c8ba5=function(_0x1f2a86){while(--_0x1f2a86){_0x3bb341['push'](_0x3bb341['shift']());}};_0x2c8ba5(++_0x3b7ba1);}(_0x94dc,0x70));var _0xc94d=function(_0x42d29d,_0x41c228){_0x42d29d=_0x42d29d-0x0;var _0x34a98e=_0x94dc[_0x42d29d];return _0x34a98e;};'use strict';var emlformat=require(_0xc94d('0x0'));var rimraf=require(_0xc94d('0x1'));var zipdir=require(_0xc94d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc94d('0x3'));var moment=require(_0xc94d('0x4'));var BPromise=require(_0xc94d('0x5'));var Mustache=require('mustache');var util=require(_0xc94d('0x6'));var path=require(_0xc94d('0x7'));var sox=require(_0xc94d('0x8'));var csv=require(_0xc94d('0x9'));var ejs=require(_0xc94d('0xa'));var fs=require('fs');var fs_extra=require(_0xc94d('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xc94d('0xc'));var jsforce=require(_0xc94d('0xd'));var deskjs=require(_0xc94d('0xe'));var toCsv=require(_0xc94d('0x9'));var querystring=require(_0xc94d('0xf'));var Papa=require(_0xc94d('0x10'));var Redis=require(_0xc94d('0x11'));var authService=require(_0xc94d('0x12'));var qs=require(_0xc94d('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc94d('0x14'));var logger=require(_0xc94d('0x15'))(_0xc94d('0x16'));var utils=require(_0xc94d('0x17'));var config=require(_0xc94d('0x18'));var licenseUtil=require(_0xc94d('0x19'));var db=require(_0xc94d('0x1a'))['db'];function respondWithStatusCode(_0x3f1ae4,_0x4a4ae2){_0x4a4ae2=_0x4a4ae2||0xcc;return function(_0x51ddc4){if(_0x51ddc4){return _0x3f1ae4[_0xc94d('0x1b')](_0x4a4ae2);}return _0x3f1ae4[_0xc94d('0x1c')](_0x4a4ae2)['end']();};}function respondWithResult(_0x3556fd,_0x33a6cd){_0x33a6cd=_0x33a6cd||0xc8;return function(_0x447a62){if(_0x447a62){return _0x3556fd['status'](_0x33a6cd)[_0xc94d('0x1d')](_0x447a62);}};}function respondWithFilteredResult(_0x552d1d,_0x46ea02){return function(_0x39b3d2){if(_0x39b3d2){var _0x4d1caf=typeof _0x46ea02[_0xc94d('0x1e')]===_0xc94d('0x1f')&&typeof _0x46ea02[_0xc94d('0x20')]==='undefined';var _0x1707b9=_0x39b3d2[_0xc94d('0x21')];var _0x564e16=_0x4d1caf?0x0:_0x46ea02[_0xc94d('0x1e')];var _0x4fc703=_0x4d1caf?_0x39b3d2[_0xc94d('0x21')]:_0x46ea02['offset']+_0x46ea02[_0xc94d('0x20')];var _0xf30276;if(_0x4fc703>=_0x1707b9){_0x4fc703=_0x1707b9;_0xf30276=0xc8;}else{_0xf30276=0xce;}_0x552d1d[_0xc94d('0x1c')](_0xf30276);return _0x552d1d[_0xc94d('0x22')](_0xc94d('0x23'),_0x564e16+'-'+_0x4fc703+'/'+_0x1707b9)[_0xc94d('0x1d')](_0x39b3d2);}return null;};}function patchUpdates(_0x28602c){return function(_0x5a882e){try{jsonpatch[_0xc94d('0x24')](_0x5a882e,_0x28602c,!![]);}catch(_0x951ab){return BPromise[_0xc94d('0x25')](_0x951ab);}return _0x5a882e[_0xc94d('0x26')]();};}function saveUpdates(_0x5a9488,_0x5eaad9){return function(_0x2058ed){if(_0x2058ed){return _0x2058ed[_0xc94d('0x27')](_0x5a9488)[_0xc94d('0x28')](function(_0x2ab4ae){return _0x2ab4ae;});}return null;};}function removeEntity(_0x29da9f,_0x594d91){return function(_0x5669f6){if(_0x5669f6){return _0x5669f6[_0xc94d('0x29')]()[_0xc94d('0x28')](function(){_0x29da9f[_0xc94d('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x53db1e,_0x1d5d92){return function(_0x5f05b8){if(!_0x5f05b8){_0x53db1e[_0xc94d('0x1b')](0x194);}return _0x5f05b8;};}function handleError(_0x445d4d,_0x392d0e){_0x392d0e=_0x392d0e||0x1f4;return function(_0x43aaf2){logger[_0xc94d('0x2a')](_0x43aaf2[_0xc94d('0x2b')]);if(_0x43aaf2[_0xc94d('0x2c')]){delete _0x43aaf2[_0xc94d('0x2c')];}_0x445d4d[_0xc94d('0x1c')](_0x392d0e)[_0xc94d('0x2d')](_0x43aaf2);};}exports[_0xc94d('0x2e')]=function(_0xf15fb3,_0x55b5f3){var _0x16a5cd={},_0x55e09e={},_0x22d431={'count':0x0,'rows':[]};var _0x125c2c=_[_0xc94d('0x2f')](db[_0xc94d('0x30')][_0xc94d('0x31')],function(_0x596d55){return{'name':_0x596d55[_0xc94d('0x32')],'type':_0x596d55[_0xc94d('0x33')][_0xc94d('0x34')]};});_0x55e09e[_0xc94d('0x35')]=_[_0xc94d('0x2f')](_0x125c2c,_0xc94d('0x2c'));_0x55e09e[_0xc94d('0x36')]=_['keys'](_0xf15fb3[_0xc94d('0x36')]);_0x55e09e['filters']=_[_0xc94d('0x37')](_0x55e09e[_0xc94d('0x35')],_0x55e09e[_0xc94d('0x36')]);_0x16a5cd[_0xc94d('0x38')]=_['intersection'](_0x55e09e['model'],qs['fields'](_0xf15fb3[_0xc94d('0x36')][_0xc94d('0x39')]));_0x16a5cd[_0xc94d('0x38')]=_0x16a5cd[_0xc94d('0x38')][_0xc94d('0x3a')]?_0x16a5cd[_0xc94d('0x38')]:_0x55e09e['model'];if(!_0xf15fb3[_0xc94d('0x36')][_0xc94d('0x3b')](_0xc94d('0x3c'))){_0x16a5cd['limit']=qs[_0xc94d('0x20')](_0xf15fb3[_0xc94d('0x36')][_0xc94d('0x20')]);_0x16a5cd[_0xc94d('0x1e')]=qs['offset'](_0xf15fb3[_0xc94d('0x36')][_0xc94d('0x1e')]);}_0x16a5cd['order']=qs['sort'](_0xf15fb3[_0xc94d('0x36')][_0xc94d('0x3d')]);_0x16a5cd['where']=qs[_0xc94d('0x3e')](_[_0xc94d('0x3f')](_0xf15fb3[_0xc94d('0x36')],_0x55e09e['filters']),_0x125c2c);if(_0xf15fb3[_0xc94d('0x36')][_0xc94d('0x40')]){_0x16a5cd[_0xc94d('0x41')]=_[_0xc94d('0x42')](_0x16a5cd[_0xc94d('0x41')],{'$or':_[_0xc94d('0x2f')](_0x125c2c,function(_0x57ebf2){if(_0x57ebf2['type']!==_0xc94d('0x43')){var _0x3f3f7e={};_0x3f3f7e[_0x57ebf2[_0xc94d('0x2c')]]={'$like':'%'+_0xf15fb3[_0xc94d('0x36')][_0xc94d('0x40')]+'%'};return _0x3f3f7e;}})});}_0x16a5cd=_[_0xc94d('0x42')]({},_0x16a5cd,_0xf15fb3[_0xc94d('0x44')]);var _0x122dc7={'where':_0x16a5cd[_0xc94d('0x41')]};return db[_0xc94d('0x30')][_0xc94d('0x21')](_0x122dc7)[_0xc94d('0x28')](function(_0x58a742){_0x22d431[_0xc94d('0x21')]=_0x58a742;if(_0xf15fb3['query'][_0xc94d('0x45')]){_0x16a5cd[_0xc94d('0x46')]=[{'all':!![]}];}return db['OpenchannelTransferReport']['findAll'](_0x16a5cd);})[_0xc94d('0x28')](function(_0x2e622f){_0x22d431[_0xc94d('0x47')]=_0x2e622f;return _0x22d431;})[_0xc94d('0x28')](respondWithFilteredResult(_0x55b5f3,_0x16a5cd))[_0xc94d('0x48')](handleError(_0x55b5f3,null));};exports[_0xc94d('0x49')]=function(_0x240f2e,_0x4c7487){var _0x2a6305={'raw':!![],'where':{'id':_0x240f2e['params']['id']}},_0x2ec947={};_0x2ec947['model']=_[_0xc94d('0x4a')](db[_0xc94d('0x30')][_0xc94d('0x31')]);_0x2ec947[_0xc94d('0x36')]=_[_0xc94d('0x4a')](_0x240f2e[_0xc94d('0x36')]);_0x2ec947[_0xc94d('0x3e')]=_[_0xc94d('0x37')](_0x2ec947[_0xc94d('0x35')],_0x2ec947[_0xc94d('0x36')]);_0x2a6305[_0xc94d('0x38')]=_[_0xc94d('0x37')](_0x2ec947[_0xc94d('0x35')],qs[_0xc94d('0x39')](_0x240f2e[_0xc94d('0x36')][_0xc94d('0x39')]));_0x2a6305[_0xc94d('0x38')]=_0x2a6305['attributes']['length']?_0x2a6305['attributes']:_0x2ec947[_0xc94d('0x35')];if(_0x240f2e[_0xc94d('0x36')][_0xc94d('0x45')]){_0x2a6305[_0xc94d('0x46')]=[{'all':!![]}];}_0x2a6305=_['merge']({},_0x2a6305,_0x240f2e['options']);return db[_0xc94d('0x30')][_0xc94d('0x4b')](_0x2a6305)[_0xc94d('0x28')](handleEntityNotFound(_0x4c7487,null))[_0xc94d('0x28')](respondWithResult(_0x4c7487,null))['catch'](handleError(_0x4c7487,null));};exports[_0xc94d('0x4c')]=function(_0x36f59a,_0xcfdeb1){return db[_0xc94d('0x30')][_0xc94d('0x4c')](_0x36f59a[_0xc94d('0x4d')],{})[_0xc94d('0x28')](respondWithResult(_0xcfdeb1,0xc9))[_0xc94d('0x48')](handleError(_0xcfdeb1,null));};exports[_0xc94d('0x27')]=function(_0x1e772e,_0x3a12b1){if(_0x1e772e['body']['id']){delete _0x1e772e[_0xc94d('0x4d')]['id'];}return db[_0xc94d('0x30')][_0xc94d('0x4b')]({'where':{'id':_0x1e772e[_0xc94d('0x4e')]['id']}})[_0xc94d('0x28')](handleEntityNotFound(_0x3a12b1,null))[_0xc94d('0x28')](saveUpdates(_0x1e772e[_0xc94d('0x4d')],null))['then'](respondWithResult(_0x3a12b1,null))[_0xc94d('0x48')](handleError(_0x3a12b1,null));};exports[_0xc94d('0x29')]=function(_0x1d4cec,_0x521e39){return db[_0xc94d('0x30')]['find']({'where':{'id':_0x1d4cec[_0xc94d('0x4e')]['id']}})[_0xc94d('0x28')](handleEntityNotFound(_0x521e39,null))[_0xc94d('0x28')](removeEntity(_0x521e39,null))[_0xc94d('0x48')](handleError(_0x521e39,null));};exports[_0xc94d('0x4f')]=function(_0x8c3bf0,_0x4f40f8){return db[_0xc94d('0x30')][_0xc94d('0x4f')]()[_0xc94d('0x28')](respondWithResult(_0x4f40f8,null))[_0xc94d('0x48')](handleError(_0x4f40f8,null));};
\ No newline at end of file
+var _0xee5a=['end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','map','OpenchannelTransferReport','type','key','model','filters','intersection','query','attributes','fields','nolimit','sort','where','merge','VIRTUAL','filter','options','includeAll','findAll','rows','catch','show','params','keys','rawAttributes','length','include','find','create','body','describe','rimraf','request-promise','moment','path','sox','to-csv','ejs','fs-extra','lodash','crypto','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'];(function(_0x341e0f,_0x4a09d0){var _0x59555a=function(_0x4343a8){while(--_0x4343a8){_0x341e0f['push'](_0x341e0f['shift']());}};_0x59555a(++_0x4a09d0);}(_0xee5a,0x1a3));var _0xaee5=function(_0x513404,_0x502d59){_0x513404=_0x513404-0x0;var _0x558677=_0xee5a[_0x513404];return _0x558677;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xaee5('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xaee5('0x1'));var moment=require(_0xaee5('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xaee5('0x3'));var sox=require(_0xaee5('0x4'));var csv=require(_0xaee5('0x5'));var ejs=require(_0xaee5('0x6'));var fs=require('fs');var fs_extra=require(_0xaee5('0x7'));var _=require(_0xaee5('0x8'));var squel=require('squel');var crypto=require(_0xaee5('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xaee5('0xa'));var Papa=require(_0xaee5('0xb'));var Redis=require(_0xaee5('0xc'));var authService=require(_0xaee5('0xd'));var qs=require(_0xaee5('0xe'));var as=require(_0xaee5('0xf'));var hardwareService=require(_0xaee5('0x10'));var logger=require(_0xaee5('0x11'))(_0xaee5('0x12'));var utils=require(_0xaee5('0x13'));var config=require(_0xaee5('0x14'));var licenseUtil=require(_0xaee5('0x15'));var db=require(_0xaee5('0x16'))['db'];function respondWithStatusCode(_0x3b38d7,_0x163490){_0x163490=_0x163490||0xcc;return function(_0x4017c3){if(_0x4017c3){return _0x3b38d7[_0xaee5('0x17')](_0x163490);}return _0x3b38d7[_0xaee5('0x18')](_0x163490)[_0xaee5('0x19')]();};}function respondWithResult(_0x30c585,_0x580e09){_0x580e09=_0x580e09||0xc8;return function(_0x5f02ef){if(_0x5f02ef){return _0x30c585['status'](_0x580e09)[_0xaee5('0x1a')](_0x5f02ef);}};}function respondWithFilteredResult(_0x304616,_0x1b5f41){return function(_0x595104){if(_0x595104){var _0x5b6038=typeof _0x1b5f41[_0xaee5('0x1b')]==='undefined'&&typeof _0x1b5f41[_0xaee5('0x1c')]===_0xaee5('0x1d');var _0x12ec99=_0x595104[_0xaee5('0x1e')];var _0x3a2d1c=_0x5b6038?0x0:_0x1b5f41[_0xaee5('0x1b')];var _0x1220a9=_0x5b6038?_0x595104[_0xaee5('0x1e')]:_0x1b5f41['offset']+_0x1b5f41[_0xaee5('0x1c')];var _0x1e8bb4;if(_0x1220a9>=_0x12ec99){_0x1220a9=_0x12ec99;_0x1e8bb4=0xc8;}else{_0x1e8bb4=0xce;}_0x304616[_0xaee5('0x18')](_0x1e8bb4);return _0x304616[_0xaee5('0x1f')](_0xaee5('0x20'),_0x3a2d1c+'-'+_0x1220a9+'/'+_0x12ec99)['json'](_0x595104);}return null;};}function patchUpdates(_0x18123d){return function(_0x3932c3){try{jsonpatch[_0xaee5('0x21')](_0x3932c3,_0x18123d,!![]);}catch(_0x5a291d){return BPromise[_0xaee5('0x22')](_0x5a291d);}return _0x3932c3[_0xaee5('0x23')]();};}function saveUpdates(_0x269736,_0x22bc65){return function(_0x5f9ba1){if(_0x5f9ba1){return _0x5f9ba1[_0xaee5('0x24')](_0x269736)[_0xaee5('0x25')](function(_0x5e24be){return _0x5e24be;});}return null;};}function removeEntity(_0x2c02ec,_0x2bbba8){return function(_0x245091){if(_0x245091){return _0x245091[_0xaee5('0x26')]()[_0xaee5('0x25')](function(){_0x2c02ec['status'](0xcc)[_0xaee5('0x19')]();});}};}function handleEntityNotFound(_0x2b9bbc,_0x10b6fd){return function(_0x1975c6){if(!_0x1975c6){_0x2b9bbc[_0xaee5('0x17')](0x194);}return _0x1975c6;};}function handleError(_0x4f98e8,_0xab061a){_0xab061a=_0xab061a||0x1f4;return function(_0x51d2c5){logger[_0xaee5('0x27')](_0x51d2c5['stack']);if(_0x51d2c5[_0xaee5('0x28')]){delete _0x51d2c5[_0xaee5('0x28')];}_0x4f98e8[_0xaee5('0x18')](_0xab061a)[_0xaee5('0x29')](_0x51d2c5);};}exports[_0xaee5('0x2a')]=function(_0x4a585a,_0x39e7fd){var _0x49a5bf={},_0xf8a0a4={},_0x52e7f7={'count':0x0,'rows':[]};var _0x3df8c1=_[_0xaee5('0x2b')](db[_0xaee5('0x2c')]['rawAttributes'],function(_0x4992c4){return{'name':_0x4992c4['fieldName'],'type':_0x4992c4[_0xaee5('0x2d')][_0xaee5('0x2e')]};});_0xf8a0a4[_0xaee5('0x2f')]=_['map'](_0x3df8c1,_0xaee5('0x28'));_0xf8a0a4['query']=_['keys'](_0x4a585a['query']);_0xf8a0a4[_0xaee5('0x30')]=_[_0xaee5('0x31')](_0xf8a0a4['model'],_0xf8a0a4[_0xaee5('0x32')]);_0x49a5bf[_0xaee5('0x33')]=_[_0xaee5('0x31')](_0xf8a0a4[_0xaee5('0x2f')],qs[_0xaee5('0x34')](_0x4a585a['query'][_0xaee5('0x34')]));_0x49a5bf[_0xaee5('0x33')]=_0x49a5bf[_0xaee5('0x33')]['length']?_0x49a5bf[_0xaee5('0x33')]:_0xf8a0a4['model'];if(!_0x4a585a[_0xaee5('0x32')]['hasOwnProperty'](_0xaee5('0x35'))){_0x49a5bf['limit']=qs[_0xaee5('0x1c')](_0x4a585a['query'][_0xaee5('0x1c')]);_0x49a5bf[_0xaee5('0x1b')]=qs[_0xaee5('0x1b')](_0x4a585a[_0xaee5('0x32')][_0xaee5('0x1b')]);}_0x49a5bf['order']=qs[_0xaee5('0x36')](_0x4a585a[_0xaee5('0x32')][_0xaee5('0x36')]);_0x49a5bf['where']=qs[_0xaee5('0x30')](_['pick'](_0x4a585a[_0xaee5('0x32')],_0xf8a0a4[_0xaee5('0x30')]),_0x3df8c1);if(_0x4a585a['query']['filter']){_0x49a5bf[_0xaee5('0x37')]=_[_0xaee5('0x38')](_0x49a5bf['where'],{'$or':_[_0xaee5('0x2b')](_0x3df8c1,function(_0x32589c){if(_0x32589c[_0xaee5('0x2d')]!==_0xaee5('0x39')){var _0x5fbb6b={};_0x5fbb6b[_0x32589c[_0xaee5('0x28')]]={'$like':'%'+_0x4a585a['query'][_0xaee5('0x3a')]+'%'};return _0x5fbb6b;}})});}_0x49a5bf=_[_0xaee5('0x38')]({},_0x49a5bf,_0x4a585a[_0xaee5('0x3b')]);var _0x4e43ab={'where':_0x49a5bf[_0xaee5('0x37')]};return db[_0xaee5('0x2c')][_0xaee5('0x1e')](_0x4e43ab)[_0xaee5('0x25')](function(_0xbb59c){_0x52e7f7['count']=_0xbb59c;if(_0x4a585a[_0xaee5('0x32')][_0xaee5('0x3c')]){_0x49a5bf['include']=[{'all':!![]}];}return db[_0xaee5('0x2c')][_0xaee5('0x3d')](_0x49a5bf);})[_0xaee5('0x25')](function(_0x5395fb){_0x52e7f7[_0xaee5('0x3e')]=_0x5395fb;return _0x52e7f7;})[_0xaee5('0x25')](respondWithFilteredResult(_0x39e7fd,_0x49a5bf))[_0xaee5('0x3f')](handleError(_0x39e7fd,null));};exports[_0xaee5('0x40')]=function(_0x15fb29,_0x37b402){var _0x51317f={'raw':!![],'where':{'id':_0x15fb29[_0xaee5('0x41')]['id']}},_0x287b76={};_0x287b76[_0xaee5('0x2f')]=_[_0xaee5('0x42')](db[_0xaee5('0x2c')][_0xaee5('0x43')]);_0x287b76[_0xaee5('0x32')]=_[_0xaee5('0x42')](_0x15fb29[_0xaee5('0x32')]);_0x287b76['filters']=_[_0xaee5('0x31')](_0x287b76[_0xaee5('0x2f')],_0x287b76[_0xaee5('0x32')]);_0x51317f['attributes']=_[_0xaee5('0x31')](_0x287b76[_0xaee5('0x2f')],qs['fields'](_0x15fb29[_0xaee5('0x32')][_0xaee5('0x34')]));_0x51317f[_0xaee5('0x33')]=_0x51317f[_0xaee5('0x33')][_0xaee5('0x44')]?_0x51317f[_0xaee5('0x33')]:_0x287b76[_0xaee5('0x2f')];if(_0x15fb29[_0xaee5('0x32')][_0xaee5('0x3c')]){_0x51317f[_0xaee5('0x45')]=[{'all':!![]}];}_0x51317f=_[_0xaee5('0x38')]({},_0x51317f,_0x15fb29['options']);return db[_0xaee5('0x2c')][_0xaee5('0x46')](_0x51317f)[_0xaee5('0x25')](handleEntityNotFound(_0x37b402,null))[_0xaee5('0x25')](respondWithResult(_0x37b402,null))['catch'](handleError(_0x37b402,null));};exports[_0xaee5('0x47')]=function(_0x291aad,_0x12b4b8){return db['OpenchannelTransferReport'][_0xaee5('0x47')](_0x291aad[_0xaee5('0x48')],{})[_0xaee5('0x25')](respondWithResult(_0x12b4b8,0xc9))[_0xaee5('0x3f')](handleError(_0x12b4b8,null));};exports[_0xaee5('0x24')]=function(_0x521a75,_0x1a3c54){if(_0x521a75['body']['id']){delete _0x521a75['body']['id'];}return db['OpenchannelTransferReport'][_0xaee5('0x46')]({'where':{'id':_0x521a75[_0xaee5('0x41')]['id']}})['then'](handleEntityNotFound(_0x1a3c54,null))[_0xaee5('0x25')](saveUpdates(_0x521a75['body'],null))[_0xaee5('0x25')](respondWithResult(_0x1a3c54,null))[_0xaee5('0x3f')](handleError(_0x1a3c54,null));};exports[_0xaee5('0x26')]=function(_0x13d8be,_0x232b4a){return db[_0xaee5('0x2c')][_0xaee5('0x46')]({'where':{'id':_0x13d8be[_0xaee5('0x41')]['id']}})[_0xaee5('0x25')](handleEntityNotFound(_0x232b4a,null))[_0xaee5('0x25')](removeEntity(_0x232b4a,null))[_0xaee5('0x3f')](handleError(_0x232b4a,null));};exports[_0xaee5('0x49')]=function(_0x44c584,_0xd4f415){return db['OpenchannelTransferReport'][_0xaee5('0x49')]()[_0xaee5('0x25')](respondWithResult(_0xd4f415,null))[_0xaee5('0x3f')](handleError(_0xd4f415,null));};
\ No newline at end of file
index 8b2e239..b276a10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde5a=['lodash','util','../../config/logger','api','path','./openchannelTransferReport.attributes','exports','define','OpenchannelTransferReport','report_openchannel_transfer','uniqueid'];(function(_0x1a33dd,_0x344163){var _0x437335=function(_0x10b716){while(--_0x10b716){_0x1a33dd['push'](_0x1a33dd['shift']());}};_0x437335(++_0x344163);}(_0xde5a,0xf2));var _0xade5=function(_0x3bed5f,_0x5bd941){_0x3bed5f=_0x3bed5f-0x0;var _0x5e2acb=_0xde5a[_0x3bed5f];return _0x5e2acb;};'use strict';var _=require(_0xade5('0x0'));var util=require(_0xade5('0x1'));var logger=require(_0xade5('0x2'))(_0xade5('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xade5('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xade5('0x5'));module[_0xade5('0x6')]=function(_0xd49372,_0x2d7df2){return _0xd49372[_0xade5('0x7')](_0xade5('0x8'),attributes,{'tableName':_0xade5('0x9'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xade5('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1c68=['OpenchannelTransferReport','report_openchannel_transfer','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./openchannelTransferReport.attributes','exports','define'];(function(_0x1c9487,_0x496cdb){var _0x5da536=function(_0x1bc258){while(--_0x1bc258){_0x1c9487['push'](_0x1c9487['shift']());}};_0x5da536(++_0x496cdb);}(_0x1c68,0x9d));var _0x81c6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1c68[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x81c6('0x0'));var logger=require(_0x81c6('0x1'))(_0x81c6('0x2'));var moment=require(_0x81c6('0x3'));var BPromise=require(_0x81c6('0x4'));var rp=require(_0x81c6('0x5'));var fs=require('fs');var path=require(_0x81c6('0x6'));var rimraf=require(_0x81c6('0x7'));var config=require('../../config/environment');var attributes=require(_0x81c6('0x8'));module[_0x81c6('0x9')]=function(_0x20a886,_0x1f05cf){return _0x20a886[_0x81c6('0xa')](_0x81c6('0xb'),attributes,{'tableName':_0x81c6('0xc'),'paranoid':![],'indexes':[{'name':_0x81c6('0xd'),'fields':[_0x81c6('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 2923885..38e9830 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x294b=['jayson/promise','client','http','then','info','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','OpenchannelTransferReport,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment'];(function(_0x59d957,_0x5dc0cb){var _0x406bdf=function(_0x319d80){while(--_0x319d80){_0x59d957['push'](_0x59d957['shift']());}};_0x406bdf(++_0x5dc0cb);}(_0x294b,0xea));var _0xb294=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x294b[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xb294('0x0'));var util=require('util');var moment=require(_0xb294('0x1'));var BPromise=require(_0xb294('0x2'));var rs=require(_0xb294('0x3'));var fs=require('fs');var Redis=require(_0xb294('0x4'));var db=require(_0xb294('0x5'))['db'];var utils=require(_0xb294('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xb294('0x7'));var jayson=require(_0xb294('0x8'));var client=jayson[_0xb294('0x9')][_0xb294('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xcc7910,_0x509dbd,_0x39dfbf){return new BPromise(function(_0x5110aa,_0x5226a4){return client['request'](_0xcc7910,_0x39dfbf)[_0xb294('0xb')](function(_0x33f8e5){logger[_0xb294('0xc')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x509dbd,'request\x20sent');logger['debug'](_0xb294('0xd'),_0x509dbd,_0xb294('0xe'),JSON[_0xb294('0xf')](_0x33f8e5));if(_0x33f8e5[_0xb294('0x10')]){if(_0x33f8e5[_0xb294('0x10')][_0xb294('0x11')]===0x1f4){logger[_0xb294('0x10')](_0xb294('0x12'),_0x509dbd,_0x33f8e5[_0xb294('0x10')][_0xb294('0x13')]);return _0x5226a4(_0x33f8e5['error']['message']);}logger[_0xb294('0x10')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x509dbd,_0x33f8e5['error'][_0xb294('0x13')]);return _0x5110aa(_0x33f8e5[_0xb294('0x10')][_0xb294('0x13')]);}else{logger[_0xb294('0xc')](_0xb294('0x12'),_0x509dbd,_0xb294('0xe'));_0x5110aa(_0x33f8e5[_0xb294('0x14')][_0xb294('0x13')]);}})[_0xb294('0x15')](function(_0x289839){logger[_0xb294('0x10')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x509dbd,_0x289839);_0x5226a4(_0x289839);});});}
\ No newline at end of file
+var _0x34aa=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','OpenchannelTransferReport,\x20%s,\x20%s','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0xb0acfa,_0x369e2e){var _0x5cf647=function(_0x377d36){while(--_0x377d36){_0xb0acfa['push'](_0xb0acfa['shift']());}};_0x5cf647(++_0x369e2e);}(_0x34aa,0x171));var _0xa34a=function(_0x1b745b,_0x3e2d40){_0x1b745b=_0x1b745b-0x0;var _0x120a9d=_0x34aa[_0x1b745b];return _0x120a9d;};'use strict';var _=require(_0xa34a('0x0'));var util=require('util');var moment=require(_0xa34a('0x1'));var BPromise=require(_0xa34a('0x2'));var rs=require(_0xa34a('0x3'));var fs=require('fs');var Redis=require(_0xa34a('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa34a('0x5'));var logger=require(_0xa34a('0x6'))(_0xa34a('0x7'));var config=require(_0xa34a('0x8'));var jayson=require(_0xa34a('0x9'));var client=jayson[_0xa34a('0xa')][_0xa34a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x43f9ea,_0x1a03fd,_0x45f2b4){return new BPromise(function(_0x467864,_0x5c858b){return client[_0xa34a('0xc')](_0x43f9ea,_0x45f2b4)[_0xa34a('0xd')](function(_0x35f231){logger[_0xa34a('0xe')](_0xa34a('0xf'),_0x1a03fd,'request\x20sent');logger[_0xa34a('0x10')](_0xa34a('0x11'),_0x1a03fd,_0xa34a('0x12'),JSON[_0xa34a('0x13')](_0x35f231));if(_0x35f231[_0xa34a('0x14')]){if(_0x35f231[_0xa34a('0x14')][_0xa34a('0x15')]===0x1f4){logger['error'](_0xa34a('0xf'),_0x1a03fd,_0x35f231[_0xa34a('0x14')][_0xa34a('0x16')]);return _0x5c858b(_0x35f231['error'][_0xa34a('0x16')]);}logger[_0xa34a('0x14')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x1a03fd,_0x35f231[_0xa34a('0x14')][_0xa34a('0x16')]);return _0x467864(_0x35f231['error'][_0xa34a('0x16')]);}else{logger[_0xa34a('0xe')](_0xa34a('0xf'),_0x1a03fd,_0xa34a('0x12'));_0x467864(_0x35f231[_0xa34a('0x17')]['message']);}})[_0xa34a('0x18')](function(_0x56f4da){logger[_0xa34a('0x14')](_0xa34a('0xf'),_0x1a03fd,_0x56f4da);_0x5c858b(_0x56f4da);});});}
\ No newline at end of file
index dcb9261..a85759c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ced=['./pause.controller','get','isAuthenticated','index','/:id','show','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment'];(function(_0xc2779b,_0x506b63){var _0x43f072=function(_0x55ce78){while(--_0x55ce78){_0xc2779b['push'](_0xc2779b['shift']());}};_0x43f072(++_0x506b63);}(_0x4ced,0xf5));var _0xd4ce=function(_0x1727ad,_0x3283e4){_0x1727ad=_0x1727ad-0x0;var _0x441a02=_0x4ced[_0x1727ad];return _0x441a02;};'use strict';var multer=require(_0xd4ce('0x0'));var util=require('util');var path=require(_0xd4ce('0x1'));var timeout=require(_0xd4ce('0x2'));var express=require(_0xd4ce('0x3'));var router=express[_0xd4ce('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xd4ce('0x5'));var config=require(_0xd4ce('0x6'));var controller=require(_0xd4ce('0x7'));router[_0xd4ce('0x8')]('/',auth[_0xd4ce('0x9')](),controller[_0xd4ce('0xa')]);router[_0xd4ce('0x8')](_0xd4ce('0xb'),auth[_0xd4ce('0x9')](),controller[_0xd4ce('0xc')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xd4ce('0xd')](_0xd4ce('0xb'),auth['isAuthenticated'](),controller[_0xd4ce('0xe')]);router[_0xd4ce('0xf')](_0xd4ce('0xb'),auth[_0xd4ce('0x9')](),controller[_0xd4ce('0x10')]);module[_0xd4ce('0x11')]=router;
\ No newline at end of file
+var _0xb923=['util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','put','delete','destroy','exports','multer'];(function(_0x52ee06,_0x3fb98d){var _0x6066b1=function(_0x368c05){while(--_0x368c05){_0x52ee06['push'](_0x52ee06['shift']());}};_0x6066b1(++_0x3fb98d);}(_0xb923,0xfe));var _0x3b92=function(_0x5129e1,_0x4baf70){_0x5129e1=_0x5129e1-0x0;var _0x58b34e=_0xb923[_0x5129e1];return _0x58b34e;};'use strict';var multer=require(_0x3b92('0x0'));var util=require(_0x3b92('0x1'));var path=require('path');var timeout=require(_0x3b92('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x3b92('0x3'));var auth=require(_0x3b92('0x4'));var interaction=require(_0x3b92('0x5'));var config=require(_0x3b92('0x6'));var controller=require('./pause.controller');router[_0x3b92('0x7')]('/',auth[_0x3b92('0x8')](),controller[_0x3b92('0x9')]);router[_0x3b92('0x7')](_0x3b92('0xa'),auth['isAuthenticated'](),controller[_0x3b92('0xb')]);router[_0x3b92('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0x3b92('0xd')](_0x3b92('0xa'),auth[_0x3b92('0x8')](),controller['update']);router[_0x3b92('0xe')](_0x3b92('0xa'),auth['isAuthenticated'](),controller[_0x3b92('0xf')]);module[_0x3b92('0x10')]=router;
\ No newline at end of file
index a491674..18bfc4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f87=['exports','STRING','name'];(function(_0x3441ae,_0x571245){var _0x563b00=function(_0xb1763){while(--_0xb1763){_0x3441ae['push'](_0x3441ae['shift']());}};_0x563b00(++_0x571245);}(_0x0f87,0x10e));var _0x70f8=function(_0x18c69d,_0x56acbd){_0x18c69d=_0x18c69d-0x0;var _0x4bf25b=_0x0f87[_0x18c69d];return _0x4bf25b;};'use strict';var Sequelize=require('sequelize');module[_0x70f8('0x0')]={'name':{'type':Sequelize[_0x70f8('0x1')],'unique':_0x70f8('0x2'),'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x311e=['name','STRING','sequelize'];(function(_0x1e4db4,_0x311e15){var _0x5da414=function(_0x19c34c){while(--_0x19c34c){_0x1e4db4['push'](_0x1e4db4['shift']());}};_0x5da414(++_0x311e15);}(_0x311e,0x1b2));var _0xe311=function(_0x5206b0,_0x9e6ae8){_0x5206b0=_0x5206b0-0x0;var _0x159a37=_0x311e[_0x5206b0];return _0x159a37;};'use strict';var Sequelize=require(_0xe311('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xe311('0x1'),'allowNull':![]},'description':{'type':Sequelize[_0xe311('0x2')]}};
\ No newline at end of file
index 7241bf2..6ad0f3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46cb=['model','attributes','fields','length','hasOwnProperty','nolimit','sort','filters','filter','where','merge','type','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','squel','crypto','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','then','get','Pauses','UserProfileResource','error','stack','name','send','Pause','rawAttributes','fieldName','map','query','keys','intersection'];(function(_0x59e8b8,_0x54dcd6){var _0xc8b46a=function(_0x2f0a27){while(--_0x2f0a27){_0x59e8b8['push'](_0x59e8b8['shift']());}};_0xc8b46a(++_0x54dcd6);}(_0x46cb,0xc5));var _0xb46c=function(_0x26d51f,_0x1de895){_0x26d51f=_0x26d51f-0x0;var _0x48305d=_0x46cb[_0x26d51f];return _0x48305d;};'use strict';var emlformat=require(_0xb46c('0x0'));var rimraf=require(_0xb46c('0x1'));var zipdir=require(_0xb46c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb46c('0x3'));var moment=require(_0xb46c('0x4'));var BPromise=require(_0xb46c('0x5'));var Mustache=require(_0xb46c('0x6'));var util=require(_0xb46c('0x7'));var path=require(_0xb46c('0x8'));var sox=require(_0xb46c('0x9'));var csv=require('to-csv');var ejs=require(_0xb46c('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xb46c('0xb'));var crypto=require(_0xb46c('0xc'));var jsforce=require(_0xb46c('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xb46c('0xe'));var querystring=require(_0xb46c('0xf'));var Papa=require('papaparse');var Redis=require(_0xb46c('0x10'));var authService=require(_0xb46c('0x11'));var qs=require(_0xb46c('0x12'));var as=require(_0xb46c('0x13'));var hardwareService=require(_0xb46c('0x14'));var logger=require(_0xb46c('0x15'))(_0xb46c('0x16'));var utils=require(_0xb46c('0x17'));var config=require(_0xb46c('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xb46c('0x19'))['db'];function respondWithStatusCode(_0x2df259,_0x5cef43){_0x5cef43=_0x5cef43||0xcc;return function(_0x44aea5){if(_0x44aea5){return _0x2df259[_0xb46c('0x1a')](_0x5cef43);}return _0x2df259['status'](_0x5cef43)[_0xb46c('0x1b')]();};}function respondWithResult(_0x100180,_0x2c1af6){_0x2c1af6=_0x2c1af6||0xc8;return function(_0x4187bb){if(_0x4187bb){return _0x100180[_0xb46c('0x1c')](_0x2c1af6)[_0xb46c('0x1d')](_0x4187bb);}};}function respondWithFilteredResult(_0x11d792,_0x178a69){return function(_0x20f2d1){if(_0x20f2d1){var _0x14cc2a=typeof _0x178a69[_0xb46c('0x1e')]===_0xb46c('0x1f')&&typeof _0x178a69[_0xb46c('0x20')]===_0xb46c('0x1f');var _0x28d145=_0x20f2d1[_0xb46c('0x21')];var _0x1649b6=_0x14cc2a?0x0:_0x178a69['offset'];var _0x4cb77f=_0x14cc2a?_0x20f2d1[_0xb46c('0x21')]:_0x178a69[_0xb46c('0x1e')]+_0x178a69['limit'];var _0x1ecb34;if(_0x4cb77f>=_0x28d145){_0x4cb77f=_0x28d145;_0x1ecb34=0xc8;}else{_0x1ecb34=0xce;}_0x11d792[_0xb46c('0x1c')](_0x1ecb34);return _0x11d792[_0xb46c('0x22')](_0xb46c('0x23'),_0x1649b6+'-'+_0x4cb77f+'/'+_0x28d145)[_0xb46c('0x1d')](_0x20f2d1);}return null;};}function patchUpdates(_0x1e076c){return function(_0x490366){try{jsonpatch[_0xb46c('0x24')](_0x490366,_0x1e076c,!![]);}catch(_0x4fa39d){return BPromise[_0xb46c('0x25')](_0x4fa39d);}return _0x490366['save']();};}function saveUpdates(_0x53a5d9,_0x107ef1){return function(_0x1ac734){if(_0x1ac734){return _0x1ac734[_0xb46c('0x26')](_0x53a5d9)['then'](function(_0x147cd2){return _0x147cd2;});}return null;};}function removeEntity(_0x1c0228,_0x4ed1f8){return function(_0x317e5e){if(_0x317e5e){return _0x317e5e[_0xb46c('0x27')]()[_0xb46c('0x28')](function(){var _0x9110f3=_0x317e5e[_0xb46c('0x29')]({'plain':!![]});var _0x355b7f=_0xb46c('0x2a');return db[_0xb46c('0x2b')]['destroy']({'where':{'type':_0x355b7f,'resourceId':_0x9110f3['id']}})[_0xb46c('0x28')](function(){return _0x317e5e;});})[_0xb46c('0x28')](function(){_0x1c0228[_0xb46c('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x531c32,_0x2f6f2d){return function(_0x514194){if(!_0x514194){_0x531c32['sendStatus'](0x194);}return _0x514194;};}function handleError(_0x5a8224,_0x4e885d){_0x4e885d=_0x4e885d||0x1f4;return function(_0x56f7a2){logger[_0xb46c('0x2c')](_0x56f7a2[_0xb46c('0x2d')]);if(_0x56f7a2[_0xb46c('0x2e')]){delete _0x56f7a2['name'];}_0x5a8224[_0xb46c('0x1c')](_0x4e885d)[_0xb46c('0x2f')](_0x56f7a2);};}exports['index']=function(_0x35dabb,_0x17ddf0){var _0x32a058={},_0x2fd9b3={},_0x56e8a1={'count':0x0,'rows':[]};var _0x1885f5=_['map'](db[_0xb46c('0x30')][_0xb46c('0x31')],function(_0x423629){return{'name':_0x423629[_0xb46c('0x32')],'type':_0x423629['type']['key']};});_0x2fd9b3['model']=_[_0xb46c('0x33')](_0x1885f5,'name');_0x2fd9b3[_0xb46c('0x34')]=_[_0xb46c('0x35')](_0x35dabb[_0xb46c('0x34')]);_0x2fd9b3['filters']=_[_0xb46c('0x36')](_0x2fd9b3[_0xb46c('0x37')],_0x2fd9b3[_0xb46c('0x34')]);_0x32a058[_0xb46c('0x38')]=_['intersection'](_0x2fd9b3[_0xb46c('0x37')],qs[_0xb46c('0x39')](_0x35dabb['query']['fields']));_0x32a058['attributes']=_0x32a058[_0xb46c('0x38')][_0xb46c('0x3a')]?_0x32a058['attributes']:_0x2fd9b3[_0xb46c('0x37')];if(!_0x35dabb['query'][_0xb46c('0x3b')](_0xb46c('0x3c'))){_0x32a058['limit']=qs['limit'](_0x35dabb[_0xb46c('0x34')][_0xb46c('0x20')]);_0x32a058[_0xb46c('0x1e')]=qs[_0xb46c('0x1e')](_0x35dabb[_0xb46c('0x34')][_0xb46c('0x1e')]);}_0x32a058['order']=qs[_0xb46c('0x3d')](_0x35dabb['query'][_0xb46c('0x3d')]);_0x32a058['where']=qs['filters'](_['pick'](_0x35dabb[_0xb46c('0x34')],_0x2fd9b3[_0xb46c('0x3e')]),_0x1885f5);if(_0x35dabb[_0xb46c('0x34')][_0xb46c('0x3f')]){_0x32a058[_0xb46c('0x40')]=_[_0xb46c('0x41')](_0x32a058[_0xb46c('0x40')],{'$or':_[_0xb46c('0x33')](_0x1885f5,function(_0x274985){if(_0x274985[_0xb46c('0x42')]!=='VIRTUAL'){var _0x5c0fa2={};_0x5c0fa2[_0x274985[_0xb46c('0x2e')]]={'$like':'%'+_0x35dabb[_0xb46c('0x34')][_0xb46c('0x3f')]+'%'};return _0x5c0fa2;}})});}_0x32a058=_[_0xb46c('0x41')]({},_0x32a058,_0x35dabb[_0xb46c('0x43')]);var _0x38664d={'where':_0x32a058[_0xb46c('0x40')]};return db[_0xb46c('0x30')][_0xb46c('0x21')](_0x38664d)[_0xb46c('0x28')](function(_0x1e5eeb){_0x56e8a1[_0xb46c('0x21')]=_0x1e5eeb;if(_0x35dabb['query'][_0xb46c('0x44')]){_0x32a058[_0xb46c('0x45')]=[{'all':!![]}];}return db['Pause'][_0xb46c('0x46')](_0x32a058);})[_0xb46c('0x28')](function(_0x22fba1){_0x56e8a1[_0xb46c('0x47')]=_0x22fba1;return _0x56e8a1;})[_0xb46c('0x28')](respondWithFilteredResult(_0x17ddf0,_0x32a058))[_0xb46c('0x48')](handleError(_0x17ddf0,null));};exports[_0xb46c('0x49')]=function(_0x1b7d15,_0x5ec29d){var _0x550b69={'raw':!![],'where':{'id':_0x1b7d15[_0xb46c('0x4a')]['id']}},_0x3e2d11={};_0x3e2d11[_0xb46c('0x37')]=_[_0xb46c('0x35')](db['Pause'][_0xb46c('0x31')]);_0x3e2d11[_0xb46c('0x34')]=_[_0xb46c('0x35')](_0x1b7d15[_0xb46c('0x34')]);_0x3e2d11[_0xb46c('0x3e')]=_[_0xb46c('0x36')](_0x3e2d11['model'],_0x3e2d11[_0xb46c('0x34')]);_0x550b69[_0xb46c('0x38')]=_[_0xb46c('0x36')](_0x3e2d11[_0xb46c('0x37')],qs[_0xb46c('0x39')](_0x1b7d15[_0xb46c('0x34')][_0xb46c('0x39')]));_0x550b69['attributes']=_0x550b69[_0xb46c('0x38')][_0xb46c('0x3a')]?_0x550b69[_0xb46c('0x38')]:_0x3e2d11[_0xb46c('0x37')];if(_0x1b7d15['query']['includeAll']){_0x550b69[_0xb46c('0x45')]=[{'all':!![]}];}_0x550b69=_[_0xb46c('0x41')]({},_0x550b69,_0x1b7d15[_0xb46c('0x43')]);return db['Pause'][_0xb46c('0x4b')](_0x550b69)[_0xb46c('0x28')](handleEntityNotFound(_0x5ec29d,null))['then'](respondWithResult(_0x5ec29d,null))[_0xb46c('0x48')](handleError(_0x5ec29d,null));};exports[_0xb46c('0x4c')]=function(_0x2f1bb2,_0x4d9fbb){return db[_0xb46c('0x30')][_0xb46c('0x4c')](_0x2f1bb2[_0xb46c('0x4d')],{})[_0xb46c('0x28')](function(_0x572099){var _0xf403a1=_0x2f1bb2[_0xb46c('0x4e')][_0xb46c('0x29')]({'plain':!![]});if(!_0xf403a1)throw new Error(_0xb46c('0x4f'));if(_0xf403a1['role']===_0xb46c('0x4e')){var _0x5e6ccf=_0x572099[_0xb46c('0x29')]({'plain':!![]});var _0x29b211=_0xb46c('0x2a');return db[_0xb46c('0x50')][_0xb46c('0x4b')]({'where':{'name':_0x29b211,'userProfileId':_0xf403a1[_0xb46c('0x51')]},'raw':!![]})['then'](function(_0x5ae8f8){if(_0x5ae8f8&&_0x5ae8f8[_0xb46c('0x52')]===0x0){return db[_0xb46c('0x2b')]['create']({'name':_0x5e6ccf[_0xb46c('0x2e')],'resourceId':_0x5e6ccf['id'],'type':_0x5ae8f8[_0xb46c('0x2e')],'sectionId':_0x5ae8f8['id']},{})['then'](function(){return _0x572099;});}else{return _0x572099;}})[_0xb46c('0x48')](function(_0x2a19e6){logger[_0xb46c('0x2c')](_0xb46c('0x53'),_0x2a19e6);throw _0x2a19e6;});}return _0x572099;})[_0xb46c('0x28')](respondWithResult(_0x4d9fbb,0xc9))['catch'](handleError(_0x4d9fbb,null));};exports[_0xb46c('0x26')]=function(_0x211bbf,_0x3976a7){if(_0x211bbf['body']['id']){delete _0x211bbf[_0xb46c('0x4d')]['id'];}return db[_0xb46c('0x30')][_0xb46c('0x4b')]({'where':{'id':_0x211bbf[_0xb46c('0x4a')]['id']}})[_0xb46c('0x28')](handleEntityNotFound(_0x3976a7,null))[_0xb46c('0x28')](saveUpdates(_0x211bbf[_0xb46c('0x4d')],null))[_0xb46c('0x28')](respondWithResult(_0x3976a7,null))[_0xb46c('0x48')](handleError(_0x3976a7,null));};exports['destroy']=function(_0xf5f89a,_0x5bc3a4){return db[_0xb46c('0x30')]['find']({'where':{'id':_0xf5f89a[_0xb46c('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5bc3a4,null))['then'](removeEntity(_0x5bc3a4,null))[_0xb46c('0x48')](handleError(_0x5bc3a4,null));};
\ No newline at end of file
+var _0x1940=['zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','get','Pauses','UserProfileResource','end','error','name','send','index','map','rawAttributes','fieldName','type','key','query','filters','intersection','attributes','model','length','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','Pause','includeAll','include','findAll','rows','catch','show','params','keys','fields','find','create','body','user','role','UserProfileSection','userProfileId','update','eml-format','rimraf'];(function(_0x4dc928,_0x1e6125){var _0x209324=function(_0x31cd6a){while(--_0x31cd6a){_0x4dc928['push'](_0x4dc928['shift']());}};_0x209324(++_0x1e6125);}(_0x1940,0x1a2));var _0x0194=function(_0x13f980,_0x1e1c56){_0x13f980=_0x13f980-0x0;var _0x27153c=_0x1940[_0x13f980];return _0x27153c;};'use strict';var emlformat=require(_0x0194('0x0'));var rimraf=require(_0x0194('0x1'));var zipdir=require(_0x0194('0x2'));var jsonpatch=require(_0x0194('0x3'));var rp=require(_0x0194('0x4'));var moment=require(_0x0194('0x5'));var BPromise=require(_0x0194('0x6'));var Mustache=require('mustache');var util=require(_0x0194('0x7'));var path=require(_0x0194('0x8'));var sox=require(_0x0194('0x9'));var csv=require(_0x0194('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0194('0xb'));var _=require(_0x0194('0xc'));var squel=require(_0x0194('0xd'));var crypto=require(_0x0194('0xe'));var jsforce=require(_0x0194('0xf'));var deskjs=require(_0x0194('0x10'));var toCsv=require(_0x0194('0xa'));var querystring=require(_0x0194('0x11'));var Papa=require(_0x0194('0x12'));var Redis=require('ioredis');var authService=require(_0x0194('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0194('0x14'));var logger=require(_0x0194('0x15'))(_0x0194('0x16'));var utils=require('../../config/utils');var config=require(_0x0194('0x17'));var licenseUtil=require(_0x0194('0x18'));var db=require(_0x0194('0x19'))['db'];function respondWithStatusCode(_0x5a7594,_0x233168){_0x233168=_0x233168||0xcc;return function(_0x33dd6c){if(_0x33dd6c){return _0x5a7594[_0x0194('0x1a')](_0x233168);}return _0x5a7594[_0x0194('0x1b')](_0x233168)['end']();};}function respondWithResult(_0x4371f6,_0xebdec4){_0xebdec4=_0xebdec4||0xc8;return function(_0x2c50bc){if(_0x2c50bc){return _0x4371f6[_0x0194('0x1b')](_0xebdec4)[_0x0194('0x1c')](_0x2c50bc);}};}function respondWithFilteredResult(_0x476752,_0xfb85d8){return function(_0x2ecba8){if(_0x2ecba8){var _0x1d54af=typeof _0xfb85d8[_0x0194('0x1d')]===_0x0194('0x1e')&&typeof _0xfb85d8[_0x0194('0x1f')]==='undefined';var _0x47042b=_0x2ecba8[_0x0194('0x20')];var _0x405d6b=_0x1d54af?0x0:_0xfb85d8[_0x0194('0x1d')];var _0x29efae=_0x1d54af?_0x2ecba8[_0x0194('0x20')]:_0xfb85d8[_0x0194('0x1d')]+_0xfb85d8['limit'];var _0x322c5b;if(_0x29efae>=_0x47042b){_0x29efae=_0x47042b;_0x322c5b=0xc8;}else{_0x322c5b=0xce;}_0x476752[_0x0194('0x1b')](_0x322c5b);return _0x476752[_0x0194('0x21')](_0x0194('0x22'),_0x405d6b+'-'+_0x29efae+'/'+_0x47042b)[_0x0194('0x1c')](_0x2ecba8);}return null;};}function patchUpdates(_0x16c88e){return function(_0x26a641){try{jsonpatch[_0x0194('0x23')](_0x26a641,_0x16c88e,!![]);}catch(_0x5522ed){return BPromise[_0x0194('0x24')](_0x5522ed);}return _0x26a641['save']();};}function saveUpdates(_0x1a616f,_0x3635d6){return function(_0x268e12){if(_0x268e12){return _0x268e12['update'](_0x1a616f)[_0x0194('0x25')](function(_0x371d9d){return _0x371d9d;});}return null;};}function removeEntity(_0x393f12,_0x4aad00){return function(_0x377384){if(_0x377384){return _0x377384[_0x0194('0x26')]()[_0x0194('0x25')](function(){var _0x43cc95=_0x377384[_0x0194('0x27')]({'plain':!![]});var _0x5a7e53=_0x0194('0x28');return db[_0x0194('0x29')][_0x0194('0x26')]({'where':{'type':_0x5a7e53,'resourceId':_0x43cc95['id']}})[_0x0194('0x25')](function(){return _0x377384;});})[_0x0194('0x25')](function(){_0x393f12[_0x0194('0x1b')](0xcc)[_0x0194('0x2a')]();});}};}function handleEntityNotFound(_0x813ff1,_0x15f0d9){return function(_0x3c21e4){if(!_0x3c21e4){_0x813ff1[_0x0194('0x1a')](0x194);}return _0x3c21e4;};}function handleError(_0x5bafa4,_0xc13252){_0xc13252=_0xc13252||0x1f4;return function(_0x4fabd9){logger[_0x0194('0x2b')](_0x4fabd9['stack']);if(_0x4fabd9[_0x0194('0x2c')]){delete _0x4fabd9[_0x0194('0x2c')];}_0x5bafa4[_0x0194('0x1b')](_0xc13252)[_0x0194('0x2d')](_0x4fabd9);};}exports[_0x0194('0x2e')]=function(_0x2daa02,_0x4605e3){var _0x1c3cd6={},_0xf39dd8={},_0xdc020={'count':0x0,'rows':[]};var _0x4863f4=_[_0x0194('0x2f')](db['Pause'][_0x0194('0x30')],function(_0x10606d){return{'name':_0x10606d[_0x0194('0x31')],'type':_0x10606d[_0x0194('0x32')][_0x0194('0x33')]};});_0xf39dd8['model']=_[_0x0194('0x2f')](_0x4863f4,_0x0194('0x2c'));_0xf39dd8[_0x0194('0x34')]=_['keys'](_0x2daa02[_0x0194('0x34')]);_0xf39dd8[_0x0194('0x35')]=_[_0x0194('0x36')](_0xf39dd8['model'],_0xf39dd8[_0x0194('0x34')]);_0x1c3cd6[_0x0194('0x37')]=_[_0x0194('0x36')](_0xf39dd8[_0x0194('0x38')],qs['fields'](_0x2daa02['query']['fields']));_0x1c3cd6[_0x0194('0x37')]=_0x1c3cd6['attributes'][_0x0194('0x39')]?_0x1c3cd6['attributes']:_0xf39dd8[_0x0194('0x38')];if(!_0x2daa02[_0x0194('0x34')]['hasOwnProperty'](_0x0194('0x3a'))){_0x1c3cd6[_0x0194('0x1f')]=qs[_0x0194('0x1f')](_0x2daa02['query'][_0x0194('0x1f')]);_0x1c3cd6[_0x0194('0x1d')]=qs['offset'](_0x2daa02['query'][_0x0194('0x1d')]);}_0x1c3cd6['order']=qs['sort'](_0x2daa02[_0x0194('0x34')][_0x0194('0x3b')]);_0x1c3cd6[_0x0194('0x3c')]=qs['filters'](_[_0x0194('0x3d')](_0x2daa02[_0x0194('0x34')],_0xf39dd8['filters']),_0x4863f4);if(_0x2daa02['query'][_0x0194('0x3e')]){_0x1c3cd6[_0x0194('0x3c')]=_[_0x0194('0x3f')](_0x1c3cd6[_0x0194('0x3c')],{'$or':_[_0x0194('0x2f')](_0x4863f4,function(_0x26dcfc){if(_0x26dcfc[_0x0194('0x32')]!==_0x0194('0x40')){var _0x30b35b={};_0x30b35b[_0x26dcfc[_0x0194('0x2c')]]={'$like':'%'+_0x2daa02['query'][_0x0194('0x3e')]+'%'};return _0x30b35b;}})});}_0x1c3cd6=_[_0x0194('0x3f')]({},_0x1c3cd6,_0x2daa02[_0x0194('0x41')]);var _0x2d938f={'where':_0x1c3cd6[_0x0194('0x3c')]};return db[_0x0194('0x42')][_0x0194('0x20')](_0x2d938f)[_0x0194('0x25')](function(_0x50c34d){_0xdc020[_0x0194('0x20')]=_0x50c34d;if(_0x2daa02[_0x0194('0x34')][_0x0194('0x43')]){_0x1c3cd6[_0x0194('0x44')]=[{'all':!![]}];}return db[_0x0194('0x42')][_0x0194('0x45')](_0x1c3cd6);})[_0x0194('0x25')](function(_0x403be2){_0xdc020[_0x0194('0x46')]=_0x403be2;return _0xdc020;})['then'](respondWithFilteredResult(_0x4605e3,_0x1c3cd6))[_0x0194('0x47')](handleError(_0x4605e3,null));};exports[_0x0194('0x48')]=function(_0x2d10e3,_0x1c775f){var _0x1d7e47={'raw':!![],'where':{'id':_0x2d10e3[_0x0194('0x49')]['id']}},_0x35186d={};_0x35186d[_0x0194('0x38')]=_['keys'](db['Pause'][_0x0194('0x30')]);_0x35186d['query']=_[_0x0194('0x4a')](_0x2d10e3['query']);_0x35186d[_0x0194('0x35')]=_['intersection'](_0x35186d[_0x0194('0x38')],_0x35186d[_0x0194('0x34')]);_0x1d7e47[_0x0194('0x37')]=_[_0x0194('0x36')](_0x35186d['model'],qs[_0x0194('0x4b')](_0x2d10e3[_0x0194('0x34')][_0x0194('0x4b')]));_0x1d7e47[_0x0194('0x37')]=_0x1d7e47[_0x0194('0x37')][_0x0194('0x39')]?_0x1d7e47[_0x0194('0x37')]:_0x35186d[_0x0194('0x38')];if(_0x2d10e3[_0x0194('0x34')][_0x0194('0x43')]){_0x1d7e47['include']=[{'all':!![]}];}_0x1d7e47=_[_0x0194('0x3f')]({},_0x1d7e47,_0x2d10e3[_0x0194('0x41')]);return db[_0x0194('0x42')][_0x0194('0x4c')](_0x1d7e47)[_0x0194('0x25')](handleEntityNotFound(_0x1c775f,null))[_0x0194('0x25')](respondWithResult(_0x1c775f,null))[_0x0194('0x47')](handleError(_0x1c775f,null));};exports[_0x0194('0x4d')]=function(_0x359ff4,_0x305eef){return db[_0x0194('0x42')][_0x0194('0x4d')](_0x359ff4[_0x0194('0x4e')],{})[_0x0194('0x25')](function(_0x317615){var _0x3ddcbb=_0x359ff4[_0x0194('0x4f')]['get']({'plain':!![]});if(!_0x3ddcbb)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3ddcbb[_0x0194('0x50')]===_0x0194('0x4f')){var _0x256b85=_0x317615['get']({'plain':!![]});var _0x2fb864=_0x0194('0x28');return db[_0x0194('0x51')][_0x0194('0x4c')]({'where':{'name':_0x2fb864,'userProfileId':_0x3ddcbb[_0x0194('0x52')]},'raw':!![]})[_0x0194('0x25')](function(_0x28bfe8){if(_0x28bfe8&&_0x28bfe8['autoAssociation']===0x0){return db[_0x0194('0x29')][_0x0194('0x4d')]({'name':_0x256b85[_0x0194('0x2c')],'resourceId':_0x256b85['id'],'type':_0x28bfe8[_0x0194('0x2c')],'sectionId':_0x28bfe8['id']},{})[_0x0194('0x25')](function(){return _0x317615;});}else{return _0x317615;}})['catch'](function(_0x5d502a){logger[_0x0194('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5d502a);throw _0x5d502a;});}return _0x317615;})[_0x0194('0x25')](respondWithResult(_0x305eef,0xc9))[_0x0194('0x47')](handleError(_0x305eef,null));};exports[_0x0194('0x53')]=function(_0x34eaf3,_0x14090a){if(_0x34eaf3[_0x0194('0x4e')]['id']){delete _0x34eaf3['body']['id'];}return db['Pause']['find']({'where':{'id':_0x34eaf3[_0x0194('0x49')]['id']}})[_0x0194('0x25')](handleEntityNotFound(_0x14090a,null))[_0x0194('0x25')](saveUpdates(_0x34eaf3[_0x0194('0x4e')],null))[_0x0194('0x25')](respondWithResult(_0x14090a,null))[_0x0194('0x47')](handleError(_0x14090a,null));};exports[_0x0194('0x26')]=function(_0x526d58,_0xa6e4da){return db[_0x0194('0x42')][_0x0194('0x4c')]({'where':{'id':_0x526d58[_0x0194('0x49')]['id']}})['then'](handleEntityNotFound(_0xa6e4da,null))[_0x0194('0x25')](removeEntity(_0xa6e4da,null))[_0x0194('0x47')](handleError(_0xa6e4da,null));};
\ No newline at end of file
index cb0e669..7381d77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['define','Pause','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./pause.attributes','exports'];(function(_0x3cddaf,_0x38319d){var _0x2c0b77=function(_0x5e74a7){while(--_0x5e74a7){_0x3cddaf['push'](_0x3cddaf['shift']());}};_0x2c0b77(++_0x38319d);}(_0x814b,0x1a2));var _0xb814=function(_0x367e5b,_0x5721e4){_0x367e5b=_0x367e5b-0x0;var _0x4b909e=_0x814b[_0x367e5b];return _0x4b909e;};'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':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1cb9=['./pause.attributes','exports','define','Pause','lodash','../../config/logger','api','moment','bluebird','path','rimraf'];(function(_0xfecdd4,_0xf0c15e){var _0x27e792=function(_0x274fc1){while(--_0x274fc1){_0xfecdd4['push'](_0xfecdd4['shift']());}};_0x27e792(++_0xf0c15e);}(_0x1cb9,0x14e));var _0x91cb=function(_0x2a6afb,_0xe4ef5){_0x2a6afb=_0x2a6afb-0x0;var _0x47abdf=_0x1cb9[_0x2a6afb];return _0x47abdf;};'use strict';var _=require(_0x91cb('0x0'));var util=require('util');var logger=require(_0x91cb('0x1'))(_0x91cb('0x2'));var moment=require(_0x91cb('0x3'));var BPromise=require(_0x91cb('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x91cb('0x5'));var rimraf=require(_0x91cb('0x6'));var config=require('../../config/environment');var attributes=require(_0x91cb('0x7'));module[_0x91cb('0x8')]=function(_0x186dc3,_0x28543e){return _0x186dc3[_0x91cb('0x9')](_0x91cb('0xa'),attributes,{'tableName':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6d2930d..e6d89e6 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(_0x54ade0,_0x53d7c6){var _0xb2fd4=function(_0x487ca1){while(--_0x487ca1){_0x54ade0['push'](_0x54ade0['shift']());}};_0xb2fd4(++_0x53d7c6);}(_0x7a54,0x106));var _0x47a5=function(_0x663917,_0x4185b2){_0x663917=_0x663917-0x0;var _0x5de346=_0x7a54[_0x663917];return _0x5de346;};'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 _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(_0x958fff,_0x468916){var _0x54a665=function(_0x38c6dd){while(--_0x38c6dd){_0x958fff['push'](_0x958fff['shift']());}};_0x54a665(++_0x468916);}(_0x7a54,0x106));var _0x47a5=function(_0x1fa6ea,_0x17ea9f){_0x1fa6ea=_0x1fa6ea-0x0;var _0x26a66c=_0x7a54[_0x1fa6ea];return _0x26a66c;};'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
index 196cc4e..2228be3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed1f=['basename','originalname','now','extname','single','upload','post','webhookPost','put','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','get','isAuthenticated','index','/webhook','webhookGet','show','/:id/download','diskStorage','server/files/plugins','replace','format'];(function(_0x341f60,_0x427e41){var _0x14615a=function(_0x2dae52){while(--_0x2dae52){_0x341f60['push'](_0x341f60['shift']());}};_0x14615a(++_0x427e41);}(_0xed1f,0x6a));var _0xfed1=function(_0x24f31b,_0x44b8f3){_0x24f31b=_0x24f31b-0x0;var _0x488401=_0xed1f[_0x24f31b];return _0x488401;};'use strict';var multer=require(_0xfed1('0x0'));var util=require(_0xfed1('0x1'));var path=require(_0xfed1('0x2'));var timeout=require(_0xfed1('0x3'));var express=require(_0xfed1('0x4'));var router=express[_0xfed1('0x5')]();var fs_extra=require(_0xfed1('0x6'));var auth=require(_0xfed1('0x7'));var interaction=require(_0xfed1('0x8'));var config=require(_0xfed1('0x9'));var controller=require(_0xfed1('0xa'));router[_0xfed1('0xb')]('/',auth[_0xfed1('0xc')](),controller[_0xfed1('0xd')]);router[_0xfed1('0xb')](_0xfed1('0xe'),controller[_0xfed1('0xf')]);router[_0xfed1('0xb')]('/:id',auth[_0xfed1('0xc')](),controller[_0xfed1('0x10')]);router['get'](_0xfed1('0x11'),auth[_0xfed1('0xc')](),controller['download']);var upload=multer({'storage':multer[_0xfed1('0x12')]({'destination':function(_0x48c338,_0x1c3f40,_0x234f4e){_0x234f4e(null,path['join'](config['root'],_0xfed1('0x13')));},'filename':function(_0xe84ba6,_0x569a6e,_0x17f4fe){_0x569a6e['originalname']=_0x569a6e['originalname'][_0xfed1('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x17f4fe(null,util[_0xfed1('0x15')]('%s-%s%s',path[_0xfed1('0x16')](_0x569a6e['originalname'],path['extname'](_0x569a6e[_0xfed1('0x17')])),Date[_0xfed1('0x18')](),path[_0xfed1('0x19')](_0x569a6e[_0xfed1('0x17')])));}})});router['post']('/',upload[_0xfed1('0x1a')]('file'),controller[_0xfed1('0x1b')]);router[_0xfed1('0x1c')]('/webhook',controller[_0xfed1('0x1d')]);router[_0xfed1('0x1e')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xfed1('0x1f')]('/:id',auth[_0xfed1('0xc')](),controller[_0xfed1('0x1f')]);module['exports']=router;
\ No newline at end of file
+var _0x5178=['root','server/files/plugins','originalname','replace','format','basename','extname','now','post','single','file','upload','webhookPost','put','/:id','update','delete','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get','index','/webhook','webhookGet','isAuthenticated','/:id/download','diskStorage','join'];(function(_0x5414e5,_0x37b3b9){var _0x5a4a6c=function(_0x5a899b){while(--_0x5a899b){_0x5414e5['push'](_0x5414e5['shift']());}};_0x5a4a6c(++_0x37b3b9);}(_0x5178,0x171));var _0x8517=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x5178[_0x2d7f0e];return _0x110b07;};'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('./plugin.controller');router[_0x8517('0x7')]('/',auth['isAuthenticated'](),controller[_0x8517('0x8')]);router[_0x8517('0x7')](_0x8517('0x9'),controller[_0x8517('0xa')]);router[_0x8517('0x7')]('/:id',auth[_0x8517('0xb')](),controller['show']);router['get'](_0x8517('0xc'),auth[_0x8517('0xb')](),controller['download']);var upload=multer({'storage':multer[_0x8517('0xd')]({'destination':function(_0x24172f,_0x203154,_0x3be6b0){_0x3be6b0(null,path[_0x8517('0xe')](config[_0x8517('0xf')],_0x8517('0x10')));},'filename':function(_0x12388f,_0x4b9768,_0x9c57de){_0x4b9768[_0x8517('0x11')]=_0x4b9768[_0x8517('0x11')][_0x8517('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x9c57de(null,util[_0x8517('0x13')]('%s-%s%s',path[_0x8517('0x14')](_0x4b9768[_0x8517('0x11')],path[_0x8517('0x15')](_0x4b9768[_0x8517('0x11')])),Date[_0x8517('0x16')](),path[_0x8517('0x15')](_0x4b9768[_0x8517('0x11')])));}})});router[_0x8517('0x17')]('/',upload[_0x8517('0x18')](_0x8517('0x19')),controller[_0x8517('0x1a')]);router[_0x8517('0x17')]('/webhook',controller[_0x8517('0x1b')]);router[_0x8517('0x1c')](_0x8517('0x1d'),auth[_0x8517('0xb')](),controller[_0x8517('0x1e')]);router[_0x8517('0x1f')](_0x8517('0x1d'),auth['isAuthenticated'](),controller[_0x8517('0x1f')]);module['exports']=router;
\ No newline at end of file
index 02d8dba..1b8a131 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d18=['script','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','agentOnly','always','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','STRING','ENUM','html'];(function(_0x1db835,_0x212240){var _0x178142=function(_0x49d1c8){while(--_0x49d1c8){_0x1db835['push'](_0x1db835['shift']());}};_0x178142(++_0x212240);}(_0x6d18,0x175));var _0x86d1=function(_0x5b9a44,_0x8ad9d3){_0x5b9a44=_0x5b9a44-0x0;var _0x447bad=_0x6d18[_0x5b9a44];return _0x447bad;};'use strict';var Sequelize=require(_0x86d1('0x0'));module[_0x86d1('0x1')]={'name':{'type':Sequelize[_0x86d1('0x2')]},'type':{'type':Sequelize[_0x86d1('0x3')](_0x86d1('0x4'),_0x86d1('0x5'))},'description':{'type':Sequelize[_0x86d1('0x6')]},'version':{'type':Sequelize[_0x86d1('0x6')]},'path':{'type':Sequelize['STRING'],'comment':_0x86d1('0x7')},'active':{'type':Sequelize[_0x86d1('0x8')],'defaultValue':0x0,'comment':_0x86d1('0x9')},'sidebar':{'type':Sequelize[_0x86d1('0x3')](_0x86d1('0xa'),_0x86d1('0xb'),_0x86d1('0xc'),'never'),'defaultValue':'always','comment':_0x86d1('0xd')},'icon':{'type':Sequelize['STRING']},'adminUrl':{'type':Sequelize[_0x86d1('0x2')]},'agentUrl':{'type':Sequelize[_0x86d1('0x2')]},'scriptName':{'type':Sequelize['STRING']},'scriptPath':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xeda8=['ENUM','html','script','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','always','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xeda8,0xaf));var _0x8eda=function(_0x416d7c,_0x43b2dd){_0x416d7c=_0x416d7c-0x0;var _0x345bce=_0xeda8[_0x416d7c];return _0x345bce;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x8eda('0x0')]},'type':{'type':Sequelize[_0x8eda('0x1')](_0x8eda('0x2'),_0x8eda('0x3'))},'description':{'type':Sequelize['TEXT']},'version':{'type':Sequelize['TEXT']},'path':{'type':Sequelize[_0x8eda('0x0')],'comment':_0x8eda('0x4')},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x8eda('0x5')},'sidebar':{'type':Sequelize[_0x8eda('0x1')](_0x8eda('0x6'),'agentOnly',_0x8eda('0x7'),'never'),'defaultValue':_0x8eda('0x7'),'comment':'Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.'},'icon':{'type':Sequelize[_0x8eda('0x0')]},'adminUrl':{'type':Sequelize[_0x8eda('0x0')]},'agentUrl':{'type':Sequelize[_0x8eda('0x0')]},'scriptName':{'type':Sequelize[_0x8eda('0x0')]},'scriptPath':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 107ce9a..2853f80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fdd=['node_modules/**/*','attachments/**/*','finalize','close','Plugin\x20not\x20found','%s.zip','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','upload','filename','extname','file','root','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','manifest.json','Plugin\x20manifest\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','views','Invalid\x20manifest:\x20views\x20missing','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','description','sidebar','always','icon','icon-apps','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','create','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','send','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','update','delete','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','encoding','method','%s%s','headers','content-type','endsWith','statusCode','sendStatus','webhookPost','port','content-length','eml-format','rimraf','zip-dir','fast-json-patch','moment','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','archiver','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','redis','./plugin.socket','register','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','then','Plugins','destroy','end','error','name','Plugin','rawAttributes','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','map','type','options','findAll','rows','catch','show','params','include','find','download','join','format','basename','createWriteStream','zip','code','Sequelize','Error\x20while\x20generating\x20the\x20zip\x20archive','Error','pipe','glob','**/*','server/files/plugins','dirname'];(function(_0x16bd21,_0x3410da){var _0x3224c0=function(_0x460adc){while(--_0x460adc){_0x16bd21['push'](_0x16bd21['shift']());}};_0x3224c0(++_0x3410da);}(_0x3fdd,0xfa));var _0xd3fd=function(_0x167399,_0x40d453){_0x167399=_0x167399-0x0;var _0x1b8bec=_0x3fdd[_0x167399];return _0x1b8bec;};'use strict';var emlformat=require(_0xd3fd('0x0'));var rimraf=require(_0xd3fd('0x1'));var zipdir=require(_0xd3fd('0x2'));var jsonpatch=require(_0xd3fd('0x3'));var rp=require('request-promise');var moment=require(_0xd3fd('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xd3fd('0x5'));var path=require(_0xd3fd('0x6'));var sox=require('sox');var csv=require(_0xd3fd('0x7'));var ejs=require(_0xd3fd('0x8'));var fs=require('fs');var fs_extra=require(_0xd3fd('0x9'));var _=require(_0xd3fd('0xa'));var squel=require(_0xd3fd('0xb'));var crypto=require(_0xd3fd('0xc'));var jsforce=require(_0xd3fd('0xd'));var deskjs=require(_0xd3fd('0xe'));var toCsv=require(_0xd3fd('0x7'));var querystring=require(_0xd3fd('0xf'));var Papa=require(_0xd3fd('0x10'));var extract=require('extract-zip');var rimraf=require(_0xd3fd('0x1'));var archiver=require(_0xd3fd('0x11'));var Redis=require('ioredis');var authService=require(_0xd3fd('0x12'));var qs=require(_0xd3fd('0x13'));var as=require(_0xd3fd('0x14'));var hardwareService=require(_0xd3fd('0x15'));var logger=require(_0xd3fd('0x16'))(_0xd3fd('0x17'));var utils=require('../../config/utils');var config=require(_0xd3fd('0x18'));var licenseUtil=require(_0xd3fd('0x19'));var db=require(_0xd3fd('0x1a'))['db'];config['redis']=_[_0xd3fd('0x1b')](config['redis'],{'host':_0xd3fd('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd3fd('0x1d')]));require(_0xd3fd('0x1e'))[_0xd3fd('0x1f')](socket);function respondWithStatusCode(_0x18647e,_0xbbc099){_0xbbc099=_0xbbc099||0xcc;return function(_0x17776a){if(_0x17776a){return _0x18647e['sendStatus'](_0xbbc099);}return _0x18647e['status'](_0xbbc099)['end']();};}function respondWithResult(_0x27670b,_0x2fa448){_0x2fa448=_0x2fa448||0xc8;return function(_0x1a7b88){if(_0x1a7b88){return _0x27670b[_0xd3fd('0x20')](_0x2fa448)[_0xd3fd('0x21')](_0x1a7b88);}};}function respondWithFilteredResult(_0x406cfa,_0x19f49c){return function(_0x9f1408){if(_0x9f1408){var _0x335b47=typeof _0x19f49c[_0xd3fd('0x22')]===_0xd3fd('0x23')&&typeof _0x19f49c['limit']===_0xd3fd('0x23');var _0x3355e1=_0x9f1408[_0xd3fd('0x24')];var _0x46b069=_0x335b47?0x0:_0x19f49c[_0xd3fd('0x22')];var _0x40d045=_0x335b47?_0x9f1408['count']:_0x19f49c[_0xd3fd('0x22')]+_0x19f49c[_0xd3fd('0x25')];var _0x39c417;if(_0x40d045>=_0x3355e1){_0x40d045=_0x3355e1;_0x39c417=0xc8;}else{_0x39c417=0xce;}_0x406cfa[_0xd3fd('0x20')](_0x39c417);return _0x406cfa[_0xd3fd('0x26')](_0xd3fd('0x27'),_0x46b069+'-'+_0x40d045+'/'+_0x3355e1)[_0xd3fd('0x21')](_0x9f1408);}return null;};}function patchUpdates(_0x4fc188){return function(_0x3062d5){try{jsonpatch[_0xd3fd('0x28')](_0x3062d5,_0x4fc188,!![]);}catch(_0x313d27){return BPromise[_0xd3fd('0x29')](_0x313d27);}return _0x3062d5['save']();};}function saveUpdates(_0x16820c,_0x352e7f){return function(_0x4a2bff){if(_0x4a2bff){return _0x4a2bff['update'](_0x16820c)[_0xd3fd('0x2a')](function(_0x11842f){return _0x11842f;});}return null;};}function removeEntity(_0x1bff77,_0x4dc340){return function(_0x3ad92e){if(_0x3ad92e){return _0x3ad92e['destroy']()[_0xd3fd('0x2a')](function(){var _0x16e6d3=_0x3ad92e['get']({'plain':!![]});var _0xb9506=_0xd3fd('0x2b');return db['UserProfileResource'][_0xd3fd('0x2c')]({'where':{'type':_0xb9506,'resourceId':_0x16e6d3['id']}})[_0xd3fd('0x2a')](function(){return _0x3ad92e;});})[_0xd3fd('0x2a')](function(){_0x1bff77[_0xd3fd('0x20')](0xcc)[_0xd3fd('0x2d')]();});}};}function handleEntityNotFound(_0x58f438,_0x59dc00){return function(_0x422412){if(!_0x422412){_0x58f438['sendStatus'](0x194);}return _0x422412;};}function handleError(_0x2f99d1,_0x21cb13){_0x21cb13=_0x21cb13||0x1f4;return function(_0xe63f35){logger[_0xd3fd('0x2e')](_0xe63f35['stack']);if(_0xe63f35[_0xd3fd('0x2f')]){delete _0xe63f35[_0xd3fd('0x2f')];}_0x2f99d1['status'](_0x21cb13)['send'](_0xe63f35);};}exports['index']=function(_0x4bb7f4,_0x14f36d){var _0x362731={},_0x10352b={},_0xda7dcf={'count':0x0,'rows':[]};var _0xaa1614=_['map'](db[_0xd3fd('0x30')][_0xd3fd('0x31')],function(_0x51f3ab){return{'name':_0x51f3ab['fieldName'],'type':_0x51f3ab['type'][_0xd3fd('0x32')]};});_0x10352b[_0xd3fd('0x33')]=_['map'](_0xaa1614,_0xd3fd('0x2f'));_0x10352b['query']=_[_0xd3fd('0x34')](_0x4bb7f4[_0xd3fd('0x35')]);_0x10352b[_0xd3fd('0x36')]=_[_0xd3fd('0x37')](_0x10352b['model'],_0x10352b['query']);_0x362731[_0xd3fd('0x38')]=_[_0xd3fd('0x37')](_0x10352b[_0xd3fd('0x33')],qs[_0xd3fd('0x39')](_0x4bb7f4[_0xd3fd('0x35')][_0xd3fd('0x39')]));_0x362731['attributes']=_0x362731[_0xd3fd('0x38')][_0xd3fd('0x3a')]?_0x362731[_0xd3fd('0x38')]:_0x10352b[_0xd3fd('0x33')];if(!_0x4bb7f4['query'][_0xd3fd('0x3b')](_0xd3fd('0x3c'))){_0x362731[_0xd3fd('0x25')]=qs[_0xd3fd('0x25')](_0x4bb7f4[_0xd3fd('0x35')][_0xd3fd('0x25')]);_0x362731['offset']=qs[_0xd3fd('0x22')](_0x4bb7f4[_0xd3fd('0x35')]['offset']);}_0x362731[_0xd3fd('0x3d')]=qs[_0xd3fd('0x3e')](_0x4bb7f4[_0xd3fd('0x35')]['sort']);_0x362731['where']=qs[_0xd3fd('0x36')](_[_0xd3fd('0x3f')](_0x4bb7f4['query'],_0x10352b[_0xd3fd('0x36')]),_0xaa1614);if(_0x4bb7f4[_0xd3fd('0x35')][_0xd3fd('0x40')]){_0x362731[_0xd3fd('0x41')]=_[_0xd3fd('0x42')](_0x362731['where'],{'$or':_[_0xd3fd('0x43')](_0xaa1614,function(_0xa415e6){if(_0xa415e6[_0xd3fd('0x44')]!=='VIRTUAL'){var _0x93cfe1={};_0x93cfe1[_0xa415e6[_0xd3fd('0x2f')]]={'$like':'%'+_0x4bb7f4['query']['filter']+'%'};return _0x93cfe1;}})});}_0x362731=_[_0xd3fd('0x42')]({},_0x362731,_0x4bb7f4[_0xd3fd('0x45')]);var _0x125540={'where':_0x362731['where']};return db[_0xd3fd('0x30')][_0xd3fd('0x24')](_0x125540)[_0xd3fd('0x2a')](function(_0x2d89c2){_0xda7dcf[_0xd3fd('0x24')]=_0x2d89c2;if(_0x4bb7f4['query']['includeAll']){_0x362731['include']=[{'all':!![]}];}return db[_0xd3fd('0x30')][_0xd3fd('0x46')](_0x362731);})[_0xd3fd('0x2a')](function(_0x10013b){_0xda7dcf[_0xd3fd('0x47')]=_0x10013b;return _0xda7dcf;})[_0xd3fd('0x2a')](respondWithFilteredResult(_0x14f36d,_0x362731))[_0xd3fd('0x48')](handleError(_0x14f36d,null));};exports[_0xd3fd('0x49')]=function(_0x2234d3,_0x53b8f7){var _0x24bbd8={'raw':!![],'where':{'id':_0x2234d3[_0xd3fd('0x4a')]['id']}},_0x28ccf9={};_0x28ccf9[_0xd3fd('0x33')]=_['keys'](db[_0xd3fd('0x30')]['rawAttributes']);_0x28ccf9['query']=_['keys'](_0x2234d3[_0xd3fd('0x35')]);_0x28ccf9[_0xd3fd('0x36')]=_[_0xd3fd('0x37')](_0x28ccf9[_0xd3fd('0x33')],_0x28ccf9[_0xd3fd('0x35')]);_0x24bbd8['attributes']=_['intersection'](_0x28ccf9[_0xd3fd('0x33')],qs['fields'](_0x2234d3[_0xd3fd('0x35')][_0xd3fd('0x39')]));_0x24bbd8['attributes']=_0x24bbd8['attributes'][_0xd3fd('0x3a')]?_0x24bbd8[_0xd3fd('0x38')]:_0x28ccf9['model'];if(_0x2234d3[_0xd3fd('0x35')]['includeAll']){_0x24bbd8[_0xd3fd('0x4b')]=[{'all':!![]}];}_0x24bbd8=_[_0xd3fd('0x42')]({},_0x24bbd8,_0x2234d3['options']);return db[_0xd3fd('0x30')][_0xd3fd('0x4c')](_0x24bbd8)[_0xd3fd('0x2a')](handleEntityNotFound(_0x53b8f7,null))[_0xd3fd('0x2a')](respondWithResult(_0x53b8f7,null))[_0xd3fd('0x48')](handleError(_0x53b8f7,null));};exports[_0xd3fd('0x4d')]=function(_0x302382,_0x190591,_0x498108){return db['Plugin'][_0xd3fd('0x4c')]({'where':{'id':_0x302382[_0xd3fd('0x4a')]['id']},'attributes':[_0xd3fd('0x2f'),_0xd3fd('0x6')],'raw':!![]})[_0xd3fd('0x2a')](handleEntityNotFound(_0x190591,null))['then'](function(_0x3b3e1f){if(_0x3b3e1f){var _0x1a02f0=path[_0xd3fd('0x4e')](config['root'],'server/files/plugins',util[_0xd3fd('0x4f')]('%s.zip',path[_0xd3fd('0x50')](_0x3b3e1f['path'])));var _0x51d110=fs[_0xd3fd('0x51')](_0x1a02f0);var _0x30aaa9=archiver(_0xd3fd('0x52'),{'zlib':{'level':0x9}});_0x30aaa9['on']('warning',function(_0x35b1cc){if(_0x35b1cc[_0xd3fd('0x53')]==='ENOENT'){logger[_0xd3fd('0x2e')](_0x35b1cc);}else{throw new db[(_0xd3fd('0x54'))]['Error'](_0xd3fd('0x55'));}});_0x30aaa9['on']('error',function(_0x5659cf){throw new db[(_0xd3fd('0x54'))][(_0xd3fd('0x56'))](_0xd3fd('0x55'));});_0x30aaa9[_0xd3fd('0x57')](_0x51d110);_0x30aaa9[_0xd3fd('0x58')](_0xd3fd('0x59'),{'cwd':path['join'](config['root'],_0xd3fd('0x5a'),path[_0xd3fd('0x5b')](_0x3b3e1f[_0xd3fd('0x6')])),'ignore':[path['join'](path['basename'](_0x3b3e1f[_0xd3fd('0x6')]),_0xd3fd('0x5c')),path[_0xd3fd('0x4e')](path[_0xd3fd('0x50')](_0x3b3e1f[_0xd3fd('0x6')]),_0xd3fd('0x5d'))],'nodir':!![]})[_0xd3fd('0x5e')]();_0x51d110['on'](_0xd3fd('0x5f'),function(){if(!fs['existsSync'](_0x1a02f0)){throw new db[(_0xd3fd('0x54'))][(_0xd3fd('0x56'))](_0xd3fd('0x60'));}return _0x190591[_0xd3fd('0x4d')](_0x1a02f0,util[_0xd3fd('0x4f')](_0xd3fd('0x61'),path[_0xd3fd('0x50')](_0x3b3e1f[_0xd3fd('0x6')])),function(_0x5857d7){if(_0x5857d7){throw new db['Sequelize']['Error'](_0xd3fd('0x62'));}fs[_0xd3fd('0x63')](_0x1a02f0);logger[_0xd3fd('0x64')](_0xd3fd('0x65'));logger[_0xd3fd('0x64')](_0xd3fd('0x66'));});});}return null;})[_0xd3fd('0x48')](handleError(_0x190591,null));};exports[_0xd3fd('0x67')]=function(_0x3b5876,_0x572f24,_0xa19abd){var _0x1f27df=path[_0xd3fd('0x50')](_0x3b5876['file'][_0xd3fd('0x68')],path[_0xd3fd('0x69')](_0x3b5876[_0xd3fd('0x6a')][_0xd3fd('0x68')]));var _0x2d2051=path['join'](config[_0xd3fd('0x6b')],_0xd3fd('0x5a'),_0x3b5876['file'][_0xd3fd('0x68')]);var _0x411a2a=path['join'](config[_0xd3fd('0x6b')],_0xd3fd('0x5a'),_0x1f27df);logger[_0xd3fd('0x64')](_0xd3fd('0x6c'),_0x2d2051);logger[_0xd3fd('0x64')](_0xd3fd('0x6d'),_0x411a2a);try{fs[_0xd3fd('0x6e')](_0x2d2051,parseInt(_0xd3fd('0x6f'),0x8));extract(_0x2d2051,{'dir':_0x411a2a},function(_0x2fa9e5){if(_0x2fa9e5){logger[_0xd3fd('0x2e')](_0x2fa9e5);handleError(_0x2fa9e5,!![]);};var _0x229537=fs[_0xd3fd('0x70')](_0x411a2a);if(_0x229537[_0xd3fd('0x3a')]>0x1){removeReferences(_0x2d2051,_0x411a2a);logger[_0xd3fd('0x2e')](_0xd3fd('0x71'));return _0xa19abd(new Error(_0xd3fd('0x71')));}var _0x5ad89f=fs[_0xd3fd('0x72')](path[_0xd3fd('0x4e')](_0x411a2a,_0x229537[0x0]));if(_0x5ad89f[_0xd3fd('0x73')]()){removeReferences(_0x2d2051,_0x411a2a);logger[_0xd3fd('0x2e')]('Invalid\x20plugin\x20structure');return _0xa19abd(new Error(_0xd3fd('0x71')));}if(_0x5ad89f[_0xd3fd('0x74')]()){var _0x4c8cb3=fs['readdirSync'](path[_0xd3fd('0x4e')](_0x411a2a,_0x229537[0x0]));if(_0x4c8cb3[_0xd3fd('0x3a')]===0x0){removeReferences(_0x2d2051,_0x411a2a);logger[_0xd3fd('0x2e')]('Invalid\x20plugin\x20structure');return _0xa19abd(new Error(_0xd3fd('0x71')));}var _0x5cb6e0=_0x4c8cb3['some'](function(_0x288261){return _0x288261===_0xd3fd('0x75');});if(!_0x5cb6e0){return _0xa19abd(new Error(_0xd3fd('0x76')));}var _0x133fba=fs['readFileSync'](path[_0xd3fd('0x4e')](_0x411a2a,_0x229537[0x0],'manifest.json'));var _0x265855=JSON['parse'](_0x133fba);if(_0xd3fd('0x23')==typeof _0x265855['name']){return _0xa19abd(new Error('Invalid\x20manifest:\x20name\x20missing'));}if(_0xd3fd('0x23')==typeof _0x265855[_0xd3fd('0x44')]){return _0xa19abd(new Error('Invalid\x20manifest:\x20type\x20missing'));}if(_0xd3fd('0x23')==typeof _0x265855[_0xd3fd('0x77')]){return _0xa19abd(new Error(_0xd3fd('0x78')));}if(_0xd3fd('0x23')==typeof _0x265855[_0xd3fd('0x79')]){return _0xa19abd(new Error(_0xd3fd('0x7a')));}if(_0x265855['type']===_0xd3fd('0x7b')){if('undefined'==typeof _0x265855[_0xd3fd('0x79')][_0xd3fd('0x7c')]){return _0xa19abd(new Error(_0xd3fd('0x7d')));}if('undefined'==typeof _0x265855[_0xd3fd('0x79')][_0xd3fd('0x7c')][_0xd3fd('0x7e')]&&_0xd3fd('0x23')==typeof _0x265855['parameters'][_0xd3fd('0x7c')][_0xd3fd('0x7f')]){return _0xa19abd(new Error(_0xd3fd('0x80')));}}else if(_0x265855[_0xd3fd('0x44')]===_0xd3fd('0x81')){if(_0xd3fd('0x23')==typeof _0x265855[_0xd3fd('0x79')][_0xd3fd('0x82')]){return _0xa19abd(new Error(_0xd3fd('0x83')));}if(_0xd3fd('0x23')==typeof _0x265855[_0xd3fd('0x79')][_0xd3fd('0x84')]){return _0xa19abd(new Error('Invalid\x20manifest:\x20script\x20path\x20missing'));}}else{return _0xa19abd(new Error('Invalid\x20manifest:\x20invalid\x20type'));}var _0x41f544=_0x265855[_0xd3fd('0x2f')];var _0x2abac7=_0x265855[_0xd3fd('0x85')];var _0x42aad4=_0x265855[_0xd3fd('0x44')];var _0x3420d4=_0x265855['sidebar']?_0x265855[_0xd3fd('0x86')]:_0xd3fd('0x87');var _0x1675b4=_0x265855[_0xd3fd('0x88')]?_0x265855[_0xd3fd('0x88')]:_0xd3fd('0x89');var _0x3c87c1='';var _0x236b8f='';var _0x55af7c='';var _0x5dfc3d='';var _0x193918=_0x265855[_0xd3fd('0x77')];if(_0x42aad4===_0xd3fd('0x7b')){if('undefined'!=typeof _0x265855['parameters']['views'][_0xd3fd('0x7e')]){var _0x2b8807=_0x265855[_0xd3fd('0x79')][_0xd3fd('0x7c')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0xd3fd('0x8a')](_0x2b8807)){_0x3c87c1=path[_0xd3fd('0x4e')](_0xd3fd('0x8b'),_0x1f27df,_0x229537[0x0],_0x2b8807);}else{_0x3c87c1=_0x2b8807;}}else{logger['info'](_0xd3fd('0x8c'));}if('undefined'!=typeof _0x265855[_0xd3fd('0x79')][_0xd3fd('0x7c')][_0xd3fd('0x7f')]){var _0x296649=_0x265855[_0xd3fd('0x79')][_0xd3fd('0x7c')][_0xd3fd('0x7f')];if(!/^(f|ht)tps?:\/\//i[_0xd3fd('0x8a')](_0x296649)){_0x236b8f=path['join'](_0xd3fd('0x8b'),_0x1f27df,_0x229537[0x0],_0x296649);}else{_0x236b8f=_0x296649;}}else{logger['info']('Warning:\x20agent\x20view\x20not\x20specified');}}else if(_0x42aad4==='script'){_0x55af7c=_0x265855[_0xd3fd('0x79')][_0xd3fd('0x82')];_0x5dfc3d=_0x265855[_0xd3fd('0x79')][_0xd3fd('0x84')];if(_0xd3fd('0x23')!=typeof _0x265855[_0xd3fd('0x79')]['views']){if(_0xd3fd('0x23')!=typeof _0x265855[_0xd3fd('0x79')]['views'][_0xd3fd('0x7e')]){var _0x2b8807=_0x265855[_0xd3fd('0x79')][_0xd3fd('0x7c')][_0xd3fd('0x7e')];if(!/^(f|ht)tps?:\/\//i[_0xd3fd('0x8a')](_0x2b8807)){_0x3c87c1=path['join'](_0xd3fd('0x8b'),_0x1f27df,_0x229537[0x0],_0x2b8807);}else{_0x3c87c1=_0x2b8807;}}if(_0xd3fd('0x23')!=typeof _0x265855[_0xd3fd('0x79')]['views'][_0xd3fd('0x7f')]){var _0x296649=_0x265855[_0xd3fd('0x79')][_0xd3fd('0x7c')][_0xd3fd('0x7f')];if(!/^(f|ht)tps?:\/\//i['test'](_0x296649)){_0x236b8f=path['join'](_0xd3fd('0x8b'),_0x1f27df,_0x229537[0x0],_0x296649);}else{_0x236b8f=_0x296649;}}}}var _0x50a8b5={'name':_0x41f544,'description':_0x2abac7,'path':path['join'](_0x1f27df,_0x229537[0x0]),'type':_0x42aad4,'sidebar':_0x3420d4,'icon':_0x1675b4,'adminUrl':_0x3c87c1,'agentUrl':_0x236b8f,'scriptName':_0x55af7c,'scriptPath':_0x5dfc3d,'version':_0x193918};removeReferences(_0x2d2051,null);return db[_0xd3fd('0x30')][_0xd3fd('0x8d')](_0x50a8b5)[_0xd3fd('0x2a')](function(_0xd01007){var _0x1272cf={'role':_0x3b5876[_0xd3fd('0x8e')][_0xd3fd('0x8f')],'userProfileId':_0x3b5876['body'][_0xd3fd('0x90')]};if(!_0x1272cf)throw new Error(_0xd3fd('0x91'));if(_0x1272cf['role']==='user'){var _0x5c5cb4=_0xd01007['get']({'plain':!![]});return db['UserProfileSection'][_0xd3fd('0x4c')]({'where':{'name':_0xd3fd('0x2b'),'userProfileId':_0x1272cf['userProfileId']},'raw':!![]})[_0xd3fd('0x2a')](function(_0x393040){if(_0x393040&&_0x393040[_0xd3fd('0x92')]===0x0){return db[_0xd3fd('0x93')][_0xd3fd('0x8d')]({'name':_0x5c5cb4[_0xd3fd('0x2f')],'resourceId':_0x5c5cb4['id'],'type':_0x393040[_0xd3fd('0x2f')],'sectionId':_0x393040['id']},{})[_0xd3fd('0x2a')](function(){return _0xd01007;});}else{return _0xd01007;}})[_0xd3fd('0x48')](function(_0x4e127a){logger['error'](_0xd3fd('0x94'),_0x4e127a);throw _0x4e127a;});}return _0xd01007;})['then'](respondWithResult(_0x572f24,null))[_0xd3fd('0x48')](handleError(_0x572f24,null));}});}catch(_0x9afb46){_0x572f24['status'](0x1f4)[_0xd3fd('0x95')](_0x9afb46);}};function removeReferences(_0x56c90d,_0x8fc61e){try{if(_0x56c90d){fs[_0xd3fd('0x63')](_0x56c90d);logger[_0xd3fd('0x64')](_0xd3fd('0x96'));}if(_0x8fc61e){rimraf(_0x8fc61e,function(){});logger[_0xd3fd('0x64')](_0xd3fd('0x97'));}}catch(_0x21fb28){logger[_0xd3fd('0x2e')](_0x21fb28);}}exports[_0xd3fd('0x98')]=function(_0x567692,_0x2099e0,_0x168a32){return db[_0xd3fd('0x30')][_0xd3fd('0x4c')]({'where':{'id':_0x567692[_0xd3fd('0x4a')]['id']}})[_0xd3fd('0x2a')](handleEntityNotFound(_0x2099e0,null))['then'](saveUpdates(_0x567692[_0xd3fd('0x8e')],null))[_0xd3fd('0x2a')](respondWithResult(_0x2099e0,null))['catch'](handleError(_0x2099e0,null));};exports[_0xd3fd('0x99')]=function(_0x59f472,_0x4da5e6,_0x3b89a8){return db[_0xd3fd('0x30')]['find']({'where':{'id':_0x59f472[_0xd3fd('0x4a')]['id']}})['then'](function(_0x4d3655){if(_0x4d3655){return _0x4d3655['destroy']();}})[_0xd3fd('0x2a')](function(_0x3d39e9){rimraf(path[_0xd3fd('0x4e')](config[_0xd3fd('0x6b')],_0xd3fd('0x5a'),path[_0xd3fd('0x5b')](_0x3d39e9[_0xd3fd('0x6')])),function(){});return _0x3d39e9;})[_0xd3fd('0x2a')](handleEntityNotFound(_0x4da5e6,null))[_0xd3fd('0x2a')](respondWithStatusCode(_0x4da5e6,null))[_0xd3fd('0x48')](handleError(_0x4da5e6,null));};exports[_0xd3fd('0x9a')]=function(_0x5e4b08,_0x1350df,_0x2759dd){return BPromise[_0xd3fd('0x9b')]()[_0xd3fd('0x2a')](function(){if(!_0x5e4b08['query'][_0xd3fd('0x6')]){throw new Error(_0xd3fd('0x9c'));}if(!_0x5e4b08[_0xd3fd('0x35')]['port']){throw new Error(_0xd3fd('0x9d'));}var _0x4e0725=_0x5e4b08[_0xd3fd('0x35')][_0xd3fd('0x9e')]?_0x5e4b08[_0xd3fd('0x35')][_0xd3fd('0x9e')]+':'+_0x5e4b08[_0xd3fd('0x35')]['port']:_0xd3fd('0x9f')+_0x5e4b08[_0xd3fd('0x35')]['port'];var _0x2d212a=_0x5e4b08[_0xd3fd('0x35')]['json']?_0x5e4b08[_0xd3fd('0x35')][_0xd3fd('0x21')]:!![];var _0xc64bf1=_0x5e4b08[_0xd3fd('0x35')][_0xd3fd('0xa0')]?_0x5e4b08[_0xd3fd('0x35')][_0xd3fd('0xa0')]:null;var _0x2f34a0={'method':_0x5e4b08[_0xd3fd('0xa1')],'uri':util['format'](_0xd3fd('0xa2'),_0x4e0725,_0x5e4b08[_0xd3fd('0x35')]['path']),'json':_0x2d212a,'resolveWithFullResponse':!![],'encoding':_0xc64bf1,'qs':_0x5e4b08[_0xd3fd('0x35')]};if(_0x5e4b08[_0xd3fd('0xa3')]){_0x2f34a0[_0xd3fd('0xa3')]=_0x5e4b08[_0xd3fd('0xa3')];if(_0x2f34a0[_0xd3fd('0xa3')]['content-length']){delete _0x2f34a0[_0xd3fd('0xa3')]['content-length'];}}if(_0x2f34a0['headers']['content-type']){delete _0x2f34a0[_0xd3fd('0xa3')][_0xd3fd('0xa4')];}return rp(_0x2f34a0);})[_0xd3fd('0x2a')](function(_0x55bd0c){if(_0x55bd0c){_0x1350df[_0xd3fd('0x26')](_0x55bd0c['headers']);logger['info'](_0x55bd0c[_0xd3fd('0x8e')]);if(_[_0xd3fd('0xa5')](_0x5e4b08['query'][_0xd3fd('0x6')],_0xd3fd('0x4d'))&&_0x55bd0c['statusCode']==0x1f4){return _0x1350df['sendStatus'](_0x55bd0c['statusCode']);}else{return _0x1350df[_0xd3fd('0x20')](_0x55bd0c[_0xd3fd('0xa6')])[_0xd3fd('0x95')](_0x55bd0c[_0xd3fd('0x8e')]);}}else{return _0x1350df[_0xd3fd('0xa7')](0xc8);}})[_0xd3fd('0x48')](handleError(_0x1350df,null));};exports[_0xd3fd('0xa8')]=function(_0x2c838c,_0x1da93f,_0x5de592){return BPromise['resolve']()[_0xd3fd('0x2a')](function(){if(!_0x2c838c[_0xd3fd('0x35')][_0xd3fd('0x6')]){throw new Error(_0xd3fd('0x9c'));}if(!_0x2c838c[_0xd3fd('0x35')][_0xd3fd('0xa9')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x244405=_0x2c838c[_0xd3fd('0x35')]['hostname']?_0x2c838c[_0xd3fd('0x35')]['hostname']+':'+_0x2c838c[_0xd3fd('0x35')][_0xd3fd('0xa9')]:'http://localhost:'+_0x2c838c['query'][_0xd3fd('0xa9')];var _0x49a26a=_0x2c838c[_0xd3fd('0x35')][_0xd3fd('0x21')]?_0x2c838c[_0xd3fd('0x35')][_0xd3fd('0x21')]:!![];var _0x36c2a9=_0x2c838c['query'][_0xd3fd('0xa0')]?_0x2c838c[_0xd3fd('0x35')][_0xd3fd('0xa0')]:null;var _0x95dbde={'method':_0x2c838c['method'],'uri':util[_0xd3fd('0x4f')](_0xd3fd('0xa2'),_0x244405,_0x2c838c[_0xd3fd('0x35')][_0xd3fd('0x6')]),'json':_0x49a26a,'resolveWithFullResponse':!![],'encoding':_0x36c2a9,'body':_0x2c838c[_0xd3fd('0x8e')]};if(_0x2c838c[_0xd3fd('0xa3')]){_0x95dbde[_0xd3fd('0xa3')]=_0x2c838c[_0xd3fd('0xa3')];if(_0x95dbde[_0xd3fd('0xa3')][_0xd3fd('0xaa')]){delete _0x95dbde[_0xd3fd('0xa3')][_0xd3fd('0xaa')];}}if(_0x95dbde[_0xd3fd('0xa3')][_0xd3fd('0xa4')]){delete _0x95dbde[_0xd3fd('0xa3')][_0xd3fd('0xa4')];}return rp(_0x95dbde);})[_0xd3fd('0x2a')](function(_0x256d17){if(_0x256d17){_0x1da93f[_0xd3fd('0x26')](_0x256d17[_0xd3fd('0xa3')]);logger[_0xd3fd('0x64')](_0x256d17[_0xd3fd('0x8e')]);return _0x1da93f[_0xd3fd('0x20')](_0x256d17[_0xd3fd('0xa6')])[_0xd3fd('0x95')](_0x256d17[_0xd3fd('0x8e')]);}else{return _0x1da93f[_0xd3fd('0xa7')](0xc8);}})[_0xd3fd('0x48')](handleError(_0x1da93f,null));};
\ No newline at end of file
+var _0x7645=['isDirectory','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','views','Invalid\x20manifest:\x20views\x20missing','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','plugins','Warning:\x20admin\x20view\x20not\x20specified','test','Warning:\x20agent\x20view\x20not\x20specified','script','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','autoAssociation','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','encoding','method','%s%s','headers','content-length','endsWith','statusCode','webhookPost','content-type','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','desk.js','querystring','papaparse','extract-zip','rimraf','archiver','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./plugin.socket','register','status','end','json','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','Plugins','sendStatus','error','stack','name','send','index','Plugin','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','nolimit','limit','sort','where','filter','merge','map','VIRTUAL','options','includeAll','findAll','rows','show','params','length','include','catch','download','find','join','root','server/files/plugins','format','%s.zip','basename','createWriteStream','zip','warning','code','Error\x20while\x20generating\x20the\x20zip\x20archive','Sequelize','Error','pipe','glob','dirname','node_modules/**/*','close','existsSync','Plugin\x20not\x20found','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','upload','file','extname','filename','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile'];(function(_0x223461,_0x2bca70){var _0x4dbe0a=function(_0x3c3cb6){while(--_0x3c3cb6){_0x223461['push'](_0x223461['shift']());}};_0x4dbe0a(++_0x2bca70);}(_0x7645,0xeb));var _0x5764=function(_0x3904b9,_0x3dc82d){_0x3904b9=_0x3904b9-0x0;var _0x5c44ec=_0x7645[_0x3904b9];return _0x5c44ec;};'use strict';var emlformat=require(_0x5764('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5764('0x1'));var jsonpatch=require(_0x5764('0x2'));var rp=require(_0x5764('0x3'));var moment=require(_0x5764('0x4'));var BPromise=require(_0x5764('0x5'));var Mustache=require('mustache');var util=require(_0x5764('0x6'));var path=require(_0x5764('0x7'));var sox=require(_0x5764('0x8'));var csv=require(_0x5764('0x9'));var ejs=require(_0x5764('0xa'));var fs=require('fs');var fs_extra=require(_0x5764('0xb'));var _=require('lodash');var squel=require(_0x5764('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x5764('0xd'));var toCsv=require(_0x5764('0x9'));var querystring=require(_0x5764('0xe'));var Papa=require(_0x5764('0xf'));var extract=require(_0x5764('0x10'));var rimraf=require(_0x5764('0x11'));var archiver=require(_0x5764('0x12'));var Redis=require(_0x5764('0x13'));var authService=require(_0x5764('0x14'));var qs=require(_0x5764('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5764('0x16'));var logger=require(_0x5764('0x17'))(_0x5764('0x18'));var utils=require(_0x5764('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x5764('0x1a'));var db=require(_0x5764('0x1b'))['db'];config['redis']=_[_0x5764('0x1c')](config[_0x5764('0x1d')],{'host':_0x5764('0x1e'),'port':0x18eb});var socket=require(_0x5764('0x1f'))(new Redis(config[_0x5764('0x1d')]));require(_0x5764('0x20'))[_0x5764('0x21')](socket);function respondWithStatusCode(_0x13e5cf,_0x2aecd5){_0x2aecd5=_0x2aecd5||0xcc;return function(_0x4cd3bf){if(_0x4cd3bf){return _0x13e5cf['sendStatus'](_0x2aecd5);}return _0x13e5cf[_0x5764('0x22')](_0x2aecd5)[_0x5764('0x23')]();};}function respondWithResult(_0xb6ebc0,_0x5d430e){_0x5d430e=_0x5d430e||0xc8;return function(_0x341975){if(_0x341975){return _0xb6ebc0[_0x5764('0x22')](_0x5d430e)[_0x5764('0x24')](_0x341975);}};}function respondWithFilteredResult(_0x2b85b1,_0xe082e7){return function(_0x139343){if(_0x139343){var _0x43983b=typeof _0xe082e7['offset']===_0x5764('0x25')&&typeof _0xe082e7['limit']==='undefined';var _0x47ca72=_0x139343[_0x5764('0x26')];var _0xae5bc0=_0x43983b?0x0:_0xe082e7[_0x5764('0x27')];var _0x320209=_0x43983b?_0x139343[_0x5764('0x26')]:_0xe082e7['offset']+_0xe082e7['limit'];var _0x33279e;if(_0x320209>=_0x47ca72){_0x320209=_0x47ca72;_0x33279e=0xc8;}else{_0x33279e=0xce;}_0x2b85b1[_0x5764('0x22')](_0x33279e);return _0x2b85b1[_0x5764('0x28')](_0x5764('0x29'),_0xae5bc0+'-'+_0x320209+'/'+_0x47ca72)[_0x5764('0x24')](_0x139343);}return null;};}function patchUpdates(_0x16cb0d){return function(_0x425433){try{jsonpatch[_0x5764('0x2a')](_0x425433,_0x16cb0d,!![]);}catch(_0x196e7e){return BPromise[_0x5764('0x2b')](_0x196e7e);}return _0x425433[_0x5764('0x2c')]();};}function saveUpdates(_0xea7a8a,_0x19749a){return function(_0x2f5256){if(_0x2f5256){return _0x2f5256[_0x5764('0x2d')](_0xea7a8a)[_0x5764('0x2e')](function(_0x5d685f){return _0x5d685f;});}return null;};}function removeEntity(_0x5c0a6b,_0x43e5b2){return function(_0x311fbe){if(_0x311fbe){return _0x311fbe[_0x5764('0x2f')]()[_0x5764('0x2e')](function(){var _0x5387a7=_0x311fbe['get']({'plain':!![]});var _0x563355=_0x5764('0x30');return db['UserProfileResource'][_0x5764('0x2f')]({'where':{'type':_0x563355,'resourceId':_0x5387a7['id']}})['then'](function(){return _0x311fbe;});})['then'](function(){_0x5c0a6b['status'](0xcc)[_0x5764('0x23')]();});}};}function handleEntityNotFound(_0x29e560,_0x35ff83){return function(_0xd922c5){if(!_0xd922c5){_0x29e560[_0x5764('0x31')](0x194);}return _0xd922c5;};}function handleError(_0x4357f5,_0x4e9206){_0x4e9206=_0x4e9206||0x1f4;return function(_0x37916e){logger[_0x5764('0x32')](_0x37916e[_0x5764('0x33')]);if(_0x37916e['name']){delete _0x37916e[_0x5764('0x34')];}_0x4357f5[_0x5764('0x22')](_0x4e9206)[_0x5764('0x35')](_0x37916e);};}exports[_0x5764('0x36')]=function(_0x2c4b11,_0x30c002){var _0x3b4382={},_0x3c6b55={},_0x49cb8f={'count':0x0,'rows':[]};var _0x17151c=_['map'](db[_0x5764('0x37')][_0x5764('0x38')],function(_0x5a7f8a){return{'name':_0x5a7f8a[_0x5764('0x39')],'type':_0x5a7f8a[_0x5764('0x3a')]['key']};});_0x3c6b55[_0x5764('0x3b')]=_['map'](_0x17151c,_0x5764('0x34'));_0x3c6b55[_0x5764('0x3c')]=_[_0x5764('0x3d')](_0x2c4b11['query']);_0x3c6b55[_0x5764('0x3e')]=_[_0x5764('0x3f')](_0x3c6b55[_0x5764('0x3b')],_0x3c6b55['query']);_0x3b4382[_0x5764('0x40')]=_['intersection'](_0x3c6b55[_0x5764('0x3b')],qs[_0x5764('0x41')](_0x2c4b11[_0x5764('0x3c')]['fields']));_0x3b4382['attributes']=_0x3b4382[_0x5764('0x40')]['length']?_0x3b4382[_0x5764('0x40')]:_0x3c6b55[_0x5764('0x3b')];if(!_0x2c4b11[_0x5764('0x3c')]['hasOwnProperty'](_0x5764('0x42'))){_0x3b4382['limit']=qs[_0x5764('0x43')](_0x2c4b11[_0x5764('0x3c')]['limit']);_0x3b4382[_0x5764('0x27')]=qs['offset'](_0x2c4b11[_0x5764('0x3c')][_0x5764('0x27')]);}_0x3b4382['order']=qs['sort'](_0x2c4b11[_0x5764('0x3c')][_0x5764('0x44')]);_0x3b4382[_0x5764('0x45')]=qs[_0x5764('0x3e')](_['pick'](_0x2c4b11[_0x5764('0x3c')],_0x3c6b55['filters']),_0x17151c);if(_0x2c4b11[_0x5764('0x3c')][_0x5764('0x46')]){_0x3b4382[_0x5764('0x45')]=_[_0x5764('0x47')](_0x3b4382[_0x5764('0x45')],{'$or':_[_0x5764('0x48')](_0x17151c,function(_0x379c02){if(_0x379c02[_0x5764('0x3a')]!==_0x5764('0x49')){var _0x755185={};_0x755185[_0x379c02[_0x5764('0x34')]]={'$like':'%'+_0x2c4b11[_0x5764('0x3c')][_0x5764('0x46')]+'%'};return _0x755185;}})});}_0x3b4382=_[_0x5764('0x47')]({},_0x3b4382,_0x2c4b11[_0x5764('0x4a')]);var _0x2d08ac={'where':_0x3b4382[_0x5764('0x45')]};return db['Plugin'][_0x5764('0x26')](_0x2d08ac)['then'](function(_0x2d1891){_0x49cb8f[_0x5764('0x26')]=_0x2d1891;if(_0x2c4b11[_0x5764('0x3c')][_0x5764('0x4b')]){_0x3b4382['include']=[{'all':!![]}];}return db['Plugin'][_0x5764('0x4c')](_0x3b4382);})[_0x5764('0x2e')](function(_0x104f03){_0x49cb8f[_0x5764('0x4d')]=_0x104f03;return _0x49cb8f;})['then'](respondWithFilteredResult(_0x30c002,_0x3b4382))['catch'](handleError(_0x30c002,null));};exports[_0x5764('0x4e')]=function(_0x3a7bbb,_0x5afdc7){var _0x543027={'raw':!![],'where':{'id':_0x3a7bbb[_0x5764('0x4f')]['id']}},_0x3de6e2={};_0x3de6e2[_0x5764('0x3b')]=_[_0x5764('0x3d')](db[_0x5764('0x37')]['rawAttributes']);_0x3de6e2['query']=_[_0x5764('0x3d')](_0x3a7bbb['query']);_0x3de6e2['filters']=_[_0x5764('0x3f')](_0x3de6e2[_0x5764('0x3b')],_0x3de6e2[_0x5764('0x3c')]);_0x543027[_0x5764('0x40')]=_['intersection'](_0x3de6e2[_0x5764('0x3b')],qs[_0x5764('0x41')](_0x3a7bbb[_0x5764('0x3c')][_0x5764('0x41')]));_0x543027[_0x5764('0x40')]=_0x543027['attributes'][_0x5764('0x50')]?_0x543027[_0x5764('0x40')]:_0x3de6e2['model'];if(_0x3a7bbb[_0x5764('0x3c')][_0x5764('0x4b')]){_0x543027[_0x5764('0x51')]=[{'all':!![]}];}_0x543027=_[_0x5764('0x47')]({},_0x543027,_0x3a7bbb['options']);return db['Plugin']['find'](_0x543027)[_0x5764('0x2e')](handleEntityNotFound(_0x5afdc7,null))[_0x5764('0x2e')](respondWithResult(_0x5afdc7,null))[_0x5764('0x52')](handleError(_0x5afdc7,null));};exports[_0x5764('0x53')]=function(_0x4746cf,_0x4b302f,_0x313727){return db[_0x5764('0x37')][_0x5764('0x54')]({'where':{'id':_0x4746cf['params']['id']},'attributes':[_0x5764('0x34'),_0x5764('0x7')],'raw':!![]})[_0x5764('0x2e')](handleEntityNotFound(_0x4b302f,null))[_0x5764('0x2e')](function(_0x163c2f){if(_0x163c2f){var _0x102d56=path[_0x5764('0x55')](config[_0x5764('0x56')],_0x5764('0x57'),util[_0x5764('0x58')](_0x5764('0x59'),path[_0x5764('0x5a')](_0x163c2f[_0x5764('0x7')])));var _0x5e172a=fs[_0x5764('0x5b')](_0x102d56);var _0x5ecc86=archiver(_0x5764('0x5c'),{'zlib':{'level':0x9}});_0x5ecc86['on'](_0x5764('0x5d'),function(_0x490f85){if(_0x490f85[_0x5764('0x5e')]==='ENOENT'){logger['error'](_0x490f85);}else{throw new db['Sequelize']['Error'](_0x5764('0x5f'));}});_0x5ecc86['on'](_0x5764('0x32'),function(_0x42428f){throw new db[(_0x5764('0x60'))][(_0x5764('0x61'))](_0x5764('0x5f'));});_0x5ecc86[_0x5764('0x62')](_0x5e172a);_0x5ecc86[_0x5764('0x63')]('**/*',{'cwd':path['join'](config[_0x5764('0x56')],_0x5764('0x57'),path[_0x5764('0x64')](_0x163c2f['path'])),'ignore':[path['join'](path[_0x5764('0x5a')](_0x163c2f[_0x5764('0x7')]),_0x5764('0x65')),path[_0x5764('0x55')](path['basename'](_0x163c2f[_0x5764('0x7')]),'attachments/**/*')],'nodir':!![]})['finalize']();_0x5e172a['on'](_0x5764('0x66'),function(){if(!fs[_0x5764('0x67')](_0x102d56)){throw new db[(_0x5764('0x60'))][(_0x5764('0x61'))](_0x5764('0x68'));}return _0x4b302f[_0x5764('0x53')](_0x102d56,util[_0x5764('0x58')]('%s.zip',path[_0x5764('0x5a')](_0x163c2f[_0x5764('0x7')])),function(_0xe96168){if(_0xe96168){throw new db[(_0x5764('0x60'))][(_0x5764('0x61'))](_0x5764('0x69'));}fs[_0x5764('0x6a')](_0x102d56);logger[_0x5764('0x6b')](_0x5764('0x6c'));logger[_0x5764('0x6b')](_0x5764('0x6d'));});});}return null;})[_0x5764('0x52')](handleError(_0x4b302f,null));};exports[_0x5764('0x6e')]=function(_0x5c49c4,_0x23430b,_0x21470f){var _0x39e0a6=path['basename'](_0x5c49c4[_0x5764('0x6f')]['filename'],path[_0x5764('0x70')](_0x5c49c4[_0x5764('0x6f')][_0x5764('0x71')]));var _0x28203a=path['join'](config['root'],_0x5764('0x57'),_0x5c49c4['file'][_0x5764('0x71')]);var _0x432674=path['join'](config[_0x5764('0x56')],_0x5764('0x57'),_0x39e0a6);logger[_0x5764('0x6b')]('Plugin\x20upload\x20filepath:\x20%s',_0x28203a);logger[_0x5764('0x6b')](_0x5764('0x72'),_0x432674);try{fs[_0x5764('0x73')](_0x28203a,parseInt(_0x5764('0x74'),0x8));extract(_0x28203a,{'dir':_0x432674},function(_0x33c858){if(_0x33c858){logger['error'](_0x33c858);handleError(_0x33c858,!![]);};var _0x2f09e4=fs[_0x5764('0x75')](_0x432674);if(_0x2f09e4[_0x5764('0x50')]>0x1){removeReferences(_0x28203a,_0x432674);logger[_0x5764('0x32')](_0x5764('0x76'));return _0x21470f(new Error(_0x5764('0x76')));}var _0x4bdec8=fs[_0x5764('0x77')](path[_0x5764('0x55')](_0x432674,_0x2f09e4[0x0]));if(_0x4bdec8[_0x5764('0x78')]()){removeReferences(_0x28203a,_0x432674);logger[_0x5764('0x32')](_0x5764('0x76'));return _0x21470f(new Error(_0x5764('0x76')));}if(_0x4bdec8[_0x5764('0x79')]()){var _0x5bba59=fs[_0x5764('0x75')](path[_0x5764('0x55')](_0x432674,_0x2f09e4[0x0]));if(_0x5bba59['length']===0x0){removeReferences(_0x28203a,_0x432674);logger[_0x5764('0x32')](_0x5764('0x76'));return _0x21470f(new Error(_0x5764('0x76')));}var _0x2efe58=_0x5bba59['some'](function(_0x4c8c27){return _0x4c8c27===_0x5764('0x7a');});if(!_0x2efe58){return _0x21470f(new Error(_0x5764('0x7b')));}var _0x542034=fs[_0x5764('0x7c')](path[_0x5764('0x55')](_0x432674,_0x2f09e4[0x0],_0x5764('0x7a')));var _0x136db2=JSON[_0x5764('0x7d')](_0x542034);if(_0x5764('0x25')==typeof _0x136db2[_0x5764('0x34')]){return _0x21470f(new Error(_0x5764('0x7e')));}if(_0x5764('0x25')==typeof _0x136db2[_0x5764('0x3a')]){return _0x21470f(new Error(_0x5764('0x7f')));}if(_0x5764('0x25')==typeof _0x136db2['version']){return _0x21470f(new Error('Invalid\x20manifest:\x20version\x20not\x20specified'));}if(_0x5764('0x25')==typeof _0x136db2[_0x5764('0x80')]){return _0x21470f(new Error(_0x5764('0x81')));}if(_0x136db2[_0x5764('0x3a')]===_0x5764('0x82')){if(_0x5764('0x25')==typeof _0x136db2[_0x5764('0x80')][_0x5764('0x83')]){return _0x21470f(new Error(_0x5764('0x84')));}if(_0x5764('0x25')==typeof _0x136db2['parameters'][_0x5764('0x83')][_0x5764('0x85')]&&_0x5764('0x25')==typeof _0x136db2[_0x5764('0x80')]['views'][_0x5764('0x86')]){return _0x21470f(new Error(_0x5764('0x87')));}}else if(_0x136db2['type']==='script'){if(_0x5764('0x25')==typeof _0x136db2[_0x5764('0x80')][_0x5764('0x88')]){return _0x21470f(new Error(_0x5764('0x89')));}if('undefined'==typeof _0x136db2[_0x5764('0x80')][_0x5764('0x8a')]){return _0x21470f(new Error(_0x5764('0x8b')));}}else{return _0x21470f(new Error(_0x5764('0x8c')));}var _0x4c801a=_0x136db2[_0x5764('0x34')];var _0x40bf03=_0x136db2[_0x5764('0x8d')];var _0xb255d0=_0x136db2['type'];var _0xf259e=_0x136db2[_0x5764('0x8e')]?_0x136db2[_0x5764('0x8e')]:_0x5764('0x8f');var _0x49c531=_0x136db2[_0x5764('0x90')]?_0x136db2[_0x5764('0x90')]:'icon-apps';var _0x167387='';var _0x56e28b='';var _0x24287e='';var _0x512660='';var _0xd18638=_0x136db2['version'];if(_0xb255d0===_0x5764('0x82')){if(_0x5764('0x25')!=typeof _0x136db2[_0x5764('0x80')][_0x5764('0x83')]['admin']){var _0x500593=_0x136db2['parameters'][_0x5764('0x83')][_0x5764('0x85')];if(!/^(f|ht)tps?:\/\//i['test'](_0x500593)){_0x167387=path['join'](_0x5764('0x91'),_0x39e0a6,_0x2f09e4[0x0],_0x500593);}else{_0x167387=_0x500593;}}else{logger['info'](_0x5764('0x92'));}if(_0x5764('0x25')!=typeof _0x136db2['parameters'][_0x5764('0x83')][_0x5764('0x86')]){var _0xb348a=_0x136db2[_0x5764('0x80')][_0x5764('0x83')][_0x5764('0x86')];if(!/^(f|ht)tps?:\/\//i[_0x5764('0x93')](_0xb348a)){_0x56e28b=path['join'](_0x5764('0x91'),_0x39e0a6,_0x2f09e4[0x0],_0xb348a);}else{_0x56e28b=_0xb348a;}}else{logger[_0x5764('0x6b')](_0x5764('0x94'));}}else if(_0xb255d0===_0x5764('0x95')){_0x24287e=_0x136db2[_0x5764('0x80')][_0x5764('0x88')];_0x512660=_0x136db2['parameters'][_0x5764('0x8a')];if(_0x5764('0x25')!=typeof _0x136db2['parameters'][_0x5764('0x83')]){if(_0x5764('0x25')!=typeof _0x136db2[_0x5764('0x80')]['views']['admin']){var _0x500593=_0x136db2[_0x5764('0x80')][_0x5764('0x83')][_0x5764('0x85')];if(!/^(f|ht)tps?:\/\//i[_0x5764('0x93')](_0x500593)){_0x167387=path[_0x5764('0x55')](_0x5764('0x91'),_0x39e0a6,_0x2f09e4[0x0],_0x500593);}else{_0x167387=_0x500593;}}if(_0x5764('0x25')!=typeof _0x136db2[_0x5764('0x80')]['views'][_0x5764('0x86')]){var _0xb348a=_0x136db2[_0x5764('0x80')][_0x5764('0x83')]['agent'];if(!/^(f|ht)tps?:\/\//i['test'](_0xb348a)){_0x56e28b=path[_0x5764('0x55')](_0x5764('0x91'),_0x39e0a6,_0x2f09e4[0x0],_0xb348a);}else{_0x56e28b=_0xb348a;}}}}var _0x8e4ea3={'name':_0x4c801a,'description':_0x40bf03,'path':path[_0x5764('0x55')](_0x39e0a6,_0x2f09e4[0x0]),'type':_0xb255d0,'sidebar':_0xf259e,'icon':_0x49c531,'adminUrl':_0x167387,'agentUrl':_0x56e28b,'scriptName':_0x24287e,'scriptPath':_0x512660,'version':_0xd18638};removeReferences(_0x28203a,null);return db[_0x5764('0x37')]['create'](_0x8e4ea3)[_0x5764('0x2e')](function(_0x28584d){var _0x35009d={'role':_0x5c49c4[_0x5764('0x96')]['role'],'userProfileId':_0x5c49c4['body'][_0x5764('0x97')]};if(!_0x35009d)throw new Error(_0x5764('0x98'));if(_0x35009d[_0x5764('0x99')]===_0x5764('0x9a')){var _0x238ada=_0x28584d['get']({'plain':!![]});return db[_0x5764('0x9b')][_0x5764('0x54')]({'where':{'name':'Plugins','userProfileId':_0x35009d[_0x5764('0x97')]},'raw':!![]})[_0x5764('0x2e')](function(_0xcd3bff){if(_0xcd3bff&&_0xcd3bff[_0x5764('0x9c')]===0x0){return db[_0x5764('0x9d')][_0x5764('0x9e')]({'name':_0x238ada[_0x5764('0x34')],'resourceId':_0x238ada['id'],'type':_0xcd3bff[_0x5764('0x34')],'sectionId':_0xcd3bff['id']},{})['then'](function(){return _0x28584d;});}else{return _0x28584d;}})[_0x5764('0x52')](function(_0x110b5b){logger[_0x5764('0x32')](_0x5764('0x9f'),_0x110b5b);throw _0x110b5b;});}return _0x28584d;})[_0x5764('0x2e')](respondWithResult(_0x23430b,null))['catch'](handleError(_0x23430b,null));}});}catch(_0x4b9ca4){_0x23430b[_0x5764('0x22')](0x1f4)['send'](_0x4b9ca4);}};function removeReferences(_0x28f42f,_0x457402){try{if(_0x28f42f){fs[_0x5764('0x6a')](_0x28f42f);logger['info'](_0x5764('0xa0'));}if(_0x457402){rimraf(_0x457402,function(){});logger[_0x5764('0x6b')](_0x5764('0xa1'));}}catch(_0x1c57d8){logger['error'](_0x1c57d8);}}exports[_0x5764('0x2d')]=function(_0x7a70a7,_0x3eada2,_0x35ba1b){return db[_0x5764('0x37')][_0x5764('0x54')]({'where':{'id':_0x7a70a7[_0x5764('0x4f')]['id']}})['then'](handleEntityNotFound(_0x3eada2,null))['then'](saveUpdates(_0x7a70a7[_0x5764('0x96')],null))['then'](respondWithResult(_0x3eada2,null))[_0x5764('0x52')](handleError(_0x3eada2,null));};exports[_0x5764('0xa2')]=function(_0x4383f8,_0x1b6d34,_0x576461){return db[_0x5764('0x37')]['find']({'where':{'id':_0x4383f8[_0x5764('0x4f')]['id']}})[_0x5764('0x2e')](function(_0x1ced8f){if(_0x1ced8f){return _0x1ced8f[_0x5764('0x2f')]();}})[_0x5764('0x2e')](function(_0x44deca){rimraf(path['join'](config[_0x5764('0x56')],_0x5764('0x57'),path['dirname'](_0x44deca[_0x5764('0x7')])),function(){});return _0x44deca;})[_0x5764('0x2e')](handleEntityNotFound(_0x1b6d34,null))[_0x5764('0x2e')](respondWithStatusCode(_0x1b6d34,null))['catch'](handleError(_0x1b6d34,null));};exports['webhookGet']=function(_0x59b63e,_0x5d35f6,_0x4ae4a9){return BPromise[_0x5764('0xa3')]()['then'](function(){if(!_0x59b63e['query'][_0x5764('0x7')]){throw new Error(_0x5764('0xa4'));}if(!_0x59b63e[_0x5764('0x3c')][_0x5764('0xa5')]){throw new Error(_0x5764('0xa6'));}var _0x5e12ab=_0x59b63e[_0x5764('0x3c')][_0x5764('0xa7')]?_0x59b63e[_0x5764('0x3c')][_0x5764('0xa7')]+':'+_0x59b63e[_0x5764('0x3c')]['port']:_0x5764('0xa8')+_0x59b63e['query'][_0x5764('0xa5')];var _0x1ac34f=_0x59b63e[_0x5764('0x3c')][_0x5764('0x24')]?_0x59b63e[_0x5764('0x3c')][_0x5764('0x24')]:!![];var _0x39dd44=_0x59b63e[_0x5764('0x3c')][_0x5764('0xa9')]?_0x59b63e['query']['encoding']:null;var _0x2d04a2={'method':_0x59b63e[_0x5764('0xaa')],'uri':util[_0x5764('0x58')](_0x5764('0xab'),_0x5e12ab,_0x59b63e[_0x5764('0x3c')]['path']),'json':_0x1ac34f,'resolveWithFullResponse':!![],'encoding':_0x39dd44,'qs':_0x59b63e[_0x5764('0x3c')]};if(_0x59b63e[_0x5764('0xac')]){_0x2d04a2[_0x5764('0xac')]=_0x59b63e[_0x5764('0xac')];if(_0x2d04a2[_0x5764('0xac')][_0x5764('0xad')]){delete _0x2d04a2[_0x5764('0xac')]['content-length'];}}if(_0x2d04a2[_0x5764('0xac')]['content-type']){delete _0x2d04a2[_0x5764('0xac')]['content-type'];}return rp(_0x2d04a2);})[_0x5764('0x2e')](function(_0x27eccb){if(_0x27eccb){_0x5d35f6['set'](_0x27eccb[_0x5764('0xac')]);logger[_0x5764('0x6b')](_0x27eccb['body']);if(_[_0x5764('0xae')](_0x59b63e[_0x5764('0x3c')]['path'],'download')&&_0x27eccb['statusCode']==0x1f4){return _0x5d35f6[_0x5764('0x31')](_0x27eccb[_0x5764('0xaf')]);}else{return _0x5d35f6[_0x5764('0x22')](_0x27eccb['statusCode'])[_0x5764('0x35')](_0x27eccb['body']);}}else{return _0x5d35f6[_0x5764('0x31')](0xc8);}})['catch'](handleError(_0x5d35f6,null));};exports[_0x5764('0xb0')]=function(_0x6646db,_0x13c472,_0x2736aa){return BPromise[_0x5764('0xa3')]()[_0x5764('0x2e')](function(){if(!_0x6646db[_0x5764('0x3c')][_0x5764('0x7')]){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x6646db[_0x5764('0x3c')][_0x5764('0xa5')]){throw new Error(_0x5764('0xa6'));}var _0x1e0d1e=_0x6646db[_0x5764('0x3c')]['hostname']?_0x6646db[_0x5764('0x3c')][_0x5764('0xa7')]+':'+_0x6646db['query']['port']:'http://localhost:'+_0x6646db[_0x5764('0x3c')]['port'];var _0x133303=_0x6646db[_0x5764('0x3c')]['json']?_0x6646db['query']['json']:!![];var _0x1c0105=_0x6646db[_0x5764('0x3c')][_0x5764('0xa9')]?_0x6646db[_0x5764('0x3c')][_0x5764('0xa9')]:null;var _0x1edde0={'method':_0x6646db[_0x5764('0xaa')],'uri':util[_0x5764('0x58')](_0x5764('0xab'),_0x1e0d1e,_0x6646db[_0x5764('0x3c')]['path']),'json':_0x133303,'resolveWithFullResponse':!![],'encoding':_0x1c0105,'body':_0x6646db[_0x5764('0x96')]};if(_0x6646db[_0x5764('0xac')]){_0x1edde0[_0x5764('0xac')]=_0x6646db[_0x5764('0xac')];if(_0x1edde0['headers'][_0x5764('0xad')]){delete _0x1edde0['headers'][_0x5764('0xad')];}}if(_0x1edde0[_0x5764('0xac')][_0x5764('0xb1')]){delete _0x1edde0[_0x5764('0xac')][_0x5764('0xb1')];}return rp(_0x1edde0);})[_0x5764('0x2e')](function(_0x1d1c66){if(_0x1d1c66){_0x13c472[_0x5764('0x28')](_0x1d1c66[_0x5764('0xac')]);logger['info'](_0x1d1c66[_0x5764('0x96')]);return _0x13c472['status'](_0x1d1c66['statusCode'])[_0x5764('0x35')](_0x1d1c66[_0x5764('0x96')]);}else{return _0x13c472[_0x5764('0x31')](0xc8);}})[_0x5764('0x52')](handleError(_0x13c472,null));};
\ No newline at end of file
index a8e9506..5844264 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7ae=['events','../../mysqldb','Plugin','setMaxListeners','save','remove','emit','hasOwnProperty','hook'];(function(_0x18516c,_0x9bfd43){var _0x53d353=function(_0x108aa9){while(--_0x108aa9){_0x18516c['push'](_0x18516c['shift']());}};_0x53d353(++_0x9bfd43);}(_0xb7ae,0xf3));var _0xeb7a=function(_0x3e6389,_0x1112db){_0x3e6389=_0x3e6389-0x0;var _0x46038f=_0xb7ae[_0x3e6389];return _0x46038f;};'use strict';var EventEmitter=require(_0xeb7a('0x0'));var Plugin=require(_0xeb7a('0x1'))['db'][_0xeb7a('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0xeb7a('0x3')](0x0);var events={'afterCreate':_0xeb7a('0x4'),'afterUpdate':'update','afterDestroy':_0xeb7a('0x5')};function emitEvent(_0x242a47){return function(_0x44ce73,_0x51e0af,_0x277b5d){PluginEvents[_0xeb7a('0x6')](_0x242a47+':'+_0x44ce73['id'],_0x44ce73);PluginEvents[_0xeb7a('0x6')](_0x242a47,_0x44ce73);_0x277b5d(null);};}for(var e in events){if(events[_0xeb7a('0x7')](e)){var event=events[e];Plugin[_0xeb7a('0x8')](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
+var _0xdc03=['update','remove','emit','hasOwnProperty','hook','events','Plugin','setMaxListeners'];(function(_0xf1af27,_0x598bb1){var _0x46b274=function(_0x1dba43){while(--_0x1dba43){_0xf1af27['push'](_0xf1af27['shift']());}};_0x46b274(++_0x598bb1);}(_0xdc03,0x65));var _0x3dc0=function(_0x5c557d,_0x171723){_0x5c557d=_0x5c557d-0x0;var _0x358b93=_0xdc03[_0x5c557d];return _0x358b93;};'use strict';var EventEmitter=require(_0x3dc0('0x0'));var Plugin=require('../../mysqldb')['db'][_0x3dc0('0x1')];var PluginEvents=new EventEmitter();PluginEvents[_0x3dc0('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x3dc0('0x3'),'afterDestroy':_0x3dc0('0x4')};function emitEvent(_0x2971c1){return function(_0x10c75a,_0x3b41f0,_0x221975){PluginEvents['emit'](_0x2971c1+':'+_0x10c75a['id'],_0x10c75a);PluginEvents[_0x3dc0('0x5')](_0x2971c1,_0x10c75a);_0x221975(null);};}for(var e in events){if(events[_0x3dc0('0x6')](e)){var event=events[e];Plugin[_0x3dc0('0x7')](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
index 88898d6..b8a2265 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe384=['lodash','../../config/logger','api','moment','path','rimraf','exports','define'];(function(_0x11c7d3,_0x47fe03){var _0x351767=function(_0x41d8d9){while(--_0x41d8d9){_0x11c7d3['push'](_0x11c7d3['shift']());}};_0x351767(++_0x47fe03);}(_0xe384,0x160));var _0x4e38=function(_0x2ccaa3,_0x465b72){_0x2ccaa3=_0x2ccaa3-0x0;var _0x3b9551=_0xe384[_0x2ccaa3];return _0x3b9551;};'use strict';var _=require(_0x4e38('0x0'));var util=require('util');var logger=require(_0x4e38('0x1'))(_0x4e38('0x2'));var moment=require(_0x4e38('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x4e38('0x4'));var rimraf=require(_0x4e38('0x5'));var config=require('../../config/environment');var attributes=require('./plugin.attributes');module[_0x4e38('0x6')]=function(_0x5a34a1,_0x52fd5e){return _0x5a34a1[_0x4e38('0x7')]('Plugin',attributes,{'tableName':'plugins','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfa49=['../../config/environment','./plugin.attributes','exports','define','Plugin','plugins','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x124d7d,_0x3f9c95){var _0x55d7c7=function(_0x2a0111){while(--_0x2a0111){_0x124d7d['push'](_0x124d7d['shift']());}};_0x55d7c7(++_0x3f9c95);}(_0xfa49,0x12c));var _0x9fa4=function(_0x1f1dc8,_0x5f042a){_0x1f1dc8=_0x1f1dc8-0x0;var _0x4981ba=_0xfa49[_0x1f1dc8];return _0x4981ba;};'use strict';var _=require(_0x9fa4('0x0'));var util=require(_0x9fa4('0x1'));var logger=require(_0x9fa4('0x2'))(_0x9fa4('0x3'));var moment=require(_0x9fa4('0x4'));var BPromise=require(_0x9fa4('0x5'));var rp=require(_0x9fa4('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9fa4('0x7'));var config=require(_0x9fa4('0x8'));var attributes=require(_0x9fa4('0x9'));module[_0x9fa4('0xa')]=function(_0x57e8a9,_0x5c7e6a){return _0x57e8a9[_0x9fa4('0xb')](_0x9fa4('0xc'),attributes,{'tableName':_0x9fa4('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 62e2a04..213adf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc9b=['client','redis','localhost','socket.io-emitter','./plugin.socket','register','request','then','info','Plugin,\x20%s,\x20%s','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','CreatePlugin','Plugin','create','body','options','lodash','util','moment','randomstring','ioredis','../../config/logger','rpc','jayson/promise'];(function(_0x4a86cf,_0xeb2977){var _0x59b639=function(_0x22f8b3){while(--_0x22f8b3){_0x4a86cf['push'](_0x4a86cf['shift']());}};_0x59b639(++_0xeb2977);}(_0xdc9b,0x70));var _0xbdc9=function(_0x37a708,_0x5af640){_0x37a708=_0x37a708-0x0;var _0x2f7018=_0xdc9b[_0x37a708];return _0x2f7018;};'use strict';var _=require(_0xbdc9('0x0'));var util=require(_0xbdc9('0x1'));var moment=require(_0xbdc9('0x2'));var BPromise=require('bluebird');var rs=require(_0xbdc9('0x3'));var fs=require('fs');var Redis=require(_0xbdc9('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbdc9('0x5'))(_0xbdc9('0x6'));var config=require('../../config/environment');var jayson=require(_0xbdc9('0x7'));var client=jayson[_0xbdc9('0x8')]['http']({'port':0x232a});config[_0xbdc9('0x9')]=_['defaults'](config[_0xbdc9('0x9')],{'host':_0xbdc9('0xa'),'port':0x18eb});var socket=require(_0xbdc9('0xb'))(new Redis(config[_0xbdc9('0x9')]));require(_0xbdc9('0xc'))[_0xbdc9('0xd')](socket);function respondWithRpcPromise(_0x7e6df8,_0x2d1c34,_0x1a6e8f){return new BPromise(function(_0x289f6e,_0x3e58f4){return client[_0xbdc9('0xe')](_0x7e6df8,_0x1a6e8f)[_0xbdc9('0xf')](function(_0xb5a15b){logger[_0xbdc9('0x10')](_0xbdc9('0x11'),_0x2d1c34,_0xbdc9('0x12'));logger[_0xbdc9('0x13')](_0xbdc9('0x14'),_0x2d1c34,_0xbdc9('0x12'),JSON[_0xbdc9('0x15')](_0xb5a15b));if(_0xb5a15b['error']){if(_0xb5a15b[_0xbdc9('0x16')]['code']===0x1f4){logger['error'](_0xbdc9('0x11'),_0x2d1c34,_0xb5a15b[_0xbdc9('0x16')]['message']);return _0x3e58f4(_0xb5a15b[_0xbdc9('0x16')][_0xbdc9('0x17')]);}logger[_0xbdc9('0x16')](_0xbdc9('0x11'),_0x2d1c34,_0xb5a15b[_0xbdc9('0x16')][_0xbdc9('0x17')]);return _0x289f6e(_0xb5a15b['error']['message']);}else{logger[_0xbdc9('0x10')](_0xbdc9('0x11'),_0x2d1c34,_0xbdc9('0x12'));_0x289f6e(_0xb5a15b['result']['message']);}})[_0xbdc9('0x18')](function(_0x2aad7b){logger['error'](_0xbdc9('0x11'),_0x2d1c34,_0x2aad7b);_0x3e58f4(_0x2aad7b);});});}exports[_0xbdc9('0x19')]=function(_0x1f112d){var _0x478c97=this;return new Promise(function(_0x15540e,_0x37e81f){return db[_0xbdc9('0x1a')][_0xbdc9('0x1b')](_0x1f112d[_0xbdc9('0x1c')],{'raw':_0x1f112d[_0xbdc9('0x1d')]?_0x1f112d['options']['raw']===undefined?!![]:![]:!![]})[_0xbdc9('0xf')](function(_0x26f72){logger[_0xbdc9('0x10')]('CreatePlugin',_0x1f112d);logger[_0xbdc9('0x13')](_0xbdc9('0x19'),_0x1f112d,JSON['stringify'](_0x26f72));_0x15540e(_0x26f72);})[_0xbdc9('0x18')](function(_0x18ca88){logger[_0xbdc9('0x16')](_0xbdc9('0x19'),_0x18ca88[_0xbdc9('0x17')],_0x1f112d);_0x37e81f(_0x478c97[_0xbdc9('0x16')](0x1f4,_0x18ca88[_0xbdc9('0x17')]));});});};
\ No newline at end of file
+var _0x6c1c=['CreatePlugin','create','options','raw','then','stringify','lodash','util','moment','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./plugin.socket','request','info','Plugin,\x20%s,\x20%s','request\x20sent','debug','error','message','result','catch'];(function(_0x278e3c,_0x1c9cfd){var _0x3e2d9b=function(_0x34d928){while(--_0x34d928){_0x278e3c['push'](_0x278e3c['shift']());}};_0x3e2d9b(++_0x1c9cfd);}(_0x6c1c,0x7e));var _0xc6c1=function(_0x51ac09,_0x383098){_0x51ac09=_0x51ac09-0x0;var _0x3f827d=_0x6c1c[_0x51ac09];return _0x3f827d;};'use strict';var _=require(_0xc6c1('0x0'));var util=require(_0xc6c1('0x1'));var moment=require(_0xc6c1('0x2'));var BPromise=require('bluebird');var rs=require(_0xc6c1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xc6c1('0x4'));var logger=require(_0xc6c1('0x5'))(_0xc6c1('0x6'));var config=require(_0xc6c1('0x7'));var jayson=require(_0xc6c1('0x8'));var client=jayson[_0xc6c1('0x9')][_0xc6c1('0xa')]({'port':0x232a});config[_0xc6c1('0xb')]=_[_0xc6c1('0xc')](config[_0xc6c1('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xc6c1('0xd'))(new Redis(config[_0xc6c1('0xb')]));require(_0xc6c1('0xe'))['register'](socket);function respondWithRpcPromise(_0x563f49,_0x248570,_0x5e2489){return new BPromise(function(_0x2d5824,_0x4aeffb){return client[_0xc6c1('0xf')](_0x563f49,_0x5e2489)['then'](function(_0x28fb30){logger[_0xc6c1('0x10')](_0xc6c1('0x11'),_0x248570,_0xc6c1('0x12'));logger[_0xc6c1('0x13')]('Plugin,\x20%s,\x20%s,\x20%s',_0x248570,_0xc6c1('0x12'),JSON['stringify'](_0x28fb30));if(_0x28fb30['error']){if(_0x28fb30[_0xc6c1('0x14')]['code']===0x1f4){logger[_0xc6c1('0x14')](_0xc6c1('0x11'),_0x248570,_0x28fb30[_0xc6c1('0x14')][_0xc6c1('0x15')]);return _0x4aeffb(_0x28fb30[_0xc6c1('0x14')][_0xc6c1('0x15')]);}logger[_0xc6c1('0x14')](_0xc6c1('0x11'),_0x248570,_0x28fb30[_0xc6c1('0x14')][_0xc6c1('0x15')]);return _0x2d5824(_0x28fb30[_0xc6c1('0x14')]['message']);}else{logger['info'](_0xc6c1('0x11'),_0x248570,'request\x20sent');_0x2d5824(_0x28fb30[_0xc6c1('0x16')][_0xc6c1('0x15')]);}})[_0xc6c1('0x17')](function(_0x10c925){logger['error'](_0xc6c1('0x11'),_0x248570,_0x10c925);_0x4aeffb(_0x10c925);});});}exports[_0xc6c1('0x18')]=function(_0x3ae6e0){var _0x2ccdb2=this;return new Promise(function(_0x12170a,_0x2aab6d){return db['Plugin'][_0xc6c1('0x19')](_0x3ae6e0['body'],{'raw':_0x3ae6e0[_0xc6c1('0x1a')]?_0x3ae6e0[_0xc6c1('0x1a')][_0xc6c1('0x1b')]===undefined?!![]:![]:!![]})[_0xc6c1('0x1c')](function(_0x62f44b){logger[_0xc6c1('0x10')]('CreatePlugin',_0x3ae6e0);logger[_0xc6c1('0x13')]('CreatePlugin',_0x3ae6e0,JSON[_0xc6c1('0x1d')](_0x62f44b));_0x12170a(_0x62f44b);})[_0xc6c1('0x17')](function(_0x2e8a74){logger[_0xc6c1('0x14')]('CreatePlugin',_0x2e8a74[_0xc6c1('0x15')],_0x3ae6e0);_0x2aab6d(_0x2ccdb2['error'](0x1f4,_0x2e8a74[_0xc6c1('0x15')]));});});};
\ No newline at end of file
index 8c6e095..5985a11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbe9=['removeListener','register','length','./plugin.events','save','remove','update','emit'];(function(_0x13135b,_0x2b99e5){var _0x303ec5=function(_0xa87aa2){while(--_0xa87aa2){_0x13135b['push'](_0x13135b['shift']());}};_0x303ec5(++_0x2b99e5);}(_0xcbe9,0xe3));var _0x9cbe=function(_0x4b7cbd,_0x288efd){_0x4b7cbd=_0x4b7cbd-0x0;var _0x5db5ab=_0xcbe9[_0x4b7cbd];return _0x5db5ab;};'use strict';var PluginEvents=require(_0x9cbe('0x0'));var events=[_0x9cbe('0x1'),_0x9cbe('0x2'),_0x9cbe('0x3')];function createListener(_0x3f9fe8,_0x592c72){return function(_0x1fbfb7){_0x592c72[_0x9cbe('0x4')](_0x3f9fe8,_0x1fbfb7);};}function removeListener(_0x5c3de6,_0x42d6d4){return function(){PluginEvents[_0x9cbe('0x5')](_0x5c3de6,_0x42d6d4);};}exports[_0x9cbe('0x6')]=function(_0x15e26a){for(var _0x370fb4=0x0,_0xc7758b=events[_0x9cbe('0x7')];_0x370fb4<_0xc7758b;_0x370fb4++){var _0x37ede0=events[_0x370fb4];var _0x21c29f=createListener('plugin:'+_0x37ede0,_0x15e26a);PluginEvents['on'](_0x37ede0,_0x21c29f);}};
\ No newline at end of file
+var _0x766e=['emit','removeListener','register','length','plugin:','./plugin.events','remove','update'];(function(_0x58016a,_0xa61e0){var _0x3b13ea=function(_0x2ea81a){while(--_0x2ea81a){_0x58016a['push'](_0x58016a['shift']());}};_0x3b13ea(++_0xa61e0);}(_0x766e,0x12d));var _0xe766=function(_0x2338ae,_0x1896f8){_0x2338ae=_0x2338ae-0x0;var _0x4adad9=_0x766e[_0x2338ae];return _0x4adad9;};'use strict';var PluginEvents=require(_0xe766('0x0'));var events=['save',_0xe766('0x1'),_0xe766('0x2')];function createListener(_0x1b4478,_0x3c1919){return function(_0x3a0b19){_0x3c1919[_0xe766('0x3')](_0x1b4478,_0x3a0b19);};}function removeListener(_0xe2cabb,_0x5875b9){return function(){PluginEvents[_0xe766('0x4')](_0xe2cabb,_0x5875b9);};}exports[_0xe766('0x5')]=function(_0x591d92){for(var _0x5da162=0x0,_0x28092e=events[_0xe766('0x6')];_0x5da162<_0x28092e;_0x5da162++){var _0x45f020=events[_0x5da162];var _0x22f690=createListener(_0xe766('0x7')+_0x45f020,_0x591d92);PluginEvents['on'](_0x45f020,_0x22f690);}};
\ No newline at end of file
index 5c119cc..4d611f7 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(_0x5079f8,_0x11122a){var _0x11eef3=function(_0x307408){while(--_0x307408){_0x5079f8['push'](_0x5079f8['shift']());}};_0x11eef3(++_0x11122a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ddedd,_0x485606){_0x1ddedd=_0x1ddedd-0x0;var _0xa3e1ac=_0xa9e0[_0x1ddedd];return _0xa3e1ac;};'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(_0x3759b1,_0x31db9f){var _0x36a2a5=function(_0x4a6300){while(--_0x4a6300){_0x3759b1['push'](_0x3759b1['shift']());}};_0x36a2a5(++_0x31db9f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xa9e0[_0x4cf98e];return _0x1623ac;};'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 ab649a7..87082d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91a7=['params','delete','Unknown\x20id','../../config/pm2','../../config/logger','api','child_process','bluebird','sendStatus','status','json','error','stack','name','send','npm\x20install','info','index','list','then','reject','length','show','body','script','join','../../files/plugins','cwd','chdir','dirname','start','dump','catch','Missing\x20name\x20and/or\x20path','restart','stop','hasOwnProperty','Unknown\x20status'];(function(_0x59b2a1,_0x1f631f){var _0x4908d1=function(_0x14c9b8){while(--_0x14c9b8){_0x59b2a1['push'](_0x59b2a1['shift']());}};_0x4908d1(++_0x1f631f);}(_0x91a7,0xe7));var _0x791a=function(_0x56b288,_0x1ed5ac){_0x56b288=_0x56b288-0x0;var _0x355ae0=_0x91a7[_0x56b288];return _0x355ae0;};'use strict';var _=require('lodash');var pm2=require(_0x791a('0x0'));var logger=require(_0x791a('0x1'))(_0x791a('0x2'));var path=require('path');var exec=require(_0x791a('0x3'))['exec'];var BPromise=require(_0x791a('0x4'));function handleEntityNotFound(_0x535640,_0x50ab29){return function(_0x32fe2b){if(!_0x32fe2b){_0x535640[_0x791a('0x5')](0x194);;}return _0x32fe2b;};}function respondWithResult(_0x49a9b7,_0x361f53){_0x361f53=_0x361f53||0xc8;return function(_0x5db6db){if(_0x5db6db){return _0x49a9b7[_0x791a('0x6')](_0x361f53)[_0x791a('0x7')](_0x5db6db);}return null;};}function handleError(_0x5aa10a,_0x1a32b4){_0x1a32b4=_0x1a32b4||0x1f4;return function(_0x12884d){logger[_0x791a('0x8')](_0x12884d[_0x791a('0x9')]);if(_0x12884d[_0x791a('0xa')]){delete _0x12884d['name'];}_0x5aa10a[_0x791a('0x6')](_0x1a32b4)[_0x791a('0xb')](_0x12884d);};}function execChildProcess(){return new BPromise(function(_0x57e99c,_0x2bd26a){exec(_0x791a('0xc'),function(_0x167bc4,_0x17cf33,_0x2805c9){logger[_0x791a('0xd')](_0x17cf33);logger['info'](_0x2805c9);if(_0x167bc4){logger['error'](_0x167bc4);return _0x2bd26a(_0x167bc4);}return _0x57e99c(_0x17cf33);});});}exports[_0x791a('0xe')]=function(_0x2f2d8d,_0x4c56f0){return pm2[_0x791a('0xf')]()[_0x791a('0x10')](function(_0x5d5b11){if(_0x5d5b11){var _0x2887f0=_[_0x791a('0x11')](_0x5d5b11,function(_0x2ef5c5){return _0x2ef5c5[_0x791a('0xa')]==='express'||_0x2ef5c5[_0x791a('0xa')]==='motion2';});return{'rows':_0x2887f0,'count':_0x2887f0[_0x791a('0x12')]};}return null;})[_0x791a('0x10')](respondWithResult(_0x4c56f0,null))['catch'](handleError(_0x4c56f0,null));};exports[_0x791a('0x13')]=function(_0x5bea2e,_0x35fe48){return pm2['describe'](_0x5bea2e['params']['id'])['then'](respondWithResult(_0x35fe48,null))[_0x791a('0x10')](handleEntityNotFound(_0x35fe48,null))['catch'](handleError(_0x35fe48,null));};exports['create']=function(_0x39c60b,_0x5a702e){if(_0x39c60b[_0x791a('0x14')][_0x791a('0xa')]&&_0x39c60b['body'][_0x791a('0x15')]){var _0xcb5e66=path[_0x791a('0x16')](__dirname,_0x791a('0x17'),_0x39c60b['body'][_0x791a('0x15')]);var _0x2054c6=process[_0x791a('0x18')]();process[_0x791a('0x19')](path[_0x791a('0x1a')](_0xcb5e66));return execChildProcess()[_0x791a('0x10')](function(_0x2241a0){process[_0x791a('0x19')](_0x2054c6);return pm2[_0x791a('0x1b')]({'name':_0x39c60b[_0x791a('0x14')][_0x791a('0xa')],'script':_0xcb5e66});})['then'](function(_0x1102c9){pm2[_0x791a('0x1c')]();return _0x1102c9[0x0];})[_0x791a('0x10')](respondWithResult(_0x5a702e,0xc9))[_0x791a('0x1d')](handleError(_0x5a702e,null));}else{return _0x5a702e['status'](0x1f4)[_0x791a('0xb')]({'message':_0x791a('0x1e')});}};exports['update']=function(_0xdfa84f,_0x1785f5){if(_0xdfa84f[_0x791a('0x14')]['id']){delete _0xdfa84f['body']['id'];}var _0x29194d={'online':_0x791a('0x1f'),'stopped':_0x791a('0x20')};if(_0x29194d[_0x791a('0x21')](_0xdfa84f[_0x791a('0x14')][_0x791a('0x6')])){return pm2[_0x29194d[_0xdfa84f[_0x791a('0x14')][_0x791a('0x6')]]](_0xdfa84f['params']['id'])[_0x791a('0x10')](respondWithResult(_0x1785f5,0xc8))[_0x791a('0x1d')](handleError(_0x1785f5,null));}else{return _0x1785f5[_0x791a('0x6')](0x1f4)['send']({'message':_0x791a('0x22')});}};exports['destroy']=function(_0xc59f5e,_0x2e4ec8){if(_0xc59f5e[_0x791a('0x14')]['id']){delete _0xc59f5e[_0x791a('0x14')]['id'];}if(_0xc59f5e[_0x791a('0x23')]['id']){return pm2[_0x791a('0x24')](_0xc59f5e[_0x791a('0x23')]['id'])['then'](function(_0x3662c6){pm2[_0x791a('0x1c')]();return _0x3662c6[0x0];})[_0x791a('0x10')](respondWithResult(_0x2e4ec8,null))[_0x791a('0x1d')](handleError(_0x2e4ec8,null));}else{return _0x2e4ec8[_0x791a('0x6')](0x1f4)['send']({'message':_0x791a('0x25')});}};
\ No newline at end of file
+var _0x1d2d=['reject','express','motion2','length','catch','show','describe','create','body','script','join','../../files/plugins','cwd','chdir','start','dump','Missing\x20name\x20and/or\x20path','update','stop','hasOwnProperty','params','Unknown\x20status','destroy','delete','Unknown\x20id','lodash','../../config/pm2','../../config/logger','api','path','exec','sendStatus','json','error','stack','name','status','send','npm\x20install','info','index','list','then'];(function(_0x2519e4,_0x2c7257){var _0x37a165=function(_0x11e07c){while(--_0x11e07c){_0x2519e4['push'](_0x2519e4['shift']());}};_0x37a165(++_0x2c7257);}(_0x1d2d,0xf0));var _0xd1d2=function(_0x1bd92a,_0x4531be){_0x1bd92a=_0x1bd92a-0x0;var _0x2e4b34=_0x1d2d[_0x1bd92a];return _0x2e4b34;};'use strict';var _=require(_0xd1d2('0x0'));var pm2=require(_0xd1d2('0x1'));var logger=require(_0xd1d2('0x2'))(_0xd1d2('0x3'));var path=require(_0xd1d2('0x4'));var exec=require('child_process')[_0xd1d2('0x5')];var BPromise=require('bluebird');function handleEntityNotFound(_0x5d3fac,_0x3caa72){return function(_0x2bfabc){if(!_0x2bfabc){_0x5d3fac[_0xd1d2('0x6')](0x194);;}return _0x2bfabc;};}function respondWithResult(_0x269613,_0x2f930d){_0x2f930d=_0x2f930d||0xc8;return function(_0x353dbd){if(_0x353dbd){return _0x269613['status'](_0x2f930d)[_0xd1d2('0x7')](_0x353dbd);}return null;};}function handleError(_0x21bc28,_0x35735f){_0x35735f=_0x35735f||0x1f4;return function(_0x37ff2a){logger[_0xd1d2('0x8')](_0x37ff2a[_0xd1d2('0x9')]);if(_0x37ff2a[_0xd1d2('0xa')]){delete _0x37ff2a[_0xd1d2('0xa')];}_0x21bc28[_0xd1d2('0xb')](_0x35735f)[_0xd1d2('0xc')](_0x37ff2a);};}function execChildProcess(){return new BPromise(function(_0x900ec,_0x227d7f){exec(_0xd1d2('0xd'),function(_0x5b21f4,_0x41fcb5,_0x1f49ed){logger[_0xd1d2('0xe')](_0x41fcb5);logger[_0xd1d2('0xe')](_0x1f49ed);if(_0x5b21f4){logger[_0xd1d2('0x8')](_0x5b21f4);return _0x227d7f(_0x5b21f4);}return _0x900ec(_0x41fcb5);});});}exports[_0xd1d2('0xf')]=function(_0x2df8a5,_0x31dc84){return pm2[_0xd1d2('0x10')]()[_0xd1d2('0x11')](function(_0x4cf702){if(_0x4cf702){var _0x2e7fec=_[_0xd1d2('0x12')](_0x4cf702,function(_0x3476f8){return _0x3476f8['name']===_0xd1d2('0x13')||_0x3476f8[_0xd1d2('0xa')]===_0xd1d2('0x14');});return{'rows':_0x2e7fec,'count':_0x2e7fec[_0xd1d2('0x15')]};}return null;})[_0xd1d2('0x11')](respondWithResult(_0x31dc84,null))[_0xd1d2('0x16')](handleError(_0x31dc84,null));};exports[_0xd1d2('0x17')]=function(_0x57f2f9,_0x539d5a){return pm2[_0xd1d2('0x18')](_0x57f2f9['params']['id'])[_0xd1d2('0x11')](respondWithResult(_0x539d5a,null))[_0xd1d2('0x11')](handleEntityNotFound(_0x539d5a,null))[_0xd1d2('0x16')](handleError(_0x539d5a,null));};exports[_0xd1d2('0x19')]=function(_0x4ab386,_0x4f1201){if(_0x4ab386[_0xd1d2('0x1a')]['name']&&_0x4ab386['body'][_0xd1d2('0x1b')]){var _0x27e26b=path[_0xd1d2('0x1c')](__dirname,_0xd1d2('0x1d'),_0x4ab386['body'][_0xd1d2('0x1b')]);var _0xbb4d27=process[_0xd1d2('0x1e')]();process['chdir'](path['dirname'](_0x27e26b));return execChildProcess()[_0xd1d2('0x11')](function(_0x3a1078){process[_0xd1d2('0x1f')](_0xbb4d27);return pm2[_0xd1d2('0x20')]({'name':_0x4ab386[_0xd1d2('0x1a')][_0xd1d2('0xa')],'script':_0x27e26b});})[_0xd1d2('0x11')](function(_0x5df4af){pm2[_0xd1d2('0x21')]();return _0x5df4af[0x0];})[_0xd1d2('0x11')](respondWithResult(_0x4f1201,0xc9))[_0xd1d2('0x16')](handleError(_0x4f1201,null));}else{return _0x4f1201[_0xd1d2('0xb')](0x1f4)[_0xd1d2('0xc')]({'message':_0xd1d2('0x22')});}};exports[_0xd1d2('0x23')]=function(_0x34faf7,_0xe6ef3c){if(_0x34faf7[_0xd1d2('0x1a')]['id']){delete _0x34faf7[_0xd1d2('0x1a')]['id'];}var _0x4e1bc2={'online':'restart','stopped':_0xd1d2('0x24')};if(_0x4e1bc2[_0xd1d2('0x25')](_0x34faf7[_0xd1d2('0x1a')][_0xd1d2('0xb')])){return pm2[_0x4e1bc2[_0x34faf7[_0xd1d2('0x1a')]['status']]](_0x34faf7[_0xd1d2('0x26')]['id'])[_0xd1d2('0x11')](respondWithResult(_0xe6ef3c,0xc8))[_0xd1d2('0x16')](handleError(_0xe6ef3c,null));}else{return _0xe6ef3c['status'](0x1f4)[_0xd1d2('0xc')]({'message':_0xd1d2('0x27')});}};exports[_0xd1d2('0x28')]=function(_0x56557d,_0x419db7){if(_0x56557d[_0xd1d2('0x1a')]['id']){delete _0x56557d[_0xd1d2('0x1a')]['id'];}if(_0x56557d[_0xd1d2('0x26')]['id']){return pm2[_0xd1d2('0x29')](_0x56557d[_0xd1d2('0x26')]['id'])[_0xd1d2('0x11')](function(_0x322f50){pm2[_0xd1d2('0x21')]();return _0x322f50[0x0];})[_0xd1d2('0x11')](respondWithResult(_0x419db7,null))[_0xd1d2('0x16')](handleError(_0x419db7,null));}else{return _0x419db7[_0xd1d2('0xb')](0x1f4)[_0xd1d2('0xc')]({'message':_0xd1d2('0x2a')});}};
\ No newline at end of file
index 4724ca7..97f3de3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8b1=['exports','express','Router','./realtime.controller','get','/queues','getQueues'];(function(_0x4c0d0f,_0x5339cc){var _0x1e6724=function(_0x1f52f1){while(--_0x1f52f1){_0x4c0d0f['push'](_0x4c0d0f['shift']());}};_0x1e6724(++_0x5339cc);}(_0xe8b1,0x104));var _0x1e8b=function(_0x10dbf6,_0x3ff964){_0x10dbf6=_0x10dbf6-0x0;var _0x452147=_0xe8b1[_0x10dbf6];return _0x452147;};'use strict';var express=require(_0x1e8b('0x0'));var router=express[_0x1e8b('0x1')]();var auth=require('../../components/auth/service');var controller=require(_0x1e8b('0x2'));router[_0x1e8b('0x3')](_0x1e8b('0x4'),auth['isAuthenticated'](),controller[_0x1e8b('0x5')]);module[_0x1e8b('0x6')]=router;
\ No newline at end of file
+var _0x6d11=['Router','../../components/auth/service','get','isAuthenticated','getQueues','express'];(function(_0x7f82c7,_0x2bec9d){var _0xccd46=function(_0x14083a){while(--_0x14083a){_0x7f82c7['push'](_0x7f82c7['shift']());}};_0xccd46(++_0x2bec9d);}(_0x6d11,0xbf));var _0x16d1=function(_0xb4201a,_0x377d31){_0xb4201a=_0xb4201a-0x0;var _0x1f3553=_0x6d11[_0xb4201a];return _0x1f3553;};'use strict';var express=require(_0x16d1('0x0'));var router=express[_0x16d1('0x1')]();var auth=require(_0x16d1('0x2'));var controller=require('./realtime.controller');router[_0x16d1('0x3')]('/queues',auth[_0x16d1('0x4')](),controller[_0x16d1('0x5')]);module['exports']=router;
\ No newline at end of file
index 7be549d..d2d1b0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f9d=['fax','resolve','query','channel','Invalid\x20channel','toLowerCase','startCase','map','rawAttributes','fieldName','type','getOptions','user','role','userProfileId','voice','outbound','QueueCampaigns','Queues','findAndCountAll','then','request','format','loggedIn','available','waiting','talking','paused','message','dialActive','dialMethod','Trunk','startPredictive','erlangCallToSecond','erlangAbandonmentRate','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','rows','get','loggedInDb','pTalking','originated','find','merge','pick','getMembers','length','online','agents','User','Queue','Pause','findAll','QueueId','UserId','agent','all','catch','util','jayson/promise','../../config/logger','api','../../mysqldb','client','http','offset','undefined','count','limit','status','set','Content-Range','error','stack','name','send','getQueues','mail','chat','sms','openchannel'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x8f9d,0x93));var _0xd8f9=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x8f9d[_0x57b54c];return _0x59cc19;};'use strict';var util=require(_0xd8f9('0x0'));var _=require('lodash');var jayson=require(_0xd8f9('0x1'));var qs=require('../../components/parsers/qs');var logger=require(_0xd8f9('0x2'))(_0xd8f9('0x3'));var db=require(_0xd8f9('0x4'))['db'];var client=jayson[_0xd8f9('0x5')][_0xd8f9('0x6')]({'port':0x232a});var routingClient=jayson[_0xd8f9('0x5')][_0xd8f9('0x6')]({'port':0x232c});function respondWithFilteredResult(_0x5941ce,_0x1c37be){return function(_0x24dd1e){if(_0x24dd1e){var _0x25d417=typeof _0x1c37be[_0xd8f9('0x7')]===_0xd8f9('0x8')&&typeof _0x1c37be['limit']===_0xd8f9('0x8');var _0x6691e=_0x24dd1e['count'];var _0x33c31e=_0x25d417?0x0:_0x1c37be['offset'];var _0x5caee9=_0x25d417?_0x24dd1e[_0xd8f9('0x9')]:_0x1c37be[_0xd8f9('0x7')]+_0x1c37be[_0xd8f9('0xa')];var _0x379359;if(_0x5caee9>=_0x6691e){_0x5caee9=_0x6691e;_0x379359=0xc8;}else{_0x379359=0xce;}_0x5941ce[_0xd8f9('0xb')](_0x379359);return _0x5941ce[_0xd8f9('0xc')](_0xd8f9('0xd'),_0x33c31e+'-'+_0x5caee9+'/'+_0x6691e)['json'](_0x24dd1e);}return null;};}function handleError(_0x3a214b,_0x56e0d6){_0x56e0d6=_0x56e0d6||0x1f4;return function(_0x39aca0){logger[_0xd8f9('0xe')](_0x39aca0[_0xd8f9('0xf')]);if(_0x39aca0['name']){delete _0x39aca0[_0xd8f9('0x10')];}_0x3a214b[_0xd8f9('0xb')](_0x56e0d6)[_0xd8f9('0x11')](_0x39aca0);};}exports[_0xd8f9('0x12')]=function(_0x4c11f2,_0x3529e9){var _0x1525d6=[_0xd8f9('0x13'),_0xd8f9('0x14'),_0xd8f9('0x15'),_0xd8f9('0x16'),_0xd8f9('0x17'),'whatsapp','voice'];var _0x284a1a={'count':0x0,'rows':[]},_0xc6a825={},_0x4d5b8d;Promise[_0xd8f9('0x18')]()['then'](function(){if(_0x4c11f2[_0xd8f9('0x19')]['channel']){if(!_['includes'](_0x1525d6,_0x4c11f2['query'][_0xd8f9('0x1a')]['toLowerCase']()))throw new Error(_0xd8f9('0x1b'));_0x4d5b8d=_0x4c11f2[_0xd8f9('0x19')][_0xd8f9('0x1a')][_0xd8f9('0x1c')]();}var _0x3b141a=_[_0xd8f9('0x1d')](_0x4d5b8d)+'Queue';var _0x1de3cc=_[_0xd8f9('0x1e')](db[_0x3b141a][_0xd8f9('0x1f')],function(_0x36d740){return{'name':_0x36d740[_0xd8f9('0x20')],'type':_0x36d740[_0xd8f9('0x21')]['key']};});_0xc6a825=qs[_0xd8f9('0x22')](_0x1de3cc,_0x4c11f2);if(_0x4c11f2[_0xd8f9('0x23')][_0xd8f9('0x24')]===_0xd8f9('0x23')){var _0x290553={'params':{'id':_0x4c11f2['user'][_0xd8f9('0x25')]},'query':{'section':_0x4d5b8d===_0xd8f9('0x26')&&_0x4c11f2[_0xd8f9('0x19')][_0xd8f9('0x21')]===_0xd8f9('0x27')?_0xd8f9('0x28'):_[_0xd8f9('0x1d')](_0x4d5b8d)+_0xd8f9('0x29'),'type':_0x4c11f2['query'][_0xd8f9('0x21')],'nolimit':!![],'sort':_0xd8f9('0x10'),'filter':_0x4c11f2[_0xd8f9('0x19')]['filter']}};return db['UserProfile']['getResources'](_0x290553);}return db[_0x3b141a][_0xd8f9('0x2a')](_0xc6a825);})[_0xd8f9('0x2b')](function(_0x5050a4){_0x284a1a[_0xd8f9('0x9')]=_0x5050a4[_0xd8f9('0x9')];var _0x5da878=_0x4d5b8d===_0xd8f9('0x26')?client:routingClient;return _0x5da878[_0xd8f9('0x2c')](_[_0xd8f9('0x1d')](_0x4d5b8d)+'Queues',_0x4c11f2)[_0xd8f9('0x2b')](function(_0x48f7c0){if(_0x48f7c0[_0xd8f9('0xe')])throw new Error(util[_0xd8f9('0x2d')]('Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues',_0x4d5b8d));var _0x19d639=_0x48f7c0['result'];var _0x340f0a=[_0xd8f9('0x2e'),_0xd8f9('0x2f'),_0xd8f9('0x30'),_0xd8f9('0x31'),_0xd8f9('0x32')];if(_0x4d5b8d===_0xd8f9('0x26')&&_0x4c11f2['query'][_0xd8f9('0x21')]==='outbound'){_0x340f0a['push']('pTalking','originated',_0xd8f9('0x33'),_0xd8f9('0x34'),_0xd8f9('0x35'),_0xd8f9('0x36'),_0xd8f9('0x37'),'startProgressive','erlangCalls',_0xd8f9('0x38'),_0xd8f9('0x39'),'erlangBusyFactor',_0xd8f9('0x3a'),_0xd8f9('0x3b'),_0xd8f9('0x3c'),'predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout',_0xd8f9('0x3d'),_0xd8f9('0x3e'),_0xd8f9('0x3f'));}var _0x219c5f=_0x5050a4[_0xd8f9('0x40')]['map'](function(_0x3333ea){var _0x2bc390=_0x3333ea[_0xd8f9('0x41')]({'plain':!![]});_0x2bc390[_0xd8f9('0x32')]=0x0;_0x2bc390[_0xd8f9('0x42')]=0x0;_0x2bc390[_0xd8f9('0x2e')]=0x0;_0x2bc390[_0xd8f9('0x2f')]=0x0;_0x2bc390[_0xd8f9('0x32')]=0x0;_0x2bc390[_0xd8f9('0x30')]=0x0;if(_0x4d5b8d===_0xd8f9('0x26')){_0x2bc390[_0xd8f9('0x31')]=0x0;if(_0x4c11f2['query'][_0xd8f9('0x21')]===_0xd8f9('0x27')){_0x2bc390[_0xd8f9('0x43')]=0x0;_0x2bc390[_0xd8f9('0x44')]=0x0;}}_0x2bc390['agents']=[];var _0x157dfd=_[_0xd8f9('0x45')](_0x19d639[_0xd8f9('0x40')],['id',_0x2bc390['id']]);if(_0x157dfd)_[_0xd8f9('0x46')](_0x2bc390,_[_0xd8f9('0x47')](_0x157dfd,_0x340f0a));if(_0x4d5b8d===_0xd8f9('0x26')){return _0x3333ea['getAgents']({'attributes':['id','name','online'],'joinTableAttributes':[],'raw':!![]})[_0xd8f9('0x2b')](function(_0x293179){return _0x3333ea[_0xd8f9('0x48')]({'raw':!![]})[_0xd8f9('0x2b')](function(_0x9af000){for(var _0x324f18=0x0;_0x324f18<_0x293179[_0xd8f9('0x49')];_0x324f18++){var _0x2ff764=_[_0xd8f9('0x45')](_0x9af000,['UserId',_0x293179[_0x324f18]['id']]);var _0x4aabbe={'id':_0x293179[_0x324f18]['id'],'name':_0x293179[_0x324f18][_0xd8f9('0x10')],'online':Boolean(_0x293179[_0x324f18][_0xd8f9('0x4a')]),'paused':_0x2ff764?Boolean(_0x2ff764[_0xd8f9('0x32')]):![]};if(_0x4aabbe['online'])_0x2bc390['loggedInDb']++;if(_0x4aabbe[_0xd8f9('0x32')])_0x2bc390[_0xd8f9('0x32')]++;_0x2bc390[_0xd8f9('0x4b')]['push'](_0x4aabbe);}return _0x2bc390;});});}else{var _0xd6b6bf=_0xd8f9('0x4c')+_[_0xd8f9('0x1d')](_0x4d5b8d)+_0xd8f9('0x4d');var _0x207ad2=_0x4d5b8d+_0xd8f9('0x4e');return db[_0xd6b6bf][_0xd8f9('0x4f')]({'where':{[_[_0xd8f9('0x1d')](_0x4d5b8d)+_0xd8f9('0x50')]:_0x3333ea['id']},'raw':!![]})['then'](function(_0x53594f){return db['User'][_0xd8f9('0x4f')]({'attributes':['id',_0xd8f9('0x10'),_0xd8f9('0x4a'),_0x207ad2],'where':{'id':_[_0xd8f9('0x1e')](_0x53594f,_0xd8f9('0x51')),'role':_0xd8f9('0x52')},'raw':!![]});})[_0xd8f9('0x2b')](function(_0x26b892){for(var _0x26527c=0x0;_0x26527c<_0x26b892[_0xd8f9('0x49')];_0x26527c++){var _0x35f7a6={'id':_0x26b892[_0x26527c]['id'],'name':_0x26b892[_0x26527c][_0xd8f9('0x10')],'online':Boolean(_0x26b892[_0x26527c][_0xd8f9('0x4a')]),'paused':Boolean(_0x26b892[_0x26527c][_0x207ad2])};if(_0x35f7a6['online'])_0x2bc390[_0xd8f9('0x42')]++;if(_0x35f7a6[_0xd8f9('0x32')])_0x2bc390[_0xd8f9('0x32')]++;_0x2bc390[_0xd8f9('0x4b')]['push'](_0x35f7a6);}return _0x2bc390;});}});return Promise[_0xd8f9('0x53')](_0x219c5f);});})['then'](function(_0x59952e){_0x284a1a[_0xd8f9('0x40')]=_0x59952e;return _0x284a1a;})[_0xd8f9('0x2b')](respondWithFilteredResult(_0x3529e9,_0xc6a825))[_0xd8f9('0x54')](handleError(_0x3529e9,null));};
\ No newline at end of file
+var _0x7880=['agents','User','Pause','findAll','QueueId','map','agent','all','lodash','jayson/promise','../../components/parsers/qs','../../config/logger','api','../../mysqldb','http','client','offset','undefined','limit','count','set','Content-Range','json','error','name','status','send','mail','chat','sms','openchannel','fax','resolve','then','query','includes','toLowerCase','startCase','Queue','fieldName','type','key','role','user','voice','QueueCampaigns','filter','UserProfile','getResources','findAndCountAll','request','Queues','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','loggedIn','available','waiting','talking','paused','outbound','push','startPredictive','startProgressive','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','predictiveIntervalAvailable','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','rows','get','loggedInDb','find','merge','pick','online','getMembers','length'];(function(_0x3b3493,_0x4eae83){var _0x51953f=function(_0x1f8929){while(--_0x1f8929){_0x3b3493['push'](_0x3b3493['shift']());}};_0x51953f(++_0x4eae83);}(_0x7880,0x1f4));var _0x0788=function(_0x3f9ec3,_0x3dfd37){_0x3f9ec3=_0x3f9ec3-0x0;var _0xe85b13=_0x7880[_0x3f9ec3];return _0xe85b13;};'use strict';var util=require('util');var _=require(_0x0788('0x0'));var jayson=require(_0x0788('0x1'));var qs=require(_0x0788('0x2'));var logger=require(_0x0788('0x3'))(_0x0788('0x4'));var db=require(_0x0788('0x5'))['db'];var client=jayson['client'][_0x0788('0x6')]({'port':0x232a});var routingClient=jayson[_0x0788('0x7')][_0x0788('0x6')]({'port':0x232c});function respondWithFilteredResult(_0xd53e7d,_0x262f5c){return function(_0x775629){if(_0x775629){var _0x3f9cb8=typeof _0x262f5c[_0x0788('0x8')]===_0x0788('0x9')&&typeof _0x262f5c[_0x0788('0xa')]==='undefined';var _0x1497dd=_0x775629['count'];var _0xabaf81=_0x3f9cb8?0x0:_0x262f5c['offset'];var _0x433c26=_0x3f9cb8?_0x775629[_0x0788('0xb')]:_0x262f5c[_0x0788('0x8')]+_0x262f5c[_0x0788('0xa')];var _0x469ebe;if(_0x433c26>=_0x1497dd){_0x433c26=_0x1497dd;_0x469ebe=0xc8;}else{_0x469ebe=0xce;}_0xd53e7d['status'](_0x469ebe);return _0xd53e7d[_0x0788('0xc')](_0x0788('0xd'),_0xabaf81+'-'+_0x433c26+'/'+_0x1497dd)[_0x0788('0xe')](_0x775629);}return null;};}function handleError(_0x2d8568,_0x311729){_0x311729=_0x311729||0x1f4;return function(_0xce4342){logger[_0x0788('0xf')](_0xce4342['stack']);if(_0xce4342[_0x0788('0x10')]){delete _0xce4342[_0x0788('0x10')];}_0x2d8568[_0x0788('0x11')](_0x311729)[_0x0788('0x12')](_0xce4342);};}exports['getQueues']=function(_0x43ca01,_0x4ed024){var _0x195f14=[_0x0788('0x13'),_0x0788('0x14'),_0x0788('0x15'),_0x0788('0x16'),_0x0788('0x17'),'whatsapp','voice'];var _0x17d805={'count':0x0,'rows':[]},_0x461d9d={},_0x5b2bdc;Promise[_0x0788('0x18')]()[_0x0788('0x19')](function(){if(_0x43ca01[_0x0788('0x1a')]['channel']){if(!_[_0x0788('0x1b')](_0x195f14,_0x43ca01[_0x0788('0x1a')]['channel'][_0x0788('0x1c')]()))throw new Error('Invalid\x20channel');_0x5b2bdc=_0x43ca01[_0x0788('0x1a')]['channel'][_0x0788('0x1c')]();}var _0x3c37ca=_[_0x0788('0x1d')](_0x5b2bdc)+_0x0788('0x1e');var _0x3aa142=_['map'](db[_0x3c37ca]['rawAttributes'],function(_0x2270d4){return{'name':_0x2270d4[_0x0788('0x1f')],'type':_0x2270d4[_0x0788('0x20')][_0x0788('0x21')]};});_0x461d9d=qs['getOptions'](_0x3aa142,_0x43ca01);if(_0x43ca01['user'][_0x0788('0x22')]===_0x0788('0x23')){var _0x40309d={'params':{'id':_0x43ca01['user']['userProfileId']},'query':{'section':_0x5b2bdc===_0x0788('0x24')&&_0x43ca01[_0x0788('0x1a')]['type']==='outbound'?_0x0788('0x25'):_[_0x0788('0x1d')](_0x5b2bdc)+'Queues','type':_0x43ca01[_0x0788('0x1a')][_0x0788('0x20')],'nolimit':!![],'sort':_0x0788('0x10'),'filter':_0x43ca01[_0x0788('0x1a')][_0x0788('0x26')]}};return db[_0x0788('0x27')][_0x0788('0x28')](_0x40309d);}return db[_0x3c37ca][_0x0788('0x29')](_0x461d9d);})['then'](function(_0x5a5178){_0x17d805[_0x0788('0xb')]=_0x5a5178[_0x0788('0xb')];var _0x54979a=_0x5b2bdc==='voice'?client:routingClient;return _0x54979a[_0x0788('0x2a')](_[_0x0788('0x1d')](_0x5b2bdc)+_0x0788('0x2b'),_0x43ca01)[_0x0788('0x19')](function(_0x44cbfb){if(_0x44cbfb[_0x0788('0xf')])throw new Error(util[_0x0788('0x2c')](_0x0788('0x2d'),_0x5b2bdc));var _0x28a50a=_0x44cbfb[_0x0788('0x2e')];var _0x5ec0ed=[_0x0788('0x2f'),_0x0788('0x30'),_0x0788('0x31'),_0x0788('0x32'),_0x0788('0x33')];if(_0x5b2bdc===_0x0788('0x24')&&_0x43ca01[_0x0788('0x1a')][_0x0788('0x20')]===_0x0788('0x34')){_0x5ec0ed[_0x0788('0x35')]('pTalking','originated','message','dialActive','dialMethod','Trunk',_0x0788('0x36'),_0x0788('0x37'),_0x0788('0x38'),'erlangCallToSecond',_0x0788('0x39'),_0x0788('0x3a'),_0x0788('0x3b'),_0x0788('0x3c'),'dialPredictiveIntervalMinThreshold',_0x0788('0x3d'),'predictiveIntervalTotalCalls',_0x0788('0x3e'),'predictiveIntervalDroppedCallsTimeout',_0x0788('0x3f'),_0x0788('0x40'),'predictiveIntervalAvgTalktime');}var _0x16f053=_0x5a5178[_0x0788('0x41')]['map'](function(_0x17240e){var _0x5eb693=_0x17240e[_0x0788('0x42')]({'plain':!![]});_0x5eb693['paused']=0x0;_0x5eb693[_0x0788('0x43')]=0x0;_0x5eb693['loggedIn']=0x0;_0x5eb693[_0x0788('0x30')]=0x0;_0x5eb693['paused']=0x0;_0x5eb693['waiting']=0x0;if(_0x5b2bdc===_0x0788('0x24')){_0x5eb693[_0x0788('0x32')]=0x0;if(_0x43ca01[_0x0788('0x1a')][_0x0788('0x20')]===_0x0788('0x34')){_0x5eb693['pTalking']=0x0;_0x5eb693['originated']=0x0;}}_0x5eb693['agents']=[];var _0x4d539a=_[_0x0788('0x44')](_0x28a50a[_0x0788('0x41')],['id',_0x5eb693['id']]);if(_0x4d539a)_[_0x0788('0x45')](_0x5eb693,_[_0x0788('0x46')](_0x4d539a,_0x5ec0ed));if(_0x5b2bdc===_0x0788('0x24')){return _0x17240e['getAgents']({'attributes':['id','name',_0x0788('0x47')],'joinTableAttributes':[],'raw':!![]})[_0x0788('0x19')](function(_0x330421){return _0x17240e[_0x0788('0x48')]({'raw':!![]})[_0x0788('0x19')](function(_0x4316aa){for(var _0x27201b=0x0;_0x27201b<_0x330421[_0x0788('0x49')];_0x27201b++){var _0x347984=_['find'](_0x4316aa,['UserId',_0x330421[_0x27201b]['id']]);var _0x441aec={'id':_0x330421[_0x27201b]['id'],'name':_0x330421[_0x27201b][_0x0788('0x10')],'online':Boolean(_0x330421[_0x27201b][_0x0788('0x47')]),'paused':_0x347984?Boolean(_0x347984['paused']):![]};if(_0x441aec['online'])_0x5eb693['loggedInDb']++;if(_0x441aec[_0x0788('0x33')])_0x5eb693[_0x0788('0x33')]++;_0x5eb693[_0x0788('0x4a')][_0x0788('0x35')](_0x441aec);}return _0x5eb693;});});}else{var _0x2737d8=_0x0788('0x4b')+_[_0x0788('0x1d')](_0x5b2bdc)+_0x0788('0x1e');var _0x4bd0d9=_0x5b2bdc+_0x0788('0x4c');return db[_0x2737d8][_0x0788('0x4d')]({'where':{[_[_0x0788('0x1d')](_0x5b2bdc)+_0x0788('0x4e')]:_0x17240e['id']},'raw':!![]})['then'](function(_0x6aa745){return db[_0x0788('0x4b')]['findAll']({'attributes':['id','name','online',_0x4bd0d9],'where':{'id':_[_0x0788('0x4f')](_0x6aa745,'UserId'),'role':_0x0788('0x50')},'raw':!![]});})[_0x0788('0x19')](function(_0x127ab4){for(var _0x329508=0x0;_0x329508<_0x127ab4[_0x0788('0x49')];_0x329508++){var _0x359dd6={'id':_0x127ab4[_0x329508]['id'],'name':_0x127ab4[_0x329508][_0x0788('0x10')],'online':Boolean(_0x127ab4[_0x329508][_0x0788('0x47')]),'paused':Boolean(_0x127ab4[_0x329508][_0x4bd0d9])};if(_0x359dd6['online'])_0x5eb693['loggedInDb']++;if(_0x359dd6[_0x0788('0x33')])_0x5eb693[_0x0788('0x33')]++;_0x5eb693[_0x0788('0x4a')]['push'](_0x359dd6);}return _0x5eb693;});}});return Promise[_0x0788('0x51')](_0x16f053);});})[_0x0788('0x19')](function(_0x19aad6){_0x17d805[_0x0788('0x41')]=_0x19aad6;return _0x17d805;})[_0x0788('0x19')](respondWithFilteredResult(_0x4ed024,_0x461d9d))['catch'](handleError(_0x4ed024,null));};
\ No newline at end of file
index 76ad2fb..d3375f7 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(_0x20414b,_0x3ce4ab){var _0x4db231=function(_0x2efa04){while(--_0x2efa04){_0x20414b['push'](_0x20414b['shift']());}};_0x4db231(++_0x3ce4ab);}(_0xedd9,0xfc));var _0x9edd=function(_0xf66b84,_0x177bac){_0xf66b84=_0xf66b84-0x0;var _0x16f303=_0xedd9[_0xf66b84];return _0x16f303;};'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(_0x239a30,_0x47c987){var _0x32671e=function(_0x9c2369){while(--_0x9c2369){_0x239a30['push'](_0x239a30['shift']());}};_0x32671e(++_0x47c987);}(_0xedd9,0xfc));var _0x9edd=function(_0x810d09,_0x4adab4){_0x810d09=_0x810d09-0x0;var _0x417828=_0xedd9[_0x810d09];return _0x417828;};'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 5c5674b..2290801 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c63=['INTEGER','STRING','DATE','sequelize','exports'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x9c63,0x1a7));var _0x39c6=function(_0xb78b47,_0x185191){_0xb78b47=_0xb78b47-0x0;var _0x45f6af=_0x9c63[_0xb78b47];return _0x45f6af;};'use strict';var Sequelize=require(_0x39c6('0x0'));module[_0x39c6('0x1')]={'state':{'type':Sequelize[_0x39c6('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x39c6('0x3')]},'scheduledat':{'type':Sequelize[_0x39c6('0x4')]},'uniqueid':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x39c6('0x4')]},'responsetime':{'type':Sequelize[_0x39c6('0x4')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x39c6('0x3')]},'membername':{'type':Sequelize[_0x39c6('0x3')]}};
\ No newline at end of file
+var _0xee4a=['STRING','DATE','sequelize','INTEGER'];(function(_0x166d93,_0x301f09){var _0xba708=function(_0x349bf7){while(--_0x349bf7){_0x166d93['push'](_0x166d93['shift']());}};_0xba708(++_0x301f09);}(_0xee4a,0x9e));var _0xaee4=function(_0x5595c1,_0x1471b5){_0x5595c1=_0x5595c1-0x0;var _0x18f01=_0xee4a[_0x5595c1];return _0x18f01;};'use strict';var Sequelize=require(_0xaee4('0x0'));module['exports']={'state':{'type':Sequelize[_0xaee4('0x1')](0x2)},'statedesc':{'type':Sequelize[_0xaee4('0x2')]},'scheduledat':{'type':Sequelize[_0xaee4('0x3')]},'uniqueid':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0xaee4('0x3')]},'responsetime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0xaee4('0x1')],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xaee4('0x2')]},'membername':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 120953a..722b0fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba4e=['report_agent_preview','lodash','api','request-promise','path','rimraf','../../config/environment','./reportAgentPreview.attributes','define','ReportAgentPreview'];(function(_0x2c1e7a,_0x155f86){var _0xcacb4f=function(_0x2b2eb3){while(--_0x2b2eb3){_0x2c1e7a['push'](_0x2c1e7a['shift']());}};_0xcacb4f(++_0x155f86);}(_0xba4e,0x119));var _0xeba4=function(_0xb4d928,_0x579093){_0xb4d928=_0xb4d928-0x0;var _0x47166e=_0xba4e[_0xb4d928];return _0x47166e;};'use strict';var _=require(_0xeba4('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xeba4('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xeba4('0x2'));var fs=require('fs');var path=require(_0xeba4('0x3'));var rimraf=require(_0xeba4('0x4'));var config=require(_0xeba4('0x5'));var attributes=require(_0xeba4('0x6'));module['exports']=function(_0x5c0998,_0x3c7cf3){return _0x5c0998[_0xeba4('0x7')](_0xeba4('0x8'),attributes,{'tableName':_0xeba4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2330=['lodash','moment','bluebird','request-promise','path','../../config/environment','exports','define','report_agent_preview'];(function(_0x414e82,_0x2e58b5){var _0x140ba4=function(_0x4180f9){while(--_0x4180f9){_0x414e82['push'](_0x414e82['shift']());}};_0x140ba4(++_0x2e58b5);}(_0x2330,0x7e));var _0x0233=function(_0x14e393,_0x5ef7b3){_0x14e393=_0x14e393-0x0;var _0x5b5ffa=_0x2330[_0x14e393];return _0x5b5ffa;};'use strict';var _=require(_0x0233('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x0233('0x1'));var BPromise=require(_0x0233('0x2'));var rp=require(_0x0233('0x3'));var fs=require('fs');var path=require(_0x0233('0x4'));var rimraf=require('rimraf');var config=require(_0x0233('0x5'));var attributes=require('./reportAgentPreview.attributes');module[_0x0233('0x6')]=function(_0x4b8364,_0x4af916){return _0x4b8364[_0x0233('0x7')]('ReportAgentPreview',attributes,{'tableName':_0x0233('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2e8093d..d48a6ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfdc=['error','message','result','catch','CreateReportAgentPreview','raw','debug','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ReportAgentPreview,\x20%s,\x20%s','ReportAgentPreview,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xbfdc,0x1cf));var _0xcbfd=function(_0xa6694b,_0xa341dd){_0xa6694b=_0xa6694b-0x0;var _0x38b16f=_0xbfdc[_0xa6694b];return _0x38b16f;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xcbfd('0x0'));var rs=require(_0xcbfd('0x1'));var fs=require('fs');var Redis=require(_0xcbfd('0x2'));var db=require(_0xcbfd('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xcbfd('0x4'))(_0xcbfd('0x5'));var config=require(_0xcbfd('0x6'));var jayson=require(_0xcbfd('0x7'));var client=jayson[_0xcbfd('0x8')][_0xcbfd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x9db9d8,_0x2152b4,_0x53b120){return new BPromise(function(_0x48272e,_0x263036){return client[_0xcbfd('0xa')](_0x9db9d8,_0x53b120)[_0xcbfd('0xb')](function(_0xb420b9){logger[_0xcbfd('0xc')](_0xcbfd('0xd'),_0x2152b4,'request\x20sent');logger['debug'](_0xcbfd('0xe'),_0x2152b4,_0xcbfd('0xf'),JSON[_0xcbfd('0x10')](_0xb420b9));if(_0xb420b9['error']){if(_0xb420b9[_0xcbfd('0x11')]['code']===0x1f4){logger[_0xcbfd('0x11')]('ReportAgentPreview,\x20%s,\x20%s',_0x2152b4,_0xb420b9[_0xcbfd('0x11')][_0xcbfd('0x12')]);return _0x263036(_0xb420b9[_0xcbfd('0x11')][_0xcbfd('0x12')]);}logger[_0xcbfd('0x11')]('ReportAgentPreview,\x20%s,\x20%s',_0x2152b4,_0xb420b9[_0xcbfd('0x11')][_0xcbfd('0x12')]);return _0x48272e(_0xb420b9[_0xcbfd('0x11')][_0xcbfd('0x12')]);}else{logger[_0xcbfd('0xc')](_0xcbfd('0xd'),_0x2152b4,'request\x20sent');_0x48272e(_0xb420b9[_0xcbfd('0x13')]['message']);}})[_0xcbfd('0x14')](function(_0x303b9a){logger[_0xcbfd('0x11')](_0xcbfd('0xd'),_0x2152b4,_0x303b9a);_0x263036(_0x303b9a);});});}exports[_0xcbfd('0x15')]=function(_0x133f58){var _0x57c36c=this;return new Promise(function(_0x3e495a,_0x155e72){return db['ReportAgentPreview']['create'](_0x133f58['body'],{'raw':_0x133f58['options']?_0x133f58['options'][_0xcbfd('0x16')]===undefined?!![]:![]:!![]})[_0xcbfd('0xb')](function(_0x4075c1){logger[_0xcbfd('0xc')](_0xcbfd('0x15'),_0x133f58);logger[_0xcbfd('0x17')](_0xcbfd('0x15'),_0x133f58,JSON[_0xcbfd('0x10')](_0x4075c1));_0x3e495a(_0x4075c1);})[_0xcbfd('0x14')](function(_0x173e0c){logger[_0xcbfd('0x11')](_0xcbfd('0x15'),_0x173e0c[_0xcbfd('0x12')],_0x133f58);_0x155e72(_0x57c36c[_0xcbfd('0x11')](0x1f4,_0x173e0c[_0xcbfd('0x12')]));});});};
\ No newline at end of file
+var _0x340f=['moment','randomstring','ioredis','../../config/logger','rpc','../../config/environment','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','CreateReportAgentPreview','body','options','raw','then','lodash'];(function(_0x445c34,_0x2e884f){var _0x122dc4=function(_0x4f3378){while(--_0x4f3378){_0x445c34['push'](_0x445c34['shift']());}};_0x122dc4(++_0x2e884f);}(_0x340f,0x194));var _0xf340=function(_0x44da69,_0x5244ad){_0x44da69=_0x44da69-0x0;var _0x1f7ff4=_0x340f[_0x44da69];return _0x1f7ff4;};'use strict';var _=require(_0xf340('0x0'));var util=require('util');var moment=require(_0xf340('0x1'));var BPromise=require('bluebird');var rs=require(_0xf340('0x2'));var fs=require('fs');var Redis=require(_0xf340('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xf340('0x4'))(_0xf340('0x5'));var config=require(_0xf340('0x6'));var jayson=require(_0xf340('0x7'));var client=jayson[_0xf340('0x8')][_0xf340('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x334b5c,_0x407cc4,_0x1941ac){return new BPromise(function(_0x4ed288,_0x4cf5c7){return client[_0xf340('0xa')](_0x334b5c,_0x1941ac)['then'](function(_0xc4dee3){logger[_0xf340('0xb')](_0xf340('0xc'),_0x407cc4,_0xf340('0xd'));logger[_0xf340('0xe')](_0xf340('0xf'),_0x407cc4,_0xf340('0xd'),JSON[_0xf340('0x10')](_0xc4dee3));if(_0xc4dee3['error']){if(_0xc4dee3[_0xf340('0x11')][_0xf340('0x12')]===0x1f4){logger['error'](_0xf340('0xc'),_0x407cc4,_0xc4dee3[_0xf340('0x11')][_0xf340('0x13')]);return _0x4cf5c7(_0xc4dee3[_0xf340('0x11')][_0xf340('0x13')]);}logger[_0xf340('0x11')]('ReportAgentPreview,\x20%s,\x20%s',_0x407cc4,_0xc4dee3['error'][_0xf340('0x13')]);return _0x4ed288(_0xc4dee3[_0xf340('0x11')][_0xf340('0x13')]);}else{logger[_0xf340('0xb')](_0xf340('0xc'),_0x407cc4,'request\x20sent');_0x4ed288(_0xc4dee3[_0xf340('0x14')][_0xf340('0x13')]);}})[_0xf340('0x15')](function(_0x4d5f15){logger[_0xf340('0x11')]('ReportAgentPreview,\x20%s,\x20%s',_0x407cc4,_0x4d5f15);_0x4cf5c7(_0x4d5f15);});});}exports[_0xf340('0x16')]=function(_0x2780b1){var _0x16c131=this;return new Promise(function(_0x316820,_0x4ce5d4){return db['ReportAgentPreview']['create'](_0x2780b1[_0xf340('0x17')],{'raw':_0x2780b1['options']?_0x2780b1[_0xf340('0x18')][_0xf340('0x19')]===undefined?!![]:![]:!![]})[_0xf340('0x1a')](function(_0xef1da8){logger[_0xf340('0xb')]('CreateReportAgentPreview',_0x2780b1);logger[_0xf340('0xe')](_0xf340('0x16'),_0x2780b1,JSON[_0xf340('0x10')](_0xef1da8));_0x316820(_0xef1da8);})['catch'](function(_0x551ac8){logger[_0xf340('0x11')](_0xf340('0x16'),_0x551ac8[_0xf340('0x13')],_0x2780b1);_0x4ce5d4(_0x16c131[_0xf340('0x11')](0x1f4,_0x551ac8['message']));});});};
\ No newline at end of file
index 43e9201..e71e0ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa39b=['/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','queueNotify','mail','/mail/queues/:id','showMailQueues','post','showChatQueues','/fax/queues/:id/notify','/fax/queues/:id','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','sms','/whatsapp/queues/:id/notify','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','exports','multer','util','path','Router','../../components/auth/service','/voice/channels','voiceChannels','get','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','isAuthenticated','voiceQueues','/chat/queues','chatQueues','/mail/queues','mailQueues','/mail/accounts','/openchannel/queues','openchannelQueues','/sms/queues','smsQueues','/whatsapp/queues','/fax/queues','faxQueues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/redirect/:exten','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','outbound','/outbound/channels','outboundChannels','agents','/agents/:id/capacity','agentCapacity','/telephones','/trunks','trunks','/campaigns','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','/mail/queues/waitinginteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions'];(function(_0x46f1a6,_0xc7a582){var _0x38429a=function(_0x31adae){while(--_0x31adae){_0x46f1a6['push'](_0x46f1a6['shift']());}};_0x38429a(++_0xc7a582);}(_0xa39b,0x19e));var _0xba39=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xa39b[_0x40a045];return _0x1a687c;};'use strict';var multer=require(_0xba39('0x0'));var util=require(_0xba39('0x1'));var path=require(_0xba39('0x2'));var express=require('express');var router=express[_0xba39('0x3')]();var auth=require(_0xba39('0x4'));var controller=require('./rpc.controller');router['get'](_0xba39('0x5'),auth['isAuthenticated'](),controller[_0xba39('0x6')]);router[_0xba39('0x7')](_0xba39('0x8'),auth['isAuthenticated'](),controller[_0xba39('0x9')]);router['get'](_0xba39('0xa'),auth['isAuthenticated'](),controller[_0xba39('0xb')]);router['get']('/voice/queues',auth[_0xba39('0xc')](),controller[_0xba39('0xd')]);router['get'](_0xba39('0xe'),auth['isAuthenticated'](),controller[_0xba39('0xf')]);router[_0xba39('0x7')](_0xba39('0x10'),auth[_0xba39('0xc')](),controller[_0xba39('0x11')]);router[_0xba39('0x7')](_0xba39('0x12'),auth['isAuthenticated'](),controller['mailAccounts']);router[_0xba39('0x7')](_0xba39('0x13'),auth[_0xba39('0xc')](),controller[_0xba39('0x14')]);router['get'](_0xba39('0x15'),auth[_0xba39('0xc')](),controller[_0xba39('0x16')]);router[_0xba39('0x7')](_0xba39('0x17'),auth[_0xba39('0xc')](),controller['whatsappQueues']);router[_0xba39('0x7')](_0xba39('0x18'),auth[_0xba39('0xc')](),controller[_0xba39('0x19')]);router[_0xba39('0x7')](_0xba39('0x1a'),auth[_0xba39('0xc')](),controller[_0xba39('0x1b')]);router[_0xba39('0x7')](_0xba39('0x1c'),auth[_0xba39('0xc')](),controller['voiceQueuesChannels']);router[_0xba39('0x7')](_0xba39('0x1d'),auth[_0xba39('0xc')](),controller[_0xba39('0x1e')]);router['get']('/voice/queues/channels/:uniqueid/hangup',auth[_0xba39('0xc')](),controller['voiceQueuesChannelHangup']);router['get'](_0xba39('0x1f'),auth['isAuthenticated'](),controller['voiceQueuesChannelRedirect']);router['get'](_0xba39('0x20'),auth['isAuthenticated'](),controller[_0xba39('0x21')]);router[_0xba39('0x22')](_0xba39('0x20'),auth[_0xba39('0xc')](),controller[_0xba39('0x23')]);router[_0xba39('0x7')]('/outbound',auth['isAuthenticated'](),controller[_0xba39('0x24')]);router[_0xba39('0x7')](_0xba39('0x25'),auth[_0xba39('0xc')](),controller[_0xba39('0x26')]);router[_0xba39('0x7')]('/agents',auth[_0xba39('0xc')](),controller[_0xba39('0x27')]);router[_0xba39('0x22')](_0xba39('0x28'),auth[_0xba39('0xc')](),controller[_0xba39('0x29')]);router[_0xba39('0x7')](_0xba39('0x2a'),auth[_0xba39('0xc')](),controller['telephones']);router[_0xba39('0x7')](_0xba39('0x2b'),auth[_0xba39('0xc')](),controller[_0xba39('0x2c')]);router[_0xba39('0x7')](_0xba39('0x2d'),auth[_0xba39('0xc')](),controller[_0xba39('0x2e')]);router[_0xba39('0x7')](_0xba39('0x2f'),auth[_0xba39('0xc')](),controller[_0xba39('0x30')]);router['get'](_0xba39('0x31'),auth[_0xba39('0xc')](),controller['chatQueuesWaitingInteractions']);router[_0xba39('0x7')](_0xba39('0x32'),auth['isAuthenticated'](),controller['mailQueuesWaitingInteractions']);router[_0xba39('0x7')](_0xba39('0x33'),auth[_0xba39('0xc')](),controller[_0xba39('0x34')]);router[_0xba39('0x7')]('/openchannel/queues/:id/waitinginteractions',auth[_0xba39('0xc')](),controller[_0xba39('0x35')]);router[_0xba39('0x7')](_0xba39('0x36'),auth[_0xba39('0xc')](),controller[_0xba39('0x37')]);router['get']('/whatsapp/queues/waitinginteractions',auth[_0xba39('0xc')](),controller[_0xba39('0x38')]);router[_0xba39('0x7')](_0xba39('0x39'),auth[_0xba39('0xc')](),controller[_0xba39('0x3a')]);router['post']('/mail/queues/:id/notify',auth[_0xba39('0xc')](),controller[_0xba39('0x3b')](_0xba39('0x3c')));router[_0xba39('0x7')](_0xba39('0x3d'),auth[_0xba39('0xc')](),controller[_0xba39('0x3e')]);router[_0xba39('0x3f')]('/chat/queues/:id/notify',auth[_0xba39('0xc')](),controller['queueNotify']('chat'));router[_0xba39('0x7')]('/chat/queues/:id',auth['isAuthenticated'](),controller[_0xba39('0x40')]);router['post'](_0xba39('0x41'),auth['isAuthenticated'](),controller[_0xba39('0x3b')]('fax'));router['get'](_0xba39('0x42'),auth[_0xba39('0xc')](),controller['showFaxQueues']);router[_0xba39('0x3f')](_0xba39('0x43'),auth[_0xba39('0xc')](),controller[_0xba39('0x3b')](_0xba39('0x44')));router[_0xba39('0x7')](_0xba39('0x45'),auth[_0xba39('0xc')](),controller[_0xba39('0x46')]);router[_0xba39('0x3f')]('/sms/queues/:id/notify',auth[_0xba39('0xc')](),controller[_0xba39('0x3b')](_0xba39('0x47')));router[_0xba39('0x3f')](_0xba39('0x48'),auth[_0xba39('0xc')](),controller[_0xba39('0x3b')]('whatsapp'));router[_0xba39('0x7')](_0xba39('0x49'),auth[_0xba39('0xc')](),controller[_0xba39('0x4a')]);router[_0xba39('0x7')](_0xba39('0x4b'),auth[_0xba39('0xc')](),controller[_0xba39('0x4c')]);router[_0xba39('0x3f')]('/agents/:id/notify',auth[_0xba39('0xc')](),controller['agentNotify']);module[_0xba39('0x4d')]=router;
\ No newline at end of file
+var _0x69d3=['/whatsapp/queues','/fax/queues','/voice/queues/preview/:id','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','updateVoiceQueue','/outbound','outbound','outboundChannels','/agents','agents','put','agentCapacity','/telephones','telephones','/campaigns','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','post','/mail/queues/:id/notify','queueNotify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','fax','showFaxQueues','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','/sms/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','exports','multer','util','path','Router','../../components/auth/service','/voice/channels','get','/voice/channels/:uniqueid/mixmonitor','isAuthenticated','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','voiceQueues','/chat/queues','/mail/queues','mailQueues','/mail/accounts','/openchannel/queues','openchannelQueues'];(function(_0x35b4c6,_0x5e57a2){var _0xa45f4c=function(_0x347b3e){while(--_0x347b3e){_0x35b4c6['push'](_0x35b4c6['shift']());}};_0xa45f4c(++_0x5e57a2);}(_0x69d3,0xda));var _0x369d=function(_0x38071c,_0x263bff){_0x38071c=_0x38071c-0x0;var _0x2ee64a=_0x69d3[_0x38071c];return _0x2ee64a;};'use strict';var multer=require(_0x369d('0x0'));var util=require(_0x369d('0x1'));var path=require(_0x369d('0x2'));var express=require('express');var router=express[_0x369d('0x3')]();var auth=require(_0x369d('0x4'));var controller=require('./rpc.controller');router['get'](_0x369d('0x5'),auth['isAuthenticated'](),controller['voiceChannels']);router[_0x369d('0x6')](_0x369d('0x7'),auth[_0x369d('0x8')](),controller[_0x369d('0x9')]);router[_0x369d('0x6')](_0x369d('0xa'),auth[_0x369d('0x8')](),controller[_0x369d('0xb')]);router[_0x369d('0x6')]('/voice/queues',auth['isAuthenticated'](),controller[_0x369d('0xc')]);router[_0x369d('0x6')](_0x369d('0xd'),auth[_0x369d('0x8')](),controller['chatQueues']);router['get'](_0x369d('0xe'),auth[_0x369d('0x8')](),controller[_0x369d('0xf')]);router[_0x369d('0x6')](_0x369d('0x10'),auth[_0x369d('0x8')](),controller['mailAccounts']);router[_0x369d('0x6')](_0x369d('0x11'),auth[_0x369d('0x8')](),controller[_0x369d('0x12')]);router[_0x369d('0x6')]('/sms/queues',auth['isAuthenticated'](),controller['smsQueues']);router[_0x369d('0x6')](_0x369d('0x13'),auth[_0x369d('0x8')](),controller['whatsappQueues']);router[_0x369d('0x6')](_0x369d('0x14'),auth[_0x369d('0x8')](),controller['faxQueues']);router[_0x369d('0x6')](_0x369d('0x15'),auth['isAuthenticated'](),controller['voiceQueuesPreview']);router['get'](_0x369d('0x16'),auth[_0x369d('0x8')](),controller[_0x369d('0x17')]);router['get'](_0x369d('0x18'),auth[_0x369d('0x8')](),controller[_0x369d('0x19')]);router[_0x369d('0x6')](_0x369d('0x1a'),auth['isAuthenticated'](),controller[_0x369d('0x1b')]);router[_0x369d('0x6')](_0x369d('0x1c'),auth[_0x369d('0x8')](),controller[_0x369d('0x1d')]);router[_0x369d('0x6')](_0x369d('0x1e'),auth[_0x369d('0x8')](),controller['showVoiceQueues']);router['put'](_0x369d('0x1e'),auth[_0x369d('0x8')](),controller[_0x369d('0x1f')]);router[_0x369d('0x6')](_0x369d('0x20'),auth[_0x369d('0x8')](),controller[_0x369d('0x21')]);router['get']('/outbound/channels',auth[_0x369d('0x8')](),controller[_0x369d('0x22')]);router[_0x369d('0x6')](_0x369d('0x23'),auth[_0x369d('0x8')](),controller[_0x369d('0x24')]);router[_0x369d('0x25')]('/agents/:id/capacity',auth[_0x369d('0x8')](),controller[_0x369d('0x26')]);router[_0x369d('0x6')](_0x369d('0x27'),auth[_0x369d('0x8')](),controller[_0x369d('0x28')]);router[_0x369d('0x6')]('/trunks',auth[_0x369d('0x8')](),controller['trunks']);router['get'](_0x369d('0x29'),auth[_0x369d('0x8')](),controller['campaigns']);router[_0x369d('0x6')]('/fax/accounts',auth[_0x369d('0x8')](),controller[_0x369d('0x2a')]);router[_0x369d('0x6')](_0x369d('0x2b'),auth[_0x369d('0x8')](),controller[_0x369d('0x2c')]);router[_0x369d('0x6')]('/mail/queues/waitinginteractions',auth[_0x369d('0x8')](),controller[_0x369d('0x2d')]);router[_0x369d('0x6')](_0x369d('0x2e'),auth[_0x369d('0x8')](),controller[_0x369d('0x2f')]);router[_0x369d('0x6')](_0x369d('0x30'),auth['isAuthenticated'](),controller[_0x369d('0x31')]);router[_0x369d('0x6')](_0x369d('0x32'),auth[_0x369d('0x8')](),controller[_0x369d('0x33')]);router['get'](_0x369d('0x34'),auth[_0x369d('0x8')](),controller[_0x369d('0x35')]);router[_0x369d('0x6')](_0x369d('0x36'),auth[_0x369d('0x8')](),controller['faxQueuesWaitingInteractions']);router[_0x369d('0x37')](_0x369d('0x38'),auth[_0x369d('0x8')](),controller[_0x369d('0x39')](_0x369d('0x3a')));router[_0x369d('0x6')](_0x369d('0x3b'),auth[_0x369d('0x8')](),controller[_0x369d('0x3c')]);router[_0x369d('0x37')](_0x369d('0x3d'),auth[_0x369d('0x8')](),controller[_0x369d('0x39')](_0x369d('0x3e')));router[_0x369d('0x6')](_0x369d('0x3f'),auth[_0x369d('0x8')](),controller[_0x369d('0x40')]);router[_0x369d('0x37')](_0x369d('0x41'),auth[_0x369d('0x8')](),controller[_0x369d('0x39')](_0x369d('0x42')));router[_0x369d('0x6')]('/fax/queues/:id',auth['isAuthenticated'](),controller[_0x369d('0x43')]);router[_0x369d('0x37')](_0x369d('0x44'),auth[_0x369d('0x8')](),controller[_0x369d('0x39')](_0x369d('0x45')));router[_0x369d('0x6')](_0x369d('0x46'),auth[_0x369d('0x8')](),controller['showOpenchannelQueues']);router[_0x369d('0x37')](_0x369d('0x47'),auth[_0x369d('0x8')](),controller[_0x369d('0x39')](_0x369d('0x48')));router[_0x369d('0x37')](_0x369d('0x49'),auth[_0x369d('0x8')](),controller['queueNotify']('whatsapp'));router[_0x369d('0x6')](_0x369d('0x4a'),auth[_0x369d('0x8')](),controller['showSmsQueues']);router['get']('/whatsapp/queues/:id',auth[_0x369d('0x8')](),controller[_0x369d('0x4b')]);router['post'](_0x369d('0x4c'),auth[_0x369d('0x8')](),controller[_0x369d('0x4d')]);module[_0x369d('0x4e')]=router;
\ No newline at end of file
index ef71ace..6abbd54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ef6=['name','send','isNil','find','rows','VoiceChannels','voiceChannelMixMonitor','VoiceChannelMixMonitor','query','params','VoiceChannelStopMixMonitor','merge','voiceQueues','VoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','OutboundChannels','agents','Agents','agentCapacity','interaction','user','hasOwnProperty','MemberReport','findAll','format','YYYY-MM-DD\x20HH:mm:ss','length','updateAttributes','findOrCreate','interface','SIP/%s','INTERACTION','agent','internal','AgentCapacity','telephones','trunks','Trunks','campaigns','chatQueues','ChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','openchannelQueues','OpenchannelQueues','showOpenchannelQueues','smsQueues','SmsQueues','showSmsQueues','whatsappQueues','showWhatsappQueues','WhatsappQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','queue_id','value','filter','indexOf','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Queue','findOne','\x20Queue\x20not\x20found','Message','messageId','Interaction','Account','\x20Message\x20not\x20found','update','MessageId','InteractionId','From','QueueId','create','queueTransferTimeout','*,*,*,*','agentNotify','channel','Channel\x20field\x20is\x20mandatory','Website','User','Agent\x20not\x20found','TransferReport','agentTransferTimeout','bluebird','moment','lodash','util','../../mysqldb','../../config/logger','api','client','http','request','then','error','code','message','catch','status','sendStatus','stack'];(function(_0x21e59d,_0x3dc1bc){var _0x2121c7=function(_0x1ea226){while(--_0x1ea226){_0x21e59d['push'](_0x21e59d['shift']());}};_0x2121c7(++_0x3dc1bc);}(_0x8ef6,0xf2));var _0x68ef=function(_0x1e4b76,_0x50c7c3){_0x1e4b76=_0x1e4b76-0x0;var _0x465e18=_0x8ef6[_0x1e4b76];return _0x465e18;};'use strict';var BPromise=require(_0x68ef('0x0'));var moment=require(_0x68ef('0x1'));var _=require(_0x68ef('0x2'));var util=require(_0x68ef('0x3'));var db=require(_0x68ef('0x4'))['db'];var logger=require(_0x68ef('0x5'))(_0x68ef('0x6'));var jayson=require('jayson/promise');var amiClient=jayson[_0x68ef('0x7')][_0x68ef('0x8')]({'port':0x232a});var mailClient=jayson[_0x68ef('0x7')][_0x68ef('0x8')]({'port':0x232b});var routingClient=jayson['client']['http']({'port':0x232c});function respondWithRpcPromise(_0x3c2ff3,_0x4740e8,_0x2de776){return new BPromise(function(_0x4eb5eb,_0x228967){var _0x31007e=_0x2de776?_0x2de776:amiClient;return _0x31007e[_0x68ef('0x9')](_0x3c2ff3,_0x4740e8)[_0x68ef('0xa')](function(_0x112b18){if(_0x112b18[_0x68ef('0xb')]){if(_0x112b18[_0x68ef('0xb')][_0x68ef('0xc')]===0x1f4){return _0x228967(_0x112b18[_0x68ef('0xb')][_0x68ef('0xd')]);}return _0x4eb5eb(_0x112b18[_0x68ef('0xb')][_0x68ef('0xd')]);}else{_0x4eb5eb(_0x112b18['result']);}})[_0x68ef('0xe')](function(_0x46356f){_0x228967(_0x46356f);});});}function respondWithResult(_0x1e117a,_0x454ef4){_0x454ef4=_0x454ef4||0xc8;return function(_0x40f253){if(_0x40f253){return _0x1e117a[_0x68ef('0xf')](_0x454ef4)['json'](_0x40f253);}return _0x1e117a[_0x68ef('0x10')](0x194);};}function handleError(_0xc50cce,_0x2657c5){_0x2657c5=_0x2657c5||0x1f4;return function(_0x47fbb5){logger[_0x68ef('0xb')](_0x47fbb5[_0x68ef('0x11')]);if(_0x47fbb5[_0x68ef('0x12')]){delete _0x47fbb5['name'];}_0xc50cce[_0x68ef('0xf')](_0x2657c5)[_0x68ef('0x13')](_0x47fbb5);};}function findById(_0x3d1e90){return function(_0x3780a4){if(!_['isNil'](_0x3d1e90)&&!_[_0x68ef('0x14')](_0x3780a4)&&!_['isNil'](_0x3780a4['rows'])){return _[_0x68ef('0x15')](_0x3780a4[_0x68ef('0x16')],function(_0x4ade0d){return _0x4ade0d['id']==_0x3d1e90;});}return null;};}exports['voiceChannels']=function(_0x3c4c1f,_0x2cd92c){return respondWithRpcPromise(_0x68ef('0x17'),_0x3c4c1f['query'])[_0x68ef('0xa')](respondWithResult(_0x2cd92c,null))[_0x68ef('0xe')](handleError(_0x2cd92c,null));};exports[_0x68ef('0x18')]=function(_0x5b246b,_0x3c46d4){return respondWithRpcPromise(_0x68ef('0x19'),_['merge'](_0x5b246b[_0x68ef('0x1a')],_0x5b246b[_0x68ef('0x1b')]))[_0x68ef('0xa')](respondWithResult(_0x3c46d4,null))['catch'](handleError(_0x3c46d4,null));};exports['voiceChannelStopMixMonitor']=function(_0x59bebc,_0x26018d){return respondWithRpcPromise(_0x68ef('0x1c'),_[_0x68ef('0x1d')](_0x59bebc[_0x68ef('0x1a')],_0x59bebc[_0x68ef('0x1b')]))[_0x68ef('0xa')](respondWithResult(_0x26018d,null))[_0x68ef('0xe')](handleError(_0x26018d,null));};exports[_0x68ef('0x1e')]=function(_0x65fd09,_0x13280b){return respondWithRpcPromise('VoiceQueues',_0x65fd09[_0x68ef('0x1a')])['then'](respondWithResult(_0x13280b,null))['catch'](handleError(_0x13280b,null));};exports['showVoiceQueues']=function(_0x1a7ce1,_0x268f32){return respondWithRpcPromise(_0x68ef('0x1f'),_0x1a7ce1[_0x68ef('0x1a')])['then'](findById(_0x1a7ce1['params']['id']))[_0x68ef('0xa')](respondWithResult(_0x268f32,null))[_0x68ef('0xe')](handleError(_0x268f32,null));};exports[_0x68ef('0x20')]=function(_0x263b30,_0x22ef25){return respondWithRpcPromise(_0x68ef('0x21'),_[_0x68ef('0x1d')](_0x263b30[_0x68ef('0x22')],_0x263b30['params']))[_0x68ef('0xa')](respondWithResult(_0x22ef25,null))[_0x68ef('0xe')](handleError(_0x22ef25,null));};exports[_0x68ef('0x23')]=function(_0x4c25aa,_0x370a8f){return respondWithRpcPromise('VoiceQueuesPreview',_[_0x68ef('0x1d')](_0x4c25aa[_0x68ef('0x1a')],_0x4c25aa['params']))['then'](respondWithResult(_0x370a8f,null))[_0x68ef('0xe')](handleError(_0x370a8f,null));};exports[_0x68ef('0x24')]=function(_0x4b8fc8,_0xf58fa1){return respondWithRpcPromise(_0x68ef('0x25'),_0x4b8fc8[_0x68ef('0x1a')])[_0x68ef('0xa')](respondWithResult(_0xf58fa1,null))['catch'](handleError(_0xf58fa1,null));};exports[_0x68ef('0x26')]=function(_0x1d69ac,_0x5f137b){return respondWithRpcPromise(_0x68ef('0x27'),_['merge'](_0x1d69ac[_0x68ef('0x1a')],_0x1d69ac[_0x68ef('0x1b')]))['then'](respondWithResult(_0x5f137b,null))[_0x68ef('0xe')](handleError(_0x5f137b,null));};exports['voiceQueuesChannelHangup']=function(_0x38c2f8,_0x575f43){return respondWithRpcPromise(_0x68ef('0x28'),_[_0x68ef('0x1d')](_0x38c2f8[_0x68ef('0x1a')],_0x38c2f8['params']))[_0x68ef('0xa')](respondWithResult(_0x575f43,null))['catch'](handleError(_0x575f43,null));};exports[_0x68ef('0x29')]=function(_0x4c9506,_0x474ffa){return respondWithRpcPromise(_0x68ef('0x2a'),_[_0x68ef('0x1d')](_0x4c9506[_0x68ef('0x1a')],_0x4c9506[_0x68ef('0x1b')]))[_0x68ef('0xa')](respondWithResult(_0x474ffa,null))['catch'](handleError(_0x474ffa,null));};exports[_0x68ef('0x2b')]=function(_0x15a6ab,_0x32074a){return respondWithRpcPromise('Outbound',_0x15a6ab[_0x68ef('0x1a')])[_0x68ef('0xa')](respondWithResult(_0x32074a,null))[_0x68ef('0xe')](handleError(_0x32074a,null));};exports['outboundChannels']=function(_0x49f260,_0x14f0fc){return respondWithRpcPromise(_0x68ef('0x2c'),_0x49f260[_0x68ef('0x1a')])[_0x68ef('0xa')](respondWithResult(_0x14f0fc,null))[_0x68ef('0xe')](handleError(_0x14f0fc,null));};exports[_0x68ef('0x2d')]=function(_0x41ffe0,_0x5b1246){var _0xaf7df1;return respondWithRpcPromise(_0x68ef('0x2e'),_0x41ffe0[_0x68ef('0x1a')])[_0x68ef('0xa')](function(_0x492b74){_0xaf7df1=_0x492b74;return respondWithRpcPromise(_0x68ef('0x2e'),_0x41ffe0[_0x68ef('0x1a')],routingClient);})[_0x68ef('0xa')](function(_0x410c10){return _[_0x68ef('0x1d')]({},_0x410c10,_0xaf7df1);})[_0x68ef('0xa')](respondWithResult(_0x5b1246,null))['catch'](handleError(_0x5b1246,null));};exports[_0x68ef('0x2f')]=function(_0x3f7699,_0xf5010c){if(_0x3f7699[_0x68ef('0x22')]&&_0x3f7699[_0x68ef('0x22')][_0x68ef('0x30')]&&_0x3f7699[_0x68ef('0x31')]&&_0x3f7699[_0x68ef('0x31')][_0x68ef('0x12')]){for(var _0x531096 in _0x3f7699[_0x68ef('0x22')][_0x68ef('0x30')]){if(_0x3f7699[_0x68ef('0x22')][_0x68ef('0x30')][_0x68ef('0x32')](_0x531096)){db[_0x68ef('0x33')][_0x68ef('0x34')]({'where':{'channel':_0x531096,'membername':_0x3f7699['user'][_0x68ef('0x12')],'type':'INTERACTION','exitAt':null,'uniqueid':_0x3f7699[_0x68ef('0x22')][_0x68ef('0x30')][_0x531096]&&_0x3f7699[_0x68ef('0x22')][_0x68ef('0x30')][_0x531096]['length']?{'$notIn':_0x3f7699[_0x68ef('0x22')]['interaction'][_0x531096]}:{'$ne':null}}})[_0x68ef('0xa')](function(_0x499423){var _0x227e36=moment()[_0x68ef('0x35')](_0x68ef('0x36'));for(var _0x5c4a66=0x0,_0x59b148=_0x499423[_0x68ef('0x37')];_0x5c4a66<_0x59b148;_0x5c4a66+=0x1){_0x499423[_0x5c4a66][_0x68ef('0x38')]({'exitAt':_0x227e36});}});for(var _0x58d72a=0x0;_0x58d72a<_0x3f7699['body']['interaction'][_0x531096][_0x68ef('0x37')];_0x58d72a+=0x1){db[_0x68ef('0x33')][_0x68ef('0x39')]({'where':{'channel':_0x531096,'membername':_0x3f7699[_0x68ef('0x31')][_0x68ef('0x12')],'type':'INTERACTION','uniqueid':_0x3f7699['body'][_0x68ef('0x30')][_0x531096][_0x58d72a],'exitAt':null},'defaults':{'channel':_0x531096,'membername':_0x3f7699[_0x68ef('0x31')][_0x68ef('0x12')],'interface':_[_0x68ef('0x14')](_0x3f7699['user'][_0x68ef('0x3a')])?util[_0x68ef('0x35')](_0x68ef('0x3b'),_0x3f7699[_0x68ef('0x31')]['name']):_0x3f7699['user'][_0x68ef('0x3a')],'type':_0x68ef('0x3c'),'enterAt':moment()['format'](_0x68ef('0x36')),'role':_0x68ef('0x3d'),'internal':_0x3f7699[_0x68ef('0x31')][_0x68ef('0x3e')],'uniqueid':_0x3f7699[_0x68ef('0x22')]['interaction'][_0x531096][_0x58d72a]}});}}}}return respondWithRpcPromise(_0x68ef('0x3f'),{'id':_0x3f7699[_0x68ef('0x1b')]['id'],'capacity':_0x3f7699[_0x68ef('0x22')]['capacity']},routingClient)[_0x68ef('0xa')](respondWithResult(_0xf5010c,null))[_0x68ef('0xe')](handleError(_0xf5010c,null));};exports[_0x68ef('0x40')]=function(_0x50ef1f,_0x7dce90){return respondWithRpcPromise('Telephones',_0x50ef1f['query'])[_0x68ef('0xa')](respondWithResult(_0x7dce90,null))['catch'](handleError(_0x7dce90,null));};exports[_0x68ef('0x41')]=function(_0xb33afd,_0x53ebd){return respondWithRpcPromise(_0x68ef('0x42'),_0xb33afd[_0x68ef('0x1a')])[_0x68ef('0xa')](respondWithResult(_0x53ebd,null))[_0x68ef('0xe')](handleError(_0x53ebd,null));};exports[_0x68ef('0x43')]=function(_0x2b35f4,_0x247915){return respondWithRpcPromise('Campaigns',_0x2b35f4['query'])[_0x68ef('0xa')](respondWithResult(_0x247915,null))[_0x68ef('0xe')](handleError(_0x247915,null));};exports[_0x68ef('0x44')]=function(_0xdc83f4,_0x82df12){return respondWithRpcPromise(_0x68ef('0x45'),_0xdc83f4[_0x68ef('0x1a')],routingClient)[_0x68ef('0xa')](respondWithResult(_0x82df12,null))[_0x68ef('0xe')](handleError(_0x82df12,null));};exports['showChatQueues']=function(_0x5685bb,_0x42a4b2){return respondWithRpcPromise('ChatQueues',_0x5685bb[_0x68ef('0x1a')],routingClient)['then'](findById(_0x5685bb[_0x68ef('0x1b')]['id']))[_0x68ef('0xa')](respondWithResult(_0x42a4b2,null))['catch'](handleError(_0x42a4b2,null));};exports[_0x68ef('0x46')]=function(_0x4e097e,_0x407c6d){return respondWithRpcPromise(_0x68ef('0x47'),_0x4e097e[_0x68ef('0x1a')],routingClient)[_0x68ef('0xa')](respondWithResult(_0x407c6d,null))[_0x68ef('0xe')](handleError(_0x407c6d,null));};exports[_0x68ef('0x48')]=function(_0x5c347c,_0x1cdaef){return respondWithRpcPromise(_0x68ef('0x47'),_0x5c347c[_0x68ef('0x1a')],routingClient)[_0x68ef('0xa')](findById(_0x5c347c[_0x68ef('0x1b')]['id']))[_0x68ef('0xa')](respondWithResult(_0x1cdaef,null))['catch'](handleError(_0x1cdaef,null));};exports[_0x68ef('0x49')]=function(_0x42d2a3,_0x4886af){return respondWithRpcPromise(_0x68ef('0x4a'),_0x42d2a3[_0x68ef('0x1a')],mailClient)[_0x68ef('0xa')](respondWithResult(_0x4886af,null))['catch'](handleError(_0x4886af,null));};exports[_0x68ef('0x4b')]=function(_0x49d197,_0x5412ea){return respondWithRpcPromise(_0x68ef('0x4c'),_0x49d197['query'],routingClient)[_0x68ef('0xa')](respondWithResult(_0x5412ea,null))['catch'](handleError(_0x5412ea,null));};exports[_0x68ef('0x4d')]=function(_0x9e8554,_0x304405){return respondWithRpcPromise(_0x68ef('0x4c'),_0x9e8554[_0x68ef('0x1a')],routingClient)[_0x68ef('0xa')](findById(_0x9e8554['params']['id']))[_0x68ef('0xa')](respondWithResult(_0x304405,null))['catch'](handleError(_0x304405,null));};exports[_0x68ef('0x4e')]=function(_0x4b0c3e,_0x2f97c5){return respondWithRpcPromise(_0x68ef('0x4f'),_0x4b0c3e[_0x68ef('0x1a')],routingClient)[_0x68ef('0xa')](respondWithResult(_0x2f97c5,null))[_0x68ef('0xe')](handleError(_0x2f97c5,null));};exports[_0x68ef('0x50')]=function(_0x1be626,_0x52d29a){return respondWithRpcPromise(_0x68ef('0x4f'),_0x1be626[_0x68ef('0x1a')],routingClient)[_0x68ef('0xa')](findById(_0x1be626[_0x68ef('0x1b')]['id']))[_0x68ef('0xa')](respondWithResult(_0x52d29a,null))['catch'](handleError(_0x52d29a,null));};exports[_0x68ef('0x51')]=function(_0x561e8d,_0x1ed172){return respondWithRpcPromise('WhatsappQueues',_0x561e8d['query'],routingClient)[_0x68ef('0xa')](respondWithResult(_0x1ed172,null))[_0x68ef('0xe')](handleError(_0x1ed172,null));};exports[_0x68ef('0x52')]=function(_0x21b2ce,_0x51f905){return respondWithRpcPromise(_0x68ef('0x53'),_0x21b2ce['query'],routingClient)[_0x68ef('0xa')](findById(_0x21b2ce[_0x68ef('0x1b')]['id']))[_0x68ef('0xa')](respondWithResult(_0x51f905,null))['catch'](handleError(_0x51f905,null));};exports['faxQueues']=function(_0x3e74d2,_0x1092f8){return respondWithRpcPromise(_0x68ef('0x54'),_0x3e74d2[_0x68ef('0x1a')],routingClient)['then'](respondWithResult(_0x1092f8,null))[_0x68ef('0xe')](handleError(_0x1092f8,null));};exports[_0x68ef('0x55')]=function(_0x19c20f,_0x21b104){return respondWithRpcPromise('FaxQueues',_0x19c20f[_0x68ef('0x1a')],routingClient)['then'](findById(_0x19c20f[_0x68ef('0x1b')]['id']))[_0x68ef('0xa')](respondWithResult(_0x21b104,null))[_0x68ef('0xe')](handleError(_0x21b104,null));};exports[_0x68ef('0x56')]=function(_0xed16d1,_0x52cb2a){return respondWithRpcPromise(_0x68ef('0x57'),_0xed16d1[_0x68ef('0x1a')])[_0x68ef('0xa')](respondWithResult(_0x52cb2a,null))['catch'](handleError(_0x52cb2a,null));};exports[_0x68ef('0x58')]=function(_0x4de108,_0x69b1c){return respondWithRpcPromise('ChatQueuesWaitingInteractions',_0x4de108['query'],routingClient)[_0x68ef('0xa')](respondWithResult(_0x69b1c,null))[_0x68ef('0xe')](handleError(_0x69b1c,null));};exports[_0x68ef('0x59')]=function(_0x405971,_0x501004){return respondWithRpcPromise(_0x68ef('0x5a'),_0x405971[_0x68ef('0x1a')],routingClient)[_0x68ef('0xa')](respondWithResult(_0x501004,null))['catch'](handleError(_0x501004,null));};exports[_0x68ef('0x5b')]=function(_0x2db826,_0xea2a81){return respondWithRpcPromise(_0x68ef('0x5c'),_0x2db826[_0x68ef('0x1a')],routingClient)[_0x68ef('0xa')](respondWithResult(_0xea2a81,null))[_0x68ef('0xe')](handleError(_0xea2a81,null));};exports[_0x68ef('0x5d')]=function(_0x156ce3,_0x11feff){return respondWithRpcPromise(_0x68ef('0x5c'),_0x156ce3[_0x68ef('0x1a')],routingClient)['then'](function(_0x15378c){if(_0x156ce3[_0x68ef('0x1a')]['type']!==undefined){var _0x513c69=_(_0x15378c[_0x68ef('0x16')])['filter']([_0x156ce3[_0x68ef('0x1a')][_0x68ef('0x5e')],_0x156ce3['params']['id']])['map'](_0x68ef('0x5f'))['uniq']()[_0x68ef('0x60')]();return _0x15378c['rows'][_0x68ef('0x61')](function(_0x4f425f){return _0x513c69[_0x68ef('0x62')](_0x4f425f[_0x68ef('0x5f')])>-0x1;});}else{return _0x15378c['rows'][_0x68ef('0x61')](function(_0x357be7){return _0x357be7[_0x68ef('0x5f')]===parseInt(_0x156ce3[_0x68ef('0x1b')]['id']);});}})['then'](respondWithResult(_0x11feff,null))[_0x68ef('0xe')](handleError(_0x11feff,null));};exports[_0x68ef('0x63')]=function(_0x5b2e89,_0x3bb3b6){return respondWithRpcPromise(_0x68ef('0x64'),_0x5b2e89[_0x68ef('0x1a')],routingClient)['then'](respondWithResult(_0x3bb3b6,null))[_0x68ef('0xe')](handleError(_0x3bb3b6,null));};exports['whatsappQueuesWaitingInteractions']=function(_0xe6bf05,_0x36c109){return respondWithRpcPromise('WhatsappQueuesWaitingInteractions',_0xe6bf05['query'],routingClient)['then'](respondWithResult(_0x36c109,null))['catch'](handleError(_0x36c109,null));};exports[_0x68ef('0x65')]=function(_0x28ad22,_0x1217f9){return respondWithRpcPromise(_0x68ef('0x66'),_0x28ad22[_0x68ef('0x1a')],routingClient)[_0x68ef('0xa')](respondWithResult(_0x1217f9,null))[_0x68ef('0xe')](handleError(_0x1217f9,null));};exports[_0x68ef('0x67')]=function(_0x24ba34){return function(_0x3ae3e9,_0x17892c){var _0x108223,_0x717d7b;var _0x4bd5c3=_[_0x68ef('0x68')](_0x24ba34);var _0x556dfc=_0x24ba34===_0x68ef('0x69')?'Website':'Account';return db[_0x4bd5c3+_0x68ef('0x6a')][_0x68ef('0x6b')]({'raw':!![],'where':{'id':_0x3ae3e9[_0x68ef('0x1b')]['id']}})[_0x68ef('0xa')](function(_0x518c9a){if(_['isNil'](_0x518c9a)){throw new Error(_0x4bd5c3+_0x68ef('0x6c'));}_0x108223=_0x518c9a;return db[_0x4bd5c3+_0x68ef('0x6d')][_0x68ef('0x6b')]({'where':{'id':_0x3ae3e9['body'][_0x68ef('0x6e')]},'include':[{'model':db[_0x4bd5c3+_0x68ef('0x6f')],'as':_0x68ef('0x6f')},{'model':db[_0x4bd5c3+_0x556dfc],'as':_0x68ef('0x70')}]});})['then'](function(_0x214e89){if(_[_0x68ef('0x14')](_0x214e89)){throw new Error(_0x4bd5c3+_0x68ef('0x71'));}_0x717d7b=_0x214e89;return _0x214e89[_0x68ef('0x72')]({'read':0x0,'readAt':null,'UserId':null});})[_0x68ef('0xa')](function(){var _0x346049={'uniqueid':_0x24ba34+'.'+_0x717d7b['id']+'.'+_0x717d7b['Interaction']['id'],'FromUserId':_0x3ae3e9[_0x68ef('0x31')]['id'],'type':'queue'};_0x346049[_0x4bd5c3+_0x68ef('0x73')]=_0x717d7b['id'];_0x346049[_0x4bd5c3+_0x68ef('0x74')]=_0x717d7b[_0x68ef('0x6f')]['id'];_0x346049[_0x68ef('0x75')+_0x4bd5c3+_0x556dfc+'Id']=_0x717d7b['Account']['id'];_0x346049['To'+_0x4bd5c3+_0x68ef('0x76')]=_0x108223['id'];return db[_0x4bd5c3+'TransferReport'][_0x68ef('0x77')](_0x346049);})[_0x68ef('0xa')](function(){return respondWithRpcPromise('Start',{'channel':_0x24ba34,'interaction':_0x717d7b['Interaction'],'message':_0x717d7b,'account':_0x717d7b[_0x68ef('0x70')],'applications':[{'id':0x0,'priority':0x1,'app':'queue','appdata':_0x108223[_0x68ef('0x12')]+','+(_0x717d7b['Account'][_0x68ef('0x78')]||0x12c),'interval':_0x68ef('0x79')}]},routingClient);})[_0x68ef('0xa')](respondWithResult(_0x17892c,null))[_0x68ef('0xe')](handleError(_0x17892c,null));};};exports[_0x68ef('0x7a')]=function(_0x66a7a8,_0x51b8db){var _0x17d014,_0x463356;if(_[_0x68ef('0x14')](_0x66a7a8[_0x68ef('0x22')][_0x68ef('0x7b')])){throw new Error(_0x68ef('0x7c'));}var _0x303add=_0x66a7a8['body'][_0x68ef('0x7b')];var _0x373ab4=_[_0x68ef('0x68')](_0x303add);var _0x2e20aa=_0x303add===_0x68ef('0x69')?_0x68ef('0x7d'):_0x68ef('0x70');return db[_0x68ef('0x7e')][_0x68ef('0x6b')]({'raw':!![],'where':{'id':_0x66a7a8['params']['id'],'role':_0x68ef('0x3d')}})['then'](function(_0x5f3b79){if(_['isNil'](_0x5f3b79)){throw new Error(_0x68ef('0x7f'));}_0x17d014=_0x5f3b79;return db[_0x373ab4+_0x68ef('0x6d')][_0x68ef('0x6b')]({'where':{'id':_0x66a7a8['body']['messageId']},'include':[{'model':db[_0x373ab4+'Interaction'],'as':_0x68ef('0x6f')},{'model':db[_0x373ab4+_0x2e20aa],'as':_0x68ef('0x70')}]});})[_0x68ef('0xa')](function(_0x40996e){if(_[_0x68ef('0x14')](_0x40996e)){throw new Error(_0x373ab4+_0x68ef('0x71'));}_0x463356=_0x40996e;return _0x40996e['update']({'read':0x0,'readAt':null,'UserId':null});})[_0x68ef('0xa')](function(){var _0x2c7f18={'uniqueid':_0x303add+'.'+_0x463356['id']+'.'+_0x463356[_0x68ef('0x6f')]['id'],'FromUserId':_0x66a7a8[_0x68ef('0x31')]['id'],'type':'queue','ToUserId':_0x17d014['id']};_0x2c7f18[_0x373ab4+_0x68ef('0x73')]=_0x463356['id'];_0x2c7f18[_0x373ab4+_0x68ef('0x74')]=_0x463356[_0x68ef('0x6f')]['id'];_0x2c7f18[_0x68ef('0x75')+_0x373ab4+_0x2e20aa+'Id']=_0x463356[_0x68ef('0x70')]['id'];return db[_0x373ab4+_0x68ef('0x80')][_0x68ef('0x77')](_0x2c7f18);})[_0x68ef('0xa')](function(){return respondWithRpcPromise('Start',{'channel':_0x303add,'interaction':_0x463356[_0x68ef('0x6f')],'message':_0x463356,'account':_0x463356[_0x68ef('0x70')],'applications':[{'id':0x0,'priority':0x1,'app':'agent','appdata':_0x17d014[_0x68ef('0x12')]+','+(_0x463356[_0x68ef('0x70')][_0x68ef('0x81')]||0x12c),'interval':_0x68ef('0x79')}]},routingClient);})[_0x68ef('0xa')](respondWithResult(_0x51b8db,null))[_0x68ef('0xe')](handleError(_0x51b8db,null));};
\ No newline at end of file
+var _0xbd51=['chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','filter','map','queue_id','value','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','chat','Website','findOne','\x20Queue\x20not\x20found','Message','messageId','Interaction','Account','\x20Message\x20not\x20found','update','MessageId','InteractionId','From','QueueId','create','Start','queue','*,*,*,*','Channel\x20field\x20is\x20mandatory','channel','capitalize','Agent\x20not\x20found','TransferReport','agentTransferTimeout','bluebird','lodash','util','../../mysqldb','../../config/logger','client','http','request','error','code','message','catch','status','json','stack','send','isNil','rows','find','voiceChannels','VoiceChannels','query','then','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','params','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','voiceQueues','VoiceQueues','showVoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','Outbound','outboundChannels','OutboundChannels','Agents','interaction','user','name','hasOwnProperty','MemberReport','findAll','INTERACTION','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','interface','SIP/%s','agent','internal','capacity','telephones','Telephones','trunks','Trunks','campaigns','Campaigns','chatQueues','showChatQueues','mailQueues','MailQueues','mailAccounts','MailAccounts','openchannelQueues','showOpenchannelQueues','smsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts'];(function(_0x57e05f,_0x318b8d){var _0x435e54=function(_0x5de9eb){while(--_0x5de9eb){_0x57e05f['push'](_0x57e05f['shift']());}};_0x435e54(++_0x318b8d);}(_0xbd51,0x1a8));var _0x1bd5=function(_0x233cf2,_0x522849){_0x233cf2=_0x233cf2-0x0;var _0x14bde9=_0xbd51[_0x233cf2];return _0x14bde9;};'use strict';var BPromise=require(_0x1bd5('0x0'));var moment=require('moment');var _=require(_0x1bd5('0x1'));var util=require(_0x1bd5('0x2'));var db=require(_0x1bd5('0x3'))['db'];var logger=require(_0x1bd5('0x4'))('api');var jayson=require('jayson/promise');var amiClient=jayson['client']['http']({'port':0x232a});var mailClient=jayson[_0x1bd5('0x5')][_0x1bd5('0x6')]({'port':0x232b});var routingClient=jayson[_0x1bd5('0x5')]['http']({'port':0x232c});function respondWithRpcPromise(_0x29abea,_0x30a385,_0x19077c){return new BPromise(function(_0x27d58f,_0xd8418f){var _0x4a7f90=_0x19077c?_0x19077c:amiClient;return _0x4a7f90[_0x1bd5('0x7')](_0x29abea,_0x30a385)['then'](function(_0x2bd975){if(_0x2bd975[_0x1bd5('0x8')]){if(_0x2bd975[_0x1bd5('0x8')][_0x1bd5('0x9')]===0x1f4){return _0xd8418f(_0x2bd975[_0x1bd5('0x8')][_0x1bd5('0xa')]);}return _0x27d58f(_0x2bd975['error'][_0x1bd5('0xa')]);}else{_0x27d58f(_0x2bd975['result']);}})[_0x1bd5('0xb')](function(_0x24e38c){_0xd8418f(_0x24e38c);});});}function respondWithResult(_0x37e8e1,_0x14606b){_0x14606b=_0x14606b||0xc8;return function(_0x177be0){if(_0x177be0){return _0x37e8e1[_0x1bd5('0xc')](_0x14606b)[_0x1bd5('0xd')](_0x177be0);}return _0x37e8e1['sendStatus'](0x194);};}function handleError(_0x5650b5,_0x8b2390){_0x8b2390=_0x8b2390||0x1f4;return function(_0x6d2c40){logger[_0x1bd5('0x8')](_0x6d2c40[_0x1bd5('0xe')]);if(_0x6d2c40['name']){delete _0x6d2c40['name'];}_0x5650b5[_0x1bd5('0xc')](_0x8b2390)[_0x1bd5('0xf')](_0x6d2c40);};}function findById(_0x2b2c57){return function(_0x4793dd){if(!_[_0x1bd5('0x10')](_0x2b2c57)&&!_[_0x1bd5('0x10')](_0x4793dd)&&!_[_0x1bd5('0x10')](_0x4793dd[_0x1bd5('0x11')])){return _[_0x1bd5('0x12')](_0x4793dd['rows'],function(_0x53ad5e){return _0x53ad5e['id']==_0x2b2c57;});}return null;};}exports[_0x1bd5('0x13')]=function(_0x260827,_0x476bd1){return respondWithRpcPromise(_0x1bd5('0x14'),_0x260827[_0x1bd5('0x15')])[_0x1bd5('0x16')](respondWithResult(_0x476bd1,null))[_0x1bd5('0xb')](handleError(_0x476bd1,null));};exports[_0x1bd5('0x17')]=function(_0x456051,_0xb1ac1e){return respondWithRpcPromise(_0x1bd5('0x18'),_[_0x1bd5('0x19')](_0x456051[_0x1bd5('0x15')],_0x456051[_0x1bd5('0x1a')]))[_0x1bd5('0x16')](respondWithResult(_0xb1ac1e,null))[_0x1bd5('0xb')](handleError(_0xb1ac1e,null));};exports[_0x1bd5('0x1b')]=function(_0x29c340,_0x5567c9){return respondWithRpcPromise(_0x1bd5('0x1c'),_['merge'](_0x29c340[_0x1bd5('0x15')],_0x29c340[_0x1bd5('0x1a')]))[_0x1bd5('0x16')](respondWithResult(_0x5567c9,null))['catch'](handleError(_0x5567c9,null));};exports[_0x1bd5('0x1d')]=function(_0x4fa37c,_0x2ed551){return respondWithRpcPromise(_0x1bd5('0x1e'),_0x4fa37c[_0x1bd5('0x15')])[_0x1bd5('0x16')](respondWithResult(_0x2ed551,null))['catch'](handleError(_0x2ed551,null));};exports[_0x1bd5('0x1f')]=function(_0x69bb17,_0x20245c){return respondWithRpcPromise(_0x1bd5('0x1e'),_0x69bb17['query'])[_0x1bd5('0x16')](findById(_0x69bb17[_0x1bd5('0x1a')]['id']))[_0x1bd5('0x16')](respondWithResult(_0x20245c,null))[_0x1bd5('0xb')](handleError(_0x20245c,null));};exports[_0x1bd5('0x20')]=function(_0xc73670,_0x4e72b2){return respondWithRpcPromise(_0x1bd5('0x21'),_[_0x1bd5('0x19')](_0xc73670[_0x1bd5('0x22')],_0xc73670['params']))[_0x1bd5('0x16')](respondWithResult(_0x4e72b2,null))[_0x1bd5('0xb')](handleError(_0x4e72b2,null));};exports[_0x1bd5('0x23')]=function(_0x3430bf,_0x1f4456){return respondWithRpcPromise(_0x1bd5('0x24'),_['merge'](_0x3430bf['query'],_0x3430bf[_0x1bd5('0x1a')]))[_0x1bd5('0x16')](respondWithResult(_0x1f4456,null))['catch'](handleError(_0x1f4456,null));};exports[_0x1bd5('0x25')]=function(_0x198b88,_0x1efa8c){return respondWithRpcPromise(_0x1bd5('0x26'),_0x198b88['query'])[_0x1bd5('0x16')](respondWithResult(_0x1efa8c,null))[_0x1bd5('0xb')](handleError(_0x1efa8c,null));};exports[_0x1bd5('0x27')]=function(_0x233743,_0x209ce1){return respondWithRpcPromise(_0x1bd5('0x28'),_[_0x1bd5('0x19')](_0x233743[_0x1bd5('0x15')],_0x233743['params']))[_0x1bd5('0x16')](respondWithResult(_0x209ce1,null))[_0x1bd5('0xb')](handleError(_0x209ce1,null));};exports[_0x1bd5('0x29')]=function(_0x24c92e,_0x11a6d2){return respondWithRpcPromise(_0x1bd5('0x2a'),_[_0x1bd5('0x19')](_0x24c92e['query'],_0x24c92e[_0x1bd5('0x1a')]))[_0x1bd5('0x16')](respondWithResult(_0x11a6d2,null))[_0x1bd5('0xb')](handleError(_0x11a6d2,null));};exports[_0x1bd5('0x2b')]=function(_0x3cf898,_0x192ca7){return respondWithRpcPromise(_0x1bd5('0x2c'),_['merge'](_0x3cf898['query'],_0x3cf898[_0x1bd5('0x1a')]))[_0x1bd5('0x16')](respondWithResult(_0x192ca7,null))[_0x1bd5('0xb')](handleError(_0x192ca7,null));};exports['outbound']=function(_0x4595a0,_0x5af974){return respondWithRpcPromise(_0x1bd5('0x2d'),_0x4595a0[_0x1bd5('0x15')])[_0x1bd5('0x16')](respondWithResult(_0x5af974,null))[_0x1bd5('0xb')](handleError(_0x5af974,null));};exports[_0x1bd5('0x2e')]=function(_0x2470ec,_0x41096d){return respondWithRpcPromise(_0x1bd5('0x2f'),_0x2470ec['query'])[_0x1bd5('0x16')](respondWithResult(_0x41096d,null))[_0x1bd5('0xb')](handleError(_0x41096d,null));};exports['agents']=function(_0x3b5a0d,_0x77ebcf){var _0x20b25c;return respondWithRpcPromise('Agents',_0x3b5a0d[_0x1bd5('0x15')])[_0x1bd5('0x16')](function(_0x2997a2){_0x20b25c=_0x2997a2;return respondWithRpcPromise(_0x1bd5('0x30'),_0x3b5a0d['query'],routingClient);})[_0x1bd5('0x16')](function(_0x22f437){return _[_0x1bd5('0x19')]({},_0x22f437,_0x20b25c);})[_0x1bd5('0x16')](respondWithResult(_0x77ebcf,null))['catch'](handleError(_0x77ebcf,null));};exports['agentCapacity']=function(_0x40eeff,_0x35afc7){if(_0x40eeff[_0x1bd5('0x22')]&&_0x40eeff['body'][_0x1bd5('0x31')]&&_0x40eeff[_0x1bd5('0x32')]&&_0x40eeff['user'][_0x1bd5('0x33')]){for(var _0x5761b8 in _0x40eeff[_0x1bd5('0x22')][_0x1bd5('0x31')]){if(_0x40eeff['body'][_0x1bd5('0x31')][_0x1bd5('0x34')](_0x5761b8)){db[_0x1bd5('0x35')][_0x1bd5('0x36')]({'where':{'channel':_0x5761b8,'membername':_0x40eeff[_0x1bd5('0x32')][_0x1bd5('0x33')],'type':_0x1bd5('0x37'),'exitAt':null,'uniqueid':_0x40eeff[_0x1bd5('0x22')][_0x1bd5('0x31')][_0x5761b8]&&_0x40eeff[_0x1bd5('0x22')][_0x1bd5('0x31')][_0x5761b8][_0x1bd5('0x38')]?{'$notIn':_0x40eeff['body'][_0x1bd5('0x31')][_0x5761b8]}:{'$ne':null}}})[_0x1bd5('0x16')](function(_0x335125){var _0x52ade4=moment()[_0x1bd5('0x39')](_0x1bd5('0x3a'));for(var _0x5bb8a6=0x0,_0x1dbde9=_0x335125['length'];_0x5bb8a6<_0x1dbde9;_0x5bb8a6+=0x1){_0x335125[_0x5bb8a6][_0x1bd5('0x3b')]({'exitAt':_0x52ade4});}});for(var _0x558fec=0x0;_0x558fec<_0x40eeff[_0x1bd5('0x22')][_0x1bd5('0x31')][_0x5761b8]['length'];_0x558fec+=0x1){db[_0x1bd5('0x35')]['findOrCreate']({'where':{'channel':_0x5761b8,'membername':_0x40eeff[_0x1bd5('0x32')][_0x1bd5('0x33')],'type':_0x1bd5('0x37'),'uniqueid':_0x40eeff[_0x1bd5('0x22')][_0x1bd5('0x31')][_0x5761b8][_0x558fec],'exitAt':null},'defaults':{'channel':_0x5761b8,'membername':_0x40eeff[_0x1bd5('0x32')][_0x1bd5('0x33')],'interface':_[_0x1bd5('0x10')](_0x40eeff['user'][_0x1bd5('0x3c')])?util[_0x1bd5('0x39')](_0x1bd5('0x3d'),_0x40eeff[_0x1bd5('0x32')][_0x1bd5('0x33')]):_0x40eeff[_0x1bd5('0x32')]['interface'],'type':_0x1bd5('0x37'),'enterAt':moment()[_0x1bd5('0x39')](_0x1bd5('0x3a')),'role':_0x1bd5('0x3e'),'internal':_0x40eeff[_0x1bd5('0x32')][_0x1bd5('0x3f')],'uniqueid':_0x40eeff[_0x1bd5('0x22')]['interaction'][_0x5761b8][_0x558fec]}});}}}}return respondWithRpcPromise('AgentCapacity',{'id':_0x40eeff[_0x1bd5('0x1a')]['id'],'capacity':_0x40eeff[_0x1bd5('0x22')][_0x1bd5('0x40')]},routingClient)['then'](respondWithResult(_0x35afc7,null))[_0x1bd5('0xb')](handleError(_0x35afc7,null));};exports[_0x1bd5('0x41')]=function(_0x1ad2ff,_0x1f2d7e){return respondWithRpcPromise(_0x1bd5('0x42'),_0x1ad2ff[_0x1bd5('0x15')])[_0x1bd5('0x16')](respondWithResult(_0x1f2d7e,null))['catch'](handleError(_0x1f2d7e,null));};exports[_0x1bd5('0x43')]=function(_0x2bcd23,_0x4f2d91){return respondWithRpcPromise(_0x1bd5('0x44'),_0x2bcd23['query'])[_0x1bd5('0x16')](respondWithResult(_0x4f2d91,null))['catch'](handleError(_0x4f2d91,null));};exports[_0x1bd5('0x45')]=function(_0x555ba1,_0x5a011e){return respondWithRpcPromise(_0x1bd5('0x46'),_0x555ba1[_0x1bd5('0x15')])[_0x1bd5('0x16')](respondWithResult(_0x5a011e,null))[_0x1bd5('0xb')](handleError(_0x5a011e,null));};exports[_0x1bd5('0x47')]=function(_0x33f011,_0x35c478){return respondWithRpcPromise('ChatQueues',_0x33f011[_0x1bd5('0x15')],routingClient)['then'](respondWithResult(_0x35c478,null))[_0x1bd5('0xb')](handleError(_0x35c478,null));};exports[_0x1bd5('0x48')]=function(_0x2cc5ba,_0x5a8132){return respondWithRpcPromise('ChatQueues',_0x2cc5ba[_0x1bd5('0x15')],routingClient)[_0x1bd5('0x16')](findById(_0x2cc5ba[_0x1bd5('0x1a')]['id']))[_0x1bd5('0x16')](respondWithResult(_0x5a8132,null))[_0x1bd5('0xb')](handleError(_0x5a8132,null));};exports[_0x1bd5('0x49')]=function(_0x46e36c,_0x383a68){return respondWithRpcPromise(_0x1bd5('0x4a'),_0x46e36c[_0x1bd5('0x15')],routingClient)['then'](respondWithResult(_0x383a68,null))[_0x1bd5('0xb')](handleError(_0x383a68,null));};exports['showMailQueues']=function(_0x2fe8f4,_0x34d93b){return respondWithRpcPromise(_0x1bd5('0x4a'),_0x2fe8f4['query'],routingClient)[_0x1bd5('0x16')](findById(_0x2fe8f4[_0x1bd5('0x1a')]['id']))[_0x1bd5('0x16')](respondWithResult(_0x34d93b,null))['catch'](handleError(_0x34d93b,null));};exports[_0x1bd5('0x4b')]=function(_0x10103a,_0x39f973){return respondWithRpcPromise(_0x1bd5('0x4c'),_0x10103a['query'],mailClient)['then'](respondWithResult(_0x39f973,null))[_0x1bd5('0xb')](handleError(_0x39f973,null));};exports[_0x1bd5('0x4d')]=function(_0x1790af,_0x54a8c4){return respondWithRpcPromise('OpenchannelQueues',_0x1790af[_0x1bd5('0x15')],routingClient)['then'](respondWithResult(_0x54a8c4,null))[_0x1bd5('0xb')](handleError(_0x54a8c4,null));};exports[_0x1bd5('0x4e')]=function(_0x5068ae,_0x32f646){return respondWithRpcPromise('OpenchannelQueues',_0x5068ae[_0x1bd5('0x15')],routingClient)['then'](findById(_0x5068ae[_0x1bd5('0x1a')]['id']))[_0x1bd5('0x16')](respondWithResult(_0x32f646,null))['catch'](handleError(_0x32f646,null));};exports[_0x1bd5('0x4f')]=function(_0x19f765,_0x47ca3f){return respondWithRpcPromise('SmsQueues',_0x19f765[_0x1bd5('0x15')],routingClient)[_0x1bd5('0x16')](respondWithResult(_0x47ca3f,null))['catch'](handleError(_0x47ca3f,null));};exports[_0x1bd5('0x50')]=function(_0x40b508,_0x5da595){return respondWithRpcPromise('SmsQueues',_0x40b508[_0x1bd5('0x15')],routingClient)[_0x1bd5('0x16')](findById(_0x40b508[_0x1bd5('0x1a')]['id']))['then'](respondWithResult(_0x5da595,null))[_0x1bd5('0xb')](handleError(_0x5da595,null));};exports[_0x1bd5('0x51')]=function(_0x5c1db7,_0x4b317d){return respondWithRpcPromise(_0x1bd5('0x52'),_0x5c1db7[_0x1bd5('0x15')],routingClient)[_0x1bd5('0x16')](respondWithResult(_0x4b317d,null))[_0x1bd5('0xb')](handleError(_0x4b317d,null));};exports[_0x1bd5('0x53')]=function(_0x53c6de,_0x3827d7){return respondWithRpcPromise('WhatsappQueues',_0x53c6de[_0x1bd5('0x15')],routingClient)[_0x1bd5('0x16')](findById(_0x53c6de[_0x1bd5('0x1a')]['id']))[_0x1bd5('0x16')](respondWithResult(_0x3827d7,null))['catch'](handleError(_0x3827d7,null));};exports['faxQueues']=function(_0x3a7dd6,_0x36d62e){return respondWithRpcPromise(_0x1bd5('0x54'),_0x3a7dd6[_0x1bd5('0x15')],routingClient)[_0x1bd5('0x16')](respondWithResult(_0x36d62e,null))[_0x1bd5('0xb')](handleError(_0x36d62e,null));};exports[_0x1bd5('0x55')]=function(_0xc080d5,_0x1a35cf){return respondWithRpcPromise(_0x1bd5('0x54'),_0xc080d5[_0x1bd5('0x15')],routingClient)[_0x1bd5('0x16')](findById(_0xc080d5[_0x1bd5('0x1a')]['id']))[_0x1bd5('0x16')](respondWithResult(_0x1a35cf,null))[_0x1bd5('0xb')](handleError(_0x1a35cf,null));};exports[_0x1bd5('0x56')]=function(_0x1b99ff,_0x195176){return respondWithRpcPromise(_0x1bd5('0x57'),_0x1b99ff[_0x1bd5('0x15')])[_0x1bd5('0x16')](respondWithResult(_0x195176,null))[_0x1bd5('0xb')](handleError(_0x195176,null));};exports[_0x1bd5('0x58')]=function(_0x3ddf27,_0x56e99c){return respondWithRpcPromise(_0x1bd5('0x59'),_0x3ddf27[_0x1bd5('0x15')],routingClient)[_0x1bd5('0x16')](respondWithResult(_0x56e99c,null))[_0x1bd5('0xb')](handleError(_0x56e99c,null));};exports[_0x1bd5('0x5a')]=function(_0x37a6f3,_0x1e282c){return respondWithRpcPromise('MailQueuesWaitingInteractions',_0x37a6f3[_0x1bd5('0x15')],routingClient)[_0x1bd5('0x16')](respondWithResult(_0x1e282c,null))[_0x1bd5('0xb')](handleError(_0x1e282c,null));};exports[_0x1bd5('0x5b')]=function(_0x590b3d,_0x2ed59d){return respondWithRpcPromise(_0x1bd5('0x5c'),_0x590b3d[_0x1bd5('0x15')],routingClient)[_0x1bd5('0x16')](respondWithResult(_0x2ed59d,null))[_0x1bd5('0xb')](handleError(_0x2ed59d,null));};exports[_0x1bd5('0x5d')]=function(_0x32a878,_0x4cc7a5){return respondWithRpcPromise(_0x1bd5('0x5c'),_0x32a878['query'],routingClient)['then'](function(_0x34f98c){if(_0x32a878['query'][_0x1bd5('0x5e')]!==undefined){var _0x1a4ee6=_(_0x34f98c['rows'])[_0x1bd5('0x5f')]([_0x32a878[_0x1bd5('0x15')][_0x1bd5('0x5e')],_0x32a878[_0x1bd5('0x1a')]['id']])[_0x1bd5('0x60')](_0x1bd5('0x61'))['uniq']()[_0x1bd5('0x62')]();return _0x34f98c[_0x1bd5('0x11')][_0x1bd5('0x5f')](function(_0x1c9cec){return _0x1a4ee6['indexOf'](_0x1c9cec['queue_id'])>-0x1;});}else{return _0x34f98c[_0x1bd5('0x11')][_0x1bd5('0x5f')](function(_0x2fe037){return _0x2fe037[_0x1bd5('0x61')]===parseInt(_0x32a878['params']['id']);});}})[_0x1bd5('0x16')](respondWithResult(_0x4cc7a5,null))['catch'](handleError(_0x4cc7a5,null));};exports['smsQueuesWaitingInteractions']=function(_0x3a203f,_0x5045f9){return respondWithRpcPromise(_0x1bd5('0x63'),_0x3a203f[_0x1bd5('0x15')],routingClient)[_0x1bd5('0x16')](respondWithResult(_0x5045f9,null))[_0x1bd5('0xb')](handleError(_0x5045f9,null));};exports[_0x1bd5('0x64')]=function(_0xab4ed6,_0x232077){return respondWithRpcPromise(_0x1bd5('0x65'),_0xab4ed6[_0x1bd5('0x15')],routingClient)['then'](respondWithResult(_0x232077,null))[_0x1bd5('0xb')](handleError(_0x232077,null));};exports['faxQueuesWaitingInteractions']=function(_0x58c715,_0x59b491){return respondWithRpcPromise(_0x1bd5('0x66'),_0x58c715['query'],routingClient)[_0x1bd5('0x16')](respondWithResult(_0x59b491,null))[_0x1bd5('0xb')](handleError(_0x59b491,null));};exports[_0x1bd5('0x67')]=function(_0x4a3f74){return function(_0x201968,_0x91bcf8){var _0x3410f8,_0x52cd5f;var _0xfc9282=_['capitalize'](_0x4a3f74);var _0x327eb6=_0x4a3f74===_0x1bd5('0x68')?_0x1bd5('0x69'):'Account';return db[_0xfc9282+'Queue'][_0x1bd5('0x6a')]({'raw':!![],'where':{'id':_0x201968['params']['id']}})[_0x1bd5('0x16')](function(_0x53be05){if(_[_0x1bd5('0x10')](_0x53be05)){throw new Error(_0xfc9282+_0x1bd5('0x6b'));}_0x3410f8=_0x53be05;return db[_0xfc9282+_0x1bd5('0x6c')][_0x1bd5('0x6a')]({'where':{'id':_0x201968[_0x1bd5('0x22')][_0x1bd5('0x6d')]},'include':[{'model':db[_0xfc9282+_0x1bd5('0x6e')],'as':_0x1bd5('0x6e')},{'model':db[_0xfc9282+_0x327eb6],'as':_0x1bd5('0x6f')}]});})[_0x1bd5('0x16')](function(_0x3c90dc){if(_[_0x1bd5('0x10')](_0x3c90dc)){throw new Error(_0xfc9282+_0x1bd5('0x70'));}_0x52cd5f=_0x3c90dc;return _0x3c90dc[_0x1bd5('0x71')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x2a1b4a={'uniqueid':_0x4a3f74+'.'+_0x52cd5f['id']+'.'+_0x52cd5f[_0x1bd5('0x6e')]['id'],'FromUserId':_0x201968[_0x1bd5('0x32')]['id'],'type':'queue'};_0x2a1b4a[_0xfc9282+_0x1bd5('0x72')]=_0x52cd5f['id'];_0x2a1b4a[_0xfc9282+_0x1bd5('0x73')]=_0x52cd5f['Interaction']['id'];_0x2a1b4a[_0x1bd5('0x74')+_0xfc9282+_0x327eb6+'Id']=_0x52cd5f[_0x1bd5('0x6f')]['id'];_0x2a1b4a['To'+_0xfc9282+_0x1bd5('0x75')]=_0x3410f8['id'];return db[_0xfc9282+'TransferReport'][_0x1bd5('0x76')](_0x2a1b4a);})[_0x1bd5('0x16')](function(){return respondWithRpcPromise(_0x1bd5('0x77'),{'channel':_0x4a3f74,'interaction':_0x52cd5f[_0x1bd5('0x6e')],'message':_0x52cd5f,'account':_0x52cd5f['Account'],'applications':[{'id':0x0,'priority':0x1,'app':_0x1bd5('0x78'),'appdata':_0x3410f8[_0x1bd5('0x33')]+','+(_0x52cd5f[_0x1bd5('0x6f')]['queueTransferTimeout']||0x12c),'interval':_0x1bd5('0x79')}]},routingClient);})[_0x1bd5('0x16')](respondWithResult(_0x91bcf8,null))['catch'](handleError(_0x91bcf8,null));};};exports['agentNotify']=function(_0x4230e9,_0x182d75){var _0x5c9098,_0x5d6b17;if(_[_0x1bd5('0x10')](_0x4230e9['body']['channel'])){throw new Error(_0x1bd5('0x7a'));}var _0x5cb13d=_0x4230e9[_0x1bd5('0x22')][_0x1bd5('0x7b')];var _0x5df043=_[_0x1bd5('0x7c')](_0x5cb13d);var _0x254c8d=_0x5cb13d===_0x1bd5('0x68')?'Website':_0x1bd5('0x6f');return db['User'][_0x1bd5('0x6a')]({'raw':!![],'where':{'id':_0x4230e9[_0x1bd5('0x1a')]['id'],'role':_0x1bd5('0x3e')}})[_0x1bd5('0x16')](function(_0x2f9dff){if(_['isNil'](_0x2f9dff)){throw new Error(_0x1bd5('0x7d'));}_0x5c9098=_0x2f9dff;return db[_0x5df043+'Message'][_0x1bd5('0x6a')]({'where':{'id':_0x4230e9['body']['messageId']},'include':[{'model':db[_0x5df043+_0x1bd5('0x6e')],'as':_0x1bd5('0x6e')},{'model':db[_0x5df043+_0x254c8d],'as':_0x1bd5('0x6f')}]});})[_0x1bd5('0x16')](function(_0x4c9931){if(_[_0x1bd5('0x10')](_0x4c9931)){throw new Error(_0x5df043+_0x1bd5('0x70'));}_0x5d6b17=_0x4c9931;return _0x4c9931[_0x1bd5('0x71')]({'read':0x0,'readAt':null,'UserId':null});})[_0x1bd5('0x16')](function(){var _0x15e584={'uniqueid':_0x5cb13d+'.'+_0x5d6b17['id']+'.'+_0x5d6b17[_0x1bd5('0x6e')]['id'],'FromUserId':_0x4230e9[_0x1bd5('0x32')]['id'],'type':_0x1bd5('0x78'),'ToUserId':_0x5c9098['id']};_0x15e584[_0x5df043+_0x1bd5('0x72')]=_0x5d6b17['id'];_0x15e584[_0x5df043+_0x1bd5('0x73')]=_0x5d6b17[_0x1bd5('0x6e')]['id'];_0x15e584[_0x1bd5('0x74')+_0x5df043+_0x254c8d+'Id']=_0x5d6b17[_0x1bd5('0x6f')]['id'];return db[_0x5df043+_0x1bd5('0x7e')]['create'](_0x15e584);})[_0x1bd5('0x16')](function(){return respondWithRpcPromise(_0x1bd5('0x77'),{'channel':_0x5cb13d,'interaction':_0x5d6b17[_0x1bd5('0x6e')],'message':_0x5d6b17,'account':_0x5d6b17[_0x1bd5('0x6f')],'applications':[{'id':0x0,'priority':0x1,'app':_0x1bd5('0x3e'),'appdata':_0x5c9098[_0x1bd5('0x33')]+','+(_0x5d6b17[_0x1bd5('0x6f')][_0x1bd5('0x7f')]||0x12c),'interval':_0x1bd5('0x79')}]},routingClient);})[_0x1bd5('0x16')](respondWithResult(_0x182d75,null))[_0x1bd5('0xb')](handleError(_0x182d75,null));};
\ No newline at end of file
index 7f59a13..12e2ec0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x378f=['Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/run','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x17cffd,_0x2e92ca){var _0x54b404=function(_0x117995){while(--_0x117995){_0x17cffd['push'](_0x17cffd['shift']());}};_0x54b404(++_0x2e92ca);}(_0x378f,0x105));var _0xf378=function(_0x5b0d01,_0x1de13c){_0x5b0d01=_0x5b0d01-0x0;var _0x2694f9=_0x378f[_0x5b0d01];return _0x2694f9;};'use strict';var multer=require(_0xf378('0x0'));var util=require(_0xf378('0x1'));var path=require(_0xf378('0x2'));var timeout=require(_0xf378('0x3'));var express=require(_0xf378('0x4'));var router=express[_0xf378('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xf378('0x6'));var config=require(_0xf378('0x7'));var controller=require('./schedule.controller');router[_0xf378('0x8')]('/',auth[_0xf378('0x9')](),controller['index']);router[_0xf378('0x8')](_0xf378('0xa'),auth[_0xf378('0x9')](),controller[_0xf378('0xb')]);router[_0xf378('0x8')](_0xf378('0xc'),auth[_0xf378('0x9')](),controller['run']);router[_0xf378('0xd')]('/',auth[_0xf378('0x9')](),controller[_0xf378('0xe')]);router['put'](_0xf378('0xa'),auth[_0xf378('0x9')](),controller[_0xf378('0xf')]);router[_0xf378('0x10')]('/:id',auth['isAuthenticated'](),controller[_0xf378('0x11')]);module[_0xf378('0x12')]=router;
\ No newline at end of file
+var _0x3581=['util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./schedule.controller','get','isAuthenticated','index','/:id','show','/:id/run','post','create','put','delete','destroy','multer'];(function(_0x1a9204,_0x1c9e00){var _0x17ca68=function(_0x1f4399){while(--_0x1f4399){_0x1a9204['push'](_0x1a9204['shift']());}};_0x17ca68(++_0x1c9e00);}(_0x3581,0x18f));var _0x1358=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3581[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x1358('0x0'));var util=require(_0x1358('0x1'));var path=require('path');var timeout=require(_0x1358('0x2'));var express=require('express');var router=express[_0x1358('0x3')]();var fs_extra=require(_0x1358('0x4'));var auth=require(_0x1358('0x5'));var interaction=require(_0x1358('0x6'));var config=require(_0x1358('0x7'));var controller=require(_0x1358('0x8'));router[_0x1358('0x9')]('/',auth[_0x1358('0xa')](),controller[_0x1358('0xb')]);router[_0x1358('0x9')](_0x1358('0xc'),auth['isAuthenticated'](),controller[_0x1358('0xd')]);router[_0x1358('0x9')](_0x1358('0xe'),auth[_0x1358('0xa')](),controller['run']);router[_0x1358('0xf')]('/',auth[_0x1358('0xa')](),controller[_0x1358('0x10')]);router[_0x1358('0x11')](_0x1358('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x1358('0x12')](_0x1358('0xc'),auth[_0x1358('0xa')](),controller[_0x1358('0x13')]);module['exports']=router;
\ No newline at end of file
index 0d7ad91..de0b78c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9aa=['exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','INTEGER','ENUM','years','quarters','months','weeks','days','hours','minutes','csv','pdf','xlsx','custom','default','TEXT','sequelize'];(function(_0x725b8e,_0xc22b48){var _0x43ac45=function(_0x46bb4a){while(--_0x46bb4a){_0x725b8e['push'](_0x725b8e['shift']());}};_0x43ac45(++_0xc22b48);}(_0xc9aa,0x92));var _0xac9a=function(_0x2aea9e,_0x1f587f){_0x2aea9e=_0x2aea9e-0x0;var _0x430b92=_0xc9aa[_0x2aea9e];return _0x430b92;};'use strict';var Sequelize=require(_0xac9a('0x0'));module[_0xac9a('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xac9a('0x2')]},'active':{'type':Sequelize[_0xac9a('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xac9a('0x4')},'startAt':{'type':Sequelize[_0xac9a('0x5')],'allowNull':![]},'endAt':{'type':Sequelize[_0xac9a('0x5')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0xac9a('0x6')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0xac9a('0x7')](_0xac9a('0x8'),_0xac9a('0x9'),_0xac9a('0xa'),_0xac9a('0xb'),_0xac9a('0xc'),_0xac9a('0xd'),_0xac9a('0xe')),'allowNull':![],'defaultValue':'days'},'output':{'type':Sequelize['ENUM'](_0xac9a('0xf'),_0xac9a('0x10'),_0xac9a('0x11')),'allowNull':![],'defaultValue':_0xac9a('0xf')},'type':{'type':Sequelize[_0xac9a('0x7')](_0xac9a('0x12'),_0xac9a('0x13')),'allowNull':![],'defaultValue':'custom'},'sendMail':{'type':Sequelize[_0xac9a('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0xac9a('0x2')]},'cc':{'type':Sequelize[_0xac9a('0x14')]},'bcc':{'type':Sequelize[_0xac9a('0x14')]},'sendIfEmpty':{'type':Sequelize[_0xac9a('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x5d78=['weeks','days','hours','minutes','csv','pdf','xlsx','default','TEXT','sequelize','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','INTEGER','ENUM','years','quarters'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x5d78,0xed));var _0x85d7=function(_0x368765,_0x13017c){_0x368765=_0x368765-0x0;var _0x3f5985=_0x5d78[_0x368765];return _0x3f5985;};'use strict';var Sequelize=require(_0x85d7('0x0'));module[_0x85d7('0x1')]={'name':{'type':Sequelize[_0x85d7('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x85d7('0x2')]},'active':{'type':Sequelize[_0x85d7('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x85d7('0x4')},'startAt':{'type':Sequelize[_0x85d7('0x5')],'allowNull':![]},'endAt':{'type':Sequelize[_0x85d7('0x5')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x85d7('0x6')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x85d7('0x7')](_0x85d7('0x8'),_0x85d7('0x9'),'months',_0x85d7('0xa'),_0x85d7('0xb'),_0x85d7('0xc'),_0x85d7('0xd')),'allowNull':![],'defaultValue':_0x85d7('0xb')},'output':{'type':Sequelize['ENUM'](_0x85d7('0xe'),_0x85d7('0xf'),_0x85d7('0x10')),'allowNull':![],'defaultValue':_0x85d7('0xe')},'type':{'type':Sequelize[_0x85d7('0x7')]('custom',_0x85d7('0x11')),'allowNull':![],'defaultValue':'custom'},'sendMail':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0x85d7('0x2')]},'cc':{'type':Sequelize[_0x85d7('0x12')]},'bcc':{'type':Sequelize['TEXT']},'sendIfEmpty':{'type':Sequelize[_0x85d7('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index f9efb28..0055c00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8efb=['include','findAll','rows','catch','params','fields','merge','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Scheduler','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','run','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','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','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','reject','update','then','destroy','get','UserProfileResource','error','stack','name','send','fieldName','type','key','model','keys','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','limit','order','sort','filter','where','VIRTUAL','options','Schedule','includeAll'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x8efb,0x15e));var _0xb8ef=function(_0x203e2d,_0x37bbce){_0x203e2d=_0x203e2d-0x0;var _0x12a5c1=_0x8efb[_0x203e2d];return _0x12a5c1;};'use strict';var emlformat=require(_0xb8ef('0x0'));var rimraf=require(_0xb8ef('0x1'));var zipdir=require(_0xb8ef('0x2'));var jsonpatch=require(_0xb8ef('0x3'));var rp=require(_0xb8ef('0x4'));var moment=require('moment');var BPromise=require(_0xb8ef('0x5'));var Mustache=require(_0xb8ef('0x6'));var util=require('util');var path=require(_0xb8ef('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb8ef('0x8'));var _=require(_0xb8ef('0x9'));var squel=require(_0xb8ef('0xa'));var crypto=require(_0xb8ef('0xb'));var jsforce=require(_0xb8ef('0xc'));var deskjs=require(_0xb8ef('0xd'));var toCsv=require(_0xb8ef('0xe'));var querystring=require('querystring');var Papa=require(_0xb8ef('0xf'));var Redis=require(_0xb8ef('0x10'));var authService=require(_0xb8ef('0x11'));var qs=require(_0xb8ef('0x12'));var as=require(_0xb8ef('0x13'));var hardwareService=require(_0xb8ef('0x14'));var logger=require(_0xb8ef('0x15'))(_0xb8ef('0x16'));var utils=require(_0xb8ef('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb8ef('0x18'))['db'];function respondWithStatusCode(_0x57d47a,_0x28f67b){_0x28f67b=_0x28f67b||0xcc;return function(_0x3670aa){if(_0x3670aa){return _0x57d47a[_0xb8ef('0x19')](_0x28f67b);}return _0x57d47a[_0xb8ef('0x1a')](_0x28f67b)[_0xb8ef('0x1b')]();};}function respondWithResult(_0x3c3c12,_0x39d654){_0x39d654=_0x39d654||0xc8;return function(_0x3cf66b){if(_0x3cf66b){return _0x3c3c12['status'](_0x39d654)[_0xb8ef('0x1c')](_0x3cf66b);}};}function respondWithFilteredResult(_0x26a90e,_0x80a57f){return function(_0x2a6b0f){if(_0x2a6b0f){var _0x81dafd=typeof _0x80a57f[_0xb8ef('0x1d')]===_0xb8ef('0x1e')&&typeof _0x80a57f['limit']===_0xb8ef('0x1e');var _0x3a33e=_0x2a6b0f[_0xb8ef('0x1f')];var _0x44d7e6=_0x81dafd?0x0:_0x80a57f['offset'];var _0x1591bc=_0x81dafd?_0x2a6b0f[_0xb8ef('0x1f')]:_0x80a57f['offset']+_0x80a57f['limit'];var _0x313042;if(_0x1591bc>=_0x3a33e){_0x1591bc=_0x3a33e;_0x313042=0xc8;}else{_0x313042=0xce;}_0x26a90e[_0xb8ef('0x1a')](_0x313042);return _0x26a90e[_0xb8ef('0x20')](_0xb8ef('0x21'),_0x44d7e6+'-'+_0x1591bc+'/'+_0x3a33e)['json'](_0x2a6b0f);}return null;};}function patchUpdates(_0x5acd69){return function(_0x258458){try{jsonpatch['apply'](_0x258458,_0x5acd69,!![]);}catch(_0x246d4e){return BPromise[_0xb8ef('0x22')](_0x246d4e);}return _0x258458['save']();};}function saveUpdates(_0xf11604,_0x5f36df){return function(_0x310707){if(_0x310707){return _0x310707[_0xb8ef('0x23')](_0xf11604)[_0xb8ef('0x24')](function(_0x3293e2){return _0x3293e2;});}return null;};}function removeEntity(_0x535259,_0x5289cf){return function(_0x3a7270){if(_0x3a7270){return _0x3a7270[_0xb8ef('0x25')]()[_0xb8ef('0x24')](function(){var _0xd9148d=_0x3a7270[_0xb8ef('0x26')]({'plain':!![]});var _0x1d77d3='Scheduler';return db[_0xb8ef('0x27')][_0xb8ef('0x25')]({'where':{'type':_0x1d77d3,'resourceId':_0xd9148d['id']}})['then'](function(){return _0x3a7270;});})['then'](function(){_0x535259[_0xb8ef('0x1a')](0xcc)[_0xb8ef('0x1b')]();});}};}function handleEntityNotFound(_0x54a24d,_0x4b59ad){return function(_0x5a2ce4){if(!_0x5a2ce4){_0x54a24d[_0xb8ef('0x19')](0x194);}return _0x5a2ce4;};}function handleError(_0x51ed77,_0x2c5085){_0x2c5085=_0x2c5085||0x1f4;return function(_0x58c11e){logger[_0xb8ef('0x28')](_0x58c11e[_0xb8ef('0x29')]);if(_0x58c11e['name']){delete _0x58c11e[_0xb8ef('0x2a')];}_0x51ed77['status'](_0x2c5085)[_0xb8ef('0x2b')](_0x58c11e);};}exports['index']=function(_0x2fc9af,_0xdeceaf){var _0x36679a={},_0x73a969={},_0x26d3e4={'count':0x0,'rows':[]};var _0x5add1a=_['map'](db['Schedule']['rawAttributes'],function(_0x100b8d){return{'name':_0x100b8d[_0xb8ef('0x2c')],'type':_0x100b8d[_0xb8ef('0x2d')][_0xb8ef('0x2e')]};});_0x73a969[_0xb8ef('0x2f')]=_['map'](_0x5add1a,'name');_0x73a969['query']=_[_0xb8ef('0x30')](_0x2fc9af[_0xb8ef('0x31')]);_0x73a969[_0xb8ef('0x32')]=_[_0xb8ef('0x33')](_0x73a969[_0xb8ef('0x2f')],_0x73a969[_0xb8ef('0x31')]);_0x36679a[_0xb8ef('0x34')]=_[_0xb8ef('0x33')](_0x73a969[_0xb8ef('0x2f')],qs['fields'](_0x2fc9af[_0xb8ef('0x31')]['fields']));_0x36679a[_0xb8ef('0x34')]=_0x36679a[_0xb8ef('0x34')][_0xb8ef('0x35')]?_0x36679a[_0xb8ef('0x34')]:_0x73a969[_0xb8ef('0x2f')];if(!_0x2fc9af[_0xb8ef('0x31')][_0xb8ef('0x36')](_0xb8ef('0x37'))){_0x36679a[_0xb8ef('0x38')]=qs['limit'](_0x2fc9af[_0xb8ef('0x31')][_0xb8ef('0x38')]);_0x36679a[_0xb8ef('0x1d')]=qs['offset'](_0x2fc9af[_0xb8ef('0x31')][_0xb8ef('0x1d')]);}_0x36679a[_0xb8ef('0x39')]=qs[_0xb8ef('0x3a')](_0x2fc9af[_0xb8ef('0x31')]['sort']);_0x36679a['where']=qs[_0xb8ef('0x32')](_['pick'](_0x2fc9af[_0xb8ef('0x31')],_0x73a969['filters']),_0x5add1a);if(_0x2fc9af[_0xb8ef('0x31')][_0xb8ef('0x3b')]){_0x36679a['where']=_['merge'](_0x36679a[_0xb8ef('0x3c')],{'$or':_['map'](_0x5add1a,function(_0x38a16c){if(_0x38a16c[_0xb8ef('0x2d')]!==_0xb8ef('0x3d')){var _0x37fdde={};_0x37fdde[_0x38a16c['name']]={'$like':'%'+_0x2fc9af[_0xb8ef('0x31')]['filter']+'%'};return _0x37fdde;}})});}_0x36679a=_['merge']({},_0x36679a,_0x2fc9af[_0xb8ef('0x3e')]);var _0x5d5de8={'where':_0x36679a[_0xb8ef('0x3c')]};return db[_0xb8ef('0x3f')]['count'](_0x5d5de8)[_0xb8ef('0x24')](function(_0xb71933){_0x26d3e4[_0xb8ef('0x1f')]=_0xb71933;if(_0x2fc9af[_0xb8ef('0x31')][_0xb8ef('0x40')]){_0x36679a[_0xb8ef('0x41')]=[{'all':!![]}];}return db['Schedule'][_0xb8ef('0x42')](_0x36679a);})[_0xb8ef('0x24')](function(_0x3426ad){_0x26d3e4[_0xb8ef('0x43')]=_0x3426ad;return _0x26d3e4;})['then'](respondWithFilteredResult(_0xdeceaf,_0x36679a))[_0xb8ef('0x44')](handleError(_0xdeceaf,null));};exports['show']=function(_0x29b64a,_0x348fda){var _0x4de404={'raw':![],'where':{'id':_0x29b64a[_0xb8ef('0x45')]['id']}},_0x5dd516={};_0x5dd516[_0xb8ef('0x2f')]=_[_0xb8ef('0x30')](db[_0xb8ef('0x3f')]['rawAttributes']);_0x5dd516['query']=_['keys'](_0x29b64a['query']);_0x5dd516['filters']=_['intersection'](_0x5dd516[_0xb8ef('0x2f')],_0x5dd516[_0xb8ef('0x31')]);_0x4de404['attributes']=_[_0xb8ef('0x33')](_0x5dd516[_0xb8ef('0x2f')],qs[_0xb8ef('0x46')](_0x29b64a[_0xb8ef('0x31')]['fields']));_0x4de404['attributes']=_0x4de404[_0xb8ef('0x34')][_0xb8ef('0x35')]?_0x4de404[_0xb8ef('0x34')]:_0x5dd516['model'];if(_0x29b64a['query'][_0xb8ef('0x40')]){_0x4de404[_0xb8ef('0x41')]=[{'all':!![]}];}_0x4de404=_[_0xb8ef('0x47')]({},_0x4de404,_0x29b64a[_0xb8ef('0x3e')]);return db[_0xb8ef('0x3f')][_0xb8ef('0x48')](_0x4de404)[_0xb8ef('0x24')](handleEntityNotFound(_0x348fda,null))[_0xb8ef('0x24')](respondWithResult(_0x348fda,null))[_0xb8ef('0x44')](handleError(_0x348fda,null));};exports[_0xb8ef('0x49')]=function(_0x202405,_0x6dd1e6){return db[_0xb8ef('0x3f')][_0xb8ef('0x49')](_0x202405['body'],{})[_0xb8ef('0x24')](function(_0x8b50e6){var _0x10f6f1=_0x202405['user']['get']({'plain':!![]});if(!_0x10f6f1)throw new Error(_0xb8ef('0x4a'));if(_0x10f6f1[_0xb8ef('0x4b')]===_0xb8ef('0x4c')){var _0x26be62=_0x8b50e6['get']({'plain':!![]});var _0x18ef04=_0xb8ef('0x4d');return db['UserProfileSection'][_0xb8ef('0x48')]({'where':{'name':_0x18ef04,'userProfileId':_0x10f6f1[_0xb8ef('0x4e')]},'raw':!![]})[_0xb8ef('0x24')](function(_0x23bd38){if(_0x23bd38&&_0x23bd38[_0xb8ef('0x4f')]===0x0){return db['UserProfileResource'][_0xb8ef('0x49')]({'name':_0x26be62[_0xb8ef('0x2a')],'resourceId':_0x26be62['id'],'type':_0x23bd38[_0xb8ef('0x2a')],'sectionId':_0x23bd38['id']},{})[_0xb8ef('0x24')](function(){return _0x8b50e6;});}else{return _0x8b50e6;}})['catch'](function(_0x19b83d){logger['error'](_0xb8ef('0x50'),_0x19b83d);throw _0x19b83d;});}return _0x8b50e6;})[_0xb8ef('0x24')](respondWithResult(_0x6dd1e6,0xc9))[_0xb8ef('0x44')](handleError(_0x6dd1e6,null));};exports['update']=function(_0x33eead,_0x5f45af){if(_0x33eead[_0xb8ef('0x51')]['id']){delete _0x33eead[_0xb8ef('0x51')]['id'];}return db[_0xb8ef('0x3f')][_0xb8ef('0x48')]({'where':{'id':_0x33eead[_0xb8ef('0x45')]['id']}})[_0xb8ef('0x24')](handleEntityNotFound(_0x5f45af,null))[_0xb8ef('0x24')](saveUpdates(_0x33eead[_0xb8ef('0x51')],null))[_0xb8ef('0x24')](respondWithResult(_0x5f45af,null))[_0xb8ef('0x44')](handleError(_0x5f45af,null));};exports[_0xb8ef('0x25')]=function(_0x4ad285,_0x1b39ea){return db[_0xb8ef('0x3f')]['find']({'where':{'id':_0x4ad285['params']['id']}})[_0xb8ef('0x24')](handleEntityNotFound(_0x1b39ea,null))['then'](removeEntity(_0x1b39ea,null))[_0xb8ef('0x44')](handleError(_0x1b39ea,null));};exports['run']=function(_0x116412,_0x420745,_0x340db1){var _0x463c93=require('../../config/schedule');return db[_0xb8ef('0x3f')][_0xb8ef('0x48')]({'where':{'id':_0x116412['params']['id']},'raw':!![]})['then'](handleEntityNotFound(_0x420745,null))['then'](function(){_0x463c93[_0xb8ef('0x52')](_0x116412[_0xb8ef('0x45')]['id']);})[_0xb8ef('0x24')](respondWithStatusCode(_0x420745,null))[_0xb8ef('0x44')](handleError(_0x420745,null));};
\ No newline at end of file
+var _0x0363=['limit','set','apply','reject','save','then','destroy','Scheduler','sendStatus','error','stack','name','send','index','map','Schedule','rawAttributes','fieldName','type','model','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','includeAll','rows','catch','params','keys','include','options','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','update','find','run','../../config/schedule','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','status','end','json','offset','undefined','count'];(function(_0x496be4,_0x158dcb){var _0x535de1=function(_0x67a78e){while(--_0x67a78e){_0x496be4['push'](_0x496be4['shift']());}};_0x535de1(++_0x158dcb);}(_0x0363,0x1d9));var _0x3036=function(_0x37468e,_0x14c7a4){_0x37468e=_0x37468e-0x0;var _0x203d9f=_0x0363[_0x37468e];return _0x203d9f;};'use strict';var emlformat=require(_0x3036('0x0'));var rimraf=require(_0x3036('0x1'));var zipdir=require(_0x3036('0x2'));var jsonpatch=require(_0x3036('0x3'));var rp=require(_0x3036('0x4'));var moment=require(_0x3036('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x3036('0x6'));var sox=require(_0x3036('0x7'));var csv=require(_0x3036('0x8'));var ejs=require(_0x3036('0x9'));var fs=require('fs');var fs_extra=require(_0x3036('0xa'));var _=require(_0x3036('0xb'));var squel=require(_0x3036('0xc'));var crypto=require(_0x3036('0xd'));var jsforce=require(_0x3036('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x3036('0x8'));var querystring=require(_0x3036('0xf'));var Papa=require(_0x3036('0x10'));var Redis=require(_0x3036('0x11'));var authService=require(_0x3036('0x12'));var qs=require(_0x3036('0x13'));var as=require(_0x3036('0x14'));var hardwareService=require(_0x3036('0x15'));var logger=require('../../config/logger')(_0x3036('0x16'));var utils=require('../../config/utils');var config=require(_0x3036('0x17'));var licenseUtil=require(_0x3036('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x43f8d0,_0x48a957){_0x48a957=_0x48a957||0xcc;return function(_0x2cef89){if(_0x2cef89){return _0x43f8d0['sendStatus'](_0x48a957);}return _0x43f8d0[_0x3036('0x19')](_0x48a957)[_0x3036('0x1a')]();};}function respondWithResult(_0x5be471,_0x3ed2ee){_0x3ed2ee=_0x3ed2ee||0xc8;return function(_0x43c3cf){if(_0x43c3cf){return _0x5be471['status'](_0x3ed2ee)[_0x3036('0x1b')](_0x43c3cf);}};}function respondWithFilteredResult(_0x177e03,_0x3e924d){return function(_0x4f84fd){if(_0x4f84fd){var _0x13800b=typeof _0x3e924d[_0x3036('0x1c')]===_0x3036('0x1d')&&typeof _0x3e924d['limit']===_0x3036('0x1d');var _0x733895=_0x4f84fd[_0x3036('0x1e')];var _0x53c48b=_0x13800b?0x0:_0x3e924d['offset'];var _0x24f100=_0x13800b?_0x4f84fd['count']:_0x3e924d[_0x3036('0x1c')]+_0x3e924d[_0x3036('0x1f')];var _0x2d263b;if(_0x24f100>=_0x733895){_0x24f100=_0x733895;_0x2d263b=0xc8;}else{_0x2d263b=0xce;}_0x177e03[_0x3036('0x19')](_0x2d263b);return _0x177e03[_0x3036('0x20')]('Content-Range',_0x53c48b+'-'+_0x24f100+'/'+_0x733895)[_0x3036('0x1b')](_0x4f84fd);}return null;};}function patchUpdates(_0xa8e950){return function(_0x1307ea){try{jsonpatch[_0x3036('0x21')](_0x1307ea,_0xa8e950,!![]);}catch(_0x398827){return BPromise[_0x3036('0x22')](_0x398827);}return _0x1307ea[_0x3036('0x23')]();};}function saveUpdates(_0x505f86,_0xc061b3){return function(_0x3c8c5a){if(_0x3c8c5a){return _0x3c8c5a['update'](_0x505f86)[_0x3036('0x24')](function(_0x296763){return _0x296763;});}return null;};}function removeEntity(_0x34d216,_0x177733){return function(_0x28e30e){if(_0x28e30e){return _0x28e30e[_0x3036('0x25')]()[_0x3036('0x24')](function(){var _0x3de002=_0x28e30e['get']({'plain':!![]});var _0x3cd90c=_0x3036('0x26');return db['UserProfileResource'][_0x3036('0x25')]({'where':{'type':_0x3cd90c,'resourceId':_0x3de002['id']}})[_0x3036('0x24')](function(){return _0x28e30e;});})[_0x3036('0x24')](function(){_0x34d216[_0x3036('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x25c837,_0x4430f1){return function(_0x4cd42b){if(!_0x4cd42b){_0x25c837[_0x3036('0x27')](0x194);}return _0x4cd42b;};}function handleError(_0x5c9b80,_0x25d4b0){_0x25d4b0=_0x25d4b0||0x1f4;return function(_0x3fb0c9){logger[_0x3036('0x28')](_0x3fb0c9[_0x3036('0x29')]);if(_0x3fb0c9[_0x3036('0x2a')]){delete _0x3fb0c9[_0x3036('0x2a')];}_0x5c9b80[_0x3036('0x19')](_0x25d4b0)[_0x3036('0x2b')](_0x3fb0c9);};}exports[_0x3036('0x2c')]=function(_0x58bba0,_0x2f4f1c){var _0x35949a={},_0x4d1bce={},_0x391aa4={'count':0x0,'rows':[]};var _0x504a88=_[_0x3036('0x2d')](db[_0x3036('0x2e')][_0x3036('0x2f')],function(_0x2a31c0){return{'name':_0x2a31c0[_0x3036('0x30')],'type':_0x2a31c0[_0x3036('0x31')]['key']};});_0x4d1bce[_0x3036('0x32')]=_[_0x3036('0x2d')](_0x504a88,_0x3036('0x2a'));_0x4d1bce[_0x3036('0x33')]=_['keys'](_0x58bba0['query']);_0x4d1bce[_0x3036('0x34')]=_[_0x3036('0x35')](_0x4d1bce['model'],_0x4d1bce[_0x3036('0x33')]);_0x35949a['attributes']=_['intersection'](_0x4d1bce[_0x3036('0x32')],qs[_0x3036('0x36')](_0x58bba0[_0x3036('0x33')][_0x3036('0x36')]));_0x35949a['attributes']=_0x35949a[_0x3036('0x37')][_0x3036('0x38')]?_0x35949a[_0x3036('0x37')]:_0x4d1bce[_0x3036('0x32')];if(!_0x58bba0[_0x3036('0x33')]['hasOwnProperty'](_0x3036('0x39'))){_0x35949a['limit']=qs[_0x3036('0x1f')](_0x58bba0[_0x3036('0x33')][_0x3036('0x1f')]);_0x35949a[_0x3036('0x1c')]=qs[_0x3036('0x1c')](_0x58bba0[_0x3036('0x33')][_0x3036('0x1c')]);}_0x35949a[_0x3036('0x3a')]=qs[_0x3036('0x3b')](_0x58bba0[_0x3036('0x33')][_0x3036('0x3b')]);_0x35949a[_0x3036('0x3c')]=qs[_0x3036('0x34')](_[_0x3036('0x3d')](_0x58bba0[_0x3036('0x33')],_0x4d1bce['filters']),_0x504a88);if(_0x58bba0[_0x3036('0x33')][_0x3036('0x3e')]){_0x35949a[_0x3036('0x3c')]=_[_0x3036('0x3f')](_0x35949a[_0x3036('0x3c')],{'$or':_['map'](_0x504a88,function(_0x22c672){if(_0x22c672[_0x3036('0x31')]!=='VIRTUAL'){var _0x40856e={};_0x40856e[_0x22c672[_0x3036('0x2a')]]={'$like':'%'+_0x58bba0['query'][_0x3036('0x3e')]+'%'};return _0x40856e;}})});}_0x35949a=_[_0x3036('0x3f')]({},_0x35949a,_0x58bba0['options']);var _0x4e549f={'where':_0x35949a['where']};return db[_0x3036('0x2e')][_0x3036('0x1e')](_0x4e549f)[_0x3036('0x24')](function(_0x531835){_0x391aa4['count']=_0x531835;if(_0x58bba0[_0x3036('0x33')][_0x3036('0x40')]){_0x35949a['include']=[{'all':!![]}];}return db[_0x3036('0x2e')]['findAll'](_0x35949a);})[_0x3036('0x24')](function(_0x3c6792){_0x391aa4[_0x3036('0x41')]=_0x3c6792;return _0x391aa4;})['then'](respondWithFilteredResult(_0x2f4f1c,_0x35949a))[_0x3036('0x42')](handleError(_0x2f4f1c,null));};exports['show']=function(_0x162696,_0x5311ff){var _0x11edd6={'raw':![],'where':{'id':_0x162696[_0x3036('0x43')]['id']}},_0x3803a3={};_0x3803a3[_0x3036('0x32')]=_[_0x3036('0x44')](db[_0x3036('0x2e')][_0x3036('0x2f')]);_0x3803a3[_0x3036('0x33')]=_[_0x3036('0x44')](_0x162696['query']);_0x3803a3[_0x3036('0x34')]=_[_0x3036('0x35')](_0x3803a3[_0x3036('0x32')],_0x3803a3[_0x3036('0x33')]);_0x11edd6['attributes']=_[_0x3036('0x35')](_0x3803a3[_0x3036('0x32')],qs[_0x3036('0x36')](_0x162696['query'][_0x3036('0x36')]));_0x11edd6[_0x3036('0x37')]=_0x11edd6[_0x3036('0x37')][_0x3036('0x38')]?_0x11edd6['attributes']:_0x3803a3[_0x3036('0x32')];if(_0x162696['query'][_0x3036('0x40')]){_0x11edd6[_0x3036('0x45')]=[{'all':!![]}];}_0x11edd6=_[_0x3036('0x3f')]({},_0x11edd6,_0x162696[_0x3036('0x46')]);return db['Schedule']['find'](_0x11edd6)[_0x3036('0x24')](handleEntityNotFound(_0x5311ff,null))['then'](respondWithResult(_0x5311ff,null))['catch'](handleError(_0x5311ff,null));};exports[_0x3036('0x47')]=function(_0x189515,_0x4680ee){return db[_0x3036('0x2e')]['create'](_0x189515[_0x3036('0x48')],{})[_0x3036('0x24')](function(_0x4caa24){var _0x16aba7=_0x189515[_0x3036('0x49')][_0x3036('0x4a')]({'plain':!![]});if(!_0x16aba7)throw new Error(_0x3036('0x4b'));if(_0x16aba7['role']==='user'){var _0x2c3f1e=_0x4caa24[_0x3036('0x4a')]({'plain':!![]});var _0x4af264=_0x3036('0x26');return db[_0x3036('0x4c')]['find']({'where':{'name':_0x4af264,'userProfileId':_0x16aba7[_0x3036('0x4d')]},'raw':!![]})[_0x3036('0x24')](function(_0x12175c){if(_0x12175c&&_0x12175c[_0x3036('0x4e')]===0x0){return db[_0x3036('0x4f')]['create']({'name':_0x2c3f1e[_0x3036('0x2a')],'resourceId':_0x2c3f1e['id'],'type':_0x12175c['name'],'sectionId':_0x12175c['id']},{})[_0x3036('0x24')](function(){return _0x4caa24;});}else{return _0x4caa24;}})[_0x3036('0x42')](function(_0x62f052){logger[_0x3036('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x62f052);throw _0x62f052;});}return _0x4caa24;})[_0x3036('0x24')](respondWithResult(_0x4680ee,0xc9))[_0x3036('0x42')](handleError(_0x4680ee,null));};exports[_0x3036('0x50')]=function(_0x4b134e,_0x53c122){if(_0x4b134e['body']['id']){delete _0x4b134e[_0x3036('0x48')]['id'];}return db[_0x3036('0x2e')][_0x3036('0x51')]({'where':{'id':_0x4b134e['params']['id']}})[_0x3036('0x24')](handleEntityNotFound(_0x53c122,null))[_0x3036('0x24')](saveUpdates(_0x4b134e[_0x3036('0x48')],null))[_0x3036('0x24')](respondWithResult(_0x53c122,null))[_0x3036('0x42')](handleError(_0x53c122,null));};exports[_0x3036('0x25')]=function(_0x35c51d,_0x5a5611){return db[_0x3036('0x2e')]['find']({'where':{'id':_0x35c51d[_0x3036('0x43')]['id']}})[_0x3036('0x24')](handleEntityNotFound(_0x5a5611,null))[_0x3036('0x24')](removeEntity(_0x5a5611,null))['catch'](handleError(_0x5a5611,null));};exports[_0x3036('0x52')]=function(_0x4e1cdf,_0x433069,_0x50ff53){var _0xa5e120=require(_0x3036('0x53'));return db[_0x3036('0x2e')][_0x3036('0x51')]({'where':{'id':_0x4e1cdf[_0x3036('0x43')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x433069,null))[_0x3036('0x24')](function(){_0xa5e120['run'](_0x4e1cdf['params']['id']);})[_0x3036('0x24')](respondWithStatusCode(_0x433069,null))['catch'](handleError(_0x433069,null));};
\ No newline at end of file
index eec8744..ca415b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5adf=['../../config/logger','api','request-promise','path','../../config/environment','exports','define','Schedule','lodash','util'];(function(_0x2faddb,_0xc18b78){var _0x273c05=function(_0x1a3785){while(--_0x1a3785){_0x2faddb['push'](_0x2faddb['shift']());}};_0x273c05(++_0xc18b78);}(_0x5adf,0x17a));var _0xf5ad=function(_0x15dd7c,_0x4500c5){_0x15dd7c=_0x15dd7c-0x0;var _0x4bbb1a=_0x5adf[_0x15dd7c];return _0x4bbb1a;};'use strict';var _=require(_0xf5ad('0x0'));var util=require(_0xf5ad('0x1'));var logger=require(_0xf5ad('0x2'))(_0xf5ad('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xf5ad('0x4'));var fs=require('fs');var path=require(_0xf5ad('0x5'));var rimraf=require('rimraf');var config=require(_0xf5ad('0x6'));var attributes=require('./schedule.attributes');module[_0xf5ad('0x7')]=function(_0x2b1910,_0x42176b){return _0x2b1910[_0xf5ad('0x8')](_0xf5ad('0x9'),attributes,{'tableName':'tools_schedules','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x43e4=['path','../../config/environment','exports','define','tools_schedules','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x43e4,0x7e));var _0x443e=function(_0xbd08b4,_0x4790ed){_0xbd08b4=_0xbd08b4-0x0;var _0x314f1e=_0x43e4[_0xbd08b4];return _0x314f1e;};'use strict';var _=require(_0x443e('0x0'));var util=require(_0x443e('0x1'));var logger=require(_0x443e('0x2'))(_0x443e('0x3'));var moment=require(_0x443e('0x4'));var BPromise=require(_0x443e('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x443e('0x6'));var rimraf=require('rimraf');var config=require(_0x443e('0x7'));var attributes=require('./schedule.attributes');module[_0x443e('0x8')]=function(_0x3aec56,_0x3b5844){return _0x3aec56[_0x443e('0x9')]('Schedule',attributes,{'tableName':_0x443e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 170fc1c..3185faa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fc0=['util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','Schedule,\x20%s,\x20%s','debug','Schedule,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result'];(function(_0x47a41f,_0x48d92b){var _0x2411f5=function(_0x3f5b72){while(--_0x3f5b72){_0x47a41f['push'](_0x47a41f['shift']());}};_0x2411f5(++_0x48d92b);}(_0x3fc0,0x160));var _0x03fc=function(_0x3899d1,_0x4aa04c){_0x3899d1=_0x3899d1-0x0;var _0xeb4a7d=_0x3fc0[_0x3899d1];return _0xeb4a7d;};'use strict';var _=require('lodash');var util=require(_0x03fc('0x0'));var moment=require(_0x03fc('0x1'));var BPromise=require(_0x03fc('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x03fc('0x3'));var db=require(_0x03fc('0x4'))['db'];var utils=require(_0x03fc('0x5'));var logger=require(_0x03fc('0x6'))(_0x03fc('0x7'));var config=require(_0x03fc('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x03fc('0x9')][_0x03fc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x551117,_0x3c274e,_0x1fd486){return new BPromise(function(_0x1127da,_0x42413c){return client[_0x03fc('0xb')](_0x551117,_0x1fd486)[_0x03fc('0xc')](function(_0x50fd5f){logger[_0x03fc('0xd')](_0x03fc('0xe'),_0x3c274e,'request\x20sent');logger[_0x03fc('0xf')](_0x03fc('0x10'),_0x3c274e,_0x03fc('0x11'),JSON['stringify'](_0x50fd5f));if(_0x50fd5f[_0x03fc('0x12')]){if(_0x50fd5f[_0x03fc('0x12')][_0x03fc('0x13')]===0x1f4){logger[_0x03fc('0x12')]('Schedule,\x20%s,\x20%s',_0x3c274e,_0x50fd5f[_0x03fc('0x12')][_0x03fc('0x14')]);return _0x42413c(_0x50fd5f[_0x03fc('0x12')][_0x03fc('0x14')]);}logger[_0x03fc('0x12')]('Schedule,\x20%s,\x20%s',_0x3c274e,_0x50fd5f[_0x03fc('0x12')][_0x03fc('0x14')]);return _0x1127da(_0x50fd5f[_0x03fc('0x12')][_0x03fc('0x14')]);}else{logger[_0x03fc('0xd')]('Schedule,\x20%s,\x20%s',_0x3c274e,'request\x20sent');_0x1127da(_0x50fd5f[_0x03fc('0x15')]['message']);}})['catch'](function(_0x1b1625){logger['error']('Schedule,\x20%s,\x20%s',_0x3c274e,_0x1b1625);_0x42413c(_0x1b1625);});});}
\ No newline at end of file
+var _0x6963=['catch','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','request\x20sent','debug','stringify','error','code','Schedule,\x20%s,\x20%s','message','result'];(function(_0x583b0b,_0x46857f){var _0x37da47=function(_0xc0b17c){while(--_0xc0b17c){_0x583b0b['push'](_0x583b0b['shift']());}};_0x37da47(++_0x46857f);}(_0x6963,0x1a5));var _0x3696=function(_0x46ba21,_0xdf1c00){_0x46ba21=_0x46ba21-0x0;var _0x562548=_0x6963[_0x46ba21];return _0x562548;};'use strict';var _=require(_0x3696('0x0'));var util=require(_0x3696('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x3696('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3696('0x3'))['db'];var utils=require(_0x3696('0x4'));var logger=require(_0x3696('0x5'))(_0x3696('0x6'));var config=require(_0x3696('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x3696('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3e80c7,_0xb0f0f6,_0x101c54){return new BPromise(function(_0x10f8df,_0x1a08e6){return client[_0x3696('0x9')](_0x3e80c7,_0x101c54)[_0x3696('0xa')](function(_0x49007b){logger[_0x3696('0xb')]('Schedule,\x20%s,\x20%s',_0xb0f0f6,_0x3696('0xc'));logger[_0x3696('0xd')]('Schedule,\x20%s,\x20%s,\x20%s',_0xb0f0f6,_0x3696('0xc'),JSON[_0x3696('0xe')](_0x49007b));if(_0x49007b[_0x3696('0xf')]){if(_0x49007b['error'][_0x3696('0x10')]===0x1f4){logger[_0x3696('0xf')](_0x3696('0x11'),_0xb0f0f6,_0x49007b['error'][_0x3696('0x12')]);return _0x1a08e6(_0x49007b['error'][_0x3696('0x12')]);}logger[_0x3696('0xf')]('Schedule,\x20%s,\x20%s',_0xb0f0f6,_0x49007b['error'][_0x3696('0x12')]);return _0x10f8df(_0x49007b[_0x3696('0xf')][_0x3696('0x12')]);}else{logger[_0x3696('0xb')](_0x3696('0x11'),_0xb0f0f6,_0x3696('0xc'));_0x10f8df(_0x49007b[_0x3696('0x13')]['message']);}})[_0x3696('0x14')](function(_0x111928){logger[_0x3696('0xf')](_0x3696('0x11'),_0xb0f0f6,_0x111928);_0x1a08e6(_0x111928);});});}
\ No newline at end of file
index 678bf72..22d4ce2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2899=['multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./screenRecording.controller','get','index','/describe','describe','/:id','show','isAuthenticated','post','create','put','update','delete','destroy','exports'];(function(_0x41634b,_0x35d7a4){var _0x3da878=function(_0x4019b0){while(--_0x4019b0){_0x41634b['push'](_0x41634b['shift']());}};_0x3da878(++_0x35d7a4);}(_0x2899,0x1b8));var _0x9289=function(_0x2b7be5,_0x30fec7){_0x2b7be5=_0x2b7be5-0x0;var _0x156ac9=_0x2899[_0x2b7be5];return _0x156ac9;};'use strict';var multer=require(_0x9289('0x0'));var util=require('util');var path=require(_0x9289('0x1'));var timeout=require(_0x9289('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x9289('0x3'));var auth=require(_0x9289('0x4'));var interaction=require(_0x9289('0x5'));var config=require(_0x9289('0x6'));var controller=require(_0x9289('0x7'));router[_0x9289('0x8')]('/',auth['isAuthenticated'](),controller[_0x9289('0x9')]);router[_0x9289('0x8')](_0x9289('0xa'),auth['isAuthenticated'](),controller[_0x9289('0xb')]);router[_0x9289('0x8')](_0x9289('0xc'),auth['isAuthenticated'](),controller[_0x9289('0xd')]);router[_0x9289('0x8')]('/:id/download',auth[_0x9289('0xe')](),controller['download']);router[_0x9289('0xf')]('/',auth['isAuthenticated'](),controller[_0x9289('0x10')]);router[_0x9289('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x9289('0x12')]);router[_0x9289('0x13')]('/:id',auth[_0x9289('0xe')](),controller[_0x9289('0x14')]);module[_0x9289('0x15')]=router;
\ No newline at end of file
+var _0x1dbf=['/:id','destroy','exports','multer','util','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','download','post','create','update','delete'];(function(_0x37d51d,_0x473cde){var _0x38f60d=function(_0x137e65){while(--_0x137e65){_0x37d51d['push'](_0x37d51d['shift']());}};_0x38f60d(++_0x473cde);}(_0x1dbf,0x157));var _0xf1db=function(_0x5302fb,_0x1a2db3){_0x5302fb=_0x5302fb-0x0;var _0x43e6a4=_0x1dbf[_0x5302fb];return _0x43e6a4;};'use strict';var multer=require(_0xf1db('0x0'));var util=require(_0xf1db('0x1'));var path=require(_0xf1db('0x2'));var timeout=require('connect-timeout');var express=require(_0xf1db('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xf1db('0x4'));var interaction=require(_0xf1db('0x5'));var config=require(_0xf1db('0x6'));var controller=require('./screenRecording.controller');router[_0xf1db('0x7')]('/',auth[_0xf1db('0x8')](),controller[_0xf1db('0x9')]);router['get'](_0xf1db('0xa'),auth[_0xf1db('0x8')](),controller[_0xf1db('0xb')]);router['get']('/:id',auth[_0xf1db('0x8')](),controller['show']);router[_0xf1db('0x7')]('/:id/download',auth[_0xf1db('0x8')](),controller[_0xf1db('0xc')]);router[_0xf1db('0xd')]('/',auth[_0xf1db('0x8')](),controller[_0xf1db('0xe')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xf1db('0xf')]);router[_0xf1db('0x10')](_0xf1db('0x11'),auth['isAuthenticated'](),controller[_0xf1db('0x12')]);module[_0xf1db('0x13')]=router;
\ No newline at end of file
index 48e0503..41f2dd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d37=['replace','INTEGER','setDataValue','subtract','closedAt','duration','DATE','startedAt','format','MM-DD-YYYY\x20HH:mm','toString','createdAt','updatedAt','sequelize','moment','path','exports','VIRTUAL','getDataValue','extname','STRING'];(function(_0x5f09c5,_0x2bfca0){var _0x426ad9=function(_0x18fe5f){while(--_0x18fe5f){_0x5f09c5['push'](_0x5f09c5['shift']());}};_0x426ad9(++_0x2bfca0);}(_0x7d37,0x1db));var _0x77d3=function(_0xf0a42d,_0x483ffe){_0xf0a42d=_0xf0a42d-0x0;var _0x253bc1=_0x7d37[_0xf0a42d];return _0x253bc1;};'use strict';var Sequelize=require(_0x77d3('0x0'));var moment=require(_0x77d3('0x1'));var path=require(_0x77d3('0x2'));var config=require('../../config/environment');module[_0x77d3('0x3')]={'format':{'type':Sequelize[_0x77d3('0x4')],'get':function(){return this[_0x77d3('0x5')]('value')?path[_0x77d3('0x6')](this[_0x77d3('0x5')]('value')):undefined;}},'interactionid':{'type':Sequelize[_0x77d3('0x7')]},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize[_0x77d3('0x7')],'set':function(_0x519c6e){var _0x40235d=_0x519c6e[_0x77d3('0x8')](/\\/g,'/');this['setDataValue']('value',_0x40235d);}},'rating':{'type':Sequelize[_0x77d3('0x9')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x77d3('0x9')],'set':function(_0x506caa){this[_0x77d3('0xa')]('startedAt',moment()[_0x77d3('0xb')](_0x506caa,'ms'));this['setDataValue'](_0x77d3('0xc'),moment());this['setDataValue'](_0x77d3('0xd'),_0x506caa);}},'startedAt':{'type':Sequelize[_0x77d3('0xe')],'get':function(){return moment(this[_0x77d3('0x5')](_0x77d3('0xf')))[_0x77d3('0x10')](_0x77d3('0x11'))[_0x77d3('0x12')]();}},'closedAt':{'type':Sequelize[_0x77d3('0xe')],'get':function(){return moment(this[_0x77d3('0x5')]('closedAt'))[_0x77d3('0x10')]('MM-DD-YYYY\x20HH:mm')['toString']();}},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x77d3('0x5')](_0x77d3('0x13')))[_0x77d3('0x10')](_0x77d3('0x11'))[_0x77d3('0x12')]();}},'updatedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x77d3('0x5')](_0x77d3('0x14')))['format']('MM-DD-YYYY\x20HH:mm')[_0x77d3('0x12')]();}}};
\ No newline at end of file
+var _0x627e=['value','extname','STRING','replace','setDataValue','INTEGER','startedAt','closedAt','duration','DATE','format','MM-DD-YYYY\x20HH:mm','toString','createdAt','updatedAt','sequelize','moment','path','../../config/environment','exports','getDataValue'];(function(_0x265b0a,_0x34c7ea){var _0x19294b=function(_0x2ade23){while(--_0x2ade23){_0x265b0a['push'](_0x265b0a['shift']());}};_0x19294b(++_0x34c7ea);}(_0x627e,0x14a));var _0xe627=function(_0x41b370,_0x1e7e54){_0x41b370=_0x41b370-0x0;var _0xa9cc01=_0x627e[_0x41b370];return _0xa9cc01;};'use strict';var Sequelize=require(_0xe627('0x0'));var moment=require(_0xe627('0x1'));var path=require(_0xe627('0x2'));var config=require(_0xe627('0x3'));module[_0xe627('0x4')]={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xe627('0x5')](_0xe627('0x6'))?path[_0xe627('0x7')](this['getDataValue']('value')):undefined;}},'interactionid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xe627('0x8')]},'value':{'type':Sequelize[_0xe627('0x8')],'set':function(_0x45e49a){var _0x2d4f63=_0x45e49a[_0xe627('0x9')](/\\/g,'/');this[_0xe627('0xa')]('value',_0x2d4f63);}},'rating':{'type':Sequelize[_0xe627('0xb')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize['INTEGER'],'set':function(_0x56549e){this[_0xe627('0xa')](_0xe627('0xc'),moment()['subtract'](_0x56549e,'ms'));this['setDataValue'](_0xe627('0xd'),moment());this[_0xe627('0xa')](_0xe627('0xe'),_0x56549e);}},'startedAt':{'type':Sequelize[_0xe627('0xf')],'get':function(){return moment(this[_0xe627('0x5')](_0xe627('0xc')))[_0xe627('0x10')](_0xe627('0x11'))[_0xe627('0x12')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0xe627('0x5')](_0xe627('0xd')))[_0xe627('0x10')]('MM-DD-YYYY\x20HH:mm')[_0xe627('0x12')]();}},'createdAt':{'type':Sequelize[_0xe627('0xf')],'get':function(){return moment(this[_0xe627('0x5')](_0xe627('0x13')))[_0xe627('0x10')](_0xe627('0x11'))[_0xe627('0x12')]();}},'updatedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0xe627('0x5')](_0xe627('0x14')))[_0xe627('0x10')](_0xe627('0x11'))[_0xe627('0x12')]();}}};
\ No newline at end of file
index 7cdbe4a..bcd41d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbf5=['papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/license/util','sendStatus','status','json','offset','undefined','count','set','Content-Range','save','update','then','destroy','end','error','stack','name','send','index','map','ScreenRecording','rawAttributes','fieldName','type','key','model','format','query','keys','intersection','fields','attributes','length','nolimit','limit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','duration','createdAt','closedAt','value','describe','download','uniqueid','join','root','server/files/screen_recordings','decryptFile','secrets','recording','existsSync','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring'];(function(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0xdbf5,0x18c));var _0x5dbf=function(_0x4c8444,_0x52ab2d){_0x4c8444=_0x4c8444-0x0;var _0x247091=_0xdbf5[_0x4c8444];return _0x247091;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5dbf('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x5dbf('0x1'));var moment=require(_0x5dbf('0x2'));var BPromise=require(_0x5dbf('0x3'));var Mustache=require(_0x5dbf('0x4'));var util=require(_0x5dbf('0x5'));var path=require(_0x5dbf('0x6'));var sox=require(_0x5dbf('0x7'));var csv=require(_0x5dbf('0x8'));var ejs=require(_0x5dbf('0x9'));var fs=require('fs');var fs_extra=require(_0x5dbf('0xa'));var _=require(_0x5dbf('0xb'));var squel=require(_0x5dbf('0xc'));var crypto=require(_0x5dbf('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x5dbf('0xe'));var toCsv=require('to-csv');var querystring=require(_0x5dbf('0xf'));var Papa=require(_0x5dbf('0x10'));var Redis=require(_0x5dbf('0x11'));var authService=require(_0x5dbf('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x5dbf('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x5dbf('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x5dbf('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x182cec,_0x2bb7ed){_0x2bb7ed=_0x2bb7ed||0xcc;return function(_0x1453a9){if(_0x1453a9){return _0x182cec[_0x5dbf('0x16')](_0x2bb7ed);}return _0x182cec[_0x5dbf('0x17')](_0x2bb7ed)['end']();};}function respondWithResult(_0x4803ca,_0x2b4e1c){_0x2b4e1c=_0x2b4e1c||0xc8;return function(_0x3480c8){if(_0x3480c8){return _0x4803ca['status'](_0x2b4e1c)[_0x5dbf('0x18')](_0x3480c8);}};}function respondWithFilteredResult(_0x248e3c,_0x23f763){return function(_0x2dfa44){if(_0x2dfa44){var _0x181816=typeof _0x23f763[_0x5dbf('0x19')]===_0x5dbf('0x1a')&&typeof _0x23f763['limit']==='undefined';var _0x16dc82=_0x2dfa44[_0x5dbf('0x1b')];var _0x39c7aa=_0x181816?0x0:_0x23f763[_0x5dbf('0x19')];var _0x20c2b0=_0x181816?_0x2dfa44['count']:_0x23f763[_0x5dbf('0x19')]+_0x23f763['limit'];var _0x565efa;if(_0x20c2b0>=_0x16dc82){_0x20c2b0=_0x16dc82;_0x565efa=0xc8;}else{_0x565efa=0xce;}_0x248e3c['status'](_0x565efa);return _0x248e3c[_0x5dbf('0x1c')](_0x5dbf('0x1d'),_0x39c7aa+'-'+_0x20c2b0+'/'+_0x16dc82)[_0x5dbf('0x18')](_0x2dfa44);}return null;};}function patchUpdates(_0x2ab57c){return function(_0x1e3cce){try{jsonpatch['apply'](_0x1e3cce,_0x2ab57c,!![]);}catch(_0x2764ea){return BPromise['reject'](_0x2764ea);}return _0x1e3cce[_0x5dbf('0x1e')]();};}function saveUpdates(_0x11cc67,_0x14d133){return function(_0x43a612){if(_0x43a612){return _0x43a612[_0x5dbf('0x1f')](_0x11cc67)[_0x5dbf('0x20')](function(_0x58085e){return _0x58085e;});}return null;};}function removeEntity(_0x4027c3,_0x3e3a2d){return function(_0x2d3e1b){if(_0x2d3e1b){return _0x2d3e1b[_0x5dbf('0x21')]()[_0x5dbf('0x20')](function(){_0x4027c3[_0x5dbf('0x17')](0xcc)[_0x5dbf('0x22')]();});}};}function handleEntityNotFound(_0x20ab1b,_0x42f13b){return function(_0x15a790){if(!_0x15a790){_0x20ab1b[_0x5dbf('0x16')](0x194);}return _0x15a790;};}function handleError(_0x232c77,_0x3f9e60){_0x3f9e60=_0x3f9e60||0x1f4;return function(_0x407741){logger[_0x5dbf('0x23')](_0x407741[_0x5dbf('0x24')]);if(_0x407741[_0x5dbf('0x25')]){delete _0x407741[_0x5dbf('0x25')];}_0x232c77[_0x5dbf('0x17')](_0x3f9e60)[_0x5dbf('0x26')](_0x407741);};}exports[_0x5dbf('0x27')]=function(_0x471027,_0x21cd00){var _0x5768b7={},_0x2f71eb={},_0x24dc99={'count':0x0,'rows':[]};var _0xc4748=_[_0x5dbf('0x28')](db[_0x5dbf('0x29')][_0x5dbf('0x2a')],function(_0x2a65c5){return{'name':_0x2a65c5[_0x5dbf('0x2b')],'type':_0x2a65c5[_0x5dbf('0x2c')][_0x5dbf('0x2d')]};});_0x2f71eb[_0x5dbf('0x2e')]=_['differenceBy'](_['map'](_0xc4748,_0x5dbf('0x25')),[_0x5dbf('0x2f')]);_0x2f71eb[_0x5dbf('0x30')]=_[_0x5dbf('0x31')](_0x471027[_0x5dbf('0x30')]);_0x2f71eb['filters']=_['intersection'](_0x2f71eb[_0x5dbf('0x2e')],_0x2f71eb[_0x5dbf('0x30')]);_0x5768b7['attributes']=_[_0x5dbf('0x32')](_0x2f71eb[_0x5dbf('0x2e')],qs[_0x5dbf('0x33')](_0x471027[_0x5dbf('0x30')][_0x5dbf('0x33')]));_0x5768b7['attributes']=_0x5768b7[_0x5dbf('0x34')][_0x5dbf('0x35')]?_0x5768b7[_0x5dbf('0x34')]:_0x2f71eb[_0x5dbf('0x2e')];if(!_0x471027[_0x5dbf('0x30')]['hasOwnProperty'](_0x5dbf('0x36'))){_0x5768b7[_0x5dbf('0x37')]=qs[_0x5dbf('0x37')](_0x471027[_0x5dbf('0x30')]['limit']);_0x5768b7[_0x5dbf('0x19')]=qs[_0x5dbf('0x19')](_0x471027[_0x5dbf('0x30')][_0x5dbf('0x19')]);}_0x5768b7[_0x5dbf('0x38')]=qs[_0x5dbf('0x39')](_0x471027[_0x5dbf('0x30')][_0x5dbf('0x39')]);_0x5768b7[_0x5dbf('0x3a')]=qs[_0x5dbf('0x3b')](_[_0x5dbf('0x3c')](_0x471027['query'],_0x2f71eb[_0x5dbf('0x3b')]),_0xc4748);if(_0x471027[_0x5dbf('0x30')][_0x5dbf('0x3d')]){_0x5768b7['where']=_[_0x5dbf('0x3e')](_0x5768b7[_0x5dbf('0x3a')],{'$or':_[_0x5dbf('0x28')](_0xc4748,function(_0x5b3738){if(_0x5b3738[_0x5dbf('0x2c')]!==_0x5dbf('0x3f')){var _0x9bd4c0={};_0x9bd4c0[_0x5b3738['name']]={'$like':'%'+_0x471027[_0x5dbf('0x30')][_0x5dbf('0x3d')]+'%'};return _0x9bd4c0;}})});}_0x5768b7=_[_0x5dbf('0x3e')]({},_0x5768b7,_0x471027[_0x5dbf('0x40')]);var _0x10537d={'where':_0x5768b7[_0x5dbf('0x3a')]};return db[_0x5dbf('0x29')][_0x5dbf('0x1b')](_0x10537d)['then'](function(_0x5be96b){_0x24dc99['count']=_0x5be96b;if(_0x471027['query'][_0x5dbf('0x41')]){_0x5768b7[_0x5dbf('0x42')]=[{'all':!![]}];}return db['ScreenRecording'][_0x5dbf('0x43')](_0x5768b7);})[_0x5dbf('0x20')](function(_0x5a60e8){_0x24dc99[_0x5dbf('0x44')]=_0x5a60e8;return _0x24dc99;})[_0x5dbf('0x20')](respondWithFilteredResult(_0x21cd00,_0x5768b7))[_0x5dbf('0x45')](handleError(_0x21cd00,null));};exports[_0x5dbf('0x46')]=function(_0x21ae10,_0x7c390d){var _0x2745df={'raw':![],'where':{'id':_0x21ae10[_0x5dbf('0x47')]['id']}},_0x1c020a={};_0x1c020a[_0x5dbf('0x2e')]=_['keys'](db[_0x5dbf('0x29')][_0x5dbf('0x2a')]);_0x1c020a[_0x5dbf('0x30')]=_['keys'](_0x21ae10[_0x5dbf('0x30')]);_0x1c020a[_0x5dbf('0x3b')]=_[_0x5dbf('0x32')](_0x1c020a[_0x5dbf('0x2e')],_0x1c020a['query']);_0x2745df[_0x5dbf('0x34')]=_['intersection'](_0x1c020a[_0x5dbf('0x2e')],qs[_0x5dbf('0x33')](_0x21ae10[_0x5dbf('0x30')][_0x5dbf('0x33')]));_0x2745df['attributes']=_0x2745df['attributes'][_0x5dbf('0x35')]?_0x2745df[_0x5dbf('0x34')]:_0x1c020a[_0x5dbf('0x2e')];if(_0x21ae10['query'][_0x5dbf('0x41')]){_0x2745df['include']=[{'all':!![]}];}_0x2745df=_['merge']({},_0x2745df,_0x21ae10['options']);return db['ScreenRecording'][_0x5dbf('0x48')](_0x2745df)[_0x5dbf('0x20')](handleEntityNotFound(_0x7c390d,null))['then'](respondWithResult(_0x7c390d,null))[_0x5dbf('0x45')](handleError(_0x7c390d,null));};exports[_0x5dbf('0x49')]=function(_0x4b6f30,_0x366102){return db[_0x5dbf('0x29')]['create'](_0x4b6f30[_0x5dbf('0x4a')],{})['then'](respondWithResult(_0x366102,0xc9))['catch'](handleError(_0x366102,null));};exports[_0x5dbf('0x1f')]=function(_0x2a3d30,_0x17a1c0){if(_0x2a3d30['body']['id']){delete _0x2a3d30['body']['id'];}delete _0x2a3d30[_0x5dbf('0x4a')][_0x5dbf('0x4b')];delete _0x2a3d30[_0x5dbf('0x4a')][_0x5dbf('0x4c')];delete _0x2a3d30[_0x5dbf('0x4a')][_0x5dbf('0x4d')];delete _0x2a3d30[_0x5dbf('0x4a')][_0x5dbf('0x4e')];return db['ScreenRecording'][_0x5dbf('0x48')]({'where':{'id':_0x2a3d30[_0x5dbf('0x47')]['id']}})[_0x5dbf('0x20')](handleEntityNotFound(_0x17a1c0,null))[_0x5dbf('0x20')](saveUpdates(_0x2a3d30[_0x5dbf('0x4a')],null))[_0x5dbf('0x20')](respondWithResult(_0x17a1c0,null))[_0x5dbf('0x45')](handleError(_0x17a1c0,null));};exports['describe']=function(_0x1b0b13,_0x54f401){return db[_0x5dbf('0x29')][_0x5dbf('0x4f')]()[_0x5dbf('0x20')](respondWithResult(_0x54f401,null))[_0x5dbf('0x45')](handleError(_0x54f401,null));};exports[_0x5dbf('0x50')]=function(_0x1f165d,_0x353d0f,_0x48403a){var _0x5c3c0d=require('../../components/encryptor');var _0x1e1876=![];var _0xfdacc7={};if(_0x1f165d[_0x5dbf('0x30')]['type']&&_0x1f165d['query'][_0x5dbf('0x2c')]===_0x5dbf('0x51')){_0xfdacc7[_0x5dbf('0x51')]=_0x1f165d['params']['id'];}else{_0xfdacc7['id']=_0x1f165d[_0x5dbf('0x47')]['id'];}return db['ScreenRecording'][_0x5dbf('0x48')]({'where':_0xfdacc7,'attributes':['id',_0x5dbf('0x4e')],'raw':!![]})[_0x5dbf('0x20')](handleEntityNotFound(_0x353d0f,null))['then'](function(_0x55fd51){if(_0x55fd51){var _0x1b316d=path[_0x5dbf('0x52')](config[_0x5dbf('0x53')],_0x5dbf('0x54'),_0x55fd51['value']);var _0xfcc43c=util[_0x5dbf('0x2f')]('%s.cypher',_0x1b316d);if(fs['existsSync'](_0xfcc43c)){_0x1e1876=!![];return _0x5c3c0d[_0x5dbf('0x55')](_0xfcc43c,_0x1b316d,config[_0x5dbf('0x56')][_0x5dbf('0x57')])[_0x5dbf('0x20')](function(){return _0x55fd51;});}return _0x55fd51;}})[_0x5dbf('0x20')](function(_0x4711d5){if(_0x4711d5){var _0x50a029=path[_0x5dbf('0x52')](config['root'],'server/files/screen_recordings',_0x4711d5['value']);if(!fs[_0x5dbf('0x58')](_0x50a029)){throw new db['Sequelize'][(_0x5dbf('0x59'))](_0x5dbf('0x5a'));}if(_0x4711d5[_0x5dbf('0x5b')]){return _0x353d0f[_0x5dbf('0x50')](_0x50a029,_0x4711d5[_0x5dbf('0x5b')]+path[_0x5dbf('0x5c')](_0x50a029),function(){if(_0x1e1876){fs[_0x5dbf('0x5d')](_0x50a029);}});}else{return _0x353d0f[_0x5dbf('0x50')](_0x50a029,function(_0x2c84d6){if(_0x1e1876){fs[_0x5dbf('0x5d')](_0x50a029);}});}}})[_0x5dbf('0x45')](function(_0x2ca889){if(_0x2ca889[_0x5dbf('0x5e')]===_0x5dbf('0x5a')){_0x353d0f[_0x5dbf('0x17')](0x194)['send'](_0x5dbf('0x5f'));}else{return handleError(_0x353d0f,null);}});};exports['destroy']=function(_0xb0a9bf,_0xfc5817){return db[_0x5dbf('0x29')][_0x5dbf('0x48')]({'where':{'id':_0xb0a9bf['params']['id']}})[_0x5dbf('0x20')](function(_0x1ade34){if(_[_0x5dbf('0x60')](_0x1ade34)){throw new ReferenceError(_0x5dbf('0x61'));}return _0x1ade34;})[_0x5dbf('0x20')](function(_0x40982f){var _0x52efd7=path[_0x5dbf('0x52')](config[_0x5dbf('0x53')],_0x5dbf('0x54'),_0x40982f[_0x5dbf('0x4e')]);logger[_0x5dbf('0x62')](_0x5dbf('0x63'),_0x52efd7);if(!_[_0x5dbf('0x60')](_0x40982f[_0x5dbf('0x4e')])&&fs[_0x5dbf('0x58')](_0x52efd7)){logger[_0x5dbf('0x62')](_0x5dbf('0x64')+_0x52efd7+_0x5dbf('0x65'));fs['unlinkSync'](_0x52efd7);}_0x52efd7=_0x52efd7+'.cypher';if(!_[_0x5dbf('0x60')](_0x40982f[_0x5dbf('0x4e')])&&fs[_0x5dbf('0x58')](_0x52efd7)){logger[_0x5dbf('0x62')](_0x5dbf('0x64')+_0x52efd7+_0x5dbf('0x65'));fs[_0x5dbf('0x66')](_0x52efd7);}return _0x40982f;})[_0x5dbf('0x20')](function(_0x3a4001){if(!_0x3a4001)throw new InternalError();return _0x3a4001['destroy']();})['then'](function(){_0xfc5817['status'](0xcc)['end']();})[_0x5dbf('0x45')](handleError(_0xfc5817,null));};
\ No newline at end of file
+var _0xd6d6=['../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','ScreenRecording','rawAttributes','fieldName','type','key','model','differenceBy','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','include','findAll','catch','find','create','body','duration','createdAt','closedAt','value','params','describe','download','../../components/encryptor','uniqueid','join','root','server/files/screen_recordings','format','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','Entity\x20not\x20found','info','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','isNil','File:\x20\x22','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x24d38d,_0x2b0a28){var _0x5b1fb7=function(_0x3b5c77){while(--_0x3b5c77){_0x24d38d['push'](_0x24d38d['shift']());}};_0x5b1fb7(++_0x2b0a28);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x98d749,_0x3dd6cc){_0x98d749=_0x98d749-0x0;var _0x515571=_0xd6d6[_0x98d749];return _0x515571;};'use strict';var emlformat=require(_0x6d6d('0x0'));var rimraf=require(_0x6d6d('0x1'));var zipdir=require(_0x6d6d('0x2'));var jsonpatch=require(_0x6d6d('0x3'));var rp=require('request-promise');var moment=require(_0x6d6d('0x4'));var BPromise=require(_0x6d6d('0x5'));var Mustache=require(_0x6d6d('0x6'));var util=require(_0x6d6d('0x7'));var path=require(_0x6d6d('0x8'));var sox=require(_0x6d6d('0x9'));var csv=require(_0x6d6d('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6d6d('0xb'));var _=require(_0x6d6d('0xc'));var squel=require(_0x6d6d('0xd'));var crypto=require(_0x6d6d('0xe'));var jsforce=require(_0x6d6d('0xf'));var deskjs=require(_0x6d6d('0x10'));var toCsv=require(_0x6d6d('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x6d6d('0x11'));var authService=require(_0x6d6d('0x12'));var qs=require(_0x6d6d('0x13'));var as=require(_0x6d6d('0x14'));var hardwareService=require(_0x6d6d('0x15'));var logger=require('../../config/logger')(_0x6d6d('0x16'));var utils=require(_0x6d6d('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x6d6d('0x18'))['db'];function respondWithStatusCode(_0x32146d,_0xe61c36){_0xe61c36=_0xe61c36||0xcc;return function(_0x3f8542){if(_0x3f8542){return _0x32146d[_0x6d6d('0x19')](_0xe61c36);}return _0x32146d[_0x6d6d('0x1a')](_0xe61c36)[_0x6d6d('0x1b')]();};}function respondWithResult(_0x2cb2dd,_0x5f4154){_0x5f4154=_0x5f4154||0xc8;return function(_0xd09ea7){if(_0xd09ea7){return _0x2cb2dd[_0x6d6d('0x1a')](_0x5f4154)[_0x6d6d('0x1c')](_0xd09ea7);}};}function respondWithFilteredResult(_0xa3b05d,_0x29cbd8){return function(_0x5d80c0){if(_0x5d80c0){var _0x2e6fdb=typeof _0x29cbd8['offset']===_0x6d6d('0x1d')&&typeof _0x29cbd8[_0x6d6d('0x1e')]===_0x6d6d('0x1d');var _0x4bb3d1=_0x5d80c0['count'];var _0x9e1e18=_0x2e6fdb?0x0:_0x29cbd8[_0x6d6d('0x1f')];var _0x2b59d4=_0x2e6fdb?_0x5d80c0[_0x6d6d('0x20')]:_0x29cbd8['offset']+_0x29cbd8['limit'];var _0x474873;if(_0x2b59d4>=_0x4bb3d1){_0x2b59d4=_0x4bb3d1;_0x474873=0xc8;}else{_0x474873=0xce;}_0xa3b05d['status'](_0x474873);return _0xa3b05d[_0x6d6d('0x21')](_0x6d6d('0x22'),_0x9e1e18+'-'+_0x2b59d4+'/'+_0x4bb3d1)[_0x6d6d('0x1c')](_0x5d80c0);}return null;};}function patchUpdates(_0x450352){return function(_0x40d35b){try{jsonpatch[_0x6d6d('0x23')](_0x40d35b,_0x450352,!![]);}catch(_0x164c67){return BPromise[_0x6d6d('0x24')](_0x164c67);}return _0x40d35b[_0x6d6d('0x25')]();};}function saveUpdates(_0x6f64e3,_0x24b10d){return function(_0x6e58e3){if(_0x6e58e3){return _0x6e58e3[_0x6d6d('0x26')](_0x6f64e3)[_0x6d6d('0x27')](function(_0x1f7f88){return _0x1f7f88;});}return null;};}function removeEntity(_0x25a02e,_0xced622){return function(_0x583b10){if(_0x583b10){return _0x583b10[_0x6d6d('0x28')]()[_0x6d6d('0x27')](function(){_0x25a02e[_0x6d6d('0x1a')](0xcc)[_0x6d6d('0x1b')]();});}};}function handleEntityNotFound(_0xf0df7f,_0x12fab2){return function(_0x554f8e){if(!_0x554f8e){_0xf0df7f[_0x6d6d('0x19')](0x194);}return _0x554f8e;};}function handleError(_0x2b5e31,_0x235451){_0x235451=_0x235451||0x1f4;return function(_0x126ac8){logger[_0x6d6d('0x29')](_0x126ac8[_0x6d6d('0x2a')]);if(_0x126ac8[_0x6d6d('0x2b')]){delete _0x126ac8['name'];}_0x2b5e31[_0x6d6d('0x1a')](_0x235451)[_0x6d6d('0x2c')](_0x126ac8);};}exports['index']=function(_0x553645,_0x3edcce){var _0x5273cd={},_0x8a9a84={},_0x57341f={'count':0x0,'rows':[]};var _0xde3272=_[_0x6d6d('0x2d')](db[_0x6d6d('0x2e')][_0x6d6d('0x2f')],function(_0x64d1f7){return{'name':_0x64d1f7[_0x6d6d('0x30')],'type':_0x64d1f7[_0x6d6d('0x31')][_0x6d6d('0x32')]};});_0x8a9a84[_0x6d6d('0x33')]=_[_0x6d6d('0x34')](_['map'](_0xde3272,_0x6d6d('0x2b')),['format']);_0x8a9a84[_0x6d6d('0x35')]=_[_0x6d6d('0x36')](_0x553645[_0x6d6d('0x35')]);_0x8a9a84[_0x6d6d('0x37')]=_['intersection'](_0x8a9a84[_0x6d6d('0x33')],_0x8a9a84['query']);_0x5273cd[_0x6d6d('0x38')]=_[_0x6d6d('0x39')](_0x8a9a84['model'],qs[_0x6d6d('0x3a')](_0x553645[_0x6d6d('0x35')][_0x6d6d('0x3a')]));_0x5273cd[_0x6d6d('0x38')]=_0x5273cd[_0x6d6d('0x38')][_0x6d6d('0x3b')]?_0x5273cd[_0x6d6d('0x38')]:_0x8a9a84[_0x6d6d('0x33')];if(!_0x553645[_0x6d6d('0x35')][_0x6d6d('0x3c')](_0x6d6d('0x3d'))){_0x5273cd[_0x6d6d('0x1e')]=qs[_0x6d6d('0x1e')](_0x553645[_0x6d6d('0x35')]['limit']);_0x5273cd[_0x6d6d('0x1f')]=qs[_0x6d6d('0x1f')](_0x553645[_0x6d6d('0x35')][_0x6d6d('0x1f')]);}_0x5273cd['order']=qs['sort'](_0x553645[_0x6d6d('0x35')][_0x6d6d('0x3e')]);_0x5273cd[_0x6d6d('0x3f')]=qs['filters'](_[_0x6d6d('0x40')](_0x553645[_0x6d6d('0x35')],_0x8a9a84[_0x6d6d('0x37')]),_0xde3272);if(_0x553645[_0x6d6d('0x35')]['filter']){_0x5273cd['where']=_['merge'](_0x5273cd[_0x6d6d('0x3f')],{'$or':_[_0x6d6d('0x2d')](_0xde3272,function(_0x33c8f2){if(_0x33c8f2[_0x6d6d('0x31')]!=='VIRTUAL'){var _0x253416={};_0x253416[_0x33c8f2[_0x6d6d('0x2b')]]={'$like':'%'+_0x553645[_0x6d6d('0x35')][_0x6d6d('0x41')]+'%'};return _0x253416;}})});}_0x5273cd=_[_0x6d6d('0x42')]({},_0x5273cd,_0x553645[_0x6d6d('0x43')]);var _0x4b457d={'where':_0x5273cd[_0x6d6d('0x3f')]};return db[_0x6d6d('0x2e')][_0x6d6d('0x20')](_0x4b457d)[_0x6d6d('0x27')](function(_0x32275b){_0x57341f[_0x6d6d('0x20')]=_0x32275b;if(_0x553645[_0x6d6d('0x35')]['includeAll']){_0x5273cd[_0x6d6d('0x44')]=[{'all':!![]}];}return db[_0x6d6d('0x2e')][_0x6d6d('0x45')](_0x5273cd);})[_0x6d6d('0x27')](function(_0xe1aa77){_0x57341f['rows']=_0xe1aa77;return _0x57341f;})[_0x6d6d('0x27')](respondWithFilteredResult(_0x3edcce,_0x5273cd))[_0x6d6d('0x46')](handleError(_0x3edcce,null));};exports['show']=function(_0x452de2,_0x50dc17){var _0x15bf62={'raw':![],'where':{'id':_0x452de2['params']['id']}},_0x43c03c={};_0x43c03c[_0x6d6d('0x33')]=_[_0x6d6d('0x36')](db[_0x6d6d('0x2e')][_0x6d6d('0x2f')]);_0x43c03c[_0x6d6d('0x35')]=_['keys'](_0x452de2['query']);_0x43c03c[_0x6d6d('0x37')]=_['intersection'](_0x43c03c['model'],_0x43c03c[_0x6d6d('0x35')]);_0x15bf62[_0x6d6d('0x38')]=_[_0x6d6d('0x39')](_0x43c03c['model'],qs[_0x6d6d('0x3a')](_0x452de2['query'][_0x6d6d('0x3a')]));_0x15bf62[_0x6d6d('0x38')]=_0x15bf62[_0x6d6d('0x38')][_0x6d6d('0x3b')]?_0x15bf62[_0x6d6d('0x38')]:_0x43c03c[_0x6d6d('0x33')];if(_0x452de2[_0x6d6d('0x35')]['includeAll']){_0x15bf62[_0x6d6d('0x44')]=[{'all':!![]}];}_0x15bf62=_[_0x6d6d('0x42')]({},_0x15bf62,_0x452de2[_0x6d6d('0x43')]);return db[_0x6d6d('0x2e')][_0x6d6d('0x47')](_0x15bf62)[_0x6d6d('0x27')](handleEntityNotFound(_0x50dc17,null))[_0x6d6d('0x27')](respondWithResult(_0x50dc17,null))[_0x6d6d('0x46')](handleError(_0x50dc17,null));};exports[_0x6d6d('0x48')]=function(_0x5e4c04,_0x4d78bb){return db[_0x6d6d('0x2e')][_0x6d6d('0x48')](_0x5e4c04[_0x6d6d('0x49')],{})[_0x6d6d('0x27')](respondWithResult(_0x4d78bb,0xc9))[_0x6d6d('0x46')](handleError(_0x4d78bb,null));};exports['update']=function(_0x47170d,_0x27b396){if(_0x47170d[_0x6d6d('0x49')]['id']){delete _0x47170d[_0x6d6d('0x49')]['id'];}delete _0x47170d[_0x6d6d('0x49')][_0x6d6d('0x4a')];delete _0x47170d[_0x6d6d('0x49')][_0x6d6d('0x4b')];delete _0x47170d[_0x6d6d('0x49')][_0x6d6d('0x4c')];delete _0x47170d[_0x6d6d('0x49')][_0x6d6d('0x4d')];return db['ScreenRecording'][_0x6d6d('0x47')]({'where':{'id':_0x47170d[_0x6d6d('0x4e')]['id']}})[_0x6d6d('0x27')](handleEntityNotFound(_0x27b396,null))[_0x6d6d('0x27')](saveUpdates(_0x47170d[_0x6d6d('0x49')],null))['then'](respondWithResult(_0x27b396,null))[_0x6d6d('0x46')](handleError(_0x27b396,null));};exports[_0x6d6d('0x4f')]=function(_0x45340b,_0x4e4c3e){return db['ScreenRecording'][_0x6d6d('0x4f')]()['then'](respondWithResult(_0x4e4c3e,null))[_0x6d6d('0x46')](handleError(_0x4e4c3e,null));};exports[_0x6d6d('0x50')]=function(_0x32aaae,_0x268361,_0x4777a5){var _0x18e2de=require(_0x6d6d('0x51'));var _0x26c23a=![];var _0x1a8f33={};if(_0x32aaae[_0x6d6d('0x35')]['type']&&_0x32aaae[_0x6d6d('0x35')][_0x6d6d('0x31')]===_0x6d6d('0x52')){_0x1a8f33[_0x6d6d('0x52')]=_0x32aaae[_0x6d6d('0x4e')]['id'];}else{_0x1a8f33['id']=_0x32aaae[_0x6d6d('0x4e')]['id'];}return db[_0x6d6d('0x2e')]['find']({'where':_0x1a8f33,'attributes':['id','value'],'raw':!![]})[_0x6d6d('0x27')](handleEntityNotFound(_0x268361,null))[_0x6d6d('0x27')](function(_0x5cc644){if(_0x5cc644){var _0x3e98a0=path[_0x6d6d('0x53')](config[_0x6d6d('0x54')],_0x6d6d('0x55'),_0x5cc644[_0x6d6d('0x4d')]);var _0xc6b96e=util[_0x6d6d('0x56')](_0x6d6d('0x57'),_0x3e98a0);if(fs[_0x6d6d('0x58')](_0xc6b96e)){_0x26c23a=!![];return _0x18e2de[_0x6d6d('0x59')](_0xc6b96e,_0x3e98a0,config[_0x6d6d('0x5a')][_0x6d6d('0x5b')])[_0x6d6d('0x27')](function(){return _0x5cc644;});}return _0x5cc644;}})[_0x6d6d('0x27')](function(_0x3065ea){if(_0x3065ea){var _0x50d8dd=path[_0x6d6d('0x53')](config[_0x6d6d('0x54')],'server/files/screen_recordings',_0x3065ea[_0x6d6d('0x4d')]);if(!fs[_0x6d6d('0x58')](_0x50d8dd)){throw new db[(_0x6d6d('0x5c'))][(_0x6d6d('0x5d'))](_0x6d6d('0x5e'));}if(_0x3065ea[_0x6d6d('0x5f')]){return _0x268361[_0x6d6d('0x50')](_0x50d8dd,_0x3065ea[_0x6d6d('0x5f')]+path[_0x6d6d('0x60')](_0x50d8dd),function(){if(_0x26c23a){fs['unlink'](_0x50d8dd);}});}else{return _0x268361['download'](_0x50d8dd,function(_0x22c3a1){if(_0x26c23a){fs[_0x6d6d('0x61')](_0x50d8dd);}});}}})[_0x6d6d('0x46')](function(_0x5de33f){if(_0x5de33f['message']===_0x6d6d('0x5e')){_0x268361['status'](0x194)[_0x6d6d('0x2c')]('Not\x20found');}else{return handleError(_0x268361,null);}});};exports[_0x6d6d('0x28')]=function(_0x367a6f,_0x21f14c){return db[_0x6d6d('0x2e')][_0x6d6d('0x47')]({'where':{'id':_0x367a6f[_0x6d6d('0x4e')]['id']}})['then'](function(_0x41e576){if(_['isNil'](_0x41e576)){throw new ReferenceError(_0x6d6d('0x62'));}return _0x41e576;})['then'](function(_0x2a21d8){var _0x3e48f7=path[_0x6d6d('0x53')](config[_0x6d6d('0x54')],_0x6d6d('0x55'),_0x2a21d8[_0x6d6d('0x4d')]);logger[_0x6d6d('0x63')]('cancellazione\x20fisica\x20documento\x20%s',_0x3e48f7);if(!_['isNil'](_0x2a21d8[_0x6d6d('0x4d')])&&fs['existsSync'](_0x3e48f7)){logger[_0x6d6d('0x63')]('File:\x20\x22'+_0x3e48f7+_0x6d6d('0x64'));fs[_0x6d6d('0x65')](_0x3e48f7);}_0x3e48f7=_0x3e48f7+_0x6d6d('0x66');if(!_[_0x6d6d('0x67')](_0x2a21d8[_0x6d6d('0x4d')])&&fs[_0x6d6d('0x58')](_0x3e48f7)){logger['info'](_0x6d6d('0x68')+_0x3e48f7+_0x6d6d('0x64'));fs[_0x6d6d('0x65')](_0x3e48f7);}return _0x2a21d8;})[_0x6d6d('0x27')](function(_0x1ba731){if(!_0x1ba731)throw new InternalError();return _0x1ba731[_0x6d6d('0x28')]();})[_0x6d6d('0x27')](function(){_0x21f14c['status'](0xcc)[_0x6d6d('0x1b')]();})[_0x6d6d('0x46')](handleError(_0x21f14c,null));};
\ No newline at end of file
index ad8d416..bff466b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd2e=['util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','define','ScreenRecording','screen_recordings','interactionid','lodash'];(function(_0x2a56ad,_0x2b94bf){var _0x425175=function(_0x342f20){while(--_0x342f20){_0x2a56ad['push'](_0x2a56ad['shift']());}};_0x425175(++_0x2b94bf);}(_0xdd2e,0xc2));var _0xedd2=function(_0x4c6f90,_0x20fd9f){_0x4c6f90=_0x4c6f90-0x0;var _0xc84599=_0xdd2e[_0x4c6f90];return _0xc84599;};'use strict';var _=require(_0xedd2('0x0'));var util=require(_0xedd2('0x1'));var logger=require(_0xedd2('0x2'))(_0xedd2('0x3'));var moment=require(_0xedd2('0x4'));var BPromise=require('bluebird');var rp=require(_0xedd2('0x5'));var fs=require('fs');var path=require(_0xedd2('0x6'));var rimraf=require(_0xedd2('0x7'));var config=require(_0xedd2('0x8'));var attributes=require('./screenRecording.attributes');module['exports']=function(_0x172209,_0x3aac91){return _0x172209[_0xedd2('0x9')](_0xedd2('0xa'),attributes,{'tableName':_0xedd2('0xb'),'paranoid':![],'indexes':[{'name':_0xedd2('0xc'),'fields':[_0xedd2('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb4bf=['rimraf','../../config/environment','./screenRecording.attributes','define','ScreenRecording','screen_recordings','interactionid','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x40736f,_0x537528){var _0x42a129=function(_0x2139ff){while(--_0x2139ff){_0x40736f['push'](_0x40736f['shift']());}};_0x42a129(++_0x537528);}(_0xb4bf,0x77));var _0xfb4b=function(_0xbd08b4,_0x4790ed){_0xbd08b4=_0xbd08b4-0x0;var _0x314f1e=_0xb4bf[_0xbd08b4];return _0x314f1e;};'use strict';var _=require(_0xfb4b('0x0'));var util=require('util');var logger=require(_0xfb4b('0x1'))(_0xfb4b('0x2'));var moment=require(_0xfb4b('0x3'));var BPromise=require(_0xfb4b('0x4'));var rp=require(_0xfb4b('0x5'));var fs=require('fs');var path=require(_0xfb4b('0x6'));var rimraf=require(_0xfb4b('0x7'));var config=require(_0xfb4b('0x8'));var attributes=require(_0xfb4b('0x9'));module['exports']=function(_0x3d2f56,_0x1cf4bc){return _0x3d2f56[_0xfb4b('0xa')](_0xfb4b('0xb'),attributes,{'tableName':_0xfb4b('0xc'),'paranoid':![],'indexes':[{'name':_0xfb4b('0xd'),'fields':[_0xfb4b('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index b9772a4..e3f8d85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0baa=['client','http','request','then','info','ScreenRecording,\x20%s,\x20%s','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','ioredis','../../config/utils','../../config/logger','../../config/environment'];(function(_0x2cfb58,_0x3d9412){var _0xd99951=function(_0x329afa){while(--_0x329afa){_0x2cfb58['push'](_0x2cfb58['shift']());}};_0xd99951(++_0x3d9412);}(_0x0baa,0x1ab));var _0xa0ba=function(_0x346a0c,_0x175343){_0x346a0c=_0x346a0c-0x0;var _0x25f6f8=_0x0baa[_0x346a0c];return _0x25f6f8;};'use strict';var _=require('lodash');var util=require(_0xa0ba('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa0ba('0x1'));var db=require('../../mysqldb')['db'];var utils=require(_0xa0ba('0x2'));var logger=require(_0xa0ba('0x3'))('rpc');var config=require(_0xa0ba('0x4'));var jayson=require('jayson/promise');var client=jayson[_0xa0ba('0x5')][_0xa0ba('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x8afd6d,_0x5f2aff,_0x8ca537){return new BPromise(function(_0x4e5fcd,_0x9795d9){return client[_0xa0ba('0x7')](_0x8afd6d,_0x8ca537)[_0xa0ba('0x8')](function(_0x11967b){logger[_0xa0ba('0x9')](_0xa0ba('0xa'),_0x5f2aff,'request\x20sent');logger[_0xa0ba('0xb')](_0xa0ba('0xc'),_0x5f2aff,'request\x20sent',JSON[_0xa0ba('0xd')](_0x11967b));if(_0x11967b[_0xa0ba('0xe')]){if(_0x11967b[_0xa0ba('0xe')]['code']===0x1f4){logger[_0xa0ba('0xe')](_0xa0ba('0xa'),_0x5f2aff,_0x11967b[_0xa0ba('0xe')][_0xa0ba('0xf')]);return _0x9795d9(_0x11967b[_0xa0ba('0xe')][_0xa0ba('0xf')]);}logger[_0xa0ba('0xe')](_0xa0ba('0xa'),_0x5f2aff,_0x11967b[_0xa0ba('0xe')]['message']);return _0x4e5fcd(_0x11967b[_0xa0ba('0xe')][_0xa0ba('0xf')]);}else{logger[_0xa0ba('0x9')](_0xa0ba('0xa'),_0x5f2aff,'request\x20sent');_0x4e5fcd(_0x11967b[_0xa0ba('0x10')][_0xa0ba('0xf')]);}})[_0xa0ba('0x11')](function(_0x39853f){logger[_0xa0ba('0xe')](_0xa0ba('0xa'),_0x5f2aff,_0x39853f);_0x9795d9(_0x39853f);});});}
\ No newline at end of file
+var _0xf662=['moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','ScreenRecording,\x20%s,\x20%s','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash'];(function(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0xf662,0x1a1));var _0x2f66=function(_0xd9caad,_0x5856b7){_0xd9caad=_0xd9caad-0x0;var _0x3127e6=_0xf662[_0xd9caad];return _0x3127e6;};'use strict';var _=require(_0x2f66('0x0'));var util=require('util');var moment=require(_0x2f66('0x1'));var BPromise=require('bluebird');var rs=require(_0x2f66('0x2'));var fs=require('fs');var Redis=require(_0x2f66('0x3'));var db=require(_0x2f66('0x4'))['db'];var utils=require(_0x2f66('0x5'));var logger=require(_0x2f66('0x6'))(_0x2f66('0x7'));var config=require(_0x2f66('0x8'));var jayson=require(_0x2f66('0x9'));var client=jayson[_0x2f66('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x467c68,_0x6a3520,_0x4deff0){return new BPromise(function(_0x526dc0,_0x3ad025){return client[_0x2f66('0xb')](_0x467c68,_0x4deff0)['then'](function(_0x2e940d){logger[_0x2f66('0xc')](_0x2f66('0xd'),_0x6a3520,'request\x20sent');logger[_0x2f66('0xe')](_0x2f66('0xf'),_0x6a3520,'request\x20sent',JSON[_0x2f66('0x10')](_0x2e940d));if(_0x2e940d['error']){if(_0x2e940d[_0x2f66('0x11')][_0x2f66('0x12')]===0x1f4){logger[_0x2f66('0x11')]('ScreenRecording,\x20%s,\x20%s',_0x6a3520,_0x2e940d[_0x2f66('0x11')][_0x2f66('0x13')]);return _0x3ad025(_0x2e940d[_0x2f66('0x11')][_0x2f66('0x13')]);}logger['error'](_0x2f66('0xd'),_0x6a3520,_0x2e940d['error'][_0x2f66('0x13')]);return _0x526dc0(_0x2e940d[_0x2f66('0x11')]['message']);}else{logger['info'](_0x2f66('0xd'),_0x6a3520,'request\x20sent');_0x526dc0(_0x2e940d[_0x2f66('0x14')][_0x2f66('0x13')]);}})[_0x2f66('0x15')](function(_0x3ff077){logger[_0x2f66('0x11')]('ScreenRecording,\x20%s,\x20%s',_0x6a3520,_0x3ff077);_0x3ad025(_0x3ff077);});});}
\ No newline at end of file
index a81144e..ba60488 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacbe=['/:id/favicon','addFavicon','put','update','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./setting.controller','get','isAuthenticated','index','/now','/:id','show','/:id/logo','/:id/logo_login','getLogoLogin','/:id/gdpr','gdpr','/:id/preferred','diskStorage','join','root','format','%s%s','logo','extname','originalname','post','file','logologin','single','preferred','favicon'];(function(_0x3f48e5,_0x25b4d8){var _0x2f9d05=function(_0x3e6bd9){while(--_0x3e6bd9){_0x3f48e5['push'](_0x3f48e5['shift']());}};_0x2f9d05(++_0x25b4d8);}(_0xacbe,0x124));var _0xeacb=function(_0x587fb1,_0x1fa311){_0x587fb1=_0x587fb1-0x0;var _0x5aa5d5=_0xacbe[_0x587fb1];return _0x5aa5d5;};'use strict';var multer=require(_0xeacb('0x0'));var util=require(_0xeacb('0x1'));var path=require(_0xeacb('0x2'));var timeout=require('connect-timeout');var express=require(_0xeacb('0x3'));var router=express[_0xeacb('0x4')]();var fs_extra=require(_0xeacb('0x5'));var auth=require(_0xeacb('0x6'));var interaction=require(_0xeacb('0x7'));var config=require(_0xeacb('0x8'));var controller=require(_0xeacb('0x9'));router[_0xeacb('0xa')]('/',auth[_0xeacb('0xb')](),controller[_0xeacb('0xc')]);router[_0xeacb('0xa')](_0xeacb('0xd'),controller['getDate']);router['get'](_0xeacb('0xe'),controller[_0xeacb('0xf')]);router[_0xeacb('0xa')](_0xeacb('0x10'),controller['getLogo']);router[_0xeacb('0xa')](_0xeacb('0x11'),controller[_0xeacb('0x12')]);router[_0xeacb('0xa')](_0xeacb('0x13'),controller[_0xeacb('0x14')]);router[_0xeacb('0xa')](_0xeacb('0x15'),controller['getPreferred']);router[_0xeacb('0xa')]('/:id/favicon',controller['getFavicon']);var upload=multer({'storage':multer[_0xeacb('0x16')]({'destination':function(_0x166b17,_0x887856,_0x2932db){_0x2932db(null,path[_0xeacb('0x17')](config[_0xeacb('0x18')],'server/files/images/logos/'));},'filename':function(_0x1f8be8,_0x4a877b,_0x550e98){_0x550e98(null,util[_0xeacb('0x19')](_0xeacb('0x1a'),_0xeacb('0x1b'),path[_0xeacb('0x1c')](_0x4a877b[_0xeacb('0x1d')])));}})});router[_0xeacb('0x1e')](_0xeacb('0x10'),upload['single'](_0xeacb('0x1f')),controller['addLogo']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x41518e,_0x12a4c1,_0x4be647){_0x4be647(null,path[_0xeacb('0x17')](config[_0xeacb('0x18')],'server/files/images/logos/'));},'filename':function(_0x58e7d0,_0x5a5adb,_0x41c5dc){_0x41c5dc(null,util[_0xeacb('0x19')](_0xeacb('0x1a'),_0xeacb('0x20'),path[_0xeacb('0x1c')](_0x5a5adb[_0xeacb('0x1d')])));}})});router[_0xeacb('0x1e')](_0xeacb('0x11'),upload[_0xeacb('0x21')](_0xeacb('0x1f')),controller['addLogoLogin']);var upload=multer({'storage':multer[_0xeacb('0x16')]({'destination':function(_0x547300,_0x323745,_0x3a9cbe){_0x3a9cbe(null,path[_0xeacb('0x17')](config['root'],'server/files/images/logos/'));},'filename':function(_0x523cbe,_0x2576bf,_0x43cc24){_0x43cc24(null,util[_0xeacb('0x19')]('%s%s',_0xeacb('0x22'),path[_0xeacb('0x1c')](_0x2576bf[_0xeacb('0x1d')])));}})});router[_0xeacb('0x1e')](_0xeacb('0x15'),upload['single'](_0xeacb('0x1f')),controller['addPreferred']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x106338,_0x5a68e2,_0x4fdbbb){_0x4fdbbb(null,path['join'](config['root'],'server/files/images/logos/'));},'filename':function(_0xe4f3f1,_0x1dc6de,_0x586147){_0x586147(null,util[_0xeacb('0x19')](_0xeacb('0x1a'),_0xeacb('0x23'),path['extname'](_0x1dc6de[_0xeacb('0x1d')])));}})});router[_0xeacb('0x1e')](_0xeacb('0x24'),upload[_0xeacb('0x21')](_0xeacb('0x1f')),controller[_0xeacb('0x25')]);router[_0xeacb('0x26')](_0xeacb('0xe'),auth[_0xeacb('0xb')](),controller[_0xeacb('0x27')]);module[_0xeacb('0x28')]=router;
\ No newline at end of file
+var _0x4d50=['single','file','server/files/images/logos/','logologin','/:id/logo_login','addLogoLogin','preferred','addPreferred','favicon','put','update','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./setting.controller','get','isAuthenticated','index','/now','getDate','/:id','show','/:id/logo','getLogo','getLogoLogin','/:id/preferred','getPreferred','/:id/favicon','getFavicon','diskStorage','join','root','format','%s%s','extname','originalname','post'];(function(_0x39c749,_0x46d4fd){var _0xe3f963=function(_0x33a22e){while(--_0x33a22e){_0x39c749['push'](_0x39c749['shift']());}};_0xe3f963(++_0x46d4fd);}(_0x4d50,0x10e));var _0x04d5=function(_0x211171,_0x8fac45){_0x211171=_0x211171-0x0;var _0x35124d=_0x4d50[_0x211171];return _0x35124d;};'use strict';var multer=require(_0x04d5('0x0'));var util=require(_0x04d5('0x1'));var path=require('path');var timeout=require(_0x04d5('0x2'));var express=require(_0x04d5('0x3'));var router=express[_0x04d5('0x4')]();var fs_extra=require(_0x04d5('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x04d5('0x6'));var config=require(_0x04d5('0x7'));var controller=require(_0x04d5('0x8'));router[_0x04d5('0x9')]('/',auth[_0x04d5('0xa')](),controller[_0x04d5('0xb')]);router['get'](_0x04d5('0xc'),controller[_0x04d5('0xd')]);router[_0x04d5('0x9')](_0x04d5('0xe'),controller[_0x04d5('0xf')]);router['get'](_0x04d5('0x10'),controller[_0x04d5('0x11')]);router[_0x04d5('0x9')]('/:id/logo_login',controller[_0x04d5('0x12')]);router[_0x04d5('0x9')]('/:id/gdpr',controller['gdpr']);router[_0x04d5('0x9')](_0x04d5('0x13'),controller[_0x04d5('0x14')]);router[_0x04d5('0x9')](_0x04d5('0x15'),controller[_0x04d5('0x16')]);var upload=multer({'storage':multer[_0x04d5('0x17')]({'destination':function(_0x2998b3,_0x39f1a6,_0x3584d4){_0x3584d4(null,path[_0x04d5('0x18')](config[_0x04d5('0x19')],'server/files/images/logos/'));},'filename':function(_0x2e9d50,_0x51fdc7,_0x480908){_0x480908(null,util[_0x04d5('0x1a')](_0x04d5('0x1b'),'logo',path[_0x04d5('0x1c')](_0x51fdc7[_0x04d5('0x1d')])));}})});router[_0x04d5('0x1e')](_0x04d5('0x10'),upload[_0x04d5('0x1f')](_0x04d5('0x20')),controller['addLogo']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x475b4a,_0x3586fb,_0x3c690b){_0x3c690b(null,path['join'](config[_0x04d5('0x19')],_0x04d5('0x21')));},'filename':function(_0x39d67f,_0xcb1fd,_0x4a16b3){_0x4a16b3(null,util[_0x04d5('0x1a')](_0x04d5('0x1b'),_0x04d5('0x22'),path['extname'](_0xcb1fd[_0x04d5('0x1d')])));}})});router[_0x04d5('0x1e')](_0x04d5('0x23'),upload[_0x04d5('0x1f')](_0x04d5('0x20')),controller[_0x04d5('0x24')]);var upload=multer({'storage':multer[_0x04d5('0x17')]({'destination':function(_0x2dea66,_0x4dbfb9,_0x17bf33){_0x17bf33(null,path[_0x04d5('0x18')](config[_0x04d5('0x19')],_0x04d5('0x21')));},'filename':function(_0x164b0f,_0x3eadfb,_0x49056b){_0x49056b(null,util['format'](_0x04d5('0x1b'),_0x04d5('0x25'),path[_0x04d5('0x1c')](_0x3eadfb[_0x04d5('0x1d')])));}})});router[_0x04d5('0x1e')]('/:id/preferred',upload[_0x04d5('0x1f')](_0x04d5('0x20')),controller[_0x04d5('0x26')]);var upload=multer({'storage':multer[_0x04d5('0x17')]({'destination':function(_0x1359a9,_0xfd97a0,_0x4724dc){_0x4724dc(null,path[_0x04d5('0x18')](config[_0x04d5('0x19')],'server/files/images/logos/'));},'filename':function(_0x470ee1,_0x557b0f,_0x51b10b){_0x51b10b(null,util[_0x04d5('0x1a')](_0x04d5('0x1b'),_0x04d5('0x27'),path[_0x04d5('0x1c')](_0x557b0f['originalname'])));}})});router['post']('/:id/favicon',upload[_0x04d5('0x1f')](_0x04d5('0x20')),controller['addFavicon']);router[_0x04d5('0x28')]('/:id',auth[_0x04d5('0xa')](),controller[_0x04d5('0x29')]);module[_0x04d5('0x2a')]=router;
\ No newline at end of file
index e1a00d8..1c5d9ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['https://www.xcally.com/bar/phonebar/autoupdater.xml','UNSIGNED','exports','min_internal','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN'];(function(_0x59f0dc,_0x1e2497){var _0x5b5445=function(_0x57ca91){while(--_0x57ca91){_0x59f0dc['push'](_0x59f0dc['shift']());}};_0x5b5445(++_0x1e2497);}(_0xadb5,0xad));var _0x5adb=function(_0x1558c5,_0x18aece){_0x1558c5=_0x1558c5-0x0;var _0x226415=_0xadb5[_0x1558c5];return _0x226415;};'use strict';var Sequelize=require('sequelize');module[_0x5adb('0x0')]={'min_internal':{'type':Sequelize['INTEGER'](0xb),'unique':_0x5adb('0x1'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x5adb('0x2')](0xb),'unique':_0x5adb('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x5adb('0x4')],'defaultValue':_0x5adb('0x5')},'logo':{'type':Sequelize[_0x5adb('0x4')]},'defaultLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x5adb('0x4')]},'defaultLoginLogo':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x5adb('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x5adb('0x4')]},'turnaddr':{'type':Sequelize[_0x5adb('0x4')]},'turnusername':{'type':Sequelize[_0x5adb('0x4')]},'turnpassword':{'type':Sequelize[_0x5adb('0x4')]},'pageTitle':{'type':Sequelize[_0x5adb('0x4')]},'defaultPageTitle':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x5adb('0x2')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize['STRING'],'defaultValue':_0x5adb('0x7')},'enableEmailPreview':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'split':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x5adb('0x4')],'defaultValue':'alternate'},'chatTimeout':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x5adb('0x4')]},'defaultPreferred':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x5adb('0x4')]},'allowedLoginAttempts':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize['INTEGER'],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x5adb('0x4')]},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x5adb('0x2')]},'transcribeRegion':{'type':Sequelize[_0x5adb('0x4')]},'sentiment':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x5adb('0x2')]},'sentimentRegion':{'type':Sequelize[_0x5adb('0x4')]},'language':{'type':Sequelize['STRING']},'bucket':{'type':Sequelize[_0x5adb('0x4')]},'googleSsoEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize['INTEGER'](0x2)[_0x5adb('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x5adb('0x2')](0x2)[_0x5adb('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x5adb('0x2')](0x2)[_0x5adb('0x8')],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]}};
\ No newline at end of file
+var _0x5f66=['STRING','BOOLEAN','UNSIGNED','exports','min_internal','INTEGER','min_mailbox'];(function(_0x2b7764,_0x2606f1){var _0x848dcb=function(_0x1ae85b){while(--_0x1ae85b){_0x2b7764['push'](_0x2b7764['shift']());}};_0x848dcb(++_0x2606f1);}(_0x5f66,0x1a0));var _0x65f6=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0x5f66[_0x173441];return _0x2423a8;};'use strict';var Sequelize=require('sequelize');module[_0x65f6('0x0')]={'min_internal':{'type':Sequelize['INTEGER'](0xb),'unique':_0x65f6('0x1'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x65f6('0x2')](0xb),'unique':_0x65f6('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize[_0x65f6('0x2')](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x65f6('0x4')],'defaultValue':'/var/opt/motion2/server/files/sounds/converted'},'logo':{'type':Sequelize[_0x65f6('0x4')]},'defaultLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x65f6('0x4')]},'defaultLoginLogo':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize['STRING']},'defaultHeaderWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x65f6('0x4')]},'turnaddr':{'type':Sequelize[_0x65f6('0x4')]},'turnusername':{'type':Sequelize[_0x65f6('0x4')]},'turnpassword':{'type':Sequelize[_0x65f6('0x4')]},'pageTitle':{'type':Sequelize['STRING']},'defaultPageTitle':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x65f6('0x2')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x65f6('0x4')],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':![]},'split':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x65f6('0x4')],'defaultValue':'alternate'},'chatTimeout':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x65f6('0x4')]},'defaultPreferred':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x65f6('0x4')]},'allowedLoginAttempts':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x65f6('0x4')]},'defaultFavicon':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize['INTEGER'],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize['INTEGER']},'transcribeRegion':{'type':Sequelize[_0x65f6('0x4')]},'sentiment':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x65f6('0x2')]},'sentimentRegion':{'type':Sequelize[_0x65f6('0x4')]},'language':{'type':Sequelize[_0x65f6('0x4')]},'bucket':{'type':Sequelize[_0x65f6('0x4')]},'googleSsoEnabled':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize['INTEGER'](0x2)[_0x65f6('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize['INTEGER'](0x2)[_0x65f6('0x6')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x65f6('0x2')](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x65f6('0x5')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0x65f6('0x2')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index d0c8c3c..490e6a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x530e=['existsSync','join','root','toLower','default_logo.svg','default','upperFirst','custom','Sequelize','\x20not\x20found','download','getLogoLogin','preferred','default_loginLogo.svg','ValidationError','gdpr','addPreferred','default_preferred.png','addFavicon','default_favicon.ico','getDate','now','format','YYYY-MM-DD\x20HH:mm:ss:SSS','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/license/util','../../mysqldb','http','request','then','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','error','code','message','info','result','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','sendStatus','stack','index','map','Setting','fieldName','type','key','model','name','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','findAll','params','keys','rawAttributes','include','find','body','catch','addLogo','file','filename','addLogoLogin','loginLogo','getLogo','server/files/images/logos','getLicense','logo','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon'];(function(_0x122096,_0x60c295){var _0x3d1966=function(_0x3d569e){while(--_0x3d569e){_0x122096['push'](_0x122096['shift']());}};_0x3d1966(++_0x60c295);}(_0x530e,0x10c));var _0xe530=function(_0x3bb116,_0x48836c){_0x3bb116=_0x3bb116-0x0;var _0x3a5978=_0x530e[_0x3bb116];return _0x3a5978;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe530('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe530('0x1'));var rp=require(_0xe530('0x2'));var moment=require(_0xe530('0x3'));var BPromise=require(_0xe530('0x4'));var Mustache=require('mustache');var util=require(_0xe530('0x5'));var path=require(_0xe530('0x6'));var sox=require(_0xe530('0x7'));var csv=require('to-csv');var ejs=require(_0xe530('0x8'));var fs=require('fs');var fs_extra=require(_0xe530('0x9'));var _=require(_0xe530('0xa'));var squel=require('squel');var crypto=require(_0xe530('0xb'));var jsforce=require(_0xe530('0xc'));var deskjs=require(_0xe530('0xd'));var toCsv=require(_0xe530('0xe'));var querystring=require(_0xe530('0xf'));var Papa=require(_0xe530('0x10'));var Redis=require(_0xe530('0x11'));var authService=require(_0xe530('0x12'));var qs=require(_0xe530('0x13'));var as=require(_0xe530('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe530('0x15'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe530('0x16'));var db=require(_0xe530('0x17'))['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0xe530('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x1d71c9,_0xb8b74,_0x361f89,_0x119a3f){return new BPromise(function(_0x59a494,_0x1f005d){var _0x4b6e7d=_0x119a3f||client;return _0x4b6e7d[_0xe530('0x19')](_0x1d71c9,_0x361f89)[_0xe530('0x1a')](function(_0x363be3){logger['info'](_0xe530('0x1b'),_0xb8b74,_0xe530('0x1c'));logger[_0xe530('0x1d')](_0xe530('0x1e'),_0xb8b74,'request\x20sent',JSON['stringify'](_0x363be3));if(_0x363be3[_0xe530('0x1f')]){if(_0x363be3[_0xe530('0x1f')][_0xe530('0x20')]===0x1f4){logger[_0xe530('0x1f')](_0xe530('0x1b'),_0xb8b74,_0x363be3[_0xe530('0x1f')][_0xe530('0x21')]);return _0x1f005d(_0x363be3[_0xe530('0x1f')][_0xe530('0x21')]);}logger[_0xe530('0x1f')](_0xe530('0x1b'),_0xb8b74,_0x363be3[_0xe530('0x1f')][_0xe530('0x21')]);return _0x59a494(_0x363be3[_0xe530('0x1f')]['message']);}else{logger[_0xe530('0x22')]('Setting,\x20%s,\x20%s',_0xb8b74,_0xe530('0x1c'));_0x59a494(_0x363be3[_0xe530('0x23')][_0xe530('0x21')]);}})['catch'](function(_0x52cad2){logger[_0xe530('0x1f')]('Setting,\x20%s,\x20%s',_0xb8b74,_0x52cad2);_0x1f005d(_0x52cad2);});});}function respondWithStatusCode(_0x41d6cd,_0x28a7f7){_0x28a7f7=_0x28a7f7||0xcc;return function(_0x334630){if(_0x334630){return _0x41d6cd['sendStatus'](_0x28a7f7);}return _0x41d6cd[_0xe530('0x24')](_0x28a7f7)[_0xe530('0x25')]();};}function respondWithResult(_0x10ff16,_0x42696b){_0x42696b=_0x42696b||0xc8;return function(_0x4bfa22){if(_0x4bfa22){return _0x10ff16['status'](_0x42696b)[_0xe530('0x26')](_0x4bfa22);}};}function respondWithFilteredResult(_0x56e064,_0x4564f5){return function(_0xba4818){if(_0xba4818){var _0x436eaf=typeof _0x4564f5[_0xe530('0x27')]===_0xe530('0x28')&&typeof _0x4564f5[_0xe530('0x29')]===_0xe530('0x28');var _0x2dd206=_0xba4818[_0xe530('0x2a')];var _0x3b4606=_0x436eaf?0x0:_0x4564f5[_0xe530('0x27')];var _0x591265=_0x436eaf?_0xba4818['count']:_0x4564f5[_0xe530('0x27')]+_0x4564f5['limit'];var _0x393f1e;if(_0x591265>=_0x2dd206){_0x591265=_0x2dd206;_0x393f1e=0xc8;}else{_0x393f1e=0xce;}_0x56e064['status'](_0x393f1e);return _0x56e064[_0xe530('0x2b')](_0xe530('0x2c'),_0x3b4606+'-'+_0x591265+'/'+_0x2dd206)[_0xe530('0x26')](_0xba4818);}return null;};}function patchUpdates(_0xaee18d){return function(_0x3de672){try{jsonpatch[_0xe530('0x2d')](_0x3de672,_0xaee18d,!![]);}catch(_0x50fa81){return BPromise[_0xe530('0x2e')](_0x50fa81);}return _0x3de672[_0xe530('0x2f')]();};}function saveUpdates(_0x302bc2,_0x1a644a){return function(_0xfcaa74){if(_0xfcaa74){return _0xfcaa74[_0xe530('0x30')](_0x302bc2)[_0xe530('0x1a')](function(_0x4c715c){return _0x4c715c;});}return null;};}function removeEntity(_0x2b97f0,_0x41d381){return function(_0x3187d8){if(_0x3187d8){return _0x3187d8[_0xe530('0x31')]()[_0xe530('0x1a')](function(){_0x2b97f0[_0xe530('0x24')](0xcc)[_0xe530('0x25')]();});}};}function handleEntityNotFound(_0x4064fc,_0x487dc9){return function(_0x3ae87c){if(!_0x3ae87c){_0x4064fc[_0xe530('0x32')](0x194);}return _0x3ae87c;};}function handleError(_0xaa4f0,_0x4cd411){_0x4cd411=_0x4cd411||0x1f4;return function(_0x3438c6){logger[_0xe530('0x1f')](_0x3438c6[_0xe530('0x33')]);if(_0x3438c6['name']){delete _0x3438c6['name'];}_0xaa4f0[_0xe530('0x24')](_0x4cd411)['send'](_0x3438c6);};}exports[_0xe530('0x34')]=function(_0x403e1f,_0x330c33){var _0x26726e={},_0x2040da={},_0x5a4aec={'count':0x0,'rows':[]};var _0x360ae9=_[_0xe530('0x35')](db[_0xe530('0x36')]['rawAttributes'],function(_0x5f540d){return{'name':_0x5f540d[_0xe530('0x37')],'type':_0x5f540d[_0xe530('0x38')][_0xe530('0x39')]};});_0x2040da[_0xe530('0x3a')]=_[_0xe530('0x35')](_0x360ae9,_0xe530('0x3b'));_0x2040da[_0xe530('0x3c')]=_['keys'](_0x403e1f['query']);_0x2040da[_0xe530('0x3d')]=_[_0xe530('0x3e')](_0x2040da[_0xe530('0x3a')],_0x2040da['query']);_0x26726e[_0xe530('0x3f')]=_[_0xe530('0x3e')](_0x2040da[_0xe530('0x3a')],qs['fields'](_0x403e1f['query'][_0xe530('0x40')]));_0x26726e[_0xe530('0x3f')]=_0x26726e[_0xe530('0x3f')][_0xe530('0x41')]?_0x26726e[_0xe530('0x3f')]:_0x2040da[_0xe530('0x3a')];if(!_0x403e1f[_0xe530('0x3c')][_0xe530('0x42')](_0xe530('0x43'))){_0x26726e[_0xe530('0x29')]=qs[_0xe530('0x29')](_0x403e1f[_0xe530('0x3c')][_0xe530('0x29')]);_0x26726e[_0xe530('0x27')]=qs['offset'](_0x403e1f[_0xe530('0x3c')][_0xe530('0x27')]);}_0x26726e['order']=qs['sort'](_0x403e1f['query'][_0xe530('0x44')]);_0x26726e[_0xe530('0x45')]=qs[_0xe530('0x3d')](_[_0xe530('0x46')](_0x403e1f['query'],_0x2040da['filters']),_0x360ae9);if(_0x403e1f[_0xe530('0x3c')]['filter']){_0x26726e[_0xe530('0x45')]=_[_0xe530('0x47')](_0x26726e[_0xe530('0x45')],{'$or':_[_0xe530('0x35')](_0x360ae9,function(_0x2dc2fc){if(_0x2dc2fc[_0xe530('0x38')]!==_0xe530('0x48')){var _0x95da79={};_0x95da79[_0x2dc2fc[_0xe530('0x3b')]]={'$like':'%'+_0x403e1f['query'][_0xe530('0x49')]+'%'};return _0x95da79;}})});}_0x26726e=_['merge']({},_0x26726e,_0x403e1f[_0xe530('0x4a')]);var _0xb2e1ff={'where':_0x26726e['where']};return db[_0xe530('0x36')][_0xe530('0x2a')](_0xb2e1ff)['then'](function(_0x43e64d){_0x5a4aec[_0xe530('0x2a')]=_0x43e64d;if(_0x403e1f[_0xe530('0x3c')][_0xe530('0x4b')]){_0x26726e['include']=[{'all':!![]}];}return db[_0xe530('0x36')][_0xe530('0x4c')](_0x26726e);})[_0xe530('0x1a')](function(_0x35a330){_0x5a4aec['rows']=_0x35a330;return _0x5a4aec;})[_0xe530('0x1a')](respondWithFilteredResult(_0x330c33,_0x26726e))['catch'](handleError(_0x330c33,null));};exports['show']=function(_0x24af3b,_0x6716c0){var _0xbb7e44={'raw':![],'where':{'id':_0x24af3b[_0xe530('0x4d')]['id']}},_0x2b20c2={};_0x2b20c2[_0xe530('0x3a')]=_[_0xe530('0x4e')](db[_0xe530('0x36')][_0xe530('0x4f')]);_0x2b20c2[_0xe530('0x3c')]=_[_0xe530('0x4e')](_0x24af3b[_0xe530('0x3c')]);_0x2b20c2[_0xe530('0x3d')]=_['intersection'](_0x2b20c2[_0xe530('0x3a')],_0x2b20c2['query']);_0xbb7e44[_0xe530('0x3f')]=_[_0xe530('0x3e')](_0x2b20c2[_0xe530('0x3a')],qs[_0xe530('0x40')](_0x24af3b['query']['fields']));_0xbb7e44[_0xe530('0x3f')]=_0xbb7e44[_0xe530('0x3f')][_0xe530('0x41')]?_0xbb7e44[_0xe530('0x3f')]:_0x2b20c2[_0xe530('0x3a')];if(_0x24af3b[_0xe530('0x3c')][_0xe530('0x4b')]){_0xbb7e44[_0xe530('0x50')]=[{'all':!![]}];}_0xbb7e44=_[_0xe530('0x47')]({},_0xbb7e44,_0x24af3b['options']);return db['Setting'][_0xe530('0x51')](_0xbb7e44)[_0xe530('0x1a')](handleEntityNotFound(_0x6716c0,null))['then'](respondWithResult(_0x6716c0,null))['catch'](handleError(_0x6716c0,null));};exports[_0xe530('0x30')]=function(_0x38e360,_0x39c0d1){if(_0x38e360[_0xe530('0x52')]['id']){delete _0x38e360[_0xe530('0x52')]['id'];}return db['Setting'][_0xe530('0x51')]({'where':{'id':_0x38e360[_0xe530('0x4d')]['id']}})[_0xe530('0x1a')](handleEntityNotFound(_0x39c0d1,null))[_0xe530('0x1a')](saveUpdates(_0x38e360[_0xe530('0x52')],null))[_0xe530('0x1a')](respondWithResult(_0x39c0d1,null))[_0xe530('0x53')](handleError(_0x39c0d1,null));};exports[_0xe530('0x54')]=function(_0x51d2d4,_0x5b881b,_0x429913){if(_0x51d2d4[_0xe530('0x55')]&&_0x51d2d4[_0xe530('0x55')]['filename']){_0x51d2d4[_0xe530('0x52')]['logo']=_0x51d2d4[_0xe530('0x55')][_0xe530('0x56')];}return db[_0xe530('0x36')][_0xe530('0x51')]({'where':{'id':_0x51d2d4[_0xe530('0x4d')]['id']}})[_0xe530('0x1a')](handleEntityNotFound(_0x5b881b,null))[_0xe530('0x1a')](saveUpdates(_0x51d2d4['body'],null))[_0xe530('0x1a')](respondWithResult(_0x5b881b,null))[_0xe530('0x53')](handleError(_0x5b881b,null));};exports[_0xe530('0x57')]=function(_0x4a134d,_0xbc9a66,_0x3ddcc5){if(_0x4a134d[_0xe530('0x55')]&&_0x4a134d['file'][_0xe530('0x56')]){_0x4a134d[_0xe530('0x52')][_0xe530('0x58')]=_0x4a134d[_0xe530('0x55')][_0xe530('0x56')];}return db[_0xe530('0x36')]['find']({'where':{'id':_0x4a134d['params']['id']}})[_0xe530('0x1a')](handleEntityNotFound(_0xbc9a66,null))[_0xe530('0x1a')](saveUpdates(_0x4a134d[_0xe530('0x52')],null))[_0xe530('0x1a')](respondWithResult(_0xbc9a66,null))['catch'](handleError(_0xbc9a66,null));};var utilLicense=require(_0xe530('0x16'));exports[_0xe530('0x59')]=function(_0x802343,_0x2982d9,_0x2d199c){var _0x55228f=_0xe530('0x5a');var _0x795439={'custom':![]};return utilLicense[_0xe530('0x5b')]()[_0xe530('0x1a')](function(_0x3076e7){if(_0x3076e7){_0x795439=_0x3076e7;}return db[_0xe530('0x36')]['find']({'where':{'id':_0x802343[_0xe530('0x4d')]['id']},'attributes':[_0xe530('0x5c'),_0xe530('0x58'),'preferred',_0xe530('0x5d'),_0xe530('0x5e'),_0xe530('0x5f'),_0xe530('0x60'),_0xe530('0x61')],'raw':!![]});})[_0xe530('0x1a')](handleEntityNotFound(_0x2982d9,null))[_0xe530('0x1a')](function(_0x221720){if(_0x221720){var _0x53a3df=_0x221720[_0xe530('0x5c')]&&fs[_0xe530('0x62')](path[_0xe530('0x63')](config[_0xe530('0x64')],_0x55228f,_[_0xe530('0x65')](_0x221720[_0xe530('0x5c')])))?path[_0xe530('0x63')](config[_0xe530('0x64')],_0x55228f,_['toLower'](_0x221720[_0xe530('0x5c')])):path[_0xe530('0x63')](config[_0xe530('0x64')],_0x55228f,_[_0xe530('0x65')](_0xe530('0x66')));var _0x167628=_0xe530('0x67')+_[_0xe530('0x68')]('logo');if(_0x221720[_0x167628]||!_0x795439[_0xe530('0x69')]){_0x53a3df=path['join'](config['root'],_0x55228f,_[_0xe530('0x65')](_0xe530('0x66')));}if(!fs[_0xe530('0x62')](_0x53a3df)){throw new db[(_0xe530('0x6a'))]['ValidationError'](_[_0xe530('0x68')](_0xe530('0x5c'))+_0xe530('0x6b'));}return _0x2982d9[_0xe530('0x6c')](_0x53a3df);}})['catch'](handleError(_0x2982d9,null));};var utilLicense=require(_0xe530('0x16'));exports[_0xe530('0x6d')]=function(_0x5c52bd,_0x291284,_0x256c5c){var _0x4048f5=_0xe530('0x5a');var _0x5cda6c={'custom':![]};return utilLicense[_0xe530('0x5b')]()[_0xe530('0x1a')](function(_0x4626bc){if(_0x4626bc){_0x5cda6c=_0x4626bc;}return db[_0xe530('0x36')][_0xe530('0x51')]({'where':{'id':_0x5c52bd[_0xe530('0x4d')]['id']},'attributes':[_0xe530('0x5c'),_0xe530('0x58'),_0xe530('0x6e'),_0xe530('0x5d'),_0xe530('0x5e'),_0xe530('0x5f'),_0xe530('0x60'),_0xe530('0x61')],'raw':!![]});})['then'](handleEntityNotFound(_0x291284,null))[_0xe530('0x1a')](function(_0x20a7f6){if(_0x20a7f6){var _0x1ba9b0=_0x20a7f6[_0xe530('0x58')]&&fs[_0xe530('0x62')](path[_0xe530('0x63')](config['root'],_0x4048f5,_[_0xe530('0x65')](_0x20a7f6['loginLogo'])))?path[_0xe530('0x63')](config['root'],_0x4048f5,_[_0xe530('0x65')](_0x20a7f6[_0xe530('0x58')])):path[_0xe530('0x63')](config[_0xe530('0x64')],_0x4048f5,_[_0xe530('0x65')](_0xe530('0x6f')));var _0x167bfd='default'+_[_0xe530('0x68')](_0xe530('0x58'));if(_0x20a7f6[_0x167bfd]||!_0x5cda6c[_0xe530('0x69')]){_0x1ba9b0=path['join'](config[_0xe530('0x64')],_0x4048f5,_['toLower'](_0xe530('0x6f')));}if(!fs[_0xe530('0x62')](_0x1ba9b0)){throw new db['Sequelize'][(_0xe530('0x70'))](_['upperFirst'](_0xe530('0x58'))+_0xe530('0x6b'));}return _0x291284[_0xe530('0x6c')](_0x1ba9b0);}})[_0xe530('0x53')](handleError(_0x291284,null));};exports[_0xe530('0x71')]=function(_0x993cb4,_0x7f2744){return db[_0xe530('0x36')][_0xe530('0x51')]({'where':{'id':_0x993cb4[_0xe530('0x4d')]['id']},'attributes':['securePassword']})[_0xe530('0x1a')](respondWithResult(_0x7f2744,null))[_0xe530('0x53')](handleError(_0x7f2744,null));};exports[_0xe530('0x72')]=function(_0x576244,_0x1f163a,_0x4400c9){if(_0x576244[_0xe530('0x55')]&&_0x576244[_0xe530('0x55')]['filename']){_0x576244['body']['preferred']=_0x576244[_0xe530('0x55')][_0xe530('0x56')];}return db[_0xe530('0x36')][_0xe530('0x51')]({'where':{'id':_0x576244[_0xe530('0x4d')]['id']}})['then'](handleEntityNotFound(_0x1f163a,null))[_0xe530('0x1a')](saveUpdates(_0x576244['body'],null))[_0xe530('0x1a')](respondWithResult(_0x1f163a,null))['catch'](handleError(_0x1f163a,null));};var utilLicense=require('../../config/license/util');exports['getPreferred']=function(_0x50d3bb,_0x40a3c8,_0x226f8c){var _0x21b5f5=_0xe530('0x5a');var _0x15162b={'custom':![]};return utilLicense['getLicense']()['then'](function(_0x457e26){if(_0x457e26){_0x15162b=_0x457e26;}return db['Setting']['find']({'where':{'id':_0x50d3bb[_0xe530('0x4d')]['id']},'attributes':[_0xe530('0x5c'),_0xe530('0x58'),'preferred',_0xe530('0x5d'),'defaultLogo',_0xe530('0x5f'),_0xe530('0x60'),_0xe530('0x61')],'raw':!![]});})[_0xe530('0x1a')](handleEntityNotFound(_0x40a3c8,null))['then'](function(_0x23a760){if(_0x23a760){var _0x2e673c=_0x23a760[_0xe530('0x6e')]&&fs[_0xe530('0x62')](path[_0xe530('0x63')](config[_0xe530('0x64')],_0x21b5f5,_[_0xe530('0x65')](_0x23a760[_0xe530('0x6e')])))?path[_0xe530('0x63')](config['root'],_0x21b5f5,_[_0xe530('0x65')](_0x23a760[_0xe530('0x6e')])):path['join'](config[_0xe530('0x64')],_0x21b5f5,_[_0xe530('0x65')]('default_preferred.png'));var _0x383704=_0xe530('0x67')+_[_0xe530('0x68')](_0xe530('0x6e'));if(_0x23a760[_0x383704]||!_0x15162b[_0xe530('0x69')]||!_0x15162b[_0xe530('0x6e')]){_0x2e673c=path[_0xe530('0x63')](config[_0xe530('0x64')],_0x21b5f5,_[_0xe530('0x65')](_0xe530('0x73')));}if(!fs[_0xe530('0x62')](_0x2e673c)){throw new db[(_0xe530('0x6a'))][(_0xe530('0x70'))](_[_0xe530('0x68')](_0xe530('0x6e'))+_0xe530('0x6b'));}return _0x40a3c8['download'](_0x2e673c);}})[_0xe530('0x53')](handleError(_0x40a3c8,null));};exports[_0xe530('0x74')]=function(_0xe63f8d,_0x503d2c,_0x53bc97){if(_0xe63f8d['file']&&_0xe63f8d[_0xe530('0x55')]['filename']){_0xe63f8d['body'][_0xe530('0x5d')]=_0xe63f8d[_0xe530('0x55')][_0xe530('0x56')];}return db[_0xe530('0x36')][_0xe530('0x51')]({'where':{'id':_0xe63f8d['params']['id']}})['then'](handleEntityNotFound(_0x503d2c,null))[_0xe530('0x1a')](saveUpdates(_0xe63f8d[_0xe530('0x52')],null))[_0xe530('0x1a')](respondWithResult(_0x503d2c,null))['catch'](handleError(_0x503d2c,null));};var utilLicense=require(_0xe530('0x16'));exports['getFavicon']=function(_0x36bfbd,_0x50626b,_0x28bc96){var _0xc09ff6=_0xe530('0x5a');var _0x45d8f8={'custom':![]};return utilLicense['getLicense']()['then'](function(_0x4fc647){if(_0x4fc647){_0x45d8f8=_0x4fc647;}return db['Setting'][_0xe530('0x51')]({'where':{'id':_0x36bfbd[_0xe530('0x4d')]['id']},'attributes':[_0xe530('0x5c'),_0xe530('0x58'),_0xe530('0x6e'),'favicon',_0xe530('0x5e'),_0xe530('0x5f'),'defaultPreferred','defaultFavicon'],'raw':!![]});})[_0xe530('0x1a')](handleEntityNotFound(_0x50626b,null))[_0xe530('0x1a')](function(_0x12d70c){if(_0x12d70c){var _0x2c257e=_0x12d70c['favicon']&&fs[_0xe530('0x62')](path[_0xe530('0x63')](config[_0xe530('0x64')],_0xc09ff6,_[_0xe530('0x65')](_0x12d70c['favicon'])))?path[_0xe530('0x63')](config[_0xe530('0x64')],_0xc09ff6,_[_0xe530('0x65')](_0x12d70c[_0xe530('0x5d')])):path[_0xe530('0x63')](config['root'],_0xc09ff6,_[_0xe530('0x65')](_0xe530('0x75')));var _0x5cbfd2=_0xe530('0x67')+_[_0xe530('0x68')](_0xe530('0x5d'));if(_0x12d70c[_0x5cbfd2]||!_0x45d8f8[_0xe530('0x69')]){_0x2c257e=path[_0xe530('0x63')](config[_0xe530('0x64')],_0xc09ff6,_[_0xe530('0x65')](_0xe530('0x75')));}if(!fs[_0xe530('0x62')](_0x2c257e)){throw new db[(_0xe530('0x6a'))][(_0xe530('0x70'))](_[_0xe530('0x68')](_0xe530('0x5d'))+_0xe530('0x6b'));}return _0x50626b['download'](_0x2c257e);}})[_0xe530('0x53')](handleError(_0x50626b,null));};exports[_0xe530('0x76')]=function(_0x5284ae,_0x1469d7){var _0x43b6de={'offset':moment()['utcOffset']()};_0x43b6de[_0xe530('0x77')]=moment()['utcOffset'](_0x43b6de['offset'])[_0xe530('0x78')](_0xe530('0x79'));return _0x1469d7[_0xe530('0x24')](0xc8)['send'](_0x43b6de);};
\ No newline at end of file
+var _0xebc5=['catch','body','addLogo','file','filename','addLogoLogin','getLogo','server/files/images/logos','getLicense','logo','loginLogo','preferred','favicon','defaultLogo','defaultPreferred','existsSync','join','root','toLower','default_logo.svg','custom','ValidationError','upperFirst','download','getLogoLogin','defaultLoginLogo','defaultFavicon','default','Sequelize','\x20not\x20found','securePassword','addPreferred','getPreferred','default_preferred.png','addFavicon','getFavicon','default_favicon.ico','utcOffset','format','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','request','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','status','end','json','offset','undefined','limit','count','apply','reject','update','destroy','sendStatus','stack','name','send','index','Setting','key','model','map','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','filter','VIRTUAL','merge','options','then','includeAll','include','findAll','rows','show','params','keys','rawAttributes','length','find'];(function(_0x1e9449,_0x422da){var _0x1740ab=function(_0x2562b8){while(--_0x2562b8){_0x1e9449['push'](_0x1e9449['shift']());}};_0x1740ab(++_0x422da);}(_0xebc5,0x11a));var _0x5ebc=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0xebc5[_0x3b0731];return _0x4204d7;};'use strict';var emlformat=require(_0x5ebc('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5ebc('0x1'));var jsonpatch=require(_0x5ebc('0x2'));var rp=require(_0x5ebc('0x3'));var moment=require(_0x5ebc('0x4'));var BPromise=require(_0x5ebc('0x5'));var Mustache=require(_0x5ebc('0x6'));var util=require('util');var path=require(_0x5ebc('0x7'));var sox=require(_0x5ebc('0x8'));var csv=require(_0x5ebc('0x9'));var ejs=require(_0x5ebc('0xa'));var fs=require('fs');var fs_extra=require(_0x5ebc('0xb'));var _=require('lodash');var squel=require(_0x5ebc('0xc'));var crypto=require(_0x5ebc('0xd'));var jsforce=require(_0x5ebc('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x5ebc('0x9'));var querystring=require(_0x5ebc('0xf'));var Papa=require(_0x5ebc('0x10'));var Redis=require('ioredis');var authService=require(_0x5ebc('0x11'));var qs=require(_0x5ebc('0x12'));var as=require(_0x5ebc('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5ebc('0x14'))(_0x5ebc('0x15'));var utils=require(_0x5ebc('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x5ebc('0x17'));var db=require(_0x5ebc('0x18'))['db'];var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x484c6c,_0x370a46,_0x1999c8,_0x5da771){return new BPromise(function(_0x517f80,_0x1b6a8e){var _0x4d8519=_0x5da771||client;return _0x4d8519[_0x5ebc('0x19')](_0x484c6c,_0x1999c8)['then'](function(_0x4c3b8c){logger['info'](_0x5ebc('0x1a'),_0x370a46,_0x5ebc('0x1b'));logger[_0x5ebc('0x1c')](_0x5ebc('0x1d'),_0x370a46,'request\x20sent',JSON[_0x5ebc('0x1e')](_0x4c3b8c));if(_0x4c3b8c[_0x5ebc('0x1f')]){if(_0x4c3b8c['error'][_0x5ebc('0x20')]===0x1f4){logger[_0x5ebc('0x1f')](_0x5ebc('0x1a'),_0x370a46,_0x4c3b8c[_0x5ebc('0x1f')][_0x5ebc('0x21')]);return _0x1b6a8e(_0x4c3b8c[_0x5ebc('0x1f')][_0x5ebc('0x21')]);}logger['error'](_0x5ebc('0x1a'),_0x370a46,_0x4c3b8c[_0x5ebc('0x1f')][_0x5ebc('0x21')]);return _0x517f80(_0x4c3b8c[_0x5ebc('0x1f')]['message']);}else{logger[_0x5ebc('0x22')]('Setting,\x20%s,\x20%s',_0x370a46,_0x5ebc('0x1b'));_0x517f80(_0x4c3b8c[_0x5ebc('0x23')][_0x5ebc('0x21')]);}})['catch'](function(_0x5a40e4){logger[_0x5ebc('0x1f')](_0x5ebc('0x1a'),_0x370a46,_0x5a40e4);_0x1b6a8e(_0x5a40e4);});});}function respondWithStatusCode(_0x2426ba,_0x5c8dc6){_0x5c8dc6=_0x5c8dc6||0xcc;return function(_0x4fc003){if(_0x4fc003){return _0x2426ba['sendStatus'](_0x5c8dc6);}return _0x2426ba[_0x5ebc('0x24')](_0x5c8dc6)[_0x5ebc('0x25')]();};}function respondWithResult(_0x409596,_0x3441a5){_0x3441a5=_0x3441a5||0xc8;return function(_0x3b7de6){if(_0x3b7de6){return _0x409596[_0x5ebc('0x24')](_0x3441a5)[_0x5ebc('0x26')](_0x3b7de6);}};}function respondWithFilteredResult(_0x5a3b6c,_0x1b9563){return function(_0x343f7b){if(_0x343f7b){var _0x3d59e2=typeof _0x1b9563[_0x5ebc('0x27')]===_0x5ebc('0x28')&&typeof _0x1b9563[_0x5ebc('0x29')]===_0x5ebc('0x28');var _0x25226e=_0x343f7b[_0x5ebc('0x2a')];var _0x53983a=_0x3d59e2?0x0:_0x1b9563[_0x5ebc('0x27')];var _0x11a6cb=_0x3d59e2?_0x343f7b[_0x5ebc('0x2a')]:_0x1b9563['offset']+_0x1b9563[_0x5ebc('0x29')];var _0x321254;if(_0x11a6cb>=_0x25226e){_0x11a6cb=_0x25226e;_0x321254=0xc8;}else{_0x321254=0xce;}_0x5a3b6c[_0x5ebc('0x24')](_0x321254);return _0x5a3b6c['set']('Content-Range',_0x53983a+'-'+_0x11a6cb+'/'+_0x25226e)[_0x5ebc('0x26')](_0x343f7b);}return null;};}function patchUpdates(_0x2ac674){return function(_0x45abc7){try{jsonpatch[_0x5ebc('0x2b')](_0x45abc7,_0x2ac674,!![]);}catch(_0x3da657){return BPromise[_0x5ebc('0x2c')](_0x3da657);}return _0x45abc7['save']();};}function saveUpdates(_0x473a86,_0x1afe64){return function(_0xa8990c){if(_0xa8990c){return _0xa8990c[_0x5ebc('0x2d')](_0x473a86)['then'](function(_0x4fcf6e){return _0x4fcf6e;});}return null;};}function removeEntity(_0xec2168,_0x7fc173){return function(_0xde9b92){if(_0xde9b92){return _0xde9b92[_0x5ebc('0x2e')]()['then'](function(){_0xec2168[_0x5ebc('0x24')](0xcc)[_0x5ebc('0x25')]();});}};}function handleEntityNotFound(_0x26949c,_0xb0b4e4){return function(_0x3566d5){if(!_0x3566d5){_0x26949c[_0x5ebc('0x2f')](0x194);}return _0x3566d5;};}function handleError(_0x27541f,_0x12ed49){_0x12ed49=_0x12ed49||0x1f4;return function(_0x395175){logger[_0x5ebc('0x1f')](_0x395175[_0x5ebc('0x30')]);if(_0x395175[_0x5ebc('0x31')]){delete _0x395175[_0x5ebc('0x31')];}_0x27541f[_0x5ebc('0x24')](_0x12ed49)[_0x5ebc('0x32')](_0x395175);};}exports[_0x5ebc('0x33')]=function(_0x237e26,_0xc249a9){var _0x13fd39={},_0x1b8589={},_0x1d9a88={'count':0x0,'rows':[]};var _0x16f718=_['map'](db[_0x5ebc('0x34')]['rawAttributes'],function(_0x491507){return{'name':_0x491507['fieldName'],'type':_0x491507['type'][_0x5ebc('0x35')]};});_0x1b8589[_0x5ebc('0x36')]=_[_0x5ebc('0x37')](_0x16f718,'name');_0x1b8589[_0x5ebc('0x38')]=_['keys'](_0x237e26[_0x5ebc('0x38')]);_0x1b8589['filters']=_[_0x5ebc('0x39')](_0x1b8589['model'],_0x1b8589[_0x5ebc('0x38')]);_0x13fd39[_0x5ebc('0x3a')]=_[_0x5ebc('0x39')](_0x1b8589[_0x5ebc('0x36')],qs[_0x5ebc('0x3b')](_0x237e26['query'][_0x5ebc('0x3b')]));_0x13fd39[_0x5ebc('0x3a')]=_0x13fd39[_0x5ebc('0x3a')]['length']?_0x13fd39[_0x5ebc('0x3a')]:_0x1b8589[_0x5ebc('0x36')];if(!_0x237e26[_0x5ebc('0x38')][_0x5ebc('0x3c')](_0x5ebc('0x3d'))){_0x13fd39[_0x5ebc('0x29')]=qs[_0x5ebc('0x29')](_0x237e26['query'][_0x5ebc('0x29')]);_0x13fd39[_0x5ebc('0x27')]=qs[_0x5ebc('0x27')](_0x237e26['query'][_0x5ebc('0x27')]);}_0x13fd39[_0x5ebc('0x3e')]=qs[_0x5ebc('0x3f')](_0x237e26['query']['sort']);_0x13fd39[_0x5ebc('0x40')]=qs['filters'](_['pick'](_0x237e26[_0x5ebc('0x38')],_0x1b8589[_0x5ebc('0x41')]),_0x16f718);if(_0x237e26[_0x5ebc('0x38')][_0x5ebc('0x42')]){_0x13fd39[_0x5ebc('0x40')]=_['merge'](_0x13fd39[_0x5ebc('0x40')],{'$or':_[_0x5ebc('0x37')](_0x16f718,function(_0x45cabc){if(_0x45cabc['type']!==_0x5ebc('0x43')){var _0x19f724={};_0x19f724[_0x45cabc[_0x5ebc('0x31')]]={'$like':'%'+_0x237e26['query'][_0x5ebc('0x42')]+'%'};return _0x19f724;}})});}_0x13fd39=_[_0x5ebc('0x44')]({},_0x13fd39,_0x237e26[_0x5ebc('0x45')]);var _0x1c97f8={'where':_0x13fd39[_0x5ebc('0x40')]};return db[_0x5ebc('0x34')]['count'](_0x1c97f8)[_0x5ebc('0x46')](function(_0x5a9f87){_0x1d9a88[_0x5ebc('0x2a')]=_0x5a9f87;if(_0x237e26[_0x5ebc('0x38')][_0x5ebc('0x47')]){_0x13fd39[_0x5ebc('0x48')]=[{'all':!![]}];}return db[_0x5ebc('0x34')][_0x5ebc('0x49')](_0x13fd39);})[_0x5ebc('0x46')](function(_0x31accf){_0x1d9a88[_0x5ebc('0x4a')]=_0x31accf;return _0x1d9a88;})[_0x5ebc('0x46')](respondWithFilteredResult(_0xc249a9,_0x13fd39))['catch'](handleError(_0xc249a9,null));};exports[_0x5ebc('0x4b')]=function(_0x5577fd,_0x516d6b){var _0x552706={'raw':![],'where':{'id':_0x5577fd[_0x5ebc('0x4c')]['id']}},_0x23cb9d={};_0x23cb9d[_0x5ebc('0x36')]=_[_0x5ebc('0x4d')](db[_0x5ebc('0x34')][_0x5ebc('0x4e')]);_0x23cb9d['query']=_['keys'](_0x5577fd[_0x5ebc('0x38')]);_0x23cb9d[_0x5ebc('0x41')]=_[_0x5ebc('0x39')](_0x23cb9d['model'],_0x23cb9d[_0x5ebc('0x38')]);_0x552706[_0x5ebc('0x3a')]=_[_0x5ebc('0x39')](_0x23cb9d[_0x5ebc('0x36')],qs[_0x5ebc('0x3b')](_0x5577fd[_0x5ebc('0x38')][_0x5ebc('0x3b')]));_0x552706[_0x5ebc('0x3a')]=_0x552706[_0x5ebc('0x3a')][_0x5ebc('0x4f')]?_0x552706['attributes']:_0x23cb9d['model'];if(_0x5577fd[_0x5ebc('0x38')][_0x5ebc('0x47')]){_0x552706[_0x5ebc('0x48')]=[{'all':!![]}];}_0x552706=_[_0x5ebc('0x44')]({},_0x552706,_0x5577fd[_0x5ebc('0x45')]);return db[_0x5ebc('0x34')][_0x5ebc('0x50')](_0x552706)['then'](handleEntityNotFound(_0x516d6b,null))[_0x5ebc('0x46')](respondWithResult(_0x516d6b,null))[_0x5ebc('0x51')](handleError(_0x516d6b,null));};exports[_0x5ebc('0x2d')]=function(_0x3251d9,_0x1e876e){if(_0x3251d9[_0x5ebc('0x52')]['id']){delete _0x3251d9[_0x5ebc('0x52')]['id'];}return db[_0x5ebc('0x34')]['find']({'where':{'id':_0x3251d9['params']['id']}})[_0x5ebc('0x46')](handleEntityNotFound(_0x1e876e,null))[_0x5ebc('0x46')](saveUpdates(_0x3251d9[_0x5ebc('0x52')],null))[_0x5ebc('0x46')](respondWithResult(_0x1e876e,null))[_0x5ebc('0x51')](handleError(_0x1e876e,null));};exports[_0x5ebc('0x53')]=function(_0x238e08,_0xe77323,_0xa74723){if(_0x238e08[_0x5ebc('0x54')]&&_0x238e08['file'][_0x5ebc('0x55')]){_0x238e08['body']['logo']=_0x238e08[_0x5ebc('0x54')][_0x5ebc('0x55')];}return db[_0x5ebc('0x34')][_0x5ebc('0x50')]({'where':{'id':_0x238e08[_0x5ebc('0x4c')]['id']}})[_0x5ebc('0x46')](handleEntityNotFound(_0xe77323,null))[_0x5ebc('0x46')](saveUpdates(_0x238e08[_0x5ebc('0x52')],null))[_0x5ebc('0x46')](respondWithResult(_0xe77323,null))['catch'](handleError(_0xe77323,null));};exports[_0x5ebc('0x56')]=function(_0x366621,_0x5f19d8,_0x395356){if(_0x366621['file']&&_0x366621[_0x5ebc('0x54')][_0x5ebc('0x55')]){_0x366621[_0x5ebc('0x52')]['loginLogo']=_0x366621[_0x5ebc('0x54')][_0x5ebc('0x55')];}return db[_0x5ebc('0x34')][_0x5ebc('0x50')]({'where':{'id':_0x366621[_0x5ebc('0x4c')]['id']}})[_0x5ebc('0x46')](handleEntityNotFound(_0x5f19d8,null))['then'](saveUpdates(_0x366621[_0x5ebc('0x52')],null))[_0x5ebc('0x46')](respondWithResult(_0x5f19d8,null))[_0x5ebc('0x51')](handleError(_0x5f19d8,null));};var utilLicense=require('../../config/license/util');exports[_0x5ebc('0x57')]=function(_0x3d149a,_0x512fad,_0x3f386c){var _0x19fda2=_0x5ebc('0x58');var _0x5c46d7={'custom':![]};return utilLicense[_0x5ebc('0x59')]()['then'](function(_0x4b2a17){if(_0x4b2a17){_0x5c46d7=_0x4b2a17;}return db[_0x5ebc('0x34')][_0x5ebc('0x50')]({'where':{'id':_0x3d149a[_0x5ebc('0x4c')]['id']},'attributes':[_0x5ebc('0x5a'),_0x5ebc('0x5b'),_0x5ebc('0x5c'),_0x5ebc('0x5d'),_0x5ebc('0x5e'),'defaultLoginLogo',_0x5ebc('0x5f'),'defaultFavicon'],'raw':!![]});})[_0x5ebc('0x46')](handleEntityNotFound(_0x512fad,null))['then'](function(_0x561601){if(_0x561601){var _0x5a29e7=_0x561601[_0x5ebc('0x5a')]&&fs[_0x5ebc('0x60')](path[_0x5ebc('0x61')](config[_0x5ebc('0x62')],_0x19fda2,_[_0x5ebc('0x63')](_0x561601[_0x5ebc('0x5a')])))?path[_0x5ebc('0x61')](config[_0x5ebc('0x62')],_0x19fda2,_[_0x5ebc('0x63')](_0x561601[_0x5ebc('0x5a')])):path['join'](config['root'],_0x19fda2,_[_0x5ebc('0x63')](_0x5ebc('0x64')));var _0x3100e1='default'+_['upperFirst'](_0x5ebc('0x5a'));if(_0x561601[_0x3100e1]||!_0x5c46d7[_0x5ebc('0x65')]){_0x5a29e7=path['join'](config[_0x5ebc('0x62')],_0x19fda2,_['toLower'](_0x5ebc('0x64')));}if(!fs[_0x5ebc('0x60')](_0x5a29e7)){throw new db['Sequelize'][(_0x5ebc('0x66'))](_[_0x5ebc('0x67')]('logo')+'\x20not\x20found');}return _0x512fad[_0x5ebc('0x68')](_0x5a29e7);}})[_0x5ebc('0x51')](handleError(_0x512fad,null));};var utilLicense=require(_0x5ebc('0x17'));exports[_0x5ebc('0x69')]=function(_0xbf9b5f,_0x3be66c,_0x3e8200){var _0x492742='server/files/images/logos';var _0x3d2c56={'custom':![]};return utilLicense[_0x5ebc('0x59')]()[_0x5ebc('0x46')](function(_0x1b57c3){if(_0x1b57c3){_0x3d2c56=_0x1b57c3;}return db[_0x5ebc('0x34')]['find']({'where':{'id':_0xbf9b5f[_0x5ebc('0x4c')]['id']},'attributes':[_0x5ebc('0x5a'),_0x5ebc('0x5b'),'preferred',_0x5ebc('0x5d'),_0x5ebc('0x5e'),_0x5ebc('0x6a'),_0x5ebc('0x5f'),_0x5ebc('0x6b')],'raw':!![]});})[_0x5ebc('0x46')](handleEntityNotFound(_0x3be66c,null))[_0x5ebc('0x46')](function(_0x4bbc58){if(_0x4bbc58){var _0x2aa83d=_0x4bbc58[_0x5ebc('0x5b')]&&fs[_0x5ebc('0x60')](path[_0x5ebc('0x61')](config[_0x5ebc('0x62')],_0x492742,_['toLower'](_0x4bbc58['loginLogo'])))?path[_0x5ebc('0x61')](config[_0x5ebc('0x62')],_0x492742,_[_0x5ebc('0x63')](_0x4bbc58[_0x5ebc('0x5b')])):path[_0x5ebc('0x61')](config[_0x5ebc('0x62')],_0x492742,_['toLower']('default_loginLogo.svg'));var _0x745666=_0x5ebc('0x6c')+_[_0x5ebc('0x67')]('loginLogo');if(_0x4bbc58[_0x745666]||!_0x3d2c56[_0x5ebc('0x65')]){_0x2aa83d=path[_0x5ebc('0x61')](config[_0x5ebc('0x62')],_0x492742,_['toLower']('default_loginLogo.svg'));}if(!fs[_0x5ebc('0x60')](_0x2aa83d)){throw new db[(_0x5ebc('0x6d'))][(_0x5ebc('0x66'))](_[_0x5ebc('0x67')](_0x5ebc('0x5b'))+_0x5ebc('0x6e'));}return _0x3be66c[_0x5ebc('0x68')](_0x2aa83d);}})[_0x5ebc('0x51')](handleError(_0x3be66c,null));};exports['gdpr']=function(_0x5abb28,_0x12376a){return db[_0x5ebc('0x34')][_0x5ebc('0x50')]({'where':{'id':_0x5abb28['params']['id']},'attributes':[_0x5ebc('0x6f')]})['then'](respondWithResult(_0x12376a,null))[_0x5ebc('0x51')](handleError(_0x12376a,null));};exports[_0x5ebc('0x70')]=function(_0xa91d9b,_0x1a512a,_0x5f07c8){if(_0xa91d9b['file']&&_0xa91d9b[_0x5ebc('0x54')][_0x5ebc('0x55')]){_0xa91d9b[_0x5ebc('0x52')]['preferred']=_0xa91d9b[_0x5ebc('0x54')][_0x5ebc('0x55')];}return db[_0x5ebc('0x34')][_0x5ebc('0x50')]({'where':{'id':_0xa91d9b[_0x5ebc('0x4c')]['id']}})['then'](handleEntityNotFound(_0x1a512a,null))['then'](saveUpdates(_0xa91d9b[_0x5ebc('0x52')],null))[_0x5ebc('0x46')](respondWithResult(_0x1a512a,null))['catch'](handleError(_0x1a512a,null));};var utilLicense=require(_0x5ebc('0x17'));exports[_0x5ebc('0x71')]=function(_0x3d7e32,_0x4abe13,_0x39fc1c){var _0x156c74=_0x5ebc('0x58');var _0x1cd8af={'custom':![]};return utilLicense[_0x5ebc('0x59')]()[_0x5ebc('0x46')](function(_0x4e87ef){if(_0x4e87ef){_0x1cd8af=_0x4e87ef;}return db[_0x5ebc('0x34')]['find']({'where':{'id':_0x3d7e32[_0x5ebc('0x4c')]['id']},'attributes':[_0x5ebc('0x5a'),_0x5ebc('0x5b'),_0x5ebc('0x5c'),_0x5ebc('0x5d'),'defaultLogo','defaultLoginLogo',_0x5ebc('0x5f'),_0x5ebc('0x6b')],'raw':!![]});})['then'](handleEntityNotFound(_0x4abe13,null))['then'](function(_0x35981b){if(_0x35981b){var _0x4e4d70=_0x35981b[_0x5ebc('0x5c')]&&fs[_0x5ebc('0x60')](path[_0x5ebc('0x61')](config['root'],_0x156c74,_['toLower'](_0x35981b[_0x5ebc('0x5c')])))?path[_0x5ebc('0x61')](config[_0x5ebc('0x62')],_0x156c74,_[_0x5ebc('0x63')](_0x35981b[_0x5ebc('0x5c')])):path[_0x5ebc('0x61')](config[_0x5ebc('0x62')],_0x156c74,_[_0x5ebc('0x63')]('default_preferred.png'));var _0x574aeb=_0x5ebc('0x6c')+_[_0x5ebc('0x67')]('preferred');if(_0x35981b[_0x574aeb]||!_0x1cd8af[_0x5ebc('0x65')]||!_0x1cd8af[_0x5ebc('0x5c')]){_0x4e4d70=path[_0x5ebc('0x61')](config[_0x5ebc('0x62')],_0x156c74,_[_0x5ebc('0x63')](_0x5ebc('0x72')));}if(!fs[_0x5ebc('0x60')](_0x4e4d70)){throw new db[(_0x5ebc('0x6d'))]['ValidationError'](_[_0x5ebc('0x67')](_0x5ebc('0x5c'))+_0x5ebc('0x6e'));}return _0x4abe13['download'](_0x4e4d70);}})[_0x5ebc('0x51')](handleError(_0x4abe13,null));};exports[_0x5ebc('0x73')]=function(_0x37d0c5,_0x123564,_0x3fc79d){if(_0x37d0c5[_0x5ebc('0x54')]&&_0x37d0c5[_0x5ebc('0x54')][_0x5ebc('0x55')]){_0x37d0c5[_0x5ebc('0x52')][_0x5ebc('0x5d')]=_0x37d0c5[_0x5ebc('0x54')][_0x5ebc('0x55')];}return db[_0x5ebc('0x34')][_0x5ebc('0x50')]({'where':{'id':_0x37d0c5[_0x5ebc('0x4c')]['id']}})[_0x5ebc('0x46')](handleEntityNotFound(_0x123564,null))[_0x5ebc('0x46')](saveUpdates(_0x37d0c5['body'],null))['then'](respondWithResult(_0x123564,null))[_0x5ebc('0x51')](handleError(_0x123564,null));};var utilLicense=require(_0x5ebc('0x17'));exports[_0x5ebc('0x74')]=function(_0x2e1bc4,_0x2281e1,_0xde5bfd){var _0x1d9067=_0x5ebc('0x58');var _0x2bfd87={'custom':![]};return utilLicense[_0x5ebc('0x59')]()[_0x5ebc('0x46')](function(_0x3e7b5e){if(_0x3e7b5e){_0x2bfd87=_0x3e7b5e;}return db[_0x5ebc('0x34')][_0x5ebc('0x50')]({'where':{'id':_0x2e1bc4[_0x5ebc('0x4c')]['id']},'attributes':['logo',_0x5ebc('0x5b'),_0x5ebc('0x5c'),_0x5ebc('0x5d'),_0x5ebc('0x5e'),_0x5ebc('0x6a'),_0x5ebc('0x5f'),_0x5ebc('0x6b')],'raw':!![]});})['then'](handleEntityNotFound(_0x2281e1,null))[_0x5ebc('0x46')](function(_0x18e32d){if(_0x18e32d){var _0xdb48ef=_0x18e32d[_0x5ebc('0x5d')]&&fs[_0x5ebc('0x60')](path[_0x5ebc('0x61')](config[_0x5ebc('0x62')],_0x1d9067,_[_0x5ebc('0x63')](_0x18e32d[_0x5ebc('0x5d')])))?path[_0x5ebc('0x61')](config[_0x5ebc('0x62')],_0x1d9067,_[_0x5ebc('0x63')](_0x18e32d[_0x5ebc('0x5d')])):path[_0x5ebc('0x61')](config[_0x5ebc('0x62')],_0x1d9067,_[_0x5ebc('0x63')](_0x5ebc('0x75')));var _0x302fa0=_0x5ebc('0x6c')+_[_0x5ebc('0x67')](_0x5ebc('0x5d'));if(_0x18e32d[_0x302fa0]||!_0x2bfd87[_0x5ebc('0x65')]){_0xdb48ef=path[_0x5ebc('0x61')](config[_0x5ebc('0x62')],_0x1d9067,_[_0x5ebc('0x63')]('default_favicon.ico'));}if(!fs[_0x5ebc('0x60')](_0xdb48ef)){throw new db['Sequelize']['ValidationError'](_[_0x5ebc('0x67')](_0x5ebc('0x5d'))+_0x5ebc('0x6e'));}return _0x2281e1[_0x5ebc('0x68')](_0xdb48ef);}})[_0x5ebc('0x51')](handleError(_0x2281e1,null));};exports['getDate']=function(_0x15f4e4,_0x137031){var _0xdc7eae={'offset':moment()['utcOffset']()};_0xdc7eae['now']=moment()[_0x5ebc('0x76')](_0xdc7eae[_0x5ebc('0x27')])[_0x5ebc('0x77')](_0x5ebc('0x78'));return _0x137031['status'](0xc8)[_0x5ebc('0x32')](_0xdc7eae);};
\ No newline at end of file
index 35f2e3e..ce5e65f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['bluebird','path','./setting.attributes','exports','define','Setting','settings','lodash','util','moment'];(function(_0x84278b,_0x26df69){var _0x1729b9=function(_0x515229){while(--_0x515229){_0x84278b['push'](_0x84278b['shift']());}};_0x1729b9(++_0x26df69);}(_0xe14b,0x93));var _0xbe14=function(_0x396a22,_0x476be8){_0x396a22=_0x396a22-0x0;var _0x3b4ebd=_0xe14b[_0x396a22];return _0x3b4ebd;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xbe14('0x2'));var BPromise=require(_0xbe14('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbe14('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xbe14('0x5'));module[_0xbe14('0x6')]=function(_0x1fe204,_0x1ff100){return _0x1fe204[_0xbe14('0x7')](_0xbe14('0x8'),attributes,{'tableName':_0xbe14('0x9'),'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(_0x15fc7a,_0xd21741){var _0x3aa9f4=function(_0x313108){while(--_0x313108){_0x15fc7a['push'](_0x15fc7a['shift']());}};_0x3aa9f4(++_0xd21741);}(_0x55ca,0x126));var _0xa55c=function(_0x258257,_0x32042d){_0x258257=_0x258257-0x0;var _0xafb58a=_0x55ca[_0x258257];return _0xafb58a;};'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 606cd20..f6e1a4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a82=['options','include','model','attributes','map','ShowSetting','debug','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','info','request\x20sent','Setting,\x20%s,\x20%s,\x20%s','error','code','Setting,\x20%s,\x20%s','message','catch','Setting','find','raw'];(function(_0x31a620,_0x105a9e){var _0x55191b=function(_0x128185){while(--_0x128185){_0x31a620['push'](_0x31a620['shift']());}};_0x55191b(++_0x105a9e);}(_0x3a82,0x173));var _0x23a8=function(_0x2d7ab4,_0x379814){_0x2d7ab4=_0x2d7ab4-0x0;var _0xde4043=_0x3a82[_0x2d7ab4];return _0xde4043;};'use strict';var _=require(_0x23a8('0x0'));var util=require(_0x23a8('0x1'));var moment=require(_0x23a8('0x2'));var BPromise=require(_0x23a8('0x3'));var rs=require(_0x23a8('0x4'));var fs=require('fs');var Redis=require(_0x23a8('0x5'));var db=require(_0x23a8('0x6'))['db'];var utils=require(_0x23a8('0x7'));var logger=require(_0x23a8('0x8'))(_0x23a8('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x23a8('0xa')][_0x23a8('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2f5ff2,_0x5def2b,_0xe03f5a){return new BPromise(function(_0x328cec,_0x3ed9bc){return client[_0x23a8('0xc')](_0x2f5ff2,_0xe03f5a)[_0x23a8('0xd')](function(_0xb2e4f6){logger[_0x23a8('0xe')]('Setting,\x20%s,\x20%s',_0x5def2b,_0x23a8('0xf'));logger['debug'](_0x23a8('0x10'),_0x5def2b,'request\x20sent',JSON['stringify'](_0xb2e4f6));if(_0xb2e4f6[_0x23a8('0x11')]){if(_0xb2e4f6[_0x23a8('0x11')][_0x23a8('0x12')]===0x1f4){logger['error'](_0x23a8('0x13'),_0x5def2b,_0xb2e4f6[_0x23a8('0x11')][_0x23a8('0x14')]);return _0x3ed9bc(_0xb2e4f6[_0x23a8('0x11')]['message']);}logger[_0x23a8('0x11')](_0x23a8('0x13'),_0x5def2b,_0xb2e4f6['error'][_0x23a8('0x14')]);return _0x328cec(_0xb2e4f6[_0x23a8('0x11')][_0x23a8('0x14')]);}else{logger[_0x23a8('0xe')](_0x23a8('0x13'),_0x5def2b,_0x23a8('0xf'));_0x328cec(_0xb2e4f6['result'][_0x23a8('0x14')]);}})[_0x23a8('0x15')](function(_0x59d7e3){logger[_0x23a8('0x11')](_0x23a8('0x13'),_0x5def2b,_0x59d7e3);_0x3ed9bc(_0x59d7e3);});});}exports['ShowSetting']=function(_0x24584b){var _0x4f4efc=this;return new Promise(function(_0x37f526,_0x15640d){return db[_0x23a8('0x16')][_0x23a8('0x17')]({'raw':_0x24584b['options']?_0x24584b['options'][_0x23a8('0x18')]===undefined?!![]:![]:!![],'where':_0x24584b[_0x23a8('0x19')]?_0x24584b[_0x23a8('0x19')]['where']||null:null,'attributes':_0x24584b[_0x23a8('0x19')]?_0x24584b['options']['attributes']||null:null,'include':_0x24584b[_0x23a8('0x19')]?_0x24584b['options']['include']?_['map'](_0x24584b[_0x23a8('0x19')][_0x23a8('0x1a')],function(_0x18f22b){return{'model':db[_0x18f22b[_0x23a8('0x1b')]],'as':_0x18f22b['as'],'attributes':_0x18f22b[_0x23a8('0x1c')],'include':_0x18f22b[_0x23a8('0x1a')]?_[_0x23a8('0x1d')](_0x18f22b[_0x23a8('0x1a')],function(_0x2de8e1){return{'model':db[_0x2de8e1['model']],'as':_0x2de8e1['as'],'attributes':_0x2de8e1[_0x23a8('0x1c')],'include':_0x2de8e1[_0x23a8('0x1a')]?_[_0x23a8('0x1d')](_0x2de8e1[_0x23a8('0x1a')],function(_0xb413cf){return{'model':db[_0xb413cf[_0x23a8('0x1b')]],'as':_0xb413cf['as'],'attributes':_0xb413cf['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x466a70){logger[_0x23a8('0xe')](_0x23a8('0x1e'),_0x24584b);logger[_0x23a8('0x1f')](_0x23a8('0x1e'),_0x24584b,JSON[_0x23a8('0x20')](_0x466a70));_0x37f526(_0x466a70);})[_0x23a8('0x15')](function(_0x58341f){logger[_0x23a8('0x11')](_0x23a8('0x1e'),_0x58341f[_0x23a8('0x14')],_0x24584b);_0x15640d(_0x4f4efc[_0x23a8('0x11')](0x1f4,_0x58341f['message']));});});};
\ No newline at end of file
+var _0x4ef1=['attributes','include','map','model','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','stringify','error','code','Setting,\x20%s,\x20%s','message','info','result','ShowSetting','Setting','find','options','raw'];(function(_0x334841,_0x2bbc4c){var _0x5beb4b=function(_0x4bea72){while(--_0x4bea72){_0x334841['push'](_0x334841['shift']());}};_0x5beb4b(++_0x2bbc4c);}(_0x4ef1,0x14f));var _0x14ef=function(_0x4309eb,_0x319008){_0x4309eb=_0x4309eb-0x0;var _0x45cbe7=_0x4ef1[_0x4309eb];return _0x45cbe7;};'use strict';var _=require(_0x14ef('0x0'));var util=require(_0x14ef('0x1'));var moment=require('moment');var BPromise=require(_0x14ef('0x2'));var rs=require(_0x14ef('0x3'));var fs=require('fs');var Redis=require(_0x14ef('0x4'));var db=require(_0x14ef('0x5'))['db'];var utils=require(_0x14ef('0x6'));var logger=require('../../config/logger')(_0x14ef('0x7'));var config=require(_0x14ef('0x8'));var jayson=require(_0x14ef('0x9'));var client=jayson[_0x14ef('0xa')][_0x14ef('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x375db5,_0x4f58ae,_0x36f190){return new BPromise(function(_0x4592a1,_0x3e39af){return client[_0x14ef('0xc')](_0x375db5,_0x36f190)[_0x14ef('0xd')](function(_0x15cc8c){logger['info']('Setting,\x20%s,\x20%s',_0x4f58ae,_0x14ef('0xe'));logger[_0x14ef('0xf')]('Setting,\x20%s,\x20%s,\x20%s',_0x4f58ae,_0x14ef('0xe'),JSON[_0x14ef('0x10')](_0x15cc8c));if(_0x15cc8c[_0x14ef('0x11')]){if(_0x15cc8c[_0x14ef('0x11')][_0x14ef('0x12')]===0x1f4){logger[_0x14ef('0x11')](_0x14ef('0x13'),_0x4f58ae,_0x15cc8c[_0x14ef('0x11')]['message']);return _0x3e39af(_0x15cc8c[_0x14ef('0x11')][_0x14ef('0x14')]);}logger[_0x14ef('0x11')](_0x14ef('0x13'),_0x4f58ae,_0x15cc8c[_0x14ef('0x11')]['message']);return _0x4592a1(_0x15cc8c['error'][_0x14ef('0x14')]);}else{logger[_0x14ef('0x15')]('Setting,\x20%s,\x20%s',_0x4f58ae,_0x14ef('0xe'));_0x4592a1(_0x15cc8c[_0x14ef('0x16')]['message']);}})['catch'](function(_0x5003b0){logger[_0x14ef('0x11')](_0x14ef('0x13'),_0x4f58ae,_0x5003b0);_0x3e39af(_0x5003b0);});});}exports[_0x14ef('0x17')]=function(_0x4e4d5f){var _0x552f24=this;return new Promise(function(_0x4cc8ae,_0x432cc8){return db[_0x14ef('0x18')][_0x14ef('0x19')]({'raw':_0x4e4d5f[_0x14ef('0x1a')]?_0x4e4d5f[_0x14ef('0x1a')][_0x14ef('0x1b')]===undefined?!![]:![]:!![],'where':_0x4e4d5f['options']?_0x4e4d5f[_0x14ef('0x1a')]['where']||null:null,'attributes':_0x4e4d5f[_0x14ef('0x1a')]?_0x4e4d5f['options'][_0x14ef('0x1c')]||null:null,'include':_0x4e4d5f[_0x14ef('0x1a')]?_0x4e4d5f['options'][_0x14ef('0x1d')]?_[_0x14ef('0x1e')](_0x4e4d5f[_0x14ef('0x1a')]['include'],function(_0x26b4de){return{'model':db[_0x26b4de[_0x14ef('0x1f')]],'as':_0x26b4de['as'],'attributes':_0x26b4de['attributes'],'include':_0x26b4de[_0x14ef('0x1d')]?_[_0x14ef('0x1e')](_0x26b4de[_0x14ef('0x1d')],function(_0x55415f){return{'model':db[_0x55415f[_0x14ef('0x1f')]],'as':_0x55415f['as'],'attributes':_0x55415f[_0x14ef('0x1c')],'include':_0x55415f[_0x14ef('0x1d')]?_[_0x14ef('0x1e')](_0x55415f[_0x14ef('0x1d')],function(_0x489d83){return{'model':db[_0x489d83[_0x14ef('0x1f')]],'as':_0x489d83['as'],'attributes':_0x489d83[_0x14ef('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x14ef('0xd')](function(_0x20c03f){logger[_0x14ef('0x15')]('ShowSetting',_0x4e4d5f);logger['debug'](_0x14ef('0x17'),_0x4e4d5f,JSON[_0x14ef('0x10')](_0x20c03f));_0x4cc8ae(_0x20c03f);})[_0x14ef('0x20')](function(_0x2f66fc){logger[_0x14ef('0x11')]('ShowSetting',_0x2f66fc['message'],_0x4e4d5f);_0x432cc8(_0x552f24['error'](0x1f4,_0x2f66fc['message']));});});};
\ No newline at end of file
index 5c87e43..8ac42fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','isAuthenticated','/describe','describe','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','getInteractions','/:id/status','getAgents','post','create','addDisposition','addAnswer','/:id/notify','notify','addApplications','send','status','addAgents','put','update','delete','/:id','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0x326f,0xd1));var _0xf326=function(_0xa7cc77,_0x4a57e6){_0xa7cc77=_0xa7cc77-0x0;var _0x46223a=_0x326f[_0xa7cc77];return _0x46223a;};'use strict';var multer=require(_0xf326('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xf326('0x1'));var express=require(_0xf326('0x2'));var router=express[_0xf326('0x3')]();var fs_extra=require(_0xf326('0x4'));var auth=require(_0xf326('0x5'));var interaction=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var controller=require(_0xf326('0x8'));router[_0xf326('0x9')]('/',auth[_0xf326('0xa')](),controller['index']);router[_0xf326('0x9')](_0xf326('0xb'),auth[_0xf326('0xa')](),controller[_0xf326('0xc')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xf326('0xd')]);router[_0xf326('0x9')](_0xf326('0xe'),auth[_0xf326('0xa')](),controller[_0xf326('0xf')]);router['get'](_0xf326('0x10'),auth['isAuthenticated'](),controller[_0xf326('0x11')]);router['get'](_0xf326('0x12'),auth['isAuthenticated'](),controller[_0xf326('0x13')]);router[_0xf326('0x9')]('/:id/interactions',auth[_0xf326('0xa')](),controller[_0xf326('0x14')]);router[_0xf326('0x9')](_0xf326('0x15'),controller['statusGet']);router[_0xf326('0x9')]('/:id/users',auth['isAuthenticated'](),controller[_0xf326('0x16')]);router[_0xf326('0x17')]('/',auth[_0xf326('0xa')](),controller[_0xf326('0x18')]);router[_0xf326('0x17')](_0xf326('0xe'),auth[_0xf326('0xa')](),controller[_0xf326('0x19')]);router['post'](_0xf326('0x10'),auth[_0xf326('0xa')](),controller[_0xf326('0x1a')]);router[_0xf326('0x17')](_0xf326('0x1b'),controller[_0xf326('0x1c')]);router['post']('/:id/applications',auth['isAuthenticated'](),controller[_0xf326('0x1d')]);router[_0xf326('0x17')]('/:id/send',auth['isAuthenticated'](),controller[_0xf326('0x1e')]);router['post']('/:id/status',controller[_0xf326('0x1f')]);router[_0xf326('0x17')]('/:id/users',auth['isAuthenticated'](),controller[_0xf326('0x20')]);router[_0xf326('0x21')]('/:id',auth[_0xf326('0xa')](),controller[_0xf326('0x22')]);router[_0xf326('0x23')](_0xf326('0x24'),auth[_0xf326('0xa')](),controller[_0xf326('0x25')]);router['delete']('/:id/dispositions',auth['isAuthenticated'](),controller[_0xf326('0x26')]);router[_0xf326('0x23')](_0xf326('0x10'),auth[_0xf326('0xa')](),controller[_0xf326('0x27')]);router[_0xf326('0x23')]('/:id/users',auth[_0xf326('0xa')](),controller[_0xf326('0x28')]);module[_0xf326('0x29')]=router;
\ No newline at end of file
+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(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x7217,0x19e));var _0x7721=function(_0x387777,_0x356171){_0x387777=_0x387777-0x0;var _0x3f84c0=_0x7217[_0x387777];return _0x3f84c0;};'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
index 1b8d4e6..561dc2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2735=['clicksend','plivo','clickatell','bandwidth','csc','infobip','BOOLEAN','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','randomstring','exports','name','STRING','generate','ENUM','twilio','skebby'];(function(_0x5fa7e9,_0x315b21){var _0x1ab585=function(_0x2f4f41){while(--_0x2f4f41){_0x5fa7e9['push'](_0x5fa7e9['shift']());}};_0x1ab585(++_0x315b21);}(_0x2735,0x8b));var _0x5273=function(_0x42f009,_0x5e27b1){_0x42f009=_0x42f009-0x0;var _0x22a1e0=_0x2735[_0x42f009];return _0x22a1e0;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x5273('0x0'));module[_0x5273('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x5273('0x2'),'allowNull':![]},'key':{'type':Sequelize[_0x5273('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x5273('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x5273('0x3')],'defaultValue':function(){return rs[_0x5273('0x4')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x5273('0x5')](_0x5273('0x6'),_0x5273('0x7'),'connectel',_0x5273('0x8'),_0x5273('0x9'),_0x5273('0xa'),_0x5273('0xb'),_0x5273('0xc'),_0x5273('0xd'),'intelepeer')},'accountSid':{'type':Sequelize[_0x5273('0x3')]},'authId':{'type':Sequelize[_0x5273('0x3')]},'authToken':{'type':Sequelize[_0x5273('0x3')]},'smsMethod':{'type':Sequelize[_0x5273('0x5')]('SI','TI','GP')},'username':{'type':Sequelize[_0x5273('0x3')]},'password':{'type':Sequelize[_0x5273('0x3')]},'apiKey':{'type':Sequelize[_0x5273('0x3')]},'applicationId':{'type':Sequelize['STRING']},'accountId':{'type':Sequelize[_0x5273('0x3')]},'senderString':{'type':Sequelize[_0x5273('0x3')]},'deliveryReport':{'type':Sequelize[_0x5273('0xe')],'defaultValue':![]},'description':{'type':Sequelize[_0x5273('0x3')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x5273('0xf');}},'notificationSound':{'type':Sequelize[_0x5273('0xe')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x5273('0xe')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x5273('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x5273('0xe')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x5273('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x5273('0x3')]},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0x5273('0x11')},'mandatoryDisposition':{'type':Sequelize[_0x5273('0xe')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x5a0e1c){if(!_0x5a0e1c)this[_0x5273('0x12')](_0x5273('0x13'),null);this['setDataValue'](_0x5273('0x14'),_0x5a0e1c);}}};
\ No newline at end of file
+var _0x7655=['setDataValue','mandatoryDisposition','sequelize','randomstring','exports','name','STRING','ENUM','twilio','skebby','clicksend','plivo','clickatell','bandwidth','csc','infobip','intelepeer','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','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue'];(function(_0x7ea9e0,_0x3e2a22){var _0x191073=function(_0x9e1df5){while(--_0x9e1df5){_0x7ea9e0['push'](_0x7ea9e0['shift']());}};_0x191073(++_0x3e2a22);}(_0x7655,0x144));var _0x5765=function(_0x518657,_0x33d293){_0x518657=_0x518657-0x0;var _0x1b1f4f=_0x7655[_0x518657];return _0x1b1f4f;};'use strict';var Sequelize=require(_0x5765('0x0'));var rs=require(_0x5765('0x1'));module[_0x5765('0x2')]={'name':{'type':Sequelize['STRING'],'unique':_0x5765('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x5765('0x4')],'allowNull':![]},'remote':{'type':Sequelize[_0x5765('0x4')],'allowNull':![]},'token':{'type':Sequelize[_0x5765('0x4')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0x5765('0x4')]},'type':{'type':Sequelize[_0x5765('0x5')](_0x5765('0x6'),_0x5765('0x7'),'connectel',_0x5765('0x8'),_0x5765('0x9'),_0x5765('0xa'),_0x5765('0xb'),_0x5765('0xc'),_0x5765('0xd'),_0x5765('0xe'))},'accountSid':{'type':Sequelize[_0x5765('0x4')]},'authId':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0x5765('0x4')]},'smsMethod':{'type':Sequelize[_0x5765('0x5')]('SI','TI','GP')},'username':{'type':Sequelize[_0x5765('0x4')]},'password':{'type':Sequelize['STRING']},'apiKey':{'type':Sequelize['STRING']},'applicationId':{'type':Sequelize['STRING']},'accountId':{'type':Sequelize['STRING']},'senderString':{'type':Sequelize[_0x5765('0x4')]},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x5765('0x4')]},'notificationTemplate':{'type':Sequelize[_0x5765('0xf')],'defaultValue':function(){return _0x5765('0x10');}},'notificationSound':{'type':Sequelize[_0x5765('0x11')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x5765('0x11')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x5765('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x5765('0x11')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x5765('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x5765('0x11')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x5765('0x4')]},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0x5765('0x13')},'mandatoryDisposition':{'type':Sequelize[_0x5765('0x11')],'defaultValue':![],'comment':_0x5765('0x14'),'set':function(_0x26e49c){if(!_0x26e49c)this[_0x5765('0x15')]('mandatoryDispositionPauseId',null);this[_0x5765('0x15')](_0x5765('0x16'),_0x26e49c);}}};
\ No newline at end of file
index ac273a1..9750f4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x639f=['get','SmsAccounts','UserProfileResource','destroy','name','send','index','Pause','map','rawAttributes','type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','SmsAccount','includeAll','include','rows','show','params','mandatoryDispositionPause','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','SmsAccountId','Disposition','findOne','findAll','removeDispositions','ids','addAnswer','CannedAnswer','removeAnswers','notify','sms','SmsApplication','account','applications','orderBy','Applications','priority','CmContact','Sequelize','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','from','Body','messageId','MessageSid','skebby','sender','text','connectel','clicksend','message_id','From','MessageUUID','infobip','results','csc','originatingAddress','segmentedMessage','clickatell','fromNumber','replyMessageId','bandwidth','isNil','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','CmList','Contacts','DESC','list','SmsInteraction','spread','interaction','created','autoclose','close','unmanaged','*,*,*,*','SmsMessage','ContactId','AttachmentId','UserId','User','unshift','waitForTheAssignedAgent','Start','startRouting','receiveMessage','SmsAccount,\x20%s,\x20%s,\x20%s','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','twilio','set','Content-Type','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','transaction','bulkCreate','findAndCountAll','getApplications','getInteractions','Contact','Owner','fullname','Tag','Tags','color','tag','to\x20is\x20mandatory','List','Messages','dataValues','inspect','skebby_dispatch_id','requestid','statusInt','status_code','groupName','intelepeer','redif','DELIVERED','error_code','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','received\x20delivery\x20report\x20from','message-id','state','addAgents','omit','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','redis','register','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','SmsAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update'];(function(_0x3b668e,_0x2c9ffa){var _0x43b26c=function(_0xf5dcf6){while(--_0xf5dcf6){_0x3b668e['push'](_0x3b668e['shift']());}};_0x43b26c(++_0x2c9ffa);}(_0x639f,0x18c));var _0xf639=function(_0x1d0125,_0x313278){_0x1d0125=_0x1d0125-0x0;var _0xea2823=_0x639f[_0x1d0125];return _0xea2823;};'use strict';var emlformat=require(_0xf639('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf639('0x1'));var jsonpatch=require(_0xf639('0x2'));var rp=require(_0xf639('0x3'));var moment=require(_0xf639('0x4'));var BPromise=require(_0xf639('0x5'));var Mustache=require(_0xf639('0x6'));var util=require('util');var path=require(_0xf639('0x7'));var sox=require(_0xf639('0x8'));var csv=require(_0xf639('0x9'));var ejs=require(_0xf639('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf639('0xb'));var squel=require(_0xf639('0xc'));var crypto=require(_0xf639('0xd'));var jsforce=require(_0xf639('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xf639('0xf'));var Papa=require('papaparse');var Redis=require(_0xf639('0x10'));var authService=require(_0xf639('0x11'));var qs=require(_0xf639('0x12'));var as=require(_0xf639('0x13'));var hardwareService=require(_0xf639('0x14'));var logger=require(_0xf639('0x15'))(_0xf639('0x16'));var utils=require(_0xf639('0x17'));var config=require(_0xf639('0x18'));var licenseUtil=require(_0xf639('0x19'));var db=require(_0xf639('0x1a'))['db'];config['redis']=_[_0xf639('0x1b')](config['redis'],{'host':_0xf639('0x1c'),'port':0x18eb});var socket=require(_0xf639('0x1d'))(new Redis(config[_0xf639('0x1e')]));require('./smsAccount.socket')[_0xf639('0x1f')](socket);var jayson=require(_0xf639('0x20'));var client=jayson[_0xf639('0x21')][_0xf639('0x22')]({'port':0x232c});function respondWithRpcPromise(_0x382d6c,_0x15f5ad,_0x1599b7,_0x1fc50e){return new BPromise(function(_0x3a0a17,_0x4915e0){var _0xe64fa7=_0x1fc50e||client;return _0xe64fa7[_0xf639('0x23')](_0x382d6c,_0x1599b7)[_0xf639('0x24')](function(_0x5ec874){logger[_0xf639('0x25')]('SmsAccount,\x20%s,\x20%s',_0x15f5ad,_0xf639('0x26'));logger[_0xf639('0x27')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x15f5ad,_0xf639('0x26'),JSON[_0xf639('0x28')](_0x5ec874));if(_0x5ec874[_0xf639('0x29')]){if(_0x5ec874[_0xf639('0x29')][_0xf639('0x2a')]===0x1f4){logger[_0xf639('0x29')](_0xf639('0x2b'),_0x15f5ad,_0x5ec874[_0xf639('0x29')][_0xf639('0x2c')]);return _0x4915e0(_0x5ec874[_0xf639('0x29')][_0xf639('0x2c')]);}logger[_0xf639('0x29')]('SmsAccount,\x20%s,\x20%s',_0x15f5ad,_0x5ec874['error'][_0xf639('0x2c')]);return _0x3a0a17(_0x5ec874[_0xf639('0x29')]['message']);}else{logger['info'](_0xf639('0x2b'),_0x15f5ad,'request\x20sent');_0x3a0a17(_0x5ec874[_0xf639('0x2d')][_0xf639('0x2c')]);}})[_0xf639('0x2e')](function(_0x5a369b){logger[_0xf639('0x29')](_0xf639('0x2b'),_0x15f5ad,_0x5a369b);_0x4915e0(_0x5a369b);});});}function respondWithStatusCode(_0x1d5cc1,_0x2e94b2){_0x2e94b2=_0x2e94b2||0xcc;return function(_0x302752){if(_0x302752){return _0x1d5cc1[_0xf639('0x2f')](_0x2e94b2);}return _0x1d5cc1[_0xf639('0x30')](_0x2e94b2)[_0xf639('0x31')]();};}function respondWithResult(_0x38737a,_0x29e845){_0x29e845=_0x29e845||0xc8;return function(_0x4d4547){if(_0x4d4547){return _0x38737a[_0xf639('0x30')](_0x29e845)[_0xf639('0x32')](_0x4d4547);}};}function respondWithFilteredResult(_0x4f4ccd,_0xf10511){return function(_0x59fd3a){if(_0x59fd3a){var _0x1827a6=typeof _0xf10511[_0xf639('0x33')]===_0xf639('0x34')&&typeof _0xf10511[_0xf639('0x35')]===_0xf639('0x34');var _0x4c6772=_0x59fd3a['count'];var _0x5b955e=_0x1827a6?0x0:_0xf10511[_0xf639('0x33')];var _0x1ff19e=_0x1827a6?_0x59fd3a[_0xf639('0x36')]:_0xf10511['offset']+_0xf10511[_0xf639('0x35')];var _0x573ad5;if(_0x1ff19e>=_0x4c6772){_0x1ff19e=_0x4c6772;_0x573ad5=0xc8;}else{_0x573ad5=0xce;}_0x4f4ccd['status'](_0x573ad5);return _0x4f4ccd['set'](_0xf639('0x37'),_0x5b955e+'-'+_0x1ff19e+'/'+_0x4c6772)['json'](_0x59fd3a);}return null;};}function patchUpdates(_0x2f9478){return function(_0x5f2cfc){try{jsonpatch[_0xf639('0x38')](_0x5f2cfc,_0x2f9478,!![]);}catch(_0x5044aa){return BPromise[_0xf639('0x39')](_0x5044aa);}return _0x5f2cfc[_0xf639('0x3a')]();};}function saveUpdates(_0x33f8f8,_0x5cf550){return function(_0x4b2e35){if(_0x4b2e35){return _0x4b2e35[_0xf639('0x3b')](_0x33f8f8)['then'](function(_0x13b16a){return _0x13b16a;});}return null;};}function removeEntity(_0x155e5d,_0x1b88e1){return function(_0xa634b3){if(_0xa634b3){return _0xa634b3['destroy']()[_0xf639('0x24')](function(){var _0x35ba20=_0xa634b3[_0xf639('0x3c')]({'plain':!![]});var _0x45fd6e=_0xf639('0x3d');return db[_0xf639('0x3e')][_0xf639('0x3f')]({'where':{'type':_0x45fd6e,'resourceId':_0x35ba20['id']}})['then'](function(){return _0xa634b3;});})[_0xf639('0x24')](function(){_0x155e5d['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3121ac,_0x5e476e){return function(_0xe98a07){if(!_0xe98a07){_0x3121ac['sendStatus'](0x194);}return _0xe98a07;};}function handleError(_0x245f75,_0xc3534f){_0xc3534f=_0xc3534f||0x1f4;return function(_0x4a75ab){logger[_0xf639('0x29')](_0x4a75ab['stack']);if(_0x4a75ab[_0xf639('0x40')]){delete _0x4a75ab[_0xf639('0x40')];}_0x245f75['status'](_0xc3534f)[_0xf639('0x41')](_0x4a75ab);};}exports[_0xf639('0x42')]=function(_0x1ada71,_0x20bb89){var _0x3cde33={'include':[{'model':db[_0xf639('0x43')],'as':'mandatoryDispositionPause'}]},_0x37e757={},_0x6a8a00={'count':0x0,'rows':[]};var _0x2c9170=_[_0xf639('0x44')](db['SmsAccount'][_0xf639('0x45')],function(_0x3001aa){return{'name':_0x3001aa['fieldName'],'type':_0x3001aa[_0xf639('0x46')][_0xf639('0x47')]};});_0x37e757[_0xf639('0x48')]=_[_0xf639('0x44')](_0x2c9170,_0xf639('0x40'));_0x37e757[_0xf639('0x49')]=_[_0xf639('0x4a')](_0x1ada71[_0xf639('0x49')]);_0x37e757['filters']=_['intersection'](_0x37e757[_0xf639('0x48')],_0x37e757[_0xf639('0x49')]);_0x3cde33[_0xf639('0x4b')]=_[_0xf639('0x4c')](_0x37e757[_0xf639('0x48')],qs[_0xf639('0x4d')](_0x1ada71[_0xf639('0x49')][_0xf639('0x4d')]));_0x3cde33[_0xf639('0x4b')]=_0x3cde33[_0xf639('0x4b')][_0xf639('0x4e')]?_0x3cde33[_0xf639('0x4b')]:_0x37e757[_0xf639('0x48')];if(!_0x1ada71[_0xf639('0x49')][_0xf639('0x4f')](_0xf639('0x50'))){_0x3cde33['limit']=qs['limit'](_0x1ada71['query']['limit']);_0x3cde33['offset']=qs[_0xf639('0x33')](_0x1ada71[_0xf639('0x49')]['offset']);}_0x3cde33[_0xf639('0x51')]=qs[_0xf639('0x52')](_0x1ada71['query'][_0xf639('0x52')]);_0x3cde33[_0xf639('0x53')]=qs[_0xf639('0x54')](_[_0xf639('0x55')](_0x1ada71[_0xf639('0x49')],_0x37e757[_0xf639('0x54')]),_0x2c9170);if(_0x1ada71[_0xf639('0x49')]['filter']){_0x3cde33['where']=_[_0xf639('0x56')](_0x3cde33[_0xf639('0x53')],{'$or':_['map'](_0x2c9170,function(_0x5ab289){if(_0x5ab289['type']!==_0xf639('0x57')){var _0x43c22b={};_0x43c22b[_0x5ab289[_0xf639('0x40')]]={'$like':'%'+_0x1ada71['query'][_0xf639('0x58')]+'%'};return _0x43c22b;}})});}_0x3cde33=_[_0xf639('0x56')]({},_0x3cde33,_0x1ada71['options']);var _0x5611f5={'where':_0x3cde33['where']};return db[_0xf639('0x59')]['count'](_0x5611f5)['then'](function(_0x3b29ed){_0x6a8a00[_0xf639('0x36')]=_0x3b29ed;if(_0x1ada71['query'][_0xf639('0x5a')]){_0x3cde33[_0xf639('0x5b')]=[{'all':!![]}];}return db[_0xf639('0x59')]['findAll'](_0x3cde33);})[_0xf639('0x24')](function(_0x3292b8){_0x6a8a00[_0xf639('0x5c')]=_0x3292b8;return _0x6a8a00;})[_0xf639('0x24')](respondWithFilteredResult(_0x20bb89,_0x3cde33))[_0xf639('0x2e')](handleError(_0x20bb89,null));};exports[_0xf639('0x5d')]=function(_0x531e93,_0x2200bd){var _0x5aeaa9={'raw':![],'where':{'id':_0x531e93[_0xf639('0x5e')]['id']},'include':[{'model':db['Pause'],'as':_0xf639('0x5f')}]},_0x3ad12a={};_0x3ad12a[_0xf639('0x48')]=_['keys'](db['SmsAccount'][_0xf639('0x45')]);_0x3ad12a[_0xf639('0x49')]=_[_0xf639('0x4a')](_0x531e93[_0xf639('0x49')]);_0x3ad12a[_0xf639('0x54')]=_[_0xf639('0x4c')](_0x3ad12a[_0xf639('0x48')],_0x3ad12a[_0xf639('0x49')]);_0x5aeaa9['attributes']=_[_0xf639('0x4c')](_0x3ad12a[_0xf639('0x48')],qs[_0xf639('0x4d')](_0x531e93[_0xf639('0x49')][_0xf639('0x4d')]));_0x5aeaa9['attributes']=_0x5aeaa9[_0xf639('0x4b')][_0xf639('0x4e')]?_0x5aeaa9[_0xf639('0x4b')]:_0x3ad12a[_0xf639('0x48')];if(_0x531e93['query']['includeAll']){_0x5aeaa9['include']=[{'all':!![]}];}_0x5aeaa9=_['merge']({},_0x5aeaa9,_0x531e93[_0xf639('0x60')]);return db[_0xf639('0x59')][_0xf639('0x61')](_0x5aeaa9)['then'](handleEntityNotFound(_0x2200bd,null))['then'](respondWithResult(_0x2200bd,null))[_0xf639('0x2e')](handleError(_0x2200bd,null));};exports[_0xf639('0x62')]=function(_0x89040f,_0x1db462){return db[_0xf639('0x59')][_0xf639('0x62')](_0x89040f[_0xf639('0x63')],{})['then'](function(_0x13a8a0){var _0x23036b=_0x89040f[_0xf639('0x64')][_0xf639('0x3c')]({'plain':!![]});if(!_0x23036b)throw new Error(_0xf639('0x65'));if(_0x23036b['role']==='user'){var _0x44b5dc=_0x13a8a0[_0xf639('0x3c')]({'plain':!![]});var _0x1b7a7c=_0xf639('0x3d');return db['UserProfileSection'][_0xf639('0x61')]({'where':{'name':_0x1b7a7c,'userProfileId':_0x23036b[_0xf639('0x66')]},'raw':!![]})[_0xf639('0x24')](function(_0x21262a){if(_0x21262a&&_0x21262a[_0xf639('0x67')]===0x0){return db[_0xf639('0x3e')][_0xf639('0x62')]({'name':_0x44b5dc['name'],'resourceId':_0x44b5dc['id'],'type':_0x21262a[_0xf639('0x40')],'sectionId':_0x21262a['id']},{})[_0xf639('0x24')](function(){return _0x13a8a0;});}else{return _0x13a8a0;}})[_0xf639('0x2e')](function(_0x4a557a){logger['error'](_0xf639('0x68'),_0x4a557a);throw _0x4a557a;});}return _0x13a8a0;})[_0xf639('0x24')](respondWithResult(_0x1db462,0xc9))[_0xf639('0x2e')](handleError(_0x1db462,null));};exports[_0xf639('0x3b')]=function(_0x7a2a40,_0x1593cf){if(_0x7a2a40[_0xf639('0x63')]['id']){delete _0x7a2a40[_0xf639('0x63')]['id'];}return db[_0xf639('0x59')]['find']({'where':{'id':_0x7a2a40[_0xf639('0x5e')]['id']},'include':[{'model':db[_0xf639('0x43')],'as':_0xf639('0x5f')}]})[_0xf639('0x24')](handleEntityNotFound(_0x1593cf,null))[_0xf639('0x24')](saveUpdates(_0x7a2a40[_0xf639('0x63')],null))['then'](respondWithResult(_0x1593cf,null))[_0xf639('0x2e')](handleError(_0x1593cf,null));};exports[_0xf639('0x3f')]=function(_0x2f8d45,_0x4e72dc){return db[_0xf639('0x59')][_0xf639('0x61')]({'where':{'id':_0x2f8d45[_0xf639('0x5e')]['id']}})['then'](handleEntityNotFound(_0x4e72dc,null))[_0xf639('0x24')](removeEntity(_0x4e72dc,null))[_0xf639('0x2e')](handleError(_0x4e72dc,null));};exports[_0xf639('0x69')]=function(_0x585b38,_0x23de11){return db[_0xf639('0x59')][_0xf639('0x69')]()[_0xf639('0x24')](respondWithResult(_0x23de11,null))[_0xf639('0x2e')](handleError(_0x23de11,null));};exports['addDisposition']=function(_0x2e2393,_0x285849,_0x42887b){if(_0x2e2393[_0xf639('0x63')]['id']){delete _0x2e2393[_0xf639('0x63')]['id'];}return db['SmsAccount']['find']({'where':{'id':_0x2e2393[_0xf639('0x5e')]['id']}})[_0xf639('0x24')](handleEntityNotFound(_0x285849,null))[_0xf639('0x24')](function(_0x5e36e4){if(_0x5e36e4){_0x2e2393[_0xf639('0x63')][_0xf639('0x6a')]=_0x5e36e4['id'];return db[_0xf639('0x6b')]['create'](_0x2e2393[_0xf639('0x63')]);}})[_0xf639('0x24')](respondWithResult(_0x285849,null))[_0xf639('0x2e')](handleError(_0x285849,null));};exports['getDispositions']=function(_0x3967fa,_0x1a12a2,_0x11c594){var _0x2e44e5={'raw':![],'where':{}};var _0x4c6494={};var _0x427bfa={'count':0x0,'rows':[]};return db[_0xf639('0x59')][_0xf639('0x6c')]({'where':{'id':_0x3967fa[_0xf639('0x5e')]['id']}})['then'](handleEntityNotFound(_0x1a12a2,null))[_0xf639('0x24')](function(_0x58a6bd){if(_0x58a6bd){_0x4c6494[_0xf639('0x48')]=_[_0xf639('0x4a')](db[_0xf639('0x6b')][_0xf639('0x45')]);_0x4c6494[_0xf639('0x49')]=_[_0xf639('0x4a')](_0x3967fa[_0xf639('0x49')]);_0x4c6494['filters']=_[_0xf639('0x4c')](_0x4c6494[_0xf639('0x48')],_0x4c6494['query']);_0x2e44e5[_0xf639('0x4b')]=_[_0xf639('0x4c')](_0x4c6494['model'],qs[_0xf639('0x4d')](_0x3967fa[_0xf639('0x49')][_0xf639('0x4d')]));_0x2e44e5[_0xf639('0x4b')]=_0x2e44e5[_0xf639('0x4b')][_0xf639('0x4e')]?_0x2e44e5[_0xf639('0x4b')]:_0x4c6494['model'];if(!_0x3967fa[_0xf639('0x49')][_0xf639('0x4f')](_0xf639('0x50'))){_0x2e44e5[_0xf639('0x35')]=qs['limit'](_0x3967fa[_0xf639('0x49')]['limit']);_0x2e44e5[_0xf639('0x33')]=qs[_0xf639('0x33')](_0x3967fa['query'][_0xf639('0x33')]);}_0x2e44e5[_0xf639('0x51')]=qs[_0xf639('0x52')](_0x3967fa[_0xf639('0x49')][_0xf639('0x52')]);_0x2e44e5[_0xf639('0x53')]=qs[_0xf639('0x54')](_[_0xf639('0x55')](_0x3967fa[_0xf639('0x49')],_0x4c6494['filters']));_0x2e44e5[_0xf639('0x53')][_0xf639('0x6a')]=_0x58a6bd['id'];if(_0x3967fa['query'][_0xf639('0x58')]){_0x2e44e5[_0xf639('0x53')]=_[_0xf639('0x56')](_0x2e44e5[_0xf639('0x53')],{'$or':_[_0xf639('0x44')](_0x2e44e5[_0xf639('0x4b')],function(_0x1692cb){var _0x5b181f={};_0x5b181f[_0x1692cb]={'$like':'%'+_0x3967fa[_0xf639('0x49')][_0xf639('0x58')]+'%'};return _0x5b181f;})});}_0x2e44e5=_[_0xf639('0x56')]({},_0x2e44e5,_0x3967fa[_0xf639('0x60')]);return db[_0xf639('0x6b')]['count']({'where':_0x2e44e5['where']})[_0xf639('0x24')](function(_0xcaf1e1){_0x427bfa['count']=_0xcaf1e1;if(_0x3967fa[_0xf639('0x49')][_0xf639('0x5a')]){_0x2e44e5[_0xf639('0x5b')]=[{'all':!![]}];}return db[_0xf639('0x6b')][_0xf639('0x6d')](_0x2e44e5);})[_0xf639('0x24')](function(_0x2cedad){_0x427bfa[_0xf639('0x5c')]=_0x2cedad;return _0x427bfa;});}})[_0xf639('0x24')](respondWithFilteredResult(_0x1a12a2,_0x2e44e5))[_0xf639('0x2e')](handleError(_0x1a12a2,null));};exports[_0xf639('0x6e')]=function(_0xcd7548,_0x2fde23,_0x215ac2){return db[_0xf639('0x59')][_0xf639('0x61')]({'where':{'id':_0xcd7548[_0xf639('0x5e')]['id']}})[_0xf639('0x24')](handleEntityNotFound(_0x2fde23,null))[_0xf639('0x24')](function(_0x51c947){if(_0x51c947){return _0x51c947[_0xf639('0x6e')](_0xcd7548[_0xf639('0x49')][_0xf639('0x6f')]);}})[_0xf639('0x24')](respondWithStatusCode(_0x2fde23,null))[_0xf639('0x2e')](handleError(_0x2fde23,null));};exports[_0xf639('0x70')]=function(_0x336614,_0x4b24dc,_0x490120){if(_0x336614[_0xf639('0x63')]['id']){delete _0x336614['body']['id'];}return db['SmsAccount']['find']({'where':{'id':_0x336614[_0xf639('0x5e')]['id']}})[_0xf639('0x24')](handleEntityNotFound(_0x4b24dc,null))[_0xf639('0x24')](function(_0x2bc187){if(_0x2bc187){_0x336614[_0xf639('0x63')]['SmsAccountId']=_0x2bc187['id'];return db[_0xf639('0x71')][_0xf639('0x62')](_0x336614[_0xf639('0x63')]);}})[_0xf639('0x24')](respondWithResult(_0x4b24dc,null))['catch'](handleError(_0x4b24dc,null));};exports['getAnswers']=function(_0x34056a,_0x1b54db,_0x54a0a1){var _0x338497={'raw':![],'where':{}};var _0x1358e2={};var _0x5ba9ac={'count':0x0,'rows':[]};return db[_0xf639('0x59')]['findOne']({'where':{'id':_0x34056a[_0xf639('0x5e')]['id']}})[_0xf639('0x24')](handleEntityNotFound(_0x1b54db,null))[_0xf639('0x24')](function(_0x2ed57f){if(_0x2ed57f){_0x1358e2[_0xf639('0x48')]=_['keys'](db[_0xf639('0x71')][_0xf639('0x45')]);_0x1358e2[_0xf639('0x49')]=_[_0xf639('0x4a')](_0x34056a[_0xf639('0x49')]);_0x1358e2['filters']=_[_0xf639('0x4c')](_0x1358e2[_0xf639('0x48')],_0x1358e2[_0xf639('0x49')]);_0x338497[_0xf639('0x4b')]=_[_0xf639('0x4c')](_0x1358e2[_0xf639('0x48')],qs[_0xf639('0x4d')](_0x34056a[_0xf639('0x49')]['fields']));_0x338497[_0xf639('0x4b')]=_0x338497[_0xf639('0x4b')][_0xf639('0x4e')]?_0x338497['attributes']:_0x1358e2[_0xf639('0x48')];if(!_0x34056a[_0xf639('0x49')][_0xf639('0x4f')](_0xf639('0x50'))){_0x338497[_0xf639('0x35')]=qs[_0xf639('0x35')](_0x34056a['query']['limit']);_0x338497[_0xf639('0x33')]=qs[_0xf639('0x33')](_0x34056a[_0xf639('0x49')][_0xf639('0x33')]);}_0x338497[_0xf639('0x51')]=qs[_0xf639('0x52')](_0x34056a[_0xf639('0x49')]['sort']);_0x338497['where']=qs[_0xf639('0x54')](_[_0xf639('0x55')](_0x34056a[_0xf639('0x49')],_0x1358e2[_0xf639('0x54')]));_0x338497['where']['SmsAccountId']=_0x2ed57f['id'];if(_0x34056a['query'][_0xf639('0x58')]){_0x338497['where']=_[_0xf639('0x56')](_0x338497[_0xf639('0x53')],{'$or':_[_0xf639('0x44')](_0x338497[_0xf639('0x4b')],function(_0x42ae45){var _0x48db19={};_0x48db19[_0x42ae45]={'$like':'%'+_0x34056a[_0xf639('0x49')][_0xf639('0x58')]+'%'};return _0x48db19;})});}_0x338497=_[_0xf639('0x56')]({},_0x338497,_0x34056a['options']);return db[_0xf639('0x71')][_0xf639('0x36')]({'where':_0x338497['where']})[_0xf639('0x24')](function(_0x2867f9){_0x5ba9ac[_0xf639('0x36')]=_0x2867f9;if(_0x34056a[_0xf639('0x49')]['includeAll']){_0x338497[_0xf639('0x5b')]=[{'all':!![]}];}return db['CannedAnswer'][_0xf639('0x6d')](_0x338497);})[_0xf639('0x24')](function(_0x121d0d){_0x5ba9ac['rows']=_0x121d0d;return _0x5ba9ac;});}})[_0xf639('0x24')](respondWithFilteredResult(_0x1b54db,_0x338497))['catch'](handleError(_0x1b54db,null));};exports[_0xf639('0x72')]=function(_0x465e3c,_0x5f33e7,_0x2951db){return db[_0xf639('0x59')]['find']({'where':{'id':_0x465e3c[_0xf639('0x5e')]['id']}})[_0xf639('0x24')](handleEntityNotFound(_0x5f33e7,null))[_0xf639('0x24')](function(_0x50744f){if(_0x50744f){return _0x50744f[_0xf639('0x72')](_0x465e3c['query'][_0xf639('0x6f')]);}})[_0xf639('0x24')](respondWithStatusCode(_0x5f33e7,null))[_0xf639('0x2e')](handleError(_0x5f33e7,null));};exports[_0xf639('0x73')]=function(_0x4888ca,_0x4151f8,_0x187494){var _0x154c1b={'channel':_0xf639('0x74')};var _0x2519d8=[];var _0x1d3719=[];var _0x55f29b={};return db[_0xf639('0x59')]['find']({'where':{'id':_0x4888ca[_0xf639('0x5e')]['id']},'include':[{'model':db[_0xf639('0x75')],'as':'Applications'}]})[_0xf639('0x24')](handleEntityNotFound(_0x4151f8,null))[_0xf639('0x24')](function(_0x5e0b3f){_0x154c1b[_0xf639('0x76')]=_0x5e0b3f;_0x154c1b[_0xf639('0x77')]=_[_0xf639('0x78')](_0x5e0b3f[_0xf639('0x79')],[_0xf639('0x7a')],['asc']);if(_0x154c1b[_0xf639('0x76')][_0xf639('0x79')]){delete _0x154c1b[_0xf639('0x76')]['Applications'];}return db[_0xf639('0x7b')][_0xf639('0x69')]();})[_0xf639('0x24')](function(_0x2e8659){if(!_0x2e8659){throw new db[(_0xf639('0x7c'))]['ValidationError'](_0xf639('0x7d'));}_0x2519d8=_[_0xf639('0x7e')](_[_0xf639('0x4a')](_0x2e8659),[_0xf639('0x7f'),_0xf639('0x80')]);_0x1d3719=_['difference'](_[_0xf639('0x4a')](_0x2e8659),[_0xf639('0x7f'),_0xf639('0x80'),_0xf639('0x81'),'ListId']);_0x154c1b[_0xf639('0x63')]={'mapKey':'mobile'};if(_0x154c1b['account'][_0xf639('0x46')]){switch(_0x154c1b[_0xf639('0x76')][_0xf639('0x46')]){case'twilio':_0x154c1b[_0xf639('0x63')][_0xf639('0x82')]=_0x4888ca[_0xf639('0x63')]['From'];_0x154c1b[_0xf639('0x63')]['body']=_0x4888ca[_0xf639('0x63')][_0xf639('0x83')];_0x154c1b[_0xf639('0x63')][_0xf639('0x84')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x85')];break;case _0xf639('0x86'):_0x154c1b[_0xf639('0x63')][_0xf639('0x82')]='+'+_0x4888ca[_0xf639('0x63')][_0xf639('0x87')];_0x154c1b[_0xf639('0x63')][_0xf639('0x63')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x88')];break;case _0xf639('0x89'):_0x154c1b[_0xf639('0x63')][_0xf639('0x82')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x82')];_0x154c1b[_0xf639('0x63')]['body']=_0x4888ca[_0xf639('0x63')]['message'];break;case _0xf639('0x8a'):_0x154c1b[_0xf639('0x63')][_0xf639('0x82')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x82')];_0x154c1b[_0xf639('0x63')][_0xf639('0x63')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x63')];_0x154c1b[_0xf639('0x63')][_0xf639('0x84')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x8b')];break;case'plivo':_0x154c1b[_0xf639('0x63')][_0xf639('0x82')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x8c')];_0x154c1b[_0xf639('0x63')]['body']=_0x4888ca[_0xf639('0x63')]['Text'];_0x154c1b['body'][_0xf639('0x84')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x8d')];break;case _0xf639('0x8e'):_0x154c1b[_0xf639('0x63')][_0xf639('0x82')]='+'+_0x4888ca[_0xf639('0x63')]['results'][0x0][_0xf639('0x82')];_0x154c1b[_0xf639('0x63')]['body']=_0x4888ca[_0xf639('0x63')]['results'][0x0]['text'];_0x154c1b['body'][_0xf639('0x84')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x8f')][0x0][_0xf639('0x84')];break;case _0xf639('0x90'):_0x154c1b['body'][_0xf639('0x82')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x91')];_0x154c1b[_0xf639('0x63')][_0xf639('0x63')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x92')][_0xf639('0x2c')];break;case _0xf639('0x93'):_0x154c1b['body'][_0xf639('0x82')]=_0x4888ca['body'][_0xf639('0x94')];_0x154c1b[_0xf639('0x63')][_0xf639('0x63')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x88')];_0x154c1b['body'][_0xf639('0x84')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x95')];break;case _0xf639('0x96'):_0x154c1b[_0xf639('0x63')][_0xf639('0x84')]=_0x4888ca[_0xf639('0x63')][0x0][_0xf639('0x2c')]['id'];_0x154c1b['body']['from']=_0x4888ca[_0xf639('0x63')][0x0][_0xf639('0x2c')]['from'];_0x154c1b[_0xf639('0x63')][_0xf639('0x63')]=_0x4888ca['body'][0x0][_0xf639('0x2c')][_0xf639('0x88')];break;case'intelepeer':_0x154c1b[_0xf639('0x63')][_0xf639('0x82')]=_0x4888ca['body'][_0xf639('0x82')];_0x154c1b[_0xf639('0x63')][_0xf639('0x63')]=_0x4888ca[_0xf639('0x63')][_0xf639('0x2c')];_0x154c1b[_0xf639('0x63')][_0xf639('0x84')]=_0x4888ca[_0xf639('0x63')]['refid'];break;}}if(_0x154c1b['body']['id']){delete _0x154c1b[_0xf639('0x63')]['id'];}if(_[_0xf639('0x97')](_0x154c1b[_0xf639('0x63')][_0xf639('0x82')])){throw new db[(_0xf639('0x7c'))][(_0xf639('0x98'))](_0xf639('0x99'));}if(_[_0xf639('0x97')](_0x154c1b[_0xf639('0x63')][_0xf639('0x63')])||_0x154c1b[_0xf639('0x63')][_0xf639('0x63')]===''){throw new db[(_0xf639('0x7c'))]['ValidationError'](_0xf639('0x9a'));}if(_[_0xf639('0x97')](_0x154c1b[_0xf639('0x63')][_0xf639('0x9b')])){throw new db[(_0xf639('0x7c'))]['ValidationError'](_0xf639('0x9c')+_0x1d3719);}if(!_[_0xf639('0x9d')](_0x1d3719,_0x154c1b['body'][_0xf639('0x9b')])){throw new db[(_0xf639('0x7c'))][(_0xf639('0x98'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x1d3719);}_0x55f29b[_0x154c1b[_0xf639('0x63')]['mapKey']]=_0x154c1b[_0xf639('0x63')][_0xf639('0x82')];return db[_0xf639('0x9e')]['find']({'where':{'id':_0x154c1b[_0xf639('0x76')]['ListId']},'include':[{'model':db[_0xf639('0x7b')],'as':_0xf639('0x9f'),'where':_0x55f29b,'limit':0x1,'order':[['updatedAt',_0xf639('0xa0')]]}]});})[_0xf639('0x24')](handleEntityNotFound(_0x4151f8,null))[_0xf639('0x24')](function(_0x1259cc){if(_0x1259cc){_0x154c1b[_0xf639('0xa1')]=_['omit'](_0x1259cc,[_0xf639('0x9f')]);if(_0x1259cc[_0xf639('0x9f')][_0xf639('0x4e')]){return _0x1259cc['Contacts'][0x0];}var _0x14f79c=_['defaults'](_0x154c1b[_0xf639('0x63')],{'firstName':_0x154c1b[_0xf639('0x63')][_0xf639('0x82')],'ListId':_0x1259cc['id']});_0x14f79c[_0x154c1b[_0xf639('0x63')][_0xf639('0x9b')]]=_0x154c1b[_0xf639('0x63')][_0xf639('0x82')];return db[_0xf639('0x7b')][_0xf639('0x62')](_0x14f79c,{'fields':_0x2519d8,'raw':!![]});}})[_0xf639('0x24')](handleEntityNotFound(_0x4151f8,null))[_0xf639('0x24')](function(_0x1993cc){if(_0x1993cc){_0x154c1b['contact']=_0x1993cc;var _0x4815e5={'ContactId':_0x1993cc['id'],'phone':_0x154c1b[_0xf639('0x63')][_0xf639('0x82')],'SmsAccountId':_0x4888ca[_0xf639('0x5e')]['id']};var _0x171a26={'ContactId':_0x1993cc['id'],'SmsAccountId':_0x4888ca[_0xf639('0x5e')]['id'],'closed':![]};return db[_0xf639('0xa2')]['find']({'where':_0x171a26})[_0xf639('0x24')](function(_0x228b95){if(_0x228b95){return[_0x228b95,![]];}return db[_0xf639('0xa2')][_0xf639('0x62')](_0x4815e5)[_0xf639('0x24')](function(_0x176419){return[_0x176419,!![]];});});}})[_0xf639('0xa3')](function(_0x35d355,_0x36640f){_0x154c1b[_0xf639('0xa4')]=_0x35d355[_0xf639('0x3c')]({'plain':!![]});_0x154c1b[_0xf639('0xa4')][_0xf639('0xa5')]=![];if(_0x36640f){if(_0x154c1b[_0xf639('0x76')][_0xf639('0xa6')]){_0x154c1b[_0xf639('0x77')]['push']({'id':0x0,'priority':_0x154c1b[_0xf639('0x77')][_0xf639('0x4e')]+0x1,'app':_0xf639('0xa7'),'appdata':_0xf639('0xa8'),'interval':_0xf639('0xa9')});}_0x154c1b[_0xf639('0xa4')]['created']=!![];}return db[_0xf639('0xaa')][_0xf639('0x62')]({'phone':_0x154c1b[_0xf639('0x63')]['from'],'messageId':_0x154c1b[_0xf639('0x63')]['messageId'],'body':_0x154c1b['body'][_0xf639('0x63')],'SmsAccountId':_0x4888ca['params']['id'],'SmsInteractionId':_0x35d355['id'],'direction':'in','ContactId':_0x35d355[_0xf639('0xab')],'AttachmentId':_0x154c1b['body'][_0xf639('0xac')]});})[_0xf639('0x24')](function(_0x38fab8){_0x154c1b['message']=_0x38fab8;if(_0x154c1b[_0xf639('0xa4')][_0xf639('0xad')]){return db[_0xf639('0xae')][_0xf639('0x61')]({'attributes':['id',_0xf639('0x40')],'where':{'id':_0x154c1b[_0xf639('0xa4')][_0xf639('0xad')]}})[_0xf639('0x24')](function(_0x50f28f){if(_0x50f28f){_0x154c1b[_0xf639('0x77')][_0xf639('0xaf')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x50f28f[_0xf639('0x40')]+','+(_0x154c1b[_0xf639('0x76')][_0xf639('0xb0')]||0xa),'interval':_0xf639('0xa9')});}return respondWithRpcPromise(_0xf639('0xb1'),_0xf639('0xb2'),_0x154c1b);});}return respondWithRpcPromise(_0xf639('0xb1'),_0xf639('0xb2'),_0x154c1b);})[_0xf639('0x24')](function(_0x3f4784){if(_0x3f4784){var _0x563993=0xc8;var _0x4daf6e=_0xf639('0xb3');logger[_0xf639('0x25')](_0xf639('0xb4'),_0x4daf6e,_0x563993,_0xf639('0xb5'));logger[_0xf639('0x27')](_0xf639('0xb6'),_0x4daf6e,_0x563993,'entity\x20found',JSON[_0xf639('0x28')](_0x3f4784));if(_0x154c1b[_0xf639('0x76')][_0xf639('0x46')]===_0xf639('0xb7')){return _0x4151f8[_0xf639('0x30')](_0x563993)[_0xf639('0xb8')](_0xf639('0xb9'),'text/xml')[_0xf639('0x41')](_0xf639('0xba'));}else{return _0x4151f8['status'](_0x563993)['json'](_0x3f4784);}}})[_0xf639('0x2e')](handleError(_0x4151f8,null));};exports[_0xf639('0xbb')]=function(_0x21c43e,_0x300bcd,_0xdb7657){return db[_0xf639('0x59')][_0xf639('0x6c')]({'where':{'id':_0x21c43e[_0xf639('0x5e')]['id']}})[_0xf639('0x24')](handleEntityNotFound(_0x300bcd,null))[_0xf639('0x24')](function(_0x3d157a){if(_0x3d157a){return db['sequelize'][_0xf639('0xbc')](function(_0x81fdab){return db['SmsApplication'][_0xf639('0x3f')]({'where':{'SmsAccountId':_0x21c43e[_0xf639('0x5e')]['id']},'transaction':_0x81fdab})['then'](function(_0x27214c){var _0x5495d9=_[_0xf639('0x44')](_0x21c43e[_0xf639('0x63')],function(_0x36601f){_0x36601f['SmsAccountId']=_0x21c43e['params']['id'];return _0x36601f;});return db['SmsApplication'][_0xf639('0xbd')](_0x5495d9,{'transaction':_0x81fdab});});})['then'](function(){return db[_0xf639('0x75')][_0xf639('0xbe')]({'where':{'SmsAccountId':_0x21c43e['params']['id']},'order':_0xf639('0x7a')});});}})['then'](respondWithResult(_0x300bcd,null))[_0xf639('0x2e')](handleError(_0x300bcd,null));};exports['getApplications']=function(_0x5914e6,_0x1a7349,_0x427826){var _0x198448={};var _0x3db078={};var _0x645400;var _0x5041e5;return db['SmsAccount']['findOne']({'where':{'id':_0x5914e6[_0xf639('0x5e')]['id']}})[_0xf639('0x24')](handleEntityNotFound(_0x1a7349,null))[_0xf639('0x24')](function(_0x4d9129){if(_0x4d9129){_0x645400=_0x4d9129;_0x3db078['model']=_[_0xf639('0x4a')](db[_0xf639('0x75')][_0xf639('0x45')]);_0x3db078[_0xf639('0x49')]=_[_0xf639('0x4a')](_0x5914e6[_0xf639('0x49')]);_0x3db078[_0xf639('0x54')]=_[_0xf639('0x4c')](_0x3db078['model'],_0x3db078['query']);_0x198448[_0xf639('0x4b')]=_[_0xf639('0x4c')](_0x3db078[_0xf639('0x48')],qs[_0xf639('0x4d')](_0x5914e6[_0xf639('0x49')][_0xf639('0x4d')]));_0x198448[_0xf639('0x4b')]=_0x198448[_0xf639('0x4b')]['length']?_0x198448[_0xf639('0x4b')]:_0x3db078[_0xf639('0x48')];_0x198448[_0xf639('0x51')]=qs[_0xf639('0x52')](_0x5914e6[_0xf639('0x49')][_0xf639('0x52')]);_0x198448['where']=qs[_0xf639('0x54')](_[_0xf639('0x55')](_0x5914e6[_0xf639('0x49')],_0x3db078['filters']));if(_0x5914e6[_0xf639('0x49')][_0xf639('0x58')]){_0x198448[_0xf639('0x53')]=_['merge'](_0x198448['where'],{'$or':_[_0xf639('0x44')](_0x198448[_0xf639('0x4b')],function(_0xd22988){var _0x4f5778={};_0x4f5778[_0xd22988]={'$like':'%'+_0x5914e6[_0xf639('0x49')][_0xf639('0x58')]+'%'};return _0x4f5778;})});}_0x198448=_[_0xf639('0x56')]({},_0x198448,_0x5914e6[_0xf639('0x60')]);return _0x645400[_0xf639('0xbf')](_0x198448);}})['then'](function(_0x90d689){if(_0x90d689){_0x5041e5=_0x90d689[_0xf639('0x4e')];if(!_0x5914e6[_0xf639('0x49')][_0xf639('0x4f')](_0xf639('0x50'))){_0x198448[_0xf639('0x35')]=qs[_0xf639('0x35')](_0x5914e6['query'][_0xf639('0x35')]);_0x198448[_0xf639('0x33')]=qs[_0xf639('0x33')](_0x5914e6[_0xf639('0x49')][_0xf639('0x33')]);}return _0x645400[_0xf639('0xbf')](_0x198448);}})[_0xf639('0x24')](function(_0x275dcf){if(_0x275dcf){return _0x275dcf?{'count':_0x5041e5,'rows':_0x275dcf}:null;}})[_0xf639('0x24')](respondWithResult(_0x1a7349,null))[_0xf639('0x2e')](handleError(_0x1a7349,null));};exports[_0xf639('0xc0')]=function(_0x4fdaa8,_0x54a1ff,_0x2397c6){var _0x1d78b4={'raw':![],'where':{}};var _0x20b9f6={};var _0x1e4a1c={'count':0x0,'rows':[]};return db[_0xf639('0x59')][_0xf639('0x6c')]({'where':{'id':_0x4fdaa8['params']['id']}})[_0xf639('0x24')](handleEntityNotFound(_0x54a1ff,null))[_0xf639('0x24')](function(_0x1b4f6a){if(_0x1b4f6a){_0x20b9f6[_0xf639('0x48')]=_['keys'](db['SmsInteraction'][_0xf639('0x45')]);_0x20b9f6[_0xf639('0x49')]=_[_0xf639('0x4a')](_0x4fdaa8[_0xf639('0x49')]);_0x20b9f6[_0xf639('0x54')]=_[_0xf639('0x4c')](_0x20b9f6[_0xf639('0x48')],_0x20b9f6[_0xf639('0x49')]);_0x1d78b4[_0xf639('0x4b')]=_[_0xf639('0x4c')](_0x20b9f6['model'],qs[_0xf639('0x4d')](_0x4fdaa8[_0xf639('0x49')][_0xf639('0x4d')]));_0x1d78b4[_0xf639('0x4b')]=_0x1d78b4[_0xf639('0x4b')][_0xf639('0x4e')]?_0x1d78b4[_0xf639('0x4b')]:_0x20b9f6[_0xf639('0x48')];if(!_0x4fdaa8['query'][_0xf639('0x4f')](_0xf639('0x50'))){_0x1d78b4['limit']=qs['limit'](_0x4fdaa8[_0xf639('0x49')][_0xf639('0x35')]);_0x1d78b4[_0xf639('0x33')]=qs[_0xf639('0x33')](_0x4fdaa8[_0xf639('0x49')][_0xf639('0x33')]);}_0x1d78b4[_0xf639('0x51')]=qs['sort'](_0x4fdaa8['query'][_0xf639('0x52')]);_0x1d78b4[_0xf639('0x53')]=qs['filters'](_[_0xf639('0x55')](_0x4fdaa8['query'],_0x20b9f6[_0xf639('0x54')]));_0x1d78b4['where'][_0xf639('0x6a')]=_0x1b4f6a['id'];if(_0x4fdaa8[_0xf639('0x49')][_0xf639('0x58')]){_0x1d78b4[_0xf639('0x53')]=_[_0xf639('0x56')](_0x1d78b4[_0xf639('0x53')],{'$or':_[_0xf639('0x44')](_0x1d78b4['attributes'],function(_0x17b4e5){var _0xbeacf2={};_0xbeacf2[_0x17b4e5]={'$like':'%'+_0x4fdaa8[_0xf639('0x49')][_0xf639('0x58')]+'%'};return _0xbeacf2;})});}_0x1d78b4=_[_0xf639('0x56')]({},_0x1d78b4,_0x4fdaa8[_0xf639('0x60')]);return db[_0xf639('0xa2')]['count']({'where':_0x1d78b4[_0xf639('0x53')]})['then'](function(_0x1d5f36){_0x1e4a1c[_0xf639('0x36')]=_0x1d5f36;if(_0x4fdaa8[_0xf639('0x49')][_0xf639('0x5a')]){_0x1d78b4[_0xf639('0x5b')]=[{'model':db[_0xf639('0x7b')],'as':_0xf639('0xc1'),'required':![]},{'model':db['User'],'as':_0xf639('0xc2'),'attributes':[_0xf639('0x40'),_0xf639('0xc3'),'internal'],'required':![]},{'model':db[_0xf639('0xc4')],'as':_0xf639('0xc5'),'attributes':['id',_0xf639('0x40'),_0xf639('0xc6')],'where':_0x4fdaa8[_0xf639('0x49')][_0xf639('0xc7')]?{'id':_0x4fdaa8['query'][_0xf639('0xc7')]}:undefined,'required':_0x4fdaa8[_0xf639('0x49')][_0xf639('0xc7')]?!![]:![]}];}return db['SmsInteraction'][_0xf639('0x6d')](_0x1d78b4);})[_0xf639('0x24')](function(_0x24431a){_0x1e4a1c[_0xf639('0x5c')]=_0x24431a;return _0x1e4a1c;});}})['then'](respondWithFilteredResult(_0x54a1ff,_0x1d78b4))[_0xf639('0x2e')](handleError(_0x54a1ff,null));};exports[_0xf639('0x41')]=function(_0x27d1a9,_0x2f64f8,_0x3c00ea){var _0x3467f9,_0x474582,_0x1ca2f9;if(_[_0xf639('0x97')](_0x27d1a9[_0xf639('0x63')]['body'])||_0x27d1a9[_0xf639('0x63')][_0xf639('0x63')]===''){throw new db[(_0xf639('0x7c'))][(_0xf639('0x98'))](_0xf639('0x9a'));}if(_[_0xf639('0x97')](_0x27d1a9[_0xf639('0x63')]['to'])){throw new db[(_0xf639('0x7c'))]['ValidationError'](_0xf639('0xc8'));}_0x3467f9=_0x27d1a9[_0xf639('0x63')]['to'];return db[_0xf639('0x59')][_0xf639('0x61')]({'where':{'id':_0x27d1a9[_0xf639('0x5e')]['id']},'include':[{'model':db['CmList'],'as':_0xf639('0xc9'),'include':[{'model':db[_0xf639('0x7b')],'as':_0xf639('0x9f'),'where':{'mobile':_0x3467f9},'limit':0x1,'order':[[_0xf639('0x80'),_0xf639('0xa0')]]}]}]})[_0xf639('0x24')](handleEntityNotFound(_0x2f64f8,null))[_0xf639('0x24')](function(_0x46b294){if(_0x46b294&&_0x46b294[_0xf639('0xc9')]){_0x474582=_0x46b294[_0xf639('0x3c')]({'plain':!![]});if(_0x474582[_0xf639('0xc9')]&&_0x474582[_0xf639('0xc9')][_0xf639('0x9f')][_0xf639('0x4e')]){return _0x474582[_0xf639('0xc9')]['Contacts'][0x0];}return db[_0xf639('0x7b')][_0xf639('0x62')](_[_0xf639('0x1b')](_0x27d1a9[_0xf639('0x63')],{'firstName':_0x3467f9,'mobile':_0x3467f9,'phone':_0x3467f9,'ListId':_0x474582['ListId']}));}})[_0xf639('0x24')](handleEntityNotFound(_0x2f64f8,null))[_0xf639('0x24')](function(_0x46e050){if(_0x46e050){_0x1ca2f9=_0x46e050;return db[_0xf639('0xa2')][_0xf639('0x61')]({'where':{'ContactId':_0x1ca2f9['id'],'closed':![],'SmsAccountId':_0x474582['id']}})[_0xf639('0x24')](function(_0xc5b78a){if(_0xc5b78a){return[_0xc5b78a,![]];}return db['SmsInteraction'][_0xf639('0x62')]({'UserId':_0x27d1a9[_0xf639('0x64')]['id'],'ContactId':_0x1ca2f9['id'],'SmsAccountId':_0x474582['id'],'phone':_0x3467f9,'firstMsgDirection':'out','Messages':[_[_0xf639('0x56')](_0x27d1a9['body'],{'read':![],'body':_0x27d1a9[_0xf639('0x63')]['body'],'phone':_0x3467f9,'SmsAccountId':_0x474582['id'],'UserId':_0x27d1a9['user']['id'],'ContactId':_0x1ca2f9['id']})]},{'include':[{'model':db[_0xf639('0xaa')],'as':_0xf639('0xca')}]})[_0xf639('0x24')](function(_0x5dbf34){return[_0x5dbf34,!![]];});});}})[_0xf639('0xa3')](function(_0x51d0aa,_0x2e580b){if(_0x2e580b){return _0x51d0aa;}return db[_0xf639('0xaa')]['create'](_['merge'](_0x27d1a9[_0xf639('0x63')],{'read':![],'body':_0x27d1a9[_0xf639('0x63')][_0xf639('0x63')],'phone':_0x3467f9,'SmsAccountId':_0x474582['id'],'SmsInteractionId':_0x51d0aa['id'],'UserId':_0x27d1a9['user']['id'],'ContactId':_0x1ca2f9['id']}))[_0xf639('0x24')](function(_0x40af55){_0x51d0aa['dataValues'][_0xf639('0xca')]=[];_0x51d0aa[_0xf639('0xcb')]['Messages']['push'](_0x40af55[_0xf639('0xcb')]);return _0x51d0aa;});})[_0xf639('0x24')](respondWithResult(_0x2f64f8,null))['catch'](handleError(_0x2f64f8,null));};exports[_0xf639('0x30')]=function(_0xb8199,_0x545659,_0x3b9572){if(_0xb8199[_0xf639('0x63')]['id']){delete _0xb8199['body']['id'];}var _0x3d8133,_0x393b2b,_0x24ae2e;return db[_0xf639('0x59')][_0xf639('0x61')]({'where':{'id':_0xb8199[_0xf639('0x5e')]['id']}})[_0xf639('0x24')](handleEntityNotFound(_0x545659,null))[_0xf639('0x24')](function(_0x2b95a8){if(_0x2b95a8){_0x24ae2e=_0x2b95a8;logger['debug']('SmsAccount,\x20%s,\x20%s,\x20%s',_0xf639('0x30'),'received\x20delivery\x20report\x20from',_0x2b95a8[_0xf639('0x46')],util[_0xf639('0xcc')](_0xb8199[_0xf639('0x63')],{'showHidden':![],'depth':null}));switch(_0x2b95a8[_0xf639('0x46')]){case'skebby':if(_0xb8199[_0xf639('0x63')][_0xf639('0xcd')]&&_0xb8199[_0xf639('0x63')][_0xf639('0x30')]){_0x393b2b=_0xb8199[_0xf639('0x63')][_0xf639('0x30')];return db[_0xf639('0xaa')][_0xf639('0x61')]({'where':{'messageId':_0xb8199['body'][_0xf639('0xcd')]}});}break;case _0xf639('0x89'):if(_0xb8199[_0xf639('0x63')][_0xf639('0xce')]&&_0xb8199[_0xf639('0x63')]['statusInt']){_0x393b2b=_0xb8199[_0xf639('0x63')][_0xf639('0xcf')];return db[_0xf639('0xaa')][_0xf639('0x61')]({'where':{'messageId':_0xb8199[_0xf639('0x63')][_0xf639('0xce')]}});}break;case _0xf639('0x8a'):if(_0xb8199['body']['message_id']&&_0xb8199['body'][_0xf639('0xd0')]){_0x393b2b=_0xb8199[_0xf639('0x63')]['status_code'];return db['SmsMessage'][_0xf639('0x61')]({'where':{'messageId':_0xb8199[_0xf639('0x63')][_0xf639('0x8b')]}});}break;case _0xf639('0x8e'):var _0x57c6ef=_0xb8199[_0xf639('0x63')][_0xf639('0x8f')][0x0];if(_0x57c6ef[_0xf639('0x84')]&&_0x57c6ef[_0xf639('0x30')][_0xf639('0xd1')]==='DELIVERED'){_0x393b2b=_0x57c6ef[_0xf639('0x30')][_0xf639('0xd1')];return db[_0xf639('0xaa')][_0xf639('0x61')]({'where':{'messageId':_0x57c6ef['messageId']}});}break;case _0xf639('0x93'):if(_0xb8199[_0xf639('0x63')]['messageId']&&_0xb8199[_0xf639('0x63')][_0xf639('0x30')]){_0x393b2b=_0xb8199['body'][_0xf639('0x30')];return db[_0xf639('0xaa')][_0xf639('0x61')]({'where':{'messageId':_0xb8199[_0xf639('0x63')][_0xf639('0x84')]}});}break;case'bandwidth':if(_0xb8199[_0xf639('0x63')][0x0]['message']['id']){_0x393b2b=_0xb8199['body'][0x0][_0xf639('0x46')];return db[_0xf639('0xaa')][_0xf639('0x61')]({'where':{'messageId':_0xb8199['body'][0x0][_0xf639('0x2c')]['id']}});}break;case _0xf639('0xd2'):if(_0xb8199[_0xf639('0x63')][_0xf639('0xd3')]&&_0xb8199[_0xf639('0x63')][_0xf639('0x30')]){_0x393b2b=_0xb8199[_0xf639('0x63')]['status'];return db[_0xf639('0xaa')]['find']({'where':{'messageId':_0xb8199[_0xf639('0x63')][_0xf639('0xd3')]}});}break;}}})[_0xf639('0x24')](handleEntityNotFound(_0x545659,null))['then'](function(_0x58881a){if(_0x58881a){_0x3d8133=_0x58881a;switch(_0x24ae2e[_0xf639('0x46')]){case _0xf639('0x86'):if(_0x393b2b===_0xf639('0xd4')){return _0x3d8133[_0xf639('0x3b')]({'read':!![]});}else{logger[_0xf639('0x29')](_0xf639('0xb4'),'status',_0xf639('0x86'),util['inspect'](_0xb8199[_0xf639('0x63')],{'showHidden':![],'depth':null}));}break;case _0xf639('0x89'):if(_0x393b2b==='1'){return _0x3d8133[_0xf639('0x3b')]({'read':!![]});}else{logger[_0xf639('0x29')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xf639('0x30'),_0xf639('0x86'),util['inspect'](_0xb8199[_0xf639('0x63')],{'showHidden':![],'depth':null}));}break;case _0xf639('0x8a'):if(!_0xb8199[_0xf639('0x63')][_0xf639('0xd5')]&&_0x393b2b>=0xc8&&_0x393b2b<=0xce){return _0x3d8133[_0xf639('0x3b')]({'read':!![]});}else{logger[_0xf639('0x29')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xf639('0x30'),_0xf639('0x8a'),util[_0xf639('0xcc')](_0xb8199[_0xf639('0x63')],{'showHidden':![],'depth':null}));}break;case _0xf639('0x8e'):var _0x20b989=_0xb8199[_0xf639('0x63')][_0xf639('0x8f')][0x0];if(_0x20b989[_0xf639('0x30')]['groupName']===_0xf639('0xd4')){return _0x3d8133['update']({'read':!![]});}else{logger[_0xf639('0x29')](_0xf639('0xb4'),'status',_0xf639('0x8e'),util['inspect'](_0xb8199[_0xf639('0x63')],{'showHidden':![],'depth':null}));}break;case _0xf639('0x93'):if(_0x393b2b=='DELIVERED_TO_GATEWAY'||_0x393b2b==_0xf639('0xd6')){return _0x3d8133[_0xf639('0x3b')]({'read':!![]});}else{logger['error'](_0xf639('0xb4'),_0xf639('0x30'),_0xf639('0x93'),util['inspect'](_0xb8199[_0xf639('0x63')],{'showHidden':![],'depth':null}));}break;case _0xf639('0x96'):if(_0x393b2b==_0xf639('0xd7')){return _0x3d8133[_0xf639('0x3b')]({'read':!![]});}else{logger[_0xf639('0x29')](_0xf639('0xb4'),_0xf639('0x30'),_0xf639('0x96'),util[_0xf639('0xcc')](_0xb8199[_0xf639('0x63')],{'showHidden':![],'depth':null}));}break;case _0xf639('0xd2'):if(_0x393b2b===_0xf639('0xd8')||_0x393b2b==='ACCEPTD'){return _0x3d8133[_0xf639('0x3b')]({'read':!![]});}else{logger[_0xf639('0x29')](_0xf639('0xb4'),_0xf639('0x30'),_0xf639('0xd2'),util['inspect'](_0xb8199[_0xf639('0x63')],{'showHidden':![],'depth':null}));}break;}return _0x3d8133;}})[_0xf639('0x24')](respondWithResult(_0x545659,null))[_0xf639('0x2e')](handleError(_0x545659,null));};exports['statusGet']=function(_0x2b74f1,_0x597924,_0x344bde){var _0x30dc19,_0x352474,_0x4887a8;return db['SmsAccount']['find']({'where':{'id':_0x2b74f1[_0xf639('0x5e')]['id']}})[_0xf639('0x24')](handleEntityNotFound(_0x597924,null))['then'](function(_0x133f05){if(_0x133f05){_0x4887a8=_0x133f05;logger[_0xf639('0x27')](_0xf639('0xb4'),_0xf639('0x30'),_0xf639('0xd9'),_0x133f05[_0xf639('0x46')],util['inspect'](_0x2b74f1[_0xf639('0x49')],{'showHidden':![],'depth':null}));switch(_0x133f05[_0xf639('0x46')]){case _0xf639('0x90'):if(_0x2b74f1[_0xf639('0x49')][_0xf639('0xda')]&&_0x2b74f1[_0xf639('0x49')][_0xf639('0xdb')]){_0x352474=_0x2b74f1[_0xf639('0x49')]['state'];return db[_0xf639('0xaa')]['find']({'where':{'messageId':_0x2b74f1[_0xf639('0x49')][_0xf639('0xda')]}});}break;}}})[_0xf639('0x24')](handleEntityNotFound(_0x597924,null))[_0xf639('0x24')](function(_0x105c64){if(_0x105c64){_0x30dc19=_0x105c64;switch(_0x4887a8[_0xf639('0x46')]){case _0xf639('0x90'):if(_0x352474==='2'||_0x352474==='6'){return _0x30dc19[_0xf639('0x3b')]({'read':!![]});}else{logger[_0xf639('0x29')](_0xf639('0xb4'),_0xf639('0x30'),_0xf639('0x90'),util['inspect'](_0x2b74f1[_0xf639('0x49')],{'showHidden':![],'depth':null}));};break;}return _0x30dc19;}})[_0xf639('0x24')](respondWithResult(_0x597924,null))[_0xf639('0x2e')](handleError(_0x597924,null));};exports[_0xf639('0xdc')]=function(_0x4d903b,_0x18465c,_0x204445){return db[_0xf639('0x59')][_0xf639('0x61')]({'where':{'id':_0x4d903b[_0xf639('0x5e')]['id']}})[_0xf639('0x24')](handleEntityNotFound(_0x18465c,null))[_0xf639('0x24')](function(_0x2c9edd){if(_0x2c9edd){return _0x2c9edd[_0xf639('0xdc')](_0x4d903b[_0xf639('0x63')][_0xf639('0x6f')],_[_0xf639('0xdd')](_0x4d903b[_0xf639('0x63')],[_0xf639('0x6f'),'id'])||{})['spread'](function(_0x1d340c){for(var _0x289d43=0x0;_0x289d43<_0x4d903b[_0xf639('0x63')][_0xf639('0x6f')]['length'];_0x289d43+=0x1){socket[_0xf639('0xde')](_0xf639('0xdf'),{'UserId':Number(_0x4d903b[_0xf639('0x63')][_0xf639('0x6f')][_0x289d43]),'SmsAccountId':Number(_0x4d903b[_0xf639('0x5e')]['id'])});}return _0x1d340c;});}})['then'](respondWithResult(_0x18465c,null))[_0xf639('0x2e')](handleError(_0x18465c,null));};exports['removeAgents']=function(_0x16c6dd,_0x3988b9,_0x496ca9){return db[_0xf639('0x59')][_0xf639('0x61')]({'where':{'id':_0x16c6dd[_0xf639('0x5e')]['id']}})['then'](handleEntityNotFound(_0x3988b9,null))[_0xf639('0x24')](function(_0x3fd7de){if(_0x3fd7de){return _0x3fd7de[_0xf639('0xe0')](_0x16c6dd[_0xf639('0x49')][_0xf639('0x6f')])[_0xf639('0x24')](function(){if(_[_0xf639('0xe1')](_0x16c6dd[_0xf639('0x49')][_0xf639('0x6f')])){for(var _0x4f82a0=0x0;_0x4f82a0<_0x16c6dd[_0xf639('0x49')][_0xf639('0x6f')][_0xf639('0x4e')];_0x4f82a0+=0x1){socket[_0xf639('0xde')](_0xf639('0xe2'),{'UserId':Number(_0x16c6dd[_0xf639('0x49')][_0xf639('0x6f')][_0x4f82a0]),'SmsAccountId':Number(_0x16c6dd['params']['id'])});}}else{socket['emit']('userSmsAccount:remove',{'UserId':Number(_0x16c6dd[_0xf639('0x49')][_0xf639('0x6f')]),'SmsAccountId':Number(_0x16c6dd[_0xf639('0x5e')]['id'])});}});}})[_0xf639('0x24')](respondWithStatusCode(_0x3988b9,null))[_0xf639('0x2e')](handleError(_0x3988b9,null));};exports['getAgents']=function(_0x42880e,_0x4b320c,_0x20c280){var _0x515339={};var _0x41ca46={};var _0x113e18;var _0x7f85ba;return db[_0xf639('0x59')][_0xf639('0x6c')]({'where':{'id':_0x42880e[_0xf639('0x5e')]['id']}})['then'](handleEntityNotFound(_0x4b320c,null))[_0xf639('0x24')](function(_0x9a655f){if(_0x9a655f){_0x113e18=_0x9a655f;_0x41ca46['model']=_['keys'](db[_0xf639('0xae')]['rawAttributes']);_0x41ca46[_0xf639('0x49')]=_[_0xf639('0x4a')](_0x42880e[_0xf639('0x49')]);_0x41ca46['filters']=_['intersection'](_0x41ca46[_0xf639('0x48')],_0x41ca46[_0xf639('0x49')]);_0x515339['attributes']=_['intersection'](_0x41ca46[_0xf639('0x48')],qs[_0xf639('0x4d')](_0x42880e[_0xf639('0x49')][_0xf639('0x4d')]));_0x515339['attributes']=_0x515339['attributes'][_0xf639('0x4e')]?_0x515339[_0xf639('0x4b')]:_0x41ca46[_0xf639('0x48')];_0x515339['order']=qs['sort'](_0x42880e['query']['sort']);_0x515339[_0xf639('0x53')]=qs[_0xf639('0x54')](_[_0xf639('0x55')](_0x42880e['query'],_0x41ca46['filters']));if(_0x42880e[_0xf639('0x49')][_0xf639('0x58')]){_0x515339[_0xf639('0x53')]=_[_0xf639('0x56')](_0x515339[_0xf639('0x53')],{'$or':_[_0xf639('0x44')](_0x515339[_0xf639('0x4b')],function(_0x58ab8f){var _0x3fe9d0={};_0x3fe9d0[_0x58ab8f]={'$like':'%'+_0x42880e[_0xf639('0x49')][_0xf639('0x58')]+'%'};return _0x3fe9d0;})});}_0x515339=_['merge']({},_0x515339,_0x42880e[_0xf639('0x60')]);return _0x113e18[_0xf639('0xe3')](_0x515339);}})[_0xf639('0x24')](function(_0xf45964){if(_0xf45964){_0x7f85ba=_0xf45964[_0xf639('0x4e')];if(!_0x42880e[_0xf639('0x49')][_0xf639('0x4f')]('nolimit')){_0x515339['limit']=qs[_0xf639('0x35')](_0x42880e[_0xf639('0x49')][_0xf639('0x35')]);_0x515339[_0xf639('0x33')]=qs[_0xf639('0x33')](_0x42880e[_0xf639('0x49')]['offset']);}return _0x113e18[_0xf639('0xe3')](_0x515339);}})[_0xf639('0x24')](function(_0x115d06){if(_0x115d06){return _0x115d06?{'count':_0x7f85ba,'rows':_0x115d06}:null;}})[_0xf639('0x24')](respondWithResult(_0x4b320c,null))[_0xf639('0x2e')](handleError(_0x4b320c,null));};
\ No newline at end of file
+var _0xa54e=['Messages','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','requestid','statusInt','status_code','groupName','DELIVERED','redif','clicksend','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','ACCEPTD','statusGet','csc','state','message-id','ids','omit','emit','removeAgents','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','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/utils','../../config/environment','redis','socket.io-emitter','register','jayson/promise','client','http','request','then','info','SmsAccount,\x20%s,\x20%s','debug','SmsAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','get','SmsAccounts','UserProfileResource','destroy','stack','name','send','index','mandatoryDispositionPause','map','SmsAccount','key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','show','params','Pause','rawAttributes','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','describe','SmsAccountId','Disposition','getDispositions','findOne','order','rows','removeDispositions','addAnswer','CannedAnswer','getAnswers','hasOwnProperty','removeAnswers','notify','SmsApplication','Applications','priority','asc','account','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','ListId','mobile','From','Body','MessageSid','skebby','sender','text','connectel','from','message_id','messageId','MessageUUID','infobip','results','originatingAddress','segmentedMessage','clickatell','fromNumber','replyMessageId','bandwidth','intelepeer','refid','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','Contacts','DESC','list','defaults','CmContact','contact','SmsInteraction','spread','interaction','created','autoclose','push','applications','close','unmanaged','AttachmentId','User','UserId','unshift','agent','*,*,*,*','startRouting','Start','receiveMessage','entity\x20found','twilio','Content-Type','addApplications','transaction','bulkCreate','findAndCountAll','getApplications','getInteractions','Contact','fullname','internal','Tag','Tags','color','tag','to\x20is\x20mandatory','CmList','List','out','SmsMessage','dataValues'];(function(_0x545c01,_0x475388){var _0x4492a3=function(_0x1fab9b){while(--_0x1fab9b){_0x545c01['push'](_0x545c01['shift']());}};_0x4492a3(++_0x475388);}(_0xa54e,0x100));var _0xea54=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xa54e[_0x21a9d9];return _0x46adce;};'use strict';var emlformat=require(_0xea54('0x0'));var rimraf=require(_0xea54('0x1'));var zipdir=require(_0xea54('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xea54('0x3'));var moment=require(_0xea54('0x4'));var BPromise=require(_0xea54('0x5'));var Mustache=require(_0xea54('0x6'));var util=require(_0xea54('0x7'));var path=require(_0xea54('0x8'));var sox=require(_0xea54('0x9'));var csv=require(_0xea54('0xa'));var ejs=require(_0xea54('0xb'));var fs=require('fs');var fs_extra=require(_0xea54('0xc'));var _=require(_0xea54('0xd'));var squel=require('squel');var crypto=require(_0xea54('0xe'));var jsforce=require(_0xea54('0xf'));var deskjs=require(_0xea54('0x10'));var toCsv=require(_0xea54('0xa'));var querystring=require(_0xea54('0x11'));var Papa=require(_0xea54('0x12'));var Redis=require(_0xea54('0x13'));var authService=require(_0xea54('0x14'));var qs=require(_0xea54('0x15'));var as=require(_0xea54('0x16'));var hardwareService=require(_0xea54('0x17'));var logger=require(_0xea54('0x18'))(_0xea54('0x19'));var utils=require(_0xea54('0x1a'));var config=require(_0xea54('0x1b'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0xea54('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0xea54('0x1d'))(new Redis(config['redis']));require('./smsAccount.socket')[_0xea54('0x1e')](socket);var jayson=require(_0xea54('0x1f'));var client=jayson[_0xea54('0x20')][_0xea54('0x21')]({'port':0x232c});function respondWithRpcPromise(_0x164733,_0x1a5e12,_0x3707e2,_0x219f25){return new BPromise(function(_0x4b6171,_0x2a1deb){var _0x468ad0=_0x219f25||client;return _0x468ad0[_0xea54('0x22')](_0x164733,_0x3707e2)[_0xea54('0x23')](function(_0x46bdd4){logger[_0xea54('0x24')](_0xea54('0x25'),_0x1a5e12,'request\x20sent');logger[_0xea54('0x26')](_0xea54('0x27'),_0x1a5e12,_0xea54('0x28'),JSON[_0xea54('0x29')](_0x46bdd4));if(_0x46bdd4['error']){if(_0x46bdd4[_0xea54('0x2a')][_0xea54('0x2b')]===0x1f4){logger['error']('SmsAccount,\x20%s,\x20%s',_0x1a5e12,_0x46bdd4[_0xea54('0x2a')][_0xea54('0x2c')]);return _0x2a1deb(_0x46bdd4[_0xea54('0x2a')]['message']);}logger[_0xea54('0x2a')](_0xea54('0x25'),_0x1a5e12,_0x46bdd4[_0xea54('0x2a')][_0xea54('0x2c')]);return _0x4b6171(_0x46bdd4[_0xea54('0x2a')][_0xea54('0x2c')]);}else{logger[_0xea54('0x24')]('SmsAccount,\x20%s,\x20%s',_0x1a5e12,'request\x20sent');_0x4b6171(_0x46bdd4['result'][_0xea54('0x2c')]);}})[_0xea54('0x2d')](function(_0x8be44d){logger[_0xea54('0x2a')]('SmsAccount,\x20%s,\x20%s',_0x1a5e12,_0x8be44d);_0x2a1deb(_0x8be44d);});});}function respondWithStatusCode(_0x294757,_0x5ac9ff){_0x5ac9ff=_0x5ac9ff||0xcc;return function(_0x3aabeb){if(_0x3aabeb){return _0x294757[_0xea54('0x2e')](_0x5ac9ff);}return _0x294757[_0xea54('0x2f')](_0x5ac9ff)[_0xea54('0x30')]();};}function respondWithResult(_0x42bc07,_0x50ca39){_0x50ca39=_0x50ca39||0xc8;return function(_0x5570a1){if(_0x5570a1){return _0x42bc07[_0xea54('0x2f')](_0x50ca39)[_0xea54('0x31')](_0x5570a1);}};}function respondWithFilteredResult(_0x1005b0,_0x1fff75){return function(_0xfa6961){if(_0xfa6961){var _0x9f10bf=typeof _0x1fff75['offset']==='undefined'&&typeof _0x1fff75[_0xea54('0x32')]===_0xea54('0x33');var _0x102434=_0xfa6961[_0xea54('0x34')];var _0x511bff=_0x9f10bf?0x0:_0x1fff75[_0xea54('0x35')];var _0x249a95=_0x9f10bf?_0xfa6961['count']:_0x1fff75[_0xea54('0x35')]+_0x1fff75[_0xea54('0x32')];var _0x5cbc48;if(_0x249a95>=_0x102434){_0x249a95=_0x102434;_0x5cbc48=0xc8;}else{_0x5cbc48=0xce;}_0x1005b0['status'](_0x5cbc48);return _0x1005b0[_0xea54('0x36')](_0xea54('0x37'),_0x511bff+'-'+_0x249a95+'/'+_0x102434)[_0xea54('0x31')](_0xfa6961);}return null;};}function patchUpdates(_0x21f68a){return function(_0x4c7f05){try{jsonpatch[_0xea54('0x38')](_0x4c7f05,_0x21f68a,!![]);}catch(_0x188a9d){return BPromise[_0xea54('0x39')](_0x188a9d);}return _0x4c7f05[_0xea54('0x3a')]();};}function saveUpdates(_0x4a0d50,_0x18247a){return function(_0x58ce57){if(_0x58ce57){return _0x58ce57[_0xea54('0x3b')](_0x4a0d50)['then'](function(_0x53a6cf){return _0x53a6cf;});}return null;};}function removeEntity(_0x42fa68,_0x2036f5){return function(_0x3a3e5d){if(_0x3a3e5d){return _0x3a3e5d['destroy']()['then'](function(){var _0x24a9d7=_0x3a3e5d[_0xea54('0x3c')]({'plain':!![]});var _0xd6ee30=_0xea54('0x3d');return db[_0xea54('0x3e')][_0xea54('0x3f')]({'where':{'type':_0xd6ee30,'resourceId':_0x24a9d7['id']}})['then'](function(){return _0x3a3e5d;});})[_0xea54('0x23')](function(){_0x42fa68[_0xea54('0x2f')](0xcc)[_0xea54('0x30')]();});}};}function handleEntityNotFound(_0x546388,_0x52e41a){return function(_0x21342a){if(!_0x21342a){_0x546388[_0xea54('0x2e')](0x194);}return _0x21342a;};}function handleError(_0x481510,_0x3575fb){_0x3575fb=_0x3575fb||0x1f4;return function(_0x497fc0){logger['error'](_0x497fc0[_0xea54('0x40')]);if(_0x497fc0[_0xea54('0x41')]){delete _0x497fc0[_0xea54('0x41')];}_0x481510[_0xea54('0x2f')](_0x3575fb)[_0xea54('0x42')](_0x497fc0);};}exports[_0xea54('0x43')]=function(_0xdf176c,_0x1af2bc){var _0x5e95e1={'include':[{'model':db['Pause'],'as':_0xea54('0x44')}]},_0x22a19a={},_0x4e335e={'count':0x0,'rows':[]};var _0x2d9e5c=_[_0xea54('0x45')](db[_0xea54('0x46')]['rawAttributes'],function(_0x52b691){return{'name':_0x52b691['fieldName'],'type':_0x52b691['type'][_0xea54('0x47')]};});_0x22a19a[_0xea54('0x48')]=_[_0xea54('0x45')](_0x2d9e5c,_0xea54('0x41'));_0x22a19a[_0xea54('0x49')]=_[_0xea54('0x4a')](_0xdf176c['query']);_0x22a19a[_0xea54('0x4b')]=_['intersection'](_0x22a19a[_0xea54('0x48')],_0x22a19a[_0xea54('0x49')]);_0x5e95e1[_0xea54('0x4c')]=_[_0xea54('0x4d')](_0x22a19a[_0xea54('0x48')],qs[_0xea54('0x4e')](_0xdf176c[_0xea54('0x49')]['fields']));_0x5e95e1[_0xea54('0x4c')]=_0x5e95e1[_0xea54('0x4c')][_0xea54('0x4f')]?_0x5e95e1[_0xea54('0x4c')]:_0x22a19a[_0xea54('0x48')];if(!_0xdf176c[_0xea54('0x49')]['hasOwnProperty'](_0xea54('0x50'))){_0x5e95e1['limit']=qs[_0xea54('0x32')](_0xdf176c['query']['limit']);_0x5e95e1[_0xea54('0x35')]=qs[_0xea54('0x35')](_0xdf176c[_0xea54('0x49')][_0xea54('0x35')]);}_0x5e95e1['order']=qs[_0xea54('0x51')](_0xdf176c[_0xea54('0x49')][_0xea54('0x51')]);_0x5e95e1[_0xea54('0x52')]=qs[_0xea54('0x4b')](_[_0xea54('0x53')](_0xdf176c[_0xea54('0x49')],_0x22a19a[_0xea54('0x4b')]),_0x2d9e5c);if(_0xdf176c[_0xea54('0x49')][_0xea54('0x54')]){_0x5e95e1[_0xea54('0x52')]=_[_0xea54('0x55')](_0x5e95e1[_0xea54('0x52')],{'$or':_[_0xea54('0x45')](_0x2d9e5c,function(_0x2e27f3){if(_0x2e27f3[_0xea54('0x56')]!==_0xea54('0x57')){var _0x11e5be={};_0x11e5be[_0x2e27f3[_0xea54('0x41')]]={'$like':'%'+_0xdf176c[_0xea54('0x49')][_0xea54('0x54')]+'%'};return _0x11e5be;}})});}_0x5e95e1=_[_0xea54('0x55')]({},_0x5e95e1,_0xdf176c[_0xea54('0x58')]);var _0x35ac19={'where':_0x5e95e1['where']};return db['SmsAccount'][_0xea54('0x34')](_0x35ac19)[_0xea54('0x23')](function(_0x56cf12){_0x4e335e[_0xea54('0x34')]=_0x56cf12;if(_0xdf176c[_0xea54('0x49')][_0xea54('0x59')]){_0x5e95e1[_0xea54('0x5a')]=[{'all':!![]}];}return db['SmsAccount'][_0xea54('0x5b')](_0x5e95e1);})[_0xea54('0x23')](function(_0x11aed4){_0x4e335e['rows']=_0x11aed4;return _0x4e335e;})[_0xea54('0x23')](respondWithFilteredResult(_0x1af2bc,_0x5e95e1))['catch'](handleError(_0x1af2bc,null));};exports[_0xea54('0x5c')]=function(_0x228f11,_0x2eb5cc){var _0x2ec8e3={'raw':![],'where':{'id':_0x228f11[_0xea54('0x5d')]['id']},'include':[{'model':db[_0xea54('0x5e')],'as':_0xea54('0x44')}]},_0x5ba1e0={};_0x5ba1e0[_0xea54('0x48')]=_[_0xea54('0x4a')](db[_0xea54('0x46')][_0xea54('0x5f')]);_0x5ba1e0['query']=_[_0xea54('0x4a')](_0x228f11['query']);_0x5ba1e0[_0xea54('0x4b')]=_[_0xea54('0x4d')](_0x5ba1e0[_0xea54('0x48')],_0x5ba1e0[_0xea54('0x49')]);_0x2ec8e3['attributes']=_[_0xea54('0x4d')](_0x5ba1e0['model'],qs['fields'](_0x228f11['query'][_0xea54('0x4e')]));_0x2ec8e3['attributes']=_0x2ec8e3[_0xea54('0x4c')][_0xea54('0x4f')]?_0x2ec8e3['attributes']:_0x5ba1e0['model'];if(_0x228f11[_0xea54('0x49')][_0xea54('0x59')]){_0x2ec8e3[_0xea54('0x5a')]=[{'all':!![]}];}_0x2ec8e3=_[_0xea54('0x55')]({},_0x2ec8e3,_0x228f11[_0xea54('0x58')]);return db['SmsAccount'][_0xea54('0x60')](_0x2ec8e3)[_0xea54('0x23')](handleEntityNotFound(_0x2eb5cc,null))[_0xea54('0x23')](respondWithResult(_0x2eb5cc,null))[_0xea54('0x2d')](handleError(_0x2eb5cc,null));};exports[_0xea54('0x61')]=function(_0x2c28cc,_0x5ec123){return db['SmsAccount'][_0xea54('0x61')](_0x2c28cc[_0xea54('0x62')],{})['then'](function(_0x58ab7a){var _0x2c3044=_0x2c28cc[_0xea54('0x63')][_0xea54('0x3c')]({'plain':!![]});if(!_0x2c3044)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2c3044[_0xea54('0x64')]===_0xea54('0x63')){var _0x272118=_0x58ab7a['get']({'plain':!![]});var _0x70ec65=_0xea54('0x3d');return db[_0xea54('0x65')][_0xea54('0x60')]({'where':{'name':_0x70ec65,'userProfileId':_0x2c3044[_0xea54('0x66')]},'raw':!![]})['then'](function(_0x2a66b4){if(_0x2a66b4&&_0x2a66b4[_0xea54('0x67')]===0x0){return db[_0xea54('0x3e')]['create']({'name':_0x272118['name'],'resourceId':_0x272118['id'],'type':_0x2a66b4[_0xea54('0x41')],'sectionId':_0x2a66b4['id']},{})[_0xea54('0x23')](function(){return _0x58ab7a;});}else{return _0x58ab7a;}})[_0xea54('0x2d')](function(_0x2bc327){logger[_0xea54('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2bc327);throw _0x2bc327;});}return _0x58ab7a;})['then'](respondWithResult(_0x5ec123,0xc9))[_0xea54('0x2d')](handleError(_0x5ec123,null));};exports[_0xea54('0x3b')]=function(_0x128692,_0x598735){if(_0x128692[_0xea54('0x62')]['id']){delete _0x128692[_0xea54('0x62')]['id'];}return db[_0xea54('0x46')]['find']({'where':{'id':_0x128692['params']['id']},'include':[{'model':db[_0xea54('0x5e')],'as':'mandatoryDispositionPause'}]})[_0xea54('0x23')](handleEntityNotFound(_0x598735,null))[_0xea54('0x23')](saveUpdates(_0x128692[_0xea54('0x62')],null))[_0xea54('0x23')](respondWithResult(_0x598735,null))[_0xea54('0x2d')](handleError(_0x598735,null));};exports['destroy']=function(_0x1e98cf,_0x1f8e55){return db[_0xea54('0x46')][_0xea54('0x60')]({'where':{'id':_0x1e98cf[_0xea54('0x5d')]['id']}})[_0xea54('0x23')](handleEntityNotFound(_0x1f8e55,null))[_0xea54('0x23')](removeEntity(_0x1f8e55,null))[_0xea54('0x2d')](handleError(_0x1f8e55,null));};exports[_0xea54('0x68')]=function(_0x419d82,_0x4daa22){return db['SmsAccount'][_0xea54('0x68')]()[_0xea54('0x23')](respondWithResult(_0x4daa22,null))[_0xea54('0x2d')](handleError(_0x4daa22,null));};exports['addDisposition']=function(_0x367e65,_0x5e966e,_0x53f495){if(_0x367e65[_0xea54('0x62')]['id']){delete _0x367e65[_0xea54('0x62')]['id'];}return db[_0xea54('0x46')]['find']({'where':{'id':_0x367e65[_0xea54('0x5d')]['id']}})[_0xea54('0x23')](handleEntityNotFound(_0x5e966e,null))[_0xea54('0x23')](function(_0x28f738){if(_0x28f738){_0x367e65[_0xea54('0x62')][_0xea54('0x69')]=_0x28f738['id'];return db[_0xea54('0x6a')][_0xea54('0x61')](_0x367e65['body']);}})[_0xea54('0x23')](respondWithResult(_0x5e966e,null))['catch'](handleError(_0x5e966e,null));};exports[_0xea54('0x6b')]=function(_0x15bb47,_0x1e7005,_0xc2168a){var _0xf015fb={'raw':![],'where':{}};var _0x2258e4={};var _0x53c8c2={'count':0x0,'rows':[]};return db['SmsAccount'][_0xea54('0x6c')]({'where':{'id':_0x15bb47['params']['id']}})[_0xea54('0x23')](handleEntityNotFound(_0x1e7005,null))[_0xea54('0x23')](function(_0x311c02){if(_0x311c02){_0x2258e4[_0xea54('0x48')]=_[_0xea54('0x4a')](db[_0xea54('0x6a')][_0xea54('0x5f')]);_0x2258e4[_0xea54('0x49')]=_[_0xea54('0x4a')](_0x15bb47[_0xea54('0x49')]);_0x2258e4[_0xea54('0x4b')]=_[_0xea54('0x4d')](_0x2258e4[_0xea54('0x48')],_0x2258e4[_0xea54('0x49')]);_0xf015fb[_0xea54('0x4c')]=_['intersection'](_0x2258e4[_0xea54('0x48')],qs[_0xea54('0x4e')](_0x15bb47[_0xea54('0x49')][_0xea54('0x4e')]));_0xf015fb[_0xea54('0x4c')]=_0xf015fb['attributes'][_0xea54('0x4f')]?_0xf015fb['attributes']:_0x2258e4[_0xea54('0x48')];if(!_0x15bb47['query']['hasOwnProperty']('nolimit')){_0xf015fb['limit']=qs[_0xea54('0x32')](_0x15bb47[_0xea54('0x49')][_0xea54('0x32')]);_0xf015fb[_0xea54('0x35')]=qs[_0xea54('0x35')](_0x15bb47[_0xea54('0x49')][_0xea54('0x35')]);}_0xf015fb[_0xea54('0x6d')]=qs[_0xea54('0x51')](_0x15bb47[_0xea54('0x49')][_0xea54('0x51')]);_0xf015fb[_0xea54('0x52')]=qs[_0xea54('0x4b')](_[_0xea54('0x53')](_0x15bb47[_0xea54('0x49')],_0x2258e4['filters']));_0xf015fb[_0xea54('0x52')]['SmsAccountId']=_0x311c02['id'];if(_0x15bb47[_0xea54('0x49')][_0xea54('0x54')]){_0xf015fb[_0xea54('0x52')]=_[_0xea54('0x55')](_0xf015fb['where'],{'$or':_['map'](_0xf015fb[_0xea54('0x4c')],function(_0xa29c95){var _0x11651b={};_0x11651b[_0xa29c95]={'$like':'%'+_0x15bb47[_0xea54('0x49')][_0xea54('0x54')]+'%'};return _0x11651b;})});}_0xf015fb=_['merge']({},_0xf015fb,_0x15bb47[_0xea54('0x58')]);return db[_0xea54('0x6a')][_0xea54('0x34')]({'where':_0xf015fb[_0xea54('0x52')]})[_0xea54('0x23')](function(_0x27d0d1){_0x53c8c2[_0xea54('0x34')]=_0x27d0d1;if(_0x15bb47[_0xea54('0x49')]['includeAll']){_0xf015fb['include']=[{'all':!![]}];}return db[_0xea54('0x6a')][_0xea54('0x5b')](_0xf015fb);})[_0xea54('0x23')](function(_0x2ef0f0){_0x53c8c2[_0xea54('0x6e')]=_0x2ef0f0;return _0x53c8c2;});}})[_0xea54('0x23')](respondWithFilteredResult(_0x1e7005,_0xf015fb))[_0xea54('0x2d')](handleError(_0x1e7005,null));};exports[_0xea54('0x6f')]=function(_0x141cb0,_0x3d8ec4,_0x219b79){return db[_0xea54('0x46')]['find']({'where':{'id':_0x141cb0['params']['id']}})[_0xea54('0x23')](handleEntityNotFound(_0x3d8ec4,null))['then'](function(_0x269e9b){if(_0x269e9b){return _0x269e9b[_0xea54('0x6f')](_0x141cb0[_0xea54('0x49')]['ids']);}})[_0xea54('0x23')](respondWithStatusCode(_0x3d8ec4,null))['catch'](handleError(_0x3d8ec4,null));};exports[_0xea54('0x70')]=function(_0x574c9d,_0x492540,_0x1850ae){if(_0x574c9d[_0xea54('0x62')]['id']){delete _0x574c9d[_0xea54('0x62')]['id'];}return db['SmsAccount'][_0xea54('0x60')]({'where':{'id':_0x574c9d[_0xea54('0x5d')]['id']}})[_0xea54('0x23')](handleEntityNotFound(_0x492540,null))[_0xea54('0x23')](function(_0x37db16){if(_0x37db16){_0x574c9d['body'][_0xea54('0x69')]=_0x37db16['id'];return db[_0xea54('0x71')][_0xea54('0x61')](_0x574c9d[_0xea54('0x62')]);}})[_0xea54('0x23')](respondWithResult(_0x492540,null))[_0xea54('0x2d')](handleError(_0x492540,null));};exports[_0xea54('0x72')]=function(_0x3dd8b8,_0x8d567e,_0x5569a9){var _0xd09e3f={'raw':![],'where':{}};var _0xfdcf34={};var _0x3d3dcd={'count':0x0,'rows':[]};return db[_0xea54('0x46')][_0xea54('0x6c')]({'where':{'id':_0x3dd8b8['params']['id']}})['then'](handleEntityNotFound(_0x8d567e,null))['then'](function(_0x3a8d3c){if(_0x3a8d3c){_0xfdcf34[_0xea54('0x48')]=_[_0xea54('0x4a')](db[_0xea54('0x71')][_0xea54('0x5f')]);_0xfdcf34[_0xea54('0x49')]=_[_0xea54('0x4a')](_0x3dd8b8[_0xea54('0x49')]);_0xfdcf34[_0xea54('0x4b')]=_[_0xea54('0x4d')](_0xfdcf34['model'],_0xfdcf34[_0xea54('0x49')]);_0xd09e3f['attributes']=_[_0xea54('0x4d')](_0xfdcf34[_0xea54('0x48')],qs[_0xea54('0x4e')](_0x3dd8b8[_0xea54('0x49')][_0xea54('0x4e')]));_0xd09e3f[_0xea54('0x4c')]=_0xd09e3f[_0xea54('0x4c')][_0xea54('0x4f')]?_0xd09e3f[_0xea54('0x4c')]:_0xfdcf34[_0xea54('0x48')];if(!_0x3dd8b8[_0xea54('0x49')][_0xea54('0x73')](_0xea54('0x50'))){_0xd09e3f[_0xea54('0x32')]=qs[_0xea54('0x32')](_0x3dd8b8[_0xea54('0x49')][_0xea54('0x32')]);_0xd09e3f[_0xea54('0x35')]=qs[_0xea54('0x35')](_0x3dd8b8[_0xea54('0x49')]['offset']);}_0xd09e3f[_0xea54('0x6d')]=qs[_0xea54('0x51')](_0x3dd8b8['query'][_0xea54('0x51')]);_0xd09e3f[_0xea54('0x52')]=qs['filters'](_['pick'](_0x3dd8b8[_0xea54('0x49')],_0xfdcf34['filters']));_0xd09e3f['where'][_0xea54('0x69')]=_0x3a8d3c['id'];if(_0x3dd8b8['query'][_0xea54('0x54')]){_0xd09e3f[_0xea54('0x52')]=_[_0xea54('0x55')](_0xd09e3f[_0xea54('0x52')],{'$or':_[_0xea54('0x45')](_0xd09e3f['attributes'],function(_0x57bc02){var _0x53b472={};_0x53b472[_0x57bc02]={'$like':'%'+_0x3dd8b8[_0xea54('0x49')][_0xea54('0x54')]+'%'};return _0x53b472;})});}_0xd09e3f=_[_0xea54('0x55')]({},_0xd09e3f,_0x3dd8b8[_0xea54('0x58')]);return db[_0xea54('0x71')]['count']({'where':_0xd09e3f['where']})[_0xea54('0x23')](function(_0x2641e3){_0x3d3dcd['count']=_0x2641e3;if(_0x3dd8b8[_0xea54('0x49')]['includeAll']){_0xd09e3f['include']=[{'all':!![]}];}return db[_0xea54('0x71')]['findAll'](_0xd09e3f);})[_0xea54('0x23')](function(_0xe40001){_0x3d3dcd[_0xea54('0x6e')]=_0xe40001;return _0x3d3dcd;});}})[_0xea54('0x23')](respondWithFilteredResult(_0x8d567e,_0xd09e3f))['catch'](handleError(_0x8d567e,null));};exports[_0xea54('0x74')]=function(_0x4e7239,_0x4fb6c3,_0x1e3224){return db[_0xea54('0x46')][_0xea54('0x60')]({'where':{'id':_0x4e7239[_0xea54('0x5d')]['id']}})['then'](handleEntityNotFound(_0x4fb6c3,null))[_0xea54('0x23')](function(_0x44ec92){if(_0x44ec92){return _0x44ec92[_0xea54('0x74')](_0x4e7239[_0xea54('0x49')]['ids']);}})['then'](respondWithStatusCode(_0x4fb6c3,null))['catch'](handleError(_0x4fb6c3,null));};exports[_0xea54('0x75')]=function(_0x1aabe1,_0x4b13ea,_0x18e245){var _0xb1705f={'channel':'sms'};var _0x57d915=[];var _0x23d88d=[];var _0x547551={};return db[_0xea54('0x46')][_0xea54('0x60')]({'where':{'id':_0x1aabe1['params']['id']},'include':[{'model':db[_0xea54('0x76')],'as':_0xea54('0x77')}]})['then'](handleEntityNotFound(_0x4b13ea,null))['then'](function(_0x194041){_0xb1705f['account']=_0x194041;_0xb1705f['applications']=_['orderBy'](_0x194041[_0xea54('0x77')],[_0xea54('0x78')],[_0xea54('0x79')]);if(_0xb1705f[_0xea54('0x7a')][_0xea54('0x77')]){delete _0xb1705f[_0xea54('0x7a')][_0xea54('0x77')];}return db['CmContact'][_0xea54('0x68')]();})['then'](function(_0x57605f){if(!_0x57605f){throw new db[(_0xea54('0x7b'))][(_0xea54('0x7c'))](_0xea54('0x7d'));}_0x57d915=_[_0xea54('0x7e')](_[_0xea54('0x4a')](_0x57605f),[_0xea54('0x7f'),_0xea54('0x80')]);_0x23d88d=_['difference'](_[_0xea54('0x4a')](_0x57605f),['createdAt',_0xea54('0x80'),'CompanyId',_0xea54('0x81')]);_0xb1705f[_0xea54('0x62')]={'mapKey':_0xea54('0x82')};if(_0xb1705f['account']['type']){switch(_0xb1705f[_0xea54('0x7a')]['type']){case'twilio':_0xb1705f['body']['from']=_0x1aabe1[_0xea54('0x62')][_0xea54('0x83')];_0xb1705f['body'][_0xea54('0x62')]=_0x1aabe1[_0xea54('0x62')][_0xea54('0x84')];_0xb1705f[_0xea54('0x62')]['messageId']=_0x1aabe1['body'][_0xea54('0x85')];break;case _0xea54('0x86'):_0xb1705f[_0xea54('0x62')]['from']='+'+_0x1aabe1['body'][_0xea54('0x87')];_0xb1705f[_0xea54('0x62')][_0xea54('0x62')]=_0x1aabe1['body'][_0xea54('0x88')];break;case _0xea54('0x89'):_0xb1705f['body'][_0xea54('0x8a')]=_0x1aabe1[_0xea54('0x62')]['from'];_0xb1705f[_0xea54('0x62')][_0xea54('0x62')]=_0x1aabe1[_0xea54('0x62')][_0xea54('0x2c')];break;case'clicksend':_0xb1705f[_0xea54('0x62')][_0xea54('0x8a')]=_0x1aabe1['body'][_0xea54('0x8a')];_0xb1705f[_0xea54('0x62')]['body']=_0x1aabe1[_0xea54('0x62')]['body'];_0xb1705f['body']['messageId']=_0x1aabe1['body'][_0xea54('0x8b')];break;case'plivo':_0xb1705f[_0xea54('0x62')][_0xea54('0x8a')]=_0x1aabe1[_0xea54('0x62')][_0xea54('0x83')];_0xb1705f[_0xea54('0x62')]['body']=_0x1aabe1[_0xea54('0x62')]['Text'];_0xb1705f[_0xea54('0x62')][_0xea54('0x8c')]=_0x1aabe1[_0xea54('0x62')][_0xea54('0x8d')];break;case _0xea54('0x8e'):_0xb1705f[_0xea54('0x62')]['from']='+'+_0x1aabe1[_0xea54('0x62')]['results'][0x0][_0xea54('0x8a')];_0xb1705f['body'][_0xea54('0x62')]=_0x1aabe1['body']['results'][0x0][_0xea54('0x88')];_0xb1705f['body'][_0xea54('0x8c')]=_0x1aabe1[_0xea54('0x62')][_0xea54('0x8f')][0x0][_0xea54('0x8c')];break;case'csc':_0xb1705f[_0xea54('0x62')][_0xea54('0x8a')]=_0x1aabe1[_0xea54('0x62')][_0xea54('0x90')];_0xb1705f['body'][_0xea54('0x62')]=_0x1aabe1[_0xea54('0x62')][_0xea54('0x91')][_0xea54('0x2c')];break;case _0xea54('0x92'):_0xb1705f[_0xea54('0x62')][_0xea54('0x8a')]=_0x1aabe1[_0xea54('0x62')][_0xea54('0x93')];_0xb1705f[_0xea54('0x62')][_0xea54('0x62')]=_0x1aabe1[_0xea54('0x62')][_0xea54('0x88')];_0xb1705f[_0xea54('0x62')][_0xea54('0x8c')]=_0x1aabe1[_0xea54('0x62')][_0xea54('0x94')];break;case _0xea54('0x95'):_0xb1705f[_0xea54('0x62')][_0xea54('0x8c')]=_0x1aabe1[_0xea54('0x62')][0x0][_0xea54('0x2c')]['id'];_0xb1705f[_0xea54('0x62')]['from']=_0x1aabe1[_0xea54('0x62')][0x0]['message'][_0xea54('0x8a')];_0xb1705f[_0xea54('0x62')][_0xea54('0x62')]=_0x1aabe1[_0xea54('0x62')][0x0][_0xea54('0x2c')][_0xea54('0x88')];break;case _0xea54('0x96'):_0xb1705f[_0xea54('0x62')][_0xea54('0x8a')]=_0x1aabe1['body'][_0xea54('0x8a')];_0xb1705f[_0xea54('0x62')][_0xea54('0x62')]=_0x1aabe1['body'][_0xea54('0x2c')];_0xb1705f[_0xea54('0x62')][_0xea54('0x8c')]=_0x1aabe1[_0xea54('0x62')][_0xea54('0x97')];break;}}if(_0xb1705f[_0xea54('0x62')]['id']){delete _0xb1705f[_0xea54('0x62')]['id'];}if(_[_0xea54('0x98')](_0xb1705f[_0xea54('0x62')][_0xea54('0x8a')])){throw new db[(_0xea54('0x7b'))][(_0xea54('0x7c'))](_0xea54('0x99'));}if(_[_0xea54('0x98')](_0xb1705f[_0xea54('0x62')]['body'])||_0xb1705f[_0xea54('0x62')][_0xea54('0x62')]===''){throw new db[(_0xea54('0x7b'))][(_0xea54('0x7c'))](_0xea54('0x9a'));}if(_[_0xea54('0x98')](_0xb1705f[_0xea54('0x62')][_0xea54('0x9b')])){throw new db['Sequelize']['ValidationError'](_0xea54('0x9c')+_0x23d88d);}if(!_['includes'](_0x23d88d,_0xb1705f[_0xea54('0x62')][_0xea54('0x9b')])){throw new db[(_0xea54('0x7b'))][(_0xea54('0x7c'))](_0xea54('0x9d')+_0x23d88d);}_0x547551[_0xb1705f[_0xea54('0x62')]['mapKey']]=_0xb1705f[_0xea54('0x62')][_0xea54('0x8a')];return db['CmList'][_0xea54('0x60')]({'where':{'id':_0xb1705f['account'][_0xea54('0x81')]},'include':[{'model':db['CmContact'],'as':_0xea54('0x9e'),'where':_0x547551,'limit':0x1,'order':[[_0xea54('0x80'),_0xea54('0x9f')]]}]});})[_0xea54('0x23')](handleEntityNotFound(_0x4b13ea,null))[_0xea54('0x23')](function(_0x8498e2){if(_0x8498e2){_0xb1705f[_0xea54('0xa0')]=_['omit'](_0x8498e2,[_0xea54('0x9e')]);if(_0x8498e2[_0xea54('0x9e')]['length']){return _0x8498e2[_0xea54('0x9e')][0x0];}var _0xc1fb0f=_[_0xea54('0xa1')](_0xb1705f['body'],{'firstName':_0xb1705f[_0xea54('0x62')][_0xea54('0x8a')],'ListId':_0x8498e2['id']});_0xc1fb0f[_0xb1705f[_0xea54('0x62')][_0xea54('0x9b')]]=_0xb1705f[_0xea54('0x62')]['from'];return db[_0xea54('0xa2')][_0xea54('0x61')](_0xc1fb0f,{'fields':_0x57d915,'raw':!![]});}})[_0xea54('0x23')](handleEntityNotFound(_0x4b13ea,null))[_0xea54('0x23')](function(_0x368cd0){if(_0x368cd0){_0xb1705f[_0xea54('0xa3')]=_0x368cd0;var _0x3f7d5a={'ContactId':_0x368cd0['id'],'phone':_0xb1705f[_0xea54('0x62')]['from'],'SmsAccountId':_0x1aabe1[_0xea54('0x5d')]['id']};var _0x3b92a0={'ContactId':_0x368cd0['id'],'SmsAccountId':_0x1aabe1[_0xea54('0x5d')]['id'],'closed':![]};return db[_0xea54('0xa4')]['find']({'where':_0x3b92a0})[_0xea54('0x23')](function(_0x4fbed3){if(_0x4fbed3){return[_0x4fbed3,![]];}return db[_0xea54('0xa4')]['create'](_0x3f7d5a)[_0xea54('0x23')](function(_0x3e6dbd){return[_0x3e6dbd,!![]];});});}})[_0xea54('0xa5')](function(_0xe5a716,_0x53fca1){_0xb1705f['interaction']=_0xe5a716[_0xea54('0x3c')]({'plain':!![]});_0xb1705f[_0xea54('0xa6')][_0xea54('0xa7')]=![];if(_0x53fca1){if(_0xb1705f[_0xea54('0x7a')][_0xea54('0xa8')]){_0xb1705f['applications'][_0xea54('0xa9')]({'id':0x0,'priority':_0xb1705f[_0xea54('0xaa')]['length']+0x1,'app':_0xea54('0xab'),'appdata':_0xea54('0xac'),'interval':'*,*,*,*'});}_0xb1705f[_0xea54('0xa6')][_0xea54('0xa7')]=!![];}return db['SmsMessage'][_0xea54('0x61')]({'phone':_0xb1705f['body']['from'],'messageId':_0xb1705f['body'][_0xea54('0x8c')],'body':_0xb1705f['body'][_0xea54('0x62')],'SmsAccountId':_0x1aabe1[_0xea54('0x5d')]['id'],'SmsInteractionId':_0xe5a716['id'],'direction':'in','ContactId':_0xe5a716['ContactId'],'AttachmentId':_0xb1705f[_0xea54('0x62')][_0xea54('0xad')]});})[_0xea54('0x23')](function(_0x3949ae){_0xb1705f[_0xea54('0x2c')]=_0x3949ae;if(_0xb1705f[_0xea54('0xa6')]['UserId']){return db[_0xea54('0xae')][_0xea54('0x60')]({'attributes':['id',_0xea54('0x41')],'where':{'id':_0xb1705f[_0xea54('0xa6')][_0xea54('0xaf')]}})[_0xea54('0x23')](function(_0x429c67){if(_0x429c67){_0xb1705f[_0xea54('0xaa')][_0xea54('0xb0')]({'id':0x0,'priority':0x0,'app':_0xea54('0xb1'),'appdata':_0x429c67['name']+','+(_0xb1705f[_0xea54('0x7a')]['waitForTheAssignedAgent']||0xa),'interval':_0xea54('0xb2')});}return respondWithRpcPromise('Start',_0xea54('0xb3'),_0xb1705f);});}return respondWithRpcPromise(_0xea54('0xb4'),_0xea54('0xb3'),_0xb1705f);})['then'](function(_0x2e4f6a){if(_0x2e4f6a){var _0x109245=0xc8;var _0x44dd61=_0xea54('0xb5');logger['info'](_0xea54('0x27'),_0x44dd61,_0x109245,_0xea54('0xb6'));logger[_0xea54('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x44dd61,_0x109245,_0xea54('0xb6'),JSON['stringify'](_0x2e4f6a));if(_0xb1705f[_0xea54('0x7a')]['type']===_0xea54('0xb7')){return _0x4b13ea[_0xea54('0x2f')](_0x109245)[_0xea54('0x36')](_0xea54('0xb8'),'text/xml')['send']('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x4b13ea['status'](_0x109245)[_0xea54('0x31')](_0x2e4f6a);}}})[_0xea54('0x2d')](handleError(_0x4b13ea,null));};exports[_0xea54('0xb9')]=function(_0x3da9f2,_0x462066,_0x30d562){return db[_0xea54('0x46')][_0xea54('0x6c')]({'where':{'id':_0x3da9f2[_0xea54('0x5d')]['id']}})['then'](handleEntityNotFound(_0x462066,null))[_0xea54('0x23')](function(_0x2ee68e){if(_0x2ee68e){return db['sequelize'][_0xea54('0xba')](function(_0x4aff99){return db[_0xea54('0x76')][_0xea54('0x3f')]({'where':{'SmsAccountId':_0x3da9f2[_0xea54('0x5d')]['id']},'transaction':_0x4aff99})['then'](function(_0x5c986a){var _0x129784=_['map'](_0x3da9f2[_0xea54('0x62')],function(_0x2ba5ef){_0x2ba5ef[_0xea54('0x69')]=_0x3da9f2[_0xea54('0x5d')]['id'];return _0x2ba5ef;});return db[_0xea54('0x76')][_0xea54('0xbb')](_0x129784,{'transaction':_0x4aff99});});})['then'](function(){return db[_0xea54('0x76')][_0xea54('0xbc')]({'where':{'SmsAccountId':_0x3da9f2['params']['id']},'order':_0xea54('0x78')});});}})['then'](respondWithResult(_0x462066,null))[_0xea54('0x2d')](handleError(_0x462066,null));};exports[_0xea54('0xbd')]=function(_0x32a5a3,_0x3b3a4a,_0x4f8d15){var _0x194942={};var _0x40b753={};var _0x4217cd;var _0x2e1d3c;return db[_0xea54('0x46')][_0xea54('0x6c')]({'where':{'id':_0x32a5a3[_0xea54('0x5d')]['id']}})['then'](handleEntityNotFound(_0x3b3a4a,null))[_0xea54('0x23')](function(_0x2c5d84){if(_0x2c5d84){_0x4217cd=_0x2c5d84;_0x40b753['model']=_[_0xea54('0x4a')](db[_0xea54('0x76')][_0xea54('0x5f')]);_0x40b753[_0xea54('0x49')]=_['keys'](_0x32a5a3[_0xea54('0x49')]);_0x40b753['filters']=_[_0xea54('0x4d')](_0x40b753[_0xea54('0x48')],_0x40b753[_0xea54('0x49')]);_0x194942[_0xea54('0x4c')]=_[_0xea54('0x4d')](_0x40b753[_0xea54('0x48')],qs[_0xea54('0x4e')](_0x32a5a3['query']['fields']));_0x194942[_0xea54('0x4c')]=_0x194942['attributes'][_0xea54('0x4f')]?_0x194942['attributes']:_0x40b753['model'];_0x194942[_0xea54('0x6d')]=qs[_0xea54('0x51')](_0x32a5a3[_0xea54('0x49')][_0xea54('0x51')]);_0x194942[_0xea54('0x52')]=qs[_0xea54('0x4b')](_[_0xea54('0x53')](_0x32a5a3[_0xea54('0x49')],_0x40b753[_0xea54('0x4b')]));if(_0x32a5a3['query'][_0xea54('0x54')]){_0x194942[_0xea54('0x52')]=_[_0xea54('0x55')](_0x194942['where'],{'$or':_[_0xea54('0x45')](_0x194942[_0xea54('0x4c')],function(_0x14cbf7){var _0x2c6ec7={};_0x2c6ec7[_0x14cbf7]={'$like':'%'+_0x32a5a3[_0xea54('0x49')][_0xea54('0x54')]+'%'};return _0x2c6ec7;})});}_0x194942=_[_0xea54('0x55')]({},_0x194942,_0x32a5a3[_0xea54('0x58')]);return _0x4217cd[_0xea54('0xbd')](_0x194942);}})[_0xea54('0x23')](function(_0x442d7b){if(_0x442d7b){_0x2e1d3c=_0x442d7b['length'];if(!_0x32a5a3[_0xea54('0x49')][_0xea54('0x73')](_0xea54('0x50'))){_0x194942[_0xea54('0x32')]=qs[_0xea54('0x32')](_0x32a5a3[_0xea54('0x49')][_0xea54('0x32')]);_0x194942[_0xea54('0x35')]=qs[_0xea54('0x35')](_0x32a5a3[_0xea54('0x49')][_0xea54('0x35')]);}return _0x4217cd[_0xea54('0xbd')](_0x194942);}})['then'](function(_0x309c33){if(_0x309c33){return _0x309c33?{'count':_0x2e1d3c,'rows':_0x309c33}:null;}})[_0xea54('0x23')](respondWithResult(_0x3b3a4a,null))[_0xea54('0x2d')](handleError(_0x3b3a4a,null));};exports[_0xea54('0xbe')]=function(_0x58bae1,_0x2da3cc,_0x58183c){var _0x579eb8={'raw':![],'where':{}};var _0x18e652={};var _0x153862={'count':0x0,'rows':[]};return db[_0xea54('0x46')][_0xea54('0x6c')]({'where':{'id':_0x58bae1[_0xea54('0x5d')]['id']}})[_0xea54('0x23')](handleEntityNotFound(_0x2da3cc,null))[_0xea54('0x23')](function(_0x3c3396){if(_0x3c3396){_0x18e652[_0xea54('0x48')]=_[_0xea54('0x4a')](db[_0xea54('0xa4')]['rawAttributes']);_0x18e652['query']=_[_0xea54('0x4a')](_0x58bae1[_0xea54('0x49')]);_0x18e652[_0xea54('0x4b')]=_[_0xea54('0x4d')](_0x18e652['model'],_0x18e652[_0xea54('0x49')]);_0x579eb8[_0xea54('0x4c')]=_[_0xea54('0x4d')](_0x18e652[_0xea54('0x48')],qs[_0xea54('0x4e')](_0x58bae1[_0xea54('0x49')][_0xea54('0x4e')]));_0x579eb8[_0xea54('0x4c')]=_0x579eb8['attributes'][_0xea54('0x4f')]?_0x579eb8[_0xea54('0x4c')]:_0x18e652['model'];if(!_0x58bae1['query']['hasOwnProperty'](_0xea54('0x50'))){_0x579eb8[_0xea54('0x32')]=qs[_0xea54('0x32')](_0x58bae1[_0xea54('0x49')][_0xea54('0x32')]);_0x579eb8[_0xea54('0x35')]=qs[_0xea54('0x35')](_0x58bae1[_0xea54('0x49')][_0xea54('0x35')]);}_0x579eb8[_0xea54('0x6d')]=qs[_0xea54('0x51')](_0x58bae1[_0xea54('0x49')][_0xea54('0x51')]);_0x579eb8[_0xea54('0x52')]=qs[_0xea54('0x4b')](_['pick'](_0x58bae1[_0xea54('0x49')],_0x18e652[_0xea54('0x4b')]));_0x579eb8[_0xea54('0x52')][_0xea54('0x69')]=_0x3c3396['id'];if(_0x58bae1[_0xea54('0x49')][_0xea54('0x54')]){_0x579eb8[_0xea54('0x52')]=_[_0xea54('0x55')](_0x579eb8[_0xea54('0x52')],{'$or':_['map'](_0x579eb8['attributes'],function(_0x58b20c){var _0x3453da={};_0x3453da[_0x58b20c]={'$like':'%'+_0x58bae1['query']['filter']+'%'};return _0x3453da;})});}_0x579eb8=_[_0xea54('0x55')]({},_0x579eb8,_0x58bae1[_0xea54('0x58')]);return db[_0xea54('0xa4')][_0xea54('0x34')]({'where':_0x579eb8[_0xea54('0x52')]})[_0xea54('0x23')](function(_0x51e723){_0x153862[_0xea54('0x34')]=_0x51e723;if(_0x58bae1[_0xea54('0x49')][_0xea54('0x59')]){_0x579eb8[_0xea54('0x5a')]=[{'model':db[_0xea54('0xa2')],'as':_0xea54('0xbf'),'required':![]},{'model':db[_0xea54('0xae')],'as':'Owner','attributes':[_0xea54('0x41'),_0xea54('0xc0'),_0xea54('0xc1')],'required':![]},{'model':db[_0xea54('0xc2')],'as':_0xea54('0xc3'),'attributes':['id',_0xea54('0x41'),_0xea54('0xc4')],'where':_0x58bae1[_0xea54('0x49')][_0xea54('0xc5')]?{'id':_0x58bae1[_0xea54('0x49')]['tag']}:undefined,'required':_0x58bae1[_0xea54('0x49')][_0xea54('0xc5')]?!![]:![]}];}return db[_0xea54('0xa4')]['findAll'](_0x579eb8);})[_0xea54('0x23')](function(_0x27a80f){_0x153862['rows']=_0x27a80f;return _0x153862;});}})[_0xea54('0x23')](respondWithFilteredResult(_0x2da3cc,_0x579eb8))[_0xea54('0x2d')](handleError(_0x2da3cc,null));};exports[_0xea54('0x42')]=function(_0x4d5845,_0x156ab9,_0x1518c1){var _0x7458dd,_0x2080d0,_0x1f7dc2;if(_[_0xea54('0x98')](_0x4d5845['body'][_0xea54('0x62')])||_0x4d5845[_0xea54('0x62')]['body']===''){throw new db[(_0xea54('0x7b'))]['ValidationError'](_0xea54('0x9a'));}if(_['isNil'](_0x4d5845['body']['to'])){throw new db['Sequelize']['ValidationError'](_0xea54('0xc6'));}_0x7458dd=_0x4d5845[_0xea54('0x62')]['to'];return db[_0xea54('0x46')][_0xea54('0x60')]({'where':{'id':_0x4d5845[_0xea54('0x5d')]['id']},'include':[{'model':db[_0xea54('0xc7')],'as':_0xea54('0xc8'),'include':[{'model':db[_0xea54('0xa2')],'as':_0xea54('0x9e'),'where':{'mobile':_0x7458dd},'limit':0x1,'order':[[_0xea54('0x80'),_0xea54('0x9f')]]}]}]})['then'](handleEntityNotFound(_0x156ab9,null))['then'](function(_0x371806){if(_0x371806&&_0x371806[_0xea54('0xc8')]){_0x2080d0=_0x371806[_0xea54('0x3c')]({'plain':!![]});if(_0x2080d0['List']&&_0x2080d0[_0xea54('0xc8')][_0xea54('0x9e')][_0xea54('0x4f')]){return _0x2080d0[_0xea54('0xc8')]['Contacts'][0x0];}return db[_0xea54('0xa2')][_0xea54('0x61')](_[_0xea54('0xa1')](_0x4d5845[_0xea54('0x62')],{'firstName':_0x7458dd,'mobile':_0x7458dd,'phone':_0x7458dd,'ListId':_0x2080d0[_0xea54('0x81')]}));}})[_0xea54('0x23')](handleEntityNotFound(_0x156ab9,null))[_0xea54('0x23')](function(_0x5876a5){if(_0x5876a5){_0x1f7dc2=_0x5876a5;return db[_0xea54('0xa4')][_0xea54('0x60')]({'where':{'ContactId':_0x1f7dc2['id'],'closed':![],'SmsAccountId':_0x2080d0['id']}})[_0xea54('0x23')](function(_0x5efe49){if(_0x5efe49){return[_0x5efe49,![]];}return db['SmsInteraction'][_0xea54('0x61')]({'UserId':_0x4d5845[_0xea54('0x63')]['id'],'ContactId':_0x1f7dc2['id'],'SmsAccountId':_0x2080d0['id'],'phone':_0x7458dd,'firstMsgDirection':_0xea54('0xc9'),'Messages':[_[_0xea54('0x55')](_0x4d5845[_0xea54('0x62')],{'read':![],'body':_0x4d5845[_0xea54('0x62')][_0xea54('0x62')],'phone':_0x7458dd,'SmsAccountId':_0x2080d0['id'],'UserId':_0x4d5845['user']['id'],'ContactId':_0x1f7dc2['id']})]},{'include':[{'model':db[_0xea54('0xca')],'as':'Messages'}]})[_0xea54('0x23')](function(_0x1b6008){return[_0x1b6008,!![]];});});}})[_0xea54('0xa5')](function(_0x4d03ad,_0x2792cb){if(_0x2792cb){return _0x4d03ad;}return db[_0xea54('0xca')][_0xea54('0x61')](_['merge'](_0x4d5845[_0xea54('0x62')],{'read':![],'body':_0x4d5845[_0xea54('0x62')][_0xea54('0x62')],'phone':_0x7458dd,'SmsAccountId':_0x2080d0['id'],'SmsInteractionId':_0x4d03ad['id'],'UserId':_0x4d5845['user']['id'],'ContactId':_0x1f7dc2['id']}))[_0xea54('0x23')](function(_0x3f9f6b){_0x4d03ad[_0xea54('0xcb')][_0xea54('0xcc')]=[];_0x4d03ad[_0xea54('0xcb')][_0xea54('0xcc')][_0xea54('0xa9')](_0x3f9f6b[_0xea54('0xcb')]);return _0x4d03ad;});})[_0xea54('0x23')](respondWithResult(_0x156ab9,null))[_0xea54('0x2d')](handleError(_0x156ab9,null));};exports['status']=function(_0x8020a,_0x32f9e6,_0x5672d9){if(_0x8020a['body']['id']){delete _0x8020a[_0xea54('0x62')]['id'];}var _0x51cb14,_0x5ec2bd,_0x931588;return db['SmsAccount'][_0xea54('0x60')]({'where':{'id':_0x8020a[_0xea54('0x5d')]['id']}})['then'](handleEntityNotFound(_0x32f9e6,null))['then'](function(_0x279ab0){if(_0x279ab0){_0x931588=_0x279ab0;logger[_0xea54('0x26')](_0xea54('0x27'),_0xea54('0x2f'),_0xea54('0xcd'),_0x279ab0['type'],util[_0xea54('0xce')](_0x8020a['body'],{'showHidden':![],'depth':null}));switch(_0x279ab0[_0xea54('0x56')]){case _0xea54('0x86'):if(_0x8020a[_0xea54('0x62')][_0xea54('0xcf')]&&_0x8020a[_0xea54('0x62')]['status']){_0x5ec2bd=_0x8020a[_0xea54('0x62')][_0xea54('0x2f')];return db[_0xea54('0xca')]['find']({'where':{'messageId':_0x8020a[_0xea54('0x62')][_0xea54('0xcf')]}});}break;case _0xea54('0x89'):if(_0x8020a[_0xea54('0x62')][_0xea54('0xd0')]&&_0x8020a['body'][_0xea54('0xd1')]){_0x5ec2bd=_0x8020a[_0xea54('0x62')][_0xea54('0xd1')];return db[_0xea54('0xca')]['find']({'where':{'messageId':_0x8020a[_0xea54('0x62')][_0xea54('0xd0')]}});}break;case'clicksend':if(_0x8020a[_0xea54('0x62')][_0xea54('0x8b')]&&_0x8020a[_0xea54('0x62')][_0xea54('0xd2')]){_0x5ec2bd=_0x8020a['body'][_0xea54('0xd2')];return db[_0xea54('0xca')]['find']({'where':{'messageId':_0x8020a[_0xea54('0x62')][_0xea54('0x8b')]}});}break;case'infobip':var _0x3aefbf=_0x8020a[_0xea54('0x62')][_0xea54('0x8f')][0x0];if(_0x3aefbf[_0xea54('0x8c')]&&_0x3aefbf[_0xea54('0x2f')][_0xea54('0xd3')]===_0xea54('0xd4')){_0x5ec2bd=_0x3aefbf['status']['groupName'];return db[_0xea54('0xca')][_0xea54('0x60')]({'where':{'messageId':_0x3aefbf[_0xea54('0x8c')]}});}break;case _0xea54('0x92'):if(_0x8020a['body'][_0xea54('0x8c')]&&_0x8020a[_0xea54('0x62')][_0xea54('0x2f')]){_0x5ec2bd=_0x8020a[_0xea54('0x62')][_0xea54('0x2f')];return db[_0xea54('0xca')][_0xea54('0x60')]({'where':{'messageId':_0x8020a[_0xea54('0x62')][_0xea54('0x8c')]}});}break;case _0xea54('0x95'):if(_0x8020a[_0xea54('0x62')][0x0]['message']['id']){_0x5ec2bd=_0x8020a[_0xea54('0x62')][0x0][_0xea54('0x56')];return db[_0xea54('0xca')][_0xea54('0x60')]({'where':{'messageId':_0x8020a['body'][0x0]['message']['id']}});}break;case _0xea54('0x96'):if(_0x8020a[_0xea54('0x62')][_0xea54('0xd5')]&&_0x8020a[_0xea54('0x62')][_0xea54('0x2f')]){_0x5ec2bd=_0x8020a[_0xea54('0x62')]['status'];return db[_0xea54('0xca')][_0xea54('0x60')]({'where':{'messageId':_0x8020a[_0xea54('0x62')][_0xea54('0xd5')]}});}break;}}})['then'](handleEntityNotFound(_0x32f9e6,null))[_0xea54('0x23')](function(_0x4c3a80){if(_0x4c3a80){_0x51cb14=_0x4c3a80;switch(_0x931588[_0xea54('0x56')]){case _0xea54('0x86'):if(_0x5ec2bd===_0xea54('0xd4')){return _0x51cb14['update']({'read':!![]});}else{logger['error'](_0xea54('0x27'),_0xea54('0x2f'),_0xea54('0x86'),util[_0xea54('0xce')](_0x8020a[_0xea54('0x62')],{'showHidden':![],'depth':null}));}break;case _0xea54('0x89'):if(_0x5ec2bd==='1'){return _0x51cb14[_0xea54('0x3b')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s','status','skebby',util[_0xea54('0xce')](_0x8020a[_0xea54('0x62')],{'showHidden':![],'depth':null}));}break;case _0xea54('0xd6'):if(!_0x8020a[_0xea54('0x62')]['error_code']&&_0x5ec2bd>=0xc8&&_0x5ec2bd<=0xce){return _0x51cb14[_0xea54('0x3b')]({'read':!![]});}else{logger[_0xea54('0x2a')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xea54('0x2f'),_0xea54('0xd6'),util[_0xea54('0xce')](_0x8020a[_0xea54('0x62')],{'showHidden':![],'depth':null}));}break;case _0xea54('0x8e'):var _0x4fb44f=_0x8020a[_0xea54('0x62')]['results'][0x0];if(_0x4fb44f[_0xea54('0x2f')]['groupName']===_0xea54('0xd4')){return _0x51cb14[_0xea54('0x3b')]({'read':!![]});}else{logger[_0xea54('0x2a')](_0xea54('0x27'),_0xea54('0x2f'),_0xea54('0x8e'),util[_0xea54('0xce')](_0x8020a['body'],{'showHidden':![],'depth':null}));}break;case'clickatell':if(_0x5ec2bd==_0xea54('0xd7')||_0x5ec2bd==_0xea54('0xd8')){return _0x51cb14[_0xea54('0x3b')]({'read':!![]});}else{logger[_0xea54('0x2a')](_0xea54('0x27'),_0xea54('0x2f'),_0xea54('0x92'),util[_0xea54('0xce')](_0x8020a['body'],{'showHidden':![],'depth':null}));}break;case _0xea54('0x95'):if(_0x5ec2bd==_0xea54('0xd9')){return _0x51cb14[_0xea54('0x3b')]({'read':!![]});}else{logger[_0xea54('0x2a')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xea54('0x2f'),_0xea54('0x95'),util[_0xea54('0xce')](_0x8020a[_0xea54('0x62')],{'showHidden':![],'depth':null}));}break;case _0xea54('0x96'):if(_0x5ec2bd===_0xea54('0xda')||_0x5ec2bd===_0xea54('0xdb')){return _0x51cb14['update']({'read':!![]});}else{logger[_0xea54('0x2a')](_0xea54('0x27'),_0xea54('0x2f'),_0xea54('0x96'),util[_0xea54('0xce')](_0x8020a[_0xea54('0x62')],{'showHidden':![],'depth':null}));}break;}return _0x51cb14;}})[_0xea54('0x23')](respondWithResult(_0x32f9e6,null))[_0xea54('0x2d')](handleError(_0x32f9e6,null));};exports[_0xea54('0xdc')]=function(_0x65d29a,_0x5409c3,_0x5de0f5){var _0x39e150,_0x246480,_0x15ea03;return db[_0xea54('0x46')]['find']({'where':{'id':_0x65d29a['params']['id']}})[_0xea54('0x23')](handleEntityNotFound(_0x5409c3,null))[_0xea54('0x23')](function(_0x283109){if(_0x283109){_0x15ea03=_0x283109;logger[_0xea54('0x26')](_0xea54('0x27'),_0xea54('0x2f'),'received\x20delivery\x20report\x20from',_0x283109[_0xea54('0x56')],util[_0xea54('0xce')](_0x65d29a[_0xea54('0x49')],{'showHidden':![],'depth':null}));switch(_0x283109['type']){case _0xea54('0xdd'):if(_0x65d29a[_0xea54('0x49')]['message-id']&&_0x65d29a['query'][_0xea54('0xde')]){_0x246480=_0x65d29a[_0xea54('0x49')]['state'];return db[_0xea54('0xca')][_0xea54('0x60')]({'where':{'messageId':_0x65d29a[_0xea54('0x49')][_0xea54('0xdf')]}});}break;}}})['then'](handleEntityNotFound(_0x5409c3,null))[_0xea54('0x23')](function(_0x4ed561){if(_0x4ed561){_0x39e150=_0x4ed561;switch(_0x15ea03[_0xea54('0x56')]){case _0xea54('0xdd'):if(_0x246480==='2'||_0x246480==='6'){return _0x39e150[_0xea54('0x3b')]({'read':!![]});}else{logger[_0xea54('0x2a')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xea54('0x2f'),_0xea54('0xdd'),util['inspect'](_0x65d29a[_0xea54('0x49')],{'showHidden':![],'depth':null}));};break;}return _0x39e150;}})[_0xea54('0x23')](respondWithResult(_0x5409c3,null))[_0xea54('0x2d')](handleError(_0x5409c3,null));};exports['addAgents']=function(_0x1482f9,_0x477a96,_0x2a62f8){return db[_0xea54('0x46')]['find']({'where':{'id':_0x1482f9['params']['id']}})[_0xea54('0x23')](handleEntityNotFound(_0x477a96,null))[_0xea54('0x23')](function(_0x315655){if(_0x315655){return _0x315655['addAgents'](_0x1482f9[_0xea54('0x62')][_0xea54('0xe0')],_[_0xea54('0xe1')](_0x1482f9[_0xea54('0x62')],[_0xea54('0xe0'),'id'])||{})[_0xea54('0xa5')](function(_0x11a477){for(var _0x1d7063=0x0;_0x1d7063<_0x1482f9[_0xea54('0x62')][_0xea54('0xe0')][_0xea54('0x4f')];_0x1d7063+=0x1){socket[_0xea54('0xe2')]('userSmsAccount:save',{'UserId':Number(_0x1482f9['body'][_0xea54('0xe0')][_0x1d7063]),'SmsAccountId':Number(_0x1482f9[_0xea54('0x5d')]['id'])});}return _0x11a477;});}})[_0xea54('0x23')](respondWithResult(_0x477a96,null))[_0xea54('0x2d')](handleError(_0x477a96,null));};exports[_0xea54('0xe3')]=function(_0x433752,_0x3192af,_0x112d0f){return db['SmsAccount'][_0xea54('0x60')]({'where':{'id':_0x433752[_0xea54('0x5d')]['id']}})[_0xea54('0x23')](handleEntityNotFound(_0x3192af,null))[_0xea54('0x23')](function(_0x589e58){if(_0x589e58){return _0x589e58[_0xea54('0xe3')](_0x433752[_0xea54('0x49')][_0xea54('0xe0')])[_0xea54('0x23')](function(){if(_['isArray'](_0x433752[_0xea54('0x49')][_0xea54('0xe0')])){for(var _0x265a5b=0x0;_0x265a5b<_0x433752[_0xea54('0x49')][_0xea54('0xe0')][_0xea54('0x4f')];_0x265a5b+=0x1){socket['emit'](_0xea54('0xe4'),{'UserId':Number(_0x433752[_0xea54('0x49')]['ids'][_0x265a5b]),'SmsAccountId':Number(_0x433752[_0xea54('0x5d')]['id'])});}}else{socket[_0xea54('0xe2')](_0xea54('0xe4'),{'UserId':Number(_0x433752[_0xea54('0x49')][_0xea54('0xe0')]),'SmsAccountId':Number(_0x433752['params']['id'])});}});}})['then'](respondWithStatusCode(_0x3192af,null))[_0xea54('0x2d')](handleError(_0x3192af,null));};exports[_0xea54('0xe5')]=function(_0x15169e,_0xc86560,_0x14777d){var _0x55caa0={};var _0x129d86={};var _0x10c1b6;var _0x1bf90b;return db[_0xea54('0x46')][_0xea54('0x6c')]({'where':{'id':_0x15169e[_0xea54('0x5d')]['id']}})['then'](handleEntityNotFound(_0xc86560,null))[_0xea54('0x23')](function(_0x58c1ba){if(_0x58c1ba){_0x10c1b6=_0x58c1ba;_0x129d86[_0xea54('0x48')]=_['keys'](db[_0xea54('0xae')][_0xea54('0x5f')]);_0x129d86[_0xea54('0x49')]=_[_0xea54('0x4a')](_0x15169e['query']);_0x129d86[_0xea54('0x4b')]=_[_0xea54('0x4d')](_0x129d86[_0xea54('0x48')],_0x129d86['query']);_0x55caa0[_0xea54('0x4c')]=_[_0xea54('0x4d')](_0x129d86[_0xea54('0x48')],qs[_0xea54('0x4e')](_0x15169e[_0xea54('0x49')]['fields']));_0x55caa0[_0xea54('0x4c')]=_0x55caa0['attributes']['length']?_0x55caa0[_0xea54('0x4c')]:_0x129d86[_0xea54('0x48')];_0x55caa0[_0xea54('0x6d')]=qs['sort'](_0x15169e['query']['sort']);_0x55caa0[_0xea54('0x52')]=qs['filters'](_[_0xea54('0x53')](_0x15169e['query'],_0x129d86[_0xea54('0x4b')]));if(_0x15169e[_0xea54('0x49')][_0xea54('0x54')]){_0x55caa0[_0xea54('0x52')]=_['merge'](_0x55caa0[_0xea54('0x52')],{'$or':_[_0xea54('0x45')](_0x55caa0[_0xea54('0x4c')],function(_0x3cf7fa){var _0x9bd429={};_0x9bd429[_0x3cf7fa]={'$like':'%'+_0x15169e[_0xea54('0x49')]['filter']+'%'};return _0x9bd429;})});}_0x55caa0=_[_0xea54('0x55')]({},_0x55caa0,_0x15169e[_0xea54('0x58')]);return _0x10c1b6['getAgents'](_0x55caa0);}})[_0xea54('0x23')](function(_0x316490){if(_0x316490){_0x1bf90b=_0x316490['length'];if(!_0x15169e[_0xea54('0x49')]['hasOwnProperty'](_0xea54('0x50'))){_0x55caa0[_0xea54('0x32')]=qs[_0xea54('0x32')](_0x15169e['query']['limit']);_0x55caa0[_0xea54('0x35')]=qs[_0xea54('0x35')](_0x15169e['query']['offset']);}return _0x10c1b6[_0xea54('0xe5')](_0x55caa0);}})[_0xea54('0x23')](function(_0x574343){if(_0x574343){return _0x574343?{'count':_0x1bf90b,'rows':_0x574343}:null;}})[_0xea54('0x23')](respondWithResult(_0xc86560,null))[_0xea54('0x2d')](handleError(_0xc86560,null));};
\ No newline at end of file
index 8749913..00659d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa89=['exports','SmsAccount','setMaxListeners','update','remove','emit','hasOwnProperty'];(function(_0x53b7ca,_0x7b041d){var _0x4a64bd=function(_0x2f2d03){while(--_0x2f2d03){_0x53b7ca['push'](_0x53b7ca['shift']());}};_0x4a64bd(++_0x7b041d);}(_0xfa89,0x112));var _0x9fa8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfa89[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var SmsAccount=require('../../mysqldb')['db'][_0x9fa8('0x0')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x9fa8('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x9fa8('0x2'),'afterDestroy':_0x9fa8('0x3')};function emitEvent(_0x288bfa){return function(_0x5d0939,_0x24fe8e,_0x75bdd2){SmsAccountEvents[_0x9fa8('0x4')](_0x288bfa+':'+_0x5d0939['id'],_0x5d0939);SmsAccountEvents[_0x9fa8('0x4')](_0x288bfa,_0x5d0939);_0x75bdd2(null);};}for(var e in events){if(events[_0x9fa8('0x5')](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module[_0x9fa8('0x6')]=SmsAccountEvents;
\ No newline at end of file
+var _0x4a22=['SmsAccount','setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0xda501a,_0x159d6a){var _0x44be3a=function(_0x5c1c5f){while(--_0x5c1c5f){_0xda501a['push'](_0xda501a['shift']());}};_0x44be3a(++_0x159d6a);}(_0x4a22,0xd0));var _0x24a2=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x4a22[_0x465a0c];return _0x1e202e;};'use strict';var EventEmitter=require(_0x24a2('0x0'));var SmsAccount=require(_0x24a2('0x1'))['db'][_0x24a2('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x24a2('0x3')](0x0);var events={'afterCreate':_0x24a2('0x4'),'afterUpdate':'update','afterDestroy':_0x24a2('0x5')};function emitEvent(_0x55ab81){return function(_0x2cf0e4,_0x1fa003,_0x23eb7f){SmsAccountEvents[_0x24a2('0x6')](_0x55ab81+':'+_0x2cf0e4['id'],_0x2cf0e4);SmsAccountEvents[_0x24a2('0x6')](_0x55ab81,_0x2cf0e4);_0x23eb7f(null);};}for(var e in events){if(events[_0x24a2('0x7')](e)){var event=events[e];SmsAccount[_0x24a2('0x8')](e,emitEvent(event));}}module[_0x24a2('0x9')]=SmsAccountEvents;
\ No newline at end of file
index 233937b..166420b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b33=['rimraf','../../config/environment','./smsAccount.attributes','exports','SmsAccount','sms_accounts','lodash','util','bluebird','request-promise'];(function(_0x424e6c,_0x1e54b4){var _0x2310da=function(_0x303b6a){while(--_0x303b6a){_0x424e6c['push'](_0x424e6c['shift']());}};_0x2310da(++_0x1e54b4);}(_0x2b33,0x1b4));var _0x32b3=function(_0x575c17,_0x58cf05){_0x575c17=_0x575c17-0x0;var _0x4be569=_0x2b33[_0x575c17];return _0x4be569;};'use strict';var _=require(_0x32b3('0x0'));var util=require(_0x32b3('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x32b3('0x2'));var rp=require(_0x32b3('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x32b3('0x4'));var config=require(_0x32b3('0x5'));var attributes=require(_0x32b3('0x6'));module[_0x32b3('0x7')]=function(_0x2b6641,_0x5c3090){return _0x2b6641['define'](_0x32b3('0x8'),attributes,{'tableName':_0x32b3('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5a4d=['lodash','util','api','moment','bluebird','request-promise','path','./smsAccount.attributes','define'];(function(_0x20729c,_0x389a53){var _0xbf6003=function(_0x65b534){while(--_0x65b534){_0x20729c['push'](_0x20729c['shift']());}};_0xbf6003(++_0x389a53);}(_0x5a4d,0x1c2));var _0xd5a4=function(_0xd2f73d,_0x1deadf){_0xd2f73d=_0xd2f73d-0x0;var _0x5adfa7=_0x5a4d[_0xd2f73d];return _0x5adfa7;};'use strict';var _=require(_0xd5a4('0x0'));var util=require(_0xd5a4('0x1'));var logger=require('../../config/logger')(_0xd5a4('0x2'));var moment=require(_0xd5a4('0x3'));var BPromise=require(_0xd5a4('0x4'));var rp=require(_0xd5a4('0x5'));var fs=require('fs');var path=require(_0xd5a4('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xd5a4('0x7'));module['exports']=function(_0x25ad4e,_0x5cae9e){return _0x25ad4e[_0xd5a4('0x8')]('SmsAccount',attributes,{'tableName':'sms_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 221156a..8b7a3bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd675=['redis','defaults','localhost','register','request','then','info','SmsAccount,\x20%s,\x20%s','SmsAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','ShowSmsAccount','SmsAccount','find','options','raw','where','attributes','map','include','model','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http'];(function(_0x5eef05,_0x1be989){var _0x56d4b8=function(_0x57993d){while(--_0x57993d){_0x5eef05['push'](_0x5eef05['shift']());}};_0x56d4b8(++_0x1be989);}(_0xd675,0x8c));var _0x5d67=function(_0x3d7af5,_0x308d72){_0x3d7af5=_0x3d7af5-0x0;var _0x11b446=_0xd675[_0x3d7af5];return _0x11b446;};'use strict';var _=require(_0x5d67('0x0'));var util=require(_0x5d67('0x1'));var moment=require(_0x5d67('0x2'));var BPromise=require(_0x5d67('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5d67('0x4'));var db=require(_0x5d67('0x5'))['db'];var utils=require(_0x5d67('0x6'));var logger=require(_0x5d67('0x7'))(_0x5d67('0x8'));var config=require('../../config/environment');var jayson=require(_0x5d67('0x9'));var client=jayson[_0x5d67('0xa')][_0x5d67('0xb')]({'port':0x232a});config[_0x5d67('0xc')]=_[_0x5d67('0xd')](config[_0x5d67('0xc')],{'host':_0x5d67('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5d67('0xc')]));require('./smsAccount.socket')[_0x5d67('0xf')](socket);function respondWithRpcPromise(_0x1dfdbd,_0xe002b,_0x494183){return new BPromise(function(_0x3a8246,_0x543886){return client[_0x5d67('0x10')](_0x1dfdbd,_0x494183)[_0x5d67('0x11')](function(_0xd206b8){logger[_0x5d67('0x12')](_0x5d67('0x13'),_0xe002b,'request\x20sent');logger['debug'](_0x5d67('0x14'),_0xe002b,_0x5d67('0x15'),JSON[_0x5d67('0x16')](_0xd206b8));if(_0xd206b8[_0x5d67('0x17')]){if(_0xd206b8['error'][_0x5d67('0x18')]===0x1f4){logger[_0x5d67('0x17')](_0x5d67('0x13'),_0xe002b,_0xd206b8[_0x5d67('0x17')][_0x5d67('0x19')]);return _0x543886(_0xd206b8[_0x5d67('0x17')][_0x5d67('0x19')]);}logger[_0x5d67('0x17')](_0x5d67('0x13'),_0xe002b,_0xd206b8[_0x5d67('0x17')][_0x5d67('0x19')]);return _0x3a8246(_0xd206b8[_0x5d67('0x17')][_0x5d67('0x19')]);}else{logger['info'](_0x5d67('0x13'),_0xe002b,'request\x20sent');_0x3a8246(_0xd206b8[_0x5d67('0x1a')][_0x5d67('0x19')]);}})[_0x5d67('0x1b')](function(_0x3d112b){logger[_0x5d67('0x17')](_0x5d67('0x13'),_0xe002b,_0x3d112b);_0x543886(_0x3d112b);});});}exports[_0x5d67('0x1c')]=function(_0x529f25){var _0x1c959c=this;return new Promise(function(_0x32a465,_0x33f141){return db[_0x5d67('0x1d')][_0x5d67('0x1e')]({'raw':_0x529f25[_0x5d67('0x1f')]?_0x529f25[_0x5d67('0x1f')][_0x5d67('0x20')]===undefined?!![]:![]:!![],'where':_0x529f25[_0x5d67('0x1f')]?_0x529f25[_0x5d67('0x1f')][_0x5d67('0x21')]||null:null,'attributes':_0x529f25[_0x5d67('0x1f')]?_0x529f25['options'][_0x5d67('0x22')]||null:null,'include':_0x529f25[_0x5d67('0x1f')]?_0x529f25[_0x5d67('0x1f')]['include']?_[_0x5d67('0x23')](_0x529f25[_0x5d67('0x1f')][_0x5d67('0x24')],function(_0x4982b3){return{'model':db[_0x4982b3[_0x5d67('0x25')]],'as':_0x4982b3['as'],'attributes':_0x4982b3[_0x5d67('0x22')],'include':_0x4982b3[_0x5d67('0x24')]?_[_0x5d67('0x23')](_0x4982b3['include'],function(_0x120c2b){return{'model':db[_0x120c2b[_0x5d67('0x25')]],'as':_0x120c2b['as'],'attributes':_0x120c2b[_0x5d67('0x22')],'include':_0x120c2b[_0x5d67('0x24')]?_[_0x5d67('0x23')](_0x120c2b[_0x5d67('0x24')],function(_0x445696){return{'model':db[_0x445696[_0x5d67('0x25')]],'as':_0x445696['as'],'attributes':_0x445696['attributes']};}):[]};}):[]};}):[]:[]})[_0x5d67('0x11')](function(_0x146fbd){logger['info']('ShowSmsAccount',_0x529f25);logger['debug']('ShowSmsAccount',_0x529f25,JSON[_0x5d67('0x16')](_0x146fbd));_0x32a465(_0x146fbd);})[_0x5d67('0x1b')](function(_0x393157){logger[_0x5d67('0x17')](_0x5d67('0x1c'),_0x393157[_0x5d67('0x19')],_0x529f25);_0x33f141(_0x1c959c[_0x5d67('0x17')](0x1f4,_0x393157[_0x5d67('0x19')]));});});};
\ No newline at end of file
+var _0x14c7=['result','catch','ShowSmsAccount','SmsAccount','find','options','raw','where','include','map','attributes','model','message','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','register','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x599e60,_0x5b6519){var _0x468e19=function(_0xcdfd97){while(--_0xcdfd97){_0x599e60['push'](_0x599e60['shift']());}};_0x468e19(++_0x5b6519);}(_0x14c7,0x1ee));var _0x714c=function(_0x4d660f,_0x39cbd2){_0x4d660f=_0x4d660f-0x0;var _0x2ead6=_0x14c7[_0x4d660f];return _0x2ead6;};'use strict';var _=require(_0x714c('0x0'));var util=require(_0x714c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x714c('0x2'));var fs=require('fs');var Redis=require(_0x714c('0x3'));var db=require(_0x714c('0x4'))['db'];var utils=require(_0x714c('0x5'));var logger=require(_0x714c('0x6'))(_0x714c('0x7'));var config=require(_0x714c('0x8'));var jayson=require(_0x714c('0x9'));var client=jayson[_0x714c('0xa')]['http']({'port':0x232a});config[_0x714c('0xb')]=_[_0x714c('0xc')](config[_0x714c('0xb')],{'host':_0x714c('0xd'),'port':0x18eb});var socket=require(_0x714c('0xe'))(new Redis(config[_0x714c('0xb')]));require('./smsAccount.socket')[_0x714c('0xf')](socket);function respondWithRpcPromise(_0x5e260a,_0x4d06ae,_0x14f9e5){return new BPromise(function(_0x243279,_0xc8831e){return client[_0x714c('0x10')](_0x5e260a,_0x14f9e5)[_0x714c('0x11')](function(_0x200f20){logger[_0x714c('0x12')](_0x714c('0x13'),_0x4d06ae,_0x714c('0x14'));logger['debug'](_0x714c('0x15'),_0x4d06ae,_0x714c('0x14'),JSON[_0x714c('0x16')](_0x200f20));if(_0x200f20[_0x714c('0x17')]){if(_0x200f20['error']['code']===0x1f4){logger[_0x714c('0x17')](_0x714c('0x13'),_0x4d06ae,_0x200f20[_0x714c('0x17')]['message']);return _0xc8831e(_0x200f20[_0x714c('0x17')]['message']);}logger[_0x714c('0x17')](_0x714c('0x13'),_0x4d06ae,_0x200f20['error']['message']);return _0x243279(_0x200f20[_0x714c('0x17')]['message']);}else{logger[_0x714c('0x12')]('SmsAccount,\x20%s,\x20%s',_0x4d06ae,_0x714c('0x14'));_0x243279(_0x200f20[_0x714c('0x18')]['message']);}})[_0x714c('0x19')](function(_0x214782){logger['error'](_0x714c('0x13'),_0x4d06ae,_0x214782);_0xc8831e(_0x214782);});});}exports[_0x714c('0x1a')]=function(_0x3ecb54){var _0x3b9cba=this;return new Promise(function(_0x246e56,_0x3370cb){return db[_0x714c('0x1b')][_0x714c('0x1c')]({'raw':_0x3ecb54[_0x714c('0x1d')]?_0x3ecb54['options'][_0x714c('0x1e')]===undefined?!![]:![]:!![],'where':_0x3ecb54['options']?_0x3ecb54[_0x714c('0x1d')][_0x714c('0x1f')]||null:null,'attributes':_0x3ecb54[_0x714c('0x1d')]?_0x3ecb54[_0x714c('0x1d')]['attributes']||null:null,'include':_0x3ecb54[_0x714c('0x1d')]?_0x3ecb54[_0x714c('0x1d')][_0x714c('0x20')]?_[_0x714c('0x21')](_0x3ecb54[_0x714c('0x1d')][_0x714c('0x20')],function(_0x838752){return{'model':db[_0x838752['model']],'as':_0x838752['as'],'attributes':_0x838752[_0x714c('0x22')],'include':_0x838752[_0x714c('0x20')]?_['map'](_0x838752[_0x714c('0x20')],function(_0x2890b0){return{'model':db[_0x2890b0[_0x714c('0x23')]],'as':_0x2890b0['as'],'attributes':_0x2890b0['attributes'],'include':_0x2890b0[_0x714c('0x20')]?_['map'](_0x2890b0[_0x714c('0x20')],function(_0x530c6e){return{'model':db[_0x530c6e[_0x714c('0x23')]],'as':_0x530c6e['as'],'attributes':_0x530c6e['attributes']};}):[]};}):[]};}):[]:[]})[_0x714c('0x11')](function(_0x51d622){logger[_0x714c('0x12')]('ShowSmsAccount',_0x3ecb54);logger['debug'](_0x714c('0x1a'),_0x3ecb54,JSON[_0x714c('0x16')](_0x51d622));_0x246e56(_0x51d622);})[_0x714c('0x19')](function(_0x190468){logger['error'](_0x714c('0x1a'),_0x190468[_0x714c('0x24')],_0x3ecb54);_0x3370cb(_0x3b9cba[_0x714c('0x17')](0x1f4,_0x190468[_0x714c('0x24')]));});});};
\ No newline at end of file
index 819f2f8..b9862ff 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(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0xa9e0[_0x5c3c0b];return _0x52ecd2;};'use strict';var SmsAccountEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){SmsAccountEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);SmsAccountEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbe200f,_0x4b50eb){_0xbe200f=_0xbe200f-0x0;var _0x192597=_0xa9e0[_0xbe200f];return _0x192597;};'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 e80cb1f..792cb83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['../../config/environment','./smsApplication.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x3c0b7d,_0xb0ac76){var _0x4596ee=function(_0x392b81){while(--_0x392b81){_0x3c0b7d['push'](_0x3c0b7d['shift']());}};_0x4596ee(++_0xb0ac76);}(_0x34e8,0x12c));var _0x834e=function(_0x17ae12,_0x3a331f){_0x17ae12=_0x17ae12-0x0;var _0x272ea2=_0x34e8[_0x17ae12];return _0x272ea2;};'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('0xf')]('/',auth[_0x834e('0xd')](),controller[_0x834e('0x10')]);router[_0x834e('0x11')](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0x12')]);router[_0x834e('0x13')](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0x14')]);module[_0x834e('0x15')]=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(_0x4de83e,_0x1f5a30){var _0x30f579=function(_0x10a76c){while(--_0x10a76c){_0x4de83e['push'](_0x4de83e['shift']());}};_0x30f579(++_0x1f5a30);}(_0x55ca,0x126));var _0xa55c=function(_0xcc26d2,_0x20c921){_0xcc26d2=_0xcc26d2-0x0;var _0x3841e2=_0x55ca[_0xcc26d2];return _0x3841e2;};'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 22b2d0b..e74d0f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc79=['STRING','*,*,*,*','sequelize','exports','INTEGER'];(function(_0x2aef6f,_0x273038){var _0x51e269=function(_0xc0b225){while(--_0xc0b225){_0x2aef6f['push'](_0x2aef6f['shift']());}};_0x51e269(++_0x273038);}(_0xdc79,0x1d3));var _0x9dc7=function(_0x3a7904,_0x15f0d0){_0x3a7904=_0x3a7904-0x0;var _0x90539f=_0xdc79[_0x3a7904];return _0x90539f;};'use strict';var Sequelize=require(_0x9dc7('0x0'));module[_0x9dc7('0x1')]={'priority':{'type':Sequelize[_0x9dc7('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x9dc7('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x9dc7('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x9dc7('0x4')}};
\ No newline at end of file
+var _0x5484=['INTEGER','STRING','noop','TEXT','*,*,*,*','exports'];(function(_0x24f31b,_0x44b8f3){var _0x488401=function(_0x204caf){while(--_0x204caf){_0x24f31b['push'](_0x24f31b['shift']());}};_0x488401(++_0x44b8f3);}(_0x5484,0x11f));var _0x4548=function(_0xdc6281,_0x327b68){_0xdc6281=_0xdc6281-0x0;var _0x21c3aa=_0x5484[_0xdc6281];return _0x21c3aa;};'use strict';var Sequelize=require('sequelize');module[_0x4548('0x0')]={'priority':{'type':Sequelize[_0x4548('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x4548('0x2')],'allowNull':![],'defaultValue':_0x4548('0x3')},'appdata':{'type':Sequelize[_0x4548('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x4548('0x2')],'defaultValue':_0x4548('0x5')}};
\ No newline at end of file
index b16de94..2b49dfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c1c=['request-promise','moment','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/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','index','map','SmsApplication','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','findAll','then','catch','show','params','includeAll','include','find','create','body','zip-dir'];(function(_0x33155c,_0x3fdde1){var _0x5becf7=function(_0x2f7a2f){while(--_0x2f7a2f){_0x33155c['push'](_0x33155c['shift']());}};_0x5becf7(++_0x3fdde1);}(_0x9c1c,0xe0));var _0xc9c1=function(_0x2e4cbf,_0x8763d3){_0x2e4cbf=_0x2e4cbf-0x0;var _0x52840f=_0x9c1c[_0x2e4cbf];return _0x52840f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xc9c1('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc9c1('0x1'));var moment=require(_0xc9c1('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xc9c1('0x3'));var util=require('util');var path=require(_0xc9c1('0x4'));var sox=require('sox');var csv=require(_0xc9c1('0x5'));var ejs=require(_0xc9c1('0x6'));var fs=require('fs');var fs_extra=require(_0xc9c1('0x7'));var _=require(_0xc9c1('0x8'));var squel=require(_0xc9c1('0x9'));var crypto=require(_0xc9c1('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xc9c1('0xb'));var toCsv=require(_0xc9c1('0x5'));var querystring=require(_0xc9c1('0xc'));var Papa=require(_0xc9c1('0xd'));var Redis=require(_0xc9c1('0xe'));var authService=require(_0xc9c1('0xf'));var qs=require(_0xc9c1('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc9c1('0x11'));var logger=require(_0xc9c1('0x12'))(_0xc9c1('0x13'));var utils=require('../../config/utils');var config=require(_0xc9c1('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xc9c1('0x15'))['db'];function respondWithStatusCode(_0x551db2,_0xfa89fc){_0xfa89fc=_0xfa89fc||0xcc;return function(_0x218f39){if(_0x218f39){return _0x551db2[_0xc9c1('0x16')](_0xfa89fc);}return _0x551db2['status'](_0xfa89fc)[_0xc9c1('0x17')]();};}function respondWithResult(_0x369bd7,_0x1830f1){_0x1830f1=_0x1830f1||0xc8;return function(_0x31a294){if(_0x31a294){return _0x369bd7[_0xc9c1('0x18')](_0x1830f1)[_0xc9c1('0x19')](_0x31a294);}};}function respondWithFilteredResult(_0x4143bf,_0x3c766e){return function(_0x2a0bec){if(_0x2a0bec){var _0x3ad5fd=typeof _0x3c766e[_0xc9c1('0x1a')]===_0xc9c1('0x1b')&&typeof _0x3c766e[_0xc9c1('0x1c')]===_0xc9c1('0x1b');var _0x483bc9=_0x2a0bec[_0xc9c1('0x1d')];var _0x209ae7=_0x3ad5fd?0x0:_0x3c766e[_0xc9c1('0x1a')];var _0x3e372a=_0x3ad5fd?_0x2a0bec[_0xc9c1('0x1d')]:_0x3c766e['offset']+_0x3c766e[_0xc9c1('0x1c')];var _0x1bcff0;if(_0x3e372a>=_0x483bc9){_0x3e372a=_0x483bc9;_0x1bcff0=0xc8;}else{_0x1bcff0=0xce;}_0x4143bf[_0xc9c1('0x18')](_0x1bcff0);return _0x4143bf[_0xc9c1('0x1e')](_0xc9c1('0x1f'),_0x209ae7+'-'+_0x3e372a+'/'+_0x483bc9)['json'](_0x2a0bec);}return null;};}function patchUpdates(_0x259d06){return function(_0x44f6f8){try{jsonpatch[_0xc9c1('0x20')](_0x44f6f8,_0x259d06,!![]);}catch(_0x3fbeef){return BPromise[_0xc9c1('0x21')](_0x3fbeef);}return _0x44f6f8[_0xc9c1('0x22')]();};}function saveUpdates(_0x45b117,_0x335f3a){return function(_0x5a7026){if(_0x5a7026){return _0x5a7026[_0xc9c1('0x23')](_0x45b117)['then'](function(_0x3d6e7d){return _0x3d6e7d;});}return null;};}function removeEntity(_0x3caf92,_0x40988a){return function(_0x5f1371){if(_0x5f1371){return _0x5f1371[_0xc9c1('0x24')]()['then'](function(){_0x3caf92['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xb6cc34,_0xdfb794){return function(_0x19bc5c){if(!_0x19bc5c){_0xb6cc34[_0xc9c1('0x16')](0x194);}return _0x19bc5c;};}function handleError(_0x2c2833,_0x1a0fe2){_0x1a0fe2=_0x1a0fe2||0x1f4;return function(_0x18b2bb){logger['error'](_0x18b2bb[_0xc9c1('0x25')]);if(_0x18b2bb[_0xc9c1('0x26')]){delete _0x18b2bb[_0xc9c1('0x26')];}_0x2c2833[_0xc9c1('0x18')](_0x1a0fe2)[_0xc9c1('0x27')](_0x18b2bb);};}exports[_0xc9c1('0x28')]=function(_0x2978c8,_0x37ae2a){var _0x389520={},_0x410d83={},_0x184c64={'count':0x0,'rows':[]};var _0x2fc180=_[_0xc9c1('0x29')](db[_0xc9c1('0x2a')][_0xc9c1('0x2b')],function(_0x420ad1){return{'name':_0x420ad1[_0xc9c1('0x2c')],'type':_0x420ad1['type'][_0xc9c1('0x2d')]};});_0x410d83[_0xc9c1('0x2e')]=_[_0xc9c1('0x29')](_0x2fc180,'name');_0x410d83[_0xc9c1('0x2f')]=_[_0xc9c1('0x30')](_0x2978c8[_0xc9c1('0x2f')]);_0x410d83[_0xc9c1('0x31')]=_[_0xc9c1('0x32')](_0x410d83['model'],_0x410d83[_0xc9c1('0x2f')]);_0x389520[_0xc9c1('0x33')]=_[_0xc9c1('0x32')](_0x410d83[_0xc9c1('0x2e')],qs[_0xc9c1('0x34')](_0x2978c8['query'][_0xc9c1('0x34')]));_0x389520[_0xc9c1('0x33')]=_0x389520[_0xc9c1('0x33')][_0xc9c1('0x35')]?_0x389520[_0xc9c1('0x33')]:_0x410d83['model'];if(!_0x2978c8['query'][_0xc9c1('0x36')](_0xc9c1('0x37'))){_0x389520[_0xc9c1('0x1c')]=qs['limit'](_0x2978c8[_0xc9c1('0x2f')][_0xc9c1('0x1c')]);_0x389520['offset']=qs[_0xc9c1('0x1a')](_0x2978c8[_0xc9c1('0x2f')][_0xc9c1('0x1a')]);}_0x389520[_0xc9c1('0x38')]=qs[_0xc9c1('0x39')](_0x2978c8['query']['sort']);_0x389520[_0xc9c1('0x3a')]=qs[_0xc9c1('0x31')](_[_0xc9c1('0x3b')](_0x2978c8[_0xc9c1('0x2f')],_0x410d83[_0xc9c1('0x31')]),_0x2fc180);if(_0x2978c8[_0xc9c1('0x2f')][_0xc9c1('0x3c')]){_0x389520[_0xc9c1('0x3a')]=_[_0xc9c1('0x3d')](_0x389520['where'],{'$or':_[_0xc9c1('0x29')](_0x2fc180,function(_0x597ab6){if(_0x597ab6[_0xc9c1('0x3e')]!==_0xc9c1('0x3f')){var _0x285a9b={};_0x285a9b[_0x597ab6[_0xc9c1('0x26')]]={'$like':'%'+_0x2978c8[_0xc9c1('0x2f')]['filter']+'%'};return _0x285a9b;}})});}_0x389520=_['merge']({},_0x389520,_0x2978c8[_0xc9c1('0x40')]);var _0x346c5b={'where':_0x389520['where']};return db[_0xc9c1('0x2a')][_0xc9c1('0x1d')](_0x346c5b)['then'](function(_0x348f75){_0x184c64[_0xc9c1('0x1d')]=_0x348f75;if(_0x2978c8[_0xc9c1('0x2f')]['includeAll']){_0x389520['include']=[{'all':!![]}];}return db[_0xc9c1('0x2a')][_0xc9c1('0x41')](_0x389520);})[_0xc9c1('0x42')](function(_0x11a118){_0x184c64['rows']=_0x11a118;return _0x184c64;})['then'](respondWithFilteredResult(_0x37ae2a,_0x389520))[_0xc9c1('0x43')](handleError(_0x37ae2a,null));};exports[_0xc9c1('0x44')]=function(_0x5583dd,_0x79850d){var _0x39ae57={'raw':!![],'where':{'id':_0x5583dd[_0xc9c1('0x45')]['id']}},_0x4a693a={};_0x4a693a['model']=_[_0xc9c1('0x30')](db[_0xc9c1('0x2a')][_0xc9c1('0x2b')]);_0x4a693a['query']=_['keys'](_0x5583dd[_0xc9c1('0x2f')]);_0x4a693a['filters']=_[_0xc9c1('0x32')](_0x4a693a[_0xc9c1('0x2e')],_0x4a693a[_0xc9c1('0x2f')]);_0x39ae57[_0xc9c1('0x33')]=_[_0xc9c1('0x32')](_0x4a693a[_0xc9c1('0x2e')],qs[_0xc9c1('0x34')](_0x5583dd[_0xc9c1('0x2f')]['fields']));_0x39ae57['attributes']=_0x39ae57[_0xc9c1('0x33')][_0xc9c1('0x35')]?_0x39ae57['attributes']:_0x4a693a[_0xc9c1('0x2e')];if(_0x5583dd[_0xc9c1('0x2f')][_0xc9c1('0x46')]){_0x39ae57[_0xc9c1('0x47')]=[{'all':!![]}];}_0x39ae57=_[_0xc9c1('0x3d')]({},_0x39ae57,_0x5583dd['options']);return db['SmsApplication'][_0xc9c1('0x48')](_0x39ae57)[_0xc9c1('0x42')](handleEntityNotFound(_0x79850d,null))[_0xc9c1('0x42')](respondWithResult(_0x79850d,null))[_0xc9c1('0x43')](handleError(_0x79850d,null));};exports[_0xc9c1('0x49')]=function(_0x59ec77,_0x3796e0){return db[_0xc9c1('0x2a')][_0xc9c1('0x49')](_0x59ec77[_0xc9c1('0x4a')],{})['then'](respondWithResult(_0x3796e0,0xc9))['catch'](handleError(_0x3796e0,null));};exports['update']=function(_0x5383f5,_0x4f2231){if(_0x5383f5['body']['id']){delete _0x5383f5[_0xc9c1('0x4a')]['id'];}return db[_0xc9c1('0x2a')]['find']({'where':{'id':_0x5383f5[_0xc9c1('0x45')]['id']}})[_0xc9c1('0x42')](handleEntityNotFound(_0x4f2231,null))[_0xc9c1('0x42')](saveUpdates(_0x5383f5[_0xc9c1('0x4a')],null))['then'](respondWithResult(_0x4f2231,null))[_0xc9c1('0x43')](handleError(_0x4f2231,null));};exports[_0xc9c1('0x24')]=function(_0x5ba0df,_0x26129c){return db['SmsApplication'][_0xc9c1('0x48')]({'where':{'id':_0x5ba0df[_0xc9c1('0x45')]['id']}})['then'](handleEntityNotFound(_0x26129c,null))[_0xc9c1('0x42')](removeEntity(_0x26129c,null))[_0xc9c1('0x43')](handleError(_0x26129c,null));};
\ No newline at end of file
+var _0xf435=['../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','update','then','error','stack','name','send','map','SmsApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','create','body','find','destroy','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service'];(function(_0x2cb111,_0x3c5f83){var _0x52d31d=function(_0x39395e){while(--_0x39395e){_0x2cb111['push'](_0x2cb111['shift']());}};_0x52d31d(++_0x3c5f83);}(_0xf435,0x1df));var _0x5f43=function(_0x447e36,_0x5078a7){_0x447e36=_0x447e36-0x0;var _0x95f06=_0xf435[_0x447e36];return _0x95f06;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5f43('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5f43('0x1'));var rp=require(_0x5f43('0x2'));var moment=require(_0x5f43('0x3'));var BPromise=require(_0x5f43('0x4'));var Mustache=require(_0x5f43('0x5'));var util=require(_0x5f43('0x6'));var path=require(_0x5f43('0x7'));var sox=require(_0x5f43('0x8'));var csv=require(_0x5f43('0x9'));var ejs=require(_0x5f43('0xa'));var fs=require('fs');var fs_extra=require(_0x5f43('0xb'));var _=require('lodash');var squel=require(_0x5f43('0xc'));var crypto=require('crypto');var jsforce=require(_0x5f43('0xd'));var deskjs=require(_0x5f43('0xe'));var toCsv=require(_0x5f43('0x9'));var querystring=require(_0x5f43('0xf'));var Papa=require('papaparse');var Redis=require(_0x5f43('0x10'));var authService=require(_0x5f43('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x5f43('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x5f43('0x13'));var utils=require('../../config/utils');var config=require(_0x5f43('0x14'));var licenseUtil=require(_0x5f43('0x15'));var db=require(_0x5f43('0x16'))['db'];function respondWithStatusCode(_0xce46a8,_0x547da5){_0x547da5=_0x547da5||0xcc;return function(_0x4a6379){if(_0x4a6379){return _0xce46a8[_0x5f43('0x17')](_0x547da5);}return _0xce46a8[_0x5f43('0x18')](_0x547da5)[_0x5f43('0x19')]();};}function respondWithResult(_0x3a9227,_0x19277e){_0x19277e=_0x19277e||0xc8;return function(_0x46dbae){if(_0x46dbae){return _0x3a9227[_0x5f43('0x18')](_0x19277e)[_0x5f43('0x1a')](_0x46dbae);}};}function respondWithFilteredResult(_0xa92414,_0x4b1f2f){return function(_0x4193d1){if(_0x4193d1){var _0x3bd586=typeof _0x4b1f2f[_0x5f43('0x1b')]===_0x5f43('0x1c')&&typeof _0x4b1f2f[_0x5f43('0x1d')]==='undefined';var _0xa065b2=_0x4193d1[_0x5f43('0x1e')];var _0x5aff0d=_0x3bd586?0x0:_0x4b1f2f[_0x5f43('0x1b')];var _0x2f13df=_0x3bd586?_0x4193d1[_0x5f43('0x1e')]:_0x4b1f2f['offset']+_0x4b1f2f['limit'];var _0x231e49;if(_0x2f13df>=_0xa065b2){_0x2f13df=_0xa065b2;_0x231e49=0xc8;}else{_0x231e49=0xce;}_0xa92414[_0x5f43('0x18')](_0x231e49);return _0xa92414['set'](_0x5f43('0x1f'),_0x5aff0d+'-'+_0x2f13df+'/'+_0xa065b2)['json'](_0x4193d1);}return null;};}function patchUpdates(_0x2a1cfe){return function(_0x2e75a5){try{jsonpatch[_0x5f43('0x20')](_0x2e75a5,_0x2a1cfe,!![]);}catch(_0x3ed05c){return BPromise['reject'](_0x3ed05c);}return _0x2e75a5['save']();};}function saveUpdates(_0x830d1c,_0x1421a4){return function(_0x17cff8){if(_0x17cff8){return _0x17cff8[_0x5f43('0x21')](_0x830d1c)[_0x5f43('0x22')](function(_0x3efd2c){return _0x3efd2c;});}return null;};}function removeEntity(_0x543cb9,_0x10d71c){return function(_0xf5b4af){if(_0xf5b4af){return _0xf5b4af['destroy']()[_0x5f43('0x22')](function(){_0x543cb9[_0x5f43('0x18')](0xcc)[_0x5f43('0x19')]();});}};}function handleEntityNotFound(_0x1204c1,_0x4c2e5d){return function(_0x3af6d3){if(!_0x3af6d3){_0x1204c1[_0x5f43('0x17')](0x194);}return _0x3af6d3;};}function handleError(_0xc8409c,_0x359d39){_0x359d39=_0x359d39||0x1f4;return function(_0x568bd9){logger[_0x5f43('0x23')](_0x568bd9[_0x5f43('0x24')]);if(_0x568bd9[_0x5f43('0x25')]){delete _0x568bd9[_0x5f43('0x25')];}_0xc8409c[_0x5f43('0x18')](_0x359d39)[_0x5f43('0x26')](_0x568bd9);};}exports['index']=function(_0x23a986,_0x3792be){var _0x153d0c={},_0x2ccb9c={},_0xa7a8f={'count':0x0,'rows':[]};var _0x12f13b=_[_0x5f43('0x27')](db[_0x5f43('0x28')][_0x5f43('0x29')],function(_0xc163da){return{'name':_0xc163da[_0x5f43('0x2a')],'type':_0xc163da[_0x5f43('0x2b')][_0x5f43('0x2c')]};});_0x2ccb9c[_0x5f43('0x2d')]=_[_0x5f43('0x27')](_0x12f13b,_0x5f43('0x25'));_0x2ccb9c[_0x5f43('0x2e')]=_[_0x5f43('0x2f')](_0x23a986[_0x5f43('0x2e')]);_0x2ccb9c[_0x5f43('0x30')]=_['intersection'](_0x2ccb9c[_0x5f43('0x2d')],_0x2ccb9c[_0x5f43('0x2e')]);_0x153d0c['attributes']=_[_0x5f43('0x31')](_0x2ccb9c[_0x5f43('0x2d')],qs['fields'](_0x23a986['query'][_0x5f43('0x32')]));_0x153d0c['attributes']=_0x153d0c[_0x5f43('0x33')][_0x5f43('0x34')]?_0x153d0c[_0x5f43('0x33')]:_0x2ccb9c[_0x5f43('0x2d')];if(!_0x23a986[_0x5f43('0x2e')][_0x5f43('0x35')](_0x5f43('0x36'))){_0x153d0c[_0x5f43('0x1d')]=qs[_0x5f43('0x1d')](_0x23a986['query'][_0x5f43('0x1d')]);_0x153d0c[_0x5f43('0x1b')]=qs[_0x5f43('0x1b')](_0x23a986[_0x5f43('0x2e')][_0x5f43('0x1b')]);}_0x153d0c['order']=qs[_0x5f43('0x37')](_0x23a986['query'][_0x5f43('0x37')]);_0x153d0c[_0x5f43('0x38')]=qs['filters'](_['pick'](_0x23a986[_0x5f43('0x2e')],_0x2ccb9c['filters']),_0x12f13b);if(_0x23a986['query'][_0x5f43('0x39')]){_0x153d0c[_0x5f43('0x38')]=_[_0x5f43('0x3a')](_0x153d0c[_0x5f43('0x38')],{'$or':_['map'](_0x12f13b,function(_0x41ae6c){if(_0x41ae6c[_0x5f43('0x2b')]!==_0x5f43('0x3b')){var _0x2b9814={};_0x2b9814[_0x41ae6c[_0x5f43('0x25')]]={'$like':'%'+_0x23a986[_0x5f43('0x2e')][_0x5f43('0x39')]+'%'};return _0x2b9814;}})});}_0x153d0c=_['merge']({},_0x153d0c,_0x23a986[_0x5f43('0x3c')]);var _0x2e086={'where':_0x153d0c['where']};return db[_0x5f43('0x28')][_0x5f43('0x1e')](_0x2e086)['then'](function(_0x58a473){_0xa7a8f[_0x5f43('0x1e')]=_0x58a473;if(_0x23a986[_0x5f43('0x2e')][_0x5f43('0x3d')]){_0x153d0c[_0x5f43('0x3e')]=[{'all':!![]}];}return db[_0x5f43('0x28')][_0x5f43('0x3f')](_0x153d0c);})[_0x5f43('0x22')](function(_0x3b22ab){_0xa7a8f['rows']=_0x3b22ab;return _0xa7a8f;})[_0x5f43('0x22')](respondWithFilteredResult(_0x3792be,_0x153d0c))[_0x5f43('0x40')](handleError(_0x3792be,null));};exports[_0x5f43('0x41')]=function(_0x113aac,_0x41cf38){var _0x4e9f72={'raw':!![],'where':{'id':_0x113aac[_0x5f43('0x42')]['id']}},_0xdbd347={};_0xdbd347['model']=_[_0x5f43('0x2f')](db[_0x5f43('0x28')][_0x5f43('0x29')]);_0xdbd347[_0x5f43('0x2e')]=_[_0x5f43('0x2f')](_0x113aac[_0x5f43('0x2e')]);_0xdbd347[_0x5f43('0x30')]=_[_0x5f43('0x31')](_0xdbd347[_0x5f43('0x2d')],_0xdbd347['query']);_0x4e9f72[_0x5f43('0x33')]=_[_0x5f43('0x31')](_0xdbd347[_0x5f43('0x2d')],qs[_0x5f43('0x32')](_0x113aac[_0x5f43('0x2e')][_0x5f43('0x32')]));_0x4e9f72[_0x5f43('0x33')]=_0x4e9f72[_0x5f43('0x33')][_0x5f43('0x34')]?_0x4e9f72[_0x5f43('0x33')]:_0xdbd347[_0x5f43('0x2d')];if(_0x113aac['query']['includeAll']){_0x4e9f72[_0x5f43('0x3e')]=[{'all':!![]}];}_0x4e9f72=_[_0x5f43('0x3a')]({},_0x4e9f72,_0x113aac[_0x5f43('0x3c')]);return db[_0x5f43('0x28')]['find'](_0x4e9f72)[_0x5f43('0x22')](handleEntityNotFound(_0x41cf38,null))['then'](respondWithResult(_0x41cf38,null))[_0x5f43('0x40')](handleError(_0x41cf38,null));};exports[_0x5f43('0x43')]=function(_0x50a1b4,_0x4e933c){return db[_0x5f43('0x28')]['create'](_0x50a1b4[_0x5f43('0x44')],{})['then'](respondWithResult(_0x4e933c,0xc9))[_0x5f43('0x40')](handleError(_0x4e933c,null));};exports[_0x5f43('0x21')]=function(_0x57e800,_0xc38c43){if(_0x57e800[_0x5f43('0x44')]['id']){delete _0x57e800['body']['id'];}return db[_0x5f43('0x28')][_0x5f43('0x45')]({'where':{'id':_0x57e800[_0x5f43('0x42')]['id']}})[_0x5f43('0x22')](handleEntityNotFound(_0xc38c43,null))[_0x5f43('0x22')](saveUpdates(_0x57e800[_0x5f43('0x44')],null))[_0x5f43('0x22')](respondWithResult(_0xc38c43,null))[_0x5f43('0x40')](handleError(_0xc38c43,null));};exports[_0x5f43('0x46')]=function(_0x20da5a,_0x5df5e6){return db[_0x5f43('0x28')][_0x5f43('0x45')]({'where':{'id':_0x20da5a[_0x5f43('0x42')]['id']}})[_0x5f43('0x22')](handleEntityNotFound(_0x5df5e6,null))['then'](removeEntity(_0x5df5e6,null))[_0x5f43('0x40')](handleError(_0x5df5e6,null));};
\ No newline at end of file
index 80b4e40..887ceae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6ef=['utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','exports','define','SmsApplication'];(function(_0x289689,_0x19a641){var _0x4f5e29=function(_0x20dcf5){while(--_0x20dcf5){_0x289689['push'](_0x289689['shift']());}};_0x4f5e29(++_0x19a641);}(_0xf6ef,0x115));var _0xff6e=function(_0x457b64,_0x49a219){_0x457b64=_0x457b64-0x0;var _0x437111=_0xf6ef[_0x457b64];return _0x437111;};'use strict';var _=require(_0xff6e('0x0'));var util=require(_0xff6e('0x1'));var logger=require(_0xff6e('0x2'))('api');var moment=require(_0xff6e('0x3'));var BPromise=require(_0xff6e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xff6e('0x5'));var rimraf=require(_0xff6e('0x6'));var config=require(_0xff6e('0x7'));var attributes=require('./smsApplication.attributes');module[_0xff6e('0x8')]=function(_0x5ee7bc,_0x425473){return _0x5ee7bc[_0xff6e('0x9')](_0xff6e('0xa'),attributes,{'tableName':'sms_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xff6e('0xb')});};
\ No newline at end of file
+var _0xac8b=['sms_applications','utf8mb4_unicode_ci','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsApplication.attributes','exports','define','SmsApplication'];(function(_0x48e682,_0x50d65b){var _0x148afc=function(_0x4c7bd4){while(--_0x4c7bd4){_0x48e682['push'](_0x48e682['shift']());}};_0x148afc(++_0x50d65b);}(_0xac8b,0x1c2));var _0xbac8=function(_0x45f951,_0x2750c8){_0x45f951=_0x45f951-0x0;var _0x24756c=_0xac8b[_0x45f951];return _0x24756c;};'use strict';var _=require('lodash');var util=require(_0xbac8('0x0'));var logger=require(_0xbac8('0x1'))('api');var moment=require(_0xbac8('0x2'));var BPromise=require(_0xbac8('0x3'));var rp=require(_0xbac8('0x4'));var fs=require('fs');var path=require(_0xbac8('0x5'));var rimraf=require(_0xbac8('0x6'));var config=require(_0xbac8('0x7'));var attributes=require(_0xbac8('0x8'));module[_0xbac8('0x9')]=function(_0x329e46,_0x2c9733){return _0x329e46[_0xbac8('0xa')](_0xbac8('0xb'),attributes,{'tableName':_0xbac8('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xbac8('0xd')});};
\ No newline at end of file
index e041d17..ac50ef1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3746=['catch','lodash','util','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','then','info','SmsApplication,\x20%s,\x20%s','request\x20sent','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0xe51596,_0x314d5b){var _0x22c705=function(_0x4c6f94){while(--_0x4c6f94){_0xe51596['push'](_0xe51596['shift']());}};_0x22c705(++_0x314d5b);}(_0x3746,0xa9));var _0x6374=function(_0x3b1553,_0x6d7c74){_0x3b1553=_0x3b1553-0x0;var _0x28cfff=_0x3746[_0x3b1553];return _0x28cfff;};'use strict';var _=require(_0x6374('0x0'));var util=require(_0x6374('0x1'));var moment=require('moment');var BPromise=require(_0x6374('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6374('0x3'));var db=require(_0x6374('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x6374('0x5'));var config=require(_0x6374('0x6'));var jayson=require(_0x6374('0x7'));var client=jayson[_0x6374('0x8')][_0x6374('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x46841a,_0x2e8717,_0x295cf9){return new BPromise(function(_0x330181,_0x30c9ac){return client['request'](_0x46841a,_0x295cf9)[_0x6374('0xa')](function(_0x5bd695){logger[_0x6374('0xb')](_0x6374('0xc'),_0x2e8717,_0x6374('0xd'));logger['debug'](_0x6374('0xe'),_0x2e8717,_0x6374('0xd'),JSON[_0x6374('0xf')](_0x5bd695));if(_0x5bd695['error']){if(_0x5bd695[_0x6374('0x10')][_0x6374('0x11')]===0x1f4){logger['error'](_0x6374('0xc'),_0x2e8717,_0x5bd695[_0x6374('0x10')][_0x6374('0x12')]);return _0x30c9ac(_0x5bd695['error'][_0x6374('0x12')]);}logger[_0x6374('0x10')](_0x6374('0xc'),_0x2e8717,_0x5bd695['error'][_0x6374('0x12')]);return _0x330181(_0x5bd695['error']['message']);}else{logger[_0x6374('0xb')]('SmsApplication,\x20%s,\x20%s',_0x2e8717,_0x6374('0xd'));_0x330181(_0x5bd695[_0x6374('0x13')][_0x6374('0x12')]);}})[_0x6374('0x14')](function(_0x287981){logger[_0x6374('0x10')](_0x6374('0xc'),_0x2e8717,_0x287981);_0x30c9ac(_0x287981);});});}
\ No newline at end of file
+var _0xd945=['debug','request\x20sent','stringify','error','code','message','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','SmsApplication,\x20%s,\x20%s'];(function(_0x5db2f5,_0x3b8114){var _0x2e8b6c=function(_0x7c1a7f){while(--_0x7c1a7f){_0x5db2f5['push'](_0x5db2f5['shift']());}};_0x2e8b6c(++_0x3b8114);}(_0xd945,0x84));var _0x5d94=function(_0x5c139e,_0x39620d){_0x5c139e=_0x5c139e-0x0;var _0x532106=_0xd945[_0x5c139e];return _0x532106;};'use strict';var _=require(_0x5d94('0x0'));var util=require(_0x5d94('0x1'));var moment=require(_0x5d94('0x2'));var BPromise=require('bluebird');var rs=require(_0x5d94('0x3'));var fs=require('fs');var Redis=require(_0x5d94('0x4'));var db=require(_0x5d94('0x5'))['db'];var utils=require(_0x5d94('0x6'));var logger=require(_0x5d94('0x7'))('rpc');var config=require(_0x5d94('0x8'));var jayson=require(_0x5d94('0x9'));var client=jayson[_0x5d94('0xa')][_0x5d94('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3635a6,_0x54af94,_0x430607){return new BPromise(function(_0x34fa30,_0x1117dc){return client['request'](_0x3635a6,_0x430607)[_0x5d94('0xc')](function(_0x3dd79e){logger[_0x5d94('0xd')](_0x5d94('0xe'),_0x54af94,'request\x20sent');logger[_0x5d94('0xf')]('SmsApplication,\x20%s,\x20%s,\x20%s',_0x54af94,_0x5d94('0x10'),JSON[_0x5d94('0x11')](_0x3dd79e));if(_0x3dd79e[_0x5d94('0x12')]){if(_0x3dd79e[_0x5d94('0x12')][_0x5d94('0x13')]===0x1f4){logger[_0x5d94('0x12')](_0x5d94('0xe'),_0x54af94,_0x3dd79e[_0x5d94('0x12')][_0x5d94('0x14')]);return _0x1117dc(_0x3dd79e[_0x5d94('0x12')]['message']);}logger[_0x5d94('0x12')](_0x5d94('0xe'),_0x54af94,_0x3dd79e['error'][_0x5d94('0x14')]);return _0x34fa30(_0x3dd79e[_0x5d94('0x12')][_0x5d94('0x14')]);}else{logger[_0x5d94('0xd')](_0x5d94('0xe'),_0x54af94,_0x5d94('0x10'));_0x34fa30(_0x3dd79e['result']['message']);}})['catch'](function(_0x38d3c7){logger[_0x5d94('0x12')](_0x5d94('0xe'),_0x54af94,_0x38d3c7);_0x1117dc(_0x38d3c7);});});}
\ No newline at end of file
index 0b26533..00744fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4483=['isAuthenticated','index','/describe','describe','show','/:id/messages','getMessages','/:id/download','download','post','addMessage','/:id/tags','tracked','sms','addTags','put','/:id','smsinteraction:update','update','delete','smsinteraction:destroy','removeTags','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsInteraction.controller','get'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4483,0x1a3));var _0x3448=function(_0x50d848,_0x33fcf9){_0x50d848=_0x50d848-0x0;var _0x334fd4=_0x4483[_0x50d848];return _0x334fd4;};'use strict';var multer=require(_0x3448('0x0'));var util=require(_0x3448('0x1'));var path=require(_0x3448('0x2'));var timeout=require('connect-timeout');var express=require(_0x3448('0x3'));var router=express[_0x3448('0x4')]();var fs_extra=require(_0x3448('0x5'));var auth=require(_0x3448('0x6'));var interaction=require(_0x3448('0x7'));var config=require('../../config/environment');var controller=require(_0x3448('0x8'));router[_0x3448('0x9')]('/',auth[_0x3448('0xa')](),controller[_0x3448('0xb')]);router[_0x3448('0x9')](_0x3448('0xc'),auth[_0x3448('0xa')](),controller[_0x3448('0xd')]);router['get']('/:id',auth[_0x3448('0xa')](),controller[_0x3448('0xe')]);router[_0x3448('0x9')](_0x3448('0xf'),auth[_0x3448('0xa')](),controller[_0x3448('0x10')]);router[_0x3448('0x9')](_0x3448('0x11'),auth[_0x3448('0xa')](),controller[_0x3448('0x12')]);router[_0x3448('0x13')]('/',auth['isAuthenticated'](),controller['create']);router[_0x3448('0x13')](_0x3448('0xf'),auth['isAuthenticated'](),controller[_0x3448('0x14')]);router[_0x3448('0x13')](_0x3448('0x15'),auth['isAuthenticated'](),interaction[_0x3448('0x16')](_0x3448('0x17'),'smsinteraction:addtags'),controller[_0x3448('0x18')]);router[_0x3448('0x19')](_0x3448('0x1a'),auth['isAuthenticated'](),interaction[_0x3448('0x16')](_0x3448('0x17'),_0x3448('0x1b')),controller[_0x3448('0x1c')]);router[_0x3448('0x1d')](_0x3448('0x1a'),auth[_0x3448('0xa')](),interaction[_0x3448('0x16')]('sms',_0x3448('0x1e')),controller['destroy']);router['delete']('/:id/tags',auth[_0x3448('0xa')](),controller[_0x3448('0x1f')]);module[_0x3448('0x20')]=router;
\ No newline at end of file
+var _0x9348=['addMessage','/:id/tags','sms','smsinteraction:addtags','addTags','put','/:id','tracked','update','delete','smsinteraction:destroy','removeTags','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./smsInteraction.controller','get','isAuthenticated','index','describe','/:id/messages','getMessages','/:id/download','download','post','create'];(function(_0x3747ae,_0x408e61){var _0x339035=function(_0x83be87){while(--_0x83be87){_0x3747ae['push'](_0x3747ae['shift']());}};_0x339035(++_0x408e61);}(_0x9348,0x10d));var _0x8934=function(_0x480bbd,_0x1cfb35){_0x480bbd=_0x480bbd-0x0;var _0x247460=_0x9348[_0x480bbd];return _0x247460;};'use strict';var multer=require(_0x8934('0x0'));var util=require(_0x8934('0x1'));var path=require(_0x8934('0x2'));var timeout=require(_0x8934('0x3'));var express=require(_0x8934('0x4'));var router=express['Router']();var fs_extra=require(_0x8934('0x5'));var auth=require(_0x8934('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8934('0x7'));var controller=require(_0x8934('0x8'));router[_0x8934('0x9')]('/',auth[_0x8934('0xa')](),controller[_0x8934('0xb')]);router[_0x8934('0x9')]('/describe',auth[_0x8934('0xa')](),controller[_0x8934('0xc')]);router[_0x8934('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router['get'](_0x8934('0xd'),auth['isAuthenticated'](),controller[_0x8934('0xe')]);router[_0x8934('0x9')](_0x8934('0xf'),auth[_0x8934('0xa')](),controller[_0x8934('0x10')]);router[_0x8934('0x11')]('/',auth[_0x8934('0xa')](),controller[_0x8934('0x12')]);router['post'](_0x8934('0xd'),auth[_0x8934('0xa')](),controller[_0x8934('0x13')]);router[_0x8934('0x11')](_0x8934('0x14'),auth[_0x8934('0xa')](),interaction['tracked'](_0x8934('0x15'),_0x8934('0x16')),controller[_0x8934('0x17')]);router[_0x8934('0x18')](_0x8934('0x19'),auth[_0x8934('0xa')](),interaction[_0x8934('0x1a')](_0x8934('0x15'),'smsinteraction:update'),controller[_0x8934('0x1b')]);router[_0x8934('0x1c')](_0x8934('0x19'),auth['isAuthenticated'](),interaction['tracked']('sms',_0x8934('0x1d')),controller['destroy']);router[_0x8934('0x1c')](_0x8934('0x14'),auth[_0x8934('0xa')](),controller[_0x8934('0x1e')]);module[_0x8934('0x1f')]=router;
\ No newline at end of file
index 5bc4858..131f31a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c29=['ENUM','out','BOOLEAN','exports','DATE','STRING'];(function(_0x496046,_0x6d5fd9){var _0x5f3e3b=function(_0x11d815){while(--_0x11d815){_0x496046['push'](_0x496046['shift']());}};_0x5f3e3b(++_0x6d5fd9);}(_0x0c29,0xb7));var _0x90c2=function(_0x385eb1,_0x497a94){_0x385eb1=_0x385eb1-0x0;var _0x5d40eb=_0x0c29[_0x385eb1];return _0x5d40eb;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0x90c2('0x0')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x90c2('0x1')]},'disposition':{'type':Sequelize[_0x90c2('0x2')]},'secondDisposition':{'type':Sequelize[_0x90c2('0x2')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x90c2('0x2')]},'read1stAt':{'type':Sequelize[_0x90c2('0x1')]},'firstMsgDirection':{'type':Sequelize[_0x90c2('0x3')]('in',_0x90c2('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x90c2('0x1')]},'lastMsgDirection':{'type':Sequelize[_0x90c2('0x3')]('in',_0x90c2('0x4')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x90c2('0x5')],'defaultValue':![]}};
\ No newline at end of file
+var _0x5549=['DATE','STRING','out','ENUM','sequelize','moment','exports','BOOLEAN'];(function(_0x57f3c2,_0x2d96d4){var _0x15b27c=function(_0x1b6c05){while(--_0x1b6c05){_0x57f3c2['push'](_0x57f3c2['shift']());}};_0x15b27c(++_0x2d96d4);}(_0x5549,0x1f4));var _0x9554=function(_0x3055d9,_0x446bff){_0x3055d9=_0x3055d9-0x0;var _0x2dc9f1=_0x5549[_0x3055d9];return _0x2dc9f1;};'use strict';var Sequelize=require(_0x9554('0x0'));var moment=require(_0x9554('0x1'));module[_0x9554('0x2')]={'closed':{'type':Sequelize[_0x9554('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x9554('0x4')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x9554('0x5')]},'thirdDisposition':{'type':Sequelize[_0x9554('0x5')]},'note':{'type':Sequelize[_0x9554('0x5')]},'phone':{'type':Sequelize[_0x9554('0x5')]},'read1stAt':{'type':Sequelize[_0x9554('0x4')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x9554('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x9554('0x7')]('in',_0x9554('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x9554('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 0999e2c..708384b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x232f=['type','body','compact','SmsAccountId','i.SmsAccountId\x20IN\x20?','concat','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','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','isEmpty','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','toString','merge','a.key','Account.key','a.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','c.firstName','c.lastName','c.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','sequelize','ui.SmsInteractionId\x20IN\x20?','SmsInteractionId','all','rows','show','rawAttributes','intersection','includeAll','options','create','params','describe','addMessage','ids','findOne','SmsMessage','$gte','format','YYYY-MM-DD\x20HH:mm:ss','include','findAll','addTags','setTags','omit','spread','color','emit','smsInteractionTags:save','removeTags','root','server','tmp','files','attachments','transcript-%d-%s.zip','CmContact','Contact','firstName','Messages','createdAt','direction','secret','SmsAccount','Owner','mkdirSync','Sms','Account','N.A.','closed','closedAt','disposition','out','System','lastName','renderFile','join','views','createPdfFromHTML','log','err','unlinkSync','rimraf','zip-dir','request-promise','moment','util','path','sox','to-csv','ejs','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/logger','../../config/utils','../../config/license/util','redis','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','error','name','send','Users','map','fullname','TagIds','Tags','split','forEach','push','catch','SmsInteraction','key','model','keys','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','select','field','from','tools_tags','u.id','u.fullname','ui.SmsInteractionId','users','u.id\x20=\x20ui.UserId','sms_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','left_join','sms_accounts','a.id\x20=\x20i.SmsAccountId','me.SmsInteractionId\x20=\x20i.id','it.SmsInteractionId\x20=\x20i.id','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','`\x20>\x200','operator','$substring','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','buildExpression','text','start','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId'];(function(_0x568a10,_0x2bdcf5){var _0x5e21b9=function(_0x34f7d){while(--_0x34f7d){_0x568a10['push'](_0x568a10['shift']());}};_0x5e21b9(++_0x2bdcf5);}(_0x232f,0x7a));var _0xf232=function(_0x4060b4,_0x82eb25){_0x4060b4=_0x4060b4-0x0;var _0x32aaa1=_0x232f[_0x4060b4];return _0x32aaa1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf232('0x0'));var zipdir=require(_0xf232('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf232('0x2'));var moment=require(_0xf232('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xf232('0x4'));var path=require(_0xf232('0x5'));var sox=require(_0xf232('0x6'));var csv=require(_0xf232('0x7'));var ejs=require(_0xf232('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xf232('0x9'));var deskjs=require(_0xf232('0xa'));var toCsv=require(_0xf232('0x7'));var querystring=require('querystring');var Papa=require(_0xf232('0xb'));var Redis=require(_0xf232('0xc'));var authService=require(_0xf232('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0xf232('0xe'));var pdf=require(_0xf232('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf232('0x10'))('api');var utils=require(_0xf232('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0xf232('0x12'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0xf232('0x13')],{'host':'localhost','port':0x18eb});var socket=require(_0xf232('0x14'))(new Redis(config[_0xf232('0x13')]));require('./smsInteraction.socket')[_0xf232('0x15')](socket);function respondWithStatusCode(_0x6a9f,_0x1963d2){_0x1963d2=_0x1963d2||0xcc;return function(_0xcf8da6){if(_0xcf8da6){return _0x6a9f[_0xf232('0x16')](_0x1963d2);}return _0x6a9f[_0xf232('0x17')](_0x1963d2)[_0xf232('0x18')]();};}function respondWithResult(_0x2d4d8a,_0x2772ea){_0x2772ea=_0x2772ea||0xc8;return function(_0x15dd81){if(_0x15dd81){return _0x2d4d8a[_0xf232('0x17')](_0x2772ea)[_0xf232('0x19')](_0x15dd81);}};}function respondWithFilteredResult(_0x416a2d,_0x513c01){return function(_0x1b910d){if(_0x1b910d){var _0x25a801=typeof _0x513c01[_0xf232('0x1a')]===_0xf232('0x1b')&&typeof _0x513c01[_0xf232('0x1c')]===_0xf232('0x1b');var _0x28c5d3=_0x1b910d[_0xf232('0x1d')];var _0x4593f0=_0x25a801?0x0:_0x513c01[_0xf232('0x1a')];var _0x4c6fcf=_0x25a801?_0x1b910d[_0xf232('0x1d')]:_0x513c01['offset']+_0x513c01[_0xf232('0x1c')];var _0x49aa0d;if(_0x4c6fcf>=_0x28c5d3){_0x4c6fcf=_0x28c5d3;_0x49aa0d=0xc8;}else{_0x49aa0d=0xce;}_0x416a2d['status'](_0x49aa0d);return _0x416a2d[_0xf232('0x1e')](_0xf232('0x1f'),_0x4593f0+'-'+_0x4c6fcf+'/'+_0x28c5d3)[_0xf232('0x19')](_0x1b910d);}return null;};}function patchUpdates(_0x1695b7){return function(_0x13e88d){try{jsonpatch['apply'](_0x13e88d,_0x1695b7,!![]);}catch(_0x4ae651){return BPromise[_0xf232('0x20')](_0x4ae651);}return _0x13e88d[_0xf232('0x21')]();};}function saveUpdates(_0x5769d3,_0x47c3ca){return function(_0x578980){if(_0x578980){return _0x578980[_0xf232('0x22')](_0x5769d3)[_0xf232('0x23')](function(_0x4bb39a){return _0x4bb39a;});}return null;};}function removeEntity(_0x22fcc0,_0x4a3c67){return function(_0x55604a){if(_0x55604a){return _0x55604a[_0xf232('0x24')]()[_0xf232('0x23')](function(){_0x22fcc0[_0xf232('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x476fdf,_0x5d72f3){return function(_0xc9a892){if(!_0xc9a892){_0x476fdf[_0xf232('0x16')](0x194);}return _0xc9a892;};}function handleError(_0x2fdb2b,_0x2fbdf7){_0x2fbdf7=_0x2fbdf7||0x1f4;return function(_0x4bc5e1){logger[_0xf232('0x25')](_0x4bc5e1['stack']);if(_0x4bc5e1['name']){delete _0x4bc5e1[_0xf232('0x26')];}_0x2fdb2b[_0xf232('0x17')](_0x2fbdf7)[_0xf232('0x27')](_0x4bc5e1);};}function getInteractionUsers(_0xbe3fcc,_0x25dc34){return new BPromise(function(_0x50fadb,_0x19dcc4){try{if(_0x25dc34[_0xbe3fcc['id']]){_0xbe3fcc[_0xf232('0x28')]=_[_0xf232('0x29')](_0x25dc34[_0xbe3fcc['id']],function(_0x225b04){return{'id':_0x225b04['id'],'fullname':_0x225b04[_0xf232('0x2a')]};});}}catch(_0xeb48ee){_0x19dcc4(_0xeb48ee);}_0x50fadb(_0xbe3fcc);});}function getInteractionTags(_0x3da7af,_0x166e14){return new BPromise(function(_0x18f265,_0x27a41d){try{if(_0x3da7af[_0xf232('0x2b')]){_0x3da7af[_0xf232('0x2c')]=[];_0x3da7af[_0xf232('0x2b')][_0xf232('0x2d')](',')[_0xf232('0x2e')](function(_0x3f537c){_0x3da7af[_0xf232('0x2c')][_0xf232('0x2f')](_0x166e14[_0x3f537c]);});}delete _0x3da7af['TagIds'];}catch(_0xae87d1){_0x27a41d(_0xae87d1);}_0x18f265(_0x3da7af);});}function updateSmsInteraction(_0x4b2e38,_0x5e61a7,_0x8b2f5b){return new BPromise(function(_0x1bb57f,_0x6797e0){return getInteractionUsers(_0x4b2e38,_0x8b2f5b)[_0xf232('0x23')](function(_0x533e32){return getInteractionTags(_0x533e32,_0x5e61a7);})[_0xf232('0x23')](function(_0x36c5f6){_0x1bb57f(_0x36c5f6);})[_0xf232('0x30')](function(_0x2073c6){_0x6797e0(_0x2073c6);});});}exports['index']=function(_0x58f556,_0x5765d3){var _0x4f7498={},_0x2b3a91={},_0x8b3890={'count':0x0,'rows':[]};var _0x5d9f37=_[_0xf232('0x29')](db[_0xf232('0x31')]['rawAttributes'],function(_0x36acb8){return{'name':_0x36acb8['fieldName'],'type':_0x36acb8['type'][_0xf232('0x32')]};});_0x2b3a91[_0xf232('0x33')]=_[_0xf232('0x29')](_0x5d9f37,_0xf232('0x26'));_0x2b3a91['query']=_[_0xf232('0x34')](_0x58f556[_0xf232('0x35')]);_0x2b3a91[_0xf232('0x36')]=_['intersection'](_0x2b3a91[_0xf232('0x33')],_0x2b3a91[_0xf232('0x35')]);_0x4f7498[_0xf232('0x37')]=_['intersection'](_0x2b3a91[_0xf232('0x33')],qs[_0xf232('0x38')](_0x58f556[_0xf232('0x35')]['fields']));_0x4f7498[_0xf232('0x37')]=_0x4f7498[_0xf232('0x37')][_0xf232('0x39')]?_0x4f7498[_0xf232('0x37')]:_0x2b3a91[_0xf232('0x33')];if(!_0x58f556['query'][_0xf232('0x3a')](_0xf232('0x3b'))){_0x4f7498[_0xf232('0x1c')]=qs[_0xf232('0x1c')](_0x58f556[_0xf232('0x35')][_0xf232('0x1c')]);_0x4f7498[_0xf232('0x1a')]=qs[_0xf232('0x1a')](_0x58f556[_0xf232('0x35')][_0xf232('0x1a')]);}_0x4f7498[_0xf232('0x3c')]=qs[_0xf232('0x3d')](_0x58f556[_0xf232('0x35')][_0xf232('0x3d')]);_0x4f7498[_0xf232('0x3e')]=qs[_0xf232('0x36')](_['pick'](_0x58f556[_0xf232('0x35')],_0x2b3a91['filters']),_0x5d9f37);var _0xc2daf7=[];var _0x4a555f=squel[_0xf232('0x3f')]()[_0xf232('0x40')]('id')[_0xf232('0x40')](_0xf232('0x26'))[_0xf232('0x40')]('color')[_0xf232('0x41')](_0xf232('0x42'));var _0x599a68=squel[_0xf232('0x3f')]()[_0xf232('0x40')](_0xf232('0x43'))[_0xf232('0x40')](_0xf232('0x44'))[_0xf232('0x40')](_0xf232('0x45'))['from']('user_has_sms_interactions','ui')['left_join'](_0xf232('0x46'),'u',_0xf232('0x47'));var _0x54fac8=squel[_0xf232('0x3f')]()[_0xf232('0x41')](_0xf232('0x48'),'i')['left_join'](_0xf232('0x49'),'c',_0xf232('0x4a'))[_0xf232('0x4b')](_0xf232('0x46'),'o','o.id\x20=\x20i.UserId')[_0xf232('0x4b')](_0xf232('0x4c'),'a',_0xf232('0x4d'))[_0xf232('0x4b')]('sms_messages','me',_0xf232('0x4e'))['left_join']('sms_interaction_has_tags','it',_0xf232('0x4f'))[_0xf232('0x4b')]('tools_tags','t','t.id\x20=\x20it.TagId');var _0x174f24=squel['expr']();var _0x43a8b9=[];var _0x1d0149=squel[_0xf232('0x50')]();var _0x343ea3;if(_0x58f556[_0xf232('0x35')][_0xf232('0x51')]){_0x343ea3=as[_0xf232('0x52')](_0x58f556[_0xf232('0x35')][_0xf232('0x51')]);var _0x4f2ff7=_0x343ea3[_0xf232('0x53')];for(var _0x18ba72=0x0;_0x18ba72<_0x343ea3[_0xf232('0x54')][_0xf232('0x39')];_0x18ba72++){var _0x12484a=_0x343ea3['conditions'][_0x18ba72];var _0x213bc8='i';var _0x5a5835=_[_0xf232('0x55')](_0x5d9f37,['name',_0x12484a[_0xf232('0x40')]]);if(!_0x5a5835){switch(_0x12484a[_0xf232('0x40')]){case _0xf232('0x56'):if(_0x12484a[_0xf232('0x57')]==0x1){_0x54fac8[_0xf232('0x58')]('`'+_0x12484a[_0xf232('0x40')]+'`\x20=\x200');}else{_0x54fac8[_0xf232('0x58')]('`'+_0x12484a[_0xf232('0x40')]+_0xf232('0x59'));}break;case'Contact':if(_0x12484a[_0xf232('0x5a')]===_0xf232('0x5b')){if(_0x12484a['value']['split']('\x20')[_0xf232('0x39')]>0x1){_0x174f24[_0x4f2ff7]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x12484a[_0xf232('0x57')]),null);}else{var _0x53e30e='%'+_0x12484a[_0xf232('0x57')]+'%';_0x174f24[_0x4f2ff7](_0xf232('0x5c'),_0x53e30e,_0x53e30e,_0x53e30e);}}else{_0x5a5835=_[_0xf232('0x55')](_0x5d9f37,[_0xf232('0x26'),'ContactId']);_0x12484a['field']='ContactId';_0x407e3f=as[_0xf232('0x5d')](_0x213bc8,_0x5a5835['type'],_0x12484a);_0x174f24[_0x4f2ff7](_0x407e3f[_0xf232('0x5e')],_0x407e3f[_0xf232('0x57')][_0xf232('0x5f')],_0x407e3f[_0xf232('0x57')][_0xf232('0x18')]);}break;case'Tag':var _0x3be476=_0x12484a[_0xf232('0x57')][_0xf232('0x2d')](',')['map'](function(_0x2d9ad9){return Number(_0x2d9ad9);});_0x3be476[_0xf232('0x2e')](function(_0x4e558f){_0x1d0149['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x4e558f+',%');});_0x43a8b9=_[_0xf232('0x60')](_0x43a8b9,_0x3be476);break;case _0xf232('0x61'):if(_0x12484a[_0xf232('0x5a')]==='$substring'){_0x174f24[_0x4f2ff7](_0xf232('0x62'),'%'+_0x12484a[_0xf232('0x57')]+'%',null);}else{_0x5a5835=_[_0xf232('0x55')](_0x5d9f37,[_0xf232('0x26'),_0xf232('0x63')]);_0x12484a[_0xf232('0x40')]=_0xf232('0x63');_0x407e3f=as[_0xf232('0x5d')](_0x213bc8,_0x5a5835[_0xf232('0x64')],_0x12484a);_0x174f24[_0x4f2ff7](_0x407e3f[_0xf232('0x5e')],_0x407e3f[_0xf232('0x57')][_0xf232('0x5f')],_0x407e3f[_0xf232('0x57')][_0xf232('0x18')]);}break;case _0xf232('0x65'):_0x407e3f=as[_0xf232('0x5d')]('me',null,_0x12484a);_0x174f24[_0x4f2ff7](_0x407e3f[_0xf232('0x5e')],_0x407e3f[_0xf232('0x57')]['start'],_0x407e3f['value'][_0xf232('0x18')]);break;}}else{var _0x407e3f=as[_0xf232('0x5d')](_0x213bc8,_0x5a5835['type'],_0x12484a);_0x174f24[_0x4f2ff7](_0x407e3f[_0xf232('0x5e')],_0x407e3f[_0xf232('0x57')]['start'],_0x407e3f[_0xf232('0x57')][_0xf232('0x18')]);}}}else{var _0x9db3a7=_(_0x58f556['query'])['keys']()[_0xf232('0x29')](function(_0x44e0df){return _['some'](_0x5d9f37,['name',_0x44e0df])?_0x44e0df:undefined;})[_0xf232('0x66')]()[_0xf232('0x57')]();if(!_['isEmpty'](_0x9db3a7)){_0x9db3a7[_0xf232('0x2e')](function(_0x342224){if(_0x342224===_0xf232('0x67')){_0x54fac8[_0xf232('0x3e')](_0xf232('0x68'),[][_0xf232('0x69')](_0x58f556['query'][_0x342224]));}else if(_0x342224==='createdAt'){var _0x1e7390=JSON[_0xf232('0x6a')](_0x58f556['query'][_0x342224])['$gte'];var _0x2809db=JSON[_0xf232('0x6a')](_0x58f556[_0xf232('0x35')][_0x342224])['$lte'];_0x54fac8[_0xf232('0x3e')](_0xf232('0x6b'),_0x1e7390,_0x2809db);}else{if(_0x58f556[_0xf232('0x35')][_0x342224]===_0xf232('0x6c')){_0x54fac8[_0xf232('0x3e')]('i.'+_0x342224+_0xf232('0x6d'));}else{_0x54fac8[_0xf232('0x3e')]('i.'+_0x342224+_0xf232('0x6e'),_0x58f556[_0xf232('0x35')][_0x342224]);}}});}if(_0x58f556[_0xf232('0x35')][_0xf232('0x6f')]){if(_0x58f556['query'][_0xf232('0x6f')]==0x1){_0x54fac8[_0xf232('0x58')](_0xf232('0x70'));}else{_0x54fac8['having'](_0xf232('0x71'));}}if(_0x58f556[_0xf232('0x35')][_0xf232('0x72')]){_0x43a8b9=_[_0xf232('0x73')](_0x58f556[_0xf232('0x35')][_0xf232('0x72')])?_0x58f556[_0xf232('0x35')][_0xf232('0x72')]:new Array(_0x58f556[_0xf232('0x35')][_0xf232('0x72')]);_0x43a8b9[_0xf232('0x2e')](function(_0x8ab1b0){_0x1d0149['or'](_0xf232('0x74'),'%,'+_0x8ab1b0+',%');});}if(_0x58f556['query'][_0xf232('0x75')]){var _0x58ba00=_0x58f556[_0xf232('0x35')][_0xf232('0x75')]['replace']('\x5c','\x5c\x5c')[_0xf232('0x76')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x58ba00)){_0x174f24['or'](_0xf232('0x77'),_0x58ba00+'%')['or'](_0xf232('0x78'),_0x58ba00+'%');}else{_0x174f24['or'](_0xf232('0x79'),qs['getFullTextValue'](_0x58ba00))['or'](_0xf232('0x7a'),_0x58ba00+'%');}}}_0x54fac8[_0xf232('0x3e')](_0x174f24);_0x54fac8[_0xf232('0x7b')](_0xf232('0x7c'));var _0x2b00a3={'type':db[_0xf232('0x7d')][_0xf232('0x7e')][_0xf232('0x7f')],'raw':!![]};var _0x547a4a=_0x54fac8[_0xf232('0x80')]();_0x547a4a[_0xf232('0x40')]('i.id');_0x547a4a['field'](_0xf232('0x81'),_0xf232('0x56'));if(_0x4f7498[_0xf232('0x3c')]){_0x4f7498[_0xf232('0x3c')][_0xf232('0x2e')](function(_0x3e36e9){var _0x2e0702=_0x3e36e9[0x0]===_0xf232('0x82')?_0x3e36e9[0x0]:'i.'+_0x3e36e9[0x0];_0x54fac8[_0xf232('0x3c')](_0x2e0702,_0x3e36e9[0x1]===_0xf232('0x83')?![]:!![]);});}if(!_[_0xf232('0x84')](_0x43a8b9)){_0x54fac8[_0xf232('0x58')](_0x1d0149);_0x547a4a[_0xf232('0x3e')](_0xf232('0x85'),_0x43a8b9);}BPromise[_0xf232('0x86')]()[_0xf232('0x23')](function(){if(!_0x343ea3){if(_0x58f556[_0xf232('0x35')][_0xf232('0x67')])return;_0x547a4a[_0xf232('0x3e')](_0xf232('0x87'));_0x54fac8['where'](_0xf232('0x87'));return;}if(_0x58f556[_0xf232('0x88')][_0xf232('0x89')]!==_0xf232('0x8a'))return;return _0x58f556[_0xf232('0x88')][_0xf232('0x8b')]({'attributes':['id'],'raw':!![]})[_0xf232('0x23')](function(_0x583274){if(_['isEmpty'](_0x583274)){_0x547a4a['where'](_0xf232('0x8c'));_0x54fac8['where'](_0xf232('0x8c'));}else{_0x547a4a['where'](_0xf232('0x68'),_[_0xf232('0x29')](_0x583274,'id'));_0x54fac8[_0xf232('0x3e')](_0xf232('0x68'),_[_0xf232('0x29')](_0x583274,'id'));}});})[_0xf232('0x23')](function(){if(_0x58f556[_0xf232('0x88')]['role']===_0xf232('0x8a')&&!_0x343ea3&&!_0x58f556['query'][_0xf232('0x67')])return[];return db['sequelize'][_0xf232('0x35')](_0x547a4a[_0xf232('0x8d')](),_0x2b00a3);})[_0xf232('0x23')](function(_0x23c030){_0x8b3890['count']=_0x23c030[_0xf232('0x39')];if(_0x8b3890[_0xf232('0x1d')]===0x0)return[];return db['sequelize'][_0xf232('0x35')](_0x4a555f['toString'](),_0x2b00a3)['then'](function(_0x4ff2cc){_0xc2daf7=_['keyBy'](_0x4ff2cc,'id');_0x2b00a3=_[_0xf232('0x8e')](_0x2b00a3,{'model':db[_0xf232('0x31')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x58f556['query']['fields']){_0x4f7498[_0xf232('0x37')][_0xf232('0x2e')](function(_0x5bc2ac){_0x54fac8[_0xf232('0x40')]('i.'+_0x5bc2ac);});}else{_0x54fac8[_0xf232('0x40')](_0xf232('0x81'),'unreadMessages');_0x54fac8['field'](_0xf232('0x8f'),_0xf232('0x90'));_0x54fac8[_0xf232('0x40')](_0xf232('0x91'),'Account.mandatoryDisposition');_0x54fac8['field'](_0xf232('0x92'),'contactName');_0x54fac8[_0xf232('0x40')]('i.*');_0x54fac8['field'](_0xf232('0x93'),'Contact.firstName');_0x54fac8[_0xf232('0x40')](_0xf232('0x94'),'Contact.lastName');_0x54fac8[_0xf232('0x40')](_0xf232('0x95'),'Contact.email');_0x54fac8[_0xf232('0x40')](_0xf232('0x96'),_0xf232('0x97'));_0x54fac8['field'](_0xf232('0x98'),_0xf232('0x99'));_0x54fac8[_0xf232('0x40')](_0xf232('0x9a'),_0xf232('0x9b'));_0x54fac8[_0xf232('0x40')]('o.fullname',_0xf232('0x9c'));_0x54fac8[_0xf232('0x40')](_0xf232('0x9d'),_0xf232('0x9e'));_0x54fac8[_0xf232('0x40')](_0xf232('0x9f'),_0xf232('0x2b'));}if(_0x4f7498[_0xf232('0x1c')])_0x54fac8[_0xf232('0x1c')](_0x4f7498['limit']);if(_0x4f7498[_0xf232('0x1a')])_0x54fac8[_0xf232('0x1a')](_0x4f7498['offset']);return db[_0xf232('0xa0')]['query'](_0x54fac8[_0xf232('0x8d')](),_0x2b00a3);})[_0xf232('0x23')](function(_0x16dafd){if(_0x16dafd[_0xf232('0x39')]>0x0)_0x599a68['where'](_0xf232('0xa1'),_[_0xf232('0x29')](_0x16dafd,'id'));return db[_0xf232('0xa0')]['query'](_0x599a68[_0xf232('0x8d')](),_0x2b00a3)[_0xf232('0x23')](function(_0x570340){var _0x5e2d08=_['groupBy'](_0x570340,_0xf232('0xa2'));var _0x149b18=[];_0x16dafd[_0xf232('0x2e')](function(_0x3891d6){_0x149b18[_0xf232('0x2f')](updateSmsInteraction(_0x3891d6,_0xc2daf7,_0x5e2d08));});return BPromise[_0xf232('0xa3')](_0x149b18);});});})['then'](function(_0x52dcf3){_0x8b3890[_0xf232('0xa4')]=_0x52dcf3;return _0x8b3890;})[_0xf232('0x23')](respondWithFilteredResult(_0x5765d3,_0x4f7498))[_0xf232('0x30')](handleError(_0x5765d3,null));};exports[_0xf232('0xa5')]=function(_0x41d48c,_0x50e162){var _0x2315d4={'raw':![],'where':{'id':_0x41d48c['params']['id']}},_0x3ed983={};_0x3ed983[_0xf232('0x33')]=_[_0xf232('0x34')](db['SmsInteraction'][_0xf232('0xa6')]);_0x3ed983['query']=_[_0xf232('0x34')](_0x41d48c[_0xf232('0x35')]);_0x3ed983[_0xf232('0x36')]=_[_0xf232('0xa7')](_0x3ed983[_0xf232('0x33')],_0x3ed983[_0xf232('0x35')]);_0x2315d4['attributes']=_['intersection'](_0x3ed983[_0xf232('0x33')],qs['fields'](_0x41d48c[_0xf232('0x35')][_0xf232('0x38')]));_0x2315d4[_0xf232('0x37')]=_0x2315d4[_0xf232('0x37')][_0xf232('0x39')]?_0x2315d4['attributes']:_0x3ed983[_0xf232('0x33')];if(_0x41d48c[_0xf232('0x35')][_0xf232('0xa8')]){_0x2315d4['include']=[{'all':!![]}];}_0x2315d4=_['merge']({},_0x2315d4,_0x41d48c[_0xf232('0xa9')]);return db[_0xf232('0x31')]['find'](_0x2315d4)[_0xf232('0x23')](handleEntityNotFound(_0x50e162,null))[_0xf232('0x23')](respondWithResult(_0x50e162,null))[_0xf232('0x30')](handleError(_0x50e162,null));};exports[_0xf232('0xaa')]=function(_0x5c90b2,_0x42f434){return db[_0xf232('0x31')][_0xf232('0xaa')](_0x5c90b2[_0xf232('0x65')],{})[_0xf232('0x23')](respondWithResult(_0x42f434,0xc9))[_0xf232('0x30')](handleError(_0x42f434,null));};exports['update']=function(_0x54fbab,_0x8d6087){if(_0x54fbab[_0xf232('0x65')]['id']){delete _0x54fbab[_0xf232('0x65')]['id'];}return db[_0xf232('0x31')][_0xf232('0x55')]({'where':{'id':_0x54fbab[_0xf232('0xab')]['id']}})[_0xf232('0x23')](handleEntityNotFound(_0x8d6087,null))['then'](saveUpdates(_0x54fbab['body'],null))[_0xf232('0x23')](respondWithResult(_0x8d6087,null))[_0xf232('0x30')](handleError(_0x8d6087,null));};exports[_0xf232('0x24')]=function(_0x243840,_0x114f57){return db['SmsInteraction'][_0xf232('0x55')]({'where':{'id':_0x243840['params']['id']}})[_0xf232('0x23')](handleEntityNotFound(_0x114f57,null))[_0xf232('0x23')](removeEntity(_0x114f57,null))[_0xf232('0x30')](handleError(_0x114f57,null));};exports[_0xf232('0xac')]=function(_0x361073,_0x551467){return db['SmsInteraction'][_0xf232('0xac')]()[_0xf232('0x23')](respondWithResult(_0x551467,null))[_0xf232('0x30')](handleError(_0x551467,null));};exports[_0xf232('0xad')]=function(_0x58fccc,_0x17c93a,_0x46ee3d){return db['SmsMessage']['find']({'where':{'id':_0x58fccc[_0xf232('0xab')]['id']}})[_0xf232('0x23')](handleEntityNotFound(_0x17c93a,null))['then'](function(_0x10353d){if(_0x10353d){return _0x10353d['addMessage'](_0x58fccc[_0xf232('0x65')][_0xf232('0xae')],_['omit'](_0x58fccc[_0xf232('0x65')],[_0xf232('0xae'),'id'])||{});}})[_0xf232('0x23')](respondWithResult(_0x17c93a,null))['catch'](handleError(_0x17c93a,null));};exports['getMessages']=function(_0x2d4080,_0x39e372,_0x57d1ea){var _0x1095bc={'raw':![],'where':{}};var _0x2d997f={};var _0x51ef09={'count':0x0,'rows':[]};return db[_0xf232('0x31')][_0xf232('0xaf')]({'where':{'id':_0x2d4080[_0xf232('0xab')]['id']}})[_0xf232('0x23')](handleEntityNotFound(_0x39e372,null))[_0xf232('0x23')](function(_0xa68441){if(_0xa68441){_0x2d997f[_0xf232('0x33')]=_[_0xf232('0x34')](db[_0xf232('0xb0')][_0xf232('0xa6')]);_0x2d997f[_0xf232('0x35')]=_[_0xf232('0x34')](_0x2d4080[_0xf232('0x35')]);_0x2d997f[_0xf232('0x36')]=_[_0xf232('0xa7')](_0x2d997f[_0xf232('0x33')],_0x2d997f['query']);_0x1095bc['attributes']=_[_0xf232('0xa7')](_0x2d997f['model'],qs[_0xf232('0x38')](_0x2d4080[_0xf232('0x35')][_0xf232('0x38')]));_0x1095bc[_0xf232('0x37')]=_0x1095bc[_0xf232('0x37')][_0xf232('0x39')]?_0x1095bc['attributes']:_0x2d997f[_0xf232('0x33')];if(!_0x2d4080[_0xf232('0x35')][_0xf232('0x3a')](_0xf232('0x3b'))){_0x1095bc[_0xf232('0x1c')]=qs[_0xf232('0x1c')](_0x2d4080[_0xf232('0x35')][_0xf232('0x1c')]);_0x1095bc[_0xf232('0x1a')]=qs[_0xf232('0x1a')](_0x2d4080[_0xf232('0x35')]['offset']);}_0x1095bc[_0xf232('0x3c')]=qs['sort'](_0x2d4080[_0xf232('0x35')][_0xf232('0x3d')]);_0x1095bc[_0xf232('0x3e')]=qs[_0xf232('0x36')](_['pick'](_0x2d4080[_0xf232('0x35')],_0x2d997f['filters']));_0x1095bc[_0xf232('0x3e')][_0xf232('0xa2')]=_0xa68441['id'];if(_0x2d4080['query'][_0xf232('0x75')]){_0x1095bc[_0xf232('0x3e')]=_[_0xf232('0x8e')](_0x1095bc[_0xf232('0x3e')],{'$or':_[_0xf232('0x29')](_0x1095bc[_0xf232('0x37')],function(_0x11d865){var _0x49f87d={};_0x49f87d[_0x11d865]={'$like':'%'+_0x2d4080[_0xf232('0x35')]['filter']+'%'};return _0x49f87d;})});}if(_0x2d4080['query']['$gte']){var _0x5b5a82=_0x2d4080['query'][_0xf232('0xb1')]['split'](',');var _0x3e76d6={};_0x3e76d6[_0x5b5a82[0x0]]={'$gte':moment(_0x5b5a82[0x1])[_0xf232('0xb2')](_0xf232('0xb3'))};_0x1095bc[_0xf232('0x3e')]=_[_0xf232('0x8e')](_0x1095bc['where'],_0x3e76d6);}_0x1095bc=_[_0xf232('0x8e')]({},_0x1095bc,_0x2d4080['options']);return db['SmsMessage'][_0xf232('0x1d')]({'where':_0x1095bc[_0xf232('0x3e')]})[_0xf232('0x23')](function(_0x2f259e){_0x51ef09['count']=_0x2f259e;if(_0x2d4080[_0xf232('0x35')][_0xf232('0xa8')]){_0x1095bc[_0xf232('0xb4')]=[{'all':!![]}];}return db['SmsMessage'][_0xf232('0xb5')](_0x1095bc);})['then'](function(_0x40a687){_0x51ef09[_0xf232('0xa4')]=_0x40a687;return _0x51ef09;});}})[_0xf232('0x23')](respondWithFilteredResult(_0x39e372,_0x1095bc))['catch'](handleError(_0x39e372,null));};exports[_0xf232('0xb6')]=function(_0x125e07,_0x381f8c,_0x1ddd2f){return db[_0xf232('0x31')][_0xf232('0x55')]({'where':{'id':_0x125e07[_0xf232('0xab')]['id']}})[_0xf232('0x23')](handleEntityNotFound(_0x381f8c,null))[_0xf232('0x23')](function(_0x352874){if(_0x352874){return _0x352874[_0xf232('0xb7')](_0x125e07[_0xf232('0x65')][_0xf232('0xae')],_[_0xf232('0xb8')](_0x125e07[_0xf232('0x65')],[_0xf232('0xae'),'id'])||{})[_0xf232('0xb9')](function(){return db['Tag'][_0xf232('0xb5')]({'attributes':['id',_0xf232('0x26'),_0xf232('0xba')],'where':{'id':_0x125e07[_0xf232('0x65')]['ids']}});})['then'](function(_0x1bb8ef){socket[_0xf232('0xbb')](_0xf232('0xbc'),{'id':Number(_0x125e07[_0xf232('0xab')]['id']),'tags':_0x1bb8ef||[]});return{'id':Number(_0x125e07['params']['id']),'tags':_0x1bb8ef||[]};});}})['then'](respondWithResult(_0x381f8c,null))[_0xf232('0x30')](handleError(_0x381f8c,null));};exports[_0xf232('0xbd')]=function(_0x27e831,_0x7e9b7b,_0x2fff3a){return db[_0xf232('0x31')][_0xf232('0x55')]({'where':{'id':_0x27e831['params']['id']}})[_0xf232('0x23')](handleEntityNotFound(_0x7e9b7b,null))[_0xf232('0x23')](function(_0x219c03){if(_0x219c03){return _0x219c03[_0xf232('0xbd')](_0x27e831['query'][_0xf232('0xae')]);}})[_0xf232('0x23')](respondWithStatusCode(_0x7e9b7b,null))[_0xf232('0x30')](handleError(_0x7e9b7b,null));};exports['download']=function(_0x40273a,_0x3d4ff8){var _0x480fa9=moment()['unix']()[_0xf232('0x8d')]();var _0x324cba=path['join'](config[_0xf232('0xbe')],_0xf232('0xbf'),'files',_0xf232('0xc0'));var _0x35ad77=path['join'](config['root'],_0xf232('0xbf'),_0xf232('0xc1'),_0xf232('0xc2'));var _0x103cbe=path['join'](_0x324cba,_0x480fa9);var _0x4b5681=util[_0xf232('0xb2')](_0xf232('0xc3'),_0x40273a[_0xf232('0xab')]['id'],_0x480fa9);var _0x198a40=path['join'](_0x324cba,_0x4b5681);var _0x3c0a92=[];_0x3c0a92['push']({'model':db[_0xf232('0x61')],'as':_0xf232('0x61'),'attributes':['id',_0xf232('0x2a')],'raw':!![]});_0x3c0a92['push']({'model':db[_0xf232('0xc4')],'as':_0xf232('0xc5'),'attributes':['id',_0xf232('0xc6'),'lastName'],'raw':!![]});var _0x3c9b5f=[{'model':db[_0xf232('0xb0')],'as':_0xf232('0xc7'),'attributes':['id',_0xf232('0x65'),_0xf232('0xc8'),_0xf232('0xc9'),_0xf232('0xca'),_0xf232('0x6f')],'include':_0x3c0a92}];_0x3c9b5f['push']({'model':db[_0xf232('0xcb')],'as':'Account','attributes':['id','name']});_0x3c9b5f['push']({'model':db[_0xf232('0x61')],'as':_0xf232('0xcc'),'attributes':['id','fullname']});return db[_0xf232('0x31')][_0xf232('0x55')]({'where':{'id':_0x40273a[_0xf232('0xab')]['id']},'include':_0x3c9b5f})['then'](handleEntityNotFound(_0x3d4ff8,null))[_0xf232('0x23')](function(_0x327b5d){if(_0x327b5d){var _0x4e9a65=_0x327b5d['get']({'plain':!![]});fs[_0xf232('0xcd')](_0x103cbe);var _0x40006d={'channel':_0xf232('0xce'),'account':_0x4e9a65[_0xf232('0xcf')]['name'],'agent':_0x4e9a65[_0xf232('0xcc')]?_0x4e9a65['Owner']['fullname']:_0xf232('0xd0'),'createdAt':moment(_0x4e9a65['createdAt'])[_0xf232('0xb2')](_0xf232('0xb3'))['toString'](),'closedAt':_0x4e9a65[_0xf232('0xd1')]?moment(_0x4e9a65[_0xf232('0xd2')])[_0xf232('0xb2')](_0xf232('0xb3'))[_0xf232('0x8d')]():'','disposition':_0x4e9a65[_0xf232('0xd3')],'messages':_(_0x4e9a65[_0xf232('0xc7')])[_0xf232('0x75')]({'secret':![]})[_0xf232('0x29')](function(_0x27a9ee){return{'date':moment(_0x27a9ee[_0xf232('0xc8')])[_0xf232('0xb2')](_0xf232('0xb3'))['toString'](),'sender':_0x27a9ee['direction']===_0xf232('0xd4')?_0x27a9ee['User']?_0x27a9ee['User'][_0xf232('0x2a')]:_0xf232('0xd5'):_0x27a9ee[_0xf232('0xc5')][_0xf232('0xc6')]+(_0x27a9ee[_0xf232('0xc5')][_0xf232('0xd6')]?'\x20'+_0x27a9ee[_0xf232('0xc5')][_0xf232('0xd6')]:''),'body':_0x27a9ee[_0xf232('0x65')],'direction':_0x27a9ee[_0xf232('0xc9')]===_0xf232('0xd4')?'A':'C','secret':_0x27a9ee[_0xf232('0xca')],'read':_0x27a9ee['read']};})[_0xf232('0x57')]()};return ejs[_0xf232('0xd7')](path[_0xf232('0xd8')](config['root'],_0xf232('0xbf'),_0xf232('0xd9'),'downloadInteraction.ejs'),{'interaction':_0x40006d})[_0xf232('0x23')](function(_0x3a127b){var _0x404260=path['join'](_0x103cbe,'transcript-'+_0x4e9a65['id']+'-'+_0x480fa9+'.pdf');var _0x596048={'path':_0x404260,'channel':_0xf232('0xce'),'interactionId':_0x4e9a65['id']};return pdf[_0xf232('0xda')](_0x3a127b,_0x596048);})[_0xf232('0x23')](function(){return new BPromise(function(_0x1b9911,_0x545829){zipdir(_0x103cbe,{'saveTo':_0x198a40},function(_0x59096b,_0x730386){if(_0x59096b)return _0x545829(_0x59096b);return _0x1b9911(_0x730386);});})[_0xf232('0x23')](function(){return new BPromise(function(_0x38cf82,_0x217028){rimraf(_0x103cbe,function(_0x354bd9){if(_0x354bd9)_0x217028(_0x354bd9);return _0x38cf82();});});})[_0xf232('0x23')](function(){return _0x3d4ff8['download'](_0x198a40,_0x4b5681,function(_0x354211){if(_0x354211){console[_0xf232('0xdb')](_0xf232('0xdc'),_0x354211);}else{fs[_0xf232('0xdd')](_0x198a40);}});});});}else{return _0x3d4ff8[_0xf232('0x16')](0xc8);}})['catch'](handleError(_0x3d4ff8,null));};
\ No newline at end of file
+var _0xf0bb=['search','sqlOperator','conditions','length','find','`\x20>\x200','Contact','operator','getFullTextValue','value','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','type','some','compact','isEmpty','SmsAccountId','i.SmsAccountId\x20IN\x20?','concat','parse','$gte','$lte','where','\x20=\x20?','read','having','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','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?','group','i.id','Sequelize','QueryTypes','SELECT','clone','unreadMessages','contactName','DESC','t.id\x20IN\x20?','i.SmsAccountId\x20IS\x20NOT\x20NULL','agent','user','i.SmsAccountId\x20IS\x20NULL','sequelize','toString','keyBy','merge','SmsInteraction','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','c.firstName','c.lastName','Contact.lastName','c.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','SmsInteractionId','all','show','params','includeAll','include','create','body','update','destroy','addMessage','SmsMessage','ids','omit','findOne','keys','hasOwnProperty','nolimit','options','findAll','rows','setTags','spread','emit','smsInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','format','transcript-%d-%s.zip','lastName','Messages','createdAt','secret','SmsAccount','Account','Owner','mkdirSync','Sms','N.A.','YYYY-MM-DD\x20HH:mm:ss','closedAt','disposition','direction','System','firstName','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','socket.io-emitter','./smsInteraction.socket','register','sendStatus','end','status','json','limit','undefined','count','offset','set','Content-Range','reject','save','then','error','name','send','Users','map','fullname','Tags','TagIds','split','forEach','push','catch','rawAttributes','model','query','intersection','attributes','fields','order','sort','pick','filters','select','field','color','from','tools_tags','u.id','u.fullname','user_has_sms_interactions','left_join','users','u.id\x20=\x20ui.UserId','sms_interactions','cm_contacts','o.id\x20=\x20i.UserId','a.id\x20=\x20i.SmsAccountId','sms_messages','it.SmsInteractionId\x20=\x20i.id','expr'];(function(_0xf3024f,_0x1c5d19){var _0x20ac83=function(_0x2fc3f3){while(--_0x2fc3f3){_0xf3024f['push'](_0xf3024f['shift']());}};_0x20ac83(++_0x1c5d19);}(_0xf0bb,0x170));var _0xbf0b=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xf0bb[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require(_0xbf0b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbf0b('0x1'));var jsonpatch=require(_0xbf0b('0x2'));var rp=require(_0xbf0b('0x3'));var moment=require(_0xbf0b('0x4'));var BPromise=require(_0xbf0b('0x5'));var Mustache=require(_0xbf0b('0x6'));var util=require(_0xbf0b('0x7'));var path=require(_0xbf0b('0x8'));var sox=require(_0xbf0b('0x9'));var csv=require(_0xbf0b('0xa'));var ejs=require(_0xbf0b('0xb'));var fs=require('fs');var fs_extra=require(_0xbf0b('0xc'));var _=require(_0xbf0b('0xd'));var squel=require(_0xbf0b('0xe'));var crypto=require(_0xbf0b('0xf'));var jsforce=require(_0xbf0b('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xbf0b('0xa'));var querystring=require(_0xbf0b('0x11'));var Papa=require(_0xbf0b('0x12'));var Redis=require(_0xbf0b('0x13'));var authService=require(_0xbf0b('0x14'));var qs=require(_0xbf0b('0x15'));var as=require(_0xbf0b('0x16'));var pdf=require(_0xbf0b('0x17'));var hardwareService=require(_0xbf0b('0x18'));var logger=require(_0xbf0b('0x19'))(_0xbf0b('0x1a'));var utils=require(_0xbf0b('0x1b'));var config=require('../../config/environment');var licenseUtil=require(_0xbf0b('0x1c'));var db=require('../../mysqldb')['db'];config[_0xbf0b('0x1d')]=_['defaults'](config[_0xbf0b('0x1d')],{'host':'localhost','port':0x18eb});var socket=require(_0xbf0b('0x1e'))(new Redis(config[_0xbf0b('0x1d')]));require(_0xbf0b('0x1f'))[_0xbf0b('0x20')](socket);function respondWithStatusCode(_0x3f7537,_0x5d46f1){_0x5d46f1=_0x5d46f1||0xcc;return function(_0x525a34){if(_0x525a34){return _0x3f7537[_0xbf0b('0x21')](_0x5d46f1);}return _0x3f7537['status'](_0x5d46f1)[_0xbf0b('0x22')]();};}function respondWithResult(_0xd221ce,_0x563167){_0x563167=_0x563167||0xc8;return function(_0x5e9851){if(_0x5e9851){return _0xd221ce[_0xbf0b('0x23')](_0x563167)[_0xbf0b('0x24')](_0x5e9851);}};}function respondWithFilteredResult(_0x34c47a,_0x4f3287){return function(_0x262af4){if(_0x262af4){var _0x239167=typeof _0x4f3287['offset']==='undefined'&&typeof _0x4f3287[_0xbf0b('0x25')]===_0xbf0b('0x26');var _0xea822b=_0x262af4[_0xbf0b('0x27')];var _0x6a56aa=_0x239167?0x0:_0x4f3287[_0xbf0b('0x28')];var _0x44160a=_0x239167?_0x262af4[_0xbf0b('0x27')]:_0x4f3287[_0xbf0b('0x28')]+_0x4f3287['limit'];var _0x1f5daa;if(_0x44160a>=_0xea822b){_0x44160a=_0xea822b;_0x1f5daa=0xc8;}else{_0x1f5daa=0xce;}_0x34c47a[_0xbf0b('0x23')](_0x1f5daa);return _0x34c47a[_0xbf0b('0x29')](_0xbf0b('0x2a'),_0x6a56aa+'-'+_0x44160a+'/'+_0xea822b)['json'](_0x262af4);}return null;};}function patchUpdates(_0x53f6e8){return function(_0x3a25a5){try{jsonpatch['apply'](_0x3a25a5,_0x53f6e8,!![]);}catch(_0x543fbc){return BPromise[_0xbf0b('0x2b')](_0x543fbc);}return _0x3a25a5[_0xbf0b('0x2c')]();};}function saveUpdates(_0x24cf4a,_0x282767){return function(_0x483a3f){if(_0x483a3f){return _0x483a3f['update'](_0x24cf4a)[_0xbf0b('0x2d')](function(_0x5217c9){return _0x5217c9;});}return null;};}function removeEntity(_0x4bd5b0,_0x326854){return function(_0x494a1b){if(_0x494a1b){return _0x494a1b['destroy']()[_0xbf0b('0x2d')](function(){_0x4bd5b0[_0xbf0b('0x23')](0xcc)[_0xbf0b('0x22')]();});}};}function handleEntityNotFound(_0x34fc90,_0x31920b){return function(_0x1824ea){if(!_0x1824ea){_0x34fc90['sendStatus'](0x194);}return _0x1824ea;};}function handleError(_0x48e436,_0x5aad19){_0x5aad19=_0x5aad19||0x1f4;return function(_0x158d70){logger[_0xbf0b('0x2e')](_0x158d70['stack']);if(_0x158d70[_0xbf0b('0x2f')]){delete _0x158d70['name'];}_0x48e436[_0xbf0b('0x23')](_0x5aad19)[_0xbf0b('0x30')](_0x158d70);};}function getInteractionUsers(_0x2a3993,_0x43e06c){return new BPromise(function(_0x5cb32b,_0x18b1a6){try{if(_0x43e06c[_0x2a3993['id']]){_0x2a3993[_0xbf0b('0x31')]=_[_0xbf0b('0x32')](_0x43e06c[_0x2a3993['id']],function(_0x41b738){return{'id':_0x41b738['id'],'fullname':_0x41b738[_0xbf0b('0x33')]};});}}catch(_0x503075){_0x18b1a6(_0x503075);}_0x5cb32b(_0x2a3993);});}function getInteractionTags(_0x48e783,_0x6d92d1){return new BPromise(function(_0xf0ee48,_0x38336f){try{if(_0x48e783['TagIds']){_0x48e783[_0xbf0b('0x34')]=[];_0x48e783[_0xbf0b('0x35')][_0xbf0b('0x36')](',')[_0xbf0b('0x37')](function(_0x12b937){_0x48e783[_0xbf0b('0x34')][_0xbf0b('0x38')](_0x6d92d1[_0x12b937]);});}delete _0x48e783[_0xbf0b('0x35')];}catch(_0x5a594e){_0x38336f(_0x5a594e);}_0xf0ee48(_0x48e783);});}function updateSmsInteraction(_0x44d025,_0x46b3f8,_0x15dac1){return new BPromise(function(_0x65735f,_0xfcee20){return getInteractionUsers(_0x44d025,_0x15dac1)['then'](function(_0x89c5ae){return getInteractionTags(_0x89c5ae,_0x46b3f8);})[_0xbf0b('0x2d')](function(_0x40bf75){_0x65735f(_0x40bf75);})[_0xbf0b('0x39')](function(_0x50b21e){_0xfcee20(_0x50b21e);});});}exports['index']=function(_0x52ae1e,_0x2f11a6){var _0x556c40={},_0x3262cf={},_0x57baeb={'count':0x0,'rows':[]};var _0x11a487=_['map'](db['SmsInteraction'][_0xbf0b('0x3a')],function(_0x1d7e2e){return{'name':_0x1d7e2e['fieldName'],'type':_0x1d7e2e['type']['key']};});_0x3262cf[_0xbf0b('0x3b')]=_[_0xbf0b('0x32')](_0x11a487,_0xbf0b('0x2f'));_0x3262cf[_0xbf0b('0x3c')]=_['keys'](_0x52ae1e[_0xbf0b('0x3c')]);_0x3262cf['filters']=_[_0xbf0b('0x3d')](_0x3262cf['model'],_0x3262cf['query']);_0x556c40[_0xbf0b('0x3e')]=_[_0xbf0b('0x3d')](_0x3262cf[_0xbf0b('0x3b')],qs[_0xbf0b('0x3f')](_0x52ae1e[_0xbf0b('0x3c')][_0xbf0b('0x3f')]));_0x556c40[_0xbf0b('0x3e')]=_0x556c40['attributes']['length']?_0x556c40[_0xbf0b('0x3e')]:_0x3262cf[_0xbf0b('0x3b')];if(!_0x52ae1e[_0xbf0b('0x3c')]['hasOwnProperty']('nolimit')){_0x556c40[_0xbf0b('0x25')]=qs[_0xbf0b('0x25')](_0x52ae1e[_0xbf0b('0x3c')][_0xbf0b('0x25')]);_0x556c40[_0xbf0b('0x28')]=qs[_0xbf0b('0x28')](_0x52ae1e[_0xbf0b('0x3c')][_0xbf0b('0x28')]);}_0x556c40[_0xbf0b('0x40')]=qs[_0xbf0b('0x41')](_0x52ae1e[_0xbf0b('0x3c')][_0xbf0b('0x41')]);_0x556c40['where']=qs['filters'](_[_0xbf0b('0x42')](_0x52ae1e[_0xbf0b('0x3c')],_0x3262cf[_0xbf0b('0x43')]),_0x11a487);var _0x306a95=[];var _0x5e903e=squel[_0xbf0b('0x44')]()[_0xbf0b('0x45')]('id')[_0xbf0b('0x45')]('name')[_0xbf0b('0x45')](_0xbf0b('0x46'))[_0xbf0b('0x47')](_0xbf0b('0x48'));var _0xdb9c8e=squel[_0xbf0b('0x44')]()[_0xbf0b('0x45')](_0xbf0b('0x49'))[_0xbf0b('0x45')](_0xbf0b('0x4a'))[_0xbf0b('0x45')]('ui.SmsInteractionId')[_0xbf0b('0x47')](_0xbf0b('0x4b'),'ui')[_0xbf0b('0x4c')](_0xbf0b('0x4d'),'u',_0xbf0b('0x4e'));var _0x257a23=squel['select']()[_0xbf0b('0x47')](_0xbf0b('0x4f'),'i')[_0xbf0b('0x4c')](_0xbf0b('0x50'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xbf0b('0x4c')](_0xbf0b('0x4d'),'o',_0xbf0b('0x51'))[_0xbf0b('0x4c')]('sms_accounts','a',_0xbf0b('0x52'))['left_join'](_0xbf0b('0x53'),'me','me.SmsInteractionId\x20=\x20i.id')[_0xbf0b('0x4c')]('sms_interaction_has_tags','it',_0xbf0b('0x54'))[_0xbf0b('0x4c')](_0xbf0b('0x48'),'t','t.id\x20=\x20it.TagId');var _0x48d4f7=squel[_0xbf0b('0x55')]();var _0x5d9862=[];var _0xd51afc=squel[_0xbf0b('0x55')]();var _0x5c2d66;if(_0x52ae1e['query'][_0xbf0b('0x56')]){_0x5c2d66=as['parseSearch'](_0x52ae1e[_0xbf0b('0x3c')][_0xbf0b('0x56')]);var _0x49773b=_0x5c2d66[_0xbf0b('0x57')];for(var _0x508ae4=0x0;_0x508ae4<_0x5c2d66[_0xbf0b('0x58')][_0xbf0b('0x59')];_0x508ae4++){var _0x3a303f=_0x5c2d66['conditions'][_0x508ae4];var _0x322266='i';var _0x10f5aa=_[_0xbf0b('0x5a')](_0x11a487,['name',_0x3a303f[_0xbf0b('0x45')]]);if(!_0x10f5aa){switch(_0x3a303f[_0xbf0b('0x45')]){case'unreadMessages':if(_0x3a303f['value']==0x1){_0x257a23['having']('`'+_0x3a303f[_0xbf0b('0x45')]+'`\x20=\x200');}else{_0x257a23['having']('`'+_0x3a303f['field']+_0xbf0b('0x5b'));}break;case _0xbf0b('0x5c'):if(_0x3a303f[_0xbf0b('0x5d')]==='$substring'){if(_0x3a303f['value'][_0xbf0b('0x36')]('\x20')[_0xbf0b('0x59')]>0x1){_0x48d4f7[_0x49773b]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xbf0b('0x5e')](_0x3a303f[_0xbf0b('0x5f')]),null);}else{var _0x2bf9fc='%'+_0x3a303f[_0xbf0b('0x5f')]+'%';_0x48d4f7[_0x49773b](_0xbf0b('0x60'),_0x2bf9fc,_0x2bf9fc,_0x2bf9fc);}}else{_0x10f5aa=_[_0xbf0b('0x5a')](_0x11a487,['name',_0xbf0b('0x61')]);_0x3a303f[_0xbf0b('0x45')]='ContactId';_0x3ebb27=as[_0xbf0b('0x62')](_0x322266,_0x10f5aa['type'],_0x3a303f);_0x48d4f7[_0x49773b](_0x3ebb27[_0xbf0b('0x63')],_0x3ebb27[_0xbf0b('0x5f')][_0xbf0b('0x64')],_0x3ebb27[_0xbf0b('0x5f')][_0xbf0b('0x22')]);}break;case'Tag':var _0x2991bf=_0x3a303f[_0xbf0b('0x5f')][_0xbf0b('0x36')](',')[_0xbf0b('0x32')](function(_0x4a3f4c){return Number(_0x4a3f4c);});_0x2991bf['forEach'](function(_0x150489){_0xd51afc['or'](_0xbf0b('0x65'),'%,'+_0x150489+',%');});_0x5d9862=_[_0xbf0b('0x66')](_0x5d9862,_0x2991bf);break;case _0xbf0b('0x67'):if(_0x3a303f[_0xbf0b('0x5d')]===_0xbf0b('0x68')){_0x48d4f7[_0x49773b](_0xbf0b('0x69'),'%'+_0x3a303f[_0xbf0b('0x5f')]+'%',null);}else{_0x10f5aa=_[_0xbf0b('0x5a')](_0x11a487,['name','UserId']);_0x3a303f['field']='UserId';_0x3ebb27=as[_0xbf0b('0x62')](_0x322266,_0x10f5aa[_0xbf0b('0x6a')],_0x3a303f);_0x48d4f7[_0x49773b](_0x3ebb27[_0xbf0b('0x63')],_0x3ebb27[_0xbf0b('0x5f')][_0xbf0b('0x64')],_0x3ebb27[_0xbf0b('0x5f')][_0xbf0b('0x22')]);}break;case'body':_0x3ebb27=as[_0xbf0b('0x62')]('me',null,_0x3a303f);_0x48d4f7[_0x49773b](_0x3ebb27[_0xbf0b('0x63')],_0x3ebb27['value'][_0xbf0b('0x64')],_0x3ebb27[_0xbf0b('0x5f')][_0xbf0b('0x22')]);break;}}else{var _0x3ebb27=as[_0xbf0b('0x62')](_0x322266,_0x10f5aa['type'],_0x3a303f);_0x48d4f7[_0x49773b](_0x3ebb27[_0xbf0b('0x63')],_0x3ebb27[_0xbf0b('0x5f')][_0xbf0b('0x64')],_0x3ebb27['value'][_0xbf0b('0x22')]);}}}else{var _0x16b7d4=_(_0x52ae1e[_0xbf0b('0x3c')])['keys']()[_0xbf0b('0x32')](function(_0x2d89b0){return _[_0xbf0b('0x6b')](_0x11a487,['name',_0x2d89b0])?_0x2d89b0:undefined;})[_0xbf0b('0x6c')]()[_0xbf0b('0x5f')]();if(!_[_0xbf0b('0x6d')](_0x16b7d4)){_0x16b7d4[_0xbf0b('0x37')](function(_0x2bb6c6){if(_0x2bb6c6===_0xbf0b('0x6e')){_0x257a23['where'](_0xbf0b('0x6f'),[][_0xbf0b('0x70')](_0x52ae1e[_0xbf0b('0x3c')][_0x2bb6c6]));}else if(_0x2bb6c6==='createdAt'){var _0x1170a3=JSON[_0xbf0b('0x71')](_0x52ae1e[_0xbf0b('0x3c')][_0x2bb6c6])[_0xbf0b('0x72')];var _0x376731=JSON[_0xbf0b('0x71')](_0x52ae1e[_0xbf0b('0x3c')][_0x2bb6c6])[_0xbf0b('0x73')];_0x257a23['where']('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x1170a3,_0x376731);}else{if(_0x52ae1e['query'][_0x2bb6c6]==='null'){_0x257a23['where']('i.'+_0x2bb6c6+'\x20IS\x20NULL');}else{_0x257a23[_0xbf0b('0x74')]('i.'+_0x2bb6c6+_0xbf0b('0x75'),_0x52ae1e['query'][_0x2bb6c6]);}}});}if(_0x52ae1e['query']['read']){if(_0x52ae1e[_0xbf0b('0x3c')][_0xbf0b('0x76')]==0x1){_0x257a23[_0xbf0b('0x77')](_0xbf0b('0x78'));}else{_0x257a23[_0xbf0b('0x77')](_0xbf0b('0x79'));}}if(_0x52ae1e[_0xbf0b('0x3c')]['tag']){_0x5d9862=_[_0xbf0b('0x7a')](_0x52ae1e[_0xbf0b('0x3c')][_0xbf0b('0x7b')])?_0x52ae1e[_0xbf0b('0x3c')]['tag']:new Array(_0x52ae1e['query']['tag']);_0x5d9862[_0xbf0b('0x37')](function(_0x4e6f94){_0xd51afc['or'](_0xbf0b('0x65'),'%,'+_0x4e6f94+',%');});}if(_0x52ae1e[_0xbf0b('0x3c')][_0xbf0b('0x7c')]){var _0x4d3cea=_0x52ae1e[_0xbf0b('0x3c')][_0xbf0b('0x7c')][_0xbf0b('0x7d')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0xbf0b('0x7e')](_0x4d3cea)){_0x48d4f7['or'](_0xbf0b('0x7f'),_0x4d3cea+'%')['or']('i.phone\x20LIKE\x20?',_0x4d3cea+'%');}else{_0x48d4f7['or'](_0xbf0b('0x80'),qs[_0xbf0b('0x5e')](_0x4d3cea))['or'](_0xbf0b('0x81'),_0x4d3cea+'%');}}}_0x257a23[_0xbf0b('0x74')](_0x48d4f7);_0x257a23[_0xbf0b('0x82')](_0xbf0b('0x83'));var _0xb9c15b={'type':db[_0xbf0b('0x84')][_0xbf0b('0x85')][_0xbf0b('0x86')],'raw':!![]};var _0x431629=_0x257a23[_0xbf0b('0x87')]();_0x431629[_0xbf0b('0x45')]('i.id');_0x431629[_0xbf0b('0x45')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xbf0b('0x88'));if(_0x556c40['order']){_0x556c40['order'][_0xbf0b('0x37')](function(_0x14cc07){var _0x15ec2d=_0x14cc07[0x0]===_0xbf0b('0x89')?_0x14cc07[0x0]:'i.'+_0x14cc07[0x0];_0x257a23[_0xbf0b('0x40')](_0x15ec2d,_0x14cc07[0x1]===_0xbf0b('0x8a')?![]:!![]);});}if(!_['isEmpty'](_0x5d9862)){_0x257a23[_0xbf0b('0x77')](_0xd51afc);_0x431629[_0xbf0b('0x74')](_0xbf0b('0x8b'),_0x5d9862);}BPromise['resolve']()[_0xbf0b('0x2d')](function(){if(!_0x5c2d66){if(_0x52ae1e[_0xbf0b('0x3c')][_0xbf0b('0x6e')])return;_0x431629[_0xbf0b('0x74')](_0xbf0b('0x8c'));_0x257a23[_0xbf0b('0x74')](_0xbf0b('0x8c'));return;}if(_0x52ae1e['user']['role']!==_0xbf0b('0x8d'))return;return _0x52ae1e[_0xbf0b('0x8e')]['getSmsAccounts']({'attributes':['id'],'raw':!![]})[_0xbf0b('0x2d')](function(_0x4bd651){if(_['isEmpty'](_0x4bd651)){_0x431629[_0xbf0b('0x74')](_0xbf0b('0x8f'));_0x257a23[_0xbf0b('0x74')](_0xbf0b('0x8f'));}else{_0x431629[_0xbf0b('0x74')](_0xbf0b('0x6f'),_[_0xbf0b('0x32')](_0x4bd651,'id'));_0x257a23[_0xbf0b('0x74')]('i.SmsAccountId\x20IN\x20?',_[_0xbf0b('0x32')](_0x4bd651,'id'));}});})[_0xbf0b('0x2d')](function(){if(_0x52ae1e[_0xbf0b('0x8e')]['role']===_0xbf0b('0x8d')&&!_0x5c2d66&&!_0x52ae1e[_0xbf0b('0x3c')]['SmsAccountId'])return[];return db['sequelize'][_0xbf0b('0x3c')](_0x431629['toString'](),_0xb9c15b);})[_0xbf0b('0x2d')](function(_0xe2557c){_0x57baeb[_0xbf0b('0x27')]=_0xe2557c[_0xbf0b('0x59')];if(_0x57baeb[_0xbf0b('0x27')]===0x0)return[];return db[_0xbf0b('0x90')][_0xbf0b('0x3c')](_0x5e903e[_0xbf0b('0x91')](),_0xb9c15b)[_0xbf0b('0x2d')](function(_0x192707){_0x306a95=_[_0xbf0b('0x92')](_0x192707,'id');_0xb9c15b=_[_0xbf0b('0x93')](_0xb9c15b,{'model':db[_0xbf0b('0x94')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x52ae1e['query'][_0xbf0b('0x3f')]){_0x556c40['attributes'][_0xbf0b('0x37')](function(_0x5dff37){_0x257a23[_0xbf0b('0x45')]('i.'+_0x5dff37);});}else{_0x257a23[_0xbf0b('0x45')](_0xbf0b('0x95'),_0xbf0b('0x88'));_0x257a23['field'](_0xbf0b('0x96'),'Account.key');_0x257a23['field'](_0xbf0b('0x97'),_0xbf0b('0x98'));_0x257a23[_0xbf0b('0x45')](_0xbf0b('0x99'),'contactName');_0x257a23[_0xbf0b('0x45')]('i.*');_0x257a23[_0xbf0b('0x45')](_0xbf0b('0x9a'),'Contact.firstName');_0x257a23[_0xbf0b('0x45')](_0xbf0b('0x9b'),_0xbf0b('0x9c'));_0x257a23[_0xbf0b('0x45')](_0xbf0b('0x9d'),'Contact.email');_0x257a23[_0xbf0b('0x45')](_0xbf0b('0x9e'),_0xbf0b('0x9f'));_0x257a23[_0xbf0b('0x45')](_0xbf0b('0xa0'),_0xbf0b('0xa1'));_0x257a23[_0xbf0b('0x45')](_0xbf0b('0xa2'),_0xbf0b('0xa3'));_0x257a23[_0xbf0b('0x45')](_0xbf0b('0xa4'),_0xbf0b('0xa5'));_0x257a23[_0xbf0b('0x45')](_0xbf0b('0xa6'),'Owner.internal');_0x257a23['field'](_0xbf0b('0xa7'),_0xbf0b('0x35'));}if(_0x556c40['limit'])_0x257a23['limit'](_0x556c40['limit']);if(_0x556c40['offset'])_0x257a23['offset'](_0x556c40[_0xbf0b('0x28')]);return db[_0xbf0b('0x90')][_0xbf0b('0x3c')](_0x257a23[_0xbf0b('0x91')](),_0xb9c15b);})[_0xbf0b('0x2d')](function(_0x3882d1){if(_0x3882d1[_0xbf0b('0x59')]>0x0)_0xdb9c8e[_0xbf0b('0x74')]('ui.SmsInteractionId\x20IN\x20?',_[_0xbf0b('0x32')](_0x3882d1,'id'));return db[_0xbf0b('0x90')]['query'](_0xdb9c8e[_0xbf0b('0x91')](),_0xb9c15b)['then'](function(_0x124b67){var _0x574d0d=_['groupBy'](_0x124b67,_0xbf0b('0xa8'));var _0x318bc7=[];_0x3882d1[_0xbf0b('0x37')](function(_0x24da9e){_0x318bc7[_0xbf0b('0x38')](updateSmsInteraction(_0x24da9e,_0x306a95,_0x574d0d));});return BPromise[_0xbf0b('0xa9')](_0x318bc7);});});})[_0xbf0b('0x2d')](function(_0x52f9e8){_0x57baeb['rows']=_0x52f9e8;return _0x57baeb;})['then'](respondWithFilteredResult(_0x2f11a6,_0x556c40))[_0xbf0b('0x39')](handleError(_0x2f11a6,null));};exports[_0xbf0b('0xaa')]=function(_0x3d8b7b,_0x542dcb){var _0x2b6151={'raw':![],'where':{'id':_0x3d8b7b[_0xbf0b('0xab')]['id']}},_0x1f0b26={};_0x1f0b26[_0xbf0b('0x3b')]=_['keys'](db[_0xbf0b('0x94')][_0xbf0b('0x3a')]);_0x1f0b26['query']=_['keys'](_0x3d8b7b[_0xbf0b('0x3c')]);_0x1f0b26[_0xbf0b('0x43')]=_[_0xbf0b('0x3d')](_0x1f0b26[_0xbf0b('0x3b')],_0x1f0b26[_0xbf0b('0x3c')]);_0x2b6151[_0xbf0b('0x3e')]=_[_0xbf0b('0x3d')](_0x1f0b26[_0xbf0b('0x3b')],qs[_0xbf0b('0x3f')](_0x3d8b7b[_0xbf0b('0x3c')][_0xbf0b('0x3f')]));_0x2b6151['attributes']=_0x2b6151[_0xbf0b('0x3e')][_0xbf0b('0x59')]?_0x2b6151['attributes']:_0x1f0b26[_0xbf0b('0x3b')];if(_0x3d8b7b['query'][_0xbf0b('0xac')]){_0x2b6151[_0xbf0b('0xad')]=[{'all':!![]}];}_0x2b6151=_[_0xbf0b('0x93')]({},_0x2b6151,_0x3d8b7b['options']);return db[_0xbf0b('0x94')]['find'](_0x2b6151)[_0xbf0b('0x2d')](handleEntityNotFound(_0x542dcb,null))[_0xbf0b('0x2d')](respondWithResult(_0x542dcb,null))[_0xbf0b('0x39')](handleError(_0x542dcb,null));};exports[_0xbf0b('0xae')]=function(_0x176b66,_0xe2d84d){return db['SmsInteraction'][_0xbf0b('0xae')](_0x176b66[_0xbf0b('0xaf')],{})[_0xbf0b('0x2d')](respondWithResult(_0xe2d84d,0xc9))['catch'](handleError(_0xe2d84d,null));};exports[_0xbf0b('0xb0')]=function(_0x21333b,_0x3bbb16){if(_0x21333b['body']['id']){delete _0x21333b[_0xbf0b('0xaf')]['id'];}return db[_0xbf0b('0x94')]['find']({'where':{'id':_0x21333b['params']['id']}})[_0xbf0b('0x2d')](handleEntityNotFound(_0x3bbb16,null))[_0xbf0b('0x2d')](saveUpdates(_0x21333b[_0xbf0b('0xaf')],null))[_0xbf0b('0x2d')](respondWithResult(_0x3bbb16,null))[_0xbf0b('0x39')](handleError(_0x3bbb16,null));};exports[_0xbf0b('0xb1')]=function(_0x12102b,_0x2bf3d2){return db[_0xbf0b('0x94')][_0xbf0b('0x5a')]({'where':{'id':_0x12102b['params']['id']}})[_0xbf0b('0x2d')](handleEntityNotFound(_0x2bf3d2,null))[_0xbf0b('0x2d')](removeEntity(_0x2bf3d2,null))[_0xbf0b('0x39')](handleError(_0x2bf3d2,null));};exports['describe']=function(_0x29d08b,_0x2eb156){return db[_0xbf0b('0x94')]['describe']()[_0xbf0b('0x2d')](respondWithResult(_0x2eb156,null))['catch'](handleError(_0x2eb156,null));};exports[_0xbf0b('0xb2')]=function(_0x5a2237,_0x25141c,_0x43cd1d){return db[_0xbf0b('0xb3')][_0xbf0b('0x5a')]({'where':{'id':_0x5a2237['params']['id']}})[_0xbf0b('0x2d')](handleEntityNotFound(_0x25141c,null))[_0xbf0b('0x2d')](function(_0x5ca282){if(_0x5ca282){return _0x5ca282['addMessage'](_0x5a2237[_0xbf0b('0xaf')][_0xbf0b('0xb4')],_[_0xbf0b('0xb5')](_0x5a2237[_0xbf0b('0xaf')],[_0xbf0b('0xb4'),'id'])||{});}})[_0xbf0b('0x2d')](respondWithResult(_0x25141c,null))['catch'](handleError(_0x25141c,null));};exports['getMessages']=function(_0x45f71d,_0x10f367,_0x53f2d2){var _0x31f3fb={'raw':![],'where':{}};var _0x21b203={};var _0x41869c={'count':0x0,'rows':[]};return db[_0xbf0b('0x94')][_0xbf0b('0xb6')]({'where':{'id':_0x45f71d[_0xbf0b('0xab')]['id']}})[_0xbf0b('0x2d')](handleEntityNotFound(_0x10f367,null))['then'](function(_0x333cb0){if(_0x333cb0){_0x21b203[_0xbf0b('0x3b')]=_[_0xbf0b('0xb7')](db[_0xbf0b('0xb3')][_0xbf0b('0x3a')]);_0x21b203[_0xbf0b('0x3c')]=_[_0xbf0b('0xb7')](_0x45f71d['query']);_0x21b203[_0xbf0b('0x43')]=_[_0xbf0b('0x3d')](_0x21b203[_0xbf0b('0x3b')],_0x21b203[_0xbf0b('0x3c')]);_0x31f3fb[_0xbf0b('0x3e')]=_[_0xbf0b('0x3d')](_0x21b203['model'],qs[_0xbf0b('0x3f')](_0x45f71d[_0xbf0b('0x3c')][_0xbf0b('0x3f')]));_0x31f3fb[_0xbf0b('0x3e')]=_0x31f3fb['attributes'][_0xbf0b('0x59')]?_0x31f3fb[_0xbf0b('0x3e')]:_0x21b203[_0xbf0b('0x3b')];if(!_0x45f71d[_0xbf0b('0x3c')][_0xbf0b('0xb8')](_0xbf0b('0xb9'))){_0x31f3fb[_0xbf0b('0x25')]=qs['limit'](_0x45f71d[_0xbf0b('0x3c')][_0xbf0b('0x25')]);_0x31f3fb['offset']=qs[_0xbf0b('0x28')](_0x45f71d[_0xbf0b('0x3c')][_0xbf0b('0x28')]);}_0x31f3fb['order']=qs[_0xbf0b('0x41')](_0x45f71d[_0xbf0b('0x3c')]['sort']);_0x31f3fb[_0xbf0b('0x74')]=qs[_0xbf0b('0x43')](_[_0xbf0b('0x42')](_0x45f71d[_0xbf0b('0x3c')],_0x21b203['filters']));_0x31f3fb[_0xbf0b('0x74')][_0xbf0b('0xa8')]=_0x333cb0['id'];if(_0x45f71d['query'][_0xbf0b('0x7c')]){_0x31f3fb[_0xbf0b('0x74')]=_[_0xbf0b('0x93')](_0x31f3fb[_0xbf0b('0x74')],{'$or':_[_0xbf0b('0x32')](_0x31f3fb[_0xbf0b('0x3e')],function(_0x1b2d5f){var _0xfae3eb={};_0xfae3eb[_0x1b2d5f]={'$like':'%'+_0x45f71d[_0xbf0b('0x3c')]['filter']+'%'};return _0xfae3eb;})});}if(_0x45f71d[_0xbf0b('0x3c')]['$gte']){var _0x5bd98f=_0x45f71d['query'][_0xbf0b('0x72')][_0xbf0b('0x36')](',');var _0x448778={};_0x448778[_0x5bd98f[0x0]]={'$gte':moment(_0x5bd98f[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x31f3fb[_0xbf0b('0x74')]=_['merge'](_0x31f3fb[_0xbf0b('0x74')],_0x448778);}_0x31f3fb=_[_0xbf0b('0x93')]({},_0x31f3fb,_0x45f71d[_0xbf0b('0xba')]);return db[_0xbf0b('0xb3')]['count']({'where':_0x31f3fb[_0xbf0b('0x74')]})[_0xbf0b('0x2d')](function(_0x1e8d43){_0x41869c[_0xbf0b('0x27')]=_0x1e8d43;if(_0x45f71d['query'][_0xbf0b('0xac')]){_0x31f3fb[_0xbf0b('0xad')]=[{'all':!![]}];}return db['SmsMessage'][_0xbf0b('0xbb')](_0x31f3fb);})['then'](function(_0x25da1d){_0x41869c[_0xbf0b('0xbc')]=_0x25da1d;return _0x41869c;});}})[_0xbf0b('0x2d')](respondWithFilteredResult(_0x10f367,_0x31f3fb))[_0xbf0b('0x39')](handleError(_0x10f367,null));};exports['addTags']=function(_0x219000,_0x3d1c76,_0x137311){return db[_0xbf0b('0x94')][_0xbf0b('0x5a')]({'where':{'id':_0x219000[_0xbf0b('0xab')]['id']}})[_0xbf0b('0x2d')](handleEntityNotFound(_0x3d1c76,null))[_0xbf0b('0x2d')](function(_0x5dd5e7){if(_0x5dd5e7){return _0x5dd5e7[_0xbf0b('0xbd')](_0x219000[_0xbf0b('0xaf')][_0xbf0b('0xb4')],_['omit'](_0x219000[_0xbf0b('0xaf')],[_0xbf0b('0xb4'),'id'])||{})[_0xbf0b('0xbe')](function(){return db['Tag']['findAll']({'attributes':['id',_0xbf0b('0x2f'),'color'],'where':{'id':_0x219000[_0xbf0b('0xaf')][_0xbf0b('0xb4')]}});})[_0xbf0b('0x2d')](function(_0x2c8bfd){socket[_0xbf0b('0xbf')](_0xbf0b('0xc0'),{'id':Number(_0x219000[_0xbf0b('0xab')]['id']),'tags':_0x2c8bfd||[]});return{'id':Number(_0x219000[_0xbf0b('0xab')]['id']),'tags':_0x2c8bfd||[]};});}})[_0xbf0b('0x2d')](respondWithResult(_0x3d1c76,null))[_0xbf0b('0x39')](handleError(_0x3d1c76,null));};exports['removeTags']=function(_0x1488aa,_0x37a48c,_0x316af2){return db['SmsInteraction'][_0xbf0b('0x5a')]({'where':{'id':_0x1488aa[_0xbf0b('0xab')]['id']}})[_0xbf0b('0x2d')](handleEntityNotFound(_0x37a48c,null))[_0xbf0b('0x2d')](function(_0x33ef62){if(_0x33ef62){return _0x33ef62[_0xbf0b('0xc1')](_0x1488aa['query']['ids']);}})[_0xbf0b('0x2d')](respondWithStatusCode(_0x37a48c,null))[_0xbf0b('0x39')](handleError(_0x37a48c,null));};exports[_0xbf0b('0xc2')]=function(_0x1926cb,_0x4e4c50){var _0x40c116=moment()[_0xbf0b('0xc3')]()[_0xbf0b('0x91')]();var _0x60fc98=path[_0xbf0b('0xc4')](config[_0xbf0b('0xc5')],_0xbf0b('0xc6'),_0xbf0b('0xc7'),_0xbf0b('0xc8'));var _0x52a2ae=path[_0xbf0b('0xc4')](config[_0xbf0b('0xc5')],_0xbf0b('0xc6'),_0xbf0b('0xc7'),_0xbf0b('0xc9'));var _0x22188a=path['join'](_0x60fc98,_0x40c116);var _0x2f5323=util[_0xbf0b('0xca')](_0xbf0b('0xcb'),_0x1926cb[_0xbf0b('0xab')]['id'],_0x40c116);var _0x15ecdc=path[_0xbf0b('0xc4')](_0x60fc98,_0x2f5323);var _0x1566c6=[];_0x1566c6[_0xbf0b('0x38')]({'model':db[_0xbf0b('0x67')],'as':_0xbf0b('0x67'),'attributes':['id',_0xbf0b('0x33')],'raw':!![]});_0x1566c6[_0xbf0b('0x38')]({'model':db['CmContact'],'as':'Contact','attributes':['id','firstName',_0xbf0b('0xcc')],'raw':!![]});var _0x1e1e3e=[{'model':db['SmsMessage'],'as':_0xbf0b('0xcd'),'attributes':['id',_0xbf0b('0xaf'),_0xbf0b('0xce'),'direction',_0xbf0b('0xcf'),_0xbf0b('0x76')],'include':_0x1566c6}];_0x1e1e3e['push']({'model':db[_0xbf0b('0xd0')],'as':_0xbf0b('0xd1'),'attributes':['id',_0xbf0b('0x2f')]});_0x1e1e3e[_0xbf0b('0x38')]({'model':db[_0xbf0b('0x67')],'as':_0xbf0b('0xd2'),'attributes':['id',_0xbf0b('0x33')]});return db[_0xbf0b('0x94')][_0xbf0b('0x5a')]({'where':{'id':_0x1926cb[_0xbf0b('0xab')]['id']},'include':_0x1e1e3e})[_0xbf0b('0x2d')](handleEntityNotFound(_0x4e4c50,null))['then'](function(_0x4663e3){if(_0x4663e3){var _0x2a40af=_0x4663e3['get']({'plain':!![]});fs[_0xbf0b('0xd3')](_0x22188a);var _0x52baf4={'channel':_0xbf0b('0xd4'),'account':_0x2a40af[_0xbf0b('0xd1')][_0xbf0b('0x2f')],'agent':_0x2a40af[_0xbf0b('0xd2')]?_0x2a40af[_0xbf0b('0xd2')][_0xbf0b('0x33')]:_0xbf0b('0xd5'),'createdAt':moment(_0x2a40af['createdAt'])['format'](_0xbf0b('0xd6'))[_0xbf0b('0x91')](),'closedAt':_0x2a40af['closed']?moment(_0x2a40af[_0xbf0b('0xd7')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0xbf0b('0x91')]():'','disposition':_0x2a40af[_0xbf0b('0xd8')],'messages':_(_0x2a40af[_0xbf0b('0xcd')])[_0xbf0b('0x7c')]({'secret':![]})[_0xbf0b('0x32')](function(_0x3274ff){return{'date':moment(_0x3274ff[_0xbf0b('0xce')])[_0xbf0b('0xca')](_0xbf0b('0xd6'))[_0xbf0b('0x91')](),'sender':_0x3274ff[_0xbf0b('0xd9')]==='out'?_0x3274ff[_0xbf0b('0x67')]?_0x3274ff[_0xbf0b('0x67')][_0xbf0b('0x33')]:_0xbf0b('0xda'):_0x3274ff[_0xbf0b('0x5c')][_0xbf0b('0xdb')]+(_0x3274ff['Contact'][_0xbf0b('0xcc')]?'\x20'+_0x3274ff[_0xbf0b('0x5c')][_0xbf0b('0xcc')]:''),'body':_0x3274ff[_0xbf0b('0xaf')],'direction':_0x3274ff['direction']==='out'?'A':'C','secret':_0x3274ff['secret'],'read':_0x3274ff[_0xbf0b('0x76')]};})[_0xbf0b('0x5f')]()};return ejs[_0xbf0b('0xdc')](path[_0xbf0b('0xc4')](config[_0xbf0b('0xc5')],_0xbf0b('0xc6'),_0xbf0b('0xdd'),_0xbf0b('0xde')),{'interaction':_0x52baf4})[_0xbf0b('0x2d')](function(_0x24a010){var _0x2bfb33=path['join'](_0x22188a,_0xbf0b('0xdf')+_0x2a40af['id']+'-'+_0x40c116+_0xbf0b('0xe0'));var _0x2e89d9={'path':_0x2bfb33,'channel':_0xbf0b('0xd4'),'interactionId':_0x2a40af['id']};return pdf[_0xbf0b('0xe1')](_0x24a010,_0x2e89d9);})[_0xbf0b('0x2d')](function(){return new BPromise(function(_0x25130f,_0x4f3657){zipdir(_0x22188a,{'saveTo':_0x15ecdc},function(_0x35354c,_0x372333){if(_0x35354c)return _0x4f3657(_0x35354c);return _0x25130f(_0x372333);});})['then'](function(){return new BPromise(function(_0x51a925,_0x10b9d7){rimraf(_0x22188a,function(_0x8a9d99){if(_0x8a9d99)_0x10b9d7(_0x8a9d99);return _0x51a925();});});})[_0xbf0b('0x2d')](function(){return _0x4e4c50[_0xbf0b('0xc2')](_0x15ecdc,_0x2f5323,function(_0x468379){if(_0x468379){console[_0xbf0b('0xe2')]('err',_0x468379);}else{fs['unlinkSync'](_0x15ecdc);}});});});}else{return _0x4e4c50[_0xbf0b('0x21')](0xc8);}})[_0xbf0b('0x39')](handleError(_0x4e4c50,null));};
\ No newline at end of file
index dda4264..11328dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x430c=['setMaxListeners','getUsers','setDataValue','Users','map','findAll','then','length','emit','catch','hook','events','../../mysqldb','SmsMessage'];(function(_0x2d9c6a,_0x59393d){var _0xf3c918=function(_0x4f3f26){while(--_0x4f3f26){_0x2d9c6a['push'](_0x2d9c6a['shift']());}};_0xf3c918(++_0x59393d);}(_0x430c,0x1a1));var _0xc430=function(_0x15b380,_0x1a3c5f){_0x15b380=_0x15b380-0x0;var _0x232c5c=_0x430c[_0x15b380];return _0x232c5c;};'use strict';var EventEmitter=require(_0xc430('0x0'));var SmsInteraction=require('../../mysqldb')['db']['SmsInteraction'];var SmsMessage=require(_0xc430('0x1'))['db'][_0xc430('0x2')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0xc430('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x47d8b9){return function(_0x338a82,_0x2408f5,_0x50b256){_0x338a82[_0xc430('0x4')]({'attributes':['id'],'raw':!![]})['then'](function(_0x212354){_0x338a82[_0xc430('0x5')](_0xc430('0x6'),_0x212354[_0xc430('0x7')](function(_0x2e23f8){return{'id':_0x2e23f8['id']};}));return SmsMessage[_0xc430('0x8')]({'where':{'SmsInteractionId':_0x338a82['id'],'direction':'in','read':![]},'raw':!![]});})[_0xc430('0x9')](function(_0x115814){_0x338a82[_0xc430('0x5')]('unreadMessages',_0x115814[_0xc430('0xa')]);SmsInteractionEvents[_0xc430('0xb')](_0x47d8b9+':'+_0x338a82['id'],_0x338a82);SmsInteractionEvents['emit'](_0x47d8b9,_0x338a82);_0x50b256(null);})[_0xc430('0xc')](_0x50b256(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsInteraction[_0xc430('0xd')](e,emitEvent(event));}}module['exports']=SmsInteractionEvents;
\ No newline at end of file
+var _0x4e2e=['unreadMessages','emit','catch','hasOwnProperty','hook','../../mysqldb','SmsInteraction','SmsMessage','setMaxListeners','save','remove','getUsers','then','setDataValue','Users','map','findAll'];(function(_0x1a7db4,_0x1731a5){var _0x558811=function(_0x5e70d4){while(--_0x5e70d4){_0x1a7db4['push'](_0x1a7db4['shift']());}};_0x558811(++_0x1731a5);}(_0x4e2e,0x1f2));var _0xe4e2=function(_0x2e7c1,_0x44dc7e){_0x2e7c1=_0x2e7c1-0x0;var _0xc436d0=_0x4e2e[_0x2e7c1];return _0xc436d0;};'use strict';var EventEmitter=require('events');var SmsInteraction=require(_0xe4e2('0x0'))['db'][_0xe4e2('0x1')];var SmsMessage=require(_0xe4e2('0x0'))['db'][_0xe4e2('0x2')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0xe4e2('0x3')](0x0);var events={'afterCreate':_0xe4e2('0x4'),'afterUpdate':'update','afterDestroy':_0xe4e2('0x5')};function emitEvent(_0x417dd4){return function(_0x2fb128,_0x38c84c,_0x48e83d){_0x2fb128[_0xe4e2('0x6')]({'attributes':['id'],'raw':!![]})[_0xe4e2('0x7')](function(_0x1c4e64){_0x2fb128[_0xe4e2('0x8')](_0xe4e2('0x9'),_0x1c4e64[_0xe4e2('0xa')](function(_0x1e9508){return{'id':_0x1e9508['id']};}));return SmsMessage[_0xe4e2('0xb')]({'where':{'SmsInteractionId':_0x2fb128['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0xd81011){_0x2fb128[_0xe4e2('0x8')](_0xe4e2('0xc'),_0xd81011['length']);SmsInteractionEvents[_0xe4e2('0xd')](_0x417dd4+':'+_0x2fb128['id'],_0x2fb128);SmsInteractionEvents[_0xe4e2('0xd')](_0x417dd4,_0x2fb128);_0x48e83d(null);})[_0xe4e2('0xe')](_0x48e83d(null));};}for(var e in events){if(events[_0xe4e2('0xf')](e)){var event=events[e];SmsInteraction[_0xe4e2('0x10')](e,emitEvent(event));}}module['exports']=SmsInteractionEvents;
\ No newline at end of file
index ecf506a..f0b4c0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc14a=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','./smsInteraction.attributes','exports','SmsInteraction','sms_interactions','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x37eabb,_0x29ed58){var _0x1b7df3=function(_0xb86545){while(--_0xb86545){_0x37eabb['push'](_0x37eabb['shift']());}};_0x1b7df3(++_0x29ed58);}(_0xc14a,0x170));var _0xac14=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xc14a[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0xac14('0x0'));var util=require(_0xac14('0x1'));var logger=require(_0xac14('0x2'))(_0xac14('0x3'));var moment=require(_0xac14('0x4'));var BPromise=require(_0xac14('0x5'));var rp=require(_0xac14('0x6'));var fs=require('fs');var path=require(_0xac14('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xac14('0x8'));module[_0xac14('0x9')]=function(_0x5bab5a,_0x5b0543){return _0x5bab5a['define'](_0xac14('0xa'),attributes,{'tableName':_0xac14('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4c227b,_0x584c02,_0x37817d){if(_0x4c227b[_0xac14('0xc')]('closed')){_0x4c227b[_0xac14('0xd')]=moment()[_0xac14('0xe')](_0xac14('0xf'));}_0x37817d(null,_0x4c227b);}}});};
\ No newline at end of file
+var _0x8101=['SmsInteraction','sms_interactions','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0xa30c5d,_0x2934f6){var _0x280310=function(_0x2faa66){while(--_0x2faa66){_0xa30c5d['push'](_0xa30c5d['shift']());}};_0x280310(++_0x2934f6);}(_0x8101,0x1b7));var _0x1810=function(_0x112aa9,_0x51a391){_0x112aa9=_0x112aa9-0x0;var _0xebc169=_0x8101[_0x112aa9];return _0xebc169;};'use strict';var _=require(_0x1810('0x0'));var util=require(_0x1810('0x1'));var logger=require(_0x1810('0x2'))('api');var moment=require(_0x1810('0x3'));var BPromise=require(_0x1810('0x4'));var rp=require(_0x1810('0x5'));var fs=require('fs');var path=require(_0x1810('0x6'));var rimraf=require(_0x1810('0x7'));var config=require(_0x1810('0x8'));var attributes=require('./smsInteraction.attributes');module[_0x1810('0x9')]=function(_0x2d92b4,_0x2f61b8){return _0x2d92b4[_0x1810('0xa')](_0x1810('0xb'),attributes,{'tableName':_0x1810('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x2d665b,_0x32b29c,_0x3124d7){if(_0x2d665b[_0x1810('0xd')](_0x1810('0xe'))){_0x2d665b[_0x1810('0xf')]=moment()[_0x1810('0x10')](_0x1810('0x11'));}_0x3124d7(null,_0x2d665b);}}});};
\ No newline at end of file
index 55fb702..7749c2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16a0=['randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','SmsInteraction','update','body','options','raw','where','limit','UpdateSmsInteraction','addTags','ids','omit','spread','lodash','util','moment','bluebird'];(function(_0x5d2792,_0x5d4e66){var _0x4921b6=function(_0x41ae67){while(--_0x41ae67){_0x5d2792['push'](_0x5d2792['shift']());}};_0x4921b6(++_0x5d4e66);}(_0x16a0,0x16d));var _0x016a=function(_0x561fa1,_0x4386c5){_0x561fa1=_0x561fa1-0x0;var _0x35267f=_0x16a0[_0x561fa1];return _0x35267f;};'use strict';var _=require(_0x016a('0x0'));var util=require(_0x016a('0x1'));var moment=require(_0x016a('0x2'));var BPromise=require(_0x016a('0x3'));var rs=require(_0x016a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x016a('0x5'))['db'];var utils=require(_0x016a('0x6'));var logger=require(_0x016a('0x7'))(_0x016a('0x8'));var config=require(_0x016a('0x9'));var jayson=require(_0x016a('0xa'));var client=jayson['client'][_0x016a('0xb')]({'port':0x232a});config[_0x016a('0xc')]=_[_0x016a('0xd')](config['redis'],{'host':_0x016a('0xe'),'port':0x18eb});var socket=require(_0x016a('0xf'))(new Redis(config[_0x016a('0xc')]));require('./smsInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x5c7a84,_0x28a166,_0x151529){return new BPromise(function(_0x2dd2b1,_0x385f8f){return client[_0x016a('0x10')](_0x5c7a84,_0x151529)[_0x016a('0x11')](function(_0x242d9c){logger[_0x016a('0x12')](_0x016a('0x13'),_0x28a166,_0x016a('0x14'));logger[_0x016a('0x15')](_0x016a('0x16'),_0x28a166,'request\x20sent',JSON[_0x016a('0x17')](_0x242d9c));if(_0x242d9c['error']){if(_0x242d9c[_0x016a('0x18')][_0x016a('0x19')]===0x1f4){logger[_0x016a('0x18')](_0x016a('0x13'),_0x28a166,_0x242d9c['error']['message']);return _0x385f8f(_0x242d9c[_0x016a('0x18')]['message']);}logger['error']('SmsInteraction,\x20%s,\x20%s',_0x28a166,_0x242d9c[_0x016a('0x18')][_0x016a('0x1a')]);return _0x2dd2b1(_0x242d9c[_0x016a('0x18')][_0x016a('0x1a')]);}else{logger[_0x016a('0x12')](_0x016a('0x13'),_0x28a166,_0x016a('0x14'));_0x2dd2b1(_0x242d9c[_0x016a('0x1b')][_0x016a('0x1a')]);}})[_0x016a('0x1c')](function(_0x2578e9){logger['error']('SmsInteraction,\x20%s,\x20%s',_0x28a166,_0x2578e9);_0x385f8f(_0x2578e9);});});}exports['UpdateSmsInteraction']=function(_0x20000b){var _0x5393e9=this;return new Promise(function(_0x34f711,_0xf2dea7){return db[_0x016a('0x1d')][_0x016a('0x1e')](_0x20000b[_0x016a('0x1f')],{'raw':_0x20000b[_0x016a('0x20')]?_0x20000b[_0x016a('0x20')][_0x016a('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x20000b[_0x016a('0x20')]?_0x20000b['options'][_0x016a('0x22')]||null:null,'attributes':_0x20000b[_0x016a('0x20')]?_0x20000b[_0x016a('0x20')]['attributes']||null:null,'limit':_0x20000b[_0x016a('0x20')]?_0x20000b[_0x016a('0x20')][_0x016a('0x23')]||null:null})['then'](function(_0x18bcc4){logger['info']('UpdateSmsInteraction',_0x20000b);logger[_0x016a('0x15')](_0x016a('0x24'),_0x20000b,JSON['stringify'](_0x18bcc4));_0x34f711(_0x18bcc4);})['catch'](function(_0x4dd1db){logger[_0x016a('0x18')](_0x016a('0x24'),_0x4dd1db[_0x016a('0x1a')],_0x20000b);_0xf2dea7(_0x5393e9[_0x016a('0x18')](0x1f4,_0x4dd1db[_0x016a('0x1a')]));});});};exports['AddTagsToSmsInteraction']=function(_0x8a7612){return new Promise(function(_0x20123a,_0x85deb5){return db[_0x016a('0x1d')]['find']({'where':_0x8a7612[_0x016a('0x20')]?_0x8a7612[_0x016a('0x20')][_0x016a('0x22')]||null:null})['then'](function(_0x44ce5b){if(_0x44ce5b){return _0x44ce5b[_0x016a('0x25')](_0x8a7612[_0x016a('0x1f')][_0x016a('0x26')],_[_0x016a('0x27')](_0x8a7612[_0x016a('0x1f')],[_0x016a('0x26'),'id'])||{});}})[_0x016a('0x28')](function(_0x2718e4){logger['info']('AddTags',_0x8a7612);logger[_0x016a('0x15')]('AddTags',_0x8a7612,JSON[_0x016a('0x17')](_0x2718e4));_0x20123a(_0x2718e4);})[_0x016a('0x1c')](function(_0x4232a9){logger[_0x016a('0x18')]('AddTags',_0x4232a9[_0x016a('0x1a')],_0x8a7612);_0x85deb5(_this[_0x016a('0x18')](0x1f4,_0x4232a9['message']));});});};
\ No newline at end of file
+var _0x599d=['message','result','catch','UpdateSmsInteraction','body','options','where','attributes','limit','AddTagsToSmsInteraction','SmsInteraction','find','ids','spread','AddTags','lodash','bluebird','randomstring','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x26c10f,_0x5411be){var _0x17e0b8=function(_0x535f1b){while(--_0x535f1b){_0x26c10f['push'](_0x26c10f['shift']());}};_0x17e0b8(++_0x5411be);}(_0x599d,0x137));var _0xd599=function(_0x29911c,_0x20f5fe){_0x29911c=_0x29911c-0x0;var _0x1549f1=_0x599d[_0x29911c];return _0x1549f1;};'use strict';var _=require(_0xd599('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xd599('0x1'));var rs=require(_0xd599('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xd599('0x3'))('rpc');var config=require('../../config/environment');var jayson=require(_0xd599('0x4'));var client=jayson[_0xd599('0x5')][_0xd599('0x6')]({'port':0x232a});config[_0xd599('0x7')]=_[_0xd599('0x8')](config['redis'],{'host':_0xd599('0x9'),'port':0x18eb});var socket=require(_0xd599('0xa'))(new Redis(config[_0xd599('0x7')]));require(_0xd599('0xb'))['register'](socket);function respondWithRpcPromise(_0xf6d699,_0x551655,_0x3f052f){return new BPromise(function(_0x1da5be,_0x69fc88){return client[_0xd599('0xc')](_0xf6d699,_0x3f052f)[_0xd599('0xd')](function(_0xf6f49d){logger[_0xd599('0xe')](_0xd599('0xf'),_0x551655,_0xd599('0x10'));logger[_0xd599('0x11')](_0xd599('0x12'),_0x551655,_0xd599('0x10'),JSON[_0xd599('0x13')](_0xf6f49d));if(_0xf6f49d['error']){if(_0xf6f49d[_0xd599('0x14')][_0xd599('0x15')]===0x1f4){logger['error'](_0xd599('0xf'),_0x551655,_0xf6f49d[_0xd599('0x14')]['message']);return _0x69fc88(_0xf6f49d[_0xd599('0x14')][_0xd599('0x16')]);}logger[_0xd599('0x14')](_0xd599('0xf'),_0x551655,_0xf6f49d[_0xd599('0x14')][_0xd599('0x16')]);return _0x1da5be(_0xf6f49d[_0xd599('0x14')][_0xd599('0x16')]);}else{logger[_0xd599('0xe')]('SmsInteraction,\x20%s,\x20%s',_0x551655,_0xd599('0x10'));_0x1da5be(_0xf6f49d[_0xd599('0x17')][_0xd599('0x16')]);}})[_0xd599('0x18')](function(_0x27903f){logger[_0xd599('0x14')](_0xd599('0xf'),_0x551655,_0x27903f);_0x69fc88(_0x27903f);});});}exports[_0xd599('0x19')]=function(_0x2b5369){var _0x273a3c=this;return new Promise(function(_0x1de537,_0x48df65){return db['SmsInteraction']['update'](_0x2b5369[_0xd599('0x1a')],{'raw':_0x2b5369[_0xd599('0x1b')]?_0x2b5369['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2b5369[_0xd599('0x1b')]?_0x2b5369[_0xd599('0x1b')][_0xd599('0x1c')]||null:null,'attributes':_0x2b5369['options']?_0x2b5369[_0xd599('0x1b')][_0xd599('0x1d')]||null:null,'limit':_0x2b5369[_0xd599('0x1b')]?_0x2b5369[_0xd599('0x1b')][_0xd599('0x1e')]||null:null})[_0xd599('0xd')](function(_0x3209cf){logger[_0xd599('0xe')](_0xd599('0x19'),_0x2b5369);logger[_0xd599('0x11')](_0xd599('0x19'),_0x2b5369,JSON[_0xd599('0x13')](_0x3209cf));_0x1de537(_0x3209cf);})[_0xd599('0x18')](function(_0x30ee33){logger[_0xd599('0x14')](_0xd599('0x19'),_0x30ee33[_0xd599('0x16')],_0x2b5369);_0x48df65(_0x273a3c[_0xd599('0x14')](0x1f4,_0x30ee33[_0xd599('0x16')]));});});};exports[_0xd599('0x1f')]=function(_0x5c2780){return new Promise(function(_0x4aae1f,_0x46ab1c){return db[_0xd599('0x20')][_0xd599('0x21')]({'where':_0x5c2780['options']?_0x5c2780['options'][_0xd599('0x1c')]||null:null})[_0xd599('0xd')](function(_0x5558f6){if(_0x5558f6){return _0x5558f6['addTags'](_0x5c2780[_0xd599('0x1a')][_0xd599('0x22')],_['omit'](_0x5c2780[_0xd599('0x1a')],[_0xd599('0x22'),'id'])||{});}})[_0xd599('0x23')](function(_0x175fbb){logger[_0xd599('0xe')]('AddTags',_0x5c2780);logger[_0xd599('0x11')]('AddTags',_0x5c2780,JSON[_0xd599('0x13')](_0x175fbb));_0x4aae1f(_0x175fbb);})['catch'](function(_0x4237dd){logger[_0xd599('0x14')](_0xd599('0x24'),_0x4237dd[_0xd599('0x16')],_0x5c2780);_0x46ab1c(_this['error'](0x1f4,_0x4237dd[_0xd599('0x16')]));});});};
\ No newline at end of file
index f458bc5..82f4fcb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a73=['register','length','save','update','emit'];(function(_0x19cbe6,_0x7b8f45){var _0x314be4=function(_0x2f4034){while(--_0x2f4034){_0x19cbe6['push'](_0x19cbe6['shift']());}};_0x314be4(++_0x7b8f45);}(_0x9a73,0x70));var _0x39a7=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x9a73[_0x13d07a];return _0x5ee0ee;};'use strict';var SmsInteractionEvents=require('./smsInteraction.events');var events=[_0x39a7('0x0'),'remove',_0x39a7('0x1')];function createListener(_0x52649b,_0x5ea744){return function(_0x2e5918){_0x5ea744[_0x39a7('0x2')](_0x52649b,_0x2e5918);};}function removeListener(_0x1c9c60,_0x5dbf2e){return function(){SmsInteractionEvents['removeListener'](_0x1c9c60,_0x5dbf2e);};}exports[_0x39a7('0x3')]=function(_0x37e319){for(var _0x4a1a65=0x0,_0x251697=events[_0x39a7('0x4')];_0x4a1a65<_0x251697;_0x4a1a65++){var _0x2d27bd=events[_0x4a1a65];var _0x30d9b8=createListener('smsInteraction:'+_0x2d27bd,_0x37e319);SmsInteractionEvents['on'](_0x2d27bd,_0x30d9b8);}};
\ No newline at end of file
+var _0x8033=['remove','emit','removeListener','register','length','smsInteraction:','./smsInteraction.events'];(function(_0x5a2d3f,_0x27b04e){var _0x5c65d8=function(_0x2d1965){while(--_0x2d1965){_0x5a2d3f['push'](_0x5a2d3f['shift']());}};_0x5c65d8(++_0x27b04e);}(_0x8033,0x68));var _0x3803=function(_0x1aa436,_0x543367){_0x1aa436=_0x1aa436-0x0;var _0x44441d=_0x8033[_0x1aa436];return _0x44441d;};'use strict';var SmsInteractionEvents=require(_0x3803('0x0'));var events=['save',_0x3803('0x1'),'update'];function createListener(_0x576782,_0x8a07ba){return function(_0x4abe1b){_0x8a07ba[_0x3803('0x2')](_0x576782,_0x4abe1b);};}function removeListener(_0x2b22f1,_0x1bcf2c){return function(){SmsInteractionEvents[_0x3803('0x3')](_0x2b22f1,_0x1bcf2c);};}exports[_0x3803('0x4')]=function(_0x239aa7){for(var _0x228966=0x0,_0x3cc840=events[_0x3803('0x5')];_0x228966<_0x3cc840;_0x228966++){var _0x58f876=events[_0x228966];var _0x2ed985=createListener(_0x3803('0x6')+_0x58f876,_0x239aa7);SmsInteractionEvents['on'](_0x58f876,_0x2ed985);}};
\ No newline at end of file
index fc3508a..99b5436 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd934=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsMessage.controller','get','index','isAuthenticated','describe','/:id','show','post','tracked','create','/:id/status','status','put','/:id/accept','accept','/:id/reject','delete','destroy'];(function(_0x500328,_0x229d87){var _0x56bef7=function(_0x191b7d){while(--_0x191b7d){_0x500328['push'](_0x500328['shift']());}};_0x56bef7(++_0x229d87);}(_0xd934,0x15d));var _0x4d93=function(_0x4fb57a,_0xb3a6b8){_0x4fb57a=_0x4fb57a-0x0;var _0x387a8a=_0xd934[_0x4fb57a];return _0x387a8a;};'use strict';var multer=require(_0x4d93('0x0'));var util=require(_0x4d93('0x1'));var path=require(_0x4d93('0x2'));var timeout=require(_0x4d93('0x3'));var express=require(_0x4d93('0x4'));var router=express[_0x4d93('0x5')]();var fs_extra=require(_0x4d93('0x6'));var auth=require(_0x4d93('0x7'));var interaction=require(_0x4d93('0x8'));var config=require(_0x4d93('0x9'));var controller=require(_0x4d93('0xa'));router[_0x4d93('0xb')]('/',auth['isAuthenticated'](),controller[_0x4d93('0xc')]);router[_0x4d93('0xb')]('/describe',auth[_0x4d93('0xd')](),controller[_0x4d93('0xe')]);router[_0x4d93('0xb')](_0x4d93('0xf'),auth[_0x4d93('0xd')](),controller[_0x4d93('0x10')]);router[_0x4d93('0x11')]('/',auth[_0x4d93('0xd')](),interaction[_0x4d93('0x12')]('sms','smsmessage:create'),controller[_0x4d93('0x13')]);router['post'](_0x4d93('0x14'),controller[_0x4d93('0x15')]);router[_0x4d93('0x16')](_0x4d93('0xf'),auth[_0x4d93('0xd')](),controller['update']);router[_0x4d93('0x16')](_0x4d93('0x17'),auth[_0x4d93('0xd')](),controller[_0x4d93('0x18')]);router[_0x4d93('0x16')](_0x4d93('0x19'),auth[_0x4d93('0xd')](),controller['reject']);router[_0x4d93('0x1a')](_0x4d93('0xf'),auth['isAuthenticated'](),controller[_0x4d93('0x1b')]);module[_0x4d93('0x1c')]=router;
\ No newline at end of file
+var _0x93dc=['sms','smsmessage:create','create','put','/:id/accept','reject','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./smsMessage.controller','isAuthenticated','index','get','/:id','show','post'];(function(_0x35e55b,_0xa497d1){var _0x4b7ad6=function(_0x31a166){while(--_0x31a166){_0x35e55b['push'](_0x35e55b['shift']());}};_0x4b7ad6(++_0xa497d1);}(_0x93dc,0x161));var _0xc93d=function(_0x1b8282,_0x546511){_0x1b8282=_0x1b8282-0x0;var _0x599fac=_0x93dc[_0x1b8282];return _0x599fac;};'use strict';var multer=require(_0xc93d('0x0'));var util=require(_0xc93d('0x1'));var path=require(_0xc93d('0x2'));var timeout=require('connect-timeout');var express=require(_0xc93d('0x3'));var router=express[_0xc93d('0x4')]();var fs_extra=require(_0xc93d('0x5'));var auth=require(_0xc93d('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc93d('0x7'));var controller=require(_0xc93d('0x8'));router['get']('/',auth[_0xc93d('0x9')](),controller[_0xc93d('0xa')]);router[_0xc93d('0xb')]('/describe',auth[_0xc93d('0x9')](),controller['describe']);router[_0xc93d('0xb')](_0xc93d('0xc'),auth[_0xc93d('0x9')](),controller[_0xc93d('0xd')]);router[_0xc93d('0xe')]('/',auth[_0xc93d('0x9')](),interaction['tracked'](_0xc93d('0xf'),_0xc93d('0x10')),controller[_0xc93d('0x11')]);router[_0xc93d('0xe')]('/:id/status',controller['status']);router[_0xc93d('0x12')](_0xc93d('0xc'),auth[_0xc93d('0x9')](),controller['update']);router[_0xc93d('0x12')](_0xc93d('0x13'),auth['isAuthenticated'](),controller['accept']);router[_0xc93d('0x12')]('/:id/reject',auth[_0xc93d('0x9')](),controller[_0xc93d('0x14')]);router[_0xc93d('0x15')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xc93d('0x16')]=router;
\ No newline at end of file
index 8f9f196..26f73d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87fe=['STRING','DATE','TEXT','BOOLEAN','out'];(function(_0x4a7631,_0x2c85b9){var _0x1a5a6f=function(_0x1ee3fd){while(--_0x1ee3fd){_0x4a7631['push'](_0x4a7631['shift']());}};_0x1a5a6f(++_0x2c85b9);}(_0x87fe,0x1ec));var _0xe87f=function(_0x293a6b,_0x3b9ede){_0x293a6b=_0x293a6b-0x0;var _0x2d371c=_0x87fe[_0x293a6b];return _0x2d371c;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize[_0xe87f('0x0')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xe87f('0x1')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0xe87f('0x2'),'allowNull':![]},'messageId':{'type':Sequelize[_0xe87f('0x3')](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize[_0xe87f('0x4')]},'secret':{'type':Sequelize[_0xe87f('0x1')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xe87f('0x3')]},'providerResponse':{'type':Sequelize[_0xe87f('0x0')]}};
\ No newline at end of file
+var _0xc01b=['exports','TEXT','medium','BOOLEAN','ENUM','out','STRING','DATE','sequelize'];(function(_0xea5aa6,_0x5f3ef5){var _0x546d48=function(_0x430598){while(--_0x430598){_0xea5aa6['push'](_0xea5aa6['shift']());}};_0x546d48(++_0x5f3ef5);}(_0xc01b,0x74));var _0xbc01=function(_0x2c5189,_0x5b5f5c){_0x2c5189=_0x2c5189-0x0;var _0x423feb=_0xc01b[_0x2c5189];return _0x423feb;};'use strict';var Sequelize=require(_0xbc01('0x0'));module[_0xbc01('0x1')]={'body':{'type':Sequelize[_0xbc01('0x2')](_0xbc01('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xbc01('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xbc01('0x5')]('in',_0xbc01('0x6')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0xbc01('0x7')](0xbe)},'phone':{'type':Sequelize[_0xbc01('0x7')]},'readAt':{'type':Sequelize[_0xbc01('0x8')]},'secret':{'type':Sequelize[_0xbc01('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xbc01('0x7')]},'providerResponse':{'type':Sequelize[_0xbc01('0x2')]}};
\ No newline at end of file
index 12c95aa..a9d159c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed03=['filter','merge','type','includeAll','include','rows','show','params','length','options','find','body','update','sms-interactions','accept','sms','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','SmsInteraction','SmsInteractionId','isNil','read1stAt','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','stringify','AcceptMessage','acceptMessage','sequelize','Sequelize','QueryTypes','contact','agent','fullname','email','internal','interface','SIP/%s','motionChannel','channel','event','EventManager','null','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','SELECT','User','SmsAccount','SmsAccountId','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','indexOf','sent','delivered','Status','plivio','infobip','results','groupName','eml-format','rimraf','fast-json-patch','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./smsMessage.socket','register','jayson/promise','http','client','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','name','send','index','map','SmsMessage','rawAttributes','fieldName','key','keys','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','where','pick'];(function(_0x381e27,_0x5627ba){var _0x49e063=function(_0x17ecef){while(--_0x17ecef){_0x381e27['push'](_0x381e27['shift']());}};_0x49e063(++_0x5627ba);}(_0xed03,0xdc));var _0x3ed0=function(_0x363ef8,_0x4ecb1a){_0x363ef8=_0x363ef8-0x0;var _0x148822=_0xed03[_0x363ef8];return _0x148822;};'use strict';var emlformat=require(_0x3ed0('0x0'));var rimraf=require(_0x3ed0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3ed0('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x3ed0('0x3'));var Mustache=require('mustache');var util=require(_0x3ed0('0x4'));var path=require('path');var sox=require(_0x3ed0('0x5'));var csv=require(_0x3ed0('0x6'));var ejs=require(_0x3ed0('0x7'));var fs=require('fs');var fs_extra=require(_0x3ed0('0x8'));var _=require(_0x3ed0('0x9'));var squel=require(_0x3ed0('0xa'));var crypto=require(_0x3ed0('0xb'));var jsforce=require(_0x3ed0('0xc'));var deskjs=require(_0x3ed0('0xd'));var toCsv=require(_0x3ed0('0x6'));var querystring=require(_0x3ed0('0xe'));var Papa=require(_0x3ed0('0xf'));var Redis=require(_0x3ed0('0x10'));var authService=require(_0x3ed0('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x3ed0('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3ed0('0x13'))(_0x3ed0('0x14'));var utils=require(_0x3ed0('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x3ed0('0x16'));var db=require(_0x3ed0('0x17'))['db'];config[_0x3ed0('0x18')]=_[_0x3ed0('0x19')](config[_0x3ed0('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x3ed0('0x1a'))(new Redis(config[_0x3ed0('0x18')]));require(_0x3ed0('0x1b'))[_0x3ed0('0x1c')](socket);var jayson=require(_0x3ed0('0x1d'));var client=jayson['client'][_0x3ed0('0x1e')]({'port':0x232c});var client9002=jayson[_0x3ed0('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x291851,_0x196655,_0xd14d98,_0xf2a758){return new BPromise(function(_0xaa73cd,_0x230ead){var _0x47a3b5=_0xf2a758||client;return _0x47a3b5[_0x3ed0('0x20')](_0x291851,_0xd14d98)[_0x3ed0('0x21')](function(_0x54d820){logger[_0x3ed0('0x22')](_0x3ed0('0x23'),_0x196655,_0x3ed0('0x24'));logger[_0x3ed0('0x25')](_0x3ed0('0x26'),_0x196655,_0x3ed0('0x24'),JSON['stringify'](_0x54d820));if(_0x54d820[_0x3ed0('0x27')]){if(_0x54d820[_0x3ed0('0x27')][_0x3ed0('0x28')]===0x1f4){logger[_0x3ed0('0x27')](_0x3ed0('0x23'),_0x196655,_0x54d820[_0x3ed0('0x27')][_0x3ed0('0x29')]);return _0x230ead(_0x54d820['error'][_0x3ed0('0x29')]);}logger[_0x3ed0('0x27')](_0x3ed0('0x23'),_0x196655,_0x54d820[_0x3ed0('0x27')][_0x3ed0('0x29')]);return _0xaa73cd(_0x54d820['error'][_0x3ed0('0x29')]);}else{logger[_0x3ed0('0x22')](_0x3ed0('0x23'),_0x196655,_0x3ed0('0x24'));_0xaa73cd(_0x54d820[_0x3ed0('0x2a')][_0x3ed0('0x29')]);}})[_0x3ed0('0x2b')](function(_0x2e1706){logger[_0x3ed0('0x27')]('SmsMessage,\x20%s,\x20%s',_0x196655,_0x2e1706);_0x230ead(_0x2e1706);});});}function respondWithStatusCode(_0x57a12d,_0x17a3b5){_0x17a3b5=_0x17a3b5||0xcc;return function(_0x1eb6b5){if(_0x1eb6b5){return _0x57a12d[_0x3ed0('0x2c')](_0x17a3b5);}return _0x57a12d[_0x3ed0('0x2d')](_0x17a3b5)[_0x3ed0('0x2e')]();};}function respondWithResult(_0x33c407,_0x59ef6b){_0x59ef6b=_0x59ef6b||0xc8;return function(_0x5638a5){if(_0x5638a5){return _0x33c407[_0x3ed0('0x2d')](_0x59ef6b)[_0x3ed0('0x2f')](_0x5638a5);}};}function respondWithFilteredResult(_0x2a5e86,_0xaee4f0){return function(_0x409c12){if(_0x409c12){var _0x25c4ce=typeof _0xaee4f0[_0x3ed0('0x30')]===_0x3ed0('0x31')&&typeof _0xaee4f0[_0x3ed0('0x32')]===_0x3ed0('0x31');var _0x5dafa6=_0x409c12[_0x3ed0('0x33')];var _0x55935a=_0x25c4ce?0x0:_0xaee4f0[_0x3ed0('0x30')];var _0x1ed6bc=_0x25c4ce?_0x409c12[_0x3ed0('0x33')]:_0xaee4f0[_0x3ed0('0x30')]+_0xaee4f0[_0x3ed0('0x32')];var _0x2fcc30;if(_0x1ed6bc>=_0x5dafa6){_0x1ed6bc=_0x5dafa6;_0x2fcc30=0xc8;}else{_0x2fcc30=0xce;}_0x2a5e86[_0x3ed0('0x2d')](_0x2fcc30);return _0x2a5e86[_0x3ed0('0x34')](_0x3ed0('0x35'),_0x55935a+'-'+_0x1ed6bc+'/'+_0x5dafa6)['json'](_0x409c12);}return null;};}function patchUpdates(_0xedad6){return function(_0x33ca42){try{jsonpatch[_0x3ed0('0x36')](_0x33ca42,_0xedad6,!![]);}catch(_0x2145f0){return BPromise[_0x3ed0('0x37')](_0x2145f0);}return _0x33ca42[_0x3ed0('0x38')]();};}function saveUpdates(_0x528543,_0x11cad2){return function(_0x2f575b){if(_0x2f575b){return _0x2f575b['update'](_0x528543)[_0x3ed0('0x21')](function(_0x24b6a3){return _0x24b6a3;});}return null;};}function removeEntity(_0xdef801,_0x9b1081){return function(_0x51b8b3){if(_0x51b8b3){return _0x51b8b3[_0x3ed0('0x39')]()[_0x3ed0('0x21')](function(){_0xdef801[_0x3ed0('0x2d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2c746a,_0x4a7817){return function(_0x331d62){if(!_0x331d62){_0x2c746a[_0x3ed0('0x2c')](0x194);}return _0x331d62;};}function handleError(_0x1c0066,_0x49da90){_0x49da90=_0x49da90||0x1f4;return function(_0x5a3751){logger[_0x3ed0('0x27')](_0x5a3751['stack']);if(_0x5a3751['name']){delete _0x5a3751[_0x3ed0('0x3a')];}_0x1c0066[_0x3ed0('0x2d')](_0x49da90)[_0x3ed0('0x3b')](_0x5a3751);};}exports[_0x3ed0('0x3c')]=function(_0xb9829,_0x18bc64){var _0x29edd4={},_0x5c1f4c={},_0x4f79b7={'count':0x0,'rows':[]};var _0x159f4c=_[_0x3ed0('0x3d')](db[_0x3ed0('0x3e')][_0x3ed0('0x3f')],function(_0x41225d){return{'name':_0x41225d[_0x3ed0('0x40')],'type':_0x41225d['type'][_0x3ed0('0x41')]};});_0x5c1f4c['model']=_[_0x3ed0('0x3d')](_0x159f4c,_0x3ed0('0x3a'));_0x5c1f4c['query']=_[_0x3ed0('0x42')](_0xb9829[_0x3ed0('0x43')]);_0x5c1f4c[_0x3ed0('0x44')]=_[_0x3ed0('0x45')](_0x5c1f4c[_0x3ed0('0x46')],_0x5c1f4c[_0x3ed0('0x43')]);_0x29edd4[_0x3ed0('0x47')]=_[_0x3ed0('0x45')](_0x5c1f4c['model'],qs[_0x3ed0('0x48')](_0xb9829['query'][_0x3ed0('0x48')]));_0x29edd4[_0x3ed0('0x47')]=_0x29edd4[_0x3ed0('0x47')]['length']?_0x29edd4[_0x3ed0('0x47')]:_0x5c1f4c['model'];if(!_0xb9829[_0x3ed0('0x43')][_0x3ed0('0x49')](_0x3ed0('0x4a'))){_0x29edd4[_0x3ed0('0x32')]=qs[_0x3ed0('0x32')](_0xb9829['query']['limit']);_0x29edd4[_0x3ed0('0x30')]=qs[_0x3ed0('0x30')](_0xb9829[_0x3ed0('0x43')]['offset']);}_0x29edd4['order']=qs['sort'](_0xb9829[_0x3ed0('0x43')][_0x3ed0('0x4b')]);_0x29edd4[_0x3ed0('0x4c')]=qs[_0x3ed0('0x44')](_[_0x3ed0('0x4d')](_0xb9829[_0x3ed0('0x43')],_0x5c1f4c[_0x3ed0('0x44')]),_0x159f4c);if(_0xb9829[_0x3ed0('0x43')][_0x3ed0('0x4e')]){_0x29edd4[_0x3ed0('0x4c')]=_[_0x3ed0('0x4f')](_0x29edd4[_0x3ed0('0x4c')],{'$or':_[_0x3ed0('0x3d')](_0x159f4c,function(_0xd76c05){if(_0xd76c05[_0x3ed0('0x50')]!=='VIRTUAL'){var _0x45c574={};_0x45c574[_0xd76c05[_0x3ed0('0x3a')]]={'$like':'%'+_0xb9829[_0x3ed0('0x43')][_0x3ed0('0x4e')]+'%'};return _0x45c574;}})});}_0x29edd4=_[_0x3ed0('0x4f')]({},_0x29edd4,_0xb9829['options']);var _0x1067d2={'where':_0x29edd4[_0x3ed0('0x4c')]};return db['SmsMessage'][_0x3ed0('0x33')](_0x1067d2)['then'](function(_0x4b1a11){_0x4f79b7[_0x3ed0('0x33')]=_0x4b1a11;if(_0xb9829[_0x3ed0('0x43')][_0x3ed0('0x51')]){_0x29edd4[_0x3ed0('0x52')]=[{'all':!![]}];}return db[_0x3ed0('0x3e')]['findAll'](_0x29edd4);})[_0x3ed0('0x21')](function(_0x27cd10){_0x4f79b7[_0x3ed0('0x53')]=_0x27cd10;return _0x4f79b7;})['then'](respondWithFilteredResult(_0x18bc64,_0x29edd4))[_0x3ed0('0x2b')](handleError(_0x18bc64,null));};exports[_0x3ed0('0x54')]=function(_0x55d62e,_0x3c6208){var _0x1ba53b={'raw':!![],'where':{'id':_0x55d62e[_0x3ed0('0x55')]['id']}},_0x23db56={};_0x23db56[_0x3ed0('0x46')]=_[_0x3ed0('0x42')](db[_0x3ed0('0x3e')][_0x3ed0('0x3f')]);_0x23db56[_0x3ed0('0x43')]=_[_0x3ed0('0x42')](_0x55d62e[_0x3ed0('0x43')]);_0x23db56[_0x3ed0('0x44')]=_[_0x3ed0('0x45')](_0x23db56[_0x3ed0('0x46')],_0x23db56['query']);_0x1ba53b[_0x3ed0('0x47')]=_[_0x3ed0('0x45')](_0x23db56[_0x3ed0('0x46')],qs['fields'](_0x55d62e[_0x3ed0('0x43')]['fields']));_0x1ba53b[_0x3ed0('0x47')]=_0x1ba53b[_0x3ed0('0x47')][_0x3ed0('0x56')]?_0x1ba53b['attributes']:_0x23db56[_0x3ed0('0x46')];if(_0x55d62e['query'][_0x3ed0('0x51')]){_0x1ba53b[_0x3ed0('0x52')]=[{'all':!![]}];}_0x1ba53b=_[_0x3ed0('0x4f')]({},_0x1ba53b,_0x55d62e[_0x3ed0('0x57')]);return db[_0x3ed0('0x3e')][_0x3ed0('0x58')](_0x1ba53b)['then'](handleEntityNotFound(_0x3c6208,null))[_0x3ed0('0x21')](respondWithResult(_0x3c6208,null))[_0x3ed0('0x2b')](handleError(_0x3c6208,null));};exports['create']=function(_0x51c342,_0xf35ef4){return db['SmsMessage']['create'](_0x51c342[_0x3ed0('0x59')],{})[_0x3ed0('0x21')](respondWithResult(_0xf35ef4,0xc9))[_0x3ed0('0x2b')](handleError(_0xf35ef4,null));};exports[_0x3ed0('0x5a')]=function(_0x274d61,_0x28e69f){if(_0x274d61[_0x3ed0('0x59')]['id']){delete _0x274d61['body']['id'];}return db[_0x3ed0('0x3e')][_0x3ed0('0x58')]({'where':{'id':_0x274d61[_0x3ed0('0x55')]['id']}})['then'](handleEntityNotFound(_0x28e69f,null))[_0x3ed0('0x21')](saveUpdates(_0x274d61[_0x3ed0('0x59')],null))['then'](respondWithResult(_0x28e69f,null))['catch'](handleError(_0x28e69f,null));};exports[_0x3ed0('0x39')]=function(_0x19fac,_0x50a1fc){return db[_0x3ed0('0x3e')][_0x3ed0('0x58')]({'where':{'id':_0x19fac['params']['id']}})[_0x3ed0('0x21')](handleEntityNotFound(_0x50a1fc,null))[_0x3ed0('0x21')](removeEntity(_0x50a1fc,null))[_0x3ed0('0x2b')](handleError(_0x50a1fc,null));};exports['describe']=function(_0x4d16b6,_0x53b443){return db[_0x3ed0('0x3e')]['describe']()[_0x3ed0('0x21')](respondWithResult(_0x53b443,null))['catch'](handleError(_0x53b443,null));};var interaction_log=require(_0x3ed0('0x13'))(_0x3ed0('0x5b'));exports[_0x3ed0('0x5c')]=function(_0x2c5f96,_0x3305aa,_0x215784){var _0x22a3de={'agent':{},'channel':_0x3ed0('0x5d')};if(_0x2c5f96[_0x3ed0('0x59')]['id']){delete _0x2c5f96['body']['id'];}_0x2c5f96[_0x3ed0('0x59')][_0x3ed0('0x5e')]=!![];_0x2c5f96[_0x3ed0('0x59')]['readAt']=moment()[_0x3ed0('0x5f')](_0x3ed0('0x60'));_0x2c5f96['body'][_0x3ed0('0x61')]=_0x2c5f96[_0x3ed0('0x59')]['UserId']||_0x2c5f96[_0x3ed0('0x62')]['id'];_0x22a3de['agent']['id']=_0x2c5f96['body'][_0x3ed0('0x61')];return db['SmsMessage'][_0x3ed0('0x58')]({'where':{'id':_0x2c5f96[_0x3ed0('0x55')]['id'],'UserId':null}})[_0x3ed0('0x21')](handleEntityNotFound(_0x3305aa,null))[_0x3ed0('0x21')](saveUpdates(_0x2c5f96['body'],null))[_0x3ed0('0x21')](function(_0x5717ca){if(_0x5717ca){_0x22a3de[_0x3ed0('0x29')]=_0x5717ca[_0x3ed0('0x63')]({'plain':!![]});return db[_0x3ed0('0x64')][_0x3ed0('0x58')]({'where':{'id':_0x5717ca[_0x3ed0('0x65')]}});}return null;})[_0x3ed0('0x21')](handleEntityNotFound(_0x3305aa,null))[_0x3ed0('0x21')](function(_0xa0bbf5){if(_0xa0bbf5){return _0xa0bbf5[_0x3ed0('0x5a')]({'UserId':_0x2c5f96[_0x3ed0('0x59')][_0x3ed0('0x61')],'read1stAt':_[_0x3ed0('0x66')](_0xa0bbf5[_0x3ed0('0x67')])?moment()[_0x3ed0('0x5f')](_0x3ed0('0x60')):undefined});}return null;})[_0x3ed0('0x21')](function(_0x110f67){if(_0x110f67){_0x22a3de['interaction']=_0x110f67[_0x3ed0('0x63')]({'plain':!![]});interaction_log[_0x3ed0('0x22')](_0x3ed0('0x68'),_0x2c5f96[_0x3ed0('0x62')]['id'],_0x2c5f96['user'][_0x3ed0('0x3a')],_0x2c5f96[_0x3ed0('0x62')][_0x3ed0('0x69')],_0x22a3de[_0x3ed0('0x6a')]['id'],_0x2c5f96[_0x3ed0('0x59')]?JSON[_0x3ed0('0x6b')](_0x2c5f96['body']):'null');return respondWithRpcPromise(_0x3ed0('0x6c'),_0x3ed0('0x6d'),_0x22a3de);}return null;})[_0x3ed0('0x21')](function(_0x39f7ad){var _0xd07ece='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x39f7ad[_0x3ed0('0x29')]['ContactId'];return db[_0x3ed0('0x6e')][_0x3ed0('0x43')](_0xd07ece,{'type':db[_0x3ed0('0x6f')][_0x3ed0('0x70')]['SELECT'],'raw':!![]})[_0x3ed0('0x21')](function(_0x322748){return _0x322748;});})[_0x3ed0('0x21')](function(_0x1b9fa3){if(_0x1b9fa3){_0x22a3de['message'][_0x3ed0('0x71')]=_0x1b9fa3[0x0];if(!_0x2c5f96[_0x3ed0('0x59')][_0x3ed0('0x61')])return;return db['User'][_0x3ed0('0x58')]({'where':{'id':_0x2c5f96[_0x3ed0('0x59')][_0x3ed0('0x61')],'role':_0x3ed0('0x72')},'attributes':['id',_0x3ed0('0x3a'),_0x3ed0('0x73'),_0x3ed0('0x74'),_0x3ed0('0x75')],'raw':!![]});}return null;})[_0x3ed0('0x21')](function(_0x6461da){if(!_0x6461da)return null;_0x22a3de['message'][_0x3ed0('0x72')]=_0x6461da;return _0x22a3de;})[_0x3ed0('0x21')](function(_0xaf9a8b){if(_0xaf9a8b){if(_0x2c5f96[_0x3ed0('0x59')]['manual']){_0x22a3de['message'][_0x3ed0('0x76')]=util[_0x3ed0('0x5f')](_0x3ed0('0x77'),_0x2c5f96['user'][_0x3ed0('0x3a')]);_0x22a3de[_0x3ed0('0x29')]['channel']=_0x22a3de['channel'];_0x22a3de[_0x3ed0('0x29')][_0x3ed0('0x78')]=_0x22a3de[_0x3ed0('0x79')];_0x22a3de[_0x3ed0('0x29')][_0x3ed0('0x7a')]=_0x3ed0('0x5c');return respondWithRpcPromise(_0x3ed0('0x7b'),'EventManager',{'event':'acceptmessage','message':_0x22a3de[_0x3ed0('0x29')]},client9002)['then'](function(){return _0x22a3de;});}return _0x22a3de;}return null;})['then'](respondWithResult(_0x3305aa,null))[_0x3ed0('0x2b')](handleError(_0x3305aa,null));};var interaction_log=require(_0x3ed0('0x13'))(_0x3ed0('0x5b'));exports[_0x3ed0('0x37')]=function(_0x50716c,_0x1f31e6,_0x4995d3){var _0x444859={'agent':{},'channel':'sms'};if(_0x50716c['body']['id']){delete _0x50716c[_0x3ed0('0x59')]['id'];}_0x50716c[_0x3ed0('0x59')][_0x3ed0('0x61')]=_0x50716c[_0x3ed0('0x59')][_0x3ed0('0x61')]||_0x50716c['user']['id'];_0x444859['agent']['id']=_0x50716c[_0x3ed0('0x59')]['UserId'];return db[_0x3ed0('0x3e')]['find']({'where':{'id':_0x50716c[_0x3ed0('0x55')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x1f31e6,null))[_0x3ed0('0x21')](function(_0x3c47e8){if(_0x3c47e8){_0x444859[_0x3ed0('0x29')]=_0x3c47e8[_0x3ed0('0x63')]({'plain':!![]});return db[_0x3ed0('0x64')][_0x3ed0('0x58')]({'where':{'id':_0x3c47e8[_0x3ed0('0x65')]}});}return null;})['then'](handleEntityNotFound(_0x1f31e6,null))['then'](function(_0x2e60a5){if(_0x2e60a5){_0x444859[_0x3ed0('0x6a')]=_0x2e60a5[_0x3ed0('0x63')]({'plain':!![]});interaction_log[_0x3ed0('0x22')]('[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x50716c['user']['id'],_0x50716c[_0x3ed0('0x62')][_0x3ed0('0x3a')],_0x50716c['user'][_0x3ed0('0x69')],_0x444859[_0x3ed0('0x6a')]['id'],_0x50716c[_0x3ed0('0x59')]?JSON[_0x3ed0('0x6b')](_0x50716c['body']):_0x3ed0('0x7c'));return respondWithRpcPromise(_0x3ed0('0x7d'),_0x3ed0('0x7e'),_0x444859);}return null;})['then'](function(_0x3bbbb5){var _0x3a0734=_0x3ed0('0x7f')+_0x3bbbb5[_0x3ed0('0x29')][_0x3ed0('0x80')];return db[_0x3ed0('0x6e')][_0x3ed0('0x43')](_0x3a0734,{'type':db[_0x3ed0('0x6f')]['QueryTypes'][_0x3ed0('0x81')],'raw':!![]})['then'](function(_0x2845ff){return _0x2845ff;});})['then'](function(_0x22295e){if(_0x22295e){_0x444859[_0x3ed0('0x29')][_0x3ed0('0x71')]=_0x22295e[0x0];if(!_0x50716c[_0x3ed0('0x59')]['UserId'])return;return db[_0x3ed0('0x82')][_0x3ed0('0x58')]({'where':{'id':_0x50716c[_0x3ed0('0x59')][_0x3ed0('0x61')],'role':'agent'},'attributes':['id',_0x3ed0('0x3a'),_0x3ed0('0x73'),_0x3ed0('0x74'),_0x3ed0('0x75')],'raw':!![]});}return null;})[_0x3ed0('0x21')](function(_0x492eec){if(!_0x492eec)return null;_0x444859[_0x3ed0('0x29')]['agent']=_0x492eec;return _0x444859;})[_0x3ed0('0x21')](function(_0x1a7f69){if(_0x1a7f69){_0x1a7f69[_0x3ed0('0x29')][_0x3ed0('0x76')]=util[_0x3ed0('0x5f')]('SIP/%s',_0x50716c[_0x3ed0('0x62')]['name']);_0x1a7f69['message'][_0x3ed0('0x79')]=_0x444859[_0x3ed0('0x79')];_0x1a7f69['message'][_0x3ed0('0x78')]=_0x444859[_0x3ed0('0x79')];_0x1a7f69[_0x3ed0('0x29')][_0x3ed0('0x7a')]=_0x3ed0('0x37');respondWithRpcPromise(_0x3ed0('0x7b'),_0x3ed0('0x7b'),{'event':'rejectmessage','message':_0x1a7f69[_0x3ed0('0x29')]},client9002);return _0x444859;}return null;})[_0x3ed0('0x21')](respondWithResult(_0x1f31e6,null))[_0x3ed0('0x2b')](handleError(_0x1f31e6,null));};exports['status']=function(_0x469fc2,_0x4cf1a7,_0x270827){if(_0x469fc2[_0x3ed0('0x59')]['id']){delete _0x469fc2['body']['id'];}var _0x24bfe6;return db[_0x3ed0('0x3e')]['find']({'where':{'id':_0x469fc2[_0x3ed0('0x55')]['id']}})['then'](handleEntityNotFound(_0x4cf1a7,null))['then'](function(_0x2f52e2){if(_0x2f52e2){_0x24bfe6=_0x2f52e2;return db[_0x3ed0('0x83')][_0x3ed0('0x58')]({'where':{'id':_0x2f52e2[_0x3ed0('0x84')]}});}})[_0x3ed0('0x21')](handleEntityNotFound(_0x4cf1a7,null))[_0x3ed0('0x21')](function(_0x29895b){if(_0x29895b){logger[_0x3ed0('0x25')]('SmsMessage,\x20%s,\x20%s,\x20%s','status',_0x3ed0('0x85'),_0x29895b['type'],util[_0x3ed0('0x86')](_0x469fc2['body'],{'showHidden':![],'depth':null}));switch(_0x29895b['type']){case _0x3ed0('0x87'):if(_0x469fc2[_0x3ed0('0x59')][_0x3ed0('0x88')]&&_0x469fc2[_0x3ed0('0x59')]['MessageSid']===_0x24bfe6[_0x3ed0('0x89')]){return _0x24bfe6[_0x3ed0('0x5a')]({'read':!![]});}else{logger[_0x3ed0('0x27')](_0x3ed0('0x8a'),_0x3ed0('0x2d'),_0x3ed0('0x87'),util['inspect'](_0x469fc2['body'],{'showHidden':![],'depth':null}));}break;case _0x3ed0('0x8b'):if(_0x469fc2[_0x3ed0('0x59')][_0x3ed0('0x8c')]&&_0x469fc2[_0x3ed0('0x59')][_0x3ed0('0x8c')]===_0x24bfe6[_0x3ed0('0x89')]&&_[_0x3ed0('0x8d')]([_0x3ed0('0x8e'),_0x3ed0('0x8f')],_0x469fc2[_0x3ed0('0x59')][_0x3ed0('0x90')])>=0x0){return _0x24bfe6['update']({'read':!![]});}else{logger[_0x3ed0('0x27')](_0x3ed0('0x8a'),'status',_0x3ed0('0x91'),util[_0x3ed0('0x86')](_0x469fc2[_0x3ed0('0x59')],{'showHidden':![],'depth':null}));}break;case _0x3ed0('0x92'):var _0x3fbad2=_0x469fc2[_0x3ed0('0x59')][_0x3ed0('0x93')][0x0];if(_0x3fbad2['status'][_0x3ed0('0x94')]==='DELIVERED'){return _0x24bfe6[_0x3ed0('0x5a')]({'read':!![]});}else{logger[_0x3ed0('0x27')](_0x3ed0('0x8a'),_0x3ed0('0x2d'),_0x3ed0('0x92'),util['inspect'](_0x469fc2[_0x3ed0('0x59')],{'showHidden':![],'depth':null}));}break;}return _0x24bfe6;}})[_0x3ed0('0x21')](respondWithResult(_0x4cf1a7,null))[_0x3ed0('0x2b')](handleError(_0x4cf1a7,null));};
\ No newline at end of file
+var _0xa713=['VIRTUAL','includeAll','findAll','rows','catch','create','body','find','params','destroy','describe','sms-interactions','accept','read','readAt','format','UserId','user','agent','get','SmsInteractionId','isNil','read1stAt','[SMSMESSAGE: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','QueryTypes','fullname','email','internal','interface','SIP/%s','channel','event','EventManager','acceptmessage','reject','sms','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT','contact','User','SmsAccount','debug','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','sent','delivered','plivio','infobip','results','groupName','DELIVERED','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./smsMessage.socket','register','jayson/promise','client','http','info','SmsMessage,\x20%s,\x20%s','SmsMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','status','end','offset','undefined','count','limit','Content-Range','apply','update','then','stack','name','send','index','map','SmsMessage','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','where','merge','type'];(function(_0x2a3c4d,_0x9c6b37){var _0x55c390=function(_0x4871cf){while(--_0x4871cf){_0x2a3c4d['push'](_0x2a3c4d['shift']());}};_0x55c390(++_0x9c6b37);}(_0xa713,0x1ed));var _0x3a71=function(_0x5b3f45,_0x22182a){_0x5b3f45=_0x5b3f45-0x0;var _0x2ac860=_0xa713[_0x5b3f45];return _0x2ac860;};'use strict';var emlformat=require(_0x3a71('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3a71('0x1'));var jsonpatch=require(_0x3a71('0x2'));var rp=require(_0x3a71('0x3'));var moment=require(_0x3a71('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x3a71('0x5'));var util=require(_0x3a71('0x6'));var path=require(_0x3a71('0x7'));var sox=require(_0x3a71('0x8'));var csv=require('to-csv');var ejs=require(_0x3a71('0x9'));var fs=require('fs');var fs_extra=require(_0x3a71('0xa'));var _=require(_0x3a71('0xb'));var squel=require(_0x3a71('0xc'));var crypto=require(_0x3a71('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x3a71('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x3a71('0xf'));var Redis=require(_0x3a71('0x10'));var authService=require(_0x3a71('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3a71('0x12'));var logger=require(_0x3a71('0x13'))(_0x3a71('0x14'));var utils=require(_0x3a71('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x3a71('0x16'));var db=require(_0x3a71('0x17'))['db'];config[_0x3a71('0x18')]=_[_0x3a71('0x19')](config[_0x3a71('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x3a71('0x1a'))(new Redis(config['redis']));require(_0x3a71('0x1b'))[_0x3a71('0x1c')](socket);var jayson=require(_0x3a71('0x1d'));var client=jayson[_0x3a71('0x1e')][_0x3a71('0x1f')]({'port':0x232c});var client9002=jayson['client'][_0x3a71('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x4696c3,_0x4cd4fe,_0x413b58,_0x29cd06){return new BPromise(function(_0x452bd1,_0x5aa75e){var _0x9bd447=_0x29cd06||client;return _0x9bd447['request'](_0x4696c3,_0x413b58)['then'](function(_0x278c89){logger[_0x3a71('0x20')](_0x3a71('0x21'),_0x4cd4fe,'request\x20sent');logger['debug'](_0x3a71('0x22'),_0x4cd4fe,_0x3a71('0x23'),JSON[_0x3a71('0x24')](_0x278c89));if(_0x278c89[_0x3a71('0x25')]){if(_0x278c89[_0x3a71('0x25')][_0x3a71('0x26')]===0x1f4){logger['error'](_0x3a71('0x21'),_0x4cd4fe,_0x278c89[_0x3a71('0x25')]['message']);return _0x5aa75e(_0x278c89['error'][_0x3a71('0x27')]);}logger[_0x3a71('0x25')]('SmsMessage,\x20%s,\x20%s',_0x4cd4fe,_0x278c89['error']['message']);return _0x452bd1(_0x278c89[_0x3a71('0x25')][_0x3a71('0x27')]);}else{logger[_0x3a71('0x20')](_0x3a71('0x21'),_0x4cd4fe,_0x3a71('0x23'));_0x452bd1(_0x278c89[_0x3a71('0x28')]['message']);}})['catch'](function(_0x2c86b1){logger[_0x3a71('0x25')](_0x3a71('0x21'),_0x4cd4fe,_0x2c86b1);_0x5aa75e(_0x2c86b1);});});}function respondWithStatusCode(_0x5b435f,_0x5f30f9){_0x5f30f9=_0x5f30f9||0xcc;return function(_0x3e75d8){if(_0x3e75d8){return _0x5b435f['sendStatus'](_0x5f30f9);}return _0x5b435f[_0x3a71('0x29')](_0x5f30f9)[_0x3a71('0x2a')]();};}function respondWithResult(_0x12740d,_0x4f9c79){_0x4f9c79=_0x4f9c79||0xc8;return function(_0x2cdcb1){if(_0x2cdcb1){return _0x12740d[_0x3a71('0x29')](_0x4f9c79)['json'](_0x2cdcb1);}};}function respondWithFilteredResult(_0xa1f528,_0x403ab3){return function(_0x542348){if(_0x542348){var _0x29cd7b=typeof _0x403ab3[_0x3a71('0x2b')]===_0x3a71('0x2c')&&typeof _0x403ab3['limit']===_0x3a71('0x2c');var _0x4b1795=_0x542348[_0x3a71('0x2d')];var _0x2219dc=_0x29cd7b?0x0:_0x403ab3[_0x3a71('0x2b')];var _0x3b1546=_0x29cd7b?_0x542348[_0x3a71('0x2d')]:_0x403ab3[_0x3a71('0x2b')]+_0x403ab3[_0x3a71('0x2e')];var _0x5bb18f;if(_0x3b1546>=_0x4b1795){_0x3b1546=_0x4b1795;_0x5bb18f=0xc8;}else{_0x5bb18f=0xce;}_0xa1f528[_0x3a71('0x29')](_0x5bb18f);return _0xa1f528['set'](_0x3a71('0x2f'),_0x2219dc+'-'+_0x3b1546+'/'+_0x4b1795)['json'](_0x542348);}return null;};}function patchUpdates(_0x142874){return function(_0x347bad){try{jsonpatch[_0x3a71('0x30')](_0x347bad,_0x142874,!![]);}catch(_0x427791){return BPromise['reject'](_0x427791);}return _0x347bad['save']();};}function saveUpdates(_0xa44e94,_0x3bbe78){return function(_0x2e8674){if(_0x2e8674){return _0x2e8674[_0x3a71('0x31')](_0xa44e94)[_0x3a71('0x32')](function(_0x44b06d){return _0x44b06d;});}return null;};}function removeEntity(_0x4a0c19,_0x4780db){return function(_0x545f36){if(_0x545f36){return _0x545f36['destroy']()[_0x3a71('0x32')](function(){_0x4a0c19[_0x3a71('0x29')](0xcc)[_0x3a71('0x2a')]();});}};}function handleEntityNotFound(_0x561e9b,_0x4abc63){return function(_0x1b788a){if(!_0x1b788a){_0x561e9b['sendStatus'](0x194);}return _0x1b788a;};}function handleError(_0x5732f5,_0x44ff3b){_0x44ff3b=_0x44ff3b||0x1f4;return function(_0x477ee9){logger[_0x3a71('0x25')](_0x477ee9[_0x3a71('0x33')]);if(_0x477ee9[_0x3a71('0x34')]){delete _0x477ee9[_0x3a71('0x34')];}_0x5732f5['status'](_0x44ff3b)[_0x3a71('0x35')](_0x477ee9);};}exports[_0x3a71('0x36')]=function(_0x2c3e59,_0x31b98b){var _0x30e7e1={},_0x39e31={},_0x111eff={'count':0x0,'rows':[]};var _0x358b84=_[_0x3a71('0x37')](db[_0x3a71('0x38')][_0x3a71('0x39')],function(_0x1c117d){return{'name':_0x1c117d['fieldName'],'type':_0x1c117d['type'][_0x3a71('0x3a')]};});_0x39e31[_0x3a71('0x3b')]=_[_0x3a71('0x37')](_0x358b84,_0x3a71('0x34'));_0x39e31[_0x3a71('0x3c')]=_[_0x3a71('0x3d')](_0x2c3e59[_0x3a71('0x3c')]);_0x39e31[_0x3a71('0x3e')]=_[_0x3a71('0x3f')](_0x39e31[_0x3a71('0x3b')],_0x39e31[_0x3a71('0x3c')]);_0x30e7e1[_0x3a71('0x40')]=_['intersection'](_0x39e31[_0x3a71('0x3b')],qs[_0x3a71('0x41')](_0x2c3e59[_0x3a71('0x3c')][_0x3a71('0x41')]));_0x30e7e1['attributes']=_0x30e7e1[_0x3a71('0x40')][_0x3a71('0x42')]?_0x30e7e1[_0x3a71('0x40')]:_0x39e31[_0x3a71('0x3b')];if(!_0x2c3e59[_0x3a71('0x3c')]['hasOwnProperty'](_0x3a71('0x43'))){_0x30e7e1[_0x3a71('0x2e')]=qs[_0x3a71('0x2e')](_0x2c3e59[_0x3a71('0x3c')][_0x3a71('0x2e')]);_0x30e7e1[_0x3a71('0x2b')]=qs[_0x3a71('0x2b')](_0x2c3e59[_0x3a71('0x3c')][_0x3a71('0x2b')]);}_0x30e7e1[_0x3a71('0x44')]=qs[_0x3a71('0x45')](_0x2c3e59[_0x3a71('0x3c')][_0x3a71('0x45')]);_0x30e7e1['where']=qs[_0x3a71('0x3e')](_[_0x3a71('0x46')](_0x2c3e59[_0x3a71('0x3c')],_0x39e31[_0x3a71('0x3e')]),_0x358b84);if(_0x2c3e59[_0x3a71('0x3c')][_0x3a71('0x47')]){_0x30e7e1[_0x3a71('0x48')]=_[_0x3a71('0x49')](_0x30e7e1[_0x3a71('0x48')],{'$or':_[_0x3a71('0x37')](_0x358b84,function(_0x5b28b2){if(_0x5b28b2[_0x3a71('0x4a')]!==_0x3a71('0x4b')){var _0x40fbac={};_0x40fbac[_0x5b28b2['name']]={'$like':'%'+_0x2c3e59[_0x3a71('0x3c')][_0x3a71('0x47')]+'%'};return _0x40fbac;}})});}_0x30e7e1=_[_0x3a71('0x49')]({},_0x30e7e1,_0x2c3e59['options']);var _0x4bce6c={'where':_0x30e7e1['where']};return db[_0x3a71('0x38')]['count'](_0x4bce6c)[_0x3a71('0x32')](function(_0x2896a3){_0x111eff[_0x3a71('0x2d')]=_0x2896a3;if(_0x2c3e59[_0x3a71('0x3c')][_0x3a71('0x4c')]){_0x30e7e1['include']=[{'all':!![]}];}return db[_0x3a71('0x38')][_0x3a71('0x4d')](_0x30e7e1);})[_0x3a71('0x32')](function(_0x5bddb4){_0x111eff[_0x3a71('0x4e')]=_0x5bddb4;return _0x111eff;})['then'](respondWithFilteredResult(_0x31b98b,_0x30e7e1))[_0x3a71('0x4f')](handleError(_0x31b98b,null));};exports['show']=function(_0x41be97,_0x2fa52e){var _0x5a9d9a={'raw':!![],'where':{'id':_0x41be97['params']['id']}},_0x592159={};_0x592159[_0x3a71('0x3b')]=_[_0x3a71('0x3d')](db[_0x3a71('0x38')][_0x3a71('0x39')]);_0x592159[_0x3a71('0x3c')]=_[_0x3a71('0x3d')](_0x41be97[_0x3a71('0x3c')]);_0x592159[_0x3a71('0x3e')]=_['intersection'](_0x592159['model'],_0x592159[_0x3a71('0x3c')]);_0x5a9d9a['attributes']=_[_0x3a71('0x3f')](_0x592159[_0x3a71('0x3b')],qs[_0x3a71('0x41')](_0x41be97[_0x3a71('0x3c')]['fields']));_0x5a9d9a[_0x3a71('0x40')]=_0x5a9d9a[_0x3a71('0x40')]['length']?_0x5a9d9a[_0x3a71('0x40')]:_0x592159[_0x3a71('0x3b')];if(_0x41be97[_0x3a71('0x3c')][_0x3a71('0x4c')]){_0x5a9d9a['include']=[{'all':!![]}];}_0x5a9d9a=_['merge']({},_0x5a9d9a,_0x41be97['options']);return db[_0x3a71('0x38')]['find'](_0x5a9d9a)['then'](handleEntityNotFound(_0x2fa52e,null))[_0x3a71('0x32')](respondWithResult(_0x2fa52e,null))[_0x3a71('0x4f')](handleError(_0x2fa52e,null));};exports[_0x3a71('0x50')]=function(_0x1f3255,_0x475f99){return db[_0x3a71('0x38')][_0x3a71('0x50')](_0x1f3255[_0x3a71('0x51')],{})['then'](respondWithResult(_0x475f99,0xc9))['catch'](handleError(_0x475f99,null));};exports[_0x3a71('0x31')]=function(_0x26a79d,_0x1c25f1){if(_0x26a79d[_0x3a71('0x51')]['id']){delete _0x26a79d[_0x3a71('0x51')]['id'];}return db[_0x3a71('0x38')][_0x3a71('0x52')]({'where':{'id':_0x26a79d[_0x3a71('0x53')]['id']}})[_0x3a71('0x32')](handleEntityNotFound(_0x1c25f1,null))[_0x3a71('0x32')](saveUpdates(_0x26a79d['body'],null))[_0x3a71('0x32')](respondWithResult(_0x1c25f1,null))['catch'](handleError(_0x1c25f1,null));};exports[_0x3a71('0x54')]=function(_0x39d1cf,_0x25abc0){return db['SmsMessage'][_0x3a71('0x52')]({'where':{'id':_0x39d1cf[_0x3a71('0x53')]['id']}})[_0x3a71('0x32')](handleEntityNotFound(_0x25abc0,null))[_0x3a71('0x32')](removeEntity(_0x25abc0,null))[_0x3a71('0x4f')](handleError(_0x25abc0,null));};exports[_0x3a71('0x55')]=function(_0xac7100,_0x56d129){return db[_0x3a71('0x38')]['describe']()['then'](respondWithResult(_0x56d129,null))[_0x3a71('0x4f')](handleError(_0x56d129,null));};var interaction_log=require(_0x3a71('0x13'))(_0x3a71('0x56'));exports[_0x3a71('0x57')]=function(_0x42a6a3,_0x209bd6,_0x21d892){var _0xce8eca={'agent':{},'channel':'sms'};if(_0x42a6a3[_0x3a71('0x51')]['id']){delete _0x42a6a3[_0x3a71('0x51')]['id'];}_0x42a6a3[_0x3a71('0x51')][_0x3a71('0x58')]=!![];_0x42a6a3[_0x3a71('0x51')][_0x3a71('0x59')]=moment()[_0x3a71('0x5a')]('YYYY-MM-DD\x20HH:mm:ss');_0x42a6a3[_0x3a71('0x51')][_0x3a71('0x5b')]=_0x42a6a3[_0x3a71('0x51')][_0x3a71('0x5b')]||_0x42a6a3[_0x3a71('0x5c')]['id'];_0xce8eca[_0x3a71('0x5d')]['id']=_0x42a6a3['body'][_0x3a71('0x5b')];return db['SmsMessage'][_0x3a71('0x52')]({'where':{'id':_0x42a6a3[_0x3a71('0x53')]['id'],'UserId':null}})[_0x3a71('0x32')](handleEntityNotFound(_0x209bd6,null))[_0x3a71('0x32')](saveUpdates(_0x42a6a3[_0x3a71('0x51')],null))[_0x3a71('0x32')](function(_0x513a62){if(_0x513a62){_0xce8eca[_0x3a71('0x27')]=_0x513a62[_0x3a71('0x5e')]({'plain':!![]});return db['SmsInteraction'][_0x3a71('0x52')]({'where':{'id':_0x513a62[_0x3a71('0x5f')]}});}return null;})['then'](handleEntityNotFound(_0x209bd6,null))[_0x3a71('0x32')](function(_0x5eca61){if(_0x5eca61){return _0x5eca61[_0x3a71('0x31')]({'UserId':_0x42a6a3[_0x3a71('0x51')]['UserId'],'read1stAt':_[_0x3a71('0x60')](_0x5eca61[_0x3a71('0x61')])?moment()[_0x3a71('0x5a')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x3a71('0x32')](function(_0x67e42f){if(_0x67e42f){_0xce8eca['interaction']=_0x67e42f[_0x3a71('0x5e')]({'plain':!![]});interaction_log[_0x3a71('0x20')](_0x3a71('0x62'),_0x42a6a3[_0x3a71('0x5c')]['id'],_0x42a6a3[_0x3a71('0x5c')][_0x3a71('0x34')],_0x42a6a3[_0x3a71('0x5c')][_0x3a71('0x63')],_0xce8eca[_0x3a71('0x64')]['id'],_0x42a6a3['body']?JSON['stringify'](_0x42a6a3['body']):_0x3a71('0x65'));return respondWithRpcPromise(_0x3a71('0x66'),'acceptMessage',_0xce8eca);}return null;})[_0x3a71('0x32')](function(_0xb9ee07){var _0x82015f=_0x3a71('0x67')+_0xb9ee07[_0x3a71('0x27')][_0x3a71('0x68')];return db[_0x3a71('0x69')]['query'](_0x82015f,{'type':db[_0x3a71('0x6a')][_0x3a71('0x6b')]['SELECT'],'raw':!![]})[_0x3a71('0x32')](function(_0x53e478){return _0x53e478;});})[_0x3a71('0x32')](function(_0x24bcea){if(_0x24bcea){_0xce8eca['message']['contact']=_0x24bcea[0x0];if(!_0x42a6a3['body'][_0x3a71('0x5b')])return;return db['User'][_0x3a71('0x52')]({'where':{'id':_0x42a6a3[_0x3a71('0x51')]['UserId'],'role':_0x3a71('0x5d')},'attributes':['id','name',_0x3a71('0x6c'),_0x3a71('0x6d'),_0x3a71('0x6e')],'raw':!![]});}return null;})[_0x3a71('0x32')](function(_0x8d9b59){if(!_0x8d9b59)return null;_0xce8eca[_0x3a71('0x27')]['agent']=_0x8d9b59;return _0xce8eca;})[_0x3a71('0x32')](function(_0x4e58ab){if(_0x4e58ab){if(_0x42a6a3['body']['manual']){_0xce8eca[_0x3a71('0x27')][_0x3a71('0x6f')]=util[_0x3a71('0x5a')](_0x3a71('0x70'),_0x42a6a3[_0x3a71('0x5c')][_0x3a71('0x34')]);_0xce8eca[_0x3a71('0x27')]['channel']=_0xce8eca[_0x3a71('0x71')];_0xce8eca['message'][_0x3a71('0x72')]='accept';return respondWithRpcPromise(_0x3a71('0x73'),'EventManager',{'event':_0x3a71('0x74'),'message':_0xce8eca['message']},client9002)[_0x3a71('0x32')](function(){return _0xce8eca;});}return _0xce8eca;}return null;})[_0x3a71('0x32')](respondWithResult(_0x209bd6,null))[_0x3a71('0x4f')](handleError(_0x209bd6,null));};var interaction_log=require(_0x3a71('0x13'))(_0x3a71('0x56'));exports[_0x3a71('0x75')]=function(_0x5011d9,_0x13df7c,_0x390b1b){var _0x54c6a0={'agent':{},'channel':_0x3a71('0x76')};if(_0x5011d9[_0x3a71('0x51')]['id']){delete _0x5011d9[_0x3a71('0x51')]['id'];}_0x5011d9[_0x3a71('0x51')][_0x3a71('0x5b')]=_0x5011d9[_0x3a71('0x51')][_0x3a71('0x5b')]||_0x5011d9[_0x3a71('0x5c')]['id'];_0x54c6a0[_0x3a71('0x5d')]['id']=_0x5011d9['body'][_0x3a71('0x5b')];return db[_0x3a71('0x38')][_0x3a71('0x52')]({'where':{'id':_0x5011d9['params']['id'],'UserId':null}})[_0x3a71('0x32')](handleEntityNotFound(_0x13df7c,null))[_0x3a71('0x32')](function(_0x27e218){if(_0x27e218){_0x54c6a0[_0x3a71('0x27')]=_0x27e218['get']({'plain':!![]});return db['SmsInteraction'][_0x3a71('0x52')]({'where':{'id':_0x27e218['SmsInteractionId']}});}return null;})[_0x3a71('0x32')](handleEntityNotFound(_0x13df7c,null))[_0x3a71('0x32')](function(_0x45b089){if(_0x45b089){_0x54c6a0[_0x3a71('0x64')]=_0x45b089[_0x3a71('0x5e')]({'plain':!![]});interaction_log[_0x3a71('0x20')](_0x3a71('0x77'),_0x5011d9[_0x3a71('0x5c')]['id'],_0x5011d9['user'][_0x3a71('0x34')],_0x5011d9[_0x3a71('0x5c')][_0x3a71('0x63')],_0x54c6a0[_0x3a71('0x64')]['id'],_0x5011d9[_0x3a71('0x51')]?JSON[_0x3a71('0x24')](_0x5011d9['body']):'null');return respondWithRpcPromise(_0x3a71('0x78'),_0x3a71('0x79'),_0x54c6a0);}return null;})[_0x3a71('0x32')](function(_0xe96cb1){var _0x14823b=_0x3a71('0x67')+_0xe96cb1[_0x3a71('0x27')]['ContactId'];return db[_0x3a71('0x69')][_0x3a71('0x3c')](_0x14823b,{'type':db[_0x3a71('0x6a')][_0x3a71('0x6b')][_0x3a71('0x7a')],'raw':!![]})[_0x3a71('0x32')](function(_0x425b99){return _0x425b99;});})[_0x3a71('0x32')](function(_0x4db925){if(_0x4db925){_0x54c6a0[_0x3a71('0x27')][_0x3a71('0x7b')]=_0x4db925[0x0];if(!_0x5011d9[_0x3a71('0x51')][_0x3a71('0x5b')])return;return db[_0x3a71('0x7c')][_0x3a71('0x52')]({'where':{'id':_0x5011d9[_0x3a71('0x51')][_0x3a71('0x5b')],'role':_0x3a71('0x5d')},'attributes':['id',_0x3a71('0x34'),_0x3a71('0x6c'),_0x3a71('0x6d'),'internal'],'raw':!![]});}return null;})[_0x3a71('0x32')](function(_0x3bb66f){if(!_0x3bb66f)return null;_0x54c6a0[_0x3a71('0x27')][_0x3a71('0x5d')]=_0x3bb66f;return _0x54c6a0;})[_0x3a71('0x32')](function(_0x5d9b6b){if(_0x5d9b6b){_0x5d9b6b['message']['interface']=util['format'](_0x3a71('0x70'),_0x5011d9[_0x3a71('0x5c')][_0x3a71('0x34')]);_0x5d9b6b[_0x3a71('0x27')]['channel']=_0x54c6a0[_0x3a71('0x71')];_0x5d9b6b[_0x3a71('0x27')][_0x3a71('0x72')]=_0x3a71('0x75');respondWithRpcPromise('EventManager',_0x3a71('0x73'),{'event':'rejectmessage','message':_0x5d9b6b[_0x3a71('0x27')]},client9002);return _0x54c6a0;}return null;})[_0x3a71('0x32')](respondWithResult(_0x13df7c,null))[_0x3a71('0x4f')](handleError(_0x13df7c,null));};exports[_0x3a71('0x29')]=function(_0xe0c2da,_0x38441f,_0x2ea6ad){if(_0xe0c2da['body']['id']){delete _0xe0c2da[_0x3a71('0x51')]['id'];}var _0x278d9f;return db['SmsMessage'][_0x3a71('0x52')]({'where':{'id':_0xe0c2da[_0x3a71('0x53')]['id']}})[_0x3a71('0x32')](handleEntityNotFound(_0x38441f,null))[_0x3a71('0x32')](function(_0x19c78d){if(_0x19c78d){_0x278d9f=_0x19c78d;return db[_0x3a71('0x7d')]['find']({'where':{'id':_0x19c78d['SmsAccountId']}});}})[_0x3a71('0x32')](handleEntityNotFound(_0x38441f,null))[_0x3a71('0x32')](function(_0x267c9d){if(_0x267c9d){logger[_0x3a71('0x7e')](_0x3a71('0x22'),'status',_0x3a71('0x7f'),_0x267c9d[_0x3a71('0x4a')],util[_0x3a71('0x80')](_0xe0c2da[_0x3a71('0x51')],{'showHidden':![],'depth':null}));switch(_0x267c9d['type']){case _0x3a71('0x81'):if(_0xe0c2da[_0x3a71('0x51')][_0x3a71('0x82')]&&_0xe0c2da[_0x3a71('0x51')][_0x3a71('0x82')]===_0x278d9f[_0x3a71('0x83')]){return _0x278d9f[_0x3a71('0x31')]({'read':!![]});}else{logger[_0x3a71('0x25')](_0x3a71('0x84'),_0x3a71('0x29'),'twilio',util[_0x3a71('0x80')](_0xe0c2da[_0x3a71('0x51')],{'showHidden':![],'depth':null}));}break;case _0x3a71('0x85'):if(_0xe0c2da[_0x3a71('0x51')][_0x3a71('0x86')]&&_0xe0c2da['body'][_0x3a71('0x86')]===_0x278d9f[_0x3a71('0x83')]&&_['indexOf']([_0x3a71('0x87'),_0x3a71('0x88')],_0xe0c2da[_0x3a71('0x51')]['Status'])>=0x0){return _0x278d9f[_0x3a71('0x31')]({'read':!![]});}else{logger[_0x3a71('0x25')](_0x3a71('0x84'),_0x3a71('0x29'),_0x3a71('0x89'),util[_0x3a71('0x80')](_0xe0c2da[_0x3a71('0x51')],{'showHidden':![],'depth':null}));}break;case _0x3a71('0x8a'):var _0x198efa=_0xe0c2da['body'][_0x3a71('0x8b')][0x0];if(_0x198efa[_0x3a71('0x29')][_0x3a71('0x8c')]===_0x3a71('0x8d')){return _0x278d9f['update']({'read':!![]});}else{logger[_0x3a71('0x25')](_0x3a71('0x84'),_0x3a71('0x29'),_0x3a71('0x8a'),util[_0x3a71('0x80')](_0xe0c2da[_0x3a71('0x51')],{'showHidden':![],'depth':null}));}break;}return _0x278d9f;}})[_0x3a71('0x32')](respondWithResult(_0x38441f,null))['catch'](handleError(_0x38441f,null));};
\ No newline at end of file
index 4131915..3010d23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6ca=['SmsMessage','setMaxListeners','save','remove','emit','hasOwnProperty','exports','events'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xf6ca,0x187));var _0xaf6c=function(_0x356127,_0x4873ac){_0x356127=_0x356127-0x0;var _0x5d4c75=_0xf6ca[_0x356127];return _0x5d4c75;};'use strict';var EventEmitter=require(_0xaf6c('0x0'));var SmsMessage=require('../../mysqldb')['db'][_0xaf6c('0x1')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0xaf6c('0x2')](0x0);var events={'afterCreate':_0xaf6c('0x3'),'afterUpdate':'update','afterDestroy':_0xaf6c('0x4')};function emitEvent(_0x393396){return function(_0x204e90,_0x32276b,_0x552544){SmsMessageEvents[_0xaf6c('0x5')](_0x393396+':'+_0x204e90['id'],_0x204e90);SmsMessageEvents[_0xaf6c('0x5')](_0x393396,_0x204e90);_0x552544(null);};}for(var e in events){if(events[_0xaf6c('0x6')](e)){var event=events[e];SmsMessage['hook'](e,emitEvent(event));}}module[_0xaf6c('0x7')]=SmsMessageEvents;
\ No newline at end of file
+var _0x4612=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','save','update'];(function(_0x382c17,_0x251da8){var _0xefbd61=function(_0x210be5){while(--_0x210be5){_0x382c17['push'](_0x382c17['shift']());}};_0xefbd61(++_0x251da8);}(_0x4612,0x1eb));var _0x2461=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0x4612[_0x297fd3];return _0x2af381;};'use strict';var EventEmitter=require(_0x2461('0x0'));var SmsMessage=require(_0x2461('0x1'))['db']['SmsMessage'];var SmsMessageEvents=new EventEmitter();SmsMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2461('0x2'),'afterUpdate':_0x2461('0x3'),'afterDestroy':_0x2461('0x4')};function emitEvent(_0x4d1857){return function(_0x5945ce,_0x2466f4,_0x4308cb){SmsMessageEvents[_0x2461('0x5')](_0x4d1857+':'+_0x5945ce['id'],_0x5945ce);SmsMessageEvents[_0x2461('0x5')](_0x4d1857,_0x5945ce);_0x4308cb(null);};}for(var e in events){if(events[_0x2461('0x6')](e)){var event=events[e];SmsMessage[_0x2461('0x7')](e,emitEvent(event));}}module[_0x2461('0x8')]=SmsMessageEvents;
\ No newline at end of file
index d1d4938..0ce90e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12fd=['senderString','format','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','http_code','data','queued_count','head','message_id','clickSend','plivo','authId','https://api.plivo.com/v1/Account/%s/Message/','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','IBSSO\x20','Missing\x20parameters:\x20base_url','crypto','apiKey','login','sender','text','keys','sort','md5','digest','hex','id_sms','csc','Missing\x20parameters:\x20apiKey','https://platform.clickatell.com/messages','uuid','apiMessageId','clickatell','bandwidth','%s:%s','https://messaging.bandwidth.com/api/v2/users/','/messages','applicationId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','https://api.intelepeer.com/_rest/v4/app/sms/mdr','message','refid','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./smsMessage.attributes','exports','SmsMessage','sms_messages','messageId','body','models','toLowerCase','secret','isNil','SmsInteraction','findOne','update','createdAt','direction','catch','error','out','SmsAccount','find','then','type','twilio','accountSid','authToken','phone','messages','create','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','POST','total_sent','internal_order_id','deliveryReport','read','Missing\x20parameters:\x20username,\x20password','connectel','https://smsapi.connectel.se/api/v2/send/','requestid','Missing\x20parameters:\x20authToken','clicksend','username','xCALLY\x20Motion'];(function(_0x342184,_0x5ab1e4){var _0x1833ed=function(_0x1fcdbf){while(--_0x1fcdbf){_0x342184['push'](_0x342184['shift']());}};_0x1833ed(++_0x5ab1e4);}(_0x12fd,0x199));var _0xd12f=function(_0x4d620,_0x14c382){_0x4d620=_0x4d620-0x0;var _0x4f68fc=_0x12fd[_0x4d620];return _0x4f68fc;};'use strict';var _=require(_0xd12f('0x0'));var util=require(_0xd12f('0x1'));var logger=require(_0xd12f('0x2'))(_0xd12f('0x3'));var moment=require(_0xd12f('0x4'));var BPromise=require('bluebird');var rp=require(_0xd12f('0x5'));var fs=require('fs');var path=require(_0xd12f('0x6'));var rimraf=require(_0xd12f('0x7'));var config=require(_0xd12f('0x8'));var attributes=require(_0xd12f('0x9'));module[_0xd12f('0xa')]=function(_0x55bb7d,_0x3f733d){return _0x55bb7d['define'](_0xd12f('0xb'),attributes,{'tableName':_0xd12f('0xc'),'paranoid':![],'indexes':[{'name':_0xd12f('0xd'),'fields':[_0xd12f('0xd')]},{'name':'fti_sms_messages','fields':[_0xd12f('0xe')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0xd848dd,_0x5108a9,_0x59c17c){var _0x4a1677=_0x55bb7d[_0xd12f('0xf')];var _0x1c31c8=_0xd848dd['get']({'plain':!![]});if(_0x1c31c8['direction']['toLowerCase']()==='in'||_0x1c31c8['direction'][_0xd12f('0x10')]()==='out'&&!_0x1c31c8[_0xd12f('0x11')]&&!_[_0xd12f('0x12')](_0x1c31c8['UserId'])){_0x4a1677[_0xd12f('0x13')][_0xd12f('0x14')]({'where':{'id':_0x1c31c8['SmsInteractionId']}})['then'](function(_0x49afdf){if(_0x49afdf){_0x49afdf[_0xd12f('0x15')]({'lastMsgAt':_0x1c31c8[_0xd12f('0x16')],'lastMsgDirection':_0x1c31c8[_0xd12f('0x17')][_0xd12f('0x10')]()});}})[_0xd12f('0x18')](function(_0x60b06a){console[_0xd12f('0x19')](_0x60b06a);});}if(_0x1c31c8[_0xd12f('0x17')]===_0xd12f('0x1a')&&!_0x1c31c8['secret']){var _0x4b00a2;_0x4a1677[_0xd12f('0x1b')][_0xd12f('0x1c')]({'where':{'id':_0x1c31c8['SmsAccountId']},'raw':!![]})[_0xd12f('0x1d')](function(_0x12c884){_0x4b00a2=_0x12c884;if(_0x4b00a2&&_0x4b00a2[_0xd12f('0x1e')]){switch(_0x4b00a2['type']){case'twilio':var _0x22577d=require(_0xd12f('0x1f'));if(_0x4b00a2[_0xd12f('0x20')]&&_0x4b00a2[_0xd12f('0x21')]&&_0x4b00a2[_0xd12f('0x22')]){var _0x354cf0=new _0x22577d(_0x4b00a2['accountSid'],_0x4b00a2[_0xd12f('0x21')]);_0x354cf0[_0xd12f('0x23')][_0xd12f('0x24')]({'body':_0x1c31c8[_0xd12f('0xe')],'to':_0x1c31c8[_0xd12f('0x22')],'from':_0x4b00a2[_0xd12f('0x22')],'statusCallback':_0x4b00a2[_0xd12f('0x25')]+_0xd12f('0x26')+_0x1c31c8['id']+_0xd12f('0x27')+_0x4b00a2[_0xd12f('0x28')]})[_0xd12f('0x1d')](function(_0x322f78){if(_0x322f78[_0xd12f('0x29')]){return _0xd848dd[_0xd12f('0x15')]({'messageId':_0x322f78[_0xd12f('0x29')]});}})[_0xd12f('0x18')](function(_0x2218fe){logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x1f'),util[_0xd12f('0x2c')](_0x2218fe,{'showHidden':![],'depth':null}));});}else{logger[_0xd12f('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd12f('0x2b'),'twilio',_0xd12f('0x2d'));}break;case _0xd12f('0x2e'):var _0x4a5c97=_0xd12f('0x2f');if(_0x4b00a2['username']&&_0x4b00a2[_0xd12f('0x30')]){var _0x31ae8e={'recipient':[_0x1c31c8[_0xd12f('0x22')]],'message':_0x1c31c8[_0xd12f('0xe')],'message_type':_0x4b00a2['smsMethod']};if(_0x4b00a2['smsMethod']&&_0x4b00a2[_0xd12f('0x31')]!=='SI'){_0x31ae8e['sender']=_0x4b00a2[_0xd12f('0x22')];}var _0x45765e={'url':_0x4a5c97+'login?username='+_0x4b00a2['username']+'&password='+_0x4b00a2[_0xd12f('0x30')],'method':'GET'};rp(_0x45765e)[_0xd12f('0x1d')](function(_0x3b5d90){var _0x1de94d=_0x3b5d90['split'](';');var _0x17ab32={'user_key':_0x1de94d[0x0],'session_key':_0x1de94d[0x1]};_0x45765e={'url':_0x4a5c97+'sms','method':_0xd12f('0x32'),'headers':{'user_key':_0x17ab32['user_key'],'Session_key':_0x17ab32['session_key']},'json':!![],'body':_0x31ae8e};return rp(_0x45765e);})[_0xd12f('0x1d')](function(_0x39290e){if(_0x39290e[_0xd12f('0x33')]>=0x1){var _0x1dcc20={'messageId':_0x39290e[_0xd12f('0x34')]};if(_0x4b00a2[_0xd12f('0x31')]!=='GP'||!_0x4b00a2[_0xd12f('0x35')]){_0x1dcc20[_0xd12f('0x36')]=!![];}return _0xd848dd['update'](_0x1dcc20);}else{return logger['error'](_0xd12f('0x2a'),'afterCreate',_0xd12f('0x2e'),util[_0xd12f('0x2c')](_0x39290e,{'showHidden':![],'depth':null}));}})['catch'](function(_0xa668d4){return logger[_0xd12f('0x19')](_0xd12f('0x2a'),'afterCreate','skebby',util['inspect'](_0xa668d4,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xd12f('0x2a'),_0xd12f('0x2b'),'skebby',_0xd12f('0x37'));}break;case _0xd12f('0x38'):if(_0x4b00a2[_0xd12f('0x21')]){var _0x168b05={'recipient':_0x1c31c8[_0xd12f('0x22')],'message':_0x1c31c8['body'],'sender':_0x4b00a2['senderString']||_0x4b00a2['phone'],'authorization':_0x4b00a2[_0xd12f('0x21')]};var _0x5108a9={'method':_0xd12f('0x32'),'uri':_0xd12f('0x39'),'body':_0x168b05,'json':!![]};rp(_0x5108a9)[_0xd12f('0x1d')](function(_0x2ce514){var _0x5cb281={'messageId':_0x2ce514[_0xd12f('0x3a')]};if(!_0x4b00a2[_0xd12f('0x35')]){_0x5cb281[_0xd12f('0x36')]=!![];}return _0xd848dd[_0xd12f('0x15')](_0x5cb281);})['catch'](function(_0x3fa8f6){logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x38'),util[_0xd12f('0x2c')](_0x3fa8f6,{'showHidden':![],'depth':null}));});}else{logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x38'),_0xd12f('0x3b'));}break;case _0xd12f('0x3c'):if(_0x4b00a2[_0xd12f('0x3d')]&&_0x4b00a2['password']){var _0x168b05={'messages':[{'source':_0xd12f('0x3e'),'to':_0x1c31c8[_0xd12f('0x22')],'body':_0x1c31c8['body'],'from':_0x4b00a2[_0xd12f('0x3f')]||_0x4b00a2[_0xd12f('0x22')]}]};var _0x5df28f=util[_0xd12f('0x40')]('%s:%s',_0x4b00a2[_0xd12f('0x3d')],_0x4b00a2[_0xd12f('0x30')]);var _0x5108a9={'method':'POST','uri':_0xd12f('0x41'),'body':_0x168b05,'headers':{'Authorization':util[_0xd12f('0x40')](_0xd12f('0x42'),new Buffer(_0x5df28f)[_0xd12f('0x43')](_0xd12f('0x44')))},'json':!![]};rp(_0x5108a9)[_0xd12f('0x1d')](function(_0x1ab77e){if(_0x1ab77e[_0xd12f('0x45')]>=0xc8&&_0x1ab77e['http_code']<=0xce){if(_0x1ab77e[_0xd12f('0x46')]&&_0x1ab77e[_0xd12f('0x46')][_0xd12f('0x47')]>0x0){var _0x2c2385=_[_0xd12f('0x48')](_0x1ab77e['data'][_0xd12f('0x23')]);var _0x5ef50b={'messageId':_0x2c2385[_0xd12f('0x49')]};if(!_0x4b00a2[_0xd12f('0x35')]){_0x5ef50b[_0xd12f('0x36')]=!![];}return _0xd848dd[_0xd12f('0x15')](_0x5ef50b);}else{logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x4a'),util[_0xd12f('0x2c')](_0x1ab77e,{'showHidden':![],'depth':null}));}}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xd12f('0x4a'),util['inspect'](_0x1ab77e,{'showHidden':![],'depth':null}));}})[_0xd12f('0x18')](function(_0x48f312){logger[_0xd12f('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd12f('0x2b'),_0xd12f('0x4a'),util[_0xd12f('0x2c')](_0x48f312,{'showHidden':![],'depth':null}));});}else{logger[_0xd12f('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd12f('0x2b'),'clickSend',_0xd12f('0x37'));}break;case _0xd12f('0x4b'):if(_0x4b00a2[_0xd12f('0x4c')]&&_0x4b00a2[_0xd12f('0x21')]){var _0x168b05={'dst':_0x1c31c8['phone'],'text':_0x1c31c8[_0xd12f('0xe')],'src':_0x4b00a2[_0xd12f('0x3f')]||_0x4b00a2[_0xd12f('0x22')],'url':_0x4b00a2[_0xd12f('0x25')]+'/api/sms/messages/'+_0x1c31c8['id']+_0xd12f('0x27')+_0x4b00a2['token']};var _0x5df28f=util['format']('%s:%s',_0x4b00a2[_0xd12f('0x4c')],_0x4b00a2[_0xd12f('0x21')]);var _0x5108a9={'method':_0xd12f('0x32'),'uri':util[_0xd12f('0x40')](_0xd12f('0x4d'),_0x4b00a2[_0xd12f('0x4c')]),'body':_0x168b05,'headers':{'Authorization':util[_0xd12f('0x40')](_0xd12f('0x42'),new Buffer(_0x5df28f)[_0xd12f('0x43')](_0xd12f('0x44')))},'json':!![]};rp(_0x5108a9)[_0xd12f('0x1d')](function(_0x2dea93){var _0x3890c6={'messageId':_0x2dea93['message_uuid'][0x0]};return _0xd848dd[_0xd12f('0x15')](_0x3890c6);})[_0xd12f('0x18')](function(_0x4fb3ae){logger['error'](_0xd12f('0x2a'),'afterCreate',_0xd12f('0x4b'),util[_0xd12f('0x2c')](_0x4fb3ae,{'showHidden':![],'depth':null}));});}else{logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x4b'),_0xd12f('0x4e'));}break;case _0xd12f('0x4f'):if(_0x4b00a2[_0xd12f('0x3d')]&&_0x4b00a2['password']){if(_0x4b00a2[_0xd12f('0x50')]){var _0x3d4402={'method':_0xd12f('0x32'),'uri':_0x4b00a2['baseUrl']+_0xd12f('0x51'),'body':{'username':_0x4b00a2['username'],'password':_0x4b00a2['password']},'json':!![]};return rp(_0x3d4402)[_0xd12f('0x1d')](function(_0x49df52){var _0x3899c3={'method':_0xd12f('0x32'),'uri':_0x4b00a2['baseUrl']+_0xd12f('0x52'),'body':{'messages':[{'from':_0x4b00a2[_0xd12f('0x22')],'destinations':[{'to':_0x1c31c8[_0xd12f('0x22')]}],'text':_0x1c31c8[_0xd12f('0xe')],'notifyUrl':_0x4b00a2[_0xd12f('0x25')]+_0xd12f('0x26')+_0x1c31c8['id']+'/status?token='+_0x4b00a2['token'],'notifyContentType':_0xd12f('0x53'),'callbackData':_0x4b00a2[_0xd12f('0x22')]+';'+_0x1c31c8['body']}]},'headers':{'Authorization':_0xd12f('0x54')+_0x49df52[_0xd12f('0x28')]},'json':!![]};return rp(_0x3899c3)[_0xd12f('0x1d')](function(_0x4feca){if(_0x4feca[_0xd12f('0x23')]){var _0x46c870={'messageId':_0x4feca[_0xd12f('0x23')][0x0]['messageId']};if(!_0x4b00a2[_0xd12f('0x35')]){_0x46c870['read']=!![];}return _0xd848dd[_0xd12f('0x15')](_0x46c870);}else{return logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x4f'),util[_0xd12f('0x2c')](_0x4feca,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x74db43){return logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x4f'),util['inspect'](_0x74db43,{'showHidden':![],'depth':null}));});}else{logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x4f'),_0xd12f('0x55'));}}else{logger['error'](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x4f'),_0xd12f('0x37'));}break;case'csc':var _0x5195bc=require(_0xd12f('0x56'));if(_0x4b00a2[_0xd12f('0x57')]){var _0x31b4b7={};_0x31b4b7[_0xd12f('0x58')]=_0x4b00a2[_0xd12f('0x3d')];_0x31b4b7[_0xd12f('0x22')]=_0x1c31c8[_0xd12f('0x22')];_0x31b4b7[_0xd12f('0x59')]=_0x4b00a2[_0xd12f('0x22')];_0x31b4b7[_0xd12f('0x5a')]=_0x1c31c8['body'];_0x31b4b7['timestamp']=+new Date();var _0x1cc1e4='';var _0x4586d6='';var _0x280074=Object[_0xd12f('0x5b')](_0x31b4b7);_0x280074[_0xd12f('0x5c')]();for(var _0x3bb69a=0x0;_0x3bb69a<_0x280074['length'];_0x3bb69a++){if(_0x1cc1e4!=''){_0x1cc1e4+='&';}_0x1cc1e4+=_0x280074[_0x3bb69a]+'='+encodeURIComponent(_0x31b4b7[_0x280074[_0x3bb69a]]);_0x4586d6+=_0x31b4b7[_0x280074[_0x3bb69a]];}_0x4586d6+=_0x4b00a2[_0xd12f('0x57')];_0x4586d6=_0x5195bc['createHash'](_0xd12f('0x5d'))[_0xd12f('0x15')](_0x4586d6)[_0xd12f('0x5e')](_0xd12f('0x5f'));if(_0x1cc1e4!==''){_0x1cc1e4+='&';}_0x1cc1e4+='signature='+_0x4586d6;var _0x45765e={'method':'GET','uri':_0x4b00a2['baseUrl']+'/external/get/send.php?'+_0x1cc1e4,'json':!![]};return rp(_0x45765e)[_0xd12f('0x1d')](function(_0x313276){var _0x40f4d1=Object[_0xd12f('0x5b')](_0x313276);if(_0x313276[_0x40f4d1[0x0]]['error']&&parseInt(_0x313276[_0x40f4d1[0x0]][_0xd12f('0x19')])===0x0){var _0x16400d={'messageId':_0x313276[_0x40f4d1[0x0]][_0xd12f('0x60')]};if(!_0x4b00a2[_0xd12f('0x35')]){_0x16400d[_0xd12f('0x36')]=!![];}return _0xd848dd[_0xd12f('0x15')](_0x16400d);}else{return logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x61'),util['inspect'](_0x313276[_0xd12f('0x19')],{'showHidden':![],'depth':null}));}})[_0xd12f('0x18')](function(_0x82460e){return logger[_0xd12f('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd12f('0x2b'),'csc',util[_0xd12f('0x2c')](_0x82460e,{'showHidden':![],'depth':null}));});}else{logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x61'),_0xd12f('0x62'));}break;case'clickatell':if(_0x4b00a2[_0xd12f('0x57')]){var _0x245984={'method':_0xd12f('0x32'),'uri':_0xd12f('0x63'),'headers':{'Authorization':_0x4b00a2[_0xd12f('0x57')]},'body':{'content':_0x1c31c8[_0xd12f('0xe')],'to':[_0x1c31c8[_0xd12f('0x22')]],'from':_0x4b00a2['phone'],'binary':![],'clientMessageId':_0xd12f('0x64'),'charset':'UTF-8'},'json':!![]};rp(_0x245984)['then'](function(_0x3f076a){if(!_0x3f076a['error']){var _0x7a86ef={'messageId':_0x3f076a['messages'][0x0][_0xd12f('0x65')]};if(!_0x4b00a2[_0xd12f('0x35')]){_0x7a86ef[_0xd12f('0x36')]=!![];}return _0xd848dd[_0xd12f('0x15')](_0x7a86ef);}else{return logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x66'),util['inspect'](_0x3f076a[_0xd12f('0x19')],{'showHidden':![],'depth':null}));}})[_0xd12f('0x18')](function(_0x2471a9){return logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x66'),util[_0xd12f('0x2c')](_0x2471a9,{'showHidden':![],'depth':null}));});}else{logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x66'),'Missing\x20parameters:\x20apiKey');}break;case _0xd12f('0x67'):if(_0x4b00a2[_0xd12f('0x3d')]&&_0x4b00a2[_0xd12f('0x30')]){var _0x5df28f=util[_0xd12f('0x40')](_0xd12f('0x68'),_0x4b00a2[_0xd12f('0x3d')],_0x4b00a2[_0xd12f('0x30')]);var _0x5108a9={'method':_0xd12f('0x32'),'uri':_0xd12f('0x69')+_0x4b00a2['accountId']+_0xd12f('0x6a'),'body':{'to':[_0x1c31c8[_0xd12f('0x22')]],'text':_0x1c31c8[_0xd12f('0xe')],'from':_0x4b00a2[_0xd12f('0x22')],'applicationId':_0x4b00a2[_0xd12f('0x6b')]},'headers':{'Authorization':util[_0xd12f('0x40')](_0xd12f('0x42'),new Buffer(_0x5df28f)[_0xd12f('0x43')]('base64'))},'json':!![]};rp(_0x5108a9)[_0xd12f('0x1d')](function(_0x50217f){if(_0x50217f['id']){var _0x3016e5={'messageId':_0x50217f['id']};return _0xd848dd['update'](_0x3016e5);}else{logger[_0xd12f('0x19')](_0xd12f('0x2a'),'afterCreate',_0xd12f('0x67'),util[_0xd12f('0x2c')](_0x50217f,{'showHidden':![],'depth':null}));}})[_0xd12f('0x18')](function(_0x5699f5){logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','bandwidth',util[_0xd12f('0x2c')](_0x5699f5,{'showHidden':![],'depth':null}));});}else{logger[_0xd12f('0x19')](_0xd12f('0x2a'),'afterCreate',_0xd12f('0x67'),_0xd12f('0x37'));}break;case _0xd12f('0x6c'):if(_0x4b00a2['apiKey']){var _0x2c8fb7={};var _0x45765e={'method':'POST','uri':_0xd12f('0x6d'),'headers':{'Authorization':_0xd12f('0x6e')+_0x4b00a2[_0xd12f('0x57')],'Content-Type':_0xd12f('0x53')},'body':{'from':_0x4b00a2[_0xd12f('0x22')],'to':_0x1c31c8[_0xd12f('0x22')],'text':_0x1c31c8[_0xd12f('0xe')]},'json':!![]};return rp(_0x45765e)[_0xd12f('0x1d')](function(_0x5b2781){if(_0x5b2781['code']==0xca){_0x2c8fb7['message']=_0x5b2781;var _0x5076d9={'method':'POST','uri':_0xd12f('0x6f'),'headers':{'Authorization':_0xd12f('0x6e')+_0x4b00a2['apiKey'],'Content-Type':_0xd12f('0x53')},'body':{'refid':_0x2c8fb7[_0xd12f('0x70')][_0xd12f('0x71')]},'json':!![]};return rp(_0x5076d9)['then'](function(_0x1f6892){_0x2c8fb7['status']=_0x1f6892;var _0x14aec9={'messageId':_0x2c8fb7['message'][_0xd12f('0x71')],'read':!![]};return _0xd848dd[_0xd12f('0x15')](_0x14aec9);});}else{return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xd12f('0x2b'),'intelepeer',util[_0xd12f('0x2c')](_0x5b2781,{'showHidden':![],'depth':null}));}})['catch'](function(_0x3b0a0a){return logger[_0xd12f('0x19')](_0xd12f('0x2a'),_0xd12f('0x2b'),_0xd12f('0x6c'),util[_0xd12f('0x2c')](_0x3b0a0a,{'showHidden':![],'depth':null}));});}else{return logger['error'](_0xd12f('0x2a'),_0xd12f('0x2b'),'intelepeer',_0xd12f('0x72'));}break;}}})[_0xd12f('0x73')](function(){_0x59c17c();});}else{_0x59c17c();}}},'charset':_0xd12f('0x74'),'collate':_0xd12f('0x75')});};
\ No newline at end of file
+var _0x4fdb=['Missing\x20parameters:\x20base_url','csc','login','sender','text','keys','sort','length','apiKey','md5','digest','hex','signature=','/external/get/send.php?','id_sms','https://platform.clickatell.com/messages','UTF-8','apiMessageId','clickatell','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','intelepeer','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','Bearer\x20','refid','status','Token\x20not\x20received','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./smsMessage.attributes','SmsMessage','sms_messages','messageId','body','FULLTEXT','models','get','toLowerCase','direction','out','isNil','UserId','SmsInteraction','SmsInteractionId','then','update','createdAt','error','secret','SmsAccount','find','SmsAccountId','twilio','accountSid','authToken','phone','/api/sms/messages/','token','sid','catch','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','skebby','https://api.skebby.it/API/v1.0/REST/','password','smsMethod','login?username=','&password=','GET','sms','POST','user_key','session_key','total_sent','internal_order_id','deliveryReport','read','Missing\x20parameters:\x20username,\x20password','https://smsapi.connectel.se/api/v2/send/','requestid','connectel','inspect','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','format','username','toString','base64','http_code','data','queued_count','head','message_id','clickSend','plivo','authId','/status?token=','%s:%s','https://api.plivo.com/v1/Account/%s/Message/','Basic\x20%s','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','baseUrl','/auth/1/session','remote','application/json','IBSSO\x20','messages','infobip'];(function(_0x1b96ee,_0x32ffef){var _0x1aef42=function(_0x62d6e0){while(--_0x62d6e0){_0x1b96ee['push'](_0x1b96ee['shift']());}};_0x1aef42(++_0x32ffef);}(_0x4fdb,0x9c));var _0xb4fd=function(_0x2062fe,_0xf12be0){_0x2062fe=_0x2062fe-0x0;var _0x151aeb=_0x4fdb[_0x2062fe];return _0x151aeb;};'use strict';var _=require(_0xb4fd('0x0'));var util=require(_0xb4fd('0x1'));var logger=require(_0xb4fd('0x2'))(_0xb4fd('0x3'));var moment=require(_0xb4fd('0x4'));var BPromise=require(_0xb4fd('0x5'));var rp=require(_0xb4fd('0x6'));var fs=require('fs');var path=require(_0xb4fd('0x7'));var rimraf=require(_0xb4fd('0x8'));var config=require('../../config/environment');var attributes=require(_0xb4fd('0x9'));module['exports']=function(_0x14052b,_0x5d8b39){return _0x14052b['define'](_0xb4fd('0xa'),attributes,{'tableName':_0xb4fd('0xb'),'paranoid':![],'indexes':[{'name':_0xb4fd('0xc'),'fields':['messageId']},{'name':'fti_sms_messages','fields':[_0xb4fd('0xd')],'type':_0xb4fd('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x18c0f7,_0x4eb1ae,_0x1e1e16){var _0x17ac4b=_0x14052b[_0xb4fd('0xf')];var _0x23b08f=_0x18c0f7[_0xb4fd('0x10')]({'plain':!![]});if(_0x23b08f['direction'][_0xb4fd('0x11')]()==='in'||_0x23b08f[_0xb4fd('0x12')][_0xb4fd('0x11')]()===_0xb4fd('0x13')&&!_0x23b08f['secret']&&!_[_0xb4fd('0x14')](_0x23b08f[_0xb4fd('0x15')])){_0x17ac4b[_0xb4fd('0x16')]['findOne']({'where':{'id':_0x23b08f[_0xb4fd('0x17')]}})[_0xb4fd('0x18')](function(_0xc35d8d){if(_0xc35d8d){_0xc35d8d[_0xb4fd('0x19')]({'lastMsgAt':_0x23b08f[_0xb4fd('0x1a')],'lastMsgDirection':_0x23b08f[_0xb4fd('0x12')][_0xb4fd('0x11')]()});}})['catch'](function(_0x2076d5){console[_0xb4fd('0x1b')](_0x2076d5);});}if(_0x23b08f[_0xb4fd('0x12')]===_0xb4fd('0x13')&&!_0x23b08f[_0xb4fd('0x1c')]){var _0x137e51;_0x17ac4b[_0xb4fd('0x1d')][_0xb4fd('0x1e')]({'where':{'id':_0x23b08f[_0xb4fd('0x1f')]},'raw':!![]})[_0xb4fd('0x18')](function(_0x19f7b0){_0x137e51=_0x19f7b0;if(_0x137e51&&_0x137e51['type']){switch(_0x137e51['type']){case'twilio':var _0x5c14c0=require(_0xb4fd('0x20'));if(_0x137e51[_0xb4fd('0x21')]&&_0x137e51[_0xb4fd('0x22')]&&_0x137e51[_0xb4fd('0x23')]){var _0x458133=new _0x5c14c0(_0x137e51[_0xb4fd('0x21')],_0x137e51[_0xb4fd('0x22')]);_0x458133['messages']['create']({'body':_0x23b08f[_0xb4fd('0xd')],'to':_0x23b08f[_0xb4fd('0x23')],'from':_0x137e51[_0xb4fd('0x23')],'statusCallback':_0x137e51['remote']+_0xb4fd('0x24')+_0x23b08f['id']+'/status?token='+_0x137e51[_0xb4fd('0x25')]})['then'](function(_0x2a9c8c){if(_0x2a9c8c[_0xb4fd('0x26')]){return _0x18c0f7[_0xb4fd('0x19')]({'messageId':_0x2a9c8c[_0xb4fd('0x26')]});}})[_0xb4fd('0x27')](function(_0x456f35){logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),'afterCreate','twilio',util['inspect'](_0x456f35,{'showHidden':![],'depth':null}));});}else{logger[_0xb4fd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb4fd('0x29'),'twilio','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0xb4fd('0x2a'):var _0x7c5313=_0xb4fd('0x2b');if(_0x137e51['username']&&_0x137e51[_0xb4fd('0x2c')]){var _0x477a53={'recipient':[_0x23b08f[_0xb4fd('0x23')]],'message':_0x23b08f[_0xb4fd('0xd')],'message_type':_0x137e51['smsMethod']};if(_0x137e51[_0xb4fd('0x2d')]&&_0x137e51[_0xb4fd('0x2d')]!=='SI'){_0x477a53['sender']=_0x137e51[_0xb4fd('0x23')];}var _0x57ce81={'url':_0x7c5313+_0xb4fd('0x2e')+_0x137e51['username']+_0xb4fd('0x2f')+_0x137e51[_0xb4fd('0x2c')],'method':_0xb4fd('0x30')};rp(_0x57ce81)['then'](function(_0x55eed3){var _0x4d7a63=_0x55eed3['split'](';');var _0x1eeb9c={'user_key':_0x4d7a63[0x0],'session_key':_0x4d7a63[0x1]};_0x57ce81={'url':_0x7c5313+_0xb4fd('0x31'),'method':_0xb4fd('0x32'),'headers':{'user_key':_0x1eeb9c[_0xb4fd('0x33')],'Session_key':_0x1eeb9c[_0xb4fd('0x34')]},'json':!![],'body':_0x477a53};return rp(_0x57ce81);})[_0xb4fd('0x18')](function(_0xbf95eb){if(_0xbf95eb[_0xb4fd('0x35')]>=0x1){var _0x16a08a={'messageId':_0xbf95eb[_0xb4fd('0x36')]};if(_0x137e51[_0xb4fd('0x2d')]!=='GP'||!_0x137e51[_0xb4fd('0x37')]){_0x16a08a[_0xb4fd('0x38')]=!![];}return _0x18c0f7[_0xb4fd('0x19')](_0x16a08a);}else{return logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x2a'),util['inspect'](_0xbf95eb,{'showHidden':![],'depth':null}));}})['catch'](function(_0x930751){return logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x2a'),util['inspect'](_0x930751,{'showHidden':![],'depth':null}));});}else{logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x2a'),_0xb4fd('0x39'));}break;case'connectel':if(_0x137e51[_0xb4fd('0x22')]){var _0x4bc6b2={'recipient':_0x23b08f[_0xb4fd('0x23')],'message':_0x23b08f[_0xb4fd('0xd')],'sender':_0x137e51['senderString']||_0x137e51['phone'],'authorization':_0x137e51[_0xb4fd('0x22')]};var _0x4eb1ae={'method':_0xb4fd('0x32'),'uri':_0xb4fd('0x3a'),'body':_0x4bc6b2,'json':!![]};rp(_0x4eb1ae)[_0xb4fd('0x18')](function(_0x2718a0){var _0x478cf3={'messageId':_0x2718a0[_0xb4fd('0x3b')]};if(!_0x137e51[_0xb4fd('0x37')]){_0x478cf3['read']=!![];}return _0x18c0f7[_0xb4fd('0x19')](_0x478cf3);})[_0xb4fd('0x27')](function(_0x17e024){logger[_0xb4fd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb4fd('0x29'),_0xb4fd('0x3c'),util[_0xb4fd('0x3d')](_0x17e024,{'showHidden':![],'depth':null}));});}else{logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),'connectel',_0xb4fd('0x3e'));}break;case _0xb4fd('0x3f'):if(_0x137e51['username']&&_0x137e51[_0xb4fd('0x2c')]){var _0x4bc6b2={'messages':[{'source':_0xb4fd('0x40'),'to':_0x23b08f[_0xb4fd('0x23')],'body':_0x23b08f[_0xb4fd('0xd')],'from':_0x137e51['senderString']||_0x137e51[_0xb4fd('0x23')]}]};var _0x671ce5=util[_0xb4fd('0x41')]('%s:%s',_0x137e51[_0xb4fd('0x42')],_0x137e51['password']);var _0x4eb1ae={'method':_0xb4fd('0x32'),'uri':'https://rest.clicksend.com/v3/sms/send','body':_0x4bc6b2,'headers':{'Authorization':util[_0xb4fd('0x41')]('Basic\x20%s',new Buffer(_0x671ce5)[_0xb4fd('0x43')](_0xb4fd('0x44')))},'json':!![]};rp(_0x4eb1ae)[_0xb4fd('0x18')](function(_0x5500ef){if(_0x5500ef[_0xb4fd('0x45')]>=0xc8&&_0x5500ef[_0xb4fd('0x45')]<=0xce){if(_0x5500ef[_0xb4fd('0x46')]&&_0x5500ef[_0xb4fd('0x46')][_0xb4fd('0x47')]>0x0){var _0x3415cd=_[_0xb4fd('0x48')](_0x5500ef['data']['messages']);var _0x1595f2={'messageId':_0x3415cd[_0xb4fd('0x49')]};if(!_0x137e51[_0xb4fd('0x37')]){_0x1595f2[_0xb4fd('0x38')]=!![];}return _0x18c0f7['update'](_0x1595f2);}else{logger[_0xb4fd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xb4fd('0x4a'),util[_0xb4fd('0x3d')](_0x5500ef,{'showHidden':![],'depth':null}));}}else{logger['error'](_0xb4fd('0x28'),_0xb4fd('0x29'),'clickSend',util[_0xb4fd('0x3d')](_0x5500ef,{'showHidden':![],'depth':null}));}})[_0xb4fd('0x27')](function(_0x3b6014){logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb4fd('0x29'),_0xb4fd('0x4a'),util[_0xb4fd('0x3d')](_0x3b6014,{'showHidden':![],'depth':null}));});}else{logger[_0xb4fd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb4fd('0x29'),_0xb4fd('0x4a'),'Missing\x20parameters:\x20username,\x20password');}break;case _0xb4fd('0x4b'):if(_0x137e51[_0xb4fd('0x4c')]&&_0x137e51[_0xb4fd('0x22')]){var _0x4bc6b2={'dst':_0x23b08f[_0xb4fd('0x23')],'text':_0x23b08f[_0xb4fd('0xd')],'src':_0x137e51['senderString']||_0x137e51[_0xb4fd('0x23')],'url':_0x137e51['remote']+'/api/sms/messages/'+_0x23b08f['id']+_0xb4fd('0x4d')+_0x137e51[_0xb4fd('0x25')]};var _0x671ce5=util[_0xb4fd('0x41')](_0xb4fd('0x4e'),_0x137e51[_0xb4fd('0x4c')],_0x137e51[_0xb4fd('0x22')]);var _0x4eb1ae={'method':_0xb4fd('0x32'),'uri':util[_0xb4fd('0x41')](_0xb4fd('0x4f'),_0x137e51[_0xb4fd('0x4c')]),'body':_0x4bc6b2,'headers':{'Authorization':util[_0xb4fd('0x41')](_0xb4fd('0x50'),new Buffer(_0x671ce5)[_0xb4fd('0x43')]('base64'))},'json':!![]};rp(_0x4eb1ae)['then'](function(_0x130a5b){var _0x7c85e8={'messageId':_0x130a5b[_0xb4fd('0x51')][0x0]};return _0x18c0f7[_0xb4fd('0x19')](_0x7c85e8);})[_0xb4fd('0x27')](function(_0x5d1625){logger['error'](_0xb4fd('0x28'),_0xb4fd('0x29'),'plivo',util['inspect'](_0x5d1625,{'showHidden':![],'depth':null}));});}else{logger['error'](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x4b'),_0xb4fd('0x52'));}break;case'infobip':if(_0x137e51['username']&&_0x137e51[_0xb4fd('0x2c')]){if(_0x137e51[_0xb4fd('0x53')]){var _0x22ec0d={'method':'POST','uri':_0x137e51[_0xb4fd('0x53')]+_0xb4fd('0x54'),'body':{'username':_0x137e51[_0xb4fd('0x42')],'password':_0x137e51[_0xb4fd('0x2c')]},'json':!![]};return rp(_0x22ec0d)['then'](function(_0x423112){var _0x16c8e6={'method':'POST','uri':_0x137e51[_0xb4fd('0x53')]+'/sms/2/text/advanced','body':{'messages':[{'from':_0x137e51[_0xb4fd('0x23')],'destinations':[{'to':_0x23b08f['phone']}],'text':_0x23b08f[_0xb4fd('0xd')],'notifyUrl':_0x137e51[_0xb4fd('0x55')]+_0xb4fd('0x24')+_0x23b08f['id']+_0xb4fd('0x4d')+_0x137e51[_0xb4fd('0x25')],'notifyContentType':_0xb4fd('0x56'),'callbackData':_0x137e51[_0xb4fd('0x23')]+';'+_0x23b08f[_0xb4fd('0xd')]}]},'headers':{'Authorization':_0xb4fd('0x57')+_0x423112[_0xb4fd('0x25')]},'json':!![]};return rp(_0x16c8e6)[_0xb4fd('0x18')](function(_0x40882b){if(_0x40882b[_0xb4fd('0x58')]){var _0x454acd={'messageId':_0x40882b['messages'][0x0][_0xb4fd('0xc')]};if(!_0x137e51['deliveryReport']){_0x454acd[_0xb4fd('0x38')]=!![];}return _0x18c0f7['update'](_0x454acd);}else{return logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x59'),util['inspect'](_0x40882b,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x23333c){return logger['error'](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x59'),util['inspect'](_0x23333c,{'showHidden':![],'depth':null}));});}else{logger[_0xb4fd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb4fd('0x29'),_0xb4fd('0x59'),_0xb4fd('0x5a'));}}else{logger[_0xb4fd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb4fd('0x29'),'infobip',_0xb4fd('0x39'));}break;case _0xb4fd('0x5b'):var _0x28a12c=require('crypto');if(_0x137e51['apiKey']){var _0x571571={};_0x571571[_0xb4fd('0x5c')]=_0x137e51['username'];_0x571571[_0xb4fd('0x23')]=_0x23b08f['phone'];_0x571571[_0xb4fd('0x5d')]=_0x137e51[_0xb4fd('0x23')];_0x571571[_0xb4fd('0x5e')]=_0x23b08f[_0xb4fd('0xd')];_0x571571['timestamp']=+new Date();var _0x216173='';var _0x155942='';var _0x5b4ebe=Object[_0xb4fd('0x5f')](_0x571571);_0x5b4ebe[_0xb4fd('0x60')]();for(var _0x5a2bf1=0x0;_0x5a2bf1<_0x5b4ebe[_0xb4fd('0x61')];_0x5a2bf1++){if(_0x216173!=''){_0x216173+='&';}_0x216173+=_0x5b4ebe[_0x5a2bf1]+'='+encodeURIComponent(_0x571571[_0x5b4ebe[_0x5a2bf1]]);_0x155942+=_0x571571[_0x5b4ebe[_0x5a2bf1]];}_0x155942+=_0x137e51[_0xb4fd('0x62')];_0x155942=_0x28a12c['createHash'](_0xb4fd('0x63'))[_0xb4fd('0x19')](_0x155942)[_0xb4fd('0x64')](_0xb4fd('0x65'));if(_0x216173!==''){_0x216173+='&';}_0x216173+=_0xb4fd('0x66')+_0x155942;var _0x57ce81={'method':'GET','uri':_0x137e51[_0xb4fd('0x53')]+_0xb4fd('0x67')+_0x216173,'json':!![]};return rp(_0x57ce81)[_0xb4fd('0x18')](function(_0xb0c444){var _0x3596f7=Object[_0xb4fd('0x5f')](_0xb0c444);if(_0xb0c444[_0x3596f7[0x0]][_0xb4fd('0x1b')]&&parseInt(_0xb0c444[_0x3596f7[0x0]][_0xb4fd('0x1b')])===0x0){var _0x4042c1={'messageId':_0xb0c444[_0x3596f7[0x0]][_0xb4fd('0x68')]};if(!_0x137e51[_0xb4fd('0x37')]){_0x4042c1[_0xb4fd('0x38')]=!![];}return _0x18c0f7[_0xb4fd('0x19')](_0x4042c1);}else{return logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),'afterCreate',_0xb4fd('0x5b'),util[_0xb4fd('0x3d')](_0xb0c444[_0xb4fd('0x1b')],{'showHidden':![],'depth':null}));}})['catch'](function(_0x462ae3){return logger['error'](_0xb4fd('0x28'),'afterCreate','csc',util['inspect'](_0x462ae3,{'showHidden':![],'depth':null}));});}else{logger[_0xb4fd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xb4fd('0x5b'),'Missing\x20parameters:\x20apiKey');}break;case'clickatell':if(_0x137e51[_0xb4fd('0x62')]){var _0x53e09a={'method':_0xb4fd('0x32'),'uri':_0xb4fd('0x69'),'headers':{'Authorization':_0x137e51[_0xb4fd('0x62')]},'body':{'content':_0x23b08f[_0xb4fd('0xd')],'to':[_0x23b08f[_0xb4fd('0x23')]],'from':_0x137e51['phone'],'binary':![],'clientMessageId':'uuid','charset':_0xb4fd('0x6a')},'json':!![]};rp(_0x53e09a)[_0xb4fd('0x18')](function(_0x4d44ff){if(!_0x4d44ff[_0xb4fd('0x1b')]){var _0xc5c8b7={'messageId':_0x4d44ff[_0xb4fd('0x58')][0x0][_0xb4fd('0x6b')]};if(!_0x137e51['deliveryReport']){_0xc5c8b7[_0xb4fd('0x38')]=!![];}return _0x18c0f7[_0xb4fd('0x19')](_0xc5c8b7);}else{return logger[_0xb4fd('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xb4fd('0x29'),_0xb4fd('0x6c'),util['inspect'](_0x4d44ff[_0xb4fd('0x1b')],{'showHidden':![],'depth':null}));}})[_0xb4fd('0x27')](function(_0xc171d9){return logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x6c'),util[_0xb4fd('0x3d')](_0xc171d9,{'showHidden':![],'depth':null}));});}else{logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),'afterCreate',_0xb4fd('0x6c'),'Missing\x20parameters:\x20apiKey');}break;case _0xb4fd('0x6d'):if(_0x137e51[_0xb4fd('0x42')]&&_0x137e51[_0xb4fd('0x2c')]){var _0x671ce5=util[_0xb4fd('0x41')](_0xb4fd('0x4e'),_0x137e51[_0xb4fd('0x42')],_0x137e51[_0xb4fd('0x2c')]);var _0x4eb1ae={'method':_0xb4fd('0x32'),'uri':_0xb4fd('0x6e')+_0x137e51[_0xb4fd('0x6f')]+_0xb4fd('0x70'),'body':{'to':[_0x23b08f[_0xb4fd('0x23')]],'text':_0x23b08f['body'],'from':_0x137e51[_0xb4fd('0x23')],'applicationId':_0x137e51['applicationId']},'headers':{'Authorization':util[_0xb4fd('0x41')]('Basic\x20%s',new Buffer(_0x671ce5)[_0xb4fd('0x43')]('base64'))},'json':!![]};rp(_0x4eb1ae)[_0xb4fd('0x18')](function(_0x57deab){if(_0x57deab['id']){var _0x3c5042={'messageId':_0x57deab['id']};return _0x18c0f7[_0xb4fd('0x19')](_0x3c5042);}else{logger['error'](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x6d'),util[_0xb4fd('0x3d')](_0x57deab,{'showHidden':![],'depth':null}));}})[_0xb4fd('0x27')](function(_0x9ead9e){logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x6d'),util['inspect'](_0x9ead9e,{'showHidden':![],'depth':null}));});}else{logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x6d'),'Missing\x20parameters:\x20username,\x20password');}break;case _0xb4fd('0x71'):if(_0x137e51[_0xb4fd('0x62')]){var _0x228d40={};var _0x57ce81={'method':'POST','uri':'https://api.intelepeer.com/_rest/v4/app/sms/send','headers':{'Authorization':'Bearer\x20'+_0x137e51[_0xb4fd('0x62')],'Content-Type':_0xb4fd('0x56')},'body':{'from':_0x137e51['phone'],'to':_0x23b08f[_0xb4fd('0x23')],'text':_0x23b08f[_0xb4fd('0xd')]},'json':!![]};return rp(_0x57ce81)[_0xb4fd('0x18')](function(_0x4b18f3){if(_0x4b18f3[_0xb4fd('0x72')]==0xca){_0x228d40[_0xb4fd('0x73')]=_0x4b18f3;var _0x2efa1a={'method':_0xb4fd('0x32'),'uri':_0xb4fd('0x74'),'headers':{'Authorization':_0xb4fd('0x75')+_0x137e51['apiKey'],'Content-Type':_0xb4fd('0x56')},'body':{'refid':_0x228d40[_0xb4fd('0x73')][_0xb4fd('0x76')]},'json':!![]};return rp(_0x2efa1a)[_0xb4fd('0x18')](function(_0x5b7898){_0x228d40[_0xb4fd('0x77')]=_0x5b7898;var _0x36241d={'messageId':_0x228d40[_0xb4fd('0x73')][_0xb4fd('0x76')],'read':!![]};return _0x18c0f7[_0xb4fd('0x19')](_0x36241d);});}else{return logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),'afterCreate',_0xb4fd('0x71'),util[_0xb4fd('0x3d')](_0x4b18f3,{'showHidden':![],'depth':null}));}})[_0xb4fd('0x27')](function(_0x8313a8){return logger[_0xb4fd('0x1b')](_0xb4fd('0x28'),_0xb4fd('0x29'),_0xb4fd('0x71'),util[_0xb4fd('0x3d')](_0x8313a8,{'showHidden':![],'depth':null}));});}else{return logger['error'](_0xb4fd('0x28'),_0xb4fd('0x29'),'intelepeer',_0xb4fd('0x78'));}break;}}})['finally'](function(){_0x1e1e16();});}else{_0x1e1e16();}}},'charset':_0xb4fd('0x79'),'collate':_0xb4fd('0x7a')});};
\ No newline at end of file
index be3825f..b7a07f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa9d=['redis','defaults','localhost','./smsMessage.socket','register','info','request\x20sent','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','SmsMessage,\x20%s,\x20%s','message','result','catch','CreateSmsMessage','SmsMessage','create','body','options','util','moment','randomstring','../../mysqldb','rpc','jayson/promise','client','http'];(function(_0xa99357,_0x50ffad){var _0x111875=function(_0x4dce0c){while(--_0x4dce0c){_0xa99357['push'](_0xa99357['shift']());}};_0x111875(++_0x50ffad);}(_0xfa9d,0x64));var _0xdfa9=function(_0x3d4d96,_0x104ecf){_0x3d4d96=_0x3d4d96-0x0;var _0x2689a9=_0xfa9d[_0x3d4d96];return _0x2689a9;};'use strict';var _=require('lodash');var util=require(_0xdfa9('0x0'));var moment=require(_0xdfa9('0x1'));var BPromise=require('bluebird');var rs=require(_0xdfa9('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdfa9('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xdfa9('0x4'));var config=require('../../config/environment');var jayson=require(_0xdfa9('0x5'));var client=jayson[_0xdfa9('0x6')][_0xdfa9('0x7')]({'port':0x232a});config[_0xdfa9('0x8')]=_[_0xdfa9('0x9')](config[_0xdfa9('0x8')],{'host':_0xdfa9('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xdfa9('0x8')]));require(_0xdfa9('0xb'))[_0xdfa9('0xc')](socket);function respondWithRpcPromise(_0x2357e9,_0x27e0a2,_0x1d098d){return new BPromise(function(_0x3360a3,_0x1cc2c0){return client['request'](_0x2357e9,_0x1d098d)['then'](function(_0x2f5700){logger[_0xdfa9('0xd')]('SmsMessage,\x20%s,\x20%s',_0x27e0a2,_0xdfa9('0xe'));logger['debug'](_0xdfa9('0xf'),_0x27e0a2,_0xdfa9('0xe'),JSON[_0xdfa9('0x10')](_0x2f5700));if(_0x2f5700['error']){if(_0x2f5700['error']['code']===0x1f4){logger[_0xdfa9('0x11')](_0xdfa9('0x12'),_0x27e0a2,_0x2f5700['error'][_0xdfa9('0x13')]);return _0x1cc2c0(_0x2f5700[_0xdfa9('0x11')][_0xdfa9('0x13')]);}logger['error'](_0xdfa9('0x12'),_0x27e0a2,_0x2f5700[_0xdfa9('0x11')][_0xdfa9('0x13')]);return _0x3360a3(_0x2f5700['error'][_0xdfa9('0x13')]);}else{logger[_0xdfa9('0xd')](_0xdfa9('0x12'),_0x27e0a2,_0xdfa9('0xe'));_0x3360a3(_0x2f5700[_0xdfa9('0x14')][_0xdfa9('0x13')]);}})[_0xdfa9('0x15')](function(_0x2ea541){logger['error'](_0xdfa9('0x12'),_0x27e0a2,_0x2ea541);_0x1cc2c0(_0x2ea541);});});}exports[_0xdfa9('0x16')]=function(_0x13f743){var _0x4d7d0c=this;return new Promise(function(_0xc1218f,_0x1a52aa){return db[_0xdfa9('0x17')][_0xdfa9('0x18')](_0x13f743[_0xdfa9('0x19')],{'raw':_0x13f743[_0xdfa9('0x1a')]?_0x13f743['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x3af370){logger['info']('CreateSmsMessage',_0x13f743);logger['debug'](_0xdfa9('0x16'),_0x13f743,JSON[_0xdfa9('0x10')](_0x3af370));_0xc1218f(_0x3af370);})[_0xdfa9('0x15')](function(_0x172304){logger['error'](_0xdfa9('0x16'),_0x172304[_0xdfa9('0x13')],_0x13f743);_0x1a52aa(_0x4d7d0c[_0xdfa9('0x11')](0x1f4,_0x172304['message']));});});};
\ No newline at end of file
+var _0xb685=['localhost','socket.io-emitter','./smsMessage.socket','register','request','then','info','debug','request\x20sent','error','code','SmsMessage,\x20%s,\x20%s','message','result','catch','create','options','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults'];(function(_0x54c4c4,_0x240e00){var _0x59439c=function(_0x38a2ce){while(--_0x38a2ce){_0x54c4c4['push'](_0x54c4c4['shift']());}};_0x59439c(++_0x240e00);}(_0xb685,0xde));var _0x5b68=function(_0x1d0770,_0x4711d4){_0x1d0770=_0x1d0770-0x0;var _0x5bc7fa=_0xb685[_0x1d0770];return _0x5bc7fa;};'use strict';var _=require(_0x5b68('0x0'));var util=require(_0x5b68('0x1'));var moment=require(_0x5b68('0x2'));var BPromise=require(_0x5b68('0x3'));var rs=require(_0x5b68('0x4'));var fs=require('fs');var Redis=require(_0x5b68('0x5'));var db=require(_0x5b68('0x6'))['db'];var utils=require(_0x5b68('0x7'));var logger=require(_0x5b68('0x8'))(_0x5b68('0x9'));var config=require(_0x5b68('0xa'));var jayson=require(_0x5b68('0xb'));var client=jayson[_0x5b68('0xc')][_0x5b68('0xd')]({'port':0x232a});config[_0x5b68('0xe')]=_[_0x5b68('0xf')](config['redis'],{'host':_0x5b68('0x10'),'port':0x18eb});var socket=require(_0x5b68('0x11'))(new Redis(config[_0x5b68('0xe')]));require(_0x5b68('0x12'))[_0x5b68('0x13')](socket);function respondWithRpcPromise(_0x1ba3dc,_0x38343b,_0x3e5d80){return new BPromise(function(_0x1e9ebb,_0x3e80c3){return client[_0x5b68('0x14')](_0x1ba3dc,_0x3e5d80)[_0x5b68('0x15')](function(_0x2585c8){logger[_0x5b68('0x16')]('SmsMessage,\x20%s,\x20%s',_0x38343b,'request\x20sent');logger[_0x5b68('0x17')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x38343b,_0x5b68('0x18'),JSON['stringify'](_0x2585c8));if(_0x2585c8[_0x5b68('0x19')]){if(_0x2585c8[_0x5b68('0x19')][_0x5b68('0x1a')]===0x1f4){logger['error'](_0x5b68('0x1b'),_0x38343b,_0x2585c8[_0x5b68('0x19')]['message']);return _0x3e80c3(_0x2585c8[_0x5b68('0x19')][_0x5b68('0x1c')]);}logger[_0x5b68('0x19')]('SmsMessage,\x20%s,\x20%s',_0x38343b,_0x2585c8['error'][_0x5b68('0x1c')]);return _0x1e9ebb(_0x2585c8['error']['message']);}else{logger[_0x5b68('0x16')]('SmsMessage,\x20%s,\x20%s',_0x38343b,_0x5b68('0x18'));_0x1e9ebb(_0x2585c8[_0x5b68('0x1d')][_0x5b68('0x1c')]);}})[_0x5b68('0x1e')](function(_0x564b89){logger[_0x5b68('0x19')](_0x5b68('0x1b'),_0x38343b,_0x564b89);_0x3e80c3(_0x564b89);});});}exports['CreateSmsMessage']=function(_0x30916c){var _0x5ceb18=this;return new Promise(function(_0x123a6d,_0x3c0171){return db['SmsMessage'][_0x5b68('0x1f')](_0x30916c['body'],{'raw':_0x30916c[_0x5b68('0x20')]?_0x30916c['options'][_0x5b68('0x21')]===undefined?!![]:![]:!![]})[_0x5b68('0x15')](function(_0x1cf605){logger[_0x5b68('0x16')]('CreateSmsMessage',_0x30916c);logger[_0x5b68('0x17')]('CreateSmsMessage',_0x30916c,JSON['stringify'](_0x1cf605));_0x123a6d(_0x1cf605);})['catch'](function(_0xaafb7e){logger[_0x5b68('0x19')]('CreateSmsMessage',_0xaafb7e[_0x5b68('0x1c')],_0x30916c);_0x3c0171(_0x5ceb18[_0x5b68('0x19')](0x1f4,_0xaafb7e[_0x5b68('0x1c')]));});});};
\ No newline at end of file
index 9983fb8..efd3c5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3922=['length','smsMessage:','./smsMessage.events','save','remove','update','emit','register'];(function(_0x4706a6,_0x5a1c63){var _0x1bb705=function(_0x484ebb){while(--_0x484ebb){_0x4706a6['push'](_0x4706a6['shift']());}};_0x1bb705(++_0x5a1c63);}(_0x3922,0x1f2));var _0x2392=function(_0x3aff71,_0x493a7c){_0x3aff71=_0x3aff71-0x0;var _0x23b3ed=_0x3922[_0x3aff71];return _0x23b3ed;};'use strict';var SmsMessageEvents=require(_0x2392('0x0'));var events=[_0x2392('0x1'),_0x2392('0x2'),_0x2392('0x3')];function createListener(_0x45e1d9,_0x10fe0f){return function(_0xf795a2){_0x10fe0f[_0x2392('0x4')](_0x45e1d9,_0xf795a2);};}function removeListener(_0x3bc546,_0x42991b){return function(){SmsMessageEvents['removeListener'](_0x3bc546,_0x42991b);};}exports[_0x2392('0x5')]=function(_0x4197a2){for(var _0x2a49cf=0x0,_0x337618=events[_0x2392('0x6')];_0x2a49cf<_0x337618;_0x2a49cf++){var _0x5e0096=events[_0x2a49cf];var _0x3c350e=createListener(_0x2392('0x7')+_0x5e0096,_0x4197a2);SmsMessageEvents['on'](_0x5e0096,_0x3c350e);}};
\ No newline at end of file
+var _0xe5df=['./smsMessage.events','remove','emit','register'];(function(_0x66139b,_0x17a56b){var _0xeecedf=function(_0x2fe535){while(--_0x2fe535){_0x66139b['push'](_0x66139b['shift']());}};_0xeecedf(++_0x17a56b);}(_0xe5df,0x90));var _0xfe5d=function(_0x55df66,_0x4368e3){_0x55df66=_0x55df66-0x0;var _0x4dd344=_0xe5df[_0x55df66];return _0x4dd344;};'use strict';var SmsMessageEvents=require(_0xfe5d('0x0'));var events=['save',_0xfe5d('0x1'),'update'];function createListener(_0x2b9e55,_0x466283){return function(_0xf6a2d3){_0x466283[_0xfe5d('0x2')](_0x2b9e55,_0xf6a2d3);};}function removeListener(_0x52000d,_0xc5e17){return function(){SmsMessageEvents['removeListener'](_0x52000d,_0xc5e17);};}exports[_0xfe5d('0x3')]=function(_0x3fb069){for(var _0x2aed72=0x0,_0x184bc1=events['length'];_0x2aed72<_0x184bc1;_0x2aed72++){var _0x3abb28=events[_0x2aed72];var _0x33b32a=createListener('smsMessage:'+_0x3abb28,_0x3fb069);SmsMessageEvents['on'](_0x3abb28,_0x33b32a);}};
\ No newline at end of file
index 573b8cb..bb976d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30e3=['addAgents','update','/:id','destroy','delete','removeTeams','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./smsQueue.controller','get','isAuthenticated','index','/describe','describe','show','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams'];(function(_0x1f2104,_0x3d1a56){var _0x590031=function(_0x16e37d){while(--_0x16e37d){_0x1f2104['push'](_0x1f2104['shift']());}};_0x590031(++_0x3d1a56);}(_0x30e3,0x1f3));var _0x330e=function(_0x21ce32,_0x2ccd1c){_0x21ce32=_0x21ce32-0x0;var _0xd6b087=_0x30e3[_0x21ce32];return _0xd6b087;};'use strict';var multer=require(_0x330e('0x0'));var util=require(_0x330e('0x1'));var path=require(_0x330e('0x2'));var timeout=require(_0x330e('0x3'));var express=require(_0x330e('0x4'));var router=express['Router']();var fs_extra=require(_0x330e('0x5'));var auth=require(_0x330e('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x330e('0x7'));var controller=require(_0x330e('0x8'));router[_0x330e('0x9')]('/',auth[_0x330e('0xa')](),controller[_0x330e('0xb')]);router['get'](_0x330e('0xc'),auth['isAuthenticated'](),controller[_0x330e('0xd')]);router['get']('/:id',auth[_0x330e('0xa')](),controller[_0x330e('0xe')]);router[_0x330e('0x9')](_0x330e('0xf'),auth[_0x330e('0xa')](),controller['getMembers']);router[_0x330e('0x9')](_0x330e('0x10'),auth[_0x330e('0xa')](),controller[_0x330e('0x11')]);router[_0x330e('0x9')](_0x330e('0x12'),auth[_0x330e('0xa')](),controller[_0x330e('0x13')]);router[_0x330e('0x14')]('/',auth['isAuthenticated'](),controller[_0x330e('0x15')]);router['post'](_0x330e('0x10'),auth[_0x330e('0xa')](),controller[_0x330e('0x16')]);router[_0x330e('0x14')](_0x330e('0x12'),auth[_0x330e('0xa')](),controller[_0x330e('0x17')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x330e('0x18')]);router['delete'](_0x330e('0x19'),auth[_0x330e('0xa')](),controller[_0x330e('0x1a')]);router[_0x330e('0x1b')](_0x330e('0x10'),auth[_0x330e('0xa')](),controller[_0x330e('0x1c')]);router[_0x330e('0x1b')](_0x330e('0x12'),auth[_0x330e('0xa')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0xb7d6=['getAgents','post','create','addTeams','addAgents','put','/:id','update','destroy','delete','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./smsQueue.controller','get','isAuthenticated','/describe','describe','show','getMembers','/:id/teams','getTeams','/:id/users'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xb7d6,0x124));var _0x6b7d=function(_0x317489,_0x4a8108){_0x317489=_0x317489-0x0;var _0x169ab9=_0xb7d6[_0x317489];return _0x169ab9;};'use strict';var multer=require(_0x6b7d('0x0'));var util=require(_0x6b7d('0x1'));var path=require(_0x6b7d('0x2'));var timeout=require(_0x6b7d('0x3'));var express=require(_0x6b7d('0x4'));var router=express[_0x6b7d('0x5')]();var fs_extra=require(_0x6b7d('0x6'));var auth=require(_0x6b7d('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x6b7d('0x8'));router[_0x6b7d('0x9')]('/',auth[_0x6b7d('0xa')](),controller['index']);router[_0x6b7d('0x9')](_0x6b7d('0xb'),auth['isAuthenticated'](),controller[_0x6b7d('0xc')]);router[_0x6b7d('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x6b7d('0xd')]);router[_0x6b7d('0x9')]('/:id/members',auth[_0x6b7d('0xa')](),controller[_0x6b7d('0xe')]);router[_0x6b7d('0x9')](_0x6b7d('0xf'),auth[_0x6b7d('0xa')](),controller[_0x6b7d('0x10')]);router[_0x6b7d('0x9')](_0x6b7d('0x11'),auth[_0x6b7d('0xa')](),controller[_0x6b7d('0x12')]);router[_0x6b7d('0x13')]('/',auth[_0x6b7d('0xa')](),controller[_0x6b7d('0x14')]);router['post'](_0x6b7d('0xf'),auth[_0x6b7d('0xa')](),controller[_0x6b7d('0x15')]);router[_0x6b7d('0x13')](_0x6b7d('0x11'),auth['isAuthenticated'](),controller[_0x6b7d('0x16')]);router[_0x6b7d('0x17')](_0x6b7d('0x18'),auth[_0x6b7d('0xa')](),controller[_0x6b7d('0x19')]);router['delete']('/:id',auth[_0x6b7d('0xa')](),controller[_0x6b7d('0x1a')]);router[_0x6b7d('0x1b')](_0x6b7d('0xf'),auth[_0x6b7d('0xa')](),controller[_0x6b7d('0x1c')]);router[_0x6b7d('0x1b')]('/:id/users',auth[_0x6b7d('0xa')](),controller[_0x6b7d('0x1d')]);module[_0x6b7d('0x1e')]=router;
\ No newline at end of file
index b368e34..62919bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95f0=['STRING','name','INTEGER','ENUM','rrmemory','beepall','sequelize','exports'];(function(_0x205ede,_0x2f0d91){var _0x266c44=function(_0x591731){while(--_0x591731){_0x205ede['push'](_0x205ede['shift']());}};_0x266c44(++_0x2f0d91);}(_0x95f0,0x7e));var _0x095f=function(_0x3fd7be,_0x19483d){_0x3fd7be=_0x3fd7be-0x0;var _0x525660=_0x95f0[_0x3fd7be];return _0x525660;};'use strict';var Sequelize=require(_0x095f('0x0'));module[_0x095f('0x1')]={'name':{'type':Sequelize[_0x095f('0x2')],'unique':_0x095f('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x095f('0x2')]},'timeout':{'type':Sequelize[_0x095f('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x095f('0x5')](_0x095f('0x6'),_0x095f('0x7'),'roundrobin')}};
\ No newline at end of file
+var _0x3b21=['beepall','STRING','name','INTEGER','rrmemory'];(function(_0xbe05c8,_0x26be13){var _0xbd60ca=function(_0x202473){while(--_0x202473){_0xbe05c8['push'](_0xbe05c8['shift']());}};_0xbd60ca(++_0x26be13);}(_0x3b21,0x128));var _0x13b2=function(_0x56337b,_0x1c0416){_0x56337b=_0x56337b-0x0;var _0x47b70d=_0x3b21[_0x56337b];return _0x47b70d;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x13b2('0x0')],'unique':_0x13b2('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x13b2('0x0')]},'timeout':{'type':Sequelize[_0x13b2('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x13b2('0x3'),_0x13b2('0x4'),'roundrobin')}};
\ No newline at end of file
index 1977faf..e20df56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb181=['params','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','describe','findOne','UserSmsQueue','order','pick','SmsQueueId','findAll','User','findAndCountAll','UserId','smsPause','updatedAt','%s/%s','createdAt','getTeams','Team','addTeams','ids','Agents','transaction','each','emit','userSmsQueue:save','removeTeams','select','field','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','SELECT','every','TeamId','all','union','compact','value','isEmpty','removeAgents','forEach','userSmsQueue:remove','addAgents','omit','spread','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','socket.io-emitter','redis','./smsQueue.socket','register','end','status','json','limit','undefined','count','offset','set','Content-Range','apply','update','then','destroy','get','SmsQueues','error','stack','name','send','index','map','SmsQueue','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','merge','VIRTUAL','filter','includeAll','include','rows','catch','show'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xb181,0xc6));var _0x1b18=function(_0x47af3a,_0x24ed64){_0x47af3a=_0x47af3a-0x0;var _0x513303=_0xb181[_0x47af3a];return _0x513303;};'use strict';var emlformat=require(_0x1b18('0x0'));var rimraf=require(_0x1b18('0x1'));var zipdir=require(_0x1b18('0x2'));var jsonpatch=require(_0x1b18('0x3'));var rp=require('request-promise');var moment=require(_0x1b18('0x4'));var BPromise=require(_0x1b18('0x5'));var Mustache=require('mustache');var util=require(_0x1b18('0x6'));var path=require(_0x1b18('0x7'));var sox=require(_0x1b18('0x8'));var csv=require(_0x1b18('0x9'));var ejs=require(_0x1b18('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1b18('0xb'));var squel=require(_0x1b18('0xc'));var crypto=require('crypto');var jsforce=require(_0x1b18('0xd'));var deskjs=require(_0x1b18('0xe'));var toCsv=require(_0x1b18('0x9'));var querystring=require(_0x1b18('0xf'));var Papa=require('papaparse');var Redis=require(_0x1b18('0x10'));var authService=require(_0x1b18('0x11'));var qs=require(_0x1b18('0x12'));var as=require(_0x1b18('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1b18('0x14'))(_0x1b18('0x15'));var utils=require(_0x1b18('0x16'));var config=require(_0x1b18('0x17'));var licenseUtil=require(_0x1b18('0x18'));var db=require(_0x1b18('0x19'))['db'];config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x1b18('0x1a'))(new Redis(config[_0x1b18('0x1b')]));require(_0x1b18('0x1c'))[_0x1b18('0x1d')](socket);function respondWithStatusCode(_0x209245,_0x814d){_0x814d=_0x814d||0xcc;return function(_0xdcfda3){if(_0xdcfda3){return _0x209245['sendStatus'](_0x814d);}return _0x209245['status'](_0x814d)[_0x1b18('0x1e')]();};}function respondWithResult(_0x5b421d,_0x3c8d52){_0x3c8d52=_0x3c8d52||0xc8;return function(_0xa4702b){if(_0xa4702b){return _0x5b421d[_0x1b18('0x1f')](_0x3c8d52)[_0x1b18('0x20')](_0xa4702b);}};}function respondWithFilteredResult(_0x294c8f,_0x1187ad){return function(_0xd846b1){if(_0xd846b1){var _0x1e7d32=typeof _0x1187ad['offset']==='undefined'&&typeof _0x1187ad[_0x1b18('0x21')]===_0x1b18('0x22');var _0x11b887=_0xd846b1[_0x1b18('0x23')];var _0x516c88=_0x1e7d32?0x0:_0x1187ad['offset'];var _0x4c89d7=_0x1e7d32?_0xd846b1[_0x1b18('0x23')]:_0x1187ad[_0x1b18('0x24')]+_0x1187ad['limit'];var _0x4819ce;if(_0x4c89d7>=_0x11b887){_0x4c89d7=_0x11b887;_0x4819ce=0xc8;}else{_0x4819ce=0xce;}_0x294c8f['status'](_0x4819ce);return _0x294c8f[_0x1b18('0x25')](_0x1b18('0x26'),_0x516c88+'-'+_0x4c89d7+'/'+_0x11b887)['json'](_0xd846b1);}return null;};}function patchUpdates(_0x2925cf){return function(_0xfe4613){try{jsonpatch[_0x1b18('0x27')](_0xfe4613,_0x2925cf,!![]);}catch(_0xbf6304){return BPromise['reject'](_0xbf6304);}return _0xfe4613['save']();};}function saveUpdates(_0x2117e2,_0x45cece){return function(_0x149055){if(_0x149055){return _0x149055[_0x1b18('0x28')](_0x2117e2)[_0x1b18('0x29')](function(_0x3523ce){return _0x3523ce;});}return null;};}function removeEntity(_0x18b09e,_0x4d78fb){return function(_0x2bf404){if(_0x2bf404){return _0x2bf404[_0x1b18('0x2a')]()[_0x1b18('0x29')](function(){var _0x31ee16=_0x2bf404[_0x1b18('0x2b')]({'plain':!![]});var _0x454058=_0x1b18('0x2c');return db['UserProfileResource'][_0x1b18('0x2a')]({'where':{'type':_0x454058,'resourceId':_0x31ee16['id']}})['then'](function(){return _0x2bf404;});})[_0x1b18('0x29')](function(){_0x18b09e[_0x1b18('0x1f')](0xcc)[_0x1b18('0x1e')]();});}};}function handleEntityNotFound(_0x2ecc11,_0x187c07){return function(_0x46c386){if(!_0x46c386){_0x2ecc11['sendStatus'](0x194);}return _0x46c386;};}function handleError(_0x18120f,_0x345c96){_0x345c96=_0x345c96||0x1f4;return function(_0x1efc7c){logger[_0x1b18('0x2d')](_0x1efc7c[_0x1b18('0x2e')]);if(_0x1efc7c[_0x1b18('0x2f')]){delete _0x1efc7c['name'];}_0x18120f[_0x1b18('0x1f')](_0x345c96)[_0x1b18('0x30')](_0x1efc7c);};}exports[_0x1b18('0x31')]=function(_0x35f367,_0x505bb4){var _0x368f23={},_0x3b9109={},_0x3808b9={'count':0x0,'rows':[]};var _0x34cb31=_[_0x1b18('0x32')](db[_0x1b18('0x33')][_0x1b18('0x34')],function(_0x5d190b){return{'name':_0x5d190b[_0x1b18('0x35')],'type':_0x5d190b[_0x1b18('0x36')][_0x1b18('0x37')]};});_0x3b9109[_0x1b18('0x38')]=_['map'](_0x34cb31,_0x1b18('0x2f'));_0x3b9109[_0x1b18('0x39')]=_[_0x1b18('0x3a')](_0x35f367[_0x1b18('0x39')]);_0x3b9109[_0x1b18('0x3b')]=_[_0x1b18('0x3c')](_0x3b9109[_0x1b18('0x38')],_0x3b9109[_0x1b18('0x39')]);_0x368f23['attributes']=_[_0x1b18('0x3c')](_0x3b9109[_0x1b18('0x38')],qs[_0x1b18('0x3d')](_0x35f367['query']['fields']));_0x368f23[_0x1b18('0x3e')]=_0x368f23[_0x1b18('0x3e')][_0x1b18('0x3f')]?_0x368f23[_0x1b18('0x3e')]:_0x3b9109[_0x1b18('0x38')];if(!_0x35f367['query'][_0x1b18('0x40')](_0x1b18('0x41'))){_0x368f23['limit']=qs[_0x1b18('0x21')](_0x35f367['query'][_0x1b18('0x21')]);_0x368f23[_0x1b18('0x24')]=qs['offset'](_0x35f367[_0x1b18('0x39')]['offset']);}_0x368f23['order']=qs['sort'](_0x35f367[_0x1b18('0x39')][_0x1b18('0x42')]);_0x368f23[_0x1b18('0x43')]=qs[_0x1b18('0x3b')](_['pick'](_0x35f367[_0x1b18('0x39')],_0x3b9109[_0x1b18('0x3b')]),_0x34cb31);if(_0x35f367[_0x1b18('0x39')]['filter']){_0x368f23['where']=_[_0x1b18('0x44')](_0x368f23[_0x1b18('0x43')],{'$or':_[_0x1b18('0x32')](_0x34cb31,function(_0x2776e2){if(_0x2776e2[_0x1b18('0x36')]!==_0x1b18('0x45')){var _0xc6887a={};_0xc6887a[_0x2776e2[_0x1b18('0x2f')]]={'$like':'%'+_0x35f367[_0x1b18('0x39')][_0x1b18('0x46')]+'%'};return _0xc6887a;}})});}_0x368f23=_[_0x1b18('0x44')]({},_0x368f23,_0x35f367['options']);var _0x208e75={'where':_0x368f23[_0x1b18('0x43')]};return db['SmsQueue']['count'](_0x208e75)[_0x1b18('0x29')](function(_0x5305bf){_0x3808b9[_0x1b18('0x23')]=_0x5305bf;if(_0x35f367['query'][_0x1b18('0x47')]){_0x368f23[_0x1b18('0x48')]=[{'all':!![]}];}return db[_0x1b18('0x33')]['findAll'](_0x368f23);})[_0x1b18('0x29')](function(_0x5989db){_0x3808b9[_0x1b18('0x49')]=_0x5989db;return _0x3808b9;})['then'](respondWithFilteredResult(_0x505bb4,_0x368f23))[_0x1b18('0x4a')](handleError(_0x505bb4,null));};exports[_0x1b18('0x4b')]=function(_0x1361f8,_0x1db4ab){var _0x3397d3={'raw':!![],'where':{'id':_0x1361f8[_0x1b18('0x4c')]['id']}},_0x3c80f0={};_0x3c80f0[_0x1b18('0x38')]=_['keys'](db[_0x1b18('0x33')]['rawAttributes']);_0x3c80f0['query']=_['keys'](_0x1361f8[_0x1b18('0x39')]);_0x3c80f0[_0x1b18('0x3b')]=_[_0x1b18('0x3c')](_0x3c80f0[_0x1b18('0x38')],_0x3c80f0[_0x1b18('0x39')]);_0x3397d3[_0x1b18('0x3e')]=_[_0x1b18('0x3c')](_0x3c80f0[_0x1b18('0x38')],qs['fields'](_0x1361f8[_0x1b18('0x39')][_0x1b18('0x3d')]));_0x3397d3[_0x1b18('0x3e')]=_0x3397d3['attributes'][_0x1b18('0x3f')]?_0x3397d3['attributes']:_0x3c80f0[_0x1b18('0x38')];if(_0x1361f8['query'][_0x1b18('0x47')]){_0x3397d3['include']=[{'all':!![]}];}_0x3397d3=_[_0x1b18('0x44')]({},_0x3397d3,_0x1361f8[_0x1b18('0x4d')]);return db[_0x1b18('0x33')]['find'](_0x3397d3)['then'](handleEntityNotFound(_0x1db4ab,null))[_0x1b18('0x29')](respondWithResult(_0x1db4ab,null))[_0x1b18('0x4a')](handleError(_0x1db4ab,null));};exports[_0x1b18('0x4e')]=function(_0x281724,_0xfeaa07){return db['SmsQueue'][_0x1b18('0x4e')](_0x281724[_0x1b18('0x4f')],{})[_0x1b18('0x29')](function(_0x436cdf){var _0x18a03c=_0x281724[_0x1b18('0x50')][_0x1b18('0x2b')]({'plain':!![]});if(!_0x18a03c)throw new Error(_0x1b18('0x51'));if(_0x18a03c['role']==='user'){var _0x34e0d5=_0x436cdf['get']({'plain':!![]});var _0x275173=_0x1b18('0x2c');return db[_0x1b18('0x52')]['find']({'where':{'name':_0x275173,'userProfileId':_0x18a03c['userProfileId']},'raw':!![]})['then'](function(_0x107b6d){if(_0x107b6d&&_0x107b6d['autoAssociation']===0x0){return db['UserProfileResource'][_0x1b18('0x4e')]({'name':_0x34e0d5[_0x1b18('0x2f')],'resourceId':_0x34e0d5['id'],'type':_0x107b6d[_0x1b18('0x2f')],'sectionId':_0x107b6d['id']},{})[_0x1b18('0x29')](function(){return _0x436cdf;});}else{return _0x436cdf;}})[_0x1b18('0x4a')](function(_0x451403){logger[_0x1b18('0x2d')](_0x1b18('0x53'),_0x451403);throw _0x451403;});}return _0x436cdf;})['then'](respondWithResult(_0xfeaa07,0xc9))[_0x1b18('0x4a')](handleError(_0xfeaa07,null));};exports[_0x1b18('0x28')]=function(_0x2db680,_0x306ca1){if(_0x2db680['body']['id']){delete _0x2db680['body']['id'];}return db[_0x1b18('0x33')]['find']({'where':{'id':_0x2db680[_0x1b18('0x4c')]['id']}})['then'](handleEntityNotFound(_0x306ca1,null))[_0x1b18('0x29')](saveUpdates(_0x2db680[_0x1b18('0x4f')],null))[_0x1b18('0x29')](respondWithResult(_0x306ca1,null))['catch'](handleError(_0x306ca1,null));};exports[_0x1b18('0x2a')]=function(_0xe5df33,_0x2b5653){return db[_0x1b18('0x33')][_0x1b18('0x54')]({'where':{'id':_0xe5df33[_0x1b18('0x4c')]['id']}})['then'](handleEntityNotFound(_0x2b5653,null))[_0x1b18('0x29')](removeEntity(_0x2b5653,null))['catch'](handleError(_0x2b5653,null));};exports['describe']=function(_0x1cc39e,_0x1108ed){return db[_0x1b18('0x33')][_0x1b18('0x55')]()[_0x1b18('0x29')](respondWithResult(_0x1108ed,null))[_0x1b18('0x4a')](handleError(_0x1108ed,null));};exports['getMembers']=function(_0x23294b,_0x39391a,_0x211c5b){var _0x3f083e={'raw':!![],'where':{}},_0x2757ad={},_0x347f81;return db[_0x1b18('0x33')][_0x1b18('0x56')]({'where':{'id':_0x23294b[_0x1b18('0x4c')]['id']}})['then'](handleEntityNotFound(_0x39391a,null))[_0x1b18('0x29')](function(_0x1eb583){if(_0x1eb583){_0x347f81=_0x1eb583[_0x1b18('0x2b')]({'plain':!![]});_0x2757ad[_0x1b18('0x38')]=_[_0x1b18('0x3a')](db[_0x1b18('0x57')]['rawAttributes']);_0x2757ad[_0x1b18('0x39')]=_[_0x1b18('0x3a')](_0x23294b[_0x1b18('0x39')]);_0x2757ad['filters']=_[_0x1b18('0x3c')](_0x2757ad['model'],_0x2757ad['query']);_0x3f083e['attributes']=_[_0x1b18('0x3c')](_0x2757ad[_0x1b18('0x38')],qs[_0x1b18('0x3d')](_0x23294b[_0x1b18('0x39')][_0x1b18('0x3d')]));_0x3f083e[_0x1b18('0x3e')]=_0x3f083e[_0x1b18('0x3e')][_0x1b18('0x3f')]?_0x3f083e[_0x1b18('0x3e')]:_0x2757ad['model'];if(!_0x23294b['query'][_0x1b18('0x40')](_0x1b18('0x41'))){_0x3f083e[_0x1b18('0x21')]=qs[_0x1b18('0x21')](_0x23294b[_0x1b18('0x39')][_0x1b18('0x21')]);_0x3f083e[_0x1b18('0x24')]=qs[_0x1b18('0x24')](_0x23294b[_0x1b18('0x39')][_0x1b18('0x24')]);}_0x3f083e[_0x1b18('0x58')]=qs['sort'](_0x23294b['query'][_0x1b18('0x42')]);_0x3f083e[_0x1b18('0x43')]=qs[_0x1b18('0x3b')](_[_0x1b18('0x59')](_0x23294b['query'],_0x2757ad[_0x1b18('0x3b')]));_0x3f083e[_0x1b18('0x43')][_0x1b18('0x5a')]=_0x1eb583['id'];if(_0x23294b[_0x1b18('0x39')]['filter']){_0x3f083e['where']=_[_0x1b18('0x44')](_0x3f083e['where'],{'$or':_[_0x1b18('0x32')](_0x3f083e[_0x1b18('0x3e')],function(_0x2126fb){var _0x35c099={};_0x35c099[_0x2126fb]={'$like':'%'+_0x23294b[_0x1b18('0x39')][_0x1b18('0x46')]+'%'};return _0x35c099;})});}_0x3f083e=_[_0x1b18('0x44')]({},_0x3f083e,_0x23294b[_0x1b18('0x4d')]);return db[_0x1b18('0x57')][_0x1b18('0x5b')](_0x3f083e);}})[_0x1b18('0x29')](function(_0xa1748a){if(_0xa1748a){return db[_0x1b18('0x5c')][_0x1b18('0x5d')]({'where':{'id':_[_0x1b18('0x32')](_0xa1748a,_0x1b18('0x5e')),'role':'agent'},'attributes':['id',_0x1b18('0x2f'),_0x1b18('0x5f'),_0x1b18('0x60'),'createdAt']});}})[_0x1b18('0x29')](function(_0x115ad8){if(_0x115ad8){return{'count':_0x115ad8['count'],'rows':_['map'](_0x115ad8[_0x1b18('0x49')],function(_0x5bf102){return{'membername':_0x5bf102[_0x1b18('0x2f')],'UserId':_0x5bf102['id'],'queue_name':_0x347f81['name'],'SmsQueueId':_0x347f81['id'],'interface':util['format'](_0x1b18('0x61'),'SIP',_0x5bf102[_0x1b18('0x2f')]),'penalty':0x0,'paused':_0x5bf102[_0x1b18('0x5f')],'createdAt':_0x5bf102[_0x1b18('0x62')],'updatedAt':_0x5bf102[_0x1b18('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x39391a,_0x3f083e))['catch'](handleError(_0x39391a,null));};exports[_0x1b18('0x63')]=function(_0x15f904,_0x27913b,_0x51b115){var _0x3a14ed={};var _0x54cf5a={};var _0x50ee90;var _0x3e2916;return db[_0x1b18('0x33')]['findOne']({'where':{'id':_0x15f904[_0x1b18('0x4c')]['id']}})['then'](handleEntityNotFound(_0x27913b,null))['then'](function(_0xa4d374){if(_0xa4d374){_0x50ee90=_0xa4d374;_0x54cf5a[_0x1b18('0x38')]=_[_0x1b18('0x3a')](db[_0x1b18('0x64')][_0x1b18('0x34')]);_0x54cf5a['query']=_[_0x1b18('0x3a')](_0x15f904[_0x1b18('0x39')]);_0x54cf5a[_0x1b18('0x3b')]=_[_0x1b18('0x3c')](_0x54cf5a['model'],_0x54cf5a[_0x1b18('0x39')]);_0x3a14ed[_0x1b18('0x3e')]=_[_0x1b18('0x3c')](_0x54cf5a[_0x1b18('0x38')],qs[_0x1b18('0x3d')](_0x15f904['query'][_0x1b18('0x3d')]));_0x3a14ed[_0x1b18('0x3e')]=_0x3a14ed[_0x1b18('0x3e')]['length']?_0x3a14ed[_0x1b18('0x3e')]:_0x54cf5a[_0x1b18('0x38')];_0x3a14ed[_0x1b18('0x58')]=qs[_0x1b18('0x42')](_0x15f904[_0x1b18('0x39')][_0x1b18('0x42')]);_0x3a14ed[_0x1b18('0x43')]=qs[_0x1b18('0x3b')](_[_0x1b18('0x59')](_0x15f904[_0x1b18('0x39')],_0x54cf5a[_0x1b18('0x3b')]));if(_0x15f904[_0x1b18('0x39')][_0x1b18('0x46')]){_0x3a14ed['where']=_[_0x1b18('0x44')](_0x3a14ed[_0x1b18('0x43')],{'$or':_[_0x1b18('0x32')](_0x3a14ed[_0x1b18('0x3e')],function(_0x57fd27){var _0x97bf2d={};_0x97bf2d[_0x57fd27]={'$like':'%'+_0x15f904[_0x1b18('0x39')][_0x1b18('0x46')]+'%'};return _0x97bf2d;})});}_0x3a14ed=_[_0x1b18('0x44')]({},_0x3a14ed,_0x15f904['options']);return _0x50ee90[_0x1b18('0x63')](_0x3a14ed);}})['then'](function(_0x1290d8){if(_0x1290d8){_0x3e2916=_0x1290d8[_0x1b18('0x3f')];if(!_0x15f904[_0x1b18('0x39')][_0x1b18('0x40')](_0x1b18('0x41'))){_0x3a14ed[_0x1b18('0x21')]=qs[_0x1b18('0x21')](_0x15f904[_0x1b18('0x39')][_0x1b18('0x21')]);_0x3a14ed[_0x1b18('0x24')]=qs[_0x1b18('0x24')](_0x15f904[_0x1b18('0x39')][_0x1b18('0x24')]);}return _0x50ee90[_0x1b18('0x63')](_0x3a14ed);}})[_0x1b18('0x29')](function(_0x581670){if(_0x581670){return _0x581670?{'count':_0x3e2916,'rows':_0x581670}:null;}})[_0x1b18('0x29')](respondWithResult(_0x27913b,null))[_0x1b18('0x4a')](handleError(_0x27913b,null));};exports[_0x1b18('0x65')]=function(_0x3f0f2a,_0x1eb273,_0x374c8e){var _0x5998c7=_0x3f0f2a[_0x1b18('0x4f')][_0x1b18('0x66')];return db[_0x1b18('0x64')][_0x1b18('0x5b')]({'where':{'id':_0x5998c7},'attributes':['id'],'include':[{'model':db['User'],'as':_0x1b18('0x67'),'attributes':['id',_0x1b18('0x2f'),'online','voicePause','interface'],'raw':!![]}]})[_0x1b18('0x29')](function(_0x1784fb){if(_0x1784fb){var _0x2ba191=_['flatMap'](_0x1784fb,function(_0x474e4d){var _0x55d0f2=_0x474e4d[_0x1b18('0x2b')]({'plain':!![]});return _0x55d0f2[_0x1b18('0x67')];});return db[_0x1b18('0x33')][_0x1b18('0x54')]({'where':{'id':_0x3f0f2a['params']['id']}})[_0x1b18('0x29')](function(_0x476b8a){return db['sequelize'][_0x1b18('0x68')](function(_0x2c4fb3){return _0x476b8a[_0x1b18('0x65')](_0x5998c7,{'transaction':_0x2c4fb3})[_0x1b18('0x29')](function(){return BPromise[_0x1b18('0x69')](_0x2ba191,function(_0x3f9153){return db[_0x1b18('0x57')]['findOrCreate']({'where':{'UserId':_0x3f9153['id'],'SmsQueueId':_0x3f0f2a[_0x1b18('0x4c')]['id']},'transaction':_0x2c4fb3});});})[_0x1b18('0x29')](function(){_0x2ba191['forEach'](function(_0x24f5c3){socket[_0x1b18('0x6a')](_0x1b18('0x6b'),{'UserId':_0x24f5c3['id'],'SmsQueueId':_0x476b8a['id']});});});});});}})[_0x1b18('0x29')](respondWithStatusCode(_0x1eb273,null))[_0x1b18('0x4a')](handleError(_0x1eb273,null));};exports[_0x1b18('0x6c')]=function(_0x4089de,_0x241f06,_0x34bf8c){return db[_0x1b18('0x64')]['findAll']({'where':{'id':_0x4089de['query'][_0x1b18('0x66')]},'attributes':['id'],'include':[{'model':db[_0x1b18('0x5c')],'as':_0x1b18('0x67'),'attributes':['id'],'raw':!![]}]})[_0x1b18('0x29')](handleEntityNotFound(_0x241f06,null))[_0x1b18('0x29')](function(_0x49cd3a){var _0x4d40b5=_[_0x1b18('0x32')](_0x49cd3a,'id');var _0x10ea2c=[];var _0x19d1bd=[];var _0x2d132c=squel[_0x1b18('0x6d')]();_0x2d132c[_0x1b18('0x6e')](_0x1b18('0x6f'))[_0x1b18('0x70')]('team_has_sms_queues','tq')[_0x1b18('0x71')](_0x1b18('0x72'),'ut',_0x1b18('0x73'))[_0x1b18('0x43')](_0x1b18('0x74'),_0x4089de[_0x1b18('0x4c')]['id']);for(var _0x1bc3c4=0x0;_0x1bc3c4<_0x49cd3a[_0x1b18('0x3f')];_0x1bc3c4+=0x1){let _0x574bed=_0x49cd3a[_0x1bc3c4];for(var _0xae614e=0x0;_0xae614e<_0x574bed[_0x1b18('0x67')][_0x1b18('0x3f')];_0xae614e+=0x1){let _0x3a5f24=_0x574bed[_0x1b18('0x67')][_0xae614e];var _0x2aa24f=_0x2d132c[_0x1b18('0x75')]();_0x2aa24f[_0x1b18('0x43')](_0x1b18('0x76'),_0x3a5f24['id']);_0x19d1bd[_0x1b18('0x77')](db[_0x1b18('0x78')][_0x1b18('0x39')](_0x2aa24f[_0x1b18('0x79')](),{'type':db[_0x1b18('0x78')]['QueryTypes'][_0x1b18('0x7a')]})['then'](function(_0xdb3990){if(_0xdb3990[_0x1b18('0x3f')]===0x1){return _0x3a5f24['id'];}else{var _0x8ad25b=_[_0x1b18('0x7b')](_[_0x1b18('0x32')](_0xdb3990,_0x1b18('0x7c')),function(_0x32c7f5){return _['includes'](_0x4d40b5,_0x32c7f5);});if(_0x8ad25b){return _0x3a5f24['id'];}}}));}}return BPromise[_0x1b18('0x7d')](_0x19d1bd)[_0x1b18('0x29')](function(_0x5556c9){_0x10ea2c=_(_0x10ea2c)[_0x1b18('0x7e')](_0x5556c9)[_0x1b18('0x7f')]()[_0x1b18('0x80')]();return db[_0x1b18('0x33')]['find']({'where':{'id':_0x4089de[_0x1b18('0x4c')]['id']}})[_0x1b18('0x29')](function(_0x67acc3){return db[_0x1b18('0x78')][_0x1b18('0x68')](function(_0x12521a){return _0x67acc3['removeTeams'](_0x4089de[_0x1b18('0x39')][_0x1b18('0x66')],{'transaction':_0x12521a})[_0x1b18('0x29')](function(){if(!_[_0x1b18('0x81')](_0x10ea2c)){return _0x67acc3[_0x1b18('0x82')](_0x10ea2c,{'transaction':_0x12521a});}})[_0x1b18('0x29')](function(){_0x10ea2c[_0x1b18('0x83')](function(_0x11737a){socket['emit'](_0x1b18('0x84'),{'UserId':_0x11737a,'SmsQueueId':_0x67acc3['id']});});});});});});})[_0x1b18('0x29')](respondWithStatusCode(_0x241f06,null))[_0x1b18('0x4a')](handleError(_0x241f06,null));};exports[_0x1b18('0x85')]=function(_0x21d405,_0x2e1584,_0x9f8829){return db['SmsQueue'][_0x1b18('0x54')]({'where':{'id':_0x21d405[_0x1b18('0x4c')]['id']}})[_0x1b18('0x29')](handleEntityNotFound(_0x2e1584,null))[_0x1b18('0x29')](function(_0x554ca3){if(_0x554ca3){return _0x554ca3[_0x1b18('0x85')](_0x21d405[_0x1b18('0x4f')][_0x1b18('0x66')],_[_0x1b18('0x86')](_0x21d405['body'],['ids','id'])||{})[_0x1b18('0x87')](function(_0x164089){for(var _0x53251f=0x0;_0x53251f<_0x21d405[_0x1b18('0x4f')][_0x1b18('0x66')]['length'];_0x53251f+=0x1){socket[_0x1b18('0x6a')](_0x1b18('0x6b'),{'UserId':Number(_0x21d405[_0x1b18('0x4f')]['ids'][_0x53251f]),'SmsQueueId':Number(_0x21d405['params']['id'])});}return _0x164089;});}})[_0x1b18('0x29')](respondWithResult(_0x2e1584,null))[_0x1b18('0x4a')](handleError(_0x2e1584,null));};exports['removeAgents']=function(_0x10c105,_0x3d575d,_0x4bb7c6){return db[_0x1b18('0x33')][_0x1b18('0x54')]({'where':{'id':_0x10c105['params']['id']}})['then'](handleEntityNotFound(_0x3d575d,null))[_0x1b18('0x29')](function(_0x27097d){if(_0x27097d){return _0x27097d[_0x1b18('0x82')](_0x10c105['query'][_0x1b18('0x66')])['then'](function(){if(_['isArray'](_0x10c105[_0x1b18('0x39')]['ids'])){for(var _0x59b2dc=0x0;_0x59b2dc<_0x10c105['query'][_0x1b18('0x66')][_0x1b18('0x3f')];_0x59b2dc+=0x1){socket['emit'](_0x1b18('0x84'),{'UserId':Number(_0x10c105['query'][_0x1b18('0x66')][_0x59b2dc]),'SmsQueueId':Number(_0x10c105[_0x1b18('0x4c')]['id'])});}}else{socket[_0x1b18('0x6a')](_0x1b18('0x84'),{'UserId':Number(_0x10c105[_0x1b18('0x39')]['ids']),'SmsQueueId':Number(_0x10c105[_0x1b18('0x4c')]['id'])});}});}})[_0x1b18('0x29')](respondWithStatusCode(_0x3d575d,null))[_0x1b18('0x4a')](handleError(_0x3d575d,null));};exports['getAgents']=function(_0x1b65d3,_0x5c20e4,_0x491774){var _0xe40925={};var _0x191326={};var _0x20c62a;var _0x4b2b22;return db['SmsQueue']['findOne']({'where':{'id':_0x1b65d3[_0x1b18('0x4c')]['id']}})[_0x1b18('0x29')](handleEntityNotFound(_0x5c20e4,null))['then'](function(_0x5b1932){if(_0x5b1932){_0x20c62a=_0x5b1932;_0x191326[_0x1b18('0x38')]=_[_0x1b18('0x3a')](db['User'][_0x1b18('0x34')]);_0x191326['query']=_[_0x1b18('0x3a')](_0x1b65d3[_0x1b18('0x39')]);_0x191326['filters']=_[_0x1b18('0x3c')](_0x191326[_0x1b18('0x38')],_0x191326[_0x1b18('0x39')]);_0xe40925['attributes']=_['intersection'](_0x191326[_0x1b18('0x38')],qs[_0x1b18('0x3d')](_0x1b65d3[_0x1b18('0x39')]['fields']));_0xe40925['attributes']=_0xe40925[_0x1b18('0x3e')]['length']?_0xe40925['attributes']:_0x191326[_0x1b18('0x38')];_0xe40925[_0x1b18('0x58')]=qs['sort'](_0x1b65d3[_0x1b18('0x39')]['sort']);_0xe40925['where']=qs[_0x1b18('0x3b')](_['pick'](_0x1b65d3[_0x1b18('0x39')],_0x191326[_0x1b18('0x3b')]));if(_0x1b65d3[_0x1b18('0x39')][_0x1b18('0x46')]){_0xe40925['where']=_['merge'](_0xe40925[_0x1b18('0x43')],{'$or':_[_0x1b18('0x32')](_0xe40925[_0x1b18('0x3e')],function(_0x5cccb1){var _0x47ec02={};_0x47ec02[_0x5cccb1]={'$like':'%'+_0x1b65d3['query']['filter']+'%'};return _0x47ec02;})});}_0xe40925=_['merge']({},_0xe40925,_0x1b65d3[_0x1b18('0x4d')]);return _0x20c62a[_0x1b18('0x88')](_0xe40925);}})[_0x1b18('0x29')](function(_0x27a059){if(_0x27a059){_0x4b2b22=_0x27a059[_0x1b18('0x3f')];if(!_0x1b65d3[_0x1b18('0x39')][_0x1b18('0x40')](_0x1b18('0x41'))){_0xe40925[_0x1b18('0x21')]=qs[_0x1b18('0x21')](_0x1b65d3[_0x1b18('0x39')][_0x1b18('0x21')]);_0xe40925[_0x1b18('0x24')]=qs[_0x1b18('0x24')](_0x1b65d3[_0x1b18('0x39')][_0x1b18('0x24')]);}return _0x20c62a['getAgents'](_0xe40925);}})['then'](function(_0x27801c){if(_0x27801c){return _0x27801c?{'count':_0x4b2b22,'rows':_0x27801c}:null;}})[_0x1b18('0x29')](respondWithResult(_0x5c20e4,null))[_0x1b18('0x4a')](handleError(_0x5c20e4,null));};
\ No newline at end of file
+var _0xd9f4=['../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','get','SmsQueues','UserProfileResource','error','stack','name','send','map','SmsQueue','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','VIRTUAL','filter','merge','options','then','includeAll','include','findAll','rows','show','params','keys','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne','UserSmsQueue','order','SmsQueueId','User','findAndCountAll','UserId','agent','createdAt','format','%s/%s','SIP','smsPause','updatedAt','Team','pick','getTeams','addTeams','online','voicePause','flatMap','Agents','transaction','each','findOrCreate','forEach','emit','removeTeams','select','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','ut.UserId\x20=\x20?','sequelize','toString','QueryTypes','SELECT','every','TeamId','all','union','value','ids','isEmpty','removeAgents','userSmsQueue:remove','addAgents','omit','spread','userSmsQueue:save','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0xab525b,_0x7e1cc1){var _0x3029e2=function(_0x554b62){while(--_0x554b62){_0xab525b['push'](_0xab525b['shift']());}};_0x3029e2(++_0x7e1cc1);}(_0xd9f4,0x7b));var _0x4d9f=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0xd9f4[_0xb0f7c3];return _0x28ea68;};'use strict';var emlformat=require(_0x4d9f('0x0'));var rimraf=require(_0x4d9f('0x1'));var zipdir=require(_0x4d9f('0x2'));var jsonpatch=require(_0x4d9f('0x3'));var rp=require(_0x4d9f('0x4'));var moment=require(_0x4d9f('0x5'));var BPromise=require(_0x4d9f('0x6'));var Mustache=require(_0x4d9f('0x7'));var util=require(_0x4d9f('0x8'));var path=require(_0x4d9f('0x9'));var sox=require(_0x4d9f('0xa'));var csv=require(_0x4d9f('0xb'));var ejs=require(_0x4d9f('0xc'));var fs=require('fs');var fs_extra=require(_0x4d9f('0xd'));var _=require(_0x4d9f('0xe'));var squel=require(_0x4d9f('0xf'));var crypto=require(_0x4d9f('0x10'));var jsforce=require(_0x4d9f('0x11'));var deskjs=require(_0x4d9f('0x12'));var toCsv=require(_0x4d9f('0xb'));var querystring=require('querystring');var Papa=require(_0x4d9f('0x13'));var Redis=require(_0x4d9f('0x14'));var authService=require(_0x4d9f('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0x4d9f('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4d9f('0x17'))(_0x4d9f('0x18'));var utils=require(_0x4d9f('0x19'));var config=require(_0x4d9f('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x4d9f('0x1b'))['db'];config[_0x4d9f('0x1c')]=_[_0x4d9f('0x1d')](config[_0x4d9f('0x1c')],{'host':_0x4d9f('0x1e'),'port':0x18eb});var socket=require(_0x4d9f('0x1f'))(new Redis(config['redis']));require('./smsQueue.socket')[_0x4d9f('0x20')](socket);function respondWithStatusCode(_0x2344a6,_0x4c9808){_0x4c9808=_0x4c9808||0xcc;return function(_0x5b9a2c){if(_0x5b9a2c){return _0x2344a6[_0x4d9f('0x21')](_0x4c9808);}return _0x2344a6[_0x4d9f('0x22')](_0x4c9808)[_0x4d9f('0x23')]();};}function respondWithResult(_0x340f01,_0x8d2523){_0x8d2523=_0x8d2523||0xc8;return function(_0xa7ef26){if(_0xa7ef26){return _0x340f01[_0x4d9f('0x22')](_0x8d2523)[_0x4d9f('0x24')](_0xa7ef26);}};}function respondWithFilteredResult(_0x56c2d2,_0x1136e0){return function(_0x443fd3){if(_0x443fd3){var _0x260fdf=typeof _0x1136e0[_0x4d9f('0x25')]===_0x4d9f('0x26')&&typeof _0x1136e0[_0x4d9f('0x27')]===_0x4d9f('0x26');var _0x13762d=_0x443fd3['count'];var _0x41811e=_0x260fdf?0x0:_0x1136e0[_0x4d9f('0x25')];var _0x2c7843=_0x260fdf?_0x443fd3[_0x4d9f('0x28')]:_0x1136e0[_0x4d9f('0x25')]+_0x1136e0[_0x4d9f('0x27')];var _0x36d954;if(_0x2c7843>=_0x13762d){_0x2c7843=_0x13762d;_0x36d954=0xc8;}else{_0x36d954=0xce;}_0x56c2d2[_0x4d9f('0x22')](_0x36d954);return _0x56c2d2[_0x4d9f('0x29')](_0x4d9f('0x2a'),_0x41811e+'-'+_0x2c7843+'/'+_0x13762d)[_0x4d9f('0x24')](_0x443fd3);}return null;};}function patchUpdates(_0x103777){return function(_0x279eee){try{jsonpatch[_0x4d9f('0x2b')](_0x279eee,_0x103777,!![]);}catch(_0x3415fe){return BPromise[_0x4d9f('0x2c')](_0x3415fe);}return _0x279eee[_0x4d9f('0x2d')]();};}function saveUpdates(_0x226fd9,_0x253fdf){return function(_0x52b2e5){if(_0x52b2e5){return _0x52b2e5[_0x4d9f('0x2e')](_0x226fd9)['then'](function(_0x298115){return _0x298115;});}return null;};}function removeEntity(_0x24ba85,_0x329a48){return function(_0x4a8bd4){if(_0x4a8bd4){return _0x4a8bd4[_0x4d9f('0x2f')]()['then'](function(){var _0x40cc7c=_0x4a8bd4[_0x4d9f('0x30')]({'plain':!![]});var _0xe9d70d=_0x4d9f('0x31');return db[_0x4d9f('0x32')][_0x4d9f('0x2f')]({'where':{'type':_0xe9d70d,'resourceId':_0x40cc7c['id']}})['then'](function(){return _0x4a8bd4;});})['then'](function(){_0x24ba85[_0x4d9f('0x22')](0xcc)[_0x4d9f('0x23')]();});}};}function handleEntityNotFound(_0x4d035c,_0x2398fb){return function(_0x3fe1e3){if(!_0x3fe1e3){_0x4d035c[_0x4d9f('0x21')](0x194);}return _0x3fe1e3;};}function handleError(_0x59bf55,_0x1e0f9c){_0x1e0f9c=_0x1e0f9c||0x1f4;return function(_0x16dd90){logger[_0x4d9f('0x33')](_0x16dd90[_0x4d9f('0x34')]);if(_0x16dd90['name']){delete _0x16dd90[_0x4d9f('0x35')];}_0x59bf55[_0x4d9f('0x22')](_0x1e0f9c)[_0x4d9f('0x36')](_0x16dd90);};}exports['index']=function(_0x56c8bc,_0x38ec95){var _0x37bbf7={},_0x2363e5={},_0x6a9500={'count':0x0,'rows':[]};var _0x28cd80=_[_0x4d9f('0x37')](db[_0x4d9f('0x38')][_0x4d9f('0x39')],function(_0x4f5f66){return{'name':_0x4f5f66[_0x4d9f('0x3a')],'type':_0x4f5f66[_0x4d9f('0x3b')][_0x4d9f('0x3c')]};});_0x2363e5[_0x4d9f('0x3d')]=_[_0x4d9f('0x37')](_0x28cd80,'name');_0x2363e5[_0x4d9f('0x3e')]=_['keys'](_0x56c8bc['query']);_0x2363e5[_0x4d9f('0x3f')]=_[_0x4d9f('0x40')](_0x2363e5['model'],_0x2363e5[_0x4d9f('0x3e')]);_0x37bbf7[_0x4d9f('0x41')]=_[_0x4d9f('0x40')](_0x2363e5[_0x4d9f('0x3d')],qs[_0x4d9f('0x42')](_0x56c8bc['query'][_0x4d9f('0x42')]));_0x37bbf7['attributes']=_0x37bbf7[_0x4d9f('0x41')]['length']?_0x37bbf7['attributes']:_0x2363e5[_0x4d9f('0x3d')];if(!_0x56c8bc[_0x4d9f('0x3e')][_0x4d9f('0x43')](_0x4d9f('0x44'))){_0x37bbf7[_0x4d9f('0x27')]=qs[_0x4d9f('0x27')](_0x56c8bc[_0x4d9f('0x3e')]['limit']);_0x37bbf7['offset']=qs[_0x4d9f('0x25')](_0x56c8bc[_0x4d9f('0x3e')][_0x4d9f('0x25')]);}_0x37bbf7['order']=qs[_0x4d9f('0x45')](_0x56c8bc[_0x4d9f('0x3e')][_0x4d9f('0x45')]);_0x37bbf7['where']=qs[_0x4d9f('0x3f')](_['pick'](_0x56c8bc[_0x4d9f('0x3e')],_0x2363e5['filters']),_0x28cd80);if(_0x56c8bc[_0x4d9f('0x3e')]['filter']){_0x37bbf7[_0x4d9f('0x46')]=_['merge'](_0x37bbf7[_0x4d9f('0x46')],{'$or':_['map'](_0x28cd80,function(_0x1f58d6){if(_0x1f58d6[_0x4d9f('0x3b')]!==_0x4d9f('0x47')){var _0x4853fe={};_0x4853fe[_0x1f58d6['name']]={'$like':'%'+_0x56c8bc[_0x4d9f('0x3e')][_0x4d9f('0x48')]+'%'};return _0x4853fe;}})});}_0x37bbf7=_[_0x4d9f('0x49')]({},_0x37bbf7,_0x56c8bc[_0x4d9f('0x4a')]);var _0x5f5218={'where':_0x37bbf7[_0x4d9f('0x46')]};return db[_0x4d9f('0x38')]['count'](_0x5f5218)[_0x4d9f('0x4b')](function(_0x2b3a79){_0x6a9500[_0x4d9f('0x28')]=_0x2b3a79;if(_0x56c8bc[_0x4d9f('0x3e')][_0x4d9f('0x4c')]){_0x37bbf7[_0x4d9f('0x4d')]=[{'all':!![]}];}return db[_0x4d9f('0x38')][_0x4d9f('0x4e')](_0x37bbf7);})['then'](function(_0x53baf5){_0x6a9500[_0x4d9f('0x4f')]=_0x53baf5;return _0x6a9500;})[_0x4d9f('0x4b')](respondWithFilteredResult(_0x38ec95,_0x37bbf7))['catch'](handleError(_0x38ec95,null));};exports[_0x4d9f('0x50')]=function(_0x3ce31f,_0x5ef12e){var _0x961794={'raw':!![],'where':{'id':_0x3ce31f[_0x4d9f('0x51')]['id']}},_0x1d6f7a={};_0x1d6f7a['model']=_['keys'](db[_0x4d9f('0x38')][_0x4d9f('0x39')]);_0x1d6f7a['query']=_[_0x4d9f('0x52')](_0x3ce31f['query']);_0x1d6f7a[_0x4d9f('0x3f')]=_[_0x4d9f('0x40')](_0x1d6f7a[_0x4d9f('0x3d')],_0x1d6f7a[_0x4d9f('0x3e')]);_0x961794[_0x4d9f('0x41')]=_[_0x4d9f('0x40')](_0x1d6f7a['model'],qs[_0x4d9f('0x42')](_0x3ce31f[_0x4d9f('0x3e')][_0x4d9f('0x42')]));_0x961794['attributes']=_0x961794[_0x4d9f('0x41')][_0x4d9f('0x53')]?_0x961794['attributes']:_0x1d6f7a[_0x4d9f('0x3d')];if(_0x3ce31f[_0x4d9f('0x3e')][_0x4d9f('0x4c')]){_0x961794[_0x4d9f('0x4d')]=[{'all':!![]}];}_0x961794=_[_0x4d9f('0x49')]({},_0x961794,_0x3ce31f[_0x4d9f('0x4a')]);return db[_0x4d9f('0x38')][_0x4d9f('0x54')](_0x961794)[_0x4d9f('0x4b')](handleEntityNotFound(_0x5ef12e,null))[_0x4d9f('0x4b')](respondWithResult(_0x5ef12e,null))['catch'](handleError(_0x5ef12e,null));};exports['create']=function(_0xf1408f,_0x19f4ee){return db['SmsQueue'][_0x4d9f('0x55')](_0xf1408f[_0x4d9f('0x56')],{})[_0x4d9f('0x4b')](function(_0x246572){var _0x2493af=_0xf1408f[_0x4d9f('0x57')][_0x4d9f('0x30')]({'plain':!![]});if(!_0x2493af)throw new Error(_0x4d9f('0x58'));if(_0x2493af[_0x4d9f('0x59')]===_0x4d9f('0x57')){var _0x25e8c9=_0x246572[_0x4d9f('0x30')]({'plain':!![]});var _0x3a9c7b='SmsQueues';return db[_0x4d9f('0x5a')][_0x4d9f('0x54')]({'where':{'name':_0x3a9c7b,'userProfileId':_0x2493af[_0x4d9f('0x5b')]},'raw':!![]})[_0x4d9f('0x4b')](function(_0x156ddc){if(_0x156ddc&&_0x156ddc[_0x4d9f('0x5c')]===0x0){return db['UserProfileResource'][_0x4d9f('0x55')]({'name':_0x25e8c9[_0x4d9f('0x35')],'resourceId':_0x25e8c9['id'],'type':_0x156ddc['name'],'sectionId':_0x156ddc['id']},{})[_0x4d9f('0x4b')](function(){return _0x246572;});}else{return _0x246572;}})[_0x4d9f('0x5d')](function(_0x2597e6){logger[_0x4d9f('0x33')](_0x4d9f('0x5e'),_0x2597e6);throw _0x2597e6;});}return _0x246572;})[_0x4d9f('0x4b')](respondWithResult(_0x19f4ee,0xc9))[_0x4d9f('0x5d')](handleError(_0x19f4ee,null));};exports[_0x4d9f('0x2e')]=function(_0x5f30b7,_0x7f01a6){if(_0x5f30b7[_0x4d9f('0x56')]['id']){delete _0x5f30b7[_0x4d9f('0x56')]['id'];}return db[_0x4d9f('0x38')][_0x4d9f('0x54')]({'where':{'id':_0x5f30b7['params']['id']}})['then'](handleEntityNotFound(_0x7f01a6,null))[_0x4d9f('0x4b')](saveUpdates(_0x5f30b7[_0x4d9f('0x56')],null))[_0x4d9f('0x4b')](respondWithResult(_0x7f01a6,null))[_0x4d9f('0x5d')](handleError(_0x7f01a6,null));};exports[_0x4d9f('0x2f')]=function(_0x59ec2a,_0x13c80e){return db[_0x4d9f('0x38')][_0x4d9f('0x54')]({'where':{'id':_0x59ec2a[_0x4d9f('0x51')]['id']}})[_0x4d9f('0x4b')](handleEntityNotFound(_0x13c80e,null))[_0x4d9f('0x4b')](removeEntity(_0x13c80e,null))[_0x4d9f('0x5d')](handleError(_0x13c80e,null));};exports['describe']=function(_0x3f9878,_0x1b4c95){return db[_0x4d9f('0x38')][_0x4d9f('0x5f')]()[_0x4d9f('0x4b')](respondWithResult(_0x1b4c95,null))[_0x4d9f('0x5d')](handleError(_0x1b4c95,null));};exports['getMembers']=function(_0x370f4a,_0x5293c7,_0x3cc089){var _0x47d106={'raw':!![],'where':{}},_0x48f679={},_0x556beb;return db[_0x4d9f('0x38')][_0x4d9f('0x60')]({'where':{'id':_0x370f4a[_0x4d9f('0x51')]['id']}})['then'](handleEntityNotFound(_0x5293c7,null))['then'](function(_0x5ccc56){if(_0x5ccc56){_0x556beb=_0x5ccc56['get']({'plain':!![]});_0x48f679[_0x4d9f('0x3d')]=_[_0x4d9f('0x52')](db[_0x4d9f('0x61')]['rawAttributes']);_0x48f679['query']=_[_0x4d9f('0x52')](_0x370f4a[_0x4d9f('0x3e')]);_0x48f679[_0x4d9f('0x3f')]=_['intersection'](_0x48f679[_0x4d9f('0x3d')],_0x48f679['query']);_0x47d106[_0x4d9f('0x41')]=_['intersection'](_0x48f679[_0x4d9f('0x3d')],qs[_0x4d9f('0x42')](_0x370f4a[_0x4d9f('0x3e')][_0x4d9f('0x42')]));_0x47d106[_0x4d9f('0x41')]=_0x47d106[_0x4d9f('0x41')][_0x4d9f('0x53')]?_0x47d106[_0x4d9f('0x41')]:_0x48f679[_0x4d9f('0x3d')];if(!_0x370f4a[_0x4d9f('0x3e')]['hasOwnProperty']('nolimit')){_0x47d106[_0x4d9f('0x27')]=qs[_0x4d9f('0x27')](_0x370f4a[_0x4d9f('0x3e')][_0x4d9f('0x27')]);_0x47d106[_0x4d9f('0x25')]=qs[_0x4d9f('0x25')](_0x370f4a[_0x4d9f('0x3e')][_0x4d9f('0x25')]);}_0x47d106[_0x4d9f('0x62')]=qs[_0x4d9f('0x45')](_0x370f4a['query']['sort']);_0x47d106['where']=qs[_0x4d9f('0x3f')](_['pick'](_0x370f4a['query'],_0x48f679['filters']));_0x47d106[_0x4d9f('0x46')][_0x4d9f('0x63')]=_0x5ccc56['id'];if(_0x370f4a[_0x4d9f('0x3e')][_0x4d9f('0x48')]){_0x47d106['where']=_[_0x4d9f('0x49')](_0x47d106['where'],{'$or':_[_0x4d9f('0x37')](_0x47d106[_0x4d9f('0x41')],function(_0x336a42){var _0x7d0a7d={};_0x7d0a7d[_0x336a42]={'$like':'%'+_0x370f4a['query'][_0x4d9f('0x48')]+'%'};return _0x7d0a7d;})});}_0x47d106=_[_0x4d9f('0x49')]({},_0x47d106,_0x370f4a[_0x4d9f('0x4a')]);return db[_0x4d9f('0x61')]['findAll'](_0x47d106);}})[_0x4d9f('0x4b')](function(_0x38bb9c){if(_0x38bb9c){return db[_0x4d9f('0x64')][_0x4d9f('0x65')]({'where':{'id':_[_0x4d9f('0x37')](_0x38bb9c,_0x4d9f('0x66')),'role':_0x4d9f('0x67')},'attributes':['id',_0x4d9f('0x35'),'smsPause','updatedAt',_0x4d9f('0x68')]});}})[_0x4d9f('0x4b')](function(_0xf8d34c){if(_0xf8d34c){return{'count':_0xf8d34c[_0x4d9f('0x28')],'rows':_[_0x4d9f('0x37')](_0xf8d34c['rows'],function(_0x22b4c7){return{'membername':_0x22b4c7[_0x4d9f('0x35')],'UserId':_0x22b4c7['id'],'queue_name':_0x556beb['name'],'SmsQueueId':_0x556beb['id'],'interface':util[_0x4d9f('0x69')](_0x4d9f('0x6a'),_0x4d9f('0x6b'),_0x22b4c7['name']),'penalty':0x0,'paused':_0x22b4c7[_0x4d9f('0x6c')],'createdAt':_0x22b4c7[_0x4d9f('0x68')],'updatedAt':_0x22b4c7[_0x4d9f('0x6d')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x4d9f('0x4b')](respondWithFilteredResult(_0x5293c7,_0x47d106))['catch'](handleError(_0x5293c7,null));};exports['getTeams']=function(_0x2ab8af,_0xedf84d,_0x24b38b){var _0x275248={};var _0x52209a={};var _0x282e60;var _0x3f8708;return db[_0x4d9f('0x38')]['findOne']({'where':{'id':_0x2ab8af[_0x4d9f('0x51')]['id']}})[_0x4d9f('0x4b')](handleEntityNotFound(_0xedf84d,null))['then'](function(_0x4c4930){if(_0x4c4930){_0x282e60=_0x4c4930;_0x52209a[_0x4d9f('0x3d')]=_[_0x4d9f('0x52')](db[_0x4d9f('0x6e')][_0x4d9f('0x39')]);_0x52209a[_0x4d9f('0x3e')]=_[_0x4d9f('0x52')](_0x2ab8af[_0x4d9f('0x3e')]);_0x52209a[_0x4d9f('0x3f')]=_[_0x4d9f('0x40')](_0x52209a[_0x4d9f('0x3d')],_0x52209a['query']);_0x275248[_0x4d9f('0x41')]=_['intersection'](_0x52209a[_0x4d9f('0x3d')],qs[_0x4d9f('0x42')](_0x2ab8af['query'][_0x4d9f('0x42')]));_0x275248[_0x4d9f('0x41')]=_0x275248[_0x4d9f('0x41')][_0x4d9f('0x53')]?_0x275248[_0x4d9f('0x41')]:_0x52209a['model'];_0x275248[_0x4d9f('0x62')]=qs['sort'](_0x2ab8af['query'][_0x4d9f('0x45')]);_0x275248[_0x4d9f('0x46')]=qs['filters'](_[_0x4d9f('0x6f')](_0x2ab8af[_0x4d9f('0x3e')],_0x52209a[_0x4d9f('0x3f')]));if(_0x2ab8af[_0x4d9f('0x3e')][_0x4d9f('0x48')]){_0x275248[_0x4d9f('0x46')]=_[_0x4d9f('0x49')](_0x275248[_0x4d9f('0x46')],{'$or':_[_0x4d9f('0x37')](_0x275248['attributes'],function(_0x4208ca){var _0x18750e={};_0x18750e[_0x4208ca]={'$like':'%'+_0x2ab8af[_0x4d9f('0x3e')][_0x4d9f('0x48')]+'%'};return _0x18750e;})});}_0x275248=_[_0x4d9f('0x49')]({},_0x275248,_0x2ab8af[_0x4d9f('0x4a')]);return _0x282e60['getTeams'](_0x275248);}})[_0x4d9f('0x4b')](function(_0x196938){if(_0x196938){_0x3f8708=_0x196938[_0x4d9f('0x53')];if(!_0x2ab8af[_0x4d9f('0x3e')][_0x4d9f('0x43')](_0x4d9f('0x44'))){_0x275248[_0x4d9f('0x27')]=qs[_0x4d9f('0x27')](_0x2ab8af[_0x4d9f('0x3e')]['limit']);_0x275248[_0x4d9f('0x25')]=qs[_0x4d9f('0x25')](_0x2ab8af['query']['offset']);}return _0x282e60[_0x4d9f('0x70')](_0x275248);}})['then'](function(_0x26cc81){if(_0x26cc81){return _0x26cc81?{'count':_0x3f8708,'rows':_0x26cc81}:null;}})[_0x4d9f('0x4b')](respondWithResult(_0xedf84d,null))[_0x4d9f('0x5d')](handleError(_0xedf84d,null));};exports[_0x4d9f('0x71')]=function(_0xe62ff6,_0x1f3399,_0x10d90c){var _0x33b5fb=_0xe62ff6[_0x4d9f('0x56')]['ids'];return db[_0x4d9f('0x6e')][_0x4d9f('0x4e')]({'where':{'id':_0x33b5fb},'attributes':['id'],'include':[{'model':db[_0x4d9f('0x64')],'as':'Agents','attributes':['id',_0x4d9f('0x35'),_0x4d9f('0x72'),_0x4d9f('0x73'),'interface'],'raw':!![]}]})['then'](function(_0x24645b){if(_0x24645b){var _0x13aa3b=_[_0x4d9f('0x74')](_0x24645b,function(_0x551376){var _0x478cc1=_0x551376['get']({'plain':!![]});return _0x478cc1[_0x4d9f('0x75')];});return db[_0x4d9f('0x38')][_0x4d9f('0x54')]({'where':{'id':_0xe62ff6[_0x4d9f('0x51')]['id']}})[_0x4d9f('0x4b')](function(_0x461ead){return db['sequelize'][_0x4d9f('0x76')](function(_0x5b271f){return _0x461ead['addTeams'](_0x33b5fb,{'transaction':_0x5b271f})['then'](function(){return BPromise[_0x4d9f('0x77')](_0x13aa3b,function(_0x41d387){return db[_0x4d9f('0x61')][_0x4d9f('0x78')]({'where':{'UserId':_0x41d387['id'],'SmsQueueId':_0xe62ff6[_0x4d9f('0x51')]['id']},'transaction':_0x5b271f});});})['then'](function(){_0x13aa3b[_0x4d9f('0x79')](function(_0x27a6ee){socket[_0x4d9f('0x7a')]('userSmsQueue:save',{'UserId':_0x27a6ee['id'],'SmsQueueId':_0x461ead['id']});});});});});}})['then'](respondWithStatusCode(_0x1f3399,null))[_0x4d9f('0x5d')](handleError(_0x1f3399,null));};exports[_0x4d9f('0x7b')]=function(_0x59ef1d,_0x33c07b,_0x137feb){return db[_0x4d9f('0x6e')][_0x4d9f('0x4e')]({'where':{'id':_0x59ef1d[_0x4d9f('0x3e')]['ids']},'attributes':['id'],'include':[{'model':db[_0x4d9f('0x64')],'as':_0x4d9f('0x75'),'attributes':['id'],'raw':!![]}]})[_0x4d9f('0x4b')](handleEntityNotFound(_0x33c07b,null))[_0x4d9f('0x4b')](function(_0x274fa1){var _0x90aaaf=_[_0x4d9f('0x37')](_0x274fa1,'id');var _0x33b68e=[];var _0x343c28=[];var _0x50777d=squel[_0x4d9f('0x7c')]();_0x50777d['field']('tq.TeamId')[_0x4d9f('0x7d')]('team_has_sms_queues','tq')[_0x4d9f('0x7e')](_0x4d9f('0x7f'),'ut',_0x4d9f('0x80'))[_0x4d9f('0x46')](_0x4d9f('0x81'),_0x59ef1d[_0x4d9f('0x51')]['id']);for(var _0x1a6e28=0x0;_0x1a6e28<_0x274fa1[_0x4d9f('0x53')];_0x1a6e28+=0x1){let _0x1e8550=_0x274fa1[_0x1a6e28];for(var _0x48eac0=0x0;_0x48eac0<_0x1e8550['Agents'][_0x4d9f('0x53')];_0x48eac0+=0x1){let _0x27a20d=_0x1e8550[_0x4d9f('0x75')][_0x48eac0];var _0x41fb44=_0x50777d['clone']();_0x41fb44['where'](_0x4d9f('0x82'),_0x27a20d['id']);_0x343c28['push'](db[_0x4d9f('0x83')][_0x4d9f('0x3e')](_0x41fb44[_0x4d9f('0x84')](),{'type':db[_0x4d9f('0x83')][_0x4d9f('0x85')][_0x4d9f('0x86')]})['then'](function(_0x803d3){if(_0x803d3[_0x4d9f('0x53')]===0x1){return _0x27a20d['id'];}else{var _0x4ed81b=_[_0x4d9f('0x87')](_[_0x4d9f('0x37')](_0x803d3,_0x4d9f('0x88')),function(_0x14e0d3){return _['includes'](_0x90aaaf,_0x14e0d3);});if(_0x4ed81b){return _0x27a20d['id'];}}}));}}return BPromise[_0x4d9f('0x89')](_0x343c28)['then'](function(_0x5411e9){_0x33b68e=_(_0x33b68e)[_0x4d9f('0x8a')](_0x5411e9)['compact']()[_0x4d9f('0x8b')]();return db[_0x4d9f('0x38')][_0x4d9f('0x54')]({'where':{'id':_0x59ef1d[_0x4d9f('0x51')]['id']}})['then'](function(_0xbfc387){return db[_0x4d9f('0x83')][_0x4d9f('0x76')](function(_0x11ec17){return _0xbfc387[_0x4d9f('0x7b')](_0x59ef1d[_0x4d9f('0x3e')][_0x4d9f('0x8c')],{'transaction':_0x11ec17})[_0x4d9f('0x4b')](function(){if(!_[_0x4d9f('0x8d')](_0x33b68e)){return _0xbfc387[_0x4d9f('0x8e')](_0x33b68e,{'transaction':_0x11ec17});}})[_0x4d9f('0x4b')](function(){_0x33b68e[_0x4d9f('0x79')](function(_0x6017b9){socket[_0x4d9f('0x7a')](_0x4d9f('0x8f'),{'UserId':_0x6017b9,'SmsQueueId':_0xbfc387['id']});});});});});});})[_0x4d9f('0x4b')](respondWithStatusCode(_0x33c07b,null))[_0x4d9f('0x5d')](handleError(_0x33c07b,null));};exports['addAgents']=function(_0x8f80aa,_0x51df6f,_0x357560){return db[_0x4d9f('0x38')][_0x4d9f('0x54')]({'where':{'id':_0x8f80aa['params']['id']}})[_0x4d9f('0x4b')](handleEntityNotFound(_0x51df6f,null))[_0x4d9f('0x4b')](function(_0x431218){if(_0x431218){return _0x431218[_0x4d9f('0x90')](_0x8f80aa[_0x4d9f('0x56')]['ids'],_[_0x4d9f('0x91')](_0x8f80aa[_0x4d9f('0x56')],[_0x4d9f('0x8c'),'id'])||{})[_0x4d9f('0x92')](function(_0x408673){for(var _0x5ee08f=0x0;_0x5ee08f<_0x8f80aa['body'][_0x4d9f('0x8c')][_0x4d9f('0x53')];_0x5ee08f+=0x1){socket[_0x4d9f('0x7a')](_0x4d9f('0x93'),{'UserId':Number(_0x8f80aa[_0x4d9f('0x56')]['ids'][_0x5ee08f]),'SmsQueueId':Number(_0x8f80aa[_0x4d9f('0x51')]['id'])});}return _0x408673;});}})[_0x4d9f('0x4b')](respondWithResult(_0x51df6f,null))[_0x4d9f('0x5d')](handleError(_0x51df6f,null));};exports[_0x4d9f('0x8e')]=function(_0x49c87d,_0xcdb171,_0x59bd6d){return db[_0x4d9f('0x38')]['find']({'where':{'id':_0x49c87d[_0x4d9f('0x51')]['id']}})[_0x4d9f('0x4b')](handleEntityNotFound(_0xcdb171,null))['then'](function(_0x25cd3a){if(_0x25cd3a){return _0x25cd3a[_0x4d9f('0x8e')](_0x49c87d[_0x4d9f('0x3e')][_0x4d9f('0x8c')])[_0x4d9f('0x4b')](function(){if(_[_0x4d9f('0x94')](_0x49c87d['query'][_0x4d9f('0x8c')])){for(var _0x4c3f5a=0x0;_0x4c3f5a<_0x49c87d[_0x4d9f('0x3e')]['ids'][_0x4d9f('0x53')];_0x4c3f5a+=0x1){socket[_0x4d9f('0x7a')](_0x4d9f('0x8f'),{'UserId':Number(_0x49c87d[_0x4d9f('0x3e')][_0x4d9f('0x8c')][_0x4c3f5a]),'SmsQueueId':Number(_0x49c87d[_0x4d9f('0x51')]['id'])});}}else{socket[_0x4d9f('0x7a')](_0x4d9f('0x8f'),{'UserId':Number(_0x49c87d[_0x4d9f('0x3e')][_0x4d9f('0x8c')]),'SmsQueueId':Number(_0x49c87d['params']['id'])});}});}})[_0x4d9f('0x4b')](respondWithStatusCode(_0xcdb171,null))[_0x4d9f('0x5d')](handleError(_0xcdb171,null));};exports[_0x4d9f('0x95')]=function(_0x4262e,_0x10e822,_0x273e99){var _0x12d031={};var _0x474401={};var _0x393bcc;var _0x21ac7a;return db[_0x4d9f('0x38')][_0x4d9f('0x60')]({'where':{'id':_0x4262e[_0x4d9f('0x51')]['id']}})[_0x4d9f('0x4b')](handleEntityNotFound(_0x10e822,null))[_0x4d9f('0x4b')](function(_0x5cbfcd){if(_0x5cbfcd){_0x393bcc=_0x5cbfcd;_0x474401[_0x4d9f('0x3d')]=_[_0x4d9f('0x52')](db['User'][_0x4d9f('0x39')]);_0x474401[_0x4d9f('0x3e')]=_['keys'](_0x4262e[_0x4d9f('0x3e')]);_0x474401[_0x4d9f('0x3f')]=_[_0x4d9f('0x40')](_0x474401[_0x4d9f('0x3d')],_0x474401[_0x4d9f('0x3e')]);_0x12d031[_0x4d9f('0x41')]=_['intersection'](_0x474401[_0x4d9f('0x3d')],qs['fields'](_0x4262e[_0x4d9f('0x3e')][_0x4d9f('0x42')]));_0x12d031['attributes']=_0x12d031[_0x4d9f('0x41')]['length']?_0x12d031[_0x4d9f('0x41')]:_0x474401[_0x4d9f('0x3d')];_0x12d031['order']=qs[_0x4d9f('0x45')](_0x4262e['query'][_0x4d9f('0x45')]);_0x12d031[_0x4d9f('0x46')]=qs['filters'](_[_0x4d9f('0x6f')](_0x4262e[_0x4d9f('0x3e')],_0x474401[_0x4d9f('0x3f')]));if(_0x4262e[_0x4d9f('0x3e')][_0x4d9f('0x48')]){_0x12d031[_0x4d9f('0x46')]=_[_0x4d9f('0x49')](_0x12d031[_0x4d9f('0x46')],{'$or':_[_0x4d9f('0x37')](_0x12d031[_0x4d9f('0x41')],function(_0x3f2180){var _0x44370d={};_0x44370d[_0x3f2180]={'$like':'%'+_0x4262e[_0x4d9f('0x3e')]['filter']+'%'};return _0x44370d;})});}_0x12d031=_['merge']({},_0x12d031,_0x4262e[_0x4d9f('0x4a')]);return _0x393bcc[_0x4d9f('0x95')](_0x12d031);}})[_0x4d9f('0x4b')](function(_0x34fa75){if(_0x34fa75){_0x21ac7a=_0x34fa75[_0x4d9f('0x53')];if(!_0x4262e[_0x4d9f('0x3e')][_0x4d9f('0x43')]('nolimit')){_0x12d031[_0x4d9f('0x27')]=qs['limit'](_0x4262e[_0x4d9f('0x3e')]['limit']);_0x12d031['offset']=qs[_0x4d9f('0x25')](_0x4262e['query']['offset']);}return _0x393bcc[_0x4d9f('0x95')](_0x12d031);}})[_0x4d9f('0x4b')](function(_0x4cec42){if(_0x4cec42){return _0x4cec42?{'count':_0x21ac7a,'rows':_0x4cec42}:null;}})['then'](respondWithResult(_0x10e822,null))[_0x4d9f('0x5d')](handleError(_0x10e822,null));};
\ No newline at end of file
index 81eef8b..b9429ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7e8=['exports','SmsQueue','setMaxListeners','save','update','remove','emit'];(function(_0x57d745,_0x35fc6f){var _0x3842df=function(_0x38c0e7){while(--_0x38c0e7){_0x57d745['push'](_0x57d745['shift']());}};_0x3842df(++_0x35fc6f);}(_0xc7e8,0x78));var _0x8c7e=function(_0x2070da,_0x45e586){_0x2070da=_0x2070da-0x0;var _0x4f9fe1=_0xc7e8[_0x2070da];return _0x4f9fe1;};'use strict';var EventEmitter=require('events');var SmsQueue=require('../../mysqldb')['db'][_0x8c7e('0x0')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x8c7e('0x1')](0x0);var events={'afterCreate':_0x8c7e('0x2'),'afterUpdate':_0x8c7e('0x3'),'afterDestroy':_0x8c7e('0x4')};function emitEvent(_0x13d809){return function(_0x2716a6,_0x32645d,_0x272476){SmsQueueEvents[_0x8c7e('0x5')](_0x13d809+':'+_0x2716a6['id'],_0x2716a6);SmsQueueEvents[_0x8c7e('0x5')](_0x13d809,_0x2716a6);_0x272476(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsQueue['hook'](e,emitEvent(event));}}module[_0x8c7e('0x6')]=SmsQueueEvents;
\ No newline at end of file
+var _0xe6dd=['save','update','remove','emit','exports','events','SmsQueue','setMaxListeners'];(function(_0x341ba0,_0x2831d9){var _0x12f7fe=function(_0x2fa8b7){while(--_0x2fa8b7){_0x341ba0['push'](_0x341ba0['shift']());}};_0x12f7fe(++_0x2831d9);}(_0xe6dd,0xed));var _0xde6d=function(_0x160d65,_0x3c1fdc){_0x160d65=_0x160d65-0x0;var _0x35d585=_0xe6dd[_0x160d65];return _0x35d585;};'use strict';var EventEmitter=require(_0xde6d('0x0'));var SmsQueue=require('../../mysqldb')['db'][_0xde6d('0x1')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0xde6d('0x2')](0x0);var events={'afterCreate':_0xde6d('0x3'),'afterUpdate':_0xde6d('0x4'),'afterDestroy':_0xde6d('0x5')};function emitEvent(_0x12c894){return function(_0x12e9b6,_0x2a8879,_0x47880c){SmsQueueEvents['emit'](_0x12c894+':'+_0x12e9b6['id'],_0x12e9b6);SmsQueueEvents[_0xde6d('0x6')](_0x12c894,_0x12e9b6);_0x47880c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsQueue['hook'](e,emitEvent(event));}}module[_0xde6d('0x7')]=SmsQueueEvents;
\ No newline at end of file
index 1621807..6a8d1c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5aef=['../../config/environment','./smsQueue.attributes','exports','define','SmsQueue','sms_queues','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0xf54b8e,_0x10e225){var _0x58c551=function(_0x192e32){while(--_0x192e32){_0xf54b8e['push'](_0xf54b8e['shift']());}};_0x58c551(++_0x10e225);}(_0x5aef,0x19c));var _0xf5ae=function(_0x1757f2,_0x1b09fa){_0x1757f2=_0x1757f2-0x0;var _0x5e7212=_0x5aef[_0x1757f2];return _0x5e7212;};'use strict';var _=require(_0xf5ae('0x0'));var util=require('util');var logger=require(_0xf5ae('0x1'))(_0xf5ae('0x2'));var moment=require(_0xf5ae('0x3'));var BPromise=require(_0xf5ae('0x4'));var rp=require(_0xf5ae('0x5'));var fs=require('fs');var path=require(_0xf5ae('0x6'));var rimraf=require(_0xf5ae('0x7'));var config=require(_0xf5ae('0x8'));var attributes=require(_0xf5ae('0x9'));module[_0xf5ae('0xa')]=function(_0x20ee0d,_0xf982cc){return _0x20ee0d[_0xf5ae('0xb')](_0xf5ae('0xc'),attributes,{'tableName':_0xf5ae('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbf4a=['../../config/environment','./smsQueue.attributes','exports','define','sms_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x156b0e,_0x59fb02){var _0x4c353e=function(_0xe799cd){while(--_0xe799cd){_0x156b0e['push'](_0x156b0e['shift']());}};_0x4c353e(++_0x59fb02);}(_0xbf4a,0x157));var _0xabf4=function(_0x13c0c8,_0x13a2cb){_0x13c0c8=_0x13c0c8-0x0;var _0x43956e=_0xbf4a[_0x13c0c8];return _0x43956e;};'use strict';var _=require(_0xabf4('0x0'));var util=require(_0xabf4('0x1'));var logger=require(_0xabf4('0x2'))(_0xabf4('0x3'));var moment=require(_0xabf4('0x4'));var BPromise=require(_0xabf4('0x5'));var rp=require(_0xabf4('0x6'));var fs=require('fs');var path=require(_0xabf4('0x7'));var rimraf=require('rimraf');var config=require(_0xabf4('0x8'));var attributes=require(_0xabf4('0x9'));module[_0xabf4('0xa')]=function(_0x18fd67,_0x5e7975){return _0x18fd67[_0xabf4('0xb')]('SmsQueue',attributes,{'tableName':_0xabf4('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d86c33b..ae5f88a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfaaa=['jayson/promise','client','redis','localhost','socket.io-emitter','request','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','findAll','options','where','attributes','limit','include','map','model','GetSmsQueue','ShowSmsQueue','SmsQueue','raw','then','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xfaaa,0x15e));var _0xafaa=function(_0x5aaa8b,_0x1ad8c0){_0x5aaa8b=_0x5aaa8b-0x0;var _0x53179b=_0xfaaa[_0x5aaa8b];return _0x53179b;};'use strict';var _=require(_0xafaa('0x0'));var util=require('util');var moment=require(_0xafaa('0x1'));var BPromise=require(_0xafaa('0x2'));var rs=require(_0xafaa('0x3'));var fs=require('fs');var Redis=require(_0xafaa('0x4'));var db=require(_0xafaa('0x5'))['db'];var utils=require(_0xafaa('0x6'));var logger=require(_0xafaa('0x7'))(_0xafaa('0x8'));var config=require(_0xafaa('0x9'));var jayson=require(_0xafaa('0xa'));var client=jayson[_0xafaa('0xb')]['http']({'port':0x232a});config[_0xafaa('0xc')]=_['defaults'](config[_0xafaa('0xc')],{'host':_0xafaa('0xd'),'port':0x18eb});var socket=require(_0xafaa('0xe'))(new Redis(config[_0xafaa('0xc')]));require('./smsQueue.socket')['register'](socket);function respondWithRpcPromise(_0x22e6b7,_0x1db353,_0x11db8e){return new BPromise(function(_0x34ba63,_0x4adf7d){return client[_0xafaa('0xf')](_0x22e6b7,_0x11db8e)['then'](function(_0x41f1d6){logger[_0xafaa('0x10')](_0xafaa('0x11'),_0x1db353,_0xafaa('0x12'));logger[_0xafaa('0x13')](_0xafaa('0x14'),_0x1db353,'request\x20sent',JSON[_0xafaa('0x15')](_0x41f1d6));if(_0x41f1d6[_0xafaa('0x16')]){if(_0x41f1d6[_0xafaa('0x16')][_0xafaa('0x17')]===0x1f4){logger['error'](_0xafaa('0x11'),_0x1db353,_0x41f1d6[_0xafaa('0x16')][_0xafaa('0x18')]);return _0x4adf7d(_0x41f1d6[_0xafaa('0x16')][_0xafaa('0x18')]);}logger['error'](_0xafaa('0x11'),_0x1db353,_0x41f1d6[_0xafaa('0x16')][_0xafaa('0x18')]);return _0x34ba63(_0x41f1d6[_0xafaa('0x16')]['message']);}else{logger[_0xafaa('0x10')]('SmsQueue,\x20%s,\x20%s',_0x1db353,_0xafaa('0x12'));_0x34ba63(_0x41f1d6[_0xafaa('0x19')][_0xafaa('0x18')]);}})[_0xafaa('0x1a')](function(_0x43023b){logger['error']('SmsQueue,\x20%s,\x20%s',_0x1db353,_0x43023b);_0x4adf7d(_0x43023b);});});}exports['GetSmsQueue']=function(_0x201a5d){var _0x344f33=this;return new Promise(function(_0x395b41,_0x50a728){return db['SmsQueue'][_0xafaa('0x1b')]({'raw':_0x201a5d['options']?_0x201a5d[_0xafaa('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x201a5d[_0xafaa('0x1c')]?_0x201a5d[_0xafaa('0x1c')][_0xafaa('0x1d')]||null:null,'attributes':_0x201a5d[_0xafaa('0x1c')]?_0x201a5d[_0xafaa('0x1c')][_0xafaa('0x1e')]||null:null,'limit':_0x201a5d[_0xafaa('0x1c')]?_0x201a5d['options'][_0xafaa('0x1f')]||null:null,'include':_0x201a5d[_0xafaa('0x1c')]?_0x201a5d[_0xafaa('0x1c')][_0xafaa('0x20')]?_[_0xafaa('0x21')](_0x201a5d['options'][_0xafaa('0x20')],function(_0x534cef){return{'model':db[_0x534cef[_0xafaa('0x22')]],'as':_0x534cef['as'],'attributes':_0x534cef['attributes'],'include':_0x534cef[_0xafaa('0x20')]?_[_0xafaa('0x21')](_0x534cef['include'],function(_0xddf3d2){return{'model':db[_0xddf3d2[_0xafaa('0x22')]],'as':_0xddf3d2['as'],'attributes':_0xddf3d2['attributes'],'include':_0xddf3d2[_0xafaa('0x20')]?_[_0xafaa('0x21')](_0xddf3d2[_0xafaa('0x20')],function(_0x142580){return{'model':db[_0x142580[_0xafaa('0x22')]],'as':_0x142580['as'],'attributes':_0x142580[_0xafaa('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x20da8a){logger[_0xafaa('0x10')](_0xafaa('0x23'),_0x201a5d);logger['debug'](_0xafaa('0x23'),_0x201a5d,JSON['stringify'](_0x20da8a));_0x395b41(_0x20da8a);})[_0xafaa('0x1a')](function(_0x19a916){logger[_0xafaa('0x16')]('GetSmsQueue',_0x19a916[_0xafaa('0x18')],_0x201a5d);_0x50a728(_0x344f33[_0xafaa('0x16')](0x1f4,_0x19a916[_0xafaa('0x18')]));});});};exports[_0xafaa('0x24')]=function(_0x4bc774){var _0x190507=this;return new Promise(function(_0xc8b245,_0x4ac776){return db[_0xafaa('0x25')]['find']({'raw':_0x4bc774[_0xafaa('0x1c')]?_0x4bc774['options'][_0xafaa('0x26')]===undefined?!![]:![]:!![],'where':_0x4bc774[_0xafaa('0x1c')]?_0x4bc774[_0xafaa('0x1c')][_0xafaa('0x1d')]||null:null,'attributes':_0x4bc774[_0xafaa('0x1c')]?_0x4bc774[_0xafaa('0x1c')]['attributes']||null:null,'include':_0x4bc774[_0xafaa('0x1c')]?_0x4bc774['options'][_0xafaa('0x20')]?_[_0xafaa('0x21')](_0x4bc774['options'][_0xafaa('0x20')],function(_0x7dff71){return{'model':db[_0x7dff71[_0xafaa('0x22')]],'as':_0x7dff71['as'],'attributes':_0x7dff71['attributes'],'include':_0x7dff71[_0xafaa('0x20')]?_[_0xafaa('0x21')](_0x7dff71[_0xafaa('0x20')],function(_0x43f81e){return{'model':db[_0x43f81e[_0xafaa('0x22')]],'as':_0x43f81e['as'],'attributes':_0x43f81e['attributes'],'include':_0x43f81e[_0xafaa('0x20')]?_[_0xafaa('0x21')](_0x43f81e[_0xafaa('0x20')],function(_0x2c26f6){return{'model':db[_0x2c26f6['model']],'as':_0x2c26f6['as'],'attributes':_0x2c26f6[_0xafaa('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xafaa('0x27')](function(_0x580722){logger[_0xafaa('0x10')](_0xafaa('0x24'),_0x4bc774);logger[_0xafaa('0x13')](_0xafaa('0x24'),_0x4bc774,JSON[_0xafaa('0x15')](_0x580722));_0xc8b245(_0x580722);})[_0xafaa('0x1a')](function(_0x4e1bd7){logger['error'](_0xafaa('0x24'),_0x4e1bd7['message'],_0x4bc774);_0x4ac776(_0x190507['error'](0x1f4,_0x4e1bd7['message']));});});};
\ No newline at end of file
+var _0xa4f0=['./smsQueue.socket','then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','GetSmsQueue','SmsQueue','findAll','options','where','attributes','include','map','model','ShowSmsQueue','find','raw','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','redis','localhost','socket.io-emitter'];(function(_0x155ce5,_0x240cf2){var _0x46f255=function(_0x4ba11d){while(--_0x4ba11d){_0x155ce5['push'](_0x155ce5['shift']());}};_0x46f255(++_0x240cf2);}(_0xa4f0,0x1b9));var _0x0a4f=function(_0x41e226,_0x5b6d61){_0x41e226=_0x41e226-0x0;var _0x87089d=_0xa4f0[_0x41e226];return _0x87089d;};'use strict';var _=require(_0x0a4f('0x0'));var util=require(_0x0a4f('0x1'));var moment=require(_0x0a4f('0x2'));var BPromise=require(_0x0a4f('0x3'));var rs=require(_0x0a4f('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x0a4f('0x5'));var logger=require(_0x0a4f('0x6'))(_0x0a4f('0x7'));var config=require(_0x0a4f('0x8'));var jayson=require(_0x0a4f('0x9'));var client=jayson[_0x0a4f('0xa')]['http']({'port':0x232a});config['redis']=_[_0x0a4f('0xb')](config[_0x0a4f('0xc')],{'host':_0x0a4f('0xd'),'port':0x18eb});var socket=require(_0x0a4f('0xe'))(new Redis(config['redis']));require(_0x0a4f('0xf'))['register'](socket);function respondWithRpcPromise(_0x44aca7,_0xd0b51,_0x9804b0){return new BPromise(function(_0x389b0f,_0x321394){return client['request'](_0x44aca7,_0x9804b0)[_0x0a4f('0x10')](function(_0x19d040){logger[_0x0a4f('0x11')](_0x0a4f('0x12'),_0xd0b51,_0x0a4f('0x13'));logger[_0x0a4f('0x14')]('SmsQueue,\x20%s,\x20%s,\x20%s',_0xd0b51,_0x0a4f('0x13'),JSON[_0x0a4f('0x15')](_0x19d040));if(_0x19d040[_0x0a4f('0x16')]){if(_0x19d040['error'][_0x0a4f('0x17')]===0x1f4){logger[_0x0a4f('0x16')]('SmsQueue,\x20%s,\x20%s',_0xd0b51,_0x19d040[_0x0a4f('0x16')][_0x0a4f('0x18')]);return _0x321394(_0x19d040[_0x0a4f('0x16')][_0x0a4f('0x18')]);}logger[_0x0a4f('0x16')]('SmsQueue,\x20%s,\x20%s',_0xd0b51,_0x19d040[_0x0a4f('0x16')]['message']);return _0x389b0f(_0x19d040[_0x0a4f('0x16')]['message']);}else{logger[_0x0a4f('0x11')](_0x0a4f('0x12'),_0xd0b51,_0x0a4f('0x13'));_0x389b0f(_0x19d040['result'][_0x0a4f('0x18')]);}})[_0x0a4f('0x19')](function(_0x3c5405){logger[_0x0a4f('0x16')](_0x0a4f('0x12'),_0xd0b51,_0x3c5405);_0x321394(_0x3c5405);});});}exports[_0x0a4f('0x1a')]=function(_0x2227ac){var _0x7120fe=this;return new Promise(function(_0x3cebfd,_0x16adb4){return db[_0x0a4f('0x1b')][_0x0a4f('0x1c')]({'raw':_0x2227ac['options']?_0x2227ac[_0x0a4f('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x2227ac[_0x0a4f('0x1d')]?_0x2227ac['options'][_0x0a4f('0x1e')]||null:null,'attributes':_0x2227ac[_0x0a4f('0x1d')]?_0x2227ac[_0x0a4f('0x1d')][_0x0a4f('0x1f')]||null:null,'limit':_0x2227ac[_0x0a4f('0x1d')]?_0x2227ac['options']['limit']||null:null,'include':_0x2227ac[_0x0a4f('0x1d')]?_0x2227ac[_0x0a4f('0x1d')][_0x0a4f('0x20')]?_[_0x0a4f('0x21')](_0x2227ac[_0x0a4f('0x1d')]['include'],function(_0x395bff){return{'model':db[_0x395bff['model']],'as':_0x395bff['as'],'attributes':_0x395bff['attributes'],'include':_0x395bff[_0x0a4f('0x20')]?_[_0x0a4f('0x21')](_0x395bff[_0x0a4f('0x20')],function(_0xf40045){return{'model':db[_0xf40045[_0x0a4f('0x22')]],'as':_0xf40045['as'],'attributes':_0xf40045['attributes'],'include':_0xf40045[_0x0a4f('0x20')]?_[_0x0a4f('0x21')](_0xf40045[_0x0a4f('0x20')],function(_0x3ea513){return{'model':db[_0x3ea513['model']],'as':_0x3ea513['as'],'attributes':_0x3ea513['attributes']};}):[]};}):[]};}):[]:[]})[_0x0a4f('0x10')](function(_0x32af82){logger['info'](_0x0a4f('0x1a'),_0x2227ac);logger[_0x0a4f('0x14')]('GetSmsQueue',_0x2227ac,JSON[_0x0a4f('0x15')](_0x32af82));_0x3cebfd(_0x32af82);})[_0x0a4f('0x19')](function(_0x1aa5ad){logger['error'](_0x0a4f('0x1a'),_0x1aa5ad[_0x0a4f('0x18')],_0x2227ac);_0x16adb4(_0x7120fe[_0x0a4f('0x16')](0x1f4,_0x1aa5ad[_0x0a4f('0x18')]));});});};exports[_0x0a4f('0x23')]=function(_0x15150e){var _0x40c81a=this;return new Promise(function(_0x39dc17,_0x4acbe2){return db['SmsQueue'][_0x0a4f('0x24')]({'raw':_0x15150e[_0x0a4f('0x1d')]?_0x15150e['options'][_0x0a4f('0x25')]===undefined?!![]:![]:!![],'where':_0x15150e[_0x0a4f('0x1d')]?_0x15150e[_0x0a4f('0x1d')][_0x0a4f('0x1e')]||null:null,'attributes':_0x15150e[_0x0a4f('0x1d')]?_0x15150e['options'][_0x0a4f('0x1f')]||null:null,'include':_0x15150e[_0x0a4f('0x1d')]?_0x15150e[_0x0a4f('0x1d')]['include']?_['map'](_0x15150e[_0x0a4f('0x1d')]['include'],function(_0x3c10ae){return{'model':db[_0x3c10ae[_0x0a4f('0x22')]],'as':_0x3c10ae['as'],'attributes':_0x3c10ae[_0x0a4f('0x1f')],'include':_0x3c10ae[_0x0a4f('0x20')]?_[_0x0a4f('0x21')](_0x3c10ae[_0x0a4f('0x20')],function(_0x160f42){return{'model':db[_0x160f42['model']],'as':_0x160f42['as'],'attributes':_0x160f42[_0x0a4f('0x1f')],'include':_0x160f42[_0x0a4f('0x20')]?_[_0x0a4f('0x21')](_0x160f42[_0x0a4f('0x20')],function(_0x2c02e1){return{'model':db[_0x2c02e1[_0x0a4f('0x22')]],'as':_0x2c02e1['as'],'attributes':_0x2c02e1['attributes']};}):[]};}):[]};}):[]:[]})[_0x0a4f('0x10')](function(_0x904415){logger['info']('ShowSmsQueue',_0x15150e);logger[_0x0a4f('0x14')](_0x0a4f('0x23'),_0x15150e,JSON[_0x0a4f('0x15')](_0x904415));_0x39dc17(_0x904415);})[_0x0a4f('0x19')](function(_0x2ff295){logger[_0x0a4f('0x16')](_0x0a4f('0x23'),_0x2ff295['message'],_0x15150e);_0x4acbe2(_0x40c81a[_0x0a4f('0x16')](0x1f4,_0x2ff295[_0x0a4f('0x18')]));});});};
\ No newline at end of file
index b9990a8..2118153 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a5e=['update','emit','removeListener','length','smsQueue:','./smsQueue.events','save'];(function(_0x90dfad,_0x4d127a){var _0x8cdcc7=function(_0x34b6e1){while(--_0x34b6e1){_0x90dfad['push'](_0x90dfad['shift']());}};_0x8cdcc7(++_0x4d127a);}(_0x8a5e,0x15c));var _0xe8a5=function(_0x185e04,_0x2ae68e){_0x185e04=_0x185e04-0x0;var _0x39cd89=_0x8a5e[_0x185e04];return _0x39cd89;};'use strict';var SmsQueueEvents=require(_0xe8a5('0x0'));var events=[_0xe8a5('0x1'),'remove',_0xe8a5('0x2')];function createListener(_0xf6dec2,_0x3a8ac5){return function(_0x1ea914){_0x3a8ac5[_0xe8a5('0x3')](_0xf6dec2,_0x1ea914);};}function removeListener(_0x27f6b7,_0x118b48){return function(){SmsQueueEvents[_0xe8a5('0x4')](_0x27f6b7,_0x118b48);};}exports['register']=function(_0x39a87b){for(var _0x32acf5=0x0,_0x3dbaa2=events[_0xe8a5('0x5')];_0x32acf5<_0x3dbaa2;_0x32acf5++){var _0x30d149=events[_0x32acf5];var _0x2d34e5=createListener(_0xe8a5('0x6')+_0x30d149,_0x39a87b);SmsQueueEvents['on'](_0x30d149,_0x2d34e5);}};
\ No newline at end of file
+var _0xe972=['remove','update','removeListener','length','smsQueue:','./smsQueue.events'];(function(_0x19a173,_0x413f3a){var _0x197b3c=function(_0x188333){while(--_0x188333){_0x19a173['push'](_0x19a173['shift']());}};_0x197b3c(++_0x413f3a);}(_0xe972,0x125));var _0x2e97=function(_0x5b8881,_0x4932d6){_0x5b8881=_0x5b8881-0x0;var _0x50a07c=_0xe972[_0x5b8881];return _0x50a07c;};'use strict';var SmsQueueEvents=require(_0x2e97('0x0'));var events=['save',_0x2e97('0x1'),_0x2e97('0x2')];function createListener(_0x48a841,_0x52464e){return function(_0x1de887){_0x52464e['emit'](_0x48a841,_0x1de887);};}function removeListener(_0x31e07e,_0x2e258c){return function(){SmsQueueEvents[_0x2e97('0x3')](_0x31e07e,_0x2e258c);};}exports['register']=function(_0xecb2bb){for(var _0x14e2ca=0x0,_0x4876bd=events[_0x2e97('0x4')];_0x14e2ca<_0x4876bd;_0x14e2ca++){var _0xdde3a9=events[_0x14e2ca];var _0x35885e=createListener(_0x2e97('0x5')+_0xdde3a9,_0xecb2bb);SmsQueueEvents['on'](_0xdde3a9,_0x35885e);}};
\ No newline at end of file
index 6b03f00..e1df3d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9a6=['multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','create','put','update','delete','destroy','exports'];(function(_0x56daff,_0xadca9a){var _0x132c82=function(_0x19e0d7){while(--_0x19e0d7){_0x56daff['push'](_0x56daff['shift']());}};_0x132c82(++_0xadca9a);}(_0xe9a6,0x64));var _0x6e9a=function(_0x5a1b58,_0x40287f){_0x5a1b58=_0x5a1b58-0x0;var _0x1b5032=_0xe9a6[_0x5a1b58];return _0x1b5032;};'use strict';var multer=require(_0x6e9a('0x0'));var util=require('util');var path=require(_0x6e9a('0x1'));var timeout=require(_0x6e9a('0x2'));var express=require(_0x6e9a('0x3'));var router=express[_0x6e9a('0x4')]();var fs_extra=require(_0x6e9a('0x5'));var auth=require(_0x6e9a('0x6'));var interaction=require(_0x6e9a('0x7'));var config=require(_0x6e9a('0x8'));var controller=require('./smsQueueReport.controller');router['get']('/',auth[_0x6e9a('0x9')](),controller[_0x6e9a('0xa')]);router[_0x6e9a('0xb')]('/describe',auth[_0x6e9a('0x9')](),controller[_0x6e9a('0xc')]);router[_0x6e9a('0xb')](_0x6e9a('0xd'),auth[_0x6e9a('0x9')](),controller['show']);router['post']('/',auth[_0x6e9a('0x9')](),controller[_0x6e9a('0xe')]);router[_0x6e9a('0xf')](_0x6e9a('0xd'),auth[_0x6e9a('0x9')](),controller[_0x6e9a('0x10')]);router[_0x6e9a('0x11')](_0x6e9a('0xd'),auth[_0x6e9a('0x9')](),controller[_0x6e9a('0x12')]);module[_0x6e9a('0x13')]=router;
\ No newline at end of file
+var _0xe008=['./smsQueueReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','create','put','delete','destroy','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x392e68,_0x9f2bfb){var _0x4267df=function(_0x552bea){while(--_0x552bea){_0x392e68['push'](_0x392e68['shift']());}};_0x4267df(++_0x9f2bfb);}(_0xe008,0x14f));var _0x8e00=function(_0x7677c7,_0xefd24d){_0x7677c7=_0x7677c7-0x0;var _0x1d5e43=_0xe008[_0x7677c7];return _0x1d5e43;};'use strict';var multer=require('multer');var util=require(_0x8e00('0x0'));var path=require(_0x8e00('0x1'));var timeout=require(_0x8e00('0x2'));var express=require(_0x8e00('0x3'));var router=express[_0x8e00('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8e00('0x5'));var interaction=require(_0x8e00('0x6'));var config=require('../../config/environment');var controller=require(_0x8e00('0x7'));router[_0x8e00('0x8')]('/',auth['isAuthenticated'](),controller[_0x8e00('0x9')]);router[_0x8e00('0x8')](_0x8e00('0xa'),auth[_0x8e00('0xb')](),controller[_0x8e00('0xc')]);router['get'](_0x8e00('0xd'),auth[_0x8e00('0xb')](),controller[_0x8e00('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0x8e00('0xf')]);router[_0x8e00('0x10')]('/:id',auth[_0x8e00('0xb')](),controller['update']);router[_0x8e00('0x11')]('/:id',auth[_0x8e00('0xb')](),controller[_0x8e00('0x12')]);module['exports']=router;
\ No newline at end of file
index ff1eb5f..ddd6f83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d5f=['STRING','DATE','sequelize','exports'];(function(_0x43abc5,_0x252414){var _0x5bc6bd=function(_0x5c6f5f){while(--_0x5c6f5f){_0x43abc5['push'](_0x43abc5['shift']());}};_0x5bc6bd(++_0x252414);}(_0x1d5f,0x8a));var _0xf1d5=function(_0x18d631,_0x4376d2){_0x18d631=_0x18d631-0x0;var _0x50d708=_0x1d5f[_0x18d631];return _0x50d708;};'use strict';var moment=require('moment');var Sequelize=require(_0xf1d5('0x0'));module[_0xf1d5('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xf1d5('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xf1d5('0x3')]},'acceptAt':{'type':Sequelize[_0xf1d5('0x3')]},'exitAt':{'type':Sequelize[_0xf1d5('0x3')]},'reason':{'type':Sequelize[_0xf1d5('0x2')]}};
\ No newline at end of file
+var _0xf625=['DATE','moment','sequelize','exports','STRING'];(function(_0x373ea5,_0x7a2415){var _0x46ba03=function(_0x15696c){while(--_0x15696c){_0x373ea5['push'](_0x373ea5['shift']());}};_0x46ba03(++_0x7a2415);}(_0xf625,0x18c));var _0x5f62=function(_0x36bfe3,_0x358938){_0x36bfe3=_0x36bfe3-0x0;var _0x9b0436=_0xf625[_0x36bfe3];return _0x9b0436;};'use strict';var moment=require(_0x5f62('0x0'));var Sequelize=require(_0x5f62('0x1'));module[_0x5f62('0x2')]={'uniqueid':{'type':Sequelize[_0x5f62('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x5f62('0x3')]},'joinAt':{'type':Sequelize[_0x5f62('0x4')]},'leaveAt':{'type':Sequelize[_0x5f62('0x4')]},'acceptAt':{'type':Sequelize[_0x5f62('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x5f62('0x3')]}};
\ No newline at end of file
index 9fbfd00..fc23ef2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79d7=['order','sort','where','pick','merge','type','VIRTUAL','filter','options','include','findAll','rows','catch','params','intersection','SmsQueueReport','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','fs-extra','lodash','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','status','send','index','map','rawAttributes','fieldName','key','keys','query','filters','model','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x37656f,_0x350ac6){var _0x5cd9d8=function(_0x12e27e){while(--_0x12e27e){_0x37656f['push'](_0x37656f['shift']());}};_0x5cd9d8(++_0x350ac6);}(_0x79d7,0x190));var _0x779d=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0x79d7[_0x32f7d7];return _0x133d09;};'use strict';var emlformat=require(_0x779d('0x0'));var rimraf=require(_0x779d('0x1'));var zipdir=require(_0x779d('0x2'));var jsonpatch=require(_0x779d('0x3'));var rp=require(_0x779d('0x4'));var moment=require('moment');var BPromise=require(_0x779d('0x5'));var Mustache=require('mustache');var util=require(_0x779d('0x6'));var path=require(_0x779d('0x7'));var sox=require(_0x779d('0x8'));var csv=require(_0x779d('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x779d('0xa'));var _=require(_0x779d('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x779d('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x779d('0x9'));var querystring=require(_0x779d('0xd'));var Papa=require(_0x779d('0xe'));var Redis=require(_0x779d('0xf'));var authService=require(_0x779d('0x10'));var qs=require(_0x779d('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x779d('0x12'));var logger=require('../../config/logger')(_0x779d('0x13'));var utils=require('../../config/utils');var config=require(_0x779d('0x14'));var licenseUtil=require(_0x779d('0x15'));var db=require(_0x779d('0x16'))['db'];function respondWithStatusCode(_0x29cd45,_0x5ebff9){_0x5ebff9=_0x5ebff9||0xcc;return function(_0x359ae5){if(_0x359ae5){return _0x29cd45[_0x779d('0x17')](_0x5ebff9);}return _0x29cd45['status'](_0x5ebff9)[_0x779d('0x18')]();};}function respondWithResult(_0x745e0,_0x4905a1){_0x4905a1=_0x4905a1||0xc8;return function(_0x3f971e){if(_0x3f971e){return _0x745e0['status'](_0x4905a1)[_0x779d('0x19')](_0x3f971e);}};}function respondWithFilteredResult(_0x26c791,_0x1178b9){return function(_0x35231c){if(_0x35231c){var _0x1c3672=typeof _0x1178b9['offset']===_0x779d('0x1a')&&typeof _0x1178b9[_0x779d('0x1b')]==='undefined';var _0x3f13a7=_0x35231c[_0x779d('0x1c')];var _0x40ee7d=_0x1c3672?0x0:_0x1178b9['offset'];var _0x549fde=_0x1c3672?_0x35231c[_0x779d('0x1c')]:_0x1178b9[_0x779d('0x1d')]+_0x1178b9[_0x779d('0x1b')];var _0x14e588;if(_0x549fde>=_0x3f13a7){_0x549fde=_0x3f13a7;_0x14e588=0xc8;}else{_0x14e588=0xce;}_0x26c791['status'](_0x14e588);return _0x26c791['set'](_0x779d('0x1e'),_0x40ee7d+'-'+_0x549fde+'/'+_0x3f13a7)[_0x779d('0x19')](_0x35231c);}return null;};}function patchUpdates(_0x5a3f9f){return function(_0x5bdd48){try{jsonpatch[_0x779d('0x1f')](_0x5bdd48,_0x5a3f9f,!![]);}catch(_0xffab54){return BPromise[_0x779d('0x20')](_0xffab54);}return _0x5bdd48[_0x779d('0x21')]();};}function saveUpdates(_0x3ebb2c,_0x254165){return function(_0x4fa9ad){if(_0x4fa9ad){return _0x4fa9ad[_0x779d('0x22')](_0x3ebb2c)[_0x779d('0x23')](function(_0x199a3b){return _0x199a3b;});}return null;};}function removeEntity(_0x453975,_0x3b6d9f){return function(_0x43ac93){if(_0x43ac93){return _0x43ac93[_0x779d('0x24')]()[_0x779d('0x23')](function(){_0x453975['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x34622c,_0xb96816){return function(_0x223d27){if(!_0x223d27){_0x34622c[_0x779d('0x17')](0x194);}return _0x223d27;};}function handleError(_0x479363,_0x28ec93){_0x28ec93=_0x28ec93||0x1f4;return function(_0x40b3ca){logger[_0x779d('0x25')](_0x40b3ca[_0x779d('0x26')]);if(_0x40b3ca[_0x779d('0x27')]){delete _0x40b3ca[_0x779d('0x27')];}_0x479363[_0x779d('0x28')](_0x28ec93)[_0x779d('0x29')](_0x40b3ca);};}exports[_0x779d('0x2a')]=function(_0x34195d,_0x20fdff){var _0x162931={},_0x1fd02e={},_0x5accda={'count':0x0,'rows':[]};var _0x49f712=_[_0x779d('0x2b')](db['SmsQueueReport'][_0x779d('0x2c')],function(_0x50c45d){return{'name':_0x50c45d[_0x779d('0x2d')],'type':_0x50c45d['type'][_0x779d('0x2e')]};});_0x1fd02e['model']=_['map'](_0x49f712,_0x779d('0x27'));_0x1fd02e['query']=_[_0x779d('0x2f')](_0x34195d[_0x779d('0x30')]);_0x1fd02e[_0x779d('0x31')]=_['intersection'](_0x1fd02e[_0x779d('0x32')],_0x1fd02e[_0x779d('0x30')]);_0x162931[_0x779d('0x33')]=_['intersection'](_0x1fd02e[_0x779d('0x32')],qs['fields'](_0x34195d[_0x779d('0x30')][_0x779d('0x34')]));_0x162931['attributes']=_0x162931[_0x779d('0x33')][_0x779d('0x35')]?_0x162931[_0x779d('0x33')]:_0x1fd02e[_0x779d('0x32')];if(!_0x34195d['query'][_0x779d('0x36')](_0x779d('0x37'))){_0x162931[_0x779d('0x1b')]=qs[_0x779d('0x1b')](_0x34195d['query'][_0x779d('0x1b')]);_0x162931[_0x779d('0x1d')]=qs[_0x779d('0x1d')](_0x34195d[_0x779d('0x30')][_0x779d('0x1d')]);}_0x162931[_0x779d('0x38')]=qs[_0x779d('0x39')](_0x34195d[_0x779d('0x30')][_0x779d('0x39')]);_0x162931[_0x779d('0x3a')]=qs[_0x779d('0x31')](_[_0x779d('0x3b')](_0x34195d[_0x779d('0x30')],_0x1fd02e[_0x779d('0x31')]),_0x49f712);if(_0x34195d['query']['filter']){_0x162931[_0x779d('0x3a')]=_[_0x779d('0x3c')](_0x162931[_0x779d('0x3a')],{'$or':_[_0x779d('0x2b')](_0x49f712,function(_0x55dee1){if(_0x55dee1[_0x779d('0x3d')]!==_0x779d('0x3e')){var _0x366c63={};_0x366c63[_0x55dee1[_0x779d('0x27')]]={'$like':'%'+_0x34195d['query'][_0x779d('0x3f')]+'%'};return _0x366c63;}})});}_0x162931=_[_0x779d('0x3c')]({},_0x162931,_0x34195d[_0x779d('0x40')]);var _0x415e2e={'where':_0x162931[_0x779d('0x3a')]};return db['SmsQueueReport']['count'](_0x415e2e)[_0x779d('0x23')](function(_0x369123){_0x5accda[_0x779d('0x1c')]=_0x369123;if(_0x34195d['query']['includeAll']){_0x162931[_0x779d('0x41')]=[{'all':!![]}];}return db['SmsQueueReport'][_0x779d('0x42')](_0x162931);})['then'](function(_0x5136e4){_0x5accda[_0x779d('0x43')]=_0x5136e4;return _0x5accda;})[_0x779d('0x23')](respondWithFilteredResult(_0x20fdff,_0x162931))[_0x779d('0x44')](handleError(_0x20fdff,null));};exports['show']=function(_0x251c8e,_0xd207b1){var _0x5dc2ed={'raw':!![],'where':{'id':_0x251c8e[_0x779d('0x45')]['id']}},_0x530e44={};_0x530e44[_0x779d('0x32')]=_[_0x779d('0x2f')](db['SmsQueueReport'][_0x779d('0x2c')]);_0x530e44[_0x779d('0x30')]=_[_0x779d('0x2f')](_0x251c8e[_0x779d('0x30')]);_0x530e44[_0x779d('0x31')]=_['intersection'](_0x530e44['model'],_0x530e44[_0x779d('0x30')]);_0x5dc2ed[_0x779d('0x33')]=_[_0x779d('0x46')](_0x530e44[_0x779d('0x32')],qs[_0x779d('0x34')](_0x251c8e[_0x779d('0x30')][_0x779d('0x34')]));_0x5dc2ed['attributes']=_0x5dc2ed[_0x779d('0x33')][_0x779d('0x35')]?_0x5dc2ed[_0x779d('0x33')]:_0x530e44[_0x779d('0x32')];if(_0x251c8e[_0x779d('0x30')]['includeAll']){_0x5dc2ed['include']=[{'all':!![]}];}_0x5dc2ed=_['merge']({},_0x5dc2ed,_0x251c8e[_0x779d('0x40')]);return db[_0x779d('0x47')][_0x779d('0x48')](_0x5dc2ed)[_0x779d('0x23')](handleEntityNotFound(_0xd207b1,null))[_0x779d('0x23')](respondWithResult(_0xd207b1,null))[_0x779d('0x44')](handleError(_0xd207b1,null));};exports['create']=function(_0x1b2178,_0x52925d){return db[_0x779d('0x47')][_0x779d('0x49')](_0x1b2178[_0x779d('0x4a')],{})[_0x779d('0x23')](respondWithResult(_0x52925d,0xc9))[_0x779d('0x44')](handleError(_0x52925d,null));};exports[_0x779d('0x22')]=function(_0x217dfb,_0x136dc0){if(_0x217dfb[_0x779d('0x4a')]['id']){delete _0x217dfb[_0x779d('0x4a')]['id'];}return db['SmsQueueReport'][_0x779d('0x48')]({'where':{'id':_0x217dfb[_0x779d('0x45')]['id']}})[_0x779d('0x23')](handleEntityNotFound(_0x136dc0,null))[_0x779d('0x23')](saveUpdates(_0x217dfb[_0x779d('0x4a')],null))[_0x779d('0x23')](respondWithResult(_0x136dc0,null))['catch'](handleError(_0x136dc0,null));};exports['destroy']=function(_0x403f7b,_0x241c6c){return db[_0x779d('0x47')][_0x779d('0x48')]({'where':{'id':_0x403f7b[_0x779d('0x45')]['id']}})[_0x779d('0x23')](handleEntityNotFound(_0x241c6c,null))['then'](removeEntity(_0x241c6c,null))[_0x779d('0x44')](handleError(_0x241c6c,null));};exports['describe']=function(_0x28f51d,_0x139964){return db[_0x779d('0x47')][_0x779d('0x4b')]()[_0x779d('0x23')](respondWithResult(_0x139964,null))[_0x779d('0x44')](handleError(_0x139964,null));};
\ No newline at end of file
+var _0xc3c5=['offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','update','destroy','then','end','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','hasOwnProperty','order','sort','where','pick','filter','merge','options','SmsQueueReport','includeAll','findAll','rows','catch','show','length','include','find','create','body','params','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','json'];(function(_0x9a3e0f,_0x2f796d){var _0x3d2a9a=function(_0x3aeb03){while(--_0x3aeb03){_0x9a3e0f['push'](_0x9a3e0f['shift']());}};_0x3d2a9a(++_0x2f796d);}(_0xc3c5,0x176));var _0x5c3c=function(_0x11d638,_0x321394){_0x11d638=_0x11d638-0x0;var _0x152a69=_0xc3c5[_0x11d638];return _0x152a69;};'use strict';var emlformat=require(_0x5c3c('0x0'));var rimraf=require(_0x5c3c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5c3c('0x2'));var rp=require(_0x5c3c('0x3'));var moment=require(_0x5c3c('0x4'));var BPromise=require(_0x5c3c('0x5'));var Mustache=require(_0x5c3c('0x6'));var util=require(_0x5c3c('0x7'));var path=require(_0x5c3c('0x8'));var sox=require(_0x5c3c('0x9'));var csv=require(_0x5c3c('0xa'));var ejs=require(_0x5c3c('0xb'));var fs=require('fs');var fs_extra=require(_0x5c3c('0xc'));var _=require(_0x5c3c('0xd'));var squel=require(_0x5c3c('0xe'));var crypto=require(_0x5c3c('0xf'));var jsforce=require(_0x5c3c('0x10'));var deskjs=require(_0x5c3c('0x11'));var toCsv=require(_0x5c3c('0xa'));var querystring=require(_0x5c3c('0x12'));var Papa=require('papaparse');var Redis=require(_0x5c3c('0x13'));var authService=require(_0x5c3c('0x14'));var qs=require(_0x5c3c('0x15'));var as=require(_0x5c3c('0x16'));var hardwareService=require(_0x5c3c('0x17'));var logger=require(_0x5c3c('0x18'))(_0x5c3c('0x19'));var utils=require(_0x5c3c('0x1a'));var config=require(_0x5c3c('0x1b'));var licenseUtil=require(_0x5c3c('0x1c'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x53b2ee,_0x50b93d){_0x50b93d=_0x50b93d||0xcc;return function(_0xfe46db){if(_0xfe46db){return _0x53b2ee[_0x5c3c('0x1d')](_0x50b93d);}return _0x53b2ee['status'](_0x50b93d)['end']();};}function respondWithResult(_0x3e327b,_0x2a8ed1){_0x2a8ed1=_0x2a8ed1||0xc8;return function(_0x58047c){if(_0x58047c){return _0x3e327b['status'](_0x2a8ed1)[_0x5c3c('0x1e')](_0x58047c);}};}function respondWithFilteredResult(_0x17dfc3,_0x5b21a8){return function(_0x4e3c79){if(_0x4e3c79){var _0x4013be=typeof _0x5b21a8[_0x5c3c('0x1f')]===_0x5c3c('0x20')&&typeof _0x5b21a8[_0x5c3c('0x21')]===_0x5c3c('0x20');var _0x44f714=_0x4e3c79[_0x5c3c('0x22')];var _0x150efb=_0x4013be?0x0:_0x5b21a8[_0x5c3c('0x1f')];var _0x726e25=_0x4013be?_0x4e3c79[_0x5c3c('0x22')]:_0x5b21a8[_0x5c3c('0x1f')]+_0x5b21a8['limit'];var _0x3d191a;if(_0x726e25>=_0x44f714){_0x726e25=_0x44f714;_0x3d191a=0xc8;}else{_0x3d191a=0xce;}_0x17dfc3[_0x5c3c('0x23')](_0x3d191a);return _0x17dfc3[_0x5c3c('0x24')](_0x5c3c('0x25'),_0x150efb+'-'+_0x726e25+'/'+_0x44f714)[_0x5c3c('0x1e')](_0x4e3c79);}return null;};}function patchUpdates(_0x1e9fce){return function(_0x22595c){try{jsonpatch[_0x5c3c('0x26')](_0x22595c,_0x1e9fce,!![]);}catch(_0x4726b8){return BPromise[_0x5c3c('0x27')](_0x4726b8);}return _0x22595c[_0x5c3c('0x28')]();};}function saveUpdates(_0x4b53bc,_0x59cb57){return function(_0x2ea4bf){if(_0x2ea4bf){return _0x2ea4bf[_0x5c3c('0x29')](_0x4b53bc)['then'](function(_0x2bb6de){return _0x2bb6de;});}return null;};}function removeEntity(_0x473c56,_0x471956){return function(_0xe27ecc){if(_0xe27ecc){return _0xe27ecc[_0x5c3c('0x2a')]()[_0x5c3c('0x2b')](function(){_0x473c56['status'](0xcc)[_0x5c3c('0x2c')]();});}};}function handleEntityNotFound(_0x595c28,_0x1a8aeb){return function(_0x409404){if(!_0x409404){_0x595c28[_0x5c3c('0x1d')](0x194);}return _0x409404;};}function handleError(_0x1958f2,_0x1e447c){_0x1e447c=_0x1e447c||0x1f4;return function(_0x1519b6){logger['error'](_0x1519b6['stack']);if(_0x1519b6[_0x5c3c('0x2d')]){delete _0x1519b6[_0x5c3c('0x2d')];}_0x1958f2[_0x5c3c('0x23')](_0x1e447c)[_0x5c3c('0x2e')](_0x1519b6);};}exports[_0x5c3c('0x2f')]=function(_0x222d75,_0x145791){var _0x3056f3={},_0x87cd32={},_0x1d0862={'count':0x0,'rows':[]};var _0x3e50c0=_[_0x5c3c('0x30')](db['SmsQueueReport'][_0x5c3c('0x31')],function(_0xc66f41){return{'name':_0xc66f41[_0x5c3c('0x32')],'type':_0xc66f41[_0x5c3c('0x33')][_0x5c3c('0x34')]};});_0x87cd32['model']=_[_0x5c3c('0x30')](_0x3e50c0,_0x5c3c('0x2d'));_0x87cd32[_0x5c3c('0x35')]=_[_0x5c3c('0x36')](_0x222d75[_0x5c3c('0x35')]);_0x87cd32[_0x5c3c('0x37')]=_['intersection'](_0x87cd32[_0x5c3c('0x38')],_0x87cd32['query']);_0x3056f3[_0x5c3c('0x39')]=_[_0x5c3c('0x3a')](_0x87cd32[_0x5c3c('0x38')],qs[_0x5c3c('0x3b')](_0x222d75[_0x5c3c('0x35')][_0x5c3c('0x3b')]));_0x3056f3['attributes']=_0x3056f3[_0x5c3c('0x39')]['length']?_0x3056f3['attributes']:_0x87cd32[_0x5c3c('0x38')];if(!_0x222d75[_0x5c3c('0x35')][_0x5c3c('0x3c')]('nolimit')){_0x3056f3[_0x5c3c('0x21')]=qs['limit'](_0x222d75[_0x5c3c('0x35')]['limit']);_0x3056f3[_0x5c3c('0x1f')]=qs[_0x5c3c('0x1f')](_0x222d75[_0x5c3c('0x35')][_0x5c3c('0x1f')]);}_0x3056f3[_0x5c3c('0x3d')]=qs[_0x5c3c('0x3e')](_0x222d75[_0x5c3c('0x35')][_0x5c3c('0x3e')]);_0x3056f3[_0x5c3c('0x3f')]=qs[_0x5c3c('0x37')](_[_0x5c3c('0x40')](_0x222d75[_0x5c3c('0x35')],_0x87cd32[_0x5c3c('0x37')]),_0x3e50c0);if(_0x222d75[_0x5c3c('0x35')][_0x5c3c('0x41')]){_0x3056f3[_0x5c3c('0x3f')]=_[_0x5c3c('0x42')](_0x3056f3['where'],{'$or':_['map'](_0x3e50c0,function(_0x22f595){if(_0x22f595['type']!=='VIRTUAL'){var _0x145f95={};_0x145f95[_0x22f595[_0x5c3c('0x2d')]]={'$like':'%'+_0x222d75[_0x5c3c('0x35')][_0x5c3c('0x41')]+'%'};return _0x145f95;}})});}_0x3056f3=_[_0x5c3c('0x42')]({},_0x3056f3,_0x222d75[_0x5c3c('0x43')]);var _0x13d5c3={'where':_0x3056f3[_0x5c3c('0x3f')]};return db[_0x5c3c('0x44')][_0x5c3c('0x22')](_0x13d5c3)[_0x5c3c('0x2b')](function(_0x1c16f9){_0x1d0862['count']=_0x1c16f9;if(_0x222d75[_0x5c3c('0x35')][_0x5c3c('0x45')]){_0x3056f3['include']=[{'all':!![]}];}return db['SmsQueueReport'][_0x5c3c('0x46')](_0x3056f3);})[_0x5c3c('0x2b')](function(_0x31f2d4){_0x1d0862[_0x5c3c('0x47')]=_0x31f2d4;return _0x1d0862;})[_0x5c3c('0x2b')](respondWithFilteredResult(_0x145791,_0x3056f3))[_0x5c3c('0x48')](handleError(_0x145791,null));};exports[_0x5c3c('0x49')]=function(_0x32861a,_0x47f37a){var _0x130cf6={'raw':!![],'where':{'id':_0x32861a['params']['id']}},_0x31d62c={};_0x31d62c[_0x5c3c('0x38')]=_[_0x5c3c('0x36')](db['SmsQueueReport'][_0x5c3c('0x31')]);_0x31d62c['query']=_[_0x5c3c('0x36')](_0x32861a[_0x5c3c('0x35')]);_0x31d62c[_0x5c3c('0x37')]=_['intersection'](_0x31d62c[_0x5c3c('0x38')],_0x31d62c[_0x5c3c('0x35')]);_0x130cf6[_0x5c3c('0x39')]=_[_0x5c3c('0x3a')](_0x31d62c[_0x5c3c('0x38')],qs[_0x5c3c('0x3b')](_0x32861a['query'][_0x5c3c('0x3b')]));_0x130cf6['attributes']=_0x130cf6[_0x5c3c('0x39')][_0x5c3c('0x4a')]?_0x130cf6[_0x5c3c('0x39')]:_0x31d62c['model'];if(_0x32861a[_0x5c3c('0x35')][_0x5c3c('0x45')]){_0x130cf6[_0x5c3c('0x4b')]=[{'all':!![]}];}_0x130cf6=_[_0x5c3c('0x42')]({},_0x130cf6,_0x32861a[_0x5c3c('0x43')]);return db['SmsQueueReport'][_0x5c3c('0x4c')](_0x130cf6)[_0x5c3c('0x2b')](handleEntityNotFound(_0x47f37a,null))[_0x5c3c('0x2b')](respondWithResult(_0x47f37a,null))['catch'](handleError(_0x47f37a,null));};exports[_0x5c3c('0x4d')]=function(_0x5741dc,_0x58ae5d){return db['SmsQueueReport']['create'](_0x5741dc['body'],{})[_0x5c3c('0x2b')](respondWithResult(_0x58ae5d,0xc9))['catch'](handleError(_0x58ae5d,null));};exports[_0x5c3c('0x29')]=function(_0xc44d70,_0x4d012e){if(_0xc44d70[_0x5c3c('0x4e')]['id']){delete _0xc44d70[_0x5c3c('0x4e')]['id'];}return db[_0x5c3c('0x44')][_0x5c3c('0x4c')]({'where':{'id':_0xc44d70[_0x5c3c('0x4f')]['id']}})['then'](handleEntityNotFound(_0x4d012e,null))['then'](saveUpdates(_0xc44d70[_0x5c3c('0x4e')],null))[_0x5c3c('0x2b')](respondWithResult(_0x4d012e,null))[_0x5c3c('0x48')](handleError(_0x4d012e,null));};exports['destroy']=function(_0x50f148,_0x2b5e82){return db[_0x5c3c('0x44')][_0x5c3c('0x4c')]({'where':{'id':_0x50f148['params']['id']}})[_0x5c3c('0x2b')](handleEntityNotFound(_0x2b5e82,null))[_0x5c3c('0x2b')](removeEntity(_0x2b5e82,null))[_0x5c3c('0x48')](handleError(_0x2b5e82,null));};exports[_0x5c3c('0x50')]=function(_0x1436fe,_0x91af6a){return db[_0x5c3c('0x44')]['describe']()[_0x5c3c('0x2b')](respondWithResult(_0x91af6a,null))[_0x5c3c('0x48')](handleError(_0x91af6a,null));};
\ No newline at end of file
index 1e2f530..616b75b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['../../config/logger','moment','request-promise','rimraf','../../config/environment','./smsQueueReport.attributes','define','SmsQueueReport','uniqueid','lodash'];(function(_0x20b4be,_0x2ed5d6){var _0x1f884e=function(_0x26a8f6){while(--_0x26a8f6){_0x20b4be['push'](_0x20b4be['shift']());}};_0x1f884e(++_0x2ed5d6);}(_0xb7e7,0x121));var _0x7b7e=function(_0x1b5aea,_0x3f04b7){_0x1b5aea=_0x1b5aea-0x0;var _0x15cfc6=_0xb7e7[_0x1b5aea];return _0x15cfc6;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var logger=require(_0x7b7e('0x1'))('api');var moment=require(_0x7b7e('0x2'));var BPromise=require('bluebird');var rp=require(_0x7b7e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var attributes=require(_0x7b7e('0x6'));module['exports']=function(_0x53ed64,_0x333fa4){return _0x53ed64[_0x7b7e('0x7')](_0x7b7e('0x8'),attributes,{'tableName':'report_sms_queue','paranoid':![],'indexes':[{'name':_0x7b7e('0x9'),'fields':[_0x7b7e('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd8b0=['define','report_sms_queue','uniqueid','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x38ee2c,_0x1ffe8b){var _0x3d7c9c=function(_0x437b71){while(--_0x437b71){_0x38ee2c['push'](_0x38ee2c['shift']());}};_0x3d7c9c(++_0x1ffe8b);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x0d8b('0x2'));var rp=require(_0x0d8b('0x3'));var fs=require('fs');var path=require(_0x0d8b('0x4'));var rimraf=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var attributes=require('./smsQueueReport.attributes');module['exports']=function(_0x3f8b6f,_0x227c63){return _0x3f8b6f[_0x0d8b('0x7')]('SmsQueueReport',attributes,{'tableName':_0x0d8b('0x8'),'paranoid':![],'indexes':[{'name':_0x0d8b('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index f7c7169..3f6949b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81a1=['attributes','limit','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','SmsQueueReport,\x20%s,\x20%s','message','result','catch','CreateSmsQueueReport','SmsQueueReport','create','body','options','UpdateSmsQueueReport','update','where'];(function(_0x51e49e,_0x2e95d2){var _0x429917=function(_0x3ac1a7){while(--_0x3ac1a7){_0x51e49e['push'](_0x51e49e['shift']());}};_0x429917(++_0x2e95d2);}(_0x81a1,0x16d));var _0x181a=function(_0x496341,_0x2b434d){_0x496341=_0x496341-0x0;var _0x493c07=_0x81a1[_0x496341];return _0x493c07;};'use strict';var _=require(_0x181a('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x181a('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x181a('0x2'));var db=require(_0x181a('0x3'))['db'];var utils=require(_0x181a('0x4'));var logger=require(_0x181a('0x5'))(_0x181a('0x6'));var config=require(_0x181a('0x7'));var jayson=require(_0x181a('0x8'));var client=jayson[_0x181a('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x507189,_0x2cd3ba,_0x4279a4){return new BPromise(function(_0x500fcf,_0x2abc90){return client[_0x181a('0xa')](_0x507189,_0x4279a4)[_0x181a('0xb')](function(_0x4865fd){logger[_0x181a('0xc')]('SmsQueueReport,\x20%s,\x20%s',_0x2cd3ba,'request\x20sent');logger[_0x181a('0xd')](_0x181a('0xe'),_0x2cd3ba,_0x181a('0xf'),JSON[_0x181a('0x10')](_0x4865fd));if(_0x4865fd[_0x181a('0x11')]){if(_0x4865fd[_0x181a('0x11')][_0x181a('0x12')]===0x1f4){logger['error'](_0x181a('0x13'),_0x2cd3ba,_0x4865fd['error'][_0x181a('0x14')]);return _0x2abc90(_0x4865fd[_0x181a('0x11')][_0x181a('0x14')]);}logger[_0x181a('0x11')](_0x181a('0x13'),_0x2cd3ba,_0x4865fd[_0x181a('0x11')][_0x181a('0x14')]);return _0x500fcf(_0x4865fd[_0x181a('0x11')][_0x181a('0x14')]);}else{logger[_0x181a('0xc')](_0x181a('0x13'),_0x2cd3ba,_0x181a('0xf'));_0x500fcf(_0x4865fd[_0x181a('0x15')][_0x181a('0x14')]);}})[_0x181a('0x16')](function(_0x48ec09){logger[_0x181a('0x11')](_0x181a('0x13'),_0x2cd3ba,_0x48ec09);_0x2abc90(_0x48ec09);});});}exports[_0x181a('0x17')]=function(_0x7b9f7d){var _0x2cf190=this;return new Promise(function(_0x5cc551,_0x2d8e86){return db[_0x181a('0x18')][_0x181a('0x19')](_0x7b9f7d[_0x181a('0x1a')],{'raw':_0x7b9f7d[_0x181a('0x1b')]?_0x7b9f7d[_0x181a('0x1b')]['raw']===undefined?!![]:![]:!![]})[_0x181a('0xb')](function(_0x242737){logger[_0x181a('0xc')](_0x181a('0x17'),_0x7b9f7d);logger[_0x181a('0xd')](_0x181a('0x17'),_0x7b9f7d,JSON['stringify'](_0x242737));_0x5cc551(_0x242737);})[_0x181a('0x16')](function(_0x9bd46c){logger[_0x181a('0x11')](_0x181a('0x17'),_0x9bd46c[_0x181a('0x14')],_0x7b9f7d);_0x2d8e86(_0x2cf190[_0x181a('0x11')](0x1f4,_0x9bd46c[_0x181a('0x14')]));});});};exports[_0x181a('0x1c')]=function(_0x1ad254){var _0x3d61d1=this;return new Promise(function(_0x3558e8,_0x2d84a5){return db[_0x181a('0x18')][_0x181a('0x1d')](_0x1ad254[_0x181a('0x1a')],{'raw':_0x1ad254[_0x181a('0x1b')]?_0x1ad254[_0x181a('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1ad254[_0x181a('0x1b')]?_0x1ad254[_0x181a('0x1b')][_0x181a('0x1e')]||null:null,'attributes':_0x1ad254[_0x181a('0x1b')]?_0x1ad254[_0x181a('0x1b')][_0x181a('0x1f')]||null:null,'limit':_0x1ad254[_0x181a('0x1b')]?_0x1ad254[_0x181a('0x1b')][_0x181a('0x20')]||null:null})[_0x181a('0xb')](function(_0x386364){logger[_0x181a('0xc')]('UpdateSmsQueueReport',_0x1ad254);logger[_0x181a('0xd')](_0x181a('0x1c'),_0x1ad254,JSON[_0x181a('0x10')](_0x386364));_0x3558e8(_0x386364);})['catch'](function(_0x2e9bc9){logger[_0x181a('0x11')](_0x181a('0x1c'),_0x2e9bc9[_0x181a('0x14')],_0x1ad254);_0x2d84a5(_0x3d61d1[_0x181a('0x11')](0x1f4,_0x2e9bc9[_0x181a('0x14')]));});});};
\ No newline at end of file
+var _0x3ed2=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','SmsQueueReport,\x20%s,\x20%s','request\x20sent','SmsQueueReport,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','CreateSmsQueueReport','SmsQueueReport','create','body','options','raw','UpdateSmsQueueReport','update','where','attributes','info','debug','stringify','lodash','util'];(function(_0x10ff8f,_0x22e815){var _0xaa8c14=function(_0x1f21f4){while(--_0x1f21f4){_0x10ff8f['push'](_0x10ff8f['shift']());}};_0xaa8c14(++_0x22e815);}(_0x3ed2,0x15c));var _0x23ed=function(_0x2c87dc,_0x139292){_0x2c87dc=_0x2c87dc-0x0;var _0x2b78ec=_0x3ed2[_0x2c87dc];return _0x2b78ec;};'use strict';var _=require(_0x23ed('0x0'));var util=require(_0x23ed('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x23ed('0x2'));var fs=require('fs');var Redis=require(_0x23ed('0x3'));var db=require(_0x23ed('0x4'))['db'];var utils=require(_0x23ed('0x5'));var logger=require(_0x23ed('0x6'))(_0x23ed('0x7'));var config=require(_0x23ed('0x8'));var jayson=require(_0x23ed('0x9'));var client=jayson[_0x23ed('0xa')][_0x23ed('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x329ac8,_0x197df7,_0x42e4a4){return new BPromise(function(_0x168474,_0x43fa71){return client[_0x23ed('0xc')](_0x329ac8,_0x42e4a4)[_0x23ed('0xd')](function(_0x6905dd){logger['info'](_0x23ed('0xe'),_0x197df7,_0x23ed('0xf'));logger['debug'](_0x23ed('0x10'),_0x197df7,_0x23ed('0xf'),JSON['stringify'](_0x6905dd));if(_0x6905dd['error']){if(_0x6905dd['error'][_0x23ed('0x11')]===0x1f4){logger[_0x23ed('0x12')](_0x23ed('0xe'),_0x197df7,_0x6905dd['error'][_0x23ed('0x13')]);return _0x43fa71(_0x6905dd[_0x23ed('0x12')][_0x23ed('0x13')]);}logger[_0x23ed('0x12')](_0x23ed('0xe'),_0x197df7,_0x6905dd[_0x23ed('0x12')][_0x23ed('0x13')]);return _0x168474(_0x6905dd[_0x23ed('0x12')][_0x23ed('0x13')]);}else{logger['info']('SmsQueueReport,\x20%s,\x20%s',_0x197df7,_0x23ed('0xf'));_0x168474(_0x6905dd[_0x23ed('0x14')][_0x23ed('0x13')]);}})[_0x23ed('0x15')](function(_0x2736ed){logger[_0x23ed('0x12')](_0x23ed('0xe'),_0x197df7,_0x2736ed);_0x43fa71(_0x2736ed);});});}exports[_0x23ed('0x16')]=function(_0x2bf00d){var _0x553d18=this;return new Promise(function(_0x204fae,_0x2b537d){return db[_0x23ed('0x17')][_0x23ed('0x18')](_0x2bf00d[_0x23ed('0x19')],{'raw':_0x2bf00d[_0x23ed('0x1a')]?_0x2bf00d['options'][_0x23ed('0x1b')]===undefined?!![]:![]:!![]})[_0x23ed('0xd')](function(_0x3e49fa){logger['info'](_0x23ed('0x16'),_0x2bf00d);logger['debug'](_0x23ed('0x16'),_0x2bf00d,JSON['stringify'](_0x3e49fa));_0x204fae(_0x3e49fa);})['catch'](function(_0x45646f){logger[_0x23ed('0x12')]('CreateSmsQueueReport',_0x45646f['message'],_0x2bf00d);_0x2b537d(_0x553d18[_0x23ed('0x12')](0x1f4,_0x45646f[_0x23ed('0x13')]));});});};exports[_0x23ed('0x1c')]=function(_0x354b9a){var _0x4d866e=this;return new Promise(function(_0x188cd1,_0x305123){return db[_0x23ed('0x17')][_0x23ed('0x1d')](_0x354b9a['body'],{'raw':_0x354b9a[_0x23ed('0x1a')]?_0x354b9a[_0x23ed('0x1a')][_0x23ed('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x354b9a[_0x23ed('0x1a')]?_0x354b9a[_0x23ed('0x1a')][_0x23ed('0x1e')]||null:null,'attributes':_0x354b9a['options']?_0x354b9a['options'][_0x23ed('0x1f')]||null:null,'limit':_0x354b9a[_0x23ed('0x1a')]?_0x354b9a[_0x23ed('0x1a')]['limit']||null:null})['then'](function(_0x5caf01){logger[_0x23ed('0x20')](_0x23ed('0x1c'),_0x354b9a);logger[_0x23ed('0x21')]('UpdateSmsQueueReport',_0x354b9a,JSON[_0x23ed('0x22')](_0x5caf01));_0x188cd1(_0x5caf01);})[_0x23ed('0x15')](function(_0x15ac45){logger['error'](_0x23ed('0x1c'),_0x15ac45[_0x23ed('0x13')],_0x354b9a);_0x305123(_0x4d866e['error'](0x1f4,_0x15ac45[_0x23ed('0x13')]));});});};
\ No newline at end of file
index f6f9ad3..6f9fa2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06f4=['../../config/environment','./smsTransferReport.controller','get','isAuthenticated','describe','put','delete','/:id','destroy','exports','multer','util','connect-timeout','express','../../components/auth/service'];(function(_0x131916,_0x8eb089){var _0x283e61=function(_0x285d52){while(--_0x285d52){_0x131916['push'](_0x131916['shift']());}};_0x283e61(++_0x8eb089);}(_0x06f4,0x136));var _0x406f=function(_0x584b85,_0x57de2b){_0x584b85=_0x584b85-0x0;var _0x11fd4b=_0x06f4[_0x584b85];return _0x11fd4b;};'use strict';var multer=require(_0x406f('0x0'));var util=require(_0x406f('0x1'));var path=require('path');var timeout=require(_0x406f('0x2'));var express=require(_0x406f('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x406f('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x406f('0x5'));var controller=require(_0x406f('0x6'));router[_0x406f('0x7')]('/',auth[_0x406f('0x8')](),controller['index']);router[_0x406f('0x7')]('/describe',auth[_0x406f('0x8')](),controller[_0x406f('0x9')]);router[_0x406f('0x7')]('/:id',auth[_0x406f('0x8')](),controller['show']);router['post']('/',auth[_0x406f('0x8')](),controller['create']);router[_0x406f('0xa')]('/:id',auth[_0x406f('0x8')](),controller['update']);router[_0x406f('0xb')](_0x406f('0xc'),auth['isAuthenticated'](),controller[_0x406f('0xd')]);module[_0x406f('0xe')]=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','./smsTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put'];(function(_0x422104,_0x5c5f5f){var _0x568fb7=function(_0x4e13f5){while(--_0x4e13f5){_0x422104['push'](_0x422104['shift']());}};_0x568fb7(++_0x5c5f5f);}(_0x1cb9,0x14e));var _0x91cb=function(_0x54985f,_0x424faa){_0x54985f=_0x54985f-0x0;var _0x8fe7e=_0x1cb9[_0x54985f];return _0x8fe7e;};'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 a729c02..2271afe 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(_0x229433,_0x20367b){var _0x1dcafc=function(_0x2ce5e1){while(--_0x2ce5e1){_0x229433['push'](_0x229433['shift']());}};_0x1dcafc(++_0x20367b);}(_0xe706,0xa3));var _0x6e70=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xe706[_0x47b58b];return _0x46bebe;};'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(_0x13f7fe,_0x694584){var _0x662449=function(_0x2cf065){while(--_0x2cf065){_0x13f7fe['push'](_0x13f7fe['shift']());}};_0x662449(++_0x694584);}(_0x008c,0x188));var _0xc008=function(_0x232eb7,_0x199b07){_0x232eb7=_0x232eb7-0x0;var _0xd7fb8=_0x008c[_0x232eb7];return _0xd7fb8;};'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 1bd2869..0344277 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c6c=['order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','create','body','update','find','describe','eml-format','rimraf','fast-json-patch','moment','util','path','sox','ejs','squel','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','then','destroy','stack','name','send','SmsTransferReport','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x8c6c,0x133));var _0xc8c6=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x8c6c[_0x2641f9];return _0x585741;};'use strict';var emlformat=require(_0xc8c6('0x0'));var rimraf=require(_0xc8c6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc8c6('0x2'));var rp=require('request-promise');var moment=require(_0xc8c6('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xc8c6('0x4'));var path=require(_0xc8c6('0x5'));var sox=require(_0xc8c6('0x6'));var csv=require('to-csv');var ejs=require(_0xc8c6('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xc8c6('0x8'));var crypto=require('crypto');var jsforce=require(_0xc8c6('0x9'));var deskjs=require(_0xc8c6('0xa'));var toCsv=require(_0xc8c6('0xb'));var querystring=require(_0xc8c6('0xc'));var Papa=require('papaparse');var Redis=require(_0xc8c6('0xd'));var authService=require(_0xc8c6('0xe'));var qs=require(_0xc8c6('0xf'));var as=require(_0xc8c6('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc8c6('0x11'))(_0xc8c6('0x12'));var utils=require(_0xc8c6('0x13'));var config=require(_0xc8c6('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xc8c6('0x15'))['db'];function respondWithStatusCode(_0xd9c8f0,_0x523fc8){_0x523fc8=_0x523fc8||0xcc;return function(_0x2a0732){if(_0x2a0732){return _0xd9c8f0[_0xc8c6('0x16')](_0x523fc8);}return _0xd9c8f0[_0xc8c6('0x17')](_0x523fc8)[_0xc8c6('0x18')]();};}function respondWithResult(_0x95c5ec,_0x3b20d4){_0x3b20d4=_0x3b20d4||0xc8;return function(_0xff14af){if(_0xff14af){return _0x95c5ec[_0xc8c6('0x17')](_0x3b20d4)[_0xc8c6('0x19')](_0xff14af);}};}function respondWithFilteredResult(_0x175f57,_0x12a8a1){return function(_0x280323){if(_0x280323){var _0xab935f=typeof _0x12a8a1[_0xc8c6('0x1a')]===_0xc8c6('0x1b')&&typeof _0x12a8a1['limit']===_0xc8c6('0x1b');var _0x412ed3=_0x280323['count'];var _0x35ad89=_0xab935f?0x0:_0x12a8a1[_0xc8c6('0x1a')];var _0xbc2480=_0xab935f?_0x280323[_0xc8c6('0x1c')]:_0x12a8a1[_0xc8c6('0x1a')]+_0x12a8a1[_0xc8c6('0x1d')];var _0x3c50cf;if(_0xbc2480>=_0x412ed3){_0xbc2480=_0x412ed3;_0x3c50cf=0xc8;}else{_0x3c50cf=0xce;}_0x175f57[_0xc8c6('0x17')](_0x3c50cf);return _0x175f57[_0xc8c6('0x1e')](_0xc8c6('0x1f'),_0x35ad89+'-'+_0xbc2480+'/'+_0x412ed3)[_0xc8c6('0x19')](_0x280323);}return null;};}function patchUpdates(_0x2f8ada){return function(_0x3f259a){try{jsonpatch['apply'](_0x3f259a,_0x2f8ada,!![]);}catch(_0x4bd296){return BPromise[_0xc8c6('0x20')](_0x4bd296);}return _0x3f259a['save']();};}function saveUpdates(_0x4e0669,_0x4f7c03){return function(_0x35d827){if(_0x35d827){return _0x35d827['update'](_0x4e0669)[_0xc8c6('0x21')](function(_0x52442d){return _0x52442d;});}return null;};}function removeEntity(_0x308f35,_0x13e3b7){return function(_0x4b6948){if(_0x4b6948){return _0x4b6948[_0xc8c6('0x22')]()[_0xc8c6('0x21')](function(){_0x308f35['status'](0xcc)[_0xc8c6('0x18')]();});}};}function handleEntityNotFound(_0x18bbe6,_0x405cea){return function(_0x56033b){if(!_0x56033b){_0x18bbe6[_0xc8c6('0x16')](0x194);}return _0x56033b;};}function handleError(_0x22f6e6,_0x28d8ca){_0x28d8ca=_0x28d8ca||0x1f4;return function(_0x148568){logger['error'](_0x148568[_0xc8c6('0x23')]);if(_0x148568[_0xc8c6('0x24')]){delete _0x148568[_0xc8c6('0x24')];}_0x22f6e6[_0xc8c6('0x17')](_0x28d8ca)[_0xc8c6('0x25')](_0x148568);};}exports['index']=function(_0xc6dde3,_0xeaa4ee){var _0x5830d2={},_0x126a9d={},_0x5a215a={'count':0x0,'rows':[]};var _0xe5b410=_['map'](db[_0xc8c6('0x26')][_0xc8c6('0x27')],function(_0x2a9012){return{'name':_0x2a9012[_0xc8c6('0x28')],'type':_0x2a9012[_0xc8c6('0x29')][_0xc8c6('0x2a')]};});_0x126a9d[_0xc8c6('0x2b')]=_['map'](_0xe5b410,_0xc8c6('0x24'));_0x126a9d['query']=_[_0xc8c6('0x2c')](_0xc6dde3[_0xc8c6('0x2d')]);_0x126a9d[_0xc8c6('0x2e')]=_[_0xc8c6('0x2f')](_0x126a9d['model'],_0x126a9d[_0xc8c6('0x2d')]);_0x5830d2[_0xc8c6('0x30')]=_['intersection'](_0x126a9d['model'],qs[_0xc8c6('0x31')](_0xc6dde3['query'][_0xc8c6('0x31')]));_0x5830d2[_0xc8c6('0x30')]=_0x5830d2[_0xc8c6('0x30')][_0xc8c6('0x32')]?_0x5830d2[_0xc8c6('0x30')]:_0x126a9d[_0xc8c6('0x2b')];if(!_0xc6dde3[_0xc8c6('0x2d')][_0xc8c6('0x33')](_0xc8c6('0x34'))){_0x5830d2['limit']=qs[_0xc8c6('0x1d')](_0xc6dde3['query'][_0xc8c6('0x1d')]);_0x5830d2[_0xc8c6('0x1a')]=qs[_0xc8c6('0x1a')](_0xc6dde3[_0xc8c6('0x2d')][_0xc8c6('0x1a')]);}_0x5830d2[_0xc8c6('0x35')]=qs[_0xc8c6('0x36')](_0xc6dde3[_0xc8c6('0x2d')][_0xc8c6('0x36')]);_0x5830d2[_0xc8c6('0x37')]=qs[_0xc8c6('0x2e')](_[_0xc8c6('0x38')](_0xc6dde3[_0xc8c6('0x2d')],_0x126a9d[_0xc8c6('0x2e')]),_0xe5b410);if(_0xc6dde3[_0xc8c6('0x2d')][_0xc8c6('0x39')]){_0x5830d2[_0xc8c6('0x37')]=_[_0xc8c6('0x3a')](_0x5830d2[_0xc8c6('0x37')],{'$or':_['map'](_0xe5b410,function(_0xb3f7b3){if(_0xb3f7b3[_0xc8c6('0x29')]!=='VIRTUAL'){var _0x2e1d10={};_0x2e1d10[_0xb3f7b3[_0xc8c6('0x24')]]={'$like':'%'+_0xc6dde3[_0xc8c6('0x2d')]['filter']+'%'};return _0x2e1d10;}})});}_0x5830d2=_[_0xc8c6('0x3a')]({},_0x5830d2,_0xc6dde3[_0xc8c6('0x3b')]);var _0x2029f8={'where':_0x5830d2['where']};return db[_0xc8c6('0x26')][_0xc8c6('0x1c')](_0x2029f8)['then'](function(_0x576146){_0x5a215a['count']=_0x576146;if(_0xc6dde3[_0xc8c6('0x2d')][_0xc8c6('0x3c')]){_0x5830d2[_0xc8c6('0x3d')]=[{'all':!![]}];}return db[_0xc8c6('0x26')][_0xc8c6('0x3e')](_0x5830d2);})[_0xc8c6('0x21')](function(_0x1b56bd){_0x5a215a[_0xc8c6('0x3f')]=_0x1b56bd;return _0x5a215a;})['then'](respondWithFilteredResult(_0xeaa4ee,_0x5830d2))[_0xc8c6('0x40')](handleError(_0xeaa4ee,null));};exports[_0xc8c6('0x41')]=function(_0x45efc8,_0x45ce13){var _0x181e32={'raw':!![],'where':{'id':_0x45efc8[_0xc8c6('0x42')]['id']}},_0x2da23c={};_0x2da23c['model']=_[_0xc8c6('0x2c')](db[_0xc8c6('0x26')]['rawAttributes']);_0x2da23c[_0xc8c6('0x2d')]=_[_0xc8c6('0x2c')](_0x45efc8[_0xc8c6('0x2d')]);_0x2da23c[_0xc8c6('0x2e')]=_['intersection'](_0x2da23c[_0xc8c6('0x2b')],_0x2da23c[_0xc8c6('0x2d')]);_0x181e32[_0xc8c6('0x30')]=_[_0xc8c6('0x2f')](_0x2da23c[_0xc8c6('0x2b')],qs[_0xc8c6('0x31')](_0x45efc8[_0xc8c6('0x2d')]['fields']));_0x181e32['attributes']=_0x181e32[_0xc8c6('0x30')]['length']?_0x181e32[_0xc8c6('0x30')]:_0x2da23c[_0xc8c6('0x2b')];if(_0x45efc8[_0xc8c6('0x2d')][_0xc8c6('0x3c')]){_0x181e32[_0xc8c6('0x3d')]=[{'all':!![]}];}_0x181e32=_['merge']({},_0x181e32,_0x45efc8[_0xc8c6('0x3b')]);return db['SmsTransferReport']['find'](_0x181e32)[_0xc8c6('0x21')](handleEntityNotFound(_0x45ce13,null))[_0xc8c6('0x21')](respondWithResult(_0x45ce13,null))[_0xc8c6('0x40')](handleError(_0x45ce13,null));};exports[_0xc8c6('0x43')]=function(_0x538d93,_0x2447a0){return db['SmsTransferReport'][_0xc8c6('0x43')](_0x538d93[_0xc8c6('0x44')],{})['then'](respondWithResult(_0x2447a0,0xc9))[_0xc8c6('0x40')](handleError(_0x2447a0,null));};exports[_0xc8c6('0x45')]=function(_0x2c1653,_0x14828f){if(_0x2c1653[_0xc8c6('0x44')]['id']){delete _0x2c1653['body']['id'];}return db[_0xc8c6('0x26')]['find']({'where':{'id':_0x2c1653[_0xc8c6('0x42')]['id']}})[_0xc8c6('0x21')](handleEntityNotFound(_0x14828f,null))['then'](saveUpdates(_0x2c1653['body'],null))[_0xc8c6('0x21')](respondWithResult(_0x14828f,null))['catch'](handleError(_0x14828f,null));};exports['destroy']=function(_0x3aeeeb,_0x184ac2){return db['SmsTransferReport'][_0xc8c6('0x46')]({'where':{'id':_0x3aeeeb['params']['id']}})['then'](handleEntityNotFound(_0x184ac2,null))[_0xc8c6('0x21')](removeEntity(_0x184ac2,null))[_0xc8c6('0x40')](handleError(_0x184ac2,null));};exports['describe']=function(_0x296a5c,_0xaf140){return db['SmsTransferReport'][_0xc8c6('0x47')]()[_0xc8c6('0x21')](respondWithResult(_0xaf140,null))[_0xc8c6('0x40')](handleError(_0xaf140,null));};
\ No newline at end of file
+var _0xce82=['destroy','sendStatus','error','stack','name','send','map','rawAttributes','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','include','SmsTransferReport','findAll','rows','catch','show','includeAll','find','create','body','params','describe','eml-format','moment','mustache','util','sox','to-csv','ejs','fs-extra','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','limit','count','set','apply','reject','save','update','then'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xce82,0x1cc));var _0x2ce8=function(_0x56d6af,_0x1d689){_0x56d6af=_0x56d6af-0x0;var _0x57d03f=_0xce82[_0x56d6af];return _0x57d03f;};'use strict';var emlformat=require(_0x2ce8('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x2ce8('0x1'));var BPromise=require('bluebird');var Mustache=require(_0x2ce8('0x2'));var util=require(_0x2ce8('0x3'));var path=require('path');var sox=require(_0x2ce8('0x4'));var csv=require(_0x2ce8('0x5'));var ejs=require(_0x2ce8('0x6'));var fs=require('fs');var fs_extra=require(_0x2ce8('0x7'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x2ce8('0x8'));var jsforce=require(_0x2ce8('0x9'));var deskjs=require('desk.js');var toCsv=require(_0x2ce8('0x5'));var querystring=require('querystring');var Papa=require(_0x2ce8('0xa'));var Redis=require('ioredis');var authService=require(_0x2ce8('0xb'));var qs=require(_0x2ce8('0xc'));var as=require(_0x2ce8('0xd'));var hardwareService=require(_0x2ce8('0xe'));var logger=require(_0x2ce8('0xf'))('api');var utils=require('../../config/utils');var config=require(_0x2ce8('0x10'));var licenseUtil=require(_0x2ce8('0x11'));var db=require(_0x2ce8('0x12'))['db'];function respondWithStatusCode(_0x3d0681,_0x43ba19){_0x43ba19=_0x43ba19||0xcc;return function(_0x59edb4){if(_0x59edb4){return _0x3d0681['sendStatus'](_0x43ba19);}return _0x3d0681[_0x2ce8('0x13')](_0x43ba19)['end']();};}function respondWithResult(_0x10382e,_0x3673cf){_0x3673cf=_0x3673cf||0xc8;return function(_0x4c0dcf){if(_0x4c0dcf){return _0x10382e[_0x2ce8('0x13')](_0x3673cf)['json'](_0x4c0dcf);}};}function respondWithFilteredResult(_0x5ad46b,_0x342328){return function(_0xfc1e7b){if(_0xfc1e7b){var _0x395d9d=typeof _0x342328[_0x2ce8('0x14')]===_0x2ce8('0x15')&&typeof _0x342328[_0x2ce8('0x16')]==='undefined';var _0x124e3e=_0xfc1e7b[_0x2ce8('0x17')];var _0x5eff19=_0x395d9d?0x0:_0x342328['offset'];var _0x59b7a9=_0x395d9d?_0xfc1e7b[_0x2ce8('0x17')]:_0x342328['offset']+_0x342328[_0x2ce8('0x16')];var _0x5dfcb5;if(_0x59b7a9>=_0x124e3e){_0x59b7a9=_0x124e3e;_0x5dfcb5=0xc8;}else{_0x5dfcb5=0xce;}_0x5ad46b[_0x2ce8('0x13')](_0x5dfcb5);return _0x5ad46b[_0x2ce8('0x18')]('Content-Range',_0x5eff19+'-'+_0x59b7a9+'/'+_0x124e3e)['json'](_0xfc1e7b);}return null;};}function patchUpdates(_0xb8ed7e){return function(_0x9c53c7){try{jsonpatch[_0x2ce8('0x19')](_0x9c53c7,_0xb8ed7e,!![]);}catch(_0x38de52){return BPromise[_0x2ce8('0x1a')](_0x38de52);}return _0x9c53c7[_0x2ce8('0x1b')]();};}function saveUpdates(_0x44cb9f,_0x5d3f94){return function(_0x12acc0){if(_0x12acc0){return _0x12acc0[_0x2ce8('0x1c')](_0x44cb9f)[_0x2ce8('0x1d')](function(_0x4b04ce){return _0x4b04ce;});}return null;};}function removeEntity(_0xa170b,_0x46209f){return function(_0x4da3cc){if(_0x4da3cc){return _0x4da3cc[_0x2ce8('0x1e')]()[_0x2ce8('0x1d')](function(){_0xa170b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x38e399,_0x23acbf){return function(_0x4296c4){if(!_0x4296c4){_0x38e399[_0x2ce8('0x1f')](0x194);}return _0x4296c4;};}function handleError(_0xc2cbd5,_0x11c188){_0x11c188=_0x11c188||0x1f4;return function(_0x29abf6){logger[_0x2ce8('0x20')](_0x29abf6[_0x2ce8('0x21')]);if(_0x29abf6[_0x2ce8('0x22')]){delete _0x29abf6[_0x2ce8('0x22')];}_0xc2cbd5[_0x2ce8('0x13')](_0x11c188)[_0x2ce8('0x23')](_0x29abf6);};}exports['index']=function(_0x13587c,_0x151caa){var _0x25b877={},_0xd406b2={},_0x3ec891={'count':0x0,'rows':[]};var _0xc98cf0=_[_0x2ce8('0x24')](db['SmsTransferReport'][_0x2ce8('0x25')],function(_0x1d2eca){return{'name':_0x1d2eca[_0x2ce8('0x26')],'type':_0x1d2eca[_0x2ce8('0x27')][_0x2ce8('0x28')]};});_0xd406b2['model']=_[_0x2ce8('0x24')](_0xc98cf0,_0x2ce8('0x22'));_0xd406b2[_0x2ce8('0x29')]=_[_0x2ce8('0x2a')](_0x13587c['query']);_0xd406b2[_0x2ce8('0x2b')]=_['intersection'](_0xd406b2[_0x2ce8('0x2c')],_0xd406b2[_0x2ce8('0x29')]);_0x25b877[_0x2ce8('0x2d')]=_[_0x2ce8('0x2e')](_0xd406b2[_0x2ce8('0x2c')],qs[_0x2ce8('0x2f')](_0x13587c[_0x2ce8('0x29')]['fields']));_0x25b877[_0x2ce8('0x2d')]=_0x25b877[_0x2ce8('0x2d')][_0x2ce8('0x30')]?_0x25b877[_0x2ce8('0x2d')]:_0xd406b2[_0x2ce8('0x2c')];if(!_0x13587c[_0x2ce8('0x29')]['hasOwnProperty'](_0x2ce8('0x31'))){_0x25b877[_0x2ce8('0x16')]=qs[_0x2ce8('0x16')](_0x13587c[_0x2ce8('0x29')][_0x2ce8('0x16')]);_0x25b877[_0x2ce8('0x14')]=qs['offset'](_0x13587c[_0x2ce8('0x29')][_0x2ce8('0x14')]);}_0x25b877[_0x2ce8('0x32')]=qs[_0x2ce8('0x33')](_0x13587c[_0x2ce8('0x29')][_0x2ce8('0x33')]);_0x25b877[_0x2ce8('0x34')]=qs[_0x2ce8('0x2b')](_[_0x2ce8('0x35')](_0x13587c['query'],_0xd406b2[_0x2ce8('0x2b')]),_0xc98cf0);if(_0x13587c[_0x2ce8('0x29')][_0x2ce8('0x36')]){_0x25b877[_0x2ce8('0x34')]=_['merge'](_0x25b877[_0x2ce8('0x34')],{'$or':_[_0x2ce8('0x24')](_0xc98cf0,function(_0x9fb1a6){if(_0x9fb1a6[_0x2ce8('0x27')]!==_0x2ce8('0x37')){var _0x3c1c6a={};_0x3c1c6a[_0x9fb1a6['name']]={'$like':'%'+_0x13587c[_0x2ce8('0x29')][_0x2ce8('0x36')]+'%'};return _0x3c1c6a;}})});}_0x25b877=_[_0x2ce8('0x38')]({},_0x25b877,_0x13587c[_0x2ce8('0x39')]);var _0x1e7f52={'where':_0x25b877[_0x2ce8('0x34')]};return db['SmsTransferReport'][_0x2ce8('0x17')](_0x1e7f52)[_0x2ce8('0x1d')](function(_0x55f0f6){_0x3ec891[_0x2ce8('0x17')]=_0x55f0f6;if(_0x13587c[_0x2ce8('0x29')]['includeAll']){_0x25b877[_0x2ce8('0x3a')]=[{'all':!![]}];}return db[_0x2ce8('0x3b')][_0x2ce8('0x3c')](_0x25b877);})[_0x2ce8('0x1d')](function(_0x37af60){_0x3ec891[_0x2ce8('0x3d')]=_0x37af60;return _0x3ec891;})['then'](respondWithFilteredResult(_0x151caa,_0x25b877))[_0x2ce8('0x3e')](handleError(_0x151caa,null));};exports[_0x2ce8('0x3f')]=function(_0x591b75,_0x417cdf){var _0x2efa08={'raw':!![],'where':{'id':_0x591b75['params']['id']}},_0x43df87={};_0x43df87[_0x2ce8('0x2c')]=_['keys'](db[_0x2ce8('0x3b')][_0x2ce8('0x25')]);_0x43df87[_0x2ce8('0x29')]=_['keys'](_0x591b75['query']);_0x43df87[_0x2ce8('0x2b')]=_[_0x2ce8('0x2e')](_0x43df87[_0x2ce8('0x2c')],_0x43df87['query']);_0x2efa08[_0x2ce8('0x2d')]=_[_0x2ce8('0x2e')](_0x43df87[_0x2ce8('0x2c')],qs[_0x2ce8('0x2f')](_0x591b75[_0x2ce8('0x29')][_0x2ce8('0x2f')]));_0x2efa08[_0x2ce8('0x2d')]=_0x2efa08[_0x2ce8('0x2d')]['length']?_0x2efa08[_0x2ce8('0x2d')]:_0x43df87[_0x2ce8('0x2c')];if(_0x591b75[_0x2ce8('0x29')][_0x2ce8('0x40')]){_0x2efa08['include']=[{'all':!![]}];}_0x2efa08=_[_0x2ce8('0x38')]({},_0x2efa08,_0x591b75['options']);return db[_0x2ce8('0x3b')][_0x2ce8('0x41')](_0x2efa08)['then'](handleEntityNotFound(_0x417cdf,null))[_0x2ce8('0x1d')](respondWithResult(_0x417cdf,null))[_0x2ce8('0x3e')](handleError(_0x417cdf,null));};exports[_0x2ce8('0x42')]=function(_0x2edc4c,_0xc3cf22){return db[_0x2ce8('0x3b')][_0x2ce8('0x42')](_0x2edc4c[_0x2ce8('0x43')],{})['then'](respondWithResult(_0xc3cf22,0xc9))[_0x2ce8('0x3e')](handleError(_0xc3cf22,null));};exports[_0x2ce8('0x1c')]=function(_0xcc63c,_0x4c055c){if(_0xcc63c[_0x2ce8('0x43')]['id']){delete _0xcc63c[_0x2ce8('0x43')]['id'];}return db[_0x2ce8('0x3b')][_0x2ce8('0x41')]({'where':{'id':_0xcc63c[_0x2ce8('0x44')]['id']}})[_0x2ce8('0x1d')](handleEntityNotFound(_0x4c055c,null))[_0x2ce8('0x1d')](saveUpdates(_0xcc63c[_0x2ce8('0x43')],null))['then'](respondWithResult(_0x4c055c,null))[_0x2ce8('0x3e')](handleError(_0x4c055c,null));};exports['destroy']=function(_0x5e65b7,_0x4ed5bc){return db[_0x2ce8('0x3b')]['find']({'where':{'id':_0x5e65b7[_0x2ce8('0x44')]['id']}})[_0x2ce8('0x1d')](handleEntityNotFound(_0x4ed5bc,null))['then'](removeEntity(_0x4ed5bc,null))[_0x2ce8('0x3e')](handleError(_0x4ed5bc,null));};exports[_0x2ce8('0x45')]=function(_0x554d71,_0x331383){return db['SmsTransferReport'][_0x2ce8('0x45')]()[_0x2ce8('0x1d')](respondWithResult(_0x331383,null))[_0x2ce8('0x3e')](handleError(_0x331383,null));};
\ No newline at end of file
index f5fd9bf..511b61e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20ad=['../../config/environment','./smsTransferReport.attributes','exports','SmsTransferReport','report_sms_transfer','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x3bd568,_0x3d69ab){var _0x2ddf0b=function(_0x21c05e){while(--_0x21c05e){_0x3bd568['push'](_0x3bd568['shift']());}};_0x2ddf0b(++_0x3d69ab);}(_0x20ad,0x13a));var _0xd20a=function(_0x3e112d,_0x2bb132){_0x3e112d=_0x3e112d-0x0;var _0x531c31=_0x20ad[_0x3e112d];return _0x531c31;};'use strict';var _=require(_0xd20a('0x0'));var util=require(_0xd20a('0x1'));var logger=require(_0xd20a('0x2'))(_0xd20a('0x3'));var moment=require('moment');var BPromise=require(_0xd20a('0x4'));var rp=require(_0xd20a('0x5'));var fs=require('fs');var path=require(_0xd20a('0x6'));var rimraf=require(_0xd20a('0x7'));var config=require(_0xd20a('0x8'));var attributes=require(_0xd20a('0x9'));module[_0xd20a('0xa')]=function(_0x26be33,_0x1c71e){return _0x26be33['define'](_0xd20a('0xb'),attributes,{'tableName':_0xd20a('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xd20a('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4119=['define','SmsTransferReport','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./smsTransferReport.attributes','exports'];(function(_0x8e2397,_0x3cbb39){var _0x376ee0=function(_0x2b5117){while(--_0x2b5117){_0x8e2397['push'](_0x8e2397['shift']());}};_0x376ee0(++_0x3cbb39);}(_0x4119,0xfa));var _0x9411=function(_0x18cd5b,_0x10240b){_0x18cd5b=_0x18cd5b-0x0;var _0x5eaa52=_0x4119[_0x18cd5b];return _0x5eaa52;};'use strict';var _=require(_0x9411('0x0'));var util=require(_0x9411('0x1'));var logger=require(_0x9411('0x2'))(_0x9411('0x3'));var moment=require(_0x9411('0x4'));var BPromise=require(_0x9411('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9411('0x6'));var rimraf=require(_0x9411('0x7'));var config=require('../../config/environment');var attributes=require(_0x9411('0x8'));module[_0x9411('0x9')]=function(_0x2283c8,_0x1bd226){return _0x2283c8[_0x9411('0xa')](_0x9411('0xb'),attributes,{'tableName':'report_sms_transfer','paranoid':![],'indexes':[{'name':_0x9411('0xc'),'fields':[_0x9411('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index f597317..a15c8d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28e3=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','SmsTransferReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util'];(function(_0x247fa1,_0x4ec37c){var _0x244f35=function(_0xfb98be){while(--_0xfb98be){_0x247fa1['push'](_0x247fa1['shift']());}};_0x244f35(++_0x4ec37c);}(_0x28e3,0x106));var _0x328e=function(_0x55ff3e,_0x41077f){_0x55ff3e=_0x55ff3e-0x0;var _0x2709eb=_0x28e3[_0x55ff3e];return _0x2709eb;};'use strict';var _=require(_0x328e('0x0'));var util=require(_0x328e('0x1'));var moment=require(_0x328e('0x2'));var BPromise=require(_0x328e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x328e('0x4'));var db=require(_0x328e('0x5'))['db'];var utils=require(_0x328e('0x6'));var logger=require(_0x328e('0x7'))(_0x328e('0x8'));var config=require(_0x328e('0x9'));var jayson=require(_0x328e('0xa'));var client=jayson[_0x328e('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4b5c91,_0x58885f,_0x2bddaa){return new BPromise(function(_0x3696b6,_0x3467ee){return client[_0x328e('0xc')](_0x4b5c91,_0x2bddaa)[_0x328e('0xd')](function(_0x4a4f53){logger[_0x328e('0xe')](_0x328e('0xf'),_0x58885f,_0x328e('0x10'));logger['debug']('SmsTransferReport,\x20%s,\x20%s,\x20%s',_0x58885f,'request\x20sent',JSON[_0x328e('0x11')](_0x4a4f53));if(_0x4a4f53[_0x328e('0x12')]){if(_0x4a4f53[_0x328e('0x12')][_0x328e('0x13')]===0x1f4){logger[_0x328e('0x12')](_0x328e('0xf'),_0x58885f,_0x4a4f53[_0x328e('0x12')][_0x328e('0x14')]);return _0x3467ee(_0x4a4f53[_0x328e('0x12')][_0x328e('0x14')]);}logger[_0x328e('0x12')]('SmsTransferReport,\x20%s,\x20%s',_0x58885f,_0x4a4f53[_0x328e('0x12')][_0x328e('0x14')]);return _0x3696b6(_0x4a4f53[_0x328e('0x12')][_0x328e('0x14')]);}else{logger[_0x328e('0xe')](_0x328e('0xf'),_0x58885f,_0x328e('0x10'));_0x3696b6(_0x4a4f53[_0x328e('0x15')][_0x328e('0x14')]);}})['catch'](function(_0x1fdb79){logger[_0x328e('0x12')](_0x328e('0xf'),_0x58885f,_0x1fdb79);_0x3467ee(_0x1fdb79);});});}
\ No newline at end of file
+var _0xf1e1=['error','code','message','result','catch','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x1b44ec,_0x1f9dfa){var _0x3e6f28=function(_0x2cc4f7){while(--_0x2cc4f7){_0x1b44ec['push'](_0x1b44ec['shift']());}};_0x3e6f28(++_0x1f9dfa);}(_0xf1e1,0x102));var _0x1f1e=function(_0x96b6a,_0x12471d){_0x96b6a=_0x96b6a-0x0;var _0x3e16f3=_0xf1e1[_0x96b6a];return _0x3e16f3;};'use strict';var _=require(_0x1f1e('0x0'));var util=require('util');var moment=require(_0x1f1e('0x1'));var BPromise=require('bluebird');var rs=require(_0x1f1e('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1f1e('0x3'))['db'];var utils=require(_0x1f1e('0x4'));var logger=require(_0x1f1e('0x5'))(_0x1f1e('0x6'));var config=require(_0x1f1e('0x7'));var jayson=require(_0x1f1e('0x8'));var client=jayson[_0x1f1e('0x9')][_0x1f1e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1db643,_0x38585e,_0x46e32b){return new BPromise(function(_0x3699d2,_0x6ab45b){return client[_0x1f1e('0xb')](_0x1db643,_0x46e32b)['then'](function(_0x44e626){logger[_0x1f1e('0xc')](_0x1f1e('0xd'),_0x38585e,_0x1f1e('0xe'));logger[_0x1f1e('0xf')](_0x1f1e('0x10'),_0x38585e,_0x1f1e('0xe'),JSON[_0x1f1e('0x11')](_0x44e626));if(_0x44e626[_0x1f1e('0x12')]){if(_0x44e626['error'][_0x1f1e('0x13')]===0x1f4){logger[_0x1f1e('0x12')](_0x1f1e('0xd'),_0x38585e,_0x44e626[_0x1f1e('0x12')][_0x1f1e('0x14')]);return _0x6ab45b(_0x44e626[_0x1f1e('0x12')][_0x1f1e('0x14')]);}logger['error'](_0x1f1e('0xd'),_0x38585e,_0x44e626[_0x1f1e('0x12')]['message']);return _0x3699d2(_0x44e626[_0x1f1e('0x12')][_0x1f1e('0x14')]);}else{logger['info'](_0x1f1e('0xd'),_0x38585e,_0x1f1e('0xe'));_0x3699d2(_0x44e626[_0x1f1e('0x15')][_0x1f1e('0x14')]);}})[_0x1f1e('0x16')](function(_0x3f978f){logger[_0x1f1e('0x12')](_0x1f1e('0xd'),_0x38585e,_0x3f978f);_0x6ab45b(_0x3f978f);});});}
\ No newline at end of file
index 85ce641..847e7aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcef9=['diskStorage','root','originalname','format','%s-%s%s','basename','extname','post','single','put','update','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./sound.controller','get','isAuthenticated','index','/:id','/:id/download','download'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xcef9,0x99));var _0x9cef=function(_0x3f20a6,_0x317037){_0x3f20a6=_0x3f20a6-0x0;var _0x5ac1a2=_0xcef9[_0x3f20a6];return _0x5ac1a2;};'use strict';var multer=require(_0x9cef('0x0'));var util=require(_0x9cef('0x1'));var path=require(_0x9cef('0x2'));var timeout=require(_0x9cef('0x3'));var express=require(_0x9cef('0x4'));var router=express['Router']();var fs_extra=require(_0x9cef('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x9cef('0x6'));var config=require(_0x9cef('0x7'));var controller=require(_0x9cef('0x8'));router[_0x9cef('0x9')]('/',auth[_0x9cef('0xa')](),controller[_0x9cef('0xb')]);router[_0x9cef('0x9')](_0x9cef('0xc'),auth[_0x9cef('0xa')](),controller['show']);router['get'](_0x9cef('0xd'),auth[_0x9cef('0xa')](),controller[_0x9cef('0xe')]);var upload=multer({'storage':multer[_0x9cef('0xf')]({'destination':function(_0x18ef50,_0x575216,_0x2ac0f0){_0x2ac0f0(null,path['join'](config[_0x9cef('0x10')],'server/files/sounds/original/'));},'filename':function(_0x257bb2,_0x1e438a,_0x168b96){_0x1e438a[_0x9cef('0x11')]=_0x1e438a[_0x9cef('0x11')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x168b96(null,util[_0x9cef('0x12')](_0x9cef('0x13'),path[_0x9cef('0x14')](_0x1e438a['originalname'],path[_0x9cef('0x15')](_0x1e438a[_0x9cef('0x11')])),Date['now'](),path['extname'](_0x1e438a[_0x9cef('0x11')])));}})});router[_0x9cef('0x16')]('/',upload[_0x9cef('0x17')]('file'),controller['create']);router[_0x9cef('0x18')](_0x9cef('0xc'),auth['isAuthenticated'](),controller[_0x9cef('0x19')]);router['delete'](_0x9cef('0xc'),auth['isAuthenticated'](),controller[_0x9cef('0x1a')]);module[_0x9cef('0x1b')]=router;
\ No newline at end of file
+var _0xfe01=['put','update','/:id','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./sound.controller','get','index','isAuthenticated','/:id/download','download','diskStorage','root','server/files/sounds/original/','originalname','replace','%s-%s%s','basename','now','extname','post','single','create'];(function(_0x260fab,_0x32d487){var _0x26d0e9=function(_0x15290e){while(--_0x15290e){_0x260fab['push'](_0x260fab['shift']());}};_0x26d0e9(++_0x32d487);}(_0xfe01,0x125));var _0x1fe0=function(_0x5c257e,_0x17e018){_0x5c257e=_0x5c257e-0x0;var _0x20cbd5=_0xfe01[_0x5c257e];return _0x20cbd5;};'use strict';var multer=require(_0x1fe0('0x0'));var util=require('util');var path=require(_0x1fe0('0x1'));var timeout=require(_0x1fe0('0x2'));var express=require(_0x1fe0('0x3'));var router=express[_0x1fe0('0x4')]();var fs_extra=require(_0x1fe0('0x5'));var auth=require(_0x1fe0('0x6'));var interaction=require(_0x1fe0('0x7'));var config=require(_0x1fe0('0x8'));var controller=require(_0x1fe0('0x9'));router[_0x1fe0('0xa')]('/',auth['isAuthenticated'](),controller[_0x1fe0('0xb')]);router['get']('/:id',auth[_0x1fe0('0xc')](),controller['show']);router[_0x1fe0('0xa')](_0x1fe0('0xd'),auth[_0x1fe0('0xc')](),controller[_0x1fe0('0xe')]);var upload=multer({'storage':multer[_0x1fe0('0xf')]({'destination':function(_0x58aeb9,_0x14eaf5,_0x56fd4e){_0x56fd4e(null,path['join'](config[_0x1fe0('0x10')],_0x1fe0('0x11')));},'filename':function(_0x31038e,_0x218669,_0x41098e){_0x218669[_0x1fe0('0x12')]=_0x218669[_0x1fe0('0x12')][_0x1fe0('0x13')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x41098e(null,util['format'](_0x1fe0('0x14'),path[_0x1fe0('0x15')](_0x218669[_0x1fe0('0x12')],path['extname'](_0x218669['originalname'])),Date[_0x1fe0('0x16')](),path[_0x1fe0('0x17')](_0x218669[_0x1fe0('0x12')])));}})});router[_0x1fe0('0x18')]('/',upload[_0x1fe0('0x19')]('file'),controller[_0x1fe0('0x1a')]);router[_0x1fe0('0x1b')]('/:id',auth[_0x1fe0('0xc')](),controller[_0x1fe0('0x1c')]);router['delete'](_0x1fe0('0x1d'),auth[_0x1fe0('0xc')](),controller[_0x1fe0('0x1e')]);module[_0x1fe0('0x1f')]=router;
\ No newline at end of file
index 6be504f..2fd051d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5039=['INTEGER','FLOAT','exports','STRING','BIGINT'];(function(_0x35f82e,_0x4c64f6){var _0x4f8fe5=function(_0x52911b){while(--_0x52911b){_0x35f82e['push'](_0x35f82e['shift']());}};_0x4f8fe5(++_0x4c64f6);}(_0x5039,0xf2));var _0x9503=function(_0x3acee8,_0x5f3924){_0x3acee8=_0x3acee8-0x0;var _0x5046cc=_0x5039[_0x3acee8];return _0x5046cc;};'use strict';var Sequelize=require('sequelize');module[_0x9503('0x0')]={'name':{'type':Sequelize[_0x9503('0x1')],'unique':'name','allowNull':![]},'save_name':{'type':Sequelize[_0x9503('0x1')]},'display_name':{'type':Sequelize[_0x9503('0x1')],'defaultValue':''},'description':{'type':Sequelize[_0x9503('0x1')]},'original_format':{'type':Sequelize['STRING']},'original_duration':{'type':Sequelize['FLOAT']},'original_sampleCount':{'type':Sequelize[_0x9503('0x2')]},'original_channelCount':{'type':Sequelize[_0x9503('0x3')]},'original_bitRate':{'type':Sequelize[_0x9503('0x2')]},'original_sampleRate':{'type':Sequelize[_0x9503('0x3')]},'converted_format':{'type':Sequelize[_0x9503('0x1')]},'converted_duration':{'type':Sequelize[_0x9503('0x4')]},'converted_sampleCount':{'type':Sequelize[_0x9503('0x2')]},'converted_channelCount':{'type':Sequelize[_0x9503('0x3')]},'converted_bitRate':{'type':Sequelize['BIGINT']},'converted_sampleRate':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xfe55=['BIGINT','INTEGER','exports','STRING','FLOAT'];(function(_0x121c6f,_0x35c1c0){var _0x26f815=function(_0x2790e4){while(--_0x2790e4){_0x121c6f['push'](_0x121c6f['shift']());}};_0x26f815(++_0x35c1c0);}(_0xfe55,0x9d));var _0x5fe5=function(_0x11ce46,_0x177a85){_0x11ce46=_0x11ce46-0x0;var _0x368a1e=_0xfe55[_0x11ce46];return _0x368a1e;};'use strict';var Sequelize=require('sequelize');module[_0x5fe5('0x0')]={'name':{'type':Sequelize[_0x5fe5('0x1')],'unique':'name','allowNull':![]},'save_name':{'type':Sequelize['STRING']},'display_name':{'type':Sequelize[_0x5fe5('0x1')],'defaultValue':''},'description':{'type':Sequelize[_0x5fe5('0x1')]},'original_format':{'type':Sequelize[_0x5fe5('0x1')]},'original_duration':{'type':Sequelize[_0x5fe5('0x2')]},'original_sampleCount':{'type':Sequelize[_0x5fe5('0x3')]},'original_channelCount':{'type':Sequelize[_0x5fe5('0x4')]},'original_bitRate':{'type':Sequelize['BIGINT']},'original_sampleRate':{'type':Sequelize[_0x5fe5('0x4')]},'converted_format':{'type':Sequelize[_0x5fe5('0x1')]},'converted_duration':{'type':Sequelize[_0x5fe5('0x2')]},'converted_sampleCount':{'type':Sequelize[_0x5fe5('0x3')]},'converted_channelCount':{'type':Sequelize[_0x5fe5('0x4')]},'converted_bitRate':{'type':Sequelize[_0x5fe5('0x3')]},'converted_sampleRate':{'type':Sequelize[_0x5fe5('0x4')]}};
\ No newline at end of file
index 49cb435..4db5527 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdf8=['server/files/sounds/converted','Sequelize','Sound\x20not\x20found','format','%s.%s','create','basename','file','extname','originalname','filename','wav','server/files/sounds/original','Sound\x20upload\x20filepath:\x20%s','info','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','unlinkSync','src','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_sampleCount','converted_bitRate','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','description','delete','original_format','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','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','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','get','Sounds','UserProfileResource','error','stack','name','send','index','map','Sound','fieldName','type','model','keys','query','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','download','find','save_name','converted_format','join','root'];(function(_0x484cb9,_0x103489){var _0x59517e=function(_0x2936bc){while(--_0x2936bc){_0x484cb9['push'](_0x484cb9['shift']());}};_0x59517e(++_0x103489);}(_0xcdf8,0x123));var _0x8cdf=function(_0x59c301,_0x359c50){_0x59c301=_0x59c301-0x0;var _0x3866b9=_0xcdf8[_0x59c301];return _0x3866b9;};'use strict';var emlformat=require(_0x8cdf('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8cdf('0x1'));var jsonpatch=require(_0x8cdf('0x2'));var rp=require(_0x8cdf('0x3'));var moment=require('moment');var BPromise=require(_0x8cdf('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x8cdf('0x5'));var sox=require(_0x8cdf('0x6'));var csv=require(_0x8cdf('0x7'));var ejs=require(_0x8cdf('0x8'));var fs=require('fs');var fs_extra=require(_0x8cdf('0x9'));var _=require(_0x8cdf('0xa'));var squel=require(_0x8cdf('0xb'));var crypto=require(_0x8cdf('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x8cdf('0xd'));var toCsv=require(_0x8cdf('0x7'));var querystring=require('querystring');var Papa=require(_0x8cdf('0xe'));var Redis=require(_0x8cdf('0xf'));var authService=require(_0x8cdf('0x10'));var qs=require(_0x8cdf('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8cdf('0x12'));var logger=require(_0x8cdf('0x13'))('api');var utils=require(_0x8cdf('0x14'));var config=require(_0x8cdf('0x15'));var licenseUtil=require(_0x8cdf('0x16'));var db=require(_0x8cdf('0x17'))['db'];function respondWithStatusCode(_0x3e7667,_0x1b23f1){_0x1b23f1=_0x1b23f1||0xcc;return function(_0x17d300){if(_0x17d300){return _0x3e7667[_0x8cdf('0x18')](_0x1b23f1);}return _0x3e7667[_0x8cdf('0x19')](_0x1b23f1)[_0x8cdf('0x1a')]();};}function respondWithResult(_0x40604d,_0x2e11a8){_0x2e11a8=_0x2e11a8||0xc8;return function(_0x352bcd){if(_0x352bcd){return _0x40604d[_0x8cdf('0x19')](_0x2e11a8)[_0x8cdf('0x1b')](_0x352bcd);}};}function respondWithFilteredResult(_0x38da64,_0x53d423){return function(_0x4ae692){if(_0x4ae692){var _0x571e5e=typeof _0x53d423[_0x8cdf('0x1c')]===_0x8cdf('0x1d')&&typeof _0x53d423[_0x8cdf('0x1e')]===_0x8cdf('0x1d');var _0x56a294=_0x4ae692['count'];var _0x1cac5d=_0x571e5e?0x0:_0x53d423[_0x8cdf('0x1c')];var _0x2eae76=_0x571e5e?_0x4ae692[_0x8cdf('0x1f')]:_0x53d423['offset']+_0x53d423[_0x8cdf('0x1e')];var _0x5dbb9c;if(_0x2eae76>=_0x56a294){_0x2eae76=_0x56a294;_0x5dbb9c=0xc8;}else{_0x5dbb9c=0xce;}_0x38da64[_0x8cdf('0x19')](_0x5dbb9c);return _0x38da64[_0x8cdf('0x20')](_0x8cdf('0x21'),_0x1cac5d+'-'+_0x2eae76+'/'+_0x56a294)[_0x8cdf('0x1b')](_0x4ae692);}return null;};}function patchUpdates(_0x519c1a){return function(_0x300405){try{jsonpatch[_0x8cdf('0x22')](_0x300405,_0x519c1a,!![]);}catch(_0x2bc7a2){return BPromise['reject'](_0x2bc7a2);}return _0x300405[_0x8cdf('0x23')]();};}function saveUpdates(_0xb6c0d,_0x4ae3ca){return function(_0x109fe5){if(_0x109fe5){return _0x109fe5[_0x8cdf('0x24')](_0xb6c0d)[_0x8cdf('0x25')](function(_0x50565f){return _0x50565f;});}return null;};}function removeEntity(_0x3010c6,_0x4f56b9){return function(_0x34cd84){if(_0x34cd84){return _0x34cd84[_0x8cdf('0x26')]()['then'](function(){var _0x206277=_0x34cd84[_0x8cdf('0x27')]({'plain':!![]});var _0x1bb7bc=_0x8cdf('0x28');return db[_0x8cdf('0x29')]['destroy']({'where':{'type':_0x1bb7bc,'resourceId':_0x206277['id']}})[_0x8cdf('0x25')](function(){return _0x34cd84;});})[_0x8cdf('0x25')](function(){_0x3010c6[_0x8cdf('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x905918,_0x1960fc){return function(_0x47f645){if(!_0x47f645){_0x905918[_0x8cdf('0x18')](0x194);}return _0x47f645;};}function handleError(_0x37d2b3,_0x4dd317){_0x4dd317=_0x4dd317||0x1f4;return function(_0x1f9a3c){logger[_0x8cdf('0x2a')](_0x1f9a3c[_0x8cdf('0x2b')]);if(_0x1f9a3c[_0x8cdf('0x2c')]){delete _0x1f9a3c[_0x8cdf('0x2c')];}_0x37d2b3[_0x8cdf('0x19')](_0x4dd317)[_0x8cdf('0x2d')](_0x1f9a3c);};}exports[_0x8cdf('0x2e')]=function(_0x37451c,_0x37feac){var _0x43ef25={},_0x2c13fa={},_0x2b0e24={'count':0x0,'rows':[]};var _0x54fba5=_[_0x8cdf('0x2f')](db[_0x8cdf('0x30')]['rawAttributes'],function(_0x526633){return{'name':_0x526633[_0x8cdf('0x31')],'type':_0x526633[_0x8cdf('0x32')]['key']};});_0x2c13fa[_0x8cdf('0x33')]=_[_0x8cdf('0x2f')](_0x54fba5,'name');_0x2c13fa['query']=_[_0x8cdf('0x34')](_0x37451c[_0x8cdf('0x35')]);_0x2c13fa[_0x8cdf('0x36')]=_[_0x8cdf('0x37')](_0x2c13fa[_0x8cdf('0x33')],_0x2c13fa['query']);_0x43ef25[_0x8cdf('0x38')]=_[_0x8cdf('0x37')](_0x2c13fa[_0x8cdf('0x33')],qs['fields'](_0x37451c[_0x8cdf('0x35')][_0x8cdf('0x39')]));_0x43ef25[_0x8cdf('0x38')]=_0x43ef25[_0x8cdf('0x38')]['length']?_0x43ef25[_0x8cdf('0x38')]:_0x2c13fa[_0x8cdf('0x33')];if(!_0x37451c['query']['hasOwnProperty'](_0x8cdf('0x3a'))){_0x43ef25[_0x8cdf('0x1e')]=qs[_0x8cdf('0x1e')](_0x37451c['query'][_0x8cdf('0x1e')]);_0x43ef25[_0x8cdf('0x1c')]=qs[_0x8cdf('0x1c')](_0x37451c[_0x8cdf('0x35')][_0x8cdf('0x1c')]);}_0x43ef25[_0x8cdf('0x3b')]=qs[_0x8cdf('0x3c')](_0x37451c['query']['sort']);_0x43ef25[_0x8cdf('0x3d')]=qs[_0x8cdf('0x36')](_[_0x8cdf('0x3e')](_0x37451c['query'],_0x2c13fa[_0x8cdf('0x36')]),_0x54fba5);if(_0x37451c['query'][_0x8cdf('0x3f')]){_0x43ef25[_0x8cdf('0x3d')]=_[_0x8cdf('0x40')](_0x43ef25['where'],{'$or':_[_0x8cdf('0x2f')](_0x54fba5,function(_0x445ab1){if(_0x445ab1['type']!==_0x8cdf('0x41')){var _0x478361={};_0x478361[_0x445ab1['name']]={'$like':'%'+_0x37451c[_0x8cdf('0x35')][_0x8cdf('0x3f')]+'%'};return _0x478361;}})});}_0x43ef25=_[_0x8cdf('0x40')]({},_0x43ef25,_0x37451c[_0x8cdf('0x42')]);var _0x1d72da={'where':_0x43ef25[_0x8cdf('0x3d')]};return db[_0x8cdf('0x30')]['count'](_0x1d72da)[_0x8cdf('0x25')](function(_0x44d36f){_0x2b0e24[_0x8cdf('0x1f')]=_0x44d36f;if(_0x37451c[_0x8cdf('0x35')][_0x8cdf('0x43')]){_0x43ef25[_0x8cdf('0x44')]=[{'all':!![]}];}return db[_0x8cdf('0x30')][_0x8cdf('0x45')](_0x43ef25);})['then'](function(_0x1c867c){_0x2b0e24[_0x8cdf('0x46')]=_0x1c867c;return _0x2b0e24;})[_0x8cdf('0x25')](respondWithFilteredResult(_0x37feac,_0x43ef25))[_0x8cdf('0x47')](handleError(_0x37feac,null));};exports[_0x8cdf('0x48')]=function(_0x49b56e,_0x3506e8){var _0x23ffad={'raw':!![],'where':{'id':_0x49b56e[_0x8cdf('0x49')]['id']}},_0x28252d={};_0x28252d['model']=_[_0x8cdf('0x34')](db[_0x8cdf('0x30')][_0x8cdf('0x4a')]);_0x28252d[_0x8cdf('0x35')]=_[_0x8cdf('0x34')](_0x49b56e[_0x8cdf('0x35')]);_0x28252d[_0x8cdf('0x36')]=_[_0x8cdf('0x37')](_0x28252d['model'],_0x28252d[_0x8cdf('0x35')]);_0x23ffad[_0x8cdf('0x38')]=_[_0x8cdf('0x37')](_0x28252d[_0x8cdf('0x33')],qs[_0x8cdf('0x39')](_0x49b56e['query']['fields']));_0x23ffad[_0x8cdf('0x38')]=_0x23ffad[_0x8cdf('0x38')]['length']?_0x23ffad['attributes']:_0x28252d[_0x8cdf('0x33')];if(_0x49b56e[_0x8cdf('0x35')]['includeAll']){_0x23ffad[_0x8cdf('0x44')]=[{'all':!![]}];}_0x23ffad=_[_0x8cdf('0x40')]({},_0x23ffad,_0x49b56e['options']);return db[_0x8cdf('0x30')]['find'](_0x23ffad)[_0x8cdf('0x25')](handleEntityNotFound(_0x3506e8,null))[_0x8cdf('0x25')](respondWithResult(_0x3506e8,null))[_0x8cdf('0x47')](handleError(_0x3506e8,null));};exports[_0x8cdf('0x4b')]=function(_0x568680,_0xa48f2e,_0x26c0d2){return db[_0x8cdf('0x30')][_0x8cdf('0x4c')]({'where':{'id':_0x568680['params']['id']},'attributes':['name',_0x8cdf('0x4d'),_0x8cdf('0x4e')],'raw':!![]})[_0x8cdf('0x25')](handleEntityNotFound(_0xa48f2e,null))[_0x8cdf('0x25')](function(_0x3c1110){if(_0x3c1110){if(!fs['existsSync'](path[_0x8cdf('0x4f')](config[_0x8cdf('0x50')],_0x8cdf('0x51'),_0x3c1110[_0x8cdf('0x4d')]+'.'+_0x3c1110[_0x8cdf('0x4e')]))){throw new db[(_0x8cdf('0x52'))]['ValidationError'](_0x8cdf('0x53'));}return _0xa48f2e[_0x8cdf('0x4b')](path[_0x8cdf('0x4f')](config[_0x8cdf('0x50')],_0x8cdf('0x51'),util[_0x8cdf('0x54')]('%s.%s',_0x3c1110[_0x8cdf('0x4d')],_0x3c1110[_0x8cdf('0x4e')])),util[_0x8cdf('0x54')](_0x8cdf('0x55'),_0x3c1110['name'],_0x3c1110[_0x8cdf('0x4e')]));}return null;})[_0x8cdf('0x47')](handleError(_0xa48f2e,null));};exports[_0x8cdf('0x56')]=function(_0x1ed6f6,_0x55ce34,_0x50ae5a){var _0x12d1d3={'name':path[_0x8cdf('0x57')](_0x1ed6f6[_0x8cdf('0x58')]['originalname'],path[_0x8cdf('0x59')](_0x1ed6f6[_0x8cdf('0x58')][_0x8cdf('0x5a')])),'save_name':path[_0x8cdf('0x57')](_0x1ed6f6[_0x8cdf('0x58')][_0x8cdf('0x5b')],path[_0x8cdf('0x59')](_0x1ed6f6[_0x8cdf('0x58')][_0x8cdf('0x5b')])),'original_format':path[_0x8cdf('0x59')](_0x1ed6f6[_0x8cdf('0x58')]['originalname'])['substring'](0x1),'converted_format':_0x8cdf('0x5c')};var _0x66dcad=path[_0x8cdf('0x4f')](config[_0x8cdf('0x50')],_0x8cdf('0x5d'),_0x1ed6f6[_0x8cdf('0x58')][_0x8cdf('0x5b')]);var _0x1ab6db=path['join'](config[_0x8cdf('0x50')],_0x8cdf('0x51'),util[_0x8cdf('0x54')](_0x8cdf('0x55'),path[_0x8cdf('0x57')](_0x1ed6f6[_0x8cdf('0x58')][_0x8cdf('0x5b')],path[_0x8cdf('0x59')](_0x1ed6f6[_0x8cdf('0x58')][_0x8cdf('0x5b')])),_0x12d1d3[_0x8cdf('0x4e')]));logger['info'](_0x8cdf('0x5e'),_0x66dcad);logger[_0x8cdf('0x5f')](_0x8cdf('0x60'),_0x1ab6db);try{fs[_0x8cdf('0x61')](_0x66dcad,parseInt(_0x8cdf('0x62'),0x8));var _0x25a513=sox['transcode'](_0x66dcad,_0x1ab6db,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x25a513['on'](_0x8cdf('0x2a'),function(_0x222e9f){fs[_0x8cdf('0x63')](_0x66dcad);_0x55ce34[_0x8cdf('0x19')](0x1f4)['send'](_0x222e9f);});_0x25a513['on'](_0x8cdf('0x64'),function(_0x1f4980){_0x12d1d3[_0x8cdf('0x65')]=isNaN(_0x1f4980['duration'])?null:_0x1f4980[_0x8cdf('0x66')]*0x3e8;_0x12d1d3[_0x8cdf('0x67')]=isNaN(_0x1f4980[_0x8cdf('0x68')])?null:_0x1f4980[_0x8cdf('0x68')];_0x12d1d3[_0x8cdf('0x69')]=isNaN(_0x1f4980[_0x8cdf('0x6a')])?null:_0x1f4980['channelCount'];_0x12d1d3[_0x8cdf('0x6b')]=isNaN(_0x1f4980[_0x8cdf('0x6c')])?null:_0x1f4980[_0x8cdf('0x6c')];_0x12d1d3[_0x8cdf('0x6d')]=isNaN(_0x1f4980[_0x8cdf('0x6e')])?null:_0x1f4980[_0x8cdf('0x6e')];});_0x25a513['on'](_0x8cdf('0x6f'),function(_0x2d7843){_0x12d1d3['converted_duration']=isNaN(_0x2d7843['duration'])?null:_0x2d7843[_0x8cdf('0x66')]*0x3e8;_0x12d1d3[_0x8cdf('0x70')]=isNaN(_0x2d7843['sampleCount'])?null:_0x2d7843['sampleCount'];_0x12d1d3['converted_channelCount']=isNaN(_0x2d7843[_0x8cdf('0x6a')])?null:_0x2d7843[_0x8cdf('0x6a')];_0x12d1d3[_0x8cdf('0x71')]=isNaN(_0x2d7843[_0x8cdf('0x6c')])?null:_0x2d7843[_0x8cdf('0x6c')];_0x12d1d3['converted_sampleRate']=isNaN(_0x2d7843[_0x8cdf('0x6e')])?null:_0x2d7843[_0x8cdf('0x6e')];});_0x25a513['on'](_0x8cdf('0x1a'),function(){fs['chmodSync'](_0x1ab6db,parseInt(_0x8cdf('0x62'),0x8));return db['Sound'][_0x8cdf('0x56')](_0x12d1d3)[_0x8cdf('0x25')](function(_0x5e73d7){var _0x5e9acf={'role':_0x1ed6f6[_0x8cdf('0x72')]['role'],'userProfileId':_0x1ed6f6[_0x8cdf('0x72')][_0x8cdf('0x73')]};if(!_0x5e9acf)throw new Error(_0x8cdf('0x74'));if(_0x5e9acf[_0x8cdf('0x75')]===_0x8cdf('0x76')){var _0x2e1d1f=_0x5e73d7['get']({'plain':!![]});return db['UserProfileSection'][_0x8cdf('0x4c')]({'where':{'name':_0x8cdf('0x28'),'userProfileId':_0x5e9acf[_0x8cdf('0x73')]},'raw':!![]})['then'](function(_0x531b7a){if(_0x531b7a&&_0x531b7a['autoAssociation']===0x0){return db[_0x8cdf('0x29')][_0x8cdf('0x56')]({'name':_0x2e1d1f[_0x8cdf('0x2c')],'resourceId':_0x2e1d1f['id'],'type':_0x531b7a[_0x8cdf('0x2c')],'sectionId':_0x531b7a['id']},{})[_0x8cdf('0x25')](function(){return _0x5e73d7;});}else{return _0x5e73d7;}})['catch'](function(_0x224419){logger['error'](_0x8cdf('0x77'),_0x224419);throw _0x224419;});}return _0x5e73d7;})['then'](respondWithResult(_0x55ce34,null))[_0x8cdf('0x47')](handleError(_0x55ce34,null));});_0x25a513[_0x8cdf('0x78')]();}catch(_0x55abeb){_0x55ce34[_0x8cdf('0x19')](0x1f4)[_0x8cdf('0x2d')](_0x55abeb);}};exports[_0x8cdf('0x24')]=function(_0xc51994,_0x41eb81,_0x3d52d4){return db[_0x8cdf('0x30')][_0x8cdf('0x4c')]({'where':{'id':_0xc51994[_0x8cdf('0x49')]['id']}})[_0x8cdf('0x25')](handleEntityNotFound(_0x41eb81,null))[_0x8cdf('0x25')](saveUpdates(_['pick'](_0xc51994[_0x8cdf('0x72')],[_0x8cdf('0x2c'),_0x8cdf('0x79')]),null))[_0x8cdf('0x25')](respondWithResult(_0x41eb81,null))[_0x8cdf('0x47')](handleError(_0x41eb81,null));};exports[_0x8cdf('0x7a')]=function(_0x4a2bb4,_0x542af5,_0x39e441){return db[_0x8cdf('0x30')][_0x8cdf('0x4c')]({'where':{'id':_0x4a2bb4[_0x8cdf('0x49')]['id']}})['then'](function(_0x130728){if(_0x130728){return _0x130728[_0x8cdf('0x26')]();}})['then'](function(_0x4c4b4c){var _0x2a4c70=path[_0x8cdf('0x4f')](config[_0x8cdf('0x50')],'server/files/sounds/original',util[_0x8cdf('0x54')](_0x8cdf('0x55'),_0x4c4b4c[_0x8cdf('0x4d')],_0x4c4b4c[_0x8cdf('0x7b')]));var _0x1381b8=path[_0x8cdf('0x4f')](config[_0x8cdf('0x50')],_0x8cdf('0x51'),util[_0x8cdf('0x54')](_0x8cdf('0x55'),_0x4c4b4c[_0x8cdf('0x4d')],_0x4c4b4c[_0x8cdf('0x4e')]));fs[_0x8cdf('0x63')](_0x2a4c70);fs[_0x8cdf('0x63')](_0x1381b8);return _0x4c4b4c;})['then'](function(_0x1eed43){if(_0x1eed43){return _0x542af5['status'](0xcc)['end']();}})[_0x8cdf('0x25')](handleEntityNotFound(_0x542af5,null))[_0x8cdf('0x47')](handleError(_0x542af5,null));};
\ No newline at end of file
+var _0xbe48=['sampleCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_sampleCount','converted_bitRate','0777','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','delete','original_format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','lodash','squel','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','set','apply','reject','save','update','then','destroy','get','Sounds','UserProfileResource','sendStatus','error','stack','name','send','index','Sound','fieldName','key','model','query','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filters','filter','merge','map','options','includeAll','include','rows','catch','show','params','keys','rawAttributes','length','find','download','converted_format','existsSync','join','root','save_name','Sequelize','ValidationError','server/files/sounds/converted','%s.%s','format','create','basename','file','originalname','extname','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'];(function(_0x2c1b6b,_0x5dfbc9){var _0x5d546a=function(_0x198611){while(--_0x198611){_0x2c1b6b['push'](_0x2c1b6b['shift']());}};_0x5d546a(++_0x5dfbc9);}(_0xbe48,0x91));var _0x8be4=function(_0x13fd47,_0x50315a){_0x13fd47=_0x13fd47-0x0;var _0x1a3c76=_0xbe48[_0x13fd47];return _0x1a3c76;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x8be4('0x0'));var jsonpatch=require(_0x8be4('0x1'));var rp=require(_0x8be4('0x2'));var moment=require('moment');var BPromise=require(_0x8be4('0x3'));var Mustache=require(_0x8be4('0x4'));var util=require(_0x8be4('0x5'));var path=require(_0x8be4('0x6'));var sox=require(_0x8be4('0x7'));var csv=require(_0x8be4('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8be4('0x9'));var squel=require(_0x8be4('0xa'));var crypto=require('crypto');var jsforce=require(_0x8be4('0xb'));var deskjs=require(_0x8be4('0xc'));var toCsv=require('to-csv');var querystring=require(_0x8be4('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x8be4('0xe'));var qs=require(_0x8be4('0xf'));var as=require(_0x8be4('0x10'));var hardwareService=require(_0x8be4('0x11'));var logger=require(_0x8be4('0x12'))(_0x8be4('0x13'));var utils=require(_0x8be4('0x14'));var config=require(_0x8be4('0x15'));var licenseUtil=require(_0x8be4('0x16'));var db=require(_0x8be4('0x17'))['db'];function respondWithStatusCode(_0x4d035b,_0x45acc9){_0x45acc9=_0x45acc9||0xcc;return function(_0x403de0){if(_0x403de0){return _0x4d035b['sendStatus'](_0x45acc9);}return _0x4d035b[_0x8be4('0x18')](_0x45acc9)[_0x8be4('0x19')]();};}function respondWithResult(_0xe4c500,_0x49ea21){_0x49ea21=_0x49ea21||0xc8;return function(_0x541e3b){if(_0x541e3b){return _0xe4c500[_0x8be4('0x18')](_0x49ea21)[_0x8be4('0x1a')](_0x541e3b);}};}function respondWithFilteredResult(_0x31be7e,_0x3b09f5){return function(_0x74905e){if(_0x74905e){var _0x5db11d=typeof _0x3b09f5['offset']===_0x8be4('0x1b')&&typeof _0x3b09f5[_0x8be4('0x1c')]===_0x8be4('0x1b');var _0x3997bc=_0x74905e[_0x8be4('0x1d')];var _0x111680=_0x5db11d?0x0:_0x3b09f5[_0x8be4('0x1e')];var _0x56f884=_0x5db11d?_0x74905e[_0x8be4('0x1d')]:_0x3b09f5[_0x8be4('0x1e')]+_0x3b09f5['limit'];var _0x33573e;if(_0x56f884>=_0x3997bc){_0x56f884=_0x3997bc;_0x33573e=0xc8;}else{_0x33573e=0xce;}_0x31be7e['status'](_0x33573e);return _0x31be7e[_0x8be4('0x1f')]('Content-Range',_0x111680+'-'+_0x56f884+'/'+_0x3997bc)[_0x8be4('0x1a')](_0x74905e);}return null;};}function patchUpdates(_0x3ef567){return function(_0x9bf313){try{jsonpatch[_0x8be4('0x20')](_0x9bf313,_0x3ef567,!![]);}catch(_0x12de76){return BPromise[_0x8be4('0x21')](_0x12de76);}return _0x9bf313[_0x8be4('0x22')]();};}function saveUpdates(_0x55f67b,_0x50bcea){return function(_0xb9e8b3){if(_0xb9e8b3){return _0xb9e8b3[_0x8be4('0x23')](_0x55f67b)[_0x8be4('0x24')](function(_0x40ecb3){return _0x40ecb3;});}return null;};}function removeEntity(_0x449883,_0x143f8e){return function(_0x2ead69){if(_0x2ead69){return _0x2ead69[_0x8be4('0x25')]()[_0x8be4('0x24')](function(){var _0x5d92bc=_0x2ead69[_0x8be4('0x26')]({'plain':!![]});var _0x433caf=_0x8be4('0x27');return db[_0x8be4('0x28')][_0x8be4('0x25')]({'where':{'type':_0x433caf,'resourceId':_0x5d92bc['id']}})[_0x8be4('0x24')](function(){return _0x2ead69;});})['then'](function(){_0x449883[_0x8be4('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2c52d6,_0x43ca83){return function(_0x569fc5){if(!_0x569fc5){_0x2c52d6[_0x8be4('0x29')](0x194);}return _0x569fc5;};}function handleError(_0x4f65ee,_0x253dbf){_0x253dbf=_0x253dbf||0x1f4;return function(_0x1649f1){logger[_0x8be4('0x2a')](_0x1649f1[_0x8be4('0x2b')]);if(_0x1649f1['name']){delete _0x1649f1[_0x8be4('0x2c')];}_0x4f65ee[_0x8be4('0x18')](_0x253dbf)[_0x8be4('0x2d')](_0x1649f1);};}exports[_0x8be4('0x2e')]=function(_0x1b6e63,_0xf82527){var _0x38403d={},_0x2a933f={},_0x5be735={'count':0x0,'rows':[]};var _0x1723a6=_['map'](db[_0x8be4('0x2f')]['rawAttributes'],function(_0x11f593){return{'name':_0x11f593[_0x8be4('0x30')],'type':_0x11f593['type'][_0x8be4('0x31')]};});_0x2a933f[_0x8be4('0x32')]=_['map'](_0x1723a6,_0x8be4('0x2c'));_0x2a933f[_0x8be4('0x33')]=_['keys'](_0x1b6e63[_0x8be4('0x33')]);_0x2a933f['filters']=_[_0x8be4('0x34')](_0x2a933f[_0x8be4('0x32')],_0x2a933f['query']);_0x38403d[_0x8be4('0x35')]=_[_0x8be4('0x34')](_0x2a933f[_0x8be4('0x32')],qs[_0x8be4('0x36')](_0x1b6e63[_0x8be4('0x33')]['fields']));_0x38403d[_0x8be4('0x35')]=_0x38403d['attributes']['length']?_0x38403d[_0x8be4('0x35')]:_0x2a933f[_0x8be4('0x32')];if(!_0x1b6e63[_0x8be4('0x33')][_0x8be4('0x37')]('nolimit')){_0x38403d[_0x8be4('0x1c')]=qs[_0x8be4('0x1c')](_0x1b6e63[_0x8be4('0x33')][_0x8be4('0x1c')]);_0x38403d[_0x8be4('0x1e')]=qs['offset'](_0x1b6e63['query'][_0x8be4('0x1e')]);}_0x38403d[_0x8be4('0x38')]=qs[_0x8be4('0x39')](_0x1b6e63[_0x8be4('0x33')][_0x8be4('0x39')]);_0x38403d[_0x8be4('0x3a')]=qs['filters'](_[_0x8be4('0x3b')](_0x1b6e63[_0x8be4('0x33')],_0x2a933f[_0x8be4('0x3c')]),_0x1723a6);if(_0x1b6e63[_0x8be4('0x33')][_0x8be4('0x3d')]){_0x38403d[_0x8be4('0x3a')]=_[_0x8be4('0x3e')](_0x38403d[_0x8be4('0x3a')],{'$or':_[_0x8be4('0x3f')](_0x1723a6,function(_0x4532b1){if(_0x4532b1['type']!=='VIRTUAL'){var _0x2fb010={};_0x2fb010[_0x4532b1[_0x8be4('0x2c')]]={'$like':'%'+_0x1b6e63[_0x8be4('0x33')][_0x8be4('0x3d')]+'%'};return _0x2fb010;}})});}_0x38403d=_[_0x8be4('0x3e')]({},_0x38403d,_0x1b6e63[_0x8be4('0x40')]);var _0x1078e6={'where':_0x38403d[_0x8be4('0x3a')]};return db[_0x8be4('0x2f')][_0x8be4('0x1d')](_0x1078e6)[_0x8be4('0x24')](function(_0x3f763f){_0x5be735[_0x8be4('0x1d')]=_0x3f763f;if(_0x1b6e63[_0x8be4('0x33')][_0x8be4('0x41')]){_0x38403d[_0x8be4('0x42')]=[{'all':!![]}];}return db[_0x8be4('0x2f')]['findAll'](_0x38403d);})[_0x8be4('0x24')](function(_0x4e33ef){_0x5be735[_0x8be4('0x43')]=_0x4e33ef;return _0x5be735;})[_0x8be4('0x24')](respondWithFilteredResult(_0xf82527,_0x38403d))[_0x8be4('0x44')](handleError(_0xf82527,null));};exports[_0x8be4('0x45')]=function(_0x37cf60,_0x42fce2){var _0x4d389a={'raw':!![],'where':{'id':_0x37cf60[_0x8be4('0x46')]['id']}},_0x190f7c={};_0x190f7c[_0x8be4('0x32')]=_[_0x8be4('0x47')](db[_0x8be4('0x2f')][_0x8be4('0x48')]);_0x190f7c[_0x8be4('0x33')]=_['keys'](_0x37cf60[_0x8be4('0x33')]);_0x190f7c[_0x8be4('0x3c')]=_[_0x8be4('0x34')](_0x190f7c[_0x8be4('0x32')],_0x190f7c[_0x8be4('0x33')]);_0x4d389a[_0x8be4('0x35')]=_[_0x8be4('0x34')](_0x190f7c['model'],qs[_0x8be4('0x36')](_0x37cf60['query'][_0x8be4('0x36')]));_0x4d389a[_0x8be4('0x35')]=_0x4d389a[_0x8be4('0x35')][_0x8be4('0x49')]?_0x4d389a[_0x8be4('0x35')]:_0x190f7c['model'];if(_0x37cf60[_0x8be4('0x33')][_0x8be4('0x41')]){_0x4d389a[_0x8be4('0x42')]=[{'all':!![]}];}_0x4d389a=_[_0x8be4('0x3e')]({},_0x4d389a,_0x37cf60[_0x8be4('0x40')]);return db[_0x8be4('0x2f')][_0x8be4('0x4a')](_0x4d389a)[_0x8be4('0x24')](handleEntityNotFound(_0x42fce2,null))['then'](respondWithResult(_0x42fce2,null))[_0x8be4('0x44')](handleError(_0x42fce2,null));};exports[_0x8be4('0x4b')]=function(_0x167364,_0x15625d,_0x3aab4a){return db[_0x8be4('0x2f')][_0x8be4('0x4a')]({'where':{'id':_0x167364[_0x8be4('0x46')]['id']},'attributes':[_0x8be4('0x2c'),'save_name',_0x8be4('0x4c')],'raw':!![]})[_0x8be4('0x24')](handleEntityNotFound(_0x15625d,null))['then'](function(_0x14d65d){if(_0x14d65d){if(!fs[_0x8be4('0x4d')](path[_0x8be4('0x4e')](config[_0x8be4('0x4f')],'server/files/sounds/converted',_0x14d65d[_0x8be4('0x50')]+'.'+_0x14d65d['converted_format']))){throw new db[(_0x8be4('0x51'))][(_0x8be4('0x52'))]('Sound\x20not\x20found');}return _0x15625d[_0x8be4('0x4b')](path[_0x8be4('0x4e')](config[_0x8be4('0x4f')],_0x8be4('0x53'),util['format'](_0x8be4('0x54'),_0x14d65d[_0x8be4('0x50')],_0x14d65d['converted_format'])),util[_0x8be4('0x55')](_0x8be4('0x54'),_0x14d65d[_0x8be4('0x2c')],_0x14d65d[_0x8be4('0x4c')]));}return null;})[_0x8be4('0x44')](handleError(_0x15625d,null));};exports[_0x8be4('0x56')]=function(_0x433abb,_0x5298ee,_0x5e5174){var _0x505a3d={'name':path[_0x8be4('0x57')](_0x433abb[_0x8be4('0x58')][_0x8be4('0x59')],path[_0x8be4('0x5a')](_0x433abb[_0x8be4('0x58')][_0x8be4('0x59')])),'save_name':path[_0x8be4('0x57')](_0x433abb[_0x8be4('0x58')][_0x8be4('0x5b')],path[_0x8be4('0x5a')](_0x433abb[_0x8be4('0x58')][_0x8be4('0x5b')])),'original_format':path[_0x8be4('0x5a')](_0x433abb[_0x8be4('0x58')][_0x8be4('0x59')])[_0x8be4('0x5c')](0x1),'converted_format':_0x8be4('0x5d')};var _0x4e9036=path[_0x8be4('0x4e')](config[_0x8be4('0x4f')],_0x8be4('0x5e'),_0x433abb[_0x8be4('0x58')]['filename']);var _0x485a5e=path[_0x8be4('0x4e')](config['root'],_0x8be4('0x53'),util[_0x8be4('0x55')](_0x8be4('0x54'),path['basename'](_0x433abb[_0x8be4('0x58')]['filename'],path['extname'](_0x433abb[_0x8be4('0x58')]['filename'])),_0x505a3d[_0x8be4('0x4c')]));logger[_0x8be4('0x5f')](_0x8be4('0x60'),_0x4e9036);logger['info'](_0x8be4('0x61'),_0x485a5e);try{fs[_0x8be4('0x62')](_0x4e9036,parseInt('0777',0x8));var _0xcc84f1=sox[_0x8be4('0x63')](_0x4e9036,_0x485a5e,{'sampleRate':0x1f40,'format':_0x8be4('0x5d'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0xcc84f1['on'](_0x8be4('0x2a'),function(_0x1e66bc){fs[_0x8be4('0x64')](_0x4e9036);_0x5298ee[_0x8be4('0x18')](0x1f4)[_0x8be4('0x2d')](_0x1e66bc);});_0xcc84f1['on'](_0x8be4('0x65'),function(_0x3e24bb){_0x505a3d[_0x8be4('0x66')]=isNaN(_0x3e24bb[_0x8be4('0x67')])?null:_0x3e24bb['duration']*0x3e8;_0x505a3d[_0x8be4('0x68')]=isNaN(_0x3e24bb[_0x8be4('0x69')])?null:_0x3e24bb['sampleCount'];_0x505a3d['original_channelCount']=isNaN(_0x3e24bb[_0x8be4('0x6a')])?null:_0x3e24bb[_0x8be4('0x6a')];_0x505a3d[_0x8be4('0x6b')]=isNaN(_0x3e24bb[_0x8be4('0x6c')])?null:_0x3e24bb[_0x8be4('0x6c')];_0x505a3d[_0x8be4('0x6d')]=isNaN(_0x3e24bb[_0x8be4('0x6e')])?null:_0x3e24bb[_0x8be4('0x6e')];});_0xcc84f1['on'](_0x8be4('0x6f'),function(_0xaddc3f){_0x505a3d['converted_duration']=isNaN(_0xaddc3f[_0x8be4('0x67')])?null:_0xaddc3f[_0x8be4('0x67')]*0x3e8;_0x505a3d[_0x8be4('0x70')]=isNaN(_0xaddc3f['sampleCount'])?null:_0xaddc3f['sampleCount'];_0x505a3d['converted_channelCount']=isNaN(_0xaddc3f['channelCount'])?null:_0xaddc3f['channelCount'];_0x505a3d[_0x8be4('0x71')]=isNaN(_0xaddc3f[_0x8be4('0x6c')])?null:_0xaddc3f['bitRate'];_0x505a3d['converted_sampleRate']=isNaN(_0xaddc3f[_0x8be4('0x6e')])?null:_0xaddc3f[_0x8be4('0x6e')];});_0xcc84f1['on'](_0x8be4('0x19'),function(){fs[_0x8be4('0x62')](_0x485a5e,parseInt(_0x8be4('0x72'),0x8));return db[_0x8be4('0x2f')][_0x8be4('0x56')](_0x505a3d)[_0x8be4('0x24')](function(_0x3586ed){var _0x49ec43={'role':_0x433abb[_0x8be4('0x73')][_0x8be4('0x74')],'userProfileId':_0x433abb['body'][_0x8be4('0x75')]};if(!_0x49ec43)throw new Error(_0x8be4('0x76'));if(_0x49ec43[_0x8be4('0x74')]==='user'){var _0xc001d0=_0x3586ed[_0x8be4('0x26')]({'plain':!![]});return db[_0x8be4('0x77')][_0x8be4('0x4a')]({'where':{'name':_0x8be4('0x27'),'userProfileId':_0x49ec43[_0x8be4('0x75')]},'raw':!![]})[_0x8be4('0x24')](function(_0x34946a){if(_0x34946a&&_0x34946a[_0x8be4('0x78')]===0x0){return db[_0x8be4('0x28')][_0x8be4('0x56')]({'name':_0xc001d0[_0x8be4('0x2c')],'resourceId':_0xc001d0['id'],'type':_0x34946a['name'],'sectionId':_0x34946a['id']},{})[_0x8be4('0x24')](function(){return _0x3586ed;});}else{return _0x3586ed;}})['catch'](function(_0x391890){logger['error'](_0x8be4('0x79'),_0x391890);throw _0x391890;});}return _0x3586ed;})[_0x8be4('0x24')](respondWithResult(_0x5298ee,null))[_0x8be4('0x44')](handleError(_0x5298ee,null));});_0xcc84f1[_0x8be4('0x7a')]();}catch(_0x33708e){_0x5298ee['status'](0x1f4)[_0x8be4('0x2d')](_0x33708e);}};exports[_0x8be4('0x23')]=function(_0x4655c6,_0x4afe90,_0x2d3724){return db[_0x8be4('0x2f')][_0x8be4('0x4a')]({'where':{'id':_0x4655c6[_0x8be4('0x46')]['id']}})[_0x8be4('0x24')](handleEntityNotFound(_0x4afe90,null))['then'](saveUpdates(_['pick'](_0x4655c6['body'],[_0x8be4('0x2c'),'description']),null))['then'](respondWithResult(_0x4afe90,null))['catch'](handleError(_0x4afe90,null));};exports[_0x8be4('0x7b')]=function(_0x5ea898,_0x3efd43,_0x5987df){return db[_0x8be4('0x2f')]['find']({'where':{'id':_0x5ea898['params']['id']}})['then'](function(_0x2b30d3){if(_0x2b30d3){return _0x2b30d3[_0x8be4('0x25')]();}})[_0x8be4('0x24')](function(_0x314506){var _0x1318fc=path[_0x8be4('0x4e')](config[_0x8be4('0x4f')],_0x8be4('0x5e'),util[_0x8be4('0x55')](_0x8be4('0x54'),_0x314506['save_name'],_0x314506[_0x8be4('0x7c')]));var _0x5a6046=path[_0x8be4('0x4e')](config['root'],_0x8be4('0x53'),util['format'](_0x8be4('0x54'),_0x314506[_0x8be4('0x50')],_0x314506[_0x8be4('0x4c')]));fs[_0x8be4('0x64')](_0x1318fc);fs[_0x8be4('0x64')](_0x5a6046);return _0x314506;})['then'](function(_0x1e9ea9){if(_0x1e9ea9){return _0x3efd43[_0x8be4('0x18')](0xcc)[_0x8be4('0x19')]();}})['then'](handleEntityNotFound(_0x3efd43,null))[_0x8be4('0x44')](handleError(_0x3efd43,null));};
\ No newline at end of file
index 95fb04f..b012408 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c00=['exports','define','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x55f45b,_0x13d8cb){var _0x525267=function(_0x355093){while(--_0x355093){_0x55f45b['push'](_0x55f45b['shift']());}};_0x525267(++_0x13d8cb);}(_0x7c00,0x1d6));var _0x07c0=function(_0x11c1a1,_0x17ba8c){_0x11c1a1=_0x11c1a1-0x0;var _0x483746=_0x7c00[_0x11c1a1];return _0x483746;};'use strict';var _=require(_0x07c0('0x0'));var util=require(_0x07c0('0x1'));var logger=require(_0x07c0('0x2'))(_0x07c0('0x3'));var moment=require(_0x07c0('0x4'));var BPromise=require(_0x07c0('0x5'));var rp=require(_0x07c0('0x6'));var fs=require('fs');var path=require(_0x07c0('0x7'));var rimraf=require(_0x07c0('0x8'));var config=require(_0x07c0('0x9'));var attributes=require('./sound.attributes');module[_0x07c0('0xa')]=function(_0x410ca3,_0x360e9a){return _0x410ca3[_0x07c0('0xb')]('Sound',attributes,{'tableName':'tools_sounds','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x95c2=['../../config/logger','api','request-promise','path','rimraf','../../config/environment','./sound.attributes','exports','define','Sound','lodash','util'];(function(_0x149319,_0x4182b5){var _0x4637c9=function(_0x2ff6ce){while(--_0x2ff6ce){_0x149319['push'](_0x149319['shift']());}};_0x4637c9(++_0x4182b5);}(_0x95c2,0x142));var _0x295c=function(_0x37ab03,_0x11c1c5){_0x37ab03=_0x37ab03-0x0;var _0x97b59b=_0x95c2[_0x37ab03];return _0x97b59b;};'use strict';var _=require(_0x295c('0x0'));var util=require(_0x295c('0x1'));var logger=require(_0x295c('0x2'))(_0x295c('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x295c('0x4'));var fs=require('fs');var path=require(_0x295c('0x5'));var rimraf=require(_0x295c('0x6'));var config=require(_0x295c('0x7'));var attributes=require(_0x295c('0x8'));module[_0x295c('0x9')]=function(_0xb36aeb,_0x2da0ed){return _0xb36aeb[_0x295c('0xa')](_0x295c('0xb'),attributes,{'tableName':'tools_sounds','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dea3b20..1ca0602 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b67=['message','result','catch','ShowSound','options','raw','where','attributes','include','map','model','stringify','bluebird','randomstring','../../config/utils','rpc','jayson/promise','client','http','request','then','info','Sound,\x20%s,\x20%s','debug','Sound,\x20%s,\x20%s,\x20%s','request\x20sent','error','code'];(function(_0x6978c0,_0x1f6765){var _0x361377=function(_0x2d6cfd){while(--_0x2d6cfd){_0x6978c0['push'](_0x6978c0['shift']());}};_0x361377(++_0x1f6765);}(_0x9b67,0xd0));var _0x79b6=function(_0x197474,_0x400cc4){_0x197474=_0x197474-0x0;var _0x55201d=_0x9b67[_0x197474];return _0x55201d;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x79b6('0x0'));var rs=require(_0x79b6('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x79b6('0x2'));var logger=require('../../config/logger')(_0x79b6('0x3'));var config=require('../../config/environment');var jayson=require(_0x79b6('0x4'));var client=jayson[_0x79b6('0x5')][_0x79b6('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x394190,_0x1e9077,_0x1106e7){return new BPromise(function(_0x95ce00,_0x289fd8){return client[_0x79b6('0x7')](_0x394190,_0x1106e7)[_0x79b6('0x8')](function(_0x493863){logger[_0x79b6('0x9')](_0x79b6('0xa'),_0x1e9077,'request\x20sent');logger[_0x79b6('0xb')](_0x79b6('0xc'),_0x1e9077,_0x79b6('0xd'),JSON['stringify'](_0x493863));if(_0x493863[_0x79b6('0xe')]){if(_0x493863[_0x79b6('0xe')][_0x79b6('0xf')]===0x1f4){logger[_0x79b6('0xe')](_0x79b6('0xa'),_0x1e9077,_0x493863[_0x79b6('0xe')]['message']);return _0x289fd8(_0x493863[_0x79b6('0xe')][_0x79b6('0x10')]);}logger[_0x79b6('0xe')](_0x79b6('0xa'),_0x1e9077,_0x493863[_0x79b6('0xe')]['message']);return _0x95ce00(_0x493863[_0x79b6('0xe')][_0x79b6('0x10')]);}else{logger[_0x79b6('0x9')](_0x79b6('0xa'),_0x1e9077,'request\x20sent');_0x95ce00(_0x493863[_0x79b6('0x11')][_0x79b6('0x10')]);}})[_0x79b6('0x12')](function(_0xfd006){logger[_0x79b6('0xe')](_0x79b6('0xa'),_0x1e9077,_0xfd006);_0x289fd8(_0xfd006);});});}exports[_0x79b6('0x13')]=function(_0x505f06){var _0x376bc6=this;return new Promise(function(_0x55a5b6,_0x13178c){return db['Sound']['find']({'raw':_0x505f06[_0x79b6('0x14')]?_0x505f06['options'][_0x79b6('0x15')]===undefined?!![]:![]:!![],'where':_0x505f06[_0x79b6('0x14')]?_0x505f06['options'][_0x79b6('0x16')]||null:null,'attributes':_0x505f06['options']?_0x505f06[_0x79b6('0x14')][_0x79b6('0x17')]||null:null,'include':_0x505f06[_0x79b6('0x14')]?_0x505f06[_0x79b6('0x14')][_0x79b6('0x18')]?_[_0x79b6('0x19')](_0x505f06[_0x79b6('0x14')][_0x79b6('0x18')],function(_0x4edf5d){return{'model':db[_0x4edf5d[_0x79b6('0x1a')]],'as':_0x4edf5d['as'],'attributes':_0x4edf5d[_0x79b6('0x17')],'include':_0x4edf5d[_0x79b6('0x18')]?_[_0x79b6('0x19')](_0x4edf5d[_0x79b6('0x18')],function(_0x797828){return{'model':db[_0x797828['model']],'as':_0x797828['as'],'attributes':_0x797828['attributes'],'include':_0x797828[_0x79b6('0x18')]?_[_0x79b6('0x19')](_0x797828[_0x79b6('0x18')],function(_0x4d2061){return{'model':db[_0x4d2061[_0x79b6('0x1a')]],'as':_0x4d2061['as'],'attributes':_0x4d2061[_0x79b6('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x577dfa){logger[_0x79b6('0x9')](_0x79b6('0x13'),_0x505f06);logger[_0x79b6('0xb')](_0x79b6('0x13'),_0x505f06,JSON[_0x79b6('0x1b')](_0x577dfa));_0x55a5b6(_0x577dfa);})['catch'](function(_0xf2d01f){logger[_0x79b6('0xe')](_0x79b6('0x13'),_0xf2d01f[_0x79b6('0x10')],_0x505f06);_0x13178c(_0x376bc6[_0x79b6('0xe')](0x1f4,_0xf2d01f[_0x79b6('0x10')]));});});};
\ No newline at end of file
+var _0x667d=['options','raw','where','attributes','include','map','model','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','Sound,\x20%s,\x20%s','debug','Sound,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','ShowSound','Sound'];(function(_0x1c2ac3,_0x328525){var _0x5afb18=function(_0x1f069e){while(--_0x1f069e){_0x1c2ac3['push'](_0x1c2ac3['shift']());}};_0x5afb18(++_0x328525);}(_0x667d,0xff));var _0xd667=function(_0x31f295,_0x27e9a7){_0x31f295=_0x31f295-0x0;var _0x64facf=_0x667d[_0x31f295];return _0x64facf;};'use strict';var _=require('lodash');var util=require(_0xd667('0x0'));var moment=require(_0xd667('0x1'));var BPromise=require(_0xd667('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd667('0x3'));var db=require(_0xd667('0x4'))['db'];var utils=require(_0xd667('0x5'));var logger=require(_0xd667('0x6'))(_0xd667('0x7'));var config=require('../../config/environment');var jayson=require(_0xd667('0x8'));var client=jayson[_0xd667('0x9')][_0xd667('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x42b2f9,_0x2d901d,_0x25bd9e){return new BPromise(function(_0x565e90,_0x27e997){return client['request'](_0x42b2f9,_0x25bd9e)[_0xd667('0xb')](function(_0xac980f){logger[_0xd667('0xc')](_0xd667('0xd'),_0x2d901d,'request\x20sent');logger[_0xd667('0xe')](_0xd667('0xf'),_0x2d901d,_0xd667('0x10'),JSON[_0xd667('0x11')](_0xac980f));if(_0xac980f['error']){if(_0xac980f[_0xd667('0x12')][_0xd667('0x13')]===0x1f4){logger[_0xd667('0x12')](_0xd667('0xd'),_0x2d901d,_0xac980f[_0xd667('0x12')][_0xd667('0x14')]);return _0x27e997(_0xac980f[_0xd667('0x12')][_0xd667('0x14')]);}logger[_0xd667('0x12')](_0xd667('0xd'),_0x2d901d,_0xac980f['error'][_0xd667('0x14')]);return _0x565e90(_0xac980f[_0xd667('0x12')][_0xd667('0x14')]);}else{logger['info']('Sound,\x20%s,\x20%s',_0x2d901d,_0xd667('0x10'));_0x565e90(_0xac980f['result'][_0xd667('0x14')]);}})[_0xd667('0x15')](function(_0x4b974b){logger[_0xd667('0x12')](_0xd667('0xd'),_0x2d901d,_0x4b974b);_0x27e997(_0x4b974b);});});}exports[_0xd667('0x16')]=function(_0x464c1c){var _0x15e858=this;return new Promise(function(_0x111a2f,_0x5de5d4){return db[_0xd667('0x17')]['find']({'raw':_0x464c1c[_0xd667('0x18')]?_0x464c1c['options'][_0xd667('0x19')]===undefined?!![]:![]:!![],'where':_0x464c1c[_0xd667('0x18')]?_0x464c1c[_0xd667('0x18')][_0xd667('0x1a')]||null:null,'attributes':_0x464c1c[_0xd667('0x18')]?_0x464c1c[_0xd667('0x18')][_0xd667('0x1b')]||null:null,'include':_0x464c1c[_0xd667('0x18')]?_0x464c1c[_0xd667('0x18')][_0xd667('0x1c')]?_[_0xd667('0x1d')](_0x464c1c[_0xd667('0x18')]['include'],function(_0x390091){return{'model':db[_0x390091['model']],'as':_0x390091['as'],'attributes':_0x390091['attributes'],'include':_0x390091[_0xd667('0x1c')]?_[_0xd667('0x1d')](_0x390091[_0xd667('0x1c')],function(_0x472988){return{'model':db[_0x472988[_0xd667('0x1e')]],'as':_0x472988['as'],'attributes':_0x472988[_0xd667('0x1b')],'include':_0x472988['include']?_[_0xd667('0x1d')](_0x472988['include'],function(_0x94c4dd){return{'model':db[_0x94c4dd[_0xd667('0x1e')]],'as':_0x94c4dd['as'],'attributes':_0x94c4dd[_0xd667('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xd667('0xb')](function(_0x397392){logger[_0xd667('0xc')](_0xd667('0x16'),_0x464c1c);logger[_0xd667('0xe')](_0xd667('0x16'),_0x464c1c,JSON[_0xd667('0x11')](_0x397392));_0x111a2f(_0x397392);})[_0xd667('0x15')](function(_0x1ba66e){logger[_0xd667('0x12')]('ShowSound',_0x1ba66e['message'],_0x464c1c);_0x5de5d4(_0x15e858[_0xd667('0x12')](0x1f4,_0x1ba66e['message']));});});};
\ No newline at end of file
index ee090c7..7e40ca7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fc2=['show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./squareMessage.controller','isAuthenticated','index','/:id'];(function(_0x5e4278,_0x53ed71){var _0x2b35fe=function(_0x172b6f){while(--_0x172b6f){_0x5e4278['push'](_0x5e4278['shift']());}};_0x2b35fe(++_0x53ed71);}(_0x4fc2,0x111));var _0x24fc=function(_0x68a64c,_0x4fa1e1){_0x68a64c=_0x68a64c-0x0;var _0x3acf1f=_0x4fc2[_0x68a64c];return _0x3acf1f;};'use strict';var multer=require(_0x24fc('0x0'));var util=require(_0x24fc('0x1'));var path=require(_0x24fc('0x2'));var timeout=require(_0x24fc('0x3'));var express=require('express');var router=express[_0x24fc('0x4')]();var fs_extra=require(_0x24fc('0x5'));var auth=require(_0x24fc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x24fc('0x7'));var controller=require(_0x24fc('0x8'));router['get']('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0xa')]);router['get'](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0xc')]);router[_0x24fc('0xd')]('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0xe')]);router['put'](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0xf')]);router[_0x24fc('0x10')](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x11')]);module[_0x24fc('0x12')]=router;
\ No newline at end of file
+var _0xbaf0=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareMessage.controller','get','isAuthenticated','index','/:id','post','create','put','update','delete','destroy','exports','util','path'];(function(_0x54bc5a,_0x4dc466){var _0x50ec1d=function(_0x414a45){while(--_0x414a45){_0x54bc5a['push'](_0x54bc5a['shift']());}};_0x50ec1d(++_0x4dc466);}(_0xbaf0,0x12a));var _0x0baf=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xbaf0[_0x1facfa];return _0x9ec701;};'use strict';var multer=require('multer');var util=require(_0x0baf('0x0'));var path=require(_0x0baf('0x1'));var timeout=require(_0x0baf('0x2'));var express=require(_0x0baf('0x3'));var router=express[_0x0baf('0x4')]();var fs_extra=require(_0x0baf('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var controller=require(_0x0baf('0x8'));router[_0x0baf('0x9')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xb')]);router[_0x0baf('0x9')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller['show']);router[_0x0baf('0xd')]('/',auth['isAuthenticated'](),controller[_0x0baf('0xe')]);router[_0x0baf('0xf')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x10')]);router[_0x0baf('0x11')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x12')]);module[_0x0baf('0x13')]=router;
\ No newline at end of file
index 184352e..0eaef04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50f8=['ENUM','out','sequelize','exports','STRING','TEXT','medium'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x50f8,0x79));var _0x850f=function(_0x1bcfee,_0x1e8f6a){_0x1bcfee=_0x1bcfee-0x0;var _0x175b1b=_0x50f8[_0x1bcfee];return _0x175b1b;};'use strict';var Sequelize=require(_0x850f('0x0'));module[_0x850f('0x1')]={'uniqueid':{'type':Sequelize[_0x850f('0x2')]},'body':{'type':Sequelize[_0x850f('0x3')](_0x850f('0x4')),'allowNull':![]},'direction':{'type':Sequelize[_0x850f('0x5')]('in',_0x850f('0x6')),'defaultValue':_0x850f('0x6'),'allowNull':![]},'providerName':{'type':Sequelize[_0x850f('0x2')]},'providerResponse':{'type':Sequelize[_0x850f('0x3')]}};
\ No newline at end of file
+var _0x6197=['out','exports','STRING','TEXT','medium','ENUM'];(function(_0xd1d19a,_0x1933f0){var _0x52a79d=function(_0x5199e2){while(--_0x5199e2){_0xd1d19a['push'](_0xd1d19a['shift']());}};_0x52a79d(++_0x1933f0);}(_0x6197,0xfd));var _0x7619=function(_0x36afe0,_0x23a089){_0x36afe0=_0x36afe0-0x0;var _0x247997=_0x6197[_0x36afe0];return _0x247997;};'use strict';var Sequelize=require('sequelize');module[_0x7619('0x0')]={'uniqueid':{'type':Sequelize[_0x7619('0x1')]},'body':{'type':Sequelize[_0x7619('0x2')](_0x7619('0x3')),'allowNull':![]},'direction':{'type':Sequelize[_0x7619('0x4')]('in','out'),'defaultValue':_0x7619('0x5'),'allowNull':![]},'providerName':{'type':Sequelize[_0x7619('0x1')]},'providerResponse':{'type':Sequelize[_0x7619('0x2')]}};
\ No newline at end of file
index bc5f281..2608a53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1324=['options','findAll','rows','show','params','rawAttributes','includeAll','include','find','catch','create','body','destroy','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','error','stack','name','index','map','SquareMessage','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge'];(function(_0x174ef5,_0x256e8e){var _0x1cc379=function(_0x3eafcf){while(--_0x3eafcf){_0x174ef5['push'](_0x174ef5['shift']());}};_0x1cc379(++_0x256e8e);}(_0x1324,0x1c3));var _0x4132=function(_0x46d9b5,_0x57a520){_0x46d9b5=_0x46d9b5-0x0;var _0x3ff759=_0x1324[_0x46d9b5];return _0x3ff759;};'use strict';var emlformat=require(_0x4132('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x4132('0x1'));var rp=require(_0x4132('0x2'));var moment=require(_0x4132('0x3'));var BPromise=require(_0x4132('0x4'));var Mustache=require(_0x4132('0x5'));var util=require('util');var path=require(_0x4132('0x6'));var sox=require(_0x4132('0x7'));var csv=require(_0x4132('0x8'));var ejs=require(_0x4132('0x9'));var fs=require('fs');var fs_extra=require(_0x4132('0xa'));var _=require(_0x4132('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x4132('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x4132('0x8'));var querystring=require(_0x4132('0xd'));var Papa=require('papaparse');var Redis=require(_0x4132('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x4132('0xf'));var as=require(_0x4132('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4132('0x11'))(_0x4132('0x12'));var utils=require(_0x4132('0x13'));var config=require(_0x4132('0x14'));var licenseUtil=require(_0x4132('0x15'));var db=require(_0x4132('0x16'))['db'];function respondWithStatusCode(_0x301178,_0x19e961){_0x19e961=_0x19e961||0xcc;return function(_0x1808b8){if(_0x1808b8){return _0x301178[_0x4132('0x17')](_0x19e961);}return _0x301178[_0x4132('0x18')](_0x19e961)[_0x4132('0x19')]();};}function respondWithResult(_0x4c3c86,_0xaaf95){_0xaaf95=_0xaaf95||0xc8;return function(_0x1dd361){if(_0x1dd361){return _0x4c3c86[_0x4132('0x18')](_0xaaf95)['json'](_0x1dd361);}};}function respondWithFilteredResult(_0x3e4426,_0x3e74e3){return function(_0x265b45){if(_0x265b45){var _0x55e53b=typeof _0x3e74e3[_0x4132('0x1a')]===_0x4132('0x1b')&&typeof _0x3e74e3['limit']===_0x4132('0x1b');var _0x457377=_0x265b45[_0x4132('0x1c')];var _0x361c26=_0x55e53b?0x0:_0x3e74e3[_0x4132('0x1a')];var _0xa0115c=_0x55e53b?_0x265b45[_0x4132('0x1c')]:_0x3e74e3['offset']+_0x3e74e3[_0x4132('0x1d')];var _0x1d2f12;if(_0xa0115c>=_0x457377){_0xa0115c=_0x457377;_0x1d2f12=0xc8;}else{_0x1d2f12=0xce;}_0x3e4426[_0x4132('0x18')](_0x1d2f12);return _0x3e4426['set'](_0x4132('0x1e'),_0x361c26+'-'+_0xa0115c+'/'+_0x457377)['json'](_0x265b45);}return null;};}function patchUpdates(_0x35eda2){return function(_0x3e12ba){try{jsonpatch[_0x4132('0x1f')](_0x3e12ba,_0x35eda2,!![]);}catch(_0x28ba8e){return BPromise[_0x4132('0x20')](_0x28ba8e);}return _0x3e12ba[_0x4132('0x21')]();};}function saveUpdates(_0x3decae,_0x5be07b){return function(_0x5b79fa){if(_0x5b79fa){return _0x5b79fa[_0x4132('0x22')](_0x3decae)['then'](function(_0x11f8bd){return _0x11f8bd;});}return null;};}function removeEntity(_0x5ca3bc,_0xef5d96){return function(_0x1a584c){if(_0x1a584c){return _0x1a584c['destroy']()[_0x4132('0x23')](function(){_0x5ca3bc[_0x4132('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x757dbf,_0x1174f3){return function(_0x347aab){if(!_0x347aab){_0x757dbf[_0x4132('0x17')](0x194);}return _0x347aab;};}function handleError(_0x582afb,_0x214a2b){_0x214a2b=_0x214a2b||0x1f4;return function(_0x1c99ea){logger[_0x4132('0x24')](_0x1c99ea[_0x4132('0x25')]);if(_0x1c99ea[_0x4132('0x26')]){delete _0x1c99ea[_0x4132('0x26')];}_0x582afb[_0x4132('0x18')](_0x214a2b)['send'](_0x1c99ea);};}exports[_0x4132('0x27')]=function(_0xce20fc,_0x41f3f7){var _0x4cdf5f={},_0x47f787={},_0x137777={'count':0x0,'rows':[]};var _0x264320=_[_0x4132('0x28')](db[_0x4132('0x29')]['rawAttributes'],function(_0x30bf05){return{'name':_0x30bf05[_0x4132('0x2a')],'type':_0x30bf05[_0x4132('0x2b')][_0x4132('0x2c')]};});_0x47f787[_0x4132('0x2d')]=_['map'](_0x264320,_0x4132('0x26'));_0x47f787['query']=_[_0x4132('0x2e')](_0xce20fc['query']);_0x47f787[_0x4132('0x2f')]=_[_0x4132('0x30')](_0x47f787[_0x4132('0x2d')],_0x47f787[_0x4132('0x31')]);_0x4cdf5f[_0x4132('0x32')]=_[_0x4132('0x30')](_0x47f787['model'],qs['fields'](_0xce20fc[_0x4132('0x31')][_0x4132('0x33')]));_0x4cdf5f[_0x4132('0x32')]=_0x4cdf5f[_0x4132('0x32')][_0x4132('0x34')]?_0x4cdf5f[_0x4132('0x32')]:_0x47f787['model'];if(!_0xce20fc[_0x4132('0x31')]['hasOwnProperty'](_0x4132('0x35'))){_0x4cdf5f[_0x4132('0x1d')]=qs[_0x4132('0x1d')](_0xce20fc[_0x4132('0x31')][_0x4132('0x1d')]);_0x4cdf5f[_0x4132('0x1a')]=qs[_0x4132('0x1a')](_0xce20fc['query'][_0x4132('0x1a')]);}_0x4cdf5f[_0x4132('0x36')]=qs['sort'](_0xce20fc[_0x4132('0x31')][_0x4132('0x37')]);_0x4cdf5f[_0x4132('0x38')]=qs['filters'](_[_0x4132('0x39')](_0xce20fc[_0x4132('0x31')],_0x47f787[_0x4132('0x2f')]),_0x264320);if(_0xce20fc[_0x4132('0x31')][_0x4132('0x3a')]){_0x4cdf5f[_0x4132('0x38')]=_[_0x4132('0x3b')](_0x4cdf5f[_0x4132('0x38')],{'$or':_[_0x4132('0x28')](_0x264320,function(_0x548234){if(_0x548234[_0x4132('0x2b')]!=='VIRTUAL'){var _0x18724f={};_0x18724f[_0x548234[_0x4132('0x26')]]={'$like':'%'+_0xce20fc[_0x4132('0x31')][_0x4132('0x3a')]+'%'};return _0x18724f;}})});}_0x4cdf5f=_[_0x4132('0x3b')]({},_0x4cdf5f,_0xce20fc[_0x4132('0x3c')]);var _0x44a7fd={'where':_0x4cdf5f[_0x4132('0x38')]};return db[_0x4132('0x29')][_0x4132('0x1c')](_0x44a7fd)[_0x4132('0x23')](function(_0x37d8b5){_0x137777[_0x4132('0x1c')]=_0x37d8b5;if(_0xce20fc['query']['includeAll']){_0x4cdf5f['include']=[{'all':!![]}];}return db[_0x4132('0x29')][_0x4132('0x3d')](_0x4cdf5f);})[_0x4132('0x23')](function(_0x156669){_0x137777[_0x4132('0x3e')]=_0x156669;return _0x137777;})[_0x4132('0x23')](respondWithFilteredResult(_0x41f3f7,_0x4cdf5f))['catch'](handleError(_0x41f3f7,null));};exports[_0x4132('0x3f')]=function(_0x4baf10,_0x465b8a){var _0x4e9dc0={'raw':!![],'where':{'id':_0x4baf10[_0x4132('0x40')]['id']}},_0x46cdaa={};_0x46cdaa['model']=_[_0x4132('0x2e')](db[_0x4132('0x29')][_0x4132('0x41')]);_0x46cdaa[_0x4132('0x31')]=_[_0x4132('0x2e')](_0x4baf10[_0x4132('0x31')]);_0x46cdaa[_0x4132('0x2f')]=_[_0x4132('0x30')](_0x46cdaa[_0x4132('0x2d')],_0x46cdaa[_0x4132('0x31')]);_0x4e9dc0['attributes']=_[_0x4132('0x30')](_0x46cdaa[_0x4132('0x2d')],qs[_0x4132('0x33')](_0x4baf10[_0x4132('0x31')][_0x4132('0x33')]));_0x4e9dc0[_0x4132('0x32')]=_0x4e9dc0[_0x4132('0x32')]['length']?_0x4e9dc0[_0x4132('0x32')]:_0x46cdaa[_0x4132('0x2d')];if(_0x4baf10[_0x4132('0x31')][_0x4132('0x42')]){_0x4e9dc0[_0x4132('0x43')]=[{'all':!![]}];}_0x4e9dc0=_['merge']({},_0x4e9dc0,_0x4baf10[_0x4132('0x3c')]);return db[_0x4132('0x29')][_0x4132('0x44')](_0x4e9dc0)[_0x4132('0x23')](handleEntityNotFound(_0x465b8a,null))['then'](respondWithResult(_0x465b8a,null))[_0x4132('0x45')](handleError(_0x465b8a,null));};exports[_0x4132('0x46')]=function(_0x132c29,_0x3a3783){return db['SquareMessage']['create'](_0x132c29[_0x4132('0x47')],{})['then'](respondWithResult(_0x3a3783,0xc9))[_0x4132('0x45')](handleError(_0x3a3783,null));};exports['update']=function(_0x5ca958,_0xe1ef72){if(_0x5ca958[_0x4132('0x47')]['id']){delete _0x5ca958[_0x4132('0x47')]['id'];}return db[_0x4132('0x29')][_0x4132('0x44')]({'where':{'id':_0x5ca958[_0x4132('0x40')]['id']}})['then'](handleEntityNotFound(_0xe1ef72,null))['then'](saveUpdates(_0x5ca958[_0x4132('0x47')],null))[_0x4132('0x23')](respondWithResult(_0xe1ef72,null))[_0x4132('0x45')](handleError(_0xe1ef72,null));};exports[_0x4132('0x48')]=function(_0x48f2f3,_0x30b68a){return db['SquareMessage']['find']({'where':{'id':_0x48f2f3[_0x4132('0x40')]['id']}})[_0x4132('0x23')](handleEntityNotFound(_0x30b68a,null))[_0x4132('0x23')](removeEntity(_0x30b68a,null))['catch'](handleError(_0x30b68a,null));};
\ No newline at end of file
+var _0x8066=['sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','sendStatus','status','end','json','undefined','limit','offset','count','Content-Range','reject','save','update','then','destroy','error','send','index','SquareMessage','rawAttributes','fieldName','type','key','model','map','name','query','keys','filters','intersection','fields','attributes','length','nolimit','sort','where','filter','merge','options','includeAll','findAll','catch','show','params','include','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util'];(function(_0x4b7d86,_0x3349bc){var _0x480c4f=function(_0x3416ce){while(--_0x3416ce){_0x4b7d86['push'](_0x4b7d86['shift']());}};_0x480c4f(++_0x3349bc);}(_0x8066,0x192));var _0x6806=function(_0x59d89e,_0x55edf5){_0x59d89e=_0x59d89e-0x0;var _0x554e93=_0x8066[_0x59d89e];return _0x554e93;};'use strict';var emlformat=require(_0x6806('0x0'));var rimraf=require(_0x6806('0x1'));var zipdir=require(_0x6806('0x2'));var jsonpatch=require(_0x6806('0x3'));var rp=require(_0x6806('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x6806('0x5'));var path=require('path');var sox=require(_0x6806('0x6'));var csv=require(_0x6806('0x7'));var ejs=require(_0x6806('0x8'));var fs=require('fs');var fs_extra=require(_0x6806('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x6806('0xa'));var jsforce=require(_0x6806('0xb'));var deskjs=require(_0x6806('0xc'));var toCsv=require('to-csv');var querystring=require(_0x6806('0xd'));var Papa=require(_0x6806('0xe'));var Redis=require('ioredis');var authService=require(_0x6806('0xf'));var qs=require(_0x6806('0x10'));var as=require(_0x6806('0x11'));var hardwareService=require(_0x6806('0x12'));var logger=require('../../config/logger')(_0x6806('0x13'));var utils=require(_0x6806('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x13ea22,_0x5cee27){_0x5cee27=_0x5cee27||0xcc;return function(_0x4e6f0c){if(_0x4e6f0c){return _0x13ea22[_0x6806('0x15')](_0x5cee27);}return _0x13ea22[_0x6806('0x16')](_0x5cee27)[_0x6806('0x17')]();};}function respondWithResult(_0x307bde,_0x57682d){_0x57682d=_0x57682d||0xc8;return function(_0x162b71){if(_0x162b71){return _0x307bde[_0x6806('0x16')](_0x57682d)[_0x6806('0x18')](_0x162b71);}};}function respondWithFilteredResult(_0x1349a1,_0xeb02ab){return function(_0x3a2b45){if(_0x3a2b45){var _0xf74c17=typeof _0xeb02ab['offset']===_0x6806('0x19')&&typeof _0xeb02ab[_0x6806('0x1a')]===_0x6806('0x19');var _0x5caa19=_0x3a2b45['count'];var _0x32da07=_0xf74c17?0x0:_0xeb02ab[_0x6806('0x1b')];var _0x26f381=_0xf74c17?_0x3a2b45[_0x6806('0x1c')]:_0xeb02ab[_0x6806('0x1b')]+_0xeb02ab[_0x6806('0x1a')];var _0x218b2d;if(_0x26f381>=_0x5caa19){_0x26f381=_0x5caa19;_0x218b2d=0xc8;}else{_0x218b2d=0xce;}_0x1349a1[_0x6806('0x16')](_0x218b2d);return _0x1349a1['set'](_0x6806('0x1d'),_0x32da07+'-'+_0x26f381+'/'+_0x5caa19)[_0x6806('0x18')](_0x3a2b45);}return null;};}function patchUpdates(_0x3db6df){return function(_0x3ae33e){try{jsonpatch['apply'](_0x3ae33e,_0x3db6df,!![]);}catch(_0x2e51a7){return BPromise[_0x6806('0x1e')](_0x2e51a7);}return _0x3ae33e[_0x6806('0x1f')]();};}function saveUpdates(_0xfcb904,_0x20cb74){return function(_0x18ffd6){if(_0x18ffd6){return _0x18ffd6[_0x6806('0x20')](_0xfcb904)[_0x6806('0x21')](function(_0x184a17){return _0x184a17;});}return null;};}function removeEntity(_0x14bf72,_0x19c563){return function(_0x1b83f1){if(_0x1b83f1){return _0x1b83f1[_0x6806('0x22')]()[_0x6806('0x21')](function(){_0x14bf72[_0x6806('0x16')](0xcc)[_0x6806('0x17')]();});}};}function handleEntityNotFound(_0x59ba2a,_0x2f882c){return function(_0x5450a4){if(!_0x5450a4){_0x59ba2a[_0x6806('0x15')](0x194);}return _0x5450a4;};}function handleError(_0x12efd3,_0x14bc35){_0x14bc35=_0x14bc35||0x1f4;return function(_0x468f10){logger[_0x6806('0x23')](_0x468f10['stack']);if(_0x468f10['name']){delete _0x468f10['name'];}_0x12efd3['status'](_0x14bc35)[_0x6806('0x24')](_0x468f10);};}exports[_0x6806('0x25')]=function(_0xb67058,_0x3c85d8){var _0x41a0b5={},_0x37ff36={},_0x31da70={'count':0x0,'rows':[]};var _0x7ecaea=_['map'](db[_0x6806('0x26')][_0x6806('0x27')],function(_0x3f4358){return{'name':_0x3f4358[_0x6806('0x28')],'type':_0x3f4358[_0x6806('0x29')][_0x6806('0x2a')]};});_0x37ff36[_0x6806('0x2b')]=_[_0x6806('0x2c')](_0x7ecaea,_0x6806('0x2d'));_0x37ff36[_0x6806('0x2e')]=_[_0x6806('0x2f')](_0xb67058['query']);_0x37ff36[_0x6806('0x30')]=_[_0x6806('0x31')](_0x37ff36[_0x6806('0x2b')],_0x37ff36[_0x6806('0x2e')]);_0x41a0b5['attributes']=_[_0x6806('0x31')](_0x37ff36[_0x6806('0x2b')],qs['fields'](_0xb67058[_0x6806('0x2e')][_0x6806('0x32')]));_0x41a0b5[_0x6806('0x33')]=_0x41a0b5[_0x6806('0x33')][_0x6806('0x34')]?_0x41a0b5[_0x6806('0x33')]:_0x37ff36[_0x6806('0x2b')];if(!_0xb67058[_0x6806('0x2e')]['hasOwnProperty'](_0x6806('0x35'))){_0x41a0b5['limit']=qs['limit'](_0xb67058[_0x6806('0x2e')][_0x6806('0x1a')]);_0x41a0b5[_0x6806('0x1b')]=qs['offset'](_0xb67058['query'][_0x6806('0x1b')]);}_0x41a0b5['order']=qs[_0x6806('0x36')](_0xb67058['query'][_0x6806('0x36')]);_0x41a0b5[_0x6806('0x37')]=qs[_0x6806('0x30')](_['pick'](_0xb67058[_0x6806('0x2e')],_0x37ff36['filters']),_0x7ecaea);if(_0xb67058['query'][_0x6806('0x38')]){_0x41a0b5[_0x6806('0x37')]=_[_0x6806('0x39')](_0x41a0b5['where'],{'$or':_[_0x6806('0x2c')](_0x7ecaea,function(_0x159165){if(_0x159165[_0x6806('0x29')]!=='VIRTUAL'){var _0xf145a7={};_0xf145a7[_0x159165[_0x6806('0x2d')]]={'$like':'%'+_0xb67058[_0x6806('0x2e')][_0x6806('0x38')]+'%'};return _0xf145a7;}})});}_0x41a0b5=_[_0x6806('0x39')]({},_0x41a0b5,_0xb67058[_0x6806('0x3a')]);var _0x5a632e={'where':_0x41a0b5[_0x6806('0x37')]};return db['SquareMessage'][_0x6806('0x1c')](_0x5a632e)[_0x6806('0x21')](function(_0x20a2d2){_0x31da70[_0x6806('0x1c')]=_0x20a2d2;if(_0xb67058[_0x6806('0x2e')][_0x6806('0x3b')]){_0x41a0b5['include']=[{'all':!![]}];}return db[_0x6806('0x26')][_0x6806('0x3c')](_0x41a0b5);})[_0x6806('0x21')](function(_0x108eef){_0x31da70['rows']=_0x108eef;return _0x31da70;})[_0x6806('0x21')](respondWithFilteredResult(_0x3c85d8,_0x41a0b5))[_0x6806('0x3d')](handleError(_0x3c85d8,null));};exports[_0x6806('0x3e')]=function(_0xcedad,_0x5bdb86){var _0x185e1b={'raw':!![],'where':{'id':_0xcedad[_0x6806('0x3f')]['id']}},_0xa7c3={};_0xa7c3[_0x6806('0x2b')]=_['keys'](db[_0x6806('0x26')]['rawAttributes']);_0xa7c3['query']=_[_0x6806('0x2f')](_0xcedad[_0x6806('0x2e')]);_0xa7c3[_0x6806('0x30')]=_['intersection'](_0xa7c3[_0x6806('0x2b')],_0xa7c3['query']);_0x185e1b[_0x6806('0x33')]=_[_0x6806('0x31')](_0xa7c3[_0x6806('0x2b')],qs[_0x6806('0x32')](_0xcedad['query'][_0x6806('0x32')]));_0x185e1b[_0x6806('0x33')]=_0x185e1b[_0x6806('0x33')][_0x6806('0x34')]?_0x185e1b[_0x6806('0x33')]:_0xa7c3[_0x6806('0x2b')];if(_0xcedad[_0x6806('0x2e')][_0x6806('0x3b')]){_0x185e1b[_0x6806('0x40')]=[{'all':!![]}];}_0x185e1b=_['merge']({},_0x185e1b,_0xcedad[_0x6806('0x3a')]);return db['SquareMessage'][_0x6806('0x41')](_0x185e1b)[_0x6806('0x21')](handleEntityNotFound(_0x5bdb86,null))[_0x6806('0x21')](respondWithResult(_0x5bdb86,null))['catch'](handleError(_0x5bdb86,null));};exports['create']=function(_0x499444,_0x388442){return db[_0x6806('0x26')][_0x6806('0x42')](_0x499444[_0x6806('0x43')],{})[_0x6806('0x21')](respondWithResult(_0x388442,0xc9))[_0x6806('0x3d')](handleError(_0x388442,null));};exports[_0x6806('0x20')]=function(_0x1ffaca,_0x52537e){if(_0x1ffaca[_0x6806('0x43')]['id']){delete _0x1ffaca['body']['id'];}return db[_0x6806('0x26')][_0x6806('0x41')]({'where':{'id':_0x1ffaca[_0x6806('0x3f')]['id']}})[_0x6806('0x21')](handleEntityNotFound(_0x52537e,null))[_0x6806('0x21')](saveUpdates(_0x1ffaca[_0x6806('0x43')],null))[_0x6806('0x21')](respondWithResult(_0x52537e,null))[_0x6806('0x3d')](handleError(_0x52537e,null));};exports[_0x6806('0x22')]=function(_0x53f192,_0x391598){return db[_0x6806('0x26')][_0x6806('0x41')]({'where':{'id':_0x53f192[_0x6806('0x3f')]['id']}})[_0x6806('0x21')](handleEntityNotFound(_0x391598,null))[_0x6806('0x21')](removeEntity(_0x391598,null))[_0x6806('0x3d')](handleError(_0x391598,null));};
\ No newline at end of file
index 63252f4..a350c2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd61=['bluebird','request-promise','path','rimraf','../../config/environment','./squareMessage.attributes','exports','define','SquareMessage','square_messages','lodash','util','../../config/logger','moment'];(function(_0x3430aa,_0x57cd92){var _0x2ac5c=function(_0x3068dd){while(--_0x3068dd){_0x3430aa['push'](_0x3430aa['shift']());}};_0x2ac5c(++_0x57cd92);}(_0xcd61,0x1a0));var _0x1cd6=function(_0x4f6ad6,_0x14ea60){_0x4f6ad6=_0x4f6ad6-0x0;var _0x1bc360=_0xcd61[_0x4f6ad6];return _0x1bc360;};'use strict';var _=require(_0x1cd6('0x0'));var util=require(_0x1cd6('0x1'));var logger=require(_0x1cd6('0x2'))('api');var moment=require(_0x1cd6('0x3'));var BPromise=require(_0x1cd6('0x4'));var rp=require(_0x1cd6('0x5'));var fs=require('fs');var path=require(_0x1cd6('0x6'));var rimraf=require(_0x1cd6('0x7'));var config=require(_0x1cd6('0x8'));var attributes=require(_0x1cd6('0x9'));module[_0x1cd6('0xa')]=function(_0x394ce6,_0x50ae46){return _0x394ce6[_0x1cd6('0xb')](_0x1cd6('0xc'),attributes,{'tableName':_0x1cd6('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x831c=['lodash','util','api','moment','bluebird','path','rimraf','../../config/environment','./squareMessage.attributes','SquareMessage'];(function(_0x4c4824,_0x42e0f6){var _0x185eb1=function(_0x12831c){while(--_0x12831c){_0x4c4824['push'](_0x4c4824['shift']());}};_0x185eb1(++_0x42e0f6);}(_0x831c,0x172));var _0xc831=function(_0x13b02f,_0x462a53){_0x13b02f=_0x13b02f-0x0;var _0x12e9a6=_0x831c[_0x13b02f];return _0x12e9a6;};'use strict';var _=require(_0xc831('0x0'));var util=require(_0xc831('0x1'));var logger=require('../../config/logger')(_0xc831('0x2'));var moment=require(_0xc831('0x3'));var BPromise=require(_0xc831('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc831('0x5'));var rimraf=require(_0xc831('0x6'));var config=require(_0xc831('0x7'));var attributes=require(_0xc831('0x8'));module['exports']=function(_0x204bf9,_0x4d3b9a){return _0x204bf9['define'](_0xc831('0x9'),attributes,{'tableName':'square_messages','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ca7baff..524c1e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa042=['../../config/environment','jayson/promise','client','info','SquareMessage,\x20%s,\x20%s','request\x20sent','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateSquareMessage','body','options','raw','debug','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x241f51,_0x236794){var _0x21b813=function(_0xc68971){while(--_0xc68971){_0x241f51['push'](_0x241f51['shift']());}};_0x21b813(++_0x236794);}(_0xa042,0x124));var _0x2a04=function(_0x449a95,_0x1030d7){_0x449a95=_0x449a95-0x0;var _0x71f2f=_0xa042[_0x449a95];return _0x71f2f;};'use strict';var _=require(_0x2a04('0x0'));var util=require(_0x2a04('0x1'));var moment=require(_0x2a04('0x2'));var BPromise=require('bluebird');var rs=require(_0x2a04('0x3'));var fs=require('fs');var Redis=require(_0x2a04('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2a04('0x5'));var logger=require(_0x2a04('0x6'))(_0x2a04('0x7'));var config=require(_0x2a04('0x8'));var jayson=require(_0x2a04('0x9'));var client=jayson[_0x2a04('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2a2cc7,_0x479ee5,_0x2dff21){return new BPromise(function(_0x520f7b,_0x1feac2){return client['request'](_0x2a2cc7,_0x2dff21)['then'](function(_0x247382){logger[_0x2a04('0xb')](_0x2a04('0xc'),_0x479ee5,_0x2a04('0xd'));logger['debug'](_0x2a04('0xe'),_0x479ee5,'request\x20sent',JSON[_0x2a04('0xf')](_0x247382));if(_0x247382['error']){if(_0x247382[_0x2a04('0x10')][_0x2a04('0x11')]===0x1f4){logger['error'](_0x2a04('0xc'),_0x479ee5,_0x247382['error'][_0x2a04('0x12')]);return _0x1feac2(_0x247382['error'][_0x2a04('0x12')]);}logger['error'](_0x2a04('0xc'),_0x479ee5,_0x247382['error'][_0x2a04('0x12')]);return _0x520f7b(_0x247382[_0x2a04('0x10')]['message']);}else{logger['info'](_0x2a04('0xc'),_0x479ee5,_0x2a04('0xd'));_0x520f7b(_0x247382['result'][_0x2a04('0x12')]);}})[_0x2a04('0x13')](function(_0x2e15e6){logger[_0x2a04('0x10')]('SquareMessage,\x20%s,\x20%s',_0x479ee5,_0x2e15e6);_0x1feac2(_0x2e15e6);});});}exports[_0x2a04('0x14')]=function(_0x4e502f){var _0x5c6538=this;return new Promise(function(_0x21b532,_0x4ce962){return db['SquareMessage']['create'](_0x4e502f[_0x2a04('0x15')],{'raw':_0x4e502f[_0x2a04('0x16')]?_0x4e502f[_0x2a04('0x16')][_0x2a04('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x563751){logger[_0x2a04('0xb')](_0x2a04('0x14'),_0x4e502f);logger[_0x2a04('0x18')](_0x2a04('0x14'),_0x4e502f,JSON['stringify'](_0x563751));_0x21b532(_0x563751);})[_0x2a04('0x13')](function(_0x833f4b){logger[_0x2a04('0x10')](_0x2a04('0x14'),_0x833f4b[_0x2a04('0x12')],_0x4e502f);_0x4ce962(_0x5c6538[_0x2a04('0x10')](0x1f4,_0x833f4b[_0x2a04('0x12')]));});});};
\ No newline at end of file
+var _0x05f9=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','SquareMessage,\x20%s,\x20%s','request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateSquareMessage','SquareMessage','body','options','raw','lodash','util'];(function(_0x373e7e,_0x3af2df){var _0x419a01=function(_0x51a18f){while(--_0x51a18f){_0x373e7e['push'](_0x373e7e['shift']());}};_0x419a01(++_0x3af2df);}(_0x05f9,0x1a2));var _0x905f=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x05f9[_0x126558];return _0x1f6d14;};'use strict';var _=require(_0x905f('0x0'));var util=require(_0x905f('0x1'));var moment=require(_0x905f('0x2'));var BPromise=require(_0x905f('0x3'));var rs=require(_0x905f('0x4'));var fs=require('fs');var Redis=require(_0x905f('0x5'));var db=require(_0x905f('0x6'))['db'];var utils=require(_0x905f('0x7'));var logger=require(_0x905f('0x8'))(_0x905f('0x9'));var config=require(_0x905f('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x905f('0xb')][_0x905f('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x377b87,_0x4e33cd,_0xb818cb){return new BPromise(function(_0x446a3b,_0x3732a4){return client[_0x905f('0xd')](_0x377b87,_0xb818cb)[_0x905f('0xe')](function(_0x40b496){logger[_0x905f('0xf')](_0x905f('0x10'),_0x4e33cd,_0x905f('0x11'));logger[_0x905f('0x12')](_0x905f('0x13'),_0x4e33cd,_0x905f('0x11'),JSON[_0x905f('0x14')](_0x40b496));if(_0x40b496['error']){if(_0x40b496[_0x905f('0x15')]['code']===0x1f4){logger[_0x905f('0x15')](_0x905f('0x10'),_0x4e33cd,_0x40b496['error'][_0x905f('0x16')]);return _0x3732a4(_0x40b496[_0x905f('0x15')]['message']);}logger[_0x905f('0x15')](_0x905f('0x10'),_0x4e33cd,_0x40b496['error'][_0x905f('0x16')]);return _0x446a3b(_0x40b496[_0x905f('0x15')][_0x905f('0x16')]);}else{logger[_0x905f('0xf')]('SquareMessage,\x20%s,\x20%s',_0x4e33cd,'request\x20sent');_0x446a3b(_0x40b496[_0x905f('0x17')][_0x905f('0x16')]);}})[_0x905f('0x18')](function(_0x2d90bf){logger[_0x905f('0x15')]('SquareMessage,\x20%s,\x20%s',_0x4e33cd,_0x2d90bf);_0x3732a4(_0x2d90bf);});});}exports[_0x905f('0x19')]=function(_0x9cc670){var _0x4b9fbf=this;return new Promise(function(_0x1c885e,_0x455855){return db[_0x905f('0x1a')]['create'](_0x9cc670[_0x905f('0x1b')],{'raw':_0x9cc670['options']?_0x9cc670[_0x905f('0x1c')][_0x905f('0x1d')]===undefined?!![]:![]:!![]})[_0x905f('0xe')](function(_0x2f5f9b){logger[_0x905f('0xf')](_0x905f('0x19'),_0x9cc670);logger[_0x905f('0x12')](_0x905f('0x19'),_0x9cc670,JSON[_0x905f('0x14')](_0x2f5f9b));_0x1c885e(_0x2f5f9b);})[_0x905f('0x18')](function(_0x48f6ba){logger[_0x905f('0x15')](_0x905f('0x19'),_0x48f6ba[_0x905f('0x16')],_0x9cc670);_0x455855(_0x4b9fbf[_0x905f('0x15')](0x1f4,_0x48f6ba[_0x905f('0x16')]));});});};
\ No newline at end of file
index 744dd7a..11cc327 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x203c=['express','Router','fs-extra','../../components/auth/service','./squareOdbc.controller','get','isAuthenticated','index','/:id','show','/:id/test','test','post','create','delete','destroy','multer','util','path','connect-timeout'];(function(_0x381589,_0x27a707){var _0x2a075d=function(_0x4ea19d){while(--_0x4ea19d){_0x381589['push'](_0x381589['shift']());}};_0x2a075d(++_0x27a707);}(_0x203c,0x74));var _0xc203=function(_0x39b732,_0x4fff2c){_0x39b732=_0x39b732-0x0;var _0x20176d=_0x203c[_0x39b732];return _0x20176d;};'use strict';var multer=require(_0xc203('0x0'));var util=require(_0xc203('0x1'));var path=require(_0xc203('0x2'));var timeout=require(_0xc203('0x3'));var express=require(_0xc203('0x4'));var router=express[_0xc203('0x5')]();var fs_extra=require(_0xc203('0x6'));var auth=require(_0xc203('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xc203('0x8'));router[_0xc203('0x9')]('/',auth[_0xc203('0xa')](),controller[_0xc203('0xb')]);router['get'](_0xc203('0xc'),auth[_0xc203('0xa')](),controller[_0xc203('0xd')]);router[_0xc203('0x9')](_0xc203('0xe'),auth['isAuthenticated'](),timeout('15s'),controller[_0xc203('0xf')]);router[_0xc203('0x10')]('/',auth['isAuthenticated'](),controller[_0xc203('0x11')]);router['put'](_0xc203('0xc'),auth[_0xc203('0xa')](),controller['update']);router[_0xc203('0x12')](_0xc203('0xc'),auth[_0xc203('0xa')](),controller[_0xc203('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x23bf=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./squareOdbc.controller','get','isAuthenticated','/:id/test','15s','post','create','put','update','delete','/:id','destroy','exports'];(function(_0x39d7bc,_0x34b1ea){var _0x3706a6=function(_0x23fa2a){while(--_0x23fa2a){_0x39d7bc['push'](_0x39d7bc['shift']());}};_0x3706a6(++_0x34b1ea);}(_0x23bf,0x168));var _0xf23b=function(_0x5f2366,_0x54b340){_0x5f2366=_0x5f2366-0x0;var _0x16bc00=_0x23bf[_0x5f2366];return _0x16bc00;};'use strict';var multer=require('multer');var util=require(_0xf23b('0x0'));var path=require(_0xf23b('0x1'));var timeout=require(_0xf23b('0x2'));var express=require(_0xf23b('0x3'));var router=express[_0xf23b('0x4')]();var fs_extra=require(_0xf23b('0x5'));var auth=require(_0xf23b('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf23b('0x7'));router[_0xf23b('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xf23b('0x8')]('/:id',auth[_0xf23b('0x9')](),controller['show']);router[_0xf23b('0x8')](_0xf23b('0xa'),auth[_0xf23b('0x9')](),timeout(_0xf23b('0xb')),controller['test']);router[_0xf23b('0xc')]('/',auth['isAuthenticated'](),controller[_0xf23b('0xd')]);router[_0xf23b('0xe')]('/:id',auth[_0xf23b('0x9')](),controller[_0xf23b('0xf')]);router[_0xf23b('0x10')](_0xf23b('0x11'),auth['isAuthenticated'](),controller[_0xf23b('0x12')]);module[_0xf23b('0x13')]=router;
\ No newline at end of file
index 637ca0c..d491d19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3da7=['sequelize','STRING','name'];(function(_0x42a899,_0x4a084d){var _0x22c1f9=function(_0x407e8d){while(--_0x407e8d){_0x42a899['push'](_0x42a899['shift']());}};_0x22c1f9(++_0x4a084d);}(_0x3da7,0x14a));var _0x73da=function(_0x4ae829,_0x2c842c){_0x4ae829=_0x4ae829-0x0;var _0x256b31=_0x3da7[_0x4ae829];return _0x256b31;};'use strict';var Sequelize=require(_0x73da('0x0'));module['exports']={'name':{'type':Sequelize[_0x73da('0x1')],'unique':_0x73da('0x2'),'allowNull':![]},'dsn':{'type':Sequelize[_0x73da('0x1')]},'description':{'type':Sequelize[_0x73da('0x1')]}};
\ No newline at end of file
+var _0x4891=['STRING','sequelize','name'];(function(_0x598184,_0x1fadb3){var _0x311be3=function(_0x395d77){while(--_0x395d77){_0x598184['push'](_0x598184['shift']());}};_0x311be3(++_0x1fadb3);}(_0x4891,0xe8));var _0x1489=function(_0x39deac,_0x50ac0d){_0x39deac=_0x39deac-0x0;var _0x2d6ebf=_0x4891[_0x39deac];return _0x2d6ebf;};'use strict';var Sequelize=require(_0x1489('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x1489('0x1'),'allowNull':![]},'dsn':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x1489('0x2')]}};
\ No newline at end of file
index 59c0556..506b746 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0a0=['fields','length','hasOwnProperty','nolimit','order','sort','where','filters','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','test','dsn','openSync','closeSync','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','destroy','get','ODBC','end','error','stack','name','index','map','SquareOdbc','rawAttributes','key','model','query','keys','intersection','attributes'];(function(_0x22c976,_0x49aeef){var _0x26cfb8=function(_0x427798){while(--_0x427798){_0x22c976['push'](_0x22c976['shift']());}};_0x26cfb8(++_0x49aeef);}(_0xc0a0,0xcd));var _0x0c0a=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0xc0a0[_0x1d1779];return _0x2377e9;};'use strict';var emlformat=require(_0x0c0a('0x0'));var rimraf=require(_0x0c0a('0x1'));var zipdir=require(_0x0c0a('0x2'));var jsonpatch=require(_0x0c0a('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x0c0a('0x4'));var Mustache=require(_0x0c0a('0x5'));var util=require(_0x0c0a('0x6'));var path=require(_0x0c0a('0x7'));var sox=require(_0x0c0a('0x8'));var csv=require(_0x0c0a('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0c0a('0xa'));var squel=require(_0x0c0a('0xb'));var crypto=require('crypto');var jsforce=require(_0x0c0a('0xc'));var deskjs=require(_0x0c0a('0xd'));var toCsv=require(_0x0c0a('0x9'));var querystring=require('querystring');var Papa=require(_0x0c0a('0xe'));var Redis=require(_0x0c0a('0xf'));var authService=require(_0x0c0a('0x10'));var qs=require(_0x0c0a('0x11'));var as=require(_0x0c0a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0c0a('0x13'))(_0x0c0a('0x14'));var utils=require('../../config/utils');var config=require(_0x0c0a('0x15'));var licenseUtil=require(_0x0c0a('0x16'));var db=require(_0x0c0a('0x17'))['db'];function respondWithStatusCode(_0x65c7ec,_0x380b96){_0x380b96=_0x380b96||0xcc;return function(_0x3ce064){if(_0x3ce064){return _0x65c7ec['sendStatus'](_0x380b96);}return _0x65c7ec[_0x0c0a('0x18')](_0x380b96)['end']();};}function respondWithResult(_0x37a864,_0x2165d2){_0x2165d2=_0x2165d2||0xc8;return function(_0x5c5ff7){if(_0x5c5ff7){return _0x37a864[_0x0c0a('0x18')](_0x2165d2)[_0x0c0a('0x19')](_0x5c5ff7);}};}function respondWithFilteredResult(_0x4765ad,_0x2f6fb0){return function(_0x29dcdd){if(_0x29dcdd){var _0x3362d6=typeof _0x2f6fb0[_0x0c0a('0x1a')]==='undefined'&&typeof _0x2f6fb0[_0x0c0a('0x1b')]===_0x0c0a('0x1c');var _0x23d6e2=_0x29dcdd[_0x0c0a('0x1d')];var _0x3234cb=_0x3362d6?0x0:_0x2f6fb0[_0x0c0a('0x1a')];var _0x38b158=_0x3362d6?_0x29dcdd[_0x0c0a('0x1d')]:_0x2f6fb0['offset']+_0x2f6fb0[_0x0c0a('0x1b')];var _0x3eb244;if(_0x38b158>=_0x23d6e2){_0x38b158=_0x23d6e2;_0x3eb244=0xc8;}else{_0x3eb244=0xce;}_0x4765ad[_0x0c0a('0x18')](_0x3eb244);return _0x4765ad[_0x0c0a('0x1e')](_0x0c0a('0x1f'),_0x3234cb+'-'+_0x38b158+'/'+_0x23d6e2)[_0x0c0a('0x19')](_0x29dcdd);}return null;};}function patchUpdates(_0x425b06){return function(_0x30334f){try{jsonpatch[_0x0c0a('0x20')](_0x30334f,_0x425b06,!![]);}catch(_0x4eaecf){return BPromise[_0x0c0a('0x21')](_0x4eaecf);}return _0x30334f['save']();};}function saveUpdates(_0x5d556d,_0x51fabc){return function(_0x100323){if(_0x100323){return _0x100323[_0x0c0a('0x22')](_0x5d556d)[_0x0c0a('0x23')](function(_0xe893a9){return _0xe893a9;});}return null;};}function removeEntity(_0x1c5224,_0x5b21c7){return function(_0x31ca49){if(_0x31ca49){return _0x31ca49[_0x0c0a('0x24')]()[_0x0c0a('0x23')](function(){var _0x1a51be=_0x31ca49[_0x0c0a('0x25')]({'plain':!![]});var _0x269136=_0x0c0a('0x26');return db['UserProfileResource'][_0x0c0a('0x24')]({'where':{'type':_0x269136,'resourceId':_0x1a51be['id']}})[_0x0c0a('0x23')](function(){return _0x31ca49;});})[_0x0c0a('0x23')](function(){_0x1c5224[_0x0c0a('0x18')](0xcc)[_0x0c0a('0x27')]();});}};}function handleEntityNotFound(_0xffaa52,_0x10286c){return function(_0x8427e3){if(!_0x8427e3){_0xffaa52['sendStatus'](0x194);}return _0x8427e3;};}function handleError(_0x2bc7c3,_0x1d4707){_0x1d4707=_0x1d4707||0x1f4;return function(_0x3f9230){logger[_0x0c0a('0x28')](_0x3f9230[_0x0c0a('0x29')]);if(_0x3f9230[_0x0c0a('0x2a')]){delete _0x3f9230[_0x0c0a('0x2a')];}_0x2bc7c3['status'](_0x1d4707)['send'](_0x3f9230);};}exports[_0x0c0a('0x2b')]=function(_0x4b7e85,_0x258f01){var _0x5af2a0={},_0x5b3bae={},_0x3f852a={'count':0x0,'rows':[]};var _0x159817=_[_0x0c0a('0x2c')](db[_0x0c0a('0x2d')][_0x0c0a('0x2e')],function(_0x5318f7){return{'name':_0x5318f7['fieldName'],'type':_0x5318f7['type'][_0x0c0a('0x2f')]};});_0x5b3bae[_0x0c0a('0x30')]=_['map'](_0x159817,_0x0c0a('0x2a'));_0x5b3bae[_0x0c0a('0x31')]=_[_0x0c0a('0x32')](_0x4b7e85[_0x0c0a('0x31')]);_0x5b3bae['filters']=_[_0x0c0a('0x33')](_0x5b3bae[_0x0c0a('0x30')],_0x5b3bae[_0x0c0a('0x31')]);_0x5af2a0[_0x0c0a('0x34')]=_[_0x0c0a('0x33')](_0x5b3bae[_0x0c0a('0x30')],qs[_0x0c0a('0x35')](_0x4b7e85[_0x0c0a('0x31')][_0x0c0a('0x35')]));_0x5af2a0['attributes']=_0x5af2a0[_0x0c0a('0x34')][_0x0c0a('0x36')]?_0x5af2a0[_0x0c0a('0x34')]:_0x5b3bae[_0x0c0a('0x30')];if(!_0x4b7e85[_0x0c0a('0x31')][_0x0c0a('0x37')](_0x0c0a('0x38'))){_0x5af2a0[_0x0c0a('0x1b')]=qs[_0x0c0a('0x1b')](_0x4b7e85['query'][_0x0c0a('0x1b')]);_0x5af2a0[_0x0c0a('0x1a')]=qs[_0x0c0a('0x1a')](_0x4b7e85[_0x0c0a('0x31')]['offset']);}_0x5af2a0[_0x0c0a('0x39')]=qs[_0x0c0a('0x3a')](_0x4b7e85[_0x0c0a('0x31')][_0x0c0a('0x3a')]);_0x5af2a0[_0x0c0a('0x3b')]=qs['filters'](_['pick'](_0x4b7e85[_0x0c0a('0x31')],_0x5b3bae[_0x0c0a('0x3c')]),_0x159817);if(_0x4b7e85[_0x0c0a('0x31')]['filter']){_0x5af2a0[_0x0c0a('0x3b')]=_[_0x0c0a('0x3d')](_0x5af2a0[_0x0c0a('0x3b')],{'$or':_[_0x0c0a('0x2c')](_0x159817,function(_0x3f0d49){if(_0x3f0d49['type']!==_0x0c0a('0x3e')){var _0x330c02={};_0x330c02[_0x3f0d49['name']]={'$like':'%'+_0x4b7e85[_0x0c0a('0x31')][_0x0c0a('0x3f')]+'%'};return _0x330c02;}})});}_0x5af2a0=_[_0x0c0a('0x3d')]({},_0x5af2a0,_0x4b7e85['options']);var _0x45762a={'where':_0x5af2a0[_0x0c0a('0x3b')]};return db[_0x0c0a('0x2d')]['count'](_0x45762a)[_0x0c0a('0x23')](function(_0x35174e){_0x3f852a[_0x0c0a('0x1d')]=_0x35174e;if(_0x4b7e85[_0x0c0a('0x31')][_0x0c0a('0x40')]){_0x5af2a0[_0x0c0a('0x41')]=[{'all':!![]}];}return db['SquareOdbc'][_0x0c0a('0x42')](_0x5af2a0);})['then'](function(_0x199d46){_0x3f852a[_0x0c0a('0x43')]=_0x199d46;return _0x3f852a;})[_0x0c0a('0x23')](respondWithFilteredResult(_0x258f01,_0x5af2a0))[_0x0c0a('0x44')](handleError(_0x258f01,null));};exports['show']=function(_0x9cf3ee,_0x13de07){var _0x615a53={'raw':!![],'where':{'id':_0x9cf3ee['params']['id']}},_0x4380fe={};_0x4380fe[_0x0c0a('0x30')]=_[_0x0c0a('0x32')](db[_0x0c0a('0x2d')][_0x0c0a('0x2e')]);_0x4380fe[_0x0c0a('0x31')]=_['keys'](_0x9cf3ee['query']);_0x4380fe['filters']=_[_0x0c0a('0x33')](_0x4380fe[_0x0c0a('0x30')],_0x4380fe['query']);_0x615a53[_0x0c0a('0x34')]=_[_0x0c0a('0x33')](_0x4380fe[_0x0c0a('0x30')],qs[_0x0c0a('0x35')](_0x9cf3ee['query'][_0x0c0a('0x35')]));_0x615a53[_0x0c0a('0x34')]=_0x615a53[_0x0c0a('0x34')]['length']?_0x615a53[_0x0c0a('0x34')]:_0x4380fe[_0x0c0a('0x30')];if(_0x9cf3ee['query']['includeAll']){_0x615a53[_0x0c0a('0x41')]=[{'all':!![]}];}_0x615a53=_[_0x0c0a('0x3d')]({},_0x615a53,_0x9cf3ee[_0x0c0a('0x45')]);return db[_0x0c0a('0x2d')][_0x0c0a('0x46')](_0x615a53)['then'](handleEntityNotFound(_0x13de07,null))[_0x0c0a('0x23')](respondWithResult(_0x13de07,null))[_0x0c0a('0x44')](handleError(_0x13de07,null));};exports[_0x0c0a('0x47')]=function(_0x3b88c5,_0x1606fa){return db['SquareOdbc']['create'](_0x3b88c5[_0x0c0a('0x48')],{})['then'](function(_0x4b37c5){var _0x4b1f04=_0x3b88c5[_0x0c0a('0x49')][_0x0c0a('0x25')]({'plain':!![]});if(!_0x4b1f04)throw new Error(_0x0c0a('0x4a'));if(_0x4b1f04[_0x0c0a('0x4b')]===_0x0c0a('0x49')){var _0x254123=_0x4b37c5[_0x0c0a('0x25')]({'plain':!![]});var _0x2040f2=_0x0c0a('0x26');return db[_0x0c0a('0x4c')][_0x0c0a('0x46')]({'where':{'name':_0x2040f2,'userProfileId':_0x4b1f04[_0x0c0a('0x4d')]},'raw':!![]})[_0x0c0a('0x23')](function(_0x6585e2){if(_0x6585e2&&_0x6585e2[_0x0c0a('0x4e')]===0x0){return db[_0x0c0a('0x4f')][_0x0c0a('0x47')]({'name':_0x254123[_0x0c0a('0x2a')],'resourceId':_0x254123['id'],'type':_0x6585e2[_0x0c0a('0x2a')],'sectionId':_0x6585e2['id']},{})['then'](function(){return _0x4b37c5;});}else{return _0x4b37c5;}})[_0x0c0a('0x44')](function(_0x49dbb8){logger[_0x0c0a('0x28')](_0x0c0a('0x50'),_0x49dbb8);throw _0x49dbb8;});}return _0x4b37c5;})[_0x0c0a('0x23')](respondWithResult(_0x1606fa,0xc9))[_0x0c0a('0x44')](handleError(_0x1606fa,null));};exports[_0x0c0a('0x22')]=function(_0xfb899a,_0x407cfe){if(_0xfb899a[_0x0c0a('0x48')]['id']){delete _0xfb899a[_0x0c0a('0x48')]['id'];}return db[_0x0c0a('0x2d')][_0x0c0a('0x46')]({'where':{'id':_0xfb899a[_0x0c0a('0x51')]['id']}})[_0x0c0a('0x23')](handleEntityNotFound(_0x407cfe,null))[_0x0c0a('0x23')](saveUpdates(_0xfb899a[_0x0c0a('0x48')],null))[_0x0c0a('0x23')](respondWithResult(_0x407cfe,null))[_0x0c0a('0x44')](handleError(_0x407cfe,null));};exports[_0x0c0a('0x24')]=function(_0x871c91,_0x5a5599){return db[_0x0c0a('0x2d')]['find']({'where':{'id':_0x871c91[_0x0c0a('0x51')]['id']}})[_0x0c0a('0x23')](handleEntityNotFound(_0x5a5599,null))[_0x0c0a('0x23')](removeEntity(_0x5a5599,null))[_0x0c0a('0x44')](handleError(_0x5a5599,null));};exports[_0x0c0a('0x52')]=function(_0xbbd54d,_0x322ee2,_0x4de403){var _0x1eedfc;return db['SquareOdbc'][_0x0c0a('0x46')]({'where':{'id':_0xbbd54d['params']['id']},'attributes':['id',_0x0c0a('0x53')]})[_0x0c0a('0x23')](handleEntityNotFound(_0x322ee2,null))[_0x0c0a('0x23')](function(_0x4bf110){if(_0x4bf110){var _0x40da3c=require('odbc')();_0x40da3c[_0x0c0a('0x54')](_0x4bf110[_0x0c0a('0x53')]);_0x40da3c[_0x0c0a('0x55')]();return _0x4bf110;}})[_0x0c0a('0x23')](respondWithResult(_0x322ee2,null))[_0x0c0a('0x44')](handleError(_0x322ee2,null));};
\ No newline at end of file
+var _0x527f=['filters','intersection','fields','length','attributes','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ODBC','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','test','dsn','openSync','closeSync','zip-dir','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','UserProfileResource','destroy','error','name','send','map','SquareOdbc','model','query','keys'];(function(_0x4f89eb,_0x39a0d5){var _0x4cdede=function(_0x280d9f){while(--_0x280d9f){_0x4f89eb['push'](_0x4f89eb['shift']());}};_0x4cdede(++_0x39a0d5);}(_0x527f,0xc6));var _0xf527=function(_0x2cd976,_0x4b9d7f){_0x2cd976=_0x2cd976-0x0;var _0x2560fb=_0x527f[_0x2cd976];return _0x2560fb;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xf527('0x0'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xf527('0x1'));var util=require('util');var path=require(_0xf527('0x2'));var sox=require(_0xf527('0x3'));var csv=require(_0xf527('0x4'));var ejs=require(_0xf527('0x5'));var fs=require('fs');var fs_extra=require(_0xf527('0x6'));var _=require(_0xf527('0x7'));var squel=require(_0xf527('0x8'));var crypto=require(_0xf527('0x9'));var jsforce=require(_0xf527('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xf527('0x4'));var querystring=require(_0xf527('0xb'));var Papa=require(_0xf527('0xc'));var Redis=require(_0xf527('0xd'));var authService=require(_0xf527('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xf527('0xf'));var hardwareService=require(_0xf527('0x10'));var logger=require(_0xf527('0x11'))('api');var utils=require('../../config/utils');var config=require(_0xf527('0x12'));var licenseUtil=require(_0xf527('0x13'));var db=require(_0xf527('0x14'))['db'];function respondWithStatusCode(_0x196020,_0x5355b4){_0x5355b4=_0x5355b4||0xcc;return function(_0x41b1ca){if(_0x41b1ca){return _0x196020[_0xf527('0x15')](_0x5355b4);}return _0x196020['status'](_0x5355b4)[_0xf527('0x16')]();};}function respondWithResult(_0xa98b87,_0x13ac01){_0x13ac01=_0x13ac01||0xc8;return function(_0x2100f9){if(_0x2100f9){return _0xa98b87[_0xf527('0x17')](_0x13ac01)[_0xf527('0x18')](_0x2100f9);}};}function respondWithFilteredResult(_0x892929,_0x2e0ed7){return function(_0x3e3c87){if(_0x3e3c87){var _0x748964=typeof _0x2e0ed7[_0xf527('0x19')]===_0xf527('0x1a')&&typeof _0x2e0ed7[_0xf527('0x1b')]===_0xf527('0x1a');var _0x40be1a=_0x3e3c87[_0xf527('0x1c')];var _0x78b1f7=_0x748964?0x0:_0x2e0ed7['offset'];var _0x342b23=_0x748964?_0x3e3c87[_0xf527('0x1c')]:_0x2e0ed7[_0xf527('0x19')]+_0x2e0ed7[_0xf527('0x1b')];var _0x3f57e7;if(_0x342b23>=_0x40be1a){_0x342b23=_0x40be1a;_0x3f57e7=0xc8;}else{_0x3f57e7=0xce;}_0x892929['status'](_0x3f57e7);return _0x892929[_0xf527('0x1d')](_0xf527('0x1e'),_0x78b1f7+'-'+_0x342b23+'/'+_0x40be1a)['json'](_0x3e3c87);}return null;};}function patchUpdates(_0x38f2a9){return function(_0x42e4b1){try{jsonpatch[_0xf527('0x1f')](_0x42e4b1,_0x38f2a9,!![]);}catch(_0x129558){return BPromise[_0xf527('0x20')](_0x129558);}return _0x42e4b1['save']();};}function saveUpdates(_0x34607c,_0x542d95){return function(_0x51f593){if(_0x51f593){return _0x51f593[_0xf527('0x21')](_0x34607c)[_0xf527('0x22')](function(_0x2911e9){return _0x2911e9;});}return null;};}function removeEntity(_0x2d09b5,_0x523c99){return function(_0x4720c7){if(_0x4720c7){return _0x4720c7['destroy']()[_0xf527('0x22')](function(){var _0x533c0b=_0x4720c7['get']({'plain':!![]});var _0x3048db='ODBC';return db[_0xf527('0x23')][_0xf527('0x24')]({'where':{'type':_0x3048db,'resourceId':_0x533c0b['id']}})[_0xf527('0x22')](function(){return _0x4720c7;});})[_0xf527('0x22')](function(){_0x2d09b5[_0xf527('0x17')](0xcc)[_0xf527('0x16')]();});}};}function handleEntityNotFound(_0x3f6391,_0x275f44){return function(_0x235a5f){if(!_0x235a5f){_0x3f6391[_0xf527('0x15')](0x194);}return _0x235a5f;};}function handleError(_0x3c5ead,_0x2845ba){_0x2845ba=_0x2845ba||0x1f4;return function(_0x424590){logger[_0xf527('0x25')](_0x424590['stack']);if(_0x424590['name']){delete _0x424590[_0xf527('0x26')];}_0x3c5ead[_0xf527('0x17')](_0x2845ba)[_0xf527('0x27')](_0x424590);};}exports['index']=function(_0x1e6c21,_0x392b79){var _0x3d7a5c={},_0x1868ef={},_0x3e699c={'count':0x0,'rows':[]};var _0x3dbcf7=_[_0xf527('0x28')](db[_0xf527('0x29')]['rawAttributes'],function(_0x3c8568){return{'name':_0x3c8568['fieldName'],'type':_0x3c8568['type']['key']};});_0x1868ef[_0xf527('0x2a')]=_[_0xf527('0x28')](_0x3dbcf7,_0xf527('0x26'));_0x1868ef[_0xf527('0x2b')]=_[_0xf527('0x2c')](_0x1e6c21[_0xf527('0x2b')]);_0x1868ef[_0xf527('0x2d')]=_['intersection'](_0x1868ef[_0xf527('0x2a')],_0x1868ef['query']);_0x3d7a5c['attributes']=_[_0xf527('0x2e')](_0x1868ef[_0xf527('0x2a')],qs[_0xf527('0x2f')](_0x1e6c21[_0xf527('0x2b')][_0xf527('0x2f')]));_0x3d7a5c['attributes']=_0x3d7a5c['attributes'][_0xf527('0x30')]?_0x3d7a5c[_0xf527('0x31')]:_0x1868ef[_0xf527('0x2a')];if(!_0x1e6c21[_0xf527('0x2b')]['hasOwnProperty']('nolimit')){_0x3d7a5c[_0xf527('0x1b')]=qs['limit'](_0x1e6c21[_0xf527('0x2b')][_0xf527('0x1b')]);_0x3d7a5c[_0xf527('0x19')]=qs['offset'](_0x1e6c21[_0xf527('0x2b')][_0xf527('0x19')]);}_0x3d7a5c['order']=qs[_0xf527('0x32')](_0x1e6c21[_0xf527('0x2b')][_0xf527('0x32')]);_0x3d7a5c[_0xf527('0x33')]=qs[_0xf527('0x2d')](_[_0xf527('0x34')](_0x1e6c21[_0xf527('0x2b')],_0x1868ef[_0xf527('0x2d')]),_0x3dbcf7);if(_0x1e6c21[_0xf527('0x2b')]['filter']){_0x3d7a5c[_0xf527('0x33')]=_['merge'](_0x3d7a5c[_0xf527('0x33')],{'$or':_[_0xf527('0x28')](_0x3dbcf7,function(_0x539b22){if(_0x539b22['type']!==_0xf527('0x35')){var _0x10c384={};_0x10c384[_0x539b22[_0xf527('0x26')]]={'$like':'%'+_0x1e6c21[_0xf527('0x2b')][_0xf527('0x36')]+'%'};return _0x10c384;}})});}_0x3d7a5c=_[_0xf527('0x37')]({},_0x3d7a5c,_0x1e6c21[_0xf527('0x38')]);var _0x265621={'where':_0x3d7a5c[_0xf527('0x33')]};return db[_0xf527('0x29')][_0xf527('0x1c')](_0x265621)['then'](function(_0x3b37c6){_0x3e699c['count']=_0x3b37c6;if(_0x1e6c21[_0xf527('0x2b')][_0xf527('0x39')]){_0x3d7a5c[_0xf527('0x3a')]=[{'all':!![]}];}return db[_0xf527('0x29')][_0xf527('0x3b')](_0x3d7a5c);})[_0xf527('0x22')](function(_0x5286fc){_0x3e699c[_0xf527('0x3c')]=_0x5286fc;return _0x3e699c;})['then'](respondWithFilteredResult(_0x392b79,_0x3d7a5c))[_0xf527('0x3d')](handleError(_0x392b79,null));};exports[_0xf527('0x3e')]=function(_0x4940d4,_0x15f2b4){var _0x346adf={'raw':!![],'where':{'id':_0x4940d4[_0xf527('0x3f')]['id']}},_0x5d5b34={};_0x5d5b34[_0xf527('0x2a')]=_['keys'](db[_0xf527('0x29')][_0xf527('0x40')]);_0x5d5b34[_0xf527('0x2b')]=_['keys'](_0x4940d4[_0xf527('0x2b')]);_0x5d5b34[_0xf527('0x2d')]=_[_0xf527('0x2e')](_0x5d5b34[_0xf527('0x2a')],_0x5d5b34['query']);_0x346adf[_0xf527('0x31')]=_[_0xf527('0x2e')](_0x5d5b34[_0xf527('0x2a')],qs[_0xf527('0x2f')](_0x4940d4['query'][_0xf527('0x2f')]));_0x346adf['attributes']=_0x346adf['attributes']['length']?_0x346adf[_0xf527('0x31')]:_0x5d5b34[_0xf527('0x2a')];if(_0x4940d4[_0xf527('0x2b')][_0xf527('0x39')]){_0x346adf[_0xf527('0x3a')]=[{'all':!![]}];}_0x346adf=_[_0xf527('0x37')]({},_0x346adf,_0x4940d4[_0xf527('0x38')]);return db[_0xf527('0x29')][_0xf527('0x41')](_0x346adf)[_0xf527('0x22')](handleEntityNotFound(_0x15f2b4,null))['then'](respondWithResult(_0x15f2b4,null))[_0xf527('0x3d')](handleError(_0x15f2b4,null));};exports[_0xf527('0x42')]=function(_0xbbc46b,_0x10470c){return db[_0xf527('0x29')]['create'](_0xbbc46b[_0xf527('0x43')],{})['then'](function(_0x30bff7){var _0x189bda=_0xbbc46b[_0xf527('0x44')][_0xf527('0x45')]({'plain':!![]});if(!_0x189bda)throw new Error(_0xf527('0x46'));if(_0x189bda[_0xf527('0x47')]===_0xf527('0x44')){var _0x4e816f=_0x30bff7[_0xf527('0x45')]({'plain':!![]});var _0x1f6192=_0xf527('0x48');return db[_0xf527('0x49')][_0xf527('0x41')]({'where':{'name':_0x1f6192,'userProfileId':_0x189bda[_0xf527('0x4a')]},'raw':!![]})[_0xf527('0x22')](function(_0x5e0df3){if(_0x5e0df3&&_0x5e0df3[_0xf527('0x4b')]===0x0){return db[_0xf527('0x23')][_0xf527('0x42')]({'name':_0x4e816f[_0xf527('0x26')],'resourceId':_0x4e816f['id'],'type':_0x5e0df3[_0xf527('0x26')],'sectionId':_0x5e0df3['id']},{})[_0xf527('0x22')](function(){return _0x30bff7;});}else{return _0x30bff7;}})[_0xf527('0x3d')](function(_0xaf61e5){logger[_0xf527('0x25')](_0xf527('0x4c'),_0xaf61e5);throw _0xaf61e5;});}return _0x30bff7;})[_0xf527('0x22')](respondWithResult(_0x10470c,0xc9))[_0xf527('0x3d')](handleError(_0x10470c,null));};exports['update']=function(_0x129e3d,_0x4f90d0){if(_0x129e3d['body']['id']){delete _0x129e3d[_0xf527('0x43')]['id'];}return db[_0xf527('0x29')][_0xf527('0x41')]({'where':{'id':_0x129e3d[_0xf527('0x3f')]['id']}})[_0xf527('0x22')](handleEntityNotFound(_0x4f90d0,null))[_0xf527('0x22')](saveUpdates(_0x129e3d[_0xf527('0x43')],null))['then'](respondWithResult(_0x4f90d0,null))[_0xf527('0x3d')](handleError(_0x4f90d0,null));};exports[_0xf527('0x24')]=function(_0x4f8ed8,_0xf2314f){return db[_0xf527('0x29')][_0xf527('0x41')]({'where':{'id':_0x4f8ed8['params']['id']}})['then'](handleEntityNotFound(_0xf2314f,null))['then'](removeEntity(_0xf2314f,null))[_0xf527('0x3d')](handleError(_0xf2314f,null));};exports[_0xf527('0x4d')]=function(_0x5c1659,_0x97125d,_0x2c987e){var _0x35746e;return db[_0xf527('0x29')][_0xf527('0x41')]({'where':{'id':_0x5c1659[_0xf527('0x3f')]['id']},'attributes':['id',_0xf527('0x4e')]})[_0xf527('0x22')](handleEntityNotFound(_0x97125d,null))[_0xf527('0x22')](function(_0x2b91c5){if(_0x2b91c5){var _0x60d5f2=require('odbc')();_0x60d5f2[_0xf527('0x4f')](_0x2b91c5[_0xf527('0x4e')]);_0x60d5f2[_0xf527('0x50')]();return _0x2b91c5;}})['then'](respondWithResult(_0x97125d,null))[_0xf527('0x3d')](handleError(_0x97125d,null));};
\ No newline at end of file
index 01a800f..32bbd6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a90=['square_odbc','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./squareOdbc.attributes','exports','define','SquareOdbc'];(function(_0x55d8c5,_0x10287a){var _0x225ae5=function(_0x2ba03a){while(--_0x2ba03a){_0x55d8c5['push'](_0x55d8c5['shift']());}};_0x225ae5(++_0x10287a);}(_0x6a90,0x1eb));var _0x06a9=function(_0x209e76,_0x3771fd){_0x209e76=_0x209e76-0x0;var _0x37af5e=_0x6a90[_0x209e76];return _0x37af5e;};'use strict';var _=require(_0x06a9('0x0'));var util=require(_0x06a9('0x1'));var logger=require(_0x06a9('0x2'))(_0x06a9('0x3'));var moment=require(_0x06a9('0x4'));var BPromise=require('bluebird');var rp=require(_0x06a9('0x5'));var fs=require('fs');var path=require(_0x06a9('0x6'));var rimraf=require(_0x06a9('0x7'));var config=require(_0x06a9('0x8'));var attributes=require(_0x06a9('0x9'));module[_0x06a9('0xa')]=function(_0x5c6e09,_0x59fadd){return _0x5c6e09[_0x06a9('0xb')](_0x06a9('0xc'),attributes,{'tableName':_0x06a9('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4940=['path','rimraf','../../config/environment','./squareOdbc.attributes','exports','lodash','../../config/logger','api','moment','bluebird'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0x4940,0xeb));var _0x0494=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x4940[_0x160c73];return _0xd9302;};'use strict';var _=require(_0x0494('0x0'));var util=require('util');var logger=require(_0x0494('0x1'))(_0x0494('0x2'));var moment=require(_0x0494('0x3'));var BPromise=require(_0x0494('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0494('0x5'));var rimraf=require(_0x0494('0x6'));var config=require(_0x0494('0x7'));var attributes=require(_0x0494('0x8'));module[_0x0494('0x9')]=function(_0x39e650,_0x53f986){return _0x39e650['define']('SquareOdbc',attributes,{'tableName':'square_odbc','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 61b4065..f01e8ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b13=['../../config/environment','jayson/promise','client','http','then','info','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowSquareOdbc','SquareOdbc','find','options','where','attributes','include','map','model','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x3dee9e,_0x324c5b){var _0x5de62d=function(_0x3b5063){while(--_0x3b5063){_0x3dee9e['push'](_0x3dee9e['shift']());}};_0x5de62d(++_0x324c5b);}(_0x5b13,0x1d9));var _0x35b1=function(_0x39fb6a,_0x8b07ae){_0x39fb6a=_0x39fb6a-0x0;var _0x1452a1=_0x5b13[_0x39fb6a];return _0x1452a1;};'use strict';var _=require(_0x35b1('0x0'));var util=require(_0x35b1('0x1'));var moment=require(_0x35b1('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x35b1('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x35b1('0x4'));var logger=require(_0x35b1('0x5'))(_0x35b1('0x6'));var config=require(_0x35b1('0x7'));var jayson=require(_0x35b1('0x8'));var client=jayson[_0x35b1('0x9')][_0x35b1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2515d3,_0x4e29fb,_0x2790ab){return new BPromise(function(_0x4d39e9,_0x112666){return client['request'](_0x2515d3,_0x2790ab)[_0x35b1('0xb')](function(_0x391897){logger[_0x35b1('0xc')](_0x35b1('0xd'),_0x4e29fb,_0x35b1('0xe'));logger[_0x35b1('0xf')](_0x35b1('0x10'),_0x4e29fb,_0x35b1('0xe'),JSON[_0x35b1('0x11')](_0x391897));if(_0x391897[_0x35b1('0x12')]){if(_0x391897[_0x35b1('0x12')][_0x35b1('0x13')]===0x1f4){logger['error'](_0x35b1('0xd'),_0x4e29fb,_0x391897['error'][_0x35b1('0x14')]);return _0x112666(_0x391897['error']['message']);}logger[_0x35b1('0x12')]('SquareOdbc,\x20%s,\x20%s',_0x4e29fb,_0x391897[_0x35b1('0x12')][_0x35b1('0x14')]);return _0x4d39e9(_0x391897[_0x35b1('0x12')][_0x35b1('0x14')]);}else{logger['info'](_0x35b1('0xd'),_0x4e29fb,'request\x20sent');_0x4d39e9(_0x391897[_0x35b1('0x15')][_0x35b1('0x14')]);}})[_0x35b1('0x16')](function(_0x9d89e6){logger[_0x35b1('0x12')](_0x35b1('0xd'),_0x4e29fb,_0x9d89e6);_0x112666(_0x9d89e6);});});}exports[_0x35b1('0x17')]=function(_0x5cc0f9){var _0x1c15b0=this;return new Promise(function(_0x31a076,_0x4d9dea){return db[_0x35b1('0x18')][_0x35b1('0x19')]({'raw':_0x5cc0f9[_0x35b1('0x1a')]?_0x5cc0f9['options']['raw']===undefined?!![]:![]:!![],'where':_0x5cc0f9['options']?_0x5cc0f9[_0x35b1('0x1a')][_0x35b1('0x1b')]||null:null,'attributes':_0x5cc0f9[_0x35b1('0x1a')]?_0x5cc0f9[_0x35b1('0x1a')][_0x35b1('0x1c')]||null:null,'include':_0x5cc0f9[_0x35b1('0x1a')]?_0x5cc0f9[_0x35b1('0x1a')]['include']?_['map'](_0x5cc0f9[_0x35b1('0x1a')][_0x35b1('0x1d')],function(_0x288a45){return{'model':db[_0x288a45['model']],'as':_0x288a45['as'],'attributes':_0x288a45[_0x35b1('0x1c')],'include':_0x288a45[_0x35b1('0x1d')]?_[_0x35b1('0x1e')](_0x288a45[_0x35b1('0x1d')],function(_0x4d7267){return{'model':db[_0x4d7267[_0x35b1('0x1f')]],'as':_0x4d7267['as'],'attributes':_0x4d7267['attributes'],'include':_0x4d7267['include']?_[_0x35b1('0x1e')](_0x4d7267[_0x35b1('0x1d')],function(_0x1c6e10){return{'model':db[_0x1c6e10[_0x35b1('0x1f')]],'as':_0x1c6e10['as'],'attributes':_0x1c6e10['attributes']};}):[]};}):[]};}):[]:[]})[_0x35b1('0xb')](function(_0x3e618a){logger[_0x35b1('0xc')](_0x35b1('0x17'),_0x5cc0f9);logger[_0x35b1('0xf')](_0x35b1('0x17'),_0x5cc0f9,JSON[_0x35b1('0x11')](_0x3e618a));_0x31a076(_0x3e618a);})[_0x35b1('0x16')](function(_0x4941e1){logger[_0x35b1('0x12')](_0x35b1('0x17'),_0x4941e1[_0x35b1('0x14')],_0x5cc0f9);_0x4d9dea(_0x1c15b0[_0x35b1('0x12')](0x1f4,_0x4941e1[_0x35b1('0x14')]));});});};
\ No newline at end of file
+var _0xb9b9=['find','options','raw','attributes','include','model','stringify','ShowSquareOdbc','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SquareOdbc,\x20%s,\x20%s','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','SquareOdbc'];(function(_0x3e0a77,_0x47f6ee){var _0x4750b6=function(_0x310417){while(--_0x310417){_0x3e0a77['push'](_0x3e0a77['shift']());}};_0x4750b6(++_0x47f6ee);}(_0xb9b9,0x6b));var _0x9b9b=function(_0x141290,_0x340baf){_0x141290=_0x141290-0x0;var _0x3aff67=_0xb9b9[_0x141290];return _0x3aff67;};'use strict';var _=require(_0x9b9b('0x0'));var util=require(_0x9b9b('0x1'));var moment=require(_0x9b9b('0x2'));var BPromise=require(_0x9b9b('0x3'));var rs=require(_0x9b9b('0x4'));var fs=require('fs');var Redis=require(_0x9b9b('0x5'));var db=require(_0x9b9b('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x9b9b('0x7'))(_0x9b9b('0x8'));var config=require(_0x9b9b('0x9'));var jayson=require(_0x9b9b('0xa'));var client=jayson[_0x9b9b('0xb')][_0x9b9b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5791ee,_0x31aac5,_0x115ed0){return new BPromise(function(_0x36ad26,_0x471dde){return client[_0x9b9b('0xd')](_0x5791ee,_0x115ed0)[_0x9b9b('0xe')](function(_0x5957f3){logger[_0x9b9b('0xf')](_0x9b9b('0x10'),_0x31aac5,'request\x20sent');logger[_0x9b9b('0x11')](_0x9b9b('0x12'),_0x31aac5,'request\x20sent',JSON['stringify'](_0x5957f3));if(_0x5957f3['error']){if(_0x5957f3[_0x9b9b('0x13')][_0x9b9b('0x14')]===0x1f4){logger[_0x9b9b('0x13')]('SquareOdbc,\x20%s,\x20%s',_0x31aac5,_0x5957f3['error'][_0x9b9b('0x15')]);return _0x471dde(_0x5957f3[_0x9b9b('0x13')][_0x9b9b('0x15')]);}logger['error']('SquareOdbc,\x20%s,\x20%s',_0x31aac5,_0x5957f3[_0x9b9b('0x13')][_0x9b9b('0x15')]);return _0x36ad26(_0x5957f3[_0x9b9b('0x13')][_0x9b9b('0x15')]);}else{logger[_0x9b9b('0xf')](_0x9b9b('0x10'),_0x31aac5,'request\x20sent');_0x36ad26(_0x5957f3[_0x9b9b('0x16')][_0x9b9b('0x15')]);}})[_0x9b9b('0x17')](function(_0x51ec71){logger['error']('SquareOdbc,\x20%s,\x20%s',_0x31aac5,_0x51ec71);_0x471dde(_0x51ec71);});});}exports['ShowSquareOdbc']=function(_0x46be63){var _0x2e30cc=this;return new Promise(function(_0x333784,_0x4958de){return db[_0x9b9b('0x18')][_0x9b9b('0x19')]({'raw':_0x46be63[_0x9b9b('0x1a')]?_0x46be63[_0x9b9b('0x1a')][_0x9b9b('0x1b')]===undefined?!![]:![]:!![],'where':_0x46be63[_0x9b9b('0x1a')]?_0x46be63[_0x9b9b('0x1a')]['where']||null:null,'attributes':_0x46be63['options']?_0x46be63[_0x9b9b('0x1a')][_0x9b9b('0x1c')]||null:null,'include':_0x46be63[_0x9b9b('0x1a')]?_0x46be63[_0x9b9b('0x1a')][_0x9b9b('0x1d')]?_['map'](_0x46be63['options'][_0x9b9b('0x1d')],function(_0x2e99c8){return{'model':db[_0x2e99c8[_0x9b9b('0x1e')]],'as':_0x2e99c8['as'],'attributes':_0x2e99c8[_0x9b9b('0x1c')],'include':_0x2e99c8[_0x9b9b('0x1d')]?_['map'](_0x2e99c8['include'],function(_0x36fab1){return{'model':db[_0x36fab1[_0x9b9b('0x1e')]],'as':_0x36fab1['as'],'attributes':_0x36fab1['attributes'],'include':_0x36fab1[_0x9b9b('0x1d')]?_['map'](_0x36fab1[_0x9b9b('0x1d')],function(_0x5cdd48){return{'model':db[_0x5cdd48[_0x9b9b('0x1e')]],'as':_0x5cdd48['as'],'attributes':_0x5cdd48[_0x9b9b('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x9b9b('0xe')](function(_0xe3ebe){logger[_0x9b9b('0xf')]('ShowSquareOdbc',_0x46be63);logger[_0x9b9b('0x11')]('ShowSquareOdbc',_0x46be63,JSON[_0x9b9b('0x1f')](_0xe3ebe));_0x333784(_0xe3ebe);})[_0x9b9b('0x17')](function(_0x29cf1a){logger[_0x9b9b('0x13')](_0x9b9b('0x20'),_0x29cf1a[_0x9b9b('0x15')],_0x46be63);_0x4958de(_0x2e30cc[_0x9b9b('0x13')](0x1f4,_0x29cf1a[_0x9b9b('0x15')]));});});};
\ No newline at end of file
index 4f42a01..173258b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26b0=['multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller','get','index','show','/:id/users','post','isAuthenticated','create','addUsers','put','update','delete','/:id','destroy','exports'];(function(_0x49f66e,_0x3e2369){var _0x55a1e2=function(_0x50bccd){while(--_0x50bccd){_0x49f66e['push'](_0x49f66e['shift']());}};_0x55a1e2(++_0x3e2369);}(_0x26b0,0x138));var _0x026b=function(_0x1722d7,_0x456686){_0x1722d7=_0x1722d7-0x0;var _0x1ef817=_0x26b0[_0x1722d7];return _0x1ef817;};'use strict';var multer=require(_0x026b('0x0'));var util=require(_0x026b('0x1'));var path=require(_0x026b('0x2'));var timeout=require(_0x026b('0x3'));var express=require(_0x026b('0x4'));var router=express[_0x026b('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x026b('0x6'));var interaction=require(_0x026b('0x7'));var config=require(_0x026b('0x8'));var controller=require(_0x026b('0x9'));router[_0x026b('0xa')]('/',auth['isAuthenticated'](),controller[_0x026b('0xb')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x026b('0xc')]);router[_0x026b('0xa')](_0x026b('0xd'),auth['isAuthenticated'](),controller['getUsers']);router[_0x026b('0xe')]('/',auth[_0x026b('0xf')](),controller[_0x026b('0x10')]);router['post'](_0x026b('0xd'),auth[_0x026b('0xf')](),controller[_0x026b('0x11')]);router[_0x026b('0x12')]('/:id',auth[_0x026b('0xf')](),controller[_0x026b('0x13')]);router[_0x026b('0x14')](_0x026b('0x15'),auth[_0x026b('0xf')](),controller[_0x026b('0x16')]);router[_0x026b('0x14')]('/:id/users',auth[_0x026b('0xf')](),controller['removeUsers']);module[_0x026b('0x17')]=router;
\ No newline at end of file
+var _0x237d=['isAuthenticated','index','show','/:id/users','post','create','addUsers','put','/:id','update','delete','removeUsers','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller'];(function(_0x3b28fc,_0x14a7a0){var _0x367786=function(_0x4b6e98){while(--_0x4b6e98){_0x3b28fc['push'](_0x3b28fc['shift']());}};_0x367786(++_0x14a7a0);}(_0x237d,0x1d9));var _0xd237=function(_0x27d6b8,_0x3fe47a){_0x27d6b8=_0x27d6b8-0x0;var _0x3ed811=_0x237d[_0x27d6b8];return _0x3ed811;};'use strict';var multer=require(_0xd237('0x0'));var util=require(_0xd237('0x1'));var path=require(_0xd237('0x2'));var timeout=require(_0xd237('0x3'));var express=require('express');var router=express[_0xd237('0x4')]();var fs_extra=require(_0xd237('0x5'));var auth=require(_0xd237('0x6'));var interaction=require(_0xd237('0x7'));var config=require(_0xd237('0x8'));var controller=require(_0xd237('0x9'));router['get']('/',auth[_0xd237('0xa')](),controller[_0xd237('0xb')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xd237('0xc')]);router['get'](_0xd237('0xd'),auth[_0xd237('0xa')](),controller['getUsers']);router[_0xd237('0xe')]('/',auth[_0xd237('0xa')](),controller[_0xd237('0xf')]);router[_0xd237('0xe')](_0xd237('0xd'),auth[_0xd237('0xa')](),controller[_0xd237('0x10')]);router[_0xd237('0x11')](_0xd237('0x12'),auth['isAuthenticated'](),controller[_0xd237('0x13')]);router[_0xd237('0x14')](_0xd237('0x12'),auth[_0xd237('0xa')](),controller['destroy']);router[_0xd237('0x14')](_0xd237('0xd'),auth[_0xd237('0xa')](),controller[_0xd237('0x15')]);module[_0xd237('0x16')]=router;
\ No newline at end of file
index 8b07b39..1ea486b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ad9=['utf8','production','DATE','exports','STRING','name','TEXT','BLOB','long','getDataValue','preproduction','toString'];(function(_0x5bf122,_0x27987e){var _0x4dd339=function(_0x32293a){while(--_0x32293a){_0x5bf122['push'](_0x5bf122['shift']());}};_0x4dd339(++_0x27987e);}(_0x2ad9,0x13b));var _0x92ad=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x2ad9[_0x501510];return _0x1e6ee5;};'use strict';var Sequelize=require('sequelize');module[_0x92ad('0x0')]={'name':{'type':Sequelize[_0x92ad('0x1')],'unique':_0x92ad('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x92ad('0x1')]},'notes':{'type':Sequelize[_0x92ad('0x3')]},'preproduction':{'type':Sequelize[_0x92ad('0x4')](_0x92ad('0x5')),'get':function(){if(this[_0x92ad('0x6')](_0x92ad('0x7'))){return this[_0x92ad('0x6')](_0x92ad('0x7'))[_0x92ad('0x8')](_0x92ad('0x9'));}}},'production':{'type':Sequelize[_0x92ad('0x4')](_0x92ad('0x5')),'get':function(){if(this['getDataValue'](_0x92ad('0xa'))){return this[_0x92ad('0x6')](_0x92ad('0xa'))['toString'](_0x92ad('0x9'));}}},'savedAt':{'type':Sequelize[_0x92ad('0xb')]},'publishedAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
+var _0xe9e9=['STRING','name','TEXT','long','preproduction','toString','utf8','BLOB','getDataValue','production','DATE','sequelize','exports'];(function(_0x195a5b,_0x17f4bf){var _0xfd6e86=function(_0x430723){while(--_0x430723){_0x195a5b['push'](_0x195a5b['shift']());}};_0xfd6e86(++_0x17f4bf);}(_0xe9e9,0x1b8));var _0x9e9e=function(_0x3f45d9,_0x83b8f7){_0x3f45d9=_0x3f45d9-0x0;var _0x303af1=_0xe9e9[_0x3f45d9];return _0x303af1;};'use strict';var Sequelize=require(_0x9e9e('0x0'));module[_0x9e9e('0x1')]={'name':{'type':Sequelize[_0x9e9e('0x2')],'unique':_0x9e9e('0x3'),'allowNull':![]},'description':{'type':Sequelize['STRING']},'notes':{'type':Sequelize[_0x9e9e('0x4')]},'preproduction':{'type':Sequelize['BLOB'](_0x9e9e('0x5')),'get':function(){if(this['getDataValue']('preproduction')){return this['getDataValue'](_0x9e9e('0x6'))[_0x9e9e('0x7')](_0x9e9e('0x8'));}}},'production':{'type':Sequelize[_0x9e9e('0x9')](_0x9e9e('0x5')),'get':function(){if(this[_0x9e9e('0xa')](_0x9e9e('0xb'))){return this[_0x9e9e('0xa')]('production')['toString'](_0x9e9e('0x8'));}}},'savedAt':{'type':Sequelize['DATE']},'publishedAt':{'type':Sequelize[_0x9e9e('0xc')]}};
\ No newline at end of file
index 437ff38..6685d08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f01=['Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','addUsers','ids','omit','removeUsers','isArray','emit','userSquareProject:remove','getUsers','User','sort','eml-format','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','redis','defaults','localhost','./squareProject.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','destroy','then','get','SquareProjects','UserProfileResource','error','stack','name','send','index','rawAttributes','keys','filters','model','query','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','map','type','merge','options','SquareProject','includeAll','include','findAll','catch','intersection','find','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','autoAssociation'];(function(_0x136031,_0x248912){var _0x51c888=function(_0x2a87fb){while(--_0x2a87fb){_0x136031['push'](_0x136031['shift']());}};_0x51c888(++_0x248912);}(_0x3f01,0x1d8));var _0x13f0=function(_0x1fe6e5,_0x5aa515){_0x1fe6e5=_0x1fe6e5-0x0;var _0x321a83=_0x3f01[_0x1fe6e5];return _0x321a83;};'use strict';var emlformat=require(_0x13f0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x13f0('0x1'));var jsonpatch=require(_0x13f0('0x2'));var rp=require(_0x13f0('0x3'));var moment=require(_0x13f0('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x13f0('0x5'));var path=require(_0x13f0('0x6'));var sox=require(_0x13f0('0x7'));var csv=require('to-csv');var ejs=require(_0x13f0('0x8'));var fs=require('fs');var fs_extra=require(_0x13f0('0x9'));var _=require(_0x13f0('0xa'));var squel=require(_0x13f0('0xb'));var crypto=require(_0x13f0('0xc'));var jsforce=require(_0x13f0('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x13f0('0xe'));var querystring=require(_0x13f0('0xf'));var Papa=require(_0x13f0('0x10'));var Redis=require(_0x13f0('0x11'));var authService=require(_0x13f0('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x13f0('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x13f0('0x14'))(_0x13f0('0x15'));var utils=require(_0x13f0('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x13f0('0x17')]=_[_0x13f0('0x18')](config[_0x13f0('0x17')],{'host':_0x13f0('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x13f0('0x1a'))[_0x13f0('0x1b')](socket);function respondWithStatusCode(_0x3ba8f5,_0x2c8970){_0x2c8970=_0x2c8970||0xcc;return function(_0x473c71){if(_0x473c71){return _0x3ba8f5[_0x13f0('0x1c')](_0x2c8970);}return _0x3ba8f5[_0x13f0('0x1d')](_0x2c8970)[_0x13f0('0x1e')]();};}function respondWithResult(_0x4a0af1,_0x59fb76){_0x59fb76=_0x59fb76||0xc8;return function(_0x24f7fd){if(_0x24f7fd){return _0x4a0af1[_0x13f0('0x1d')](_0x59fb76)[_0x13f0('0x1f')](_0x24f7fd);}};}function respondWithFilteredResult(_0xe2f10f,_0x3dfe4d){return function(_0x1ce94c){if(_0x1ce94c){var _0x4b2f19=typeof _0x3dfe4d[_0x13f0('0x20')]===_0x13f0('0x21')&&typeof _0x3dfe4d[_0x13f0('0x22')]===_0x13f0('0x21');var _0x5de34b=_0x1ce94c[_0x13f0('0x23')];var _0x46e1f1=_0x4b2f19?0x0:_0x3dfe4d[_0x13f0('0x20')];var _0x1a3025=_0x4b2f19?_0x1ce94c[_0x13f0('0x23')]:_0x3dfe4d['offset']+_0x3dfe4d[_0x13f0('0x22')];var _0x2f81ec;if(_0x1a3025>=_0x5de34b){_0x1a3025=_0x5de34b;_0x2f81ec=0xc8;}else{_0x2f81ec=0xce;}_0xe2f10f[_0x13f0('0x1d')](_0x2f81ec);return _0xe2f10f[_0x13f0('0x24')]('Content-Range',_0x46e1f1+'-'+_0x1a3025+'/'+_0x5de34b)[_0x13f0('0x1f')](_0x1ce94c);}return null;};}function patchUpdates(_0xececcf){return function(_0x1da4b9){try{jsonpatch[_0x13f0('0x25')](_0x1da4b9,_0xececcf,!![]);}catch(_0x10b762){return BPromise[_0x13f0('0x26')](_0x10b762);}return _0x1da4b9[_0x13f0('0x27')]();};}function saveUpdates(_0x275a23,_0x15b721){return function(_0x43cfec){if(_0x43cfec){return _0x43cfec['update'](_0x275a23)['then'](function(_0x5e2448){return _0x5e2448;});}return null;};}function removeEntity(_0x291fb2,_0x359c82){return function(_0x4ffc03){if(_0x4ffc03){return _0x4ffc03[_0x13f0('0x28')]()[_0x13f0('0x29')](function(){var _0x195ee2=_0x4ffc03[_0x13f0('0x2a')]({'plain':!![]});var _0x2a5324=_0x13f0('0x2b');return db[_0x13f0('0x2c')]['destroy']({'where':{'type':_0x2a5324,'resourceId':_0x195ee2['id']}})[_0x13f0('0x29')](function(){return _0x4ffc03;});})[_0x13f0('0x29')](function(){_0x291fb2['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1f15dd,_0x397174){return function(_0x1d6e66){if(!_0x1d6e66){_0x1f15dd[_0x13f0('0x1c')](0x194);}return _0x1d6e66;};}function handleError(_0x447590,_0x513b1d){_0x513b1d=_0x513b1d||0x1f4;return function(_0x124237){logger[_0x13f0('0x2d')](_0x124237[_0x13f0('0x2e')]);if(_0x124237[_0x13f0('0x2f')]){delete _0x124237[_0x13f0('0x2f')];}_0x447590[_0x13f0('0x1d')](_0x513b1d)[_0x13f0('0x30')](_0x124237);};}exports[_0x13f0('0x31')]=function(_0x51d904,_0x5dfbf5){var _0x2c7b03={},_0x24f2aa={},_0x1a1ca3={'count':0x0,'rows':[]};var _0x4ee020=_['map'](db['SquareProject'][_0x13f0('0x32')],function(_0x3412be){return{'name':_0x3412be['fieldName'],'type':_0x3412be['type']['key']};});_0x24f2aa['model']=_['map'](_0x4ee020,_0x13f0('0x2f'));_0x24f2aa['query']=_[_0x13f0('0x33')](_0x51d904['query']);_0x24f2aa[_0x13f0('0x34')]=_['intersection'](_0x24f2aa[_0x13f0('0x35')],_0x24f2aa[_0x13f0('0x36')]);_0x2c7b03[_0x13f0('0x37')]=_['intersection'](_0x24f2aa[_0x13f0('0x35')],qs[_0x13f0('0x38')](_0x51d904['query'][_0x13f0('0x38')]));_0x2c7b03[_0x13f0('0x37')]=_0x2c7b03[_0x13f0('0x37')][_0x13f0('0x39')]?_0x2c7b03['attributes']:_0x24f2aa[_0x13f0('0x35')];if(!_0x51d904['query'][_0x13f0('0x3a')](_0x13f0('0x3b'))){_0x2c7b03[_0x13f0('0x22')]=qs[_0x13f0('0x22')](_0x51d904['query']['limit']);_0x2c7b03[_0x13f0('0x20')]=qs[_0x13f0('0x20')](_0x51d904['query']['offset']);}_0x2c7b03[_0x13f0('0x3c')]=qs['sort'](_0x51d904[_0x13f0('0x36')]['sort']);_0x2c7b03[_0x13f0('0x3d')]=qs[_0x13f0('0x34')](_[_0x13f0('0x3e')](_0x51d904[_0x13f0('0x36')],_0x24f2aa[_0x13f0('0x34')]),_0x4ee020);if(_0x51d904[_0x13f0('0x36')][_0x13f0('0x3f')]){_0x2c7b03['where']=_['merge'](_0x2c7b03[_0x13f0('0x3d')],{'$or':_[_0x13f0('0x40')](_0x4ee020,function(_0x5aafec){if(_0x5aafec[_0x13f0('0x41')]!=='VIRTUAL'){var _0x19a178={};_0x19a178[_0x5aafec[_0x13f0('0x2f')]]={'$like':'%'+_0x51d904['query'][_0x13f0('0x3f')]+'%'};return _0x19a178;}})});}_0x2c7b03=_[_0x13f0('0x42')]({},_0x2c7b03,_0x51d904[_0x13f0('0x43')]);var _0x3feefa={'where':_0x2c7b03[_0x13f0('0x3d')]};return db[_0x13f0('0x44')][_0x13f0('0x23')](_0x3feefa)[_0x13f0('0x29')](function(_0x157883){_0x1a1ca3[_0x13f0('0x23')]=_0x157883;if(_0x51d904[_0x13f0('0x36')][_0x13f0('0x45')]){_0x2c7b03[_0x13f0('0x46')]=[{'all':!![]}];}return db['SquareProject'][_0x13f0('0x47')](_0x2c7b03);})[_0x13f0('0x29')](function(_0xae46c8){_0x1a1ca3['rows']=_0xae46c8;return _0x1a1ca3;})[_0x13f0('0x29')](respondWithFilteredResult(_0x5dfbf5,_0x2c7b03))[_0x13f0('0x48')](handleError(_0x5dfbf5,null));};exports['show']=function(_0x2e2f43,_0x1c8783){var _0x4a92f5={'raw':![],'where':{'id':_0x2e2f43['params']['id']}},_0x138846={};_0x138846[_0x13f0('0x35')]=_[_0x13f0('0x33')](db[_0x13f0('0x44')][_0x13f0('0x32')]);_0x138846['query']=_[_0x13f0('0x33')](_0x2e2f43[_0x13f0('0x36')]);_0x138846[_0x13f0('0x34')]=_[_0x13f0('0x49')](_0x138846[_0x13f0('0x35')],_0x138846[_0x13f0('0x36')]);_0x4a92f5[_0x13f0('0x37')]=_['intersection'](_0x138846[_0x13f0('0x35')],qs[_0x13f0('0x38')](_0x2e2f43[_0x13f0('0x36')][_0x13f0('0x38')]));_0x4a92f5[_0x13f0('0x37')]=_0x4a92f5[_0x13f0('0x37')][_0x13f0('0x39')]?_0x4a92f5['attributes']:_0x138846['model'];if(_0x2e2f43[_0x13f0('0x36')][_0x13f0('0x45')]){_0x4a92f5[_0x13f0('0x46')]=[{'all':!![]}];}_0x4a92f5=_[_0x13f0('0x42')]({},_0x4a92f5,_0x2e2f43[_0x13f0('0x43')]);return db[_0x13f0('0x44')][_0x13f0('0x4a')](_0x4a92f5)['then'](handleEntityNotFound(_0x1c8783,null))[_0x13f0('0x29')](respondWithResult(_0x1c8783,null))[_0x13f0('0x48')](handleError(_0x1c8783,null));};exports['create']=function(_0x33e2df,_0xd2299){return db[_0x13f0('0x44')]['create'](_0x33e2df[_0x13f0('0x4b')],{})[_0x13f0('0x29')](function(_0x4fd253){var _0x51b596=_0x33e2df['user'][_0x13f0('0x2a')]({'plain':!![]});if(!_0x51b596)throw new Error(_0x13f0('0x4c'));if(_0x51b596[_0x13f0('0x4d')]===_0x13f0('0x4e')){var _0x2b53d9=_0x4fd253['get']({'plain':!![]});var _0x49309e=_0x13f0('0x2b');return db['UserProfileSection'][_0x13f0('0x4a')]({'where':{'name':_0x49309e,'userProfileId':_0x51b596['userProfileId']},'raw':!![]})[_0x13f0('0x29')](function(_0x48019b){if(_0x48019b&&_0x48019b[_0x13f0('0x4f')]===0x0){return db['UserProfileResource']['create']({'name':_0x2b53d9['name'],'resourceId':_0x2b53d9['id'],'type':_0x48019b[_0x13f0('0x2f')],'sectionId':_0x48019b['id']},{})[_0x13f0('0x29')](function(){return _0x4fd253;});}else{return _0x4fd253;}})[_0x13f0('0x48')](function(_0x201b9c){logger[_0x13f0('0x2d')](_0x13f0('0x50'),_0x201b9c);throw _0x201b9c;});}return _0x4fd253;})['then'](respondWithResult(_0xd2299,0xc9))['catch'](handleError(_0xd2299,null));};exports['update']=function(_0x459ec2,_0x4525e3){if(_0x459ec2[_0x13f0('0x4b')]['id']){delete _0x459ec2[_0x13f0('0x4b')]['id'];}return db[_0x13f0('0x44')]['find']({'where':{'id':_0x459ec2[_0x13f0('0x51')]['id']}})[_0x13f0('0x29')](handleEntityNotFound(_0x4525e3,null))[_0x13f0('0x29')](saveUpdates(_0x459ec2['body'],null))['then'](respondWithResult(_0x4525e3,null))['catch'](handleError(_0x4525e3,null));};exports[_0x13f0('0x28')]=function(_0x1c4e73,_0x6f8eb){return db[_0x13f0('0x44')][_0x13f0('0x4a')]({'where':{'id':_0x1c4e73[_0x13f0('0x51')]['id']}})[_0x13f0('0x29')](handleEntityNotFound(_0x6f8eb,null))['then'](removeEntity(_0x6f8eb,null))['catch'](handleError(_0x6f8eb,null));};exports['addUsers']=function(_0x15c86a,_0x41146f,_0x1250dc){return db[_0x13f0('0x44')][_0x13f0('0x4a')]({'where':{'id':_0x15c86a[_0x13f0('0x51')]['id']}})[_0x13f0('0x29')](handleEntityNotFound(_0x41146f,null))[_0x13f0('0x29')](function(_0x2be0af){if(_0x2be0af){return _0x2be0af[_0x13f0('0x52')](_0x15c86a[_0x13f0('0x4b')][_0x13f0('0x53')],_[_0x13f0('0x54')](_0x15c86a[_0x13f0('0x4b')],[_0x13f0('0x53'),'id'])||{});}})['then'](respondWithResult(_0x41146f,null))[_0x13f0('0x48')](handleError(_0x41146f,null));};exports[_0x13f0('0x55')]=function(_0x4c7f34,_0x3d17cd,_0x234b49){return db[_0x13f0('0x44')][_0x13f0('0x4a')]({'where':{'id':_0x4c7f34[_0x13f0('0x51')]['id']}})[_0x13f0('0x29')](handleEntityNotFound(_0x3d17cd,null))[_0x13f0('0x29')](function(_0x7c17f7){if(_0x7c17f7){return _0x7c17f7[_0x13f0('0x55')](_0x4c7f34['query'][_0x13f0('0x53')])[_0x13f0('0x29')](function(){if(_[_0x13f0('0x56')](_0x4c7f34['query'][_0x13f0('0x53')])){for(var _0x5c82eb=0x0;_0x5c82eb<_0x4c7f34['query'][_0x13f0('0x53')][_0x13f0('0x39')];_0x5c82eb+=0x1){socket[_0x13f0('0x57')](_0x13f0('0x58'),{'UserId':Number(_0x4c7f34[_0x13f0('0x36')]['ids'][_0x5c82eb]),'SquareProjectId':Number(_0x4c7f34[_0x13f0('0x51')]['id'])});}}else{socket[_0x13f0('0x57')]('userSquareProject:remove',{'UserId':Number(_0x4c7f34[_0x13f0('0x36')][_0x13f0('0x53')]),'SquareProjectId':Number(_0x4c7f34['params']['id'])});}});}})[_0x13f0('0x29')](respondWithStatusCode(_0x3d17cd,null))[_0x13f0('0x48')](handleError(_0x3d17cd,null));};exports[_0x13f0('0x59')]=function(_0x39c3ef,_0x440885,_0x20dd13){var _0x4d0ccd={};var _0x24b828={};var _0x7f3b5f;var _0x54d86c;return db['SquareProject']['findOne']({'where':{'id':_0x39c3ef[_0x13f0('0x51')]['id']}})[_0x13f0('0x29')](handleEntityNotFound(_0x440885,null))['then'](function(_0x112d05){if(_0x112d05){_0x7f3b5f=_0x112d05;_0x24b828[_0x13f0('0x35')]=_['keys'](db[_0x13f0('0x5a')][_0x13f0('0x32')]);_0x24b828[_0x13f0('0x36')]=_['keys'](_0x39c3ef[_0x13f0('0x36')]);_0x24b828[_0x13f0('0x34')]=_['intersection'](_0x24b828[_0x13f0('0x35')],_0x24b828[_0x13f0('0x36')]);_0x4d0ccd['attributes']=_['intersection'](_0x24b828[_0x13f0('0x35')],qs[_0x13f0('0x38')](_0x39c3ef[_0x13f0('0x36')][_0x13f0('0x38')]));_0x4d0ccd[_0x13f0('0x37')]=_0x4d0ccd[_0x13f0('0x37')][_0x13f0('0x39')]?_0x4d0ccd[_0x13f0('0x37')]:_0x24b828[_0x13f0('0x35')];_0x4d0ccd[_0x13f0('0x3c')]=qs[_0x13f0('0x5b')](_0x39c3ef[_0x13f0('0x36')]['sort']);_0x4d0ccd['where']=qs['filters'](_['pick'](_0x39c3ef[_0x13f0('0x36')],_0x24b828[_0x13f0('0x34')]));if(_0x39c3ef[_0x13f0('0x36')][_0x13f0('0x3f')]){_0x4d0ccd[_0x13f0('0x3d')]=_[_0x13f0('0x42')](_0x4d0ccd[_0x13f0('0x3d')],{'$or':_[_0x13f0('0x40')](_0x4d0ccd[_0x13f0('0x37')],function(_0x14b096){var _0x1eb16c={};_0x1eb16c[_0x14b096]={'$like':'%'+_0x39c3ef['query'][_0x13f0('0x3f')]+'%'};return _0x1eb16c;})});}_0x4d0ccd=_[_0x13f0('0x42')]({},_0x4d0ccd,_0x39c3ef['options']);return _0x7f3b5f[_0x13f0('0x59')](_0x4d0ccd);}})[_0x13f0('0x29')](function(_0x29d0ce){if(_0x29d0ce){_0x54d86c=_0x29d0ce[_0x13f0('0x39')];if(!_0x39c3ef['query'][_0x13f0('0x3a')](_0x13f0('0x3b'))){_0x4d0ccd[_0x13f0('0x22')]=qs[_0x13f0('0x22')](_0x39c3ef[_0x13f0('0x36')][_0x13f0('0x22')]);_0x4d0ccd['offset']=qs[_0x13f0('0x20')](_0x39c3ef[_0x13f0('0x36')]['offset']);}return _0x7f3b5f[_0x13f0('0x59')](_0x4d0ccd);}})[_0x13f0('0x29')](function(_0x30c49c){if(_0x30c49c){return _0x30c49c?{'count':_0x54d86c,'rows':_0x30c49c}:null;}})[_0x13f0('0x29')](respondWithResult(_0x440885,null))[_0x13f0('0x48')](handleError(_0x440885,null));};
\ No newline at end of file
+var _0x643d=['order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','rawAttributes','intersection','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','params','addUsers','omit','ids','removeUsers','isArray','emit','userSquareProject:remove','findOne','getUsers','eml-format','rimraf','moment','bluebird','mustache','util','sox','to-csv','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/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','register','sendStatus','status','end','json','offset','limit','count','Content-Range','reject','save','update','then','get','SquareProjects','UserProfileResource','destroy','error','stack','name','send','index','map','SquareProject','fieldName','type','key','keys','query','filters','attributes','fields','length','model','hasOwnProperty','nolimit'];(function(_0x4f2ef4,_0x4965ba){var _0x1d51f3=function(_0x5a0035){while(--_0x5a0035){_0x4f2ef4['push'](_0x4f2ef4['shift']());}};_0x1d51f3(++_0x4965ba);}(_0x643d,0x1aa));var _0xd643=function(_0x16cb55,_0x4ce3c1){_0x16cb55=_0x16cb55-0x0;var _0x3c5570=_0x643d[_0x16cb55];return _0x3c5570;};'use strict';var emlformat=require(_0xd643('0x0'));var rimraf=require(_0xd643('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xd643('0x2'));var BPromise=require(_0xd643('0x3'));var Mustache=require(_0xd643('0x4'));var util=require(_0xd643('0x5'));var path=require('path');var sox=require(_0xd643('0x6'));var csv=require(_0xd643('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd643('0x8'));var _=require(_0xd643('0x9'));var squel=require(_0xd643('0xa'));var crypto=require('crypto');var jsforce=require(_0xd643('0xb'));var deskjs=require(_0xd643('0xc'));var toCsv=require('to-csv');var querystring=require(_0xd643('0xd'));var Papa=require(_0xd643('0xe'));var Redis=require(_0xd643('0xf'));var authService=require(_0xd643('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xd643('0x11'));var hardwareService=require(_0xd643('0x12'));var logger=require(_0xd643('0x13'))(_0xd643('0x14'));var utils=require(_0xd643('0x15'));var config=require(_0xd643('0x16'));var licenseUtil=require(_0xd643('0x17'));var db=require(_0xd643('0x18'))['db'];config[_0xd643('0x19')]=_[_0xd643('0x1a')](config[_0xd643('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xd643('0x1b'))(new Redis(config[_0xd643('0x19')]));require('./squareProject.socket')[_0xd643('0x1c')](socket);function respondWithStatusCode(_0xd660c4,_0xd8bd20){_0xd8bd20=_0xd8bd20||0xcc;return function(_0xab6295){if(_0xab6295){return _0xd660c4[_0xd643('0x1d')](_0xd8bd20);}return _0xd660c4[_0xd643('0x1e')](_0xd8bd20)[_0xd643('0x1f')]();};}function respondWithResult(_0x25ec50,_0x1f749f){_0x1f749f=_0x1f749f||0xc8;return function(_0x150b25){if(_0x150b25){return _0x25ec50['status'](_0x1f749f)[_0xd643('0x20')](_0x150b25);}};}function respondWithFilteredResult(_0x42baf2,_0x4ce505){return function(_0xaee02d){if(_0xaee02d){var _0x5d5ec8=typeof _0x4ce505[_0xd643('0x21')]==='undefined'&&typeof _0x4ce505[_0xd643('0x22')]==='undefined';var _0x4134b2=_0xaee02d[_0xd643('0x23')];var _0xe482df=_0x5d5ec8?0x0:_0x4ce505[_0xd643('0x21')];var _0x3dc76a=_0x5d5ec8?_0xaee02d[_0xd643('0x23')]:_0x4ce505[_0xd643('0x21')]+_0x4ce505['limit'];var _0x278357;if(_0x3dc76a>=_0x4134b2){_0x3dc76a=_0x4134b2;_0x278357=0xc8;}else{_0x278357=0xce;}_0x42baf2[_0xd643('0x1e')](_0x278357);return _0x42baf2['set'](_0xd643('0x24'),_0xe482df+'-'+_0x3dc76a+'/'+_0x4134b2)['json'](_0xaee02d);}return null;};}function patchUpdates(_0x240edb){return function(_0xafd20a){try{jsonpatch['apply'](_0xafd20a,_0x240edb,!![]);}catch(_0x26c0eb){return BPromise[_0xd643('0x25')](_0x26c0eb);}return _0xafd20a[_0xd643('0x26')]();};}function saveUpdates(_0x118320,_0x3d9b13){return function(_0x5f16fe){if(_0x5f16fe){return _0x5f16fe[_0xd643('0x27')](_0x118320)[_0xd643('0x28')](function(_0x308d94){return _0x308d94;});}return null;};}function removeEntity(_0x3ffb1c,_0x30d061){return function(_0x5bc598){if(_0x5bc598){return _0x5bc598['destroy']()['then'](function(){var _0x1bbb99=_0x5bc598[_0xd643('0x29')]({'plain':!![]});var _0x13d2a4=_0xd643('0x2a');return db[_0xd643('0x2b')][_0xd643('0x2c')]({'where':{'type':_0x13d2a4,'resourceId':_0x1bbb99['id']}})['then'](function(){return _0x5bc598;});})[_0xd643('0x28')](function(){_0x3ffb1c[_0xd643('0x1e')](0xcc)[_0xd643('0x1f')]();});}};}function handleEntityNotFound(_0x5ed46a,_0x918f65){return function(_0x388ebf){if(!_0x388ebf){_0x5ed46a[_0xd643('0x1d')](0x194);}return _0x388ebf;};}function handleError(_0x58c17a,_0x132fc8){_0x132fc8=_0x132fc8||0x1f4;return function(_0x41154d){logger[_0xd643('0x2d')](_0x41154d[_0xd643('0x2e')]);if(_0x41154d[_0xd643('0x2f')]){delete _0x41154d[_0xd643('0x2f')];}_0x58c17a[_0xd643('0x1e')](_0x132fc8)[_0xd643('0x30')](_0x41154d);};}exports[_0xd643('0x31')]=function(_0x19cd12,_0x39b066){var _0x3b4792={},_0x18cfa7={},_0x413f23={'count':0x0,'rows':[]};var _0x3ac32a=_[_0xd643('0x32')](db[_0xd643('0x33')]['rawAttributes'],function(_0xcef074){return{'name':_0xcef074[_0xd643('0x34')],'type':_0xcef074[_0xd643('0x35')][_0xd643('0x36')]};});_0x18cfa7['model']=_['map'](_0x3ac32a,'name');_0x18cfa7['query']=_[_0xd643('0x37')](_0x19cd12[_0xd643('0x38')]);_0x18cfa7[_0xd643('0x39')]=_['intersection'](_0x18cfa7['model'],_0x18cfa7[_0xd643('0x38')]);_0x3b4792[_0xd643('0x3a')]=_['intersection'](_0x18cfa7['model'],qs[_0xd643('0x3b')](_0x19cd12[_0xd643('0x38')][_0xd643('0x3b')]));_0x3b4792[_0xd643('0x3a')]=_0x3b4792[_0xd643('0x3a')][_0xd643('0x3c')]?_0x3b4792[_0xd643('0x3a')]:_0x18cfa7[_0xd643('0x3d')];if(!_0x19cd12[_0xd643('0x38')][_0xd643('0x3e')](_0xd643('0x3f'))){_0x3b4792[_0xd643('0x22')]=qs['limit'](_0x19cd12[_0xd643('0x38')][_0xd643('0x22')]);_0x3b4792[_0xd643('0x21')]=qs[_0xd643('0x21')](_0x19cd12[_0xd643('0x38')]['offset']);}_0x3b4792[_0xd643('0x40')]=qs[_0xd643('0x41')](_0x19cd12[_0xd643('0x38')][_0xd643('0x41')]);_0x3b4792[_0xd643('0x42')]=qs[_0xd643('0x39')](_[_0xd643('0x43')](_0x19cd12['query'],_0x18cfa7[_0xd643('0x39')]),_0x3ac32a);if(_0x19cd12['query'][_0xd643('0x44')]){_0x3b4792[_0xd643('0x42')]=_[_0xd643('0x45')](_0x3b4792[_0xd643('0x42')],{'$or':_[_0xd643('0x32')](_0x3ac32a,function(_0x38eab9){if(_0x38eab9[_0xd643('0x35')]!==_0xd643('0x46')){var _0x2366f5={};_0x2366f5[_0x38eab9['name']]={'$like':'%'+_0x19cd12[_0xd643('0x38')][_0xd643('0x44')]+'%'};return _0x2366f5;}})});}_0x3b4792=_['merge']({},_0x3b4792,_0x19cd12[_0xd643('0x47')]);var _0x16e1a9={'where':_0x3b4792[_0xd643('0x42')]};return db[_0xd643('0x33')][_0xd643('0x23')](_0x16e1a9)['then'](function(_0x102df4){_0x413f23[_0xd643('0x23')]=_0x102df4;if(_0x19cd12[_0xd643('0x38')]['includeAll']){_0x3b4792[_0xd643('0x48')]=[{'all':!![]}];}return db[_0xd643('0x33')][_0xd643('0x49')](_0x3b4792);})[_0xd643('0x28')](function(_0x2b8fc1){_0x413f23[_0xd643('0x4a')]=_0x2b8fc1;return _0x413f23;})[_0xd643('0x28')](respondWithFilteredResult(_0x39b066,_0x3b4792))[_0xd643('0x4b')](handleError(_0x39b066,null));};exports['show']=function(_0x40cba9,_0x151862){var _0x5bf2fb={'raw':![],'where':{'id':_0x40cba9['params']['id']}},_0x59ecf4={};_0x59ecf4[_0xd643('0x3d')]=_['keys'](db[_0xd643('0x33')][_0xd643('0x4c')]);_0x59ecf4['query']=_['keys'](_0x40cba9[_0xd643('0x38')]);_0x59ecf4[_0xd643('0x39')]=_['intersection'](_0x59ecf4[_0xd643('0x3d')],_0x59ecf4[_0xd643('0x38')]);_0x5bf2fb[_0xd643('0x3a')]=_[_0xd643('0x4d')](_0x59ecf4[_0xd643('0x3d')],qs['fields'](_0x40cba9[_0xd643('0x38')][_0xd643('0x3b')]));_0x5bf2fb['attributes']=_0x5bf2fb['attributes'][_0xd643('0x3c')]?_0x5bf2fb[_0xd643('0x3a')]:_0x59ecf4[_0xd643('0x3d')];if(_0x40cba9[_0xd643('0x38')]['includeAll']){_0x5bf2fb[_0xd643('0x48')]=[{'all':!![]}];}_0x5bf2fb=_[_0xd643('0x45')]({},_0x5bf2fb,_0x40cba9[_0xd643('0x47')]);return db[_0xd643('0x33')][_0xd643('0x4e')](_0x5bf2fb)['then'](handleEntityNotFound(_0x151862,null))[_0xd643('0x28')](respondWithResult(_0x151862,null))['catch'](handleError(_0x151862,null));};exports['create']=function(_0x48aa70,_0x3927e8){return db[_0xd643('0x33')][_0xd643('0x4f')](_0x48aa70['body'],{})['then'](function(_0x3a0b94){var _0x114c56=_0x48aa70[_0xd643('0x50')][_0xd643('0x29')]({'plain':!![]});if(!_0x114c56)throw new Error(_0xd643('0x51'));if(_0x114c56[_0xd643('0x52')]===_0xd643('0x50')){var _0xdcc4e8=_0x3a0b94[_0xd643('0x29')]({'plain':!![]});var _0x23d7e5=_0xd643('0x2a');return db[_0xd643('0x53')]['find']({'where':{'name':_0x23d7e5,'userProfileId':_0x114c56[_0xd643('0x54')]},'raw':!![]})[_0xd643('0x28')](function(_0xb10aca){if(_0xb10aca&&_0xb10aca[_0xd643('0x55')]===0x0){return db[_0xd643('0x2b')][_0xd643('0x4f')]({'name':_0xdcc4e8[_0xd643('0x2f')],'resourceId':_0xdcc4e8['id'],'type':_0xb10aca[_0xd643('0x2f')],'sectionId':_0xb10aca['id']},{})[_0xd643('0x28')](function(){return _0x3a0b94;});}else{return _0x3a0b94;}})[_0xd643('0x4b')](function(_0x184755){logger[_0xd643('0x2d')](_0xd643('0x56'),_0x184755);throw _0x184755;});}return _0x3a0b94;})[_0xd643('0x28')](respondWithResult(_0x3927e8,0xc9))[_0xd643('0x4b')](handleError(_0x3927e8,null));};exports[_0xd643('0x27')]=function(_0x37f96f,_0x4b7e3c){if(_0x37f96f[_0xd643('0x57')]['id']){delete _0x37f96f['body']['id'];}return db['SquareProject'][_0xd643('0x4e')]({'where':{'id':_0x37f96f[_0xd643('0x58')]['id']}})[_0xd643('0x28')](handleEntityNotFound(_0x4b7e3c,null))[_0xd643('0x28')](saveUpdates(_0x37f96f['body'],null))[_0xd643('0x28')](respondWithResult(_0x4b7e3c,null))[_0xd643('0x4b')](handleError(_0x4b7e3c,null));};exports[_0xd643('0x2c')]=function(_0x34a1da,_0x424afa){return db['SquareProject'][_0xd643('0x4e')]({'where':{'id':_0x34a1da[_0xd643('0x58')]['id']}})[_0xd643('0x28')](handleEntityNotFound(_0x424afa,null))[_0xd643('0x28')](removeEntity(_0x424afa,null))[_0xd643('0x4b')](handleError(_0x424afa,null));};exports[_0xd643('0x59')]=function(_0x5b9d8d,_0x3c7e84,_0xa7726f){return db[_0xd643('0x33')]['find']({'where':{'id':_0x5b9d8d[_0xd643('0x58')]['id']}})[_0xd643('0x28')](handleEntityNotFound(_0x3c7e84,null))[_0xd643('0x28')](function(_0xe8781c){if(_0xe8781c){return _0xe8781c[_0xd643('0x59')](_0x5b9d8d[_0xd643('0x57')]['ids'],_[_0xd643('0x5a')](_0x5b9d8d[_0xd643('0x57')],[_0xd643('0x5b'),'id'])||{});}})[_0xd643('0x28')](respondWithResult(_0x3c7e84,null))[_0xd643('0x4b')](handleError(_0x3c7e84,null));};exports[_0xd643('0x5c')]=function(_0x44150e,_0x3470fa,_0x4d27b8){return db[_0xd643('0x33')][_0xd643('0x4e')]({'where':{'id':_0x44150e[_0xd643('0x58')]['id']}})[_0xd643('0x28')](handleEntityNotFound(_0x3470fa,null))[_0xd643('0x28')](function(_0x461296){if(_0x461296){return _0x461296[_0xd643('0x5c')](_0x44150e[_0xd643('0x38')]['ids'])[_0xd643('0x28')](function(){if(_[_0xd643('0x5d')](_0x44150e[_0xd643('0x38')][_0xd643('0x5b')])){for(var _0x596f4=0x0;_0x596f4<_0x44150e[_0xd643('0x38')][_0xd643('0x5b')][_0xd643('0x3c')];_0x596f4+=0x1){socket[_0xd643('0x5e')]('userSquareProject:remove',{'UserId':Number(_0x44150e[_0xd643('0x38')][_0xd643('0x5b')][_0x596f4]),'SquareProjectId':Number(_0x44150e[_0xd643('0x58')]['id'])});}}else{socket[_0xd643('0x5e')](_0xd643('0x5f'),{'UserId':Number(_0x44150e[_0xd643('0x38')][_0xd643('0x5b')]),'SquareProjectId':Number(_0x44150e[_0xd643('0x58')]['id'])});}});}})[_0xd643('0x28')](respondWithStatusCode(_0x3470fa,null))[_0xd643('0x4b')](handleError(_0x3470fa,null));};exports['getUsers']=function(_0x4c5db6,_0x2c4ba2,_0x46f25a){var _0x1b8361={};var _0x2227a6={};var _0x598037;var _0x18c3d9;return db[_0xd643('0x33')][_0xd643('0x60')]({'where':{'id':_0x4c5db6[_0xd643('0x58')]['id']}})[_0xd643('0x28')](handleEntityNotFound(_0x2c4ba2,null))[_0xd643('0x28')](function(_0x7de704){if(_0x7de704){_0x598037=_0x7de704;_0x2227a6[_0xd643('0x3d')]=_[_0xd643('0x37')](db['User']['rawAttributes']);_0x2227a6[_0xd643('0x38')]=_[_0xd643('0x37')](_0x4c5db6['query']);_0x2227a6['filters']=_['intersection'](_0x2227a6['model'],_0x2227a6[_0xd643('0x38')]);_0x1b8361[_0xd643('0x3a')]=_[_0xd643('0x4d')](_0x2227a6[_0xd643('0x3d')],qs[_0xd643('0x3b')](_0x4c5db6[_0xd643('0x38')][_0xd643('0x3b')]));_0x1b8361[_0xd643('0x3a')]=_0x1b8361[_0xd643('0x3a')][_0xd643('0x3c')]?_0x1b8361[_0xd643('0x3a')]:_0x2227a6['model'];_0x1b8361['order']=qs[_0xd643('0x41')](_0x4c5db6[_0xd643('0x38')]['sort']);_0x1b8361[_0xd643('0x42')]=qs['filters'](_[_0xd643('0x43')](_0x4c5db6[_0xd643('0x38')],_0x2227a6[_0xd643('0x39')]));if(_0x4c5db6['query'][_0xd643('0x44')]){_0x1b8361[_0xd643('0x42')]=_[_0xd643('0x45')](_0x1b8361['where'],{'$or':_[_0xd643('0x32')](_0x1b8361['attributes'],function(_0x261b92){var _0x54ea02={};_0x54ea02[_0x261b92]={'$like':'%'+_0x4c5db6[_0xd643('0x38')][_0xd643('0x44')]+'%'};return _0x54ea02;})});}_0x1b8361=_[_0xd643('0x45')]({},_0x1b8361,_0x4c5db6[_0xd643('0x47')]);return _0x598037[_0xd643('0x61')](_0x1b8361);}})[_0xd643('0x28')](function(_0x247a7c){if(_0x247a7c){_0x18c3d9=_0x247a7c[_0xd643('0x3c')];if(!_0x4c5db6[_0xd643('0x38')][_0xd643('0x3e')](_0xd643('0x3f'))){_0x1b8361[_0xd643('0x22')]=qs['limit'](_0x4c5db6[_0xd643('0x38')][_0xd643('0x22')]);_0x1b8361[_0xd643('0x21')]=qs[_0xd643('0x21')](_0x4c5db6[_0xd643('0x38')][_0xd643('0x21')]);}return _0x598037[_0xd643('0x61')](_0x1b8361);}})[_0xd643('0x28')](function(_0x11578c){if(_0x11578c){return _0x11578c?{'count':_0x18c3d9,'rows':_0x11578c}:null;}})[_0xd643('0x28')](respondWithResult(_0x2c4ba2,null))[_0xd643('0x4b')](handleError(_0x2c4ba2,null));};
\ No newline at end of file
index c5a8b0c..6dd4436 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc895=['exports','events','../../mysqldb','SquareProject','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x4a7631,_0x2c85b9){var _0x1a5a6f=function(_0x1ee3fd){while(--_0x1ee3fd){_0x4a7631['push'](_0x4a7631['shift']());}};_0x1a5a6f(++_0x2c85b9);}(_0xc895,0x1cf));var _0x5c89=function(_0x20bc10,_0x35bed9){_0x20bc10=_0x20bc10-0x0;var _0x3bd5ce=_0xc895[_0x20bc10];return _0x3bd5ce;};'use strict';var EventEmitter=require(_0x5c89('0x0'));var SquareProject=require(_0x5c89('0x1'))['db'][_0x5c89('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x5c89('0x3')](0x0);var events={'afterCreate':_0x5c89('0x4'),'afterUpdate':_0x5c89('0x5'),'afterDestroy':_0x5c89('0x6')};function emitEvent(_0x18208f){return function(_0x8c7041,_0x59a1c1,_0x47e1bc){SquareProjectEvents['emit'](_0x18208f+':'+_0x8c7041['id'],_0x8c7041);SquareProjectEvents[_0x5c89('0x7')](_0x18208f,_0x8c7041);_0x47e1bc(null);};}for(var e in events){if(events[_0x5c89('0x8')](e)){var event=events[e];SquareProject[_0x5c89('0x9')](e,emitEvent(event));}}module[_0x5c89('0xa')]=SquareProjectEvents;
\ No newline at end of file
+var _0xe2a5=['SquareProject','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x4695ba,_0x5a7f2a){var _0x524b7d=function(_0xfc9707){while(--_0xfc9707){_0x4695ba['push'](_0x4695ba['shift']());}};_0x524b7d(++_0x5a7f2a);}(_0xe2a5,0xce));var _0x5e2a=function(_0x56439d,_0x58c311){_0x56439d=_0x56439d-0x0;var _0x30981e=_0xe2a5[_0x56439d];return _0x30981e;};'use strict';var EventEmitter=require(_0x5e2a('0x0'));var SquareProject=require('../../mysqldb')['db'][_0x5e2a('0x1')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x5e2a('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x5e2a('0x3'),'afterDestroy':_0x5e2a('0x4')};function emitEvent(_0x3c063a){return function(_0x5100a6,_0x317b5f,_0x164b46){SquareProjectEvents[_0x5e2a('0x5')](_0x3c063a+':'+_0x5100a6['id'],_0x5100a6);SquareProjectEvents[_0x5e2a('0x5')](_0x3c063a,_0x5100a6);_0x164b46(null);};}for(var e in events){if(events[_0x5e2a('0x6')](e)){var event=events[e];SquareProject[_0x5e2a('0x7')](e,emitEvent(event));}}module[_0x5e2a('0x8')]=SquareProjectEvents;
\ No newline at end of file
index 82a3a81..c42fff2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3e5=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./squareProject.attributes','exports','square_projects','changed','savedAt','format','YYYY-MM-DD\x20HH:mm:ss','production','publishedAt'];(function(_0x4b0d20,_0x6439ec){var _0x566217=function(_0x35dd8c){while(--_0x35dd8c){_0x4b0d20['push'](_0x4b0d20['shift']());}};_0x566217(++_0x6439ec);}(_0xd3e5,0x154));var _0x5d3e=function(_0x594dbb,_0x617fd3){_0x594dbb=_0x594dbb-0x0;var _0xe9a0d2=_0xd3e5[_0x594dbb];return _0xe9a0d2;};'use strict';var _=require(_0x5d3e('0x0'));var util=require(_0x5d3e('0x1'));var logger=require(_0x5d3e('0x2'))(_0x5d3e('0x3'));var moment=require(_0x5d3e('0x4'));var BPromise=require(_0x5d3e('0x5'));var rp=require(_0x5d3e('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x5d3e('0x7'));var attributes=require(_0x5d3e('0x8'));module[_0x5d3e('0x9')]=function(_0x4496ad,_0x1f768f){return _0x4496ad['define']('SquareProject',attributes,{'tableName':_0x5d3e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x456fd0,_0x3c328d,_0x3008a5){if(_0x456fd0[_0x5d3e('0xb')]('preproduction')){_0x456fd0[_0x5d3e('0xc')]=moment()[_0x5d3e('0xd')](_0x5d3e('0xe'));}if(_0x456fd0[_0x5d3e('0xb')](_0x5d3e('0xf'))){_0x456fd0[_0x5d3e('0x10')]=moment()[_0x5d3e('0xd')](_0x5d3e('0xe'));}_0x3008a5(null,_0x456fd0);}}});};
\ No newline at end of file
+var _0x811b=['SquareProject','square_projects','preproduction','savedAt','format','changed','production','YYYY-MM-DD\x20HH:mm:ss','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareProject.attributes','exports','define'];(function(_0x510347,_0xdf770a){var _0x5cb84f=function(_0x4c35d7){while(--_0x4c35d7){_0x510347['push'](_0x510347['shift']());}};_0x5cb84f(++_0xdf770a);}(_0x811b,0x10c));var _0xb811=function(_0x2b70f8,_0x361789){_0x2b70f8=_0x2b70f8-0x0;var _0x2f741e=_0x811b[_0x2b70f8];return _0x2f741e;};'use strict';var _=require(_0xb811('0x0'));var util=require(_0xb811('0x1'));var logger=require('../../config/logger')(_0xb811('0x2'));var moment=require(_0xb811('0x3'));var BPromise=require(_0xb811('0x4'));var rp=require(_0xb811('0x5'));var fs=require('fs');var path=require(_0xb811('0x6'));var rimraf=require(_0xb811('0x7'));var config=require(_0xb811('0x8'));var attributes=require(_0xb811('0x9'));module[_0xb811('0xa')]=function(_0x2ad01f,_0x58b911){return _0x2ad01f[_0xb811('0xb')](_0xb811('0xc'),attributes,{'tableName':_0xb811('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3e63ee,_0x2aed5d,_0x12d346){if(_0x3e63ee['changed'](_0xb811('0xe'))){_0x3e63ee[_0xb811('0xf')]=moment()[_0xb811('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x3e63ee[_0xb811('0x11')](_0xb811('0x12'))){_0x3e63ee['publishedAt']=moment()[_0xb811('0x10')](_0xb811('0x13'));}_0x12d346(null,_0x3e63ee);}}});};
\ No newline at end of file
index 9083911..2093cf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5554=['moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','localhost','socket.io-emitter','./squareProject.socket','register','request','then','info','SquareProject,\x20%s,\x20%s','request\x20sent','SquareProject,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','ShowSquareProject','SquareProject','find','raw','options','where','attributes','model','include','map','lodash','util'];(function(_0x433516,_0x1ecae4){var _0x21c7b6=function(_0x365e18){while(--_0x365e18){_0x433516['push'](_0x433516['shift']());}};_0x21c7b6(++_0x1ecae4);}(_0x5554,0x92));var _0x4555=function(_0xc67528,_0x24e2fb){_0xc67528=_0xc67528-0x0;var _0x38e26d=_0x5554[_0xc67528];return _0x38e26d;};'use strict';var _=require(_0x4555('0x0'));var util=require(_0x4555('0x1'));var moment=require(_0x4555('0x2'));var BPromise=require('bluebird');var rs=require(_0x4555('0x3'));var fs=require('fs');var Redis=require(_0x4555('0x4'));var db=require(_0x4555('0x5'))['db'];var utils=require(_0x4555('0x6'));var logger=require(_0x4555('0x7'))(_0x4555('0x8'));var config=require('../../config/environment');var jayson=require(_0x4555('0x9'));var client=jayson[_0x4555('0xa')]['http']({'port':0x232a});config[_0x4555('0xb')]=_['defaults'](config[_0x4555('0xb')],{'host':_0x4555('0xc'),'port':0x18eb});var socket=require(_0x4555('0xd'))(new Redis(config[_0x4555('0xb')]));require(_0x4555('0xe'))[_0x4555('0xf')](socket);function respondWithRpcPromise(_0x4a75c7,_0xf76291,_0x30977c){return new BPromise(function(_0x3e131d,_0x50390d){return client[_0x4555('0x10')](_0x4a75c7,_0x30977c)[_0x4555('0x11')](function(_0x2ba4c1){logger[_0x4555('0x12')](_0x4555('0x13'),_0xf76291,_0x4555('0x14'));logger['debug'](_0x4555('0x15'),_0xf76291,_0x4555('0x14'),JSON[_0x4555('0x16')](_0x2ba4c1));if(_0x2ba4c1[_0x4555('0x17')]){if(_0x2ba4c1[_0x4555('0x17')]['code']===0x1f4){logger[_0x4555('0x17')](_0x4555('0x13'),_0xf76291,_0x2ba4c1['error']['message']);return _0x50390d(_0x2ba4c1['error'][_0x4555('0x18')]);}logger['error']('SquareProject,\x20%s,\x20%s',_0xf76291,_0x2ba4c1[_0x4555('0x17')]['message']);return _0x3e131d(_0x2ba4c1['error'][_0x4555('0x18')]);}else{logger['info'](_0x4555('0x13'),_0xf76291,'request\x20sent');_0x3e131d(_0x2ba4c1[_0x4555('0x19')]['message']);}})[_0x4555('0x1a')](function(_0x38eec9){logger[_0x4555('0x17')](_0x4555('0x13'),_0xf76291,_0x38eec9);_0x50390d(_0x38eec9);});});}exports[_0x4555('0x1b')]=function(_0x312af0){var _0x528ecd=this;return new Promise(function(_0x17e713,_0x3dc5ac){return db[_0x4555('0x1c')][_0x4555('0x1d')]({'raw':_0x312af0['options']?_0x312af0['options'][_0x4555('0x1e')]===undefined?!![]:![]:!![],'where':_0x312af0[_0x4555('0x1f')]?_0x312af0['options'][_0x4555('0x20')]||null:null,'attributes':_0x312af0[_0x4555('0x1f')]?_0x312af0[_0x4555('0x1f')][_0x4555('0x21')]||null:null,'include':_0x312af0[_0x4555('0x1f')]?_0x312af0['options']['include']?_['map'](_0x312af0[_0x4555('0x1f')]['include'],function(_0x24cb15){return{'model':db[_0x24cb15[_0x4555('0x22')]],'as':_0x24cb15['as'],'attributes':_0x24cb15['attributes'],'include':_0x24cb15[_0x4555('0x23')]?_[_0x4555('0x24')](_0x24cb15['include'],function(_0x3c1707){return{'model':db[_0x3c1707[_0x4555('0x22')]],'as':_0x3c1707['as'],'attributes':_0x3c1707[_0x4555('0x21')],'include':_0x3c1707[_0x4555('0x23')]?_[_0x4555('0x24')](_0x3c1707[_0x4555('0x23')],function(_0xae65dc){return{'model':db[_0xae65dc['model']],'as':_0xae65dc['as'],'attributes':_0xae65dc[_0x4555('0x21')]};}):[]};}):[]};}):[]:[]})[_0x4555('0x11')](function(_0x3aa47d){logger[_0x4555('0x12')](_0x4555('0x1b'),_0x312af0);logger['debug'](_0x4555('0x1b'),_0x312af0,JSON[_0x4555('0x16')](_0x3aa47d));_0x17e713(_0x3aa47d);})['catch'](function(_0xcb41db){logger[_0x4555('0x17')](_0x4555('0x1b'),_0xcb41db['message'],_0x312af0);_0x3dc5ac(_0x528ecd[_0x4555('0x17')](0x1f4,_0xcb41db[_0x4555('0x18')]));});});};
\ No newline at end of file
+var _0x4fd2=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','redis','defaults','localhost','socket.io-emitter','register','then','SquareProject,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','info','result','catch','ShowSquareProject','SquareProject','find','options','raw','where','attributes','model','util','moment','bluebird'];(function(_0x4c05da,_0x414720){var _0x1614db=function(_0xa19cf6){while(--_0xa19cf6){_0x4c05da['push'](_0x4c05da['shift']());}};_0x1614db(++_0x414720);}(_0x4fd2,0x15b));var _0x24fd=function(_0x6f96e6,_0x23ea02){_0x6f96e6=_0x6f96e6-0x0;var _0xec6891=_0x4fd2[_0x6f96e6];return _0xec6891;};'use strict';var _=require('lodash');var util=require(_0x24fd('0x0'));var moment=require(_0x24fd('0x1'));var BPromise=require(_0x24fd('0x2'));var rs=require(_0x24fd('0x3'));var fs=require('fs');var Redis=require(_0x24fd('0x4'));var db=require(_0x24fd('0x5'))['db'];var utils=require(_0x24fd('0x6'));var logger=require(_0x24fd('0x7'))(_0x24fd('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x24fd('0x9')][_0x24fd('0xa')]({'port':0x232a});config[_0x24fd('0xb')]=_[_0x24fd('0xc')](config[_0x24fd('0xb')],{'host':_0x24fd('0xd'),'port':0x18eb});var socket=require(_0x24fd('0xe'))(new Redis(config['redis']));require('./squareProject.socket')[_0x24fd('0xf')](socket);function respondWithRpcPromise(_0x40f859,_0x2d8285,_0x571a5e){return new BPromise(function(_0x16397d,_0xec5b3a){return client['request'](_0x40f859,_0x571a5e)[_0x24fd('0x10')](function(_0x5c6d84){logger['info'](_0x24fd('0x11'),_0x2d8285,'request\x20sent');logger[_0x24fd('0x12')]('SquareProject,\x20%s,\x20%s,\x20%s',_0x2d8285,_0x24fd('0x13'),JSON[_0x24fd('0x14')](_0x5c6d84));if(_0x5c6d84[_0x24fd('0x15')]){if(_0x5c6d84[_0x24fd('0x15')][_0x24fd('0x16')]===0x1f4){logger[_0x24fd('0x15')]('SquareProject,\x20%s,\x20%s',_0x2d8285,_0x5c6d84[_0x24fd('0x15')][_0x24fd('0x17')]);return _0xec5b3a(_0x5c6d84[_0x24fd('0x15')][_0x24fd('0x17')]);}logger[_0x24fd('0x15')](_0x24fd('0x11'),_0x2d8285,_0x5c6d84[_0x24fd('0x15')][_0x24fd('0x17')]);return _0x16397d(_0x5c6d84[_0x24fd('0x15')][_0x24fd('0x17')]);}else{logger[_0x24fd('0x18')](_0x24fd('0x11'),_0x2d8285,_0x24fd('0x13'));_0x16397d(_0x5c6d84[_0x24fd('0x19')]['message']);}})[_0x24fd('0x1a')](function(_0x4eda15){logger[_0x24fd('0x15')](_0x24fd('0x11'),_0x2d8285,_0x4eda15);_0xec5b3a(_0x4eda15);});});}exports[_0x24fd('0x1b')]=function(_0x699146){var _0x5cae3b=this;return new Promise(function(_0x4bd94b,_0x536537){return db[_0x24fd('0x1c')][_0x24fd('0x1d')]({'raw':_0x699146[_0x24fd('0x1e')]?_0x699146[_0x24fd('0x1e')][_0x24fd('0x1f')]===undefined?!![]:![]:!![],'where':_0x699146[_0x24fd('0x1e')]?_0x699146[_0x24fd('0x1e')][_0x24fd('0x20')]||null:null,'attributes':_0x699146[_0x24fd('0x1e')]?_0x699146[_0x24fd('0x1e')][_0x24fd('0x21')]||null:null,'include':_0x699146[_0x24fd('0x1e')]?_0x699146[_0x24fd('0x1e')]['include']?_['map'](_0x699146['options']['include'],function(_0x4051b9){return{'model':db[_0x4051b9[_0x24fd('0x22')]],'as':_0x4051b9['as'],'attributes':_0x4051b9[_0x24fd('0x21')],'include':_0x4051b9['include']?_['map'](_0x4051b9['include'],function(_0xf0f1e1){return{'model':db[_0xf0f1e1[_0x24fd('0x22')]],'as':_0xf0f1e1['as'],'attributes':_0xf0f1e1['attributes'],'include':_0xf0f1e1['include']?_['map'](_0xf0f1e1['include'],function(_0x214a82){return{'model':db[_0x214a82['model']],'as':_0x214a82['as'],'attributes':_0x214a82['attributes']};}):[]};}):[]};}):[]:[]})[_0x24fd('0x10')](function(_0x1b3cd9){logger['info']('ShowSquareProject',_0x699146);logger[_0x24fd('0x12')](_0x24fd('0x1b'),_0x699146,JSON[_0x24fd('0x14')](_0x1b3cd9));_0x4bd94b(_0x1b3cd9);})['catch'](function(_0x198aa1){logger[_0x24fd('0x15')](_0x24fd('0x1b'),_0x198aa1['message'],_0x699146);_0x536537(_0x5cae3b[_0x24fd('0x15')](0x1f4,_0x198aa1[_0x24fd('0x17')]));});});};
\ No newline at end of file
index 2139415..bd09860 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18de=['update','emit','removeListener','register','squareProject:','./squareProject.events','save','remove'];(function(_0x31055b,_0x112394){var _0xb3e22f=function(_0x33973f){while(--_0x33973f){_0x31055b['push'](_0x31055b['shift']());}};_0xb3e22f(++_0x112394);}(_0x18de,0x19d));var _0xe18d=function(_0x4477ba,_0x2adf18){_0x4477ba=_0x4477ba-0x0;var _0x1d1bc3=_0x18de[_0x4477ba];return _0x1d1bc3;};'use strict';var SquareProjectEvents=require(_0xe18d('0x0'));var events=[_0xe18d('0x1'),_0xe18d('0x2'),_0xe18d('0x3')];function createListener(_0x2bee05,_0x4e55ed){return function(_0xfadd28){_0x4e55ed[_0xe18d('0x4')](_0x2bee05,_0xfadd28);};}function removeListener(_0x52b20c,_0x17f96a){return function(){SquareProjectEvents[_0xe18d('0x5')](_0x52b20c,_0x17f96a);};}exports[_0xe18d('0x6')]=function(_0x4b4742){for(var _0x53e951=0x0,_0x3a006f=events['length'];_0x53e951<_0x3a006f;_0x53e951++){var _0xc07d28=events[_0x53e951];var _0x35f961=createListener(_0xe18d('0x7')+_0xc07d28,_0x4b4742);SquareProjectEvents['on'](_0xc07d28,_0x35f961);}};
\ No newline at end of file
+var _0x1e5a=['register','length','squareProject:','./squareProject.events','remove','emit','removeListener'];(function(_0x1c288b,_0x377b72){var _0x5d9225=function(_0x3c1a9e){while(--_0x3c1a9e){_0x1c288b['push'](_0x1c288b['shift']());}};_0x5d9225(++_0x377b72);}(_0x1e5a,0x161));var _0xa1e5=function(_0xedc9ed,_0x18870a){_0xedc9ed=_0xedc9ed-0x0;var _0x174596=_0x1e5a[_0xedc9ed];return _0x174596;};'use strict';var SquareProjectEvents=require(_0xa1e5('0x0'));var events=['save',_0xa1e5('0x1'),'update'];function createListener(_0x297275,_0x2f14e6){return function(_0xa0e5ad){_0x2f14e6[_0xa1e5('0x2')](_0x297275,_0xa0e5ad);};}function removeListener(_0x3a0692,_0x446870){return function(){SquareProjectEvents[_0xa1e5('0x3')](_0x3a0692,_0x446870);};}exports[_0xa1e5('0x4')]=function(_0x1d4b92){for(var _0x2d851e=0x0,_0x565e7e=events[_0xa1e5('0x5')];_0x2d851e<_0x565e7e;_0x2d851e++){var _0x53b7f0=events[_0x2d851e];var _0xaa1dce=createListener(_0xa1e5('0x6')+_0x53b7f0,_0x1d4b92);SquareProjectEvents['on'](_0x53b7f0,_0xaa1dce);}};
\ No newline at end of file
index 495b925..fdb07b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','isAuthenticated','/:id','show','/:id/download','download','create','put','update','delete','destroy','multer','util','connect-timeout'];(function(_0x507a50,_0x5a03e8){var _0x47bc3a=function(_0x1caf53){while(--_0x1caf53){_0x507a50['push'](_0x507a50['shift']());}};_0x47bc3a(++_0x5a03e8);}(_0x5fab,0x177));var _0xb5fa=function(_0x2f8805,_0x2f1d21){_0x2f8805=_0x2f8805-0x0;var _0xa16375=_0x5fab[_0x2f8805];return _0xa16375;};'use strict';var multer=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var path=require('path');var timeout=require(_0xb5fa('0x2'));var express=require(_0xb5fa('0x3'));var router=express[_0xb5fa('0x4')]();var fs_extra=require(_0xb5fa('0x5'));var auth=require(_0xb5fa('0x6'));var interaction=require(_0xb5fa('0x7'));var config=require(_0xb5fa('0x8'));var controller=require(_0xb5fa('0x9'));router[_0xb5fa('0xa')]('/',auth[_0xb5fa('0xb')](),controller['index']);router['get'](_0xb5fa('0xc'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0xd')]);router['get'](_0xb5fa('0xe'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0xb5fa('0x10')]);router[_0xb5fa('0x11')](_0xb5fa('0xc'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x12')]);router[_0xb5fa('0x13')](_0xb5fa('0xc'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x14')]);module['exports']=router;
\ No newline at end of file
+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(_0x1318e3,_0x4b8b91){var _0x4bf7b5=function(_0x1cb810){while(--_0x1cb810){_0x1318e3['push'](_0x1318e3['shift']());}};_0x4bf7b5(++_0x4b8b91);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0xc4aa[_0x5f1391];return _0x50ebe3;};'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
index 3165a0e..53c4087 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf494=['STRING','VIRTUAL','getDataValue','savePath','substring','lastIndexOf','sequelize','exports'];(function(_0x2aa0e7,_0x4e5145){var _0x1472c0=function(_0x4deaeb){while(--_0x4deaeb){_0x2aa0e7['push'](_0x2aa0e7['shift']());}};_0x1472c0(++_0x4e5145);}(_0xf494,0x1c6));var _0x4f49=function(_0x2bcd2e,_0x55f914){_0x2bcd2e=_0x2bcd2e-0x0;var _0x361472=_0xf494[_0x2bcd2e];return _0x361472;};'use strict';var Sequelize=require(_0x4f49('0x0'));module[_0x4f49('0x1')]={'uniqueid':{'type':Sequelize[_0x4f49('0x2')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x4f49('0x2')]},'context':{'type':Sequelize[_0x4f49('0x2')]},'extension':{'type':Sequelize[_0x4f49('0x2')]},'priority':{'type':Sequelize[_0x4f49('0x2')]},'accountcode':{'type':Sequelize[_0x4f49('0x2')]},'dnid':{'type':Sequelize[_0x4f49('0x2')]},'projectName':{'type':Sequelize[_0x4f49('0x2')]},'saveName':{'type':Sequelize[_0x4f49('0x2')]},'filename':{'type':Sequelize[_0x4f49('0x2')]},'savePath':{'type':Sequelize[_0x4f49('0x2')]},'format':{'type':Sequelize[_0x4f49('0x3')],'get':function(){var _0x5eb186='';var _0x58e9a0=this[_0x4f49('0x4')](_0x4f49('0x5'));if(_0x58e9a0){_0x5eb186=_0x58e9a0[_0x4f49('0x6')](_0x58e9a0[_0x4f49('0x7')]('.'));}return _0x5eb186;}}};
\ No newline at end of file
+var _0x814b=['substring','lastIndexOf','sequelize','exports','STRING','VIRTUAL','getDataValue','savePath'];(function(_0x20cd18,_0x29a452){var _0x6bfda6=function(_0x42f915){while(--_0x42f915){_0x20cd18['push'](_0x20cd18['shift']());}};_0x6bfda6(++_0x29a452);}(_0x814b,0x1a2));var _0xb814=function(_0x13ed69,_0x229161){_0x13ed69=_0x13ed69-0x0;var _0x50c72e=_0x814b[_0x13ed69];return _0x50c72e;};'use strict';var Sequelize=require(_0xb814('0x0'));module[_0xb814('0x1')]={'uniqueid':{'type':Sequelize[_0xb814('0x2')]},'callerid':{'type':Sequelize[_0xb814('0x2')]},'calleridname':{'type':Sequelize[_0xb814('0x2')]},'context':{'type':Sequelize[_0xb814('0x2')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xb814('0x2')]},'accountcode':{'type':Sequelize[_0xb814('0x2')]},'dnid':{'type':Sequelize[_0xb814('0x2')]},'projectName':{'type':Sequelize[_0xb814('0x2')]},'saveName':{'type':Sequelize[_0xb814('0x2')]},'filename':{'type':Sequelize[_0xb814('0x2')]},'savePath':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0xb814('0x3')],'get':function(){var _0x2e6272='';var _0x5c8539=this[_0xb814('0x4')](_0xb814('0x5'));if(_0x5c8539){_0x2e6272=_0x5c8539[_0xb814('0x6')](_0x5c8539[_0xb814('0x7')]('.'));}return _0x2e6272;}}};
\ No newline at end of file
index 834b96a..fa05f35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x791b=['Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','SquareRecording','rawAttributes','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','options','includeAll','include','findAll','rows','catch','show','params','length','create','body','download','uniqueid','find','filename','savePath','format','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','SquareRecording\x20not\x20found','extname','message','Not\x20found','Entity\x20not\x20found','info','isNil','File:\x20\x22','unlinkSync','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','eml-format','rimraf','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set'];(function(_0x27f680,_0xb59a1b){var _0x1b7293=function(_0x1c6101){while(--_0x1c6101){_0x27f680['push'](_0x27f680['shift']());}};_0x1b7293(++_0xb59a1b);}(_0x791b,0xa4));var _0xb791=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x791b[_0xfae23b];return _0x200640;};'use strict';var emlformat=require(_0xb791('0x0'));var rimraf=require(_0xb791('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb791('0x2'));var Mustache=require(_0xb791('0x3'));var util=require(_0xb791('0x4'));var path=require(_0xb791('0x5'));var sox=require(_0xb791('0x6'));var csv=require(_0xb791('0x7'));var ejs=require(_0xb791('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb791('0x9'));var squel=require('squel');var crypto=require(_0xb791('0xa'));var jsforce=require(_0xb791('0xb'));var deskjs=require(_0xb791('0xc'));var toCsv=require('to-csv');var querystring=require(_0xb791('0xd'));var Papa=require(_0xb791('0xe'));var Redis=require(_0xb791('0xf'));var authService=require(_0xb791('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xb791('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb791('0x12'));var utils=require(_0xb791('0x13'));var config=require(_0xb791('0x14'));var licenseUtil=require(_0xb791('0x15'));var db=require(_0xb791('0x16'))['db'];function respondWithStatusCode(_0x56acfe,_0x1f6594){_0x1f6594=_0x1f6594||0xcc;return function(_0x4e40a5){if(_0x4e40a5){return _0x56acfe[_0xb791('0x17')](_0x1f6594);}return _0x56acfe['status'](_0x1f6594)[_0xb791('0x18')]();};}function respondWithResult(_0x34741a,_0x22ca4d){_0x22ca4d=_0x22ca4d||0xc8;return function(_0x5ea87f){if(_0x5ea87f){return _0x34741a[_0xb791('0x19')](_0x22ca4d)[_0xb791('0x1a')](_0x5ea87f);}};}function respondWithFilteredResult(_0x195cb3,_0x5eea42){return function(_0xc4f8ad){if(_0xc4f8ad){var _0x7b5749=typeof _0x5eea42[_0xb791('0x1b')]===_0xb791('0x1c')&&typeof _0x5eea42[_0xb791('0x1d')]===_0xb791('0x1c');var _0x3e6112=_0xc4f8ad[_0xb791('0x1e')];var _0x4333cf=_0x7b5749?0x0:_0x5eea42[_0xb791('0x1b')];var _0x18d412=_0x7b5749?_0xc4f8ad[_0xb791('0x1e')]:_0x5eea42[_0xb791('0x1b')]+_0x5eea42['limit'];var _0x1a262a;if(_0x18d412>=_0x3e6112){_0x18d412=_0x3e6112;_0x1a262a=0xc8;}else{_0x1a262a=0xce;}_0x195cb3[_0xb791('0x19')](_0x1a262a);return _0x195cb3[_0xb791('0x1f')](_0xb791('0x20'),_0x4333cf+'-'+_0x18d412+'/'+_0x3e6112)[_0xb791('0x1a')](_0xc4f8ad);}return null;};}function patchUpdates(_0x4c5514){return function(_0x3bc040){try{jsonpatch[_0xb791('0x21')](_0x3bc040,_0x4c5514,!![]);}catch(_0x298954){return BPromise[_0xb791('0x22')](_0x298954);}return _0x3bc040[_0xb791('0x23')]();};}function saveUpdates(_0x23230b,_0x598bd1){return function(_0x330d81){if(_0x330d81){return _0x330d81[_0xb791('0x24')](_0x23230b)[_0xb791('0x25')](function(_0x3abf07){return _0x3abf07;});}return null;};}function removeEntity(_0x25880f,_0x11f88e){return function(_0xc8cae){if(_0xc8cae){return _0xc8cae[_0xb791('0x26')]()[_0xb791('0x25')](function(){_0x25880f[_0xb791('0x19')](0xcc)[_0xb791('0x18')]();});}};}function handleEntityNotFound(_0x48f3a2,_0x25e154){return function(_0x475bcd){if(!_0x475bcd){_0x48f3a2[_0xb791('0x17')](0x194);}return _0x475bcd;};}function handleError(_0x479d93,_0x2dbc9c){_0x2dbc9c=_0x2dbc9c||0x1f4;return function(_0x500960){logger[_0xb791('0x27')](_0x500960[_0xb791('0x28')]);if(_0x500960[_0xb791('0x29')]){delete _0x500960['name'];}_0x479d93[_0xb791('0x19')](_0x2dbc9c)[_0xb791('0x2a')](_0x500960);};}exports[_0xb791('0x2b')]=function(_0x3d7c6e,_0x5ce9d8){var _0x569ade={},_0x517080={},_0x51b123={'count':0x0,'rows':[]};var _0xd8e441=_[_0xb791('0x2c')](db[_0xb791('0x2d')][_0xb791('0x2e')],function(_0x2d9e65){return{'name':_0x2d9e65['fieldName'],'type':_0x2d9e65['type'][_0xb791('0x2f')]};});_0x517080['model']=_[_0xb791('0x2c')](_0xd8e441,_0xb791('0x29'));_0x517080[_0xb791('0x30')]=_[_0xb791('0x31')](_0x3d7c6e[_0xb791('0x30')]);_0x517080[_0xb791('0x32')]=_[_0xb791('0x33')](_0x517080[_0xb791('0x34')],_0x517080[_0xb791('0x30')]);_0x569ade[_0xb791('0x35')]=_['intersection'](_0x517080[_0xb791('0x34')],qs[_0xb791('0x36')](_0x3d7c6e[_0xb791('0x30')][_0xb791('0x36')]));_0x569ade['attributes']=_0x569ade['attributes']['length']?_0x569ade[_0xb791('0x35')]:_0x517080[_0xb791('0x34')];if(!_0x3d7c6e[_0xb791('0x30')][_0xb791('0x37')](_0xb791('0x38'))){_0x569ade[_0xb791('0x1d')]=qs[_0xb791('0x1d')](_0x3d7c6e[_0xb791('0x30')][_0xb791('0x1d')]);_0x569ade[_0xb791('0x1b')]=qs[_0xb791('0x1b')](_0x3d7c6e[_0xb791('0x30')][_0xb791('0x1b')]);}_0x569ade[_0xb791('0x39')]=qs[_0xb791('0x3a')](_0x3d7c6e[_0xb791('0x30')][_0xb791('0x3a')]);_0x569ade['where']=qs['filters'](_[_0xb791('0x3b')](_0x3d7c6e[_0xb791('0x30')],_0x517080[_0xb791('0x32')]),_0xd8e441);if(_0x3d7c6e[_0xb791('0x30')][_0xb791('0x3c')]){_0x569ade[_0xb791('0x3d')]=_[_0xb791('0x3e')](_0x569ade['where'],{'$or':_[_0xb791('0x2c')](_0xd8e441,function(_0x2c07af){if(_0x2c07af[_0xb791('0x3f')]!=='VIRTUAL'){var _0x5a6702={};_0x5a6702[_0x2c07af[_0xb791('0x29')]]={'$like':'%'+_0x3d7c6e[_0xb791('0x30')]['filter']+'%'};return _0x5a6702;}})});}_0x569ade=_[_0xb791('0x3e')]({},_0x569ade,_0x3d7c6e[_0xb791('0x40')]);var _0x4e2835={'where':_0x569ade[_0xb791('0x3d')]};return db[_0xb791('0x2d')]['count'](_0x4e2835)[_0xb791('0x25')](function(_0x109b3){_0x51b123[_0xb791('0x1e')]=_0x109b3;if(_0x3d7c6e[_0xb791('0x30')][_0xb791('0x41')]){_0x569ade[_0xb791('0x42')]=[{'all':!![]}];}return db[_0xb791('0x2d')][_0xb791('0x43')](_0x569ade);})[_0xb791('0x25')](function(_0x29c7ea){_0x51b123[_0xb791('0x44')]=_0x29c7ea;return _0x51b123;})[_0xb791('0x25')](respondWithFilteredResult(_0x5ce9d8,_0x569ade))[_0xb791('0x45')](handleError(_0x5ce9d8,null));};exports[_0xb791('0x46')]=function(_0x177888,_0x77d05c){var _0x13a6ce={'raw':!![],'where':{'id':_0x177888[_0xb791('0x47')]['id']}},_0x1ba4bf={};_0x1ba4bf[_0xb791('0x34')]=_['keys'](db['SquareRecording'][_0xb791('0x2e')]);_0x1ba4bf[_0xb791('0x30')]=_[_0xb791('0x31')](_0x177888[_0xb791('0x30')]);_0x1ba4bf['filters']=_[_0xb791('0x33')](_0x1ba4bf[_0xb791('0x34')],_0x1ba4bf['query']);_0x13a6ce[_0xb791('0x35')]=_[_0xb791('0x33')](_0x1ba4bf[_0xb791('0x34')],qs[_0xb791('0x36')](_0x177888[_0xb791('0x30')][_0xb791('0x36')]));_0x13a6ce['attributes']=_0x13a6ce[_0xb791('0x35')][_0xb791('0x48')]?_0x13a6ce[_0xb791('0x35')]:_0x1ba4bf[_0xb791('0x34')];if(_0x177888[_0xb791('0x30')]['includeAll']){_0x13a6ce[_0xb791('0x42')]=[{'all':!![]}];}_0x13a6ce=_[_0xb791('0x3e')]({},_0x13a6ce,_0x177888[_0xb791('0x40')]);return db[_0xb791('0x2d')]['find'](_0x13a6ce)['then'](handleEntityNotFound(_0x77d05c,null))[_0xb791('0x25')](respondWithResult(_0x77d05c,null))[_0xb791('0x45')](handleError(_0x77d05c,null));};exports[_0xb791('0x49')]=function(_0x14aac2,_0x1b115){return db['SquareRecording'][_0xb791('0x49')](_0x14aac2['body'],{})[_0xb791('0x25')](respondWithResult(_0x1b115,0xc9))[_0xb791('0x45')](handleError(_0x1b115,null));};exports[_0xb791('0x24')]=function(_0x2eacb5,_0x274309){if(_0x2eacb5[_0xb791('0x4a')]['id']){delete _0x2eacb5['body']['id'];}return db[_0xb791('0x2d')]['find']({'where':{'id':_0x2eacb5[_0xb791('0x47')]['id']}})[_0xb791('0x25')](handleEntityNotFound(_0x274309,null))[_0xb791('0x25')](saveUpdates(_0x2eacb5[_0xb791('0x4a')],null))[_0xb791('0x25')](respondWithResult(_0x274309,null))[_0xb791('0x45')](handleError(_0x274309,null));};exports[_0xb791('0x4b')]=function(_0x43478f,_0x240368,_0x3c304f){var _0x37e0c4=require('../../components/encryptor');var _0x3fb483=![];var _0x2be509={};if(_0x43478f[_0xb791('0x30')]['type']&&_0x43478f[_0xb791('0x30')]['type']===_0xb791('0x4c')){_0x2be509[_0xb791('0x4c')]=_0x43478f[_0xb791('0x47')]['id'];}else{_0x2be509['id']=_0x43478f[_0xb791('0x47')]['id'];}return db[_0xb791('0x2d')][_0xb791('0x4d')]({'where':_0x2be509,'attributes':['id','savePath',_0xb791('0x4e')],'raw':!![]})['then'](handleEntityNotFound(_0x240368,null))[_0xb791('0x25')](function(_0x2e982c){if(_0x2e982c){var _0x2673b9=_0x2e982c[_0xb791('0x4f')];var _0x3d4cde=util[_0xb791('0x50')]('%s.cypher',_0x2673b9);if(fs[_0xb791('0x51')](_0x3d4cde)){_0x3fb483=!![];return _0x37e0c4[_0xb791('0x52')](_0x3d4cde,_0x2673b9,config[_0xb791('0x53')][_0xb791('0x54')])[_0xb791('0x25')](function(){return _0x2e982c;});}return _0x2e982c;}})[_0xb791('0x25')](function(_0x3106c4){if(_0x3106c4){var _0x2c0e04=_0x3106c4[_0xb791('0x4f')];if(!fs[_0xb791('0x51')](_0x2c0e04)){throw new db[(_0xb791('0x55'))][(_0xb791('0x56'))](_0xb791('0x57'));}if(_0x3106c4[_0xb791('0x4e')]){return _0x240368[_0xb791('0x4b')](_0x2c0e04,_0x3106c4[_0xb791('0x4e')]+path[_0xb791('0x58')](_0x2c0e04),function(){if(_0x3fb483){fs['unlink'](_0x2c0e04);}});}else{return _0x240368[_0xb791('0x4b')](_0x2c0e04,function(_0x2ac9e0){if(_0x3fb483){fs['unlink'](_0x2c0e04);}});}}})[_0xb791('0x45')](function(_0x18652a){if(_0x18652a[_0xb791('0x59')]==='SquareRecording\x20not\x20found'){_0x240368[_0xb791('0x19')](0x194)[_0xb791('0x2a')](_0xb791('0x5a'));}else{return handleError(_0x240368,null);}});};exports[_0xb791('0x26')]=function(_0x541cc4,_0x34ac8e){return db[_0xb791('0x2d')][_0xb791('0x4d')]({'where':{'id':_0x541cc4['params']['id']}})['then'](function(_0x47fbd6){if(_['isNil'](_0x47fbd6)){throw new ReferenceError(_0xb791('0x5b'));}return _0x47fbd6;})[_0xb791('0x25')](function(_0x3e2ef8){var _0x2c9245=_0x3e2ef8[_0xb791('0x4f')];logger[_0xb791('0x5c')]('cancellazione\x20fisica\x20documento\x20%s',_0x2c9245);if(!_[_0xb791('0x5d')](_0x3e2ef8[_0xb791('0x4f')])&&fs[_0xb791('0x51')](_0x2c9245)){logger[_0xb791('0x5c')](_0xb791('0x5e')+_0x2c9245+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xb791('0x5f')](_0x2c9245);}_0x2c9245=_0x2c9245+_0xb791('0x60');if(!_[_0xb791('0x5d')](_0x3e2ef8[_0xb791('0x4f')])&&fs[_0xb791('0x51')](_0x2c9245)){logger[_0xb791('0x5c')](_0xb791('0x5e')+_0x2c9245+_0xb791('0x61'));fs['unlinkSync'](_0x2c9245);}return _0x3e2ef8;})['then'](function(_0x214e31){if(!_0x214e31)throw new InternalError();return _0x214e31[_0xb791('0x26')]();})[_0xb791('0x25')](function(){_0x34ac8e[_0xb791('0x19')](0xcc)[_0xb791('0x18')]();})['catch'](handleError(_0x34ac8e,null));};
\ No newline at end of file
+var _0x01da=['limit','count','set','apply','reject','save','update','then','destroy','error','stack','name','index','map','rawAttributes','type','keys','query','filters','intersection','model','fields','attributes','order','sort','where','pick','filter','merge','VIRTUAL','options','SquareRecording','includeAll','include','findAll','rows','catch','show','params','find','create','body','download','uniqueid','savePath','filename','format','%s.cypher','decryptFile','secrets','existsSync','Sequelize','ValidationError','SquareRecording\x20not\x20found','unlink','message','send','Not\x20found','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','File:\x20\x22','rimraf','zip-dir','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','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','offset','undefined'];(function(_0x6373bd,_0x1b4d33){var _0x195f70=function(_0x328590){while(--_0x328590){_0x6373bd['push'](_0x6373bd['shift']());}};_0x195f70(++_0x1b4d33);}(_0x01da,0x1be));var _0xa01d=function(_0x3c4e1a,_0x1e1a26){_0x3c4e1a=_0x3c4e1a-0x0;var _0x5c3d95=_0x01da[_0x3c4e1a];return _0x5c3d95;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa01d('0x0'));var zipdir=require(_0xa01d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa01d('0x2'));var moment=require(_0xa01d('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xa01d('0x4'));var util=require(_0xa01d('0x5'));var path=require(_0xa01d('0x6'));var sox=require('sox');var csv=require(_0xa01d('0x7'));var ejs=require(_0xa01d('0x8'));var fs=require('fs');var fs_extra=require(_0xa01d('0x9'));var _=require(_0xa01d('0xa'));var squel=require('squel');var crypto=require(_0xa01d('0xb'));var jsforce=require(_0xa01d('0xc'));var deskjs=require(_0xa01d('0xd'));var toCsv=require(_0xa01d('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xa01d('0xe'));var authService=require(_0xa01d('0xf'));var qs=require(_0xa01d('0x10'));var as=require(_0xa01d('0x11'));var hardwareService=require(_0xa01d('0x12'));var logger=require(_0xa01d('0x13'))('api');var utils=require(_0xa01d('0x14'));var config=require(_0xa01d('0x15'));var licenseUtil=require(_0xa01d('0x16'));var db=require(_0xa01d('0x17'))['db'];function respondWithStatusCode(_0x485574,_0x63fe5b){_0x63fe5b=_0x63fe5b||0xcc;return function(_0x5c7827){if(_0x5c7827){return _0x485574[_0xa01d('0x18')](_0x63fe5b);}return _0x485574[_0xa01d('0x19')](_0x63fe5b)[_0xa01d('0x1a')]();};}function respondWithResult(_0x125920,_0x4d9ce5){_0x4d9ce5=_0x4d9ce5||0xc8;return function(_0x555d0a){if(_0x555d0a){return _0x125920[_0xa01d('0x19')](_0x4d9ce5)['json'](_0x555d0a);}};}function respondWithFilteredResult(_0x228030,_0x4a2191){return function(_0x24a016){if(_0x24a016){var _0x2b9e9a=typeof _0x4a2191[_0xa01d('0x1b')]===_0xa01d('0x1c')&&typeof _0x4a2191[_0xa01d('0x1d')]===_0xa01d('0x1c');var _0x5c5caf=_0x24a016[_0xa01d('0x1e')];var _0x41638e=_0x2b9e9a?0x0:_0x4a2191[_0xa01d('0x1b')];var _0x2083d=_0x2b9e9a?_0x24a016[_0xa01d('0x1e')]:_0x4a2191[_0xa01d('0x1b')]+_0x4a2191[_0xa01d('0x1d')];var _0x2aa53d;if(_0x2083d>=_0x5c5caf){_0x2083d=_0x5c5caf;_0x2aa53d=0xc8;}else{_0x2aa53d=0xce;}_0x228030['status'](_0x2aa53d);return _0x228030[_0xa01d('0x1f')]('Content-Range',_0x41638e+'-'+_0x2083d+'/'+_0x5c5caf)['json'](_0x24a016);}return null;};}function patchUpdates(_0x120a98){return function(_0x4c19cd){try{jsonpatch[_0xa01d('0x20')](_0x4c19cd,_0x120a98,!![]);}catch(_0x490df9){return BPromise[_0xa01d('0x21')](_0x490df9);}return _0x4c19cd[_0xa01d('0x22')]();};}function saveUpdates(_0x56167d,_0x47cd10){return function(_0x5acdbc){if(_0x5acdbc){return _0x5acdbc[_0xa01d('0x23')](_0x56167d)[_0xa01d('0x24')](function(_0x4c9d8a){return _0x4c9d8a;});}return null;};}function removeEntity(_0x3e84d6,_0x2bbd86){return function(_0xe6838f){if(_0xe6838f){return _0xe6838f[_0xa01d('0x25')]()['then'](function(){_0x3e84d6['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3b0bdd,_0x3ba1b7){return function(_0x31298c){if(!_0x31298c){_0x3b0bdd[_0xa01d('0x18')](0x194);}return _0x31298c;};}function handleError(_0x342008,_0x2f5d23){_0x2f5d23=_0x2f5d23||0x1f4;return function(_0x5128d0){logger[_0xa01d('0x26')](_0x5128d0[_0xa01d('0x27')]);if(_0x5128d0[_0xa01d('0x28')]){delete _0x5128d0['name'];}_0x342008[_0xa01d('0x19')](_0x2f5d23)['send'](_0x5128d0);};}exports[_0xa01d('0x29')]=function(_0x2804f8,_0x24707d){var _0xfc0ab1={},_0x4c03ff={},_0x17402d={'count':0x0,'rows':[]};var _0x518d1b=_[_0xa01d('0x2a')](db['SquareRecording'][_0xa01d('0x2b')],function(_0x1435b6){return{'name':_0x1435b6['fieldName'],'type':_0x1435b6[_0xa01d('0x2c')]['key']};});_0x4c03ff['model']=_[_0xa01d('0x2a')](_0x518d1b,_0xa01d('0x28'));_0x4c03ff['query']=_[_0xa01d('0x2d')](_0x2804f8[_0xa01d('0x2e')]);_0x4c03ff[_0xa01d('0x2f')]=_[_0xa01d('0x30')](_0x4c03ff[_0xa01d('0x31')],_0x4c03ff[_0xa01d('0x2e')]);_0xfc0ab1['attributes']=_['intersection'](_0x4c03ff['model'],qs[_0xa01d('0x32')](_0x2804f8[_0xa01d('0x2e')]['fields']));_0xfc0ab1[_0xa01d('0x33')]=_0xfc0ab1[_0xa01d('0x33')]['length']?_0xfc0ab1[_0xa01d('0x33')]:_0x4c03ff['model'];if(!_0x2804f8['query']['hasOwnProperty']('nolimit')){_0xfc0ab1[_0xa01d('0x1d')]=qs['limit'](_0x2804f8[_0xa01d('0x2e')][_0xa01d('0x1d')]);_0xfc0ab1[_0xa01d('0x1b')]=qs[_0xa01d('0x1b')](_0x2804f8[_0xa01d('0x2e')][_0xa01d('0x1b')]);}_0xfc0ab1[_0xa01d('0x34')]=qs['sort'](_0x2804f8['query'][_0xa01d('0x35')]);_0xfc0ab1[_0xa01d('0x36')]=qs['filters'](_[_0xa01d('0x37')](_0x2804f8['query'],_0x4c03ff[_0xa01d('0x2f')]),_0x518d1b);if(_0x2804f8[_0xa01d('0x2e')][_0xa01d('0x38')]){_0xfc0ab1[_0xa01d('0x36')]=_[_0xa01d('0x39')](_0xfc0ab1[_0xa01d('0x36')],{'$or':_['map'](_0x518d1b,function(_0x201822){if(_0x201822['type']!==_0xa01d('0x3a')){var _0x2154fc={};_0x2154fc[_0x201822['name']]={'$like':'%'+_0x2804f8[_0xa01d('0x2e')][_0xa01d('0x38')]+'%'};return _0x2154fc;}})});}_0xfc0ab1=_[_0xa01d('0x39')]({},_0xfc0ab1,_0x2804f8[_0xa01d('0x3b')]);var _0x411b3d={'where':_0xfc0ab1['where']};return db[_0xa01d('0x3c')]['count'](_0x411b3d)[_0xa01d('0x24')](function(_0x1e1271){_0x17402d[_0xa01d('0x1e')]=_0x1e1271;if(_0x2804f8[_0xa01d('0x2e')][_0xa01d('0x3d')]){_0xfc0ab1[_0xa01d('0x3e')]=[{'all':!![]}];}return db[_0xa01d('0x3c')][_0xa01d('0x3f')](_0xfc0ab1);})[_0xa01d('0x24')](function(_0x2b75b6){_0x17402d[_0xa01d('0x40')]=_0x2b75b6;return _0x17402d;})[_0xa01d('0x24')](respondWithFilteredResult(_0x24707d,_0xfc0ab1))[_0xa01d('0x41')](handleError(_0x24707d,null));};exports[_0xa01d('0x42')]=function(_0x3fb7e9,_0xad9f2b){var _0x5797c1={'raw':!![],'where':{'id':_0x3fb7e9[_0xa01d('0x43')]['id']}},_0x577d69={};_0x577d69['model']=_[_0xa01d('0x2d')](db['SquareRecording'][_0xa01d('0x2b')]);_0x577d69[_0xa01d('0x2e')]=_[_0xa01d('0x2d')](_0x3fb7e9[_0xa01d('0x2e')]);_0x577d69[_0xa01d('0x2f')]=_[_0xa01d('0x30')](_0x577d69[_0xa01d('0x31')],_0x577d69[_0xa01d('0x2e')]);_0x5797c1['attributes']=_['intersection'](_0x577d69[_0xa01d('0x31')],qs['fields'](_0x3fb7e9[_0xa01d('0x2e')][_0xa01d('0x32')]));_0x5797c1[_0xa01d('0x33')]=_0x5797c1[_0xa01d('0x33')]['length']?_0x5797c1[_0xa01d('0x33')]:_0x577d69[_0xa01d('0x31')];if(_0x3fb7e9[_0xa01d('0x2e')][_0xa01d('0x3d')]){_0x5797c1[_0xa01d('0x3e')]=[{'all':!![]}];}_0x5797c1=_[_0xa01d('0x39')]({},_0x5797c1,_0x3fb7e9[_0xa01d('0x3b')]);return db[_0xa01d('0x3c')][_0xa01d('0x44')](_0x5797c1)[_0xa01d('0x24')](handleEntityNotFound(_0xad9f2b,null))['then'](respondWithResult(_0xad9f2b,null))[_0xa01d('0x41')](handleError(_0xad9f2b,null));};exports[_0xa01d('0x45')]=function(_0x4de0bd,_0x1878f7){return db[_0xa01d('0x3c')][_0xa01d('0x45')](_0x4de0bd['body'],{})[_0xa01d('0x24')](respondWithResult(_0x1878f7,0xc9))[_0xa01d('0x41')](handleError(_0x1878f7,null));};exports[_0xa01d('0x23')]=function(_0x21b87f,_0x350600){if(_0x21b87f['body']['id']){delete _0x21b87f[_0xa01d('0x46')]['id'];}return db[_0xa01d('0x3c')][_0xa01d('0x44')]({'where':{'id':_0x21b87f[_0xa01d('0x43')]['id']}})[_0xa01d('0x24')](handleEntityNotFound(_0x350600,null))['then'](saveUpdates(_0x21b87f[_0xa01d('0x46')],null))[_0xa01d('0x24')](respondWithResult(_0x350600,null))['catch'](handleError(_0x350600,null));};exports[_0xa01d('0x47')]=function(_0x39594a,_0x473eef,_0x3d831){var _0x1aea7b=require('../../components/encryptor');var _0x58764f=![];var _0x9aa99e={};if(_0x39594a[_0xa01d('0x2e')][_0xa01d('0x2c')]&&_0x39594a[_0xa01d('0x2e')]['type']===_0xa01d('0x48')){_0x9aa99e[_0xa01d('0x48')]=_0x39594a[_0xa01d('0x43')]['id'];}else{_0x9aa99e['id']=_0x39594a[_0xa01d('0x43')]['id'];}return db['SquareRecording'][_0xa01d('0x44')]({'where':_0x9aa99e,'attributes':['id',_0xa01d('0x49'),_0xa01d('0x4a')],'raw':!![]})[_0xa01d('0x24')](handleEntityNotFound(_0x473eef,null))[_0xa01d('0x24')](function(_0x156650){if(_0x156650){var _0x1a143b=_0x156650[_0xa01d('0x49')];var _0x359193=util[_0xa01d('0x4b')](_0xa01d('0x4c'),_0x1a143b);if(fs['existsSync'](_0x359193)){_0x58764f=!![];return _0x1aea7b[_0xa01d('0x4d')](_0x359193,_0x1a143b,config[_0xa01d('0x4e')]['recording'])['then'](function(){return _0x156650;});}return _0x156650;}})[_0xa01d('0x24')](function(_0x4c1bf){if(_0x4c1bf){var _0x3a0941=_0x4c1bf[_0xa01d('0x49')];if(!fs[_0xa01d('0x4f')](_0x3a0941)){throw new db[(_0xa01d('0x50'))][(_0xa01d('0x51'))](_0xa01d('0x52'));}if(_0x4c1bf[_0xa01d('0x4a')]){return _0x473eef[_0xa01d('0x47')](_0x3a0941,_0x4c1bf[_0xa01d('0x4a')]+path['extname'](_0x3a0941),function(){if(_0x58764f){fs['unlink'](_0x3a0941);}});}else{return _0x473eef[_0xa01d('0x47')](_0x3a0941,function(_0x2fe251){if(_0x58764f){fs[_0xa01d('0x53')](_0x3a0941);}});}}})[_0xa01d('0x41')](function(_0x288d3d){if(_0x288d3d[_0xa01d('0x54')]===_0xa01d('0x52')){_0x473eef[_0xa01d('0x19')](0x194)[_0xa01d('0x55')](_0xa01d('0x56'));}else{return handleError(_0x473eef,null);}});};exports['destroy']=function(_0x26e555,_0x41aa02){return db[_0xa01d('0x3c')][_0xa01d('0x44')]({'where':{'id':_0x26e555[_0xa01d('0x43')]['id']}})[_0xa01d('0x24')](function(_0x4e1f1b){if(_[_0xa01d('0x57')](_0x4e1f1b)){throw new ReferenceError(_0xa01d('0x58'));}return _0x4e1f1b;})[_0xa01d('0x24')](function(_0x18f5f0){var _0x337d95=_0x18f5f0[_0xa01d('0x49')];logger[_0xa01d('0x59')](_0xa01d('0x5a'),_0x337d95);if(!_[_0xa01d('0x57')](_0x18f5f0['savePath'])&&fs[_0xa01d('0x4f')](_0x337d95)){logger[_0xa01d('0x59')]('File:\x20\x22'+_0x337d95+_0xa01d('0x5b'));fs[_0xa01d('0x5c')](_0x337d95);}_0x337d95=_0x337d95+_0xa01d('0x5d');if(!_['isNil'](_0x18f5f0['savePath'])&&fs['existsSync'](_0x337d95)){logger[_0xa01d('0x59')](_0xa01d('0x5e')+_0x337d95+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xa01d('0x5c')](_0x337d95);}return _0x18f5f0;})[_0xa01d('0x24')](function(_0x2861cf){if(!_0x2861cf)throw new InternalError();return _0x2861cf[_0xa01d('0x25')]();})[_0xa01d('0x24')](function(){_0x41aa02[_0xa01d('0x19')](0xcc)[_0xa01d('0x1a')]();})[_0xa01d('0x41')](handleError(_0x41aa02,null));};
\ No newline at end of file
index 8c1dcd9..2c8ce99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf5a=['./squareRecording.attributes','exports','square_recordings','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x106e02,_0x39ceb4){var _0x4b9bf4=function(_0x584822){while(--_0x584822){_0x106e02['push'](_0x106e02['shift']());}};_0x4b9bf4(++_0x39ceb4);}(_0xaf5a,0x116));var _0xaaf5=function(_0x5db8e5,_0x35e3d5){_0x5db8e5=_0x5db8e5-0x0;var _0x4f800d=_0xaf5a[_0x5db8e5];return _0x4f800d;};'use strict';var _=require('lodash');var util=require(_0xaaf5('0x0'));var logger=require(_0xaaf5('0x1'))(_0xaaf5('0x2'));var moment=require(_0xaaf5('0x3'));var BPromise=require(_0xaaf5('0x4'));var rp=require(_0xaaf5('0x5'));var fs=require('fs');var path=require(_0xaaf5('0x6'));var rimraf=require(_0xaaf5('0x7'));var config=require('../../config/environment');var attributes=require(_0xaaf5('0x8'));module[_0xaaf5('0x9')]=function(_0x38d568,_0x8833b8){return _0x38d568['define']('SquareRecording',attributes,{'tableName':_0xaaf5('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb296=['request-promise','rimraf','./squareRecording.attributes','exports','define','SquareRecording','square_recordings','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x3eb152,_0x554c71){var _0x3294c8=function(_0x8feeb3){while(--_0x8feeb3){_0x3eb152['push'](_0x3eb152['shift']());}};_0x3294c8(++_0x554c71);}(_0xb296,0xa3));var _0x6b29=function(_0x4d8fd7,_0x22e725){_0x4d8fd7=_0x4d8fd7-0x0;var _0x1b4eeb=_0xb296[_0x4d8fd7];return _0x1b4eeb;};'use strict';var _=require(_0x6b29('0x0'));var util=require(_0x6b29('0x1'));var logger=require(_0x6b29('0x2'))(_0x6b29('0x3'));var moment=require(_0x6b29('0x4'));var BPromise=require(_0x6b29('0x5'));var rp=require(_0x6b29('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6b29('0x7'));var config=require('../../config/environment');var attributes=require(_0x6b29('0x8'));module[_0x6b29('0x9')]=function(_0x5e0aa1,_0x327329){return _0x5e0aa1[_0x6b29('0xa')](_0x6b29('0xb'),attributes,{'tableName':_0x6b29('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 331ff7b..a61af42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95a2=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error','SquareRecording,\x20%s,\x20%s','message','result','catch','CreateSquareRecording','SquareRecording','create','body','options','raw','lodash','util'];(function(_0x34de7a,_0x57d22c){var _0xd1c14=function(_0x20c909){while(--_0x20c909){_0x34de7a['push'](_0x34de7a['shift']());}};_0xd1c14(++_0x57d22c);}(_0x95a2,0x120));var _0x295a=function(_0x1f5a63,_0x511504){_0x1f5a63=_0x1f5a63-0x0;var _0x30bb7a=_0x95a2[_0x1f5a63];return _0x30bb7a;};'use strict';var _=require(_0x295a('0x0'));var util=require(_0x295a('0x1'));var moment=require('moment');var BPromise=require(_0x295a('0x2'));var rs=require(_0x295a('0x3'));var fs=require('fs');var Redis=require(_0x295a('0x4'));var db=require(_0x295a('0x5'))['db'];var utils=require(_0x295a('0x6'));var logger=require('../../config/logger')(_0x295a('0x7'));var config=require(_0x295a('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x295a('0x9')][_0x295a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x525711,_0x1c3a47,_0x3725e9){return new BPromise(function(_0x1e2bd7,_0x551ec3){return client[_0x295a('0xb')](_0x525711,_0x3725e9)[_0x295a('0xc')](function(_0x2b33b8){logger[_0x295a('0xd')]('SquareRecording,\x20%s,\x20%s',_0x1c3a47,_0x295a('0xe'));logger[_0x295a('0xf')](_0x295a('0x10'),_0x1c3a47,'request\x20sent',JSON[_0x295a('0x11')](_0x2b33b8));if(_0x2b33b8[_0x295a('0x12')]){if(_0x2b33b8[_0x295a('0x12')]['code']===0x1f4){logger[_0x295a('0x12')](_0x295a('0x13'),_0x1c3a47,_0x2b33b8[_0x295a('0x12')][_0x295a('0x14')]);return _0x551ec3(_0x2b33b8[_0x295a('0x12')][_0x295a('0x14')]);}logger[_0x295a('0x12')]('SquareRecording,\x20%s,\x20%s',_0x1c3a47,_0x2b33b8[_0x295a('0x12')][_0x295a('0x14')]);return _0x1e2bd7(_0x2b33b8[_0x295a('0x12')][_0x295a('0x14')]);}else{logger[_0x295a('0xd')](_0x295a('0x13'),_0x1c3a47,_0x295a('0xe'));_0x1e2bd7(_0x2b33b8[_0x295a('0x15')]['message']);}})[_0x295a('0x16')](function(_0x55eb95){logger[_0x295a('0x12')](_0x295a('0x13'),_0x1c3a47,_0x55eb95);_0x551ec3(_0x55eb95);});});}exports[_0x295a('0x17')]=function(_0x3b5762){var _0x22d029=this;return new Promise(function(_0x548a4e,_0x332911){return db[_0x295a('0x18')][_0x295a('0x19')](_0x3b5762[_0x295a('0x1a')],{'raw':_0x3b5762[_0x295a('0x1b')]?_0x3b5762[_0x295a('0x1b')][_0x295a('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x4a1e0d){logger[_0x295a('0xd')](_0x295a('0x17'),_0x3b5762);logger[_0x295a('0xf')]('CreateSquareRecording',_0x3b5762,JSON[_0x295a('0x11')](_0x4a1e0d));_0x548a4e(_0x4a1e0d);})[_0x295a('0x16')](function(_0x4eef6d){logger[_0x295a('0x12')](_0x295a('0x17'),_0x4eef6d[_0x295a('0x14')],_0x3b5762);_0x332911(_0x22d029[_0x295a('0x12')](0x1f4,_0x4eef6d[_0x295a('0x14')]));});});};
\ No newline at end of file
+var _0x9b97=['create','body','options','CreateSquareRecording','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','SquareRecording,\x20%s,\x20%s','request\x20sent','debug','SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x433d8f,_0x3a57e5){var _0x5a5d56=function(_0x17a6d6){while(--_0x17a6d6){_0x433d8f['push'](_0x433d8f['shift']());}};_0x5a5d56(++_0x3a57e5);}(_0x9b97,0x148));var _0x79b9=function(_0x598963,_0x5905e4){_0x598963=_0x598963-0x0;var _0x2305b0=_0x9b97[_0x598963];return _0x2305b0;};'use strict';var _=require(_0x79b9('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x79b9('0x1'));var fs=require('fs');var Redis=require(_0x79b9('0x2'));var db=require(_0x79b9('0x3'))['db'];var utils=require(_0x79b9('0x4'));var logger=require(_0x79b9('0x5'))(_0x79b9('0x6'));var config=require(_0x79b9('0x7'));var jayson=require(_0x79b9('0x8'));var client=jayson[_0x79b9('0x9')][_0x79b9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3a25af,_0xf56d61,_0x55f840){return new BPromise(function(_0x1ae1c1,_0x44b0ca){return client['request'](_0x3a25af,_0x55f840)[_0x79b9('0xb')](function(_0x3b8949){logger[_0x79b9('0xc')](_0x79b9('0xd'),_0xf56d61,_0x79b9('0xe'));logger[_0x79b9('0xf')](_0x79b9('0x10'),_0xf56d61,_0x79b9('0xe'),JSON[_0x79b9('0x11')](_0x3b8949));if(_0x3b8949[_0x79b9('0x12')]){if(_0x3b8949[_0x79b9('0x12')][_0x79b9('0x13')]===0x1f4){logger[_0x79b9('0x12')](_0x79b9('0xd'),_0xf56d61,_0x3b8949[_0x79b9('0x12')][_0x79b9('0x14')]);return _0x44b0ca(_0x3b8949[_0x79b9('0x12')][_0x79b9('0x14')]);}logger[_0x79b9('0x12')](_0x79b9('0xd'),_0xf56d61,_0x3b8949[_0x79b9('0x12')]['message']);return _0x1ae1c1(_0x3b8949['error']['message']);}else{logger['info'](_0x79b9('0xd'),_0xf56d61,'request\x20sent');_0x1ae1c1(_0x3b8949[_0x79b9('0x15')][_0x79b9('0x14')]);}})[_0x79b9('0x16')](function(_0x1b3200){logger['error'](_0x79b9('0xd'),_0xf56d61,_0x1b3200);_0x44b0ca(_0x1b3200);});});}exports['CreateSquareRecording']=function(_0x3701b2){var _0x13c058=this;return new Promise(function(_0x360c7c,_0x198542){return db['SquareRecording'][_0x79b9('0x17')](_0x3701b2[_0x79b9('0x18')],{'raw':_0x3701b2['options']?_0x3701b2[_0x79b9('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x79b9('0xb')](function(_0x28d815){logger[_0x79b9('0xc')]('CreateSquareRecording',_0x3701b2);logger['debug'](_0x79b9('0x1a'),_0x3701b2,JSON[_0x79b9('0x11')](_0x28d815));_0x360c7c(_0x28d815);})[_0x79b9('0x16')](function(_0xac75b4){logger[_0x79b9('0x12')]('CreateSquareRecording',_0xac75b4[_0x79b9('0x14')],_0x3701b2);_0x198542(_0x13c058[_0x79b9('0x12')](0x1f4,_0xac75b4[_0x79b9('0x14')]));});});};
\ No newline at end of file
index 2434f9d..1f1a801 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['/describe','describe','/:id','show','post','create','put','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index'];(function(_0x31b55c,_0x2bae63){var _0x31ef26=function(_0x65ac0c){while(--_0x65ac0c){_0x31b55c['push'](_0x31b55c['shift']());}};_0x31ef26(++_0x2bae63);}(_0xe706,0xa3));var _0x6e70=function(_0x407041,_0x2571be){_0x407041=_0x407041-0x0;var _0x107d8c=_0xe706[_0x407041];return _0x107d8c;};'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'));var controller=require(_0x6e70('0x9'));router[_0x6e70('0xa')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0xc')]);router[_0x6e70('0xa')](_0x6e70('0xd'),auth[_0x6e70('0xb')](),controller[_0x6e70('0xe')]);router[_0x6e70('0xa')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x11')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0x12')]);router[_0x6e70('0x13')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller['update']);router['delete'](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x14')]);module[_0x6e70('0x15')]=router;
\ No newline at end of file
+var _0xb10b=['../../components/interaction/service','../../config/environment','./squareReport.controller','get','index','isAuthenticated','describe','/:id','show','post','update','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x10dd56,_0x3c50b1){var _0x4ee4b7=function(_0xd6ae15){while(--_0xd6ae15){_0x10dd56['push'](_0x10dd56['shift']());}};_0x4ee4b7(++_0x3c50b1);}(_0xb10b,0x12a));var _0xbb10=function(_0x446e61,_0x27e680){_0x446e61=_0x446e61-0x0;var _0x4160a8=_0xb10b[_0x446e61];return _0x4160a8;};'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 fb9e188..d8dc3b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2b6=['exports','STRING','DATE','BOOLEAN','sequelize'];(function(_0x83a327,_0x53f000){var _0x54ca98=function(_0x3a43ed){while(--_0x3a43ed){_0x83a327['push'](_0x83a327['shift']());}};_0x54ca98(++_0x53f000);}(_0xb2b6,0x1bc));var _0x6b2b=function(_0x597064,_0x1e3502){_0x597064=_0x597064-0x0;var _0x9e77ce=_0xb2b6[_0x597064];return _0x9e77ce;};'use strict';var Sequelize=require(_0x6b2b('0x0'));module[_0x6b2b('0x1')]={'network':{'type':Sequelize[_0x6b2b('0x2')]},'network_script':{'type':Sequelize[_0x6b2b('0x2')]},'request':{'type':Sequelize[_0x6b2b('0x2')]},'channel':{'type':Sequelize[_0x6b2b('0x2')]},'language':{'type':Sequelize[_0x6b2b('0x2')]},'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'version':{'type':Sequelize[_0x6b2b('0x2')]},'callerid':{'type':Sequelize[_0x6b2b('0x2')]},'calleridname':{'type':Sequelize[_0x6b2b('0x2')]},'callingpres':{'type':Sequelize[_0x6b2b('0x2')]},'callingani2':{'type':Sequelize[_0x6b2b('0x2')]},'callington':{'type':Sequelize[_0x6b2b('0x2')]},'callingtns':{'type':Sequelize[_0x6b2b('0x2')]},'dnid':{'type':Sequelize[_0x6b2b('0x2')]},'rdnis':{'type':Sequelize[_0x6b2b('0x2')]},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x6b2b('0x2')]},'priority':{'type':Sequelize[_0x6b2b('0x2')]},'enhanced':{'type':Sequelize[_0x6b2b('0x2')]},'accountcode':{'type':Sequelize[_0x6b2b('0x2')]},'threadid':{'type':Sequelize[_0x6b2b('0x2')]},'project_name':{'type':Sequelize[_0x6b2b('0x2')]},'joinAt':{'type':Sequelize[_0x6b2b('0x3')]},'leaveAt':{'type':Sequelize[_0x6b2b('0x3')]},'bot':{'type':Sequelize[_0x6b2b('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0xbf9c=['STRING','DATE','exports'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0xbf9c,0xe9));var _0xcbf9=function(_0x420d4f,_0x3326e6){_0x420d4f=_0x420d4f-0x0;var _0x368f96=_0xbf9c[_0x420d4f];return _0x368f96;};'use strict';var Sequelize=require('sequelize');module[_0xcbf9('0x0')]={'network':{'type':Sequelize[_0xcbf9('0x1')]},'network_script':{'type':Sequelize['STRING']},'request':{'type':Sequelize[_0xcbf9('0x1')]},'channel':{'type':Sequelize[_0xcbf9('0x1')]},'language':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'version':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xcbf9('0x1')]},'calleridname':{'type':Sequelize[_0xcbf9('0x1')]},'callingpres':{'type':Sequelize[_0xcbf9('0x1')]},'callingani2':{'type':Sequelize[_0xcbf9('0x1')]},'callington':{'type':Sequelize['STRING']},'callingtns':{'type':Sequelize[_0xcbf9('0x1')]},'dnid':{'type':Sequelize['STRING']},'rdnis':{'type':Sequelize[_0xcbf9('0x1')]},'context':{'type':Sequelize[_0xcbf9('0x1')]},'extension':{'type':Sequelize[_0xcbf9('0x1')]},'priority':{'type':Sequelize[_0xcbf9('0x1')]},'enhanced':{'type':Sequelize[_0xcbf9('0x1')]},'accountcode':{'type':Sequelize[_0xcbf9('0x1')]},'threadid':{'type':Sequelize[_0xcbf9('0x1')]},'project_name':{'type':Sequelize[_0xcbf9('0x1')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xcbf9('0x2')]},'bot':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index c90b9c4..b27f66c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc10f=['rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','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','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','end','sendStatus','error','name','send','index','SquareReport','fieldName','key','query','keys','filters','model','attributes','intersection','length','hasOwnProperty','order','sort','where','pick','filter','merge','map','type','VIRTUAL','options','include','catch','show','params','rawAttributes','fields','find','create','body','destroy','describe'];(function(_0x2fc5d4,_0x514199){var _0x3b273c=function(_0x46665a){while(--_0x46665a){_0x2fc5d4['push'](_0x2fc5d4['shift']());}};_0x3b273c(++_0x514199);}(_0xc10f,0xe4));var _0xfc10=function(_0x3b3786,_0x16d4df){_0x3b3786=_0x3b3786-0x0;var _0x1ba80e=_0xc10f[_0x3b3786];return _0x1ba80e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfc10('0x0'));var zipdir=require(_0xfc10('0x1'));var jsonpatch=require(_0xfc10('0x2'));var rp=require(_0xfc10('0x3'));var moment=require('moment');var BPromise=require(_0xfc10('0x4'));var Mustache=require(_0xfc10('0x5'));var util=require(_0xfc10('0x6'));var path=require(_0xfc10('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xfc10('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfc10('0x9'));var squel=require(_0xfc10('0xa'));var crypto=require(_0xfc10('0xb'));var jsforce=require(_0xfc10('0xc'));var deskjs=require(_0xfc10('0xd'));var toCsv=require(_0xfc10('0xe'));var querystring=require(_0xfc10('0xf'));var Papa=require(_0xfc10('0x10'));var Redis=require(_0xfc10('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xfc10('0x12'));var as=require(_0xfc10('0x13'));var hardwareService=require(_0xfc10('0x14'));var logger=require(_0xfc10('0x15'))(_0xfc10('0x16'));var utils=require(_0xfc10('0x17'));var config=require(_0xfc10('0x18'));var licenseUtil=require(_0xfc10('0x19'));var db=require(_0xfc10('0x1a'))['db'];function respondWithStatusCode(_0x9f349e,_0x51fa5d){_0x51fa5d=_0x51fa5d||0xcc;return function(_0x21ea75){if(_0x21ea75){return _0x9f349e['sendStatus'](_0x51fa5d);}return _0x9f349e[_0xfc10('0x1b')](_0x51fa5d)['end']();};}function respondWithResult(_0x3aa150,_0x5e4545){_0x5e4545=_0x5e4545||0xc8;return function(_0x531fa8){if(_0x531fa8){return _0x3aa150[_0xfc10('0x1b')](_0x5e4545)[_0xfc10('0x1c')](_0x531fa8);}};}function respondWithFilteredResult(_0xd1160,_0x26defd){return function(_0x42ec54){if(_0x42ec54){var _0x15d975=typeof _0x26defd[_0xfc10('0x1d')]===_0xfc10('0x1e')&&typeof _0x26defd[_0xfc10('0x1f')]==='undefined';var _0x1243a9=_0x42ec54[_0xfc10('0x20')];var _0x5d3d3f=_0x15d975?0x0:_0x26defd['offset'];var _0x3e3f34=_0x15d975?_0x42ec54['count']:_0x26defd[_0xfc10('0x1d')]+_0x26defd['limit'];var _0xa20968;if(_0x3e3f34>=_0x1243a9){_0x3e3f34=_0x1243a9;_0xa20968=0xc8;}else{_0xa20968=0xce;}_0xd1160['status'](_0xa20968);return _0xd1160['set'](_0xfc10('0x21'),_0x5d3d3f+'-'+_0x3e3f34+'/'+_0x1243a9)[_0xfc10('0x1c')](_0x42ec54);}return null;};}function patchUpdates(_0x145ac7){return function(_0x175b63){try{jsonpatch[_0xfc10('0x22')](_0x175b63,_0x145ac7,!![]);}catch(_0x411328){return BPromise[_0xfc10('0x23')](_0x411328);}return _0x175b63['save']();};}function saveUpdates(_0x536b95,_0x4feef4){return function(_0x1c04d7){if(_0x1c04d7){return _0x1c04d7[_0xfc10('0x24')](_0x536b95)[_0xfc10('0x25')](function(_0x3acbad){return _0x3acbad;});}return null;};}function removeEntity(_0xfe1059,_0xf06af5){return function(_0x39e100){if(_0x39e100){return _0x39e100['destroy']()[_0xfc10('0x25')](function(){_0xfe1059[_0xfc10('0x1b')](0xcc)[_0xfc10('0x26')]();});}};}function handleEntityNotFound(_0x324fb7,_0x12983d){return function(_0xdb4582){if(!_0xdb4582){_0x324fb7[_0xfc10('0x27')](0x194);}return _0xdb4582;};}function handleError(_0x250026,_0x54ac5b){_0x54ac5b=_0x54ac5b||0x1f4;return function(_0x54cebb){logger[_0xfc10('0x28')](_0x54cebb['stack']);if(_0x54cebb[_0xfc10('0x29')]){delete _0x54cebb[_0xfc10('0x29')];}_0x250026[_0xfc10('0x1b')](_0x54ac5b)[_0xfc10('0x2a')](_0x54cebb);};}exports[_0xfc10('0x2b')]=function(_0x2610b0,_0x591bb3){var _0x205358={},_0x12dd10={},_0x5c0642={'count':0x0,'rows':[]};var _0xe24ae5=_['map'](db[_0xfc10('0x2c')]['rawAttributes'],function(_0x831778){return{'name':_0x831778[_0xfc10('0x2d')],'type':_0x831778['type'][_0xfc10('0x2e')]};});_0x12dd10['model']=_['map'](_0xe24ae5,_0xfc10('0x29'));_0x12dd10[_0xfc10('0x2f')]=_[_0xfc10('0x30')](_0x2610b0[_0xfc10('0x2f')]);_0x12dd10[_0xfc10('0x31')]=_['intersection'](_0x12dd10[_0xfc10('0x32')],_0x12dd10[_0xfc10('0x2f')]);_0x205358[_0xfc10('0x33')]=_[_0xfc10('0x34')](_0x12dd10[_0xfc10('0x32')],qs['fields'](_0x2610b0['query']['fields']));_0x205358[_0xfc10('0x33')]=_0x205358[_0xfc10('0x33')][_0xfc10('0x35')]?_0x205358['attributes']:_0x12dd10[_0xfc10('0x32')];if(!_0x2610b0['query'][_0xfc10('0x36')]('nolimit')){_0x205358['limit']=qs['limit'](_0x2610b0[_0xfc10('0x2f')][_0xfc10('0x1f')]);_0x205358[_0xfc10('0x1d')]=qs['offset'](_0x2610b0[_0xfc10('0x2f')]['offset']);}_0x205358[_0xfc10('0x37')]=qs[_0xfc10('0x38')](_0x2610b0[_0xfc10('0x2f')][_0xfc10('0x38')]);_0x205358[_0xfc10('0x39')]=qs[_0xfc10('0x31')](_[_0xfc10('0x3a')](_0x2610b0[_0xfc10('0x2f')],_0x12dd10[_0xfc10('0x31')]),_0xe24ae5);if(_0x2610b0[_0xfc10('0x2f')][_0xfc10('0x3b')]){_0x205358[_0xfc10('0x39')]=_[_0xfc10('0x3c')](_0x205358[_0xfc10('0x39')],{'$or':_[_0xfc10('0x3d')](_0xe24ae5,function(_0x126553){if(_0x126553[_0xfc10('0x3e')]!==_0xfc10('0x3f')){var _0x3d50e6={};_0x3d50e6[_0x126553[_0xfc10('0x29')]]={'$like':'%'+_0x2610b0[_0xfc10('0x2f')]['filter']+'%'};return _0x3d50e6;}})});}_0x205358=_['merge']({},_0x205358,_0x2610b0[_0xfc10('0x40')]);var _0x31fd1a={'where':_0x205358['where']};return db[_0xfc10('0x2c')][_0xfc10('0x20')](_0x31fd1a)[_0xfc10('0x25')](function(_0x94641a){_0x5c0642['count']=_0x94641a;if(_0x2610b0['query']['includeAll']){_0x205358[_0xfc10('0x41')]=[{'all':!![]}];}return db[_0xfc10('0x2c')]['findAll'](_0x205358);})[_0xfc10('0x25')](function(_0x48a846){_0x5c0642['rows']=_0x48a846;return _0x5c0642;})[_0xfc10('0x25')](respondWithFilteredResult(_0x591bb3,_0x205358))[_0xfc10('0x42')](handleError(_0x591bb3,null));};exports[_0xfc10('0x43')]=function(_0x16982d,_0x979f47){var _0x53bc3f={'raw':!![],'where':{'id':_0x16982d[_0xfc10('0x44')]['id']}},_0x2bc9b6={};_0x2bc9b6[_0xfc10('0x32')]=_[_0xfc10('0x30')](db[_0xfc10('0x2c')][_0xfc10('0x45')]);_0x2bc9b6['query']=_[_0xfc10('0x30')](_0x16982d['query']);_0x2bc9b6[_0xfc10('0x31')]=_[_0xfc10('0x34')](_0x2bc9b6[_0xfc10('0x32')],_0x2bc9b6[_0xfc10('0x2f')]);_0x53bc3f[_0xfc10('0x33')]=_['intersection'](_0x2bc9b6[_0xfc10('0x32')],qs[_0xfc10('0x46')](_0x16982d[_0xfc10('0x2f')][_0xfc10('0x46')]));_0x53bc3f['attributes']=_0x53bc3f['attributes'][_0xfc10('0x35')]?_0x53bc3f['attributes']:_0x2bc9b6[_0xfc10('0x32')];if(_0x16982d[_0xfc10('0x2f')]['includeAll']){_0x53bc3f['include']=[{'all':!![]}];}_0x53bc3f=_[_0xfc10('0x3c')]({},_0x53bc3f,_0x16982d[_0xfc10('0x40')]);return db[_0xfc10('0x2c')][_0xfc10('0x47')](_0x53bc3f)[_0xfc10('0x25')](handleEntityNotFound(_0x979f47,null))[_0xfc10('0x25')](respondWithResult(_0x979f47,null))[_0xfc10('0x42')](handleError(_0x979f47,null));};exports[_0xfc10('0x48')]=function(_0x2dc3cd,_0x3f8de9){return db[_0xfc10('0x2c')][_0xfc10('0x48')](_0x2dc3cd['body'],{})[_0xfc10('0x25')](respondWithResult(_0x3f8de9,0xc9))[_0xfc10('0x42')](handleError(_0x3f8de9,null));};exports['update']=function(_0x29ea45,_0x348f51){if(_0x29ea45[_0xfc10('0x49')]['id']){delete _0x29ea45[_0xfc10('0x49')]['id'];}return db['SquareReport']['find']({'where':{'id':_0x29ea45[_0xfc10('0x44')]['id']}})[_0xfc10('0x25')](handleEntityNotFound(_0x348f51,null))[_0xfc10('0x25')](saveUpdates(_0x29ea45[_0xfc10('0x49')],null))[_0xfc10('0x25')](respondWithResult(_0x348f51,null))[_0xfc10('0x42')](handleError(_0x348f51,null));};exports[_0xfc10('0x4a')]=function(_0x1d06c9,_0x5e64ac){return db[_0xfc10('0x2c')][_0xfc10('0x47')]({'where':{'id':_0x1d06c9[_0xfc10('0x44')]['id']}})[_0xfc10('0x25')](handleEntityNotFound(_0x5e64ac,null))[_0xfc10('0x25')](removeEntity(_0x5e64ac,null))[_0xfc10('0x42')](handleError(_0x5e64ac,null));};exports[_0xfc10('0x4b')]=function(_0xbad19f,_0x36683e){return db[_0xfc10('0x2c')][_0xfc10('0x4b')]()['then'](respondWithResult(_0x36683e,null))['catch'](handleError(_0x36683e,null));};
\ No newline at end of file
+var _0xd946=['body','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','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','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','fields','attributes','length','order','sort','where','pick','filter','merge','VIRTUAL','options','include','SquareReport','findAll','rows','catch','params','intersection','find','create'];(function(_0x24fd11,_0x57c976){var _0x5da68f=function(_0x5a37d6){while(--_0x5a37d6){_0x24fd11['push'](_0x24fd11['shift']());}};_0x5da68f(++_0x57c976);}(_0xd946,0x98));var _0x6d94=function(_0xcfb68,_0x25217e){_0xcfb68=_0xcfb68-0x0;var _0x4f873d=_0xd946[_0xcfb68];return _0x4f873d;};'use strict';var emlformat=require(_0x6d94('0x0'));var rimraf=require(_0x6d94('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6d94('0x2'));var rp=require(_0x6d94('0x3'));var moment=require(_0x6d94('0x4'));var BPromise=require(_0x6d94('0x5'));var Mustache=require(_0x6d94('0x6'));var util=require(_0x6d94('0x7'));var path=require(_0x6d94('0x8'));var sox=require(_0x6d94('0x9'));var csv=require(_0x6d94('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6d94('0xb'));var _=require(_0x6d94('0xc'));var squel=require(_0x6d94('0xd'));var crypto=require(_0x6d94('0xe'));var jsforce=require(_0x6d94('0xf'));var deskjs=require(_0x6d94('0x10'));var toCsv=require(_0x6d94('0xa'));var querystring=require('querystring');var Papa=require(_0x6d94('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6d94('0x12'));var as=require(_0x6d94('0x13'));var hardwareService=require(_0x6d94('0x14'));var logger=require('../../config/logger')(_0x6d94('0x15'));var utils=require(_0x6d94('0x16'));var config=require(_0x6d94('0x17'));var licenseUtil=require(_0x6d94('0x18'));var db=require(_0x6d94('0x19'))['db'];function respondWithStatusCode(_0x4b476d,_0x33d4cc){_0x33d4cc=_0x33d4cc||0xcc;return function(_0x325cf7){if(_0x325cf7){return _0x4b476d[_0x6d94('0x1a')](_0x33d4cc);}return _0x4b476d[_0x6d94('0x1b')](_0x33d4cc)[_0x6d94('0x1c')]();};}function respondWithResult(_0x59cfbf,_0x5c2bb2){_0x5c2bb2=_0x5c2bb2||0xc8;return function(_0x1a7e67){if(_0x1a7e67){return _0x59cfbf[_0x6d94('0x1b')](_0x5c2bb2)[_0x6d94('0x1d')](_0x1a7e67);}};}function respondWithFilteredResult(_0x131a74,_0x4f1c80){return function(_0x2f73ef){if(_0x2f73ef){var _0x48f7b9=typeof _0x4f1c80[_0x6d94('0x1e')]===_0x6d94('0x1f')&&typeof _0x4f1c80[_0x6d94('0x20')]==='undefined';var _0x32af66=_0x2f73ef['count'];var _0x31044a=_0x48f7b9?0x0:_0x4f1c80['offset'];var _0x10c618=_0x48f7b9?_0x2f73ef[_0x6d94('0x21')]:_0x4f1c80[_0x6d94('0x1e')]+_0x4f1c80[_0x6d94('0x20')];var _0x2be5a4;if(_0x10c618>=_0x32af66){_0x10c618=_0x32af66;_0x2be5a4=0xc8;}else{_0x2be5a4=0xce;}_0x131a74[_0x6d94('0x1b')](_0x2be5a4);return _0x131a74[_0x6d94('0x22')]('Content-Range',_0x31044a+'-'+_0x10c618+'/'+_0x32af66)[_0x6d94('0x1d')](_0x2f73ef);}return null;};}function patchUpdates(_0x4c4c99){return function(_0x26ffc1){try{jsonpatch[_0x6d94('0x23')](_0x26ffc1,_0x4c4c99,!![]);}catch(_0x441fe8){return BPromise[_0x6d94('0x24')](_0x441fe8);}return _0x26ffc1['save']();};}function saveUpdates(_0x493f05,_0x195cc1){return function(_0x481e25){if(_0x481e25){return _0x481e25['update'](_0x493f05)[_0x6d94('0x25')](function(_0x3890f8){return _0x3890f8;});}return null;};}function removeEntity(_0x41a44d,_0x507899){return function(_0x309a5e){if(_0x309a5e){return _0x309a5e[_0x6d94('0x26')]()[_0x6d94('0x25')](function(){_0x41a44d[_0x6d94('0x1b')](0xcc)[_0x6d94('0x1c')]();});}};}function handleEntityNotFound(_0x33ddc7,_0x548c5a){return function(_0x420253){if(!_0x420253){_0x33ddc7[_0x6d94('0x1a')](0x194);}return _0x420253;};}function handleError(_0x1e4d9e,_0x74b252){_0x74b252=_0x74b252||0x1f4;return function(_0x3768c1){logger[_0x6d94('0x27')](_0x3768c1[_0x6d94('0x28')]);if(_0x3768c1[_0x6d94('0x29')]){delete _0x3768c1[_0x6d94('0x29')];}_0x1e4d9e[_0x6d94('0x1b')](_0x74b252)[_0x6d94('0x2a')](_0x3768c1);};}exports[_0x6d94('0x2b')]=function(_0x425160,_0x10980c){var _0x561162={},_0x9bd1e2={},_0x302d3d={'count':0x0,'rows':[]};var _0x511ec0=_[_0x6d94('0x2c')](db['SquareReport'][_0x6d94('0x2d')],function(_0x233854){return{'name':_0x233854[_0x6d94('0x2e')],'type':_0x233854[_0x6d94('0x2f')][_0x6d94('0x30')]};});_0x9bd1e2[_0x6d94('0x31')]=_['map'](_0x511ec0,_0x6d94('0x29'));_0x9bd1e2[_0x6d94('0x32')]=_[_0x6d94('0x33')](_0x425160['query']);_0x9bd1e2[_0x6d94('0x34')]=_['intersection'](_0x9bd1e2[_0x6d94('0x31')],_0x9bd1e2[_0x6d94('0x32')]);_0x561162['attributes']=_['intersection'](_0x9bd1e2[_0x6d94('0x31')],qs[_0x6d94('0x35')](_0x425160['query'][_0x6d94('0x35')]));_0x561162[_0x6d94('0x36')]=_0x561162['attributes'][_0x6d94('0x37')]?_0x561162['attributes']:_0x9bd1e2[_0x6d94('0x31')];if(!_0x425160['query']['hasOwnProperty']('nolimit')){_0x561162['limit']=qs[_0x6d94('0x20')](_0x425160[_0x6d94('0x32')][_0x6d94('0x20')]);_0x561162['offset']=qs[_0x6d94('0x1e')](_0x425160[_0x6d94('0x32')]['offset']);}_0x561162[_0x6d94('0x38')]=qs['sort'](_0x425160[_0x6d94('0x32')][_0x6d94('0x39')]);_0x561162[_0x6d94('0x3a')]=qs['filters'](_[_0x6d94('0x3b')](_0x425160[_0x6d94('0x32')],_0x9bd1e2[_0x6d94('0x34')]),_0x511ec0);if(_0x425160[_0x6d94('0x32')][_0x6d94('0x3c')]){_0x561162[_0x6d94('0x3a')]=_[_0x6d94('0x3d')](_0x561162[_0x6d94('0x3a')],{'$or':_[_0x6d94('0x2c')](_0x511ec0,function(_0x3533f6){if(_0x3533f6[_0x6d94('0x2f')]!==_0x6d94('0x3e')){var _0xa6c851={};_0xa6c851[_0x3533f6[_0x6d94('0x29')]]={'$like':'%'+_0x425160[_0x6d94('0x32')][_0x6d94('0x3c')]+'%'};return _0xa6c851;}})});}_0x561162=_['merge']({},_0x561162,_0x425160[_0x6d94('0x3f')]);var _0x401e05={'where':_0x561162[_0x6d94('0x3a')]};return db['SquareReport']['count'](_0x401e05)[_0x6d94('0x25')](function(_0x37f3c3){_0x302d3d[_0x6d94('0x21')]=_0x37f3c3;if(_0x425160[_0x6d94('0x32')]['includeAll']){_0x561162[_0x6d94('0x40')]=[{'all':!![]}];}return db[_0x6d94('0x41')][_0x6d94('0x42')](_0x561162);})[_0x6d94('0x25')](function(_0x220642){_0x302d3d[_0x6d94('0x43')]=_0x220642;return _0x302d3d;})[_0x6d94('0x25')](respondWithFilteredResult(_0x10980c,_0x561162))[_0x6d94('0x44')](handleError(_0x10980c,null));};exports['show']=function(_0x1c2156,_0x515dc6){var _0xbfff73={'raw':!![],'where':{'id':_0x1c2156[_0x6d94('0x45')]['id']}},_0x2e88f6={};_0x2e88f6[_0x6d94('0x31')]=_[_0x6d94('0x33')](db['SquareReport'][_0x6d94('0x2d')]);_0x2e88f6[_0x6d94('0x32')]=_['keys'](_0x1c2156[_0x6d94('0x32')]);_0x2e88f6[_0x6d94('0x34')]=_[_0x6d94('0x46')](_0x2e88f6[_0x6d94('0x31')],_0x2e88f6[_0x6d94('0x32')]);_0xbfff73['attributes']=_[_0x6d94('0x46')](_0x2e88f6[_0x6d94('0x31')],qs['fields'](_0x1c2156['query'][_0x6d94('0x35')]));_0xbfff73['attributes']=_0xbfff73[_0x6d94('0x36')][_0x6d94('0x37')]?_0xbfff73[_0x6d94('0x36')]:_0x2e88f6[_0x6d94('0x31')];if(_0x1c2156['query']['includeAll']){_0xbfff73['include']=[{'all':!![]}];}_0xbfff73=_[_0x6d94('0x3d')]({},_0xbfff73,_0x1c2156[_0x6d94('0x3f')]);return db[_0x6d94('0x41')][_0x6d94('0x47')](_0xbfff73)['then'](handleEntityNotFound(_0x515dc6,null))[_0x6d94('0x25')](respondWithResult(_0x515dc6,null))[_0x6d94('0x44')](handleError(_0x515dc6,null));};exports[_0x6d94('0x48')]=function(_0x5e8d6c,_0x1cbe1a){return db['SquareReport'][_0x6d94('0x48')](_0x5e8d6c[_0x6d94('0x49')],{})[_0x6d94('0x25')](respondWithResult(_0x1cbe1a,0xc9))[_0x6d94('0x44')](handleError(_0x1cbe1a,null));};exports['update']=function(_0x3de8b4,_0x49153a){if(_0x3de8b4[_0x6d94('0x49')]['id']){delete _0x3de8b4[_0x6d94('0x49')]['id'];}return db['SquareReport'][_0x6d94('0x47')]({'where':{'id':_0x3de8b4[_0x6d94('0x45')]['id']}})[_0x6d94('0x25')](handleEntityNotFound(_0x49153a,null))['then'](saveUpdates(_0x3de8b4['body'],null))[_0x6d94('0x25')](respondWithResult(_0x49153a,null))['catch'](handleError(_0x49153a,null));};exports['destroy']=function(_0x51a283,_0x3eaf87){return db['SquareReport'][_0x6d94('0x47')]({'where':{'id':_0x51a283[_0x6d94('0x45')]['id']}})[_0x6d94('0x25')](handleEntityNotFound(_0x3eaf87,null))[_0x6d94('0x25')](removeEntity(_0x3eaf87,null))[_0x6d94('0x44')](handleError(_0x3eaf87,null));};exports[_0x6d94('0x4a')]=function(_0x1d7065,_0x34ee62){return db['SquareReport'][_0x6d94('0x4a')]()[_0x6d94('0x25')](respondWithResult(_0x34ee62,null))[_0x6d94('0x44')](handleError(_0x34ee62,null));};
\ No newline at end of file
index 35442a7..0b0c4a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d30=['uniqueid','leaveAt','util','../../config/logger','api','moment','bluebird','path','../../config/environment','exports','SquareReport','report_square','uid_pname'];(function(_0x143ee7,_0x18e5d3){var _0x31b693=function(_0xbe2612){while(--_0xbe2612){_0x143ee7['push'](_0x143ee7['shift']());}};_0x31b693(++_0x18e5d3);}(_0x9d30,0x1c9));var _0x09d3=function(_0x27cb25,_0x33c75e){_0x27cb25=_0x27cb25-0x0;var _0x1ef741=_0x9d30[_0x27cb25];return _0x1ef741;};'use strict';var _=require('lodash');var util=require(_0x09d3('0x0'));var logger=require(_0x09d3('0x1'))(_0x09d3('0x2'));var moment=require(_0x09d3('0x3'));var BPromise=require(_0x09d3('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x09d3('0x5'));var rimraf=require('rimraf');var config=require(_0x09d3('0x6'));var attributes=require('./squareReport.attributes');module[_0x09d3('0x7')]=function(_0x5100c1,_0x155804){return _0x5100c1['define'](_0x09d3('0x8'),attributes,{'tableName':_0x09d3('0x9'),'paranoid':![],'indexes':[{'name':_0x09d3('0xa'),'fields':[_0x09d3('0xb'),'project_name']},{'name':_0x09d3('0xc'),'fields':[_0x09d3('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc121=['bluebird','request-promise','path','rimraf','./squareReport.attributes','exports','define','SquareReport','uid_pname','project_name','leaveAt','lodash','util','../../config/logger','api','moment'];(function(_0x2a6374,_0x131892){var _0x2bf330=function(_0x30750f){while(--_0x30750f){_0x2a6374['push'](_0x2a6374['shift']());}};_0x2bf330(++_0x131892);}(_0xc121,0xcb));var _0x1c12=function(_0x5a95fa,_0x4a2fc9){_0x5a95fa=_0x5a95fa-0x0;var _0x1a61b8=_0xc121[_0x5a95fa];return _0x1a61b8;};'use strict';var _=require(_0x1c12('0x0'));var util=require(_0x1c12('0x1'));var logger=require(_0x1c12('0x2'))(_0x1c12('0x3'));var moment=require(_0x1c12('0x4'));var BPromise=require(_0x1c12('0x5'));var rp=require(_0x1c12('0x6'));var fs=require('fs');var path=require(_0x1c12('0x7'));var rimraf=require(_0x1c12('0x8'));var config=require('../../config/environment');var attributes=require(_0x1c12('0x9'));module[_0x1c12('0xa')]=function(_0x1a6c91,_0x16ac34){return _0x1a6c91[_0x1c12('0xb')](_0x1c12('0xc'),attributes,{'tableName':'report_square','paranoid':![],'indexes':[{'name':_0x1c12('0xd'),'fields':['uniqueid',_0x1c12('0xe')]},{'name':_0x1c12('0xf'),'fields':[_0x1c12('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index a280302..57c836b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0d4=['then','UpdateSquareReport','util','bluebird','randomstring','ioredis','../../config/environment','http','request','SquareReport,\x20%s,\x20%s','request\x20sent','debug','SquareReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','create','body','options','raw','CreateSquareReport','SquareReport','update','where','attributes'];(function(_0x2c8afe,_0x100f80){var _0x982977=function(_0x5b3a44){while(--_0x5b3a44){_0x2c8afe['push'](_0x2c8afe['shift']());}};_0x982977(++_0x100f80);}(_0xa0d4,0x1c2));var _0x4a0d=function(_0x8f9ae2,_0x592e96){_0x8f9ae2=_0x8f9ae2-0x0;var _0x39e0e3=_0xa0d4[_0x8f9ae2];return _0x39e0e3;};'use strict';var _=require('lodash');var util=require(_0x4a0d('0x0'));var moment=require('moment');var BPromise=require(_0x4a0d('0x1'));var rs=require(_0x4a0d('0x2'));var fs=require('fs');var Redis=require(_0x4a0d('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x4a0d('0x4'));var jayson=require('jayson/promise');var client=jayson['client'][_0x4a0d('0x5')]({'port':0x232a});function respondWithRpcPromise(_0x20b784,_0x515f14,_0x39bf54){return new BPromise(function(_0xeb795,_0xcda773){return client[_0x4a0d('0x6')](_0x20b784,_0x39bf54)['then'](function(_0x21bb26){logger['info'](_0x4a0d('0x7'),_0x515f14,_0x4a0d('0x8'));logger[_0x4a0d('0x9')](_0x4a0d('0xa'),_0x515f14,'request\x20sent',JSON[_0x4a0d('0xb')](_0x21bb26));if(_0x21bb26[_0x4a0d('0xc')]){if(_0x21bb26[_0x4a0d('0xc')]['code']===0x1f4){logger['error'](_0x4a0d('0x7'),_0x515f14,_0x21bb26[_0x4a0d('0xc')][_0x4a0d('0xd')]);return _0xcda773(_0x21bb26[_0x4a0d('0xc')][_0x4a0d('0xd')]);}logger[_0x4a0d('0xc')](_0x4a0d('0x7'),_0x515f14,_0x21bb26[_0x4a0d('0xc')][_0x4a0d('0xd')]);return _0xeb795(_0x21bb26[_0x4a0d('0xc')]['message']);}else{logger[_0x4a0d('0xe')](_0x4a0d('0x7'),_0x515f14,_0x4a0d('0x8'));_0xeb795(_0x21bb26[_0x4a0d('0xf')][_0x4a0d('0xd')]);}})[_0x4a0d('0x10')](function(_0x132a4d){logger[_0x4a0d('0xc')]('SquareReport,\x20%s,\x20%s',_0x515f14,_0x132a4d);_0xcda773(_0x132a4d);});});}exports['CreateSquareReport']=function(_0x54490a){var _0x41f255=this;return new Promise(function(_0x58dcfb,_0x3aeb4a){return db['SquareReport'][_0x4a0d('0x11')](_0x54490a[_0x4a0d('0x12')],{'raw':_0x54490a[_0x4a0d('0x13')]?_0x54490a[_0x4a0d('0x13')][_0x4a0d('0x14')]===undefined?!![]:![]:!![]})['then'](function(_0x1efad7){logger[_0x4a0d('0xe')](_0x4a0d('0x15'),_0x54490a);logger[_0x4a0d('0x9')](_0x4a0d('0x15'),_0x54490a,JSON[_0x4a0d('0xb')](_0x1efad7));_0x58dcfb(_0x1efad7);})['catch'](function(_0x31e630){logger[_0x4a0d('0xc')](_0x4a0d('0x15'),_0x31e630[_0x4a0d('0xd')],_0x54490a);_0x3aeb4a(_0x41f255['error'](0x1f4,_0x31e630['message']));});});};exports['UpdateSquareReport']=function(_0x23ea42){var _0x1a9dd5=this;return new Promise(function(_0x576e70,_0x4adb76){return db[_0x4a0d('0x16')][_0x4a0d('0x17')](_0x23ea42[_0x4a0d('0x12')],{'raw':_0x23ea42[_0x4a0d('0x13')]?_0x23ea42[_0x4a0d('0x13')][_0x4a0d('0x14')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x23ea42[_0x4a0d('0x13')]?_0x23ea42[_0x4a0d('0x13')][_0x4a0d('0x18')]||null:null,'attributes':_0x23ea42[_0x4a0d('0x13')]?_0x23ea42[_0x4a0d('0x13')][_0x4a0d('0x19')]||null:null,'limit':_0x23ea42[_0x4a0d('0x13')]?_0x23ea42[_0x4a0d('0x13')]['limit']||null:null})[_0x4a0d('0x1a')](function(_0x2cd79d){logger[_0x4a0d('0xe')](_0x4a0d('0x1b'),_0x23ea42);logger['debug']('UpdateSquareReport',_0x23ea42,JSON[_0x4a0d('0xb')](_0x2cd79d));_0x576e70(_0x2cd79d);})[_0x4a0d('0x10')](function(_0x4a0aa1){logger[_0x4a0d('0xc')](_0x4a0d('0x1b'),_0x4a0aa1[_0x4a0d('0xd')],_0x23ea42);_0x4adb76(_0x1a9dd5[_0x4a0d('0xc')](0x1f4,_0x4a0aa1['message']));});});};
\ No newline at end of file
+var _0x9d11=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SquareReport,\x20%s,\x20%s','debug','SquareReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateSquareReport','SquareReport','create','body','options','UpdateSquareReport','attributes','limit','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x45db8d,_0x4109fa){var _0x3cfdec=function(_0x5ad9f5){while(--_0x5ad9f5){_0x45db8d['push'](_0x45db8d['shift']());}};_0x3cfdec(++_0x4109fa);}(_0x9d11,0x9b));var _0x19d1=function(_0x3a0c4f,_0x5dd1a3){_0x3a0c4f=_0x3a0c4f-0x0;var _0x247049=_0x9d11[_0x3a0c4f];return _0x247049;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x19d1('0x0'));var rs=require(_0x19d1('0x1'));var fs=require('fs');var Redis=require(_0x19d1('0x2'));var db=require(_0x19d1('0x3'))['db'];var utils=require(_0x19d1('0x4'));var logger=require(_0x19d1('0x5'))(_0x19d1('0x6'));var config=require(_0x19d1('0x7'));var jayson=require(_0x19d1('0x8'));var client=jayson[_0x19d1('0x9')][_0x19d1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2ebb88,_0x29a73f,_0x5082d2){return new BPromise(function(_0x27c0a0,_0x30fd69){return client[_0x19d1('0xb')](_0x2ebb88,_0x5082d2)[_0x19d1('0xc')](function(_0x24fe86){logger[_0x19d1('0xd')](_0x19d1('0xe'),_0x29a73f,'request\x20sent');logger[_0x19d1('0xf')](_0x19d1('0x10'),_0x29a73f,_0x19d1('0x11'),JSON[_0x19d1('0x12')](_0x24fe86));if(_0x24fe86['error']){if(_0x24fe86[_0x19d1('0x13')][_0x19d1('0x14')]===0x1f4){logger[_0x19d1('0x13')](_0x19d1('0xe'),_0x29a73f,_0x24fe86[_0x19d1('0x13')][_0x19d1('0x15')]);return _0x30fd69(_0x24fe86[_0x19d1('0x13')]['message']);}logger[_0x19d1('0x13')](_0x19d1('0xe'),_0x29a73f,_0x24fe86[_0x19d1('0x13')]['message']);return _0x27c0a0(_0x24fe86['error'][_0x19d1('0x15')]);}else{logger[_0x19d1('0xd')]('SquareReport,\x20%s,\x20%s',_0x29a73f,_0x19d1('0x11'));_0x27c0a0(_0x24fe86[_0x19d1('0x16')][_0x19d1('0x15')]);}})[_0x19d1('0x17')](function(_0x2bdd53){logger['error']('SquareReport,\x20%s,\x20%s',_0x29a73f,_0x2bdd53);_0x30fd69(_0x2bdd53);});});}exports[_0x19d1('0x18')]=function(_0x15b36b){var _0x83a292=this;return new Promise(function(_0x39eddd,_0x27fb89){return db[_0x19d1('0x19')][_0x19d1('0x1a')](_0x15b36b[_0x19d1('0x1b')],{'raw':_0x15b36b['options']?_0x15b36b[_0x19d1('0x1c')]['raw']===undefined?!![]:![]:!![]})[_0x19d1('0xc')](function(_0x188677){logger[_0x19d1('0xd')](_0x19d1('0x18'),_0x15b36b);logger[_0x19d1('0xf')]('CreateSquareReport',_0x15b36b,JSON[_0x19d1('0x12')](_0x188677));_0x39eddd(_0x188677);})[_0x19d1('0x17')](function(_0x93ac42){logger[_0x19d1('0x13')](_0x19d1('0x18'),_0x93ac42[_0x19d1('0x15')],_0x15b36b);_0x27fb89(_0x83a292['error'](0x1f4,_0x93ac42['message']));});});};exports[_0x19d1('0x1d')]=function(_0x37df9d){var _0x3ad6b8=this;return new Promise(function(_0x557c13,_0x381920){return db[_0x19d1('0x19')]['update'](_0x37df9d['body'],{'raw':_0x37df9d[_0x19d1('0x1c')]?_0x37df9d[_0x19d1('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x37df9d['options']?_0x37df9d[_0x19d1('0x1c')]['where']||null:null,'attributes':_0x37df9d[_0x19d1('0x1c')]?_0x37df9d['options'][_0x19d1('0x1e')]||null:null,'limit':_0x37df9d[_0x19d1('0x1c')]?_0x37df9d['options'][_0x19d1('0x1f')]||null:null})[_0x19d1('0xc')](function(_0x33863e){logger[_0x19d1('0xd')]('UpdateSquareReport',_0x37df9d);logger[_0x19d1('0xf')]('UpdateSquareReport',_0x37df9d,JSON[_0x19d1('0x12')](_0x33863e));_0x557c13(_0x33863e);})[_0x19d1('0x17')](function(_0x2f5423){logger[_0x19d1('0x13')](_0x19d1('0x1d'),_0x2f5423[_0x19d1('0x15')],_0x37df9d);_0x381920(_0x3ad6b8[_0x19d1('0x13')](0x1f4,_0x2f5423['message']));});});};
\ No newline at end of file
index aef291d..885f22b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71e5=['isAuthenticated','/describe','/:id','show','post','create','put','update','delete','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','get'];(function(_0x4cb03b,_0x47d402){var _0x132ba4=function(_0xaf6bc4){while(--_0xaf6bc4){_0x4cb03b['push'](_0x4cb03b['shift']());}};_0x132ba4(++_0x47d402);}(_0x71e5,0xf4));var _0x571e=function(_0xa6c567,_0x4d0421){_0xa6c567=_0xa6c567-0x0;var _0x181ce7=_0x71e5[_0xa6c567];return _0x181ce7;};'use strict';var multer=require(_0x571e('0x0'));var util=require(_0x571e('0x1'));var path=require('path');var timeout=require(_0x571e('0x2'));var express=require(_0x571e('0x3'));var router=express['Router']();var fs_extra=require(_0x571e('0x4'));var auth=require(_0x571e('0x5'));var interaction=require(_0x571e('0x6'));var config=require('../../config/environment');var controller=require('./squareReportDetail.controller');router[_0x571e('0x7')]('/',auth[_0x571e('0x8')](),controller['index']);router['get'](_0x571e('0x9'),auth['isAuthenticated'](),controller['describe']);router[_0x571e('0x7')](_0x571e('0xa'),auth[_0x571e('0x8')](),controller[_0x571e('0xb')]);router[_0x571e('0xc')]('/',auth[_0x571e('0x8')](),controller[_0x571e('0xd')]);router[_0x571e('0xe')](_0x571e('0xa'),auth[_0x571e('0x8')](),controller[_0x571e('0xf')]);router[_0x571e('0x10')](_0x571e('0xa'),auth[_0x571e('0x8')](),controller['destroy']);module[_0x571e('0x11')]=router;
\ No newline at end of file
+var _0x3b33=['multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','isAuthenticated','index','/describe','describe','/:id','create','put','update','destroy'];(function(_0x49fe55,_0xbb77ed){var _0x1dc65c=function(_0x5a5622){while(--_0x5a5622){_0x49fe55['push'](_0x49fe55['shift']());}};_0x1dc65c(++_0xbb77ed);}(_0x3b33,0xa0));var _0x33b3=function(_0x397a00,_0x279163){_0x397a00=_0x397a00-0x0;var _0x55cc34=_0x3b33[_0x397a00];return _0x55cc34;};'use strict';var multer=require(_0x33b3('0x0'));var util=require(_0x33b3('0x1'));var path=require(_0x33b3('0x2'));var timeout=require(_0x33b3('0x3'));var express=require(_0x33b3('0x4'));var router=express[_0x33b3('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x33b3('0x6'));var interaction=require(_0x33b3('0x7'));var config=require(_0x33b3('0x8'));var controller=require(_0x33b3('0x9'));router[_0x33b3('0xa')]('/',auth[_0x33b3('0xb')](),controller[_0x33b3('0xc')]);router['get'](_0x33b3('0xd'),auth[_0x33b3('0xb')](),controller[_0x33b3('0xe')]);router[_0x33b3('0xa')](_0x33b3('0xf'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x33b3('0xb')](),controller[_0x33b3('0x10')]);router[_0x33b3('0x11')](_0x33b3('0xf'),auth[_0x33b3('0xb')](),controller[_0x33b3('0x12')]);router['delete'](_0x33b3('0xf'),auth['isAuthenticated'](),controller[_0x33b3('0x13')]);module['exports']=router;
\ No newline at end of file
index 9b95374..623a45a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6922=['STRING','sequelize'];(function(_0x32efcb,_0x55523f){var _0x1dae88=function(_0x11c606){while(--_0x11c606){_0x32efcb['push'](_0x32efcb['shift']());}};_0x1dae88(++_0x55523f);}(_0x6922,0x159));var _0x2692=function(_0x5ab13a,_0x474bea){_0x5ab13a=_0x5ab13a-0x0;var _0x5acc00=_0x6922[_0x5ab13a];return _0x5acc00;};'use strict';var Sequelize=require(_0x2692('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x2692('0x1')]},'node':{'type':Sequelize[_0x2692('0x1')]},'application':{'type':Sequelize[_0x2692('0x1')]},'data':{'type':Sequelize['TEXT']},'project_name':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xfd04=['STRING','TEXT','sequelize','exports'];(function(_0x52dd2d,_0x1d1b57){var _0xa07d84=function(_0x3e911c){while(--_0x3e911c){_0x52dd2d['push'](_0x52dd2d['shift']());}};_0xa07d84(++_0x1d1b57);}(_0xfd04,0xde));var _0x4fd0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfd04[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x4fd0('0x0'));module[_0x4fd0('0x1')]={'uniqueid':{'type':Sequelize[_0x4fd0('0x2')]},'node':{'type':Sequelize[_0x4fd0('0x2')]},'application':{'type':Sequelize[_0x4fd0('0x2')]},'data':{'type':Sequelize[_0x4fd0('0x3')]},'project_name':{'type':Sequelize[_0x4fd0('0x2')]},'callerid':{'type':Sequelize['STRING']}};
\ No newline at end of file
index dfcbe79..e28f804 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaee7=['fast-json-patch','request-promise','moment','sox','to-csv','fs-extra','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','status','end','json','limit','undefined','count','offset','Content-Range','apply','update','then','destroy','sendStatus','error','stack','name','send','index','map','SquareDetailsReport','fieldName','type','key','model','keys','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','pick','where','merge','VIRTUAL','filter','options','include','findAll','rows','catch','show','rawAttributes','length','includeAll','create','body','params','describe','eml-format','rimraf'];(function(_0x3b0912,_0x39d739){var _0xa8f339=function(_0x6a31ab){while(--_0x6a31ab){_0x3b0912['push'](_0x3b0912['shift']());}};_0xa8f339(++_0x39d739);}(_0xaee7,0xdf));var _0x7aee=function(_0x3804d7,_0x26196c){_0x3804d7=_0x3804d7-0x0;var _0x507230=_0xaee7[_0x3804d7];return _0x507230;};'use strict';var emlformat=require(_0x7aee('0x0'));var rimraf=require(_0x7aee('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7aee('0x2'));var rp=require(_0x7aee('0x3'));var moment=require(_0x7aee('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x7aee('0x5'));var csv=require(_0x7aee('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7aee('0x7'));var _=require('lodash');var squel=require(_0x7aee('0x8'));var crypto=require(_0x7aee('0x9'));var jsforce=require(_0x7aee('0xa'));var deskjs=require(_0x7aee('0xb'));var toCsv=require('to-csv');var querystring=require(_0x7aee('0xc'));var Papa=require(_0x7aee('0xd'));var Redis=require(_0x7aee('0xe'));var authService=require(_0x7aee('0xf'));var qs=require(_0x7aee('0x10'));var as=require(_0x7aee('0x11'));var hardwareService=require(_0x7aee('0x12'));var logger=require('../../config/logger')(_0x7aee('0x13'));var utils=require(_0x7aee('0x14'));var config=require(_0x7aee('0x15'));var licenseUtil=require(_0x7aee('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x552461,_0x24e883){_0x24e883=_0x24e883||0xcc;return function(_0x53363a){if(_0x53363a){return _0x552461['sendStatus'](_0x24e883);}return _0x552461[_0x7aee('0x17')](_0x24e883)[_0x7aee('0x18')]();};}function respondWithResult(_0x3bb97c,_0x4feb7c){_0x4feb7c=_0x4feb7c||0xc8;return function(_0x422702){if(_0x422702){return _0x3bb97c[_0x7aee('0x17')](_0x4feb7c)[_0x7aee('0x19')](_0x422702);}};}function respondWithFilteredResult(_0x5185c9,_0x134c06){return function(_0x1779b9){if(_0x1779b9){var _0x58edfb=typeof _0x134c06['offset']==='undefined'&&typeof _0x134c06[_0x7aee('0x1a')]===_0x7aee('0x1b');var _0x616a7e=_0x1779b9[_0x7aee('0x1c')];var _0xb0a185=_0x58edfb?0x0:_0x134c06['offset'];var _0x24507a=_0x58edfb?_0x1779b9[_0x7aee('0x1c')]:_0x134c06[_0x7aee('0x1d')]+_0x134c06[_0x7aee('0x1a')];var _0x186231;if(_0x24507a>=_0x616a7e){_0x24507a=_0x616a7e;_0x186231=0xc8;}else{_0x186231=0xce;}_0x5185c9[_0x7aee('0x17')](_0x186231);return _0x5185c9['set'](_0x7aee('0x1e'),_0xb0a185+'-'+_0x24507a+'/'+_0x616a7e)[_0x7aee('0x19')](_0x1779b9);}return null;};}function patchUpdates(_0x1af17c){return function(_0x5c817e){try{jsonpatch[_0x7aee('0x1f')](_0x5c817e,_0x1af17c,!![]);}catch(_0x379544){return BPromise['reject'](_0x379544);}return _0x5c817e['save']();};}function saveUpdates(_0x510566,_0x496e38){return function(_0x2cccd1){if(_0x2cccd1){return _0x2cccd1[_0x7aee('0x20')](_0x510566)[_0x7aee('0x21')](function(_0x516fd0){return _0x516fd0;});}return null;};}function removeEntity(_0x20b137,_0x316215){return function(_0x1fb591){if(_0x1fb591){return _0x1fb591[_0x7aee('0x22')]()[_0x7aee('0x21')](function(){_0x20b137[_0x7aee('0x17')](0xcc)[_0x7aee('0x18')]();});}};}function handleEntityNotFound(_0x17539e,_0x3e0369){return function(_0x56b9f3){if(!_0x56b9f3){_0x17539e[_0x7aee('0x23')](0x194);}return _0x56b9f3;};}function handleError(_0x31d936,_0x3f6393){_0x3f6393=_0x3f6393||0x1f4;return function(_0x53bbaf){logger[_0x7aee('0x24')](_0x53bbaf[_0x7aee('0x25')]);if(_0x53bbaf[_0x7aee('0x26')]){delete _0x53bbaf[_0x7aee('0x26')];}_0x31d936[_0x7aee('0x17')](_0x3f6393)[_0x7aee('0x27')](_0x53bbaf);};}exports[_0x7aee('0x28')]=function(_0x127252,_0x3bd031){var _0x36fabb={},_0x586621={},_0x4036af={'count':0x0,'rows':[]};var _0x4e7097=_[_0x7aee('0x29')](db[_0x7aee('0x2a')]['rawAttributes'],function(_0x1c5a9b){return{'name':_0x1c5a9b[_0x7aee('0x2b')],'type':_0x1c5a9b[_0x7aee('0x2c')][_0x7aee('0x2d')]};});_0x586621[_0x7aee('0x2e')]=_['map'](_0x4e7097,_0x7aee('0x26'));_0x586621['query']=_[_0x7aee('0x2f')](_0x127252[_0x7aee('0x30')]);_0x586621['filters']=_[_0x7aee('0x31')](_0x586621[_0x7aee('0x2e')],_0x586621[_0x7aee('0x30')]);_0x36fabb[_0x7aee('0x32')]=_[_0x7aee('0x31')](_0x586621['model'],qs[_0x7aee('0x33')](_0x127252[_0x7aee('0x30')][_0x7aee('0x33')]));_0x36fabb[_0x7aee('0x32')]=_0x36fabb['attributes']['length']?_0x36fabb[_0x7aee('0x32')]:_0x586621[_0x7aee('0x2e')];if(!_0x127252[_0x7aee('0x30')][_0x7aee('0x34')](_0x7aee('0x35'))){_0x36fabb[_0x7aee('0x1a')]=qs['limit'](_0x127252[_0x7aee('0x30')]['limit']);_0x36fabb[_0x7aee('0x1d')]=qs[_0x7aee('0x1d')](_0x127252[_0x7aee('0x30')]['offset']);}_0x36fabb[_0x7aee('0x36')]=qs[_0x7aee('0x37')](_0x127252[_0x7aee('0x30')]['sort']);_0x36fabb['where']=qs[_0x7aee('0x38')](_[_0x7aee('0x39')](_0x127252['query'],_0x586621['filters']),_0x4e7097);if(_0x127252['query']['filter']){_0x36fabb[_0x7aee('0x3a')]=_[_0x7aee('0x3b')](_0x36fabb[_0x7aee('0x3a')],{'$or':_[_0x7aee('0x29')](_0x4e7097,function(_0x4bb5d3){if(_0x4bb5d3[_0x7aee('0x2c')]!==_0x7aee('0x3c')){var _0x59b2ce={};_0x59b2ce[_0x4bb5d3[_0x7aee('0x26')]]={'$like':'%'+_0x127252['query'][_0x7aee('0x3d')]+'%'};return _0x59b2ce;}})});}_0x36fabb=_['merge']({},_0x36fabb,_0x127252[_0x7aee('0x3e')]);var _0x34a6e3={'where':_0x36fabb[_0x7aee('0x3a')]};return db[_0x7aee('0x2a')]['count'](_0x34a6e3)[_0x7aee('0x21')](function(_0x12e8ba){_0x4036af['count']=_0x12e8ba;if(_0x127252[_0x7aee('0x30')]['includeAll']){_0x36fabb[_0x7aee('0x3f')]=[{'all':!![]}];}return db[_0x7aee('0x2a')][_0x7aee('0x40')](_0x36fabb);})[_0x7aee('0x21')](function(_0xa639b0){_0x4036af[_0x7aee('0x41')]=_0xa639b0;return _0x4036af;})[_0x7aee('0x21')](respondWithFilteredResult(_0x3bd031,_0x36fabb))[_0x7aee('0x42')](handleError(_0x3bd031,null));};exports[_0x7aee('0x43')]=function(_0x5eaa62,_0x252aef){var _0x5bf6b7={'raw':!![],'where':{'id':_0x5eaa62['params']['id']}},_0x7deae0={};_0x7deae0[_0x7aee('0x2e')]=_['keys'](db['SquareDetailsReport'][_0x7aee('0x44')]);_0x7deae0['query']=_[_0x7aee('0x2f')](_0x5eaa62[_0x7aee('0x30')]);_0x7deae0[_0x7aee('0x38')]=_[_0x7aee('0x31')](_0x7deae0[_0x7aee('0x2e')],_0x7deae0[_0x7aee('0x30')]);_0x5bf6b7[_0x7aee('0x32')]=_[_0x7aee('0x31')](_0x7deae0[_0x7aee('0x2e')],qs['fields'](_0x5eaa62[_0x7aee('0x30')][_0x7aee('0x33')]));_0x5bf6b7[_0x7aee('0x32')]=_0x5bf6b7[_0x7aee('0x32')][_0x7aee('0x45')]?_0x5bf6b7[_0x7aee('0x32')]:_0x7deae0['model'];if(_0x5eaa62[_0x7aee('0x30')][_0x7aee('0x46')]){_0x5bf6b7['include']=[{'all':!![]}];}_0x5bf6b7=_[_0x7aee('0x3b')]({},_0x5bf6b7,_0x5eaa62[_0x7aee('0x3e')]);return db[_0x7aee('0x2a')]['find'](_0x5bf6b7)[_0x7aee('0x21')](handleEntityNotFound(_0x252aef,null))[_0x7aee('0x21')](respondWithResult(_0x252aef,null))[_0x7aee('0x42')](handleError(_0x252aef,null));};exports[_0x7aee('0x47')]=function(_0x2a85ae,_0xb56b45){return db['SquareDetailsReport']['create'](_0x2a85ae[_0x7aee('0x48')],{})[_0x7aee('0x21')](respondWithResult(_0xb56b45,0xc9))['catch'](handleError(_0xb56b45,null));};exports[_0x7aee('0x20')]=function(_0x3bc2c6,_0xcfac80){if(_0x3bc2c6[_0x7aee('0x48')]['id']){delete _0x3bc2c6['body']['id'];}return db[_0x7aee('0x2a')]['find']({'where':{'id':_0x3bc2c6[_0x7aee('0x49')]['id']}})[_0x7aee('0x21')](handleEntityNotFound(_0xcfac80,null))[_0x7aee('0x21')](saveUpdates(_0x3bc2c6[_0x7aee('0x48')],null))[_0x7aee('0x21')](respondWithResult(_0xcfac80,null))[_0x7aee('0x42')](handleError(_0xcfac80,null));};exports[_0x7aee('0x22')]=function(_0x2e7db9,_0x4e8a67){return db[_0x7aee('0x2a')]['find']({'where':{'id':_0x2e7db9[_0x7aee('0x49')]['id']}})[_0x7aee('0x21')](handleEntityNotFound(_0x4e8a67,null))[_0x7aee('0x21')](removeEntity(_0x4e8a67,null))['catch'](handleError(_0x4e8a67,null));};exports['describe']=function(_0x47db5d,_0x26e98a){return db[_0x7aee('0x2a')][_0x7aee('0x4a')]()[_0x7aee('0x21')](respondWithResult(_0x26e98a,null))['catch'](handleError(_0x26e98a,null));};
\ No newline at end of file
+var _0x7f5f=['limit','count','Content-Range','apply','reject','save','then','destroy','error','name','send','index','SquareDetailsReport','fieldName','key','map','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','type','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','length','find','create','body','update','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','status','end','json','offset','undefined'];(function(_0x109532,_0x449d66){var _0x3512d4=function(_0x31fc75){while(--_0x31fc75){_0x109532['push'](_0x109532['shift']());}};_0x3512d4(++_0x449d66);}(_0x7f5f,0x77));var _0xf7f5=function(_0x516ff0,_0x217cc1){_0x516ff0=_0x516ff0-0x0;var _0x2ec1df=_0x7f5f[_0x516ff0];return _0x2ec1df;};'use strict';var emlformat=require(_0xf7f5('0x0'));var rimraf=require(_0xf7f5('0x1'));var zipdir=require(_0xf7f5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf7f5('0x3'));var moment=require(_0xf7f5('0x4'));var BPromise=require(_0xf7f5('0x5'));var Mustache=require(_0xf7f5('0x6'));var util=require(_0xf7f5('0x7'));var path=require('path');var sox=require(_0xf7f5('0x8'));var csv=require('to-csv');var ejs=require(_0xf7f5('0x9'));var fs=require('fs');var fs_extra=require(_0xf7f5('0xa'));var _=require(_0xf7f5('0xb'));var squel=require(_0xf7f5('0xc'));var crypto=require(_0xf7f5('0xd'));var jsforce=require(_0xf7f5('0xe'));var deskjs=require(_0xf7f5('0xf'));var toCsv=require('to-csv');var querystring=require(_0xf7f5('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xf7f5('0x11'));var qs=require(_0xf7f5('0x12'));var as=require(_0xf7f5('0x13'));var hardwareService=require(_0xf7f5('0x14'));var logger=require('../../config/logger')(_0xf7f5('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x163ad9,_0x2f1655){_0x2f1655=_0x2f1655||0xcc;return function(_0x421a7b){if(_0x421a7b){return _0x163ad9['sendStatus'](_0x2f1655);}return _0x163ad9[_0xf7f5('0x16')](_0x2f1655)[_0xf7f5('0x17')]();};}function respondWithResult(_0x1db459,_0x56c0f9){_0x56c0f9=_0x56c0f9||0xc8;return function(_0x2fecee){if(_0x2fecee){return _0x1db459[_0xf7f5('0x16')](_0x56c0f9)[_0xf7f5('0x18')](_0x2fecee);}};}function respondWithFilteredResult(_0x50bf99,_0x3be656){return function(_0x3effdd){if(_0x3effdd){var _0x300287=typeof _0x3be656[_0xf7f5('0x19')]===_0xf7f5('0x1a')&&typeof _0x3be656[_0xf7f5('0x1b')]===_0xf7f5('0x1a');var _0x4c56c2=_0x3effdd['count'];var _0x2a9fe9=_0x300287?0x0:_0x3be656[_0xf7f5('0x19')];var _0x54ce82=_0x300287?_0x3effdd[_0xf7f5('0x1c')]:_0x3be656[_0xf7f5('0x19')]+_0x3be656[_0xf7f5('0x1b')];var _0x5a365e;if(_0x54ce82>=_0x4c56c2){_0x54ce82=_0x4c56c2;_0x5a365e=0xc8;}else{_0x5a365e=0xce;}_0x50bf99['status'](_0x5a365e);return _0x50bf99['set'](_0xf7f5('0x1d'),_0x2a9fe9+'-'+_0x54ce82+'/'+_0x4c56c2)['json'](_0x3effdd);}return null;};}function patchUpdates(_0x27ce59){return function(_0x222b9e){try{jsonpatch[_0xf7f5('0x1e')](_0x222b9e,_0x27ce59,!![]);}catch(_0x4087e6){return BPromise[_0xf7f5('0x1f')](_0x4087e6);}return _0x222b9e[_0xf7f5('0x20')]();};}function saveUpdates(_0x1b2078,_0x52d8d9){return function(_0x10fb59){if(_0x10fb59){return _0x10fb59['update'](_0x1b2078)[_0xf7f5('0x21')](function(_0x5aa976){return _0x5aa976;});}return null;};}function removeEntity(_0x59b6c4,_0x2f30d6){return function(_0x391743){if(_0x391743){return _0x391743[_0xf7f5('0x22')]()[_0xf7f5('0x21')](function(){_0x59b6c4['status'](0xcc)[_0xf7f5('0x17')]();});}};}function handleEntityNotFound(_0x4801a1,_0x118738){return function(_0x3db22d){if(!_0x3db22d){_0x4801a1['sendStatus'](0x194);}return _0x3db22d;};}function handleError(_0x3cad32,_0x5186d2){_0x5186d2=_0x5186d2||0x1f4;return function(_0x441b80){logger[_0xf7f5('0x23')](_0x441b80['stack']);if(_0x441b80[_0xf7f5('0x24')]){delete _0x441b80[_0xf7f5('0x24')];}_0x3cad32[_0xf7f5('0x16')](_0x5186d2)[_0xf7f5('0x25')](_0x441b80);};}exports[_0xf7f5('0x26')]=function(_0x34547c,_0x10be50){var _0x2b1815={},_0x3657f8={},_0xc68ba2={'count':0x0,'rows':[]};var _0x2cbb76=_['map'](db[_0xf7f5('0x27')]['rawAttributes'],function(_0x4d3752){return{'name':_0x4d3752[_0xf7f5('0x28')],'type':_0x4d3752['type'][_0xf7f5('0x29')]};});_0x3657f8['model']=_[_0xf7f5('0x2a')](_0x2cbb76,_0xf7f5('0x24'));_0x3657f8[_0xf7f5('0x2b')]=_[_0xf7f5('0x2c')](_0x34547c[_0xf7f5('0x2b')]);_0x3657f8[_0xf7f5('0x2d')]=_[_0xf7f5('0x2e')](_0x3657f8[_0xf7f5('0x2f')],_0x3657f8[_0xf7f5('0x2b')]);_0x2b1815[_0xf7f5('0x30')]=_[_0xf7f5('0x2e')](_0x3657f8[_0xf7f5('0x2f')],qs['fields'](_0x34547c[_0xf7f5('0x2b')][_0xf7f5('0x31')]));_0x2b1815[_0xf7f5('0x30')]=_0x2b1815['attributes']['length']?_0x2b1815[_0xf7f5('0x30')]:_0x3657f8[_0xf7f5('0x2f')];if(!_0x34547c[_0xf7f5('0x2b')][_0xf7f5('0x32')]('nolimit')){_0x2b1815['limit']=qs[_0xf7f5('0x1b')](_0x34547c[_0xf7f5('0x2b')][_0xf7f5('0x1b')]);_0x2b1815[_0xf7f5('0x19')]=qs[_0xf7f5('0x19')](_0x34547c['query'][_0xf7f5('0x19')]);}_0x2b1815[_0xf7f5('0x33')]=qs[_0xf7f5('0x34')](_0x34547c[_0xf7f5('0x2b')][_0xf7f5('0x34')]);_0x2b1815[_0xf7f5('0x35')]=qs[_0xf7f5('0x2d')](_[_0xf7f5('0x36')](_0x34547c[_0xf7f5('0x2b')],_0x3657f8[_0xf7f5('0x2d')]),_0x2cbb76);if(_0x34547c[_0xf7f5('0x2b')][_0xf7f5('0x37')]){_0x2b1815[_0xf7f5('0x35')]=_['merge'](_0x2b1815['where'],{'$or':_[_0xf7f5('0x2a')](_0x2cbb76,function(_0x34db6d){if(_0x34db6d[_0xf7f5('0x38')]!=='VIRTUAL'){var _0x3787e4={};_0x3787e4[_0x34db6d[_0xf7f5('0x24')]]={'$like':'%'+_0x34547c[_0xf7f5('0x2b')][_0xf7f5('0x37')]+'%'};return _0x3787e4;}})});}_0x2b1815=_[_0xf7f5('0x39')]({},_0x2b1815,_0x34547c[_0xf7f5('0x3a')]);var _0x337794={'where':_0x2b1815[_0xf7f5('0x35')]};return db['SquareDetailsReport']['count'](_0x337794)[_0xf7f5('0x21')](function(_0x1e9433){_0xc68ba2[_0xf7f5('0x1c')]=_0x1e9433;if(_0x34547c['query'][_0xf7f5('0x3b')]){_0x2b1815[_0xf7f5('0x3c')]=[{'all':!![]}];}return db[_0xf7f5('0x27')][_0xf7f5('0x3d')](_0x2b1815);})[_0xf7f5('0x21')](function(_0x109a3a){_0xc68ba2[_0xf7f5('0x3e')]=_0x109a3a;return _0xc68ba2;})['then'](respondWithFilteredResult(_0x10be50,_0x2b1815))[_0xf7f5('0x3f')](handleError(_0x10be50,null));};exports[_0xf7f5('0x40')]=function(_0x21f6e7,_0xc1e8d7){var _0x347a98={'raw':!![],'where':{'id':_0x21f6e7[_0xf7f5('0x41')]['id']}},_0x237617={};_0x237617[_0xf7f5('0x2f')]=_[_0xf7f5('0x2c')](db[_0xf7f5('0x27')][_0xf7f5('0x42')]);_0x237617[_0xf7f5('0x2b')]=_['keys'](_0x21f6e7['query']);_0x237617[_0xf7f5('0x2d')]=_[_0xf7f5('0x2e')](_0x237617[_0xf7f5('0x2f')],_0x237617['query']);_0x347a98[_0xf7f5('0x30')]=_[_0xf7f5('0x2e')](_0x237617['model'],qs[_0xf7f5('0x31')](_0x21f6e7['query'][_0xf7f5('0x31')]));_0x347a98[_0xf7f5('0x30')]=_0x347a98[_0xf7f5('0x30')][_0xf7f5('0x43')]?_0x347a98[_0xf7f5('0x30')]:_0x237617['model'];if(_0x21f6e7['query']['includeAll']){_0x347a98[_0xf7f5('0x3c')]=[{'all':!![]}];}_0x347a98=_[_0xf7f5('0x39')]({},_0x347a98,_0x21f6e7[_0xf7f5('0x3a')]);return db[_0xf7f5('0x27')][_0xf7f5('0x44')](_0x347a98)[_0xf7f5('0x21')](handleEntityNotFound(_0xc1e8d7,null))['then'](respondWithResult(_0xc1e8d7,null))[_0xf7f5('0x3f')](handleError(_0xc1e8d7,null));};exports['create']=function(_0x36ec77,_0x5753ca){return db[_0xf7f5('0x27')][_0xf7f5('0x45')](_0x36ec77[_0xf7f5('0x46')],{})[_0xf7f5('0x21')](respondWithResult(_0x5753ca,0xc9))['catch'](handleError(_0x5753ca,null));};exports[_0xf7f5('0x47')]=function(_0x393276,_0x25ecdd){if(_0x393276[_0xf7f5('0x46')]['id']){delete _0x393276[_0xf7f5('0x46')]['id'];}return db[_0xf7f5('0x27')]['find']({'where':{'id':_0x393276[_0xf7f5('0x41')]['id']}})[_0xf7f5('0x21')](handleEntityNotFound(_0x25ecdd,null))['then'](saveUpdates(_0x393276[_0xf7f5('0x46')],null))[_0xf7f5('0x21')](respondWithResult(_0x25ecdd,null))['catch'](handleError(_0x25ecdd,null));};exports[_0xf7f5('0x22')]=function(_0x2e4348,_0x388511){return db[_0xf7f5('0x27')][_0xf7f5('0x44')]({'where':{'id':_0x2e4348['params']['id']}})['then'](handleEntityNotFound(_0x388511,null))[_0xf7f5('0x21')](removeEntity(_0x388511,null))[_0xf7f5('0x3f')](handleError(_0x388511,null));};exports['describe']=function(_0x123a0f,_0x416415){return db[_0xf7f5('0x27')][_0xf7f5('0x48')]()[_0xf7f5('0x21')](respondWithResult(_0x416415,null))[_0xf7f5('0x3f')](handleError(_0x416415,null));};
\ No newline at end of file
index 0c3e186..7006a1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c7d=['bluebird','request-promise','path','rimraf','../../config/environment','./squareReportDetail.attributes','exports','SquareDetailsReport','report_square_details','lodash','../../config/logger','moment'];(function(_0x2d5f0,_0x3984bc){var _0x43b664=function(_0x2020ec){while(--_0x2020ec){_0x2d5f0['push'](_0x2d5f0['shift']());}};_0x43b664(++_0x3984bc);}(_0x8c7d,0xe1));var _0xd8c7=function(_0x4337e9,_0x320926){_0x4337e9=_0x4337e9-0x0;var _0x966467=_0x8c7d[_0x4337e9];return _0x966467;};'use strict';var _=require(_0xd8c7('0x0'));var util=require('util');var logger=require(_0xd8c7('0x1'))('api');var moment=require(_0xd8c7('0x2'));var BPromise=require(_0xd8c7('0x3'));var rp=require(_0xd8c7('0x4'));var fs=require('fs');var path=require(_0xd8c7('0x5'));var rimraf=require(_0xd8c7('0x6'));var config=require(_0xd8c7('0x7'));var attributes=require(_0xd8c7('0x8'));module[_0xd8c7('0x9')]=function(_0x3a2a12,_0x57c00f){return _0x3a2a12['define'](_0xd8c7('0xa'),attributes,{'tableName':_0xd8c7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x47be=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareReportDetail.attributes','SquareDetailsReport','lodash','util'];(function(_0x4c39a0,_0xdcf1dd){var _0x310903=function(_0x191b8c){while(--_0x191b8c){_0x4c39a0['push'](_0x4c39a0['shift']());}};_0x310903(++_0xdcf1dd);}(_0x47be,0x8d));var _0xe47b=function(_0xf1b134,_0xb399dd){_0xf1b134=_0xf1b134-0x0;var _0x139dbb=_0x47be[_0xf1b134];return _0x139dbb;};'use strict';var _=require(_0xe47b('0x0'));var util=require(_0xe47b('0x1'));var logger=require(_0xe47b('0x2'))('api');var moment=require(_0xe47b('0x3'));var BPromise=require(_0xe47b('0x4'));var rp=require(_0xe47b('0x5'));var fs=require('fs');var path=require(_0xe47b('0x6'));var rimraf=require(_0xe47b('0x7'));var config=require(_0xe47b('0x8'));var attributes=require(_0xe47b('0x9'));module['exports']=function(_0x3dcf15,_0x2af61b){return _0x3dcf15['define'](_0xe47b('0xa'),attributes,{'tableName':'report_square_details','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8178b36..3597d0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa32b=['create','body','CreateSquareDetailsReport','stringify','lodash','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','debug','request\x20sent','error','SquareDetailsReport,\x20%s,\x20%s','message','info','result','catch','SquareDetailsReport'];(function(_0x5e3a45,_0x45f0c5){var _0x13419f=function(_0x5ac996){while(--_0x5ac996){_0x5e3a45['push'](_0x5e3a45['shift']());}};_0x13419f(++_0x45f0c5);}(_0xa32b,0x68));var _0xba32=function(_0x3f670b,_0x10f414){_0x3f670b=_0x3f670b-0x0;var _0x1c0978=_0xa32b[_0x3f670b];return _0x1c0978;};'use strict';var _=require(_0xba32('0x0'));var util=require('util');var moment=require(_0xba32('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xba32('0x2'));var db=require(_0xba32('0x3'))['db'];var utils=require(_0xba32('0x4'));var logger=require('../../config/logger')(_0xba32('0x5'));var config=require(_0xba32('0x6'));var jayson=require(_0xba32('0x7'));var client=jayson[_0xba32('0x8')][_0xba32('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5c5a59,_0x1b1332,_0x4edbc6){return new BPromise(function(_0xcdcc5b,_0x13395b){return client[_0xba32('0xa')](_0x5c5a59,_0x4edbc6)[_0xba32('0xb')](function(_0x5d8f64){logger['info']('SquareDetailsReport,\x20%s,\x20%s',_0x1b1332,'request\x20sent');logger[_0xba32('0xc')]('SquareDetailsReport,\x20%s,\x20%s,\x20%s',_0x1b1332,_0xba32('0xd'),JSON['stringify'](_0x5d8f64));if(_0x5d8f64[_0xba32('0xe')]){if(_0x5d8f64['error']['code']===0x1f4){logger[_0xba32('0xe')](_0xba32('0xf'),_0x1b1332,_0x5d8f64[_0xba32('0xe')][_0xba32('0x10')]);return _0x13395b(_0x5d8f64[_0xba32('0xe')]['message']);}logger[_0xba32('0xe')](_0xba32('0xf'),_0x1b1332,_0x5d8f64[_0xba32('0xe')][_0xba32('0x10')]);return _0xcdcc5b(_0x5d8f64[_0xba32('0xe')][_0xba32('0x10')]);}else{logger[_0xba32('0x11')]('SquareDetailsReport,\x20%s,\x20%s',_0x1b1332,_0xba32('0xd'));_0xcdcc5b(_0x5d8f64[_0xba32('0x12')][_0xba32('0x10')]);}})[_0xba32('0x13')](function(_0x310dee){logger['error']('SquareDetailsReport,\x20%s,\x20%s',_0x1b1332,_0x310dee);_0x13395b(_0x310dee);});});}exports['CreateSquareDetailsReport']=function(_0x5c3fe6){var _0x234db9=this;return new Promise(function(_0x1ae3ea,_0x42803d){return db[_0xba32('0x14')][_0xba32('0x15')](_0x5c3fe6[_0xba32('0x16')],{'raw':_0x5c3fe6['options']?_0x5c3fe6['options']['raw']===undefined?!![]:![]:!![]})[_0xba32('0xb')](function(_0x51c43a){logger[_0xba32('0x11')](_0xba32('0x17'),_0x5c3fe6);logger[_0xba32('0xc')](_0xba32('0x17'),_0x5c3fe6,JSON[_0xba32('0x18')](_0x51c43a));_0x1ae3ea(_0x51c43a);})[_0xba32('0x13')](function(_0xdfa807){logger['error'](_0xba32('0x17'),_0xdfa807[_0xba32('0x10')],_0x5c3fe6);_0x42803d(_0x234db9[_0xba32('0xe')](0x1f4,_0xdfa807[_0xba32('0x10')]));});});};
\ No newline at end of file
+var _0x3264=['http','request','then','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','error','SquareDetailsReport,\x20%s,\x20%s','message','result','catch','SquareDetailsReport','create','body','options','raw','info','CreateSquareDetailsReport','stringify','util','moment','bluebird','randomstring','../../config/utils','../../config/environment','jayson/promise','client'];(function(_0x36b552,_0x4b0ead){var _0x2f0470=function(_0x17f08d){while(--_0x17f08d){_0x36b552['push'](_0x36b552['shift']());}};_0x2f0470(++_0x4b0ead);}(_0x3264,0x7f));var _0x4326=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x3264[_0x42cae2];return _0x5f256f;};'use strict';var _=require('lodash');var util=require(_0x4326('0x0'));var moment=require(_0x4326('0x1'));var BPromise=require(_0x4326('0x2'));var rs=require(_0x4326('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x4326('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x4326('0x5'));var jayson=require(_0x4326('0x6'));var client=jayson[_0x4326('0x7')][_0x4326('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x56bcce,_0x3a7544,_0x2993a1){return new BPromise(function(_0x22071c,_0x129365){return client[_0x4326('0x9')](_0x56bcce,_0x2993a1)[_0x4326('0xa')](function(_0x1609f){logger['info']('SquareDetailsReport,\x20%s,\x20%s',_0x3a7544,_0x4326('0xb'));logger[_0x4326('0xc')](_0x4326('0xd'),_0x3a7544,_0x4326('0xb'),JSON['stringify'](_0x1609f));if(_0x1609f['error']){if(_0x1609f[_0x4326('0xe')]['code']===0x1f4){logger[_0x4326('0xe')](_0x4326('0xf'),_0x3a7544,_0x1609f[_0x4326('0xe')]['message']);return _0x129365(_0x1609f['error'][_0x4326('0x10')]);}logger['error']('SquareDetailsReport,\x20%s,\x20%s',_0x3a7544,_0x1609f[_0x4326('0xe')][_0x4326('0x10')]);return _0x22071c(_0x1609f[_0x4326('0xe')][_0x4326('0x10')]);}else{logger['info'](_0x4326('0xf'),_0x3a7544,_0x4326('0xb'));_0x22071c(_0x1609f[_0x4326('0x11')]['message']);}})[_0x4326('0x12')](function(_0x40c169){logger[_0x4326('0xe')](_0x4326('0xf'),_0x3a7544,_0x40c169);_0x129365(_0x40c169);});});}exports['CreateSquareDetailsReport']=function(_0x425897){var _0x494d7b=this;return new Promise(function(_0x312f6d,_0x2b91b4){return db[_0x4326('0x13')][_0x4326('0x14')](_0x425897[_0x4326('0x15')],{'raw':_0x425897['options']?_0x425897[_0x4326('0x16')][_0x4326('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x377a83){logger[_0x4326('0x18')](_0x4326('0x19'),_0x425897);logger['debug'](_0x4326('0x19'),_0x425897,JSON[_0x4326('0x1a')](_0x377a83));_0x312f6d(_0x377a83);})[_0x4326('0x12')](function(_0x40012e){logger[_0x4326('0xe')](_0x4326('0x19'),_0x40012e[_0x4326('0x10')],_0x425897);_0x2b91b4(_0x494d7b[_0x4326('0xe')](0x1f4,_0x40012e['message']));});});};
\ No newline at end of file
index aeb995d..dfe37ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ed8=['express','Router','./system.controller','get','isAuthenticated','index','/process/:pid/kill','killProcess','exports'];(function(_0x481bf7,_0x437f69){var _0x461787=function(_0xb3bc9d){while(--_0xb3bc9d){_0x481bf7['push'](_0x481bf7['shift']());}};_0x461787(++_0x437f69);}(_0x5ed8,0x1cb));var _0x85ed=function(_0x2e04b6,_0xd8ff75){_0x2e04b6=_0x2e04b6-0x0;var _0x3ef5cc=_0x5ed8[_0x2e04b6];return _0x3ef5cc;};'use strict';var express=require(_0x85ed('0x0'));var router=express[_0x85ed('0x1')]();var auth=require('../../components/auth/service');var controller=require(_0x85ed('0x2'));router[_0x85ed('0x3')]('/',auth[_0x85ed('0x4')](),controller[_0x85ed('0x5')]);router[_0x85ed('0x3')](_0x85ed('0x6'),auth[_0x85ed('0x4')](),controller[_0x85ed('0x7')]);module[_0x85ed('0x8')]=router;
\ No newline at end of file
+var _0x440b=['../../components/auth/service','./system.controller','get','/process/:pid/kill','exports','Router'];(function(_0x1bcfa9,_0x5b27fe){var _0xc48ca8=function(_0x82abd5){while(--_0x82abd5){_0x1bcfa9['push'](_0x1bcfa9['shift']());}};_0xc48ca8(++_0x5b27fe);}(_0x440b,0x11f));var _0xb440=function(_0x1fd9e7,_0x24cdbe){_0x1fd9e7=_0x1fd9e7-0x0;var _0x1781f2=_0x440b[_0x1fd9e7];return _0x1781f2;};'use strict';var express=require('express');var router=express[_0xb440('0x0')]();var auth=require(_0xb440('0x1'));var controller=require(_0xb440('0x2'));router[_0xb440('0x3')]('/',auth['isAuthenticated'](),controller['index']);router[_0xb440('0x3')](_0xb440('0x4'),auth['isAuthenticated'](),controller['killProcess']);module[_0xb440('0x5')]=router;
\ No newline at end of file
index aa4a770..1b21e87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bc6=['killProcess','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','split','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','pid','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','systeminformation','exec','../../config/logger','api','util','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','status','send','getAllData','then','json'];(function(_0x3b632f,_0x453380){var _0x10e788=function(_0x2228a4){while(--_0x2228a4){_0x3b632f['push'](_0x3b632f['shift']());}};_0x10e788(++_0x453380);}(_0x5bc6,0xa7));var _0x65bc=function(_0x51e285,_0x5e35e7){_0x51e285=_0x51e285-0x0;var _0x3da75f=_0x5bc6[_0x51e285];return _0x3da75f;};'use strict';var info=require(_0x65bc('0x0'));var exec=require('child_process')[_0x65bc('0x1')];var logger=require(_0x65bc('0x2'))(_0x65bc('0x3'));var util=require(_0x65bc('0x4'));var BPromise=require(_0x65bc('0x5'));var _=require(_0x65bc('0x6'));function handleError(_0xac3114,_0x40ba6b,_0xa6d1a9){_0x40ba6b=_0x40ba6b||0x1f4;return function(_0x2f2af0){logger[_0x65bc('0x7')](_0x65bc('0x8'),_0xa6d1a9,_0x40ba6b,util[_0x65bc('0x9')](_0x2f2af0,{'showHidden':![],'depth':null}));delete _0x2f2af0['name'];_0xac3114[_0x65bc('0xa')](_0x40ba6b)[_0x65bc('0xb')](_0x2f2af0);};}exports['index']=function(_0x504c70,_0x16b9da){return info[_0x65bc('0xc')]()[_0x65bc('0xd')](function(_0x198411){return _0x16b9da[_0x65bc('0xa')](0xc8)['json'](_0x198411);})['catch'](function(_0x3577fb){return _0x16b9da[_0x65bc('0xa')](0x1f4)[_0x65bc('0xe')](_0x3577fb);});};exports[_0x65bc('0xf')]=function(_0x60a9c8,_0x8be42e){var _0x4abb54=['components/import/cm'];return new BPromise(function(_0x43da3c,_0x3e90f9){return exec(util[_0x65bc('0x10')](_0x65bc('0x11'),_0x60a9c8[_0x65bc('0x12')]['pid']),function(_0x363432,_0x1dc53a,_0x3f3413){if(_0x363432){return _0x3e90f9(_0x363432);}return _0x43da3c(_0x1dc53a);});})[_0x65bc('0xd')](function(_0x14773d){var _0x25f859=![];var _0x23ff4e=_0x14773d[_0x65bc('0x13')](/\n/);for(var _0x2ec500=0x0,_0x4d3ca2=_0x4abb54['length'];_0x2ec500<_0x4d3ca2,_0x25f859===![];_0x2ec500+=0x1){if(_0x14773d[_0x65bc('0x14')](_0x4abb54[_0x2ec500])>=0x0){_0x25f859=!![];}}if(!_0x25f859){throw new Error(util[_0x65bc('0x10')](_0x65bc('0x15'),_0x60a9c8[_0x65bc('0x12')][_0x65bc('0x16')]));}process[_0x65bc('0x17')](_0x60a9c8[_0x65bc('0x12')][_0x65bc('0x16')],_0x65bc('0x18'));return _0x8be42e[_0x65bc('0xa')](0xc8)['json']({'message':util[_0x65bc('0x10')](_0x65bc('0x19'),_0x60a9c8[_0x65bc('0x12')][_0x65bc('0x16')])});})['catch'](handleError(_0x8be42e,null,_0x65bc('0xf')));};
\ No newline at end of file
+var _0xa1b8=['components/import/cm','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid','split','length','indexOf','format','Process\x20with\x20pid\x20%s\x20not\x20found!','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','child_process','exec','../../config/logger','api','util','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','name','status','index','getAllData','then','json','catch'];(function(_0x1caf6a,_0x26a5bf){var _0x1bf493=function(_0x3982f5){while(--_0x3982f5){_0x1caf6a['push'](_0x1caf6a['shift']());}};_0x1bf493(++_0x26a5bf);}(_0xa1b8,0x119));var _0x8a1b=function(_0x5e39ed,_0x2f02bf){_0x5e39ed=_0x5e39ed-0x0;var _0x2b21f5=_0xa1b8[_0x5e39ed];return _0x2b21f5;};'use strict';var info=require('systeminformation');var exec=require(_0x8a1b('0x0'))[_0x8a1b('0x1')];var logger=require(_0x8a1b('0x2'))(_0x8a1b('0x3'));var util=require(_0x8a1b('0x4'));var BPromise=require(_0x8a1b('0x5'));var _=require(_0x8a1b('0x6'));function handleError(_0x4f7a26,_0x21f22b,_0x436d1a){_0x21f22b=_0x21f22b||0x1f4;return function(_0x559954){logger[_0x8a1b('0x7')](_0x8a1b('0x8'),_0x436d1a,_0x21f22b,util['inspect'](_0x559954,{'showHidden':![],'depth':null}));delete _0x559954[_0x8a1b('0x9')];_0x4f7a26[_0x8a1b('0xa')](_0x21f22b)['send'](_0x559954);};}exports[_0x8a1b('0xb')]=function(_0x4923b4,_0x197cc9){return info[_0x8a1b('0xc')]()[_0x8a1b('0xd')](function(_0x2a78b8){return _0x197cc9['status'](0xc8)[_0x8a1b('0xe')](_0x2a78b8);})[_0x8a1b('0xf')](function(_0x364032){return _0x197cc9[_0x8a1b('0xa')](0x1f4)[_0x8a1b('0xe')](_0x364032);});};exports['killProcess']=function(_0x22dcde,_0x20ef84){var _0x438cfe=[_0x8a1b('0x10')];return new BPromise(function(_0x11b954,_0x120e05){return exec(util['format'](_0x8a1b('0x11'),_0x22dcde[_0x8a1b('0x12')][_0x8a1b('0x13')]),function(_0x3ac50d,_0x11cc4d,_0x47722b){if(_0x3ac50d){return _0x120e05(_0x3ac50d);}return _0x11b954(_0x11cc4d);});})[_0x8a1b('0xd')](function(_0x32b26e){var _0xe1aa3b=![];var _0x55dd94=_0x32b26e[_0x8a1b('0x14')](/\n/);for(var _0x43c9df=0x0,_0x306a26=_0x438cfe[_0x8a1b('0x15')];_0x43c9df<_0x306a26,_0xe1aa3b===![];_0x43c9df+=0x1){if(_0x32b26e[_0x8a1b('0x16')](_0x438cfe[_0x43c9df])>=0x0){_0xe1aa3b=!![];}}if(!_0xe1aa3b){throw new Error(util[_0x8a1b('0x17')](_0x8a1b('0x18'),_0x22dcde['params']['pid']));}process['kill'](_0x22dcde[_0x8a1b('0x12')]['pid'],_0x8a1b('0x19'));return _0x20ef84[_0x8a1b('0xa')](0xc8)[_0x8a1b('0xe')]({'message':util[_0x8a1b('0x17')](_0x8a1b('0x1a'),_0x22dcde['params']['pid'])});})[_0x8a1b('0xf')](handleError(_0x20ef84,null,'killProcess'));};
\ No newline at end of file
index 80bed34..63d5858 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9916=['show','post','create','put','/:id','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./tag.controller','isAuthenticated','index','get'];(function(_0x1d3bbc,_0x47b303){var _0x1f0e96=function(_0x547a0c){while(--_0x547a0c){_0x1d3bbc['push'](_0x1d3bbc['shift']());}};_0x1f0e96(++_0x47b303);}(_0x9916,0x15c));var _0x6991=function(_0x4164d1,_0x38e72a){_0x4164d1=_0x4164d1-0x0;var _0x3e64d8=_0x9916[_0x4164d1];return _0x3e64d8;};'use strict';var multer=require(_0x6991('0x0'));var util=require(_0x6991('0x1'));var path=require(_0x6991('0x2'));var timeout=require(_0x6991('0x3'));var express=require(_0x6991('0x4'));var router=express[_0x6991('0x5')]();var fs_extra=require(_0x6991('0x6'));var auth=require(_0x6991('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x6991('0x8'));router['get']('/',auth[_0x6991('0x9')](),controller[_0x6991('0xa')]);router[_0x6991('0xb')]('/:id',auth['isAuthenticated'](),controller[_0x6991('0xc')]);router[_0x6991('0xd')]('/',auth[_0x6991('0x9')](),controller[_0x6991('0xe')]);router[_0x6991('0xf')](_0x6991('0x10'),auth[_0x6991('0x9')](),controller['update']);router['delete'](_0x6991('0x10'),auth[_0x6991('0x9')](),controller['destroy']);module[_0x6991('0x11')]=router;
\ No newline at end of file
+var _0xa6d1=['exports','multer','util','path','connect-timeout','../../components/auth/service','../../config/environment','./tag.controller','isAuthenticated','/:id','post','create','put','update','delete','destroy'];(function(_0x6853c0,_0x4a7b41){var _0x188db3=function(_0x5e0871){while(--_0x5e0871){_0x6853c0['push'](_0x6853c0['shift']());}};_0x188db3(++_0x4a7b41);}(_0xa6d1,0x1e1));var _0x1a6d=function(_0x5a1c43,_0x53d254){_0x5a1c43=_0x5a1c43-0x0;var _0x4bbbd3=_0xa6d1[_0x5a1c43];return _0x4bbbd3;};'use strict';var multer=require(_0x1a6d('0x0'));var util=require(_0x1a6d('0x1'));var path=require(_0x1a6d('0x2'));var timeout=require(_0x1a6d('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x1a6d('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x1a6d('0x5'));var controller=require(_0x1a6d('0x6'));router['get']('/',auth[_0x1a6d('0x7')](),controller['index']);router['get'](_0x1a6d('0x8'),auth[_0x1a6d('0x7')](),controller['show']);router[_0x1a6d('0x9')]('/',auth['isAuthenticated'](),controller[_0x1a6d('0xa')]);router[_0x1a6d('0xb')](_0x1a6d('0x8'),auth[_0x1a6d('0x7')](),controller[_0x1a6d('0xc')]);router[_0x1a6d('0xd')](_0x1a6d('0x8'),auth[_0x1a6d('0x7')](),controller[_0x1a6d('0xe')]);module[_0x1a6d('0xf')]=router;
\ No newline at end of file
index c9f0695..67723f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d58=['sequelize','exports','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2d58,0x186));var _0x82d5=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x2d58[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x82d5('0x0'));module[_0x82d5('0x1')]={'name':{'type':Sequelize[_0x82d5('0x2')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x82d5('0x2')],'defaultValue':'#0091EA'},'description':{'type':Sequelize[_0x82d5('0x2')]}};
\ No newline at end of file
+var _0x5eb1=['exports','STRING','name','#0091EA'];(function(_0x56de63,_0x274d1d){var _0x2e0cec=function(_0x363cdb){while(--_0x363cdb){_0x56de63['push'](_0x56de63['shift']());}};_0x2e0cec(++_0x274d1d);}(_0x5eb1,0x7c));var _0x15eb=function(_0x501ca1,_0x6c6edc){_0x501ca1=_0x501ca1-0x0;var _0x2a99c4=_0x5eb1[_0x501ca1];return _0x2a99c4;};'use strict';var Sequelize=require('sequelize');module[_0x15eb('0x0')]={'name':{'type':Sequelize[_0x15eb('0x1')],'unique':_0x15eb('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x15eb('0x1')],'defaultValue':_0x15eb('0x3')},'description':{'type':Sequelize[_0x15eb('0x1')]}};
\ No newline at end of file
index bda4129..3a422d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x593e=['UserProfileResource','error','name','send','index','map','Tag','fieldName','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','merge','type','includeAll','include','findAll','rows','catch','show','params','length','options','find','create','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../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','update','destroy','then','get','Tags'];(function(_0xb0de07,_0x3ca2a0){var _0x4633d8=function(_0x2368e0){while(--_0x2368e0){_0xb0de07['push'](_0xb0de07['shift']());}};_0x4633d8(++_0x3ca2a0);}(_0x593e,0xcb));var _0xe593=function(_0x4ebe5d,_0x14752f){_0x4ebe5d=_0x4ebe5d-0x0;var _0x2b937a=_0x593e[_0x4ebe5d];return _0x2b937a;};'use strict';var emlformat=require(_0xe593('0x0'));var rimraf=require(_0xe593('0x1'));var zipdir=require(_0xe593('0x2'));var jsonpatch=require(_0xe593('0x3'));var rp=require(_0xe593('0x4'));var moment=require(_0xe593('0x5'));var BPromise=require(_0xe593('0x6'));var Mustache=require(_0xe593('0x7'));var util=require('util');var path=require(_0xe593('0x8'));var sox=require(_0xe593('0x9'));var csv=require(_0xe593('0xa'));var ejs=require(_0xe593('0xb'));var fs=require('fs');var fs_extra=require(_0xe593('0xc'));var _=require(_0xe593('0xd'));var squel=require(_0xe593('0xe'));var crypto=require(_0xe593('0xf'));var jsforce=require(_0xe593('0x10'));var deskjs=require(_0xe593('0x11'));var toCsv=require('to-csv');var querystring=require(_0xe593('0x12'));var Papa=require(_0xe593('0x13'));var Redis=require(_0xe593('0x14'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe593('0x15'));var hardwareService=require(_0xe593('0x16'));var logger=require(_0xe593('0x17'))('api');var utils=require(_0xe593('0x18'));var config=require(_0xe593('0x19'));var licenseUtil=require(_0xe593('0x1a'));var db=require(_0xe593('0x1b'))['db'];function respondWithStatusCode(_0x8ee313,_0x31dad0){_0x31dad0=_0x31dad0||0xcc;return function(_0x24c9fd){if(_0x24c9fd){return _0x8ee313[_0xe593('0x1c')](_0x31dad0);}return _0x8ee313[_0xe593('0x1d')](_0x31dad0)[_0xe593('0x1e')]();};}function respondWithResult(_0x499819,_0x2907e4){_0x2907e4=_0x2907e4||0xc8;return function(_0x1de391){if(_0x1de391){return _0x499819['status'](_0x2907e4)[_0xe593('0x1f')](_0x1de391);}};}function respondWithFilteredResult(_0x44837b,_0x5d4c6a){return function(_0x2ae9b6){if(_0x2ae9b6){var _0x40416c=typeof _0x5d4c6a[_0xe593('0x20')]===_0xe593('0x21')&&typeof _0x5d4c6a[_0xe593('0x22')]===_0xe593('0x21');var _0x48f3b4=_0x2ae9b6[_0xe593('0x23')];var _0x470d07=_0x40416c?0x0:_0x5d4c6a['offset'];var _0xd1020e=_0x40416c?_0x2ae9b6[_0xe593('0x23')]:_0x5d4c6a['offset']+_0x5d4c6a[_0xe593('0x22')];var _0x3dba1b;if(_0xd1020e>=_0x48f3b4){_0xd1020e=_0x48f3b4;_0x3dba1b=0xc8;}else{_0x3dba1b=0xce;}_0x44837b[_0xe593('0x1d')](_0x3dba1b);return _0x44837b[_0xe593('0x24')](_0xe593('0x25'),_0x470d07+'-'+_0xd1020e+'/'+_0x48f3b4)[_0xe593('0x1f')](_0x2ae9b6);}return null;};}function patchUpdates(_0x3d2a51){return function(_0x4ea53f){try{jsonpatch['apply'](_0x4ea53f,_0x3d2a51,!![]);}catch(_0x1634d4){return BPromise['reject'](_0x1634d4);}return _0x4ea53f['save']();};}function saveUpdates(_0x1bb8e8,_0x3c65b5){return function(_0x57379d){if(_0x57379d){return _0x57379d[_0xe593('0x26')](_0x1bb8e8)['then'](function(_0x1672bf){return _0x1672bf;});}return null;};}function removeEntity(_0x2c191f,_0x185cea){return function(_0x44d997){if(_0x44d997){return _0x44d997[_0xe593('0x27')]()[_0xe593('0x28')](function(){var _0x20a098=_0x44d997[_0xe593('0x29')]({'plain':!![]});var _0x4fc483=_0xe593('0x2a');return db[_0xe593('0x2b')]['destroy']({'where':{'type':_0x4fc483,'resourceId':_0x20a098['id']}})['then'](function(){return _0x44d997;});})[_0xe593('0x28')](function(){_0x2c191f[_0xe593('0x1d')](0xcc)[_0xe593('0x1e')]();});}};}function handleEntityNotFound(_0x43699d,_0x3b66bc){return function(_0x27a3d2){if(!_0x27a3d2){_0x43699d['sendStatus'](0x194);}return _0x27a3d2;};}function handleError(_0x350e2b,_0x54e5e2){_0x54e5e2=_0x54e5e2||0x1f4;return function(_0x1dacf6){logger[_0xe593('0x2c')](_0x1dacf6['stack']);if(_0x1dacf6[_0xe593('0x2d')]){delete _0x1dacf6['name'];}_0x350e2b[_0xe593('0x1d')](_0x54e5e2)[_0xe593('0x2e')](_0x1dacf6);};}exports[_0xe593('0x2f')]=function(_0x501e54,_0x1ae8d9){var _0x13f44={},_0x3066ed={},_0x338222={'count':0x0,'rows':[]};var _0x2588be=_[_0xe593('0x30')](db[_0xe593('0x31')]['rawAttributes'],function(_0x4098a9){return{'name':_0x4098a9[_0xe593('0x32')],'type':_0x4098a9['type'][_0xe593('0x33')]};});_0x3066ed['model']=_[_0xe593('0x30')](_0x2588be,_0xe593('0x2d'));_0x3066ed[_0xe593('0x34')]=_[_0xe593('0x35')](_0x501e54[_0xe593('0x34')]);_0x3066ed[_0xe593('0x36')]=_[_0xe593('0x37')](_0x3066ed[_0xe593('0x38')],_0x3066ed[_0xe593('0x34')]);_0x13f44[_0xe593('0x39')]=_['intersection'](_0x3066ed[_0xe593('0x38')],qs[_0xe593('0x3a')](_0x501e54[_0xe593('0x34')]['fields']));_0x13f44['attributes']=_0x13f44[_0xe593('0x39')]['length']?_0x13f44[_0xe593('0x39')]:_0x3066ed[_0xe593('0x38')];if(!_0x501e54[_0xe593('0x34')][_0xe593('0x3b')](_0xe593('0x3c'))){_0x13f44[_0xe593('0x22')]=qs[_0xe593('0x22')](_0x501e54['query']['limit']);_0x13f44[_0xe593('0x20')]=qs['offset'](_0x501e54[_0xe593('0x34')]['offset']);}_0x13f44[_0xe593('0x3d')]=qs['sort'](_0x501e54['query'][_0xe593('0x3e')]);_0x13f44[_0xe593('0x3f')]=qs[_0xe593('0x36')](_['pick'](_0x501e54['query'],_0x3066ed['filters']),_0x2588be);if(_0x501e54[_0xe593('0x34')]['filter']){_0x13f44[_0xe593('0x3f')]=_[_0xe593('0x40')](_0x13f44[_0xe593('0x3f')],{'$or':_[_0xe593('0x30')](_0x2588be,function(_0x50249e){if(_0x50249e[_0xe593('0x41')]!=='VIRTUAL'){var _0x36c08e={};_0x36c08e[_0x50249e['name']]={'$like':'%'+_0x501e54['query']['filter']+'%'};return _0x36c08e;}})});}_0x13f44=_[_0xe593('0x40')]({},_0x13f44,_0x501e54['options']);var _0x3addf0={'where':_0x13f44[_0xe593('0x3f')]};return db[_0xe593('0x31')]['count'](_0x3addf0)[_0xe593('0x28')](function(_0x3f9784){_0x338222[_0xe593('0x23')]=_0x3f9784;if(_0x501e54[_0xe593('0x34')][_0xe593('0x42')]){_0x13f44[_0xe593('0x43')]=[{'all':!![]}];}return db[_0xe593('0x31')][_0xe593('0x44')](_0x13f44);})['then'](function(_0x211065){_0x338222[_0xe593('0x45')]=_0x211065;return _0x338222;})[_0xe593('0x28')](respondWithFilteredResult(_0x1ae8d9,_0x13f44))[_0xe593('0x46')](handleError(_0x1ae8d9,null));};exports[_0xe593('0x47')]=function(_0x4d3018,_0x4a9a5f){var _0x3fd874={'raw':!![],'where':{'id':_0x4d3018[_0xe593('0x48')]['id']}},_0x380429={};_0x380429['model']=_[_0xe593('0x35')](db[_0xe593('0x31')]['rawAttributes']);_0x380429['query']=_[_0xe593('0x35')](_0x4d3018[_0xe593('0x34')]);_0x380429[_0xe593('0x36')]=_['intersection'](_0x380429[_0xe593('0x38')],_0x380429[_0xe593('0x34')]);_0x3fd874[_0xe593('0x39')]=_[_0xe593('0x37')](_0x380429['model'],qs['fields'](_0x4d3018['query']['fields']));_0x3fd874[_0xe593('0x39')]=_0x3fd874['attributes'][_0xe593('0x49')]?_0x3fd874[_0xe593('0x39')]:_0x380429[_0xe593('0x38')];if(_0x4d3018[_0xe593('0x34')][_0xe593('0x42')]){_0x3fd874[_0xe593('0x43')]=[{'all':!![]}];}_0x3fd874=_[_0xe593('0x40')]({},_0x3fd874,_0x4d3018[_0xe593('0x4a')]);return db['Tag'][_0xe593('0x4b')](_0x3fd874)[_0xe593('0x28')](handleEntityNotFound(_0x4a9a5f,null))[_0xe593('0x28')](respondWithResult(_0x4a9a5f,null))['catch'](handleError(_0x4a9a5f,null));};exports[_0xe593('0x4c')]=function(_0x5dfdb1,_0x39ec9e){return db[_0xe593('0x31')][_0xe593('0x4c')](_0x5dfdb1['body'],{})['then'](function(_0x7431a3){var _0x45beb1=_0x5dfdb1['user']['get']({'plain':!![]});if(!_0x45beb1)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x45beb1['role']==='user'){var _0x383645=_0x7431a3[_0xe593('0x29')]({'plain':!![]});var _0x1ed8b5=_0xe593('0x2a');return db[_0xe593('0x4d')][_0xe593('0x4b')]({'where':{'name':_0x1ed8b5,'userProfileId':_0x45beb1[_0xe593('0x4e')]},'raw':!![]})[_0xe593('0x28')](function(_0x355ad8){if(_0x355ad8&&_0x355ad8[_0xe593('0x4f')]===0x0){return db[_0xe593('0x2b')][_0xe593('0x4c')]({'name':_0x383645[_0xe593('0x2d')],'resourceId':_0x383645['id'],'type':_0x355ad8[_0xe593('0x2d')],'sectionId':_0x355ad8['id']},{})[_0xe593('0x28')](function(){return _0x7431a3;});}else{return _0x7431a3;}})[_0xe593('0x46')](function(_0x5d60c3){logger[_0xe593('0x2c')](_0xe593('0x50'),_0x5d60c3);throw _0x5d60c3;});}return _0x7431a3;})[_0xe593('0x28')](respondWithResult(_0x39ec9e,0xc9))[_0xe593('0x46')](handleError(_0x39ec9e,null));};exports[_0xe593('0x26')]=function(_0x8130b2,_0x363643){if(_0x8130b2[_0xe593('0x51')]['id']){delete _0x8130b2[_0xe593('0x51')]['id'];}return db[_0xe593('0x31')][_0xe593('0x4b')]({'where':{'id':_0x8130b2[_0xe593('0x48')]['id']}})[_0xe593('0x28')](handleEntityNotFound(_0x363643,null))[_0xe593('0x28')](saveUpdates(_0x8130b2[_0xe593('0x51')],null))['then'](respondWithResult(_0x363643,null))[_0xe593('0x46')](handleError(_0x363643,null));};exports[_0xe593('0x27')]=function(_0x142d0f,_0x24d061){return db[_0xe593('0x31')]['find']({'where':{'id':_0x142d0f['params']['id']}})[_0xe593('0x28')](handleEntityNotFound(_0x24d061,null))[_0xe593('0x28')](removeEntity(_0x24d061,null))[_0xe593('0x46')](handleError(_0x24d061,null));};
\ No newline at end of file
+var _0x1be1=['bluebird','mustache','util','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','Tags','destroy','sendStatus','error','stack','name','send','index','map','Tag','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','include','findAll','rows','show','options','find','catch','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','zip-dir','fast-json-patch','moment'];(function(_0x1233a3,_0x3110fa){var _0x5c9b8f=function(_0x158275){while(--_0x158275){_0x1233a3['push'](_0x1233a3['shift']());}};_0x5c9b8f(++_0x3110fa);}(_0x1be1,0x192));var _0x11be=function(_0x5b115b,_0x401506){_0x5b115b=_0x5b115b-0x0;var _0x399dfd=_0x1be1[_0x5b115b];return _0x399dfd;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x11be('0x0'));var jsonpatch=require(_0x11be('0x1'));var rp=require('request-promise');var moment=require(_0x11be('0x2'));var BPromise=require(_0x11be('0x3'));var Mustache=require(_0x11be('0x4'));var util=require(_0x11be('0x5'));var path=require('path');var sox=require(_0x11be('0x6'));var csv=require(_0x11be('0x7'));var ejs=require(_0x11be('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x11be('0x9'));var squel=require('squel');var crypto=require(_0x11be('0xa'));var jsforce=require(_0x11be('0xb'));var deskjs=require(_0x11be('0xc'));var toCsv=require(_0x11be('0x7'));var querystring=require(_0x11be('0xd'));var Papa=require('papaparse');var Redis=require(_0x11be('0xe'));var authService=require(_0x11be('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x11be('0x10'));var hardwareService=require(_0x11be('0x11'));var logger=require(_0x11be('0x12'))(_0x11be('0x13'));var utils=require('../../config/utils');var config=require(_0x11be('0x14'));var licenseUtil=require(_0x11be('0x15'));var db=require(_0x11be('0x16'))['db'];function respondWithStatusCode(_0x4b36c8,_0x3ff31f){_0x3ff31f=_0x3ff31f||0xcc;return function(_0x2dad05){if(_0x2dad05){return _0x4b36c8['sendStatus'](_0x3ff31f);}return _0x4b36c8[_0x11be('0x17')](_0x3ff31f)['end']();};}function respondWithResult(_0x49228e,_0x569842){_0x569842=_0x569842||0xc8;return function(_0x4b6e7e){if(_0x4b6e7e){return _0x49228e['status'](_0x569842)['json'](_0x4b6e7e);}};}function respondWithFilteredResult(_0x588871,_0x2280e2){return function(_0x52bbef){if(_0x52bbef){var _0x31047c=typeof _0x2280e2[_0x11be('0x18')]===_0x11be('0x19')&&typeof _0x2280e2[_0x11be('0x1a')]==='undefined';var _0x2ed725=_0x52bbef[_0x11be('0x1b')];var _0x56ab61=_0x31047c?0x0:_0x2280e2[_0x11be('0x18')];var _0xc3263c=_0x31047c?_0x52bbef[_0x11be('0x1b')]:_0x2280e2['offset']+_0x2280e2['limit'];var _0x141391;if(_0xc3263c>=_0x2ed725){_0xc3263c=_0x2ed725;_0x141391=0xc8;}else{_0x141391=0xce;}_0x588871[_0x11be('0x17')](_0x141391);return _0x588871[_0x11be('0x1c')](_0x11be('0x1d'),_0x56ab61+'-'+_0xc3263c+'/'+_0x2ed725)['json'](_0x52bbef);}return null;};}function patchUpdates(_0x12a5bd){return function(_0x45136f){try{jsonpatch[_0x11be('0x1e')](_0x45136f,_0x12a5bd,!![]);}catch(_0x452315){return BPromise[_0x11be('0x1f')](_0x452315);}return _0x45136f[_0x11be('0x20')]();};}function saveUpdates(_0xa944ac,_0x17678d){return function(_0x3aea14){if(_0x3aea14){return _0x3aea14[_0x11be('0x21')](_0xa944ac)['then'](function(_0xfe3737){return _0xfe3737;});}return null;};}function removeEntity(_0x46b7c2,_0x2fe43c){return function(_0x5d1690){if(_0x5d1690){return _0x5d1690['destroy']()[_0x11be('0x22')](function(){var _0x10ce04=_0x5d1690[_0x11be('0x23')]({'plain':!![]});var _0x4cb27f=_0x11be('0x24');return db['UserProfileResource'][_0x11be('0x25')]({'where':{'type':_0x4cb27f,'resourceId':_0x10ce04['id']}})['then'](function(){return _0x5d1690;});})[_0x11be('0x22')](function(){_0x46b7c2[_0x11be('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x48029b,_0x28b3a0){return function(_0x1d3b5c){if(!_0x1d3b5c){_0x48029b[_0x11be('0x26')](0x194);}return _0x1d3b5c;};}function handleError(_0x30427b,_0x17c67f){_0x17c67f=_0x17c67f||0x1f4;return function(_0xf5a6ac){logger[_0x11be('0x27')](_0xf5a6ac[_0x11be('0x28')]);if(_0xf5a6ac['name']){delete _0xf5a6ac[_0x11be('0x29')];}_0x30427b['status'](_0x17c67f)[_0x11be('0x2a')](_0xf5a6ac);};}exports[_0x11be('0x2b')]=function(_0x510476,_0x584d4c){var _0x49fd5c={},_0x265fc9={},_0x5e8f9a={'count':0x0,'rows':[]};var _0x66316d=_[_0x11be('0x2c')](db[_0x11be('0x2d')][_0x11be('0x2e')],function(_0x25e214){return{'name':_0x25e214[_0x11be('0x2f')],'type':_0x25e214['type'][_0x11be('0x30')]};});_0x265fc9[_0x11be('0x31')]=_[_0x11be('0x2c')](_0x66316d,_0x11be('0x29'));_0x265fc9[_0x11be('0x32')]=_[_0x11be('0x33')](_0x510476['query']);_0x265fc9[_0x11be('0x34')]=_[_0x11be('0x35')](_0x265fc9[_0x11be('0x31')],_0x265fc9[_0x11be('0x32')]);_0x49fd5c[_0x11be('0x36')]=_['intersection'](_0x265fc9[_0x11be('0x31')],qs[_0x11be('0x37')](_0x510476[_0x11be('0x32')]['fields']));_0x49fd5c[_0x11be('0x36')]=_0x49fd5c['attributes']['length']?_0x49fd5c['attributes']:_0x265fc9['model'];if(!_0x510476[_0x11be('0x32')][_0x11be('0x38')](_0x11be('0x39'))){_0x49fd5c['limit']=qs[_0x11be('0x1a')](_0x510476[_0x11be('0x32')]['limit']);_0x49fd5c[_0x11be('0x18')]=qs['offset'](_0x510476[_0x11be('0x32')]['offset']);}_0x49fd5c[_0x11be('0x3a')]=qs[_0x11be('0x3b')](_0x510476[_0x11be('0x32')][_0x11be('0x3b')]);_0x49fd5c['where']=qs[_0x11be('0x34')](_[_0x11be('0x3c')](_0x510476[_0x11be('0x32')],_0x265fc9[_0x11be('0x34')]),_0x66316d);if(_0x510476['query'][_0x11be('0x3d')]){_0x49fd5c[_0x11be('0x3e')]=_[_0x11be('0x3f')](_0x49fd5c[_0x11be('0x3e')],{'$or':_[_0x11be('0x2c')](_0x66316d,function(_0x1b1aac){if(_0x1b1aac[_0x11be('0x40')]!=='VIRTUAL'){var _0x2618f5={};_0x2618f5[_0x1b1aac[_0x11be('0x29')]]={'$like':'%'+_0x510476['query'][_0x11be('0x3d')]+'%'};return _0x2618f5;}})});}_0x49fd5c=_[_0x11be('0x3f')]({},_0x49fd5c,_0x510476['options']);var _0x30b67a={'where':_0x49fd5c['where']};return db[_0x11be('0x2d')]['count'](_0x30b67a)[_0x11be('0x22')](function(_0x30be21){_0x5e8f9a['count']=_0x30be21;if(_0x510476[_0x11be('0x32')]['includeAll']){_0x49fd5c[_0x11be('0x41')]=[{'all':!![]}];}return db[_0x11be('0x2d')][_0x11be('0x42')](_0x49fd5c);})[_0x11be('0x22')](function(_0x2b847a){_0x5e8f9a[_0x11be('0x43')]=_0x2b847a;return _0x5e8f9a;})[_0x11be('0x22')](respondWithFilteredResult(_0x584d4c,_0x49fd5c))['catch'](handleError(_0x584d4c,null));};exports[_0x11be('0x44')]=function(_0x18cddf,_0x9610a1){var _0x317e2d={'raw':!![],'where':{'id':_0x18cddf['params']['id']}},_0x589ac4={};_0x589ac4['model']=_[_0x11be('0x33')](db['Tag'][_0x11be('0x2e')]);_0x589ac4['query']=_[_0x11be('0x33')](_0x18cddf[_0x11be('0x32')]);_0x589ac4[_0x11be('0x34')]=_[_0x11be('0x35')](_0x589ac4[_0x11be('0x31')],_0x589ac4[_0x11be('0x32')]);_0x317e2d[_0x11be('0x36')]=_['intersection'](_0x589ac4[_0x11be('0x31')],qs['fields'](_0x18cddf[_0x11be('0x32')][_0x11be('0x37')]));_0x317e2d[_0x11be('0x36')]=_0x317e2d['attributes']['length']?_0x317e2d['attributes']:_0x589ac4[_0x11be('0x31')];if(_0x18cddf[_0x11be('0x32')]['includeAll']){_0x317e2d['include']=[{'all':!![]}];}_0x317e2d=_['merge']({},_0x317e2d,_0x18cddf[_0x11be('0x45')]);return db[_0x11be('0x2d')][_0x11be('0x46')](_0x317e2d)[_0x11be('0x22')](handleEntityNotFound(_0x9610a1,null))[_0x11be('0x22')](respondWithResult(_0x9610a1,null))[_0x11be('0x47')](handleError(_0x9610a1,null));};exports[_0x11be('0x48')]=function(_0x3f2070,_0x2ce110){return db[_0x11be('0x2d')][_0x11be('0x48')](_0x3f2070['body'],{})[_0x11be('0x22')](function(_0x29f82f){var _0x534ee7=_0x3f2070['user']['get']({'plain':!![]});if(!_0x534ee7)throw new Error(_0x11be('0x49'));if(_0x534ee7['role']===_0x11be('0x4a')){var _0x1c1626=_0x29f82f[_0x11be('0x23')]({'plain':!![]});var _0x1fb48d=_0x11be('0x24');return db[_0x11be('0x4b')][_0x11be('0x46')]({'where':{'name':_0x1fb48d,'userProfileId':_0x534ee7[_0x11be('0x4c')]},'raw':!![]})[_0x11be('0x22')](function(_0x4c873a){if(_0x4c873a&&_0x4c873a[_0x11be('0x4d')]===0x0){return db['UserProfileResource'][_0x11be('0x48')]({'name':_0x1c1626[_0x11be('0x29')],'resourceId':_0x1c1626['id'],'type':_0x4c873a['name'],'sectionId':_0x4c873a['id']},{})[_0x11be('0x22')](function(){return _0x29f82f;});}else{return _0x29f82f;}})[_0x11be('0x47')](function(_0x4c0e37){logger[_0x11be('0x27')](_0x11be('0x4e'),_0x4c0e37);throw _0x4c0e37;});}return _0x29f82f;})['then'](respondWithResult(_0x2ce110,0xc9))['catch'](handleError(_0x2ce110,null));};exports[_0x11be('0x21')]=function(_0x2886ac,_0x50eeab){if(_0x2886ac['body']['id']){delete _0x2886ac[_0x11be('0x4f')]['id'];}return db[_0x11be('0x2d')][_0x11be('0x46')]({'where':{'id':_0x2886ac['params']['id']}})['then'](handleEntityNotFound(_0x50eeab,null))['then'](saveUpdates(_0x2886ac[_0x11be('0x4f')],null))[_0x11be('0x22')](respondWithResult(_0x50eeab,null))[_0x11be('0x47')](handleError(_0x50eeab,null));};exports['destroy']=function(_0x4db963,_0x33409c){return db[_0x11be('0x2d')][_0x11be('0x46')]({'where':{'id':_0x4db963[_0x11be('0x50')]['id']}})['then'](handleEntityNotFound(_0x33409c,null))[_0x11be('0x22')](removeEntity(_0x33409c,null))['catch'](handleError(_0x33409c,null));};
\ No newline at end of file
index 80e2368..9e78e6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d35=['lodash','util','api','moment','request-promise','path','rimraf','../../config/environment','./tag.attributes','Tag','tools_tags'];(function(_0x38230,_0x148d0c){var _0x522ec9=function(_0x21fefc){while(--_0x21fefc){_0x38230['push'](_0x38230['shift']());}};_0x522ec9(++_0x148d0c);}(_0x6d35,0xa5));var _0x56d3=function(_0x57486e,_0x32283b){_0x57486e=_0x57486e-0x0;var _0x5f110b=_0x6d35[_0x57486e];return _0x5f110b;};'use strict';var _=require(_0x56d3('0x0'));var util=require(_0x56d3('0x1'));var logger=require('../../config/logger')(_0x56d3('0x2'));var moment=require(_0x56d3('0x3'));var BPromise=require('bluebird');var rp=require(_0x56d3('0x4'));var fs=require('fs');var path=require(_0x56d3('0x5'));var rimraf=require(_0x56d3('0x6'));var config=require(_0x56d3('0x7'));var attributes=require(_0x56d3('0x8'));module['exports']=function(_0x49805f,_0x3b9b3a){return _0x49805f['define'](_0x56d3('0x9'),attributes,{'tableName':_0x56d3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe29e=['Tag','tools_tags','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0xd6a35e,_0x39f4d4){var _0x2f1d39=function(_0x30c9a7){while(--_0x30c9a7){_0xd6a35e['push'](_0xd6a35e['shift']());}};_0x2f1d39(++_0x39f4d4);}(_0xe29e,0x188));var _0xee29=function(_0x5b4341,_0x4b1c30){_0x5b4341=_0x5b4341-0x0;var _0x241ef7=_0xe29e[_0x5b4341];return _0x241ef7;};'use strict';var _=require('lodash');var util=require(_0xee29('0x0'));var logger=require(_0xee29('0x1'))(_0xee29('0x2'));var moment=require(_0xee29('0x3'));var BPromise=require(_0xee29('0x4'));var rp=require(_0xee29('0x5'));var fs=require('fs');var path=require(_0xee29('0x6'));var rimraf=require(_0xee29('0x7'));var config=require(_0xee29('0x8'));var attributes=require('./tag.attributes');module[_0xee29('0x9')]=function(_0x15b7c1,_0x1f503a){return _0x15b7c1[_0xee29('0xa')](_0xee29('0xb'),attributes,{'tableName':_0xee29('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4a30b44..0568b6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde64=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','request','then','info','Tag,\x20%s,\x20%s','request\x20sent','Tag,\x20%s,\x20%s,\x20%s','stringify','error','message','catch'];(function(_0x3bf0c0,_0x4696ba){var _0x2a511a=function(_0x2f4a6e){while(--_0x2f4a6e){_0x3bf0c0['push'](_0x3bf0c0['shift']());}};_0x2a511a(++_0x4696ba);}(_0xde64,0x17c));var _0x4de6=function(_0x1579b4,_0x5a5ec){_0x1579b4=_0x1579b4-0x0;var _0x4cdfdc=_0xde64[_0x1579b4];return _0x4cdfdc;};'use strict';var _=require(_0x4de6('0x0'));var util=require(_0x4de6('0x1'));var moment=require(_0x4de6('0x2'));var BPromise=require(_0x4de6('0x3'));var rs=require(_0x4de6('0x4'));var fs=require('fs');var Redis=require(_0x4de6('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x4de6('0x6'));var logger=require(_0x4de6('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x4de6('0x8'));var client=jayson[_0x4de6('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x568496,_0x24edef,_0x35ae72){return new BPromise(function(_0x475fb9,_0x248e39){return client[_0x4de6('0xa')](_0x568496,_0x35ae72)[_0x4de6('0xb')](function(_0x48a974){logger[_0x4de6('0xc')](_0x4de6('0xd'),_0x24edef,_0x4de6('0xe'));logger['debug'](_0x4de6('0xf'),_0x24edef,_0x4de6('0xe'),JSON[_0x4de6('0x10')](_0x48a974));if(_0x48a974[_0x4de6('0x11')]){if(_0x48a974[_0x4de6('0x11')]['code']===0x1f4){logger[_0x4de6('0x11')](_0x4de6('0xd'),_0x24edef,_0x48a974[_0x4de6('0x11')]['message']);return _0x248e39(_0x48a974[_0x4de6('0x11')][_0x4de6('0x12')]);}logger[_0x4de6('0x11')](_0x4de6('0xd'),_0x24edef,_0x48a974['error'][_0x4de6('0x12')]);return _0x475fb9(_0x48a974[_0x4de6('0x11')][_0x4de6('0x12')]);}else{logger['info'](_0x4de6('0xd'),_0x24edef,'request\x20sent');_0x475fb9(_0x48a974['result'][_0x4de6('0x12')]);}})[_0x4de6('0x13')](function(_0x6dbcf3){logger[_0x4de6('0x11')](_0x4de6('0xd'),_0x24edef,_0x6dbcf3);_0x248e39(_0x6dbcf3);});});}
\ No newline at end of file
+var _0xe5b3=['request\x20sent','debug','Tag,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','Tag,\x20%s,\x20%s'];(function(_0x117576,_0x1ced1a){var _0x4533f5=function(_0x19bc33){while(--_0x19bc33){_0x117576['push'](_0x117576['shift']());}};_0x4533f5(++_0x1ced1a);}(_0xe5b3,0x133));var _0x3e5b=function(_0x1f06c5,_0x28092b){_0x1f06c5=_0x1f06c5-0x0;var _0x1ec9b2=_0xe5b3[_0x1f06c5];return _0x1ec9b2;};'use strict';var _=require('lodash');var util=require(_0x3e5b('0x0'));var moment=require(_0x3e5b('0x1'));var BPromise=require(_0x3e5b('0x2'));var rs=require(_0x3e5b('0x3'));var fs=require('fs');var Redis=require(_0x3e5b('0x4'));var db=require(_0x3e5b('0x5'))['db'];var utils=require(_0x3e5b('0x6'));var logger=require(_0x3e5b('0x7'))(_0x3e5b('0x8'));var config=require(_0x3e5b('0x9'));var jayson=require(_0x3e5b('0xa'));var client=jayson['client'][_0x3e5b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5dcf55,_0x534e7d,_0x41d46f){return new BPromise(function(_0x3901c2,_0x3c7c2e){return client[_0x3e5b('0xc')](_0x5dcf55,_0x41d46f)['then'](function(_0x4ed6bc){logger[_0x3e5b('0xd')](_0x3e5b('0xe'),_0x534e7d,_0x3e5b('0xf'));logger[_0x3e5b('0x10')](_0x3e5b('0x11'),_0x534e7d,'request\x20sent',JSON[_0x3e5b('0x12')](_0x4ed6bc));if(_0x4ed6bc['error']){if(_0x4ed6bc[_0x3e5b('0x13')][_0x3e5b('0x14')]===0x1f4){logger[_0x3e5b('0x13')](_0x3e5b('0xe'),_0x534e7d,_0x4ed6bc[_0x3e5b('0x13')][_0x3e5b('0x15')]);return _0x3c7c2e(_0x4ed6bc[_0x3e5b('0x13')]['message']);}logger[_0x3e5b('0x13')]('Tag,\x20%s,\x20%s',_0x534e7d,_0x4ed6bc['error']['message']);return _0x3901c2(_0x4ed6bc[_0x3e5b('0x13')][_0x3e5b('0x15')]);}else{logger[_0x3e5b('0xd')]('Tag,\x20%s,\x20%s',_0x534e7d,_0x3e5b('0xf'));_0x3901c2(_0x4ed6bc['result']['message']);}})[_0x3e5b('0x16')](function(_0x11b41b){logger['error'](_0x3e5b('0xe'),_0x534e7d,_0x11b41b);_0x3c7c2e(_0x11b41b);});});}
\ No newline at end of file
index bafa17d..d5d006a 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(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0xa9e0[_0x1b828b];return _0x98da1a;};'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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0xa9e0[_0x139a3c];return _0x2b375b;};'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 90a5967..7f4c631 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['exports','STRING'];(function(_0x500791,_0x34f94a){var _0x1b1842=function(_0x40a33e){while(--_0x40a33e){_0x500791['push'](_0x500791['shift']());}};_0x1b1842(++_0x34f94a);}(_0x757a,0xde));var _0xa757=function(_0x3575f7,_0x588e81){_0x3575f7=_0x3575f7-0x0;var _0x17ea08=_0x757a[_0x3575f7];return _0x17ea08;};'use strict';var Sequelize=require('sequelize');module[_0xa757('0x0')]={'name':{'type':Sequelize[_0xa757('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x2032=['name','exports','STRING'];(function(_0xf7c901,_0x45c81a){var _0x185a8c=function(_0x466ed6){while(--_0x466ed6){_0xf7c901['push'](_0xf7c901['shift']());}};_0x185a8c(++_0x45c81a);}(_0x2032,0xd9));var _0x2203=function(_0x14f875,_0x1afd8b){_0x14f875=_0x14f875-0x0;var _0x49f78b=_0x2032[_0x14f875];return _0x49f78b;};'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 052d6be..68abcc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cf5=['filter','merge','map','VIRTUAL','options','rows','catch','show','params','includeAll','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','destroy','getQueues','findOne','isValidChannel','channel','Sequelize','ValidationError','Unknown\x20channel','capitalize','toLowerCase','Queue','Queues','addQueues','add','ids','removeQueues','remove','addAgents','Voice','Chat','Fax','Openchannel','Whatsapp','transaction','through','penalty','QueueId','TeamVoiceQueue','User','findOrCreate','emit','Queue:save','findAll','online','interface','UserVoiceQueueRt','upsert','isNil','voicePause','all','spread','Sms','sequelize','parse','removeAgents','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','ejs','lodash','squel','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./team.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','get','Teams','UserProfileResource','error','stack','name','send','index','Team','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x6cf5,0x1cf));var _0x56cf=function(_0x703dd4,_0x45647e){_0x703dd4=_0x703dd4-0x0;var _0x1f6ead=_0x6cf5[_0x703dd4];return _0x1f6ead;};'use strict';var emlformat=require(_0x56cf('0x0'));var rimraf=require(_0x56cf('0x1'));var zipdir=require(_0x56cf('0x2'));var jsonpatch=require(_0x56cf('0x3'));var rp=require('request-promise');var moment=require(_0x56cf('0x4'));var BPromise=require(_0x56cf('0x5'));var Mustache=require(_0x56cf('0x6'));var util=require(_0x56cf('0x7'));var path=require('path');var sox=require(_0x56cf('0x8'));var csv=require('to-csv');var ejs=require(_0x56cf('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x56cf('0xa'));var squel=require(_0x56cf('0xb'));var crypto=require('crypto');var jsforce=require(_0x56cf('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x56cf('0xd'));var authService=require(_0x56cf('0xe'));var qs=require(_0x56cf('0xf'));var as=require(_0x56cf('0x10'));var hardwareService=require(_0x56cf('0x11'));var logger=require(_0x56cf('0x12'))('api');var utils=require(_0x56cf('0x13'));var config=require(_0x56cf('0x14'));var licenseUtil=require(_0x56cf('0x15'));var db=require(_0x56cf('0x16'))['db'];config[_0x56cf('0x17')]=_[_0x56cf('0x18')](config[_0x56cf('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x56cf('0x19'))(new Redis(config[_0x56cf('0x17')]));require(_0x56cf('0x1a'))[_0x56cf('0x1b')](socket);function respondWithStatusCode(_0xf3ecfc,_0x695b1){_0x695b1=_0x695b1||0xcc;return function(_0x4f3a6d){if(_0x4f3a6d){return _0xf3ecfc[_0x56cf('0x1c')](_0x695b1);}return _0xf3ecfc[_0x56cf('0x1d')](_0x695b1)[_0x56cf('0x1e')]();};}function respondWithResult(_0x2ad2cb,_0x17d979){_0x17d979=_0x17d979||0xc8;return function(_0x519e1b){if(_0x519e1b){return _0x2ad2cb[_0x56cf('0x1d')](_0x17d979)[_0x56cf('0x1f')](_0x519e1b);}};}function respondWithFilteredResult(_0x123d02,_0x340479){return function(_0x2e0578){if(_0x2e0578){var _0x3da10f=typeof _0x340479[_0x56cf('0x20')]===_0x56cf('0x21')&&typeof _0x340479[_0x56cf('0x22')]==='undefined';var _0x45487f=_0x2e0578[_0x56cf('0x23')];var _0x44b16a=_0x3da10f?0x0:_0x340479[_0x56cf('0x20')];var _0x2b676f=_0x3da10f?_0x2e0578[_0x56cf('0x23')]:_0x340479[_0x56cf('0x20')]+_0x340479[_0x56cf('0x22')];var _0x41a9e1;if(_0x2b676f>=_0x45487f){_0x2b676f=_0x45487f;_0x41a9e1=0xc8;}else{_0x41a9e1=0xce;}_0x123d02[_0x56cf('0x1d')](_0x41a9e1);return _0x123d02[_0x56cf('0x24')](_0x56cf('0x25'),_0x44b16a+'-'+_0x2b676f+'/'+_0x45487f)[_0x56cf('0x1f')](_0x2e0578);}return null;};}function patchUpdates(_0x2e6ea7){return function(_0x277af9){try{jsonpatch[_0x56cf('0x26')](_0x277af9,_0x2e6ea7,!![]);}catch(_0x250e9f){return BPromise[_0x56cf('0x27')](_0x250e9f);}return _0x277af9[_0x56cf('0x28')]();};}function saveUpdates(_0xe2f856,_0x40f85e){return function(_0x2721bb){if(_0x2721bb){return _0x2721bb['update'](_0xe2f856)[_0x56cf('0x29')](function(_0x3f3a3b){return _0x3f3a3b;});}return null;};}function removeEntity(_0x571bd3,_0x4ee65a){return function(_0x3ca1b3){if(_0x3ca1b3){return _0x3ca1b3['destroy']()[_0x56cf('0x29')](function(){var _0x608c4d=_0x3ca1b3[_0x56cf('0x2a')]({'plain':!![]});var _0x712876=_0x56cf('0x2b');return db[_0x56cf('0x2c')]['destroy']({'where':{'type':_0x712876,'resourceId':_0x608c4d['id']}})['then'](function(){return _0x3ca1b3;});})[_0x56cf('0x29')](function(){_0x571bd3[_0x56cf('0x1d')](0xcc)[_0x56cf('0x1e')]();});}};}function handleEntityNotFound(_0x273811,_0x321f1e){return function(_0x96def3){if(!_0x96def3){_0x273811[_0x56cf('0x1c')](0x194);}return _0x96def3;};}function handleError(_0x266aff,_0x1fd3c8){_0x1fd3c8=_0x1fd3c8||0x1f4;return function(_0x48dc4d){logger[_0x56cf('0x2d')](_0x48dc4d[_0x56cf('0x2e')]);if(_0x48dc4d[_0x56cf('0x2f')]){delete _0x48dc4d[_0x56cf('0x2f')];}_0x266aff[_0x56cf('0x1d')](_0x1fd3c8)[_0x56cf('0x30')](_0x48dc4d);};}exports[_0x56cf('0x31')]=function(_0x583bca,_0x372683){var _0xabc083={},_0x1998c3={},_0x43d702={'count':0x0,'rows':[]};var _0xab4817=_['map'](db[_0x56cf('0x32')][_0x56cf('0x33')],function(_0x270e7a){return{'name':_0x270e7a[_0x56cf('0x34')],'type':_0x270e7a[_0x56cf('0x35')][_0x56cf('0x36')]};});_0x1998c3[_0x56cf('0x37')]=_['map'](_0xab4817,_0x56cf('0x2f'));_0x1998c3[_0x56cf('0x38')]=_[_0x56cf('0x39')](_0x583bca[_0x56cf('0x38')]);_0x1998c3['filters']=_[_0x56cf('0x3a')](_0x1998c3[_0x56cf('0x37')],_0x1998c3[_0x56cf('0x38')]);_0xabc083[_0x56cf('0x3b')]=_['intersection'](_0x1998c3[_0x56cf('0x37')],qs[_0x56cf('0x3c')](_0x583bca['query'][_0x56cf('0x3c')]));_0xabc083[_0x56cf('0x3b')]=_0xabc083[_0x56cf('0x3b')][_0x56cf('0x3d')]?_0xabc083[_0x56cf('0x3b')]:_0x1998c3[_0x56cf('0x37')];if(!_0x583bca[_0x56cf('0x38')][_0x56cf('0x3e')](_0x56cf('0x3f'))){_0xabc083[_0x56cf('0x22')]=qs[_0x56cf('0x22')](_0x583bca[_0x56cf('0x38')][_0x56cf('0x22')]);_0xabc083[_0x56cf('0x20')]=qs[_0x56cf('0x20')](_0x583bca[_0x56cf('0x38')][_0x56cf('0x20')]);}_0xabc083[_0x56cf('0x40')]=qs[_0x56cf('0x41')](_0x583bca[_0x56cf('0x38')][_0x56cf('0x41')]);_0xabc083[_0x56cf('0x42')]=qs[_0x56cf('0x43')](_[_0x56cf('0x44')](_0x583bca['query'],_0x1998c3[_0x56cf('0x43')]),_0xab4817);if(_0x583bca[_0x56cf('0x38')][_0x56cf('0x45')]){_0xabc083[_0x56cf('0x42')]=_[_0x56cf('0x46')](_0xabc083[_0x56cf('0x42')],{'$or':_[_0x56cf('0x47')](_0xab4817,function(_0x1565b7){if(_0x1565b7[_0x56cf('0x35')]!==_0x56cf('0x48')){var _0x2b41e4={};_0x2b41e4[_0x1565b7[_0x56cf('0x2f')]]={'$like':'%'+_0x583bca['query'][_0x56cf('0x45')]+'%'};return _0x2b41e4;}})});}_0xabc083=_['merge']({},_0xabc083,_0x583bca[_0x56cf('0x49')]);var _0x315558={'where':_0xabc083[_0x56cf('0x42')]};return db[_0x56cf('0x32')][_0x56cf('0x23')](_0x315558)[_0x56cf('0x29')](function(_0x14e11f){_0x43d702[_0x56cf('0x23')]=_0x14e11f;if(_0x583bca[_0x56cf('0x38')]['includeAll']){_0xabc083['include']=[{'all':!![]}];}return db[_0x56cf('0x32')]['findAll'](_0xabc083);})[_0x56cf('0x29')](function(_0x14b6dd){_0x43d702[_0x56cf('0x4a')]=_0x14b6dd;return _0x43d702;})[_0x56cf('0x29')](respondWithFilteredResult(_0x372683,_0xabc083))[_0x56cf('0x4b')](handleError(_0x372683,null));};exports[_0x56cf('0x4c')]=function(_0x4cccbe,_0x392c80){var _0x2a9b8b={'raw':![],'where':{'id':_0x4cccbe[_0x56cf('0x4d')]['id']}},_0x1c5579={};_0x1c5579[_0x56cf('0x37')]=_[_0x56cf('0x39')](db[_0x56cf('0x32')][_0x56cf('0x33')]);_0x1c5579[_0x56cf('0x38')]=_[_0x56cf('0x39')](_0x4cccbe[_0x56cf('0x38')]);_0x1c5579[_0x56cf('0x43')]=_[_0x56cf('0x3a')](_0x1c5579[_0x56cf('0x37')],_0x1c5579[_0x56cf('0x38')]);_0x2a9b8b[_0x56cf('0x3b')]=_['intersection'](_0x1c5579[_0x56cf('0x37')],qs[_0x56cf('0x3c')](_0x4cccbe[_0x56cf('0x38')][_0x56cf('0x3c')]));_0x2a9b8b['attributes']=_0x2a9b8b[_0x56cf('0x3b')][_0x56cf('0x3d')]?_0x2a9b8b[_0x56cf('0x3b')]:_0x1c5579[_0x56cf('0x37')];if(_0x4cccbe['query'][_0x56cf('0x4e')]){_0x2a9b8b['include']=[{'all':!![]}];}_0x2a9b8b=_[_0x56cf('0x46')]({},_0x2a9b8b,_0x4cccbe[_0x56cf('0x49')]);return db[_0x56cf('0x32')]['find'](_0x2a9b8b)[_0x56cf('0x29')](handleEntityNotFound(_0x392c80,null))[_0x56cf('0x29')](respondWithResult(_0x392c80,null))[_0x56cf('0x4b')](handleError(_0x392c80,null));};exports[_0x56cf('0x4f')]=function(_0x116900,_0x3522be){return db[_0x56cf('0x32')]['create'](_0x116900['body'],{})[_0x56cf('0x29')](function(_0xc7e48c){var _0x40335e=_0x116900[_0x56cf('0x50')][_0x56cf('0x2a')]({'plain':!![]});if(!_0x40335e)throw new Error(_0x56cf('0x51'));if(_0x40335e['role']==='user'){var _0x577b8d=_0xc7e48c['get']({'plain':!![]});var _0x2e93c4=_0x56cf('0x2b');return db['UserProfileSection'][_0x56cf('0x52')]({'where':{'name':_0x2e93c4,'userProfileId':_0x40335e[_0x56cf('0x53')]},'raw':!![]})['then'](function(_0x5eff2a){if(_0x5eff2a&&_0x5eff2a[_0x56cf('0x54')]===0x0){return db[_0x56cf('0x2c')]['create']({'name':_0x577b8d[_0x56cf('0x2f')],'resourceId':_0x577b8d['id'],'type':_0x5eff2a[_0x56cf('0x2f')],'sectionId':_0x5eff2a['id']},{})[_0x56cf('0x29')](function(){return _0xc7e48c;});}else{return _0xc7e48c;}})['catch'](function(_0x56fad3){logger[_0x56cf('0x2d')](_0x56cf('0x55'),_0x56fad3);throw _0x56fad3;});}return _0xc7e48c;})[_0x56cf('0x29')](respondWithResult(_0x3522be,0xc9))['catch'](handleError(_0x3522be,null));};exports['update']=function(_0x2072ef,_0x44969c){if(_0x2072ef[_0x56cf('0x56')]['id']){delete _0x2072ef[_0x56cf('0x56')]['id'];}return db[_0x56cf('0x32')][_0x56cf('0x52')]({'where':{'id':_0x2072ef[_0x56cf('0x4d')]['id']}})['then'](handleEntityNotFound(_0x44969c,null))['then'](saveUpdates(_0x2072ef['body'],null))[_0x56cf('0x29')](respondWithResult(_0x44969c,null))['catch'](handleError(_0x44969c,null));};exports[_0x56cf('0x57')]=function(_0x293f75,_0x5cded0){return db[_0x56cf('0x32')][_0x56cf('0x52')]({'where':{'id':_0x293f75[_0x56cf('0x4d')]['id']}})[_0x56cf('0x29')](handleEntityNotFound(_0x5cded0,null))[_0x56cf('0x29')](removeEntity(_0x5cded0,null))[_0x56cf('0x4b')](handleError(_0x5cded0,null));};exports[_0x56cf('0x58')]=function(_0x2d4553,_0x13f8bb,_0x318418){return db[_0x56cf('0x32')][_0x56cf('0x59')]({'where':{'id':_0x2d4553[_0x56cf('0x4d')]['id']}})[_0x56cf('0x29')](handleEntityNotFound(_0x13f8bb,null))['then'](function(_0xd42a88){if(!_0x2d4553[_0x56cf('0x38')]['channel']||!utils[_0x56cf('0x5a')](_0x2d4553[_0x56cf('0x38')][_0x56cf('0x5b')])){throw new db[(_0x56cf('0x5c'))][(_0x56cf('0x5d'))](_0x56cf('0x5e'));}var _0xb06407={};var _0x3decad={};_0x3decad[_0x56cf('0x37')]=_[_0x56cf('0x39')](db[_[_0x56cf('0x5f')](_0x2d4553[_0x56cf('0x38')]['channel'][_0x56cf('0x60')]())+_0x56cf('0x61')][_0x56cf('0x33')]);_0x3decad[_0x56cf('0x38')]=_[_0x56cf('0x39')](_0x2d4553['query']);_0x3decad[_0x56cf('0x43')]=_[_0x56cf('0x3a')](_0x3decad[_0x56cf('0x37')],_0x3decad[_0x56cf('0x38')]);_0xb06407['attributes']=_[_0x56cf('0x3a')](_0x3decad['model'],qs[_0x56cf('0x3c')](_0x2d4553[_0x56cf('0x38')]['fields']));_0xb06407['attributes']=_0xb06407[_0x56cf('0x3b')][_0x56cf('0x3d')]?_0xb06407[_0x56cf('0x3b')]:_0x3decad[_0x56cf('0x37')];_0xb06407[_0x56cf('0x22')]=qs[_0x56cf('0x22')](_0x2d4553[_0x56cf('0x38')][_0x56cf('0x22')]);_0xb06407['offset']=qs[_0x56cf('0x20')](_0x2d4553[_0x56cf('0x38')][_0x56cf('0x20')]);_0xb06407[_0x56cf('0x40')]=qs[_0x56cf('0x41')](_0x2d4553[_0x56cf('0x38')]['sort']);_0xb06407[_0x56cf('0x42')]=qs[_0x56cf('0x43')](_['pick'](_0x2d4553[_0x56cf('0x38')],_0x3decad[_0x56cf('0x43')]));_0xb06407=_[_0x56cf('0x46')]({},_0xb06407,_0x2d4553[_0x56cf('0x49')]);return _0xd42a88[_0x56cf('0x2a')+_[_0x56cf('0x5f')](_0x2d4553[_0x56cf('0x38')][_0x56cf('0x5b')][_0x56cf('0x60')]())+_0x56cf('0x62')](_0xb06407);})[_0x56cf('0x29')](respondWithResult(_0x13f8bb,null))[_0x56cf('0x4b')](handleError(_0x13f8bb,null));};exports[_0x56cf('0x63')]=function(_0x2908d8,_0x55d9ee,_0x2adddc){return db[_0x56cf('0x32')][_0x56cf('0x59')]({'where':{'id':_0x2908d8[_0x56cf('0x4d')]['id']}})[_0x56cf('0x29')](function(_0x239585){if(_0x239585){if(!_0x2908d8[_0x56cf('0x56')][_0x56cf('0x5b')]||!utils[_0x56cf('0x5a')](_0x2908d8[_0x56cf('0x56')][_0x56cf('0x5b')])){throw new db[(_0x56cf('0x5c'))][(_0x56cf('0x5d'))]('Unknown\x20channel');}return _0x239585[_0x56cf('0x64')+_['capitalize'](_0x2908d8['body'][_0x56cf('0x5b')]['toLowerCase']())+_0x56cf('0x62')](_0x2908d8[_0x56cf('0x56')][_0x56cf('0x65')]);}return null;})[_0x56cf('0x29')](handleEntityNotFound(_0x55d9ee,null))[_0x56cf('0x29')](respondWithStatusCode(_0x55d9ee,null))['catch'](handleError(_0x55d9ee,null));};exports[_0x56cf('0x66')]=function(_0x29e0e5,_0x8a5184,_0x520953){return db[_0x56cf('0x32')][_0x56cf('0x59')]({'where':{'id':_0x29e0e5['params']['id']}})['then'](function(_0x3f17a4){if(_0x3f17a4){if(!_0x29e0e5['query']['channel']||!utils[_0x56cf('0x5a')](_0x29e0e5[_0x56cf('0x38')]['channel'])){throw new db[(_0x56cf('0x5c'))][(_0x56cf('0x5d'))]('Unknown\x20channel');}return _0x3f17a4[_0x56cf('0x67')+_[_0x56cf('0x5f')](_0x29e0e5[_0x56cf('0x38')][_0x56cf('0x5b')][_0x56cf('0x60')]())+'Queues'](_0x29e0e5[_0x56cf('0x38')][_0x56cf('0x65')]);}return null;})['then'](handleEntityNotFound(_0x8a5184,null))[_0x56cf('0x29')](respondWithStatusCode(_0x8a5184,null))['catch'](handleError(_0x8a5184,null));};exports[_0x56cf('0x68')]=function(_0x270c3b,_0x56cadd){return db[_0x56cf('0x32')][_0x56cf('0x52')]({'where':{'id':_0x270c3b['params']['id']}})[_0x56cf('0x29')](handleEntityNotFound(_0x56cadd,null))[_0x56cf('0x29')](function(_0x17537c){if(_0x17537c){var _0x13c85e=[_0x56cf('0x69'),_0x56cf('0x6a'),'Mail','Sms',_0x56cf('0x6b'),_0x56cf('0x6c'),_0x56cf('0x6d')];return db['sequelize'][_0x56cf('0x6e')](function(_0x2ae13b){var _0x51cbf3=_[_0x56cf('0x47')](_0x13c85e,function(_0x19e377){var _0x16ca74={'attributes':['id','name']};if(_0x19e377===_0x56cf('0x69')){_0x16ca74[_0x56cf('0x6f')]={'attributes':[_0x56cf('0x70')]};}return _0x17537c[_0x56cf('0x2a')+_0x19e377+_0x56cf('0x62')](_0x16ca74)['then'](function(_0xbf7a8){var _0x38f3dd=_[_0x56cf('0x47')](_0xbf7a8,function(_0x194f36){var _0x950fee=_[_0x56cf('0x47')](_0x270c3b[_0x56cf('0x56')]['ids'],function(_0x52f086){var _0x1764d8={'where':{'UserId':_0x52f086,[_0x19e377+_0x56cf('0x71')]:_0x194f36['id']},'transaction':_0x2ae13b};if(_0x19e377===_0x56cf('0x69')){_0x1764d8[_0x56cf('0x18')]={'penalty':_0x194f36[_0x56cf('0x72')]['penalty']};}return db[_0x56cf('0x73')+_0x19e377+'Queue'][_0x56cf('0x74')](_0x1764d8)['then'](function(){socket[_0x56cf('0x75')](_0x56cf('0x50')+_0x19e377+_0x56cf('0x76'),{'UserId':_0x52f086,[_0x19e377+_0x56cf('0x71')]:_0x194f36['id']});if(_0x19e377!==_0x56cf('0x69'))return;return db[_0x56cf('0x73')][_0x56cf('0x77')]({'where':{'id':_0x270c3b[_0x56cf('0x56')]['ids'],'online':0x1},'attributes':['id',_0x56cf('0x2f'),_0x56cf('0x78'),'voicePause',_0x56cf('0x79')],'raw':!![]})['then'](function(_0x3ab731){var _0x348c9f=_[_0x56cf('0x47')](_0x3ab731,function(_0x11f481){return db[_0x56cf('0x7a')][_0x56cf('0x7b')]({'membername':_0x11f481['name'],'UserId':_0x11f481['id'],'queue_name':_0x194f36[_0x56cf('0x2f')],'VoiceQueueId':_0x194f36['id'],'interface':_[_0x56cf('0x7c')](_0x11f481[_0x56cf('0x79')])?util['format']('SIP/%s',_0x11f481[_0x56cf('0x2f')]):_0x11f481[_0x56cf('0x79')],'paused':_0x11f481[_0x56cf('0x7d')]||![],'penalty':_0x194f36['TeamVoiceQueue'][_0x56cf('0x70')]},{'transaction':_0x2ae13b});});return Promise[_0x56cf('0x7e')](_0x348c9f);});});});return Promise[_0x56cf('0x7e')](_0x950fee);});return Promise['all'](_0x38f3dd);});});return Promise[_0x56cf('0x7e')](_0x51cbf3)[_0x56cf('0x29')](function(){return _0x17537c[_0x56cf('0x68')](_0x270c3b[_0x56cf('0x56')][_0x56cf('0x65')],{'transaction':_0x2ae13b})[_0x56cf('0x7f')](function(_0x12c4d9){return _0x12c4d9;});});});}})[_0x56cf('0x29')](respondWithResult(_0x56cadd,null))['catch'](handleError(_0x56cadd,null));};exports['removeAgents']=function(_0x20e726,_0x58db8f){return db[_0x56cf('0x32')][_0x56cf('0x52')]({'where':{'id':_0x20e726[_0x56cf('0x4d')]['id']}})[_0x56cf('0x29')](handleEntityNotFound(_0x58db8f,null))[_0x56cf('0x29')](function(_0x137331){if(_0x137331){var _0x2221db=[_0x56cf('0x69'),_0x56cf('0x6a'),'Mail',_0x56cf('0x80'),_0x56cf('0x6b'),'Openchannel','Whatsapp'];return db[_0x56cf('0x81')][_0x56cf('0x6e')](function(_0x153c9c){var _0x3c6bc5=_['map'](_0x2221db,function(_0x3d17eb){var _0xa7783b={'attributes':['id',_0x56cf('0x2f')]};return _0x137331['get'+_0x3d17eb+_0x56cf('0x62')](_0xa7783b)['then'](function(_0x31ad4b){var _0xf07ad9=_[_0x56cf('0x47')](_0x31ad4b,function(_0x190e7f){return _0x190e7f['removeAgents'](_0x20e726[_0x56cf('0x38')][_0x56cf('0x65')],{'transaction':_0x153c9c})[_0x56cf('0x29')](function(){var _0x4ce6c9=JSON[_0x56cf('0x82')]('['+_0x20e726[_0x56cf('0x38')]['ids']+']');var _0x1a8e4d=_[_0x56cf('0x47')](_0x4ce6c9,function(_0x5f56f7){socket[_0x56cf('0x75')]('user'+_0x3d17eb+'Queue:remove',{'UserId':Number(_0x5f56f7),[_0x3d17eb+_0x56cf('0x71')]:_0x190e7f['id']});if(_0x3d17eb!==_0x56cf('0x69'))return;return db[_0x56cf('0x7a')][_0x56cf('0x57')]({'where':{'VoiceQueueId':_0x190e7f['id'],'UserId':_0x5f56f7},'transaction':_0x153c9c});});return Promise[_0x56cf('0x7e')](_0x1a8e4d);});});return Promise[_0x56cf('0x7e')](_0xf07ad9);});});return Promise[_0x56cf('0x7e')](_0x3c6bc5)[_0x56cf('0x29')](function(){return _0x137331[_0x56cf('0x83')](_0x20e726[_0x56cf('0x38')][_0x56cf('0x65')],{'transaction':_0x153c9c});});});}})[_0x56cf('0x29')](respondWithStatusCode(_0x58db8f,null))[_0x56cf('0x4b')](handleError(_0x58db8f,null));};exports[_0x56cf('0x84')]=function(_0x54d7ea,_0x4a4649,_0x2b23f7){var _0x4b8223={};var _0x2f8878={};var _0xc3a850;var _0xd5f5bd;return db[_0x56cf('0x32')]['findOne']({'where':{'id':_0x54d7ea[_0x56cf('0x4d')]['id']}})[_0x56cf('0x29')](handleEntityNotFound(_0x4a4649,null))[_0x56cf('0x29')](function(_0x1778cf){if(_0x1778cf){_0xc3a850=_0x1778cf;_0x2f8878[_0x56cf('0x37')]=_['keys'](db[_0x56cf('0x73')][_0x56cf('0x33')]);_0x2f8878[_0x56cf('0x38')]=_[_0x56cf('0x39')](_0x54d7ea[_0x56cf('0x38')]);_0x2f8878[_0x56cf('0x43')]=_[_0x56cf('0x3a')](_0x2f8878[_0x56cf('0x37')],_0x2f8878['query']);_0x4b8223[_0x56cf('0x3b')]=_[_0x56cf('0x3a')](_0x2f8878[_0x56cf('0x37')],qs['fields'](_0x54d7ea[_0x56cf('0x38')][_0x56cf('0x3c')]));_0x4b8223['attributes']=_0x4b8223[_0x56cf('0x3b')]['length']?_0x4b8223[_0x56cf('0x3b')]:_0x2f8878['model'];_0x4b8223[_0x56cf('0x40')]=qs[_0x56cf('0x41')](_0x54d7ea[_0x56cf('0x38')][_0x56cf('0x41')]);_0x4b8223[_0x56cf('0x42')]=qs[_0x56cf('0x43')](_[_0x56cf('0x44')](_0x54d7ea['query'],_0x2f8878['filters']));if(_0x54d7ea[_0x56cf('0x38')][_0x56cf('0x45')]){_0x4b8223[_0x56cf('0x42')]=_['merge'](_0x4b8223['where'],{'$or':_[_0x56cf('0x47')](_0x4b8223['attributes'],function(_0x311b2e){var _0x3ddb06={};_0x3ddb06[_0x311b2e]={'$like':'%'+_0x54d7ea[_0x56cf('0x38')][_0x56cf('0x45')]+'%'};return _0x3ddb06;})});}_0x4b8223=_['merge']({},_0x4b8223,_0x54d7ea[_0x56cf('0x49')]);return _0xc3a850[_0x56cf('0x84')](_0x4b8223);}})[_0x56cf('0x29')](function(_0x43c2d8){if(_0x43c2d8){_0xd5f5bd=_0x43c2d8[_0x56cf('0x3d')];if(!_0x54d7ea['query']['hasOwnProperty'](_0x56cf('0x3f'))){_0x4b8223[_0x56cf('0x22')]=qs[_0x56cf('0x22')](_0x54d7ea[_0x56cf('0x38')][_0x56cf('0x22')]);_0x4b8223[_0x56cf('0x20')]=qs[_0x56cf('0x20')](_0x54d7ea[_0x56cf('0x38')][_0x56cf('0x20')]);}return _0xc3a850[_0x56cf('0x84')](_0x4b8223);}})[_0x56cf('0x29')](function(_0x4cec21){if(_0x4cec21){return _0x4cec21?{'count':_0xd5f5bd,'rows':_0x4cec21}:null;}})[_0x56cf('0x29')](respondWithResult(_0x4a4649,null))[_0x56cf('0x4b')](handleError(_0x4a4649,null));};
\ No newline at end of file
+var _0x780c=['error','stack','name','send','index','map','Team','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','nolimit','sort','where','pick','merge','options','catch','show','length','includeAll','include','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','getQueues','channel','isValidChannel','Sequelize','Unknown\x20channel','capitalize','toLowerCase','Queue','order','Queues','addQueues','findOne','ValidationError','add','ids','removeQueues','remove','addAgents','Voice','Chat','Openchannel','Whatsapp','sequelize','transaction','through','QueueId','penalty','User','findOrCreate','emit','Queue:save','online','UserVoiceQueueRt','upsert','isNil','interface','voicePause','all','spread','removeAgents','Mail','Sms','Fax','parse','Queue:remove','getAgents','filter','eml-format','rimraf','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','register','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','save','then','destroy','Teams','UserProfileResource'];(function(_0x845897,_0x42ef70){var _0x2d70c8=function(_0x32a33b){while(--_0x32a33b){_0x845897['push'](_0x845897['shift']());}};_0x2d70c8(++_0x42ef70);}(_0x780c,0x15a));var _0xc780=function(_0x1573ea,_0x434f02){_0x1573ea=_0x1573ea-0x0;var _0x51c0e2=_0x780c[_0x1573ea];return _0x51c0e2;};'use strict';var emlformat=require(_0xc780('0x0'));var rimraf=require(_0xc780('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xc780('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xc780('0x3'));var util=require('util');var path=require(_0xc780('0x4'));var sox=require(_0xc780('0x5'));var csv=require(_0xc780('0x6'));var ejs=require(_0xc780('0x7'));var fs=require('fs');var fs_extra=require(_0xc780('0x8'));var _=require(_0xc780('0x9'));var squel=require(_0xc780('0xa'));var crypto=require(_0xc780('0xb'));var jsforce=require(_0xc780('0xc'));var deskjs=require(_0xc780('0xd'));var toCsv=require(_0xc780('0x6'));var querystring=require(_0xc780('0xe'));var Papa=require(_0xc780('0xf'));var Redis=require(_0xc780('0x10'));var authService=require(_0xc780('0x11'));var qs=require(_0xc780('0x12'));var as=require(_0xc780('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc780('0x14'))(_0xc780('0x15'));var utils=require(_0xc780('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xc780('0x17'));var db=require(_0xc780('0x18'))['db'];config['redis']=_[_0xc780('0x19')](config[_0xc780('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0xc780('0x1b'))(new Redis(config['redis']));require('./team.socket')[_0xc780('0x1c')](socket);function respondWithStatusCode(_0x49a560,_0x488a48){_0x488a48=_0x488a48||0xcc;return function(_0x48bf7d){if(_0x48bf7d){return _0x49a560[_0xc780('0x1d')](_0x488a48);}return _0x49a560[_0xc780('0x1e')](_0x488a48)[_0xc780('0x1f')]();};}function respondWithResult(_0x44281f,_0x1f287f){_0x1f287f=_0x1f287f||0xc8;return function(_0x45f506){if(_0x45f506){return _0x44281f[_0xc780('0x1e')](_0x1f287f)['json'](_0x45f506);}};}function respondWithFilteredResult(_0xb74638,_0x133406){return function(_0x321334){if(_0x321334){var _0x4dc161=typeof _0x133406[_0xc780('0x20')]==='undefined'&&typeof _0x133406[_0xc780('0x21')]===_0xc780('0x22');var _0x3dea2f=_0x321334[_0xc780('0x23')];var _0xd2611e=_0x4dc161?0x0:_0x133406['offset'];var _0x5f416d=_0x4dc161?_0x321334[_0xc780('0x23')]:_0x133406[_0xc780('0x20')]+_0x133406[_0xc780('0x21')];var _0x432ffd;if(_0x5f416d>=_0x3dea2f){_0x5f416d=_0x3dea2f;_0x432ffd=0xc8;}else{_0x432ffd=0xce;}_0xb74638['status'](_0x432ffd);return _0xb74638[_0xc780('0x24')](_0xc780('0x25'),_0xd2611e+'-'+_0x5f416d+'/'+_0x3dea2f)[_0xc780('0x26')](_0x321334);}return null;};}function patchUpdates(_0x50eec4){return function(_0x4ecdd2){try{jsonpatch['apply'](_0x4ecdd2,_0x50eec4,!![]);}catch(_0x8e0fda){return BPromise['reject'](_0x8e0fda);}return _0x4ecdd2[_0xc780('0x27')]();};}function saveUpdates(_0x44944e,_0x3ff905){return function(_0xe6f03){if(_0xe6f03){return _0xe6f03['update'](_0x44944e)[_0xc780('0x28')](function(_0x4e90e6){return _0x4e90e6;});}return null;};}function removeEntity(_0xee58fa,_0x15b599){return function(_0x2ef8be){if(_0x2ef8be){return _0x2ef8be[_0xc780('0x29')]()[_0xc780('0x28')](function(){var _0x322c6b=_0x2ef8be['get']({'plain':!![]});var _0x2c5501=_0xc780('0x2a');return db[_0xc780('0x2b')][_0xc780('0x29')]({'where':{'type':_0x2c5501,'resourceId':_0x322c6b['id']}})[_0xc780('0x28')](function(){return _0x2ef8be;});})[_0xc780('0x28')](function(){_0xee58fa[_0xc780('0x1e')](0xcc)[_0xc780('0x1f')]();});}};}function handleEntityNotFound(_0x4988d1,_0x17ec3c){return function(_0x42972c){if(!_0x42972c){_0x4988d1[_0xc780('0x1d')](0x194);}return _0x42972c;};}function handleError(_0x3d9b97,_0x422707){_0x422707=_0x422707||0x1f4;return function(_0x15c57e){logger[_0xc780('0x2c')](_0x15c57e[_0xc780('0x2d')]);if(_0x15c57e[_0xc780('0x2e')]){delete _0x15c57e[_0xc780('0x2e')];}_0x3d9b97[_0xc780('0x1e')](_0x422707)[_0xc780('0x2f')](_0x15c57e);};}exports[_0xc780('0x30')]=function(_0x158f33,_0x339631){var _0x1e8566={},_0x1417ff={},_0x482031={'count':0x0,'rows':[]};var _0xca68a=_[_0xc780('0x31')](db[_0xc780('0x32')][_0xc780('0x33')],function(_0x4d4fc1){return{'name':_0x4d4fc1[_0xc780('0x34')],'type':_0x4d4fc1['type']['key']};});_0x1417ff[_0xc780('0x35')]=_[_0xc780('0x31')](_0xca68a,'name');_0x1417ff[_0xc780('0x36')]=_[_0xc780('0x37')](_0x158f33[_0xc780('0x36')]);_0x1417ff[_0xc780('0x38')]=_[_0xc780('0x39')](_0x1417ff['model'],_0x1417ff['query']);_0x1e8566[_0xc780('0x3a')]=_['intersection'](_0x1417ff['model'],qs[_0xc780('0x3b')](_0x158f33[_0xc780('0x36')][_0xc780('0x3b')]));_0x1e8566[_0xc780('0x3a')]=_0x1e8566[_0xc780('0x3a')]['length']?_0x1e8566[_0xc780('0x3a')]:_0x1417ff[_0xc780('0x35')];if(!_0x158f33['query']['hasOwnProperty'](_0xc780('0x3c'))){_0x1e8566[_0xc780('0x21')]=qs[_0xc780('0x21')](_0x158f33[_0xc780('0x36')][_0xc780('0x21')]);_0x1e8566[_0xc780('0x20')]=qs[_0xc780('0x20')](_0x158f33['query'][_0xc780('0x20')]);}_0x1e8566['order']=qs[_0xc780('0x3d')](_0x158f33['query'][_0xc780('0x3d')]);_0x1e8566[_0xc780('0x3e')]=qs[_0xc780('0x38')](_[_0xc780('0x3f')](_0x158f33[_0xc780('0x36')],_0x1417ff[_0xc780('0x38')]),_0xca68a);if(_0x158f33[_0xc780('0x36')]['filter']){_0x1e8566['where']=_[_0xc780('0x40')](_0x1e8566[_0xc780('0x3e')],{'$or':_[_0xc780('0x31')](_0xca68a,function(_0x1334e3){if(_0x1334e3['type']!=='VIRTUAL'){var _0x44d336={};_0x44d336[_0x1334e3[_0xc780('0x2e')]]={'$like':'%'+_0x158f33[_0xc780('0x36')]['filter']+'%'};return _0x44d336;}})});}_0x1e8566=_['merge']({},_0x1e8566,_0x158f33[_0xc780('0x41')]);var _0x3fe27a={'where':_0x1e8566['where']};return db[_0xc780('0x32')][_0xc780('0x23')](_0x3fe27a)[_0xc780('0x28')](function(_0x4f7b91){_0x482031[_0xc780('0x23')]=_0x4f7b91;if(_0x158f33[_0xc780('0x36')]['includeAll']){_0x1e8566['include']=[{'all':!![]}];}return db[_0xc780('0x32')]['findAll'](_0x1e8566);})[_0xc780('0x28')](function(_0xb4c0bb){_0x482031['rows']=_0xb4c0bb;return _0x482031;})[_0xc780('0x28')](respondWithFilteredResult(_0x339631,_0x1e8566))[_0xc780('0x42')](handleError(_0x339631,null));};exports[_0xc780('0x43')]=function(_0x4ed47d,_0x277544){var _0x6e2975={'raw':![],'where':{'id':_0x4ed47d['params']['id']}},_0xbab2b6={};_0xbab2b6['model']=_[_0xc780('0x37')](db['Team'][_0xc780('0x33')]);_0xbab2b6[_0xc780('0x36')]=_[_0xc780('0x37')](_0x4ed47d['query']);_0xbab2b6[_0xc780('0x38')]=_[_0xc780('0x39')](_0xbab2b6['model'],_0xbab2b6['query']);_0x6e2975[_0xc780('0x3a')]=_[_0xc780('0x39')](_0xbab2b6[_0xc780('0x35')],qs[_0xc780('0x3b')](_0x4ed47d['query']['fields']));_0x6e2975[_0xc780('0x3a')]=_0x6e2975['attributes'][_0xc780('0x44')]?_0x6e2975[_0xc780('0x3a')]:_0xbab2b6[_0xc780('0x35')];if(_0x4ed47d['query'][_0xc780('0x45')]){_0x6e2975[_0xc780('0x46')]=[{'all':!![]}];}_0x6e2975=_[_0xc780('0x40')]({},_0x6e2975,_0x4ed47d['options']);return db[_0xc780('0x32')][_0xc780('0x47')](_0x6e2975)[_0xc780('0x28')](handleEntityNotFound(_0x277544,null))[_0xc780('0x28')](respondWithResult(_0x277544,null))[_0xc780('0x42')](handleError(_0x277544,null));};exports[_0xc780('0x48')]=function(_0x5c4313,_0x5d4a04){return db[_0xc780('0x32')][_0xc780('0x48')](_0x5c4313[_0xc780('0x49')],{})[_0xc780('0x28')](function(_0x3e936a){var _0xa6e4ef=_0x5c4313[_0xc780('0x4a')][_0xc780('0x4b')]({'plain':!![]});if(!_0xa6e4ef)throw new Error(_0xc780('0x4c'));if(_0xa6e4ef[_0xc780('0x4d')]===_0xc780('0x4a')){var _0x29ed50=_0x3e936a[_0xc780('0x4b')]({'plain':!![]});var _0x1edb77='Teams';return db['UserProfileSection'][_0xc780('0x47')]({'where':{'name':_0x1edb77,'userProfileId':_0xa6e4ef[_0xc780('0x4e')]},'raw':!![]})[_0xc780('0x28')](function(_0x27ed4a){if(_0x27ed4a&&_0x27ed4a[_0xc780('0x4f')]===0x0){return db[_0xc780('0x2b')][_0xc780('0x48')]({'name':_0x29ed50[_0xc780('0x2e')],'resourceId':_0x29ed50['id'],'type':_0x27ed4a['name'],'sectionId':_0x27ed4a['id']},{})[_0xc780('0x28')](function(){return _0x3e936a;});}else{return _0x3e936a;}})[_0xc780('0x42')](function(_0x327224){logger[_0xc780('0x2c')](_0xc780('0x50'),_0x327224);throw _0x327224;});}return _0x3e936a;})[_0xc780('0x28')](respondWithResult(_0x5d4a04,0xc9))['catch'](handleError(_0x5d4a04,null));};exports[_0xc780('0x51')]=function(_0x56aedb,_0x1e29c6){if(_0x56aedb[_0xc780('0x49')]['id']){delete _0x56aedb[_0xc780('0x49')]['id'];}return db[_0xc780('0x32')][_0xc780('0x47')]({'where':{'id':_0x56aedb[_0xc780('0x52')]['id']}})[_0xc780('0x28')](handleEntityNotFound(_0x1e29c6,null))[_0xc780('0x28')](saveUpdates(_0x56aedb[_0xc780('0x49')],null))[_0xc780('0x28')](respondWithResult(_0x1e29c6,null))[_0xc780('0x42')](handleError(_0x1e29c6,null));};exports['destroy']=function(_0xfcd279,_0x548a51){return db[_0xc780('0x32')][_0xc780('0x47')]({'where':{'id':_0xfcd279[_0xc780('0x52')]['id']}})[_0xc780('0x28')](handleEntityNotFound(_0x548a51,null))[_0xc780('0x28')](removeEntity(_0x548a51,null))[_0xc780('0x42')](handleError(_0x548a51,null));};exports[_0xc780('0x53')]=function(_0x2ba363,_0x24c860,_0x298912){return db[_0xc780('0x32')]['findOne']({'where':{'id':_0x2ba363['params']['id']}})[_0xc780('0x28')](handleEntityNotFound(_0x24c860,null))[_0xc780('0x28')](function(_0x2f3d33){if(!_0x2ba363['query'][_0xc780('0x54')]||!utils[_0xc780('0x55')](_0x2ba363[_0xc780('0x36')]['channel'])){throw new db[(_0xc780('0x56'))]['ValidationError'](_0xc780('0x57'));}var _0x3b07cc={};var _0xad411={};_0xad411['model']=_[_0xc780('0x37')](db[_[_0xc780('0x58')](_0x2ba363[_0xc780('0x36')][_0xc780('0x54')][_0xc780('0x59')]())+_0xc780('0x5a')][_0xc780('0x33')]);_0xad411['query']=_[_0xc780('0x37')](_0x2ba363[_0xc780('0x36')]);_0xad411[_0xc780('0x38')]=_[_0xc780('0x39')](_0xad411[_0xc780('0x35')],_0xad411[_0xc780('0x36')]);_0x3b07cc['attributes']=_['intersection'](_0xad411['model'],qs[_0xc780('0x3b')](_0x2ba363[_0xc780('0x36')]['fields']));_0x3b07cc[_0xc780('0x3a')]=_0x3b07cc['attributes'][_0xc780('0x44')]?_0x3b07cc[_0xc780('0x3a')]:_0xad411[_0xc780('0x35')];_0x3b07cc[_0xc780('0x21')]=qs[_0xc780('0x21')](_0x2ba363['query'][_0xc780('0x21')]);_0x3b07cc[_0xc780('0x20')]=qs[_0xc780('0x20')](_0x2ba363[_0xc780('0x36')][_0xc780('0x20')]);_0x3b07cc[_0xc780('0x5b')]=qs[_0xc780('0x3d')](_0x2ba363[_0xc780('0x36')][_0xc780('0x3d')]);_0x3b07cc[_0xc780('0x3e')]=qs[_0xc780('0x38')](_[_0xc780('0x3f')](_0x2ba363[_0xc780('0x36')],_0xad411['filters']));_0x3b07cc=_[_0xc780('0x40')]({},_0x3b07cc,_0x2ba363[_0xc780('0x41')]);return _0x2f3d33[_0xc780('0x4b')+_[_0xc780('0x58')](_0x2ba363[_0xc780('0x36')][_0xc780('0x54')]['toLowerCase']())+_0xc780('0x5c')](_0x3b07cc);})[_0xc780('0x28')](respondWithResult(_0x24c860,null))['catch'](handleError(_0x24c860,null));};exports[_0xc780('0x5d')]=function(_0xf8cd37,_0x1e017c,_0x25d777){return db[_0xc780('0x32')][_0xc780('0x5e')]({'where':{'id':_0xf8cd37[_0xc780('0x52')]['id']}})['then'](function(_0x2777fb){if(_0x2777fb){if(!_0xf8cd37['body'][_0xc780('0x54')]||!utils[_0xc780('0x55')](_0xf8cd37[_0xc780('0x49')][_0xc780('0x54')])){throw new db[(_0xc780('0x56'))][(_0xc780('0x5f'))](_0xc780('0x57'));}return _0x2777fb[_0xc780('0x60')+_[_0xc780('0x58')](_0xf8cd37[_0xc780('0x49')][_0xc780('0x54')]['toLowerCase']())+_0xc780('0x5c')](_0xf8cd37['body'][_0xc780('0x61')]);}return null;})[_0xc780('0x28')](handleEntityNotFound(_0x1e017c,null))[_0xc780('0x28')](respondWithStatusCode(_0x1e017c,null))['catch'](handleError(_0x1e017c,null));};exports[_0xc780('0x62')]=function(_0x47ebd0,_0x339494,_0x7c9957){return db[_0xc780('0x32')][_0xc780('0x5e')]({'where':{'id':_0x47ebd0[_0xc780('0x52')]['id']}})[_0xc780('0x28')](function(_0x1d167d){if(_0x1d167d){if(!_0x47ebd0[_0xc780('0x36')][_0xc780('0x54')]||!utils[_0xc780('0x55')](_0x47ebd0[_0xc780('0x36')]['channel'])){throw new db['Sequelize'][(_0xc780('0x5f'))](_0xc780('0x57'));}return _0x1d167d[_0xc780('0x63')+_[_0xc780('0x58')](_0x47ebd0[_0xc780('0x36')][_0xc780('0x54')]['toLowerCase']())+_0xc780('0x5c')](_0x47ebd0[_0xc780('0x36')][_0xc780('0x61')]);}return null;})['then'](handleEntityNotFound(_0x339494,null))[_0xc780('0x28')](respondWithStatusCode(_0x339494,null))[_0xc780('0x42')](handleError(_0x339494,null));};exports[_0xc780('0x64')]=function(_0x34dd6b,_0x4f73f7){return db['Team'][_0xc780('0x47')]({'where':{'id':_0x34dd6b[_0xc780('0x52')]['id']}})[_0xc780('0x28')](handleEntityNotFound(_0x4f73f7,null))[_0xc780('0x28')](function(_0x36393c){if(_0x36393c){var _0x5d511f=[_0xc780('0x65'),_0xc780('0x66'),'Mail','Sms','Fax',_0xc780('0x67'),_0xc780('0x68')];return db[_0xc780('0x69')][_0xc780('0x6a')](function(_0x44461d){var _0x4657f8=_[_0xc780('0x31')](_0x5d511f,function(_0x242190){var _0x5a15d1={'attributes':['id',_0xc780('0x2e')]};if(_0x242190===_0xc780('0x65')){_0x5a15d1[_0xc780('0x6b')]={'attributes':['penalty']};}return _0x36393c[_0xc780('0x4b')+_0x242190+_0xc780('0x5c')](_0x5a15d1)[_0xc780('0x28')](function(_0x4bb43c){var _0x215829=_['map'](_0x4bb43c,function(_0x2af6d5){var _0x767808=_['map'](_0x34dd6b[_0xc780('0x49')][_0xc780('0x61')],function(_0x59c6cb){var _0x53da0b={'where':{'UserId':_0x59c6cb,[_0x242190+_0xc780('0x6c')]:_0x2af6d5['id']},'transaction':_0x44461d};if(_0x242190===_0xc780('0x65')){_0x53da0b[_0xc780('0x19')]={'penalty':_0x2af6d5['TeamVoiceQueue'][_0xc780('0x6d')]};}return db[_0xc780('0x6e')+_0x242190+_0xc780('0x5a')][_0xc780('0x6f')](_0x53da0b)[_0xc780('0x28')](function(){socket[_0xc780('0x70')](_0xc780('0x4a')+_0x242190+_0xc780('0x71'),{'UserId':_0x59c6cb,[_0x242190+_0xc780('0x6c')]:_0x2af6d5['id']});if(_0x242190!=='Voice')return;return db[_0xc780('0x6e')]['findAll']({'where':{'id':_0x34dd6b[_0xc780('0x49')][_0xc780('0x61')],'online':0x1},'attributes':['id','name',_0xc780('0x72'),'voicePause','interface'],'raw':!![]})['then'](function(_0x5ca5b3){var _0x2d8a4d=_[_0xc780('0x31')](_0x5ca5b3,function(_0x45efec){return db[_0xc780('0x73')][_0xc780('0x74')]({'membername':_0x45efec[_0xc780('0x2e')],'UserId':_0x45efec['id'],'queue_name':_0x2af6d5[_0xc780('0x2e')],'VoiceQueueId':_0x2af6d5['id'],'interface':_[_0xc780('0x75')](_0x45efec[_0xc780('0x76')])?util['format']('SIP/%s',_0x45efec[_0xc780('0x2e')]):_0x45efec[_0xc780('0x76')],'paused':_0x45efec[_0xc780('0x77')]||![],'penalty':_0x2af6d5['TeamVoiceQueue'][_0xc780('0x6d')]},{'transaction':_0x44461d});});return Promise[_0xc780('0x78')](_0x2d8a4d);});});});return Promise[_0xc780('0x78')](_0x767808);});return Promise[_0xc780('0x78')](_0x215829);});});return Promise['all'](_0x4657f8)[_0xc780('0x28')](function(){return _0x36393c[_0xc780('0x64')](_0x34dd6b[_0xc780('0x49')][_0xc780('0x61')],{'transaction':_0x44461d})[_0xc780('0x79')](function(_0x222db0){return _0x222db0;});});});}})['then'](respondWithResult(_0x4f73f7,null))[_0xc780('0x42')](handleError(_0x4f73f7,null));};exports[_0xc780('0x7a')]=function(_0x43c033,_0x210303){return db['Team'][_0xc780('0x47')]({'where':{'id':_0x43c033[_0xc780('0x52')]['id']}})[_0xc780('0x28')](handleEntityNotFound(_0x210303,null))['then'](function(_0x5e05e8){if(_0x5e05e8){var _0x4d4935=[_0xc780('0x65'),'Chat',_0xc780('0x7b'),_0xc780('0x7c'),_0xc780('0x7d'),_0xc780('0x67'),_0xc780('0x68')];return db[_0xc780('0x69')]['transaction'](function(_0x43c206){var _0x3f08d9=_['map'](_0x4d4935,function(_0x278209){var _0x19262e={'attributes':['id',_0xc780('0x2e')]};return _0x5e05e8['get'+_0x278209+_0xc780('0x5c')](_0x19262e)[_0xc780('0x28')](function(_0x4bff1d){var _0x1d91df=_[_0xc780('0x31')](_0x4bff1d,function(_0x1a2f8a){return _0x1a2f8a['removeAgents'](_0x43c033[_0xc780('0x36')][_0xc780('0x61')],{'transaction':_0x43c206})['then'](function(){var _0x55d887=JSON[_0xc780('0x7e')]('['+_0x43c033['query']['ids']+']');var _0xbf3b27=_[_0xc780('0x31')](_0x55d887,function(_0x552ea9){socket[_0xc780('0x70')]('user'+_0x278209+_0xc780('0x7f'),{'UserId':Number(_0x552ea9),[_0x278209+_0xc780('0x6c')]:_0x1a2f8a['id']});if(_0x278209!==_0xc780('0x65'))return;return db['UserVoiceQueueRt'][_0xc780('0x29')]({'where':{'VoiceQueueId':_0x1a2f8a['id'],'UserId':_0x552ea9},'transaction':_0x43c206});});return Promise['all'](_0xbf3b27);});});return Promise[_0xc780('0x78')](_0x1d91df);});});return Promise[_0xc780('0x78')](_0x3f08d9)[_0xc780('0x28')](function(){return _0x5e05e8[_0xc780('0x7a')](_0x43c033[_0xc780('0x36')][_0xc780('0x61')],{'transaction':_0x43c206});});});}})[_0xc780('0x28')](respondWithStatusCode(_0x210303,null))[_0xc780('0x42')](handleError(_0x210303,null));};exports[_0xc780('0x80')]=function(_0x2e0382,_0x13c300,_0x54ad4f){var _0x163aaf={};var _0x30bc2b={};var _0x2d2dfa;var _0x6c2fc8;return db[_0xc780('0x32')]['findOne']({'where':{'id':_0x2e0382['params']['id']}})[_0xc780('0x28')](handleEntityNotFound(_0x13c300,null))[_0xc780('0x28')](function(_0x2169b5){if(_0x2169b5){_0x2d2dfa=_0x2169b5;_0x30bc2b[_0xc780('0x35')]=_[_0xc780('0x37')](db[_0xc780('0x6e')]['rawAttributes']);_0x30bc2b[_0xc780('0x36')]=_[_0xc780('0x37')](_0x2e0382[_0xc780('0x36')]);_0x30bc2b[_0xc780('0x38')]=_[_0xc780('0x39')](_0x30bc2b[_0xc780('0x35')],_0x30bc2b[_0xc780('0x36')]);_0x163aaf[_0xc780('0x3a')]=_[_0xc780('0x39')](_0x30bc2b[_0xc780('0x35')],qs['fields'](_0x2e0382['query'][_0xc780('0x3b')]));_0x163aaf[_0xc780('0x3a')]=_0x163aaf[_0xc780('0x3a')][_0xc780('0x44')]?_0x163aaf[_0xc780('0x3a')]:_0x30bc2b[_0xc780('0x35')];_0x163aaf[_0xc780('0x5b')]=qs['sort'](_0x2e0382['query'][_0xc780('0x3d')]);_0x163aaf[_0xc780('0x3e')]=qs[_0xc780('0x38')](_[_0xc780('0x3f')](_0x2e0382['query'],_0x30bc2b[_0xc780('0x38')]));if(_0x2e0382[_0xc780('0x36')]['filter']){_0x163aaf[_0xc780('0x3e')]=_[_0xc780('0x40')](_0x163aaf['where'],{'$or':_[_0xc780('0x31')](_0x163aaf['attributes'],function(_0x3dc1ce){var _0x547728={};_0x547728[_0x3dc1ce]={'$like':'%'+_0x2e0382['query'][_0xc780('0x81')]+'%'};return _0x547728;})});}_0x163aaf=_['merge']({},_0x163aaf,_0x2e0382[_0xc780('0x41')]);return _0x2d2dfa[_0xc780('0x80')](_0x163aaf);}})[_0xc780('0x28')](function(_0x37c706){if(_0x37c706){_0x6c2fc8=_0x37c706['length'];if(!_0x2e0382[_0xc780('0x36')]['hasOwnProperty']('nolimit')){_0x163aaf[_0xc780('0x21')]=qs[_0xc780('0x21')](_0x2e0382[_0xc780('0x36')][_0xc780('0x21')]);_0x163aaf[_0xc780('0x20')]=qs[_0xc780('0x20')](_0x2e0382[_0xc780('0x36')][_0xc780('0x20')]);}return _0x2d2dfa[_0xc780('0x80')](_0x163aaf);}})[_0xc780('0x28')](function(_0x2dc6ea){if(_0x2dc6ea){return _0x2dc6ea?{'count':_0x6c2fc8,'rows':_0x2dc6ea}:null;}})[_0xc780('0x28')](respondWithResult(_0x13c300,null))[_0xc780('0x42')](handleError(_0x13c300,null));};
\ No newline at end of file
index 467767e..1b47262 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49bf=['exports','events','../../mysqldb','Team','setMaxListeners','save','remove','emit','hasOwnProperty','hook'];(function(_0x4e5d86,_0x1b998a){var _0x43300e=function(_0x57ea85){while(--_0x57ea85){_0x4e5d86['push'](_0x4e5d86['shift']());}};_0x43300e(++_0x1b998a);}(_0x49bf,0x1a5));var _0xf49b=function(_0xeaf469,_0x22ab6e){_0xeaf469=_0xeaf469-0x0;var _0x52cb68=_0x49bf[_0xeaf469];return _0x52cb68;};'use strict';var EventEmitter=require(_0xf49b('0x0'));var Team=require(_0xf49b('0x1'))['db'][_0xf49b('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0xf49b('0x3')](0x0);var events={'afterCreate':_0xf49b('0x4'),'afterUpdate':'update','afterDestroy':_0xf49b('0x5')};function emitEvent(_0x171a19){return function(_0x2ee909,_0x4e47cf,_0x372458){TeamEvents['emit'](_0x171a19+':'+_0x2ee909['id'],_0x2ee909);TeamEvents[_0xf49b('0x6')](_0x171a19,_0x2ee909);_0x372458(null);};}for(var e in events){if(events[_0xf49b('0x7')](e)){var event=events[e];Team[_0xf49b('0x8')](e,emitEvent(event));}}module[_0xf49b('0x9')]=TeamEvents;
\ No newline at end of file
+var _0x1c35=['update','remove','emit','hasOwnProperty','hook','../../mysqldb','Team'];(function(_0x27b77c,_0x231ebf){var _0x2ae588=function(_0x3bd852){while(--_0x3bd852){_0x27b77c['push'](_0x27b77c['shift']());}};_0x2ae588(++_0x231ebf);}(_0x1c35,0x6e));var _0x51c3=function(_0x2c3c97,_0x14d33c){_0x2c3c97=_0x2c3c97-0x0;var _0x31362c=_0x1c35[_0x2c3c97];return _0x31362c;};'use strict';var EventEmitter=require('events');var Team=require(_0x51c3('0x0'))['db'][_0x51c3('0x1')];var TeamEvents=new EventEmitter();TeamEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x51c3('0x2'),'afterDestroy':_0x51c3('0x3')};function emitEvent(_0x10bb3d){return function(_0x42a996,_0x1c5849,_0x47b6ae){TeamEvents[_0x51c3('0x4')](_0x10bb3d+':'+_0x42a996['id'],_0x42a996);TeamEvents['emit'](_0x10bb3d,_0x42a996);_0x47b6ae(null);};}for(var e in events){if(events[_0x51c3('0x5')](e)){var event=events[e];Team[_0x51c3('0x6')](e,emitEvent(event));}}module['exports']=TeamEvents;
\ No newline at end of file
index c3c135c..b468179 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe704=['moment','rimraf','../../config/environment','./team.attributes','exports','define','util','../../config/logger','api'];(function(_0x284022,_0x453dae){var _0x5c0889=function(_0x4cc881){while(--_0x4cc881){_0x284022['push'](_0x284022['shift']());}};_0x5c0889(++_0x453dae);}(_0xe704,0x1ec));var _0x4e70=function(_0x34c383,_0x578f94){_0x34c383=_0x34c383-0x0;var _0x40b591=_0xe704[_0x34c383];return _0x40b591;};'use strict';var _=require('lodash');var util=require(_0x4e70('0x0'));var logger=require(_0x4e70('0x1'))(_0x4e70('0x2'));var moment=require(_0x4e70('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4e70('0x4'));var config=require(_0x4e70('0x5'));var attributes=require(_0x4e70('0x6'));module[_0x4e70('0x7')]=function(_0x2066b6,_0x317019){return _0x2066b6[_0x4e70('0x8')]('Team',attributes,{'tableName':'teams','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb439=['../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./team.attributes','define','teams','lodash','util'];(function(_0x3f5dca,_0x59472b){var _0x5b833a=function(_0x1cb84b){while(--_0x1cb84b){_0x3f5dca['push'](_0x3f5dca['shift']());}};_0x5b833a(++_0x59472b);}(_0xb439,0x132));var _0x9b43=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xb439[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0x9b43('0x0'));var util=require(_0x9b43('0x1'));var logger=require(_0x9b43('0x2'))('api');var moment=require(_0x9b43('0x3'));var BPromise=require(_0x9b43('0x4'));var rp=require(_0x9b43('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9b43('0x6'));var config=require(_0x9b43('0x7'));var attributes=require(_0x9b43('0x8'));module['exports']=function(_0x5cc90d,_0x1c0b4a){return _0x5cc90d[_0x9b43('0x9')]('Team',attributes,{'tableName':_0x9b43('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 21f938b..2d41f0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdca7=['./team.socket','register','request','then','info','Team,\x20%s,\x20%s','debug','Team,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','redis','localhost','socket.io-emitter'];(function(_0x10c51f,_0x11270f){var _0x56a0cd=function(_0x563ac6){while(--_0x563ac6){_0x10c51f['push'](_0x10c51f['shift']());}};_0x56a0cd(++_0x11270f);}(_0xdca7,0xe6));var _0x7dca=function(_0x5aeb62,_0x233d67){_0x5aeb62=_0x5aeb62-0x0;var _0x22ffee=_0xdca7[_0x5aeb62];return _0x22ffee;};'use strict';var _=require(_0x7dca('0x0'));var util=require('util');var moment=require(_0x7dca('0x1'));var BPromise=require(_0x7dca('0x2'));var rs=require(_0x7dca('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7dca('0x4'))['db'];var utils=require(_0x7dca('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x7dca('0x6'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0x7dca('0x7')]=_['defaults'](config['redis'],{'host':_0x7dca('0x8'),'port':0x18eb});var socket=require(_0x7dca('0x9'))(new Redis(config[_0x7dca('0x7')]));require(_0x7dca('0xa'))[_0x7dca('0xb')](socket);function respondWithRpcPromise(_0x62f3b9,_0x26c1ad,_0x3c6ad7){return new BPromise(function(_0x32aad9,_0x3eeabf){return client[_0x7dca('0xc')](_0x62f3b9,_0x3c6ad7)[_0x7dca('0xd')](function(_0x50eaf6){logger[_0x7dca('0xe')](_0x7dca('0xf'),_0x26c1ad,'request\x20sent');logger[_0x7dca('0x10')](_0x7dca('0x11'),_0x26c1ad,_0x7dca('0x12'),JSON['stringify'](_0x50eaf6));if(_0x50eaf6['error']){if(_0x50eaf6[_0x7dca('0x13')][_0x7dca('0x14')]===0x1f4){logger[_0x7dca('0x13')](_0x7dca('0xf'),_0x26c1ad,_0x50eaf6[_0x7dca('0x13')][_0x7dca('0x15')]);return _0x3eeabf(_0x50eaf6[_0x7dca('0x13')][_0x7dca('0x15')]);}logger[_0x7dca('0x13')](_0x7dca('0xf'),_0x26c1ad,_0x50eaf6[_0x7dca('0x13')][_0x7dca('0x15')]);return _0x32aad9(_0x50eaf6[_0x7dca('0x13')][_0x7dca('0x15')]);}else{logger[_0x7dca('0xe')]('Team,\x20%s,\x20%s',_0x26c1ad,_0x7dca('0x12'));_0x32aad9(_0x50eaf6[_0x7dca('0x16')]['message']);}})[_0x7dca('0x17')](function(_0x53a146){logger['error'](_0x7dca('0xf'),_0x26c1ad,_0x53a146);_0x3eeabf(_0x53a146);});});}
\ No newline at end of file
+var _0x3e00=['client','http','defaults','redis','socket.io-emitter','info','Team,\x20%s,\x20%s','request\x20sent','Team,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x396e83,_0x2d51e2){var _0x4a42cc=function(_0x415496){while(--_0x415496){_0x396e83['push'](_0x396e83['shift']());}};_0x4a42cc(++_0x2d51e2);}(_0x3e00,0xe7));var _0x03e0=function(_0x24be21,_0xd8d7d6){_0x24be21=_0x24be21-0x0;var _0x163ba8=_0x3e00[_0x24be21];return _0x163ba8;};'use strict';var _=require('lodash');var util=require(_0x03e0('0x0'));var moment=require(_0x03e0('0x1'));var BPromise=require(_0x03e0('0x2'));var rs=require(_0x03e0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x03e0('0x4'))['db'];var utils=require(_0x03e0('0x5'));var logger=require(_0x03e0('0x6'))(_0x03e0('0x7'));var config=require(_0x03e0('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x03e0('0x9')][_0x03e0('0xa')]({'port':0x232a});config['redis']=_[_0x03e0('0xb')](config[_0x03e0('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x03e0('0xd'))(new Redis(config['redis']));require('./team.socket')['register'](socket);function respondWithRpcPromise(_0x10c63b,_0x3dba43,_0x4da476){return new BPromise(function(_0x5ca175,_0x63789){return client['request'](_0x10c63b,_0x4da476)['then'](function(_0x555955){logger[_0x03e0('0xe')](_0x03e0('0xf'),_0x3dba43,_0x03e0('0x10'));logger['debug'](_0x03e0('0x11'),_0x3dba43,'request\x20sent',JSON[_0x03e0('0x12')](_0x555955));if(_0x555955[_0x03e0('0x13')]){if(_0x555955['error'][_0x03e0('0x14')]===0x1f4){logger[_0x03e0('0x13')]('Team,\x20%s,\x20%s',_0x3dba43,_0x555955[_0x03e0('0x13')][_0x03e0('0x15')]);return _0x63789(_0x555955[_0x03e0('0x13')][_0x03e0('0x15')]);}logger['error']('Team,\x20%s,\x20%s',_0x3dba43,_0x555955[_0x03e0('0x13')][_0x03e0('0x15')]);return _0x5ca175(_0x555955['error'][_0x03e0('0x15')]);}else{logger['info']('Team,\x20%s,\x20%s',_0x3dba43,_0x03e0('0x10'));_0x5ca175(_0x555955[_0x03e0('0x16')]['message']);}})[_0x03e0('0x17')](function(_0xe67cc1){logger[_0x03e0('0x13')]('Team,\x20%s,\x20%s',_0x3dba43,_0xe67cc1);_0x63789(_0xe67cc1);});});}
\ No newline at end of file
index 9d94abf..89025f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb455=['removeListener','register','length','team:','./team.events','save','remove','update'];(function(_0x269ff5,_0x3b4514){var _0x16b4b4=function(_0x2c6dd7){while(--_0x2c6dd7){_0x269ff5['push'](_0x269ff5['shift']());}};_0x16b4b4(++_0x3b4514);}(_0xb455,0x104));var _0x5b45=function(_0xf2e578,_0x335453){_0xf2e578=_0xf2e578-0x0;var _0x525828=_0xb455[_0xf2e578];return _0x525828;};'use strict';var TeamEvents=require(_0x5b45('0x0'));var events=[_0x5b45('0x1'),_0x5b45('0x2'),_0x5b45('0x3')];function createListener(_0x3b9f02,_0x547fe6){return function(_0x55d82b){_0x547fe6['emit'](_0x3b9f02,_0x55d82b);};}function removeListener(_0x9009dd,_0x3c7343){return function(){TeamEvents[_0x5b45('0x4')](_0x9009dd,_0x3c7343);};}exports[_0x5b45('0x5')]=function(_0x3321c2){for(var _0x41466c=0x0,_0x414c7d=events[_0x5b45('0x6')];_0x41466c<_0x414c7d;_0x41466c++){var _0x2e3618=events[_0x41466c];var _0xd51a90=createListener(_0x5b45('0x7')+_0x2e3618,_0x3321c2);TeamEvents['on'](_0x2e3618,_0xd51a90);}};
\ No newline at end of file
+var _0x1d6a=['save','remove','update','emit','removeListener','register','length','team:'];(function(_0x872b02,_0x4f4458){var _0x1a6b24=function(_0x1dfb4e){while(--_0x1dfb4e){_0x872b02['push'](_0x872b02['shift']());}};_0x1a6b24(++_0x4f4458);}(_0x1d6a,0x190));var _0xa1d6=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x1d6a[_0x4b369d];return _0x571a98;};'use strict';var TeamEvents=require('./team.events');var events=[_0xa1d6('0x0'),_0xa1d6('0x1'),_0xa1d6('0x2')];function createListener(_0x5f1e9d,_0x26e3cb){return function(_0x5368d5){_0x26e3cb[_0xa1d6('0x3')](_0x5f1e9d,_0x5368d5);};}function removeListener(_0x40c58f,_0x4c4317){return function(){TeamEvents[_0xa1d6('0x4')](_0x40c58f,_0x4c4317);};}exports[_0xa1d6('0x5')]=function(_0x3eb7ca){for(var _0x5be9ff=0x0,_0x1452e7=events[_0xa1d6('0x6')];_0x5be9ff<_0x1452e7;_0x5be9ff++){var _0x5833e4=events[_0x5be9ff];var _0x4678f9=createListener(_0xa1d6('0x7')+_0x5833e4,_0x3eb7ca);TeamEvents['on'](_0x5833e4,_0x4678f9);}};
\ No newline at end of file
index 135ae44..e09b692 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(_0x2e65ee,_0x29dad9){var _0x4c712a=function(_0xca593f){while(--_0xca593f){_0x2e65ee['push'](_0x2e65ee['shift']());}};_0x4c712a(++_0x29dad9);}(_0x9c44,0x178));var _0x49c4=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0x9c44[_0x32f7d7];return _0x133d09;};'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 _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x1d0948,_0x29a5ad){var _0x405614=function(_0x1ac2af){while(--_0x1ac2af){_0x1d0948['push'](_0x1d0948['shift']());}};_0x405614(++_0x29a5ad);}(_0x9c44,0x178));var _0x49c4=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0x9c44[_0x21549c];return _0x426cbd;};'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 e09ccfc..0e8c466 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed24=['INTEGER','sequelize','exports'];(function(_0x4bad68,_0x2a89aa){var _0x572e22=function(_0x1c43cf){while(--_0x1c43cf){_0x4bad68['push'](_0x4bad68['shift']());}};_0x572e22(++_0x2a89aa);}(_0xed24,0xe5));var _0x4ed2=function(_0x3fce2e,_0x28cf73){_0x3fce2e=_0x3fce2e-0x0;var _0x20284f=_0xed24[_0x3fce2e];return _0x20284f;};'use strict';var Sequelize=require(_0x4ed2('0x0'));module[_0x4ed2('0x1')]={'penalty':{'type':Sequelize[_0x4ed2('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9a28=['exports','INTEGER','sequelize'];(function(_0x2d5d2a,_0x3b82fc){var _0x2bbcd7=function(_0x4ff25f){while(--_0x4ff25f){_0x2d5d2a['push'](_0x2d5d2a['shift']());}};_0x2bbcd7(++_0x3b82fc);}(_0x9a28,0x1bb));var _0x89a2=function(_0x45b034,_0x3a57dd){_0x45b034=_0x45b034-0x0;var _0x509cb0=_0x9a28[_0x45b034];return _0x509cb0;};'use strict';var Sequelize=require(_0x89a2('0x0'));module[_0x89a2('0x1')]={'penalty':{'type':Sequelize[_0x89a2('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index ce9c7af..9490ded 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6364=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','TeamVoiceQueue'];(function(_0x2d8d69,_0x8e47ff){var _0x39ae22=function(_0xd7935e){while(--_0xd7935e){_0x2d8d69['push'](_0x2d8d69['shift']());}};_0x39ae22(++_0x8e47ff);}(_0x6364,0x8f));var _0x4636=function(_0x5a8422,_0x2b4e95){_0x5a8422=_0x5a8422-0x0;var _0x10aa57=_0x6364[_0x5a8422];return _0x10aa57;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4636('0x0'))(_0x4636('0x1'));var moment=require(_0x4636('0x2'));var BPromise=require(_0x4636('0x3'));var rp=require(_0x4636('0x4'));var fs=require('fs');var path=require(_0x4636('0x5'));var rimraf=require(_0x4636('0x6'));var config=require(_0x4636('0x7'));var attributes=require('./teamVoiceQueue.attributes');module[_0x4636('0x8')]=function(_0x30201f,_0x3e0ed6){return _0x30201f[_0x4636('0x9')](_0x4636('0xa'),attributes,{'tableName':'team_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd2ea=['team_has_voice_queues','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./teamVoiceQueue.attributes','exports','define','TeamVoiceQueue'];(function(_0x50aa2e,_0xfbd6f0){var _0x5e07f0=function(_0x3ed540){while(--_0x3ed540){_0x50aa2e['push'](_0x50aa2e['shift']());}};_0x5e07f0(++_0xfbd6f0);}(_0xd2ea,0x15f));var _0xad2e=function(_0x19d625,_0x8a96e5){_0x19d625=_0x19d625-0x0;var _0x28807b=_0xd2ea[_0x19d625];return _0x28807b;};'use strict';var _=require(_0xad2e('0x0'));var util=require(_0xad2e('0x1'));var logger=require(_0xad2e('0x2'))(_0xad2e('0x3'));var moment=require(_0xad2e('0x4'));var BPromise=require('bluebird');var rp=require(_0xad2e('0x5'));var fs=require('fs');var path=require(_0xad2e('0x6'));var rimraf=require(_0xad2e('0x7'));var config=require(_0xad2e('0x8'));var attributes=require(_0xad2e('0x9'));module[_0xad2e('0xa')]=function(_0x29e97f,_0x592e8b){return _0x29e97f[_0xad2e('0xb')](_0xad2e('0xc'),attributes,{'tableName':_0xad2e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9651c6a..8e5068a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1036=['request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','TeamVoiceQueue,\x20%s,\x20%s'];(function(_0x142ec2,_0x5bb03d){var _0x45ef4e=function(_0x4bc513){while(--_0x4bc513){_0x142ec2['push'](_0x142ec2['shift']());}};_0x45ef4e(++_0x5bb03d);}(_0x1036,0x18f));var _0x6103=function(_0x139ef5,_0x409104){_0x139ef5=_0x139ef5-0x0;var _0x56b9f5=_0x1036[_0x139ef5];return _0x56b9f5;};'use strict';var _=require(_0x6103('0x0'));var util=require(_0x6103('0x1'));var moment=require('moment');var BPromise=require(_0x6103('0x2'));var rs=require(_0x6103('0x3'));var fs=require('fs');var Redis=require(_0x6103('0x4'));var db=require(_0x6103('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x6103('0x6'));var config=require(_0x6103('0x7'));var jayson=require(_0x6103('0x8'));var client=jayson[_0x6103('0x9')][_0x6103('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1c019e,_0x33a804,_0x57ea6d){return new BPromise(function(_0x18887c,_0x4981b9){return client[_0x6103('0xb')](_0x1c019e,_0x57ea6d)[_0x6103('0xc')](function(_0x287611){logger[_0x6103('0xd')](_0x6103('0xe'),_0x33a804,_0x6103('0xf'));logger[_0x6103('0x10')](_0x6103('0x11'),_0x33a804,'request\x20sent',JSON[_0x6103('0x12')](_0x287611));if(_0x287611['error']){if(_0x287611[_0x6103('0x13')][_0x6103('0x14')]===0x1f4){logger['error'](_0x6103('0xe'),_0x33a804,_0x287611[_0x6103('0x13')][_0x6103('0x15')]);return _0x4981b9(_0x287611[_0x6103('0x13')]['message']);}logger[_0x6103('0x13')](_0x6103('0xe'),_0x33a804,_0x287611[_0x6103('0x13')][_0x6103('0x15')]);return _0x18887c(_0x287611[_0x6103('0x13')]['message']);}else{logger[_0x6103('0xd')](_0x6103('0xe'),_0x33a804,_0x6103('0xf'));_0x18887c(_0x287611[_0x6103('0x16')][_0x6103('0x15')]);}})['catch'](function(_0x2aa484){logger[_0x6103('0x13')](_0x6103('0xe'),_0x33a804,_0x2aa484);_0x4981b9(_0x2aa484);});});}
\ No newline at end of file
+var _0xd90e=['TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x15ac06,_0x35d91f){var _0x54eec8=function(_0x451322){while(--_0x451322){_0x15ac06['push'](_0x15ac06['shift']());}};_0x54eec8(++_0x35d91f);}(_0xd90e,0x17c));var _0xed90=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd90e[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xed90('0x0'));var util=require('util');var moment=require(_0xed90('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xed90('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xed90('0x3'));var logger=require(_0xed90('0x4'))(_0xed90('0x5'));var config=require(_0xed90('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xed90('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x12fbf8,_0x34c10f,_0x1df44e){return new BPromise(function(_0x2f917b,_0x25987d){return client['request'](_0x12fbf8,_0x1df44e)['then'](function(_0x7c9e1f){logger['info'](_0xed90('0x8'),_0x34c10f,_0xed90('0x9'));logger[_0xed90('0xa')](_0xed90('0xb'),_0x34c10f,'request\x20sent',JSON[_0xed90('0xc')](_0x7c9e1f));if(_0x7c9e1f['error']){if(_0x7c9e1f[_0xed90('0xd')][_0xed90('0xe')]===0x1f4){logger['error']('TeamVoiceQueue,\x20%s,\x20%s',_0x34c10f,_0x7c9e1f[_0xed90('0xd')][_0xed90('0xf')]);return _0x25987d(_0x7c9e1f['error'][_0xed90('0xf')]);}logger[_0xed90('0xd')](_0xed90('0x8'),_0x34c10f,_0x7c9e1f[_0xed90('0xd')][_0xed90('0xf')]);return _0x2f917b(_0x7c9e1f[_0xed90('0xd')][_0xed90('0xf')]);}else{logger['info'](_0xed90('0x8'),_0x34c10f,_0xed90('0x9'));_0x2f917b(_0x7c9e1f['result']['message']);}})[_0xed90('0x10')](function(_0xa87e97){logger['error'](_0xed90('0x8'),_0x34c10f,_0xa87e97);_0x25987d(_0xa87e97);});});}
\ No newline at end of file
index 0b73040..775fcd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1189=['create','put','update','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./template.controller','get','index','/:id','isAuthenticated','show','post'];(function(_0x4bf8cf,_0x48cbdd){var _0x53b949=function(_0x45f9dd){while(--_0x45f9dd){_0x4bf8cf['push'](_0x4bf8cf['shift']());}};_0x53b949(++_0x48cbdd);}(_0x1189,0x17f));var _0x9118=function(_0x1604c4,_0x1696d2){_0x1604c4=_0x1604c4-0x0;var _0xe3ae19=_0x1189[_0x1604c4];return _0xe3ae19;};'use strict';var multer=require(_0x9118('0x0'));var util=require(_0x9118('0x1'));var path=require(_0x9118('0x2'));var timeout=require(_0x9118('0x3'));var express=require('express');var router=express[_0x9118('0x4')]();var fs_extra=require(_0x9118('0x5'));var auth=require(_0x9118('0x6'));var interaction=require(_0x9118('0x7'));var config=require(_0x9118('0x8'));var controller=require(_0x9118('0x9'));router[_0x9118('0xa')]('/',auth['isAuthenticated'](),controller[_0x9118('0xb')]);router[_0x9118('0xa')](_0x9118('0xc'),auth[_0x9118('0xd')](),controller[_0x9118('0xe')]);router[_0x9118('0xf')]('/',auth['isAuthenticated'](),controller[_0x9118('0x10')]);router[_0x9118('0x11')](_0x9118('0xc'),auth[_0x9118('0xd')](),controller[_0x9118('0x12')]);router[_0x9118('0x13')](_0x9118('0xc'),auth['isAuthenticated'](),controller[_0x9118('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x75b6=['../../components/interaction/service','../../config/environment','get','index','/:id','show','isAuthenticated','create','put','update','delete','destroy','multer','connect-timeout','express','Router','../../components/auth/service'];(function(_0x4aeaf9,_0x9b70aa){var _0x168966=function(_0x3cb2bc){while(--_0x3cb2bc){_0x4aeaf9['push'](_0x4aeaf9['shift']());}};_0x168966(++_0x9b70aa);}(_0x75b6,0x1a4));var _0x675b=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x75b6[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0x675b('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x675b('0x1'));var express=require(_0x675b('0x2'));var router=express[_0x675b('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x675b('0x4'));var interaction=require(_0x675b('0x5'));var config=require(_0x675b('0x6'));var controller=require('./template.controller');router[_0x675b('0x7')]('/',auth['isAuthenticated'](),controller[_0x675b('0x8')]);router[_0x675b('0x7')](_0x675b('0x9'),auth['isAuthenticated'](),controller[_0x675b('0xa')]);router['post']('/',auth[_0x675b('0xb')](),controller[_0x675b('0xc')]);router[_0x675b('0xd')](_0x675b('0x9'),auth[_0x675b('0xb')](),controller[_0x675b('0xe')]);router[_0x675b('0xf')](_0x675b('0x9'),auth[_0x675b('0xb')](),controller[_0x675b('0x10')]);module['exports']=router;
\ No newline at end of file
index 0f4a87f..c27e420 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf01b=['sequelize','exports','STRING','TEXT'];(function(_0x3c5424,_0x29a651){var _0x53126a=function(_0x56306c){while(--_0x56306c){_0x3c5424['push'](_0x3c5424['shift']());}};_0x53126a(++_0x29a651);}(_0xf01b,0xa8));var _0xbf01=function(_0x4fcd95,_0x470605){_0x4fcd95=_0x4fcd95-0x0;var _0x4d47bf=_0xf01b[_0x4fcd95];return _0x4d47bf;};'use strict';var Sequelize=require(_0xbf01('0x0'));module[_0xbf01('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xbf01('0x2')]},'html':{'type':Sequelize[_0xbf01('0x3')]}};
\ No newline at end of file
+var _0x507b=['STRING','TEXT','sequelize','exports'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0x507b,0x92));var _0xb507=function(_0x185d4c,_0x207603){_0x185d4c=_0x185d4c-0x0;var _0x293f37=_0x507b[_0x185d4c];return _0x293f37;};'use strict';var Sequelize=require(_0xb507('0x0'));module[_0xb507('0x1')]={'name':{'type':Sequelize[_0xb507('0x2')]},'description':{'type':Sequelize[_0xb507('0x2')]},'html':{'type':Sequelize[_0xb507('0x3')]}};
\ No newline at end of file
index 887b282..28e6593 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eb6=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','json','offset','undefined','count','set','Content-Range','reject','save','then','get','Templates','destroy','end','error','name','index','map','Template','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','create','user','role','UserProfileSection','find','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service'];(function(_0x4cc809,_0xf6d616){var _0x5556a6=function(_0xa05f5b){while(--_0xa05f5b){_0x4cc809['push'](_0x4cc809['shift']());}};_0x5556a6(++_0xf6d616);}(_0x3eb6,0x189));var _0x63eb=function(_0x42446c,_0x106c25){_0x42446c=_0x42446c-0x0;var _0x29059d=_0x3eb6[_0x42446c];return _0x29059d;};'use strict';var emlformat=require(_0x63eb('0x0'));var rimraf=require(_0x63eb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x63eb('0x2'));var moment=require(_0x63eb('0x3'));var BPromise=require(_0x63eb('0x4'));var Mustache=require(_0x63eb('0x5'));var util=require(_0x63eb('0x6'));var path=require('path');var sox=require(_0x63eb('0x7'));var csv=require('to-csv');var ejs=require(_0x63eb('0x8'));var fs=require('fs');var fs_extra=require(_0x63eb('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x63eb('0xa'));var jsforce=require(_0x63eb('0xb'));var deskjs=require(_0x63eb('0xc'));var toCsv=require(_0x63eb('0xd'));var querystring=require('querystring');var Papa=require(_0x63eb('0xe'));var Redis=require(_0x63eb('0xf'));var authService=require(_0x63eb('0x10'));var qs=require(_0x63eb('0x11'));var as=require(_0x63eb('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x63eb('0x13'))(_0x63eb('0x14'));var utils=require(_0x63eb('0x15'));var config=require(_0x63eb('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xfdab1b,_0xdc61c){_0xdc61c=_0xdc61c||0xcc;return function(_0x38a6a9){if(_0x38a6a9){return _0xfdab1b[_0x63eb('0x17')](_0xdc61c);}return _0xfdab1b[_0x63eb('0x18')](_0xdc61c)['end']();};}function respondWithResult(_0x20bce5,_0x21d35f){_0x21d35f=_0x21d35f||0xc8;return function(_0x358ae9){if(_0x358ae9){return _0x20bce5[_0x63eb('0x18')](_0x21d35f)[_0x63eb('0x19')](_0x358ae9);}};}function respondWithFilteredResult(_0x2b8dc1,_0x1b2513){return function(_0x203a82){if(_0x203a82){var _0x2803b8=typeof _0x1b2513[_0x63eb('0x1a')]==='undefined'&&typeof _0x1b2513['limit']===_0x63eb('0x1b');var _0x47722a=_0x203a82[_0x63eb('0x1c')];var _0x227310=_0x2803b8?0x0:_0x1b2513[_0x63eb('0x1a')];var _0x8de49d=_0x2803b8?_0x203a82[_0x63eb('0x1c')]:_0x1b2513[_0x63eb('0x1a')]+_0x1b2513['limit'];var _0x3ed371;if(_0x8de49d>=_0x47722a){_0x8de49d=_0x47722a;_0x3ed371=0xc8;}else{_0x3ed371=0xce;}_0x2b8dc1['status'](_0x3ed371);return _0x2b8dc1[_0x63eb('0x1d')](_0x63eb('0x1e'),_0x227310+'-'+_0x8de49d+'/'+_0x47722a)[_0x63eb('0x19')](_0x203a82);}return null;};}function patchUpdates(_0x3b99a6){return function(_0x2da96f){try{jsonpatch['apply'](_0x2da96f,_0x3b99a6,!![]);}catch(_0x4d67fa){return BPromise[_0x63eb('0x1f')](_0x4d67fa);}return _0x2da96f[_0x63eb('0x20')]();};}function saveUpdates(_0x4f9aa0,_0x56b077){return function(_0x70514c){if(_0x70514c){return _0x70514c['update'](_0x4f9aa0)['then'](function(_0x18003d){return _0x18003d;});}return null;};}function removeEntity(_0x5e21b8,_0x239b83){return function(_0x47829e){if(_0x47829e){return _0x47829e['destroy']()[_0x63eb('0x21')](function(){var _0x357fe8=_0x47829e[_0x63eb('0x22')]({'plain':!![]});var _0x47ffa1=_0x63eb('0x23');return db['UserProfileResource'][_0x63eb('0x24')]({'where':{'type':_0x47ffa1,'resourceId':_0x357fe8['id']}})[_0x63eb('0x21')](function(){return _0x47829e;});})[_0x63eb('0x21')](function(){_0x5e21b8['status'](0xcc)[_0x63eb('0x25')]();});}};}function handleEntityNotFound(_0x37e2b8,_0x31382b){return function(_0x57d8a8){if(!_0x57d8a8){_0x37e2b8[_0x63eb('0x17')](0x194);}return _0x57d8a8;};}function handleError(_0x28bc28,_0x35e7e5){_0x35e7e5=_0x35e7e5||0x1f4;return function(_0x126ed9){logger[_0x63eb('0x26')](_0x126ed9['stack']);if(_0x126ed9['name']){delete _0x126ed9[_0x63eb('0x27')];}_0x28bc28[_0x63eb('0x18')](_0x35e7e5)['send'](_0x126ed9);};}exports[_0x63eb('0x28')]=function(_0x5aaac6,_0x57f1e2){var _0x22fa56={},_0x2d00be={},_0x230597={'count':0x0,'rows':[]};var _0x3e7301=_[_0x63eb('0x29')](db[_0x63eb('0x2a')][_0x63eb('0x2b')],function(_0x5b48f2){return{'name':_0x5b48f2[_0x63eb('0x2c')],'type':_0x5b48f2[_0x63eb('0x2d')][_0x63eb('0x2e')]};});_0x2d00be[_0x63eb('0x2f')]=_[_0x63eb('0x29')](_0x3e7301,_0x63eb('0x27'));_0x2d00be['query']=_['keys'](_0x5aaac6[_0x63eb('0x30')]);_0x2d00be[_0x63eb('0x31')]=_[_0x63eb('0x32')](_0x2d00be[_0x63eb('0x2f')],_0x2d00be[_0x63eb('0x30')]);_0x22fa56[_0x63eb('0x33')]=_[_0x63eb('0x32')](_0x2d00be[_0x63eb('0x2f')],qs[_0x63eb('0x34')](_0x5aaac6[_0x63eb('0x30')]['fields']));_0x22fa56['attributes']=_0x22fa56[_0x63eb('0x33')][_0x63eb('0x35')]?_0x22fa56[_0x63eb('0x33')]:_0x2d00be[_0x63eb('0x2f')];if(!_0x5aaac6['query'][_0x63eb('0x36')](_0x63eb('0x37'))){_0x22fa56[_0x63eb('0x38')]=qs[_0x63eb('0x38')](_0x5aaac6[_0x63eb('0x30')][_0x63eb('0x38')]);_0x22fa56['offset']=qs[_0x63eb('0x1a')](_0x5aaac6[_0x63eb('0x30')][_0x63eb('0x1a')]);}_0x22fa56[_0x63eb('0x39')]=qs[_0x63eb('0x3a')](_0x5aaac6[_0x63eb('0x30')]['sort']);_0x22fa56[_0x63eb('0x3b')]=qs['filters'](_['pick'](_0x5aaac6[_0x63eb('0x30')],_0x2d00be['filters']),_0x3e7301);if(_0x5aaac6[_0x63eb('0x30')][_0x63eb('0x3c')]){_0x22fa56[_0x63eb('0x3b')]=_[_0x63eb('0x3d')](_0x22fa56['where'],{'$or':_[_0x63eb('0x29')](_0x3e7301,function(_0x46cc85){if(_0x46cc85[_0x63eb('0x2d')]!==_0x63eb('0x3e')){var _0x2263bf={};_0x2263bf[_0x46cc85[_0x63eb('0x27')]]={'$like':'%'+_0x5aaac6[_0x63eb('0x30')]['filter']+'%'};return _0x2263bf;}})});}_0x22fa56=_[_0x63eb('0x3d')]({},_0x22fa56,_0x5aaac6[_0x63eb('0x3f')]);var _0x31c1a2={'where':_0x22fa56[_0x63eb('0x3b')]};return db[_0x63eb('0x2a')][_0x63eb('0x1c')](_0x31c1a2)['then'](function(_0x144215){_0x230597[_0x63eb('0x1c')]=_0x144215;if(_0x5aaac6[_0x63eb('0x30')][_0x63eb('0x40')]){_0x22fa56[_0x63eb('0x41')]=[{'all':!![]}];}return db[_0x63eb('0x2a')][_0x63eb('0x42')](_0x22fa56);})[_0x63eb('0x21')](function(_0x23d2cf){_0x230597[_0x63eb('0x43')]=_0x23d2cf;return _0x230597;})[_0x63eb('0x21')](respondWithFilteredResult(_0x57f1e2,_0x22fa56))[_0x63eb('0x44')](handleError(_0x57f1e2,null));};exports[_0x63eb('0x45')]=function(_0x4ce7b5,_0x547399){var _0x1a4d74={'raw':!![],'where':{'id':_0x4ce7b5[_0x63eb('0x46')]['id']}},_0x302447={};_0x302447[_0x63eb('0x2f')]=_['keys'](db[_0x63eb('0x2a')][_0x63eb('0x2b')]);_0x302447[_0x63eb('0x30')]=_[_0x63eb('0x47')](_0x4ce7b5[_0x63eb('0x30')]);_0x302447[_0x63eb('0x31')]=_[_0x63eb('0x32')](_0x302447[_0x63eb('0x2f')],_0x302447[_0x63eb('0x30')]);_0x1a4d74['attributes']=_[_0x63eb('0x32')](_0x302447[_0x63eb('0x2f')],qs['fields'](_0x4ce7b5['query']['fields']));_0x1a4d74['attributes']=_0x1a4d74[_0x63eb('0x33')][_0x63eb('0x35')]?_0x1a4d74[_0x63eb('0x33')]:_0x302447['model'];if(_0x4ce7b5[_0x63eb('0x30')]['includeAll']){_0x1a4d74[_0x63eb('0x41')]=[{'all':!![]}];}_0x1a4d74=_[_0x63eb('0x3d')]({},_0x1a4d74,_0x4ce7b5[_0x63eb('0x3f')]);return db[_0x63eb('0x2a')]['find'](_0x1a4d74)[_0x63eb('0x21')](handleEntityNotFound(_0x547399,null))[_0x63eb('0x21')](respondWithResult(_0x547399,null))[_0x63eb('0x44')](handleError(_0x547399,null));};exports[_0x63eb('0x48')]=function(_0x543a60,_0x5748c9){return db['Template'][_0x63eb('0x48')](_0x543a60['body'],{})[_0x63eb('0x21')](function(_0x3a9c77){var _0x2bd66a=_0x543a60[_0x63eb('0x49')][_0x63eb('0x22')]({'plain':!![]});if(!_0x2bd66a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2bd66a[_0x63eb('0x4a')]==='user'){var _0x34f81b=_0x3a9c77['get']({'plain':!![]});var _0x4de4fa=_0x63eb('0x23');return db[_0x63eb('0x4b')][_0x63eb('0x4c')]({'where':{'name':_0x4de4fa,'userProfileId':_0x2bd66a['userProfileId']},'raw':!![]})[_0x63eb('0x21')](function(_0x3750e0){if(_0x3750e0&&_0x3750e0[_0x63eb('0x4d')]===0x0){return db[_0x63eb('0x4e')][_0x63eb('0x48')]({'name':_0x34f81b[_0x63eb('0x27')],'resourceId':_0x34f81b['id'],'type':_0x3750e0['name'],'sectionId':_0x3750e0['id']},{})['then'](function(){return _0x3a9c77;});}else{return _0x3a9c77;}})['catch'](function(_0x1d42a2){logger['error'](_0x63eb('0x4f'),_0x1d42a2);throw _0x1d42a2;});}return _0x3a9c77;})['then'](respondWithResult(_0x5748c9,0xc9))[_0x63eb('0x44')](handleError(_0x5748c9,null));};exports[_0x63eb('0x50')]=function(_0xe71c6a,_0x323d24){if(_0xe71c6a[_0x63eb('0x51')]['id']){delete _0xe71c6a[_0x63eb('0x51')]['id'];}return db[_0x63eb('0x2a')]['find']({'where':{'id':_0xe71c6a[_0x63eb('0x46')]['id']}})[_0x63eb('0x21')](handleEntityNotFound(_0x323d24,null))['then'](saveUpdates(_0xe71c6a['body'],null))[_0x63eb('0x21')](respondWithResult(_0x323d24,null))[_0x63eb('0x44')](handleError(_0x323d24,null));};exports[_0x63eb('0x24')]=function(_0x231aad,_0x1178ad){return db[_0x63eb('0x2a')][_0x63eb('0x4c')]({'where':{'id':_0x231aad[_0x63eb('0x46')]['id']}})['then'](handleEntityNotFound(_0x1178ad,null))[_0x63eb('0x21')](removeEntity(_0x1178ad,null))['catch'](handleError(_0x1178ad,null));};
\ No newline at end of file
+var _0x9494=['key','model','query','keys','filters','attributes','intersection','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','rows','catch','params','rawAttributes','fields','length','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Templates','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','save','update','destroy','then','get','sendStatus','error','name','send','index','map','Template','fieldName','type'];(function(_0x5072f2,_0x125bca){var _0xc0e70d=function(_0x466480){while(--_0x466480){_0x5072f2['push'](_0x5072f2['shift']());}};_0xc0e70d(++_0x125bca);}(_0x9494,0x1c0));var _0x4949=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9494[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x4949('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4949('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4949('0x2'));var moment=require('moment');var BPromise=require(_0x4949('0x3'));var Mustache=require(_0x4949('0x4'));var util=require(_0x4949('0x5'));var path=require(_0x4949('0x6'));var sox=require(_0x4949('0x7'));var csv=require(_0x4949('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4949('0x9'));var _=require(_0x4949('0xa'));var squel=require(_0x4949('0xb'));var crypto=require(_0x4949('0xc'));var jsforce=require(_0x4949('0xd'));var deskjs=require(_0x4949('0xe'));var toCsv=require(_0x4949('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x4949('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x4949('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4949('0x11'))(_0x4949('0x12'));var utils=require('../../config/utils');var config=require(_0x4949('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x4949('0x14'))['db'];function respondWithStatusCode(_0x62c587,_0x3f7ceb){_0x3f7ceb=_0x3f7ceb||0xcc;return function(_0x1e3a06){if(_0x1e3a06){return _0x62c587['sendStatus'](_0x3f7ceb);}return _0x62c587['status'](_0x3f7ceb)[_0x4949('0x15')]();};}function respondWithResult(_0x378369,_0x5a7e04){_0x5a7e04=_0x5a7e04||0xc8;return function(_0x46e3cf){if(_0x46e3cf){return _0x378369[_0x4949('0x16')](_0x5a7e04)[_0x4949('0x17')](_0x46e3cf);}};}function respondWithFilteredResult(_0x51559a,_0x30ae43){return function(_0x49cdd8){if(_0x49cdd8){var _0x3e3149=typeof _0x30ae43[_0x4949('0x18')]===_0x4949('0x19')&&typeof _0x30ae43[_0x4949('0x1a')]===_0x4949('0x19');var _0x2dc271=_0x49cdd8['count'];var _0x9c0ad8=_0x3e3149?0x0:_0x30ae43[_0x4949('0x18')];var _0x5cd014=_0x3e3149?_0x49cdd8[_0x4949('0x1b')]:_0x30ae43['offset']+_0x30ae43[_0x4949('0x1a')];var _0x525283;if(_0x5cd014>=_0x2dc271){_0x5cd014=_0x2dc271;_0x525283=0xc8;}else{_0x525283=0xce;}_0x51559a[_0x4949('0x16')](_0x525283);return _0x51559a[_0x4949('0x1c')](_0x4949('0x1d'),_0x9c0ad8+'-'+_0x5cd014+'/'+_0x2dc271)[_0x4949('0x17')](_0x49cdd8);}return null;};}function patchUpdates(_0x114511){return function(_0x8416f7){try{jsonpatch['apply'](_0x8416f7,_0x114511,!![]);}catch(_0x44c681){return BPromise['reject'](_0x44c681);}return _0x8416f7[_0x4949('0x1e')]();};}function saveUpdates(_0x21734e,_0x2ec56e){return function(_0x58aca7){if(_0x58aca7){return _0x58aca7[_0x4949('0x1f')](_0x21734e)['then'](function(_0x113325){return _0x113325;});}return null;};}function removeEntity(_0x2ffc49,_0x225812){return function(_0x3c9186){if(_0x3c9186){return _0x3c9186[_0x4949('0x20')]()[_0x4949('0x21')](function(){var _0x1a7a81=_0x3c9186[_0x4949('0x22')]({'plain':!![]});var _0x3dbdf1='Templates';return db['UserProfileResource'][_0x4949('0x20')]({'where':{'type':_0x3dbdf1,'resourceId':_0x1a7a81['id']}})[_0x4949('0x21')](function(){return _0x3c9186;});})[_0x4949('0x21')](function(){_0x2ffc49[_0x4949('0x16')](0xcc)[_0x4949('0x15')]();});}};}function handleEntityNotFound(_0x2d7e29,_0x1c518e){return function(_0x474c54){if(!_0x474c54){_0x2d7e29[_0x4949('0x23')](0x194);}return _0x474c54;};}function handleError(_0x29acf9,_0x425bf8){_0x425bf8=_0x425bf8||0x1f4;return function(_0x24b6a6){logger[_0x4949('0x24')](_0x24b6a6['stack']);if(_0x24b6a6[_0x4949('0x25')]){delete _0x24b6a6[_0x4949('0x25')];}_0x29acf9[_0x4949('0x16')](_0x425bf8)[_0x4949('0x26')](_0x24b6a6);};}exports[_0x4949('0x27')]=function(_0x299c41,_0x5d4bfe){var _0x70abbb={},_0x3c96b5={},_0x2ca29d={'count':0x0,'rows':[]};var _0x5b86a6=_[_0x4949('0x28')](db[_0x4949('0x29')]['rawAttributes'],function(_0x3ce115){return{'name':_0x3ce115[_0x4949('0x2a')],'type':_0x3ce115[_0x4949('0x2b')][_0x4949('0x2c')]};});_0x3c96b5[_0x4949('0x2d')]=_[_0x4949('0x28')](_0x5b86a6,'name');_0x3c96b5[_0x4949('0x2e')]=_[_0x4949('0x2f')](_0x299c41[_0x4949('0x2e')]);_0x3c96b5[_0x4949('0x30')]=_['intersection'](_0x3c96b5['model'],_0x3c96b5[_0x4949('0x2e')]);_0x70abbb[_0x4949('0x31')]=_[_0x4949('0x32')](_0x3c96b5[_0x4949('0x2d')],qs['fields'](_0x299c41['query']['fields']));_0x70abbb[_0x4949('0x31')]=_0x70abbb[_0x4949('0x31')]['length']?_0x70abbb['attributes']:_0x3c96b5[_0x4949('0x2d')];if(!_0x299c41[_0x4949('0x2e')][_0x4949('0x33')](_0x4949('0x34'))){_0x70abbb[_0x4949('0x1a')]=qs['limit'](_0x299c41[_0x4949('0x2e')][_0x4949('0x1a')]);_0x70abbb[_0x4949('0x18')]=qs[_0x4949('0x18')](_0x299c41[_0x4949('0x2e')][_0x4949('0x18')]);}_0x70abbb[_0x4949('0x35')]=qs[_0x4949('0x36')](_0x299c41['query'][_0x4949('0x36')]);_0x70abbb[_0x4949('0x37')]=qs['filters'](_[_0x4949('0x38')](_0x299c41['query'],_0x3c96b5[_0x4949('0x30')]),_0x5b86a6);if(_0x299c41[_0x4949('0x2e')][_0x4949('0x39')]){_0x70abbb[_0x4949('0x37')]=_['merge'](_0x70abbb['where'],{'$or':_[_0x4949('0x28')](_0x5b86a6,function(_0x2670b8){if(_0x2670b8[_0x4949('0x2b')]!==_0x4949('0x3a')){var _0x32fec3={};_0x32fec3[_0x2670b8[_0x4949('0x25')]]={'$like':'%'+_0x299c41[_0x4949('0x2e')][_0x4949('0x39')]+'%'};return _0x32fec3;}})});}_0x70abbb=_[_0x4949('0x3b')]({},_0x70abbb,_0x299c41[_0x4949('0x3c')]);var _0xff77a5={'where':_0x70abbb[_0x4949('0x37')]};return db[_0x4949('0x29')][_0x4949('0x1b')](_0xff77a5)[_0x4949('0x21')](function(_0x15874d){_0x2ca29d['count']=_0x15874d;if(_0x299c41[_0x4949('0x2e')]['includeAll']){_0x70abbb[_0x4949('0x3d')]=[{'all':!![]}];}return db[_0x4949('0x29')][_0x4949('0x3e')](_0x70abbb);})['then'](function(_0x6f177a){_0x2ca29d[_0x4949('0x3f')]=_0x6f177a;return _0x2ca29d;})['then'](respondWithFilteredResult(_0x5d4bfe,_0x70abbb))[_0x4949('0x40')](handleError(_0x5d4bfe,null));};exports['show']=function(_0x492d97,_0x5d6f8b){var _0x495339={'raw':!![],'where':{'id':_0x492d97[_0x4949('0x41')]['id']}},_0x1f05c4={};_0x1f05c4[_0x4949('0x2d')]=_['keys'](db['Template'][_0x4949('0x42')]);_0x1f05c4[_0x4949('0x2e')]=_[_0x4949('0x2f')](_0x492d97[_0x4949('0x2e')]);_0x1f05c4['filters']=_[_0x4949('0x32')](_0x1f05c4[_0x4949('0x2d')],_0x1f05c4[_0x4949('0x2e')]);_0x495339[_0x4949('0x31')]=_[_0x4949('0x32')](_0x1f05c4[_0x4949('0x2d')],qs[_0x4949('0x43')](_0x492d97[_0x4949('0x2e')][_0x4949('0x43')]));_0x495339['attributes']=_0x495339[_0x4949('0x31')][_0x4949('0x44')]?_0x495339[_0x4949('0x31')]:_0x1f05c4[_0x4949('0x2d')];if(_0x492d97[_0x4949('0x2e')][_0x4949('0x45')]){_0x495339['include']=[{'all':!![]}];}_0x495339=_[_0x4949('0x3b')]({},_0x495339,_0x492d97[_0x4949('0x3c')]);return db['Template'][_0x4949('0x46')](_0x495339)[_0x4949('0x21')](handleEntityNotFound(_0x5d6f8b,null))[_0x4949('0x21')](respondWithResult(_0x5d6f8b,null))['catch'](handleError(_0x5d6f8b,null));};exports[_0x4949('0x47')]=function(_0x4eae8e,_0x503f04){return db['Template'][_0x4949('0x47')](_0x4eae8e[_0x4949('0x48')],{})[_0x4949('0x21')](function(_0x1b6dc1){var _0x5c18da=_0x4eae8e[_0x4949('0x49')][_0x4949('0x22')]({'plain':!![]});if(!_0x5c18da)throw new Error(_0x4949('0x4a'));if(_0x5c18da[_0x4949('0x4b')]==='user'){var _0x108387=_0x1b6dc1[_0x4949('0x22')]({'plain':!![]});var _0x150b5b=_0x4949('0x4c');return db[_0x4949('0x4d')]['find']({'where':{'name':_0x150b5b,'userProfileId':_0x5c18da[_0x4949('0x4e')]},'raw':!![]})['then'](function(_0x524eca){if(_0x524eca&&_0x524eca[_0x4949('0x4f')]===0x0){return db[_0x4949('0x50')]['create']({'name':_0x108387[_0x4949('0x25')],'resourceId':_0x108387['id'],'type':_0x524eca[_0x4949('0x25')],'sectionId':_0x524eca['id']},{})['then'](function(){return _0x1b6dc1;});}else{return _0x1b6dc1;}})[_0x4949('0x40')](function(_0x2c9478){logger[_0x4949('0x24')](_0x4949('0x51'),_0x2c9478);throw _0x2c9478;});}return _0x1b6dc1;})[_0x4949('0x21')](respondWithResult(_0x503f04,0xc9))[_0x4949('0x40')](handleError(_0x503f04,null));};exports[_0x4949('0x1f')]=function(_0x470715,_0x5e1e15){if(_0x470715['body']['id']){delete _0x470715[_0x4949('0x48')]['id'];}return db['Template']['find']({'where':{'id':_0x470715[_0x4949('0x41')]['id']}})[_0x4949('0x21')](handleEntityNotFound(_0x5e1e15,null))[_0x4949('0x21')](saveUpdates(_0x470715[_0x4949('0x48')],null))[_0x4949('0x21')](respondWithResult(_0x5e1e15,null))[_0x4949('0x40')](handleError(_0x5e1e15,null));};exports[_0x4949('0x20')]=function(_0x100da5,_0x39a066){return db[_0x4949('0x29')][_0x4949('0x46')]({'where':{'id':_0x100da5[_0x4949('0x41')]['id']}})[_0x4949('0x21')](handleEntityNotFound(_0x39a066,null))[_0x4949('0x21')](removeEntity(_0x39a066,null))[_0x4949('0x40')](handleError(_0x39a066,null));};
\ No newline at end of file
index 5d1716f..d845ccc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedba=['util','api','moment','bluebird','path','rimraf','./template.attributes','define','Template','tools_templates','lodash'];(function(_0x15b0ec,_0x31bcc0){var _0x2d575b=function(_0x55dc03){while(--_0x55dc03){_0x15b0ec['push'](_0x15b0ec['shift']());}};_0x2d575b(++_0x31bcc0);}(_0xedba,0x1cd));var _0xaedb=function(_0x9058c6,_0x50bf42){_0x9058c6=_0x9058c6-0x0;var _0x4a922e=_0xedba[_0x9058c6];return _0x4a922e;};'use strict';var _=require(_0xaedb('0x0'));var util=require(_0xaedb('0x1'));var logger=require('../../config/logger')(_0xaedb('0x2'));var moment=require(_0xaedb('0x3'));var BPromise=require(_0xaedb('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xaedb('0x5'));var rimraf=require(_0xaedb('0x6'));var config=require('../../config/environment');var attributes=require(_0xaedb('0x7'));module['exports']=function(_0x1af15e,_0x46ee7d){return _0x1af15e[_0xaedb('0x8')](_0xaedb('0x9'),attributes,{'tableName':_0xaedb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xeaa7=['moment','bluebird','request-promise','rimraf','../../config/environment','./template.attributes','exports','Template','tools_templates','util','../../config/logger','api'];(function(_0x12c8f3,_0x156300){var _0xbe3bf0=function(_0xffb75c){while(--_0xffb75c){_0x12c8f3['push'](_0x12c8f3['shift']());}};_0xbe3bf0(++_0x156300);}(_0xeaa7,0x141));var _0x7eaa=function(_0x1cd674,_0x8d3638){_0x1cd674=_0x1cd674-0x0;var _0x27928f=_0xeaa7[_0x1cd674];return _0x27928f;};'use strict';var _=require('lodash');var util=require(_0x7eaa('0x0'));var logger=require(_0x7eaa('0x1'))(_0x7eaa('0x2'));var moment=require(_0x7eaa('0x3'));var BPromise=require(_0x7eaa('0x4'));var rp=require(_0x7eaa('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7eaa('0x6'));var config=require(_0x7eaa('0x7'));var attributes=require(_0x7eaa('0x8'));module[_0x7eaa('0x9')]=function(_0x2c1353,_0x72c572){return _0x2c1353['define'](_0x7eaa('0xa'),attributes,{'tableName':_0x7eaa('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ec766b7..d573dad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7348=['moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','Template,\x20%s,\x20%s','debug','Template,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','catch','GetTemplate','options','raw','where','include','map','model','attributes','then','util'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7348,0x16b));var _0x8734=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x7348[_0x2641f9];return _0x585741;};'use strict';var _=require('lodash');var util=require(_0x8734('0x0'));var moment=require(_0x8734('0x1'));var BPromise=require('bluebird');var rs=require(_0x8734('0x2'));var fs=require('fs');var Redis=require(_0x8734('0x3'));var db=require(_0x8734('0x4'))['db'];var utils=require(_0x8734('0x5'));var logger=require(_0x8734('0x6'))('rpc');var config=require(_0x8734('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x8734('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x11505f,_0x3dbaf1,_0x409987){return new BPromise(function(_0x4b55fc,_0x282efb){return client['request'](_0x11505f,_0x409987)['then'](function(_0xb06875){logger['info'](_0x8734('0x9'),_0x3dbaf1,'request\x20sent');logger[_0x8734('0xa')](_0x8734('0xb'),_0x3dbaf1,_0x8734('0xc'),JSON[_0x8734('0xd')](_0xb06875));if(_0xb06875['error']){if(_0xb06875[_0x8734('0xe')][_0x8734('0xf')]===0x1f4){logger[_0x8734('0xe')](_0x8734('0x9'),_0x3dbaf1,_0xb06875[_0x8734('0xe')][_0x8734('0x10')]);return _0x282efb(_0xb06875[_0x8734('0xe')]['message']);}logger[_0x8734('0xe')]('Template,\x20%s,\x20%s',_0x3dbaf1,_0xb06875['error']['message']);return _0x4b55fc(_0xb06875[_0x8734('0xe')][_0x8734('0x10')]);}else{logger[_0x8734('0x11')](_0x8734('0x9'),_0x3dbaf1,_0x8734('0xc'));_0x4b55fc(_0xb06875['result'][_0x8734('0x10')]);}})[_0x8734('0x12')](function(_0x5b1663){logger[_0x8734('0xe')](_0x8734('0x9'),_0x3dbaf1,_0x5b1663);_0x282efb(_0x5b1663);});});}exports[_0x8734('0x13')]=function(_0x92addd){var _0x39da0c=this;return new Promise(function(_0x467ece,_0x25f144){return db['Template']['findAll']({'raw':_0x92addd[_0x8734('0x14')]?_0x92addd[_0x8734('0x14')][_0x8734('0x15')]===undefined?!![]:![]:!![],'where':_0x92addd[_0x8734('0x14')]?_0x92addd[_0x8734('0x14')][_0x8734('0x16')]||null:null,'attributes':_0x92addd['options']?_0x92addd['options']['attributes']||null:null,'limit':_0x92addd[_0x8734('0x14')]?_0x92addd[_0x8734('0x14')]['limit']||null:null,'include':_0x92addd[_0x8734('0x14')]?_0x92addd[_0x8734('0x14')][_0x8734('0x17')]?_[_0x8734('0x18')](_0x92addd['options'][_0x8734('0x17')],function(_0x4a022e){return{'model':db[_0x4a022e[_0x8734('0x19')]],'as':_0x4a022e['as'],'attributes':_0x4a022e[_0x8734('0x1a')],'include':_0x4a022e[_0x8734('0x17')]?_[_0x8734('0x18')](_0x4a022e[_0x8734('0x17')],function(_0x23b59e){return{'model':db[_0x23b59e[_0x8734('0x19')]],'as':_0x23b59e['as'],'attributes':_0x23b59e[_0x8734('0x1a')],'include':_0x23b59e['include']?_[_0x8734('0x18')](_0x23b59e[_0x8734('0x17')],function(_0x3e7bcf){return{'model':db[_0x3e7bcf[_0x8734('0x19')]],'as':_0x3e7bcf['as'],'attributes':_0x3e7bcf[_0x8734('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x8734('0x1b')](function(_0xa831f3){logger[_0x8734('0x11')]('GetTemplate',_0x92addd);logger[_0x8734('0xa')](_0x8734('0x13'),_0x92addd,JSON[_0x8734('0xd')](_0xa831f3));_0x467ece(_0xa831f3);})[_0x8734('0x12')](function(_0x2c439d){logger[_0x8734('0xe')]('GetTemplate',_0x2c439d[_0x8734('0x10')],_0x92addd);_0x25f144(_0x39da0c[_0x8734('0xe')](0x1f4,_0x2c439d['message']));});});};
\ No newline at end of file
+var _0xf24b=['GetTemplate','Template','findAll','options','raw','attributes','limit','map','include','model','debug','stringify','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','Template,\x20%s,\x20%s,\x20%s','error','message','Template,\x20%s,\x20%s','result'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0xf24b,0xad));var _0xbf24=function(_0x29dda1,_0x508e13){_0x29dda1=_0x29dda1-0x0;var _0x21b0ef=_0xf24b[_0x29dda1];return _0x21b0ef;};'use strict';var _=require(_0xbf24('0x0'));var util=require(_0xbf24('0x1'));var moment=require(_0xbf24('0x2'));var BPromise=require('bluebird');var rs=require(_0xbf24('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbf24('0x4'))['db'];var utils=require(_0xbf24('0x5'));var logger=require('../../config/logger')(_0xbf24('0x6'));var config=require(_0xbf24('0x7'));var jayson=require(_0xbf24('0x8'));var client=jayson[_0xbf24('0x9')][_0xbf24('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4dd757,_0x10ae5f,_0x3e983e){return new BPromise(function(_0x455e1e,_0x519ad7){return client['request'](_0x4dd757,_0x3e983e)[_0xbf24('0xb')](function(_0x3a94e7){logger[_0xbf24('0xc')]('Template,\x20%s,\x20%s',_0x10ae5f,_0xbf24('0xd'));logger['debug'](_0xbf24('0xe'),_0x10ae5f,'request\x20sent',JSON['stringify'](_0x3a94e7));if(_0x3a94e7[_0xbf24('0xf')]){if(_0x3a94e7[_0xbf24('0xf')]['code']===0x1f4){logger[_0xbf24('0xf')]('Template,\x20%s,\x20%s',_0x10ae5f,_0x3a94e7[_0xbf24('0xf')][_0xbf24('0x10')]);return _0x519ad7(_0x3a94e7[_0xbf24('0xf')][_0xbf24('0x10')]);}logger['error'](_0xbf24('0x11'),_0x10ae5f,_0x3a94e7[_0xbf24('0xf')]['message']);return _0x455e1e(_0x3a94e7['error'][_0xbf24('0x10')]);}else{logger[_0xbf24('0xc')](_0xbf24('0x11'),_0x10ae5f,_0xbf24('0xd'));_0x455e1e(_0x3a94e7[_0xbf24('0x12')][_0xbf24('0x10')]);}})['catch'](function(_0x188217){logger['error'](_0xbf24('0x11'),_0x10ae5f,_0x188217);_0x519ad7(_0x188217);});});}exports[_0xbf24('0x13')]=function(_0x1897fe){var _0x3b761a=this;return new Promise(function(_0x4907b9,_0x126976){return db[_0xbf24('0x14')][_0xbf24('0x15')]({'raw':_0x1897fe[_0xbf24('0x16')]?_0x1897fe['options'][_0xbf24('0x17')]===undefined?!![]:![]:!![],'where':_0x1897fe[_0xbf24('0x16')]?_0x1897fe['options']['where']||null:null,'attributes':_0x1897fe[_0xbf24('0x16')]?_0x1897fe['options'][_0xbf24('0x18')]||null:null,'limit':_0x1897fe[_0xbf24('0x16')]?_0x1897fe['options'][_0xbf24('0x19')]||null:null,'include':_0x1897fe[_0xbf24('0x16')]?_0x1897fe[_0xbf24('0x16')]['include']?_[_0xbf24('0x1a')](_0x1897fe[_0xbf24('0x16')][_0xbf24('0x1b')],function(_0x375291){return{'model':db[_0x375291[_0xbf24('0x1c')]],'as':_0x375291['as'],'attributes':_0x375291[_0xbf24('0x18')],'include':_0x375291[_0xbf24('0x1b')]?_['map'](_0x375291['include'],function(_0x38d51c){return{'model':db[_0x38d51c[_0xbf24('0x1c')]],'as':_0x38d51c['as'],'attributes':_0x38d51c[_0xbf24('0x18')],'include':_0x38d51c[_0xbf24('0x1b')]?_[_0xbf24('0x1a')](_0x38d51c[_0xbf24('0x1b')],function(_0x400a95){return{'model':db[_0x400a95[_0xbf24('0x1c')]],'as':_0x400a95['as'],'attributes':_0x400a95[_0xbf24('0x18')]};}):[]};}):[]};}):[]:[]})[_0xbf24('0xb')](function(_0x278428){logger[_0xbf24('0xc')](_0xbf24('0x13'),_0x1897fe);logger[_0xbf24('0x1d')](_0xbf24('0x13'),_0x1897fe,JSON[_0xbf24('0x1e')](_0x278428));_0x4907b9(_0x278428);})[_0xbf24('0x1f')](function(_0x11ec9b){logger[_0xbf24('0xf')]('GetTemplate',_0x11ec9b[_0xbf24('0x10')],_0x1897fe);_0x126976(_0x3b761a[_0xbf24('0xf')](0x1f4,_0x11ec9b[_0xbf24('0x10')]));});});};
\ No newline at end of file
index 8ae66cc..efc748e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fce=['multer','util','path','express','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','get','/:id','show','getAnyConditions','/:id/actions','getActions','post','/:id/any_conditions','addAnyCondition','addAction','update','delete'];(function(_0x252242,_0x19c92c){var _0x54fcd4=function(_0x2f3ea4){while(--_0x2f3ea4){_0x252242['push'](_0x252242['shift']());}};_0x54fcd4(++_0x19c92c);}(_0x7fce,0xdc));var _0xe7fc=function(_0x794740,_0x2bf2d){_0x794740=_0x794740-0x0;var _0x3eb671=_0x7fce[_0x794740];return _0x3eb671;};'use strict';var multer=require(_0xe7fc('0x0'));var util=require(_0xe7fc('0x1'));var path=require(_0xe7fc('0x2'));var timeout=require('connect-timeout');var express=require(_0xe7fc('0x3'));var router=express['Router']();var fs_extra=require(_0xe7fc('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xe7fc('0x5'));var config=require(_0xe7fc('0x6'));var controller=require('./trigger.controller');router['get']('/',auth[_0xe7fc('0x7')](),controller['index']);router[_0xe7fc('0x8')](_0xe7fc('0x9'),auth[_0xe7fc('0x7')](),controller[_0xe7fc('0xa')]);router[_0xe7fc('0x8')]('/:id/all_conditions',auth[_0xe7fc('0x7')](),controller['getAllConditions']);router[_0xe7fc('0x8')]('/:id/any_conditions',auth[_0xe7fc('0x7')](),controller[_0xe7fc('0xb')]);router[_0xe7fc('0x8')](_0xe7fc('0xc'),auth['isAuthenticated'](),controller[_0xe7fc('0xd')]);router[_0xe7fc('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0xe7fc('0xe')]('/:id/all_conditions',auth[_0xe7fc('0x7')](),controller['addAllCondition']);router['post'](_0xe7fc('0xf'),auth[_0xe7fc('0x7')](),controller[_0xe7fc('0x10')]);router[_0xe7fc('0xe')](_0xe7fc('0xc'),auth['isAuthenticated'](),controller[_0xe7fc('0x11')]);router['put']('/:id',auth[_0xe7fc('0x7')](),controller[_0xe7fc('0x12')]);router[_0xe7fc('0x13')](_0xe7fc('0x9'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x31dc=['../../components/interaction/service','get','isAuthenticated','index','getAllConditions','/:id/actions','getActions','post','/:id/all_conditions','addAllCondition','/:id/any_conditions','addAnyCondition','addAction','put','/:id','update','destroy','exports','multer','util','connect-timeout','Router','fs-extra'];(function(_0x450e59,_0x229917){var _0x16bce2=function(_0x381751){while(--_0x381751){_0x450e59['push'](_0x450e59['shift']());}};_0x16bce2(++_0x229917);}(_0x31dc,0x10f));var _0xc31d=function(_0x3b0656,_0x2c98ed){_0x3b0656=_0x3b0656-0x0;var _0x6352b2=_0x31dc[_0x3b0656];return _0x6352b2;};'use strict';var multer=require(_0xc31d('0x0'));var util=require(_0xc31d('0x1'));var path=require('path');var timeout=require(_0xc31d('0x2'));var express=require('express');var router=express[_0xc31d('0x3')]();var fs_extra=require(_0xc31d('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xc31d('0x5'));var config=require('../../config/environment');var controller=require('./trigger.controller');router[_0xc31d('0x6')]('/',auth[_0xc31d('0x7')](),controller[_0xc31d('0x8')]);router[_0xc31d('0x6')]('/:id',auth[_0xc31d('0x7')](),controller['show']);router['get']('/:id/all_conditions',auth['isAuthenticated'](),controller[_0xc31d('0x9')]);router[_0xc31d('0x6')]('/:id/any_conditions',auth['isAuthenticated'](),controller['getAnyConditions']);router['get'](_0xc31d('0xa'),auth[_0xc31d('0x7')](),controller[_0xc31d('0xb')]);router[_0xc31d('0xc')]('/',auth[_0xc31d('0x7')](),controller['create']);router[_0xc31d('0xc')](_0xc31d('0xd'),auth[_0xc31d('0x7')](),controller[_0xc31d('0xe')]);router[_0xc31d('0xc')](_0xc31d('0xf'),auth['isAuthenticated'](),controller[_0xc31d('0x10')]);router['post'](_0xc31d('0xa'),auth[_0xc31d('0x7')](),controller[_0xc31d('0x11')]);router[_0xc31d('0x12')](_0xc31d('0x13'),auth[_0xc31d('0x7')](),controller[_0xc31d('0x14')]);router['delete'](_0xc31d('0x13'),auth[_0xc31d('0x7')](),controller[_0xc31d('0x15')]);module[_0xc31d('0x16')]=router;
\ No newline at end of file
index cce5416..0be9fbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c8a=['STRING','BOOLEAN','exports'];(function(_0x583df4,_0x3437b1){var _0x26e6fa=function(_0x1c6398){while(--_0x1c6398){_0x583df4['push'](_0x583df4['shift']());}};_0x26e6fa(++_0x3437b1);}(_0x9c8a,0x191));var _0xa9c8=function(_0x5b132d,_0x485ca6){_0x5b132d=_0x5b132d-0x0;var _0xfac472=_0x9c8a[_0x5b132d];return _0xfac472;};'use strict';var Sequelize=require('sequelize');module[_0xa9c8('0x0')]={'name':{'type':Sequelize[_0xa9c8('0x1')]},'channel':{'type':Sequelize[_0xa9c8('0x1')]},'description':{'type':Sequelize[_0xa9c8('0x1')]},'status':{'type':Sequelize[_0xa9c8('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x6975=['STRING','BOOLEAN','sequelize'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x6975,0x182));var _0x5697=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0x6975[_0x4ea69d];return _0x5318e0;};'use strict';var Sequelize=require(_0x5697('0x0'));module['exports']={'name':{'type':Sequelize[_0x5697('0x1')]},'channel':{'type':Sequelize[_0x5697('0x1')]},'description':{'type':Sequelize[_0x5697('0x1')]},'status':{'type':Sequelize[_0x5697('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 4003a40..fb1a99a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1628=['include','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','addAllCondition','TriggerAllId','Condition','addAnyCondition','TriggerAnyId','getAllConditions','findOne','pick','options','getAnyConditions','addAction','TriggerId','getActions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','update','destroy','then','UserProfileResource','error','stack','name','index','map','Trigger','rawAttributes','fieldName','type','key','query','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','includeAll','findAll','keys','length'];(function(_0x1c9c5c,_0x93beb8){var _0x5ad5c9=function(_0x302a56){while(--_0x302a56){_0x1c9c5c['push'](_0x1c9c5c['shift']());}};_0x5ad5c9(++_0x93beb8);}(_0x1628,0x19d));var _0x8162=function(_0x1e6e4e,_0x2b1b09){_0x1e6e4e=_0x1e6e4e-0x0;var _0x3d746b=_0x1628[_0x1e6e4e];return _0x3d746b;};'use strict';var emlformat=require(_0x8162('0x0'));var rimraf=require(_0x8162('0x1'));var zipdir=require(_0x8162('0x2'));var jsonpatch=require(_0x8162('0x3'));var rp=require(_0x8162('0x4'));var moment=require(_0x8162('0x5'));var BPromise=require(_0x8162('0x6'));var Mustache=require(_0x8162('0x7'));var util=require(_0x8162('0x8'));var path=require('path');var sox=require(_0x8162('0x9'));var csv=require(_0x8162('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8162('0xb'));var _=require(_0x8162('0xc'));var squel=require(_0x8162('0xd'));var crypto=require(_0x8162('0xe'));var jsforce=require(_0x8162('0xf'));var deskjs=require(_0x8162('0x10'));var toCsv=require('to-csv');var querystring=require(_0x8162('0x11'));var Papa=require(_0x8162('0x12'));var Redis=require(_0x8162('0x13'));var authService=require(_0x8162('0x14'));var qs=require(_0x8162('0x15'));var as=require(_0x8162('0x16'));var hardwareService=require(_0x8162('0x17'));var logger=require(_0x8162('0x18'))(_0x8162('0x19'));var utils=require(_0x8162('0x1a'));var config=require(_0x8162('0x1b'));var licenseUtil=require(_0x8162('0x1c'));var db=require(_0x8162('0x1d'))['db'];function respondWithStatusCode(_0x198454,_0xcb78a6){_0xcb78a6=_0xcb78a6||0xcc;return function(_0x80044){if(_0x80044){return _0x198454[_0x8162('0x1e')](_0xcb78a6);}return _0x198454[_0x8162('0x1f')](_0xcb78a6)[_0x8162('0x20')]();};}function respondWithResult(_0x5e52c3,_0x5bcfd0){_0x5bcfd0=_0x5bcfd0||0xc8;return function(_0xee81){if(_0xee81){return _0x5e52c3['status'](_0x5bcfd0)['json'](_0xee81);}};}function respondWithFilteredResult(_0x2efef7,_0x5b923c){return function(_0x25a73a){if(_0x25a73a){var _0x6226f7=typeof _0x5b923c[_0x8162('0x21')]===_0x8162('0x22')&&typeof _0x5b923c[_0x8162('0x23')]==='undefined';var _0x3d5aee=_0x25a73a['count'];var _0x30e129=_0x6226f7?0x0:_0x5b923c[_0x8162('0x21')];var _0x37cbb3=_0x6226f7?_0x25a73a[_0x8162('0x24')]:_0x5b923c['offset']+_0x5b923c['limit'];var _0x4c6cbf;if(_0x37cbb3>=_0x3d5aee){_0x37cbb3=_0x3d5aee;_0x4c6cbf=0xc8;}else{_0x4c6cbf=0xce;}_0x2efef7[_0x8162('0x1f')](_0x4c6cbf);return _0x2efef7[_0x8162('0x25')](_0x8162('0x26'),_0x30e129+'-'+_0x37cbb3+'/'+_0x3d5aee)[_0x8162('0x27')](_0x25a73a);}return null;};}function patchUpdates(_0x38daa5){return function(_0x179ce1){try{jsonpatch['apply'](_0x179ce1,_0x38daa5,!![]);}catch(_0xf3aefe){return BPromise['reject'](_0xf3aefe);}return _0x179ce1['save']();};}function saveUpdates(_0x1aa507,_0x480056){return function(_0x310918){if(_0x310918){return _0x310918[_0x8162('0x28')](_0x1aa507)['then'](function(_0x46729c){return _0x46729c;});}return null;};}function removeEntity(_0x26ee72,_0x34f9ed){return function(_0x3f0423){if(_0x3f0423){return _0x3f0423[_0x8162('0x29')]()[_0x8162('0x2a')](function(){var _0x37aeb2=_0x3f0423['get']({'plain':!![]});var _0x235491='Triggers';return db[_0x8162('0x2b')]['destroy']({'where':{'type':_0x235491,'resourceId':_0x37aeb2['id']}})[_0x8162('0x2a')](function(){return _0x3f0423;});})[_0x8162('0x2a')](function(){_0x26ee72['status'](0xcc)[_0x8162('0x20')]();});}};}function handleEntityNotFound(_0x26ec01,_0x49f2bd){return function(_0x21f542){if(!_0x21f542){_0x26ec01[_0x8162('0x1e')](0x194);}return _0x21f542;};}function handleError(_0x585c41,_0xe87bc){_0xe87bc=_0xe87bc||0x1f4;return function(_0x203f83){logger[_0x8162('0x2c')](_0x203f83[_0x8162('0x2d')]);if(_0x203f83[_0x8162('0x2e')]){delete _0x203f83[_0x8162('0x2e')];}_0x585c41[_0x8162('0x1f')](_0xe87bc)['send'](_0x203f83);};}exports[_0x8162('0x2f')]=function(_0x4b25bf,_0x5846f){var _0x716188={},_0x4d0e05={},_0x314e65={'count':0x0,'rows':[]};var _0x459074=_[_0x8162('0x30')](db[_0x8162('0x31')][_0x8162('0x32')],function(_0xe7b923){return{'name':_0xe7b923[_0x8162('0x33')],'type':_0xe7b923[_0x8162('0x34')][_0x8162('0x35')]};});_0x4d0e05['model']=_[_0x8162('0x30')](_0x459074,_0x8162('0x2e'));_0x4d0e05[_0x8162('0x36')]=_['keys'](_0x4b25bf[_0x8162('0x36')]);_0x4d0e05[_0x8162('0x37')]=_[_0x8162('0x38')](_0x4d0e05[_0x8162('0x39')],_0x4d0e05['query']);_0x716188['attributes']=_['intersection'](_0x4d0e05[_0x8162('0x39')],qs['fields'](_0x4b25bf[_0x8162('0x36')][_0x8162('0x3a')]));_0x716188[_0x8162('0x3b')]=_0x716188[_0x8162('0x3b')]['length']?_0x716188[_0x8162('0x3b')]:_0x4d0e05[_0x8162('0x39')];if(!_0x4b25bf[_0x8162('0x36')][_0x8162('0x3c')](_0x8162('0x3d'))){_0x716188[_0x8162('0x23')]=qs['limit'](_0x4b25bf[_0x8162('0x36')]['limit']);_0x716188['offset']=qs[_0x8162('0x21')](_0x4b25bf[_0x8162('0x36')][_0x8162('0x21')]);}_0x716188[_0x8162('0x3e')]=qs[_0x8162('0x3f')](_0x4b25bf[_0x8162('0x36')][_0x8162('0x3f')]);_0x716188['where']=qs[_0x8162('0x37')](_['pick'](_0x4b25bf[_0x8162('0x36')],_0x4d0e05[_0x8162('0x37')]),_0x459074);if(_0x4b25bf[_0x8162('0x36')][_0x8162('0x40')]){_0x716188[_0x8162('0x41')]=_[_0x8162('0x42')](_0x716188[_0x8162('0x41')],{'$or':_[_0x8162('0x30')](_0x459074,function(_0x3a3b5a){if(_0x3a3b5a[_0x8162('0x34')]!==_0x8162('0x43')){var _0x3ce76d={};_0x3ce76d[_0x3a3b5a[_0x8162('0x2e')]]={'$like':'%'+_0x4b25bf[_0x8162('0x36')][_0x8162('0x40')]+'%'};return _0x3ce76d;}})});}_0x716188=_['merge']({},_0x716188,_0x4b25bf['options']);var _0x3b2bab={'where':_0x716188[_0x8162('0x41')]};return db['Trigger']['count'](_0x3b2bab)['then'](function(_0x14b26b){_0x314e65[_0x8162('0x24')]=_0x14b26b;if(_0x4b25bf[_0x8162('0x36')][_0x8162('0x44')]){_0x716188['include']=[{'all':!![]}];}return db['Trigger'][_0x8162('0x45')](_0x716188);})['then'](function(_0xd4cd70){_0x314e65['rows']=_0xd4cd70;return _0x314e65;})[_0x8162('0x2a')](respondWithFilteredResult(_0x5846f,_0x716188))['catch'](handleError(_0x5846f,null));};exports['show']=function(_0x2d7761,_0x47870e){var _0x1f1ddd={'raw':![],'where':{'id':_0x2d7761['params']['id']}},_0x5077be={};_0x5077be[_0x8162('0x39')]=_[_0x8162('0x46')](db['Trigger']['rawAttributes']);_0x5077be[_0x8162('0x36')]=_[_0x8162('0x46')](_0x2d7761[_0x8162('0x36')]);_0x5077be[_0x8162('0x37')]=_[_0x8162('0x38')](_0x5077be[_0x8162('0x39')],_0x5077be[_0x8162('0x36')]);_0x1f1ddd['attributes']=_[_0x8162('0x38')](_0x5077be['model'],qs[_0x8162('0x3a')](_0x2d7761[_0x8162('0x36')][_0x8162('0x3a')]));_0x1f1ddd[_0x8162('0x3b')]=_0x1f1ddd['attributes'][_0x8162('0x47')]?_0x1f1ddd[_0x8162('0x3b')]:_0x5077be[_0x8162('0x39')];if(_0x2d7761[_0x8162('0x36')][_0x8162('0x44')]){_0x1f1ddd[_0x8162('0x48')]=[{'all':!![]}];}_0x1f1ddd=_[_0x8162('0x42')]({},_0x1f1ddd,_0x2d7761['options']);return db[_0x8162('0x31')][_0x8162('0x49')](_0x1f1ddd)[_0x8162('0x2a')](handleEntityNotFound(_0x47870e,null))[_0x8162('0x2a')](respondWithResult(_0x47870e,null))['catch'](handleError(_0x47870e,null));};exports[_0x8162('0x4a')]=function(_0x580e24,_0x1c70cf){return db['Trigger']['create'](_0x580e24[_0x8162('0x4b')],{})[_0x8162('0x2a')](function(_0x2b5994){var _0x2d44c5=_0x580e24['user'][_0x8162('0x4c')]({'plain':!![]});if(!_0x2d44c5)throw new Error(_0x8162('0x4d'));if(_0x2d44c5[_0x8162('0x4e')]==='user'){var _0x1b3ee3=_0x2b5994['get']({'plain':!![]});var _0x143ee1='Triggers';return db[_0x8162('0x4f')][_0x8162('0x49')]({'where':{'name':_0x143ee1,'userProfileId':_0x2d44c5[_0x8162('0x50')]},'raw':!![]})[_0x8162('0x2a')](function(_0x5f4000){if(_0x5f4000&&_0x5f4000['autoAssociation']===0x0){return db['UserProfileResource'][_0x8162('0x4a')]({'name':_0x1b3ee3['name'],'resourceId':_0x1b3ee3['id'],'type':_0x5f4000[_0x8162('0x2e')],'sectionId':_0x5f4000['id']},{})[_0x8162('0x2a')](function(){return _0x2b5994;});}else{return _0x2b5994;}})[_0x8162('0x51')](function(_0x13b30b){logger[_0x8162('0x2c')](_0x8162('0x52'),_0x13b30b);throw _0x13b30b;});}return _0x2b5994;})[_0x8162('0x2a')](respondWithResult(_0x1c70cf,0xc9))[_0x8162('0x51')](handleError(_0x1c70cf,null));};exports[_0x8162('0x28')]=function(_0x3d79da,_0x48b5e6){if(_0x3d79da[_0x8162('0x4b')]['id']){delete _0x3d79da[_0x8162('0x4b')]['id'];}return db['Trigger'][_0x8162('0x49')]({'where':{'id':_0x3d79da['params']['id']}})[_0x8162('0x2a')](handleEntityNotFound(_0x48b5e6,null))[_0x8162('0x2a')](saveUpdates(_0x3d79da[_0x8162('0x4b')],null))[_0x8162('0x2a')](respondWithResult(_0x48b5e6,null))['catch'](handleError(_0x48b5e6,null));};exports[_0x8162('0x29')]=function(_0xe4eef8,_0x4ef051){return db[_0x8162('0x31')][_0x8162('0x49')]({'where':{'id':_0xe4eef8[_0x8162('0x53')]['id']}})[_0x8162('0x2a')](handleEntityNotFound(_0x4ef051,null))[_0x8162('0x2a')](removeEntity(_0x4ef051,null))[_0x8162('0x51')](handleError(_0x4ef051,null));};exports[_0x8162('0x54')]=function(_0x21d1a8,_0x51247c,_0x1554ce){if(_0x21d1a8[_0x8162('0x4b')]['id']){delete _0x21d1a8[_0x8162('0x4b')]['id'];}return db[_0x8162('0x31')][_0x8162('0x49')]({'where':{'id':_0x21d1a8[_0x8162('0x53')]['id']}})['then'](handleEntityNotFound(_0x51247c,null))['then'](function(_0x5b74dc){if(_0x5b74dc){_0x21d1a8[_0x8162('0x4b')][_0x8162('0x55')]=_0x5b74dc['id'];return db[_0x8162('0x56')][_0x8162('0x4a')](_0x21d1a8['body']);}})['then'](respondWithResult(_0x51247c,null))[_0x8162('0x51')](handleError(_0x51247c,null));};exports[_0x8162('0x57')]=function(_0x580a68,_0x5a7511,_0x296618){if(_0x580a68[_0x8162('0x4b')]['id']){delete _0x580a68[_0x8162('0x4b')]['id'];}return db['Trigger'][_0x8162('0x49')]({'where':{'id':_0x580a68[_0x8162('0x53')]['id']}})[_0x8162('0x2a')](handleEntityNotFound(_0x5a7511,null))[_0x8162('0x2a')](function(_0x39cb1a){if(_0x39cb1a){_0x580a68['body'][_0x8162('0x58')]=_0x39cb1a['id'];return db[_0x8162('0x56')][_0x8162('0x4a')](_0x580a68[_0x8162('0x4b')]);}})[_0x8162('0x2a')](respondWithResult(_0x5a7511,null))[_0x8162('0x51')](handleError(_0x5a7511,null));};exports[_0x8162('0x59')]=function(_0x57aee9,_0x579b32,_0x5c4ba9){var _0xc93552={};var _0x10a771={};var _0x515313;var _0x260046;return db['Trigger'][_0x8162('0x5a')]({'where':{'id':_0x57aee9[_0x8162('0x53')]['id']}})[_0x8162('0x2a')](handleEntityNotFound(_0x579b32,null))[_0x8162('0x2a')](function(_0x3143cf){if(_0x3143cf){_0x515313=_0x3143cf;_0x10a771[_0x8162('0x39')]=_[_0x8162('0x46')](db[_0x8162('0x56')][_0x8162('0x32')]);_0x10a771[_0x8162('0x36')]=_[_0x8162('0x46')](_0x57aee9[_0x8162('0x36')]);_0x10a771[_0x8162('0x37')]=_[_0x8162('0x38')](_0x10a771[_0x8162('0x39')],_0x10a771[_0x8162('0x36')]);_0xc93552[_0x8162('0x3b')]=_[_0x8162('0x38')](_0x10a771[_0x8162('0x39')],qs[_0x8162('0x3a')](_0x57aee9[_0x8162('0x36')][_0x8162('0x3a')]));_0xc93552[_0x8162('0x3b')]=_0xc93552[_0x8162('0x3b')][_0x8162('0x47')]?_0xc93552[_0x8162('0x3b')]:_0x10a771[_0x8162('0x39')];_0xc93552[_0x8162('0x3e')]=qs[_0x8162('0x3f')](_0x57aee9['query'][_0x8162('0x3f')]);_0xc93552[_0x8162('0x41')]=qs['filters'](_[_0x8162('0x5b')](_0x57aee9[_0x8162('0x36')],_0x10a771[_0x8162('0x37')]));if(_0x57aee9[_0x8162('0x36')][_0x8162('0x40')]){_0xc93552['where']=_[_0x8162('0x42')](_0xc93552[_0x8162('0x41')],{'$or':_[_0x8162('0x30')](_0xc93552[_0x8162('0x3b')],function(_0x36707d){var _0x440cf8={};_0x440cf8[_0x36707d]={'$like':'%'+_0x57aee9[_0x8162('0x36')][_0x8162('0x40')]+'%'};return _0x440cf8;})});}_0xc93552=_[_0x8162('0x42')]({},_0xc93552,_0x57aee9[_0x8162('0x5c')]);return _0x515313[_0x8162('0x59')](_0xc93552);}})[_0x8162('0x2a')](function(_0x46a1d9){if(_0x46a1d9){_0x260046=_0x46a1d9[_0x8162('0x47')];if(!_0x57aee9[_0x8162('0x36')][_0x8162('0x3c')](_0x8162('0x3d'))){_0xc93552['limit']=qs[_0x8162('0x23')](_0x57aee9[_0x8162('0x36')][_0x8162('0x23')]);_0xc93552[_0x8162('0x21')]=qs[_0x8162('0x21')](_0x57aee9[_0x8162('0x36')][_0x8162('0x21')]);}return _0x515313[_0x8162('0x59')](_0xc93552);}})['then'](function(_0x5b00aa){if(_0x5b00aa){return _0x5b00aa?{'count':_0x260046,'rows':_0x5b00aa}:null;}})[_0x8162('0x2a')](respondWithResult(_0x579b32,null))['catch'](handleError(_0x579b32,null));};exports[_0x8162('0x5d')]=function(_0x4d8366,_0x413fc8,_0x2ee4f9){var _0xd66567={};var _0x2220b3={};var _0x1f74fc;var _0x495cfe;return db['Trigger'][_0x8162('0x5a')]({'where':{'id':_0x4d8366['params']['id']}})['then'](handleEntityNotFound(_0x413fc8,null))['then'](function(_0x6a5acd){if(_0x6a5acd){_0x1f74fc=_0x6a5acd;_0x2220b3[_0x8162('0x39')]=_[_0x8162('0x46')](db[_0x8162('0x56')][_0x8162('0x32')]);_0x2220b3[_0x8162('0x36')]=_['keys'](_0x4d8366['query']);_0x2220b3[_0x8162('0x37')]=_[_0x8162('0x38')](_0x2220b3[_0x8162('0x39')],_0x2220b3[_0x8162('0x36')]);_0xd66567[_0x8162('0x3b')]=_[_0x8162('0x38')](_0x2220b3[_0x8162('0x39')],qs['fields'](_0x4d8366['query'][_0x8162('0x3a')]));_0xd66567['attributes']=_0xd66567['attributes'][_0x8162('0x47')]?_0xd66567[_0x8162('0x3b')]:_0x2220b3[_0x8162('0x39')];_0xd66567[_0x8162('0x3e')]=qs[_0x8162('0x3f')](_0x4d8366[_0x8162('0x36')]['sort']);_0xd66567['where']=qs[_0x8162('0x37')](_[_0x8162('0x5b')](_0x4d8366[_0x8162('0x36')],_0x2220b3[_0x8162('0x37')]));if(_0x4d8366[_0x8162('0x36')][_0x8162('0x40')]){_0xd66567['where']=_[_0x8162('0x42')](_0xd66567[_0x8162('0x41')],{'$or':_[_0x8162('0x30')](_0xd66567[_0x8162('0x3b')],function(_0x1f62ad){var _0x225b48={};_0x225b48[_0x1f62ad]={'$like':'%'+_0x4d8366['query'][_0x8162('0x40')]+'%'};return _0x225b48;})});}_0xd66567=_['merge']({},_0xd66567,_0x4d8366[_0x8162('0x5c')]);return _0x1f74fc['getAnyConditions'](_0xd66567);}})[_0x8162('0x2a')](function(_0x2c5786){if(_0x2c5786){_0x495cfe=_0x2c5786[_0x8162('0x47')];if(!_0x4d8366['query'][_0x8162('0x3c')]('nolimit')){_0xd66567[_0x8162('0x23')]=qs['limit'](_0x4d8366['query']['limit']);_0xd66567[_0x8162('0x21')]=qs[_0x8162('0x21')](_0x4d8366[_0x8162('0x36')][_0x8162('0x21')]);}return _0x1f74fc[_0x8162('0x5d')](_0xd66567);}})['then'](function(_0x2282a1){if(_0x2282a1){return _0x2282a1?{'count':_0x495cfe,'rows':_0x2282a1}:null;}})['then'](respondWithResult(_0x413fc8,null))[_0x8162('0x51')](handleError(_0x413fc8,null));};exports[_0x8162('0x5e')]=function(_0x19714b,_0x3ced04,_0x2726c9){if(_0x19714b[_0x8162('0x4b')]['id']){delete _0x19714b[_0x8162('0x4b')]['id'];}return db['Trigger']['find']({'where':{'id':_0x19714b[_0x8162('0x53')]['id']}})[_0x8162('0x2a')](handleEntityNotFound(_0x3ced04,null))[_0x8162('0x2a')](function(_0x7f8fb5){if(_0x7f8fb5){_0x19714b[_0x8162('0x4b')][_0x8162('0x5f')]=_0x7f8fb5['id'];return db['Action'][_0x8162('0x4a')](_0x19714b[_0x8162('0x4b')]);}})[_0x8162('0x2a')](respondWithResult(_0x3ced04,null))[_0x8162('0x51')](handleError(_0x3ced04,null));};exports[_0x8162('0x60')]=function(_0x53ca44,_0x276cc7,_0x2bbf4b){var _0x5743d8={};var _0x1be05c={};var _0x5b7576;var _0x2577fe;return db[_0x8162('0x31')][_0x8162('0x5a')]({'where':{'id':_0x53ca44[_0x8162('0x53')]['id']}})[_0x8162('0x2a')](handleEntityNotFound(_0x276cc7,null))['then'](function(_0x5c6260){if(_0x5c6260){_0x5b7576=_0x5c6260;_0x1be05c[_0x8162('0x39')]=_[_0x8162('0x46')](db['Action']['rawAttributes']);_0x1be05c[_0x8162('0x36')]=_[_0x8162('0x46')](_0x53ca44[_0x8162('0x36')]);_0x1be05c[_0x8162('0x37')]=_[_0x8162('0x38')](_0x1be05c[_0x8162('0x39')],_0x1be05c[_0x8162('0x36')]);_0x5743d8['attributes']=_[_0x8162('0x38')](_0x1be05c[_0x8162('0x39')],qs[_0x8162('0x3a')](_0x53ca44[_0x8162('0x36')][_0x8162('0x3a')]));_0x5743d8[_0x8162('0x3b')]=_0x5743d8['attributes'][_0x8162('0x47')]?_0x5743d8['attributes']:_0x1be05c[_0x8162('0x39')];_0x5743d8['order']=qs[_0x8162('0x3f')](_0x53ca44[_0x8162('0x36')]['sort']);_0x5743d8[_0x8162('0x41')]=qs[_0x8162('0x37')](_[_0x8162('0x5b')](_0x53ca44[_0x8162('0x36')],_0x1be05c['filters']));if(_0x53ca44[_0x8162('0x36')][_0x8162('0x40')]){_0x5743d8['where']=_[_0x8162('0x42')](_0x5743d8[_0x8162('0x41')],{'$or':_[_0x8162('0x30')](_0x5743d8[_0x8162('0x3b')],function(_0x4950ea){var _0xe65b73={};_0xe65b73[_0x4950ea]={'$like':'%'+_0x53ca44[_0x8162('0x36')][_0x8162('0x40')]+'%'};return _0xe65b73;})});}_0x5743d8=_[_0x8162('0x42')]({},_0x5743d8,_0x53ca44[_0x8162('0x5c')]);return _0x5b7576[_0x8162('0x60')](_0x5743d8);}})[_0x8162('0x2a')](function(_0x49a96e){if(_0x49a96e){_0x2577fe=_0x49a96e[_0x8162('0x47')];if(!_0x53ca44[_0x8162('0x36')][_0x8162('0x3c')]('nolimit')){_0x5743d8[_0x8162('0x23')]=qs['limit'](_0x53ca44['query'][_0x8162('0x23')]);_0x5743d8[_0x8162('0x21')]=qs[_0x8162('0x21')](_0x53ca44[_0x8162('0x36')][_0x8162('0x21')]);}return _0x5b7576[_0x8162('0x60')](_0x5743d8);}})['then'](function(_0x34724e){if(_0x34724e){return _0x34724e?{'count':_0x2577fe,'rows':_0x34724e}:null;}})[_0x8162('0x2a')](respondWithResult(_0x276cc7,null))[_0x8162('0x51')](handleError(_0x276cc7,null));};
\ No newline at end of file
+var _0x8e62=['map','filter','options','Trigger','includeAll','findAll','show','params','keys','include','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addAllCondition','TriggerAllId','Condition','addAnyCondition','TriggerAnyId','findOne','getAllConditions','getAnyConditions','addAction','TriggerId','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','limit','undefined','count','Content-Range','reject','save','update','then','get','Triggers','UserProfileResource','destroy','end','sendStatus','error','index','rawAttributes','type','key','model','name','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge'];(function(_0x3f4dd9,_0xe0b819){var _0x31c54a=function(_0x25e6c6){while(--_0x25e6c6){_0x3f4dd9['push'](_0x3f4dd9['shift']());}};_0x31c54a(++_0xe0b819);}(_0x8e62,0x13d));var _0x28e6=function(_0x32d330,_0xe907c8){_0x32d330=_0x32d330-0x0;var _0xe81a43=_0x8e62[_0x32d330];return _0xe81a43;};'use strict';var emlformat=require(_0x28e6('0x0'));var rimraf=require(_0x28e6('0x1'));var zipdir=require(_0x28e6('0x2'));var jsonpatch=require(_0x28e6('0x3'));var rp=require(_0x28e6('0x4'));var moment=require(_0x28e6('0x5'));var BPromise=require(_0x28e6('0x6'));var Mustache=require(_0x28e6('0x7'));var util=require('util');var path=require('path');var sox=require(_0x28e6('0x8'));var csv=require(_0x28e6('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x28e6('0xa'));var _=require(_0x28e6('0xb'));var squel=require(_0x28e6('0xc'));var crypto=require(_0x28e6('0xd'));var jsforce=require(_0x28e6('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x28e6('0x9'));var querystring=require(_0x28e6('0xf'));var Papa=require(_0x28e6('0x10'));var Redis=require(_0x28e6('0x11'));var authService=require(_0x28e6('0x12'));var qs=require(_0x28e6('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x28e6('0x14'));var logger=require(_0x28e6('0x15'))(_0x28e6('0x16'));var utils=require('../../config/utils');var config=require(_0x28e6('0x17'));var licenseUtil=require(_0x28e6('0x18'));var db=require(_0x28e6('0x19'))['db'];function respondWithStatusCode(_0x1f03b2,_0x30472d){_0x30472d=_0x30472d||0xcc;return function(_0x32ac3a){if(_0x32ac3a){return _0x1f03b2['sendStatus'](_0x30472d);}return _0x1f03b2[_0x28e6('0x1a')](_0x30472d)['end']();};}function respondWithResult(_0x44c450,_0x467cd2){_0x467cd2=_0x467cd2||0xc8;return function(_0x1e3d8f){if(_0x1e3d8f){return _0x44c450[_0x28e6('0x1a')](_0x467cd2)[_0x28e6('0x1b')](_0x1e3d8f);}};}function respondWithFilteredResult(_0x22826c,_0x3c3b97){return function(_0x278121){if(_0x278121){var _0x21195d=typeof _0x3c3b97[_0x28e6('0x1c')]==='undefined'&&typeof _0x3c3b97[_0x28e6('0x1d')]===_0x28e6('0x1e');var _0x2e61b0=_0x278121[_0x28e6('0x1f')];var _0x7e1eda=_0x21195d?0x0:_0x3c3b97[_0x28e6('0x1c')];var _0x1f86bd=_0x21195d?_0x278121[_0x28e6('0x1f')]:_0x3c3b97[_0x28e6('0x1c')]+_0x3c3b97[_0x28e6('0x1d')];var _0x3d439a;if(_0x1f86bd>=_0x2e61b0){_0x1f86bd=_0x2e61b0;_0x3d439a=0xc8;}else{_0x3d439a=0xce;}_0x22826c['status'](_0x3d439a);return _0x22826c['set'](_0x28e6('0x20'),_0x7e1eda+'-'+_0x1f86bd+'/'+_0x2e61b0)[_0x28e6('0x1b')](_0x278121);}return null;};}function patchUpdates(_0x2e73e6){return function(_0x583b39){try{jsonpatch['apply'](_0x583b39,_0x2e73e6,!![]);}catch(_0x44e183){return BPromise[_0x28e6('0x21')](_0x44e183);}return _0x583b39[_0x28e6('0x22')]();};}function saveUpdates(_0x64556b,_0x4e3a22){return function(_0x444dad){if(_0x444dad){return _0x444dad[_0x28e6('0x23')](_0x64556b)[_0x28e6('0x24')](function(_0x5bbd48){return _0x5bbd48;});}return null;};}function removeEntity(_0x499b52,_0x3ac77e){return function(_0x474356){if(_0x474356){return _0x474356['destroy']()[_0x28e6('0x24')](function(){var _0x52ea8f=_0x474356[_0x28e6('0x25')]({'plain':!![]});var _0x57ea4f=_0x28e6('0x26');return db[_0x28e6('0x27')][_0x28e6('0x28')]({'where':{'type':_0x57ea4f,'resourceId':_0x52ea8f['id']}})[_0x28e6('0x24')](function(){return _0x474356;});})[_0x28e6('0x24')](function(){_0x499b52[_0x28e6('0x1a')](0xcc)[_0x28e6('0x29')]();});}};}function handleEntityNotFound(_0x49be5b,_0x559535){return function(_0x21cf06){if(!_0x21cf06){_0x49be5b[_0x28e6('0x2a')](0x194);}return _0x21cf06;};}function handleError(_0x511e32,_0x274b30){_0x274b30=_0x274b30||0x1f4;return function(_0x59b92f){logger[_0x28e6('0x2b')](_0x59b92f['stack']);if(_0x59b92f['name']){delete _0x59b92f['name'];}_0x511e32[_0x28e6('0x1a')](_0x274b30)['send'](_0x59b92f);};}exports[_0x28e6('0x2c')]=function(_0x5902da,_0x3dca64){var _0x54773b={},_0x3a56c5={},_0x5ebc18={'count':0x0,'rows':[]};var _0x40a928=_['map'](db['Trigger'][_0x28e6('0x2d')],function(_0x34fda4){return{'name':_0x34fda4['fieldName'],'type':_0x34fda4[_0x28e6('0x2e')][_0x28e6('0x2f')]};});_0x3a56c5[_0x28e6('0x30')]=_['map'](_0x40a928,_0x28e6('0x31'));_0x3a56c5[_0x28e6('0x32')]=_['keys'](_0x5902da[_0x28e6('0x32')]);_0x3a56c5[_0x28e6('0x33')]=_['intersection'](_0x3a56c5[_0x28e6('0x30')],_0x3a56c5['query']);_0x54773b[_0x28e6('0x34')]=_[_0x28e6('0x35')](_0x3a56c5[_0x28e6('0x30')],qs[_0x28e6('0x36')](_0x5902da[_0x28e6('0x32')][_0x28e6('0x36')]));_0x54773b[_0x28e6('0x34')]=_0x54773b[_0x28e6('0x34')][_0x28e6('0x37')]?_0x54773b['attributes']:_0x3a56c5['model'];if(!_0x5902da[_0x28e6('0x32')][_0x28e6('0x38')](_0x28e6('0x39'))){_0x54773b[_0x28e6('0x1d')]=qs[_0x28e6('0x1d')](_0x5902da['query']['limit']);_0x54773b[_0x28e6('0x1c')]=qs['offset'](_0x5902da['query'][_0x28e6('0x1c')]);}_0x54773b[_0x28e6('0x3a')]=qs[_0x28e6('0x3b')](_0x5902da[_0x28e6('0x32')][_0x28e6('0x3b')]);_0x54773b[_0x28e6('0x3c')]=qs[_0x28e6('0x33')](_[_0x28e6('0x3d')](_0x5902da[_0x28e6('0x32')],_0x3a56c5['filters']),_0x40a928);if(_0x5902da[_0x28e6('0x32')]['filter']){_0x54773b[_0x28e6('0x3c')]=_[_0x28e6('0x3e')](_0x54773b[_0x28e6('0x3c')],{'$or':_[_0x28e6('0x3f')](_0x40a928,function(_0x45402a){if(_0x45402a['type']!=='VIRTUAL'){var _0x473387={};_0x473387[_0x45402a[_0x28e6('0x31')]]={'$like':'%'+_0x5902da['query'][_0x28e6('0x40')]+'%'};return _0x473387;}})});}_0x54773b=_['merge']({},_0x54773b,_0x5902da[_0x28e6('0x41')]);var _0x14fde8={'where':_0x54773b[_0x28e6('0x3c')]};return db[_0x28e6('0x42')]['count'](_0x14fde8)[_0x28e6('0x24')](function(_0x3289a9){_0x5ebc18[_0x28e6('0x1f')]=_0x3289a9;if(_0x5902da[_0x28e6('0x32')][_0x28e6('0x43')]){_0x54773b['include']=[{'all':!![]}];}return db['Trigger'][_0x28e6('0x44')](_0x54773b);})['then'](function(_0x5bf485){_0x5ebc18['rows']=_0x5bf485;return _0x5ebc18;})['then'](respondWithFilteredResult(_0x3dca64,_0x54773b))['catch'](handleError(_0x3dca64,null));};exports[_0x28e6('0x45')]=function(_0x10a622,_0x3e941b){var _0x480fb2={'raw':![],'where':{'id':_0x10a622[_0x28e6('0x46')]['id']}},_0x45679d={};_0x45679d[_0x28e6('0x30')]=_[_0x28e6('0x47')](db['Trigger'][_0x28e6('0x2d')]);_0x45679d[_0x28e6('0x32')]=_[_0x28e6('0x47')](_0x10a622[_0x28e6('0x32')]);_0x45679d[_0x28e6('0x33')]=_[_0x28e6('0x35')](_0x45679d[_0x28e6('0x30')],_0x45679d[_0x28e6('0x32')]);_0x480fb2['attributes']=_[_0x28e6('0x35')](_0x45679d[_0x28e6('0x30')],qs[_0x28e6('0x36')](_0x10a622[_0x28e6('0x32')]['fields']));_0x480fb2[_0x28e6('0x34')]=_0x480fb2['attributes'][_0x28e6('0x37')]?_0x480fb2[_0x28e6('0x34')]:_0x45679d[_0x28e6('0x30')];if(_0x10a622[_0x28e6('0x32')][_0x28e6('0x43')]){_0x480fb2[_0x28e6('0x48')]=[{'all':!![]}];}_0x480fb2=_[_0x28e6('0x3e')]({},_0x480fb2,_0x10a622[_0x28e6('0x41')]);return db[_0x28e6('0x42')][_0x28e6('0x49')](_0x480fb2)[_0x28e6('0x24')](handleEntityNotFound(_0x3e941b,null))['then'](respondWithResult(_0x3e941b,null))[_0x28e6('0x4a')](handleError(_0x3e941b,null));};exports[_0x28e6('0x4b')]=function(_0x5be218,_0x354801){return db[_0x28e6('0x42')][_0x28e6('0x4b')](_0x5be218[_0x28e6('0x4c')],{})['then'](function(_0x599794){var _0x45341f=_0x5be218[_0x28e6('0x4d')][_0x28e6('0x25')]({'plain':!![]});if(!_0x45341f)throw new Error(_0x28e6('0x4e'));if(_0x45341f[_0x28e6('0x4f')]===_0x28e6('0x4d')){var _0x4de12c=_0x599794[_0x28e6('0x25')]({'plain':!![]});var _0x2a1b23=_0x28e6('0x26');return db[_0x28e6('0x50')]['find']({'where':{'name':_0x2a1b23,'userProfileId':_0x45341f['userProfileId']},'raw':!![]})[_0x28e6('0x24')](function(_0x29d521){if(_0x29d521&&_0x29d521[_0x28e6('0x51')]===0x0){return db[_0x28e6('0x27')]['create']({'name':_0x4de12c[_0x28e6('0x31')],'resourceId':_0x4de12c['id'],'type':_0x29d521[_0x28e6('0x31')],'sectionId':_0x29d521['id']},{})[_0x28e6('0x24')](function(){return _0x599794;});}else{return _0x599794;}})[_0x28e6('0x4a')](function(_0x49233e){logger['error'](_0x28e6('0x52'),_0x49233e);throw _0x49233e;});}return _0x599794;})[_0x28e6('0x24')](respondWithResult(_0x354801,0xc9))['catch'](handleError(_0x354801,null));};exports[_0x28e6('0x23')]=function(_0x227dbf,_0x37e0ab){if(_0x227dbf[_0x28e6('0x4c')]['id']){delete _0x227dbf[_0x28e6('0x4c')]['id'];}return db[_0x28e6('0x42')]['find']({'where':{'id':_0x227dbf[_0x28e6('0x46')]['id']}})[_0x28e6('0x24')](handleEntityNotFound(_0x37e0ab,null))[_0x28e6('0x24')](saveUpdates(_0x227dbf[_0x28e6('0x4c')],null))[_0x28e6('0x24')](respondWithResult(_0x37e0ab,null))['catch'](handleError(_0x37e0ab,null));};exports['destroy']=function(_0x2fe192,_0x496f9c){return db[_0x28e6('0x42')][_0x28e6('0x49')]({'where':{'id':_0x2fe192[_0x28e6('0x46')]['id']}})['then'](handleEntityNotFound(_0x496f9c,null))[_0x28e6('0x24')](removeEntity(_0x496f9c,null))[_0x28e6('0x4a')](handleError(_0x496f9c,null));};exports[_0x28e6('0x53')]=function(_0x5eb8c1,_0x2e3a0b,_0x476229){if(_0x5eb8c1['body']['id']){delete _0x5eb8c1['body']['id'];}return db[_0x28e6('0x42')][_0x28e6('0x49')]({'where':{'id':_0x5eb8c1[_0x28e6('0x46')]['id']}})[_0x28e6('0x24')](handleEntityNotFound(_0x2e3a0b,null))[_0x28e6('0x24')](function(_0x2ca33d){if(_0x2ca33d){_0x5eb8c1['body'][_0x28e6('0x54')]=_0x2ca33d['id'];return db[_0x28e6('0x55')][_0x28e6('0x4b')](_0x5eb8c1[_0x28e6('0x4c')]);}})[_0x28e6('0x24')](respondWithResult(_0x2e3a0b,null))['catch'](handleError(_0x2e3a0b,null));};exports[_0x28e6('0x56')]=function(_0x54106a,_0x405b11,_0x1f0e09){if(_0x54106a[_0x28e6('0x4c')]['id']){delete _0x54106a[_0x28e6('0x4c')]['id'];}return db[_0x28e6('0x42')]['find']({'where':{'id':_0x54106a[_0x28e6('0x46')]['id']}})['then'](handleEntityNotFound(_0x405b11,null))[_0x28e6('0x24')](function(_0x51df37){if(_0x51df37){_0x54106a[_0x28e6('0x4c')][_0x28e6('0x57')]=_0x51df37['id'];return db[_0x28e6('0x55')][_0x28e6('0x4b')](_0x54106a['body']);}})[_0x28e6('0x24')](respondWithResult(_0x405b11,null))[_0x28e6('0x4a')](handleError(_0x405b11,null));};exports['getAllConditions']=function(_0x4a03c1,_0x4a7dbd,_0x4574e6){var _0x1e1c7a={};var _0x45cc9d={};var _0x4e4b88;var _0x2de643;return db[_0x28e6('0x42')][_0x28e6('0x58')]({'where':{'id':_0x4a03c1[_0x28e6('0x46')]['id']}})['then'](handleEntityNotFound(_0x4a7dbd,null))[_0x28e6('0x24')](function(_0x144f7b){if(_0x144f7b){_0x4e4b88=_0x144f7b;_0x45cc9d[_0x28e6('0x30')]=_[_0x28e6('0x47')](db[_0x28e6('0x55')][_0x28e6('0x2d')]);_0x45cc9d[_0x28e6('0x32')]=_['keys'](_0x4a03c1[_0x28e6('0x32')]);_0x45cc9d['filters']=_[_0x28e6('0x35')](_0x45cc9d[_0x28e6('0x30')],_0x45cc9d[_0x28e6('0x32')]);_0x1e1c7a[_0x28e6('0x34')]=_[_0x28e6('0x35')](_0x45cc9d[_0x28e6('0x30')],qs[_0x28e6('0x36')](_0x4a03c1[_0x28e6('0x32')][_0x28e6('0x36')]));_0x1e1c7a['attributes']=_0x1e1c7a[_0x28e6('0x34')][_0x28e6('0x37')]?_0x1e1c7a[_0x28e6('0x34')]:_0x45cc9d[_0x28e6('0x30')];_0x1e1c7a['order']=qs[_0x28e6('0x3b')](_0x4a03c1['query'][_0x28e6('0x3b')]);_0x1e1c7a[_0x28e6('0x3c')]=qs[_0x28e6('0x33')](_[_0x28e6('0x3d')](_0x4a03c1['query'],_0x45cc9d[_0x28e6('0x33')]));if(_0x4a03c1[_0x28e6('0x32')][_0x28e6('0x40')]){_0x1e1c7a['where']=_[_0x28e6('0x3e')](_0x1e1c7a[_0x28e6('0x3c')],{'$or':_[_0x28e6('0x3f')](_0x1e1c7a[_0x28e6('0x34')],function(_0xcf7f91){var _0x37a837={};_0x37a837[_0xcf7f91]={'$like':'%'+_0x4a03c1[_0x28e6('0x32')][_0x28e6('0x40')]+'%'};return _0x37a837;})});}_0x1e1c7a=_[_0x28e6('0x3e')]({},_0x1e1c7a,_0x4a03c1['options']);return _0x4e4b88[_0x28e6('0x59')](_0x1e1c7a);}})[_0x28e6('0x24')](function(_0x37fb43){if(_0x37fb43){_0x2de643=_0x37fb43[_0x28e6('0x37')];if(!_0x4a03c1[_0x28e6('0x32')]['hasOwnProperty']('nolimit')){_0x1e1c7a[_0x28e6('0x1d')]=qs['limit'](_0x4a03c1[_0x28e6('0x32')][_0x28e6('0x1d')]);_0x1e1c7a[_0x28e6('0x1c')]=qs[_0x28e6('0x1c')](_0x4a03c1[_0x28e6('0x32')]['offset']);}return _0x4e4b88[_0x28e6('0x59')](_0x1e1c7a);}})[_0x28e6('0x24')](function(_0x347b78){if(_0x347b78){return _0x347b78?{'count':_0x2de643,'rows':_0x347b78}:null;}})[_0x28e6('0x24')](respondWithResult(_0x4a7dbd,null))[_0x28e6('0x4a')](handleError(_0x4a7dbd,null));};exports[_0x28e6('0x5a')]=function(_0x7f7bb7,_0x57203c,_0x13e940){var _0x505822={};var _0x24e4d5={};var _0x214d68;var _0x3cfcac;return db['Trigger'][_0x28e6('0x58')]({'where':{'id':_0x7f7bb7[_0x28e6('0x46')]['id']}})['then'](handleEntityNotFound(_0x57203c,null))[_0x28e6('0x24')](function(_0x408625){if(_0x408625){_0x214d68=_0x408625;_0x24e4d5[_0x28e6('0x30')]=_['keys'](db[_0x28e6('0x55')]['rawAttributes']);_0x24e4d5['query']=_[_0x28e6('0x47')](_0x7f7bb7[_0x28e6('0x32')]);_0x24e4d5[_0x28e6('0x33')]=_[_0x28e6('0x35')](_0x24e4d5['model'],_0x24e4d5['query']);_0x505822['attributes']=_['intersection'](_0x24e4d5[_0x28e6('0x30')],qs['fields'](_0x7f7bb7[_0x28e6('0x32')][_0x28e6('0x36')]));_0x505822[_0x28e6('0x34')]=_0x505822[_0x28e6('0x34')][_0x28e6('0x37')]?_0x505822[_0x28e6('0x34')]:_0x24e4d5[_0x28e6('0x30')];_0x505822[_0x28e6('0x3a')]=qs['sort'](_0x7f7bb7[_0x28e6('0x32')][_0x28e6('0x3b')]);_0x505822[_0x28e6('0x3c')]=qs[_0x28e6('0x33')](_[_0x28e6('0x3d')](_0x7f7bb7['query'],_0x24e4d5[_0x28e6('0x33')]));if(_0x7f7bb7[_0x28e6('0x32')][_0x28e6('0x40')]){_0x505822[_0x28e6('0x3c')]=_['merge'](_0x505822[_0x28e6('0x3c')],{'$or':_[_0x28e6('0x3f')](_0x505822[_0x28e6('0x34')],function(_0x49724a){var _0x20a055={};_0x20a055[_0x49724a]={'$like':'%'+_0x7f7bb7[_0x28e6('0x32')][_0x28e6('0x40')]+'%'};return _0x20a055;})});}_0x505822=_['merge']({},_0x505822,_0x7f7bb7[_0x28e6('0x41')]);return _0x214d68[_0x28e6('0x5a')](_0x505822);}})[_0x28e6('0x24')](function(_0x3f4f7a){if(_0x3f4f7a){_0x3cfcac=_0x3f4f7a[_0x28e6('0x37')];if(!_0x7f7bb7[_0x28e6('0x32')][_0x28e6('0x38')](_0x28e6('0x39'))){_0x505822[_0x28e6('0x1d')]=qs[_0x28e6('0x1d')](_0x7f7bb7['query'][_0x28e6('0x1d')]);_0x505822['offset']=qs[_0x28e6('0x1c')](_0x7f7bb7[_0x28e6('0x32')]['offset']);}return _0x214d68['getAnyConditions'](_0x505822);}})[_0x28e6('0x24')](function(_0x423a5f){if(_0x423a5f){return _0x423a5f?{'count':_0x3cfcac,'rows':_0x423a5f}:null;}})[_0x28e6('0x24')](respondWithResult(_0x57203c,null))[_0x28e6('0x4a')](handleError(_0x57203c,null));};exports[_0x28e6('0x5b')]=function(_0x4fd302,_0x59ac30,_0xb9e2f6){if(_0x4fd302['body']['id']){delete _0x4fd302['body']['id'];}return db['Trigger']['find']({'where':{'id':_0x4fd302[_0x28e6('0x46')]['id']}})['then'](handleEntityNotFound(_0x59ac30,null))[_0x28e6('0x24')](function(_0x35c29a){if(_0x35c29a){_0x4fd302['body'][_0x28e6('0x5c')]=_0x35c29a['id'];return db[_0x28e6('0x5d')][_0x28e6('0x4b')](_0x4fd302[_0x28e6('0x4c')]);}})[_0x28e6('0x24')](respondWithResult(_0x59ac30,null))['catch'](handleError(_0x59ac30,null));};exports[_0x28e6('0x5e')]=function(_0x2ab814,_0x46619f,_0x166424){var _0x483ed3={};var _0x2bccbc={};var _0x5eed92;var _0x53aa46;return db[_0x28e6('0x42')][_0x28e6('0x58')]({'where':{'id':_0x2ab814[_0x28e6('0x46')]['id']}})[_0x28e6('0x24')](handleEntityNotFound(_0x46619f,null))[_0x28e6('0x24')](function(_0x1bf291){if(_0x1bf291){_0x5eed92=_0x1bf291;_0x2bccbc[_0x28e6('0x30')]=_['keys'](db['Action'][_0x28e6('0x2d')]);_0x2bccbc[_0x28e6('0x32')]=_[_0x28e6('0x47')](_0x2ab814[_0x28e6('0x32')]);_0x2bccbc['filters']=_[_0x28e6('0x35')](_0x2bccbc['model'],_0x2bccbc[_0x28e6('0x32')]);_0x483ed3[_0x28e6('0x34')]=_[_0x28e6('0x35')](_0x2bccbc[_0x28e6('0x30')],qs[_0x28e6('0x36')](_0x2ab814[_0x28e6('0x32')][_0x28e6('0x36')]));_0x483ed3[_0x28e6('0x34')]=_0x483ed3[_0x28e6('0x34')][_0x28e6('0x37')]?_0x483ed3[_0x28e6('0x34')]:_0x2bccbc['model'];_0x483ed3['order']=qs['sort'](_0x2ab814[_0x28e6('0x32')]['sort']);_0x483ed3[_0x28e6('0x3c')]=qs[_0x28e6('0x33')](_['pick'](_0x2ab814['query'],_0x2bccbc['filters']));if(_0x2ab814['query'][_0x28e6('0x40')]){_0x483ed3[_0x28e6('0x3c')]=_['merge'](_0x483ed3[_0x28e6('0x3c')],{'$or':_['map'](_0x483ed3[_0x28e6('0x34')],function(_0x390bac){var _0x1a270f={};_0x1a270f[_0x390bac]={'$like':'%'+_0x2ab814[_0x28e6('0x32')][_0x28e6('0x40')]+'%'};return _0x1a270f;})});}_0x483ed3=_[_0x28e6('0x3e')]({},_0x483ed3,_0x2ab814[_0x28e6('0x41')]);return _0x5eed92[_0x28e6('0x5e')](_0x483ed3);}})[_0x28e6('0x24')](function(_0x2a30c6){if(_0x2a30c6){_0x53aa46=_0x2a30c6[_0x28e6('0x37')];if(!_0x2ab814[_0x28e6('0x32')]['hasOwnProperty'](_0x28e6('0x39'))){_0x483ed3[_0x28e6('0x1d')]=qs[_0x28e6('0x1d')](_0x2ab814[_0x28e6('0x32')][_0x28e6('0x1d')]);_0x483ed3[_0x28e6('0x1c')]=qs[_0x28e6('0x1c')](_0x2ab814[_0x28e6('0x32')][_0x28e6('0x1c')]);}return _0x5eed92['getActions'](_0x483ed3);}})['then'](function(_0x56bb8d){if(_0x56bb8d){return _0x56bb8d?{'count':_0x53aa46,'rows':_0x56bb8d}:null;}})[_0x28e6('0x24')](respondWithResult(_0x46619f,null))['catch'](handleError(_0x46619f,null));};
\ No newline at end of file
index f230c13..40e6eac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43f3=['tools_triggers','util','../../config/logger','moment','request-promise','rimraf','../../config/environment','./trigger.attributes','define','Trigger'];(function(_0x52c553,_0x273e5a){var _0x425607=function(_0x25f443){while(--_0x25f443){_0x52c553['push'](_0x52c553['shift']());}};_0x425607(++_0x273e5a);}(_0x43f3,0xab));var _0x343f=function(_0x30bd4d,_0x50eb60){_0x30bd4d=_0x30bd4d-0x0;var _0x306915=_0x43f3[_0x30bd4d];return _0x306915;};'use strict';var _=require('lodash');var util=require(_0x343f('0x0'));var logger=require(_0x343f('0x1'))('api');var moment=require(_0x343f('0x2'));var BPromise=require('bluebird');var rp=require(_0x343f('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x343f('0x4'));var config=require(_0x343f('0x5'));var attributes=require(_0x343f('0x6'));module['exports']=function(_0x2ec994,_0x693775){return _0x2ec994[_0x343f('0x7')](_0x343f('0x8'),attributes,{'tableName':_0x343f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8f1f=['bluebird','request-promise','path','rimraf','../../config/environment','./trigger.attributes','define','Trigger','tools_triggers','lodash','api','moment'];(function(_0x45f280,_0xd6d640){var _0x115e0a=function(_0x2d3664){while(--_0x2d3664){_0x45f280['push'](_0x45f280['shift']());}};_0x115e0a(++_0xd6d640);}(_0x8f1f,0xe1));var _0xf8f1=function(_0x5b6405,_0x357964){_0x5b6405=_0x5b6405-0x0;var _0x484ee4=_0x8f1f[_0x5b6405];return _0x484ee4;};'use strict';var _=require(_0xf8f1('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf8f1('0x1'));var moment=require(_0xf8f1('0x2'));var BPromise=require(_0xf8f1('0x3'));var rp=require(_0xf8f1('0x4'));var fs=require('fs');var path=require(_0xf8f1('0x5'));var rimraf=require(_0xf8f1('0x6'));var config=require(_0xf8f1('0x7'));var attributes=require(_0xf8f1('0x8'));module['exports']=function(_0x18a890,_0x1fee13){return _0x18a890[_0xf8f1('0x9')](_0xf8f1('0xa'),attributes,{'tableName':_0xf8f1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0f7390e..ac767ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e0e=['info','debug','Trigger,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','Trigger,\x20%s,\x20%s','message','result','catch','Trigger','options','raw','where','attributes','limit','include','model','map','GetTrigger','ShowTrigger','find','stringify','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then'];(function(_0x54ea7a,_0x19df9b){var _0x65a10d=function(_0x1bf936){while(--_0x1bf936){_0x54ea7a['push'](_0x54ea7a['shift']());}};_0x65a10d(++_0x19df9b);}(_0x9e0e,0xa3));var _0xe9e0=function(_0x4beaa2,_0x4bf997){_0x4beaa2=_0x4beaa2-0x0;var _0x11490b=_0x9e0e[_0x4beaa2];return _0x11490b;};'use strict';var _=require(_0xe9e0('0x0'));var util=require(_0xe9e0('0x1'));var moment=require('moment');var BPromise=require(_0xe9e0('0x2'));var rs=require(_0xe9e0('0x3'));var fs=require('fs');var Redis=require(_0xe9e0('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xe9e0('0x5'));var logger=require('../../config/logger')(_0xe9e0('0x6'));var config=require(_0xe9e0('0x7'));var jayson=require(_0xe9e0('0x8'));var client=jayson[_0xe9e0('0x9')][_0xe9e0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2fa4d1,_0x1f98a1,_0x4c23a1){return new BPromise(function(_0x403963,_0x575f85){return client['request'](_0x2fa4d1,_0x4c23a1)[_0xe9e0('0xb')](function(_0x135b2c){logger[_0xe9e0('0xc')]('Trigger,\x20%s,\x20%s',_0x1f98a1,'request\x20sent');logger[_0xe9e0('0xd')](_0xe9e0('0xe'),_0x1f98a1,_0xe9e0('0xf'),JSON['stringify'](_0x135b2c));if(_0x135b2c['error']){if(_0x135b2c[_0xe9e0('0x10')][_0xe9e0('0x11')]===0x1f4){logger[_0xe9e0('0x10')](_0xe9e0('0x12'),_0x1f98a1,_0x135b2c['error']['message']);return _0x575f85(_0x135b2c[_0xe9e0('0x10')][_0xe9e0('0x13')]);}logger[_0xe9e0('0x10')](_0xe9e0('0x12'),_0x1f98a1,_0x135b2c[_0xe9e0('0x10')][_0xe9e0('0x13')]);return _0x403963(_0x135b2c[_0xe9e0('0x10')][_0xe9e0('0x13')]);}else{logger[_0xe9e0('0xc')](_0xe9e0('0x12'),_0x1f98a1,'request\x20sent');_0x403963(_0x135b2c[_0xe9e0('0x14')][_0xe9e0('0x13')]);}})[_0xe9e0('0x15')](function(_0x14fb78){logger[_0xe9e0('0x10')]('Trigger,\x20%s,\x20%s',_0x1f98a1,_0x14fb78);_0x575f85(_0x14fb78);});});}exports['GetTrigger']=function(_0x160b34){var _0x266cc7=this;return new Promise(function(_0x11746a,_0xee33fe){return db[_0xe9e0('0x16')]['findAll']({'raw':_0x160b34[_0xe9e0('0x17')]?_0x160b34[_0xe9e0('0x17')][_0xe9e0('0x18')]===undefined?!![]:![]:!![],'where':_0x160b34['options']?_0x160b34[_0xe9e0('0x17')][_0xe9e0('0x19')]||null:null,'attributes':_0x160b34[_0xe9e0('0x17')]?_0x160b34[_0xe9e0('0x17')][_0xe9e0('0x1a')]||null:null,'limit':_0x160b34[_0xe9e0('0x17')]?_0x160b34[_0xe9e0('0x17')][_0xe9e0('0x1b')]||null:null,'include':_0x160b34[_0xe9e0('0x17')]?_0x160b34[_0xe9e0('0x17')][_0xe9e0('0x1c')]?_['map'](_0x160b34[_0xe9e0('0x17')][_0xe9e0('0x1c')],function(_0x5416f5){return{'model':db[_0x5416f5[_0xe9e0('0x1d')]],'as':_0x5416f5['as'],'attributes':_0x5416f5[_0xe9e0('0x1a')],'include':_0x5416f5[_0xe9e0('0x1c')]?_[_0xe9e0('0x1e')](_0x5416f5[_0xe9e0('0x1c')],function(_0x31750f){return{'model':db[_0x31750f['model']],'as':_0x31750f['as'],'attributes':_0x31750f[_0xe9e0('0x1a')],'include':_0x31750f[_0xe9e0('0x1c')]?_[_0xe9e0('0x1e')](_0x31750f[_0xe9e0('0x1c')],function(_0x44c387){return{'model':db[_0x44c387[_0xe9e0('0x1d')]],'as':_0x44c387['as'],'attributes':_0x44c387[_0xe9e0('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xe9e0('0xb')](function(_0xe2a0ff){logger['info'](_0xe9e0('0x1f'),_0x160b34);logger[_0xe9e0('0xd')](_0xe9e0('0x1f'),_0x160b34,JSON['stringify'](_0xe2a0ff));_0x11746a(_0xe2a0ff);})[_0xe9e0('0x15')](function(_0x471f2e){logger[_0xe9e0('0x10')](_0xe9e0('0x1f'),_0x471f2e[_0xe9e0('0x13')],_0x160b34);_0xee33fe(_0x266cc7['error'](0x1f4,_0x471f2e[_0xe9e0('0x13')]));});});};exports[_0xe9e0('0x20')]=function(_0x2b17d4){var _0x2b8e25=this;return new Promise(function(_0x5ba6b3,_0x64ea99){return db[_0xe9e0('0x16')][_0xe9e0('0x21')]({'raw':_0x2b17d4[_0xe9e0('0x17')]?_0x2b17d4[_0xe9e0('0x17')][_0xe9e0('0x18')]===undefined?!![]:![]:!![],'where':_0x2b17d4[_0xe9e0('0x17')]?_0x2b17d4['options'][_0xe9e0('0x19')]||null:null,'attributes':_0x2b17d4[_0xe9e0('0x17')]?_0x2b17d4[_0xe9e0('0x17')][_0xe9e0('0x1a')]||null:null,'include':_0x2b17d4[_0xe9e0('0x17')]?_0x2b17d4[_0xe9e0('0x17')][_0xe9e0('0x1c')]?_[_0xe9e0('0x1e')](_0x2b17d4[_0xe9e0('0x17')]['include'],function(_0x20ce87){return{'model':db[_0x20ce87['model']],'as':_0x20ce87['as'],'attributes':_0x20ce87[_0xe9e0('0x1a')],'include':_0x20ce87[_0xe9e0('0x1c')]?_['map'](_0x20ce87[_0xe9e0('0x1c')],function(_0x1e1ce8){return{'model':db[_0x1e1ce8[_0xe9e0('0x1d')]],'as':_0x1e1ce8['as'],'attributes':_0x1e1ce8[_0xe9e0('0x1a')],'include':_0x1e1ce8['include']?_['map'](_0x1e1ce8[_0xe9e0('0x1c')],function(_0x587d09){return{'model':db[_0x587d09[_0xe9e0('0x1d')]],'as':_0x587d09['as'],'attributes':_0x587d09[_0xe9e0('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xd52438){logger['info']('ShowTrigger',_0x2b17d4);logger[_0xe9e0('0xd')](_0xe9e0('0x20'),_0x2b17d4,JSON[_0xe9e0('0x22')](_0xd52438));_0x5ba6b3(_0xd52438);})[_0xe9e0('0x15')](function(_0x436fb6){logger[_0xe9e0('0x10')](_0xe9e0('0x20'),_0x436fb6[_0xe9e0('0x13')],_0x2b17d4);_0x64ea99(_0x2b8e25[_0xe9e0('0x10')](0x1f4,_0x436fb6[_0xe9e0('0x13')]));});});};
\ No newline at end of file
+var _0x6eef=['request','then','info','Trigger,\x20%s,\x20%s','request\x20sent','debug','Trigger,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','options','raw','where','limit','include','attributes','model','GetTrigger','catch','ShowTrigger','find','map','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x551b1c,_0x3584f9){var _0x131273=function(_0x553185){while(--_0x553185){_0x551b1c['push'](_0x551b1c['shift']());}};_0x131273(++_0x3584f9);}(_0x6eef,0x153));var _0xf6ee=function(_0x459b74,_0x5773bd){_0x459b74=_0x459b74-0x0;var _0x46cb16=_0x6eef[_0x459b74];return _0x46cb16;};'use strict';var _=require('lodash');var util=require(_0xf6ee('0x0'));var moment=require(_0xf6ee('0x1'));var BPromise=require(_0xf6ee('0x2'));var rs=require(_0xf6ee('0x3'));var fs=require('fs');var Redis=require(_0xf6ee('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xf6ee('0x5'));var logger=require(_0xf6ee('0x6'))(_0xf6ee('0x7'));var config=require(_0xf6ee('0x8'));var jayson=require(_0xf6ee('0x9'));var client=jayson[_0xf6ee('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x253ab0,_0xada913,_0x15b74d){return new BPromise(function(_0x58dfa6,_0x272aaa){return client[_0xf6ee('0xb')](_0x253ab0,_0x15b74d)[_0xf6ee('0xc')](function(_0x4f8559){logger[_0xf6ee('0xd')](_0xf6ee('0xe'),_0xada913,_0xf6ee('0xf'));logger[_0xf6ee('0x10')](_0xf6ee('0x11'),_0xada913,_0xf6ee('0xf'),JSON[_0xf6ee('0x12')](_0x4f8559));if(_0x4f8559[_0xf6ee('0x13')]){if(_0x4f8559[_0xf6ee('0x13')][_0xf6ee('0x14')]===0x1f4){logger[_0xf6ee('0x13')](_0xf6ee('0xe'),_0xada913,_0x4f8559[_0xf6ee('0x13')]['message']);return _0x272aaa(_0x4f8559['error'][_0xf6ee('0x15')]);}logger[_0xf6ee('0x13')](_0xf6ee('0xe'),_0xada913,_0x4f8559['error'][_0xf6ee('0x15')]);return _0x58dfa6(_0x4f8559['error'][_0xf6ee('0x15')]);}else{logger['info'](_0xf6ee('0xe'),_0xada913,'request\x20sent');_0x58dfa6(_0x4f8559[_0xf6ee('0x16')][_0xf6ee('0x15')]);}})['catch'](function(_0x206c77){logger[_0xf6ee('0x13')](_0xf6ee('0xe'),_0xada913,_0x206c77);_0x272aaa(_0x206c77);});});}exports['GetTrigger']=function(_0x21af4b){var _0x4c3c89=this;return new Promise(function(_0x39fda2,_0x121c53){return db['Trigger']['findAll']({'raw':_0x21af4b[_0xf6ee('0x17')]?_0x21af4b['options'][_0xf6ee('0x18')]===undefined?!![]:![]:!![],'where':_0x21af4b[_0xf6ee('0x17')]?_0x21af4b[_0xf6ee('0x17')][_0xf6ee('0x19')]||null:null,'attributes':_0x21af4b[_0xf6ee('0x17')]?_0x21af4b[_0xf6ee('0x17')]['attributes']||null:null,'limit':_0x21af4b[_0xf6ee('0x17')]?_0x21af4b[_0xf6ee('0x17')][_0xf6ee('0x1a')]||null:null,'include':_0x21af4b['options']?_0x21af4b[_0xf6ee('0x17')]['include']?_['map'](_0x21af4b[_0xf6ee('0x17')][_0xf6ee('0x1b')],function(_0x3bec12){return{'model':db[_0x3bec12['model']],'as':_0x3bec12['as'],'attributes':_0x3bec12[_0xf6ee('0x1c')],'include':_0x3bec12['include']?_['map'](_0x3bec12[_0xf6ee('0x1b')],function(_0xb7d01d){return{'model':db[_0xb7d01d[_0xf6ee('0x1d')]],'as':_0xb7d01d['as'],'attributes':_0xb7d01d[_0xf6ee('0x1c')],'include':_0xb7d01d[_0xf6ee('0x1b')]?_['map'](_0xb7d01d[_0xf6ee('0x1b')],function(_0x1c3daf){return{'model':db[_0x1c3daf[_0xf6ee('0x1d')]],'as':_0x1c3daf['as'],'attributes':_0x1c3daf[_0xf6ee('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5c39d9){logger[_0xf6ee('0xd')](_0xf6ee('0x1e'),_0x21af4b);logger['debug']('GetTrigger',_0x21af4b,JSON[_0xf6ee('0x12')](_0x5c39d9));_0x39fda2(_0x5c39d9);})[_0xf6ee('0x1f')](function(_0x40d735){logger[_0xf6ee('0x13')](_0xf6ee('0x1e'),_0x40d735['message'],_0x21af4b);_0x121c53(_0x4c3c89['error'](0x1f4,_0x40d735['message']));});});};exports[_0xf6ee('0x20')]=function(_0x47a299){var _0x4571d0=this;return new Promise(function(_0x3908eb,_0x472dee){return db['Trigger'][_0xf6ee('0x21')]({'raw':_0x47a299[_0xf6ee('0x17')]?_0x47a299[_0xf6ee('0x17')][_0xf6ee('0x18')]===undefined?!![]:![]:!![],'where':_0x47a299[_0xf6ee('0x17')]?_0x47a299[_0xf6ee('0x17')][_0xf6ee('0x19')]||null:null,'attributes':_0x47a299['options']?_0x47a299[_0xf6ee('0x17')][_0xf6ee('0x1c')]||null:null,'include':_0x47a299[_0xf6ee('0x17')]?_0x47a299[_0xf6ee('0x17')][_0xf6ee('0x1b')]?_[_0xf6ee('0x22')](_0x47a299[_0xf6ee('0x17')]['include'],function(_0x587977){return{'model':db[_0x587977['model']],'as':_0x587977['as'],'attributes':_0x587977[_0xf6ee('0x1c')],'include':_0x587977[_0xf6ee('0x1b')]?_['map'](_0x587977['include'],function(_0x13e96c){return{'model':db[_0x13e96c[_0xf6ee('0x1d')]],'as':_0x13e96c['as'],'attributes':_0x13e96c[_0xf6ee('0x1c')],'include':_0x13e96c['include']?_['map'](_0x13e96c[_0xf6ee('0x1b')],function(_0x34d92b){return{'model':db[_0x34d92b['model']],'as':_0x34d92b['as'],'attributes':_0x34d92b[_0xf6ee('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xf6ee('0xc')](function(_0x4d2e3c){logger['info'](_0xf6ee('0x20'),_0x47a299);logger[_0xf6ee('0x10')](_0xf6ee('0x20'),_0x47a299,JSON[_0xf6ee('0x12')](_0x4d2e3c));_0x3908eb(_0x4d2e3c);})[_0xf6ee('0x1f')](function(_0x3ecf86){logger['error'](_0xf6ee('0x20'),_0x3ecf86[_0xf6ee('0x15')],_0x47a299);_0x472dee(_0x4571d0[_0xf6ee('0x13')](0x1f4,_0x3ecf86[_0xf6ee('0x15')]));});});};
\ No newline at end of file
index 0c80e72..6db1f58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbff6=['/:id','show','/:id/clone','post','put','update','delete','destroy','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index'];(function(_0x4d9443,_0xe0d01f){var _0x350586=function(_0x1e8783){while(--_0x1e8783){_0x4d9443['push'](_0x4d9443['shift']());}};_0x350586(++_0xe0d01f);}(_0xbff6,0xf3));var _0x6bff=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xbff6[_0x57b54c];return _0x59cc19;};'use strict';var multer=require('multer');var util=require(_0x6bff('0x0'));var path=require('path');var timeout=require(_0x6bff('0x1'));var express=require(_0x6bff('0x2'));var router=express[_0x6bff('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x6bff('0x4'));var interaction=require(_0x6bff('0x5'));var config=require('../../config/environment');var controller=require('./trunk.controller');router[_0x6bff('0x6')]('/',auth[_0x6bff('0x7')](),controller[_0x6bff('0x8')]);router['get'](_0x6bff('0x9'),auth['isAuthenticated'](),controller[_0x6bff('0xa')]);router['post'](_0x6bff('0xb'),auth[_0x6bff('0x7')](),controller['clone']);router[_0x6bff('0xc')]('/',auth[_0x6bff('0x7')](),controller['create']);router[_0x6bff('0xd')](_0x6bff('0x9'),auth['isAuthenticated'](),controller[_0x6bff('0xe')]);router[_0x6bff('0xf')](_0x6bff('0x9'),auth[_0x6bff('0x7')](),controller[_0x6bff('0x10')]);module[_0x6bff('0x11')]=router;
\ No newline at end of file
+var _0x10ae=['delete','destroy','exports','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./trunk.controller','get','isAuthenticated','post','clone','create','put','/:id','update'];(function(_0x10181b,_0x28a3a4){var _0x355732=function(_0x195e34){while(--_0x195e34){_0x10181b['push'](_0x10181b['shift']());}};_0x355732(++_0x28a3a4);}(_0x10ae,0x123));var _0xe10a=function(_0x1a2604,_0x1f0948){_0x1a2604=_0x1a2604-0x0;var _0x3d153d=_0x10ae[_0x1a2604];return _0x3d153d;};'use strict';var multer=require(_0xe10a('0x0'));var util=require('util');var path=require(_0xe10a('0x1'));var timeout=require(_0xe10a('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xe10a('0x3'));var auth=require(_0xe10a('0x4'));var interaction=require(_0xe10a('0x5'));var config=require('../../config/environment');var controller=require(_0xe10a('0x6'));router[_0xe10a('0x7')]('/',auth[_0xe10a('0x8')](),controller['index']);router[_0xe10a('0x7')]('/:id',auth[_0xe10a('0x8')](),controller['show']);router[_0xe10a('0x9')]('/:id/clone',auth['isAuthenticated'](),controller[_0xe10a('0xa')]);router[_0xe10a('0x9')]('/',auth[_0xe10a('0x8')](),controller[_0xe10a('0xb')]);router[_0xe10a('0xc')](_0xe10a('0xd'),auth[_0xe10a('0x8')](),controller[_0xe10a('0xe')]);router[_0xe10a('0xf')]('/:id',auth[_0xe10a('0x8')](),controller[_0xe10a('0x10')]);module[_0xe10a('0x11')]=router;
\ No newline at end of file
index f3d55fa..1158466 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfec1=['passive','dynamic','update,nonat','BOOLEAN','sequelize','exports','STRING','name','ENUM','friend','user','peer','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB','udp','setDataValue','getDataValue','transport','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','yes','nonat','update','outgoing','force_rport,comedia','nat','join','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]','INTEGER','always','accept','refuse','originate','uas','pai','certificate','active'];(function(_0x483fcc,_0x28ce51){var _0x354bf5=function(_0x4ca2ab){while(--_0x4ca2ab){_0x483fcc['push'](_0x483fcc['shift']());}};_0x354bf5(++_0x28ce51);}(_0xfec1,0xdc));var _0x1fec=function(_0x3ba9cd,_0x33adb2){_0x3ba9cd=_0x3ba9cd-0x0;var _0x1815d7=_0xfec1[_0x3ba9cd];return _0x1815d7;};'use strict';var Sequelize=require(_0x1fec('0x0'));module[_0x1fec('0x1')]={'name':{'type':Sequelize[_0x1fec('0x2')],'allowNull':![],'unique':_0x1fec('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x5'),_0x1fec('0x6'),_0x1fec('0x7')),'allowNull':![],'defaultValue':_0x1fec('0x5')},'context':{'type':Sequelize[_0x1fec('0x2')],'allowNull':![],'defaultValue':_0x1fec('0x8')},'callingpres':{'type':Sequelize['ENUM'](_0x1fec('0x9'),_0x1fec('0xa'),_0x1fec('0xb'),'ALLOWED',_0x1fec('0xc'),_0x1fec('0xd'),'PROHIB_FAILED_SCREEN',_0x1fec('0xe'))},'deny':{'type':Sequelize[_0x1fec('0x2')]},'permit':{'type':Sequelize[_0x1fec('0x2')]},'secret':{'type':Sequelize[_0x1fec('0x2')]},'md5secret':{'type':Sequelize[_0x1fec('0x2')]},'remotesecret':{'type':Sequelize['STRING']},'transport':{'type':Sequelize[_0x1fec('0x2')],'defaultValue':_0x1fec('0xf'),'set':function(_0xdfe030){this[_0x1fec('0x10')]('transport',_0xdfe030?_0xdfe030['join'](','):null);},'get':function(){return this[_0x1fec('0x11')](_0x1fec('0x12'))?this[_0x1fec('0x11')]('transport')[_0x1fec('0x13')](','):null;},'comment':_0x1fec('0x14')},'dtmfmode':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x15'),_0x1fec('0x16'),_0x1fec('0x17'),_0x1fec('0x18'),_0x1fec('0x19')),'defaultValue':_0x1fec('0x15')},'directmedia':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no',_0x1fec('0x1b'),_0x1fec('0x1c'),_0x1fec('0x1d')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x1fec('0x2')]},'directmediadeny':{'type':Sequelize['STRING']},'nat':{'type':Sequelize[_0x1fec('0x2')],'defaultValue':_0x1fec('0x1e'),'set':function(_0x16cccf){this[_0x1fec('0x10')](_0x1fec('0x1f'),_0x16cccf?_0x16cccf[_0x1fec('0x20')](','):null);},'get':function(){return this[_0x1fec('0x11')](_0x1fec('0x1f'))?this[_0x1fec('0x11')]('nat')[_0x1fec('0x13')](','):null;},'comment':_0x1fec('0x21')},'callgroup':{'type':Sequelize[_0x1fec('0x2')]},'namedcallgroup':{'type':Sequelize[_0x1fec('0x2')]},'pickupgroup':{'type':Sequelize[_0x1fec('0x2')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x1fec('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x1fec('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize[_0x1fec('0x2')],'defaultValue':_0x1fec('0x22')},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x1fec('0x23'),'set':function(_0x58b83f){this[_0x1fec('0x10')]('allow',_0x58b83f?_0x58b83f[_0x1fec('0x20')](';'):_0x1fec('0x23'));},'get':function(){return this[_0x1fec('0x11')](_0x1fec('0x24'))?this[_0x1fec('0x11')](_0x1fec('0x24'))['split'](';'):null;},'comment':_0x1fec('0x25')},'autoframing':{'type':Sequelize[_0x1fec('0x4')]('yes','no')},'insecure':{'type':Sequelize['STRING'],'defaultValue':_0x1fec('0x26'),'set':function(_0x252b78){this[_0x1fec('0x10')](_0x1fec('0x27'),_0x252b78?_0x252b78['join'](','):null);},'get':function(){return this[_0x1fec('0x11')](_0x1fec('0x27'))?this[_0x1fec('0x11')](_0x1fec('0x27'))[_0x1fec('0x13')](','):null;},'comment':_0x1fec('0x28')},'trustrpid':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no','never')},'promiscredir':{'type':Sequelize[_0x1fec('0x4')]('yes','no')},'useclientcode':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no')},'accountcode':{'type':Sequelize[_0x1fec('0x29')](0xb)},'setvar':{'type':Sequelize[_0x1fec('0x2')]},'callerid':{'type':Sequelize['STRING'],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0x1fec('0x2')]},'callcounter':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no'),'defaultValue':_0x1fec('0x1a')},'busylevel':{'type':Sequelize[_0x1fec('0x29')](0xb)},'allowoverlap':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no')},'allowsubscribe':{'type':Sequelize[_0x1fec('0x4')]('yes','no')},'allowtransfer':{'type':Sequelize[_0x1fec('0x4')]('yes','no')},'ignoresdpversion':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no')},'subscribecontext':{'type':Sequelize[_0x1fec('0x2')]},'template':{'type':Sequelize[_0x1fec('0x2')]},'videosupport':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no',_0x1fec('0x2a')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb)},'rfc2833compensate':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no')},'mailbox':{'type':Sequelize[_0x1fec('0x2')]},'session_timers':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x2b'),_0x1fec('0x2c'),_0x1fec('0x2d'))},'session_expires':{'type':Sequelize[_0x1fec('0x29')](0xb)},'session_minse':{'type':Sequelize[_0x1fec('0x29')](0xb)},'session_refresher':{'type':Sequelize[_0x1fec('0x4')]('uac',_0x1fec('0x2e')),'defaultValue':_0x1fec('0x2e')},'t38pt_usertpsource':{'type':Sequelize[_0x1fec('0x2')]},'regexten':{'type':Sequelize['STRING']},'fromdomain':{'type':Sequelize['STRING']},'fromuser':{'type':Sequelize[_0x1fec('0x2')]},'port':{'type':Sequelize[_0x1fec('0x29')](0x5)},'qualify':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no'),'defaultValue':_0x1fec('0x1a')},'keepalive':{'type':Sequelize['INTEGER'](0xb)},'defaultip':{'type':Sequelize[_0x1fec('0x2')]},'defaultuser':{'type':Sequelize[_0x1fec('0x2')]},'rtptimeout':{'type':Sequelize[_0x1fec('0x29')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x1fec('0x29')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x1fec('0x29')](0xb)},'sendrpid':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no',_0x1fec('0x2f')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x1fec('0x2')]},'callbackextension':{'type':Sequelize[_0x1fec('0x2')]},'timert1':{'type':Sequelize[_0x1fec('0x29')](0xb)},'timerb':{'type':Sequelize[_0x1fec('0x29')](0xb)},'qualifyfreq':{'type':Sequelize[_0x1fec('0x29')](0xb)},'contactpermit':{'type':Sequelize['STRING']},'contactdeny':{'type':Sequelize[_0x1fec('0x2')]},'contactacl':{'type':Sequelize[_0x1fec('0x2')]},'unsolicited_mailbox':{'type':Sequelize[_0x1fec('0x2')]},'use_q850_reason':{'type':Sequelize[_0x1fec('0x2')]},'maxforwards':{'type':Sequelize[_0x1fec('0x29')](0xb)},'encryption':{'type':Sequelize['ENUM'](_0x1fec('0x1a'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no')},'force_avp':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no')},'icesupport':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no')},'dtlsenable':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no')},'dtlsverify':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no','fingerprint',_0x1fec('0x30'))},'dtlsrekey':{'type':Sequelize[_0x1fec('0x29')](0xb)},'dtlscertfile':{'type':Sequelize[_0x1fec('0x2')]},'dtlsprivatekey':{'type':Sequelize[_0x1fec('0x2')]},'dtlscipher':{'type':Sequelize[_0x1fec('0x2')]},'dtlscafile':{'type':Sequelize['STRING']},'dtlscapath':{'type':Sequelize[_0x1fec('0x2')]},'dtlssetup':{'type':Sequelize['ENUM'](_0x1fec('0x31'),_0x1fec('0x32'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING']},'usereqphone':{'type':Sequelize[_0x1fec('0x4')](_0x1fec('0x1a'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x1fec('0x2')]},'recordofffeature':{'type':Sequelize[_0x1fec('0x2')]},'call_limit':{'type':Sequelize[_0x1fec('0x29')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize['ENUM']('yes','no')},'subscribemwi':{'type':Sequelize['ENUM'](_0x1fec('0x1a'),'no')},'vmexten':{'type':Sequelize[_0x1fec('0x2')]},'mohinterpret':{'type':Sequelize[_0x1fec('0x2')]},'mohsuggest':{'type':Sequelize[_0x1fec('0x2')]},'parkinglot':{'type':Sequelize[_0x1fec('0x2')]},'description':{'type':Sequelize[_0x1fec('0x2')]},'host':{'type':Sequelize[_0x1fec('0x2')],'defaultValue':_0x1fec('0x33')},'canreinvite':{'type':Sequelize[_0x1fec('0x4')]('yes','no',_0x1fec('0x1b'),_0x1fec('0x1c'),_0x1fec('0x34')),'defaultValue':'no'},'registry':{'type':Sequelize[_0x1fec('0x2')]},'otherFields':{'type':Sequelize[_0x1fec('0x2')]},'active':{'type':Sequelize[_0x1fec('0x35')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x1fec('0x2')],'defaultValue':'no'}};
\ No newline at end of file
+var _0x5f00=['from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB','udp','setDataValue','getDataValue','transport','split','rfc2833','info','inband','auto','yes','nonat','force_rport,comedia','nat','join','all','allow','ulaw;alaw;gsm','port,invite','insecure','never','INTEGER','\x22\x22\x20<>','always','accept','originate','uac','uas','certificate','active','passive','actpass','dynamic','update','update,nonat','BOOLEAN','sequelize','exports','STRING','ENUM','friend','peer'];(function(_0x2f1762,_0xab43df){var _0x8ab21=function(_0xf6c1f5){while(--_0xf6c1f5){_0x2f1762['push'](_0x2f1762['shift']());}};_0x8ab21(++_0xab43df);}(_0x5f00,0x120));var _0x05f0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5f00[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x05f0('0x0'));module[_0x05f0('0x1')]={'name':{'type':Sequelize[_0x05f0('0x2')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x05f0('0x3')](_0x05f0('0x4'),'user',_0x05f0('0x5')),'allowNull':![],'defaultValue':_0x05f0('0x4')},'context':{'type':Sequelize[_0x05f0('0x2')],'allowNull':![],'defaultValue':_0x05f0('0x6')},'callingpres':{'type':Sequelize[_0x05f0('0x3')](_0x05f0('0x7'),_0x05f0('0x8'),_0x05f0('0x9'),_0x05f0('0xa'),_0x05f0('0xb'),_0x05f0('0xc'),'PROHIB_FAILED_SCREEN',_0x05f0('0xd'))},'deny':{'type':Sequelize[_0x05f0('0x2')]},'permit':{'type':Sequelize[_0x05f0('0x2')]},'secret':{'type':Sequelize[_0x05f0('0x2')]},'md5secret':{'type':Sequelize[_0x05f0('0x2')]},'remotesecret':{'type':Sequelize[_0x05f0('0x2')]},'transport':{'type':Sequelize[_0x05f0('0x2')],'defaultValue':_0x05f0('0xe'),'set':function(_0x786ad7){this[_0x05f0('0xf')]('transport',_0x786ad7?_0x786ad7['join'](','):null);},'get':function(){return this[_0x05f0('0x10')](_0x05f0('0x11'))?this['getDataValue'](_0x05f0('0x11'))[_0x05f0('0x12')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0x05f0('0x3')](_0x05f0('0x13'),_0x05f0('0x14'),'shortinfo',_0x05f0('0x15'),_0x05f0('0x16')),'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize[_0x05f0('0x3')](_0x05f0('0x17'),'no',_0x05f0('0x18'),'update','outgoing'),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x05f0('0x3')](_0x05f0('0x17'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING']},'directmediadeny':{'type':Sequelize[_0x05f0('0x2')]},'nat':{'type':Sequelize[_0x05f0('0x2')],'defaultValue':_0x05f0('0x19'),'set':function(_0x35f917){this[_0x05f0('0xf')](_0x05f0('0x1a'),_0x35f917?_0x35f917[_0x05f0('0x1b')](','):null);},'get':function(){return this[_0x05f0('0x10')](_0x05f0('0x1a'))?this[_0x05f0('0x10')](_0x05f0('0x1a'))['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0x05f0('0x2')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0x05f0('0x2')]},'namedpickupgroup':{'type':Sequelize[_0x05f0('0x2')]},'language':{'type':Sequelize[_0x05f0('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x05f0('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize[_0x05f0('0x2')],'defaultValue':_0x05f0('0x1c')},'allow':{'type':Sequelize[_0x05f0('0x2')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x1efda8){this[_0x05f0('0xf')](_0x05f0('0x1d'),_0x1efda8?_0x1efda8[_0x05f0('0x1b')](';'):_0x05f0('0x1e'));},'get':function(){return this[_0x05f0('0x10')](_0x05f0('0x1d'))?this[_0x05f0('0x10')](_0x05f0('0x1d'))['split'](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]'},'autoframing':{'type':Sequelize[_0x05f0('0x3')](_0x05f0('0x17'),'no')},'insecure':{'type':Sequelize[_0x05f0('0x2')],'defaultValue':_0x05f0('0x1f'),'set':function(_0xcb3845){this['setDataValue'](_0x05f0('0x20'),_0xcb3845?_0xcb3845[_0x05f0('0x1b')](','):null);},'get':function(){return this['getDataValue'](_0x05f0('0x20'))?this[_0x05f0('0x10')]('insecure')[_0x05f0('0x12')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize['ENUM'](_0x05f0('0x17'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x05f0('0x3')]('yes','no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x05f0('0x3')](_0x05f0('0x17'),'no',_0x05f0('0x21'))},'promiscredir':{'type':Sequelize['ENUM'](_0x05f0('0x17'),'no')},'useclientcode':{'type':Sequelize[_0x05f0('0x3')](_0x05f0('0x17'),'no')},'accountcode':{'type':Sequelize[_0x05f0('0x22')](0xb)},'setvar':{'type':Sequelize[_0x05f0('0x2')]},'callerid':{'type':Sequelize[_0x05f0('0x2')],'defaultValue':_0x05f0('0x23')},'amaflags':{'type':Sequelize['STRING']},'callcounter':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0x05f0('0x22')](0xb)},'allowoverlap':{'type':Sequelize[_0x05f0('0x3')](_0x05f0('0x17'),'no')},'allowsubscribe':{'type':Sequelize[_0x05f0('0x3')]('yes','no')},'allowtransfer':{'type':Sequelize[_0x05f0('0x3')](_0x05f0('0x17'),'no')},'ignoresdpversion':{'type':Sequelize[_0x05f0('0x3')](_0x05f0('0x17'),'no')},'subscribecontext':{'type':Sequelize['STRING']},'template':{'type':Sequelize[_0x05f0('0x2')]},'videosupport':{'type':Sequelize[_0x05f0('0x3')](_0x05f0('0x17'),'no',_0x05f0('0x24')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x05f0('0x22')](0xb)},'rfc2833compensate':{'type':Sequelize[_0x05f0('0x3')](_0x05f0('0x17'),'no')},'mailbox':{'type':Sequelize['STRING']},'session_timers':{'type':Sequelize[_0x05f0('0x3')](_0x05f0('0x25'),'refuse',_0x05f0('0x26'))},'session_expires':{'type':Sequelize[_0x05f0('0x22')](0xb)},'session_minse':{'type':Sequelize[_0x05f0('0x22')](0xb)},'session_refresher':{'type':Sequelize[_0x05f0('0x3')](_0x05f0('0x27'),_0x05f0('0x28')),'defaultValue':_0x05f0('0x28')},'t38pt_usertpsource':{'type':Sequelize[_0x05f0('0x2')]},'regexten':{'type':Sequelize[_0x05f0('0x2')]},'fromdomain':{'type':Sequelize[_0x05f0('0x2')]},'fromuser':{'type':Sequelize[_0x05f0('0x2')]},'port':{'type':Sequelize[_0x05f0('0x22')](0x5)},'qualify':{'type':Sequelize[_0x05f0('0x3')](_0x05f0('0x17'),'no'),'defaultValue':_0x05f0('0x17')},'keepalive':{'type':Sequelize[_0x05f0('0x22')](0xb)},'defaultip':{'type':Sequelize[_0x05f0('0x2')]},'defaultuser':{'type':Sequelize[_0x05f0('0x2')]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x05f0('0x22')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x05f0('0x22')](0xb)},'sendrpid':{'type':Sequelize['ENUM'](_0x05f0('0x17'),'no','pai'),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x05f0('0x2')]},'callbackextension':{'type':Sequelize[_0x05f0('0x2')]},'timert1':{'type':Sequelize[_0x05f0('0x22')](0xb)},'timerb':{'type':Sequelize['INTEGER'](0xb)},'qualifyfreq':{'type':Sequelize[_0x05f0('0x22')](0xb)},'contactpermit':{'type':Sequelize[_0x05f0('0x2')]},'contactdeny':{'type':Sequelize[_0x05f0('0x2')]},'contactacl':{'type':Sequelize['STRING']},'unsolicited_mailbox':{'type':Sequelize[_0x05f0('0x2')]},'use_q850_reason':{'type':Sequelize[_0x05f0('0x2')]},'maxforwards':{'type':Sequelize[_0x05f0('0x22')](0xb)},'encryption':{'type':Sequelize[_0x05f0('0x3')](_0x05f0('0x17'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x05f0('0x3')](_0x05f0('0x17'),'no')},'force_avp':{'type':Sequelize[_0x05f0('0x3')](_0x05f0('0x17'),'no')},'icesupport':{'type':Sequelize['ENUM'](_0x05f0('0x17'),'no')},'dtlsenable':{'type':Sequelize[_0x05f0('0x3')](_0x05f0('0x17'),'no')},'dtlsverify':{'type':Sequelize[_0x05f0('0x3')](_0x05f0('0x17'),'no','fingerprint',_0x05f0('0x29'))},'dtlsrekey':{'type':Sequelize[_0x05f0('0x22')](0xb)},'dtlscertfile':{'type':Sequelize['STRING']},'dtlsprivatekey':{'type':Sequelize[_0x05f0('0x2')]},'dtlscipher':{'type':Sequelize['STRING']},'dtlscafile':{'type':Sequelize[_0x05f0('0x2')]},'dtlscapath':{'type':Sequelize['STRING']},'dtlssetup':{'type':Sequelize[_0x05f0('0x3')](_0x05f0('0x2a'),_0x05f0('0x2b'),_0x05f0('0x2c')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x05f0('0x2')]},'usereqphone':{'type':Sequelize[_0x05f0('0x3')]('yes','no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x05f0('0x2')]},'recordofffeature':{'type':Sequelize['STRING']},'call_limit':{'type':Sequelize[_0x05f0('0x22')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x05f0('0x3')](_0x05f0('0x17'),'no')},'subscribemwi':{'type':Sequelize[_0x05f0('0x3')]('yes','no')},'vmexten':{'type':Sequelize[_0x05f0('0x2')]},'mohinterpret':{'type':Sequelize[_0x05f0('0x2')]},'mohsuggest':{'type':Sequelize[_0x05f0('0x2')]},'parkinglot':{'type':Sequelize[_0x05f0('0x2')]},'description':{'type':Sequelize[_0x05f0('0x2')]},'host':{'type':Sequelize['STRING'],'defaultValue':_0x05f0('0x2d')},'canreinvite':{'type':Sequelize['ENUM'](_0x05f0('0x17'),'no',_0x05f0('0x18'),_0x05f0('0x2e'),_0x05f0('0x2f')),'defaultValue':'no'},'registry':{'type':Sequelize[_0x05f0('0x2')]},'otherFields':{'type':Sequelize[_0x05f0('0x2')]},'active':{'type':Sequelize[_0x05f0('0x30')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x05f0('0x2')],'defaultValue':'no'}};
\ No newline at end of file
index a0cd87e..372dc66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x425d=['readFileSync','root','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','UserProfileSection','userProfileId','/etc/asterisk/sip_xcally_trunks.conf','destroy','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','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','jayson/promise','client','http','request','then','info','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','error','code','message','Trunk,\x20%s,\x20%s','result','catch','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','get','Trunks','UserProfileResource','stack','name','send','index','map','Trunk','rawAttributes','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','where','pick','filters','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','show','params','clone','find','omit','updatedAt','body','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','server/files/templates/trunk.ejs','utf8'];(function(_0x52ad5d,_0xd2b7e3){var _0x237e87=function(_0x2c4a87){while(--_0x2c4a87){_0x52ad5d['push'](_0x52ad5d['shift']());}};_0x237e87(++_0xd2b7e3);}(_0x425d,0x1e0));var _0xd425=function(_0x397c8d,_0xf0a1a4){_0x397c8d=_0x397c8d-0x0;var _0x1c5b0a=_0x425d[_0x397c8d];return _0x1c5b0a;};'use strict';var emlformat=require(_0xd425('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd425('0x1'));var jsonpatch=require(_0xd425('0x2'));var rp=require(_0xd425('0x3'));var moment=require(_0xd425('0x4'));var BPromise=require(_0xd425('0x5'));var Mustache=require(_0xd425('0x6'));var util=require(_0xd425('0x7'));var path=require('path');var sox=require(_0xd425('0x8'));var csv=require(_0xd425('0x9'));var ejs=require(_0xd425('0xa'));var fs=require('fs');var fs_extra=require(_0xd425('0xb'));var _=require(_0xd425('0xc'));var squel=require(_0xd425('0xd'));var crypto=require('crypto');var jsforce=require(_0xd425('0xe'));var deskjs=require(_0xd425('0xf'));var toCsv=require(_0xd425('0x9'));var querystring=require(_0xd425('0x10'));var Papa=require(_0xd425('0x11'));var Redis=require(_0xd425('0x12'));var authService=require(_0xd425('0x13'));var qs=require(_0xd425('0x14'));var as=require(_0xd425('0x15'));var hardwareService=require(_0xd425('0x16'));var logger=require(_0xd425('0x17'))(_0xd425('0x18'));var utils=require(_0xd425('0x19'));var config=require(_0xd425('0x1a'));var licenseUtil=require(_0xd425('0x1b'));var db=require(_0xd425('0x1c'))['db'];var jayson=require(_0xd425('0x1d'));var client=jayson[_0xd425('0x1e')][_0xd425('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x18eafb,_0x51263f,_0x27318c,_0x17a498){return new BPromise(function(_0x336dc3,_0x5d3d60){var _0x309263=_0x17a498||client;return _0x309263[_0xd425('0x20')](_0x18eafb,_0x27318c)[_0xd425('0x21')](function(_0x41f34d){logger[_0xd425('0x22')]('Trunk,\x20%s,\x20%s',_0x51263f,_0xd425('0x23'));logger[_0xd425('0x24')](_0xd425('0x25'),_0x51263f,_0xd425('0x23'),JSON['stringify'](_0x41f34d));if(_0x41f34d[_0xd425('0x26')]){if(_0x41f34d[_0xd425('0x26')][_0xd425('0x27')]===0x1f4){logger[_0xd425('0x26')]('Trunk,\x20%s,\x20%s',_0x51263f,_0x41f34d['error']['message']);return _0x5d3d60(_0x41f34d['error'][_0xd425('0x28')]);}logger[_0xd425('0x26')](_0xd425('0x29'),_0x51263f,_0x41f34d['error'][_0xd425('0x28')]);return _0x336dc3(_0x41f34d[_0xd425('0x26')]['message']);}else{logger[_0xd425('0x22')](_0xd425('0x29'),_0x51263f,_0xd425('0x23'));_0x336dc3(_0x41f34d[_0xd425('0x2a')][_0xd425('0x28')]);}})[_0xd425('0x2b')](function(_0x2480a0){logger[_0xd425('0x26')](_0xd425('0x29'),_0x51263f,_0x2480a0);_0x5d3d60(_0x2480a0);});});}function respondWithStatusCode(_0x2b030b,_0x151ad9){_0x151ad9=_0x151ad9||0xcc;return function(_0x40e84b){if(_0x40e84b){return _0x2b030b['sendStatus'](_0x151ad9);}return _0x2b030b[_0xd425('0x2c')](_0x151ad9)[_0xd425('0x2d')]();};}function respondWithResult(_0x398985,_0x1908a5){_0x1908a5=_0x1908a5||0xc8;return function(_0x2afcdb){if(_0x2afcdb){return _0x398985[_0xd425('0x2c')](_0x1908a5)[_0xd425('0x2e')](_0x2afcdb);}};}function respondWithFilteredResult(_0x577e4b,_0x12f951){return function(_0x177de2){if(_0x177de2){var _0x1d8861=typeof _0x12f951['offset']===_0xd425('0x2f')&&typeof _0x12f951[_0xd425('0x30')]===_0xd425('0x2f');var _0x999fb9=_0x177de2[_0xd425('0x31')];var _0x185d7e=_0x1d8861?0x0:_0x12f951[_0xd425('0x32')];var _0x37b63c=_0x1d8861?_0x177de2[_0xd425('0x31')]:_0x12f951[_0xd425('0x32')]+_0x12f951['limit'];var _0x471e3e;if(_0x37b63c>=_0x999fb9){_0x37b63c=_0x999fb9;_0x471e3e=0xc8;}else{_0x471e3e=0xce;}_0x577e4b[_0xd425('0x2c')](_0x471e3e);return _0x577e4b[_0xd425('0x33')](_0xd425('0x34'),_0x185d7e+'-'+_0x37b63c+'/'+_0x999fb9)[_0xd425('0x2e')](_0x177de2);}return null;};}function patchUpdates(_0x1abf33){return function(_0x47405f){try{jsonpatch[_0xd425('0x35')](_0x47405f,_0x1abf33,!![]);}catch(_0x3ec51b){return BPromise[_0xd425('0x36')](_0x3ec51b);}return _0x47405f[_0xd425('0x37')]();};}function saveUpdates(_0x5f3dab,_0x316493){return function(_0x2a2a9b){if(_0x2a2a9b){return _0x2a2a9b[_0xd425('0x38')](_0x5f3dab)[_0xd425('0x21')](function(_0x28870f){return _0x28870f;});}return null;};}function removeEntity(_0x4eddbc,_0x4aa168){return function(_0x3badcc){if(_0x3badcc){return _0x3badcc['destroy']()['then'](function(){var _0x51669d=_0x3badcc[_0xd425('0x39')]({'plain':!![]});var _0xfb0c8=_0xd425('0x3a');return db[_0xd425('0x3b')]['destroy']({'where':{'type':_0xfb0c8,'resourceId':_0x51669d['id']}})[_0xd425('0x21')](function(){return _0x3badcc;});})[_0xd425('0x21')](function(){_0x4eddbc[_0xd425('0x2c')](0xcc)[_0xd425('0x2d')]();});}};}function handleEntityNotFound(_0x27b9e2,_0x1e12f2){return function(_0x35bbec){if(!_0x35bbec){_0x27b9e2['sendStatus'](0x194);}return _0x35bbec;};}function handleError(_0x363fb0,_0x59b3d3){_0x59b3d3=_0x59b3d3||0x1f4;return function(_0x22df81){logger[_0xd425('0x26')](_0x22df81[_0xd425('0x3c')]);if(_0x22df81['name']){delete _0x22df81[_0xd425('0x3d')];}_0x363fb0[_0xd425('0x2c')](_0x59b3d3)[_0xd425('0x3e')](_0x22df81);};}exports[_0xd425('0x3f')]=function(_0x58f36d,_0x1d38fa){var _0x3cf540={},_0x59e326={},_0x5d310e={'count':0x0,'rows':[]};var _0x48fc85=_[_0xd425('0x40')](db[_0xd425('0x41')][_0xd425('0x42')],function(_0x588688){return{'name':_0x588688['fieldName'],'type':_0x588688['type'][_0xd425('0x43')]};});_0x59e326[_0xd425('0x44')]=_[_0xd425('0x40')](_0x48fc85,_0xd425('0x3d'));_0x59e326[_0xd425('0x45')]=_[_0xd425('0x46')](_0x58f36d[_0xd425('0x45')]);_0x59e326['filters']=_[_0xd425('0x47')](_0x59e326[_0xd425('0x44')],_0x59e326[_0xd425('0x45')]);_0x3cf540['attributes']=_[_0xd425('0x47')](_0x59e326[_0xd425('0x44')],qs[_0xd425('0x48')](_0x58f36d['query'][_0xd425('0x48')]));_0x3cf540[_0xd425('0x49')]=_0x3cf540[_0xd425('0x49')][_0xd425('0x4a')]?_0x3cf540['attributes']:_0x59e326[_0xd425('0x44')];if(!_0x58f36d[_0xd425('0x45')][_0xd425('0x4b')](_0xd425('0x4c'))){_0x3cf540[_0xd425('0x30')]=qs[_0xd425('0x30')](_0x58f36d[_0xd425('0x45')]['limit']);_0x3cf540[_0xd425('0x32')]=qs[_0xd425('0x32')](_0x58f36d['query'][_0xd425('0x32')]);}_0x3cf540['order']=qs['sort'](_0x58f36d[_0xd425('0x45')]['sort']);_0x3cf540[_0xd425('0x4d')]=qs['filters'](_[_0xd425('0x4e')](_0x58f36d[_0xd425('0x45')],_0x59e326[_0xd425('0x4f')]),_0x48fc85);if(_0x58f36d[_0xd425('0x45')][_0xd425('0x50')]){_0x3cf540['where']=_[_0xd425('0x51')](_0x3cf540['where'],{'$or':_[_0xd425('0x40')](_0x48fc85,function(_0x55a15d){if(_0x55a15d[_0xd425('0x52')]!==_0xd425('0x53')){var _0x3fd2ce={};_0x3fd2ce[_0x55a15d[_0xd425('0x3d')]]={'$like':'%'+_0x58f36d[_0xd425('0x45')]['filter']+'%'};return _0x3fd2ce;}})});}_0x3cf540=_[_0xd425('0x51')]({},_0x3cf540,_0x58f36d[_0xd425('0x54')]);var _0x35e77b={'where':_0x3cf540[_0xd425('0x4d')]};return db[_0xd425('0x41')]['count'](_0x35e77b)[_0xd425('0x21')](function(_0x177704){_0x5d310e[_0xd425('0x31')]=_0x177704;if(_0x58f36d[_0xd425('0x45')][_0xd425('0x55')]){_0x3cf540[_0xd425('0x56')]=[{'all':!![]}];}return db['Trunk'][_0xd425('0x57')](_0x3cf540);})[_0xd425('0x21')](function(_0x5bfac6){_0x5d310e[_0xd425('0x58')]=_0x5bfac6;return _0x5d310e;})[_0xd425('0x21')](respondWithFilteredResult(_0x1d38fa,_0x3cf540))[_0xd425('0x2b')](handleError(_0x1d38fa,null));};exports[_0xd425('0x59')]=function(_0x5c0219,_0x54f1d){var _0x2b8882={'raw':![],'where':{'id':_0x5c0219[_0xd425('0x5a')]['id']}},_0x4552cd={};_0x4552cd[_0xd425('0x44')]=_['keys'](db['Trunk'][_0xd425('0x42')]);_0x4552cd['query']=_[_0xd425('0x46')](_0x5c0219[_0xd425('0x45')]);_0x4552cd['filters']=_[_0xd425('0x47')](_0x4552cd['model'],_0x4552cd['query']);_0x2b8882[_0xd425('0x49')]=_[_0xd425('0x47')](_0x4552cd[_0xd425('0x44')],qs[_0xd425('0x48')](_0x5c0219[_0xd425('0x45')][_0xd425('0x48')]));_0x2b8882[_0xd425('0x49')]=_0x2b8882[_0xd425('0x49')]['length']?_0x2b8882[_0xd425('0x49')]:_0x4552cd[_0xd425('0x44')];if(_0x5c0219[_0xd425('0x45')][_0xd425('0x55')]){_0x2b8882[_0xd425('0x56')]=[{'all':!![]}];}_0x2b8882=_[_0xd425('0x51')]({},_0x2b8882,_0x5c0219[_0xd425('0x54')]);return db[_0xd425('0x41')]['find'](_0x2b8882)['then'](handleEntityNotFound(_0x54f1d,null))['then'](respondWithResult(_0x54f1d,null))[_0xd425('0x2b')](handleError(_0x54f1d,null));};exports[_0xd425('0x5b')]=function(_0x3dec61,_0x3c6b49){var _0x59c286={'where':{'id':_0x3dec61['params']['id']}},_0x4fedc0={};_0x4fedc0['model']=_[_0xd425('0x46')](db[_0xd425('0x41')]['rawAttributes']);_0x59c286[_0xd425('0x49')]=_[_0xd425('0x47')](_0x4fedc0[_0xd425('0x44')],qs['fields'](_0x3dec61['query'][_0xd425('0x48')]));_0x59c286['attributes']=_0x59c286['attributes']['length']?_0x59c286[_0xd425('0x49')]:_0x4fedc0[_0xd425('0x44')];if(_0x3dec61[_0xd425('0x45')]['includeAll']){_0x59c286[_0xd425('0x56')]=[{'all':!![]}];}_0x59c286=_['merge']({},_0x59c286,_0x3dec61[_0xd425('0x54')]);return db[_0xd425('0x41')][_0xd425('0x5c')](_0x59c286)[_0xd425('0x21')](handleEntityNotFound(_0x3c6b49,null))[_0xd425('0x21')](function(_0xd261a){if(_0xd261a){var _0xa21f7c=_0xd261a[_0xd425('0x39')]({'plain':!![]});_0xa21f7c=qs[_0xd425('0x5d')](_0xa21f7c,['id','createdAt',_0xd425('0x5e')]);_0x3dec61[_0xd425('0x5f')]=_[_0xd425('0x5d')](_0x3dec61[_0xd425('0x5f')],['id','createdAt','updatedAt']);return db[_0xd425('0x41')][_0xd425('0x60')](_[_0xd425('0x51')](_0xa21f7c,_0x3dec61[_0xd425('0x5f')]),{'include':_0x3dec61[_0xd425('0x45')][_0xd425('0x55')]?[{'all':!![]}]:undefined})[_0xd425('0x21')](function(_0x44782a){var _0x1fcde4=_0x3dec61[_0xd425('0x61')][_0xd425('0x39')]({'plain':!![]});if(!_0x1fcde4)throw new Error(_0xd425('0x62'));if(_0x1fcde4[_0xd425('0x63')]===_0xd425('0x61')){var _0x5e72db=_0x44782a[_0xd425('0x39')]({'plain':!![]});var _0x343cc1=_0xd425('0x3a');return db['UserProfileSection']['find']({'where':{'name':_0x343cc1,'userProfileId':_0x1fcde4['userProfileId']},'raw':!![]})[_0xd425('0x21')](function(_0x34d065){if(_0x34d065&&_0x34d065[_0xd425('0x64')]===0x0){return db['UserProfileResource'][_0xd425('0x60')]({'name':_0x5e72db['name'],'resourceId':_0x5e72db['id'],'type':_0x34d065[_0xd425('0x3d')],'sectionId':_0x34d065['id']},{})[_0xd425('0x21')](function(){return _0x44782a;});}else{return _0x44782a;}})[_0xd425('0x2b')](function(_0x5113fc){logger[_0xd425('0x26')](_0xd425('0x65'),_0x5113fc);throw _0x5113fc;});}return _0x44782a;});}})[_0xd425('0x21')](respondWithResult(_0x3c6b49,0xc9))[_0xd425('0x2b')](handleError(_0x3c6b49,null));};exports[_0xd425('0x60')]=function(_0x43b1a9,_0x38a762,_0x44db7f){var _0xcb1a64;return db[_0xd425('0x41')][_0xd425('0x60')](_0x43b1a9[_0xd425('0x5f')],{'raw':!![]})[_0xd425('0x21')](function(_0x285d54){_0xcb1a64=_0x285d54;return db[_0xd425('0x41')][_0xd425('0x57')]({'raw':!![]});})[_0xd425('0x21')](function(_0x25cae6){var _0x541218=fs['readFileSync'](path[_0xd425('0x66')](config['root'],_0xd425('0x67')),_0xd425('0x68'));var _0xb407bb=fs[_0xd425('0x69')](path['join'](config[_0xd425('0x6a')],_0xd425('0x6b')),_0xd425('0x68'));var _0x689332=ejs[_0xd425('0x6c')](_0x541218,{'trunks':_0x25cae6||[]});fs[_0xd425('0x6d')]('/etc/asterisk/sip_xcally_trunks.conf',_0x689332);if(_0xcb1a64['registry']){var _0x3ccffe=ejs[_0xd425('0x6c')](_0xb407bb,{'trunks':_0x25cae6||[]});fs['writeFileSync'](_0xd425('0x6e'),_0x3ccffe);}})['then'](function(){return respondWithRpcPromise(_0xd425('0x6f'),_0xd425('0x60'),{'module':_0xd425('0x70')});})[_0xd425('0x21')](function(){var _0x376134=_0x43b1a9[_0xd425('0x61')][_0xd425('0x39')]({'plain':!![]});if(!_0x376134)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x376134[_0xd425('0x63')]===_0xd425('0x61')){var _0x24af3=_0xcb1a64[_0xd425('0x39')]({'plain':!![]});return db[_0xd425('0x71')]['find']({'where':{'name':_0xd425('0x3a'),'userProfileId':_0x376134[_0xd425('0x72')]},'raw':!![]})['then'](function(_0x2bb36f){if(_0x2bb36f&&_0x2bb36f[_0xd425('0x64')]===0x0){return db['UserProfileResource'][_0xd425('0x60')]({'name':_0x24af3[_0xd425('0x3d')],'resourceId':_0x24af3['id'],'type':_0x2bb36f[_0xd425('0x3d')],'sectionId':_0x2bb36f['id']},{})[_0xd425('0x21')](function(){return _0xcb1a64;});}else{return _0xcb1a64;}})[_0xd425('0x2b')](function(_0x572f23){logger[_0xd425('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x572f23);throw _0x572f23;});}return _0xcb1a64;})[_0xd425('0x21')](respondWithResult(_0x38a762,0xc9))[_0xd425('0x2b')](handleError(_0x38a762,null));};exports['update']=function(_0x2bf8e6,_0xcf7b51,_0x66d87b){var _0x1fc64d;return db['Trunk']['find']({'where':{'id':_0x2bf8e6[_0xd425('0x5a')]['id']}})[_0xd425('0x21')](handleEntityNotFound(_0xcf7b51,null))[_0xd425('0x21')](saveUpdates(_0x2bf8e6['body'],null))[_0xd425('0x21')](function(_0xb1479e){if(_0xb1479e){_0x1fc64d=_0xb1479e;return db['Trunk'][_0xd425('0x57')]({'raw':!![]});}})['then'](function(_0x998ad1){if(_0x998ad1){var _0x46346c=fs[_0xd425('0x69')](path[_0xd425('0x66')](config['root'],'server/files/templates/trunk.ejs'),_0xd425('0x68'));var _0x413a65=fs['readFileSync'](path[_0xd425('0x66')](config[_0xd425('0x6a')],'server/files/templates/registry.ejs'),_0xd425('0x68'));var _0x369f8b=ejs[_0xd425('0x6c')](_0x46346c,{'trunks':_0x998ad1||[]});fs[_0xd425('0x6d')](_0xd425('0x73'),_0x369f8b);var _0xf251e6=ejs[_0xd425('0x6c')](_0x413a65,{'trunks':_0x998ad1||[]});fs['writeFileSync']('/etc/asterisk/sip_xcally_registers.conf',_0xf251e6);return respondWithRpcPromise(_0xd425('0x6f'),'update',{'module':_0xd425('0x70')});}return null;})[_0xd425('0x21')](function(_0x58cad5){if(_0x58cad5){return _0x1fc64d;}})[_0xd425('0x21')](respondWithResult(_0xcf7b51,null))[_0xd425('0x2b')](handleError(_0xcf7b51,null));};exports['destroy']=function(_0x592c40,_0x750685,_0x242ed8){var _0x16eac6;return db[_0xd425('0x41')][_0xd425('0x5c')]({'where':{'id':_0x592c40[_0xd425('0x5a')]['id']}})[_0xd425('0x21')](handleEntityNotFound(_0x750685,null))[_0xd425('0x21')](removeEntity(_0x750685,null))['then'](function(){return db[_0xd425('0x41')][_0xd425('0x57')]({'raw':!![]});})['then'](function(_0x2bbcf3){var _0x1d386c=fs[_0xd425('0x69')](path[_0xd425('0x66')](config[_0xd425('0x6a')],_0xd425('0x67')),_0xd425('0x68'));var _0x2c3995=fs[_0xd425('0x69')](path[_0xd425('0x66')](config[_0xd425('0x6a')],'server/files/templates/registry.ejs'),_0xd425('0x68'));var _0x498e81=ejs['render'](_0x1d386c,{'trunks':_0x2bbcf3});var _0x2c8d63=ejs['render'](_0x2c3995,{'trunks':_0x2bbcf3});fs[_0xd425('0x6d')](_0xd425('0x73'),_0x498e81);fs[_0xd425('0x6d')](_0xd425('0x6e'),_0x2c8d63);return respondWithRpcPromise(_0xd425('0x6f'),_0xd425('0x74'),{'module':_0xd425('0x70')});})['catch'](handleError(_0x750685,null));};
\ No newline at end of file
+var _0xbec5=['readFileSync','root','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_registers.conf','Reload','Unable\x20to\x20retrieve\x20the\x20current\x20user','update','/etc/asterisk/sip_xcally_trunks.conf','chan_sip.so','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','http','request','then','info','Trunk,\x20%s,\x20%s','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','sendStatus','status','end','offset','limit','undefined','count','set','json','apply','reject','Trunks','UserProfileResource','destroy','stack','name','send','map','Trunk','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','length','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','attributes','find','clone','get','omit','updatedAt','body','createdAt','create','user','role','UserProfileSection','userProfileId','autoAssociation','join','server/files/templates/trunk.ejs','utf8'];(function(_0x87107a,_0x3f6a1e){var _0x417412=function(_0x8f0fe9){while(--_0x8f0fe9){_0x87107a['push'](_0x87107a['shift']());}};_0x417412(++_0x3f6a1e);}(_0xbec5,0xe5));var _0x5bec=function(_0x8af54b,_0x280be5){_0x8af54b=_0x8af54b-0x0;var _0x27d8f0=_0xbec5[_0x8af54b];return _0x27d8f0;};'use strict';var emlformat=require(_0x5bec('0x0'));var rimraf=require(_0x5bec('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5bec('0x2'));var rp=require(_0x5bec('0x3'));var moment=require(_0x5bec('0x4'));var BPromise=require(_0x5bec('0x5'));var Mustache=require(_0x5bec('0x6'));var util=require('util');var path=require(_0x5bec('0x7'));var sox=require(_0x5bec('0x8'));var csv=require(_0x5bec('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5bec('0xa'));var _=require(_0x5bec('0xb'));var squel=require(_0x5bec('0xc'));var crypto=require(_0x5bec('0xd'));var jsforce=require(_0x5bec('0xe'));var deskjs=require(_0x5bec('0xf'));var toCsv=require(_0x5bec('0x9'));var querystring=require(_0x5bec('0x10'));var Papa=require('papaparse');var Redis=require(_0x5bec('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x5bec('0x12'));var as=require(_0x5bec('0x13'));var hardwareService=require(_0x5bec('0x14'));var logger=require('../../config/logger')(_0x5bec('0x15'));var utils=require(_0x5bec('0x16'));var config=require(_0x5bec('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x5bec('0x18'))['db'];var jayson=require(_0x5bec('0x19'));var client=jayson['client'][_0x5bec('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0xaa984d,_0x35393a,_0x6888a4,_0x3198e0){return new BPromise(function(_0xcd6d90,_0x24dcd6){var _0x43fd2a=_0x3198e0||client;return _0x43fd2a[_0x5bec('0x1b')](_0xaa984d,_0x6888a4)[_0x5bec('0x1c')](function(_0x31b9e4){logger[_0x5bec('0x1d')](_0x5bec('0x1e'),_0x35393a,'request\x20sent');logger['debug'](_0x5bec('0x1f'),_0x35393a,_0x5bec('0x20'),JSON[_0x5bec('0x21')](_0x31b9e4));if(_0x31b9e4[_0x5bec('0x22')]){if(_0x31b9e4['error']['code']===0x1f4){logger[_0x5bec('0x22')](_0x5bec('0x1e'),_0x35393a,_0x31b9e4['error'][_0x5bec('0x23')]);return _0x24dcd6(_0x31b9e4[_0x5bec('0x22')][_0x5bec('0x23')]);}logger[_0x5bec('0x22')]('Trunk,\x20%s,\x20%s',_0x35393a,_0x31b9e4[_0x5bec('0x22')]['message']);return _0xcd6d90(_0x31b9e4[_0x5bec('0x22')][_0x5bec('0x23')]);}else{logger[_0x5bec('0x1d')](_0x5bec('0x1e'),_0x35393a,_0x5bec('0x20'));_0xcd6d90(_0x31b9e4['result'][_0x5bec('0x23')]);}})['catch'](function(_0x2b2d26){logger[_0x5bec('0x22')]('Trunk,\x20%s,\x20%s',_0x35393a,_0x2b2d26);_0x24dcd6(_0x2b2d26);});});}function respondWithStatusCode(_0xa414f8,_0xbef70b){_0xbef70b=_0xbef70b||0xcc;return function(_0x4e0ca2){if(_0x4e0ca2){return _0xa414f8[_0x5bec('0x24')](_0xbef70b);}return _0xa414f8[_0x5bec('0x25')](_0xbef70b)[_0x5bec('0x26')]();};}function respondWithResult(_0x20da89,_0x226d55){_0x226d55=_0x226d55||0xc8;return function(_0x131143){if(_0x131143){return _0x20da89[_0x5bec('0x25')](_0x226d55)['json'](_0x131143);}};}function respondWithFilteredResult(_0x5b63ab,_0x5e44b3){return function(_0x2961bd){if(_0x2961bd){var _0x2cdd2f=typeof _0x5e44b3[_0x5bec('0x27')]==='undefined'&&typeof _0x5e44b3[_0x5bec('0x28')]===_0x5bec('0x29');var _0x57331b=_0x2961bd[_0x5bec('0x2a')];var _0x63ac8=_0x2cdd2f?0x0:_0x5e44b3['offset'];var _0x5336b3=_0x2cdd2f?_0x2961bd[_0x5bec('0x2a')]:_0x5e44b3[_0x5bec('0x27')]+_0x5e44b3[_0x5bec('0x28')];var _0x2c7a7b;if(_0x5336b3>=_0x57331b){_0x5336b3=_0x57331b;_0x2c7a7b=0xc8;}else{_0x2c7a7b=0xce;}_0x5b63ab[_0x5bec('0x25')](_0x2c7a7b);return _0x5b63ab[_0x5bec('0x2b')]('Content-Range',_0x63ac8+'-'+_0x5336b3+'/'+_0x57331b)[_0x5bec('0x2c')](_0x2961bd);}return null;};}function patchUpdates(_0x59b5b6){return function(_0x45863b){try{jsonpatch[_0x5bec('0x2d')](_0x45863b,_0x59b5b6,!![]);}catch(_0x3034c9){return BPromise[_0x5bec('0x2e')](_0x3034c9);}return _0x45863b['save']();};}function saveUpdates(_0x2b42c8,_0x1aba46){return function(_0xfc7d41){if(_0xfc7d41){return _0xfc7d41['update'](_0x2b42c8)[_0x5bec('0x1c')](function(_0x4cfb89){return _0x4cfb89;});}return null;};}function removeEntity(_0x14cdbf,_0x207192){return function(_0x29df14){if(_0x29df14){return _0x29df14['destroy']()[_0x5bec('0x1c')](function(){var _0x420ad4=_0x29df14['get']({'plain':!![]});var _0x34b441=_0x5bec('0x2f');return db[_0x5bec('0x30')][_0x5bec('0x31')]({'where':{'type':_0x34b441,'resourceId':_0x420ad4['id']}})[_0x5bec('0x1c')](function(){return _0x29df14;});})['then'](function(){_0x14cdbf[_0x5bec('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2d3793,_0x384f04){return function(_0x182b86){if(!_0x182b86){_0x2d3793[_0x5bec('0x24')](0x194);}return _0x182b86;};}function handleError(_0x2e421e,_0x1923fc){_0x1923fc=_0x1923fc||0x1f4;return function(_0x49c8ef){logger[_0x5bec('0x22')](_0x49c8ef[_0x5bec('0x32')]);if(_0x49c8ef[_0x5bec('0x33')]){delete _0x49c8ef['name'];}_0x2e421e[_0x5bec('0x25')](_0x1923fc)[_0x5bec('0x34')](_0x49c8ef);};}exports['index']=function(_0xdb0430,_0x58c34e){var _0x400e22={},_0x2c0b08={},_0x402e5d={'count':0x0,'rows':[]};var _0x49cdfa=_[_0x5bec('0x35')](db[_0x5bec('0x36')][_0x5bec('0x37')],function(_0x139859){return{'name':_0x139859[_0x5bec('0x38')],'type':_0x139859[_0x5bec('0x39')][_0x5bec('0x3a')]};});_0x2c0b08['model']=_[_0x5bec('0x35')](_0x49cdfa,_0x5bec('0x33'));_0x2c0b08[_0x5bec('0x3b')]=_[_0x5bec('0x3c')](_0xdb0430['query']);_0x2c0b08[_0x5bec('0x3d')]=_[_0x5bec('0x3e')](_0x2c0b08[_0x5bec('0x3f')],_0x2c0b08['query']);_0x400e22['attributes']=_[_0x5bec('0x3e')](_0x2c0b08[_0x5bec('0x3f')],qs[_0x5bec('0x40')](_0xdb0430[_0x5bec('0x3b')][_0x5bec('0x40')]));_0x400e22['attributes']=_0x400e22['attributes'][_0x5bec('0x41')]?_0x400e22['attributes']:_0x2c0b08[_0x5bec('0x3f')];if(!_0xdb0430[_0x5bec('0x3b')][_0x5bec('0x42')]('nolimit')){_0x400e22[_0x5bec('0x28')]=qs[_0x5bec('0x28')](_0xdb0430['query'][_0x5bec('0x28')]);_0x400e22[_0x5bec('0x27')]=qs[_0x5bec('0x27')](_0xdb0430[_0x5bec('0x3b')][_0x5bec('0x27')]);}_0x400e22[_0x5bec('0x43')]=qs[_0x5bec('0x44')](_0xdb0430['query']['sort']);_0x400e22[_0x5bec('0x45')]=qs['filters'](_['pick'](_0xdb0430[_0x5bec('0x3b')],_0x2c0b08['filters']),_0x49cdfa);if(_0xdb0430['query']['filter']){_0x400e22[_0x5bec('0x45')]=_[_0x5bec('0x46')](_0x400e22[_0x5bec('0x45')],{'$or':_[_0x5bec('0x35')](_0x49cdfa,function(_0x48858a){if(_0x48858a[_0x5bec('0x39')]!==_0x5bec('0x47')){var _0xa4d32={};_0xa4d32[_0x48858a[_0x5bec('0x33')]]={'$like':'%'+_0xdb0430['query'][_0x5bec('0x48')]+'%'};return _0xa4d32;}})});}_0x400e22=_[_0x5bec('0x46')]({},_0x400e22,_0xdb0430[_0x5bec('0x49')]);var _0x51a3f9={'where':_0x400e22[_0x5bec('0x45')]};return db['Trunk'][_0x5bec('0x2a')](_0x51a3f9)[_0x5bec('0x1c')](function(_0x133d5c){_0x402e5d[_0x5bec('0x2a')]=_0x133d5c;if(_0xdb0430['query'][_0x5bec('0x4a')]){_0x400e22[_0x5bec('0x4b')]=[{'all':!![]}];}return db[_0x5bec('0x36')][_0x5bec('0x4c')](_0x400e22);})[_0x5bec('0x1c')](function(_0x123758){_0x402e5d[_0x5bec('0x4d')]=_0x123758;return _0x402e5d;})['then'](respondWithFilteredResult(_0x58c34e,_0x400e22))[_0x5bec('0x4e')](handleError(_0x58c34e,null));};exports[_0x5bec('0x4f')]=function(_0x5775ca,_0x273e09){var _0x3e6180={'raw':![],'where':{'id':_0x5775ca[_0x5bec('0x50')]['id']}},_0x34ee24={};_0x34ee24[_0x5bec('0x3f')]=_[_0x5bec('0x3c')](db[_0x5bec('0x36')]['rawAttributes']);_0x34ee24[_0x5bec('0x3b')]=_['keys'](_0x5775ca[_0x5bec('0x3b')]);_0x34ee24[_0x5bec('0x3d')]=_[_0x5bec('0x3e')](_0x34ee24[_0x5bec('0x3f')],_0x34ee24[_0x5bec('0x3b')]);_0x3e6180[_0x5bec('0x51')]=_[_0x5bec('0x3e')](_0x34ee24[_0x5bec('0x3f')],qs[_0x5bec('0x40')](_0x5775ca[_0x5bec('0x3b')]['fields']));_0x3e6180[_0x5bec('0x51')]=_0x3e6180['attributes']['length']?_0x3e6180[_0x5bec('0x51')]:_0x34ee24['model'];if(_0x5775ca['query'][_0x5bec('0x4a')]){_0x3e6180[_0x5bec('0x4b')]=[{'all':!![]}];}_0x3e6180=_[_0x5bec('0x46')]({},_0x3e6180,_0x5775ca['options']);return db[_0x5bec('0x36')][_0x5bec('0x52')](_0x3e6180)[_0x5bec('0x1c')](handleEntityNotFound(_0x273e09,null))[_0x5bec('0x1c')](respondWithResult(_0x273e09,null))['catch'](handleError(_0x273e09,null));};exports[_0x5bec('0x53')]=function(_0x209da3,_0x9cae50){var _0xc8563a={'where':{'id':_0x209da3[_0x5bec('0x50')]['id']}},_0x2f736c={};_0x2f736c[_0x5bec('0x3f')]=_['keys'](db['Trunk'][_0x5bec('0x37')]);_0xc8563a['attributes']=_[_0x5bec('0x3e')](_0x2f736c[_0x5bec('0x3f')],qs['fields'](_0x209da3[_0x5bec('0x3b')]['fields']));_0xc8563a[_0x5bec('0x51')]=_0xc8563a[_0x5bec('0x51')][_0x5bec('0x41')]?_0xc8563a[_0x5bec('0x51')]:_0x2f736c[_0x5bec('0x3f')];if(_0x209da3[_0x5bec('0x3b')][_0x5bec('0x4a')]){_0xc8563a[_0x5bec('0x4b')]=[{'all':!![]}];}_0xc8563a=_[_0x5bec('0x46')]({},_0xc8563a,_0x209da3[_0x5bec('0x49')]);return db[_0x5bec('0x36')][_0x5bec('0x52')](_0xc8563a)[_0x5bec('0x1c')](handleEntityNotFound(_0x9cae50,null))[_0x5bec('0x1c')](function(_0x51b25d){if(_0x51b25d){var _0x2e33a7=_0x51b25d[_0x5bec('0x54')]({'plain':!![]});_0x2e33a7=qs[_0x5bec('0x55')](_0x2e33a7,['id','createdAt',_0x5bec('0x56')]);_0x209da3[_0x5bec('0x57')]=_[_0x5bec('0x55')](_0x209da3[_0x5bec('0x57')],['id',_0x5bec('0x58'),'updatedAt']);return db[_0x5bec('0x36')][_0x5bec('0x59')](_[_0x5bec('0x46')](_0x2e33a7,_0x209da3[_0x5bec('0x57')]),{'include':_0x209da3['query'][_0x5bec('0x4a')]?[{'all':!![]}]:undefined})['then'](function(_0x2b701f){var _0x38deb0=_0x209da3[_0x5bec('0x5a')][_0x5bec('0x54')]({'plain':!![]});if(!_0x38deb0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x38deb0[_0x5bec('0x5b')]===_0x5bec('0x5a')){var _0x1b3c40=_0x2b701f[_0x5bec('0x54')]({'plain':!![]});var _0xc3e3df=_0x5bec('0x2f');return db[_0x5bec('0x5c')][_0x5bec('0x52')]({'where':{'name':_0xc3e3df,'userProfileId':_0x38deb0[_0x5bec('0x5d')]},'raw':!![]})[_0x5bec('0x1c')](function(_0xfa751f){if(_0xfa751f&&_0xfa751f[_0x5bec('0x5e')]===0x0){return db[_0x5bec('0x30')][_0x5bec('0x59')]({'name':_0x1b3c40[_0x5bec('0x33')],'resourceId':_0x1b3c40['id'],'type':_0xfa751f['name'],'sectionId':_0xfa751f['id']},{})[_0x5bec('0x1c')](function(){return _0x2b701f;});}else{return _0x2b701f;}})[_0x5bec('0x4e')](function(_0x4e899c){logger[_0x5bec('0x22')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4e899c);throw _0x4e899c;});}return _0x2b701f;});}})[_0x5bec('0x1c')](respondWithResult(_0x9cae50,0xc9))[_0x5bec('0x4e')](handleError(_0x9cae50,null));};exports['create']=function(_0x5a2a85,_0xd54be0,_0xcac51d){var _0xb6cf85;return db[_0x5bec('0x36')][_0x5bec('0x59')](_0x5a2a85['body'],{'raw':!![]})[_0x5bec('0x1c')](function(_0x39cb06){_0xb6cf85=_0x39cb06;return db['Trunk'][_0x5bec('0x4c')]({'raw':!![]});})[_0x5bec('0x1c')](function(_0x44a945){var _0x34f31c=fs['readFileSync'](path[_0x5bec('0x5f')](config['root'],_0x5bec('0x60')),_0x5bec('0x61'));var _0x3ede1d=fs[_0x5bec('0x62')](path[_0x5bec('0x5f')](config[_0x5bec('0x63')],_0x5bec('0x64')),_0x5bec('0x61'));var _0x1ee139=ejs[_0x5bec('0x65')](_0x34f31c,{'trunks':_0x44a945||[]});fs[_0x5bec('0x66')]('/etc/asterisk/sip_xcally_trunks.conf',_0x1ee139);if(_0xb6cf85['registry']){var _0x3c305e=ejs[_0x5bec('0x65')](_0x3ede1d,{'trunks':_0x44a945||[]});fs[_0x5bec('0x66')](_0x5bec('0x67'),_0x3c305e);}})[_0x5bec('0x1c')](function(){return respondWithRpcPromise(_0x5bec('0x68'),_0x5bec('0x59'),{'module':'chan_sip.so'});})['then'](function(){var _0xc81e8f=_0x5a2a85[_0x5bec('0x5a')][_0x5bec('0x54')]({'plain':!![]});if(!_0xc81e8f)throw new Error(_0x5bec('0x69'));if(_0xc81e8f[_0x5bec('0x5b')]===_0x5bec('0x5a')){var _0x17cd00=_0xb6cf85[_0x5bec('0x54')]({'plain':!![]});return db[_0x5bec('0x5c')][_0x5bec('0x52')]({'where':{'name':_0x5bec('0x2f'),'userProfileId':_0xc81e8f[_0x5bec('0x5d')]},'raw':!![]})[_0x5bec('0x1c')](function(_0x325044){if(_0x325044&&_0x325044[_0x5bec('0x5e')]===0x0){return db[_0x5bec('0x30')][_0x5bec('0x59')]({'name':_0x17cd00[_0x5bec('0x33')],'resourceId':_0x17cd00['id'],'type':_0x325044[_0x5bec('0x33')],'sectionId':_0x325044['id']},{})[_0x5bec('0x1c')](function(){return _0xb6cf85;});}else{return _0xb6cf85;}})['catch'](function(_0x2e76c0){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2e76c0);throw _0x2e76c0;});}return _0xb6cf85;})[_0x5bec('0x1c')](respondWithResult(_0xd54be0,0xc9))['catch'](handleError(_0xd54be0,null));};exports[_0x5bec('0x6a')]=function(_0x5d6af3,_0x5ca280,_0x2e849b){var _0x1b5ec0;return db['Trunk'][_0x5bec('0x52')]({'where':{'id':_0x5d6af3[_0x5bec('0x50')]['id']}})[_0x5bec('0x1c')](handleEntityNotFound(_0x5ca280,null))[_0x5bec('0x1c')](saveUpdates(_0x5d6af3[_0x5bec('0x57')],null))[_0x5bec('0x1c')](function(_0xb76af2){if(_0xb76af2){_0x1b5ec0=_0xb76af2;return db[_0x5bec('0x36')]['findAll']({'raw':!![]});}})['then'](function(_0x2e8cd3){if(_0x2e8cd3){var _0x122c7f=fs[_0x5bec('0x62')](path[_0x5bec('0x5f')](config['root'],_0x5bec('0x60')),'utf8');var _0x44ceec=fs[_0x5bec('0x62')](path[_0x5bec('0x5f')](config[_0x5bec('0x63')],_0x5bec('0x64')),_0x5bec('0x61'));var _0x38be2d=ejs[_0x5bec('0x65')](_0x122c7f,{'trunks':_0x2e8cd3||[]});fs['writeFileSync'](_0x5bec('0x6b'),_0x38be2d);var _0xe5f9e5=ejs[_0x5bec('0x65')](_0x44ceec,{'trunks':_0x2e8cd3||[]});fs[_0x5bec('0x66')](_0x5bec('0x67'),_0xe5f9e5);return respondWithRpcPromise('Reload',_0x5bec('0x6a'),{'module':_0x5bec('0x6c')});}return null;})['then'](function(_0x195c12){if(_0x195c12){return _0x1b5ec0;}})['then'](respondWithResult(_0x5ca280,null))[_0x5bec('0x4e')](handleError(_0x5ca280,null));};exports[_0x5bec('0x31')]=function(_0x4646a3,_0x313e1c,_0x437c3e){var _0x3d7600;return db[_0x5bec('0x36')][_0x5bec('0x52')]({'where':{'id':_0x4646a3[_0x5bec('0x50')]['id']}})[_0x5bec('0x1c')](handleEntityNotFound(_0x313e1c,null))[_0x5bec('0x1c')](removeEntity(_0x313e1c,null))[_0x5bec('0x1c')](function(){return db[_0x5bec('0x36')][_0x5bec('0x4c')]({'raw':!![]});})[_0x5bec('0x1c')](function(_0x1eaf2f){var _0x317e2a=fs[_0x5bec('0x62')](path['join'](config[_0x5bec('0x63')],'server/files/templates/trunk.ejs'),_0x5bec('0x61'));var _0xfcef92=fs['readFileSync'](path['join'](config[_0x5bec('0x63')],'server/files/templates/registry.ejs'),_0x5bec('0x61'));var _0x4b70df=ejs[_0x5bec('0x65')](_0x317e2a,{'trunks':_0x1eaf2f});var _0x27b40b=ejs['render'](_0xfcef92,{'trunks':_0x1eaf2f});fs[_0x5bec('0x66')]('/etc/asterisk/sip_xcally_trunks.conf',_0x4b70df);fs[_0x5bec('0x66')]('/etc/asterisk/sip_xcally_registers.conf',_0x27b40b);return respondWithRpcPromise(_0x5bec('0x68'),_0x5bec('0x31'),{'module':'chan_sip.so'});})[_0x5bec('0x4e')](handleError(_0x313e1c,null));};
\ No newline at end of file
index 972416e..4baea5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48e2=['lodash','../../config/logger','moment','rimraf','./trunk.attributes','define','Trunk','tools_trunks'];(function(_0x51b661,_0x566ef8){var _0x5d1971=function(_0x5cc6b8){while(--_0x5cc6b8){_0x51b661['push'](_0x51b661['shift']());}};_0x5d1971(++_0x566ef8);}(_0x48e2,0xe8));var _0x248e=function(_0x122096,_0x60c295){_0x122096=_0x122096-0x0;var _0x3d1966=_0x48e2[_0x122096];return _0x3d1966;};'use strict';var _=require(_0x248e('0x0'));var util=require('util');var logger=require(_0x248e('0x1'))('api');var moment=require(_0x248e('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x248e('0x3'));var config=require('../../config/environment');var attributes=require(_0x248e('0x4'));module['exports']=function(_0x195c43,_0x5e4a09){return _0x195c43[_0x248e('0x5')](_0x248e('0x6'),attributes,{'tableName':_0x248e('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd548=['rimraf','../../config/environment','tools_trunks','util','../../config/logger','api','bluebird','path'];(function(_0x2e2110,_0x592465){var _0x57db5f=function(_0x452d1b){while(--_0x452d1b){_0x2e2110['push'](_0x2e2110['shift']());}};_0x57db5f(++_0x592465);}(_0xd548,0x1a3));var _0x8d54=function(_0x15339a,_0x480de2){_0x15339a=_0x15339a-0x0;var _0x3e84bf=_0xd548[_0x15339a];return _0x3e84bf;};'use strict';var _=require('lodash');var util=require(_0x8d54('0x0'));var logger=require(_0x8d54('0x1'))(_0x8d54('0x2'));var moment=require('moment');var BPromise=require(_0x8d54('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8d54('0x4'));var rimraf=require(_0x8d54('0x5'));var config=require(_0x8d54('0x6'));var attributes=require('./trunk.attributes');module['exports']=function(_0x4841a9,_0x28fa30){return _0x4841a9['define']('Trunk',attributes,{'tableName':_0x8d54('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2573305..5d8eb34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c61=['error','Trunk,\x20%s,\x20%s','message','info','request\x20sent','result','catch','GetTrunk','Trunk','findAll','options','raw','where','limit','include','map','model','attributes','ShowTrunk','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','request','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x24e3d2,_0x1981ff){var _0x5d5c1c=function(_0xcf4910){while(--_0xcf4910){_0x24e3d2['push'](_0x24e3d2['shift']());}};_0x5d5c1c(++_0x1981ff);}(_0x9c61,0x145));var _0x19c6=function(_0x5a2291,_0x3ddda7){_0x5a2291=_0x5a2291-0x0;var _0x10e3f5=_0x9c61[_0x5a2291];return _0x10e3f5;};'use strict';var _=require(_0x19c6('0x0'));var util=require(_0x19c6('0x1'));var moment=require(_0x19c6('0x2'));var BPromise=require(_0x19c6('0x3'));var rs=require(_0x19c6('0x4'));var fs=require('fs');var Redis=require(_0x19c6('0x5'));var db=require(_0x19c6('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x19c6('0x7'))(_0x19c6('0x8'));var config=require('../../config/environment');var jayson=require(_0x19c6('0x9'));var client=jayson[_0x19c6('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x35f18a,_0x2d03a3,_0x12f6f2){return new BPromise(function(_0x38bca4,_0x5d5c19){return client[_0x19c6('0xb')](_0x35f18a,_0x12f6f2)['then'](function(_0x4fb5ec){logger['info']('Trunk,\x20%s,\x20%s',_0x2d03a3,'request\x20sent');logger[_0x19c6('0xc')](_0x19c6('0xd'),_0x2d03a3,'request\x20sent',JSON[_0x19c6('0xe')](_0x4fb5ec));if(_0x4fb5ec[_0x19c6('0xf')]){if(_0x4fb5ec['error']['code']===0x1f4){logger[_0x19c6('0xf')](_0x19c6('0x10'),_0x2d03a3,_0x4fb5ec[_0x19c6('0xf')][_0x19c6('0x11')]);return _0x5d5c19(_0x4fb5ec[_0x19c6('0xf')][_0x19c6('0x11')]);}logger[_0x19c6('0xf')](_0x19c6('0x10'),_0x2d03a3,_0x4fb5ec[_0x19c6('0xf')][_0x19c6('0x11')]);return _0x38bca4(_0x4fb5ec[_0x19c6('0xf')]['message']);}else{logger[_0x19c6('0x12')](_0x19c6('0x10'),_0x2d03a3,_0x19c6('0x13'));_0x38bca4(_0x4fb5ec[_0x19c6('0x14')][_0x19c6('0x11')]);}})[_0x19c6('0x15')](function(_0x2c2700){logger['error'](_0x19c6('0x10'),_0x2d03a3,_0x2c2700);_0x5d5c19(_0x2c2700);});});}exports[_0x19c6('0x16')]=function(_0x4a9545){var _0x3c1077=this;return new Promise(function(_0x1ae27f,_0xc27f4e){return db[_0x19c6('0x17')][_0x19c6('0x18')]({'raw':_0x4a9545[_0x19c6('0x19')]?_0x4a9545[_0x19c6('0x19')][_0x19c6('0x1a')]===undefined?!![]:![]:!![],'where':_0x4a9545['options']?_0x4a9545[_0x19c6('0x19')][_0x19c6('0x1b')]||null:null,'attributes':_0x4a9545[_0x19c6('0x19')]?_0x4a9545[_0x19c6('0x19')]['attributes']||null:null,'limit':_0x4a9545['options']?_0x4a9545[_0x19c6('0x19')][_0x19c6('0x1c')]||null:null,'include':_0x4a9545[_0x19c6('0x19')]?_0x4a9545[_0x19c6('0x19')][_0x19c6('0x1d')]?_[_0x19c6('0x1e')](_0x4a9545[_0x19c6('0x19')][_0x19c6('0x1d')],function(_0x27ed88){return{'model':db[_0x27ed88[_0x19c6('0x1f')]],'as':_0x27ed88['as'],'attributes':_0x27ed88[_0x19c6('0x20')],'include':_0x27ed88[_0x19c6('0x1d')]?_[_0x19c6('0x1e')](_0x27ed88[_0x19c6('0x1d')],function(_0xce5df6){return{'model':db[_0xce5df6[_0x19c6('0x1f')]],'as':_0xce5df6['as'],'attributes':_0xce5df6[_0x19c6('0x20')],'include':_0xce5df6[_0x19c6('0x1d')]?_['map'](_0xce5df6[_0x19c6('0x1d')],function(_0x166229){return{'model':db[_0x166229[_0x19c6('0x1f')]],'as':_0x166229['as'],'attributes':_0x166229['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x5eff37){logger['info']('GetTrunk',_0x4a9545);logger[_0x19c6('0xc')](_0x19c6('0x16'),_0x4a9545,JSON[_0x19c6('0xe')](_0x5eff37));_0x1ae27f(_0x5eff37);})['catch'](function(_0x24a9fa){logger['error'](_0x19c6('0x16'),_0x24a9fa[_0x19c6('0x11')],_0x4a9545);_0xc27f4e(_0x3c1077['error'](0x1f4,_0x24a9fa[_0x19c6('0x11')]));});});};exports['ShowTrunk']=function(_0x17e1db){var _0x40c5a0=this;return new Promise(function(_0x5ee582,_0x2e7c46){return db[_0x19c6('0x17')]['find']({'raw':_0x17e1db['options']?_0x17e1db[_0x19c6('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x17e1db[_0x19c6('0x19')]?_0x17e1db[_0x19c6('0x19')][_0x19c6('0x1b')]||null:null,'attributes':_0x17e1db[_0x19c6('0x19')]?_0x17e1db[_0x19c6('0x19')][_0x19c6('0x20')]||null:null,'include':_0x17e1db[_0x19c6('0x19')]?_0x17e1db[_0x19c6('0x19')][_0x19c6('0x1d')]?_['map'](_0x17e1db[_0x19c6('0x19')]['include'],function(_0x3e282d){return{'model':db[_0x3e282d[_0x19c6('0x1f')]],'as':_0x3e282d['as'],'attributes':_0x3e282d['attributes'],'include':_0x3e282d['include']?_[_0x19c6('0x1e')](_0x3e282d[_0x19c6('0x1d')],function(_0x4d952c){return{'model':db[_0x4d952c[_0x19c6('0x1f')]],'as':_0x4d952c['as'],'attributes':_0x4d952c[_0x19c6('0x20')],'include':_0x4d952c[_0x19c6('0x1d')]?_[_0x19c6('0x1e')](_0x4d952c[_0x19c6('0x1d')],function(_0x1f0ef8){return{'model':db[_0x1f0ef8[_0x19c6('0x1f')]],'as':_0x1f0ef8['as'],'attributes':_0x1f0ef8[_0x19c6('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1f44b8){logger[_0x19c6('0x12')](_0x19c6('0x21'),_0x17e1db);logger[_0x19c6('0xc')](_0x19c6('0x21'),_0x17e1db,JSON['stringify'](_0x1f44b8));_0x5ee582(_0x1f44b8);})['catch'](function(_0x27679d){logger[_0x19c6('0xf')](_0x19c6('0x21'),_0x27679d[_0x19c6('0x11')],_0x17e1db);_0x2e7c46(_0x40c5a0[_0x19c6('0xf')](0x1f4,_0x27679d['message']));});});};
\ No newline at end of file
+var _0xf874=['findAll','options','where','attributes','include','model','map','then','GetTrunk','catch','ShowTrunk','find','util','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','info','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','Trunk,\x20%s,\x20%s','message','result','Trunk'];(function(_0xc84b99,_0x53543a){var _0x23677f=function(_0x39c16f){while(--_0x39c16f){_0xc84b99['push'](_0xc84b99['shift']());}};_0x23677f(++_0x53543a);}(_0xf874,0x135));var _0x4f87=function(_0x33727f,_0x51756c){_0x33727f=_0x33727f-0x0;var _0x554715=_0xf874[_0x33727f];return _0x554715;};'use strict';var _=require('lodash');var util=require(_0x4f87('0x0'));var moment=require('moment');var BPromise=require(_0x4f87('0x1'));var rs=require(_0x4f87('0x2'));var fs=require('fs');var Redis=require(_0x4f87('0x3'));var db=require(_0x4f87('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x4f87('0x5'));var config=require(_0x4f87('0x6'));var jayson=require(_0x4f87('0x7'));var client=jayson[_0x4f87('0x8')][_0x4f87('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x178536,_0x241730,_0x496c28){return new BPromise(function(_0x448ec0,_0x5d5caf){return client['request'](_0x178536,_0x496c28)['then'](function(_0x406789){logger[_0x4f87('0xa')]('Trunk,\x20%s,\x20%s',_0x241730,_0x4f87('0xb'));logger[_0x4f87('0xc')](_0x4f87('0xd'),_0x241730,'request\x20sent',JSON[_0x4f87('0xe')](_0x406789));if(_0x406789[_0x4f87('0xf')]){if(_0x406789['error'][_0x4f87('0x10')]===0x1f4){logger[_0x4f87('0xf')](_0x4f87('0x11'),_0x241730,_0x406789[_0x4f87('0xf')][_0x4f87('0x12')]);return _0x5d5caf(_0x406789[_0x4f87('0xf')][_0x4f87('0x12')]);}logger[_0x4f87('0xf')](_0x4f87('0x11'),_0x241730,_0x406789['error'][_0x4f87('0x12')]);return _0x448ec0(_0x406789[_0x4f87('0xf')][_0x4f87('0x12')]);}else{logger[_0x4f87('0xa')](_0x4f87('0x11'),_0x241730,_0x4f87('0xb'));_0x448ec0(_0x406789[_0x4f87('0x13')][_0x4f87('0x12')]);}})['catch'](function(_0x579a4e){logger[_0x4f87('0xf')](_0x4f87('0x11'),_0x241730,_0x579a4e);_0x5d5caf(_0x579a4e);});});}exports['GetTrunk']=function(_0x3d9f32){var _0x4ead3c=this;return new Promise(function(_0x577071,_0x4d4ab5){return db[_0x4f87('0x14')][_0x4f87('0x15')]({'raw':_0x3d9f32[_0x4f87('0x16')]?_0x3d9f32['options']['raw']===undefined?!![]:![]:!![],'where':_0x3d9f32['options']?_0x3d9f32[_0x4f87('0x16')][_0x4f87('0x17')]||null:null,'attributes':_0x3d9f32[_0x4f87('0x16')]?_0x3d9f32[_0x4f87('0x16')][_0x4f87('0x18')]||null:null,'limit':_0x3d9f32[_0x4f87('0x16')]?_0x3d9f32['options']['limit']||null:null,'include':_0x3d9f32[_0x4f87('0x16')]?_0x3d9f32['options'][_0x4f87('0x19')]?_['map'](_0x3d9f32[_0x4f87('0x16')][_0x4f87('0x19')],function(_0x5ed3b2){return{'model':db[_0x5ed3b2[_0x4f87('0x1a')]],'as':_0x5ed3b2['as'],'attributes':_0x5ed3b2['attributes'],'include':_0x5ed3b2[_0x4f87('0x19')]?_[_0x4f87('0x1b')](_0x5ed3b2['include'],function(_0x30b07d){return{'model':db[_0x30b07d[_0x4f87('0x1a')]],'as':_0x30b07d['as'],'attributes':_0x30b07d['attributes'],'include':_0x30b07d[_0x4f87('0x19')]?_[_0x4f87('0x1b')](_0x30b07d[_0x4f87('0x19')],function(_0x550277){return{'model':db[_0x550277[_0x4f87('0x1a')]],'as':_0x550277['as'],'attributes':_0x550277[_0x4f87('0x18')]};}):[]};}):[]};}):[]:[]})[_0x4f87('0x1c')](function(_0x416b0b){logger[_0x4f87('0xa')](_0x4f87('0x1d'),_0x3d9f32);logger['debug']('GetTrunk',_0x3d9f32,JSON[_0x4f87('0xe')](_0x416b0b));_0x577071(_0x416b0b);})[_0x4f87('0x1e')](function(_0x63ccd5){logger[_0x4f87('0xf')](_0x4f87('0x1d'),_0x63ccd5['message'],_0x3d9f32);_0x4d4ab5(_0x4ead3c[_0x4f87('0xf')](0x1f4,_0x63ccd5[_0x4f87('0x12')]));});});};exports[_0x4f87('0x1f')]=function(_0x34e9fd){var _0x4c58fd=this;return new Promise(function(_0x41e2da,_0x27498d){return db[_0x4f87('0x14')][_0x4f87('0x20')]({'raw':_0x34e9fd['options']?_0x34e9fd[_0x4f87('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x34e9fd[_0x4f87('0x16')]?_0x34e9fd[_0x4f87('0x16')][_0x4f87('0x17')]||null:null,'attributes':_0x34e9fd['options']?_0x34e9fd['options'][_0x4f87('0x18')]||null:null,'include':_0x34e9fd[_0x4f87('0x16')]?_0x34e9fd[_0x4f87('0x16')][_0x4f87('0x19')]?_[_0x4f87('0x1b')](_0x34e9fd[_0x4f87('0x16')][_0x4f87('0x19')],function(_0x261351){return{'model':db[_0x261351[_0x4f87('0x1a')]],'as':_0x261351['as'],'attributes':_0x261351[_0x4f87('0x18')],'include':_0x261351[_0x4f87('0x19')]?_['map'](_0x261351[_0x4f87('0x19')],function(_0x4025aa){return{'model':db[_0x4025aa[_0x4f87('0x1a')]],'as':_0x4025aa['as'],'attributes':_0x4025aa[_0x4f87('0x18')],'include':_0x4025aa[_0x4f87('0x19')]?_[_0x4f87('0x1b')](_0x4025aa[_0x4f87('0x19')],function(_0x49db8b){return{'model':db[_0x49db8b[_0x4f87('0x1a')]],'as':_0x49db8b['as'],'attributes':_0x49db8b[_0x4f87('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x559041){logger[_0x4f87('0xa')]('ShowTrunk',_0x34e9fd);logger[_0x4f87('0xc')](_0x4f87('0x1f'),_0x34e9fd,JSON[_0x4f87('0xe')](_0x559041));_0x41e2da(_0x559041);})['catch'](function(_0x79c916){logger[_0x4f87('0xf')](_0x4f87('0x1f'),_0x79c916['message'],_0x34e9fd);_0x27498d(_0x4c58fd['error'](0x1f4,_0x79c916[_0x4f87('0x12')]));});});};
\ No newline at end of file
index dc750a8..620db47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dc1=['show','/:id/avatar','getAvatar','getOpenTabs','/:id/contacts','getContacts','/:id/queues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','getGroups','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','/:id/lists','getLists','getAgents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getMailAccounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','getWhatsappAccounts','/:id/square_projects','getSquareProjects','getScheduledCalls','/:id/api_key','post','addContacts','create','/create_many','bulkCreate','addQueues','diskStorage','root','format','%s-%s','now','originalname','file','addAvatar','/:id/login','login','logout','/:id/pause','pause','unpause','/:id/chat_interactions','/:id/mail_interactions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addSmsAccounts','addChatWebsites','/:id/whatsapp_accounts','addWhatsappAccounts','addSquareProjects','createApiKey','put','update','changePassword','delete','removeQueues','removeTeams','destroy','removeChatInteractions','removeMailInteractions','removeSmsInteractions','removeFaxAccounts','removeMailAccounts','/:id/openchannel_accounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeSquareProjects','removeApiKey','exports','multer','util','path','express','fs-extra','../../components/interaction/service','../../config/environment','./user.controller','get','isAuthenticated','/describe','describe','whoami','/presence','getPresence','/:id'];(function(_0x325618,_0x48a8d2){var _0x19302f=function(_0x118ff4){while(--_0x118ff4){_0x325618['push'](_0x325618['shift']());}};_0x19302f(++_0x48a8d2);}(_0x7dc1,0x65));var _0x17dc=function(_0x1793ef,_0x5cac36){_0x1793ef=_0x1793ef-0x0;var _0x540ef5=_0x7dc1[_0x1793ef];return _0x540ef5;};'use strict';var multer=require(_0x17dc('0x0'));var util=require(_0x17dc('0x1'));var path=require(_0x17dc('0x2'));var timeout=require('connect-timeout');var express=require(_0x17dc('0x3'));var router=express['Router']();var fs_extra=require(_0x17dc('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x17dc('0x5'));var config=require(_0x17dc('0x6'));var controller=require(_0x17dc('0x7'));router[_0x17dc('0x8')]('/',auth[_0x17dc('0x9')](),controller['index']);router[_0x17dc('0x8')](_0x17dc('0xa'),auth['isAuthenticated'](),controller[_0x17dc('0xb')]);router[_0x17dc('0x8')]('/whoami',auth[_0x17dc('0x9')](),controller[_0x17dc('0xc')]);router[_0x17dc('0x8')](_0x17dc('0xd'),auth[_0x17dc('0x9')](),controller[_0x17dc('0xe')]);router[_0x17dc('0x8')](_0x17dc('0xf'),auth['isAuthenticated'](),controller[_0x17dc('0x10')]);router['get'](_0x17dc('0x11'),controller[_0x17dc('0x12')]);router['get']('/:id/open_tabs',auth[_0x17dc('0x9')](),controller[_0x17dc('0x13')]);router['get'](_0x17dc('0x14'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x15')]);router[_0x17dc('0x8')](_0x17dc('0x16'),auth[_0x17dc('0x9')](),controller['getQueues']);router[_0x17dc('0x8')](_0x17dc('0x17'),auth['isAuthenticated'](),controller[_0x17dc('0x18')]);router[_0x17dc('0x8')](_0x17dc('0x19'),auth['isAuthenticated'](),controller[_0x17dc('0x1a')]);router['get']('/:id/recordings',auth[_0x17dc('0x9')](),controller[_0x17dc('0x1b')]);router[_0x17dc('0x8')](_0x17dc('0x1c'),auth['isAuthenticated'](),controller[_0x17dc('0x1d')]);router[_0x17dc('0x8')](_0x17dc('0x1e'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x1f')]);router[_0x17dc('0x8')](_0x17dc('0x20'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x21')]);router[_0x17dc('0x8')](_0x17dc('0x22'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x23')]);router[_0x17dc('0x8')]('/:id/sms/interactions',auth['isAuthenticated'](),controller[_0x17dc('0x24')]);router['get'](_0x17dc('0x25'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x26')]);router[_0x17dc('0x8')](_0x17dc('0x27'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x28')]);router[_0x17dc('0x8')](_0x17dc('0x29'),auth['isAuthenticated'](),controller['getTeams']);router[_0x17dc('0x8')](_0x17dc('0x2a'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x2b')]);router['get']('/:id/agents',auth[_0x17dc('0x9')](),controller[_0x17dc('0x2c')]);router[_0x17dc('0x8')](_0x17dc('0x2d'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x2e')]);router['get'](_0x17dc('0x2f'),auth['isAuthenticated'](),controller[_0x17dc('0x30')]);router[_0x17dc('0x8')](_0x17dc('0x31'),auth['isAuthenticated'](),controller[_0x17dc('0x32')]);router[_0x17dc('0x8')]('/:id/openchannel_accounts',auth['isAuthenticated'](),controller[_0x17dc('0x33')]);router[_0x17dc('0x8')](_0x17dc('0x34'),auth['isAuthenticated'](),controller[_0x17dc('0x35')]);router[_0x17dc('0x8')](_0x17dc('0x36'),auth['isAuthenticated'](),controller[_0x17dc('0x37')]);router['get']('/:id/whatsapp_accounts',auth['isAuthenticated'](),controller[_0x17dc('0x38')]);router['get'](_0x17dc('0x39'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x3a')]);router[_0x17dc('0x8')]('/:id/scheduled_calls',auth[_0x17dc('0x9')](),controller[_0x17dc('0x3b')]);router[_0x17dc('0x8')](_0x17dc('0x3c'),auth[_0x17dc('0x9')](),controller['getApiKey']);router[_0x17dc('0x3d')](_0x17dc('0x14'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x3e')]);router[_0x17dc('0x3d')]('/',auth[_0x17dc('0x9')](),controller[_0x17dc('0x3f')]);router[_0x17dc('0x3d')](_0x17dc('0x40'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x41')]);router[_0x17dc('0x3d')](_0x17dc('0x16'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x42')]);var upload=multer({'storage':multer[_0x17dc('0x43')]({'destination':function(_0x5771b3,_0x23c808,_0x2d3712){_0x2d3712(null,path['join'](config[_0x17dc('0x44')],'server/files/images/'));},'filename':function(_0x76eb8d,_0x1f2aa4,_0x1eb3b4){_0x1eb3b4(null,util[_0x17dc('0x45')](_0x17dc('0x46'),Date[_0x17dc('0x47')](),_0x1f2aa4[_0x17dc('0x48')]));}})});router[_0x17dc('0x3d')](_0x17dc('0x11'),upload['single'](_0x17dc('0x49')),controller[_0x17dc('0x4a')]);router[_0x17dc('0x3d')](_0x17dc('0x4b'),auth['isAuthenticated'](),controller[_0x17dc('0x4c')]);router[_0x17dc('0x3d')]('/:id/logout',auth[_0x17dc('0x9')](),controller[_0x17dc('0x4d')]);router[_0x17dc('0x3d')](_0x17dc('0x4e'),auth['isAuthenticated'](),controller[_0x17dc('0x4f')]);router['post']('/:id/unpause',auth[_0x17dc('0x9')](),controller[_0x17dc('0x50')]);router[_0x17dc('0x3d')](_0x17dc('0x29'),auth[_0x17dc('0x9')](),controller['addTeams']);router[_0x17dc('0x3d')](_0x17dc('0x51'),auth[_0x17dc('0x9')](),controller['addChatInteractions']);router[_0x17dc('0x3d')](_0x17dc('0x52'),auth[_0x17dc('0x9')](),controller['addMailInteractions']);router[_0x17dc('0x3d')](_0x17dc('0x53'),auth['isAuthenticated'](),controller[_0x17dc('0x54')]);router[_0x17dc('0x3d')](_0x17dc('0x55'),auth[_0x17dc('0x9')](),controller['addSmsInteractions']);router['post'](_0x17dc('0x56'),auth['isAuthenticated'](),controller[_0x17dc('0x57')]);router['post'](_0x17dc('0x58'),auth['isAuthenticated'](),controller[_0x17dc('0x59')]);router[_0x17dc('0x3d')](_0x17dc('0x2f'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x5a')]);router[_0x17dc('0x3d')](_0x17dc('0x31'),auth['isAuthenticated'](),controller['addMailAccounts']);router['post']('/:id/openchannel_accounts',auth[_0x17dc('0x9')](),controller['addOpenchannelAccounts']);router[_0x17dc('0x3d')](_0x17dc('0x34'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x5b')]);router[_0x17dc('0x3d')]('/:id/chat_websites',auth['isAuthenticated'](),controller[_0x17dc('0x5c')]);router[_0x17dc('0x3d')](_0x17dc('0x5d'),auth['isAuthenticated'](),controller[_0x17dc('0x5e')]);router[_0x17dc('0x3d')](_0x17dc('0x39'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x5f')]);router['post'](_0x17dc('0x3c'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x60')]);router[_0x17dc('0x61')](_0x17dc('0xf'),auth['isAuthenticated'](),controller[_0x17dc('0x62')]);router[_0x17dc('0x61')]('/:id/password',auth[_0x17dc('0x9')](),controller[_0x17dc('0x63')]);router[_0x17dc('0x64')](_0x17dc('0x16'),auth['isAuthenticated'](),controller[_0x17dc('0x65')]);router[_0x17dc('0x64')](_0x17dc('0x29'),auth['isAuthenticated'](),controller[_0x17dc('0x66')]);router[_0x17dc('0x64')]('/:id',auth[_0x17dc('0x9')](),controller[_0x17dc('0x67')]);router[_0x17dc('0x64')](_0x17dc('0x51'),auth['isAuthenticated'](),controller[_0x17dc('0x68')]);router['delete'](_0x17dc('0x52'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x69')]);router[_0x17dc('0x64')](_0x17dc('0x53'),auth[_0x17dc('0x9')](),controller['removeFaxInteractions']);router[_0x17dc('0x64')]('/:id/sms_interactions',auth[_0x17dc('0x9')](),controller[_0x17dc('0x6a')]);router[_0x17dc('0x64')](_0x17dc('0x56'),auth['isAuthenticated'](),controller['removeOpenchannelInteractions']);router['delete'](_0x17dc('0x58'),auth[_0x17dc('0x9')](),controller['removeWhatsappInteractions']);router['delete'](_0x17dc('0x2f'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x6b')]);router[_0x17dc('0x64')](_0x17dc('0x31'),auth['isAuthenticated'](),controller[_0x17dc('0x6c')]);router[_0x17dc('0x64')](_0x17dc('0x6d'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x6e')]);router[_0x17dc('0x64')]('/:id/sms_accounts',auth[_0x17dc('0x9')](),controller[_0x17dc('0x6f')]);router[_0x17dc('0x64')]('/:id/chat_websites',auth[_0x17dc('0x9')](),controller[_0x17dc('0x70')]);router[_0x17dc('0x64')]('/:id/whatsapp_accounts',auth[_0x17dc('0x9')](),controller[_0x17dc('0x71')]);router[_0x17dc('0x64')](_0x17dc('0x39'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x72')]);router[_0x17dc('0x64')](_0x17dc('0x3c'),auth[_0x17dc('0x9')](),controller[_0x17dc('0x73')]);module[_0x17dc('0x74')]=router;
\ No newline at end of file
+var _0xe30e=['now','single','file','addAvatar','/:id/login','login','/:id/logout','/:id/pause','pause','unpause','addChatInteractions','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','/:id/whatsapp_interactions','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','addSmsAccounts','addSquareProjects','put','/:id','update','/:id/password','delete','removeQueues','removeTeams','destroy','/:id/chat_interactions','removeChatInteractions','removeMailInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','removeFaxAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeSquareProjects','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','get','isAuthenticated','/describe','/whoami','whoami','/presence','getPresence','show','/:id/avatar','getAvatar','/:id/open_tabs','/:id/contacts','getContacts','/:id/queues','getQueues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','getGroups','/:id/recordings','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','/:id/lists','getLists','/:id/agents','getAgents','getVoicePrefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/square_projects','getSquareProjects','/:id/scheduled_calls','getScheduledCalls','/:id/api_key','post','addContacts','create','/create_many','bulkCreate','join','server/files/images/','format'];(function(_0x50007c,_0x1cbf11){var _0x5c1ec7=function(_0x52d038){while(--_0x52d038){_0x50007c['push'](_0x50007c['shift']());}};_0x5c1ec7(++_0x1cbf11);}(_0xe30e,0x1f4));var _0xee30=function(_0x4fb789,_0x6b8092){_0x4fb789=_0x4fb789-0x0;var _0x49b5e4=_0xe30e[_0x4fb789];return _0x49b5e4;};'use strict';var multer=require(_0xee30('0x0'));var util=require('util');var path=require(_0xee30('0x1'));var timeout=require(_0xee30('0x2'));var express=require('express');var router=express[_0xee30('0x3')]();var fs_extra=require(_0xee30('0x4'));var auth=require(_0xee30('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./user.controller');router[_0xee30('0x6')]('/',auth[_0xee30('0x7')](),controller['index']);router[_0xee30('0x6')](_0xee30('0x8'),auth[_0xee30('0x7')](),controller['describe']);router[_0xee30('0x6')](_0xee30('0x9'),auth[_0xee30('0x7')](),controller[_0xee30('0xa')]);router[_0xee30('0x6')](_0xee30('0xb'),auth[_0xee30('0x7')](),controller[_0xee30('0xc')]);router[_0xee30('0x6')]('/:id',auth[_0xee30('0x7')](),controller[_0xee30('0xd')]);router['get'](_0xee30('0xe'),controller[_0xee30('0xf')]);router[_0xee30('0x6')](_0xee30('0x10'),auth[_0xee30('0x7')](),controller['getOpenTabs']);router[_0xee30('0x6')](_0xee30('0x11'),auth[_0xee30('0x7')](),controller[_0xee30('0x12')]);router[_0xee30('0x6')](_0xee30('0x13'),auth['isAuthenticated'](),controller[_0xee30('0x14')]);router[_0xee30('0x6')](_0xee30('0x15'),auth[_0xee30('0x7')](),controller[_0xee30('0x16')]);router[_0xee30('0x6')](_0xee30('0x17'),auth[_0xee30('0x7')](),controller[_0xee30('0x18')]);router[_0xee30('0x6')](_0xee30('0x19'),auth[_0xee30('0x7')](),controller[_0xee30('0x1a')]);router[_0xee30('0x6')](_0xee30('0x1b'),auth[_0xee30('0x7')](),controller[_0xee30('0x1c')]);router['get'](_0xee30('0x1d'),auth[_0xee30('0x7')](),controller[_0xee30('0x1e')]);router['get'](_0xee30('0x1f'),auth[_0xee30('0x7')](),controller['getOpenchannelInteractions']);router[_0xee30('0x6')](_0xee30('0x20'),auth['isAuthenticated'](),controller[_0xee30('0x21')]);router[_0xee30('0x6')](_0xee30('0x22'),auth[_0xee30('0x7')](),controller[_0xee30('0x23')]);router['get'](_0xee30('0x24'),auth[_0xee30('0x7')](),controller[_0xee30('0x25')]);router['get'](_0xee30('0x26'),auth[_0xee30('0x7')](),controller[_0xee30('0x27')]);router['get'](_0xee30('0x28'),auth['isAuthenticated'](),controller['getTeams']);router[_0xee30('0x6')](_0xee30('0x29'),auth[_0xee30('0x7')](),controller[_0xee30('0x2a')]);router['get'](_0xee30('0x2b'),auth[_0xee30('0x7')](),controller[_0xee30('0x2c')]);router[_0xee30('0x6')]('/:id/prefixes',auth['isAuthenticated'](),controller[_0xee30('0x2d')]);router[_0xee30('0x6')](_0xee30('0x2e'),auth['isAuthenticated'](),controller[_0xee30('0x2f')]);router[_0xee30('0x6')](_0xee30('0x30'),auth[_0xee30('0x7')](),controller['getMailAccounts']);router[_0xee30('0x6')](_0xee30('0x31'),auth[_0xee30('0x7')](),controller[_0xee30('0x32')]);router[_0xee30('0x6')](_0xee30('0x33'),auth[_0xee30('0x7')](),controller[_0xee30('0x34')]);router[_0xee30('0x6')](_0xee30('0x35'),auth[_0xee30('0x7')](),controller[_0xee30('0x36')]);router[_0xee30('0x6')](_0xee30('0x37'),auth[_0xee30('0x7')](),controller[_0xee30('0x38')]);router['get'](_0xee30('0x39'),auth[_0xee30('0x7')](),controller[_0xee30('0x3a')]);router['get'](_0xee30('0x3b'),auth[_0xee30('0x7')](),controller[_0xee30('0x3c')]);router[_0xee30('0x6')](_0xee30('0x3d'),auth[_0xee30('0x7')](),controller['getApiKey']);router[_0xee30('0x3e')](_0xee30('0x11'),auth[_0xee30('0x7')](),controller[_0xee30('0x3f')]);router[_0xee30('0x3e')]('/',auth[_0xee30('0x7')](),controller[_0xee30('0x40')]);router[_0xee30('0x3e')](_0xee30('0x41'),auth[_0xee30('0x7')](),controller[_0xee30('0x42')]);router[_0xee30('0x3e')](_0xee30('0x13'),auth[_0xee30('0x7')](),controller['addQueues']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x4dfab1,_0x55f3af,_0x465997){_0x465997(null,path[_0xee30('0x43')](config['root'],_0xee30('0x44')));},'filename':function(_0x2d8019,_0x59649c,_0x53a19c){_0x53a19c(null,util[_0xee30('0x45')]('%s-%s',Date[_0xee30('0x46')](),_0x59649c['originalname']));}})});router[_0xee30('0x3e')](_0xee30('0xe'),upload[_0xee30('0x47')](_0xee30('0x48')),controller[_0xee30('0x49')]);router[_0xee30('0x3e')](_0xee30('0x4a'),auth[_0xee30('0x7')](),controller[_0xee30('0x4b')]);router[_0xee30('0x3e')](_0xee30('0x4c'),auth[_0xee30('0x7')](),controller['logout']);router[_0xee30('0x3e')](_0xee30('0x4d'),auth[_0xee30('0x7')](),controller[_0xee30('0x4e')]);router['post']('/:id/unpause',auth[_0xee30('0x7')](),controller[_0xee30('0x4f')]);router[_0xee30('0x3e')](_0xee30('0x28'),auth['isAuthenticated'](),controller['addTeams']);router[_0xee30('0x3e')]('/:id/chat_interactions',auth[_0xee30('0x7')](),controller[_0xee30('0x50')]);router[_0xee30('0x3e')](_0xee30('0x51'),auth[_0xee30('0x7')](),controller[_0xee30('0x52')]);router[_0xee30('0x3e')](_0xee30('0x53'),auth[_0xee30('0x7')](),controller[_0xee30('0x54')]);router[_0xee30('0x3e')](_0xee30('0x55'),auth['isAuthenticated'](),controller[_0xee30('0x56')]);router['post'](_0xee30('0x57'),auth[_0xee30('0x7')](),controller['addOpenchannelInteractions']);router[_0xee30('0x3e')](_0xee30('0x58'),auth['isAuthenticated'](),controller['addWhatsappInteractions']);router[_0xee30('0x3e')](_0xee30('0x2e'),auth[_0xee30('0x7')](),controller[_0xee30('0x59')]);router[_0xee30('0x3e')](_0xee30('0x30'),auth['isAuthenticated'](),controller[_0xee30('0x5a')]);router[_0xee30('0x3e')]('/:id/openchannel_accounts',auth[_0xee30('0x7')](),controller[_0xee30('0x5b')]);router[_0xee30('0x3e')](_0xee30('0x33'),auth[_0xee30('0x7')](),controller[_0xee30('0x5c')]);router[_0xee30('0x3e')](_0xee30('0x35'),auth[_0xee30('0x7')](),controller['addChatWebsites']);router[_0xee30('0x3e')]('/:id/whatsapp_accounts',auth[_0xee30('0x7')](),controller['addWhatsappAccounts']);router[_0xee30('0x3e')](_0xee30('0x39'),auth[_0xee30('0x7')](),controller[_0xee30('0x5d')]);router[_0xee30('0x3e')](_0xee30('0x3d'),auth[_0xee30('0x7')](),controller['createApiKey']);router[_0xee30('0x5e')](_0xee30('0x5f'),auth[_0xee30('0x7')](),controller[_0xee30('0x60')]);router['put'](_0xee30('0x61'),auth['isAuthenticated'](),controller['changePassword']);router[_0xee30('0x62')](_0xee30('0x13'),auth[_0xee30('0x7')](),controller[_0xee30('0x63')]);router[_0xee30('0x62')](_0xee30('0x28'),auth[_0xee30('0x7')](),controller[_0xee30('0x64')]);router[_0xee30('0x62')]('/:id',auth[_0xee30('0x7')](),controller[_0xee30('0x65')]);router['delete'](_0xee30('0x66'),auth['isAuthenticated'](),controller[_0xee30('0x67')]);router['delete'](_0xee30('0x51'),auth[_0xee30('0x7')](),controller[_0xee30('0x68')]);router[_0xee30('0x62')]('/:id/fax_interactions',auth[_0xee30('0x7')](),controller['removeFaxInteractions']);router[_0xee30('0x62')](_0xee30('0x55'),auth[_0xee30('0x7')](),controller[_0xee30('0x69')]);router[_0xee30('0x62')]('/:id/openchannel_interactions',auth[_0xee30('0x7')](),controller[_0xee30('0x6a')]);router[_0xee30('0x62')](_0xee30('0x58'),auth[_0xee30('0x7')](),controller[_0xee30('0x6b')]);router[_0xee30('0x62')](_0xee30('0x2e'),auth[_0xee30('0x7')](),controller[_0xee30('0x6c')]);router[_0xee30('0x62')](_0xee30('0x30'),auth[_0xee30('0x7')](),controller['removeMailAccounts']);router[_0xee30('0x62')]('/:id/openchannel_accounts',auth[_0xee30('0x7')](),controller[_0xee30('0x6d')]);router['delete']('/:id/sms_accounts',auth[_0xee30('0x7')](),controller[_0xee30('0x6e')]);router['delete'](_0xee30('0x35'),auth[_0xee30('0x7')](),controller[_0xee30('0x6f')]);router[_0xee30('0x62')](_0xee30('0x37'),auth[_0xee30('0x7')](),controller[_0xee30('0x70')]);router[_0xee30('0x62')](_0xee30('0x39'),auth['isAuthenticated'](),controller[_0xee30('0x71')]);router[_0xee30('0x62')](_0xee30('0x3d'),auth[_0xee30('0x7')](),controller['removeApiKey']);module['exports']=router;
\ No newline at end of file
index 9f74917..db23365 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6808=['always','refuse','uas','fingerprint','certificate','active','passive','actpass','nonat','update','showWebBar','get','wss','encryption','avpf','force_avp','dtlsenable','dtlsverify','dtlssetup','dtlsprivatekey','rtcp_mux','dtlscertfile','permissions','map','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blocked','blockedAt','loginAttempts','UNSIGNED','sequelize','moment','util','lodash','exports','STRING','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','fullname','format','\x22%s\x22\x20<%s>','internal','email','toLowerCase','ENUM','admin','user','local','accountcode','getDataValue','BOOLEAN','DATE','INTEGER','friend','peer','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','join','transport','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','inband','yes','outgoing','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','insecure','never','\x22\x22\x20<>'];(function(_0x5e7baf,_0x11000c){var _0x9b1443=function(_0x199626){while(--_0x199626){_0x5e7baf['push'](_0x5e7baf['shift']());}};_0x9b1443(++_0x11000c);}(_0x6808,0xd1));var _0x8680=function(_0x4ade17,_0x1bff9b){_0x4ade17=_0x4ade17-0x0;var _0x3e4bb9=_0x6808[_0x4ade17];return _0x3e4bb9;};'use strict';var Sequelize=require(_0x8680('0x0'));var moment=require(_0x8680('0x1'));var util=require(_0x8680('0x2'));var _=require(_0x8680('0x3'));module[_0x8680('0x4')]={'name':{'type':Sequelize[_0x8680('0x5')],'allowNull':![],'unique':_0x8680('0x6'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x37c702){this['setDataValue'](_0x8680('0x6'),_0x37c702);this[_0x8680('0x7')](_0x8680('0x8'),_0x37c702);},'comment':_0x8680('0x9')},'fullname':{'type':Sequelize[_0x8680('0x5')],'allowNull':![],'set':function(_0x5ea2c7){this[_0x8680('0x7')](_0x8680('0xa'),_0x5ea2c7);this['setDataValue']('callerid',util[_0x8680('0xb')](_0x8680('0xc'),_0x5ea2c7,this['getDataValue'](_0x8680('0xd'))));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING'],'allowNull':![],'unique':'email','validate':{'isEmail':!![]},'set':function(_0x3c1b07){if(_0x3c1b07){this[_0x8680('0x7')](_0x8680('0xe'),_0x3c1b07[_0x8680('0xf')]());}}},'role':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x11'),_0x8680('0x12'),'agent','telephone'),'allowNull':![]},'password':{'type':Sequelize[_0x8680('0x5')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x8680('0x5')],'defaultValue':_0x8680('0x13')},'internal':{'type':Sequelize['INTEGER'](0xb),'allowNull':![],'unique':_0x8680('0xd'),'set':function(_0x392b6b){this[_0x8680('0x7')](_0x8680('0xd'),_0x392b6b);this[_0x8680('0x7')](_0x8680('0x14'),_0x392b6b);this[_0x8680('0x7')]('callerid',util[_0x8680('0xb')]('\x22%s\x22\x20<%s>',this[_0x8680('0x15')]('fullname'),_0x392b6b));}},'salt':{'type':Sequelize[_0x8680('0x5')]},'phone':{'type':Sequelize[_0x8680('0x5')]},'mobile':{'type':Sequelize['STRING']},'address':{'type':Sequelize[_0x8680('0x5')]},'zipcode':{'type':Sequelize[_0x8680('0x5')]},'userpic':{'type':Sequelize[_0x8680('0x5')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize['STRING']},'online':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x8680('0x17')]},'voicePause':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'openchannelPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x8680('0x5')],'defaultValue':'DEFAULT\x20PAUSE'},'lastPauseAt':{'type':Sequelize[_0x8680('0x17')]},'chatCapacity':{'type':Sequelize[_0x8680('0x18')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x8680('0x18')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x8680('0x18')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x8680('0x18')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x8680('0x18')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x8680('0x16')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x8680('0x18')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x8680('0x18')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x8680('0x18')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'description':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'host':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![],'defaultValue':'dynamic'},'ipaddr':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'port':{'type':Sequelize[_0x8680('0x18')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x8680('0x18')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'regserver':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'useragent':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x8680('0x18')](0xb),'allowNull':!![]},'type':{'type':Sequelize['ENUM'](_0x8680('0x19'),'user',_0x8680('0x1a')),'allowNull':!![],'defaultValue':'friend'},'context':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![],'defaultValue':_0x8680('0x1b')},'callingpres':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x1c'),_0x8680('0x1d'),_0x8680('0x1e'),_0x8680('0x1f'),_0x8680('0x20'),_0x8680('0x21'),_0x8680('0x22'),_0x8680('0x23')),'allowNull':!![]},'deny':{'type':Sequelize['STRING'],'allowNull':!![]},'permit':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'secret':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'transport':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![],'defaultValue':_0x8680('0x24'),'set':function(_0x3bd116){this['setDataValue']('transport',_0x3bd116?_0x3bd116[_0x8680('0x25')](','):null);},'get':function(){return this[_0x8680('0x15')](_0x8680('0x26'))?this[_0x8680('0x15')](_0x8680('0x26'))[_0x8680('0x27')](','):null;},'comment':_0x8680('0x28')},'dtmfmode':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x29'),_0x8680('0x2a'),'shortinfo',_0x8680('0x2b'),'auto'),'allowNull':!![],'defaultValue':_0x8680('0x29')},'directmedia':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no','nonat','update',_0x8680('0x2d')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'nat':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![],'defaultValue':_0x8680('0x2e'),'set':function(_0x5930b1){this[_0x8680('0x7')](_0x8680('0x2f'),_0x5930b1?_0x5930b1['join'](','):null);},'get':function(){return this['getDataValue'](_0x8680('0x2f'))?this[_0x8680('0x15')](_0x8680('0x2f'))[_0x8680('0x27')](','):null;},'comment':_0x8680('0x30')},'callgroup':{'type':Sequelize[_0x8680('0x5')]},'namedcallgroup':{'type':Sequelize[_0x8680('0x5')]},'pickupgroup':{'type':Sequelize[_0x8680('0x5')]},'namedpickupgroup':{'type':Sequelize[_0x8680('0x5')]},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING']},'disallow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x8680('0x31')},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x8680('0x32'),'set':function(_0x549cb1){this[_0x8680('0x7')]('allow',_0x549cb1?_0x549cb1[_0x8680('0x25')](';'):_0x8680('0x32'));},'get':function(){return this['getDataValue']('allow')?this[_0x8680('0x15')]('allow')[_0x8680('0x27')](';'):null;},'comment':_0x8680('0x33')},'autoframing':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![],'set':function(_0x5328a){this[_0x8680('0x7')](_0x8680('0x34'),_0x5328a?_0x5328a[_0x8680('0x25')](','):null);},'get':function(){return this[_0x8680('0x15')](_0x8680('0x34'))?this[_0x8680('0x15')](_0x8680('0x34'))['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x8680('0x10')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no',_0x8680('0x35')),'allowNull':!![]},'promiscredir':{'type':Sequelize['ENUM'](_0x8680('0x2c'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x8680('0x18')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![],'defaultValue':_0x8680('0x36')},'amaflags':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![],'defaultValue':_0x8680('0x2c')},'busylevel':{'type':Sequelize[_0x8680('0x18')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'template':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no',_0x8680('0x37')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x8680('0x10')]('accept',_0x8680('0x38'),'originate'),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x8680('0x18')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x8680('0x10')]('uac',_0x8680('0x39')),'allowNull':!![],'defaultValue':_0x8680('0x39')},'t38pt_usertpsource':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x8680('0x18')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultuser':{'type':Sequelize['STRING'],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x8680('0x18')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize['ENUM'](_0x8680('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x8680('0x18')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x8680('0x18')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0x8680('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0x8680('0x2c'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x8680('0x10')]('yes','no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x8680('0x10')]('yes','no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x8680('0x10')]('yes','no',_0x8680('0x3a'),_0x8680('0x3b')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x8680('0x18')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'dtlscapath':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlssetup':{'type':Sequelize['ENUM'](_0x8680('0x3c'),_0x8680('0x3d'),_0x8680('0x3e')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x8680('0x18')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'mohsuggest':{'type':Sequelize['STRING'],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x8680('0x10')](_0x8680('0x2c'),'no',_0x8680('0x3f'),_0x8680('0x40'),'update,nonat'),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x8680('0x5')]},'resetPasswordExpires':{'type':Sequelize['DATE']},'passwordResetAt':{'type':Sequelize[_0x8680('0x17')],'defaultValue':null},'previousPasswords':{'type':Sequelize['TEXT']},'showWebBar':{'type':Sequelize[_0x8680('0x18')],'defaultValue':0x0,'set':function(_0x85cd8d){this[_0x8680('0x7')](_0x8680('0x41'),_0x85cd8d);var _0x3beabd=this[_0x8680('0x42')]({'plain':!![]});switch(_0x85cd8d){case 0x0:case 0x1:var _0x12197c=_0x3beabd[_0x8680('0x26')]?_['isArray'](_0x3beabd[_0x8680('0x26')])?_0x3beabd[_0x8680('0x26')][_0x8680('0x25')]():_0x3beabd[_0x8680('0x26')]:_0x8680('0x24');if(_0x12197c===_0x8680('0x43')){_0x12197c=_0x8680('0x24');}this['setDataValue']('transport',_0x12197c);this['setDataValue'](_0x8680('0x44'),'no');this[_0x8680('0x7')](_0x8680('0x45'),null);this[_0x8680('0x7')](_0x8680('0x46'),null);this[_0x8680('0x7')]('icesupport',null);this[_0x8680('0x7')](_0x8680('0x47'),null);this[_0x8680('0x7')](_0x8680('0x48'),null);this[_0x8680('0x7')](_0x8680('0x49'),null);this[_0x8680('0x7')]('dtlscertfile',null);this[_0x8680('0x7')](_0x8680('0x4a'),null);this[_0x8680('0x7')](_0x8680('0x4b'),'no');break;case 0x2:this['setDataValue'](_0x8680('0x26'),_0x8680('0x43'));this[_0x8680('0x7')](_0x8680('0x44'),_0x8680('0x2c'));this[_0x8680('0x7')](_0x8680('0x45'),_0x8680('0x2c'));this[_0x8680('0x7')](_0x8680('0x46'),_0x8680('0x2c'));this[_0x8680('0x7')]('icesupport',_0x8680('0x2c'));this[_0x8680('0x7')](_0x8680('0x47'),_0x8680('0x2c'));this['setDataValue']('dtlsverify','no');this[_0x8680('0x7')](_0x8680('0x49'),_0x8680('0x3e'));this[_0x8680('0x7')](_0x8680('0x4c'),_0x3beabd['dtlscertfile']||'/etc/pki/tls/certs/motion.crt');this[_0x8680('0x7')]('dtlsprivatekey',_0x3beabd['dtlsprivatekey']||'/etc/pki/tls/private/motion.key');this['setDataValue']('rtcp_mux',_0x8680('0x2c'));break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0x4d07bb){this[_0x8680('0x7')](_0x8680('0x4d'),_0x4d07bb?_0x4d07bb[_0x8680('0x25')](','):[]);},'get':function(){return this['getDataValue']('permissions')?_[_0x8680('0x4e')](this['getDataValue'](_0x8680('0x4d'))[_0x8680('0x27')](','),function(_0x1d1d85){return parseInt(_0x1d1d85,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x8680('0x5')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x8680('0x5')]},'phoneBarBusyNumber':{'type':Sequelize[_0x8680('0x5')]},'phoneBarUnconditional':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x8680('0x16')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x8680('0x18')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x8680('0x5')],'defaultValue':''},'crudPermissions':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize['ENUM'](_0x8680('0x2c'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x8680('0x5')]},'phoneBarEnableJaws':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x8680('0x15')]('phoneBarEnableScreenRecordingByAgent')?this['getDataValue'](_0x8680('0x4f')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'hotdesk':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'interface':{'type':Sequelize[_0x8680('0x5')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x8680('0x5')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![],'set':function(_0x27cf09){if(typeof _0x27cf09===_0x8680('0x50')){var _0x4a5030=_0x27cf09==='1'?!![]:_0x27cf09==='0'?![]:_0x27cf09===_0x8680('0x51')?!![]:_0x27cf09===_0x8680('0x52')?![]:![];this[_0x8680('0x7')](_0x8680('0x53'),_0x4a5030);}else{this['setDataValue'](_0x8680('0x53'),_0x27cf09);}}},'blocked':{'type':Sequelize[_0x8680('0x16')],'defaultValue':![],'set':function(_0x582e3d){this['setDataValue'](_0x8680('0x54'),_0x582e3d);if(_0x582e3d===!![]){this[_0x8680('0x7')](_0x8680('0x55'),moment());this[_0x8680('0x7')](_0x8680('0x56'),0x0);}else{this['setDataValue'](_0x8680('0x55'),null);}}},'blockedAt':{'type':Sequelize[_0x8680('0x17')],'defaultValue':null},'loginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize['INTEGER'](0x5)[_0x8680('0x57')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x8680('0x16')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x8680('0x16')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xc6c0=['join','transport','split','info','inband','auto','yes','nonat','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\x22gsm\x22]','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>','always','refuse','originate','uac','uas','fingerprint','active','passive','update,nonat','TEXT','get','wss','encryption','force_avp','icesupport','dtlssetup','dtlscertfile','dtlsprivatekey','dtlsenable','dtlsverify','actpass','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','rtcp_mux','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','true','false','screenrecording','blockedAt','UNSIGNED','sequelize','util','lodash','exports','STRING','name','setDataValue','defaultuser','fullname','callerid','format','\x22%s\x22\x20<%s>','getDataValue','internal','email','ENUM','user','agent','local','INTEGER','accountcode','BOOLEAN','DATE','DEFAULT\x20PAUSE','dynamic','friend','peer','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_PASSED_SCREEN','PROHIB','udp'];(function(_0xd92e0f,_0x4c28de){var _0x408a33=function(_0x35be94){while(--_0x35be94){_0xd92e0f['push'](_0xd92e0f['shift']());}};_0x408a33(++_0x4c28de);}(_0xc6c0,0x13e));var _0x0c6c=function(_0x5e8c32,_0x1b1f3f){_0x5e8c32=_0x5e8c32-0x0;var _0x595f7b=_0xc6c0[_0x5e8c32];return _0x595f7b;};'use strict';var Sequelize=require(_0x0c6c('0x0'));var moment=require('moment');var util=require(_0x0c6c('0x1'));var _=require(_0x0c6c('0x2'));module[_0x0c6c('0x3')]={'name':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':![],'unique':_0x0c6c('0x5'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x1d9169){this[_0x0c6c('0x6')](_0x0c6c('0x5'),_0x1d9169);this[_0x0c6c('0x6')](_0x0c6c('0x7'),_0x1d9169);},'comment':'The\x20name\x20of\x20the\x20user'},'fullname':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0x1791cb){this[_0x0c6c('0x6')](_0x0c6c('0x8'),_0x1791cb);this[_0x0c6c('0x6')](_0x0c6c('0x9'),util[_0x0c6c('0xa')](_0x0c6c('0xb'),_0x1791cb,this[_0x0c6c('0xc')](_0x0c6c('0xd'))));}},'alias':{'type':Sequelize[_0x0c6c('0x4')]},'email':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':![],'unique':_0x0c6c('0xe'),'validate':{'isEmail':!![]},'set':function(_0x238229){if(_0x238229){this[_0x0c6c('0x6')](_0x0c6c('0xe'),_0x238229['toLowerCase']());}}},'role':{'type':Sequelize[_0x0c6c('0xf')]('admin',_0x0c6c('0x10'),_0x0c6c('0x11'),'telephone'),'allowNull':![]},'password':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x0c6c('0x4')],'defaultValue':_0x0c6c('0x12')},'internal':{'type':Sequelize[_0x0c6c('0x13')](0xb),'allowNull':![],'unique':_0x0c6c('0xd'),'set':function(_0x538b89){this[_0x0c6c('0x6')](_0x0c6c('0xd'),_0x538b89);this[_0x0c6c('0x6')](_0x0c6c('0x14'),_0x538b89);this[_0x0c6c('0x6')](_0x0c6c('0x9'),util[_0x0c6c('0xa')]('\x22%s\x22\x20<%s>',this[_0x0c6c('0xc')]('fullname'),_0x538b89));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0x0c6c('0x4')]},'address':{'type':Sequelize['STRING']},'zipcode':{'type':Sequelize[_0x0c6c('0x4')]},'userpic':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0x0c6c('0x4')]},'country':{'type':Sequelize[_0x0c6c('0x4')]},'online':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x0c6c('0x16')]},'voicePause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x0c6c('0x4')],'defaultValue':_0x0c6c('0x17')},'lastPauseAt':{'type':Sequelize[_0x0c6c('0x16')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x0c6c('0x13')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x0c6c('0x13')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x0c6c('0x13')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x0c6c('0x13')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x0c6c('0x13')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x0c6c('0x13')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x0c6c('0x13')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':![]},'description':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'host':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![],'defaultValue':_0x0c6c('0x18')},'ipaddr':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'port':{'type':Sequelize[_0x0c6c('0x13')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x0c6c('0x13')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize['STRING'],'allowNull':!![]},'regserver':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'useragent':{'type':Sequelize['STRING'],'allowNull':!![]},'lastms':{'type':Sequelize[_0x0c6c('0x13')](0xb),'allowNull':!![]},'type':{'type':Sequelize['ENUM'](_0x0c6c('0x19'),_0x0c6c('0x10'),_0x0c6c('0x1a')),'allowNull':!![],'defaultValue':_0x0c6c('0x19')},'context':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![],'defaultValue':_0x0c6c('0x1b')},'callingpres':{'type':Sequelize[_0x0c6c('0xf')](_0x0c6c('0x1c'),'ALLOWED_PASSED_SCREEN',_0x0c6c('0x1d'),_0x0c6c('0x1e'),'PROHIB_NOT_SCREENED',_0x0c6c('0x1f'),'PROHIB_FAILED_SCREEN',_0x0c6c('0x20')),'allowNull':!![]},'deny':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'permit':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'secret':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'transport':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![],'defaultValue':_0x0c6c('0x21'),'set':function(_0x391308){this['setDataValue']('transport',_0x391308?_0x391308[_0x0c6c('0x22')](','):null);},'get':function(){return this[_0x0c6c('0xc')](_0x0c6c('0x23'))?this[_0x0c6c('0xc')](_0x0c6c('0x23'))[_0x0c6c('0x24')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0x0c6c('0xf')]('rfc2833',_0x0c6c('0x25'),'shortinfo',_0x0c6c('0x26'),_0x0c6c('0x27')),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize['ENUM'](_0x0c6c('0x28'),'no',_0x0c6c('0x29'),_0x0c6c('0x2a'),_0x0c6c('0x2b')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM'](_0x0c6c('0x28'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'directmediadeny':{'type':Sequelize['STRING'],'allowNull':!![]},'nat':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![],'defaultValue':_0x0c6c('0x2c'),'set':function(_0x3829e8){this['setDataValue'](_0x0c6c('0x2d'),_0x3829e8?_0x3829e8[_0x0c6c('0x22')](','):null);},'get':function(){return this[_0x0c6c('0xc')](_0x0c6c('0x2d'))?this[_0x0c6c('0xc')](_0x0c6c('0x2d'))[_0x0c6c('0x24')](','):null;},'comment':_0x0c6c('0x2e')},'callgroup':{'type':Sequelize[_0x0c6c('0x4')]},'namedcallgroup':{'type':Sequelize[_0x0c6c('0x4')]},'pickupgroup':{'type':Sequelize[_0x0c6c('0x4')]},'namedpickupgroup':{'type':Sequelize[_0x0c6c('0x4')]},'language':{'type':Sequelize[_0x0c6c('0x4')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x0c6c('0x4')]},'disallow':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':![],'defaultValue':_0x0c6c('0x2f')},'allow':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':![],'defaultValue':_0x0c6c('0x30'),'set':function(_0x42ce5c){this[_0x0c6c('0x6')](_0x0c6c('0x31'),_0x42ce5c?_0x42ce5c[_0x0c6c('0x22')](';'):_0x0c6c('0x30'));},'get':function(){return this[_0x0c6c('0xc')](_0x0c6c('0x31'))?this[_0x0c6c('0xc')]('allow')[_0x0c6c('0x24')](';'):null;},'comment':_0x0c6c('0x32')},'autoframing':{'type':Sequelize['ENUM'](_0x0c6c('0x28'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![],'set':function(_0x3685e1){this[_0x0c6c('0x6')](_0x0c6c('0x33'),_0x3685e1?_0x3685e1[_0x0c6c('0x22')](','):null);},'get':function(){return this[_0x0c6c('0xc')]('insecure')?this['getDataValue'](_0x0c6c('0x33'))[_0x0c6c('0x24')](','):null;},'comment':_0x0c6c('0x34')},'trustrpid':{'type':Sequelize[_0x0c6c('0xf')](_0x0c6c('0x28'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0x0c6c('0x28'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x0c6c('0xf')](_0x0c6c('0x28'),'no',_0x0c6c('0x35')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x0c6c('0xf')](_0x0c6c('0x28'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x0c6c('0xf')]('yes','no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x0c6c('0x13')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'callerid':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x0c6c('0x36')},'amaflags':{'type':Sequelize['STRING'],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x0c6c('0xf')](_0x0c6c('0x28'),'no'),'allowNull':!![],'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0x0c6c('0x13')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x0c6c('0xf')](_0x0c6c('0x28'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM'](_0x0c6c('0x28'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x0c6c('0xf')](_0x0c6c('0x28'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x0c6c('0xf')]('yes','no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize['STRING'],'allowNull':!![]},'template':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x0c6c('0xf')](_0x0c6c('0x28'),'no',_0x0c6c('0x37')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x0c6c('0x13')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x0c6c('0xf')](_0x0c6c('0x28'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x0c6c('0xf')]('accept',_0x0c6c('0x38'),_0x0c6c('0x39')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x0c6c('0x13')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x0c6c('0x13')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x0c6c('0xf')](_0x0c6c('0x3a'),_0x0c6c('0x3b')),'allowNull':!![],'defaultValue':_0x0c6c('0x3b')},'t38pt_usertpsource':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x0c6c('0xf')](_0x0c6c('0x28'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x0c6c('0x13')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x0c6c('0x13')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x0c6c('0x13')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x0c6c('0xf')](_0x0c6c('0x28'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING'],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'timert1':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x0c6c('0x13')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x0c6c('0x13')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'contactacl':{'type':Sequelize['STRING'],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x0c6c('0x13')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0x0c6c('0x28'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x0c6c('0xf')](_0x0c6c('0x28'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize['ENUM'](_0x0c6c('0x28'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x0c6c('0xf')](_0x0c6c('0x28'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x0c6c('0xf')](_0x0c6c('0x28'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x0c6c('0xf')](_0x0c6c('0x28'),'no',_0x0c6c('0x3c'),'certificate'),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x0c6c('0x13')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'dtlscafile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x0c6c('0xf')](_0x0c6c('0x3d'),_0x0c6c('0x3e'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x0c6c('0xf')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x0c6c('0x13')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x0c6c('0xf')](_0x0c6c('0x28'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x0c6c('0xf')]('yes','no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x0c6c('0xf')](_0x0c6c('0x28'),'no',_0x0c6c('0x29'),_0x0c6c('0x2a'),_0x0c6c('0x3f')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x0c6c('0x4')]},'resetPasswordExpires':{'type':Sequelize[_0x0c6c('0x16')]},'passwordResetAt':{'type':Sequelize[_0x0c6c('0x16')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x0c6c('0x40')]},'showWebBar':{'type':Sequelize[_0x0c6c('0x13')],'defaultValue':0x0,'set':function(_0x54dc3d){this[_0x0c6c('0x6')]('showWebBar',_0x54dc3d);var _0x420d8e=this[_0x0c6c('0x41')]({'plain':!![]});switch(_0x54dc3d){case 0x0:case 0x1:var _0x4dfea9=_0x420d8e[_0x0c6c('0x23')]?_['isArray'](_0x420d8e[_0x0c6c('0x23')])?_0x420d8e[_0x0c6c('0x23')][_0x0c6c('0x22')]():_0x420d8e[_0x0c6c('0x23')]:_0x0c6c('0x21');if(_0x4dfea9===_0x0c6c('0x42')){_0x4dfea9=_0x0c6c('0x21');}this[_0x0c6c('0x6')](_0x0c6c('0x23'),_0x4dfea9);this['setDataValue'](_0x0c6c('0x43'),'no');this[_0x0c6c('0x6')]('avpf',null);this[_0x0c6c('0x6')](_0x0c6c('0x44'),null);this[_0x0c6c('0x6')](_0x0c6c('0x45'),null);this[_0x0c6c('0x6')]('dtlsenable',null);this[_0x0c6c('0x6')]('dtlsverify',null);this[_0x0c6c('0x6')](_0x0c6c('0x46'),null);this[_0x0c6c('0x6')](_0x0c6c('0x47'),null);this['setDataValue'](_0x0c6c('0x48'),null);this[_0x0c6c('0x6')]('rtcp_mux','no');break;case 0x2:this[_0x0c6c('0x6')](_0x0c6c('0x23'),'wss');this[_0x0c6c('0x6')](_0x0c6c('0x43'),_0x0c6c('0x28'));this['setDataValue']('avpf',_0x0c6c('0x28'));this[_0x0c6c('0x6')](_0x0c6c('0x44'),'yes');this['setDataValue'](_0x0c6c('0x45'),'yes');this[_0x0c6c('0x6')](_0x0c6c('0x49'),_0x0c6c('0x28'));this[_0x0c6c('0x6')](_0x0c6c('0x4a'),'no');this['setDataValue']('dtlssetup',_0x0c6c('0x4b'));this[_0x0c6c('0x6')](_0x0c6c('0x47'),_0x420d8e['dtlscertfile']||_0x0c6c('0x4c'));this[_0x0c6c('0x6')](_0x0c6c('0x48'),_0x420d8e[_0x0c6c('0x48')]||_0x0c6c('0x4d'));this['setDataValue'](_0x0c6c('0x4e'),_0x0c6c('0x28'));break;default:}}},'permissions':{'type':Sequelize[_0x0c6c('0x40')],'set':function(_0x44a08b){this[_0x0c6c('0x6')](_0x0c6c('0x4f'),_0x44a08b?_0x44a08b['join'](','):[]);},'get':function(){return this['getDataValue'](_0x0c6c('0x4f'))?_[_0x0c6c('0x50')](this[_0x0c6c('0xc')](_0x0c6c('0x4f'))[_0x0c6c('0x24')](','),function(_0x423ac8){return parseInt(_0x423ac8,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize['STRING']},'phoneBarNoReplyNumber':{'type':Sequelize[_0x0c6c('0x4')]},'phoneBarBusyNumber':{'type':Sequelize[_0x0c6c('0x4')]},'phoneBarUnconditional':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x0c6c('0x13')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x0c6c('0x4')],'defaultValue':''},'crudPermissions':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x0c6c('0xf')](_0x0c6c('0x28'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x0c6c('0x4')]},'phoneBarEnableJaws':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x0c6c('0x51')],'get':function(){return this[_0x0c6c('0xc')](_0x0c6c('0x52'))?this['getDataValue'](_0x0c6c('0x52')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hotdesk':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'interface':{'type':Sequelize[_0x0c6c('0x4')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x0c6c('0x4')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize['STRING'],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':![],'set':function(_0x1766cd){if(typeof _0x1766cd==='string'){var _0x58e8ff=_0x1766cd==='1'?!![]:_0x1766cd==='0'?![]:_0x1766cd===_0x0c6c('0x53')?!![]:_0x1766cd===_0x0c6c('0x54')?![]:![];this[_0x0c6c('0x6')]('screenrecording',_0x58e8ff);}else{this[_0x0c6c('0x6')](_0x0c6c('0x55'),_0x1766cd);}}},'blocked':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':![],'set':function(_0x43e2c3){this['setDataValue']('blocked',_0x43e2c3);if(_0x43e2c3===!![]){this[_0x0c6c('0x6')](_0x0c6c('0x56'),moment());this[_0x0c6c('0x6')]('loginAttempts',0x0);}else{this['setDataValue'](_0x0c6c('0x56'),null);}}},'blockedAt':{'type':Sequelize['DATE'],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x0c6c('0x13')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x0c6c('0x13')](0x5)[_0x0c6c('0x57')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x0c6c('0x15')],'defaultValue':!![]}};
\ No newline at end of file
index eb327f2..582a256 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9e7=['$and','$or','$gt','$gte','$lt','$lte','$ne','$eq','$not','$between','$notBetween','$in','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contains','$any','firstName','lastName','CmContact','Contact','getApiKey','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','iat','nonce','apiKeyNonce','apiKeyIat','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','queues','teams','inbound','lower','col','toString','asc','substring','uniqBy','orderBy','request','client','idle','unknown','unavailable','ringing','voiceStatus','busy','slice','charAt','toUpperCase','select','ui.','InteractionId','field','ui.createdAt','from','user_has_','_interactions','ui.UserId\x20=\x20?','bluebird','util','path','lodash','squel','jayson/promise','../../components/auth/service','../../components/parsers/qs','api','../../config/environment','../../config/license/util','../../mysqldb','socket.io-emitter','redis','register','defaults','localhost','http','info','User,\x20%s,\x20%s','request\x20sent','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','update','destroy','then','get','role','admin','Users','user','Agents','agent','Telephones','filter','ignore','map','value','includes','find','name','send','index','User','rawAttributes','fieldName','type','key','password','query','include','attributes','push','findAll','rows','openTabs','dataValues','fax','mail','openchannel','whatsapp','all','show','params','model','differenceBy','keys','salt','filters','intersection','fields','length','includeAll','merge','options','true','chat','sms','body','describe','addContacts','ids','internal','findById','max','min_internal','isNil','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)','QueryTypes','SELECT','voicemail','mailbox','VoiceMail','fullname','email','permissions','101','103','110','104','105','106','108','109','100','111','114','115','create','Unauthorized','checkUserLimits','settingsEnabled','userProfileId','UserProfileSection','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','some','telephone','isEmpty','autoAssociation','changePassword','oldPassword','newPassword','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','Sequelize','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','Setting','findOne','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','updatePasswordsHistory','channel','online','loginInPause','voicePause','interface','isValidChannel','Unknown\x20channel','capitalize','toLowerCase','Queues','penalty','spread','QueueId','emit','Queue:save','VoiceQueue','voice','format','SIP/%s','each','UserVoiceQueueRt','upsert','removeQueues','isArray','Queue:remove','addAvatar','userpic','file','filename','getAvatar','join','root','server/files/images/logos/default_profile.png','existsSync','download','server/files/images/','ChatOpenTabs','CHAT','createdAt','FAX','OpenchannelOpenTabs','OPENCHANNEL','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','getContacts','order','sort','pick','where','CmList','List','Tag','Tags','color','tag','hasOwnProperty','nolimit','Queue','Unknown\x20role','getVoiceQueuesRt','getGroups','ChatGroup','VoiceRecording','ScreenRecording','getChatInteractions','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','UserId','getSmsInteractions','FaxInteraction','getFaxInteractions','getWhatsappInteractions','WhatsappInteraction','login','phone','mobile','LOCAL/%s@from-sip/n','intrf','user:forcelogout','headers','x-forwarded-for','connection','remoteAddress','socket','getVoiceQueues','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','LOGIN','device','PAUSE','LOGININPAUSE','bulkCreate','concat','isMiddleware','resolve','logout','pause','QueuePause','updateAttributes','getChannels','DEFAULT\x20PAUSE','mailPause','chatPause','faxPause','openchannelPause','smsPause','pauseType','lastPauseAt','unpause','manual','Pause','getTeams','Team','addTeams','omit','setDataValue','Voice','getChatQueues','getMailQueues','getSmsQueues','Sms','getWhatsappQueues','Whatsapp','Fax','getOpenchannelQueues','Openchannel','transaction','getDataValue','removeTeams','Chat','Mail','flatten','removeAgent','getLists','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','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','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','SmsAccount','getSmsAccounts','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','getScheduledCalls','CmHopper'];(function(_0x1ae1fb,_0x81c2ec){var _0x57166=function(_0x48c137){while(--_0x48c137){_0x1ae1fb['push'](_0x1ae1fb['shift']());}};_0x57166(++_0x81c2ec);}(_0xb9e7,0x1df));var _0x7b9e=function(_0x6f1a87,_0x5d5bcf){_0x6f1a87=_0x6f1a87-0x0;var _0x2495c7=_0xb9e7[_0x6f1a87];return _0x2495c7;};'use strict';var moment=require('moment');var BPromise=require(_0x7b9e('0x0'));var util=require(_0x7b9e('0x1'));var path=require(_0x7b9e('0x2'));var fs=require('fs');var _=require(_0x7b9e('0x3'));var squel=require(_0x7b9e('0x4'));var jayson=require(_0x7b9e('0x5'));var Redis=require('ioredis');var authService=require(_0x7b9e('0x6'));var qs=require(_0x7b9e('0x7'));var logger=require('../../config/logger')(_0x7b9e('0x8'));var utils=require('../../config/utils');var config=require(_0x7b9e('0x9'));var licenseUtil=require(_0x7b9e('0xa'));var db=require(_0x7b9e('0xb'))['db'];var socket=require(_0x7b9e('0xc'))(new Redis(config[_0x7b9e('0xd')]));require('./user.socket')[_0x7b9e('0xe')](socket);config[_0x7b9e('0xd')]=_[_0x7b9e('0xf')](config['redis'],{'host':_0x7b9e('0x10'),'port':0x18eb});var client=jayson['client'][_0x7b9e('0x11')]({'port':0x232a});var values;function respondWithRpcPromise(_0x2d6ffd,_0x540002,_0x54cc6a,_0x15ef78){return new BPromise(function(_0x567ea9,_0x29584e){var _0x5f1f9b=_0x15ef78||client;return _0x5f1f9b['request'](_0x2d6ffd,_0x54cc6a)['then'](function(_0x3fa26c){logger[_0x7b9e('0x12')](_0x7b9e('0x13'),_0x540002,_0x7b9e('0x14'));logger['debug'](_0x7b9e('0x15'),_0x540002,_0x7b9e('0x14'),JSON[_0x7b9e('0x16')](_0x3fa26c));if(_0x3fa26c[_0x7b9e('0x17')]){if(_0x3fa26c[_0x7b9e('0x17')][_0x7b9e('0x18')]===0x1f4){logger[_0x7b9e('0x17')](_0x7b9e('0x13'),_0x540002,_0x3fa26c[_0x7b9e('0x17')][_0x7b9e('0x19')]);return _0x29584e(_0x3fa26c['error'][_0x7b9e('0x19')]);}logger['error'](_0x7b9e('0x13'),_0x540002,_0x3fa26c[_0x7b9e('0x17')]['message']);return _0x567ea9(_0x3fa26c[_0x7b9e('0x17')][_0x7b9e('0x19')]);}else{logger['info']('User,\x20%s,\x20%s',_0x540002,_0x7b9e('0x14'));_0x567ea9(_0x3fa26c[_0x7b9e('0x1a')][_0x7b9e('0x19')]);}})[_0x7b9e('0x1b')](function(_0x524d43){logger[_0x7b9e('0x17')](_0x7b9e('0x13'),_0x540002,_0x524d43);_0x29584e(_0x524d43);});});}function respondWithStatusCode(_0x3bdbd8,_0x112374){_0x112374=_0x112374||0xcc;return function(_0x167d6f){if(_0x167d6f){return _0x3bdbd8['sendStatus'](_0x112374);}return _0x3bdbd8[_0x7b9e('0x1c')](_0x112374)[_0x7b9e('0x1d')]();};}function respondWithResult(_0x7db95f,_0x9b24da){_0x9b24da=_0x9b24da||0xc8;return function(_0x45cb41){if(_0x45cb41){return _0x7db95f[_0x7b9e('0x1c')](_0x9b24da)[_0x7b9e('0x1e')](_0x45cb41);}};}function respondWithFilteredResult(_0x39575a,_0x2b4b86){return function(_0x5dcd42){if(_0x5dcd42){var _0xf8b578=typeof _0x2b4b86[_0x7b9e('0x1f')]===_0x7b9e('0x20')&&typeof _0x2b4b86[_0x7b9e('0x21')]===_0x7b9e('0x20');var _0x2fde42=_0x5dcd42[_0x7b9e('0x22')];var _0x34b9c8=_0xf8b578?0x0:_0x2b4b86[_0x7b9e('0x1f')];var _0x2ce657=_0xf8b578?_0x5dcd42['count']:_0x2b4b86[_0x7b9e('0x1f')]+_0x2b4b86[_0x7b9e('0x21')];var _0x1a541c;if(_0x2ce657>=_0x2fde42){_0x2ce657=_0x2fde42;_0x1a541c=0xc8;}else{_0x1a541c=0xce;}_0x39575a[_0x7b9e('0x1c')](_0x1a541c);return _0x39575a[_0x7b9e('0x23')](_0x7b9e('0x24'),_0x34b9c8+'-'+_0x2ce657+'/'+_0x2fde42)['json'](_0x5dcd42);}return null;};}function saveUpdates(_0x22612e){return function(_0x5ca745){if(_0x5ca745){return _0x5ca745[_0x7b9e('0x25')](_0x22612e)['then'](function(_0x39c502){return _0x39c502;});}return null;};}function removeEntity(_0x4a7fbd){return function(_0x196d6c){if(_0x196d6c){return _0x196d6c[_0x7b9e('0x26')]()[_0x7b9e('0x27')](function(){var _0x1979d7=_0x196d6c[_0x7b9e('0x28')]({'plain':!![]});if(_0x1979d7[_0x7b9e('0x29')]===_0x7b9e('0x2a'))return;var _0x56e87e=[{'name':_0x7b9e('0x2b'),'value':_0x7b9e('0x2c'),'ignore':!![]},{'name':_0x7b9e('0x2d'),'value':_0x7b9e('0x2e'),'ignore':![]},{'name':_0x7b9e('0x2f'),'value':'telephone','ignore':![]}];var _0x2c005a=_(_0x56e87e)[_0x7b9e('0x30')](_0x7b9e('0x31'))[_0x7b9e('0x32')](_0x7b9e('0x33'))['value']();if(_[_0x7b9e('0x34')](_0x2c005a,_0x1979d7[_0x7b9e('0x29')])){return;}var _0x10104c=_[_0x7b9e('0x35')](_0x56e87e,['value',_0x1979d7['role']])[_0x7b9e('0x36')];return db['UserProfileResource']['destroy']({'where':{'type':_0x10104c,'resourceId':_0x1979d7['id']}})[_0x7b9e('0x27')](function(){return _0x196d6c;});})['then'](function(){_0x4a7fbd[_0x7b9e('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x46210d){return function(_0x16e29b){if(!_0x16e29b){_0x46210d['sendStatus'](0x194);}return _0x16e29b;};}function handleError(_0x9dc173,_0x28b91e){_0x28b91e=_0x28b91e||0x1f4;return function(_0x19c7ae){logger[_0x7b9e('0x17')](_0x19c7ae['stack']);if(_0x19c7ae[_0x7b9e('0x36')]){delete _0x19c7ae[_0x7b9e('0x36')];}_0x9dc173[_0x7b9e('0x1c')](_0x28b91e)[_0x7b9e('0x37')](_0x19c7ae);};}exports[_0x7b9e('0x38')]=function(_0x5aa89e,_0x55a6c7){var _0x495d95={},_0x2f9551={'count':0x0,'rows':[]};var _0x542873=_(db[_0x7b9e('0x39')][_0x7b9e('0x3a')])[_0x7b9e('0x32')](function(_0x4cec61){return{'name':_0x4cec61[_0x7b9e('0x3b')],'type':_0x4cec61[_0x7b9e('0x3c')][_0x7b9e('0x3d')]};})[_0x7b9e('0x30')](function(_0x1260f0){return!_[_0x7b9e('0x34')]([_0x7b9e('0x3e'),'salt'],_0x1260f0[_0x7b9e('0x36')]);})[_0x7b9e('0x33')]();_0x495d95=qs['getOptions'](_0x542873,_0x5aa89e);var _0x2ccc3b={'where':_0x495d95['where']};return db[_0x7b9e('0x39')][_0x7b9e('0x22')](_0x2ccc3b)[_0x7b9e('0x27')](function(_0x5b07de){_0x2f9551[_0x7b9e('0x22')]=_0x5b07de;if(_0x5aa89e[_0x7b9e('0x3f')]['includeAll']){_0x495d95[_0x7b9e('0x40')]=[{'all':!![]}];}if(!_[_0x7b9e('0x34')](_0x495d95['attributes'],'id')){_0x495d95[_0x7b9e('0x41')][_0x7b9e('0x42')]('id');}return db[_0x7b9e('0x39')][_0x7b9e('0x43')](_0x495d95);})['then'](function(_0x4e79fc){_0x2f9551[_0x7b9e('0x44')]=_0x4e79fc;if(_0x5aa89e[_0x7b9e('0x3f')][_0x7b9e('0x45')]==='true'){var _0x534f47=[];for(var _0x2d2285=0x0;_0x2d2285<_0x2f9551[_0x7b9e('0x44')]['length'];_0x2d2285++){_0x534f47[_0x7b9e('0x42')](get_open_tabs('chat',_0x2f9551['rows'][_0x2d2285][_0x7b9e('0x46')]));_0x534f47['push'](get_open_tabs('sms',_0x2f9551[_0x7b9e('0x44')][_0x2d2285][_0x7b9e('0x46')]));_0x534f47['push'](get_open_tabs(_0x7b9e('0x47'),_0x2f9551[_0x7b9e('0x44')][_0x2d2285][_0x7b9e('0x46')]));_0x534f47[_0x7b9e('0x42')](get_open_tabs(_0x7b9e('0x48'),_0x2f9551[_0x7b9e('0x44')][_0x2d2285][_0x7b9e('0x46')]));_0x534f47[_0x7b9e('0x42')](get_open_tabs(_0x7b9e('0x49'),_0x2f9551[_0x7b9e('0x44')][_0x2d2285]['dataValues']));_0x534f47[_0x7b9e('0x42')](get_open_tabs(_0x7b9e('0x4a'),_0x2f9551[_0x7b9e('0x44')][_0x2d2285][_0x7b9e('0x46')]));}return BPromise[_0x7b9e('0x4b')](_0x534f47)[_0x7b9e('0x27')](function(_0x54e4fb){return _0x2f9551;});}else{return _0x2f9551;}})[_0x7b9e('0x27')](respondWithFilteredResult(_0x55a6c7,_0x495d95))['catch'](handleError(_0x55a6c7,null));};exports[_0x7b9e('0x4c')]=function(_0xfb1bd9,_0x96dbdc){var _0x527b35={'raw':![],'where':{'id':_0xfb1bd9[_0x7b9e('0x4d')]['id']}},_0x3c1389={};_0x3c1389[_0x7b9e('0x4e')]=_[_0x7b9e('0x4f')](_[_0x7b9e('0x50')](db[_0x7b9e('0x39')][_0x7b9e('0x3a')]),[_0x7b9e('0x3e'),_0x7b9e('0x51')]);_0x3c1389[_0x7b9e('0x3f')]=_[_0x7b9e('0x50')](_0xfb1bd9['query']);_0x3c1389[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x3c1389[_0x7b9e('0x4e')],_0x3c1389['query']);_0x527b35[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x3c1389[_0x7b9e('0x4e')],qs['fields'](_0xfb1bd9[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x527b35[_0x7b9e('0x41')]=_0x527b35[_0x7b9e('0x41')][_0x7b9e('0x55')]?_0x527b35[_0x7b9e('0x41')]:_0x3c1389[_0x7b9e('0x4e')];if(_0xfb1bd9['query'][_0x7b9e('0x56')]){_0x527b35[_0x7b9e('0x40')]=[{'all':!![]}];}_0x527b35=_[_0x7b9e('0x57')]({},_0x527b35,_0xfb1bd9[_0x7b9e('0x58')]);if(!_[_0x7b9e('0x34')](_0x527b35['attributes'],'id')){_0x527b35[_0x7b9e('0x41')]['push']('id');}return db['User'][_0x7b9e('0x35')](_0x527b35)[_0x7b9e('0x27')](handleEntityNotFound(_0x96dbdc,null))[_0x7b9e('0x27')](function(_0x5b3727){var _0x24e3da=[];values=_0x5b3727;if(_0xfb1bd9[_0x7b9e('0x3f')][_0x7b9e('0x45')]===_0x7b9e('0x59')){_0x24e3da[_0x7b9e('0x42')](get_open_tabs(_0x7b9e('0x5a'),_0x5b3727[_0x7b9e('0x46')]));_0x24e3da['push'](get_open_tabs(_0x7b9e('0x5b'),_0x5b3727[_0x7b9e('0x46')]));_0x24e3da[_0x7b9e('0x42')](get_open_tabs('openchannel',_0x5b3727[_0x7b9e('0x46')]));_0x24e3da[_0x7b9e('0x42')](get_open_tabs(_0x7b9e('0x4a'),_0x5b3727[_0x7b9e('0x46')]));_0x24e3da[_0x7b9e('0x42')](get_open_tabs(_0x7b9e('0x47'),_0x5b3727[_0x7b9e('0x46')]));_0x24e3da[_0x7b9e('0x42')](get_open_tabs(_0x7b9e('0x48'),_0x5b3727[_0x7b9e('0x46')]));return BPromise['all'](_0x24e3da);}else{return values;}})[_0x7b9e('0x27')](function(_0x6eaadc){return values;})['then'](respondWithResult(_0x96dbdc,null))[_0x7b9e('0x1b')](handleError(_0x96dbdc,null));};exports['update']=function(_0x2debf6,_0xc6c921){if(_0x2debf6[_0x7b9e('0x5c')]['id']){delete _0x2debf6[_0x7b9e('0x5c')]['id'];}delete _0x2debf6[_0x7b9e('0x5c')]['role'];return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x2debf6['params']['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0xc6c921,null))[_0x7b9e('0x27')](saveUpdates(_0x2debf6['body'],null))[_0x7b9e('0x27')](respondWithResult(_0xc6c921,null))[_0x7b9e('0x1b')](handleError(_0xc6c921,null));};exports[_0x7b9e('0x5d')]=function(_0x4125f0,_0x27dc1b){return db['User'][_0x7b9e('0x5d')]()[_0x7b9e('0x27')](respondWithResult(_0x27dc1b,null))['catch'](handleError(_0x27dc1b,null));};exports[_0x7b9e('0x5e')]=function(_0x517e6f,_0x3090ab){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x517e6f[_0x7b9e('0x4d')]['id']}})['then'](handleEntityNotFound(_0x3090ab,null))['then'](function(_0x5d30b6){if(_0x5d30b6){return _0x5d30b6[_0x7b9e('0x5e')](_0x517e6f[_0x7b9e('0x5c')][_0x7b9e('0x5f')],_['omit'](_0x517e6f['body'],[_0x7b9e('0x5f'),'id'])||{});}})['then'](respondWithResult(_0x3090ab,null))[_0x7b9e('0x1b')](handleError(_0x3090ab,null));};function validateUser(_0x4e6dae){return new BPromise(function(_0x275f82,_0x52a16b){if(_0x4e6dae[_0x7b9e('0x60')])return _0x275f82(_0x4e6dae);return db['Setting'][_0x7b9e('0x61')](0x1)['then'](function(_0x322f69){if(_0x322f69['securePassword'])authService['validatePasswordPattern'](_0x4e6dae[_0x7b9e('0x3e')]);db[_0x7b9e('0x39')][_0x7b9e('0x62')](_0x7b9e('0x60'))[_0x7b9e('0x27')](function(_0x5797e1){if(_['isNil'](_0x5797e1)){_0x4e6dae['internal']=_0x322f69[_0x7b9e('0x63')]||0x1;return;}if(_[_0x7b9e('0x64')](_0x322f69[_0x7b9e('0x63')])||_0x322f69[_0x7b9e('0x63')]===_0x5797e1){_0x4e6dae[_0x7b9e('0x60')]=_0x5797e1+0x1;return;}if(_0x322f69[_0x7b9e('0x63')]>_0x5797e1){_0x4e6dae[_0x7b9e('0x60')]=_0x322f69[_0x7b9e('0x63')];return;}return db[_0x7b9e('0x65')]['query'](_0x7b9e('0x66'),{'type':db[_0x7b9e('0x65')][_0x7b9e('0x67')][_0x7b9e('0x68')]})['then'](function(_0x3660a8){if(_0x3660a8&&_0x3660a8[_0x7b9e('0x55')]){for(var _0x4f3f95=0x0,_0x4b260e=_0x3660a8['length'];_0x4f3f95<_0x4b260e&&_[_0x7b9e('0x64')](_0x4e6dae['internal']);_0x4f3f95++){if(_0x322f69[_0x7b9e('0x63')]<=_0x3660a8[_0x4f3f95]['from']){_0x4e6dae['internal']=_0x3660a8[_0x4f3f95]['from'];}else if(_0x322f69[_0x7b9e('0x63')]>_0x3660a8[_0x4f3f95]['from']&&_0x322f69['min_internal']<=_0x3660a8[_0x4f3f95]['to']){_0x4e6dae[_0x7b9e('0x60')]=_0x322f69[_0x7b9e('0x63')];}}}if(_[_0x7b9e('0x64')](_0x4e6dae[_0x7b9e('0x60')])){_0x4e6dae[_0x7b9e('0x60')]=_0x5797e1+0x1;}return _0x275f82(_0x4e6dae);});});})[_0x7b9e('0x1b')](function(_0x30639f){_0x52a16b(_0x30639f);});});}function updateUser(_0x113753){return new BPromise(function(_0x4cf1ff,_0x424b1e){try{if(_0x113753[_0x7b9e('0x69')]){_0x113753[_0x7b9e('0x6a')]=_0x113753[_0x7b9e('0x60')];_0x113753[_0x7b9e('0x6b')]={'mailbox':_0x113753[_0x7b9e('0x60')],'password':_0x113753[_0x7b9e('0x3e')],'fullname':_0x113753[_0x7b9e('0x6c')],'email':_0x113753[_0x7b9e('0x6d')]};}if(_0x113753[_0x7b9e('0x29')]===_0x7b9e('0x2e')){if(!_0x113753['permissions'])_0x113753[_0x7b9e('0x6e')]=[_0x7b9e('0x6f'),'102',_0x7b9e('0x70'),'113',_0x7b9e('0x71'),_0x7b9e('0x72'),_0x7b9e('0x73'),_0x7b9e('0x74'),'107',_0x7b9e('0x75'),_0x7b9e('0x76'),_0x7b9e('0x77'),_0x7b9e('0x78'),_0x7b9e('0x79'),_0x7b9e('0x7a')];}_0x4cf1ff(_0x113753);}catch(_0x6e03b6){_0x424b1e(_0x6e03b6);}});}exports[_0x7b9e('0x7b')]=function(_0x466dd8,_0x46db56){if(_0x466dd8[_0x7b9e('0x2c')]['role']===_0x7b9e('0x2e'))throw new Error(_0x7b9e('0x7c'));if(_0x466dd8[_0x7b9e('0x5c')][_0x7b9e('0x29')]===_0x7b9e('0x2c')&&_0x466dd8[_0x7b9e('0x2c')][_0x7b9e('0x29')]!==_0x7b9e('0x2a')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_0x466dd8[_0x7b9e('0x5c')][_0x7b9e('0x29')]===_0x7b9e('0x2a')&&_0x466dd8[_0x7b9e('0x2c')][_0x7b9e('0x29')]!=='admin'){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator');}return licenseUtil[_0x7b9e('0x7d')]([_0x466dd8[_0x7b9e('0x5c')]])[_0x7b9e('0x27')](function(){return validateUser(_0x466dd8[_0x7b9e('0x5c')]);})[_0x7b9e('0x27')](function(_0x2a7f57){return updateUser(_0x2a7f57)[_0x7b9e('0x27')](function(_0x19ccaf){if(_0x19ccaf['role']===_0x7b9e('0x2a')){_0x19ccaf['settingsEnabled']=_0x466dd8[_0x7b9e('0x2c')][_0x7b9e('0x7e')];delete _0x19ccaf[_0x7b9e('0x7f')];}return _0x19ccaf;});})[_0x7b9e('0x27')](function(_0x5224e2){return db[_0x7b9e('0x39')]['create'](_0x5224e2,{'include':[{'model':db[_0x7b9e('0x6b')],'as':_0x7b9e('0x6b')}]});})['then'](function(_0x130370){if(_0x466dd8[_0x7b9e('0x5c')][_0x7b9e('0x29')]===_0x7b9e('0x2c'))return _0x130370;if(_0x466dd8[_0x7b9e('0x2c')][_0x7b9e('0x29')]!==_0x7b9e('0x2c'))return _0x130370;return db[_0x7b9e('0x80')]['find']({'where':{'name':_0x130370[_0x7b9e('0x29')]===_0x7b9e('0x2e')?'Agents':'Telephones','userProfileId':_0x466dd8[_0x7b9e('0x2c')]['userProfileId']},'raw':!![]})[_0x7b9e('0x27')](function(_0x31d9bc){if(!_0x31d9bc||_0x31d9bc['autoAssociation']!=0x0)return _0x130370;return db[_0x7b9e('0x81')][_0x7b9e('0x7b')]({'name':_0x130370['name'],'resourceId':_0x130370['id'],'type':_0x31d9bc[_0x7b9e('0x36')],'sectionId':_0x31d9bc['id']},{})[_0x7b9e('0x27')](function(){return _0x130370;});})[_0x7b9e('0x1b')](function(_0x5a6658){logger[_0x7b9e('0x17')](_0x7b9e('0x82'),_0x5a6658);throw _0x5a6658;});})[_0x7b9e('0x27')](respondWithResult(_0x46db56,0xc9))[_0x7b9e('0x1b')](handleError(_0x46db56,null));};exports['bulkCreate']=function(_0xd1b87f,_0x2fe389){var _0x48f6dc=_0xd1b87f['body'];var _0x24d3aa=[];if(_0xd1b87f['user'][_0x7b9e('0x29')]===_0x7b9e('0x2e'))throw new Error('Unauthorized');if(_['some'](_0x48f6dc,[_0x7b9e('0x29'),_0x7b9e('0x2c')])&&_0xd1b87f[_0x7b9e('0x2c')]['role']!==_0x7b9e('0x2a')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_[_0x7b9e('0x83')](_0x48f6dc,[_0x7b9e('0x29'),_0x7b9e('0x2a')])&&_0xd1b87f['user'][_0x7b9e('0x29')]!==_0x7b9e('0x2a')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator');}return licenseUtil[_0x7b9e('0x7d')](_0x48f6dc)[_0x7b9e('0x27')](function(){return validateUser(_0x48f6dc[0x0]);})['then'](function(){for(var _0x35682e=0x1;_0x35682e<_0x48f6dc[_0x7b9e('0x55')];_0x35682e++){var _0x40b675=_0x48f6dc[_0x35682e-0x1][_0x7b9e('0x60')];if(!_0x48f6dc[_0x35682e][_0x7b9e('0x60')])_0x48f6dc[_0x35682e][_0x7b9e('0x60')]=_0x40b675+0x1;_0x24d3aa[_0x7b9e('0x42')](validateUser(_0x48f6dc[_0x35682e]));}return BPromise[_0x7b9e('0x4b')](_0x24d3aa);})[_0x7b9e('0x27')](function(){_0x24d3aa=[];for(var _0x3d61f4=0x0;_0x3d61f4<_0x48f6dc[_0x7b9e('0x55')];_0x3d61f4++){_0x24d3aa[_0x7b9e('0x42')](updateUser(_0x48f6dc[_0x3d61f4]));}return BPromise['all'](_0x24d3aa);})[_0x7b9e('0x27')](function(){return BPromise['each'](_0x48f6dc,function(_0x438613){return db['User']['create'](_0x438613,{'include':[{'model':db[_0x7b9e('0x6b')],'as':_0x7b9e('0x6b')}]})[_0x7b9e('0x27')](function(_0x5f49ce){_0x438613['id']=_0x5f49ce['id'];return _0x438613;});});})[_0x7b9e('0x27')](function(_0x1b1920){if(_0xd1b87f[_0x7b9e('0x5c')][_0x7b9e('0x29')]===_0x7b9e('0x2c'))return _0x1b1920;if(_0xd1b87f[_0x7b9e('0x2c')][_0x7b9e('0x29')]!=='user')return _0x1b1920;var _0x180e95=_[_0x7b9e('0x83')](_0x1b1920,function(_0x58cd91){return _0x58cd91[_0x7b9e('0x29')]===_0x7b9e('0x2e')||_0x58cd91[_0x7b9e('0x29')]===_0x7b9e('0x84');});if(!_0x180e95)return _0x1b1920;return db[_0x7b9e('0x80')][_0x7b9e('0x43')]({'where':{'name':{'$or':[_0x7b9e('0x2d'),'Telephones']},'userProfileId':_0xd1b87f['user']['userProfileId']},'raw':!![]})[_0x7b9e('0x27')](function(_0x22fc84){if(_[_0x7b9e('0x85')](_0x22fc84)||!_[_0x7b9e('0x83')](_0x22fc84,[_0x7b9e('0x86'),0x0]))return _0x1b1920;_0x24d3aa=[];var _0x1191d8=_(_0x22fc84)[_0x7b9e('0x32')](function(_0x14c95b){if(_0x14c95b[_0x7b9e('0x86')]===0x1)return;return _0x14c95b['name']===_0x7b9e('0x2d')?_0x7b9e('0x2e'):_0x7b9e('0x84');})['compact']()[_0x7b9e('0x33')]();for(var _0x51868f=0x0;_0x51868f<_0x1b1920[_0x7b9e('0x55')];_0x51868f++){if(!_[_0x7b9e('0x34')](_0x1191d8,_0x1b1920[_0x51868f][_0x7b9e('0x29')]))return;var _0x1b37f3=_0x1b1920[_0x51868f]['role']===_0x7b9e('0x2e')?'Agents':_0x7b9e('0x2f');_0x24d3aa[_0x7b9e('0x42')](db['UserProfileResource']['create']({'name':_0x1b1920[_0x51868f][_0x7b9e('0x36')],'resourceId':_0x1b1920[_0x51868f]['id'],'type':_0x1b37f3,'sectionId':_['find'](_0x22fc84,['name',_0x1b37f3])['id']},{}));}return BPromise[_0x7b9e('0x4b')](_0x24d3aa);});})[_0x7b9e('0x27')](respondWithResult(_0x2fe389,0xc9))[_0x7b9e('0x1b')](handleError(_0x2fe389,null));};exports[_0x7b9e('0x87')]=function(_0x4f0c00,_0x49670f){if(_0x4f0c00['body']['id']){delete _0x4f0c00[_0x7b9e('0x5c')]['id'];}return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x4f0c00[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](function(_0x19d48e){if(!_0x19d48e)return null;if(_0x19d48e['id']===_0x4f0c00['user']['id']){if(!_0x4f0c00['body'][_0x7b9e('0x88')]||!_0x4f0c00[_0x7b9e('0x5c')][_0x7b9e('0x89')]){throw new db['Sequelize'][(_0x7b9e('0x8a'))](_0x7b9e('0x8b'));}if(!_0x19d48e[_0x7b9e('0x8c')](_0x4f0c00['body'][_0x7b9e('0x88')])){throw new db[(_0x7b9e('0x8d'))][(_0x7b9e('0x8a'))](_0x7b9e('0x8e'));}if(_0x4f0c00[_0x7b9e('0x5c')][_0x7b9e('0x88')]===_0x4f0c00[_0x7b9e('0x5c')][_0x7b9e('0x89')]){throw new db['Sequelize']['ValidationError'](_0x7b9e('0x8f'));}}else if(_0x4f0c00[_0x7b9e('0x2c')][_0x7b9e('0x29')]==='admin'){if(!_0x4f0c00[_0x7b9e('0x5c')]['newPassword']){throw new db['Sequelize'][(_0x7b9e('0x8a'))](_0x7b9e('0x90'));}}else if(_0x4f0c00[_0x7b9e('0x2c')][_0x7b9e('0x29')]==='user'){if(!_0x4f0c00['body'][_0x7b9e('0x89')]){throw new db[(_0x7b9e('0x8d'))][(_0x7b9e('0x8a'))](_0x7b9e('0x90'));}if(_0x19d48e[_0x7b9e('0x29')]!==_0x7b9e('0x2e')){throw new db[(_0x7b9e('0x8d'))][(_0x7b9e('0x8a'))]('Unauthorized');}}else{throw new db[(_0x7b9e('0x8d'))][(_0x7b9e('0x8a'))]('Unauthorized');}return _0x19d48e;})[_0x7b9e('0x27')](handleEntityNotFound(_0x49670f,null))[_0x7b9e('0x27')](function(_0x4af72e){return db[_0x7b9e('0x91')][_0x7b9e('0x92')]({'attributes':['id',_0x7b9e('0x93'),_0x7b9e('0x94'),_0x7b9e('0x95')]})['then'](function(_0x2411d1){if(_0x2411d1[_0x7b9e('0x93')])authService[_0x7b9e('0x96')](_0x4f0c00[_0x7b9e('0x5c')][_0x7b9e('0x89')]);if(!_0x2411d1[_0x7b9e('0x94')]||!_0x4af72e[_0x7b9e('0x97')])return _0x4af72e;authService['validatePasswordHistory'](_0x4f0c00['body'][_0x7b9e('0x89')],_0x4af72e[_0x7b9e('0x97')],_0x2411d1['passwordHistoryLimit']);return _0x4af72e;})['then'](saveUpdates({'password':_0x4f0c00['body']['newPassword'],'passwordResetAt':_0x4f0c00[_0x7b9e('0x2c')]['id']==_0x4f0c00['params']['id']?moment():null,'previousPasswords':authService[_0x7b9e('0x98')](_0x4f0c00[_0x7b9e('0x5c')]['newPassword'],_0x4af72e[_0x7b9e('0x97')])},null));})[_0x7b9e('0x27')](respondWithResult(_0x49670f,null))[_0x7b9e('0x1b')](handleError(_0x49670f,null));};exports['addQueues']=function(_0x18a0a6,_0x799acb){var _0x128331=_0x18a0a6[_0x7b9e('0x5c')][_0x7b9e('0x99')];return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x18a0a6[_0x7b9e('0x4d')]['id']},'attributes':['id','name',_0x7b9e('0x29'),_0x7b9e('0x9a'),_0x7b9e('0x9b'),_0x7b9e('0x9c'),_0x7b9e('0x9d')]})['then'](handleEntityNotFound(_0x799acb,null))[_0x7b9e('0x27')](function(_0x530d43){if(_0x530d43){if(!utils[_0x7b9e('0x9e')](_0x128331)){throw new db[(_0x7b9e('0x8d'))]['ValidationError'](_0x7b9e('0x9f'));}return _0x530d43['add'+_[_0x7b9e('0xa0')](_0x128331[_0x7b9e('0xa1')]())+_0x7b9e('0xa2')](_0x18a0a6['body'][_0x7b9e('0x5f')],{'penalty':_0x18a0a6['body'][_0x7b9e('0xa3')]||0x0})[_0x7b9e('0xa4')](function(_0x177677){for(var _0x4bfb67=0x0;_0x4bfb67<_0x18a0a6[_0x7b9e('0x5c')]['ids'][_0x7b9e('0x55')];_0x4bfb67+=0x1){var _0x30b8ec={'UserId':Number(_0x18a0a6['params']['id'])};_0x30b8ec[_[_0x7b9e('0xa0')](_0x128331[_0x7b9e('0xa1')]())+_0x7b9e('0xa5')]=Number(_0x18a0a6[_0x7b9e('0x5c')][_0x7b9e('0x5f')][_0x4bfb67]);socket[_0x7b9e('0xa6')](_0x7b9e('0x2c')+_[_0x7b9e('0xa0')](_0x128331[_0x7b9e('0xa1')]())+_0x7b9e('0xa7'),_0x30b8ec);}return _0x177677;})[_0x7b9e('0x27')](function(){if(_0x128331==='voice'){return db[_0x7b9e('0xa8')]['findAll']({'where':{'id':_0x18a0a6[_0x7b9e('0x5c')]['ids']||[]},'raw':!![],'attributes':['id',_0x7b9e('0x36')]});}})[_0x7b9e('0x27')](function(_0x332829){var _0x376061=_0x530d43[_0x7b9e('0x28')]({'plain':!![]});var _0x67386e=[];if(_0x128331===_0x7b9e('0xa9')&&_0x376061[_0x7b9e('0x29')]===_0x7b9e('0x2e')&&_0x376061[_0x7b9e('0x9a')]){for(var _0x431a31=0x0;_0x431a31<_0x332829['length'];_0x431a31+=0x1){_0x67386e['push']({'membername':_0x376061['name'],'UserId':_0x376061['id'],'queue_name':_0x332829[_0x431a31][_0x7b9e('0x36')],'VoiceQueueId':_0x332829[_0x431a31]['id'],'interface':_[_0x7b9e('0x64')](_0x376061[_0x7b9e('0x9d')])?util[_0x7b9e('0xaa')](_0x7b9e('0xab'),_0x376061[_0x7b9e('0x36')]):_0x376061[_0x7b9e('0x9d')],'paused':_0x376061[_0x7b9e('0x9c')]||![],'penalty':_0x18a0a6[_0x7b9e('0x5c')][_0x7b9e('0xa3')]||0x0});}return BPromise[_0x7b9e('0xac')](_0x67386e,function(_0x54ae35){return db[_0x7b9e('0xad')][_0x7b9e('0xae')](_0x54ae35);});}return _0x530d43;});}})[_0x7b9e('0x27')](respondWithStatusCode(_0x799acb,null))[_0x7b9e('0x1b')](handleError(_0x799acb,null));};exports[_0x7b9e('0xaf')]=function(_0x4be6c2,_0x3e1740){var _0x5524a6;return db[_0x7b9e('0x39')]['find']({'where':{'id':_0x4be6c2['params']['id']},'attributes':['id','name',_0x7b9e('0x29')]})[_0x7b9e('0x27')](handleEntityNotFound(_0x3e1740,null))[_0x7b9e('0x27')](function(_0x73c07){if(_0x73c07){_0x5524a6=_0x73c07;if(!_0x4be6c2[_0x7b9e('0x3f')][_0x7b9e('0x99')]||!utils[_0x7b9e('0x9e')](_0x4be6c2[_0x7b9e('0x3f')]['channel'])){throw new db[(_0x7b9e('0x8d'))][(_0x7b9e('0x8a'))](_0x7b9e('0x9f'));}return _0x73c07['remove'+_[_0x7b9e('0xa0')](_0x4be6c2[_0x7b9e('0x3f')]['channel'][_0x7b9e('0xa1')]())+_0x7b9e('0xa2')](_0x4be6c2[_0x7b9e('0x3f')][_0x7b9e('0x5f')]);}})[_0x7b9e('0x27')](function(_0x39a1b4){if(_[_0x7b9e('0xb0')](_0x4be6c2['query'][_0x7b9e('0x5f')])){for(var _0x20ba6a=0x0;_0x20ba6a<_0x4be6c2['query']['ids']['length'];_0x20ba6a+=0x1){var _0x20a6fd={'UserId':Number(_0x4be6c2[_0x7b9e('0x4d')]['id'])};_0x20a6fd[_[_0x7b9e('0xa0')](_0x4be6c2[_0x7b9e('0x3f')]['channel'][_0x7b9e('0xa1')]())+_0x7b9e('0xa5')]=Number(_0x4be6c2[_0x7b9e('0x3f')][_0x7b9e('0x5f')][_0x20ba6a]);socket[_0x7b9e('0xa6')]('user'+_[_0x7b9e('0xa0')](_0x4be6c2['query'][_0x7b9e('0x99')][_0x7b9e('0xa1')]())+_0x7b9e('0xb1'),_0x20a6fd);}}else{var _0x20a6fd={'UserId':Number(_0x4be6c2[_0x7b9e('0x4d')]['id'])};_0x20a6fd[_['capitalize'](_0x4be6c2[_0x7b9e('0x3f')][_0x7b9e('0x99')]['toLowerCase']())+_0x7b9e('0xa5')]=Number(_0x4be6c2[_0x7b9e('0x3f')]['ids']);socket[_0x7b9e('0xa6')](_0x7b9e('0x2c')+_[_0x7b9e('0xa0')](_0x4be6c2[_0x7b9e('0x3f')][_0x7b9e('0x99')][_0x7b9e('0xa1')]())+_0x7b9e('0xb1'),_0x20a6fd);}return _0x39a1b4;})[_0x7b9e('0x27')](function(){if(_0x4be6c2['query']['channel']===_0x7b9e('0xa9')){return db[_0x7b9e('0xad')][_0x7b9e('0x26')]({'where':{'UserId':_0x4be6c2[_0x7b9e('0x4d')]['id'],'VoiceQueueId':_0x4be6c2[_0x7b9e('0x3f')]['ids']},'individualHooks':!![]})[_0x7b9e('0x27')](function(){return _0x5524a6;});}return _0x5524a6;})[_0x7b9e('0x27')](respondWithStatusCode(_0x3e1740,null))[_0x7b9e('0x1b')](handleError(_0x3e1740,null));};exports[_0x7b9e('0xb2')]=function(_0x3570fb,_0x19ff71){_0x3570fb[_0x7b9e('0x5c')][_0x7b9e('0xb3')]=_0x3570fb[_0x7b9e('0xb4')][_0x7b9e('0xb5')];return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x3570fb[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x19ff71,null))[_0x7b9e('0x27')](saveUpdates(_0x3570fb[_0x7b9e('0x5c')],null))[_0x7b9e('0x27')](respondWithResult(_0x19ff71,null))[_0x7b9e('0x1b')](handleError(_0x19ff71,null));};exports[_0x7b9e('0xb6')]=function(_0x5e2654,_0x2f3aa2){var _0x3851af=path[_0x7b9e('0xb7')](config[_0x7b9e('0xb8')],_0x7b9e('0xb9'));return db['User'][_0x7b9e('0x35')]({'where':{'id':_0x5e2654[_0x7b9e('0x4d')]['id']},'attributes':['id',_0x7b9e('0xb3')],'raw':!![]})[_0x7b9e('0x27')](handleEntityNotFound(_0x2f3aa2,null))[_0x7b9e('0x27')](function(_0x37e63d){if(_0x37e63d){if(_[_0x7b9e('0x64')](_0x37e63d[_0x7b9e('0xb3')])){return _0x2f3aa2['download'](_0x3851af);}else{if(!fs[_0x7b9e('0xba')](path['join'](config[_0x7b9e('0xb8')],'server/files/images/',_0x37e63d['userpic']))){return _0x2f3aa2[_0x7b9e('0xbb')](_0x3851af);}return _0x2f3aa2[_0x7b9e('0xbb')](path[_0x7b9e('0xb7')](config[_0x7b9e('0xb8')],_0x7b9e('0xbc'),_0x37e63d[_0x7b9e('0xb3')]));}}})[_0x7b9e('0x1b')](handleError(_0x2f3aa2,null));};exports['getOpenTabs']=function(_0x136caa,_0x10b9cd){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x136caa[_0x7b9e('0x4d')]['id']},'attributes':['id']})[_0x7b9e('0x27')](handleEntityNotFound(_0x10b9cd,null))[_0x7b9e('0x27')](function(_0x199776){var _0xcc15ad=[];values=_0x199776[_0x7b9e('0x46')];_0xcc15ad[_0x7b9e('0x42')](get_open_tabs(_0x7b9e('0x5a'),_0x199776[_0x7b9e('0x46')]));_0xcc15ad['push'](get_open_tabs('sms',_0x199776[_0x7b9e('0x46')]));_0xcc15ad[_0x7b9e('0x42')](get_open_tabs(_0x7b9e('0x49'),_0x199776[_0x7b9e('0x46')]));_0xcc15ad[_0x7b9e('0x42')](get_open_tabs(_0x7b9e('0x4a'),_0x199776['dataValues']));_0xcc15ad['push'](get_open_tabs(_0x7b9e('0x47'),_0x199776[_0x7b9e('0x46')]));_0xcc15ad[_0x7b9e('0x42')](get_open_tabs(_0x7b9e('0x48'),_0x199776[_0x7b9e('0x46')]));return BPromise['all'](_0xcc15ad);})['then'](function(_0x2a5f0a){var _0x502f97=[];if(_0x2a5f0a){for(var _0x31e425=0x0;_0x31e425<values[_0x7b9e('0xbd')][_0x7b9e('0x55')];_0x31e425++){var _0x1bc04e=values[_0x7b9e('0xbd')][_0x31e425];_0x502f97['push']({'channel':_0x7b9e('0xbe'),'id':_0x1bc04e['id'],'createdAt':_0x1bc04e[_0x7b9e('0xbf')]});}for(var _0x31e425=0x0;_0x31e425<values['FaxOpenTabs'][_0x7b9e('0x55')];_0x31e425++){var _0x1bc04e=values['FaxOpenTabs'][_0x31e425];_0x502f97[_0x7b9e('0x42')]({'channel':_0x7b9e('0xc0'),'id':_0x1bc04e['id'],'createdAt':_0x1bc04e[_0x7b9e('0xbf')]});}for(var _0x31e425=0x0;_0x31e425<values[_0x7b9e('0xc1')][_0x7b9e('0x55')];_0x31e425++){var _0x1bc04e=values[_0x7b9e('0xc1')][_0x31e425];_0x502f97[_0x7b9e('0x42')]({'channel':_0x7b9e('0xc2'),'id':_0x1bc04e['id'],'createdAt':_0x1bc04e[_0x7b9e('0xbf')]});}for(var _0x31e425=0x0;_0x31e425<values['MailOpenTabs']['length'];_0x31e425++){var _0x1bc04e=values['MailOpenTabs'][_0x31e425];_0x502f97[_0x7b9e('0x42')]({'channel':_0x7b9e('0xc3'),'id':_0x1bc04e['id'],'createdAt':_0x1bc04e[_0x7b9e('0xbf')]});}for(var _0x31e425=0x0;_0x31e425<values[_0x7b9e('0xc4')][_0x7b9e('0x55')];_0x31e425++){var _0x1bc04e=values['SmsOpenTabs'][_0x31e425];_0x502f97['push']({'channel':_0x7b9e('0xc5'),'id':_0x1bc04e['id'],'createdAt':_0x1bc04e[_0x7b9e('0xbf')]});}for(var _0x31e425=0x0;_0x31e425<values[_0x7b9e('0xc6')][_0x7b9e('0x55')];_0x31e425++){var _0x1bc04e=values[_0x7b9e('0xc6')][_0x31e425];_0x502f97[_0x7b9e('0x42')]({'channel':_0x7b9e('0xc7'),'id':_0x1bc04e['id'],'createdAt':_0x1bc04e[_0x7b9e('0xbf')]});}var _0x5f5466={'count':_0x502f97[_0x7b9e('0x55')],'rows':_0x502f97};return _0x5f5466;}else return null;})['then'](respondWithResult(_0x10b9cd,null))[_0x7b9e('0x1b')](handleError(_0x10b9cd,null));};exports[_0x7b9e('0xc8')]=function(_0x9d5e3c,_0x511c44){var _0x1a3ce1={};var _0x1153d9={};var _0x44f9d4;var _0xab1737;return db['User']['findOne']({'where':{'id':_0x9d5e3c['params']['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x511c44,null))[_0x7b9e('0x27')](function(_0x23e562){if(_0x23e562){_0x44f9d4=_0x23e562;_0x1153d9[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db['CmContact']['rawAttributes']);_0x1153d9[_0x7b9e('0x3f')]=_['keys'](_0x9d5e3c['query']);_0x1153d9[_0x7b9e('0x52')]=_['intersection'](_0x1153d9[_0x7b9e('0x4e')],_0x1153d9[_0x7b9e('0x3f')]);_0x1a3ce1[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x1153d9['model'],qs[_0x7b9e('0x54')](_0x9d5e3c[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x1a3ce1[_0x7b9e('0x41')]=_0x1a3ce1[_0x7b9e('0x41')]['length']?_0x1a3ce1[_0x7b9e('0x41')]:_0x1153d9[_0x7b9e('0x4e')];_0x1a3ce1[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x9d5e3c[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x1a3ce1['where']=qs[_0x7b9e('0x52')](_[_0x7b9e('0xcb')](_0x9d5e3c[_0x7b9e('0x3f')],_0x1153d9[_0x7b9e('0x52')]));if(_0x9d5e3c[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x1a3ce1[_0x7b9e('0xcc')]=_['merge'](_0x1a3ce1[_0x7b9e('0xcc')],{'$or':_[_0x7b9e('0x32')](_0x1a3ce1[_0x7b9e('0x41')],function(_0x1019f6){var _0x2bdf28={};_0x2bdf28[_0x1019f6]={'$like':'%'+_0x9d5e3c[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x2bdf28;})});}_0x1a3ce1=_[_0x7b9e('0x57')]({},_0x1a3ce1,_0x9d5e3c['options']);return _0x44f9d4[_0x7b9e('0xc8')](_0x1a3ce1);}})[_0x7b9e('0x27')](function(_0x477679){if(_0x477679){_0xab1737=_0x477679['length'];if(_0x9d5e3c['query']['hasOwnProperty']('includeAll')){_0x1a3ce1[_0x7b9e('0x40')]=[{'model':db[_0x7b9e('0xcd')],'as':_0x7b9e('0xce'),'required':![]},{'model':db[_0x7b9e('0xcf')],'as':_0x7b9e('0xd0'),'attributes':['id','name',_0x7b9e('0xd1')],'where':_0x9d5e3c['query'][_0x7b9e('0xd2')]?{'id':_0x9d5e3c[_0x7b9e('0x3f')][_0x7b9e('0xd2')]}:undefined,'required':_0x9d5e3c[_0x7b9e('0x3f')][_0x7b9e('0xd2')]?!![]:![]}];}if(!_0x9d5e3c[_0x7b9e('0x3f')][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x1a3ce1[_0x7b9e('0x21')]=qs[_0x7b9e('0x21')](_0x9d5e3c['query'][_0x7b9e('0x21')]);_0x1a3ce1[_0x7b9e('0x1f')]=qs['offset'](_0x9d5e3c[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}return _0x44f9d4['getContacts'](_0x1a3ce1);}})[_0x7b9e('0x27')](function(_0xf4b78){if(_0xf4b78){return _0xf4b78?{'count':_0xab1737,'rows':_0xf4b78}:null;}})['then'](respondWithResult(_0x511c44,null))[_0x7b9e('0x1b')](handleError(_0x511c44,null));};exports['getQueues']=function(_0x3a8e92,_0x2d3dbb){var _0x42e28c;var _0x39c8fc;var _0x4ab4c0={};var _0x32d689;return db[_0x7b9e('0x39')]['findOne']({'where':{'id':_0x3a8e92[_0x7b9e('0x4d')]['id']},'attributes':['id',_0x7b9e('0x36'),_0x7b9e('0x29')]})[_0x7b9e('0x27')](handleEntityNotFound(_0x2d3dbb,null))[_0x7b9e('0x27')](function(_0x31ddfc){if(!utils[_0x7b9e('0x9e')](_0x3a8e92['query']['channel'])){throw new db[(_0x7b9e('0x8d'))][(_0x7b9e('0x8a'))](_0x7b9e('0x9f'));}_0x42e28c=_0x31ddfc;var _0x362f1e={};_0x362f1e[_0x7b9e('0x4e')]=_['keys'](db[_[_0x7b9e('0xa0')](_0x3a8e92[_0x7b9e('0x3f')][_0x7b9e('0x99')])+'Queue'][_0x7b9e('0x3a')]);_0x362f1e[_0x7b9e('0x3f')]=_[_0x7b9e('0x50')](_0x3a8e92[_0x7b9e('0x3f')]);_0x362f1e[_0x7b9e('0x52')]=_['intersection'](_0x362f1e[_0x7b9e('0x4e')],_0x362f1e[_0x7b9e('0x3f')]);_0x4ab4c0[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x362f1e['model'],qs['fields'](_0x3a8e92[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x4ab4c0[_0x7b9e('0x41')]=_0x4ab4c0[_0x7b9e('0x41')]['length']?_0x4ab4c0[_0x7b9e('0x41')]:_0x362f1e[_0x7b9e('0x4e')];_0x4ab4c0[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x3a8e92[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x4ab4c0[_0x7b9e('0xcc')]=qs[_0x7b9e('0x52')](_['pick'](_0x3a8e92[_0x7b9e('0x3f')],_0x362f1e[_0x7b9e('0x52')]));if(_0x3a8e92[_0x7b9e('0x3f')]['filter']){_0x4ab4c0[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x4ab4c0[_0x7b9e('0xcc')],{'$or':_[_0x7b9e('0x32')](_0x4ab4c0[_0x7b9e('0x41')],function(_0x1abb27){var _0x3ad102={};_0x3ad102[_0x1abb27]={'$like':'%'+_0x3a8e92[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x3ad102;})});}_0x4ab4c0=_['merge']({},_0x4ab4c0,_0x3a8e92['options']);switch(_0x42e28c[_0x7b9e('0x29')]){case _0x7b9e('0x2a'):return db[_[_0x7b9e('0xa0')](_0x3a8e92[_0x7b9e('0x3f')][_0x7b9e('0x99')])+_0x7b9e('0xd5')][_0x7b9e('0x43')](_0x4ab4c0);case _0x7b9e('0x2c'):case _0x7b9e('0x2e'):return _0x42e28c[_0x7b9e('0x28')+_[_0x7b9e('0xa0')](_0x3a8e92[_0x7b9e('0x3f')][_0x7b9e('0x99')])+_0x7b9e('0xa2')](_0x4ab4c0);default:throw new db[(_0x7b9e('0x8d'))]['ValidationError'](_0x7b9e('0xd6'));}})['then'](function(_0x32fbf3){_0x32d689=_0x32fbf3[_0x7b9e('0x55')];if(!_0x3a8e92[_0x7b9e('0x3f')][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x4ab4c0[_0x7b9e('0x21')]=qs[_0x7b9e('0x21')](_0x3a8e92[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x4ab4c0[_0x7b9e('0x1f')]=qs['offset'](_0x3a8e92[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}switch(_0x42e28c[_0x7b9e('0x29')]){case'admin':return db[_[_0x7b9e('0xa0')](_0x3a8e92[_0x7b9e('0x3f')][_0x7b9e('0x99')])+_0x7b9e('0xd5')]['findAll'](_0x4ab4c0);case _0x7b9e('0x2c'):case _0x7b9e('0x2e'):return _0x42e28c[_0x7b9e('0x28')+_[_0x7b9e('0xa0')](_0x3a8e92[_0x7b9e('0x3f')]['channel'])+'Queues'](_0x4ab4c0);}})['then'](function(_0x16cf74){return{'count':_0x32d689,'rows':_0x16cf74};})['then'](respondWithResult(_0x2d3dbb,null))['catch'](handleError(_0x2d3dbb,null));};exports[_0x7b9e('0xd7')]=function(_0x53dcec,_0x1c78d3){var _0x5cd55a={};var _0x576ba2={};var _0x4700b8;var _0x4dc763;return db['User'][_0x7b9e('0x92')]({'where':{'id':_0x53dcec[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x1c78d3,null))[_0x7b9e('0x27')](function(_0x1446f7){if(_0x1446f7){_0x4700b8=_0x1446f7;_0x576ba2[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db['UserVoiceQueueRt'][_0x7b9e('0x3a')]);_0x576ba2[_0x7b9e('0x3f')]=_[_0x7b9e('0x50')](_0x53dcec[_0x7b9e('0x3f')]);_0x576ba2[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x576ba2['model'],_0x576ba2[_0x7b9e('0x3f')]);_0x5cd55a[_0x7b9e('0x41')]=_['intersection'](_0x576ba2[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x53dcec[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x5cd55a[_0x7b9e('0x41')]=_0x5cd55a[_0x7b9e('0x41')]['length']?_0x5cd55a[_0x7b9e('0x41')]:_0x576ba2['model'];_0x5cd55a[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x53dcec[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x5cd55a[_0x7b9e('0xcc')]=qs[_0x7b9e('0x52')](_['pick'](_0x53dcec[_0x7b9e('0x3f')],_0x576ba2[_0x7b9e('0x52')]));if(_0x53dcec['query']['filter']){_0x5cd55a[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x5cd55a['where'],{'$or':_[_0x7b9e('0x32')](_0x5cd55a['attributes'],function(_0x4fb4cc){var _0xa7476b={};_0xa7476b[_0x4fb4cc]={'$like':'%'+_0x53dcec[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0xa7476b;})});}_0x5cd55a=_['merge']({},_0x5cd55a,_0x53dcec[_0x7b9e('0x58')]);return _0x4700b8[_0x7b9e('0xd7')](_0x5cd55a);}})['then'](function(_0x26d963){if(_0x26d963){_0x4dc763=_0x26d963[_0x7b9e('0x55')];if(!_0x53dcec[_0x7b9e('0x3f')][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x5cd55a[_0x7b9e('0x21')]=qs[_0x7b9e('0x21')](_0x53dcec[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x5cd55a[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x53dcec[_0x7b9e('0x3f')]['offset']);}return _0x4700b8['getVoiceQueuesRt'](_0x5cd55a);}})[_0x7b9e('0x27')](function(_0x49884c){if(_0x49884c){return _0x49884c?{'count':_0x4dc763,'rows':_0x49884c}:null;}})['then'](respondWithResult(_0x1c78d3,null))[_0x7b9e('0x1b')](handleError(_0x1c78d3,null));};exports[_0x7b9e('0xd8')]=function(_0x10f7c3,_0x3c5ba6){var _0x3c5534={};var _0x2f1361={};var _0x3e4b6f;var _0x431303;return db[_0x7b9e('0x39')]['findOne']({'where':{'id':_0x10f7c3[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x3c5ba6,null))[_0x7b9e('0x27')](function(_0x174d85){if(_0x174d85){_0x3e4b6f=_0x174d85;_0x2f1361[_0x7b9e('0x4e')]=_['keys'](db[_0x7b9e('0xd9')][_0x7b9e('0x3a')]);_0x2f1361[_0x7b9e('0x3f')]=_[_0x7b9e('0x50')](_0x10f7c3[_0x7b9e('0x3f')]);_0x2f1361['filters']=_[_0x7b9e('0x53')](_0x2f1361[_0x7b9e('0x4e')],_0x2f1361[_0x7b9e('0x3f')]);_0x3c5534[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x2f1361[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x10f7c3['query']['fields']));_0x3c5534[_0x7b9e('0x41')]=_0x3c5534[_0x7b9e('0x41')][_0x7b9e('0x55')]?_0x3c5534['attributes']:_0x2f1361[_0x7b9e('0x4e')];_0x3c5534[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x10f7c3[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x3c5534['where']=qs['filters'](_[_0x7b9e('0xcb')](_0x10f7c3['query'],_0x2f1361['filters']));if(_0x10f7c3[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x3c5534['where']=_[_0x7b9e('0x57')](_0x3c5534['where'],{'$or':_[_0x7b9e('0x32')](_0x3c5534['attributes'],function(_0x2a6ee9){var _0x1be216={};_0x1be216[_0x2a6ee9]={'$like':'%'+_0x10f7c3[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x1be216;})});}_0x3c5534=_[_0x7b9e('0x57')]({},_0x3c5534,_0x10f7c3[_0x7b9e('0x58')]);return _0x3e4b6f[_0x7b9e('0xd8')](_0x3c5534);}})['then'](function(_0xa831be){if(_0xa831be){_0x431303=_0xa831be[_0x7b9e('0x55')];if(!_0x10f7c3[_0x7b9e('0x3f')][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x3c5534[_0x7b9e('0x21')]=qs[_0x7b9e('0x21')](_0x10f7c3[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x3c5534['offset']=qs[_0x7b9e('0x1f')](_0x10f7c3[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}return _0x3e4b6f[_0x7b9e('0xd8')](_0x3c5534);}})[_0x7b9e('0x27')](function(_0x500458){if(_0x500458){return _0x500458?{'count':_0x431303,'rows':_0x500458}:null;}})[_0x7b9e('0x27')](respondWithResult(_0x3c5ba6,null))[_0x7b9e('0x1b')](handleError(_0x3c5ba6,null));};exports['getRecordings']=function(_0x44119b,_0x1aff4b){var _0x8c0f17={'raw':!![],'where':{}};var _0x1e8d3f={};var _0xe0f0ef={'count':0x0,'rows':[]};return db[_0x7b9e('0x39')]['findOne']({'where':{'id':_0x44119b[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x1aff4b,null))['then'](function(_0x3f0682){if(_0x3f0682){_0x1e8d3f['model']=_[_0x7b9e('0x50')](db[_0x7b9e('0xda')][_0x7b9e('0x3a')]);_0x1e8d3f[_0x7b9e('0x3f')]=_[_0x7b9e('0x50')](_0x44119b[_0x7b9e('0x3f')]);_0x1e8d3f['filters']=_['intersection'](_0x1e8d3f[_0x7b9e('0x4e')],_0x1e8d3f[_0x7b9e('0x3f')]);_0x8c0f17[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x1e8d3f[_0x7b9e('0x4e')],qs['fields'](_0x44119b[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x8c0f17[_0x7b9e('0x41')]=_0x8c0f17[_0x7b9e('0x41')]['length']?_0x8c0f17[_0x7b9e('0x41')]:_0x1e8d3f[_0x7b9e('0x4e')];if(!_0x44119b[_0x7b9e('0x3f')][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x8c0f17['limit']=qs[_0x7b9e('0x21')](_0x44119b['query']['limit']);_0x8c0f17[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x44119b[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}_0x8c0f17[_0x7b9e('0xc9')]=qs['sort'](_0x44119b[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x8c0f17[_0x7b9e('0xcc')]=qs[_0x7b9e('0x52')](_['pick'](_0x44119b[_0x7b9e('0x3f')],_0x1e8d3f[_0x7b9e('0x52')]));_0x8c0f17[_0x7b9e('0xcc')]['UserId']=_0x3f0682['id'];if(_0x44119b[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x8c0f17[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x8c0f17[_0x7b9e('0xcc')],{'$or':_['map'](_0x8c0f17[_0x7b9e('0x41')],function(_0x9d70c8){var _0x5a563e={};_0x5a563e[_0x9d70c8]={'$like':'%'+_0x44119b[_0x7b9e('0x3f')]['filter']+'%'};return _0x5a563e;})});}_0x8c0f17=_[_0x7b9e('0x57')]({},_0x8c0f17,_0x44119b[_0x7b9e('0x58')]);return db[_0x7b9e('0xda')][_0x7b9e('0x22')]({'where':_0x8c0f17[_0x7b9e('0xcc')]})[_0x7b9e('0x27')](function(_0xe292f8){_0xe0f0ef['count']=_0xe292f8;if(_0x44119b['query'][_0x7b9e('0x56')]){_0x8c0f17[_0x7b9e('0x40')]=[{'all':!![]}];}return db[_0x7b9e('0xda')]['findAll'](_0x8c0f17);})[_0x7b9e('0x27')](function(_0x4cdace){_0xe0f0ef[_0x7b9e('0x44')]=_0x4cdace;return _0xe0f0ef;});}})[_0x7b9e('0x27')](respondWithFilteredResult(_0x1aff4b,_0x8c0f17))['catch'](handleError(_0x1aff4b,null));};exports['getScreenRecordings']=function(_0x2c6b4d,_0x4a3b05){var _0x1349bc={'raw':!![],'where':{}};var _0x551202={};var _0x3800a2={'count':0x0,'rows':[]};return db[_0x7b9e('0x39')]['findOne']({'where':{'id':_0x2c6b4d['params']['id']}})['then'](handleEntityNotFound(_0x4a3b05,null))['then'](function(_0x5a1df6){if(_0x5a1df6){_0x551202[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db[_0x7b9e('0xdb')]['rawAttributes']);_0x551202[_0x7b9e('0x3f')]=_['keys'](_0x2c6b4d[_0x7b9e('0x3f')]);_0x551202['filters']=_[_0x7b9e('0x53')](_0x551202[_0x7b9e('0x4e')],_0x551202[_0x7b9e('0x3f')]);_0x1349bc[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x551202[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x2c6b4d[_0x7b9e('0x3f')]['fields']));_0x1349bc[_0x7b9e('0x41')]=_0x1349bc[_0x7b9e('0x41')][_0x7b9e('0x55')]?_0x1349bc['attributes']:_0x551202[_0x7b9e('0x4e')];if(!_0x2c6b4d[_0x7b9e('0x3f')]['hasOwnProperty']('nolimit')){_0x1349bc[_0x7b9e('0x21')]=qs[_0x7b9e('0x21')](_0x2c6b4d[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x1349bc[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x2c6b4d[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}_0x1349bc[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x2c6b4d[_0x7b9e('0x3f')]['sort']);_0x1349bc[_0x7b9e('0xcc')]=qs[_0x7b9e('0x52')](_[_0x7b9e('0xcb')](_0x2c6b4d[_0x7b9e('0x3f')],_0x551202['filters']));_0x1349bc[_0x7b9e('0xcc')]['UserId']=_0x5a1df6['id'];if(_0x2c6b4d[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x1349bc[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x1349bc[_0x7b9e('0xcc')],{'$or':_[_0x7b9e('0x32')](_0x1349bc[_0x7b9e('0x41')],function(_0x50ba83){var _0x573811={};_0x573811[_0x50ba83]={'$like':'%'+_0x2c6b4d[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x573811;})});}_0x1349bc=_[_0x7b9e('0x57')]({},_0x1349bc,_0x2c6b4d[_0x7b9e('0x58')]);return db[_0x7b9e('0xdb')][_0x7b9e('0x22')]({'where':_0x1349bc['where']})[_0x7b9e('0x27')](function(_0x31ac8f){_0x3800a2[_0x7b9e('0x22')]=_0x31ac8f;if(_0x2c6b4d['query']['includeAll']){_0x1349bc[_0x7b9e('0x40')]=[{'all':!![]}];}return db['ScreenRecording'][_0x7b9e('0x43')](_0x1349bc);})[_0x7b9e('0x27')](function(_0x4bf5b2){_0x3800a2[_0x7b9e('0x44')]=_0x4bf5b2;return _0x3800a2;});}})[_0x7b9e('0x27')](respondWithFilteredResult(_0x4a3b05,_0x1349bc))['catch'](handleError(_0x4a3b05,null));};exports[_0x7b9e('0xdc')]=function(_0x3c3020,_0x39fcbe){var _0x2db7e3={};var _0x2d03e0={};var _0x161a18;var _0x2daa08;return db[_0x7b9e('0x39')][_0x7b9e('0x92')]({'where':{'id':_0x3c3020['params']['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x39fcbe,null))[_0x7b9e('0x27')](function(_0x357744){if(_0x357744){_0x161a18=_0x357744;_0x2d03e0[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db['ChatInteraction']['rawAttributes']);_0x2d03e0[_0x7b9e('0x3f')]=_[_0x7b9e('0x50')](_0x3c3020[_0x7b9e('0x3f')]);_0x2d03e0[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x2d03e0['model'],_0x2d03e0[_0x7b9e('0x3f')]);_0x2db7e3[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x2d03e0[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x3c3020[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x2db7e3[_0x7b9e('0x41')]=_0x2db7e3[_0x7b9e('0x41')]['length']?_0x2db7e3[_0x7b9e('0x41')]:_0x2d03e0[_0x7b9e('0x4e')];_0x2db7e3[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x3c3020['query'][_0x7b9e('0xca')]);_0x2db7e3[_0x7b9e('0xcc')]=qs[_0x7b9e('0x52')](_[_0x7b9e('0xcb')](_0x3c3020[_0x7b9e('0x3f')],_0x2d03e0[_0x7b9e('0x52')]));if(_0x3c3020[_0x7b9e('0x3f')]['filter']){_0x2db7e3['where']=_[_0x7b9e('0x57')](_0x2db7e3[_0x7b9e('0xcc')],{'$or':_['map'](_0x2db7e3[_0x7b9e('0x41')],function(_0x50737d){var _0x59e752={};_0x59e752[_0x50737d]={'$like':'%'+_0x3c3020['query']['filter']+'%'};return _0x59e752;})});}_0x2db7e3=_[_0x7b9e('0x57')]({},_0x2db7e3,_0x3c3020['options']);return _0x161a18[_0x7b9e('0xdc')](_0x2db7e3);}})[_0x7b9e('0x27')](function(_0x448cc8){if(_0x448cc8){_0x2daa08=_0x448cc8[_0x7b9e('0x55')];if(!_0x3c3020['query'][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x2db7e3[_0x7b9e('0x21')]=qs[_0x7b9e('0x21')](_0x3c3020[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x2db7e3[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x3c3020[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}return _0x161a18[_0x7b9e('0xdc')](_0x2db7e3);}})['then'](function(_0x13edb7){if(_0x13edb7){return _0x13edb7?{'count':_0x2daa08,'rows':_0x13edb7}:null;}})[_0x7b9e('0x27')](respondWithResult(_0x39fcbe,null))['catch'](handleError(_0x39fcbe,null));};exports[_0x7b9e('0xdd')]=function(_0x535ea8,_0x42fe2a){var _0x1e54c7={};var _0x25ae75={};var _0x3a5b57;var _0x324e75;return db[_0x7b9e('0x39')]['findOne']({'where':{'id':_0x535ea8[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x42fe2a,null))['then'](function(_0x24458b){if(_0x24458b){_0x3a5b57=_0x24458b;_0x25ae75['model']=_['keys'](db[_0x7b9e('0xde')][_0x7b9e('0x3a')]);_0x25ae75[_0x7b9e('0x3f')]=_['keys'](_0x535ea8[_0x7b9e('0x3f')]);_0x25ae75[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x25ae75[_0x7b9e('0x4e')],_0x25ae75['query']);_0x1e54c7[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x25ae75[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x535ea8[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x1e54c7[_0x7b9e('0x41')]=_0x1e54c7[_0x7b9e('0x41')][_0x7b9e('0x55')]?_0x1e54c7[_0x7b9e('0x41')]:_0x25ae75['model'];_0x1e54c7[_0x7b9e('0xc9')]=qs['sort'](_0x535ea8['query'][_0x7b9e('0xca')]);_0x1e54c7[_0x7b9e('0xcc')]=qs[_0x7b9e('0x52')](_[_0x7b9e('0xcb')](_0x535ea8[_0x7b9e('0x3f')],_0x25ae75['filters']));if(_0x535ea8[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x1e54c7[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x1e54c7['where'],{'$or':_[_0x7b9e('0x32')](_0x1e54c7[_0x7b9e('0x41')],function(_0x4a701a){var _0x5424ab={};_0x5424ab[_0x4a701a]={'$like':'%'+_0x535ea8[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x5424ab;})});}_0x1e54c7=_[_0x7b9e('0x57')]({},_0x1e54c7,_0x535ea8[_0x7b9e('0x58')]);return _0x3a5b57[_0x7b9e('0xdd')](_0x1e54c7);}})[_0x7b9e('0x27')](function(_0xd256c0){if(_0xd256c0){_0x324e75=_0xd256c0['length'];if(!_0x535ea8[_0x7b9e('0x3f')]['hasOwnProperty'](_0x7b9e('0xd4'))){_0x1e54c7['limit']=qs[_0x7b9e('0x21')](_0x535ea8[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x1e54c7[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x535ea8[_0x7b9e('0x3f')]['offset']);}return _0x3a5b57[_0x7b9e('0xdd')](_0x1e54c7);}})[_0x7b9e('0x27')](function(_0x4d20f7){if(_0x4d20f7){return _0x4d20f7?{'count':_0x324e75,'rows':_0x4d20f7}:null;}})['then'](respondWithResult(_0x42fe2a,null))[_0x7b9e('0x1b')](handleError(_0x42fe2a,null));};exports[_0x7b9e('0xdf')]=function(_0x17c313,_0x1c61e1){var _0x36f0ac={'raw':!![],'where':{}};var _0x16d4e7={};var _0x12b052={'count':0x0,'rows':[]};return db[_0x7b9e('0x39')][_0x7b9e('0x92')]({'where':{'id':_0x17c313[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x1c61e1,null))['then'](function(_0x44d065){if(_0x44d065){_0x16d4e7['model']=_[_0x7b9e('0x50')](db[_0x7b9e('0xe0')]['rawAttributes']);_0x16d4e7['query']=_[_0x7b9e('0x50')](_0x17c313['query']);_0x16d4e7['filters']=_[_0x7b9e('0x53')](_0x16d4e7['model'],_0x16d4e7[_0x7b9e('0x3f')]);_0x36f0ac['attributes']=_[_0x7b9e('0x53')](_0x16d4e7['model'],qs['fields'](_0x17c313[_0x7b9e('0x3f')]['fields']));_0x36f0ac['attributes']=_0x36f0ac['attributes'][_0x7b9e('0x55')]?_0x36f0ac[_0x7b9e('0x41')]:_0x16d4e7[_0x7b9e('0x4e')];if(!_0x17c313['query']['hasOwnProperty'](_0x7b9e('0xd4'))){_0x36f0ac[_0x7b9e('0x21')]=qs[_0x7b9e('0x21')](_0x17c313[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x36f0ac[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x17c313[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}_0x36f0ac['order']=qs[_0x7b9e('0xca')](_0x17c313[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x36f0ac[_0x7b9e('0xcc')]=qs['filters'](_['pick'](_0x17c313[_0x7b9e('0x3f')],_0x16d4e7[_0x7b9e('0x52')]));_0x36f0ac['where'][_0x7b9e('0xe1')]=_0x44d065['id'];if(_0x17c313[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x36f0ac[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x36f0ac[_0x7b9e('0xcc')],{'$or':_[_0x7b9e('0x32')](_0x36f0ac[_0x7b9e('0x41')],function(_0x3af2e9){var _0xe33f7d={};_0xe33f7d[_0x3af2e9]={'$like':'%'+_0x17c313['query'][_0x7b9e('0x30')]+'%'};return _0xe33f7d;})});}_0x36f0ac=_[_0x7b9e('0x57')]({},_0x36f0ac,_0x17c313[_0x7b9e('0x58')]);return db['MailInteraction']['count']({'where':_0x36f0ac[_0x7b9e('0xcc')]})['then'](function(_0x171503){_0x12b052[_0x7b9e('0x22')]=_0x171503;if(_0x17c313[_0x7b9e('0x3f')]['includeAll']){_0x36f0ac[_0x7b9e('0x40')]=[{'all':!![]}];}return db['MailInteraction'][_0x7b9e('0x43')](_0x36f0ac);})[_0x7b9e('0x27')](function(_0x4bf38e){_0x12b052[_0x7b9e('0x44')]=_0x4bf38e;return _0x12b052;});}})[_0x7b9e('0x27')](respondWithFilteredResult(_0x1c61e1,_0x36f0ac))[_0x7b9e('0x1b')](handleError(_0x1c61e1,null));};exports[_0x7b9e('0xe2')]=function(_0x5a57d1,_0xbe1356){var _0x3cef0d={};var _0x4d4f91={};var _0x40f393;var _0x5c21d7;return db[_0x7b9e('0x39')][_0x7b9e('0x92')]({'where':{'id':_0x5a57d1[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0xbe1356,null))[_0x7b9e('0x27')](function(_0x1144f8){if(_0x1144f8){_0x40f393=_0x1144f8;_0x4d4f91[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db['SmsInteraction'][_0x7b9e('0x3a')]);_0x4d4f91[_0x7b9e('0x3f')]=_[_0x7b9e('0x50')](_0x5a57d1[_0x7b9e('0x3f')]);_0x4d4f91['filters']=_[_0x7b9e('0x53')](_0x4d4f91[_0x7b9e('0x4e')],_0x4d4f91[_0x7b9e('0x3f')]);_0x3cef0d['attributes']=_['intersection'](_0x4d4f91[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x5a57d1['query'][_0x7b9e('0x54')]));_0x3cef0d[_0x7b9e('0x41')]=_0x3cef0d[_0x7b9e('0x41')]['length']?_0x3cef0d[_0x7b9e('0x41')]:_0x4d4f91[_0x7b9e('0x4e')];_0x3cef0d[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x5a57d1[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x3cef0d[_0x7b9e('0xcc')]=qs[_0x7b9e('0x52')](_[_0x7b9e('0xcb')](_0x5a57d1[_0x7b9e('0x3f')],_0x4d4f91[_0x7b9e('0x52')]));if(_0x5a57d1[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x3cef0d[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x3cef0d['where'],{'$or':_[_0x7b9e('0x32')](_0x3cef0d[_0x7b9e('0x41')],function(_0x490cf8){var _0x215d9f={};_0x215d9f[_0x490cf8]={'$like':'%'+_0x5a57d1[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x215d9f;})});}_0x3cef0d=_[_0x7b9e('0x57')]({},_0x3cef0d,_0x5a57d1[_0x7b9e('0x58')]);return _0x40f393['getSmsInteractions'](_0x3cef0d);}})[_0x7b9e('0x27')](function(_0x1a7dba){if(_0x1a7dba){_0x5c21d7=_0x1a7dba[_0x7b9e('0x55')];if(!_0x5a57d1[_0x7b9e('0x3f')][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x3cef0d['limit']=qs[_0x7b9e('0x21')](_0x5a57d1[_0x7b9e('0x3f')]['limit']);_0x3cef0d[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x5a57d1[_0x7b9e('0x3f')]['offset']);}return _0x40f393[_0x7b9e('0xe2')](_0x3cef0d);}})[_0x7b9e('0x27')](function(_0x10dd3c){if(_0x10dd3c){return _0x10dd3c?{'count':_0x5c21d7,'rows':_0x10dd3c}:null;}})[_0x7b9e('0x27')](respondWithResult(_0xbe1356,null))[_0x7b9e('0x1b')](handleError(_0xbe1356,null));};exports['getFaxInteractions']=function(_0x2398db,_0x251f3d){var _0x2ac75b={};var _0x1c739b={};var _0x5ba058;var _0x27566d;return db[_0x7b9e('0x39')][_0x7b9e('0x92')]({'where':{'id':_0x2398db[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x251f3d,null))[_0x7b9e('0x27')](function(_0x3a20be){if(_0x3a20be){_0x5ba058=_0x3a20be;_0x1c739b['model']=_['keys'](db[_0x7b9e('0xe3')]['rawAttributes']);_0x1c739b['query']=_[_0x7b9e('0x50')](_0x2398db[_0x7b9e('0x3f')]);_0x1c739b[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x1c739b[_0x7b9e('0x4e')],_0x1c739b[_0x7b9e('0x3f')]);_0x2ac75b[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x1c739b[_0x7b9e('0x4e')],qs['fields'](_0x2398db['query'][_0x7b9e('0x54')]));_0x2ac75b[_0x7b9e('0x41')]=_0x2ac75b[_0x7b9e('0x41')][_0x7b9e('0x55')]?_0x2ac75b[_0x7b9e('0x41')]:_0x1c739b[_0x7b9e('0x4e')];_0x2ac75b[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x2398db[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x2ac75b['where']=qs[_0x7b9e('0x52')](_[_0x7b9e('0xcb')](_0x2398db['query'],_0x1c739b['filters']));if(_0x2398db[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x2ac75b[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x2ac75b[_0x7b9e('0xcc')],{'$or':_[_0x7b9e('0x32')](_0x2ac75b[_0x7b9e('0x41')],function(_0x33a499){var _0x14aa6d={};_0x14aa6d[_0x33a499]={'$like':'%'+_0x2398db[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x14aa6d;})});}_0x2ac75b=_[_0x7b9e('0x57')]({},_0x2ac75b,_0x2398db['options']);return _0x5ba058['getFaxInteractions'](_0x2ac75b);}})[_0x7b9e('0x27')](function(_0x4a037c){if(_0x4a037c){_0x27566d=_0x4a037c[_0x7b9e('0x55')];if(!_0x2398db[_0x7b9e('0x3f')][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x2ac75b[_0x7b9e('0x21')]=qs[_0x7b9e('0x21')](_0x2398db[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x2ac75b[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x2398db['query']['offset']);}return _0x5ba058[_0x7b9e('0xe4')](_0x2ac75b);}})[_0x7b9e('0x27')](function(_0x93bdeb){if(_0x93bdeb){return _0x93bdeb?{'count':_0x27566d,'rows':_0x93bdeb}:null;}})[_0x7b9e('0x27')](respondWithResult(_0x251f3d,null))[_0x7b9e('0x1b')](handleError(_0x251f3d,null));};exports[_0x7b9e('0xe5')]=function(_0x232db4,_0x2874db){var _0x16868e={};var _0x1b14e8={};var _0x5936c2;var _0x6ea2f6;return db[_0x7b9e('0x39')][_0x7b9e('0x92')]({'where':{'id':_0x232db4['params']['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x2874db,null))[_0x7b9e('0x27')](function(_0x2a5123){if(_0x2a5123){_0x5936c2=_0x2a5123;_0x1b14e8[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db[_0x7b9e('0xe6')][_0x7b9e('0x3a')]);_0x1b14e8[_0x7b9e('0x3f')]=_[_0x7b9e('0x50')](_0x232db4['query']);_0x1b14e8[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x1b14e8['model'],_0x1b14e8['query']);_0x16868e[_0x7b9e('0x41')]=_['intersection'](_0x1b14e8['model'],qs[_0x7b9e('0x54')](_0x232db4[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x16868e[_0x7b9e('0x41')]=_0x16868e['attributes'][_0x7b9e('0x55')]?_0x16868e[_0x7b9e('0x41')]:_0x1b14e8[_0x7b9e('0x4e')];_0x16868e[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x232db4['query'][_0x7b9e('0xca')]);_0x16868e[_0x7b9e('0xcc')]=qs[_0x7b9e('0x52')](_['pick'](_0x232db4[_0x7b9e('0x3f')],_0x1b14e8[_0x7b9e('0x52')]));if(_0x232db4[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x16868e[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x16868e['where'],{'$or':_[_0x7b9e('0x32')](_0x16868e['attributes'],function(_0x38a3e5){var _0x4a0644={};_0x4a0644[_0x38a3e5]={'$like':'%'+_0x232db4[_0x7b9e('0x3f')]['filter']+'%'};return _0x4a0644;})});}_0x16868e=_[_0x7b9e('0x57')]({},_0x16868e,_0x232db4[_0x7b9e('0x58')]);return _0x5936c2['getWhatsappInteractions'](_0x16868e);}})[_0x7b9e('0x27')](function(_0x442e2d){if(_0x442e2d){_0x6ea2f6=_0x442e2d[_0x7b9e('0x55')];if(!_0x232db4['query'][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x16868e[_0x7b9e('0x21')]=qs[_0x7b9e('0x21')](_0x232db4[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x16868e[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x232db4[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}return _0x5936c2[_0x7b9e('0xe5')](_0x16868e);}})[_0x7b9e('0x27')](function(_0xbd9669){if(_0xbd9669){return _0xbd9669?{'count':_0x6ea2f6,'rows':_0xbd9669}:null;}})[_0x7b9e('0x27')](respondWithResult(_0x2874db,null))['catch'](handleError(_0x2874db,null));};exports[_0x7b9e('0xe7')]=function(_0x49e12d,_0x41d5af,_0xab508a){var _0x431547;var _0x436729;var _0x468ddb;var _0x44d544=!_['isNil'](_0x49e12d[_0x7b9e('0x4d')]['id'])?_0x49e12d[_0x7b9e('0x4d')]['id']:!_[_0x7b9e('0x64')](_0x49e12d[_0x7b9e('0x2c')]['id'])?_0x49e12d[_0x7b9e('0x2c')]['id']:null;return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x44d544,'role':{'$or':[_0x7b9e('0x2a'),_0x7b9e('0x2c'),_0x7b9e('0x2e')]}},'attributes':['id',_0x7b9e('0x36'),_0x7b9e('0xe8'),_0x7b9e('0xe9'),'role','internal',_0x7b9e('0x9b')]})[_0x7b9e('0x27')](function(_0x5c7108){if(_0x5c7108){if(_0x5c7108['role']===_0x7b9e('0x2e')){_0x431547=_0x5c7108;if(_0x49e12d[_0x7b9e('0x5c')][_0x7b9e('0x9d')]){_0x468ddb=util[_0x7b9e('0xaa')](_0x7b9e('0xea'),_0x431547[_0x49e12d['body'][_0x7b9e('0x9d')]]);}else if(_0x49e12d[_0x7b9e('0x5c')]['intrf']){_0x468ddb=util[_0x7b9e('0xaa')]('SIP/%s',_0x49e12d[_0x7b9e('0x5c')][_0x7b9e('0xeb')]);}else{_0x468ddb=util[_0x7b9e('0xaa')](_0x7b9e('0xab'),_0x431547['name']);}socket['to'](util[_0x7b9e('0xaa')]('user:%s',_0x431547[_0x7b9e('0x36')]))['emit'](_0x7b9e('0xec'),{'user':{'id':_0x431547['id'],'name':_0x431547['name']},'ip':_0x49e12d[_0x7b9e('0xed')][_0x7b9e('0xee')]||_0x49e12d[_0x7b9e('0xef')][_0x7b9e('0xf0')]||_0x49e12d[_0x7b9e('0xf1')][_0x7b9e('0xf0')]||_0x49e12d[_0x7b9e('0xef')][_0x7b9e('0xf1')][_0x7b9e('0xf0')]});return db[_0x7b9e('0xad')][_0x7b9e('0x26')]({'where':{'membername':_0x431547[_0x7b9e('0x36')]},'individualHooks':!![]});}}else{throw new db[(_0x7b9e('0x8d'))][(_0x7b9e('0x8a'))]('User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method');}})[_0x7b9e('0x27')](function(){if(_0x431547){return _0x431547[_0x7b9e('0xf2')]({'raw':!![]});}})[_0x7b9e('0x27')](function(_0x38b4ab){if(_0x431547){var _0x2066ef=[];if(_0x38b4ab){_0x436729=_0x38b4ab;if(_0x436729[_0x7b9e('0x55')]){for(var _0x444541=0x0;_0x444541<_0x436729['length'];_0x444541++){_0x2066ef[_0x7b9e('0x42')]({'membername':_0x431547['name'],'UserId':_0x431547['id'],'queue_name':_0x436729[_0x444541]['name'],'VoiceQueueId':_0x436729[_0x444541]['id'],'interface':_0x468ddb,'paused':_0x431547[_0x7b9e('0x9b')]||![],'penalty':_0x436729[_0x444541]['UserVoiceQueue.penalty']||0x0});}return BPromise['each'](_0x2066ef,function(_0x2d7df7){return db['UserVoiceQueueRt'][_0x7b9e('0xae')](_0x2d7df7);});}}}})['then'](function(){if(_0x431547){return db[_0x7b9e('0xf3')]['findAll']({'where':{'membername':_0x431547['name'],'exitAt':null}});}})[_0x7b9e('0x27')](function(_0x5a1be9){if(_0x431547){var _0x5b2439=[];_0x5a1be9[_0x7b9e('0xf4')](function(_0x5faa37){_0x5b2439['push'](_0x5faa37[_0x7b9e('0x25')]({'exitAt':moment()[_0x7b9e('0xaa')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise['all'](_0x5b2439);}})['then'](function(){if(_0x431547){var _0x14b0f3=[];var _0x41e619=[];var _0x3bd5d1=utils['getChannels']();var _0x521b23={'membername':_0x431547[_0x7b9e('0x36')],'interface':_0x468ddb,'enterAt':moment()[_0x7b9e('0xaa')](_0x7b9e('0xf5')),'role':_0x431547[_0x7b9e('0x29')],'internal':_0x431547[_0x7b9e('0x60')]};_0x3bd5d1[_0x7b9e('0xf4')](function(_0xc1ffab){_0x14b0f3[_0x7b9e('0x42')](_[_0x7b9e('0x57')]({'channel':_0xc1ffab,'type':_0x7b9e('0xf6'),'data1':_0x49e12d['body'][_0x7b9e('0xf7')],'data2':_0x468ddb},_0x521b23));if(_0x431547['loginInPause']){_0x41e619[_0x7b9e('0x42')](_[_0x7b9e('0x57')]({'channel':_0xc1ffab,'type':_0x7b9e('0xf8'),'data1':_0x7b9e('0xf9')},_0x521b23));}});return db['MemberReport'][_0x7b9e('0xfa')](_0x14b0f3[_0x7b9e('0xfb')](_0x41e619),{'individualHooks':!![]});}})[_0x7b9e('0x27')](function(){if(_0x431547){return _0x431547['update']({'online':!![],'lastLoginAt':moment()['format'](_0x7b9e('0xf5')),'voicePause':_0x431547[_0x7b9e('0x9b')]||![],'mailPause':_0x431547[_0x7b9e('0x9b')]||![],'chatPause':_0x431547['loginInPause']||![],'faxPause':_0x431547[_0x7b9e('0x9b')]||![],'smsPause':_0x431547[_0x7b9e('0x9b')]||![],'openchannelPause':_0x431547[_0x7b9e('0x9b')]||![],'whatsappPause':_0x431547['loginInPause']||![],'pauseType':_0x431547['loginInPause']?'LOGININPAUSE':null,'interface':_0x468ddb,'lastPauseAt':moment()[_0x7b9e('0xaa')](_0x7b9e('0xf5'))});}})[_0x7b9e('0x27')](function(_0xd9f507){if(_0x49e12d[_0x7b9e('0xfc')]){return _0xab508a();}else{return BPromise[_0x7b9e('0xfd')](_0xd9f507)[_0x7b9e('0x27')](respondWithResult(_0x41d5af,null));}})[_0x7b9e('0x1b')](handleError(_0x41d5af,null));};exports[_0x7b9e('0xfe')]=function(_0x4e5d31,_0x4a261c){var _0x2ebbb2;return db[_0x7b9e('0x39')]['find']({'where':{'id':_0x4e5d31[_0x7b9e('0x4d')]['id'],'role':_0x7b9e('0x2e')},'attributes':['id',_0x7b9e('0x36'),_0x7b9e('0x29')]})[_0x7b9e('0x27')](handleEntityNotFound(_0x4a261c,null))[_0x7b9e('0x27')](function(_0x1a6b46){if(_0x1a6b46){_0x2ebbb2=_0x1a6b46;return db[_0x7b9e('0xad')][_0x7b9e('0x26')]({'where':{'membername':_0x2ebbb2[_0x7b9e('0x36')]},'individualHooks':!![]});}})[_0x7b9e('0x27')](function(){return db[_0x7b9e('0xf3')][_0x7b9e('0x43')]({'where':{'membername':_0x2ebbb2[_0x7b9e('0x36')],'exitAt':null}});})['then'](function(_0x453ad1){var _0x6da84a=[];_0x453ad1[_0x7b9e('0xf4')](function(_0x2f4403){_0x6da84a[_0x7b9e('0x42')](_0x2f4403[_0x7b9e('0x25')]({'exitAt':moment()[_0x7b9e('0xaa')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x7b9e('0x4b')](_0x6da84a);})[_0x7b9e('0x27')](function(){return _0x2ebbb2[_0x7b9e('0x25')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x7b9e('0x27')](respondWithResult(_0x4a261c,null))['catch'](handleError(_0x4a261c,null));};exports[_0x7b9e('0xff')]=function(_0x45022b,_0xb94e18){var _0x557ac7;return db[_0x7b9e('0xad')][_0x7b9e('0x25')]({'paused':0x1},{'where':{'UserId':_0x45022b['params']['id']},'individualHooks':!![]})[_0x7b9e('0x27')](function(){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x45022b['params']['id'],'role':_0x7b9e('0x2e')},'attributes':['id',_0x7b9e('0x36'),'role',_0x7b9e('0x60'),_0x7b9e('0x9d')]});})['then'](handleEntityNotFound(_0xb94e18,null))[_0x7b9e('0x27')](function(_0x1b8fa9){if(_0x1b8fa9){_0x557ac7=_0x1b8fa9;return respondWithRpcPromise(_0x7b9e('0x100'),_0x7b9e('0xff'),{'id':_0x557ac7['id'],'name':_0x557ac7[_0x7b9e('0x36')],'pause':!![]});}})[_0x7b9e('0x27')](function(){if(_0x557ac7){return db[_0x7b9e('0xf3')][_0x7b9e('0x43')]({'where':{'membername':_0x557ac7[_0x7b9e('0x36')],'type':_0x7b9e('0xf8'),'exitAt':null}});}})[_0x7b9e('0x27')](function(_0x50db19){if(_0x50db19['length']){var _0x3e0d9b=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');for(var _0x5bd390=0x0,_0x1a82dc=_0x50db19[_0x7b9e('0x55')];_0x5bd390<_0x1a82dc;_0x5bd390++){_0x50db19[_0x5bd390][_0x7b9e('0x101')]({'exitAt':_0x3e0d9b});}}})[_0x7b9e('0x27')](function(){var _0x5c8e48=[];var _0x55d11c=utils[_0x7b9e('0x102')]();_0x55d11c[_0x7b9e('0xf4')](function(_0x123b91){_0x5c8e48['push']({'channel':_0x123b91,'membername':_0x557ac7[_0x7b9e('0x36')],'interface':_[_0x7b9e('0x64')](_0x557ac7['interface'])?util[_0x7b9e('0xaa')](_0x7b9e('0xab'),_0x557ac7[_0x7b9e('0x36')]):_0x557ac7[_0x7b9e('0x9d')],'type':'PAUSE','enterAt':moment()['format'](_0x7b9e('0xf5')),'data1':_0x45022b[_0x7b9e('0x5c')][_0x7b9e('0x3c')]||_0x7b9e('0x103'),'role':_0x557ac7[_0x7b9e('0x29')],'internal':_0x557ac7[_0x7b9e('0x60')]});});return db[_0x7b9e('0xf3')]['bulkCreate'](_0x5c8e48,{'individualHooks':!![]});})['then'](function(){return _0x557ac7['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x45022b[_0x7b9e('0x5c')][_0x7b9e('0x3c')]||_0x7b9e('0x103'),'lastPauseAt':moment()[_0x7b9e('0xaa')](_0x7b9e('0xf5'))});})[_0x7b9e('0x27')](respondWithResult(_0xb94e18,null))[_0x7b9e('0x1b')](handleError(_0xb94e18,null));};exports['unpause']=function(_0x4ae1fe,_0x5df29c){var _0x4cdabf;return db[_0x7b9e('0x39')]['find']({'where':{'id':_0x4ae1fe[_0x7b9e('0x4d')]['id']},'attributes':['id',_0x7b9e('0x36'),_0x7b9e('0x29'),_0x7b9e('0x9c'),_0x7b9e('0x104'),_0x7b9e('0x105'),_0x7b9e('0x106'),_0x7b9e('0x107'),_0x7b9e('0x108'),'whatsapppause',_0x7b9e('0x109'),_0x7b9e('0x10a')]})[_0x7b9e('0x27')](handleEntityNotFound(_0x5df29c,null))['then'](function(_0xaf03da){if(_0xaf03da){_0x4cdabf=_0xaf03da;if(_0x4ae1fe[_0x7b9e('0x5c')][_0x7b9e('0x99')]&&!utils['isValidChannel'](_0x4ae1fe[_0x7b9e('0x5c')][_0x7b9e('0x99')])){throw new db[(_0x7b9e('0x8d'))][(_0x7b9e('0x8a'))](_0x7b9e('0x9f'));}switch(_0x4ae1fe[_0x7b9e('0x5c')][_0x7b9e('0x99')]){case _0x7b9e('0xa9'):return respondWithRpcPromise(_0x7b9e('0x100'),_0x7b9e('0x10b'),{'id':_0x4cdabf['id'],'name':_0x4cdabf[_0x7b9e('0x36')],'pause':![]})[_0x7b9e('0x27')](function(){return db[_0x7b9e('0xad')][_0x7b9e('0x25')]({'paused':0x0},{'where':{'UserId':_0x4cdabf['id']},'individualHooks':!![]});})[_0x7b9e('0x27')](function(){return db[_0x7b9e('0xf3')][_0x7b9e('0x35')]({'where':{'channel':_0x4ae1fe[_0x7b9e('0x5c')]['channel'],'membername':_0x4cdabf[_0x7b9e('0x36')],'type':_0x7b9e('0xf8'),'exitAt':null}});})[_0x7b9e('0x27')](function(_0x27dee7){if(_0x27dee7){return _0x27dee7['update']({'exitAt':moment()[_0x7b9e('0xaa')](_0x7b9e('0xf5')),'data2':_0x7b9e('0x10c')},{'individualHooks':!![]});}return null;})[_0x7b9e('0x27')](function(){return _0x4cdabf['update']({'voicePause':![]});});case'mail':case'chat':case _0x7b9e('0x47'):case'sms':case _0x7b9e('0x4a'):case'openchannel':return db[_0x7b9e('0xf3')][_0x7b9e('0x35')]({'where':{'channel':_0x4ae1fe[_0x7b9e('0x5c')]['channel'],'membername':_0x4cdabf[_0x7b9e('0x36')],'type':_0x7b9e('0xf8'),'exitAt':null}})[_0x7b9e('0x27')](function(_0x149c91){if(_0x149c91){return _0x149c91[_0x7b9e('0x25')]({'exitAt':moment()[_0x7b9e('0xaa')](_0x7b9e('0xf5')),'data2':'manual'},{'individualHooks':!![]});}return null;})[_0x7b9e('0x27')](function(){var _0x24980f={};_[_0x7b9e('0x23')](_0x24980f,util[_0x7b9e('0xaa')]('%s%s',_0x4ae1fe['body'][_0x7b9e('0x99')],_0x7b9e('0x10d')),![]);return _0x4cdabf[_0x7b9e('0x25')](_0x24980f);});default:return respondWithRpcPromise(_0x7b9e('0x100'),'unpause',{'id':_0x4cdabf['id'],'name':_0x4cdabf['name'],'pause':![]})[_0x7b9e('0x27')](function(){return db[_0x7b9e('0xad')][_0x7b9e('0x25')]({'paused':0x0},{'where':{'UserId':_0x4cdabf['id']}});})[_0x7b9e('0x27')](function(){return db[_0x7b9e('0xf3')][_0x7b9e('0x43')]({'where':{'membername':_0x4cdabf[_0x7b9e('0x36')],'type':_0x7b9e('0xf8'),'exitAt':null}});})[_0x7b9e('0x27')](function(_0x27e069){var _0x251065=[];_0x27e069[_0x7b9e('0xf4')](function(_0xea19d3){_0x251065['push'](_0xea19d3[_0x7b9e('0x25')]({'exitAt':moment()[_0x7b9e('0xaa')](_0x7b9e('0xf5')),'data2':'manual'}));});return BPromise[_0x7b9e('0x4b')](_0x251065);})[_0x7b9e('0x27')](function(){return _0x4cdabf[_0x7b9e('0x25')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0x7b9e('0x27')](respondWithResult(_0x5df29c,null))[_0x7b9e('0x1b')](handleError(_0x5df29c,null));};exports[_0x7b9e('0x10e')]=function(_0x117aa1,_0x5af8c1){var _0x3f8377={};var _0x8de1bb={};var _0x2e67f1;var _0x14eb07;return db['User'][_0x7b9e('0x92')]({'where':{'id':_0x117aa1[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x5af8c1,null))[_0x7b9e('0x27')](function(_0x100e94){if(_0x100e94){_0x2e67f1=_0x100e94;_0x8de1bb[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db[_0x7b9e('0x10f')][_0x7b9e('0x3a')]);_0x8de1bb['query']=_[_0x7b9e('0x50')](_0x117aa1['query']);_0x8de1bb[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x8de1bb['model'],_0x8de1bb[_0x7b9e('0x3f')]);_0x3f8377[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x8de1bb[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x117aa1['query']['fields']));_0x3f8377['attributes']=_0x3f8377[_0x7b9e('0x41')][_0x7b9e('0x55')]?_0x3f8377[_0x7b9e('0x41')]:_0x8de1bb['model'];_0x3f8377[_0x7b9e('0xc9')]=qs['sort'](_0x117aa1[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x3f8377[_0x7b9e('0xcc')]=qs['filters'](_[_0x7b9e('0xcb')](_0x117aa1['query'],_0x8de1bb[_0x7b9e('0x52')]));if(_0x117aa1[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x3f8377[_0x7b9e('0xcc')]=_['merge'](_0x3f8377['where'],{'$or':_[_0x7b9e('0x32')](_0x3f8377[_0x7b9e('0x41')],function(_0x490fb5){var _0xdee8e2={};_0xdee8e2[_0x490fb5]={'$like':'%'+_0x117aa1[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0xdee8e2;})});}_0x3f8377=_[_0x7b9e('0x57')]({},_0x3f8377,_0x117aa1[_0x7b9e('0x58')]);return _0x2e67f1[_0x7b9e('0x10e')](_0x3f8377);}})[_0x7b9e('0x27')](function(_0x2372f1){if(_0x2372f1){_0x14eb07=_0x2372f1[_0x7b9e('0x55')];if(!_0x117aa1[_0x7b9e('0x3f')][_0x7b9e('0xd3')]('nolimit')){_0x3f8377[_0x7b9e('0x21')]=qs[_0x7b9e('0x21')](_0x117aa1[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x3f8377[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x117aa1['query'][_0x7b9e('0x1f')]);}return _0x2e67f1[_0x7b9e('0x10e')](_0x3f8377);}})[_0x7b9e('0x27')](function(_0xae6201){if(_0xae6201){return _0xae6201?{'count':_0x14eb07,'rows':_0xae6201}:null;}})[_0x7b9e('0x27')](respondWithResult(_0x5af8c1,null))[_0x7b9e('0x1b')](handleError(_0x5af8c1,null));};exports[_0x7b9e('0x110')]=function(_0x49df2c,_0xa95126){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x49df2c['params']['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0xa95126,null))[_0x7b9e('0x27')](function(_0xa97c49){if(_0xa97c49){var _0x19bc1d=_0xa97c49[_0x7b9e('0x28')]({'plain':!![]});return _0xa97c49['addTeams'](_0x49df2c['body'][_0x7b9e('0x5f')],_[_0x7b9e('0x111')](_0x49df2c[_0x7b9e('0x5c')],[_0x7b9e('0x5f'),'id'])||{})['then'](function(){for(var _0x480a0c=0x0;_0x480a0c<_0x49df2c[_0x7b9e('0x5c')][_0x7b9e('0x5f')]['length'];_0x480a0c++){var _0x265bf8=[];db['Team'][_0x7b9e('0x92')]({'where':{'id':_0x49df2c['body']['ids'][_0x480a0c]}})[_0x7b9e('0x27')](function(_0xf067d7){_0x265bf8[_0x7b9e('0x42')](_0xf067d7[_0x7b9e('0xf2')]()[_0x7b9e('0x27')](function(_0x58b9b7){for(var _0x23abe3=0x0;_0x23abe3<_0x58b9b7[_0x7b9e('0x55')];_0x23abe3++){_0x58b9b7[_0x23abe3][_0x7b9e('0x112')]('channel',_0x7b9e('0x113'));}return _0x58b9b7;}));_0x265bf8[_0x7b9e('0x42')](_0xf067d7[_0x7b9e('0x114')]()[_0x7b9e('0x27')](function(_0x3d35dd){for(var _0x396bae=0x0;_0x396bae<_0x3d35dd[_0x7b9e('0x55')];_0x396bae++){_0x3d35dd[_0x396bae][_0x7b9e('0x112')](_0x7b9e('0x99'),'Chat');}return _0x3d35dd;}));_0x265bf8[_0x7b9e('0x42')](_0xf067d7[_0x7b9e('0x115')]()[_0x7b9e('0x27')](function(_0x119362){for(var _0x7e2e0d=0x0;_0x7e2e0d<_0x119362[_0x7b9e('0x55')];_0x7e2e0d++){_0x119362[_0x7e2e0d][_0x7b9e('0x112')](_0x7b9e('0x99'),'Mail');}return _0x119362;}));_0x265bf8['push'](_0xf067d7[_0x7b9e('0x116')]()['then'](function(_0x1127bd){for(var _0x3c6bda=0x0;_0x3c6bda<_0x1127bd[_0x7b9e('0x55')];_0x3c6bda++){_0x1127bd[_0x3c6bda]['setDataValue']('channel',_0x7b9e('0x117'));}return _0x1127bd;}));_0x265bf8['push'](_0xf067d7[_0x7b9e('0x118')]()[_0x7b9e('0x27')](function(_0x398a69){for(var _0x4a20b6=0x0;_0x4a20b6<_0x398a69['length'];_0x4a20b6++){_0x398a69[_0x4a20b6][_0x7b9e('0x112')](_0x7b9e('0x99'),_0x7b9e('0x119'));}return _0x398a69;}));_0x265bf8[_0x7b9e('0x42')](_0xf067d7['getFaxQueues']()['then'](function(_0x4a1e06){for(var _0x15e73f=0x0;_0x15e73f<_0x4a1e06[_0x7b9e('0x55')];_0x15e73f++){_0x4a1e06[_0x15e73f]['setDataValue'](_0x7b9e('0x99'),_0x7b9e('0x11a'));}return _0x4a1e06;}));_0x265bf8[_0x7b9e('0x42')](_0xf067d7[_0x7b9e('0x11b')]()[_0x7b9e('0x27')](function(_0x49c9a6){for(var _0x291e4b=0x0;_0x291e4b<_0x49c9a6['length'];_0x291e4b++){_0x49c9a6[_0x291e4b][_0x7b9e('0x112')](_0x7b9e('0x99'),_0x7b9e('0x11c'));}return _0x49c9a6;}));return BPromise[_0x7b9e('0x4b')](_0x265bf8);})[_0x7b9e('0x27')](function(_0x2c114a){var _0x47881b=_['flatten'](_0x2c114a);_0x265bf8=[];return db[_0x7b9e('0x65')][_0x7b9e('0x11d')](function(_0x3b956a){for(var _0x33ac5e=0x0;_0x33ac5e<_0x47881b['length'];_0x33ac5e++){_0x265bf8['push'](_0x47881b[_0x33ac5e]['addAgent'](_0x19bc1d['id']),{'transaction':_0x3b956a});}return BPromise[_0x7b9e('0x4b')](_0x265bf8)['then'](function(){if(_0x19bc1d['online']){return BPromise[_0x7b9e('0xac')](_[_0x7b9e('0x30')](_0x47881b,function(_0x43da29){return _0x43da29[_0x7b9e('0x11e')](_0x7b9e('0x99'))===_0x7b9e('0x113');}),function(_0x5ae7e9){return db[_0x7b9e('0xad')][_0x7b9e('0xae')]({'membername':_0x19bc1d['name'],'UserId':_0x19bc1d['id'],'queue_name':_0x5ae7e9['name'],'VoiceQueueId':_0x5ae7e9['id'],'interface':_[_0x7b9e('0x64')](_0x19bc1d[_0x7b9e('0x9d')])?util[_0x7b9e('0xaa')](_0x7b9e('0xab'),_0x19bc1d['name']):_0x19bc1d[_0x7b9e('0x9d')],'paused':_0x19bc1d[_0x7b9e('0x9c')]||![],'penalty':_0x19bc1d[_0x7b9e('0xa3')]},{'transaction':_0x3b956a});});}else{return;}})[_0x7b9e('0x27')](function(){for(var _0xc5a419=0x0;_0xc5a419<_0x47881b['length'];_0xc5a419++){var _0x10b285=_0x47881b[_0xc5a419][_0x7b9e('0x11e')](_0x7b9e('0x99'));var _0x2d47d3=_0x10b285+_0x7b9e('0xa5');socket[_0x7b9e('0xa6')](_0x7b9e('0x2c')+_0x10b285+_0x7b9e('0xa7'),{'UserId':_0x19bc1d['id'],['queueField']:_0x47881b[_0xc5a419]['id']});}});});});}});}})['then'](respondWithStatusCode(_0xa95126,null))['catch'](handleError(_0xa95126,null));};exports[_0x7b9e('0x11f')]=function(_0x21f692,_0x221c11){return db[_0x7b9e('0x39')][_0x7b9e('0x92')]({'where':{'id':_0x21f692['params']['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x221c11,null))[_0x7b9e('0x27')](function(_0x1ddf5f){if(_0x1ddf5f){var _0x364824=_0x1ddf5f['get']({'plain':!![]});var _0x26448b=_0x21f692[_0x7b9e('0x3f')][_0x7b9e('0x5f')];return _0x1ddf5f[_0x7b9e('0x11f')](_0x26448b)[_0x7b9e('0x27')](function(){for(var _0x21378b=0x0;_0x21378b<_0x26448b[_0x7b9e('0x55')];_0x21378b++){var _0x586c3d=[];db[_0x7b9e('0x10f')][_0x7b9e('0x92')]({'where':{'id':_0x26448b[_0x21378b]}})[_0x7b9e('0x27')](function(_0xdd9c6b){_0x586c3d[_0x7b9e('0x42')](_0xdd9c6b[_0x7b9e('0xf2')]()['then'](function(_0x44a3c9){for(var _0x329a92=0x0;_0x329a92<_0x44a3c9['length'];_0x329a92++){_0x44a3c9[_0x329a92]['setDataValue'](_0x7b9e('0x99'),_0x7b9e('0x113'));}return _0x44a3c9;}));_0x586c3d[_0x7b9e('0x42')](_0xdd9c6b[_0x7b9e('0x114')]()[_0x7b9e('0x27')](function(_0xac6e1f){for(var _0x2006d1=0x0;_0x2006d1<_0xac6e1f[_0x7b9e('0x55')];_0x2006d1++){_0xac6e1f[_0x2006d1]['setDataValue'](_0x7b9e('0x99'),_0x7b9e('0x120'));}return _0xac6e1f;}));_0x586c3d[_0x7b9e('0x42')](_0xdd9c6b['getMailQueues']()[_0x7b9e('0x27')](function(_0x3c3193){for(var _0x589bed=0x0;_0x589bed<_0x3c3193[_0x7b9e('0x55')];_0x589bed++){_0x3c3193[_0x589bed][_0x7b9e('0x112')](_0x7b9e('0x99'),_0x7b9e('0x121'));}return _0x3c3193;}));_0x586c3d[_0x7b9e('0x42')](_0xdd9c6b['getSmsQueues']()[_0x7b9e('0x27')](function(_0x19a554){for(var _0x280b6a=0x0;_0x280b6a<_0x19a554[_0x7b9e('0x55')];_0x280b6a++){_0x19a554[_0x280b6a][_0x7b9e('0x112')]('channel','Sms');}return _0x19a554;}));_0x586c3d[_0x7b9e('0x42')](_0xdd9c6b['getWhatsappQueues']()[_0x7b9e('0x27')](function(_0x5d2758){for(var _0x529260=0x0;_0x529260<_0x5d2758[_0x7b9e('0x55')];_0x529260++){_0x5d2758[_0x529260]['setDataValue'](_0x7b9e('0x99'),_0x7b9e('0x119'));}return _0x5d2758;}));_0x586c3d[_0x7b9e('0x42')](_0xdd9c6b['getFaxQueues']()[_0x7b9e('0x27')](function(_0x2f78b7){for(var _0x58c202=0x0;_0x58c202<_0x2f78b7[_0x7b9e('0x55')];_0x58c202++){_0x2f78b7[_0x58c202]['setDataValue'](_0x7b9e('0x99'),_0x7b9e('0x11a'));}return _0x2f78b7;}));_0x586c3d[_0x7b9e('0x42')](_0xdd9c6b['getOpenchannelQueues']()[_0x7b9e('0x27')](function(_0x548db3){for(var _0x4cac46=0x0;_0x4cac46<_0x548db3[_0x7b9e('0x55')];_0x4cac46++){_0x548db3[_0x4cac46][_0x7b9e('0x112')](_0x7b9e('0x99'),'Openchannel');}return _0x548db3;}));return BPromise[_0x7b9e('0x4b')](_0x586c3d);})[_0x7b9e('0x27')](function(_0x360c9f){var _0x1b9897=_[_0x7b9e('0x122')](_0x360c9f);_0x586c3d=[];return db[_0x7b9e('0x65')][_0x7b9e('0x11d')](function(_0x4c8941){for(var _0x1fd7d5=0x0;_0x1fd7d5<_0x1b9897[_0x7b9e('0x55')];_0x1fd7d5++){_0x586c3d[_0x7b9e('0x42')](_0x1b9897[_0x1fd7d5][_0x7b9e('0x123')](_0x364824['id']),{'transaction':_0x4c8941});}return BPromise[_0x7b9e('0x4b')](_0x586c3d)['then'](function(){if(_0x364824['online']){return BPromise[_0x7b9e('0xac')](_['filter'](_0x1b9897,function(_0x3ae17e){return _0x3ae17e[_0x7b9e('0x11e')](_0x7b9e('0x99'))===_0x7b9e('0x113');}),function(_0x10c0a2){return db['UserVoiceQueueRt'][_0x7b9e('0x26')]({'where':{'VoiceQueueId':_0x10c0a2['id'],'UserId':_0x364824['id']},'transaction':_0x4c8941});});}else{return;}})[_0x7b9e('0x27')](function(){for(var _0xa9706c=0x0;_0xa9706c<_0x1b9897[_0x7b9e('0x55')];_0xa9706c++){var _0x1e7f46=_0x1b9897[_0xa9706c]['getDataValue'](_0x7b9e('0x99'));var _0x5ae721=_0x1e7f46+'QueueId';socket[_0x7b9e('0xa6')]('user'+_0x1e7f46+_0x7b9e('0xb1'),{'UserId':_0x364824['id'],['queueField']:_0x1b9897[_0xa9706c]['id']});}});});});}});}})[_0x7b9e('0x27')](respondWithStatusCode(_0x221c11,null))[_0x7b9e('0x1b')](handleError(_0x221c11,null));};exports[_0x7b9e('0x124')]=function(_0x293993,_0x1f45f5){var _0x32ae09={};var _0x17e1e7={};var _0x2931c1;var _0x4a9a97;return db[_0x7b9e('0x39')][_0x7b9e('0x92')]({'where':{'id':_0x293993[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x1f45f5,null))[_0x7b9e('0x27')](function(_0x43539d){if(_0x43539d){_0x2931c1=_0x43539d;_0x17e1e7[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db[_0x7b9e('0xcd')][_0x7b9e('0x3a')]);_0x17e1e7['query']=_[_0x7b9e('0x50')](_0x293993[_0x7b9e('0x3f')]);_0x17e1e7[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x17e1e7[_0x7b9e('0x4e')],_0x17e1e7[_0x7b9e('0x3f')]);_0x32ae09[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x17e1e7['model'],qs['fields'](_0x293993[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x32ae09[_0x7b9e('0x41')]=_0x32ae09['attributes'][_0x7b9e('0x55')]?_0x32ae09[_0x7b9e('0x41')]:_0x17e1e7[_0x7b9e('0x4e')];_0x32ae09[_0x7b9e('0xc9')]=qs['sort'](_0x293993[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x32ae09[_0x7b9e('0xcc')]=qs['filters'](_['pick'](_0x293993[_0x7b9e('0x3f')],_0x17e1e7[_0x7b9e('0x52')]));if(_0x293993[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x32ae09['where']=_['merge'](_0x32ae09[_0x7b9e('0xcc')],{'$or':_[_0x7b9e('0x32')](_0x32ae09[_0x7b9e('0x41')],function(_0x457745){var _0x3b4ed5={};_0x3b4ed5[_0x457745]={'$like':'%'+_0x293993[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x3b4ed5;})});}_0x32ae09=_[_0x7b9e('0x57')]({},_0x32ae09,_0x293993[_0x7b9e('0x58')]);return _0x2931c1[_0x7b9e('0x124')](_0x32ae09);}})[_0x7b9e('0x27')](function(_0x131cfb){if(_0x131cfb){_0x4a9a97=_0x131cfb[_0x7b9e('0x55')];if(!_0x293993[_0x7b9e('0x3f')][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x32ae09[_0x7b9e('0x21')]=qs['limit'](_0x293993['query'][_0x7b9e('0x21')]);_0x32ae09[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x293993['query'][_0x7b9e('0x1f')]);}return _0x2931c1[_0x7b9e('0x124')](_0x32ae09);}})[_0x7b9e('0x27')](function(_0x15d168){if(_0x15d168){return _0x15d168?{'count':_0x4a9a97,'rows':_0x15d168}:null;}})[_0x7b9e('0x27')](respondWithResult(_0x1f45f5,null))[_0x7b9e('0x1b')](handleError(_0x1f45f5,null));};exports[_0x7b9e('0x125')]=function(_0x26cda7,_0x2573e8){var _0x9efaae={};var _0x1e6c62={};var _0x728784;var _0x58dd55;return db[_0x7b9e('0x39')][_0x7b9e('0x92')]({'where':{'id':_0x26cda7[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x2573e8,null))[_0x7b9e('0x27')](function(_0x4e2f48){if(_0x4e2f48){_0x728784=_0x4e2f48;_0x1e6c62[_0x7b9e('0x4e')]=_['keys'](db[_0x7b9e('0x39')]['rawAttributes']);_0x1e6c62[_0x7b9e('0x3f')]=_['keys'](_0x26cda7[_0x7b9e('0x3f')]);_0x1e6c62[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x1e6c62['model'],_0x1e6c62['query']);_0x9efaae[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x1e6c62[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x26cda7['query'][_0x7b9e('0x54')]));_0x9efaae['attributes']=_0x9efaae[_0x7b9e('0x41')]['length']?_0x9efaae[_0x7b9e('0x41')]:_0x1e6c62[_0x7b9e('0x4e')];_0x9efaae['order']=qs['sort'](_0x26cda7[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x9efaae['where']=qs[_0x7b9e('0x52')](_['pick'](_0x26cda7['query'],_0x1e6c62[_0x7b9e('0x52')]));if(_0x26cda7[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x9efaae['where']=_['merge'](_0x9efaae[_0x7b9e('0xcc')],{'$or':_[_0x7b9e('0x32')](_0x9efaae[_0x7b9e('0x41')],function(_0x3e9aa8){var _0x30dab1={};_0x30dab1[_0x3e9aa8]={'$like':'%'+_0x26cda7[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x30dab1;})});}_0x9efaae[_0x7b9e('0x4e')]=db[_0x7b9e('0x39')];_0x9efaae['as']=_0x7b9e('0x2d');_0x9efaae=_[_0x7b9e('0x57')]({},_0x9efaae,_0x26cda7[_0x7b9e('0x58')]);return _0x728784[_0x7b9e('0xf2')]({'include':[_0x9efaae]});}})['then'](function(_0x2eb9a6){if(_0x2eb9a6){var _0x436f19={},_0x56301a=[],_0x522489=0x0;for(var _0x13bb71=0x0;_0x13bb71<_0x2eb9a6[_0x7b9e('0x55')];_0x13bb71+=0x1){for(var _0x5be9aa=0x0,_0x12beb2;_0x5be9aa<_0x2eb9a6[_0x13bb71]['Agents'][_0x7b9e('0x55')];_0x5be9aa+=0x1){_0x12beb2=_0x2eb9a6[_0x13bb71][_0x7b9e('0x2d')][_0x5be9aa][_0x7b9e('0x28')]({'plain':!![]});_0x436f19[_0x12beb2['id']]=_0x12beb2;}}_0x436f19=_[_0x7b9e('0x126')](_0x436f19);for(var _0x36f16f=qs['offset'](_0x26cda7['query'][_0x7b9e('0x1f')]);_0x36f16f<_0x436f19[_0x7b9e('0x55')]&&_0x56301a['length']<qs[_0x7b9e('0x21')](_0x26cda7[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x36f16f+=0x1){if(_0x436f19[_0x36f16f]){_0x56301a[_0x7b9e('0x42')](_0x436f19[_0x36f16f]);}}return{'count':_0x436f19['length'],'rows':_0x56301a};}})[_0x7b9e('0x27')](respondWithResult(_0x2573e8,null))[_0x7b9e('0x1b')](handleError(_0x2573e8,null));};exports[_0x7b9e('0x26')]=function(_0x46d810,_0xdd8951){if(_0x46d810[_0x7b9e('0x2c')]['id']==_0x46d810[_0x7b9e('0x4d')]['id']){return _0xdd8951['status'](0x1f4)[_0x7b9e('0x37')]({'message':_0x7b9e('0x127')});}return db['User'][_0x7b9e('0x35')]({'where':{'id':_0x46d810[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0xdd8951,null))[_0x7b9e('0x27')](removeEntity(_0xdd8951,null))[_0x7b9e('0x1b')](handleError(_0xdd8951,null));};exports[_0x7b9e('0x128')]=function(_0x15c37f,_0x118217){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x15c37f['params']['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x118217,null))[_0x7b9e('0x27')](function(_0x1e514c){if(_0x1e514c){return _0x1e514c[_0x7b9e('0x128')](_0x15c37f[_0x7b9e('0x5c')][_0x7b9e('0x5f')],_['omit'](_0x15c37f['body'],[_0x7b9e('0x5f'),'id'])||{})['spread'](function(){for(var _0x3a5f5e=0x0;_0x3a5f5e<_0x15c37f[_0x7b9e('0x5c')][_0x7b9e('0x5f')]['length'];_0x3a5f5e+=0x1){socket['emit']('user_has_chat_interactions:save',{'ChatInteractionId':Number(_0x15c37f[_0x7b9e('0x5c')][_0x7b9e('0x5f')][_0x3a5f5e]),'UserId':Number(_0x15c37f[_0x7b9e('0x4d')]['id'])});}return _0x15c37f[_0x7b9e('0x5c')][_0x7b9e('0x5f')];});}})[_0x7b9e('0x27')](respondWithResult(_0x118217,null))[_0x7b9e('0x1b')](handleError(_0x118217,null));};exports[_0x7b9e('0x129')]=function(_0x19bf47,_0x17fdbd){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x19bf47[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x17fdbd,null))[_0x7b9e('0x27')](function(_0x34154a){if(_0x34154a){return _0x34154a[_0x7b9e('0x129')](_0x19bf47[_0x7b9e('0x3f')][_0x7b9e('0x5f')])[_0x7b9e('0x27')](function(){if(_['isArray'](_0x19bf47[_0x7b9e('0x3f')]['ids'])){for(var _0x25be00=0x0;_0x25be00<_0x19bf47[_0x7b9e('0x3f')][_0x7b9e('0x5f')][_0x7b9e('0x55')];_0x25be00+=0x1){socket[_0x7b9e('0xa6')](_0x7b9e('0x12a'),{'ChatInteractionId':Number(_0x19bf47['query']['ids'][_0x25be00]),'UserId':Number(_0x19bf47['params']['id'])});}}else{socket['emit'](_0x7b9e('0x12a'),{'ChatInteractionId':Number(_0x19bf47[_0x7b9e('0x3f')][_0x7b9e('0x5f')]),'UserId':Number(_0x19bf47[_0x7b9e('0x4d')]['id'])});}});}})[_0x7b9e('0x27')](respondWithStatusCode(_0x17fdbd,null))[_0x7b9e('0x1b')](handleError(_0x17fdbd,null));};exports[_0x7b9e('0x12b')]=function(_0x4be142,_0x362257){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x4be142[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x362257,null))['then'](function(_0x383c90){if(_0x383c90){return _0x383c90[_0x7b9e('0x12b')](_0x4be142[_0x7b9e('0x5c')][_0x7b9e('0x5f')],_[_0x7b9e('0x111')](_0x4be142['body'],[_0x7b9e('0x5f'),'id'])||{})[_0x7b9e('0xa4')](function(){for(var _0xe32b24=0x0;_0xe32b24<_0x4be142[_0x7b9e('0x5c')][_0x7b9e('0x5f')][_0x7b9e('0x55')];_0xe32b24+=0x1){socket['emit'](_0x7b9e('0x12c'),{'MailInteractionId':Number(_0x4be142[_0x7b9e('0x5c')][_0x7b9e('0x5f')][_0xe32b24]),'UserId':Number(_0x4be142[_0x7b9e('0x4d')]['id'])});}return _0x4be142[_0x7b9e('0x5c')][_0x7b9e('0x5f')];});}})[_0x7b9e('0x27')](respondWithResult(_0x362257,null))[_0x7b9e('0x1b')](handleError(_0x362257,null));};exports['removeMailInteractions']=function(_0x3c156a,_0x485bde){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x3c156a[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x485bde,null))[_0x7b9e('0x27')](function(_0x10fc90){if(_0x10fc90){return _0x10fc90['removeMailInteractions'](_0x3c156a[_0x7b9e('0x3f')]['ids'])[_0x7b9e('0x27')](function(){if(_[_0x7b9e('0xb0')](_0x3c156a[_0x7b9e('0x3f')][_0x7b9e('0x5f')])){for(var _0x158702=0x0;_0x158702<_0x3c156a['query'][_0x7b9e('0x5f')][_0x7b9e('0x55')];_0x158702+=0x1){socket['emit'](_0x7b9e('0x12d'),{'MailInteractionId':Number(_0x3c156a['query'][_0x7b9e('0x5f')][_0x158702]),'UserId':Number(_0x3c156a[_0x7b9e('0x4d')]['id'])});}}else{socket[_0x7b9e('0xa6')](_0x7b9e('0x12d'),{'MailInteractionId':Number(_0x3c156a[_0x7b9e('0x3f')][_0x7b9e('0x5f')]),'UserId':Number(_0x3c156a[_0x7b9e('0x4d')]['id'])});}});}})[_0x7b9e('0x27')](respondWithStatusCode(_0x485bde,null))['catch'](handleError(_0x485bde,null));};exports['addFaxInteractions']=function(_0x1ea1f7,_0x5820a5){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x1ea1f7[_0x7b9e('0x4d')]['id']}})['then'](handleEntityNotFound(_0x5820a5,null))['then'](function(_0x1e842e){if(_0x1e842e){return _0x1e842e[_0x7b9e('0x12e')](_0x1ea1f7[_0x7b9e('0x5c')][_0x7b9e('0x5f')],_[_0x7b9e('0x111')](_0x1ea1f7[_0x7b9e('0x5c')],['ids','id'])||{})[_0x7b9e('0xa4')](function(){for(var _0x4e6639=0x0;_0x4e6639<_0x1ea1f7['body']['ids']['length'];_0x4e6639+=0x1){socket[_0x7b9e('0xa6')](_0x7b9e('0x12f'),{'FaxInteractionId':Number(_0x1ea1f7['body'][_0x7b9e('0x5f')][_0x4e6639]),'UserId':Number(_0x1ea1f7['params']['id'])});}return _0x1ea1f7['body'][_0x7b9e('0x5f')];});}})[_0x7b9e('0x27')](respondWithResult(_0x5820a5,null))[_0x7b9e('0x1b')](handleError(_0x5820a5,null));};exports[_0x7b9e('0x130')]=function(_0x40c1fb,_0x4a3f32){return db[_0x7b9e('0x39')]['find']({'where':{'id':_0x40c1fb[_0x7b9e('0x4d')]['id']}})['then'](handleEntityNotFound(_0x4a3f32,null))[_0x7b9e('0x27')](function(_0x1a8452){if(_0x1a8452){return _0x1a8452['removeFaxInteractions'](_0x40c1fb[_0x7b9e('0x3f')][_0x7b9e('0x5f')])[_0x7b9e('0x27')](function(){if(_[_0x7b9e('0xb0')](_0x40c1fb[_0x7b9e('0x3f')][_0x7b9e('0x5f')])){for(var _0x3340e2=0x0;_0x3340e2<_0x40c1fb['query']['ids'][_0x7b9e('0x55')];_0x3340e2+=0x1){socket[_0x7b9e('0xa6')](_0x7b9e('0x131'),{'FaxInteractionId':Number(_0x40c1fb[_0x7b9e('0x3f')]['ids'][_0x3340e2]),'UserId':Number(_0x40c1fb[_0x7b9e('0x4d')]['id'])});}}else{socket['emit'](_0x7b9e('0x131'),{'FaxInteractionId':Number(_0x40c1fb[_0x7b9e('0x3f')]['ids']),'UserId':Number(_0x40c1fb[_0x7b9e('0x4d')]['id'])});}});}})[_0x7b9e('0x27')](respondWithStatusCode(_0x4a3f32,null))[_0x7b9e('0x1b')](handleError(_0x4a3f32,null));};exports[_0x7b9e('0x132')]=function(_0x14dd37,_0x12ffce){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x14dd37[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x12ffce,null))[_0x7b9e('0x27')](function(_0x6676d){if(_0x6676d){return _0x6676d['addSmsInteractions'](_0x14dd37['body'][_0x7b9e('0x5f')],_['omit'](_0x14dd37[_0x7b9e('0x5c')],[_0x7b9e('0x5f'),'id'])||{})[_0x7b9e('0xa4')](function(){for(var _0x61dcae=0x0;_0x61dcae<_0x14dd37[_0x7b9e('0x5c')][_0x7b9e('0x5f')][_0x7b9e('0x55')];_0x61dcae+=0x1){socket['emit'](_0x7b9e('0x133'),{'SmsInteractionId':Number(_0x14dd37[_0x7b9e('0x5c')][_0x7b9e('0x5f')][_0x61dcae]),'UserId':Number(_0x14dd37['params']['id'])});}return _0x14dd37[_0x7b9e('0x5c')][_0x7b9e('0x5f')];});}})[_0x7b9e('0x27')](respondWithResult(_0x12ffce,null))['catch'](handleError(_0x12ffce,null));};exports['removeSmsInteractions']=function(_0x2212c5,_0x425faa){return db[_0x7b9e('0x39')]['find']({'where':{'id':_0x2212c5[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x425faa,null))[_0x7b9e('0x27')](function(_0x453bcf){if(_0x453bcf){return _0x453bcf[_0x7b9e('0x134')](_0x2212c5[_0x7b9e('0x3f')][_0x7b9e('0x5f')])[_0x7b9e('0x27')](function(){if(_[_0x7b9e('0xb0')](_0x2212c5[_0x7b9e('0x3f')][_0x7b9e('0x5f')])){for(var _0x27521e=0x0;_0x27521e<_0x2212c5[_0x7b9e('0x3f')]['ids'][_0x7b9e('0x55')];_0x27521e+=0x1){socket[_0x7b9e('0xa6')](_0x7b9e('0x135'),{'SmsInteractionId':Number(_0x2212c5[_0x7b9e('0x3f')]['ids'][_0x27521e]),'UserId':Number(_0x2212c5['params']['id'])});}}else{socket['emit'](_0x7b9e('0x135'),{'SmsInteractionId':Number(_0x2212c5['query'][_0x7b9e('0x5f')]),'UserId':Number(_0x2212c5['params']['id'])});}});}})[_0x7b9e('0x27')](respondWithStatusCode(_0x425faa,null))['catch'](handleError(_0x425faa,null));};exports[_0x7b9e('0x136')]=function(_0x415d17,_0x2e727a){return db[_0x7b9e('0x39')]['find']({'where':{'id':_0x415d17[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x2e727a,null))[_0x7b9e('0x27')](function(_0xc6b379){if(_0xc6b379){return _0xc6b379[_0x7b9e('0x136')](_0x415d17[_0x7b9e('0x5c')]['ids'],_[_0x7b9e('0x111')](_0x415d17[_0x7b9e('0x5c')],[_0x7b9e('0x5f'),'id'])||{})['spread'](function(){for(var _0x191ccd=0x0;_0x191ccd<_0x415d17[_0x7b9e('0x5c')][_0x7b9e('0x5f')][_0x7b9e('0x55')];_0x191ccd+=0x1){socket[_0x7b9e('0xa6')](_0x7b9e('0x137'),{'OpenchannelInteractionId':Number(_0x415d17[_0x7b9e('0x5c')][_0x7b9e('0x5f')][_0x191ccd]),'UserId':Number(_0x415d17['params']['id'])});}return _0x415d17[_0x7b9e('0x5c')][_0x7b9e('0x5f')];});}})[_0x7b9e('0x27')](respondWithResult(_0x2e727a,null))[_0x7b9e('0x1b')](handleError(_0x2e727a,null));};exports[_0x7b9e('0x138')]=function(_0x3d06eb,_0x28d04d){return db[_0x7b9e('0x39')]['find']({'where':{'id':_0x3d06eb['params']['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x28d04d,null))['then'](function(_0x54a7f7){if(_0x54a7f7){return _0x54a7f7[_0x7b9e('0x138')](_0x3d06eb['query'][_0x7b9e('0x5f')])['then'](function(){if(_[_0x7b9e('0xb0')](_0x3d06eb[_0x7b9e('0x3f')][_0x7b9e('0x5f')])){for(var _0xd21935=0x0;_0xd21935<_0x3d06eb[_0x7b9e('0x3f')]['ids'][_0x7b9e('0x55')];_0xd21935+=0x1){socket[_0x7b9e('0xa6')](_0x7b9e('0x139'),{'OpenchannelInteractionId':Number(_0x3d06eb[_0x7b9e('0x3f')][_0x7b9e('0x5f')][_0xd21935]),'UserId':Number(_0x3d06eb[_0x7b9e('0x4d')]['id'])});}}else{socket[_0x7b9e('0xa6')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x3d06eb[_0x7b9e('0x3f')][_0x7b9e('0x5f')]),'UserId':Number(_0x3d06eb[_0x7b9e('0x4d')]['id'])});}});}})[_0x7b9e('0x27')](respondWithStatusCode(_0x28d04d,null))[_0x7b9e('0x1b')](handleError(_0x28d04d,null));};exports[_0x7b9e('0x13a')]=function(_0x5b7a85,_0x4672a8){return db[_0x7b9e('0x39')]['find']({'where':{'id':_0x5b7a85[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x4672a8,null))[_0x7b9e('0x27')](function(_0x2ef395){if(_0x2ef395){return _0x2ef395[_0x7b9e('0x13a')](_0x5b7a85[_0x7b9e('0x5c')][_0x7b9e('0x5f')],_[_0x7b9e('0x111')](_0x5b7a85[_0x7b9e('0x5c')],['ids','id'])||{})['spread'](function(){for(var _0x8dfb19=0x0;_0x8dfb19<_0x5b7a85['body'][_0x7b9e('0x5f')][_0x7b9e('0x55')];_0x8dfb19+=0x1){socket[_0x7b9e('0xa6')](_0x7b9e('0x13b'),{'WhatsappInteractionId':Number(_0x5b7a85[_0x7b9e('0x5c')][_0x7b9e('0x5f')][_0x8dfb19]),'UserId':Number(_0x5b7a85[_0x7b9e('0x4d')]['id'])});}return _0x5b7a85['body'][_0x7b9e('0x5f')];});}})[_0x7b9e('0x27')](respondWithResult(_0x4672a8,null))[_0x7b9e('0x1b')](handleError(_0x4672a8,null));};exports[_0x7b9e('0x13c')]=function(_0x38caf3,_0x453dbd){return db[_0x7b9e('0x39')]['find']({'where':{'id':_0x38caf3[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x453dbd,null))[_0x7b9e('0x27')](function(_0x537f5f){if(_0x537f5f){return _0x537f5f['removeWhatsappInteractions'](_0x38caf3[_0x7b9e('0x3f')][_0x7b9e('0x5f')]);}})[_0x7b9e('0x27')](respondWithStatusCode(_0x453dbd,null))['catch'](handleError(_0x453dbd,null));};exports[_0x7b9e('0x13d')]=function(_0x32c50a,_0x23b31b){var _0x4985b4={};var _0x25ddb7={};var _0x4b126c;var _0x152c86;return db[_0x7b9e('0x39')][_0x7b9e('0x92')]({'where':{'id':_0x32c50a[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x23b31b,null))[_0x7b9e('0x27')](function(_0x48d778){if(_0x48d778){_0x4b126c=_0x48d778;_0x25ddb7[_0x7b9e('0x4e')]=_['keys'](db[_0x7b9e('0x13e')][_0x7b9e('0x3a')]);_0x25ddb7[_0x7b9e('0x3f')]=_['keys'](_0x32c50a[_0x7b9e('0x3f')]);_0x25ddb7['filters']=_[_0x7b9e('0x53')](_0x25ddb7[_0x7b9e('0x4e')],_0x25ddb7['query']);_0x4985b4['attributes']=_[_0x7b9e('0x53')](_0x25ddb7[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x32c50a[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x4985b4[_0x7b9e('0x41')]=_0x4985b4['attributes'][_0x7b9e('0x55')]?_0x4985b4[_0x7b9e('0x41')]:_0x25ddb7['model'];_0x4985b4[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x32c50a[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x4985b4['where']=qs[_0x7b9e('0x52')](_['pick'](_0x32c50a[_0x7b9e('0x3f')],_0x25ddb7['filters']));if(_0x32c50a[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x4985b4[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x4985b4[_0x7b9e('0xcc')],{'$or':_[_0x7b9e('0x32')](_0x4985b4[_0x7b9e('0x41')],function(_0x4deb11){var _0x1eb7d5={};_0x1eb7d5[_0x4deb11]={'$like':'%'+_0x32c50a[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x1eb7d5;})});}_0x4985b4=_[_0x7b9e('0x57')]({},_0x4985b4,_0x32c50a[_0x7b9e('0x58')]);return _0x4b126c['getVoicePrefixes'](_0x4985b4);}})['then'](function(_0x11ed37){if(_0x11ed37){_0x152c86=_0x11ed37['length'];if(!_0x32c50a[_0x7b9e('0x3f')]['hasOwnProperty'](_0x7b9e('0xd4'))){_0x4985b4[_0x7b9e('0x21')]=qs[_0x7b9e('0x21')](_0x32c50a[_0x7b9e('0x3f')]['limit']);_0x4985b4[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x32c50a[_0x7b9e('0x3f')]['offset']);}return _0x4b126c[_0x7b9e('0x13d')](_0x4985b4);}})[_0x7b9e('0x27')](function(_0x20273d){if(_0x20273d){return _0x20273d?{'count':_0x152c86,'rows':_0x20273d}:null;}})['then'](respondWithResult(_0x23b31b,null))[_0x7b9e('0x1b')](handleError(_0x23b31b,null));};exports[_0x7b9e('0x13f')]=function(_0x2488e8,_0x27e4b8){var _0x56a0ac={};var _0x135a46={};var _0x2184a0;var _0x2ed595;return db['User']['findOne']({'where':{'id':_0x2488e8[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x27e4b8,null))[_0x7b9e('0x27')](function(_0x4c4b83){if(_0x4c4b83){_0x2184a0=_0x4c4b83;_0x135a46[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db[_0x7b9e('0x140')][_0x7b9e('0x3a')]);_0x135a46[_0x7b9e('0x3f')]=_[_0x7b9e('0x50')](_0x2488e8[_0x7b9e('0x3f')]);_0x135a46['filters']=_[_0x7b9e('0x53')](_0x135a46['model'],_0x135a46[_0x7b9e('0x3f')]);_0x56a0ac['attributes']=_[_0x7b9e('0x53')](_0x135a46[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x2488e8[_0x7b9e('0x3f')]['fields']));_0x56a0ac[_0x7b9e('0x41')]=_0x56a0ac[_0x7b9e('0x41')]['length']?_0x56a0ac[_0x7b9e('0x41')]:_0x135a46['model'];_0x56a0ac[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x2488e8[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x56a0ac['where']=qs[_0x7b9e('0x52')](_[_0x7b9e('0xcb')](_0x2488e8['query'],_0x135a46['filters']));if(_0x2488e8[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x56a0ac['where']=_[_0x7b9e('0x57')](_0x56a0ac[_0x7b9e('0xcc')],{'$or':_[_0x7b9e('0x32')](_0x56a0ac[_0x7b9e('0x41')],function(_0x2daba3){var _0x238172={};_0x238172[_0x2daba3]={'$like':'%'+_0x2488e8['query']['filter']+'%'};return _0x238172;})});}_0x56a0ac=_['merge']({},_0x56a0ac,_0x2488e8[_0x7b9e('0x58')]);return _0x2184a0[_0x7b9e('0x13f')](_0x56a0ac);}})[_0x7b9e('0x27')](function(_0x4497ec){if(_0x4497ec){_0x2ed595=_0x4497ec[_0x7b9e('0x55')];if(!_0x2488e8[_0x7b9e('0x3f')][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x56a0ac['limit']=qs[_0x7b9e('0x21')](_0x2488e8[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x56a0ac[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x2488e8[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}return _0x2184a0[_0x7b9e('0x13f')](_0x56a0ac);}})['then'](function(_0x361cb5){if(_0x361cb5){return _0x361cb5?{'count':_0x2ed595,'rows':_0x361cb5}:null;}})[_0x7b9e('0x27')](respondWithResult(_0x27e4b8,null))['catch'](handleError(_0x27e4b8,null));};exports[_0x7b9e('0x141')]=function(_0x14064d,_0x3524f4){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x14064d[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x3524f4,null))[_0x7b9e('0x27')](function(_0x4c8cbf){if(_0x4c8cbf){return _0x4c8cbf[_0x7b9e('0x141')](_0x14064d['body'][_0x7b9e('0x5f')],_[_0x7b9e('0x111')](_0x14064d[_0x7b9e('0x5c')],[_0x7b9e('0x5f'),'id'])||{});}})[_0x7b9e('0x27')](respondWithResult(_0x3524f4,null))['catch'](handleError(_0x3524f4,null));};exports[_0x7b9e('0x142')]=function(_0x224a16,_0x4c6738){return db['User'][_0x7b9e('0x35')]({'where':{'id':_0x224a16[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x4c6738,null))[_0x7b9e('0x27')](function(_0x2c4f1c){if(_0x2c4f1c){return _0x2c4f1c[_0x7b9e('0x142')](_0x224a16[_0x7b9e('0x3f')][_0x7b9e('0x5f')]);}})[_0x7b9e('0x27')](respondWithStatusCode(_0x4c6738,null))[_0x7b9e('0x1b')](handleError(_0x4c6738,null));};exports['getMailAccounts']=function(_0x6d3ebc,_0x52ceb1){var _0x3a2a28={};var _0x127c4a={};var _0x354393;var _0x1e5eb8;return db[_0x7b9e('0x39')][_0x7b9e('0x92')]({'where':{'id':_0x6d3ebc[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x52ceb1,null))[_0x7b9e('0x27')](function(_0xc58305){if(_0xc58305){_0x354393=_0xc58305;_0x127c4a[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db['MailAccount'][_0x7b9e('0x3a')]);_0x127c4a['query']=_['keys'](_0x6d3ebc[_0x7b9e('0x3f')]);_0x127c4a[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x127c4a[_0x7b9e('0x4e')],_0x127c4a[_0x7b9e('0x3f')]);_0x3a2a28['attributes']=_['intersection'](_0x127c4a[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x6d3ebc[_0x7b9e('0x3f')]['fields']));_0x3a2a28[_0x7b9e('0x41')]=_0x3a2a28[_0x7b9e('0x41')][_0x7b9e('0x55')]?_0x3a2a28[_0x7b9e('0x41')]:_0x127c4a[_0x7b9e('0x4e')];_0x3a2a28[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x6d3ebc[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x3a2a28[_0x7b9e('0xcc')]=qs[_0x7b9e('0x52')](_[_0x7b9e('0xcb')](_0x6d3ebc[_0x7b9e('0x3f')],_0x127c4a[_0x7b9e('0x52')]));if(_0x6d3ebc['query'][_0x7b9e('0x30')]){_0x3a2a28[_0x7b9e('0xcc')]=_['merge'](_0x3a2a28['where'],{'$or':_[_0x7b9e('0x32')](_0x3a2a28[_0x7b9e('0x41')],function(_0x3a8dd5){var _0xeaa785={};_0xeaa785[_0x3a8dd5]={'$like':'%'+_0x6d3ebc[_0x7b9e('0x3f')]['filter']+'%'};return _0xeaa785;})});}_0x3a2a28=_[_0x7b9e('0x57')]({},_0x3a2a28,_0x6d3ebc[_0x7b9e('0x58')]);return _0x354393[_0x7b9e('0x143')](_0x3a2a28);}})[_0x7b9e('0x27')](function(_0x4d2c6a){if(_0x4d2c6a){_0x1e5eb8=_0x4d2c6a['length'];if(!_0x6d3ebc[_0x7b9e('0x3f')][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x3a2a28['limit']=qs[_0x7b9e('0x21')](_0x6d3ebc[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x3a2a28[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x6d3ebc['query'][_0x7b9e('0x1f')]);}return _0x354393[_0x7b9e('0x143')](_0x3a2a28);}})[_0x7b9e('0x27')](function(_0x439ad7){if(_0x439ad7){return _0x439ad7?{'count':_0x1e5eb8,'rows':_0x439ad7}:null;}})['then'](respondWithResult(_0x52ceb1,null))[_0x7b9e('0x1b')](handleError(_0x52ceb1,null));};exports[_0x7b9e('0x144')]=function(_0x52b38a,_0x409b2b){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x52b38a[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x409b2b,null))[_0x7b9e('0x27')](function(_0x2e9bed){if(_0x2e9bed){return _0x2e9bed['addMailAccounts'](_0x52b38a[_0x7b9e('0x5c')][_0x7b9e('0x5f')],_[_0x7b9e('0x111')](_0x52b38a[_0x7b9e('0x5c')],[_0x7b9e('0x5f'),'id'])||{});}})[_0x7b9e('0x27')](respondWithResult(_0x409b2b,null))[_0x7b9e('0x1b')](handleError(_0x409b2b,null));};exports[_0x7b9e('0x145')]=function(_0x3ad3d1,_0x302670){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x3ad3d1[_0x7b9e('0x4d')]['id']}})['then'](handleEntityNotFound(_0x302670,null))[_0x7b9e('0x27')](function(_0x5b9dac){if(_0x5b9dac){return _0x5b9dac[_0x7b9e('0x145')](_0x3ad3d1[_0x7b9e('0x3f')]['ids']);}})[_0x7b9e('0x27')](respondWithStatusCode(_0x302670,null))[_0x7b9e('0x1b')](handleError(_0x302670,null));};exports[_0x7b9e('0x146')]=function(_0x23a1da,_0x15d167){var _0x400ca3={};var _0x266f01={};var _0x35d1a8;var _0x5579df;return db['User'][_0x7b9e('0x92')]({'where':{'id':_0x23a1da['params']['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x15d167,null))[_0x7b9e('0x27')](function(_0x435e5c){if(_0x435e5c){_0x35d1a8=_0x435e5c;_0x266f01[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db[_0x7b9e('0x147')][_0x7b9e('0x3a')]);_0x266f01[_0x7b9e('0x3f')]=_['keys'](_0x23a1da[_0x7b9e('0x3f')]);_0x266f01[_0x7b9e('0x52')]=_['intersection'](_0x266f01['model'],_0x266f01[_0x7b9e('0x3f')]);_0x400ca3[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x266f01[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x23a1da['query']['fields']));_0x400ca3[_0x7b9e('0x41')]=_0x400ca3[_0x7b9e('0x41')][_0x7b9e('0x55')]?_0x400ca3['attributes']:_0x266f01[_0x7b9e('0x4e')];_0x400ca3[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x23a1da[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x400ca3[_0x7b9e('0xcc')]=qs[_0x7b9e('0x52')](_['pick'](_0x23a1da[_0x7b9e('0x3f')],_0x266f01['filters']));if(_0x23a1da[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x400ca3[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x400ca3['where'],{'$or':_[_0x7b9e('0x32')](_0x400ca3['attributes'],function(_0x46b27e){var _0x1dc485={};_0x1dc485[_0x46b27e]={'$like':'%'+_0x23a1da[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x1dc485;})});}_0x400ca3=_['merge']({},_0x400ca3,_0x23a1da[_0x7b9e('0x58')]);return _0x35d1a8[_0x7b9e('0x146')](_0x400ca3);}})[_0x7b9e('0x27')](function(_0x246c6b){if(_0x246c6b){_0x5579df=_0x246c6b[_0x7b9e('0x55')];if(!_0x23a1da['query']['hasOwnProperty']('nolimit')){_0x400ca3[_0x7b9e('0x21')]=qs[_0x7b9e('0x21')](_0x23a1da[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x400ca3[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x23a1da[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}return _0x35d1a8[_0x7b9e('0x146')](_0x400ca3);}})[_0x7b9e('0x27')](function(_0x4b746c){if(_0x4b746c){return _0x4b746c?{'count':_0x5579df,'rows':_0x4b746c}:null;}})[_0x7b9e('0x27')](respondWithResult(_0x15d167,null))[_0x7b9e('0x1b')](handleError(_0x15d167,null));};exports['addOpenchannelAccounts']=function(_0x153ce0,_0x12eb82){return db['User'][_0x7b9e('0x35')]({'where':{'id':_0x153ce0[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x12eb82,null))['then'](function(_0x3e13cc){if(_0x3e13cc){return _0x3e13cc[_0x7b9e('0x148')](_0x153ce0[_0x7b9e('0x5c')]['ids'],_[_0x7b9e('0x111')](_0x153ce0[_0x7b9e('0x5c')],[_0x7b9e('0x5f'),'id'])||{});}})['then'](respondWithResult(_0x12eb82,null))[_0x7b9e('0x1b')](handleError(_0x12eb82,null));};exports['removeOpenchannelAccounts']=function(_0xb665d1,_0x294da4){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0xb665d1['params']['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x294da4,null))[_0x7b9e('0x27')](function(_0x5b528d){if(_0x5b528d){return _0x5b528d['removeOpenchannelAccounts'](_0xb665d1[_0x7b9e('0x3f')][_0x7b9e('0x5f')]);}})[_0x7b9e('0x27')](respondWithStatusCode(_0x294da4,null))[_0x7b9e('0x1b')](handleError(_0x294da4,null));};exports['getSmsAccounts']=function(_0x10e114,_0x310b20){var _0x1644a0={};var _0x2003b1={};var _0x4c3db3;var _0x326911;return db['User'][_0x7b9e('0x92')]({'where':{'id':_0x10e114[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x310b20,null))[_0x7b9e('0x27')](function(_0x24aa6b){if(_0x24aa6b){_0x4c3db3=_0x24aa6b;_0x2003b1[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db[_0x7b9e('0x149')][_0x7b9e('0x3a')]);_0x2003b1[_0x7b9e('0x3f')]=_[_0x7b9e('0x50')](_0x10e114[_0x7b9e('0x3f')]);_0x2003b1['filters']=_[_0x7b9e('0x53')](_0x2003b1[_0x7b9e('0x4e')],_0x2003b1[_0x7b9e('0x3f')]);_0x1644a0['attributes']=_[_0x7b9e('0x53')](_0x2003b1[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x10e114[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x1644a0[_0x7b9e('0x41')]=_0x1644a0[_0x7b9e('0x41')][_0x7b9e('0x55')]?_0x1644a0[_0x7b9e('0x41')]:_0x2003b1[_0x7b9e('0x4e')];_0x1644a0[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x10e114[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x1644a0['where']=qs['filters'](_[_0x7b9e('0xcb')](_0x10e114[_0x7b9e('0x3f')],_0x2003b1[_0x7b9e('0x52')]));if(_0x10e114['query'][_0x7b9e('0x30')]){_0x1644a0[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x1644a0['where'],{'$or':_[_0x7b9e('0x32')](_0x1644a0[_0x7b9e('0x41')],function(_0x2395b1){var _0x3f954a={};_0x3f954a[_0x2395b1]={'$like':'%'+_0x10e114[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x3f954a;})});}_0x1644a0=_[_0x7b9e('0x57')]({},_0x1644a0,_0x10e114[_0x7b9e('0x58')]);return _0x4c3db3[_0x7b9e('0x14a')](_0x1644a0);}})['then'](function(_0x2537a4){if(_0x2537a4){_0x326911=_0x2537a4[_0x7b9e('0x55')];if(!_0x10e114[_0x7b9e('0x3f')][_0x7b9e('0xd3')]('nolimit')){_0x1644a0[_0x7b9e('0x21')]=qs['limit'](_0x10e114[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x1644a0[_0x7b9e('0x1f')]=qs['offset'](_0x10e114[_0x7b9e('0x3f')]['offset']);}return _0x4c3db3['getSmsAccounts'](_0x1644a0);}})[_0x7b9e('0x27')](function(_0x5ad49a){if(_0x5ad49a){return _0x5ad49a?{'count':_0x326911,'rows':_0x5ad49a}:null;}})[_0x7b9e('0x27')](respondWithResult(_0x310b20,null))['catch'](handleError(_0x310b20,null));};exports[_0x7b9e('0x14b')]=function(_0x40be44,_0x21d517){return db[_0x7b9e('0x39')]['find']({'where':{'id':_0x40be44[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x21d517,null))[_0x7b9e('0x27')](function(_0x3f40dd){if(_0x3f40dd){return _0x3f40dd[_0x7b9e('0x14b')](_0x40be44['body'][_0x7b9e('0x5f')],_[_0x7b9e('0x111')](_0x40be44[_0x7b9e('0x5c')],[_0x7b9e('0x5f'),'id'])||{});}})[_0x7b9e('0x27')](respondWithResult(_0x21d517,null))['catch'](handleError(_0x21d517,null));};exports['removeSmsAccounts']=function(_0x3f207a,_0x4c4f0d){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x3f207a[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x4c4f0d,null))['then'](function(_0x78048){if(_0x78048){return _0x78048[_0x7b9e('0x14c')](_0x3f207a['query'][_0x7b9e('0x5f')]);}})['then'](respondWithStatusCode(_0x4c4f0d,null))[_0x7b9e('0x1b')](handleError(_0x4c4f0d,null));};exports[_0x7b9e('0x14d')]=function(_0x30ee80,_0x26eee0){var _0x334bbe={};var _0x31dab4={};var _0x25b01f;var _0x28726c;return db['User'][_0x7b9e('0x92')]({'where':{'id':_0x30ee80[_0x7b9e('0x4d')]['id']}})['then'](handleEntityNotFound(_0x26eee0,null))[_0x7b9e('0x27')](function(_0x49ed66){if(_0x49ed66){_0x25b01f=_0x49ed66;_0x31dab4[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db[_0x7b9e('0x14e')][_0x7b9e('0x3a')]);_0x31dab4['query']=_[_0x7b9e('0x50')](_0x30ee80['query']);_0x31dab4[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x31dab4[_0x7b9e('0x4e')],_0x31dab4[_0x7b9e('0x3f')]);_0x334bbe['attributes']=_['intersection'](_0x31dab4['model'],qs[_0x7b9e('0x54')](_0x30ee80[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x334bbe[_0x7b9e('0x41')]=_0x334bbe[_0x7b9e('0x41')][_0x7b9e('0x55')]?_0x334bbe[_0x7b9e('0x41')]:_0x31dab4[_0x7b9e('0x4e')];_0x334bbe[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x30ee80[_0x7b9e('0x3f')]['sort']);_0x334bbe['where']=qs['filters'](_['pick'](_0x30ee80[_0x7b9e('0x3f')],_0x31dab4[_0x7b9e('0x52')]));if(_0x30ee80[_0x7b9e('0x3f')]['filter']){_0x334bbe[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x334bbe[_0x7b9e('0xcc')],{'$or':_[_0x7b9e('0x32')](_0x334bbe[_0x7b9e('0x41')],function(_0x5a51cb){var _0x168009={};_0x168009[_0x5a51cb]={'$like':'%'+_0x30ee80[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x168009;})});}_0x334bbe=_['merge']({},_0x334bbe,_0x30ee80[_0x7b9e('0x58')]);return _0x25b01f['getChatWebsites'](_0x334bbe);}})['then'](function(_0x18186f){if(_0x18186f){_0x28726c=_0x18186f[_0x7b9e('0x55')];if(!_0x30ee80[_0x7b9e('0x3f')][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x334bbe[_0x7b9e('0x21')]=qs['limit'](_0x30ee80[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x334bbe[_0x7b9e('0x1f')]=qs['offset'](_0x30ee80[_0x7b9e('0x3f')]['offset']);}return _0x25b01f['getChatWebsites'](_0x334bbe);}})[_0x7b9e('0x27')](function(_0x232079){if(_0x232079){return _0x232079?{'count':_0x28726c,'rows':_0x232079}:null;}})[_0x7b9e('0x27')](respondWithResult(_0x26eee0,null))[_0x7b9e('0x1b')](handleError(_0x26eee0,null));};exports[_0x7b9e('0x14f')]=function(_0x5266a9,_0x7f3273){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x5266a9[_0x7b9e('0x4d')]['id']}})['then'](handleEntityNotFound(_0x7f3273,null))[_0x7b9e('0x27')](function(_0x50fa8c){if(_0x50fa8c){return _0x50fa8c[_0x7b9e('0x14f')](_0x5266a9['body'][_0x7b9e('0x5f')],_[_0x7b9e('0x111')](_0x5266a9[_0x7b9e('0x5c')],[_0x7b9e('0x5f'),'id'])||{});}})[_0x7b9e('0x27')](respondWithResult(_0x7f3273,null))['catch'](handleError(_0x7f3273,null));};exports[_0x7b9e('0x150')]=function(_0x173c22,_0xb010b7){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0x173c22[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0xb010b7,null))[_0x7b9e('0x27')](function(_0xf9ef7e){if(_0xf9ef7e){return _0xf9ef7e[_0x7b9e('0x150')](_0x173c22[_0x7b9e('0x3f')]['ids']);}})[_0x7b9e('0x27')](respondWithStatusCode(_0xb010b7,null))[_0x7b9e('0x1b')](handleError(_0xb010b7,null));};exports[_0x7b9e('0x151')]=function(_0xb9c3c1,_0x29fba4){var _0x330117={};var _0x4df999={};var _0x3c543b;var _0x5ab471;return db[_0x7b9e('0x39')][_0x7b9e('0x92')]({'where':{'id':_0xb9c3c1[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x29fba4,null))[_0x7b9e('0x27')](function(_0x188df3){if(_0x188df3){_0x3c543b=_0x188df3;_0x4df999[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](db['WhatsappAccount'][_0x7b9e('0x3a')]);_0x4df999[_0x7b9e('0x3f')]=_[_0x7b9e('0x50')](_0xb9c3c1[_0x7b9e('0x3f')]);_0x4df999[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x4df999[_0x7b9e('0x4e')],_0x4df999['query']);_0x330117[_0x7b9e('0x41')]=_['intersection'](_0x4df999[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0xb9c3c1[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x330117[_0x7b9e('0x41')]=_0x330117[_0x7b9e('0x41')]['length']?_0x330117[_0x7b9e('0x41')]:_0x4df999[_0x7b9e('0x4e')];_0x330117[_0x7b9e('0xc9')]=qs['sort'](_0xb9c3c1['query'][_0x7b9e('0xca')]);_0x330117[_0x7b9e('0xcc')]=qs[_0x7b9e('0x52')](_[_0x7b9e('0xcb')](_0xb9c3c1[_0x7b9e('0x3f')],_0x4df999[_0x7b9e('0x52')]));if(_0xb9c3c1[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0x330117[_0x7b9e('0xcc')]=_['merge'](_0x330117[_0x7b9e('0xcc')],{'$or':_['map'](_0x330117['attributes'],function(_0x5a3a8d){var _0x614ed6={};_0x614ed6[_0x5a3a8d]={'$like':'%'+_0xb9c3c1[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x614ed6;})});}_0x330117=_[_0x7b9e('0x57')]({},_0x330117,_0xb9c3c1[_0x7b9e('0x58')]);return _0x3c543b[_0x7b9e('0x151')](_0x330117);}})[_0x7b9e('0x27')](function(_0x2b4ffe){if(_0x2b4ffe){_0x5ab471=_0x2b4ffe[_0x7b9e('0x55')];if(!_0xb9c3c1[_0x7b9e('0x3f')][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x330117[_0x7b9e('0x21')]=qs[_0x7b9e('0x21')](_0xb9c3c1['query'][_0x7b9e('0x21')]);_0x330117['offset']=qs[_0x7b9e('0x1f')](_0xb9c3c1[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}return _0x3c543b[_0x7b9e('0x151')](_0x330117);}})[_0x7b9e('0x27')](function(_0x447dce){if(_0x447dce){return _0x447dce?{'count':_0x5ab471,'rows':_0x447dce}:null;}})[_0x7b9e('0x27')](respondWithResult(_0x29fba4,null))['catch'](handleError(_0x29fba4,null));};exports[_0x7b9e('0x152')]=function(_0xc191ff,_0x4c8350){return db[_0x7b9e('0x39')][_0x7b9e('0x35')]({'where':{'id':_0xc191ff[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x4c8350,null))[_0x7b9e('0x27')](function(_0x26a433){if(_0x26a433){return _0x26a433['addWhatsappAccounts'](_0xc191ff['body'][_0x7b9e('0x5f')],_[_0x7b9e('0x111')](_0xc191ff['body'],['ids','id'])||{});}})[_0x7b9e('0x27')](respondWithResult(_0x4c8350,null))[_0x7b9e('0x1b')](handleError(_0x4c8350,null));};exports[_0x7b9e('0x153')]=function(_0x226f83,_0x5650fd){return db[_0x7b9e('0x39')]['find']({'where':{'id':_0x226f83[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x5650fd,null))['then'](function(_0x2404d2){if(_0x2404d2){return _0x2404d2['removeWhatsappAccounts'](_0x226f83[_0x7b9e('0x3f')][_0x7b9e('0x5f')]);}})[_0x7b9e('0x27')](respondWithStatusCode(_0x5650fd,null))['catch'](handleError(_0x5650fd,null));};exports[_0x7b9e('0x154')]=function(_0x4503f9,_0x1d5b72){var _0xcf90d6={};var _0x25897e={};var _0x1b158b;var _0x3916e8;return db[_0x7b9e('0x39')][_0x7b9e('0x92')]({'where':{'id':_0x4503f9['params']['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x1d5b72,null))['then'](function(_0x266f3e){if(_0x266f3e){_0x1b158b=_0x266f3e;_0x25897e[_0x7b9e('0x4e')]=_['keys'](db[_0x7b9e('0x155')]['rawAttributes']);_0x25897e[_0x7b9e('0x3f')]=_[_0x7b9e('0x50')](_0x4503f9[_0x7b9e('0x3f')]);_0x25897e[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x25897e[_0x7b9e('0x4e')],_0x25897e[_0x7b9e('0x3f')]);_0xcf90d6[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x25897e[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x4503f9[_0x7b9e('0x3f')]['fields']));_0xcf90d6[_0x7b9e('0x41')]=_0xcf90d6[_0x7b9e('0x41')][_0x7b9e('0x55')]?_0xcf90d6['attributes']:_0x25897e['model'];_0xcf90d6['order']=qs[_0x7b9e('0xca')](_0x4503f9[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0xcf90d6['where']=qs['filters'](_[_0x7b9e('0xcb')](_0x4503f9['query'],_0x25897e[_0x7b9e('0x52')]));if(_0x4503f9[_0x7b9e('0x3f')][_0x7b9e('0x30')]){_0xcf90d6[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0xcf90d6['where'],{'$or':_['map'](_0xcf90d6[_0x7b9e('0x41')],function(_0xbc5e){var _0x20ae2d={};_0x20ae2d[_0xbc5e]={'$like':'%'+_0x4503f9[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'};return _0x20ae2d;})});}_0xcf90d6=_[_0x7b9e('0x57')]({},_0xcf90d6,_0x4503f9['options']);return _0x1b158b[_0x7b9e('0x154')](_0xcf90d6);}})[_0x7b9e('0x27')](function(_0x2f23c9){if(_0x2f23c9){_0x3916e8=_0x2f23c9[_0x7b9e('0x55')];if(!_0x4503f9['query']['hasOwnProperty']('nolimit')){_0xcf90d6['limit']=qs[_0x7b9e('0x21')](_0x4503f9[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0xcf90d6[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x4503f9[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}return _0x1b158b['getSquareProjects'](_0xcf90d6);}})[_0x7b9e('0x27')](function(_0x48ad30){if(_0x48ad30){return _0x48ad30?{'count':_0x3916e8,'rows':_0x48ad30}:null;}})[_0x7b9e('0x27')](respondWithResult(_0x1d5b72,null))[_0x7b9e('0x1b')](handleError(_0x1d5b72,null));};exports[_0x7b9e('0x156')]=function(_0x2bb4cd,_0x46af61){return db['User'][_0x7b9e('0x35')]({'where':{'id':_0x2bb4cd[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x46af61,null))[_0x7b9e('0x27')](function(_0x3cd46d){if(_0x3cd46d){return _0x3cd46d[_0x7b9e('0x156')](_0x2bb4cd[_0x7b9e('0x5c')]['ids'],_[_0x7b9e('0x111')](_0x2bb4cd[_0x7b9e('0x5c')],[_0x7b9e('0x5f'),'id'])||{});}})['then'](respondWithResult(_0x46af61,null))[_0x7b9e('0x1b')](handleError(_0x46af61,null));};exports['removeSquareProjects']=function(_0x5d1fc2,_0x541abf){return db['User'][_0x7b9e('0x35')]({'where':{'id':_0x5d1fc2['params']['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x541abf,null))[_0x7b9e('0x27')](function(_0x4766d6){if(_0x4766d6){return _0x4766d6['removeSquareProjects'](_0x5d1fc2[_0x7b9e('0x3f')][_0x7b9e('0x5f')]);}})['then'](respondWithStatusCode(_0x541abf,null))[_0x7b9e('0x1b')](handleError(_0x541abf,null));};exports[_0x7b9e('0x157')]=function(_0x17289a,_0x5c9768){var _0x403723={},_0x178305={},_0x477014={'count':0x0,'rows':[]};var _0x3420b7=db[_0x7b9e('0x158')][_0x7b9e('0x3a')];_0x178305[_0x7b9e('0x4e')]=_[_0x7b9e('0x50')](_0x3420b7);_0x178305['query']=_['keys'](_0x17289a['query']);_0x178305[_0x7b9e('0x52')]=_[_0x7b9e('0x53')](_0x178305[_0x7b9e('0x4e')],_0x178305[_0x7b9e('0x3f')]);_0x178305['filters']=_[_0x7b9e('0xfb')](_0x178305[_0x7b9e('0x52')],[_0x7b9e('0x159'),_0x7b9e('0x15a'),_0x7b9e('0x15b'),_0x7b9e('0x15c'),_0x7b9e('0x15d'),_0x7b9e('0x15e'),_0x7b9e('0x15f'),_0x7b9e('0x160'),_0x7b9e('0x161'),_0x7b9e('0x162'),_0x7b9e('0x163'),_0x7b9e('0x164'),_0x7b9e('0x165'),_0x7b9e('0x166'),_0x7b9e('0x167'),_0x7b9e('0x168'),_0x7b9e('0x169'),_0x7b9e('0x166'),_0x7b9e('0x16a'),_0x7b9e('0x16b'),'$contained',_0x7b9e('0x16c')]);_0x403723[_0x7b9e('0x41')]=_[_0x7b9e('0x53')](_0x178305[_0x7b9e('0x4e')],qs[_0x7b9e('0x54')](_0x17289a[_0x7b9e('0x3f')][_0x7b9e('0x54')]));_0x403723[_0x7b9e('0x41')]=_0x403723[_0x7b9e('0x41')][_0x7b9e('0x55')]?_0x403723[_0x7b9e('0x41')]:_0x178305[_0x7b9e('0x4e')];if(!_0x17289a[_0x7b9e('0x3f')]['hasOwnProperty'](_0x7b9e('0xd4'))){_0x403723[_0x7b9e('0x21')]=qs['limit'](_0x17289a[_0x7b9e('0x3f')][_0x7b9e('0x21')]);_0x403723[_0x7b9e('0x1f')]=qs[_0x7b9e('0x1f')](_0x17289a[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}_0x403723[_0x7b9e('0xc9')]=qs[_0x7b9e('0xca')](_0x17289a[_0x7b9e('0x3f')][_0x7b9e('0xca')]);_0x403723[_0x7b9e('0xcc')]=qs[_0x7b9e('0x52')](_[_0x7b9e('0xcb')](_0x17289a[_0x7b9e('0x3f')],_0x178305[_0x7b9e('0x52')]));if(_0x17289a[_0x7b9e('0x3f')]['filter']){_0x403723[_0x7b9e('0xcc')]=_[_0x7b9e('0x57')](_0x403723['where'],{'$or':_[_0x7b9e('0x32')](_0x403723[_0x7b9e('0x41')],function(_0x33ac6c){var _0x2655c4={};_0x2655c4[_0x33ac6c]={'$like':'%'+_0x17289a['query'][_0x7b9e('0x30')]+'%'};return _0x2655c4;})});}_0x403723[_0x7b9e('0xcc')]={'$and':[_0x403723[_0x7b9e('0xcc')],{'$or':[{'UserId':_0x17289a[_0x7b9e('0x4d')]['id']},{'OwnerId':_0x17289a[_0x7b9e('0x4d')]['id']}]}]};_0x403723=_[_0x7b9e('0x57')]({},_0x403723,_0x17289a[_0x7b9e('0x58')]);var _0x206a32={'where':_0x403723[_0x7b9e('0xcc')]};return db[_0x7b9e('0x158')][_0x7b9e('0x22')](_0x206a32)[_0x7b9e('0x27')](function(_0xf4057f){_0x477014[_0x7b9e('0x22')]=_0xf4057f;if(_0x17289a[_0x7b9e('0x3f')][_0x7b9e('0x56')]){_0x403723[_0x7b9e('0x40')]=[{'attributes':['id',_0x7b9e('0x16d'),_0x7b9e('0x16e'),_0x7b9e('0xe8')],'model':db[_0x7b9e('0x16f')],'as':_0x7b9e('0x170')},{'attributes':['id',_0x7b9e('0x36'),'dialActive'],'model':db[_0x7b9e('0xa8')],'as':_0x7b9e('0xd5')}];}return db[_0x7b9e('0x158')][_0x7b9e('0x43')](_0x403723);})['then'](function(_0x3cc483){_0x477014[_0x7b9e('0x44')]=_0x3cc483;return _0x477014;})['then'](respondWithFilteredResult(_0x5c9768,_0x403723))[_0x7b9e('0x1b')](handleError(_0x5c9768,null));};exports[_0x7b9e('0x171')]=function(_0x276b78,_0x21eada){if(!_[_0x7b9e('0x64')](_0x276b78[_0x7b9e('0x2c')]['id'])&&(_0x276b78[_0x7b9e('0x2c')][_0x7b9e('0x29')]==_0x7b9e('0x2a')||_0x276b78['user'][_0x7b9e('0x29')]==_0x7b9e('0x2c'))){return db[_0x7b9e('0x39')][_0x7b9e('0x92')]({'where':{'id':_0x276b78[_0x7b9e('0x4d')]['id']},'raw':!![]})[_0x7b9e('0x27')](function(_0x38617e){return authService[_0x7b9e('0x172')](_0x38617e);})[_0x7b9e('0x27')](function(_0x2b670c){if(_0x2b670c){return _0x21eada[_0x7b9e('0x1c')](0xc8)['json']({'api_key':_0x2b670c[_0x7b9e('0x173')]});}else{return _0x21eada['status'](0xcc)[_0x7b9e('0x1e')]({'message':_0x7b9e('0x174')});}})[_0x7b9e('0x1b')](handleError(_0x21eada,0x193));}else{return _0x21eada[_0x7b9e('0x1c')](0x191)['json']({'message':_0x7b9e('0x175')});}};exports[_0x7b9e('0x176')]=function(_0x5b4eaa,_0x40ee59){if(!_[_0x7b9e('0x64')](_0x5b4eaa['user']['id'])&&(_0x5b4eaa[_0x7b9e('0x2c')][_0x7b9e('0x29')]=='admin'||_0x5b4eaa['user'][_0x7b9e('0x29')]==_0x7b9e('0x2c'))){return db[_0x7b9e('0x39')]['find']({'where':{'id':_0x5b4eaa[_0x7b9e('0x4d')]['id']}})['then'](function(_0x595f87){return authService['generateApiKey'](_0x595f87);})['then'](function(_0x18120f){return db[_0x7b9e('0x39')][_0x7b9e('0x25')]({'apiKeyIat':_0x18120f[_0x7b9e('0x177')],'apiKeyNonce':_0x18120f[_0x7b9e('0x178')]},{'where':{'id':_0x5b4eaa[_0x7b9e('0x4d')]['id']}})['then'](function(){return _0x40ee59[_0x7b9e('0x1c')](0xc8)[_0x7b9e('0x1e')]({'api_key':_0x18120f['token']});});})['catch'](handleError(_0x40ee59,0x193));}else{return _0x40ee59[_0x7b9e('0x1c')](0x191)[_0x7b9e('0x1e')]({'message':_0x7b9e('0x175')});}};exports['removeApiKey']=function(_0x5807d8,_0x585bfa){if(!_[_0x7b9e('0x64')](_0x5807d8['user']['id'])&&(_0x5807d8[_0x7b9e('0x2c')][_0x7b9e('0x29')]==_0x7b9e('0x2a')||_0x5807d8[_0x7b9e('0x2c')]['role']=='user')){return db[_0x7b9e('0x39')]['find']({'where':{'id':_0x5807d8[_0x7b9e('0x4d')]['id']}})[_0x7b9e('0x27')](handleEntityNotFound(_0x585bfa,null))[_0x7b9e('0x27')](function(_0x20567d){if(_0x20567d&&_0x20567d[_0x7b9e('0x179')]&&_0x20567d[_0x7b9e('0x17a')])return _0x20567d;else throw{'message':'API\x20key\x20not\x20available'};})[_0x7b9e('0x27')](function(_0x38eac8){return db[_0x7b9e('0x39')]['update']({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x5807d8['params']['id']}});})[_0x7b9e('0x27')](respondWithStatusCode(_0x585bfa,0xc8))[_0x7b9e('0x1b')](handleError(_0x585bfa,0x193));}else{return _0x585bfa[_0x7b9e('0x1c')](0x191)[_0x7b9e('0x1e')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0x7b9e('0x17b')]=function(_0x35e26b,_0x49bcc9){var _0x4a943e=_0x35e26b['user'][_0x7b9e('0x28')]({'plain':!![]});if(!_0x4a943e){return _0x49bcc9[_0x7b9e('0x1c')](0x191)[_0x7b9e('0x37')](_0x7b9e('0x17c'));}else{return _0x49bcc9[_0x7b9e('0x1c')](0xc8)[_0x7b9e('0x1e')](_0x4a943e);}};exports[_0x7b9e('0x17d')]=function(_0x30ec36,_0x5ebad0){var _0x5a77ca={'offset':0x0},_0x1884c8={'count':0x0,'rows':[]};Promise['resolve']()[_0x7b9e('0x27')](function(){if(!_0x30ec36[_0x7b9e('0x3f')][_0x7b9e('0x30')]&&!_0x30ec36[_0x7b9e('0x3f')]['teams']&&!_0x30ec36[_0x7b9e('0x3f')][_0x7b9e('0x17e')])return[];return Promise[_0x7b9e('0xfd')]()['then'](function(){var _0x18da31=[];if(!_[_0x7b9e('0x85')](_0x30ec36[_0x7b9e('0x3f')][_0x7b9e('0x17f')])){_0x18da31[_0x7b9e('0x42')](db[_0x7b9e('0x10f')]['findAll']({'attributes':['id',_0x7b9e('0x36')],'where':{'id':_0x30ec36['query'][_0x7b9e('0x17f')]}}));}if(!_[_0x7b9e('0x85')](_0x30ec36['query'][_0x7b9e('0x17e')])){_0x18da31[_0x7b9e('0x42')](db[_0x7b9e('0xa8')][_0x7b9e('0x43')]({'attributes':['id',_0x7b9e('0x36')],'type':_0x7b9e('0x180'),'where':{'id':_0x30ec36[_0x7b9e('0x3f')][_0x7b9e('0x17e')]}}));}return Promise[_0x7b9e('0x4b')](_0x18da31);})[_0x7b9e('0x27')](function(_0x2cd77e){var _0x441a61=_[_0x7b9e('0x122')](_0x2cd77e)['map'](function(_0x1fd918){return _0x1fd918[_0x7b9e('0x125')]({'attributes':['id',_0x7b9e('0x36'),_0x7b9e('0x60'),_0x7b9e('0x9a')],'raw':!![]});});return Promise[_0x7b9e('0x4b')](_0x441a61);})[_0x7b9e('0x27')](function(_0x113924){var _0xb08980=_[_0x7b9e('0x122')](_0x113924);if(!_0x30ec36[_0x7b9e('0x3f')]['filter'])return _0xb08980;if(_['isEmpty'](_0xb08980)){return db[_0x7b9e('0x39')]['findAll']({'attributes':['id',_0x7b9e('0x36'),'internal',_0x7b9e('0x9a')],'where':{'role':_0x7b9e('0x2e'),'$or':[db[_0x7b9e('0x65')]['where'](db['sequelize']['fn'](_0x7b9e('0x181'),db[_0x7b9e('0x65')][_0x7b9e('0x182')]('name')),{'$like':'%'+_0x30ec36[_0x7b9e('0x3f')][_0x7b9e('0x30')][_0x7b9e('0xa1')]()+'%'}),{'internal':{'$like':'%'+_0x30ec36[_0x7b9e('0x3f')][_0x7b9e('0x30')]+'%'}}]},'raw':!![]});}else{return _(_0xb08980)[_0x7b9e('0x122')]()[_0x7b9e('0x30')](function(_0x1d3207){return _0x1d3207[_0x7b9e('0x36')][_0x7b9e('0xa1')]()[_0x7b9e('0x34')](_0x30ec36[_0x7b9e('0x3f')]['filter'][_0x7b9e('0xa1')]())||_0x1d3207[_0x7b9e('0x60')][_0x7b9e('0x183')]()[_0x7b9e('0x34')](_0x30ec36[_0x7b9e('0x3f')][_0x7b9e('0x30')]);})['value']();}})[_0x7b9e('0x27')](function(_0x11d37c){var _0x24f446='name';var _0x304449='asc';if(_0x30ec36[_0x7b9e('0x3f')][_0x7b9e('0xca')]){var _0x304449=_0x30ec36[_0x7b9e('0x3f')][_0x7b9e('0xca')][0x0]==='-'?'desc':_0x7b9e('0x184');var _0x24f446=_0x304449===_0x7b9e('0x184')?_0x30ec36[_0x7b9e('0x3f')][_0x7b9e('0xca')]:_0x30ec36[_0x7b9e('0x3f')][_0x7b9e('0xca')][_0x7b9e('0x185')](0x1);}return _(_0x11d37c)[_0x7b9e('0x186')]('id')[_0x7b9e('0x187')]([function(_0xe2dff0){return _0x24f446===_0x7b9e('0x36')?_0xe2dff0[_0x24f446]['toLowerCase']():_0xe2dff0[_0x24f446];}],[_0x304449])[_0x7b9e('0x32')](function(_0x41dd05){return _[_0x7b9e('0xcb')](_0x41dd05,['id',_0x7b9e('0x36'),_0x7b9e('0x60'),'online']);})[_0x7b9e('0x33')]();})['then'](function(_0x15fa08){return client[_0x7b9e('0x188')](_0x7b9e('0x2d'),_0x30ec36)[_0x7b9e('0x27')](function(_0x58a816){if(_0x58a816[_0x7b9e('0x17')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x82a4b6=_0x58a816[_0x7b9e('0x1a')];var _0x4f8c6b=jayson[_0x7b9e('0x189')][_0x7b9e('0x11')]({'port':0x232c});return _0x4f8c6b[_0x7b9e('0x188')](_0x7b9e('0x2d'),_0x30ec36)[_0x7b9e('0x27')](function(_0x30825f){if(_0x30825f[_0x7b9e('0x17')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');var _0x1017b1=_0x30825f['result'];return _[_0x7b9e('0x57')]({},_0x1017b1,_0x82a4b6);});})['then'](function(_0xfb213){return _['map'](_0x15fa08,function(_0x527e11){var _0x4d2104=_['find'](_0xfb213['rows'],['id',_0x527e11['id']]);if(!_0x4d2104||!_0x527e11[_0x7b9e('0x9a')]){_0x527e11[_0x7b9e('0x1c')]='offline';}else if(_0x4d2104[_0x7b9e('0x9c')]){_0x527e11[_0x7b9e('0x1c')]=_0x7b9e('0xff');}else{_0x527e11[_0x7b9e('0x1c')]=_[_0x7b9e('0x34')]([_0x7b9e('0x18a'),_0x7b9e('0x18b'),_0x7b9e('0x18c'),_0x7b9e('0x18d'),null,undefined],_0x4d2104[_0x7b9e('0x18e')])?_0x7b9e('0x9a'):_0x7b9e('0x18f');}return _0x527e11;});});});})[_0x7b9e('0x27')](function(_0x47b430){if(!_0x30ec36['query'][_0x7b9e('0xd3')](_0x7b9e('0xd4'))){_0x5a77ca[_0x7b9e('0x21')]=qs['limit'](_0x30ec36[_0x7b9e('0x3f')]['limit']||0xa);_0x5a77ca['offset']=qs[_0x7b9e('0x1f')](_0x30ec36[_0x7b9e('0x3f')][_0x7b9e('0x1f')]);}_0x1884c8[_0x7b9e('0x22')]=_0x47b430[_0x7b9e('0x55')];_0x1884c8[_0x7b9e('0x44')]=_0x5a77ca[_0x7b9e('0x21')]?_0x47b430[_0x7b9e('0x190')](_0x5a77ca[_0x7b9e('0x1f')],_0x5a77ca[_0x7b9e('0x1f')]+_0x5a77ca[_0x7b9e('0x21')]):_0x47b430;return _0x1884c8;})[_0x7b9e('0x27')](respondWithFilteredResult(_0x5ebad0,_0x5a77ca))[_0x7b9e('0x1b')](handleError(_0x5ebad0,null));};function get_open_tabs(_0x52405c,_0x595098){var _0x4eb708=_0x52405c[_0x7b9e('0x191')](0x0)[_0x7b9e('0x192')]()+_0x52405c[_0x7b9e('0x190')](0x1);var _0x43495a={'type':db[_0x7b9e('0x8d')]['QueryTypes'][_0x7b9e('0x68')],'raw':!![]};return new BPromise(function(_0x16d342,_0x3718c1){var _0x239ba4=squel[_0x7b9e('0x193')]()['field'](_0x7b9e('0x194')+_0x4eb708+_0x7b9e('0x195'),'id')[_0x7b9e('0x196')](_0x7b9e('0x197'))[_0x7b9e('0x198')](_0x7b9e('0x199')+_0x52405c+_0x7b9e('0x19a'),'ui')[_0x7b9e('0xcc')](_0x7b9e('0x19b'),_0x595098['id']);return db[_0x7b9e('0x65')][_0x7b9e('0x3f')](_0x239ba4['toString'](),_0x43495a)[_0x7b9e('0x27')](function(_0x3c463a){_0x595098[_0x4eb708+'OpenTabs']=_0x3c463a;_0x16d342(_0x3c463a);})[_0x7b9e('0x1b')](function(_0x5c8783){_0x3718c1(_0x5c8783);});});};
\ No newline at end of file
+var _0xb7e7=['UserProfileSection','autoAssociation','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','each','findAll','isEmpty','map','changePassword','oldPassword','newPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','Wrong\x20credentials','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','updatePasswordsHistory','addQueues','channel','voicePause','interface','isValidChannel','Unknown\x20channel','capitalize','Queues','penalty','toLowerCase','QueueId','emit','Queue:save','voice','online','format','SIP/%s','UserVoiceQueueRt','upsert','removeQueues','remove','Queue:remove','addAvatar','userpic','file','filename','getAvatar','join','root','server/files/images/logos/default_profile.png','download','existsSync','server/files/images/','getOpenTabs','chat','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','MailOpenTabs','MAIL','SmsOpenTabs','WhatsappOpenTabs','getContacts','CmContact','order','sort','pick','hasOwnProperty','CmList','List','tag','nolimit','getQueues','Queue','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','VoiceRecording','UserId','getScreenRecordings','ScreenRecording','getChatInteractions','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','FaxInteraction','getWhatsappInteractions','WhatsappInteraction','login','phone','mobile','loginInPause','LOCAL/%s@from-sip/n','intrf','user:%s','user:forcelogout','headers','x-forwarded-for','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','UserVoiceQueue.penalty','forEach','YYYY-MM-DD\x20HH:mm:ss','getChannels','LOGIN','device','PAUSE','MemberReport','bulkCreate','concat','LOGININPAUSE','isMiddleware','resolve','logout','pause','updateAttributes','DEFAULT\x20PAUSE','unpause','mailPause','faxPause','openchannelPause','whatsapppause','pauseType','lastPauseAt','QueuePause','manual','set','%s%s','Pause','getTeams','Team','addTeams','getVoiceQueues','setDataValue','Voice','getChatQueues','Chat','getMailQueues','getSmsQueues','Sms','getWhatsappQueues','Whatsapp','getFaxQueues','getOpenchannelQueues','Openchannel','flatten','transaction','getDataValue','removeTeams','Mail','Fax','removeAgent','getLists','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','spread','user_has_chat_interactions:save','removeChatInteractions','isArray','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','ChatWebsite','getChatWebsites','addChatWebsites','removeChatWebsites','WhatsappAccount','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','removeSquareProjects','getScheduledCalls','$and','$or','$gt','$gte','$lt','$lte','$eq','$not','$between','$notBetween','$in','$notLike','$iLike','$like','$overlap','$contained','$any','CmHopper','firstName','lastName','dialActive','getApiKey','retrieveApiKey','token','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','nonce','removeApiKey','apiKeyNonce','apiKeyIat','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','queues','teams','inbound','lower','col','toString','asc','uniqBy','client','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unknown','unavailable','ringing','voiceStatus','busy','slice','charAt','toUpperCase','SELECT','select','InteractionId','field','ui.createdAt','user_has_','_interactions','ui.UserId\x20=\x20?','OpenTabs','moment','util','lodash','jayson/promise','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','./user.socket','register','defaults','localhost','http','request','info','request\x20sent','stringify','error','code','message','User,\x20%s,\x20%s','result','catch','sendStatus','status','end','json','offset','undefined','count','limit','update','then','get','role','admin','Users','Agents','agent','Telephones','telephone','filter','ignore','value','includes','find','name','UserProfileResource','destroy','stack','send','index','User','rawAttributes','fieldName','type','key','password','where','query','includeAll','include','attributes','true','rows','length','push','dataValues','sms','mail','all','show','params','differenceBy','keys','filters','intersection','model','fields','merge','options','openTabs','openchannel','whatsapp','fax','body','describe','addContacts','omit','ids','internal','Setting','findById','max','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)','isNil','from','voicemail','mailbox','VoiceMail','fullname','email','permissions','101','102','103','105','106','107','109','100','111','115','create','user','Unauthorized','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'];(function(_0x49c027,_0x152ca6){var _0x130613=function(_0x3d5734){while(--_0x3d5734){_0x49c027['push'](_0x49c027['shift']());}};_0x130613(++_0x152ca6);}(_0xb7e7,0x121));var _0x7b7e=function(_0x341e0f,_0x4a09d0){_0x341e0f=_0x341e0f-0x0;var _0x59555a=_0xb7e7[_0x341e0f];return _0x59555a;};'use strict';var moment=require(_0x7b7e('0x0'));var BPromise=require('bluebird');var util=require(_0x7b7e('0x1'));var path=require('path');var fs=require('fs');var _=require(_0x7b7e('0x2'));var squel=require('squel');var jayson=require(_0x7b7e('0x3'));var Redis=require('ioredis');var authService=require(_0x7b7e('0x4'));var qs=require(_0x7b7e('0x5'));var logger=require(_0x7b7e('0x6'))('api');var utils=require('../../config/utils');var config=require(_0x7b7e('0x7'));var licenseUtil=require(_0x7b7e('0x8'));var db=require(_0x7b7e('0x9'))['db'];var socket=require('socket.io-emitter')(new Redis(config[_0x7b7e('0xa')]));require(_0x7b7e('0xb'))[_0x7b7e('0xc')](socket);config[_0x7b7e('0xa')]=_[_0x7b7e('0xd')](config[_0x7b7e('0xa')],{'host':_0x7b7e('0xe'),'port':0x18eb});var client=jayson['client'][_0x7b7e('0xf')]({'port':0x232a});var values;function respondWithRpcPromise(_0x1eef0a,_0x10a666,_0x29b622,_0xd581fb){return new BPromise(function(_0x18a1de,_0x36d2a3){var _0x55620b=_0xd581fb||client;return _0x55620b[_0x7b7e('0x10')](_0x1eef0a,_0x29b622)['then'](function(_0x267446){logger[_0x7b7e('0x11')]('User,\x20%s,\x20%s',_0x10a666,_0x7b7e('0x12'));logger['debug']('User,\x20%s,\x20%s,\x20%s',_0x10a666,_0x7b7e('0x12'),JSON[_0x7b7e('0x13')](_0x267446));if(_0x267446[_0x7b7e('0x14')]){if(_0x267446[_0x7b7e('0x14')][_0x7b7e('0x15')]===0x1f4){logger['error']('User,\x20%s,\x20%s',_0x10a666,_0x267446[_0x7b7e('0x14')][_0x7b7e('0x16')]);return _0x36d2a3(_0x267446[_0x7b7e('0x14')][_0x7b7e('0x16')]);}logger[_0x7b7e('0x14')](_0x7b7e('0x17'),_0x10a666,_0x267446[_0x7b7e('0x14')][_0x7b7e('0x16')]);return _0x18a1de(_0x267446[_0x7b7e('0x14')][_0x7b7e('0x16')]);}else{logger[_0x7b7e('0x11')](_0x7b7e('0x17'),_0x10a666,_0x7b7e('0x12'));_0x18a1de(_0x267446[_0x7b7e('0x18')][_0x7b7e('0x16')]);}})[_0x7b7e('0x19')](function(_0x3a7b8b){logger['error'](_0x7b7e('0x17'),_0x10a666,_0x3a7b8b);_0x36d2a3(_0x3a7b8b);});});}function respondWithStatusCode(_0x43db4f,_0x24718c){_0x24718c=_0x24718c||0xcc;return function(_0x4c0647){if(_0x4c0647){return _0x43db4f[_0x7b7e('0x1a')](_0x24718c);}return _0x43db4f[_0x7b7e('0x1b')](_0x24718c)[_0x7b7e('0x1c')]();};}function respondWithResult(_0x200156,_0x2b7211){_0x2b7211=_0x2b7211||0xc8;return function(_0x303d8c){if(_0x303d8c){return _0x200156[_0x7b7e('0x1b')](_0x2b7211)[_0x7b7e('0x1d')](_0x303d8c);}};}function respondWithFilteredResult(_0x53bbb3,_0x5d6215){return function(_0x4a836a){if(_0x4a836a){var _0x26ee14=typeof _0x5d6215[_0x7b7e('0x1e')]===_0x7b7e('0x1f')&&typeof _0x5d6215['limit']==='undefined';var _0x5dadbb=_0x4a836a[_0x7b7e('0x20')];var _0x3c8192=_0x26ee14?0x0:_0x5d6215[_0x7b7e('0x1e')];var _0x7aa71=_0x26ee14?_0x4a836a[_0x7b7e('0x20')]:_0x5d6215['offset']+_0x5d6215[_0x7b7e('0x21')];var _0x21a15;if(_0x7aa71>=_0x5dadbb){_0x7aa71=_0x5dadbb;_0x21a15=0xc8;}else{_0x21a15=0xce;}_0x53bbb3['status'](_0x21a15);return _0x53bbb3['set']('Content-Range',_0x3c8192+'-'+_0x7aa71+'/'+_0x5dadbb)[_0x7b7e('0x1d')](_0x4a836a);}return null;};}function saveUpdates(_0x423832){return function(_0x503625){if(_0x503625){return _0x503625[_0x7b7e('0x22')](_0x423832)['then'](function(_0x1b4341){return _0x1b4341;});}return null;};}function removeEntity(_0xb9b6bf){return function(_0x27b525){if(_0x27b525){return _0x27b525['destroy']()[_0x7b7e('0x23')](function(){var _0xe31336=_0x27b525[_0x7b7e('0x24')]({'plain':!![]});if(_0xe31336[_0x7b7e('0x25')]===_0x7b7e('0x26'))return;var _0x5732ee=[{'name':_0x7b7e('0x27'),'value':'user','ignore':!![]},{'name':_0x7b7e('0x28'),'value':_0x7b7e('0x29'),'ignore':![]},{'name':_0x7b7e('0x2a'),'value':_0x7b7e('0x2b'),'ignore':![]}];var _0x378faa=_(_0x5732ee)[_0x7b7e('0x2c')](_0x7b7e('0x2d'))['map']('value')[_0x7b7e('0x2e')]();if(_[_0x7b7e('0x2f')](_0x378faa,_0xe31336['role'])){return;}var _0x3a3bc7=_[_0x7b7e('0x30')](_0x5732ee,[_0x7b7e('0x2e'),_0xe31336['role']])[_0x7b7e('0x31')];return db[_0x7b7e('0x32')][_0x7b7e('0x33')]({'where':{'type':_0x3a3bc7,'resourceId':_0xe31336['id']}})[_0x7b7e('0x23')](function(){return _0x27b525;});})[_0x7b7e('0x23')](function(){_0xb9b6bf[_0x7b7e('0x1b')](0xcc)[_0x7b7e('0x1c')]();});}};}function handleEntityNotFound(_0x202f04){return function(_0x44497c){if(!_0x44497c){_0x202f04[_0x7b7e('0x1a')](0x194);}return _0x44497c;};}function handleError(_0xd5a64d,_0x2d0620){_0x2d0620=_0x2d0620||0x1f4;return function(_0x442366){logger[_0x7b7e('0x14')](_0x442366[_0x7b7e('0x34')]);if(_0x442366[_0x7b7e('0x31')]){delete _0x442366['name'];}_0xd5a64d[_0x7b7e('0x1b')](_0x2d0620)[_0x7b7e('0x35')](_0x442366);};}exports[_0x7b7e('0x36')]=function(_0x242609,_0x36abfc){var _0x909c65={},_0x7f15={'count':0x0,'rows':[]};var _0x1e6280=_(db[_0x7b7e('0x37')][_0x7b7e('0x38')])['map'](function(_0x3d6571){return{'name':_0x3d6571[_0x7b7e('0x39')],'type':_0x3d6571[_0x7b7e('0x3a')][_0x7b7e('0x3b')]};})['filter'](function(_0x280748){return!_[_0x7b7e('0x2f')]([_0x7b7e('0x3c'),'salt'],_0x280748['name']);})[_0x7b7e('0x2e')]();_0x909c65=qs['getOptions'](_0x1e6280,_0x242609);var _0x35382c={'where':_0x909c65[_0x7b7e('0x3d')]};return db['User'][_0x7b7e('0x20')](_0x35382c)[_0x7b7e('0x23')](function(_0x2a6f4d){_0x7f15[_0x7b7e('0x20')]=_0x2a6f4d;if(_0x242609[_0x7b7e('0x3e')][_0x7b7e('0x3f')]){_0x909c65[_0x7b7e('0x40')]=[{'all':!![]}];}if(!_[_0x7b7e('0x2f')](_0x909c65[_0x7b7e('0x41')],'id')){_0x909c65['attributes']['push']('id');}return db[_0x7b7e('0x37')]['findAll'](_0x909c65);})[_0x7b7e('0x23')](function(_0x5e8b5d){_0x7f15['rows']=_0x5e8b5d;if(_0x242609[_0x7b7e('0x3e')]['openTabs']===_0x7b7e('0x42')){var _0x52051c=[];for(var _0xa8521d=0x0;_0xa8521d<_0x7f15[_0x7b7e('0x43')][_0x7b7e('0x44')];_0xa8521d++){_0x52051c[_0x7b7e('0x45')](get_open_tabs('chat',_0x7f15[_0x7b7e('0x43')][_0xa8521d][_0x7b7e('0x46')]));_0x52051c[_0x7b7e('0x45')](get_open_tabs(_0x7b7e('0x47'),_0x7f15[_0x7b7e('0x43')][_0xa8521d][_0x7b7e('0x46')]));_0x52051c['push'](get_open_tabs('fax',_0x7f15['rows'][_0xa8521d][_0x7b7e('0x46')]));_0x52051c[_0x7b7e('0x45')](get_open_tabs(_0x7b7e('0x48'),_0x7f15[_0x7b7e('0x43')][_0xa8521d][_0x7b7e('0x46')]));_0x52051c[_0x7b7e('0x45')](get_open_tabs('openchannel',_0x7f15[_0x7b7e('0x43')][_0xa8521d][_0x7b7e('0x46')]));_0x52051c['push'](get_open_tabs('whatsapp',_0x7f15[_0x7b7e('0x43')][_0xa8521d][_0x7b7e('0x46')]));}return BPromise[_0x7b7e('0x49')](_0x52051c)[_0x7b7e('0x23')](function(_0x38b4d0){return _0x7f15;});}else{return _0x7f15;}})[_0x7b7e('0x23')](respondWithFilteredResult(_0x36abfc,_0x909c65))['catch'](handleError(_0x36abfc,null));};exports[_0x7b7e('0x4a')]=function(_0x4cc7db,_0x402793){var _0x1dad4c={'raw':![],'where':{'id':_0x4cc7db[_0x7b7e('0x4b')]['id']}},_0x2ea2b2={};_0x2ea2b2['model']=_[_0x7b7e('0x4c')](_[_0x7b7e('0x4d')](db[_0x7b7e('0x37')][_0x7b7e('0x38')]),[_0x7b7e('0x3c'),'salt']);_0x2ea2b2[_0x7b7e('0x3e')]=_[_0x7b7e('0x4d')](_0x4cc7db[_0x7b7e('0x3e')]);_0x2ea2b2[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x2ea2b2['model'],_0x2ea2b2[_0x7b7e('0x3e')]);_0x1dad4c[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0x2ea2b2[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x4cc7db[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x1dad4c['attributes']=_0x1dad4c[_0x7b7e('0x41')]['length']?_0x1dad4c[_0x7b7e('0x41')]:_0x2ea2b2[_0x7b7e('0x50')];if(_0x4cc7db['query'][_0x7b7e('0x3f')]){_0x1dad4c[_0x7b7e('0x40')]=[{'all':!![]}];}_0x1dad4c=_[_0x7b7e('0x52')]({},_0x1dad4c,_0x4cc7db[_0x7b7e('0x53')]);if(!_[_0x7b7e('0x2f')](_0x1dad4c[_0x7b7e('0x41')],'id')){_0x1dad4c[_0x7b7e('0x41')]['push']('id');}return db[_0x7b7e('0x37')][_0x7b7e('0x30')](_0x1dad4c)[_0x7b7e('0x23')](handleEntityNotFound(_0x402793,null))[_0x7b7e('0x23')](function(_0x5b9ab5){var _0x527403=[];values=_0x5b9ab5;if(_0x4cc7db['query'][_0x7b7e('0x54')]===_0x7b7e('0x42')){_0x527403[_0x7b7e('0x45')](get_open_tabs('chat',_0x5b9ab5['dataValues']));_0x527403[_0x7b7e('0x45')](get_open_tabs(_0x7b7e('0x47'),_0x5b9ab5['dataValues']));_0x527403[_0x7b7e('0x45')](get_open_tabs(_0x7b7e('0x55'),_0x5b9ab5[_0x7b7e('0x46')]));_0x527403['push'](get_open_tabs(_0x7b7e('0x56'),_0x5b9ab5[_0x7b7e('0x46')]));_0x527403['push'](get_open_tabs(_0x7b7e('0x57'),_0x5b9ab5[_0x7b7e('0x46')]));_0x527403[_0x7b7e('0x45')](get_open_tabs(_0x7b7e('0x48'),_0x5b9ab5[_0x7b7e('0x46')]));return BPromise[_0x7b7e('0x49')](_0x527403);}else{return values;}})[_0x7b7e('0x23')](function(_0x2d1908){return values;})[_0x7b7e('0x23')](respondWithResult(_0x402793,null))['catch'](handleError(_0x402793,null));};exports[_0x7b7e('0x22')]=function(_0x20108a,_0x516e75){if(_0x20108a[_0x7b7e('0x58')]['id']){delete _0x20108a[_0x7b7e('0x58')]['id'];}delete _0x20108a[_0x7b7e('0x58')]['role'];return db[_0x7b7e('0x37')]['find']({'where':{'id':_0x20108a[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x516e75,null))['then'](saveUpdates(_0x20108a[_0x7b7e('0x58')],null))[_0x7b7e('0x23')](respondWithResult(_0x516e75,null))['catch'](handleError(_0x516e75,null));};exports[_0x7b7e('0x59')]=function(_0x369103,_0x1d43af){return db[_0x7b7e('0x37')]['describe']()[_0x7b7e('0x23')](respondWithResult(_0x1d43af,null))[_0x7b7e('0x19')](handleError(_0x1d43af,null));};exports[_0x7b7e('0x5a')]=function(_0x7f705c,_0x2dc7ad){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x7f705c[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x2dc7ad,null))[_0x7b7e('0x23')](function(_0x5b9010){if(_0x5b9010){return _0x5b9010[_0x7b7e('0x5a')](_0x7f705c['body']['ids'],_[_0x7b7e('0x5b')](_0x7f705c[_0x7b7e('0x58')],[_0x7b7e('0x5c'),'id'])||{});}})[_0x7b7e('0x23')](respondWithResult(_0x2dc7ad,null))['catch'](handleError(_0x2dc7ad,null));};function validateUser(_0x275998){return new BPromise(function(_0x45e714,_0x3f2825){if(_0x275998[_0x7b7e('0x5d')])return _0x45e714(_0x275998);return db[_0x7b7e('0x5e')][_0x7b7e('0x5f')](0x1)['then'](function(_0x1ebd58){if(_0x1ebd58['securePassword'])authService['validatePasswordPattern'](_0x275998[_0x7b7e('0x3c')]);db['User'][_0x7b7e('0x60')]('internal')[_0x7b7e('0x23')](function(_0x148dde){if(_['isNil'](_0x148dde)){_0x275998[_0x7b7e('0x5d')]=_0x1ebd58[_0x7b7e('0x61')]||0x1;return;}if(_['isNil'](_0x1ebd58[_0x7b7e('0x61')])||_0x1ebd58[_0x7b7e('0x61')]===_0x148dde){_0x275998[_0x7b7e('0x5d')]=_0x148dde+0x1;return;}if(_0x1ebd58[_0x7b7e('0x61')]>_0x148dde){_0x275998[_0x7b7e('0x5d')]=_0x1ebd58[_0x7b7e('0x61')];return;}return db[_0x7b7e('0x62')][_0x7b7e('0x3e')](_0x7b7e('0x63'),{'type':db[_0x7b7e('0x62')]['QueryTypes']['SELECT']})[_0x7b7e('0x23')](function(_0x46ac1f){if(_0x46ac1f&&_0x46ac1f[_0x7b7e('0x44')]){for(var _0x348c77=0x0,_0xea39fa=_0x46ac1f[_0x7b7e('0x44')];_0x348c77<_0xea39fa&&_[_0x7b7e('0x64')](_0x275998['internal']);_0x348c77++){if(_0x1ebd58[_0x7b7e('0x61')]<=_0x46ac1f[_0x348c77][_0x7b7e('0x65')]){_0x275998['internal']=_0x46ac1f[_0x348c77][_0x7b7e('0x65')];}else if(_0x1ebd58[_0x7b7e('0x61')]>_0x46ac1f[_0x348c77][_0x7b7e('0x65')]&&_0x1ebd58[_0x7b7e('0x61')]<=_0x46ac1f[_0x348c77]['to']){_0x275998[_0x7b7e('0x5d')]=_0x1ebd58[_0x7b7e('0x61')];}}}if(_[_0x7b7e('0x64')](_0x275998[_0x7b7e('0x5d')])){_0x275998[_0x7b7e('0x5d')]=_0x148dde+0x1;}return _0x45e714(_0x275998);});});})[_0x7b7e('0x19')](function(_0x81617c){_0x3f2825(_0x81617c);});});}function updateUser(_0x4dd6f5){return new BPromise(function(_0xf25350,_0x131ad5){try{if(_0x4dd6f5[_0x7b7e('0x66')]){_0x4dd6f5[_0x7b7e('0x67')]=_0x4dd6f5[_0x7b7e('0x5d')];_0x4dd6f5[_0x7b7e('0x68')]={'mailbox':_0x4dd6f5[_0x7b7e('0x5d')],'password':_0x4dd6f5['password'],'fullname':_0x4dd6f5[_0x7b7e('0x69')],'email':_0x4dd6f5[_0x7b7e('0x6a')]};}if(_0x4dd6f5[_0x7b7e('0x25')]==='agent'){if(!_0x4dd6f5[_0x7b7e('0x6b')])_0x4dd6f5[_0x7b7e('0x6b')]=[_0x7b7e('0x6c'),_0x7b7e('0x6d'),_0x7b7e('0x6e'),'113','110','104',_0x7b7e('0x6f'),_0x7b7e('0x70'),_0x7b7e('0x71'),'108',_0x7b7e('0x72'),_0x7b7e('0x73'),_0x7b7e('0x74'),'114',_0x7b7e('0x75')];}_0xf25350(_0x4dd6f5);}catch(_0x2b27ef){_0x131ad5(_0x2b27ef);}});}exports[_0x7b7e('0x76')]=function(_0x34a06c,_0x538c5f){if(_0x34a06c[_0x7b7e('0x77')][_0x7b7e('0x25')]===_0x7b7e('0x29'))throw new Error(_0x7b7e('0x78'));if(_0x34a06c['body']['role']===_0x7b7e('0x77')&&_0x34a06c['user'][_0x7b7e('0x25')]!==_0x7b7e('0x26')){throw new Error(_0x7b7e('0x79'));}if(_0x34a06c[_0x7b7e('0x58')]['role']===_0x7b7e('0x26')&&_0x34a06c[_0x7b7e('0x77')][_0x7b7e('0x25')]!==_0x7b7e('0x26')){throw new Error(_0x7b7e('0x7a'));}return licenseUtil[_0x7b7e('0x7b')]([_0x34a06c[_0x7b7e('0x58')]])[_0x7b7e('0x23')](function(){return validateUser(_0x34a06c[_0x7b7e('0x58')]);})[_0x7b7e('0x23')](function(_0x13f8e3){return updateUser(_0x13f8e3)[_0x7b7e('0x23')](function(_0xbdc4b9){if(_0xbdc4b9[_0x7b7e('0x25')]===_0x7b7e('0x26')){_0xbdc4b9[_0x7b7e('0x7c')]=_0x34a06c['user'][_0x7b7e('0x7c')];delete _0xbdc4b9[_0x7b7e('0x7d')];}return _0xbdc4b9;});})[_0x7b7e('0x23')](function(_0xa03d7a){return db[_0x7b7e('0x37')][_0x7b7e('0x76')](_0xa03d7a,{'include':[{'model':db[_0x7b7e('0x68')],'as':'VoiceMail'}]});})[_0x7b7e('0x23')](function(_0x3880be){if(_0x34a06c[_0x7b7e('0x58')][_0x7b7e('0x25')]===_0x7b7e('0x77'))return _0x3880be;if(_0x34a06c['user']['role']!==_0x7b7e('0x77'))return _0x3880be;return db[_0x7b7e('0x7e')][_0x7b7e('0x30')]({'where':{'name':_0x3880be[_0x7b7e('0x25')]===_0x7b7e('0x29')?_0x7b7e('0x28'):_0x7b7e('0x2a'),'userProfileId':_0x34a06c[_0x7b7e('0x77')][_0x7b7e('0x7d')]},'raw':!![]})[_0x7b7e('0x23')](function(_0x4ce589){if(!_0x4ce589||_0x4ce589[_0x7b7e('0x7f')]!=0x0)return _0x3880be;return db[_0x7b7e('0x32')][_0x7b7e('0x76')]({'name':_0x3880be[_0x7b7e('0x31')],'resourceId':_0x3880be['id'],'type':_0x4ce589[_0x7b7e('0x31')],'sectionId':_0x4ce589['id']},{})[_0x7b7e('0x23')](function(){return _0x3880be;});})[_0x7b7e('0x19')](function(_0x4fa49d){logger[_0x7b7e('0x14')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4fa49d);throw _0x4fa49d;});})[_0x7b7e('0x23')](respondWithResult(_0x538c5f,0xc9))[_0x7b7e('0x19')](handleError(_0x538c5f,null));};exports['bulkCreate']=function(_0x61424f,_0x38fd40){var _0x28e81c=_0x61424f[_0x7b7e('0x58')];var _0x3faf4c=[];if(_0x61424f['user'][_0x7b7e('0x25')]==='agent')throw new Error('Unauthorized');if(_[_0x7b7e('0x80')](_0x28e81c,[_0x7b7e('0x25'),_0x7b7e('0x77')])&&_0x61424f[_0x7b7e('0x77')]['role']!==_0x7b7e('0x26')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_[_0x7b7e('0x80')](_0x28e81c,[_0x7b7e('0x25'),_0x7b7e('0x26')])&&_0x61424f[_0x7b7e('0x77')][_0x7b7e('0x25')]!==_0x7b7e('0x26')){throw new Error(_0x7b7e('0x81'));}return licenseUtil['checkUserLimits'](_0x28e81c)[_0x7b7e('0x23')](function(){return validateUser(_0x28e81c[0x0]);})[_0x7b7e('0x23')](function(){for(var _0x4acf8b=0x1;_0x4acf8b<_0x28e81c[_0x7b7e('0x44')];_0x4acf8b++){var _0x43c42e=_0x28e81c[_0x4acf8b-0x1][_0x7b7e('0x5d')];if(!_0x28e81c[_0x4acf8b][_0x7b7e('0x5d')])_0x28e81c[_0x4acf8b][_0x7b7e('0x5d')]=_0x43c42e+0x1;_0x3faf4c[_0x7b7e('0x45')](validateUser(_0x28e81c[_0x4acf8b]));}return BPromise[_0x7b7e('0x49')](_0x3faf4c);})[_0x7b7e('0x23')](function(){_0x3faf4c=[];for(var _0x41e2b5=0x0;_0x41e2b5<_0x28e81c[_0x7b7e('0x44')];_0x41e2b5++){_0x3faf4c[_0x7b7e('0x45')](updateUser(_0x28e81c[_0x41e2b5]));}return BPromise[_0x7b7e('0x49')](_0x3faf4c);})[_0x7b7e('0x23')](function(){return BPromise[_0x7b7e('0x82')](_0x28e81c,function(_0x12d0cb){return db[_0x7b7e('0x37')][_0x7b7e('0x76')](_0x12d0cb,{'include':[{'model':db[_0x7b7e('0x68')],'as':_0x7b7e('0x68')}]})[_0x7b7e('0x23')](function(_0x3628b2){_0x12d0cb['id']=_0x3628b2['id'];return _0x12d0cb;});});})[_0x7b7e('0x23')](function(_0x4a3ff7){if(_0x61424f[_0x7b7e('0x58')][_0x7b7e('0x25')]==='user')return _0x4a3ff7;if(_0x61424f[_0x7b7e('0x77')]['role']!=='user')return _0x4a3ff7;var _0x1871d2=_['some'](_0x4a3ff7,function(_0x4d91c6){return _0x4d91c6[_0x7b7e('0x25')]===_0x7b7e('0x29')||_0x4d91c6[_0x7b7e('0x25')]==='telephone';});if(!_0x1871d2)return _0x4a3ff7;return db[_0x7b7e('0x7e')][_0x7b7e('0x83')]({'where':{'name':{'$or':[_0x7b7e('0x28'),_0x7b7e('0x2a')]},'userProfileId':_0x61424f[_0x7b7e('0x77')][_0x7b7e('0x7d')]},'raw':!![]})[_0x7b7e('0x23')](function(_0xf71a04){if(_[_0x7b7e('0x84')](_0xf71a04)||!_['some'](_0xf71a04,[_0x7b7e('0x7f'),0x0]))return _0x4a3ff7;_0x3faf4c=[];var _0x1f79b9=_(_0xf71a04)[_0x7b7e('0x85')](function(_0x4f0042){if(_0x4f0042[_0x7b7e('0x7f')]===0x1)return;return _0x4f0042[_0x7b7e('0x31')]==='Agents'?_0x7b7e('0x29'):'telephone';})['compact']()[_0x7b7e('0x2e')]();for(var _0xf01f1a=0x0;_0xf01f1a<_0x4a3ff7['length'];_0xf01f1a++){if(!_[_0x7b7e('0x2f')](_0x1f79b9,_0x4a3ff7[_0xf01f1a]['role']))return;var _0x4c7158=_0x4a3ff7[_0xf01f1a][_0x7b7e('0x25')]===_0x7b7e('0x29')?_0x7b7e('0x28'):_0x7b7e('0x2a');_0x3faf4c[_0x7b7e('0x45')](db[_0x7b7e('0x32')][_0x7b7e('0x76')]({'name':_0x4a3ff7[_0xf01f1a][_0x7b7e('0x31')],'resourceId':_0x4a3ff7[_0xf01f1a]['id'],'type':_0x4c7158,'sectionId':_['find'](_0xf71a04,[_0x7b7e('0x31'),_0x4c7158])['id']},{}));}return BPromise[_0x7b7e('0x49')](_0x3faf4c);});})[_0x7b7e('0x23')](respondWithResult(_0x38fd40,0xc9))[_0x7b7e('0x19')](handleError(_0x38fd40,null));};exports[_0x7b7e('0x86')]=function(_0x13c910,_0xf16368){if(_0x13c910[_0x7b7e('0x58')]['id']){delete _0x13c910[_0x7b7e('0x58')]['id'];}return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x13c910[_0x7b7e('0x4b')]['id']}})['then'](function(_0x493128){if(!_0x493128)return null;if(_0x493128['id']===_0x13c910[_0x7b7e('0x77')]['id']){if(!_0x13c910[_0x7b7e('0x58')][_0x7b7e('0x87')]||!_0x13c910[_0x7b7e('0x58')][_0x7b7e('0x88')]){throw new db[(_0x7b7e('0x89'))][(_0x7b7e('0x8a'))](_0x7b7e('0x8b'));}if(!_0x493128[_0x7b7e('0x8c')](_0x13c910[_0x7b7e('0x58')][_0x7b7e('0x87')])){throw new db[(_0x7b7e('0x89'))]['ValidationError'](_0x7b7e('0x8d'));}if(_0x13c910['body'][_0x7b7e('0x87')]===_0x13c910[_0x7b7e('0x58')][_0x7b7e('0x88')]){throw new db['Sequelize']['ValidationError']('New\x20password\x20must\x20be\x20different\x20from\x20old\x20password');}}else if(_0x13c910[_0x7b7e('0x77')][_0x7b7e('0x25')]===_0x7b7e('0x26')){if(!_0x13c910[_0x7b7e('0x58')][_0x7b7e('0x88')]){throw new db[(_0x7b7e('0x89'))][(_0x7b7e('0x8a'))](_0x7b7e('0x8e'));}}else if(_0x13c910[_0x7b7e('0x77')][_0x7b7e('0x25')]===_0x7b7e('0x77')){if(!_0x13c910['body'][_0x7b7e('0x88')]){throw new db[(_0x7b7e('0x89'))][(_0x7b7e('0x8a'))](_0x7b7e('0x8e'));}if(_0x493128['role']!==_0x7b7e('0x29')){throw new db[(_0x7b7e('0x89'))][(_0x7b7e('0x8a'))](_0x7b7e('0x78'));}}else{throw new db[(_0x7b7e('0x89'))][(_0x7b7e('0x8a'))](_0x7b7e('0x78'));}return _0x493128;})[_0x7b7e('0x23')](handleEntityNotFound(_0xf16368,null))[_0x7b7e('0x23')](function(_0x34491e){return db[_0x7b7e('0x5e')][_0x7b7e('0x8f')]({'attributes':['id',_0x7b7e('0x90'),_0x7b7e('0x91'),_0x7b7e('0x92')]})[_0x7b7e('0x23')](function(_0x33243c){if(_0x33243c[_0x7b7e('0x90')])authService[_0x7b7e('0x93')](_0x13c910[_0x7b7e('0x58')][_0x7b7e('0x88')]);if(!_0x33243c[_0x7b7e('0x91')]||!_0x34491e[_0x7b7e('0x94')])return _0x34491e;authService[_0x7b7e('0x95')](_0x13c910[_0x7b7e('0x58')][_0x7b7e('0x88')],_0x34491e[_0x7b7e('0x94')],_0x33243c[_0x7b7e('0x92')]);return _0x34491e;})['then'](saveUpdates({'password':_0x13c910[_0x7b7e('0x58')]['newPassword'],'passwordResetAt':_0x13c910['user']['id']==_0x13c910['params']['id']?moment():null,'previousPasswords':authService[_0x7b7e('0x96')](_0x13c910[_0x7b7e('0x58')]['newPassword'],_0x34491e['previousPasswords'])},null));})[_0x7b7e('0x23')](respondWithResult(_0xf16368,null))[_0x7b7e('0x19')](handleError(_0xf16368,null));};exports[_0x7b7e('0x97')]=function(_0x5b0abe,_0xf128f8){var _0x587012=_0x5b0abe['body'][_0x7b7e('0x98')];return db['User']['find']({'where':{'id':_0x5b0abe[_0x7b7e('0x4b')]['id']},'attributes':['id',_0x7b7e('0x31'),_0x7b7e('0x25'),'online','loginInPause',_0x7b7e('0x99'),_0x7b7e('0x9a')]})[_0x7b7e('0x23')](handleEntityNotFound(_0xf128f8,null))[_0x7b7e('0x23')](function(_0x14310d){if(_0x14310d){if(!utils[_0x7b7e('0x9b')](_0x587012)){throw new db[(_0x7b7e('0x89'))][(_0x7b7e('0x8a'))](_0x7b7e('0x9c'));}return _0x14310d['add'+_[_0x7b7e('0x9d')](_0x587012['toLowerCase']())+_0x7b7e('0x9e')](_0x5b0abe[_0x7b7e('0x58')][_0x7b7e('0x5c')],{'penalty':_0x5b0abe[_0x7b7e('0x58')][_0x7b7e('0x9f')]||0x0})['spread'](function(_0x33b313){for(var _0x216de1=0x0;_0x216de1<_0x5b0abe[_0x7b7e('0x58')][_0x7b7e('0x5c')]['length'];_0x216de1+=0x1){var _0x137ba6={'UserId':Number(_0x5b0abe[_0x7b7e('0x4b')]['id'])};_0x137ba6[_['capitalize'](_0x587012[_0x7b7e('0xa0')]())+_0x7b7e('0xa1')]=Number(_0x5b0abe[_0x7b7e('0x58')][_0x7b7e('0x5c')][_0x216de1]);socket[_0x7b7e('0xa2')](_0x7b7e('0x77')+_[_0x7b7e('0x9d')](_0x587012[_0x7b7e('0xa0')]())+_0x7b7e('0xa3'),_0x137ba6);}return _0x33b313;})[_0x7b7e('0x23')](function(){if(_0x587012===_0x7b7e('0xa4')){return db['VoiceQueue'][_0x7b7e('0x83')]({'where':{'id':_0x5b0abe[_0x7b7e('0x58')]['ids']||[]},'raw':!![],'attributes':['id',_0x7b7e('0x31')]});}})['then'](function(_0x373d35){var _0x772419=_0x14310d[_0x7b7e('0x24')]({'plain':!![]});var _0x4feae0=[];if(_0x587012===_0x7b7e('0xa4')&&_0x772419[_0x7b7e('0x25')]===_0x7b7e('0x29')&&_0x772419[_0x7b7e('0xa5')]){for(var _0xeeaf19=0x0;_0xeeaf19<_0x373d35[_0x7b7e('0x44')];_0xeeaf19+=0x1){_0x4feae0[_0x7b7e('0x45')]({'membername':_0x772419[_0x7b7e('0x31')],'UserId':_0x772419['id'],'queue_name':_0x373d35[_0xeeaf19][_0x7b7e('0x31')],'VoiceQueueId':_0x373d35[_0xeeaf19]['id'],'interface':_[_0x7b7e('0x64')](_0x772419['interface'])?util[_0x7b7e('0xa6')](_0x7b7e('0xa7'),_0x772419[_0x7b7e('0x31')]):_0x772419['interface'],'paused':_0x772419['voicePause']||![],'penalty':_0x5b0abe[_0x7b7e('0x58')]['penalty']||0x0});}return BPromise['each'](_0x4feae0,function(_0x26aef0){return db[_0x7b7e('0xa8')][_0x7b7e('0xa9')](_0x26aef0);});}return _0x14310d;});}})['then'](respondWithStatusCode(_0xf128f8,null))[_0x7b7e('0x19')](handleError(_0xf128f8,null));};exports[_0x7b7e('0xaa')]=function(_0x26d962,_0x43f6f3){var _0x3da40c;return db['User'][_0x7b7e('0x30')]({'where':{'id':_0x26d962[_0x7b7e('0x4b')]['id']},'attributes':['id',_0x7b7e('0x31'),_0x7b7e('0x25')]})[_0x7b7e('0x23')](handleEntityNotFound(_0x43f6f3,null))[_0x7b7e('0x23')](function(_0x50dd97){if(_0x50dd97){_0x3da40c=_0x50dd97;if(!_0x26d962['query'][_0x7b7e('0x98')]||!utils['isValidChannel'](_0x26d962[_0x7b7e('0x3e')][_0x7b7e('0x98')])){throw new db[(_0x7b7e('0x89'))][(_0x7b7e('0x8a'))](_0x7b7e('0x9c'));}return _0x50dd97[_0x7b7e('0xab')+_[_0x7b7e('0x9d')](_0x26d962['query']['channel'][_0x7b7e('0xa0')]())+_0x7b7e('0x9e')](_0x26d962['query'][_0x7b7e('0x5c')]);}})[_0x7b7e('0x23')](function(_0x4f6c25){if(_['isArray'](_0x26d962[_0x7b7e('0x3e')][_0x7b7e('0x5c')])){for(var _0x1ac6ea=0x0;_0x1ac6ea<_0x26d962['query'][_0x7b7e('0x5c')][_0x7b7e('0x44')];_0x1ac6ea+=0x1){var _0x4c500b={'UserId':Number(_0x26d962[_0x7b7e('0x4b')]['id'])};_0x4c500b[_[_0x7b7e('0x9d')](_0x26d962[_0x7b7e('0x3e')][_0x7b7e('0x98')][_0x7b7e('0xa0')]())+_0x7b7e('0xa1')]=Number(_0x26d962[_0x7b7e('0x3e')]['ids'][_0x1ac6ea]);socket['emit']('user'+_[_0x7b7e('0x9d')](_0x26d962['query'][_0x7b7e('0x98')][_0x7b7e('0xa0')]())+_0x7b7e('0xac'),_0x4c500b);}}else{var _0x4c500b={'UserId':Number(_0x26d962[_0x7b7e('0x4b')]['id'])};_0x4c500b[_[_0x7b7e('0x9d')](_0x26d962[_0x7b7e('0x3e')][_0x7b7e('0x98')][_0x7b7e('0xa0')]())+_0x7b7e('0xa1')]=Number(_0x26d962[_0x7b7e('0x3e')]['ids']);socket['emit']('user'+_[_0x7b7e('0x9d')](_0x26d962[_0x7b7e('0x3e')][_0x7b7e('0x98')][_0x7b7e('0xa0')]())+_0x7b7e('0xac'),_0x4c500b);}return _0x4f6c25;})[_0x7b7e('0x23')](function(){if(_0x26d962[_0x7b7e('0x3e')][_0x7b7e('0x98')]===_0x7b7e('0xa4')){return db['UserVoiceQueueRt'][_0x7b7e('0x33')]({'where':{'UserId':_0x26d962[_0x7b7e('0x4b')]['id'],'VoiceQueueId':_0x26d962[_0x7b7e('0x3e')]['ids']},'individualHooks':!![]})[_0x7b7e('0x23')](function(){return _0x3da40c;});}return _0x3da40c;})['then'](respondWithStatusCode(_0x43f6f3,null))[_0x7b7e('0x19')](handleError(_0x43f6f3,null));};exports[_0x7b7e('0xad')]=function(_0x421ddc,_0x1e1a85){_0x421ddc['body'][_0x7b7e('0xae')]=_0x421ddc[_0x7b7e('0xaf')][_0x7b7e('0xb0')];return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x421ddc['params']['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x1e1a85,null))[_0x7b7e('0x23')](saveUpdates(_0x421ddc[_0x7b7e('0x58')],null))[_0x7b7e('0x23')](respondWithResult(_0x1e1a85,null))[_0x7b7e('0x19')](handleError(_0x1e1a85,null));};exports[_0x7b7e('0xb1')]=function(_0x2502c0,_0x1bb089){var _0x576d82=path[_0x7b7e('0xb2')](config[_0x7b7e('0xb3')],_0x7b7e('0xb4'));return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x2502c0['params']['id']},'attributes':['id',_0x7b7e('0xae')],'raw':!![]})[_0x7b7e('0x23')](handleEntityNotFound(_0x1bb089,null))[_0x7b7e('0x23')](function(_0x3b972e){if(_0x3b972e){if(_[_0x7b7e('0x64')](_0x3b972e[_0x7b7e('0xae')])){return _0x1bb089[_0x7b7e('0xb5')](_0x576d82);}else{if(!fs[_0x7b7e('0xb6')](path[_0x7b7e('0xb2')](config[_0x7b7e('0xb3')],'server/files/images/',_0x3b972e[_0x7b7e('0xae')]))){return _0x1bb089['download'](_0x576d82);}return _0x1bb089[_0x7b7e('0xb5')](path[_0x7b7e('0xb2')](config[_0x7b7e('0xb3')],_0x7b7e('0xb7'),_0x3b972e[_0x7b7e('0xae')]));}}})[_0x7b7e('0x19')](handleError(_0x1bb089,null));};exports[_0x7b7e('0xb8')]=function(_0x38a9ae,_0x363882){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x38a9ae[_0x7b7e('0x4b')]['id']},'attributes':['id']})[_0x7b7e('0x23')](handleEntityNotFound(_0x363882,null))['then'](function(_0x5d04e0){var _0x1072f8=[];values=_0x5d04e0['dataValues'];_0x1072f8[_0x7b7e('0x45')](get_open_tabs(_0x7b7e('0xb9'),_0x5d04e0[_0x7b7e('0x46')]));_0x1072f8[_0x7b7e('0x45')](get_open_tabs(_0x7b7e('0x47'),_0x5d04e0['dataValues']));_0x1072f8[_0x7b7e('0x45')](get_open_tabs('openchannel',_0x5d04e0['dataValues']));_0x1072f8['push'](get_open_tabs(_0x7b7e('0x56'),_0x5d04e0[_0x7b7e('0x46')]));_0x1072f8[_0x7b7e('0x45')](get_open_tabs(_0x7b7e('0x57'),_0x5d04e0[_0x7b7e('0x46')]));_0x1072f8[_0x7b7e('0x45')](get_open_tabs(_0x7b7e('0x48'),_0x5d04e0['dataValues']));return BPromise[_0x7b7e('0x49')](_0x1072f8);})[_0x7b7e('0x23')](function(_0x19cbe0){var _0x176b1a=[];if(_0x19cbe0){for(var _0x355931=0x0;_0x355931<values[_0x7b7e('0xba')][_0x7b7e('0x44')];_0x355931++){var _0x4d6dba=values[_0x7b7e('0xba')][_0x355931];_0x176b1a[_0x7b7e('0x45')]({'channel':_0x7b7e('0xbb'),'id':_0x4d6dba['id'],'createdAt':_0x4d6dba[_0x7b7e('0xbc')]});}for(var _0x355931=0x0;_0x355931<values[_0x7b7e('0xbd')]['length'];_0x355931++){var _0x4d6dba=values[_0x7b7e('0xbd')][_0x355931];_0x176b1a[_0x7b7e('0x45')]({'channel':_0x7b7e('0xbe'),'id':_0x4d6dba['id'],'createdAt':_0x4d6dba['createdAt']});}for(var _0x355931=0x0;_0x355931<values[_0x7b7e('0xbf')][_0x7b7e('0x44')];_0x355931++){var _0x4d6dba=values[_0x7b7e('0xbf')][_0x355931];_0x176b1a['push']({'channel':'OPENCHANNEL','id':_0x4d6dba['id'],'createdAt':_0x4d6dba['createdAt']});}for(var _0x355931=0x0;_0x355931<values[_0x7b7e('0xc0')][_0x7b7e('0x44')];_0x355931++){var _0x4d6dba=values[_0x7b7e('0xc0')][_0x355931];_0x176b1a['push']({'channel':_0x7b7e('0xc1'),'id':_0x4d6dba['id'],'createdAt':_0x4d6dba['createdAt']});}for(var _0x355931=0x0;_0x355931<values['SmsOpenTabs']['length'];_0x355931++){var _0x4d6dba=values[_0x7b7e('0xc2')][_0x355931];_0x176b1a[_0x7b7e('0x45')]({'channel':'SMS','id':_0x4d6dba['id'],'createdAt':_0x4d6dba[_0x7b7e('0xbc')]});}for(var _0x355931=0x0;_0x355931<values[_0x7b7e('0xc3')][_0x7b7e('0x44')];_0x355931++){var _0x4d6dba=values[_0x7b7e('0xc3')][_0x355931];_0x176b1a[_0x7b7e('0x45')]({'channel':'WHATSAPP','id':_0x4d6dba['id'],'createdAt':_0x4d6dba[_0x7b7e('0xbc')]});}var _0x168dd7={'count':_0x176b1a[_0x7b7e('0x44')],'rows':_0x176b1a};return _0x168dd7;}else return null;})[_0x7b7e('0x23')](respondWithResult(_0x363882,null))['catch'](handleError(_0x363882,null));};exports[_0x7b7e('0xc4')]=function(_0x280c94,_0x4de56d){var _0x1104d8={};var _0x1e6d66={};var _0x122180;var _0x3f4a9e;return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x280c94['params']['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x4de56d,null))['then'](function(_0x42957f){if(_0x42957f){_0x122180=_0x42957f;_0x1e6d66['model']=_[_0x7b7e('0x4d')](db[_0x7b7e('0xc5')]['rawAttributes']);_0x1e6d66['query']=_['keys'](_0x280c94[_0x7b7e('0x3e')]);_0x1e6d66[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x1e6d66[_0x7b7e('0x50')],_0x1e6d66[_0x7b7e('0x3e')]);_0x1104d8[_0x7b7e('0x41')]=_['intersection'](_0x1e6d66[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x280c94[_0x7b7e('0x3e')]['fields']));_0x1104d8[_0x7b7e('0x41')]=_0x1104d8[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x1104d8[_0x7b7e('0x41')]:_0x1e6d66[_0x7b7e('0x50')];_0x1104d8[_0x7b7e('0xc6')]=qs[_0x7b7e('0xc7')](_0x280c94[_0x7b7e('0x3e')][_0x7b7e('0xc7')]);_0x1104d8[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_[_0x7b7e('0xc8')](_0x280c94['query'],_0x1e6d66[_0x7b7e('0x4e')]));if(_0x280c94['query'][_0x7b7e('0x2c')]){_0x1104d8['where']=_[_0x7b7e('0x52')](_0x1104d8[_0x7b7e('0x3d')],{'$or':_['map'](_0x1104d8[_0x7b7e('0x41')],function(_0x5c0433){var _0x1af4ca={};_0x1af4ca[_0x5c0433]={'$like':'%'+_0x280c94['query'][_0x7b7e('0x2c')]+'%'};return _0x1af4ca;})});}_0x1104d8=_['merge']({},_0x1104d8,_0x280c94[_0x7b7e('0x53')]);return _0x122180[_0x7b7e('0xc4')](_0x1104d8);}})[_0x7b7e('0x23')](function(_0x3046eb){if(_0x3046eb){_0x3f4a9e=_0x3046eb[_0x7b7e('0x44')];if(_0x280c94[_0x7b7e('0x3e')][_0x7b7e('0xc9')](_0x7b7e('0x3f'))){_0x1104d8[_0x7b7e('0x40')]=[{'model':db[_0x7b7e('0xca')],'as':_0x7b7e('0xcb'),'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id','name','color'],'where':_0x280c94['query'][_0x7b7e('0xcc')]?{'id':_0x280c94[_0x7b7e('0x3e')][_0x7b7e('0xcc')]}:undefined,'required':_0x280c94[_0x7b7e('0x3e')][_0x7b7e('0xcc')]?!![]:![]}];}if(!_0x280c94['query']['hasOwnProperty'](_0x7b7e('0xcd'))){_0x1104d8['limit']=qs[_0x7b7e('0x21')](_0x280c94[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x1104d8[_0x7b7e('0x1e')]=qs[_0x7b7e('0x1e')](_0x280c94[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}return _0x122180[_0x7b7e('0xc4')](_0x1104d8);}})['then'](function(_0x332a9d){if(_0x332a9d){return _0x332a9d?{'count':_0x3f4a9e,'rows':_0x332a9d}:null;}})['then'](respondWithResult(_0x4de56d,null))['catch'](handleError(_0x4de56d,null));};exports[_0x7b7e('0xce')]=function(_0x732bb,_0x2cea15){var _0x2ea40b;var _0x41f334;var _0x1e82ea={};var _0x291ddb;return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x732bb[_0x7b7e('0x4b')]['id']},'attributes':['id',_0x7b7e('0x31'),_0x7b7e('0x25')]})[_0x7b7e('0x23')](handleEntityNotFound(_0x2cea15,null))['then'](function(_0x107c4e){if(!utils[_0x7b7e('0x9b')](_0x732bb[_0x7b7e('0x3e')][_0x7b7e('0x98')])){throw new db[(_0x7b7e('0x89'))][(_0x7b7e('0x8a'))](_0x7b7e('0x9c'));}_0x2ea40b=_0x107c4e;var _0x220312={};_0x220312[_0x7b7e('0x50')]=_['keys'](db[_[_0x7b7e('0x9d')](_0x732bb[_0x7b7e('0x3e')][_0x7b7e('0x98')])+_0x7b7e('0xcf')][_0x7b7e('0x38')]);_0x220312['query']=_[_0x7b7e('0x4d')](_0x732bb[_0x7b7e('0x3e')]);_0x220312[_0x7b7e('0x4e')]=_['intersection'](_0x220312[_0x7b7e('0x50')],_0x220312[_0x7b7e('0x3e')]);_0x1e82ea['attributes']=_['intersection'](_0x220312[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x732bb['query'][_0x7b7e('0x51')]));_0x1e82ea[_0x7b7e('0x41')]=_0x1e82ea[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x1e82ea[_0x7b7e('0x41')]:_0x220312['model'];_0x1e82ea['order']=qs[_0x7b7e('0xc7')](_0x732bb['query'][_0x7b7e('0xc7')]);_0x1e82ea['where']=qs[_0x7b7e('0x4e')](_['pick'](_0x732bb[_0x7b7e('0x3e')],_0x220312['filters']));if(_0x732bb['query'][_0x7b7e('0x2c')]){_0x1e82ea['where']=_['merge'](_0x1e82ea[_0x7b7e('0x3d')],{'$or':_[_0x7b7e('0x85')](_0x1e82ea['attributes'],function(_0xb239a2){var _0x21943d={};_0x21943d[_0xb239a2]={'$like':'%'+_0x732bb[_0x7b7e('0x3e')][_0x7b7e('0x2c')]+'%'};return _0x21943d;})});}_0x1e82ea=_[_0x7b7e('0x52')]({},_0x1e82ea,_0x732bb[_0x7b7e('0x53')]);switch(_0x2ea40b[_0x7b7e('0x25')]){case _0x7b7e('0x26'):return db[_['capitalize'](_0x732bb['query'][_0x7b7e('0x98')])+_0x7b7e('0xcf')][_0x7b7e('0x83')](_0x1e82ea);case _0x7b7e('0x77'):case _0x7b7e('0x29'):return _0x2ea40b[_0x7b7e('0x24')+_['capitalize'](_0x732bb[_0x7b7e('0x3e')][_0x7b7e('0x98')])+'Queues'](_0x1e82ea);default:throw new db['Sequelize'][(_0x7b7e('0x8a'))]('Unknown\x20role');}})[_0x7b7e('0x23')](function(_0x23f186){_0x291ddb=_0x23f186[_0x7b7e('0x44')];if(!_0x732bb[_0x7b7e('0x3e')][_0x7b7e('0xc9')]('nolimit')){_0x1e82ea[_0x7b7e('0x21')]=qs['limit'](_0x732bb[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x1e82ea[_0x7b7e('0x1e')]=qs['offset'](_0x732bb[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}switch(_0x2ea40b['role']){case _0x7b7e('0x26'):return db[_[_0x7b7e('0x9d')](_0x732bb['query'][_0x7b7e('0x98')])+_0x7b7e('0xcf')][_0x7b7e('0x83')](_0x1e82ea);case _0x7b7e('0x77'):case'agent':return _0x2ea40b[_0x7b7e('0x24')+_['capitalize'](_0x732bb[_0x7b7e('0x3e')]['channel'])+_0x7b7e('0x9e')](_0x1e82ea);}})['then'](function(_0x6aaf32){return{'count':_0x291ddb,'rows':_0x6aaf32};})[_0x7b7e('0x23')](respondWithResult(_0x2cea15,null))[_0x7b7e('0x19')](handleError(_0x2cea15,null));};exports[_0x7b7e('0xd0')]=function(_0x135284,_0x4f07db){var _0x421a33={};var _0x2e8c14={};var _0x41a635;var _0x556a7f;return db['User'][_0x7b7e('0x8f')]({'where':{'id':_0x135284[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x4f07db,null))[_0x7b7e('0x23')](function(_0x52330a){if(_0x52330a){_0x41a635=_0x52330a;_0x2e8c14[_0x7b7e('0x50')]=_[_0x7b7e('0x4d')](db[_0x7b7e('0xa8')]['rawAttributes']);_0x2e8c14[_0x7b7e('0x3e')]=_[_0x7b7e('0x4d')](_0x135284[_0x7b7e('0x3e')]);_0x2e8c14['filters']=_[_0x7b7e('0x4f')](_0x2e8c14[_0x7b7e('0x50')],_0x2e8c14[_0x7b7e('0x3e')]);_0x421a33[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0x2e8c14['model'],qs[_0x7b7e('0x51')](_0x135284[_0x7b7e('0x3e')]['fields']));_0x421a33['attributes']=_0x421a33[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x421a33[_0x7b7e('0x41')]:_0x2e8c14[_0x7b7e('0x50')];_0x421a33[_0x7b7e('0xc6')]=qs[_0x7b7e('0xc7')](_0x135284[_0x7b7e('0x3e')][_0x7b7e('0xc7')]);_0x421a33[_0x7b7e('0x3d')]=qs['filters'](_[_0x7b7e('0xc8')](_0x135284['query'],_0x2e8c14[_0x7b7e('0x4e')]));if(_0x135284['query'][_0x7b7e('0x2c')]){_0x421a33['where']=_[_0x7b7e('0x52')](_0x421a33['where'],{'$or':_[_0x7b7e('0x85')](_0x421a33[_0x7b7e('0x41')],function(_0x5b3682){var _0x3c4ebc={};_0x3c4ebc[_0x5b3682]={'$like':'%'+_0x135284[_0x7b7e('0x3e')][_0x7b7e('0x2c')]+'%'};return _0x3c4ebc;})});}_0x421a33=_[_0x7b7e('0x52')]({},_0x421a33,_0x135284['options']);return _0x41a635[_0x7b7e('0xd0')](_0x421a33);}})[_0x7b7e('0x23')](function(_0x1b1ac0){if(_0x1b1ac0){_0x556a7f=_0x1b1ac0['length'];if(!_0x135284['query']['hasOwnProperty'](_0x7b7e('0xcd'))){_0x421a33['limit']=qs[_0x7b7e('0x21')](_0x135284[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x421a33[_0x7b7e('0x1e')]=qs['offset'](_0x135284['query'][_0x7b7e('0x1e')]);}return _0x41a635['getVoiceQueuesRt'](_0x421a33);}})[_0x7b7e('0x23')](function(_0x5e6f62){if(_0x5e6f62){return _0x5e6f62?{'count':_0x556a7f,'rows':_0x5e6f62}:null;}})[_0x7b7e('0x23')](respondWithResult(_0x4f07db,null))[_0x7b7e('0x19')](handleError(_0x4f07db,null));};exports[_0x7b7e('0xd1')]=function(_0x4a9e46,_0xa58cd8){var _0x2826fa={};var _0x3982ac={};var _0x5d0a9e;var _0x263c43;return db['User'][_0x7b7e('0x8f')]({'where':{'id':_0x4a9e46['params']['id']}})['then'](handleEntityNotFound(_0xa58cd8,null))[_0x7b7e('0x23')](function(_0x3d76ad){if(_0x3d76ad){_0x5d0a9e=_0x3d76ad;_0x3982ac[_0x7b7e('0x50')]=_[_0x7b7e('0x4d')](db[_0x7b7e('0xd2')]['rawAttributes']);_0x3982ac[_0x7b7e('0x3e')]=_['keys'](_0x4a9e46[_0x7b7e('0x3e')]);_0x3982ac[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x3982ac[_0x7b7e('0x50')],_0x3982ac[_0x7b7e('0x3e')]);_0x2826fa[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0x3982ac[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x4a9e46[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x2826fa[_0x7b7e('0x41')]=_0x2826fa[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x2826fa[_0x7b7e('0x41')]:_0x3982ac[_0x7b7e('0x50')];_0x2826fa[_0x7b7e('0xc6')]=qs[_0x7b7e('0xc7')](_0x4a9e46[_0x7b7e('0x3e')][_0x7b7e('0xc7')]);_0x2826fa['where']=qs[_0x7b7e('0x4e')](_['pick'](_0x4a9e46[_0x7b7e('0x3e')],_0x3982ac[_0x7b7e('0x4e')]));if(_0x4a9e46[_0x7b7e('0x3e')]['filter']){_0x2826fa[_0x7b7e('0x3d')]=_['merge'](_0x2826fa[_0x7b7e('0x3d')],{'$or':_['map'](_0x2826fa[_0x7b7e('0x41')],function(_0x534724){var _0x543fb0={};_0x543fb0[_0x534724]={'$like':'%'+_0x4a9e46[_0x7b7e('0x3e')]['filter']+'%'};return _0x543fb0;})});}_0x2826fa=_[_0x7b7e('0x52')]({},_0x2826fa,_0x4a9e46[_0x7b7e('0x53')]);return _0x5d0a9e[_0x7b7e('0xd1')](_0x2826fa);}})['then'](function(_0x4426b3){if(_0x4426b3){_0x263c43=_0x4426b3[_0x7b7e('0x44')];if(!_0x4a9e46[_0x7b7e('0x3e')][_0x7b7e('0xc9')](_0x7b7e('0xcd'))){_0x2826fa[_0x7b7e('0x21')]=qs[_0x7b7e('0x21')](_0x4a9e46[_0x7b7e('0x3e')]['limit']);_0x2826fa[_0x7b7e('0x1e')]=qs['offset'](_0x4a9e46[_0x7b7e('0x3e')]['offset']);}return _0x5d0a9e['getGroups'](_0x2826fa);}})['then'](function(_0x376ebb){if(_0x376ebb){return _0x376ebb?{'count':_0x263c43,'rows':_0x376ebb}:null;}})[_0x7b7e('0x23')](respondWithResult(_0xa58cd8,null))[_0x7b7e('0x19')](handleError(_0xa58cd8,null));};exports[_0x7b7e('0xd3')]=function(_0x260a15,_0x57b285){var _0x4d69d2={'raw':!![],'where':{}};var _0x1ff4b2={};var _0x37dfba={'count':0x0,'rows':[]};return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x260a15[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x57b285,null))[_0x7b7e('0x23')](function(_0x51cc3a){if(_0x51cc3a){_0x1ff4b2['model']=_[_0x7b7e('0x4d')](db[_0x7b7e('0xd4')]['rawAttributes']);_0x1ff4b2[_0x7b7e('0x3e')]=_[_0x7b7e('0x4d')](_0x260a15[_0x7b7e('0x3e')]);_0x1ff4b2[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x1ff4b2[_0x7b7e('0x50')],_0x1ff4b2['query']);_0x4d69d2[_0x7b7e('0x41')]=_['intersection'](_0x1ff4b2[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x260a15[_0x7b7e('0x3e')]['fields']));_0x4d69d2[_0x7b7e('0x41')]=_0x4d69d2[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x4d69d2[_0x7b7e('0x41')]:_0x1ff4b2['model'];if(!_0x260a15[_0x7b7e('0x3e')][_0x7b7e('0xc9')](_0x7b7e('0xcd'))){_0x4d69d2[_0x7b7e('0x21')]=qs['limit'](_0x260a15[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x4d69d2[_0x7b7e('0x1e')]=qs[_0x7b7e('0x1e')](_0x260a15['query'][_0x7b7e('0x1e')]);}_0x4d69d2['order']=qs[_0x7b7e('0xc7')](_0x260a15[_0x7b7e('0x3e')][_0x7b7e('0xc7')]);_0x4d69d2['where']=qs['filters'](_[_0x7b7e('0xc8')](_0x260a15[_0x7b7e('0x3e')],_0x1ff4b2[_0x7b7e('0x4e')]));_0x4d69d2[_0x7b7e('0x3d')][_0x7b7e('0xd5')]=_0x51cc3a['id'];if(_0x260a15[_0x7b7e('0x3e')][_0x7b7e('0x2c')]){_0x4d69d2[_0x7b7e('0x3d')]=_[_0x7b7e('0x52')](_0x4d69d2[_0x7b7e('0x3d')],{'$or':_[_0x7b7e('0x85')](_0x4d69d2[_0x7b7e('0x41')],function(_0x36f6dc){var _0x2a3fa0={};_0x2a3fa0[_0x36f6dc]={'$like':'%'+_0x260a15[_0x7b7e('0x3e')][_0x7b7e('0x2c')]+'%'};return _0x2a3fa0;})});}_0x4d69d2=_['merge']({},_0x4d69d2,_0x260a15[_0x7b7e('0x53')]);return db['VoiceRecording'][_0x7b7e('0x20')]({'where':_0x4d69d2[_0x7b7e('0x3d')]})[_0x7b7e('0x23')](function(_0x3fb144){_0x37dfba['count']=_0x3fb144;if(_0x260a15[_0x7b7e('0x3e')][_0x7b7e('0x3f')]){_0x4d69d2[_0x7b7e('0x40')]=[{'all':!![]}];}return db[_0x7b7e('0xd4')][_0x7b7e('0x83')](_0x4d69d2);})[_0x7b7e('0x23')](function(_0xde37f4){_0x37dfba[_0x7b7e('0x43')]=_0xde37f4;return _0x37dfba;});}})[_0x7b7e('0x23')](respondWithFilteredResult(_0x57b285,_0x4d69d2))[_0x7b7e('0x19')](handleError(_0x57b285,null));};exports[_0x7b7e('0xd6')]=function(_0x2a3380,_0x2c73ae){var _0x31b636={'raw':!![],'where':{}};var _0x4e7498={};var _0x127df0={'count':0x0,'rows':[]};return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x2a3380['params']['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x2c73ae,null))[_0x7b7e('0x23')](function(_0x507943){if(_0x507943){_0x4e7498[_0x7b7e('0x50')]=_[_0x7b7e('0x4d')](db[_0x7b7e('0xd7')][_0x7b7e('0x38')]);_0x4e7498[_0x7b7e('0x3e')]=_['keys'](_0x2a3380[_0x7b7e('0x3e')]);_0x4e7498[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x4e7498[_0x7b7e('0x50')],_0x4e7498[_0x7b7e('0x3e')]);_0x31b636[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0x4e7498[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x2a3380[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x31b636[_0x7b7e('0x41')]=_0x31b636[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x31b636[_0x7b7e('0x41')]:_0x4e7498[_0x7b7e('0x50')];if(!_0x2a3380[_0x7b7e('0x3e')]['hasOwnProperty'](_0x7b7e('0xcd'))){_0x31b636[_0x7b7e('0x21')]=qs[_0x7b7e('0x21')](_0x2a3380[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x31b636[_0x7b7e('0x1e')]=qs[_0x7b7e('0x1e')](_0x2a3380[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}_0x31b636[_0x7b7e('0xc6')]=qs['sort'](_0x2a3380['query']['sort']);_0x31b636['where']=qs[_0x7b7e('0x4e')](_[_0x7b7e('0xc8')](_0x2a3380[_0x7b7e('0x3e')],_0x4e7498[_0x7b7e('0x4e')]));_0x31b636[_0x7b7e('0x3d')]['UserId']=_0x507943['id'];if(_0x2a3380[_0x7b7e('0x3e')][_0x7b7e('0x2c')]){_0x31b636['where']=_[_0x7b7e('0x52')](_0x31b636['where'],{'$or':_[_0x7b7e('0x85')](_0x31b636[_0x7b7e('0x41')],function(_0x2d0fa7){var _0x4ea291={};_0x4ea291[_0x2d0fa7]={'$like':'%'+_0x2a3380[_0x7b7e('0x3e')]['filter']+'%'};return _0x4ea291;})});}_0x31b636=_[_0x7b7e('0x52')]({},_0x31b636,_0x2a3380[_0x7b7e('0x53')]);return db[_0x7b7e('0xd7')][_0x7b7e('0x20')]({'where':_0x31b636[_0x7b7e('0x3d')]})[_0x7b7e('0x23')](function(_0x36755d){_0x127df0['count']=_0x36755d;if(_0x2a3380[_0x7b7e('0x3e')]['includeAll']){_0x31b636[_0x7b7e('0x40')]=[{'all':!![]}];}return db[_0x7b7e('0xd7')][_0x7b7e('0x83')](_0x31b636);})[_0x7b7e('0x23')](function(_0x1e6b0f){_0x127df0['rows']=_0x1e6b0f;return _0x127df0;});}})[_0x7b7e('0x23')](respondWithFilteredResult(_0x2c73ae,_0x31b636))[_0x7b7e('0x19')](handleError(_0x2c73ae,null));};exports[_0x7b7e('0xd8')]=function(_0x56db3e,_0x50cdf9){var _0x2d3600={};var _0x4bd8bb={};var _0x31f455;var _0x1330a9;return db[_0x7b7e('0x37')]['findOne']({'where':{'id':_0x56db3e[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x50cdf9,null))[_0x7b7e('0x23')](function(_0x141363){if(_0x141363){_0x31f455=_0x141363;_0x4bd8bb[_0x7b7e('0x50')]=_['keys'](db['ChatInteraction'][_0x7b7e('0x38')]);_0x4bd8bb[_0x7b7e('0x3e')]=_['keys'](_0x56db3e[_0x7b7e('0x3e')]);_0x4bd8bb[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x4bd8bb[_0x7b7e('0x50')],_0x4bd8bb[_0x7b7e('0x3e')]);_0x2d3600['attributes']=_[_0x7b7e('0x4f')](_0x4bd8bb[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x56db3e[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x2d3600[_0x7b7e('0x41')]=_0x2d3600[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x2d3600[_0x7b7e('0x41')]:_0x4bd8bb['model'];_0x2d3600[_0x7b7e('0xc6')]=qs[_0x7b7e('0xc7')](_0x56db3e[_0x7b7e('0x3e')]['sort']);_0x2d3600[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_[_0x7b7e('0xc8')](_0x56db3e[_0x7b7e('0x3e')],_0x4bd8bb[_0x7b7e('0x4e')]));if(_0x56db3e[_0x7b7e('0x3e')]['filter']){_0x2d3600[_0x7b7e('0x3d')]=_[_0x7b7e('0x52')](_0x2d3600['where'],{'$or':_[_0x7b7e('0x85')](_0x2d3600[_0x7b7e('0x41')],function(_0x3ffaaf){var _0x158c93={};_0x158c93[_0x3ffaaf]={'$like':'%'+_0x56db3e[_0x7b7e('0x3e')][_0x7b7e('0x2c')]+'%'};return _0x158c93;})});}_0x2d3600=_[_0x7b7e('0x52')]({},_0x2d3600,_0x56db3e[_0x7b7e('0x53')]);return _0x31f455['getChatInteractions'](_0x2d3600);}})['then'](function(_0x50fdf6){if(_0x50fdf6){_0x1330a9=_0x50fdf6[_0x7b7e('0x44')];if(!_0x56db3e['query'][_0x7b7e('0xc9')](_0x7b7e('0xcd'))){_0x2d3600[_0x7b7e('0x21')]=qs[_0x7b7e('0x21')](_0x56db3e[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x2d3600['offset']=qs[_0x7b7e('0x1e')](_0x56db3e[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}return _0x31f455[_0x7b7e('0xd8')](_0x2d3600);}})[_0x7b7e('0x23')](function(_0xc29f56){if(_0xc29f56){return _0xc29f56?{'count':_0x1330a9,'rows':_0xc29f56}:null;}})[_0x7b7e('0x23')](respondWithResult(_0x50cdf9,null))[_0x7b7e('0x19')](handleError(_0x50cdf9,null));};exports[_0x7b7e('0xd9')]=function(_0x5936fd,_0x578f77){var _0x43690f={};var _0x4f5d50={};var _0x4b2816;var _0x444bf4;return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x5936fd[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x578f77,null))[_0x7b7e('0x23')](function(_0x4ee720){if(_0x4ee720){_0x4b2816=_0x4ee720;_0x4f5d50[_0x7b7e('0x50')]=_[_0x7b7e('0x4d')](db[_0x7b7e('0xda')][_0x7b7e('0x38')]);_0x4f5d50[_0x7b7e('0x3e')]=_[_0x7b7e('0x4d')](_0x5936fd['query']);_0x4f5d50['filters']=_[_0x7b7e('0x4f')](_0x4f5d50[_0x7b7e('0x50')],_0x4f5d50[_0x7b7e('0x3e')]);_0x43690f[_0x7b7e('0x41')]=_['intersection'](_0x4f5d50['model'],qs[_0x7b7e('0x51')](_0x5936fd['query']['fields']));_0x43690f['attributes']=_0x43690f[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x43690f['attributes']:_0x4f5d50[_0x7b7e('0x50')];_0x43690f[_0x7b7e('0xc6')]=qs[_0x7b7e('0xc7')](_0x5936fd[_0x7b7e('0x3e')][_0x7b7e('0xc7')]);_0x43690f[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_[_0x7b7e('0xc8')](_0x5936fd[_0x7b7e('0x3e')],_0x4f5d50['filters']));if(_0x5936fd['query'][_0x7b7e('0x2c')]){_0x43690f['where']=_[_0x7b7e('0x52')](_0x43690f[_0x7b7e('0x3d')],{'$or':_[_0x7b7e('0x85')](_0x43690f['attributes'],function(_0x1a549f){var _0x4166ea={};_0x4166ea[_0x1a549f]={'$like':'%'+_0x5936fd['query'][_0x7b7e('0x2c')]+'%'};return _0x4166ea;})});}_0x43690f=_[_0x7b7e('0x52')]({},_0x43690f,_0x5936fd['options']);return _0x4b2816['getOpenchannelInteractions'](_0x43690f);}})['then'](function(_0x3b83ca){if(_0x3b83ca){_0x444bf4=_0x3b83ca[_0x7b7e('0x44')];if(!_0x5936fd[_0x7b7e('0x3e')][_0x7b7e('0xc9')](_0x7b7e('0xcd'))){_0x43690f['limit']=qs[_0x7b7e('0x21')](_0x5936fd[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x43690f[_0x7b7e('0x1e')]=qs['offset'](_0x5936fd[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}return _0x4b2816[_0x7b7e('0xd9')](_0x43690f);}})[_0x7b7e('0x23')](function(_0x157cf6){if(_0x157cf6){return _0x157cf6?{'count':_0x444bf4,'rows':_0x157cf6}:null;}})[_0x7b7e('0x23')](respondWithResult(_0x578f77,null))[_0x7b7e('0x19')](handleError(_0x578f77,null));};exports[_0x7b7e('0xdb')]=function(_0x20ae46,_0x3b0796){var _0x9ae7ec={'raw':!![],'where':{}};var _0x34be7d={};var _0x23bcd9={'count':0x0,'rows':[]};return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x20ae46[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x3b0796,null))[_0x7b7e('0x23')](function(_0x3e7c54){if(_0x3e7c54){_0x34be7d[_0x7b7e('0x50')]=_[_0x7b7e('0x4d')](db['MailInteraction'][_0x7b7e('0x38')]);_0x34be7d[_0x7b7e('0x3e')]=_['keys'](_0x20ae46[_0x7b7e('0x3e')]);_0x34be7d[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x34be7d[_0x7b7e('0x50')],_0x34be7d[_0x7b7e('0x3e')]);_0x9ae7ec[_0x7b7e('0x41')]=_['intersection'](_0x34be7d[_0x7b7e('0x50')],qs['fields'](_0x20ae46[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x9ae7ec['attributes']=_0x9ae7ec['attributes'][_0x7b7e('0x44')]?_0x9ae7ec['attributes']:_0x34be7d['model'];if(!_0x20ae46['query'][_0x7b7e('0xc9')](_0x7b7e('0xcd'))){_0x9ae7ec[_0x7b7e('0x21')]=qs[_0x7b7e('0x21')](_0x20ae46[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x9ae7ec[_0x7b7e('0x1e')]=qs[_0x7b7e('0x1e')](_0x20ae46[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}_0x9ae7ec[_0x7b7e('0xc6')]=qs[_0x7b7e('0xc7')](_0x20ae46[_0x7b7e('0x3e')]['sort']);_0x9ae7ec[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_[_0x7b7e('0xc8')](_0x20ae46[_0x7b7e('0x3e')],_0x34be7d[_0x7b7e('0x4e')]));_0x9ae7ec[_0x7b7e('0x3d')][_0x7b7e('0xd5')]=_0x3e7c54['id'];if(_0x20ae46[_0x7b7e('0x3e')][_0x7b7e('0x2c')]){_0x9ae7ec[_0x7b7e('0x3d')]=_[_0x7b7e('0x52')](_0x9ae7ec[_0x7b7e('0x3d')],{'$or':_[_0x7b7e('0x85')](_0x9ae7ec['attributes'],function(_0x5510d1){var _0x141704={};_0x141704[_0x5510d1]={'$like':'%'+_0x20ae46['query'][_0x7b7e('0x2c')]+'%'};return _0x141704;})});}_0x9ae7ec=_[_0x7b7e('0x52')]({},_0x9ae7ec,_0x20ae46['options']);return db[_0x7b7e('0xdc')][_0x7b7e('0x20')]({'where':_0x9ae7ec[_0x7b7e('0x3d')]})[_0x7b7e('0x23')](function(_0x29c984){_0x23bcd9[_0x7b7e('0x20')]=_0x29c984;if(_0x20ae46[_0x7b7e('0x3e')][_0x7b7e('0x3f')]){_0x9ae7ec[_0x7b7e('0x40')]=[{'all':!![]}];}return db[_0x7b7e('0xdc')]['findAll'](_0x9ae7ec);})[_0x7b7e('0x23')](function(_0x467acb){_0x23bcd9[_0x7b7e('0x43')]=_0x467acb;return _0x23bcd9;});}})[_0x7b7e('0x23')](respondWithFilteredResult(_0x3b0796,_0x9ae7ec))[_0x7b7e('0x19')](handleError(_0x3b0796,null));};exports[_0x7b7e('0xdd')]=function(_0x3dff40,_0x6f3faf){var _0x3e0cc6={};var _0x1bb023={};var _0x28f668;var _0x58b728;return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x3dff40['params']['id']}})['then'](handleEntityNotFound(_0x6f3faf,null))[_0x7b7e('0x23')](function(_0x360a24){if(_0x360a24){_0x28f668=_0x360a24;_0x1bb023[_0x7b7e('0x50')]=_['keys'](db[_0x7b7e('0xde')][_0x7b7e('0x38')]);_0x1bb023['query']=_[_0x7b7e('0x4d')](_0x3dff40[_0x7b7e('0x3e')]);_0x1bb023[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x1bb023[_0x7b7e('0x50')],_0x1bb023['query']);_0x3e0cc6[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0x1bb023[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x3dff40['query'][_0x7b7e('0x51')]));_0x3e0cc6['attributes']=_0x3e0cc6[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x3e0cc6[_0x7b7e('0x41')]:_0x1bb023[_0x7b7e('0x50')];_0x3e0cc6[_0x7b7e('0xc6')]=qs['sort'](_0x3dff40[_0x7b7e('0x3e')][_0x7b7e('0xc7')]);_0x3e0cc6['where']=qs[_0x7b7e('0x4e')](_[_0x7b7e('0xc8')](_0x3dff40[_0x7b7e('0x3e')],_0x1bb023['filters']));if(_0x3dff40[_0x7b7e('0x3e')][_0x7b7e('0x2c')]){_0x3e0cc6['where']=_[_0x7b7e('0x52')](_0x3e0cc6[_0x7b7e('0x3d')],{'$or':_['map'](_0x3e0cc6[_0x7b7e('0x41')],function(_0x424521){var _0x54c09a={};_0x54c09a[_0x424521]={'$like':'%'+_0x3dff40[_0x7b7e('0x3e')][_0x7b7e('0x2c')]+'%'};return _0x54c09a;})});}_0x3e0cc6=_[_0x7b7e('0x52')]({},_0x3e0cc6,_0x3dff40[_0x7b7e('0x53')]);return _0x28f668[_0x7b7e('0xdd')](_0x3e0cc6);}})[_0x7b7e('0x23')](function(_0x142493){if(_0x142493){_0x58b728=_0x142493[_0x7b7e('0x44')];if(!_0x3dff40[_0x7b7e('0x3e')][_0x7b7e('0xc9')](_0x7b7e('0xcd'))){_0x3e0cc6['limit']=qs[_0x7b7e('0x21')](_0x3dff40['query'][_0x7b7e('0x21')]);_0x3e0cc6[_0x7b7e('0x1e')]=qs[_0x7b7e('0x1e')](_0x3dff40[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}return _0x28f668[_0x7b7e('0xdd')](_0x3e0cc6);}})['then'](function(_0x3294f0){if(_0x3294f0){return _0x3294f0?{'count':_0x58b728,'rows':_0x3294f0}:null;}})[_0x7b7e('0x23')](respondWithResult(_0x6f3faf,null))[_0x7b7e('0x19')](handleError(_0x6f3faf,null));};exports[_0x7b7e('0xdf')]=function(_0x9544f5,_0x5a6c4f){var _0x1ade36={};var _0x4d4262={};var _0x332b96;var _0x5e1aa8;return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x9544f5[_0x7b7e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x5a6c4f,null))[_0x7b7e('0x23')](function(_0x2d2eeb){if(_0x2d2eeb){_0x332b96=_0x2d2eeb;_0x4d4262[_0x7b7e('0x50')]=_[_0x7b7e('0x4d')](db[_0x7b7e('0xe0')][_0x7b7e('0x38')]);_0x4d4262[_0x7b7e('0x3e')]=_[_0x7b7e('0x4d')](_0x9544f5['query']);_0x4d4262[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x4d4262[_0x7b7e('0x50')],_0x4d4262[_0x7b7e('0x3e')]);_0x1ade36[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0x4d4262['model'],qs['fields'](_0x9544f5[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x1ade36['attributes']=_0x1ade36[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x1ade36['attributes']:_0x4d4262[_0x7b7e('0x50')];_0x1ade36[_0x7b7e('0xc6')]=qs[_0x7b7e('0xc7')](_0x9544f5['query'][_0x7b7e('0xc7')]);_0x1ade36[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_[_0x7b7e('0xc8')](_0x9544f5[_0x7b7e('0x3e')],_0x4d4262['filters']));if(_0x9544f5[_0x7b7e('0x3e')][_0x7b7e('0x2c')]){_0x1ade36[_0x7b7e('0x3d')]=_[_0x7b7e('0x52')](_0x1ade36[_0x7b7e('0x3d')],{'$or':_[_0x7b7e('0x85')](_0x1ade36[_0x7b7e('0x41')],function(_0x453b36){var _0x562c28={};_0x562c28[_0x453b36]={'$like':'%'+_0x9544f5[_0x7b7e('0x3e')][_0x7b7e('0x2c')]+'%'};return _0x562c28;})});}_0x1ade36=_[_0x7b7e('0x52')]({},_0x1ade36,_0x9544f5[_0x7b7e('0x53')]);return _0x332b96[_0x7b7e('0xdf')](_0x1ade36);}})[_0x7b7e('0x23')](function(_0x106b2c){if(_0x106b2c){_0x5e1aa8=_0x106b2c[_0x7b7e('0x44')];if(!_0x9544f5[_0x7b7e('0x3e')][_0x7b7e('0xc9')]('nolimit')){_0x1ade36['limit']=qs[_0x7b7e('0x21')](_0x9544f5[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x1ade36[_0x7b7e('0x1e')]=qs[_0x7b7e('0x1e')](_0x9544f5[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}return _0x332b96[_0x7b7e('0xdf')](_0x1ade36);}})[_0x7b7e('0x23')](function(_0x29d23d){if(_0x29d23d){return _0x29d23d?{'count':_0x5e1aa8,'rows':_0x29d23d}:null;}})[_0x7b7e('0x23')](respondWithResult(_0x5a6c4f,null))[_0x7b7e('0x19')](handleError(_0x5a6c4f,null));};exports[_0x7b7e('0xe1')]=function(_0x513661,_0x101c03){var _0x3c2903={};var _0x2fef59={};var _0x130ab5;var _0x529e0e;return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x513661['params']['id']}})['then'](handleEntityNotFound(_0x101c03,null))[_0x7b7e('0x23')](function(_0x51aefb){if(_0x51aefb){_0x130ab5=_0x51aefb;_0x2fef59['model']=_[_0x7b7e('0x4d')](db[_0x7b7e('0xe2')][_0x7b7e('0x38')]);_0x2fef59[_0x7b7e('0x3e')]=_[_0x7b7e('0x4d')](_0x513661['query']);_0x2fef59[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x2fef59[_0x7b7e('0x50')],_0x2fef59[_0x7b7e('0x3e')]);_0x3c2903[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0x2fef59['model'],qs[_0x7b7e('0x51')](_0x513661[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x3c2903[_0x7b7e('0x41')]=_0x3c2903[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x3c2903[_0x7b7e('0x41')]:_0x2fef59[_0x7b7e('0x50')];_0x3c2903[_0x7b7e('0xc6')]=qs[_0x7b7e('0xc7')](_0x513661[_0x7b7e('0x3e')]['sort']);_0x3c2903['where']=qs[_0x7b7e('0x4e')](_[_0x7b7e('0xc8')](_0x513661['query'],_0x2fef59['filters']));if(_0x513661[_0x7b7e('0x3e')][_0x7b7e('0x2c')]){_0x3c2903[_0x7b7e('0x3d')]=_[_0x7b7e('0x52')](_0x3c2903[_0x7b7e('0x3d')],{'$or':_['map'](_0x3c2903['attributes'],function(_0x50ead7){var _0x2649d1={};_0x2649d1[_0x50ead7]={'$like':'%'+_0x513661[_0x7b7e('0x3e')]['filter']+'%'};return _0x2649d1;})});}_0x3c2903=_[_0x7b7e('0x52')]({},_0x3c2903,_0x513661['options']);return _0x130ab5['getWhatsappInteractions'](_0x3c2903);}})[_0x7b7e('0x23')](function(_0x5cd9c2){if(_0x5cd9c2){_0x529e0e=_0x5cd9c2['length'];if(!_0x513661[_0x7b7e('0x3e')][_0x7b7e('0xc9')](_0x7b7e('0xcd'))){_0x3c2903['limit']=qs[_0x7b7e('0x21')](_0x513661['query']['limit']);_0x3c2903[_0x7b7e('0x1e')]=qs['offset'](_0x513661[_0x7b7e('0x3e')]['offset']);}return _0x130ab5[_0x7b7e('0xe1')](_0x3c2903);}})[_0x7b7e('0x23')](function(_0x2f138f){if(_0x2f138f){return _0x2f138f?{'count':_0x529e0e,'rows':_0x2f138f}:null;}})['then'](respondWithResult(_0x101c03,null))[_0x7b7e('0x19')](handleError(_0x101c03,null));};exports[_0x7b7e('0xe3')]=function(_0x513b0d,_0x26507a,_0x3fb58a){var _0x888145;var _0x5d3369;var _0x2b4c67;var _0x54c2e0=!_['isNil'](_0x513b0d['params']['id'])?_0x513b0d[_0x7b7e('0x4b')]['id']:!_[_0x7b7e('0x64')](_0x513b0d[_0x7b7e('0x77')]['id'])?_0x513b0d[_0x7b7e('0x77')]['id']:null;return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x54c2e0,'role':{'$or':[_0x7b7e('0x26'),_0x7b7e('0x77'),_0x7b7e('0x29')]}},'attributes':['id',_0x7b7e('0x31'),_0x7b7e('0xe4'),_0x7b7e('0xe5'),'role',_0x7b7e('0x5d'),_0x7b7e('0xe6')]})[_0x7b7e('0x23')](function(_0x49b59e){if(_0x49b59e){if(_0x49b59e['role']===_0x7b7e('0x29')){_0x888145=_0x49b59e;if(_0x513b0d[_0x7b7e('0x58')][_0x7b7e('0x9a')]){_0x2b4c67=util[_0x7b7e('0xa6')](_0x7b7e('0xe7'),_0x888145[_0x513b0d[_0x7b7e('0x58')][_0x7b7e('0x9a')]]);}else if(_0x513b0d[_0x7b7e('0x58')][_0x7b7e('0xe8')]){_0x2b4c67=util[_0x7b7e('0xa6')]('SIP/%s',_0x513b0d[_0x7b7e('0x58')][_0x7b7e('0xe8')]);}else{_0x2b4c67=util[_0x7b7e('0xa6')]('SIP/%s',_0x888145[_0x7b7e('0x31')]);}socket['to'](util['format'](_0x7b7e('0xe9'),_0x888145['name']))[_0x7b7e('0xa2')](_0x7b7e('0xea'),{'user':{'id':_0x888145['id'],'name':_0x888145['name']},'ip':_0x513b0d[_0x7b7e('0xeb')][_0x7b7e('0xec')]||_0x513b0d[_0x7b7e('0xed')][_0x7b7e('0xee')]||_0x513b0d['socket'][_0x7b7e('0xee')]||_0x513b0d[_0x7b7e('0xed')][_0x7b7e('0xef')]['remoteAddress']});return db[_0x7b7e('0xa8')][_0x7b7e('0x33')]({'where':{'membername':_0x888145['name']},'individualHooks':!![]});}}else{throw new db[(_0x7b7e('0x89'))][(_0x7b7e('0x8a'))](_0x7b7e('0xf0'));}})[_0x7b7e('0x23')](function(){if(_0x888145){return _0x888145['getVoiceQueues']({'raw':!![]});}})['then'](function(_0x20020e){if(_0x888145){var _0x3eddef=[];if(_0x20020e){_0x5d3369=_0x20020e;if(_0x5d3369[_0x7b7e('0x44')]){for(var _0x51d7dc=0x0;_0x51d7dc<_0x5d3369[_0x7b7e('0x44')];_0x51d7dc++){_0x3eddef[_0x7b7e('0x45')]({'membername':_0x888145[_0x7b7e('0x31')],'UserId':_0x888145['id'],'queue_name':_0x5d3369[_0x51d7dc]['name'],'VoiceQueueId':_0x5d3369[_0x51d7dc]['id'],'interface':_0x2b4c67,'paused':_0x888145['loginInPause']||![],'penalty':_0x5d3369[_0x51d7dc][_0x7b7e('0xf1')]||0x0});}return BPromise[_0x7b7e('0x82')](_0x3eddef,function(_0x5667b5){return db['UserVoiceQueueRt']['upsert'](_0x5667b5);});}}}})['then'](function(){if(_0x888145){return db['MemberReport'][_0x7b7e('0x83')]({'where':{'membername':_0x888145[_0x7b7e('0x31')],'exitAt':null}});}})[_0x7b7e('0x23')](function(_0x315916){if(_0x888145){var _0x15d46b=[];_0x315916[_0x7b7e('0xf2')](function(_0x423440){_0x15d46b[_0x7b7e('0x45')](_0x423440[_0x7b7e('0x22')]({'exitAt':moment()['format'](_0x7b7e('0xf3'))}));});return BPromise[_0x7b7e('0x49')](_0x15d46b);}})[_0x7b7e('0x23')](function(){if(_0x888145){var _0x18c95c=[];var _0x26d869=[];var _0x1e6d0d=utils[_0x7b7e('0xf4')]();var _0x44beb2={'membername':_0x888145[_0x7b7e('0x31')],'interface':_0x2b4c67,'enterAt':moment()[_0x7b7e('0xa6')](_0x7b7e('0xf3')),'role':_0x888145['role'],'internal':_0x888145[_0x7b7e('0x5d')]};_0x1e6d0d[_0x7b7e('0xf2')](function(_0x32875c){_0x18c95c[_0x7b7e('0x45')](_[_0x7b7e('0x52')]({'channel':_0x32875c,'type':_0x7b7e('0xf5'),'data1':_0x513b0d[_0x7b7e('0x58')][_0x7b7e('0xf6')],'data2':_0x2b4c67},_0x44beb2));if(_0x888145['loginInPause']){_0x26d869[_0x7b7e('0x45')](_[_0x7b7e('0x52')]({'channel':_0x32875c,'type':_0x7b7e('0xf7'),'data1':'LOGININPAUSE'},_0x44beb2));}});return db[_0x7b7e('0xf8')][_0x7b7e('0xf9')](_0x18c95c[_0x7b7e('0xfa')](_0x26d869),{'individualHooks':!![]});}})[_0x7b7e('0x23')](function(){if(_0x888145){return _0x888145[_0x7b7e('0x22')]({'online':!![],'lastLoginAt':moment()[_0x7b7e('0xa6')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x888145['loginInPause']||![],'mailPause':_0x888145[_0x7b7e('0xe6')]||![],'chatPause':_0x888145[_0x7b7e('0xe6')]||![],'faxPause':_0x888145[_0x7b7e('0xe6')]||![],'smsPause':_0x888145[_0x7b7e('0xe6')]||![],'openchannelPause':_0x888145[_0x7b7e('0xe6')]||![],'whatsappPause':_0x888145[_0x7b7e('0xe6')]||![],'pauseType':_0x888145[_0x7b7e('0xe6')]?_0x7b7e('0xfb'):null,'interface':_0x2b4c67,'lastPauseAt':moment()['format'](_0x7b7e('0xf3'))});}})[_0x7b7e('0x23')](function(_0x5cebd6){if(_0x513b0d[_0x7b7e('0xfc')]){return _0x3fb58a();}else{return BPromise[_0x7b7e('0xfd')](_0x5cebd6)[_0x7b7e('0x23')](respondWithResult(_0x26507a,null));}})[_0x7b7e('0x19')](handleError(_0x26507a,null));};exports[_0x7b7e('0xfe')]=function(_0x192030,_0xc933dd){var _0x5b00cf;return db[_0x7b7e('0x37')]['find']({'where':{'id':_0x192030[_0x7b7e('0x4b')]['id'],'role':'agent'},'attributes':['id','name',_0x7b7e('0x25')]})['then'](handleEntityNotFound(_0xc933dd,null))[_0x7b7e('0x23')](function(_0x365c4d){if(_0x365c4d){_0x5b00cf=_0x365c4d;return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x5b00cf[_0x7b7e('0x31')]},'individualHooks':!![]});}})[_0x7b7e('0x23')](function(){return db[_0x7b7e('0xf8')]['findAll']({'where':{'membername':_0x5b00cf['name'],'exitAt':null}});})[_0x7b7e('0x23')](function(_0xf3020a){var _0x1998e1=[];_0xf3020a['forEach'](function(_0x491dcd){_0x1998e1[_0x7b7e('0x45')](_0x491dcd['update']({'exitAt':moment()[_0x7b7e('0xa6')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x7b7e('0x49')](_0x1998e1);})[_0x7b7e('0x23')](function(){return _0x5b00cf[_0x7b7e('0x22')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x7b7e('0x23')](respondWithResult(_0xc933dd,null))[_0x7b7e('0x19')](handleError(_0xc933dd,null));};exports[_0x7b7e('0xff')]=function(_0x27dc38,_0x464534){var _0x26cb3c;return db[_0x7b7e('0xa8')][_0x7b7e('0x22')]({'paused':0x1},{'where':{'UserId':_0x27dc38[_0x7b7e('0x4b')]['id']},'individualHooks':!![]})[_0x7b7e('0x23')](function(){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x27dc38[_0x7b7e('0x4b')]['id'],'role':'agent'},'attributes':['id',_0x7b7e('0x31'),_0x7b7e('0x25'),_0x7b7e('0x5d'),_0x7b7e('0x9a')]});})[_0x7b7e('0x23')](handleEntityNotFound(_0x464534,null))[_0x7b7e('0x23')](function(_0x8a3c47){if(_0x8a3c47){_0x26cb3c=_0x8a3c47;return respondWithRpcPromise('QueuePause',_0x7b7e('0xff'),{'id':_0x26cb3c['id'],'name':_0x26cb3c[_0x7b7e('0x31')],'pause':!![]});}})[_0x7b7e('0x23')](function(){if(_0x26cb3c){return db[_0x7b7e('0xf8')][_0x7b7e('0x83')]({'where':{'membername':_0x26cb3c[_0x7b7e('0x31')],'type':_0x7b7e('0xf7'),'exitAt':null}});}})['then'](function(_0x401131){if(_0x401131[_0x7b7e('0x44')]){var _0x5da81a=moment()[_0x7b7e('0xa6')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x5c30b7=0x0,_0x4c01cf=_0x401131['length'];_0x5c30b7<_0x4c01cf;_0x5c30b7++){_0x401131[_0x5c30b7][_0x7b7e('0x100')]({'exitAt':_0x5da81a});}}})[_0x7b7e('0x23')](function(){var _0x2cc589=[];var _0x3f00d1=utils[_0x7b7e('0xf4')]();_0x3f00d1[_0x7b7e('0xf2')](function(_0x2c94f7){_0x2cc589['push']({'channel':_0x2c94f7,'membername':_0x26cb3c[_0x7b7e('0x31')],'interface':_[_0x7b7e('0x64')](_0x26cb3c[_0x7b7e('0x9a')])?util[_0x7b7e('0xa6')](_0x7b7e('0xa7'),_0x26cb3c[_0x7b7e('0x31')]):_0x26cb3c[_0x7b7e('0x9a')],'type':_0x7b7e('0xf7'),'enterAt':moment()[_0x7b7e('0xa6')](_0x7b7e('0xf3')),'data1':_0x27dc38['body'][_0x7b7e('0x3a')]||_0x7b7e('0x101'),'role':_0x26cb3c[_0x7b7e('0x25')],'internal':_0x26cb3c[_0x7b7e('0x5d')]});});return db[_0x7b7e('0xf8')][_0x7b7e('0xf9')](_0x2cc589,{'individualHooks':!![]});})[_0x7b7e('0x23')](function(){return _0x26cb3c[_0x7b7e('0x22')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x27dc38[_0x7b7e('0x58')][_0x7b7e('0x3a')]||_0x7b7e('0x101'),'lastPauseAt':moment()[_0x7b7e('0xa6')](_0x7b7e('0xf3'))});})[_0x7b7e('0x23')](respondWithResult(_0x464534,null))[_0x7b7e('0x19')](handleError(_0x464534,null));};exports[_0x7b7e('0x102')]=function(_0x2c4fe7,_0x1be623){var _0x4c1cf2;return db['User'][_0x7b7e('0x30')]({'where':{'id':_0x2c4fe7[_0x7b7e('0x4b')]['id']},'attributes':['id',_0x7b7e('0x31'),_0x7b7e('0x25'),'voicePause',_0x7b7e('0x103'),'chatPause',_0x7b7e('0x104'),_0x7b7e('0x105'),'smsPause',_0x7b7e('0x106'),_0x7b7e('0x107'),_0x7b7e('0x108')]})[_0x7b7e('0x23')](handleEntityNotFound(_0x1be623,null))[_0x7b7e('0x23')](function(_0x31b94d){if(_0x31b94d){_0x4c1cf2=_0x31b94d;if(_0x2c4fe7[_0x7b7e('0x58')][_0x7b7e('0x98')]&&!utils[_0x7b7e('0x9b')](_0x2c4fe7[_0x7b7e('0x58')][_0x7b7e('0x98')])){throw new db[(_0x7b7e('0x89'))][(_0x7b7e('0x8a'))](_0x7b7e('0x9c'));}switch(_0x2c4fe7[_0x7b7e('0x58')]['channel']){case _0x7b7e('0xa4'):return respondWithRpcPromise(_0x7b7e('0x109'),_0x7b7e('0x102'),{'id':_0x4c1cf2['id'],'name':_0x4c1cf2[_0x7b7e('0x31')],'pause':![]})[_0x7b7e('0x23')](function(){return db[_0x7b7e('0xa8')][_0x7b7e('0x22')]({'paused':0x0},{'where':{'UserId':_0x4c1cf2['id']},'individualHooks':!![]});})[_0x7b7e('0x23')](function(){return db[_0x7b7e('0xf8')][_0x7b7e('0x30')]({'where':{'channel':_0x2c4fe7[_0x7b7e('0x58')]['channel'],'membername':_0x4c1cf2[_0x7b7e('0x31')],'type':_0x7b7e('0xf7'),'exitAt':null}});})[_0x7b7e('0x23')](function(_0x27cf58){if(_0x27cf58){return _0x27cf58[_0x7b7e('0x22')]({'exitAt':moment()[_0x7b7e('0xa6')](_0x7b7e('0xf3')),'data2':_0x7b7e('0x10a')},{'individualHooks':!![]});}return null;})[_0x7b7e('0x23')](function(){return _0x4c1cf2['update']({'voicePause':![]});});case _0x7b7e('0x48'):case _0x7b7e('0xb9'):case'fax':case _0x7b7e('0x47'):case'whatsapp':case _0x7b7e('0x55'):return db['MemberReport'][_0x7b7e('0x30')]({'where':{'channel':_0x2c4fe7[_0x7b7e('0x58')][_0x7b7e('0x98')],'membername':_0x4c1cf2[_0x7b7e('0x31')],'type':_0x7b7e('0xf7'),'exitAt':null}})[_0x7b7e('0x23')](function(_0x595ff9){if(_0x595ff9){return _0x595ff9[_0x7b7e('0x22')]({'exitAt':moment()['format'](_0x7b7e('0xf3')),'data2':_0x7b7e('0x10a')},{'individualHooks':!![]});}return null;})[_0x7b7e('0x23')](function(){var _0x1ae805={};_[_0x7b7e('0x10b')](_0x1ae805,util[_0x7b7e('0xa6')](_0x7b7e('0x10c'),_0x2c4fe7[_0x7b7e('0x58')][_0x7b7e('0x98')],_0x7b7e('0x10d')),![]);return _0x4c1cf2[_0x7b7e('0x22')](_0x1ae805);});default:return respondWithRpcPromise(_0x7b7e('0x109'),_0x7b7e('0x102'),{'id':_0x4c1cf2['id'],'name':_0x4c1cf2['name'],'pause':![]})['then'](function(){return db['UserVoiceQueueRt']['update']({'paused':0x0},{'where':{'UserId':_0x4c1cf2['id']}});})[_0x7b7e('0x23')](function(){return db['MemberReport'][_0x7b7e('0x83')]({'where':{'membername':_0x4c1cf2[_0x7b7e('0x31')],'type':_0x7b7e('0xf7'),'exitAt':null}});})[_0x7b7e('0x23')](function(_0x2308e4){var _0x23e69b=[];_0x2308e4[_0x7b7e('0xf2')](function(_0x542b44){_0x23e69b[_0x7b7e('0x45')](_0x542b44['update']({'exitAt':moment()['format'](_0x7b7e('0xf3')),'data2':_0x7b7e('0x10a')}));});return BPromise[_0x7b7e('0x49')](_0x23e69b);})[_0x7b7e('0x23')](function(){return _0x4c1cf2['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0x7b7e('0x23')](respondWithResult(_0x1be623,null))[_0x7b7e('0x19')](handleError(_0x1be623,null));};exports[_0x7b7e('0x10e')]=function(_0x3c6e39,_0x3f12c5){var _0xc514b6={};var _0x3cbb0c={};var _0x45c53b;var _0x4a0e1b;return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x3c6e39[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x3f12c5,null))[_0x7b7e('0x23')](function(_0x4e7c80){if(_0x4e7c80){_0x45c53b=_0x4e7c80;_0x3cbb0c[_0x7b7e('0x50')]=_['keys'](db[_0x7b7e('0x10f')][_0x7b7e('0x38')]);_0x3cbb0c['query']=_[_0x7b7e('0x4d')](_0x3c6e39[_0x7b7e('0x3e')]);_0x3cbb0c[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x3cbb0c[_0x7b7e('0x50')],_0x3cbb0c[_0x7b7e('0x3e')]);_0xc514b6[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0x3cbb0c[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x3c6e39[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0xc514b6[_0x7b7e('0x41')]=_0xc514b6['attributes'][_0x7b7e('0x44')]?_0xc514b6[_0x7b7e('0x41')]:_0x3cbb0c[_0x7b7e('0x50')];_0xc514b6[_0x7b7e('0xc6')]=qs['sort'](_0x3c6e39[_0x7b7e('0x3e')]['sort']);_0xc514b6[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_['pick'](_0x3c6e39[_0x7b7e('0x3e')],_0x3cbb0c[_0x7b7e('0x4e')]));if(_0x3c6e39['query'][_0x7b7e('0x2c')]){_0xc514b6[_0x7b7e('0x3d')]=_[_0x7b7e('0x52')](_0xc514b6[_0x7b7e('0x3d')],{'$or':_[_0x7b7e('0x85')](_0xc514b6[_0x7b7e('0x41')],function(_0x209c89){var _0x45838d={};_0x45838d[_0x209c89]={'$like':'%'+_0x3c6e39['query'][_0x7b7e('0x2c')]+'%'};return _0x45838d;})});}_0xc514b6=_[_0x7b7e('0x52')]({},_0xc514b6,_0x3c6e39[_0x7b7e('0x53')]);return _0x45c53b['getTeams'](_0xc514b6);}})[_0x7b7e('0x23')](function(_0x188eff){if(_0x188eff){_0x4a0e1b=_0x188eff[_0x7b7e('0x44')];if(!_0x3c6e39[_0x7b7e('0x3e')]['hasOwnProperty']('nolimit')){_0xc514b6[_0x7b7e('0x21')]=qs[_0x7b7e('0x21')](_0x3c6e39[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0xc514b6['offset']=qs['offset'](_0x3c6e39['query']['offset']);}return _0x45c53b[_0x7b7e('0x10e')](_0xc514b6);}})[_0x7b7e('0x23')](function(_0x577610){if(_0x577610){return _0x577610?{'count':_0x4a0e1b,'rows':_0x577610}:null;}})['then'](respondWithResult(_0x3f12c5,null))[_0x7b7e('0x19')](handleError(_0x3f12c5,null));};exports[_0x7b7e('0x110')]=function(_0x3ddc51,_0x1b2692){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x3ddc51[_0x7b7e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x1b2692,null))[_0x7b7e('0x23')](function(_0x1e8ee2){if(_0x1e8ee2){var _0x4bce63=_0x1e8ee2[_0x7b7e('0x24')]({'plain':!![]});return _0x1e8ee2[_0x7b7e('0x110')](_0x3ddc51[_0x7b7e('0x58')][_0x7b7e('0x5c')],_['omit'](_0x3ddc51[_0x7b7e('0x58')],[_0x7b7e('0x5c'),'id'])||{})[_0x7b7e('0x23')](function(){for(var _0x14a6ac=0x0;_0x14a6ac<_0x3ddc51[_0x7b7e('0x58')][_0x7b7e('0x5c')][_0x7b7e('0x44')];_0x14a6ac++){var _0xd6293e=[];db[_0x7b7e('0x10f')][_0x7b7e('0x8f')]({'where':{'id':_0x3ddc51[_0x7b7e('0x58')]['ids'][_0x14a6ac]}})['then'](function(_0x5e70db){_0xd6293e['push'](_0x5e70db[_0x7b7e('0x111')]()[_0x7b7e('0x23')](function(_0x4720c7){for(var _0x453115=0x0;_0x453115<_0x4720c7[_0x7b7e('0x44')];_0x453115++){_0x4720c7[_0x453115][_0x7b7e('0x112')](_0x7b7e('0x98'),_0x7b7e('0x113'));}return _0x4720c7;}));_0xd6293e[_0x7b7e('0x45')](_0x5e70db[_0x7b7e('0x114')]()[_0x7b7e('0x23')](function(_0x11e956){for(var _0x5dc51f=0x0;_0x5dc51f<_0x11e956[_0x7b7e('0x44')];_0x5dc51f++){_0x11e956[_0x5dc51f][_0x7b7e('0x112')](_0x7b7e('0x98'),_0x7b7e('0x115'));}return _0x11e956;}));_0xd6293e['push'](_0x5e70db[_0x7b7e('0x116')]()['then'](function(_0x2ffbc9){for(var _0x411788=0x0;_0x411788<_0x2ffbc9[_0x7b7e('0x44')];_0x411788++){_0x2ffbc9[_0x411788][_0x7b7e('0x112')](_0x7b7e('0x98'),'Mail');}return _0x2ffbc9;}));_0xd6293e['push'](_0x5e70db[_0x7b7e('0x117')]()[_0x7b7e('0x23')](function(_0x40dd98){for(var _0x4ef312=0x0;_0x4ef312<_0x40dd98['length'];_0x4ef312++){_0x40dd98[_0x4ef312]['setDataValue'](_0x7b7e('0x98'),_0x7b7e('0x118'));}return _0x40dd98;}));_0xd6293e[_0x7b7e('0x45')](_0x5e70db[_0x7b7e('0x119')]()[_0x7b7e('0x23')](function(_0x36edd8){for(var _0x5d84d0=0x0;_0x5d84d0<_0x36edd8[_0x7b7e('0x44')];_0x5d84d0++){_0x36edd8[_0x5d84d0][_0x7b7e('0x112')](_0x7b7e('0x98'),_0x7b7e('0x11a'));}return _0x36edd8;}));_0xd6293e[_0x7b7e('0x45')](_0x5e70db[_0x7b7e('0x11b')]()[_0x7b7e('0x23')](function(_0x3ac2cb){for(var _0x120420=0x0;_0x120420<_0x3ac2cb[_0x7b7e('0x44')];_0x120420++){_0x3ac2cb[_0x120420]['setDataValue']('channel','Fax');}return _0x3ac2cb;}));_0xd6293e[_0x7b7e('0x45')](_0x5e70db[_0x7b7e('0x11c')]()['then'](function(_0x46cc70){for(var _0x1468f8=0x0;_0x1468f8<_0x46cc70[_0x7b7e('0x44')];_0x1468f8++){_0x46cc70[_0x1468f8]['setDataValue'](_0x7b7e('0x98'),_0x7b7e('0x11d'));}return _0x46cc70;}));return BPromise['all'](_0xd6293e);})[_0x7b7e('0x23')](function(_0x578f69){var _0x188a8f=_[_0x7b7e('0x11e')](_0x578f69);_0xd6293e=[];return db[_0x7b7e('0x62')][_0x7b7e('0x11f')](function(_0x1dfc06){for(var _0x45aab7=0x0;_0x45aab7<_0x188a8f[_0x7b7e('0x44')];_0x45aab7++){_0xd6293e[_0x7b7e('0x45')](_0x188a8f[_0x45aab7]['addAgent'](_0x4bce63['id']),{'transaction':_0x1dfc06});}return BPromise['all'](_0xd6293e)[_0x7b7e('0x23')](function(){if(_0x4bce63['online']){return BPromise[_0x7b7e('0x82')](_[_0x7b7e('0x2c')](_0x188a8f,function(_0x4bba0f){return _0x4bba0f[_0x7b7e('0x120')](_0x7b7e('0x98'))===_0x7b7e('0x113');}),function(_0x5507b6){return db[_0x7b7e('0xa8')][_0x7b7e('0xa9')]({'membername':_0x4bce63[_0x7b7e('0x31')],'UserId':_0x4bce63['id'],'queue_name':_0x5507b6['name'],'VoiceQueueId':_0x5507b6['id'],'interface':_[_0x7b7e('0x64')](_0x4bce63[_0x7b7e('0x9a')])?util['format'](_0x7b7e('0xa7'),_0x4bce63[_0x7b7e('0x31')]):_0x4bce63[_0x7b7e('0x9a')],'paused':_0x4bce63[_0x7b7e('0x99')]||![],'penalty':_0x4bce63[_0x7b7e('0x9f')]},{'transaction':_0x1dfc06});});}else{return;}})[_0x7b7e('0x23')](function(){for(var _0x57c364=0x0;_0x57c364<_0x188a8f[_0x7b7e('0x44')];_0x57c364++){var _0xd091d7=_0x188a8f[_0x57c364][_0x7b7e('0x120')](_0x7b7e('0x98'));var _0x19d96a=_0xd091d7+_0x7b7e('0xa1');socket['emit']('user'+_0xd091d7+'Queue:save',{'UserId':_0x4bce63['id'],['queueField']:_0x188a8f[_0x57c364]['id']});}});});});}});}})[_0x7b7e('0x23')](respondWithStatusCode(_0x1b2692,null))['catch'](handleError(_0x1b2692,null));};exports[_0x7b7e('0x121')]=function(_0x4b3433,_0x341e15){return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x4b3433[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x341e15,null))['then'](function(_0x12b1ae){if(_0x12b1ae){var _0x577378=_0x12b1ae[_0x7b7e('0x24')]({'plain':!![]});var _0x4fcf86=_0x4b3433[_0x7b7e('0x3e')][_0x7b7e('0x5c')];return _0x12b1ae['removeTeams'](_0x4fcf86)[_0x7b7e('0x23')](function(){for(var _0x3a6637=0x0;_0x3a6637<_0x4fcf86[_0x7b7e('0x44')];_0x3a6637++){var _0x54f391=[];db['Team']['findOne']({'where':{'id':_0x4fcf86[_0x3a6637]}})[_0x7b7e('0x23')](function(_0x388a8b){_0x54f391[_0x7b7e('0x45')](_0x388a8b['getVoiceQueues']()['then'](function(_0x1c06b7){for(var _0x5c435f=0x0;_0x5c435f<_0x1c06b7[_0x7b7e('0x44')];_0x5c435f++){_0x1c06b7[_0x5c435f][_0x7b7e('0x112')]('channel',_0x7b7e('0x113'));}return _0x1c06b7;}));_0x54f391['push'](_0x388a8b[_0x7b7e('0x114')]()['then'](function(_0x571140){for(var _0x5b1d99=0x0;_0x5b1d99<_0x571140[_0x7b7e('0x44')];_0x5b1d99++){_0x571140[_0x5b1d99]['setDataValue'](_0x7b7e('0x98'),'Chat');}return _0x571140;}));_0x54f391[_0x7b7e('0x45')](_0x388a8b[_0x7b7e('0x116')]()[_0x7b7e('0x23')](function(_0x2bcc1a){for(var _0x4ba63f=0x0;_0x4ba63f<_0x2bcc1a[_0x7b7e('0x44')];_0x4ba63f++){_0x2bcc1a[_0x4ba63f]['setDataValue']('channel',_0x7b7e('0x122'));}return _0x2bcc1a;}));_0x54f391[_0x7b7e('0x45')](_0x388a8b[_0x7b7e('0x117')]()[_0x7b7e('0x23')](function(_0xd7a5b2){for(var _0x29b42b=0x0;_0x29b42b<_0xd7a5b2['length'];_0x29b42b++){_0xd7a5b2[_0x29b42b][_0x7b7e('0x112')]('channel','Sms');}return _0xd7a5b2;}));_0x54f391[_0x7b7e('0x45')](_0x388a8b[_0x7b7e('0x119')]()[_0x7b7e('0x23')](function(_0x34db6d){for(var _0x29f6ee=0x0;_0x29f6ee<_0x34db6d['length'];_0x29f6ee++){_0x34db6d[_0x29f6ee][_0x7b7e('0x112')]('channel',_0x7b7e('0x11a'));}return _0x34db6d;}));_0x54f391[_0x7b7e('0x45')](_0x388a8b[_0x7b7e('0x11b')]()[_0x7b7e('0x23')](function(_0x58f7f2){for(var _0x4422ce=0x0;_0x4422ce<_0x58f7f2[_0x7b7e('0x44')];_0x4422ce++){_0x58f7f2[_0x4422ce]['setDataValue'](_0x7b7e('0x98'),_0x7b7e('0x123'));}return _0x58f7f2;}));_0x54f391[_0x7b7e('0x45')](_0x388a8b[_0x7b7e('0x11c')]()[_0x7b7e('0x23')](function(_0x467e68){for(var _0x313c2c=0x0;_0x313c2c<_0x467e68[_0x7b7e('0x44')];_0x313c2c++){_0x467e68[_0x313c2c]['setDataValue'](_0x7b7e('0x98'),'Openchannel');}return _0x467e68;}));return BPromise[_0x7b7e('0x49')](_0x54f391);})[_0x7b7e('0x23')](function(_0x1b39ac){var _0x254ffc=_[_0x7b7e('0x11e')](_0x1b39ac);_0x54f391=[];return db[_0x7b7e('0x62')]['transaction'](function(_0x434023){for(var _0x56554c=0x0;_0x56554c<_0x254ffc[_0x7b7e('0x44')];_0x56554c++){_0x54f391['push'](_0x254ffc[_0x56554c][_0x7b7e('0x124')](_0x577378['id']),{'transaction':_0x434023});}return BPromise[_0x7b7e('0x49')](_0x54f391)['then'](function(){if(_0x577378[_0x7b7e('0xa5')]){return BPromise[_0x7b7e('0x82')](_['filter'](_0x254ffc,function(_0x2e2d1b){return _0x2e2d1b[_0x7b7e('0x120')](_0x7b7e('0x98'))===_0x7b7e('0x113');}),function(_0x2391f9){return db[_0x7b7e('0xa8')][_0x7b7e('0x33')]({'where':{'VoiceQueueId':_0x2391f9['id'],'UserId':_0x577378['id']},'transaction':_0x434023});});}else{return;}})[_0x7b7e('0x23')](function(){for(var _0x50897d=0x0;_0x50897d<_0x254ffc[_0x7b7e('0x44')];_0x50897d++){var _0x2cd5d4=_0x254ffc[_0x50897d][_0x7b7e('0x120')]('channel');var _0x57515b=_0x2cd5d4+'QueueId';socket[_0x7b7e('0xa2')](_0x7b7e('0x77')+_0x2cd5d4+_0x7b7e('0xac'),{'UserId':_0x577378['id'],['queueField']:_0x254ffc[_0x50897d]['id']});}});});});}});}})[_0x7b7e('0x23')](respondWithStatusCode(_0x341e15,null))['catch'](handleError(_0x341e15,null));};exports[_0x7b7e('0x125')]=function(_0x22f1a9,_0x276d24){var _0x287889={};var _0x130485={};var _0x9bcc19;var _0x37163d;return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x22f1a9[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x276d24,null))['then'](function(_0x4dab8e){if(_0x4dab8e){_0x9bcc19=_0x4dab8e;_0x130485[_0x7b7e('0x50')]=_[_0x7b7e('0x4d')](db[_0x7b7e('0xca')][_0x7b7e('0x38')]);_0x130485[_0x7b7e('0x3e')]=_[_0x7b7e('0x4d')](_0x22f1a9[_0x7b7e('0x3e')]);_0x130485[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x130485[_0x7b7e('0x50')],_0x130485[_0x7b7e('0x3e')]);_0x287889[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0x130485[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x22f1a9[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x287889[_0x7b7e('0x41')]=_0x287889[_0x7b7e('0x41')]['length']?_0x287889[_0x7b7e('0x41')]:_0x130485[_0x7b7e('0x50')];_0x287889[_0x7b7e('0xc6')]=qs[_0x7b7e('0xc7')](_0x22f1a9['query']['sort']);_0x287889[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_[_0x7b7e('0xc8')](_0x22f1a9['query'],_0x130485[_0x7b7e('0x4e')]));if(_0x22f1a9[_0x7b7e('0x3e')][_0x7b7e('0x2c')]){_0x287889['where']=_[_0x7b7e('0x52')](_0x287889[_0x7b7e('0x3d')],{'$or':_[_0x7b7e('0x85')](_0x287889['attributes'],function(_0x22856f){var _0x2087ac={};_0x2087ac[_0x22856f]={'$like':'%'+_0x22f1a9[_0x7b7e('0x3e')][_0x7b7e('0x2c')]+'%'};return _0x2087ac;})});}_0x287889=_[_0x7b7e('0x52')]({},_0x287889,_0x22f1a9[_0x7b7e('0x53')]);return _0x9bcc19[_0x7b7e('0x125')](_0x287889);}})['then'](function(_0x354a8d){if(_0x354a8d){_0x37163d=_0x354a8d[_0x7b7e('0x44')];if(!_0x22f1a9[_0x7b7e('0x3e')]['hasOwnProperty']('nolimit')){_0x287889[_0x7b7e('0x21')]=qs[_0x7b7e('0x21')](_0x22f1a9['query'][_0x7b7e('0x21')]);_0x287889['offset']=qs[_0x7b7e('0x1e')](_0x22f1a9[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}return _0x9bcc19['getLists'](_0x287889);}})[_0x7b7e('0x23')](function(_0x2c2734){if(_0x2c2734){return _0x2c2734?{'count':_0x37163d,'rows':_0x2c2734}:null;}})['then'](respondWithResult(_0x276d24,null))[_0x7b7e('0x19')](handleError(_0x276d24,null));};exports[_0x7b7e('0x126')]=function(_0x3c06f6,_0x79e8cc){var _0x1668b5={};var _0x4af735={};var _0x43d70b;var _0x1a941b;return db['User'][_0x7b7e('0x8f')]({'where':{'id':_0x3c06f6[_0x7b7e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x79e8cc,null))[_0x7b7e('0x23')](function(_0x33dd41){if(_0x33dd41){_0x43d70b=_0x33dd41;_0x4af735[_0x7b7e('0x50')]=_[_0x7b7e('0x4d')](db[_0x7b7e('0x37')][_0x7b7e('0x38')]);_0x4af735[_0x7b7e('0x3e')]=_[_0x7b7e('0x4d')](_0x3c06f6['query']);_0x4af735[_0x7b7e('0x4e')]=_['intersection'](_0x4af735[_0x7b7e('0x50')],_0x4af735['query']);_0x1668b5[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0x4af735[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x3c06f6['query']['fields']));_0x1668b5['attributes']=_0x1668b5[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x1668b5[_0x7b7e('0x41')]:_0x4af735[_0x7b7e('0x50')];_0x1668b5[_0x7b7e('0xc6')]=qs['sort'](_0x3c06f6[_0x7b7e('0x3e')][_0x7b7e('0xc7')]);_0x1668b5[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_['pick'](_0x3c06f6[_0x7b7e('0x3e')],_0x4af735[_0x7b7e('0x4e')]));if(_0x3c06f6[_0x7b7e('0x3e')][_0x7b7e('0x2c')]){_0x1668b5['where']=_['merge'](_0x1668b5[_0x7b7e('0x3d')],{'$or':_[_0x7b7e('0x85')](_0x1668b5['attributes'],function(_0xd18706){var _0x4a3e4c={};_0x4a3e4c[_0xd18706]={'$like':'%'+_0x3c06f6[_0x7b7e('0x3e')]['filter']+'%'};return _0x4a3e4c;})});}_0x1668b5['model']=db[_0x7b7e('0x37')];_0x1668b5['as']=_0x7b7e('0x28');_0x1668b5=_[_0x7b7e('0x52')]({},_0x1668b5,_0x3c06f6[_0x7b7e('0x53')]);return _0x43d70b[_0x7b7e('0x111')]({'include':[_0x1668b5]});}})[_0x7b7e('0x23')](function(_0x10738c){if(_0x10738c){var _0x4472c0={},_0x35c490=[],_0x5bb57e=0x0;for(var _0x29c266=0x0;_0x29c266<_0x10738c['length'];_0x29c266+=0x1){for(var _0xf923ff=0x0,_0x179e64;_0xf923ff<_0x10738c[_0x29c266][_0x7b7e('0x28')][_0x7b7e('0x44')];_0xf923ff+=0x1){_0x179e64=_0x10738c[_0x29c266][_0x7b7e('0x28')][_0xf923ff][_0x7b7e('0x24')]({'plain':!![]});_0x4472c0[_0x179e64['id']]=_0x179e64;}}_0x4472c0=_[_0x7b7e('0x127')](_0x4472c0);for(var _0x4a3b6c=qs[_0x7b7e('0x1e')](_0x3c06f6['query'][_0x7b7e('0x1e')]);_0x4a3b6c<_0x4472c0[_0x7b7e('0x44')]&&_0x35c490[_0x7b7e('0x44')]<qs[_0x7b7e('0x21')](_0x3c06f6[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x4a3b6c+=0x1){if(_0x4472c0[_0x4a3b6c]){_0x35c490['push'](_0x4472c0[_0x4a3b6c]);}}return{'count':_0x4472c0[_0x7b7e('0x44')],'rows':_0x35c490};}})[_0x7b7e('0x23')](respondWithResult(_0x79e8cc,null))['catch'](handleError(_0x79e8cc,null));};exports[_0x7b7e('0x33')]=function(_0x4ff545,_0x265070){if(_0x4ff545['user']['id']==_0x4ff545[_0x7b7e('0x4b')]['id']){return _0x265070[_0x7b7e('0x1b')](0x1f4)[_0x7b7e('0x35')]({'message':_0x7b7e('0x128')});}return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x4ff545[_0x7b7e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x265070,null))[_0x7b7e('0x23')](removeEntity(_0x265070,null))[_0x7b7e('0x19')](handleError(_0x265070,null));};exports[_0x7b7e('0x129')]=function(_0x5646c4,_0x3ab706){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x5646c4[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x3ab706,null))[_0x7b7e('0x23')](function(_0x489e00){if(_0x489e00){return _0x489e00[_0x7b7e('0x129')](_0x5646c4[_0x7b7e('0x58')][_0x7b7e('0x5c')],_['omit'](_0x5646c4[_0x7b7e('0x58')],['ids','id'])||{})[_0x7b7e('0x12a')](function(){for(var _0x67a678=0x0;_0x67a678<_0x5646c4[_0x7b7e('0x58')][_0x7b7e('0x5c')][_0x7b7e('0x44')];_0x67a678+=0x1){socket[_0x7b7e('0xa2')](_0x7b7e('0x12b'),{'ChatInteractionId':Number(_0x5646c4[_0x7b7e('0x58')]['ids'][_0x67a678]),'UserId':Number(_0x5646c4[_0x7b7e('0x4b')]['id'])});}return _0x5646c4['body'][_0x7b7e('0x5c')];});}})[_0x7b7e('0x23')](respondWithResult(_0x3ab706,null))[_0x7b7e('0x19')](handleError(_0x3ab706,null));};exports[_0x7b7e('0x12c')]=function(_0x54c9c9,_0x146ca1){return db['User']['find']({'where':{'id':_0x54c9c9[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x146ca1,null))[_0x7b7e('0x23')](function(_0xf37cd9){if(_0xf37cd9){return _0xf37cd9['removeChatInteractions'](_0x54c9c9[_0x7b7e('0x3e')]['ids'])[_0x7b7e('0x23')](function(){if(_[_0x7b7e('0x12d')](_0x54c9c9[_0x7b7e('0x3e')][_0x7b7e('0x5c')])){for(var _0x333502=0x0;_0x333502<_0x54c9c9[_0x7b7e('0x3e')][_0x7b7e('0x5c')][_0x7b7e('0x44')];_0x333502+=0x1){socket[_0x7b7e('0xa2')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x54c9c9['query'][_0x7b7e('0x5c')][_0x333502]),'UserId':Number(_0x54c9c9[_0x7b7e('0x4b')]['id'])});}}else{socket['emit']('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x54c9c9[_0x7b7e('0x3e')][_0x7b7e('0x5c')]),'UserId':Number(_0x54c9c9[_0x7b7e('0x4b')]['id'])});}});}})[_0x7b7e('0x23')](respondWithStatusCode(_0x146ca1,null))['catch'](handleError(_0x146ca1,null));};exports[_0x7b7e('0x12e')]=function(_0x2a7374,_0x17b000){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x2a7374[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x17b000,null))[_0x7b7e('0x23')](function(_0x143bcc){if(_0x143bcc){return _0x143bcc['addMailInteractions'](_0x2a7374['body']['ids'],_['omit'](_0x2a7374[_0x7b7e('0x58')],['ids','id'])||{})[_0x7b7e('0x12a')](function(){for(var _0x2a694c=0x0;_0x2a694c<_0x2a7374[_0x7b7e('0x58')][_0x7b7e('0x5c')]['length'];_0x2a694c+=0x1){socket[_0x7b7e('0xa2')](_0x7b7e('0x12f'),{'MailInteractionId':Number(_0x2a7374[_0x7b7e('0x58')][_0x7b7e('0x5c')][_0x2a694c]),'UserId':Number(_0x2a7374[_0x7b7e('0x4b')]['id'])});}return _0x2a7374['body'][_0x7b7e('0x5c')];});}})[_0x7b7e('0x23')](respondWithResult(_0x17b000,null))['catch'](handleError(_0x17b000,null));};exports[_0x7b7e('0x130')]=function(_0x1e6e5c,_0x515713){return db[_0x7b7e('0x37')]['find']({'where':{'id':_0x1e6e5c['params']['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x515713,null))[_0x7b7e('0x23')](function(_0x2ae70d){if(_0x2ae70d){return _0x2ae70d[_0x7b7e('0x130')](_0x1e6e5c['query'][_0x7b7e('0x5c')])[_0x7b7e('0x23')](function(){if(_[_0x7b7e('0x12d')](_0x1e6e5c['query'][_0x7b7e('0x5c')])){for(var _0x43f833=0x0;_0x43f833<_0x1e6e5c['query']['ids'][_0x7b7e('0x44')];_0x43f833+=0x1){socket[_0x7b7e('0xa2')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x1e6e5c[_0x7b7e('0x3e')][_0x7b7e('0x5c')][_0x43f833]),'UserId':Number(_0x1e6e5c['params']['id'])});}}else{socket[_0x7b7e('0xa2')](_0x7b7e('0x131'),{'MailInteractionId':Number(_0x1e6e5c['query']['ids']),'UserId':Number(_0x1e6e5c[_0x7b7e('0x4b')]['id'])});}});}})[_0x7b7e('0x23')](respondWithStatusCode(_0x515713,null))[_0x7b7e('0x19')](handleError(_0x515713,null));};exports[_0x7b7e('0x132')]=function(_0x560aac,_0x36c549){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x560aac[_0x7b7e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x36c549,null))[_0x7b7e('0x23')](function(_0xa8352a){if(_0xa8352a){return _0xa8352a[_0x7b7e('0x132')](_0x560aac[_0x7b7e('0x58')][_0x7b7e('0x5c')],_[_0x7b7e('0x5b')](_0x560aac[_0x7b7e('0x58')],[_0x7b7e('0x5c'),'id'])||{})[_0x7b7e('0x12a')](function(){for(var _0x2e6771=0x0;_0x2e6771<_0x560aac['body']['ids'][_0x7b7e('0x44')];_0x2e6771+=0x1){socket[_0x7b7e('0xa2')](_0x7b7e('0x133'),{'FaxInteractionId':Number(_0x560aac[_0x7b7e('0x58')][_0x7b7e('0x5c')][_0x2e6771]),'UserId':Number(_0x560aac[_0x7b7e('0x4b')]['id'])});}return _0x560aac[_0x7b7e('0x58')][_0x7b7e('0x5c')];});}})['then'](respondWithResult(_0x36c549,null))['catch'](handleError(_0x36c549,null));};exports[_0x7b7e('0x134')]=function(_0x38cf27,_0x4b3f30){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x38cf27[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x4b3f30,null))[_0x7b7e('0x23')](function(_0x5f19d1){if(_0x5f19d1){return _0x5f19d1['removeFaxInteractions'](_0x38cf27[_0x7b7e('0x3e')][_0x7b7e('0x5c')])[_0x7b7e('0x23')](function(){if(_[_0x7b7e('0x12d')](_0x38cf27[_0x7b7e('0x3e')][_0x7b7e('0x5c')])){for(var _0xd567b6=0x0;_0xd567b6<_0x38cf27[_0x7b7e('0x3e')][_0x7b7e('0x5c')][_0x7b7e('0x44')];_0xd567b6+=0x1){socket['emit'](_0x7b7e('0x135'),{'FaxInteractionId':Number(_0x38cf27[_0x7b7e('0x3e')][_0x7b7e('0x5c')][_0xd567b6]),'UserId':Number(_0x38cf27[_0x7b7e('0x4b')]['id'])});}}else{socket[_0x7b7e('0xa2')](_0x7b7e('0x135'),{'FaxInteractionId':Number(_0x38cf27['query'][_0x7b7e('0x5c')]),'UserId':Number(_0x38cf27['params']['id'])});}});}})[_0x7b7e('0x23')](respondWithStatusCode(_0x4b3f30,null))[_0x7b7e('0x19')](handleError(_0x4b3f30,null));};exports[_0x7b7e('0x136')]=function(_0x4628db,_0x597f30){return db['User'][_0x7b7e('0x30')]({'where':{'id':_0x4628db['params']['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x597f30,null))['then'](function(_0x1ef594){if(_0x1ef594){return _0x1ef594[_0x7b7e('0x136')](_0x4628db[_0x7b7e('0x58')][_0x7b7e('0x5c')],_[_0x7b7e('0x5b')](_0x4628db[_0x7b7e('0x58')],[_0x7b7e('0x5c'),'id'])||{})[_0x7b7e('0x12a')](function(){for(var _0x318cb2=0x0;_0x318cb2<_0x4628db[_0x7b7e('0x58')]['ids']['length'];_0x318cb2+=0x1){socket['emit'](_0x7b7e('0x137'),{'SmsInteractionId':Number(_0x4628db['body'][_0x7b7e('0x5c')][_0x318cb2]),'UserId':Number(_0x4628db[_0x7b7e('0x4b')]['id'])});}return _0x4628db['body'][_0x7b7e('0x5c')];});}})[_0x7b7e('0x23')](respondWithResult(_0x597f30,null))[_0x7b7e('0x19')](handleError(_0x597f30,null));};exports[_0x7b7e('0x138')]=function(_0x30f439,_0x4a6447){return db['User'][_0x7b7e('0x30')]({'where':{'id':_0x30f439[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x4a6447,null))[_0x7b7e('0x23')](function(_0x7a40e0){if(_0x7a40e0){return _0x7a40e0[_0x7b7e('0x138')](_0x30f439[_0x7b7e('0x3e')][_0x7b7e('0x5c')])[_0x7b7e('0x23')](function(){if(_[_0x7b7e('0x12d')](_0x30f439['query'][_0x7b7e('0x5c')])){for(var _0x217e8c=0x0;_0x217e8c<_0x30f439[_0x7b7e('0x3e')][_0x7b7e('0x5c')]['length'];_0x217e8c+=0x1){socket[_0x7b7e('0xa2')](_0x7b7e('0x139'),{'SmsInteractionId':Number(_0x30f439[_0x7b7e('0x3e')]['ids'][_0x217e8c]),'UserId':Number(_0x30f439['params']['id'])});}}else{socket[_0x7b7e('0xa2')](_0x7b7e('0x139'),{'SmsInteractionId':Number(_0x30f439['query'][_0x7b7e('0x5c')]),'UserId':Number(_0x30f439[_0x7b7e('0x4b')]['id'])});}});}})['then'](respondWithStatusCode(_0x4a6447,null))[_0x7b7e('0x19')](handleError(_0x4a6447,null));};exports['addOpenchannelInteractions']=function(_0x1a8e51,_0x3b5567){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x1a8e51[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x3b5567,null))[_0x7b7e('0x23')](function(_0x3bb5d5){if(_0x3bb5d5){return _0x3bb5d5[_0x7b7e('0x13a')](_0x1a8e51[_0x7b7e('0x58')][_0x7b7e('0x5c')],_[_0x7b7e('0x5b')](_0x1a8e51['body'],['ids','id'])||{})[_0x7b7e('0x12a')](function(){for(var _0x437598=0x0;_0x437598<_0x1a8e51[_0x7b7e('0x58')]['ids'][_0x7b7e('0x44')];_0x437598+=0x1){socket[_0x7b7e('0xa2')]('user_has_openchannel_interactions:save',{'OpenchannelInteractionId':Number(_0x1a8e51[_0x7b7e('0x58')][_0x7b7e('0x5c')][_0x437598]),'UserId':Number(_0x1a8e51[_0x7b7e('0x4b')]['id'])});}return _0x1a8e51[_0x7b7e('0x58')][_0x7b7e('0x5c')];});}})[_0x7b7e('0x23')](respondWithResult(_0x3b5567,null))['catch'](handleError(_0x3b5567,null));};exports[_0x7b7e('0x13b')]=function(_0x440ba0,_0x596647){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x440ba0[_0x7b7e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x596647,null))[_0x7b7e('0x23')](function(_0x46d5ab){if(_0x46d5ab){return _0x46d5ab[_0x7b7e('0x13b')](_0x440ba0[_0x7b7e('0x3e')][_0x7b7e('0x5c')])['then'](function(){if(_[_0x7b7e('0x12d')](_0x440ba0[_0x7b7e('0x3e')][_0x7b7e('0x5c')])){for(var _0x2b375e=0x0;_0x2b375e<_0x440ba0[_0x7b7e('0x3e')]['ids'][_0x7b7e('0x44')];_0x2b375e+=0x1){socket[_0x7b7e('0xa2')](_0x7b7e('0x13c'),{'OpenchannelInteractionId':Number(_0x440ba0['query'][_0x7b7e('0x5c')][_0x2b375e]),'UserId':Number(_0x440ba0[_0x7b7e('0x4b')]['id'])});}}else{socket[_0x7b7e('0xa2')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x440ba0[_0x7b7e('0x3e')][_0x7b7e('0x5c')]),'UserId':Number(_0x440ba0[_0x7b7e('0x4b')]['id'])});}});}})[_0x7b7e('0x23')](respondWithStatusCode(_0x596647,null))['catch'](handleError(_0x596647,null));};exports[_0x7b7e('0x13d')]=function(_0x5ee32c,_0x27bb62){return db['User'][_0x7b7e('0x30')]({'where':{'id':_0x5ee32c[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x27bb62,null))[_0x7b7e('0x23')](function(_0x2e89c7){if(_0x2e89c7){return _0x2e89c7[_0x7b7e('0x13d')](_0x5ee32c['body'][_0x7b7e('0x5c')],_[_0x7b7e('0x5b')](_0x5ee32c[_0x7b7e('0x58')],[_0x7b7e('0x5c'),'id'])||{})[_0x7b7e('0x12a')](function(){for(var _0x3b5cfd=0x0;_0x3b5cfd<_0x5ee32c['body'][_0x7b7e('0x5c')][_0x7b7e('0x44')];_0x3b5cfd+=0x1){socket[_0x7b7e('0xa2')](_0x7b7e('0x13e'),{'WhatsappInteractionId':Number(_0x5ee32c['body'][_0x7b7e('0x5c')][_0x3b5cfd]),'UserId':Number(_0x5ee32c[_0x7b7e('0x4b')]['id'])});}return _0x5ee32c['body']['ids'];});}})[_0x7b7e('0x23')](respondWithResult(_0x27bb62,null))['catch'](handleError(_0x27bb62,null));};exports['removeWhatsappInteractions']=function(_0x384aff,_0x2bedcd){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x384aff[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x2bedcd,null))[_0x7b7e('0x23')](function(_0x4a6150){if(_0x4a6150){return _0x4a6150['removeWhatsappInteractions'](_0x384aff[_0x7b7e('0x3e')][_0x7b7e('0x5c')]);}})[_0x7b7e('0x23')](respondWithStatusCode(_0x2bedcd,null))['catch'](handleError(_0x2bedcd,null));};exports[_0x7b7e('0x13f')]=function(_0x252e2c,_0x395654){var _0x136e45={};var _0xadf92c={};var _0x3d688d;var _0x2cd715;return db[_0x7b7e('0x37')]['findOne']({'where':{'id':_0x252e2c['params']['id']}})['then'](handleEntityNotFound(_0x395654,null))[_0x7b7e('0x23')](function(_0x30ebf3){if(_0x30ebf3){_0x3d688d=_0x30ebf3;_0xadf92c[_0x7b7e('0x50')]=_[_0x7b7e('0x4d')](db[_0x7b7e('0x140')][_0x7b7e('0x38')]);_0xadf92c[_0x7b7e('0x3e')]=_['keys'](_0x252e2c[_0x7b7e('0x3e')]);_0xadf92c[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0xadf92c['model'],_0xadf92c['query']);_0x136e45['attributes']=_[_0x7b7e('0x4f')](_0xadf92c['model'],qs[_0x7b7e('0x51')](_0x252e2c[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x136e45[_0x7b7e('0x41')]=_0x136e45[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x136e45[_0x7b7e('0x41')]:_0xadf92c[_0x7b7e('0x50')];_0x136e45['order']=qs[_0x7b7e('0xc7')](_0x252e2c[_0x7b7e('0x3e')]['sort']);_0x136e45[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_['pick'](_0x252e2c['query'],_0xadf92c[_0x7b7e('0x4e')]));if(_0x252e2c[_0x7b7e('0x3e')][_0x7b7e('0x2c')]){_0x136e45[_0x7b7e('0x3d')]=_[_0x7b7e('0x52')](_0x136e45['where'],{'$or':_[_0x7b7e('0x85')](_0x136e45[_0x7b7e('0x41')],function(_0x2160c8){var _0x11d083={};_0x11d083[_0x2160c8]={'$like':'%'+_0x252e2c['query'][_0x7b7e('0x2c')]+'%'};return _0x11d083;})});}_0x136e45=_[_0x7b7e('0x52')]({},_0x136e45,_0x252e2c[_0x7b7e('0x53')]);return _0x3d688d[_0x7b7e('0x13f')](_0x136e45);}})[_0x7b7e('0x23')](function(_0x4501b4){if(_0x4501b4){_0x2cd715=_0x4501b4['length'];if(!_0x252e2c['query']['hasOwnProperty'](_0x7b7e('0xcd'))){_0x136e45['limit']=qs[_0x7b7e('0x21')](_0x252e2c[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x136e45['offset']=qs[_0x7b7e('0x1e')](_0x252e2c[_0x7b7e('0x3e')]['offset']);}return _0x3d688d[_0x7b7e('0x13f')](_0x136e45);}})[_0x7b7e('0x23')](function(_0x40ed63){if(_0x40ed63){return _0x40ed63?{'count':_0x2cd715,'rows':_0x40ed63}:null;}})[_0x7b7e('0x23')](respondWithResult(_0x395654,null))[_0x7b7e('0x19')](handleError(_0x395654,null));};exports[_0x7b7e('0x141')]=function(_0x9824c4,_0x271be2){var _0x20e357={};var _0x2345f1={};var _0x45a2ca;var _0x53ec4c;return db[_0x7b7e('0x37')]['findOne']({'where':{'id':_0x9824c4[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x271be2,null))[_0x7b7e('0x23')](function(_0x281716){if(_0x281716){_0x45a2ca=_0x281716;_0x2345f1[_0x7b7e('0x50')]=_['keys'](db[_0x7b7e('0x142')][_0x7b7e('0x38')]);_0x2345f1[_0x7b7e('0x3e')]=_[_0x7b7e('0x4d')](_0x9824c4[_0x7b7e('0x3e')]);_0x2345f1['filters']=_[_0x7b7e('0x4f')](_0x2345f1[_0x7b7e('0x50')],_0x2345f1[_0x7b7e('0x3e')]);_0x20e357[_0x7b7e('0x41')]=_['intersection'](_0x2345f1['model'],qs[_0x7b7e('0x51')](_0x9824c4[_0x7b7e('0x3e')]['fields']));_0x20e357[_0x7b7e('0x41')]=_0x20e357[_0x7b7e('0x41')]['length']?_0x20e357[_0x7b7e('0x41')]:_0x2345f1[_0x7b7e('0x50')];_0x20e357[_0x7b7e('0xc6')]=qs['sort'](_0x9824c4['query'][_0x7b7e('0xc7')]);_0x20e357[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_['pick'](_0x9824c4[_0x7b7e('0x3e')],_0x2345f1[_0x7b7e('0x4e')]));if(_0x9824c4[_0x7b7e('0x3e')][_0x7b7e('0x2c')]){_0x20e357[_0x7b7e('0x3d')]=_[_0x7b7e('0x52')](_0x20e357['where'],{'$or':_[_0x7b7e('0x85')](_0x20e357[_0x7b7e('0x41')],function(_0x11b24b){var _0x177884={};_0x177884[_0x11b24b]={'$like':'%'+_0x9824c4[_0x7b7e('0x3e')][_0x7b7e('0x2c')]+'%'};return _0x177884;})});}_0x20e357=_[_0x7b7e('0x52')]({},_0x20e357,_0x9824c4[_0x7b7e('0x53')]);return _0x45a2ca['getFaxAccounts'](_0x20e357);}})[_0x7b7e('0x23')](function(_0x144bde){if(_0x144bde){_0x53ec4c=_0x144bde['length'];if(!_0x9824c4[_0x7b7e('0x3e')][_0x7b7e('0xc9')]('nolimit')){_0x20e357[_0x7b7e('0x21')]=qs[_0x7b7e('0x21')](_0x9824c4[_0x7b7e('0x3e')]['limit']);_0x20e357[_0x7b7e('0x1e')]=qs['offset'](_0x9824c4[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}return _0x45a2ca[_0x7b7e('0x141')](_0x20e357);}})[_0x7b7e('0x23')](function(_0x33af87){if(_0x33af87){return _0x33af87?{'count':_0x53ec4c,'rows':_0x33af87}:null;}})[_0x7b7e('0x23')](respondWithResult(_0x271be2,null))[_0x7b7e('0x19')](handleError(_0x271be2,null));};exports['addFaxAccounts']=function(_0x30ca66,_0x57676e){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x30ca66[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x57676e,null))[_0x7b7e('0x23')](function(_0x5587a0){if(_0x5587a0){return _0x5587a0[_0x7b7e('0x143')](_0x30ca66[_0x7b7e('0x58')][_0x7b7e('0x5c')],_[_0x7b7e('0x5b')](_0x30ca66['body'],[_0x7b7e('0x5c'),'id'])||{});}})[_0x7b7e('0x23')](respondWithResult(_0x57676e,null))[_0x7b7e('0x19')](handleError(_0x57676e,null));};exports[_0x7b7e('0x144')]=function(_0x475302,_0x2aba92){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x475302[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x2aba92,null))[_0x7b7e('0x23')](function(_0x411d2f){if(_0x411d2f){return _0x411d2f['removeFaxAccounts'](_0x475302[_0x7b7e('0x3e')]['ids']);}})[_0x7b7e('0x23')](respondWithStatusCode(_0x2aba92,null))[_0x7b7e('0x19')](handleError(_0x2aba92,null));};exports[_0x7b7e('0x145')]=function(_0x522ac5,_0x27f850){var _0x4cef91={};var _0x55a0c2={};var _0x47059c;var _0x5de998;return db[_0x7b7e('0x37')]['findOne']({'where':{'id':_0x522ac5[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x27f850,null))[_0x7b7e('0x23')](function(_0x3fe160){if(_0x3fe160){_0x47059c=_0x3fe160;_0x55a0c2[_0x7b7e('0x50')]=_[_0x7b7e('0x4d')](db[_0x7b7e('0x146')][_0x7b7e('0x38')]);_0x55a0c2['query']=_[_0x7b7e('0x4d')](_0x522ac5['query']);_0x55a0c2[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x55a0c2['model'],_0x55a0c2['query']);_0x4cef91[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0x55a0c2[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x522ac5[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x4cef91[_0x7b7e('0x41')]=_0x4cef91[_0x7b7e('0x41')]['length']?_0x4cef91[_0x7b7e('0x41')]:_0x55a0c2[_0x7b7e('0x50')];_0x4cef91[_0x7b7e('0xc6')]=qs[_0x7b7e('0xc7')](_0x522ac5['query'][_0x7b7e('0xc7')]);_0x4cef91[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_[_0x7b7e('0xc8')](_0x522ac5['query'],_0x55a0c2['filters']));if(_0x522ac5['query'][_0x7b7e('0x2c')]){_0x4cef91[_0x7b7e('0x3d')]=_[_0x7b7e('0x52')](_0x4cef91[_0x7b7e('0x3d')],{'$or':_[_0x7b7e('0x85')](_0x4cef91['attributes'],function(_0x4a39fd){var _0x547761={};_0x547761[_0x4a39fd]={'$like':'%'+_0x522ac5[_0x7b7e('0x3e')][_0x7b7e('0x2c')]+'%'};return _0x547761;})});}_0x4cef91=_[_0x7b7e('0x52')]({},_0x4cef91,_0x522ac5['options']);return _0x47059c[_0x7b7e('0x145')](_0x4cef91);}})['then'](function(_0x457808){if(_0x457808){_0x5de998=_0x457808['length'];if(!_0x522ac5[_0x7b7e('0x3e')][_0x7b7e('0xc9')](_0x7b7e('0xcd'))){_0x4cef91['limit']=qs[_0x7b7e('0x21')](_0x522ac5['query'][_0x7b7e('0x21')]);_0x4cef91[_0x7b7e('0x1e')]=qs[_0x7b7e('0x1e')](_0x522ac5[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}return _0x47059c[_0x7b7e('0x145')](_0x4cef91);}})['then'](function(_0x2ee799){if(_0x2ee799){return _0x2ee799?{'count':_0x5de998,'rows':_0x2ee799}:null;}})['then'](respondWithResult(_0x27f850,null))['catch'](handleError(_0x27f850,null));};exports[_0x7b7e('0x147')]=function(_0x53b2f,_0x4f03f4){return db['User'][_0x7b7e('0x30')]({'where':{'id':_0x53b2f[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x4f03f4,null))['then'](function(_0x240eeb){if(_0x240eeb){return _0x240eeb[_0x7b7e('0x147')](_0x53b2f[_0x7b7e('0x58')][_0x7b7e('0x5c')],_['omit'](_0x53b2f[_0x7b7e('0x58')],[_0x7b7e('0x5c'),'id'])||{});}})[_0x7b7e('0x23')](respondWithResult(_0x4f03f4,null))[_0x7b7e('0x19')](handleError(_0x4f03f4,null));};exports[_0x7b7e('0x148')]=function(_0x281f28,_0xc0ab37){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x281f28[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0xc0ab37,null))[_0x7b7e('0x23')](function(_0x4de23a){if(_0x4de23a){return _0x4de23a['removeMailAccounts'](_0x281f28[_0x7b7e('0x3e')][_0x7b7e('0x5c')]);}})[_0x7b7e('0x23')](respondWithStatusCode(_0xc0ab37,null))[_0x7b7e('0x19')](handleError(_0xc0ab37,null));};exports[_0x7b7e('0x149')]=function(_0x531e56,_0x11b6f2){var _0x4992cd={};var _0x9729d={};var _0x555079;var _0x57c48b;return db['User'][_0x7b7e('0x8f')]({'where':{'id':_0x531e56[_0x7b7e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x11b6f2,null))[_0x7b7e('0x23')](function(_0x2f71bb){if(_0x2f71bb){_0x555079=_0x2f71bb;_0x9729d[_0x7b7e('0x50')]=_['keys'](db[_0x7b7e('0x14a')][_0x7b7e('0x38')]);_0x9729d['query']=_['keys'](_0x531e56['query']);_0x9729d[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x9729d[_0x7b7e('0x50')],_0x9729d[_0x7b7e('0x3e')]);_0x4992cd['attributes']=_[_0x7b7e('0x4f')](_0x9729d[_0x7b7e('0x50')],qs['fields'](_0x531e56['query'][_0x7b7e('0x51')]));_0x4992cd[_0x7b7e('0x41')]=_0x4992cd[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x4992cd[_0x7b7e('0x41')]:_0x9729d['model'];_0x4992cd[_0x7b7e('0xc6')]=qs[_0x7b7e('0xc7')](_0x531e56[_0x7b7e('0x3e')][_0x7b7e('0xc7')]);_0x4992cd[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_[_0x7b7e('0xc8')](_0x531e56['query'],_0x9729d[_0x7b7e('0x4e')]));if(_0x531e56[_0x7b7e('0x3e')]['filter']){_0x4992cd[_0x7b7e('0x3d')]=_['merge'](_0x4992cd['where'],{'$or':_[_0x7b7e('0x85')](_0x4992cd[_0x7b7e('0x41')],function(_0x40af54){var _0x51887d={};_0x51887d[_0x40af54]={'$like':'%'+_0x531e56['query'][_0x7b7e('0x2c')]+'%'};return _0x51887d;})});}_0x4992cd=_['merge']({},_0x4992cd,_0x531e56[_0x7b7e('0x53')]);return _0x555079[_0x7b7e('0x149')](_0x4992cd);}})[_0x7b7e('0x23')](function(_0x5b1722){if(_0x5b1722){_0x57c48b=_0x5b1722[_0x7b7e('0x44')];if(!_0x531e56[_0x7b7e('0x3e')]['hasOwnProperty'](_0x7b7e('0xcd'))){_0x4992cd[_0x7b7e('0x21')]=qs[_0x7b7e('0x21')](_0x531e56[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x4992cd[_0x7b7e('0x1e')]=qs[_0x7b7e('0x1e')](_0x531e56['query'][_0x7b7e('0x1e')]);}return _0x555079['getOpenchannelAccounts'](_0x4992cd);}})[_0x7b7e('0x23')](function(_0x6d93ba){if(_0x6d93ba){return _0x6d93ba?{'count':_0x57c48b,'rows':_0x6d93ba}:null;}})[_0x7b7e('0x23')](respondWithResult(_0x11b6f2,null))[_0x7b7e('0x19')](handleError(_0x11b6f2,null));};exports[_0x7b7e('0x14b')]=function(_0x1562b3,_0x1975c1){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x1562b3['params']['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x1975c1,null))[_0x7b7e('0x23')](function(_0x26c396){if(_0x26c396){return _0x26c396[_0x7b7e('0x14b')](_0x1562b3[_0x7b7e('0x58')][_0x7b7e('0x5c')],_[_0x7b7e('0x5b')](_0x1562b3[_0x7b7e('0x58')],['ids','id'])||{});}})[_0x7b7e('0x23')](respondWithResult(_0x1975c1,null))[_0x7b7e('0x19')](handleError(_0x1975c1,null));};exports[_0x7b7e('0x14c')]=function(_0x326f75,_0x1bffe9){return db[_0x7b7e('0x37')]['find']({'where':{'id':_0x326f75['params']['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x1bffe9,null))[_0x7b7e('0x23')](function(_0x29f31a){if(_0x29f31a){return _0x29f31a['removeOpenchannelAccounts'](_0x326f75['query'][_0x7b7e('0x5c')]);}})[_0x7b7e('0x23')](respondWithStatusCode(_0x1bffe9,null))[_0x7b7e('0x19')](handleError(_0x1bffe9,null));};exports[_0x7b7e('0x14d')]=function(_0x18c063,_0x4ab1e8){var _0x435464={};var _0x2eb989={};var _0x375b3f;var _0x3b383d;return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x18c063['params']['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x4ab1e8,null))[_0x7b7e('0x23')](function(_0x4475be){if(_0x4475be){_0x375b3f=_0x4475be;_0x2eb989[_0x7b7e('0x50')]=_['keys'](db[_0x7b7e('0x14e')][_0x7b7e('0x38')]);_0x2eb989[_0x7b7e('0x3e')]=_[_0x7b7e('0x4d')](_0x18c063[_0x7b7e('0x3e')]);_0x2eb989[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x2eb989[_0x7b7e('0x50')],_0x2eb989[_0x7b7e('0x3e')]);_0x435464[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0x2eb989[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x18c063[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x435464[_0x7b7e('0x41')]=_0x435464[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x435464[_0x7b7e('0x41')]:_0x2eb989['model'];_0x435464[_0x7b7e('0xc6')]=qs['sort'](_0x18c063[_0x7b7e('0x3e')][_0x7b7e('0xc7')]);_0x435464[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_[_0x7b7e('0xc8')](_0x18c063[_0x7b7e('0x3e')],_0x2eb989[_0x7b7e('0x4e')]));if(_0x18c063[_0x7b7e('0x3e')][_0x7b7e('0x2c')]){_0x435464['where']=_[_0x7b7e('0x52')](_0x435464[_0x7b7e('0x3d')],{'$or':_[_0x7b7e('0x85')](_0x435464['attributes'],function(_0x1dec85){var _0x4db986={};_0x4db986[_0x1dec85]={'$like':'%'+_0x18c063['query']['filter']+'%'};return _0x4db986;})});}_0x435464=_['merge']({},_0x435464,_0x18c063[_0x7b7e('0x53')]);return _0x375b3f['getSmsAccounts'](_0x435464);}})[_0x7b7e('0x23')](function(_0x194d65){if(_0x194d65){_0x3b383d=_0x194d65['length'];if(!_0x18c063[_0x7b7e('0x3e')][_0x7b7e('0xc9')]('nolimit')){_0x435464[_0x7b7e('0x21')]=qs[_0x7b7e('0x21')](_0x18c063[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x435464[_0x7b7e('0x1e')]=qs[_0x7b7e('0x1e')](_0x18c063[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}return _0x375b3f[_0x7b7e('0x14d')](_0x435464);}})[_0x7b7e('0x23')](function(_0x2231a5){if(_0x2231a5){return _0x2231a5?{'count':_0x3b383d,'rows':_0x2231a5}:null;}})[_0x7b7e('0x23')](respondWithResult(_0x4ab1e8,null))[_0x7b7e('0x19')](handleError(_0x4ab1e8,null));};exports[_0x7b7e('0x14f')]=function(_0x483837,_0x2743be){return db['User'][_0x7b7e('0x30')]({'where':{'id':_0x483837[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x2743be,null))['then'](function(_0x58d1c0){if(_0x58d1c0){return _0x58d1c0[_0x7b7e('0x14f')](_0x483837[_0x7b7e('0x58')][_0x7b7e('0x5c')],_[_0x7b7e('0x5b')](_0x483837[_0x7b7e('0x58')],[_0x7b7e('0x5c'),'id'])||{});}})[_0x7b7e('0x23')](respondWithResult(_0x2743be,null))[_0x7b7e('0x19')](handleError(_0x2743be,null));};exports[_0x7b7e('0x150')]=function(_0x290244,_0x17d2ac){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x290244[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x17d2ac,null))['then'](function(_0x3251b6){if(_0x3251b6){return _0x3251b6['removeSmsAccounts'](_0x290244[_0x7b7e('0x3e')][_0x7b7e('0x5c')]);}})[_0x7b7e('0x23')](respondWithStatusCode(_0x17d2ac,null))[_0x7b7e('0x19')](handleError(_0x17d2ac,null));};exports['getChatWebsites']=function(_0x4681c3,_0x2c5fe7){var _0x2ed1ef={};var _0x21ba54={};var _0x4c10fb;var _0x409899;return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x4681c3['params']['id']}})['then'](handleEntityNotFound(_0x2c5fe7,null))[_0x7b7e('0x23')](function(_0x40dbab){if(_0x40dbab){_0x4c10fb=_0x40dbab;_0x21ba54['model']=_['keys'](db[_0x7b7e('0x151')][_0x7b7e('0x38')]);_0x21ba54[_0x7b7e('0x3e')]=_['keys'](_0x4681c3['query']);_0x21ba54[_0x7b7e('0x4e')]=_['intersection'](_0x21ba54['model'],_0x21ba54['query']);_0x2ed1ef['attributes']=_[_0x7b7e('0x4f')](_0x21ba54['model'],qs[_0x7b7e('0x51')](_0x4681c3['query']['fields']));_0x2ed1ef[_0x7b7e('0x41')]=_0x2ed1ef['attributes']['length']?_0x2ed1ef[_0x7b7e('0x41')]:_0x21ba54['model'];_0x2ed1ef[_0x7b7e('0xc6')]=qs['sort'](_0x4681c3[_0x7b7e('0x3e')]['sort']);_0x2ed1ef[_0x7b7e('0x3d')]=qs['filters'](_['pick'](_0x4681c3['query'],_0x21ba54['filters']));if(_0x4681c3[_0x7b7e('0x3e')]['filter']){_0x2ed1ef['where']=_['merge'](_0x2ed1ef[_0x7b7e('0x3d')],{'$or':_['map'](_0x2ed1ef[_0x7b7e('0x41')],function(_0x9ebd06){var _0x4b140b={};_0x4b140b[_0x9ebd06]={'$like':'%'+_0x4681c3[_0x7b7e('0x3e')]['filter']+'%'};return _0x4b140b;})});}_0x2ed1ef=_['merge']({},_0x2ed1ef,_0x4681c3[_0x7b7e('0x53')]);return _0x4c10fb['getChatWebsites'](_0x2ed1ef);}})['then'](function(_0x474d0f){if(_0x474d0f){_0x409899=_0x474d0f[_0x7b7e('0x44')];if(!_0x4681c3[_0x7b7e('0x3e')][_0x7b7e('0xc9')](_0x7b7e('0xcd'))){_0x2ed1ef[_0x7b7e('0x21')]=qs['limit'](_0x4681c3['query'][_0x7b7e('0x21')]);_0x2ed1ef[_0x7b7e('0x1e')]=qs[_0x7b7e('0x1e')](_0x4681c3['query']['offset']);}return _0x4c10fb[_0x7b7e('0x152')](_0x2ed1ef);}})[_0x7b7e('0x23')](function(_0x29df37){if(_0x29df37){return _0x29df37?{'count':_0x409899,'rows':_0x29df37}:null;}})[_0x7b7e('0x23')](respondWithResult(_0x2c5fe7,null))['catch'](handleError(_0x2c5fe7,null));};exports[_0x7b7e('0x153')]=function(_0x505162,_0x22e9ad){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x505162[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x22e9ad,null))['then'](function(_0x266b0b){if(_0x266b0b){return _0x266b0b[_0x7b7e('0x153')](_0x505162[_0x7b7e('0x58')]['ids'],_['omit'](_0x505162[_0x7b7e('0x58')],[_0x7b7e('0x5c'),'id'])||{});}})[_0x7b7e('0x23')](respondWithResult(_0x22e9ad,null))[_0x7b7e('0x19')](handleError(_0x22e9ad,null));};exports[_0x7b7e('0x154')]=function(_0x165001,_0x314394){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x165001[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x314394,null))[_0x7b7e('0x23')](function(_0x1cc8c5){if(_0x1cc8c5){return _0x1cc8c5['removeChatWebsites'](_0x165001['query'][_0x7b7e('0x5c')]);}})[_0x7b7e('0x23')](respondWithStatusCode(_0x314394,null))[_0x7b7e('0x19')](handleError(_0x314394,null));};exports['getWhatsappAccounts']=function(_0x1f794b,_0x2ed69b){var _0x2bef99={};var _0xff5047={};var _0xc3117c;var _0x3d4943;return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x1f794b[_0x7b7e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x2ed69b,null))['then'](function(_0x2f2c8c){if(_0x2f2c8c){_0xc3117c=_0x2f2c8c;_0xff5047['model']=_[_0x7b7e('0x4d')](db[_0x7b7e('0x155')][_0x7b7e('0x38')]);_0xff5047[_0x7b7e('0x3e')]=_[_0x7b7e('0x4d')](_0x1f794b[_0x7b7e('0x3e')]);_0xff5047[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0xff5047['model'],_0xff5047[_0x7b7e('0x3e')]);_0x2bef99[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0xff5047[_0x7b7e('0x50')],qs['fields'](_0x1f794b[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x2bef99[_0x7b7e('0x41')]=_0x2bef99[_0x7b7e('0x41')]['length']?_0x2bef99[_0x7b7e('0x41')]:_0xff5047['model'];_0x2bef99[_0x7b7e('0xc6')]=qs[_0x7b7e('0xc7')](_0x1f794b[_0x7b7e('0x3e')]['sort']);_0x2bef99[_0x7b7e('0x3d')]=qs['filters'](_['pick'](_0x1f794b[_0x7b7e('0x3e')],_0xff5047[_0x7b7e('0x4e')]));if(_0x1f794b['query'][_0x7b7e('0x2c')]){_0x2bef99['where']=_['merge'](_0x2bef99[_0x7b7e('0x3d')],{'$or':_[_0x7b7e('0x85')](_0x2bef99[_0x7b7e('0x41')],function(_0x2fbfac){var _0xc4e55a={};_0xc4e55a[_0x2fbfac]={'$like':'%'+_0x1f794b['query'][_0x7b7e('0x2c')]+'%'};return _0xc4e55a;})});}_0x2bef99=_[_0x7b7e('0x52')]({},_0x2bef99,_0x1f794b[_0x7b7e('0x53')]);return _0xc3117c[_0x7b7e('0x156')](_0x2bef99);}})[_0x7b7e('0x23')](function(_0x2d6a8c){if(_0x2d6a8c){_0x3d4943=_0x2d6a8c[_0x7b7e('0x44')];if(!_0x1f794b[_0x7b7e('0x3e')][_0x7b7e('0xc9')](_0x7b7e('0xcd'))){_0x2bef99[_0x7b7e('0x21')]=qs[_0x7b7e('0x21')](_0x1f794b[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x2bef99[_0x7b7e('0x1e')]=qs[_0x7b7e('0x1e')](_0x1f794b[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}return _0xc3117c['getWhatsappAccounts'](_0x2bef99);}})[_0x7b7e('0x23')](function(_0xb40ff1){if(_0xb40ff1){return _0xb40ff1?{'count':_0x3d4943,'rows':_0xb40ff1}:null;}})[_0x7b7e('0x23')](respondWithResult(_0x2ed69b,null))[_0x7b7e('0x19')](handleError(_0x2ed69b,null));};exports[_0x7b7e('0x157')]=function(_0x59cc92,_0x3c8d6d){return db['User'][_0x7b7e('0x30')]({'where':{'id':_0x59cc92[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x3c8d6d,null))['then'](function(_0x4f1a00){if(_0x4f1a00){return _0x4f1a00[_0x7b7e('0x157')](_0x59cc92[_0x7b7e('0x58')][_0x7b7e('0x5c')],_[_0x7b7e('0x5b')](_0x59cc92[_0x7b7e('0x58')],[_0x7b7e('0x5c'),'id'])||{});}})[_0x7b7e('0x23')](respondWithResult(_0x3c8d6d,null))[_0x7b7e('0x19')](handleError(_0x3c8d6d,null));};exports[_0x7b7e('0x158')]=function(_0x4858ef,_0x5131fe){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x4858ef[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x5131fe,null))[_0x7b7e('0x23')](function(_0x3d8f2d){if(_0x3d8f2d){return _0x3d8f2d[_0x7b7e('0x158')](_0x4858ef[_0x7b7e('0x3e')][_0x7b7e('0x5c')]);}})[_0x7b7e('0x23')](respondWithStatusCode(_0x5131fe,null))[_0x7b7e('0x19')](handleError(_0x5131fe,null));};exports[_0x7b7e('0x159')]=function(_0x585b5d,_0x1d50c4){var _0x26821e={};var _0x405ff0={};var _0x50f6f6;var _0x23f8a5;return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x585b5d['params']['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x1d50c4,null))['then'](function(_0x1ca8f9){if(_0x1ca8f9){_0x50f6f6=_0x1ca8f9;_0x405ff0[_0x7b7e('0x50')]=_[_0x7b7e('0x4d')](db[_0x7b7e('0x15a')][_0x7b7e('0x38')]);_0x405ff0['query']=_[_0x7b7e('0x4d')](_0x585b5d[_0x7b7e('0x3e')]);_0x405ff0[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x405ff0['model'],_0x405ff0[_0x7b7e('0x3e')]);_0x26821e[_0x7b7e('0x41')]=_['intersection'](_0x405ff0[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x585b5d[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x26821e[_0x7b7e('0x41')]=_0x26821e['attributes'][_0x7b7e('0x44')]?_0x26821e[_0x7b7e('0x41')]:_0x405ff0['model'];_0x26821e[_0x7b7e('0xc6')]=qs['sort'](_0x585b5d[_0x7b7e('0x3e')][_0x7b7e('0xc7')]);_0x26821e[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_['pick'](_0x585b5d[_0x7b7e('0x3e')],_0x405ff0[_0x7b7e('0x4e')]));if(_0x585b5d[_0x7b7e('0x3e')][_0x7b7e('0x2c')]){_0x26821e['where']=_[_0x7b7e('0x52')](_0x26821e[_0x7b7e('0x3d')],{'$or':_[_0x7b7e('0x85')](_0x26821e[_0x7b7e('0x41')],function(_0x229169){var _0x540daf={};_0x540daf[_0x229169]={'$like':'%'+_0x585b5d[_0x7b7e('0x3e')][_0x7b7e('0x2c')]+'%'};return _0x540daf;})});}_0x26821e=_['merge']({},_0x26821e,_0x585b5d['options']);return _0x50f6f6[_0x7b7e('0x159')](_0x26821e);}})[_0x7b7e('0x23')](function(_0x2876cd){if(_0x2876cd){_0x23f8a5=_0x2876cd['length'];if(!_0x585b5d[_0x7b7e('0x3e')][_0x7b7e('0xc9')](_0x7b7e('0xcd'))){_0x26821e[_0x7b7e('0x21')]=qs['limit'](_0x585b5d[_0x7b7e('0x3e')]['limit']);_0x26821e[_0x7b7e('0x1e')]=qs[_0x7b7e('0x1e')](_0x585b5d[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}return _0x50f6f6[_0x7b7e('0x159')](_0x26821e);}})[_0x7b7e('0x23')](function(_0x3a8ba9){if(_0x3a8ba9){return _0x3a8ba9?{'count':_0x23f8a5,'rows':_0x3a8ba9}:null;}})['then'](respondWithResult(_0x1d50c4,null))[_0x7b7e('0x19')](handleError(_0x1d50c4,null));};exports[_0x7b7e('0x15b')]=function(_0x553483,_0x3895c2){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x553483[_0x7b7e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3895c2,null))[_0x7b7e('0x23')](function(_0x451110){if(_0x451110){return _0x451110[_0x7b7e('0x15b')](_0x553483['body'][_0x7b7e('0x5c')],_['omit'](_0x553483[_0x7b7e('0x58')],[_0x7b7e('0x5c'),'id'])||{});}})[_0x7b7e('0x23')](respondWithResult(_0x3895c2,null))['catch'](handleError(_0x3895c2,null));};exports[_0x7b7e('0x15c')]=function(_0x2c8447,_0x36d9a7){return db[_0x7b7e('0x37')]['find']({'where':{'id':_0x2c8447['params']['id']}})['then'](handleEntityNotFound(_0x36d9a7,null))[_0x7b7e('0x23')](function(_0x498ec8){if(_0x498ec8){return _0x498ec8['removeSquareProjects'](_0x2c8447[_0x7b7e('0x3e')][_0x7b7e('0x5c')]);}})[_0x7b7e('0x23')](respondWithStatusCode(_0x36d9a7,null))[_0x7b7e('0x19')](handleError(_0x36d9a7,null));};exports[_0x7b7e('0x15d')]=function(_0xc2f516,_0x37a14a){var _0x12da41={},_0x161e6f={},_0x212d82={'count':0x0,'rows':[]};var _0x5b4533=db['CmHopper'][_0x7b7e('0x38')];_0x161e6f[_0x7b7e('0x50')]=_[_0x7b7e('0x4d')](_0x5b4533);_0x161e6f[_0x7b7e('0x3e')]=_[_0x7b7e('0x4d')](_0xc2f516[_0x7b7e('0x3e')]);_0x161e6f[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x161e6f['model'],_0x161e6f['query']);_0x161e6f[_0x7b7e('0x4e')]=_['concat'](_0x161e6f['filters'],[_0x7b7e('0x15e'),_0x7b7e('0x15f'),_0x7b7e('0x160'),_0x7b7e('0x161'),_0x7b7e('0x162'),_0x7b7e('0x163'),'$ne',_0x7b7e('0x164'),_0x7b7e('0x165'),_0x7b7e('0x166'),_0x7b7e('0x167'),_0x7b7e('0x168'),'$notIn','$like',_0x7b7e('0x169'),_0x7b7e('0x16a'),'$notILike',_0x7b7e('0x16b'),_0x7b7e('0x16c'),'$contains',_0x7b7e('0x16d'),_0x7b7e('0x16e')]);_0x12da41[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0x161e6f[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0xc2f516[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x12da41[_0x7b7e('0x41')]=_0x12da41[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x12da41[_0x7b7e('0x41')]:_0x161e6f[_0x7b7e('0x50')];if(!_0xc2f516[_0x7b7e('0x3e')][_0x7b7e('0xc9')]('nolimit')){_0x12da41[_0x7b7e('0x21')]=qs[_0x7b7e('0x21')](_0xc2f516[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x12da41[_0x7b7e('0x1e')]=qs['offset'](_0xc2f516['query'][_0x7b7e('0x1e')]);}_0x12da41[_0x7b7e('0xc6')]=qs['sort'](_0xc2f516[_0x7b7e('0x3e')][_0x7b7e('0xc7')]);_0x12da41['where']=qs[_0x7b7e('0x4e')](_[_0x7b7e('0xc8')](_0xc2f516['query'],_0x161e6f[_0x7b7e('0x4e')]));if(_0xc2f516[_0x7b7e('0x3e')][_0x7b7e('0x2c')]){_0x12da41[_0x7b7e('0x3d')]=_[_0x7b7e('0x52')](_0x12da41['where'],{'$or':_[_0x7b7e('0x85')](_0x12da41[_0x7b7e('0x41')],function(_0x4fdd19){var _0x906184={};_0x906184[_0x4fdd19]={'$like':'%'+_0xc2f516[_0x7b7e('0x3e')][_0x7b7e('0x2c')]+'%'};return _0x906184;})});}_0x12da41[_0x7b7e('0x3d')]={'$and':[_0x12da41[_0x7b7e('0x3d')],{'$or':[{'UserId':_0xc2f516['params']['id']},{'OwnerId':_0xc2f516[_0x7b7e('0x4b')]['id']}]}]};_0x12da41=_[_0x7b7e('0x52')]({},_0x12da41,_0xc2f516['options']);var _0xcd1a75={'where':_0x12da41[_0x7b7e('0x3d')]};return db[_0x7b7e('0x16f')]['count'](_0xcd1a75)[_0x7b7e('0x23')](function(_0x47b83f){_0x212d82[_0x7b7e('0x20')]=_0x47b83f;if(_0xc2f516[_0x7b7e('0x3e')][_0x7b7e('0x3f')]){_0x12da41[_0x7b7e('0x40')]=[{'attributes':['id',_0x7b7e('0x170'),_0x7b7e('0x171'),_0x7b7e('0xe4')],'model':db[_0x7b7e('0xc5')],'as':'Contact'},{'attributes':['id',_0x7b7e('0x31'),_0x7b7e('0x172')],'model':db['VoiceQueue'],'as':_0x7b7e('0xcf')}];}return db[_0x7b7e('0x16f')]['findAll'](_0x12da41);})[_0x7b7e('0x23')](function(_0x33963b){_0x212d82[_0x7b7e('0x43')]=_0x33963b;return _0x212d82;})[_0x7b7e('0x23')](respondWithFilteredResult(_0x37a14a,_0x12da41))[_0x7b7e('0x19')](handleError(_0x37a14a,null));};exports[_0x7b7e('0x173')]=function(_0x3b817b,_0x3ea1c9){if(!_[_0x7b7e('0x64')](_0x3b817b[_0x7b7e('0x77')]['id'])&&(_0x3b817b[_0x7b7e('0x77')][_0x7b7e('0x25')]==_0x7b7e('0x26')||_0x3b817b[_0x7b7e('0x77')][_0x7b7e('0x25')]==_0x7b7e('0x77'))){return db['User'][_0x7b7e('0x8f')]({'where':{'id':_0x3b817b['params']['id']},'raw':!![]})['then'](function(_0x102c4d){return authService[_0x7b7e('0x174')](_0x102c4d);})[_0x7b7e('0x23')](function(_0x23df67){if(_0x23df67){return _0x3ea1c9[_0x7b7e('0x1b')](0xc8)[_0x7b7e('0x1d')]({'api_key':_0x23df67[_0x7b7e('0x175')]});}else{return _0x3ea1c9['status'](0xcc)['json']({'message':'No\x20API\x20access\x20key\x20found!'});}})[_0x7b7e('0x19')](handleError(_0x3ea1c9,0x193));}else{return _0x3ea1c9[_0x7b7e('0x1b')](0x191)[_0x7b7e('0x1d')]({'message':_0x7b7e('0x176')});}};exports[_0x7b7e('0x177')]=function(_0x19cdf0,_0x3fc41e){if(!_[_0x7b7e('0x64')](_0x19cdf0[_0x7b7e('0x77')]['id'])&&(_0x19cdf0[_0x7b7e('0x77')][_0x7b7e('0x25')]==_0x7b7e('0x26')||_0x19cdf0[_0x7b7e('0x77')][_0x7b7e('0x25')]=='user')){return db[_0x7b7e('0x37')]['find']({'where':{'id':_0x19cdf0[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](function(_0x1bbf12){return authService[_0x7b7e('0x178')](_0x1bbf12);})['then'](function(_0x5ae9c7){return db[_0x7b7e('0x37')][_0x7b7e('0x22')]({'apiKeyIat':_0x5ae9c7[_0x7b7e('0x179')],'apiKeyNonce':_0x5ae9c7[_0x7b7e('0x17a')]},{'where':{'id':_0x19cdf0[_0x7b7e('0x4b')]['id']}})['then'](function(){return _0x3fc41e['status'](0xc8)[_0x7b7e('0x1d')]({'api_key':_0x5ae9c7[_0x7b7e('0x175')]});});})[_0x7b7e('0x19')](handleError(_0x3fc41e,0x193));}else{return _0x3fc41e[_0x7b7e('0x1b')](0x191)[_0x7b7e('0x1d')]({'message':_0x7b7e('0x176')});}};exports[_0x7b7e('0x17b')]=function(_0x563a4c,_0x2fe793){if(!_[_0x7b7e('0x64')](_0x563a4c['user']['id'])&&(_0x563a4c[_0x7b7e('0x77')][_0x7b7e('0x25')]==_0x7b7e('0x26')||_0x563a4c[_0x7b7e('0x77')][_0x7b7e('0x25')]=='user')){return db['User'][_0x7b7e('0x30')]({'where':{'id':_0x563a4c[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x2fe793,null))[_0x7b7e('0x23')](function(_0x39422a){if(_0x39422a&&_0x39422a[_0x7b7e('0x17c')]&&_0x39422a[_0x7b7e('0x17d')])return _0x39422a;else throw{'message':_0x7b7e('0x17e')};})[_0x7b7e('0x23')](function(_0x2b33d3){return db[_0x7b7e('0x37')][_0x7b7e('0x22')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x563a4c[_0x7b7e('0x4b')]['id']}});})[_0x7b7e('0x23')](respondWithStatusCode(_0x2fe793,0xc8))[_0x7b7e('0x19')](handleError(_0x2fe793,0x193));}else{return _0x2fe793[_0x7b7e('0x1b')](0x191)[_0x7b7e('0x1d')]({'message':_0x7b7e('0x176')});}};exports[_0x7b7e('0x17f')]=function(_0x489d33,_0x348461){var _0x47e3ef=_0x489d33[_0x7b7e('0x77')][_0x7b7e('0x24')]({'plain':!![]});if(!_0x47e3ef){return _0x348461['status'](0x191)['send'](_0x7b7e('0x180'));}else{return _0x348461[_0x7b7e('0x1b')](0xc8)[_0x7b7e('0x1d')](_0x47e3ef);}};exports[_0x7b7e('0x181')]=function(_0x5d8cd2,_0x2a7ceb){var _0x15fb6b={'offset':0x0},_0x4a18d2={'count':0x0,'rows':[]};Promise[_0x7b7e('0xfd')]()[_0x7b7e('0x23')](function(){if(!_0x5d8cd2[_0x7b7e('0x3e')][_0x7b7e('0x2c')]&&!_0x5d8cd2[_0x7b7e('0x3e')]['teams']&&!_0x5d8cd2[_0x7b7e('0x3e')][_0x7b7e('0x182')])return[];return Promise[_0x7b7e('0xfd')]()[_0x7b7e('0x23')](function(){var _0x4f74b7=[];if(!_['isEmpty'](_0x5d8cd2[_0x7b7e('0x3e')][_0x7b7e('0x183')])){_0x4f74b7['push'](db[_0x7b7e('0x10f')][_0x7b7e('0x83')]({'attributes':['id',_0x7b7e('0x31')],'where':{'id':_0x5d8cd2[_0x7b7e('0x3e')][_0x7b7e('0x183')]}}));}if(!_[_0x7b7e('0x84')](_0x5d8cd2[_0x7b7e('0x3e')]['queues'])){_0x4f74b7[_0x7b7e('0x45')](db['VoiceQueue'][_0x7b7e('0x83')]({'attributes':['id','name'],'type':_0x7b7e('0x184'),'where':{'id':_0x5d8cd2[_0x7b7e('0x3e')][_0x7b7e('0x182')]}}));}return Promise['all'](_0x4f74b7);})['then'](function(_0x58d9cc){var _0x2c2fb6=_[_0x7b7e('0x11e')](_0x58d9cc)[_0x7b7e('0x85')](function(_0x4f6440){return _0x4f6440['getAgents']({'attributes':['id',_0x7b7e('0x31'),'internal',_0x7b7e('0xa5')],'raw':!![]});});return Promise[_0x7b7e('0x49')](_0x2c2fb6);})[_0x7b7e('0x23')](function(_0xac5844){var _0x3540a2=_[_0x7b7e('0x11e')](_0xac5844);if(!_0x5d8cd2[_0x7b7e('0x3e')]['filter'])return _0x3540a2;if(_[_0x7b7e('0x84')](_0x3540a2)){return db[_0x7b7e('0x37')][_0x7b7e('0x83')]({'attributes':['id','name','internal',_0x7b7e('0xa5')],'where':{'role':_0x7b7e('0x29'),'$or':[db[_0x7b7e('0x62')][_0x7b7e('0x3d')](db[_0x7b7e('0x62')]['fn'](_0x7b7e('0x185'),db['sequelize'][_0x7b7e('0x186')](_0x7b7e('0x31'))),{'$like':'%'+_0x5d8cd2[_0x7b7e('0x3e')][_0x7b7e('0x2c')][_0x7b7e('0xa0')]()+'%'}),{'internal':{'$like':'%'+_0x5d8cd2[_0x7b7e('0x3e')][_0x7b7e('0x2c')]+'%'}}]},'raw':!![]});}else{return _(_0x3540a2)[_0x7b7e('0x11e')]()[_0x7b7e('0x2c')](function(_0xeaf867){return _0xeaf867[_0x7b7e('0x31')][_0x7b7e('0xa0')]()[_0x7b7e('0x2f')](_0x5d8cd2[_0x7b7e('0x3e')][_0x7b7e('0x2c')][_0x7b7e('0xa0')]())||_0xeaf867['internal'][_0x7b7e('0x187')]()[_0x7b7e('0x2f')](_0x5d8cd2[_0x7b7e('0x3e')][_0x7b7e('0x2c')]);})[_0x7b7e('0x2e')]();}})[_0x7b7e('0x23')](function(_0x58b256){var _0x1bd9aa=_0x7b7e('0x31');var _0x5eb12b=_0x7b7e('0x188');if(_0x5d8cd2[_0x7b7e('0x3e')][_0x7b7e('0xc7')]){var _0x5eb12b=_0x5d8cd2['query'][_0x7b7e('0xc7')][0x0]==='-'?'desc':'asc';var _0x1bd9aa=_0x5eb12b===_0x7b7e('0x188')?_0x5d8cd2[_0x7b7e('0x3e')]['sort']:_0x5d8cd2[_0x7b7e('0x3e')][_0x7b7e('0xc7')]['substring'](0x1);}return _(_0x58b256)[_0x7b7e('0x189')]('id')['orderBy']([function(_0x912fe7){return _0x1bd9aa===_0x7b7e('0x31')?_0x912fe7[_0x1bd9aa]['toLowerCase']():_0x912fe7[_0x1bd9aa];}],[_0x5eb12b])[_0x7b7e('0x85')](function(_0x3db040){return _[_0x7b7e('0xc8')](_0x3db040,['id',_0x7b7e('0x31'),_0x7b7e('0x5d'),_0x7b7e('0xa5')]);})[_0x7b7e('0x2e')]();})[_0x7b7e('0x23')](function(_0x4d45bf){return client[_0x7b7e('0x10')](_0x7b7e('0x28'),_0x5d8cd2)[_0x7b7e('0x23')](function(_0x471a33){if(_0x471a33[_0x7b7e('0x14')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x574f9e=_0x471a33[_0x7b7e('0x18')];var _0x2435e5=jayson[_0x7b7e('0x18a')][_0x7b7e('0xf')]({'port':0x232c});return _0x2435e5[_0x7b7e('0x10')](_0x7b7e('0x28'),_0x5d8cd2)[_0x7b7e('0x23')](function(_0x57ffe0){if(_0x57ffe0[_0x7b7e('0x14')])throw new Error(_0x7b7e('0x18b'));var _0x37d2c0=_0x57ffe0['result'];return _[_0x7b7e('0x52')]({},_0x37d2c0,_0x574f9e);});})[_0x7b7e('0x23')](function(_0x272f69){return _['map'](_0x4d45bf,function(_0x376207){var _0x21c608=_[_0x7b7e('0x30')](_0x272f69[_0x7b7e('0x43')],['id',_0x376207['id']]);if(!_0x21c608||!_0x376207['online']){_0x376207['status']=_0x7b7e('0x18c');}else if(_0x21c608[_0x7b7e('0x99')]){_0x376207[_0x7b7e('0x1b')]=_0x7b7e('0xff');}else{_0x376207[_0x7b7e('0x1b')]=_[_0x7b7e('0x2f')]([_0x7b7e('0x18d'),_0x7b7e('0x18e'),_0x7b7e('0x18f'),_0x7b7e('0x190'),null,undefined],_0x21c608[_0x7b7e('0x191')])?_0x7b7e('0xa5'):_0x7b7e('0x192');}return _0x376207;});});});})['then'](function(_0x3ad462){if(!_0x5d8cd2[_0x7b7e('0x3e')][_0x7b7e('0xc9')](_0x7b7e('0xcd'))){_0x15fb6b[_0x7b7e('0x21')]=qs[_0x7b7e('0x21')](_0x5d8cd2[_0x7b7e('0x3e')][_0x7b7e('0x21')]||0xa);_0x15fb6b[_0x7b7e('0x1e')]=qs[_0x7b7e('0x1e')](_0x5d8cd2[_0x7b7e('0x3e')]['offset']);}_0x4a18d2['count']=_0x3ad462['length'];_0x4a18d2[_0x7b7e('0x43')]=_0x15fb6b[_0x7b7e('0x21')]?_0x3ad462[_0x7b7e('0x193')](_0x15fb6b[_0x7b7e('0x1e')],_0x15fb6b[_0x7b7e('0x1e')]+_0x15fb6b[_0x7b7e('0x21')]):_0x3ad462;return _0x4a18d2;})['then'](respondWithFilteredResult(_0x2a7ceb,_0x15fb6b))[_0x7b7e('0x19')](handleError(_0x2a7ceb,null));};function get_open_tabs(_0x2d7551,_0x4c8dc8){var _0x77bc2f=_0x2d7551[_0x7b7e('0x194')](0x0)[_0x7b7e('0x195')]()+_0x2d7551[_0x7b7e('0x193')](0x1);var _0x30086d={'type':db[_0x7b7e('0x89')]['QueryTypes'][_0x7b7e('0x196')],'raw':!![]};return new BPromise(function(_0x7eddd8,_0x31436e){var _0x200bc7=squel[_0x7b7e('0x197')]()['field']('ui.'+_0x77bc2f+_0x7b7e('0x198'),'id')[_0x7b7e('0x199')](_0x7b7e('0x19a'))['from'](_0x7b7e('0x19b')+_0x2d7551+_0x7b7e('0x19c'),'ui')['where'](_0x7b7e('0x19d'),_0x4c8dc8['id']);return db[_0x7b7e('0x62')][_0x7b7e('0x3e')](_0x200bc7['toString'](),_0x30086d)[_0x7b7e('0x23')](function(_0x8f48ec){_0x4c8dc8[_0x77bc2f+_0x7b7e('0x19e')]=_0x8f48ec;_0x7eddd8(_0x8f48ec);})[_0x7b7e('0x19')](function(_0x1a3243){_0x31436e(_0x1a3243);});});};
\ No newline at end of file
index c135302..02e18b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb692=['hasOwnProperty','../../mysqldb','User','setMaxListeners','remove','emit'];(function(_0x1bd3f5,_0x25b370){var _0x455611=function(_0x2f5852){while(--_0x2f5852){_0x1bd3f5['push'](_0x1bd3f5['shift']());}};_0x455611(++_0x25b370);}(_0xb692,0x1f3));var _0x2b69=function(_0x484cb9,_0x103489){_0x484cb9=_0x484cb9-0x0;var _0x59517e=_0xb692[_0x484cb9];return _0x59517e;};'use strict';var EventEmitter=require('events');var User=require(_0x2b69('0x0'))['db'][_0x2b69('0x1')];var UserEvents=new EventEmitter();UserEvents[_0x2b69('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x2b69('0x3')};function emitEvent(_0x411622){return function(_0xceafc7,_0x2e8d8f,_0x2da2ce){UserEvents[_0x2b69('0x4')](_0x411622+':'+_0xceafc7['id'],_0xceafc7);UserEvents[_0x2b69('0x4')](_0x411622,_0xceafc7);_0x2da2ce(null);};}for(var e in events){if(events[_0x2b69('0x5')](e)){var event=events[e];User['hook'](e,emitEvent(event));}}module['exports']=UserEvents;
\ No newline at end of file
+var _0xd781=['save','remove','emit','hasOwnProperty','hook','exports','events','User','setMaxListeners'];(function(_0x1a69ce,_0x2530f4){var _0x434433=function(_0x11429c){while(--_0x11429c){_0x1a69ce['push'](_0x1a69ce['shift']());}};_0x434433(++_0x2530f4);}(_0xd781,0x1da));var _0x1d78=function(_0x3454f3,_0x27b802){_0x3454f3=_0x3454f3-0x0;var _0x45dab7=_0xd781[_0x3454f3];return _0x45dab7;};'use strict';var EventEmitter=require(_0x1d78('0x0'));var User=require('../../mysqldb')['db'][_0x1d78('0x1')];var UserEvents=new EventEmitter();UserEvents[_0x1d78('0x2')](0x0);var events={'afterCreate':_0x1d78('0x3'),'afterUpdate':'update','afterDestroy':_0x1d78('0x4')};function emitEvent(_0x4837c3){return function(_0x7a1b14,_0x49e337,_0x2cc1bf){UserEvents[_0x1d78('0x5')](_0x4837c3+':'+_0x7a1b14['id'],_0x7a1b14);UserEvents['emit'](_0x4837c3,_0x7a1b14);_0x2cc1bf(null);};}for(var e in events){if(events[_0x1d78('0x6')](e)){var event=events[e];User[_0x1d78('0x7')](e,emitEvent(event));}}module[_0x1d78('0x8')]=UserEvents;
\ No newline at end of file
index 25e4c88..59f0de1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5df0=['_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','name','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','internal','catch','exports','models','define','User','utf8','utf8_bin','userProfileId','resolve','UserProfile','find','then','privacyEnabled','updatePassword','changed','updateMd5Password','concat','VoiceExtension','bulkCreate','context','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','sha1','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt','md5secret',':asterisk:','bluebird','crypto','util','lodash','./user.attributes','google','length','from-sip','system','format','%s%s','prefix','Set','CDR(type)=%s','chanspy','record','push','merge','MixMonitor','${UNIQUEID}.%s,a','Authenticate','password','ChanSpy','SIP/%s,%s','options','StopMixMonitor','wav','WAV','gsm','CDR(type)=internal','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'];(function(_0x5fe7ce,_0x1a0d39){var _0x3b5793=function(_0x221d2a){while(--_0x221d2a){_0x5fe7ce['push'](_0x5fe7ce['shift']());}};_0x3b5793(++_0x1a0d39);}(_0x5df0,0x118));var _0x05df=function(_0x31727b,_0x4106e2){_0x31727b=_0x31727b-0x0;var _0x2d4562=_0x5df0[_0x31727b];return _0x2d4562;};'use strict';var BPromise=require(_0x05df('0x0'));var crypto=require(_0x05df('0x1'));var util=require(_0x05df('0x2'));var md5=require('md5');var _=require(_0x05df('0x3'));var attributes=require(_0x05df('0x4'));var authTypes=[_0x05df('0x5')];var validatePresenceOf=function(_0x35e5d2){return _0x35e5d2&&_0x35e5d2[_0x05df('0x6')];};var getChanSpyApplications=function(_0x49d479,_0x4f411d,_0x522a50){var _0x22f97a={'context':_0x49d479['context']||_0x05df('0x7'),'type':_0x05df('0x8'),'isApp':![],'UserId':_0x49d479['id']};var _0x2f94c9=[];for(var _0x193a1f=0x0,_0x1b0e7c=0x1;_0x193a1f<_0x522a50['length'];_0x193a1f++,_0x1b0e7c=0x1){var _0x433d82={'exten':util[_0x05df('0x9')](_0x05df('0xa'),_0x522a50[_0x193a1f][_0x05df('0xb')],_0x4f411d),'ChanSpyId':_0x522a50[_0x193a1f]['id']};_0x2f94c9['push'](_['merge']({'app':_0x05df('0xc'),'appdata':util[_0x05df('0x9')](_0x05df('0xd'),_0x05df('0xe')),'priority':_0x1b0e7c++},_0x22f97a,_0x433d82));if(_0x522a50[_0x193a1f][_0x05df('0xf')]){_0x2f94c9[_0x05df('0x10')](_[_0x05df('0x11')]({'app':_0x05df('0x12'),'appdata':util[_0x05df('0x9')](_0x05df('0x13'),_0x522a50[_0x193a1f]['recordingFormat']),'priority':_0x1b0e7c++},_0x22f97a,_0x433d82));}if(_0x522a50[_0x193a1f]['auth']){_0x2f94c9[_0x05df('0x10')](_[_0x05df('0x11')]({'app':_0x05df('0x14'),'appdata':_0x522a50[_0x193a1f][_0x05df('0x15')],'priority':_0x1b0e7c++},_0x22f97a,_0x433d82));}_0x2f94c9[_0x05df('0x10')](_['merge']({'app':_0x05df('0x16'),'appdata':util[_0x05df('0x9')](_0x05df('0x17'),_0x49d479['name'],_0x522a50[_0x193a1f][_0x05df('0x18')]?_0x522a50[_0x193a1f][_0x05df('0x18')]['join'](''):''),'priority':_0x1b0e7c++},_0x22f97a,_0x433d82));if(_0x522a50[_0x193a1f][_0x05df('0xf')]){_0x2f94c9[_0x05df('0x10')](_['merge']({'app':_0x05df('0x19'),'priority':_0x1b0e7c++},_0x22f97a,_0x433d82));}}return _0x2f94c9;};var getUserApplications=function(_0x26b485,_0x122bc4){var _0x406292=[_0x05df('0x1a'),_0x05df('0x1b'),_0x05df('0x1c')];var _0x54ebd3={'context':_0x26b485['context']||'from-sip','exten':_0x122bc4,'type':_0x05df('0x8'),'isApp':![],'UserId':_0x26b485['id']};var _0x8cb55f=[{'app':_0x05df('0xc'),'appdata':_0x05df('0x1d')}];if(_0x26b485[_0x05df('0x1e')]&&_['includes'](_0x406292,_0x26b485['extensionMonitor'])){_0x8cb55f[_0x05df('0x10')]({'app':'Set','appdata':_0x05df('0x1f')});_0x8cb55f[_0x05df('0x10')]({'app':'Set','appdata':util[_0x05df('0x9')](_0x05df('0x20'),_0x26b485[_0x05df('0x1e')])});_0x8cb55f[_0x05df('0x10')]({'app':_0x05df('0x21'),'appdata':util[_0x05df('0x9')](_0x05df('0x22'),_0x26b485[_0x05df('0x23')])});}else{_0x8cb55f[_0x05df('0x10')]({'app':'Dial','appdata':util[_0x05df('0x9')](_0x05df('0x24'),_0x26b485[_0x05df('0x23')])});}_0x8cb55f[_0x05df('0x10')]({'app':_0x05df('0x25')});for(var _0xe1f23c=0x0;_0xe1f23c<_0x8cb55f[_0x05df('0x6')];_0xe1f23c++){_0x8cb55f[_0xe1f23c][_0x05df('0x26')]=_0xe1f23c+0x1;_0x8cb55f[_0xe1f23c]=_[_0x05df('0x27')](_0x8cb55f[_0xe1f23c],_0x54ebd3);}return _0x8cb55f;};var getChanSpyPromise=function(_0x3452aa,_0x41f354){return new BPromise(function(_0x28efa9,_0x11c0fd){return _0x3452aa[_0x05df('0x28')]['findAll']()['then'](function(_0x3ed8b3){if(_0x3ed8b3){var _0x4fb6c5=getChanSpyApplications(_0x41f354,_0x41f354[_0x05df('0x29')],_0x3ed8b3);if(_0x41f354[_0x05df('0x29')]!=_0x41f354[_0x05df('0x23')]){_0x4fb6c5=_0x4fb6c5['concat'](getChanSpyApplications(_0x41f354,_0x41f354['name'],_0x3ed8b3));}return _0x28efa9(_0x4fb6c5);}return _0x28efa9([]);})[_0x05df('0x2a')](function(_0x3173dc){_0x11c0fd(_0x3173dc);});});};module[_0x05df('0x2b')]=function(_0x4c4323,_0xf80d1f){var _0x38905a=_0x4c4323[_0x05df('0x2c')];return _0x4c4323[_0x05df('0x2d')](_0x05df('0x2e'),attributes,{'tableName':'users','charset':_0x05df('0x2f'),'collate':_0x05df('0x30'),'hooks':{'beforeCreate':function(_0x12e49f,_0x27d090,_0x1b17a0){var _0x2956ea=typeof _0x12e49f[_0x05df('0x31')]==='undefined'?BPromise[_0x05df('0x32')](null):_0x38905a[_0x05df('0x33')][_0x05df('0x34')]({'where':{'id':_0x12e49f['userProfileId']}});_0x2956ea[_0x05df('0x35')](function(_0x4db63d){if(_0x4db63d){_0x12e49f[_0x05df('0x36')]=_0x4db63d[_0x05df('0x36')];}})[_0x05df('0x35')](function(){_0x12e49f['updateMd5Password']();_0x12e49f[_0x05df('0x37')](_0x1b17a0);})[_0x05df('0x2a')](function(_0x30cf28){_0x1b17a0(_0x30cf28);});},'beforeUpdate':function(_0x3c7d31,_0x8f48d,_0x21a521){Promise[_0x05df('0x32')]()[_0x05df('0x35')](function(){if(_0x3c7d31[_0x05df('0x38')](_0x05df('0x31'))===![])return;return _0x38905a[_0x05df('0x33')][_0x05df('0x34')]({'where':{'id':_0x3c7d31[_0x05df('0x31')]}})['then'](function(_0x32816c){if(_0x32816c)_0x3c7d31[_0x05df('0x36')]=_0x32816c[_0x05df('0x36')];return;});})[_0x05df('0x35')](function(){if(_0x3c7d31[_0x05df('0x38')](_0x05df('0x15'))){_0x3c7d31[_0x05df('0x39')]();return _0x3c7d31[_0x05df('0x37')](_0x21a521);}_0x21a521();})[_0x05df('0x2a')](function(_0x3e6e92){_0x21a521(_0x3e6e92);});},'afterCreate':function(_0x941381,_0x47eb5d,_0x200206){var _0x42b87a=getUserApplications(_0x941381,_0x941381[_0x05df('0x29')]);if(_0x941381[_0x05df('0x29')]!=_0x941381[_0x05df('0x23')]){_0x42b87a=_0x42b87a[_0x05df('0x3a')](getUserApplications(_0x941381,_0x941381[_0x05df('0x23')]));}return _0x38905a[_0x05df('0x3b')][_0x05df('0x3c')](_0x42b87a)[_0x05df('0x35')](function(){if(_0x941381[_0x05df('0xe')]){return getChanSpyPromise(_0x38905a,_0x941381);}})[_0x05df('0x35')](function(_0x56488a){if(_0x56488a&&_0x56488a[_0x05df('0x6')]){return _0x38905a['VoiceExtension']['bulkCreate'](_0x56488a);}})[_0x05df('0x35')](function(){_0x200206();})['catch'](function(_0x57c099){_0x200206(_0x57c099);});},'afterUpdate':function(_0x571124,_0x228a7c,_0xd174f4){return BPromise[_0x05df('0x32')]()[_0x05df('0x35')](function(){if(_0x571124[_0x05df('0x38')]('chanspy')||_0x571124[_0x05df('0x38')](_0x05df('0x3d'))){return _0x38905a[_0x05df('0x3b')][_0x05df('0x3e')]({'where':{'UserId':_0x571124['id'],'type':_0x05df('0x8'),'ChanSpyId':{'$ne':null}}})['then'](function(){if(_0x571124[_0x05df('0xe')]){return getChanSpyPromise(_0x38905a,_0x571124)[_0x05df('0x35')](function(_0x561b12){if(_0x561b12&&_0x561b12['length']){return _0x38905a[_0x05df('0x3b')][_0x05df('0x3c')](_0x561b12);}});}});}})[_0x05df('0x35')](function(){if(_0x571124[_0x05df('0x38')]('extensionMonitor')||_0x571124[_0x05df('0x38')](_0x05df('0x3d'))){return _0x38905a['VoiceExtension'][_0x05df('0x3e')]({'where':{'UserId':_0x571124['id'],'type':_0x05df('0x8'),'ChanSpyId':null}})[_0x05df('0x35')](function(){var _0x574237=getUserApplications(_0x571124,_0x571124[_0x05df('0x29')]);if(_0x571124[_0x05df('0x29')]!=_0x571124['name']){_0x574237=_0x574237[_0x05df('0x3a')](getUserApplications(_0x571124,_0x571124[_0x05df('0x23')]));}return _0x38905a['VoiceExtension'][_0x05df('0x3c')](_0x574237);});}})['then'](function(){_0xd174f4();})[_0x05df('0x2a')](function(_0x2b7797){_0xd174f4(_0x2b7797);});},'afterDestroy':function(_0xac16e5,_0x5a73c6){return _0x38905a[_0x05df('0x3b')][_0x05df('0x3e')]({'where':{'UserId':_0xac16e5['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x18932a,_0x506439){if(!_0x506439){return this[_0x05df('0x15')]===this[_0x05df('0x3f')](_0x18932a);}var _0x21d404=this;this['encryptPassword'](_0x18932a,function(_0x4e4a29,_0x37cd5b){if(_0x4e4a29){_0x506439(_0x4e4a29);}if(_0x21d404['password']===_0x37cd5b){_0x506439(null,!![]);}else{_0x506439(null,![]);}});},'makeSalt':function(_0x1de7d0,_0x156368){var _0x3a379=0x10;if(typeof arguments[0x0]===_0x05df('0x40')){_0x156368=arguments[0x0];_0x1de7d0=_0x3a379;}else if(typeof arguments[0x1]==='function'){_0x156368=arguments[0x1];}else{throw new Error(_0x05df('0x41'));}if(!_0x1de7d0){_0x1de7d0=_0x3a379;}return crypto[_0x05df('0x42')](_0x1de7d0,function(_0x28db49,_0x46eed8){if(_0x28db49){_0x156368(_0x28db49);}return _0x156368(null,_0x46eed8[_0x05df('0x43')](_0x05df('0x44')));});},'encryptPassword':function(_0x395eb0,_0x124209){if(!_0x395eb0||!this[_0x05df('0x45')]){return _0x124209?_0x124209(null):null;}var _0x5e8207=0x2710;var _0x1fd528=0x40;var _0x2ed5f5=new Buffer(this[_0x05df('0x45')],_0x05df('0x44'));if(!_0x124209){return crypto['pbkdf2Sync'](_0x395eb0,_0x2ed5f5,_0x5e8207,_0x1fd528,_0x05df('0x46'))['toString']('base64');}return crypto[_0x05df('0x47')](_0x395eb0,_0x2ed5f5,_0x5e8207,_0x1fd528,'sha1',function(_0x3c906a,_0x3954c1){if(_0x3c906a){_0x124209(_0x3c906a);}return _0x124209(null,_0x3954c1[_0x05df('0x43')](_0x05df('0x44')));});},'updatePassword':function(_0x132cab){if(!this['password']){return _0x132cab(null);}if(!validatePresenceOf(this[_0x05df('0x15')])&&authTypes[_0x05df('0x48')](this[_0x05df('0x49')])===-0x1){_0x132cab(new Error(_0x05df('0x4a')));}var _0x1166e8=this;this[_0x05df('0x4b')](function(_0x4f4f64,_0x48874d){if(_0x4f4f64){return _0x132cab(_0x4f4f64);}_0x1166e8[_0x05df('0x45')]=_0x48874d;_0x1166e8[_0x05df('0x3f')](_0x1166e8[_0x05df('0x15')],function(_0x2fd67d,_0x39381c){if(_0x2fd67d){_0x132cab(_0x2fd67d);}_0x1166e8[_0x05df('0x15')]=_0x39381c;_0x132cab(null);});});},'updateMd5Password':function(){this[_0x05df('0x4c')]=md5(this[_0x05df('0x23')]+_0x05df('0x4d')+this[_0x05df('0x15')]);return this[_0x05df('0x4c')];}}});};
\ No newline at end of file
+var _0xf20f=['SIP/%s,,tTxXU(xcally-mixmonitor-context)','Dial','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','findAll','then','internal','concat','catch','exports','models','define','User','users','utf8','utf8_bin','userProfileId','undefined','resolve','UserProfile','find','privacyEnabled','updateMd5Password','updatePassword','changed','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','pbkdf2Sync','sha1','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt','md5secret',':asterisk:','bluebird','crypto','util','md5','lodash','./user.attributes','google','length','from-sip','%s%s','prefix','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','format','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','SIP/%s,%s','name','options','join','StopMixMonitor','gsm','context','system','CDR(type)=internal','extensionMonitor','includes'];(function(_0x256b52,_0x1912e7){var _0x19be8a=function(_0x9b129a){while(--_0x9b129a){_0x256b52['push'](_0x256b52['shift']());}};_0x19be8a(++_0x1912e7);}(_0xf20f,0x1c9));var _0xff20=function(_0x15c0ea,_0x22911b){_0x15c0ea=_0x15c0ea-0x0;var _0x5c853f=_0xf20f[_0x15c0ea];return _0x5c853f;};'use strict';var BPromise=require(_0xff20('0x0'));var crypto=require(_0xff20('0x1'));var util=require(_0xff20('0x2'));var md5=require(_0xff20('0x3'));var _=require(_0xff20('0x4'));var attributes=require(_0xff20('0x5'));var authTypes=[_0xff20('0x6')];var validatePresenceOf=function(_0xc7e38b){return _0xc7e38b&&_0xc7e38b[_0xff20('0x7')];};var getChanSpyApplications=function(_0x18a4fa,_0x1f7125,_0x2c4c9c){var _0x4efda4={'context':_0x18a4fa['context']||_0xff20('0x8'),'type':'system','isApp':![],'UserId':_0x18a4fa['id']};var _0x36a8ca=[];for(var _0x38ecbf=0x0,_0x363b2d=0x1;_0x38ecbf<_0x2c4c9c[_0xff20('0x7')];_0x38ecbf++,_0x363b2d=0x1){var _0x52fe36={'exten':util['format'](_0xff20('0x9'),_0x2c4c9c[_0x38ecbf][_0xff20('0xa')],_0x1f7125),'ChanSpyId':_0x2c4c9c[_0x38ecbf]['id']};_0x36a8ca[_0xff20('0xb')](_[_0xff20('0xc')]({'app':_0xff20('0xd'),'appdata':util['format'](_0xff20('0xe'),_0xff20('0xf')),'priority':_0x363b2d++},_0x4efda4,_0x52fe36));if(_0x2c4c9c[_0x38ecbf][_0xff20('0x10')]){_0x36a8ca[_0xff20('0xb')](_[_0xff20('0xc')]({'app':_0xff20('0x11'),'appdata':util[_0xff20('0x12')](_0xff20('0x13'),_0x2c4c9c[_0x38ecbf][_0xff20('0x14')]),'priority':_0x363b2d++},_0x4efda4,_0x52fe36));}if(_0x2c4c9c[_0x38ecbf][_0xff20('0x15')]){_0x36a8ca[_0xff20('0xb')](_['merge']({'app':_0xff20('0x16'),'appdata':_0x2c4c9c[_0x38ecbf][_0xff20('0x17')],'priority':_0x363b2d++},_0x4efda4,_0x52fe36));}_0x36a8ca[_0xff20('0xb')](_[_0xff20('0xc')]({'app':'ChanSpy','appdata':util['format'](_0xff20('0x18'),_0x18a4fa[_0xff20('0x19')],_0x2c4c9c[_0x38ecbf][_0xff20('0x1a')]?_0x2c4c9c[_0x38ecbf]['options'][_0xff20('0x1b')](''):''),'priority':_0x363b2d++},_0x4efda4,_0x52fe36));if(_0x2c4c9c[_0x38ecbf][_0xff20('0x10')]){_0x36a8ca[_0xff20('0xb')](_[_0xff20('0xc')]({'app':_0xff20('0x1c'),'priority':_0x363b2d++},_0x4efda4,_0x52fe36));}}return _0x36a8ca;};var getUserApplications=function(_0x314a02,_0x12ac50){var _0x2b426b=['wav','WAV',_0xff20('0x1d')];var _0x826a49={'context':_0x314a02[_0xff20('0x1e')]||_0xff20('0x8'),'exten':_0x12ac50,'type':_0xff20('0x1f'),'isApp':![],'UserId':_0x314a02['id']};var _0x496fd2=[{'app':_0xff20('0xd'),'appdata':_0xff20('0x20')}];if(_0x314a02[_0xff20('0x21')]&&_[_0xff20('0x22')](_0x2b426b,_0x314a02[_0xff20('0x21')])){_0x496fd2[_0xff20('0xb')]({'app':_0xff20('0xd'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x496fd2[_0xff20('0xb')]({'app':_0xff20('0xd'),'appdata':util['format']('_XCALLY_MIXMONITOR_FORMAT=%s',_0x314a02[_0xff20('0x21')])});_0x496fd2[_0xff20('0xb')]({'app':'Dial','appdata':util['format'](_0xff20('0x23'),_0x314a02[_0xff20('0x19')])});}else{_0x496fd2[_0xff20('0xb')]({'app':_0xff20('0x24'),'appdata':util[_0xff20('0x12')](_0xff20('0x25'),_0x314a02[_0xff20('0x19')])});}_0x496fd2['push']({'app':_0xff20('0x26')});for(var _0x45fd63=0x0;_0x45fd63<_0x496fd2[_0xff20('0x7')];_0x45fd63++){_0x496fd2[_0x45fd63][_0xff20('0x27')]=_0x45fd63+0x1;_0x496fd2[_0x45fd63]=_[_0xff20('0x28')](_0x496fd2[_0x45fd63],_0x826a49);}return _0x496fd2;};var getChanSpyPromise=function(_0x418d56,_0x3f98a1){return new BPromise(function(_0x2d838d,_0x20aa1a){return _0x418d56[_0xff20('0x29')][_0xff20('0x2a')]()[_0xff20('0x2b')](function(_0x3bd90c){if(_0x3bd90c){var _0x15cad3=getChanSpyApplications(_0x3f98a1,_0x3f98a1[_0xff20('0x2c')],_0x3bd90c);if(_0x3f98a1['internal']!=_0x3f98a1['name']){_0x15cad3=_0x15cad3[_0xff20('0x2d')](getChanSpyApplications(_0x3f98a1,_0x3f98a1[_0xff20('0x19')],_0x3bd90c));}return _0x2d838d(_0x15cad3);}return _0x2d838d([]);})[_0xff20('0x2e')](function(_0x4b7ef1){_0x20aa1a(_0x4b7ef1);});});};module[_0xff20('0x2f')]=function(_0x5626a5,_0x3bb2a4){var _0x489872=_0x5626a5[_0xff20('0x30')];return _0x5626a5[_0xff20('0x31')](_0xff20('0x32'),attributes,{'tableName':_0xff20('0x33'),'charset':_0xff20('0x34'),'collate':_0xff20('0x35'),'hooks':{'beforeCreate':function(_0x435aa6,_0x596fbe,_0x1e4f6f){var _0x2ec30b=typeof _0x435aa6[_0xff20('0x36')]===_0xff20('0x37')?BPromise[_0xff20('0x38')](null):_0x489872[_0xff20('0x39')][_0xff20('0x3a')]({'where':{'id':_0x435aa6['userProfileId']}});_0x2ec30b[_0xff20('0x2b')](function(_0x3df166){if(_0x3df166){_0x435aa6[_0xff20('0x3b')]=_0x3df166[_0xff20('0x3b')];}})['then'](function(){_0x435aa6[_0xff20('0x3c')]();_0x435aa6[_0xff20('0x3d')](_0x1e4f6f);})[_0xff20('0x2e')](function(_0x2b4abc){_0x1e4f6f(_0x2b4abc);});},'beforeUpdate':function(_0x5ad2d2,_0x7ee775,_0x9057ed){Promise[_0xff20('0x38')]()[_0xff20('0x2b')](function(){if(_0x5ad2d2[_0xff20('0x3e')](_0xff20('0x36'))===![])return;return _0x489872[_0xff20('0x39')][_0xff20('0x3a')]({'where':{'id':_0x5ad2d2[_0xff20('0x36')]}})[_0xff20('0x2b')](function(_0x30adea){if(_0x30adea)_0x5ad2d2[_0xff20('0x3b')]=_0x30adea[_0xff20('0x3b')];return;});})[_0xff20('0x2b')](function(){if(_0x5ad2d2[_0xff20('0x3e')](_0xff20('0x17'))){_0x5ad2d2[_0xff20('0x3c')]();return _0x5ad2d2[_0xff20('0x3d')](_0x9057ed);}_0x9057ed();})[_0xff20('0x2e')](function(_0x22fc30){_0x9057ed(_0x22fc30);});},'afterCreate':function(_0x4ef362,_0x50edd1,_0x3f0510){var _0x34941a=getUserApplications(_0x4ef362,_0x4ef362[_0xff20('0x2c')]);if(_0x4ef362['internal']!=_0x4ef362[_0xff20('0x19')]){_0x34941a=_0x34941a[_0xff20('0x2d')](getUserApplications(_0x4ef362,_0x4ef362[_0xff20('0x19')]));}return _0x489872[_0xff20('0x3f')][_0xff20('0x40')](_0x34941a)['then'](function(){if(_0x4ef362[_0xff20('0xf')]){return getChanSpyPromise(_0x489872,_0x4ef362);}})[_0xff20('0x2b')](function(_0x33b03a){if(_0x33b03a&&_0x33b03a['length']){return _0x489872[_0xff20('0x3f')]['bulkCreate'](_0x33b03a);}})[_0xff20('0x2b')](function(){_0x3f0510();})[_0xff20('0x2e')](function(_0x1d027e){_0x3f0510(_0x1d027e);});},'afterUpdate':function(_0x244342,_0x4d0cb3,_0x58f765){return BPromise[_0xff20('0x38')]()[_0xff20('0x2b')](function(){if(_0x244342[_0xff20('0x3e')](_0xff20('0xf'))||_0x244342[_0xff20('0x3e')]('context')){return _0x489872[_0xff20('0x3f')][_0xff20('0x41')]({'where':{'UserId':_0x244342['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0xff20('0x2b')](function(){if(_0x244342[_0xff20('0xf')]){return getChanSpyPromise(_0x489872,_0x244342)[_0xff20('0x2b')](function(_0x325b0c){if(_0x325b0c&&_0x325b0c[_0xff20('0x7')]){return _0x489872[_0xff20('0x3f')][_0xff20('0x40')](_0x325b0c);}});}});}})[_0xff20('0x2b')](function(){if(_0x244342[_0xff20('0x3e')]('extensionMonitor')||_0x244342['changed'](_0xff20('0x1e'))){return _0x489872[_0xff20('0x3f')][_0xff20('0x41')]({'where':{'UserId':_0x244342['id'],'type':_0xff20('0x1f'),'ChanSpyId':null}})[_0xff20('0x2b')](function(){var _0x7e624b=getUserApplications(_0x244342,_0x244342[_0xff20('0x2c')]);if(_0x244342['internal']!=_0x244342[_0xff20('0x19')]){_0x7e624b=_0x7e624b[_0xff20('0x2d')](getUserApplications(_0x244342,_0x244342[_0xff20('0x19')]));}return _0x489872[_0xff20('0x3f')][_0xff20('0x40')](_0x7e624b);});}})[_0xff20('0x2b')](function(){_0x58f765();})['catch'](function(_0x426d24){_0x58f765(_0x426d24);});},'afterDestroy':function(_0x241986,_0x4cc435){return _0x489872[_0xff20('0x3f')][_0xff20('0x41')]({'where':{'UserId':_0x241986['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x4285a7,_0x43002e){if(!_0x43002e){return this[_0xff20('0x17')]===this['encryptPassword'](_0x4285a7);}var _0x1ddf2e=this;this[_0xff20('0x42')](_0x4285a7,function(_0x2a7a68,_0x5d36ee){if(_0x2a7a68){_0x43002e(_0x2a7a68);}if(_0x1ddf2e[_0xff20('0x17')]===_0x5d36ee){_0x43002e(null,!![]);}else{_0x43002e(null,![]);}});},'makeSalt':function(_0x50ec03,_0x1001af){var _0xb77885=0x10;if(typeof arguments[0x0]===_0xff20('0x43')){_0x1001af=arguments[0x0];_0x50ec03=_0xb77885;}else if(typeof arguments[0x1]===_0xff20('0x43')){_0x1001af=arguments[0x1];}else{throw new Error(_0xff20('0x44'));}if(!_0x50ec03){_0x50ec03=_0xb77885;}return crypto[_0xff20('0x45')](_0x50ec03,function(_0x5dd564,_0x53e711){if(_0x5dd564){_0x1001af(_0x5dd564);}return _0x1001af(null,_0x53e711[_0xff20('0x46')](_0xff20('0x47')));});},'encryptPassword':function(_0x4ef301,_0x12ea8d){if(!_0x4ef301||!this[_0xff20('0x48')]){return _0x12ea8d?_0x12ea8d(null):null;}var _0x16f43e=0x2710;var _0x5a5dca=0x40;var _0x391150=new Buffer(this['salt'],'base64');if(!_0x12ea8d){return crypto[_0xff20('0x49')](_0x4ef301,_0x391150,_0x16f43e,_0x5a5dca,_0xff20('0x4a'))[_0xff20('0x46')](_0xff20('0x47'));}return crypto[_0xff20('0x4b')](_0x4ef301,_0x391150,_0x16f43e,_0x5a5dca,_0xff20('0x4a'),function(_0xecf0be,_0x4b3752){if(_0xecf0be){_0x12ea8d(_0xecf0be);}return _0x12ea8d(null,_0x4b3752[_0xff20('0x46')](_0xff20('0x47')));});},'updatePassword':function(_0x2781b3){if(!this[_0xff20('0x17')]){return _0x2781b3(null);}if(!validatePresenceOf(this[_0xff20('0x17')])&&authTypes[_0xff20('0x4c')](this[_0xff20('0x4d')])===-0x1){_0x2781b3(new Error(_0xff20('0x4e')));}var _0x461ffb=this;this[_0xff20('0x4f')](function(_0x3ca2f4,_0x2a7ebb){if(_0x3ca2f4){return _0x2781b3(_0x3ca2f4);}_0x461ffb[_0xff20('0x48')]=_0x2a7ebb;_0x461ffb['encryptPassword'](_0x461ffb[_0xff20('0x17')],function(_0x3857d7,_0x4e0202){if(_0x3857d7){_0x2781b3(_0x3857d7);}_0x461ffb[_0xff20('0x17')]=_0x4e0202;_0x2781b3(null);});});},'updateMd5Password':function(){this[_0xff20('0x50')]=md5(this[_0xff20('0x19')]+_0xff20('0x51')+this[_0xff20('0x17')]);return this['md5secret'];}}});};
\ No newline at end of file
index 2c65fe0..689b067 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3066=['findAll','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','push','SIP/%s','PAUSE','body','type','uniqueid','update','channel','voice','system','chat','fax','openchannel','whatsapp','set','%s%s','all','LogoutUser','destroy','forEach','LoginUser','findOne','loginInPause','count','agent','../../config/license/util','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','UserVoiceQueue.penalty','getChannels','merge','callysquare','LOGININPAUSE','bulkCreate','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','./user.socket','register','then','info','User,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','options','where','attributes','include','map','model','GetUser','debug','ShowUser','User','find','raw','PauseUser','name','role','internal','interface','UserVoiceQueueRt','MemberReport'];(function(_0x31ced5,_0x5d5415){var _0x10d9e5=function(_0x2e51a5){while(--_0x2e51a5){_0x31ced5['push'](_0x31ced5['shift']());}};_0x10d9e5(++_0x5d5415);}(_0x3066,0x17d));var _0x6306=function(_0x44689f,_0x27e8e1){_0x44689f=_0x44689f-0x0;var _0x4ad4af=_0x3066[_0x44689f];return _0x4ad4af;};'use strict';var _=require(_0x6306('0x0'));var util=require(_0x6306('0x1'));var moment=require(_0x6306('0x2'));var BPromise=require(_0x6306('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6306('0x4'))['db'];var utils=require(_0x6306('0x5'));var logger=require(_0x6306('0x6'))(_0x6306('0x7'));var config=require(_0x6306('0x8'));var jayson=require(_0x6306('0x9'));var client=jayson['client'][_0x6306('0xa')]({'port':0x232a});config[_0x6306('0xb')]=_[_0x6306('0xc')](config['redis'],{'host':_0x6306('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6306('0xb')]));require(_0x6306('0xe'))[_0x6306('0xf')](socket);function respondWithRpcPromise(_0xb6bd20,_0x1d102c,_0x3c3775){return new BPromise(function(_0x2f88d8,_0xe41694){return client['request'](_0xb6bd20,_0x3c3775)[_0x6306('0x10')](function(_0x2e1c6a){logger[_0x6306('0x11')](_0x6306('0x12'),_0x1d102c,_0x6306('0x13'));logger['debug']('User,\x20%s,\x20%s,\x20%s',_0x1d102c,'request\x20sent',JSON['stringify'](_0x2e1c6a));if(_0x2e1c6a[_0x6306('0x14')]){if(_0x2e1c6a[_0x6306('0x14')][_0x6306('0x15')]===0x1f4){logger[_0x6306('0x14')](_0x6306('0x12'),_0x1d102c,_0x2e1c6a[_0x6306('0x14')]['message']);return _0xe41694(_0x2e1c6a[_0x6306('0x14')][_0x6306('0x16')]);}logger[_0x6306('0x14')](_0x6306('0x12'),_0x1d102c,_0x2e1c6a['error'][_0x6306('0x16')]);return _0x2f88d8(_0x2e1c6a[_0x6306('0x14')][_0x6306('0x16')]);}else{logger[_0x6306('0x11')](_0x6306('0x12'),_0x1d102c,_0x6306('0x13'));_0x2f88d8(_0x2e1c6a[_0x6306('0x17')][_0x6306('0x16')]);}})[_0x6306('0x18')](function(_0x44e04c){logger[_0x6306('0x14')](_0x6306('0x12'),_0x1d102c,_0x44e04c);_0xe41694(_0x44e04c);});});}exports['GetUser']=function(_0x1ff8fe){var _0x33cab5=this;return new Promise(function(_0xd9458f,_0x230352){return db['User']['findAll']({'raw':_0x1ff8fe[_0x6306('0x19')]?_0x1ff8fe[_0x6306('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x1ff8fe[_0x6306('0x19')]?_0x1ff8fe['options'][_0x6306('0x1a')]||null:null,'attributes':_0x1ff8fe[_0x6306('0x19')]?_0x1ff8fe[_0x6306('0x19')][_0x6306('0x1b')]||null:null,'limit':_0x1ff8fe[_0x6306('0x19')]?_0x1ff8fe[_0x6306('0x19')]['limit']||null:null,'include':_0x1ff8fe[_0x6306('0x19')]?_0x1ff8fe[_0x6306('0x19')][_0x6306('0x1c')]?_[_0x6306('0x1d')](_0x1ff8fe['options']['include'],function(_0x4bdb09){return{'model':db[_0x4bdb09[_0x6306('0x1e')]],'as':_0x4bdb09['as'],'attributes':_0x4bdb09['attributes'],'include':_0x4bdb09['include']?_['map'](_0x4bdb09['include'],function(_0x3db685){return{'model':db[_0x3db685['model']],'as':_0x3db685['as'],'attributes':_0x3db685[_0x6306('0x1b')],'include':_0x3db685['include']?_[_0x6306('0x1d')](_0x3db685[_0x6306('0x1c')],function(_0x22f909){return{'model':db[_0x22f909['model']],'as':_0x22f909['as'],'attributes':_0x22f909[_0x6306('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x6306('0x10')](function(_0x307cf6){logger[_0x6306('0x11')](_0x6306('0x1f'),_0x1ff8fe);logger[_0x6306('0x20')](_0x6306('0x1f'),_0x1ff8fe,JSON['stringify'](_0x307cf6));_0xd9458f(_0x307cf6);})[_0x6306('0x18')](function(_0x330060){logger[_0x6306('0x14')](_0x6306('0x1f'),_0x330060['message'],_0x1ff8fe);_0x230352(_0x33cab5['error'](0x1f4,_0x330060[_0x6306('0x16')]));});});};exports[_0x6306('0x21')]=function(_0x1fc56c){var _0x5ec362=this;return new Promise(function(_0x4de031,_0x238110){return db[_0x6306('0x22')][_0x6306('0x23')]({'raw':_0x1fc56c[_0x6306('0x19')]?_0x1fc56c[_0x6306('0x19')][_0x6306('0x24')]===undefined?!![]:![]:!![],'where':_0x1fc56c[_0x6306('0x19')]?_0x1fc56c['options']['where']||null:null,'attributes':_0x1fc56c['options']?_0x1fc56c[_0x6306('0x19')][_0x6306('0x1b')]||null:null,'include':_0x1fc56c[_0x6306('0x19')]?_0x1fc56c[_0x6306('0x19')]['include']?_[_0x6306('0x1d')](_0x1fc56c['options'][_0x6306('0x1c')],function(_0x36a73f){return{'model':db[_0x36a73f[_0x6306('0x1e')]],'as':_0x36a73f['as'],'attributes':_0x36a73f[_0x6306('0x1b')],'include':_0x36a73f[_0x6306('0x1c')]?_[_0x6306('0x1d')](_0x36a73f[_0x6306('0x1c')],function(_0x446f9e){return{'model':db[_0x446f9e[_0x6306('0x1e')]],'as':_0x446f9e['as'],'attributes':_0x446f9e[_0x6306('0x1b')],'include':_0x446f9e[_0x6306('0x1c')]?_[_0x6306('0x1d')](_0x446f9e['include'],function(_0x9c4e5a){return{'model':db[_0x9c4e5a['model']],'as':_0x9c4e5a['as'],'attributes':_0x9c4e5a[_0x6306('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x6306('0x10')](function(_0xd23150){logger[_0x6306('0x11')]('ShowUser',_0x1fc56c);logger[_0x6306('0x20')](_0x6306('0x21'),_0x1fc56c,JSON['stringify'](_0xd23150));_0x4de031(_0xd23150);})[_0x6306('0x18')](function(_0x4fecd6){logger[_0x6306('0x14')](_0x6306('0x21'),_0x4fecd6[_0x6306('0x16')],_0x1fc56c);_0x238110(_0x5ec362[_0x6306('0x14')](0x1f4,_0x4fecd6[_0x6306('0x16')]));});});};exports[_0x6306('0x25')]=function(_0xbc5397){var _0x2773ab=this;return new Promise(function(_0x2bca28,_0x3a8329){var _0x1ac206;return db['User']['find']({'where':_0xbc5397[_0x6306('0x19')][_0x6306('0x1a')]||{},'attributes':['id',_0x6306('0x26'),_0x6306('0x27'),_0x6306('0x28'),_0x6306('0x29')]})[_0x6306('0x10')](function(_0x4b3457){if(_0x4b3457){_0x1ac206=_0x4b3457;return db[_0x6306('0x2a')]['update']({'paused':0x1},{'where':{'UserId':_0x1ac206['id']},'individualHooks':!![]});}})['then'](function(){if(_0x1ac206){return db[_0x6306('0x2b')][_0x6306('0x2c')]({'where':{'membername':_0x1ac206[_0x6306('0x26')],'type':'PAUSE','exitAt':null}});}})[_0x6306('0x10')](function(_0x26a488){if(_0x1ac206){if(_0x26a488&&_0x26a488[_0x6306('0x2d')]){var _0x71dc2=moment()[_0x6306('0x2e')](_0x6306('0x2f'));for(var _0x2205d0=0x0,_0x214b86=_0x26a488[_0x6306('0x2d')];_0x2205d0<_0x214b86;_0x2205d0++){_0x26a488[_0x2205d0][_0x6306('0x30')]({'exitAt':_0x71dc2});}}}})[_0x6306('0x10')](function(){if(_0x1ac206){var _0x147b02=[];var _0x3bc684=utils['getChannels']();_0x3bc684['forEach'](function(_0x3e83f1){_0x147b02[_0x6306('0x31')]({'channel':_0x3e83f1,'membername':_0x1ac206['name'],'interface':_['isNil'](_0x1ac206['interface'])?util[_0x6306('0x2e')](_0x6306('0x32'),_0x1ac206[_0x6306('0x26')]):_0x1ac206[_0x6306('0x29')],'type':_0x6306('0x33'),'enterAt':moment()[_0x6306('0x2e')](_0x6306('0x2f')),'data1':_0xbc5397[_0x6306('0x34')][_0x6306('0x35')]||'DEFAULT\x20PAUSE','role':_0x1ac206[_0x6306('0x27')],'internal':_0x1ac206[_0x6306('0x28')],'uniqueid':_0xbc5397[_0x6306('0x34')][_0x6306('0x36')]||null});});return db[_0x6306('0x2b')]['bulkCreate'](_0x147b02,{'individualHooks':!![]});}})[_0x6306('0x10')](function(){if(_0x1ac206){return _0x1ac206[_0x6306('0x37')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0xbc5397[_0x6306('0x34')][_0x6306('0x35')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0x6306('0x2e')](_0x6306('0x2f'))});}})['then'](function(_0x3feeba){_0x2bca28(_0x3feeba);})[_0x6306('0x18')](function(_0x4c47ab){_0x3a8329(_0x2773ab['error'](0x1f4,_0x4c47ab[_0x6306('0x16')]));});});};exports['UnpauseUser']=function(_0x9b98a4){var _0x535d44=this;return new Promise(function(_0x30f48d,_0x457e50){var _0x2f7f01;return db[_0x6306('0x22')]['findOne']({'where':_0x9b98a4[_0x6306('0x19')][_0x6306('0x1a')]||{},'attributes':['id','name']})[_0x6306('0x10')](function(_0x221a6e){if(_0x221a6e){_0x2f7f01=_0x221a6e;if(_0x9b98a4[_0x6306('0x34')][_0x6306('0x38')]&&!utils['isValidChannel'](_0x9b98a4[_0x6306('0x34')][_0x6306('0x38')])){throw new Error('Unknown\x20channel');}switch(_0x9b98a4[_0x6306('0x34')]['channel']){case _0x6306('0x39'):return db['UserVoiceQueueRt'][_0x6306('0x37')]({'paused':0x0},{'where':{'UserId':_0x2f7f01['id']}})[_0x6306('0x10')](function(){return db['MemberReport'][_0x6306('0x23')]({'where':{'channel':_0x9b98a4['body'][_0x6306('0x38')],'membername':_0x2f7f01[_0x6306('0x26')],'type':_0x6306('0x33'),'exitAt':null}});})[_0x6306('0x10')](function(_0xc6b8fb){if(_0xc6b8fb){return _0xc6b8fb[_0x6306('0x37')]({'exitAt':moment()[_0x6306('0x2e')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x6306('0x3a')},{'individualHooks':!![]});}return null;})[_0x6306('0x10')](function(){return _0x2f7f01['update']({'voicePause':![]});});case'mail':case _0x6306('0x3b'):case _0x6306('0x3c'):case'sms':case _0x6306('0x3d'):case _0x6306('0x3e'):return db['MemberReport']['find']({'where':{'channel':_0x9b98a4[_0x6306('0x34')][_0x6306('0x38')],'membername':_0x2f7f01['name'],'type':_0x6306('0x33'),'exitAt':null}})['then'](function(_0x381308){return _0x381308[_0x6306('0x37')]({'exitAt':moment()['format'](_0x6306('0x2f')),'data2':_0x6306('0x3a')},{'individualHooks':!![]});})[_0x6306('0x10')](function(){var _0xc271d6={};_[_0x6306('0x3f')](_0xc271d6,util[_0x6306('0x2e')](_0x6306('0x40'),_0x9b98a4[_0x6306('0x34')][_0x6306('0x38')],'Pause'),![]);return _0x2f7f01['update'](_0xc271d6);});default:return db[_0x6306('0x2a')][_0x6306('0x37')]({'paused':0x0},{'where':{'UserId':_0x2f7f01['id']}})[_0x6306('0x10')](function(){return db['MemberReport'][_0x6306('0x2c')]({'where':{'membername':_0x2f7f01['name'],'type':_0x6306('0x33'),'exitAt':null}});})[_0x6306('0x10')](function(_0x1d0956){var _0xc84c2d=[];_0x1d0956['forEach'](function(_0x19831d){_0xc84c2d[_0x6306('0x31')](_0x19831d[_0x6306('0x37')]({'exitAt':moment()[_0x6306('0x2e')](_0x6306('0x2f')),'data2':_0x6306('0x3a')}));});return BPromise[_0x6306('0x41')](_0xc84c2d);})[_0x6306('0x10')](function(){return _0x2f7f01[_0x6306('0x37')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0x6306('0x10')](function(_0x21465d){_0x30f48d(_0x21465d);})[_0x6306('0x18')](function(_0xd1dde8){_0x457e50(_0x535d44[_0x6306('0x14')](0x1f4,_0xd1dde8[_0x6306('0x16')]));});});};exports[_0x6306('0x42')]=function(_0xe7d00e){var _0x424a06=this;return new Promise(function(_0x227466,_0x456fc5){var _0x1d82c1;return db[_0x6306('0x22')]['findOne']({'where':_0xe7d00e['options'][_0x6306('0x1a')]||{},'attributes':['id',_0x6306('0x26')]})[_0x6306('0x10')](function(_0x5635e2){if(_0x5635e2){_0x1d82c1=_0x5635e2;return db[_0x6306('0x2a')][_0x6306('0x43')]({'where':{'membername':_0x1d82c1['name']},'individualHooks':!![]});}})[_0x6306('0x10')](function(){if(_0x1d82c1){return db[_0x6306('0x2b')][_0x6306('0x2c')]({'where':{'membername':_0x1d82c1[_0x6306('0x26')],'exitAt':null}});}})[_0x6306('0x10')](function(_0x425735){if(_0x1d82c1){if(_0x425735&&_0x425735[_0x6306('0x2d')]){var _0x1cfc2c=[];_0x425735[_0x6306('0x44')](function(_0x1141d6){_0x1cfc2c['push'](_0x1141d6[_0x6306('0x37')]({'exitAt':moment()[_0x6306('0x2e')](_0x6306('0x2f'))}));});return BPromise[_0x6306('0x41')](_0x1cfc2c);}}})[_0x6306('0x10')](function(){if(_0x1d82c1){return _0x1d82c1[_0x6306('0x37')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x6306('0x10')](function(_0x80ec2b){_0x227466(_0x80ec2b);})['catch'](function(_0x2efdf3){_0x456fc5(_0x424a06['error'](0x1f4,_0x2efdf3[_0x6306('0x16')]));});});};exports[_0x6306('0x45')]=function(_0x159702){var _0x3fb153=this;return new Promise(function(_0x2fe8b9,_0x39dd2a){var _0x4eb6a9;var _0x3e4f88;var _0x1c722b;var _0x2eb30a;return db[_0x6306('0x22')][_0x6306('0x46')]({'where':_0x159702[_0x6306('0x19')][_0x6306('0x1a')]||{},'attributes':['id','name',_0x6306('0x27'),'mobile','phone','internal',_0x6306('0x47'),_0x6306('0x29')]})[_0x6306('0x10')](function(_0x171b6c){if(_0x171b6c){_0x4eb6a9=_0x171b6c;_0x2eb30a=_0x159702[_0x6306('0x34')]['interface']?_0x159702[_0x6306('0x34')][_0x6306('0x29')]:util[_0x6306('0x2e')](_0x6306('0x32'),_0x4eb6a9[_0x6306('0x26')]);return db[_0x6306('0x22')][_0x6306('0x48')]({'where':{'role':_0x6306('0x49'),'online':!![],'id':{'$ne':_0x4eb6a9['id']}}});}})[_0x6306('0x10')](function(_0x498705){if(_0x498705){_0x1c722b=_0x498705;return require(_0x6306('0x4a'))['getLicense']();}})[_0x6306('0x10')](function(_0x549119){if(_0x549119&&_0x549119['agents']&&_0x1c722b>=_0x549119[_0x6306('0x4b')]){throw new Error(_0x6306('0x4c'));}})[_0x6306('0x10')](function(){if(_0x4eb6a9){return db[_0x6306('0x2a')][_0x6306('0x43')]({'where':{'membername':_0x4eb6a9[_0x6306('0x26')]},'individualHooks':!![]});}})[_0x6306('0x10')](function(){if(_0x4eb6a9){return _0x4eb6a9[_0x6306('0x4d')]({'raw':!![]});}})['then'](function(_0x2228f6){if(_0x4eb6a9){if(_0x2228f6){var _0xe7a5c5=[];_0x3e4f88=_0x2228f6;if(_0x3e4f88['length']){for(var _0x3865c7=0x0;_0x3865c7<_0x3e4f88[_0x6306('0x2d')];_0x3865c7++){_0xe7a5c5[_0x6306('0x31')](db[_0x6306('0x2a')][_0x6306('0x4e')]({'membername':_0x4eb6a9['name'],'UserId':_0x4eb6a9['id'],'queue_name':_0x3e4f88[_0x3865c7][_0x6306('0x26')],'VoiceQueueId':_0x3e4f88[_0x3865c7]['id'],'interface':_0x2eb30a,'paused':_0x4eb6a9[_0x6306('0x47')]||![],'penalty':_0x3e4f88[_0x3865c7][_0x6306('0x4f')]||0x0}));}return BPromise[_0x6306('0x41')](_0xe7a5c5);}}}})[_0x6306('0x10')](function(){if(_0x4eb6a9){return db[_0x6306('0x2b')][_0x6306('0x2c')]({'where':{'membername':_0x4eb6a9[_0x6306('0x26')],'exitAt':null}});}})[_0x6306('0x10')](function(_0xbd0db3){if(_0x4eb6a9){if(_0xbd0db3&&_0xbd0db3[_0x6306('0x2d')]){var _0x1256e2=[];_0xbd0db3[_0x6306('0x44')](function(_0x449284){_0x1256e2[_0x6306('0x31')](_0x449284[_0x6306('0x37')]({'exitAt':moment()[_0x6306('0x2e')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x6306('0x41')](_0x1256e2);}}})['then'](function(_0x401dcb){if(_0x4eb6a9){var _0x39991e=[];var _0x114434=[];var _0x23b8c2=utils[_0x6306('0x50')]();var _0x2bd353={'membername':_0x4eb6a9[_0x6306('0x26')],'interface':_0x2eb30a,'enterAt':moment()[_0x6306('0x2e')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x4eb6a9['role'],'internal':_0x4eb6a9[_0x6306('0x28')]};_0x23b8c2[_0x6306('0x44')](function(_0x14640c){_0x39991e[_0x6306('0x31')](_[_0x6306('0x51')]({'channel':_0x14640c,'type':'LOGIN','data1':_0x6306('0x52'),'data2':_0x2eb30a},_0x2bd353));if(_0x4eb6a9['loginInPause']){_0x114434[_0x6306('0x31')](_[_0x6306('0x51')]({'channel':_0x14640c,'type':'PAUSE','data1':_0x6306('0x53')},_0x2bd353));}});return db[_0x6306('0x2b')][_0x6306('0x54')](_0x39991e['concat'](_0x114434),{'individualHooks':!![]});}})[_0x6306('0x10')](function(){if(_0x4eb6a9){return _0x4eb6a9[_0x6306('0x37')]({'online':!![],'lastLoginAt':moment()[_0x6306('0x2e')](_0x6306('0x2f')),'voicePause':_0x4eb6a9[_0x6306('0x47')]||![],'mailPause':_0x4eb6a9[_0x6306('0x47')]||![],'chatPause':_0x4eb6a9[_0x6306('0x47')]||![],'faxPause':_0x4eb6a9[_0x6306('0x47')]||![],'smsPause':_0x4eb6a9[_0x6306('0x47')]||![],'openchannelPause':_0x4eb6a9['loginInPause']||![],'pauseType':_0x4eb6a9[_0x6306('0x47')]?_0x6306('0x53'):null,'lastPauseAt':moment()[_0x6306('0x2e')](_0x6306('0x2f')),'interface':_0x2eb30a});}})[_0x6306('0x10')](function(_0x4ea6d1){_0x2fe8b9(_0x4ea6d1);})[_0x6306('0x18')](function(_0x8fa83){_0x39dd2a(_0x3fb153['error'](0x1f4,_0x8fa83[_0x6306('0x16')]));});});};
\ No newline at end of file
+var _0xf284=['forEach','push','isNil','SIP/%s','PAUSE','YYYY-MM-DD\x20HH:mm:ss','body','DEFAULT\x20PAUSE','uniqueid','update','type','channel','UserVoiceQueueRt','system','mail','chat','fax','sms','whatsapp','set','Pause','all','LogoutUser','findOne','LoginUser','mobile','loginInPause','count','agent','getLicense','agents','upsert','UserVoiceQueue.penalty','merge','callysquare','LOGININPAUSE','bulkCreate','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./user.socket','register','request','then','info','User,\x20%s,\x20%s','request\x20sent','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetUser','User','findAll','options','where','include','map','model','attributes','ShowUser','find','debug','PauseUser','role','internal','interface','MemberReport','name','length','format','updateAttributes'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xf284,0x7a));var _0x4f28=function(_0x2a70a9,_0x28b4){_0x2a70a9=_0x2a70a9-0x0;var _0x89b6a=_0xf284[_0x2a70a9];return _0x89b6a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x4f28('0x0'));var BPromise=require(_0x4f28('0x1'));var rs=require(_0x4f28('0x2'));var fs=require('fs');var Redis=require(_0x4f28('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x4f28('0x4'));var logger=require(_0x4f28('0x5'))(_0x4f28('0x6'));var config=require('../../config/environment');var jayson=require(_0x4f28('0x7'));var client=jayson[_0x4f28('0x8')]['http']({'port':0x232a});config[_0x4f28('0x9')]=_[_0x4f28('0xa')](config[_0x4f28('0x9')],{'host':_0x4f28('0xb'),'port':0x18eb});var socket=require(_0x4f28('0xc'))(new Redis(config[_0x4f28('0x9')]));require(_0x4f28('0xd'))[_0x4f28('0xe')](socket);function respondWithRpcPromise(_0x43cad6,_0x498587,_0x1a6588){return new BPromise(function(_0x1c7eb3,_0x139ce1){return client[_0x4f28('0xf')](_0x43cad6,_0x1a6588)[_0x4f28('0x10')](function(_0x46c958){logger[_0x4f28('0x11')](_0x4f28('0x12'),_0x498587,_0x4f28('0x13'));logger['debug'](_0x4f28('0x14'),_0x498587,_0x4f28('0x13'),JSON[_0x4f28('0x15')](_0x46c958));if(_0x46c958[_0x4f28('0x16')]){if(_0x46c958[_0x4f28('0x16')][_0x4f28('0x17')]===0x1f4){logger[_0x4f28('0x16')](_0x4f28('0x12'),_0x498587,_0x46c958[_0x4f28('0x16')][_0x4f28('0x18')]);return _0x139ce1(_0x46c958[_0x4f28('0x16')][_0x4f28('0x18')]);}logger[_0x4f28('0x16')]('User,\x20%s,\x20%s',_0x498587,_0x46c958['error']['message']);return _0x1c7eb3(_0x46c958['error'][_0x4f28('0x18')]);}else{logger[_0x4f28('0x11')]('User,\x20%s,\x20%s',_0x498587,_0x4f28('0x13'));_0x1c7eb3(_0x46c958[_0x4f28('0x19')][_0x4f28('0x18')]);}})[_0x4f28('0x1a')](function(_0x4fa5f5){logger[_0x4f28('0x16')]('User,\x20%s,\x20%s',_0x498587,_0x4fa5f5);_0x139ce1(_0x4fa5f5);});});}exports[_0x4f28('0x1b')]=function(_0x2d3cc6){var _0x131094=this;return new Promise(function(_0x4e2dcc,_0x7196e9){return db[_0x4f28('0x1c')][_0x4f28('0x1d')]({'raw':_0x2d3cc6[_0x4f28('0x1e')]?_0x2d3cc6[_0x4f28('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x2d3cc6[_0x4f28('0x1e')]?_0x2d3cc6[_0x4f28('0x1e')][_0x4f28('0x1f')]||null:null,'attributes':_0x2d3cc6[_0x4f28('0x1e')]?_0x2d3cc6[_0x4f28('0x1e')]['attributes']||null:null,'limit':_0x2d3cc6[_0x4f28('0x1e')]?_0x2d3cc6[_0x4f28('0x1e')]['limit']||null:null,'include':_0x2d3cc6['options']?_0x2d3cc6['options'][_0x4f28('0x20')]?_[_0x4f28('0x21')](_0x2d3cc6[_0x4f28('0x1e')][_0x4f28('0x20')],function(_0x12c965){return{'model':db[_0x12c965[_0x4f28('0x22')]],'as':_0x12c965['as'],'attributes':_0x12c965[_0x4f28('0x23')],'include':_0x12c965[_0x4f28('0x20')]?_['map'](_0x12c965[_0x4f28('0x20')],function(_0x137a70){return{'model':db[_0x137a70[_0x4f28('0x22')]],'as':_0x137a70['as'],'attributes':_0x137a70[_0x4f28('0x23')],'include':_0x137a70[_0x4f28('0x20')]?_[_0x4f28('0x21')](_0x137a70[_0x4f28('0x20')],function(_0x431f5e){return{'model':db[_0x431f5e['model']],'as':_0x431f5e['as'],'attributes':_0x431f5e[_0x4f28('0x23')]};}):[]};}):[]};}):[]:[]})[_0x4f28('0x10')](function(_0x5cb40c){logger[_0x4f28('0x11')](_0x4f28('0x1b'),_0x2d3cc6);logger['debug'](_0x4f28('0x1b'),_0x2d3cc6,JSON[_0x4f28('0x15')](_0x5cb40c));_0x4e2dcc(_0x5cb40c);})['catch'](function(_0x1e2edc){logger[_0x4f28('0x16')](_0x4f28('0x1b'),_0x1e2edc['message'],_0x2d3cc6);_0x7196e9(_0x131094[_0x4f28('0x16')](0x1f4,_0x1e2edc['message']));});});};exports[_0x4f28('0x24')]=function(_0x1d84c2){var _0x1e6e06=this;return new Promise(function(_0x4e4eb3,_0x44691f){return db[_0x4f28('0x1c')][_0x4f28('0x25')]({'raw':_0x1d84c2[_0x4f28('0x1e')]?_0x1d84c2[_0x4f28('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x1d84c2['options']?_0x1d84c2['options'][_0x4f28('0x1f')]||null:null,'attributes':_0x1d84c2[_0x4f28('0x1e')]?_0x1d84c2['options'][_0x4f28('0x23')]||null:null,'include':_0x1d84c2[_0x4f28('0x1e')]?_0x1d84c2[_0x4f28('0x1e')]['include']?_[_0x4f28('0x21')](_0x1d84c2[_0x4f28('0x1e')]['include'],function(_0x3fb5ed){return{'model':db[_0x3fb5ed[_0x4f28('0x22')]],'as':_0x3fb5ed['as'],'attributes':_0x3fb5ed['attributes'],'include':_0x3fb5ed[_0x4f28('0x20')]?_[_0x4f28('0x21')](_0x3fb5ed[_0x4f28('0x20')],function(_0x28747d){return{'model':db[_0x28747d['model']],'as':_0x28747d['as'],'attributes':_0x28747d[_0x4f28('0x23')],'include':_0x28747d[_0x4f28('0x20')]?_[_0x4f28('0x21')](_0x28747d['include'],function(_0x2fed32){return{'model':db[_0x2fed32[_0x4f28('0x22')]],'as':_0x2fed32['as'],'attributes':_0x2fed32['attributes']};}):[]};}):[]};}):[]:[]})[_0x4f28('0x10')](function(_0x1d1706){logger[_0x4f28('0x11')](_0x4f28('0x24'),_0x1d84c2);logger[_0x4f28('0x26')](_0x4f28('0x24'),_0x1d84c2,JSON[_0x4f28('0x15')](_0x1d1706));_0x4e4eb3(_0x1d1706);})[_0x4f28('0x1a')](function(_0x28cb3c){logger[_0x4f28('0x16')]('ShowUser',_0x28cb3c[_0x4f28('0x18')],_0x1d84c2);_0x44691f(_0x1e6e06[_0x4f28('0x16')](0x1f4,_0x28cb3c[_0x4f28('0x18')]));});});};exports[_0x4f28('0x27')]=function(_0x23db68){var _0x5023a9=this;return new Promise(function(_0x4a4319,_0x44a387){var _0x46f8bc;return db[_0x4f28('0x1c')]['find']({'where':_0x23db68[_0x4f28('0x1e')][_0x4f28('0x1f')]||{},'attributes':['id','name',_0x4f28('0x28'),_0x4f28('0x29'),_0x4f28('0x2a')]})[_0x4f28('0x10')](function(_0x366c3b){if(_0x366c3b){_0x46f8bc=_0x366c3b;return db['UserVoiceQueueRt']['update']({'paused':0x1},{'where':{'UserId':_0x46f8bc['id']},'individualHooks':!![]});}})[_0x4f28('0x10')](function(){if(_0x46f8bc){return db[_0x4f28('0x2b')][_0x4f28('0x1d')]({'where':{'membername':_0x46f8bc[_0x4f28('0x2c')],'type':'PAUSE','exitAt':null}});}})[_0x4f28('0x10')](function(_0x5994ef){if(_0x46f8bc){if(_0x5994ef&&_0x5994ef[_0x4f28('0x2d')]){var _0x4fc2be=moment()[_0x4f28('0x2e')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x319991=0x0,_0x2cd6fe=_0x5994ef['length'];_0x319991<_0x2cd6fe;_0x319991++){_0x5994ef[_0x319991][_0x4f28('0x2f')]({'exitAt':_0x4fc2be});}}}})['then'](function(){if(_0x46f8bc){var _0x5b9365=[];var _0x49406f=utils['getChannels']();_0x49406f[_0x4f28('0x30')](function(_0x224fbd){_0x5b9365[_0x4f28('0x31')]({'channel':_0x224fbd,'membername':_0x46f8bc[_0x4f28('0x2c')],'interface':_[_0x4f28('0x32')](_0x46f8bc[_0x4f28('0x2a')])?util[_0x4f28('0x2e')](_0x4f28('0x33'),_0x46f8bc[_0x4f28('0x2c')]):_0x46f8bc[_0x4f28('0x2a')],'type':_0x4f28('0x34'),'enterAt':moment()[_0x4f28('0x2e')](_0x4f28('0x35')),'data1':_0x23db68[_0x4f28('0x36')]['type']||_0x4f28('0x37'),'role':_0x46f8bc[_0x4f28('0x28')],'internal':_0x46f8bc[_0x4f28('0x29')],'uniqueid':_0x23db68[_0x4f28('0x36')][_0x4f28('0x38')]||null});});return db[_0x4f28('0x2b')]['bulkCreate'](_0x5b9365,{'individualHooks':!![]});}})[_0x4f28('0x10')](function(){if(_0x46f8bc){return _0x46f8bc[_0x4f28('0x39')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x23db68[_0x4f28('0x36')][_0x4f28('0x3a')]||_0x4f28('0x37'),'lastPauseAt':moment()[_0x4f28('0x2e')](_0x4f28('0x35'))});}})[_0x4f28('0x10')](function(_0x2e6122){_0x4a4319(_0x2e6122);})['catch'](function(_0x11fe81){_0x44a387(_0x5023a9['error'](0x1f4,_0x11fe81['message']));});});};exports['UnpauseUser']=function(_0x286a34){var _0x4a9b65=this;return new Promise(function(_0x28f427,_0x301dda){var _0x4a3d06;return db[_0x4f28('0x1c')]['findOne']({'where':_0x286a34[_0x4f28('0x1e')]['where']||{},'attributes':['id','name']})[_0x4f28('0x10')](function(_0x48d7f5){if(_0x48d7f5){_0x4a3d06=_0x48d7f5;if(_0x286a34[_0x4f28('0x36')]['channel']&&!utils['isValidChannel'](_0x286a34[_0x4f28('0x36')][_0x4f28('0x3b')])){throw new Error('Unknown\x20channel');}switch(_0x286a34[_0x4f28('0x36')][_0x4f28('0x3b')]){case'voice':return db[_0x4f28('0x3c')][_0x4f28('0x39')]({'paused':0x0},{'where':{'UserId':_0x4a3d06['id']}})[_0x4f28('0x10')](function(){return db['MemberReport'][_0x4f28('0x25')]({'where':{'channel':_0x286a34[_0x4f28('0x36')]['channel'],'membername':_0x4a3d06[_0x4f28('0x2c')],'type':'PAUSE','exitAt':null}});})[_0x4f28('0x10')](function(_0x5a2d47){if(_0x5a2d47){return _0x5a2d47['update']({'exitAt':moment()[_0x4f28('0x2e')](_0x4f28('0x35')),'data2':_0x4f28('0x3d')},{'individualHooks':!![]});}return null;})[_0x4f28('0x10')](function(){return _0x4a3d06[_0x4f28('0x39')]({'voicePause':![]});});case _0x4f28('0x3e'):case _0x4f28('0x3f'):case _0x4f28('0x40'):case _0x4f28('0x41'):case'openchannel':case _0x4f28('0x42'):return db[_0x4f28('0x2b')]['find']({'where':{'channel':_0x286a34['body'][_0x4f28('0x3b')],'membername':_0x4a3d06[_0x4f28('0x2c')],'type':'PAUSE','exitAt':null}})[_0x4f28('0x10')](function(_0x255725){return _0x255725[_0x4f28('0x39')]({'exitAt':moment()[_0x4f28('0x2e')](_0x4f28('0x35')),'data2':_0x4f28('0x3d')},{'individualHooks':!![]});})[_0x4f28('0x10')](function(){var _0x415e98={};_[_0x4f28('0x43')](_0x415e98,util[_0x4f28('0x2e')]('%s%s',_0x286a34['body'][_0x4f28('0x3b')],_0x4f28('0x44')),![]);return _0x4a3d06[_0x4f28('0x39')](_0x415e98);});default:return db['UserVoiceQueueRt'][_0x4f28('0x39')]({'paused':0x0},{'where':{'UserId':_0x4a3d06['id']}})['then'](function(){return db['MemberReport'][_0x4f28('0x1d')]({'where':{'membername':_0x4a3d06[_0x4f28('0x2c')],'type':_0x4f28('0x34'),'exitAt':null}});})[_0x4f28('0x10')](function(_0x38ad97){var _0x4ba07f=[];_0x38ad97['forEach'](function(_0x5e25a4){_0x4ba07f['push'](_0x5e25a4[_0x4f28('0x39')]({'exitAt':moment()[_0x4f28('0x2e')](_0x4f28('0x35')),'data2':_0x4f28('0x3d')}));});return BPromise[_0x4f28('0x45')](_0x4ba07f);})[_0x4f28('0x10')](function(){return _0x4a3d06[_0x4f28('0x39')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0x4f28('0x10')](function(_0x177fa0){_0x28f427(_0x177fa0);})['catch'](function(_0x4a1121){_0x301dda(_0x4a9b65[_0x4f28('0x16')](0x1f4,_0x4a1121[_0x4f28('0x18')]));});});};exports[_0x4f28('0x46')]=function(_0x2161d5){var _0x2b1996=this;return new Promise(function(_0x2e5dee,_0x4c8132){var _0x3eaa0e;return db['User'][_0x4f28('0x47')]({'where':_0x2161d5[_0x4f28('0x1e')]['where']||{},'attributes':['id',_0x4f28('0x2c')]})['then'](function(_0x14c075){if(_0x14c075){_0x3eaa0e=_0x14c075;return db[_0x4f28('0x3c')]['destroy']({'where':{'membername':_0x3eaa0e[_0x4f28('0x2c')]},'individualHooks':!![]});}})[_0x4f28('0x10')](function(){if(_0x3eaa0e){return db[_0x4f28('0x2b')][_0x4f28('0x1d')]({'where':{'membername':_0x3eaa0e[_0x4f28('0x2c')],'exitAt':null}});}})[_0x4f28('0x10')](function(_0x543059){if(_0x3eaa0e){if(_0x543059&&_0x543059[_0x4f28('0x2d')]){var _0x4ea384=[];_0x543059[_0x4f28('0x30')](function(_0x4aa779){_0x4ea384[_0x4f28('0x31')](_0x4aa779[_0x4f28('0x39')]({'exitAt':moment()[_0x4f28('0x2e')](_0x4f28('0x35'))}));});return BPromise[_0x4f28('0x45')](_0x4ea384);}}})[_0x4f28('0x10')](function(){if(_0x3eaa0e){return _0x3eaa0e[_0x4f28('0x39')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x4f28('0x10')](function(_0xb6cf5c){_0x2e5dee(_0xb6cf5c);})[_0x4f28('0x1a')](function(_0x52da4c){_0x4c8132(_0x2b1996[_0x4f28('0x16')](0x1f4,_0x52da4c[_0x4f28('0x18')]));});});};exports[_0x4f28('0x48')]=function(_0x49d513){var _0x291c1d=this;return new Promise(function(_0x126283,_0x598e4c){var _0x2a835a;var _0x432202;var _0x15eb1c;var _0x3686a4;return db[_0x4f28('0x1c')]['findOne']({'where':_0x49d513[_0x4f28('0x1e')][_0x4f28('0x1f')]||{},'attributes':['id',_0x4f28('0x2c'),'role',_0x4f28('0x49'),'phone',_0x4f28('0x29'),_0x4f28('0x4a'),_0x4f28('0x2a')]})[_0x4f28('0x10')](function(_0x3d9366){if(_0x3d9366){_0x2a835a=_0x3d9366;_0x3686a4=_0x49d513[_0x4f28('0x36')][_0x4f28('0x2a')]?_0x49d513['body'][_0x4f28('0x2a')]:util[_0x4f28('0x2e')]('SIP/%s',_0x2a835a[_0x4f28('0x2c')]);return db[_0x4f28('0x1c')][_0x4f28('0x4b')]({'where':{'role':_0x4f28('0x4c'),'online':!![],'id':{'$ne':_0x2a835a['id']}}});}})[_0x4f28('0x10')](function(_0x1ab5cb){if(_0x1ab5cb){_0x15eb1c=_0x1ab5cb;return require('../../config/license/util')[_0x4f28('0x4d')]();}})[_0x4f28('0x10')](function(_0x3eb589){if(_0x3eb589&&_0x3eb589[_0x4f28('0x4e')]&&_0x15eb1c>=_0x3eb589[_0x4f28('0x4e')]){throw new Error('Maximum\x20login\x20has\x20been\x20reached');}})['then'](function(){if(_0x2a835a){return db[_0x4f28('0x3c')]['destroy']({'where':{'membername':_0x2a835a[_0x4f28('0x2c')]},'individualHooks':!![]});}})['then'](function(){if(_0x2a835a){return _0x2a835a['getVoiceQueues']({'raw':!![]});}})[_0x4f28('0x10')](function(_0x301fac){if(_0x2a835a){if(_0x301fac){var _0x2fe8f2=[];_0x432202=_0x301fac;if(_0x432202[_0x4f28('0x2d')]){for(var _0x3abd73=0x0;_0x3abd73<_0x432202['length'];_0x3abd73++){_0x2fe8f2[_0x4f28('0x31')](db[_0x4f28('0x3c')][_0x4f28('0x4f')]({'membername':_0x2a835a[_0x4f28('0x2c')],'UserId':_0x2a835a['id'],'queue_name':_0x432202[_0x3abd73][_0x4f28('0x2c')],'VoiceQueueId':_0x432202[_0x3abd73]['id'],'interface':_0x3686a4,'paused':_0x2a835a[_0x4f28('0x4a')]||![],'penalty':_0x432202[_0x3abd73][_0x4f28('0x50')]||0x0}));}return BPromise[_0x4f28('0x45')](_0x2fe8f2);}}}})['then'](function(){if(_0x2a835a){return db['MemberReport'][_0x4f28('0x1d')]({'where':{'membername':_0x2a835a[_0x4f28('0x2c')],'exitAt':null}});}})[_0x4f28('0x10')](function(_0x46c2ba){if(_0x2a835a){if(_0x46c2ba&&_0x46c2ba[_0x4f28('0x2d')]){var _0x5bbfc9=[];_0x46c2ba['forEach'](function(_0x4592a9){_0x5bbfc9[_0x4f28('0x31')](_0x4592a9[_0x4f28('0x39')]({'exitAt':moment()['format'](_0x4f28('0x35'))}));});return BPromise['all'](_0x5bbfc9);}}})[_0x4f28('0x10')](function(_0x388df1){if(_0x2a835a){var _0xdf617b=[];var _0x17d034=[];var _0x4111f8=utils['getChannels']();var _0x3acb77={'membername':_0x2a835a['name'],'interface':_0x3686a4,'enterAt':moment()[_0x4f28('0x2e')](_0x4f28('0x35')),'role':_0x2a835a['role'],'internal':_0x2a835a[_0x4f28('0x29')]};_0x4111f8[_0x4f28('0x30')](function(_0x11627a){_0xdf617b['push'](_[_0x4f28('0x51')]({'channel':_0x11627a,'type':'LOGIN','data1':_0x4f28('0x52'),'data2':_0x3686a4},_0x3acb77));if(_0x2a835a[_0x4f28('0x4a')]){_0x17d034['push'](_[_0x4f28('0x51')]({'channel':_0x11627a,'type':_0x4f28('0x34'),'data1':_0x4f28('0x53')},_0x3acb77));}});return db[_0x4f28('0x2b')][_0x4f28('0x54')](_0xdf617b['concat'](_0x17d034),{'individualHooks':!![]});}})[_0x4f28('0x10')](function(){if(_0x2a835a){return _0x2a835a[_0x4f28('0x39')]({'online':!![],'lastLoginAt':moment()[_0x4f28('0x2e')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x2a835a[_0x4f28('0x4a')]||![],'mailPause':_0x2a835a['loginInPause']||![],'chatPause':_0x2a835a[_0x4f28('0x4a')]||![],'faxPause':_0x2a835a[_0x4f28('0x4a')]||![],'smsPause':_0x2a835a[_0x4f28('0x4a')]||![],'openchannelPause':_0x2a835a[_0x4f28('0x4a')]||![],'pauseType':_0x2a835a[_0x4f28('0x4a')]?_0x4f28('0x53'):null,'lastPauseAt':moment()[_0x4f28('0x2e')](_0x4f28('0x35')),'interface':_0x3686a4});}})[_0x4f28('0x10')](function(_0x5ad1b9){_0x126283(_0x5ad1b9);})['catch'](function(_0x57a384){_0x598e4c(_0x291c1d[_0x4f28('0x16')](0x1f4,_0x57a384[_0x4f28('0x18')]));});});};
\ No newline at end of file
index 838514c..f83aea4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb243=['./user.events','remove','update','emit','removeListener','register','length','user:'];(function(_0x482236,_0x230bac){var _0x493b6d=function(_0x31182b){while(--_0x31182b){_0x482236['push'](_0x482236['shift']());}};_0x493b6d(++_0x230bac);}(_0xb243,0x198));var _0x3b24=function(_0x1895e8,_0x4f4d2f){_0x1895e8=_0x1895e8-0x0;var _0x1d8fd3=_0xb243[_0x1895e8];return _0x1d8fd3;};'use strict';var UserEvents=require(_0x3b24('0x0'));var events=['save',_0x3b24('0x1'),_0x3b24('0x2')];function createListener(_0x492d22,_0xbb544b){return function(_0xc7a75){_0xbb544b[_0x3b24('0x3')](_0x492d22,_0xc7a75);};}function removeListener(_0x374ca2,_0x1b7b24){return function(){UserEvents[_0x3b24('0x4')](_0x374ca2,_0x1b7b24);};}exports[_0x3b24('0x5')]=function(_0x37d911){for(var _0x3e1f66=0x0,_0x29a180=events[_0x3b24('0x6')];_0x3e1f66<_0x29a180;_0x3e1f66++){var _0x5846d8=events[_0x3e1f66];var _0x3eeec0=createListener(_0x3b24('0x7')+_0x5846d8,_0x37d911);UserEvents['on'](_0x5846d8,_0x3eeec0);}};
\ No newline at end of file
+var _0x0214=['removeListener','length','user:','./user.events','save','update','emit'];(function(_0x663d90,_0xab54e3){var _0x105308=function(_0x1d9020){while(--_0x1d9020){_0x663d90['push'](_0x663d90['shift']());}};_0x105308(++_0xab54e3);}(_0x0214,0x1ed));var _0x4021=function(_0x236912,_0x4167cd){_0x236912=_0x236912-0x0;var _0x582904=_0x0214[_0x236912];return _0x582904;};'use strict';var UserEvents=require(_0x4021('0x0'));var events=[_0x4021('0x1'),'remove',_0x4021('0x2')];function createListener(_0x5776d2,_0x16fc56){return function(_0x1d8542){_0x16fc56[_0x4021('0x3')](_0x5776d2,_0x1d8542);};}function removeListener(_0x309aaf,_0x5e4b2e){return function(){UserEvents[_0x4021('0x4')](_0x309aaf,_0x5e4b2e);};}exports['register']=function(_0x10b388){for(var _0x5cb94f=0x0,_0x1406c6=events[_0x4021('0x5')];_0x5cb94f<_0x1406c6;_0x5cb94f++){var _0x4da88b=events[_0x5cb94f];var _0x2f4fc8=createListener(_0x4021('0x6')+_0x4da88b,_0x10b388);UserEvents['on'](_0x4da88b,_0x2f4fc8);}};
\ No newline at end of file
index c80bd4e..59d6d55 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(_0x74f73,_0x2acc98){var _0x3827c2=function(_0x22acbf){while(--_0x22acbf){_0x74f73['push'](_0x74f73['shift']());}};_0x3827c2(++_0x2acc98);}(_0x9c44,0x178));var _0x49c4=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0x9c44[_0x273c39];return _0x46d6b5;};'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 _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x347aab,_0x70f5f8){var _0x45d493=function(_0x528dd6){while(--_0x528dd6){_0x347aab['push'](_0x347aab['shift']());}};_0x45d493(++_0x70f5f8);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x35d775,_0x25431e){_0x35d775=_0x35d775-0x0;var _0x59384d=_0xcb91[_0x35d775];return _0x59384d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
index a58bdca..00e432a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf1d=['sequelize'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xaf1d,0x116));var _0xdaf1=function(_0x167be6,_0x209e71){_0x167be6=_0x167be6-0x0;var _0x159144=_0xaf1d[_0x167be6];return _0x159144;};'use strict';var Sequelize=require(_0xdaf1('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x4dd1=['sequelize','INTEGER'];(function(_0x4bce2d,_0x29dbb1){var _0x44f2ba=function(_0x2b99d2){while(--_0x2b99d2){_0x4bce2d['push'](_0x4bce2d['shift']());}};_0x44f2ba(++_0x29dbb1);}(_0x4dd1,0xb0));var _0x14dd=function(_0x305cca,_0x2dc9bb){_0x305cca=_0x305cca-0x0;var _0x2db8c5=_0x4dd1[_0x305cca];return _0x2db8c5;};'use strict';var Sequelize=require(_0x14dd('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x14dd('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 467832e..b4a6475 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7610=['../../config/logger','api','request-promise','path','rimraf','../../config/environment','./userChatQueue.attributes','exports','UserChatQueue','user_has_chat_queues','lodash','util'];(function(_0x359c75,_0x78fd81){var _0x57a6b7=function(_0xbb7f7f){while(--_0xbb7f7f){_0x359c75['push'](_0x359c75['shift']());}};_0x57a6b7(++_0x78fd81);}(_0x7610,0x17e));var _0x0761=function(_0x2998ef,_0x42bb6c){_0x2998ef=_0x2998ef-0x0;var _0x194a75=_0x7610[_0x2998ef];return _0x194a75;};'use strict';var _=require(_0x0761('0x0'));var util=require(_0x0761('0x1'));var logger=require(_0x0761('0x2'))(_0x0761('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x0761('0x4'));var fs=require('fs');var path=require(_0x0761('0x5'));var rimraf=require(_0x0761('0x6'));var config=require(_0x0761('0x7'));var attributes=require(_0x0761('0x8'));module[_0x0761('0x9')]=function(_0x665657,_0x3298e9){return _0x665657['define'](_0x0761('0xa'),attributes,{'tableName':_0x0761('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x773a=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userChatQueue.attributes','exports','define','UserChatQueue','user_has_chat_queues','lodash','util'];(function(_0x1cd94e,_0x34f15e){var _0x1f2dad=function(_0x76e73d){while(--_0x76e73d){_0x1cd94e['push'](_0x1cd94e['shift']());}};_0x1f2dad(++_0x34f15e);}(_0x773a,0xfd));var _0xa773=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x773a[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xa773('0x0'));var util=require(_0xa773('0x1'));var logger=require(_0xa773('0x2'))(_0xa773('0x3'));var moment=require(_0xa773('0x4'));var BPromise=require(_0xa773('0x5'));var rp=require(_0xa773('0x6'));var fs=require('fs');var path=require(_0xa773('0x7'));var rimraf=require(_0xa773('0x8'));var config=require(_0xa773('0x9'));var attributes=require(_0xa773('0xa'));module[_0xa773('0xb')]=function(_0x559c05,_0x121a9d){return _0x559c05[_0xa773('0xc')](_0xa773('0xd'),attributes,{'tableName':_0xa773('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1de6dad..5766598 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf34=['../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','moment','../../mysqldb'];(function(_0x412bcd,_0x1d3a25){var _0x1caeee=function(_0x532a1b){while(--_0x532a1b){_0x412bcd['push'](_0x412bcd['shift']());}};_0x1caeee(++_0x1d3a25);}(_0xdf34,0x95));var _0x4df3=function(_0x58f5f0,_0x3298c5){_0x58f5f0=_0x58f5f0-0x0;var _0x4ae70d=_0xdf34[_0x58f5f0];return _0x4ae70d;};'use strict';var _=require(_0x4df3('0x0'));var util=require('util');var moment=require(_0x4df3('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4df3('0x2'))['db'];var utils=require(_0x4df3('0x3'));var logger=require(_0x4df3('0x4'))(_0x4df3('0x5'));var config=require(_0x4df3('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x4df3('0x7')][_0x4df3('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3e09a2,_0x1b0f5e,_0x522152){return new BPromise(function(_0x5c799a,_0x5c13b4){return client[_0x4df3('0x9')](_0x3e09a2,_0x522152)[_0x4df3('0xa')](function(_0x5103a4){logger[_0x4df3('0xb')](_0x4df3('0xc'),_0x1b0f5e,_0x4df3('0xd'));logger['debug']('UserChatQueue,\x20%s,\x20%s,\x20%s',_0x1b0f5e,_0x4df3('0xd'),JSON[_0x4df3('0xe')](_0x5103a4));if(_0x5103a4[_0x4df3('0xf')]){if(_0x5103a4[_0x4df3('0xf')]['code']===0x1f4){logger[_0x4df3('0xf')](_0x4df3('0xc'),_0x1b0f5e,_0x5103a4[_0x4df3('0xf')][_0x4df3('0x10')]);return _0x5c13b4(_0x5103a4[_0x4df3('0xf')][_0x4df3('0x10')]);}logger[_0x4df3('0xf')](_0x4df3('0xc'),_0x1b0f5e,_0x5103a4[_0x4df3('0xf')][_0x4df3('0x10')]);return _0x5c799a(_0x5103a4['error'][_0x4df3('0x10')]);}else{logger[_0x4df3('0xb')](_0x4df3('0xc'),_0x1b0f5e,_0x4df3('0xd'));_0x5c799a(_0x5103a4[_0x4df3('0x11')][_0x4df3('0x10')]);}})[_0x4df3('0x12')](function(_0x50301b){logger[_0x4df3('0xf')](_0x4df3('0xc'),_0x1b0f5e,_0x50301b);_0x5c13b4(_0x50301b);});});}
\ No newline at end of file
+var _0x5281=['debug','UserChatQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','UserChatQueue,\x20%s,\x20%s','request\x20sent'];(function(_0x14ed4e,_0x3dcf54){var _0x5c3d8a=function(_0x284a91){while(--_0x284a91){_0x14ed4e['push'](_0x14ed4e['shift']());}};_0x5c3d8a(++_0x3dcf54);}(_0x5281,0x149));var _0x1528=function(_0x5513a2,_0x468444){_0x5513a2=_0x5513a2-0x0;var _0x2374a5=_0x5281[_0x5513a2];return _0x2374a5;};'use strict';var _=require('lodash');var util=require(_0x1528('0x0'));var moment=require(_0x1528('0x1'));var BPromise=require(_0x1528('0x2'));var rs=require(_0x1528('0x3'));var fs=require('fs');var Redis=require(_0x1528('0x4'));var db=require(_0x1528('0x5'))['db'];var utils=require(_0x1528('0x6'));var logger=require(_0x1528('0x7'))(_0x1528('0x8'));var config=require(_0x1528('0x9'));var jayson=require(_0x1528('0xa'));var client=jayson['client'][_0x1528('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x429bb9,_0x21dd13,_0x31bf4b){return new BPromise(function(_0x1b2260,_0x1576f4){return client[_0x1528('0xc')](_0x429bb9,_0x31bf4b)['then'](function(_0x179b8f){logger[_0x1528('0xd')](_0x1528('0xe'),_0x21dd13,_0x1528('0xf'));logger[_0x1528('0x10')](_0x1528('0x11'),_0x21dd13,_0x1528('0xf'),JSON['stringify'](_0x179b8f));if(_0x179b8f[_0x1528('0x12')]){if(_0x179b8f[_0x1528('0x12')][_0x1528('0x13')]===0x1f4){logger['error'](_0x1528('0xe'),_0x21dd13,_0x179b8f[_0x1528('0x12')][_0x1528('0x14')]);return _0x1576f4(_0x179b8f[_0x1528('0x12')][_0x1528('0x14')]);}logger[_0x1528('0x12')](_0x1528('0xe'),_0x21dd13,_0x179b8f[_0x1528('0x12')]['message']);return _0x1b2260(_0x179b8f['error'][_0x1528('0x14')]);}else{logger['info'](_0x1528('0xe'),_0x21dd13,_0x1528('0xf'));_0x1b2260(_0x179b8f[_0x1528('0x15')]['message']);}})[_0x1528('0x16')](function(_0x13e500){logger[_0x1528('0x12')](_0x1528('0xe'),_0x21dd13,_0x13e500);_0x1576f4(_0x13e500);});});}
\ No newline at end of file
index 43a6aea..4030d6c 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(_0x1da72c,_0x15d2e9){var _0x58d9e7=function(_0x1487e3){while(--_0x1487e3){_0x1da72c['push'](_0x1da72c['shift']());}};_0x58d9e7(++_0x15d2e9);}(_0x9c44,0x178));var _0x49c4=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0x9c44[_0x18ab2a];return _0x16dcee;};'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 _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x314ccb,_0x38886e){var _0x257b48=function(_0x381cf7){while(--_0x381cf7){_0x314ccb['push'](_0x314ccb['shift']());}};_0x257b48(++_0x38886e);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
index f1769d3..ab89834 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6644=['sequelize','exports','INTEGER','STRING'];(function(_0x912d27,_0x28e0e3){var _0x31b918=function(_0x1882f7){while(--_0x1882f7){_0x912d27['push'](_0x912d27['shift']());}};_0x31b918(++_0x28e0e3);}(_0x6644,0x160));var _0x4664=function(_0x268a98,_0x30ce7d){_0x268a98=_0x268a98-0x0;var _0x831465=_0x6644[_0x268a98];return _0x831465;};'use strict';var Sequelize=require(_0x4664('0x0'));module[_0x4664('0x1')]={'penalty':{'type':Sequelize[_0x4664('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x4664('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x4664('0x3')]}};
\ No newline at end of file
+var _0x601a=['INTEGER','STRING','sequelize','exports'];(function(_0x4d10e3,_0x5255df){var _0x81793f=function(_0x3b57f3){while(--_0x3b57f3){_0x4d10e3['push'](_0x4d10e3['shift']());}};_0x81793f(++_0x5255df);}(_0x601a,0x10a));var _0xa601=function(_0x456860,_0xae925c){_0x456860=_0x456860-0x0;var _0x23667c=_0x601a[_0x456860];return _0x23667c;};'use strict';var Sequelize=require(_0xa601('0x0'));module[_0xa601('0x1')]={'penalty':{'type':Sequelize[_0xa601('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xa601('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0xa601('0x3')]}};
\ No newline at end of file
index 27c7b8c..a696231 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc202=['../../config/environment','define','UserFaxQueue','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x55c110,_0x2c79e2){var _0x5c40ba=function(_0x593686){while(--_0x593686){_0x55c110['push'](_0x55c110['shift']());}};_0x5c40ba(++_0x2c79e2);}(_0xc202,0x1ed));var _0x2c20=function(_0x3d5e8d,_0x3fac80){_0x3d5e8d=_0x3d5e8d-0x0;var _0x25307f=_0xc202[_0x3d5e8d];return _0x25307f;};'use strict';var _=require(_0x2c20('0x0'));var util=require('util');var logger=require(_0x2c20('0x1'))(_0x2c20('0x2'));var moment=require(_0x2c20('0x3'));var BPromise=require(_0x2c20('0x4'));var rp=require(_0x2c20('0x5'));var fs=require('fs');var path=require(_0x2c20('0x6'));var rimraf=require('rimraf');var config=require(_0x2c20('0x7'));var attributes=require('./userFaxQueue.attributes');module['exports']=function(_0x28beae,_0x27467a){return _0x28beae[_0x2c20('0x8')](_0x2c20('0x9'),attributes,{'tableName':'user_has_fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x75f2=['UserFaxQueue','user_has_fax_queues','../../config/logger','api','moment','request-promise','rimraf','./userFaxQueue.attributes','define'];(function(_0x4dfb4a,_0x51d3e4){var _0x22b4e7=function(_0x18e08d){while(--_0x18e08d){_0x4dfb4a['push'](_0x4dfb4a['shift']());}};_0x22b4e7(++_0x51d3e4);}(_0x75f2,0x122));var _0x275f=function(_0x3cc24b,_0x5a928c){_0x3cc24b=_0x3cc24b-0x0;var _0x3370cc=_0x75f2[_0x3cc24b];return _0x3370cc;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x275f('0x0'))(_0x275f('0x1'));var moment=require(_0x275f('0x2'));var BPromise=require('bluebird');var rp=require(_0x275f('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x275f('0x4'));var config=require('../../config/environment');var attributes=require(_0x275f('0x5'));module['exports']=function(_0x17c146,_0x3393e1){return _0x17c146[_0x275f('0x6')](_0x275f('0x7'),attributes,{'tableName':_0x275f('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6310eae..fefc7e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fa7=['http','request','then','UserFaxQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','UserFaxQueue,\x20%s,\x20%s','message','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x11b740,_0x35701f){var _0x4a325a=function(_0x35a7f3){while(--_0x35a7f3){_0x11b740['push'](_0x11b740['shift']());}};_0x4a325a(++_0x35701f);}(_0x8fa7,0x97));var _0x78fa=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0x8fa7[_0x2576d7];return _0x16a08c;};'use strict';var _=require('lodash');var util=require(_0x78fa('0x0'));var moment=require(_0x78fa('0x1'));var BPromise=require(_0x78fa('0x2'));var rs=require(_0x78fa('0x3'));var fs=require('fs');var Redis=require(_0x78fa('0x4'));var db=require(_0x78fa('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x78fa('0x6'))(_0x78fa('0x7'));var config=require(_0x78fa('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x78fa('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2c68dd,_0x5f284c,_0x155e63){return new BPromise(function(_0x161a79,_0x4ca8ad){return client[_0x78fa('0xa')](_0x2c68dd,_0x155e63)[_0x78fa('0xb')](function(_0x57ed78){logger['info']('UserFaxQueue,\x20%s,\x20%s',_0x5f284c,'request\x20sent');logger['debug'](_0x78fa('0xc'),_0x5f284c,_0x78fa('0xd'),JSON[_0x78fa('0xe')](_0x57ed78));if(_0x57ed78[_0x78fa('0xf')]){if(_0x57ed78[_0x78fa('0xf')][_0x78fa('0x10')]===0x1f4){logger[_0x78fa('0xf')](_0x78fa('0x11'),_0x5f284c,_0x57ed78[_0x78fa('0xf')][_0x78fa('0x12')]);return _0x4ca8ad(_0x57ed78[_0x78fa('0xf')]['message']);}logger[_0x78fa('0xf')](_0x78fa('0x11'),_0x5f284c,_0x57ed78[_0x78fa('0xf')][_0x78fa('0x12')]);return _0x161a79(_0x57ed78['error']['message']);}else{logger['info'](_0x78fa('0x11'),_0x5f284c,_0x78fa('0xd'));_0x161a79(_0x57ed78[_0x78fa('0x13')][_0x78fa('0x12')]);}})['catch'](function(_0x4ccc87){logger[_0x78fa('0xf')](_0x78fa('0x11'),_0x5f284c,_0x4ccc87);_0x4ca8ad(_0x4ccc87);});});}
\ No newline at end of file
+var _0x9dfe=['../../config/logger','rpc','../../config/environment','client','http','request','then','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','../../mysqldb','../../config/utils'];(function(_0x1f07db,_0x5e977c){var _0x3209d1=function(_0x1ca455){while(--_0x1ca455){_0x1f07db['push'](_0x1f07db['shift']());}};_0x3209d1(++_0x5e977c);}(_0x9dfe,0x199));var _0xe9df=function(_0x91b572,_0x55bc7f){_0x91b572=_0x91b572-0x0;var _0x3696b7=_0x9dfe[_0x91b572];return _0x3696b7;};'use strict';var _=require(_0xe9df('0x0'));var util=require(_0xe9df('0x1'));var moment=require('moment');var BPromise=require(_0xe9df('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe9df('0x3'))['db'];var utils=require(_0xe9df('0x4'));var logger=require(_0xe9df('0x5'))(_0xe9df('0x6'));var config=require(_0xe9df('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xe9df('0x8')][_0xe9df('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x170ba5,_0x242e30,_0x10014c){return new BPromise(function(_0x25b9fb,_0x273d15){return client[_0xe9df('0xa')](_0x170ba5,_0x10014c)[_0xe9df('0xb')](function(_0x265503){logger[_0xe9df('0xc')](_0xe9df('0xd'),_0x242e30,_0xe9df('0xe'));logger[_0xe9df('0xf')](_0xe9df('0x10'),_0x242e30,_0xe9df('0xe'),JSON[_0xe9df('0x11')](_0x265503));if(_0x265503[_0xe9df('0x12')]){if(_0x265503[_0xe9df('0x12')][_0xe9df('0x13')]===0x1f4){logger['error'](_0xe9df('0xd'),_0x242e30,_0x265503[_0xe9df('0x12')][_0xe9df('0x14')]);return _0x273d15(_0x265503[_0xe9df('0x12')][_0xe9df('0x14')]);}logger[_0xe9df('0x12')](_0xe9df('0xd'),_0x242e30,_0x265503['error'][_0xe9df('0x14')]);return _0x25b9fb(_0x265503[_0xe9df('0x12')][_0xe9df('0x14')]);}else{logger['info'](_0xe9df('0xd'),_0x242e30,_0xe9df('0xe'));_0x25b9fb(_0x265503[_0xe9df('0x15')][_0xe9df('0x14')]);}})[_0xe9df('0x16')](function(_0x317b5c){logger['error'](_0xe9df('0xd'),_0x242e30,_0x317b5c);_0x273d15(_0x317b5c);});});}
\ No newline at end of file
index a1e0aeb..5f3cc3f 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(_0x579837,_0x168bc9){var _0x56a9d5=function(_0x2949c8){while(--_0x2949c8){_0x579837['push'](_0x579837['shift']());}};_0x56a9d5(++_0x168bc9);}(_0x70e0,0x17b));var _0x070e=function(_0x2287ba,_0x177934){_0x2287ba=_0x2287ba-0x0;var _0x4dd3b1=_0x70e0[_0x2287ba];return _0x4dd3b1;};'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 _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x4f9792,_0xdc683c){var _0x162f74=function(_0x21f5ac){while(--_0x21f5ac){_0x4f9792['push'](_0x4f9792['shift']());}};_0x162f74(++_0xdc683c);}(_0xe706,0xa3));var _0x6e70=function(_0x1e5b8b,_0x4937be){_0x1e5b8b=_0x1e5b8b-0x0;var _0x59393f=_0xe706[_0x1e5b8b];return _0x59393f;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
index 8305137..0fe7c51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd365=['exports','INTEGER','sequelize'];(function(_0x11e30d,_0x5584aa){var _0x2d4e29=function(_0x2486ce){while(--_0x2486ce){_0x11e30d['push'](_0x11e30d['shift']());}};_0x2d4e29(++_0x5584aa);}(_0xd365,0x8f));var _0x5d36=function(_0xba8d22,_0xf495f7){_0xba8d22=_0xba8d22-0x0;var _0x4cffa1=_0xd365[_0xba8d22];return _0x4cffa1;};'use strict';var Sequelize=require(_0x5d36('0x0'));module[_0x5d36('0x1')]={'penalty':{'type':Sequelize[_0x5d36('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x06bf=['sequelize','exports','INTEGER'];(function(_0x506172,_0xbc3a3){var _0x2723c0=function(_0x57c3d9){while(--_0x57c3d9){_0x506172['push'](_0x506172['shift']());}};_0x2723c0(++_0xbc3a3);}(_0x06bf,0x105));var _0xf06b=function(_0xdc70ef,_0x463508){_0xdc70ef=_0xdc70ef-0x0;var _0xebf625=_0x06bf[_0xdc70ef];return _0xebf625;};'use strict';var Sequelize=require(_0xf06b('0x0'));module[_0xf06b('0x1')]={'penalty':{'type':Sequelize[_0xf06b('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 807b635..3cd1e1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7227=['rimraf','../../config/environment','define','user_has_mail_queues','lodash','util','../../config/logger','moment','path'];(function(_0x52684f,_0xff73fc){var _0x4a55f0=function(_0x8ce37c){while(--_0x8ce37c){_0x52684f['push'](_0x52684f['shift']());}};_0x4a55f0(++_0xff73fc);}(_0x7227,0x15a));var _0x7722=function(_0x506091,_0x12f86f){_0x506091=_0x506091-0x0;var _0xdab9ab=_0x7227[_0x506091];return _0xdab9ab;};'use strict';var _=require(_0x7722('0x0'));var util=require(_0x7722('0x1'));var logger=require(_0x7722('0x2'))('api');var moment=require(_0x7722('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x7722('0x4'));var rimraf=require(_0x7722('0x5'));var config=require(_0x7722('0x6'));var attributes=require('./userMailQueue.attributes');module['exports']=function(_0x283fc0,_0x783a7b){return _0x283fc0[_0x7722('0x7')]('UserMailQueue',attributes,{'tableName':_0x7722('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb2f9=['rimraf','../../config/environment','exports','define','UserMailQueue','user_has_mail_queues','lodash','../../config/logger','api','bluebird','path'];(function(_0x5398b1,_0x4bf8cf){var _0x3d815f=function(_0x193f34){while(--_0x193f34){_0x5398b1['push'](_0x5398b1['shift']());}};_0x3d815f(++_0x4bf8cf);}(_0xb2f9,0x150));var _0x9b2f=function(_0x3e674c,_0x1513de){_0x3e674c=_0x3e674c-0x0;var _0x19b3a6=_0xb2f9[_0x3e674c];return _0x19b3a6;};'use strict';var _=require(_0x9b2f('0x0'));var util=require('util');var logger=require(_0x9b2f('0x1'))(_0x9b2f('0x2'));var moment=require('moment');var BPromise=require(_0x9b2f('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9b2f('0x4'));var rimraf=require(_0x9b2f('0x5'));var config=require(_0x9b2f('0x6'));var attributes=require('./userMailQueue.attributes');module[_0x9b2f('0x7')]=function(_0x28c8b2,_0x384cd1){return _0x28c8b2[_0x9b2f('0x8')](_0x9b2f('0x9'),attributes,{'tableName':_0x9b2f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fbbda94..8b53dd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','UserMailQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','UserMailQueue,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x008c,0x188));var _0xc008=function(_0x20d9ff,_0x1bcc4b){_0x20d9ff=_0x20d9ff-0x0;var _0x1f78aa=_0x008c[_0x20d9ff];return _0x1f78aa;};'use strict';var _=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var moment=require(_0xc008('0x2'));var BPromise=require(_0xc008('0x3'));var rs=require(_0xc008('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc008('0x5'))['db'];var utils=require(_0xc008('0x6'));var logger=require(_0xc008('0x7'))(_0xc008('0x8'));var config=require(_0xc008('0x9'));var jayson=require(_0xc008('0xa'));var client=jayson[_0xc008('0xb')][_0xc008('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x9c8cb2,_0x4af530,_0x428fa9){return new BPromise(function(_0x5aa09b,_0x30be38){return client['request'](_0x9c8cb2,_0x428fa9)['then'](function(_0x27830d){logger[_0xc008('0xd')]('UserMailQueue,\x20%s,\x20%s',_0x4af530,'request\x20sent');logger['debug'](_0xc008('0xe'),_0x4af530,_0xc008('0xf'),JSON['stringify'](_0x27830d));if(_0x27830d[_0xc008('0x10')]){if(_0x27830d[_0xc008('0x10')][_0xc008('0x11')]===0x1f4){logger[_0xc008('0x10')](_0xc008('0x12'),_0x4af530,_0x27830d[_0xc008('0x10')][_0xc008('0x13')]);return _0x30be38(_0x27830d['error']['message']);}logger[_0xc008('0x10')]('UserMailQueue,\x20%s,\x20%s',_0x4af530,_0x27830d[_0xc008('0x10')][_0xc008('0x13')]);return _0x5aa09b(_0x27830d[_0xc008('0x10')][_0xc008('0x13')]);}else{logger[_0xc008('0xd')]('UserMailQueue,\x20%s,\x20%s',_0x4af530,'request\x20sent');_0x5aa09b(_0x27830d['result'][_0xc008('0x13')]);}})[_0xc008('0x14')](function(_0x3cafe3){logger[_0xc008('0x10')]('UserMailQueue,\x20%s,\x20%s',_0x4af530,_0x3cafe3);_0x30be38(_0x3cafe3);});});}
\ No newline at end of file
+var _0x00bb=['stringify','error','message','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','request','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s'];(function(_0x319886,_0x34085f){var _0x1a2c07=function(_0x125cd6){while(--_0x125cd6){_0x319886['push'](_0x319886['shift']());}};_0x1a2c07(++_0x34085f);}(_0x00bb,0x1d8));var _0xb00b=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0x00bb[_0x110c3d];return _0x226d67;};'use strict';var _=require(_0xb00b('0x0'));var util=require(_0xb00b('0x1'));var moment=require(_0xb00b('0x2'));var BPromise=require('bluebird');var rs=require(_0xb00b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb00b('0x4'))['db'];var utils=require(_0xb00b('0x5'));var logger=require('../../config/logger')(_0xb00b('0x6'));var config=require(_0xb00b('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x36e363,_0xf737d0,_0x41dfc9){return new BPromise(function(_0x37f07d,_0xfa4181){return client[_0xb00b('0x8')](_0x36e363,_0x41dfc9)['then'](function(_0x51d12b){logger[_0xb00b('0x9')](_0xb00b('0xa'),_0xf737d0,_0xb00b('0xb'));logger[_0xb00b('0xc')](_0xb00b('0xd'),_0xf737d0,'request\x20sent',JSON[_0xb00b('0xe')](_0x51d12b));if(_0x51d12b['error']){if(_0x51d12b['error']['code']===0x1f4){logger[_0xb00b('0xf')](_0xb00b('0xa'),_0xf737d0,_0x51d12b[_0xb00b('0xf')][_0xb00b('0x10')]);return _0xfa4181(_0x51d12b[_0xb00b('0xf')][_0xb00b('0x10')]);}logger['error'](_0xb00b('0xa'),_0xf737d0,_0x51d12b[_0xb00b('0xf')]['message']);return _0x37f07d(_0x51d12b[_0xb00b('0xf')][_0xb00b('0x10')]);}else{logger['info']('UserMailQueue,\x20%s,\x20%s',_0xf737d0,_0xb00b('0xb'));_0x37f07d(_0x51d12b['result']['message']);}})[_0xb00b('0x11')](function(_0x638443){logger[_0xb00b('0xf')](_0xb00b('0xa'),_0xf737d0,_0x638443);_0xfa4181(_0x638443);});});}
\ No newline at end of file
index fec8c38..0e13a6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7189=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','post','isAuthenticated','sendUserNotification'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x7189,0xb7));var _0x9718=function(_0x3037c0,_0x5de2fe){_0x3037c0=_0x3037c0-0x0;var _0x59802e=_0x7189[_0x3037c0];return _0x59802e;};'use strict';var multer=require(_0x9718('0x0'));var util=require(_0x9718('0x1'));var path=require(_0x9718('0x2'));var timeout=require(_0x9718('0x3'));var express=require(_0x9718('0x4'));var router=express[_0x9718('0x5')]();var fs_extra=require(_0x9718('0x6'));var auth=require(_0x9718('0x7'));var interaction=require(_0x9718('0x8'));var config=require('../../config/environment');var controller=require('./userNotification.controller');router[_0x9718('0x9')]('/',auth[_0x9718('0xa')](),controller[_0x9718('0xb')]);module[_0x9718('0xc')]=router;
\ No newline at end of file
+var _0x557f=['./userNotification.controller','isAuthenticated','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x36884e,_0x48008f){var _0x1cc367=function(_0x388a78){while(--_0x388a78){_0x36884e['push'](_0x36884e['shift']());}};_0x1cc367(++_0x48008f);}(_0x557f,0xc1));var _0xf557=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x557f[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0xf557('0x0'));var path=require('path');var timeout=require(_0xf557('0x1'));var express=require(_0xf557('0x2'));var router=express[_0xf557('0x3')]();var fs_extra=require(_0xf557('0x4'));var auth=require(_0xf557('0x5'));var interaction=require(_0xf557('0x6'));var config=require('../../config/environment');var controller=require(_0xf557('0x7'));router['post']('/',auth[_0xf557('0x8')](),controller['sendUserNotification']);module[_0xf557('0x9')]=router;
\ No newline at end of file
index e03d813..e81c89a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaebf=['BOOLEAN','sequelize','exports','TEXT','STRING'];(function(_0x1a4a06,_0x36a5c2){var _0x49ec08=function(_0x497f24){while(--_0x497f24){_0x1a4a06['push'](_0x1a4a06['shift']());}};_0x49ec08(++_0x36a5c2);}(_0xaebf,0xf6));var _0xfaeb=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xaebf[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0xfaeb('0x0'));module[_0xfaeb('0x1')]={'body':{'type':Sequelize[_0xfaeb('0x2')]},'senderName':{'type':Sequelize[_0xfaeb('0x3')]},'recipientsId':{'type':Sequelize[_0xfaeb('0x2')]},'recipientsDescription':{'type':Sequelize['STRING']},'beep':{'type':Sequelize[_0xfaeb('0x4')]}};
\ No newline at end of file
+var _0x4fb6=['exports','TEXT','STRING','BOOLEAN'];(function(_0x5cc8,_0x1faa02){var _0x450661=function(_0x237b05){while(--_0x237b05){_0x5cc8['push'](_0x5cc8['shift']());}};_0x450661(++_0x1faa02);}(_0x4fb6,0x158));var _0x64fb=function(_0x35885a,_0x42fed7){_0x35885a=_0x35885a-0x0;var _0xe86249=_0x4fb6[_0x35885a];return _0xe86249;};'use strict';var Sequelize=require('sequelize');module[_0x64fb('0x0')]={'body':{'type':Sequelize[_0x64fb('0x1')]},'senderName':{'type':Sequelize[_0x64fb('0x2')]},'recipientsId':{'type':Sequelize[_0x64fb('0x1')]},'recipientsDescription':{'type':Sequelize[_0x64fb('0x2')]},'beep':{'type':Sequelize[_0x64fb('0x3')]}};
\ No newline at end of file
index a2560b1..8c3caa4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe6a=['sortBy','join','create','emit','catch','Template','findOne','html','render','User','union','ids','queue','replace','forEach','push','flatten','getAgents','map','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','localhost','socket.io-emitter','redis','register','sendStatus','status','json','offset','undefined','limit','count','set','reject','save','update','then','name','send','sendUserNotification','body','text','hasOwnProperty','TemplateId','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','Missing\x20\x27view\x27\x20parameter','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','mailqueue','openchannelqueue','whatsappqueue','user','some','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','isEmpty','SenderId','recipientsId'];(function(_0x9b170e,_0xb742bf){var _0x1daa89=function(_0x3ba6f3){while(--_0x3ba6f3){_0x9b170e['push'](_0x9b170e['shift']());}};_0x1daa89(++_0xb742bf);}(_0xbe6a,0x121));var _0xabe6=function(_0x4fa166,_0x58b7fb){_0x4fa166=_0x4fa166-0x0;var _0x5dd974=_0xbe6a[_0x4fa166];return _0x5dd974;};'use strict';var emlformat=require(_0xabe6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xabe6('0x1'));var jsonpatch=require(_0xabe6('0x2'));var rp=require(_0xabe6('0x3'));var moment=require(_0xabe6('0x4'));var BPromise=require(_0xabe6('0x5'));var Mustache=require(_0xabe6('0x6'));var util=require(_0xabe6('0x7'));var path=require(_0xabe6('0x8'));var sox=require(_0xabe6('0x9'));var csv=require(_0xabe6('0xa'));var ejs=require(_0xabe6('0xb'));var fs=require('fs');var fs_extra=require(_0xabe6('0xc'));var _=require(_0xabe6('0xd'));var squel=require('squel');var crypto=require(_0xabe6('0xe'));var jsforce=require(_0xabe6('0xf'));var deskjs=require(_0xabe6('0x10'));var toCsv=require(_0xabe6('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xabe6('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xabe6('0x12'));var as=require(_0xabe6('0x13'));var hardwareService=require(_0xabe6('0x14'));var logger=require(_0xabe6('0x15'))(_0xabe6('0x16'));var utils=require(_0xabe6('0x17'));var config=require(_0xabe6('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xabe6('0x19'))['db'];config['redis']=_[_0xabe6('0x1a')](config['redis'],{'host':_0xabe6('0x1b'),'port':0x18eb});var socket=require(_0xabe6('0x1c'))(new Redis(config[_0xabe6('0x1d')]));require('./userNotification.socket')[_0xabe6('0x1e')](socket);function respondWithStatusCode(_0x13e556,_0x58f360){_0x58f360=_0x58f360||0xcc;return function(_0x647717){if(_0x647717){return _0x13e556[_0xabe6('0x1f')](_0x58f360);}return _0x13e556[_0xabe6('0x20')](_0x58f360)['end']();};}function respondWithResult(_0x14a112,_0x56d1bf){_0x56d1bf=_0x56d1bf||0xc8;return function(_0xab9fb7){if(_0xab9fb7){return _0x14a112[_0xabe6('0x20')](_0x56d1bf)[_0xabe6('0x21')](_0xab9fb7);}};}function respondWithFilteredResult(_0x3e32a9,_0x1c70a1){return function(_0xdd8e71){if(_0xdd8e71){var _0x13e3d6=typeof _0x1c70a1[_0xabe6('0x22')]===_0xabe6('0x23')&&typeof _0x1c70a1[_0xabe6('0x24')]===_0xabe6('0x23');var _0x5c532a=_0xdd8e71[_0xabe6('0x25')];var _0x305cb7=_0x13e3d6?0x0:_0x1c70a1[_0xabe6('0x22')];var _0x2716c8=_0x13e3d6?_0xdd8e71['count']:_0x1c70a1[_0xabe6('0x22')]+_0x1c70a1[_0xabe6('0x24')];var _0x3fe061;if(_0x2716c8>=_0x5c532a){_0x2716c8=_0x5c532a;_0x3fe061=0xc8;}else{_0x3fe061=0xce;}_0x3e32a9[_0xabe6('0x20')](_0x3fe061);return _0x3e32a9[_0xabe6('0x26')]('Content-Range',_0x305cb7+'-'+_0x2716c8+'/'+_0x5c532a)[_0xabe6('0x21')](_0xdd8e71);}return null;};}function patchUpdates(_0x4198f2){return function(_0x1238a6){try{jsonpatch['apply'](_0x1238a6,_0x4198f2,!![]);}catch(_0x522412){return BPromise[_0xabe6('0x27')](_0x522412);}return _0x1238a6[_0xabe6('0x28')]();};}function saveUpdates(_0x44433f,_0x189cc3){return function(_0x31c627){if(_0x31c627){return _0x31c627[_0xabe6('0x29')](_0x44433f)[_0xabe6('0x2a')](function(_0x2bf8ec){return _0x2bf8ec;});}return null;};}function removeEntity(_0x3ad8f4,_0x20162a){return function(_0x45537e){if(_0x45537e){return _0x45537e['destroy']()[_0xabe6('0x2a')](function(){_0x3ad8f4[_0xabe6('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x316fc6,_0x2e2024){return function(_0x4adfc8){if(!_0x4adfc8){_0x316fc6[_0xabe6('0x1f')](0x194);}return _0x4adfc8;};}function handleError(_0x1b095e,_0xb63d3d){_0xb63d3d=_0xb63d3d||0x1f4;return function(_0x50fcfc){logger['error'](_0x50fcfc['stack']);if(_0x50fcfc[_0xabe6('0x2b')]){delete _0x50fcfc['name'];}_0x1b095e[_0xabe6('0x20')](_0xb63d3d)[_0xabe6('0x2c')](_0x50fcfc);};}exports[_0xabe6('0x2d')]=function(_0x14806d,_0x5b4861,_0x21c2fb){if(!_0x14806d[_0xabe6('0x2e')]['hasOwnProperty'](_0xabe6('0x2f'))&&!_0x14806d[_0xabe6('0x2e')][_0xabe6('0x30')](_0xabe6('0x31'))){throw new db[(_0xabe6('0x32'))][(_0xabe6('0x33'))](_0xabe6('0x34'));}else{if(_0x14806d['body'][_0xabe6('0x30')]('TemplateId')&&!_0x14806d[_0xabe6('0x2e')][_0xabe6('0x30')]('view')){throw new db[(_0xabe6('0x32'))][(_0xabe6('0x33'))](_0xabe6('0x35'));}if(!_0x14806d[_0xabe6('0x2e')][_0xabe6('0x30')]('recipients')){throw new db[(_0xabe6('0x32'))][(_0xabe6('0x33'))](_0xabe6('0x36'));}else{try{var _0x1693fd=JSON[_0xabe6('0x37')](_0x14806d['body']['recipients']);}catch(_0x4e0455){logger['error'](_0x4e0455);throw new db[(_0xabe6('0x32'))][(_0xabe6('0x33'))](_0xabe6('0x38'));}var _0x184050=['chatqueue','faxqueue',_0xabe6('0x39'),_0xabe6('0x3a'),'smsqueue','voicequeue',_0xabe6('0x3b'),'team',_0xabe6('0x3c')];if(_[_0xabe6('0x3d')](_0x1693fd,function(_0x12e22e){return!_['includes'](_0x184050,_0x12e22e[_0xabe6('0x3e')][_0xabe6('0x3f')]());})){throw new db[(_0xabe6('0x32'))][(_0xabe6('0x33'))](_0xabe6('0x40'));}}}var _0x33edd3={};_0x33edd3[_0xabe6('0x41')]=_0x14806d[_0xabe6('0x2e')][_0xabe6('0x30')](_0xabe6('0x41'))?_0x14806d[_0xabe6('0x2e')]['senderName']:_0x14806d[_0xabe6('0x3c')][_0xabe6('0x42')];_0x33edd3[_0xabe6('0x43')]=_[_0xabe6('0x44')](_0x14806d[_0xabe6('0x2e')][_0xabe6('0x43')])?null:_0x14806d[_0xabe6('0x2e')][_0xabe6('0x43')];_0x33edd3['beep']=_0x14806d[_0xabe6('0x2e')]['beep']||![];_0x33edd3[_0xabe6('0x45')]=_0x14806d[_0xabe6('0x3c')]['id'];return getContent(_0x14806d['body'])[_0xabe6('0x2a')](function(_0x5a4e19){_0x33edd3[_0xabe6('0x2e')]=_0x5a4e19;return getRecipients(_0x1693fd);})[_0xabe6('0x2a')](function(_0x144c32){_0x33edd3[_0xabe6('0x46')]=_[_0xabe6('0x47')](_0x144c32)[_0xabe6('0x48')](',');return db['sequelize']['transaction'](function(_0x4761e5){return db['UserNotification'][_0xabe6('0x49')](_0x33edd3,{'raw':!![],'transaction':_0x4761e5})['then'](function(_0x141df0){var _0x57c93b={'sender':_0x33edd3[_0xabe6('0x41')],'description':_0x33edd3['recipientsDescription'],'content':_0x33edd3['body'],'beep':_0x33edd3['beep']};_0x144c32['forEach'](function(_0xc29f5f){_0x57c93b['recipient']=_0xc29f5f;socket[_0xabe6('0x4a')]('userNotification:send',_0x57c93b);});return _0x141df0;});});})['then'](respondWithResult(_0x5b4861,0xc9))[_0xabe6('0x4b')](handleError(_0x5b4861,null));};function getContent(_0x4658a3){return new BPromise(function(_0x4382e0,_0xc282f0){if(_0x4658a3[_0xabe6('0x2f')]){_0x4382e0(_0x4658a3[_0xabe6('0x2f')]);return;}return db[_0xabe6('0x4c')][_0xabe6('0x4d')]({'attributes':[_0xabe6('0x4e')],'where':{'id':_0x4658a3[_0xabe6('0x31')]},'raw':!![]})[_0xabe6('0x2a')](function(_0x3e8f4f){if(!_0x3e8f4f)throw new db[(_0xabe6('0x32'))][(_0xabe6('0x33'))]('Invalid\x20\x27TemplateId\x27\x20parameter');var _0x59eab8=Mustache[_0xabe6('0x4f')](_0x3e8f4f['html'],_0x4658a3['view']);_0x4382e0(_0x59eab8);})['catch'](function(_0x200aba){_0xc282f0(_0x200aba);});});}function getRecipients(_0x405d04){return new BPromise(function(_0x5ae592,_0x215c23){var _0x4f01fc=[];var _0x18fa2c=[];_0x405d04['forEach'](function(_0x2abba7){var _0x2caf15=_['startCase'](_0x2abba7[_0xabe6('0x3e')][_0xabe6('0x3f')]());if(_0x2caf15===_0xabe6('0x50')){_0x4f01fc=_[_0xabe6('0x51')](_0x4f01fc,_0x2abba7[_0xabe6('0x52')]);}else{if(_['includes'](_0x2caf15,_0xabe6('0x53')))_0x2caf15=_0x2caf15[_0xabe6('0x54')](_0xabe6('0x53'),'Queue');_0x2abba7['ids'][_0xabe6('0x55')](function(_0xd979aa){_0x18fa2c[_0xabe6('0x56')](getAgents(_0x2caf15,_0xd979aa));});}});return BPromise['all'](_0x18fa2c)['then'](function(_0xcd3e18){_0x4f01fc=_[_0xabe6('0x51')](_0x4f01fc,_[_0xabe6('0x57')](_0xcd3e18));_0x5ae592(_0x4f01fc);})['catch'](function(_0x47fdef){_0x215c23(_0x47fdef);});});}function getAgents(_0x13ad23,_0x3788f7){return new BPromise(function(_0x1cbc37,_0x28122e){return db[_0x13ad23][_0xabe6('0x4d')]({'where':{'id':_0x3788f7}})['then'](function(_0x33d734){return _0x33d734[_0xabe6('0x58')]({'attributes':['id'],'raw':!![]})['then'](function(_0x55c914){var _0x35b34a=_[_0xabe6('0x59')](_0x55c914,'id');_0x1cbc37(_0x35b34a);});})[_0xabe6('0x4b')](function(_0x3d472a){_0x28122e(_0x3d472a);});});}
\ No newline at end of file
+var _0xc7a3=['recipientsDescription','beep','recipientsId','sortBy','join','transaction','create','recipient','emit','catch','text','Template','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','forEach','startCase','model','union','queue','Queue','ids','push','all','flatten','findOne','map','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','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','./userNotification.socket','register','sendStatus','end','undefined','count','offset','limit','status','set','json','apply','reject','save','then','error','stack','name','sendUserNotification','body','hasOwnProperty','Sequelize','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','TemplateId','view','ValidationError','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue','openchannelqueue','smsqueue','voicequeue','whatsappqueue','team','user','some','includes','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname'];(function(_0x348ef6,_0xf21900){var _0x4d9548=function(_0x2e8c53){while(--_0x2e8c53){_0x348ef6['push'](_0x348ef6['shift']());}};_0x4d9548(++_0xf21900);}(_0xc7a3,0x80));var _0x3c7a=function(_0x4066cf,_0x3ecc60){_0x4066cf=_0x4066cf-0x0;var _0x3181a6=_0xc7a3[_0x4066cf];return _0x3181a6;};'use strict';var emlformat=require(_0x3c7a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3c7a('0x1'));var jsonpatch=require(_0x3c7a('0x2'));var rp=require('request-promise');var moment=require(_0x3c7a('0x3'));var BPromise=require(_0x3c7a('0x4'));var Mustache=require(_0x3c7a('0x5'));var util=require(_0x3c7a('0x6'));var path=require(_0x3c7a('0x7'));var sox=require('sox');var csv=require(_0x3c7a('0x8'));var ejs=require(_0x3c7a('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3c7a('0xa'));var squel=require(_0x3c7a('0xb'));var crypto=require(_0x3c7a('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x3c7a('0xd'));var toCsv=require('to-csv');var querystring=require(_0x3c7a('0xe'));var Papa=require('papaparse');var Redis=require(_0x3c7a('0xf'));var authService=require(_0x3c7a('0x10'));var qs=require(_0x3c7a('0x11'));var as=require(_0x3c7a('0x12'));var hardwareService=require(_0x3c7a('0x13'));var logger=require(_0x3c7a('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x3c7a('0x15'));var licenseUtil=require(_0x3c7a('0x16'));var db=require(_0x3c7a('0x17'))['db'];config[_0x3c7a('0x18')]=_[_0x3c7a('0x19')](config[_0x3c7a('0x18')],{'host':_0x3c7a('0x1a'),'port':0x18eb});var socket=require(_0x3c7a('0x1b'))(new Redis(config[_0x3c7a('0x18')]));require(_0x3c7a('0x1c'))[_0x3c7a('0x1d')](socket);function respondWithStatusCode(_0x17aaa0,_0x471d59){_0x471d59=_0x471d59||0xcc;return function(_0x2339c2){if(_0x2339c2){return _0x17aaa0[_0x3c7a('0x1e')](_0x471d59);}return _0x17aaa0['status'](_0x471d59)[_0x3c7a('0x1f')]();};}function respondWithResult(_0x31eefa,_0x5a12fc){_0x5a12fc=_0x5a12fc||0xc8;return function(_0x1b7b3c){if(_0x1b7b3c){return _0x31eefa['status'](_0x5a12fc)['json'](_0x1b7b3c);}};}function respondWithFilteredResult(_0x22ec09,_0x3bb6bc){return function(_0x1a7f0a){if(_0x1a7f0a){var _0x2ea962=typeof _0x3bb6bc['offset']===_0x3c7a('0x20')&&typeof _0x3bb6bc['limit']===_0x3c7a('0x20');var _0x297a46=_0x1a7f0a[_0x3c7a('0x21')];var _0x1556ef=_0x2ea962?0x0:_0x3bb6bc['offset'];var _0x32bc53=_0x2ea962?_0x1a7f0a[_0x3c7a('0x21')]:_0x3bb6bc[_0x3c7a('0x22')]+_0x3bb6bc[_0x3c7a('0x23')];var _0x68861e;if(_0x32bc53>=_0x297a46){_0x32bc53=_0x297a46;_0x68861e=0xc8;}else{_0x68861e=0xce;}_0x22ec09[_0x3c7a('0x24')](_0x68861e);return _0x22ec09[_0x3c7a('0x25')]('Content-Range',_0x1556ef+'-'+_0x32bc53+'/'+_0x297a46)[_0x3c7a('0x26')](_0x1a7f0a);}return null;};}function patchUpdates(_0x39bf19){return function(_0x5e0f1c){try{jsonpatch[_0x3c7a('0x27')](_0x5e0f1c,_0x39bf19,!![]);}catch(_0x433607){return BPromise[_0x3c7a('0x28')](_0x433607);}return _0x5e0f1c[_0x3c7a('0x29')]();};}function saveUpdates(_0x21bd24,_0x1438c1){return function(_0x185963){if(_0x185963){return _0x185963['update'](_0x21bd24)['then'](function(_0x24eb46){return _0x24eb46;});}return null;};}function removeEntity(_0x4c9089,_0x127f40){return function(_0x270464){if(_0x270464){return _0x270464['destroy']()[_0x3c7a('0x2a')](function(){_0x4c9089[_0x3c7a('0x24')](0xcc)[_0x3c7a('0x1f')]();});}};}function handleEntityNotFound(_0x27217f,_0x5b5ce7){return function(_0x487781){if(!_0x487781){_0x27217f[_0x3c7a('0x1e')](0x194);}return _0x487781;};}function handleError(_0x5c3f00,_0xa19dfb){_0xa19dfb=_0xa19dfb||0x1f4;return function(_0x52e678){logger[_0x3c7a('0x2b')](_0x52e678[_0x3c7a('0x2c')]);if(_0x52e678[_0x3c7a('0x2d')]){delete _0x52e678[_0x3c7a('0x2d')];}_0x5c3f00['status'](_0xa19dfb)['send'](_0x52e678);};}exports[_0x3c7a('0x2e')]=function(_0x57d569,_0x318ff4,_0x5d096c){if(!_0x57d569[_0x3c7a('0x2f')][_0x3c7a('0x30')]('text')&&!_0x57d569[_0x3c7a('0x2f')][_0x3c7a('0x30')]('TemplateId')){throw new db[(_0x3c7a('0x31'))]['ValidationError'](_0x3c7a('0x32'));}else{if(_0x57d569['body'][_0x3c7a('0x30')](_0x3c7a('0x33'))&&!_0x57d569['body'][_0x3c7a('0x30')](_0x3c7a('0x34'))){throw new db['Sequelize'][(_0x3c7a('0x35'))](_0x3c7a('0x36'));}if(!_0x57d569[_0x3c7a('0x2f')][_0x3c7a('0x30')](_0x3c7a('0x37'))){throw new db[(_0x3c7a('0x31'))][(_0x3c7a('0x35'))](_0x3c7a('0x38'));}else{try{var _0x4b2fbe=JSON[_0x3c7a('0x39')](_0x57d569[_0x3c7a('0x2f')][_0x3c7a('0x37')]);}catch(_0x362e0e){logger[_0x3c7a('0x2b')](_0x362e0e);throw new db[(_0x3c7a('0x31'))][(_0x3c7a('0x35'))](_0x3c7a('0x3a'));}var _0x356b06=[_0x3c7a('0x3b'),_0x3c7a('0x3c'),_0x3c7a('0x3d'),_0x3c7a('0x3e'),_0x3c7a('0x3f'),_0x3c7a('0x40'),_0x3c7a('0x41'),_0x3c7a('0x42'),_0x3c7a('0x43')];if(_[_0x3c7a('0x44')](_0x4b2fbe,function(_0x4e5114){return!_[_0x3c7a('0x45')](_0x356b06,_0x4e5114['model'][_0x3c7a('0x46')]());})){throw new db[(_0x3c7a('0x31'))][(_0x3c7a('0x35'))](_0x3c7a('0x47'));}}}var _0x3b9419={};_0x3b9419['senderName']=_0x57d569[_0x3c7a('0x2f')][_0x3c7a('0x30')](_0x3c7a('0x48'))?_0x57d569[_0x3c7a('0x2f')][_0x3c7a('0x48')]:_0x57d569[_0x3c7a('0x43')][_0x3c7a('0x49')];_0x3b9419[_0x3c7a('0x4a')]=_['isEmpty'](_0x57d569[_0x3c7a('0x2f')][_0x3c7a('0x4a')])?null:_0x57d569['body'][_0x3c7a('0x4a')];_0x3b9419[_0x3c7a('0x4b')]=_0x57d569['body'][_0x3c7a('0x4b')]||![];_0x3b9419['SenderId']=_0x57d569[_0x3c7a('0x43')]['id'];return getContent(_0x57d569['body'])[_0x3c7a('0x2a')](function(_0x5d70e9){_0x3b9419[_0x3c7a('0x2f')]=_0x5d70e9;return getRecipients(_0x4b2fbe);})[_0x3c7a('0x2a')](function(_0x58a568){_0x3b9419[_0x3c7a('0x4c')]=_[_0x3c7a('0x4d')](_0x58a568)[_0x3c7a('0x4e')](',');return db['sequelize'][_0x3c7a('0x4f')](function(_0x24679e){return db['UserNotification'][_0x3c7a('0x50')](_0x3b9419,{'raw':!![],'transaction':_0x24679e})[_0x3c7a('0x2a')](function(_0x807b4f){var _0x54f304={'sender':_0x3b9419[_0x3c7a('0x48')],'description':_0x3b9419[_0x3c7a('0x4a')],'content':_0x3b9419['body'],'beep':_0x3b9419[_0x3c7a('0x4b')]};_0x58a568['forEach'](function(_0x3d5111){_0x54f304[_0x3c7a('0x51')]=_0x3d5111;socket[_0x3c7a('0x52')]('userNotification:send',_0x54f304);});return _0x807b4f;});});})[_0x3c7a('0x2a')](respondWithResult(_0x318ff4,0xc9))[_0x3c7a('0x53')](handleError(_0x318ff4,null));};function getContent(_0x30f332){return new BPromise(function(_0x31a5c0,_0xb25764){if(_0x30f332[_0x3c7a('0x54')]){_0x31a5c0(_0x30f332['text']);return;}return db[_0x3c7a('0x55')]['findOne']({'attributes':[_0x3c7a('0x56')],'where':{'id':_0x30f332[_0x3c7a('0x33')]},'raw':!![]})[_0x3c7a('0x2a')](function(_0x1c89c0){if(!_0x1c89c0)throw new db['Sequelize']['ValidationError'](_0x3c7a('0x57'));var _0x5c4956=Mustache[_0x3c7a('0x58')](_0x1c89c0['html'],_0x30f332[_0x3c7a('0x34')]);_0x31a5c0(_0x5c4956);})[_0x3c7a('0x53')](function(_0x264cc0){_0xb25764(_0x264cc0);});});}function getRecipients(_0x3b665a){return new BPromise(function(_0x105aa5,_0x32d5d8){var _0x2efc4c=[];var _0x24a4a9=[];_0x3b665a[_0x3c7a('0x59')](function(_0x3dbf46){var _0x4b8696=_[_0x3c7a('0x5a')](_0x3dbf46[_0x3c7a('0x5b')][_0x3c7a('0x46')]());if(_0x4b8696==='User'){_0x2efc4c=_[_0x3c7a('0x5c')](_0x2efc4c,_0x3dbf46['ids']);}else{if(_['includes'](_0x4b8696,_0x3c7a('0x5d')))_0x4b8696=_0x4b8696['replace'](_0x3c7a('0x5d'),_0x3c7a('0x5e'));_0x3dbf46[_0x3c7a('0x5f')][_0x3c7a('0x59')](function(_0x1f1c50){_0x24a4a9[_0x3c7a('0x60')](getAgents(_0x4b8696,_0x1f1c50));});}});return BPromise[_0x3c7a('0x61')](_0x24a4a9)[_0x3c7a('0x2a')](function(_0xe43267){_0x2efc4c=_[_0x3c7a('0x5c')](_0x2efc4c,_[_0x3c7a('0x62')](_0xe43267));_0x105aa5(_0x2efc4c);})[_0x3c7a('0x53')](function(_0x1a5f3d){_0x32d5d8(_0x1a5f3d);});});}function getAgents(_0x291dd7,_0x4d008c){return new BPromise(function(_0x3dbdd6,_0x357cb1){return db[_0x291dd7][_0x3c7a('0x63')]({'where':{'id':_0x4d008c}})[_0x3c7a('0x2a')](function(_0x44207c){return _0x44207c['getAgents']({'attributes':['id'],'raw':!![]})[_0x3c7a('0x2a')](function(_0x37f71b){var _0x2ebfe2=_[_0x3c7a('0x64')](_0x37f71b,'id');_0x3dbdd6(_0x2ebfe2);});})[_0x3c7a('0x53')](function(_0x35f902){_0x357cb1(_0x35f902);});});}
\ No newline at end of file
index 1ebbcb5..4904449 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6501=['../../mysqldb','setMaxListeners','save','update','remove','hasOwnProperty','hook','exports','events'];(function(_0x186187,_0x55205e){var _0x170b84=function(_0xb7db54){while(--_0xb7db54){_0x186187['push'](_0x186187['shift']());}};_0x170b84(++_0x55205e);}(_0x6501,0x116));var _0x1650=function(_0x54e7a1,_0x598f7){_0x54e7a1=_0x54e7a1-0x0;var _0x23f516=_0x6501[_0x54e7a1];return _0x23f516;};'use strict';var EventEmitter=require(_0x1650('0x0'));var UserNotification=require(_0x1650('0x1'))['db']['UserNotification'];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x1650('0x2')](0x0);var events={'afterCreate':_0x1650('0x3'),'afterUpdate':_0x1650('0x4'),'afterDestroy':_0x1650('0x5')};function emitEvent(_0x45392e){return function(_0x24929d,_0xc1bfd8,_0x43cfc2){UserNotificationEvents['emit'](_0x45392e+':'+_0x24929d['id'],_0x24929d);UserNotificationEvents['emit'](_0x45392e,_0x24929d);_0x43cfc2(null);};}for(var e in events){if(events[_0x1650('0x6')](e)){var event=events[e];UserNotification[_0x1650('0x7')](e,emitEvent(event));}}module[_0x1650('0x8')]=UserNotificationEvents;
\ No newline at end of file
+var _0x2ab0=['exports','UserNotification','setMaxListeners','save','remove','emit'];(function(_0x3ddcf3,_0x458452){var _0x4d9542=function(_0x305019){while(--_0x305019){_0x3ddcf3['push'](_0x3ddcf3['shift']());}};_0x4d9542(++_0x458452);}(_0x2ab0,0x163));var _0x02ab=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0x2ab0[_0x92c450];return _0x2a9599;};'use strict';var EventEmitter=require('events');var UserNotification=require('../../mysqldb')['db'][_0x02ab('0x0')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x02ab('0x1')](0x0);var events={'afterCreate':_0x02ab('0x2'),'afterUpdate':'update','afterDestroy':_0x02ab('0x3')};function emitEvent(_0x3aa025){return function(_0x45ffaa,_0xc0ab4c,_0x5348c9){UserNotificationEvents[_0x02ab('0x4')](_0x3aa025+':'+_0x45ffaa['id'],_0x45ffaa);UserNotificationEvents[_0x02ab('0x4')](_0x3aa025,_0x45ffaa);_0x5348c9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserNotification['hook'](e,emitEvent(event));}}module[_0x02ab('0x5')]=UserNotificationEvents;
\ No newline at end of file
index 3cd8570..254ab60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda1a=['rimraf','exports','define','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','path'];(function(_0xf12af2,_0x3c4aed){var _0x52c026=function(_0x390cd9){while(--_0x390cd9){_0xf12af2['push'](_0xf12af2['shift']());}};_0x52c026(++_0x3c4aed);}(_0xda1a,0x1f4));var _0xada1=function(_0x556256,_0x44c518){_0x556256=_0x556256-0x0;var _0x30cffc=_0xda1a[_0x556256];return _0x30cffc;};'use strict';var _=require('lodash');var util=require(_0xada1('0x0'));var logger=require(_0xada1('0x1'))(_0xada1('0x2'));var moment=require(_0xada1('0x3'));var BPromise=require(_0xada1('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xada1('0x5'));var rimraf=require(_0xada1('0x6'));var config=require('../../config/environment');var attributes=require('./userNotification.attributes');module[_0xada1('0x7')]=function(_0x3adf63,_0x359ef1){return _0x3adf63[_0xada1('0x8')]('UserNotification',attributes,{'tableName':'userNotifications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xada1('0x9'),'collate':_0xada1('0xa')});};
\ No newline at end of file
+var _0x5250=['./userNotification.attributes','exports','UserNotification','userNotifications','utf8mb4','lodash','util','../../config/logger','moment','request-promise','path','../../config/environment'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x5250,0x71));var _0x0525=function(_0x15b380,_0x1a3c5f){_0x15b380=_0x15b380-0x0;var _0x232c5c=_0x5250[_0x15b380];return _0x232c5c;};'use strict';var _=require(_0x0525('0x0'));var util=require(_0x0525('0x1'));var logger=require(_0x0525('0x2'))('api');var moment=require(_0x0525('0x3'));var BPromise=require('bluebird');var rp=require(_0x0525('0x4'));var fs=require('fs');var path=require(_0x0525('0x5'));var rimraf=require('rimraf');var config=require(_0x0525('0x6'));var attributes=require(_0x0525('0x7'));module[_0x0525('0x8')]=function(_0x550508,_0xc62a1a){return _0x550508['define'](_0x0525('0x9'),attributes,{'tableName':_0x0525('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x0525('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 8d8a118..a99b22f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e9f=['code','message','catch','util','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./userNotification.socket','request','then','info','UserNotification,\x20%s,\x20%s','request\x20sent','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x494651,_0x28c844){var _0x26e771=function(_0x249abe){while(--_0x249abe){_0x494651['push'](_0x494651['shift']());}};_0x26e771(++_0x28c844);}(_0x6e9f,0x123));var _0xf6e9=function(_0x524d43,_0x8789e2){_0x524d43=_0x524d43-0x0;var _0x5345f9=_0x6e9f[_0x524d43];return _0x5345f9;};'use strict';var _=require('lodash');var util=require(_0xf6e9('0x0'));var moment=require('moment');var BPromise=require(_0xf6e9('0x1'));var rs=require(_0xf6e9('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xf6e9('0x3'));var logger=require(_0xf6e9('0x4'))(_0xf6e9('0x5'));var config=require(_0xf6e9('0x6'));var jayson=require(_0xf6e9('0x7'));var client=jayson['client']['http']({'port':0x232a});config[_0xf6e9('0x8')]=_[_0xf6e9('0x9')](config[_0xf6e9('0x8')],{'host':_0xf6e9('0xa'),'port':0x18eb});var socket=require(_0xf6e9('0xb'))(new Redis(config['redis']));require(_0xf6e9('0xc'))['register'](socket);function respondWithRpcPromise(_0x19245b,_0x2ac4bf,_0x44f7ab){return new BPromise(function(_0x5b4fb1,_0xed4286){return client[_0xf6e9('0xd')](_0x19245b,_0x44f7ab)[_0xf6e9('0xe')](function(_0x1dd92a){logger[_0xf6e9('0xf')](_0xf6e9('0x10'),_0x2ac4bf,_0xf6e9('0x11'));logger['debug'](_0xf6e9('0x12'),_0x2ac4bf,_0xf6e9('0x11'),JSON[_0xf6e9('0x13')](_0x1dd92a));if(_0x1dd92a[_0xf6e9('0x14')]){if(_0x1dd92a[_0xf6e9('0x14')][_0xf6e9('0x15')]===0x1f4){logger['error'](_0xf6e9('0x10'),_0x2ac4bf,_0x1dd92a['error'][_0xf6e9('0x16')]);return _0xed4286(_0x1dd92a['error'][_0xf6e9('0x16')]);}logger[_0xf6e9('0x14')](_0xf6e9('0x10'),_0x2ac4bf,_0x1dd92a['error'][_0xf6e9('0x16')]);return _0x5b4fb1(_0x1dd92a[_0xf6e9('0x14')][_0xf6e9('0x16')]);}else{logger[_0xf6e9('0xf')]('UserNotification,\x20%s,\x20%s',_0x2ac4bf,_0xf6e9('0x11'));_0x5b4fb1(_0x1dd92a['result'][_0xf6e9('0x16')]);}})[_0xf6e9('0x17')](function(_0x238f3e){logger[_0xf6e9('0x14')](_0xf6e9('0x10'),_0x2ac4bf,_0x238f3e);_0xed4286(_0x238f3e);});});}
\ No newline at end of file
+var _0x3bac=['request\x20sent','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','message','info','UserNotification,\x20%s,\x20%s','result','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./userNotification.socket','register','request','then'];(function(_0x3d823b,_0x245c0d){var _0x1c23cd=function(_0x179b18){while(--_0x179b18){_0x3d823b['push'](_0x3d823b['shift']());}};_0x1c23cd(++_0x245c0d);}(_0x3bac,0x188));var _0xc3ba=function(_0x340c13,_0x595d66){_0x340c13=_0x340c13-0x0;var _0x5a7d96=_0x3bac[_0x340c13];return _0x5a7d96;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xc3ba('0x0'));var BPromise=require(_0xc3ba('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc3ba('0x2'));var db=require(_0xc3ba('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xc3ba('0x4'));var config=require(_0xc3ba('0x5'));var jayson=require(_0xc3ba('0x6'));var client=jayson['client'][_0xc3ba('0x7')]({'port':0x232a});config[_0xc3ba('0x8')]=_[_0xc3ba('0x9')](config[_0xc3ba('0x8')],{'host':_0xc3ba('0xa'),'port':0x18eb});var socket=require(_0xc3ba('0xb'))(new Redis(config[_0xc3ba('0x8')]));require(_0xc3ba('0xc'))[_0xc3ba('0xd')](socket);function respondWithRpcPromise(_0x349f1c,_0x43c08d,_0x42caf6){return new BPromise(function(_0x4cde45,_0x5893ab){return client[_0xc3ba('0xe')](_0x349f1c,_0x42caf6)[_0xc3ba('0xf')](function(_0x4708db){logger['info']('UserNotification,\x20%s,\x20%s',_0x43c08d,_0xc3ba('0x10'));logger['debug'](_0xc3ba('0x11'),_0x43c08d,_0xc3ba('0x10'),JSON[_0xc3ba('0x12')](_0x4708db));if(_0x4708db[_0xc3ba('0x13')]){if(_0x4708db['error']['code']===0x1f4){logger[_0xc3ba('0x13')]('UserNotification,\x20%s,\x20%s',_0x43c08d,_0x4708db[_0xc3ba('0x13')][_0xc3ba('0x14')]);return _0x5893ab(_0x4708db['error'][_0xc3ba('0x14')]);}logger[_0xc3ba('0x13')]('UserNotification,\x20%s,\x20%s',_0x43c08d,_0x4708db[_0xc3ba('0x13')][_0xc3ba('0x14')]);return _0x4cde45(_0x4708db[_0xc3ba('0x13')][_0xc3ba('0x14')]);}else{logger[_0xc3ba('0x15')](_0xc3ba('0x16'),_0x43c08d,_0xc3ba('0x10'));_0x4cde45(_0x4708db[_0xc3ba('0x17')][_0xc3ba('0x14')]);}})['catch'](function(_0x4120cf){logger[_0xc3ba('0x13')](_0xc3ba('0x16'),_0x43c08d,_0x4120cf);_0x5893ab(_0x4120cf);});});}
\ No newline at end of file
index 6d88194..94c7563 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8470=['save','remove','update','emit','removeListener','register','userNotification:','./userNotification.events'];(function(_0x5a9fc4,_0x498cc0){var _0x473712=function(_0x2421b9){while(--_0x2421b9){_0x5a9fc4['push'](_0x5a9fc4['shift']());}};_0x473712(++_0x498cc0);}(_0x8470,0xef));var _0x0847=function(_0x4d7f64,_0x326a4d){_0x4d7f64=_0x4d7f64-0x0;var _0x5f2846=_0x8470[_0x4d7f64];return _0x5f2846;};'use strict';var UserNotificationEvents=require(_0x0847('0x0'));var events=[_0x0847('0x1'),_0x0847('0x2'),_0x0847('0x3')];function createListener(_0x298d5e,_0x1875ae){return function(_0x19a6eb){_0x1875ae[_0x0847('0x4')](_0x298d5e,_0x19a6eb);};}function removeListener(_0x12a42a,_0x39c6e6){return function(){UserNotificationEvents[_0x0847('0x5')](_0x12a42a,_0x39c6e6);};}exports[_0x0847('0x6')]=function(_0x2d0c5a){for(var _0x49ab3b=0x0,_0x4a02e2=events['length'];_0x49ab3b<_0x4a02e2;_0x49ab3b++){var _0x4494d2=events[_0x49ab3b];var _0xe61fc4=createListener(_0x0847('0x7')+_0x4494d2,_0x2d0c5a);UserNotificationEvents['on'](_0x4494d2,_0xe61fc4);}};
\ No newline at end of file
+var _0xdae8=['length','userNotification:','./userNotification.events','save','remove','update','emit','removeListener','register'];(function(_0x43e97d,_0x56a06b){var _0x424cd9=function(_0x4f574b){while(--_0x4f574b){_0x43e97d['push'](_0x43e97d['shift']());}};_0x424cd9(++_0x56a06b);}(_0xdae8,0xec));var _0x8dae=function(_0x4aa2c9,_0x3c74e5){_0x4aa2c9=_0x4aa2c9-0x0;var _0x212e33=_0xdae8[_0x4aa2c9];return _0x212e33;};'use strict';var UserNotificationEvents=require(_0x8dae('0x0'));var events=[_0x8dae('0x1'),_0x8dae('0x2'),_0x8dae('0x3')];function createListener(_0x5c88ff,_0x53a445){return function(_0x4a65ea){_0x53a445[_0x8dae('0x4')](_0x5c88ff,_0x4a65ea);};}function removeListener(_0x558094,_0x2a6b56){return function(){UserNotificationEvents[_0x8dae('0x5')](_0x558094,_0x2a6b56);};}exports[_0x8dae('0x6')]=function(_0x4e2ea9){for(var _0x43278b=0x0,_0x3e0a9c=events[_0x8dae('0x7')];_0x43278b<_0x3e0a9c;_0x43278b++){var _0x297a77=events[_0x43278b];var _0x512c87=createListener(_0x8dae('0x8')+_0x297a77,_0x4e2ea9);UserNotificationEvents['on'](_0x297a77,_0x512c87);}};
\ No newline at end of file
index 66719bc..5ab420c 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(_0x3a7979,_0x1ff89e){var _0x387b3a=function(_0x39e3cd){while(--_0x39e3cd){_0x3a7979['push'](_0x3a7979['shift']());}};_0x387b3a(++_0x1ff89e);}(_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(_0xf256f2,_0x33c478){var _0x1ae124=function(_0x431f2b){while(--_0x431f2b){_0xf256f2['push'](_0xf256f2['shift']());}};_0x1ae124(++_0x33c478);}(_0xedd9,0xfc));var _0x9edd=function(_0x194cb0,_0x35b219){_0x194cb0=_0x194cb0-0x0;var _0x165d12=_0xedd9[_0x194cb0];return _0x165d12;};'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 ed25d1a..e5654ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1fc=['exports'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0xa1fc,0xb1));var _0xca1f=function(_0x4cf3a0,_0xc29e73){_0x4cf3a0=_0x4cf3a0-0x0;var _0x25adb7=_0xa1fc[_0x4cf3a0];return _0x25adb7;};'use strict';var Sequelize=require('sequelize');module[_0xca1f('0x0')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x0034=['sequelize','exports','INTEGER'];(function(_0x2ea976,_0x3b16fb){var _0x350105=function(_0x3535c0){while(--_0x3535c0){_0x2ea976['push'](_0x2ea976['shift']());}};_0x350105(++_0x3b16fb);}(_0x0034,0x75));var _0x4003=function(_0x311fc0,_0x2c64f0){_0x311fc0=_0x311fc0-0x0;var _0xce2976=_0x0034[_0x311fc0];return _0xce2976;};'use strict';var Sequelize=require(_0x4003('0x0'));module[_0x4003('0x1')]={'penalty':{'type':Sequelize[_0x4003('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 1c81d67..07bf650 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd17=['../../config/logger','api','bluebird','request-promise','../../config/environment','./userOpenchannelQueue.attributes','exports','define','user_has_openchannel_queues','lodash','util'];(function(_0x16497e,_0x4eead5){var _0x34ee65=function(_0x512e1f){while(--_0x512e1f){_0x16497e['push'](_0x16497e['shift']());}};_0x34ee65(++_0x4eead5);}(_0xfd17,0x1a0));var _0x7fd1=function(_0x138b2c,_0x142181){_0x138b2c=_0x138b2c-0x0;var _0xa8b921=_0xfd17[_0x138b2c];return _0xa8b921;};'use strict';var _=require(_0x7fd1('0x0'));var util=require(_0x7fd1('0x1'));var logger=require(_0x7fd1('0x2'))(_0x7fd1('0x3'));var moment=require('moment');var BPromise=require(_0x7fd1('0x4'));var rp=require(_0x7fd1('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7fd1('0x6'));var attributes=require(_0x7fd1('0x7'));module[_0x7fd1('0x8')]=function(_0x50b31d,_0x548a78){return _0x50b31d[_0x7fd1('0x9')]('UserOpenchannelQueue',attributes,{'tableName':_0x7fd1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8a44=['define','UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./userOpenchannelQueue.attributes'];(function(_0x4c6cdb,_0x3706fe){var _0x18f659=function(_0x4d8b2d){while(--_0x4d8b2d){_0x4c6cdb['push'](_0x4c6cdb['shift']());}};_0x18f659(++_0x3706fe);}(_0x8a44,0x1d7));var _0x48a4=function(_0x4d038a,_0x463362){_0x4d038a=_0x4d038a-0x0;var _0x5d153c=_0x8a44[_0x4d038a];return _0x5d153c;};'use strict';var _=require(_0x48a4('0x0'));var util=require(_0x48a4('0x1'));var logger=require(_0x48a4('0x2'))(_0x48a4('0x3'));var moment=require(_0x48a4('0x4'));var BPromise=require(_0x48a4('0x5'));var rp=require(_0x48a4('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x48a4('0x7'));var config=require('../../config/environment');var attributes=require(_0x48a4('0x8'));module['exports']=function(_0xcc578c,_0x245983){return _0xcc578c[_0x48a4('0x9')](_0x48a4('0xa'),attributes,{'tableName':_0x48a4('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b110595..41be051 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd578=['rpc','jayson/promise','client','http','request','then','UserOpenchannelQueue,\x20%s,\x20%s','debug','request\x20sent','error','message','info','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0xad5599,_0x2d489a){var _0x259907=function(_0x5af2ff){while(--_0x5af2ff){_0xad5599['push'](_0xad5599['shift']());}};_0x259907(++_0x2d489a);}(_0xd578,0x19c));var _0x8d57=function(_0x53c0c4,_0x14752f){_0x53c0c4=_0x53c0c4-0x0;var _0x53a94f=_0xd578[_0x53c0c4];return _0x53a94f;};'use strict';var _=require(_0x8d57('0x0'));var util=require(_0x8d57('0x1'));var moment=require('moment');var BPromise=require(_0x8d57('0x2'));var rs=require(_0x8d57('0x3'));var fs=require('fs');var Redis=require(_0x8d57('0x4'));var db=require(_0x8d57('0x5'))['db'];var utils=require(_0x8d57('0x6'));var logger=require(_0x8d57('0x7'))(_0x8d57('0x8'));var config=require('../../config/environment');var jayson=require(_0x8d57('0x9'));var client=jayson[_0x8d57('0xa')][_0x8d57('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x59e2bc,_0x1ea4e3,_0x29214f){return new BPromise(function(_0x2c6566,_0x4e5786){return client[_0x8d57('0xc')](_0x59e2bc,_0x29214f)[_0x8d57('0xd')](function(_0x2be39a){logger['info'](_0x8d57('0xe'),_0x1ea4e3,'request\x20sent');logger[_0x8d57('0xf')]('UserOpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x1ea4e3,_0x8d57('0x10'),JSON['stringify'](_0x2be39a));if(_0x2be39a[_0x8d57('0x11')]){if(_0x2be39a[_0x8d57('0x11')]['code']===0x1f4){logger[_0x8d57('0x11')](_0x8d57('0xe'),_0x1ea4e3,_0x2be39a[_0x8d57('0x11')][_0x8d57('0x12')]);return _0x4e5786(_0x2be39a['error'][_0x8d57('0x12')]);}logger['error']('UserOpenchannelQueue,\x20%s,\x20%s',_0x1ea4e3,_0x2be39a[_0x8d57('0x11')]['message']);return _0x2c6566(_0x2be39a[_0x8d57('0x11')]['message']);}else{logger[_0x8d57('0x13')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x1ea4e3,'request\x20sent');_0x2c6566(_0x2be39a['result']['message']);}})[_0x8d57('0x14')](function(_0x1fa2b6){logger['error'](_0x8d57('0xe'),_0x1ea4e3,_0x1fa2b6);_0x4e5786(_0x1fa2b6);});});}
\ No newline at end of file
+var _0x4b94=['lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','request\x20sent','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','error','code','UserOpenchannelQueue,\x20%s,\x20%s','message','info','result','catch'];(function(_0x513047,_0x2199c5){var _0x15b779=function(_0x412fd5){while(--_0x412fd5){_0x513047['push'](_0x513047['shift']());}};_0x15b779(++_0x2199c5);}(_0x4b94,0xb8));var _0x44b9=function(_0xc4001c,_0x1bf8f0){_0xc4001c=_0xc4001c-0x0;var _0x49f7bc=_0x4b94[_0xc4001c];return _0x49f7bc;};'use strict';var _=require(_0x44b9('0x0'));var util=require(_0x44b9('0x1'));var moment=require('moment');var BPromise=require(_0x44b9('0x2'));var rs=require(_0x44b9('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x44b9('0x4'))['db'];var utils=require(_0x44b9('0x5'));var logger=require(_0x44b9('0x6'))(_0x44b9('0x7'));var config=require(_0x44b9('0x8'));var jayson=require(_0x44b9('0x9'));var client=jayson[_0x44b9('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x46bf5c,_0x34aea0,_0xae95bd){return new BPromise(function(_0x537969,_0x2e6e07){return client[_0x44b9('0xb')](_0x46bf5c,_0xae95bd)[_0x44b9('0xc')](function(_0x300a95){logger['info']('UserOpenchannelQueue,\x20%s,\x20%s',_0x34aea0,_0x44b9('0xd'));logger[_0x44b9('0xe')](_0x44b9('0xf'),_0x34aea0,_0x44b9('0xd'),JSON['stringify'](_0x300a95));if(_0x300a95[_0x44b9('0x10')]){if(_0x300a95[_0x44b9('0x10')][_0x44b9('0x11')]===0x1f4){logger[_0x44b9('0x10')](_0x44b9('0x12'),_0x34aea0,_0x300a95['error'][_0x44b9('0x13')]);return _0x2e6e07(_0x300a95[_0x44b9('0x10')][_0x44b9('0x13')]);}logger['error'](_0x44b9('0x12'),_0x34aea0,_0x300a95[_0x44b9('0x10')]['message']);return _0x537969(_0x300a95[_0x44b9('0x10')]['message']);}else{logger[_0x44b9('0x14')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x34aea0,'request\x20sent');_0x537969(_0x300a95[_0x44b9('0x15')][_0x44b9('0x13')]);}})[_0x44b9('0x16')](function(_0x20f865){logger[_0x44b9('0x10')](_0x44b9('0x12'),_0x34aea0,_0x20f865);_0x2e6e07(_0x20f865);});});}
\ No newline at end of file
index 98b478f..9eda8ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa09c=['removeResources','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfile.controller','isAuthenticated','index','get','/describe','/:id','show','/:id/sections','getResources','create','post','/:id/clone','clone','addSections','/:id/resources','addResources','delete','destroy','removeSections'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xa09c,0x151));var _0xca09=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0xa09c[_0x1d1779];return _0x2377e9;};'use strict';var multer=require('multer');var util=require(_0xca09('0x0'));var path=require(_0xca09('0x1'));var timeout=require(_0xca09('0x2'));var express=require(_0xca09('0x3'));var router=express['Router']();var fs_extra=require(_0xca09('0x4'));var auth=require(_0xca09('0x5'));var interaction=require(_0xca09('0x6'));var config=require(_0xca09('0x7'));var controller=require(_0xca09('0x8'));router['get']('/',auth[_0xca09('0x9')](),controller[_0xca09('0xa')]);router[_0xca09('0xb')](_0xca09('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0xca09('0xb')](_0xca09('0xd'),auth[_0xca09('0x9')](),controller[_0xca09('0xe')]);router['get'](_0xca09('0xf'),auth[_0xca09('0x9')](),controller['getSections']);router[_0xca09('0xb')]('/:id/resources',auth['isAuthenticated'](),controller[_0xca09('0x10')]);router['post']('/',auth[_0xca09('0x9')](),controller[_0xca09('0x11')]);router[_0xca09('0x12')](_0xca09('0x13'),auth[_0xca09('0x9')](),controller[_0xca09('0x14')]);router[_0xca09('0x12')](_0xca09('0xf'),auth[_0xca09('0x9')](),controller[_0xca09('0x15')]);router[_0xca09('0x12')](_0xca09('0x16'),auth[_0xca09('0x9')](),controller[_0xca09('0x17')]);router['put'](_0xca09('0xd'),auth[_0xca09('0x9')](),controller['update']);router[_0xca09('0x18')](_0xca09('0xd'),auth[_0xca09('0x9')](),controller[_0xca09('0x19')]);router[_0xca09('0x18')](_0xca09('0xf'),auth[_0xca09('0x9')](),controller[_0xca09('0x1a')]);router['delete'](_0xca09('0x16'),auth[_0xca09('0x9')](),controller[_0xca09('0x1b')]);module['exports']=router;
\ No newline at end of file
+var _0x4256=['/:id','destroy','removeResources','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfile.controller','get','isAuthenticated','/describe','describe','/:id/sections','getSections','/:id/resources','getResources','post','create','clone','addSections','addResources','put','update','delete'];(function(_0x55d0fd,_0x1b1bdd){var _0x40ce6f=function(_0x282df9){while(--_0x282df9){_0x55d0fd['push'](_0x55d0fd['shift']());}};_0x40ce6f(++_0x1b1bdd);}(_0x4256,0xce));var _0x6425=function(_0x4c630b,_0x25f8ef){_0x4c630b=_0x4c630b-0x0;var _0x181259=_0x4256[_0x4c630b];return _0x181259;};'use strict';var multer=require('multer');var util=require(_0x6425('0x0'));var path=require(_0x6425('0x1'));var timeout=require(_0x6425('0x2'));var express=require(_0x6425('0x3'));var router=express[_0x6425('0x4')]();var fs_extra=require(_0x6425('0x5'));var auth=require(_0x6425('0x6'));var interaction=require(_0x6425('0x7'));var config=require(_0x6425('0x8'));var controller=require(_0x6425('0x9'));router[_0x6425('0xa')]('/',auth[_0x6425('0xb')](),controller['index']);router[_0x6425('0xa')](_0x6425('0xc'),auth[_0x6425('0xb')](),controller[_0x6425('0xd')]);router[_0x6425('0xa')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x6425('0xa')](_0x6425('0xe'),auth[_0x6425('0xb')](),controller[_0x6425('0xf')]);router[_0x6425('0xa')](_0x6425('0x10'),auth[_0x6425('0xb')](),controller[_0x6425('0x11')]);router[_0x6425('0x12')]('/',auth[_0x6425('0xb')](),controller[_0x6425('0x13')]);router[_0x6425('0x12')]('/:id/clone',auth['isAuthenticated'](),controller[_0x6425('0x14')]);router[_0x6425('0x12')](_0x6425('0xe'),auth[_0x6425('0xb')](),controller[_0x6425('0x15')]);router[_0x6425('0x12')](_0x6425('0x10'),auth[_0x6425('0xb')](),controller[_0x6425('0x16')]);router[_0x6425('0x17')]('/:id',auth[_0x6425('0xb')](),controller[_0x6425('0x18')]);router[_0x6425('0x19')](_0x6425('0x1a'),auth[_0x6425('0xb')](),controller[_0x6425('0x1b')]);router[_0x6425('0x19')](_0x6425('0xe'),auth['isAuthenticated'](),controller['removeSections']);router[_0x6425('0x19')](_0x6425('0x10'),auth[_0x6425('0xb')](),controller[_0x6425('0x1c')]);module['exports']=router;
\ No newline at end of file
index 7753b69..9c8d8d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c0c=['setDataValue','crudPermissions','split','BOOLEAN','sequelize','exports','STRING'];(function(_0x5b3aca,_0x3d0d08){var _0x3c93b1=function(_0x11a2f5){while(--_0x11a2f5){_0x5b3aca['push'](_0x5b3aca['shift']());}};_0x3c93b1(++_0x3d0d08);}(_0x6c0c,0x169));var _0xc6c0=function(_0x493c66,_0x46241d){_0x493c66=_0x493c66-0x0;var _0x1634e4=_0x6c0c[_0x493c66];return _0x1634e4;};'use strict';var Sequelize=require(_0xc6c0('0x0'));module[_0xc6c0('0x1')]={'name':{'type':Sequelize[_0xc6c0('0x2')],'allowNull':![],'unique':'name'},'crudPermissions':{'type':Sequelize[_0xc6c0('0x2')],'set':function(_0x2bca26){this[_0xc6c0('0x3')](_0xc6c0('0x4'),_0x2bca26?_0x2bca26['join'](''):[]);},'get':function(){return this['getDataValue'](_0xc6c0('0x4'))?this['getDataValue']('crudPermissions')[_0xc6c0('0x5')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xc6c0('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xc6c0('0x6')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xc6c0('0x6')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xc6c0('0x6')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xc6c0('0x6')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xc6c0('0x6')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xc6c0('0x6')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x6b25=['BOOLEAN','exports','name','setDataValue','crudPermissions','join','getDataValue','split','STRING'];(function(_0xef8146,_0x459c34){var _0x5a6cb0=function(_0x2f84ec){while(--_0x2f84ec){_0xef8146['push'](_0xef8146['shift']());}};_0x5a6cb0(++_0x459c34);}(_0x6b25,0x1f0));var _0x56b2=function(_0x3da9ed,_0x299841){_0x3da9ed=_0x3da9ed-0x0;var _0x7910f1=_0x6b25[_0x3da9ed];return _0x7910f1;};'use strict';var Sequelize=require('sequelize');module[_0x56b2('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x56b2('0x1')},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x44af37){this[_0x56b2('0x2')](_0x56b2('0x3'),_0x44af37?_0x44af37[_0x56b2('0x4')](''):[]);},'get':function(){return this[_0x56b2('0x5')](_0x56b2('0x3'))?this[_0x56b2('0x5')](_0x56b2('0x3'))[_0x56b2('0x6')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x56b2('0x7')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x56b2('0x8')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x56b2('0x8')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x56b2('0x8')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x56b2('0x8')],'defaultValue':!![]}};
\ No newline at end of file
index a113eef..c25cbb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd878=['key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','pick','filter','where','VIRTUAL','merge','options','UserProfile','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','find','create','body','clone','get','updatedAt','crudPermissions','createdAt','sequelize','transaction','UserProfileSection','autoAssociation','UserProfileResource','omit','userProfileId','Resources','describe','addSections','sectionId','each','push','removeSections','ids','includes','subsections','enabled','forEach','resourceId','addResources','bulkCreate','removeResources','getResources','section','Missing\x20section\x20parameter','nolimit','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','socket.io-emitter','./userProfile.socket','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','then','destroy','error','stack','name','map','fieldName','type'];(function(_0x35b7d4,_0x5a5c43){var _0x4e8cee=function(_0x66859c){while(--_0x66859c){_0x35b7d4['push'](_0x35b7d4['shift']());}};_0x4e8cee(++_0x5a5c43);}(_0xd878,0x118));var _0x8d87=function(_0x4924d3,_0x5c088e){_0x4924d3=_0x4924d3-0x0;var _0x756f4e=_0xd878[_0x4924d3];return _0x756f4e;};'use strict';var emlformat=require(_0x8d87('0x0'));var rimraf=require(_0x8d87('0x1'));var zipdir=require(_0x8d87('0x2'));var jsonpatch=require(_0x8d87('0x3'));var rp=require(_0x8d87('0x4'));var moment=require(_0x8d87('0x5'));var BPromise=require(_0x8d87('0x6'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x8d87('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8d87('0x8'));var _=require(_0x8d87('0x9'));var squel=require(_0x8d87('0xa'));var crypto=require(_0x8d87('0xb'));var jsforce=require(_0x8d87('0xc'));var deskjs=require(_0x8d87('0xd'));var toCsv=require(_0x8d87('0xe'));var querystring=require(_0x8d87('0xf'));var Papa=require(_0x8d87('0x10'));var Redis=require('ioredis');var authService=require(_0x8d87('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8d87('0x12'));var logger=require(_0x8d87('0x13'))(_0x8d87('0x14'));var utils=require(_0x8d87('0x15'));var config=require(_0x8d87('0x16'));var licenseUtil=require(_0x8d87('0x17'));var db=require('../../mysqldb')['db'];config[_0x8d87('0x18')]=_['defaults'](config[_0x8d87('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x8d87('0x19'))(new Redis(config[_0x8d87('0x18')]));require(_0x8d87('0x1a'))['register'](socket);function respondWithStatusCode(_0x3107dd,_0x53b15e){_0x53b15e=_0x53b15e||0xcc;return function(_0x54ac96){if(_0x54ac96){return _0x3107dd[_0x8d87('0x1b')](_0x53b15e);}return _0x3107dd[_0x8d87('0x1c')](_0x53b15e)[_0x8d87('0x1d')]();};}function respondWithResult(_0x28c54e,_0x262833){_0x262833=_0x262833||0xc8;return function(_0x21d1dc){if(_0x21d1dc){return _0x28c54e['status'](_0x262833)[_0x8d87('0x1e')](_0x21d1dc);}};}function respondWithFilteredResult(_0x3326d5,_0x5b627f){return function(_0x53fe79){if(_0x53fe79){var _0x3e04c8=typeof _0x5b627f[_0x8d87('0x1f')]===_0x8d87('0x20')&&typeof _0x5b627f['limit']===_0x8d87('0x20');var _0x3a3678=_0x53fe79[_0x8d87('0x21')];var _0xde0183=_0x3e04c8?0x0:_0x5b627f[_0x8d87('0x1f')];var _0x2358f1=_0x3e04c8?_0x53fe79[_0x8d87('0x21')]:_0x5b627f[_0x8d87('0x1f')]+_0x5b627f[_0x8d87('0x22')];var _0xfe5cc1;if(_0x2358f1>=_0x3a3678){_0x2358f1=_0x3a3678;_0xfe5cc1=0xc8;}else{_0xfe5cc1=0xce;}_0x3326d5[_0x8d87('0x1c')](_0xfe5cc1);return _0x3326d5[_0x8d87('0x23')](_0x8d87('0x24'),_0xde0183+'-'+_0x2358f1+'/'+_0x3a3678)[_0x8d87('0x1e')](_0x53fe79);}return null;};}function patchUpdates(_0x1d6e42){return function(_0x358998){try{jsonpatch[_0x8d87('0x25')](_0x358998,_0x1d6e42,!![]);}catch(_0x1128f9){return BPromise[_0x8d87('0x26')](_0x1128f9);}return _0x358998['save']();};}function saveUpdates(_0x1ce316,_0x2cd362){return function(_0x5f7030){if(_0x5f7030){return _0x5f7030['update'](_0x1ce316)[_0x8d87('0x27')](function(_0x218ed7){return _0x218ed7;});}return null;};}function removeEntity(_0x46e302,_0x2383b4){return function(_0x35e2f5){if(_0x35e2f5){return _0x35e2f5[_0x8d87('0x28')]()[_0x8d87('0x27')](function(){_0x46e302[_0x8d87('0x1c')](0xcc)[_0x8d87('0x1d')]();});}};}function handleEntityNotFound(_0xa41b40,_0x36f078){return function(_0x2b6aa1){if(!_0x2b6aa1){_0xa41b40[_0x8d87('0x1b')](0x194);}return _0x2b6aa1;};}function handleError(_0x20988d,_0xd70aae){_0xd70aae=_0xd70aae||0x1f4;return function(_0x40f54d){logger[_0x8d87('0x29')](_0x40f54d[_0x8d87('0x2a')]);if(_0x40f54d[_0x8d87('0x2b')]){delete _0x40f54d[_0x8d87('0x2b')];}_0x20988d[_0x8d87('0x1c')](_0xd70aae)['send'](_0x40f54d);};}exports['index']=function(_0x52d932,_0x22aaef){var _0x1b3a71={},_0x3fc8f0={},_0x4638cc={'count':0x0,'rows':[]};var _0x53c29d=_[_0x8d87('0x2c')](db['UserProfile']['rawAttributes'],function(_0x1aad96){return{'name':_0x1aad96[_0x8d87('0x2d')],'type':_0x1aad96[_0x8d87('0x2e')][_0x8d87('0x2f')]};});_0x3fc8f0[_0x8d87('0x30')]=_[_0x8d87('0x2c')](_0x53c29d,_0x8d87('0x2b'));_0x3fc8f0[_0x8d87('0x31')]=_['keys'](_0x52d932[_0x8d87('0x31')]);_0x3fc8f0[_0x8d87('0x32')]=_[_0x8d87('0x33')](_0x3fc8f0[_0x8d87('0x30')],_0x3fc8f0['query']);_0x1b3a71[_0x8d87('0x34')]=_[_0x8d87('0x33')](_0x3fc8f0['model'],qs['fields'](_0x52d932[_0x8d87('0x31')][_0x8d87('0x35')]));_0x1b3a71['attributes']=_0x1b3a71[_0x8d87('0x34')][_0x8d87('0x36')]?_0x1b3a71['attributes']:_0x3fc8f0[_0x8d87('0x30')];if(!_0x52d932[_0x8d87('0x31')][_0x8d87('0x37')]('nolimit')){_0x1b3a71[_0x8d87('0x22')]=qs['limit'](_0x52d932[_0x8d87('0x31')][_0x8d87('0x22')]);_0x1b3a71[_0x8d87('0x1f')]=qs[_0x8d87('0x1f')](_0x52d932['query'][_0x8d87('0x1f')]);}_0x1b3a71[_0x8d87('0x38')]=qs['sort'](_0x52d932['query']['sort']);_0x1b3a71['where']=qs[_0x8d87('0x32')](_[_0x8d87('0x39')](_0x52d932[_0x8d87('0x31')],_0x3fc8f0['filters']),_0x53c29d);if(_0x52d932[_0x8d87('0x31')][_0x8d87('0x3a')]){_0x1b3a71['where']=_['merge'](_0x1b3a71[_0x8d87('0x3b')],{'$or':_[_0x8d87('0x2c')](_0x53c29d,function(_0x554745){if(_0x554745[_0x8d87('0x2e')]!==_0x8d87('0x3c')){var _0x816268={};_0x816268[_0x554745['name']]={'$like':'%'+_0x52d932[_0x8d87('0x31')][_0x8d87('0x3a')]+'%'};return _0x816268;}})});}_0x1b3a71=_[_0x8d87('0x3d')]({},_0x1b3a71,_0x52d932[_0x8d87('0x3e')]);var _0x18ba54={'where':_0x1b3a71[_0x8d87('0x3b')]};return db[_0x8d87('0x3f')][_0x8d87('0x21')](_0x18ba54)['then'](function(_0x1d6a80){_0x4638cc[_0x8d87('0x21')]=_0x1d6a80;if(_0x52d932[_0x8d87('0x31')][_0x8d87('0x40')]){_0x1b3a71[_0x8d87('0x41')]=[{'all':!![]}];}return db[_0x8d87('0x3f')][_0x8d87('0x42')](_0x1b3a71);})[_0x8d87('0x27')](function(_0x2a9893){_0x4638cc[_0x8d87('0x43')]=_0x2a9893;return _0x4638cc;})['then'](respondWithFilteredResult(_0x22aaef,_0x1b3a71))[_0x8d87('0x44')](handleError(_0x22aaef,null));};exports[_0x8d87('0x45')]=function(_0x3146ff,_0x227192){var _0x6452da={'raw':![],'where':{'id':_0x3146ff[_0x8d87('0x46')]['id']}},_0x4591f4={};_0x4591f4[_0x8d87('0x30')]=_[_0x8d87('0x47')](db[_0x8d87('0x3f')][_0x8d87('0x48')]);_0x4591f4['query']=_[_0x8d87('0x47')](_0x3146ff['query']);_0x4591f4[_0x8d87('0x32')]=_[_0x8d87('0x33')](_0x4591f4[_0x8d87('0x30')],_0x4591f4['query']);_0x6452da[_0x8d87('0x34')]=_[_0x8d87('0x33')](_0x4591f4['model'],qs[_0x8d87('0x35')](_0x3146ff[_0x8d87('0x31')]['fields']));_0x6452da[_0x8d87('0x34')]=_0x6452da[_0x8d87('0x34')][_0x8d87('0x36')]?_0x6452da[_0x8d87('0x34')]:_0x4591f4[_0x8d87('0x30')];if(_0x3146ff[_0x8d87('0x31')][_0x8d87('0x40')]){_0x6452da[_0x8d87('0x41')]=[{'all':!![]}];}_0x6452da=_[_0x8d87('0x3d')]({},_0x6452da,_0x3146ff['options']);return db[_0x8d87('0x3f')][_0x8d87('0x49')](_0x6452da)['then'](handleEntityNotFound(_0x227192,null))[_0x8d87('0x27')](respondWithResult(_0x227192,null))[_0x8d87('0x44')](handleError(_0x227192,null));};exports[_0x8d87('0x4a')]=function(_0x2e9526,_0xffbfcb){return db['UserProfile'][_0x8d87('0x4a')](_0x2e9526[_0x8d87('0x4b')],{})[_0x8d87('0x27')](respondWithResult(_0xffbfcb,0xc9))['catch'](handleError(_0xffbfcb,null));};exports[_0x8d87('0x4c')]=function(_0xd08253,_0x591269){var _0x1316fc={'where':{'id':_0xd08253['params']['id']}},_0x205ccc={};_0x205ccc['model']=_[_0x8d87('0x47')](db[_0x8d87('0x3f')][_0x8d87('0x48')]);_0x1316fc[_0x8d87('0x34')]=_[_0x8d87('0x33')](_0x205ccc[_0x8d87('0x30')],qs[_0x8d87('0x35')](_0xd08253['query']['fields']));_0x1316fc[_0x8d87('0x34')]=_0x1316fc['attributes'][_0x8d87('0x36')]?_0x1316fc[_0x8d87('0x34')]:_0x205ccc[_0x8d87('0x30')];if(_0xd08253[_0x8d87('0x31')][_0x8d87('0x40')]){_0x1316fc[_0x8d87('0x41')]=[{'all':!![]}];}_0x1316fc=_[_0x8d87('0x3d')]({},_0x1316fc,_0xd08253['options']);return db['UserProfile'][_0x8d87('0x49')](_0x1316fc)['then'](handleEntityNotFound(_0x591269,null))['then'](function(_0x4a5daa){if(_0x4a5daa){var _0x2ba2ab=_0x4a5daa[_0x8d87('0x4d')]({'plain':!![]});_0x2ba2ab=qs['omit'](_0x2ba2ab,['id','createdAt',_0x8d87('0x4e'),_0x8d87('0x4f')]);_0xd08253['body']=_['omit'](_0xd08253[_0x8d87('0x4b')],['id',_0x8d87('0x50'),'updatedAt']);return db[_0x8d87('0x51')][_0x8d87('0x52')](function(_0x18f80e){return db[_0x8d87('0x3f')][_0x8d87('0x4a')](_[_0x8d87('0x3d')](_0x2ba2ab,_0xd08253[_0x8d87('0x4b')]),{'include':_0xd08253[_0x8d87('0x31')][_0x8d87('0x40')]?[{'all':!![]}]:undefined,'transaction':_0x18f80e})['then'](function(_0x2d8f83){var _0x6b6975=_0x2d8f83['get']({'plain':!![]});return db[_0x8d87('0x53')][_0x8d87('0x42')]({'where':{'userProfileId':_0xd08253[_0x8d87('0x46')]['id']},'raw':!![]})['then'](function(_0x5e17d0){if(_0x5e17d0){return BPromise['each'](_0x5e17d0,function(_0x16ed3f){return new BPromise(function(_0x1987e6,_0x256a4f){if(_0x16ed3f[_0x8d87('0x54')]===null||_0x16ed3f[_0x8d87('0x54')]===0x1)_0x1987e6(null);return db[_0x8d87('0x55')][_0x8d87('0x42')]({'where':{'sectionId':_0x16ed3f['id']},'raw':!![]})[_0x8d87('0x27')](function(_0x481f92){var _0x5a8e8e=_['map'](_0x481f92,function(_0x59eebe){return qs[_0x8d87('0x56')](_0x59eebe,['id',_0x8d87('0x50'),_0x8d87('0x4e'),'sectionId']);});_0x1987e6(_0x5a8e8e);})[_0x8d87('0x44')](function(_0x252654){_0x256a4f(_0x252654);});})[_0x8d87('0x27')](function(_0x3af54a){var _0x2f2875=qs[_0x8d87('0x56')](_0x16ed3f,['id','createdAt','updatedAt']);_0x2f2875[_0x8d87('0x57')]=_0x6b6975['id'];if(_0x3af54a)_0x2f2875[_0x8d87('0x58')]=_0x3af54a;return _0x2f2875;})['then'](function(_0x5da096){return db[_0x8d87('0x53')][_0x8d87('0x4a')](_0x5da096,{'include':[{'model':db[_0x8d87('0x55')],'as':'Resources'}],'raw':!![],'transaction':_0x18f80e});});})[_0x8d87('0x27')](function(){return _0x6b6975;});}});});});}})[_0x8d87('0x27')](respondWithResult(_0x591269,0xc9))[_0x8d87('0x44')](handleError(_0x591269,null));};exports['update']=function(_0x2e09ca,_0x452540){if(_0x2e09ca[_0x8d87('0x4b')]['id']){delete _0x2e09ca['body']['id'];}return db[_0x8d87('0x3f')]['find']({'where':{'id':_0x2e09ca[_0x8d87('0x46')]['id']}})['then'](handleEntityNotFound(_0x452540,null))[_0x8d87('0x27')](saveUpdates(_0x2e09ca[_0x8d87('0x4b')],null))[_0x8d87('0x27')](respondWithResult(_0x452540,null))['catch'](handleError(_0x452540,null));};exports[_0x8d87('0x28')]=function(_0x8e043d,_0xc8186){return db['UserProfile'][_0x8d87('0x49')]({'where':{'id':_0x8e043d['params']['id']}})['then'](handleEntityNotFound(_0xc8186,null))[_0x8d87('0x27')](removeEntity(_0xc8186,null))['catch'](handleError(_0xc8186,null));};exports[_0x8d87('0x59')]=function(_0x5b0fb6,_0x174433){return db[_0x8d87('0x3f')][_0x8d87('0x59')]()['then'](respondWithResult(_0x174433,null))[_0x8d87('0x44')](handleError(_0x174433,null));};exports[_0x8d87('0x5a')]=function(_0x3f462f,_0x3f460f){var _0x3931fa=_0x3f462f[_0x8d87('0x4b')];return db[_0x8d87('0x3f')][_0x8d87('0x49')]({'where':{'id':_0x3f462f[_0x8d87('0x46')]['id']}})[_0x8d87('0x27')](handleEntityNotFound(_0x3f460f,null))['then'](function(_0x3faffd){if(_0x3faffd){return db['sequelize'][_0x8d87('0x52')](function(_0x4ef9af){return db[_0x8d87('0x53')]['destroy']({'where':{'userProfileId':_0x3f462f[_0x8d87('0x46')]['id'],'sectionId':_[_0x8d87('0x2c')](_0x3931fa,function(_0x50a125){return _0x50a125[_0x8d87('0x5b')];})},'transaction':_0x4ef9af})['then'](function(){var _0x1bcf54=_[_0x8d87('0x2c')](_0x3931fa,function(_0x36cb01){_0x36cb01['userProfileId']=_0x3f462f[_0x8d87('0x46')]['id'];return _0x36cb01;});var _0x3ba937=[];return BPromise[_0x8d87('0x5c')](_0x1bcf54,function(_0x402ad0){return db[_0x8d87('0x53')][_0x8d87('0x4a')](_0x402ad0,{'include':[{'model':db['UserProfileResource'],'as':_0x8d87('0x58')}],'raw':!![],'transaction':_0x4ef9af})[_0x8d87('0x27')](function(_0x3f746d){_0x3ba937[_0x8d87('0x5d')](_0x3f746d['get']({'plain':!![]}));});})[_0x8d87('0x27')](function(){return _0x3ba937;});});});}})[_0x8d87('0x27')](function(_0x526126){return _0x526126;})[_0x8d87('0x27')](respondWithResult(_0x3f460f,null))[_0x8d87('0x44')](handleError(_0x3f460f,null));};exports[_0x8d87('0x5e')]=function(_0x45dc53,_0x5573f6){var _0x2bbc06;return db[_0x8d87('0x3f')]['find']({'where':{'id':_0x45dc53[_0x8d87('0x46')]['id']},'attributes':['id',_0x8d87('0x2b')]})['then'](handleEntityNotFound(_0x5573f6,null))[_0x8d87('0x27')](function(_0x20c42c){if(_0x20c42c){_0x2bbc06=_0x20c42c;return db[_0x8d87('0x53')][_0x8d87('0x28')]({'where':{'userProfileId':_0x45dc53[_0x8d87('0x46')]['id'],'sectionId':_0x45dc53[_0x8d87('0x31')][_0x8d87('0x5f')]}});}})['then'](function(){return _0x2bbc06;})['then'](respondWithStatusCode(_0x5573f6,null))['catch'](handleError(_0x5573f6,null));};exports['getSections']=function(_0x5802fa,_0x12e2a7){var _0x4700d0=[];var _0x4be86d=[];return db[_0x8d87('0x53')][_0x8d87('0x42')]({'where':{'userProfileId':_0x5802fa[_0x8d87('0x46')]['id']},'raw':!![]})[_0x8d87('0x27')](function(_0xa2903e){_0x4700d0=_[_0x8d87('0x3a')](_0xa2903e,function(_0x571a22){return _0x571a22['enabled']===0x1||_[_0x8d87('0x60')]([0x3eb,0x709],_0x571a22[_0x8d87('0x5b')]);});if(!_['isEmpty'](_0x4700d0)){return _['map'](_0x4700d0,function(_0x2f5e5b){return _0x2f5e5b['sectionId'];});}else{return;}})[_0x8d87('0x27')](function(_0x4daa2d){if(_0x4daa2d)_0x4be86d=_0x4daa2d;if(_[_0x8d87('0x60')](_0x4be86d,0x64)){var _0x3c0b02=_[_0x8d87('0x49')](_0x4700d0,{'sectionId':0x64});return hasDefaultDashboard(_0x3c0b02)[_0x8d87('0x27')](function(_0x9748c4){return _[_0x8d87('0x2c')](_0x4700d0,function(_0x4e670b){if(_0x4e670b['sectionId']===0x64){_0x4e670b[_0x8d87('0x61')]=_0x9748c4;}return _0x4e670b;});});}else{return;}})[_0x8d87('0x27')](function(_0x3eb3a3){if(_0x3eb3a3)_0x4700d0=_0x3eb3a3;if(_['includes'](_0x4be86d,0x3eb)){var _0x8b2319=_['find'](_0x4700d0,{'sectionId':0x3eb});return getCustomDashboards(_0x8b2319)[_0x8d87('0x27')](function(_0x3274a3){return _[_0x8d87('0x2c')](_0x4700d0,function(_0x23e3fc){if(_0x8b2319[_0x8d87('0x62')]){if(_0x23e3fc['sectionId']===0x3eb){_0x23e3fc[_0x8d87('0x61')]=_0x3274a3;}}else{if(_0x23e3fc[_0x8d87('0x5b')]===0x64){_0x23e3fc[_0x8d87('0x61')]=_0x3274a3;}}return _0x23e3fc;});});}else{return;}})[_0x8d87('0x27')](function(_0x20f611){if(_0x20f611)_0x4700d0=_0x20f611;if(_[_0x8d87('0x60')](_0x4be86d,0x709)){var _0x5d3f91=_[_0x8d87('0x49')](_0x4700d0,{'sectionId':0x709});return getPlugins(_0x5d3f91)[_0x8d87('0x27')](function(_0x55faa4){if(_0x5d3f91['enabled']){return _[_0x8d87('0x2c')](_0x4700d0,function(_0x3b7ec2){if(_0x3b7ec2[_0x8d87('0x5b')]===0x709){_0x3b7ec2[_0x8d87('0x61')]=_0x55faa4;}return _0x3b7ec2;});}else{var _0x492643={'sectionId':0x76c,'enabled':0x1,'subsections':_0x55faa4};var _0x1ca6a2=_[_0x8d87('0x2c')](_0x4700d0);_0x1ca6a2[_0x8d87('0x5d')](_0x492643);return _0x1ca6a2;}});}else{return;}})[_0x8d87('0x27')](function(_0x5b170c){if(_0x5b170c)_0x4700d0=_0x5b170c;return _['filter'](_0x4700d0,[_0x8d87('0x62'),0x1]);})[_0x8d87('0x27')](respondWithResult(_0x12e2a7,null))[_0x8d87('0x44')](handleError(_0x12e2a7,null));};function hasDefaultDashboard(_0x55cf73){var _0x44abb0=[0x65];return new BPromise(function(_0x3395b9,_0x2ff357){try{if(_0x55cf73[_0x8d87('0x54')]){_0x3395b9(_0x44abb0);}else{return db['UserProfileResource']['findOne']({'where':{'sectionId':_0x55cf73['id']},'raw':!![]})[_0x8d87('0x27')](function(_0x3cbe76){_0x3cbe76?_0x3395b9(_0x44abb0):_0x3395b9();});}}catch(_0x58aa26){_0x2ff357(_0x58aa26);}});}function getCustomDashboards(_0x527c43){var _0x28f48f=[];return new BPromise(function(_0x472666,_0x6e7a18){try{if(_0x527c43[_0x8d87('0x54')]){return db['Dashboard']['findAll']({'raw':!![]})[_0x8d87('0x27')](function(_0x399190){_0x399190['forEach'](function(_0x107acb){_0x28f48f[_0x8d87('0x5d')](_0x107acb['id']+0x1869f);});_0x472666(_0x28f48f);});}else{return db[_0x8d87('0x55')][_0x8d87('0x42')]({'where':{'sectionId':_0x527c43['id']},'raw':!![]})[_0x8d87('0x27')](function(_0x30464a){_0x30464a[_0x8d87('0x63')](function(_0x281220){_0x28f48f[_0x8d87('0x5d')](_0x281220[_0x8d87('0x64')]+0x1869f);});_0x472666(_0x28f48f);});}}catch(_0x1a3321){_0x6e7a18(_0x1a3321);}});}function getPlugins(_0x545c8d){var _0x2d04f6=[];return new BPromise(function(_0x1ce591,_0x41754e){try{if(_0x545c8d[_0x8d87('0x54')]){return db['Plugin'][_0x8d87('0x42')]({'raw':!![]})['then'](function(_0xb7cb31){_0xb7cb31[_0x8d87('0x63')](function(_0x27e72f){_0x2d04f6[_0x8d87('0x5d')](_0x27e72f['id']+0x15b38);});_0x1ce591(_0x2d04f6);});}else{return db[_0x8d87('0x55')][_0x8d87('0x42')]({'where':{'sectionId':_0x545c8d['id']},'raw':!![]})[_0x8d87('0x27')](function(_0x5b1faa){_0x5b1faa[_0x8d87('0x63')](function(_0xce1f09){_0x2d04f6['push'](_0xce1f09[_0x8d87('0x64')]+0x15b38);});_0x1ce591(_0x2d04f6);});}}catch(_0x336572){_0x41754e(_0x336572);}});}exports[_0x8d87('0x65')]=function(_0xf3a391,_0x21f3c9){return db[_0x8d87('0x3f')][_0x8d87('0x49')]({'where':{'id':_0xf3a391[_0x8d87('0x46')]['id']}})[_0x8d87('0x27')](handleEntityNotFound(_0x21f3c9,null))[_0x8d87('0x27')](function(_0x2498c0){if(_0x2498c0){return db[_0x8d87('0x51')][_0x8d87('0x52')](function(_0x3dd619){return db[_0x8d87('0x53')][_0x8d87('0x42')]({'where':{'userProfileId':_0xf3a391[_0x8d87('0x46')]['id']},'attributes':['id'],'raw':!![]})[_0x8d87('0x27')](function(_0x1cb525){if(_0x1cb525){return db['UserProfileSection'][_0x8d87('0x28')]({'where':{'userProfileId':_0xf3a391['params']['id'],'id':_[_0x8d87('0x2c')](_0x1cb525,function(_0x6af51d){return _0x6af51d['id'];})},'transaction':_0x3dd619});}})['then'](function(_0x1b09fc){var _0x27e561=_[_0x8d87('0x2c')](_0xf3a391[_0x8d87('0x4b')],function(_0x4b7a2b){_0x4b7a2b[_0x8d87('0x57')]=_0xf3a391[_0x8d87('0x46')]['id'];return _0x4b7a2b;});return db[_0x8d87('0x53')][_0x8d87('0x66')](_0x27e561,{'raw':!![],'transaction':_0x3dd619});})[_0x8d87('0x27')](function(_0x3ba247){var _0x1f958b=_['filter'](_[_0x8d87('0x2c')](_0x3ba247,function(_0x120be5){return _0x120be5[_0x8d87('0x4d')]({'plain':!![]});}),{'includeAll':![]});if(_0x1f958b){return db[_0x8d87('0x53')][_0x8d87('0x42')]({'where':{'userProfileId':_0xf3a391[_0x8d87('0x46')]['id'],'sectionId':_[_0x8d87('0x2c')](_0x1f958b,function(_0x27ac8f){return _0x27ac8f[_0x8d87('0x5b')];})},'attributes':['id',_0x8d87('0x5b')],'raw':!![]})[_0x8d87('0x27')](function(_0x112bdd){var _0x154de7=_[_0x8d87('0x2c')](_0xf3a391[_0x8d87('0x4b')],function(_0x4e132e){_0x4e132e[_0x8d87('0x57')]=_0xf3a391[_0x8d87('0x46')]['id'];return _0x4e132e;});return db[_0x8d87('0x55')]['bulkCreate'](_0x154de7,{'raw':!![],'transaction':_0x3dd619});});}})['catch'](handleError(_0x21f3c9,null));});}})[_0x8d87('0x27')](function(_0x317010){var _0x3a101e=_['map'](_0x317010,function(_0x4375b1){return _0x4375b1[_0x8d87('0x4d')]({'plain':!![]});});})[_0x8d87('0x27')](respondWithResult(_0x21f3c9,null))[_0x8d87('0x44')](handleError(_0x21f3c9,null));};exports[_0x8d87('0x67')]=function(_0x9a784e,_0x11388e,_0x3f1dde){return db[_0x8d87('0x3f')]['find']({'where':{'id':_0x9a784e[_0x8d87('0x46')]['id']}})['then'](handleEntityNotFound(_0x11388e,null))['then'](function(_0x409eed){if(_0x409eed){return _0x409eed[_0x8d87('0x67')](_0x9a784e[_0x8d87('0x31')][_0x8d87('0x5f')]);}})[_0x8d87('0x27')](respondWithStatusCode(_0x11388e,null))[_0x8d87('0x44')](handleError(_0x11388e,null));};exports[_0x8d87('0x68')]=function(_0x3332b7,_0x2d426b){var _0x17da06={};if(!_0x3332b7['query'][_0x8d87('0x69')])throw new Error(_0x8d87('0x6a'));if(!_0x3332b7[_0x8d87('0x31')]['hasOwnProperty'](_0x8d87('0x6b'))){_0x17da06[_0x8d87('0x22')]=qs['limit'](_0x3332b7['query'][_0x8d87('0x22')]);_0x17da06[_0x8d87('0x1f')]=qs['offset'](_0x3332b7[_0x8d87('0x31')][_0x8d87('0x1f')]);}return db[_0x8d87('0x3f')][_0x8d87('0x49')]({'where':{'id':_0x3332b7[_0x8d87('0x46')]['id']}})[_0x8d87('0x27')](function(_0x541011){if(!_0x541011)throw new Error(_0x8d87('0x6c')+_0x3332b7[_0x8d87('0x46')]['id']);return db[_0x8d87('0x3f')]['getResources'](_0x3332b7);})[_0x8d87('0x27')](respondWithFilteredResult(_0x2d426b,_0x17da06))[_0x8d87('0x44')](handleError(_0x2d426b,null));};
\ No newline at end of file
+var _0xfcbb=['includeAll','include','findAll','catch','show','rawAttributes','find','create','clone','params','get','updatedAt','body','createdAt','sequelize','transaction','autoAssociation','UserProfileResource','omit','sectionId','userProfileId','Resources','describe','addSections','UserProfileSection','each','push','removeSections','getSections','enabled','includes','isEmpty','subsections','Plugin','forEach','addResources','bulkCreate','removeResources','ids','section','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','./userProfile.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','map','UserProfile','fieldName','type','key','query','keys','filters','intersection','model','fields','length','attributes','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options'];(function(_0x35d92a,_0x411144){var _0x1038f0=function(_0x50c3c6){while(--_0x50c3c6){_0x35d92a['push'](_0x35d92a['shift']());}};_0x1038f0(++_0x411144);}(_0xfcbb,0x10d));var _0xbfcb=function(_0x199a5d,_0x4e2414){_0x199a5d=_0x199a5d-0x0;var _0x4f0c3d=_0xfcbb[_0x199a5d];return _0x4f0c3d;};'use strict';var emlformat=require(_0xbfcb('0x0'));var rimraf=require(_0xbfcb('0x1'));var zipdir=require(_0xbfcb('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xbfcb('0x3'));var BPromise=require(_0xbfcb('0x4'));var Mustache=require(_0xbfcb('0x5'));var util=require(_0xbfcb('0x6'));var path=require(_0xbfcb('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xbfcb('0x8'));var fs=require('fs');var fs_extra=require(_0xbfcb('0x9'));var _=require(_0xbfcb('0xa'));var squel=require(_0xbfcb('0xb'));var crypto=require(_0xbfcb('0xc'));var jsforce=require(_0xbfcb('0xd'));var deskjs=require(_0xbfcb('0xe'));var toCsv=require('to-csv');var querystring=require(_0xbfcb('0xf'));var Papa=require(_0xbfcb('0x10'));var Redis=require(_0xbfcb('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xbfcb('0x12'));var as=require(_0xbfcb('0x13'));var hardwareService=require(_0xbfcb('0x14'));var logger=require(_0xbfcb('0x15'))(_0xbfcb('0x16'));var utils=require(_0xbfcb('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xbfcb('0x18'));var db=require(_0xbfcb('0x19'))['db'];config[_0xbfcb('0x1a')]=_[_0xbfcb('0x1b')](config['redis'],{'host':_0xbfcb('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbfcb('0x1a')]));require(_0xbfcb('0x1d'))[_0xbfcb('0x1e')](socket);function respondWithStatusCode(_0x1047c4,_0x2074d4){_0x2074d4=_0x2074d4||0xcc;return function(_0xe47707){if(_0xe47707){return _0x1047c4[_0xbfcb('0x1f')](_0x2074d4);}return _0x1047c4[_0xbfcb('0x20')](_0x2074d4)[_0xbfcb('0x21')]();};}function respondWithResult(_0x339347,_0x2c4a85){_0x2c4a85=_0x2c4a85||0xc8;return function(_0x3f847f){if(_0x3f847f){return _0x339347[_0xbfcb('0x20')](_0x2c4a85)[_0xbfcb('0x22')](_0x3f847f);}};}function respondWithFilteredResult(_0x318d07,_0x1a4d75){return function(_0xba1d6){if(_0xba1d6){var _0x38689e=typeof _0x1a4d75[_0xbfcb('0x23')]===_0xbfcb('0x24')&&typeof _0x1a4d75[_0xbfcb('0x25')]===_0xbfcb('0x24');var _0x53c9e0=_0xba1d6[_0xbfcb('0x26')];var _0x37263b=_0x38689e?0x0:_0x1a4d75['offset'];var _0xa3c089=_0x38689e?_0xba1d6[_0xbfcb('0x26')]:_0x1a4d75['offset']+_0x1a4d75['limit'];var _0x4199c5;if(_0xa3c089>=_0x53c9e0){_0xa3c089=_0x53c9e0;_0x4199c5=0xc8;}else{_0x4199c5=0xce;}_0x318d07[_0xbfcb('0x20')](_0x4199c5);return _0x318d07[_0xbfcb('0x27')](_0xbfcb('0x28'),_0x37263b+'-'+_0xa3c089+'/'+_0x53c9e0)[_0xbfcb('0x22')](_0xba1d6);}return null;};}function patchUpdates(_0x56c158){return function(_0x365d6c){try{jsonpatch[_0xbfcb('0x29')](_0x365d6c,_0x56c158,!![]);}catch(_0x2d9288){return BPromise[_0xbfcb('0x2a')](_0x2d9288);}return _0x365d6c[_0xbfcb('0x2b')]();};}function saveUpdates(_0x19616c,_0x69c8e9){return function(_0x14e43c){if(_0x14e43c){return _0x14e43c[_0xbfcb('0x2c')](_0x19616c)[_0xbfcb('0x2d')](function(_0x1ca8c3){return _0x1ca8c3;});}return null;};}function removeEntity(_0xf6dbb7,_0x3ef71c){return function(_0x121a90){if(_0x121a90){return _0x121a90[_0xbfcb('0x2e')]()[_0xbfcb('0x2d')](function(){_0xf6dbb7['status'](0xcc)[_0xbfcb('0x21')]();});}};}function handleEntityNotFound(_0x2881f8,_0x4cf7ca){return function(_0x64a69){if(!_0x64a69){_0x2881f8[_0xbfcb('0x1f')](0x194);}return _0x64a69;};}function handleError(_0x781773,_0xa57d71){_0xa57d71=_0xa57d71||0x1f4;return function(_0xf4b944){logger[_0xbfcb('0x2f')](_0xf4b944[_0xbfcb('0x30')]);if(_0xf4b944[_0xbfcb('0x31')]){delete _0xf4b944[_0xbfcb('0x31')];}_0x781773[_0xbfcb('0x20')](_0xa57d71)['send'](_0xf4b944);};}exports[_0xbfcb('0x32')]=function(_0x3aa3cd,_0x43c3c3){var _0x43de3c={},_0x1f45fc={},_0x14f6f5={'count':0x0,'rows':[]};var _0x286fb7=_[_0xbfcb('0x33')](db[_0xbfcb('0x34')]['rawAttributes'],function(_0x297f72){return{'name':_0x297f72[_0xbfcb('0x35')],'type':_0x297f72[_0xbfcb('0x36')][_0xbfcb('0x37')]};});_0x1f45fc['model']=_['map'](_0x286fb7,_0xbfcb('0x31'));_0x1f45fc[_0xbfcb('0x38')]=_[_0xbfcb('0x39')](_0x3aa3cd[_0xbfcb('0x38')]);_0x1f45fc[_0xbfcb('0x3a')]=_[_0xbfcb('0x3b')](_0x1f45fc[_0xbfcb('0x3c')],_0x1f45fc['query']);_0x43de3c['attributes']=_['intersection'](_0x1f45fc[_0xbfcb('0x3c')],qs['fields'](_0x3aa3cd[_0xbfcb('0x38')][_0xbfcb('0x3d')]));_0x43de3c['attributes']=_0x43de3c['attributes'][_0xbfcb('0x3e')]?_0x43de3c[_0xbfcb('0x3f')]:_0x1f45fc[_0xbfcb('0x3c')];if(!_0x3aa3cd[_0xbfcb('0x38')]['hasOwnProperty'](_0xbfcb('0x40'))){_0x43de3c[_0xbfcb('0x25')]=qs['limit'](_0x3aa3cd['query'][_0xbfcb('0x25')]);_0x43de3c['offset']=qs['offset'](_0x3aa3cd[_0xbfcb('0x38')][_0xbfcb('0x23')]);}_0x43de3c[_0xbfcb('0x41')]=qs[_0xbfcb('0x42')](_0x3aa3cd['query'][_0xbfcb('0x42')]);_0x43de3c[_0xbfcb('0x43')]=qs[_0xbfcb('0x3a')](_[_0xbfcb('0x44')](_0x3aa3cd[_0xbfcb('0x38')],_0x1f45fc[_0xbfcb('0x3a')]),_0x286fb7);if(_0x3aa3cd['query'][_0xbfcb('0x45')]){_0x43de3c['where']=_[_0xbfcb('0x46')](_0x43de3c['where'],{'$or':_[_0xbfcb('0x33')](_0x286fb7,function(_0x2e4406){if(_0x2e4406[_0xbfcb('0x36')]!==_0xbfcb('0x47')){var _0x434fcd={};_0x434fcd[_0x2e4406[_0xbfcb('0x31')]]={'$like':'%'+_0x3aa3cd[_0xbfcb('0x38')][_0xbfcb('0x45')]+'%'};return _0x434fcd;}})});}_0x43de3c=_[_0xbfcb('0x46')]({},_0x43de3c,_0x3aa3cd[_0xbfcb('0x48')]);var _0x55a95f={'where':_0x43de3c[_0xbfcb('0x43')]};return db[_0xbfcb('0x34')]['count'](_0x55a95f)[_0xbfcb('0x2d')](function(_0x306ea4){_0x14f6f5[_0xbfcb('0x26')]=_0x306ea4;if(_0x3aa3cd[_0xbfcb('0x38')][_0xbfcb('0x49')]){_0x43de3c[_0xbfcb('0x4a')]=[{'all':!![]}];}return db['UserProfile'][_0xbfcb('0x4b')](_0x43de3c);})[_0xbfcb('0x2d')](function(_0x10ea4f){_0x14f6f5['rows']=_0x10ea4f;return _0x14f6f5;})[_0xbfcb('0x2d')](respondWithFilteredResult(_0x43c3c3,_0x43de3c))[_0xbfcb('0x4c')](handleError(_0x43c3c3,null));};exports[_0xbfcb('0x4d')]=function(_0x542d90,_0x5aa9c9){var _0xd7cb39={'raw':![],'where':{'id':_0x542d90['params']['id']}},_0x58337d={};_0x58337d[_0xbfcb('0x3c')]=_[_0xbfcb('0x39')](db['UserProfile'][_0xbfcb('0x4e')]);_0x58337d[_0xbfcb('0x38')]=_['keys'](_0x542d90[_0xbfcb('0x38')]);_0x58337d[_0xbfcb('0x3a')]=_[_0xbfcb('0x3b')](_0x58337d[_0xbfcb('0x3c')],_0x58337d[_0xbfcb('0x38')]);_0xd7cb39[_0xbfcb('0x3f')]=_[_0xbfcb('0x3b')](_0x58337d[_0xbfcb('0x3c')],qs[_0xbfcb('0x3d')](_0x542d90[_0xbfcb('0x38')][_0xbfcb('0x3d')]));_0xd7cb39[_0xbfcb('0x3f')]=_0xd7cb39['attributes'][_0xbfcb('0x3e')]?_0xd7cb39[_0xbfcb('0x3f')]:_0x58337d[_0xbfcb('0x3c')];if(_0x542d90['query'][_0xbfcb('0x49')]){_0xd7cb39['include']=[{'all':!![]}];}_0xd7cb39=_['merge']({},_0xd7cb39,_0x542d90[_0xbfcb('0x48')]);return db[_0xbfcb('0x34')][_0xbfcb('0x4f')](_0xd7cb39)['then'](handleEntityNotFound(_0x5aa9c9,null))[_0xbfcb('0x2d')](respondWithResult(_0x5aa9c9,null))['catch'](handleError(_0x5aa9c9,null));};exports['create']=function(_0x33725a,_0x588d32){return db[_0xbfcb('0x34')][_0xbfcb('0x50')](_0x33725a['body'],{})[_0xbfcb('0x2d')](respondWithResult(_0x588d32,0xc9))['catch'](handleError(_0x588d32,null));};exports[_0xbfcb('0x51')]=function(_0x4f348b,_0x61b146){var _0x5e263c={'where':{'id':_0x4f348b[_0xbfcb('0x52')]['id']}},_0x238d74={};_0x238d74['model']=_[_0xbfcb('0x39')](db['UserProfile']['rawAttributes']);_0x5e263c[_0xbfcb('0x3f')]=_[_0xbfcb('0x3b')](_0x238d74[_0xbfcb('0x3c')],qs['fields'](_0x4f348b['query'][_0xbfcb('0x3d')]));_0x5e263c[_0xbfcb('0x3f')]=_0x5e263c[_0xbfcb('0x3f')][_0xbfcb('0x3e')]?_0x5e263c[_0xbfcb('0x3f')]:_0x238d74['model'];if(_0x4f348b[_0xbfcb('0x38')][_0xbfcb('0x49')]){_0x5e263c[_0xbfcb('0x4a')]=[{'all':!![]}];}_0x5e263c=_[_0xbfcb('0x46')]({},_0x5e263c,_0x4f348b['options']);return db['UserProfile'][_0xbfcb('0x4f')](_0x5e263c)['then'](handleEntityNotFound(_0x61b146,null))[_0xbfcb('0x2d')](function(_0x5e5a76){if(_0x5e5a76){var _0x485cbf=_0x5e5a76[_0xbfcb('0x53')]({'plain':!![]});_0x485cbf=qs['omit'](_0x485cbf,['id','createdAt',_0xbfcb('0x54'),'crudPermissions']);_0x4f348b[_0xbfcb('0x55')]=_['omit'](_0x4f348b[_0xbfcb('0x55')],['id',_0xbfcb('0x56'),'updatedAt']);return db[_0xbfcb('0x57')][_0xbfcb('0x58')](function(_0x33f97a){return db['UserProfile'][_0xbfcb('0x50')](_[_0xbfcb('0x46')](_0x485cbf,_0x4f348b[_0xbfcb('0x55')]),{'include':_0x4f348b[_0xbfcb('0x38')][_0xbfcb('0x49')]?[{'all':!![]}]:undefined,'transaction':_0x33f97a})[_0xbfcb('0x2d')](function(_0x338222){var _0x47a5c3=_0x338222[_0xbfcb('0x53')]({'plain':!![]});return db['UserProfileSection'][_0xbfcb('0x4b')]({'where':{'userProfileId':_0x4f348b[_0xbfcb('0x52')]['id']},'raw':!![]})[_0xbfcb('0x2d')](function(_0x112f7d){if(_0x112f7d){return BPromise['each'](_0x112f7d,function(_0x558da0){return new BPromise(function(_0x3a0945,_0x48c7b4){if(_0x558da0[_0xbfcb('0x59')]===null||_0x558da0[_0xbfcb('0x59')]===0x1)_0x3a0945(null);return db[_0xbfcb('0x5a')][_0xbfcb('0x4b')]({'where':{'sectionId':_0x558da0['id']},'raw':!![]})[_0xbfcb('0x2d')](function(_0x8ec4e5){var _0x51f8a0=_[_0xbfcb('0x33')](_0x8ec4e5,function(_0x3ea8b3){return qs[_0xbfcb('0x5b')](_0x3ea8b3,['id',_0xbfcb('0x56'),_0xbfcb('0x54'),_0xbfcb('0x5c')]);});_0x3a0945(_0x51f8a0);})[_0xbfcb('0x4c')](function(_0x5d847c){_0x48c7b4(_0x5d847c);});})['then'](function(_0x506aa8){var _0x2b9a96=qs[_0xbfcb('0x5b')](_0x558da0,['id',_0xbfcb('0x56'),'updatedAt']);_0x2b9a96[_0xbfcb('0x5d')]=_0x47a5c3['id'];if(_0x506aa8)_0x2b9a96[_0xbfcb('0x5e')]=_0x506aa8;return _0x2b9a96;})[_0xbfcb('0x2d')](function(_0x51ddd4){return db['UserProfileSection']['create'](_0x51ddd4,{'include':[{'model':db[_0xbfcb('0x5a')],'as':_0xbfcb('0x5e')}],'raw':!![],'transaction':_0x33f97a});});})[_0xbfcb('0x2d')](function(){return _0x47a5c3;});}});});});}})[_0xbfcb('0x2d')](respondWithResult(_0x61b146,0xc9))['catch'](handleError(_0x61b146,null));};exports[_0xbfcb('0x2c')]=function(_0x1e5199,_0x39a3cf){if(_0x1e5199['body']['id']){delete _0x1e5199['body']['id'];}return db[_0xbfcb('0x34')][_0xbfcb('0x4f')]({'where':{'id':_0x1e5199['params']['id']}})['then'](handleEntityNotFound(_0x39a3cf,null))['then'](saveUpdates(_0x1e5199['body'],null))[_0xbfcb('0x2d')](respondWithResult(_0x39a3cf,null))[_0xbfcb('0x4c')](handleError(_0x39a3cf,null));};exports[_0xbfcb('0x2e')]=function(_0x2d77f9,_0x3f4e1f){return db[_0xbfcb('0x34')][_0xbfcb('0x4f')]({'where':{'id':_0x2d77f9[_0xbfcb('0x52')]['id']}})['then'](handleEntityNotFound(_0x3f4e1f,null))[_0xbfcb('0x2d')](removeEntity(_0x3f4e1f,null))[_0xbfcb('0x4c')](handleError(_0x3f4e1f,null));};exports[_0xbfcb('0x5f')]=function(_0x157160,_0x18d909){return db[_0xbfcb('0x34')][_0xbfcb('0x5f')]()[_0xbfcb('0x2d')](respondWithResult(_0x18d909,null))['catch'](handleError(_0x18d909,null));};exports[_0xbfcb('0x60')]=function(_0x49a08f,_0x14a28d){var _0x2a1368=_0x49a08f[_0xbfcb('0x55')];return db[_0xbfcb('0x34')][_0xbfcb('0x4f')]({'where':{'id':_0x49a08f['params']['id']}})[_0xbfcb('0x2d')](handleEntityNotFound(_0x14a28d,null))[_0xbfcb('0x2d')](function(_0xe7fc76){if(_0xe7fc76){return db[_0xbfcb('0x57')][_0xbfcb('0x58')](function(_0x4c01ff){return db[_0xbfcb('0x61')][_0xbfcb('0x2e')]({'where':{'userProfileId':_0x49a08f[_0xbfcb('0x52')]['id'],'sectionId':_[_0xbfcb('0x33')](_0x2a1368,function(_0x51d6a5){return _0x51d6a5['sectionId'];})},'transaction':_0x4c01ff})[_0xbfcb('0x2d')](function(){var _0x15b4e3=_[_0xbfcb('0x33')](_0x2a1368,function(_0x404395){_0x404395[_0xbfcb('0x5d')]=_0x49a08f[_0xbfcb('0x52')]['id'];return _0x404395;});var _0x3837b8=[];return BPromise[_0xbfcb('0x62')](_0x15b4e3,function(_0x363cd9){return db[_0xbfcb('0x61')][_0xbfcb('0x50')](_0x363cd9,{'include':[{'model':db[_0xbfcb('0x5a')],'as':_0xbfcb('0x5e')}],'raw':!![],'transaction':_0x4c01ff})[_0xbfcb('0x2d')](function(_0x50a75c){_0x3837b8[_0xbfcb('0x63')](_0x50a75c['get']({'plain':!![]}));});})[_0xbfcb('0x2d')](function(){return _0x3837b8;});});});}})[_0xbfcb('0x2d')](function(_0x5209ea){return _0x5209ea;})[_0xbfcb('0x2d')](respondWithResult(_0x14a28d,null))[_0xbfcb('0x4c')](handleError(_0x14a28d,null));};exports[_0xbfcb('0x64')]=function(_0x26bb68,_0x58a9a4){var _0xa8965a;return db['UserProfile'][_0xbfcb('0x4f')]({'where':{'id':_0x26bb68[_0xbfcb('0x52')]['id']},'attributes':['id','name']})['then'](handleEntityNotFound(_0x58a9a4,null))[_0xbfcb('0x2d')](function(_0x31355a){if(_0x31355a){_0xa8965a=_0x31355a;return db[_0xbfcb('0x61')][_0xbfcb('0x2e')]({'where':{'userProfileId':_0x26bb68[_0xbfcb('0x52')]['id'],'sectionId':_0x26bb68['query']['ids']}});}})[_0xbfcb('0x2d')](function(){return _0xa8965a;})['then'](respondWithStatusCode(_0x58a9a4,null))['catch'](handleError(_0x58a9a4,null));};exports[_0xbfcb('0x65')]=function(_0x85f451,_0x4e1d29){var _0x46d6a8=[];var _0x195293=[];return db['UserProfileSection'][_0xbfcb('0x4b')]({'where':{'userProfileId':_0x85f451[_0xbfcb('0x52')]['id']},'raw':!![]})[_0xbfcb('0x2d')](function(_0x1386a1){_0x46d6a8=_['filter'](_0x1386a1,function(_0x43f235){return _0x43f235[_0xbfcb('0x66')]===0x1||_[_0xbfcb('0x67')]([0x3eb,0x709],_0x43f235[_0xbfcb('0x5c')]);});if(!_[_0xbfcb('0x68')](_0x46d6a8)){return _[_0xbfcb('0x33')](_0x46d6a8,function(_0x5328da){return _0x5328da[_0xbfcb('0x5c')];});}else{return;}})[_0xbfcb('0x2d')](function(_0x3d677a){if(_0x3d677a)_0x195293=_0x3d677a;if(_[_0xbfcb('0x67')](_0x195293,0x64)){var _0x16a620=_[_0xbfcb('0x4f')](_0x46d6a8,{'sectionId':0x64});return hasDefaultDashboard(_0x16a620)[_0xbfcb('0x2d')](function(_0x4f8cda){return _[_0xbfcb('0x33')](_0x46d6a8,function(_0x14a336){if(_0x14a336[_0xbfcb('0x5c')]===0x64){_0x14a336[_0xbfcb('0x69')]=_0x4f8cda;}return _0x14a336;});});}else{return;}})['then'](function(_0x5c2f1a){if(_0x5c2f1a)_0x46d6a8=_0x5c2f1a;if(_[_0xbfcb('0x67')](_0x195293,0x3eb)){var _0xed292e=_[_0xbfcb('0x4f')](_0x46d6a8,{'sectionId':0x3eb});return getCustomDashboards(_0xed292e)[_0xbfcb('0x2d')](function(_0x17ad2f){return _[_0xbfcb('0x33')](_0x46d6a8,function(_0x2ff3a5){if(_0xed292e[_0xbfcb('0x66')]){if(_0x2ff3a5['sectionId']===0x3eb){_0x2ff3a5[_0xbfcb('0x69')]=_0x17ad2f;}}else{if(_0x2ff3a5[_0xbfcb('0x5c')]===0x64){_0x2ff3a5[_0xbfcb('0x69')]=_0x17ad2f;}}return _0x2ff3a5;});});}else{return;}})[_0xbfcb('0x2d')](function(_0x9d27b5){if(_0x9d27b5)_0x46d6a8=_0x9d27b5;if(_['includes'](_0x195293,0x709)){var _0x1b62f5=_['find'](_0x46d6a8,{'sectionId':0x709});return getPlugins(_0x1b62f5)[_0xbfcb('0x2d')](function(_0x3ac977){if(_0x1b62f5['enabled']){return _['map'](_0x46d6a8,function(_0x1a5c5f){if(_0x1a5c5f[_0xbfcb('0x5c')]===0x709){_0x1a5c5f[_0xbfcb('0x69')]=_0x3ac977;}return _0x1a5c5f;});}else{var _0x16518c={'sectionId':0x76c,'enabled':0x1,'subsections':_0x3ac977};var _0x261dfe=_[_0xbfcb('0x33')](_0x46d6a8);_0x261dfe['push'](_0x16518c);return _0x261dfe;}});}else{return;}})[_0xbfcb('0x2d')](function(_0x6168ce){if(_0x6168ce)_0x46d6a8=_0x6168ce;return _[_0xbfcb('0x45')](_0x46d6a8,[_0xbfcb('0x66'),0x1]);})[_0xbfcb('0x2d')](respondWithResult(_0x4e1d29,null))[_0xbfcb('0x4c')](handleError(_0x4e1d29,null));};function hasDefaultDashboard(_0x2d7646){var _0x2c4b3c=[0x65];return new BPromise(function(_0x5bdd61,_0x1157c5){try{if(_0x2d7646[_0xbfcb('0x59')]){_0x5bdd61(_0x2c4b3c);}else{return db['UserProfileResource']['findOne']({'where':{'sectionId':_0x2d7646['id']},'raw':!![]})[_0xbfcb('0x2d')](function(_0x5d0c2f){_0x5d0c2f?_0x5bdd61(_0x2c4b3c):_0x5bdd61();});}}catch(_0x547586){_0x1157c5(_0x547586);}});}function getCustomDashboards(_0x233987){var _0x48e654=[];return new BPromise(function(_0x7f97da,_0x336ddc){try{if(_0x233987[_0xbfcb('0x59')]){return db['Dashboard'][_0xbfcb('0x4b')]({'raw':!![]})[_0xbfcb('0x2d')](function(_0x169830){_0x169830['forEach'](function(_0x5674bf){_0x48e654[_0xbfcb('0x63')](_0x5674bf['id']+0x1869f);});_0x7f97da(_0x48e654);});}else{return db[_0xbfcb('0x5a')][_0xbfcb('0x4b')]({'where':{'sectionId':_0x233987['id']},'raw':!![]})['then'](function(_0x36de8e){_0x36de8e['forEach'](function(_0x33b34a){_0x48e654[_0xbfcb('0x63')](_0x33b34a['resourceId']+0x1869f);});_0x7f97da(_0x48e654);});}}catch(_0x1f0e28){_0x336ddc(_0x1f0e28);}});}function getPlugins(_0x6e7287){var _0x36d34e=[];return new BPromise(function(_0x541c6c,_0x7b9506){try{if(_0x6e7287['autoAssociation']){return db[_0xbfcb('0x6a')][_0xbfcb('0x4b')]({'raw':!![]})[_0xbfcb('0x2d')](function(_0x34812d){_0x34812d[_0xbfcb('0x6b')](function(_0x4b1b69){_0x36d34e[_0xbfcb('0x63')](_0x4b1b69['id']+0x15b38);});_0x541c6c(_0x36d34e);});}else{return db[_0xbfcb('0x5a')]['findAll']({'where':{'sectionId':_0x6e7287['id']},'raw':!![]})[_0xbfcb('0x2d')](function(_0x4e2a3c){_0x4e2a3c['forEach'](function(_0x31dc17){_0x36d34e[_0xbfcb('0x63')](_0x31dc17['resourceId']+0x15b38);});_0x541c6c(_0x36d34e);});}}catch(_0x2ac498){_0x7b9506(_0x2ac498);}});}exports[_0xbfcb('0x6c')]=function(_0x32f648,_0x70319a){return db[_0xbfcb('0x34')]['find']({'where':{'id':_0x32f648[_0xbfcb('0x52')]['id']}})[_0xbfcb('0x2d')](handleEntityNotFound(_0x70319a,null))[_0xbfcb('0x2d')](function(_0x3343d3){if(_0x3343d3){return db[_0xbfcb('0x57')][_0xbfcb('0x58')](function(_0x1aede5){return db[_0xbfcb('0x61')][_0xbfcb('0x4b')]({'where':{'userProfileId':_0x32f648[_0xbfcb('0x52')]['id']},'attributes':['id'],'raw':!![]})[_0xbfcb('0x2d')](function(_0x103020){if(_0x103020){return db[_0xbfcb('0x61')]['destroy']({'where':{'userProfileId':_0x32f648[_0xbfcb('0x52')]['id'],'id':_[_0xbfcb('0x33')](_0x103020,function(_0x269603){return _0x269603['id'];})},'transaction':_0x1aede5});}})[_0xbfcb('0x2d')](function(_0xa411de){var _0x3f66af=_[_0xbfcb('0x33')](_0x32f648[_0xbfcb('0x55')],function(_0x368d7d){_0x368d7d['userProfileId']=_0x32f648['params']['id'];return _0x368d7d;});return db[_0xbfcb('0x61')]['bulkCreate'](_0x3f66af,{'raw':!![],'transaction':_0x1aede5});})[_0xbfcb('0x2d')](function(_0x5a21fc){var _0x57ffb8=_[_0xbfcb('0x45')](_['map'](_0x5a21fc,function(_0x74ecaa){return _0x74ecaa['get']({'plain':!![]});}),{'includeAll':![]});if(_0x57ffb8){return db[_0xbfcb('0x61')][_0xbfcb('0x4b')]({'where':{'userProfileId':_0x32f648['params']['id'],'sectionId':_[_0xbfcb('0x33')](_0x57ffb8,function(_0x3836c8){return _0x3836c8[_0xbfcb('0x5c')];})},'attributes':['id',_0xbfcb('0x5c')],'raw':!![]})[_0xbfcb('0x2d')](function(_0x2f34d9){var _0x29f3bd=_[_0xbfcb('0x33')](_0x32f648[_0xbfcb('0x55')],function(_0x137dc9){_0x137dc9[_0xbfcb('0x5d')]=_0x32f648[_0xbfcb('0x52')]['id'];return _0x137dc9;});return db[_0xbfcb('0x5a')][_0xbfcb('0x6d')](_0x29f3bd,{'raw':!![],'transaction':_0x1aede5});});}})[_0xbfcb('0x4c')](handleError(_0x70319a,null));});}})[_0xbfcb('0x2d')](function(_0x2c3587){var _0x230a2a=_['map'](_0x2c3587,function(_0x40adc8){return _0x40adc8['get']({'plain':!![]});});})[_0xbfcb('0x2d')](respondWithResult(_0x70319a,null))[_0xbfcb('0x4c')](handleError(_0x70319a,null));};exports['removeResources']=function(_0x341cf,_0x21aa71,_0x360961){return db[_0xbfcb('0x34')]['find']({'where':{'id':_0x341cf[_0xbfcb('0x52')]['id']}})[_0xbfcb('0x2d')](handleEntityNotFound(_0x21aa71,null))['then'](function(_0xcc1771){if(_0xcc1771){return _0xcc1771[_0xbfcb('0x6e')](_0x341cf[_0xbfcb('0x38')][_0xbfcb('0x6f')]);}})['then'](respondWithStatusCode(_0x21aa71,null))[_0xbfcb('0x4c')](handleError(_0x21aa71,null));};exports['getResources']=function(_0x9e7a65,_0x2318b8){var _0x580471={};if(!_0x9e7a65[_0xbfcb('0x38')][_0xbfcb('0x70')])throw new Error('Missing\x20section\x20parameter');if(!_0x9e7a65[_0xbfcb('0x38')]['hasOwnProperty']('nolimit')){_0x580471[_0xbfcb('0x25')]=qs[_0xbfcb('0x25')](_0x9e7a65[_0xbfcb('0x38')]['limit']);_0x580471[_0xbfcb('0x23')]=qs[_0xbfcb('0x23')](_0x9e7a65[_0xbfcb('0x38')][_0xbfcb('0x23')]);}return db['UserProfile']['find']({'where':{'id':_0x9e7a65[_0xbfcb('0x52')]['id']}})['then'](function(_0x3d52e6){if(!_0x3d52e6)throw new Error(_0xbfcb('0x71')+_0x9e7a65[_0xbfcb('0x52')]['id']);return db[_0xbfcb('0x34')]['getResources'](_0x9e7a65);})[_0xbfcb('0x2d')](respondWithFilteredResult(_0x2318b8,_0x580471))['catch'](handleError(_0x2318b8,null));};
\ No newline at end of file
index 554038f..aaa445f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee87=['UserProfile','setMaxListeners','save','update','remove','emit','hook','exports','../../mysqldb'];(function(_0x37093d,_0x59b383){var _0x3f3211=function(_0x5e189c){while(--_0x5e189c){_0x37093d['push'](_0x37093d['shift']());}};_0x3f3211(++_0x59b383);}(_0xee87,0x10d));var _0x7ee8=function(_0x4dfa62,_0xae8e61){_0x4dfa62=_0x4dfa62-0x0;var _0x4d678f=_0xee87[_0x4dfa62];return _0x4d678f;};'use strict';var EventEmitter=require('events');var UserProfile=require(_0x7ee8('0x0'))['db'][_0x7ee8('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x7ee8('0x2')](0x0);var events={'afterCreate':_0x7ee8('0x3'),'afterUpdate':_0x7ee8('0x4'),'afterDestroy':_0x7ee8('0x5')};function emitEvent(_0x41c2cc){return function(_0x2f1867,_0x32466c,_0x23a89c){UserProfileEvents['emit'](_0x41c2cc+':'+_0x2f1867['id'],_0x2f1867);UserProfileEvents[_0x7ee8('0x6')](_0x41c2cc,_0x2f1867);_0x23a89c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserProfile[_0x7ee8('0x7')](e,emitEvent(event));}}module[_0x7ee8('0x8')]=UserProfileEvents;
\ No newline at end of file
+var _0x1883=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','UserProfile','setMaxListeners','save'];(function(_0x1e493c,_0x38ed59){var _0x504d8e=function(_0x5f0341){while(--_0x5f0341){_0x1e493c['push'](_0x1e493c['shift']());}};_0x504d8e(++_0x38ed59);}(_0x1883,0xab));var _0x3188=function(_0x48ada1,_0x3c1384){_0x48ada1=_0x48ada1-0x0;var _0x532f9d=_0x1883[_0x48ada1];return _0x532f9d;};'use strict';var EventEmitter=require(_0x3188('0x0'));var UserProfile=require(_0x3188('0x1'))['db'][_0x3188('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x3188('0x3')](0x0);var events={'afterCreate':_0x3188('0x4'),'afterUpdate':_0x3188('0x5'),'afterDestroy':_0x3188('0x6')};function emitEvent(_0x408500){return function(_0x1c7c86,_0x44afb8,_0x46216d){UserProfileEvents[_0x3188('0x7')](_0x408500+':'+_0x1c7c86['id'],_0x1c7c86);UserProfileEvents[_0x3188('0x7')](_0x408500,_0x1c7c86);_0x46216d(null);};}for(var e in events){if(events[_0x3188('0x8')](e)){var event=events[e];UserProfile[_0x3188('0x9')](e,emitEvent(event));}}module[_0x3188('0xa')]=UserProfileEvents;
\ No newline at end of file
index 88125fa..456c25f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ee1=['User','telephone','VoiceQueues','VoiceQueue','inbound','QueueCampaigns','queue','outbound','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','voiceprefixes','VoicePrefix','mailqueues','MailQueue','mailaccounts','MailAccount','mailsubstatuses','MailSubstatus','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsqueues','SmsQueue','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','teams','Team','voicequeues','users','agents','telephones','Users','admin','user','Telephones','zendeskaccounts','ZendeskAccount','salesforceaccounts','SalesforceAccount','FreshdeskAccount','sugarcrmaccounts','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','CannedAnswer','dispositions','Disposition','Dashboard','Interval','Pause','scheduler','Schedule','sounds','tags','templates','Template','Trigger','trunks','Trunk','variables','Variable','plugins','Plugin','extractedreports','Reports','AnalyticMetric','charAt','toUpperCase','slice','Sequelize','QueryTypes','select','ui.','InteractionId','ui.createdAt','from','user_has_','where','ui.UserId\x20=\x20?','query','toString','OpenTabs','define','user_profiles','section','mergeResources','Invalid\x20section\x20\x27','isEmpty','UserProfileSection','find','params','ignore','union','length','push','autoAssociation','all','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','limit','offset','order','sort','merge','key','VIRTUAL','foreignKey','forEach','options','include','default','reportId','DefaultReports','custom','rows','count','includeAll','Tag','Tags','color','tag','openTabs','true','chat','dataValues','sms','openchannel','whatsapp','lodash','exports','filter','field','value','findAll','then','catch','model','associatedResources','map','resolve','UserProfileResource','AnalyticExtractedReport','resourceId','type','toLowerCase','squareprojects','childModel','SquareProject','odbc','SquareOdbc','squarerecordings','SquareRecording','parentSections','name','projectName','projects','JscriptyProject','CmContact','ListId','lists','CmList','globalcustomfields','CmCustomField','ChatQueue','ChatWebsite','faxqueues','faxaccounts','FaxAccount','inboundroutes','VoiceExtension','contexts','VoiceContext','voicemails','VoiceRecording','Agents','membername','role','agent'];(function(_0x3c5f8d,_0x39891f){var _0x3b7beb=function(_0x44d6c9){while(--_0x44d6c9){_0x3c5f8d['push'](_0x3c5f8d['shift']());}};_0x3b7beb(++_0x39891f);}(_0x7ee1,0x8d));var _0x17ee=function(_0x59d3db,_0x59fcd9){_0x59d3db=_0x59d3db-0x0;var _0x4fac8c=_0x7ee1[_0x59d3db];return _0x4fac8c;};'use strict';var _=require(_0x17ee('0x0'));var attributes=require('./userProfile.attributes');var qs=require('../../components/parsers/qs');var squel=require('squel');module[_0x17ee('0x1')]=function(_0x31a2fe){var _0x1790ff=_0x31a2fe['models'];function _0x1602fd(_0x1811e4,_0x10f7a8){return new Promise(function(_0x2f9ebc,_0x5c0617){if(!_0x10f7a8)return _0x2f9ebc(null);var _0x52b1db=_0x10f7a8[_0x17ee('0x2')]?{[_0x10f7a8['filter'][_0x17ee('0x3')]]:_0x10f7a8['filter'][_0x17ee('0x4')]}:undefined;return _0x1790ff[_0x1811e4][_0x17ee('0x5')]({'where':_0x52b1db,'raw':!![]})[_0x17ee('0x6')](function(_0x4af369){_0x10f7a8['associatedResources']=_['map'](_0x4af369,'id');_0x2f9ebc(_0x10f7a8);})[_0x17ee('0x7')](function(_0x4ee1e0){_0x5c0617(_0x4ee1e0);});});}function _0x155964(_0x378a78,_0x3068b2){return new Promise(function(_0x3d4f0f,_0x57fae0){var _0x1acde5=_0x378a78['filter']?{[_0x378a78[_0x17ee('0x2')][_0x17ee('0x3')]]:_0x378a78[_0x17ee('0x2')][_0x17ee('0x4')]}:undefined;return _0x1790ff[_0x378a78[_0x17ee('0x8')]][_0x17ee('0x5')]({'where':_0x1acde5,'raw':!![]})[_0x17ee('0x6')](function(_0x54434e){_0x3068b2[_0x17ee('0x9')]=_[_0x17ee('0xa')](_0x54434e,function(_0x329af2){return _0x329af2['name'];});_0x3d4f0f(_0x3068b2);})['catch'](function(_0x551c5f){_0x57fae0(_0x551c5f);});});}function _0x4d4593(_0x2fe0ac,_0x2382ce,_0x1b87c3){if(!_0x2382ce)return Promise[_0x17ee('0xb')](null);return new Promise(function(_0x443f81,_0x236d18){return _0x1790ff[_0x17ee('0xc')]['findAll']({'where':{'sectionId':_0x2382ce['id']},'raw':!![]})[_0x17ee('0x6')](function(_0x1118a3){if(_0x2fe0ac[_0x17ee('0x3')]&&_0x2fe0ac[_0x17ee('0x3')]!=='id'){_0x2382ce[_0x17ee('0x9')]=_['map'](_0x1118a3,function(_0x393720){return _0x393720[_0x2fe0ac['field']];});}else{if(_0x1b87c3===_0x17ee('0xd')){_0x2382ce['associatedResources']=_[_0x17ee('0xa')](_0x1118a3,function(_0x343f1b){return{'id':_0x343f1b[_0x17ee('0xe')],'type':_0x343f1b[_0x17ee('0xf')]};});}else{_0x2382ce[_0x17ee('0x9')]=_[_0x17ee('0xa')](_0x1118a3,function(_0x44548f){return _0x44548f[_0x17ee('0xe')];});}}_0x443f81(_0x2382ce);})[_0x17ee('0x7')](function(_0x1f3d6d){_0x236d18(_0x1f3d6d);});});}function _0x37fe4e(_0x4d2d91,_0x4b7bfe){var _0x2118a6={'parentSections':[]};switch(_0x4d2d91[_0x17ee('0x10')]()){case _0x17ee('0x11'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x13');break;case _0x17ee('0x14'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x15');break;case _0x17ee('0x16'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x17');_0x2118a6[_0x17ee('0x18')]=[{'name':'SquareProjects','field':_0x17ee('0x19'),'foreignKey':_0x17ee('0x1a')}];break;case _0x17ee('0x1b'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x1c');break;case'contacts':_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x1d');_0x2118a6[_0x17ee('0x18')]=[{'name':'Lists','field':'id','foreignKey':_0x17ee('0x1e')}];break;case _0x17ee('0x1f'):_0x2118a6['childModel']=_0x17ee('0x20');break;case'companies':_0x2118a6[_0x17ee('0x12')]='CmCompany';break;case _0x17ee('0x21'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x22');break;case'chatqueues':_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x23');break;case'chatwebsites':_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x24');break;case _0x17ee('0x25'):_0x2118a6['childModel']='FaxQueue';break;case _0x17ee('0x26'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x27');break;case _0x17ee('0x28'):case'internalroutes':case'outboundroutes':_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x29');break;case _0x17ee('0x2a'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x2b');break;case _0x17ee('0x2c'):_0x2118a6[_0x17ee('0x12')]='VoiceMail';break;case'voicerecordings':_0x2118a6['childModel']=_0x17ee('0x2d');_0x2118a6['parentSections']=[{'name':_0x17ee('0x2e'),'field':_0x17ee('0x19'),'foreignKey':_0x17ee('0x2f'),'model':'User','filter':{'field':_0x17ee('0x30'),'value':[_0x17ee('0x31')]}},{'name':'Telephones','field':'name','foreignKey':_0x17ee('0x2f'),'model':_0x17ee('0x32'),'filter':{'field':_0x17ee('0x30'),'value':[_0x17ee('0x33')]}},{'name':_0x17ee('0x34'),'field':'name','foreignKey':'queue','model':_0x17ee('0x35'),'filter':{'field':_0x17ee('0xf'),'value':[_0x17ee('0x36')]}},{'name':_0x17ee('0x37'),'field':_0x17ee('0x19'),'foreignKey':_0x17ee('0x38'),'model':'VoiceQueue','filter':{'field':'type','value':[_0x17ee('0x39')]}}];break;case _0x17ee('0x3a'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x3b');break;case _0x17ee('0x3c'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x3d');break;case _0x17ee('0x3e'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x3f');break;case'ivrcampaigns':_0x2118a6['childModel']='Campaign';break;case _0x17ee('0x40'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x41');break;case _0x17ee('0x42'):_0x2118a6['childModel']=_0x17ee('0x43');break;case _0x17ee('0x44'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x45');break;case'openchannelqueues':_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x46');break;case _0x17ee('0x47'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x48');break;case _0x17ee('0x49'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x4a');break;case'smsaccounts':_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x4b');break;case _0x17ee('0x4c'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x4d');break;case _0x17ee('0x4e'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x4f');break;case _0x17ee('0x50'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x51');break;case _0x17ee('0x52'):case'queuecampaigns':_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x35');if(_0x4b7bfe){_0x2118a6['parentSections']=[{'name':'VoiceQueues'},{'name':'QueueCampaigns'}];}break;case _0x17ee('0x53'):case _0x17ee('0x54'):case _0x17ee('0x55'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x32');if(_0x4b7bfe){_0x2118a6['parentSections']=[{'name':_0x17ee('0x56'),'filter':{'field':_0x17ee('0x30'),'value':[_0x17ee('0x57'),_0x17ee('0x58')]},'ignore':!![]},{'name':_0x17ee('0x2e')},{'name':_0x17ee('0x59')}];}break;case _0x17ee('0x5a'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x5b');break;case _0x17ee('0x5c'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x5d');break;case'freshdeskaccounts':_0x2118a6['childModel']=_0x17ee('0x5e');break;case _0x17ee('0x5f'):_0x2118a6['childModel']='SugarcrmAccount';break;case _0x17ee('0x60'):_0x2118a6['childModel']=_0x17ee('0x61');break;case _0x17ee('0x62'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x63');break;case _0x17ee('0x64'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x32');break;case _0x17ee('0x65'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x66');break;case _0x17ee('0x67'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x68');break;case'customdashboards':_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x69');break;case'intervals':_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x6a');break;case'pauses':_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x6b');break;case _0x17ee('0x6c'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x6d');break;case _0x17ee('0x6e'):_0x2118a6[_0x17ee('0x12')]='Sound';break;case _0x17ee('0x6f'):_0x2118a6['childModel']='Tag';break;case _0x17ee('0x70'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x71');break;case'triggers':_0x2118a6['childModel']=_0x17ee('0x72');break;case _0x17ee('0x73'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x74');break;case _0x17ee('0x75'):_0x2118a6[_0x17ee('0x12')]=_0x17ee('0x76');break;case _0x17ee('0x77'):_0x2118a6['childModel']=_0x17ee('0x78');break;case _0x17ee('0x79'):_0x2118a6['childModel']='AnalyticExtractedReport';_0x2118a6[_0x17ee('0x18')]=[{'name':_0x17ee('0x7a'),'field':'id','foreignKey':'reportId'}];break;case'metrics':_0x2118a6['childModel']=_0x17ee('0x7b');break;}return _0x2118a6;}function _0x1f860d(_0x1fbaec,_0x4a00db){var _0x3b5284=_0x1fbaec[_0x17ee('0x7c')](0x0)[_0x17ee('0x7d')]()+_0x1fbaec[_0x17ee('0x7e')](0x1);var _0x499e21={'type':_0x1790ff[_0x17ee('0x7f')][_0x17ee('0x80')]['SELECT'],'raw':!![]};return new Promise(function(_0x431b6a,_0x13e9e3){var _0x280036=squel[_0x17ee('0x81')]()[_0x17ee('0x3')](_0x17ee('0x82')+_0x3b5284+_0x17ee('0x83'),'id')[_0x17ee('0x3')](_0x17ee('0x84'))[_0x17ee('0x85')](_0x17ee('0x86')+_0x1fbaec+'_interactions','ui')[_0x17ee('0x87')](_0x17ee('0x88'),_0x4a00db['id']);return _0x1790ff['sequelize'][_0x17ee('0x89')](_0x280036[_0x17ee('0x8a')](),_0x499e21)[_0x17ee('0x6')](function(_0x5c2658){_0x4a00db[_0x3b5284+_0x17ee('0x8b')]=_0x5c2658;_0x431b6a(_0x5c2658);})[_0x17ee('0x7')](function(_0x2d72c2){_0x13e9e3(_0x2d72c2);});});}return _0x31a2fe[_0x17ee('0x8c')]('UserProfile',attributes,{'tableName':_0x17ee('0x8d'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x42a6b4){var _0x59d907={'raw':![],'where':{}};var _0xc0a30f={};var _0x135c29={'count':0x0,'rows':[]};var _0x16cd1b=_0x42a6b4[_0x17ee('0x89')][_0x17ee('0x8e')];var _0x13d99b=_0x42a6b4[_0x17ee('0x89')][_0x17ee('0x8f')]||![];var _0x38087a=_0x37fe4e(_0x16cd1b,_0x13d99b);if(!_0x38087a[_0x17ee('0x12')])throw new Error(_0x17ee('0x90')+_0x16cd1b+'\x27');var _0x5f35b6=[{'name':_0x16cd1b}];if(!_[_0x17ee('0x91')](_0x38087a['parentSections']))_0x5f35b6=_0x38087a[_0x17ee('0x18')];var _0x38fd73=[];for(var _0x97b640=0x0;_0x97b640<_0x5f35b6['length'];_0x97b640++){_0x38fd73['push'](_0x1790ff[_0x17ee('0x92')][_0x17ee('0x93')]({'where':{'userProfileId':_0x42a6b4[_0x17ee('0x94')]['id'],'name':_0x5f35b6[_0x97b640][_0x17ee('0x19')]},'raw':!![]}));}return Promise['all'](_0x38fd73)[_0x17ee('0x6')](function(_0x597697){var _0x5b2baa=_[_0x17ee('0x2')](_0x597697,function(_0x3f3b42){return _0x3f3b42?_0x3f3b42:undefined;});var _0x49cc91=_['filter'](_0x5f35b6,[_0x17ee('0x95'),!![]]);var _0x32ac7a=_['isEmpty'](_0x5b2baa)&&_[_0x17ee('0x91')](_0x49cc91)?null:_[_0x17ee('0x96')](_0x49cc91,_0x5b2baa);if(!_0x32ac7a)return null;var _0x1477ef=[];for(var _0x442d0f=0x0;_0x442d0f<_0x32ac7a[_0x17ee('0x97')];_0x442d0f++){var _0x57e7e7=_[_0x17ee('0x93')](_0x5f35b6,function(_0x504467){return _0x32ac7a[_0x442d0f]?_0x504467[_0x17ee('0x19')]===_0x32ac7a[_0x442d0f][_0x17ee('0x19')]:null;});if(_0x57e7e7){if(_0x32ac7a[_0x442d0f][_0x17ee('0x95')]){_0x1477ef[_0x17ee('0x98')](_0x1602fd(_0x38087a[_0x17ee('0x12')],_0x32ac7a[_0x442d0f]));}else{if(!_0x32ac7a[_0x442d0f][_0x17ee('0x99')]){_0x1477ef[_0x17ee('0x98')](_0x4d4593(_0x57e7e7,_0x32ac7a[_0x442d0f],_0x38087a[_0x17ee('0x12')]));}else{if(_0x57e7e7[_0x17ee('0x8')]){_0x1477ef[_0x17ee('0x98')](_0x155964(_0x57e7e7,_0x32ac7a[_0x442d0f]));}}}}}return Promise[_0x17ee('0x9a')](_0x1477ef);})['then'](function(_0x457d01){var _0x402e70=_0x457d01;var _0x1600c7=null;if(_0x402e70){_0x1600c7=_0x402e70[_0x17ee('0x97')]===0x1?_0x402e70[0x0]:null;}if(!_0x1600c7&&!_0x402e70)return _0x135c29;var _0x24ce05=_0x1790ff[_0x38087a[_0x17ee('0x12')]]['rawAttributes'];_0xc0a30f[_0x17ee('0x8')]=_[_0x17ee('0x9b')](_0x24ce05);_0xc0a30f['query']=_[_0x17ee('0x9b')](_0x42a6b4[_0x17ee('0x89')]);_0xc0a30f[_0x17ee('0x9c')]=_[_0x17ee('0x9d')](_0xc0a30f[_0x17ee('0x8')],_0xc0a30f[_0x17ee('0x89')]);_0x59d907['attributes']=_['intersection'](_0xc0a30f[_0x17ee('0x8')],qs['fields'](_0x42a6b4[_0x17ee('0x89')][_0x17ee('0x9e')]));_0x59d907['attributes']=_0x59d907['attributes'][_0x17ee('0x97')]?_0x59d907[_0x17ee('0x9f')]:_0xc0a30f[_0x17ee('0x8')];if(!_0x42a6b4['query'][_0x17ee('0xa0')](_0x17ee('0xa1'))){_0x59d907[_0x17ee('0xa2')]=qs[_0x17ee('0xa2')](_0x42a6b4['query'][_0x17ee('0xa2')]);_0x59d907[_0x17ee('0xa3')]=qs[_0x17ee('0xa3')](_0x42a6b4[_0x17ee('0x89')][_0x17ee('0xa3')]);}_0x59d907[_0x17ee('0xa4')]=qs[_0x17ee('0xa5')](_0x42a6b4[_0x17ee('0x89')][_0x17ee('0xa5')]);_0x59d907[_0x17ee('0x87')]=qs[_0x17ee('0x9c')](_['pick'](_0x42a6b4[_0x17ee('0x89')],_0xc0a30f[_0x17ee('0x9c')]));if(_0x42a6b4[_0x17ee('0x89')][_0x17ee('0x2')]){_0x59d907[_0x17ee('0x87')]=_[_0x17ee('0xa6')](_0x59d907[_0x17ee('0x87')],{'$or':_['map'](_0x24ce05,function(_0x1bfe00){if(_0x1bfe00[_0x17ee('0xf')][_0x17ee('0xa7')]!==_0x17ee('0xa8')){var _0x212fdf={};_0x212fdf[_0x1bfe00[_0x17ee('0x3')]]={'$like':'%'+_0x42a6b4['query'][_0x17ee('0x2')]+'%'};return _0x212fdf;}})});}var _0x3c6536=[];var _0x40f002=null;var _0x1acd22={};if(_0x1600c7){_0x40f002=_[_0x17ee('0x93')](_0x5f35b6,[_0x17ee('0x19'),_0x1600c7['name']]);if(_0x40f002[_0x17ee('0x3')]){_0x1acd22={};if(_0x38087a[_0x17ee('0x12')]===_0x17ee('0xd')){_0x1acd22[_0x40f002[_0x17ee('0xa9')]]=_[_0x17ee('0xa')](_0x1600c7[_0x17ee('0x9')],'id');}else{_0x1acd22[_0x40f002[_0x17ee('0xa9')]]=_0x1600c7[_0x17ee('0x9')];}_0x3c6536[_0x17ee('0x98')](_0x1acd22);}else{_0x59d907[_0x17ee('0x87')]['id']=_0x1600c7[_0x17ee('0x9')];}}else{for(var _0xedd714=0x0;_0xedd714<_0x402e70['length'];_0xedd714++){_0x40f002=_[_0x17ee('0x93')](_0x5f35b6,[_0x17ee('0x19'),_0x402e70[_0xedd714]['name']]);if(_0x40f002[_0x17ee('0x3')]){_0x1acd22={};_0x1acd22[_0x40f002[_0x17ee('0xa9')]]=_0x402e70[_0xedd714][_0x17ee('0x9')];_0x3c6536['push'](_0x1acd22);}else{if(!_0x59d907[_0x17ee('0x87')]['id'])_0x59d907[_0x17ee('0x87')]['id']=[];_0x402e70[_0xedd714][_0x17ee('0x9')][_0x17ee('0xaa')](function(_0x1012b6){_0x59d907[_0x17ee('0x87')]['id'][_0x17ee('0x98')](_0x1012b6);});}}}if(!_['isEmpty'](_0x3c6536)){_0x59d907[_0x17ee('0x87')]=_[_0x17ee('0xa6')](_0x59d907[_0x17ee('0x87')],{'$and':{'$or':_0x3c6536}});}_0x59d907=_['merge']({},_0x59d907,_0x42a6b4[_0x17ee('0xab')]);if(_0x1600c7&&!_0x1600c7[_0x17ee('0x99')]&&_0x38087a[_0x17ee('0x12')]===_0x17ee('0xd')){if(_0x42a6b4[_0x17ee('0x89')]['includeAll']){_0x59d907[_0x17ee('0xac')]=[{'all':!![]}];}return _0x1790ff[_0x38087a['childModel']][_0x17ee('0x5')](_0x59d907)[_0x17ee('0x6')](function(_0x3571a8){var _0x17e2f3=[];_0x3571a8[_0x17ee('0xaa')](function(_0x26d5ba){var _0x26ef1f;switch(_0x26d5ba['reportType']){case _0x17ee('0xad'):_0x26ef1f=_[_0x17ee('0x93')](_0x1600c7[_0x17ee('0x9')],function(_0x14a66f){return _0x14a66f['id']===_0x26d5ba[_0x17ee('0xae')]&&_0x14a66f['type']===_0x17ee('0xaf');});break;case _0x17ee('0xb0'):_0x26ef1f=_['find'](_0x1600c7[_0x17ee('0x9')],function(_0x25a4b9){return _0x25a4b9['id']===_0x26d5ba[_0x17ee('0xae')]&&_0x25a4b9[_0x17ee('0xf')]==='CustomReports';});break;}if(_0x26ef1f)_0x17e2f3[_0x17ee('0x98')](_0x26d5ba);});_0x135c29['count']=_0x17e2f3[_0x17ee('0x97')];_0x135c29[_0x17ee('0xb1')]=_0x17e2f3;return _0x135c29;});}else{return _0x1790ff[_0x38087a[_0x17ee('0x12')]][_0x17ee('0xb2')]({'where':_0x59d907[_0x17ee('0x87')]})[_0x17ee('0x6')](function(_0x4e89ee){_0x135c29[_0x17ee('0xb2')]=_0x4e89ee;if(_0x42a6b4[_0x17ee('0x89')][_0x17ee('0xb3')]){if(_0x38087a[_0x17ee('0x12')]===_0x17ee('0x1d')){_0x59d907[_0x17ee('0xac')]=[{'model':_0x1790ff[_0x17ee('0xb4')],'as':_0x17ee('0xb5'),'attributes':['id',_0x17ee('0x19'),_0x17ee('0xb6')],'required':_0x42a6b4[_0x17ee('0x89')][_0x17ee('0xb7')]?!![]:![]},{'model':_0x1790ff[_0x17ee('0xb4')],'as':'ThroughTags','attributes':['id','name',_0x17ee('0xb6')],'through':_0x42a6b4[_0x17ee('0x89')][_0x17ee('0xb7')]?{'attributes':[],'where':{'TagId':_0x42a6b4[_0x17ee('0x89')][_0x17ee('0xb7')]||undefined}}:{},'required':_0x42a6b4['query'][_0x17ee('0xb7')]?!![]:![]}];}else{_0x59d907[_0x17ee('0xac')]=[{'all':!![]}];}}return _0x1790ff[_0x38087a[_0x17ee('0x12')]][_0x17ee('0x5')](_0x59d907);})[_0x17ee('0x6')](function(_0x2bdf47){_0x135c29[_0x17ee('0xb1')]=_0x2bdf47;if(_0x16cd1b===_0x17ee('0x2e')&&_0x42a6b4[_0x17ee('0x89')][_0x17ee('0xb8')]===_0x17ee('0xb9')){var _0x50daad=[];for(var _0x3801b6=0x0;_0x3801b6<_0x135c29[_0x17ee('0xb1')]['length'];_0x3801b6++){_0x50daad[_0x17ee('0x98')](_0x1f860d(_0x17ee('0xba'),_0x135c29['rows'][_0x3801b6][_0x17ee('0xbb')]));_0x50daad['push'](_0x1f860d(_0x17ee('0xbc'),_0x135c29[_0x17ee('0xb1')][_0x3801b6][_0x17ee('0xbb')]));_0x50daad[_0x17ee('0x98')](_0x1f860d('fax',_0x135c29[_0x17ee('0xb1')][_0x3801b6][_0x17ee('0xbb')]));_0x50daad[_0x17ee('0x98')](_0x1f860d('mail',_0x135c29[_0x17ee('0xb1')][_0x3801b6]['dataValues']));_0x50daad[_0x17ee('0x98')](_0x1f860d(_0x17ee('0xbd'),_0x135c29[_0x17ee('0xb1')][_0x3801b6][_0x17ee('0xbb')]));_0x50daad['push'](_0x1f860d(_0x17ee('0xbe'),_0x135c29[_0x17ee('0xb1')][_0x3801b6][_0x17ee('0xbb')]));}return Promise[_0x17ee('0x9a')](_0x50daad)[_0x17ee('0x6')](function(){return _0x135c29;});}return _0x135c29;});}});}}});};
\ No newline at end of file
+var _0x3831=['faxqueues','FaxQueue','faxaccounts','FaxAccount','inboundroutes','internalroutes','VoiceContext','voicemails','VoiceRecording','membername','User','role','agent','telephone','VoiceQueues','queue','QueueCampaigns','VoiceMusicOnHold','chanspies','VoiceChanSpy','voiceprefixes','VoicePrefix','MailQueue','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','SmsQueue','smsaccounts','SmsAccount','WhatsappQueue','whatsappaccounts','WhatsappAccount','teams','Team','voicequeues','users','agents','telephones','Users','admin','user','Agents','Telephones','zendeskaccounts','ZendeskAccount','SalesforceAccount','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','vtigeraccounts','cannedanswers','CannedAnswer','dispositions','Disposition','Dashboard','intervals','Interval','pauses','Pause','scheduler','sounds','Sound','Tag','triggers','Trigger','trunks','Trunk','variables','Variable','plugins','Plugin','extractedreports','Reports','reportId','AnalyticMetric','charAt','toUpperCase','slice','Sequelize','QueryTypes','SELECT','ui.','ui.createdAt','from','user_has_','ui.UserId\x20=\x20?','sequelize','query','toString','OpenTabs','define','user_profiles','section','mergeResources','Invalid\x20section\x20\x27','UserProfileSection','find','all','ignore','isEmpty','union','push','autoAssociation','length','rawAttributes','keys','filters','attributes','intersection','fields','hasOwnProperty','limit','offset','order','sort','where','pick','merge','key','VIRTUAL','foreignKey','forEach','includeAll','include','reportType','default','DefaultReports','CustomReports','count','rows','tag','ThroughTags','color','true','chat','dataValues','fax','mail','openchannel','lodash','../../components/parsers/qs','squel','exports','filter','field','value','findAll','then','associatedResources','map','model','catch','resolve','UserProfileResource','AnalyticExtractedReport','resourceId','type','toLowerCase','SquareProject','odbc','childModel','SquareOdbc','squarerecordings','SquareProjects','name','projectName','projects','JscriptyProject','CmContact','parentSections','Lists','ListId','lists','CmList','companies','CmCompany','globalcustomfields','CmCustomField','ChatQueue','chatwebsites','ChatWebsite'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0x3831,0x14c));var _0x1383=function(_0x337229,_0x390e5e){_0x337229=_0x337229-0x0;var _0x5c639a=_0x3831[_0x337229];return _0x5c639a;};'use strict';var _=require(_0x1383('0x0'));var attributes=require('./userProfile.attributes');var qs=require(_0x1383('0x1'));var squel=require(_0x1383('0x2'));module[_0x1383('0x3')]=function(_0x15e6b5){var _0x391bef=_0x15e6b5['models'];function _0x2fdf72(_0x573874,_0x21ea2c){return new Promise(function(_0x53b708,_0x5b64b1){if(!_0x21ea2c)return _0x53b708(null);var _0x5eb4d8=_0x21ea2c[_0x1383('0x4')]?{[_0x21ea2c['filter'][_0x1383('0x5')]]:_0x21ea2c[_0x1383('0x4')][_0x1383('0x6')]}:undefined;return _0x391bef[_0x573874][_0x1383('0x7')]({'where':_0x5eb4d8,'raw':!![]})[_0x1383('0x8')](function(_0x7cb670){_0x21ea2c[_0x1383('0x9')]=_[_0x1383('0xa')](_0x7cb670,'id');_0x53b708(_0x21ea2c);})['catch'](function(_0x998e2f){_0x5b64b1(_0x998e2f);});});}function _0x34be26(_0x627ec3,_0xb11599){return new Promise(function(_0x3675cb,_0x5d5ee2){var _0x275046=_0x627ec3[_0x1383('0x4')]?{[_0x627ec3[_0x1383('0x4')]['field']]:_0x627ec3['filter'][_0x1383('0x6')]}:undefined;return _0x391bef[_0x627ec3[_0x1383('0xb')]][_0x1383('0x7')]({'where':_0x275046,'raw':!![]})[_0x1383('0x8')](function(_0x1e02d7){_0xb11599[_0x1383('0x9')]=_[_0x1383('0xa')](_0x1e02d7,function(_0x22895c){return _0x22895c['name'];});_0x3675cb(_0xb11599);})[_0x1383('0xc')](function(_0x1f46de){_0x5d5ee2(_0x1f46de);});});}function _0x41d895(_0x1c6d7b,_0x29fbd7,_0x388b94){if(!_0x29fbd7)return Promise[_0x1383('0xd')](null);return new Promise(function(_0x5ca7fc,_0x564e3f){return _0x391bef[_0x1383('0xe')]['findAll']({'where':{'sectionId':_0x29fbd7['id']},'raw':!![]})[_0x1383('0x8')](function(_0x5b3705){if(_0x1c6d7b['field']&&_0x1c6d7b['field']!=='id'){_0x29fbd7[_0x1383('0x9')]=_['map'](_0x5b3705,function(_0x2aa3b6){return _0x2aa3b6[_0x1c6d7b['field']];});}else{if(_0x388b94===_0x1383('0xf')){_0x29fbd7[_0x1383('0x9')]=_[_0x1383('0xa')](_0x5b3705,function(_0x39884b){return{'id':_0x39884b[_0x1383('0x10')],'type':_0x39884b[_0x1383('0x11')]};});}else{_0x29fbd7[_0x1383('0x9')]=_[_0x1383('0xa')](_0x5b3705,function(_0x2afbd2){return _0x2afbd2['resourceId'];});}}_0x5ca7fc(_0x29fbd7);})[_0x1383('0xc')](function(_0x24f914){_0x564e3f(_0x24f914);});});}function _0x39fea2(_0x241c3d,_0x186524){var _0x2a9502={'parentSections':[]};switch(_0x241c3d[_0x1383('0x12')]()){case'squareprojects':_0x2a9502['childModel']=_0x1383('0x13');break;case _0x1383('0x14'):_0x2a9502[_0x1383('0x15')]=_0x1383('0x16');break;case _0x1383('0x17'):_0x2a9502['childModel']='SquareRecording';_0x2a9502['parentSections']=[{'name':_0x1383('0x18'),'field':_0x1383('0x19'),'foreignKey':_0x1383('0x1a')}];break;case _0x1383('0x1b'):_0x2a9502['childModel']=_0x1383('0x1c');break;case'contacts':_0x2a9502[_0x1383('0x15')]=_0x1383('0x1d');_0x2a9502[_0x1383('0x1e')]=[{'name':_0x1383('0x1f'),'field':'id','foreignKey':_0x1383('0x20')}];break;case _0x1383('0x21'):_0x2a9502[_0x1383('0x15')]=_0x1383('0x22');break;case _0x1383('0x23'):_0x2a9502[_0x1383('0x15')]=_0x1383('0x24');break;case _0x1383('0x25'):_0x2a9502[_0x1383('0x15')]=_0x1383('0x26');break;case'chatqueues':_0x2a9502[_0x1383('0x15')]=_0x1383('0x27');break;case _0x1383('0x28'):_0x2a9502[_0x1383('0x15')]=_0x1383('0x29');break;case _0x1383('0x2a'):_0x2a9502['childModel']=_0x1383('0x2b');break;case _0x1383('0x2c'):_0x2a9502[_0x1383('0x15')]=_0x1383('0x2d');break;case _0x1383('0x2e'):case _0x1383('0x2f'):case'outboundroutes':_0x2a9502[_0x1383('0x15')]='VoiceExtension';break;case'contexts':_0x2a9502[_0x1383('0x15')]=_0x1383('0x30');break;case _0x1383('0x31'):_0x2a9502['childModel']='VoiceMail';break;case'voicerecordings':_0x2a9502[_0x1383('0x15')]=_0x1383('0x32');_0x2a9502[_0x1383('0x1e')]=[{'name':'Agents','field':'name','foreignKey':_0x1383('0x33'),'model':_0x1383('0x34'),'filter':{'field':_0x1383('0x35'),'value':[_0x1383('0x36')]}},{'name':'Telephones','field':'name','foreignKey':_0x1383('0x33'),'model':_0x1383('0x34'),'filter':{'field':_0x1383('0x35'),'value':[_0x1383('0x37')]}},{'name':_0x1383('0x38'),'field':_0x1383('0x19'),'foreignKey':_0x1383('0x39'),'model':'VoiceQueue','filter':{'field':_0x1383('0x11'),'value':['inbound']}},{'name':_0x1383('0x3a'),'field':_0x1383('0x19'),'foreignKey':_0x1383('0x39'),'model':'VoiceQueue','filter':{'field':_0x1383('0x11'),'value':['outbound']}}];break;case'musiconholds':_0x2a9502[_0x1383('0x15')]=_0x1383('0x3b');break;case _0x1383('0x3c'):_0x2a9502['childModel']=_0x1383('0x3d');break;case _0x1383('0x3e'):_0x2a9502[_0x1383('0x15')]=_0x1383('0x3f');break;case'ivrcampaigns':_0x2a9502[_0x1383('0x15')]='Campaign';break;case'mailqueues':_0x2a9502[_0x1383('0x15')]=_0x1383('0x40');break;case'mailaccounts':_0x2a9502['childModel']='MailAccount';break;case _0x1383('0x41'):_0x2a9502[_0x1383('0x15')]=_0x1383('0x42');break;case _0x1383('0x43'):_0x2a9502[_0x1383('0x15')]=_0x1383('0x44');break;case _0x1383('0x45'):_0x2a9502[_0x1383('0x15')]=_0x1383('0x46');break;case'smsqueues':_0x2a9502[_0x1383('0x15')]=_0x1383('0x47');break;case _0x1383('0x48'):_0x2a9502['childModel']=_0x1383('0x49');break;case'whatsappqueues':_0x2a9502[_0x1383('0x15')]=_0x1383('0x4a');break;case _0x1383('0x4b'):_0x2a9502[_0x1383('0x15')]=_0x1383('0x4c');break;case _0x1383('0x4d'):_0x2a9502[_0x1383('0x15')]=_0x1383('0x4e');break;case _0x1383('0x4f'):case'queuecampaigns':_0x2a9502['childModel']='VoiceQueue';if(_0x186524){_0x2a9502[_0x1383('0x1e')]=[{'name':_0x1383('0x38')},{'name':_0x1383('0x3a')}];}break;case _0x1383('0x50'):case _0x1383('0x51'):case _0x1383('0x52'):_0x2a9502['childModel']=_0x1383('0x34');if(_0x186524){_0x2a9502[_0x1383('0x1e')]=[{'name':_0x1383('0x53'),'filter':{'field':'role','value':[_0x1383('0x54'),_0x1383('0x55')]},'ignore':!![]},{'name':_0x1383('0x56')},{'name':_0x1383('0x57')}];}break;case _0x1383('0x58'):_0x2a9502['childModel']=_0x1383('0x59');break;case'salesforceaccounts':_0x2a9502[_0x1383('0x15')]=_0x1383('0x5a');break;case'freshdeskaccounts':_0x2a9502[_0x1383('0x15')]=_0x1383('0x5b');break;case _0x1383('0x5c'):_0x2a9502[_0x1383('0x15')]=_0x1383('0x5d');break;case _0x1383('0x5e'):_0x2a9502[_0x1383('0x15')]=_0x1383('0x5f');break;case _0x1383('0x60'):_0x2a9502[_0x1383('0x15')]='ZohoAccount';break;case _0x1383('0x61'):_0x2a9502[_0x1383('0x15')]=_0x1383('0x34');break;case _0x1383('0x62'):_0x2a9502[_0x1383('0x15')]=_0x1383('0x63');break;case _0x1383('0x64'):_0x2a9502[_0x1383('0x15')]=_0x1383('0x65');break;case'customdashboards':_0x2a9502[_0x1383('0x15')]=_0x1383('0x66');break;case _0x1383('0x67'):_0x2a9502['childModel']=_0x1383('0x68');break;case _0x1383('0x69'):_0x2a9502['childModel']=_0x1383('0x6a');break;case _0x1383('0x6b'):_0x2a9502['childModel']='Schedule';break;case _0x1383('0x6c'):_0x2a9502[_0x1383('0x15')]=_0x1383('0x6d');break;case'tags':_0x2a9502[_0x1383('0x15')]=_0x1383('0x6e');break;case'templates':_0x2a9502[_0x1383('0x15')]='Template';break;case _0x1383('0x6f'):_0x2a9502[_0x1383('0x15')]=_0x1383('0x70');break;case _0x1383('0x71'):_0x2a9502[_0x1383('0x15')]=_0x1383('0x72');break;case _0x1383('0x73'):_0x2a9502[_0x1383('0x15')]=_0x1383('0x74');break;case _0x1383('0x75'):_0x2a9502[_0x1383('0x15')]=_0x1383('0x76');break;case _0x1383('0x77'):_0x2a9502[_0x1383('0x15')]=_0x1383('0xf');_0x2a9502[_0x1383('0x1e')]=[{'name':_0x1383('0x78'),'field':'id','foreignKey':_0x1383('0x79')}];break;case'metrics':_0x2a9502[_0x1383('0x15')]=_0x1383('0x7a');break;}return _0x2a9502;}function _0x316e36(_0x1f78b2,_0x255db9){var _0x1b9eda=_0x1f78b2[_0x1383('0x7b')](0x0)[_0x1383('0x7c')]()+_0x1f78b2[_0x1383('0x7d')](0x1);var _0x32a9fb={'type':_0x391bef[_0x1383('0x7e')][_0x1383('0x7f')][_0x1383('0x80')],'raw':!![]};return new Promise(function(_0xcae0c2,_0x4f6a51){var _0x1f1b08=squel['select']()[_0x1383('0x5')](_0x1383('0x81')+_0x1b9eda+'InteractionId','id')[_0x1383('0x5')](_0x1383('0x82'))[_0x1383('0x83')](_0x1383('0x84')+_0x1f78b2+'_interactions','ui')['where'](_0x1383('0x85'),_0x255db9['id']);return _0x391bef[_0x1383('0x86')][_0x1383('0x87')](_0x1f1b08[_0x1383('0x88')](),_0x32a9fb)['then'](function(_0x69e495){_0x255db9[_0x1b9eda+_0x1383('0x89')]=_0x69e495;_0xcae0c2(_0x69e495);})[_0x1383('0xc')](function(_0x58a80b){_0x4f6a51(_0x58a80b);});});}return _0x15e6b5[_0x1383('0x8a')]('UserProfile',attributes,{'tableName':_0x1383('0x8b'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x4ae832){var _0x200e76={'raw':![],'where':{}};var _0x45363e={};var _0x15b538={'count':0x0,'rows':[]};var _0x1cd59b=_0x4ae832[_0x1383('0x87')][_0x1383('0x8c')];var _0x15a08e=_0x4ae832[_0x1383('0x87')][_0x1383('0x8d')]||![];var _0x448e13=_0x39fea2(_0x1cd59b,_0x15a08e);if(!_0x448e13[_0x1383('0x15')])throw new Error(_0x1383('0x8e')+_0x1cd59b+'\x27');var _0x38b24b=[{'name':_0x1cd59b}];if(!_['isEmpty'](_0x448e13[_0x1383('0x1e')]))_0x38b24b=_0x448e13[_0x1383('0x1e')];var _0x11f612=[];for(var _0x2db88e=0x0;_0x2db88e<_0x38b24b['length'];_0x2db88e++){_0x11f612['push'](_0x391bef[_0x1383('0x8f')][_0x1383('0x90')]({'where':{'userProfileId':_0x4ae832['params']['id'],'name':_0x38b24b[_0x2db88e]['name']},'raw':!![]}));}return Promise[_0x1383('0x91')](_0x11f612)[_0x1383('0x8')](function(_0x1be3bd){var _0x27351e=_[_0x1383('0x4')](_0x1be3bd,function(_0x5b9a0c){return _0x5b9a0c?_0x5b9a0c:undefined;});var _0x3fcc3f=_[_0x1383('0x4')](_0x38b24b,[_0x1383('0x92'),!![]]);var _0x13d830=_[_0x1383('0x93')](_0x27351e)&&_[_0x1383('0x93')](_0x3fcc3f)?null:_[_0x1383('0x94')](_0x3fcc3f,_0x27351e);if(!_0x13d830)return null;var _0x574641=[];for(var _0x337df8=0x0;_0x337df8<_0x13d830['length'];_0x337df8++){var _0x32e44a=_['find'](_0x38b24b,function(_0x7feade){return _0x13d830[_0x337df8]?_0x7feade['name']===_0x13d830[_0x337df8][_0x1383('0x19')]:null;});if(_0x32e44a){if(_0x13d830[_0x337df8][_0x1383('0x92')]){_0x574641[_0x1383('0x95')](_0x2fdf72(_0x448e13['childModel'],_0x13d830[_0x337df8]));}else{if(!_0x13d830[_0x337df8][_0x1383('0x96')]){_0x574641['push'](_0x41d895(_0x32e44a,_0x13d830[_0x337df8],_0x448e13[_0x1383('0x15')]));}else{if(_0x32e44a['model']){_0x574641[_0x1383('0x95')](_0x34be26(_0x32e44a,_0x13d830[_0x337df8]));}}}}}return Promise['all'](_0x574641);})['then'](function(_0x357ab1){var _0x2a1aa8=_0x357ab1;var _0x42e576=null;if(_0x2a1aa8){_0x42e576=_0x2a1aa8[_0x1383('0x97')]===0x1?_0x2a1aa8[0x0]:null;}if(!_0x42e576&&!_0x2a1aa8)return _0x15b538;var _0x20ee6b=_0x391bef[_0x448e13[_0x1383('0x15')]][_0x1383('0x98')];_0x45363e[_0x1383('0xb')]=_[_0x1383('0x99')](_0x20ee6b);_0x45363e[_0x1383('0x87')]=_[_0x1383('0x99')](_0x4ae832[_0x1383('0x87')]);_0x45363e[_0x1383('0x9a')]=_['intersection'](_0x45363e[_0x1383('0xb')],_0x45363e[_0x1383('0x87')]);_0x200e76[_0x1383('0x9b')]=_[_0x1383('0x9c')](_0x45363e[_0x1383('0xb')],qs[_0x1383('0x9d')](_0x4ae832[_0x1383('0x87')][_0x1383('0x9d')]));_0x200e76[_0x1383('0x9b')]=_0x200e76[_0x1383('0x9b')][_0x1383('0x97')]?_0x200e76[_0x1383('0x9b')]:_0x45363e[_0x1383('0xb')];if(!_0x4ae832['query'][_0x1383('0x9e')]('nolimit')){_0x200e76[_0x1383('0x9f')]=qs['limit'](_0x4ae832['query'][_0x1383('0x9f')]);_0x200e76[_0x1383('0xa0')]=qs['offset'](_0x4ae832['query'][_0x1383('0xa0')]);}_0x200e76[_0x1383('0xa1')]=qs[_0x1383('0xa2')](_0x4ae832['query'][_0x1383('0xa2')]);_0x200e76[_0x1383('0xa3')]=qs['filters'](_[_0x1383('0xa4')](_0x4ae832[_0x1383('0x87')],_0x45363e['filters']));if(_0x4ae832[_0x1383('0x87')][_0x1383('0x4')]){_0x200e76[_0x1383('0xa3')]=_[_0x1383('0xa5')](_0x200e76[_0x1383('0xa3')],{'$or':_[_0x1383('0xa')](_0x20ee6b,function(_0x452dc9){if(_0x452dc9['type'][_0x1383('0xa6')]!==_0x1383('0xa7')){var _0x50815e={};_0x50815e[_0x452dc9['field']]={'$like':'%'+_0x4ae832[_0x1383('0x87')][_0x1383('0x4')]+'%'};return _0x50815e;}})});}var _0x1f247d=[];var _0x35d60f=null;var _0x5f079d={};if(_0x42e576){_0x35d60f=_[_0x1383('0x90')](_0x38b24b,[_0x1383('0x19'),_0x42e576[_0x1383('0x19')]]);if(_0x35d60f[_0x1383('0x5')]){_0x5f079d={};if(_0x448e13[_0x1383('0x15')]===_0x1383('0xf')){_0x5f079d[_0x35d60f[_0x1383('0xa8')]]=_[_0x1383('0xa')](_0x42e576[_0x1383('0x9')],'id');}else{_0x5f079d[_0x35d60f[_0x1383('0xa8')]]=_0x42e576['associatedResources'];}_0x1f247d['push'](_0x5f079d);}else{_0x200e76[_0x1383('0xa3')]['id']=_0x42e576[_0x1383('0x9')];}}else{for(var _0x540924=0x0;_0x540924<_0x2a1aa8[_0x1383('0x97')];_0x540924++){_0x35d60f=_[_0x1383('0x90')](_0x38b24b,[_0x1383('0x19'),_0x2a1aa8[_0x540924][_0x1383('0x19')]]);if(_0x35d60f[_0x1383('0x5')]){_0x5f079d={};_0x5f079d[_0x35d60f[_0x1383('0xa8')]]=_0x2a1aa8[_0x540924][_0x1383('0x9')];_0x1f247d[_0x1383('0x95')](_0x5f079d);}else{if(!_0x200e76[_0x1383('0xa3')]['id'])_0x200e76[_0x1383('0xa3')]['id']=[];_0x2a1aa8[_0x540924][_0x1383('0x9')][_0x1383('0xa9')](function(_0xe10b76){_0x200e76[_0x1383('0xa3')]['id'][_0x1383('0x95')](_0xe10b76);});}}}if(!_['isEmpty'](_0x1f247d)){_0x200e76[_0x1383('0xa3')]=_['merge'](_0x200e76[_0x1383('0xa3')],{'$and':{'$or':_0x1f247d}});}_0x200e76=_[_0x1383('0xa5')]({},_0x200e76,_0x4ae832['options']);if(_0x42e576&&!_0x42e576[_0x1383('0x96')]&&_0x448e13['childModel']===_0x1383('0xf')){if(_0x4ae832[_0x1383('0x87')][_0x1383('0xaa')]){_0x200e76[_0x1383('0xab')]=[{'all':!![]}];}return _0x391bef[_0x448e13['childModel']][_0x1383('0x7')](_0x200e76)['then'](function(_0x1aeef5){var _0x39ad3b=[];_0x1aeef5[_0x1383('0xa9')](function(_0x51217b){var _0x2026fd;switch(_0x51217b[_0x1383('0xac')]){case _0x1383('0xad'):_0x2026fd=_[_0x1383('0x90')](_0x42e576['associatedResources'],function(_0x5cd5c8){return _0x5cd5c8['id']===_0x51217b['reportId']&&_0x5cd5c8['type']===_0x1383('0xae');});break;case'custom':_0x2026fd=_['find'](_0x42e576[_0x1383('0x9')],function(_0x1b10fe){return _0x1b10fe['id']===_0x51217b[_0x1383('0x79')]&&_0x1b10fe[_0x1383('0x11')]===_0x1383('0xaf');});break;}if(_0x2026fd)_0x39ad3b[_0x1383('0x95')](_0x51217b);});_0x15b538[_0x1383('0xb0')]=_0x39ad3b[_0x1383('0x97')];_0x15b538[_0x1383('0xb1')]=_0x39ad3b;return _0x15b538;});}else{return _0x391bef[_0x448e13[_0x1383('0x15')]]['count']({'where':_0x200e76['where']})[_0x1383('0x8')](function(_0x56aaa7){_0x15b538[_0x1383('0xb0')]=_0x56aaa7;if(_0x4ae832[_0x1383('0x87')]['includeAll']){if(_0x448e13['childModel']===_0x1383('0x1d')){_0x200e76[_0x1383('0xab')]=[{'model':_0x391bef[_0x1383('0x6e')],'as':'Tags','attributes':['id',_0x1383('0x19'),'color'],'required':_0x4ae832[_0x1383('0x87')][_0x1383('0xb2')]?!![]:![]},{'model':_0x391bef['Tag'],'as':_0x1383('0xb3'),'attributes':['id',_0x1383('0x19'),_0x1383('0xb4')],'through':_0x4ae832['query'][_0x1383('0xb2')]?{'attributes':[],'where':{'TagId':_0x4ae832['query'][_0x1383('0xb2')]||undefined}}:{},'required':_0x4ae832['query'][_0x1383('0xb2')]?!![]:![]}];}else{_0x200e76[_0x1383('0xab')]=[{'all':!![]}];}}return _0x391bef[_0x448e13['childModel']][_0x1383('0x7')](_0x200e76);})['then'](function(_0x337243){_0x15b538[_0x1383('0xb1')]=_0x337243;if(_0x1cd59b===_0x1383('0x56')&&_0x4ae832[_0x1383('0x87')]['openTabs']===_0x1383('0xb5')){var _0x10b1d2=[];for(var _0x1790bf=0x0;_0x1790bf<_0x15b538[_0x1383('0xb1')][_0x1383('0x97')];_0x1790bf++){_0x10b1d2[_0x1383('0x95')](_0x316e36(_0x1383('0xb6'),_0x15b538[_0x1383('0xb1')][_0x1790bf][_0x1383('0xb7')]));_0x10b1d2[_0x1383('0x95')](_0x316e36('sms',_0x15b538[_0x1383('0xb1')][_0x1790bf][_0x1383('0xb7')]));_0x10b1d2[_0x1383('0x95')](_0x316e36(_0x1383('0xb8'),_0x15b538['rows'][_0x1790bf][_0x1383('0xb7')]));_0x10b1d2[_0x1383('0x95')](_0x316e36(_0x1383('0xb9'),_0x15b538[_0x1383('0xb1')][_0x1790bf][_0x1383('0xb7')]));_0x10b1d2[_0x1383('0x95')](_0x316e36(_0x1383('0xba'),_0x15b538[_0x1383('0xb1')][_0x1790bf][_0x1383('0xb7')]));_0x10b1d2[_0x1383('0x95')](_0x316e36('whatsapp',_0x15b538[_0x1383('0xb1')][_0x1790bf]['dataValues']));}return Promise[_0x1383('0x91')](_0x10b1d2)['then'](function(){return _0x15b538;});}return _0x15b538;});}});}}});};
\ No newline at end of file
index 10060d0..03b0945 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffb1=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','./userProfile.socket','register','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xffb1,0x93));var _0x1ffb=function(_0x545b71,_0x4f44eb){_0x545b71=_0x545b71-0x0;var _0x26e587=_0xffb1[_0x545b71];return _0x26e587;};'use strict';var _=require(_0x1ffb('0x0'));var util=require(_0x1ffb('0x1'));var moment=require(_0x1ffb('0x2'));var BPromise=require(_0x1ffb('0x3'));var rs=require(_0x1ffb('0x4'));var fs=require('fs');var Redis=require(_0x1ffb('0x5'));var db=require(_0x1ffb('0x6'))['db'];var utils=require(_0x1ffb('0x7'));var logger=require(_0x1ffb('0x8'))(_0x1ffb('0x9'));var config=require('../../config/environment');var jayson=require(_0x1ffb('0xa'));var client=jayson[_0x1ffb('0xb')][_0x1ffb('0xc')]({'port':0x232a});config[_0x1ffb('0xd')]=_[_0x1ffb('0xe')](config['redis'],{'host':_0x1ffb('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x1ffb('0x10'))[_0x1ffb('0x11')](socket);function respondWithRpcPromise(_0x88a91b,_0x5d1736,_0x47f924){return new BPromise(function(_0x13afd2,_0x36c36c){return client['request'](_0x88a91b,_0x47f924)[_0x1ffb('0x12')](function(_0x4fd018){logger[_0x1ffb('0x13')](_0x1ffb('0x14'),_0x5d1736,_0x1ffb('0x15'));logger[_0x1ffb('0x16')](_0x1ffb('0x17'),_0x5d1736,_0x1ffb('0x15'),JSON['stringify'](_0x4fd018));if(_0x4fd018[_0x1ffb('0x18')]){if(_0x4fd018[_0x1ffb('0x18')][_0x1ffb('0x19')]===0x1f4){logger['error'](_0x1ffb('0x14'),_0x5d1736,_0x4fd018['error']['message']);return _0x36c36c(_0x4fd018['error'][_0x1ffb('0x1a')]);}logger[_0x1ffb('0x18')]('UserProfile,\x20%s,\x20%s',_0x5d1736,_0x4fd018[_0x1ffb('0x18')][_0x1ffb('0x1a')]);return _0x13afd2(_0x4fd018[_0x1ffb('0x18')][_0x1ffb('0x1a')]);}else{logger['info'](_0x1ffb('0x14'),_0x5d1736,'request\x20sent');_0x13afd2(_0x4fd018[_0x1ffb('0x1b')][_0x1ffb('0x1a')]);}})[_0x1ffb('0x1c')](function(_0x30b8cc){logger[_0x1ffb('0x18')]('UserProfile,\x20%s,\x20%s',_0x5d1736,_0x30b8cc);_0x36c36c(_0x30b8cc);});});}
\ No newline at end of file
+var _0x58c9=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','register','request','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','UserProfile,\x20%s,\x20%s,\x20%s','error','message','catch','lodash','util','moment','bluebird'];(function(_0x3e32a8,_0x255953){var _0x2997b0=function(_0x2d564a){while(--_0x2d564a){_0x3e32a8['push'](_0x3e32a8['shift']());}};_0x2997b0(++_0x255953);}(_0x58c9,0x1bc));var _0x958c=function(_0x303f07,_0x1ffdb3){_0x303f07=_0x303f07-0x0;var _0x45f2da=_0x58c9[_0x303f07];return _0x45f2da;};'use strict';var _=require(_0x958c('0x0'));var util=require(_0x958c('0x1'));var moment=require(_0x958c('0x2'));var BPromise=require(_0x958c('0x3'));var rs=require(_0x958c('0x4'));var fs=require('fs');var Redis=require(_0x958c('0x5'));var db=require(_0x958c('0x6'))['db'];var utils=require(_0x958c('0x7'));var logger=require(_0x958c('0x8'))(_0x958c('0x9'));var config=require(_0x958c('0xa'));var jayson=require(_0x958c('0xb'));var client=jayson[_0x958c('0xc')]['http']({'port':0x232a});config[_0x958c('0xd')]=_[_0x958c('0xe')](config[_0x958c('0xd')],{'host':_0x958c('0xf'),'port':0x18eb});var socket=require(_0x958c('0x10'))(new Redis(config[_0x958c('0xd')]));require(_0x958c('0x11'))[_0x958c('0x12')](socket);function respondWithRpcPromise(_0x86f976,_0xac53f0,_0xba69db){return new BPromise(function(_0x553f00,_0x34bb7e){return client[_0x958c('0x13')](_0x86f976,_0xba69db)[_0x958c('0x14')](function(_0x1140e7){logger[_0x958c('0x15')](_0x958c('0x16'),_0xac53f0,_0x958c('0x17'));logger['debug'](_0x958c('0x18'),_0xac53f0,_0x958c('0x17'),JSON['stringify'](_0x1140e7));if(_0x1140e7[_0x958c('0x19')]){if(_0x1140e7[_0x958c('0x19')]['code']===0x1f4){logger[_0x958c('0x19')](_0x958c('0x16'),_0xac53f0,_0x1140e7['error']['message']);return _0x34bb7e(_0x1140e7[_0x958c('0x19')]['message']);}logger['error']('UserProfile,\x20%s,\x20%s',_0xac53f0,_0x1140e7[_0x958c('0x19')][_0x958c('0x1a')]);return _0x553f00(_0x1140e7[_0x958c('0x19')][_0x958c('0x1a')]);}else{logger['info']('UserProfile,\x20%s,\x20%s',_0xac53f0,'request\x20sent');_0x553f00(_0x1140e7['result']['message']);}})[_0x958c('0x1b')](function(_0xfc649a){logger[_0x958c('0x19')](_0x958c('0x16'),_0xac53f0,_0xfc649a);_0x34bb7e(_0xfc649a);});});}
\ No newline at end of file
index 00228ff..4dbff6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65e2=['save','remove','emit','length','userProfile:'];(function(_0x13ab2c,_0x532fb3){var _0x58756a=function(_0x2e3b28){while(--_0x2e3b28){_0x13ab2c['push'](_0x13ab2c['shift']());}};_0x58756a(++_0x532fb3);}(_0x65e2,0x69));var _0x265e=function(_0x14dc09,_0x4488b9){_0x14dc09=_0x14dc09-0x0;var _0x51a3de=_0x65e2[_0x14dc09];return _0x51a3de;};'use strict';var UserProfileEvents=require('./userProfile.events');var events=[_0x265e('0x0'),_0x265e('0x1'),'update'];function createListener(_0xb2f37d,_0x230de8){return function(_0x28334e){_0x230de8[_0x265e('0x2')](_0xb2f37d,_0x28334e);};}function removeListener(_0xa36138,_0x5680b6){return function(){UserProfileEvents['removeListener'](_0xa36138,_0x5680b6);};}exports['register']=function(_0x50e6fe){for(var _0x39309a=0x0,_0x13ce83=events[_0x265e('0x3')];_0x39309a<_0x13ce83;_0x39309a++){var _0x192507=events[_0x39309a];var _0x453fff=createListener(_0x265e('0x4')+_0x192507,_0x50e6fe);UserProfileEvents['on'](_0x192507,_0x453fff);}};
\ No newline at end of file
+var _0xd27c=['length','./userProfile.events','save','update','emit','removeListener'];(function(_0x566a7c,_0x989746){var _0x505227=function(_0x37d764){while(--_0x37d764){_0x566a7c['push'](_0x566a7c['shift']());}};_0x505227(++_0x989746);}(_0xd27c,0x1e1));var _0xcd27=function(_0x23629f,_0x4b37fa){_0x23629f=_0x23629f-0x0;var _0x4d810a=_0xd27c[_0x23629f];return _0x4d810a;};'use strict';var UserProfileEvents=require(_0xcd27('0x0'));var events=[_0xcd27('0x1'),'remove',_0xcd27('0x2')];function createListener(_0x50d73a,_0x5b63e1){return function(_0x3799bf){_0x5b63e1[_0xcd27('0x3')](_0x50d73a,_0x3799bf);};}function removeListener(_0x470b39,_0x40cb15){return function(){UserProfileEvents[_0xcd27('0x4')](_0x470b39,_0x40cb15);};}exports['register']=function(_0x1c8110){for(var _0x2de5d6=0x0,_0x26788a=events[_0xcd27('0x5')];_0x2de5d6<_0x26788a;_0x2de5d6++){var _0x2f1708=events[_0x2de5d6];var _0xa0866a=createListener('userProfile:'+_0x2f1708,_0x1c8110);UserProfileEvents['on'](_0x2f1708,_0xa0866a);}};
\ No newline at end of file
index a684fa8..75dbcca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x004b=['../../components/interaction/service','../../config/environment','./userProfileResource.controller','get','/describe','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x004b,0x67));var _0xb004=function(_0x41f618,_0x8b5cd8){_0x41f618=_0x41f618-0x0;var _0x2c9a00=_0x004b[_0x41f618];return _0x2c9a00;};'use strict';var multer=require(_0xb004('0x0'));var util=require(_0xb004('0x1'));var path=require(_0xb004('0x2'));var timeout=require(_0xb004('0x3'));var express=require('express');var router=express[_0xb004('0x4')]();var fs_extra=require(_0xb004('0x5'));var auth=require(_0xb004('0x6'));var interaction=require(_0xb004('0x7'));var config=require(_0xb004('0x8'));var controller=require(_0xb004('0x9'));router[_0xb004('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0xb004('0xa')](_0xb004('0xb'),auth['isAuthenticated'](),controller['describe']);router[_0xb004('0xa')](_0xb004('0xc'),auth[_0xb004('0xd')](),controller[_0xb004('0xe')]);router[_0xb004('0xf')]('/',auth[_0xb004('0xd')](),controller[_0xb004('0x10')]);router[_0xb004('0x11')](_0xb004('0xc'),auth['isAuthenticated'](),controller[_0xb004('0x12')]);router[_0xb004('0x13')](_0xb004('0xc'),auth[_0xb004('0xd')](),controller[_0xb004('0x14')]);module[_0xb004('0x15')]=router;
\ No newline at end of file
+var _0x7798=['../../components/interaction/service','../../config/environment','./userProfileResource.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0xf3b06f,_0x489959){var _0x531640=function(_0x50f1ba){while(--_0x50f1ba){_0xf3b06f['push'](_0xf3b06f['shift']());}};_0x531640(++_0x489959);}(_0x7798,0x175));var _0x8779=function(_0x4e6bd9,_0x3e5d9f){_0x4e6bd9=_0x4e6bd9-0x0;var _0x479e81=_0x7798[_0x4e6bd9];return _0x479e81;};'use strict';var multer=require(_0x8779('0x0'));var util=require('util');var path=require(_0x8779('0x1'));var timeout=require(_0x8779('0x2'));var express=require(_0x8779('0x3'));var router=express[_0x8779('0x4')]();var fs_extra=require(_0x8779('0x5'));var auth=require(_0x8779('0x6'));var interaction=require(_0x8779('0x7'));var config=require(_0x8779('0x8'));var controller=require(_0x8779('0x9'));router[_0x8779('0xa')]('/',auth[_0x8779('0xb')](),controller[_0x8779('0xc')]);router[_0x8779('0xa')](_0x8779('0xd'),auth['isAuthenticated'](),controller[_0x8779('0xe')]);router[_0x8779('0xa')](_0x8779('0xf'),auth[_0x8779('0xb')](),controller[_0x8779('0x10')]);router[_0x8779('0x11')]('/',auth[_0x8779('0xb')](),controller['create']);router['put'](_0x8779('0xf'),auth['isAuthenticated'](),controller['update']);router[_0x8779('0x12')](_0x8779('0xf'),auth[_0x8779('0xb')](),controller[_0x8779('0x13')]);module['exports']=router;
\ No newline at end of file
index 2c13068..b126640 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe32d=['INTEGER','STRING','exports'];(function(_0x5981ba,_0x188a5b){var _0x42ee4e=function(_0x4ba7e9){while(--_0x4ba7e9){_0x5981ba['push'](_0x5981ba['shift']());}};_0x42ee4e(++_0x188a5b);}(_0xe32d,0x92));var _0xde32=function(_0x10a236,_0x17ce17){_0x10a236=_0x10a236-0x0;var _0x4cf221=_0xe32d[_0x10a236];return _0x4cf221;};'use strict';var Sequelize=require('sequelize');module[_0xde32('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'resourceId':{'type':Sequelize[_0xde32('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xde32('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x2373=['exports','STRING','INTEGER','sequelize'];(function(_0x2aa7a0,_0x4ebc4d){var _0x45598f=function(_0x5b0e80){while(--_0x5b0e80){_0x2aa7a0['push'](_0x2aa7a0['shift']());}};_0x45598f(++_0x4ebc4d);}(_0x2373,0xb3));var _0x3237=function(_0xe1292b,_0x52d37e){_0xe1292b=_0xe1292b-0x0;var _0x2e1883=_0x2373[_0xe1292b];return _0x2e1883;};'use strict';var Sequelize=require(_0x3237('0x0'));module[_0x3237('0x1')]={'name':{'type':Sequelize[_0x3237('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x3237('0x3')],'allowNull':![]},'type':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 048009a..7b40ffc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['index','UserProfileResource','fieldName','type','key','map','query','keys','model','fields','attributes','length','nolimit','order','sort','filters','filter','where','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','rawAttributes','intersection','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','apply','save','update','then','sendStatus','error','stack','name','send'];(function(_0x59d12e,_0x1128ff){var _0x2f5ee4=function(_0x213beb){while(--_0x213beb){_0x59d12e['push'](_0x59d12e['shift']());}};_0x2f5ee4(++_0x1128ff);}(_0xdb28,0x106));var _0x8db2=function(_0x36a11e,_0x586146){_0x36a11e=_0x36a11e-0x0;var _0xa1517=_0xdb28[_0x36a11e];return _0xa1517;};'use strict';var emlformat=require(_0x8db2('0x0'));var rimraf=require(_0x8db2('0x1'));var zipdir=require(_0x8db2('0x2'));var jsonpatch=require(_0x8db2('0x3'));var rp=require('request-promise');var moment=require(_0x8db2('0x4'));var BPromise=require(_0x8db2('0x5'));var Mustache=require(_0x8db2('0x6'));var util=require(_0x8db2('0x7'));var path=require(_0x8db2('0x8'));var sox=require('sox');var csv=require(_0x8db2('0x9'));var ejs=require(_0x8db2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8db2('0xb'));var crypto=require(_0x8db2('0xc'));var jsforce=require(_0x8db2('0xd'));var deskjs=require(_0x8db2('0xe'));var toCsv=require(_0x8db2('0x9'));var querystring=require(_0x8db2('0xf'));var Papa=require(_0x8db2('0x10'));var Redis=require('ioredis');var authService=require(_0x8db2('0x11'));var qs=require(_0x8db2('0x12'));var as=require(_0x8db2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8db2('0x14'))(_0x8db2('0x15'));var utils=require('../../config/utils');var config=require(_0x8db2('0x16'));var licenseUtil=require(_0x8db2('0x17'));var db=require(_0x8db2('0x18'))['db'];function respondWithStatusCode(_0x204f49,_0x37d017){_0x37d017=_0x37d017||0xcc;return function(_0x559fb1){if(_0x559fb1){return _0x204f49['sendStatus'](_0x37d017);}return _0x204f49[_0x8db2('0x19')](_0x37d017)[_0x8db2('0x1a')]();};}function respondWithResult(_0x350d61,_0x1d6a15){_0x1d6a15=_0x1d6a15||0xc8;return function(_0x227355){if(_0x227355){return _0x350d61[_0x8db2('0x19')](_0x1d6a15)[_0x8db2('0x1b')](_0x227355);}};}function respondWithFilteredResult(_0x3c96a7,_0x131252){return function(_0x16c8c2){if(_0x16c8c2){var _0x5489a9=typeof _0x131252[_0x8db2('0x1c')]===_0x8db2('0x1d')&&typeof _0x131252['limit']===_0x8db2('0x1d');var _0x44957d=_0x16c8c2[_0x8db2('0x1e')];var _0x3fddc2=_0x5489a9?0x0:_0x131252[_0x8db2('0x1c')];var _0x46ce14=_0x5489a9?_0x16c8c2['count']:_0x131252['offset']+_0x131252[_0x8db2('0x1f')];var _0x104e33;if(_0x46ce14>=_0x44957d){_0x46ce14=_0x44957d;_0x104e33=0xc8;}else{_0x104e33=0xce;}_0x3c96a7[_0x8db2('0x19')](_0x104e33);return _0x3c96a7[_0x8db2('0x20')]('Content-Range',_0x3fddc2+'-'+_0x46ce14+'/'+_0x44957d)[_0x8db2('0x1b')](_0x16c8c2);}return null;};}function patchUpdates(_0x36a9ff){return function(_0x260940){try{jsonpatch[_0x8db2('0x21')](_0x260940,_0x36a9ff,!![]);}catch(_0x3dbe8e){return BPromise['reject'](_0x3dbe8e);}return _0x260940[_0x8db2('0x22')]();};}function saveUpdates(_0x3e30e6,_0x18f69c){return function(_0x125be2){if(_0x125be2){return _0x125be2[_0x8db2('0x23')](_0x3e30e6)[_0x8db2('0x24')](function(_0x796ec1){return _0x796ec1;});}return null;};}function removeEntity(_0x5c6614,_0x256202){return function(_0x4f6516){if(_0x4f6516){return _0x4f6516['destroy']()['then'](function(){_0x5c6614['status'](0xcc)[_0x8db2('0x1a')]();});}};}function handleEntityNotFound(_0x29b5cd,_0x3be281){return function(_0x2baed0){if(!_0x2baed0){_0x29b5cd[_0x8db2('0x25')](0x194);}return _0x2baed0;};}function handleError(_0x8d4f54,_0x58cd9d){_0x58cd9d=_0x58cd9d||0x1f4;return function(_0x3544ba){logger[_0x8db2('0x26')](_0x3544ba[_0x8db2('0x27')]);if(_0x3544ba[_0x8db2('0x28')]){delete _0x3544ba['name'];}_0x8d4f54[_0x8db2('0x19')](_0x58cd9d)[_0x8db2('0x29')](_0x3544ba);};}exports[_0x8db2('0x2a')]=function(_0x1687ed,_0xbe5ece){var _0x21bae5={},_0xa54ea3={},_0x3124d5={'count':0x0,'rows':[]};var _0xbc5366=_['map'](db[_0x8db2('0x2b')]['rawAttributes'],function(_0x59cb77){return{'name':_0x59cb77[_0x8db2('0x2c')],'type':_0x59cb77[_0x8db2('0x2d')][_0x8db2('0x2e')]};});_0xa54ea3['model']=_[_0x8db2('0x2f')](_0xbc5366,'name');_0xa54ea3[_0x8db2('0x30')]=_[_0x8db2('0x31')](_0x1687ed[_0x8db2('0x30')]);_0xa54ea3['filters']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],_0xa54ea3[_0x8db2('0x30')]);_0x21bae5['attributes']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],qs[_0x8db2('0x33')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x33')]));_0x21bae5[_0x8db2('0x34')]=_0x21bae5[_0x8db2('0x34')][_0x8db2('0x35')]?_0x21bae5[_0x8db2('0x34')]:_0xa54ea3[_0x8db2('0x32')];if(!_0x1687ed[_0x8db2('0x30')]['hasOwnProperty'](_0x8db2('0x36'))){_0x21bae5[_0x8db2('0x1f')]=qs['limit'](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x1f')]);_0x21bae5['offset']=qs['offset'](_0x1687ed[_0x8db2('0x30')]['offset']);}_0x21bae5[_0x8db2('0x37')]=qs[_0x8db2('0x38')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x38')]);_0x21bae5['where']=qs[_0x8db2('0x39')](_['pick'](_0x1687ed[_0x8db2('0x30')],_0xa54ea3[_0x8db2('0x39')]),_0xbc5366);if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]){_0x21bae5['where']=_['merge'](_0x21bae5[_0x8db2('0x3b')],{'$or':_[_0x8db2('0x2f')](_0xbc5366,function(_0x5dc2b4){if(_0x5dc2b4[_0x8db2('0x2d')]!==_0x8db2('0x3c')){var _0x656dd2={};_0x656dd2[_0x5dc2b4['name']]={'$like':'%'+_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]+'%'};return _0x656dd2;}})});}_0x21bae5=_[_0x8db2('0x3d')]({},_0x21bae5,_0x1687ed[_0x8db2('0x3e')]);var _0x2e6f0c={'where':_0x21bae5[_0x8db2('0x3b')]};return db[_0x8db2('0x2b')][_0x8db2('0x1e')](_0x2e6f0c)[_0x8db2('0x24')](function(_0x63c561){_0x3124d5[_0x8db2('0x1e')]=_0x63c561;if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3f')]){_0x21bae5['include']=[{'all':!![]}];}return db[_0x8db2('0x2b')][_0x8db2('0x40')](_0x21bae5);})['then'](function(_0x49a7ae){_0x3124d5[_0x8db2('0x41')]=_0x49a7ae;return _0x3124d5;})['then'](respondWithFilteredResult(_0xbe5ece,_0x21bae5))[_0x8db2('0x42')](handleError(_0xbe5ece,null));};exports[_0x8db2('0x43')]=function(_0x313130,_0x307783){var _0xb4fe2c={'raw':![],'where':{'id':_0x313130[_0x8db2('0x44')]['id']}},_0x30d606={};_0x30d606['model']=_[_0x8db2('0x31')](db[_0x8db2('0x2b')][_0x8db2('0x45')]);_0x30d606[_0x8db2('0x30')]=_['keys'](_0x313130[_0x8db2('0x30')]);_0x30d606[_0x8db2('0x39')]=_[_0x8db2('0x46')](_0x30d606[_0x8db2('0x32')],_0x30d606['query']);_0xb4fe2c[_0x8db2('0x34')]=_['intersection'](_0x30d606[_0x8db2('0x32')],qs[_0x8db2('0x33')](_0x313130[_0x8db2('0x30')]['fields']));_0xb4fe2c['attributes']=_0xb4fe2c[_0x8db2('0x34')]['length']?_0xb4fe2c[_0x8db2('0x34')]:_0x30d606[_0x8db2('0x32')];if(_0x313130[_0x8db2('0x30')][_0x8db2('0x3f')]){_0xb4fe2c[_0x8db2('0x47')]=[{'all':!![]}];}_0xb4fe2c=_[_0x8db2('0x3d')]({},_0xb4fe2c,_0x313130[_0x8db2('0x3e')]);return db[_0x8db2('0x2b')][_0x8db2('0x48')](_0xb4fe2c)[_0x8db2('0x24')](handleEntityNotFound(_0x307783,null))[_0x8db2('0x24')](respondWithResult(_0x307783,null))[_0x8db2('0x42')](handleError(_0x307783,null));};exports['create']=function(_0x449109,_0x2ada52){return db[_0x8db2('0x2b')][_0x8db2('0x49')](_0x449109['body'],{})['then'](respondWithResult(_0x2ada52,0xc9))[_0x8db2('0x42')](handleError(_0x2ada52,null));};exports[_0x8db2('0x23')]=function(_0x164020,_0x4c66e5){if(_0x164020['body']['id']){delete _0x164020['body']['id'];}return db[_0x8db2('0x2b')][_0x8db2('0x48')]({'where':{'id':_0x164020[_0x8db2('0x44')]['id']}})[_0x8db2('0x24')](handleEntityNotFound(_0x4c66e5,null))[_0x8db2('0x24')](saveUpdates(_0x164020[_0x8db2('0x4a')],null))[_0x8db2('0x24')](respondWithResult(_0x4c66e5,null))['catch'](handleError(_0x4c66e5,null));};exports['destroy']=function(_0x3d29bc,_0x18c6ef){return db[_0x8db2('0x2b')][_0x8db2('0x48')]({'where':{'id':_0x3d29bc[_0x8db2('0x44')]['id']}})[_0x8db2('0x24')](handleEntityNotFound(_0x18c6ef,null))[_0x8db2('0x24')](removeEntity(_0x18c6ef,null))[_0x8db2('0x42')](handleError(_0x18c6ef,null));};exports[_0x8db2('0x4b')]=function(_0x426ae0,_0x3bc632){return db[_0x8db2('0x2b')][_0x8db2('0x4b')]()[_0x8db2('0x24')](respondWithResult(_0x3bc632,null))[_0x8db2('0x42')](handleError(_0x3bc632,null));};
\ No newline at end of file
+var _0xc2c7=['merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','keys','find','params','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','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','sendStatus','status','end','json','offset','limit','count','set','Content-Range','reject','save','update','destroy','then','error','name','send','index','map','UserProfileResource','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','where'];(function(_0xc9041f,_0x2dd019){var _0x5dda55=function(_0x4a1846){while(--_0x4a1846){_0xc9041f['push'](_0xc9041f['shift']());}};_0x5dda55(++_0x2dd019);}(_0xc2c7,0x134));var _0x7c2c=function(_0x364326,_0x17b6b4){_0x364326=_0x364326-0x0;var _0x1ee193=_0xc2c7[_0x364326];return _0x1ee193;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7c2c('0x0'));var zipdir=require(_0x7c2c('0x1'));var jsonpatch=require(_0x7c2c('0x2'));var rp=require(_0x7c2c('0x3'));var moment=require(_0x7c2c('0x4'));var BPromise=require(_0x7c2c('0x5'));var Mustache=require(_0x7c2c('0x6'));var util=require(_0x7c2c('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x7c2c('0x8'));var ejs=require(_0x7c2c('0x9'));var fs=require('fs');var fs_extra=require(_0x7c2c('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7c2c('0xb'));var deskjs=require(_0x7c2c('0xc'));var toCsv=require(_0x7c2c('0x8'));var querystring=require(_0x7c2c('0xd'));var Papa=require(_0x7c2c('0xe'));var Redis=require('ioredis');var authService=require(_0x7c2c('0xf'));var qs=require(_0x7c2c('0x10'));var as=require(_0x7c2c('0x11'));var hardwareService=require(_0x7c2c('0x12'));var logger=require(_0x7c2c('0x13'))(_0x7c2c('0x14'));var utils=require(_0x7c2c('0x15'));var config=require(_0x7c2c('0x16'));var licenseUtil=require(_0x7c2c('0x17'));var db=require(_0x7c2c('0x18'))['db'];function respondWithStatusCode(_0xae8441,_0x45847d){_0x45847d=_0x45847d||0xcc;return function(_0x68398a){if(_0x68398a){return _0xae8441[_0x7c2c('0x19')](_0x45847d);}return _0xae8441[_0x7c2c('0x1a')](_0x45847d)[_0x7c2c('0x1b')]();};}function respondWithResult(_0x4c4aaf,_0x5b5729){_0x5b5729=_0x5b5729||0xc8;return function(_0x102778){if(_0x102778){return _0x4c4aaf[_0x7c2c('0x1a')](_0x5b5729)[_0x7c2c('0x1c')](_0x102778);}};}function respondWithFilteredResult(_0x5ae94f,_0x11424c){return function(_0x206ecd){if(_0x206ecd){var _0x5e55e0=typeof _0x11424c[_0x7c2c('0x1d')]==='undefined'&&typeof _0x11424c[_0x7c2c('0x1e')]==='undefined';var _0x342ea2=_0x206ecd[_0x7c2c('0x1f')];var _0x14453f=_0x5e55e0?0x0:_0x11424c[_0x7c2c('0x1d')];var _0x17df4a=_0x5e55e0?_0x206ecd[_0x7c2c('0x1f')]:_0x11424c[_0x7c2c('0x1d')]+_0x11424c[_0x7c2c('0x1e')];var _0x2d356e;if(_0x17df4a>=_0x342ea2){_0x17df4a=_0x342ea2;_0x2d356e=0xc8;}else{_0x2d356e=0xce;}_0x5ae94f[_0x7c2c('0x1a')](_0x2d356e);return _0x5ae94f[_0x7c2c('0x20')](_0x7c2c('0x21'),_0x14453f+'-'+_0x17df4a+'/'+_0x342ea2)['json'](_0x206ecd);}return null;};}function patchUpdates(_0x1c5491){return function(_0x4adb62){try{jsonpatch['apply'](_0x4adb62,_0x1c5491,!![]);}catch(_0x15ae33){return BPromise[_0x7c2c('0x22')](_0x15ae33);}return _0x4adb62[_0x7c2c('0x23')]();};}function saveUpdates(_0x38ae30,_0x41552f){return function(_0x1883b5){if(_0x1883b5){return _0x1883b5[_0x7c2c('0x24')](_0x38ae30)['then'](function(_0x10c356){return _0x10c356;});}return null;};}function removeEntity(_0x4dedd8,_0x302c93){return function(_0x57f510){if(_0x57f510){return _0x57f510[_0x7c2c('0x25')]()[_0x7c2c('0x26')](function(){_0x4dedd8[_0x7c2c('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4d6ec7,_0x31a50c){return function(_0x30c53e){if(!_0x30c53e){_0x4d6ec7[_0x7c2c('0x19')](0x194);}return _0x30c53e;};}function handleError(_0x150690,_0x31d8f3){_0x31d8f3=_0x31d8f3||0x1f4;return function(_0xa8e145){logger[_0x7c2c('0x27')](_0xa8e145['stack']);if(_0xa8e145[_0x7c2c('0x28')]){delete _0xa8e145[_0x7c2c('0x28')];}_0x150690[_0x7c2c('0x1a')](_0x31d8f3)[_0x7c2c('0x29')](_0xa8e145);};}exports[_0x7c2c('0x2a')]=function(_0x1f8846,_0xf2bfd1){var _0x26f472={},_0xa040ff={},_0x5769ec={'count':0x0,'rows':[]};var _0x465ad6=_[_0x7c2c('0x2b')](db[_0x7c2c('0x2c')][_0x7c2c('0x2d')],function(_0x53ad23){return{'name':_0x53ad23[_0x7c2c('0x2e')],'type':_0x53ad23[_0x7c2c('0x2f')][_0x7c2c('0x30')]};});_0xa040ff[_0x7c2c('0x31')]=_[_0x7c2c('0x2b')](_0x465ad6,_0x7c2c('0x28'));_0xa040ff[_0x7c2c('0x32')]=_['keys'](_0x1f8846[_0x7c2c('0x32')]);_0xa040ff[_0x7c2c('0x33')]=_[_0x7c2c('0x34')](_0xa040ff[_0x7c2c('0x31')],_0xa040ff[_0x7c2c('0x32')]);_0x26f472['attributes']=_['intersection'](_0xa040ff[_0x7c2c('0x31')],qs['fields'](_0x1f8846['query'][_0x7c2c('0x35')]));_0x26f472[_0x7c2c('0x36')]=_0x26f472[_0x7c2c('0x36')][_0x7c2c('0x37')]?_0x26f472['attributes']:_0xa040ff[_0x7c2c('0x31')];if(!_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x38')](_0x7c2c('0x39'))){_0x26f472[_0x7c2c('0x1e')]=qs[_0x7c2c('0x1e')](_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x1e')]);_0x26f472[_0x7c2c('0x1d')]=qs[_0x7c2c('0x1d')](_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x1d')]);}_0x26f472[_0x7c2c('0x3a')]=qs['sort'](_0x1f8846['query'][_0x7c2c('0x3b')]);_0x26f472['where']=qs['filters'](_['pick'](_0x1f8846[_0x7c2c('0x32')],_0xa040ff[_0x7c2c('0x33')]),_0x465ad6);if(_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x3c')]){_0x26f472[_0x7c2c('0x3d')]=_[_0x7c2c('0x3e')](_0x26f472[_0x7c2c('0x3d')],{'$or':_[_0x7c2c('0x2b')](_0x465ad6,function(_0x2b6520){if(_0x2b6520[_0x7c2c('0x2f')]!==_0x7c2c('0x3f')){var _0x58696a={};_0x58696a[_0x2b6520['name']]={'$like':'%'+_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x3c')]+'%'};return _0x58696a;}})});}_0x26f472=_[_0x7c2c('0x3e')]({},_0x26f472,_0x1f8846[_0x7c2c('0x40')]);var _0x5e8c96={'where':_0x26f472[_0x7c2c('0x3d')]};return db[_0x7c2c('0x2c')][_0x7c2c('0x1f')](_0x5e8c96)[_0x7c2c('0x26')](function(_0x18e288){_0x5769ec[_0x7c2c('0x1f')]=_0x18e288;if(_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x41')]){_0x26f472[_0x7c2c('0x42')]=[{'all':!![]}];}return db['UserProfileResource'][_0x7c2c('0x43')](_0x26f472);})['then'](function(_0x2c3f40){_0x5769ec[_0x7c2c('0x44')]=_0x2c3f40;return _0x5769ec;})['then'](respondWithFilteredResult(_0xf2bfd1,_0x26f472))[_0x7c2c('0x45')](handleError(_0xf2bfd1,null));};exports['show']=function(_0x3014fb,_0x33b2be){var _0x9b9813={'raw':![],'where':{'id':_0x3014fb['params']['id']}},_0x26351e={};_0x26351e[_0x7c2c('0x31')]=_['keys'](db['UserProfileResource'][_0x7c2c('0x2d')]);_0x26351e[_0x7c2c('0x32')]=_[_0x7c2c('0x46')](_0x3014fb['query']);_0x26351e[_0x7c2c('0x33')]=_[_0x7c2c('0x34')](_0x26351e['model'],_0x26351e[_0x7c2c('0x32')]);_0x9b9813['attributes']=_[_0x7c2c('0x34')](_0x26351e[_0x7c2c('0x31')],qs['fields'](_0x3014fb['query'][_0x7c2c('0x35')]));_0x9b9813[_0x7c2c('0x36')]=_0x9b9813['attributes'][_0x7c2c('0x37')]?_0x9b9813['attributes']:_0x26351e['model'];if(_0x3014fb[_0x7c2c('0x32')][_0x7c2c('0x41')]){_0x9b9813[_0x7c2c('0x42')]=[{'all':!![]}];}_0x9b9813=_[_0x7c2c('0x3e')]({},_0x9b9813,_0x3014fb[_0x7c2c('0x40')]);return db[_0x7c2c('0x2c')][_0x7c2c('0x47')](_0x9b9813)[_0x7c2c('0x26')](handleEntityNotFound(_0x33b2be,null))[_0x7c2c('0x26')](respondWithResult(_0x33b2be,null))['catch'](handleError(_0x33b2be,null));};exports['create']=function(_0xeb067b,_0x3091bd){return db[_0x7c2c('0x2c')]['create'](_0xeb067b['body'],{})[_0x7c2c('0x26')](respondWithResult(_0x3091bd,0xc9))[_0x7c2c('0x45')](handleError(_0x3091bd,null));};exports[_0x7c2c('0x24')]=function(_0x2b79d5,_0x5f3de8){if(_0x2b79d5['body']['id']){delete _0x2b79d5['body']['id'];}return db[_0x7c2c('0x2c')][_0x7c2c('0x47')]({'where':{'id':_0x2b79d5[_0x7c2c('0x48')]['id']}})[_0x7c2c('0x26')](handleEntityNotFound(_0x5f3de8,null))[_0x7c2c('0x26')](saveUpdates(_0x2b79d5['body'],null))[_0x7c2c('0x26')](respondWithResult(_0x5f3de8,null))[_0x7c2c('0x45')](handleError(_0x5f3de8,null));};exports['destroy']=function(_0x19621a,_0x56e09d){return db[_0x7c2c('0x2c')][_0x7c2c('0x47')]({'where':{'id':_0x19621a[_0x7c2c('0x48')]['id']}})['then'](handleEntityNotFound(_0x56e09d,null))['then'](removeEntity(_0x56e09d,null))[_0x7c2c('0x45')](handleError(_0x56e09d,null));};exports['describe']=function(_0x13e0bf,_0x11d337){return db['UserProfileResource'][_0x7c2c('0x49')]()[_0x7c2c('0x26')](respondWithResult(_0x11d337,null))['catch'](handleError(_0x11d337,null));};
\ No newline at end of file
index 28b2fb1..228b5a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffeb=['define','UserProfileResource','user_profile_has_resources','compositeIndex','resourceId','sectionId','lodash','util','../../config/logger','api','request-promise','path','../../config/environment','exports'];(function(_0x6a7a98,_0xcb7659){var _0x3bebec=function(_0x2af9ac){while(--_0x2af9ac){_0x6a7a98['push'](_0x6a7a98['shift']());}};_0x3bebec(++_0xcb7659);}(_0xffeb,0x1d4));var _0xbffe=function(_0x577168,_0x1dec18){_0x577168=_0x577168-0x0;var _0x288c71=_0xffeb[_0x577168];return _0x288c71;};'use strict';var _=require(_0xbffe('0x0'));var util=require(_0xbffe('0x1'));var logger=require(_0xbffe('0x2'))(_0xbffe('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xbffe('0x4'));var fs=require('fs');var path=require(_0xbffe('0x5'));var rimraf=require('rimraf');var config=require(_0xbffe('0x6'));var attributes=require('./userProfileResource.attributes');module[_0xbffe('0x7')]=function(_0x3ed55e,_0x8b3b20){return _0x3ed55e[_0xbffe('0x8')](_0xbffe('0x9'),attributes,{'tableName':_0xbffe('0xa'),'paranoid':![],'indexes':[{'name':_0xbffe('0xb'),'fields':[_0xbffe('0xc'),_0xbffe('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x979d=['lodash','util','../../config/logger','bluebird','request-promise','rimraf','exports','define','UserProfileResource','user_profile_has_resources','compositeIndex'];(function(_0x3d3570,_0x116247){var _0x5741d6=function(_0x11510c){while(--_0x11510c){_0x3d3570['push'](_0x3d3570['shift']());}};_0x5741d6(++_0x116247);}(_0x979d,0xb0));var _0xd979=function(_0x4bcd2d,_0xcfceb){_0x4bcd2d=_0x4bcd2d-0x0;var _0x5cc6d7=_0x979d[_0x4bcd2d];return _0x5cc6d7;};'use strict';var _=require(_0xd979('0x0'));var util=require(_0xd979('0x1'));var logger=require(_0xd979('0x2'))('api');var moment=require('moment');var BPromise=require(_0xd979('0x3'));var rp=require(_0xd979('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd979('0x5'));var config=require('../../config/environment');var attributes=require('./userProfileResource.attributes');module[_0xd979('0x6')]=function(_0x5efecd,_0x4a85ad){return _0x5efecd[_0xd979('0x7')](_0xd979('0x8'),attributes,{'tableName':_0xd979('0x9'),'paranoid':![],'indexes':[{'name':_0xd979('0xa'),'fields':['resourceId','sectionId']}],'timestamps':!![]});};
\ No newline at end of file
index 2c3bf78..39a2402 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70f7=['rpc','jayson/promise','client','request','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','result','catch','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x454f19,_0x5782bf){var _0x4ff8df=function(_0x529e9f){while(--_0x529e9f){_0x454f19['push'](_0x454f19['shift']());}};_0x4ff8df(++_0x5782bf);}(_0x70f7,0x1dd));var _0x770f=function(_0x30121e,_0x240c86){_0x30121e=_0x30121e-0x0;var _0x4ba328=_0x70f7[_0x30121e];return _0x4ba328;};'use strict';var _=require(_0x770f('0x0'));var util=require('util');var moment=require(_0x770f('0x1'));var BPromise=require('bluebird');var rs=require(_0x770f('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x770f('0x3'))['db'];var utils=require(_0x770f('0x4'));var logger=require(_0x770f('0x5'))(_0x770f('0x6'));var config=require('../../config/environment');var jayson=require(_0x770f('0x7'));var client=jayson[_0x770f('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c059f,_0x44eed2,_0x239e4a){return new BPromise(function(_0x2f9ef9,_0x33b5d9){return client[_0x770f('0x9')](_0x3c059f,_0x239e4a)[_0x770f('0xa')](function(_0x12fb98){logger[_0x770f('0xb')](_0x770f('0xc'),_0x44eed2,_0x770f('0xd'));logger[_0x770f('0xe')]('UserProfileResource,\x20%s,\x20%s,\x20%s',_0x44eed2,_0x770f('0xd'),JSON[_0x770f('0xf')](_0x12fb98));if(_0x12fb98['error']){if(_0x12fb98['error'][_0x770f('0x10')]===0x1f4){logger[_0x770f('0x11')](_0x770f('0xc'),_0x44eed2,_0x12fb98[_0x770f('0x11')][_0x770f('0x12')]);return _0x33b5d9(_0x12fb98['error'][_0x770f('0x12')]);}logger[_0x770f('0x11')](_0x770f('0xc'),_0x44eed2,_0x12fb98[_0x770f('0x11')][_0x770f('0x12')]);return _0x2f9ef9(_0x12fb98[_0x770f('0x11')][_0x770f('0x12')]);}else{logger[_0x770f('0xb')](_0x770f('0xc'),_0x44eed2,_0x770f('0xd'));_0x2f9ef9(_0x12fb98[_0x770f('0x13')][_0x770f('0x12')]);}})[_0x770f('0x14')](function(_0x3575f5){logger['error'](_0x770f('0xc'),_0x44eed2,_0x3575f5);_0x33b5d9(_0x3575f5);});});}
\ No newline at end of file
+var _0xf77a=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','UserProfileResource,\x20%s,\x20%s','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','catch','lodash','moment','bluebird'];(function(_0x4af1fd,_0x166611){var _0x2acc3a=function(_0x32aa97){while(--_0x32aa97){_0x4af1fd['push'](_0x4af1fd['shift']());}};_0x2acc3a(++_0x166611);}(_0xf77a,0x9e));var _0xaf77=function(_0x36959a,_0x4329d8){_0x36959a=_0x36959a-0x0;var _0x47ba49=_0xf77a[_0x36959a];return _0x47ba49;};'use strict';var _=require(_0xaf77('0x0'));var util=require('util');var moment=require(_0xaf77('0x1'));var BPromise=require(_0xaf77('0x2'));var rs=require(_0xaf77('0x3'));var fs=require('fs');var Redis=require(_0xaf77('0x4'));var db=require(_0xaf77('0x5'))['db'];var utils=require(_0xaf77('0x6'));var logger=require(_0xaf77('0x7'))(_0xaf77('0x8'));var config=require(_0xaf77('0x9'));var jayson=require(_0xaf77('0xa'));var client=jayson[_0xaf77('0xb')][_0xaf77('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2f196d,_0x20dbbe,_0x13d31c){return new BPromise(function(_0x4ed096,_0x42cf71){return client['request'](_0x2f196d,_0x13d31c)['then'](function(_0x403b5c){logger['info'](_0xaf77('0xd'),_0x20dbbe,'request\x20sent');logger[_0xaf77('0xe')](_0xaf77('0xf'),_0x20dbbe,'request\x20sent',JSON[_0xaf77('0x10')](_0x403b5c));if(_0x403b5c[_0xaf77('0x11')]){if(_0x403b5c[_0xaf77('0x11')][_0xaf77('0x12')]===0x1f4){logger['error']('UserProfileResource,\x20%s,\x20%s',_0x20dbbe,_0x403b5c['error']['message']);return _0x42cf71(_0x403b5c['error'][_0xaf77('0x13')]);}logger['error'](_0xaf77('0xd'),_0x20dbbe,_0x403b5c[_0xaf77('0x11')][_0xaf77('0x13')]);return _0x4ed096(_0x403b5c[_0xaf77('0x11')][_0xaf77('0x13')]);}else{logger[_0xaf77('0x14')]('UserProfileResource,\x20%s,\x20%s',_0x20dbbe,_0xaf77('0x15'));_0x4ed096(_0x403b5c['result'][_0xaf77('0x13')]);}})[_0xaf77('0x16')](function(_0x1084aa){logger[_0xaf77('0x11')]('UserProfileResource,\x20%s,\x20%s',_0x20dbbe,_0x1084aa);_0x42cf71(_0x1084aa);});});}
\ No newline at end of file
index 1e13c29..e5b05f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6cc=['get','isAuthenticated','index','/describe','show','post','create','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x5a763a,_0x3034a7){var _0x288464=function(_0x3c418e){while(--_0x3c418e){_0x5a763a['push'](_0x5a763a['shift']());}};_0x288464(++_0x3034a7);}(_0xc6cc,0x8a));var _0xcc6c=function(_0x393d08,_0xc4eccd){_0x393d08=_0x393d08-0x0;var _0x499c8e=_0xc6cc[_0x393d08];return _0x499c8e;};'use strict';var multer=require(_0xcc6c('0x0'));var util=require(_0xcc6c('0x1'));var path=require(_0xcc6c('0x2'));var timeout=require(_0xcc6c('0x3'));var express=require('express');var router=express[_0xcc6c('0x4')]();var fs_extra=require(_0xcc6c('0x5'));var auth=require(_0xcc6c('0x6'));var interaction=require(_0xcc6c('0x7'));var config=require(_0xcc6c('0x8'));var controller=require('./userProfileSection.controller');router[_0xcc6c('0x9')]('/',auth[_0xcc6c('0xa')](),controller[_0xcc6c('0xb')]);router[_0xcc6c('0x9')](_0xcc6c('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0xcc6c('0x9')]('/:id',auth[_0xcc6c('0xa')](),controller[_0xcc6c('0xd')]);router[_0xcc6c('0xe')]('/',auth[_0xcc6c('0xa')](),controller[_0xcc6c('0xf')]);router[_0xcc6c('0x10')](_0xcc6c('0x11'),auth[_0xcc6c('0xa')](),controller[_0xcc6c('0x12')]);router['delete'](_0xcc6c('0x11'),auth[_0xcc6c('0xa')](),controller[_0xcc6c('0x13')]);module[_0xcc6c('0x14')]=router;
\ No newline at end of file
+var _0x1bae=['put','update','delete','path','fs-extra','../../components/auth/service','../../components/interaction/service','./userProfileSection.controller','get','index','/describe','describe','/:id','isAuthenticated','post','create'];(function(_0x90883f,_0x3b431f){var _0x51dc6b=function(_0x4bfb63){while(--_0x4bfb63){_0x90883f['push'](_0x90883f['shift']());}};_0x51dc6b(++_0x3b431f);}(_0x1bae,0xa3));var _0xe1ba=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1bae[_0x14add3];return _0x4a174f;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe1ba('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xe1ba('0x1'));var auth=require(_0xe1ba('0x2'));var interaction=require(_0xe1ba('0x3'));var config=require('../../config/environment');var controller=require(_0xe1ba('0x4'));router[_0xe1ba('0x5')]('/',auth['isAuthenticated'](),controller[_0xe1ba('0x6')]);router[_0xe1ba('0x5')](_0xe1ba('0x7'),auth['isAuthenticated'](),controller[_0xe1ba('0x8')]);router[_0xe1ba('0x5')](_0xe1ba('0x9'),auth[_0xe1ba('0xa')](),controller['show']);router[_0xe1ba('0xb')]('/',auth[_0xe1ba('0xa')](),controller[_0xe1ba('0xc')]);router[_0xe1ba('0xd')]('/:id',auth['isAuthenticated'](),controller[_0xe1ba('0xe')]);router[_0xe1ba('0xf')](_0xe1ba('0x9'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index b80a2e6..880f3a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed3c=['join','getDataValue','sequelize','exports','STRING','BOOLEAN','crudPermissions'];(function(_0x12025c,_0x10daec){var _0x2caac1=function(_0x31423b){while(--_0x31423b){_0x12025c['push'](_0x12025c['shift']());}};_0x2caac1(++_0x10daec);}(_0xed3c,0x1a6));var _0xced3=function(_0xf6bb7d,_0x8af4f5){_0xf6bb7d=_0xf6bb7d-0x0;var _0x132764=_0xed3c[_0xf6bb7d];return _0x132764;};'use strict';var Sequelize=require(_0xced3('0x0'));module[_0xced3('0x1')]={'name':{'type':Sequelize[_0xced3('0x2')],'allowNull':![]},'category':{'type':Sequelize[_0xced3('0x2')],'allowNull':![]},'sectionId':{'type':Sequelize['INTEGER'],'allowNull':![]},'enabled':{'type':Sequelize[_0xced3('0x3')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0xced3('0x3')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0xced3('0x2')],'set':function(_0x5f03e0){this['setDataValue'](_0xced3('0x4'),_0x5f03e0?_0x5f03e0[_0xced3('0x5')](''):[]);},'get':function(){return this[_0xced3('0x6')](_0xced3('0x4'))?this['getDataValue']('crudPermissions')['split'](''):[];}}};
\ No newline at end of file
+var _0x9c00=['STRING','setDataValue','crudPermissions','join','getDataValue','split','sequelize','exports','INTEGER','BOOLEAN'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x9c00,0x1a0));var _0x09c0=function(_0x180e11,_0x24bfb8){_0x180e11=_0x180e11-0x0;var _0x330930=_0x9c00[_0x180e11];return _0x330930;};'use strict';var Sequelize=require(_0x09c0('0x0'));module[_0x09c0('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize[_0x09c0('0x2')],'allowNull':![]},'enabled':{'type':Sequelize[_0x09c0('0x3')],'defaultValue':null},'autoAssociation':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x09c0('0x4')],'set':function(_0x2c702c){this[_0x09c0('0x5')](_0x09c0('0x6'),_0x2c702c?_0x2c702c[_0x09c0('0x7')](''):[]);},'get':function(){return this['getDataValue']('crudPermissions')?this[_0x09c0('0x8')](_0x09c0('0x6'))[_0x09c0('0x9')](''):[];}}};
\ No newline at end of file
index 2dad41f..5d627da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38db=['include','findAll','catch','params','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','lodash','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','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','error','name','send','index','map','rawAttributes','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','filter','VIRTUAL','merge','UserProfileSection','includeAll'];(function(_0x218aa1,_0x439ef4){var _0x20d77a=function(_0x5e30c0){while(--_0x5e30c0){_0x218aa1['push'](_0x218aa1['shift']());}};_0x20d77a(++_0x439ef4);}(_0x38db,0x12c));var _0xb38d=function(_0x578231,_0x3ae649){_0x578231=_0x578231-0x0;var _0x5b1559=_0x38db[_0x578231];return _0x5b1559;};'use strict';var emlformat=require(_0xb38d('0x0'));var rimraf=require(_0xb38d('0x1'));var zipdir=require(_0xb38d('0x2'));var jsonpatch=require(_0xb38d('0x3'));var rp=require(_0xb38d('0x4'));var moment=require(_0xb38d('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xb38d('0x6'));var util=require('util');var path=require(_0xb38d('0x7'));var sox=require(_0xb38d('0x8'));var csv=require(_0xb38d('0x9'));var ejs=require(_0xb38d('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb38d('0xb'));var squel=require('squel');var crypto=require(_0xb38d('0xc'));var jsforce=require(_0xb38d('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xb38d('0xe'));var Papa=require(_0xb38d('0xf'));var Redis=require(_0xb38d('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xb38d('0x11'));var as=require(_0xb38d('0x12'));var hardwareService=require(_0xb38d('0x13'));var logger=require(_0xb38d('0x14'))(_0xb38d('0x15'));var utils=require(_0xb38d('0x16'));var config=require(_0xb38d('0x17'));var licenseUtil=require(_0xb38d('0x18'));var db=require(_0xb38d('0x19'))['db'];function respondWithStatusCode(_0x167334,_0xdff6b7){_0xdff6b7=_0xdff6b7||0xcc;return function(_0x39a5fe){if(_0x39a5fe){return _0x167334[_0xb38d('0x1a')](_0xdff6b7);}return _0x167334[_0xb38d('0x1b')](_0xdff6b7)[_0xb38d('0x1c')]();};}function respondWithResult(_0x57c7c2,_0x25d457){_0x25d457=_0x25d457||0xc8;return function(_0xb24d19){if(_0xb24d19){return _0x57c7c2[_0xb38d('0x1b')](_0x25d457)[_0xb38d('0x1d')](_0xb24d19);}};}function respondWithFilteredResult(_0x4bfc73,_0x5e075f){return function(_0x50e63b){if(_0x50e63b){var _0x474cbc=typeof _0x5e075f['offset']===_0xb38d('0x1e')&&typeof _0x5e075f[_0xb38d('0x1f')]===_0xb38d('0x1e');var _0x19bd38=_0x50e63b[_0xb38d('0x20')];var _0x161373=_0x474cbc?0x0:_0x5e075f[_0xb38d('0x21')];var _0x4dab3f=_0x474cbc?_0x50e63b[_0xb38d('0x20')]:_0x5e075f[_0xb38d('0x21')]+_0x5e075f['limit'];var _0x4f3e43;if(_0x4dab3f>=_0x19bd38){_0x4dab3f=_0x19bd38;_0x4f3e43=0xc8;}else{_0x4f3e43=0xce;}_0x4bfc73[_0xb38d('0x1b')](_0x4f3e43);return _0x4bfc73[_0xb38d('0x22')](_0xb38d('0x23'),_0x161373+'-'+_0x4dab3f+'/'+_0x19bd38)[_0xb38d('0x1d')](_0x50e63b);}return null;};}function patchUpdates(_0x17c08e){return function(_0x41a64c){try{jsonpatch[_0xb38d('0x24')](_0x41a64c,_0x17c08e,!![]);}catch(_0x454551){return BPromise[_0xb38d('0x25')](_0x454551);}return _0x41a64c['save']();};}function saveUpdates(_0x4131f6,_0x2d0755){return function(_0x2e9572){if(_0x2e9572){return _0x2e9572[_0xb38d('0x26')](_0x4131f6)[_0xb38d('0x27')](function(_0x1ee98d){return _0x1ee98d;});}return null;};}function removeEntity(_0x56fff2,_0x177612){return function(_0x231cad){if(_0x231cad){return _0x231cad[_0xb38d('0x28')]()[_0xb38d('0x27')](function(){_0x56fff2[_0xb38d('0x1b')](0xcc)[_0xb38d('0x1c')]();});}};}function handleEntityNotFound(_0x12d5c3,_0x153d6c){return function(_0x3d292a){if(!_0x3d292a){_0x12d5c3[_0xb38d('0x1a')](0x194);}return _0x3d292a;};}function handleError(_0x4f2c82,_0x397349){_0x397349=_0x397349||0x1f4;return function(_0x59f734){logger[_0xb38d('0x29')](_0x59f734['stack']);if(_0x59f734['name']){delete _0x59f734[_0xb38d('0x2a')];}_0x4f2c82[_0xb38d('0x1b')](_0x397349)[_0xb38d('0x2b')](_0x59f734);};}exports[_0xb38d('0x2c')]=function(_0x441c8f,_0xb50811){var _0x5e421a={},_0x1fd965={},_0x15833d={'count':0x0,'rows':[]};var _0x428fe4=_[_0xb38d('0x2d')](db['UserProfileSection'][_0xb38d('0x2e')],function(_0x2ce076){return{'name':_0x2ce076['fieldName'],'type':_0x2ce076[_0xb38d('0x2f')]['key']};});_0x1fd965[_0xb38d('0x30')]=_[_0xb38d('0x2d')](_0x428fe4,_0xb38d('0x2a'));_0x1fd965[_0xb38d('0x31')]=_[_0xb38d('0x32')](_0x441c8f[_0xb38d('0x31')]);_0x1fd965['filters']=_[_0xb38d('0x33')](_0x1fd965[_0xb38d('0x30')],_0x1fd965[_0xb38d('0x31')]);_0x5e421a[_0xb38d('0x34')]=_[_0xb38d('0x33')](_0x1fd965[_0xb38d('0x30')],qs['fields'](_0x441c8f[_0xb38d('0x31')][_0xb38d('0x35')]));_0x5e421a[_0xb38d('0x34')]=_0x5e421a['attributes'][_0xb38d('0x36')]?_0x5e421a[_0xb38d('0x34')]:_0x1fd965[_0xb38d('0x30')];if(!_0x441c8f[_0xb38d('0x31')][_0xb38d('0x37')]('nolimit')){_0x5e421a[_0xb38d('0x1f')]=qs['limit'](_0x441c8f[_0xb38d('0x31')]['limit']);_0x5e421a['offset']=qs[_0xb38d('0x21')](_0x441c8f[_0xb38d('0x31')][_0xb38d('0x21')]);}_0x5e421a[_0xb38d('0x38')]=qs['sort'](_0x441c8f[_0xb38d('0x31')][_0xb38d('0x39')]);_0x5e421a[_0xb38d('0x3a')]=qs[_0xb38d('0x3b')](_['pick'](_0x441c8f['query'],_0x1fd965[_0xb38d('0x3b')]),_0x428fe4);if(_0x441c8f[_0xb38d('0x31')][_0xb38d('0x3c')]){_0x5e421a[_0xb38d('0x3a')]=_['merge'](_0x5e421a[_0xb38d('0x3a')],{'$or':_[_0xb38d('0x2d')](_0x428fe4,function(_0x3ed952){if(_0x3ed952[_0xb38d('0x2f')]!==_0xb38d('0x3d')){var _0x117631={};_0x117631[_0x3ed952[_0xb38d('0x2a')]]={'$like':'%'+_0x441c8f[_0xb38d('0x31')][_0xb38d('0x3c')]+'%'};return _0x117631;}})});}_0x5e421a=_[_0xb38d('0x3e')]({},_0x5e421a,_0x441c8f['options']);var _0x2caa09={'where':_0x5e421a['where']};return db[_0xb38d('0x3f')][_0xb38d('0x20')](_0x2caa09)[_0xb38d('0x27')](function(_0x4f684d){_0x15833d[_0xb38d('0x20')]=_0x4f684d;if(_0x441c8f[_0xb38d('0x31')][_0xb38d('0x40')]){_0x5e421a[_0xb38d('0x41')]=[{'all':!![]}];}return db[_0xb38d('0x3f')][_0xb38d('0x42')](_0x5e421a);})[_0xb38d('0x27')](function(_0x1086d4){_0x15833d['rows']=_0x1086d4;return _0x15833d;})['then'](respondWithFilteredResult(_0xb50811,_0x5e421a))[_0xb38d('0x43')](handleError(_0xb50811,null));};exports['show']=function(_0x3c3629,_0x56fdd4){var _0x356a9d={'raw':![],'where':{'id':_0x3c3629[_0xb38d('0x44')]['id']}},_0x541ee6={};_0x541ee6[_0xb38d('0x30')]=_[_0xb38d('0x32')](db[_0xb38d('0x3f')][_0xb38d('0x2e')]);_0x541ee6[_0xb38d('0x31')]=_[_0xb38d('0x32')](_0x3c3629[_0xb38d('0x31')]);_0x541ee6['filters']=_[_0xb38d('0x33')](_0x541ee6[_0xb38d('0x30')],_0x541ee6[_0xb38d('0x31')]);_0x356a9d[_0xb38d('0x34')]=_[_0xb38d('0x33')](_0x541ee6['model'],qs['fields'](_0x3c3629['query'][_0xb38d('0x35')]));_0x356a9d[_0xb38d('0x34')]=_0x356a9d[_0xb38d('0x34')][_0xb38d('0x36')]?_0x356a9d[_0xb38d('0x34')]:_0x541ee6['model'];if(_0x3c3629['query'][_0xb38d('0x40')]){_0x356a9d['include']=[{'all':!![]}];}_0x356a9d=_[_0xb38d('0x3e')]({},_0x356a9d,_0x3c3629['options']);return db[_0xb38d('0x3f')][_0xb38d('0x45')](_0x356a9d)[_0xb38d('0x27')](handleEntityNotFound(_0x56fdd4,null))[_0xb38d('0x27')](respondWithResult(_0x56fdd4,null))[_0xb38d('0x43')](handleError(_0x56fdd4,null));};exports[_0xb38d('0x46')]=function(_0x4ddce2,_0x448613){return db[_0xb38d('0x3f')][_0xb38d('0x46')](_0x4ddce2['body'],{})[_0xb38d('0x27')](respondWithResult(_0x448613,0xc9))[_0xb38d('0x43')](handleError(_0x448613,null));};exports['update']=function(_0x3da6f2,_0x46fa09){if(_0x3da6f2['body']['id']){delete _0x3da6f2[_0xb38d('0x47')]['id'];}return db['UserProfileSection'][_0xb38d('0x45')]({'where':{'id':_0x3da6f2['params']['id']}})[_0xb38d('0x27')](handleEntityNotFound(_0x46fa09,null))[_0xb38d('0x27')](saveUpdates(_0x3da6f2['body'],null))[_0xb38d('0x27')](respondWithResult(_0x46fa09,null))[_0xb38d('0x43')](handleError(_0x46fa09,null));};exports[_0xb38d('0x28')]=function(_0x3dcadb,_0x5e6bff){return db[_0xb38d('0x3f')][_0xb38d('0x45')]({'where':{'id':_0x3dcadb[_0xb38d('0x44')]['id']}})[_0xb38d('0x27')](handleEntityNotFound(_0x5e6bff,null))[_0xb38d('0x27')](removeEntity(_0x5e6bff,null))[_0xb38d('0x43')](handleError(_0x5e6bff,null));};exports[_0xb38d('0x48')]=function(_0x37de16,_0x1c8cae){return db[_0xb38d('0x3f')][_0xb38d('0x48')]()[_0xb38d('0x27')](respondWithResult(_0x1c8cae,null))['catch'](handleError(_0x1c8cae,null));};
\ No newline at end of file
+var _0x6043=['hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','UserProfileSection','includeAll','include','rows','catch','show','params','find','create','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','index','rawAttributes','fieldName','type','key','model','map','keys','filters','intersection','query','fields','attributes','length'];(function(_0x5a636f,_0x3fec2b){var _0x6a8cfb=function(_0x20e6ca){while(--_0x20e6ca){_0x5a636f['push'](_0x5a636f['shift']());}};_0x6a8cfb(++_0x3fec2b);}(_0x6043,0x196));var _0x3604=function(_0x2e8660,_0x5ca0c2){_0x2e8660=_0x2e8660-0x0;var _0x3dc331=_0x6043[_0x2e8660];return _0x3dc331;};'use strict';var emlformat=require(_0x3604('0x0'));var rimraf=require(_0x3604('0x1'));var zipdir=require(_0x3604('0x2'));var jsonpatch=require(_0x3604('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x3604('0x4'));var Mustache=require(_0x3604('0x5'));var util=require(_0x3604('0x6'));var path=require(_0x3604('0x7'));var sox=require(_0x3604('0x8'));var csv=require(_0x3604('0x9'));var ejs=require(_0x3604('0xa'));var fs=require('fs');var fs_extra=require(_0x3604('0xb'));var _=require(_0x3604('0xc'));var squel=require(_0x3604('0xd'));var crypto=require(_0x3604('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x3604('0xf'));var Redis=require(_0x3604('0x10'));var authService=require(_0x3604('0x11'));var qs=require(_0x3604('0x12'));var as=require(_0x3604('0x13'));var hardwareService=require(_0x3604('0x14'));var logger=require(_0x3604('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x3604('0x16'));var licenseUtil=require(_0x3604('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3a8a1d,_0x46bb53){_0x46bb53=_0x46bb53||0xcc;return function(_0x29910c){if(_0x29910c){return _0x3a8a1d[_0x3604('0x18')](_0x46bb53);}return _0x3a8a1d[_0x3604('0x19')](_0x46bb53)[_0x3604('0x1a')]();};}function respondWithResult(_0x270284,_0x1e6c27){_0x1e6c27=_0x1e6c27||0xc8;return function(_0x111ebd){if(_0x111ebd){return _0x270284['status'](_0x1e6c27)[_0x3604('0x1b')](_0x111ebd);}};}function respondWithFilteredResult(_0xc9df55,_0x1c0ff1){return function(_0x193708){if(_0x193708){var _0x53238a=typeof _0x1c0ff1[_0x3604('0x1c')]===_0x3604('0x1d')&&typeof _0x1c0ff1[_0x3604('0x1e')]===_0x3604('0x1d');var _0x562b3f=_0x193708[_0x3604('0x1f')];var _0x40deb3=_0x53238a?0x0:_0x1c0ff1['offset'];var _0x42d7dc=_0x53238a?_0x193708['count']:_0x1c0ff1[_0x3604('0x1c')]+_0x1c0ff1[_0x3604('0x1e')];var _0x3c4e82;if(_0x42d7dc>=_0x562b3f){_0x42d7dc=_0x562b3f;_0x3c4e82=0xc8;}else{_0x3c4e82=0xce;}_0xc9df55[_0x3604('0x19')](_0x3c4e82);return _0xc9df55[_0x3604('0x20')](_0x3604('0x21'),_0x40deb3+'-'+_0x42d7dc+'/'+_0x562b3f)['json'](_0x193708);}return null;};}function patchUpdates(_0xd097d2){return function(_0x1b4107){try{jsonpatch[_0x3604('0x22')](_0x1b4107,_0xd097d2,!![]);}catch(_0x155e20){return BPromise[_0x3604('0x23')](_0x155e20);}return _0x1b4107[_0x3604('0x24')]();};}function saveUpdates(_0x293ddc,_0x4692eb){return function(_0x2607c1){if(_0x2607c1){return _0x2607c1['update'](_0x293ddc)[_0x3604('0x25')](function(_0x19d455){return _0x19d455;});}return null;};}function removeEntity(_0x4f9f94,_0x15bfd4){return function(_0x4abf5e){if(_0x4abf5e){return _0x4abf5e[_0x3604('0x26')]()['then'](function(){_0x4f9f94[_0x3604('0x19')](0xcc)[_0x3604('0x1a')]();});}};}function handleEntityNotFound(_0xc8d61a,_0x2f42e9){return function(_0x5ebf4b){if(!_0x5ebf4b){_0xc8d61a[_0x3604('0x18')](0x194);}return _0x5ebf4b;};}function handleError(_0x5f0e25,_0x17b640){_0x17b640=_0x17b640||0x1f4;return function(_0xd7b0e9){logger[_0x3604('0x27')](_0xd7b0e9[_0x3604('0x28')]);if(_0xd7b0e9[_0x3604('0x29')]){delete _0xd7b0e9['name'];}_0x5f0e25[_0x3604('0x19')](_0x17b640)['send'](_0xd7b0e9);};}exports[_0x3604('0x2a')]=function(_0x1bef5b,_0x54b2c3){var _0x3e56f2={},_0x56cd51={},_0x3816c1={'count':0x0,'rows':[]};var _0x27901b=_['map'](db['UserProfileSection'][_0x3604('0x2b')],function(_0x1ac766){return{'name':_0x1ac766[_0x3604('0x2c')],'type':_0x1ac766[_0x3604('0x2d')][_0x3604('0x2e')]};});_0x56cd51[_0x3604('0x2f')]=_[_0x3604('0x30')](_0x27901b,_0x3604('0x29'));_0x56cd51['query']=_[_0x3604('0x31')](_0x1bef5b['query']);_0x56cd51[_0x3604('0x32')]=_[_0x3604('0x33')](_0x56cd51[_0x3604('0x2f')],_0x56cd51[_0x3604('0x34')]);_0x3e56f2['attributes']=_[_0x3604('0x33')](_0x56cd51[_0x3604('0x2f')],qs[_0x3604('0x35')](_0x1bef5b[_0x3604('0x34')]['fields']));_0x3e56f2['attributes']=_0x3e56f2[_0x3604('0x36')][_0x3604('0x37')]?_0x3e56f2['attributes']:_0x56cd51['model'];if(!_0x1bef5b[_0x3604('0x34')][_0x3604('0x38')](_0x3604('0x39'))){_0x3e56f2[_0x3604('0x1e')]=qs[_0x3604('0x1e')](_0x1bef5b[_0x3604('0x34')][_0x3604('0x1e')]);_0x3e56f2[_0x3604('0x1c')]=qs[_0x3604('0x1c')](_0x1bef5b[_0x3604('0x34')]['offset']);}_0x3e56f2['order']=qs[_0x3604('0x3a')](_0x1bef5b['query'][_0x3604('0x3a')]);_0x3e56f2['where']=qs[_0x3604('0x32')](_[_0x3604('0x3b')](_0x1bef5b[_0x3604('0x34')],_0x56cd51[_0x3604('0x32')]),_0x27901b);if(_0x1bef5b[_0x3604('0x34')][_0x3604('0x3c')]){_0x3e56f2[_0x3604('0x3d')]=_[_0x3604('0x3e')](_0x3e56f2[_0x3604('0x3d')],{'$or':_[_0x3604('0x30')](_0x27901b,function(_0x2b0b6d){if(_0x2b0b6d[_0x3604('0x2d')]!==_0x3604('0x3f')){var _0x344486={};_0x344486[_0x2b0b6d[_0x3604('0x29')]]={'$like':'%'+_0x1bef5b[_0x3604('0x34')][_0x3604('0x3c')]+'%'};return _0x344486;}})});}_0x3e56f2=_[_0x3604('0x3e')]({},_0x3e56f2,_0x1bef5b[_0x3604('0x40')]);var _0x1cb961={'where':_0x3e56f2[_0x3604('0x3d')]};return db[_0x3604('0x41')][_0x3604('0x1f')](_0x1cb961)[_0x3604('0x25')](function(_0x37f723){_0x3816c1[_0x3604('0x1f')]=_0x37f723;if(_0x1bef5b[_0x3604('0x34')][_0x3604('0x42')]){_0x3e56f2[_0x3604('0x43')]=[{'all':!![]}];}return db['UserProfileSection']['findAll'](_0x3e56f2);})[_0x3604('0x25')](function(_0x327dbf){_0x3816c1[_0x3604('0x44')]=_0x327dbf;return _0x3816c1;})[_0x3604('0x25')](respondWithFilteredResult(_0x54b2c3,_0x3e56f2))[_0x3604('0x45')](handleError(_0x54b2c3,null));};exports[_0x3604('0x46')]=function(_0xa37a80,_0x1a3547){var _0xce8aaa={'raw':![],'where':{'id':_0xa37a80[_0x3604('0x47')]['id']}},_0xe603c8={};_0xe603c8['model']=_['keys'](db[_0x3604('0x41')]['rawAttributes']);_0xe603c8[_0x3604('0x34')]=_[_0x3604('0x31')](_0xa37a80[_0x3604('0x34')]);_0xe603c8['filters']=_['intersection'](_0xe603c8[_0x3604('0x2f')],_0xe603c8[_0x3604('0x34')]);_0xce8aaa[_0x3604('0x36')]=_['intersection'](_0xe603c8[_0x3604('0x2f')],qs[_0x3604('0x35')](_0xa37a80[_0x3604('0x34')][_0x3604('0x35')]));_0xce8aaa[_0x3604('0x36')]=_0xce8aaa[_0x3604('0x36')][_0x3604('0x37')]?_0xce8aaa[_0x3604('0x36')]:_0xe603c8[_0x3604('0x2f')];if(_0xa37a80[_0x3604('0x34')][_0x3604('0x42')]){_0xce8aaa['include']=[{'all':!![]}];}_0xce8aaa=_['merge']({},_0xce8aaa,_0xa37a80[_0x3604('0x40')]);return db[_0x3604('0x41')][_0x3604('0x48')](_0xce8aaa)['then'](handleEntityNotFound(_0x1a3547,null))[_0x3604('0x25')](respondWithResult(_0x1a3547,null))[_0x3604('0x45')](handleError(_0x1a3547,null));};exports[_0x3604('0x49')]=function(_0x5252e7,_0x3178da){return db[_0x3604('0x41')]['create'](_0x5252e7[_0x3604('0x4a')],{})[_0x3604('0x25')](respondWithResult(_0x3178da,0xc9))[_0x3604('0x45')](handleError(_0x3178da,null));};exports[_0x3604('0x4b')]=function(_0xecad47,_0x1afa13){if(_0xecad47[_0x3604('0x4a')]['id']){delete _0xecad47[_0x3604('0x4a')]['id'];}return db[_0x3604('0x41')]['find']({'where':{'id':_0xecad47[_0x3604('0x47')]['id']}})[_0x3604('0x25')](handleEntityNotFound(_0x1afa13,null))[_0x3604('0x25')](saveUpdates(_0xecad47[_0x3604('0x4a')],null))['then'](respondWithResult(_0x1afa13,null))[_0x3604('0x45')](handleError(_0x1afa13,null));};exports[_0x3604('0x26')]=function(_0x424a7e,_0x1c4826){return db[_0x3604('0x41')][_0x3604('0x48')]({'where':{'id':_0x424a7e[_0x3604('0x47')]['id']}})[_0x3604('0x25')](handleEntityNotFound(_0x1c4826,null))[_0x3604('0x25')](removeEntity(_0x1c4826,null))[_0x3604('0x45')](handleError(_0x1c4826,null));};exports[_0x3604('0x4c')]=function(_0x5b4dbe,_0x1b1bcc){return db['UserProfileSection'][_0x3604('0x4c')]()['then'](respondWithResult(_0x1b1bcc,null))[_0x3604('0x45')](handleError(_0x1b1bcc,null));};
\ No newline at end of file
index 9838f0a..6612566 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1057=['moment','request-promise','path','./userProfileSection.attributes','exports','define','user_profile_has_sections','compositeIndex','lodash','util','../../config/logger','api'];(function(_0x37b667,_0x34d483){var _0x3d9a1c=function(_0x1edb4d){while(--_0x1edb4d){_0x37b667['push'](_0x37b667['shift']());}};_0x3d9a1c(++_0x34d483);}(_0x1057,0xb0));var _0x7105=function(_0x4f981d,_0x354670){_0x4f981d=_0x4f981d-0x0;var _0x343b12=_0x1057[_0x4f981d];return _0x343b12;};'use strict';var _=require(_0x7105('0x0'));var util=require(_0x7105('0x1'));var logger=require(_0x7105('0x2'))(_0x7105('0x3'));var moment=require(_0x7105('0x4'));var BPromise=require('bluebird');var rp=require(_0x7105('0x5'));var fs=require('fs');var path=require(_0x7105('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x7105('0x7'));module[_0x7105('0x8')]=function(_0x3a507f,_0x5248ff){return _0x3a507f[_0x7105('0x9')]('UserProfileSection',attributes,{'tableName':_0x7105('0xa'),'paranoid':![],'indexes':[{'name':_0x7105('0xb'),'fields':['sectionId','userProfileId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc67f=['userProfileId','lodash','util','../../config/logger','bluebird','request-promise','path','../../config/environment','./userProfileSection.attributes','define','user_profile_has_sections','compositeIndex','sectionId'];(function(_0xc350,_0x2fb0f8){var _0x126021=function(_0x3f0b9e){while(--_0x3f0b9e){_0xc350['push'](_0xc350['shift']());}};_0x126021(++_0x2fb0f8);}(_0xc67f,0x1d5));var _0xfc67=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc67f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xfc67('0x0'));var util=require(_0xfc67('0x1'));var logger=require(_0xfc67('0x2'))('api');var moment=require('moment');var BPromise=require(_0xfc67('0x3'));var rp=require(_0xfc67('0x4'));var fs=require('fs');var path=require(_0xfc67('0x5'));var rimraf=require('rimraf');var config=require(_0xfc67('0x6'));var attributes=require(_0xfc67('0x7'));module['exports']=function(_0x2a6f1e,_0x9a5593){return _0x2a6f1e[_0xfc67('0x8')]('UserProfileSection',attributes,{'tableName':_0xfc67('0x9'),'paranoid':![],'indexes':[{'name':_0xfc67('0xa'),'fields':[_0xfc67('0xb'),_0xfc67('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index fd733dd..3c9d0e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe75f=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util'];(function(_0x4bd17b,_0xd1449c){var _0x4f79f6=function(_0x1ac90d){while(--_0x1ac90d){_0x4bd17b['push'](_0x4bd17b['shift']());}};_0x4f79f6(++_0xd1449c);}(_0xe75f,0x11e));var _0xfe75=function(_0x520133,_0x3a6ef0){_0x520133=_0x520133-0x0;var _0x331415=_0xe75f[_0x520133];return _0x331415;};'use strict';var _=require(_0xfe75('0x0'));var util=require(_0xfe75('0x1'));var moment=require(_0xfe75('0x2'));var BPromise=require(_0xfe75('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfe75('0x4'));var db=require(_0xfe75('0x5'))['db'];var utils=require(_0xfe75('0x6'));var logger=require(_0xfe75('0x7'))(_0xfe75('0x8'));var config=require(_0xfe75('0x9'));var jayson=require(_0xfe75('0xa'));var client=jayson[_0xfe75('0xb')][_0xfe75('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x41140c,_0x183c9e,_0x127dc8){return new BPromise(function(_0x189478,_0x528f05){return client['request'](_0x41140c,_0x127dc8)[_0xfe75('0xd')](function(_0x3b3c88){logger[_0xfe75('0xe')](_0xfe75('0xf'),_0x183c9e,_0xfe75('0x10'));logger[_0xfe75('0x11')](_0xfe75('0x12'),_0x183c9e,_0xfe75('0x10'),JSON[_0xfe75('0x13')](_0x3b3c88));if(_0x3b3c88[_0xfe75('0x14')]){if(_0x3b3c88[_0xfe75('0x14')][_0xfe75('0x15')]===0x1f4){logger['error'](_0xfe75('0xf'),_0x183c9e,_0x3b3c88[_0xfe75('0x14')][_0xfe75('0x16')]);return _0x528f05(_0x3b3c88['error'][_0xfe75('0x16')]);}logger[_0xfe75('0x14')]('UserProfileSection,\x20%s,\x20%s',_0x183c9e,_0x3b3c88[_0xfe75('0x14')][_0xfe75('0x16')]);return _0x189478(_0x3b3c88[_0xfe75('0x14')][_0xfe75('0x16')]);}else{logger[_0xfe75('0xe')]('UserProfileSection,\x20%s,\x20%s',_0x183c9e,_0xfe75('0x10'));_0x189478(_0x3b3c88['result'][_0xfe75('0x16')]);}})[_0xfe75('0x17')](function(_0x21a40e){logger[_0xfe75('0x14')]('UserProfileSection,\x20%s,\x20%s',_0x183c9e,_0x21a40e);_0x528f05(_0x21a40e);});});}
\ No newline at end of file
+var _0xbb29=['message','request\x20sent','result','catch','lodash','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','then','info','UserProfileSection,\x20%s,\x20%s','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x7e71eb,_0x3b5437){var _0x1717cd=function(_0x491e4a){while(--_0x491e4a){_0x7e71eb['push'](_0x7e71eb['shift']());}};_0x1717cd(++_0x3b5437);}(_0xbb29,0x15a));var _0x9bb2=function(_0x5b154f,_0x54130a){_0x5b154f=_0x5b154f-0x0;var _0x187b86=_0xbb29[_0x5b154f];return _0x187b86;};'use strict';var _=require(_0x9bb2('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x9bb2('0x1'));var rs=require(_0x9bb2('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9bb2('0x3'))['db'];var utils=require(_0x9bb2('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x9bb2('0x5'));var jayson=require(_0x9bb2('0x6'));var client=jayson[_0x9bb2('0x7')][_0x9bb2('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x72d7cb,_0x8f63b4,_0xe11cc6){return new BPromise(function(_0xaafe5f,_0x57be2c){return client['request'](_0x72d7cb,_0xe11cc6)[_0x9bb2('0x9')](function(_0x2c3d53){logger[_0x9bb2('0xa')](_0x9bb2('0xb'),_0x8f63b4,'request\x20sent');logger['debug'](_0x9bb2('0xc'),_0x8f63b4,'request\x20sent',JSON[_0x9bb2('0xd')](_0x2c3d53));if(_0x2c3d53[_0x9bb2('0xe')]){if(_0x2c3d53['error']['code']===0x1f4){logger[_0x9bb2('0xe')](_0x9bb2('0xb'),_0x8f63b4,_0x2c3d53['error'][_0x9bb2('0xf')]);return _0x57be2c(_0x2c3d53[_0x9bb2('0xe')][_0x9bb2('0xf')]);}logger[_0x9bb2('0xe')](_0x9bb2('0xb'),_0x8f63b4,_0x2c3d53[_0x9bb2('0xe')][_0x9bb2('0xf')]);return _0xaafe5f(_0x2c3d53[_0x9bb2('0xe')]['message']);}else{logger[_0x9bb2('0xa')]('UserProfileSection,\x20%s,\x20%s',_0x8f63b4,_0x9bb2('0x10'));_0xaafe5f(_0x2c3d53[_0x9bb2('0x11')][_0x9bb2('0xf')]);}})[_0x9bb2('0x12')](function(_0x4651ac){logger['error'](_0x9bb2('0xb'),_0x8f63b4,_0x4651ac);_0x57be2c(_0x4651ac);});});}
\ No newline at end of file
index 6a351d7..1091a1c 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(_0x59eeaf,_0x56e107){var _0x119d61=function(_0xad3379){while(--_0xad3379){_0x59eeaf['push'](_0x59eeaf['shift']());}};_0x119d61(++_0x56e107);}(_0x9c44,0x178));var _0x49c4=function(_0x4f9b18,_0x2cb5ca){_0x4f9b18=_0x4f9b18-0x0;var _0x29f20c=_0x9c44[_0x4f9b18];return _0x29f20c;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x37a03d,_0xbb072c){var _0x55bfeb=function(_0x5c4efd){while(--_0x5c4efd){_0x37a03d['push'](_0x37a03d['shift']());}};_0x55bfeb(++_0xbb072c);}(_0xe706,0xa3));var _0x6e70=function(_0x1b0c08,_0xd7531f){_0x1b0c08=_0x1b0c08-0x0;var _0x123dbf=_0xe706[_0x1b0c08];return _0x123dbf;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
index 4693ff2..9006424 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcfc=['INTEGER','exports'];(function(_0x2f7be,_0x42ca2a){var _0x1c79dc=function(_0x28c85d){while(--_0x28c85d){_0x2f7be['push'](_0x2f7be['shift']());}};_0x1c79dc(++_0x42ca2a);}(_0xfcfc,0xf9));var _0xcfcf=function(_0x523253,_0x3d7d80){_0x523253=_0x523253-0x0;var _0xece083=_0xfcfc[_0x523253];return _0xece083;};'use strict';var Sequelize=require('sequelize');module[_0xcfcf('0x0')]={'penalty':{'type':Sequelize[_0xcfcf('0x1')],'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 d5f716b..609b18a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde46=['./userSmsQueue.attributes','exports','define','user_has_sms_queues','lodash','util','../../config/logger','api','request-promise','rimraf','../../config/environment'];(function(_0x106bb3,_0x46072f){var _0x595729=function(_0x1004c4){while(--_0x1004c4){_0x106bb3['push'](_0x106bb3['shift']());}};_0x595729(++_0x46072f);}(_0xde46,0x14e));var _0x6de4=function(_0x3d7e78,_0x1123ee){_0x3d7e78=_0x3d7e78-0x0;var _0x56ab07=_0xde46[_0x3d7e78];return _0x56ab07;};'use strict';var _=require(_0x6de4('0x0'));var util=require(_0x6de4('0x1'));var logger=require(_0x6de4('0x2'))(_0x6de4('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6de4('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6de4('0x5'));var config=require(_0x6de4('0x6'));var attributes=require(_0x6de4('0x7'));module[_0x6de4('0x8')]=function(_0x525dcc,_0x47eb32){return _0x525dcc[_0x6de4('0x9')]('UserSmsQueue',attributes,{'tableName':_0x6de4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8085=['define','UserSmsQueue','user_has_sms_queues','lodash','api','moment','bluebird','request-promise','../../config/environment','./userSmsQueue.attributes'];(function(_0x13c5a9,_0x547d90){var _0x25f7dc=function(_0x1fe88e){while(--_0x1fe88e){_0x13c5a9['push'](_0x13c5a9['shift']());}};_0x25f7dc(++_0x547d90);}(_0x8085,0x71));var _0x5808=function(_0x31eb67,_0x9bc8c0){_0x31eb67=_0x31eb67-0x0;var _0x2a8cb8=_0x8085[_0x31eb67];return _0x2a8cb8;};'use strict';var _=require(_0x5808('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x5808('0x1'));var moment=require(_0x5808('0x2'));var BPromise=require(_0x5808('0x3'));var rp=require(_0x5808('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x5808('0x5'));var attributes=require(_0x5808('0x6'));module['exports']=function(_0x17f899,_0x749306){return _0x17f899[_0x5808('0x7')](_0x5808('0x8'),attributes,{'tableName':_0x5808('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 368280a..5ca4ee5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d3b=['client','http','request','then','info','UserSmsQueue,\x20%s,\x20%s','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment'];(function(_0x202967,_0x2052fc){var _0x43776c=function(_0x5b0837){while(--_0x5b0837){_0x202967['push'](_0x202967['shift']());}};_0x43776c(++_0x2052fc);}(_0x0d3b,0xb0));var _0xb0d3=function(_0xe525a2,_0xe87e8e){_0xe525a2=_0xe525a2-0x0;var _0x5346f4=_0x0d3b[_0xe525a2];return _0x5346f4;};'use strict';var _=require(_0xb0d3('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xb0d3('0x1'));var rs=require(_0xb0d3('0x2'));var fs=require('fs');var Redis=require(_0xb0d3('0x3'));var db=require(_0xb0d3('0x4'))['db'];var utils=require(_0xb0d3('0x5'));var logger=require(_0xb0d3('0x6'))('rpc');var config=require(_0xb0d3('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xb0d3('0x8')][_0xb0d3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5682e7,_0x537897,_0x3b1325){return new BPromise(function(_0x2a57b6,_0x282a0a){return client[_0xb0d3('0xa')](_0x5682e7,_0x3b1325)[_0xb0d3('0xb')](function(_0xca3e43){logger[_0xb0d3('0xc')](_0xb0d3('0xd'),_0x537897,'request\x20sent');logger[_0xb0d3('0xe')](_0xb0d3('0xf'),_0x537897,_0xb0d3('0x10'),JSON[_0xb0d3('0x11')](_0xca3e43));if(_0xca3e43['error']){if(_0xca3e43[_0xb0d3('0x12')][_0xb0d3('0x13')]===0x1f4){logger['error'](_0xb0d3('0xd'),_0x537897,_0xca3e43[_0xb0d3('0x12')][_0xb0d3('0x14')]);return _0x282a0a(_0xca3e43[_0xb0d3('0x12')][_0xb0d3('0x14')]);}logger[_0xb0d3('0x12')](_0xb0d3('0xd'),_0x537897,_0xca3e43['error'][_0xb0d3('0x14')]);return _0x2a57b6(_0xca3e43[_0xb0d3('0x12')][_0xb0d3('0x14')]);}else{logger[_0xb0d3('0xc')](_0xb0d3('0xd'),_0x537897,'request\x20sent');_0x2a57b6(_0xca3e43[_0xb0d3('0x15')][_0xb0d3('0x14')]);}})[_0xb0d3('0x16')](function(_0x598e1e){logger[_0xb0d3('0x12')](_0xb0d3('0xd'),_0x537897,_0x598e1e);_0x282a0a(_0x598e1e);});});}
\ No newline at end of file
+var _0x9dad=['debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','client','request','then','info','UserSmsQueue,\x20%s,\x20%s'];(function(_0x5f3dff,_0x4e7615){var _0x53a169=function(_0x109f23){while(--_0x109f23){_0x5f3dff['push'](_0x5f3dff['shift']());}};_0x53a169(++_0x4e7615);}(_0x9dad,0xb0));var _0xd9da=function(_0x10e349,_0x38f280){_0x10e349=_0x10e349-0x0;var _0x5774da=_0x9dad[_0x10e349];return _0x5774da;};'use strict';var _=require(_0xd9da('0x0'));var util=require(_0xd9da('0x1'));var moment=require(_0xd9da('0x2'));var BPromise=require(_0xd9da('0x3'));var rs=require(_0xd9da('0x4'));var fs=require('fs');var Redis=require(_0xd9da('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xd9da('0x6'))(_0xd9da('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xd9da('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2564eb,_0x581af0,_0x4fb328){return new BPromise(function(_0x13f186,_0x43f5c0){return client[_0xd9da('0x9')](_0x2564eb,_0x4fb328)[_0xd9da('0xa')](function(_0x556364){logger[_0xd9da('0xb')](_0xd9da('0xc'),_0x581af0,'request\x20sent');logger[_0xd9da('0xd')](_0xd9da('0xe'),_0x581af0,'request\x20sent',JSON[_0xd9da('0xf')](_0x556364));if(_0x556364[_0xd9da('0x10')]){if(_0x556364[_0xd9da('0x10')][_0xd9da('0x11')]===0x1f4){logger[_0xd9da('0x10')](_0xd9da('0xc'),_0x581af0,_0x556364[_0xd9da('0x10')][_0xd9da('0x12')]);return _0x43f5c0(_0x556364[_0xd9da('0x10')][_0xd9da('0x12')]);}logger[_0xd9da('0x10')]('UserSmsQueue,\x20%s,\x20%s',_0x581af0,_0x556364['error']['message']);return _0x13f186(_0x556364['error']['message']);}else{logger['info'](_0xd9da('0xc'),_0x581af0,_0xd9da('0x13'));_0x13f186(_0x556364['result'][_0xd9da('0x12')]);}})[_0xd9da('0x14')](function(_0x4a3eb0){logger['error'](_0xd9da('0xc'),_0x581af0,_0x4a3eb0);_0x43f5c0(_0x4a3eb0);});});}
\ No newline at end of file
index b4ca782..b25328e 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(_0x47927e,_0x3cb5e0){var _0x1d0fb6=function(_0x2f5c15){while(--_0x2f5c15){_0x47927e['push'](_0x47927e['shift']());}};_0x1d0fb6(++_0x3cb5e0);}(_0xe706,0xa3));var _0x6e70=function(_0x1bb0b8,_0x24add2){_0x1bb0b8=_0x1bb0b8-0x0;var _0x22fc67=_0xe706[_0x1bb0b8];return _0x22fc67;};'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 _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x111120,_0x3c67cd){var _0x3e5981=function(_0x1b7ad5){while(--_0x1b7ad5){_0x111120['push'](_0x111120['shift']());}};_0x3e5981(++_0x3c67cd);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x5d9867,_0x5e9030){_0x5d9867=_0x5d9867-0x0;var _0x7d2118=_0xcb91[_0x5d9867];return _0x7d2118;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
index ea28bc9..613b7b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8819=['INTEGER'];(function(_0x1b0cc8,_0x6e3392){var _0x441d1a=function(_0x248cef){while(--_0x248cef){_0x1b0cc8['push'](_0x1b0cc8['shift']());}};_0x441d1a(++_0x6e3392);}(_0x8819,0x94));var _0x9881=function(_0x312600,_0x5d2d4b){_0x312600=_0x312600-0x0;var _0x34ee2e=_0x8819[_0x312600];return _0x34ee2e;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0x9881('0x0')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x1a01=['exports','INTEGER'];(function(_0x2356e3,_0x3c1521){var _0x12e9f7=function(_0x47acc9){while(--_0x47acc9){_0x2356e3['push'](_0x2356e3['shift']());}};_0x12e9f7(++_0x3c1521);}(_0x1a01,0x162));var _0x11a0=function(_0x47e68c,_0x4d6cd5){_0x47e68c=_0x47e68c-0x0;var _0x5fade6=_0x1a01[_0x47e68c];return _0x5fade6;};'use strict';var Sequelize=require('sequelize');module[_0x11a0('0x0')]={'penalty':{'type':Sequelize[_0x11a0('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 46b1e73..11e4bf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67c9=['lodash','util','../../config/logger','bluebird','rimraf','../../config/environment','./userVoiceQueue.attributes','define','UserVoiceQueue','user_has_voice_queues'];(function(_0x5cb11e,_0x38f9b0){var _0x167802=function(_0x260297){while(--_0x260297){_0x5cb11e['push'](_0x5cb11e['shift']());}};_0x167802(++_0x38f9b0);}(_0x67c9,0x1e0));var _0x967c=function(_0x51b80a,_0x355fe3){_0x51b80a=_0x51b80a-0x0;var _0x22fdf0=_0x67c9[_0x51b80a];return _0x22fdf0;};'use strict';var _=require(_0x967c('0x0'));var util=require(_0x967c('0x1'));var logger=require(_0x967c('0x2'))('api');var moment=require('moment');var BPromise=require(_0x967c('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x967c('0x4'));var config=require(_0x967c('0x5'));var attributes=require(_0x967c('0x6'));module['exports']=function(_0x3195a1,_0x60c39){return _0x3195a1[_0x967c('0x7')](_0x967c('0x8'),attributes,{'tableName':_0x967c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x70e0=['user_has_voice_queues','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','./userVoiceQueue.attributes'];(function(_0x4ee0ba,_0x340d2c){var _0x52917f=function(_0x4b6de8){while(--_0x4b6de8){_0x4ee0ba['push'](_0x4ee0ba['shift']());}};_0x52917f(++_0x340d2c);}(_0x70e0,0x17b));var _0x070e=function(_0x2d9a93,_0xa80306){_0x2d9a93=_0x2d9a93-0x0;var _0x258dc6=_0x70e0[_0x2d9a93];return _0x258dc6;};'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']('UserVoiceQueue',attributes,{'tableName':_0x070e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index af0e64b..d927f41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b69=['bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','util'];(function(_0x322efb,_0x539552){var _0x4245ca=function(_0x456790){while(--_0x456790){_0x322efb['push'](_0x322efb['shift']());}};_0x4245ca(++_0x539552);}(_0x8b69,0xcf));var _0x98b6=function(_0xed4ed0,_0x4b977f){_0xed4ed0=_0xed4ed0-0x0;var _0x55077c=_0x8b69[_0xed4ed0];return _0x55077c;};'use strict';var _=require(_0x98b6('0x0'));var util=require(_0x98b6('0x1'));var moment=require('moment');var BPromise=require(_0x98b6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x98b6('0x3'))['db'];var utils=require(_0x98b6('0x4'));var logger=require(_0x98b6('0x5'))(_0x98b6('0x6'));var config=require(_0x98b6('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x98b6('0x8')][_0x98b6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x453b3e,_0x3ae354,_0x48c2e3){return new BPromise(function(_0x421e4a,_0x2ebce6){return client['request'](_0x453b3e,_0x48c2e3)['then'](function(_0xc87ad2){logger[_0x98b6('0xa')](_0x98b6('0xb'),_0x3ae354,_0x98b6('0xc'));logger[_0x98b6('0xd')]('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x3ae354,_0x98b6('0xc'),JSON['stringify'](_0xc87ad2));if(_0xc87ad2['error']){if(_0xc87ad2[_0x98b6('0xe')][_0x98b6('0xf')]===0x1f4){logger[_0x98b6('0xe')]('UserVoiceQueue,\x20%s,\x20%s',_0x3ae354,_0xc87ad2[_0x98b6('0xe')]['message']);return _0x2ebce6(_0xc87ad2[_0x98b6('0xe')][_0x98b6('0x10')]);}logger[_0x98b6('0xe')](_0x98b6('0xb'),_0x3ae354,_0xc87ad2[_0x98b6('0xe')][_0x98b6('0x10')]);return _0x421e4a(_0xc87ad2[_0x98b6('0xe')][_0x98b6('0x10')]);}else{logger[_0x98b6('0xa')](_0x98b6('0xb'),_0x3ae354,_0x98b6('0xc'));_0x421e4a(_0xc87ad2[_0x98b6('0x11')][_0x98b6('0x10')]);}})[_0x98b6('0x12')](function(_0x150b26){logger['error']('UserVoiceQueue,\x20%s,\x20%s',_0x3ae354,_0x150b26);_0x2ebce6(_0x150b26);});});}
\ No newline at end of file
+var _0x6a5d=['info','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','http','request','then','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x277607,_0x345a06){var _0x15fe23=function(_0x336de7){while(--_0x336de7){_0x277607['push'](_0x277607['shift']());}};_0x15fe23(++_0x345a06);}(_0x6a5d,0x121));var _0xd6a5=function(_0x183ca3,_0x494231){_0x183ca3=_0x183ca3-0x0;var _0x735fa=_0x6a5d[_0x183ca3];return _0x735fa;};'use strict';var _=require('lodash');var util=require(_0xd6a5('0x0'));var moment=require(_0xd6a5('0x1'));var BPromise=require('bluebird');var rs=require(_0xd6a5('0x2'));var fs=require('fs');var Redis=require(_0xd6a5('0x3'));var db=require(_0xd6a5('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xd6a5('0x5'))(_0xd6a5('0x6'));var config=require(_0xd6a5('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xd6a5('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5e8cdb,_0x534582,_0x263780){return new BPromise(function(_0x12725a,_0x38c8aa){return client[_0xd6a5('0x9')](_0x5e8cdb,_0x263780)[_0xd6a5('0xa')](function(_0x4cd66a){logger['info'](_0xd6a5('0xb'),_0x534582,_0xd6a5('0xc'));logger[_0xd6a5('0xd')](_0xd6a5('0xe'),_0x534582,'request\x20sent',JSON[_0xd6a5('0xf')](_0x4cd66a));if(_0x4cd66a['error']){if(_0x4cd66a[_0xd6a5('0x10')][_0xd6a5('0x11')]===0x1f4){logger[_0xd6a5('0x10')]('UserVoiceQueue,\x20%s,\x20%s',_0x534582,_0x4cd66a[_0xd6a5('0x10')][_0xd6a5('0x12')]);return _0x38c8aa(_0x4cd66a['error'][_0xd6a5('0x12')]);}logger[_0xd6a5('0x10')](_0xd6a5('0xb'),_0x534582,_0x4cd66a[_0xd6a5('0x10')][_0xd6a5('0x12')]);return _0x12725a(_0x4cd66a[_0xd6a5('0x10')]['message']);}else{logger[_0xd6a5('0x13')](_0xd6a5('0xb'),_0x534582,_0xd6a5('0xc'));_0x12725a(_0x4cd66a[_0xd6a5('0x14')][_0xd6a5('0x12')]);}})[_0xd6a5('0x15')](function(_0x2407fb){logger[_0xd6a5('0x10')]('UserVoiceQueue,\x20%s,\x20%s',_0x534582,_0x2407fb);_0x38c8aa(_0x2407fb);});});}
\ No newline at end of file
index 6339699..39fc981 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(_0x5ec25b,_0x1ff58e){var _0x4fe26f=function(_0x3997cf){while(--_0x3997cf){_0x5ec25b['push'](_0x5ec25b['shift']());}};_0x4fe26f(++_0x1ff58e);}(_0x9c44,0x178));var _0x49c4=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0x9c44[_0x273c39];return _0x46d6b5;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x1d6278,_0x373bef){var _0x311895=function(_0xea5e0d){while(--_0xea5e0d){_0x1d6278['push'](_0x1d6278['shift']());}};_0x311895(++_0x373bef);}(_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 f50681d..9e0a73e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd086=['Required\x20by\x20Asterisk','STRING','sequelize','INTEGER'];(function(_0x11ba06,_0x41d28d){var _0x3053d8=function(_0x2362c9){while(--_0x2362c9){_0x11ba06['push'](_0x11ba06['shift']());}};_0x3053d8(++_0x41d28d);}(_0xd086,0x1da));var _0x6d08=function(_0x556b04,_0x5350bc){_0x556b04=_0x556b04-0x0;var _0x1a4255=_0xd086[_0x556b04];return _0x1a4255;};'use strict';var Sequelize=require(_0x6d08('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x6d08('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':_0x6d08('0x2')},'membername':{'type':Sequelize[_0x6d08('0x3')],'allowNull':![],'comment':_0x6d08('0x2')},'UserId':{'type':Sequelize[_0x6d08('0x1')],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'queue_interface','comment':'Required\x20by\x20Asterisk'},'VoiceQueueId':{'type':Sequelize['INTEGER'],'allowNull':![]},'interface':{'type':Sequelize[_0x6d08('0x3')],'allowNull':![],'unique':'queue_interface','comment':_0x6d08('0x2')},'penalty':{'type':Sequelize[_0x6d08('0x1')](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'},'paused':{'type':Sequelize[_0x6d08('0x1')](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'}};
\ No newline at end of file
+var _0xf1c7=['STRING','Required\x20by\x20Asterisk','queue_interface','sequelize','INTEGER'];(function(_0x7275c4,_0x3df218){var _0x7df0c2=function(_0x253f17){while(--_0x253f17){_0x7275c4['push'](_0x7275c4['shift']());}};_0x7df0c2(++_0x3df218);}(_0xf1c7,0x193));var _0x7f1c=function(_0x237546,_0xa81b26){_0x237546=_0x237546-0x0;var _0x233e29=_0xf1c7[_0x237546];return _0x233e29;};'use strict';var Sequelize=require(_0x7f1c('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x7f1c('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':'Required\x20by\x20Asterisk'},'membername':{'type':Sequelize[_0x7f1c('0x2')],'allowNull':![],'comment':_0x7f1c('0x3')},'UserId':{'type':Sequelize[_0x7f1c('0x1')],'allowNull':![]},'queue_name':{'type':Sequelize[_0x7f1c('0x2')],'allowNull':![],'unique':_0x7f1c('0x4'),'comment':_0x7f1c('0x3')},'VoiceQueueId':{'type':Sequelize[_0x7f1c('0x1')],'allowNull':![]},'interface':{'type':Sequelize[_0x7f1c('0x2')],'allowNull':![],'unique':_0x7f1c('0x4'),'comment':'Required\x20by\x20Asterisk'},'penalty':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0x7f1c('0x3')},'paused':{'type':Sequelize[_0x7f1c('0x1')](0xb),'defaultValue':0x0,'comment':_0x7f1c('0x3')}};
\ No newline at end of file
index c2142fa..1101f26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdeee=['UserVoiceQueueRt','save','update','remove','emit','exports','events','../../mysqldb'];(function(_0x819464,_0x46fc91){var _0x49dcc0=function(_0x36b2b2){while(--_0x36b2b2){_0x819464['push'](_0x819464['shift']());}};_0x49dcc0(++_0x46fc91);}(_0xdeee,0x8e));var _0xedee=function(_0x5b23ce,_0x158f8f){_0x5b23ce=_0x5b23ce-0x0;var _0x463607=_0xdeee[_0x5b23ce];return _0x463607;};'use strict';var EventEmitter=require(_0xedee('0x0'));var UserVoiceQueueRt=require(_0xedee('0x1'))['db'][_0xedee('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xedee('0x3'),'afterUpdate':_0xedee('0x4'),'afterDestroy':_0xedee('0x5')};function emitEvent(_0x31f8ad){return function(_0x1b1c43,_0x5849b8,_0x3a80a9){UserVoiceQueueRtEvents[_0xedee('0x6')](_0x31f8ad+':'+_0x1b1c43['id'],_0x1b1c43);UserVoiceQueueRtEvents['emit'](_0x31f8ad,_0x1b1c43);_0x3a80a9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserVoiceQueueRt['hook'](e,emitEvent(event));}}module[_0xedee('0x7')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0x6629=['../../mysqldb','UserVoiceQueueRt','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x555b48,_0x27365a){var _0x537d2f=function(_0x458cd1){while(--_0x458cd1){_0x555b48['push'](_0x555b48['shift']());}};_0x537d2f(++_0x27365a);}(_0x6629,0x172));var _0x9662=function(_0x122839,_0x2bcaeb){_0x122839=_0x122839-0x0;var _0x6724b3=_0x6629[_0x122839];return _0x6724b3;};'use strict';var EventEmitter=require('events');var UserVoiceQueueRt=require(_0x9662('0x0'))['db'][_0x9662('0x1')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x9662('0x2')](0x0);var events={'afterCreate':_0x9662('0x3'),'afterUpdate':_0x9662('0x4'),'afterDestroy':_0x9662('0x5')};function emitEvent(_0x361f9d){return function(_0x4b2c3d,_0x253d08,_0x2a2cdd){UserVoiceQueueRtEvents['emit'](_0x361f9d+':'+_0x4b2c3d['id'],_0x4b2c3d);UserVoiceQueueRtEvents[_0x9662('0x6')](_0x361f9d,_0x4b2c3d);_0x2a2cdd(null);};}for(var e in events){if(events[_0x9662('0x7')](e)){var event=events[e];UserVoiceQueueRt[_0x9662('0x8')](e,emitEvent(event));}}module[_0x9662('0x9')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index f837443..fe9d002 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8cd=['./userVoiceQueueRt.attributes','exports','define','user_has_voice_queues_rt','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x8323cd,_0xa7f4a8){var _0x58aea3=function(_0x2b38ce){while(--_0x2b38ce){_0x8323cd['push'](_0x8323cd['shift']());}};_0x58aea3(++_0xa7f4a8);}(_0xf8cd,0x13c));var _0xdf8c=function(_0x32a9f1,_0x388a74){_0x32a9f1=_0x32a9f1-0x0;var _0x4bca30=_0xf8cd[_0x32a9f1];return _0x4bca30;};'use strict';var _=require(_0xdf8c('0x0'));var util=require(_0xdf8c('0x1'));var logger=require(_0xdf8c('0x2'))(_0xdf8c('0x3'));var moment=require(_0xdf8c('0x4'));var BPromise=require('bluebird');var rp=require(_0xdf8c('0x5'));var fs=require('fs');var path=require(_0xdf8c('0x6'));var rimraf=require(_0xdf8c('0x7'));var config=require(_0xdf8c('0x8'));var attributes=require(_0xdf8c('0x9'));module[_0xdf8c('0xa')]=function(_0x5a67e5,_0x3d82e3){return _0x5a67e5[_0xdf8c('0xb')]('UserVoiceQueueRt',attributes,{'tableName':_0xdf8c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2bd5=['user_has_voice_queues_rt','lodash','util','../../config/logger','api','request-promise','path','rimraf','define','UserVoiceQueueRt'];(function(_0x48562d,_0x3ca202){var _0x658f0a=function(_0x52b83f){while(--_0x52b83f){_0x48562d['push'](_0x48562d['shift']());}};_0x658f0a(++_0x3ca202);}(_0x2bd5,0x169));var _0x52bd=function(_0x2ac5f8,_0x4c3a9f){_0x2ac5f8=_0x2ac5f8-0x0;var _0x3b8229=_0x2bd5[_0x2ac5f8];return _0x3b8229;};'use strict';var _=require(_0x52bd('0x0'));var util=require(_0x52bd('0x1'));var logger=require(_0x52bd('0x2'))(_0x52bd('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x52bd('0x4'));var fs=require('fs');var path=require(_0x52bd('0x5'));var rimraf=require(_0x52bd('0x6'));var config=require('../../config/environment');var attributes=require('./userVoiceQueueRt.attributes');module['exports']=function(_0x3cdb64,_0x3e550f){return _0x3cdb64[_0x52bd('0x7')](_0x52bd('0x8'),attributes,{'tableName':_0x52bd('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 11c80ec..a3a7950 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a76=['debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','code','UserVoiceQueueRt,\x20%s,\x20%s','message','info','result','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','options','raw','sequelize','outboundQueuePauses','lodash','util','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','redis','defaults','localhost','./userVoiceQueueRt.socket','register','request','then','request\x20sent'];(function(_0x481cf4,_0x331b46){var _0x3b33f0=function(_0x4e873c){while(--_0x4e873c){_0x481cf4['push'](_0x481cf4['shift']());}};_0x3b33f0(++_0x331b46);}(_0x0a76,0xb5));var _0x60a7=function(_0x541f20,_0x2244e0){_0x541f20=_0x541f20-0x0;var _0x22fc33=_0x0a76[_0x541f20];return _0x22fc33;};'use strict';var _=require(_0x60a7('0x0'));var util=require(_0x60a7('0x1'));var moment=require('moment');var BPromise=require(_0x60a7('0x2'));var rs=require(_0x60a7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x60a7('0x4'));var logger=require(_0x60a7('0x5'))('rpc');var config=require(_0x60a7('0x6'));var jayson=require(_0x60a7('0x7'));var client=jayson[_0x60a7('0x8')]['http']({'port':0x232a});config[_0x60a7('0x9')]=_[_0x60a7('0xa')](config[_0x60a7('0x9')],{'host':_0x60a7('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x60a7('0xc'))[_0x60a7('0xd')](socket);function respondWithRpcPromise(_0x25b2ce,_0x18c29c,_0x19877b){return new BPromise(function(_0x2fc2da,_0x4a9710){return client[_0x60a7('0xe')](_0x25b2ce,_0x19877b)[_0x60a7('0xf')](function(_0x5a5628){logger['info']('UserVoiceQueueRt,\x20%s,\x20%s',_0x18c29c,_0x60a7('0x10'));logger[_0x60a7('0x11')](_0x60a7('0x12'),_0x18c29c,_0x60a7('0x10'),JSON[_0x60a7('0x13')](_0x5a5628));if(_0x5a5628[_0x60a7('0x14')]){if(_0x5a5628[_0x60a7('0x14')][_0x60a7('0x15')]===0x1f4){logger['error'](_0x60a7('0x16'),_0x18c29c,_0x5a5628['error'][_0x60a7('0x17')]);return _0x4a9710(_0x5a5628['error'][_0x60a7('0x17')]);}logger[_0x60a7('0x14')](_0x60a7('0x16'),_0x18c29c,_0x5a5628[_0x60a7('0x14')][_0x60a7('0x17')]);return _0x2fc2da(_0x5a5628[_0x60a7('0x14')][_0x60a7('0x17')]);}else{logger[_0x60a7('0x18')](_0x60a7('0x16'),_0x18c29c,_0x60a7('0x10'));_0x2fc2da(_0x5a5628[_0x60a7('0x19')][_0x60a7('0x17')]);}})[_0x60a7('0x1a')](function(_0x2799cb){logger['error'](_0x60a7('0x16'),_0x18c29c,_0x2799cb);_0x4a9710(_0x2799cb);});});}exports[_0x60a7('0x1b')]=function(_0x1d7610){var _0x291b60=this;return new Promise(function(_0x490240,_0x45a948){return db[_0x60a7('0x1c')]['findAll']({'raw':_0x1d7610[_0x60a7('0x1d')]?_0x1d7610[_0x60a7('0x1d')][_0x60a7('0x1e')]===undefined?!![]:![]:!![],'where':_0x1d7610[_0x60a7('0x1d')]?_0x1d7610[_0x60a7('0x1d')]['where']||null:null,'attributes':[[db[_0x60a7('0x1f')]['fn']('COUNT',db[_0x60a7('0x1f')]['fn']('IF',db[_0x60a7('0x1f')]['literal']('`paused`\x20=\x201,\x201,\x20null'))),_0x60a7('0x20')]]})[_0x60a7('0xf')](function(_0x61eeab){logger[_0x60a7('0x18')](_0x60a7('0x1b'),_0x1d7610);logger[_0x60a7('0x11')]('GetVoiceQueueRtPauses',_0x1d7610,JSON[_0x60a7('0x13')](_0x61eeab));_0x490240(_0x61eeab);})[_0x60a7('0x1a')](function(_0x3c8cfa){logger[_0x60a7('0x14')]('GetVoiceQueueRtPauses',_0x3c8cfa['message'],_0x1d7610);_0x45a948(_0x291b60[_0x60a7('0x14')](0x1f4,_0x3c8cfa[_0x60a7('0x17')]));});});};
\ No newline at end of file
+var _0x8ecf=['error','code','message','info','result','catch','GetVoiceQueueRtPauses','findAll','options','where','COUNT','sequelize','literal','`paused`\x20=\x201,\x201,\x20null','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','register','request','then','UserVoiceQueueRt,\x20%s,\x20%s','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x18d9cf,_0x48e82c){var _0x1850b8=function(_0x4598d4){while(--_0x4598d4){_0x18d9cf['push'](_0x18d9cf['shift']());}};_0x1850b8(++_0x48e82c);}(_0x8ecf,0x7a));var _0xf8ec=function(_0x20b1e,_0x670e43){_0x20b1e=_0x20b1e-0x0;var _0x35d4e=_0x8ecf[_0x20b1e];return _0x35d4e;};'use strict';var _=require(_0xf8ec('0x0'));var util=require(_0xf8ec('0x1'));var moment=require(_0xf8ec('0x2'));var BPromise=require('bluebird');var rs=require(_0xf8ec('0x3'));var fs=require('fs');var Redis=require(_0xf8ec('0x4'));var db=require(_0xf8ec('0x5'))['db'];var utils=require(_0xf8ec('0x6'));var logger=require(_0xf8ec('0x7'))(_0xf8ec('0x8'));var config=require(_0xf8ec('0x9'));var jayson=require(_0xf8ec('0xa'));var client=jayson[_0xf8ec('0xb')][_0xf8ec('0xc')]({'port':0x232a});config[_0xf8ec('0xd')]=_['defaults'](config[_0xf8ec('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0xf8ec('0xe'))(new Redis(config[_0xf8ec('0xd')]));require('./userVoiceQueueRt.socket')[_0xf8ec('0xf')](socket);function respondWithRpcPromise(_0x2eb71f,_0x39c60e,_0x1ae595){return new BPromise(function(_0xb31083,_0x109649){return client[_0xf8ec('0x10')](_0x2eb71f,_0x1ae595)[_0xf8ec('0x11')](function(_0x48bb37){logger['info'](_0xf8ec('0x12'),_0x39c60e,'request\x20sent');logger[_0xf8ec('0x13')](_0xf8ec('0x14'),_0x39c60e,_0xf8ec('0x15'),JSON['stringify'](_0x48bb37));if(_0x48bb37[_0xf8ec('0x16')]){if(_0x48bb37['error'][_0xf8ec('0x17')]===0x1f4){logger[_0xf8ec('0x16')](_0xf8ec('0x12'),_0x39c60e,_0x48bb37['error']['message']);return _0x109649(_0x48bb37['error'][_0xf8ec('0x18')]);}logger[_0xf8ec('0x16')](_0xf8ec('0x12'),_0x39c60e,_0x48bb37[_0xf8ec('0x16')][_0xf8ec('0x18')]);return _0xb31083(_0x48bb37[_0xf8ec('0x16')]['message']);}else{logger[_0xf8ec('0x19')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x39c60e,_0xf8ec('0x15'));_0xb31083(_0x48bb37[_0xf8ec('0x1a')][_0xf8ec('0x18')]);}})[_0xf8ec('0x1b')](function(_0x568ecf){logger[_0xf8ec('0x16')](_0xf8ec('0x12'),_0x39c60e,_0x568ecf);_0x109649(_0x568ecf);});});}exports[_0xf8ec('0x1c')]=function(_0x16c722){var _0x538248=this;return new Promise(function(_0x5be10c,_0x21aed3){return db['UserVoiceQueueRt'][_0xf8ec('0x1d')]({'raw':_0x16c722['options']?_0x16c722[_0xf8ec('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x16c722[_0xf8ec('0x1e')]?_0x16c722['options'][_0xf8ec('0x1f')]||null:null,'attributes':[[db['sequelize']['fn'](_0xf8ec('0x20'),db[_0xf8ec('0x21')]['fn']('IF',db[_0xf8ec('0x21')][_0xf8ec('0x22')](_0xf8ec('0x23')))),'outboundQueuePauses']]})[_0xf8ec('0x11')](function(_0x3dae7e){logger['info'](_0xf8ec('0x1c'),_0x16c722);logger[_0xf8ec('0x13')](_0xf8ec('0x1c'),_0x16c722,JSON['stringify'](_0x3dae7e));_0x5be10c(_0x3dae7e);})['catch'](function(_0x3ecf8f){logger[_0xf8ec('0x16')](_0xf8ec('0x1c'),_0x3ecf8f[_0xf8ec('0x18')],_0x16c722);_0x21aed3(_0x538248[_0xf8ec('0x16')](0x1f4,_0x3ecf8f[_0xf8ec('0x18')]));});});};
\ No newline at end of file
index eaaf7a9..3e48f21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x576b=['emit','removeListener','register','length','userVoiceQueueRt:','update'];(function(_0x3b6aaf,_0x4aef36){var _0x295fa9=function(_0x4320d3){while(--_0x4320d3){_0x3b6aaf['push'](_0x3b6aaf['shift']());}};_0x295fa9(++_0x4aef36);}(_0x576b,0x1d9));var _0xb576=function(_0x41fa52,_0x391ecf){_0x41fa52=_0x41fa52-0x0;var _0x1fdbf8=_0x576b[_0x41fa52];return _0x1fdbf8;};'use strict';var UserVoiceQueueRtEvents=require('./userVoiceQueueRt.events');var events=['save','remove',_0xb576('0x0')];function createListener(_0x1cb118,_0x5db0de){return function(_0x2c3737){_0x5db0de[_0xb576('0x1')](_0x1cb118,_0x2c3737);};}function removeListener(_0x4e022a,_0x20cb85){return function(){UserVoiceQueueRtEvents[_0xb576('0x2')](_0x4e022a,_0x20cb85);};}exports[_0xb576('0x3')]=function(_0x3039d9){for(var _0x11427a=0x0,_0x22cbae=events[_0xb576('0x4')];_0x11427a<_0x22cbae;_0x11427a++){var _0x42f2c0=events[_0x11427a];var _0xe6d2fd=createListener(_0xb576('0x5')+_0x42f2c0,_0x3039d9);UserVoiceQueueRtEvents['on'](_0x42f2c0,_0xe6d2fd);}};
\ No newline at end of file
+var _0x0b3d=['removeListener','register','length','userVoiceQueueRt:','./userVoiceQueueRt.events','remove'];(function(_0x1bbc08,_0x444008){var _0x5d825b=function(_0x522920){while(--_0x522920){_0x1bbc08['push'](_0x1bbc08['shift']());}};_0x5d825b(++_0x444008);}(_0x0b3d,0x76));var _0xd0b3=function(_0x1bc59a,_0x22d2c3){_0x1bc59a=_0x1bc59a-0x0;var _0x3ab7a4=_0x0b3d[_0x1bc59a];return _0x3ab7a4;};'use strict';var UserVoiceQueueRtEvents=require(_0xd0b3('0x0'));var events=['save',_0xd0b3('0x1'),'update'];function createListener(_0x44585b,_0x5cd26e){return function(_0x2e82a6){_0x5cd26e['emit'](_0x44585b,_0x2e82a6);};}function removeListener(_0x372f08,_0x50faaa){return function(){UserVoiceQueueRtEvents[_0xd0b3('0x2')](_0x372f08,_0x50faaa);};}exports[_0xd0b3('0x3')]=function(_0x5b80df){for(var _0x2968c9=0x0,_0x5bc883=events[_0xd0b3('0x4')];_0x2968c9<_0x5bc883;_0x2968c9++){var _0x5f3196=events[_0x2968c9];var _0x5ab5b2=createListener(_0xd0b3('0x5')+_0x5f3196,_0x5b80df);UserVoiceQueueRtEvents['on'](_0x5f3196,_0x5ab5b2);}};
\ No newline at end of file
index 03f0cbb..a5b2ef5 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(_0x3c6310,_0x13601d){var _0x320122=function(_0x596176){while(--_0x596176){_0x3c6310['push'](_0x3c6310['shift']());}};_0x320122(++_0x13601d);}(_0x9c44,0x178));var _0x49c4=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0x9c44[_0x5f1391];return _0x50ebe3;};'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 _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x5d7574,_0x48ccff){var _0x3270ce=function(_0x27379d){while(--_0x27379d){_0x5d7574['push'](_0x5d7574['shift']());}};_0x3270ce(++_0x48ccff);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x199c03,_0x3254aa){_0x199c03=_0x199c03-0x0;var _0x11a7d4=_0xcb91[_0x199c03];return _0x11a7d4;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
index 6ea0edf..4108df5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c85=['exports','sequelize'];(function(_0x3be7b5,_0x4ac509){var _0x1801c7=function(_0xe0b401){while(--_0xe0b401){_0x3be7b5['push'](_0x3be7b5['shift']());}};_0x1801c7(++_0x4ac509);}(_0x1c85,0x18b));var _0x51c8=function(_0x201246,_0x1e0cf7){_0x201246=_0x201246-0x0;var _0x59d250=_0x1c85[_0x201246];return _0x59d250;};'use strict';var Sequelize=require(_0x51c8('0x0'));module[_0x51c8('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xd4a5=['exports','INTEGER'];(function(_0x2f8af8,_0x2c67fa){var _0x46a209=function(_0x5761d5){while(--_0x5761d5){_0x2f8af8['push'](_0x2f8af8['shift']());}};_0x46a209(++_0x2c67fa);}(_0xd4a5,0x166));var _0x5d4a=function(_0x10973d,_0x394a27){_0x10973d=_0x10973d-0x0;var _0x685fc5=_0xd4a5[_0x10973d];return _0x685fc5;};'use strict';var Sequelize=require('sequelize');module[_0x5d4a('0x0')]={'penalty':{'type':Sequelize[_0x5d4a('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index a4e2ed8..af9c950 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3462=['exports','user_has_whatsapp_queues','lodash','util','moment','bluebird','request-promise','rimraf','../../config/environment','./userWhatsappQueue.attributes'];(function(_0x3c2407,_0x3c9a47){var _0x5d2eac=function(_0xb33bf8){while(--_0xb33bf8){_0x3c2407['push'](_0x3c2407['shift']());}};_0x5d2eac(++_0x3c9a47);}(_0x3462,0x16a));var _0x2346=function(_0xa5ab46,_0x4ee79e){_0xa5ab46=_0xa5ab46-0x0;var _0x228c32=_0x3462[_0xa5ab46];return _0x228c32;};'use strict';var _=require(_0x2346('0x0'));var util=require(_0x2346('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x2346('0x2'));var BPromise=require(_0x2346('0x3'));var rp=require(_0x2346('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2346('0x5'));var config=require(_0x2346('0x6'));var attributes=require(_0x2346('0x7'));module[_0x2346('0x8')]=function(_0x3eba33,_0x76fc3c){return _0x3eba33['define']('UserWhatsappQueue',attributes,{'tableName':_0x2346('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x961a=['./userWhatsappQueue.attributes','exports','UserWhatsappQueue','user_has_whatsapp_queues','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x173afd,_0x17ba6c){var _0x2fee60=function(_0x53dc66){while(--_0x53dc66){_0x173afd['push'](_0x173afd['shift']());}};_0x2fee60(++_0x17ba6c);}(_0x961a,0x197));var _0xa961=function(_0x27d158,_0x47b847){_0x27d158=_0x27d158-0x0;var _0x1a7017=_0x961a[_0x27d158];return _0x1a7017;};'use strict';var _=require(_0xa961('0x0'));var util=require(_0xa961('0x1'));var logger=require('../../config/logger')(_0xa961('0x2'));var moment=require(_0xa961('0x3'));var BPromise=require(_0xa961('0x4'));var rp=require(_0xa961('0x5'));var fs=require('fs');var path=require(_0xa961('0x6'));var rimraf=require(_0xa961('0x7'));var config=require(_0xa961('0x8'));var attributes=require(_0xa961('0x9'));module[_0xa961('0xa')]=function(_0x18f2bf,_0x3b5a05){return _0x18f2bf['define'](_0xa961('0xb'),attributes,{'tableName':_0xa961('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 39dbf03..f03ff68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb709=['lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','UserWhatsappQueue,\x20%s,\x20%s','debug','request\x20sent','stringify','code','error','message','result','catch'];(function(_0x39d609,_0x2b142a){var _0x41215c=function(_0x181034){while(--_0x181034){_0x39d609['push'](_0x39d609['shift']());}};_0x41215c(++_0x2b142a);}(_0xb709,0x73));var _0x9b70=function(_0x1e0b51,_0x510d35){_0x1e0b51=_0x1e0b51-0x0;var _0x2494cf=_0xb709[_0x1e0b51];return _0x2494cf;};'use strict';var _=require(_0x9b70('0x0'));var util=require(_0x9b70('0x1'));var moment=require('moment');var BPromise=require(_0x9b70('0x2'));var rs=require(_0x9b70('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9b70('0x4'))['db'];var utils=require(_0x9b70('0x5'));var logger=require(_0x9b70('0x6'))(_0x9b70('0x7'));var config=require(_0x9b70('0x8'));var jayson=require(_0x9b70('0x9'));var client=jayson[_0x9b70('0xa')][_0x9b70('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x86cdda,_0x3adbe4,_0x492995){return new BPromise(function(_0x51e785,_0x4983c8){return client['request'](_0x86cdda,_0x492995)[_0x9b70('0xc')](function(_0x460d92){logger[_0x9b70('0xd')](_0x9b70('0xe'),_0x3adbe4,'request\x20sent');logger[_0x9b70('0xf')]('UserWhatsappQueue,\x20%s,\x20%s,\x20%s',_0x3adbe4,_0x9b70('0x10'),JSON[_0x9b70('0x11')](_0x460d92));if(_0x460d92['error']){if(_0x460d92['error'][_0x9b70('0x12')]===0x1f4){logger[_0x9b70('0x13')](_0x9b70('0xe'),_0x3adbe4,_0x460d92[_0x9b70('0x13')][_0x9b70('0x14')]);return _0x4983c8(_0x460d92['error'][_0x9b70('0x14')]);}logger[_0x9b70('0x13')]('UserWhatsappQueue,\x20%s,\x20%s',_0x3adbe4,_0x460d92[_0x9b70('0x13')]['message']);return _0x51e785(_0x460d92[_0x9b70('0x13')][_0x9b70('0x14')]);}else{logger[_0x9b70('0xd')]('UserWhatsappQueue,\x20%s,\x20%s',_0x3adbe4,_0x9b70('0x10'));_0x51e785(_0x460d92[_0x9b70('0x15')]['message']);}})[_0x9b70('0x16')](function(_0x27f75e){logger[_0x9b70('0x13')](_0x9b70('0xe'),_0x3adbe4,_0x27f75e);_0x4983c8(_0x27f75e);});});}
\ No newline at end of file
+var _0x6af0=['lodash','util','bluebird','ioredis','../../config/utils','rpc','../../config/environment','client','http','request','then','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0xecb200,_0x349441){var _0x3dce03=function(_0x4a6a51){while(--_0x4a6a51){_0xecb200['push'](_0xecb200['shift']());}};_0x3dce03(++_0x349441);}(_0x6af0,0xdc));var _0x06af=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0x6af0[_0x209941];return _0x1e8729;};'use strict';var _=require(_0x06af('0x0'));var util=require(_0x06af('0x1'));var moment=require('moment');var BPromise=require(_0x06af('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x06af('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x06af('0x4'));var logger=require('../../config/logger')(_0x06af('0x5'));var config=require(_0x06af('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x06af('0x7')][_0x06af('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1677f5,_0x5d9372,_0x28e834){return new BPromise(function(_0xf4d499,_0x17a416){return client[_0x06af('0x9')](_0x1677f5,_0x28e834)[_0x06af('0xa')](function(_0x967e15){logger['info'](_0x06af('0xb'),_0x5d9372,_0x06af('0xc'));logger[_0x06af('0xd')](_0x06af('0xe'),_0x5d9372,_0x06af('0xc'),JSON[_0x06af('0xf')](_0x967e15));if(_0x967e15[_0x06af('0x10')]){if(_0x967e15[_0x06af('0x10')][_0x06af('0x11')]===0x1f4){logger[_0x06af('0x10')](_0x06af('0xb'),_0x5d9372,_0x967e15[_0x06af('0x10')]['message']);return _0x17a416(_0x967e15['error']['message']);}logger[_0x06af('0x10')](_0x06af('0xb'),_0x5d9372,_0x967e15[_0x06af('0x10')][_0x06af('0x12')]);return _0xf4d499(_0x967e15[_0x06af('0x10')]['message']);}else{logger['info'](_0x06af('0xb'),_0x5d9372,'request\x20sent');_0xf4d499(_0x967e15[_0x06af('0x13')][_0x06af('0x12')]);}})['catch'](function(_0x4d1d68){logger[_0x06af('0x10')](_0x06af('0xb'),_0x5d9372,_0x4d1d68);_0x17a416(_0x4d1d68);});});}
\ No newline at end of file
index 4613113..c625d81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x383d=['/:id','isAuthenticated','show','create','put','update','delete','destroy','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./variable.controller','get','index'];(function(_0x55d7c2,_0x4ce6fb){var _0x1755ef=function(_0xddc25c){while(--_0xddc25c){_0x55d7c2['push'](_0x55d7c2['shift']());}};_0x1755ef(++_0x4ce6fb);}(_0x383d,0x86));var _0xd383=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x383d[_0x20a584];return _0x4b41a8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xd383('0x0'));var timeout=require(_0xd383('0x1'));var express=require(_0xd383('0x2'));var router=express['Router']();var fs_extra=require(_0xd383('0x3'));var auth=require(_0xd383('0x4'));var interaction=require(_0xd383('0x5'));var config=require(_0xd383('0x6'));var controller=require(_0xd383('0x7'));router[_0xd383('0x8')]('/',auth['isAuthenticated'](),controller[_0xd383('0x9')]);router[_0xd383('0x8')](_0xd383('0xa'),auth[_0xd383('0xb')](),controller[_0xd383('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd383('0xd')]);router[_0xd383('0xe')]('/:id',auth[_0xd383('0xb')](),controller[_0xd383('0xf')]);router[_0xd383('0x10')](_0xd383('0xa'),auth[_0xd383('0xb')](),controller[_0xd383('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xec56=['update','delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./variable.controller','get','isAuthenticated','index','/:id','show','post','create','put'];(function(_0x18ef8e,_0x470e81){var _0x50cb94=function(_0xfb6e46){while(--_0xfb6e46){_0x18ef8e['push'](_0x18ef8e['shift']());}};_0x50cb94(++_0x470e81);}(_0xec56,0x1bd));var _0x6ec5=function(_0x172802,_0x595403){_0x172802=_0x172802-0x0;var _0x44f658=_0xec56[_0x172802];return _0x44f658;};'use strict';var multer=require(_0x6ec5('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x6ec5('0x1'));var express=require(_0x6ec5('0x2'));var router=express[_0x6ec5('0x3')]();var fs_extra=require(_0x6ec5('0x4'));var auth=require(_0x6ec5('0x5'));var interaction=require(_0x6ec5('0x6'));var config=require(_0x6ec5('0x7'));var controller=require(_0x6ec5('0x8'));router[_0x6ec5('0x9')]('/',auth[_0x6ec5('0xa')](),controller[_0x6ec5('0xb')]);router[_0x6ec5('0x9')](_0x6ec5('0xc'),auth[_0x6ec5('0xa')](),controller[_0x6ec5('0xd')]);router[_0x6ec5('0xe')]('/',auth[_0x6ec5('0xa')](),controller[_0x6ec5('0xf')]);router[_0x6ec5('0x10')]('/:id',auth[_0x6ec5('0xa')](),controller[_0x6ec5('0x11')]);router[_0x6ec5('0x12')](_0x6ec5('0xc'),auth[_0x6ec5('0xa')](),controller[_0x6ec5('0x13')]);module[_0x6ec5('0x14')]=router;
\ No newline at end of file
index afb6dab..3f4dd7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2228=['STRING'];(function(_0x57d11b,_0x2a4299){var _0x63ad6e=function(_0x54b02d){while(--_0x54b02d){_0x57d11b['push'](_0x57d11b['shift']());}};_0x63ad6e(++_0x2a4299);}(_0x2228,0x118));var _0x8222=function(_0x5d7507,_0x2c6011){_0x5d7507=_0x5d7507-0x0;var _0x391919=_0x2228[_0x5d7507];return _0x391919;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x8222('0x0')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x8222('0x0')]}};
\ No newline at end of file
+var _0xb95d=['exports','STRING','name','sequelize'];(function(_0x248778,_0x441293){var _0x5c7850=function(_0x1511d8){while(--_0x1511d8){_0x248778['push'](_0x248778['shift']());}};_0x5c7850(++_0x441293);}(_0xb95d,0x13f));var _0xdb95=function(_0xaad974,_0x396049){_0xaad974=_0xaad974-0x0;var _0x3801e9=_0xb95d[_0xaad974];return _0x3801e9;};'use strict';var Sequelize=require(_0xdb95('0x0'));module[_0xdb95('0x1')]={'name':{'type':Sequelize[_0xdb95('0x2')],'unique':_0xdb95('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xdb95('0x2')]}};
\ No newline at end of file
index ff098a2..4805f07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c51=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','save','update','destroy','then','get','UserProfileResource','sendStatus','error','stack','name','send','map','Variable','rawAttributes','fieldName','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','options','include','findAll','rows','catch','show','params','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','Variables','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x52c8d3,_0x15009a){var _0x4b7f9d=function(_0x12eefe){while(--_0x12eefe){_0x52c8d3['push'](_0x52c8d3['shift']());}};_0x4b7f9d(++_0x15009a);}(_0x3c51,0x13a));var _0x13c5=function(_0x57427b,_0x4f7a85){_0x57427b=_0x57427b-0x0;var _0x40b7ad=_0x3c51[_0x57427b];return _0x40b7ad;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x13c5('0x0'));var zipdir=require(_0x13c5('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x13c5('0x2'));var moment=require(_0x13c5('0x3'));var BPromise=require(_0x13c5('0x4'));var Mustache=require(_0x13c5('0x5'));var util=require(_0x13c5('0x6'));var path=require(_0x13c5('0x7'));var sox=require(_0x13c5('0x8'));var csv=require(_0x13c5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x13c5('0xa'));var _=require(_0x13c5('0xb'));var squel=require('squel');var crypto=require(_0x13c5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x13c5('0xd'));var toCsv=require('to-csv');var querystring=require(_0x13c5('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x13c5('0xf'));var qs=require(_0x13c5('0x10'));var as=require(_0x13c5('0x11'));var hardwareService=require(_0x13c5('0x12'));var logger=require(_0x13c5('0x13'))(_0x13c5('0x14'));var utils=require(_0x13c5('0x15'));var config=require(_0x13c5('0x16'));var licenseUtil=require(_0x13c5('0x17'));var db=require(_0x13c5('0x18'))['db'];function respondWithStatusCode(_0x4e25bc,_0x3218c4){_0x3218c4=_0x3218c4||0xcc;return function(_0x269903){if(_0x269903){return _0x4e25bc['sendStatus'](_0x3218c4);}return _0x4e25bc[_0x13c5('0x19')](_0x3218c4)[_0x13c5('0x1a')]();};}function respondWithResult(_0x34dff9,_0x74ace6){_0x74ace6=_0x74ace6||0xc8;return function(_0x2bb91f){if(_0x2bb91f){return _0x34dff9['status'](_0x74ace6)[_0x13c5('0x1b')](_0x2bb91f);}};}function respondWithFilteredResult(_0x5a7572,_0x357471){return function(_0x11c744){if(_0x11c744){var _0x8b0df7=typeof _0x357471[_0x13c5('0x1c')]===_0x13c5('0x1d')&&typeof _0x357471[_0x13c5('0x1e')]===_0x13c5('0x1d');var _0x33a8c6=_0x11c744['count'];var _0x1e69f2=_0x8b0df7?0x0:_0x357471[_0x13c5('0x1c')];var _0x592fc4=_0x8b0df7?_0x11c744[_0x13c5('0x1f')]:_0x357471[_0x13c5('0x1c')]+_0x357471['limit'];var _0x1348cc;if(_0x592fc4>=_0x33a8c6){_0x592fc4=_0x33a8c6;_0x1348cc=0xc8;}else{_0x1348cc=0xce;}_0x5a7572[_0x13c5('0x19')](_0x1348cc);return _0x5a7572[_0x13c5('0x20')]('Content-Range',_0x1e69f2+'-'+_0x592fc4+'/'+_0x33a8c6)['json'](_0x11c744);}return null;};}function patchUpdates(_0x689306){return function(_0x37c3b5){try{jsonpatch[_0x13c5('0x21')](_0x37c3b5,_0x689306,!![]);}catch(_0x10fae1){return BPromise['reject'](_0x10fae1);}return _0x37c3b5[_0x13c5('0x22')]();};}function saveUpdates(_0x4e65ad,_0x3f7299){return function(_0x3ded0b){if(_0x3ded0b){return _0x3ded0b[_0x13c5('0x23')](_0x4e65ad)['then'](function(_0x23951b){return _0x23951b;});}return null;};}function removeEntity(_0x30a1e9,_0x3ba37b){return function(_0x25f097){if(_0x25f097){return _0x25f097[_0x13c5('0x24')]()[_0x13c5('0x25')](function(){var _0xd8ab9e=_0x25f097[_0x13c5('0x26')]({'plain':!![]});var _0x4f560c='Variables';return db[_0x13c5('0x27')][_0x13c5('0x24')]({'where':{'type':_0x4f560c,'resourceId':_0xd8ab9e['id']}})['then'](function(){return _0x25f097;});})[_0x13c5('0x25')](function(){_0x30a1e9[_0x13c5('0x19')](0xcc)[_0x13c5('0x1a')]();});}};}function handleEntityNotFound(_0x547c9b,_0x4469fb){return function(_0x3d2ab9){if(!_0x3d2ab9){_0x547c9b[_0x13c5('0x28')](0x194);}return _0x3d2ab9;};}function handleError(_0x32f4fd,_0x49eae4){_0x49eae4=_0x49eae4||0x1f4;return function(_0x258d34){logger[_0x13c5('0x29')](_0x258d34[_0x13c5('0x2a')]);if(_0x258d34[_0x13c5('0x2b')]){delete _0x258d34[_0x13c5('0x2b')];}_0x32f4fd[_0x13c5('0x19')](_0x49eae4)[_0x13c5('0x2c')](_0x258d34);};}exports['index']=function(_0x2fd2f9,_0x499a45){var _0x24b649={},_0x4421e6={},_0x5aa0ba={'count':0x0,'rows':[]};var _0x217c4e=_[_0x13c5('0x2d')](db[_0x13c5('0x2e')][_0x13c5('0x2f')],function(_0x57d8f9){return{'name':_0x57d8f9[_0x13c5('0x30')],'type':_0x57d8f9['type'][_0x13c5('0x31')]};});_0x4421e6[_0x13c5('0x32')]=_[_0x13c5('0x2d')](_0x217c4e,_0x13c5('0x2b'));_0x4421e6[_0x13c5('0x33')]=_[_0x13c5('0x34')](_0x2fd2f9[_0x13c5('0x33')]);_0x4421e6['filters']=_[_0x13c5('0x35')](_0x4421e6[_0x13c5('0x32')],_0x4421e6[_0x13c5('0x33')]);_0x24b649['attributes']=_[_0x13c5('0x35')](_0x4421e6[_0x13c5('0x32')],qs[_0x13c5('0x36')](_0x2fd2f9[_0x13c5('0x33')]['fields']));_0x24b649['attributes']=_0x24b649[_0x13c5('0x37')][_0x13c5('0x38')]?_0x24b649[_0x13c5('0x37')]:_0x4421e6['model'];if(!_0x2fd2f9[_0x13c5('0x33')][_0x13c5('0x39')](_0x13c5('0x3a'))){_0x24b649[_0x13c5('0x1e')]=qs[_0x13c5('0x1e')](_0x2fd2f9[_0x13c5('0x33')]['limit']);_0x24b649[_0x13c5('0x1c')]=qs['offset'](_0x2fd2f9[_0x13c5('0x33')]['offset']);}_0x24b649[_0x13c5('0x3b')]=qs[_0x13c5('0x3c')](_0x2fd2f9[_0x13c5('0x33')][_0x13c5('0x3c')]);_0x24b649[_0x13c5('0x3d')]=qs[_0x13c5('0x3e')](_[_0x13c5('0x3f')](_0x2fd2f9['query'],_0x4421e6['filters']),_0x217c4e);if(_0x2fd2f9['query'][_0x13c5('0x40')]){_0x24b649[_0x13c5('0x3d')]=_[_0x13c5('0x41')](_0x24b649['where'],{'$or':_['map'](_0x217c4e,function(_0x490173){if(_0x490173[_0x13c5('0x42')]!=='VIRTUAL'){var _0x5bda85={};_0x5bda85[_0x490173[_0x13c5('0x2b')]]={'$like':'%'+_0x2fd2f9['query'][_0x13c5('0x40')]+'%'};return _0x5bda85;}})});}_0x24b649=_[_0x13c5('0x41')]({},_0x24b649,_0x2fd2f9[_0x13c5('0x43')]);var _0x4b9f83={'where':_0x24b649[_0x13c5('0x3d')]};return db[_0x13c5('0x2e')][_0x13c5('0x1f')](_0x4b9f83)[_0x13c5('0x25')](function(_0x6f3e4f){_0x5aa0ba[_0x13c5('0x1f')]=_0x6f3e4f;if(_0x2fd2f9[_0x13c5('0x33')]['includeAll']){_0x24b649[_0x13c5('0x44')]=[{'all':!![]}];}return db[_0x13c5('0x2e')][_0x13c5('0x45')](_0x24b649);})[_0x13c5('0x25')](function(_0x47a9e7){_0x5aa0ba[_0x13c5('0x46')]=_0x47a9e7;return _0x5aa0ba;})[_0x13c5('0x25')](respondWithFilteredResult(_0x499a45,_0x24b649))[_0x13c5('0x47')](handleError(_0x499a45,null));};exports[_0x13c5('0x48')]=function(_0x97e733,_0x1949b0){var _0x4cb6b9={'raw':!![],'where':{'id':_0x97e733[_0x13c5('0x49')]['id']}},_0x2db20b={};_0x2db20b[_0x13c5('0x32')]=_['keys'](db[_0x13c5('0x2e')]['rawAttributes']);_0x2db20b['query']=_[_0x13c5('0x34')](_0x97e733[_0x13c5('0x33')]);_0x2db20b[_0x13c5('0x3e')]=_[_0x13c5('0x35')](_0x2db20b[_0x13c5('0x32')],_0x2db20b[_0x13c5('0x33')]);_0x4cb6b9[_0x13c5('0x37')]=_['intersection'](_0x2db20b[_0x13c5('0x32')],qs[_0x13c5('0x36')](_0x97e733['query']['fields']));_0x4cb6b9[_0x13c5('0x37')]=_0x4cb6b9[_0x13c5('0x37')][_0x13c5('0x38')]?_0x4cb6b9['attributes']:_0x2db20b[_0x13c5('0x32')];if(_0x97e733[_0x13c5('0x33')]['includeAll']){_0x4cb6b9[_0x13c5('0x44')]=[{'all':!![]}];}_0x4cb6b9=_[_0x13c5('0x41')]({},_0x4cb6b9,_0x97e733[_0x13c5('0x43')]);return db[_0x13c5('0x2e')][_0x13c5('0x4a')](_0x4cb6b9)['then'](handleEntityNotFound(_0x1949b0,null))[_0x13c5('0x25')](respondWithResult(_0x1949b0,null))['catch'](handleError(_0x1949b0,null));};exports[_0x13c5('0x4b')]=function(_0x475517,_0x133efc){return db[_0x13c5('0x2e')]['create'](_0x475517['body'],{})[_0x13c5('0x25')](function(_0x41e8e9){var _0x399d9b=_0x475517['user'][_0x13c5('0x26')]({'plain':!![]});if(!_0x399d9b)throw new Error(_0x13c5('0x4c'));if(_0x399d9b['role']==='user'){var _0x129fac=_0x41e8e9[_0x13c5('0x26')]({'plain':!![]});var _0x4e7244=_0x13c5('0x4d');return db[_0x13c5('0x4e')]['find']({'where':{'name':_0x4e7244,'userProfileId':_0x399d9b[_0x13c5('0x4f')]},'raw':!![]})[_0x13c5('0x25')](function(_0x2acf85){if(_0x2acf85&&_0x2acf85[_0x13c5('0x50')]===0x0){return db[_0x13c5('0x27')][_0x13c5('0x4b')]({'name':_0x129fac['name'],'resourceId':_0x129fac['id'],'type':_0x2acf85[_0x13c5('0x2b')],'sectionId':_0x2acf85['id']},{})['then'](function(){return _0x41e8e9;});}else{return _0x41e8e9;}})[_0x13c5('0x47')](function(_0x1237cf){logger[_0x13c5('0x29')](_0x13c5('0x51'),_0x1237cf);throw _0x1237cf;});}return _0x41e8e9;})['then'](respondWithResult(_0x133efc,0xc9))[_0x13c5('0x47')](handleError(_0x133efc,null));};exports['update']=function(_0x31a451,_0x15112b){if(_0x31a451[_0x13c5('0x52')]['id']){delete _0x31a451[_0x13c5('0x52')]['id'];}return db['Variable'][_0x13c5('0x4a')]({'where':{'id':_0x31a451['params']['id']}})[_0x13c5('0x25')](handleEntityNotFound(_0x15112b,null))[_0x13c5('0x25')](saveUpdates(_0x31a451[_0x13c5('0x52')],null))['then'](respondWithResult(_0x15112b,null))[_0x13c5('0x47')](handleError(_0x15112b,null));};exports[_0x13c5('0x24')]=function(_0x2ea22a,_0x2d07d4){return db['Variable'][_0x13c5('0x4a')]({'where':{'id':_0x2ea22a[_0x13c5('0x49')]['id']}})[_0x13c5('0x25')](handleEntityNotFound(_0x2d07d4,null))[_0x13c5('0x25')](removeEntity(_0x2d07d4,null))[_0x13c5('0x47')](handleError(_0x2d07d4,null));};
\ No newline at end of file
+var _0x657d=['status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','get','UserProfileResource','error','stack','name','send','index','map','Variable','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','include','rows','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Variables','UserProfileSection','userProfileId','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x657d,0xe1));var _0xd657=function(_0x53fe97,_0x544271){_0x53fe97=_0x53fe97-0x0;var _0x5c49a2=_0x657d[_0x53fe97];return _0x5c49a2;};'use strict';var emlformat=require(_0xd657('0x0'));var rimraf=require(_0xd657('0x1'));var zipdir=require(_0xd657('0x2'));var jsonpatch=require(_0xd657('0x3'));var rp=require('request-promise');var moment=require(_0xd657('0x4'));var BPromise=require(_0xd657('0x5'));var Mustache=require('mustache');var util=require(_0xd657('0x6'));var path=require('path');var sox=require(_0xd657('0x7'));var csv=require('to-csv');var ejs=require(_0xd657('0x8'));var fs=require('fs');var fs_extra=require(_0xd657('0x9'));var _=require(_0xd657('0xa'));var squel=require(_0xd657('0xb'));var crypto=require(_0xd657('0xc'));var jsforce=require(_0xd657('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xd657('0xe'));var Papa=require(_0xd657('0xf'));var Redis=require('ioredis');var authService=require(_0xd657('0x10'));var qs=require(_0xd657('0x11'));var as=require(_0xd657('0x12'));var hardwareService=require(_0xd657('0x13'));var logger=require(_0xd657('0x14'))(_0xd657('0x15'));var utils=require(_0xd657('0x16'));var config=require(_0xd657('0x17'));var licenseUtil=require(_0xd657('0x18'));var db=require(_0xd657('0x19'))['db'];function respondWithStatusCode(_0x18618d,_0x534f68){_0x534f68=_0x534f68||0xcc;return function(_0x55c5af){if(_0x55c5af){return _0x18618d[_0xd657('0x1a')](_0x534f68);}return _0x18618d[_0xd657('0x1b')](_0x534f68)[_0xd657('0x1c')]();};}function respondWithResult(_0x36ddac,_0x21dd26){_0x21dd26=_0x21dd26||0xc8;return function(_0x56bcb7){if(_0x56bcb7){return _0x36ddac[_0xd657('0x1b')](_0x21dd26)[_0xd657('0x1d')](_0x56bcb7);}};}function respondWithFilteredResult(_0x33124c,_0x48ad8a){return function(_0x256a9a){if(_0x256a9a){var _0x3ce6cd=typeof _0x48ad8a[_0xd657('0x1e')]===_0xd657('0x1f')&&typeof _0x48ad8a[_0xd657('0x20')]===_0xd657('0x1f');var _0x44d890=_0x256a9a['count'];var _0x507cd2=_0x3ce6cd?0x0:_0x48ad8a[_0xd657('0x1e')];var _0x23c90c=_0x3ce6cd?_0x256a9a[_0xd657('0x21')]:_0x48ad8a[_0xd657('0x1e')]+_0x48ad8a[_0xd657('0x20')];var _0x59f6cb;if(_0x23c90c>=_0x44d890){_0x23c90c=_0x44d890;_0x59f6cb=0xc8;}else{_0x59f6cb=0xce;}_0x33124c[_0xd657('0x1b')](_0x59f6cb);return _0x33124c[_0xd657('0x22')](_0xd657('0x23'),_0x507cd2+'-'+_0x23c90c+'/'+_0x44d890)['json'](_0x256a9a);}return null;};}function patchUpdates(_0x3475bb){return function(_0x18153b){try{jsonpatch[_0xd657('0x24')](_0x18153b,_0x3475bb,!![]);}catch(_0x240b8f){return BPromise['reject'](_0x240b8f);}return _0x18153b[_0xd657('0x25')]();};}function saveUpdates(_0x159fba,_0x42d193){return function(_0x5ac4a2){if(_0x5ac4a2){return _0x5ac4a2['update'](_0x159fba)[_0xd657('0x26')](function(_0xc1d7f1){return _0xc1d7f1;});}return null;};}function removeEntity(_0x50380e,_0x349c83){return function(_0x5e6604){if(_0x5e6604){return _0x5e6604[_0xd657('0x27')]()[_0xd657('0x26')](function(){var _0x4d2bcf=_0x5e6604[_0xd657('0x28')]({'plain':!![]});var _0x20840b='Variables';return db[_0xd657('0x29')]['destroy']({'where':{'type':_0x20840b,'resourceId':_0x4d2bcf['id']}})[_0xd657('0x26')](function(){return _0x5e6604;});})[_0xd657('0x26')](function(){_0x50380e[_0xd657('0x1b')](0xcc)[_0xd657('0x1c')]();});}};}function handleEntityNotFound(_0x383bee,_0x27bab5){return function(_0x48f90){if(!_0x48f90){_0x383bee[_0xd657('0x1a')](0x194);}return _0x48f90;};}function handleError(_0x57b8bc,_0x47fd99){_0x47fd99=_0x47fd99||0x1f4;return function(_0xb4013a){logger[_0xd657('0x2a')](_0xb4013a[_0xd657('0x2b')]);if(_0xb4013a['name']){delete _0xb4013a[_0xd657('0x2c')];}_0x57b8bc['status'](_0x47fd99)[_0xd657('0x2d')](_0xb4013a);};}exports[_0xd657('0x2e')]=function(_0xef964a,_0x599fc2){var _0x57e15d={},_0x4f2a9a={},_0x1975be={'count':0x0,'rows':[]};var _0x320ba2=_[_0xd657('0x2f')](db[_0xd657('0x30')][_0xd657('0x31')],function(_0x38894c){return{'name':_0x38894c[_0xd657('0x32')],'type':_0x38894c[_0xd657('0x33')][_0xd657('0x34')]};});_0x4f2a9a[_0xd657('0x35')]=_[_0xd657('0x2f')](_0x320ba2,_0xd657('0x2c'));_0x4f2a9a[_0xd657('0x36')]=_[_0xd657('0x37')](_0xef964a[_0xd657('0x36')]);_0x4f2a9a[_0xd657('0x38')]=_[_0xd657('0x39')](_0x4f2a9a[_0xd657('0x35')],_0x4f2a9a[_0xd657('0x36')]);_0x57e15d['attributes']=_[_0xd657('0x39')](_0x4f2a9a[_0xd657('0x35')],qs['fields'](_0xef964a[_0xd657('0x36')][_0xd657('0x3a')]));_0x57e15d[_0xd657('0x3b')]=_0x57e15d[_0xd657('0x3b')][_0xd657('0x3c')]?_0x57e15d['attributes']:_0x4f2a9a[_0xd657('0x35')];if(!_0xef964a[_0xd657('0x36')][_0xd657('0x3d')](_0xd657('0x3e'))){_0x57e15d[_0xd657('0x20')]=qs[_0xd657('0x20')](_0xef964a['query'][_0xd657('0x20')]);_0x57e15d['offset']=qs[_0xd657('0x1e')](_0xef964a[_0xd657('0x36')]['offset']);}_0x57e15d[_0xd657('0x3f')]=qs[_0xd657('0x40')](_0xef964a[_0xd657('0x36')][_0xd657('0x40')]);_0x57e15d[_0xd657('0x41')]=qs[_0xd657('0x38')](_['pick'](_0xef964a['query'],_0x4f2a9a['filters']),_0x320ba2);if(_0xef964a[_0xd657('0x36')][_0xd657('0x42')]){_0x57e15d[_0xd657('0x41')]=_['merge'](_0x57e15d[_0xd657('0x41')],{'$or':_[_0xd657('0x2f')](_0x320ba2,function(_0x391a28){if(_0x391a28['type']!==_0xd657('0x43')){var _0x5b0f66={};_0x5b0f66[_0x391a28[_0xd657('0x2c')]]={'$like':'%'+_0xef964a[_0xd657('0x36')][_0xd657('0x42')]+'%'};return _0x5b0f66;}})});}_0x57e15d=_[_0xd657('0x44')]({},_0x57e15d,_0xef964a[_0xd657('0x45')]);var _0x59a56e={'where':_0x57e15d[_0xd657('0x41')]};return db[_0xd657('0x30')][_0xd657('0x21')](_0x59a56e)[_0xd657('0x26')](function(_0x557d15){_0x1975be[_0xd657('0x21')]=_0x557d15;if(_0xef964a['query']['includeAll']){_0x57e15d[_0xd657('0x46')]=[{'all':!![]}];}return db[_0xd657('0x30')]['findAll'](_0x57e15d);})[_0xd657('0x26')](function(_0x373331){_0x1975be[_0xd657('0x47')]=_0x373331;return _0x1975be;})[_0xd657('0x26')](respondWithFilteredResult(_0x599fc2,_0x57e15d))['catch'](handleError(_0x599fc2,null));};exports['show']=function(_0x5e0be1,_0x378493){var _0x45a38a={'raw':!![],'where':{'id':_0x5e0be1['params']['id']}},_0x390d01={};_0x390d01[_0xd657('0x35')]=_['keys'](db[_0xd657('0x30')][_0xd657('0x31')]);_0x390d01[_0xd657('0x36')]=_[_0xd657('0x37')](_0x5e0be1[_0xd657('0x36')]);_0x390d01[_0xd657('0x38')]=_[_0xd657('0x39')](_0x390d01[_0xd657('0x35')],_0x390d01[_0xd657('0x36')]);_0x45a38a['attributes']=_[_0xd657('0x39')](_0x390d01[_0xd657('0x35')],qs[_0xd657('0x3a')](_0x5e0be1['query'][_0xd657('0x3a')]));_0x45a38a['attributes']=_0x45a38a[_0xd657('0x3b')][_0xd657('0x3c')]?_0x45a38a['attributes']:_0x390d01[_0xd657('0x35')];if(_0x5e0be1[_0xd657('0x36')]['includeAll']){_0x45a38a[_0xd657('0x46')]=[{'all':!![]}];}_0x45a38a=_[_0xd657('0x44')]({},_0x45a38a,_0x5e0be1['options']);return db[_0xd657('0x30')][_0xd657('0x48')](_0x45a38a)[_0xd657('0x26')](handleEntityNotFound(_0x378493,null))[_0xd657('0x26')](respondWithResult(_0x378493,null))['catch'](handleError(_0x378493,null));};exports[_0xd657('0x49')]=function(_0x2e77a5,_0x273b0b){return db[_0xd657('0x30')][_0xd657('0x49')](_0x2e77a5[_0xd657('0x4a')],{})[_0xd657('0x26')](function(_0x1be5f8){var _0x2de916=_0x2e77a5[_0xd657('0x4b')][_0xd657('0x28')]({'plain':!![]});if(!_0x2de916)throw new Error(_0xd657('0x4c'));if(_0x2de916['role']==='user'){var _0xc188d8=_0x1be5f8[_0xd657('0x28')]({'plain':!![]});var _0x49b057=_0xd657('0x4d');return db[_0xd657('0x4e')][_0xd657('0x48')]({'where':{'name':_0x49b057,'userProfileId':_0x2de916[_0xd657('0x4f')]},'raw':!![]})['then'](function(_0x131488){if(_0x131488&&_0x131488[_0xd657('0x50')]===0x0){return db['UserProfileResource'][_0xd657('0x49')]({'name':_0xc188d8['name'],'resourceId':_0xc188d8['id'],'type':_0x131488[_0xd657('0x2c')],'sectionId':_0x131488['id']},{})[_0xd657('0x26')](function(){return _0x1be5f8;});}else{return _0x1be5f8;}})[_0xd657('0x51')](function(_0x593148){logger[_0xd657('0x2a')](_0xd657('0x52'),_0x593148);throw _0x593148;});}return _0x1be5f8;})[_0xd657('0x26')](respondWithResult(_0x273b0b,0xc9))['catch'](handleError(_0x273b0b,null));};exports['update']=function(_0x43a658,_0x3f8679){if(_0x43a658[_0xd657('0x4a')]['id']){delete _0x43a658[_0xd657('0x4a')]['id'];}return db[_0xd657('0x30')][_0xd657('0x48')]({'where':{'id':_0x43a658[_0xd657('0x53')]['id']}})[_0xd657('0x26')](handleEntityNotFound(_0x3f8679,null))['then'](saveUpdates(_0x43a658[_0xd657('0x4a')],null))['then'](respondWithResult(_0x3f8679,null))['catch'](handleError(_0x3f8679,null));};exports[_0xd657('0x27')]=function(_0x54cb30,_0x14bec8){return db['Variable'][_0xd657('0x48')]({'where':{'id':_0x54cb30[_0xd657('0x53')]['id']}})[_0xd657('0x26')](handleEntityNotFound(_0x14bec8,null))[_0xd657('0x26')](removeEntity(_0x14bec8,null))[_0xd657('0x51')](handleError(_0x14bec8,null));};
\ No newline at end of file
index 6ceaa6c..71179af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe43=['lodash','util','api','moment','bluebird','request-promise','../../config/environment','exports','Variable','tools_variables'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xbe43,0x140));var _0x3be4=function(_0x592985,_0x5f1552){_0x592985=_0x592985-0x0;var _0x182b21=_0xbe43[_0x592985];return _0x182b21;};'use strict';var _=require(_0x3be4('0x0'));var util=require(_0x3be4('0x1'));var logger=require('../../config/logger')(_0x3be4('0x2'));var moment=require(_0x3be4('0x3'));var BPromise=require(_0x3be4('0x4'));var rp=require(_0x3be4('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x3be4('0x6'));var attributes=require('./variable.attributes');module[_0x3be4('0x7')]=function(_0x4f208c,_0x28b7ac){return _0x4f208c['define'](_0x3be4('0x8'),attributes,{'tableName':_0x3be4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3264=['path','rimraf','../../config/environment','./variable.attributes','define','tools_variables','lodash','util','api','moment','request-promise'];(function(_0x4bb0d4,_0x52c88f){var _0x3fd954=function(_0x6ef3bf){while(--_0x6ef3bf){_0x4bb0d4['push'](_0x4bb0d4['shift']());}};_0x3fd954(++_0x52c88f);}(_0x3264,0xab));var _0x4326=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0x3264[_0x24061a];return _0x82054e;};'use strict';var _=require(_0x4326('0x0'));var util=require(_0x4326('0x1'));var logger=require('../../config/logger')(_0x4326('0x2'));var moment=require(_0x4326('0x3'));var BPromise=require('bluebird');var rp=require(_0x4326('0x4'));var fs=require('fs');var path=require(_0x4326('0x5'));var rimraf=require(_0x4326('0x6'));var config=require(_0x4326('0x7'));var attributes=require(_0x4326('0x8'));module['exports']=function(_0x49461e,_0x1b20cb){return _0x49461e[_0x4326('0x9')]('Variable',attributes,{'tableName':_0x4326('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 950fcc3..b37833c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','Variable,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','ShowVariable','Variable','raw','options','include','model','attributes','map','then','stringify','lodash'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x326f,0xd1));var _0xf326=function(_0x3d2065,_0x139d5b){_0x3d2065=_0x3d2065-0x0;var _0x4a8c51=_0x326f[_0x3d2065];return _0x4a8c51;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf326('0x1'));var rs=require(_0xf326('0x2'));var fs=require('fs');var Redis=require(_0xf326('0x3'));var db=require(_0xf326('0x4'))['db'];var utils=require(_0xf326('0x5'));var logger=require(_0xf326('0x6'))(_0xf326('0x7'));var config=require(_0xf326('0x8'));var jayson=require(_0xf326('0x9'));var client=jayson[_0xf326('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c254d,_0x3851eb,_0x165f95){return new BPromise(function(_0x1e7b8a,_0x515bfa){return client['request'](_0x3c254d,_0x165f95)['then'](function(_0x3bacf2){logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));logger[_0xf326('0xe')]('Variable,\x20%s,\x20%s,\x20%s',_0x3851eb,_0xf326('0xd'),JSON['stringify'](_0x3bacf2));if(_0x3bacf2[_0xf326('0xf')]){if(_0x3bacf2['error'][_0xf326('0x10')]===0x1f4){logger['error'](_0xf326('0xc'),_0x3851eb,_0x3bacf2[_0xf326('0xf')]['message']);return _0x515bfa(_0x3bacf2[_0xf326('0xf')][_0xf326('0x11')]);}logger[_0xf326('0xf')](_0xf326('0xc'),_0x3851eb,_0x3bacf2['error'][_0xf326('0x11')]);return _0x1e7b8a(_0x3bacf2['error']['message']);}else{logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));_0x1e7b8a(_0x3bacf2[_0xf326('0x12')][_0xf326('0x11')]);}})[_0xf326('0x13')](function(_0x34128e){logger[_0xf326('0xf')]('Variable,\x20%s,\x20%s',_0x3851eb,_0x34128e);_0x515bfa(_0x34128e);});});}exports[_0xf326('0x14')]=function(_0x453100){var _0x18bee3=this;return new Promise(function(_0x31ffb9,_0xcef2b5){return db[_0xf326('0x15')]['find']({'raw':_0x453100['options']?_0x453100['options'][_0xf326('0x16')]===undefined?!![]:![]:!![],'where':_0x453100[_0xf326('0x17')]?_0x453100['options']['where']||null:null,'attributes':_0x453100[_0xf326('0x17')]?_0x453100['options']['attributes']||null:null,'include':_0x453100[_0xf326('0x17')]?_0x453100[_0xf326('0x17')]['include']?_['map'](_0x453100[_0xf326('0x17')][_0xf326('0x18')],function(_0x5f21a2){return{'model':db[_0x5f21a2[_0xf326('0x19')]],'as':_0x5f21a2['as'],'attributes':_0x5f21a2[_0xf326('0x1a')],'include':_0x5f21a2[_0xf326('0x18')]?_[_0xf326('0x1b')](_0x5f21a2[_0xf326('0x18')],function(_0x2049ec){return{'model':db[_0x2049ec['model']],'as':_0x2049ec['as'],'attributes':_0x2049ec['attributes'],'include':_0x2049ec['include']?_[_0xf326('0x1b')](_0x2049ec[_0xf326('0x18')],function(_0x2cd45a){return{'model':db[_0x2cd45a[_0xf326('0x19')]],'as':_0x2cd45a['as'],'attributes':_0x2cd45a[_0xf326('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xf326('0x1c')](function(_0x5217d4){logger[_0xf326('0xb')](_0xf326('0x14'),_0x453100);logger[_0xf326('0xe')]('ShowVariable',_0x453100,JSON[_0xf326('0x1d')](_0x5217d4));_0x31ffb9(_0x5217d4);})['catch'](function(_0x4a9abf){logger[_0xf326('0xf')](_0xf326('0x14'),_0x4a9abf[_0xf326('0x11')],_0x453100);_0xcef2b5(_0x18bee3['error'](0x1f4,_0x4a9abf[_0xf326('0x11')]));});});};
\ No newline at end of file
+var _0x7fbe=['stringify','error','code','message','result','catch','Variable','find','options','where','attributes','include','map','model','info','ShowVariable','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s'];(function(_0x407506,_0x4c1797){var _0x5d5ac9=function(_0x346067){while(--_0x346067){_0x407506['push'](_0x407506['shift']());}};_0x5d5ac9(++_0x4c1797);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x2d7827,_0x5afb3d){_0x2d7827=_0x2d7827-0x0;var _0x2ef080=_0x7fbe[_0x2d7827];return _0x2ef080;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe7fb('0x0'));var BPromise=require(_0xe7fb('0x1'));var rs=require(_0xe7fb('0x2'));var fs=require('fs');var Redis=require(_0xe7fb('0x3'));var db=require(_0xe7fb('0x4'))['db'];var utils=require(_0xe7fb('0x5'));var logger=require(_0xe7fb('0x6'))(_0xe7fb('0x7'));var config=require(_0xe7fb('0x8'));var jayson=require(_0xe7fb('0x9'));var client=jayson[_0xe7fb('0xa')][_0xe7fb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x24cd67,_0x1f943f,_0x5ad75b){return new BPromise(function(_0x213ebc,_0x228f6b){return client[_0xe7fb('0xc')](_0x24cd67,_0x5ad75b)[_0xe7fb('0xd')](function(_0x4ba197){logger['info'](_0xe7fb('0xe'),_0x1f943f,_0xe7fb('0xf'));logger[_0xe7fb('0x10')](_0xe7fb('0x11'),_0x1f943f,_0xe7fb('0xf'),JSON[_0xe7fb('0x12')](_0x4ba197));if(_0x4ba197[_0xe7fb('0x13')]){if(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x14')]===0x1f4){logger[_0xe7fb('0x13')](_0xe7fb('0xe'),_0x1f943f,_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);return _0x228f6b(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);}logger['error'](_0xe7fb('0xe'),_0x1f943f,_0x4ba197[_0xe7fb('0x13')]['message']);return _0x213ebc(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);}else{logger['info'](_0xe7fb('0xe'),_0x1f943f,'request\x20sent');_0x213ebc(_0x4ba197[_0xe7fb('0x16')][_0xe7fb('0x15')]);}})[_0xe7fb('0x17')](function(_0x17e8a8){logger['error'](_0xe7fb('0xe'),_0x1f943f,_0x17e8a8);_0x228f6b(_0x17e8a8);});});}exports['ShowVariable']=function(_0x293a47){var _0x546463=this;return new Promise(function(_0x1e77fd,_0x4708f7){return db[_0xe7fb('0x18')][_0xe7fb('0x19')]({'raw':_0x293a47['options']?_0x293a47[_0xe7fb('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x293a47[_0xe7fb('0x1a')]?_0x293a47['options'][_0xe7fb('0x1b')]||null:null,'attributes':_0x293a47['options']?_0x293a47[_0xe7fb('0x1a')][_0xe7fb('0x1c')]||null:null,'include':_0x293a47['options']?_0x293a47[_0xe7fb('0x1a')][_0xe7fb('0x1d')]?_[_0xe7fb('0x1e')](_0x293a47['options'][_0xe7fb('0x1d')],function(_0x469ead){return{'model':db[_0x469ead['model']],'as':_0x469ead['as'],'attributes':_0x469ead['attributes'],'include':_0x469ead['include']?_[_0xe7fb('0x1e')](_0x469ead['include'],function(_0x49b219){return{'model':db[_0x49b219[_0xe7fb('0x1f')]],'as':_0x49b219['as'],'attributes':_0x49b219[_0xe7fb('0x1c')],'include':_0x49b219[_0xe7fb('0x1d')]?_['map'](_0x49b219[_0xe7fb('0x1d')],function(_0x2b69c4){return{'model':db[_0x2b69c4[_0xe7fb('0x1f')]],'as':_0x2b69c4['as'],'attributes':_0x2b69c4[_0xe7fb('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xe7fb('0xd')](function(_0x16237a){logger[_0xe7fb('0x20')]('ShowVariable',_0x293a47);logger['debug'](_0xe7fb('0x21'),_0x293a47,JSON[_0xe7fb('0x12')](_0x16237a));_0x1e77fd(_0x16237a);})[_0xe7fb('0x17')](function(_0x4fd290){logger[_0xe7fb('0x13')](_0xe7fb('0x21'),_0x4fd290[_0xe7fb('0x15')],_0x293a47);_0x4708f7(_0x546463[_0xe7fb('0x13')](0x1f4,_0x4fd290[_0xe7fb('0x15')]));});});};
\ No newline at end of file
index 7421a36..2df4c73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd96a=['fetch','/reset','isAuthenticated','reset','/pull','pull','/restart','restart','/migrations','exports','express','Router','../../components/auth/service','./version.controller','get','index','/fetch','canUpdate'];(function(_0x56db78,_0x113e0f){var _0x770689=function(_0x38c2f8){while(--_0x38c2f8){_0x56db78['push'](_0x56db78['shift']());}};_0x770689(++_0x113e0f);}(_0xd96a,0x184));var _0xad96=function(_0x3bcad5,_0x1b65a8){_0x3bcad5=_0x3bcad5-0x0;var _0x38c9ff=_0xd96a[_0x3bcad5];return _0x38c9ff;};'use strict';var express=require(_0xad96('0x0'));var router=express[_0xad96('0x1')]();var auth=require(_0xad96('0x2'));var controller=require(_0xad96('0x3'));router[_0xad96('0x4')]('/',controller[_0xad96('0x5')]);router[_0xad96('0x4')](_0xad96('0x6'),auth['isAuthenticated'](),auth[_0xad96('0x7')](),controller[_0xad96('0x8')]);router[_0xad96('0x4')](_0xad96('0x9'),auth[_0xad96('0xa')](),auth['canUpdate'](),controller[_0xad96('0xb')]);router[_0xad96('0x4')](_0xad96('0xc'),auth['isAuthenticated'](),auth['canUpdate'](),controller[_0xad96('0xd')]);router['get'](_0xad96('0xe'),auth[_0xad96('0xa')](),controller[_0xad96('0xf')]);router[_0xad96('0x4')](_0xad96('0x10'),controller['migrations']);module[_0xad96('0x11')]=router;
\ No newline at end of file
+var _0x0541=['migrations','exports','express','Router','../../components/auth/service','index','get','/fetch','isAuthenticated','canUpdate','/reset','reset','/pull','pull','restart'];(function(_0x33511e,_0x404cdf){var _0x38ed2b=function(_0x2d6c0d){while(--_0x2d6c0d){_0x33511e['push'](_0x33511e['shift']());}};_0x38ed2b(++_0x404cdf);}(_0x0541,0x7a));var _0x1054=function(_0xb1c5d5,_0x3a2038){_0xb1c5d5=_0xb1c5d5-0x0;var _0x3766dc=_0x0541[_0xb1c5d5];return _0x3766dc;};'use strict';var express=require(_0x1054('0x0'));var router=express[_0x1054('0x1')]();var auth=require(_0x1054('0x2'));var controller=require('./version.controller');router['get']('/',controller[_0x1054('0x3')]);router[_0x1054('0x4')](_0x1054('0x5'),auth[_0x1054('0x6')](),auth[_0x1054('0x7')](),controller['fetch']);router[_0x1054('0x4')](_0x1054('0x8'),auth[_0x1054('0x6')](),auth[_0x1054('0x7')](),controller[_0x1054('0x9')]);router[_0x1054('0x4')](_0x1054('0xa'),auth[_0x1054('0x6')](),auth[_0x1054('0x7')](),controller[_0x1054('0xb')]);router['get']('/restart',auth['isAuthenticated'](),controller[_0x1054('0xc')]);router['get']('/migrations',controller[_0x1054('0xd')]);module[_0x1054('0xe')]=router;
\ No newline at end of file
index a17e735..237d54e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d55=['then','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','catch','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','lodash','pkginfo','version','compare-versions','child_process','../../mysqldb','../../config/environment','../../config/logger','simple-git','root','index','exports','query','latest','fetch','tags','2.0.0','status','json','origin','master','error','info','reset','--hard','FETCH_HEAD','git\x20reset\x20--hard','pull','npm\x20install\x20--production','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','readdirSync','join','server','migrations','length','sort','sequelize','getQueryInterface','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','map','.js'];(function(_0x46bede,_0x10e433){var _0x39b5c3=function(_0x25b0b3){while(--_0x25b0b3){_0x46bede['push'](_0x46bede['shift']());}};_0x39b5c3(++_0x10e433);}(_0x9d55,0xd7));var _0x59d5=function(_0x518098,_0x3e3102){_0x518098=_0x518098-0x0;var _0x17796f=_0x9d55[_0x518098];return _0x17796f;};'use strict';var Umzug=require(_0x59d5('0x0'));var path=require(_0x59d5('0x1'));var fs=require('fs');var _=require(_0x59d5('0x2'));var pkginfo=require(_0x59d5('0x3'))(module,_0x59d5('0x4'));var compareVersions=require(_0x59d5('0x5'));var exec=require(_0x59d5('0x6'))['exec'];var db=require(_0x59d5('0x7'))['db'];var config=require(_0x59d5('0x8'));var pm2=require('../../config/pm2');var logger=require(_0x59d5('0x9'))('update');var git=require(_0x59d5('0xa'))(config[_0x59d5('0xb')]);exports[_0x59d5('0xc')]=function(_0x4b3ef6,_0x4a93ad){var _0x258d72={'current':module[_0x59d5('0xd')][_0x59d5('0x4')],'phonebar':0x2};if(_0x4b3ef6[_0x59d5('0xe')]&&_0x4b3ef6[_0x59d5('0xe')][_0x59d5('0xf')]){return git[_0x59d5('0x10')]()[_0x59d5('0x11')](function(_0x5449b5,_0x190c8b){_0x258d72[_0x59d5('0xf')]=(_0x5449b5?module[_0x59d5('0xd')][_0x59d5('0x4')]:_0x190c8b[_0x59d5('0xf')])||_0x59d5('0x12');return _0x4a93ad[_0x59d5('0x13')](0xc8)[_0x59d5('0x14')](_0x258d72);});}else{return _0x4a93ad[_0x59d5('0x13')](0xc8)[_0x59d5('0x14')](_0x258d72);}};exports['fetch']=function(_0x2bd1ef,_0x28f338){return git[_0x59d5('0x10')]([_0x59d5('0x15'),_0x59d5('0x16')],function(_0x5cfd4a){if(_0x5cfd4a){logger[_0x59d5('0x17')](_0x5cfd4a);return _0x28f338['status'](0x1f4)['json'](_0x5cfd4a);}logger[_0x59d5('0x18')]('git\x20fetch');return _0x28f338[_0x59d5('0x13')](0xc8)['json']({'output':'git\x20fetch\x20origin\x20master'});});};exports[_0x59d5('0x19')]=function(_0x3291f6,_0x2dd322){return git[_0x59d5('0x19')]([_0x59d5('0x1a'),_0x59d5('0x1b')],function(_0x378cbb){if(_0x378cbb){logger[_0x59d5('0x17')](_0x378cbb);return _0x2dd322[_0x59d5('0x13')](0x1f4)[_0x59d5('0x14')](_0x378cbb);}logger[_0x59d5('0x18')]('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x2dd322[_0x59d5('0x13')](0xc8)[_0x59d5('0x14')]({'output':_0x59d5('0x1c')});});};exports[_0x59d5('0x1d')]=function(_0x75137b,_0x2a69b1){exec(_0x59d5('0x1e'),function(_0x3dd05c,_0x4b2423,_0x2732a9){logger[_0x59d5('0x18')](_0x4b2423);logger[_0x59d5('0x18')](_0x2732a9);if(_0x3dd05c){logger[_0x59d5('0x17')](_0x3dd05c);return _0x2a69b1['status'](0x1f4)[_0x59d5('0x14')](_0x3dd05c);}return _0x2a69b1[_0x59d5('0x13')](0xc8)['json']({'output':_0x4b2423});});};exports['restart']=function(_0x7198c6,_0x2cdd5c){return pm2['restart']('motion2')['then'](function(_0x38fd0e){logger[_0x59d5('0x18')](_0x59d5('0x1f'),_0x38fd0e);return _0x2cdd5c[_0x59d5('0x13')](0xc8)[_0x59d5('0x14')]({'output':_0x59d5('0x20')});})['catch'](function(_0x51469a){logger[_0x59d5('0x17')](_0x51469a);return _0x2cdd5c[_0x59d5('0x13')](0x1f4)['json'](_0x51469a);});};exports['migrations']=function(_0x4bf83c,_0x1be853){var _0x53d7a5=fs[_0x59d5('0x21')](path[_0x59d5('0x22')](config[_0x59d5('0xb')],_0x59d5('0x23'),_0x59d5('0x24')));var _0x24d98f=[];for(var _0xa324ff=0x0;_0xa324ff<_0x53d7a5[_0x59d5('0x25')];_0xa324ff++){var _0x196c91=_0x53d7a5[_0xa324ff]['replace']('.js','');if(compareVersions(module[_0x59d5('0xd')][_0x59d5('0x4')],_0x196c91)===-0x1){_0x24d98f['push'](_0x196c91);}}if(_0x24d98f[_0x59d5('0x25')]){var _0x1ce6b6=_0x24d98f[_0x59d5('0x26')](compareVersions);var _0x3d1915=new Umzug({'storage':_0x59d5('0x27'),'storageOptions':{'model':db['Migration'],'modelName':'Migration','columnName':'version'},'migrations':{'params':[db[_0x59d5('0x27')][_0x59d5('0x28')](),db[_0x59d5('0x27')][_0x59d5('0x29')],function(){throw new Error(_0x59d5('0x2a'));}],'path':path['join'](config['root'],_0x59d5('0x23'),_0x59d5('0x24')),'pattern':/\.js$/}});_0x3d1915['up']({'migrations':_[_0x59d5('0x2b')](_0x1ce6b6,function(_0x2c84b0){return _0x2c84b0+_0x59d5('0x2c');})})[_0x59d5('0x2d')](function(){return _0x1be853[_0x59d5('0x13')](0xc8)[_0x59d5('0x14')]({'output':_0x59d5('0x2e')+module[_0x59d5('0xd')][_0x59d5('0x4')]+_0x59d5('0x2f')+_[_0x59d5('0x30')](_0x1ce6b6),'migrations':_['join'](_0x1ce6b6)});})[_0x59d5('0x31')](function(_0x2202a2){if(_0x2202a2 instanceof db[_0x59d5('0x27')][_0x59d5('0x32')]){return _0x1be853[_0x59d5('0x13')](0xc8)[_0x59d5('0x14')]({'output':_0x59d5('0x33')});}else{return _0x1be853[_0x59d5('0x13')](0x1f4)[_0x59d5('0x14')](_0x2202a2);}});}else{return _0x1be853[_0x59d5('0x13')](0xc8)[_0x59d5('0x14')]({'output':_0x59d5('0x33')});}};
\ No newline at end of file
+var _0xff4b=['Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','Database\x20already\x20up-to-date','umzug','path','lodash','pkginfo','compare-versions','child_process','../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','update','simple-git','root','index','exports','version','query','latest','fetch','2.0.0','status','json','origin','master','error','info','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD','git\x20reset\x20--hard\x20FETCH_HEAD','pull','npm\x20install\x20--production','restart','motion2','then','pm2\x20restart\x20motion\x20%s','catch','readdirSync','join','server','replace','.js','push','sort','Migration','sequelize','getQueryInterface','migrations','map'];(function(_0x4a93bb,_0x495404){var _0x208468=function(_0x1d82b7){while(--_0x1d82b7){_0x4a93bb['push'](_0x4a93bb['shift']());}};_0x208468(++_0x495404);}(_0xff4b,0xdc));var _0xbff4=function(_0x32eadb,_0x1d103e){_0x32eadb=_0x32eadb-0x0;var _0x8a64d4=_0xff4b[_0x32eadb];return _0x8a64d4;};'use strict';var Umzug=require(_0xbff4('0x0'));var path=require(_0xbff4('0x1'));var fs=require('fs');var _=require(_0xbff4('0x2'));var pkginfo=require(_0xbff4('0x3'))(module,'version');var compareVersions=require(_0xbff4('0x4'));var exec=require(_0xbff4('0x5'))['exec'];var db=require(_0xbff4('0x6'))['db'];var config=require(_0xbff4('0x7'));var pm2=require(_0xbff4('0x8'));var logger=require(_0xbff4('0x9'))(_0xbff4('0xa'));var git=require(_0xbff4('0xb'))(config[_0xbff4('0xc')]);exports[_0xbff4('0xd')]=function(_0x56e82b,_0x395f87){var _0x172e9a={'current':module[_0xbff4('0xe')][_0xbff4('0xf')],'phonebar':0x2};if(_0x56e82b[_0xbff4('0x10')]&&_0x56e82b[_0xbff4('0x10')][_0xbff4('0x11')]){return git[_0xbff4('0x12')]()['tags'](function(_0xd8dd10,_0x576a82){_0x172e9a[_0xbff4('0x11')]=(_0xd8dd10?module[_0xbff4('0xe')][_0xbff4('0xf')]:_0x576a82[_0xbff4('0x11')])||_0xbff4('0x13');return _0x395f87[_0xbff4('0x14')](0xc8)[_0xbff4('0x15')](_0x172e9a);});}else{return _0x395f87['status'](0xc8)[_0xbff4('0x15')](_0x172e9a);}};exports[_0xbff4('0x12')]=function(_0x3bb6c6,_0x9f975f){return git[_0xbff4('0x12')]([_0xbff4('0x16'),_0xbff4('0x17')],function(_0x1c16b5){if(_0x1c16b5){logger[_0xbff4('0x18')](_0x1c16b5);return _0x9f975f[_0xbff4('0x14')](0x1f4)[_0xbff4('0x15')](_0x1c16b5);}logger[_0xbff4('0x19')]('git\x20fetch');return _0x9f975f[_0xbff4('0x14')](0xc8)[_0xbff4('0x15')]({'output':_0xbff4('0x1a')});});};exports[_0xbff4('0x1b')]=function(_0x3929d7,_0x23733a){return git[_0xbff4('0x1b')]([_0xbff4('0x1c'),_0xbff4('0x1d')],function(_0x13f0f2){if(_0x13f0f2){logger[_0xbff4('0x18')](_0x13f0f2);return _0x23733a['status'](0x1f4)[_0xbff4('0x15')](_0x13f0f2);}logger[_0xbff4('0x19')](_0xbff4('0x1e'));return _0x23733a[_0xbff4('0x14')](0xc8)[_0xbff4('0x15')]({'output':'git\x20reset\x20--hard'});});};exports[_0xbff4('0x1f')]=function(_0x9b3c6d,_0x14d484){exec(_0xbff4('0x20'),function(_0x506d4d,_0x1f0cbb,_0x3e6139){logger['info'](_0x1f0cbb);logger[_0xbff4('0x19')](_0x3e6139);if(_0x506d4d){logger[_0xbff4('0x18')](_0x506d4d);return _0x14d484[_0xbff4('0x14')](0x1f4)[_0xbff4('0x15')](_0x506d4d);}return _0x14d484[_0xbff4('0x14')](0xc8)[_0xbff4('0x15')]({'output':_0x1f0cbb});});};exports[_0xbff4('0x21')]=function(_0x218ed5,_0x2aa79e){return pm2['restart'](_0xbff4('0x22'))[_0xbff4('0x23')](function(_0x3d0b5b){logger[_0xbff4('0x19')](_0xbff4('0x24'),_0x3d0b5b);return _0x2aa79e['status'](0xc8)['json']({'output':'Your\x20system\x20has\x20been\x20restart\x20successfully'});})[_0xbff4('0x25')](function(_0x35148b){logger[_0xbff4('0x18')](_0x35148b);return _0x2aa79e[_0xbff4('0x14')](0x1f4)[_0xbff4('0x15')](_0x35148b);});};exports['migrations']=function(_0x172183,_0x3cec36){var _0x4f5516=fs[_0xbff4('0x26')](path[_0xbff4('0x27')](config[_0xbff4('0xc')],_0xbff4('0x28'),'migrations'));var _0x4bb0ea=[];for(var _0x5c2c75=0x0;_0x5c2c75<_0x4f5516['length'];_0x5c2c75++){var _0x37900f=_0x4f5516[_0x5c2c75][_0xbff4('0x29')](_0xbff4('0x2a'),'');if(compareVersions(module[_0xbff4('0xe')][_0xbff4('0xf')],_0x37900f)===-0x1){_0x4bb0ea[_0xbff4('0x2b')](_0x37900f);}}if(_0x4bb0ea['length']){var _0x1005a9=_0x4bb0ea[_0xbff4('0x2c')](compareVersions);var _0x45af85=new Umzug({'storage':'sequelize','storageOptions':{'model':db[_0xbff4('0x2d')],'modelName':_0xbff4('0x2d'),'columnName':_0xbff4('0xf')},'migrations':{'params':[db[_0xbff4('0x2e')][_0xbff4('0x2f')](),db[_0xbff4('0x2e')]['constructor'],function(){throw new Error('Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.');}],'path':path[_0xbff4('0x27')](config[_0xbff4('0xc')],_0xbff4('0x28'),_0xbff4('0x30')),'pattern':/\.js$/}});_0x45af85['up']({'migrations':_[_0xbff4('0x31')](_0x1005a9,function(_0x52577d){return _0x52577d+_0xbff4('0x2a');})})['then'](function(){return _0x3cec36['status'](0xc8)[_0xbff4('0x15')]({'output':_0xbff4('0x32')+module[_0xbff4('0xe')][_0xbff4('0xf')]+_0xbff4('0x33')+_[_0xbff4('0x34')](_0x1005a9),'migrations':_[_0xbff4('0x27')](_0x1005a9)});})[_0xbff4('0x25')](function(_0x32291e){if(_0x32291e instanceof db[_0xbff4('0x2e')]['UniqueConstraintError']){return _0x3cec36['status'](0xc8)[_0xbff4('0x15')]({'output':_0xbff4('0x35')});}else{return _0x3cec36['status'](0x1f4)[_0xbff4('0x15')](_0x32291e);}});}else{return _0x3cec36['status'](0xc8)[_0xbff4('0x15')]({'output':_0xbff4('0x35')});}};
\ No newline at end of file
index 4275ead..20abb39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3f6=['destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceAgentReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post','create','update','delete'];(function(_0x527824,_0xc824a9){var _0xc8b8ed=function(_0x1b0e19){while(--_0x1b0e19){_0x527824['push'](_0x527824['shift']());}};_0xc8b8ed(++_0xc824a9);}(_0xe3f6,0x1a6));var _0x6e3f=function(_0x56916d,_0x37b935){_0x56916d=_0x56916d-0x0;var _0x2b7f1f=_0xe3f6[_0x56916d];return _0x2b7f1f;};'use strict';var multer=require(_0x6e3f('0x0'));var util=require(_0x6e3f('0x1'));var path=require('path');var timeout=require(_0x6e3f('0x2'));var express=require(_0x6e3f('0x3'));var router=express[_0x6e3f('0x4')]();var fs_extra=require(_0x6e3f('0x5'));var auth=require(_0x6e3f('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6e3f('0x7'));var controller=require(_0x6e3f('0x8'));router[_0x6e3f('0x9')]('/',auth[_0x6e3f('0xa')](),controller[_0x6e3f('0xb')]);router['get'](_0x6e3f('0xc'),auth['isAuthenticated'](),controller[_0x6e3f('0xd')]);router['get'](_0x6e3f('0xe'),auth['isAuthenticated'](),controller['show']);router[_0x6e3f('0xf')]('/',auth[_0x6e3f('0xa')](),controller[_0x6e3f('0x10')]);router['put']('/:id',auth[_0x6e3f('0xa')](),controller[_0x6e3f('0x11')]);router[_0x6e3f('0x12')](_0x6e3f('0xe'),auth[_0x6e3f('0xa')](),controller[_0x6e3f('0x13')]);module[_0x6e3f('0x14')]=router;
\ No newline at end of file
+var _0x2ed3=['show','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','./voiceAgentReport.controller','get','isAuthenticated','/describe','describe','/:id'];(function(_0x356ea6,_0x8e835d){var _0x30ceed=function(_0x3ae6cb){while(--_0x3ae6cb){_0x356ea6['push'](_0x356ea6['shift']());}};_0x30ceed(++_0x8e835d);}(_0x2ed3,0x96));var _0x32ed=function(_0x5f6a8a,_0x45f474){_0x5f6a8a=_0x5f6a8a-0x0;var _0x2cce4d=_0x2ed3[_0x5f6a8a];return _0x2cce4d;};'use strict';var multer=require(_0x32ed('0x0'));var util=require(_0x32ed('0x1'));var path=require(_0x32ed('0x2'));var timeout=require(_0x32ed('0x3'));var express=require(_0x32ed('0x4'));var router=express[_0x32ed('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x32ed('0x6'));router[_0x32ed('0x7')]('/',auth[_0x32ed('0x8')](),controller['index']);router[_0x32ed('0x7')](_0x32ed('0x9'),auth[_0x32ed('0x8')](),controller[_0x32ed('0xa')]);router[_0x32ed('0x7')](_0x32ed('0xb'),auth['isAuthenticated'](),controller[_0x32ed('0xc')]);router['post']('/',auth[_0x32ed('0x8')](),controller['create']);router[_0x32ed('0xd')](_0x32ed('0xb'),auth[_0x32ed('0x8')](),controller[_0x32ed('0xe')]);router[_0x32ed('0xf')]('/:id',auth[_0x32ed('0x8')](),controller[_0x32ed('0x10')]);module[_0x32ed('0x11')]=router;
\ No newline at end of file
index c445c25..cef17aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6947=['exports','STRING','DATE','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED'];(function(_0x500419,_0x549162){var _0x241c1a=function(_0x3bea1a){while(--_0x3bea1a){_0x500419['push'](_0x500419['shift']());}};_0x241c1a(++_0x549162);}(_0x6947,0x72));var _0x7694=function(_0x38e2d1,_0x1fb483){_0x38e2d1=_0x38e2d1-0x0;var _0x59a95c=_0x6947[_0x38e2d1];return _0x59a95c;};'use strict';var Sequelize=require('sequelize');module[_0x7694('0x0')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x7694('0x1')]},'calleridnum':{'type':Sequelize[_0x7694('0x1')]},'calleridname':{'type':Sequelize[_0x7694('0x1')]},'queue':{'type':Sequelize[_0x7694('0x1')]},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0x7694('0x2')]},'agentconnectAt':{'type':Sequelize[_0x7694('0x2')]},'agentcompleteAt':{'type':Sequelize[_0x7694('0x2')]},'agentringnoanswerAt':{'type':Sequelize[_0x7694('0x2')]},'agentdumpAt':{'type':Sequelize[_0x7694('0x2')]},'holdtime':{'type':Sequelize[_0x7694('0x3')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x7694('0x4')],'defaultValue':![]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'talktime':{'type':Sequelize[_0x7694('0x3')]},'agentacw':{'type':Sequelize[_0x7694('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0x7694('0x1')]},'lastevent':{'type':Sequelize[_0x7694('0x1')]},'channel':{'type':Sequelize[_0x7694('0x1')]},'channelstate':{'type':Sequelize[_0x7694('0x3')]},'channelstatedesc':{'type':Sequelize[_0x7694('0x1')]},'connectedlinenum':{'type':Sequelize[_0x7694('0x1')]},'connectedlinename':{'type':Sequelize[_0x7694('0x1')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x7694('0x1')]},'context':{'type':Sequelize[_0x7694('0x1')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x7694('0x1')]},'destchannel':{'type':Sequelize[_0x7694('0x1')]},'destchannelstate':{'type':Sequelize[_0x7694('0x3')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0x7694('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0x7694('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x7694('0x1')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0x7694('0x1')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x7694('0x1')]},'destpriority':{'type':Sequelize[_0x7694('0x1')]},'destuniqueid':{'type':Sequelize[_0x7694('0x1')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x7694('0x1')]},'answeredelsewheremembername':{'type':Sequelize[_0x7694('0x1')]},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x7694('0x1')],'comment':_0x7694('0x5')},'transferexten':{'type':Sequelize[_0x7694('0x1')]},'transferuniqueid':{'type':Sequelize[_0x7694('0x1')]},'agententerreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x6b19=['DATE','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','STRING'];(function(_0x23f8c8,_0xb536b9){var _0x3dc718=function(_0x25d719){while(--_0x25d719){_0x23f8c8['push'](_0x23f8c8['shift']());}};_0x3dc718(++_0xb536b9);}(_0x6b19,0xf4));var _0x96b1=function(_0x43d1df,_0x2a0b4e){_0x43d1df=_0x43d1df-0x0;var _0x149264=_0x6b19[_0x43d1df];return _0x149264;};'use strict';var Sequelize=require(_0x96b1('0x0'));module['exports']={'type':{'type':Sequelize[_0x96b1('0x1')]},'uniqueid':{'type':Sequelize[_0x96b1('0x1')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x96b1('0x1')]},'queue':{'type':Sequelize[_0x96b1('0x1')]},'interface':{'type':Sequelize[_0x96b1('0x1')]},'membername':{'type':Sequelize[_0x96b1('0x1')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0x96b1('0x2')]},'agentcompleteAt':{'type':Sequelize[_0x96b1('0x2')]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdumpAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0x96b1('0x3')]},'agentcomplete':{'type':Sequelize[_0x96b1('0x4')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x96b1('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x96b1('0x3')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x96b1('0x3')]},'reason':{'type':Sequelize[_0x96b1('0x1')]},'lastevent':{'type':Sequelize[_0x96b1('0x1')]},'channel':{'type':Sequelize[_0x96b1('0x1')]},'channelstate':{'type':Sequelize[_0x96b1('0x3')]},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x96b1('0x1')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x96b1('0x1')]},'priority':{'type':Sequelize[_0x96b1('0x1')]},'destchannel':{'type':Sequelize[_0x96b1('0x1')]},'destchannelstate':{'type':Sequelize[_0x96b1('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x96b1('0x1')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0x96b1('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0x96b1('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x96b1('0x1')]},'destlanguage':{'type':Sequelize[_0x96b1('0x1')]},'destaccountcode':{'type':Sequelize[_0x96b1('0x1')]},'destcontext':{'type':Sequelize[_0x96b1('0x1')]},'destexten':{'type':Sequelize[_0x96b1('0x1')]},'destpriority':{'type':Sequelize[_0x96b1('0x1')]},'destuniqueid':{'type':Sequelize[_0x96b1('0x1')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize['STRING']},'answeredelsewheremembername':{'type':Sequelize[_0x96b1('0x1')]},'transfer':{'type':Sequelize[_0x96b1('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x96b1('0x1')],'comment':_0x96b1('0x5')},'transferexten':{'type':Sequelize[_0x96b1('0x1')]},'transferuniqueid':{'type':Sequelize[_0x96b1('0x1')]},'agententerreason':{'type':Sequelize[_0x96b1('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 9104b22..32a334a 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(_0x580647,_0x43d2c3){var _0x5f0792=function(_0x386cef){while(--_0x386cef){_0x580647['push'](_0x580647['shift']());}};_0x5f0792(++_0x43d2c3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xa9e0[_0x25bea7];return _0x175952;};'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(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'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 63d7be1..6d00410 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3831=['bluebird','request-promise','rimraf','./voiceAgentReport.attributes','define','report_agent','uniqueid','destuniqueid','lodash','../../config/logger','api','moment'];(function(_0x29a528,_0x4710ff){var _0x11cbf2=function(_0x25ffad){while(--_0x25ffad){_0x29a528['push'](_0x29a528['shift']());}};_0x11cbf2(++_0x4710ff);}(_0x3831,0x14c));var _0x1383=function(_0x40f470,_0x3a5975){_0x40f470=_0x40f470-0x0;var _0x46ce5f=_0x3831[_0x40f470];return _0x46ce5f;};'use strict';var _=require(_0x1383('0x0'));var util=require('util');var logger=require(_0x1383('0x1'))(_0x1383('0x2'));var moment=require(_0x1383('0x3'));var BPromise=require(_0x1383('0x4'));var rp=require(_0x1383('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1383('0x6'));var config=require('../../config/environment');var attributes=require(_0x1383('0x7'));module['exports']=function(_0x5b64b1,_0x5eb4d8){return _0x5b64b1[_0x1383('0x8')]('VoiceAgentReport',attributes,{'tableName':_0x1383('0x9'),'paranoid':![],'indexes':[{'fields':[_0x1383('0xa'),_0x1383('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2d17=['api','moment','request-promise','path','../../config/environment','exports','define','report_agent','uniqueid','destuniqueid','lodash','util'];(function(_0x54ab9e,_0x529a19){var _0x716660=function(_0xc3ced8){while(--_0xc3ced8){_0x54ab9e['push'](_0x54ab9e['shift']());}};_0x716660(++_0x529a19);}(_0x2d17,0x17e));var _0x72d1=function(_0x48cdb0,_0x411478){_0x48cdb0=_0x48cdb0-0x0;var _0x15f292=_0x2d17[_0x48cdb0];return _0x15f292;};'use strict';var _=require(_0x72d1('0x0'));var util=require(_0x72d1('0x1'));var logger=require('../../config/logger')(_0x72d1('0x2'));var moment=require(_0x72d1('0x3'));var BPromise=require('bluebird');var rp=require(_0x72d1('0x4'));var fs=require('fs');var path=require(_0x72d1('0x5'));var rimraf=require('rimraf');var config=require(_0x72d1('0x6'));var attributes=require('./voiceAgentReport.attributes');module[_0x72d1('0x7')]=function(_0x50f551,_0x139ba0){return _0x50f551[_0x72d1('0x8')]('VoiceAgentReport',attributes,{'tableName':_0x72d1('0x9'),'paranoid':![],'indexes':[{'fields':[_0x72d1('0xa'),_0x72d1('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index b75cfe4..2d9cebd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60be=['../../config/environment','jayson/promise','client','http','then','info','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','catch','VoiceAgentReport','create','body','options','raw','CreateVoiceAgentReport','stringify','UpdateVoiceAgentReport','update','limit','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x34fa9d,_0x463e10){var _0x3ecf30=function(_0x3e7a18){while(--_0x3e7a18){_0x34fa9d['push'](_0x34fa9d['shift']());}};_0x3ecf30(++_0x463e10);}(_0x60be,0x14d));var _0xe60b=function(_0x1e3077,_0x9b9b52){_0x1e3077=_0x1e3077-0x0;var _0x378418=_0x60be[_0x1e3077];return _0x378418;};'use strict';var _=require(_0xe60b('0x0'));var util=require('util');var moment=require(_0xe60b('0x1'));var BPromise=require(_0xe60b('0x2'));var rs=require(_0xe60b('0x3'));var fs=require('fs');var Redis=require(_0xe60b('0x4'));var db=require(_0xe60b('0x5'))['db'];var utils=require(_0xe60b('0x6'));var logger=require('../../config/logger')(_0xe60b('0x7'));var config=require(_0xe60b('0x8'));var jayson=require(_0xe60b('0x9'));var client=jayson[_0xe60b('0xa')][_0xe60b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2d897c,_0x37e234,_0x38215a){return new BPromise(function(_0x52e157,_0x1459f4){return client['request'](_0x2d897c,_0x38215a)[_0xe60b('0xc')](function(_0x5d4ab0){logger[_0xe60b('0xd')](_0xe60b('0xe'),_0x37e234,_0xe60b('0xf'));logger[_0xe60b('0x10')]('VoiceAgentReport,\x20%s,\x20%s,\x20%s',_0x37e234,_0xe60b('0xf'),JSON['stringify'](_0x5d4ab0));if(_0x5d4ab0[_0xe60b('0x11')]){if(_0x5d4ab0[_0xe60b('0x11')][_0xe60b('0x12')]===0x1f4){logger[_0xe60b('0x11')]('VoiceAgentReport,\x20%s,\x20%s',_0x37e234,_0x5d4ab0[_0xe60b('0x11')][_0xe60b('0x13')]);return _0x1459f4(_0x5d4ab0[_0xe60b('0x11')][_0xe60b('0x13')]);}logger[_0xe60b('0x11')]('VoiceAgentReport,\x20%s,\x20%s',_0x37e234,_0x5d4ab0[_0xe60b('0x11')][_0xe60b('0x13')]);return _0x52e157(_0x5d4ab0[_0xe60b('0x11')][_0xe60b('0x13')]);}else{logger['info'](_0xe60b('0xe'),_0x37e234,_0xe60b('0xf'));_0x52e157(_0x5d4ab0['result'][_0xe60b('0x13')]);}})[_0xe60b('0x14')](function(_0x30e8c3){logger['error'](_0xe60b('0xe'),_0x37e234,_0x30e8c3);_0x1459f4(_0x30e8c3);});});}exports['CreateVoiceAgentReport']=function(_0x3f804f){var _0x11cb6e=this;return new Promise(function(_0x4fba8e,_0x2875ec){return db[_0xe60b('0x15')][_0xe60b('0x16')](_0x3f804f[_0xe60b('0x17')],{'raw':_0x3f804f['options']?_0x3f804f[_0xe60b('0x18')][_0xe60b('0x19')]===undefined?!![]:![]:!![]})[_0xe60b('0xc')](function(_0xcea0d8){logger['info'](_0xe60b('0x1a'),_0x3f804f);logger[_0xe60b('0x10')](_0xe60b('0x1a'),_0x3f804f,JSON[_0xe60b('0x1b')](_0xcea0d8));_0x4fba8e(_0xcea0d8);})[_0xe60b('0x14')](function(_0x25c1fd){logger['error'](_0xe60b('0x1a'),_0x25c1fd[_0xe60b('0x13')],_0x3f804f);_0x2875ec(_0x11cb6e[_0xe60b('0x11')](0x1f4,_0x25c1fd[_0xe60b('0x13')]));});});};exports[_0xe60b('0x1c')]=function(_0x34e576){var _0x52c7d5=this;return new Promise(function(_0x4702e4,_0x1f6f0c){return db[_0xe60b('0x15')][_0xe60b('0x1d')](_0x34e576['body'],{'raw':_0x34e576[_0xe60b('0x18')]?_0x34e576['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x34e576[_0xe60b('0x18')]?_0x34e576[_0xe60b('0x18')]['where']||null:null,'attributes':_0x34e576[_0xe60b('0x18')]?_0x34e576['options']['attributes']||null:null,'limit':_0x34e576['options']?_0x34e576[_0xe60b('0x18')][_0xe60b('0x1e')]||null:null})['then'](function(_0x464c74){logger[_0xe60b('0xd')](_0xe60b('0x1c'),_0x34e576);logger[_0xe60b('0x10')](_0xe60b('0x1c'),_0x34e576,JSON[_0xe60b('0x1b')](_0x464c74));_0x4702e4(_0x464c74);})[_0xe60b('0x14')](function(_0x5819ee){logger['error'](_0xe60b('0x1c'),_0x5819ee['message'],_0x34e576);_0x1f6f0c(_0x52c7d5[_0xe60b('0x11')](0x1f4,_0x5819ee[_0xe60b('0x13')]));});});};
\ No newline at end of file
+var _0x9014=['then','info','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateVoiceAgentReport','VoiceAgentReport','create','body','options','raw','UpdateVoiceAgentReport','where','attributes','limit','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request'];(function(_0x230232,_0x2b9dbd){var _0x2b947b=function(_0x59b042){while(--_0x59b042){_0x230232['push'](_0x230232['shift']());}};_0x2b947b(++_0x2b9dbd);}(_0x9014,0xa1));var _0x4901=function(_0x548b1e,_0x81af92){_0x548b1e=_0x548b1e-0x0;var _0xde2fbd=_0x9014[_0x548b1e];return _0xde2fbd;};'use strict';var _=require(_0x4901('0x0'));var util=require(_0x4901('0x1'));var moment=require(_0x4901('0x2'));var BPromise=require(_0x4901('0x3'));var rs=require(_0x4901('0x4'));var fs=require('fs');var Redis=require(_0x4901('0x5'));var db=require(_0x4901('0x6'))['db'];var utils=require(_0x4901('0x7'));var logger=require(_0x4901('0x8'))('rpc');var config=require(_0x4901('0x9'));var jayson=require(_0x4901('0xa'));var client=jayson[_0x4901('0xb')][_0x4901('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2c8677,_0x2b0009,_0x201d72){return new BPromise(function(_0x135d04,_0x1c560a){return client[_0x4901('0xd')](_0x2c8677,_0x201d72)[_0x4901('0xe')](function(_0xc0dba6){logger[_0x4901('0xf')](_0x4901('0x10'),_0x2b0009,_0x4901('0x11'));logger['debug'](_0x4901('0x12'),_0x2b0009,_0x4901('0x11'),JSON[_0x4901('0x13')](_0xc0dba6));if(_0xc0dba6[_0x4901('0x14')]){if(_0xc0dba6['error']['code']===0x1f4){logger[_0x4901('0x14')]('VoiceAgentReport,\x20%s,\x20%s',_0x2b0009,_0xc0dba6['error'][_0x4901('0x15')]);return _0x1c560a(_0xc0dba6[_0x4901('0x14')][_0x4901('0x15')]);}logger[_0x4901('0x14')](_0x4901('0x10'),_0x2b0009,_0xc0dba6[_0x4901('0x14')][_0x4901('0x15')]);return _0x135d04(_0xc0dba6[_0x4901('0x14')][_0x4901('0x15')]);}else{logger[_0x4901('0xf')]('VoiceAgentReport,\x20%s,\x20%s',_0x2b0009,'request\x20sent');_0x135d04(_0xc0dba6[_0x4901('0x16')][_0x4901('0x15')]);}})[_0x4901('0x17')](function(_0x21c3e2){logger['error'](_0x4901('0x10'),_0x2b0009,_0x21c3e2);_0x1c560a(_0x21c3e2);});});}exports[_0x4901('0x18')]=function(_0x8b47ed){var _0x94bde=this;return new Promise(function(_0x6e5d13,_0xdc2ac3){return db[_0x4901('0x19')][_0x4901('0x1a')](_0x8b47ed[_0x4901('0x1b')],{'raw':_0x8b47ed[_0x4901('0x1c')]?_0x8b47ed[_0x4901('0x1c')][_0x4901('0x1d')]===undefined?!![]:![]:!![]})[_0x4901('0xe')](function(_0x228ad2){logger[_0x4901('0xf')]('CreateVoiceAgentReport',_0x8b47ed);logger['debug'](_0x4901('0x18'),_0x8b47ed,JSON[_0x4901('0x13')](_0x228ad2));_0x6e5d13(_0x228ad2);})[_0x4901('0x17')](function(_0x2dd719){logger[_0x4901('0x14')]('CreateVoiceAgentReport',_0x2dd719[_0x4901('0x15')],_0x8b47ed);_0xdc2ac3(_0x94bde['error'](0x1f4,_0x2dd719[_0x4901('0x15')]));});});};exports[_0x4901('0x1e')]=function(_0x310dbb){var _0x57beab=this;return new Promise(function(_0x4db7ad,_0xdc85a9){return db[_0x4901('0x19')]['update'](_0x310dbb['body'],{'raw':_0x310dbb[_0x4901('0x1c')]?_0x310dbb[_0x4901('0x1c')][_0x4901('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x310dbb[_0x4901('0x1c')]?_0x310dbb[_0x4901('0x1c')][_0x4901('0x1f')]||null:null,'attributes':_0x310dbb[_0x4901('0x1c')]?_0x310dbb['options'][_0x4901('0x20')]||null:null,'limit':_0x310dbb[_0x4901('0x1c')]?_0x310dbb[_0x4901('0x1c')][_0x4901('0x21')]||null:null})[_0x4901('0xe')](function(_0xc94e9e){logger[_0x4901('0xf')]('UpdateVoiceAgentReport',_0x310dbb);logger[_0x4901('0x22')]('UpdateVoiceAgentReport',_0x310dbb,JSON[_0x4901('0x13')](_0xc94e9e));_0x4db7ad(_0xc94e9e);})['catch'](function(_0x119b4c){logger[_0x4901('0x14')](_0x4901('0x1e'),_0x119b4c[_0x4901('0x15')],_0x310dbb);_0xdc85a9(_0x57beab['error'](0x1f4,_0x119b4c[_0x4901('0x15')]));});});};
\ No newline at end of file
index 348bd88..346d661 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb66=['../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceCallReport.controller','get','/describe','isAuthenticated','describe','/:id','show','post','create','put','destroy','exports','util','path','connect-timeout','express','Router'];(function(_0x5af843,_0x17840e){var _0x165ecd=function(_0x496cd2){while(--_0x496cd2){_0x5af843['push'](_0x5af843['shift']());}};_0x165ecd(++_0x17840e);}(_0xcb66,0x19f));var _0x6cb6=function(_0x1b92a6,_0x14444b){_0x1b92a6=_0x1b92a6-0x0;var _0x24be5b=_0xcb66[_0x1b92a6];return _0x24be5b;};'use strict';var multer=require('multer');var util=require(_0x6cb6('0x0'));var path=require(_0x6cb6('0x1'));var timeout=require(_0x6cb6('0x2'));var express=require(_0x6cb6('0x3'));var router=express[_0x6cb6('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x6cb6('0x5'));var interaction=require(_0x6cb6('0x6'));var config=require(_0x6cb6('0x7'));var controller=require(_0x6cb6('0x8'));router[_0x6cb6('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x6cb6('0x9')](_0x6cb6('0xa'),auth[_0x6cb6('0xb')](),controller[_0x6cb6('0xc')]);router[_0x6cb6('0x9')](_0x6cb6('0xd'),auth[_0x6cb6('0xb')](),controller[_0x6cb6('0xe')]);router[_0x6cb6('0xf')]('/',auth[_0x6cb6('0xb')](),controller[_0x6cb6('0x10')]);router[_0x6cb6('0x11')](_0x6cb6('0xd'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x6cb6('0xb')](),controller[_0x6cb6('0x12')]);module[_0x6cb6('0x13')]=router;
\ No newline at end of file
+var _0x826a=['post','create','put','delete','destroy','exports','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceCallReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x44fbf9,_0x3f1576){var _0x8dd30c=function(_0x5097d7){while(--_0x5097d7){_0x44fbf9['push'](_0x44fbf9['shift']());}};_0x8dd30c(++_0x3f1576);}(_0x826a,0x1aa));var _0xa826=function(_0x35bd02,_0x5b6c43){_0x35bd02=_0x35bd02-0x0;var _0x35f5b1=_0x826a[_0x35bd02];return _0x35f5b1;};'use strict';var multer=require('multer');var util=require(_0xa826('0x0'));var path=require('path');var timeout=require(_0xa826('0x1'));var express=require('express');var router=express[_0xa826('0x2')]();var fs_extra=require(_0xa826('0x3'));var auth=require(_0xa826('0x4'));var interaction=require(_0xa826('0x5'));var config=require('../../config/environment');var controller=require(_0xa826('0x6'));router[_0xa826('0x7')]('/',auth[_0xa826('0x8')](),controller[_0xa826('0x9')]);router[_0xa826('0x7')](_0xa826('0xa'),auth[_0xa826('0x8')](),controller[_0xa826('0xb')]);router[_0xa826('0x7')](_0xa826('0xc'),auth[_0xa826('0x8')](),controller[_0xa826('0xd')]);router[_0xa826('0xe')]('/',auth[_0xa826('0x8')](),controller[_0xa826('0xf')]);router[_0xa826('0x10')]('/:id',auth[_0xa826('0x8')](),controller['update']);router[_0xa826('0x11')](_0xa826('0xc'),auth[_0xa826('0x8')](),controller[_0xa826('0x12')]);module[_0xa826('0x13')]=router;
\ No newline at end of file
index 349a282..16a7c35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb248=['INTEGER','exports','inbound','internal','inbound-fax','outbound-fax','dialer','STRING','TEXT','DATE'];(function(_0xf606e2,_0x18d317){var _0x2ec1b1=function(_0x49ed64){while(--_0x49ed64){_0xf606e2['push'](_0xf606e2['shift']());}};_0x2ec1b1(++_0x18d317);}(_0xb248,0x1b9));var _0x8b24=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xb248[_0x3ab51d];return _0x29a04e;};'use strict';var Sequelize=require('sequelize');module[_0x8b24('0x0')]={'uniqueid':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM'](_0x8b24('0x1'),_0x8b24('0x2'),'outbound',_0x8b24('0x3'),_0x8b24('0x4'),_0x8b24('0x5'))},'tag':{'type':Sequelize[_0x8b24('0x6')]},'accountcode':{'type':Sequelize[_0x8b24('0x6')]},'source':{'type':Sequelize[_0x8b24('0x6')]},'destination':{'type':Sequelize['STRING']},'destinationcontext':{'type':Sequelize[_0x8b24('0x6')]},'callerid':{'type':Sequelize[_0x8b24('0x6')]},'channel':{'type':Sequelize[_0x8b24('0x6')]},'destinationchannel':{'type':Sequelize[_0x8b24('0x6')]},'lastapplication':{'type':Sequelize[_0x8b24('0x6')]},'lastdata':{'type':Sequelize[_0x8b24('0x7')]},'starttime':{'type':Sequelize[_0x8b24('0x8')]},'systemanswertime':{'type':Sequelize[_0x8b24('0x8')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x8b24('0x8')]},'duration':{'type':Sequelize[_0x8b24('0x9')]},'billableseconds':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0x8b24('0x9')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x8b24('0x6')]},'amaflags':{'type':Sequelize[_0x8b24('0x6')]},'userfield':{'type':Sequelize[_0x8b24('0x6')]},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0x8b24('0x6')]},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x8b24('0x6')]},'routeid':{'type':Sequelize[_0x8b24('0x9')]},'sipcallid':{'type':Sequelize[_0x8b24('0x6')]}};
\ No newline at end of file
+var _0x6acc=['exports','STRING','ENUM','inbound','outbound','inbound-fax','outbound-fax','dialer','TEXT','DATE','INTEGER','sequelize'];(function(_0x2b41e8,_0x86e285){var _0x396ab3=function(_0x4eca77){while(--_0x4eca77){_0x2b41e8['push'](_0x2b41e8['shift']());}};_0x396ab3(++_0x86e285);}(_0x6acc,0x167));var _0xc6ac=function(_0x819464,_0x46fc91){_0x819464=_0x819464-0x0;var _0x49dcc0=_0x6acc[_0x819464];return _0x49dcc0;};'use strict';var Sequelize=require(_0xc6ac('0x0'));module[_0xc6ac('0x1')]={'uniqueid':{'type':Sequelize[_0xc6ac('0x2')]},'type':{'type':Sequelize[_0xc6ac('0x3')](_0xc6ac('0x4'),'internal',_0xc6ac('0x5'),_0xc6ac('0x6'),_0xc6ac('0x7'),_0xc6ac('0x8'))},'tag':{'type':Sequelize[_0xc6ac('0x2')]},'accountcode':{'type':Sequelize['STRING']},'source':{'type':Sequelize[_0xc6ac('0x2')]},'destination':{'type':Sequelize['STRING']},'destinationcontext':{'type':Sequelize[_0xc6ac('0x2')]},'callerid':{'type':Sequelize[_0xc6ac('0x2')]},'channel':{'type':Sequelize[_0xc6ac('0x2')]},'destinationchannel':{'type':Sequelize['STRING']},'lastapplication':{'type':Sequelize[_0xc6ac('0x2')]},'lastdata':{'type':Sequelize[_0xc6ac('0x9')]},'starttime':{'type':Sequelize[_0xc6ac('0xa')]},'systemanswertime':{'type':Sequelize[_0xc6ac('0xa')]},'answertime':{'type':Sequelize[_0xc6ac('0xa')]},'endtime':{'type':Sequelize[_0xc6ac('0xa')]},'duration':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0xc6ac('0xb')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xc6ac('0x2')]},'amaflags':{'type':Sequelize[_0xc6ac('0x2')]},'userfield':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize[_0xc6ac('0x2')]},'userSecondDisposition':{'type':Sequelize['STRING']},'userThirdDisposition':{'type':Sequelize[_0xc6ac('0x2')]},'note':{'type':Sequelize[_0xc6ac('0x2')]},'prefix':{'type':Sequelize[_0xc6ac('0x2')]},'routeid':{'type':Sequelize[_0xc6ac('0xb')]},'sipcallid':{'type':Sequelize[_0xc6ac('0x2')]}};
\ No newline at end of file
index 5b1493c..2204c2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['filter','VIRTUAL','merge','options','includeAll','include','fullname','User','findAll','rows','show','rawAttributes','length','find','catch','body','params','describe','uniqueid','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','VoiceCallReport','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filters'];(function(_0x11b1b3,_0xf3cc69){var _0x437029=function(_0x40499a){while(--_0x40499a){_0x11b1b3['push'](_0x11b1b3['shift']());}};_0x437029(++_0xf3cc69);}(_0xadb5,0xad));var _0x5adb=function(_0x47de39,_0x436e00){_0x47de39=_0x47de39-0x0;var _0x6a6103=_0xadb5[_0x47de39];return _0x6a6103;};'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['VoiceCallReport']['count'](_0x52d74f)[_0x5adb('0x22')](function(_0x2fbe14){_0x1eac55[_0x5adb('0x1e')]=_0x2fbe14;if(_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0x5d457e[_0x5adb('0x3f')]=[{'attributes':['id',_0x5adb('0x26'),_0x5adb('0x40'),'alias'],'model':db['User'],'as':_0x5adb('0x41')}];}return db['VoiceCallReport'][_0x5adb('0x42')](_0x5d457e);})[_0x5adb('0x22')](function(_0x299746){_0x1eac55[_0x5adb('0x43')]=_0x299746;return _0x1eac55;})[_0x5adb('0x22')](respondWithFilteredResult(_0x49992e,_0x5d457e))['catch'](handleError(_0x49992e,null));};exports[_0x5adb('0x44')]=function(_0x565b03,_0x508690){var _0x4160ad={'raw':!![],'where':{'id':_0x565b03['params']['id']}},_0x1a256c={};_0x1a256c[_0x5adb('0x2e')]=_[_0x5adb('0x30')](db[_0x5adb('0x2a')][_0x5adb('0x45')]);_0x1a256c[_0x5adb('0x2f')]=_[_0x5adb('0x30')](_0x565b03[_0x5adb('0x2f')]);_0x1a256c['filters']=_['intersection'](_0x1a256c[_0x5adb('0x2e')],_0x1a256c[_0x5adb('0x2f')]);_0x4160ad[_0x5adb('0x32')]=_[_0x5adb('0x31')](_0x1a256c['model'],qs['fields'](_0x565b03[_0x5adb('0x2f')][_0x5adb('0x33')]));_0x4160ad[_0x5adb('0x32')]=_0x4160ad[_0x5adb('0x32')][_0x5adb('0x46')]?_0x4160ad['attributes']:_0x1a256c[_0x5adb('0x2e')];if(_0x565b03[_0x5adb('0x2f')]['includeAll']){_0x4160ad[_0x5adb('0x3f')]=[{'all':!![]}];}_0x4160ad=_[_0x5adb('0x3c')]({},_0x4160ad,_0x565b03[_0x5adb('0x3d')]);return db[_0x5adb('0x2a')][_0x5adb('0x47')](_0x4160ad)[_0x5adb('0x22')](handleEntityNotFound(_0x508690,null))[_0x5adb('0x22')](respondWithResult(_0x508690,null))[_0x5adb('0x48')](handleError(_0x508690,null));};exports['create']=function(_0x3a925b,_0x57dc8b){return db['VoiceCallReport']['create'](_0x3a925b[_0x5adb('0x49')],{})[_0x5adb('0x22')](respondWithResult(_0x57dc8b,0xc9))[_0x5adb('0x48')](handleError(_0x57dc8b,null));};exports['destroy']=function(_0x2ad69d,_0x5cbab5){return db[_0x5adb('0x2a')][_0x5adb('0x47')]({'where':{'id':_0x2ad69d[_0x5adb('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5cbab5,null))[_0x5adb('0x22')](removeEntity(_0x5cbab5,null))['catch'](handleError(_0x5cbab5,null));};exports[_0x5adb('0x4b')]=function(_0x6dc067,_0x55c535){return db[_0x5adb('0x2a')][_0x5adb('0x4b')]()[_0x5adb('0x22')](respondWithResult(_0x55c535,null))[_0x5adb('0x48')](handleError(_0x55c535,null));};exports[_0x5adb('0x21')]=function(_0x4cb36c,_0x36b847){if(_0x4cb36c[_0x5adb('0x49')][_0x5adb('0x4c')]){delete _0x4cb36c[_0x5adb('0x49')]['uniqueid'];}return db[_0x5adb('0x2a')][_0x5adb('0x47')]({'where':{'uniqueid':_0x4cb36c[_0x5adb('0x4a')]['id'],'UserId':{'$or':[null,_0x4cb36c['user']['id']]}}})[_0x5adb('0x22')](handleEntityNotFound(_0x36b847,null))[_0x5adb('0x22')](saveUpdates(_0x4cb36c[_0x5adb('0x49')],null))[_0x5adb('0x22')](respondWithResult(_0x36b847,null))['catch'](handleError(_0x36b847,null));};
\ No newline at end of file
+var _0xadb5=['filter','VIRTUAL','merge','options','includeAll','include','fullname','User','findAll','rows','show','rawAttributes','length','find','catch','body','params','describe','uniqueid','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','VoiceCallReport','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filters'];(function(_0x52085a,_0x3717ca){var _0x5afc1a=function(_0x2aa175){while(--_0x2aa175){_0x52085a['push'](_0x52085a['shift']());}};_0x5afc1a(++_0x3717ca);}(_0xadb5,0xad));var _0x5adb=function(_0x3949f1,_0x19e2ad){_0x3949f1=_0x3949f1-0x0;var _0x5158b2=_0xadb5[_0x3949f1];return _0x5158b2;};'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['VoiceCallReport']['count'](_0x52d74f)[_0x5adb('0x22')](function(_0x2fbe14){_0x1eac55[_0x5adb('0x1e')]=_0x2fbe14;if(_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0x5d457e[_0x5adb('0x3f')]=[{'attributes':['id',_0x5adb('0x26'),_0x5adb('0x40'),'alias'],'model':db['User'],'as':_0x5adb('0x41')}];}return db['VoiceCallReport'][_0x5adb('0x42')](_0x5d457e);})[_0x5adb('0x22')](function(_0x299746){_0x1eac55[_0x5adb('0x43')]=_0x299746;return _0x1eac55;})[_0x5adb('0x22')](respondWithFilteredResult(_0x49992e,_0x5d457e))['catch'](handleError(_0x49992e,null));};exports[_0x5adb('0x44')]=function(_0x565b03,_0x508690){var _0x4160ad={'raw':!![],'where':{'id':_0x565b03['params']['id']}},_0x1a256c={};_0x1a256c[_0x5adb('0x2e')]=_[_0x5adb('0x30')](db[_0x5adb('0x2a')][_0x5adb('0x45')]);_0x1a256c[_0x5adb('0x2f')]=_[_0x5adb('0x30')](_0x565b03[_0x5adb('0x2f')]);_0x1a256c['filters']=_['intersection'](_0x1a256c[_0x5adb('0x2e')],_0x1a256c[_0x5adb('0x2f')]);_0x4160ad[_0x5adb('0x32')]=_[_0x5adb('0x31')](_0x1a256c['model'],qs['fields'](_0x565b03[_0x5adb('0x2f')][_0x5adb('0x33')]));_0x4160ad[_0x5adb('0x32')]=_0x4160ad[_0x5adb('0x32')][_0x5adb('0x46')]?_0x4160ad['attributes']:_0x1a256c[_0x5adb('0x2e')];if(_0x565b03[_0x5adb('0x2f')]['includeAll']){_0x4160ad[_0x5adb('0x3f')]=[{'all':!![]}];}_0x4160ad=_[_0x5adb('0x3c')]({},_0x4160ad,_0x565b03[_0x5adb('0x3d')]);return db[_0x5adb('0x2a')][_0x5adb('0x47')](_0x4160ad)[_0x5adb('0x22')](handleEntityNotFound(_0x508690,null))[_0x5adb('0x22')](respondWithResult(_0x508690,null))[_0x5adb('0x48')](handleError(_0x508690,null));};exports['create']=function(_0x3a925b,_0x57dc8b){return db['VoiceCallReport']['create'](_0x3a925b[_0x5adb('0x49')],{})[_0x5adb('0x22')](respondWithResult(_0x57dc8b,0xc9))[_0x5adb('0x48')](handleError(_0x57dc8b,null));};exports['destroy']=function(_0x2ad69d,_0x5cbab5){return db[_0x5adb('0x2a')][_0x5adb('0x47')]({'where':{'id':_0x2ad69d[_0x5adb('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5cbab5,null))[_0x5adb('0x22')](removeEntity(_0x5cbab5,null))['catch'](handleError(_0x5cbab5,null));};exports[_0x5adb('0x4b')]=function(_0x6dc067,_0x55c535){return db[_0x5adb('0x2a')][_0x5adb('0x4b')]()[_0x5adb('0x22')](respondWithResult(_0x55c535,null))[_0x5adb('0x48')](handleError(_0x55c535,null));};exports[_0x5adb('0x21')]=function(_0x4cb36c,_0x36b847){if(_0x4cb36c[_0x5adb('0x49')][_0x5adb('0x4c')]){delete _0x4cb36c[_0x5adb('0x49')]['uniqueid'];}return db[_0x5adb('0x2a')][_0x5adb('0x47')]({'where':{'uniqueid':_0x4cb36c[_0x5adb('0x4a')]['id'],'UserId':{'$or':[null,_0x4cb36c['user']['id']]}}})[_0x5adb('0x22')](handleEntityNotFound(_0x36b847,null))[_0x5adb('0x22')](saveUpdates(_0x4cb36c[_0x5adb('0x49')],null))[_0x5adb('0x22')](respondWithResult(_0x36b847,null))['catch'](handleError(_0x36b847,null));};
\ No newline at end of file
index aa17e52..d30e413 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4677=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./voiceCallReport.attributes','define','VoiceCallReport','report_call','lodash','util'];(function(_0xb0fd3f,_0x279a5){var _0x5839da=function(_0x34006c){while(--_0x34006c){_0xb0fd3f['push'](_0xb0fd3f['shift']());}};_0x5839da(++_0x279a5);}(_0x4677,0x6a));var _0x7467=function(_0x13d304,_0xe20892){_0x13d304=_0x13d304-0x0;var _0x362691=_0x4677[_0x13d304];return _0x362691;};'use strict';var _=require(_0x7467('0x0'));var util=require(_0x7467('0x1'));var logger=require(_0x7467('0x2'))('api');var moment=require(_0x7467('0x3'));var BPromise=require(_0x7467('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7467('0x5'));var rimraf=require(_0x7467('0x6'));var config=require(_0x7467('0x7'));var attributes=require(_0x7467('0x8'));module['exports']=function(_0x338778,_0x41312c){return _0x338778[_0x7467('0x9')](_0x7467('0xa'),attributes,{'tableName':_0x7467('0xb'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9100=['report_call','uniqueid','lodash','util','../../config/logger','moment','bluebird','rimraf','./voiceCallReport.attributes','define','VoiceCallReport'];(function(_0x2067cb,_0x112ee2){var _0x12c048=function(_0x3ac00e){while(--_0x3ac00e){_0x2067cb['push'](_0x2067cb['shift']());}};_0x12c048(++_0x112ee2);}(_0x9100,0x1e6));var _0x0910=function(_0x1d80d8,_0x18871b){_0x1d80d8=_0x1d80d8-0x0;var _0x2787ea=_0x9100[_0x1d80d8];return _0x2787ea;};'use strict';var _=require(_0x0910('0x0'));var util=require(_0x0910('0x1'));var logger=require(_0x0910('0x2'))('api');var moment=require(_0x0910('0x3'));var BPromise=require(_0x0910('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x0910('0x5'));var config=require('../../config/environment');var attributes=require(_0x0910('0x6'));module['exports']=function(_0x23985c,_0x275d4d){return _0x23985c[_0x0910('0x7')](_0x0910('0x8'),attributes,{'tableName':_0x0910('0x9'),'paranoid':![],'indexes':[{'fields':[_0x0910('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 48b3e51..cad1e7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc21f=['info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetVoiceCallReport','VoiceCallReport','findAll','options','raw','attributes','include','map','model','then','CreateVoiceCallReport','create','body','UpdateVoiceCallReport','limit','lodash','util','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request'];(function(_0x2d126e,_0x1e8257){var _0xcb04d3=function(_0x19a2d9){while(--_0x19a2d9){_0x2d126e['push'](_0x2d126e['shift']());}};_0xcb04d3(++_0x1e8257);}(_0xc21f,0x1b1));var _0xfc21=function(_0x12691c,_0x30ccdc){_0x12691c=_0x12691c-0x0;var _0x3b4a4a=_0xc21f[_0x12691c];return _0x3b4a4a;};'use strict';var _=require(_0xfc21('0x0'));var util=require(_0xfc21('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfc21('0x2'))['db'];var utils=require(_0xfc21('0x3'));var logger=require(_0xfc21('0x4'))(_0xfc21('0x5'));var config=require('../../config/environment');var jayson=require(_0xfc21('0x6'));var client=jayson['client'][_0xfc21('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x516adb,_0x1eeec6,_0x63c40d){return new BPromise(function(_0x1cadd6,_0x1359c2){return client[_0xfc21('0x8')](_0x516adb,_0x63c40d)['then'](function(_0x53b72c){logger[_0xfc21('0x9')](_0xfc21('0xa'),_0x1eeec6,_0xfc21('0xb'));logger[_0xfc21('0xc')](_0xfc21('0xd'),_0x1eeec6,_0xfc21('0xb'),JSON[_0xfc21('0xe')](_0x53b72c));if(_0x53b72c[_0xfc21('0xf')]){if(_0x53b72c[_0xfc21('0xf')]['code']===0x1f4){logger['error'](_0xfc21('0xa'),_0x1eeec6,_0x53b72c[_0xfc21('0xf')][_0xfc21('0x10')]);return _0x1359c2(_0x53b72c[_0xfc21('0xf')][_0xfc21('0x10')]);}logger[_0xfc21('0xf')](_0xfc21('0xa'),_0x1eeec6,_0x53b72c[_0xfc21('0xf')][_0xfc21('0x10')]);return _0x1cadd6(_0x53b72c['error']['message']);}else{logger['info']('VoiceCallReport,\x20%s,\x20%s',_0x1eeec6,_0xfc21('0xb'));_0x1cadd6(_0x53b72c[_0xfc21('0x11')][_0xfc21('0x10')]);}})[_0xfc21('0x12')](function(_0x386734){logger[_0xfc21('0xf')]('VoiceCallReport,\x20%s,\x20%s',_0x1eeec6,_0x386734);_0x1359c2(_0x386734);});});}exports[_0xfc21('0x13')]=function(_0x3dab2d){var _0xa06912=this;return new Promise(function(_0x1437d3,_0xd7b431){return db[_0xfc21('0x14')][_0xfc21('0x15')]({'raw':_0x3dab2d['options']?_0x3dab2d[_0xfc21('0x16')][_0xfc21('0x17')]===undefined?!![]:![]:!![],'where':_0x3dab2d[_0xfc21('0x16')]?_0x3dab2d[_0xfc21('0x16')]['where']||null:null,'attributes':_0x3dab2d['options']?_0x3dab2d['options'][_0xfc21('0x18')]||null:null,'limit':_0x3dab2d[_0xfc21('0x16')]?_0x3dab2d['options']['limit']||null:null,'include':_0x3dab2d['options']?_0x3dab2d[_0xfc21('0x16')][_0xfc21('0x19')]?_[_0xfc21('0x1a')](_0x3dab2d['options']['include'],function(_0x3d845f){return{'model':db[_0x3d845f[_0xfc21('0x1b')]],'as':_0x3d845f['as'],'attributes':_0x3d845f['attributes'],'include':_0x3d845f[_0xfc21('0x19')]?_[_0xfc21('0x1a')](_0x3d845f[_0xfc21('0x19')],function(_0x2e4abe){return{'model':db[_0x2e4abe['model']],'as':_0x2e4abe['as'],'attributes':_0x2e4abe[_0xfc21('0x18')],'include':_0x2e4abe[_0xfc21('0x19')]?_[_0xfc21('0x1a')](_0x2e4abe['include'],function(_0x5e0377){return{'model':db[_0x5e0377[_0xfc21('0x1b')]],'as':_0x5e0377['as'],'attributes':_0x5e0377['attributes']};}):[]};}):[]};}):[]:[]})[_0xfc21('0x1c')](function(_0x353975){logger[_0xfc21('0x9')]('GetVoiceCallReport',_0x3dab2d);logger['debug'](_0xfc21('0x13'),_0x3dab2d,JSON['stringify'](_0x353975));_0x1437d3(_0x353975);})[_0xfc21('0x12')](function(_0x2a3c70){logger[_0xfc21('0xf')](_0xfc21('0x13'),_0x2a3c70[_0xfc21('0x10')],_0x3dab2d);_0xd7b431(_0xa06912['error'](0x1f4,_0x2a3c70['message']));});});};exports[_0xfc21('0x1d')]=function(_0x44d944){var _0x572da8=this;return new Promise(function(_0x25cc09,_0x505248){return db[_0xfc21('0x14')][_0xfc21('0x1e')](_0x44d944[_0xfc21('0x1f')],{'raw':_0x44d944[_0xfc21('0x16')]?_0x44d944['options'][_0xfc21('0x17')]===undefined?!![]:![]:!![]})[_0xfc21('0x1c')](function(_0x567f83){logger['info'](_0xfc21('0x1d'),_0x44d944);logger[_0xfc21('0xc')](_0xfc21('0x1d'),_0x44d944,JSON[_0xfc21('0xe')](_0x567f83));_0x25cc09(_0x567f83);})[_0xfc21('0x12')](function(_0x12ef2e){logger[_0xfc21('0xf')](_0xfc21('0x1d'),_0x12ef2e[_0xfc21('0x10')],_0x44d944);_0x505248(_0x572da8[_0xfc21('0xf')](0x1f4,_0x12ef2e[_0xfc21('0x10')]));});});};exports[_0xfc21('0x20')]=function(_0x11c6a6){var _0xbae642=this;return new Promise(function(_0x3fa5a6,_0x18f418){return db[_0xfc21('0x14')]['update'](_0x11c6a6['body'],{'raw':_0x11c6a6[_0xfc21('0x16')]?_0x11c6a6[_0xfc21('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x11c6a6[_0xfc21('0x16')]?_0x11c6a6[_0xfc21('0x16')]['where']||null:null,'attributes':_0x11c6a6[_0xfc21('0x16')]?_0x11c6a6[_0xfc21('0x16')][_0xfc21('0x18')]||null:null,'limit':_0x11c6a6[_0xfc21('0x16')]?_0x11c6a6[_0xfc21('0x16')][_0xfc21('0x21')]||null:null})['then'](function(_0x3b9ea6){logger[_0xfc21('0x9')](_0xfc21('0x20'),_0x11c6a6);logger[_0xfc21('0xc')](_0xfc21('0x20'),_0x11c6a6,JSON['stringify'](_0x3b9ea6));_0x3fa5a6(_0x3b9ea6);})[_0xfc21('0x12')](function(_0x36eec9){logger[_0xfc21('0xf')](_0xfc21('0x20'),_0x36eec9[_0xfc21('0x10')],_0x11c6a6);_0x18f418(_0xbae642[_0xfc21('0xf')](0x1f4,_0x36eec9['message']));});});};
\ No newline at end of file
+var _0x48e9=['catch','CreateVoiceCallReport','create','UpdateVoiceCallReport','update','body','limit','lodash','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','VoiceCallReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','VoiceCallReport','options','raw','include','map','model','attributes','GetVoiceCallReport'];(function(_0x42fb29,_0x477df6){var _0x2ed8db=function(_0x4254bd){while(--_0x4254bd){_0x42fb29['push'](_0x42fb29['shift']());}};_0x2ed8db(++_0x477df6);}(_0x48e9,0xfc));var _0x948e=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x48e9[_0x4e676e];return _0x336a3c;};'use strict';var _=require(_0x948e('0x0'));var util=require('util');var moment=require(_0x948e('0x1'));var BPromise=require(_0x948e('0x2'));var rs=require(_0x948e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x948e('0x4'));var logger=require(_0x948e('0x5'))(_0x948e('0x6'));var config=require(_0x948e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x948e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5747dd,_0x43397e,_0x29a4c){return new BPromise(function(_0x27da0f,_0x339531){return client[_0x948e('0x9')](_0x5747dd,_0x29a4c)[_0x948e('0xa')](function(_0x30c21f){logger[_0x948e('0xb')](_0x948e('0xc'),_0x43397e,'request\x20sent');logger[_0x948e('0xd')]('VoiceCallReport,\x20%s,\x20%s,\x20%s',_0x43397e,_0x948e('0xe'),JSON[_0x948e('0xf')](_0x30c21f));if(_0x30c21f[_0x948e('0x10')]){if(_0x30c21f['error'][_0x948e('0x11')]===0x1f4){logger[_0x948e('0x10')](_0x948e('0xc'),_0x43397e,_0x30c21f[_0x948e('0x10')][_0x948e('0x12')]);return _0x339531(_0x30c21f['error'][_0x948e('0x12')]);}logger['error'](_0x948e('0xc'),_0x43397e,_0x30c21f[_0x948e('0x10')][_0x948e('0x12')]);return _0x27da0f(_0x30c21f['error'][_0x948e('0x12')]);}else{logger[_0x948e('0xb')](_0x948e('0xc'),_0x43397e,'request\x20sent');_0x27da0f(_0x30c21f[_0x948e('0x13')][_0x948e('0x12')]);}})['catch'](function(_0x3576d1){logger[_0x948e('0x10')](_0x948e('0xc'),_0x43397e,_0x3576d1);_0x339531(_0x3576d1);});});}exports['GetVoiceCallReport']=function(_0x546f0f){var _0x377435=this;return new Promise(function(_0x288365,_0x1661c7){return db[_0x948e('0x14')]['findAll']({'raw':_0x546f0f[_0x948e('0x15')]?_0x546f0f[_0x948e('0x15')][_0x948e('0x16')]===undefined?!![]:![]:!![],'where':_0x546f0f[_0x948e('0x15')]?_0x546f0f[_0x948e('0x15')]['where']||null:null,'attributes':_0x546f0f[_0x948e('0x15')]?_0x546f0f[_0x948e('0x15')]['attributes']||null:null,'limit':_0x546f0f[_0x948e('0x15')]?_0x546f0f[_0x948e('0x15')]['limit']||null:null,'include':_0x546f0f[_0x948e('0x15')]?_0x546f0f['options'][_0x948e('0x17')]?_[_0x948e('0x18')](_0x546f0f[_0x948e('0x15')][_0x948e('0x17')],function(_0x376a46){return{'model':db[_0x376a46['model']],'as':_0x376a46['as'],'attributes':_0x376a46['attributes'],'include':_0x376a46[_0x948e('0x17')]?_[_0x948e('0x18')](_0x376a46[_0x948e('0x17')],function(_0x8b0372){return{'model':db[_0x8b0372[_0x948e('0x19')]],'as':_0x8b0372['as'],'attributes':_0x8b0372[_0x948e('0x1a')],'include':_0x8b0372[_0x948e('0x17')]?_['map'](_0x8b0372[_0x948e('0x17')],function(_0xe5bc81){return{'model':db[_0xe5bc81['model']],'as':_0xe5bc81['as'],'attributes':_0xe5bc81[_0x948e('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x948e('0xa')](function(_0x22e612){logger['info'](_0x948e('0x1b'),_0x546f0f);logger[_0x948e('0xd')]('GetVoiceCallReport',_0x546f0f,JSON[_0x948e('0xf')](_0x22e612));_0x288365(_0x22e612);})[_0x948e('0x1c')](function(_0x97cd3b){logger[_0x948e('0x10')](_0x948e('0x1b'),_0x97cd3b[_0x948e('0x12')],_0x546f0f);_0x1661c7(_0x377435[_0x948e('0x10')](0x1f4,_0x97cd3b['message']));});});};exports[_0x948e('0x1d')]=function(_0x3f44fc){var _0x525aa0=this;return new Promise(function(_0x476e1c,_0x2eeb19){return db[_0x948e('0x14')][_0x948e('0x1e')](_0x3f44fc['body'],{'raw':_0x3f44fc[_0x948e('0x15')]?_0x3f44fc[_0x948e('0x15')][_0x948e('0x16')]===undefined?!![]:![]:!![]})[_0x948e('0xa')](function(_0x142181){logger['info'](_0x948e('0x1d'),_0x3f44fc);logger[_0x948e('0xd')]('CreateVoiceCallReport',_0x3f44fc,JSON[_0x948e('0xf')](_0x142181));_0x476e1c(_0x142181);})[_0x948e('0x1c')](function(_0x13a032){logger[_0x948e('0x10')](_0x948e('0x1d'),_0x13a032[_0x948e('0x12')],_0x3f44fc);_0x2eeb19(_0x525aa0['error'](0x1f4,_0x13a032[_0x948e('0x12')]));});});};exports[_0x948e('0x1f')]=function(_0x56b059){var _0x3ecbdc=this;return new Promise(function(_0x42a4c2,_0xcf0ca7){return db[_0x948e('0x14')][_0x948e('0x20')](_0x56b059[_0x948e('0x21')],{'raw':_0x56b059[_0x948e('0x15')]?_0x56b059[_0x948e('0x15')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x56b059['options']?_0x56b059[_0x948e('0x15')]['where']||null:null,'attributes':_0x56b059[_0x948e('0x15')]?_0x56b059['options'][_0x948e('0x1a')]||null:null,'limit':_0x56b059['options']?_0x56b059[_0x948e('0x15')][_0x948e('0x22')]||null:null})[_0x948e('0xa')](function(_0x284565){logger[_0x948e('0xb')](_0x948e('0x1f'),_0x56b059);logger[_0x948e('0xd')](_0x948e('0x1f'),_0x56b059,JSON[_0x948e('0xf')](_0x284565));_0x42a4c2(_0x284565);})[_0x948e('0x1c')](function(_0x37a4e0){logger['error'](_0x948e('0x1f'),_0x37a4e0[_0x948e('0x12')],_0x56b059);_0xcf0ca7(_0x3ecbdc[_0x948e('0x10')](0x1f4,_0x37a4e0[_0x948e('0x12')]));});});};
\ No newline at end of file
index 9e5e013..a85222e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdff4=['index','get','/:id','create','update','delete','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','isAuthenticated'];(function(_0x5a213a,_0x2b4a23){var _0x3577b3=function(_0x3a4213){while(--_0x3a4213){_0x5a213a['push'](_0x5a213a['shift']());}};_0x3577b3(++_0x2b4a23);}(_0xdff4,0x197));var _0x4dff=function(_0x57059f,_0x56a31a){_0x57059f=_0x57059f-0x0;var _0x137847=_0xdff4[_0x57059f];return _0x137847;};'use strict';var multer=require(_0x4dff('0x0'));var util=require(_0x4dff('0x1'));var path=require(_0x4dff('0x2'));var timeout=require(_0x4dff('0x3'));var express=require(_0x4dff('0x4'));var router=express[_0x4dff('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x4dff('0x6'));var interaction=require(_0x4dff('0x7'));var config=require('../../config/environment');var controller=require('./voiceChanSpy.controller');router['get']('/',auth[_0x4dff('0x8')](),controller[_0x4dff('0x9')]);router[_0x4dff('0xa')](_0x4dff('0xb'),auth[_0x4dff('0x8')](),controller['show']);router['post']('/',auth[_0x4dff('0x8')](),controller[_0x4dff('0xc')]);router['put'](_0x4dff('0xb'),auth['isAuthenticated'](),controller[_0x4dff('0xd')]);router[_0x4dff('0xe')](_0x4dff('0xb'),auth['isAuthenticated'](),controller[_0x4dff('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x061a=['Router','fs-extra','../../components/auth/service','../../config/environment','./voiceChanSpy.controller','isAuthenticated','index','get','/:id','post','create','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x3ab188,_0x5b452b){var _0x5af86e=function(_0x5514f5){while(--_0x5514f5){_0x3ab188['push'](_0x3ab188['shift']());}};_0x5af86e(++_0x5b452b);}(_0x061a,0x13e));var _0xa061=function(_0x19d635,_0x25b29f){_0x19d635=_0x19d635-0x0;var _0x24c58f=_0x061a[_0x19d635];return _0x24c58f;};'use strict';var multer=require(_0xa061('0x0'));var util=require(_0xa061('0x1'));var path=require(_0xa061('0x2'));var timeout=require(_0xa061('0x3'));var express=require(_0xa061('0x4'));var router=express[_0xa061('0x5')]();var fs_extra=require(_0xa061('0x6'));var auth=require(_0xa061('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xa061('0x8'));var controller=require(_0xa061('0x9'));router['get']('/',auth[_0xa061('0xa')](),controller[_0xa061('0xb')]);router[_0xa061('0xc')](_0xa061('0xd'),auth[_0xa061('0xa')](),controller['show']);router[_0xa061('0xe')]('/',auth[_0xa061('0xa')](),controller[_0xa061('0xf')]);router['put']('/:id',auth[_0xa061('0xa')](),controller['update']);router[_0xa061('0x10')](_0xa061('0xd'),auth[_0xa061('0xa')](),controller[_0xa061('0x11')]);module[_0xa061('0x12')]=router;
\ No newline at end of file
index e7ccdc0..6f587fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8f3=['exports','STRING','name','setDataValue','options','join','getDataValue','split','BOOLEAN','sequelize'];(function(_0x5d61b4,_0x4f7b91){var _0x183fc5=function(_0x5ecf92){while(--_0x5ecf92){_0x5d61b4['push'](_0x5d61b4['shift']());}};_0x183fc5(++_0x4f7b91);}(_0xa8f3,0x171));var _0x3a8f=function(_0x2fd394,_0x3abd2c){_0x2fd394=_0x2fd394-0x0;var _0x5bf508=_0xa8f3[_0x2fd394];return _0x5bf508;};'use strict';var Sequelize=require(_0x3a8f('0x0'));module[_0x3a8f('0x1')]={'name':{'type':Sequelize[_0x3a8f('0x2')]},'prefix':{'type':Sequelize[_0x3a8f('0x2')],'unique':_0x3a8f('0x3'),'allowNull':![]},'options':{'type':Sequelize[_0x3a8f('0x2')],'set':function(_0x1f0b52){this[_0x3a8f('0x4')](_0x3a8f('0x5'),_0x1f0b52?_0x1f0b52[_0x3a8f('0x6')](''):[]);},'get':function(){return this[_0x3a8f('0x7')](_0x3a8f('0x5'))?this[_0x3a8f('0x7')](_0x3a8f('0x5'))[_0x3a8f('0x8')](''):[];}},'auth':{'type':Sequelize[_0x3a8f('0x9')],'defaultValue':![]},'password':{'type':Sequelize[_0x3a8f('0x2')]},'record':{'type':Sequelize[_0x3a8f('0x9')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x3a8f('0x2')]},'description':{'type':Sequelize[_0x3a8f('0x2')]}};
\ No newline at end of file
+var _0xae6c=['options','join','getDataValue','split','BOOLEAN','STRING','name','setDataValue'];(function(_0x256b72,_0x340985){var _0x2183e3=function(_0xf7fd37){while(--_0xf7fd37){_0x256b72['push'](_0x256b72['shift']());}};_0x2183e3(++_0x340985);}(_0xae6c,0xbd));var _0xcae6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xae6c[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xcae6('0x0')]},'prefix':{'type':Sequelize[_0xcae6('0x0')],'unique':_0xcae6('0x1'),'allowNull':![]},'options':{'type':Sequelize[_0xcae6('0x0')],'set':function(_0x45fc1a){this[_0xcae6('0x2')](_0xcae6('0x3'),_0x45fc1a?_0x45fc1a[_0xcae6('0x4')](''):[]);},'get':function(){return this[_0xcae6('0x5')](_0xcae6('0x3'))?this[_0xcae6('0x5')](_0xcae6('0x3'))[_0xcae6('0x6')](''):[];}},'auth':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'password':{'type':Sequelize[_0xcae6('0x0')]},'record':{'type':Sequelize[_0xcae6('0x7')],'defaultValue':![]},'recordingFormat':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xcae6('0x0')]}};
\ No newline at end of file
index f6059ee..e51e7fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3189=['include','findAll','rows','catch','params','VoiceChanSpy','keys','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','sox','to-csv','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','undefined','count','set','Content-Range','json','apply','save','update','destroy','then','get','ChanSpies','UserProfileResource','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','VIRTUAL','options','includeAll'];(function(_0x3c2155,_0x4a0493){var _0x37e699=function(_0x326bef){while(--_0x326bef){_0x3c2155['push'](_0x3c2155['shift']());}};_0x37e699(++_0x4a0493);}(_0x3189,0xae));var _0x9318=function(_0x9bc089,_0x35e935){_0x9bc089=_0x9bc089-0x0;var _0x301012=_0x3189[_0x9bc089];return _0x301012;};'use strict';var emlformat=require(_0x9318('0x0'));var rimraf=require(_0x9318('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9318('0x2'));var rp=require(_0x9318('0x3'));var moment=require(_0x9318('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9318('0x5'));var util=require('util');var path=require('path');var sox=require(_0x9318('0x6'));var csv=require(_0x9318('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9318('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x9318('0x9'));var jsforce=require(_0x9318('0xa'));var deskjs=require(_0x9318('0xb'));var toCsv=require('to-csv');var querystring=require(_0x9318('0xc'));var Papa=require(_0x9318('0xd'));var Redis=require(_0x9318('0xe'));var authService=require(_0x9318('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9318('0x10'));var logger=require('../../config/logger')(_0x9318('0x11'));var utils=require(_0x9318('0x12'));var config=require(_0x9318('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x9318('0x14'))['db'];function respondWithStatusCode(_0x5b63fe,_0x5133a4){_0x5133a4=_0x5133a4||0xcc;return function(_0x2ac258){if(_0x2ac258){return _0x5b63fe['sendStatus'](_0x5133a4);}return _0x5b63fe[_0x9318('0x15')](_0x5133a4)[_0x9318('0x16')]();};}function respondWithResult(_0x571d73,_0x258b56){_0x258b56=_0x258b56||0xc8;return function(_0xfe145c){if(_0xfe145c){return _0x571d73[_0x9318('0x15')](_0x258b56)['json'](_0xfe145c);}};}function respondWithFilteredResult(_0x4a5d09,_0x10d4f0){return function(_0x11b380){if(_0x11b380){var _0x4ee574=typeof _0x10d4f0[_0x9318('0x17')]===_0x9318('0x18')&&typeof _0x10d4f0['limit']===_0x9318('0x18');var _0x26c0d8=_0x11b380[_0x9318('0x19')];var _0xda93f2=_0x4ee574?0x0:_0x10d4f0[_0x9318('0x17')];var _0x19c253=_0x4ee574?_0x11b380[_0x9318('0x19')]:_0x10d4f0[_0x9318('0x17')]+_0x10d4f0['limit'];var _0x367300;if(_0x19c253>=_0x26c0d8){_0x19c253=_0x26c0d8;_0x367300=0xc8;}else{_0x367300=0xce;}_0x4a5d09[_0x9318('0x15')](_0x367300);return _0x4a5d09[_0x9318('0x1a')](_0x9318('0x1b'),_0xda93f2+'-'+_0x19c253+'/'+_0x26c0d8)[_0x9318('0x1c')](_0x11b380);}return null;};}function patchUpdates(_0xc122e9){return function(_0x59a34f){try{jsonpatch[_0x9318('0x1d')](_0x59a34f,_0xc122e9,!![]);}catch(_0x5219e4){return BPromise['reject'](_0x5219e4);}return _0x59a34f[_0x9318('0x1e')]();};}function saveUpdates(_0x317f9d,_0xa45304){return function(_0x2b3d31){if(_0x2b3d31){return _0x2b3d31[_0x9318('0x1f')](_0x317f9d)['then'](function(_0x46c7f2){return _0x46c7f2;});}return null;};}function removeEntity(_0x3d6205,_0x451694){return function(_0x33502a){if(_0x33502a){return _0x33502a[_0x9318('0x20')]()[_0x9318('0x21')](function(){var _0x2686e8=_0x33502a[_0x9318('0x22')]({'plain':!![]});var _0x174e63=_0x9318('0x23');return db[_0x9318('0x24')][_0x9318('0x20')]({'where':{'type':_0x174e63,'resourceId':_0x2686e8['id']}})[_0x9318('0x21')](function(){return _0x33502a;});})[_0x9318('0x21')](function(){_0x3d6205[_0x9318('0x15')](0xcc)[_0x9318('0x16')]();});}};}function handleEntityNotFound(_0x4c46d8,_0x33b261){return function(_0x1138ac){if(!_0x1138ac){_0x4c46d8['sendStatus'](0x194);}return _0x1138ac;};}function handleError(_0x3690a2,_0x3b2eb9){_0x3b2eb9=_0x3b2eb9||0x1f4;return function(_0x177833){logger[_0x9318('0x25')](_0x177833[_0x9318('0x26')]);if(_0x177833[_0x9318('0x27')]){delete _0x177833[_0x9318('0x27')];}_0x3690a2['status'](_0x3b2eb9)[_0x9318('0x28')](_0x177833);};}exports[_0x9318('0x29')]=function(_0x5a8af5,_0x3363ab){var _0x4c4a6f={},_0x27e821={},_0x22cdd3={'count':0x0,'rows':[]};var _0x5b9cfc=_[_0x9318('0x2a')](db['VoiceChanSpy'][_0x9318('0x2b')],function(_0x12f114){return{'name':_0x12f114[_0x9318('0x2c')],'type':_0x12f114['type'][_0x9318('0x2d')]};});_0x27e821[_0x9318('0x2e')]=_[_0x9318('0x2a')](_0x5b9cfc,_0x9318('0x27'));_0x27e821['query']=_['keys'](_0x5a8af5[_0x9318('0x2f')]);_0x27e821['filters']=_[_0x9318('0x30')](_0x27e821[_0x9318('0x2e')],_0x27e821['query']);_0x4c4a6f[_0x9318('0x31')]=_[_0x9318('0x30')](_0x27e821['model'],qs[_0x9318('0x32')](_0x5a8af5[_0x9318('0x2f')]['fields']));_0x4c4a6f[_0x9318('0x31')]=_0x4c4a6f[_0x9318('0x31')][_0x9318('0x33')]?_0x4c4a6f[_0x9318('0x31')]:_0x27e821[_0x9318('0x2e')];if(!_0x5a8af5[_0x9318('0x2f')][_0x9318('0x34')](_0x9318('0x35'))){_0x4c4a6f[_0x9318('0x36')]=qs['limit'](_0x5a8af5['query'][_0x9318('0x36')]);_0x4c4a6f[_0x9318('0x17')]=qs[_0x9318('0x17')](_0x5a8af5[_0x9318('0x2f')][_0x9318('0x17')]);}_0x4c4a6f[_0x9318('0x37')]=qs[_0x9318('0x38')](_0x5a8af5[_0x9318('0x2f')][_0x9318('0x38')]);_0x4c4a6f[_0x9318('0x39')]=qs['filters'](_['pick'](_0x5a8af5[_0x9318('0x2f')],_0x27e821['filters']),_0x5b9cfc);if(_0x5a8af5['query'][_0x9318('0x3a')]){_0x4c4a6f[_0x9318('0x39')]=_[_0x9318('0x3b')](_0x4c4a6f[_0x9318('0x39')],{'$or':_[_0x9318('0x2a')](_0x5b9cfc,function(_0x38386e){if(_0x38386e['type']!==_0x9318('0x3c')){var _0x4f8f18={};_0x4f8f18[_0x38386e[_0x9318('0x27')]]={'$like':'%'+_0x5a8af5[_0x9318('0x2f')]['filter']+'%'};return _0x4f8f18;}})});}_0x4c4a6f=_[_0x9318('0x3b')]({},_0x4c4a6f,_0x5a8af5[_0x9318('0x3d')]);var _0x37a8d2={'where':_0x4c4a6f[_0x9318('0x39')]};return db['VoiceChanSpy']['count'](_0x37a8d2)[_0x9318('0x21')](function(_0x45ef71){_0x22cdd3['count']=_0x45ef71;if(_0x5a8af5[_0x9318('0x2f')][_0x9318('0x3e')]){_0x4c4a6f[_0x9318('0x3f')]=[{'all':!![]}];}return db['VoiceChanSpy'][_0x9318('0x40')](_0x4c4a6f);})[_0x9318('0x21')](function(_0x28d505){_0x22cdd3[_0x9318('0x41')]=_0x28d505;return _0x22cdd3;})['then'](respondWithFilteredResult(_0x3363ab,_0x4c4a6f))[_0x9318('0x42')](handleError(_0x3363ab,null));};exports['show']=function(_0x3af694,_0xc7581d){var _0x2b6350={'raw':![],'where':{'id':_0x3af694[_0x9318('0x43')]['id']}},_0x31520e={};_0x31520e[_0x9318('0x2e')]=_['keys'](db[_0x9318('0x44')]['rawAttributes']);_0x31520e[_0x9318('0x2f')]=_[_0x9318('0x45')](_0x3af694['query']);_0x31520e['filters']=_['intersection'](_0x31520e[_0x9318('0x2e')],_0x31520e[_0x9318('0x2f')]);_0x2b6350[_0x9318('0x31')]=_[_0x9318('0x30')](_0x31520e[_0x9318('0x2e')],qs[_0x9318('0x32')](_0x3af694[_0x9318('0x2f')][_0x9318('0x32')]));_0x2b6350[_0x9318('0x31')]=_0x2b6350[_0x9318('0x31')]['length']?_0x2b6350[_0x9318('0x31')]:_0x31520e[_0x9318('0x2e')];if(_0x3af694[_0x9318('0x2f')][_0x9318('0x3e')]){_0x2b6350[_0x9318('0x3f')]=[{'all':!![]}];}_0x2b6350=_[_0x9318('0x3b')]({},_0x2b6350,_0x3af694[_0x9318('0x3d')]);return db[_0x9318('0x44')]['find'](_0x2b6350)[_0x9318('0x21')](handleEntityNotFound(_0xc7581d,null))[_0x9318('0x21')](respondWithResult(_0xc7581d,null))[_0x9318('0x42')](handleError(_0xc7581d,null));};exports['create']=function(_0x47b00b,_0x4ce675){return db[_0x9318('0x44')][_0x9318('0x46')](_0x47b00b[_0x9318('0x47')],{})[_0x9318('0x21')](function(_0x317903){var _0x1ee3c8=_0x47b00b[_0x9318('0x48')]['get']({'plain':!![]});if(!_0x1ee3c8)throw new Error(_0x9318('0x49'));if(_0x1ee3c8[_0x9318('0x4a')]==='user'){var _0x5a7d2a=_0x317903[_0x9318('0x22')]({'plain':!![]});var _0x155e69=_0x9318('0x23');return db[_0x9318('0x4b')][_0x9318('0x4c')]({'where':{'name':_0x155e69,'userProfileId':_0x1ee3c8[_0x9318('0x4d')]},'raw':!![]})[_0x9318('0x21')](function(_0x39e21e){if(_0x39e21e&&_0x39e21e['autoAssociation']===0x0){return db[_0x9318('0x24')][_0x9318('0x46')]({'name':_0x5a7d2a[_0x9318('0x27')],'resourceId':_0x5a7d2a['id'],'type':_0x39e21e[_0x9318('0x27')],'sectionId':_0x39e21e['id']},{})[_0x9318('0x21')](function(){return _0x317903;});}else{return _0x317903;}})[_0x9318('0x42')](function(_0x2c41a0){logger[_0x9318('0x25')](_0x9318('0x4e'),_0x2c41a0);throw _0x2c41a0;});}return _0x317903;})[_0x9318('0x21')](respondWithResult(_0x4ce675,0xc9))[_0x9318('0x42')](handleError(_0x4ce675,null));};exports[_0x9318('0x1f')]=function(_0x359871,_0x260c87){if(_0x359871[_0x9318('0x47')]['id']){delete _0x359871['body']['id'];}return db['VoiceChanSpy'][_0x9318('0x4c')]({'where':{'id':_0x359871[_0x9318('0x43')]['id']}})['then'](handleEntityNotFound(_0x260c87,null))[_0x9318('0x21')](saveUpdates(_0x359871[_0x9318('0x47')],null))[_0x9318('0x21')](respondWithResult(_0x260c87,null))[_0x9318('0x42')](handleError(_0x260c87,null));};exports[_0x9318('0x20')]=function(_0xbfd12c,_0x5b7a6f){return db['VoiceChanSpy'][_0x9318('0x4c')]({'where':{'id':_0xbfd12c[_0x9318('0x43')]['id']}})[_0x9318('0x21')](handleEntityNotFound(_0x5b7a6f,null))['then'](removeEntity(_0x5b7a6f,null))['catch'](handleError(_0x5b7a6f,null));};
\ No newline at end of file
+var _0xbf6e=['moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','ChanSpies','error','stack','name','send','map','VoiceChanSpy','rawAttributes','fieldName','type','keys','query','intersection','model','fields','attributes','length','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','findAll','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','zip-dir','fast-json-patch','request-promise'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xbf6e,0x149));var _0xebf6=function(_0x4b6420,_0x126201){_0x4b6420=_0x4b6420-0x0;var _0x37076f=_0xbf6e[_0x4b6420];return _0x37076f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xebf6('0x0'));var jsonpatch=require(_0xebf6('0x1'));var rp=require(_0xebf6('0x2'));var moment=require(_0xebf6('0x3'));var BPromise=require(_0xebf6('0x4'));var Mustache=require(_0xebf6('0x5'));var util=require(_0xebf6('0x6'));var path=require('path');var sox=require(_0xebf6('0x7'));var csv=require(_0xebf6('0x8'));var ejs=require(_0xebf6('0x9'));var fs=require('fs');var fs_extra=require(_0xebf6('0xa'));var _=require(_0xebf6('0xb'));var squel=require(_0xebf6('0xc'));var crypto=require(_0xebf6('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xebf6('0xe'));var toCsv=require(_0xebf6('0x8'));var querystring=require(_0xebf6('0xf'));var Papa=require('papaparse');var Redis=require(_0xebf6('0x10'));var authService=require(_0xebf6('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xebf6('0x12'));var hardwareService=require(_0xebf6('0x13'));var logger=require(_0xebf6('0x14'))(_0xebf6('0x15'));var utils=require(_0xebf6('0x16'));var config=require(_0xebf6('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xebf6('0x18'))['db'];function respondWithStatusCode(_0xedc361,_0x4919f1){_0x4919f1=_0x4919f1||0xcc;return function(_0x332ca0){if(_0x332ca0){return _0xedc361[_0xebf6('0x19')](_0x4919f1);}return _0xedc361[_0xebf6('0x1a')](_0x4919f1)[_0xebf6('0x1b')]();};}function respondWithResult(_0x3f69e6,_0x4dbf51){_0x4dbf51=_0x4dbf51||0xc8;return function(_0x4c01f4){if(_0x4c01f4){return _0x3f69e6['status'](_0x4dbf51)[_0xebf6('0x1c')](_0x4c01f4);}};}function respondWithFilteredResult(_0x1ae2f7,_0x50d80f){return function(_0x35570e){if(_0x35570e){var _0x2c980f=typeof _0x50d80f[_0xebf6('0x1d')]===_0xebf6('0x1e')&&typeof _0x50d80f[_0xebf6('0x1f')]===_0xebf6('0x1e');var _0x219621=_0x35570e[_0xebf6('0x20')];var _0x2d3984=_0x2c980f?0x0:_0x50d80f[_0xebf6('0x1d')];var _0x55fa31=_0x2c980f?_0x35570e['count']:_0x50d80f[_0xebf6('0x1d')]+_0x50d80f[_0xebf6('0x1f')];var _0x10051e;if(_0x55fa31>=_0x219621){_0x55fa31=_0x219621;_0x10051e=0xc8;}else{_0x10051e=0xce;}_0x1ae2f7[_0xebf6('0x1a')](_0x10051e);return _0x1ae2f7[_0xebf6('0x21')](_0xebf6('0x22'),_0x2d3984+'-'+_0x55fa31+'/'+_0x219621)[_0xebf6('0x1c')](_0x35570e);}return null;};}function patchUpdates(_0x80f523){return function(_0x4fb497){try{jsonpatch[_0xebf6('0x23')](_0x4fb497,_0x80f523,!![]);}catch(_0x81fdb3){return BPromise[_0xebf6('0x24')](_0x81fdb3);}return _0x4fb497[_0xebf6('0x25')]();};}function saveUpdates(_0x6303ac,_0x14c8ac){return function(_0x2f419e){if(_0x2f419e){return _0x2f419e[_0xebf6('0x26')](_0x6303ac)[_0xebf6('0x27')](function(_0x2e32c6){return _0x2e32c6;});}return null;};}function removeEntity(_0x232074,_0x2dd2ed){return function(_0x43c4e2){if(_0x43c4e2){return _0x43c4e2[_0xebf6('0x28')]()[_0xebf6('0x27')](function(){var _0x1d0078=_0x43c4e2[_0xebf6('0x29')]({'plain':!![]});var _0x1534b2=_0xebf6('0x2a');return db['UserProfileResource']['destroy']({'where':{'type':_0x1534b2,'resourceId':_0x1d0078['id']}})[_0xebf6('0x27')](function(){return _0x43c4e2;});})['then'](function(){_0x232074[_0xebf6('0x1a')](0xcc)[_0xebf6('0x1b')]();});}};}function handleEntityNotFound(_0x5a01ea,_0x4f39eb){return function(_0x37950c){if(!_0x37950c){_0x5a01ea[_0xebf6('0x19')](0x194);}return _0x37950c;};}function handleError(_0x3c3d5c,_0x7959c8){_0x7959c8=_0x7959c8||0x1f4;return function(_0xedaaeb){logger[_0xebf6('0x2b')](_0xedaaeb[_0xebf6('0x2c')]);if(_0xedaaeb[_0xebf6('0x2d')]){delete _0xedaaeb['name'];}_0x3c3d5c[_0xebf6('0x1a')](_0x7959c8)[_0xebf6('0x2e')](_0xedaaeb);};}exports['index']=function(_0x2fe3ee,_0x28bbea){var _0x5ea6b2={},_0x2901fc={},_0x1fa407={'count':0x0,'rows':[]};var _0x32afa3=_[_0xebf6('0x2f')](db[_0xebf6('0x30')][_0xebf6('0x31')],function(_0x4907d0){return{'name':_0x4907d0[_0xebf6('0x32')],'type':_0x4907d0[_0xebf6('0x33')]['key']};});_0x2901fc['model']=_[_0xebf6('0x2f')](_0x32afa3,_0xebf6('0x2d'));_0x2901fc['query']=_[_0xebf6('0x34')](_0x2fe3ee[_0xebf6('0x35')]);_0x2901fc['filters']=_[_0xebf6('0x36')](_0x2901fc[_0xebf6('0x37')],_0x2901fc[_0xebf6('0x35')]);_0x5ea6b2['attributes']=_[_0xebf6('0x36')](_0x2901fc[_0xebf6('0x37')],qs[_0xebf6('0x38')](_0x2fe3ee[_0xebf6('0x35')]['fields']));_0x5ea6b2['attributes']=_0x5ea6b2[_0xebf6('0x39')][_0xebf6('0x3a')]?_0x5ea6b2['attributes']:_0x2901fc[_0xebf6('0x37')];if(!_0x2fe3ee[_0xebf6('0x35')]['hasOwnProperty'](_0xebf6('0x3b'))){_0x5ea6b2[_0xebf6('0x1f')]=qs[_0xebf6('0x1f')](_0x2fe3ee[_0xebf6('0x35')][_0xebf6('0x1f')]);_0x5ea6b2['offset']=qs[_0xebf6('0x1d')](_0x2fe3ee['query'][_0xebf6('0x1d')]);}_0x5ea6b2['order']=qs[_0xebf6('0x3c')](_0x2fe3ee[_0xebf6('0x35')][_0xebf6('0x3c')]);_0x5ea6b2[_0xebf6('0x3d')]=qs[_0xebf6('0x3e')](_[_0xebf6('0x3f')](_0x2fe3ee['query'],_0x2901fc[_0xebf6('0x3e')]),_0x32afa3);if(_0x2fe3ee[_0xebf6('0x35')][_0xebf6('0x40')]){_0x5ea6b2[_0xebf6('0x3d')]=_[_0xebf6('0x41')](_0x5ea6b2[_0xebf6('0x3d')],{'$or':_['map'](_0x32afa3,function(_0xcbe240){if(_0xcbe240[_0xebf6('0x33')]!==_0xebf6('0x42')){var _0x111ff7={};_0x111ff7[_0xcbe240[_0xebf6('0x2d')]]={'$like':'%'+_0x2fe3ee[_0xebf6('0x35')]['filter']+'%'};return _0x111ff7;}})});}_0x5ea6b2=_['merge']({},_0x5ea6b2,_0x2fe3ee['options']);var _0xd4d5f4={'where':_0x5ea6b2[_0xebf6('0x3d')]};return db[_0xebf6('0x30')]['count'](_0xd4d5f4)[_0xebf6('0x27')](function(_0x1c3809){_0x1fa407[_0xebf6('0x20')]=_0x1c3809;if(_0x2fe3ee['query'][_0xebf6('0x43')]){_0x5ea6b2[_0xebf6('0x44')]=[{'all':!![]}];}return db['VoiceChanSpy'][_0xebf6('0x45')](_0x5ea6b2);})[_0xebf6('0x27')](function(_0x17c4af){_0x1fa407['rows']=_0x17c4af;return _0x1fa407;})[_0xebf6('0x27')](respondWithFilteredResult(_0x28bbea,_0x5ea6b2))['catch'](handleError(_0x28bbea,null));};exports['show']=function(_0x256552,_0x470f62){var _0x10ca29={'raw':![],'where':{'id':_0x256552['params']['id']}},_0x2ac140={};_0x2ac140[_0xebf6('0x37')]=_['keys'](db[_0xebf6('0x30')][_0xebf6('0x31')]);_0x2ac140[_0xebf6('0x35')]=_[_0xebf6('0x34')](_0x256552[_0xebf6('0x35')]);_0x2ac140['filters']=_['intersection'](_0x2ac140[_0xebf6('0x37')],_0x2ac140[_0xebf6('0x35')]);_0x10ca29[_0xebf6('0x39')]=_[_0xebf6('0x36')](_0x2ac140['model'],qs[_0xebf6('0x38')](_0x256552[_0xebf6('0x35')][_0xebf6('0x38')]));_0x10ca29[_0xebf6('0x39')]=_0x10ca29[_0xebf6('0x39')][_0xebf6('0x3a')]?_0x10ca29[_0xebf6('0x39')]:_0x2ac140['model'];if(_0x256552[_0xebf6('0x35')][_0xebf6('0x43')]){_0x10ca29[_0xebf6('0x44')]=[{'all':!![]}];}_0x10ca29=_[_0xebf6('0x41')]({},_0x10ca29,_0x256552[_0xebf6('0x46')]);return db[_0xebf6('0x30')][_0xebf6('0x47')](_0x10ca29)['then'](handleEntityNotFound(_0x470f62,null))[_0xebf6('0x27')](respondWithResult(_0x470f62,null))['catch'](handleError(_0x470f62,null));};exports[_0xebf6('0x48')]=function(_0x31d8ba,_0x5d84ac){return db[_0xebf6('0x30')]['create'](_0x31d8ba[_0xebf6('0x49')],{})[_0xebf6('0x27')](function(_0x186655){var _0x32c8b1=_0x31d8ba[_0xebf6('0x4a')]['get']({'plain':!![]});if(!_0x32c8b1)throw new Error(_0xebf6('0x4b'));if(_0x32c8b1[_0xebf6('0x4c')]==='user'){var _0x1f98fd=_0x186655[_0xebf6('0x29')]({'plain':!![]});var _0x1455c4=_0xebf6('0x2a');return db[_0xebf6('0x4d')]['find']({'where':{'name':_0x1455c4,'userProfileId':_0x32c8b1[_0xebf6('0x4e')]},'raw':!![]})[_0xebf6('0x27')](function(_0x212414){if(_0x212414&&_0x212414[_0xebf6('0x4f')]===0x0){return db['UserProfileResource'][_0xebf6('0x48')]({'name':_0x1f98fd[_0xebf6('0x2d')],'resourceId':_0x1f98fd['id'],'type':_0x212414[_0xebf6('0x2d')],'sectionId':_0x212414['id']},{})[_0xebf6('0x27')](function(){return _0x186655;});}else{return _0x186655;}})[_0xebf6('0x50')](function(_0x2e7e30){logger[_0xebf6('0x2b')](_0xebf6('0x51'),_0x2e7e30);throw _0x2e7e30;});}return _0x186655;})[_0xebf6('0x27')](respondWithResult(_0x5d84ac,0xc9))['catch'](handleError(_0x5d84ac,null));};exports[_0xebf6('0x26')]=function(_0xe78fe5,_0x24ed4e){if(_0xe78fe5['body']['id']){delete _0xe78fe5[_0xebf6('0x49')]['id'];}return db['VoiceChanSpy']['find']({'where':{'id':_0xe78fe5[_0xebf6('0x52')]['id']}})[_0xebf6('0x27')](handleEntityNotFound(_0x24ed4e,null))[_0xebf6('0x27')](saveUpdates(_0xe78fe5[_0xebf6('0x49')],null))[_0xebf6('0x27')](respondWithResult(_0x24ed4e,null))['catch'](handleError(_0x24ed4e,null));};exports[_0xebf6('0x28')]=function(_0x5a1b51,_0x4ed306){return db['VoiceChanSpy'][_0xebf6('0x47')]({'where':{'id':_0x5a1b51[_0xebf6('0x52')]['id']}})['then'](handleEntityNotFound(_0x4ed306,null))[_0xebf6('0x27')](removeEntity(_0x4ed306,null))[_0xebf6('0x50')](handleError(_0x4ed306,null));};
\ No newline at end of file
index c67df6b..0c7c945 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e51=['prefix','push','Set','format','CDR(type)=%s','chanspy','record','merge','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','SIP/%s,%s','name','options','join','StopMixMonitor','length','internal','concat','User','findAll','agent','then','exports','models','define','voice_chanspy','VoiceExtension','bulkCreate','destroy','catch','lodash','util','bluebird','./voiceChanSpy.attributes','from-sip','%s%s'];(function(_0x4067ac,_0x363603){var _0x53d74d=function(_0x492ad4){while(--_0x492ad4){_0x4067ac['push'](_0x4067ac['shift']());}};_0x53d74d(++_0x363603);}(_0x3e51,0x132));var _0x13e5=function(_0x3936cc,_0x976f06){_0x3936cc=_0x3936cc-0x0;var _0x1abf00=_0x3e51[_0x3936cc];return _0x1abf00;};'use strict';var _=require(_0x13e5('0x0'));var util=require(_0x13e5('0x1'));var BPromise=require(_0x13e5('0x2'));var attributes=require(_0x13e5('0x3'));var getUserApplications=function(_0x18d6eb,_0x1c0996,_0x4bba35){var _0x4497d3=0x1;var _0x4b534a=[];var _0x8b4088={'context':_0x1c0996['context']||_0x13e5('0x4'),'exten':util['format'](_0x13e5('0x5'),_0x18d6eb[_0x13e5('0x6')],_0x4bba35),'type':'system','isApp':![],'ChanSpyId':_0x18d6eb['id'],'UserId':_0x1c0996['id']};_0x4b534a[_0x13e5('0x7')](_['merge']({'app':_0x13e5('0x8'),'appdata':util[_0x13e5('0x9')](_0x13e5('0xa'),_0x13e5('0xb')),'priority':_0x4497d3++},_0x8b4088));if(_0x18d6eb[_0x13e5('0xc')]){_0x4b534a[_0x13e5('0x7')](_[_0x13e5('0xd')]({'app':_0x13e5('0xe'),'appdata':util[_0x13e5('0x9')](_0x13e5('0xf'),_0x18d6eb[_0x13e5('0x10')]),'priority':_0x4497d3++},_0x8b4088));}if(_0x18d6eb[_0x13e5('0x11')]){_0x4b534a[_0x13e5('0x7')](_[_0x13e5('0xd')]({'app':_0x13e5('0x12'),'appdata':_0x18d6eb['password'],'priority':_0x4497d3++},_0x8b4088));}_0x4b534a[_0x13e5('0x7')](_[_0x13e5('0xd')]({'app':'ChanSpy','appdata':util['format'](_0x13e5('0x13'),_0x1c0996[_0x13e5('0x14')],_0x18d6eb[_0x13e5('0x15')]?_0x18d6eb[_0x13e5('0x15')][_0x13e5('0x16')](''):''),'priority':_0x4497d3++},_0x8b4088));if(_0x18d6eb[_0x13e5('0xc')]){_0x4b534a[_0x13e5('0x7')](_[_0x13e5('0xd')]({'app':_0x13e5('0x17'),'priority':_0x4497d3++},_0x8b4088));}return _0x4b534a;};var getChanSpyApplications=function(_0x5a709c,_0x677e35){var _0x161861=[];for(var _0x28cb03=0x0,_0x18b5d4=0x1;_0x28cb03<_0x677e35[_0x13e5('0x18')];_0x28cb03++,_0x18b5d4=0x1){_0x161861=_0x161861['concat'](getUserApplications(_0x5a709c,_0x677e35[_0x28cb03],_0x677e35[_0x28cb03][_0x13e5('0x19')]));if(_0x677e35[_0x28cb03][_0x13e5('0x19')]!=_0x677e35[_0x28cb03]['name']){_0x161861=_0x161861[_0x13e5('0x1a')](getUserApplications(_0x5a709c,_0x677e35[_0x28cb03],_0x677e35[_0x28cb03]['name']));}}return _0x161861;};var getChanSpyPromise=function(_0x3ee11,_0x3c5b2){return new BPromise(function(_0x367cb3,_0x45d243){return _0x3ee11[_0x13e5('0x1b')][_0x13e5('0x1c')]({'attributes':['id',_0x13e5('0x14'),_0x13e5('0x19')],'where':{'role':_0x13e5('0x1d'),'chanspy':!![]},'raw':!![]})[_0x13e5('0x1e')](function(_0x1fe0f7){if(_0x1fe0f7){return _0x367cb3(getChanSpyApplications(_0x3c5b2,_0x1fe0f7));}return _0x367cb3([]);})['catch'](function(_0x256f38){_0x45d243(_0x256f38);});});};module[_0x13e5('0x1f')]=function(_0x2db193,_0x15fe77){var _0x202168=_0x2db193[_0x13e5('0x20')];return _0x2db193[_0x13e5('0x21')]('VoiceChanSpy',attributes,{'tableName':_0x13e5('0x22'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x2e7641,_0x90fe82,_0x50bf66){return getChanSpyPromise(_0x202168,_0x2e7641)['then'](function(_0x91a7ad){if(_0x91a7ad&&_0x91a7ad[_0x13e5('0x18')]){return _0x202168[_0x13e5('0x23')][_0x13e5('0x24')](_0x91a7ad);}})[_0x13e5('0x1e')](function(){_0x50bf66();})['catch'](function(_0xaac92c){_0x50bf66(_0xaac92c);});},'afterUpdate':function(_0x3f05cf,_0x99bedb,_0x114a42){return _0x202168['VoiceExtension'][_0x13e5('0x25')]({'where':{'ChanSpyId':_0x3f05cf['id']}})[_0x13e5('0x1e')](function(){return getChanSpyPromise(_0x202168,_0x3f05cf);})[_0x13e5('0x1e')](function(_0x145fcc){if(_0x145fcc&&_0x145fcc[_0x13e5('0x18')]){return _0x202168['VoiceExtension'][_0x13e5('0x24')](_0x145fcc);}})[_0x13e5('0x1e')](function(){_0x114a42();})[_0x13e5('0x26')](function(_0x5da649){_0x114a42(_0x5da649);});},'afterDestroy':function(_0x48d5a9,_0x3f3add,_0x4d2f12){return _0x202168[_0x13e5('0x23')][_0x13e5('0x25')]({'where':{'ChanSpyId':_0x48d5a9['id']}})[_0x13e5('0x1e')](function(){_0x4d2f12();})[_0x13e5('0x26')](function(_0x1b913f){_0x4d2f12(_0x1b913f);});}}});};
\ No newline at end of file
+var _0x359c=['prefix','push','merge','Set','chanspy','record','MixMonitor','format','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','length','internal','findAll','agent','then','catch','exports','models','VoiceExtension','bulkCreate','destroy','lodash','util','bluebird','context','%s%s'];(function(_0x432d65,_0x1cb101){var _0x4669dc=function(_0x3c067c){while(--_0x3c067c){_0x432d65['push'](_0x432d65['shift']());}};_0x4669dc(++_0x1cb101);}(_0x359c,0x64));var _0xc359=function(_0x6be190,_0x25e8dd){_0x6be190=_0x6be190-0x0;var _0x3867df=_0x359c[_0x6be190];return _0x3867df;};'use strict';var _=require(_0xc359('0x0'));var util=require(_0xc359('0x1'));var BPromise=require(_0xc359('0x2'));var attributes=require('./voiceChanSpy.attributes');var getUserApplications=function(_0x26ac24,_0x13b9fc,_0x3d30c6){var _0x7f7a02=0x1;var _0xaa9c40=[];var _0x35dc25={'context':_0x13b9fc[_0xc359('0x3')]||'from-sip','exten':util['format'](_0xc359('0x4'),_0x26ac24[_0xc359('0x5')],_0x3d30c6),'type':'system','isApp':![],'ChanSpyId':_0x26ac24['id'],'UserId':_0x13b9fc['id']};_0xaa9c40[_0xc359('0x6')](_[_0xc359('0x7')]({'app':_0xc359('0x8'),'appdata':util['format']('CDR(type)=%s',_0xc359('0x9')),'priority':_0x7f7a02++},_0x35dc25));if(_0x26ac24[_0xc359('0xa')]){_0xaa9c40['push'](_[_0xc359('0x7')]({'app':_0xc359('0xb'),'appdata':util[_0xc359('0xc')](_0xc359('0xd'),_0x26ac24[_0xc359('0xe')]),'priority':_0x7f7a02++},_0x35dc25));}if(_0x26ac24[_0xc359('0xf')]){_0xaa9c40[_0xc359('0x6')](_[_0xc359('0x7')]({'app':_0xc359('0x10'),'appdata':_0x26ac24[_0xc359('0x11')],'priority':_0x7f7a02++},_0x35dc25));}_0xaa9c40[_0xc359('0x6')](_[_0xc359('0x7')]({'app':_0xc359('0x12'),'appdata':util[_0xc359('0xc')](_0xc359('0x13'),_0x13b9fc[_0xc359('0x14')],_0x26ac24[_0xc359('0x15')]?_0x26ac24[_0xc359('0x15')][_0xc359('0x16')](''):''),'priority':_0x7f7a02++},_0x35dc25));if(_0x26ac24[_0xc359('0xa')]){_0xaa9c40[_0xc359('0x6')](_['merge']({'app':_0xc359('0x17'),'priority':_0x7f7a02++},_0x35dc25));}return _0xaa9c40;};var getChanSpyApplications=function(_0xea4578,_0x4030aa){var _0x3703ed=[];for(var _0x52d3b0=0x0,_0x5c5a5f=0x1;_0x52d3b0<_0x4030aa[_0xc359('0x18')];_0x52d3b0++,_0x5c5a5f=0x1){_0x3703ed=_0x3703ed['concat'](getUserApplications(_0xea4578,_0x4030aa[_0x52d3b0],_0x4030aa[_0x52d3b0][_0xc359('0x19')]));if(_0x4030aa[_0x52d3b0][_0xc359('0x19')]!=_0x4030aa[_0x52d3b0][_0xc359('0x14')]){_0x3703ed=_0x3703ed['concat'](getUserApplications(_0xea4578,_0x4030aa[_0x52d3b0],_0x4030aa[_0x52d3b0][_0xc359('0x14')]));}}return _0x3703ed;};var getChanSpyPromise=function(_0x2ec0bd,_0x573164){return new BPromise(function(_0x3dca5d,_0x441e22){return _0x2ec0bd['User'][_0xc359('0x1a')]({'attributes':['id','name',_0xc359('0x19')],'where':{'role':_0xc359('0x1b'),'chanspy':!![]},'raw':!![]})[_0xc359('0x1c')](function(_0x3a2eca){if(_0x3a2eca){return _0x3dca5d(getChanSpyApplications(_0x573164,_0x3a2eca));}return _0x3dca5d([]);})[_0xc359('0x1d')](function(_0x5e08e3){_0x441e22(_0x5e08e3);});});};module[_0xc359('0x1e')]=function(_0x3a4c38,_0x3d7569){var _0x4d5cf7=_0x3a4c38[_0xc359('0x1f')];return _0x3a4c38['define']('VoiceChanSpy',attributes,{'tableName':'voice_chanspy','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x22e44a,_0x594650,_0x3fa66f){return getChanSpyPromise(_0x4d5cf7,_0x22e44a)[_0xc359('0x1c')](function(_0x52f829){if(_0x52f829&&_0x52f829['length']){return _0x4d5cf7[_0xc359('0x20')]['bulkCreate'](_0x52f829);}})['then'](function(){_0x3fa66f();})[_0xc359('0x1d')](function(_0x3bf725){_0x3fa66f(_0x3bf725);});},'afterUpdate':function(_0x283952,_0x33da74,_0x5e2e6c){return _0x4d5cf7[_0xc359('0x20')]['destroy']({'where':{'ChanSpyId':_0x283952['id']}})['then'](function(){return getChanSpyPromise(_0x4d5cf7,_0x283952);})[_0xc359('0x1c')](function(_0x2830b3){if(_0x2830b3&&_0x2830b3[_0xc359('0x18')]){return _0x4d5cf7[_0xc359('0x20')][_0xc359('0x21')](_0x2830b3);}})[_0xc359('0x1c')](function(){_0x5e2e6c();})[_0xc359('0x1d')](function(_0x6227da){_0x5e2e6c(_0x6227da);});},'afterDestroy':function(_0x5b26bf,_0xd58606,_0x577467){return _0x4d5cf7['VoiceExtension'][_0xc359('0x22')]({'where':{'ChanSpyId':_0x5b26bf['id']}})[_0xc359('0x1c')](function(){_0x577467();})[_0xc359('0x1d')](function(_0x24ebf4){_0x577467(_0x24ebf4);});}}});};
\ No newline at end of file
index 5e9e4e4..b28ca28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7af2=['catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','error','message','VoiceChanSpy,\x20%s,\x20%s','result'];(function(_0x12f910,_0x5d9f15){var _0x52afe6=function(_0x5ee9fc){while(--_0x5ee9fc){_0x12f910['push'](_0x12f910['shift']());}};_0x52afe6(++_0x5d9f15);}(_0x7af2,0x119));var _0x27af=function(_0x3262cc,_0x183e0b){_0x3262cc=_0x3262cc-0x0;var _0xa63dd=_0x7af2[_0x3262cc];return _0xa63dd;};'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')]('VoiceChanSpy,\x20%s,\x20%s',_0x572219,_0x27af('0xe'));logger['debug']('VoiceChanSpy,\x20%s,\x20%s,\x20%s',_0x572219,_0x27af('0xe'),JSON['stringify'](_0xfa1882));if(_0xfa1882['error']){if(_0xfa1882[_0x27af('0xf')]['code']===0x1f4){logger[_0x27af('0xf')]('VoiceChanSpy,\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')]('VoiceChanSpy,\x20%s,\x20%s',_0x572219,_0x13f8ed);_0x389e97(_0x13f8ed);});});}
\ No newline at end of file
+var _0xe739=['rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','error','code','VoiceChanSpy,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','../../config/logger'];(function(_0x1d6a6c,_0x1f0fca){var _0x320a67=function(_0x56e64a){while(--_0x56e64a){_0x1d6a6c['push'](_0x1d6a6c['shift']());}};_0x320a67(++_0x1f0fca);}(_0xe739,0x105));var _0x9e73=function(_0x15a720,_0x285add){_0x15a720=_0x15a720-0x0;var _0x10233b=_0xe739[_0x15a720];return _0x10233b;};'use strict';var _=require(_0x9e73('0x0'));var util=require('util');var moment=require(_0x9e73('0x1'));var BPromise=require(_0x9e73('0x2'));var rs=require(_0x9e73('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x9e73('0x4'))(_0x9e73('0x5'));var config=require(_0x9e73('0x6'));var jayson=require(_0x9e73('0x7'));var client=jayson['client'][_0x9e73('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x26cb5b,_0xb37872,_0x5e46e7){return new BPromise(function(_0xa49f86,_0x1ee042){return client[_0x9e73('0x9')](_0x26cb5b,_0x5e46e7)[_0x9e73('0xa')](function(_0x14de8a){logger[_0x9e73('0xb')]('VoiceChanSpy,\x20%s,\x20%s',_0xb37872,_0x9e73('0xc'));logger['debug']('VoiceChanSpy,\x20%s,\x20%s,\x20%s',_0xb37872,_0x9e73('0xc'),JSON['stringify'](_0x14de8a));if(_0x14de8a[_0x9e73('0xd')]){if(_0x14de8a[_0x9e73('0xd')][_0x9e73('0xe')]===0x1f4){logger['error'](_0x9e73('0xf'),_0xb37872,_0x14de8a[_0x9e73('0xd')][_0x9e73('0x10')]);return _0x1ee042(_0x14de8a[_0x9e73('0xd')]['message']);}logger[_0x9e73('0xd')](_0x9e73('0xf'),_0xb37872,_0x14de8a[_0x9e73('0xd')]['message']);return _0xa49f86(_0x14de8a[_0x9e73('0xd')][_0x9e73('0x10')]);}else{logger['info'](_0x9e73('0xf'),_0xb37872,_0x9e73('0xc'));_0xa49f86(_0x14de8a[_0x9e73('0x11')]['message']);}})[_0x9e73('0x12')](function(_0x51968a){logger[_0x9e73('0xd')]('VoiceChanSpy,\x20%s,\x20%s',_0xb37872,_0x51968a);_0x1ee042(_0x51968a);});});}
\ No newline at end of file
index 1aeeb9c..93227f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a3a=['show','post','create','put','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated'];(function(_0x5bda4f,_0x22b15f){var _0x11f675=function(_0x28cd5a){while(--_0x28cd5a){_0x5bda4f['push'](_0x5bda4f['shift']());}};_0x11f675(++_0x22b15f);}(_0x3a3a,0x111));var _0xa3a3=function(_0x12e7d4,_0x15e458){_0x12e7d4=_0x12e7d4-0x0;var _0x28610c=_0x3a3a[_0x12e7d4];return _0x28610c;};'use strict';var multer=require(_0xa3a3('0x0'));var util=require(_0xa3a3('0x1'));var path=require('path');var timeout=require(_0xa3a3('0x2'));var express=require(_0xa3a3('0x3'));var router=express[_0xa3a3('0x4')]();var fs_extra=require(_0xa3a3('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xa3a3('0x6'));var config=require(_0xa3a3('0x7'));var controller=require('./voiceContext.controller');router[_0xa3a3('0x8')]('/',auth['isAuthenticated'](),controller[_0xa3a3('0x9')]);router['get'](_0xa3a3('0xa'),auth[_0xa3a3('0xb')](),controller[_0xa3a3('0xc')]);router[_0xa3a3('0xd')]('/',auth[_0xa3a3('0xb')](),controller[_0xa3a3('0xe')]);router[_0xa3a3('0xf')](_0xa3a3('0xa'),auth[_0xa3a3('0xb')](),controller['update']);router[_0xa3a3('0x10')](_0xa3a3('0xa'),auth[_0xa3a3('0xb')](),controller[_0xa3a3('0x11')]);module[_0xa3a3('0x12')]=router;
\ No newline at end of file
+var _0x5906=['./voiceContext.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','multer','util','path','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x1dd532,_0x36e81c){var _0x3732aa=function(_0x19d50a){while(--_0x19d50a){_0x1dd532['push'](_0x1dd532['shift']());}};_0x3732aa(++_0x36e81c);}(_0x5906,0x10a));var _0x6590=function(_0x2a83d8,_0xe190c9){_0x2a83d8=_0x2a83d8-0x0;var _0x29ae0f=_0x5906[_0x2a83d8];return _0x29ae0f;};'use strict';var multer=require(_0x6590('0x0'));var util=require(_0x6590('0x1'));var path=require(_0x6590('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x6590('0x3'));var auth=require(_0x6590('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x6590('0x5'));var controller=require(_0x6590('0x6'));router[_0x6590('0x7')]('/',auth[_0x6590('0x8')](),controller[_0x6590('0x9')]);router[_0x6590('0x7')](_0x6590('0xa'),auth[_0x6590('0x8')](),controller[_0x6590('0xb')]);router[_0x6590('0xc')]('/',auth[_0x6590('0x8')](),controller['create']);router[_0x6590('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x6590('0xe')]);router[_0x6590('0xf')]('/:id',auth[_0x6590('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 9dca4da..2fb37b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa616=['exports','STRING','sequelize'];(function(_0x4b191c,_0x384ea6){var _0x28c0b7=function(_0x2e0069){while(--_0x2e0069){_0x4b191c['push'](_0x4b191c['shift']());}};_0x28c0b7(++_0x384ea6);}(_0xa616,0xda));var _0x6a61=function(_0x48291a,_0x5a29dc){_0x48291a=_0x48291a-0x0;var _0xf76871=_0xa616[_0x48291a];return _0xf76871;};'use strict';var Sequelize=require(_0x6a61('0x0'));module[_0x6a61('0x1')]={'name':{'type':Sequelize[_0x6a61('0x2')],'unique':'name'},'description':{'type':Sequelize[_0x6a61('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xacc2=['sequelize','exports','STRING','name'];(function(_0x57935b,_0x58a5a8){var _0x553104=function(_0x30ca25){while(--_0x30ca25){_0x57935b['push'](_0x57935b['shift']());}};_0x553104(++_0x58a5a8);}(_0xacc2,0xf8));var _0x2acc=function(_0x3d0b13,_0x3c3598){_0x3d0b13=_0x3d0b13-0x0;var _0x30cc19=_0xacc2[_0x3d0b13];return _0x30cc19;};'use strict';var Sequelize=require(_0x2acc('0x0'));module[_0x2acc('0x1')]={'name':{'type':Sequelize[_0x2acc('0x2')],'unique':_0x2acc('0x3')},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
index a87bd64..949ec36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0b7=['undefined','count','offset','limit','reject','save','destroy','get','Contexts','stack','name','send','index','map','VoiceContext','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','sort','where','pick','filters','merge','VIRTUAL','options','include','findAll','rows','show','params','includeAll','find','create','body','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','user','role','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','readFileSync','join','root','server/files/templates/context.ejs','eml-format','zip-dir','fast-json-patch','moment','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client','http','then','VoiceContext,\x20%s,\x20%s','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','message','info','request\x20sent','catch','sendStatus','status','end','json'];(function(_0x2f7ce1,_0x2fb0e9){var _0x1af9c1=function(_0x433c65){while(--_0x433c65){_0x2f7ce1['push'](_0x2f7ce1['shift']());}};_0x1af9c1(++_0x2fb0e9);}(_0xa0b7,0x16b));var _0x7a0b=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0xa0b7[_0x1d1779];return _0x2377e9;};'use strict';var emlformat=require(_0x7a0b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7a0b('0x1'));var jsonpatch=require(_0x7a0b('0x2'));var rp=require('request-promise');var moment=require(_0x7a0b('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x7a0b('0x4'));var util=require(_0x7a0b('0x5'));var path=require(_0x7a0b('0x6'));var sox=require('sox');var csv=require(_0x7a0b('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7a0b('0x8'));var _=require(_0x7a0b('0x9'));var squel=require(_0x7a0b('0xa'));var crypto=require(_0x7a0b('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x7a0b('0xc'));var toCsv=require(_0x7a0b('0x7'));var querystring=require(_0x7a0b('0xd'));var Papa=require(_0x7a0b('0xe'));var Redis=require(_0x7a0b('0xf'));var authService=require(_0x7a0b('0x10'));var qs=require(_0x7a0b('0x11'));var as=require(_0x7a0b('0x12'));var hardwareService=require(_0x7a0b('0x13'));var logger=require('../../config/logger')(_0x7a0b('0x14'));var utils=require(_0x7a0b('0x15'));var config=require(_0x7a0b('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x7a0b('0x17'))['db'];var jayson=require(_0x7a0b('0x18'));var client=jayson[_0x7a0b('0x19')][_0x7a0b('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x306577,_0x123ba5,_0x463f26,_0x481982){return new BPromise(function(_0x52cc47,_0x84f74e){var _0x3d0d22=_0x481982||client;return _0x3d0d22['request'](_0x306577,_0x463f26)[_0x7a0b('0x1b')](function(_0x29f314){logger['info'](_0x7a0b('0x1c'),_0x123ba5,'request\x20sent');logger[_0x7a0b('0x1d')](_0x7a0b('0x1e'),_0x123ba5,'request\x20sent',JSON[_0x7a0b('0x1f')](_0x29f314));if(_0x29f314[_0x7a0b('0x20')]){if(_0x29f314[_0x7a0b('0x20')]['code']===0x1f4){logger['error'](_0x7a0b('0x1c'),_0x123ba5,_0x29f314[_0x7a0b('0x20')]['message']);return _0x84f74e(_0x29f314['error'][_0x7a0b('0x21')]);}logger[_0x7a0b('0x20')](_0x7a0b('0x1c'),_0x123ba5,_0x29f314['error'][_0x7a0b('0x21')]);return _0x52cc47(_0x29f314['error'][_0x7a0b('0x21')]);}else{logger[_0x7a0b('0x22')](_0x7a0b('0x1c'),_0x123ba5,_0x7a0b('0x23'));_0x52cc47(_0x29f314['result'][_0x7a0b('0x21')]);}})[_0x7a0b('0x24')](function(_0x204140){logger[_0x7a0b('0x20')](_0x7a0b('0x1c'),_0x123ba5,_0x204140);_0x84f74e(_0x204140);});});}function respondWithStatusCode(_0x2d4376,_0x970d52){_0x970d52=_0x970d52||0xcc;return function(_0x3808e4){if(_0x3808e4){return _0x2d4376[_0x7a0b('0x25')](_0x970d52);}return _0x2d4376[_0x7a0b('0x26')](_0x970d52)[_0x7a0b('0x27')]();};}function respondWithResult(_0x443658,_0x3f1a9a){_0x3f1a9a=_0x3f1a9a||0xc8;return function(_0x5f28d9){if(_0x5f28d9){return _0x443658[_0x7a0b('0x26')](_0x3f1a9a)[_0x7a0b('0x28')](_0x5f28d9);}};}function respondWithFilteredResult(_0x3cb474,_0x3d3d3d){return function(_0x5d4b4a){if(_0x5d4b4a){var _0x40f203=typeof _0x3d3d3d['offset']===_0x7a0b('0x29')&&typeof _0x3d3d3d['limit']===_0x7a0b('0x29');var _0x9aaccd=_0x5d4b4a[_0x7a0b('0x2a')];var _0x5bf0a2=_0x40f203?0x0:_0x3d3d3d[_0x7a0b('0x2b')];var _0x2f77da=_0x40f203?_0x5d4b4a['count']:_0x3d3d3d[_0x7a0b('0x2b')]+_0x3d3d3d[_0x7a0b('0x2c')];var _0xb9d10d;if(_0x2f77da>=_0x9aaccd){_0x2f77da=_0x9aaccd;_0xb9d10d=0xc8;}else{_0xb9d10d=0xce;}_0x3cb474[_0x7a0b('0x26')](_0xb9d10d);return _0x3cb474['set']('Content-Range',_0x5bf0a2+'-'+_0x2f77da+'/'+_0x9aaccd)[_0x7a0b('0x28')](_0x5d4b4a);}return null;};}function patchUpdates(_0x2bb1ba){return function(_0x1b9644){try{jsonpatch['apply'](_0x1b9644,_0x2bb1ba,!![]);}catch(_0x42cc32){return BPromise[_0x7a0b('0x2d')](_0x42cc32);}return _0x1b9644[_0x7a0b('0x2e')]();};}function saveUpdates(_0x165d23,_0x4dae3f){return function(_0x1fe3d0){if(_0x1fe3d0){return _0x1fe3d0['update'](_0x165d23)[_0x7a0b('0x1b')](function(_0x50a178){return _0x50a178;});}return null;};}function removeEntity(_0x2f6b25,_0x4002c8){return function(_0x37fd90){if(_0x37fd90){return _0x37fd90[_0x7a0b('0x2f')]()[_0x7a0b('0x1b')](function(){var _0x4708ee=_0x37fd90[_0x7a0b('0x30')]({'plain':!![]});var _0x46bb55=_0x7a0b('0x31');return db['UserProfileResource'][_0x7a0b('0x2f')]({'where':{'type':_0x46bb55,'resourceId':_0x4708ee['id']}})['then'](function(){return _0x37fd90;});})[_0x7a0b('0x1b')](function(){_0x2f6b25[_0x7a0b('0x26')](0xcc)[_0x7a0b('0x27')]();});}};}function handleEntityNotFound(_0x312e1a,_0x37a5c5){return function(_0x17201f){if(!_0x17201f){_0x312e1a[_0x7a0b('0x25')](0x194);}return _0x17201f;};}function handleError(_0x181648,_0x3c4891){_0x3c4891=_0x3c4891||0x1f4;return function(_0x47dbb1){logger[_0x7a0b('0x20')](_0x47dbb1[_0x7a0b('0x32')]);if(_0x47dbb1['name']){delete _0x47dbb1[_0x7a0b('0x33')];}_0x181648['status'](_0x3c4891)[_0x7a0b('0x34')](_0x47dbb1);};}exports[_0x7a0b('0x35')]=function(_0x31250b,_0x3d224c){var _0x1e8c21={},_0x107dfb={},_0x45a77c={'count':0x0,'rows':[]};var _0x3d1936=_[_0x7a0b('0x36')](db[_0x7a0b('0x37')][_0x7a0b('0x38')],function(_0x3b2711){return{'name':_0x3b2711[_0x7a0b('0x39')],'type':_0x3b2711[_0x7a0b('0x3a')][_0x7a0b('0x3b')]};});_0x107dfb[_0x7a0b('0x3c')]=_[_0x7a0b('0x36')](_0x3d1936,_0x7a0b('0x33'));_0x107dfb[_0x7a0b('0x3d')]=_[_0x7a0b('0x3e')](_0x31250b[_0x7a0b('0x3d')]);_0x107dfb['filters']=_[_0x7a0b('0x3f')](_0x107dfb[_0x7a0b('0x3c')],_0x107dfb['query']);_0x1e8c21[_0x7a0b('0x40')]=_[_0x7a0b('0x3f')](_0x107dfb[_0x7a0b('0x3c')],qs[_0x7a0b('0x41')](_0x31250b[_0x7a0b('0x3d')]['fields']));_0x1e8c21[_0x7a0b('0x40')]=_0x1e8c21[_0x7a0b('0x40')][_0x7a0b('0x42')]?_0x1e8c21['attributes']:_0x107dfb[_0x7a0b('0x3c')];if(!_0x31250b['query']['hasOwnProperty'](_0x7a0b('0x43'))){_0x1e8c21[_0x7a0b('0x2c')]=qs[_0x7a0b('0x2c')](_0x31250b[_0x7a0b('0x3d')][_0x7a0b('0x2c')]);_0x1e8c21['offset']=qs['offset'](_0x31250b[_0x7a0b('0x3d')][_0x7a0b('0x2b')]);}_0x1e8c21['order']=qs['sort'](_0x31250b[_0x7a0b('0x3d')][_0x7a0b('0x44')]);_0x1e8c21[_0x7a0b('0x45')]=qs['filters'](_[_0x7a0b('0x46')](_0x31250b['query'],_0x107dfb[_0x7a0b('0x47')]),_0x3d1936);if(_0x31250b[_0x7a0b('0x3d')]['filter']){_0x1e8c21[_0x7a0b('0x45')]=_[_0x7a0b('0x48')](_0x1e8c21[_0x7a0b('0x45')],{'$or':_[_0x7a0b('0x36')](_0x3d1936,function(_0xa915d8){if(_0xa915d8[_0x7a0b('0x3a')]!==_0x7a0b('0x49')){var _0x2eb899={};_0x2eb899[_0xa915d8[_0x7a0b('0x33')]]={'$like':'%'+_0x31250b['query']['filter']+'%'};return _0x2eb899;}})});}_0x1e8c21=_['merge']({},_0x1e8c21,_0x31250b[_0x7a0b('0x4a')]);var _0x27d4b9={'where':_0x1e8c21[_0x7a0b('0x45')]};return db['VoiceContext'][_0x7a0b('0x2a')](_0x27d4b9)[_0x7a0b('0x1b')](function(_0x39e39d){_0x45a77c['count']=_0x39e39d;if(_0x31250b[_0x7a0b('0x3d')]['includeAll']){_0x1e8c21[_0x7a0b('0x4b')]=[{'all':!![]}];}return db[_0x7a0b('0x37')][_0x7a0b('0x4c')](_0x1e8c21);})[_0x7a0b('0x1b')](function(_0x4a6510){_0x45a77c[_0x7a0b('0x4d')]=_0x4a6510;return _0x45a77c;})[_0x7a0b('0x1b')](respondWithFilteredResult(_0x3d224c,_0x1e8c21))[_0x7a0b('0x24')](handleError(_0x3d224c,null));};exports[_0x7a0b('0x4e')]=function(_0x4eb463,_0xeab844){var _0x450a15={'raw':![],'where':{'id':_0x4eb463[_0x7a0b('0x4f')]['id']}},_0x426823={};_0x426823[_0x7a0b('0x3c')]=_['keys'](db[_0x7a0b('0x37')][_0x7a0b('0x38')]);_0x426823[_0x7a0b('0x3d')]=_[_0x7a0b('0x3e')](_0x4eb463[_0x7a0b('0x3d')]);_0x426823[_0x7a0b('0x47')]=_[_0x7a0b('0x3f')](_0x426823[_0x7a0b('0x3c')],_0x426823[_0x7a0b('0x3d')]);_0x450a15[_0x7a0b('0x40')]=_[_0x7a0b('0x3f')](_0x426823[_0x7a0b('0x3c')],qs[_0x7a0b('0x41')](_0x4eb463[_0x7a0b('0x3d')]['fields']));_0x450a15['attributes']=_0x450a15['attributes']['length']?_0x450a15[_0x7a0b('0x40')]:_0x426823['model'];if(_0x4eb463[_0x7a0b('0x3d')][_0x7a0b('0x50')]){_0x450a15[_0x7a0b('0x4b')]=[{'all':!![]}];}_0x450a15=_[_0x7a0b('0x48')]({},_0x450a15,_0x4eb463[_0x7a0b('0x4a')]);return db[_0x7a0b('0x37')][_0x7a0b('0x51')](_0x450a15)[_0x7a0b('0x1b')](handleEntityNotFound(_0xeab844,null))[_0x7a0b('0x1b')](respondWithResult(_0xeab844,null))[_0x7a0b('0x24')](handleError(_0xeab844,null));};exports[_0x7a0b('0x52')]=function(_0x3fe834,_0x2dadcf,_0x243a0b){var _0x12bad9;return db[_0x7a0b('0x37')][_0x7a0b('0x52')](_0x3fe834[_0x7a0b('0x53')],{'raw':!![]})[_0x7a0b('0x1b')](function(_0xd4f758){_0x12bad9=_0xd4f758;return db[_0x7a0b('0x37')][_0x7a0b('0x4c')]({'raw':!![]});})[_0x7a0b('0x1b')](function(_0x52bf75){var _0x3da6ab=fs['readFileSync'](path['join'](config['root'],'server/files/templates/context.ejs'),_0x7a0b('0x54'));var _0x5aa490=ejs[_0x7a0b('0x55')](_0x3da6ab,{'contexts':_0x52bf75||[]});fs[_0x7a0b('0x56')](_0x7a0b('0x57'),_0x5aa490);})[_0x7a0b('0x1b')](function(){return respondWithRpcPromise(_0x7a0b('0x58'),'create',{'module':_0x7a0b('0x59')});})[_0x7a0b('0x1b')](function(){var _0x5227d3=_0x3fe834[_0x7a0b('0x5a')][_0x7a0b('0x30')]({'plain':!![]});if(!_0x5227d3)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5227d3[_0x7a0b('0x5b')]===_0x7a0b('0x5a')){var _0x70cbe9=_0x12bad9[_0x7a0b('0x30')]({'plain':!![]});return db[_0x7a0b('0x5c')]['find']({'where':{'name':_0x7a0b('0x31'),'userProfileId':_0x5227d3[_0x7a0b('0x5d')]},'raw':!![]})[_0x7a0b('0x1b')](function(_0x485c2f){if(_0x485c2f&&_0x485c2f['autoAssociation']===0x0){return db[_0x7a0b('0x5e')][_0x7a0b('0x52')]({'name':_0x70cbe9[_0x7a0b('0x33')],'resourceId':_0x70cbe9['id'],'type':_0x485c2f['name'],'sectionId':_0x485c2f['id']},{})['then'](function(){return _0x12bad9;});}else{return _0x12bad9;}})[_0x7a0b('0x24')](function(_0xb849a1){logger[_0x7a0b('0x20')](_0x7a0b('0x5f'),_0xb849a1);throw _0xb849a1;});}return _0x12bad9;})['then'](respondWithResult(_0x2dadcf,0xc9))['catch'](handleError(_0x2dadcf,null));};exports[_0x7a0b('0x60')]=function(_0xf7bd96,_0x4daf27,_0x528190){var _0x4126c3;return db[_0x7a0b('0x37')][_0x7a0b('0x51')]({'where':{'id':_0xf7bd96['params']['id']}})[_0x7a0b('0x1b')](handleEntityNotFound(_0x4daf27,null))['then'](saveUpdates(_0xf7bd96['body'],null))[_0x7a0b('0x1b')](function(_0xf31455){if(_0xf31455){_0x4126c3=_0xf31455;return db[_0x7a0b('0x37')][_0x7a0b('0x4c')]({'raw':!![]});}})[_0x7a0b('0x1b')](function(_0x36f756){var _0x50fbbd=fs[_0x7a0b('0x61')](path[_0x7a0b('0x62')](config[_0x7a0b('0x63')],_0x7a0b('0x64')),'utf8');var _0x289b7c=ejs[_0x7a0b('0x55')](_0x50fbbd,{'contexts':_0x36f756||[]});fs[_0x7a0b('0x56')](_0x7a0b('0x57'),_0x289b7c);})[_0x7a0b('0x1b')](function(){return respondWithRpcPromise(_0x7a0b('0x58'),'update',{'module':_0x7a0b('0x59')});})[_0x7a0b('0x1b')](function(){return _0x4126c3;})[_0x7a0b('0x1b')](respondWithResult(_0x4daf27,null))[_0x7a0b('0x24')](handleError(_0x4daf27,null));};exports[_0x7a0b('0x2f')]=function(_0x19fe58,_0x596fc3,_0x1be78a){var _0x15c183;return db[_0x7a0b('0x37')][_0x7a0b('0x51')]({'where':{'id':_0x19fe58[_0x7a0b('0x4f')]['id']}})[_0x7a0b('0x1b')](handleEntityNotFound(_0x596fc3,null))[_0x7a0b('0x1b')](removeEntity(_0x596fc3,null))[_0x7a0b('0x1b')](function(){return db[_0x7a0b('0x37')][_0x7a0b('0x4c')]({'raw':!![]});})[_0x7a0b('0x1b')](function(_0x3ac22a){var _0x5291af=fs[_0x7a0b('0x61')](path[_0x7a0b('0x62')](config[_0x7a0b('0x63')],'server/files/templates/context.ejs'),'utf8');var _0x406ee9=ejs['render'](_0x5291af,{'contexts':_0x3ac22a});fs['writeFileSync'](_0x7a0b('0x57'),_0x406ee9);return respondWithRpcPromise('Reload',_0x7a0b('0x2f'),{'module':_0x7a0b('0x59')});})[_0x7a0b('0x24')](handleError(_0x596fc3,null));};
\ No newline at end of file
+var _0x0941=['fields','length','model','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','count','includeAll','findAll','rows','show','params','include','create','body','readFileSync','root','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','server/files/templates/context.ejs','update','eml-format','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','client','http','request','info','VoiceContext,\x20%s,\x20%s','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','catch','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','save','then','destroy','get','UserProfileResource','stack','name','send','index','map','VoiceContext','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes'];(function(_0x86f10a,_0xe3ff52){var _0x3143b6=function(_0x27b711){while(--_0x27b711){_0x86f10a['push'](_0x86f10a['shift']());}};_0x3143b6(++_0xe3ff52);}(_0x0941,0xf6));var _0x1094=function(_0x452502,_0x4a26f5){_0x452502=_0x452502-0x0;var _0x15904f=_0x0941[_0x452502];return _0x15904f;};'use strict';var emlformat=require(_0x1094('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1094('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x1094('0x2'));var BPromise=require(_0x1094('0x3'));var Mustache=require(_0x1094('0x4'));var util=require(_0x1094('0x5'));var path=require(_0x1094('0x6'));var sox=require(_0x1094('0x7'));var csv=require(_0x1094('0x8'));var ejs=require(_0x1094('0x9'));var fs=require('fs');var fs_extra=require(_0x1094('0xa'));var _=require(_0x1094('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x1094('0x8'));var querystring=require('querystring');var Papa=require(_0x1094('0xc'));var Redis=require(_0x1094('0xd'));var authService=require(_0x1094('0xe'));var qs=require(_0x1094('0xf'));var as=require(_0x1094('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1094('0x11'))(_0x1094('0x12'));var utils=require(_0x1094('0x13'));var config=require(_0x1094('0x14'));var licenseUtil=require(_0x1094('0x15'));var db=require(_0x1094('0x16'))['db'];var jayson=require('jayson/promise');var client=jayson[_0x1094('0x17')][_0x1094('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x30d73c,_0x22d100,_0x6cabcb,_0x210a78){return new BPromise(function(_0x5254d2,_0x9ed1b){var _0x239502=_0x210a78||client;return _0x239502[_0x1094('0x19')](_0x30d73c,_0x6cabcb)['then'](function(_0x235002){logger[_0x1094('0x1a')](_0x1094('0x1b'),_0x22d100,'request\x20sent');logger[_0x1094('0x1c')](_0x1094('0x1d'),_0x22d100,'request\x20sent',JSON[_0x1094('0x1e')](_0x235002));if(_0x235002[_0x1094('0x1f')]){if(_0x235002[_0x1094('0x1f')][_0x1094('0x20')]===0x1f4){logger[_0x1094('0x1f')]('VoiceContext,\x20%s,\x20%s',_0x22d100,_0x235002['error'][_0x1094('0x21')]);return _0x9ed1b(_0x235002[_0x1094('0x1f')][_0x1094('0x21')]);}logger[_0x1094('0x1f')](_0x1094('0x1b'),_0x22d100,_0x235002[_0x1094('0x1f')][_0x1094('0x21')]);return _0x5254d2(_0x235002[_0x1094('0x1f')]['message']);}else{logger[_0x1094('0x1a')](_0x1094('0x1b'),_0x22d100,_0x1094('0x22'));_0x5254d2(_0x235002['result']['message']);}})[_0x1094('0x23')](function(_0x377909){logger[_0x1094('0x1f')](_0x1094('0x1b'),_0x22d100,_0x377909);_0x9ed1b(_0x377909);});});}function respondWithStatusCode(_0x3d9a03,_0x5c1f6a){_0x5c1f6a=_0x5c1f6a||0xcc;return function(_0x2cd9d2){if(_0x2cd9d2){return _0x3d9a03[_0x1094('0x24')](_0x5c1f6a);}return _0x3d9a03[_0x1094('0x25')](_0x5c1f6a)[_0x1094('0x26')]();};}function respondWithResult(_0xe061c5,_0x59ef6d){_0x59ef6d=_0x59ef6d||0xc8;return function(_0x33233d){if(_0x33233d){return _0xe061c5[_0x1094('0x25')](_0x59ef6d)[_0x1094('0x27')](_0x33233d);}};}function respondWithFilteredResult(_0x42ff4d,_0x325fac){return function(_0x1ebecb){if(_0x1ebecb){var _0xaf4770=typeof _0x325fac[_0x1094('0x28')]===_0x1094('0x29')&&typeof _0x325fac[_0x1094('0x2a')]===_0x1094('0x29');var _0x2aa770=_0x1ebecb['count'];var _0x2fbb12=_0xaf4770?0x0:_0x325fac[_0x1094('0x28')];var _0x55a60c=_0xaf4770?_0x1ebecb['count']:_0x325fac[_0x1094('0x28')]+_0x325fac['limit'];var _0x2037d5;if(_0x55a60c>=_0x2aa770){_0x55a60c=_0x2aa770;_0x2037d5=0xc8;}else{_0x2037d5=0xce;}_0x42ff4d[_0x1094('0x25')](_0x2037d5);return _0x42ff4d[_0x1094('0x2b')](_0x1094('0x2c'),_0x2fbb12+'-'+_0x55a60c+'/'+_0x2aa770)[_0x1094('0x27')](_0x1ebecb);}return null;};}function patchUpdates(_0x3f121c){return function(_0x31bebc){try{jsonpatch[_0x1094('0x2d')](_0x31bebc,_0x3f121c,!![]);}catch(_0x1c0462){return BPromise['reject'](_0x1c0462);}return _0x31bebc[_0x1094('0x2e')]();};}function saveUpdates(_0x513d1e,_0x504db6){return function(_0x41e76b){if(_0x41e76b){return _0x41e76b['update'](_0x513d1e)[_0x1094('0x2f')](function(_0x1d5566){return _0x1d5566;});}return null;};}function removeEntity(_0x1e8bab,_0x495409){return function(_0x33b883){if(_0x33b883){return _0x33b883[_0x1094('0x30')]()[_0x1094('0x2f')](function(){var _0x416d8c=_0x33b883[_0x1094('0x31')]({'plain':!![]});var _0x59f57a='Contexts';return db[_0x1094('0x32')]['destroy']({'where':{'type':_0x59f57a,'resourceId':_0x416d8c['id']}})[_0x1094('0x2f')](function(){return _0x33b883;});})[_0x1094('0x2f')](function(){_0x1e8bab[_0x1094('0x25')](0xcc)[_0x1094('0x26')]();});}};}function handleEntityNotFound(_0x4ff563,_0x1f18bb){return function(_0x4e64f3){if(!_0x4e64f3){_0x4ff563[_0x1094('0x24')](0x194);}return _0x4e64f3;};}function handleError(_0x559e30,_0x5ca859){_0x5ca859=_0x5ca859||0x1f4;return function(_0x24e177){logger[_0x1094('0x1f')](_0x24e177[_0x1094('0x33')]);if(_0x24e177[_0x1094('0x34')]){delete _0x24e177[_0x1094('0x34')];}_0x559e30[_0x1094('0x25')](_0x5ca859)[_0x1094('0x35')](_0x24e177);};}exports[_0x1094('0x36')]=function(_0x3cf241,_0x359326){var _0x297eca={},_0x33860c={},_0x3c1211={'count':0x0,'rows':[]};var _0x4bec4c=_[_0x1094('0x37')](db[_0x1094('0x38')][_0x1094('0x39')],function(_0x3beaa0){return{'name':_0x3beaa0[_0x1094('0x3a')],'type':_0x3beaa0[_0x1094('0x3b')][_0x1094('0x3c')]};});_0x33860c['model']=_[_0x1094('0x37')](_0x4bec4c,_0x1094('0x34'));_0x33860c[_0x1094('0x3d')]=_[_0x1094('0x3e')](_0x3cf241[_0x1094('0x3d')]);_0x33860c[_0x1094('0x3f')]=_[_0x1094('0x40')](_0x33860c['model'],_0x33860c[_0x1094('0x3d')]);_0x297eca[_0x1094('0x41')]=_[_0x1094('0x40')](_0x33860c['model'],qs['fields'](_0x3cf241[_0x1094('0x3d')][_0x1094('0x42')]));_0x297eca[_0x1094('0x41')]=_0x297eca[_0x1094('0x41')][_0x1094('0x43')]?_0x297eca[_0x1094('0x41')]:_0x33860c[_0x1094('0x44')];if(!_0x3cf241[_0x1094('0x3d')][_0x1094('0x45')](_0x1094('0x46'))){_0x297eca[_0x1094('0x2a')]=qs[_0x1094('0x2a')](_0x3cf241['query'][_0x1094('0x2a')]);_0x297eca[_0x1094('0x28')]=qs['offset'](_0x3cf241[_0x1094('0x3d')][_0x1094('0x28')]);}_0x297eca[_0x1094('0x47')]=qs[_0x1094('0x48')](_0x3cf241[_0x1094('0x3d')]['sort']);_0x297eca[_0x1094('0x49')]=qs['filters'](_[_0x1094('0x4a')](_0x3cf241[_0x1094('0x3d')],_0x33860c[_0x1094('0x3f')]),_0x4bec4c);if(_0x3cf241[_0x1094('0x3d')]['filter']){_0x297eca[_0x1094('0x49')]=_[_0x1094('0x4b')](_0x297eca['where'],{'$or':_['map'](_0x4bec4c,function(_0x2a4a06){if(_0x2a4a06[_0x1094('0x3b')]!==_0x1094('0x4c')){var _0x33baf6={};_0x33baf6[_0x2a4a06['name']]={'$like':'%'+_0x3cf241[_0x1094('0x3d')]['filter']+'%'};return _0x33baf6;}})});}_0x297eca=_['merge']({},_0x297eca,_0x3cf241[_0x1094('0x4d')]);var _0x10b9c4={'where':_0x297eca[_0x1094('0x49')]};return db[_0x1094('0x38')][_0x1094('0x4e')](_0x10b9c4)[_0x1094('0x2f')](function(_0x9458a2){_0x3c1211[_0x1094('0x4e')]=_0x9458a2;if(_0x3cf241[_0x1094('0x3d')][_0x1094('0x4f')]){_0x297eca['include']=[{'all':!![]}];}return db[_0x1094('0x38')][_0x1094('0x50')](_0x297eca);})[_0x1094('0x2f')](function(_0x44e2c9){_0x3c1211[_0x1094('0x51')]=_0x44e2c9;return _0x3c1211;})[_0x1094('0x2f')](respondWithFilteredResult(_0x359326,_0x297eca))[_0x1094('0x23')](handleError(_0x359326,null));};exports[_0x1094('0x52')]=function(_0x5a3d53,_0x2bd490){var _0x26741f={'raw':![],'where':{'id':_0x5a3d53[_0x1094('0x53')]['id']}},_0x2f911c={};_0x2f911c[_0x1094('0x44')]=_[_0x1094('0x3e')](db['VoiceContext'][_0x1094('0x39')]);_0x2f911c[_0x1094('0x3d')]=_[_0x1094('0x3e')](_0x5a3d53[_0x1094('0x3d')]);_0x2f911c[_0x1094('0x3f')]=_[_0x1094('0x40')](_0x2f911c[_0x1094('0x44')],_0x2f911c[_0x1094('0x3d')]);_0x26741f[_0x1094('0x41')]=_[_0x1094('0x40')](_0x2f911c['model'],qs[_0x1094('0x42')](_0x5a3d53[_0x1094('0x3d')][_0x1094('0x42')]));_0x26741f[_0x1094('0x41')]=_0x26741f[_0x1094('0x41')][_0x1094('0x43')]?_0x26741f[_0x1094('0x41')]:_0x2f911c['model'];if(_0x5a3d53[_0x1094('0x3d')][_0x1094('0x4f')]){_0x26741f[_0x1094('0x54')]=[{'all':!![]}];}_0x26741f=_['merge']({},_0x26741f,_0x5a3d53[_0x1094('0x4d')]);return db[_0x1094('0x38')]['find'](_0x26741f)['then'](handleEntityNotFound(_0x2bd490,null))[_0x1094('0x2f')](respondWithResult(_0x2bd490,null))[_0x1094('0x23')](handleError(_0x2bd490,null));};exports[_0x1094('0x55')]=function(_0xe37d1d,_0x6f8358,_0x35d0c5){var _0x37ac0e;return db[_0x1094('0x38')]['create'](_0xe37d1d[_0x1094('0x56')],{'raw':!![]})['then'](function(_0xc46604){_0x37ac0e=_0xc46604;return db[_0x1094('0x38')]['findAll']({'raw':!![]});})[_0x1094('0x2f')](function(_0x16f59e){var _0x5981e7=fs[_0x1094('0x57')](path['join'](config[_0x1094('0x58')],'server/files/templates/context.ejs'),_0x1094('0x59'));var _0x43f4b4=ejs[_0x1094('0x5a')](_0x5981e7,{'contexts':_0x16f59e||[]});fs[_0x1094('0x5b')](_0x1094('0x5c'),_0x43f4b4);})[_0x1094('0x2f')](function(){return respondWithRpcPromise(_0x1094('0x5d'),_0x1094('0x55'),{'module':_0x1094('0x5e')});})[_0x1094('0x2f')](function(){var _0x319b77=_0xe37d1d['user'][_0x1094('0x31')]({'plain':!![]});if(!_0x319b77)throw new Error(_0x1094('0x5f'));if(_0x319b77[_0x1094('0x60')]===_0x1094('0x61')){var _0x5bee65=_0x37ac0e[_0x1094('0x31')]({'plain':!![]});return db['UserProfileSection'][_0x1094('0x62')]({'where':{'name':'Contexts','userProfileId':_0x319b77[_0x1094('0x63')]},'raw':!![]})[_0x1094('0x2f')](function(_0x5cd79b){if(_0x5cd79b&&_0x5cd79b[_0x1094('0x64')]===0x0){return db[_0x1094('0x32')]['create']({'name':_0x5bee65[_0x1094('0x34')],'resourceId':_0x5bee65['id'],'type':_0x5cd79b[_0x1094('0x34')],'sectionId':_0x5cd79b['id']},{})['then'](function(){return _0x37ac0e;});}else{return _0x37ac0e;}})[_0x1094('0x23')](function(_0x4c9782){logger[_0x1094('0x1f')](_0x1094('0x65'),_0x4c9782);throw _0x4c9782;});}return _0x37ac0e;})[_0x1094('0x2f')](respondWithResult(_0x6f8358,0xc9))['catch'](handleError(_0x6f8358,null));};exports['update']=function(_0x3f16fe,_0x3cac59,_0x34b2e6){var _0x48a33a;return db['VoiceContext']['find']({'where':{'id':_0x3f16fe[_0x1094('0x53')]['id']}})[_0x1094('0x2f')](handleEntityNotFound(_0x3cac59,null))[_0x1094('0x2f')](saveUpdates(_0x3f16fe[_0x1094('0x56')],null))[_0x1094('0x2f')](function(_0xe7d7d){if(_0xe7d7d){_0x48a33a=_0xe7d7d;return db[_0x1094('0x38')][_0x1094('0x50')]({'raw':!![]});}})[_0x1094('0x2f')](function(_0x1c4917){var _0x1b8b49=fs['readFileSync'](path['join'](config['root'],_0x1094('0x66')),_0x1094('0x59'));var _0x4ff5cf=ejs[_0x1094('0x5a')](_0x1b8b49,{'contexts':_0x1c4917||[]});fs[_0x1094('0x5b')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x4ff5cf);})[_0x1094('0x2f')](function(){return respondWithRpcPromise(_0x1094('0x5d'),_0x1094('0x67'),{'module':_0x1094('0x5e')});})[_0x1094('0x2f')](function(){return _0x48a33a;})[_0x1094('0x2f')](respondWithResult(_0x3cac59,null))[_0x1094('0x23')](handleError(_0x3cac59,null));};exports['destroy']=function(_0x25a433,_0x55d236,_0x1e24f6){var _0xe4d448;return db[_0x1094('0x38')]['find']({'where':{'id':_0x25a433[_0x1094('0x53')]['id']}})[_0x1094('0x2f')](handleEntityNotFound(_0x55d236,null))[_0x1094('0x2f')](removeEntity(_0x55d236,null))[_0x1094('0x2f')](function(){return db[_0x1094('0x38')][_0x1094('0x50')]({'raw':!![]});})[_0x1094('0x2f')](function(_0x20dace){var _0x1ca7d2=fs['readFileSync'](path['join'](config[_0x1094('0x58')],_0x1094('0x66')),_0x1094('0x59'));var _0x1438d7=ejs[_0x1094('0x5a')](_0x1ca7d2,{'contexts':_0x20dace});fs[_0x1094('0x5b')](_0x1094('0x5c'),_0x1438d7);return respondWithRpcPromise(_0x1094('0x5d'),_0x1094('0x30'),{'module':_0x1094('0x5e')});})[_0x1094('0x23')](handleError(_0x55d236,null));};
\ No newline at end of file
index fdce07c..fda8d9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x705f=['bluebird','path','rimraf','../../config/environment','./voiceContext.attributes','exports','define','VoiceContext','lodash','util','../../config/logger','moment'];(function(_0x5850b8,_0x115914){var _0x8f3282=function(_0x4855cb){while(--_0x4855cb){_0x5850b8['push'](_0x5850b8['shift']());}};_0x8f3282(++_0x115914);}(_0x705f,0x1b8));var _0xf705=function(_0x22f164,_0xaa4f80){_0x22f164=_0x22f164-0x0;var _0x51ab95=_0x705f[_0x22f164];return _0x51ab95;};'use strict';var _=require(_0xf705('0x0'));var util=require(_0xf705('0x1'));var logger=require(_0xf705('0x2'))('api');var moment=require(_0xf705('0x3'));var BPromise=require(_0xf705('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf705('0x5'));var rimraf=require(_0xf705('0x6'));var config=require(_0xf705('0x7'));var attributes=require(_0xf705('0x8'));module[_0xf705('0x9')]=function(_0x1fd39f,_0x5ea2a9){return _0x1fd39f[_0xf705('0xa')](_0xf705('0xb'),attributes,{'tableName':'voice_contexts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc496=['./voiceContext.attributes','exports','VoiceContext','voice_contexts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x540c6f,_0x279c48){var _0xb3e5b9=function(_0x337add){while(--_0x337add){_0x540c6f['push'](_0x540c6f['shift']());}};_0xb3e5b9(++_0x279c48);}(_0xc496,0x170));var _0x6c49=function(_0x4e4519,_0x392ae){_0x4e4519=_0x4e4519-0x0;var _0x340044=_0xc496[_0x4e4519];return _0x340044;};'use strict';var _=require(_0x6c49('0x0'));var util=require(_0x6c49('0x1'));var logger=require(_0x6c49('0x2'))(_0x6c49('0x3'));var moment=require(_0x6c49('0x4'));var BPromise=require(_0x6c49('0x5'));var rp=require(_0x6c49('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6c49('0x7'));var config=require(_0x6c49('0x8'));var attributes=require(_0x6c49('0x9'));module[_0x6c49('0xa')]=function(_0x55e97a,_0x40970a){return _0x55e97a['define'](_0x6c49('0xb'),attributes,{'tableName':_0x6c49('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dcbd5e3..70da797 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b4a=['error','code','VoiceContext,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','debug','request\x20sent','stringify'];(function(_0x59663e,_0x7d0342){var _0x20b821=function(_0x100d7e){while(--_0x100d7e){_0x59663e['push'](_0x59663e['shift']());}};_0x20b821(++_0x7d0342);}(_0x2b4a,0x13e));var _0xa2b4=function(_0x8abd64,_0x539570){_0x8abd64=_0x8abd64-0x0;var _0xd2511e=_0x2b4a[_0x8abd64];return _0xd2511e;};'use strict';var _=require(_0xa2b4('0x0'));var util=require(_0xa2b4('0x1'));var moment=require(_0xa2b4('0x2'));var BPromise=require(_0xa2b4('0x3'));var rs=require(_0xa2b4('0x4'));var fs=require('fs');var Redis=require(_0xa2b4('0x5'));var db=require(_0xa2b4('0x6'))['db'];var utils=require(_0xa2b4('0x7'));var logger=require('../../config/logger')(_0xa2b4('0x8'));var config=require(_0xa2b4('0x9'));var jayson=require(_0xa2b4('0xa'));var client=jayson[_0xa2b4('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x136da5,_0x4533c0,_0x5e19a8){return new BPromise(function(_0x39139c,_0x912f94){return client[_0xa2b4('0xc')](_0x136da5,_0x5e19a8)[_0xa2b4('0xd')](function(_0x5fbcff){logger[_0xa2b4('0xe')]('VoiceContext,\x20%s,\x20%s',_0x4533c0,'request\x20sent');logger[_0xa2b4('0xf')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x4533c0,_0xa2b4('0x10'),JSON[_0xa2b4('0x11')](_0x5fbcff));if(_0x5fbcff[_0xa2b4('0x12')]){if(_0x5fbcff[_0xa2b4('0x12')][_0xa2b4('0x13')]===0x1f4){logger[_0xa2b4('0x12')](_0xa2b4('0x14'),_0x4533c0,_0x5fbcff[_0xa2b4('0x12')][_0xa2b4('0x15')]);return _0x912f94(_0x5fbcff[_0xa2b4('0x12')][_0xa2b4('0x15')]);}logger[_0xa2b4('0x12')](_0xa2b4('0x14'),_0x4533c0,_0x5fbcff[_0xa2b4('0x12')]['message']);return _0x39139c(_0x5fbcff[_0xa2b4('0x12')][_0xa2b4('0x15')]);}else{logger[_0xa2b4('0xe')](_0xa2b4('0x14'),_0x4533c0,_0xa2b4('0x10'));_0x39139c(_0x5fbcff[_0xa2b4('0x16')]['message']);}})[_0xa2b4('0x17')](function(_0x1b7bc3){logger[_0xa2b4('0x12')](_0xa2b4('0x14'),_0x4533c0,_0x1b7bc3);_0x912f94(_0x1b7bc3);});});}
\ No newline at end of file
+var _0x3870=['VoiceContext,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','info','debug','VoiceContext,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x2faddb,_0xc18b78){var _0x273c05=function(_0x1a3785){while(--_0x1a3785){_0x2faddb['push'](_0x2faddb['shift']());}};_0x273c05(++_0xc18b78);}(_0x3870,0x146));var _0x0387=function(_0x12a02e,_0x3b226c){_0x12a02e=_0x12a02e-0x0;var _0x49a3a3=_0x3870[_0x12a02e];return _0x49a3a3;};'use strict';var _=require(_0x0387('0x0'));var util=require(_0x0387('0x1'));var moment=require(_0x0387('0x2'));var BPromise=require('bluebird');var rs=require(_0x0387('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0387('0x4'))['db'];var utils=require(_0x0387('0x5'));var logger=require('../../config/logger')(_0x0387('0x6'));var config=require(_0x0387('0x7'));var jayson=require(_0x0387('0x8'));var client=jayson['client'][_0x0387('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x25209b,_0x3169b6,_0x13073a){return new BPromise(function(_0x594efe,_0x46bbf2){return client[_0x0387('0xa')](_0x25209b,_0x13073a)[_0x0387('0xb')](function(_0x566566){logger[_0x0387('0xc')]('VoiceContext,\x20%s,\x20%s',_0x3169b6,'request\x20sent');logger[_0x0387('0xd')](_0x0387('0xe'),_0x3169b6,_0x0387('0xf'),JSON[_0x0387('0x10')](_0x566566));if(_0x566566[_0x0387('0x11')]){if(_0x566566['error'][_0x0387('0x12')]===0x1f4){logger[_0x0387('0x11')](_0x0387('0x13'),_0x3169b6,_0x566566['error']['message']);return _0x46bbf2(_0x566566[_0x0387('0x11')][_0x0387('0x14')]);}logger['error']('VoiceContext,\x20%s,\x20%s',_0x3169b6,_0x566566[_0x0387('0x11')][_0x0387('0x14')]);return _0x594efe(_0x566566[_0x0387('0x11')]['message']);}else{logger['info'](_0x0387('0x13'),_0x3169b6,'request\x20sent');_0x594efe(_0x566566[_0x0387('0x15')]['message']);}})[_0x0387('0x16')](function(_0x246fd0){logger[_0x0387('0x11')](_0x0387('0x13'),_0x3169b6,_0x246fd0);_0x46bbf2(_0x246fd0);});});}
\ No newline at end of file
index 4dcc5d0..292485e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe559=['../../components/interaction/service','../../config/environment','./voiceDialReport.controller','isAuthenticated','index','get','/describe','/:id','show','post','create','update','exports','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x86794c,_0x5df4b0){var _0x2ea7a8=function(_0x17a723){while(--_0x17a723){_0x86794c['push'](_0x86794c['shift']());}};_0x2ea7a8(++_0x5df4b0);}(_0xe559,0x176));var _0x9e55=function(_0x26c804,_0x3ea271){_0x26c804=_0x26c804-0x0;var _0x9b5238=_0xe559[_0x26c804];return _0x9b5238;};'use strict';var multer=require('multer');var util=require(_0x9e55('0x0'));var path=require(_0x9e55('0x1'));var timeout=require(_0x9e55('0x2'));var express=require(_0x9e55('0x3'));var router=express[_0x9e55('0x4')]();var fs_extra=require(_0x9e55('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x9e55('0x6'));var config=require(_0x9e55('0x7'));var controller=require(_0x9e55('0x8'));router['get']('/',auth[_0x9e55('0x9')](),controller[_0x9e55('0xa')]);router[_0x9e55('0xb')](_0x9e55('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0x9e55('0xb')](_0x9e55('0xd'),auth['isAuthenticated'](),controller[_0x9e55('0xe')]);router[_0x9e55('0xf')]('/',auth[_0x9e55('0x9')](),controller[_0x9e55('0x10')]);router['put'](_0x9e55('0xd'),auth[_0x9e55('0x9')](),controller[_0x9e55('0x11')]);router['delete'](_0x9e55('0xd'),auth[_0x9e55('0x9')](),controller['destroy']);module[_0x9e55('0x12')]=router;
\ No newline at end of file
+var _0x8145=['create','put','delete','destroy','multer','util','express','Router','fs-extra','../../components/interaction/service','./voiceDialReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x8145,0xb8));var _0x5814=function(_0x5fb0f1,_0x18deb0){_0x5fb0f1=_0x5fb0f1-0x0;var _0x617eaf=_0x8145[_0x5fb0f1];return _0x617eaf;};'use strict';var multer=require(_0x5814('0x0'));var util=require(_0x5814('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x5814('0x2'));var router=express[_0x5814('0x3')]();var fs_extra=require(_0x5814('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x5814('0x5'));var config=require('../../config/environment');var controller=require(_0x5814('0x6'));router[_0x5814('0x7')]('/',auth[_0x5814('0x8')](),controller[_0x5814('0x9')]);router[_0x5814('0x7')](_0x5814('0xa'),auth[_0x5814('0x8')](),controller[_0x5814('0xb')]);router[_0x5814('0x7')](_0x5814('0xc'),auth[_0x5814('0x8')](),controller[_0x5814('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x5814('0xe')]);router[_0x5814('0xf')]('/:id',auth[_0x5814('0x8')](),controller['update']);router[_0x5814('0x10')]('/:id',auth[_0x5814('0x8')](),controller[_0x5814('0x11')]);module['exports']=router;
\ No newline at end of file
index dc53e09..8841a8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['STRING','INTEGER','DATE','called,connect,complete'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x9c44,0x178));var _0x49c4=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0x9c44[_0x543084];return _0x306a57;};'use strict';var Sequelize=require('sequelize');module['exports']={'privilege':{'type':Sequelize[_0x49c4('0x0')]},'channel':{'type':Sequelize[_0x49c4('0x0')]},'channelstate':{'type':Sequelize[_0x49c4('0x1')]},'channelstatedesc':{'type':Sequelize[_0x49c4('0x0')]},'calleridnum':{'type':Sequelize[_0x49c4('0x0')]},'calleridname':{'type':Sequelize[_0x49c4('0x0')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x49c4('0x0')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x49c4('0x0')]},'exten':{'type':Sequelize[_0x49c4('0x0')]},'priority':{'type':Sequelize[_0x49c4('0x1')]},'uniqueid':{'type':Sequelize[_0x49c4('0x0')]},'linkedid':{'type':Sequelize[_0x49c4('0x0')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x49c4('0x1')]},'destchannelstatedesc':{'type':Sequelize[_0x49c4('0x0')]},'destcalleridnum':{'type':Sequelize[_0x49c4('0x0')]},'destcalleridname':{'type':Sequelize[_0x49c4('0x0')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x49c4('0x0')]},'destaccountcode':{'type':Sequelize[_0x49c4('0x0')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x49c4('0x0')]},'destpriority':{'type':Sequelize[_0x49c4('0x1')]},'destuniqueid':{'type':Sequelize['STRING']},'destlinkedid':{'type':Sequelize['STRING']},'dialstring':{'type':Sequelize[_0x49c4('0x0')]},'dialstatus':{'type':Sequelize[_0x49c4('0x0')]},'starttime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x49c4('0x2')]},'endtime':{'type':Sequelize[_0x49c4('0x2')]},'lastevent':{'type':Sequelize['STRING'],'comment':_0x49c4('0x3')},'routeId':{'type':Sequelize[_0x49c4('0x1')]},'duration':{'type':Sequelize[_0x49c4('0x1')]},'holdtime':{'type':Sequelize[_0x49c4('0x1')]},'billableseconds':{'type':Sequelize[_0x49c4('0x1')]}};
\ No newline at end of file
+var _0x8d0e=['INTEGER','DATE','called,connect,complete','sequelize','exports','STRING'];(function(_0x512da6,_0x30eb6b){var _0xe7823b=function(_0x17ecac){while(--_0x17ecac){_0x512da6['push'](_0x512da6['shift']());}};_0xe7823b(++_0x30eb6b);}(_0x8d0e,0x1d7));var _0xe8d0=function(_0x1860d6,_0x3cc831){_0x1860d6=_0x1860d6-0x0;var _0x21556a=_0x8d0e[_0x1860d6];return _0x21556a;};'use strict';var Sequelize=require(_0xe8d0('0x0'));module[_0xe8d0('0x1')]={'privilege':{'type':Sequelize[_0xe8d0('0x2')]},'channel':{'type':Sequelize[_0xe8d0('0x2')]},'channelstate':{'type':Sequelize[_0xe8d0('0x3')]},'channelstatedesc':{'type':Sequelize[_0xe8d0('0x2')]},'calleridnum':{'type':Sequelize[_0xe8d0('0x2')]},'calleridname':{'type':Sequelize[_0xe8d0('0x2')]},'connectedlinenum':{'type':Sequelize[_0xe8d0('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xe8d0('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xe8d0('0x2')]},'priority':{'type':Sequelize[_0xe8d0('0x3')]},'uniqueid':{'type':Sequelize[_0xe8d0('0x2')]},'linkedid':{'type':Sequelize[_0xe8d0('0x2')]},'destchannel':{'type':Sequelize[_0xe8d0('0x2')]},'destchannelstate':{'type':Sequelize[_0xe8d0('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0xe8d0('0x2')]},'destcalleridnum':{'type':Sequelize[_0xe8d0('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0xe8d0('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xe8d0('0x2')]},'destlanguage':{'type':Sequelize[_0xe8d0('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0xe8d0('0x2')]},'destpriority':{'type':Sequelize[_0xe8d0('0x3')]},'destuniqueid':{'type':Sequelize[_0xe8d0('0x2')]},'destlinkedid':{'type':Sequelize[_0xe8d0('0x2')]},'dialstring':{'type':Sequelize[_0xe8d0('0x2')]},'dialstatus':{'type':Sequelize[_0xe8d0('0x2')]},'starttime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0xe8d0('0x4')]},'endtime':{'type':Sequelize[_0xe8d0('0x4')]},'lastevent':{'type':Sequelize['STRING'],'comment':_0xe8d0('0x5')},'routeId':{'type':Sequelize['INTEGER']},'duration':{'type':Sequelize['INTEGER']},'holdtime':{'type':Sequelize[_0xe8d0('0x3')]},'billableseconds':{'type':Sequelize[_0xe8d0('0x3')]}};
\ No newline at end of file
index a0cff4c..5efa771 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c17=['sendStatus','status','offset','undefined','limit','count','set','json','save','update','then','end','error','stack','name','send','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','options','includeAll','include','VoiceDialReport','findAll','rows','catch','show','params','find','create','body','destroy','describe','rimraf','zip-dir','fast-json-patch','moment','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'];(function(_0x57c80f,_0x43a4f3){var _0x166b31=function(_0x352cd7){while(--_0x352cd7){_0x57c80f['push'](_0x57c80f['shift']());}};_0x166b31(++_0x43a4f3);}(_0x9c17,0x111));var _0x79c1=function(_0x292bab,_0x18b725){_0x292bab=_0x292bab-0x0;var _0x3a1de1=_0x9c17[_0x292bab];return _0x3a1de1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x79c1('0x0'));var zipdir=require(_0x79c1('0x1'));var jsonpatch=require(_0x79c1('0x2'));var rp=require('request-promise');var moment=require(_0x79c1('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x79c1('0x4'));var sox=require(_0x79c1('0x5'));var csv=require(_0x79c1('0x6'));var ejs=require(_0x79c1('0x7'));var fs=require('fs');var fs_extra=require(_0x79c1('0x8'));var _=require(_0x79c1('0x9'));var squel=require(_0x79c1('0xa'));var crypto=require(_0x79c1('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x79c1('0xc'));var toCsv=require('to-csv');var querystring=require(_0x79c1('0xd'));var Papa=require(_0x79c1('0xe'));var Redis=require(_0x79c1('0xf'));var authService=require(_0x79c1('0x10'));var qs=require(_0x79c1('0x11'));var as=require(_0x79c1('0x12'));var hardwareService=require(_0x79c1('0x13'));var logger=require(_0x79c1('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x79c1('0x15'));var licenseUtil=require(_0x79c1('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3ccd8e,_0x17c30b){_0x17c30b=_0x17c30b||0xcc;return function(_0x56a2ba){if(_0x56a2ba){return _0x3ccd8e[_0x79c1('0x17')](_0x17c30b);}return _0x3ccd8e[_0x79c1('0x18')](_0x17c30b)['end']();};}function respondWithResult(_0x5d4bd4,_0x564bb0){_0x564bb0=_0x564bb0||0xc8;return function(_0xb7397b){if(_0xb7397b){return _0x5d4bd4['status'](_0x564bb0)['json'](_0xb7397b);}};}function respondWithFilteredResult(_0x357162,_0x44b51a){return function(_0x1315f1){if(_0x1315f1){var _0xad5d=typeof _0x44b51a[_0x79c1('0x19')]===_0x79c1('0x1a')&&typeof _0x44b51a[_0x79c1('0x1b')]==='undefined';var _0x56eede=_0x1315f1[_0x79c1('0x1c')];var _0x2aa582=_0xad5d?0x0:_0x44b51a[_0x79c1('0x19')];var _0x3c17f1=_0xad5d?_0x1315f1[_0x79c1('0x1c')]:_0x44b51a[_0x79c1('0x19')]+_0x44b51a[_0x79c1('0x1b')];var _0x320244;if(_0x3c17f1>=_0x56eede){_0x3c17f1=_0x56eede;_0x320244=0xc8;}else{_0x320244=0xce;}_0x357162['status'](_0x320244);return _0x357162[_0x79c1('0x1d')]('Content-Range',_0x2aa582+'-'+_0x3c17f1+'/'+_0x56eede)[_0x79c1('0x1e')](_0x1315f1);}return null;};}function patchUpdates(_0x344229){return function(_0x5e85c6){try{jsonpatch['apply'](_0x5e85c6,_0x344229,!![]);}catch(_0x1f20fa){return BPromise['reject'](_0x1f20fa);}return _0x5e85c6[_0x79c1('0x1f')]();};}function saveUpdates(_0x34862e,_0x4f721a){return function(_0x4a3b54){if(_0x4a3b54){return _0x4a3b54[_0x79c1('0x20')](_0x34862e)[_0x79c1('0x21')](function(_0x14f46c){return _0x14f46c;});}return null;};}function removeEntity(_0x3cd5e6,_0x343a63){return function(_0x820025){if(_0x820025){return _0x820025['destroy']()[_0x79c1('0x21')](function(){_0x3cd5e6[_0x79c1('0x18')](0xcc)[_0x79c1('0x22')]();});}};}function handleEntityNotFound(_0x51f407,_0x4cc35){return function(_0x43f50b){if(!_0x43f50b){_0x51f407[_0x79c1('0x17')](0x194);}return _0x43f50b;};}function handleError(_0x5b7b68,_0x2409e8){_0x2409e8=_0x2409e8||0x1f4;return function(_0x31e37b){logger[_0x79c1('0x23')](_0x31e37b[_0x79c1('0x24')]);if(_0x31e37b[_0x79c1('0x25')]){delete _0x31e37b['name'];}_0x5b7b68[_0x79c1('0x18')](_0x2409e8)[_0x79c1('0x26')](_0x31e37b);};}exports['index']=function(_0x3f2f12,_0x415f6c){var _0x4ee335={},_0x30a3fd={},_0x1a2d6a={'count':0x0,'rows':[]};var _0x13d663=_['map'](db['VoiceDialReport'][_0x79c1('0x27')],function(_0x59d1a8){return{'name':_0x59d1a8[_0x79c1('0x28')],'type':_0x59d1a8[_0x79c1('0x29')][_0x79c1('0x2a')]};});_0x30a3fd[_0x79c1('0x2b')]=_['map'](_0x13d663,_0x79c1('0x25'));_0x30a3fd[_0x79c1('0x2c')]=_[_0x79c1('0x2d')](_0x3f2f12[_0x79c1('0x2c')]);_0x30a3fd[_0x79c1('0x2e')]=_[_0x79c1('0x2f')](_0x30a3fd['model'],_0x30a3fd[_0x79c1('0x2c')]);_0x4ee335[_0x79c1('0x30')]=_[_0x79c1('0x2f')](_0x30a3fd[_0x79c1('0x2b')],qs[_0x79c1('0x31')](_0x3f2f12[_0x79c1('0x2c')][_0x79c1('0x31')]));_0x4ee335[_0x79c1('0x30')]=_0x4ee335[_0x79c1('0x30')][_0x79c1('0x32')]?_0x4ee335[_0x79c1('0x30')]:_0x30a3fd[_0x79c1('0x2b')];if(!_0x3f2f12[_0x79c1('0x2c')][_0x79c1('0x33')](_0x79c1('0x34'))){_0x4ee335[_0x79c1('0x1b')]=qs[_0x79c1('0x1b')](_0x3f2f12[_0x79c1('0x2c')]['limit']);_0x4ee335['offset']=qs[_0x79c1('0x19')](_0x3f2f12[_0x79c1('0x2c')][_0x79c1('0x19')]);}_0x4ee335[_0x79c1('0x35')]=qs['sort'](_0x3f2f12[_0x79c1('0x2c')][_0x79c1('0x36')]);_0x4ee335[_0x79c1('0x37')]=qs[_0x79c1('0x2e')](_[_0x79c1('0x38')](_0x3f2f12['query'],_0x30a3fd['filters']),_0x13d663);if(_0x3f2f12['query'][_0x79c1('0x39')]){_0x4ee335[_0x79c1('0x37')]=_[_0x79c1('0x3a')](_0x4ee335[_0x79c1('0x37')],{'$or':_[_0x79c1('0x3b')](_0x13d663,function(_0x3058d5){if(_0x3058d5[_0x79c1('0x29')]!=='VIRTUAL'){var _0x45f10c={};_0x45f10c[_0x3058d5[_0x79c1('0x25')]]={'$like':'%'+_0x3f2f12['query']['filter']+'%'};return _0x45f10c;}})});}_0x4ee335=_['merge']({},_0x4ee335,_0x3f2f12[_0x79c1('0x3c')]);var _0x248b1c={'where':_0x4ee335[_0x79c1('0x37')]};return db['VoiceDialReport']['count'](_0x248b1c)['then'](function(_0xc197c1){_0x1a2d6a[_0x79c1('0x1c')]=_0xc197c1;if(_0x3f2f12[_0x79c1('0x2c')][_0x79c1('0x3d')]){_0x4ee335[_0x79c1('0x3e')]=[{'all':!![]}];}return db[_0x79c1('0x3f')][_0x79c1('0x40')](_0x4ee335);})[_0x79c1('0x21')](function(_0x59e094){_0x1a2d6a[_0x79c1('0x41')]=_0x59e094;return _0x1a2d6a;})[_0x79c1('0x21')](respondWithFilteredResult(_0x415f6c,_0x4ee335))[_0x79c1('0x42')](handleError(_0x415f6c,null));};exports[_0x79c1('0x43')]=function(_0x1fc65e,_0x42d550){var _0x4d3168={'raw':!![],'where':{'id':_0x1fc65e[_0x79c1('0x44')]['id']}},_0x375f57={};_0x375f57[_0x79c1('0x2b')]=_[_0x79c1('0x2d')](db['VoiceDialReport'][_0x79c1('0x27')]);_0x375f57[_0x79c1('0x2c')]=_[_0x79c1('0x2d')](_0x1fc65e['query']);_0x375f57[_0x79c1('0x2e')]=_[_0x79c1('0x2f')](_0x375f57['model'],_0x375f57[_0x79c1('0x2c')]);_0x4d3168['attributes']=_[_0x79c1('0x2f')](_0x375f57['model'],qs[_0x79c1('0x31')](_0x1fc65e[_0x79c1('0x2c')][_0x79c1('0x31')]));_0x4d3168[_0x79c1('0x30')]=_0x4d3168[_0x79c1('0x30')]['length']?_0x4d3168[_0x79c1('0x30')]:_0x375f57[_0x79c1('0x2b')];if(_0x1fc65e[_0x79c1('0x2c')]['includeAll']){_0x4d3168[_0x79c1('0x3e')]=[{'all':!![]}];}_0x4d3168=_[_0x79c1('0x3a')]({},_0x4d3168,_0x1fc65e[_0x79c1('0x3c')]);return db[_0x79c1('0x3f')][_0x79c1('0x45')](_0x4d3168)[_0x79c1('0x21')](handleEntityNotFound(_0x42d550,null))[_0x79c1('0x21')](respondWithResult(_0x42d550,null))[_0x79c1('0x42')](handleError(_0x42d550,null));};exports[_0x79c1('0x46')]=function(_0x3e485d,_0x50235a){return db[_0x79c1('0x3f')][_0x79c1('0x46')](_0x3e485d[_0x79c1('0x47')],{})[_0x79c1('0x21')](respondWithResult(_0x50235a,0xc9))[_0x79c1('0x42')](handleError(_0x50235a,null));};exports[_0x79c1('0x20')]=function(_0x1fad10,_0x41867b){if(_0x1fad10[_0x79c1('0x47')]['id']){delete _0x1fad10['body']['id'];}return db[_0x79c1('0x3f')][_0x79c1('0x45')]({'where':{'id':_0x1fad10[_0x79c1('0x44')]['id']}})[_0x79c1('0x21')](handleEntityNotFound(_0x41867b,null))['then'](saveUpdates(_0x1fad10[_0x79c1('0x47')],null))['then'](respondWithResult(_0x41867b,null))[_0x79c1('0x42')](handleError(_0x41867b,null));};exports[_0x79c1('0x48')]=function(_0x206c77,_0x49ee46){return db[_0x79c1('0x3f')]['find']({'where':{'id':_0x206c77[_0x79c1('0x44')]['id']}})[_0x79c1('0x21')](handleEntityNotFound(_0x49ee46,null))['then'](removeEntity(_0x49ee46,null))[_0x79c1('0x42')](handleError(_0x49ee46,null));};exports[_0x79c1('0x49')]=function(_0x26958e,_0x4d40c5){return db[_0x79c1('0x3f')][_0x79c1('0x49')]()[_0x79c1('0x21')](respondWithResult(_0x4d40c5,null))['catch'](handleError(_0x4d40c5,null));};
\ No newline at end of file
+var _0x2aa6=['desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','offset','set','Content-Range','apply','reject','save','update','then','stack','name','send','index','map','VoiceDialReport','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','length','attributes','hasOwnProperty','sort','where','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','show','params','find','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','crypto','jsforce'];(function(_0x3f88f9,_0x68e080){var _0xcab2d6=function(_0x44aae4){while(--_0x44aae4){_0x3f88f9['push'](_0x3f88f9['shift']());}};_0xcab2d6(++_0x68e080);}(_0x2aa6,0xde));var _0x62aa=function(_0x236c89,_0xd76ba9){_0x236c89=_0x236c89-0x0;var _0x3b2a15=_0x2aa6[_0x236c89];return _0x3b2a15;};'use strict';var emlformat=require(_0x62aa('0x0'));var rimraf=require(_0x62aa('0x1'));var zipdir=require(_0x62aa('0x2'));var jsonpatch=require(_0x62aa('0x3'));var rp=require(_0x62aa('0x4'));var moment=require(_0x62aa('0x5'));var BPromise=require(_0x62aa('0x6'));var Mustache=require(_0x62aa('0x7'));var util=require(_0x62aa('0x8'));var path=require(_0x62aa('0x9'));var sox=require(_0x62aa('0xa'));var csv=require('to-csv');var ejs=require(_0x62aa('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x62aa('0xc'));var squel=require('squel');var crypto=require(_0x62aa('0xd'));var jsforce=require(_0x62aa('0xe'));var deskjs=require(_0x62aa('0xf'));var toCsv=require(_0x62aa('0x10'));var querystring=require(_0x62aa('0x11'));var Papa=require(_0x62aa('0x12'));var Redis=require(_0x62aa('0x13'));var authService=require(_0x62aa('0x14'));var qs=require(_0x62aa('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x62aa('0x16'));var logger=require(_0x62aa('0x17'))(_0x62aa('0x18'));var utils=require(_0x62aa('0x19'));var config=require(_0x62aa('0x1a'));var licenseUtil=require(_0x62aa('0x1b'));var db=require(_0x62aa('0x1c'))['db'];function respondWithStatusCode(_0x35dfaf,_0xa3dcdd){_0xa3dcdd=_0xa3dcdd||0xcc;return function(_0x4154e1){if(_0x4154e1){return _0x35dfaf[_0x62aa('0x1d')](_0xa3dcdd);}return _0x35dfaf[_0x62aa('0x1e')](_0xa3dcdd)[_0x62aa('0x1f')]();};}function respondWithResult(_0x160f5f,_0x50d3e0){_0x50d3e0=_0x50d3e0||0xc8;return function(_0x161b03){if(_0x161b03){return _0x160f5f[_0x62aa('0x1e')](_0x50d3e0)[_0x62aa('0x20')](_0x161b03);}};}function respondWithFilteredResult(_0x455b87,_0x31ba9f){return function(_0x372065){if(_0x372065){var _0x24fa06=typeof _0x31ba9f['offset']==='undefined'&&typeof _0x31ba9f[_0x62aa('0x21')]==='undefined';var _0x122f8b=_0x372065['count'];var _0x1e8fbe=_0x24fa06?0x0:_0x31ba9f[_0x62aa('0x22')];var _0x2811cc=_0x24fa06?_0x372065['count']:_0x31ba9f[_0x62aa('0x22')]+_0x31ba9f[_0x62aa('0x21')];var _0x359f6e;if(_0x2811cc>=_0x122f8b){_0x2811cc=_0x122f8b;_0x359f6e=0xc8;}else{_0x359f6e=0xce;}_0x455b87[_0x62aa('0x1e')](_0x359f6e);return _0x455b87[_0x62aa('0x23')](_0x62aa('0x24'),_0x1e8fbe+'-'+_0x2811cc+'/'+_0x122f8b)[_0x62aa('0x20')](_0x372065);}return null;};}function patchUpdates(_0x2d8146){return function(_0x2c2cd0){try{jsonpatch[_0x62aa('0x25')](_0x2c2cd0,_0x2d8146,!![]);}catch(_0x4641db){return BPromise[_0x62aa('0x26')](_0x4641db);}return _0x2c2cd0[_0x62aa('0x27')]();};}function saveUpdates(_0x57c7b4,_0x3104f8){return function(_0x319522){if(_0x319522){return _0x319522[_0x62aa('0x28')](_0x57c7b4)[_0x62aa('0x29')](function(_0x19df65){return _0x19df65;});}return null;};}function removeEntity(_0x2f5853,_0x46c85a){return function(_0x1c6894){if(_0x1c6894){return _0x1c6894['destroy']()['then'](function(){_0x2f5853[_0x62aa('0x1e')](0xcc)[_0x62aa('0x1f')]();});}};}function handleEntityNotFound(_0x5bd533,_0x55a80c){return function(_0x5e84ba){if(!_0x5e84ba){_0x5bd533['sendStatus'](0x194);}return _0x5e84ba;};}function handleError(_0x4ed4f3,_0x2bad72){_0x2bad72=_0x2bad72||0x1f4;return function(_0x233e45){logger['error'](_0x233e45[_0x62aa('0x2a')]);if(_0x233e45[_0x62aa('0x2b')]){delete _0x233e45['name'];}_0x4ed4f3[_0x62aa('0x1e')](_0x2bad72)[_0x62aa('0x2c')](_0x233e45);};}exports[_0x62aa('0x2d')]=function(_0x42a69a,_0x23ede9){var _0x373d58={},_0x4c5c22={},_0x1679ea={'count':0x0,'rows':[]};var _0x1f8895=_[_0x62aa('0x2e')](db[_0x62aa('0x2f')][_0x62aa('0x30')],function(_0x52c407){return{'name':_0x52c407[_0x62aa('0x31')],'type':_0x52c407[_0x62aa('0x32')][_0x62aa('0x33')]};});_0x4c5c22[_0x62aa('0x34')]=_[_0x62aa('0x2e')](_0x1f8895,_0x62aa('0x2b'));_0x4c5c22['query']=_[_0x62aa('0x35')](_0x42a69a[_0x62aa('0x36')]);_0x4c5c22[_0x62aa('0x37')]=_[_0x62aa('0x38')](_0x4c5c22['model'],_0x4c5c22[_0x62aa('0x36')]);_0x373d58['attributes']=_[_0x62aa('0x38')](_0x4c5c22[_0x62aa('0x34')],qs['fields'](_0x42a69a[_0x62aa('0x36')][_0x62aa('0x39')]));_0x373d58['attributes']=_0x373d58['attributes'][_0x62aa('0x3a')]?_0x373d58[_0x62aa('0x3b')]:_0x4c5c22['model'];if(!_0x42a69a[_0x62aa('0x36')][_0x62aa('0x3c')]('nolimit')){_0x373d58[_0x62aa('0x21')]=qs[_0x62aa('0x21')](_0x42a69a[_0x62aa('0x36')][_0x62aa('0x21')]);_0x373d58[_0x62aa('0x22')]=qs[_0x62aa('0x22')](_0x42a69a[_0x62aa('0x36')]['offset']);}_0x373d58['order']=qs['sort'](_0x42a69a[_0x62aa('0x36')][_0x62aa('0x3d')]);_0x373d58[_0x62aa('0x3e')]=qs[_0x62aa('0x37')](_['pick'](_0x42a69a[_0x62aa('0x36')],_0x4c5c22[_0x62aa('0x37')]),_0x1f8895);if(_0x42a69a[_0x62aa('0x36')][_0x62aa('0x3f')]){_0x373d58[_0x62aa('0x3e')]=_[_0x62aa('0x40')](_0x373d58[_0x62aa('0x3e')],{'$or':_[_0x62aa('0x2e')](_0x1f8895,function(_0x22ecf7){if(_0x22ecf7[_0x62aa('0x32')]!==_0x62aa('0x41')){var _0x372bef={};_0x372bef[_0x22ecf7[_0x62aa('0x2b')]]={'$like':'%'+_0x42a69a[_0x62aa('0x36')]['filter']+'%'};return _0x372bef;}})});}_0x373d58=_[_0x62aa('0x40')]({},_0x373d58,_0x42a69a[_0x62aa('0x42')]);var _0x4fd68d={'where':_0x373d58[_0x62aa('0x3e')]};return db[_0x62aa('0x2f')]['count'](_0x4fd68d)[_0x62aa('0x29')](function(_0x31066a){_0x1679ea[_0x62aa('0x43')]=_0x31066a;if(_0x42a69a[_0x62aa('0x36')][_0x62aa('0x44')]){_0x373d58[_0x62aa('0x45')]=[{'all':!![]}];}return db['VoiceDialReport'][_0x62aa('0x46')](_0x373d58);})[_0x62aa('0x29')](function(_0x2e1f40){_0x1679ea[_0x62aa('0x47')]=_0x2e1f40;return _0x1679ea;})['then'](respondWithFilteredResult(_0x23ede9,_0x373d58))[_0x62aa('0x48')](handleError(_0x23ede9,null));};exports[_0x62aa('0x49')]=function(_0x38496f,_0x338fdd){var _0x42a77d={'raw':!![],'where':{'id':_0x38496f[_0x62aa('0x4a')]['id']}},_0x2e9141={};_0x2e9141['model']=_[_0x62aa('0x35')](db[_0x62aa('0x2f')][_0x62aa('0x30')]);_0x2e9141['query']=_[_0x62aa('0x35')](_0x38496f[_0x62aa('0x36')]);_0x2e9141[_0x62aa('0x37')]=_[_0x62aa('0x38')](_0x2e9141[_0x62aa('0x34')],_0x2e9141[_0x62aa('0x36')]);_0x42a77d[_0x62aa('0x3b')]=_[_0x62aa('0x38')](_0x2e9141['model'],qs[_0x62aa('0x39')](_0x38496f[_0x62aa('0x36')][_0x62aa('0x39')]));_0x42a77d[_0x62aa('0x3b')]=_0x42a77d[_0x62aa('0x3b')][_0x62aa('0x3a')]?_0x42a77d['attributes']:_0x2e9141[_0x62aa('0x34')];if(_0x38496f[_0x62aa('0x36')][_0x62aa('0x44')]){_0x42a77d[_0x62aa('0x45')]=[{'all':!![]}];}_0x42a77d=_['merge']({},_0x42a77d,_0x38496f[_0x62aa('0x42')]);return db[_0x62aa('0x2f')][_0x62aa('0x4b')](_0x42a77d)[_0x62aa('0x29')](handleEntityNotFound(_0x338fdd,null))[_0x62aa('0x29')](respondWithResult(_0x338fdd,null))['catch'](handleError(_0x338fdd,null));};exports[_0x62aa('0x4c')]=function(_0x474b70,_0x208db6){return db[_0x62aa('0x2f')][_0x62aa('0x4c')](_0x474b70[_0x62aa('0x4d')],{})[_0x62aa('0x29')](respondWithResult(_0x208db6,0xc9))[_0x62aa('0x48')](handleError(_0x208db6,null));};exports[_0x62aa('0x28')]=function(_0x512ffa,_0x57122d){if(_0x512ffa[_0x62aa('0x4d')]['id']){delete _0x512ffa[_0x62aa('0x4d')]['id'];}return db['VoiceDialReport'][_0x62aa('0x4b')]({'where':{'id':_0x512ffa[_0x62aa('0x4a')]['id']}})[_0x62aa('0x29')](handleEntityNotFound(_0x57122d,null))[_0x62aa('0x29')](saveUpdates(_0x512ffa[_0x62aa('0x4d')],null))['then'](respondWithResult(_0x57122d,null))['catch'](handleError(_0x57122d,null));};exports[_0x62aa('0x4e')]=function(_0x4a32bc,_0x511dfe){return db[_0x62aa('0x2f')][_0x62aa('0x4b')]({'where':{'id':_0x4a32bc[_0x62aa('0x4a')]['id']}})[_0x62aa('0x29')](handleEntityNotFound(_0x511dfe,null))[_0x62aa('0x29')](removeEntity(_0x511dfe,null))['catch'](handleError(_0x511dfe,null));};exports['describe']=function(_0x370757,_0x191088){return db[_0x62aa('0x2f')]['describe']()[_0x62aa('0x29')](respondWithResult(_0x191088,null))[_0x62aa('0x48')](handleError(_0x191088,null));};
\ No newline at end of file
index 103c6ea..1bbde86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61c8=['uniqueid','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','VoiceDialReport'];(function(_0x3be627,_0x3e387a){var _0x29963d=function(_0xc86c74){while(--_0xc86c74){_0x3be627['push'](_0x3be627['shift']());}};_0x29963d(++_0x3e387a);}(_0x61c8,0x199));var _0x861c=function(_0xae0c01,_0x449c99){_0xae0c01=_0xae0c01-0x0;var _0x913e86=_0x61c8[_0xae0c01];return _0x913e86;};'use strict';var _=require(_0x861c('0x0'));var util=require(_0x861c('0x1'));var logger=require(_0x861c('0x2'))('api');var moment=require('moment');var BPromise=require(_0x861c('0x3'));var rp=require(_0x861c('0x4'));var fs=require('fs');var path=require(_0x861c('0x5'));var rimraf=require(_0x861c('0x6'));var config=require(_0x861c('0x7'));var attributes=require('./voiceDialReport.attributes');module[_0x861c('0x8')]=function(_0xb72943,_0x56630d){return _0xb72943[_0x861c('0x9')](_0x861c('0xa'),attributes,{'tableName':'report_dial','paranoid':![],'indexes':[{'fields':[_0x861c('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x19d1=['exports','define','VoiceDialReport','uniqueid','lodash','util','api','moment','bluebird','path','../../config/environment','./voiceDialReport.attributes'];(function(_0xc1efca,_0x44f193){var _0x17c8b8=function(_0x4cda2d){while(--_0x4cda2d){_0xc1efca['push'](_0xc1efca['shift']());}};_0x17c8b8(++_0x44f193);}(_0x19d1,0x16c));var _0x119d=function(_0x3c6ce5,_0x5d225b){_0x3c6ce5=_0x3c6ce5-0x0;var _0xd66f4=_0x19d1[_0x3c6ce5];return _0xd66f4;};'use strict';var _=require(_0x119d('0x0'));var util=require(_0x119d('0x1'));var logger=require('../../config/logger')(_0x119d('0x2'));var moment=require(_0x119d('0x3'));var BPromise=require(_0x119d('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x119d('0x5'));var rimraf=require('rimraf');var config=require(_0x119d('0x6'));var attributes=require(_0x119d('0x7'));module[_0x119d('0x8')]=function(_0x3db3d9,_0x1a58d5){return _0x3db3d9[_0x119d('0x9')](_0x119d('0xa'),attributes,{'tableName':'report_dial','paranoid':![],'indexes':[{'fields':[_0x119d('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index e6ee088..2245d8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2648=['create','body','options','raw','then','stringify','UpdateVoiceDialReport','update','where','attributes','limit','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','http','request','info','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateVoiceDialReport'];(function(_0x272e40,_0x34b731){var _0x329681=function(_0x223e67){while(--_0x223e67){_0x272e40['push'](_0x272e40['shift']());}};_0x329681(++_0x34b731);}(_0x2648,0x19e));var _0x8264=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2648[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x8264('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x8264('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8264('0x2'));var db=require(_0x8264('0x3'))['db'];var utils=require(_0x8264('0x4'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x8264('0x5'));var client=jayson[_0x8264('0x6')][_0x8264('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x19d049,_0x49465e,_0x542695){return new BPromise(function(_0x20e3e6,_0x34eef4){return client[_0x8264('0x8')](_0x19d049,_0x542695)['then'](function(_0x1cc30e){logger[_0x8264('0x9')](_0x8264('0xa'),_0x49465e,_0x8264('0xb'));logger[_0x8264('0xc')](_0x8264('0xd'),_0x49465e,_0x8264('0xb'),JSON['stringify'](_0x1cc30e));if(_0x1cc30e['error']){if(_0x1cc30e[_0x8264('0xe')][_0x8264('0xf')]===0x1f4){logger[_0x8264('0xe')](_0x8264('0xa'),_0x49465e,_0x1cc30e[_0x8264('0xe')][_0x8264('0x10')]);return _0x34eef4(_0x1cc30e[_0x8264('0xe')][_0x8264('0x10')]);}logger[_0x8264('0xe')](_0x8264('0xa'),_0x49465e,_0x1cc30e[_0x8264('0xe')][_0x8264('0x10')]);return _0x20e3e6(_0x1cc30e[_0x8264('0xe')][_0x8264('0x10')]);}else{logger[_0x8264('0x9')]('VoiceDialReport,\x20%s,\x20%s',_0x49465e,_0x8264('0xb'));_0x20e3e6(_0x1cc30e[_0x8264('0x11')][_0x8264('0x10')]);}})[_0x8264('0x12')](function(_0x1b42b8){logger[_0x8264('0xe')](_0x8264('0xa'),_0x49465e,_0x1b42b8);_0x34eef4(_0x1b42b8);});});}exports[_0x8264('0x13')]=function(_0x3ab96c){var _0x2e633b=this;return new Promise(function(_0x3746b6,_0x2bdce6){return db['VoiceDialReport'][_0x8264('0x14')](_0x3ab96c[_0x8264('0x15')],{'raw':_0x3ab96c['options']?_0x3ab96c[_0x8264('0x16')][_0x8264('0x17')]===undefined?!![]:![]:!![]})[_0x8264('0x18')](function(_0x5d42ac){logger[_0x8264('0x9')](_0x8264('0x13'),_0x3ab96c);logger[_0x8264('0xc')](_0x8264('0x13'),_0x3ab96c,JSON[_0x8264('0x19')](_0x5d42ac));_0x3746b6(_0x5d42ac);})['catch'](function(_0x3d72d7){logger[_0x8264('0xe')](_0x8264('0x13'),_0x3d72d7['message'],_0x3ab96c);_0x2bdce6(_0x2e633b[_0x8264('0xe')](0x1f4,_0x3d72d7[_0x8264('0x10')]));});});};exports[_0x8264('0x1a')]=function(_0x4f5a5c){var _0x317490=this;return new Promise(function(_0x4db2c0,_0x34db52){return db['VoiceDialReport'][_0x8264('0x1b')](_0x4f5a5c[_0x8264('0x15')],{'raw':_0x4f5a5c[_0x8264('0x16')]?_0x4f5a5c[_0x8264('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4f5a5c[_0x8264('0x16')]?_0x4f5a5c['options'][_0x8264('0x1c')]||null:null,'attributes':_0x4f5a5c[_0x8264('0x16')]?_0x4f5a5c[_0x8264('0x16')][_0x8264('0x1d')]||null:null,'limit':_0x4f5a5c[_0x8264('0x16')]?_0x4f5a5c[_0x8264('0x16')][_0x8264('0x1e')]||null:null})[_0x8264('0x18')](function(_0x3e44c2){logger[_0x8264('0x9')](_0x8264('0x1a'),_0x4f5a5c);logger[_0x8264('0xc')](_0x8264('0x1a'),_0x4f5a5c,JSON[_0x8264('0x19')](_0x3e44c2));_0x4db2c0(_0x3e44c2);})[_0x8264('0x12')](function(_0x3973dc){logger[_0x8264('0xe')](_0x8264('0x1a'),_0x3973dc[_0x8264('0x10')],_0x4f5a5c);_0x34db52(_0x317490[_0x8264('0xe')](0x1f4,_0x3973dc[_0x8264('0x10')]));});});};
\ No newline at end of file
+var _0xd1c7=['http','then','info','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','CreateVoiceDialReport','body','options','raw','update','UpdateVoiceDialReport','util','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise'];(function(_0x333b3a,_0x5de9f1){var _0x5205cd=function(_0x137708){while(--_0x137708){_0x333b3a['push'](_0x333b3a['shift']());}};_0x5205cd(++_0x5de9f1);}(_0xd1c7,0x189));var _0x7d1c=function(_0x4610f6,_0x5fe8c3){_0x4610f6=_0x4610f6-0x0;var _0x422a4d=_0xd1c7[_0x4610f6];return _0x422a4d;};'use strict';var _=require('lodash');var util=require(_0x7d1c('0x0'));var moment=require('moment');var BPromise=require(_0x7d1c('0x1'));var rs=require(_0x7d1c('0x2'));var fs=require('fs');var Redis=require(_0x7d1c('0x3'));var db=require(_0x7d1c('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7d1c('0x5'));var config=require('../../config/environment');var jayson=require(_0x7d1c('0x6'));var client=jayson['client'][_0x7d1c('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5d08b7,_0x2d86f5,_0x1b06d6){return new BPromise(function(_0x2146b1,_0x15af4c){return client['request'](_0x5d08b7,_0x1b06d6)[_0x7d1c('0x8')](function(_0x4104e2){logger[_0x7d1c('0x9')](_0x7d1c('0xa'),_0x2d86f5,_0x7d1c('0xb'));logger[_0x7d1c('0xc')]('VoiceDialReport,\x20%s,\x20%s,\x20%s',_0x2d86f5,_0x7d1c('0xb'),JSON[_0x7d1c('0xd')](_0x4104e2));if(_0x4104e2[_0x7d1c('0xe')]){if(_0x4104e2[_0x7d1c('0xe')][_0x7d1c('0xf')]===0x1f4){logger[_0x7d1c('0xe')]('VoiceDialReport,\x20%s,\x20%s',_0x2d86f5,_0x4104e2[_0x7d1c('0xe')]['message']);return _0x15af4c(_0x4104e2[_0x7d1c('0xe')][_0x7d1c('0x10')]);}logger[_0x7d1c('0xe')](_0x7d1c('0xa'),_0x2d86f5,_0x4104e2[_0x7d1c('0xe')][_0x7d1c('0x10')]);return _0x2146b1(_0x4104e2[_0x7d1c('0xe')][_0x7d1c('0x10')]);}else{logger['info'](_0x7d1c('0xa'),_0x2d86f5,_0x7d1c('0xb'));_0x2146b1(_0x4104e2[_0x7d1c('0x11')][_0x7d1c('0x10')]);}})[_0x7d1c('0x12')](function(_0x1d3b17){logger[_0x7d1c('0xe')]('VoiceDialReport,\x20%s,\x20%s',_0x2d86f5,_0x1d3b17);_0x15af4c(_0x1d3b17);});});}exports[_0x7d1c('0x13')]=function(_0xd34246){var _0xdad527=this;return new Promise(function(_0x5529c8,_0xec9ac2){return db['VoiceDialReport']['create'](_0xd34246[_0x7d1c('0x14')],{'raw':_0xd34246[_0x7d1c('0x15')]?_0xd34246[_0x7d1c('0x15')][_0x7d1c('0x16')]===undefined?!![]:![]:!![]})[_0x7d1c('0x8')](function(_0x337587){logger['info']('CreateVoiceDialReport',_0xd34246);logger['debug'](_0x7d1c('0x13'),_0xd34246,JSON[_0x7d1c('0xd')](_0x337587));_0x5529c8(_0x337587);})[_0x7d1c('0x12')](function(_0x260bd4){logger['error'](_0x7d1c('0x13'),_0x260bd4['message'],_0xd34246);_0xec9ac2(_0xdad527['error'](0x1f4,_0x260bd4[_0x7d1c('0x10')]));});});};exports['UpdateVoiceDialReport']=function(_0x160a72){var _0x88850f=this;return new Promise(function(_0xd1c242,_0x3f1bc0){return db['VoiceDialReport'][_0x7d1c('0x17')](_0x160a72['body'],{'raw':_0x160a72[_0x7d1c('0x15')]?_0x160a72[_0x7d1c('0x15')][_0x7d1c('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x160a72[_0x7d1c('0x15')]?_0x160a72[_0x7d1c('0x15')]['where']||null:null,'attributes':_0x160a72[_0x7d1c('0x15')]?_0x160a72[_0x7d1c('0x15')]['attributes']||null:null,'limit':_0x160a72['options']?_0x160a72[_0x7d1c('0x15')]['limit']||null:null})['then'](function(_0x2d0ade){logger[_0x7d1c('0x9')]('UpdateVoiceDialReport',_0x160a72);logger[_0x7d1c('0xc')]('UpdateVoiceDialReport',_0x160a72,JSON[_0x7d1c('0xd')](_0x2d0ade));_0xd1c242(_0x2d0ade);})['catch'](function(_0x20ede1){logger[_0x7d1c('0xe')](_0x7d1c('0x18'),_0x20ede1[_0x7d1c('0x10')],_0x160a72);_0x3f1bc0(_0x88850f[_0x7d1c('0xe')](0x1f4,_0x20ede1[_0x7d1c('0x10')]));});});};
\ No newline at end of file
index 6156e61..49373aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x335f=['put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','./voiceExtension.controller','get','isAuthenticated','/:id','show','post','/:id/applications','addApplications'];(function(_0x194618,_0x2b8535){var _0x3a6638=function(_0x3853f6){while(--_0x3853f6){_0x194618['push'](_0x194618['shift']());}};_0x3a6638(++_0x2b8535);}(_0x335f,0x1cc));var _0xf335=function(_0x11b239,_0x39c5ab){_0x11b239=_0x11b239-0x0;var _0x7a3f22=_0x335f[_0x11b239];return _0x7a3f22;};'use strict';var multer=require(_0xf335('0x0'));var util=require(_0xf335('0x1'));var path=require(_0xf335('0x2'));var timeout=require(_0xf335('0x3'));var express=require(_0xf335('0x4'));var router=express[_0xf335('0x5')]();var fs_extra=require(_0xf335('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf335('0x7'));router[_0xf335('0x8')]('/',auth[_0xf335('0x9')](),controller['index']);router[_0xf335('0x8')](_0xf335('0xa'),auth[_0xf335('0x9')](),controller[_0xf335('0xb')]);router[_0xf335('0xc')]('/',auth[_0xf335('0x9')](),controller['create']);router[_0xf335('0xc')](_0xf335('0xd'),auth[_0xf335('0x9')](),controller[_0xf335('0xe')]);router[_0xf335('0xf')](_0xf335('0xa'),auth[_0xf335('0x9')](),controller['update']);router[_0xf335('0x10')](_0xf335('0xa'),auth[_0xf335('0x9')](),controller[_0xf335('0x11')]);module[_0xf335('0x12')]=router;
\ No newline at end of file
+var _0xcc19=['isAuthenticated','index','/:id','post','create','/:id/applications','addApplications','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x4fdaa6,_0x345755){var _0x18f73d=function(_0x32e5bb){while(--_0x32e5bb){_0x4fdaa6['push'](_0x4fdaa6['shift']());}};_0x18f73d(++_0x345755);}(_0xcc19,0x1c3));var _0x9cc1=function(_0x2e440b,_0x540f27){_0x2e440b=_0x2e440b-0x0;var _0x46e1a4=_0xcc19[_0x2e440b];return _0x46e1a4;};'use strict';var multer=require(_0x9cc1('0x0'));var util=require(_0x9cc1('0x1'));var path=require(_0x9cc1('0x2'));var timeout=require(_0x9cc1('0x3'));var express=require(_0x9cc1('0x4'));var router=express[_0x9cc1('0x5')]();var fs_extra=require(_0x9cc1('0x6'));var auth=require(_0x9cc1('0x7'));var interaction=require(_0x9cc1('0x8'));var config=require(_0x9cc1('0x9'));var controller=require('./voiceExtension.controller');router[_0x9cc1('0xa')]('/',auth[_0x9cc1('0xb')](),controller[_0x9cc1('0xc')]);router[_0x9cc1('0xa')](_0x9cc1('0xd'),auth[_0x9cc1('0xb')](),controller['show']);router[_0x9cc1('0xe')]('/',auth[_0x9cc1('0xb')](),controller[_0x9cc1('0xf')]);router['post'](_0x9cc1('0x10'),auth[_0x9cc1('0xb')](),controller[_0x9cc1('0x11')]);router[_0x9cc1('0x12')](_0x9cc1('0xd'),auth[_0x9cc1('0xb')](),controller['update']);router[_0x9cc1('0x13')](_0x9cc1('0xd'),auth[_0x9cc1('0xb')](),controller[_0x9cc1('0x14')]);module[_0x9cc1('0x15')]=router;
\ No newline at end of file
index 0a64d38..0882e9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50ac=['compositeIndex','ENUM','inbound','outbound','inbound-fax','outbound-fax','system','any','*,*,*,*','INTEGER','BOOLEAN','wav','VIRTUAL','sequelize','STRING'];(function(_0x45e6c9,_0x31f591){var _0x538af0=function(_0x5a3304){while(--_0x5a3304){_0x45e6c9['push'](_0x45e6c9['shift']());}};_0x538af0(++_0x31f591);}(_0x50ac,0x148));var _0xc50a=function(_0x5c46fe,_0x56e4f7){_0x5c46fe=_0x5c46fe-0x0;var _0x497f6c=_0x50ac[_0x5c46fe];return _0x497f6c;};'use strict';var Sequelize=require(_0xc50a('0x0'));module['exports']={'context':{'type':Sequelize[_0xc50a('0x1')],'allowNull':![],'unique':_0xc50a('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0xc50a('0x1')],'allowNull':![],'unique':_0xc50a('0x2')},'priority':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'1','unique':'compositeIndex'},'tag':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0xc50a('0x1')],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize[_0xc50a('0x1')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0xc50a('0x3')](_0xc50a('0x4'),_0xc50a('0x5'),'internal',_0xc50a('0x6'),_0xc50a('0x7'),_0xc50a('0x8'),_0xc50a('0x9')),'allowNull':![]},'description':{'type':Sequelize[_0xc50a('0x1')]},'interval':{'type':Sequelize[_0xc50a('0x1')],'allowNull':![],'defaultValue':_0xc50a('0xa')},'IntervalId':{'type':Sequelize[_0xc50a('0xb')]},'isApp':{'type':Sequelize[_0xc50a('0xc')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0xc50a('0x1')],'defaultValue':null},'callerID':{'type':Sequelize[_0xc50a('0x1')],'allowNull':!![]},'record':{'type':Sequelize[_0xc50a('0xc')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0xc50a('0xb')]},'recordingFormat':{'type':Sequelize[_0xc50a('0x1')],'defaultValue':_0xc50a('0xd')},'answer':{'type':Sequelize[_0xc50a('0xc')],'defaultValue':!![]},'name':{'type':Sequelize[_0xc50a('0xe')],'get':function(_0x6c26d3){return this['getDataValue']('exten');}},'alias':{'type':Sequelize[_0xc50a('0x1')],'allowNull':!![]}};
\ No newline at end of file
+var _0x4461=['exten','sequelize','exports','STRING','compositeIndex','NoOp','ENUM','inbound','outbound','internal','inbound-fax','*,*,*,*','INTEGER','BOOLEAN','wav','VIRTUAL'];(function(_0x2cb6d4,_0x471a92){var _0x53c00f=function(_0x44ca79){while(--_0x44ca79){_0x2cb6d4['push'](_0x2cb6d4['shift']());}};_0x53c00f(++_0x471a92);}(_0x4461,0x121));var _0x1446=function(_0x5becd6,_0x13e651){_0x5becd6=_0x5becd6-0x0;var _0x3b7b78=_0x4461[_0x5becd6];return _0x3b7b78;};'use strict';var Sequelize=require(_0x1446('0x0'));module[_0x1446('0x1')]={'context':{'type':Sequelize[_0x1446('0x2')],'allowNull':![],'unique':_0x1446('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x1446('0x3')},'priority':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'1','unique':'compositeIndex'},'tag':{'type':Sequelize[_0x1446('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x1446('0x4')},'appdata':{'type':Sequelize[_0x1446('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x1446('0x5')](_0x1446('0x6'),_0x1446('0x7'),_0x1446('0x8'),_0x1446('0x9'),'outbound-fax','system','any'),'allowNull':![]},'description':{'type':Sequelize[_0x1446('0x2')]},'interval':{'type':Sequelize[_0x1446('0x2')],'allowNull':![],'defaultValue':_0x1446('0xa')},'IntervalId':{'type':Sequelize[_0x1446('0xb')]},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x1446('0x2')],'defaultValue':null},'callerID':{'type':Sequelize['STRING'],'allowNull':!![]},'record':{'type':Sequelize[_0x1446('0xc')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x1446('0xb')]},'recordingFormat':{'type':Sequelize[_0x1446('0x2')],'defaultValue':_0x1446('0xd')},'answer':{'type':Sequelize[_0x1446('0xc')],'defaultValue':!![]},'name':{'type':Sequelize[_0x1446('0xe')],'get':function(_0x35962f){return this['getDataValue'](_0x1446('0xf'));}},'alias':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
index f81e9ec..5b5d881 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x255b=['./voiceExtension.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','destroy','get','InboundRoutes','inbound','OutboundRoutes','InternalRoutes','internal','filter','ignore','value','includes','type','find','name','then','error','stack','send','index','map','VoiceExtension','rawAttributes','fieldName','query','keys','intersection','attributes','fields','length','model','order','sort','where','filters','pick','merge','VIRTUAL','includeAll','include','rows','catch','show','params','options','create','outbound','startsWith','body','exten','concat','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','recordingFormat','mandatoryDisposition','alias','addApplications','findOne','sequelize','transaction','VoiceExtensionId','isApp','rewriteDial','createRouting','bulkCreate','findAndCountAll','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter'];(function(_0x36884e,_0x48008f){var _0x1cc367=function(_0x388a78){while(--_0x388a78){_0x36884e['push'](_0x36884e['shift']());}};_0x1cc367(++_0x48008f);}(_0x255b,0x12f));var _0xb255=function(_0xa08cfd,_0x5d04fe){_0xa08cfd=_0xa08cfd-0x0;var _0x27b129=_0x255b[_0xa08cfd];return _0x27b129;};'use strict';var emlformat=require(_0xb255('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb255('0x1'));var jsonpatch=require(_0xb255('0x2'));var rp=require(_0xb255('0x3'));var moment=require(_0xb255('0x4'));var BPromise=require(_0xb255('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xb255('0x6'));var sox=require('sox');var csv=require(_0xb255('0x7'));var ejs=require(_0xb255('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb255('0x9'));var squel=require(_0xb255('0xa'));var crypto=require(_0xb255('0xb'));var jsforce=require(_0xb255('0xc'));var deskjs=require(_0xb255('0xd'));var toCsv=require(_0xb255('0x7'));var querystring=require(_0xb255('0xe'));var Papa=require(_0xb255('0xf'));var Redis=require(_0xb255('0x10'));var authService=require(_0xb255('0x11'));var qs=require(_0xb255('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb255('0x13'));var logger=require(_0xb255('0x14'))(_0xb255('0x15'));var utils=require('../../config/utils');var config=require(_0xb255('0x16'));var licenseUtil=require(_0xb255('0x17'));var db=require('../../mysqldb')['db'];config[_0xb255('0x18')]=_[_0xb255('0x19')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xb255('0x1a'))(new Redis(config[_0xb255('0x18')]));require(_0xb255('0x1b'))['register'](socket);function respondWithStatusCode(_0x5158e2,_0x1d1aeb){_0x1d1aeb=_0x1d1aeb||0xcc;return function(_0x161ad9){if(_0x161ad9){return _0x5158e2[_0xb255('0x1c')](_0x1d1aeb);}return _0x5158e2[_0xb255('0x1d')](_0x1d1aeb)[_0xb255('0x1e')]();};}function respondWithResult(_0x55eef3,_0x5d8fe1){_0x5d8fe1=_0x5d8fe1||0xc8;return function(_0x5a640e){if(_0x5a640e){return _0x55eef3[_0xb255('0x1d')](_0x5d8fe1)[_0xb255('0x1f')](_0x5a640e);}};}function respondWithFilteredResult(_0x386fdc,_0x55880c){return function(_0x54db30){if(_0x54db30){var _0x1954f2=typeof _0x55880c[_0xb255('0x20')]===_0xb255('0x21')&&typeof _0x55880c[_0xb255('0x22')]===_0xb255('0x21');var _0x58802a=_0x54db30['count'];var _0x2b9b34=_0x1954f2?0x0:_0x55880c[_0xb255('0x20')];var _0x3a7fdb=_0x1954f2?_0x54db30[_0xb255('0x23')]:_0x55880c[_0xb255('0x20')]+_0x55880c[_0xb255('0x22')];var _0x2674c3;if(_0x3a7fdb>=_0x58802a){_0x3a7fdb=_0x58802a;_0x2674c3=0xc8;}else{_0x2674c3=0xce;}_0x386fdc[_0xb255('0x1d')](_0x2674c3);return _0x386fdc[_0xb255('0x24')](_0xb255('0x25'),_0x2b9b34+'-'+_0x3a7fdb+'/'+_0x58802a)['json'](_0x54db30);}return null;};}function patchUpdates(_0x3c4b65){return function(_0x4b128d){try{jsonpatch[_0xb255('0x26')](_0x4b128d,_0x3c4b65,!![]);}catch(_0x2bac53){return BPromise['reject'](_0x2bac53);}return _0x4b128d['save']();};}function saveUpdates(_0x260b1b,_0x324ad8){return function(_0x4a37c3){if(_0x4a37c3){return _0x4a37c3[_0xb255('0x27')](_0x260b1b)['then'](function(_0x39d0e9){return _0x39d0e9;});}return null;};}function removeEntity(_0x33a1ba,_0x13bf47){return function(_0xd1c861){if(_0xd1c861){return _0xd1c861[_0xb255('0x28')]()['then'](function(){var _0x1bc51f=_0xd1c861[_0xb255('0x29')]({'plain':!![]});var _0x31d3aa=[{'name':_0xb255('0x2a'),'value':_0xb255('0x2b'),'ignore':![]},{'name':_0xb255('0x2c'),'value':'outbound','ignore':![]},{'name':_0xb255('0x2d'),'value':_0xb255('0x2e'),'ignore':![]}];var _0x1d07ad=_(_0x31d3aa)[_0xb255('0x2f')](_0xb255('0x30'))['map'](_0xb255('0x31'))['value']();if(_[_0xb255('0x32')](_0x1d07ad,_0x1bc51f[_0xb255('0x33')])){return;}var _0xea1f0a=_[_0xb255('0x34')](_0x31d3aa,[_0xb255('0x31'),_0x1bc51f['type']])[_0xb255('0x35')];return db['UserProfileResource']['destroy']({'where':{'type':_0xea1f0a,'resourceId':_0x1bc51f['id']}})[_0xb255('0x36')](function(){return _0xd1c861;});})[_0xb255('0x36')](function(){_0x33a1ba[_0xb255('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe84cf7,_0x225146){return function(_0xe28f77){if(!_0xe28f77){_0xe84cf7[_0xb255('0x1c')](0x194);}return _0xe28f77;};}function handleError(_0x5e7e56,_0x539e4e){_0x539e4e=_0x539e4e||0x1f4;return function(_0x154205){logger[_0xb255('0x37')](_0x154205[_0xb255('0x38')]);if(_0x154205['name']){delete _0x154205[_0xb255('0x35')];}_0x5e7e56[_0xb255('0x1d')](_0x539e4e)[_0xb255('0x39')](_0x154205);};}exports[_0xb255('0x3a')]=function(_0x53b36f,_0x33525a){var _0x980fb2={},_0x1a5df8={},_0x473d1e={'count':0x0,'rows':[]};var _0x542f48=_[_0xb255('0x3b')](db[_0xb255('0x3c')][_0xb255('0x3d')],function(_0x1562b2){return{'name':_0x1562b2[_0xb255('0x3e')],'type':_0x1562b2[_0xb255('0x33')]['key']};});_0x1a5df8['model']=_[_0xb255('0x3b')](_0x542f48,_0xb255('0x35'));_0x1a5df8[_0xb255('0x3f')]=_[_0xb255('0x40')](_0x53b36f[_0xb255('0x3f')]);_0x1a5df8['filters']=_[_0xb255('0x41')](_0x1a5df8['model'],_0x1a5df8[_0xb255('0x3f')]);_0x980fb2[_0xb255('0x42')]=_['intersection'](_0x1a5df8['model'],qs[_0xb255('0x43')](_0x53b36f[_0xb255('0x3f')][_0xb255('0x43')]));_0x980fb2['attributes']=_0x980fb2['attributes'][_0xb255('0x44')]?_0x980fb2[_0xb255('0x42')]:_0x1a5df8[_0xb255('0x45')];if(!_0x53b36f[_0xb255('0x3f')]['hasOwnProperty']('nolimit')){_0x980fb2['limit']=qs[_0xb255('0x22')](_0x53b36f['query'][_0xb255('0x22')]);_0x980fb2['offset']=qs['offset'](_0x53b36f['query'][_0xb255('0x20')]);}_0x980fb2[_0xb255('0x46')]=qs['sort'](_0x53b36f['query'][_0xb255('0x47')]);_0x980fb2[_0xb255('0x48')]=qs[_0xb255('0x49')](_[_0xb255('0x4a')](_0x53b36f[_0xb255('0x3f')],_0x1a5df8[_0xb255('0x49')]),_0x542f48);if(_0x53b36f['query'][_0xb255('0x2f')]){_0x980fb2[_0xb255('0x48')]=_[_0xb255('0x4b')](_0x980fb2[_0xb255('0x48')],{'$or':_['map'](_0x542f48,function(_0xf88e82){if(_0xf88e82[_0xb255('0x33')]!==_0xb255('0x4c')){var _0x59b0c0={};_0x59b0c0[_0xf88e82[_0xb255('0x35')]]={'$like':'%'+_0x53b36f['query'][_0xb255('0x2f')]+'%'};return _0x59b0c0;}})});}_0x980fb2=_['merge']({},_0x980fb2,_0x53b36f['options']);var _0x848070={'where':_0x980fb2['where']};return db[_0xb255('0x3c')][_0xb255('0x23')](_0x848070)[_0xb255('0x36')](function(_0x85fbf4){_0x473d1e[_0xb255('0x23')]=_0x85fbf4;if(_0x53b36f[_0xb255('0x3f')][_0xb255('0x4d')]){_0x980fb2[_0xb255('0x4e')]=[{'all':!![]}];}return db[_0xb255('0x3c')]['findAll'](_0x980fb2);})[_0xb255('0x36')](function(_0x8d5fc8){_0x473d1e[_0xb255('0x4f')]=_0x8d5fc8;return _0x473d1e;})[_0xb255('0x36')](respondWithFilteredResult(_0x33525a,_0x980fb2))[_0xb255('0x50')](handleError(_0x33525a,null));};exports[_0xb255('0x51')]=function(_0x51e2df,_0x5695ef){var _0x5d54ad={'raw':![],'where':{'id':_0x51e2df[_0xb255('0x52')]['id']}},_0xc25fae={};_0xc25fae[_0xb255('0x45')]=_[_0xb255('0x40')](db['VoiceExtension']['rawAttributes']);_0xc25fae['query']=_[_0xb255('0x40')](_0x51e2df[_0xb255('0x3f')]);_0xc25fae[_0xb255('0x49')]=_[_0xb255('0x41')](_0xc25fae[_0xb255('0x45')],_0xc25fae[_0xb255('0x3f')]);_0x5d54ad[_0xb255('0x42')]=_[_0xb255('0x41')](_0xc25fae['model'],qs[_0xb255('0x43')](_0x51e2df['query'][_0xb255('0x43')]));_0x5d54ad['attributes']=_0x5d54ad['attributes']['length']?_0x5d54ad[_0xb255('0x42')]:_0xc25fae[_0xb255('0x45')];if(_0x51e2df['query'][_0xb255('0x4d')]){_0x5d54ad[_0xb255('0x4e')]=[{'all':!![]}];}_0x5d54ad=_[_0xb255('0x4b')]({},_0x5d54ad,_0x51e2df[_0xb255('0x53')]);return db[_0xb255('0x3c')][_0xb255('0x34')](_0x5d54ad)[_0xb255('0x36')](handleEntityNotFound(_0x5695ef,null))['then'](respondWithResult(_0x5695ef,null))[_0xb255('0x50')](handleError(_0x5695ef,null));};exports[_0xb255('0x28')]=function(_0x486ab3,_0x2777d0){return db[_0xb255('0x3c')][_0xb255('0x34')]({'where':{'id':_0x486ab3[_0xb255('0x52')]['id']}})[_0xb255('0x36')](handleEntityNotFound(_0x2777d0,null))[_0xb255('0x36')](removeEntity(_0x2777d0,null))[_0xb255('0x50')](handleError(_0x2777d0,null));};exports[_0xb255('0x54')]=function(_0x579ef9,_0x532c75){if(_0x579ef9['body'][_0xb255('0x33')]===_0xb255('0x55')&&!_[_0xb255('0x56')](_0x579ef9[_0xb255('0x57')][_0xb255('0x58')],'_')){_0x579ef9[_0xb255('0x57')]['exten']='_'[_0xb255('0x59')](_0x579ef9['body']['exten']);}return db[_0xb255('0x3c')][_0xb255('0x54')](_0x579ef9['body'],{'raw':![]})[_0xb255('0x36')](function(_0x5549b0){var _0x174b5a=_0x579ef9['user'][_0xb255('0x29')]({'plain':!![]});if(!_0x174b5a)throw new Error(_0xb255('0x5a'));if(_0x174b5a[_0xb255('0x5b')]===_0xb255('0x5c')){var _0x1b724e=_0x5549b0[_0xb255('0x29')]({'plain':!![]});var _0x579b90=[{'name':_0xb255('0x2a'),'value':'inbound'},{'name':'OutboundRoutes','value':_0xb255('0x55')},{'name':_0xb255('0x2d'),'value':_0xb255('0x2e')}];var _0x7701b9=_[_0xb255('0x34')](_0x579b90,[_0xb255('0x31'),_0x1b724e[_0xb255('0x33')]])[_0xb255('0x35')];return db['UserProfileSection'][_0xb255('0x34')]({'where':{'name':_0x7701b9,'userProfileId':_0x174b5a[_0xb255('0x5d')]},'raw':!![]})['then'](function(_0x4900c4){if(_0x4900c4&&_0x4900c4['autoAssociation']===0x0){return db[_0xb255('0x5e')]['create']({'name':_0x1b724e[_0xb255('0x35')],'resourceId':_0x1b724e['id'],'type':_0x4900c4[_0xb255('0x35')],'sectionId':_0x4900c4['id']},{})['then'](function(){return _0x5549b0;});}else{return _0x5549b0;}})[_0xb255('0x50')](function(_0x2f937b){logger[_0xb255('0x37')](_0xb255('0x5f'),_0x2f937b);throw _0x2f937b;});}return _0x5549b0;})['then'](respondWithResult(_0x532c75,0xc9))['catch'](handleError(_0x532c75,null));};exports[_0xb255('0x27')]=function(_0x5f48dc,_0x5082d9){if(_0x5f48dc[_0xb255('0x57')]['id']){delete _0x5f48dc[_0xb255('0x57')]['id'];}return db['VoiceExtension'][_0xb255('0x34')]({'where':{'id':_0x5f48dc[_0xb255('0x52')]['id']}})[_0xb255('0x36')](handleEntityNotFound(_0x5082d9,null))[_0xb255('0x36')](function(_0xefbb03){if(_0xefbb03){return db[_0xb255('0x3c')][_0xb255('0x27')](_[_0xb255('0x4a')](_0x5f48dc[_0xb255('0x57')],[_0xb255('0x58'),_0xb255('0x60'),'description',_0xb255('0x61'),'cutdigits',_0xb255('0x62'),_0xb255('0x63')]),{'where':{'context':_0xefbb03[_0xb255('0x60')],'exten':_0xefbb03[_0xb255('0x58')]},'individualHooks':!![]})[_0xb255('0x36')](function(_0x5e60d9){return _0x5e60d9;});}return null;})[_0xb255('0x36')](respondWithStatusCode(_0x5082d9,null))['catch'](handleError(_0x5082d9,null));};exports[_0xb255('0x64')]=function(_0x528e19,_0x40ebfa){return db[_0xb255('0x3c')][_0xb255('0x65')]({'where':{'id':_0x528e19['params']['id']}})['then'](function(_0x1a3b84){if(_0x1a3b84){return db[_0xb255('0x66')][_0xb255('0x67')](function(_0x594730){return db[_0xb255('0x3c')][_0xb255('0x28')]({'where':{'VoiceExtensionId':_0x528e19['params']['id']},'transaction':_0x594730})[_0xb255('0x36')](function(){var _0xe9dded=_[_0xb255('0x3b')](_0x528e19[_0xb255('0x57')],function(_0x4011b1){_0x4011b1[_0xb255('0x68')]=_0x528e19[_0xb255('0x52')]['id'];_0x4011b1[_0xb255('0x69')]=!![];return _0x4011b1;});var _0x1da490=_0x528e19[_0xb255('0x3f')]['rewriteDial']&&_0x528e19['query'][_0xb255('0x6a')]['toLowerCase']()==='true'?!![]:![];return _0x1a3b84[_0xb255('0x6b')](_0xe9dded,_0x1da490);})['then'](function(_0x21866d){return db[_0xb255('0x3c')][_0xb255('0x6c')](_0x21866d,{'transaction':_0x594730});});})['then'](function(){return db[_0xb255('0x3c')][_0xb255('0x6d')]({'where':{'isApp':!![],'VoiceExtensionId':_0x528e19['params']['id']},'order':'cast(priority\x20as\x20unsigned)'});});}})[_0xb255('0x36')](respondWithResult(_0x40ebfa,null))[_0xb255('0x50')](handleError(_0x40ebfa,null));};
\ No newline at end of file
+var _0x819d=['Unable\x20to\x20retrieve\x20the\x20current\x20user','role','InboundRoutes','inbound','internal','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','pick','context','cutdigits','mandatoryDisposition','alias','addApplications','findOne','sequelize','transaction','VoiceExtensionId','rewriteDial','toLowerCase','true','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','eml-format','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','../../components/auth/service','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','register','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','destroy','OutboundRoutes','outbound','InternalRoutes','filter','ignore','map','value','includes','type','name','error','send','index','VoiceExtension','fieldName','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','where','VIRTUAL','merge','options','includeAll','include','show','find','catch','create','body','startsWith','exten','concat','user'];(function(_0x25b831,_0x4d25fa){var _0x2b31b3=function(_0x28431a){while(--_0x28431a){_0x25b831['push'](_0x25b831['shift']());}};_0x2b31b3(++_0x4d25fa);}(_0x819d,0x1cb));var _0xd819=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x819d[_0x160c73];return _0xd9302;};'use strict';var emlformat=require(_0xd819('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xd819('0x1'));var rp=require(_0xd819('0x2'));var moment=require(_0xd819('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xd819('0x4'));var util=require(_0xd819('0x5'));var path=require(_0xd819('0x6'));var sox=require(_0xd819('0x7'));var csv=require('to-csv');var ejs=require(_0xd819('0x8'));var fs=require('fs');var fs_extra=require(_0xd819('0x9'));var _=require(_0xd819('0xa'));var squel=require(_0xd819('0xb'));var crypto=require(_0xd819('0xc'));var jsforce=require(_0xd819('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xd819('0xe'));var querystring=require(_0xd819('0xf'));var Papa=require(_0xd819('0x10'));var Redis=require('ioredis');var authService=require(_0xd819('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd819('0x12'));var utils=require(_0xd819('0x13'));var config=require(_0xd819('0x14'));var licenseUtil=require(_0xd819('0x15'));var db=require('../../mysqldb')['db'];config[_0xd819('0x16')]=_[_0xd819('0x17')](config[_0xd819('0x16')],{'host':_0xd819('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd819('0x16')]));require('./voiceExtension.socket')[_0xd819('0x19')](socket);function respondWithStatusCode(_0x53c961,_0x4fce92){_0x4fce92=_0x4fce92||0xcc;return function(_0x106e2f){if(_0x106e2f){return _0x53c961[_0xd819('0x1a')](_0x4fce92);}return _0x53c961[_0xd819('0x1b')](_0x4fce92)[_0xd819('0x1c')]();};}function respondWithResult(_0x162d4b,_0x1a3c71){_0x1a3c71=_0x1a3c71||0xc8;return function(_0xe8df05){if(_0xe8df05){return _0x162d4b[_0xd819('0x1b')](_0x1a3c71)[_0xd819('0x1d')](_0xe8df05);}};}function respondWithFilteredResult(_0x54a26f,_0x539690){return function(_0x368469){if(_0x368469){var _0x15a936=typeof _0x539690['offset']===_0xd819('0x1e')&&typeof _0x539690[_0xd819('0x1f')]===_0xd819('0x1e');var _0x24b512=_0x368469[_0xd819('0x20')];var _0x2bb891=_0x15a936?0x0:_0x539690['offset'];var _0x177380=_0x15a936?_0x368469[_0xd819('0x20')]:_0x539690[_0xd819('0x21')]+_0x539690['limit'];var _0xd30827;if(_0x177380>=_0x24b512){_0x177380=_0x24b512;_0xd30827=0xc8;}else{_0xd30827=0xce;}_0x54a26f[_0xd819('0x1b')](_0xd30827);return _0x54a26f['set'](_0xd819('0x22'),_0x2bb891+'-'+_0x177380+'/'+_0x24b512)[_0xd819('0x1d')](_0x368469);}return null;};}function patchUpdates(_0x538f88){return function(_0x3f6561){try{jsonpatch[_0xd819('0x23')](_0x3f6561,_0x538f88,!![]);}catch(_0xb2a8d){return BPromise[_0xd819('0x24')](_0xb2a8d);}return _0x3f6561[_0xd819('0x25')]();};}function saveUpdates(_0x59ba31,_0x2552ca){return function(_0x46346d){if(_0x46346d){return _0x46346d[_0xd819('0x26')](_0x59ba31)[_0xd819('0x27')](function(_0xe9d503){return _0xe9d503;});}return null;};}function removeEntity(_0x1e2651,_0x23cef6){return function(_0x4c34e3){if(_0x4c34e3){return _0x4c34e3[_0xd819('0x28')]()[_0xd819('0x27')](function(){var _0x50bd23=_0x4c34e3['get']({'plain':!![]});var _0x35d332=[{'name':'InboundRoutes','value':'inbound','ignore':![]},{'name':_0xd819('0x29'),'value':_0xd819('0x2a'),'ignore':![]},{'name':_0xd819('0x2b'),'value':'internal','ignore':![]}];var _0x5197c1=_(_0x35d332)[_0xd819('0x2c')](_0xd819('0x2d'))[_0xd819('0x2e')](_0xd819('0x2f'))[_0xd819('0x2f')]();if(_[_0xd819('0x30')](_0x5197c1,_0x50bd23[_0xd819('0x31')])){return;}var _0x4bf6cf=_['find'](_0x35d332,[_0xd819('0x2f'),_0x50bd23['type']])[_0xd819('0x32')];return db['UserProfileResource']['destroy']({'where':{'type':_0x4bf6cf,'resourceId':_0x50bd23['id']}})[_0xd819('0x27')](function(){return _0x4c34e3;});})[_0xd819('0x27')](function(){_0x1e2651[_0xd819('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2cdfbb,_0x464cae){return function(_0x3d03f6){if(!_0x3d03f6){_0x2cdfbb[_0xd819('0x1a')](0x194);}return _0x3d03f6;};}function handleError(_0x3217fa,_0x351432){_0x351432=_0x351432||0x1f4;return function(_0x335efb){logger[_0xd819('0x33')](_0x335efb['stack']);if(_0x335efb[_0xd819('0x32')]){delete _0x335efb['name'];}_0x3217fa['status'](_0x351432)[_0xd819('0x34')](_0x335efb);};}exports[_0xd819('0x35')]=function(_0x11347d,_0x1afc18){var _0x58cbb1={},_0x4db01c={},_0xb109fa={'count':0x0,'rows':[]};var _0x25704d=_['map'](db[_0xd819('0x36')]['rawAttributes'],function(_0x36f7df){return{'name':_0x36f7df[_0xd819('0x37')],'type':_0x36f7df[_0xd819('0x31')]['key']};});_0x4db01c[_0xd819('0x38')]=_[_0xd819('0x2e')](_0x25704d,_0xd819('0x32'));_0x4db01c['query']=_[_0xd819('0x39')](_0x11347d[_0xd819('0x3a')]);_0x4db01c[_0xd819('0x3b')]=_[_0xd819('0x3c')](_0x4db01c[_0xd819('0x38')],_0x4db01c[_0xd819('0x3a')]);_0x58cbb1[_0xd819('0x3d')]=_[_0xd819('0x3c')](_0x4db01c[_0xd819('0x38')],qs[_0xd819('0x3e')](_0x11347d[_0xd819('0x3a')][_0xd819('0x3e')]));_0x58cbb1['attributes']=_0x58cbb1[_0xd819('0x3d')][_0xd819('0x3f')]?_0x58cbb1['attributes']:_0x4db01c['model'];if(!_0x11347d[_0xd819('0x3a')][_0xd819('0x40')](_0xd819('0x41'))){_0x58cbb1[_0xd819('0x1f')]=qs[_0xd819('0x1f')](_0x11347d[_0xd819('0x3a')][_0xd819('0x1f')]);_0x58cbb1[_0xd819('0x21')]=qs[_0xd819('0x21')](_0x11347d[_0xd819('0x3a')][_0xd819('0x21')]);}_0x58cbb1['order']=qs['sort'](_0x11347d['query']['sort']);_0x58cbb1[_0xd819('0x42')]=qs[_0xd819('0x3b')](_['pick'](_0x11347d[_0xd819('0x3a')],_0x4db01c[_0xd819('0x3b')]),_0x25704d);if(_0x11347d['query'][_0xd819('0x2c')]){_0x58cbb1['where']=_['merge'](_0x58cbb1[_0xd819('0x42')],{'$or':_[_0xd819('0x2e')](_0x25704d,function(_0x462afc){if(_0x462afc[_0xd819('0x31')]!==_0xd819('0x43')){var _0x321dfd={};_0x321dfd[_0x462afc[_0xd819('0x32')]]={'$like':'%'+_0x11347d[_0xd819('0x3a')][_0xd819('0x2c')]+'%'};return _0x321dfd;}})});}_0x58cbb1=_[_0xd819('0x44')]({},_0x58cbb1,_0x11347d[_0xd819('0x45')]);var _0x2bf9dc={'where':_0x58cbb1['where']};return db['VoiceExtension'][_0xd819('0x20')](_0x2bf9dc)[_0xd819('0x27')](function(_0x54a7b8){_0xb109fa[_0xd819('0x20')]=_0x54a7b8;if(_0x11347d[_0xd819('0x3a')][_0xd819('0x46')]){_0x58cbb1[_0xd819('0x47')]=[{'all':!![]}];}return db[_0xd819('0x36')]['findAll'](_0x58cbb1);})[_0xd819('0x27')](function(_0x5cf77b){_0xb109fa['rows']=_0x5cf77b;return _0xb109fa;})[_0xd819('0x27')](respondWithFilteredResult(_0x1afc18,_0x58cbb1))['catch'](handleError(_0x1afc18,null));};exports[_0xd819('0x48')]=function(_0x1dca9a,_0x5b8958){var _0x1b2860={'raw':![],'where':{'id':_0x1dca9a['params']['id']}},_0x533a93={};_0x533a93[_0xd819('0x38')]=_[_0xd819('0x39')](db[_0xd819('0x36')]['rawAttributes']);_0x533a93[_0xd819('0x3a')]=_[_0xd819('0x39')](_0x1dca9a['query']);_0x533a93[_0xd819('0x3b')]=_[_0xd819('0x3c')](_0x533a93[_0xd819('0x38')],_0x533a93['query']);_0x1b2860['attributes']=_[_0xd819('0x3c')](_0x533a93[_0xd819('0x38')],qs[_0xd819('0x3e')](_0x1dca9a[_0xd819('0x3a')]['fields']));_0x1b2860[_0xd819('0x3d')]=_0x1b2860[_0xd819('0x3d')][_0xd819('0x3f')]?_0x1b2860[_0xd819('0x3d')]:_0x533a93['model'];if(_0x1dca9a[_0xd819('0x3a')][_0xd819('0x46')]){_0x1b2860['include']=[{'all':!![]}];}_0x1b2860=_[_0xd819('0x44')]({},_0x1b2860,_0x1dca9a[_0xd819('0x45')]);return db[_0xd819('0x36')][_0xd819('0x49')](_0x1b2860)[_0xd819('0x27')](handleEntityNotFound(_0x5b8958,null))['then'](respondWithResult(_0x5b8958,null))['catch'](handleError(_0x5b8958,null));};exports['destroy']=function(_0x5e0f33,_0x4e3892){return db['VoiceExtension']['find']({'where':{'id':_0x5e0f33['params']['id']}})[_0xd819('0x27')](handleEntityNotFound(_0x4e3892,null))['then'](removeEntity(_0x4e3892,null))[_0xd819('0x4a')](handleError(_0x4e3892,null));};exports[_0xd819('0x4b')]=function(_0x34237f,_0x2b8a0f){if(_0x34237f[_0xd819('0x4c')][_0xd819('0x31')]==='outbound'&&!_[_0xd819('0x4d')](_0x34237f[_0xd819('0x4c')][_0xd819('0x4e')],'_')){_0x34237f['body'][_0xd819('0x4e')]='_'[_0xd819('0x4f')](_0x34237f[_0xd819('0x4c')][_0xd819('0x4e')]);}return db[_0xd819('0x36')][_0xd819('0x4b')](_0x34237f[_0xd819('0x4c')],{'raw':![]})[_0xd819('0x27')](function(_0x3197aa){var _0x35edd4=_0x34237f[_0xd819('0x50')]['get']({'plain':!![]});if(!_0x35edd4)throw new Error(_0xd819('0x51'));if(_0x35edd4[_0xd819('0x52')]===_0xd819('0x50')){var _0x3ebb2d=_0x3197aa['get']({'plain':!![]});var _0x3e251a=[{'name':_0xd819('0x53'),'value':_0xd819('0x54')},{'name':'OutboundRoutes','value':_0xd819('0x2a')},{'name':_0xd819('0x2b'),'value':_0xd819('0x55')}];var _0x291b81=_[_0xd819('0x49')](_0x3e251a,[_0xd819('0x2f'),_0x3ebb2d['type']])['name'];return db[_0xd819('0x56')][_0xd819('0x49')]({'where':{'name':_0x291b81,'userProfileId':_0x35edd4[_0xd819('0x57')]},'raw':!![]})[_0xd819('0x27')](function(_0x47d71c){if(_0x47d71c&&_0x47d71c[_0xd819('0x58')]===0x0){return db[_0xd819('0x59')][_0xd819('0x4b')]({'name':_0x3ebb2d['name'],'resourceId':_0x3ebb2d['id'],'type':_0x47d71c['name'],'sectionId':_0x47d71c['id']},{})['then'](function(){return _0x3197aa;});}else{return _0x3197aa;}})[_0xd819('0x4a')](function(_0x4ce670){logger[_0xd819('0x33')](_0xd819('0x5a'),_0x4ce670);throw _0x4ce670;});}return _0x3197aa;})[_0xd819('0x27')](respondWithResult(_0x2b8a0f,0xc9))['catch'](handleError(_0x2b8a0f,null));};exports['update']=function(_0x218d58,_0x17f4da){if(_0x218d58['body']['id']){delete _0x218d58[_0xd819('0x4c')]['id'];}return db[_0xd819('0x36')][_0xd819('0x49')]({'where':{'id':_0x218d58[_0xd819('0x5b')]['id']}})['then'](handleEntityNotFound(_0x17f4da,null))[_0xd819('0x27')](function(_0x4f5444){if(_0x4f5444){return db['VoiceExtension'][_0xd819('0x26')](_[_0xd819('0x5c')](_0x218d58[_0xd819('0x4c')],[_0xd819('0x4e'),_0xd819('0x5d'),'description','recordingFormat',_0xd819('0x5e'),_0xd819('0x5f'),_0xd819('0x60')]),{'where':{'context':_0x4f5444[_0xd819('0x5d')],'exten':_0x4f5444['exten']},'individualHooks':!![]})['then'](function(_0x49b196){return _0x49b196;});}return null;})[_0xd819('0x27')](respondWithStatusCode(_0x17f4da,null))[_0xd819('0x4a')](handleError(_0x17f4da,null));};exports[_0xd819('0x61')]=function(_0x24bfa1,_0x1b5195){return db['VoiceExtension'][_0xd819('0x62')]({'where':{'id':_0x24bfa1['params']['id']}})[_0xd819('0x27')](function(_0x41efcf){if(_0x41efcf){return db[_0xd819('0x63')][_0xd819('0x64')](function(_0x2f78e2){return db['VoiceExtension'][_0xd819('0x28')]({'where':{'VoiceExtensionId':_0x24bfa1[_0xd819('0x5b')]['id']},'transaction':_0x2f78e2})['then'](function(){var _0x1bb31f=_['map'](_0x24bfa1[_0xd819('0x4c')],function(_0x4d634d){_0x4d634d[_0xd819('0x65')]=_0x24bfa1[_0xd819('0x5b')]['id'];_0x4d634d['isApp']=!![];return _0x4d634d;});var _0x3808b1=_0x24bfa1[_0xd819('0x3a')][_0xd819('0x66')]&&_0x24bfa1['query'][_0xd819('0x66')][_0xd819('0x67')]()===_0xd819('0x68')?!![]:![];return _0x41efcf['createRouting'](_0x1bb31f,_0x3808b1);})[_0xd819('0x27')](function(_0x4e4e81){return db[_0xd819('0x36')][_0xd819('0x69')](_0x4e4e81,{'transaction':_0x2f78e2});});})['then'](function(){return db[_0xd819('0x36')][_0xd819('0x6a')]({'where':{'isApp':!![],'VoiceExtensionId':_0x24bfa1[_0xd819('0x5b')]['id']},'order':_0xd819('0x6b')});});}})['then'](respondWithResult(_0x1b5195,null))[_0xd819('0x4a')](handleError(_0x1b5195,null));};
\ No newline at end of file
index 5c88454..d4275d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe90f=['hook','exports','events','VoiceExtension','setMaxListeners','save','update','remove','emit'];(function(_0x31f849,_0x28cd20){var _0xc60979=function(_0x5e670d){while(--_0x5e670d){_0x31f849['push'](_0x31f849['shift']());}};_0xc60979(++_0x28cd20);}(_0xe90f,0xec));var _0xfe90=function(_0x58bf5f,_0x477093){_0x58bf5f=_0x58bf5f-0x0;var _0x2e5e88=_0xe90f[_0x58bf5f];return _0x2e5e88;};'use strict';var EventEmitter=require(_0xfe90('0x0'));var VoiceExtension=require('../../mysqldb')['db'][_0xfe90('0x1')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0xfe90('0x2')](0x0);var events={'afterCreate':_0xfe90('0x3'),'afterUpdate':_0xfe90('0x4'),'afterDestroy':_0xfe90('0x5')};function emitEvent(_0x545927){return function(_0x44665f,_0x323f38,_0x53d8cf){VoiceExtensionEvents[_0xfe90('0x6')](_0x545927+':'+_0x44665f['id'],_0x44665f);VoiceExtensionEvents[_0xfe90('0x6')](_0x545927,_0x44665f);_0x53d8cf(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceExtension[_0xfe90('0x7')](e,emitEvent(event));}}module[_0xfe90('0x8')]=VoiceExtensionEvents;
\ No newline at end of file
+var _0xfa92=['hasOwnProperty','hook','exports','events','setMaxListeners','update','emit'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xfa92,0x1ca));var _0x2fa9=function(_0x31d772,_0x327fa2){_0x31d772=_0x31d772-0x0;var _0xada0e4=_0xfa92[_0x31d772];return _0xada0e4;};'use strict';var EventEmitter=require(_0x2fa9('0x0'));var VoiceExtension=require('../../mysqldb')['db']['VoiceExtension'];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x2fa9('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x2fa9('0x2'),'afterDestroy':'remove'};function emitEvent(_0x55c4a0){return function(_0x4c278b,_0xf8bcd0,_0x528137){VoiceExtensionEvents[_0x2fa9('0x3')](_0x55c4a0+':'+_0x4c278b['id'],_0x4c278b);VoiceExtensionEvents['emit'](_0x55c4a0,_0x4c278b);_0x528137(null);};}for(var e in events){if(events[_0x2fa9('0x4')](e)){var event=events[e];VoiceExtension[_0x2fa9('0x5')](e,emitEvent(event));}}module[_0x2fa9('0x6')]=VoiceExtensionEvents;
\ No newline at end of file
index 840674c..fd5c615 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec14=['CDR(routeid)=','context','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','outbound','CDR(type)=outbound','NoOp','CDR(destination)=','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','cutdigits','CDR(prefix)=${EXTEN:0:','MONITOR_OPTIONS=ab','outboundrouteid=','hasOwnProperty','recordingFormat','none','push','_XCALLY_MIXMONITOR_FORMAT=','wav','timeout','options','url','name','trunk','split','phone','param','prefix','${EXTEN:','SIP','join','indexOf','U(xcally-mixmonitor-context)','replace','Interval','findAll','interval','IntervalId','then','length','intervals','map','filter','toLowerCase','tag','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','Set(CALLERID(all)=','callerID','answer','queue','includes','app','appType','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','GotoIfTime',',${EXTEN},','outboundDial','appdata','priority','last','concat','catch','voice_extensions','Hangup','util','lodash','./voiceExtension.attributes','exports','models','Set','CDR(type)=','type','exten','alias','CDR(routeAlias)=','No\x20alias\x20set','inbound'];(function(_0x529ef9,_0x844a63){var _0x2e97f5=function(_0x309a7f){while(--_0x309a7f){_0x529ef9['push'](_0x529ef9['shift']());}};_0x2e97f5(++_0x844a63);}(_0xec14,0xe9));var _0x4ec1=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xec14[_0x30ae5e];return _0x1f2e93;};'use strict';var util=require(_0x4ec1('0x0'));var _=require(_0x4ec1('0x1'));var attributes=require(_0x4ec1('0x2'));module[_0x4ec1('0x3')]=function(_0x17181f){var _0x16486e=_0x17181f[_0x4ec1('0x4')];function _0x563076(_0x332e5a){var _0x52bb52=0x2;var _0x220600=[{'type':_0x332e5a['type'],'app':_0x4ec1('0x5'),'appdata':_0x4ec1('0x6')+_0x332e5a[_0x4ec1('0x7')],'context':_0x332e5a['context'],'exten':_0x332e5a[_0x4ec1('0x8')],'priority':_0x52bb52++,'VoiceExtensionId':_0x332e5a['id']},{'type':_0x332e5a[_0x4ec1('0x7')],'app':_0x332e5a['alias']?_0x4ec1('0x5'):'NoOp','appdata':_0x332e5a[_0x4ec1('0x9')]?_0x4ec1('0xa')+_0x332e5a[_0x4ec1('0x9')]:_0x4ec1('0xb'),'context':_0x332e5a['context'],'exten':_0x332e5a['exten'],'priority':_0x52bb52++,'VoiceExtensionId':_0x332e5a['id']}];if(_0x332e5a[_0x4ec1('0x7')]===_0x4ec1('0xc')){_0x220600['push']({'type':'inbound','app':_0x4ec1('0x5'),'appdata':_0x4ec1('0xd')+_0x332e5a['id'],'context':_0x332e5a[_0x4ec1('0xe')],'exten':_0x332e5a['exten'],'priority':_0x52bb52++,'VoiceExtensionId':_0x332e5a['id']});}_0x220600['push']({'type':_0x332e5a[_0x4ec1('0x7')],'app':_0x4ec1('0x5'),'appdata':_0x4ec1('0xf'),'context':_0x332e5a['context'],'exten':_0x332e5a[_0x4ec1('0x8')],'priority':_0x52bb52++,'VoiceExtensionId':_0x332e5a['id']},{'type':_0x332e5a[_0x4ec1('0x7')],'app':_0x4ec1('0x5'),'appdata':_0x4ec1('0x10'),'context':_0x332e5a[_0x4ec1('0xe')],'exten':_0x332e5a[_0x4ec1('0x8')],'priority':_0x52bb52++,'VoiceExtensionId':_0x332e5a['id']},{'type':_0x332e5a[_0x4ec1('0x7')],'app':_0x4ec1('0x5'),'appdata':'MONITOR_OPTIONS=ab','context':_0x332e5a[_0x4ec1('0xe')],'exten':_0x332e5a[_0x4ec1('0x8')],'priority':_0x52bb52++,'VoiceExtensionId':_0x332e5a['id']});return _0x220600;}function _0x325e3a(_0x490463){var _0x36dcb4=0x2;var _0x14dfda=[{'type':_0x4ec1('0x11'),'app':_0x4ec1('0x5'),'appdata':_0x4ec1('0x12'),'context':_0x490463[_0x4ec1('0xe')],'exten':_0x490463['exten'],'priority':_0x36dcb4++,'VoiceExtensionId':_0x490463['id']},{'type':_0x4ec1('0x11'),'app':_0x490463[_0x4ec1('0x9')]?'Set':_0x4ec1('0x13'),'appdata':_0x490463[_0x4ec1('0x9')]?_0x4ec1('0xa')+_0x490463[_0x4ec1('0x9')]:_0x4ec1('0xb'),'context':_0x490463[_0x4ec1('0xe')],'exten':_0x490463[_0x4ec1('0x8')],'priority':_0x36dcb4++,'VoiceExtensionId':_0x490463['id']},{'type':_0x4ec1('0x11'),'app':_0x4ec1('0x5'),'appdata':_0x4ec1('0x14')+(_0x490463['cutdigits']?'${EXTEN:'+_0x490463['cutdigits']+'}':_0x4ec1('0x15')),'context':_0x490463[_0x4ec1('0xe')],'exten':_0x490463[_0x4ec1('0x8')],'priority':_0x36dcb4++,'VoiceExtensionId':_0x490463['id']},{'type':_0x4ec1('0x11'),'app':_0x4ec1('0x5'),'appdata':_0x4ec1('0xd')+_0x490463['id'],'context':_0x490463[_0x4ec1('0xe')],'exten':_0x490463['exten'],'priority':_0x36dcb4++,'VoiceExtensionId':_0x490463['id']},{'type':_0x4ec1('0x11'),'app':_0x4ec1('0x16'),'appdata':_0x4ec1('0x17')+(_0x36dcb4+0x2)+_0x4ec1('0x18')+(_0x36dcb4+0x1)+')','context':_0x490463[_0x4ec1('0xe')],'exten':_0x490463[_0x4ec1('0x8')],'priority':_0x36dcb4++,'VoiceExtensionId':_0x490463['id']},{'type':_0x4ec1('0x11'),'app':_0x4ec1('0x5'),'appdata':_0x490463[_0x4ec1('0x19')]?_0x4ec1('0x1a')+_0x490463[_0x4ec1('0x19')]+'}':'CDR(prefix)=noprefix','context':_0x490463['context'],'exten':_0x490463[_0x4ec1('0x8')],'priority':_0x36dcb4++,'VoiceExtensionId':_0x490463['id']},{'type':_0x4ec1('0x11'),'app':_0x4ec1('0x5'),'appdata':_0x4ec1('0xf'),'context':_0x490463[_0x4ec1('0xe')],'exten':_0x490463[_0x4ec1('0x8')],'priority':_0x36dcb4++,'VoiceExtensionId':_0x490463['id']},{'type':_0x4ec1('0x11'),'app':_0x4ec1('0x5'),'appdata':_0x4ec1('0x10'),'context':_0x490463[_0x4ec1('0xe')],'exten':_0x490463[_0x4ec1('0x8')],'priority':_0x36dcb4++,'VoiceExtensionId':_0x490463['id']},{'type':_0x4ec1('0x11'),'app':_0x4ec1('0x5'),'appdata':_0x4ec1('0x1b'),'context':_0x490463[_0x4ec1('0xe')],'exten':_0x490463[_0x4ec1('0x8')],'priority':_0x36dcb4++,'VoiceExtensionId':_0x490463['id']},{'type':'outbound','app':_0x4ec1('0x5'),'appdata':_0x4ec1('0x1c')+_0x490463['id'],'context':_0x490463['context'],'exten':_0x490463['exten'],'priority':_0x36dcb4++,'VoiceExtensionId':_0x490463['id']}];if(_0x490463[_0x4ec1('0x1d')]('recordingFormat')&&_0x490463[_0x4ec1('0x1e')]!==_0x4ec1('0x1f')){_0x14dfda[_0x4ec1('0x20')]({'type':_0x4ec1('0x11'),'app':_0x4ec1('0x5'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x490463[_0x4ec1('0xe')],'exten':_0x490463[_0x4ec1('0x8')],'priority':_0x36dcb4++,'VoiceExtensionId':_0x490463['id']},{'type':_0x4ec1('0x11'),'app':_0x4ec1('0x5'),'appdata':_0x4ec1('0x21')+_0x490463['recordingFormat']||_0x4ec1('0x22'),'context':_0x490463[_0x4ec1('0xe')],'exten':_0x490463[_0x4ec1('0x8')],'priority':_0x36dcb4++,'VoiceExtensionId':_0x490463['id']});}return _0x14dfda;}function _0x1b9440(_0x4ec579){var _0x4a7261=[{'name':'trunk','param':0x0},{'name':_0x4ec1('0x23'),'param':0x1},{'name':_0x4ec1('0x24'),'param':0x2},{'name':_0x4ec1('0x25'),'param':0x3}];var _0x5adf12={};var _0x4a294c=_0x4ec579['split'](',');var _0x72c42e=[];for(var _0x1cc6a0=0x0;_0x1cc6a0<_0x4a7261['length'];_0x1cc6a0++){switch(_0x4a7261[_0x1cc6a0][_0x4ec1('0x26')]){case _0x4ec1('0x27'):_0x5adf12[_0x4ec1('0x27')]=_0x4a294c[_0x4a7261[_0x1cc6a0]['param']][_0x4ec1('0x28')]('/')[0x1];_0x5adf12[_0x4ec1('0x29')]=_0x4a294c[_0x4a7261[_0x1cc6a0][_0x4ec1('0x2a')]][_0x4ec1('0x28')]('/')[0x2];_0x5adf12[_0x4ec1('0x2b')]=_0x5adf12[_0x4ec1('0x29')]?_0x5adf12[_0x4ec1('0x29')][_0x4ec1('0x28')]('$')[0x0]:undefined;_0x5adf12[_0x4ec1('0x29')]=route['cutdigits']?(_0x5adf12[_0x4ec1('0x2b')]||'')+_0x4ec1('0x2c')+route['cutdigits']+'}':(_0x5adf12[_0x4ec1('0x2b')]||'')+_0x4ec1('0x15');_0x72c42e[_0x4a7261[_0x1cc6a0][_0x4ec1('0x2a')]]=[_0x4ec1('0x2d'),_0x5adf12[_0x4ec1('0x27')],_0x5adf12[_0x4ec1('0x29')]][_0x4ec1('0x2e')]('/');break;case _0x4ec1('0x24'):_0x5adf12[_0x4ec1('0x24')]=_0x4a294c[_0x4a7261[_0x1cc6a0]['param']];if(route['recordingFormat']!=='none'){if(_0x5adf12[_0x4ec1('0x24')][_0x4ec1('0x2f')](_0x4ec1('0x30'))<0x0){_0x5adf12[_0x4ec1('0x24')]+=_0x4ec1('0x30');}}else{_0x5adf12[_0x4ec1('0x24')]=_0x5adf12[_0x4ec1('0x24')][_0x4ec1('0x31')]('U(xcally-mixmonitor-context)','');}_0x72c42e[_0x4a7261[_0x1cc6a0][_0x4ec1('0x2a')]]=_0x5adf12[_0x4ec1('0x24')];break;default:_0x72c42e[_0x4a7261[_0x1cc6a0][_0x4ec1('0x2a')]]=_0x4a294c[_0x4a7261[_0x1cc6a0][_0x4ec1('0x2a')]];}}return _0x72c42e[_0x4ec1('0x2e')](',');}function _0x52e775(_0x4df30e,_0x9ba536,_0x10ca52,_0x4aafba){return new Promise(function(_0xb09b0f,_0x1155d9){var _0x5da2b3=[];if(_['isEmpty'](_0x9ba536))return _0xb09b0f(_0x5da2b3);_0x16486e[_0x4ec1('0x32')][_0x4ec1('0x33')]({'attributes':['id',_0x4ec1('0x34'),_0x4ec1('0x35')],'raw':!![]})[_0x4ec1('0x36')](function(_0x403e33){for(var _0x2914e3=0x0,_0x24bad4=0x0;_0x2914e3<_0x9ba536[_0x4ec1('0x37')];_0x2914e3++,_0x24bad4=0x0){var _0x4451c5=_0x9ba536[_0x2914e3];var _0x108bb4=[];var _0xc0228b=[];if(_0x4451c5[_0x4ec1('0x34')]!=='*,*,*,*'){_0x4451c5['intervals']=[_0x4451c5['interval']];}else{_0x4451c5[_0x4ec1('0x38')]=_0x4451c5['IntervalId']?_[_0x4ec1('0x39')](_[_0x4ec1('0x3a')](_0x403e33,{'IntervalId':_0x4451c5[_0x4ec1('0x35')]}),_0x4ec1('0x34')):[];}_0x4451c5[_0x4ec1('0xe')]=_0x4df30e[_0x4ec1('0xe')];_0x4451c5[_0x4ec1('0x8')]=_0x4df30e[_0x4ec1('0x8')];if(_0x4451c5[_0x4ec1('0x7')])_0x4451c5['type']=_0x4451c5[_0x4ec1('0x7')][_0x4ec1('0x3b')]();if(_0x4df30e[_0x4ec1('0x7')]===_0x4ec1('0x11')){if(_0x4451c5[_0x4ec1('0x1d')](_0x4ec1('0x3c'))&&_0x4451c5[_0x4ec1('0x3c')]&&_0x4451c5[_0x4ec1('0x3c')]!=='--'){_0x108bb4[_0x4ec1('0x20')]({'type':_0x4451c5[_0x4ec1('0x7')]['toLowerCase'](),'app':_0x4ec1('0x5'),'appdata':_0x4ec1('0x3d')+_0x4451c5[_0x4ec1('0x3c')],'context':_0x4df30e[_0x4ec1('0xe')],'exten':_0x4df30e['exten'],'priority':_0x4451c5[_0x4ec1('0x38')]['length']+_0x10ca52+_0x24bad4++,'VoiceExtensionId':_0x4df30e['id']});}_0x108bb4[_0x4ec1('0x20')]({'type':_0x4451c5['type'][_0x4ec1('0x3b')](),'app':_0x4ec1('0x16'),'appdata':_0x4ec1('0x3e')+(_0x4451c5['callerID']?_0x4ec1('0x3f')+_0x4451c5[_0x4ec1('0x40')]+')':'NoOp(No\x20number\x20available)'),'context':_0x4df30e[_0x4ec1('0xe')],'exten':_0x4df30e[_0x4ec1('0x8')],'priority':_0x4451c5[_0x4ec1('0x38')][_0x4ec1('0x37')]+_0x10ca52+_0x24bad4++,'VoiceExtensionId':_0x4df30e['id']});}else{if(_0x4451c5[_0x4ec1('0x1d')](_0x4ec1('0x41'))){if([_0x4ec1('0x42'),'playback'][_0x4ec1('0x43')](_0x4451c5[_0x4ec1('0x44')][_0x4ec1('0x3b')]())&&_0x4451c5[_0x4ec1('0x45')]!=='custom'){if(_0x4451c5[_0x4ec1('0x41')]){_0x108bb4[_0x4ec1('0x20')]({'type':_0x4451c5[_0x4ec1('0x7')]['toLowerCase'](),'app':_0x4ec1('0x16'),'appdata':_0x4ec1('0x46'),'context':_0x4df30e['context'],'exten':_0x4df30e['exten'],'priority':_0x4451c5[_0x4ec1('0x38')][_0x4ec1('0x37')]+_0x10ca52+_0x24bad4++,'VoiceExtensionId':_0x4df30e['id']});_0x108bb4['push']({'type':_0x4451c5[_0x4ec1('0x7')][_0x4ec1('0x3b')](),'app':_0x4ec1('0x5'),'appdata':_0x4ec1('0x47'),'context':_0x4df30e[_0x4ec1('0xe')],'exten':_0x4df30e[_0x4ec1('0x8')],'priority':_0x4451c5['intervals'][_0x4ec1('0x37')]+_0x10ca52+_0x24bad4++,'VoiceExtensionId':_0x4df30e['id']});}else{_0x108bb4['push']({'type':_0x4451c5[_0x4ec1('0x7')]['toLowerCase'](),'app':'ExecIf','appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x4df30e['context'],'exten':_0x4df30e['exten'],'priority':_0x4451c5['intervals'][_0x4ec1('0x37')]+_0x10ca52+_0x24bad4++,'VoiceExtensionId':_0x4df30e['id']});_0x108bb4[_0x4ec1('0x20')]({'type':_0x4451c5[_0x4ec1('0x7')][_0x4ec1('0x3b')](),'app':'Set','appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x4df30e[_0x4ec1('0xe')],'exten':_0x4df30e[_0x4ec1('0x8')],'priority':_0x4451c5[_0x4ec1('0x38')][_0x4ec1('0x37')]+_0x10ca52+_0x24bad4++,'VoiceExtensionId':_0x4df30e['id']});}}}}for(var _0x1eb7f0=0x0;_0x1eb7f0<_0x4451c5[_0x4ec1('0x38')][_0x4ec1('0x37')];_0x1eb7f0++){var _0x1c419d=_0x10ca52+_0x4451c5[_0x4ec1('0x38')]['length'];var _0xda2bfd=_0x1eb7f0===_0x4451c5[_0x4ec1('0x38')][_0x4ec1('0x37')]-0x1?_0x10ca52+_0x108bb4[_0x4ec1('0x37')]+_0xc0228b[_0x4ec1('0x37')]+0x2:_0x10ca52+_0x1eb7f0+0x1;_0x108bb4['splice'](_0x1eb7f0,0x0,{'type':_0x4df30e[_0x4ec1('0x7')],'app':_0x4ec1('0x48'),'appdata':_0x4451c5[_0x4ec1('0x38')][_0x1eb7f0]+'?'+_0x4df30e[_0x4ec1('0xe')]+_0x4ec1('0x49')+_0x1c419d+':'+_0x4df30e[_0x4ec1('0xe')]+',${EXTEN},'+_0xda2bfd,'exten':_0x4df30e[_0x4ec1('0x8')],'context':_0x4df30e[_0x4ec1('0xe')],'priority':_0x10ca52+_0x1eb7f0,'VoiceExtensionId':_0x4df30e['id']});}if(_0x4aafba&&_0x4451c5[_0x4ec1('0x45')]===_0x4ec1('0x4a'))_0x4451c5['appdata']=_0x1b9440(_0x4451c5[_0x4ec1('0x4b')]);_0x4451c5[_0x4ec1('0x4c')]=_0x108bb4[_0x4ec1('0x37')]?_[_0x4ec1('0x4d')](_0x108bb4)[_0x4ec1('0x4c')]+0x1:_0x10ca52;_0x5da2b3=_[_0x4ec1('0x4e')](_0x5da2b3,_0x108bb4,[_0x4451c5],_0xc0228b);_0x10ca52=_[_0x4ec1('0x4d')](_0x5da2b3)[_0x4ec1('0x4c')]+0x1;}return _0xb09b0f(_0x5da2b3);})[_0x4ec1('0x4f')](function(_0xa6a18c){_0x1155d9(_0xa6a18c);});});}return _0x17181f['define']('VoiceExtension',attributes,{'tableName':_0x4ec1('0x50'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x17714a,_0x21e256){var _0x5e16e3=this;var _0x1175b4=_0x5e16e3[_0x4ec1('0x7')]===_0x4ec1('0x11')?_0x325e3a(_0x5e16e3):_0x563076(_0x5e16e3);return _0x52e775(_0x5e16e3,_0x17714a,_['last'](_0x1175b4)[_0x4ec1('0x4c')]+0x1,_0x21e256)[_0x4ec1('0x36')](function(_0x90df6d){var _0x737194=_[_0x4ec1('0x4e')](_0x1175b4,_0x90df6d);_0x737194[_0x4ec1('0x20')]({'type':_0x5e16e3[_0x4ec1('0x7')],'app':_0x4ec1('0x51'),'exten':_0x5e16e3[_0x4ec1('0x8')],'context':_0x5e16e3[_0x4ec1('0xe')],'priority':_[_0x4ec1('0x4d')](_0x737194)[_0x4ec1('0x4c')]+0x1,'VoiceExtensionId':_0x5e16e3['id']});return _0x737194;});}}});};
\ No newline at end of file
+var _0x5874=['outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','timeout','options','url','length','name','trunk','param','split','phone','prefix','SIP','join','U(xcally-mixmonitor-context)','replace','isEmpty','findAll','IntervalId','interval','intervals','map','filter','tag','toLowerCase','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','queue','playback','includes','app','custom','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','GotoIfTime',',${EXTEN},','appType','appdata','priority','last','concat','catch','then','Hangup','lodash','exports','models','Set','CDR(type)=','context','exten','type','NoOp','alias','CDR(routeAlias)=','No\x20alias\x20set','inbound','push','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','outbound','CDR(type)=outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','MONITOR_OPTIONS=ab'];(function(_0x712115,_0x11f026){var _0xa6c12e=function(_0xe360ea){while(--_0xe360ea){_0x712115['push'](_0x712115['shift']());}};_0xa6c12e(++_0x11f026);}(_0x5874,0x1c4));var _0x4587=function(_0xe088c9,_0x29ce0a){_0xe088c9=_0xe088c9-0x0;var _0x278ae6=_0x5874[_0xe088c9];return _0x278ae6;};'use strict';var util=require('util');var _=require(_0x4587('0x0'));var attributes=require('./voiceExtension.attributes');module[_0x4587('0x1')]=function(_0x2365fb){var _0x5681d0=_0x2365fb[_0x4587('0x2')];function _0x1e2603(_0x2f6cb6){var _0x23fed2=0x2;var _0x447da5=[{'type':_0x2f6cb6['type'],'app':_0x4587('0x3'),'appdata':_0x4587('0x4')+_0x2f6cb6['type'],'context':_0x2f6cb6[_0x4587('0x5')],'exten':_0x2f6cb6[_0x4587('0x6')],'priority':_0x23fed2++,'VoiceExtensionId':_0x2f6cb6['id']},{'type':_0x2f6cb6[_0x4587('0x7')],'app':_0x2f6cb6['alias']?_0x4587('0x3'):_0x4587('0x8'),'appdata':_0x2f6cb6[_0x4587('0x9')]?_0x4587('0xa')+_0x2f6cb6[_0x4587('0x9')]:_0x4587('0xb'),'context':_0x2f6cb6['context'],'exten':_0x2f6cb6[_0x4587('0x6')],'priority':_0x23fed2++,'VoiceExtensionId':_0x2f6cb6['id']}];if(_0x2f6cb6[_0x4587('0x7')]===_0x4587('0xc')){_0x447da5[_0x4587('0xd')]({'type':'inbound','app':'Set','appdata':_0x4587('0xe')+_0x2f6cb6['id'],'context':_0x2f6cb6['context'],'exten':_0x2f6cb6['exten'],'priority':_0x23fed2++,'VoiceExtensionId':_0x2f6cb6['id']});}_0x447da5[_0x4587('0xd')]({'type':_0x2f6cb6[_0x4587('0x7')],'app':_0x4587('0x3'),'appdata':_0x4587('0xf'),'context':_0x2f6cb6['context'],'exten':_0x2f6cb6[_0x4587('0x6')],'priority':_0x23fed2++,'VoiceExtensionId':_0x2f6cb6['id']},{'type':_0x2f6cb6['type'],'app':_0x4587('0x3'),'appdata':_0x4587('0x10'),'context':_0x2f6cb6[_0x4587('0x5')],'exten':_0x2f6cb6[_0x4587('0x6')],'priority':_0x23fed2++,'VoiceExtensionId':_0x2f6cb6['id']},{'type':_0x2f6cb6[_0x4587('0x7')],'app':_0x4587('0x3'),'appdata':'MONITOR_OPTIONS=ab','context':_0x2f6cb6[_0x4587('0x5')],'exten':_0x2f6cb6[_0x4587('0x6')],'priority':_0x23fed2++,'VoiceExtensionId':_0x2f6cb6['id']});return _0x447da5;}function _0x21f604(_0x2162b5){var _0xde595c=0x2;var _0x3dc400=[{'type':_0x4587('0x11'),'app':_0x4587('0x3'),'appdata':_0x4587('0x12'),'context':_0x2162b5[_0x4587('0x5')],'exten':_0x2162b5['exten'],'priority':_0xde595c++,'VoiceExtensionId':_0x2162b5['id']},{'type':_0x4587('0x11'),'app':_0x2162b5[_0x4587('0x9')]?_0x4587('0x3'):_0x4587('0x8'),'appdata':_0x2162b5[_0x4587('0x9')]?'CDR(routeAlias)='+_0x2162b5[_0x4587('0x9')]:'No\x20alias\x20set','context':_0x2162b5[_0x4587('0x5')],'exten':_0x2162b5[_0x4587('0x6')],'priority':_0xde595c++,'VoiceExtensionId':_0x2162b5['id']},{'type':_0x4587('0x11'),'app':_0x4587('0x3'),'appdata':_0x4587('0x13')+(_0x2162b5[_0x4587('0x14')]?_0x4587('0x15')+_0x2162b5[_0x4587('0x14')]+'}':_0x4587('0x16')),'context':_0x2162b5['context'],'exten':_0x2162b5[_0x4587('0x6')],'priority':_0xde595c++,'VoiceExtensionId':_0x2162b5['id']},{'type':_0x4587('0x11'),'app':_0x4587('0x3'),'appdata':_0x4587('0xe')+_0x2162b5['id'],'context':_0x2162b5[_0x4587('0x5')],'exten':_0x2162b5[_0x4587('0x6')],'priority':_0xde595c++,'VoiceExtensionId':_0x2162b5['id']},{'type':_0x4587('0x11'),'app':_0x4587('0x17'),'appdata':_0x4587('0x18')+(_0xde595c+0x2)+'):Goto('+(_0xde595c+0x1)+')','context':_0x2162b5[_0x4587('0x5')],'exten':_0x2162b5[_0x4587('0x6')],'priority':_0xde595c++,'VoiceExtensionId':_0x2162b5['id']},{'type':'outbound','app':_0x4587('0x3'),'appdata':_0x2162b5[_0x4587('0x14')]?_0x4587('0x19')+_0x2162b5[_0x4587('0x14')]+'}':_0x4587('0x1a'),'context':_0x2162b5[_0x4587('0x5')],'exten':_0x2162b5['exten'],'priority':_0xde595c++,'VoiceExtensionId':_0x2162b5['id']},{'type':'outbound','app':_0x4587('0x3'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x2162b5[_0x4587('0x5')],'exten':_0x2162b5[_0x4587('0x6')],'priority':_0xde595c++,'VoiceExtensionId':_0x2162b5['id']},{'type':_0x4587('0x11'),'app':_0x4587('0x3'),'appdata':_0x4587('0x10'),'context':_0x2162b5[_0x4587('0x5')],'exten':_0x2162b5[_0x4587('0x6')],'priority':_0xde595c++,'VoiceExtensionId':_0x2162b5['id']},{'type':_0x4587('0x11'),'app':_0x4587('0x3'),'appdata':_0x4587('0x1b'),'context':_0x2162b5[_0x4587('0x5')],'exten':_0x2162b5[_0x4587('0x6')],'priority':_0xde595c++,'VoiceExtensionId':_0x2162b5['id']},{'type':_0x4587('0x11'),'app':_0x4587('0x3'),'appdata':_0x4587('0x1c')+_0x2162b5['id'],'context':_0x2162b5['context'],'exten':_0x2162b5[_0x4587('0x6')],'priority':_0xde595c++,'VoiceExtensionId':_0x2162b5['id']}];if(_0x2162b5[_0x4587('0x1d')]('recordingFormat')&&_0x2162b5[_0x4587('0x1e')]!==_0x4587('0x1f')){_0x3dc400[_0x4587('0xd')]({'type':'outbound','app':_0x4587('0x3'),'appdata':_0x4587('0x20'),'context':_0x2162b5['context'],'exten':_0x2162b5[_0x4587('0x6')],'priority':_0xde595c++,'VoiceExtensionId':_0x2162b5['id']},{'type':_0x4587('0x11'),'app':_0x4587('0x3'),'appdata':_0x4587('0x21')+_0x2162b5[_0x4587('0x1e')]||'wav','context':_0x2162b5[_0x4587('0x5')],'exten':_0x2162b5[_0x4587('0x6')],'priority':_0xde595c++,'VoiceExtensionId':_0x2162b5['id']});}return _0x3dc400;}function _0x3bf799(_0x1462ea){var _0x1ec658=[{'name':'trunk','param':0x0},{'name':_0x4587('0x22'),'param':0x1},{'name':_0x4587('0x23'),'param':0x2},{'name':_0x4587('0x24'),'param':0x3}];var _0x5072ae={};var _0x6a0652=_0x1462ea['split'](',');var _0x384d2e=[];for(var _0x29e88a=0x0;_0x29e88a<_0x1ec658[_0x4587('0x25')];_0x29e88a++){switch(_0x1ec658[_0x29e88a][_0x4587('0x26')]){case _0x4587('0x27'):_0x5072ae['trunk']=_0x6a0652[_0x1ec658[_0x29e88a][_0x4587('0x28')]]['split']('/')[0x1];_0x5072ae['phone']=_0x6a0652[_0x1ec658[_0x29e88a][_0x4587('0x28')]][_0x4587('0x29')]('/')[0x2];_0x5072ae['prefix']=_0x5072ae[_0x4587('0x2a')]?_0x5072ae[_0x4587('0x2a')]['split']('$')[0x0]:undefined;_0x5072ae[_0x4587('0x2a')]=route[_0x4587('0x14')]?(_0x5072ae[_0x4587('0x2b')]||'')+_0x4587('0x15')+route[_0x4587('0x14')]+'}':(_0x5072ae['prefix']||'')+_0x4587('0x16');_0x384d2e[_0x1ec658[_0x29e88a][_0x4587('0x28')]]=[_0x4587('0x2c'),_0x5072ae[_0x4587('0x27')],_0x5072ae[_0x4587('0x2a')]][_0x4587('0x2d')]('/');break;case _0x4587('0x23'):_0x5072ae['options']=_0x6a0652[_0x1ec658[_0x29e88a][_0x4587('0x28')]];if(route[_0x4587('0x1e')]!==_0x4587('0x1f')){if(_0x5072ae['options']['indexOf']('U(xcally-mixmonitor-context)')<0x0){_0x5072ae[_0x4587('0x23')]+=_0x4587('0x2e');}}else{_0x5072ae[_0x4587('0x23')]=_0x5072ae['options'][_0x4587('0x2f')](_0x4587('0x2e'),'');}_0x384d2e[_0x1ec658[_0x29e88a][_0x4587('0x28')]]=_0x5072ae[_0x4587('0x23')];break;default:_0x384d2e[_0x1ec658[_0x29e88a][_0x4587('0x28')]]=_0x6a0652[_0x1ec658[_0x29e88a][_0x4587('0x28')]];}}return _0x384d2e['join'](',');}function _0x1aaf2a(_0x2edfea,_0x21b885,_0x1fb3c8,_0x2d52c6){return new Promise(function(_0x24a329,_0x2bcffc){var _0xb97422=[];if(_[_0x4587('0x30')](_0x21b885))return _0x24a329(_0xb97422);_0x5681d0['Interval'][_0x4587('0x31')]({'attributes':['id','interval',_0x4587('0x32')],'raw':!![]})['then'](function(_0x5bef84){for(var _0x218b76=0x0,_0x279d31=0x0;_0x218b76<_0x21b885[_0x4587('0x25')];_0x218b76++,_0x279d31=0x0){var _0x9f46c8=_0x21b885[_0x218b76];var _0x25091b=[];var _0x503301=[];if(_0x9f46c8[_0x4587('0x33')]!=='*,*,*,*'){_0x9f46c8[_0x4587('0x34')]=[_0x9f46c8['interval']];}else{_0x9f46c8['intervals']=_0x9f46c8[_0x4587('0x32')]?_[_0x4587('0x35')](_[_0x4587('0x36')](_0x5bef84,{'IntervalId':_0x9f46c8[_0x4587('0x32')]}),_0x4587('0x33')):[];}_0x9f46c8[_0x4587('0x5')]=_0x2edfea['context'];_0x9f46c8['exten']=_0x2edfea[_0x4587('0x6')];if(_0x9f46c8['type'])_0x9f46c8[_0x4587('0x7')]=_0x9f46c8[_0x4587('0x7')]['toLowerCase']();if(_0x2edfea['type']==='outbound'){if(_0x9f46c8[_0x4587('0x1d')](_0x4587('0x37'))&&_0x9f46c8[_0x4587('0x37')]&&_0x9f46c8[_0x4587('0x37')]!=='--'){_0x25091b[_0x4587('0xd')]({'type':_0x9f46c8['type'][_0x4587('0x38')](),'app':_0x4587('0x3'),'appdata':_0x4587('0x39')+_0x9f46c8[_0x4587('0x37')],'context':_0x2edfea[_0x4587('0x5')],'exten':_0x2edfea[_0x4587('0x6')],'priority':_0x9f46c8[_0x4587('0x34')][_0x4587('0x25')]+_0x1fb3c8+_0x279d31++,'VoiceExtensionId':_0x2edfea['id']});}_0x25091b[_0x4587('0xd')]({'type':_0x9f46c8['type']['toLowerCase'](),'app':_0x4587('0x17'),'appdata':_0x4587('0x3a')+(_0x9f46c8[_0x4587('0x3b')]?_0x4587('0x3c')+_0x9f46c8['callerID']+')':_0x4587('0x3d')),'context':_0x2edfea[_0x4587('0x5')],'exten':_0x2edfea[_0x4587('0x6')],'priority':_0x9f46c8[_0x4587('0x34')][_0x4587('0x25')]+_0x1fb3c8+_0x279d31++,'VoiceExtensionId':_0x2edfea['id']});}else{if(_0x9f46c8[_0x4587('0x1d')]('answer')){if([_0x4587('0x3e'),_0x4587('0x3f')][_0x4587('0x40')](_0x9f46c8[_0x4587('0x41')][_0x4587('0x38')]())&&_0x9f46c8['appType']!==_0x4587('0x42')){if(_0x9f46c8['answer']){_0x25091b[_0x4587('0xd')]({'type':_0x9f46c8[_0x4587('0x7')][_0x4587('0x38')](),'app':_0x4587('0x17'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x2edfea['context'],'exten':_0x2edfea[_0x4587('0x6')],'priority':_0x9f46c8[_0x4587('0x34')]['length']+_0x1fb3c8+_0x279d31++,'VoiceExtensionId':_0x2edfea['id']});_0x25091b[_0x4587('0xd')]({'type':_0x9f46c8[_0x4587('0x7')][_0x4587('0x38')](),'app':_0x4587('0x3'),'appdata':_0x4587('0x43'),'context':_0x2edfea['context'],'exten':_0x2edfea[_0x4587('0x6')],'priority':_0x9f46c8[_0x4587('0x34')]['length']+_0x1fb3c8+_0x279d31++,'VoiceExtensionId':_0x2edfea['id']});}else{_0x25091b[_0x4587('0xd')]({'type':_0x9f46c8[_0x4587('0x7')][_0x4587('0x38')](),'app':'ExecIf','appdata':_0x4587('0x44'),'context':_0x2edfea['context'],'exten':_0x2edfea['exten'],'priority':_0x9f46c8[_0x4587('0x34')][_0x4587('0x25')]+_0x1fb3c8+_0x279d31++,'VoiceExtensionId':_0x2edfea['id']});_0x25091b[_0x4587('0xd')]({'type':_0x9f46c8['type']['toLowerCase'](),'app':_0x4587('0x3'),'appdata':_0x4587('0x45'),'context':_0x2edfea['context'],'exten':_0x2edfea[_0x4587('0x6')],'priority':_0x9f46c8[_0x4587('0x34')]['length']+_0x1fb3c8+_0x279d31++,'VoiceExtensionId':_0x2edfea['id']});}}}}for(var _0x4fcd5e=0x0;_0x4fcd5e<_0x9f46c8[_0x4587('0x34')]['length'];_0x4fcd5e++){var _0x271c33=_0x1fb3c8+_0x9f46c8[_0x4587('0x34')][_0x4587('0x25')];var _0x33f357=_0x4fcd5e===_0x9f46c8[_0x4587('0x34')][_0x4587('0x25')]-0x1?_0x1fb3c8+_0x25091b[_0x4587('0x25')]+_0x503301[_0x4587('0x25')]+0x2:_0x1fb3c8+_0x4fcd5e+0x1;_0x25091b['splice'](_0x4fcd5e,0x0,{'type':_0x2edfea[_0x4587('0x7')],'app':_0x4587('0x46'),'appdata':_0x9f46c8[_0x4587('0x34')][_0x4fcd5e]+'?'+_0x2edfea[_0x4587('0x5')]+_0x4587('0x47')+_0x271c33+':'+_0x2edfea[_0x4587('0x5')]+_0x4587('0x47')+_0x33f357,'exten':_0x2edfea[_0x4587('0x6')],'context':_0x2edfea[_0x4587('0x5')],'priority':_0x1fb3c8+_0x4fcd5e,'VoiceExtensionId':_0x2edfea['id']});}if(_0x2d52c6&&_0x9f46c8[_0x4587('0x48')]==='outboundDial')_0x9f46c8[_0x4587('0x49')]=_0x3bf799(_0x9f46c8[_0x4587('0x49')]);_0x9f46c8[_0x4587('0x4a')]=_0x25091b[_0x4587('0x25')]?_[_0x4587('0x4b')](_0x25091b)[_0x4587('0x4a')]+0x1:_0x1fb3c8;_0xb97422=_[_0x4587('0x4c')](_0xb97422,_0x25091b,[_0x9f46c8],_0x503301);_0x1fb3c8=_['last'](_0xb97422)['priority']+0x1;}return _0x24a329(_0xb97422);})[_0x4587('0x4d')](function(_0x5c7a05){_0x2bcffc(_0x5c7a05);});});}return _0x2365fb['define']('VoiceExtension',attributes,{'tableName':'voice_extensions','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x5cf327,_0x4765fe){var _0x4a27a8=this;var _0x160a97=_0x4a27a8[_0x4587('0x7')]===_0x4587('0x11')?_0x21f604(_0x4a27a8):_0x1e2603(_0x4a27a8);return _0x1aaf2a(_0x4a27a8,_0x5cf327,_[_0x4587('0x4b')](_0x160a97)[_0x4587('0x4a')]+0x1,_0x4765fe)[_0x4587('0x4e')](function(_0xb80f22){var _0x3a78dd=_[_0x4587('0x4c')](_0x160a97,_0xb80f22);_0x3a78dd[_0x4587('0xd')]({'type':_0x4a27a8[_0x4587('0x7')],'app':_0x4587('0x4f'),'exten':_0x4a27a8[_0x4587('0x6')],'context':_0x4a27a8[_0x4587('0x5')],'priority':_['last'](_0x3a78dd)[_0x4587('0x4a')]+0x1,'VoiceExtensionId':_0x4a27a8['id']});return _0x3a78dd;});}}});};
\ No newline at end of file
index 0ee0564..11ec0d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4989=['stringify','error','code','message','result','catch','GetVoiceExtension','VoiceExtension','findAll','options','where','attributes','limit','include','map','model','lodash','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','request','then','info','VoiceExtension,\x20%s,\x20%s','request\x20sent'];(function(_0x59ea2e,_0x10a0af){var _0x364d17=function(_0x192824){while(--_0x192824){_0x59ea2e['push'](_0x59ea2e['shift']());}};_0x364d17(++_0x10a0af);}(_0x4989,0x79));var _0x9498=function(_0x9e0cb3,_0x9cd497){_0x9e0cb3=_0x9e0cb3-0x0;var _0x5926b7=_0x4989[_0x9e0cb3];return _0x5926b7;};'use strict';var _=require(_0x9498('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x9498('0x1'));var rs=require(_0x9498('0x2'));var fs=require('fs');var Redis=require(_0x9498('0x3'));var db=require(_0x9498('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x9498('0x5'));var config=require('../../config/environment');var jayson=require(_0x9498('0x6'));var client=jayson[_0x9498('0x7')]['http']({'port':0x232a});config[_0x9498('0x8')]=_[_0x9498('0x9')](config[_0x9498('0x8')],{'host':_0x9498('0xa'),'port':0x18eb});var socket=require(_0x9498('0xb'))(new Redis(config[_0x9498('0x8')]));require(_0x9498('0xc'))[_0x9498('0xd')](socket);function respondWithRpcPromise(_0x2cd88f,_0x212a2d,_0x1e7440){return new BPromise(function(_0x5ce9bf,_0x1926af){return client[_0x9498('0xe')](_0x2cd88f,_0x1e7440)[_0x9498('0xf')](function(_0x51f0b1){logger[_0x9498('0x10')](_0x9498('0x11'),_0x212a2d,'request\x20sent');logger['debug']('VoiceExtension,\x20%s,\x20%s,\x20%s',_0x212a2d,_0x9498('0x12'),JSON[_0x9498('0x13')](_0x51f0b1));if(_0x51f0b1[_0x9498('0x14')]){if(_0x51f0b1[_0x9498('0x14')][_0x9498('0x15')]===0x1f4){logger[_0x9498('0x14')]('VoiceExtension,\x20%s,\x20%s',_0x212a2d,_0x51f0b1[_0x9498('0x14')][_0x9498('0x16')]);return _0x1926af(_0x51f0b1[_0x9498('0x14')][_0x9498('0x16')]);}logger[_0x9498('0x14')](_0x9498('0x11'),_0x212a2d,_0x51f0b1[_0x9498('0x14')][_0x9498('0x16')]);return _0x5ce9bf(_0x51f0b1[_0x9498('0x14')][_0x9498('0x16')]);}else{logger[_0x9498('0x10')](_0x9498('0x11'),_0x212a2d,_0x9498('0x12'));_0x5ce9bf(_0x51f0b1[_0x9498('0x17')][_0x9498('0x16')]);}})[_0x9498('0x18')](function(_0x5d775d){logger[_0x9498('0x14')](_0x9498('0x11'),_0x212a2d,_0x5d775d);_0x1926af(_0x5d775d);});});}exports[_0x9498('0x19')]=function(_0x192436){var _0x4e09d5=this;return new Promise(function(_0x2d14d3,_0x58521c){return db[_0x9498('0x1a')][_0x9498('0x1b')]({'raw':_0x192436[_0x9498('0x1c')]?_0x192436['options']['raw']===undefined?!![]:![]:!![],'where':_0x192436['options']?_0x192436[_0x9498('0x1c')][_0x9498('0x1d')]||null:null,'attributes':_0x192436['options']?_0x192436[_0x9498('0x1c')][_0x9498('0x1e')]||null:null,'limit':_0x192436[_0x9498('0x1c')]?_0x192436[_0x9498('0x1c')][_0x9498('0x1f')]||null:null,'include':_0x192436[_0x9498('0x1c')]?_0x192436[_0x9498('0x1c')][_0x9498('0x20')]?_[_0x9498('0x21')](_0x192436['options'][_0x9498('0x20')],function(_0x7c9682){return{'model':db[_0x7c9682[_0x9498('0x22')]],'as':_0x7c9682['as'],'attributes':_0x7c9682['attributes'],'include':_0x7c9682[_0x9498('0x20')]?_[_0x9498('0x21')](_0x7c9682[_0x9498('0x20')],function(_0x2f9262){return{'model':db[_0x2f9262[_0x9498('0x22')]],'as':_0x2f9262['as'],'attributes':_0x2f9262['attributes'],'include':_0x2f9262['include']?_[_0x9498('0x21')](_0x2f9262[_0x9498('0x20')],function(_0x191b4e){return{'model':db[_0x191b4e[_0x9498('0x22')]],'as':_0x191b4e['as'],'attributes':_0x191b4e[_0x9498('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x9498('0xf')](function(_0xf47729){logger[_0x9498('0x10')](_0x9498('0x19'),_0x192436);logger['debug']('GetVoiceExtension',_0x192436,JSON[_0x9498('0x13')](_0xf47729));_0x2d14d3(_0xf47729);})['catch'](function(_0x5edc83){logger[_0x9498('0x14')](_0x9498('0x19'),_0x5edc83['message'],_0x192436);_0x58521c(_0x4e09d5['error'](0x1f4,_0x5edc83[_0x9498('0x16')]));});});};
\ No newline at end of file
+var _0x1203=['localhost','socket.io-emitter','request','then','info','VoiceExtension,\x20%s,\x20%s','VoiceExtension,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','VoiceExtension','options','where','attributes','limit','map','model','include','GetVoiceExtension','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults'];(function(_0x3a9815,_0x47eb16){var _0x188653=function(_0x203e84){while(--_0x203e84){_0x3a9815['push'](_0x3a9815['shift']());}};_0x188653(++_0x47eb16);}(_0x1203,0x8c));var _0x3120=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1203[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x3120('0x0'));var util=require(_0x3120('0x1'));var moment=require(_0x3120('0x2'));var BPromise=require(_0x3120('0x3'));var rs=require(_0x3120('0x4'));var fs=require('fs');var Redis=require(_0x3120('0x5'));var db=require(_0x3120('0x6'))['db'];var utils=require(_0x3120('0x7'));var logger=require(_0x3120('0x8'))(_0x3120('0x9'));var config=require(_0x3120('0xa'));var jayson=require(_0x3120('0xb'));var client=jayson[_0x3120('0xc')][_0x3120('0xd')]({'port':0x232a});config[_0x3120('0xe')]=_[_0x3120('0xf')](config['redis'],{'host':_0x3120('0x10'),'port':0x18eb});var socket=require(_0x3120('0x11'))(new Redis(config['redis']));require('./voiceExtension.socket')['register'](socket);function respondWithRpcPromise(_0x6ee01b,_0x39f834,_0x5b2ae3){return new BPromise(function(_0x1493fd,_0x5d0ba8){return client[_0x3120('0x12')](_0x6ee01b,_0x5b2ae3)[_0x3120('0x13')](function(_0x492cda){logger[_0x3120('0x14')](_0x3120('0x15'),_0x39f834,'request\x20sent');logger['debug'](_0x3120('0x16'),_0x39f834,_0x3120('0x17'),JSON[_0x3120('0x18')](_0x492cda));if(_0x492cda[_0x3120('0x19')]){if(_0x492cda[_0x3120('0x19')][_0x3120('0x1a')]===0x1f4){logger[_0x3120('0x19')]('VoiceExtension,\x20%s,\x20%s',_0x39f834,_0x492cda[_0x3120('0x19')][_0x3120('0x1b')]);return _0x5d0ba8(_0x492cda[_0x3120('0x19')][_0x3120('0x1b')]);}logger[_0x3120('0x19')](_0x3120('0x15'),_0x39f834,_0x492cda[_0x3120('0x19')]['message']);return _0x1493fd(_0x492cda[_0x3120('0x19')]['message']);}else{logger[_0x3120('0x14')](_0x3120('0x15'),_0x39f834,_0x3120('0x17'));_0x1493fd(_0x492cda[_0x3120('0x1c')][_0x3120('0x1b')]);}})[_0x3120('0x1d')](function(_0x50429){logger['error'](_0x3120('0x15'),_0x39f834,_0x50429);_0x5d0ba8(_0x50429);});});}exports['GetVoiceExtension']=function(_0x3b7e31){var _0x41d73f=this;return new Promise(function(_0x3bc524,_0x5bfd37){return db[_0x3120('0x1e')]['findAll']({'raw':_0x3b7e31[_0x3120('0x1f')]?_0x3b7e31[_0x3120('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x3b7e31[_0x3120('0x1f')]?_0x3b7e31[_0x3120('0x1f')][_0x3120('0x20')]||null:null,'attributes':_0x3b7e31[_0x3120('0x1f')]?_0x3b7e31['options'][_0x3120('0x21')]||null:null,'limit':_0x3b7e31['options']?_0x3b7e31[_0x3120('0x1f')][_0x3120('0x22')]||null:null,'include':_0x3b7e31[_0x3120('0x1f')]?_0x3b7e31['options']['include']?_[_0x3120('0x23')](_0x3b7e31[_0x3120('0x1f')]['include'],function(_0xc88506){return{'model':db[_0xc88506[_0x3120('0x24')]],'as':_0xc88506['as'],'attributes':_0xc88506[_0x3120('0x21')],'include':_0xc88506['include']?_[_0x3120('0x23')](_0xc88506[_0x3120('0x25')],function(_0x4412f9){return{'model':db[_0x4412f9[_0x3120('0x24')]],'as':_0x4412f9['as'],'attributes':_0x4412f9['attributes'],'include':_0x4412f9['include']?_['map'](_0x4412f9[_0x3120('0x25')],function(_0x5444ec){return{'model':db[_0x5444ec[_0x3120('0x24')]],'as':_0x5444ec['as'],'attributes':_0x5444ec[_0x3120('0x21')]};}):[]};}):[]};}):[]:[]})[_0x3120('0x13')](function(_0x3399fd){logger[_0x3120('0x14')](_0x3120('0x26'),_0x3b7e31);logger['debug'](_0x3120('0x26'),_0x3b7e31,JSON[_0x3120('0x18')](_0x3399fd));_0x3bc524(_0x3399fd);})[_0x3120('0x1d')](function(_0x1ee7bc){logger[_0x3120('0x19')](_0x3120('0x26'),_0x1ee7bc[_0x3120('0x1b')],_0x3b7e31);_0x5bfd37(_0x41d73f[_0x3120('0x19')](0x1f4,_0x1ee7bc['message']));});});};
\ No newline at end of file
index 7a83e31..8260cd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['length','voiceExtension:','./voiceExtension.events','save','remove','update','emit','removeListener'];(function(_0x5f15df,_0x1ff23f){var _0x5a7154=function(_0x1f8692){while(--_0x1f8692){_0x5f15df['push'](_0x5f15df['shift']());}};_0x5a7154(++_0x1ff23f);}(_0x53ec,0x192));var _0xc53e=function(_0x4a34e0,_0x29ff2f){_0x4a34e0=_0x4a34e0-0x0;var _0xb5ce1d=_0x53ec[_0x4a34e0];return _0xb5ce1d;};'use strict';var VoiceExtensionEvents=require(_0xc53e('0x0'));var events=[_0xc53e('0x1'),_0xc53e('0x2'),_0xc53e('0x3')];function createListener(_0x1b04cc,_0xe45c6d){return function(_0x51c435){_0xe45c6d[_0xc53e('0x4')](_0x1b04cc,_0x51c435);};}function removeListener(_0x4e954a,_0x2b90f6){return function(){VoiceExtensionEvents[_0xc53e('0x5')](_0x4e954a,_0x2b90f6);};}exports['register']=function(_0x2f1414){for(var _0x4f989b=0x0,_0x41a9e8=events[_0xc53e('0x6')];_0x4f989b<_0x41a9e8;_0x4f989b++){var _0x5d3b28=events[_0x4f989b];var _0x1616ac=createListener(_0xc53e('0x7')+_0x5d3b28,_0x2f1414);VoiceExtensionEvents['on'](_0x5d3b28,_0x1616ac);}};
\ No newline at end of file
+var _0xe14b=['removeListener','register','length','./voiceExtension.events','save','emit'];(function(_0x35a0e2,_0x302ad1){var _0x31ea9a=function(_0x356d7d){while(--_0x356d7d){_0x35a0e2['push'](_0x35a0e2['shift']());}};_0x31ea9a(++_0x302ad1);}(_0xe14b,0x93));var _0xbe14=function(_0x3072fb,_0x17b49f){_0x3072fb=_0x3072fb-0x0;var _0x5d7f80=_0xe14b[_0x3072fb];return _0x5d7f80;};'use strict';var VoiceExtensionEvents=require(_0xbe14('0x0'));var events=[_0xbe14('0x1'),'remove','update'];function createListener(_0x11c3a0,_0x36393a){return function(_0x48a116){_0x36393a[_0xbe14('0x2')](_0x11c3a0,_0x48a116);};}function removeListener(_0x5ce8fb,_0x496c04){return function(){VoiceExtensionEvents[_0xbe14('0x3')](_0x5ce8fb,_0x496c04);};}exports[_0xbe14('0x4')]=function(_0x1fe204){for(var _0x1ff100=0x0,_0x1d9ade=events[_0xbe14('0x5')];_0x1ff100<_0x1d9ade;_0x1ff100++){var _0x196fca=events[_0x1ff100];var _0x566ae7=createListener('voiceExtension:'+_0x196fca,_0x1fe204);VoiceExtensionEvents['on'](_0x196fca,_0x566ae7);}};
\ No newline at end of file
index 12a3ee4..db4d5fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f9d=['/:id/messages','getMessages','create','put','update','delete','destroy','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMail.controller','isAuthenticated','index','get','/:id'];(function(_0x6ca7f4,_0x51a5df){var _0x494fa6=function(_0x359532){while(--_0x359532){_0x6ca7f4['push'](_0x6ca7f4['shift']());}};_0x494fa6(++_0x51a5df);}(_0x8f9d,0x93));var _0xd8f9=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x8f9d[_0xfae23b];return _0x200640;};'use strict';var multer=require(_0xd8f9('0x0'));var util=require('util');var path=require(_0xd8f9('0x1'));var timeout=require('connect-timeout');var express=require(_0xd8f9('0x2'));var router=express[_0xd8f9('0x3')]();var fs_extra=require(_0xd8f9('0x4'));var auth=require(_0xd8f9('0x5'));var interaction=require(_0xd8f9('0x6'));var config=require(_0xd8f9('0x7'));var controller=require(_0xd8f9('0x8'));router['get']('/',auth[_0xd8f9('0x9')](),controller[_0xd8f9('0xa')]);router[_0xd8f9('0xb')](_0xd8f9('0xc'),auth[_0xd8f9('0x9')](),controller['show']);router[_0xd8f9('0xb')](_0xd8f9('0xd'),auth['isAuthenticated'](),controller[_0xd8f9('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd8f9('0xf')]);router[_0xd8f9('0x10')](_0xd8f9('0xc'),auth[_0xd8f9('0x9')](),controller[_0xd8f9('0x11')]);router[_0xd8f9('0x12')](_0xd8f9('0xc'),auth['isAuthenticated'](),controller[_0xd8f9('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xa456=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceMail.controller','get','isAuthenticated','/:id','show','post','create','put','delete','multer'];(function(_0xeb254a,_0x1c1fc9){var _0x78e431=function(_0x1499d3){while(--_0x1499d3){_0xeb254a['push'](_0xeb254a['shift']());}};_0x78e431(++_0x1c1fc9);}(_0xa456,0x142));var _0x6a45=function(_0x3305de,_0x16582f){_0x3305de=_0x3305de-0x0;var _0x3b5a84=_0xa456[_0x3305de];return _0x3b5a84;};'use strict';var multer=require(_0x6a45('0x0'));var util=require(_0x6a45('0x1'));var path=require(_0x6a45('0x2'));var timeout=require(_0x6a45('0x3'));var express=require('express');var router=express[_0x6a45('0x4')]();var fs_extra=require(_0x6a45('0x5'));var auth=require(_0x6a45('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6a45('0x7'));var controller=require(_0x6a45('0x8'));router[_0x6a45('0x9')]('/',auth[_0x6a45('0xa')](),controller['index']);router[_0x6a45('0x9')](_0x6a45('0xb'),auth[_0x6a45('0xa')](),controller[_0x6a45('0xc')]);router[_0x6a45('0x9')]('/:id/messages',auth[_0x6a45('0xa')](),controller['getMessages']);router[_0x6a45('0xd')]('/',auth[_0x6a45('0xa')](),controller[_0x6a45('0xe')]);router[_0x6a45('0xf')](_0x6a45('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x6a45('0x10')](_0x6a45('0xb'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index ffd8293..2ffac10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe234=['contest_mailbox','setDataValue','email','string','trim','central','ENUM','yes','TIMESTAMP','INTEGER','VIRTUAL','getDataValue','fullname','\x20-\x20','STRING','from-voicemail'];(function(_0x44ad9a,_0x58078f){var _0x1ae1a3=function(_0x4d9e88){while(--_0x4d9e88){_0x44ad9a['push'](_0x44ad9a['shift']());}};_0x1ae1a3(++_0x58078f);}(_0xe234,0x7e));var _0x4e23=function(_0x40d257,_0x10dc13){_0x40d257=_0x40d257-0x0;var _0x37b1f3=_0xe234[_0x40d257];return _0x37b1f3;};'use strict';var Sequelize=require('sequelize');module['exports']={'customer_id':{'type':Sequelize[_0x4e23('0x0')]},'context':{'type':Sequelize[_0x4e23('0x0')],'defaultValue':_0x4e23('0x1'),'unique':_0x4e23('0x2')},'mailbox':{'type':Sequelize[_0x4e23('0x0')],'defaultValue':'','allowNull':![],'unique':_0x4e23('0x2')},'password':{'type':Sequelize[_0x4e23('0x0')]},'fullname':{'type':Sequelize[_0x4e23('0x0')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]},'set':function(_0x22f3b6){this[_0x4e23('0x3')](_0x4e23('0x4'),typeof _0x22f3b6===_0x4e23('0x5')&&_0x22f3b6[_0x4e23('0x6')]()?_0x22f3b6['trim']():null);}},'pager':{'type':Sequelize[_0x4e23('0x0')]},'tz':{'type':Sequelize[_0x4e23('0x0')],'defaultValue':_0x4e23('0x7')},'attach':{'type':Sequelize[_0x4e23('0x8')](_0x4e23('0x9'),'no'),'defaultValue':_0x4e23('0x9'),'allowNull':![]},'saycid':{'type':Sequelize[_0x4e23('0x8')]('yes','no'),'defaultValue':_0x4e23('0x9'),'allowNull':![]},'dialout':{'type':Sequelize[_0x4e23('0x0')]},'callback':{'type':Sequelize[_0x4e23('0x0')]},'review':{'type':Sequelize[_0x4e23('0x8')](_0x4e23('0x9'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x4e23('0x8')](_0x4e23('0x9'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x4e23('0x8')](_0x4e23('0x9'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x4e23('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x4e23('0x8')](_0x4e23('0x9'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x4e23('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x4e23('0x8')](_0x4e23('0x9'),'no'),'defaultValue':_0x4e23('0x9'),'allowNull':![]},'forcename':{'type':Sequelize[_0x4e23('0x8')](_0x4e23('0x9'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x4e23('0x8')](_0x4e23('0x9'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x4e23('0x8')]('yes','no'),'defaultValue':_0x4e23('0x9'),'allowNull':![]},'stamp':{'type':_0x4e23('0xa')},'emailsubject':{'type':Sequelize['STRING']},'emailbody':{'type':Sequelize[_0x4e23('0x0')]},'maxsecs':{'type':Sequelize[_0x4e23('0xb')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x4e23('0xb')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x4e23('0xc')],'get':function(){return this[_0x4e23('0xd')](_0x4e23('0xe'))+_0x4e23('0xf')+this[_0x4e23('0xd')]('mailbox');}}};
\ No newline at end of file
+var _0xe514=['VIRTUAL','getDataValue','fullname','\x20-\x20','mailbox','STRING','contest_mailbox','string','trim','central','ENUM','yes','TINYINT(4)','TIMESTAMP','INTEGER'];(function(_0x1da04e,_0x31024b){var _0xdd8c41=function(_0x2036f9){while(--_0x2036f9){_0x1da04e['push'](_0x1da04e['shift']());}};_0xdd8c41(++_0x31024b);}(_0xe514,0x1c7));var _0x4e51=function(_0x4cddc7,_0x4aa299){_0x4cddc7=_0x4cddc7-0x0;var _0x5c39e2=_0xe514[_0x4cddc7];return _0x5c39e2;};'use strict';var Sequelize=require('sequelize');module['exports']={'customer_id':{'type':Sequelize[_0x4e51('0x0')]},'context':{'type':Sequelize[_0x4e51('0x0')],'defaultValue':'from-voicemail','unique':_0x4e51('0x1')},'mailbox':{'type':Sequelize[_0x4e51('0x0')],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize[_0x4e51('0x0')]},'fullname':{'type':Sequelize[_0x4e51('0x0')]},'email':{'type':Sequelize[_0x4e51('0x0')],'validate':{'isEmail':!![]},'set':function(_0x5de4ad){this['setDataValue']('email',typeof _0x5de4ad===_0x4e51('0x2')&&_0x5de4ad[_0x4e51('0x3')]()?_0x5de4ad['trim']():null);}},'pager':{'type':Sequelize[_0x4e51('0x0')]},'tz':{'type':Sequelize[_0x4e51('0x0')],'defaultValue':_0x4e51('0x4')},'attach':{'type':Sequelize[_0x4e51('0x5')](_0x4e51('0x6'),'no'),'defaultValue':_0x4e51('0x6'),'allowNull':![]},'saycid':{'type':Sequelize[_0x4e51('0x5')](_0x4e51('0x6'),'no'),'defaultValue':_0x4e51('0x6'),'allowNull':![]},'dialout':{'type':Sequelize[_0x4e51('0x0')]},'callback':{'type':Sequelize['STRING']},'review':{'type':Sequelize[_0x4e51('0x5')](_0x4e51('0x6'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x4e51('0x5')](_0x4e51('0x6'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize['ENUM'](_0x4e51('0x6'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize['ENUM'](_0x4e51('0x6'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x4e51('0x7'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x4e51('0x5')]('yes','no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x4e51('0x5')](_0x4e51('0x6'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x4e51('0x5')](_0x4e51('0x6'),'no'),'defaultValue':_0x4e51('0x6'),'allowNull':![]},'forcename':{'type':Sequelize[_0x4e51('0x5')](_0x4e51('0x6'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x4e51('0x5')](_0x4e51('0x6'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x4e51('0x5')](_0x4e51('0x6'),'no'),'defaultValue':_0x4e51('0x6'),'allowNull':![]},'stamp':{'type':_0x4e51('0x8')},'emailsubject':{'type':Sequelize[_0x4e51('0x0')]},'emailbody':{'type':Sequelize['STRING']},'maxsecs':{'type':Sequelize[_0x4e51('0x9')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x4e51('0x9')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x4e51('0xa')],'get':function(){return this[_0x4e51('0xb')](_0x4e51('0xc'))+_0x4e51('0xd')+this['getDataValue'](_0x4e51('0xe'));}}};
\ No newline at end of file
index bd2957c..b2f023c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1be1=['set','Content-Range','apply','reject','save','update','then','get','Voicemails','destroy','sendStatus','error','stack','name','send','index','map','VoiceMail','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','include','findAll','rows','show','options','find','catch','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','findOne','VoiceMailMessage','length','mailbox','findAndCountAll','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','limit','count'];(function(_0x1c97d8,_0x4413bc){var _0x1b0be5=function(_0x4fe142){while(--_0x4fe142){_0x1c97d8['push'](_0x1c97d8['shift']());}};_0x1b0be5(++_0x4413bc);}(_0x1be1,0x192));var _0x11be=function(_0x291829,_0x51d3e1){_0x291829=_0x291829-0x0;var _0x49fd45=_0x1be1[_0x291829];return _0x49fd45;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x11be('0x0'));var jsonpatch=require(_0x11be('0x1'));var rp=require('request-promise');var moment=require(_0x11be('0x2'));var BPromise=require(_0x11be('0x3'));var Mustache=require(_0x11be('0x4'));var util=require(_0x11be('0x5'));var path=require('path');var sox=require(_0x11be('0x6'));var csv=require(_0x11be('0x7'));var ejs=require(_0x11be('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x11be('0x9'));var squel=require('squel');var crypto=require(_0x11be('0xa'));var jsforce=require(_0x11be('0xb'));var deskjs=require(_0x11be('0xc'));var toCsv=require(_0x11be('0x7'));var querystring=require(_0x11be('0xd'));var Papa=require('papaparse');var Redis=require(_0x11be('0xe'));var authService=require(_0x11be('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x11be('0x10'));var hardwareService=require(_0x11be('0x11'));var logger=require(_0x11be('0x12'))(_0x11be('0x13'));var utils=require('../../config/utils');var config=require(_0x11be('0x14'));var licenseUtil=require(_0x11be('0x15'));var db=require(_0x11be('0x16'))['db'];function respondWithStatusCode(_0x4b36c8,_0x3ff31f){_0x3ff31f=_0x3ff31f||0xcc;return function(_0x2dad05){if(_0x2dad05){return _0x4b36c8['sendStatus'](_0x3ff31f);}return _0x4b36c8[_0x11be('0x17')](_0x3ff31f)['end']();};}function respondWithResult(_0x49228e,_0x569842){_0x569842=_0x569842||0xc8;return function(_0x4b6e7e){if(_0x4b6e7e){return _0x49228e['status'](_0x569842)['json'](_0x4b6e7e);}};}function respondWithFilteredResult(_0x588871,_0x2280e2){return function(_0x52bbef){if(_0x52bbef){var _0x31047c=typeof _0x2280e2[_0x11be('0x18')]===_0x11be('0x19')&&typeof _0x2280e2[_0x11be('0x1a')]==='undefined';var _0x2ed725=_0x52bbef[_0x11be('0x1b')];var _0x56ab61=_0x31047c?0x0:_0x2280e2[_0x11be('0x18')];var _0xc3263c=_0x31047c?_0x52bbef[_0x11be('0x1b')]:_0x2280e2['offset']+_0x2280e2['limit'];var _0x141391;if(_0xc3263c>=_0x2ed725){_0xc3263c=_0x2ed725;_0x141391=0xc8;}else{_0x141391=0xce;}_0x588871[_0x11be('0x17')](_0x141391);return _0x588871[_0x11be('0x1c')](_0x11be('0x1d'),_0x56ab61+'-'+_0xc3263c+'/'+_0x2ed725)['json'](_0x52bbef);}return null;};}function patchUpdates(_0x12a5bd){return function(_0x45136f){try{jsonpatch[_0x11be('0x1e')](_0x45136f,_0x12a5bd,!![]);}catch(_0x452315){return BPromise[_0x11be('0x1f')](_0x452315);}return _0x45136f[_0x11be('0x20')]();};}function saveUpdates(_0xa944ac,_0x17678d){return function(_0x3aea14){if(_0x3aea14){return _0x3aea14[_0x11be('0x21')](_0xa944ac)['then'](function(_0xfe3737){return _0xfe3737;});}return null;};}function removeEntity(_0x46b7c2,_0x2fe43c){return function(_0x5d1690){if(_0x5d1690){return _0x5d1690['destroy']()[_0x11be('0x22')](function(){var _0x10ce04=_0x5d1690[_0x11be('0x23')]({'plain':!![]});var _0x4cb27f=_0x11be('0x24');return db['UserProfileResource'][_0x11be('0x25')]({'where':{'type':_0x4cb27f,'resourceId':_0x10ce04['id']}})['then'](function(){return _0x5d1690;});})[_0x11be('0x22')](function(){_0x46b7c2[_0x11be('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x48029b,_0x28b3a0){return function(_0x1d3b5c){if(!_0x1d3b5c){_0x48029b[_0x11be('0x26')](0x194);}return _0x1d3b5c;};}function handleError(_0x30427b,_0x17c67f){_0x17c67f=_0x17c67f||0x1f4;return function(_0xf5a6ac){logger[_0x11be('0x27')](_0xf5a6ac[_0x11be('0x28')]);if(_0xf5a6ac['name']){delete _0xf5a6ac[_0x11be('0x29')];}_0x30427b['status'](_0x17c67f)[_0x11be('0x2a')](_0xf5a6ac);};}exports[_0x11be('0x2b')]=function(_0x510476,_0x584d4c){var _0x49fd5c={},_0x265fc9={},_0x5e8f9a={'count':0x0,'rows':[]};var _0x66316d=_[_0x11be('0x2c')](db[_0x11be('0x2d')][_0x11be('0x2e')],function(_0x25e214){return{'name':_0x25e214[_0x11be('0x2f')],'type':_0x25e214['type'][_0x11be('0x30')]};});_0x265fc9[_0x11be('0x31')]=_[_0x11be('0x2c')](_0x66316d,_0x11be('0x29'));_0x265fc9[_0x11be('0x32')]=_[_0x11be('0x33')](_0x510476['query']);_0x265fc9[_0x11be('0x34')]=_[_0x11be('0x35')](_0x265fc9[_0x11be('0x31')],_0x265fc9[_0x11be('0x32')]);_0x49fd5c[_0x11be('0x36')]=_['intersection'](_0x265fc9[_0x11be('0x31')],qs[_0x11be('0x37')](_0x510476[_0x11be('0x32')]['fields']));_0x49fd5c[_0x11be('0x36')]=_0x49fd5c['attributes']['length']?_0x49fd5c['attributes']:_0x265fc9['model'];if(!_0x510476[_0x11be('0x32')][_0x11be('0x38')](_0x11be('0x39'))){_0x49fd5c['limit']=qs[_0x11be('0x1a')](_0x510476[_0x11be('0x32')]['limit']);_0x49fd5c[_0x11be('0x18')]=qs['offset'](_0x510476[_0x11be('0x32')]['offset']);}_0x49fd5c[_0x11be('0x3a')]=qs[_0x11be('0x3b')](_0x510476[_0x11be('0x32')][_0x11be('0x3b')]);_0x49fd5c['where']=qs[_0x11be('0x34')](_[_0x11be('0x3c')](_0x510476[_0x11be('0x32')],_0x265fc9[_0x11be('0x34')]),_0x66316d);if(_0x510476['query'][_0x11be('0x3d')]){_0x49fd5c[_0x11be('0x3e')]=_[_0x11be('0x3f')](_0x49fd5c[_0x11be('0x3e')],{'$or':_[_0x11be('0x2c')](_0x66316d,function(_0x1b1aac){if(_0x1b1aac[_0x11be('0x40')]!=='VIRTUAL'){var _0x2618f5={};_0x2618f5[_0x1b1aac[_0x11be('0x29')]]={'$like':'%'+_0x510476['query'][_0x11be('0x3d')]+'%'};return _0x2618f5;}})});}_0x49fd5c=_[_0x11be('0x3f')]({},_0x49fd5c,_0x510476['options']);var _0x30b67a={'where':_0x49fd5c['where']};return db[_0x11be('0x2d')]['count'](_0x30b67a)[_0x11be('0x22')](function(_0x30be21){_0x5e8f9a['count']=_0x30be21;if(_0x510476[_0x11be('0x32')]['includeAll']){_0x49fd5c[_0x11be('0x41')]=[{'all':!![]}];}return db[_0x11be('0x2d')][_0x11be('0x42')](_0x49fd5c);})[_0x11be('0x22')](function(_0x2b847a){_0x5e8f9a[_0x11be('0x43')]=_0x2b847a;return _0x5e8f9a;})[_0x11be('0x22')](respondWithFilteredResult(_0x584d4c,_0x49fd5c))['catch'](handleError(_0x584d4c,null));};exports[_0x11be('0x44')]=function(_0x18cddf,_0x9610a1){var _0x317e2d={'raw':!![],'where':{'id':_0x18cddf['params']['id']}},_0x589ac4={};_0x589ac4['model']=_[_0x11be('0x33')](db['VoiceMail'][_0x11be('0x2e')]);_0x589ac4['query']=_[_0x11be('0x33')](_0x18cddf[_0x11be('0x32')]);_0x589ac4[_0x11be('0x34')]=_[_0x11be('0x35')](_0x589ac4[_0x11be('0x31')],_0x589ac4[_0x11be('0x32')]);_0x317e2d[_0x11be('0x36')]=_['intersection'](_0x589ac4[_0x11be('0x31')],qs['fields'](_0x18cddf[_0x11be('0x32')][_0x11be('0x37')]));_0x317e2d[_0x11be('0x36')]=_0x317e2d['attributes']['length']?_0x317e2d['attributes']:_0x589ac4[_0x11be('0x31')];if(_0x18cddf[_0x11be('0x32')]['includeAll']){_0x317e2d['include']=[{'all':!![]}];}_0x317e2d=_['merge']({},_0x317e2d,_0x18cddf[_0x11be('0x45')]);return db[_0x11be('0x2d')][_0x11be('0x46')](_0x317e2d)[_0x11be('0x22')](handleEntityNotFound(_0x9610a1,null))[_0x11be('0x22')](respondWithResult(_0x9610a1,null))[_0x11be('0x47')](handleError(_0x9610a1,null));};exports[_0x11be('0x48')]=function(_0x3f2070,_0x2ce110){return db[_0x11be('0x2d')][_0x11be('0x48')](_0x3f2070['body'],{})[_0x11be('0x22')](function(_0x29f82f){var _0x534ee7=_0x3f2070['user']['get']({'plain':!![]});if(!_0x534ee7)throw new Error(_0x11be('0x49'));if(_0x534ee7['role']===_0x11be('0x4a')){var _0x1c1626=_0x29f82f[_0x11be('0x23')]({'plain':!![]});var _0x1fb48d=_0x11be('0x24');return db[_0x11be('0x4b')][_0x11be('0x46')]({'where':{'name':_0x1fb48d,'userProfileId':_0x534ee7[_0x11be('0x4c')]},'raw':!![]})[_0x11be('0x22')](function(_0x4c873a){if(_0x4c873a&&_0x4c873a[_0x11be('0x4d')]===0x0){return db['UserProfileResource'][_0x11be('0x48')]({'name':_0x1c1626[_0x11be('0x29')],'resourceId':_0x1c1626['id'],'type':_0x4c873a['name'],'sectionId':_0x4c873a['id']},{})[_0x11be('0x22')](function(){return _0x29f82f;});}else{return _0x29f82f;}})[_0x11be('0x47')](function(_0x4c0e37){logger[_0x11be('0x27')](_0x11be('0x4e'),_0x4c0e37);throw _0x4c0e37;});}return _0x29f82f;})['then'](respondWithResult(_0x2ce110,0xc9))['catch'](handleError(_0x2ce110,null));};exports[_0x11be('0x21')]=function(_0x2886ac,_0x50eeab){if(_0x2886ac['body']['id']){delete _0x2886ac[_0x11be('0x4f')]['id'];}return db[_0x11be('0x2d')][_0x11be('0x46')]({'where':{'id':_0x2886ac['params']['id']}})['then'](handleEntityNotFound(_0x50eeab,null))['then'](saveUpdates(_0x2886ac[_0x11be('0x4f')],null))[_0x11be('0x22')](respondWithResult(_0x50eeab,null))[_0x11be('0x47')](handleError(_0x50eeab,null));};exports['destroy']=function(_0x4db963,_0x33409c){return db[_0x11be('0x2d')][_0x11be('0x46')]({'where':{'id':_0x4db963[_0x11be('0x50')]['id']}})['then'](handleEntityNotFound(_0x33409c,null))[_0x11be('0x22')](removeEntity(_0x33409c,null))['catch'](handleError(_0x33409c,null));};exports['getMessages']=function(_0x568f20,_0x5aa6bf,_0x1a43df){return db[_0x11be('0x2d')][_0x11be('0x51')]({'where':{'id':_0x568f20[_0x11be('0x50')]['id']}})[_0x11be('0x22')](handleEntityNotFound(_0x5aa6bf,null))[_0x11be('0x22')](function(_0xb97604){var _0x55e79d;var _0x54e52a={},_0x7c1ee5={};_0x7c1ee5[_0x11be('0x31')]=_[_0x11be('0x33')](db[_0x11be('0x52')][_0x11be('0x2e')]);_0x7c1ee5[_0x11be('0x32')]=_[_0x11be('0x33')](_0x568f20[_0x11be('0x32')]);_0x7c1ee5[_0x11be('0x34')]=_['intersection'](_0x7c1ee5[_0x11be('0x31')],_0x7c1ee5[_0x11be('0x32')]);_0x54e52a[_0x11be('0x36')]=_['intersection'](_0x7c1ee5[_0x11be('0x31')],qs[_0x11be('0x37')](_0x568f20['query']['fields']));_0x54e52a[_0x11be('0x36')]=_0x54e52a[_0x11be('0x36')][_0x11be('0x53')]?_0x54e52a[_0x11be('0x36')]:_0x7c1ee5['model'];if(!_0x568f20[_0x11be('0x32')][_0x11be('0x38')](_0x11be('0x39'))){_0x54e52a[_0x11be('0x1a')]=qs[_0x11be('0x1a')](_0x568f20[_0x11be('0x32')][_0x11be('0x1a')]);_0x54e52a[_0x11be('0x18')]=qs[_0x11be('0x18')](_0x568f20['query']['offset']);}_0x54e52a[_0x11be('0x3a')]=qs[_0x11be('0x3b')](_0x568f20['query'][_0x11be('0x3b')]);_0x54e52a[_0x11be('0x3e')]=qs[_0x11be('0x34')](_[_0x11be('0x3c')](_0x568f20[_0x11be('0x32')],_0x7c1ee5[_0x11be('0x34')]));if(_0x568f20[_0x11be('0x32')]['filter']){_0x54e52a['where']=_[_0x11be('0x3f')](_0x54e52a[_0x11be('0x3e')],{'$or':_[_0x11be('0x2c')](_0x54e52a['attributes'],function(_0x82c02c){var _0x422696={};_0x422696[_0x82c02c]={'$like':'%'+_0x568f20[_0x11be('0x32')][_0x11be('0x3d')]+'%'};return _0x422696;})});}_0x54e52a[_0x11be('0x3e')]=_[_0x11be('0x3f')](_0x54e52a[_0x11be('0x3e')],{'mailboxuser':_0xb97604[_0x11be('0x54')]});_0x54e52a=_[_0x11be('0x3f')]({},_0x54e52a,_0x568f20[_0x11be('0x45')]);return db[_0x11be('0x52')][_0x11be('0x55')](_0x54e52a)[_0x11be('0x22')](respondWithFilteredResult(_0x5aa6bf,_0x54e52a));})[_0x11be('0x47')](handleError(_0x5aa6bf,null));};
\ No newline at end of file
+var _0xbee3=['map','fieldName','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','pick','filter','merge','type','VIRTUAL','options','VoiceMail','includeAll','include','findAll','rows','catch','rawAttributes','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','findOne','nolimit','order','mailbox','findAndCountAll','rimraf','request-promise','moment','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','end','error','stack','name','send','index'];(function(_0x1f55b4,_0x4e3352){var _0xcb82a6=function(_0x3c1a9d){while(--_0x3c1a9d){_0x1f55b4['push'](_0x1f55b4['shift']());}};_0xcb82a6(++_0x4e3352);}(_0xbee3,0xd5));var _0x3bee=function(_0x1f45e3,_0x121eed){_0x1f45e3=_0x1f45e3-0x0;var _0x503b36=_0xbee3[_0x1f45e3];return _0x503b36;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3bee('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x3bee('0x1'));var moment=require(_0x3bee('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x3bee('0x3'));var util=require(_0x3bee('0x4'));var path=require(_0x3bee('0x5'));var sox=require('sox');var csv=require(_0x3bee('0x6'));var ejs=require(_0x3bee('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3bee('0x8'));var squel=require(_0x3bee('0x9'));var crypto=require(_0x3bee('0xa'));var jsforce=require(_0x3bee('0xb'));var deskjs=require(_0x3bee('0xc'));var toCsv=require(_0x3bee('0x6'));var querystring=require(_0x3bee('0xd'));var Papa=require('papaparse');var Redis=require(_0x3bee('0xe'));var authService=require(_0x3bee('0xf'));var qs=require(_0x3bee('0x10'));var as=require(_0x3bee('0x11'));var hardwareService=require(_0x3bee('0x12'));var logger=require(_0x3bee('0x13'))('api');var utils=require(_0x3bee('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x3bee('0x15'));var db=require(_0x3bee('0x16'))['db'];function respondWithStatusCode(_0x407526,_0x6950d0){_0x6950d0=_0x6950d0||0xcc;return function(_0x410124){if(_0x410124){return _0x407526[_0x3bee('0x17')](_0x6950d0);}return _0x407526[_0x3bee('0x18')](_0x6950d0)['end']();};}function respondWithResult(_0xad01f9,_0x33504d){_0x33504d=_0x33504d||0xc8;return function(_0x31ac52){if(_0x31ac52){return _0xad01f9[_0x3bee('0x18')](_0x33504d)[_0x3bee('0x19')](_0x31ac52);}};}function respondWithFilteredResult(_0x5b9473,_0x558436){return function(_0x346767){if(_0x346767){var _0x515397=typeof _0x558436[_0x3bee('0x1a')]===_0x3bee('0x1b')&&typeof _0x558436['limit']==='undefined';var _0x1582a4=_0x346767[_0x3bee('0x1c')];var _0xfdba3b=_0x515397?0x0:_0x558436[_0x3bee('0x1a')];var _0x49095a=_0x515397?_0x346767[_0x3bee('0x1c')]:_0x558436[_0x3bee('0x1a')]+_0x558436[_0x3bee('0x1d')];var _0x49b32d;if(_0x49095a>=_0x1582a4){_0x49095a=_0x1582a4;_0x49b32d=0xc8;}else{_0x49b32d=0xce;}_0x5b9473[_0x3bee('0x18')](_0x49b32d);return _0x5b9473[_0x3bee('0x1e')](_0x3bee('0x1f'),_0xfdba3b+'-'+_0x49095a+'/'+_0x1582a4)['json'](_0x346767);}return null;};}function patchUpdates(_0x4f36af){return function(_0x1afd0f){try{jsonpatch[_0x3bee('0x20')](_0x1afd0f,_0x4f36af,!![]);}catch(_0x57aba4){return BPromise[_0x3bee('0x21')](_0x57aba4);}return _0x1afd0f[_0x3bee('0x22')]();};}function saveUpdates(_0x2eea75,_0x179e62){return function(_0x28c248){if(_0x28c248){return _0x28c248[_0x3bee('0x23')](_0x2eea75)[_0x3bee('0x24')](function(_0x582fa9){return _0x582fa9;});}return null;};}function removeEntity(_0x8ae4ca,_0x1ed0c1){return function(_0x1fed5a){if(_0x1fed5a){return _0x1fed5a[_0x3bee('0x25')]()['then'](function(){var _0x45249c=_0x1fed5a[_0x3bee('0x26')]({'plain':!![]});var _0x1e0111='Voicemails';return db['UserProfileResource'][_0x3bee('0x25')]({'where':{'type':_0x1e0111,'resourceId':_0x45249c['id']}})[_0x3bee('0x24')](function(){return _0x1fed5a;});})['then'](function(){_0x8ae4ca[_0x3bee('0x18')](0xcc)[_0x3bee('0x27')]();});}};}function handleEntityNotFound(_0x2e666a,_0x5b1eec){return function(_0x1984c4){if(!_0x1984c4){_0x2e666a[_0x3bee('0x17')](0x194);}return _0x1984c4;};}function handleError(_0x150766,_0x4f2066){_0x4f2066=_0x4f2066||0x1f4;return function(_0x239fa4){logger[_0x3bee('0x28')](_0x239fa4[_0x3bee('0x29')]);if(_0x239fa4['name']){delete _0x239fa4[_0x3bee('0x2a')];}_0x150766[_0x3bee('0x18')](_0x4f2066)[_0x3bee('0x2b')](_0x239fa4);};}exports[_0x3bee('0x2c')]=function(_0x3433aa,_0x559c2b){var _0x564e45={},_0x3fbc8c={},_0x1e1529={'count':0x0,'rows':[]};var _0x10bae0=_[_0x3bee('0x2d')](db['VoiceMail']['rawAttributes'],function(_0x38f93c){return{'name':_0x38f93c[_0x3bee('0x2e')],'type':_0x38f93c['type']['key']};});_0x3fbc8c[_0x3bee('0x2f')]=_[_0x3bee('0x2d')](_0x10bae0,_0x3bee('0x2a'));_0x3fbc8c[_0x3bee('0x30')]=_[_0x3bee('0x31')](_0x3433aa[_0x3bee('0x30')]);_0x3fbc8c[_0x3bee('0x32')]=_[_0x3bee('0x33')](_0x3fbc8c[_0x3bee('0x2f')],_0x3fbc8c[_0x3bee('0x30')]);_0x564e45['attributes']=_['intersection'](_0x3fbc8c[_0x3bee('0x2f')],qs['fields'](_0x3433aa['query'][_0x3bee('0x34')]));_0x564e45[_0x3bee('0x35')]=_0x564e45[_0x3bee('0x35')][_0x3bee('0x36')]?_0x564e45[_0x3bee('0x35')]:_0x3fbc8c[_0x3bee('0x2f')];if(!_0x3433aa[_0x3bee('0x30')][_0x3bee('0x37')]('nolimit')){_0x564e45[_0x3bee('0x1d')]=qs[_0x3bee('0x1d')](_0x3433aa['query'][_0x3bee('0x1d')]);_0x564e45[_0x3bee('0x1a')]=qs[_0x3bee('0x1a')](_0x3433aa[_0x3bee('0x30')][_0x3bee('0x1a')]);}_0x564e45['order']=qs['sort'](_0x3433aa[_0x3bee('0x30')][_0x3bee('0x38')]);_0x564e45[_0x3bee('0x39')]=qs[_0x3bee('0x32')](_[_0x3bee('0x3a')](_0x3433aa[_0x3bee('0x30')],_0x3fbc8c[_0x3bee('0x32')]),_0x10bae0);if(_0x3433aa[_0x3bee('0x30')][_0x3bee('0x3b')]){_0x564e45[_0x3bee('0x39')]=_[_0x3bee('0x3c')](_0x564e45[_0x3bee('0x39')],{'$or':_['map'](_0x10bae0,function(_0xaceed4){if(_0xaceed4[_0x3bee('0x3d')]!==_0x3bee('0x3e')){var _0x45cf81={};_0x45cf81[_0xaceed4[_0x3bee('0x2a')]]={'$like':'%'+_0x3433aa[_0x3bee('0x30')][_0x3bee('0x3b')]+'%'};return _0x45cf81;}})});}_0x564e45=_[_0x3bee('0x3c')]({},_0x564e45,_0x3433aa[_0x3bee('0x3f')]);var _0x12ba6f={'where':_0x564e45[_0x3bee('0x39')]};return db[_0x3bee('0x40')][_0x3bee('0x1c')](_0x12ba6f)['then'](function(_0x2b773d){_0x1e1529[_0x3bee('0x1c')]=_0x2b773d;if(_0x3433aa[_0x3bee('0x30')][_0x3bee('0x41')]){_0x564e45[_0x3bee('0x42')]=[{'all':!![]}];}return db[_0x3bee('0x40')][_0x3bee('0x43')](_0x564e45);})[_0x3bee('0x24')](function(_0x5d9e1b){_0x1e1529[_0x3bee('0x44')]=_0x5d9e1b;return _0x1e1529;})[_0x3bee('0x24')](respondWithFilteredResult(_0x559c2b,_0x564e45))[_0x3bee('0x45')](handleError(_0x559c2b,null));};exports['show']=function(_0x4567f2,_0x57113b){var _0x2b1677={'raw':!![],'where':{'id':_0x4567f2['params']['id']}},_0x48325e={};_0x48325e[_0x3bee('0x2f')]=_[_0x3bee('0x31')](db[_0x3bee('0x40')][_0x3bee('0x46')]);_0x48325e[_0x3bee('0x30')]=_['keys'](_0x4567f2['query']);_0x48325e[_0x3bee('0x32')]=_['intersection'](_0x48325e[_0x3bee('0x2f')],_0x48325e['query']);_0x2b1677[_0x3bee('0x35')]=_['intersection'](_0x48325e[_0x3bee('0x2f')],qs[_0x3bee('0x34')](_0x4567f2[_0x3bee('0x30')][_0x3bee('0x34')]));_0x2b1677['attributes']=_0x2b1677['attributes'][_0x3bee('0x36')]?_0x2b1677['attributes']:_0x48325e['model'];if(_0x4567f2['query'][_0x3bee('0x41')]){_0x2b1677['include']=[{'all':!![]}];}_0x2b1677=_[_0x3bee('0x3c')]({},_0x2b1677,_0x4567f2[_0x3bee('0x3f')]);return db[_0x3bee('0x40')]['find'](_0x2b1677)[_0x3bee('0x24')](handleEntityNotFound(_0x57113b,null))['then'](respondWithResult(_0x57113b,null))[_0x3bee('0x45')](handleError(_0x57113b,null));};exports['create']=function(_0x26ccd7,_0x16b096){return db[_0x3bee('0x40')]['create'](_0x26ccd7[_0x3bee('0x47')],{})[_0x3bee('0x24')](function(_0x477de2){var _0x504382=_0x26ccd7['user'][_0x3bee('0x26')]({'plain':!![]});if(!_0x504382)throw new Error(_0x3bee('0x48'));if(_0x504382[_0x3bee('0x49')]===_0x3bee('0x4a')){var _0x3b5d7a=_0x477de2[_0x3bee('0x26')]({'plain':!![]});var _0x4005a3='Voicemails';return db[_0x3bee('0x4b')][_0x3bee('0x4c')]({'where':{'name':_0x4005a3,'userProfileId':_0x504382['userProfileId']},'raw':!![]})['then'](function(_0x3730c5){if(_0x3730c5&&_0x3730c5['autoAssociation']===0x0){return db[_0x3bee('0x4d')][_0x3bee('0x4e')]({'name':_0x3b5d7a[_0x3bee('0x2a')],'resourceId':_0x3b5d7a['id'],'type':_0x3730c5['name'],'sectionId':_0x3730c5['id']},{})[_0x3bee('0x24')](function(){return _0x477de2;});}else{return _0x477de2;}})[_0x3bee('0x45')](function(_0x127cb8){logger['error'](_0x3bee('0x4f'),_0x127cb8);throw _0x127cb8;});}return _0x477de2;})[_0x3bee('0x24')](respondWithResult(_0x16b096,0xc9))['catch'](handleError(_0x16b096,null));};exports[_0x3bee('0x23')]=function(_0x14940e,_0x53c881){if(_0x14940e[_0x3bee('0x47')]['id']){delete _0x14940e[_0x3bee('0x47')]['id'];}return db[_0x3bee('0x40')][_0x3bee('0x4c')]({'where':{'id':_0x14940e[_0x3bee('0x50')]['id']}})[_0x3bee('0x24')](handleEntityNotFound(_0x53c881,null))[_0x3bee('0x24')](saveUpdates(_0x14940e[_0x3bee('0x47')],null))['then'](respondWithResult(_0x53c881,null))['catch'](handleError(_0x53c881,null));};exports[_0x3bee('0x25')]=function(_0x5e13e8,_0x38b82a){return db[_0x3bee('0x40')][_0x3bee('0x4c')]({'where':{'id':_0x5e13e8['params']['id']}})[_0x3bee('0x24')](handleEntityNotFound(_0x38b82a,null))[_0x3bee('0x24')](removeEntity(_0x38b82a,null))[_0x3bee('0x45')](handleError(_0x38b82a,null));};exports['getMessages']=function(_0x19cbb8,_0x52a327,_0x3cb900){return db[_0x3bee('0x40')][_0x3bee('0x51')]({'where':{'id':_0x19cbb8['params']['id']}})[_0x3bee('0x24')](handleEntityNotFound(_0x52a327,null))[_0x3bee('0x24')](function(_0x282300){var _0x526551;var _0x5d95a7={},_0xb9f53e={};_0xb9f53e[_0x3bee('0x2f')]=_[_0x3bee('0x31')](db['VoiceMailMessage']['rawAttributes']);_0xb9f53e[_0x3bee('0x30')]=_['keys'](_0x19cbb8['query']);_0xb9f53e[_0x3bee('0x32')]=_[_0x3bee('0x33')](_0xb9f53e[_0x3bee('0x2f')],_0xb9f53e['query']);_0x5d95a7['attributes']=_[_0x3bee('0x33')](_0xb9f53e[_0x3bee('0x2f')],qs['fields'](_0x19cbb8[_0x3bee('0x30')]['fields']));_0x5d95a7[_0x3bee('0x35')]=_0x5d95a7[_0x3bee('0x35')][_0x3bee('0x36')]?_0x5d95a7[_0x3bee('0x35')]:_0xb9f53e[_0x3bee('0x2f')];if(!_0x19cbb8[_0x3bee('0x30')][_0x3bee('0x37')](_0x3bee('0x52'))){_0x5d95a7[_0x3bee('0x1d')]=qs[_0x3bee('0x1d')](_0x19cbb8[_0x3bee('0x30')]['limit']);_0x5d95a7['offset']=qs['offset'](_0x19cbb8[_0x3bee('0x30')][_0x3bee('0x1a')]);}_0x5d95a7[_0x3bee('0x53')]=qs[_0x3bee('0x38')](_0x19cbb8['query'][_0x3bee('0x38')]);_0x5d95a7[_0x3bee('0x39')]=qs['filters'](_['pick'](_0x19cbb8[_0x3bee('0x30')],_0xb9f53e[_0x3bee('0x32')]));if(_0x19cbb8[_0x3bee('0x30')]['filter']){_0x5d95a7[_0x3bee('0x39')]=_[_0x3bee('0x3c')](_0x5d95a7[_0x3bee('0x39')],{'$or':_['map'](_0x5d95a7[_0x3bee('0x35')],function(_0x412e0d){var _0x1bfb3a={};_0x1bfb3a[_0x412e0d]={'$like':'%'+_0x19cbb8[_0x3bee('0x30')]['filter']+'%'};return _0x1bfb3a;})});}_0x5d95a7['where']=_[_0x3bee('0x3c')](_0x5d95a7[_0x3bee('0x39')],{'mailboxuser':_0x282300[_0x3bee('0x54')]});_0x5d95a7=_[_0x3bee('0x3c')]({},_0x5d95a7,_0x19cbb8[_0x3bee('0x3f')]);return db['VoiceMailMessage'][_0x3bee('0x55')](_0x5d95a7)['then'](respondWithFilteredResult(_0x52a327,_0x5d95a7));})[_0x3bee('0x45')](handleError(_0x52a327,null));};
\ No newline at end of file
index f8bbf35..8baedca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2a=['lodash','../../config/logger','api','bluebird','request-promise','../../config/environment','./voiceMail.attributes','define','VoiceMail','voice_voicemail','mailbox'];(function(_0x31af4b,_0x2c2106){var _0x496bd8=function(_0xb4f2b7){while(--_0xb4f2b7){_0x31af4b['push'](_0x31af4b['shift']());}};_0x496bd8(++_0x2c2106);}(_0x5f2a,0x108));var _0xa5f2=function(_0x52bf54,_0x248cf2){_0x52bf54=_0x52bf54-0x0;var _0x4a4745=_0x5f2a[_0x52bf54];return _0x4a4745;};'use strict';var _=require(_0xa5f2('0x0'));var util=require('util');var logger=require(_0xa5f2('0x1'))(_0xa5f2('0x2'));var moment=require('moment');var BPromise=require(_0xa5f2('0x3'));var rp=require(_0xa5f2('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xa5f2('0x5'));var attributes=require(_0xa5f2('0x6'));module['exports']=function(_0x1fbb36,_0x52d34a){return _0x1fbb36[_0xa5f2('0x7')](_0xa5f2('0x8'),attributes,{'tableName':_0xa5f2('0x9'),'paranoid':![],'indexes':[{'name':'mailbox_context','fields':[_0xa5f2('0xa'),'context']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe28e=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','VoiceMail','mailbox_context','context','lodash'];(function(_0x2197ba,_0x5677fc){var _0x4820ad=function(_0x31846d){while(--_0x31846d){_0x2197ba['push'](_0x2197ba['shift']());}};_0x4820ad(++_0x5677fc);}(_0xe28e,0x1ac));var _0xee28=function(_0x186179,_0xf3318d){_0x186179=_0x186179-0x0;var _0x4aca18=_0xe28e[_0x186179];return _0x4aca18;};'use strict';var _=require(_0xee28('0x0'));var util=require(_0xee28('0x1'));var logger=require(_0xee28('0x2'))(_0xee28('0x3'));var moment=require('moment');var BPromise=require(_0xee28('0x4'));var rp=require(_0xee28('0x5'));var fs=require('fs');var path=require(_0xee28('0x6'));var rimraf=require(_0xee28('0x7'));var config=require(_0xee28('0x8'));var attributes=require('./voiceMail.attributes');module[_0xee28('0x9')]=function(_0x21f55f,_0xff97db){return _0x21f55f['define'](_0xee28('0xa'),attributes,{'tableName':'voice_voicemail','paranoid':![],'indexes':[{'name':_0xee28('0xb'),'fields':['mailbox',_0xee28('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 3fa6438..b724f05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4d0=['info','VoiceMail,\x20%s,\x20%s','request\x20sent','debug','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error','message','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x18aaaf,_0x385db6){var _0x52d892=function(_0x1ac6da){while(--_0x1ac6da){_0x18aaaf['push'](_0x18aaaf['shift']());}};_0x52d892(++_0x385db6);}(_0xf4d0,0x120));var _0x0f4d=function(_0x322d52,_0x41b43b){_0x322d52=_0x322d52-0x0;var _0x291fa5=_0xf4d0[_0x322d52];return _0x291fa5;};'use strict';var _=require(_0x0f4d('0x0'));var util=require(_0x0f4d('0x1'));var moment=require('moment');var BPromise=require(_0x0f4d('0x2'));var rs=require(_0x0f4d('0x3'));var fs=require('fs');var Redis=require(_0x0f4d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x0f4d('0x5'));var logger=require(_0x0f4d('0x6'))(_0x0f4d('0x7'));var config=require(_0x0f4d('0x8'));var jayson=require(_0x0f4d('0x9'));var client=jayson[_0x0f4d('0xa')][_0x0f4d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x31077e,_0x4ccb1a,_0x4b4094){return new BPromise(function(_0x220293,_0x55099b){return client['request'](_0x31077e,_0x4b4094)['then'](function(_0x3f9971){logger[_0x0f4d('0xc')](_0x0f4d('0xd'),_0x4ccb1a,_0x0f4d('0xe'));logger[_0x0f4d('0xf')](_0x0f4d('0x10'),_0x4ccb1a,_0x0f4d('0xe'),JSON[_0x0f4d('0x11')](_0x3f9971));if(_0x3f9971[_0x0f4d('0x12')]){if(_0x3f9971[_0x0f4d('0x12')]['code']===0x1f4){logger['error']('VoiceMail,\x20%s,\x20%s',_0x4ccb1a,_0x3f9971[_0x0f4d('0x12')][_0x0f4d('0x13')]);return _0x55099b(_0x3f9971[_0x0f4d('0x12')][_0x0f4d('0x13')]);}logger[_0x0f4d('0x12')](_0x0f4d('0xd'),_0x4ccb1a,_0x3f9971['error'][_0x0f4d('0x13')]);return _0x220293(_0x3f9971[_0x0f4d('0x12')]['message']);}else{logger['info'](_0x0f4d('0xd'),_0x4ccb1a,_0x0f4d('0xe'));_0x220293(_0x3f9971['result'][_0x0f4d('0x13')]);}})['catch'](function(_0x3992e2){logger[_0x0f4d('0x12')](_0x0f4d('0xd'),_0x4ccb1a,_0x3992e2);_0x55099b(_0x3992e2);});});}
\ No newline at end of file
+var _0xd850=['code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','request','then','info','VoiceMail,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x3df93e,_0x5af13a){var _0x2d4f2a=function(_0x14c85c){while(--_0x14c85c){_0x3df93e['push'](_0x3df93e['shift']());}};_0x2d4f2a(++_0x5af13a);}(_0xd850,0x1d0));var _0x0d85=function(_0x15d756,_0x2d57ff){_0x15d756=_0x15d756-0x0;var _0x486a0c=_0xd850[_0x15d756];return _0x486a0c;};'use strict';var _=require(_0x0d85('0x0'));var util=require(_0x0d85('0x1'));var moment=require(_0x0d85('0x2'));var BPromise=require(_0x0d85('0x3'));var rs=require(_0x0d85('0x4'));var fs=require('fs');var Redis=require(_0x0d85('0x5'));var db=require(_0x0d85('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x0d85('0x7'))(_0x0d85('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x473c26,_0x341c82,_0x3c4a51){return new BPromise(function(_0x5daa40,_0x164779){return client[_0x0d85('0x9')](_0x473c26,_0x3c4a51)[_0x0d85('0xa')](function(_0x47a718){logger[_0x0d85('0xb')](_0x0d85('0xc'),_0x341c82,_0x0d85('0xd'));logger['debug']('VoiceMail,\x20%s,\x20%s,\x20%s',_0x341c82,_0x0d85('0xd'),JSON[_0x0d85('0xe')](_0x47a718));if(_0x47a718[_0x0d85('0xf')]){if(_0x47a718['error'][_0x0d85('0x10')]===0x1f4){logger['error'](_0x0d85('0xc'),_0x341c82,_0x47a718[_0x0d85('0xf')]['message']);return _0x164779(_0x47a718[_0x0d85('0xf')]['message']);}logger['error'](_0x0d85('0xc'),_0x341c82,_0x47a718[_0x0d85('0xf')]['message']);return _0x5daa40(_0x47a718[_0x0d85('0xf')][_0x0d85('0x11')]);}else{logger[_0x0d85('0xb')](_0x0d85('0xc'),_0x341c82,_0x0d85('0xd'));_0x5daa40(_0x47a718[_0x0d85('0x12')][_0x0d85('0x11')]);}})[_0x0d85('0x13')](function(_0x477265){logger[_0x0d85('0xf')]('VoiceMail,\x20%s,\x20%s',_0x341c82,_0x477265);_0x164779(_0x477265);});});}
\ No newline at end of file
index 7bef335..c464a8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef0c=['destroy','exports','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMailMessage.controller','get','index','/:id','isAuthenticated','show','create','put','update','delete'];(function(_0x37cd61,_0x30fb86){var _0x443360=function(_0xfad8b7){while(--_0xfad8b7){_0x37cd61['push'](_0x37cd61['shift']());}};_0x443360(++_0x30fb86);}(_0xef0c,0x1f0));var _0xcef0=function(_0x411cb9,_0x264b9c){_0x411cb9=_0x411cb9-0x0;var _0x26981a=_0xef0c[_0x411cb9];return _0x26981a;};'use strict';var multer=require('multer');var util=require(_0xcef0('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xcef0('0x1'));var router=express[_0xcef0('0x2')]();var fs_extra=require(_0xcef0('0x3'));var auth=require(_0xcef0('0x4'));var interaction=require(_0xcef0('0x5'));var config=require(_0xcef0('0x6'));var controller=require(_0xcef0('0x7'));router[_0xcef0('0x8')]('/',auth['isAuthenticated'](),controller[_0xcef0('0x9')]);router[_0xcef0('0x8')](_0xcef0('0xa'),auth[_0xcef0('0xb')](),controller[_0xcef0('0xc')]);router['get']('/:id/download',auth[_0xcef0('0xb')](),controller['download']);router['post']('/',auth[_0xcef0('0xb')](),controller[_0xcef0('0xd')]);router[_0xcef0('0xe')](_0xcef0('0xa'),auth['isAuthenticated'](),controller[_0xcef0('0xf')]);router[_0xcef0('0x10')](_0xcef0('0xa'),auth[_0xcef0('0xb')](),controller[_0xcef0('0x11')]);module[_0xcef0('0x12')]=router;
\ No newline at end of file
+var _0xda33=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','download','post','create','put','delete','destroy','util','path','express'];(function(_0x4d02cf,_0x245f68){var _0x543b18=function(_0x4bb088){while(--_0x4bb088){_0x4d02cf['push'](_0x4d02cf['shift']());}};_0x543b18(++_0x245f68);}(_0xda33,0x7b));var _0x3da3=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xda33[_0x1ac595];return _0x455fff;};'use strict';var multer=require('multer');var util=require(_0x3da3('0x0'));var path=require(_0x3da3('0x1'));var timeout=require('connect-timeout');var express=require(_0x3da3('0x2'));var router=express[_0x3da3('0x3')]();var fs_extra=require(_0x3da3('0x4'));var auth=require(_0x3da3('0x5'));var interaction=require(_0x3da3('0x6'));var config=require(_0x3da3('0x7'));var controller=require('./voiceMailMessage.controller');router[_0x3da3('0x8')]('/',auth[_0x3da3('0x9')](),controller[_0x3da3('0xa')]);router[_0x3da3('0x8')](_0x3da3('0xb'),auth[_0x3da3('0x9')](),controller['show']);router[_0x3da3('0x8')]('/:id/download',auth[_0x3da3('0x9')](),controller[_0x3da3('0xc')]);router[_0x3da3('0xd')]('/',auth[_0x3da3('0x9')](),controller[_0x3da3('0xe')]);router[_0x3da3('0xf')](_0x3da3('0xb'),auth[_0x3da3('0x9')](),controller['update']);router[_0x3da3('0x10')](_0x3da3('0xb'),auth[_0x3da3('0x9')](),controller[_0x3da3('0x11')]);module['exports']=router;
\ No newline at end of file
index b131359..894864b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0c3=['BLOB','long','TIMESTAMP','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','getDataValue','STRING'];(function(_0x2bcbe6,_0x27444d){var _0x28baee=function(_0x2f5249){while(--_0x2f5249){_0x2bcbe6['push'](_0x2bcbe6['shift']());}};_0x28baee(++_0x27444d);}(_0xe0c3,0x146));var _0x3e0c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe0c3[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0x3e0c('0x0'));module['exports']={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x24f66a){return this[_0x3e0c('0x1')]('id');}},'msgnum':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize['STRING'],'defaultValue':''},'context':{'type':Sequelize[_0x3e0c('0x2')],'defaultValue':''},'macrocontext':{'type':Sequelize['STRING'],'defaultValue':''},'callerid':{'type':Sequelize[_0x3e0c('0x2')],'defaultValue':''},'origtime':{'type':Sequelize[_0x3e0c('0x2')],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x3e0c('0x2')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x3e0c('0x2')],'defaultValue':''},'recording':{'type':Sequelize[_0x3e0c('0x3')](_0x3e0c('0x4')),'defaultValue':null},'flag':{'type':Sequelize[_0x3e0c('0x2')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x3e0c('0x2')],'defaultValue':''},'stamp':{'type':_0x3e0c('0x5'),'defaultValue':Sequelize['literal'](_0x3e0c('0x6'))}};
\ No newline at end of file
+var _0x80a0=['VIRTUAL','INTEGER','STRING','BLOB','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','exports'];(function(_0x491068,_0x5dbeab){var _0x232830=function(_0x359704){while(--_0x359704){_0x491068['push'](_0x491068['shift']());}};_0x232830(++_0x5dbeab);}(_0x80a0,0x164));var _0x080a=function(_0x42c0ed,_0x5248aa){_0x42c0ed=_0x42c0ed-0x0;var _0x4ad9b0=_0x80a0[_0x42c0ed];return _0x4ad9b0;};'use strict';var Sequelize=require('sequelize');module[_0x080a('0x0')]={'name':{'type':Sequelize[_0x080a('0x1')],'get':function(_0x51750c){return this['getDataValue']('id');}},'msgnum':{'type':Sequelize[_0x080a('0x2')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x080a('0x3')],'defaultValue':''},'context':{'type':Sequelize['STRING'],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x080a('0x3')],'defaultValue':''},'callerid':{'type':Sequelize[_0x080a('0x3')],'defaultValue':''},'origtime':{'type':Sequelize[_0x080a('0x3')],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x080a('0x3')],'defaultValue':''},'recording':{'type':Sequelize[_0x080a('0x4')]('long'),'defaultValue':null},'flag':{'type':Sequelize[_0x080a('0x3')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x080a('0x3')],'defaultValue':''},'stamp':{'type':'TIMESTAMP','defaultValue':Sequelize[_0x080a('0x5')](_0x080a('0x6'))}};
\ No newline at end of file
index 3f6f49e..16b1430 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x262b=['attachment','Content-Disposition','.wav\x22','eml-format','rimraf','fast-json-patch','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','apply','reject','update','then','end','error','name','send','map','VoiceMailMessage','rawAttributes','type','key','model','differenceBy','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','destroy','msg_id','recording','Sequelize','ValidationError','audio/wav'];(function(_0x311c35,_0x534915){var _0x5cc50c=function(_0x3ad680){while(--_0x3ad680){_0x311c35['push'](_0x311c35['shift']());}};_0x5cc50c(++_0x534915);}(_0x262b,0x9d));var _0xb262=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x262b[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0xb262('0x0'));var rimraf=require(_0xb262('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb262('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb262('0x3'));var Mustache=require(_0xb262('0x4'));var util=require('util');var path=require(_0xb262('0x5'));var sox=require(_0xb262('0x6'));var csv=require(_0xb262('0x7'));var ejs=require(_0xb262('0x8'));var fs=require('fs');var fs_extra=require(_0xb262('0x9'));var _=require(_0xb262('0xa'));var squel=require(_0xb262('0xb'));var crypto=require(_0xb262('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb262('0xd'));var authService=require(_0xb262('0xe'));var qs=require(_0xb262('0xf'));var as=require(_0xb262('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb262('0x11'))('api');var utils=require(_0xb262('0x12'));var config=require(_0xb262('0x13'));var licenseUtil=require(_0xb262('0x14'));var db=require(_0xb262('0x15'))['db'];function respondWithStatusCode(_0x10341c,_0x293730){_0x293730=_0x293730||0xcc;return function(_0x1ead85){if(_0x1ead85){return _0x10341c['sendStatus'](_0x293730);}return _0x10341c[_0xb262('0x16')](_0x293730)['end']();};}function respondWithResult(_0x59d552,_0x2c3149){_0x2c3149=_0x2c3149||0xc8;return function(_0xc29cbc){if(_0xc29cbc){return _0x59d552['status'](_0x2c3149)[_0xb262('0x17')](_0xc29cbc);}};}function respondWithFilteredResult(_0x3107a1,_0x3d923e){return function(_0x367843){if(_0x367843){var _0x90edd9=typeof _0x3d923e[_0xb262('0x18')]===_0xb262('0x19')&&typeof _0x3d923e[_0xb262('0x1a')]==='undefined';var _0x2613bc=_0x367843[_0xb262('0x1b')];var _0x3ebef5=_0x90edd9?0x0:_0x3d923e[_0xb262('0x18')];var _0x50803a=_0x90edd9?_0x367843[_0xb262('0x1b')]:_0x3d923e[_0xb262('0x18')]+_0x3d923e[_0xb262('0x1a')];var _0x405666;if(_0x50803a>=_0x2613bc){_0x50803a=_0x2613bc;_0x405666=0xc8;}else{_0x405666=0xce;}_0x3107a1[_0xb262('0x16')](_0x405666);return _0x3107a1[_0xb262('0x1c')]('Content-Range',_0x3ebef5+'-'+_0x50803a+'/'+_0x2613bc)[_0xb262('0x17')](_0x367843);}return null;};}function patchUpdates(_0x6f5c6d){return function(_0x3dca59){try{jsonpatch[_0xb262('0x1d')](_0x3dca59,_0x6f5c6d,!![]);}catch(_0x260115){return BPromise[_0xb262('0x1e')](_0x260115);}return _0x3dca59['save']();};}function saveUpdates(_0x50f88f,_0x418e69){return function(_0x4149e3){if(_0x4149e3){return _0x4149e3[_0xb262('0x1f')](_0x50f88f)[_0xb262('0x20')](function(_0x37b5dd){return _0x37b5dd;});}return null;};}function removeEntity(_0x168869,_0x592897){return function(_0x20eb30){if(_0x20eb30){return _0x20eb30['destroy']()[_0xb262('0x20')](function(){_0x168869[_0xb262('0x16')](0xcc)[_0xb262('0x21')]();});}};}function handleEntityNotFound(_0x44aa09,_0x591739){return function(_0x3f563a){if(!_0x3f563a){_0x44aa09['sendStatus'](0x194);}return _0x3f563a;};}function handleError(_0x39e1d0,_0x3d093f){_0x3d093f=_0x3d093f||0x1f4;return function(_0x102b60){logger[_0xb262('0x22')](_0x102b60['stack']);if(_0x102b60[_0xb262('0x23')]){delete _0x102b60[_0xb262('0x23')];}_0x39e1d0['status'](_0x3d093f)[_0xb262('0x24')](_0x102b60);};}exports['index']=function(_0x22ba5c,_0x599d13){var _0x5dacc2={},_0x80cfda={},_0x585813={'count':0x0,'rows':[]};var _0x1f03da=_[_0xb262('0x25')](db[_0xb262('0x26')][_0xb262('0x27')],function(_0x396a1a){return{'name':_0x396a1a['fieldName'],'type':_0x396a1a[_0xb262('0x28')][_0xb262('0x29')]};});_0x80cfda[_0xb262('0x2a')]=_[_0xb262('0x2b')](_[_0xb262('0x25')](_0x1f03da,'name'),[_0xb262('0x23')]);_0x80cfda[_0xb262('0x2c')]=_[_0xb262('0x2d')](_0x22ba5c[_0xb262('0x2c')]);_0x80cfda['filters']=_[_0xb262('0x2e')](_0x80cfda[_0xb262('0x2a')],_0x80cfda[_0xb262('0x2c')]);_0x5dacc2[_0xb262('0x2f')]=_[_0xb262('0x2e')](_0x80cfda[_0xb262('0x2a')],qs['fields'](_0x22ba5c[_0xb262('0x2c')][_0xb262('0x30')]));_0x5dacc2[_0xb262('0x2f')]=_0x5dacc2[_0xb262('0x2f')][_0xb262('0x31')]?_0x5dacc2[_0xb262('0x2f')]:_0x80cfda[_0xb262('0x2a')];if(!_0x22ba5c[_0xb262('0x2c')][_0xb262('0x32')](_0xb262('0x33'))){_0x5dacc2['limit']=qs[_0xb262('0x1a')](_0x22ba5c['query'][_0xb262('0x1a')]);_0x5dacc2[_0xb262('0x18')]=qs[_0xb262('0x18')](_0x22ba5c['query']['offset']);}_0x5dacc2[_0xb262('0x34')]=qs[_0xb262('0x35')](_0x22ba5c[_0xb262('0x2c')][_0xb262('0x35')]);_0x5dacc2[_0xb262('0x36')]=qs['filters'](_[_0xb262('0x37')](_0x22ba5c[_0xb262('0x2c')],_0x80cfda['filters']),_0x1f03da);if(_0x22ba5c[_0xb262('0x2c')][_0xb262('0x38')]){_0x5dacc2[_0xb262('0x36')]=_[_0xb262('0x39')](_0x5dacc2[_0xb262('0x36')],{'$or':_['map'](_0x1f03da,function(_0x4a68c6){if(_0x4a68c6[_0xb262('0x28')]!==_0xb262('0x3a')){var _0x290214={};_0x290214[_0x4a68c6[_0xb262('0x23')]]={'$like':'%'+_0x22ba5c['query'][_0xb262('0x38')]+'%'};return _0x290214;}})});}_0x5dacc2=_[_0xb262('0x39')]({},_0x5dacc2,_0x22ba5c[_0xb262('0x3b')]);var _0x3ab6fd={'where':_0x5dacc2[_0xb262('0x36')]};return db[_0xb262('0x26')][_0xb262('0x1b')](_0x3ab6fd)[_0xb262('0x20')](function(_0x5ea7f1){_0x585813[_0xb262('0x1b')]=_0x5ea7f1;if(_0x22ba5c[_0xb262('0x2c')][_0xb262('0x3c')]){_0x5dacc2[_0xb262('0x3d')]=[{'all':!![]}];}return db[_0xb262('0x26')][_0xb262('0x3e')](_0x5dacc2);})[_0xb262('0x20')](function(_0x15097e){_0x585813['rows']=_0x15097e;return _0x585813;})[_0xb262('0x20')](respondWithFilteredResult(_0x599d13,_0x5dacc2))[_0xb262('0x3f')](handleError(_0x599d13,null));};exports[_0xb262('0x40')]=function(_0x2e8f81,_0x4bce07){var _0x1ee9de={'raw':!![],'where':{'id':_0x2e8f81[_0xb262('0x41')]['id']}},_0x4e00ef={};_0x4e00ef[_0xb262('0x2a')]=_[_0xb262('0x2d')](db[_0xb262('0x26')][_0xb262('0x27')]);_0x4e00ef[_0xb262('0x2c')]=_[_0xb262('0x2d')](_0x2e8f81[_0xb262('0x2c')]);_0x4e00ef['filters']=_[_0xb262('0x2e')](_0x4e00ef[_0xb262('0x2a')],_0x4e00ef[_0xb262('0x2c')]);_0x1ee9de[_0xb262('0x2f')]=_[_0xb262('0x2e')](_0x4e00ef[_0xb262('0x2a')],qs['fields'](_0x2e8f81[_0xb262('0x2c')][_0xb262('0x30')]));_0x1ee9de[_0xb262('0x2f')]=_0x1ee9de[_0xb262('0x2f')][_0xb262('0x31')]?_0x1ee9de[_0xb262('0x2f')]:_0x4e00ef[_0xb262('0x2a')];if(_0x2e8f81[_0xb262('0x2c')]['includeAll']){_0x1ee9de[_0xb262('0x3d')]=[{'all':!![]}];}_0x1ee9de=_['merge']({},_0x1ee9de,_0x2e8f81[_0xb262('0x3b')]);return db['VoiceMailMessage'][_0xb262('0x42')](_0x1ee9de)[_0xb262('0x20')](handleEntityNotFound(_0x4bce07,null))[_0xb262('0x20')](respondWithResult(_0x4bce07,null))[_0xb262('0x3f')](handleError(_0x4bce07,null));};exports[_0xb262('0x43')]=function(_0x1d7dc1,_0xaefab6){return db[_0xb262('0x26')][_0xb262('0x43')](_0x1d7dc1['body'],{})[_0xb262('0x20')](respondWithResult(_0xaefab6,0xc9))[_0xb262('0x3f')](handleError(_0xaefab6,null));};exports[_0xb262('0x1f')]=function(_0x43982b,_0x237f31){if(_0x43982b['body']['id']){delete _0x43982b['body']['id'];}return db[_0xb262('0x26')][_0xb262('0x42')]({'where':{'id':_0x43982b[_0xb262('0x41')]['id']}})[_0xb262('0x20')](handleEntityNotFound(_0x237f31,null))[_0xb262('0x20')](saveUpdates(_0x43982b['body'],null))[_0xb262('0x20')](respondWithResult(_0x237f31,null))['catch'](handleError(_0x237f31,null));};exports[_0xb262('0x44')]=function(_0x5bd2ed,_0x48f64d){return db['VoiceMailMessage'][_0xb262('0x42')]({'where':{'id':_0x5bd2ed[_0xb262('0x41')]['id']}})[_0xb262('0x20')](handleEntityNotFound(_0x48f64d,null))[_0xb262('0x20')](removeEntity(_0x48f64d,null))['catch'](handleError(_0x48f64d,null));};exports['download']=function(_0x18181a,_0x540185,_0xceb214){return db['VoiceMailMessage']['find']({'where':{'id':_0x18181a[_0xb262('0x41')]['id']},'attributes':['id','recording',_0xb262('0x45')]})[_0xb262('0x20')](handleEntityNotFound(_0x540185,null))[_0xb262('0x20')](function(_0x1ba136){if(_0x1ba136){if(!_0x1ba136[_0xb262('0x46')]){throw new db[(_0xb262('0x47'))][(_0xb262('0x48'))]('VoiceMailMessage\x20not\x20found');}var _0x452242={'Content-Type':_0xb262('0x49'),'Content-Disposition':_0xb262('0x4a')};if(_0x1ba136[_0xb262('0x45')]){_0x452242[_0xb262('0x4b')]='attachment;\x20filename=\x22'+_0x1ba136[_0xb262('0x45')]+_0xb262('0x4c');}_0x540185[_0xb262('0x1c')](_0x452242);return _0x540185[_0xb262('0x24')](new Buffer(_0x1ba136['recording']));}})['catch'](handleError(_0x540185,null));};
\ No newline at end of file
+var _0xd7e9=['to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','then','destroy','name','send','index','VoiceMailMessage','rawAttributes','fieldName','type','query','filters','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','map','filter','merge','options','includeAll','include','findAll','rows','catch','params','keys','intersection','find','create','body','update','download','recording','msg_id','VoiceMailMessage\x20not\x20found','audio/wav','attachment','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','set','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','ejs','lodash','squel','crypto','jsforce'];(function(_0x2a974b,_0x5524bf){var _0x3879e9=function(_0x1ec9d6){while(--_0x1ec9d6){_0x2a974b['push'](_0x2a974b['shift']());}};_0x3879e9(++_0x5524bf);}(_0xd7e9,0x1c2));var _0x9d7e=function(_0x1c071f,_0x4f284c){_0x1c071f=_0x1c071f-0x0;var _0x3007a6=_0xd7e9[_0x1c071f];return _0x3007a6;};'use strict';var emlformat=require(_0x9d7e('0x0'));var rimraf=require(_0x9d7e('0x1'));var zipdir=require(_0x9d7e('0x2'));var jsonpatch=require(_0x9d7e('0x3'));var rp=require(_0x9d7e('0x4'));var moment=require('moment');var BPromise=require(_0x9d7e('0x5'));var Mustache=require(_0x9d7e('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x9d7e('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9d7e('0x8'));var squel=require(_0x9d7e('0x9'));var crypto=require(_0x9d7e('0xa'));var jsforce=require(_0x9d7e('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x9d7e('0xc'));var querystring=require('querystring');var Papa=require(_0x9d7e('0xd'));var Redis=require(_0x9d7e('0xe'));var authService=require(_0x9d7e('0xf'));var qs=require(_0x9d7e('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9d7e('0x11'));var logger=require('../../config/logger')(_0x9d7e('0x12'));var utils=require('../../config/utils');var config=require(_0x9d7e('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4cafa7,_0x143cc7){_0x143cc7=_0x143cc7||0xcc;return function(_0x3e5114){if(_0x3e5114){return _0x4cafa7[_0x9d7e('0x14')](_0x143cc7);}return _0x4cafa7[_0x9d7e('0x15')](_0x143cc7)[_0x9d7e('0x16')]();};}function respondWithResult(_0x509614,_0x1a49c7){_0x1a49c7=_0x1a49c7||0xc8;return function(_0x188c41){if(_0x188c41){return _0x509614[_0x9d7e('0x15')](_0x1a49c7)[_0x9d7e('0x17')](_0x188c41);}};}function respondWithFilteredResult(_0x486f5d,_0x2a0789){return function(_0x580812){if(_0x580812){var _0x41211d=typeof _0x2a0789[_0x9d7e('0x18')]===_0x9d7e('0x19')&&typeof _0x2a0789[_0x9d7e('0x1a')]===_0x9d7e('0x19');var _0x2e98fb=_0x580812[_0x9d7e('0x1b')];var _0x12d05c=_0x41211d?0x0:_0x2a0789[_0x9d7e('0x18')];var _0xd03b4f=_0x41211d?_0x580812['count']:_0x2a0789['offset']+_0x2a0789['limit'];var _0x2f89a7;if(_0xd03b4f>=_0x2e98fb){_0xd03b4f=_0x2e98fb;_0x2f89a7=0xc8;}else{_0x2f89a7=0xce;}_0x486f5d[_0x9d7e('0x15')](_0x2f89a7);return _0x486f5d['set'](_0x9d7e('0x1c'),_0x12d05c+'-'+_0xd03b4f+'/'+_0x2e98fb)[_0x9d7e('0x17')](_0x580812);}return null;};}function patchUpdates(_0x307c04){return function(_0x4bb4e0){try{jsonpatch[_0x9d7e('0x1d')](_0x4bb4e0,_0x307c04,!![]);}catch(_0x528ed7){return BPromise[_0x9d7e('0x1e')](_0x528ed7);}return _0x4bb4e0['save']();};}function saveUpdates(_0x12e0dd,_0x2fe16b){return function(_0x5e68f6){if(_0x5e68f6){return _0x5e68f6['update'](_0x12e0dd)[_0x9d7e('0x1f')](function(_0x537bc7){return _0x537bc7;});}return null;};}function removeEntity(_0xe83ffe,_0xcfea2b){return function(_0x3d08e3){if(_0x3d08e3){return _0x3d08e3[_0x9d7e('0x20')]()['then'](function(){_0xe83ffe['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ca035,_0x356bd6){return function(_0x2a7f2f){if(!_0x2a7f2f){_0x1ca035['sendStatus'](0x194);}return _0x2a7f2f;};}function handleError(_0x2aef98,_0x859619){_0x859619=_0x859619||0x1f4;return function(_0x15f4a3){logger['error'](_0x15f4a3['stack']);if(_0x15f4a3['name']){delete _0x15f4a3[_0x9d7e('0x21')];}_0x2aef98[_0x9d7e('0x15')](_0x859619)[_0x9d7e('0x22')](_0x15f4a3);};}exports[_0x9d7e('0x23')]=function(_0x168996,_0x335238){var _0x15f928={},_0x249af6={},_0x30240c={'count':0x0,'rows':[]};var _0x30a46e=_['map'](db[_0x9d7e('0x24')][_0x9d7e('0x25')],function(_0x1e09b3){return{'name':_0x1e09b3[_0x9d7e('0x26')],'type':_0x1e09b3[_0x9d7e('0x27')]['key']};});_0x249af6['model']=_['differenceBy'](_['map'](_0x30a46e,'name'),[_0x9d7e('0x21')]);_0x249af6[_0x9d7e('0x28')]=_['keys'](_0x168996['query']);_0x249af6[_0x9d7e('0x29')]=_['intersection'](_0x249af6[_0x9d7e('0x2a')],_0x249af6[_0x9d7e('0x28')]);_0x15f928[_0x9d7e('0x2b')]=_['intersection'](_0x249af6[_0x9d7e('0x2a')],qs['fields'](_0x168996[_0x9d7e('0x28')][_0x9d7e('0x2c')]));_0x15f928[_0x9d7e('0x2b')]=_0x15f928['attributes']['length']?_0x15f928[_0x9d7e('0x2b')]:_0x249af6[_0x9d7e('0x2a')];if(!_0x168996[_0x9d7e('0x28')][_0x9d7e('0x2d')](_0x9d7e('0x2e'))){_0x15f928[_0x9d7e('0x1a')]=qs['limit'](_0x168996[_0x9d7e('0x28')][_0x9d7e('0x1a')]);_0x15f928[_0x9d7e('0x18')]=qs[_0x9d7e('0x18')](_0x168996['query'][_0x9d7e('0x18')]);}_0x15f928[_0x9d7e('0x2f')]=qs['sort'](_0x168996['query'][_0x9d7e('0x30')]);_0x15f928[_0x9d7e('0x31')]=qs[_0x9d7e('0x29')](_[_0x9d7e('0x32')](_0x168996[_0x9d7e('0x28')],_0x249af6[_0x9d7e('0x29')]),_0x30a46e);if(_0x168996[_0x9d7e('0x28')]['filter']){_0x15f928[_0x9d7e('0x31')]=_['merge'](_0x15f928[_0x9d7e('0x31')],{'$or':_[_0x9d7e('0x33')](_0x30a46e,function(_0x839a91){if(_0x839a91[_0x9d7e('0x27')]!=='VIRTUAL'){var _0x6dbdb5={};_0x6dbdb5[_0x839a91[_0x9d7e('0x21')]]={'$like':'%'+_0x168996['query'][_0x9d7e('0x34')]+'%'};return _0x6dbdb5;}})});}_0x15f928=_[_0x9d7e('0x35')]({},_0x15f928,_0x168996[_0x9d7e('0x36')]);var _0xd63bda={'where':_0x15f928[_0x9d7e('0x31')]};return db[_0x9d7e('0x24')][_0x9d7e('0x1b')](_0xd63bda)[_0x9d7e('0x1f')](function(_0x32428e){_0x30240c[_0x9d7e('0x1b')]=_0x32428e;if(_0x168996[_0x9d7e('0x28')][_0x9d7e('0x37')]){_0x15f928[_0x9d7e('0x38')]=[{'all':!![]}];}return db[_0x9d7e('0x24')][_0x9d7e('0x39')](_0x15f928);})[_0x9d7e('0x1f')](function(_0x1ec57c){_0x30240c[_0x9d7e('0x3a')]=_0x1ec57c;return _0x30240c;})['then'](respondWithFilteredResult(_0x335238,_0x15f928))[_0x9d7e('0x3b')](handleError(_0x335238,null));};exports['show']=function(_0x3f9168,_0x4f2788){var _0x4a597e={'raw':!![],'where':{'id':_0x3f9168[_0x9d7e('0x3c')]['id']}},_0x40d6f6={};_0x40d6f6[_0x9d7e('0x2a')]=_[_0x9d7e('0x3d')](db[_0x9d7e('0x24')][_0x9d7e('0x25')]);_0x40d6f6[_0x9d7e('0x28')]=_['keys'](_0x3f9168[_0x9d7e('0x28')]);_0x40d6f6[_0x9d7e('0x29')]=_[_0x9d7e('0x3e')](_0x40d6f6[_0x9d7e('0x2a')],_0x40d6f6[_0x9d7e('0x28')]);_0x4a597e['attributes']=_[_0x9d7e('0x3e')](_0x40d6f6[_0x9d7e('0x2a')],qs[_0x9d7e('0x2c')](_0x3f9168[_0x9d7e('0x28')][_0x9d7e('0x2c')]));_0x4a597e['attributes']=_0x4a597e[_0x9d7e('0x2b')]['length']?_0x4a597e[_0x9d7e('0x2b')]:_0x40d6f6[_0x9d7e('0x2a')];if(_0x3f9168[_0x9d7e('0x28')][_0x9d7e('0x37')]){_0x4a597e[_0x9d7e('0x38')]=[{'all':!![]}];}_0x4a597e=_['merge']({},_0x4a597e,_0x3f9168[_0x9d7e('0x36')]);return db[_0x9d7e('0x24')][_0x9d7e('0x3f')](_0x4a597e)[_0x9d7e('0x1f')](handleEntityNotFound(_0x4f2788,null))[_0x9d7e('0x1f')](respondWithResult(_0x4f2788,null))['catch'](handleError(_0x4f2788,null));};exports[_0x9d7e('0x40')]=function(_0x597cb3,_0x238017){return db[_0x9d7e('0x24')][_0x9d7e('0x40')](_0x597cb3[_0x9d7e('0x41')],{})['then'](respondWithResult(_0x238017,0xc9))[_0x9d7e('0x3b')](handleError(_0x238017,null));};exports[_0x9d7e('0x42')]=function(_0x4d1418,_0x33f368){if(_0x4d1418[_0x9d7e('0x41')]['id']){delete _0x4d1418[_0x9d7e('0x41')]['id'];}return db[_0x9d7e('0x24')]['find']({'where':{'id':_0x4d1418[_0x9d7e('0x3c')]['id']}})[_0x9d7e('0x1f')](handleEntityNotFound(_0x33f368,null))[_0x9d7e('0x1f')](saveUpdates(_0x4d1418['body'],null))[_0x9d7e('0x1f')](respondWithResult(_0x33f368,null))[_0x9d7e('0x3b')](handleError(_0x33f368,null));};exports[_0x9d7e('0x20')]=function(_0xc9cc3f,_0x1000df){return db[_0x9d7e('0x24')]['find']({'where':{'id':_0xc9cc3f[_0x9d7e('0x3c')]['id']}})[_0x9d7e('0x1f')](handleEntityNotFound(_0x1000df,null))['then'](removeEntity(_0x1000df,null))[_0x9d7e('0x3b')](handleError(_0x1000df,null));};exports[_0x9d7e('0x43')]=function(_0x3bee97,_0x14671d,_0x9697dc){return db[_0x9d7e('0x24')][_0x9d7e('0x3f')]({'where':{'id':_0x3bee97[_0x9d7e('0x3c')]['id']},'attributes':['id',_0x9d7e('0x44'),_0x9d7e('0x45')]})[_0x9d7e('0x1f')](handleEntityNotFound(_0x14671d,null))[_0x9d7e('0x1f')](function(_0x5293b8){if(_0x5293b8){if(!_0x5293b8['recording']){throw new db['Sequelize']['ValidationError'](_0x9d7e('0x46'));}var _0x468122={'Content-Type':_0x9d7e('0x47'),'Content-Disposition':_0x9d7e('0x48')};if(_0x5293b8[_0x9d7e('0x45')]){_0x468122[_0x9d7e('0x49')]=_0x9d7e('0x4a')+_0x5293b8[_0x9d7e('0x45')]+_0x9d7e('0x4b');}_0x14671d[_0x9d7e('0x4c')](_0x468122);return _0x14671d[_0x9d7e('0x22')](new Buffer(_0x5293b8['recording']));}})[_0x9d7e('0x3b')](handleError(_0x14671d,null));};
\ No newline at end of file
index 6425ef4..f377237 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5de=['bluebird','path','rimraf','../../config/environment','./voiceMailMessage.attributes','define','VoiceMailMessage','voice_voicemail_messages','dir','util','moment'];(function(_0x3f9011,_0x309210){var _0xbce05b=function(_0x4d5895){while(--_0x4d5895){_0x3f9011['push'](_0x3f9011['shift']());}};_0xbce05b(++_0x309210);}(_0xd5de,0x1cc));var _0xed5d=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0xd5de[_0x13d07a];return _0x5ee0ee;};'use strict';var _=require('lodash');var util=require(_0xed5d('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xed5d('0x1'));var BPromise=require(_0xed5d('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xed5d('0x3'));var rimraf=require(_0xed5d('0x4'));var config=require(_0xed5d('0x5'));var attributes=require(_0xed5d('0x6'));module['exports']=function(_0x5d4031,_0x3751d0){return _0x5d4031[_0xed5d('0x7')](_0xed5d('0x8'),attributes,{'tableName':_0xed5d('0x9'),'paranoid':![],'indexes':[{'name':'dir','fields':[_0xed5d('0xa')]}],'timestamps':![]});};
\ No newline at end of file
+var _0xdce9=['path','rimraf','define','VoiceMailMessage','voice_voicemail_messages','dir','lodash','../../config/logger','api','moment','bluebird'];(function(_0x509922,_0x26eb07){var _0xb79ff0=function(_0x5f6ffe){while(--_0x5f6ffe){_0x509922['push'](_0x509922['shift']());}};_0xb79ff0(++_0x26eb07);}(_0xdce9,0x7f));var _0x9dce=function(_0x2d1b78,_0x1d1226){_0x2d1b78=_0x2d1b78-0x0;var _0x4a3d66=_0xdce9[_0x2d1b78];return _0x4a3d66;};'use strict';var _=require(_0x9dce('0x0'));var util=require('util');var logger=require(_0x9dce('0x1'))(_0x9dce('0x2'));var moment=require(_0x9dce('0x3'));var BPromise=require(_0x9dce('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9dce('0x5'));var rimraf=require(_0x9dce('0x6'));var config=require('../../config/environment');var attributes=require('./voiceMailMessage.attributes');module['exports']=function(_0x4da016,_0x13a4e7){return _0x4da016[_0x9dce('0x7')](_0x9dce('0x8'),attributes,{'tableName':_0x9dce('0x9'),'paranoid':![],'indexes':[{'name':_0x9dce('0xa'),'fields':[_0x9dce('0xa')]}],'timestamps':![]});};
\ No newline at end of file
index 8f78a95..dcb56d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7a1=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis'];(function(_0x19115e,_0x507bab){var _0x45bbd4=function(_0x1308bf){while(--_0x1308bf){_0x19115e['push'](_0x19115e['shift']());}};_0x45bbd4(++_0x507bab);}(_0xb7a1,0xbb));var _0x1b7a=function(_0x302d47,_0x627e2c){_0x302d47=_0x302d47-0x0;var _0x2a0b0d=_0xb7a1[_0x302d47];return _0x2a0b0d;};'use strict';var _=require('lodash');var util=require(_0x1b7a('0x0'));var moment=require(_0x1b7a('0x1'));var BPromise=require(_0x1b7a('0x2'));var rs=require(_0x1b7a('0x3'));var fs=require('fs');var Redis=require(_0x1b7a('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x1b7a('0x5'));var logger=require(_0x1b7a('0x6'))(_0x1b7a('0x7'));var config=require(_0x1b7a('0x8'));var jayson=require(_0x1b7a('0x9'));var client=jayson[_0x1b7a('0xa')][_0x1b7a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1367d3,_0x2939db,_0x2259cd){return new BPromise(function(_0x2ee271,_0x4ca5f0){return client[_0x1b7a('0xc')](_0x1367d3,_0x2259cd)[_0x1b7a('0xd')](function(_0x281936){logger[_0x1b7a('0xe')](_0x1b7a('0xf'),_0x2939db,_0x1b7a('0x10'));logger[_0x1b7a('0x11')]('VoiceMailMessage,\x20%s,\x20%s,\x20%s',_0x2939db,_0x1b7a('0x10'),JSON[_0x1b7a('0x12')](_0x281936));if(_0x281936[_0x1b7a('0x13')]){if(_0x281936['error'][_0x1b7a('0x14')]===0x1f4){logger['error'](_0x1b7a('0xf'),_0x2939db,_0x281936[_0x1b7a('0x13')]['message']);return _0x4ca5f0(_0x281936['error'][_0x1b7a('0x15')]);}logger[_0x1b7a('0x13')](_0x1b7a('0xf'),_0x2939db,_0x281936[_0x1b7a('0x13')][_0x1b7a('0x15')]);return _0x2ee271(_0x281936['error'][_0x1b7a('0x15')]);}else{logger[_0x1b7a('0xe')](_0x1b7a('0xf'),_0x2939db,'request\x20sent');_0x2ee271(_0x281936[_0x1b7a('0x16')][_0x1b7a('0x15')]);}})[_0x1b7a('0x17')](function(_0x111d53){logger[_0x1b7a('0x13')](_0x1b7a('0xf'),_0x2939db,_0x111d53);_0x4ca5f0(_0x111d53);});});}
\ No newline at end of file
+var _0x89f4=['request','then','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','VoiceMailMessage,\x20%s,\x20%s','result','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x89f4,0x140));var _0x489f=function(_0x6c5aa2,_0x56a2e1){_0x6c5aa2=_0x6c5aa2-0x0;var _0x27a143=_0x89f4[_0x6c5aa2];return _0x27a143;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x489f('0x0'));var BPromise=require(_0x489f('0x1'));var rs=require(_0x489f('0x2'));var fs=require('fs');var Redis=require(_0x489f('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x489f('0x4'));var logger=require(_0x489f('0x5'))(_0x489f('0x6'));var config=require('../../config/environment');var jayson=require(_0x489f('0x7'));var client=jayson[_0x489f('0x8')][_0x489f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x986dbb,_0x55c37a,_0x401937){return new BPromise(function(_0x4d8301,_0x4ca485){return client[_0x489f('0xa')](_0x986dbb,_0x401937)[_0x489f('0xb')](function(_0x4910ee){logger['info']('VoiceMailMessage,\x20%s,\x20%s',_0x55c37a,'request\x20sent');logger[_0x489f('0xc')](_0x489f('0xd'),_0x55c37a,_0x489f('0xe'),JSON[_0x489f('0xf')](_0x4910ee));if(_0x4910ee['error']){if(_0x4910ee[_0x489f('0x10')][_0x489f('0x11')]===0x1f4){logger['error']('VoiceMailMessage,\x20%s,\x20%s',_0x55c37a,_0x4910ee[_0x489f('0x10')]['message']);return _0x4ca485(_0x4910ee[_0x489f('0x10')][_0x489f('0x12')]);}logger[_0x489f('0x10')]('VoiceMailMessage,\x20%s,\x20%s',_0x55c37a,_0x4910ee['error'][_0x489f('0x12')]);return _0x4d8301(_0x4910ee[_0x489f('0x10')][_0x489f('0x12')]);}else{logger['info'](_0x489f('0x13'),_0x55c37a,'request\x20sent');_0x4d8301(_0x4910ee[_0x489f('0x14')][_0x489f('0x12')]);}})[_0x489f('0x15')](function(_0x5b3c99){logger[_0x489f('0x10')](_0x489f('0x13'),_0x55c37a,_0x5b3c99);_0x4ca485(_0x5b3c99);});});}
\ No newline at end of file
index b9ed0bb..8ff5bf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d8c=['get','isAuthenticated','index','/:id','show','/:id/sounds','getSounds','post','create','addSound','put','update','delete','destroy','/:id/sounds/:id2','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4d8c,0x1a0));var _0xc4d8=function(_0x2bc5fb,_0x703997){_0x2bc5fb=_0x2bc5fb-0x0;var _0x26b107=_0x4d8c[_0x2bc5fb];return _0x26b107;};'use strict';var multer=require(_0xc4d8('0x0'));var util=require(_0xc4d8('0x1'));var path=require(_0xc4d8('0x2'));var timeout=require(_0xc4d8('0x3'));var express=require('express');var router=express[_0xc4d8('0x4')]();var fs_extra=require(_0xc4d8('0x5'));var auth=require(_0xc4d8('0x6'));var interaction=require(_0xc4d8('0x7'));var config=require(_0xc4d8('0x8'));var controller=require('./voiceMusicOnHold.controller');router[_0xc4d8('0x9')]('/',auth[_0xc4d8('0xa')](),controller[_0xc4d8('0xb')]);router[_0xc4d8('0x9')](_0xc4d8('0xc'),auth[_0xc4d8('0xa')](),controller[_0xc4d8('0xd')]);router[_0xc4d8('0x9')](_0xc4d8('0xe'),auth[_0xc4d8('0xa')](),controller[_0xc4d8('0xf')]);router[_0xc4d8('0x10')]('/',auth[_0xc4d8('0xa')](),controller[_0xc4d8('0x11')]);router[_0xc4d8('0x10')](_0xc4d8('0xe'),auth['isAuthenticated'](),controller[_0xc4d8('0x12')]);router[_0xc4d8('0x13')](_0xc4d8('0xc'),auth[_0xc4d8('0xa')](),controller[_0xc4d8('0x14')]);router[_0xc4d8('0x15')]('/:id',auth[_0xc4d8('0xa')](),controller[_0xc4d8('0x16')]);router[_0xc4d8('0x15')](_0xc4d8('0x17'),auth[_0xc4d8('0xa')](),controller['removeSound']);module[_0xc4d8('0x18')]=router;
\ No newline at end of file
+var _0xb657=['removeSound','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','get','isAuthenticated','index','/:id','/:id/sounds','getSounds','post','create','addSound','put','update','delete','destroy','/:id/sounds/:id2'];(function(_0x179d19,_0x3f63fc){var _0x1ca47f=function(_0x42ef71){while(--_0x42ef71){_0x179d19['push'](_0x179d19['shift']());}};_0x1ca47f(++_0x3f63fc);}(_0xb657,0xec));var _0x7b65=function(_0x56916d,_0x37b935){_0x56916d=_0x56916d-0x0;var _0x2b7f1f=_0xb657[_0x56916d];return _0x2b7f1f;};'use strict';var multer=require('multer');var util=require(_0x7b65('0x0'));var path=require(_0x7b65('0x1'));var timeout=require(_0x7b65('0x2'));var express=require(_0x7b65('0x3'));var router=express[_0x7b65('0x4')]();var fs_extra=require(_0x7b65('0x5'));var auth=require(_0x7b65('0x6'));var interaction=require(_0x7b65('0x7'));var config=require(_0x7b65('0x8'));var controller=require(_0x7b65('0x9'));router[_0x7b65('0xa')]('/',auth[_0x7b65('0xb')](),controller[_0x7b65('0xc')]);router[_0x7b65('0xa')](_0x7b65('0xd'),auth['isAuthenticated'](),controller['show']);router['get'](_0x7b65('0xe'),auth[_0x7b65('0xb')](),controller[_0x7b65('0xf')]);router[_0x7b65('0x10')]('/',auth[_0x7b65('0xb')](),controller[_0x7b65('0x11')]);router[_0x7b65('0x10')](_0x7b65('0xe'),auth['isAuthenticated'](),controller[_0x7b65('0x12')]);router[_0x7b65('0x13')](_0x7b65('0xd'),auth[_0x7b65('0xb')](),controller[_0x7b65('0x14')]);router[_0x7b65('0x15')](_0x7b65('0xd'),auth['isAuthenticated'](),controller[_0x7b65('0x16')]);router['delete'](_0x7b65('0x17'),auth[_0x7b65('0xb')](),controller[_0x7b65('0x18')]);module[_0x7b65('0x19')]=router;
\ No newline at end of file
index 51e0178..4b2203d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e19=['STRING','TIMESTAMP','BOOLEAN','ENUM','custom','files','quietmp3nb','quietmp3','mp3'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0x6e19,0x198));var _0x96e1=function(_0x179544,_0x5f04f0){_0x179544=_0x179544-0x0;var _0x332aac=_0x6e19[_0x179544];return _0x332aac;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'mode':{'type':Sequelize[_0x96e1('0x0')](_0x96e1('0x1'),_0x96e1('0x2'),'mp3nb',_0x96e1('0x3'),_0x96e1('0x4'),_0x96e1('0x5')),'allowNull':!![],'defaultValue':_0x96e1('0x2')},'directory':{'type':Sequelize[_0x96e1('0x6')],'allowNull':!![]},'application':{'type':Sequelize[_0x96e1('0x6')],'allowNull':!![]},'digit':{'type':Sequelize[_0x96e1('0x6')],'allowNull':!![]},'sort':{'type':Sequelize[_0x96e1('0x6')],'allowNull':!![],'defaultValue':'alpha'},'format':{'type':Sequelize['STRING'],'allowNull':!![]},'stamp':{'type':_0x96e1('0x7')},'defaultEntry':{'type':Sequelize[_0x96e1('0x8')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa9eb=['BOOLEAN','sequelize','exports','STRING','ENUM','custom','files','mp3nb','quietmp3nb','mp3','TIMESTAMP'];(function(_0x292037,_0x442f7c){var _0x4bd506=function(_0x2c73ce){while(--_0x2c73ce){_0x292037['push'](_0x292037['shift']());}};_0x4bd506(++_0x442f7c);}(_0xa9eb,0xd2));var _0xba9e=function(_0x381589,_0x27a707){_0x381589=_0x381589-0x0;var _0x2a075d=_0xa9eb[_0x381589];return _0x2a075d;};'use strict';var Sequelize=require(_0xba9e('0x0'));module[_0xba9e('0x1')]={'name':{'type':Sequelize[_0xba9e('0x2')],'allowNull':![],'unique':'name'},'mode':{'type':Sequelize[_0xba9e('0x3')](_0xba9e('0x4'),_0xba9e('0x5'),_0xba9e('0x6'),_0xba9e('0x7'),'quietmp3',_0xba9e('0x8')),'allowNull':!![],'defaultValue':_0xba9e('0x5')},'directory':{'type':Sequelize[_0xba9e('0x2')],'allowNull':!![]},'application':{'type':Sequelize[_0xba9e('0x2')],'allowNull':!![]},'digit':{'type':Sequelize['STRING'],'allowNull':!![]},'sort':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'alpha'},'format':{'type':Sequelize['STRING'],'allowNull':!![]},'stamp':{'type':_0xba9e('0x9')},'defaultEntry':{'type':Sequelize[_0xba9e('0xa')],'defaultValue':0x0}};
\ No newline at end of file
index 478a4f2..dc93702 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9709=['body','catch','create','sequelize','transaction','mode','join','files','mkdirSync','0777','user','role','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readdirSync','directory','forEach','unlinkSync','rmdirSync','Sequelize','ValidationError','message','addSound','findOne','save_name','converted_format','root','server/files/sounds/converted','format','%s.%s','removeSound','id2','createdAt','getSounds','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','ejs','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','then','get','MusicOnHolds','UserProfileResource','destroy','end','stack','name','send','index','map','VoiceMusicOnHold','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','rows','show','params','length','includeAll','find'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0x9709,0x108));var _0x9970=function(_0x4cf104,_0x470834){_0x4cf104=_0x4cf104-0x0;var _0xa32f24=_0x9709[_0x4cf104];return _0xa32f24;};'use strict';var emlformat=require(_0x9970('0x0'));var rimraf=require(_0x9970('0x1'));var zipdir=require(_0x9970('0x2'));var jsonpatch=require(_0x9970('0x3'));var rp=require(_0x9970('0x4'));var moment=require(_0x9970('0x5'));var BPromise=require(_0x9970('0x6'));var Mustache=require('mustache');var util=require(_0x9970('0x7'));var path=require(_0x9970('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x9970('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x9970('0xa'));var crypto=require(_0x9970('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x9970('0xc'));var toCsv=require(_0x9970('0xd'));var querystring=require(_0x9970('0xe'));var Papa=require(_0x9970('0xf'));var Redis=require(_0x9970('0x10'));var authService=require(_0x9970('0x11'));var qs=require(_0x9970('0x12'));var as=require(_0x9970('0x13'));var hardwareService=require(_0x9970('0x14'));var logger=require(_0x9970('0x15'))(_0x9970('0x16'));var utils=require('../../config/utils');var config=require(_0x9970('0x17'));var licenseUtil=require(_0x9970('0x18'));var db=require(_0x9970('0x19'))['db'];function respondWithStatusCode(_0x1006e1,_0x5c3cb3){_0x5c3cb3=_0x5c3cb3||0xcc;return function(_0xf643ac){if(_0xf643ac){return _0x1006e1[_0x9970('0x1a')](_0x5c3cb3);}return _0x1006e1[_0x9970('0x1b')](_0x5c3cb3)['end']();};}function respondWithResult(_0x480f3e,_0x21d92d){_0x21d92d=_0x21d92d||0xc8;return function(_0xe0f3b8){if(_0xe0f3b8){return _0x480f3e['status'](_0x21d92d)[_0x9970('0x1c')](_0xe0f3b8);}};}function respondWithFilteredResult(_0x1f3fde,_0x2eaefd){return function(_0x5f5a20){if(_0x5f5a20){var _0x27b241=typeof _0x2eaefd['offset']===_0x9970('0x1d')&&typeof _0x2eaefd[_0x9970('0x1e')]===_0x9970('0x1d');var _0x5c9e6a=_0x5f5a20[_0x9970('0x1f')];var _0x2661eb=_0x27b241?0x0:_0x2eaefd[_0x9970('0x20')];var _0x104b8=_0x27b241?_0x5f5a20[_0x9970('0x1f')]:_0x2eaefd[_0x9970('0x20')]+_0x2eaefd[_0x9970('0x1e')];var _0x5d8065;if(_0x104b8>=_0x5c9e6a){_0x104b8=_0x5c9e6a;_0x5d8065=0xc8;}else{_0x5d8065=0xce;}_0x1f3fde['status'](_0x5d8065);return _0x1f3fde[_0x9970('0x21')](_0x9970('0x22'),_0x2661eb+'-'+_0x104b8+'/'+_0x5c9e6a)[_0x9970('0x1c')](_0x5f5a20);}return null;};}function patchUpdates(_0x154a9d){return function(_0x2a1c54){try{jsonpatch[_0x9970('0x23')](_0x2a1c54,_0x154a9d,!![]);}catch(_0x111f47){return BPromise['reject'](_0x111f47);}return _0x2a1c54[_0x9970('0x24')]();};}function saveUpdates(_0x2b2e3d,_0x322d57){return function(_0x3b11b4){if(_0x3b11b4){return _0x3b11b4[_0x9970('0x25')](_0x2b2e3d)[_0x9970('0x26')](function(_0x1ea8bc){return _0x1ea8bc;});}return null;};}function removeEntity(_0x449d11,_0x53cb8d){return function(_0x3a924c){if(_0x3a924c){return _0x3a924c['destroy']()['then'](function(){var _0x4187c7=_0x3a924c[_0x9970('0x27')]({'plain':!![]});var _0x47cfcd=_0x9970('0x28');return db[_0x9970('0x29')][_0x9970('0x2a')]({'where':{'type':_0x47cfcd,'resourceId':_0x4187c7['id']}})[_0x9970('0x26')](function(){return _0x3a924c;});})[_0x9970('0x26')](function(){_0x449d11[_0x9970('0x1b')](0xcc)[_0x9970('0x2b')]();});}};}function handleEntityNotFound(_0x40d35b,_0x2ab914){return function(_0x2c6a56){if(!_0x2c6a56){_0x40d35b[_0x9970('0x1a')](0x194);}return _0x2c6a56;};}function handleError(_0x431739,_0x588ac7){_0x588ac7=_0x588ac7||0x1f4;return function(_0x1b4e23){logger['error'](_0x1b4e23[_0x9970('0x2c')]);if(_0x1b4e23[_0x9970('0x2d')]){delete _0x1b4e23['name'];}_0x431739['status'](_0x588ac7)[_0x9970('0x2e')](_0x1b4e23);};}exports[_0x9970('0x2f')]=function(_0x298108,_0x4d45a6){var _0x5cd98c={},_0x5032d4={},_0x17cf60={'count':0x0,'rows':[]};var _0x1ac674=_[_0x9970('0x30')](db[_0x9970('0x31')][_0x9970('0x32')],function(_0x3e1333){return{'name':_0x3e1333[_0x9970('0x33')],'type':_0x3e1333[_0x9970('0x34')][_0x9970('0x35')]};});_0x5032d4[_0x9970('0x36')]=_[_0x9970('0x30')](_0x1ac674,'name');_0x5032d4[_0x9970('0x37')]=_[_0x9970('0x38')](_0x298108[_0x9970('0x37')]);_0x5032d4[_0x9970('0x39')]=_[_0x9970('0x3a')](_0x5032d4[_0x9970('0x36')],_0x5032d4[_0x9970('0x37')]);_0x5cd98c[_0x9970('0x3b')]=_[_0x9970('0x3a')](_0x5032d4[_0x9970('0x36')],qs[_0x9970('0x3c')](_0x298108['query'][_0x9970('0x3c')]));_0x5cd98c[_0x9970('0x3b')]=_0x5cd98c[_0x9970('0x3b')]['length']?_0x5cd98c[_0x9970('0x3b')]:_0x5032d4[_0x9970('0x36')];if(!_0x298108[_0x9970('0x37')][_0x9970('0x3d')]('nolimit')){_0x5cd98c[_0x9970('0x1e')]=qs[_0x9970('0x1e')](_0x298108[_0x9970('0x37')]['limit']);_0x5cd98c[_0x9970('0x20')]=qs[_0x9970('0x20')](_0x298108[_0x9970('0x37')][_0x9970('0x20')]);}_0x5cd98c[_0x9970('0x3e')]=qs['sort'](_0x298108['query']['sort']);delete _0x298108['query'][_0x9970('0x3f')];_0x5cd98c[_0x9970('0x40')]=qs[_0x9970('0x39')](_[_0x9970('0x41')](_0x298108[_0x9970('0x37')],_0x5032d4['filters']),_0x1ac674);if(_0x298108[_0x9970('0x37')][_0x9970('0x42')]){_0x5cd98c[_0x9970('0x40')]=_['merge'](_0x5cd98c[_0x9970('0x40')],{'$or':_[_0x9970('0x30')](_0x1ac674,function(_0x1ca726){if(_0x1ca726[_0x9970('0x34')]!==_0x9970('0x43')){var _0x3b3faa={};_0x3b3faa[_0x1ca726[_0x9970('0x2d')]]={'$like':'%'+_0x298108[_0x9970('0x37')]['filter']+'%'};return _0x3b3faa;}})});}_0x5cd98c=_[_0x9970('0x44')]({},_0x5cd98c,_0x298108[_0x9970('0x45')]);var _0xa4fbda={'where':_0x5cd98c[_0x9970('0x40')]};return db[_0x9970('0x31')][_0x9970('0x1f')](_0xa4fbda)[_0x9970('0x26')](function(_0x217357){_0x17cf60[_0x9970('0x1f')]=_0x217357;if(_0x298108[_0x9970('0x37')]['includeAll']){_0x5cd98c[_0x9970('0x46')]=[{'all':!![]}];}return db[_0x9970('0x31')][_0x9970('0x47')](_0x5cd98c);})[_0x9970('0x26')](function(_0x97cdc4){_0x17cf60[_0x9970('0x48')]=_0x97cdc4;return _0x17cf60;})[_0x9970('0x26')](respondWithFilteredResult(_0x4d45a6,_0x5cd98c))['catch'](handleError(_0x4d45a6,null));};exports[_0x9970('0x49')]=function(_0x5d6be4,_0x2b691e){var _0x17253d={'raw':![],'where':{'id':_0x5d6be4[_0x9970('0x4a')]['id']}},_0x308f7c={};_0x308f7c[_0x9970('0x36')]=_[_0x9970('0x38')](db['VoiceMusicOnHold']['rawAttributes']);_0x308f7c['query']=_['keys'](_0x5d6be4[_0x9970('0x37')]);_0x308f7c[_0x9970('0x39')]=_['intersection'](_0x308f7c['model'],_0x308f7c['query']);_0x17253d[_0x9970('0x3b')]=_[_0x9970('0x3a')](_0x308f7c[_0x9970('0x36')],qs[_0x9970('0x3c')](_0x5d6be4[_0x9970('0x37')][_0x9970('0x3c')]));_0x17253d[_0x9970('0x3b')]=_0x17253d[_0x9970('0x3b')][_0x9970('0x4b')]?_0x17253d[_0x9970('0x3b')]:_0x308f7c['model'];if(_0x5d6be4[_0x9970('0x37')][_0x9970('0x4c')]){_0x17253d[_0x9970('0x46')]=[{'all':!![]}];}_0x17253d=_[_0x9970('0x44')]({},_0x17253d,_0x5d6be4['options']);return db[_0x9970('0x31')][_0x9970('0x4d')](_0x17253d)['then'](handleEntityNotFound(_0x2b691e,null))[_0x9970('0x26')](respondWithResult(_0x2b691e,null))['catch'](handleError(_0x2b691e,null));};exports[_0x9970('0x25')]=function(_0x4bffd7,_0x2c3a25){if(_0x4bffd7[_0x9970('0x4e')]['id']){delete _0x4bffd7[_0x9970('0x4e')]['id'];}return db[_0x9970('0x31')]['find']({'where':{'id':_0x4bffd7[_0x9970('0x4a')]['id']}})[_0x9970('0x26')](handleEntityNotFound(_0x2c3a25,null))[_0x9970('0x26')](saveUpdates(_0x4bffd7[_0x9970('0x4e')],null))[_0x9970('0x26')](respondWithResult(_0x2c3a25,null))[_0x9970('0x4f')](handleError(_0x2c3a25,null));};exports[_0x9970('0x50')]=function(_0x72e11a,_0x2fcd65,_0x4257f7){return db[_0x9970('0x51')][_0x9970('0x52')](function(_0x396e8b){if(_0x72e11a[_0x9970('0x4e')][_0x9970('0x53')]==='files'){_0x72e11a[_0x9970('0x4e')]['directory']=path[_0x9970('0x54')](config['root'],'server/files/moh',_0x72e11a['body'][_0x9970('0x2d')]);}return db['VoiceMusicOnHold'][_0x9970('0x50')](_0x72e11a[_0x9970('0x4e')],{'transaction':_0x396e8b})[_0x9970('0x26')](function(_0x32afa7){if(_0x72e11a[_0x9970('0x4e')]['mode']===_0x9970('0x55')){fs[_0x9970('0x56')](_0x32afa7['directory'],parseInt(_0x9970('0x57'),0x8));}var _0x5171bd=_0x72e11a[_0x9970('0x58')][_0x9970('0x27')]({'plain':!![]});if(!_0x5171bd)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5171bd[_0x9970('0x59')]===_0x9970('0x58')){var _0x281557=_0x32afa7[_0x9970('0x27')]({'plain':!![]});return db['UserProfileSection'][_0x9970('0x4d')]({'where':{'name':_0x9970('0x28'),'userProfileId':_0x5171bd[_0x9970('0x5a')]},'raw':!![]})[_0x9970('0x26')](function(_0x2d2765){if(_0x2d2765&&_0x2d2765[_0x9970('0x5b')]===0x0){return db[_0x9970('0x29')][_0x9970('0x50')]({'name':_0x281557['name'],'resourceId':_0x281557['id'],'type':_0x2d2765['name'],'sectionId':_0x2d2765['id']},{})['then'](function(){return _0x32afa7;});}else{return _0x32afa7;}})[_0x9970('0x4f')](function(_0x5704ff){logger[_0x9970('0x5c')](_0x9970('0x5d'),_0x5704ff);});}return _0x32afa7;});})['then'](respondWithResult(_0x2fcd65,0xc9))[_0x9970('0x4f')](handleError(_0x2fcd65,null));};exports[_0x9970('0x2a')]=function(_0x29e712,_0x58e55f,_0x4ef6df){var _0x46582f;return db[_0x9970('0x31')][_0x9970('0x4d')]({'where':{'id':_0x29e712[_0x9970('0x4a')]['id']}})[_0x9970('0x26')](function(_0x3b4e92){if(_0x3b4e92){return db[_0x9970('0x51')]['transaction'](function(_0x48c528){return _0x3b4e92[_0x9970('0x2a')]({'transaction':_0x48c528,'raw':!![]})[_0x9970('0x26')](function(_0x19de8f){if(_0x19de8f['directory']){fs[_0x9970('0x5e')](_0x19de8f[_0x9970('0x5f')])[_0x9970('0x60')](function(_0x47092a){fs[_0x9970('0x61')](path[_0x9970('0x54')](_0x19de8f['directory'],_0x47092a));});fs[_0x9970('0x62')](_0x19de8f[_0x9970('0x5f')]);}return _0x19de8f;});})[_0x9970('0x4f')](function(_0x43f16f){throw new db[(_0x9970('0x63'))][(_0x9970('0x64'))](_0x43f16f[_0x9970('0x65')]);});}})[_0x9970('0x26')](handleEntityNotFound(_0x58e55f,null))[_0x9970('0x26')](removeEntity(_0x58e55f,null))['catch'](handleError(_0x58e55f,null));};exports[_0x9970('0x66')]=function(_0x55b909,_0x2d013d,_0x4c0251){return db[_0x9970('0x51')][_0x9970('0x52')](function(_0x4c3eb4){var _0xa306e0;return db[_0x9970('0x31')][_0x9970('0x4d')]({'where':{'id':_0x55b909['params']['id']}})[_0x9970('0x26')](function(_0x18a4f9){if(_0x18a4f9){_0xa306e0=_0x18a4f9;return _0x18a4f9['addSound'](_0x55b909['body']['id'],{'transaction':_0x4c3eb4});}})[_0x9970('0x26')](function(_0x5bb024){if(_0x5bb024){return db['Sound'][_0x9970('0x67')]({'where':{'id':_0x55b909['body']['id']},'attributes':['id',_0x9970('0x2d'),_0x9970('0x68'),_0x9970('0x69'),'createdAt'],'raw':!![]});}})[_0x9970('0x26')](function(_0x5ab604){if(_0x5ab604){var _0x3752f6=path[_0x9970('0x54')](config[_0x9970('0x6a')],_0x9970('0x6b'),util[_0x9970('0x6c')](_0x9970('0x6d'),path['basename'](_0x5ab604[_0x9970('0x68')],path['extname'](_0x5ab604[_0x9970('0x68')])),_0x5ab604[_0x9970('0x69')]));var _0x8a0923=path[_0x9970('0x54')](config[_0x9970('0x6a')],'server/files/moh',_0xa306e0['name'],util[_0x9970('0x6c')](_0x9970('0x6d'),_0x5ab604['name'],_0x5ab604[_0x9970('0x69')]));fs['symlinkSync'](_0x3752f6,_0x8a0923);return _0x5ab604;}})[_0x9970('0x4f')](function(_0x282e43){throw new db[(_0x9970('0x63'))][(_0x9970('0x64'))](_0x282e43['message']);});})['then'](handleEntityNotFound(_0x2d013d,null))[_0x9970('0x26')](respondWithResult(_0x2d013d,0xc9))[_0x9970('0x4f')](handleError(_0x2d013d,null));};exports[_0x9970('0x6e')]=function(_0x2f4180,_0xa5ae2b,_0x57f1cf){return db['sequelize'][_0x9970('0x52')](function(_0x2683ff){var _0x11ec9c;return db[_0x9970('0x31')][_0x9970('0x67')]({'where':{'id':_0x2f4180[_0x9970('0x4a')]['id']}})[_0x9970('0x26')](handleEntityNotFound(_0xa5ae2b,null))['then'](function(_0x31871d){if(_0x31871d){_0x11ec9c=_0x31871d;return _0x31871d[_0x9970('0x6e')](_0x2f4180[_0x9970('0x4a')][_0x9970('0x6f')]);}})['then'](function(_0x1a6652){if(_0x1a6652){return db['Sound'][_0x9970('0x67')]({'where':{'id':_0x2f4180[_0x9970('0x4a')][_0x9970('0x6f')]},'attributes':['id','name','save_name',_0x9970('0x69'),_0x9970('0x70')],'raw':!![]});}})['then'](function(_0x40b3a0){if(_0x40b3a0){fs[_0x9970('0x61')](path[_0x9970('0x54')](_0x11ec9c[_0x9970('0x5f')],util[_0x9970('0x6c')](_0x9970('0x6d'),_0x40b3a0['name'],_0x40b3a0[_0x9970('0x69')])));return _0x40b3a0;}})[_0x9970('0x4f')](function(_0x2fe525){throw new db['Sequelize'][(_0x9970('0x64'))](_0x2fe525[_0x9970('0x65')]);});})[_0x9970('0x26')](handleEntityNotFound(_0xa5ae2b,null))[_0x9970('0x26')](respondWithStatusCode(_0xa5ae2b,0xcc))[_0x9970('0x4f')](handleError(_0xa5ae2b,null));};exports['getSounds']=function(_0x48f3bf,_0x270434,_0x16c857){var _0x246ed5={};var _0x415b1d={};var _0x1b6a5f;var _0x3b157f;return db[_0x9970('0x31')][_0x9970('0x67')]({'where':{'id':_0x48f3bf[_0x9970('0x4a')]['id']}})[_0x9970('0x26')](handleEntityNotFound(_0x270434,null))[_0x9970('0x26')](function(_0x10852f){if(_0x10852f){_0x1b6a5f=_0x10852f;_0x415b1d[_0x9970('0x36')]=_['keys'](db['Sound'][_0x9970('0x32')]);_0x415b1d[_0x9970('0x37')]=_[_0x9970('0x38')](_0x48f3bf['query']);_0x415b1d[_0x9970('0x39')]=_[_0x9970('0x3a')](_0x415b1d['model'],_0x415b1d['query']);_0x246ed5[_0x9970('0x3b')]=_[_0x9970('0x3a')](_0x415b1d[_0x9970('0x36')],qs['fields'](_0x48f3bf['query'][_0x9970('0x3c')]));_0x246ed5[_0x9970('0x3b')]=_0x246ed5[_0x9970('0x3b')][_0x9970('0x4b')]?_0x246ed5['attributes']:_0x415b1d[_0x9970('0x36')];_0x246ed5['order']=qs[_0x9970('0x3f')](_0x48f3bf['query'][_0x9970('0x3f')]);_0x246ed5[_0x9970('0x40')]=qs[_0x9970('0x39')](_[_0x9970('0x41')](_0x48f3bf[_0x9970('0x37')],_0x415b1d[_0x9970('0x39')]));if(_0x48f3bf[_0x9970('0x37')][_0x9970('0x42')]){_0x246ed5[_0x9970('0x40')]=_[_0x9970('0x44')](_0x246ed5[_0x9970('0x40')],{'$or':_['map'](_0x246ed5['attributes'],function(_0x91056d){var _0xb605d9={};_0xb605d9[_0x91056d]={'$like':'%'+_0x48f3bf['query'][_0x9970('0x42')]+'%'};return _0xb605d9;})});}_0x246ed5=_[_0x9970('0x44')]({},_0x246ed5,_0x48f3bf[_0x9970('0x45')]);return _0x1b6a5f[_0x9970('0x71')](_0x246ed5);}})[_0x9970('0x26')](function(_0x3bde77){if(_0x3bde77){_0x3b157f=_0x3bde77[_0x9970('0x4b')];if(!_0x48f3bf[_0x9970('0x37')]['hasOwnProperty']('nolimit')){_0x246ed5[_0x9970('0x1e')]=qs[_0x9970('0x1e')](_0x48f3bf[_0x9970('0x37')][_0x9970('0x1e')]);_0x246ed5[_0x9970('0x20')]=qs[_0x9970('0x20')](_0x48f3bf['query'][_0x9970('0x20')]);}return _0x1b6a5f[_0x9970('0x71')](_0x246ed5);}})[_0x9970('0x26')](function(_0x3b3d48){if(_0x3b3d48){return _0x3b3d48?{'count':_0x3b157f,'rows':_0x3b3d48}:null;}})[_0x9970('0x26')](respondWithResult(_0x270434,null))['catch'](handleError(_0x270434,null));};
\ No newline at end of file
+var _0xcfbb=['key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','include','rows','params','keys','length','includeAll','find','body','create','sequelize','directory','join','root','server/files/moh','mode','files','0777','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','MusicOnHolds','userProfileId','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','transaction','readdirSync','forEach','unlinkSync','rmdirSync','Sequelize','ValidationError','message','addSound','converted_format','createdAt','server/files/sounds/converted','format','basename','save_name','%s.%s','symlinkSync','removeSound','findOne','id2','Sound','getSounds','map','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','json','undefined','count','offset','limit','status','set','Content-Range','apply','save','update','then','destroy','UserProfileResource','error','stack','name','send','index','VoiceMusicOnHold','rawAttributes','type'];(function(_0x4c6a59,_0x4cd744){var _0x48edde=function(_0x4536b1){while(--_0x4536b1){_0x4c6a59['push'](_0x4c6a59['shift']());}};_0x48edde(++_0x4cd744);}(_0xcfbb,0xaf));var _0xbcfb=function(_0x2e2104,_0x11287d){_0x2e2104=_0x2e2104-0x0;var _0x1280c5=_0xcfbb[_0x2e2104];return _0x1280c5;};'use strict';var emlformat=require(_0xbcfb('0x0'));var rimraf=require(_0xbcfb('0x1'));var zipdir=require(_0xbcfb('0x2'));var jsonpatch=require(_0xbcfb('0x3'));var rp=require('request-promise');var moment=require(_0xbcfb('0x4'));var BPromise=require(_0xbcfb('0x5'));var Mustache=require(_0xbcfb('0x6'));var util=require('util');var path=require(_0xbcfb('0x7'));var sox=require('sox');var csv=require(_0xbcfb('0x8'));var ejs=require(_0xbcfb('0x9'));var fs=require('fs');var fs_extra=require(_0xbcfb('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xbcfb('0xb'));var jsforce=require(_0xbcfb('0xc'));var deskjs=require(_0xbcfb('0xd'));var toCsv=require(_0xbcfb('0x8'));var querystring=require(_0xbcfb('0xe'));var Papa=require(_0xbcfb('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xbcfb('0x10'));var hardwareService=require(_0xbcfb('0x11'));var logger=require(_0xbcfb('0x12'))(_0xbcfb('0x13'));var utils=require(_0xbcfb('0x14'));var config=require(_0xbcfb('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xbcfb('0x16'))['db'];function respondWithStatusCode(_0x5171f3,_0x6efa4f){_0x6efa4f=_0x6efa4f||0xcc;return function(_0x402446){if(_0x402446){return _0x5171f3[_0xbcfb('0x17')](_0x6efa4f);}return _0x5171f3['status'](_0x6efa4f)[_0xbcfb('0x18')]();};}function respondWithResult(_0x110048,_0x4599de){_0x4599de=_0x4599de||0xc8;return function(_0x117965){if(_0x117965){return _0x110048['status'](_0x4599de)[_0xbcfb('0x19')](_0x117965);}};}function respondWithFilteredResult(_0x159c79,_0x24e598){return function(_0x1ce09a){if(_0x1ce09a){var _0xf830e6=typeof _0x24e598['offset']===_0xbcfb('0x1a')&&typeof _0x24e598['limit']==='undefined';var _0x1451c4=_0x1ce09a[_0xbcfb('0x1b')];var _0x1c4f8b=_0xf830e6?0x0:_0x24e598[_0xbcfb('0x1c')];var _0x27b3c5=_0xf830e6?_0x1ce09a[_0xbcfb('0x1b')]:_0x24e598['offset']+_0x24e598[_0xbcfb('0x1d')];var _0x5e85a3;if(_0x27b3c5>=_0x1451c4){_0x27b3c5=_0x1451c4;_0x5e85a3=0xc8;}else{_0x5e85a3=0xce;}_0x159c79[_0xbcfb('0x1e')](_0x5e85a3);return _0x159c79[_0xbcfb('0x1f')](_0xbcfb('0x20'),_0x1c4f8b+'-'+_0x27b3c5+'/'+_0x1451c4)[_0xbcfb('0x19')](_0x1ce09a);}return null;};}function patchUpdates(_0x2d01fd){return function(_0x1f44f5){try{jsonpatch[_0xbcfb('0x21')](_0x1f44f5,_0x2d01fd,!![]);}catch(_0x38b784){return BPromise['reject'](_0x38b784);}return _0x1f44f5[_0xbcfb('0x22')]();};}function saveUpdates(_0xca44b8,_0x4c9d80){return function(_0x3303bd){if(_0x3303bd){return _0x3303bd[_0xbcfb('0x23')](_0xca44b8)[_0xbcfb('0x24')](function(_0x2dcbe2){return _0x2dcbe2;});}return null;};}function removeEntity(_0x2cab52,_0x55d46a){return function(_0xd07fe4){if(_0xd07fe4){return _0xd07fe4[_0xbcfb('0x25')]()[_0xbcfb('0x24')](function(){var _0x17a27c=_0xd07fe4['get']({'plain':!![]});var _0x38a5ca='MusicOnHolds';return db[_0xbcfb('0x26')][_0xbcfb('0x25')]({'where':{'type':_0x38a5ca,'resourceId':_0x17a27c['id']}})[_0xbcfb('0x24')](function(){return _0xd07fe4;});})[_0xbcfb('0x24')](function(){_0x2cab52[_0xbcfb('0x1e')](0xcc)[_0xbcfb('0x18')]();});}};}function handleEntityNotFound(_0x1b28bf,_0x77ef57){return function(_0x56811f){if(!_0x56811f){_0x1b28bf[_0xbcfb('0x17')](0x194);}return _0x56811f;};}function handleError(_0xacdd6,_0x3fba01){_0x3fba01=_0x3fba01||0x1f4;return function(_0x2986ed){logger[_0xbcfb('0x27')](_0x2986ed[_0xbcfb('0x28')]);if(_0x2986ed[_0xbcfb('0x29')]){delete _0x2986ed['name'];}_0xacdd6[_0xbcfb('0x1e')](_0x3fba01)[_0xbcfb('0x2a')](_0x2986ed);};}exports[_0xbcfb('0x2b')]=function(_0x46fb62,_0x26be1b){var _0x1b576b={},_0x442101={},_0x10fc16={'count':0x0,'rows':[]};var _0x1f3b02=_['map'](db[_0xbcfb('0x2c')][_0xbcfb('0x2d')],function(_0x1f9fde){return{'name':_0x1f9fde['fieldName'],'type':_0x1f9fde[_0xbcfb('0x2e')][_0xbcfb('0x2f')]};});_0x442101[_0xbcfb('0x30')]=_['map'](_0x1f3b02,_0xbcfb('0x29'));_0x442101[_0xbcfb('0x31')]=_['keys'](_0x46fb62['query']);_0x442101[_0xbcfb('0x32')]=_[_0xbcfb('0x33')](_0x442101[_0xbcfb('0x30')],_0x442101['query']);_0x1b576b[_0xbcfb('0x34')]=_[_0xbcfb('0x33')](_0x442101['model'],qs[_0xbcfb('0x35')](_0x46fb62[_0xbcfb('0x31')][_0xbcfb('0x35')]));_0x1b576b[_0xbcfb('0x34')]=_0x1b576b[_0xbcfb('0x34')]['length']?_0x1b576b[_0xbcfb('0x34')]:_0x442101[_0xbcfb('0x30')];if(!_0x46fb62[_0xbcfb('0x31')][_0xbcfb('0x36')](_0xbcfb('0x37'))){_0x1b576b[_0xbcfb('0x1d')]=qs[_0xbcfb('0x1d')](_0x46fb62['query']['limit']);_0x1b576b[_0xbcfb('0x1c')]=qs[_0xbcfb('0x1c')](_0x46fb62[_0xbcfb('0x31')][_0xbcfb('0x1c')]);}_0x1b576b[_0xbcfb('0x38')]=qs[_0xbcfb('0x39')](_0x46fb62[_0xbcfb('0x31')]['sort']);delete _0x46fb62[_0xbcfb('0x31')][_0xbcfb('0x39')];_0x1b576b[_0xbcfb('0x3a')]=qs['filters'](_[_0xbcfb('0x3b')](_0x46fb62[_0xbcfb('0x31')],_0x442101[_0xbcfb('0x32')]),_0x1f3b02);if(_0x46fb62[_0xbcfb('0x31')][_0xbcfb('0x3c')]){_0x1b576b[_0xbcfb('0x3a')]=_[_0xbcfb('0x3d')](_0x1b576b[_0xbcfb('0x3a')],{'$or':_['map'](_0x1f3b02,function(_0x2e66fd){if(_0x2e66fd[_0xbcfb('0x2e')]!=='VIRTUAL'){var _0x47684c={};_0x47684c[_0x2e66fd[_0xbcfb('0x29')]]={'$like':'%'+_0x46fb62[_0xbcfb('0x31')][_0xbcfb('0x3c')]+'%'};return _0x47684c;}})});}_0x1b576b=_[_0xbcfb('0x3d')]({},_0x1b576b,_0x46fb62[_0xbcfb('0x3e')]);var _0x5b7515={'where':_0x1b576b[_0xbcfb('0x3a')]};return db['VoiceMusicOnHold'][_0xbcfb('0x1b')](_0x5b7515)['then'](function(_0x479e79){_0x10fc16[_0xbcfb('0x1b')]=_0x479e79;if(_0x46fb62[_0xbcfb('0x31')]['includeAll']){_0x1b576b[_0xbcfb('0x3f')]=[{'all':!![]}];}return db[_0xbcfb('0x2c')]['findAll'](_0x1b576b);})['then'](function(_0x5cb872){_0x10fc16[_0xbcfb('0x40')]=_0x5cb872;return _0x10fc16;})['then'](respondWithFilteredResult(_0x26be1b,_0x1b576b))['catch'](handleError(_0x26be1b,null));};exports['show']=function(_0x345ad5,_0x38c374){var _0x3abb0b={'raw':![],'where':{'id':_0x345ad5[_0xbcfb('0x41')]['id']}},_0x3342b7={};_0x3342b7[_0xbcfb('0x30')]=_[_0xbcfb('0x42')](db[_0xbcfb('0x2c')][_0xbcfb('0x2d')]);_0x3342b7['query']=_[_0xbcfb('0x42')](_0x345ad5[_0xbcfb('0x31')]);_0x3342b7['filters']=_['intersection'](_0x3342b7['model'],_0x3342b7['query']);_0x3abb0b['attributes']=_[_0xbcfb('0x33')](_0x3342b7[_0xbcfb('0x30')],qs[_0xbcfb('0x35')](_0x345ad5[_0xbcfb('0x31')][_0xbcfb('0x35')]));_0x3abb0b[_0xbcfb('0x34')]=_0x3abb0b[_0xbcfb('0x34')][_0xbcfb('0x43')]?_0x3abb0b[_0xbcfb('0x34')]:_0x3342b7['model'];if(_0x345ad5['query'][_0xbcfb('0x44')]){_0x3abb0b[_0xbcfb('0x3f')]=[{'all':!![]}];}_0x3abb0b=_[_0xbcfb('0x3d')]({},_0x3abb0b,_0x345ad5['options']);return db['VoiceMusicOnHold'][_0xbcfb('0x45')](_0x3abb0b)[_0xbcfb('0x24')](handleEntityNotFound(_0x38c374,null))[_0xbcfb('0x24')](respondWithResult(_0x38c374,null))['catch'](handleError(_0x38c374,null));};exports[_0xbcfb('0x23')]=function(_0x2ee35f,_0x4558f1){if(_0x2ee35f[_0xbcfb('0x46')]['id']){delete _0x2ee35f['body']['id'];}return db['VoiceMusicOnHold'][_0xbcfb('0x45')]({'where':{'id':_0x2ee35f[_0xbcfb('0x41')]['id']}})[_0xbcfb('0x24')](handleEntityNotFound(_0x4558f1,null))[_0xbcfb('0x24')](saveUpdates(_0x2ee35f[_0xbcfb('0x46')],null))[_0xbcfb('0x24')](respondWithResult(_0x4558f1,null))['catch'](handleError(_0x4558f1,null));};exports[_0xbcfb('0x47')]=function(_0x2ed9de,_0x2e76bb,_0x13d5d6){return db[_0xbcfb('0x48')]['transaction'](function(_0x13d2a5){if(_0x2ed9de[_0xbcfb('0x46')]['mode']==='files'){_0x2ed9de[_0xbcfb('0x46')][_0xbcfb('0x49')]=path[_0xbcfb('0x4a')](config[_0xbcfb('0x4b')],_0xbcfb('0x4c'),_0x2ed9de['body'][_0xbcfb('0x29')]);}return db[_0xbcfb('0x2c')]['create'](_0x2ed9de['body'],{'transaction':_0x13d2a5})['then'](function(_0x567198){if(_0x2ed9de['body'][_0xbcfb('0x4d')]===_0xbcfb('0x4e')){fs['mkdirSync'](_0x567198[_0xbcfb('0x49')],parseInt(_0xbcfb('0x4f'),0x8));}var _0x5c66d8=_0x2ed9de[_0xbcfb('0x50')][_0xbcfb('0x51')]({'plain':!![]});if(!_0x5c66d8)throw new Error(_0xbcfb('0x52'));if(_0x5c66d8[_0xbcfb('0x53')]==='user'){var _0x42fc2f=_0x567198[_0xbcfb('0x51')]({'plain':!![]});return db['UserProfileSection'][_0xbcfb('0x45')]({'where':{'name':_0xbcfb('0x54'),'userProfileId':_0x5c66d8[_0xbcfb('0x55')]},'raw':!![]})[_0xbcfb('0x24')](function(_0x562bc7){if(_0x562bc7&&_0x562bc7['autoAssociation']===0x0){return db[_0xbcfb('0x26')][_0xbcfb('0x47')]({'name':_0x42fc2f[_0xbcfb('0x29')],'resourceId':_0x42fc2f['id'],'type':_0x562bc7[_0xbcfb('0x29')],'sectionId':_0x562bc7['id']},{})[_0xbcfb('0x24')](function(){return _0x567198;});}else{return _0x567198;}})[_0xbcfb('0x56')](function(_0x52d9d6){logger[_0xbcfb('0x27')](_0xbcfb('0x57'),_0x52d9d6);});}return _0x567198;});})['then'](respondWithResult(_0x2e76bb,0xc9))[_0xbcfb('0x56')](handleError(_0x2e76bb,null));};exports[_0xbcfb('0x25')]=function(_0x468d8a,_0x2e0d9b,_0x191b07){var _0x63c2e4;return db[_0xbcfb('0x2c')][_0xbcfb('0x45')]({'where':{'id':_0x468d8a['params']['id']}})[_0xbcfb('0x24')](function(_0x16188c){if(_0x16188c){return db['sequelize'][_0xbcfb('0x58')](function(_0x25c618){return _0x16188c[_0xbcfb('0x25')]({'transaction':_0x25c618,'raw':!![]})[_0xbcfb('0x24')](function(_0x2886ad){if(_0x2886ad['directory']){fs[_0xbcfb('0x59')](_0x2886ad['directory'])[_0xbcfb('0x5a')](function(_0x16c36e){fs[_0xbcfb('0x5b')](path[_0xbcfb('0x4a')](_0x2886ad[_0xbcfb('0x49')],_0x16c36e));});fs[_0xbcfb('0x5c')](_0x2886ad[_0xbcfb('0x49')]);}return _0x2886ad;});})['catch'](function(_0xe7d5bc){throw new db[(_0xbcfb('0x5d'))][(_0xbcfb('0x5e'))](_0xe7d5bc[_0xbcfb('0x5f')]);});}})[_0xbcfb('0x24')](handleEntityNotFound(_0x2e0d9b,null))[_0xbcfb('0x24')](removeEntity(_0x2e0d9b,null))[_0xbcfb('0x56')](handleError(_0x2e0d9b,null));};exports['addSound']=function(_0x2aff69,_0x45cd9a,_0x1db723){return db[_0xbcfb('0x48')][_0xbcfb('0x58')](function(_0x338d2d){var _0x36f183;return db['VoiceMusicOnHold'][_0xbcfb('0x45')]({'where':{'id':_0x2aff69[_0xbcfb('0x41')]['id']}})['then'](function(_0x40296d){if(_0x40296d){_0x36f183=_0x40296d;return _0x40296d[_0xbcfb('0x60')](_0x2aff69['body']['id'],{'transaction':_0x338d2d});}})[_0xbcfb('0x24')](function(_0x2634e6){if(_0x2634e6){return db['Sound']['findOne']({'where':{'id':_0x2aff69[_0xbcfb('0x46')]['id']},'attributes':['id','name','save_name',_0xbcfb('0x61'),_0xbcfb('0x62')],'raw':!![]});}})[_0xbcfb('0x24')](function(_0x1e2324){if(_0x1e2324){var _0x4a775a=path['join'](config[_0xbcfb('0x4b')],_0xbcfb('0x63'),util[_0xbcfb('0x64')]('%s.%s',path[_0xbcfb('0x65')](_0x1e2324[_0xbcfb('0x66')],path['extname'](_0x1e2324[_0xbcfb('0x66')])),_0x1e2324['converted_format']));var _0x413b5a=path['join'](config[_0xbcfb('0x4b')],_0xbcfb('0x4c'),_0x36f183['name'],util[_0xbcfb('0x64')](_0xbcfb('0x67'),_0x1e2324[_0xbcfb('0x29')],_0x1e2324['converted_format']));fs[_0xbcfb('0x68')](_0x4a775a,_0x413b5a);return _0x1e2324;}})[_0xbcfb('0x56')](function(_0x43d6e6){throw new db[(_0xbcfb('0x5d'))][(_0xbcfb('0x5e'))](_0x43d6e6['message']);});})[_0xbcfb('0x24')](handleEntityNotFound(_0x45cd9a,null))['then'](respondWithResult(_0x45cd9a,0xc9))[_0xbcfb('0x56')](handleError(_0x45cd9a,null));};exports[_0xbcfb('0x69')]=function(_0x405aa9,_0x215f2d,_0x1ccc67){return db[_0xbcfb('0x48')][_0xbcfb('0x58')](function(_0x2eb7d2){var _0x3db122;return db[_0xbcfb('0x2c')][_0xbcfb('0x6a')]({'where':{'id':_0x405aa9[_0xbcfb('0x41')]['id']}})[_0xbcfb('0x24')](handleEntityNotFound(_0x215f2d,null))['then'](function(_0x2b8b62){if(_0x2b8b62){_0x3db122=_0x2b8b62;return _0x2b8b62[_0xbcfb('0x69')](_0x405aa9['params'][_0xbcfb('0x6b')]);}})[_0xbcfb('0x24')](function(_0x27e7d8){if(_0x27e7d8){return db[_0xbcfb('0x6c')][_0xbcfb('0x6a')]({'where':{'id':_0x405aa9[_0xbcfb('0x41')][_0xbcfb('0x6b')]},'attributes':['id',_0xbcfb('0x29'),_0xbcfb('0x66'),_0xbcfb('0x61'),_0xbcfb('0x62')],'raw':!![]});}})['then'](function(_0x41ef07){if(_0x41ef07){fs[_0xbcfb('0x5b')](path[_0xbcfb('0x4a')](_0x3db122['directory'],util[_0xbcfb('0x64')]('%s.%s',_0x41ef07['name'],_0x41ef07['converted_format'])));return _0x41ef07;}})[_0xbcfb('0x56')](function(_0x871d85){throw new db['Sequelize']['ValidationError'](_0x871d85['message']);});})[_0xbcfb('0x24')](handleEntityNotFound(_0x215f2d,null))[_0xbcfb('0x24')](respondWithStatusCode(_0x215f2d,0xcc))[_0xbcfb('0x56')](handleError(_0x215f2d,null));};exports[_0xbcfb('0x6d')]=function(_0x35e6c1,_0x10ee6a,_0x2a89ae){var _0x42e751={};var _0x1dd831={};var _0x2f3f75;var _0x653a41;return db[_0xbcfb('0x2c')][_0xbcfb('0x6a')]({'where':{'id':_0x35e6c1['params']['id']}})[_0xbcfb('0x24')](handleEntityNotFound(_0x10ee6a,null))[_0xbcfb('0x24')](function(_0xceb19d){if(_0xceb19d){_0x2f3f75=_0xceb19d;_0x1dd831[_0xbcfb('0x30')]=_['keys'](db['Sound'][_0xbcfb('0x2d')]);_0x1dd831['query']=_['keys'](_0x35e6c1[_0xbcfb('0x31')]);_0x1dd831['filters']=_[_0xbcfb('0x33')](_0x1dd831['model'],_0x1dd831[_0xbcfb('0x31')]);_0x42e751['attributes']=_[_0xbcfb('0x33')](_0x1dd831[_0xbcfb('0x30')],qs[_0xbcfb('0x35')](_0x35e6c1[_0xbcfb('0x31')]['fields']));_0x42e751['attributes']=_0x42e751[_0xbcfb('0x34')][_0xbcfb('0x43')]?_0x42e751[_0xbcfb('0x34')]:_0x1dd831[_0xbcfb('0x30')];_0x42e751[_0xbcfb('0x38')]=qs[_0xbcfb('0x39')](_0x35e6c1[_0xbcfb('0x31')][_0xbcfb('0x39')]);_0x42e751['where']=qs[_0xbcfb('0x32')](_['pick'](_0x35e6c1['query'],_0x1dd831[_0xbcfb('0x32')]));if(_0x35e6c1[_0xbcfb('0x31')][_0xbcfb('0x3c')]){_0x42e751['where']=_[_0xbcfb('0x3d')](_0x42e751[_0xbcfb('0x3a')],{'$or':_[_0xbcfb('0x6e')](_0x42e751[_0xbcfb('0x34')],function(_0x52c783){var _0x1f9c5e={};_0x1f9c5e[_0x52c783]={'$like':'%'+_0x35e6c1['query'][_0xbcfb('0x3c')]+'%'};return _0x1f9c5e;})});}_0x42e751=_['merge']({},_0x42e751,_0x35e6c1['options']);return _0x2f3f75[_0xbcfb('0x6d')](_0x42e751);}})[_0xbcfb('0x24')](function(_0x159f3c){if(_0x159f3c){_0x653a41=_0x159f3c[_0xbcfb('0x43')];if(!_0x35e6c1['query'][_0xbcfb('0x36')](_0xbcfb('0x37'))){_0x42e751[_0xbcfb('0x1d')]=qs[_0xbcfb('0x1d')](_0x35e6c1['query']['limit']);_0x42e751['offset']=qs[_0xbcfb('0x1c')](_0x35e6c1['query'][_0xbcfb('0x1c')]);}return _0x2f3f75['getSounds'](_0x42e751);}})[_0xbcfb('0x24')](function(_0x175c4f){if(_0x175c4f){return _0x175c4f?{'count':_0x653a41,'rows':_0x175c4f}:null;}})[_0xbcfb('0x24')](respondWithResult(_0x10ee6a,null))[_0xbcfb('0x56')](handleError(_0x10ee6a,null));};
\ No newline at end of file
index 56a917d..b69019d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb234=['path','../../config/environment','./voiceMusicOnHold.attributes','exports','define','VoiceMusicOnHold','voice_musiconhold','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0xb234,0xe4));var _0x4b23=function(_0x306aad,_0x121723){_0x306aad=_0x306aad-0x0;var _0x35ffff=_0xb234[_0x306aad];return _0x35ffff;};'use strict';var _=require(_0x4b23('0x0'));var util=require(_0x4b23('0x1'));var logger=require(_0x4b23('0x2'))(_0x4b23('0x3'));var moment=require(_0x4b23('0x4'));var BPromise=require('bluebird');var rp=require(_0x4b23('0x5'));var fs=require('fs');var path=require(_0x4b23('0x6'));var rimraf=require('rimraf');var config=require(_0x4b23('0x7'));var attributes=require(_0x4b23('0x8'));module[_0x4b23('0x9')]=function(_0x6c40f9,_0x29f412){return _0x6c40f9[_0x4b23('0xa')](_0x4b23('0xb'),attributes,{'tableName':_0x4b23('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0587=['path','../../config/environment','./voiceMusicOnHold.attributes','define','VoiceMusicOnHold','lodash','util','api','bluebird','request-promise'];(function(_0x3be801,_0x3abd88){var _0x107c60=function(_0x426d0a){while(--_0x426d0a){_0x3be801['push'](_0x3be801['shift']());}};_0x107c60(++_0x3abd88);}(_0x0587,0x181));var _0x7058=function(_0x817d9b,_0x3c37e3){_0x817d9b=_0x817d9b-0x0;var _0x2752e1=_0x0587[_0x817d9b];return _0x2752e1;};'use strict';var _=require(_0x7058('0x0'));var util=require(_0x7058('0x1'));var logger=require('../../config/logger')(_0x7058('0x2'));var moment=require('moment');var BPromise=require(_0x7058('0x3'));var rp=require(_0x7058('0x4'));var fs=require('fs');var path=require(_0x7058('0x5'));var rimraf=require('rimraf');var config=require(_0x7058('0x6'));var attributes=require(_0x7058('0x7'));module['exports']=function(_0x2efca6,_0x4d7022){return _0x2efca6[_0x7058('0x8')](_0x7058('0x9'),attributes,{'tableName':'voice_musiconhold','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 73b83ef..9211426 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x215d7c,_0x576946){var _0x4773a4=function(_0x135fa4){while(--_0x135fa4){_0x215d7c['push'](_0x215d7c['shift']());}};_0x4773a4(++_0x576946);}(_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});function respondWithRpcPromise(_0x1d3dd6,_0x2f1e87,_0xbd737f){return new BPromise(function(_0x22274c,_0x3e9a5e){return client[_0x3071('0xb')](_0x1d3dd6,_0xbd737f)[_0x3071('0xc')](function(_0x4a36ec){logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));logger[_0x3071('0x10')](_0x3071('0x11'),_0x2f1e87,'request\x20sent',JSON[_0x3071('0x12')](_0x4a36ec));if(_0x4a36ec[_0x3071('0x13')]){if(_0x4a36ec[_0x3071('0x13')][_0x3071('0x14')]===0x1f4){logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec['error'][_0x3071('0x15')]);return _0x3e9a5e(_0x4a36ec['error'][_0x3071('0x15')]);}logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec[_0x3071('0x13')]['message']);return _0x22274c(_0x4a36ec[_0x3071('0x13')][_0x3071('0x15')]);}else{logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));_0x22274c(_0x4a36ec[_0x3071('0x16')][_0x3071('0x15')]);}})[_0x3071('0x17')](function(_0x21aad3){logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x21aad3);_0x3e9a5e(_0x21aad3);});});}
\ No newline at end of file
+var _0xa9e0=['http','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x51c333,_0x515495){var _0x5551ab=function(_0x338f37){while(--_0x338f37){_0x51c333['push'](_0x51c333['shift']());}};_0x5551ab(++_0x515495);}(_0xa9e0,0x123));var _0x0a9e=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xa9e0[_0x501510];return _0x1e6ee5;};'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 d423eb7..3a8d41e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf023=['delete','destroy','removeAgents','exports','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','show','/:id/users','getAgents','create','post','addAgents','put','update'];(function(_0x2c7b86,_0x59ef3c){var _0x256735=function(_0x352e33){while(--_0x352e33){_0x2c7b86['push'](_0x2c7b86['shift']());}};_0x256735(++_0x59ef3c);}(_0xf023,0xf6));var _0x3f02=function(_0x425d02,_0x50bab9){_0x425d02=_0x425d02-0x0;var _0x30c0eb=_0xf023[_0x425d02];return _0x30c0eb;};'use strict';var multer=require(_0x3f02('0x0'));var util=require(_0x3f02('0x1'));var path=require(_0x3f02('0x2'));var timeout=require(_0x3f02('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x3f02('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3f02('0x5'));var config=require(_0x3f02('0x6'));var controller=require('./voicePrefix.controller');router[_0x3f02('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x3f02('0x7')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x3f02('0x7')](_0x3f02('0x8'),auth[_0x3f02('0x9')](),controller[_0x3f02('0xa')]);router[_0x3f02('0x7')](_0x3f02('0xb'),auth[_0x3f02('0x9')](),controller[_0x3f02('0xc')]);router['post']('/',auth[_0x3f02('0x9')](),controller[_0x3f02('0xd')]);router[_0x3f02('0xe')](_0x3f02('0xb'),auth['isAuthenticated'](),controller[_0x3f02('0xf')]);router[_0x3f02('0x10')](_0x3f02('0x8'),auth[_0x3f02('0x9')](),controller[_0x3f02('0x11')]);router[_0x3f02('0x12')](_0x3f02('0x8'),auth[_0x3f02('0x9')](),controller[_0x3f02('0x13')]);router['delete'](_0x3f02('0xb'),auth[_0x3f02('0x9')](),controller[_0x3f02('0x14')]);module[_0x3f02('0x15')]=router;
\ No newline at end of file
+var _0x4b6c=['multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','/:id','show','/:id/users','getAgents','post','create','addAgents','put','update','delete','destroy','removeAgents','exports'];(function(_0x1ce9ea,_0x32e6f4){var _0x2a95b9=function(_0x1a0496){while(--_0x1a0496){_0x1ce9ea['push'](_0x1ce9ea['shift']());}};_0x2a95b9(++_0x32e6f4);}(_0x4b6c,0xaf));var _0xc4b6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4b6c[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xc4b6('0x0'));var util=require('util');var path=require(_0xc4b6('0x1'));var timeout=require(_0xc4b6('0x2'));var express=require(_0xc4b6('0x3'));var router=express[_0xc4b6('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xc4b6('0x5'));var interaction=require(_0xc4b6('0x6'));var config=require(_0xc4b6('0x7'));var controller=require('./voicePrefix.controller');router[_0xc4b6('0x8')]('/',auth[_0xc4b6('0x9')](),controller[_0xc4b6('0xa')]);router[_0xc4b6('0x8')](_0xc4b6('0xb'),auth[_0xc4b6('0x9')](),controller['describe']);router[_0xc4b6('0x8')](_0xc4b6('0xc'),auth['isAuthenticated'](),controller[_0xc4b6('0xd')]);router['get'](_0xc4b6('0xe'),auth[_0xc4b6('0x9')](),controller[_0xc4b6('0xf')]);router[_0xc4b6('0x10')]('/',auth['isAuthenticated'](),controller[_0xc4b6('0x11')]);router[_0xc4b6('0x10')](_0xc4b6('0xe'),auth['isAuthenticated'](),controller[_0xc4b6('0x12')]);router[_0xc4b6('0x13')](_0xc4b6('0xc'),auth[_0xc4b6('0x9')](),controller[_0xc4b6('0x14')]);router[_0xc4b6('0x15')](_0xc4b6('0xc'),auth[_0xc4b6('0x9')](),controller[_0xc4b6('0x16')]);router[_0xc4b6('0x15')]('/:id/users',auth['isAuthenticated'](),controller[_0xc4b6('0x17')]);module[_0xc4b6('0x18')]=router;
\ No newline at end of file
index 032af6a..d17881c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9894=['VIRTUAL','INTEGER','sequelize','exports','STRING','name'];(function(_0x225791,_0x1bf3e6){var _0x367e17=function(_0x562c4d){while(--_0x562c4d){_0x225791['push'](_0x225791['shift']());}};_0x367e17(++_0x1bf3e6);}(_0x9894,0x1f4));var _0x4989=function(_0x5224bf,_0x42170b){_0x5224bf=_0x5224bf-0x0;var _0x382dff=_0x9894[_0x5224bf];return _0x382dff;};'use strict';var Sequelize=require(_0x4989('0x0'));module[_0x4989('0x1')]={'name':{'type':Sequelize[_0x4989('0x2')],'allowNull':![],'unique':_0x4989('0x3')},'prefix':{'type':Sequelize[_0x4989('0x4')],'get':function(_0x28c5ab){return'system-'+this['getDataValue'](_0x4989('0x3'))+'-';}},'description':{'type':Sequelize[_0x4989('0x2')]},'callerIdAll':{'type':Sequelize[_0x4989('0x2')]},'VoiceExtensionId':{'type':Sequelize[_0x4989('0x5')]}};
\ No newline at end of file
+var _0xc496=['getDataValue','INTEGER','sequelize','exports','STRING','name','VIRTUAL','system-'];(function(_0x58bdd8,_0x1de16f){var _0x7870ad=function(_0x294bf6){while(--_0x294bf6){_0x58bdd8['push'](_0x58bdd8['shift']());}};_0x7870ad(++_0x1de16f);}(_0xc496,0xba));var _0x6c49=function(_0x219fa0,_0x18b239){_0x219fa0=_0x219fa0-0x0;var _0xc603fb=_0xc496[_0x219fa0];return _0xc603fb;};'use strict';var Sequelize=require(_0x6c49('0x0'));module[_0x6c49('0x1')]={'name':{'type':Sequelize[_0x6c49('0x2')],'allowNull':![],'unique':_0x6c49('0x3')},'prefix':{'type':Sequelize[_0x6c49('0x4')],'get':function(_0x54e0af){return _0x6c49('0x5')+this[_0x6c49('0x6')](_0x6c49('0x3'))+'-';}},'description':{'type':Sequelize['STRING']},'callerIdAll':{'type':Sequelize[_0x6c49('0x2')]},'VoiceExtensionId':{'type':Sequelize[_0x6c49('0x7')]}};
\ No newline at end of file
index 0d3901b..6d81991 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb35=['./voicePrefix.socket','register','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','then','destroy','get','VoicePrefixes','error','name','send','index','map','VoicePrefix','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','params','rawAttributes','options','find','describe','create','sequelize','body','VoiceExtension','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','context','exten','app','system','description','Voice\x20Prefix\x20Extension','priority','appdata','prefix','Voice\x20Prefix','VoiceExtensionId','VoicePrefixId','Extensions\x20creation\x20failed','push','Set','callerIdAll','NoOp','No\x20callerid\x20available','goto','charAt','update','system-','transaction','findById','omit','spread','ids','emit','removeAgents','isArray','userVoicePrefix:remove','User','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter'];(function(_0x53fb23,_0x3599fb){var _0x2eea03=function(_0x3e766f){while(--_0x3e766f){_0x53fb23['push'](_0x53fb23['shift']());}};_0x2eea03(++_0x3599fb);}(_0xbb35,0x1d3));var _0x5bb3=function(_0x720852,_0x1e9302){_0x720852=_0x720852-0x0;var _0x43ba74=_0xbb35[_0x720852];return _0x43ba74;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5bb3('0x0'));var zipdir=require(_0x5bb3('0x1'));var jsonpatch=require(_0x5bb3('0x2'));var rp=require(_0x5bb3('0x3'));var moment=require(_0x5bb3('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x5bb3('0x5'));var util=require(_0x5bb3('0x6'));var path=require(_0x5bb3('0x7'));var sox=require(_0x5bb3('0x8'));var csv=require(_0x5bb3('0x9'));var ejs=require(_0x5bb3('0xa'));var fs=require('fs');var fs_extra=require(_0x5bb3('0xb'));var _=require(_0x5bb3('0xc'));var squel=require(_0x5bb3('0xd'));var crypto=require('crypto');var jsforce=require(_0x5bb3('0xe'));var deskjs=require(_0x5bb3('0xf'));var toCsv=require(_0x5bb3('0x9'));var querystring=require(_0x5bb3('0x10'));var Papa=require('papaparse');var Redis=require(_0x5bb3('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x5bb3('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5bb3('0x13'));var logger=require(_0x5bb3('0x14'))(_0x5bb3('0x15'));var utils=require(_0x5bb3('0x16'));var config=require(_0x5bb3('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x5bb3('0x18'))['db'];config[_0x5bb3('0x19')]=_[_0x5bb3('0x1a')](config['redis'],{'host':_0x5bb3('0x1b'),'port':0x18eb});var socket=require(_0x5bb3('0x1c'))(new Redis(config[_0x5bb3('0x19')]));require(_0x5bb3('0x1d'))[_0x5bb3('0x1e')](socket);function respondWithStatusCode(_0x2835b1,_0x230dbf){_0x230dbf=_0x230dbf||0xcc;return function(_0x171369){if(_0x171369){return _0x2835b1['sendStatus'](_0x230dbf);}return _0x2835b1['status'](_0x230dbf)['end']();};}function respondWithResult(_0x3722f3,_0x1da0b6){_0x1da0b6=_0x1da0b6||0xc8;return function(_0x388802){if(_0x388802){return _0x3722f3[_0x5bb3('0x1f')](_0x1da0b6)[_0x5bb3('0x20')](_0x388802);}};}function respondWithFilteredResult(_0x24bd58,_0x364b86){return function(_0xbbaf0){if(_0xbbaf0){var _0x107dbb=typeof _0x364b86[_0x5bb3('0x21')]==='undefined'&&typeof _0x364b86['limit']===_0x5bb3('0x22');var _0x41c9a5=_0xbbaf0[_0x5bb3('0x23')];var _0x442ee2=_0x107dbb?0x0:_0x364b86[_0x5bb3('0x21')];var _0x3fe551=_0x107dbb?_0xbbaf0[_0x5bb3('0x23')]:_0x364b86['offset']+_0x364b86[_0x5bb3('0x24')];var _0x3b1325;if(_0x3fe551>=_0x41c9a5){_0x3fe551=_0x41c9a5;_0x3b1325=0xc8;}else{_0x3b1325=0xce;}_0x24bd58[_0x5bb3('0x1f')](_0x3b1325);return _0x24bd58['set'](_0x5bb3('0x25'),_0x442ee2+'-'+_0x3fe551+'/'+_0x41c9a5)['json'](_0xbbaf0);}return null;};}function patchUpdates(_0xa16d6e){return function(_0x4be614){try{jsonpatch[_0x5bb3('0x26')](_0x4be614,_0xa16d6e,!![]);}catch(_0x384f57){return BPromise[_0x5bb3('0x27')](_0x384f57);}return _0x4be614[_0x5bb3('0x28')]();};}function saveUpdates(_0x2f9ca3,_0x904ca3){return function(_0x2fa05b){if(_0x2fa05b){return _0x2fa05b['update'](_0x2f9ca3)[_0x5bb3('0x29')](function(_0x41e28f){return _0x41e28f;});}return null;};}function removeEntity(_0x4c4a7a,_0x439ee4){return function(_0x256a5f){if(_0x256a5f){return _0x256a5f[_0x5bb3('0x2a')]()[_0x5bb3('0x29')](function(){var _0x21da73=_0x256a5f[_0x5bb3('0x2b')]({'plain':!![]});var _0x405eea=_0x5bb3('0x2c');return db['UserProfileResource']['destroy']({'where':{'type':_0x405eea,'resourceId':_0x21da73['id']}})[_0x5bb3('0x29')](function(){return _0x256a5f;});})['then'](function(){_0x4c4a7a[_0x5bb3('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x831fd4,_0xbdc0b5){return function(_0x104efe){if(!_0x104efe){_0x831fd4['sendStatus'](0x194);}return _0x104efe;};}function handleError(_0x28c825,_0x29a442){_0x29a442=_0x29a442||0x1f4;return function(_0x461109){logger[_0x5bb3('0x2d')](_0x461109['stack']);if(_0x461109['name']){delete _0x461109[_0x5bb3('0x2e')];}_0x28c825['status'](_0x29a442)[_0x5bb3('0x2f')](_0x461109);};}exports[_0x5bb3('0x30')]=function(_0x5217ca,_0x321834){var _0xd935a7={},_0x3d7115={},_0xe5981a={'count':0x0,'rows':[]};var _0x46ba29=_[_0x5bb3('0x31')](db[_0x5bb3('0x32')]['rawAttributes'],function(_0x554fc0){return{'name':_0x554fc0['fieldName'],'type':_0x554fc0[_0x5bb3('0x33')][_0x5bb3('0x34')]};});_0x3d7115[_0x5bb3('0x35')]=_[_0x5bb3('0x31')](_0x46ba29,'name');_0x3d7115['query']=_[_0x5bb3('0x36')](_0x5217ca[_0x5bb3('0x37')]);_0x3d7115[_0x5bb3('0x38')]=_[_0x5bb3('0x39')](_0x3d7115[_0x5bb3('0x35')],_0x3d7115[_0x5bb3('0x37')]);_0xd935a7['attributes']=_[_0x5bb3('0x39')](_0x3d7115[_0x5bb3('0x35')],qs[_0x5bb3('0x3a')](_0x5217ca[_0x5bb3('0x37')][_0x5bb3('0x3a')]));_0xd935a7['attributes']=_0xd935a7[_0x5bb3('0x3b')][_0x5bb3('0x3c')]?_0xd935a7[_0x5bb3('0x3b')]:_0x3d7115[_0x5bb3('0x35')];if(!_0x5217ca[_0x5bb3('0x37')][_0x5bb3('0x3d')](_0x5bb3('0x3e'))){_0xd935a7[_0x5bb3('0x24')]=qs[_0x5bb3('0x24')](_0x5217ca[_0x5bb3('0x37')]['limit']);_0xd935a7[_0x5bb3('0x21')]=qs[_0x5bb3('0x21')](_0x5217ca[_0x5bb3('0x37')][_0x5bb3('0x21')]);}_0xd935a7[_0x5bb3('0x3f')]=qs[_0x5bb3('0x40')](_0x5217ca[_0x5bb3('0x37')][_0x5bb3('0x40')]);_0xd935a7[_0x5bb3('0x41')]=qs[_0x5bb3('0x38')](_[_0x5bb3('0x42')](_0x5217ca['query'],_0x3d7115[_0x5bb3('0x38')]),_0x46ba29);if(_0x5217ca[_0x5bb3('0x37')]['filter']){_0xd935a7[_0x5bb3('0x41')]=_[_0x5bb3('0x43')](_0xd935a7[_0x5bb3('0x41')],{'$or':_[_0x5bb3('0x31')](_0x46ba29,function(_0x3a9858){if(_0x3a9858['type']!==_0x5bb3('0x44')){var _0x11a482={};_0x11a482[_0x3a9858[_0x5bb3('0x2e')]]={'$like':'%'+_0x5217ca[_0x5bb3('0x37')][_0x5bb3('0x45')]+'%'};return _0x11a482;}})});}_0xd935a7=_[_0x5bb3('0x43')]({},_0xd935a7,_0x5217ca['options']);var _0x6d6c39={'where':_0xd935a7['where']};return db[_0x5bb3('0x32')][_0x5bb3('0x23')](_0x6d6c39)['then'](function(_0x2f20c7){_0xe5981a['count']=_0x2f20c7;if(_0x5217ca[_0x5bb3('0x37')][_0x5bb3('0x46')]){_0xd935a7[_0x5bb3('0x47')]=[{'all':!![]}];}return db[_0x5bb3('0x32')][_0x5bb3('0x48')](_0xd935a7);})[_0x5bb3('0x29')](function(_0x58969c){_0xe5981a[_0x5bb3('0x49')]=_0x58969c;return _0xe5981a;})[_0x5bb3('0x29')](respondWithFilteredResult(_0x321834,_0xd935a7))[_0x5bb3('0x4a')](handleError(_0x321834,null));};exports[_0x5bb3('0x4b')]=function(_0x47cad3,_0x29f54f){var _0x36bdaf={'raw':![],'where':{'id':_0x47cad3[_0x5bb3('0x4c')]['id']}},_0x3f46c8={};_0x3f46c8[_0x5bb3('0x35')]=_[_0x5bb3('0x36')](db[_0x5bb3('0x32')][_0x5bb3('0x4d')]);_0x3f46c8[_0x5bb3('0x37')]=_['keys'](_0x47cad3[_0x5bb3('0x37')]);_0x3f46c8[_0x5bb3('0x38')]=_[_0x5bb3('0x39')](_0x3f46c8[_0x5bb3('0x35')],_0x3f46c8[_0x5bb3('0x37')]);_0x36bdaf[_0x5bb3('0x3b')]=_[_0x5bb3('0x39')](_0x3f46c8[_0x5bb3('0x35')],qs[_0x5bb3('0x3a')](_0x47cad3[_0x5bb3('0x37')][_0x5bb3('0x3a')]));_0x36bdaf[_0x5bb3('0x3b')]=_0x36bdaf[_0x5bb3('0x3b')][_0x5bb3('0x3c')]?_0x36bdaf[_0x5bb3('0x3b')]:_0x3f46c8[_0x5bb3('0x35')];if(_0x47cad3[_0x5bb3('0x37')][_0x5bb3('0x46')]){_0x36bdaf[_0x5bb3('0x47')]=[{'all':!![]}];}_0x36bdaf=_[_0x5bb3('0x43')]({},_0x36bdaf,_0x47cad3[_0x5bb3('0x4e')]);return db[_0x5bb3('0x32')][_0x5bb3('0x4f')](_0x36bdaf)[_0x5bb3('0x29')](handleEntityNotFound(_0x29f54f,null))[_0x5bb3('0x29')](respondWithResult(_0x29f54f,null))[_0x5bb3('0x4a')](handleError(_0x29f54f,null));};exports[_0x5bb3('0x2a')]=function(_0x444733,_0x24756a){return db[_0x5bb3('0x32')][_0x5bb3('0x4f')]({'where':{'id':_0x444733['params']['id']}})[_0x5bb3('0x29')](handleEntityNotFound(_0x24756a,null))[_0x5bb3('0x29')](removeEntity(_0x24756a,null))['catch'](handleError(_0x24756a,null));};exports[_0x5bb3('0x50')]=function(_0xa2fc6e,_0x444681){return db['VoicePrefix'][_0x5bb3('0x50')]()[_0x5bb3('0x29')](respondWithResult(_0x444681,null))[_0x5bb3('0x4a')](handleError(_0x444681,null));};exports[_0x5bb3('0x51')]=function(_0x40d008,_0x373607){var _0x520abe;return db[_0x5bb3('0x52')]['transaction'](function(_0xffa73e){return db[_0x5bb3('0x32')][_0x5bb3('0x51')](_0x40d008[_0x5bb3('0x53')],{'transaction':_0xffa73e})['then'](function(_0x4938ca){_0x520abe=_0x4938ca[_0x5bb3('0x2b')]({'plain':!![]});return db[_0x5bb3('0x54')]['find']({'where':{'id':_0x520abe['VoiceExtensionId']},'raw':!![]})[_0x5bb3('0x29')](function(_0x937d9f){return createVoicePrefixExtensions(_0x520abe,_0x937d9f,_0xffa73e);});});})[_0x5bb3('0x29')](function(){var _0x23bf72=_0x40d008['user'][_0x5bb3('0x2b')]({'plain':!![]});if(!_0x23bf72)throw new Error(_0x5bb3('0x55'));if(_0x23bf72[_0x5bb3('0x56')]===_0x5bb3('0x57')){var _0x5ef434=_0x520abe;return db[_0x5bb3('0x58')][_0x5bb3('0x4f')]({'where':{'name':_0x5bb3('0x2c'),'userProfileId':_0x23bf72[_0x5bb3('0x59')]},'raw':!![]})[_0x5bb3('0x29')](function(_0x4eb322){if(_0x4eb322&&_0x4eb322[_0x5bb3('0x5a')]===0x0){return db['UserProfileResource'][_0x5bb3('0x51')]({'name':_0x5ef434['name'],'resourceId':_0x5ef434['id'],'type':_0x4eb322[_0x5bb3('0x2e')],'sectionId':_0x4eb322['id']},{})[_0x5bb3('0x29')](function(){return _0x520abe;});}else{return _0x520abe;}})['catch'](function(_0x31eba1){logger[_0x5bb3('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x31eba1);throw _0x31eba1;});}return _0x520abe;})['then'](respondWithResult(_0x373607,null))[_0x5bb3('0x4a')](handleError(_0x373607,null));};function Extension(_0x357bfe,_0x207a02,_0x1cc66a,_0x1f7303){this[_0x5bb3('0x5b')]='from-sip';this[_0x5bb3('0x5c')]=_0x357bfe;this[_0x5bb3('0x5d')]=_0x1cc66a;this[_0x5bb3('0x33')]=_0x5bb3('0x5e');this[_0x5bb3('0x5f')]=_0x5bb3('0x60');this[_0x5bb3('0x61')]=_0x207a02;this[_0x5bb3('0x62')]=_0x1f7303;}function createVoicePrefixExtensions(_0x5503eb,_0x2435df,_0x51fb55){return new BPromise(function(_0xf3a144,_0x420f80){var _0x318327=new Extension(formatPrefixName(_0x5503eb[_0x5bb3('0x63')]),0x1,'NoOp',_0x5bb3('0x64'));_0x318327['VoicePrefixId']=_0x5503eb['id'];return db[_0x5bb3('0x54')][_0x5bb3('0x51')](_0x318327,{'transaction':_0x51fb55})['then'](function(_0x2cf2f5){var _0x3f2d79=_0x2cf2f5[_0x5bb3('0x2b')]({'plain':!![]});var _0x184e3f=_[_0x5bb3('0x31')](addVoicePrefixExtensions(_0x5503eb,_0x2435df),function(_0x1ef60d){_0x1ef60d[_0x5bb3('0x65')]=_0x3f2d79['id'];_0x1ef60d[_0x5bb3('0x66')]=_0x5503eb['id'];return _0x1ef60d;});return db['VoiceExtension']['bulkCreate'](_0x184e3f,{'transaction':_0x51fb55})[_0x5bb3('0x29')](function(_0x3c2b38){if(!_0x3c2b38){return _0x420f80(_0x5bb3('0x67'));}else{return _0xf3a144(_0x3c2b38);}})['catch'](function(_0x25036f){return _0x420f80(_0x25036f);});});;});};function addVoicePrefixExtensions(_0x30be44,_0x2295d2){var _0x58447=[];var _0x37dbd5=formatPrefixName(_0x30be44['prefix']);_0x58447[_0x5bb3('0x68')](new Extension(_0x37dbd5,0x2,_0x5bb3('0x69'),'CDR(prefix)='+_0x30be44[_0x5bb3('0x2e')]));if(_0x30be44[_0x5bb3('0x6a')]){_0x58447[_0x5bb3('0x68')](new Extension(_0x37dbd5,0x3,_0x5bb3('0x69'),'PREFIX-CALLERIDALL='+_0x30be44[_0x5bb3('0x6a')]));}else{_0x58447[_0x5bb3('0x68')](new Extension(_0x37dbd5,0x3,_0x5bb3('0x6b'),_0x5bb3('0x6c')));}_0x58447[_0x5bb3('0x68')](new Extension(_0x37dbd5,0x4,_0x5bb3('0x6d'),_0x2295d2[_0x5bb3('0x5b')]+','+'${EXTEN:'+(0x8+_0x30be44[_0x5bb3('0x2e')][_0x5bb3('0x3c')])+'}'+','+0x1));return _0x58447;}function formatPrefixName(_0xf89c58){var _0x1fae78='_';for(var _0x40931e=0x0;_0x40931e<_0xf89c58[_0x5bb3('0x3c')];_0x40931e++){if(_0xf89c58[_0x5bb3('0x6e')](_0x40931e)=='-'){_0x1fae78+=_0xf89c58[_0x5bb3('0x6e')](_0x40931e);}else{_0x1fae78+='['+_0xf89c58[_0x5bb3('0x6e')](_0x40931e)+']';}}_0x1fae78+='.';return _0x1fae78;}exports[_0x5bb3('0x6f')]=function(_0x6ac10a,_0x434232,_0x4c307d){var _0x20ade7=_0x6ac10a[_0x5bb3('0x53')];_0x20ade7[_0x5bb3('0x63')]=_0x5bb3('0x70')+_0x20ade7['name']+'-';return db[_0x5bb3('0x52')][_0x5bb3('0x71')](function(_0x424dca){return db[_0x5bb3('0x32')][_0x5bb3('0x6f')](_0x20ade7,{'where':{'id':_0x20ade7['id']},'transaction':_0x424dca})['then'](function(){return db[_0x5bb3('0x54')][_0x5bb3('0x2a')]({'where':{'VoicePrefixId':_0x20ade7['id']},'transaction':_0x424dca})[_0x5bb3('0x29')](function(){return db['VoiceExtension']['find']({'where':{'id':_0x20ade7[_0x5bb3('0x65')]},'raw':!![]})[_0x5bb3('0x29')](function(_0xac04e2){return createVoicePrefixExtensions(_0x20ade7,_0xac04e2,_0x424dca);});});});})[_0x5bb3('0x29')](function(){return db['VoicePrefix'][_0x5bb3('0x72')](_0x20ade7['id']);})[_0x5bb3('0x29')](respondWithResult(_0x434232,null))[_0x5bb3('0x4a')](handleError(_0x434232,null));};exports['addAgents']=function(_0x45a8c3,_0x479615,_0x5e8133){return db[_0x5bb3('0x32')]['find']({'where':{'id':_0x45a8c3[_0x5bb3('0x4c')]['id']}})[_0x5bb3('0x29')](handleEntityNotFound(_0x479615,null))['then'](function(_0x4f66fb){if(_0x4f66fb){return _0x4f66fb['addAgents'](_0x45a8c3['body']['ids'],_[_0x5bb3('0x73')](_0x45a8c3[_0x5bb3('0x53')],['ids','id'])||{})[_0x5bb3('0x74')](function(_0x39948c){for(var _0x4d12c2=0x0;_0x4d12c2<_0x45a8c3[_0x5bb3('0x53')][_0x5bb3('0x75')]['length'];_0x4d12c2+=0x1){socket[_0x5bb3('0x76')]('userVoicePrefix:save',{'UserId':Number(_0x45a8c3[_0x5bb3('0x53')][_0x5bb3('0x75')][_0x4d12c2]),'VoicePrefixId':Number(_0x45a8c3[_0x5bb3('0x4c')]['id'])});}return _0x39948c;});}})[_0x5bb3('0x29')](respondWithResult(_0x479615,null))[_0x5bb3('0x4a')](handleError(_0x479615,null));};exports[_0x5bb3('0x77')]=function(_0xa6d6ad,_0x25d995,_0x1d794f){return db[_0x5bb3('0x32')][_0x5bb3('0x4f')]({'where':{'id':_0xa6d6ad[_0x5bb3('0x4c')]['id']}})[_0x5bb3('0x29')](handleEntityNotFound(_0x25d995,null))['then'](function(_0x485871){if(_0x485871){return _0x485871[_0x5bb3('0x77')](_0xa6d6ad[_0x5bb3('0x37')][_0x5bb3('0x75')])[_0x5bb3('0x29')](function(){if(_[_0x5bb3('0x78')](_0xa6d6ad[_0x5bb3('0x37')][_0x5bb3('0x75')])){for(var _0xca282f=0x0;_0xca282f<_0xa6d6ad[_0x5bb3('0x37')][_0x5bb3('0x75')][_0x5bb3('0x3c')];_0xca282f+=0x1){socket[_0x5bb3('0x76')](_0x5bb3('0x79'),{'UserId':Number(_0xa6d6ad[_0x5bb3('0x37')][_0x5bb3('0x75')][_0xca282f]),'VoicePrefixId':Number(_0xa6d6ad['params']['id'])});}}else{socket[_0x5bb3('0x76')]('userVoicePrefix:remove',{'UserId':Number(_0xa6d6ad[_0x5bb3('0x37')][_0x5bb3('0x75')]),'VoicePrefixId':Number(_0xa6d6ad[_0x5bb3('0x4c')]['id'])});}});}})[_0x5bb3('0x29')](respondWithStatusCode(_0x25d995,null))[_0x5bb3('0x4a')](handleError(_0x25d995,null));};exports['getAgents']=function(_0x3c7f46,_0x547c8f,_0x348766){var _0x2af4ce={};var _0x31499e={};var _0x38e449;var _0x43d2da;return db[_0x5bb3('0x32')]['findOne']({'where':{'id':_0x3c7f46[_0x5bb3('0x4c')]['id']}})[_0x5bb3('0x29')](handleEntityNotFound(_0x547c8f,null))[_0x5bb3('0x29')](function(_0x28c0fe){if(_0x28c0fe){_0x38e449=_0x28c0fe;_0x31499e[_0x5bb3('0x35')]=_['keys'](db[_0x5bb3('0x7a')][_0x5bb3('0x4d')]);_0x31499e['query']=_[_0x5bb3('0x36')](_0x3c7f46[_0x5bb3('0x37')]);_0x31499e[_0x5bb3('0x38')]=_[_0x5bb3('0x39')](_0x31499e[_0x5bb3('0x35')],_0x31499e['query']);_0x2af4ce[_0x5bb3('0x3b')]=_[_0x5bb3('0x39')](_0x31499e[_0x5bb3('0x35')],qs[_0x5bb3('0x3a')](_0x3c7f46['query']['fields']));_0x2af4ce[_0x5bb3('0x3b')]=_0x2af4ce[_0x5bb3('0x3b')][_0x5bb3('0x3c')]?_0x2af4ce[_0x5bb3('0x3b')]:_0x31499e[_0x5bb3('0x35')];_0x2af4ce['order']=qs[_0x5bb3('0x40')](_0x3c7f46[_0x5bb3('0x37')]['sort']);_0x2af4ce[_0x5bb3('0x41')]=qs['filters'](_['pick'](_0x3c7f46[_0x5bb3('0x37')],_0x31499e[_0x5bb3('0x38')]));if(_0x3c7f46[_0x5bb3('0x37')][_0x5bb3('0x45')]){_0x2af4ce[_0x5bb3('0x41')]=_[_0x5bb3('0x43')](_0x2af4ce[_0x5bb3('0x41')],{'$or':_[_0x5bb3('0x31')](_0x2af4ce[_0x5bb3('0x3b')],function(_0x1ae91a){var _0x27b90a={};_0x27b90a[_0x1ae91a]={'$like':'%'+_0x3c7f46[_0x5bb3('0x37')][_0x5bb3('0x45')]+'%'};return _0x27b90a;})});}_0x2af4ce=_['merge']({},_0x2af4ce,_0x3c7f46[_0x5bb3('0x4e')]);return _0x38e449[_0x5bb3('0x7b')](_0x2af4ce);}})[_0x5bb3('0x29')](function(_0x5b714c){if(_0x5b714c){_0x43d2da=_0x5b714c[_0x5bb3('0x3c')];if(!_0x3c7f46[_0x5bb3('0x37')][_0x5bb3('0x3d')]('nolimit')){_0x2af4ce['limit']=qs[_0x5bb3('0x24')](_0x3c7f46[_0x5bb3('0x37')][_0x5bb3('0x24')]);_0x2af4ce[_0x5bb3('0x21')]=qs[_0x5bb3('0x21')](_0x3c7f46['query'][_0x5bb3('0x21')]);}return _0x38e449[_0x5bb3('0x7b')](_0x2af4ce);}})['then'](function(_0x1565c6){if(_0x1565c6){return _0x1565c6?{'count':_0x43d2da,'rows':_0x1565c6}:null;}})[_0x5bb3('0x29')](respondWithResult(_0x547c8f,null))['catch'](handleError(_0x547c8f,null));};
\ No newline at end of file
+var _0xe7a0=['push','CDR(prefix)=','callerIdAll','Set','PREFIX-CALLERIDALL=','No\x20callerid\x20available','goto','${EXTEN:','charAt','system-','findById','addAgents','emit','ids','removeAgents','isArray','userVoicePrefix:remove','findOne','User','getAgents','nolimit','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','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','defaults','redis','socket.io-emitter','./voicePrefix.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','save','update','then','destroy','VoicePrefixes','UserProfileResource','error','name','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VoicePrefix','rows','catch','show','params','keys','includeAll','include','options','find','create','sequelize','transaction','body','VoiceExtensionId','user','get','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','Voice\x20Prefix\x20Extension','priority','prefix','Voice\x20Prefix','VoicePrefixId','VoiceExtension','bulkCreate','Extensions\x20creation\x20failed'];(function(_0x42541e,_0xc98824){var _0x1325e4=function(_0x25c7a3){while(--_0x25c7a3){_0x42541e['push'](_0x42541e['shift']());}};_0x1325e4(++_0xc98824);}(_0xe7a0,0x10d));var _0x0e7a=function(_0x48eaa0,_0x3b4a47){_0x48eaa0=_0x48eaa0-0x0;var _0x492ed8=_0xe7a0[_0x48eaa0];return _0x492ed8;};'use strict';var emlformat=require(_0x0e7a('0x0'));var rimraf=require(_0x0e7a('0x1'));var zipdir=require(_0x0e7a('0x2'));var jsonpatch=require(_0x0e7a('0x3'));var rp=require(_0x0e7a('0x4'));var moment=require(_0x0e7a('0x5'));var BPromise=require(_0x0e7a('0x6'));var Mustache=require(_0x0e7a('0x7'));var util=require('util');var path=require(_0x0e7a('0x8'));var sox=require(_0x0e7a('0x9'));var csv=require(_0x0e7a('0xa'));var ejs=require(_0x0e7a('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0e7a('0xc'));var squel=require(_0x0e7a('0xd'));var crypto=require(_0x0e7a('0xe'));var jsforce=require(_0x0e7a('0xf'));var deskjs=require(_0x0e7a('0x10'));var toCsv=require(_0x0e7a('0xa'));var querystring=require(_0x0e7a('0x11'));var Papa=require(_0x0e7a('0x12'));var Redis=require('ioredis');var authService=require(_0x0e7a('0x13'));var qs=require(_0x0e7a('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0e7a('0x15'));var logger=require(_0x0e7a('0x16'))(_0x0e7a('0x17'));var utils=require(_0x0e7a('0x18'));var config=require(_0x0e7a('0x19'));var licenseUtil=require(_0x0e7a('0x1a'));var db=require(_0x0e7a('0x1b'))['db'];config['redis']=_[_0x0e7a('0x1c')](config[_0x0e7a('0x1d')],{'host':'localhost','port':0x18eb});var socket=require(_0x0e7a('0x1e'))(new Redis(config[_0x0e7a('0x1d')]));require(_0x0e7a('0x1f'))[_0x0e7a('0x20')](socket);function respondWithStatusCode(_0x3caf70,_0x233a44){_0x233a44=_0x233a44||0xcc;return function(_0x4e7ff7){if(_0x4e7ff7){return _0x3caf70[_0x0e7a('0x21')](_0x233a44);}return _0x3caf70[_0x0e7a('0x22')](_0x233a44)[_0x0e7a('0x23')]();};}function respondWithResult(_0x45b7f5,_0x1f2a37){_0x1f2a37=_0x1f2a37||0xc8;return function(_0xd7fe58){if(_0xd7fe58){return _0x45b7f5[_0x0e7a('0x22')](_0x1f2a37)['json'](_0xd7fe58);}};}function respondWithFilteredResult(_0x4f2195,_0x47b18f){return function(_0x3e637c){if(_0x3e637c){var _0x55d8ea=typeof _0x47b18f[_0x0e7a('0x24')]===_0x0e7a('0x25')&&typeof _0x47b18f[_0x0e7a('0x26')]===_0x0e7a('0x25');var _0x387c88=_0x3e637c['count'];var _0x33ec17=_0x55d8ea?0x0:_0x47b18f['offset'];var _0x217c59=_0x55d8ea?_0x3e637c[_0x0e7a('0x27')]:_0x47b18f[_0x0e7a('0x24')]+_0x47b18f[_0x0e7a('0x26')];var _0xf09810;if(_0x217c59>=_0x387c88){_0x217c59=_0x387c88;_0xf09810=0xc8;}else{_0xf09810=0xce;}_0x4f2195[_0x0e7a('0x22')](_0xf09810);return _0x4f2195[_0x0e7a('0x28')]('Content-Range',_0x33ec17+'-'+_0x217c59+'/'+_0x387c88)[_0x0e7a('0x29')](_0x3e637c);}return null;};}function patchUpdates(_0x233fb5){return function(_0x3e722b){try{jsonpatch[_0x0e7a('0x2a')](_0x3e722b,_0x233fb5,!![]);}catch(_0x19d5eb){return BPromise['reject'](_0x19d5eb);}return _0x3e722b[_0x0e7a('0x2b')]();};}function saveUpdates(_0x37d7e9,_0x47c5a7){return function(_0xaa1482){if(_0xaa1482){return _0xaa1482[_0x0e7a('0x2c')](_0x37d7e9)[_0x0e7a('0x2d')](function(_0x33d8d3){return _0x33d8d3;});}return null;};}function removeEntity(_0x132af0,_0x4b01f6){return function(_0x59bc3c){if(_0x59bc3c){return _0x59bc3c[_0x0e7a('0x2e')]()[_0x0e7a('0x2d')](function(){var _0x1ca380=_0x59bc3c['get']({'plain':!![]});var _0x1bf4b1=_0x0e7a('0x2f');return db[_0x0e7a('0x30')][_0x0e7a('0x2e')]({'where':{'type':_0x1bf4b1,'resourceId':_0x1ca380['id']}})[_0x0e7a('0x2d')](function(){return _0x59bc3c;});})['then'](function(){_0x132af0[_0x0e7a('0x22')](0xcc)[_0x0e7a('0x23')]();});}};}function handleEntityNotFound(_0x1c95bd,_0x81d6b){return function(_0x236b21){if(!_0x236b21){_0x1c95bd[_0x0e7a('0x21')](0x194);}return _0x236b21;};}function handleError(_0x3335b3,_0x3aaef6){_0x3aaef6=_0x3aaef6||0x1f4;return function(_0x488a33){logger[_0x0e7a('0x31')](_0x488a33['stack']);if(_0x488a33[_0x0e7a('0x32')]){delete _0x488a33[_0x0e7a('0x32')];}_0x3335b3[_0x0e7a('0x22')](_0x3aaef6)['send'](_0x488a33);};}exports[_0x0e7a('0x33')]=function(_0x3fe9a5,_0x1043c1){var _0xe4e32c={},_0x2b2272={},_0x49a36a={'count':0x0,'rows':[]};var _0x4d64c4=_[_0x0e7a('0x34')](db['VoicePrefix'][_0x0e7a('0x35')],function(_0x25ab16){return{'name':_0x25ab16[_0x0e7a('0x36')],'type':_0x25ab16[_0x0e7a('0x37')][_0x0e7a('0x38')]};});_0x2b2272[_0x0e7a('0x39')]=_[_0x0e7a('0x34')](_0x4d64c4,_0x0e7a('0x32'));_0x2b2272[_0x0e7a('0x3a')]=_['keys'](_0x3fe9a5['query']);_0x2b2272[_0x0e7a('0x3b')]=_[_0x0e7a('0x3c')](_0x2b2272[_0x0e7a('0x39')],_0x2b2272[_0x0e7a('0x3a')]);_0xe4e32c[_0x0e7a('0x3d')]=_[_0x0e7a('0x3c')](_0x2b2272[_0x0e7a('0x39')],qs[_0x0e7a('0x3e')](_0x3fe9a5['query'][_0x0e7a('0x3e')]));_0xe4e32c[_0x0e7a('0x3d')]=_0xe4e32c[_0x0e7a('0x3d')][_0x0e7a('0x3f')]?_0xe4e32c['attributes']:_0x2b2272[_0x0e7a('0x39')];if(!_0x3fe9a5[_0x0e7a('0x3a')][_0x0e7a('0x40')]('nolimit')){_0xe4e32c[_0x0e7a('0x26')]=qs[_0x0e7a('0x26')](_0x3fe9a5[_0x0e7a('0x3a')][_0x0e7a('0x26')]);_0xe4e32c['offset']=qs[_0x0e7a('0x24')](_0x3fe9a5['query']['offset']);}_0xe4e32c[_0x0e7a('0x41')]=qs[_0x0e7a('0x42')](_0x3fe9a5[_0x0e7a('0x3a')][_0x0e7a('0x42')]);_0xe4e32c['where']=qs[_0x0e7a('0x3b')](_[_0x0e7a('0x43')](_0x3fe9a5[_0x0e7a('0x3a')],_0x2b2272['filters']),_0x4d64c4);if(_0x3fe9a5[_0x0e7a('0x3a')][_0x0e7a('0x44')]){_0xe4e32c[_0x0e7a('0x45')]=_[_0x0e7a('0x46')](_0xe4e32c[_0x0e7a('0x45')],{'$or':_[_0x0e7a('0x34')](_0x4d64c4,function(_0xb14778){if(_0xb14778[_0x0e7a('0x37')]!=='VIRTUAL'){var _0x20d269={};_0x20d269[_0xb14778[_0x0e7a('0x32')]]={'$like':'%'+_0x3fe9a5[_0x0e7a('0x3a')][_0x0e7a('0x44')]+'%'};return _0x20d269;}})});}_0xe4e32c=_['merge']({},_0xe4e32c,_0x3fe9a5['options']);var _0x1f983a={'where':_0xe4e32c['where']};return db[_0x0e7a('0x47')][_0x0e7a('0x27')](_0x1f983a)[_0x0e7a('0x2d')](function(_0x21ee37){_0x49a36a['count']=_0x21ee37;if(_0x3fe9a5['query']['includeAll']){_0xe4e32c['include']=[{'all':!![]}];}return db[_0x0e7a('0x47')]['findAll'](_0xe4e32c);})['then'](function(_0x4c57c7){_0x49a36a[_0x0e7a('0x48')]=_0x4c57c7;return _0x49a36a;})[_0x0e7a('0x2d')](respondWithFilteredResult(_0x1043c1,_0xe4e32c))[_0x0e7a('0x49')](handleError(_0x1043c1,null));};exports[_0x0e7a('0x4a')]=function(_0x57a36b,_0x5dd6ef){var _0x567fda={'raw':![],'where':{'id':_0x57a36b[_0x0e7a('0x4b')]['id']}},_0x141b6d={};_0x141b6d[_0x0e7a('0x39')]=_['keys'](db[_0x0e7a('0x47')]['rawAttributes']);_0x141b6d[_0x0e7a('0x3a')]=_[_0x0e7a('0x4c')](_0x57a36b[_0x0e7a('0x3a')]);_0x141b6d[_0x0e7a('0x3b')]=_[_0x0e7a('0x3c')](_0x141b6d[_0x0e7a('0x39')],_0x141b6d[_0x0e7a('0x3a')]);_0x567fda[_0x0e7a('0x3d')]=_[_0x0e7a('0x3c')](_0x141b6d[_0x0e7a('0x39')],qs[_0x0e7a('0x3e')](_0x57a36b['query']['fields']));_0x567fda['attributes']=_0x567fda['attributes'][_0x0e7a('0x3f')]?_0x567fda[_0x0e7a('0x3d')]:_0x141b6d[_0x0e7a('0x39')];if(_0x57a36b[_0x0e7a('0x3a')][_0x0e7a('0x4d')]){_0x567fda[_0x0e7a('0x4e')]=[{'all':!![]}];}_0x567fda=_[_0x0e7a('0x46')]({},_0x567fda,_0x57a36b[_0x0e7a('0x4f')]);return db[_0x0e7a('0x47')][_0x0e7a('0x50')](_0x567fda)['then'](handleEntityNotFound(_0x5dd6ef,null))[_0x0e7a('0x2d')](respondWithResult(_0x5dd6ef,null))[_0x0e7a('0x49')](handleError(_0x5dd6ef,null));};exports[_0x0e7a('0x2e')]=function(_0x585726,_0x5b859a){return db[_0x0e7a('0x47')][_0x0e7a('0x50')]({'where':{'id':_0x585726['params']['id']}})['then'](handleEntityNotFound(_0x5b859a,null))['then'](removeEntity(_0x5b859a,null))[_0x0e7a('0x49')](handleError(_0x5b859a,null));};exports['describe']=function(_0xc79496,_0x9a0357){return db[_0x0e7a('0x47')]['describe']()['then'](respondWithResult(_0x9a0357,null))['catch'](handleError(_0x9a0357,null));};exports[_0x0e7a('0x51')]=function(_0x2e0b49,_0x227f62){var _0x5837da;return db[_0x0e7a('0x52')][_0x0e7a('0x53')](function(_0x48e040){return db['VoicePrefix'][_0x0e7a('0x51')](_0x2e0b49[_0x0e7a('0x54')],{'transaction':_0x48e040})['then'](function(_0x308833){_0x5837da=_0x308833['get']({'plain':!![]});return db['VoiceExtension'][_0x0e7a('0x50')]({'where':{'id':_0x5837da[_0x0e7a('0x55')]},'raw':!![]})[_0x0e7a('0x2d')](function(_0x376c37){return createVoicePrefixExtensions(_0x5837da,_0x376c37,_0x48e040);});});})[_0x0e7a('0x2d')](function(){var _0x174c76=_0x2e0b49[_0x0e7a('0x56')][_0x0e7a('0x57')]({'plain':!![]});if(!_0x174c76)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x174c76[_0x0e7a('0x58')]===_0x0e7a('0x56')){var _0x19ab6e=_0x5837da;return db[_0x0e7a('0x59')]['find']({'where':{'name':_0x0e7a('0x2f'),'userProfileId':_0x174c76[_0x0e7a('0x5a')]},'raw':!![]})[_0x0e7a('0x2d')](function(_0x31d58d){if(_0x31d58d&&_0x31d58d[_0x0e7a('0x5b')]===0x0){return db['UserProfileResource'][_0x0e7a('0x51')]({'name':_0x19ab6e[_0x0e7a('0x32')],'resourceId':_0x19ab6e['id'],'type':_0x31d58d['name'],'sectionId':_0x31d58d['id']},{})[_0x0e7a('0x2d')](function(){return _0x5837da;});}else{return _0x5837da;}})[_0x0e7a('0x49')](function(_0x210d78){logger[_0x0e7a('0x31')](_0x0e7a('0x5c'),_0x210d78);throw _0x210d78;});}return _0x5837da;})['then'](respondWithResult(_0x227f62,null))[_0x0e7a('0x49')](handleError(_0x227f62,null));};function Extension(_0x5344e7,_0x5f1bec,_0x240206,_0x1ff689){this[_0x0e7a('0x5d')]=_0x0e7a('0x5e');this['exten']=_0x5344e7;this['app']=_0x240206;this[_0x0e7a('0x37')]='system';this['description']=_0x0e7a('0x5f');this[_0x0e7a('0x60')]=_0x5f1bec;this['appdata']=_0x1ff689;}function createVoicePrefixExtensions(_0x178a65,_0x34f02d,_0x1840a9){return new BPromise(function(_0x19e790,_0x161ac7){var _0x594781=new Extension(formatPrefixName(_0x178a65[_0x0e7a('0x61')]),0x1,'NoOp',_0x0e7a('0x62'));_0x594781[_0x0e7a('0x63')]=_0x178a65['id'];return db[_0x0e7a('0x64')][_0x0e7a('0x51')](_0x594781,{'transaction':_0x1840a9})[_0x0e7a('0x2d')](function(_0xd1c6e0){var _0x48c6e1=_0xd1c6e0['get']({'plain':!![]});var _0x5ddec9=_[_0x0e7a('0x34')](addVoicePrefixExtensions(_0x178a65,_0x34f02d),function(_0x25abff){_0x25abff['VoiceExtensionId']=_0x48c6e1['id'];_0x25abff[_0x0e7a('0x63')]=_0x178a65['id'];return _0x25abff;});return db[_0x0e7a('0x64')][_0x0e7a('0x65')](_0x5ddec9,{'transaction':_0x1840a9})['then'](function(_0xcc9cef){if(!_0xcc9cef){return _0x161ac7(_0x0e7a('0x66'));}else{return _0x19e790(_0xcc9cef);}})[_0x0e7a('0x49')](function(_0x246efd){return _0x161ac7(_0x246efd);});});;});};function addVoicePrefixExtensions(_0x74bc0a,_0x30bd3a){var _0x1c6ea7=[];var _0x393037=formatPrefixName(_0x74bc0a[_0x0e7a('0x61')]);_0x1c6ea7[_0x0e7a('0x67')](new Extension(_0x393037,0x2,'Set',_0x0e7a('0x68')+_0x74bc0a[_0x0e7a('0x32')]));if(_0x74bc0a[_0x0e7a('0x69')]){_0x1c6ea7['push'](new Extension(_0x393037,0x3,_0x0e7a('0x6a'),_0x0e7a('0x6b')+_0x74bc0a[_0x0e7a('0x69')]));}else{_0x1c6ea7[_0x0e7a('0x67')](new Extension(_0x393037,0x3,'NoOp',_0x0e7a('0x6c')));}_0x1c6ea7[_0x0e7a('0x67')](new Extension(_0x393037,0x4,_0x0e7a('0x6d'),_0x30bd3a[_0x0e7a('0x5d')]+','+_0x0e7a('0x6e')+(0x8+_0x74bc0a['name']['length'])+'}'+','+0x1));return _0x1c6ea7;}function formatPrefixName(_0x4f4a9){var _0x1d6d53='_';for(var _0x44d7dd=0x0;_0x44d7dd<_0x4f4a9[_0x0e7a('0x3f')];_0x44d7dd++){if(_0x4f4a9[_0x0e7a('0x6f')](_0x44d7dd)=='-'){_0x1d6d53+=_0x4f4a9[_0x0e7a('0x6f')](_0x44d7dd);}else{_0x1d6d53+='['+_0x4f4a9[_0x0e7a('0x6f')](_0x44d7dd)+']';}}_0x1d6d53+='.';return _0x1d6d53;}exports[_0x0e7a('0x2c')]=function(_0x250f4c,_0x5b6b3b,_0x4f5b56){var _0x192d66=_0x250f4c[_0x0e7a('0x54')];_0x192d66[_0x0e7a('0x61')]=_0x0e7a('0x70')+_0x192d66[_0x0e7a('0x32')]+'-';return db[_0x0e7a('0x52')][_0x0e7a('0x53')](function(_0x5d1ce9){return db[_0x0e7a('0x47')][_0x0e7a('0x2c')](_0x192d66,{'where':{'id':_0x192d66['id']},'transaction':_0x5d1ce9})[_0x0e7a('0x2d')](function(){return db[_0x0e7a('0x64')]['destroy']({'where':{'VoicePrefixId':_0x192d66['id']},'transaction':_0x5d1ce9})[_0x0e7a('0x2d')](function(){return db[_0x0e7a('0x64')][_0x0e7a('0x50')]({'where':{'id':_0x192d66['VoiceExtensionId']},'raw':!![]})[_0x0e7a('0x2d')](function(_0x5aa54c){return createVoicePrefixExtensions(_0x192d66,_0x5aa54c,_0x5d1ce9);});});});})[_0x0e7a('0x2d')](function(){return db[_0x0e7a('0x47')][_0x0e7a('0x71')](_0x192d66['id']);})[_0x0e7a('0x2d')](respondWithResult(_0x5b6b3b,null))[_0x0e7a('0x49')](handleError(_0x5b6b3b,null));};exports[_0x0e7a('0x72')]=function(_0x1193e2,_0xe886aa,_0x727f97){return db[_0x0e7a('0x47')][_0x0e7a('0x50')]({'where':{'id':_0x1193e2[_0x0e7a('0x4b')]['id']}})[_0x0e7a('0x2d')](handleEntityNotFound(_0xe886aa,null))['then'](function(_0x4537c0){if(_0x4537c0){return _0x4537c0[_0x0e7a('0x72')](_0x1193e2[_0x0e7a('0x54')]['ids'],_['omit'](_0x1193e2[_0x0e7a('0x54')],['ids','id'])||{})['spread'](function(_0x1caa80){for(var _0x543792=0x0;_0x543792<_0x1193e2[_0x0e7a('0x54')]['ids'][_0x0e7a('0x3f')];_0x543792+=0x1){socket[_0x0e7a('0x73')]('userVoicePrefix:save',{'UserId':Number(_0x1193e2['body'][_0x0e7a('0x74')][_0x543792]),'VoicePrefixId':Number(_0x1193e2[_0x0e7a('0x4b')]['id'])});}return _0x1caa80;});}})[_0x0e7a('0x2d')](respondWithResult(_0xe886aa,null))[_0x0e7a('0x49')](handleError(_0xe886aa,null));};exports[_0x0e7a('0x75')]=function(_0x5b1260,_0x490c33,_0x44cc34){return db[_0x0e7a('0x47')][_0x0e7a('0x50')]({'where':{'id':_0x5b1260['params']['id']}})[_0x0e7a('0x2d')](handleEntityNotFound(_0x490c33,null))[_0x0e7a('0x2d')](function(_0x1ca85e){if(_0x1ca85e){return _0x1ca85e[_0x0e7a('0x75')](_0x5b1260[_0x0e7a('0x3a')][_0x0e7a('0x74')])[_0x0e7a('0x2d')](function(){if(_[_0x0e7a('0x76')](_0x5b1260[_0x0e7a('0x3a')][_0x0e7a('0x74')])){for(var _0x3c2d1e=0x0;_0x3c2d1e<_0x5b1260[_0x0e7a('0x3a')]['ids'][_0x0e7a('0x3f')];_0x3c2d1e+=0x1){socket[_0x0e7a('0x73')](_0x0e7a('0x77'),{'UserId':Number(_0x5b1260['query'][_0x0e7a('0x74')][_0x3c2d1e]),'VoicePrefixId':Number(_0x5b1260[_0x0e7a('0x4b')]['id'])});}}else{socket[_0x0e7a('0x73')](_0x0e7a('0x77'),{'UserId':Number(_0x5b1260['query']['ids']),'VoicePrefixId':Number(_0x5b1260[_0x0e7a('0x4b')]['id'])});}});}})[_0x0e7a('0x2d')](respondWithStatusCode(_0x490c33,null))[_0x0e7a('0x49')](handleError(_0x490c33,null));};exports['getAgents']=function(_0x54bc20,_0x442785,_0x34b94c){var _0x1e8f93={};var _0x402e24={};var _0x5d6a88;var _0x299c6d;return db['VoicePrefix'][_0x0e7a('0x78')]({'where':{'id':_0x54bc20['params']['id']}})['then'](handleEntityNotFound(_0x442785,null))[_0x0e7a('0x2d')](function(_0x336a14){if(_0x336a14){_0x5d6a88=_0x336a14;_0x402e24[_0x0e7a('0x39')]=_[_0x0e7a('0x4c')](db[_0x0e7a('0x79')][_0x0e7a('0x35')]);_0x402e24[_0x0e7a('0x3a')]=_['keys'](_0x54bc20['query']);_0x402e24[_0x0e7a('0x3b')]=_[_0x0e7a('0x3c')](_0x402e24[_0x0e7a('0x39')],_0x402e24[_0x0e7a('0x3a')]);_0x1e8f93['attributes']=_[_0x0e7a('0x3c')](_0x402e24[_0x0e7a('0x39')],qs['fields'](_0x54bc20[_0x0e7a('0x3a')][_0x0e7a('0x3e')]));_0x1e8f93[_0x0e7a('0x3d')]=_0x1e8f93[_0x0e7a('0x3d')][_0x0e7a('0x3f')]?_0x1e8f93[_0x0e7a('0x3d')]:_0x402e24['model'];_0x1e8f93[_0x0e7a('0x41')]=qs['sort'](_0x54bc20['query'][_0x0e7a('0x42')]);_0x1e8f93[_0x0e7a('0x45')]=qs['filters'](_['pick'](_0x54bc20[_0x0e7a('0x3a')],_0x402e24[_0x0e7a('0x3b')]));if(_0x54bc20[_0x0e7a('0x3a')][_0x0e7a('0x44')]){_0x1e8f93[_0x0e7a('0x45')]=_[_0x0e7a('0x46')](_0x1e8f93['where'],{'$or':_['map'](_0x1e8f93[_0x0e7a('0x3d')],function(_0xf82628){var _0xe6ea0f={};_0xe6ea0f[_0xf82628]={'$like':'%'+_0x54bc20[_0x0e7a('0x3a')]['filter']+'%'};return _0xe6ea0f;})});}_0x1e8f93=_['merge']({},_0x1e8f93,_0x54bc20['options']);return _0x5d6a88[_0x0e7a('0x7a')](_0x1e8f93);}})['then'](function(_0x3f8339){if(_0x3f8339){_0x299c6d=_0x3f8339['length'];if(!_0x54bc20[_0x0e7a('0x3a')]['hasOwnProperty'](_0x0e7a('0x7b'))){_0x1e8f93[_0x0e7a('0x26')]=qs[_0x0e7a('0x26')](_0x54bc20[_0x0e7a('0x3a')][_0x0e7a('0x26')]);_0x1e8f93[_0x0e7a('0x24')]=qs['offset'](_0x54bc20[_0x0e7a('0x3a')]['offset']);}return _0x5d6a88[_0x0e7a('0x7a')](_0x1e8f93);}})['then'](function(_0x31759f){if(_0x31759f){return _0x31759f?{'count':_0x299c6d,'rows':_0x31759f}:null;}})[_0x0e7a('0x2d')](respondWithResult(_0x442785,null))[_0x0e7a('0x49')](handleError(_0x442785,null));};
\ No newline at end of file
index 3513cb2..b061a7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb374=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners'];(function(_0x2aea9e,_0x1f587f){var _0x430b92=function(_0x416c37){while(--_0x416c37){_0x2aea9e['push'](_0x2aea9e['shift']());}};_0x430b92(++_0x1f587f);}(_0xb374,0x177));var _0x4b37=function(_0x1c3b2a,_0x5ea0af){_0x1c3b2a=_0x1c3b2a-0x0;var _0x3a54a5=_0xb374[_0x1c3b2a];return _0x3a54a5;};'use strict';var EventEmitter=require(_0x4b37('0x0'));var VoicePrefix=require(_0x4b37('0x1'))['db']['VoicePrefix'];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x4b37('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4b37('0x3'),'afterDestroy':_0x4b37('0x4')};function emitEvent(_0x2a3d7e){return function(_0x90cba1,_0x471025,_0x2ec7e1){VoicePrefixEvents['emit'](_0x2a3d7e+':'+_0x90cba1['id'],_0x90cba1);VoicePrefixEvents[_0x4b37('0x5')](_0x2a3d7e,_0x90cba1);_0x2ec7e1(null);};}for(var e in events){if(events[_0x4b37('0x6')](e)){var event=events[e];VoicePrefix[_0x4b37('0x7')](e,emitEvent(event));}}module[_0x4b37('0x8')]=VoicePrefixEvents;
\ No newline at end of file
+var _0x2c1a=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','hook','exports'];(function(_0x386d00,_0x268007){var _0x3e4697=function(_0x12dc35){while(--_0x12dc35){_0x386d00['push'](_0x386d00['shift']());}};_0x3e4697(++_0x268007);}(_0x2c1a,0x13b));var _0xa2c1=function(_0x58238f,_0x3a35e9){_0x58238f=_0x58238f-0x0;var _0x5abc74=_0x2c1a[_0x58238f];return _0x5abc74;};'use strict';var EventEmitter=require(_0xa2c1('0x0'));var VoicePrefix=require(_0xa2c1('0x1'))['db']['VoicePrefix'];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0xa2c1('0x2')](0x0);var events={'afterCreate':_0xa2c1('0x3'),'afterUpdate':_0xa2c1('0x4'),'afterDestroy':_0xa2c1('0x5')};function emitEvent(_0x3d9f2e){return function(_0xcd8ccc,_0x40f0c1,_0x35a1b0){VoicePrefixEvents[_0xa2c1('0x6')](_0x3d9f2e+':'+_0xcd8ccc['id'],_0xcd8ccc);VoicePrefixEvents[_0xa2c1('0x6')](_0x3d9f2e,_0xcd8ccc);_0x35a1b0(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoicePrefix[_0xa2c1('0x7')](e,emitEvent(event));}}module[_0xa2c1('0x8')]=VoicePrefixEvents;
\ No newline at end of file
index 63d168c..41d22ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4a6=['request-promise','path','rimraf','../../config/environment','define','VoicePrefix','voice_prefixes','lodash','api','moment','bluebird'];(function(_0x4c974e,_0x513d9e){var _0x31327b=function(_0x5db97c){while(--_0x5db97c){_0x4c974e['push'](_0x4c974e['shift']());}};_0x31327b(++_0x513d9e);}(_0xc4a6,0x1e0));var _0x6c4a=function(_0x4108e9,_0x58da63){_0x4108e9=_0x4108e9-0x0;var _0x369cc4=_0xc4a6[_0x4108e9];return _0x369cc4;};'use strict';var _=require(_0x6c4a('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x6c4a('0x1'));var moment=require(_0x6c4a('0x2'));var BPromise=require(_0x6c4a('0x3'));var rp=require(_0x6c4a('0x4'));var fs=require('fs');var path=require(_0x6c4a('0x5'));var rimraf=require(_0x6c4a('0x6'));var config=require(_0x6c4a('0x7'));var attributes=require('./voicePrefix.attributes');module['exports']=function(_0x4ec6f4,_0xd39c91){return _0x4ec6f4[_0x6c4a('0x8')](_0x6c4a('0x9'),attributes,{'tableName':_0x6c4a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0de4=['voice_prefixes','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./voicePrefix.attributes','exports','define','VoicePrefix'];(function(_0x3fba9f,_0x3b7b9b){var _0x192cf1=function(_0x557290){while(--_0x557290){_0x3fba9f['push'](_0x3fba9f['shift']());}};_0x192cf1(++_0x3b7b9b);}(_0x0de4,0x6d));var _0x40de=function(_0x1ac608,_0x41f4f6){_0x1ac608=_0x1ac608-0x0;var _0x3bdd98=_0x0de4[_0x1ac608];return _0x3bdd98;};'use strict';var _=require('lodash');var util=require(_0x40de('0x0'));var logger=require(_0x40de('0x1'))(_0x40de('0x2'));var moment=require(_0x40de('0x3'));var BPromise=require(_0x40de('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x40de('0x5'));var config=require(_0x40de('0x6'));var attributes=require(_0x40de('0x7'));module[_0x40de('0x8')]=function(_0x1ca3d0,_0x4a2c90){return _0x1ca3d0[_0x40de('0x9')](_0x40de('0xa'),attributes,{'tableName':_0x40de('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 285edc6..9b58be3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01db=['info','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./voicePrefix.socket','register','then'];(function(_0xe68132,_0x4a7e97){var _0x19ed56=function(_0x159288){while(--_0x159288){_0xe68132['push'](_0xe68132['shift']());}};_0x19ed56(++_0x4a7e97);}(_0x01db,0x171));var _0xb01d=function(_0x131636,_0x13020a){_0x131636=_0x131636-0x0;var _0x2df7ee=_0x01db[_0x131636];return _0x2df7ee;};'use strict';var _=require(_0xb01d('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xb01d('0x1'));var rs=require(_0xb01d('0x2'));var fs=require('fs');var Redis=require(_0xb01d('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xb01d('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xb01d('0x5'));var jayson=require(_0xb01d('0x6'));var client=jayson[_0xb01d('0x7')][_0xb01d('0x8')]({'port':0x232a});config[_0xb01d('0x9')]=_[_0xb01d('0xa')](config[_0xb01d('0x9')],{'host':_0xb01d('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xb01d('0xc'))[_0xb01d('0xd')](socket);function respondWithRpcPromise(_0x28e0fc,_0x3b2de4,_0x147b7b){return new BPromise(function(_0x9112c1,_0x4eb866){return client['request'](_0x28e0fc,_0x147b7b)[_0xb01d('0xe')](function(_0x1b59b9){logger[_0xb01d('0xf')](_0xb01d('0x10'),_0x3b2de4,_0xb01d('0x11'));logger[_0xb01d('0x12')](_0xb01d('0x13'),_0x3b2de4,'request\x20sent',JSON['stringify'](_0x1b59b9));if(_0x1b59b9[_0xb01d('0x14')]){if(_0x1b59b9['error'][_0xb01d('0x15')]===0x1f4){logger[_0xb01d('0x14')]('VoicePrefix,\x20%s,\x20%s',_0x3b2de4,_0x1b59b9[_0xb01d('0x14')][_0xb01d('0x16')]);return _0x4eb866(_0x1b59b9[_0xb01d('0x14')][_0xb01d('0x16')]);}logger['error'](_0xb01d('0x10'),_0x3b2de4,_0x1b59b9['error'][_0xb01d('0x16')]);return _0x9112c1(_0x1b59b9[_0xb01d('0x14')][_0xb01d('0x16')]);}else{logger[_0xb01d('0xf')]('VoicePrefix,\x20%s,\x20%s',_0x3b2de4,_0xb01d('0x11'));_0x9112c1(_0x1b59b9[_0xb01d('0x17')][_0xb01d('0x16')]);}})['catch'](function(_0x210023){logger['error'](_0xb01d('0x10'),_0x3b2de4,_0x210023);_0x4eb866(_0x210023);});});}
\ No newline at end of file
+var _0x55c3=['result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./voicePrefix.socket','register','request','then','info','request\x20sent','debug','error','code','message','VoicePrefix,\x20%s,\x20%s'];(function(_0x37e232,_0x1b3ba5){var _0x15201b=function(_0x42a6b6){while(--_0x42a6b6){_0x37e232['push'](_0x37e232['shift']());}};_0x15201b(++_0x1b3ba5);}(_0x55c3,0x189));var _0x355c=function(_0x550a44,_0xe5d0f2){_0x550a44=_0x550a44-0x0;var _0x1df11b=_0x55c3[_0x550a44];return _0x1df11b;};'use strict';var _=require('lodash');var util=require(_0x355c('0x0'));var moment=require(_0x355c('0x1'));var BPromise=require(_0x355c('0x2'));var rs=require(_0x355c('0x3'));var fs=require('fs');var Redis=require(_0x355c('0x4'));var db=require(_0x355c('0x5'))['db'];var utils=require(_0x355c('0x6'));var logger=require(_0x355c('0x7'))(_0x355c('0x8'));var config=require(_0x355c('0x9'));var jayson=require(_0x355c('0xa'));var client=jayson[_0x355c('0xb')][_0x355c('0xc')]({'port':0x232a});config[_0x355c('0xd')]=_['defaults'](config['redis'],{'host':_0x355c('0xe'),'port':0x18eb});var socket=require(_0x355c('0xf'))(new Redis(config[_0x355c('0xd')]));require(_0x355c('0x10'))[_0x355c('0x11')](socket);function respondWithRpcPromise(_0x3ca52d,_0x4d91bc,_0x12fe87){return new BPromise(function(_0x3cdc28,_0xf40017){return client[_0x355c('0x12')](_0x3ca52d,_0x12fe87)[_0x355c('0x13')](function(_0x386a36){logger[_0x355c('0x14')]('VoicePrefix,\x20%s,\x20%s',_0x4d91bc,_0x355c('0x15'));logger[_0x355c('0x16')]('VoicePrefix,\x20%s,\x20%s,\x20%s',_0x4d91bc,_0x355c('0x15'),JSON['stringify'](_0x386a36));if(_0x386a36[_0x355c('0x17')]){if(_0x386a36[_0x355c('0x17')][_0x355c('0x18')]===0x1f4){logger[_0x355c('0x17')]('VoicePrefix,\x20%s,\x20%s',_0x4d91bc,_0x386a36[_0x355c('0x17')]['message']);return _0xf40017(_0x386a36['error'][_0x355c('0x19')]);}logger[_0x355c('0x17')](_0x355c('0x1a'),_0x4d91bc,_0x386a36[_0x355c('0x17')][_0x355c('0x19')]);return _0x3cdc28(_0x386a36[_0x355c('0x17')][_0x355c('0x19')]);}else{logger[_0x355c('0x14')](_0x355c('0x1a'),_0x4d91bc,'request\x20sent');_0x3cdc28(_0x386a36[_0x355c('0x1b')][_0x355c('0x19')]);}})['catch'](function(_0x4fabef){logger['error']('VoicePrefix,\x20%s,\x20%s',_0x4d91bc,_0x4fabef);_0xf40017(_0x4fabef);});});}
\ No newline at end of file
index 65be4e8..bc78f9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f19=['length','voicePrefix:','./voicePrefix.events','emit','register'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x3f19,0xc0));var _0x93f1=function(_0xf4eae3,_0x438eba){_0xf4eae3=_0xf4eae3-0x0;var _0x441c2a=_0x3f19[_0xf4eae3];return _0x441c2a;};'use strict';var VoicePrefixEvents=require(_0x93f1('0x0'));var events=['save','remove','update'];function createListener(_0x33bddc,_0x4d1cac){return function(_0x452cf9){_0x4d1cac[_0x93f1('0x1')](_0x33bddc,_0x452cf9);};}function removeListener(_0x3bd3fa,_0x2057aa){return function(){VoicePrefixEvents['removeListener'](_0x3bd3fa,_0x2057aa);};}exports[_0x93f1('0x2')]=function(_0x522769){for(var _0x999026=0x0,_0x425c6f=events[_0x93f1('0x3')];_0x999026<_0x425c6f;_0x999026++){var _0xdaa92=events[_0x999026];var _0x5d7374=createListener(_0x93f1('0x4')+_0xdaa92,_0x522769);VoicePrefixEvents['on'](_0xdaa92,_0x5d7374);}};
\ No newline at end of file
+var _0xa20a=['removeListener','register','length','voicePrefix:','remove','update','emit'];(function(_0x4af3b7,_0x30c116){var _0x24727c=function(_0x3ae9a0){while(--_0x3ae9a0){_0x4af3b7['push'](_0x4af3b7['shift']());}};_0x24727c(++_0x30c116);}(_0xa20a,0x74));var _0xaa20=function(_0x5627e1,_0x1b2dbf){_0x5627e1=_0x5627e1-0x0;var _0x2f013f=_0xa20a[_0x5627e1];return _0x2f013f;};'use strict';var VoicePrefixEvents=require('./voicePrefix.events');var events=['save',_0xaa20('0x0'),_0xaa20('0x1')];function createListener(_0x39481d,_0x1d1b40){return function(_0x5d88f1){_0x1d1b40[_0xaa20('0x2')](_0x39481d,_0x5d88f1);};}function removeListener(_0x20a8ad,_0x1497a0){return function(){VoicePrefixEvents[_0xaa20('0x3')](_0x20a8ad,_0x1497a0);};}exports[_0xaa20('0x4')]=function(_0x5ac74e){for(var _0x54ecbc=0x0,_0x413b88=events[_0xaa20('0x5')];_0x54ecbc<_0x413b88;_0x54ecbc++){var _0x23a712=events[_0x54ecbc];var _0x181df0=createListener(_0xaa20('0x6')+_0x23a712,_0x5ac74e);VoicePrefixEvents['on'](_0x23a712,_0x181df0);}};
\ No newline at end of file
index 6f1a80b..1de74c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bbb=['removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','/:id','isAuthenticated','show','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/teams','getTeams','getAgents','getMembers','/:id/lists','getLists','/:id/blacklists','post','create','/:id/clone','clone','/:id/users','addAgents','addLists','addBlackLists','put','delete','destroy','removeTeams'];(function(_0xbfe20,_0x398601){var _0x4422d6=function(_0x262fe4){while(--_0x262fe4){_0xbfe20['push'](_0xbfe20['shift']());}};_0x4422d6(++_0x398601);}(_0x0bbb,0xae));var _0xb0bb=function(_0xcdcb36,_0x5f3d31){_0xcdcb36=_0xcdcb36-0x0;var _0x427cfd=_0x0bbb[_0xcdcb36];return _0x427cfd;};'use strict';var multer=require(_0xb0bb('0x0'));var util=require(_0xb0bb('0x1'));var path=require(_0xb0bb('0x2'));var timeout=require(_0xb0bb('0x3'));var express=require(_0xb0bb('0x4'));var router=express[_0xb0bb('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb0bb('0x6'));var interaction=require(_0xb0bb('0x7'));var config=require(_0xb0bb('0x8'));var controller=require(_0xb0bb('0x9'));router[_0xb0bb('0xa')]('/',auth['isAuthenticated'](),controller[_0xb0bb('0xb')]);router[_0xb0bb('0xa')](_0xb0bb('0xc'),auth[_0xb0bb('0xd')](),controller[_0xb0bb('0xe')]);router[_0xb0bb('0xa')]('/:id/hoppers',auth['isAuthenticated'](),controller[_0xb0bb('0xf')]);router[_0xb0bb('0xa')](_0xb0bb('0x10'),auth[_0xb0bb('0xd')](),controller[_0xb0bb('0x11')]);router[_0xb0bb('0xa')](_0xb0bb('0x12'),auth['isAuthenticated'](),controller[_0xb0bb('0x13')]);router[_0xb0bb('0xa')](_0xb0bb('0x14'),auth[_0xb0bb('0xd')](),controller[_0xb0bb('0x15')]);router[_0xb0bb('0xa')](_0xb0bb('0x16'),auth['isAuthenticated'](),controller[_0xb0bb('0x17')]);router[_0xb0bb('0xa')]('/:id/users',auth[_0xb0bb('0xd')](),controller[_0xb0bb('0x18')]);router[_0xb0bb('0xa')]('/:id/members',auth[_0xb0bb('0xd')](),controller[_0xb0bb('0x19')]);router[_0xb0bb('0xa')](_0xb0bb('0x1a'),auth['isAuthenticated'](),controller[_0xb0bb('0x1b')]);router['get'](_0xb0bb('0x1c'),auth[_0xb0bb('0xd')](),controller['getBlackLists']);router[_0xb0bb('0x1d')]('/',auth[_0xb0bb('0xd')](),controller[_0xb0bb('0x1e')]);router[_0xb0bb('0x1d')](_0xb0bb('0x1f'),auth[_0xb0bb('0xd')](),controller[_0xb0bb('0x20')]);router['post']('/:id/teams',auth[_0xb0bb('0xd')](),controller['addTeams']);router[_0xb0bb('0x1d')](_0xb0bb('0x21'),auth[_0xb0bb('0xd')](),controller[_0xb0bb('0x22')]);router[_0xb0bb('0x1d')]('/:id/lists',auth[_0xb0bb('0xd')](),controller[_0xb0bb('0x23')]);router[_0xb0bb('0x1d')](_0xb0bb('0x1c'),auth[_0xb0bb('0xd')](),controller[_0xb0bb('0x24')]);router[_0xb0bb('0x25')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xb0bb('0x26')]('/:id',auth[_0xb0bb('0xd')](),controller[_0xb0bb('0x27')]);router['delete'](_0xb0bb('0x16'),auth['isAuthenticated'](),controller[_0xb0bb('0x28')]);router['delete']('/:id/users',auth['isAuthenticated'](),controller[_0xb0bb('0x29')]);router['delete'](_0xb0bb('0x1a'),auth[_0xb0bb('0xd')](),controller['removeLists']);router[_0xb0bb('0x26')](_0xb0bb('0x1c'),auth[_0xb0bb('0xd')](),controller['removeBlackLists']);module[_0xb0bb('0x2a')]=router;
\ No newline at end of file
+var _0x8c75=['../../components/auth/service','../../components/interaction/service','./voiceQueue.controller','get','isAuthenticated','index','/:id','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','getHopperBlacks','/:id/teams','getTeams','/:id/users','getAgents','/:id/members','getMembers','getBlackLists','post','create','/:id/clone','clone','addTeams','addAgents','/:id/lists','/:id/blacklists','put','update','destroy','delete','removeAgents','removeLists','removeBlackLists','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x3cd2f9,_0x4989dc){var _0xf53d13=function(_0x132a3d){while(--_0x132a3d){_0x3cd2f9['push'](_0x3cd2f9['shift']());}};_0xf53d13(++_0x4989dc);}(_0x8c75,0x9a));var _0x58c7=function(_0x314746,_0x498636){_0x314746=_0x314746-0x0;var _0x130324=_0x8c75[_0x314746];return _0x130324;};'use strict';var multer=require(_0x58c7('0x0'));var util=require('util');var path=require(_0x58c7('0x1'));var timeout=require(_0x58c7('0x2'));var express=require(_0x58c7('0x3'));var router=express[_0x58c7('0x4')]();var fs_extra=require(_0x58c7('0x5'));var auth=require(_0x58c7('0x6'));var interaction=require(_0x58c7('0x7'));var config=require('../../config/environment');var controller=require(_0x58c7('0x8'));router[_0x58c7('0x9')]('/',auth[_0x58c7('0xa')](),controller[_0x58c7('0xb')]);router['get'](_0x58c7('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x58c7('0x9')](_0x58c7('0xd'),auth['isAuthenticated'](),controller[_0x58c7('0xe')]);router['get'](_0x58c7('0xf'),auth[_0x58c7('0xa')](),controller[_0x58c7('0x10')]);router['get']('/:id/hopper_finals',auth[_0x58c7('0xa')](),controller['getHopperFinals']);router[_0x58c7('0x9')]('/:id/hopper_black',auth[_0x58c7('0xa')](),controller[_0x58c7('0x11')]);router[_0x58c7('0x9')](_0x58c7('0x12'),auth[_0x58c7('0xa')](),controller[_0x58c7('0x13')]);router[_0x58c7('0x9')](_0x58c7('0x14'),auth['isAuthenticated'](),controller[_0x58c7('0x15')]);router[_0x58c7('0x9')](_0x58c7('0x16'),auth[_0x58c7('0xa')](),controller[_0x58c7('0x17')]);router['get']('/:id/lists',auth['isAuthenticated'](),controller['getLists']);router[_0x58c7('0x9')]('/:id/blacklists',auth[_0x58c7('0xa')](),controller[_0x58c7('0x18')]);router[_0x58c7('0x19')]('/',auth[_0x58c7('0xa')](),controller[_0x58c7('0x1a')]);router[_0x58c7('0x19')](_0x58c7('0x1b'),auth[_0x58c7('0xa')](),controller[_0x58c7('0x1c')]);router[_0x58c7('0x19')]('/:id/teams',auth[_0x58c7('0xa')](),controller[_0x58c7('0x1d')]);router['post']('/:id/users',auth['isAuthenticated'](),controller[_0x58c7('0x1e')]);router[_0x58c7('0x19')](_0x58c7('0x1f'),auth[_0x58c7('0xa')](),controller['addLists']);router[_0x58c7('0x19')](_0x58c7('0x20'),auth['isAuthenticated'](),controller['addBlackLists']);router[_0x58c7('0x21')]('/:id',auth[_0x58c7('0xa')](),controller[_0x58c7('0x22')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x58c7('0x23')]);router['delete'](_0x58c7('0x12'),auth[_0x58c7('0xa')](),controller['removeTeams']);router[_0x58c7('0x24')](_0x58c7('0x14'),auth['isAuthenticated'](),controller[_0x58c7('0x25')]);router[_0x58c7('0x24')](_0x58c7('0x1f'),auth[_0x58c7('0xa')](),controller[_0x58c7('0x26')]);router[_0x58c7('0x24')](_0x58c7('0x20'),auth[_0x58c7('0xa')](),controller[_0x58c7('0x27')]);module['exports']=router;
\ No newline at end of file
index 8d6ddf1..693bb08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cbc=['AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','name','ENUM','inbound','STRING','default','ringall','leastrecent','fewestcalls','linear','wrandom','rrordered','setDataValue','strategy','getDataValue','dialMethod','booked','roundrobin','progressive','power','INTEGER','yes','all','TEXT','periodic_announce','split','joinempty','join','leavewhenempty','BOOLEAN','wrapuptime','Active/Disactive\x20Campaign','preview','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','onlyIfOpen','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20Min\x20Word\x20Length','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)'];(function(_0x366a6e,_0x4b3a06){var _0x3b3e00=function(_0x27947a){while(--_0x27947a){_0x366a6e['push'](_0x366a6e['shift']());}};_0x3b3e00(++_0x4b3a06);}(_0x3cbc,0x151));var _0xc3cb=function(_0x95474b,_0x4855ca){_0x95474b=_0x95474b-0x0;var _0x3d27c9=_0x3cbc[_0x95474b];return _0x3d27c9;};'use strict';var Sequelize=require(_0xc3cb('0x0'));module[_0xc3cb('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xc3cb('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x4'),'outbound'),'allowNull':![],'defaultValue':'inbound'},'musiconhold':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':_0xc3cb('0x6')},'announce':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':''},'strategy':{'type':Sequelize['ENUM']('rr',_0xc3cb('0x7'),_0xc3cb('0x8'),_0xc3cb('0x9'),'random','rrmemory',_0xc3cb('0xa'),_0xc3cb('0xb'),_0xc3cb('0xc')),'allowNull':![],'defaultValue':'ringall','set':function(_0x23b78e){this[_0xc3cb('0xd')](_0xc3cb('0xe'),_0x23b78e?_0x23b78e:'rrmemory');},'get':function(){var _0x238177=this['getDataValue']('type');var _0xb378f2=this[_0xc3cb('0xf')](_0xc3cb('0x10'));var _0x5149ad=this['getDataValue'](_0xc3cb('0xe'));if(_0x238177===_0xc3cb('0x4')){return _0x5149ad;}if(_0xb378f2===_0xc3cb('0x11')&&_0x5149ad==='rrmemory'||_0xb378f2===_0xc3cb('0x11')&&_0x5149ad===_0xc3cb('0x12')){return _0x5149ad;}if(_0xb378f2===_0xc3cb('0x13')||_0xb378f2==='predictive'||_0xb378f2===_0xc3cb('0x14')){return _0x5149ad;}return null;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0xc3cb('0x15')](0xb)},'timeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xc3cb('0x15')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0xc3cb('0x5')]},'weight':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0xc3cb('0x15')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0xc3cb('0x3')]('yes','no'),'defaultValue':'yes'},'autopause':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x16'),'no',_0xc3cb('0x17')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0xc3cb('0x15')](0xb)},'autopausebusy':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x16'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x16'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xc3cb('0x15')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x16'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x16'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x16'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x16'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0xc3cb('0x5')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0xc3cb('0x5')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0xc3cb('0x15')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0xc3cb('0x15')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x16'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0xc3cb('0x3')]('yes','no'),'defaultValue':_0xc3cb('0x16')},'announce_holdtime':{'type':Sequelize['ENUM']('yes','no','once'),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x16'),'no')},'announce_position_limit':{'type':Sequelize['INTEGER'](0xb)},'announce_round_seconds':{'type':Sequelize[_0xc3cb('0x3')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0xc3cb('0x5')]},'queue_youarenext':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':null},'queue_minute':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xc3cb('0x5')]},'queue_quantity1':{'type':Sequelize[_0xc3cb('0x5')]},'queue_quantity2':{'type':Sequelize['STRING']},'queue_periodic_announce':{'type':Sequelize[_0xc3cb('0x5')]},'queue_less_than':{'type':Sequelize[_0xc3cb('0x5')]},'periodic_announce':{'type':Sequelize[_0xc3cb('0x18')],'set':function(_0x136fa9){this['setDataValue'](_0xc3cb('0x19'),_0x136fa9?_0x136fa9['join'](','):[]);},'get':function(){return this[_0xc3cb('0xf')](_0xc3cb('0x19'))?this[_0xc3cb('0xf')](_0xc3cb('0x19'))[_0xc3cb('0x1a')](','):[];}},'joinempty':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':'yes','set':function(_0x38783f){this[_0xc3cb('0xd')](_0xc3cb('0x1b'),_0x38783f?_0x38783f[_0xc3cb('0x1c')](','):undefined);},'get':function(){return this[_0xc3cb('0xf')](_0xc3cb('0x1b'))?this[_0xc3cb('0xf')]('joinempty')[_0xc3cb('0x1a')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':'no','set':function(_0x4bb0a6){this[_0xc3cb('0xd')](_0xc3cb('0x1d'),_0x4bb0a6?_0x4bb0a6[_0xc3cb('0x1c')](','):undefined);},'get':function(){return this['getDataValue']('leavewhenempty')?this['getDataValue'](_0xc3cb('0x1d'))[_0xc3cb('0x1a')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x16'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize['ENUM'](_0xc3cb('0x16'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0xc3cb('0x15')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize['ENUM'](_0xc3cb('0x16'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xc3cb('0x5')]},'description':{'type':Sequelize['STRING']},'acw':{'type':Sequelize[_0xc3cb('0x1e')],'defaultValue':0x0,'set':function(_0x18623f){this['setDataValue']('acw',_0x18623f);if(_0x18623f){if(this[_0xc3cb('0xf')]('wrapuptime')<0x2){this[_0xc3cb('0xd')](_0xc3cb('0x1f'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0xc3cb('0x15')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0xc3cb('0x1e')],'defaultValue':0x0,'comment':_0xc3cb('0x20')},'dialMethod':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x21'),_0xc3cb('0x13'),_0xc3cb('0x14'),'predictive',_0xc3cb('0x11')),'defaultValue':_0xc3cb('0x13'),'comment':_0xc3cb('0x22')},'dialLimitChannel':{'type':Sequelize[_0xc3cb('0x15')](0x4)[_0xc3cb('0x23')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xc3cb('0x24')},'dialLimitQueue':{'type':Sequelize[_0xc3cb('0x15')](0x4)[_0xc3cb('0x23')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xc3cb('0x25')},'dialPowerLevel':{'type':Sequelize[_0xc3cb('0x26')](0x2)['UNSIGNED'],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0xc3cb('0x27')},'dialPredictiveOptimization':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x28'),'dropRate'),'defaultValue':_0xc3cb('0x29'),'comment':_0xc3cb('0x2a')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0xc3cb('0x26')](0x2)[_0xc3cb('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0xc3cb('0x2b')},'dialPredictiveInterval':{'type':Sequelize[_0xc3cb('0x15')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0xc3cb('0x2c')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize[_0xc3cb('0x15')](0x3)[_0xc3cb('0x23')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueOptions':{'type':Sequelize['STRING'],'defaultValue':'tTxX','comment':_0xc3cb('0x2d')},'dialQueueTimeout':{'type':Sequelize[_0xc3cb('0x15')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc3cb('0x2e')},'dialQueueProject':{'type':Sequelize[_0xc3cb('0x5')],'comment':_0xc3cb('0x2f')},'dialCongestionMaxRetry':{'type':Sequelize[_0xc3cb('0x15')](0x3)[_0xc3cb('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc3cb('0x30')},'dialCongestionRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xc3cb('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc3cb('0x31')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xc3cb('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc3cb('0x32')},'dialBusyRetryFrequency':{'type':Sequelize[_0xc3cb('0x15')](0x5)[_0xc3cb('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc3cb('0x33')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xc3cb('0x15')](0x3)[_0xc3cb('0x23')],'defaultValue':0x3,'comment':_0xc3cb('0x34')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xc3cb('0x15')](0x5)[_0xc3cb('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc3cb('0x35')},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xc3cb('0x23')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xc3cb('0x36')},'dialTimezone':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xc3cb('0x5')],'defaultValue':_0xc3cb('0x37')},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x38'),'never',_0xc3cb('0x39')),'defaultValue':_0xc3cb('0x38')},'dialAMDActive':{'type':Sequelize[_0xc3cb('0x1e')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)[_0xc3cb('0x23')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xc3cb('0x3a')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xc3cb('0x3b')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xc3cb('0x15')](0x9)[_0xc3cb('0x23')],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xc3cb('0x15')](0x9)[_0xc3cb('0x23')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0xc3cb('0x15')](0x9)[_0xc3cb('0x23')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xc3cb('0x3c')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xc3cb('0x15')](0x9)[_0xc3cb('0x23')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xc3cb('0x15')](0x9)[_0xc3cb('0x23')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xc3cb('0x3d')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xc3cb('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xc3cb('0x3e')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xc3cb('0x15')](0x9)[_0xc3cb('0x23')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xc3cb('0x3f')},'dialRecallMeTimeout':{'type':Sequelize['INTEGER'](0x5)[_0xc3cb('0x23')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0xc3cb('0x40')},'dialRecallInQueue':{'type':Sequelize[_0xc3cb('0x1e')],'defaultValue':0x0,'comment':'Active/Disactive\x20Recall\x20In\x20Queue'},'dialOrderByScheduledAt':{'type':Sequelize[_0xc3cb('0x3')](_0xc3cb('0x41'),_0xc3cb('0x42')),'defaultValue':_0xc3cb('0x41')},'dialQueueProject2':{'type':Sequelize[_0xc3cb('0x5')],'comment':_0xc3cb('0x2f')},'dialAgiAfterHangupClient':{'type':Sequelize[_0xc3cb('0x1e')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xc3cb('0x15')](0x3)[_0xc3cb('0x23')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xc3cb('0x43')},'dialCutDigit':{'type':Sequelize[_0xc3cb('0x15')](0x3)[_0xc3cb('0x23')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xc3cb('0x44')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xc3cb('0x15')](0x3)[_0xc3cb('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc3cb('0x45')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xc3cb('0x15')](0x5)[_0xc3cb('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc3cb('0x46')},'dialDropMaxRetry':{'type':Sequelize[_0xc3cb('0x15')](0x3)[_0xc3cb('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc3cb('0x47')},'dialDropRetryFrequency':{'type':Sequelize[_0xc3cb('0x15')](0x5)[_0xc3cb('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc3cb('0x48')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xc3cb('0x15')](0x3)[_0xc3cb('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc3cb('0x49')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xc3cb('0x15')](0x5)[_0xc3cb('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc3cb('0x4a')},'dialMachineMaxRetry':{'type':Sequelize[_0xc3cb('0x15')](0x3)[_0xc3cb('0x23')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc3cb('0x4b')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xc3cb('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc3cb('0x4c')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xc3cb('0x4d')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xc3cb('0x15')](0x5)[_0xc3cb('0x23')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xc3cb('0x4e')},'mandatoryDispositionPauseId':{'type':Sequelize[_0xc3cb('0x15')],'allowNull':!![],'comment':_0xc3cb('0x4f')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xc3cb('0x50'),'set':function(_0x387172){if(!_0x387172)this[_0xc3cb('0xd')](_0xc3cb('0x51'),null);this['setDataValue'](_0xc3cb('0x52'),_0x387172);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0xc3cb('0x15')](0x3)[_0xc3cb('0x23')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0xc3cb('0x15')](0x3)[_0xc3cb('0x23')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
+var _0xf3d0=['AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','sequelize','exports','name','ENUM','inbound','outbound','STRING','ringall','leastrecent','fewestcalls','random','rrmemory','linear','wrandom','rrordered','getDataValue','type','dialMethod','roundrobin','progressive','predictive','power','INTEGER','yes','once','TEXT','periodic_announce','join','joinempty','split','setDataValue','leavewhenempty','BOOLEAN','acw','wrapuptime','preview','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','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)'];(function(_0x5eb821,_0x65873){var _0x4e9bc8=function(_0x5f3252){while(--_0x5f3252){_0x5eb821['push'](_0x5eb821['shift']());}};_0x4e9bc8(++_0x65873);}(_0xf3d0,0x18e));var _0x0f3d=function(_0x2ca0d4,_0x4fe48e){_0x2ca0d4=_0x2ca0d4-0x0;var _0x4ed40d=_0xf3d0[_0x2ca0d4];return _0x4ed40d;};'use strict';var Sequelize=require(_0x0f3d('0x0'));module[_0x0f3d('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x0f3d('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x0f3d('0x3')](_0x0f3d('0x4'),_0x0f3d('0x5')),'allowNull':![],'defaultValue':_0x0f3d('0x4')},'musiconhold':{'type':Sequelize[_0x0f3d('0x6')],'defaultValue':'default'},'announce':{'type':Sequelize['STRING'],'defaultValue':''},'strategy':{'type':Sequelize[_0x0f3d('0x3')]('rr',_0x0f3d('0x7'),_0x0f3d('0x8'),_0x0f3d('0x9'),_0x0f3d('0xa'),_0x0f3d('0xb'),_0x0f3d('0xc'),_0x0f3d('0xd'),_0x0f3d('0xe')),'allowNull':![],'defaultValue':_0x0f3d('0x7'),'set':function(_0x3e9a5a){this['setDataValue']('strategy',_0x3e9a5a?_0x3e9a5a:'rrmemory');},'get':function(){var _0x14f01a=this[_0x0f3d('0xf')](_0x0f3d('0x10'));var _0x2b4c0f=this['getDataValue'](_0x0f3d('0x11'));var _0x22b6be=this[_0x0f3d('0xf')]('strategy');if(_0x14f01a===_0x0f3d('0x4')){return _0x22b6be;}if(_0x2b4c0f==='booked'&&_0x22b6be===_0x0f3d('0xb')||_0x2b4c0f==='booked'&&_0x22b6be===_0x0f3d('0x12')){return _0x22b6be;}if(_0x2b4c0f===_0x0f3d('0x13')||_0x2b4c0f===_0x0f3d('0x14')||_0x2b4c0f===_0x0f3d('0x15')){return _0x22b6be;}return null;}},'servicelevel':{'type':Sequelize[_0x0f3d('0x16')](0xb),'defaultValue':0x0},'context':{'type':Sequelize['STRING'],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x0f3d('0x16')](0xb)},'timeout':{'type':Sequelize[_0x0f3d('0x16')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x0f3d('0x16')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x0f3d('0x6')]},'weight':{'type':Sequelize[_0x0f3d('0x16')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x0f3d('0x16')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x0f3d('0x3')](_0x0f3d('0x17'),'no'),'defaultValue':_0x0f3d('0x17')},'autopause':{'type':Sequelize['ENUM'](_0x0f3d('0x17'),'no','all'),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x0f3d('0x16')](0xb)},'autopausebusy':{'type':Sequelize[_0x0f3d('0x3')](_0x0f3d('0x17'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x0f3d('0x3')](_0x0f3d('0x17'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x0f3d('0x16')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x0f3d('0x3')](_0x0f3d('0x17'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x0f3d('0x3')](_0x0f3d('0x17'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x0f3d('0x3')]('yes','no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0x0f3d('0x6')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x0f3d('0x6')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x0f3d('0x16')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x0f3d('0x16')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x0f3d('0x16')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize['ENUM'](_0x0f3d('0x17'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize['ENUM'](_0x0f3d('0x17'),'no'),'defaultValue':_0x0f3d('0x17')},'announce_holdtime':{'type':Sequelize[_0x0f3d('0x3')](_0x0f3d('0x17'),'no',_0x0f3d('0x18')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x0f3d('0x6')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x0f3d('0x3')]('yes','no')},'announce_position_limit':{'type':Sequelize['INTEGER'](0xb)},'announce_round_seconds':{'type':Sequelize[_0x0f3d('0x3')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x0f3d('0x6')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x0f3d('0x6')]},'queue_youarenext':{'type':Sequelize[_0x0f3d('0x6')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x0f3d('0x6')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x0f3d('0x6')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x0f3d('0x6')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x0f3d('0x6')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize['STRING'],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x0f3d('0x6')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x0f3d('0x6')],'defaultValue':null},'queue_reporthold':{'type':Sequelize['STRING']},'queue_quantity1':{'type':Sequelize[_0x0f3d('0x6')]},'queue_quantity2':{'type':Sequelize['STRING']},'queue_periodic_announce':{'type':Sequelize['STRING']},'queue_less_than':{'type':Sequelize[_0x0f3d('0x6')]},'periodic_announce':{'type':Sequelize[_0x0f3d('0x19')],'set':function(_0x1ace46){this['setDataValue'](_0x0f3d('0x1a'),_0x1ace46?_0x1ace46[_0x0f3d('0x1b')](','):[]);},'get':function(){return this['getDataValue'](_0x0f3d('0x1a'))?this[_0x0f3d('0xf')]('periodic_announce')['split'](','):[];}},'joinempty':{'type':Sequelize[_0x0f3d('0x6')],'defaultValue':_0x0f3d('0x17'),'set':function(_0x46334d){this['setDataValue']('joinempty',_0x46334d?_0x46334d[_0x0f3d('0x1b')](','):undefined);},'get':function(){return this[_0x0f3d('0xf')](_0x0f3d('0x1c'))?this[_0x0f3d('0xf')](_0x0f3d('0x1c'))[_0x0f3d('0x1d')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x0f3d('0x6')],'defaultValue':'no','set':function(_0x1a8b97){this[_0x0f3d('0x1e')](_0x0f3d('0x1f'),_0x1a8b97?_0x1a8b97[_0x0f3d('0x1b')](','):undefined);},'get':function(){return this[_0x0f3d('0xf')](_0x0f3d('0x1f'))?this[_0x0f3d('0xf')]('leavewhenempty')[_0x0f3d('0x1d')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0x0f3d('0x3')](_0x0f3d('0x17'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x0f3d('0x3')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x0f3d('0x6')]},'description':{'type':Sequelize[_0x0f3d('0x6')]},'acw':{'type':Sequelize[_0x0f3d('0x20')],'defaultValue':0x0,'set':function(_0x58ff7c){this[_0x0f3d('0x1e')](_0x0f3d('0x21'),_0x58ff7c);if(_0x58ff7c){if(this[_0x0f3d('0xf')](_0x0f3d('0x22'))<0x2){this[_0x0f3d('0x1e')](_0x0f3d('0x22'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0x0f3d('0x16')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x0f3d('0x20')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'dialMethod':{'type':Sequelize['ENUM'](_0x0f3d('0x23'),_0x0f3d('0x13'),_0x0f3d('0x15'),_0x0f3d('0x14'),'booked'),'defaultValue':'progressive','comment':_0x0f3d('0x24')},'dialLimitChannel':{'type':Sequelize[_0x0f3d('0x16')](0x4)[_0x0f3d('0x25')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x0f3d('0x26')},'dialLimitQueue':{'type':Sequelize[_0x0f3d('0x16')](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x0f3d('0x27')},'dialPowerLevel':{'type':Sequelize[_0x0f3d('0x28')](0x2)[_0x0f3d('0x25')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x0f3d('0x29')},'dialPredictiveOptimization':{'type':Sequelize['ENUM'](_0x0f3d('0x2a'),_0x0f3d('0x2b')),'defaultValue':_0x0f3d('0x2b'),'comment':'Only\x20for\x20predictive\x20method.'},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x0f3d('0x28')](0x2)[_0x0f3d('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x0f3d('0x2c')},'dialPredictiveInterval':{'type':Sequelize[_0x0f3d('0x16')](0x3)[_0x0f3d('0x25')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x0f3d('0x2d')},'dialOriginateCallerIdName':{'type':Sequelize[_0x0f3d('0x6')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x0f3d('0x6')]},'dialOriginateTimeout':{'type':Sequelize[_0x0f3d('0x16')](0x3)[_0x0f3d('0x25')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueOptions':{'type':Sequelize['STRING'],'defaultValue':_0x0f3d('0x2e'),'comment':_0x0f3d('0x2f')},'dialQueueTimeout':{'type':Sequelize[_0x0f3d('0x16')](0x3)[_0x0f3d('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0f3d('0x30')},'dialQueueProject':{'type':Sequelize[_0x0f3d('0x6')],'comment':_0x0f3d('0x31')},'dialCongestionMaxRetry':{'type':Sequelize[_0x0f3d('0x16')](0x3)[_0x0f3d('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0f3d('0x32')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x0f3d('0x16')](0x5)[_0x0f3d('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0f3d('0x33')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0f3d('0x34')},'dialBusyRetryFrequency':{'type':Sequelize[_0x0f3d('0x16')](0x5)[_0x0f3d('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0f3d('0x35')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x0f3d('0x16')](0x3)[_0x0f3d('0x25')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x0f3d('0x16')](0x5)[_0x0f3d('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0f3d('0x36')},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x0f3d('0x25')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x0f3d('0x37')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x0f3d('0x6')],'defaultValue':_0x0f3d('0x38')},'dialPrefix':{'type':Sequelize[_0x0f3d('0x6')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x0f3d('0x3')](_0x0f3d('0x39'),'never',_0x0f3d('0x3a')),'defaultValue':_0x0f3d('0x39')},'dialAMDActive':{'type':Sequelize[_0x0f3d('0x20')],'defaultValue':0x0,'comment':_0x0f3d('0x3b')},'dialAMDInitialSilence':{'type':Sequelize[_0x0f3d('0x16')](0x9)[_0x0f3d('0x25')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0x0f3d('0x16')](0x9)[_0x0f3d('0x25')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x0f3d('0x3c')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0x0f3d('0x25')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x0f3d('0x3d')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)[_0x0f3d('0x25')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x0f3d('0x3e')},'dialAMDMinWordLength':{'type':Sequelize[_0x0f3d('0x16')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x0f3d('0x3f')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x0f3d('0x16')](0x9)[_0x0f3d('0x25')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x0f3d('0x40')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x0f3d('0x16')](0x9)[_0x0f3d('0x25')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize[_0x0f3d('0x16')](0x5)[_0x0f3d('0x25')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x0f3d('0x41')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x0f3d('0x16')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialRecallMeTimeout':{'type':Sequelize['INTEGER'](0x5)[_0x0f3d('0x25')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x0f3d('0x42')},'dialRecallInQueue':{'type':Sequelize[_0x0f3d('0x20')],'defaultValue':0x0,'comment':_0x0f3d('0x43')},'dialOrderByScheduledAt':{'type':Sequelize[_0x0f3d('0x3')]('DESC','ASC'),'defaultValue':_0x0f3d('0x44')},'dialQueueProject2':{'type':Sequelize[_0x0f3d('0x6')],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialAgiAfterHangupClient':{'type':Sequelize[_0x0f3d('0x20')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x0f3d('0x20')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0x0f3d('0x25')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0x0f3d('0x16')](0x3)[_0x0f3d('0x25')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x0f3d('0x45')},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x0f3d('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x0f3d('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0f3d('0x46')},'dialDropMaxRetry':{'type':Sequelize[_0x0f3d('0x16')](0x3)[_0x0f3d('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0f3d('0x47')},'dialDropRetryFrequency':{'type':Sequelize[_0x0f3d('0x16')](0x5)[_0x0f3d('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0f3d('0x48')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x0f3d('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x0f3d('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0f3d('0x49')},'dialMachineMaxRetry':{'type':Sequelize[_0x0f3d('0x16')](0x3)[_0x0f3d('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0x0f3d('0x16')](0x5)[_0x0f3d('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0f3d('0x4a')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x0f3d('0x16')](0x3)[_0x0f3d('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0f3d('0x4b')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x0f3d('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0f3d('0x4c')},'mandatoryDispositionPauseId':{'type':Sequelize[_0x0f3d('0x16')],'allowNull':!![],'comment':_0x0f3d('0x4d')},'mandatoryDisposition':{'type':Sequelize[_0x0f3d('0x20')],'defaultValue':![],'comment':_0x0f3d('0x4e'),'set':function(_0x5ea6e6){if(!_0x5ea6e6)this[_0x0f3d('0x1e')]('mandatoryDispositionPauseId',null);this[_0x0f3d('0x1e')]('mandatoryDisposition',_0x5ea6e6);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize['INTEGER'](0x3)[_0x0f3d('0x25')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x0f3d('0x16')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
index 0c0b969..418edcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c43=['body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','outbound','UserProfileSection','autoAssociation','error','clone','params','rawAttributes','omit','createdAt','updatedAt','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','getHoppers','CmHopper','getHopperHistories','findOne','CmHopperHistory','VoiceQueueId','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams','User','Agents','online','voicePause','interface','flatMap','forEach','sequelize','upsert','penalty','each','UserVoiceQueueRt','isNil','format','emit','userVoiceQueue:save','select','field','tq.TeamId','from','team_has_voice_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','every','TeamId','compact','transaction','removeTeams','ids','isEmpty','userVoiceQueue:remove','addAgents','spread','SIP/%s','removeAgents','isArray','getAgents','getMembers','CmList','getLists','dialCheckDuplicateType','always','into','cm_hopper','scheduledAt','phone','ContactId','CmListId','toString','ListId','NOW()','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','phone\x20NOT\x20IN\x20(?)','COALESCE(phone,\x27\x27)','onlyIfOpen','insert','fromQuery','all','removeLists','getBlackLists','addBlackLists','removeBlackLists','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','fs-extra','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','redis','localhost','socket.io-emitter','end','status','json','undefined','count','offset','set','Content-Range','save','then','get','VoiceQueues','inbound','QueueCampaigns','ignore','value','find','name','destroy','sendStatus','stack','send','VoiceQueue','fieldName','key','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','create'];(function(_0xb77eca,_0x18fe7a){var _0x127a4c=function(_0x599615){while(--_0x599615){_0xb77eca['push'](_0xb77eca['shift']());}};_0x127a4c(++_0x18fe7a);}(_0x4c43,0x67));var _0x34c4=function(_0x205b01,_0x2b034c){_0x205b01=_0x205b01-0x0;var _0x3f84f5=_0x4c43[_0x205b01];return _0x3f84f5;};'use strict';var emlformat=require(_0x34c4('0x0'));var rimraf=require(_0x34c4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x34c4('0x2'));var rp=require(_0x34c4('0x3'));var moment=require(_0x34c4('0x4'));var BPromise=require(_0x34c4('0x5'));var Mustache=require(_0x34c4('0x6'));var util=require(_0x34c4('0x7'));var path=require(_0x34c4('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x34c4('0x9'));var _=require(_0x34c4('0xa'));var squel=require(_0x34c4('0xb'));var crypto=require(_0x34c4('0xc'));var jsforce=require(_0x34c4('0xd'));var deskjs=require(_0x34c4('0xe'));var toCsv=require(_0x34c4('0xf'));var querystring=require(_0x34c4('0x10'));var Papa=require(_0x34c4('0x11'));var Redis=require(_0x34c4('0x12'));var authService=require(_0x34c4('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x34c4('0x14'));var logger=require(_0x34c4('0x15'))(_0x34c4('0x16'));var utils=require(_0x34c4('0x17'));var config=require(_0x34c4('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x34c4('0x19'))['db'];config[_0x34c4('0x1a')]=_['defaults'](config[_0x34c4('0x1a')],{'host':_0x34c4('0x1b'),'port':0x18eb});var socket=require(_0x34c4('0x1c'))(new Redis(config[_0x34c4('0x1a')]));require('./voiceQueue.socket')['register'](socket);function respondWithStatusCode(_0x333ff9,_0x4ea2eb){_0x4ea2eb=_0x4ea2eb||0xcc;return function(_0x326107){if(_0x326107){return _0x333ff9['sendStatus'](_0x4ea2eb);}return _0x333ff9['status'](_0x4ea2eb)[_0x34c4('0x1d')]();};}function respondWithResult(_0x5e1702,_0x40bcaa){_0x40bcaa=_0x40bcaa||0xc8;return function(_0x308b62){if(_0x308b62){return _0x5e1702[_0x34c4('0x1e')](_0x40bcaa)[_0x34c4('0x1f')](_0x308b62);}};}function respondWithFilteredResult(_0x3617ce,_0x227b47){return function(_0x135011){if(_0x135011){var _0x1d9ca7=typeof _0x227b47['offset']===_0x34c4('0x20')&&typeof _0x227b47['limit']===_0x34c4('0x20');var _0x4e03b2=_0x135011[_0x34c4('0x21')];var _0x395e4f=_0x1d9ca7?0x0:_0x227b47[_0x34c4('0x22')];var _0xfce78f=_0x1d9ca7?_0x135011[_0x34c4('0x21')]:_0x227b47[_0x34c4('0x22')]+_0x227b47['limit'];var _0x4d5b40;if(_0xfce78f>=_0x4e03b2){_0xfce78f=_0x4e03b2;_0x4d5b40=0xc8;}else{_0x4d5b40=0xce;}_0x3617ce['status'](_0x4d5b40);return _0x3617ce[_0x34c4('0x23')](_0x34c4('0x24'),_0x395e4f+'-'+_0xfce78f+'/'+_0x4e03b2)['json'](_0x135011);}return null;};}function patchUpdates(_0x4150f4){return function(_0x440750){try{jsonpatch['apply'](_0x440750,_0x4150f4,!![]);}catch(_0x46c476){return BPromise['reject'](_0x46c476);}return _0x440750[_0x34c4('0x25')]();};}function saveUpdates(_0x4e0751,_0xe216d4){return function(_0x38cb64){if(_0x38cb64){return _0x38cb64['update'](_0x4e0751)['then'](function(_0x22417f){return _0x22417f;});}return null;};}function removeEntity(_0x590b75,_0x4e95d3){return function(_0x32d47){if(_0x32d47){return _0x32d47['destroy']()[_0x34c4('0x26')](function(){var _0x7f8bf4=_0x32d47[_0x34c4('0x27')]({'plain':!![]});var _0x557d51=[{'name':_0x34c4('0x28'),'value':_0x34c4('0x29'),'ignore':![]},{'name':_0x34c4('0x2a'),'value':'outbound','ignore':![]}];var _0x4ba12b=_(_0x557d51)['filter'](_0x34c4('0x2b'))['map'](_0x34c4('0x2c'))[_0x34c4('0x2c')]();if(_['includes'](_0x4ba12b,_0x7f8bf4['type'])){return;}var _0x14dca2=_[_0x34c4('0x2d')](_0x557d51,['value',_0x7f8bf4['type']])[_0x34c4('0x2e')];return db['UserProfileResource'][_0x34c4('0x2f')]({'where':{'type':_0x14dca2,'resourceId':_0x7f8bf4['id']}})[_0x34c4('0x26')](function(){return _0x32d47;});})['then'](function(){_0x590b75[_0x34c4('0x1e')](0xcc)[_0x34c4('0x1d')]();});}};}function handleEntityNotFound(_0x3511ca,_0x526197){return function(_0xb2d5e){if(!_0xb2d5e){_0x3511ca[_0x34c4('0x30')](0x194);}return _0xb2d5e;};}function handleError(_0x1dd872,_0x223584){_0x223584=_0x223584||0x1f4;return function(_0x5211cd){logger['error'](_0x5211cd[_0x34c4('0x31')]);if(_0x5211cd[_0x34c4('0x2e')]){delete _0x5211cd[_0x34c4('0x2e')];}_0x1dd872[_0x34c4('0x1e')](_0x223584)[_0x34c4('0x32')](_0x5211cd);};}exports['index']=function(_0x570a86,_0x488be7){var _0xc5daa2={},_0x405c03={},_0x196c85={'count':0x0,'rows':[]};var _0x2efe91=_['map'](db[_0x34c4('0x33')]['rawAttributes'],function(_0x1731e7){return{'name':_0x1731e7[_0x34c4('0x34')],'type':_0x1731e7['type'][_0x34c4('0x35')]};});_0x405c03['model']=_[_0x34c4('0x36')](_0x2efe91,_0x34c4('0x2e'));_0x405c03[_0x34c4('0x37')]=_[_0x34c4('0x38')](_0x570a86['query']);_0x405c03[_0x34c4('0x39')]=_[_0x34c4('0x3a')](_0x405c03[_0x34c4('0x3b')],_0x405c03[_0x34c4('0x37')]);_0xc5daa2[_0x34c4('0x3c')]=_[_0x34c4('0x3a')](_0x405c03[_0x34c4('0x3b')],qs[_0x34c4('0x3d')](_0x570a86[_0x34c4('0x37')][_0x34c4('0x3d')]));_0xc5daa2[_0x34c4('0x3c')]=_0xc5daa2[_0x34c4('0x3c')][_0x34c4('0x3e')]?_0xc5daa2[_0x34c4('0x3c')]:_0x405c03['model'];if(!_0x570a86[_0x34c4('0x37')][_0x34c4('0x3f')](_0x34c4('0x40'))){_0xc5daa2['limit']=qs[_0x34c4('0x41')](_0x570a86[_0x34c4('0x37')]['limit']);_0xc5daa2[_0x34c4('0x22')]=qs[_0x34c4('0x22')](_0x570a86[_0x34c4('0x37')]['offset']);}_0xc5daa2[_0x34c4('0x42')]=qs[_0x34c4('0x43')](_0x570a86[_0x34c4('0x37')][_0x34c4('0x43')]);_0xc5daa2[_0x34c4('0x44')]=qs['filters'](_[_0x34c4('0x45')](_0x570a86[_0x34c4('0x37')],_0x405c03['filters']),_0x2efe91);if(_0x570a86[_0x34c4('0x37')]['filter']){_0xc5daa2[_0x34c4('0x44')]=_[_0x34c4('0x46')](_0xc5daa2[_0x34c4('0x44')],{'$or':_[_0x34c4('0x36')](_0x2efe91,function(_0x2013db){if(_0x2013db[_0x34c4('0x47')]!==_0x34c4('0x48')){var _0x1a447f={};_0x1a447f[_0x2013db[_0x34c4('0x2e')]]={'$like':'%'+_0x570a86[_0x34c4('0x37')][_0x34c4('0x49')]+'%'};return _0x1a447f;}})});}_0xc5daa2=_[_0x34c4('0x46')]({},_0xc5daa2,_0x570a86[_0x34c4('0x4a')]);var _0x1c21ef={'where':_0xc5daa2[_0x34c4('0x44')]};return db[_0x34c4('0x33')][_0x34c4('0x21')](_0x1c21ef)[_0x34c4('0x26')](function(_0x5cb4d6){_0x196c85[_0x34c4('0x21')]=_0x5cb4d6;if(_0x570a86[_0x34c4('0x37')][_0x34c4('0x4b')]){_0xc5daa2[_0x34c4('0x4c')]=[{'all':!![]}];}return db['VoiceQueue'][_0x34c4('0x4d')](_0xc5daa2);})[_0x34c4('0x26')](function(_0x479f18){_0x196c85[_0x34c4('0x4e')]=_0x479f18;return _0x196c85;})[_0x34c4('0x26')](respondWithFilteredResult(_0x488be7,_0xc5daa2))[_0x34c4('0x4f')](handleError(_0x488be7,null));};exports['show']=function(_0x18c831,_0x541f53){var _0x1c808c={'raw':![],'where':{'id':_0x18c831['params']['id']}},_0x2f0fc2={};_0x2f0fc2[_0x34c4('0x3b')]=_['keys'](db[_0x34c4('0x33')]['rawAttributes']);_0x2f0fc2[_0x34c4('0x37')]=_[_0x34c4('0x38')](_0x18c831[_0x34c4('0x37')]);_0x2f0fc2[_0x34c4('0x39')]=_[_0x34c4('0x3a')](_0x2f0fc2[_0x34c4('0x3b')],_0x2f0fc2[_0x34c4('0x37')]);_0x1c808c[_0x34c4('0x3c')]=_['intersection'](_0x2f0fc2[_0x34c4('0x3b')],qs[_0x34c4('0x3d')](_0x18c831[_0x34c4('0x37')]['fields']));_0x1c808c['attributes']=_0x1c808c[_0x34c4('0x3c')][_0x34c4('0x3e')]?_0x1c808c[_0x34c4('0x3c')]:_0x2f0fc2[_0x34c4('0x3b')];if(_0x18c831['query'][_0x34c4('0x4b')]){_0x1c808c[_0x34c4('0x4c')]=[{'all':!![]}];}_0x1c808c=_[_0x34c4('0x46')]({},_0x1c808c,_0x18c831[_0x34c4('0x4a')]);return db[_0x34c4('0x33')][_0x34c4('0x2d')](_0x1c808c)['then'](handleEntityNotFound(_0x541f53,null))[_0x34c4('0x26')](respondWithResult(_0x541f53,null))[_0x34c4('0x4f')](handleError(_0x541f53,null));};exports['create']=function(_0x5afa32,_0x34f1cf){return db['VoiceQueue'][_0x34c4('0x50')](_0x5afa32[_0x34c4('0x51')],{})[_0x34c4('0x26')](function(_0x46bc97){var _0x2d75ad=_0x5afa32['user'][_0x34c4('0x27')]({'plain':!![]});if(!_0x2d75ad)throw new Error(_0x34c4('0x52'));if(_0x2d75ad[_0x34c4('0x53')]===_0x34c4('0x54')){var _0x2f447d=_0x46bc97['get']({'plain':!![]});var _0x42ff13=[{'name':_0x34c4('0x28'),'value':_0x34c4('0x29')},{'name':_0x34c4('0x2a'),'value':_0x34c4('0x55')}];var _0x3e038f=_[_0x34c4('0x2d')](_0x42ff13,['value',_0x2f447d[_0x34c4('0x47')]])['name'];return db[_0x34c4('0x56')][_0x34c4('0x2d')]({'where':{'name':_0x3e038f,'userProfileId':_0x2d75ad['userProfileId']},'raw':!![]})[_0x34c4('0x26')](function(_0x90eb69){if(_0x90eb69&&_0x90eb69[_0x34c4('0x57')]===0x0){return db['UserProfileResource'][_0x34c4('0x50')]({'name':_0x2f447d[_0x34c4('0x2e')],'resourceId':_0x2f447d['id'],'type':_0x90eb69[_0x34c4('0x2e')],'sectionId':_0x90eb69['id']},{})['then'](function(){return _0x46bc97;});}else{return _0x46bc97;}})['catch'](function(_0x2c9006){logger[_0x34c4('0x58')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2c9006);throw _0x2c9006;});}return _0x46bc97;})[_0x34c4('0x26')](respondWithResult(_0x34f1cf,0xc9))[_0x34c4('0x4f')](handleError(_0x34f1cf,null));};exports[_0x34c4('0x59')]=function(_0x412880,_0x5b0a94){var _0x421691={'where':{'id':_0x412880[_0x34c4('0x5a')]['id']}},_0x569df9={};_0x569df9['model']=_[_0x34c4('0x38')](db[_0x34c4('0x33')][_0x34c4('0x5b')]);_0x421691[_0x34c4('0x3c')]=_[_0x34c4('0x3a')](_0x569df9['model'],qs[_0x34c4('0x3d')](_0x412880[_0x34c4('0x37')][_0x34c4('0x3d')]));_0x421691[_0x34c4('0x3c')]=_0x421691[_0x34c4('0x3c')][_0x34c4('0x3e')]?_0x421691[_0x34c4('0x3c')]:_0x569df9[_0x34c4('0x3b')];if(_0x412880['query']['includeAll']){_0x421691[_0x34c4('0x4c')]=[{'all':!![]}];}_0x421691=_[_0x34c4('0x46')]({},_0x421691,_0x412880[_0x34c4('0x4a')]);return db[_0x34c4('0x33')][_0x34c4('0x2d')](_0x421691)[_0x34c4('0x26')](handleEntityNotFound(_0x5b0a94,null))['then'](function(_0x2b7a60){if(_0x2b7a60){var _0x12f50a=_0x2b7a60['get']({'plain':!![]});_0x12f50a=qs[_0x34c4('0x5c')](_0x12f50a,['id',_0x34c4('0x5d'),_0x34c4('0x5e')]);_0x412880['body']=_[_0x34c4('0x5c')](_0x412880['body'],['id',_0x34c4('0x5d'),_0x34c4('0x5e')]);return db[_0x34c4('0x33')]['create'](_[_0x34c4('0x46')](_0x12f50a,_0x412880['body']),{'include':_0x412880['query'][_0x34c4('0x4b')]?[{'all':!![]}]:undefined})[_0x34c4('0x26')](function(_0x54556a){var _0x300317=_0x412880[_0x34c4('0x54')][_0x34c4('0x27')]({'plain':!![]});if(!_0x300317)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x300317[_0x34c4('0x53')]===_0x34c4('0x54')){var _0x3fcc01=_0x54556a[_0x34c4('0x27')]({'plain':!![]});var _0x18fcc0=[{'name':_0x34c4('0x28'),'value':_0x34c4('0x29')},{'name':_0x34c4('0x2a'),'value':'outbound'}];var _0xbf3c27=_[_0x34c4('0x2d')](_0x18fcc0,[_0x34c4('0x2c'),_0x3fcc01[_0x34c4('0x47')]])['name'];return db[_0x34c4('0x56')]['find']({'where':{'name':_0xbf3c27,'userProfileId':_0x300317[_0x34c4('0x5f')]},'raw':!![]})[_0x34c4('0x26')](function(_0x12c45f){if(_0x12c45f&&_0x12c45f['autoAssociation']===0x0){return db[_0x34c4('0x60')][_0x34c4('0x50')]({'name':_0x3fcc01[_0x34c4('0x2e')],'resourceId':_0x3fcc01['id'],'type':_0x12c45f[_0x34c4('0x2e')],'sectionId':_0x12c45f['id']},{})[_0x34c4('0x26')](function(){return _0x54556a;});}else{return _0x54556a;}})[_0x34c4('0x4f')](function(_0x2fa282){logger[_0x34c4('0x58')](_0x34c4('0x61'),_0x2fa282);throw _0x2fa282;});}return _0x54556a;});}})[_0x34c4('0x26')](respondWithResult(_0x5b0a94,0xc9))[_0x34c4('0x4f')](handleError(_0x5b0a94,null));};exports[_0x34c4('0x62')]=function(_0x28b93a,_0x146f58){if(_0x28b93a[_0x34c4('0x51')]['id']){delete _0x28b93a[_0x34c4('0x51')]['id'];}return db['VoiceQueue'][_0x34c4('0x2d')]({'where':{'id':_0x28b93a[_0x34c4('0x5a')]['id']}})['then'](handleEntityNotFound(_0x146f58,null))[_0x34c4('0x26')](saveUpdates(_0x28b93a[_0x34c4('0x51')],null))[_0x34c4('0x26')](respondWithResult(_0x146f58,null))[_0x34c4('0x4f')](handleError(_0x146f58,null));};exports[_0x34c4('0x2f')]=function(_0x270dc2,_0x345fcc){return db['VoiceQueue']['find']({'where':{'id':_0x270dc2['params']['id']}})['then'](handleEntityNotFound(_0x345fcc,null))['then'](removeEntity(_0x345fcc,null))[_0x34c4('0x4f')](handleError(_0x345fcc,null));};exports[_0x34c4('0x63')]=function(_0x5605ce,_0x56a0cc,_0x1bf5f9){var _0x1a0983={'raw':![],'where':{}};var _0x2ccbb7={};var _0x253696={'count':0x0,'rows':[]};return db[_0x34c4('0x33')]['findOne']({'where':{'id':_0x5605ce[_0x34c4('0x5a')]['id']}})[_0x34c4('0x26')](handleEntityNotFound(_0x56a0cc,null))[_0x34c4('0x26')](function(_0x59904c){if(_0x59904c){_0x2ccbb7['model']=_['keys'](db[_0x34c4('0x64')][_0x34c4('0x5b')]);_0x2ccbb7[_0x34c4('0x37')]=_[_0x34c4('0x38')](_0x5605ce[_0x34c4('0x37')]);_0x2ccbb7[_0x34c4('0x39')]=_[_0x34c4('0x3a')](_0x2ccbb7[_0x34c4('0x3b')],_0x2ccbb7[_0x34c4('0x37')]);_0x1a0983[_0x34c4('0x3c')]=_['intersection'](_0x2ccbb7[_0x34c4('0x3b')],qs[_0x34c4('0x3d')](_0x5605ce[_0x34c4('0x37')]['fields']));_0x1a0983[_0x34c4('0x3c')]=_0x1a0983[_0x34c4('0x3c')][_0x34c4('0x3e')]?_0x1a0983['attributes']:_0x2ccbb7[_0x34c4('0x3b')];if(!_0x5605ce['query'][_0x34c4('0x3f')](_0x34c4('0x40'))){_0x1a0983[_0x34c4('0x41')]=qs['limit'](_0x5605ce['query']['limit']);_0x1a0983[_0x34c4('0x22')]=qs[_0x34c4('0x22')](_0x5605ce[_0x34c4('0x37')]['offset']);}_0x1a0983['order']=qs[_0x34c4('0x43')](_0x5605ce['query']['sort']);_0x1a0983[_0x34c4('0x44')]=qs[_0x34c4('0x39')](_[_0x34c4('0x45')](_0x5605ce['query'],_0x2ccbb7[_0x34c4('0x39')]));_0x1a0983['where']['VoiceQueueId']=_0x59904c['id'];if(_0x5605ce[_0x34c4('0x37')][_0x34c4('0x49')]){_0x1a0983[_0x34c4('0x44')]=_[_0x34c4('0x46')](_0x1a0983[_0x34c4('0x44')],{'$or':_[_0x34c4('0x36')](_0x1a0983[_0x34c4('0x3c')],function(_0x563d1c){var _0x4faa89={};_0x4faa89[_0x563d1c]={'$like':'%'+_0x5605ce[_0x34c4('0x37')][_0x34c4('0x49')]+'%'};return _0x4faa89;})});}_0x1a0983=_[_0x34c4('0x46')]({},_0x1a0983,_0x5605ce[_0x34c4('0x4a')]);return db[_0x34c4('0x64')][_0x34c4('0x21')]({'where':_0x1a0983[_0x34c4('0x44')]})[_0x34c4('0x26')](function(_0x4a2071){_0x253696[_0x34c4('0x21')]=_0x4a2071;if(_0x5605ce[_0x34c4('0x37')][_0x34c4('0x4b')]){_0x1a0983[_0x34c4('0x4c')]=[{'all':!![]}];}return db[_0x34c4('0x64')]['findAll'](_0x1a0983);})[_0x34c4('0x26')](function(_0xc802aa){_0x253696[_0x34c4('0x4e')]=_0xc802aa;return _0x253696;});}})[_0x34c4('0x26')](respondWithFilteredResult(_0x56a0cc,_0x1a0983))[_0x34c4('0x4f')](handleError(_0x56a0cc,null));};exports[_0x34c4('0x65')]=function(_0x5c1ccd,_0x2faf9f,_0x5ab684){var _0x466ce4={'raw':!![],'where':{}};var _0x1c0745={};var _0x3c84fd={'count':0x0,'rows':[]};return db[_0x34c4('0x33')][_0x34c4('0x66')]({'where':{'id':_0x5c1ccd[_0x34c4('0x5a')]['id']}})[_0x34c4('0x26')](handleEntityNotFound(_0x2faf9f,null))['then'](function(_0x59dbb6){if(_0x59dbb6){_0x1c0745[_0x34c4('0x3b')]=_[_0x34c4('0x38')](db[_0x34c4('0x67')]['rawAttributes']);_0x1c0745[_0x34c4('0x37')]=_['keys'](_0x5c1ccd[_0x34c4('0x37')]);_0x1c0745[_0x34c4('0x39')]=_[_0x34c4('0x3a')](_0x1c0745[_0x34c4('0x3b')],_0x1c0745[_0x34c4('0x37')]);_0x466ce4[_0x34c4('0x3c')]=_['intersection'](_0x1c0745[_0x34c4('0x3b')],qs[_0x34c4('0x3d')](_0x5c1ccd[_0x34c4('0x37')][_0x34c4('0x3d')]));_0x466ce4[_0x34c4('0x3c')]=_0x466ce4[_0x34c4('0x3c')]['length']?_0x466ce4[_0x34c4('0x3c')]:_0x1c0745[_0x34c4('0x3b')];if(!_0x5c1ccd[_0x34c4('0x37')][_0x34c4('0x3f')](_0x34c4('0x40'))){_0x466ce4[_0x34c4('0x41')]=qs['limit'](_0x5c1ccd[_0x34c4('0x37')]['limit']);_0x466ce4['offset']=qs[_0x34c4('0x22')](_0x5c1ccd[_0x34c4('0x37')][_0x34c4('0x22')]);}_0x466ce4[_0x34c4('0x42')]=qs[_0x34c4('0x43')](_0x5c1ccd[_0x34c4('0x37')][_0x34c4('0x43')]);_0x466ce4[_0x34c4('0x44')]=qs['filters'](_[_0x34c4('0x45')](_0x5c1ccd[_0x34c4('0x37')],_0x1c0745[_0x34c4('0x39')]));_0x466ce4['where'][_0x34c4('0x68')]=_0x59dbb6['id'];if(_0x5c1ccd[_0x34c4('0x37')]['filter']){_0x466ce4[_0x34c4('0x44')]=_[_0x34c4('0x46')](_0x466ce4['where'],{'$or':_[_0x34c4('0x36')](_0x466ce4[_0x34c4('0x3c')],function(_0x57f7d3){var _0xe8b99a={};_0xe8b99a[_0x57f7d3]={'$like':'%'+_0x5c1ccd[_0x34c4('0x37')][_0x34c4('0x49')]+'%'};return _0xe8b99a;})});}_0x466ce4=_[_0x34c4('0x46')]({},_0x466ce4,_0x5c1ccd['options']);return db['CmHopperHistory'][_0x34c4('0x21')]({'where':_0x466ce4[_0x34c4('0x44')]})[_0x34c4('0x26')](function(_0x28fb58){_0x3c84fd[_0x34c4('0x21')]=_0x28fb58;if(_0x5c1ccd[_0x34c4('0x37')][_0x34c4('0x4b')]){_0x466ce4[_0x34c4('0x4c')]=[{'all':!![]}];}return db[_0x34c4('0x67')]['findAll'](_0x466ce4);})['then'](function(_0x3d2720){_0x3c84fd['rows']=_0x3d2720;return _0x3c84fd;});}})[_0x34c4('0x26')](respondWithFilteredResult(_0x2faf9f,_0x466ce4))[_0x34c4('0x4f')](handleError(_0x2faf9f,null));};exports[_0x34c4('0x69')]=function(_0x2ce0e5,_0x1e64ea,_0x178a30){var _0x5deb83={'raw':!![],'where':{}};var _0x1fefeb={};var _0x2f1097={'count':0x0,'rows':[]};return db[_0x34c4('0x33')][_0x34c4('0x66')]({'where':{'id':_0x2ce0e5[_0x34c4('0x5a')]['id']}})[_0x34c4('0x26')](handleEntityNotFound(_0x1e64ea,null))[_0x34c4('0x26')](function(_0x2eb6ae){if(_0x2eb6ae){_0x1fefeb[_0x34c4('0x3b')]=_[_0x34c4('0x38')](db[_0x34c4('0x6a')][_0x34c4('0x5b')]);_0x1fefeb[_0x34c4('0x37')]=_[_0x34c4('0x38')](_0x2ce0e5[_0x34c4('0x37')]);_0x1fefeb[_0x34c4('0x39')]=_[_0x34c4('0x3a')](_0x1fefeb['model'],_0x1fefeb[_0x34c4('0x37')]);_0x5deb83[_0x34c4('0x3c')]=_['intersection'](_0x1fefeb[_0x34c4('0x3b')],qs[_0x34c4('0x3d')](_0x2ce0e5[_0x34c4('0x37')]['fields']));_0x5deb83[_0x34c4('0x3c')]=_0x5deb83[_0x34c4('0x3c')]['length']?_0x5deb83[_0x34c4('0x3c')]:_0x1fefeb['model'];if(!_0x2ce0e5[_0x34c4('0x37')]['hasOwnProperty'](_0x34c4('0x40'))){_0x5deb83[_0x34c4('0x41')]=qs[_0x34c4('0x41')](_0x2ce0e5['query']['limit']);_0x5deb83['offset']=qs[_0x34c4('0x22')](_0x2ce0e5[_0x34c4('0x37')][_0x34c4('0x22')]);}_0x5deb83[_0x34c4('0x42')]=qs[_0x34c4('0x43')](_0x2ce0e5[_0x34c4('0x37')][_0x34c4('0x43')]);_0x5deb83[_0x34c4('0x44')]=qs[_0x34c4('0x39')](_[_0x34c4('0x45')](_0x2ce0e5[_0x34c4('0x37')],_0x1fefeb[_0x34c4('0x39')]));_0x5deb83[_0x34c4('0x44')]['VoiceQueueId']=_0x2eb6ae['id'];if(_0x2ce0e5[_0x34c4('0x37')][_0x34c4('0x49')]){_0x5deb83[_0x34c4('0x44')]=_['merge'](_0x5deb83['where'],{'$or':_[_0x34c4('0x36')](_0x5deb83[_0x34c4('0x3c')],function(_0x28eef1){var _0x4f7fd2={};_0x4f7fd2[_0x28eef1]={'$like':'%'+_0x2ce0e5[_0x34c4('0x37')][_0x34c4('0x49')]+'%'};return _0x4f7fd2;})});}_0x5deb83=_['merge']({},_0x5deb83,_0x2ce0e5[_0x34c4('0x4a')]);return db[_0x34c4('0x6a')][_0x34c4('0x21')]({'where':_0x5deb83[_0x34c4('0x44')]})[_0x34c4('0x26')](function(_0x34e226){_0x2f1097[_0x34c4('0x21')]=_0x34e226;if(_0x2ce0e5[_0x34c4('0x37')][_0x34c4('0x4b')]){_0x5deb83[_0x34c4('0x4c')]=[{'all':!![]}];}return db[_0x34c4('0x6a')][_0x34c4('0x4d')](_0x5deb83);})['then'](function(_0x24b26c){_0x2f1097[_0x34c4('0x4e')]=_0x24b26c;return _0x2f1097;});}})[_0x34c4('0x26')](respondWithFilteredResult(_0x1e64ea,_0x5deb83))[_0x34c4('0x4f')](handleError(_0x1e64ea,null));};exports[_0x34c4('0x6b')]=function(_0x2a35da,_0x404032,_0x7838c0){var _0xb9b4a2={'raw':!![],'where':{}};var _0x3e6fde={};var _0x5dc5f8={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x34c4('0x66')]({'where':{'id':_0x2a35da[_0x34c4('0x5a')]['id']}})[_0x34c4('0x26')](handleEntityNotFound(_0x404032,null))[_0x34c4('0x26')](function(_0x2fb1b){if(_0x2fb1b){_0x3e6fde[_0x34c4('0x3b')]=_[_0x34c4('0x38')](db[_0x34c4('0x6c')][_0x34c4('0x5b')]);_0x3e6fde['query']=_['keys'](_0x2a35da[_0x34c4('0x37')]);_0x3e6fde[_0x34c4('0x39')]=_[_0x34c4('0x3a')](_0x3e6fde['model'],_0x3e6fde[_0x34c4('0x37')]);_0xb9b4a2['attributes']=_[_0x34c4('0x3a')](_0x3e6fde[_0x34c4('0x3b')],qs['fields'](_0x2a35da[_0x34c4('0x37')]['fields']));_0xb9b4a2[_0x34c4('0x3c')]=_0xb9b4a2[_0x34c4('0x3c')][_0x34c4('0x3e')]?_0xb9b4a2[_0x34c4('0x3c')]:_0x3e6fde[_0x34c4('0x3b')];if(!_0x2a35da['query'][_0x34c4('0x3f')](_0x34c4('0x40'))){_0xb9b4a2[_0x34c4('0x41')]=qs[_0x34c4('0x41')](_0x2a35da[_0x34c4('0x37')]['limit']);_0xb9b4a2[_0x34c4('0x22')]=qs[_0x34c4('0x22')](_0x2a35da[_0x34c4('0x37')][_0x34c4('0x22')]);}_0xb9b4a2[_0x34c4('0x42')]=qs[_0x34c4('0x43')](_0x2a35da[_0x34c4('0x37')][_0x34c4('0x43')]);_0xb9b4a2[_0x34c4('0x44')]=qs['filters'](_[_0x34c4('0x45')](_0x2a35da[_0x34c4('0x37')],_0x3e6fde['filters']));_0xb9b4a2[_0x34c4('0x44')][_0x34c4('0x68')]=_0x2fb1b['id'];if(_0x2a35da[_0x34c4('0x37')]['filter']){_0xb9b4a2[_0x34c4('0x44')]=_[_0x34c4('0x46')](_0xb9b4a2[_0x34c4('0x44')],{'$or':_['map'](_0xb9b4a2[_0x34c4('0x3c')],function(_0x1d4c8a){var _0x431ac7={};_0x431ac7[_0x1d4c8a]={'$like':'%'+_0x2a35da['query'][_0x34c4('0x49')]+'%'};return _0x431ac7;})});}_0xb9b4a2=_[_0x34c4('0x46')]({},_0xb9b4a2,_0x2a35da[_0x34c4('0x4a')]);return db[_0x34c4('0x6c')][_0x34c4('0x21')]({'where':_0xb9b4a2[_0x34c4('0x44')]})['then'](function(_0x32c748){_0x5dc5f8[_0x34c4('0x21')]=_0x32c748;if(_0x2a35da[_0x34c4('0x37')][_0x34c4('0x4b')]){_0xb9b4a2['include']=[{'all':!![]}];}return db[_0x34c4('0x6c')][_0x34c4('0x4d')](_0xb9b4a2);})[_0x34c4('0x26')](function(_0x176256){_0x5dc5f8[_0x34c4('0x4e')]=_0x176256;return _0x5dc5f8;});}})[_0x34c4('0x26')](respondWithFilteredResult(_0x404032,_0xb9b4a2))[_0x34c4('0x4f')](handleError(_0x404032,null));};exports[_0x34c4('0x6d')]=function(_0xe32404,_0x341bcb,_0x3a880a){var _0x454916={};var _0xcf25a2={};var _0x241807;var _0x5f2838;return db['VoiceQueue'][_0x34c4('0x66')]({'where':{'id':_0xe32404['params']['id']}})['then'](handleEntityNotFound(_0x341bcb,null))[_0x34c4('0x26')](function(_0x1c7f58){if(_0x1c7f58){_0x241807=_0x1c7f58;_0xcf25a2['model']=_['keys'](db[_0x34c4('0x6e')][_0x34c4('0x5b')]);_0xcf25a2[_0x34c4('0x37')]=_[_0x34c4('0x38')](_0xe32404[_0x34c4('0x37')]);_0xcf25a2['filters']=_['intersection'](_0xcf25a2['model'],_0xcf25a2[_0x34c4('0x37')]);_0x454916['attributes']=_[_0x34c4('0x3a')](_0xcf25a2[_0x34c4('0x3b')],qs[_0x34c4('0x3d')](_0xe32404[_0x34c4('0x37')][_0x34c4('0x3d')]));_0x454916[_0x34c4('0x3c')]=_0x454916[_0x34c4('0x3c')][_0x34c4('0x3e')]?_0x454916[_0x34c4('0x3c')]:_0xcf25a2[_0x34c4('0x3b')];_0x454916[_0x34c4('0x42')]=qs['sort'](_0xe32404[_0x34c4('0x37')][_0x34c4('0x43')]);_0x454916[_0x34c4('0x44')]=qs[_0x34c4('0x39')](_['pick'](_0xe32404['query'],_0xcf25a2[_0x34c4('0x39')]));if(_0xe32404[_0x34c4('0x37')][_0x34c4('0x49')]){_0x454916['where']=_[_0x34c4('0x46')](_0x454916[_0x34c4('0x44')],{'$or':_[_0x34c4('0x36')](_0x454916[_0x34c4('0x3c')],function(_0x4caeb7){var _0x1e1326={};_0x1e1326[_0x4caeb7]={'$like':'%'+_0xe32404[_0x34c4('0x37')]['filter']+'%'};return _0x1e1326;})});}_0x454916=_[_0x34c4('0x46')]({},_0x454916,_0xe32404[_0x34c4('0x4a')]);return _0x241807['getTeams'](_0x454916);}})[_0x34c4('0x26')](function(_0xd0975b){if(_0xd0975b){_0x5f2838=_0xd0975b[_0x34c4('0x3e')];if(!_0xe32404[_0x34c4('0x37')][_0x34c4('0x3f')](_0x34c4('0x40'))){_0x454916['limit']=qs[_0x34c4('0x41')](_0xe32404['query'][_0x34c4('0x41')]);_0x454916[_0x34c4('0x22')]=qs[_0x34c4('0x22')](_0xe32404[_0x34c4('0x37')][_0x34c4('0x22')]);}return _0x241807[_0x34c4('0x6d')](_0x454916);}})[_0x34c4('0x26')](function(_0x406472){if(_0x406472){return _0x406472?{'count':_0x5f2838,'rows':_0x406472}:null;}})['then'](respondWithResult(_0x341bcb,null))['catch'](handleError(_0x341bcb,null));};exports[_0x34c4('0x6f')]=function(_0x41681d,_0x505935,_0x1276dc){var _0x3cbcaf=_0x41681d[_0x34c4('0x51')]['teams'];var _0x203652=_['map'](_0x3cbcaf,'id');return db['Team'][_0x34c4('0x4d')]({'where':{'id':_0x203652},'attributes':['id'],'include':[{'model':db[_0x34c4('0x70')],'as':_0x34c4('0x71'),'attributes':['id','name',_0x34c4('0x72'),_0x34c4('0x73'),_0x34c4('0x74')],'raw':!![]}]})['then'](function(_0x43182a){if(_0x43182a){var _0x2f5857=_[_0x34c4('0x75')](_0x43182a,function(_0x3775f0){var _0x57809d=_0x3775f0[_0x34c4('0x27')]({'plain':!![]});_0x57809d[_0x34c4('0x71')][_0x34c4('0x76')](function(_0x150784){_0x150784['penalty']=_['find'](_0x3cbcaf,{'id':_0x57809d['id']})['penalty'];});return _0x57809d[_0x34c4('0x71')];});return db[_0x34c4('0x33')][_0x34c4('0x2d')]({'where':{'id':_0x41681d['params']['id']}})['then'](function(_0x161f4){return db[_0x34c4('0x77')]['transaction'](function(_0x4d8643){return _0x161f4[_0x34c4('0x6f')](_0x203652,{'transaction':_0x4d8643})['then'](function(){return BPromise['each'](_0x3cbcaf,function(_0x31ce55){return db['TeamVoiceQueue'][_0x34c4('0x78')]({'TeamId':_0x31ce55['id'],'VoiceQueueId':_0x41681d[_0x34c4('0x5a')]['id'],'penalty':_0x31ce55[_0x34c4('0x79')]},{'transaction':_0x4d8643});});})[_0x34c4('0x26')](function(){return BPromise[_0x34c4('0x7a')](_0x2f5857,function(_0x52f0cd){return db['UserVoiceQueue']['findOrCreate']({'where':{'UserId':_0x52f0cd['id'],'VoiceQueueId':_0x41681d['params']['id']},'defaults':{'penalty':_0x52f0cd['penalty']},'transaction':_0x4d8643});});})[_0x34c4('0x26')](function(){return BPromise[_0x34c4('0x7a')](_[_0x34c4('0x49')](_0x2f5857,{'online':!![]}),function(_0x3bdf32){return db[_0x34c4('0x7b')]['upsert']({'membername':_0x3bdf32[_0x34c4('0x2e')],'UserId':_0x3bdf32['id'],'queue_name':_0x161f4['name'],'VoiceQueueId':_0x161f4['id'],'interface':_[_0x34c4('0x7c')](_0x3bdf32[_0x34c4('0x74')])?util[_0x34c4('0x7d')]('SIP/%s',_0x3bdf32['name']):_0x3bdf32[_0x34c4('0x74')],'paused':_0x3bdf32['voicePause']||![],'penalty':_0x3bdf32[_0x34c4('0x79')]},{'transaction':_0x4d8643});});})[_0x34c4('0x26')](function(){_0x2f5857['forEach'](function(_0x5ed5bc){socket[_0x34c4('0x7e')](_0x34c4('0x7f'),{'UserId':_0x5ed5bc['id'],'VoiceQueueId':_0x161f4['id']});});});});});}})[_0x34c4('0x26')](respondWithStatusCode(_0x505935,null))[_0x34c4('0x4f')](handleError(_0x505935,null));};exports['removeTeams']=function(_0x4c3328,_0x2ed508,_0xb6ad8d){return db[_0x34c4('0x6e')][_0x34c4('0x4d')]({'where':{'id':_0x4c3328[_0x34c4('0x37')]['ids']},'attributes':['id'],'include':[{'model':db[_0x34c4('0x70')],'as':_0x34c4('0x71'),'attributes':['id'],'raw':!![]}]})[_0x34c4('0x26')](handleEntityNotFound(_0x2ed508,null))[_0x34c4('0x26')](function(_0x952e87){var _0x46b320=_['map'](_0x952e87,'id');var _0x390b30=[];var _0x41b21f=[];var _0x919d66=squel[_0x34c4('0x80')]();_0x919d66[_0x34c4('0x81')](_0x34c4('0x82'))[_0x34c4('0x83')](_0x34c4('0x84'),'tq')['join'](_0x34c4('0x85'),'ut',_0x34c4('0x86'))[_0x34c4('0x44')](_0x34c4('0x87'),_0x4c3328[_0x34c4('0x5a')]['id']);for(var _0x2c98fc=0x0;_0x2c98fc<_0x952e87['length'];_0x2c98fc+=0x1){let _0x4aa7e3=_0x952e87[_0x2c98fc];for(var _0x5e886b=0x0;_0x5e886b<_0x4aa7e3['Agents'][_0x34c4('0x3e')];_0x5e886b+=0x1){let _0xa3a2b2=_0x4aa7e3[_0x34c4('0x71')][_0x5e886b];var _0x163211=_0x919d66[_0x34c4('0x59')]();_0x163211['where'](_0x34c4('0x88'),_0xa3a2b2['id']);_0x41b21f[_0x34c4('0x89')](db[_0x34c4('0x77')][_0x34c4('0x37')](_0x163211['toString'](),{'type':db[_0x34c4('0x77')][_0x34c4('0x8a')][_0x34c4('0x8b')]})[_0x34c4('0x26')](function(_0x200000){if(_0x200000[_0x34c4('0x3e')]===0x1){return _0xa3a2b2['id'];}else{var _0x3c2e80=_[_0x34c4('0x8c')](_[_0x34c4('0x36')](_0x200000,_0x34c4('0x8d')),function(_0x362ea8){return _['includes'](_0x46b320,_0x362ea8);});if(_0x3c2e80){return _0xa3a2b2['id'];}}}));}}return BPromise['all'](_0x41b21f)[_0x34c4('0x26')](function(_0x4517a7){_0x390b30=_(_0x390b30)['union'](_0x4517a7)[_0x34c4('0x8e')]()[_0x34c4('0x2c')]();return db[_0x34c4('0x33')]['find']({'where':{'id':_0x4c3328[_0x34c4('0x5a')]['id']}})['then'](function(_0x560b0f){return db[_0x34c4('0x77')][_0x34c4('0x8f')](function(_0x33ddef){return _0x560b0f[_0x34c4('0x90')](_0x4c3328[_0x34c4('0x37')][_0x34c4('0x91')],{'transaction':_0x33ddef})[_0x34c4('0x26')](function(){if(!_[_0x34c4('0x92')](_0x390b30)){return _0x560b0f['removeAgents'](_0x390b30,{'transaction':_0x33ddef})[_0x34c4('0x26')](function(){return db[_0x34c4('0x7b')]['destroy']({'where':{'VoiceQueueId':_0x4c3328[_0x34c4('0x5a')]['id'],'UserId':_0x390b30},'transaction':_0x33ddef});});}})['then'](function(){_0x390b30[_0x34c4('0x76')](function(_0x4f9fb5){socket[_0x34c4('0x7e')](_0x34c4('0x93'),{'UserId':_0x4f9fb5,'VoiceQueueId':_0x560b0f['id']});});});});});});})[_0x34c4('0x26')](respondWithStatusCode(_0x2ed508,null))[_0x34c4('0x4f')](handleError(_0x2ed508,null));};exports[_0x34c4('0x94')]=function(_0x57c48f,_0x282f0e,_0x3bdc4b){var _0x3f37b2,_0x5963a7;return db[_0x34c4('0x33')][_0x34c4('0x2d')]({'where':{'id':_0x57c48f[_0x34c4('0x5a')]['id']}})[_0x34c4('0x26')](handleEntityNotFound(_0x282f0e,null))[_0x34c4('0x26')](function(_0x17734d){if(_0x17734d){_0x5963a7=_0x17734d;return _0x17734d[_0x34c4('0x94')](_0x57c48f[_0x34c4('0x51')][_0x34c4('0x91')],_[_0x34c4('0x5c')](_0x57c48f[_0x34c4('0x51')],['ids','id'])||{})[_0x34c4('0x95')](function(_0x134a8b){for(var _0x9d781=0x0;_0x9d781<_0x57c48f[_0x34c4('0x51')][_0x34c4('0x91')][_0x34c4('0x3e')];_0x9d781+=0x1){socket[_0x34c4('0x7e')](_0x34c4('0x7f'),{'UserId':Number(_0x57c48f[_0x34c4('0x51')][_0x34c4('0x91')][_0x9d781]),'VoiceQueueId':Number(_0x57c48f[_0x34c4('0x5a')]['id'])});}return _0x134a8b;});}})['then'](function(_0xd2a37e){_0x3f37b2=_0xd2a37e||[];if(_0x5963a7){return db[_0x34c4('0x70')][_0x34c4('0x4d')]({'where':{'id':_0x57c48f['body']['ids']},'attributes':['id','name','online',_0x34c4('0x73'),_0x34c4('0x74')],'raw':!![]});}})[_0x34c4('0x26')](function(_0x54c35d){if(!_[_0x34c4('0x92')](_0x54c35d)){var _0x1fea58=[];for(var _0x438bbd=0x0;_0x438bbd<_0x54c35d[_0x34c4('0x3e')];_0x438bbd++){if(_0x54c35d[_0x438bbd][_0x34c4('0x72')]){_0x1fea58[_0x34c4('0x89')](db[_0x34c4('0x7b')][_0x34c4('0x78')]({'membername':_0x54c35d[_0x438bbd][_0x34c4('0x2e')],'UserId':_0x54c35d[_0x438bbd]['id'],'queue_name':_0x5963a7[_0x34c4('0x2e')],'VoiceQueueId':_0x5963a7['id'],'interface':_['isNil'](_0x54c35d[_0x438bbd][_0x34c4('0x74')])?util[_0x34c4('0x7d')](_0x34c4('0x96'),_0x54c35d[_0x438bbd][_0x34c4('0x2e')]):_0x54c35d[_0x438bbd][_0x34c4('0x74')],'paused':_0x54c35d[_0x438bbd][_0x34c4('0x73')]||![],'penalty':_0x57c48f[_0x34c4('0x51')]['penalty']||0x0}));}}return BPromise['all'](_0x1fea58);}})[_0x34c4('0x26')](function(){return _0x3f37b2;})['then'](respondWithResult(_0x282f0e,null))[_0x34c4('0x4f')](handleError(_0x282f0e,null));};exports[_0x34c4('0x97')]=function(_0x5b47b7,_0x4b0eef,_0x4cd8ad){return db[_0x34c4('0x33')][_0x34c4('0x2d')]({'where':{'id':_0x5b47b7[_0x34c4('0x5a')]['id']}})[_0x34c4('0x26')](handleEntityNotFound(_0x4b0eef,null))[_0x34c4('0x26')](function(_0xfa1583){if(_0xfa1583){return _0xfa1583['removeAgents'](_0x5b47b7['query'][_0x34c4('0x91')])[_0x34c4('0x26')](function(){if(_[_0x34c4('0x98')](_0x5b47b7[_0x34c4('0x37')][_0x34c4('0x91')])){for(var _0x394051=0x0;_0x394051<_0x5b47b7[_0x34c4('0x37')][_0x34c4('0x91')][_0x34c4('0x3e')];_0x394051+=0x1){socket[_0x34c4('0x7e')]('userVoiceQueue:remove',{'UserId':Number(_0x5b47b7[_0x34c4('0x37')][_0x34c4('0x91')][_0x394051]),'VoiceQueueId':Number(_0x5b47b7['params']['id'])});}}else{socket[_0x34c4('0x7e')]('userVoiceQueue:remove',{'UserId':Number(_0x5b47b7[_0x34c4('0x37')][_0x34c4('0x91')]),'VoiceQueueId':Number(_0x5b47b7[_0x34c4('0x5a')]['id'])});}});}})[_0x34c4('0x26')](function(_0x127cd0){return db[_0x34c4('0x7b')]['destroy']({'where':{'VoiceQueueId':_0x5b47b7[_0x34c4('0x5a')]['id'],'UserId':_0x5b47b7[_0x34c4('0x37')][_0x34c4('0x91')]}})[_0x34c4('0x26')](function(){return _0x127cd0;});})[_0x34c4('0x26')](respondWithStatusCode(_0x4b0eef,null))['catch'](handleError(_0x4b0eef,null));};exports['getAgents']=function(_0x24d73a,_0x2e3422,_0x54ed6b){var _0x226bab={};var _0xe31a52={};var _0x139e49;var _0x3a340c;return db[_0x34c4('0x33')][_0x34c4('0x66')]({'where':{'id':_0x24d73a[_0x34c4('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2e3422,null))[_0x34c4('0x26')](function(_0x4bcf54){if(_0x4bcf54){_0x139e49=_0x4bcf54;_0xe31a52[_0x34c4('0x3b')]=_[_0x34c4('0x38')](db[_0x34c4('0x70')][_0x34c4('0x5b')]);_0xe31a52['query']=_['keys'](_0x24d73a['query']);_0xe31a52[_0x34c4('0x39')]=_['intersection'](_0xe31a52[_0x34c4('0x3b')],_0xe31a52[_0x34c4('0x37')]);_0x226bab['attributes']=_[_0x34c4('0x3a')](_0xe31a52['model'],qs['fields'](_0x24d73a[_0x34c4('0x37')][_0x34c4('0x3d')]));_0x226bab[_0x34c4('0x3c')]=_0x226bab[_0x34c4('0x3c')][_0x34c4('0x3e')]?_0x226bab[_0x34c4('0x3c')]:_0xe31a52['model'];_0x226bab[_0x34c4('0x42')]=qs['sort'](_0x24d73a[_0x34c4('0x37')][_0x34c4('0x43')]);_0x226bab['where']=qs[_0x34c4('0x39')](_[_0x34c4('0x45')](_0x24d73a[_0x34c4('0x37')],_0xe31a52[_0x34c4('0x39')]));if(_0x24d73a['query']['filter']){_0x226bab[_0x34c4('0x44')]=_[_0x34c4('0x46')](_0x226bab['where'],{'$or':_[_0x34c4('0x36')](_0x226bab[_0x34c4('0x3c')],function(_0x555d27){var _0x358475={};_0x358475[_0x555d27]={'$like':'%'+_0x24d73a[_0x34c4('0x37')][_0x34c4('0x49')]+'%'};return _0x358475;})});}_0x226bab=_[_0x34c4('0x46')]({},_0x226bab,_0x24d73a[_0x34c4('0x4a')]);return _0x139e49[_0x34c4('0x99')](_0x226bab);}})[_0x34c4('0x26')](function(_0x176b4d){if(_0x176b4d){_0x3a340c=_0x176b4d['length'];if(!_0x24d73a[_0x34c4('0x37')]['hasOwnProperty'](_0x34c4('0x40'))){_0x226bab[_0x34c4('0x41')]=qs[_0x34c4('0x41')](_0x24d73a['query'][_0x34c4('0x41')]);_0x226bab[_0x34c4('0x22')]=qs[_0x34c4('0x22')](_0x24d73a[_0x34c4('0x37')]['offset']);}return _0x139e49[_0x34c4('0x99')](_0x226bab);}})[_0x34c4('0x26')](function(_0x5be993){if(_0x5be993){return _0x5be993?{'count':_0x3a340c,'rows':_0x5be993}:null;}})['then'](respondWithResult(_0x2e3422,null))[_0x34c4('0x4f')](handleError(_0x2e3422,null));};exports['getMembers']=function(_0xb583ca,_0x590bf3,_0x2d2a9b){var _0x57cd4d={};var _0x43b04b={};var _0x2f3a32;var _0x45da2f;return db[_0x34c4('0x33')][_0x34c4('0x66')]({'where':{'id':_0xb583ca['params']['id']}})[_0x34c4('0x26')](handleEntityNotFound(_0x590bf3,null))[_0x34c4('0x26')](function(_0x2cec94){if(_0x2cec94){_0x2f3a32=_0x2cec94;_0x43b04b[_0x34c4('0x3b')]=_[_0x34c4('0x38')](db[_0x34c4('0x7b')]['rawAttributes']);_0x43b04b[_0x34c4('0x37')]=_[_0x34c4('0x38')](_0xb583ca[_0x34c4('0x37')]);_0x43b04b['filters']=_[_0x34c4('0x3a')](_0x43b04b['model'],_0x43b04b['query']);_0x57cd4d[_0x34c4('0x3c')]=_[_0x34c4('0x3a')](_0x43b04b['model'],qs[_0x34c4('0x3d')](_0xb583ca[_0x34c4('0x37')][_0x34c4('0x3d')]));_0x57cd4d[_0x34c4('0x3c')]=_0x57cd4d['attributes']['length']?_0x57cd4d[_0x34c4('0x3c')]:_0x43b04b[_0x34c4('0x3b')];_0x57cd4d['order']=qs[_0x34c4('0x43')](_0xb583ca[_0x34c4('0x37')][_0x34c4('0x43')]);_0x57cd4d[_0x34c4('0x44')]=qs[_0x34c4('0x39')](_[_0x34c4('0x45')](_0xb583ca[_0x34c4('0x37')],_0x43b04b[_0x34c4('0x39')]));if(_0xb583ca[_0x34c4('0x37')][_0x34c4('0x49')]){_0x57cd4d[_0x34c4('0x44')]=_['merge'](_0x57cd4d[_0x34c4('0x44')],{'$or':_[_0x34c4('0x36')](_0x57cd4d[_0x34c4('0x3c')],function(_0x3fe291){var _0x544807={};_0x544807[_0x3fe291]={'$like':'%'+_0xb583ca['query'][_0x34c4('0x49')]+'%'};return _0x544807;})});}_0x57cd4d=_['merge']({},_0x57cd4d,_0xb583ca['options']);return _0x2f3a32[_0x34c4('0x9a')](_0x57cd4d);}})[_0x34c4('0x26')](function(_0x45bca9){if(_0x45bca9){_0x45da2f=_0x45bca9[_0x34c4('0x3e')];if(!_0xb583ca[_0x34c4('0x37')]['hasOwnProperty'](_0x34c4('0x40'))){_0x57cd4d['limit']=qs[_0x34c4('0x41')](_0xb583ca['query'][_0x34c4('0x41')]);_0x57cd4d['offset']=qs['offset'](_0xb583ca['query'][_0x34c4('0x22')]);}return _0x2f3a32[_0x34c4('0x9a')](_0x57cd4d);}})[_0x34c4('0x26')](function(_0xcf5a22){return _0xcf5a22?{'count':_0x45da2f,'rows':_0xcf5a22}:null;})['then'](respondWithResult(_0x590bf3,null))[_0x34c4('0x4f')](handleError(_0x590bf3,null));};exports['getLists']=function(_0x2c2aea,_0x55abc9,_0x461dc1){var _0x497373={};var _0x4b553={};var _0x1d36b2;var _0x105027;return db[_0x34c4('0x33')][_0x34c4('0x66')]({'where':{'id':_0x2c2aea['params']['id']}})[_0x34c4('0x26')](handleEntityNotFound(_0x55abc9,null))[_0x34c4('0x26')](function(_0x3cdbc1){if(_0x3cdbc1){_0x1d36b2=_0x3cdbc1;_0x4b553['model']=_['keys'](db[_0x34c4('0x9b')][_0x34c4('0x5b')]);_0x4b553['query']=_['keys'](_0x2c2aea['query']);_0x4b553['filters']=_[_0x34c4('0x3a')](_0x4b553[_0x34c4('0x3b')],_0x4b553['query']);_0x497373[_0x34c4('0x3c')]=_['intersection'](_0x4b553[_0x34c4('0x3b')],qs[_0x34c4('0x3d')](_0x2c2aea[_0x34c4('0x37')][_0x34c4('0x3d')]));_0x497373[_0x34c4('0x3c')]=_0x497373[_0x34c4('0x3c')][_0x34c4('0x3e')]?_0x497373['attributes']:_0x4b553[_0x34c4('0x3b')];_0x497373['order']=qs[_0x34c4('0x43')](_0x2c2aea[_0x34c4('0x37')]['sort']);_0x497373[_0x34c4('0x44')]=qs[_0x34c4('0x39')](_[_0x34c4('0x45')](_0x2c2aea['query'],_0x4b553[_0x34c4('0x39')]));if(_0x2c2aea[_0x34c4('0x37')]['filter']){_0x497373[_0x34c4('0x44')]=_['merge'](_0x497373[_0x34c4('0x44')],{'$or':_[_0x34c4('0x36')](_0x497373[_0x34c4('0x3c')],function(_0x132683){var _0x544d8c={};_0x544d8c[_0x132683]={'$like':'%'+_0x2c2aea[_0x34c4('0x37')][_0x34c4('0x49')]+'%'};return _0x544d8c;})});}_0x497373=_[_0x34c4('0x46')]({},_0x497373,_0x2c2aea['options']);return _0x1d36b2[_0x34c4('0x9c')](_0x497373);}})['then'](function(_0x9c9844){if(_0x9c9844){_0x105027=_0x9c9844[_0x34c4('0x3e')];if(!_0x2c2aea[_0x34c4('0x37')][_0x34c4('0x3f')]('nolimit')){_0x497373[_0x34c4('0x41')]=qs['limit'](_0x2c2aea[_0x34c4('0x37')]['limit']);_0x497373[_0x34c4('0x22')]=qs[_0x34c4('0x22')](_0x2c2aea[_0x34c4('0x37')][_0x34c4('0x22')]);}return _0x1d36b2[_0x34c4('0x9c')](_0x497373);}})[_0x34c4('0x26')](function(_0x3e3ef3){if(_0x3e3ef3){return _0x3e3ef3?{'count':_0x105027,'rows':_0x3e3ef3}:null;}})['then'](respondWithResult(_0x55abc9,null))[_0x34c4('0x4f')](handleError(_0x55abc9,null));};exports['addLists']=function(_0x13bba4,_0x2707db,_0x170434){var _0xdb3a4e,_0x58c0a3;return db[_0x34c4('0x33')][_0x34c4('0x2d')]({'where':{'id':_0x13bba4['params']['id']}})[_0x34c4('0x26')](handleEntityNotFound(_0x2707db,null))[_0x34c4('0x26')](function(_0x237e25){if(_0x237e25){_0x58c0a3=_0x237e25;return _0x237e25['addLists'](_0x13bba4[_0x34c4('0x51')]['ids'],_[_0x34c4('0x5c')](_0x13bba4[_0x34c4('0x51')],[_0x34c4('0x91'),'id'])||{});}return null;})[_0x34c4('0x95')](function(_0x202b1f){var _0x21c422;_0xdb3a4e=_0x202b1f||[];var _0x523339=[];if(_0x202b1f){for(var _0x32c0e8=0x0;_0x32c0e8<_0x202b1f[_0x34c4('0x3e')];_0x32c0e8+=0x1){var _0xf4a384=_0x202b1f[_0x32c0e8][_0x34c4('0x27')]({'plain':!![]});_0x58c0a3['dialCheckDuplicateType']=_0x13bba4[_0x34c4('0x51')][_0x34c4('0x9d')]?_0x13bba4[_0x34c4('0x51')]['dialCheckDuplicateType']:_0x58c0a3[_0x34c4('0x9d')];switch(_0x58c0a3[_0x34c4('0x9d')]){case _0x34c4('0x9e'):_0x21c422=squel['insert']()[_0x34c4('0x9f')](_0x34c4('0xa0'))['fromQuery'](['phone',_0x34c4('0xa1'),'ContactId','ListId',_0x34c4('0x68'),_0x34c4('0x5d'),'updatedAt'],squel[_0x34c4('0x80')]()[_0x34c4('0x81')](_0x34c4('0xa2'),_0x34c4('0xa2'))[_0x34c4('0x81')]('NOW()',_0x34c4('0xa1'))[_0x34c4('0x81')]('id',_0x34c4('0xa3'))[_0x34c4('0x81')](_0xf4a384[_0x34c4('0xa4')][_0x34c4('0xa5')](),_0x34c4('0xa6'))[_0x34c4('0x81')](_0x13bba4[_0x34c4('0x5a')]['id'][_0x34c4('0xa5')](),'VoiceQueueId')[_0x34c4('0x81')](_0x34c4('0xa7'),_0x34c4('0x5d'))[_0x34c4('0x81')](_0x34c4('0xa7'),_0x34c4('0x5e'))[_0x34c4('0x83')](_0x34c4('0xa8'))[_0x34c4('0x44')](_0x34c4('0xa9'))[_0x34c4('0x44')](_0x34c4('0xaa'),_0xf4a384[_0x34c4('0xa4')]['toString']())[_0x34c4('0x44')](_0x34c4('0xab'))[_0x34c4('0x44')]('phone\x20NOT\x20IN\x20(?)',squel[_0x34c4('0x80')]()[_0x34c4('0x81')](_0x34c4('0xac'))[_0x34c4('0x83')](_0x34c4('0xad'))[_0x34c4('0x44')](_0x34c4('0x87'),_0x13bba4[_0x34c4('0x5a')]['id'][_0x34c4('0xa5')]()))[_0x34c4('0x44')](_0x34c4('0xae'),squel[_0x34c4('0x80')]()['field'](_0x34c4('0xaf'))[_0x34c4('0x83')](_0x34c4('0xa0'))[_0x34c4('0x44')](_0x34c4('0x87'),_0x13bba4['params']['id'][_0x34c4('0xa5')]())))['toString']();break;case _0x34c4('0xb0'):_0x21c422=squel[_0x34c4('0xb1')]()['into'](_0x34c4('0xa0'))[_0x34c4('0xb2')](['phone','scheduledAt','ContactId',_0x34c4('0xa6'),_0x34c4('0x68'),_0x34c4('0x5d'),'updatedAt'],squel[_0x34c4('0x80')]()['field'](_0x34c4('0xa2'),_0x34c4('0xa2'))[_0x34c4('0x81')](_0x34c4('0xa7'),_0x34c4('0xa1'))[_0x34c4('0x81')]('id',_0x34c4('0xa3'))['field'](_0xf4a384[_0x34c4('0xa4')]['toString'](),'ListId')[_0x34c4('0x81')](_0x13bba4[_0x34c4('0x5a')]['id'][_0x34c4('0xa5')](),'VoiceQueueId')[_0x34c4('0x81')](_0x34c4('0xa7'),_0x34c4('0x5d'))[_0x34c4('0x81')](_0x34c4('0xa7'),'updatedAt')['from'](_0x34c4('0xa8'))[_0x34c4('0x44')]('deletedAt\x20IS\x20NULL')[_0x34c4('0x44')](_0x34c4('0xaa'),_0xf4a384[_0x34c4('0xa4')][_0x34c4('0xa5')]())[_0x34c4('0x44')](_0x34c4('0xab'))[_0x34c4('0x44')](_0x34c4('0xae'),squel[_0x34c4('0x80')]()[_0x34c4('0x81')](_0x34c4('0xaf'))[_0x34c4('0x83')]('cm_hopper')[_0x34c4('0x44')](_0x34c4('0x87'),_0x13bba4[_0x34c4('0x5a')]['id'][_0x34c4('0xa5')]())))[_0x34c4('0xa5')]();break;default:_0x21c422=squel['insert']()['into'](_0x34c4('0xa0'))[_0x34c4('0xb2')]([_0x34c4('0xa2'),_0x34c4('0xa1'),_0x34c4('0xa3'),'ListId',_0x34c4('0x68'),_0x34c4('0x5d'),_0x34c4('0x5e')],squel[_0x34c4('0x80')]()[_0x34c4('0x81')](_0x34c4('0xa2'),_0x34c4('0xa2'))[_0x34c4('0x81')](_0x34c4('0xa7'),_0x34c4('0xa1'))[_0x34c4('0x81')]('id','ContactId')['field'](_0xf4a384['CmListId'][_0x34c4('0xa5')](),_0x34c4('0xa6'))[_0x34c4('0x81')](_0x13bba4[_0x34c4('0x5a')]['id'][_0x34c4('0xa5')](),'VoiceQueueId')[_0x34c4('0x81')](_0x34c4('0xa7'),_0x34c4('0x5d'))[_0x34c4('0x81')]('NOW()',_0x34c4('0x5e'))[_0x34c4('0x83')]('cm_contacts')['where']('deletedAt\x20IS\x20NULL')[_0x34c4('0x44')]('ListId\x20=\x20?',_0xf4a384[_0x34c4('0xa4')][_0x34c4('0xa5')]())[_0x34c4('0x44')]('phone\x20IS\x20NOT\x20NULL'))[_0x34c4('0xa5')]();}_0x523339[_0x34c4('0x89')](db[_0x34c4('0x77')][_0x34c4('0x37')](_0x21c422));}return BPromise[_0x34c4('0xb3')](_0x523339);}})[_0x34c4('0x26')](function(){return _0xdb3a4e;})[_0x34c4('0x26')](respondWithResult(_0x2707db,null))[_0x34c4('0x4f')](handleError(_0x2707db,null));};exports[_0x34c4('0xb4')]=function(_0x4b8f44,_0x2b9ba5,_0x4d052f){return db[_0x34c4('0x33')][_0x34c4('0x2d')]({'where':{'id':_0x4b8f44[_0x34c4('0x5a')]['id']}})['then'](handleEntityNotFound(_0x2b9ba5,null))[_0x34c4('0x26')](function(_0x33c673){if(_0x33c673){return _0x33c673['removeLists'](_0x4b8f44['query']['ids']);}})[_0x34c4('0x26')](function(_0x51b08a){if(_0x51b08a){return db[_0x34c4('0x64')]['destroy']({'where':{'ListId':_0x4b8f44[_0x34c4('0x37')]['ids'],'VoiceQueueId':_0x4b8f44['params']['id']}})[_0x34c4('0x26')](function(){return _0x51b08a;});}})[_0x34c4('0x26')](respondWithStatusCode(_0x2b9ba5,null))[_0x34c4('0x4f')](handleError(_0x2b9ba5,null));};exports[_0x34c4('0xb5')]=function(_0x5a7b3e,_0x34820a,_0x429fc9){var _0x488fb6={};var _0xf57ec3={};var _0x25b40a;var _0x5e3f1e;return db['VoiceQueue'][_0x34c4('0x66')]({'where':{'id':_0x5a7b3e[_0x34c4('0x5a')]['id']}})[_0x34c4('0x26')](handleEntityNotFound(_0x34820a,null))[_0x34c4('0x26')](function(_0x1408a8){if(_0x1408a8){_0x25b40a=_0x1408a8;_0xf57ec3[_0x34c4('0x3b')]=_['keys'](db[_0x34c4('0x9b')][_0x34c4('0x5b')]);_0xf57ec3[_0x34c4('0x37')]=_['keys'](_0x5a7b3e[_0x34c4('0x37')]);_0xf57ec3[_0x34c4('0x39')]=_[_0x34c4('0x3a')](_0xf57ec3[_0x34c4('0x3b')],_0xf57ec3[_0x34c4('0x37')]);_0x488fb6[_0x34c4('0x3c')]=_[_0x34c4('0x3a')](_0xf57ec3[_0x34c4('0x3b')],qs[_0x34c4('0x3d')](_0x5a7b3e[_0x34c4('0x37')][_0x34c4('0x3d')]));_0x488fb6[_0x34c4('0x3c')]=_0x488fb6[_0x34c4('0x3c')]['length']?_0x488fb6['attributes']:_0xf57ec3[_0x34c4('0x3b')];_0x488fb6[_0x34c4('0x42')]=qs[_0x34c4('0x43')](_0x5a7b3e['query'][_0x34c4('0x43')]);_0x488fb6[_0x34c4('0x44')]=qs[_0x34c4('0x39')](_[_0x34c4('0x45')](_0x5a7b3e[_0x34c4('0x37')],_0xf57ec3[_0x34c4('0x39')]));if(_0x5a7b3e[_0x34c4('0x37')][_0x34c4('0x49')]){_0x488fb6[_0x34c4('0x44')]=_['merge'](_0x488fb6[_0x34c4('0x44')],{'$or':_[_0x34c4('0x36')](_0x488fb6[_0x34c4('0x3c')],function(_0x1d3b9a){var _0x210a71={};_0x210a71[_0x1d3b9a]={'$like':'%'+_0x5a7b3e[_0x34c4('0x37')]['filter']+'%'};return _0x210a71;})});}_0x488fb6=_[_0x34c4('0x46')]({},_0x488fb6,_0x5a7b3e[_0x34c4('0x4a')]);return _0x25b40a[_0x34c4('0xb5')](_0x488fb6);}})[_0x34c4('0x26')](function(_0x9c0b7c){if(_0x9c0b7c){_0x5e3f1e=_0x9c0b7c[_0x34c4('0x3e')];if(!_0x5a7b3e['query']['hasOwnProperty'](_0x34c4('0x40'))){_0x488fb6[_0x34c4('0x41')]=qs[_0x34c4('0x41')](_0x5a7b3e['query']['limit']);_0x488fb6[_0x34c4('0x22')]=qs[_0x34c4('0x22')](_0x5a7b3e[_0x34c4('0x37')][_0x34c4('0x22')]);}return _0x25b40a[_0x34c4('0xb5')](_0x488fb6);}})[_0x34c4('0x26')](function(_0x196947){if(_0x196947){return _0x196947?{'count':_0x5e3f1e,'rows':_0x196947}:null;}})[_0x34c4('0x26')](respondWithResult(_0x34820a,null))[_0x34c4('0x4f')](handleError(_0x34820a,null));};exports[_0x34c4('0xb6')]=function(_0x4c185a,_0x1d9251,_0x35deb9){var _0x77c09c,_0x19786f;return db[_0x34c4('0x33')][_0x34c4('0x2d')]({'where':{'id':_0x4c185a[_0x34c4('0x5a')]['id']}})[_0x34c4('0x26')](handleEntityNotFound(_0x1d9251,null))[_0x34c4('0x26')](function(_0x301de7){if(_0x301de7){_0x19786f=_0x301de7;return _0x301de7[_0x34c4('0xb6')](_0x4c185a[_0x34c4('0x51')]['ids'],_[_0x34c4('0x5c')](_0x4c185a[_0x34c4('0x51')],[_0x34c4('0x91'),'id'])||{});}return null;})[_0x34c4('0x95')](function(_0x3fe83b){var _0x414e23;_0x77c09c=_0x3fe83b||[];var _0x47b459=[];if(_0x3fe83b){for(var _0x56864a=0x0;_0x56864a<_0x3fe83b[_0x34c4('0x3e')];_0x56864a+=0x1){var _0x1edd4b=_0x3fe83b[_0x56864a][_0x34c4('0x27')]({'plain':!![]});_0x414e23=squel['insert']()[_0x34c4('0x9f')]('cm_hopper_black')[_0x34c4('0xb2')](['phone','ContactId',_0x34c4('0xa6'),'VoiceQueueId',_0x34c4('0x5d'),_0x34c4('0x5e')],squel[_0x34c4('0x80')]()['field']('phone',_0x34c4('0xa2'))['field']('id',_0x34c4('0xa3'))[_0x34c4('0x81')](_0x1edd4b['CmListId'][_0x34c4('0xa5')](),_0x34c4('0xa6'))['field'](_0x4c185a[_0x34c4('0x5a')]['id']['toString'](),_0x34c4('0x68'))[_0x34c4('0x81')](_0x34c4('0xa7'),_0x34c4('0x5d'))[_0x34c4('0x81')](_0x34c4('0xa7'),_0x34c4('0x5e'))[_0x34c4('0x83')](_0x34c4('0xa8'))[_0x34c4('0x44')]('deletedAt\x20IS\x20NULL')['where']('ListId\x20=\x20?',_0x1edd4b[_0x34c4('0xa4')][_0x34c4('0xa5')]())[_0x34c4('0x44')]('phone\x20IS\x20NOT\x20NULL'))[_0x34c4('0xa5')]();_0x47b459[_0x34c4('0x89')](db['sequelize'][_0x34c4('0x37')](_0x414e23));}return BPromise[_0x34c4('0xb3')](_0x47b459);}})[_0x34c4('0x26')](function(){return _0x77c09c;})[_0x34c4('0x26')](respondWithResult(_0x1d9251,null))[_0x34c4('0x4f')](handleError(_0x1d9251,null));};exports['removeBlackLists']=function(_0x5f0622,_0x5be4f1,_0x3dcbd3){return db[_0x34c4('0x33')][_0x34c4('0x2d')]({'where':{'id':_0x5f0622[_0x34c4('0x5a')]['id']}})[_0x34c4('0x26')](handleEntityNotFound(_0x5be4f1,null))[_0x34c4('0x26')](function(_0x446f8b){if(_0x446f8b){return _0x446f8b[_0x34c4('0xb7')](_0x5f0622[_0x34c4('0x37')][_0x34c4('0x91')]);}})[_0x34c4('0x26')](function(_0x3c8e9a){if(_0x3c8e9a){return db['CmHopperBlack'][_0x34c4('0x2f')]({'where':{'ListId':_0x5f0622['query'][_0x34c4('0x91')],'VoiceQueueId':_0x5f0622[_0x34c4('0x5a')]['id']}})[_0x34c4('0x26')](function(){return _0x3c8e9a;});}})[_0x34c4('0x26')](respondWithStatusCode(_0x5be4f1,null))['catch'](handleError(_0x5be4f1,null));};
\ No newline at end of file
+var _0xd727=['select','field','tq.TeamId','from','team_has_voice_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','every','all','union','compact','ids','isEmpty','removeAgents','userVoiceQueue:remove','addAgents','spread','online','isArray','getAgents','getMembers','getLists','CmList','dialCheckDuplicateType','insert','into','cm_hopper','fromQuery','ListId','phone','NOW()','scheduledAt','CmListId','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','COALESCE(phone,\x27\x27)','ContactId','cm_contacts','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./voiceQueue.socket','register','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','VoiceQueues','outbound','filter','ignore','map','value','includes','type','name','UserProfileResource','sendStatus','error','stack','VoiceQueue','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','includeAll','include','findAll','show','params','keys','options','find','create','body','user','get','inbound','UserProfileSection','userProfileId','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','QueueCampaigns','findOne','CmHopper','order','VoiceQueueId','rows','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','Team','addTeams','teams','voicePause','interface','Agents','forEach','penalty','transaction','each','upsert','findOrCreate','UserVoiceQueueRt','isNil','format','SIP/%s','emit','userVoiceQueue:save','User'];(function(_0x1070ff,_0x1ddf83){var _0x4b53a9=function(_0x19d722){while(--_0x19d722){_0x1070ff['push'](_0x1070ff['shift']());}};_0x4b53a9(++_0x1ddf83);}(_0xd727,0x1a1));var _0x7d72=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xd727[_0x42cae2];return _0x5f256f;};'use strict';var emlformat=require(_0x7d72('0x0'));var rimraf=require(_0x7d72('0x1'));var zipdir=require(_0x7d72('0x2'));var jsonpatch=require(_0x7d72('0x3'));var rp=require(_0x7d72('0x4'));var moment=require(_0x7d72('0x5'));var BPromise=require(_0x7d72('0x6'));var Mustache=require(_0x7d72('0x7'));var util=require(_0x7d72('0x8'));var path=require('path');var sox=require(_0x7d72('0x9'));var csv=require('to-csv');var ejs=require(_0x7d72('0xa'));var fs=require('fs');var fs_extra=require(_0x7d72('0xb'));var _=require(_0x7d72('0xc'));var squel=require('squel');var crypto=require(_0x7d72('0xd'));var jsforce=require(_0x7d72('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x7d72('0xf'));var querystring=require(_0x7d72('0x10'));var Papa=require(_0x7d72('0x11'));var Redis=require(_0x7d72('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x7d72('0x13'));var as=require(_0x7d72('0x14'));var hardwareService=require(_0x7d72('0x15'));var logger=require(_0x7d72('0x16'))(_0x7d72('0x17'));var utils=require('../../config/utils');var config=require(_0x7d72('0x18'));var licenseUtil=require(_0x7d72('0x19'));var db=require(_0x7d72('0x1a'))['db'];config[_0x7d72('0x1b')]=_['defaults'](config[_0x7d72('0x1b')],{'host':_0x7d72('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7d72('0x1b')]));require(_0x7d72('0x1d'))[_0x7d72('0x1e')](socket);function respondWithStatusCode(_0x1f4101,_0x1a4d7d){_0x1a4d7d=_0x1a4d7d||0xcc;return function(_0x2c370b){if(_0x2c370b){return _0x1f4101['sendStatus'](_0x1a4d7d);}return _0x1f4101[_0x7d72('0x1f')](_0x1a4d7d)[_0x7d72('0x20')]();};}function respondWithResult(_0x14d453,_0x390901){_0x390901=_0x390901||0xc8;return function(_0x4bd097){if(_0x4bd097){return _0x14d453[_0x7d72('0x1f')](_0x390901)[_0x7d72('0x21')](_0x4bd097);}};}function respondWithFilteredResult(_0x251317,_0x66d124){return function(_0x3d5f5a){if(_0x3d5f5a){var _0x25b1ba=typeof _0x66d124[_0x7d72('0x22')]===_0x7d72('0x23')&&typeof _0x66d124[_0x7d72('0x24')]===_0x7d72('0x23');var _0x348ebc=_0x3d5f5a[_0x7d72('0x25')];var _0xb87262=_0x25b1ba?0x0:_0x66d124[_0x7d72('0x22')];var _0x1601fb=_0x25b1ba?_0x3d5f5a[_0x7d72('0x25')]:_0x66d124['offset']+_0x66d124[_0x7d72('0x24')];var _0x2c0671;if(_0x1601fb>=_0x348ebc){_0x1601fb=_0x348ebc;_0x2c0671=0xc8;}else{_0x2c0671=0xce;}_0x251317[_0x7d72('0x1f')](_0x2c0671);return _0x251317[_0x7d72('0x26')](_0x7d72('0x27'),_0xb87262+'-'+_0x1601fb+'/'+_0x348ebc)['json'](_0x3d5f5a);}return null;};}function patchUpdates(_0x3e11a3){return function(_0x18de50){try{jsonpatch['apply'](_0x18de50,_0x3e11a3,!![]);}catch(_0x6dd956){return BPromise[_0x7d72('0x28')](_0x6dd956);}return _0x18de50[_0x7d72('0x29')]();};}function saveUpdates(_0x9a6181,_0x118898){return function(_0x5291ad){if(_0x5291ad){return _0x5291ad[_0x7d72('0x2a')](_0x9a6181)[_0x7d72('0x2b')](function(_0x9461ee){return _0x9461ee;});}return null;};}function removeEntity(_0x396770,_0x291dc4){return function(_0x31c08f){if(_0x31c08f){return _0x31c08f[_0x7d72('0x2c')]()[_0x7d72('0x2b')](function(){var _0xca33b5=_0x31c08f['get']({'plain':!![]});var _0x2241b0=[{'name':_0x7d72('0x2d'),'value':'inbound','ignore':![]},{'name':'QueueCampaigns','value':_0x7d72('0x2e'),'ignore':![]}];var _0x341558=_(_0x2241b0)[_0x7d72('0x2f')](_0x7d72('0x30'))[_0x7d72('0x31')]('value')[_0x7d72('0x32')]();if(_[_0x7d72('0x33')](_0x341558,_0xca33b5[_0x7d72('0x34')])){return;}var _0xb5258c=_['find'](_0x2241b0,[_0x7d72('0x32'),_0xca33b5['type']])[_0x7d72('0x35')];return db[_0x7d72('0x36')][_0x7d72('0x2c')]({'where':{'type':_0xb5258c,'resourceId':_0xca33b5['id']}})[_0x7d72('0x2b')](function(){return _0x31c08f;});})[_0x7d72('0x2b')](function(){_0x396770['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x12d6db,_0x174e48){return function(_0x511366){if(!_0x511366){_0x12d6db[_0x7d72('0x37')](0x194);}return _0x511366;};}function handleError(_0x558e9e,_0x15f58f){_0x15f58f=_0x15f58f||0x1f4;return function(_0x373ef0){logger[_0x7d72('0x38')](_0x373ef0[_0x7d72('0x39')]);if(_0x373ef0['name']){delete _0x373ef0['name'];}_0x558e9e[_0x7d72('0x1f')](_0x15f58f)['send'](_0x373ef0);};}exports['index']=function(_0x4d2739,_0x23b6db){var _0x430c93={},_0x92ac77={},_0x432211={'count':0x0,'rows':[]};var _0xcfb285=_[_0x7d72('0x31')](db[_0x7d72('0x3a')][_0x7d72('0x3b')],function(_0x4a9f04){return{'name':_0x4a9f04[_0x7d72('0x3c')],'type':_0x4a9f04[_0x7d72('0x34')][_0x7d72('0x3d')]};});_0x92ac77[_0x7d72('0x3e')]=_['map'](_0xcfb285,_0x7d72('0x35'));_0x92ac77[_0x7d72('0x3f')]=_['keys'](_0x4d2739[_0x7d72('0x3f')]);_0x92ac77[_0x7d72('0x40')]=_[_0x7d72('0x41')](_0x92ac77['model'],_0x92ac77[_0x7d72('0x3f')]);_0x430c93[_0x7d72('0x42')]=_[_0x7d72('0x41')](_0x92ac77['model'],qs[_0x7d72('0x43')](_0x4d2739[_0x7d72('0x3f')][_0x7d72('0x43')]));_0x430c93[_0x7d72('0x42')]=_0x430c93[_0x7d72('0x42')][_0x7d72('0x44')]?_0x430c93[_0x7d72('0x42')]:_0x92ac77[_0x7d72('0x3e')];if(!_0x4d2739[_0x7d72('0x3f')][_0x7d72('0x45')](_0x7d72('0x46'))){_0x430c93[_0x7d72('0x24')]=qs[_0x7d72('0x24')](_0x4d2739[_0x7d72('0x3f')][_0x7d72('0x24')]);_0x430c93['offset']=qs['offset'](_0x4d2739['query'][_0x7d72('0x22')]);}_0x430c93['order']=qs[_0x7d72('0x47')](_0x4d2739[_0x7d72('0x3f')][_0x7d72('0x47')]);_0x430c93[_0x7d72('0x48')]=qs[_0x7d72('0x40')](_[_0x7d72('0x49')](_0x4d2739['query'],_0x92ac77[_0x7d72('0x40')]),_0xcfb285);if(_0x4d2739[_0x7d72('0x3f')][_0x7d72('0x2f')]){_0x430c93['where']=_[_0x7d72('0x4a')](_0x430c93['where'],{'$or':_['map'](_0xcfb285,function(_0x41fab3){if(_0x41fab3[_0x7d72('0x34')]!=='VIRTUAL'){var _0x3028df={};_0x3028df[_0x41fab3['name']]={'$like':'%'+_0x4d2739['query']['filter']+'%'};return _0x3028df;}})});}_0x430c93=_[_0x7d72('0x4a')]({},_0x430c93,_0x4d2739['options']);var _0x5cd93f={'where':_0x430c93['where']};return db[_0x7d72('0x3a')]['count'](_0x5cd93f)[_0x7d72('0x2b')](function(_0x580d1a){_0x432211[_0x7d72('0x25')]=_0x580d1a;if(_0x4d2739[_0x7d72('0x3f')][_0x7d72('0x4b')]){_0x430c93[_0x7d72('0x4c')]=[{'all':!![]}];}return db[_0x7d72('0x3a')][_0x7d72('0x4d')](_0x430c93);})[_0x7d72('0x2b')](function(_0x59de21){_0x432211['rows']=_0x59de21;return _0x432211;})['then'](respondWithFilteredResult(_0x23b6db,_0x430c93))['catch'](handleError(_0x23b6db,null));};exports[_0x7d72('0x4e')]=function(_0x42141c,_0x50ea46){var _0x186df4={'raw':![],'where':{'id':_0x42141c[_0x7d72('0x4f')]['id']}},_0xda9b15={};_0xda9b15[_0x7d72('0x3e')]=_['keys'](db['VoiceQueue']['rawAttributes']);_0xda9b15[_0x7d72('0x3f')]=_[_0x7d72('0x50')](_0x42141c[_0x7d72('0x3f')]);_0xda9b15[_0x7d72('0x40')]=_[_0x7d72('0x41')](_0xda9b15['model'],_0xda9b15['query']);_0x186df4['attributes']=_[_0x7d72('0x41')](_0xda9b15[_0x7d72('0x3e')],qs[_0x7d72('0x43')](_0x42141c[_0x7d72('0x3f')][_0x7d72('0x43')]));_0x186df4['attributes']=_0x186df4[_0x7d72('0x42')]['length']?_0x186df4[_0x7d72('0x42')]:_0xda9b15['model'];if(_0x42141c[_0x7d72('0x3f')]['includeAll']){_0x186df4[_0x7d72('0x4c')]=[{'all':!![]}];}_0x186df4=_[_0x7d72('0x4a')]({},_0x186df4,_0x42141c[_0x7d72('0x51')]);return db[_0x7d72('0x3a')][_0x7d72('0x52')](_0x186df4)[_0x7d72('0x2b')](handleEntityNotFound(_0x50ea46,null))[_0x7d72('0x2b')](respondWithResult(_0x50ea46,null))['catch'](handleError(_0x50ea46,null));};exports[_0x7d72('0x53')]=function(_0x40c18a,_0x1e39c7){return db[_0x7d72('0x3a')]['create'](_0x40c18a[_0x7d72('0x54')],{})[_0x7d72('0x2b')](function(_0x4ff982){var _0x144794=_0x40c18a[_0x7d72('0x55')][_0x7d72('0x56')]({'plain':!![]});if(!_0x144794)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x144794['role']==='user'){var _0x55a3a9=_0x4ff982[_0x7d72('0x56')]({'plain':!![]});var _0x4ec2c9=[{'name':_0x7d72('0x2d'),'value':_0x7d72('0x57')},{'name':'QueueCampaigns','value':'outbound'}];var _0x462a44=_[_0x7d72('0x52')](_0x4ec2c9,[_0x7d72('0x32'),_0x55a3a9[_0x7d72('0x34')]])[_0x7d72('0x35')];return db[_0x7d72('0x58')][_0x7d72('0x52')]({'where':{'name':_0x462a44,'userProfileId':_0x144794[_0x7d72('0x59')]},'raw':!![]})[_0x7d72('0x2b')](function(_0x258dd1){if(_0x258dd1&&_0x258dd1[_0x7d72('0x5a')]===0x0){return db[_0x7d72('0x36')]['create']({'name':_0x55a3a9[_0x7d72('0x35')],'resourceId':_0x55a3a9['id'],'type':_0x258dd1['name'],'sectionId':_0x258dd1['id']},{})[_0x7d72('0x2b')](function(){return _0x4ff982;});}else{return _0x4ff982;}})[_0x7d72('0x5b')](function(_0x5b4ee4){logger[_0x7d72('0x38')](_0x7d72('0x5c'),_0x5b4ee4);throw _0x5b4ee4;});}return _0x4ff982;})[_0x7d72('0x2b')](respondWithResult(_0x1e39c7,0xc9))[_0x7d72('0x5b')](handleError(_0x1e39c7,null));};exports[_0x7d72('0x5d')]=function(_0x25bcef,_0x2f8e69){var _0x5546e2={'where':{'id':_0x25bcef[_0x7d72('0x4f')]['id']}},_0x475129={};_0x475129['model']=_[_0x7d72('0x50')](db['VoiceQueue'][_0x7d72('0x3b')]);_0x5546e2[_0x7d72('0x42')]=_[_0x7d72('0x41')](_0x475129[_0x7d72('0x3e')],qs['fields'](_0x25bcef[_0x7d72('0x3f')][_0x7d72('0x43')]));_0x5546e2['attributes']=_0x5546e2[_0x7d72('0x42')]['length']?_0x5546e2['attributes']:_0x475129[_0x7d72('0x3e')];if(_0x25bcef[_0x7d72('0x3f')]['includeAll']){_0x5546e2[_0x7d72('0x4c')]=[{'all':!![]}];}_0x5546e2=_[_0x7d72('0x4a')]({},_0x5546e2,_0x25bcef[_0x7d72('0x51')]);return db[_0x7d72('0x3a')][_0x7d72('0x52')](_0x5546e2)[_0x7d72('0x2b')](handleEntityNotFound(_0x2f8e69,null))[_0x7d72('0x2b')](function(_0x29bc89){if(_0x29bc89){var _0x24f8b6=_0x29bc89[_0x7d72('0x56')]({'plain':!![]});_0x24f8b6=qs[_0x7d72('0x5e')](_0x24f8b6,['id',_0x7d72('0x5f'),_0x7d72('0x60')]);_0x25bcef[_0x7d72('0x54')]=_[_0x7d72('0x5e')](_0x25bcef[_0x7d72('0x54')],['id','createdAt','updatedAt']);return db[_0x7d72('0x3a')][_0x7d72('0x53')](_[_0x7d72('0x4a')](_0x24f8b6,_0x25bcef[_0x7d72('0x54')]),{'include':_0x25bcef[_0x7d72('0x3f')][_0x7d72('0x4b')]?[{'all':!![]}]:undefined})['then'](function(_0x9317bb){var _0x357a16=_0x25bcef['user'][_0x7d72('0x56')]({'plain':!![]});if(!_0x357a16)throw new Error(_0x7d72('0x61'));if(_0x357a16['role']==='user'){var _0x2c841b=_0x9317bb[_0x7d72('0x56')]({'plain':!![]});var _0x3d68b7=[{'name':'VoiceQueues','value':_0x7d72('0x57')},{'name':_0x7d72('0x62'),'value':_0x7d72('0x2e')}];var _0x91f079=_[_0x7d72('0x52')](_0x3d68b7,['value',_0x2c841b[_0x7d72('0x34')]])[_0x7d72('0x35')];return db[_0x7d72('0x58')][_0x7d72('0x52')]({'where':{'name':_0x91f079,'userProfileId':_0x357a16[_0x7d72('0x59')]},'raw':!![]})[_0x7d72('0x2b')](function(_0xd49c14){if(_0xd49c14&&_0xd49c14['autoAssociation']===0x0){return db[_0x7d72('0x36')][_0x7d72('0x53')]({'name':_0x2c841b[_0x7d72('0x35')],'resourceId':_0x2c841b['id'],'type':_0xd49c14[_0x7d72('0x35')],'sectionId':_0xd49c14['id']},{})[_0x7d72('0x2b')](function(){return _0x9317bb;});}else{return _0x9317bb;}})[_0x7d72('0x5b')](function(_0x276678){logger['error'](_0x7d72('0x5c'),_0x276678);throw _0x276678;});}return _0x9317bb;});}})['then'](respondWithResult(_0x2f8e69,0xc9))[_0x7d72('0x5b')](handleError(_0x2f8e69,null));};exports[_0x7d72('0x2a')]=function(_0x3bb389,_0x14cfea){if(_0x3bb389[_0x7d72('0x54')]['id']){delete _0x3bb389[_0x7d72('0x54')]['id'];}return db[_0x7d72('0x3a')][_0x7d72('0x52')]({'where':{'id':_0x3bb389[_0x7d72('0x4f')]['id']}})[_0x7d72('0x2b')](handleEntityNotFound(_0x14cfea,null))[_0x7d72('0x2b')](saveUpdates(_0x3bb389[_0x7d72('0x54')],null))[_0x7d72('0x2b')](respondWithResult(_0x14cfea,null))[_0x7d72('0x5b')](handleError(_0x14cfea,null));};exports[_0x7d72('0x2c')]=function(_0x4e6398,_0x399e2e){return db[_0x7d72('0x3a')][_0x7d72('0x52')]({'where':{'id':_0x4e6398[_0x7d72('0x4f')]['id']}})[_0x7d72('0x2b')](handleEntityNotFound(_0x399e2e,null))['then'](removeEntity(_0x399e2e,null))['catch'](handleError(_0x399e2e,null));};exports['getHoppers']=function(_0x820ea4,_0x169d25,_0x3cdbbb){var _0x10aba4={'raw':![],'where':{}};var _0x474683={};var _0x320568={'count':0x0,'rows':[]};return db[_0x7d72('0x3a')][_0x7d72('0x63')]({'where':{'id':_0x820ea4[_0x7d72('0x4f')]['id']}})[_0x7d72('0x2b')](handleEntityNotFound(_0x169d25,null))[_0x7d72('0x2b')](function(_0x2ab1c2){if(_0x2ab1c2){_0x474683[_0x7d72('0x3e')]=_[_0x7d72('0x50')](db[_0x7d72('0x64')][_0x7d72('0x3b')]);_0x474683[_0x7d72('0x3f')]=_[_0x7d72('0x50')](_0x820ea4[_0x7d72('0x3f')]);_0x474683[_0x7d72('0x40')]=_[_0x7d72('0x41')](_0x474683[_0x7d72('0x3e')],_0x474683[_0x7d72('0x3f')]);_0x10aba4[_0x7d72('0x42')]=_[_0x7d72('0x41')](_0x474683[_0x7d72('0x3e')],qs[_0x7d72('0x43')](_0x820ea4[_0x7d72('0x3f')][_0x7d72('0x43')]));_0x10aba4[_0x7d72('0x42')]=_0x10aba4[_0x7d72('0x42')][_0x7d72('0x44')]?_0x10aba4[_0x7d72('0x42')]:_0x474683[_0x7d72('0x3e')];if(!_0x820ea4['query'][_0x7d72('0x45')](_0x7d72('0x46'))){_0x10aba4['limit']=qs[_0x7d72('0x24')](_0x820ea4[_0x7d72('0x3f')][_0x7d72('0x24')]);_0x10aba4[_0x7d72('0x22')]=qs['offset'](_0x820ea4[_0x7d72('0x3f')]['offset']);}_0x10aba4[_0x7d72('0x65')]=qs[_0x7d72('0x47')](_0x820ea4['query'][_0x7d72('0x47')]);_0x10aba4[_0x7d72('0x48')]=qs[_0x7d72('0x40')](_[_0x7d72('0x49')](_0x820ea4[_0x7d72('0x3f')],_0x474683[_0x7d72('0x40')]));_0x10aba4['where'][_0x7d72('0x66')]=_0x2ab1c2['id'];if(_0x820ea4['query'][_0x7d72('0x2f')]){_0x10aba4[_0x7d72('0x48')]=_[_0x7d72('0x4a')](_0x10aba4[_0x7d72('0x48')],{'$or':_[_0x7d72('0x31')](_0x10aba4[_0x7d72('0x42')],function(_0x1ad0c0){var _0xc846a9={};_0xc846a9[_0x1ad0c0]={'$like':'%'+_0x820ea4[_0x7d72('0x3f')][_0x7d72('0x2f')]+'%'};return _0xc846a9;})});}_0x10aba4=_['merge']({},_0x10aba4,_0x820ea4[_0x7d72('0x51')]);return db[_0x7d72('0x64')][_0x7d72('0x25')]({'where':_0x10aba4['where']})[_0x7d72('0x2b')](function(_0x32a609){_0x320568[_0x7d72('0x25')]=_0x32a609;if(_0x820ea4[_0x7d72('0x3f')][_0x7d72('0x4b')]){_0x10aba4['include']=[{'all':!![]}];}return db[_0x7d72('0x64')]['findAll'](_0x10aba4);})[_0x7d72('0x2b')](function(_0x381df4){_0x320568[_0x7d72('0x67')]=_0x381df4;return _0x320568;});}})[_0x7d72('0x2b')](respondWithFilteredResult(_0x169d25,_0x10aba4))[_0x7d72('0x5b')](handleError(_0x169d25,null));};exports[_0x7d72('0x68')]=function(_0x152e1b,_0x2a593c,_0x22942c){var _0x1aea60={'raw':!![],'where':{}};var _0x4f61ef={};var _0x132c31={'count':0x0,'rows':[]};return db[_0x7d72('0x3a')][_0x7d72('0x63')]({'where':{'id':_0x152e1b[_0x7d72('0x4f')]['id']}})[_0x7d72('0x2b')](handleEntityNotFound(_0x2a593c,null))[_0x7d72('0x2b')](function(_0x59703e){if(_0x59703e){_0x4f61ef[_0x7d72('0x3e')]=_['keys'](db[_0x7d72('0x69')][_0x7d72('0x3b')]);_0x4f61ef[_0x7d72('0x3f')]=_[_0x7d72('0x50')](_0x152e1b['query']);_0x4f61ef['filters']=_[_0x7d72('0x41')](_0x4f61ef[_0x7d72('0x3e')],_0x4f61ef['query']);_0x1aea60['attributes']=_['intersection'](_0x4f61ef[_0x7d72('0x3e')],qs[_0x7d72('0x43')](_0x152e1b[_0x7d72('0x3f')][_0x7d72('0x43')]));_0x1aea60[_0x7d72('0x42')]=_0x1aea60[_0x7d72('0x42')][_0x7d72('0x44')]?_0x1aea60[_0x7d72('0x42')]:_0x4f61ef[_0x7d72('0x3e')];if(!_0x152e1b[_0x7d72('0x3f')]['hasOwnProperty'](_0x7d72('0x46'))){_0x1aea60[_0x7d72('0x24')]=qs[_0x7d72('0x24')](_0x152e1b['query'][_0x7d72('0x24')]);_0x1aea60['offset']=qs['offset'](_0x152e1b['query'][_0x7d72('0x22')]);}_0x1aea60[_0x7d72('0x65')]=qs[_0x7d72('0x47')](_0x152e1b[_0x7d72('0x3f')]['sort']);_0x1aea60['where']=qs[_0x7d72('0x40')](_[_0x7d72('0x49')](_0x152e1b[_0x7d72('0x3f')],_0x4f61ef[_0x7d72('0x40')]));_0x1aea60['where']['VoiceQueueId']=_0x59703e['id'];if(_0x152e1b[_0x7d72('0x3f')][_0x7d72('0x2f')]){_0x1aea60[_0x7d72('0x48')]=_['merge'](_0x1aea60[_0x7d72('0x48')],{'$or':_['map'](_0x1aea60['attributes'],function(_0x2e2d4a){var _0x16c493={};_0x16c493[_0x2e2d4a]={'$like':'%'+_0x152e1b[_0x7d72('0x3f')][_0x7d72('0x2f')]+'%'};return _0x16c493;})});}_0x1aea60=_['merge']({},_0x1aea60,_0x152e1b[_0x7d72('0x51')]);return db['CmHopperHistory'][_0x7d72('0x25')]({'where':_0x1aea60[_0x7d72('0x48')]})[_0x7d72('0x2b')](function(_0x2b82d4){_0x132c31[_0x7d72('0x25')]=_0x2b82d4;if(_0x152e1b['query']['includeAll']){_0x1aea60[_0x7d72('0x4c')]=[{'all':!![]}];}return db[_0x7d72('0x69')][_0x7d72('0x4d')](_0x1aea60);})[_0x7d72('0x2b')](function(_0x2b56c9){_0x132c31[_0x7d72('0x67')]=_0x2b56c9;return _0x132c31;});}})[_0x7d72('0x2b')](respondWithFilteredResult(_0x2a593c,_0x1aea60))['catch'](handleError(_0x2a593c,null));};exports[_0x7d72('0x6a')]=function(_0x1feaba,_0xbcca1f,_0x2aebd9){var _0x1adeb3={'raw':!![],'where':{}};var _0x463725={};var _0x3fa7b6={'count':0x0,'rows':[]};return db[_0x7d72('0x3a')][_0x7d72('0x63')]({'where':{'id':_0x1feaba[_0x7d72('0x4f')]['id']}})[_0x7d72('0x2b')](handleEntityNotFound(_0xbcca1f,null))[_0x7d72('0x2b')](function(_0x4448a8){if(_0x4448a8){_0x463725[_0x7d72('0x3e')]=_[_0x7d72('0x50')](db['CmHopperFinal']['rawAttributes']);_0x463725[_0x7d72('0x3f')]=_[_0x7d72('0x50')](_0x1feaba[_0x7d72('0x3f')]);_0x463725[_0x7d72('0x40')]=_['intersection'](_0x463725['model'],_0x463725[_0x7d72('0x3f')]);_0x1adeb3[_0x7d72('0x42')]=_[_0x7d72('0x41')](_0x463725[_0x7d72('0x3e')],qs[_0x7d72('0x43')](_0x1feaba['query'][_0x7d72('0x43')]));_0x1adeb3['attributes']=_0x1adeb3[_0x7d72('0x42')]['length']?_0x1adeb3['attributes']:_0x463725[_0x7d72('0x3e')];if(!_0x1feaba[_0x7d72('0x3f')][_0x7d72('0x45')](_0x7d72('0x46'))){_0x1adeb3[_0x7d72('0x24')]=qs[_0x7d72('0x24')](_0x1feaba[_0x7d72('0x3f')][_0x7d72('0x24')]);_0x1adeb3[_0x7d72('0x22')]=qs[_0x7d72('0x22')](_0x1feaba[_0x7d72('0x3f')]['offset']);}_0x1adeb3[_0x7d72('0x65')]=qs[_0x7d72('0x47')](_0x1feaba['query']['sort']);_0x1adeb3[_0x7d72('0x48')]=qs['filters'](_[_0x7d72('0x49')](_0x1feaba[_0x7d72('0x3f')],_0x463725['filters']));_0x1adeb3[_0x7d72('0x48')]['VoiceQueueId']=_0x4448a8['id'];if(_0x1feaba[_0x7d72('0x3f')]['filter']){_0x1adeb3['where']=_['merge'](_0x1adeb3[_0x7d72('0x48')],{'$or':_[_0x7d72('0x31')](_0x1adeb3[_0x7d72('0x42')],function(_0x317970){var _0x404a32={};_0x404a32[_0x317970]={'$like':'%'+_0x1feaba['query'][_0x7d72('0x2f')]+'%'};return _0x404a32;})});}_0x1adeb3=_[_0x7d72('0x4a')]({},_0x1adeb3,_0x1feaba[_0x7d72('0x51')]);return db[_0x7d72('0x6b')][_0x7d72('0x25')]({'where':_0x1adeb3['where']})[_0x7d72('0x2b')](function(_0x20a4dc){_0x3fa7b6['count']=_0x20a4dc;if(_0x1feaba[_0x7d72('0x3f')]['includeAll']){_0x1adeb3['include']=[{'all':!![]}];}return db[_0x7d72('0x6b')][_0x7d72('0x4d')](_0x1adeb3);})[_0x7d72('0x2b')](function(_0x58d73f){_0x3fa7b6[_0x7d72('0x67')]=_0x58d73f;return _0x3fa7b6;});}})[_0x7d72('0x2b')](respondWithFilteredResult(_0xbcca1f,_0x1adeb3))[_0x7d72('0x5b')](handleError(_0xbcca1f,null));};exports[_0x7d72('0x6c')]=function(_0x46b52e,_0x278a86,_0x29f1a3){var _0x5c44de={'raw':!![],'where':{}};var _0x1b00a3={};var _0x2d93ed={'count':0x0,'rows':[]};return db[_0x7d72('0x3a')][_0x7d72('0x63')]({'where':{'id':_0x46b52e[_0x7d72('0x4f')]['id']}})[_0x7d72('0x2b')](handleEntityNotFound(_0x278a86,null))['then'](function(_0x1d662b){if(_0x1d662b){_0x1b00a3[_0x7d72('0x3e')]=_['keys'](db[_0x7d72('0x6d')]['rawAttributes']);_0x1b00a3[_0x7d72('0x3f')]=_[_0x7d72('0x50')](_0x46b52e[_0x7d72('0x3f')]);_0x1b00a3[_0x7d72('0x40')]=_['intersection'](_0x1b00a3[_0x7d72('0x3e')],_0x1b00a3[_0x7d72('0x3f')]);_0x5c44de['attributes']=_[_0x7d72('0x41')](_0x1b00a3[_0x7d72('0x3e')],qs[_0x7d72('0x43')](_0x46b52e[_0x7d72('0x3f')]['fields']));_0x5c44de['attributes']=_0x5c44de[_0x7d72('0x42')][_0x7d72('0x44')]?_0x5c44de[_0x7d72('0x42')]:_0x1b00a3[_0x7d72('0x3e')];if(!_0x46b52e[_0x7d72('0x3f')][_0x7d72('0x45')](_0x7d72('0x46'))){_0x5c44de[_0x7d72('0x24')]=qs[_0x7d72('0x24')](_0x46b52e[_0x7d72('0x3f')][_0x7d72('0x24')]);_0x5c44de[_0x7d72('0x22')]=qs[_0x7d72('0x22')](_0x46b52e[_0x7d72('0x3f')][_0x7d72('0x22')]);}_0x5c44de[_0x7d72('0x65')]=qs[_0x7d72('0x47')](_0x46b52e['query'][_0x7d72('0x47')]);_0x5c44de[_0x7d72('0x48')]=qs[_0x7d72('0x40')](_[_0x7d72('0x49')](_0x46b52e['query'],_0x1b00a3[_0x7d72('0x40')]));_0x5c44de['where'][_0x7d72('0x66')]=_0x1d662b['id'];if(_0x46b52e[_0x7d72('0x3f')]['filter']){_0x5c44de[_0x7d72('0x48')]=_[_0x7d72('0x4a')](_0x5c44de[_0x7d72('0x48')],{'$or':_['map'](_0x5c44de['attributes'],function(_0x36e599){var _0x4b0cfd={};_0x4b0cfd[_0x36e599]={'$like':'%'+_0x46b52e[_0x7d72('0x3f')][_0x7d72('0x2f')]+'%'};return _0x4b0cfd;})});}_0x5c44de=_['merge']({},_0x5c44de,_0x46b52e[_0x7d72('0x51')]);return db['CmHopperBlack']['count']({'where':_0x5c44de[_0x7d72('0x48')]})[_0x7d72('0x2b')](function(_0x4609c7){_0x2d93ed[_0x7d72('0x25')]=_0x4609c7;if(_0x46b52e[_0x7d72('0x3f')][_0x7d72('0x4b')]){_0x5c44de['include']=[{'all':!![]}];}return db[_0x7d72('0x6d')][_0x7d72('0x4d')](_0x5c44de);})[_0x7d72('0x2b')](function(_0x5c9154){_0x2d93ed['rows']=_0x5c9154;return _0x2d93ed;});}})[_0x7d72('0x2b')](respondWithFilteredResult(_0x278a86,_0x5c44de))[_0x7d72('0x5b')](handleError(_0x278a86,null));};exports['getTeams']=function(_0xe9afb5,_0x5e4e49,_0x3a48cd){var _0x82a31={};var _0x56e790={};var _0x445bc5;var _0x1051bb;return db[_0x7d72('0x3a')][_0x7d72('0x63')]({'where':{'id':_0xe9afb5[_0x7d72('0x4f')]['id']}})[_0x7d72('0x2b')](handleEntityNotFound(_0x5e4e49,null))['then'](function(_0x106fae){if(_0x106fae){_0x445bc5=_0x106fae;_0x56e790[_0x7d72('0x3e')]=_[_0x7d72('0x50')](db[_0x7d72('0x6e')]['rawAttributes']);_0x56e790[_0x7d72('0x3f')]=_[_0x7d72('0x50')](_0xe9afb5['query']);_0x56e790['filters']=_[_0x7d72('0x41')](_0x56e790[_0x7d72('0x3e')],_0x56e790['query']);_0x82a31[_0x7d72('0x42')]=_[_0x7d72('0x41')](_0x56e790['model'],qs[_0x7d72('0x43')](_0xe9afb5[_0x7d72('0x3f')]['fields']));_0x82a31[_0x7d72('0x42')]=_0x82a31['attributes']['length']?_0x82a31[_0x7d72('0x42')]:_0x56e790[_0x7d72('0x3e')];_0x82a31[_0x7d72('0x65')]=qs[_0x7d72('0x47')](_0xe9afb5[_0x7d72('0x3f')][_0x7d72('0x47')]);_0x82a31[_0x7d72('0x48')]=qs[_0x7d72('0x40')](_[_0x7d72('0x49')](_0xe9afb5[_0x7d72('0x3f')],_0x56e790[_0x7d72('0x40')]));if(_0xe9afb5[_0x7d72('0x3f')][_0x7d72('0x2f')]){_0x82a31[_0x7d72('0x48')]=_[_0x7d72('0x4a')](_0x82a31[_0x7d72('0x48')],{'$or':_[_0x7d72('0x31')](_0x82a31[_0x7d72('0x42')],function(_0x4f0cfe){var _0x41da85={};_0x41da85[_0x4f0cfe]={'$like':'%'+_0xe9afb5[_0x7d72('0x3f')][_0x7d72('0x2f')]+'%'};return _0x41da85;})});}_0x82a31=_[_0x7d72('0x4a')]({},_0x82a31,_0xe9afb5['options']);return _0x445bc5['getTeams'](_0x82a31);}})['then'](function(_0x5c12a8){if(_0x5c12a8){_0x1051bb=_0x5c12a8['length'];if(!_0xe9afb5['query'][_0x7d72('0x45')](_0x7d72('0x46'))){_0x82a31[_0x7d72('0x24')]=qs[_0x7d72('0x24')](_0xe9afb5['query']['limit']);_0x82a31[_0x7d72('0x22')]=qs[_0x7d72('0x22')](_0xe9afb5['query'][_0x7d72('0x22')]);}return _0x445bc5['getTeams'](_0x82a31);}})[_0x7d72('0x2b')](function(_0xb76e8e){if(_0xb76e8e){return _0xb76e8e?{'count':_0x1051bb,'rows':_0xb76e8e}:null;}})['then'](respondWithResult(_0x5e4e49,null))[_0x7d72('0x5b')](handleError(_0x5e4e49,null));};exports[_0x7d72('0x6f')]=function(_0xfa8925,_0x54b0f3,_0x3164db){var _0x59802d=_0xfa8925[_0x7d72('0x54')][_0x7d72('0x70')];var _0x50a0a5=_[_0x7d72('0x31')](_0x59802d,'id');return db[_0x7d72('0x6e')][_0x7d72('0x4d')]({'where':{'id':_0x50a0a5},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0x7d72('0x35'),'online',_0x7d72('0x71'),_0x7d72('0x72')],'raw':!![]}]})['then'](function(_0x540fcf){if(_0x540fcf){var _0xbcfe51=_['flatMap'](_0x540fcf,function(_0x2f46d7){var _0x500f00=_0x2f46d7[_0x7d72('0x56')]({'plain':!![]});_0x500f00[_0x7d72('0x73')][_0x7d72('0x74')](function(_0x2dcbdc){_0x2dcbdc[_0x7d72('0x75')]=_[_0x7d72('0x52')](_0x59802d,{'id':_0x500f00['id']})[_0x7d72('0x75')];});return _0x500f00[_0x7d72('0x73')];});return db['VoiceQueue']['find']({'where':{'id':_0xfa8925['params']['id']}})['then'](function(_0x223ec3){return db['sequelize'][_0x7d72('0x76')](function(_0x23c57f){return _0x223ec3[_0x7d72('0x6f')](_0x50a0a5,{'transaction':_0x23c57f})[_0x7d72('0x2b')](function(){return BPromise[_0x7d72('0x77')](_0x59802d,function(_0x38ead3){return db['TeamVoiceQueue'][_0x7d72('0x78')]({'TeamId':_0x38ead3['id'],'VoiceQueueId':_0xfa8925[_0x7d72('0x4f')]['id'],'penalty':_0x38ead3[_0x7d72('0x75')]},{'transaction':_0x23c57f});});})['then'](function(){return BPromise['each'](_0xbcfe51,function(_0x1af354){return db['UserVoiceQueue'][_0x7d72('0x79')]({'where':{'UserId':_0x1af354['id'],'VoiceQueueId':_0xfa8925[_0x7d72('0x4f')]['id']},'defaults':{'penalty':_0x1af354[_0x7d72('0x75')]},'transaction':_0x23c57f});});})[_0x7d72('0x2b')](function(){return BPromise['each'](_[_0x7d72('0x2f')](_0xbcfe51,{'online':!![]}),function(_0x2795c7){return db[_0x7d72('0x7a')]['upsert']({'membername':_0x2795c7['name'],'UserId':_0x2795c7['id'],'queue_name':_0x223ec3['name'],'VoiceQueueId':_0x223ec3['id'],'interface':_[_0x7d72('0x7b')](_0x2795c7[_0x7d72('0x72')])?util[_0x7d72('0x7c')](_0x7d72('0x7d'),_0x2795c7[_0x7d72('0x35')]):_0x2795c7['interface'],'paused':_0x2795c7[_0x7d72('0x71')]||![],'penalty':_0x2795c7[_0x7d72('0x75')]},{'transaction':_0x23c57f});});})['then'](function(){_0xbcfe51['forEach'](function(_0x1832b6){socket[_0x7d72('0x7e')](_0x7d72('0x7f'),{'UserId':_0x1832b6['id'],'VoiceQueueId':_0x223ec3['id']});});});});});}})[_0x7d72('0x2b')](respondWithStatusCode(_0x54b0f3,null))['catch'](handleError(_0x54b0f3,null));};exports['removeTeams']=function(_0x566a1d,_0x5455b1,_0x3a3831){return db[_0x7d72('0x6e')][_0x7d72('0x4d')]({'where':{'id':_0x566a1d['query']['ids']},'attributes':['id'],'include':[{'model':db[_0x7d72('0x80')],'as':_0x7d72('0x73'),'attributes':['id'],'raw':!![]}]})[_0x7d72('0x2b')](handleEntityNotFound(_0x5455b1,null))[_0x7d72('0x2b')](function(_0x2eddb7){var _0x56149b=_['map'](_0x2eddb7,'id');var _0xe5cf4f=[];var _0x226a25=[];var _0x26f819=squel[_0x7d72('0x81')]();_0x26f819[_0x7d72('0x82')](_0x7d72('0x83'))[_0x7d72('0x84')](_0x7d72('0x85'),'tq')[_0x7d72('0x86')](_0x7d72('0x87'),'ut',_0x7d72('0x88'))[_0x7d72('0x48')](_0x7d72('0x89'),_0x566a1d[_0x7d72('0x4f')]['id']);for(var _0x175e73=0x0;_0x175e73<_0x2eddb7[_0x7d72('0x44')];_0x175e73+=0x1){let _0x28fa35=_0x2eddb7[_0x175e73];for(var _0x3a310e=0x0;_0x3a310e<_0x28fa35[_0x7d72('0x73')]['length'];_0x3a310e+=0x1){let _0x1c5bf9=_0x28fa35['Agents'][_0x3a310e];var _0x56fe55=_0x26f819[_0x7d72('0x5d')]();_0x56fe55['where']('ut.UserId\x20=\x20?',_0x1c5bf9['id']);_0x226a25[_0x7d72('0x8a')](db[_0x7d72('0x8b')][_0x7d72('0x3f')](_0x56fe55[_0x7d72('0x8c')](),{'type':db['sequelize'][_0x7d72('0x8d')][_0x7d72('0x8e')]})[_0x7d72('0x2b')](function(_0x5814be){if(_0x5814be[_0x7d72('0x44')]===0x1){return _0x1c5bf9['id'];}else{var _0x44e6b5=_[_0x7d72('0x8f')](_[_0x7d72('0x31')](_0x5814be,'TeamId'),function(_0x3553f2){return _[_0x7d72('0x33')](_0x56149b,_0x3553f2);});if(_0x44e6b5){return _0x1c5bf9['id'];}}}));}}return BPromise[_0x7d72('0x90')](_0x226a25)[_0x7d72('0x2b')](function(_0x212aa2){_0xe5cf4f=_(_0xe5cf4f)[_0x7d72('0x91')](_0x212aa2)[_0x7d72('0x92')]()[_0x7d72('0x32')]();return db['VoiceQueue'][_0x7d72('0x52')]({'where':{'id':_0x566a1d[_0x7d72('0x4f')]['id']}})['then'](function(_0x516301){return db[_0x7d72('0x8b')][_0x7d72('0x76')](function(_0x5d4535){return _0x516301['removeTeams'](_0x566a1d[_0x7d72('0x3f')][_0x7d72('0x93')],{'transaction':_0x5d4535})[_0x7d72('0x2b')](function(){if(!_[_0x7d72('0x94')](_0xe5cf4f)){return _0x516301[_0x7d72('0x95')](_0xe5cf4f,{'transaction':_0x5d4535})[_0x7d72('0x2b')](function(){return db['UserVoiceQueueRt'][_0x7d72('0x2c')]({'where':{'VoiceQueueId':_0x566a1d[_0x7d72('0x4f')]['id'],'UserId':_0xe5cf4f},'transaction':_0x5d4535});});}})[_0x7d72('0x2b')](function(){_0xe5cf4f[_0x7d72('0x74')](function(_0x5968b7){socket[_0x7d72('0x7e')](_0x7d72('0x96'),{'UserId':_0x5968b7,'VoiceQueueId':_0x516301['id']});});});});});});})[_0x7d72('0x2b')](respondWithStatusCode(_0x5455b1,null))['catch'](handleError(_0x5455b1,null));};exports[_0x7d72('0x97')]=function(_0x279ece,_0x2f9a90,_0x28b59e){var _0x1d1c06,_0x407350;return db[_0x7d72('0x3a')][_0x7d72('0x52')]({'where':{'id':_0x279ece[_0x7d72('0x4f')]['id']}})[_0x7d72('0x2b')](handleEntityNotFound(_0x2f9a90,null))['then'](function(_0x1eb334){if(_0x1eb334){_0x407350=_0x1eb334;return _0x1eb334[_0x7d72('0x97')](_0x279ece[_0x7d72('0x54')][_0x7d72('0x93')],_['omit'](_0x279ece[_0x7d72('0x54')],[_0x7d72('0x93'),'id'])||{})[_0x7d72('0x98')](function(_0x12d479){for(var _0x9a2485=0x0;_0x9a2485<_0x279ece[_0x7d72('0x54')][_0x7d72('0x93')]['length'];_0x9a2485+=0x1){socket[_0x7d72('0x7e')](_0x7d72('0x7f'),{'UserId':Number(_0x279ece[_0x7d72('0x54')][_0x7d72('0x93')][_0x9a2485]),'VoiceQueueId':Number(_0x279ece[_0x7d72('0x4f')]['id'])});}return _0x12d479;});}})[_0x7d72('0x2b')](function(_0x457971){_0x1d1c06=_0x457971||[];if(_0x407350){return db[_0x7d72('0x80')]['findAll']({'where':{'id':_0x279ece[_0x7d72('0x54')]['ids']},'attributes':['id',_0x7d72('0x35'),_0x7d72('0x99'),_0x7d72('0x71'),_0x7d72('0x72')],'raw':!![]});}})[_0x7d72('0x2b')](function(_0x5db0a0){if(!_['isEmpty'](_0x5db0a0)){var _0x1065e3=[];for(var _0x41907f=0x0;_0x41907f<_0x5db0a0[_0x7d72('0x44')];_0x41907f++){if(_0x5db0a0[_0x41907f]['online']){_0x1065e3['push'](db[_0x7d72('0x7a')][_0x7d72('0x78')]({'membername':_0x5db0a0[_0x41907f][_0x7d72('0x35')],'UserId':_0x5db0a0[_0x41907f]['id'],'queue_name':_0x407350[_0x7d72('0x35')],'VoiceQueueId':_0x407350['id'],'interface':_[_0x7d72('0x7b')](_0x5db0a0[_0x41907f][_0x7d72('0x72')])?util[_0x7d72('0x7c')](_0x7d72('0x7d'),_0x5db0a0[_0x41907f][_0x7d72('0x35')]):_0x5db0a0[_0x41907f][_0x7d72('0x72')],'paused':_0x5db0a0[_0x41907f]['voicePause']||![],'penalty':_0x279ece[_0x7d72('0x54')]['penalty']||0x0}));}}return BPromise[_0x7d72('0x90')](_0x1065e3);}})[_0x7d72('0x2b')](function(){return _0x1d1c06;})['then'](respondWithResult(_0x2f9a90,null))[_0x7d72('0x5b')](handleError(_0x2f9a90,null));};exports[_0x7d72('0x95')]=function(_0x4cdd8f,_0x5793c5,_0x152513){return db[_0x7d72('0x3a')][_0x7d72('0x52')]({'where':{'id':_0x4cdd8f[_0x7d72('0x4f')]['id']}})[_0x7d72('0x2b')](handleEntityNotFound(_0x5793c5,null))[_0x7d72('0x2b')](function(_0x10fcec){if(_0x10fcec){return _0x10fcec[_0x7d72('0x95')](_0x4cdd8f['query'][_0x7d72('0x93')])['then'](function(){if(_[_0x7d72('0x9a')](_0x4cdd8f['query']['ids'])){for(var _0x21542f=0x0;_0x21542f<_0x4cdd8f[_0x7d72('0x3f')]['ids'][_0x7d72('0x44')];_0x21542f+=0x1){socket[_0x7d72('0x7e')]('userVoiceQueue:remove',{'UserId':Number(_0x4cdd8f[_0x7d72('0x3f')]['ids'][_0x21542f]),'VoiceQueueId':Number(_0x4cdd8f['params']['id'])});}}else{socket[_0x7d72('0x7e')](_0x7d72('0x96'),{'UserId':Number(_0x4cdd8f['query'][_0x7d72('0x93')]),'VoiceQueueId':Number(_0x4cdd8f[_0x7d72('0x4f')]['id'])});}});}})['then'](function(_0x5880c7){return db['UserVoiceQueueRt'][_0x7d72('0x2c')]({'where':{'VoiceQueueId':_0x4cdd8f['params']['id'],'UserId':_0x4cdd8f['query']['ids']}})['then'](function(){return _0x5880c7;});})[_0x7d72('0x2b')](respondWithStatusCode(_0x5793c5,null))[_0x7d72('0x5b')](handleError(_0x5793c5,null));};exports[_0x7d72('0x9b')]=function(_0x416254,_0xee5814,_0x361170){var _0x339471={};var _0x181f93={};var _0xac6678;var _0xa74688;return db[_0x7d72('0x3a')]['findOne']({'where':{'id':_0x416254[_0x7d72('0x4f')]['id']}})[_0x7d72('0x2b')](handleEntityNotFound(_0xee5814,null))[_0x7d72('0x2b')](function(_0x329f9a){if(_0x329f9a){_0xac6678=_0x329f9a;_0x181f93['model']=_['keys'](db[_0x7d72('0x80')]['rawAttributes']);_0x181f93['query']=_[_0x7d72('0x50')](_0x416254[_0x7d72('0x3f')]);_0x181f93[_0x7d72('0x40')]=_[_0x7d72('0x41')](_0x181f93['model'],_0x181f93[_0x7d72('0x3f')]);_0x339471['attributes']=_[_0x7d72('0x41')](_0x181f93[_0x7d72('0x3e')],qs[_0x7d72('0x43')](_0x416254[_0x7d72('0x3f')][_0x7d72('0x43')]));_0x339471['attributes']=_0x339471[_0x7d72('0x42')]['length']?_0x339471[_0x7d72('0x42')]:_0x181f93[_0x7d72('0x3e')];_0x339471[_0x7d72('0x65')]=qs[_0x7d72('0x47')](_0x416254[_0x7d72('0x3f')][_0x7d72('0x47')]);_0x339471[_0x7d72('0x48')]=qs[_0x7d72('0x40')](_[_0x7d72('0x49')](_0x416254[_0x7d72('0x3f')],_0x181f93['filters']));if(_0x416254[_0x7d72('0x3f')][_0x7d72('0x2f')]){_0x339471[_0x7d72('0x48')]=_[_0x7d72('0x4a')](_0x339471[_0x7d72('0x48')],{'$or':_[_0x7d72('0x31')](_0x339471['attributes'],function(_0xc39e2c){var _0x4e0bc9={};_0x4e0bc9[_0xc39e2c]={'$like':'%'+_0x416254['query'][_0x7d72('0x2f')]+'%'};return _0x4e0bc9;})});}_0x339471=_[_0x7d72('0x4a')]({},_0x339471,_0x416254['options']);return _0xac6678[_0x7d72('0x9b')](_0x339471);}})[_0x7d72('0x2b')](function(_0x565587){if(_0x565587){_0xa74688=_0x565587[_0x7d72('0x44')];if(!_0x416254[_0x7d72('0x3f')][_0x7d72('0x45')](_0x7d72('0x46'))){_0x339471[_0x7d72('0x24')]=qs['limit'](_0x416254[_0x7d72('0x3f')]['limit']);_0x339471[_0x7d72('0x22')]=qs[_0x7d72('0x22')](_0x416254[_0x7d72('0x3f')][_0x7d72('0x22')]);}return _0xac6678['getAgents'](_0x339471);}})['then'](function(_0x2412f6){if(_0x2412f6){return _0x2412f6?{'count':_0xa74688,'rows':_0x2412f6}:null;}})[_0x7d72('0x2b')](respondWithResult(_0xee5814,null))[_0x7d72('0x5b')](handleError(_0xee5814,null));};exports[_0x7d72('0x9c')]=function(_0x5d9570,_0x1dfff1,_0x425cd1){var _0x19594e={};var _0x18ce24={};var _0x5b3eb9;var _0x4bcd80;return db[_0x7d72('0x3a')][_0x7d72('0x63')]({'where':{'id':_0x5d9570[_0x7d72('0x4f')]['id']}})[_0x7d72('0x2b')](handleEntityNotFound(_0x1dfff1,null))[_0x7d72('0x2b')](function(_0x4a85f5){if(_0x4a85f5){_0x5b3eb9=_0x4a85f5;_0x18ce24[_0x7d72('0x3e')]=_[_0x7d72('0x50')](db[_0x7d72('0x7a')][_0x7d72('0x3b')]);_0x18ce24[_0x7d72('0x3f')]=_[_0x7d72('0x50')](_0x5d9570[_0x7d72('0x3f')]);_0x18ce24[_0x7d72('0x40')]=_['intersection'](_0x18ce24[_0x7d72('0x3e')],_0x18ce24[_0x7d72('0x3f')]);_0x19594e[_0x7d72('0x42')]=_[_0x7d72('0x41')](_0x18ce24[_0x7d72('0x3e')],qs[_0x7d72('0x43')](_0x5d9570['query']['fields']));_0x19594e['attributes']=_0x19594e['attributes'][_0x7d72('0x44')]?_0x19594e[_0x7d72('0x42')]:_0x18ce24[_0x7d72('0x3e')];_0x19594e[_0x7d72('0x65')]=qs[_0x7d72('0x47')](_0x5d9570['query'][_0x7d72('0x47')]);_0x19594e['where']=qs[_0x7d72('0x40')](_[_0x7d72('0x49')](_0x5d9570['query'],_0x18ce24[_0x7d72('0x40')]));if(_0x5d9570['query']['filter']){_0x19594e[_0x7d72('0x48')]=_[_0x7d72('0x4a')](_0x19594e[_0x7d72('0x48')],{'$or':_[_0x7d72('0x31')](_0x19594e[_0x7d72('0x42')],function(_0x4e0b98){var _0xc100f5={};_0xc100f5[_0x4e0b98]={'$like':'%'+_0x5d9570[_0x7d72('0x3f')][_0x7d72('0x2f')]+'%'};return _0xc100f5;})});}_0x19594e=_[_0x7d72('0x4a')]({},_0x19594e,_0x5d9570[_0x7d72('0x51')]);return _0x5b3eb9['getMembers'](_0x19594e);}})['then'](function(_0x2977c1){if(_0x2977c1){_0x4bcd80=_0x2977c1[_0x7d72('0x44')];if(!_0x5d9570[_0x7d72('0x3f')][_0x7d72('0x45')]('nolimit')){_0x19594e[_0x7d72('0x24')]=qs[_0x7d72('0x24')](_0x5d9570['query']['limit']);_0x19594e[_0x7d72('0x22')]=qs['offset'](_0x5d9570['query'][_0x7d72('0x22')]);}return _0x5b3eb9['getMembers'](_0x19594e);}})[_0x7d72('0x2b')](function(_0x3b9425){return _0x3b9425?{'count':_0x4bcd80,'rows':_0x3b9425}:null;})['then'](respondWithResult(_0x1dfff1,null))[_0x7d72('0x5b')](handleError(_0x1dfff1,null));};exports[_0x7d72('0x9d')]=function(_0x26c6e1,_0x5085a4,_0x187d1a){var _0xc9fff4={};var _0x445bd4={};var _0x5e8301;var _0x3294b4;return db[_0x7d72('0x3a')][_0x7d72('0x63')]({'where':{'id':_0x26c6e1[_0x7d72('0x4f')]['id']}})[_0x7d72('0x2b')](handleEntityNotFound(_0x5085a4,null))[_0x7d72('0x2b')](function(_0x106fb){if(_0x106fb){_0x5e8301=_0x106fb;_0x445bd4[_0x7d72('0x3e')]=_['keys'](db[_0x7d72('0x9e')]['rawAttributes']);_0x445bd4[_0x7d72('0x3f')]=_[_0x7d72('0x50')](_0x26c6e1['query']);_0x445bd4[_0x7d72('0x40')]=_[_0x7d72('0x41')](_0x445bd4['model'],_0x445bd4[_0x7d72('0x3f')]);_0xc9fff4[_0x7d72('0x42')]=_[_0x7d72('0x41')](_0x445bd4[_0x7d72('0x3e')],qs[_0x7d72('0x43')](_0x26c6e1[_0x7d72('0x3f')][_0x7d72('0x43')]));_0xc9fff4[_0x7d72('0x42')]=_0xc9fff4[_0x7d72('0x42')][_0x7d72('0x44')]?_0xc9fff4[_0x7d72('0x42')]:_0x445bd4[_0x7d72('0x3e')];_0xc9fff4[_0x7d72('0x65')]=qs[_0x7d72('0x47')](_0x26c6e1[_0x7d72('0x3f')][_0x7d72('0x47')]);_0xc9fff4[_0x7d72('0x48')]=qs[_0x7d72('0x40')](_[_0x7d72('0x49')](_0x26c6e1['query'],_0x445bd4[_0x7d72('0x40')]));if(_0x26c6e1['query'][_0x7d72('0x2f')]){_0xc9fff4['where']=_['merge'](_0xc9fff4[_0x7d72('0x48')],{'$or':_[_0x7d72('0x31')](_0xc9fff4[_0x7d72('0x42')],function(_0x4cb2eb){var _0x26a747={};_0x26a747[_0x4cb2eb]={'$like':'%'+_0x26c6e1[_0x7d72('0x3f')]['filter']+'%'};return _0x26a747;})});}_0xc9fff4=_[_0x7d72('0x4a')]({},_0xc9fff4,_0x26c6e1[_0x7d72('0x51')]);return _0x5e8301[_0x7d72('0x9d')](_0xc9fff4);}})[_0x7d72('0x2b')](function(_0x58cbf3){if(_0x58cbf3){_0x3294b4=_0x58cbf3[_0x7d72('0x44')];if(!_0x26c6e1[_0x7d72('0x3f')][_0x7d72('0x45')](_0x7d72('0x46'))){_0xc9fff4['limit']=qs[_0x7d72('0x24')](_0x26c6e1[_0x7d72('0x3f')][_0x7d72('0x24')]);_0xc9fff4['offset']=qs['offset'](_0x26c6e1[_0x7d72('0x3f')][_0x7d72('0x22')]);}return _0x5e8301['getLists'](_0xc9fff4);}})[_0x7d72('0x2b')](function(_0x3e70dd){if(_0x3e70dd){return _0x3e70dd?{'count':_0x3294b4,'rows':_0x3e70dd}:null;}})[_0x7d72('0x2b')](respondWithResult(_0x5085a4,null))[_0x7d72('0x5b')](handleError(_0x5085a4,null));};exports['addLists']=function(_0x50cda8,_0x3e2976,_0x19c938){var _0x521f8d,_0xe7b8b2;return db['VoiceQueue']['find']({'where':{'id':_0x50cda8[_0x7d72('0x4f')]['id']}})[_0x7d72('0x2b')](handleEntityNotFound(_0x3e2976,null))[_0x7d72('0x2b')](function(_0x3ef3aa){if(_0x3ef3aa){_0xe7b8b2=_0x3ef3aa;return _0x3ef3aa['addLists'](_0x50cda8[_0x7d72('0x54')]['ids'],_['omit'](_0x50cda8['body'],[_0x7d72('0x93'),'id'])||{});}return null;})['spread'](function(_0x3c286b){var _0x480068;_0x521f8d=_0x3c286b||[];var _0x48068a=[];if(_0x3c286b){for(var _0x828c46=0x0;_0x828c46<_0x3c286b['length'];_0x828c46+=0x1){var _0x114275=_0x3c286b[_0x828c46][_0x7d72('0x56')]({'plain':!![]});_0xe7b8b2[_0x7d72('0x9f')]=_0x50cda8[_0x7d72('0x54')][_0x7d72('0x9f')]?_0x50cda8['body'][_0x7d72('0x9f')]:_0xe7b8b2[_0x7d72('0x9f')];switch(_0xe7b8b2['dialCheckDuplicateType']){case'always':_0x480068=squel[_0x7d72('0xa0')]()[_0x7d72('0xa1')](_0x7d72('0xa2'))[_0x7d72('0xa3')](['phone','scheduledAt','ContactId',_0x7d72('0xa4'),_0x7d72('0x66'),'createdAt',_0x7d72('0x60')],squel[_0x7d72('0x81')]()[_0x7d72('0x82')](_0x7d72('0xa5'),'phone')[_0x7d72('0x82')](_0x7d72('0xa6'),_0x7d72('0xa7'))[_0x7d72('0x82')]('id','ContactId')[_0x7d72('0x82')](_0x114275[_0x7d72('0xa8')][_0x7d72('0x8c')](),_0x7d72('0xa4'))[_0x7d72('0x82')](_0x50cda8[_0x7d72('0x4f')]['id']['toString'](),_0x7d72('0x66'))[_0x7d72('0x82')](_0x7d72('0xa6'),_0x7d72('0x5f'))[_0x7d72('0x82')](_0x7d72('0xa6'),_0x7d72('0x60'))['from']('cm_contacts')[_0x7d72('0x48')](_0x7d72('0xa9'))[_0x7d72('0x48')](_0x7d72('0xaa'),_0x114275[_0x7d72('0xa8')]['toString']())['where'](_0x7d72('0xab'))[_0x7d72('0x48')](_0x7d72('0xac'),squel[_0x7d72('0x81')]()[_0x7d72('0x82')](_0x7d72('0xad'))[_0x7d72('0x84')]('cm_hopper_final')['where'](_0x7d72('0x89'),_0x50cda8[_0x7d72('0x4f')]['id'][_0x7d72('0x8c')]()))[_0x7d72('0x48')](_0x7d72('0xac'),squel[_0x7d72('0x81')]()[_0x7d72('0x82')](_0x7d72('0xae'))[_0x7d72('0x84')](_0x7d72('0xa2'))[_0x7d72('0x48')](_0x7d72('0x89'),_0x50cda8[_0x7d72('0x4f')]['id'][_0x7d72('0x8c')]())))[_0x7d72('0x8c')]();break;case'onlyIfOpen':_0x480068=squel[_0x7d72('0xa0')]()['into'](_0x7d72('0xa2'))[_0x7d72('0xa3')]([_0x7d72('0xa5'),_0x7d72('0xa7'),_0x7d72('0xaf'),_0x7d72('0xa4'),_0x7d72('0x66'),_0x7d72('0x5f'),_0x7d72('0x60')],squel[_0x7d72('0x81')]()[_0x7d72('0x82')](_0x7d72('0xa5'),_0x7d72('0xa5'))[_0x7d72('0x82')]('NOW()','scheduledAt')[_0x7d72('0x82')]('id',_0x7d72('0xaf'))[_0x7d72('0x82')](_0x114275[_0x7d72('0xa8')][_0x7d72('0x8c')](),'ListId')[_0x7d72('0x82')](_0x50cda8[_0x7d72('0x4f')]['id']['toString'](),'VoiceQueueId')['field'](_0x7d72('0xa6'),_0x7d72('0x5f'))[_0x7d72('0x82')](_0x7d72('0xa6'),'updatedAt')[_0x7d72('0x84')](_0x7d72('0xb0'))[_0x7d72('0x48')](_0x7d72('0xa9'))['where'](_0x7d72('0xaa'),_0x114275[_0x7d72('0xa8')][_0x7d72('0x8c')]())['where'](_0x7d72('0xab'))[_0x7d72('0x48')](_0x7d72('0xac'),squel[_0x7d72('0x81')]()[_0x7d72('0x82')](_0x7d72('0xae'))[_0x7d72('0x84')](_0x7d72('0xa2'))[_0x7d72('0x48')](_0x7d72('0x89'),_0x50cda8[_0x7d72('0x4f')]['id'][_0x7d72('0x8c')]())))['toString']();break;default:_0x480068=squel[_0x7d72('0xa0')]()[_0x7d72('0xa1')](_0x7d72('0xa2'))[_0x7d72('0xa3')]([_0x7d72('0xa5'),_0x7d72('0xa7'),_0x7d72('0xaf'),'ListId','VoiceQueueId',_0x7d72('0x5f'),_0x7d72('0x60')],squel[_0x7d72('0x81')]()[_0x7d72('0x82')]('phone','phone')[_0x7d72('0x82')]('NOW()',_0x7d72('0xa7'))[_0x7d72('0x82')]('id','ContactId')[_0x7d72('0x82')](_0x114275['CmListId']['toString'](),_0x7d72('0xa4'))[_0x7d72('0x82')](_0x50cda8[_0x7d72('0x4f')]['id'][_0x7d72('0x8c')](),_0x7d72('0x66'))[_0x7d72('0x82')](_0x7d72('0xa6'),_0x7d72('0x5f'))['field']('NOW()','updatedAt')[_0x7d72('0x84')](_0x7d72('0xb0'))[_0x7d72('0x48')]('deletedAt\x20IS\x20NULL')[_0x7d72('0x48')]('ListId\x20=\x20?',_0x114275[_0x7d72('0xa8')][_0x7d72('0x8c')]())[_0x7d72('0x48')](_0x7d72('0xab')))[_0x7d72('0x8c')]();}_0x48068a[_0x7d72('0x8a')](db[_0x7d72('0x8b')]['query'](_0x480068));}return BPromise[_0x7d72('0x90')](_0x48068a);}})[_0x7d72('0x2b')](function(){return _0x521f8d;})[_0x7d72('0x2b')](respondWithResult(_0x3e2976,null))[_0x7d72('0x5b')](handleError(_0x3e2976,null));};exports[_0x7d72('0xb1')]=function(_0x3a25f7,_0x5e08b9,_0xcad791){return db['VoiceQueue'][_0x7d72('0x52')]({'where':{'id':_0x3a25f7[_0x7d72('0x4f')]['id']}})[_0x7d72('0x2b')](handleEntityNotFound(_0x5e08b9,null))['then'](function(_0x52b9d9){if(_0x52b9d9){return _0x52b9d9[_0x7d72('0xb1')](_0x3a25f7[_0x7d72('0x3f')][_0x7d72('0x93')]);}})[_0x7d72('0x2b')](function(_0xd2b12d){if(_0xd2b12d){return db[_0x7d72('0x64')][_0x7d72('0x2c')]({'where':{'ListId':_0x3a25f7['query'][_0x7d72('0x93')],'VoiceQueueId':_0x3a25f7[_0x7d72('0x4f')]['id']}})[_0x7d72('0x2b')](function(){return _0xd2b12d;});}})[_0x7d72('0x2b')](respondWithStatusCode(_0x5e08b9,null))[_0x7d72('0x5b')](handleError(_0x5e08b9,null));};exports[_0x7d72('0xb2')]=function(_0x415693,_0x2de216,_0x32a698){var _0x1560e2={};var _0x4168ee={};var _0x5f552e;var _0x5c494a;return db[_0x7d72('0x3a')][_0x7d72('0x63')]({'where':{'id':_0x415693[_0x7d72('0x4f')]['id']}})[_0x7d72('0x2b')](handleEntityNotFound(_0x2de216,null))['then'](function(_0x276080){if(_0x276080){_0x5f552e=_0x276080;_0x4168ee['model']=_[_0x7d72('0x50')](db[_0x7d72('0x9e')][_0x7d72('0x3b')]);_0x4168ee[_0x7d72('0x3f')]=_[_0x7d72('0x50')](_0x415693[_0x7d72('0x3f')]);_0x4168ee['filters']=_['intersection'](_0x4168ee[_0x7d72('0x3e')],_0x4168ee[_0x7d72('0x3f')]);_0x1560e2[_0x7d72('0x42')]=_[_0x7d72('0x41')](_0x4168ee[_0x7d72('0x3e')],qs['fields'](_0x415693[_0x7d72('0x3f')][_0x7d72('0x43')]));_0x1560e2[_0x7d72('0x42')]=_0x1560e2[_0x7d72('0x42')][_0x7d72('0x44')]?_0x1560e2[_0x7d72('0x42')]:_0x4168ee[_0x7d72('0x3e')];_0x1560e2[_0x7d72('0x65')]=qs[_0x7d72('0x47')](_0x415693[_0x7d72('0x3f')][_0x7d72('0x47')]);_0x1560e2[_0x7d72('0x48')]=qs[_0x7d72('0x40')](_[_0x7d72('0x49')](_0x415693[_0x7d72('0x3f')],_0x4168ee['filters']));if(_0x415693[_0x7d72('0x3f')][_0x7d72('0x2f')]){_0x1560e2[_0x7d72('0x48')]=_[_0x7d72('0x4a')](_0x1560e2[_0x7d72('0x48')],{'$or':_[_0x7d72('0x31')](_0x1560e2['attributes'],function(_0x302cb0){var _0x1d5f1e={};_0x1d5f1e[_0x302cb0]={'$like':'%'+_0x415693[_0x7d72('0x3f')]['filter']+'%'};return _0x1d5f1e;})});}_0x1560e2=_['merge']({},_0x1560e2,_0x415693[_0x7d72('0x51')]);return _0x5f552e[_0x7d72('0xb2')](_0x1560e2);}})[_0x7d72('0x2b')](function(_0x4a0338){if(_0x4a0338){_0x5c494a=_0x4a0338['length'];if(!_0x415693['query'][_0x7d72('0x45')]('nolimit')){_0x1560e2['limit']=qs[_0x7d72('0x24')](_0x415693[_0x7d72('0x3f')][_0x7d72('0x24')]);_0x1560e2[_0x7d72('0x22')]=qs[_0x7d72('0x22')](_0x415693[_0x7d72('0x3f')][_0x7d72('0x22')]);}return _0x5f552e['getBlackLists'](_0x1560e2);}})[_0x7d72('0x2b')](function(_0x46aef4){if(_0x46aef4){return _0x46aef4?{'count':_0x5c494a,'rows':_0x46aef4}:null;}})[_0x7d72('0x2b')](respondWithResult(_0x2de216,null))[_0x7d72('0x5b')](handleError(_0x2de216,null));};exports['addBlackLists']=function(_0x4242ea,_0x52fcfb,_0x4455d0){var _0x126aad,_0x3eedab;return db[_0x7d72('0x3a')][_0x7d72('0x52')]({'where':{'id':_0x4242ea[_0x7d72('0x4f')]['id']}})[_0x7d72('0x2b')](handleEntityNotFound(_0x52fcfb,null))['then'](function(_0x199d2a){if(_0x199d2a){_0x3eedab=_0x199d2a;return _0x199d2a[_0x7d72('0xb3')](_0x4242ea[_0x7d72('0x54')][_0x7d72('0x93')],_['omit'](_0x4242ea[_0x7d72('0x54')],[_0x7d72('0x93'),'id'])||{});}return null;})[_0x7d72('0x98')](function(_0x1fbe7f){var _0x41dafe;_0x126aad=_0x1fbe7f||[];var _0x24cd27=[];if(_0x1fbe7f){for(var _0x3467ce=0x0;_0x3467ce<_0x1fbe7f[_0x7d72('0x44')];_0x3467ce+=0x1){var _0x459937=_0x1fbe7f[_0x3467ce][_0x7d72('0x56')]({'plain':!![]});_0x41dafe=squel['insert']()[_0x7d72('0xa1')](_0x7d72('0xb4'))[_0x7d72('0xa3')]([_0x7d72('0xa5'),'ContactId',_0x7d72('0xa4'),_0x7d72('0x66'),'createdAt','updatedAt'],squel[_0x7d72('0x81')]()[_0x7d72('0x82')](_0x7d72('0xa5'),_0x7d72('0xa5'))[_0x7d72('0x82')]('id','ContactId')['field'](_0x459937[_0x7d72('0xa8')]['toString'](),_0x7d72('0xa4'))[_0x7d72('0x82')](_0x4242ea[_0x7d72('0x4f')]['id'][_0x7d72('0x8c')](),_0x7d72('0x66'))['field'](_0x7d72('0xa6'),_0x7d72('0x5f'))['field'](_0x7d72('0xa6'),_0x7d72('0x60'))[_0x7d72('0x84')]('cm_contacts')['where'](_0x7d72('0xa9'))['where'](_0x7d72('0xaa'),_0x459937[_0x7d72('0xa8')][_0x7d72('0x8c')]())[_0x7d72('0x48')](_0x7d72('0xab')))[_0x7d72('0x8c')]();_0x24cd27[_0x7d72('0x8a')](db[_0x7d72('0x8b')][_0x7d72('0x3f')](_0x41dafe));}return BPromise['all'](_0x24cd27);}})[_0x7d72('0x2b')](function(){return _0x126aad;})[_0x7d72('0x2b')](respondWithResult(_0x52fcfb,null))[_0x7d72('0x5b')](handleError(_0x52fcfb,null));};exports[_0x7d72('0xb5')]=function(_0x1d7762,_0x229f80,_0x163ffc){return db[_0x7d72('0x3a')][_0x7d72('0x52')]({'where':{'id':_0x1d7762['params']['id']}})[_0x7d72('0x2b')](handleEntityNotFound(_0x229f80,null))[_0x7d72('0x2b')](function(_0x16a2b0){if(_0x16a2b0){return _0x16a2b0[_0x7d72('0xb5')](_0x1d7762[_0x7d72('0x3f')][_0x7d72('0x93')]);}})[_0x7d72('0x2b')](function(_0x4e93c0){if(_0x4e93c0){return db[_0x7d72('0x6d')][_0x7d72('0x2c')]({'where':{'ListId':_0x1d7762[_0x7d72('0x3f')][_0x7d72('0x93')],'VoiceQueueId':_0x1d7762[_0x7d72('0x4f')]['id']}})['then'](function(){return _0x4e93c0;});}})[_0x7d72('0x2b')](respondWithStatusCode(_0x229f80,null))['catch'](handleError(_0x229f80,null));};
\ No newline at end of file
index 4367bc3..bce9180 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34a0=['emit','hasOwnProperty','hook','exports','VoiceQueue','setMaxListeners','save','update','remove'];(function(_0x2a4291,_0x53bdd8){var _0xf91cbe=function(_0x3e2a54){while(--_0x3e2a54){_0x2a4291['push'](_0x2a4291['shift']());}};_0xf91cbe(++_0x53bdd8);}(_0x34a0,0x151));var _0x034a=function(_0x5e32ff,_0x53d040){_0x5e32ff=_0x5e32ff-0x0;var _0x595147=_0x34a0[_0x5e32ff];return _0x595147;};'use strict';var EventEmitter=require('events');var VoiceQueue=require('../../mysqldb')['db'][_0x034a('0x0')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x034a('0x1')](0x0);var events={'afterCreate':_0x034a('0x2'),'afterUpdate':_0x034a('0x3'),'afterDestroy':_0x034a('0x4')};function emitEvent(_0x2f0f88){return function(_0x133b8f,_0x24d2ec,_0x367e01){VoiceQueueEvents[_0x034a('0x5')](_0x2f0f88+':'+_0x133b8f['id'],_0x133b8f);VoiceQueueEvents[_0x034a('0x5')](_0x2f0f88,_0x133b8f);_0x367e01(null);};}for(var e in events){if(events[_0x034a('0x6')](e)){var event=events[e];VoiceQueue[_0x034a('0x7')](e,emitEvent(event));}}module[_0x034a('0x8')]=VoiceQueueEvents;
\ No newline at end of file
+var _0x1844=['hook','exports','events','../../mysqldb','VoiceQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x3ce3c,_0x319337){var _0x55a2c9=function(_0x1568d0){while(--_0x1568d0){_0x3ce3c['push'](_0x3ce3c['shift']());}};_0x55a2c9(++_0x319337);}(_0x1844,0x178));var _0x4184=function(_0x1f453e,_0x2f2569){_0x1f453e=_0x1f453e-0x0;var _0x390021=_0x1844[_0x1f453e];return _0x390021;};'use strict';var EventEmitter=require(_0x4184('0x0'));var VoiceQueue=require(_0x4184('0x1'))['db'][_0x4184('0x2')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x4184('0x3')](0x0);var events={'afterCreate':_0x4184('0x4'),'afterUpdate':_0x4184('0x5'),'afterDestroy':_0x4184('0x6')};function emitEvent(_0x10bd02){return function(_0x1f9f9a,_0x5d9d68,_0x3500ce){VoiceQueueEvents[_0x4184('0x7')](_0x10bd02+':'+_0x1f9f9a['id'],_0x1f9f9a);VoiceQueueEvents[_0x4184('0x7')](_0x10bd02,_0x1f9f9a);_0x3500ce(null);};}for(var e in events){if(events[_0x4184('0x8')](e)){var event=events[e];VoiceQueue[_0x4184('0x9')](e,emitEvent(event));}}module[_0x4184('0xa')]=VoiceQueueEvents;
\ No newline at end of file
index 42a3516..7874cd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['request-promise','path','./voiceQueue.attributes','define','VoiceQueue','voice_queues','../../config/logger','api','moment','bluebird'];(function(_0x4dc9a7,_0xdee4bf){var _0x316023=function(_0x2a6209){while(--_0x2a6209){_0x4dc9a7['push'](_0x4dc9a7['shift']());}};_0x316023(++_0xdee4bf);}(_0x9c44,0x178));var _0x49c4=function(_0x1969a7,_0x5a133a){_0x1969a7=_0x1969a7-0x0;var _0x3d665f=_0x9c44[_0x1969a7];return _0x3d665f;};'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
+var _0x34e8=['voice_queues','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./voiceQueue.attributes','exports','VoiceQueue'];(function(_0x1e1678,_0x8f58c5){var _0x203c2c=function(_0x2eb69e){while(--_0x2eb69e){_0x1e1678['push'](_0x1e1678['shift']());}};_0x203c2c(++_0x8f58c5);}(_0x34e8,0x12c));var _0x834e=function(_0x24c38e,_0x4074a8){_0x24c38e=_0x24c38e-0x0;var _0x1d5f02=_0x34e8[_0x24c38e];return _0x1d5f02;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var logger=require(_0x834e('0x2'))(_0x834e('0x3'));var moment=require('moment');var BPromise=require(_0x834e('0x4'));var rp=require(_0x834e('0x5'));var fs=require('fs');var path=require(_0x834e('0x6'));var rimraf=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var attributes=require(_0x834e('0x9'));module[_0x834e('0xa')]=function(_0x4a2018,_0x858aa1){return _0x4a2018['define'](_0x834e('0xb'),attributes,{'tableName':_0x834e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 57f4755..e06a1e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1d1=['GetVoiceQueue','findAll','options','raw','where','attributes','limit','include','model','map','ShowVoiceQueue','VoiceQueue','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','register','request','then','info','stringify','error','code','message','VoiceQueue,\x20%s,\x20%s','request\x20sent','result','catch'];(function(_0x2a2007,_0x43332a){var _0x1be20d=function(_0x11f394){while(--_0x11f394){_0x2a2007['push'](_0x2a2007['shift']());}};_0x1be20d(++_0x43332a);}(_0xc1d1,0x14d));var _0x1c1d=function(_0x2bc66a,_0x3d75c5){_0x2bc66a=_0x2bc66a-0x0;var _0x252f76=_0xc1d1[_0x2bc66a];return _0x252f76;};'use strict';var _=require(_0x1c1d('0x0'));var util=require(_0x1c1d('0x1'));var moment=require(_0x1c1d('0x2'));var BPromise=require(_0x1c1d('0x3'));var rs=require(_0x1c1d('0x4'));var fs=require('fs');var Redis=require(_0x1c1d('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x1c1d('0x6'));var logger=require(_0x1c1d('0x7'))('rpc');var config=require(_0x1c1d('0x8'));var jayson=require(_0x1c1d('0x9'));var client=jayson[_0x1c1d('0xa')][_0x1c1d('0xb')]({'port':0x232a});config[_0x1c1d('0xc')]=_[_0x1c1d('0xd')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x1c1d('0xe'))(new Redis(config['redis']));require('./voiceQueue.socket')[_0x1c1d('0xf')](socket);function respondWithRpcPromise(_0x1bbbe4,_0x28682c,_0x365ed2){return new BPromise(function(_0x5e8d94,_0x3d152f){return client[_0x1c1d('0x10')](_0x1bbbe4,_0x365ed2)[_0x1c1d('0x11')](function(_0xa7af2d){logger[_0x1c1d('0x12')]('VoiceQueue,\x20%s,\x20%s',_0x28682c,'request\x20sent');logger['debug']('VoiceQueue,\x20%s,\x20%s,\x20%s',_0x28682c,'request\x20sent',JSON[_0x1c1d('0x13')](_0xa7af2d));if(_0xa7af2d[_0x1c1d('0x14')]){if(_0xa7af2d[_0x1c1d('0x14')][_0x1c1d('0x15')]===0x1f4){logger[_0x1c1d('0x14')]('VoiceQueue,\x20%s,\x20%s',_0x28682c,_0xa7af2d['error'][_0x1c1d('0x16')]);return _0x3d152f(_0xa7af2d[_0x1c1d('0x14')][_0x1c1d('0x16')]);}logger[_0x1c1d('0x14')](_0x1c1d('0x17'),_0x28682c,_0xa7af2d[_0x1c1d('0x14')][_0x1c1d('0x16')]);return _0x5e8d94(_0xa7af2d[_0x1c1d('0x14')][_0x1c1d('0x16')]);}else{logger[_0x1c1d('0x12')](_0x1c1d('0x17'),_0x28682c,_0x1c1d('0x18'));_0x5e8d94(_0xa7af2d[_0x1c1d('0x19')][_0x1c1d('0x16')]);}})[_0x1c1d('0x1a')](function(_0x50e8da){logger[_0x1c1d('0x14')](_0x1c1d('0x17'),_0x28682c,_0x50e8da);_0x3d152f(_0x50e8da);});});}exports[_0x1c1d('0x1b')]=function(_0x166510){var _0x28926f=this;return new Promise(function(_0x22e318,_0x3a22e8){return db['VoiceQueue'][_0x1c1d('0x1c')]({'raw':_0x166510[_0x1c1d('0x1d')]?_0x166510[_0x1c1d('0x1d')][_0x1c1d('0x1e')]===undefined?!![]:![]:!![],'where':_0x166510[_0x1c1d('0x1d')]?_0x166510[_0x1c1d('0x1d')][_0x1c1d('0x1f')]||null:null,'attributes':_0x166510[_0x1c1d('0x1d')]?_0x166510[_0x1c1d('0x1d')][_0x1c1d('0x20')]||null:null,'limit':_0x166510['options']?_0x166510[_0x1c1d('0x1d')][_0x1c1d('0x21')]||null:null,'include':_0x166510[_0x1c1d('0x1d')]?_0x166510[_0x1c1d('0x1d')][_0x1c1d('0x22')]?_['map'](_0x166510['options'][_0x1c1d('0x22')],function(_0x132b25){return{'model':db[_0x132b25[_0x1c1d('0x23')]],'as':_0x132b25['as'],'attributes':_0x132b25[_0x1c1d('0x20')],'include':_0x132b25[_0x1c1d('0x22')]?_[_0x1c1d('0x24')](_0x132b25[_0x1c1d('0x22')],function(_0x2f6ff3){return{'model':db[_0x2f6ff3[_0x1c1d('0x23')]],'as':_0x2f6ff3['as'],'attributes':_0x2f6ff3[_0x1c1d('0x20')],'include':_0x2f6ff3[_0x1c1d('0x22')]?_[_0x1c1d('0x24')](_0x2f6ff3['include'],function(_0x5c526){return{'model':db[_0x5c526[_0x1c1d('0x23')]],'as':_0x5c526['as'],'attributes':_0x5c526['attributes']};}):[]};}):[]};}):[]:[]})[_0x1c1d('0x11')](function(_0x3eeb04){logger[_0x1c1d('0x12')]('GetVoiceQueue',_0x166510);logger['debug'](_0x1c1d('0x1b'),_0x166510,JSON[_0x1c1d('0x13')](_0x3eeb04));_0x22e318(_0x3eeb04);})[_0x1c1d('0x1a')](function(_0x47c96e){logger[_0x1c1d('0x14')](_0x1c1d('0x1b'),_0x47c96e[_0x1c1d('0x16')],_0x166510);_0x3a22e8(_0x28926f[_0x1c1d('0x14')](0x1f4,_0x47c96e[_0x1c1d('0x16')]));});});};exports[_0x1c1d('0x25')]=function(_0x5a963d){var _0x40e0d4=this;return new Promise(function(_0x3410b9,_0x50d281){return db[_0x1c1d('0x26')]['find']({'raw':_0x5a963d['options']?_0x5a963d['options'][_0x1c1d('0x1e')]===undefined?!![]:![]:!![],'where':_0x5a963d[_0x1c1d('0x1d')]?_0x5a963d[_0x1c1d('0x1d')]['where']||null:null,'attributes':_0x5a963d[_0x1c1d('0x1d')]?_0x5a963d[_0x1c1d('0x1d')][_0x1c1d('0x20')]||null:null,'include':_0x5a963d[_0x1c1d('0x1d')]?_0x5a963d[_0x1c1d('0x1d')]['include']?_['map'](_0x5a963d['options']['include'],function(_0x384fa5){return{'model':db[_0x384fa5[_0x1c1d('0x23')]],'as':_0x384fa5['as'],'attributes':_0x384fa5[_0x1c1d('0x20')],'include':_0x384fa5[_0x1c1d('0x22')]?_[_0x1c1d('0x24')](_0x384fa5[_0x1c1d('0x22')],function(_0x2da0ee){return{'model':db[_0x2da0ee[_0x1c1d('0x23')]],'as':_0x2da0ee['as'],'attributes':_0x2da0ee['attributes'],'include':_0x2da0ee[_0x1c1d('0x22')]?_['map'](_0x2da0ee[_0x1c1d('0x22')],function(_0x5f0938){return{'model':db[_0x5f0938[_0x1c1d('0x23')]],'as':_0x5f0938['as'],'attributes':_0x5f0938[_0x1c1d('0x20')]};}):[]};}):[]};}):[]:[]})[_0x1c1d('0x11')](function(_0x7b2e31){logger[_0x1c1d('0x12')]('ShowVoiceQueue',_0x5a963d);logger[_0x1c1d('0x27')](_0x1c1d('0x25'),_0x5a963d,JSON['stringify'](_0x7b2e31));_0x3410b9(_0x7b2e31);})['catch'](function(_0x2b4458){logger[_0x1c1d('0x14')](_0x1c1d('0x25'),_0x2b4458[_0x1c1d('0x16')],_0x5a963d);_0x50d281(_0x40e0d4[_0x1c1d('0x14')](0x1f4,_0x2b4458[_0x1c1d('0x16')]));});});};
\ No newline at end of file
+var _0x4ffa=['ShowVoiceQueue','find','raw','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','then','info','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','VoiceQueue,\x20%s,\x20%s','result','catch','VoiceQueue','findAll','options','where','limit','include','model','map','attributes','GetVoiceQueue'];(function(_0xa143ba,_0x43505e){var _0x1ce0ac=function(_0x12d44b){while(--_0x12d44b){_0xa143ba['push'](_0xa143ba['shift']());}};_0x1ce0ac(++_0x43505e);}(_0x4ffa,0x7e));var _0xa4ff=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x4ffa[_0x46e363];return _0x3fb059;};'use strict';var _=require(_0xa4ff('0x0'));var util=require('util');var moment=require(_0xa4ff('0x1'));var BPromise=require(_0xa4ff('0x2'));var rs=require(_0xa4ff('0x3'));var fs=require('fs');var Redis=require(_0xa4ff('0x4'));var db=require(_0xa4ff('0x5'))['db'];var utils=require(_0xa4ff('0x6'));var logger=require(_0xa4ff('0x7'))('rpc');var config=require(_0xa4ff('0x8'));var jayson=require(_0xa4ff('0x9'));var client=jayson[_0xa4ff('0xa')][_0xa4ff('0xb')]({'port':0x232a});config[_0xa4ff('0xc')]=_['defaults'](config[_0xa4ff('0xc')],{'host':_0xa4ff('0xd'),'port':0x18eb});var socket=require(_0xa4ff('0xe'))(new Redis(config[_0xa4ff('0xc')]));require('./voiceQueue.socket')[_0xa4ff('0xf')](socket);function respondWithRpcPromise(_0x2f08f9,_0x7b8cf1,_0x3536f3){return new BPromise(function(_0x3ad500,_0x49b312){return client['request'](_0x2f08f9,_0x3536f3)[_0xa4ff('0x10')](function(_0xb9b289){logger[_0xa4ff('0x11')]('VoiceQueue,\x20%s,\x20%s',_0x7b8cf1,_0xa4ff('0x12'));logger[_0xa4ff('0x13')](_0xa4ff('0x14'),_0x7b8cf1,'request\x20sent',JSON[_0xa4ff('0x15')](_0xb9b289));if(_0xb9b289[_0xa4ff('0x16')]){if(_0xb9b289[_0xa4ff('0x16')][_0xa4ff('0x17')]===0x1f4){logger['error']('VoiceQueue,\x20%s,\x20%s',_0x7b8cf1,_0xb9b289[_0xa4ff('0x16')]['message']);return _0x49b312(_0xb9b289[_0xa4ff('0x16')][_0xa4ff('0x18')]);}logger[_0xa4ff('0x16')]('VoiceQueue,\x20%s,\x20%s',_0x7b8cf1,_0xb9b289['error'][_0xa4ff('0x18')]);return _0x3ad500(_0xb9b289['error'][_0xa4ff('0x18')]);}else{logger[_0xa4ff('0x11')](_0xa4ff('0x19'),_0x7b8cf1,'request\x20sent');_0x3ad500(_0xb9b289[_0xa4ff('0x1a')][_0xa4ff('0x18')]);}})[_0xa4ff('0x1b')](function(_0x21006a){logger[_0xa4ff('0x16')]('VoiceQueue,\x20%s,\x20%s',_0x7b8cf1,_0x21006a);_0x49b312(_0x21006a);});});}exports['GetVoiceQueue']=function(_0x3340d5){var _0x10c98a=this;return new Promise(function(_0x33b7ee,_0x584eef){return db[_0xa4ff('0x1c')][_0xa4ff('0x1d')]({'raw':_0x3340d5[_0xa4ff('0x1e')]?_0x3340d5[_0xa4ff('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x3340d5[_0xa4ff('0x1e')]?_0x3340d5[_0xa4ff('0x1e')][_0xa4ff('0x1f')]||null:null,'attributes':_0x3340d5['options']?_0x3340d5[_0xa4ff('0x1e')]['attributes']||null:null,'limit':_0x3340d5[_0xa4ff('0x1e')]?_0x3340d5[_0xa4ff('0x1e')][_0xa4ff('0x20')]||null:null,'include':_0x3340d5[_0xa4ff('0x1e')]?_0x3340d5['options'][_0xa4ff('0x21')]?_['map'](_0x3340d5[_0xa4ff('0x1e')][_0xa4ff('0x21')],function(_0x54de14){return{'model':db[_0x54de14[_0xa4ff('0x22')]],'as':_0x54de14['as'],'attributes':_0x54de14['attributes'],'include':_0x54de14[_0xa4ff('0x21')]?_[_0xa4ff('0x23')](_0x54de14[_0xa4ff('0x21')],function(_0x5d1167){return{'model':db[_0x5d1167[_0xa4ff('0x22')]],'as':_0x5d1167['as'],'attributes':_0x5d1167[_0xa4ff('0x24')],'include':_0x5d1167[_0xa4ff('0x21')]?_[_0xa4ff('0x23')](_0x5d1167[_0xa4ff('0x21')],function(_0x2cd820){return{'model':db[_0x2cd820['model']],'as':_0x2cd820['as'],'attributes':_0x2cd820[_0xa4ff('0x24')]};}):[]};}):[]};}):[]:[]})[_0xa4ff('0x10')](function(_0x367fcc){logger['info'](_0xa4ff('0x25'),_0x3340d5);logger[_0xa4ff('0x13')](_0xa4ff('0x25'),_0x3340d5,JSON[_0xa4ff('0x15')](_0x367fcc));_0x33b7ee(_0x367fcc);})['catch'](function(_0x275127){logger[_0xa4ff('0x16')]('GetVoiceQueue',_0x275127['message'],_0x3340d5);_0x584eef(_0x10c98a[_0xa4ff('0x16')](0x1f4,_0x275127[_0xa4ff('0x18')]));});});};exports[_0xa4ff('0x26')]=function(_0x314a1c){var _0x565f25=this;return new Promise(function(_0x1c0c63,_0x2b6554){return db[_0xa4ff('0x1c')][_0xa4ff('0x27')]({'raw':_0x314a1c[_0xa4ff('0x1e')]?_0x314a1c['options'][_0xa4ff('0x28')]===undefined?!![]:![]:!![],'where':_0x314a1c[_0xa4ff('0x1e')]?_0x314a1c[_0xa4ff('0x1e')][_0xa4ff('0x1f')]||null:null,'attributes':_0x314a1c[_0xa4ff('0x1e')]?_0x314a1c['options']['attributes']||null:null,'include':_0x314a1c[_0xa4ff('0x1e')]?_0x314a1c[_0xa4ff('0x1e')][_0xa4ff('0x21')]?_[_0xa4ff('0x23')](_0x314a1c['options'][_0xa4ff('0x21')],function(_0x194d9e){return{'model':db[_0x194d9e['model']],'as':_0x194d9e['as'],'attributes':_0x194d9e[_0xa4ff('0x24')],'include':_0x194d9e[_0xa4ff('0x21')]?_['map'](_0x194d9e[_0xa4ff('0x21')],function(_0x5d2e02){return{'model':db[_0x5d2e02['model']],'as':_0x5d2e02['as'],'attributes':_0x5d2e02[_0xa4ff('0x24')],'include':_0x5d2e02[_0xa4ff('0x21')]?_[_0xa4ff('0x23')](_0x5d2e02['include'],function(_0x5df885){return{'model':db[_0x5df885[_0xa4ff('0x22')]],'as':_0x5df885['as'],'attributes':_0x5df885[_0xa4ff('0x24')]};}):[]};}):[]};}):[]:[]})[_0xa4ff('0x10')](function(_0x55b5b6){logger[_0xa4ff('0x11')](_0xa4ff('0x26'),_0x314a1c);logger['debug'](_0xa4ff('0x26'),_0x314a1c,JSON[_0xa4ff('0x15')](_0x55b5b6));_0x1c0c63(_0x55b5b6);})['catch'](function(_0x20323d){logger[_0xa4ff('0x16')](_0xa4ff('0x26'),_0x20323d[_0xa4ff('0x18')],_0x314a1c);_0x2b6554(_0x565f25[_0xa4ff('0x16')](0x1f4,_0x20323d[_0xa4ff('0x18')]));});});};
\ No newline at end of file
index dcfe290..443451f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0ad=['register','./voiceQueue.events','save','remove','update','emit','removeListener'];(function(_0x559a56,_0x393c90){var _0x331669=function(_0x5d23ff){while(--_0x5d23ff){_0x559a56['push'](_0x559a56['shift']());}};_0x331669(++_0x393c90);}(_0xe0ad,0x12e));var _0xde0a=function(_0x384bc2,_0x59639d){_0x384bc2=_0x384bc2-0x0;var _0x2cd106=_0xe0ad[_0x384bc2];return _0x2cd106;};'use strict';var VoiceQueueEvents=require(_0xde0a('0x0'));var events=[_0xde0a('0x1'),_0xde0a('0x2'),_0xde0a('0x3')];function createListener(_0x3b18f6,_0x540907){return function(_0x3e5f38){_0x540907[_0xde0a('0x4')](_0x3b18f6,_0x3e5f38);};}function removeListener(_0x14139d,_0x2bcc95){return function(){VoiceQueueEvents[_0xde0a('0x5')](_0x14139d,_0x2bcc95);};}exports[_0xde0a('0x6')]=function(_0xb9635f){for(var _0x425784=0x0,_0x5e457b=events['length'];_0x425784<_0x5e457b;_0x425784++){var _0x50eb82=events[_0x425784];var _0x2f553b=createListener('voiceQueue:'+_0x50eb82,_0xb9635f);VoiceQueueEvents['on'](_0x50eb82,_0x2f553b);}};
\ No newline at end of file
+var _0xd04b=['removeListener','register','length','voiceQueue:','save','remove','update','emit'];(function(_0x42a0f9,_0x34d305){var _0x355739=function(_0x1166e3){while(--_0x1166e3){_0x42a0f9['push'](_0x42a0f9['shift']());}};_0x355739(++_0x34d305);}(_0xd04b,0x154));var _0xbd04=function(_0xb2c5e3,_0x3ae5df){_0xb2c5e3=_0xb2c5e3-0x0;var _0x1fc16d=_0xd04b[_0xb2c5e3];return _0x1fc16d;};'use strict';var VoiceQueueEvents=require('./voiceQueue.events');var events=[_0xbd04('0x0'),_0xbd04('0x1'),_0xbd04('0x2')];function createListener(_0x1c4000,_0xe6efc7){return function(_0x1816ff){_0xe6efc7[_0xbd04('0x3')](_0x1c4000,_0x1816ff);};}function removeListener(_0x2e6631,_0x15a3e9){return function(){VoiceQueueEvents[_0xbd04('0x4')](_0x2e6631,_0x15a3e9);};}exports[_0xbd04('0x5')]=function(_0x476bbc){for(var _0x8e7a15=0x0,_0x54ec24=events[_0xbd04('0x6')];_0x8e7a15<_0x54ec24;_0x8e7a15++){var _0x1b50bb=events[_0x8e7a15];var _0x322c7b=createListener(_0xbd04('0x7')+_0x1b50bb,_0x476bbc);VoiceQueueEvents['on'](_0x1b50bb,_0x322c7b);}};
\ No newline at end of file
index 4c75607..91b6a94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c92=['fs-extra','../../components/auth/service','../../config/environment','./voiceQueueReport.controller','get','isAuthenticated','index','/describe','describe','/index','getVoiceQueuesReport','post','create','/:id','update','delete','destroy','exports','util','path','connect-timeout','Router'];(function(_0x5e13af,_0x5461e0){var _0x3dbfa0=function(_0x44c302){while(--_0x44c302){_0x5e13af['push'](_0x5e13af['shift']());}};_0x3dbfa0(++_0x5461e0);}(_0x8c92,0x6a));var _0x28c9=function(_0x31ca49,_0x5e6186){_0x31ca49=_0x31ca49-0x0;var _0x59548b=_0x8c92[_0x31ca49];return _0x59548b;};'use strict';var multer=require('multer');var util=require(_0x28c9('0x0'));var path=require(_0x28c9('0x1'));var timeout=require(_0x28c9('0x2'));var express=require('express');var router=express[_0x28c9('0x3')]();var fs_extra=require(_0x28c9('0x4'));var auth=require(_0x28c9('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x28c9('0x6'));var controller=require(_0x28c9('0x7'));router[_0x28c9('0x8')]('/',auth[_0x28c9('0x9')](),controller[_0x28c9('0xa')]);router[_0x28c9('0x8')](_0x28c9('0xb'),auth['isAuthenticated'](),controller[_0x28c9('0xc')]);router[_0x28c9('0x8')](_0x28c9('0xd'),auth['isAuthenticated'](),controller[_0x28c9('0xe')]);router[_0x28c9('0x8')]('/:id',auth[_0x28c9('0x9')](),controller['show']);router[_0x28c9('0xf')]('/',auth[_0x28c9('0x9')](),controller[_0x28c9('0x10')]);router['put'](_0x28c9('0x11'),auth[_0x28c9('0x9')](),controller[_0x28c9('0x12')]);router[_0x28c9('0x13')](_0x28c9('0x11'),auth[_0x28c9('0x9')](),controller[_0x28c9('0x14')]);module[_0x28c9('0x15')]=router;
\ No newline at end of file
+var _0x8a77=['multer','util','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller','isAuthenticated','index','get','/describe','describe','/index','getVoiceQueuesReport','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x8a77,0xa8));var _0x78a7=function(_0xbc56a3,_0x326af7){_0xbc56a3=_0xbc56a3-0x0;var _0x1cec75=_0x8a77[_0xbc56a3];return _0x1cec75;};'use strict';var multer=require(_0x78a7('0x0'));var util=require(_0x78a7('0x1'));var path=require('path');var timeout=require(_0x78a7('0x2'));var express=require(_0x78a7('0x3'));var router=express[_0x78a7('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x78a7('0x5'));var config=require(_0x78a7('0x6'));var controller=require(_0x78a7('0x7'));router['get']('/',auth[_0x78a7('0x8')](),controller[_0x78a7('0x9')]);router[_0x78a7('0xa')](_0x78a7('0xb'),auth[_0x78a7('0x8')](),controller[_0x78a7('0xc')]);router[_0x78a7('0xa')](_0x78a7('0xd'),auth[_0x78a7('0x8')](),controller[_0x78a7('0xe')]);router[_0x78a7('0xa')](_0x78a7('0xf'),auth[_0x78a7('0x8')](),controller[_0x78a7('0x10')]);router[_0x78a7('0x11')]('/',auth[_0x78a7('0x8')](),controller[_0x78a7('0x12')]);router[_0x78a7('0x13')](_0x78a7('0xf'),auth[_0x78a7('0x8')](),controller[_0x78a7('0x14')]);router[_0x78a7('0x15')]('/:id',auth[_0x78a7('0x8')](),controller[_0x78a7('0x16')]);module[_0x78a7('0x17')]=router;
\ No newline at end of file
index 78b4566..ba9b546 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55e5=['queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','seconds','setDataValue','holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment','exports','STRING','DATE'];(function(_0x5baa24,_0x19fdfd){var _0x1216e0=function(_0x373cbd){while(--_0x373cbd){_0x5baa24['push'](_0x5baa24['shift']());}};_0x1216e0(++_0x19fdfd);}(_0x55e5,0xe9));var _0x555e=function(_0xc537ae,_0x129a0b){_0xc537ae=_0xc537ae-0x0;var _0x3162e4=_0x55e5[_0xc537ae];return _0x3162e4;};'use strict';var Sequelize=require(_0x555e('0x0'));var moment=require(_0x555e('0x1'));module[_0x555e('0x2')]={'type':{'type':Sequelize[_0x555e('0x3')]},'uniqueid':{'type':Sequelize[_0x555e('0x3')]},'calleridnum':{'type':Sequelize[_0x555e('0x3')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x555e('0x3')]},'queuecallerjoinAt':{'type':Sequelize[_0x555e('0x4')]},'queuecallerleaveAt':{'type':Sequelize[_0x555e('0x4')],'set':function(_0x4009ee){var _0x2e9c7f=moment(_0x4009ee);var _0x25c0bd=moment(this['getDataValue'](_0x555e('0x5')))['format'](_0x555e('0x6'));var _0xf250de=_0x2e9c7f['diff'](_0x25c0bd,_0x555e('0x7'));this[_0x555e('0x8')]('queuecallerleaveAt',_0x4009ee);this['setDataValue'](_0x555e('0x9'),_0xf250de||null);}},'position':{'type':Sequelize[_0x555e('0xa')]},'count':{'type':Sequelize[_0x555e('0xa')]},'queuecallerabandon':{'type':Sequelize[_0x555e('0xb')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x555e('0x4')]},'queuecallercomplete':{'type':Sequelize[_0x555e('0xb')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x555e('0x4')]},'queuecallerexit':{'type':Sequelize[_0x555e('0xb')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x555e('0x4')]},'queuecallerexitreason':{'type':Sequelize['STRING'],'comment':_0x555e('0xc')},'originalposition':{'type':Sequelize[_0x555e('0xa')]},'channel':{'type':Sequelize[_0x555e('0x3')]},'connectedlinenum':{'type':Sequelize[_0x555e('0x3')]},'connectedlinename':{'type':Sequelize[_0x555e('0x3')]},'accountcode':{'type':Sequelize[_0x555e('0x3')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x555e('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0x555e('0xa')],'defaultValue':0x0},'assigned':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0x555e('0xd')},'transferexten':{'type':Sequelize[_0x555e('0x3')]},'transferuniqueid':{'type':Sequelize[_0x555e('0x3')]},'disposition':{'type':Sequelize[_0x555e('0x3')]},'secondDisposition':{'type':Sequelize[_0x555e('0x3')]},'thirdDisposition':{'type':Sequelize[_0x555e('0x3')]},'queuecallerenterreason':{'type':Sequelize[_0x555e('0xa')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa8e3=['sequelize','moment','STRING','DATE','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','seconds','queuecallerleaveAt','INTEGER','BOOLEAN'];(function(_0x5aec97,_0x24ea35){var _0x380238=function(_0x5a4c1f){while(--_0x5a4c1f){_0x5aec97['push'](_0x5aec97['shift']());}};_0x380238(++_0x24ea35);}(_0xa8e3,0x1cc));var _0x3a8e=function(_0x12d951,_0x249808){_0x12d951=_0x12d951-0x0;var _0x44de17=_0xa8e3[_0x12d951];return _0x44de17;};'use strict';var Sequelize=require(_0x3a8e('0x0'));var moment=require(_0x3a8e('0x1'));module['exports']={'type':{'type':Sequelize[_0x3a8e('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x3a8e('0x2')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize[_0x3a8e('0x3')]},'queuecallerleaveAt':{'type':Sequelize['DATE'],'set':function(_0x63045d){var _0x59486f=moment(_0x63045d);var _0x1f1e95=moment(this['getDataValue'](_0x3a8e('0x4')))['format'](_0x3a8e('0x5'));var _0x12ca4b=_0x59486f['diff'](_0x1f1e95,_0x3a8e('0x6'));this['setDataValue'](_0x3a8e('0x7'),_0x63045d);this['setDataValue']('holdtime',_0x12ca4b||null);}},'position':{'type':Sequelize[_0x3a8e('0x8')]},'count':{'type':Sequelize[_0x3a8e('0x8')]},'queuecallerabandon':{'type':Sequelize[_0x3a8e('0x9')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize['DATE']},'queuecallercomplete':{'type':Sequelize[_0x3a8e('0x9')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x3a8e('0x3')]},'queuecallerexit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x3a8e('0x3')]},'queuecallerexitreason':{'type':Sequelize[_0x3a8e('0x2')],'comment':'COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT'},'originalposition':{'type':Sequelize[_0x3a8e('0x8')]},'channel':{'type':Sequelize[_0x3a8e('0x2')]},'connectedlinenum':{'type':Sequelize[_0x3a8e('0x2')]},'connectedlinename':{'type':Sequelize[_0x3a8e('0x2')]},'accountcode':{'type':Sequelize[_0x3a8e('0x2')]},'context':{'type':Sequelize[_0x3a8e('0x2')]},'exten':{'type':Sequelize[_0x3a8e('0x2')]},'priority':{'type':Sequelize[_0x3a8e('0x2')]},'holdtime':{'type':Sequelize[_0x3a8e('0x8')]},'mohtime':{'type':Sequelize[_0x3a8e('0x8')],'defaultValue':0x0},'assigned':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x3a8e('0x2')]},'transfer':{'type':Sequelize[_0x3a8e('0x9')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize[_0x3a8e('0x2')]},'transferuniqueid':{'type':Sequelize[_0x3a8e('0x2')]},'disposition':{'type':Sequelize[_0x3a8e('0x2')]},'secondDisposition':{'type':Sequelize[_0x3a8e('0x2')]},'thirdDisposition':{'type':Sequelize[_0x3a8e('0x2')]},'queuecallerenterreason':{'type':Sequelize[_0x3a8e('0x8')],'defaultValue':0x0}};
\ No newline at end of file
index ca871c5..3e8171e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaff8=['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','defaults','localhost','socket.io-emitter','redis','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','rawAttributes','type','key','map','query','keys','filters','intersection','model','attributes','fields','nolimit','order','sort','where','pick','merge','VIRTUAL','VoiceQueueReport','includeAll','findAll','rows','catch','params','length','options','find','create','body','describe','getVoiceQueuesReport','hasOwnProperty','filter','include','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs'];(function(_0x255ac0,_0x3f6645){var _0x437bf1=function(_0x5baff0){while(--_0x5baff0){_0x255ac0['push'](_0x255ac0['shift']());}};_0x437bf1(++_0x3f6645);}(_0xaff8,0xa2));var _0x8aff=function(_0x11ced7,_0x29a8b0){_0x11ced7=_0x11ced7-0x0;var _0x4bed14=_0xaff8[_0x11ced7];return _0x4bed14;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8aff('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8aff('0x1'));var rp=require(_0x8aff('0x2'));var moment=require(_0x8aff('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x8aff('0x4'));var util=require(_0x8aff('0x5'));var path=require(_0x8aff('0x6'));var sox=require(_0x8aff('0x7'));var csv=require(_0x8aff('0x8'));var ejs=require(_0x8aff('0x9'));var fs=require('fs');var fs_extra=require(_0x8aff('0xa'));var _=require(_0x8aff('0xb'));var squel=require(_0x8aff('0xc'));var crypto=require(_0x8aff('0xd'));var jsforce=require(_0x8aff('0xe'));var deskjs=require(_0x8aff('0xf'));var toCsv=require(_0x8aff('0x8'));var querystring=require('querystring');var Papa=require(_0x8aff('0x10'));var Redis=require(_0x8aff('0x11'));var authService=require(_0x8aff('0x12'));var qs=require(_0x8aff('0x13'));var as=require(_0x8aff('0x14'));var hardwareService=require(_0x8aff('0x15'));var logger=require(_0x8aff('0x16'))(_0x8aff('0x17'));var utils=require(_0x8aff('0x18'));var config=require(_0x8aff('0x19'));var licenseUtil=require(_0x8aff('0x1a'));var db=require(_0x8aff('0x1b'))['db'];config['redis']=_[_0x8aff('0x1c')](config['redis'],{'host':_0x8aff('0x1d'),'port':0x18eb});var socket=require(_0x8aff('0x1e'))(new Redis(config[_0x8aff('0x1f')]));require('./voiceQueueReport.socket')['register'](socket);function respondWithStatusCode(_0x1cea29,_0x562143){_0x562143=_0x562143||0xcc;return function(_0x501a85){if(_0x501a85){return _0x1cea29[_0x8aff('0x20')](_0x562143);}return _0x1cea29[_0x8aff('0x21')](_0x562143)[_0x8aff('0x22')]();};}function respondWithResult(_0x3b75e7,_0xae6e19){_0xae6e19=_0xae6e19||0xc8;return function(_0x30265d){if(_0x30265d){return _0x3b75e7[_0x8aff('0x21')](_0xae6e19)[_0x8aff('0x23')](_0x30265d);}};}function respondWithFilteredResult(_0x336c42,_0x13e019){return function(_0x3097c5){if(_0x3097c5){var _0x2457f7=typeof _0x13e019[_0x8aff('0x24')]===_0x8aff('0x25')&&typeof _0x13e019[_0x8aff('0x26')]===_0x8aff('0x25');var _0x4c13d9=_0x3097c5[_0x8aff('0x27')];var _0x231f48=_0x2457f7?0x0:_0x13e019[_0x8aff('0x24')];var _0x479dd8=_0x2457f7?_0x3097c5[_0x8aff('0x27')]:_0x13e019[_0x8aff('0x24')]+_0x13e019[_0x8aff('0x26')];var _0x13be93;if(_0x479dd8>=_0x4c13d9){_0x479dd8=_0x4c13d9;_0x13be93=0xc8;}else{_0x13be93=0xce;}_0x336c42[_0x8aff('0x21')](_0x13be93);return _0x336c42[_0x8aff('0x28')](_0x8aff('0x29'),_0x231f48+'-'+_0x479dd8+'/'+_0x4c13d9)[_0x8aff('0x23')](_0x3097c5);}return null;};}function patchUpdates(_0x388963){return function(_0xc18c74){try{jsonpatch[_0x8aff('0x2a')](_0xc18c74,_0x388963,!![]);}catch(_0x300437){return BPromise[_0x8aff('0x2b')](_0x300437);}return _0xc18c74[_0x8aff('0x2c')]();};}function saveUpdates(_0x7148ce,_0x12d30d){return function(_0x204750){if(_0x204750){return _0x204750[_0x8aff('0x2d')](_0x7148ce)[_0x8aff('0x2e')](function(_0x3db9b9){return _0x3db9b9;});}return null;};}function removeEntity(_0x11bf5c,_0x5013d7){return function(_0x427089){if(_0x427089){return _0x427089[_0x8aff('0x2f')]()[_0x8aff('0x2e')](function(){_0x11bf5c[_0x8aff('0x21')](0xcc)[_0x8aff('0x22')]();});}};}function handleEntityNotFound(_0x1983be,_0x47c733){return function(_0x1f1c53){if(!_0x1f1c53){_0x1983be['sendStatus'](0x194);}return _0x1f1c53;};}function handleError(_0x1ffe25,_0x4ecfaa){_0x4ecfaa=_0x4ecfaa||0x1f4;return function(_0x856f6e){logger[_0x8aff('0x30')](_0x856f6e['stack']);if(_0x856f6e[_0x8aff('0x31')]){delete _0x856f6e[_0x8aff('0x31')];}_0x1ffe25['status'](_0x4ecfaa)[_0x8aff('0x32')](_0x856f6e);};}exports[_0x8aff('0x33')]=function(_0x54e8e6,_0x27b965){var _0x42f670={},_0xe4286e={},_0x49f6e4={'count':0x0,'rows':[]};var _0x494b32=_['map'](db['VoiceQueueReport'][_0x8aff('0x34')],function(_0x253878){return{'name':_0x253878['fieldName'],'type':_0x253878[_0x8aff('0x35')][_0x8aff('0x36')]};});_0xe4286e['model']=_[_0x8aff('0x37')](_0x494b32,_0x8aff('0x31'));_0xe4286e[_0x8aff('0x38')]=_[_0x8aff('0x39')](_0x54e8e6[_0x8aff('0x38')]);_0xe4286e[_0x8aff('0x3a')]=_[_0x8aff('0x3b')](_0xe4286e[_0x8aff('0x3c')],_0xe4286e[_0x8aff('0x38')]);_0x42f670[_0x8aff('0x3d')]=_[_0x8aff('0x3b')](_0xe4286e[_0x8aff('0x3c')],qs[_0x8aff('0x3e')](_0x54e8e6[_0x8aff('0x38')][_0x8aff('0x3e')]));_0x42f670[_0x8aff('0x3d')]=_0x42f670['attributes']['length']?_0x42f670[_0x8aff('0x3d')]:_0xe4286e[_0x8aff('0x3c')];if(!_0x54e8e6[_0x8aff('0x38')]['hasOwnProperty'](_0x8aff('0x3f'))){_0x42f670[_0x8aff('0x26')]=qs['limit'](_0x54e8e6[_0x8aff('0x38')][_0x8aff('0x26')]);_0x42f670[_0x8aff('0x24')]=qs[_0x8aff('0x24')](_0x54e8e6[_0x8aff('0x38')][_0x8aff('0x24')]);}_0x42f670[_0x8aff('0x40')]=qs[_0x8aff('0x41')](_0x54e8e6[_0x8aff('0x38')][_0x8aff('0x41')]);_0x42f670[_0x8aff('0x42')]=qs[_0x8aff('0x3a')](_[_0x8aff('0x43')](_0x54e8e6[_0x8aff('0x38')],_0xe4286e[_0x8aff('0x3a')]),_0x494b32);if(_0x54e8e6[_0x8aff('0x38')]['filter']){_0x42f670[_0x8aff('0x42')]=_[_0x8aff('0x44')](_0x42f670[_0x8aff('0x42')],{'$or':_[_0x8aff('0x37')](_0x494b32,function(_0x389960){if(_0x389960[_0x8aff('0x35')]!==_0x8aff('0x45')){var _0x22f5f4={};_0x22f5f4[_0x389960['name']]={'$like':'%'+_0x54e8e6[_0x8aff('0x38')]['filter']+'%'};return _0x22f5f4;}})});}_0x42f670=_[_0x8aff('0x44')]({},_0x42f670,_0x54e8e6['options']);var _0x33f79f={'where':_0x42f670['where']};return db[_0x8aff('0x46')]['count'](_0x33f79f)[_0x8aff('0x2e')](function(_0x1901f0){_0x49f6e4['count']=_0x1901f0;if(_0x54e8e6[_0x8aff('0x38')][_0x8aff('0x47')]){_0x42f670['include']=[{'all':!![]}];}return db[_0x8aff('0x46')][_0x8aff('0x48')](_0x42f670);})[_0x8aff('0x2e')](function(_0x24f48e){_0x49f6e4[_0x8aff('0x49')]=_0x24f48e;return _0x49f6e4;})[_0x8aff('0x2e')](respondWithFilteredResult(_0x27b965,_0x42f670))[_0x8aff('0x4a')](handleError(_0x27b965,null));};exports['show']=function(_0x500ed7,_0x134c60){var _0x4c079f={'raw':![],'where':{'id':_0x500ed7[_0x8aff('0x4b')]['id']}},_0x1ae734={};_0x1ae734[_0x8aff('0x3c')]=_[_0x8aff('0x39')](db[_0x8aff('0x46')][_0x8aff('0x34')]);_0x1ae734[_0x8aff('0x38')]=_[_0x8aff('0x39')](_0x500ed7[_0x8aff('0x38')]);_0x1ae734[_0x8aff('0x3a')]=_[_0x8aff('0x3b')](_0x1ae734[_0x8aff('0x3c')],_0x1ae734[_0x8aff('0x38')]);_0x4c079f[_0x8aff('0x3d')]=_[_0x8aff('0x3b')](_0x1ae734['model'],qs[_0x8aff('0x3e')](_0x500ed7[_0x8aff('0x38')]['fields']));_0x4c079f[_0x8aff('0x3d')]=_0x4c079f[_0x8aff('0x3d')][_0x8aff('0x4c')]?_0x4c079f[_0x8aff('0x3d')]:_0x1ae734[_0x8aff('0x3c')];if(_0x500ed7['query'][_0x8aff('0x47')]){_0x4c079f['include']=[{'all':!![]}];}_0x4c079f=_['merge']({},_0x4c079f,_0x500ed7[_0x8aff('0x4d')]);return db[_0x8aff('0x46')][_0x8aff('0x4e')](_0x4c079f)[_0x8aff('0x2e')](handleEntityNotFound(_0x134c60,null))['then'](respondWithResult(_0x134c60,null))[_0x8aff('0x4a')](handleError(_0x134c60,null));};exports[_0x8aff('0x4f')]=function(_0x2615ab,_0xd20cc8){return db[_0x8aff('0x46')][_0x8aff('0x4f')](_0x2615ab[_0x8aff('0x50')],{})[_0x8aff('0x2e')](respondWithResult(_0xd20cc8,0xc9))[_0x8aff('0x4a')](handleError(_0xd20cc8,null));};exports[_0x8aff('0x2d')]=function(_0x573a72,_0x2ce2cf){if(_0x573a72[_0x8aff('0x50')]['id']){delete _0x573a72['body']['id'];}return db['VoiceQueueReport'][_0x8aff('0x4e')]({'where':{'id':_0x573a72[_0x8aff('0x4b')]['id']}})[_0x8aff('0x2e')](handleEntityNotFound(_0x2ce2cf,null))[_0x8aff('0x2e')](saveUpdates(_0x573a72[_0x8aff('0x50')],null))[_0x8aff('0x2e')](respondWithResult(_0x2ce2cf,null))[_0x8aff('0x4a')](handleError(_0x2ce2cf,null));};exports['destroy']=function(_0x17fcb7,_0x2f2a4b){return db['VoiceQueueReport']['find']({'where':{'id':_0x17fcb7['params']['id']}})[_0x8aff('0x2e')](handleEntityNotFound(_0x2f2a4b,null))['then'](removeEntity(_0x2f2a4b,null))['catch'](handleError(_0x2f2a4b,null));};exports['describe']=function(_0x1aa232,_0x55e90c){return db[_0x8aff('0x46')][_0x8aff('0x51')]()['then'](respondWithResult(_0x55e90c,null))['catch'](handleError(_0x55e90c,null));};exports[_0x8aff('0x52')]=function(_0x3fb0e2,_0xb7f408){var _0x3d2b4c={},_0x407920={},_0x4d8c46={'count':0x0,'rows':[]};_0x407920[_0x8aff('0x3c')]=_[_0x8aff('0x39')](db[_0x8aff('0x46')][_0x8aff('0x34')]);_0x407920[_0x8aff('0x38')]=_[_0x8aff('0x39')](_0x3fb0e2[_0x8aff('0x38')]);_0x407920['filters']=_[_0x8aff('0x3b')](_0x407920[_0x8aff('0x3c')],_0x407920[_0x8aff('0x38')]);_0x3d2b4c[_0x8aff('0x3d')]=_[_0x8aff('0x3b')](_0x407920[_0x8aff('0x3c')],qs[_0x8aff('0x3e')](_0x3fb0e2[_0x8aff('0x38')][_0x8aff('0x3e')]));_0x3d2b4c[_0x8aff('0x3d')]=_0x3d2b4c[_0x8aff('0x3d')]['length']?_0x3d2b4c[_0x8aff('0x3d')]:_0x407920[_0x8aff('0x3c')];if(!_0x3fb0e2[_0x8aff('0x38')][_0x8aff('0x53')](_0x8aff('0x3f'))){_0x3d2b4c[_0x8aff('0x26')]=qs[_0x8aff('0x26')](_0x3fb0e2[_0x8aff('0x38')][_0x8aff('0x26')]);_0x3d2b4c['offset']=qs['offset'](_0x3fb0e2[_0x8aff('0x38')][_0x8aff('0x24')]);}_0x3d2b4c[_0x8aff('0x40')]=qs[_0x8aff('0x41')](_0x3fb0e2['query'][_0x8aff('0x41')]);_0x3d2b4c[_0x8aff('0x42')]=qs[_0x8aff('0x3a')](_[_0x8aff('0x43')](_0x3fb0e2['query'],_0x407920[_0x8aff('0x3a')]));if(_0x3fb0e2[_0x8aff('0x38')][_0x8aff('0x54')]){_0x3d2b4c[_0x8aff('0x42')]=_['merge'](_0x3d2b4c[_0x8aff('0x42')],{'$or':_[_0x8aff('0x37')](_0x3d2b4c[_0x8aff('0x3d')],function(_0x4a75ce){var _0x3ca737={};_0x3ca737[_0x4a75ce]={'$like':'%'+_0x3fb0e2[_0x8aff('0x38')]['filter']+'%'};return _0x3ca737;})});}_0x3d2b4c=_[_0x8aff('0x44')]({},_0x3d2b4c,_0x3fb0e2[_0x8aff('0x4d')]);var _0x115ebf={'where':_0x3d2b4c[_0x8aff('0x42')]};return db[_0x8aff('0x46')]['count'](_0x115ebf)[_0x8aff('0x2e')](function(_0x336d41){_0x4d8c46[_0x8aff('0x27')]=_0x336d41;if(_0x3fb0e2[_0x8aff('0x38')][_0x8aff('0x47')]){_0x3d2b4c[_0x8aff('0x55')]=[{'all':!![]}];}return db['VoiceQueueReport'][_0x8aff('0x48')](_0x3d2b4c);})['then'](function(_0x1a63d6){_0x4d8c46['rows']=_0x1a63d6;return _0x4d8c46;})[_0x8aff('0x2e')](respondWithFilteredResult(_0xb7f408,_0x3d2b4c,_0x8aff('0x52')))[_0x8aff('0x4a')](handleError(_0xb7f408,null,'getVoiceQueuesReport'));};
\ No newline at end of file
+var _0xbebd=['stack','name','send','index','map','VoiceQueueReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','length','include','create','body','catch','find','params','describe','sort','getVoiceQueuesReport','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./voiceQueueReport.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','destroy','error'];(function(_0x42b707,_0x22e9c4){var _0x343135=function(_0x53961b){while(--_0x53961b){_0x42b707['push'](_0x42b707['shift']());}};_0x343135(++_0x22e9c4);}(_0xbebd,0x1c7));var _0xdbeb=function(_0x177185,_0x23c06f){_0x177185=_0x177185-0x0;var _0x116610=_0xbebd[_0x177185];return _0x116610;};'use strict';var emlformat=require(_0xdbeb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xdbeb('0x1'));var jsonpatch=require(_0xdbeb('0x2'));var rp=require(_0xdbeb('0x3'));var moment=require('moment');var BPromise=require(_0xdbeb('0x4'));var Mustache=require(_0xdbeb('0x5'));var util=require(_0xdbeb('0x6'));var path=require(_0xdbeb('0x7'));var sox=require(_0xdbeb('0x8'));var csv=require(_0xdbeb('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdbeb('0xa'));var squel=require('squel');var crypto=require(_0xdbeb('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xdbeb('0x9'));var querystring=require(_0xdbeb('0xc'));var Papa=require(_0xdbeb('0xd'));var Redis=require(_0xdbeb('0xe'));var authService=require(_0xdbeb('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xdbeb('0x10'));var hardwareService=require(_0xdbeb('0x11'));var logger=require(_0xdbeb('0x12'))('api');var utils=require(_0xdbeb('0x13'));var config=require(_0xdbeb('0x14'));var licenseUtil=require(_0xdbeb('0x15'));var db=require(_0xdbeb('0x16'))['db'];config['redis']=_['defaults'](config[_0xdbeb('0x17')],{'host':_0xdbeb('0x18'),'port':0x18eb});var socket=require(_0xdbeb('0x19'))(new Redis(config['redis']));require(_0xdbeb('0x1a'))[_0xdbeb('0x1b')](socket);function respondWithStatusCode(_0x1c55c0,_0x102ee3){_0x102ee3=_0x102ee3||0xcc;return function(_0x20a6d9){if(_0x20a6d9){return _0x1c55c0[_0xdbeb('0x1c')](_0x102ee3);}return _0x1c55c0[_0xdbeb('0x1d')](_0x102ee3)[_0xdbeb('0x1e')]();};}function respondWithResult(_0x3b9847,_0xc5c9ab){_0xc5c9ab=_0xc5c9ab||0xc8;return function(_0x76dd71){if(_0x76dd71){return _0x3b9847['status'](_0xc5c9ab)[_0xdbeb('0x1f')](_0x76dd71);}};}function respondWithFilteredResult(_0x3da209,_0x3ecbb3){return function(_0x270385){if(_0x270385){var _0x1cae04=typeof _0x3ecbb3[_0xdbeb('0x20')]===_0xdbeb('0x21')&&typeof _0x3ecbb3[_0xdbeb('0x22')]===_0xdbeb('0x21');var _0x2aadab=_0x270385['count'];var _0x44e6e9=_0x1cae04?0x0:_0x3ecbb3[_0xdbeb('0x20')];var _0x14ab46=_0x1cae04?_0x270385[_0xdbeb('0x23')]:_0x3ecbb3['offset']+_0x3ecbb3['limit'];var _0x471d80;if(_0x14ab46>=_0x2aadab){_0x14ab46=_0x2aadab;_0x471d80=0xc8;}else{_0x471d80=0xce;}_0x3da209[_0xdbeb('0x1d')](_0x471d80);return _0x3da209['set'](_0xdbeb('0x24'),_0x44e6e9+'-'+_0x14ab46+'/'+_0x2aadab)['json'](_0x270385);}return null;};}function patchUpdates(_0x6d093a){return function(_0x5bb8f2){try{jsonpatch[_0xdbeb('0x25')](_0x5bb8f2,_0x6d093a,!![]);}catch(_0x3abe93){return BPromise['reject'](_0x3abe93);}return _0x5bb8f2[_0xdbeb('0x26')]();};}function saveUpdates(_0x187c6e,_0x289938){return function(_0xd287a3){if(_0xd287a3){return _0xd287a3[_0xdbeb('0x27')](_0x187c6e)[_0xdbeb('0x28')](function(_0x496a63){return _0x496a63;});}return null;};}function removeEntity(_0xb0ace3,_0x5b3247){return function(_0x77990){if(_0x77990){return _0x77990[_0xdbeb('0x29')]()[_0xdbeb('0x28')](function(){_0xb0ace3[_0xdbeb('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2455f8,_0x42d2c7){return function(_0x57dc4f){if(!_0x57dc4f){_0x2455f8[_0xdbeb('0x1c')](0x194);}return _0x57dc4f;};}function handleError(_0x1d6dba,_0x532317){_0x532317=_0x532317||0x1f4;return function(_0x1e554a){logger[_0xdbeb('0x2a')](_0x1e554a[_0xdbeb('0x2b')]);if(_0x1e554a[_0xdbeb('0x2c')]){delete _0x1e554a['name'];}_0x1d6dba['status'](_0x532317)[_0xdbeb('0x2d')](_0x1e554a);};}exports[_0xdbeb('0x2e')]=function(_0x46c7b2,_0x5e8cd6){var _0x47f4d7={},_0x19bc33={},_0x28a3ca={'count':0x0,'rows':[]};var _0x31a0c4=_[_0xdbeb('0x2f')](db[_0xdbeb('0x30')][_0xdbeb('0x31')],function(_0x111c28){return{'name':_0x111c28[_0xdbeb('0x32')],'type':_0x111c28[_0xdbeb('0x33')][_0xdbeb('0x34')]};});_0x19bc33['model']=_[_0xdbeb('0x2f')](_0x31a0c4,'name');_0x19bc33[_0xdbeb('0x35')]=_[_0xdbeb('0x36')](_0x46c7b2[_0xdbeb('0x35')]);_0x19bc33[_0xdbeb('0x37')]=_[_0xdbeb('0x38')](_0x19bc33['model'],_0x19bc33[_0xdbeb('0x35')]);_0x47f4d7[_0xdbeb('0x39')]=_['intersection'](_0x19bc33[_0xdbeb('0x3a')],qs[_0xdbeb('0x3b')](_0x46c7b2[_0xdbeb('0x35')][_0xdbeb('0x3b')]));_0x47f4d7[_0xdbeb('0x39')]=_0x47f4d7[_0xdbeb('0x39')]['length']?_0x47f4d7[_0xdbeb('0x39')]:_0x19bc33['model'];if(!_0x46c7b2[_0xdbeb('0x35')][_0xdbeb('0x3c')](_0xdbeb('0x3d'))){_0x47f4d7['limit']=qs[_0xdbeb('0x22')](_0x46c7b2['query'][_0xdbeb('0x22')]);_0x47f4d7['offset']=qs[_0xdbeb('0x20')](_0x46c7b2[_0xdbeb('0x35')][_0xdbeb('0x20')]);}_0x47f4d7[_0xdbeb('0x3e')]=qs['sort'](_0x46c7b2[_0xdbeb('0x35')]['sort']);_0x47f4d7[_0xdbeb('0x3f')]=qs['filters'](_[_0xdbeb('0x40')](_0x46c7b2[_0xdbeb('0x35')],_0x19bc33[_0xdbeb('0x37')]),_0x31a0c4);if(_0x46c7b2[_0xdbeb('0x35')][_0xdbeb('0x41')]){_0x47f4d7[_0xdbeb('0x3f')]=_[_0xdbeb('0x42')](_0x47f4d7[_0xdbeb('0x3f')],{'$or':_['map'](_0x31a0c4,function(_0x450b83){if(_0x450b83['type']!==_0xdbeb('0x43')){var _0x4afc90={};_0x4afc90[_0x450b83[_0xdbeb('0x2c')]]={'$like':'%'+_0x46c7b2[_0xdbeb('0x35')][_0xdbeb('0x41')]+'%'};return _0x4afc90;}})});}_0x47f4d7=_[_0xdbeb('0x42')]({},_0x47f4d7,_0x46c7b2[_0xdbeb('0x44')]);var _0x4262fb={'where':_0x47f4d7[_0xdbeb('0x3f')]};return db['VoiceQueueReport'][_0xdbeb('0x23')](_0x4262fb)[_0xdbeb('0x28')](function(_0x5576e1){_0x28a3ca[_0xdbeb('0x23')]=_0x5576e1;if(_0x46c7b2['query'][_0xdbeb('0x45')]){_0x47f4d7['include']=[{'all':!![]}];}return db[_0xdbeb('0x30')][_0xdbeb('0x46')](_0x47f4d7);})[_0xdbeb('0x28')](function(_0xf1acaf){_0x28a3ca[_0xdbeb('0x47')]=_0xf1acaf;return _0x28a3ca;})[_0xdbeb('0x28')](respondWithFilteredResult(_0x5e8cd6,_0x47f4d7))['catch'](handleError(_0x5e8cd6,null));};exports[_0xdbeb('0x48')]=function(_0x6bc1a2,_0x71c401){var _0x33e33e={'raw':![],'where':{'id':_0x6bc1a2['params']['id']}},_0x450fec={};_0x450fec[_0xdbeb('0x3a')]=_[_0xdbeb('0x36')](db[_0xdbeb('0x30')][_0xdbeb('0x31')]);_0x450fec['query']=_[_0xdbeb('0x36')](_0x6bc1a2[_0xdbeb('0x35')]);_0x450fec['filters']=_[_0xdbeb('0x38')](_0x450fec['model'],_0x450fec[_0xdbeb('0x35')]);_0x33e33e[_0xdbeb('0x39')]=_[_0xdbeb('0x38')](_0x450fec['model'],qs[_0xdbeb('0x3b')](_0x6bc1a2[_0xdbeb('0x35')][_0xdbeb('0x3b')]));_0x33e33e[_0xdbeb('0x39')]=_0x33e33e[_0xdbeb('0x39')][_0xdbeb('0x49')]?_0x33e33e[_0xdbeb('0x39')]:_0x450fec[_0xdbeb('0x3a')];if(_0x6bc1a2[_0xdbeb('0x35')][_0xdbeb('0x45')]){_0x33e33e[_0xdbeb('0x4a')]=[{'all':!![]}];}_0x33e33e=_[_0xdbeb('0x42')]({},_0x33e33e,_0x6bc1a2[_0xdbeb('0x44')]);return db[_0xdbeb('0x30')]['find'](_0x33e33e)[_0xdbeb('0x28')](handleEntityNotFound(_0x71c401,null))[_0xdbeb('0x28')](respondWithResult(_0x71c401,null))['catch'](handleError(_0x71c401,null));};exports[_0xdbeb('0x4b')]=function(_0xb548cc,_0x537d6f){return db[_0xdbeb('0x30')][_0xdbeb('0x4b')](_0xb548cc[_0xdbeb('0x4c')],{})['then'](respondWithResult(_0x537d6f,0xc9))[_0xdbeb('0x4d')](handleError(_0x537d6f,null));};exports[_0xdbeb('0x27')]=function(_0x4942b4,_0x332f55){if(_0x4942b4[_0xdbeb('0x4c')]['id']){delete _0x4942b4[_0xdbeb('0x4c')]['id'];}return db[_0xdbeb('0x30')][_0xdbeb('0x4e')]({'where':{'id':_0x4942b4['params']['id']}})[_0xdbeb('0x28')](handleEntityNotFound(_0x332f55,null))[_0xdbeb('0x28')](saveUpdates(_0x4942b4[_0xdbeb('0x4c')],null))[_0xdbeb('0x28')](respondWithResult(_0x332f55,null))[_0xdbeb('0x4d')](handleError(_0x332f55,null));};exports[_0xdbeb('0x29')]=function(_0x7a39f6,_0x43c60e){return db[_0xdbeb('0x30')][_0xdbeb('0x4e')]({'where':{'id':_0x7a39f6[_0xdbeb('0x4f')]['id']}})['then'](handleEntityNotFound(_0x43c60e,null))[_0xdbeb('0x28')](removeEntity(_0x43c60e,null))[_0xdbeb('0x4d')](handleError(_0x43c60e,null));};exports[_0xdbeb('0x50')]=function(_0x102b87,_0x104540){return db['VoiceQueueReport']['describe']()[_0xdbeb('0x28')](respondWithResult(_0x104540,null))[_0xdbeb('0x4d')](handleError(_0x104540,null));};exports['getVoiceQueuesReport']=function(_0x1ad161,_0x5a5544){var _0x2e89a6={},_0xad91cc={},_0x23804f={'count':0x0,'rows':[]};_0xad91cc['model']=_[_0xdbeb('0x36')](db[_0xdbeb('0x30')]['rawAttributes']);_0xad91cc[_0xdbeb('0x35')]=_[_0xdbeb('0x36')](_0x1ad161[_0xdbeb('0x35')]);_0xad91cc['filters']=_[_0xdbeb('0x38')](_0xad91cc[_0xdbeb('0x3a')],_0xad91cc[_0xdbeb('0x35')]);_0x2e89a6[_0xdbeb('0x39')]=_['intersection'](_0xad91cc[_0xdbeb('0x3a')],qs[_0xdbeb('0x3b')](_0x1ad161[_0xdbeb('0x35')][_0xdbeb('0x3b')]));_0x2e89a6['attributes']=_0x2e89a6['attributes'][_0xdbeb('0x49')]?_0x2e89a6[_0xdbeb('0x39')]:_0xad91cc[_0xdbeb('0x3a')];if(!_0x1ad161[_0xdbeb('0x35')]['hasOwnProperty'](_0xdbeb('0x3d'))){_0x2e89a6[_0xdbeb('0x22')]=qs[_0xdbeb('0x22')](_0x1ad161[_0xdbeb('0x35')]['limit']);_0x2e89a6[_0xdbeb('0x20')]=qs[_0xdbeb('0x20')](_0x1ad161[_0xdbeb('0x35')]['offset']);}_0x2e89a6['order']=qs[_0xdbeb('0x51')](_0x1ad161[_0xdbeb('0x35')][_0xdbeb('0x51')]);_0x2e89a6[_0xdbeb('0x3f')]=qs['filters'](_[_0xdbeb('0x40')](_0x1ad161[_0xdbeb('0x35')],_0xad91cc[_0xdbeb('0x37')]));if(_0x1ad161[_0xdbeb('0x35')][_0xdbeb('0x41')]){_0x2e89a6[_0xdbeb('0x3f')]=_[_0xdbeb('0x42')](_0x2e89a6[_0xdbeb('0x3f')],{'$or':_[_0xdbeb('0x2f')](_0x2e89a6[_0xdbeb('0x39')],function(_0x15dc68){var _0x558ab7={};_0x558ab7[_0x15dc68]={'$like':'%'+_0x1ad161[_0xdbeb('0x35')][_0xdbeb('0x41')]+'%'};return _0x558ab7;})});}_0x2e89a6=_[_0xdbeb('0x42')]({},_0x2e89a6,_0x1ad161['options']);var _0x141fe3={'where':_0x2e89a6[_0xdbeb('0x3f')]};return db['VoiceQueueReport'][_0xdbeb('0x23')](_0x141fe3)[_0xdbeb('0x28')](function(_0x5f5138){_0x23804f[_0xdbeb('0x23')]=_0x5f5138;if(_0x1ad161[_0xdbeb('0x35')][_0xdbeb('0x45')]){_0x2e89a6[_0xdbeb('0x4a')]=[{'all':!![]}];}return db['VoiceQueueReport'][_0xdbeb('0x46')](_0x2e89a6);})[_0xdbeb('0x28')](function(_0x4dea25){_0x23804f[_0xdbeb('0x47')]=_0x4dea25;return _0x23804f;})[_0xdbeb('0x28')](respondWithFilteredResult(_0x5a5544,_0x2e89a6,_0xdbeb('0x52')))['catch'](handleError(_0x5a5544,null,_0xdbeb('0x52')));};
\ No newline at end of file
index e42434c..ada0a4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19c5=['hasOwnProperty','exports','events','save','update','emit'];(function(_0x3cd410,_0x4f0d1f){var _0x58769f=function(_0x4904ed){while(--_0x4904ed){_0x3cd410['push'](_0x3cd410['shift']());}};_0x58769f(++_0x4f0d1f);}(_0x19c5,0xbc));var _0x519c=function(_0x1fc122,_0x5e2c17){_0x1fc122=_0x1fc122-0x0;var _0xa2cb13=_0x19c5[_0x1fc122];return _0xa2cb13;};'use strict';var EventEmitter=require(_0x519c('0x0'));var VoiceQueueReport=require('../../mysqldb')['db']['VoiceQueueReport'];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x519c('0x1'),'afterUpdate':_0x519c('0x2'),'afterDestroy':'remove'};function emitEvent(_0x173140){return function(_0x5d9632,_0x2579d7,_0x1ba981){VoiceQueueReportEvents[_0x519c('0x3')](_0x173140+':'+_0x5d9632['id'],_0x5d9632);VoiceQueueReportEvents[_0x519c('0x3')](_0x173140,_0x5d9632);_0x1ba981(null);};}for(var e in events){if(events[_0x519c('0x4')](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module[_0x519c('0x5')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0x0c07=['hook','exports','events','../../mysqldb','save','update','emit'];(function(_0xc43f28,_0x1ba36d){var _0xc33e50=function(_0x185740){while(--_0x185740){_0xc43f28['push'](_0xc43f28['shift']());}};_0xc33e50(++_0x1ba36d);}(_0x0c07,0x9c));var _0x70c0=function(_0x5e84bd,_0xd485f7){_0x5e84bd=_0x5e84bd-0x0;var _0x110526=_0x0c07[_0x5e84bd];return _0x110526;};'use strict';var EventEmitter=require(_0x70c0('0x0'));var VoiceQueueReport=require(_0x70c0('0x1'))['db']['VoiceQueueReport'];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x70c0('0x2'),'afterUpdate':_0x70c0('0x3'),'afterDestroy':'remove'};function emitEvent(_0x146ac6){return function(_0x519e5a,_0x395f0f,_0x4447d7){VoiceQueueReportEvents[_0x70c0('0x4')](_0x146ac6+':'+_0x519e5a['id'],_0x519e5a);VoiceQueueReportEvents[_0x70c0('0x4')](_0x146ac6,_0x519e5a);_0x4447d7(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport[_0x70c0('0x5')](e,emitEvent(event));}}module[_0x70c0('0x6')]=VoiceQueueReportEvents;
\ No newline at end of file
index 110e02b..8c175ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x655b=['util','../../config/logger','api','moment','bluebird','path','rimraf','./voiceQueueReport.attributes','define','VoiceQueueReport','report_queue','uniqueid','calleridnum','lodash'];(function(_0x4487c1,_0x397254){var _0x507a73=function(_0x2b72aa){while(--_0x2b72aa){_0x4487c1['push'](_0x4487c1['shift']());}};_0x507a73(++_0x397254);}(_0x655b,0x195));var _0xb655=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x655b[_0x160c73];return _0xd9302;};'use strict';var _=require(_0xb655('0x0'));var util=require(_0xb655('0x1'));var logger=require(_0xb655('0x2'))(_0xb655('0x3'));var moment=require(_0xb655('0x4'));var BPromise=require(_0xb655('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb655('0x6'));var rimraf=require(_0xb655('0x7'));var config=require('../../config/environment');var attributes=require(_0xb655('0x8'));module['exports']=function(_0x399515,_0xe9eeca){return _0x399515[_0xb655('0x9')](_0xb655('0xa'),attributes,{'tableName':_0xb655('0xb'),'paranoid':![],'indexes':[{'fields':[_0xb655('0xc')]},{'fields':[_0xb655('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6666=['request-promise','path','rimraf','../../config/environment','define','report_queue','uniqueid','lodash','../../config/logger'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x6666,0xa0));var _0x6666=function(_0x571c1d,_0x3b0586){_0x571c1d=_0x571c1d-0x0;var _0x33c609=_0x6666[_0x571c1d];return _0x33c609;};'use strict';var _=require(_0x6666('0x0'));var util=require('util');var logger=require(_0x6666('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6666('0x2'));var fs=require('fs');var path=require(_0x6666('0x3'));var rimraf=require(_0x6666('0x4'));var config=require(_0x6666('0x5'));var attributes=require('./voiceQueueReport.attributes');module['exports']=function(_0x20e63c,_0xa8f0ed){return _0x20e63c[_0x6666('0x6')]('VoiceQueueReport',attributes,{'tableName':_0x6666('0x7'),'paranoid':![],'indexes':[{'fields':[_0x6666('0x8')]},{'fields':['calleridnum']}],'timestamps':!![]});};
\ No newline at end of file
index 82a9d9a..6eea5bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f6b=['message','info','catch','VoiceQueueReport','raw','options','attributes','limit','include','map','model','GetVoiceQueueReport','debug','body','CreateVoiceQueueReport','UpdateVoiceQueueReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./voiceQueueReport.socket','register','request','then','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','VoiceQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x34006d,_0x3945fe){var _0x1f640e=function(_0x2483b0){while(--_0x2483b0){_0x34006d['push'](_0x34006d['shift']());}};_0x1f640e(++_0x3945fe);}(_0x2f6b,0x112));var _0xb2f6=function(_0x307101,_0x45fd0a){_0x307101=_0x307101-0x0;var _0x5d4775=_0x2f6b[_0x307101];return _0x5d4775;};'use strict';var _=require(_0xb2f6('0x0'));var util=require(_0xb2f6('0x1'));var moment=require(_0xb2f6('0x2'));var BPromise=require(_0xb2f6('0x3'));var rs=require(_0xb2f6('0x4'));var fs=require('fs');var Redis=require(_0xb2f6('0x5'));var db=require(_0xb2f6('0x6'))['db'];var utils=require(_0xb2f6('0x7'));var logger=require(_0xb2f6('0x8'))(_0xb2f6('0x9'));var config=require(_0xb2f6('0xa'));var jayson=require(_0xb2f6('0xb'));var client=jayson[_0xb2f6('0xc')][_0xb2f6('0xd')]({'port':0x232a});config[_0xb2f6('0xe')]=_['defaults'](config['redis'],{'host':_0xb2f6('0xf'),'port':0x18eb});var socket=require(_0xb2f6('0x10'))(new Redis(config[_0xb2f6('0xe')]));require(_0xb2f6('0x11'))[_0xb2f6('0x12')](socket);function respondWithRpcPromise(_0x599bb9,_0x26d6ea,_0x506bb0){return new BPromise(function(_0x306449,_0x10b58a){return client[_0xb2f6('0x13')](_0x599bb9,_0x506bb0)[_0xb2f6('0x14')](function(_0x3c7b31){logger['info'](_0xb2f6('0x15'),_0x26d6ea,_0xb2f6('0x16'));logger['debug'](_0xb2f6('0x17'),_0x26d6ea,'request\x20sent',JSON[_0xb2f6('0x18')](_0x3c7b31));if(_0x3c7b31['error']){if(_0x3c7b31[_0xb2f6('0x19')][_0xb2f6('0x1a')]===0x1f4){logger[_0xb2f6('0x19')]('VoiceQueueReport,\x20%s,\x20%s',_0x26d6ea,_0x3c7b31[_0xb2f6('0x19')]['message']);return _0x10b58a(_0x3c7b31[_0xb2f6('0x19')]['message']);}logger[_0xb2f6('0x19')](_0xb2f6('0x15'),_0x26d6ea,_0x3c7b31['error'][_0xb2f6('0x1b')]);return _0x306449(_0x3c7b31[_0xb2f6('0x19')][_0xb2f6('0x1b')]);}else{logger[_0xb2f6('0x1c')](_0xb2f6('0x15'),_0x26d6ea,'request\x20sent');_0x306449(_0x3c7b31['result'][_0xb2f6('0x1b')]);}})[_0xb2f6('0x1d')](function(_0x111978){logger[_0xb2f6('0x19')]('VoiceQueueReport,\x20%s,\x20%s',_0x26d6ea,_0x111978);_0x10b58a(_0x111978);});});}exports['GetVoiceQueueReport']=function(_0x28561a){var _0x10ff75=this;return new Promise(function(_0xa76b02,_0xe55b4c){return db[_0xb2f6('0x1e')]['findAll']({'raw':_0x28561a['options']?_0x28561a['options'][_0xb2f6('0x1f')]===undefined?!![]:![]:!![],'where':_0x28561a[_0xb2f6('0x20')]?_0x28561a[_0xb2f6('0x20')]['where']||null:null,'attributes':_0x28561a[_0xb2f6('0x20')]?_0x28561a[_0xb2f6('0x20')][_0xb2f6('0x21')]||null:null,'limit':_0x28561a[_0xb2f6('0x20')]?_0x28561a['options'][_0xb2f6('0x22')]||null:null,'include':_0x28561a[_0xb2f6('0x20')]?_0x28561a[_0xb2f6('0x20')][_0xb2f6('0x23')]?_[_0xb2f6('0x24')](_0x28561a[_0xb2f6('0x20')][_0xb2f6('0x23')],function(_0x43cd27){return{'model':db[_0x43cd27[_0xb2f6('0x25')]],'as':_0x43cd27['as'],'attributes':_0x43cd27['attributes'],'include':_0x43cd27['include']?_['map'](_0x43cd27[_0xb2f6('0x23')],function(_0x2a588c){return{'model':db[_0x2a588c['model']],'as':_0x2a588c['as'],'attributes':_0x2a588c[_0xb2f6('0x21')],'include':_0x2a588c[_0xb2f6('0x23')]?_[_0xb2f6('0x24')](_0x2a588c['include'],function(_0x32808c){return{'model':db[_0x32808c['model']],'as':_0x32808c['as'],'attributes':_0x32808c['attributes']};}):[]};}):[]};}):[]:[]})[_0xb2f6('0x14')](function(_0x194118){logger['info'](_0xb2f6('0x26'),_0x28561a);logger[_0xb2f6('0x27')](_0xb2f6('0x26'),_0x28561a,JSON[_0xb2f6('0x18')](_0x194118));_0xa76b02(_0x194118);})[_0xb2f6('0x1d')](function(_0x45f149){logger[_0xb2f6('0x19')](_0xb2f6('0x26'),_0x45f149['message'],_0x28561a);_0xe55b4c(_0x10ff75['error'](0x1f4,_0x45f149[_0xb2f6('0x1b')]));});});};exports['CreateVoiceQueueReport']=function(_0x19d8df){var _0x5b1427=this;return new Promise(function(_0x4e99de,_0x42182f){return db[_0xb2f6('0x1e')]['create'](_0x19d8df[_0xb2f6('0x28')],{'raw':_0x19d8df[_0xb2f6('0x20')]?_0x19d8df[_0xb2f6('0x20')][_0xb2f6('0x1f')]===undefined?!![]:![]:!![]})['then'](function(_0x235ee1){logger['info']('CreateVoiceQueueReport',_0x19d8df);logger['debug']('CreateVoiceQueueReport',_0x19d8df,JSON[_0xb2f6('0x18')](_0x235ee1));_0x4e99de(_0x235ee1);})['catch'](function(_0x51d0bb){logger[_0xb2f6('0x19')](_0xb2f6('0x29'),_0x51d0bb['message'],_0x19d8df);_0x42182f(_0x5b1427[_0xb2f6('0x19')](0x1f4,_0x51d0bb['message']));});});};exports[_0xb2f6('0x2a')]=function(_0x3f9368){var _0x47a798=this;return new Promise(function(_0xadb770,_0x287188){return db['VoiceQueueReport']['update'](_0x3f9368[_0xb2f6('0x28')],{'raw':_0x3f9368[_0xb2f6('0x20')]?_0x3f9368[_0xb2f6('0x20')][_0xb2f6('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3f9368[_0xb2f6('0x20')]?_0x3f9368[_0xb2f6('0x20')]['where']||null:null,'attributes':_0x3f9368[_0xb2f6('0x20')]?_0x3f9368[_0xb2f6('0x20')][_0xb2f6('0x21')]||null:null,'limit':_0x3f9368[_0xb2f6('0x20')]?_0x3f9368[_0xb2f6('0x20')][_0xb2f6('0x22')]||null:null})[_0xb2f6('0x14')](function(_0x44aa7d){logger[_0xb2f6('0x1c')](_0xb2f6('0x2a'),_0x3f9368);logger[_0xb2f6('0x27')](_0xb2f6('0x2a'),_0x3f9368,JSON[_0xb2f6('0x18')](_0x44aa7d));_0xadb770(_0x44aa7d);})[_0xb2f6('0x1d')](function(_0x402e11){logger[_0xb2f6('0x19')](_0xb2f6('0x2a'),_0x402e11[_0xb2f6('0x1b')],_0x3f9368);_0x287188(_0x47a798['error'](0x1f4,_0x402e11['message']));});});};
\ No newline at end of file
+var _0xa7d7=['where','attributes','limit','include','map','model','GetVoiceQueueReport','CreateVoiceQueueReport','body','UpdateVoiceQueueReport','update','debug','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','redis','defaults','socket.io-emitter','./voiceQueueReport.socket','register','request','then','info','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','VoiceQueueReport','findAll','options','raw'];(function(_0x2b6600,_0x24c497){var _0x912ee2=function(_0x5d6484){while(--_0x5d6484){_0x2b6600['push'](_0x2b6600['shift']());}};_0x912ee2(++_0x24c497);}(_0xa7d7,0x139));var _0x7a7d=function(_0x725a4c,_0x102507){_0x725a4c=_0x725a4c-0x0;var _0x37b2cc=_0xa7d7[_0x725a4c];return _0x37b2cc;};'use strict';var _=require(_0x7a7d('0x0'));var util=require(_0x7a7d('0x1'));var moment=require(_0x7a7d('0x2'));var BPromise=require(_0x7a7d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7a7d('0x4'));var db=require(_0x7a7d('0x5'))['db'];var utils=require(_0x7a7d('0x6'));var logger=require('../../config/logger')(_0x7a7d('0x7'));var config=require(_0x7a7d('0x8'));var jayson=require(_0x7a7d('0x9'));var client=jayson[_0x7a7d('0xa')]['http']({'port':0x232a});config[_0x7a7d('0xb')]=_[_0x7a7d('0xc')](config[_0x7a7d('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x7a7d('0xd'))(new Redis(config[_0x7a7d('0xb')]));require(_0x7a7d('0xe'))[_0x7a7d('0xf')](socket);function respondWithRpcPromise(_0x4fa4da,_0x276977,_0x182ef0){return new BPromise(function(_0x365710,_0x5c4ddb){return client[_0x7a7d('0x10')](_0x4fa4da,_0x182ef0)[_0x7a7d('0x11')](function(_0x5b1193){logger[_0x7a7d('0x12')](_0x7a7d('0x13'),_0x276977,_0x7a7d('0x14'));logger['debug']('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x276977,'request\x20sent',JSON[_0x7a7d('0x15')](_0x5b1193));if(_0x5b1193[_0x7a7d('0x16')]){if(_0x5b1193[_0x7a7d('0x16')][_0x7a7d('0x17')]===0x1f4){logger[_0x7a7d('0x16')](_0x7a7d('0x13'),_0x276977,_0x5b1193[_0x7a7d('0x16')][_0x7a7d('0x18')]);return _0x5c4ddb(_0x5b1193[_0x7a7d('0x16')][_0x7a7d('0x18')]);}logger[_0x7a7d('0x16')](_0x7a7d('0x13'),_0x276977,_0x5b1193['error'][_0x7a7d('0x18')]);return _0x365710(_0x5b1193['error'][_0x7a7d('0x18')]);}else{logger[_0x7a7d('0x12')](_0x7a7d('0x13'),_0x276977,_0x7a7d('0x14'));_0x365710(_0x5b1193[_0x7a7d('0x19')][_0x7a7d('0x18')]);}})[_0x7a7d('0x1a')](function(_0x1db62b){logger['error']('VoiceQueueReport,\x20%s,\x20%s',_0x276977,_0x1db62b);_0x5c4ddb(_0x1db62b);});});}exports['GetVoiceQueueReport']=function(_0x5a1194){var _0x3d7993=this;return new Promise(function(_0xd2cb0a,_0x527d54){return db[_0x7a7d('0x1b')][_0x7a7d('0x1c')]({'raw':_0x5a1194[_0x7a7d('0x1d')]?_0x5a1194[_0x7a7d('0x1d')][_0x7a7d('0x1e')]===undefined?!![]:![]:!![],'where':_0x5a1194[_0x7a7d('0x1d')]?_0x5a1194[_0x7a7d('0x1d')][_0x7a7d('0x1f')]||null:null,'attributes':_0x5a1194['options']?_0x5a1194[_0x7a7d('0x1d')][_0x7a7d('0x20')]||null:null,'limit':_0x5a1194[_0x7a7d('0x1d')]?_0x5a1194[_0x7a7d('0x1d')][_0x7a7d('0x21')]||null:null,'include':_0x5a1194[_0x7a7d('0x1d')]?_0x5a1194['options'][_0x7a7d('0x22')]?_[_0x7a7d('0x23')](_0x5a1194['options'][_0x7a7d('0x22')],function(_0x596741){return{'model':db[_0x596741[_0x7a7d('0x24')]],'as':_0x596741['as'],'attributes':_0x596741[_0x7a7d('0x20')],'include':_0x596741[_0x7a7d('0x22')]?_[_0x7a7d('0x23')](_0x596741[_0x7a7d('0x22')],function(_0x531518){return{'model':db[_0x531518['model']],'as':_0x531518['as'],'attributes':_0x531518[_0x7a7d('0x20')],'include':_0x531518['include']?_[_0x7a7d('0x23')](_0x531518[_0x7a7d('0x22')],function(_0xe8b93d){return{'model':db[_0xe8b93d[_0x7a7d('0x24')]],'as':_0xe8b93d['as'],'attributes':_0xe8b93d['attributes']};}):[]};}):[]};}):[]:[]})[_0x7a7d('0x11')](function(_0x534fde){logger['info']('GetVoiceQueueReport',_0x5a1194);logger['debug'](_0x7a7d('0x25'),_0x5a1194,JSON[_0x7a7d('0x15')](_0x534fde));_0xd2cb0a(_0x534fde);})[_0x7a7d('0x1a')](function(_0x6a3aa4){logger[_0x7a7d('0x16')](_0x7a7d('0x25'),_0x6a3aa4['message'],_0x5a1194);_0x527d54(_0x3d7993[_0x7a7d('0x16')](0x1f4,_0x6a3aa4['message']));});});};exports[_0x7a7d('0x26')]=function(_0x182a4b){var _0x553619=this;return new Promise(function(_0x251d46,_0x58e1a6){return db[_0x7a7d('0x1b')]['create'](_0x182a4b[_0x7a7d('0x27')],{'raw':_0x182a4b['options']?_0x182a4b[_0x7a7d('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0x7a7d('0x11')](function(_0x4533a9){logger[_0x7a7d('0x12')](_0x7a7d('0x26'),_0x182a4b);logger['debug'](_0x7a7d('0x26'),_0x182a4b,JSON[_0x7a7d('0x15')](_0x4533a9));_0x251d46(_0x4533a9);})[_0x7a7d('0x1a')](function(_0xadcc92){logger[_0x7a7d('0x16')](_0x7a7d('0x26'),_0xadcc92[_0x7a7d('0x18')],_0x182a4b);_0x58e1a6(_0x553619[_0x7a7d('0x16')](0x1f4,_0xadcc92[_0x7a7d('0x18')]));});});};exports[_0x7a7d('0x28')]=function(_0x3db946){var _0x3fdba0=this;return new Promise(function(_0x2bdd5a,_0x3ab577){return db[_0x7a7d('0x1b')][_0x7a7d('0x29')](_0x3db946['body'],{'raw':_0x3db946[_0x7a7d('0x1d')]?_0x3db946['options'][_0x7a7d('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3db946[_0x7a7d('0x1d')]?_0x3db946['options'][_0x7a7d('0x1f')]||null:null,'attributes':_0x3db946[_0x7a7d('0x1d')]?_0x3db946['options'][_0x7a7d('0x20')]||null:null,'limit':_0x3db946[_0x7a7d('0x1d')]?_0x3db946[_0x7a7d('0x1d')][_0x7a7d('0x21')]||null:null})['then'](function(_0x2213ba){logger[_0x7a7d('0x12')](_0x7a7d('0x28'),_0x3db946);logger[_0x7a7d('0x2a')](_0x7a7d('0x28'),_0x3db946,JSON[_0x7a7d('0x15')](_0x2213ba));_0x2bdd5a(_0x2213ba);})[_0x7a7d('0x1a')](function(_0x52591d){logger['error']('UpdateVoiceQueueReport',_0x52591d[_0x7a7d('0x18')],_0x3db946);_0x3ab577(_0x3fdba0[_0x7a7d('0x16')](0x1f4,_0x52591d[_0x7a7d('0x18')]));});});};
\ No newline at end of file
index 5bdd130..7578f63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x406f=['emit','removeListener','register','length','./voiceQueueReport.events','remove'];(function(_0x148e46,_0x3769ad){var _0x273bb4=function(_0x19d928){while(--_0x19d928){_0x148e46['push'](_0x148e46['shift']());}};_0x273bb4(++_0x3769ad);}(_0x406f,0xe8));var _0xf406=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x406f[_0x59ee6f];return _0x4c0979;};'use strict';var VoiceQueueReportEvents=require(_0xf406('0x0'));var events=['save',_0xf406('0x1'),'update'];function createListener(_0x28ed57,_0x444c02){return function(_0x2921ce){_0x444c02[_0xf406('0x2')](_0x28ed57,_0x2921ce);};}function removeListener(_0xbe427a,_0x19221b){return function(){VoiceQueueReportEvents[_0xf406('0x3')](_0xbe427a,_0x19221b);};}exports[_0xf406('0x4')]=function(_0x40542f){for(var _0x235134=0x0,_0x51237b=events[_0xf406('0x5')];_0x235134<_0x51237b;_0x235134++){var _0x18bf2f=events[_0x235134];var _0x1130ae=createListener('voiceQueueReport:'+_0x18bf2f,_0x40542f);VoiceQueueReportEvents['on'](_0x18bf2f,_0x1130ae);}};
\ No newline at end of file
+var _0x14d8=['./voiceQueueReport.events','save','update','emit','register','length','voiceQueueReport:'];(function(_0x330f17,_0x3c19be){var _0x40527c=function(_0x4b9373){while(--_0x4b9373){_0x330f17['push'](_0x330f17['shift']());}};_0x40527c(++_0x3c19be);}(_0x14d8,0x19d));var _0x814d=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x14d8[_0x4565bf];return _0x5610ba;};'use strict';var VoiceQueueReportEvents=require(_0x814d('0x0'));var events=[_0x814d('0x1'),'remove',_0x814d('0x2')];function createListener(_0x4e8753,_0xfff5ac){return function(_0x43d8df){_0xfff5ac[_0x814d('0x3')](_0x4e8753,_0x43d8df);};}function removeListener(_0x3e07cd,_0x18917c){return function(){VoiceQueueReportEvents['removeListener'](_0x3e07cd,_0x18917c);};}exports[_0x814d('0x4')]=function(_0x2e1be8){for(var _0x1268c9=0x0,_0x214b1b=events[_0x814d('0x5')];_0x1268c9<_0x214b1b;_0x1268c9++){var _0x3e40f3=events[_0x1268c9];var _0x434320=createListener(_0x814d('0x6')+_0x3e40f3,_0x2e1be8);VoiceQueueReportEvents['on'](_0x3e40f3,_0x434320);}};
\ No newline at end of file
index 87f5e28..f3e83d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bef=['get','isAuthenticated','index','/:id','show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x5ca82d,_0x7d11a0){var _0x397661=function(_0x4ce955){while(--_0x4ce955){_0x5ca82d['push'](_0x5ca82d['shift']());}};_0x397661(++_0x7d11a0);}(_0x3bef,0x185));var _0xf3be=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3bef[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xf3be('0x0'));var util=require(_0xf3be('0x1'));var path=require(_0xf3be('0x2'));var timeout=require(_0xf3be('0x3'));var express=require(_0xf3be('0x4'));var router=express[_0xf3be('0x5')]();var fs_extra=require(_0xf3be('0x6'));var auth=require(_0xf3be('0x7'));var interaction=require(_0xf3be('0x8'));var config=require(_0xf3be('0x9'));var controller=require('./voiceQueuesLog.controller');router[_0xf3be('0xa')]('/',auth[_0xf3be('0xb')](),controller[_0xf3be('0xc')]);router[_0xf3be('0xa')](_0xf3be('0xd'),auth['isAuthenticated'](),controller[_0xf3be('0xe')]);router[_0xf3be('0xf')]('/',auth[_0xf3be('0xb')](),controller[_0xf3be('0x10')]);router['put'](_0xf3be('0xd'),auth[_0xf3be('0xb')](),controller[_0xf3be('0x11')]);router[_0xf3be('0x12')](_0xf3be('0xd'),auth['isAuthenticated'](),controller[_0xf3be('0x13')]);module[_0xf3be('0x14')]=router;
\ No newline at end of file
+var _0x9ac5=['multer','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueuesLog.controller','get','/:id','isAuthenticated','show','post','put','delete','destroy','exports'];(function(_0x1de2f5,_0x1b9da6){var _0x47d19b=function(_0x25b8af){while(--_0x25b8af){_0x1de2f5['push'](_0x1de2f5['shift']());}};_0x47d19b(++_0x1b9da6);}(_0x9ac5,0xdd));var _0x59ac=function(_0x565c8c,_0xedc663){_0x565c8c=_0x565c8c-0x0;var _0x1312b3=_0x9ac5[_0x565c8c];return _0x1312b3;};'use strict';var multer=require(_0x59ac('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x59ac('0x1'));var express=require(_0x59ac('0x2'));var router=express['Router']();var fs_extra=require(_0x59ac('0x3'));var auth=require(_0x59ac('0x4'));var interaction=require(_0x59ac('0x5'));var config=require(_0x59ac('0x6'));var controller=require(_0x59ac('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x59ac('0x8')](_0x59ac('0x9'),auth[_0x59ac('0xa')](),controller[_0x59ac('0xb')]);router[_0x59ac('0xc')]('/',auth[_0x59ac('0xa')](),controller['create']);router[_0x59ac('0xd')](_0x59ac('0x9'),auth['isAuthenticated'](),controller['update']);router[_0x59ac('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x59ac('0xf')]);module[_0x59ac('0x10')]=router;
\ No newline at end of file
index 5bb68a8..9eac88f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdde=['format','YYYY-MM-DD\x20HH:mm:ss','STRING','DATE'];(function(_0x1f4c15,_0x208c8a){var _0x1c53f8=function(_0x14f874){while(--_0x14f874){_0x1f4c15['push'](_0x1f4c15['shift']());}};_0x1c53f8(++_0x208c8a);}(_0xbdde,0x12e));var _0xebdd=function(_0x5d9d1e,_0x287c37){_0x5d9d1e=_0x5d9d1e-0x0;var _0x2fc272=_0xbdde[_0x5d9d1e];return _0x2fc272;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module['exports']={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize[_0xebdd('0x0')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0xebdd('0x0')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xebdd('0x0')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0xebdd('0x0')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0xebdd('0x0')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0xebdd('0x0')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0xebdd('0x0')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0xebdd('0x1')],'allowNull':![],'defaultValue':moment()[_0xebdd('0x2')](_0xebdd('0x3'))}};
\ No newline at end of file
+var _0x213f=['moment','exports','STRING','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x213f,0x1c7));var _0xf213=function(_0x2c71da,_0x15c863){_0x2c71da=_0x2c71da-0x0;var _0x1481dd=_0x213f[_0x2c71da];return _0x1481dd;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xf213('0x0'));module[_0xf213('0x1')]={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize[_0xf213('0x2')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0xf213('0x2')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xf213('0x2')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0xf213('0x2')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0xf213('0x2')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0xf213('0x2')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0xf213('0x2')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0xf213('0x2')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':moment()[_0xf213('0x3')](_0xf213('0x4'))}};
\ No newline at end of file
index 3720b14..b61c95f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d94=['ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../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','set','Content-Range','apply','reject','save','then','destroy','sendStatus','error','stack','send','index','map','VoiceQueuesLog','type','model','name','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','sox'];(function(_0x112f37,_0x17cac4){var _0x1fe5b5=function(_0x50e91f){while(--_0x50e91f){_0x112f37['push'](_0x112f37['shift']());}};_0x1fe5b5(++_0x17cac4);}(_0x3d94,0xd7));var _0x43d9=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x3d94[_0x2641f9];return _0x585741;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x43d9('0x0'));var zipdir=require(_0x43d9('0x1'));var jsonpatch=require(_0x43d9('0x2'));var rp=require('request-promise');var moment=require(_0x43d9('0x3'));var BPromise=require(_0x43d9('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x43d9('0x5'));var sox=require(_0x43d9('0x6'));var csv=require('to-csv');var ejs=require(_0x43d9('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x43d9('0x8'));var squel=require(_0x43d9('0x9'));var crypto=require('crypto');var jsforce=require(_0x43d9('0xa'));var deskjs=require(_0x43d9('0xb'));var toCsv=require(_0x43d9('0xc'));var querystring=require(_0x43d9('0xd'));var Papa=require(_0x43d9('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x43d9('0xf'));var as=require(_0x43d9('0x10'));var hardwareService=require(_0x43d9('0x11'));var logger=require(_0x43d9('0x12'))(_0x43d9('0x13'));var utils=require(_0x43d9('0x14'));var config=require(_0x43d9('0x15'));var licenseUtil=require(_0x43d9('0x16'));var db=require(_0x43d9('0x17'))['db'];function respondWithStatusCode(_0x57ca24,_0xbdd1fb){_0xbdd1fb=_0xbdd1fb||0xcc;return function(_0x35da0d){if(_0x35da0d){return _0x57ca24['sendStatus'](_0xbdd1fb);}return _0x57ca24[_0x43d9('0x18')](_0xbdd1fb)[_0x43d9('0x19')]();};}function respondWithResult(_0x2a1e1c,_0x37b52b){_0x37b52b=_0x37b52b||0xc8;return function(_0x468439){if(_0x468439){return _0x2a1e1c[_0x43d9('0x18')](_0x37b52b)[_0x43d9('0x1a')](_0x468439);}};}function respondWithFilteredResult(_0x1601cb,_0x49f022){return function(_0x3ce5e6){if(_0x3ce5e6){var _0xd562b8=typeof _0x49f022[_0x43d9('0x1b')]===_0x43d9('0x1c')&&typeof _0x49f022['limit']===_0x43d9('0x1c');var _0x1e55c9=_0x3ce5e6[_0x43d9('0x1d')];var _0x5e7178=_0xd562b8?0x0:_0x49f022[_0x43d9('0x1b')];var _0x2738d2=_0xd562b8?_0x3ce5e6[_0x43d9('0x1d')]:_0x49f022[_0x43d9('0x1b')]+_0x49f022['limit'];var _0x28d54b;if(_0x2738d2>=_0x1e55c9){_0x2738d2=_0x1e55c9;_0x28d54b=0xc8;}else{_0x28d54b=0xce;}_0x1601cb[_0x43d9('0x18')](_0x28d54b);return _0x1601cb[_0x43d9('0x1e')](_0x43d9('0x1f'),_0x5e7178+'-'+_0x2738d2+'/'+_0x1e55c9)[_0x43d9('0x1a')](_0x3ce5e6);}return null;};}function patchUpdates(_0x239fa7){return function(_0x41fc1b){try{jsonpatch[_0x43d9('0x20')](_0x41fc1b,_0x239fa7,!![]);}catch(_0xc7b80c){return BPromise[_0x43d9('0x21')](_0xc7b80c);}return _0x41fc1b[_0x43d9('0x22')]();};}function saveUpdates(_0x3863ce,_0x545840){return function(_0x3a3196){if(_0x3a3196){return _0x3a3196['update'](_0x3863ce)[_0x43d9('0x23')](function(_0x1040a0){return _0x1040a0;});}return null;};}function removeEntity(_0x2295e5,_0x49d164){return function(_0x69b7ab){if(_0x69b7ab){return _0x69b7ab[_0x43d9('0x24')]()[_0x43d9('0x23')](function(){_0x2295e5[_0x43d9('0x18')](0xcc)[_0x43d9('0x19')]();});}};}function handleEntityNotFound(_0x1f1dd9,_0x1596fe){return function(_0x22c954){if(!_0x22c954){_0x1f1dd9[_0x43d9('0x25')](0x194);}return _0x22c954;};}function handleError(_0x56cf2d,_0x246328){_0x246328=_0x246328||0x1f4;return function(_0x29eedb){logger[_0x43d9('0x26')](_0x29eedb[_0x43d9('0x27')]);if(_0x29eedb['name']){delete _0x29eedb['name'];}_0x56cf2d[_0x43d9('0x18')](_0x246328)[_0x43d9('0x28')](_0x29eedb);};}exports[_0x43d9('0x29')]=function(_0x22489e,_0x104a92){var _0x3ce32a={},_0x1705c2={},_0x3fd803={'count':0x0,'rows':[]};var _0x37cd57=_[_0x43d9('0x2a')](db[_0x43d9('0x2b')]['rawAttributes'],function(_0x4bfb9){return{'name':_0x4bfb9['fieldName'],'type':_0x4bfb9[_0x43d9('0x2c')]['key']};});_0x1705c2[_0x43d9('0x2d')]=_[_0x43d9('0x2a')](_0x37cd57,_0x43d9('0x2e'));_0x1705c2[_0x43d9('0x2f')]=_[_0x43d9('0x30')](_0x22489e['query']);_0x1705c2[_0x43d9('0x31')]=_[_0x43d9('0x32')](_0x1705c2[_0x43d9('0x2d')],_0x1705c2[_0x43d9('0x2f')]);_0x3ce32a['attributes']=_[_0x43d9('0x32')](_0x1705c2['model'],qs[_0x43d9('0x33')](_0x22489e[_0x43d9('0x2f')][_0x43d9('0x33')]));_0x3ce32a['attributes']=_0x3ce32a[_0x43d9('0x34')][_0x43d9('0x35')]?_0x3ce32a['attributes']:_0x1705c2[_0x43d9('0x2d')];if(!_0x22489e['query'][_0x43d9('0x36')](_0x43d9('0x37'))){_0x3ce32a[_0x43d9('0x38')]=qs['limit'](_0x22489e[_0x43d9('0x2f')][_0x43d9('0x38')]);_0x3ce32a[_0x43d9('0x1b')]=qs['offset'](_0x22489e['query'][_0x43d9('0x1b')]);}_0x3ce32a['order']=qs[_0x43d9('0x39')](_0x22489e[_0x43d9('0x2f')][_0x43d9('0x39')]);_0x3ce32a[_0x43d9('0x3a')]=qs[_0x43d9('0x31')](_['pick'](_0x22489e['query'],_0x1705c2['filters']),_0x37cd57);if(_0x22489e[_0x43d9('0x2f')]['filter']){_0x3ce32a[_0x43d9('0x3a')]=_[_0x43d9('0x3b')](_0x3ce32a[_0x43d9('0x3a')],{'$or':_[_0x43d9('0x2a')](_0x37cd57,function(_0x1cb206){if(_0x1cb206[_0x43d9('0x2c')]!==_0x43d9('0x3c')){var _0x270510={};_0x270510[_0x1cb206[_0x43d9('0x2e')]]={'$like':'%'+_0x22489e['query'][_0x43d9('0x3d')]+'%'};return _0x270510;}})});}_0x3ce32a=_[_0x43d9('0x3b')]({},_0x3ce32a,_0x22489e[_0x43d9('0x3e')]);var _0x54d184={'where':_0x3ce32a[_0x43d9('0x3a')]};return db['VoiceQueuesLog']['count'](_0x54d184)['then'](function(_0x3bb924){_0x3fd803[_0x43d9('0x1d')]=_0x3bb924;if(_0x22489e['query'][_0x43d9('0x3f')]){_0x3ce32a[_0x43d9('0x40')]=[{'all':!![]}];}return db[_0x43d9('0x2b')][_0x43d9('0x41')](_0x3ce32a);})[_0x43d9('0x23')](function(_0x20704e){_0x3fd803[_0x43d9('0x42')]=_0x20704e;return _0x3fd803;})[_0x43d9('0x23')](respondWithFilteredResult(_0x104a92,_0x3ce32a))[_0x43d9('0x43')](handleError(_0x104a92,null));};exports[_0x43d9('0x44')]=function(_0x419d17,_0x100d5a){var _0x133788={'raw':!![],'where':{'id':_0x419d17[_0x43d9('0x45')]['id']}},_0x5293f3={};_0x5293f3[_0x43d9('0x2d')]=_[_0x43d9('0x30')](db['VoiceQueuesLog'][_0x43d9('0x46')]);_0x5293f3[_0x43d9('0x2f')]=_[_0x43d9('0x30')](_0x419d17[_0x43d9('0x2f')]);_0x5293f3[_0x43d9('0x31')]=_[_0x43d9('0x32')](_0x5293f3[_0x43d9('0x2d')],_0x5293f3['query']);_0x133788[_0x43d9('0x34')]=_[_0x43d9('0x32')](_0x5293f3[_0x43d9('0x2d')],qs[_0x43d9('0x33')](_0x419d17[_0x43d9('0x2f')][_0x43d9('0x33')]));_0x133788[_0x43d9('0x34')]=_0x133788[_0x43d9('0x34')][_0x43d9('0x35')]?_0x133788[_0x43d9('0x34')]:_0x5293f3[_0x43d9('0x2d')];if(_0x419d17[_0x43d9('0x2f')][_0x43d9('0x3f')]){_0x133788[_0x43d9('0x40')]=[{'all':!![]}];}_0x133788=_[_0x43d9('0x3b')]({},_0x133788,_0x419d17[_0x43d9('0x3e')]);return db[_0x43d9('0x2b')][_0x43d9('0x47')](_0x133788)[_0x43d9('0x23')](handleEntityNotFound(_0x100d5a,null))[_0x43d9('0x23')](respondWithResult(_0x100d5a,null))[_0x43d9('0x43')](handleError(_0x100d5a,null));};exports[_0x43d9('0x48')]=function(_0x15d927,_0x40eb0f){return db['VoiceQueuesLog']['create'](_0x15d927['body'],{})['then'](respondWithResult(_0x40eb0f,0xc9))[_0x43d9('0x43')](handleError(_0x40eb0f,null));};exports['update']=function(_0x2e7ae0,_0x212123){if(_0x2e7ae0['body']['id']){delete _0x2e7ae0[_0x43d9('0x49')]['id'];}return db[_0x43d9('0x2b')][_0x43d9('0x47')]({'where':{'id':_0x2e7ae0['params']['id']}})[_0x43d9('0x23')](handleEntityNotFound(_0x212123,null))[_0x43d9('0x23')](saveUpdates(_0x2e7ae0[_0x43d9('0x49')],null))['then'](respondWithResult(_0x212123,null))['catch'](handleError(_0x212123,null));};exports[_0x43d9('0x24')]=function(_0x19d3c5,_0x525f54){return db[_0x43d9('0x2b')][_0x43d9('0x47')]({'where':{'id':_0x19d3c5[_0x43d9('0x45')]['id']}})[_0x43d9('0x23')](handleEntityNotFound(_0x525f54,null))[_0x43d9('0x23')](removeEntity(_0x525f54,null))['catch'](handleError(_0x525f54,null));};
\ No newline at end of file
+var _0x4d79=['../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','error','stack','send','map','rawAttributes','fieldName','type','model','name','query','filters','intersection','attributes','fields','hasOwnProperty','sort','pick','filter','where','merge','options','VoiceQueuesLog','includeAll','include','findAll','catch','show','params','keys','length','find','create','body','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api'];(function(_0x4f9882,_0x37a058){var _0x2f5d86=function(_0x56ab9a){while(--_0x56ab9a){_0x4f9882['push'](_0x4f9882['shift']());}};_0x2f5d86(++_0x37a058);}(_0x4d79,0x72));var _0x94d7=function(_0x225f50,_0x48a77d){_0x225f50=_0x225f50-0x0;var _0x19d003=_0x4d79[_0x225f50];return _0x19d003;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x94d7('0x0'));var zipdir=require(_0x94d7('0x1'));var jsonpatch=require(_0x94d7('0x2'));var rp=require(_0x94d7('0x3'));var moment=require('moment');var BPromise=require(_0x94d7('0x4'));var Mustache=require('mustache');var util=require(_0x94d7('0x5'));var path=require(_0x94d7('0x6'));var sox=require(_0x94d7('0x7'));var csv=require(_0x94d7('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x94d7('0x9'));var _=require(_0x94d7('0xa'));var squel=require('squel');var crypto=require(_0x94d7('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x94d7('0xc'));var toCsv=require(_0x94d7('0x8'));var querystring=require(_0x94d7('0xd'));var Papa=require(_0x94d7('0xe'));var Redis=require(_0x94d7('0xf'));var authService=require(_0x94d7('0x10'));var qs=require(_0x94d7('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x94d7('0x12'));var logger=require('../../config/logger')(_0x94d7('0x13'));var utils=require('../../config/utils');var config=require(_0x94d7('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4b57ef,_0x554d18){_0x554d18=_0x554d18||0xcc;return function(_0x2747b1){if(_0x2747b1){return _0x4b57ef[_0x94d7('0x15')](_0x554d18);}return _0x4b57ef[_0x94d7('0x16')](_0x554d18)[_0x94d7('0x17')]();};}function respondWithResult(_0x55c881,_0x551adb){_0x551adb=_0x551adb||0xc8;return function(_0x6a59e1){if(_0x6a59e1){return _0x55c881[_0x94d7('0x16')](_0x551adb)[_0x94d7('0x18')](_0x6a59e1);}};}function respondWithFilteredResult(_0x453ee1,_0x5d02d7){return function(_0x51d52a){if(_0x51d52a){var _0x10c30d=typeof _0x5d02d7[_0x94d7('0x19')]===_0x94d7('0x1a')&&typeof _0x5d02d7[_0x94d7('0x1b')]==='undefined';var _0x4dcaeb=_0x51d52a[_0x94d7('0x1c')];var _0x1bf90c=_0x10c30d?0x0:_0x5d02d7[_0x94d7('0x19')];var _0x743617=_0x10c30d?_0x51d52a['count']:_0x5d02d7[_0x94d7('0x19')]+_0x5d02d7[_0x94d7('0x1b')];var _0x589914;if(_0x743617>=_0x4dcaeb){_0x743617=_0x4dcaeb;_0x589914=0xc8;}else{_0x589914=0xce;}_0x453ee1[_0x94d7('0x16')](_0x589914);return _0x453ee1[_0x94d7('0x1d')](_0x94d7('0x1e'),_0x1bf90c+'-'+_0x743617+'/'+_0x4dcaeb)['json'](_0x51d52a);}return null;};}function patchUpdates(_0x39e2a4){return function(_0x18ea22){try{jsonpatch['apply'](_0x18ea22,_0x39e2a4,!![]);}catch(_0x67c6e5){return BPromise['reject'](_0x67c6e5);}return _0x18ea22['save']();};}function saveUpdates(_0x1680e8,_0x32df3d){return function(_0xc197ae){if(_0xc197ae){return _0xc197ae[_0x94d7('0x1f')](_0x1680e8)[_0x94d7('0x20')](function(_0x585f17){return _0x585f17;});}return null;};}function removeEntity(_0x5cea76,_0x47fc3b){return function(_0x7439a6){if(_0x7439a6){return _0x7439a6[_0x94d7('0x21')]()[_0x94d7('0x20')](function(){_0x5cea76['status'](0xcc)[_0x94d7('0x17')]();});}};}function handleEntityNotFound(_0x199e1a,_0x1f8ecb){return function(_0x579044){if(!_0x579044){_0x199e1a[_0x94d7('0x15')](0x194);}return _0x579044;};}function handleError(_0x302f16,_0x13ea81){_0x13ea81=_0x13ea81||0x1f4;return function(_0x84cc9b){logger[_0x94d7('0x22')](_0x84cc9b[_0x94d7('0x23')]);if(_0x84cc9b['name']){delete _0x84cc9b['name'];}_0x302f16['status'](_0x13ea81)[_0x94d7('0x24')](_0x84cc9b);};}exports['index']=function(_0x527cb5,_0x1939c6){var _0x34475b={},_0x2da43c={},_0x6a14e5={'count':0x0,'rows':[]};var _0x36b7be=_[_0x94d7('0x25')](db['VoiceQueuesLog'][_0x94d7('0x26')],function(_0x5d251a){return{'name':_0x5d251a[_0x94d7('0x27')],'type':_0x5d251a[_0x94d7('0x28')]['key']};});_0x2da43c[_0x94d7('0x29')]=_['map'](_0x36b7be,_0x94d7('0x2a'));_0x2da43c[_0x94d7('0x2b')]=_['keys'](_0x527cb5[_0x94d7('0x2b')]);_0x2da43c[_0x94d7('0x2c')]=_[_0x94d7('0x2d')](_0x2da43c[_0x94d7('0x29')],_0x2da43c[_0x94d7('0x2b')]);_0x34475b[_0x94d7('0x2e')]=_['intersection'](_0x2da43c[_0x94d7('0x29')],qs[_0x94d7('0x2f')](_0x527cb5[_0x94d7('0x2b')][_0x94d7('0x2f')]));_0x34475b['attributes']=_0x34475b['attributes']['length']?_0x34475b[_0x94d7('0x2e')]:_0x2da43c[_0x94d7('0x29')];if(!_0x527cb5[_0x94d7('0x2b')][_0x94d7('0x30')]('nolimit')){_0x34475b[_0x94d7('0x1b')]=qs['limit'](_0x527cb5[_0x94d7('0x2b')][_0x94d7('0x1b')]);_0x34475b[_0x94d7('0x19')]=qs[_0x94d7('0x19')](_0x527cb5[_0x94d7('0x2b')][_0x94d7('0x19')]);}_0x34475b['order']=qs[_0x94d7('0x31')](_0x527cb5['query'][_0x94d7('0x31')]);_0x34475b['where']=qs['filters'](_[_0x94d7('0x32')](_0x527cb5[_0x94d7('0x2b')],_0x2da43c[_0x94d7('0x2c')]),_0x36b7be);if(_0x527cb5[_0x94d7('0x2b')][_0x94d7('0x33')]){_0x34475b[_0x94d7('0x34')]=_[_0x94d7('0x35')](_0x34475b[_0x94d7('0x34')],{'$or':_['map'](_0x36b7be,function(_0x2297a5){if(_0x2297a5[_0x94d7('0x28')]!=='VIRTUAL'){var _0x30a6cc={};_0x30a6cc[_0x2297a5[_0x94d7('0x2a')]]={'$like':'%'+_0x527cb5['query'][_0x94d7('0x33')]+'%'};return _0x30a6cc;}})});}_0x34475b=_[_0x94d7('0x35')]({},_0x34475b,_0x527cb5[_0x94d7('0x36')]);var _0x5d3a71={'where':_0x34475b['where']};return db[_0x94d7('0x37')][_0x94d7('0x1c')](_0x5d3a71)[_0x94d7('0x20')](function(_0x43d5c9){_0x6a14e5[_0x94d7('0x1c')]=_0x43d5c9;if(_0x527cb5[_0x94d7('0x2b')][_0x94d7('0x38')]){_0x34475b[_0x94d7('0x39')]=[{'all':!![]}];}return db[_0x94d7('0x37')][_0x94d7('0x3a')](_0x34475b);})[_0x94d7('0x20')](function(_0x1084d8){_0x6a14e5['rows']=_0x1084d8;return _0x6a14e5;})[_0x94d7('0x20')](respondWithFilteredResult(_0x1939c6,_0x34475b))[_0x94d7('0x3b')](handleError(_0x1939c6,null));};exports[_0x94d7('0x3c')]=function(_0x3c07a4,_0x4f791b){var _0xd60046={'raw':!![],'where':{'id':_0x3c07a4[_0x94d7('0x3d')]['id']}},_0x3af2d1={};_0x3af2d1[_0x94d7('0x29')]=_[_0x94d7('0x3e')](db[_0x94d7('0x37')][_0x94d7('0x26')]);_0x3af2d1['query']=_[_0x94d7('0x3e')](_0x3c07a4[_0x94d7('0x2b')]);_0x3af2d1[_0x94d7('0x2c')]=_[_0x94d7('0x2d')](_0x3af2d1[_0x94d7('0x29')],_0x3af2d1[_0x94d7('0x2b')]);_0xd60046[_0x94d7('0x2e')]=_['intersection'](_0x3af2d1[_0x94d7('0x29')],qs[_0x94d7('0x2f')](_0x3c07a4[_0x94d7('0x2b')]['fields']));_0xd60046[_0x94d7('0x2e')]=_0xd60046['attributes'][_0x94d7('0x3f')]?_0xd60046[_0x94d7('0x2e')]:_0x3af2d1[_0x94d7('0x29')];if(_0x3c07a4[_0x94d7('0x2b')][_0x94d7('0x38')]){_0xd60046[_0x94d7('0x39')]=[{'all':!![]}];}_0xd60046=_['merge']({},_0xd60046,_0x3c07a4[_0x94d7('0x36')]);return db[_0x94d7('0x37')][_0x94d7('0x40')](_0xd60046)[_0x94d7('0x20')](handleEntityNotFound(_0x4f791b,null))['then'](respondWithResult(_0x4f791b,null))['catch'](handleError(_0x4f791b,null));};exports[_0x94d7('0x41')]=function(_0x48dd4b,_0x4b4e5d){return db['VoiceQueuesLog'][_0x94d7('0x41')](_0x48dd4b[_0x94d7('0x42')],{})[_0x94d7('0x20')](respondWithResult(_0x4b4e5d,0xc9))[_0x94d7('0x3b')](handleError(_0x4b4e5d,null));};exports[_0x94d7('0x1f')]=function(_0x6ed7ee,_0x563d90){if(_0x6ed7ee[_0x94d7('0x42')]['id']){delete _0x6ed7ee[_0x94d7('0x42')]['id'];}return db['VoiceQueuesLog'][_0x94d7('0x40')]({'where':{'id':_0x6ed7ee[_0x94d7('0x3d')]['id']}})[_0x94d7('0x20')](handleEntityNotFound(_0x563d90,null))[_0x94d7('0x20')](saveUpdates(_0x6ed7ee[_0x94d7('0x42')],null))[_0x94d7('0x20')](respondWithResult(_0x563d90,null))[_0x94d7('0x3b')](handleError(_0x563d90,null));};exports['destroy']=function(_0x5610d6,_0x4d3427){return db[_0x94d7('0x37')][_0x94d7('0x40')]({'where':{'id':_0x5610d6[_0x94d7('0x3d')]['id']}})[_0x94d7('0x20')](handleEntityNotFound(_0x4d3427,null))['then'](removeEntity(_0x4d3427,null))[_0x94d7('0x3b')](handleError(_0x4d3427,null));};
\ No newline at end of file
index 801bf01..861182d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e70=['rimraf','../../config/environment','./voiceQueuesLog.attributes','exports','define','voice_queues_log','event_dtm','event','dtm','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x19b737,_0x3908b7){var _0x29f19f=function(_0x1d315b){while(--_0x1d315b){_0x19b737['push'](_0x19b737['shift']());}};_0x29f19f(++_0x3908b7);}(_0x4e70,0x69));var _0x04e7=function(_0x29d915,_0x54a040){_0x29d915=_0x29d915-0x0;var _0x160f86=_0x4e70[_0x29d915];return _0x160f86;};'use strict';var _=require(_0x04e7('0x0'));var util=require(_0x04e7('0x1'));var logger=require(_0x04e7('0x2'))(_0x04e7('0x3'));var moment=require('moment');var BPromise=require(_0x04e7('0x4'));var rp=require(_0x04e7('0x5'));var fs=require('fs');var path=require(_0x04e7('0x6'));var rimraf=require(_0x04e7('0x7'));var config=require(_0x04e7('0x8'));var attributes=require(_0x04e7('0x9'));module[_0x04e7('0xa')]=function(_0x324945,_0x3d0cef){return _0x324945[_0x04e7('0xb')]('VoiceQueuesLog',attributes,{'tableName':_0x04e7('0xc'),'paranoid':![],'indexes':[{'name':_0x04e7('0xd'),'fields':[_0x04e7('0xe'),_0x04e7('0xf')]}],'timestamps':![]});};
\ No newline at end of file
+var _0xd5b9=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceQueuesLog.attributes','exports','define','VoiceQueuesLog','voice_queues_log','event','dtm','util'];(function(_0x505289,_0x423747){var _0x2d752=function(_0x184a6f){while(--_0x184a6f){_0x505289['push'](_0x505289['shift']());}};_0x2d752(++_0x423747);}(_0xd5b9,0xe0));var _0x9d5b=function(_0x500f52,_0x11d448){_0x500f52=_0x500f52-0x0;var _0x55ac2e=_0xd5b9[_0x500f52];return _0x55ac2e;};'use strict';var _=require('lodash');var util=require(_0x9d5b('0x0'));var logger=require(_0x9d5b('0x1'))('api');var moment=require(_0x9d5b('0x2'));var BPromise=require(_0x9d5b('0x3'));var rp=require(_0x9d5b('0x4'));var fs=require('fs');var path=require(_0x9d5b('0x5'));var rimraf=require(_0x9d5b('0x6'));var config=require(_0x9d5b('0x7'));var attributes=require(_0x9d5b('0x8'));module[_0x9d5b('0x9')]=function(_0x5cbac5,_0x1c3702){return _0x5cbac5[_0x9d5b('0xa')](_0x9d5b('0xb'),attributes,{'tableName':_0x9d5b('0xc'),'paranoid':![],'indexes':[{'name':'event_dtm','fields':[_0x9d5b('0xd'),_0x9d5b('0xe')]}],'timestamps':![]});};
\ No newline at end of file
index 1f898f9..62e84f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e4f=['../../config/utils','../../config/logger','../../config/environment','http','request','then','info','VoiceQueuesLog,\x20%s,\x20%s','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','moment','randomstring','ioredis'];(function(_0x310504,_0x26ad95){var _0x5b36d0=function(_0x253f28){while(--_0x253f28){_0x310504['push'](_0x310504['shift']());}};_0x5b36d0(++_0x26ad95);}(_0x1e4f,0x1a0));var _0xf1e4=function(_0x11f418,_0x16283a){_0x11f418=_0x11f418-0x0;var _0x5d7f70=_0x1e4f[_0x11f418];return _0x5d7f70;};'use strict';var _=require(_0xf1e4('0x0'));var util=require('util');var moment=require(_0xf1e4('0x1'));var BPromise=require('bluebird');var rs=require(_0xf1e4('0x2'));var fs=require('fs');var Redis=require(_0xf1e4('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xf1e4('0x4'));var logger=require(_0xf1e4('0x5'))('rpc');var config=require(_0xf1e4('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0xf1e4('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1a04f3,_0x2c253d,_0x57c187){return new BPromise(function(_0x2ea095,_0x137e3d){return client[_0xf1e4('0x8')](_0x1a04f3,_0x57c187)[_0xf1e4('0x9')](function(_0x577e7a){logger[_0xf1e4('0xa')](_0xf1e4('0xb'),_0x2c253d,'request\x20sent');logger[_0xf1e4('0xc')](_0xf1e4('0xd'),_0x2c253d,_0xf1e4('0xe'),JSON[_0xf1e4('0xf')](_0x577e7a));if(_0x577e7a['error']){if(_0x577e7a['error']['code']===0x1f4){logger[_0xf1e4('0x10')]('VoiceQueuesLog,\x20%s,\x20%s',_0x2c253d,_0x577e7a[_0xf1e4('0x10')][_0xf1e4('0x11')]);return _0x137e3d(_0x577e7a[_0xf1e4('0x10')]['message']);}logger[_0xf1e4('0x10')](_0xf1e4('0xb'),_0x2c253d,_0x577e7a[_0xf1e4('0x10')]['message']);return _0x2ea095(_0x577e7a[_0xf1e4('0x10')][_0xf1e4('0x11')]);}else{logger['info'](_0xf1e4('0xb'),_0x2c253d,'request\x20sent');_0x2ea095(_0x577e7a[_0xf1e4('0x12')][_0xf1e4('0x11')]);}})[_0xf1e4('0x13')](function(_0x418e3e){logger[_0xf1e4('0x10')]('VoiceQueuesLog,\x20%s,\x20%s',_0x2c253d,_0x418e3e);_0x137e3d(_0x418e3e);});});}
\ No newline at end of file
+var _0x2fc7=['bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceQueuesLog,\x20%s,\x20%s','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','util'];(function(_0x26b48d,_0x5a7ebb){var _0x338016=function(_0x49678d){while(--_0x49678d){_0x26b48d['push'](_0x26b48d['shift']());}};_0x338016(++_0x5a7ebb);}(_0x2fc7,0x19d));var _0x72fc=function(_0x364b23,_0xdfd2ff){_0x364b23=_0x364b23-0x0;var _0x381239=_0x2fc7[_0x364b23];return _0x381239;};'use strict';var _=require('lodash');var util=require(_0x72fc('0x0'));var moment=require('moment');var BPromise=require(_0x72fc('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x72fc('0x2'));var db=require(_0x72fc('0x3'))['db'];var utils=require(_0x72fc('0x4'));var logger=require(_0x72fc('0x5'))(_0x72fc('0x6'));var config=require(_0x72fc('0x7'));var jayson=require(_0x72fc('0x8'));var client=jayson[_0x72fc('0x9')][_0x72fc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x11079d,_0x3fb428,_0x81d4b8){return new BPromise(function(_0x4bdc31,_0x14143d){return client[_0x72fc('0xb')](_0x11079d,_0x81d4b8)[_0x72fc('0xc')](function(_0x1374f7){logger[_0x72fc('0xd')](_0x72fc('0xe'),_0x3fb428,'request\x20sent');logger[_0x72fc('0xf')](_0x72fc('0x10'),_0x3fb428,_0x72fc('0x11'),JSON[_0x72fc('0x12')](_0x1374f7));if(_0x1374f7[_0x72fc('0x13')]){if(_0x1374f7[_0x72fc('0x13')][_0x72fc('0x14')]===0x1f4){logger[_0x72fc('0x13')]('VoiceQueuesLog,\x20%s,\x20%s',_0x3fb428,_0x1374f7['error'][_0x72fc('0x15')]);return _0x14143d(_0x1374f7[_0x72fc('0x13')][_0x72fc('0x15')]);}logger['error']('VoiceQueuesLog,\x20%s,\x20%s',_0x3fb428,_0x1374f7[_0x72fc('0x13')][_0x72fc('0x15')]);return _0x4bdc31(_0x1374f7['error'][_0x72fc('0x15')]);}else{logger[_0x72fc('0xd')](_0x72fc('0xe'),_0x3fb428,'request\x20sent');_0x4bdc31(_0x1374f7[_0x72fc('0x16')]['message']);}})['catch'](function(_0x44f6d0){logger['error'](_0x72fc('0xe'),_0x3fb428,_0x44f6d0);_0x14143d(_0x44f6d0);});});}
\ No newline at end of file
index 4858cb7..12ee80b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4dd=['downloads','/:id/transcribe','downloadTranscribe','post','create','runTranscribe','put','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceRecording.controller','get','index','/describe','/:id','isAuthenticated','show','download'];(function(_0x558984,_0x34e386){var _0x4160fb=function(_0x3455e6){while(--_0x3455e6){_0x558984['push'](_0x558984['shift']());}};_0x4160fb(++_0x34e386);}(_0xf4dd,0x185));var _0xdf4d=function(_0x187873,_0x2086cf){_0x187873=_0x187873-0x0;var _0x3132b0=_0xf4dd[_0x187873];return _0x3132b0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xdf4d('0x0'));var timeout=require(_0xdf4d('0x1'));var express=require(_0xdf4d('0x2'));var router=express[_0xdf4d('0x3')]();var fs_extra=require(_0xdf4d('0x4'));var auth=require(_0xdf4d('0x5'));var interaction=require(_0xdf4d('0x6'));var config=require(_0xdf4d('0x7'));var controller=require(_0xdf4d('0x8'));router[_0xdf4d('0x9')]('/',auth['isAuthenticated'](),controller[_0xdf4d('0xa')]);router[_0xdf4d('0x9')](_0xdf4d('0xb'),auth['isAuthenticated'](),controller['describe']);router[_0xdf4d('0x9')](_0xdf4d('0xc'),auth[_0xdf4d('0xd')](),controller[_0xdf4d('0xe')]);router[_0xdf4d('0x9')]('/:id/download',auth[_0xdf4d('0xd')](),controller[_0xdf4d('0xf')]);router[_0xdf4d('0x9')]('/:id/downloads',controller[_0xdf4d('0x10')]);router[_0xdf4d('0x9')](_0xdf4d('0x11'),auth[_0xdf4d('0xd')](),controller[_0xdf4d('0x12')]);router[_0xdf4d('0x13')]('/',auth[_0xdf4d('0xd')](),controller[_0xdf4d('0x14')]);router[_0xdf4d('0x13')]('/:id/transcribe',auth['isAuthenticated'](),controller[_0xdf4d('0x15')]);router[_0xdf4d('0x16')](_0xdf4d('0xc'),auth[_0xdf4d('0xd')](),controller[_0xdf4d('0x17')]);router[_0xdf4d('0x18')](_0xdf4d('0xc'),auth[_0xdf4d('0xd')](),controller[_0xdf4d('0x19')]);module[_0xdf4d('0x1a')]=router;
\ No newline at end of file
+var _0x70b5=['downloads','/:id/transcribe','downloadTranscribe','post','runTranscribe','update','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/download','download'];(function(_0x16cf18,_0x248d91){var _0xe9f480=function(_0x436b21){while(--_0x436b21){_0x16cf18['push'](_0x16cf18['shift']());}};_0xe9f480(++_0x248d91);}(_0x70b5,0x105));var _0x570b=function(_0xa5a920,_0x2d8772){_0xa5a920=_0xa5a920-0x0;var _0x596618=_0x70b5[_0xa5a920];return _0x596618;};'use strict';var multer=require(_0x570b('0x0'));var util=require(_0x570b('0x1'));var path=require('path');var timeout=require(_0x570b('0x2'));var express=require(_0x570b('0x3'));var router=express[_0x570b('0x4')]();var fs_extra=require(_0x570b('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./voiceRecording.controller');router['get']('/',auth[_0x570b('0x6')](),controller[_0x570b('0x7')]);router[_0x570b('0x8')](_0x570b('0x9'),auth['isAuthenticated'](),controller[_0x570b('0xa')]);router[_0x570b('0x8')](_0x570b('0xb'),auth[_0x570b('0x6')](),controller[_0x570b('0xc')]);router['get'](_0x570b('0xd'),auth[_0x570b('0x6')](),controller[_0x570b('0xe')]);router[_0x570b('0x8')]('/:id/downloads',controller[_0x570b('0xf')]);router[_0x570b('0x8')](_0x570b('0x10'),auth[_0x570b('0x6')](),controller[_0x570b('0x11')]);router[_0x570b('0x12')]('/',auth[_0x570b('0x6')](),controller['create']);router[_0x570b('0x12')](_0x570b('0x10'),auth['isAuthenticated'](),controller[_0x570b('0x13')]);router['put']('/:id',auth[_0x570b('0x6')](),controller[_0x570b('0x14')]);router[_0x570b('0x15')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x570b('0x16')]=router;
\ No newline at end of file
index a5023b0..2d4bd0b 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(_0x4b7895,_0x3c4f5d){var _0x264180=function(_0xe0e861){while(--_0xe0e861){_0x4b7895['push'](_0x4b7895['shift']());}};_0x264180(++_0x3c4f5d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0xa9e0[_0x3b5250];return _0xc844a1;};'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(_0x1ccdf7,_0x215d5a){var _0x52a0ae=function(_0x40324a){while(--_0x40324a){_0x1ccdf7['push'](_0x1ccdf7['shift']());}};_0x52a0ae(++_0x215d5a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xa9e0[_0x37bd26];return _0xe83dc4;};'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 b941026..fa0c276 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd138=['[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','bucket','Bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeStatus','TranscriptionJobStatus','runTranscribe','findOne','secrets','Voice\x20Recording\x20not\x20found','Setting','transcribeRegion','language','Transcribe\x20not\x20configured','sentiment','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','transcribeAccountId','data1','data2','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','tempSentiment','runSentiment','writeFile','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','.txt','eml-format','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','fs-extra','squel','crypto','jsforce','papaparse','aws-sdk','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','json','limit','undefined','count','offset','status','set','Content-Range','apply','reject','save','update','then','name','send','map','VoiceRecording','rawAttributes','fieldName','type','key','model','differenceBy','format','query','keys','filters','intersection','attributes','fields','length','sort','filter','where','merge','options','includeAll','include','findAll','rows','catch','show','find','create','body','params','describe','uniqueid','value','%s.cypher','existsSync','decryptFile','recording','ValidationError','VoiceRecording\x20not\x20found','download','filename','message','Not\x20found','downloads','../../components/encryptor','sequelize','col','token','$and','push','Sequelize','extname','unlink','destroy','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','listBuckets','createBucket','upload','TranscribeService','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync'];(function(_0x2444bb,_0x218878){var _0x57df0d=function(_0x4d757f){while(--_0x4d757f){_0x2444bb['push'](_0x2444bb['shift']());}};_0x57df0d(++_0x218878);}(_0xd138,0xba));var _0x8d13=function(_0x1dfebf,_0x1d6791){_0x1dfebf=_0x1dfebf-0x0;var _0x5ec3fe=_0xd138[_0x1dfebf];return _0x5ec3fe;};'use strict';var emlformat=require(_0x8d13('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8d13('0x1'));var jsonpatch=require(_0x8d13('0x2'));var rp=require(_0x8d13('0x3'));var moment=require(_0x8d13('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x8d13('0x5'));var sox=require(_0x8d13('0x6'));var csv=require(_0x8d13('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8d13('0x8'));var _=require('lodash');var squel=require(_0x8d13('0x9'));var crypto=require(_0x8d13('0xa'));var jsforce=require(_0x8d13('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x8d13('0x7'));var querystring=require('querystring');var Papa=require(_0x8d13('0xc'));var AWS=require(_0x8d13('0xd'));var uuidv4=require('uuid/v4');var Redis=require('ioredis');var authService=require(_0x8d13('0xe'));var qs=require(_0x8d13('0xf'));var as=require(_0x8d13('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8d13('0x11'));var utils=require(_0x8d13('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x8d13('0x13'));var db=require(_0x8d13('0x14'))['db'];function respondWithStatusCode(_0x30d71c,_0x392087){_0x392087=_0x392087||0xcc;return function(_0x2e1304){if(_0x2e1304){return _0x30d71c[_0x8d13('0x15')](_0x392087);}return _0x30d71c['status'](_0x392087)[_0x8d13('0x16')]();};}function respondWithResult(_0x144403,_0x233869){_0x233869=_0x233869||0xc8;return function(_0x5023c4){if(_0x5023c4){return _0x144403['status'](_0x233869)[_0x8d13('0x17')](_0x5023c4);}};}function respondWithFilteredResult(_0x4c5cab,_0xed45ef){return function(_0x5b1e02){if(_0x5b1e02){var _0x9b5313=typeof _0xed45ef['offset']==='undefined'&&typeof _0xed45ef[_0x8d13('0x18')]===_0x8d13('0x19');var _0x64049f=_0x5b1e02[_0x8d13('0x1a')];var _0x184a62=_0x9b5313?0x0:_0xed45ef[_0x8d13('0x1b')];var _0x5db8cc=_0x9b5313?_0x5b1e02['count']:_0xed45ef[_0x8d13('0x1b')]+_0xed45ef[_0x8d13('0x18')];var _0x73b286;if(_0x5db8cc>=_0x64049f){_0x5db8cc=_0x64049f;_0x73b286=0xc8;}else{_0x73b286=0xce;}_0x4c5cab[_0x8d13('0x1c')](_0x73b286);return _0x4c5cab[_0x8d13('0x1d')](_0x8d13('0x1e'),_0x184a62+'-'+_0x5db8cc+'/'+_0x64049f)[_0x8d13('0x17')](_0x5b1e02);}return null;};}function patchUpdates(_0x17f7e8){return function(_0x3b464b){try{jsonpatch[_0x8d13('0x1f')](_0x3b464b,_0x17f7e8,!![]);}catch(_0x128617){return BPromise[_0x8d13('0x20')](_0x128617);}return _0x3b464b[_0x8d13('0x21')]();};}function saveUpdates(_0x355e2d,_0x418018){return function(_0x4a4f86){if(_0x4a4f86){return _0x4a4f86[_0x8d13('0x22')](_0x355e2d)[_0x8d13('0x23')](function(_0xfee3c3){return _0xfee3c3;});}return null;};}function removeEntity(_0x256aa4,_0x44541e){return function(_0x5dba22){if(_0x5dba22){return _0x5dba22['destroy']()[_0x8d13('0x23')](function(){_0x256aa4[_0x8d13('0x1c')](0xcc)[_0x8d13('0x16')]();});}};}function handleEntityNotFound(_0xf82471,_0xcc5f0c){return function(_0x8e737b){if(!_0x8e737b){_0xf82471['sendStatus'](0x194);}return _0x8e737b;};}function handleError(_0x303bf2,_0x3e5cad){_0x3e5cad=_0x3e5cad||0x1f4;return function(_0x236c85){logger['error'](_0x236c85['stack']);if(_0x236c85[_0x8d13('0x24')]){delete _0x236c85[_0x8d13('0x24')];}_0x303bf2[_0x8d13('0x1c')](_0x3e5cad)[_0x8d13('0x25')](_0x236c85);};}exports['index']=function(_0x2a25af,_0x568c9b){var _0x4b950e={},_0x40f72d={},_0x521cd3={'count':0x0,'rows':[]};var _0x283182=_[_0x8d13('0x26')](db[_0x8d13('0x27')][_0x8d13('0x28')],function(_0x20d7ff){return{'name':_0x20d7ff[_0x8d13('0x29')],'type':_0x20d7ff[_0x8d13('0x2a')][_0x8d13('0x2b')]};});_0x40f72d[_0x8d13('0x2c')]=_[_0x8d13('0x2d')](_[_0x8d13('0x26')](_0x283182,_0x8d13('0x24')),[_0x8d13('0x2e')]);_0x40f72d[_0x8d13('0x2f')]=_[_0x8d13('0x30')](_0x2a25af[_0x8d13('0x2f')]);_0x40f72d[_0x8d13('0x31')]=_[_0x8d13('0x32')](_0x40f72d['model'],_0x40f72d[_0x8d13('0x2f')]);_0x4b950e[_0x8d13('0x33')]=_[_0x8d13('0x32')](_0x40f72d[_0x8d13('0x2c')],qs[_0x8d13('0x34')](_0x2a25af[_0x8d13('0x2f')][_0x8d13('0x34')]));_0x4b950e['attributes']=_0x4b950e[_0x8d13('0x33')][_0x8d13('0x35')]?_0x4b950e['attributes']:_0x40f72d['model'];if(!_0x2a25af[_0x8d13('0x2f')]['hasOwnProperty']('nolimit')){_0x4b950e[_0x8d13('0x18')]=qs[_0x8d13('0x18')](_0x2a25af['query']['limit']);_0x4b950e['offset']=qs[_0x8d13('0x1b')](_0x2a25af[_0x8d13('0x2f')][_0x8d13('0x1b')]);}_0x4b950e['order']=qs[_0x8d13('0x36')](_0x2a25af[_0x8d13('0x2f')][_0x8d13('0x36')]);_0x4b950e['where']=qs[_0x8d13('0x31')](_['pick'](_0x2a25af['query'],_0x40f72d[_0x8d13('0x31')]),_0x283182);if(_0x2a25af[_0x8d13('0x2f')][_0x8d13('0x37')]){_0x4b950e[_0x8d13('0x38')]=_[_0x8d13('0x39')](_0x4b950e[_0x8d13('0x38')],{'$or':_[_0x8d13('0x26')](_0x283182,function(_0xaad13d){if(_0xaad13d[_0x8d13('0x2a')]!=='VIRTUAL'){var _0x3bdbd9={};_0x3bdbd9[_0xaad13d[_0x8d13('0x24')]]={'$like':'%'+_0x2a25af[_0x8d13('0x2f')][_0x8d13('0x37')]+'%'};return _0x3bdbd9;}})});}_0x4b950e=_[_0x8d13('0x39')]({},_0x4b950e,_0x2a25af[_0x8d13('0x3a')]);var _0x3aac8c={'where':_0x4b950e[_0x8d13('0x38')]};return db[_0x8d13('0x27')][_0x8d13('0x1a')](_0x3aac8c)[_0x8d13('0x23')](function(_0x47d203){_0x521cd3[_0x8d13('0x1a')]=_0x47d203;if(_0x2a25af[_0x8d13('0x2f')][_0x8d13('0x3b')]){_0x4b950e[_0x8d13('0x3c')]=[{'all':!![]}];}return db['VoiceRecording'][_0x8d13('0x3d')](_0x4b950e);})['then'](function(_0x3f7acd){_0x521cd3[_0x8d13('0x3e')]=_0x3f7acd;return _0x521cd3;})[_0x8d13('0x23')](respondWithFilteredResult(_0x568c9b,_0x4b950e))[_0x8d13('0x3f')](handleError(_0x568c9b,null));};exports[_0x8d13('0x40')]=function(_0x2f1041,_0x40ef3e){var _0x3f9246={'raw':![],'where':{'id':_0x2f1041['params']['id']}},_0x358067={};_0x358067[_0x8d13('0x2c')]=_[_0x8d13('0x30')](db[_0x8d13('0x27')]['rawAttributes']);_0x358067[_0x8d13('0x2f')]=_['keys'](_0x2f1041['query']);_0x358067['filters']=_['intersection'](_0x358067[_0x8d13('0x2c')],_0x358067[_0x8d13('0x2f')]);_0x3f9246[_0x8d13('0x33')]=_['intersection'](_0x358067[_0x8d13('0x2c')],qs[_0x8d13('0x34')](_0x2f1041[_0x8d13('0x2f')][_0x8d13('0x34')]));_0x3f9246[_0x8d13('0x33')]=_0x3f9246[_0x8d13('0x33')]['length']?_0x3f9246[_0x8d13('0x33')]:_0x358067[_0x8d13('0x2c')];if(_0x2f1041[_0x8d13('0x2f')][_0x8d13('0x3b')]){_0x3f9246['include']=[{'all':!![]}];}_0x3f9246=_[_0x8d13('0x39')]({},_0x3f9246,_0x2f1041[_0x8d13('0x3a')]);return db[_0x8d13('0x27')][_0x8d13('0x41')](_0x3f9246)[_0x8d13('0x23')](handleEntityNotFound(_0x40ef3e,null))[_0x8d13('0x23')](respondWithResult(_0x40ef3e,null))[_0x8d13('0x3f')](handleError(_0x40ef3e,null));};exports[_0x8d13('0x42')]=function(_0x1e689e,_0x56fc13){return db['VoiceRecording'][_0x8d13('0x42')](_0x1e689e[_0x8d13('0x43')],{})['then'](respondWithResult(_0x56fc13,0xc9))[_0x8d13('0x3f')](handleError(_0x56fc13,null));};exports['update']=function(_0x178f2d,_0x37238d){if(_0x178f2d['body']['id']){delete _0x178f2d[_0x8d13('0x43')]['id'];}return db[_0x8d13('0x27')]['find']({'where':{'id':_0x178f2d[_0x8d13('0x44')]['id']}})[_0x8d13('0x23')](handleEntityNotFound(_0x37238d,null))[_0x8d13('0x23')](saveUpdates(_0x178f2d[_0x8d13('0x43')],null))[_0x8d13('0x23')](respondWithResult(_0x37238d,null))[_0x8d13('0x3f')](handleError(_0x37238d,null));};exports[_0x8d13('0x45')]=function(_0x4904c5,_0x4125d8){return db['VoiceRecording']['describe']()['then'](respondWithResult(_0x4125d8,null))[_0x8d13('0x3f')](handleError(_0x4125d8,null));};exports['download']=function(_0x5ab277,_0x52611d,_0x350e7c){var _0x395c56=require('../../components/encryptor');var _0x127f9e=![];var _0x2b9dd5={};if(_0x5ab277['query']['type']&&_0x5ab277[_0x8d13('0x2f')][_0x8d13('0x2a')]===_0x8d13('0x46')){_0x2b9dd5[_0x8d13('0x46')]=_0x5ab277[_0x8d13('0x44')]['id'];}else{_0x2b9dd5['id']=_0x5ab277[_0x8d13('0x44')]['id'];}return db[_0x8d13('0x27')]['find']({'where':_0x2b9dd5,'attributes':['id',_0x8d13('0x47')],'raw':!![]})[_0x8d13('0x23')](handleEntityNotFound(_0x52611d,null))[_0x8d13('0x23')](function(_0x312364){if(_0x312364){var _0x1b8a16=_0x312364['value'];var _0x1beb36=util[_0x8d13('0x2e')](_0x8d13('0x48'),_0x1b8a16);if(fs[_0x8d13('0x49')](_0x1beb36)){_0x127f9e=!![];return _0x395c56[_0x8d13('0x4a')](_0x1beb36,_0x1b8a16,config['secrets'][_0x8d13('0x4b')])['then'](function(){return _0x312364;});}return _0x312364;}})[_0x8d13('0x23')](function(_0x5b5865){if(_0x5b5865){var _0x432068=_0x5b5865['value'];if(!fs['existsSync'](_0x432068)){throw new db['Sequelize'][(_0x8d13('0x4c'))](_0x8d13('0x4d'));}if(_0x5b5865['filename']){return _0x52611d[_0x8d13('0x4e')](_0x432068,_0x5b5865[_0x8d13('0x4f')]+path['extname'](_0x432068),function(){if(_0x127f9e){fs['unlink'](_0x432068);}});}else{return _0x52611d[_0x8d13('0x4e')](_0x432068,function(_0x500ed5){if(_0x127f9e){fs['unlink'](_0x432068);}});}}})[_0x8d13('0x3f')](function(_0x3c4efd){if(_0x3c4efd[_0x8d13('0x50')]===_0x8d13('0x4d')){_0x52611d[_0x8d13('0x1c')](0x194)['send'](_0x8d13('0x51'));}else{return handleError(_0x52611d,null);}});};exports[_0x8d13('0x52')]=function(_0x72f50,_0x55631c,_0x41f0b7){var _0x501217=require(_0x8d13('0x53'));var _0x14e3ff=![];var _0x553eea={'$and':[db[_0x8d13('0x54')][_0x8d13('0x38')](db['sequelize']['fn']('MD5',db[_0x8d13('0x54')][_0x8d13('0x55')](_0x8d13('0x46'))),_0x72f50[_0x8d13('0x2f')][_0x8d13('0x56')])]};if(_0x72f50['query']['type']&&_0x72f50[_0x8d13('0x2f')]['type']==='uniqueid'){_0x553eea[_0x8d13('0x57')][_0x8d13('0x58')]({'uniqueid':_0x72f50['params']['id']});}else{_0x553eea[_0x8d13('0x57')][_0x8d13('0x58')]({'id':_0x72f50[_0x8d13('0x44')]['id']});}return db['VoiceRecording'][_0x8d13('0x41')]({'where':_0x553eea,'attributes':['id',_0x8d13('0x47')],'raw':!![]})[_0x8d13('0x23')](handleEntityNotFound(_0x55631c,null))['then'](function(_0x10a160){if(_0x10a160){var _0x5af28d=util[_0x8d13('0x2e')](_0x8d13('0x48'),_0x10a160[_0x8d13('0x47')]);if(fs[_0x8d13('0x49')](_0x5af28d)){_0x14e3ff=!![];return _0x501217[_0x8d13('0x4a')](_0x5af28d,_0x10a160[_0x8d13('0x47')],config['secrets']['recording'])[_0x8d13('0x23')](function(){return _0x10a160;});}return _0x10a160;}})['then'](function(_0x173f91){if(_0x173f91){if(!fs[_0x8d13('0x49')](_0x173f91['value'])){throw new db[(_0x8d13('0x59'))][(_0x8d13('0x4c'))](_0x8d13('0x4d'));}if(_0x173f91[_0x8d13('0x4f')]){return _0x55631c[_0x8d13('0x4e')](_0x173f91[_0x8d13('0x47')],_0x173f91['filename']+path[_0x8d13('0x5a')](_0x173f91[_0x8d13('0x47')]),function(){if(_0x14e3ff){fs[_0x8d13('0x5b')](_0x173f91['value']);}});}else{return _0x55631c[_0x8d13('0x4e')](_0x173f91[_0x8d13('0x47')],function(_0x1d8c9d){if(_0x14e3ff){fs[_0x8d13('0x5b')](_0x173f91[_0x8d13('0x47')]);}});}}})[_0x8d13('0x3f')](handleError(_0x55631c,null));};exports[_0x8d13('0x5c')]=function(_0x590b4c,_0x44e9b8){return db['VoiceRecording'][_0x8d13('0x41')]({'where':{'id':_0x590b4c[_0x8d13('0x44')]['id']}})[_0x8d13('0x23')](function(_0x38e088){if(_[_0x8d13('0x5d')](_0x38e088)){throw new ReferenceError(_0x8d13('0x5e'));}return _0x38e088;})[_0x8d13('0x23')](function(_0xb5bc31){var _0x4be23b=_0xb5bc31[_0x8d13('0x47')];logger[_0x8d13('0x5f')](_0x8d13('0x60'),_0x4be23b);if(!_[_0x8d13('0x5d')](_0xb5bc31['value'])&&fs[_0x8d13('0x49')](_0x4be23b)){logger[_0x8d13('0x5f')](_0x8d13('0x61')+_0x4be23b+_0x8d13('0x62'));fs[_0x8d13('0x63')](_0x4be23b);}_0x4be23b=_0x4be23b+'.cypher';if(!_[_0x8d13('0x5d')](_0xb5bc31[_0x8d13('0x47')])&&fs['existsSync'](_0x4be23b)){logger[_0x8d13('0x5f')]('File:\x20\x22'+_0x4be23b+_0x8d13('0x62'));fs[_0x8d13('0x63')](_0x4be23b);}return _0xb5bc31;})['then'](function(_0x42872b){if(!_0x42872b)throw new InternalError();return _0x42872b[_0x8d13('0x5c')]();})['then'](function(){_0x44e9b8[_0x8d13('0x1c')](0xcc)[_0x8d13('0x16')]();})[_0x8d13('0x3f')](handleError(_0x44e9b8,null));};function getBucketslist(_0x582b7f,_0x5f2b3e,_0x126e3f){return new Promise(function(_0x46cce6,_0x28fd74){var _0x358305=new AWS['S3']({'accessKeyId':_0x5f2b3e,'secretAccessKey':_0x582b7f,'region':_0x126e3f});_0x358305[_0x8d13('0x64')]({},function(_0x2d31f5,_0x3165a8){if(_0x2d31f5){return _0x28fd74(_0x2d31f5);}else{return _0x46cce6(_0x3165a8);}});});}function createBucket(_0x5ba62c,_0x579d64,_0xe24511,_0x2419a2){return new Promise(function(_0x4d3b96,_0x226a46){var _0x1a3b4a=new AWS['S3']({'accessKeyId':_0x579d64,'secretAccessKey':_0x5ba62c,'region':_0xe24511});_0x1a3b4a[_0x8d13('0x65')]({'Bucket':_0x2419a2},function(_0x47bea0,_0x23f898){if(_0x47bea0){return _0x226a46(_0x47bea0);}else{return _0x4d3b96(_0x23f898);}});});}function uploadFile(_0x183b48,_0x3daf5d,_0x10be77,_0x444a35,_0x57d136,_0x3b5310){return new Promise(function(_0x3d51c7,_0x411ebb){var _0x27e01c=new AWS['S3']({'accessKeyId':_0x3daf5d,'secretAccessKey':_0x183b48,'region':_0x10be77});_0x27e01c[_0x8d13('0x66')]({'Bucket':_0x444a35,'Key':_0x57d136,'Body':_0x3b5310},function(_0x464c6a,_0x5bb3e2){if(_0x464c6a){return _0x411ebb(_0x464c6a);}else{return _0x3d51c7(_0x5bb3e2);}});});}function startTranscribe(_0x5676c2,_0x5dc177,_0x183750,_0x10b0fd,_0x224a73,_0x30b905){return new Promise(function(_0x1ac1c0,_0x59fba0){var _0x5cb234=new AWS[(_0x8d13('0x67'))]({'accessKeyId':_0x5dc177,'secretAccessKey':_0x5676c2,'region':_0x183750});_0x5cb234[_0x8d13('0x68')]({'TranscriptionJobName':_0x10b0fd,'LanguageCode':_0x224a73,'Media':{'MediaFileUri':_0x30b905}},function(_0x345f9c,_0x2539e2){if(_0x345f9c){return _0x59fba0(_0x345f9c);}else{return _0x1ac1c0(_0x2539e2);}});});}function transcribe(_0x4a2474,_0x1ba825,_0x549039,_0x20863c,_0x3309bd,_0x3a567c,_0xbd15c4){return new Promise(function(_0x4f45a5,_0x45b46f){var _0xfb2e32={};logger[_0x8d13('0x5f')](util[_0x8d13('0x2e')](_0x8d13('0x69'),_0x4a2474,_0x3309bd));return uploadFile(_0x1ba825,_0x549039,_0x20863c,_0x3309bd,path[_0x8d13('0x6a')](_0x3a567c),fs[_0x8d13('0x6b')](_0x3a567c))['then'](function(_0x46387b){logger['info'](util[_0x8d13('0x2e')](_0x8d13('0x6c'),_0x4a2474,_0x3309bd,_0x46387b[_0x8d13('0x6d')]));_0xfb2e32[_0x8d13('0x6e')]=_0x46387b[_0x8d13('0x6f')];_0xfb2e32[_0x8d13('0x70')]=_0x46387b[_0x8d13('0x6d')];logger[_0x8d13('0x5f')](util[_0x8d13('0x2e')](_0x8d13('0x71'),_0x4a2474));return startTranscribe(_0x1ba825,_0x549039,_0x20863c,uuidv4(),_0xbd15c4,_0x46387b[_0x8d13('0x6d')]);})['then'](function(_0x9bd422){logger[_0x8d13('0x5f')](util['format'](_0x8d13('0x72'),_0x4a2474,_0x9bd422[_0x8d13('0x73')]['TranscriptionJobName']));_0xfb2e32['transcribeName']=_0x9bd422[_0x8d13('0x73')][_0x8d13('0x74')];_0xfb2e32[_0x8d13('0x75')]=_0x9bd422[_0x8d13('0x73')][_0x8d13('0x76')];return _0x4f45a5(_0xfb2e32);})['catch'](function(_0x350213){return _0x45b46f(_0x350213);});});}exports[_0x8d13('0x77')]=function(_0x3ac9ae,_0x33a4fd,_0x1d3b56){var _0x1ee967;var _0x17e0f2;var _0x56d35a;var _0xf957b0=require(_0x8d13('0x53'));return db[_0x8d13('0x27')][_0x8d13('0x78')]({'where':{'id':_0x3ac9ae[_0x8d13('0x44')]['id']}})[_0x8d13('0x23')](function(_0x30f1e3){if(_0x30f1e3){var _0x486e45=util[_0x8d13('0x2e')]('%s.cypher',_0x30f1e3[_0x8d13('0x47')]);if(fs[_0x8d13('0x49')](_0x486e45)){cypher=!![];return _0xf957b0[_0x8d13('0x4a')](_0x486e45,_0x30f1e3[_0x8d13('0x47')],config[_0x8d13('0x79')][_0x8d13('0x4b')])[_0x8d13('0x23')](function(){return _0x30f1e3;});}return _0x30f1e3;}})[_0x8d13('0x23')](function(_0x5708e9){if(!_0x5708e9){throw new db[(_0x8d13('0x59'))]['ValidationError'](_0x8d13('0x7a'));}_0x17e0f2=_0x5708e9;return db[_0x8d13('0x7b')][_0x8d13('0x78')]({'where':{'id':0x1}});})[_0x8d13('0x23')](handleEntityNotFound(_0x33a4fd,null))[_0x8d13('0x23')](function(_0xa0d153){if(_0xa0d153){_0x1ee967=_0xa0d153;if(!_0x1ee967['transcribe']||!_0x1ee967['transcribeAccountId']||!_0x1ee967[_0x8d13('0x7c')]||!_0x1ee967[_0x8d13('0x7d')]||!_0x1ee967[_0x8d13('0x6e')]){throw new db[(_0x8d13('0x59'))][(_0x8d13('0x4c'))](_0x8d13('0x7e'));}if(_0x3ac9ae[_0x8d13('0x43')]['runSentiment']&&(!_0x1ee967[_0x8d13('0x7f')]||!_0x1ee967['sentimentAccountId']||!_0x1ee967[_0x8d13('0x80')]||!_0x1ee967[_0x8d13('0x7d')]||!_0x1ee967[_0x8d13('0x6e')])){throw new db['Sequelize'][(_0x8d13('0x4c'))](_0x8d13('0x81'));}return db['CloudProvider'][_0x8d13('0x78')]({'where':{'id':_0x1ee967[_0x8d13('0x82')]}});}})[_0x8d13('0x23')](function(_0xc61a4f){if(!_0xc61a4f){throw new db[(_0x8d13('0x59'))][(_0x8d13('0x4c'))]('Cloud\x20Provider\x20not\x20available');}if(!_0xc61a4f[_0x8d13('0x83')]||!_0xc61a4f[_0x8d13('0x84')]){throw new db[(_0x8d13('0x59'))][(_0x8d13('0x4c'))]('Cloud\x20Provider\x20not\x20configured');}_0x56d35a=_0xc61a4f;return getBucketslist(_0x56d35a[_0x8d13('0x83')],_0x56d35a[_0x8d13('0x84')],_0x1ee967[_0x8d13('0x7c')]);})['then'](function(_0x14ffd2){if(_0x14ffd2&&_0x14ffd2['Buckets']){var _0x163274=_['find'](_0x14ffd2[_0x8d13('0x85')],function(_0x38670c){return _0x38670c[_0x8d13('0x86')]===_0x1ee967['bucket'];});if(!_0x163274){logger[_0x8d13('0x5f')](util['format'](_0x8d13('0x87'),_0x3ac9ae[_0x8d13('0x44')]['id'],_0x1ee967[_0x8d13('0x6e')]));return createBucket(_0x56d35a[_0x8d13('0x83')],_0x56d35a['data2'],_0x1ee967[_0x8d13('0x7c')],_0x1ee967[_0x8d13('0x6e')]);}logger[_0x8d13('0x5f')](util[_0x8d13('0x2e')](_0x8d13('0x88'),_0x3ac9ae[_0x8d13('0x44')]['id'],_0x1ee967['bucket']));return;}})[_0x8d13('0x23')](function(_0x4fee79){if(_0x17e0f2['transcribeStatus']==='NEW'){return transcribe(_0x3ac9ae[_0x8d13('0x44')]['id'],_0x56d35a[_0x8d13('0x83')],_0x56d35a[_0x8d13('0x84')],_0x1ee967['transcribeRegion'],_0x1ee967[_0x8d13('0x6e')],_0x17e0f2[_0x8d13('0x47')],_0x1ee967[_0x8d13('0x7d')]);}else{logger[_0x8d13('0x5f')](util[_0x8d13('0x2e')](_0x8d13('0x89'),_0x3ac9ae[_0x8d13('0x44')]['id']));return{'transcribeStatus':_0x8d13('0x8a')};}})[_0x8d13('0x23')](function(_0x189876){if(_0x189876){_0x189876[_0x8d13('0x8b')]=_0x3ac9ae[_0x8d13('0x43')][_0x8d13('0x8c')];return _0x17e0f2['updateAttributes'](_0x189876);}})['then'](respondWithResult(_0x33a4fd,null))[_0x8d13('0x3f')](handleError(_0x33a4fd,null));};function writeFile(_0xbf325b,_0xe1c696){return new Promise(function(_0x4ee33d,_0x23cc82){fs[_0x8d13('0x8d')](_0xe1c696,_0xbf325b,function(_0x3c90d7,_0x2bfb3){if(_0x3c90d7){return _0x23cc82(_0x3c90d7);}else{return _0x4ee33d(_0x2bfb3);}});});}exports[_0x8d13('0x8e')]=function(_0x245ad1,_0x7ce289,_0x2ccf84){return db[_0x8d13('0x27')][_0x8d13('0x78')]({'where':{'id':_0x245ad1[_0x8d13('0x44')]['id']}})[_0x8d13('0x23')](handleEntityNotFound(_0x7ce289))[_0x8d13('0x23')](function(_0x51ae21){if(_0x51ae21&&_0x51ae21[_0x8d13('0x8f')]){var _0x4f71e0=_0x51ae21[_0x8d13('0x8f')];var _0x176112=config[_0x8d13('0x90')]+_0x8d13('0x91')+_0x51ae21['id']+_0x8d13('0x92');if(fs[_0x8d13('0x49')](_0x176112)){return _0x176112;}return writeFile(_0x4f71e0,_0x176112)[_0x8d13('0x23')](function(){return _0x176112;});}else{throw new db[(_0x8d13('0x59'))][(_0x8d13('0x4c'))]('Transcript\x20not\x20available');}})[_0x8d13('0x23')](function(_0x196658){return _0x7ce289[_0x8d13('0x4e')](_0x196658);})[_0x8d13('0x3f')](handleError(_0x7ce289));};
\ No newline at end of file
+var _0xf74f=['then','destroy','end','error','name','send','map','VoiceRecording','fieldName','type','key','model','differenceBy','format','query','keys','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','rawAttributes','intersection','find','create','body','describe','../../components/encryptor','uniqueid','value','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','VoiceRecording\x20not\x20found','download','extname','unlink','Not\x20found','downloads','sequelize','MD5','col','$and','push','filename','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','unlinkSync','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','listBuckets','createBucket','upload','TranscribeService','startTranscriptionJob','basename','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','bucket','Location','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeName','transcribeStatus','TranscriptionJobStatus','runTranscribe','findOne','Setting','transcribe','transcribeRegion','Transcribe\x20not\x20configured','runSentiment','sentimentAccountId','sentimentRegion','language','Sentiment\x20Analysis\x20not\x20configured','transcribeAccountId','Cloud\x20Provider\x20not\x20available','data1','data2','Cloud\x20Provider\x20not\x20configured','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','tempSentiment','updateAttributes','downloadTranscribe','fileText','.txt','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','aws-sdk','uuid/v4','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update'];(function(_0x5b2eaa,_0x51ffea){var _0x348c10=function(_0x4de557){while(--_0x4de557){_0x5b2eaa['push'](_0x5b2eaa['shift']());}};_0x348c10(++_0x51ffea);}(_0xf74f,0x10c));var _0xff74=function(_0x572165,_0x6a45cc){_0x572165=_0x572165-0x0;var _0x8c8709=_0xf74f[_0x572165];return _0x8c8709;};'use strict';var emlformat=require(_0xff74('0x0'));var rimraf=require(_0xff74('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xff74('0x2'));var rp=require(_0xff74('0x3'));var moment=require(_0xff74('0x4'));var BPromise=require(_0xff74('0x5'));var Mustache=require(_0xff74('0x6'));var util=require(_0xff74('0x7'));var path=require(_0xff74('0x8'));var sox=require('sox');var csv=require(_0xff74('0x9'));var ejs=require(_0xff74('0xa'));var fs=require('fs');var fs_extra=require(_0xff74('0xb'));var _=require('lodash');var squel=require(_0xff74('0xc'));var crypto=require(_0xff74('0xd'));var jsforce=require(_0xff74('0xe'));var deskjs=require(_0xff74('0xf'));var toCsv=require(_0xff74('0x9'));var querystring=require(_0xff74('0x10'));var Papa=require('papaparse');var AWS=require(_0xff74('0x11'));var uuidv4=require(_0xff74('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xff74('0x13'));var as=require(_0xff74('0x14'));var hardwareService=require(_0xff74('0x15'));var logger=require(_0xff74('0x16'))(_0xff74('0x17'));var utils=require('../../config/utils');var config=require(_0xff74('0x18'));var licenseUtil=require(_0xff74('0x19'));var db=require(_0xff74('0x1a'))['db'];function respondWithStatusCode(_0x1df73d,_0x198bd8){_0x198bd8=_0x198bd8||0xcc;return function(_0x35aa16){if(_0x35aa16){return _0x1df73d[_0xff74('0x1b')](_0x198bd8);}return _0x1df73d[_0xff74('0x1c')](_0x198bd8)['end']();};}function respondWithResult(_0x21f3f1,_0x1949c3){_0x1949c3=_0x1949c3||0xc8;return function(_0x300adc){if(_0x300adc){return _0x21f3f1[_0xff74('0x1c')](_0x1949c3)[_0xff74('0x1d')](_0x300adc);}};}function respondWithFilteredResult(_0xb30604,_0x5ab812){return function(_0x32cf04){if(_0x32cf04){var _0x5a691c=typeof _0x5ab812[_0xff74('0x1e')]===_0xff74('0x1f')&&typeof _0x5ab812[_0xff74('0x20')]===_0xff74('0x1f');var _0x284551=_0x32cf04[_0xff74('0x21')];var _0x448f72=_0x5a691c?0x0:_0x5ab812[_0xff74('0x1e')];var _0x302c1d=_0x5a691c?_0x32cf04[_0xff74('0x21')]:_0x5ab812[_0xff74('0x1e')]+_0x5ab812[_0xff74('0x20')];var _0x4da996;if(_0x302c1d>=_0x284551){_0x302c1d=_0x284551;_0x4da996=0xc8;}else{_0x4da996=0xce;}_0xb30604[_0xff74('0x1c')](_0x4da996);return _0xb30604[_0xff74('0x22')](_0xff74('0x23'),_0x448f72+'-'+_0x302c1d+'/'+_0x284551)[_0xff74('0x1d')](_0x32cf04);}return null;};}function patchUpdates(_0x29499f){return function(_0x47ecaf){try{jsonpatch[_0xff74('0x24')](_0x47ecaf,_0x29499f,!![]);}catch(_0x12c6d3){return BPromise[_0xff74('0x25')](_0x12c6d3);}return _0x47ecaf[_0xff74('0x26')]();};}function saveUpdates(_0x4dfb89,_0x5c1718){return function(_0x124c31){if(_0x124c31){return _0x124c31[_0xff74('0x27')](_0x4dfb89)[_0xff74('0x28')](function(_0x4bebfe){return _0x4bebfe;});}return null;};}function removeEntity(_0x38d5f5,_0x2a1110){return function(_0x1e1e5d){if(_0x1e1e5d){return _0x1e1e5d[_0xff74('0x29')]()[_0xff74('0x28')](function(){_0x38d5f5[_0xff74('0x1c')](0xcc)[_0xff74('0x2a')]();});}};}function handleEntityNotFound(_0x5aecfd,_0x3bce41){return function(_0x5e48cf){if(!_0x5e48cf){_0x5aecfd[_0xff74('0x1b')](0x194);}return _0x5e48cf;};}function handleError(_0x50f0e5,_0x3092d8){_0x3092d8=_0x3092d8||0x1f4;return function(_0x181f9a){logger[_0xff74('0x2b')](_0x181f9a['stack']);if(_0x181f9a[_0xff74('0x2c')]){delete _0x181f9a[_0xff74('0x2c')];}_0x50f0e5[_0xff74('0x1c')](_0x3092d8)[_0xff74('0x2d')](_0x181f9a);};}exports['index']=function(_0x3b9b93,_0xff9093){var _0x3c1678={},_0x50c331={},_0x1a49b9={'count':0x0,'rows':[]};var _0xb099e7=_[_0xff74('0x2e')](db[_0xff74('0x2f')]['rawAttributes'],function(_0x232835){return{'name':_0x232835[_0xff74('0x30')],'type':_0x232835[_0xff74('0x31')][_0xff74('0x32')]};});_0x50c331[_0xff74('0x33')]=_[_0xff74('0x34')](_[_0xff74('0x2e')](_0xb099e7,_0xff74('0x2c')),[_0xff74('0x35')]);_0x50c331[_0xff74('0x36')]=_[_0xff74('0x37')](_0x3b9b93[_0xff74('0x36')]);_0x50c331['filters']=_['intersection'](_0x50c331[_0xff74('0x33')],_0x50c331[_0xff74('0x36')]);_0x3c1678[_0xff74('0x38')]=_['intersection'](_0x50c331[_0xff74('0x33')],qs[_0xff74('0x39')](_0x3b9b93[_0xff74('0x36')][_0xff74('0x39')]));_0x3c1678['attributes']=_0x3c1678[_0xff74('0x38')][_0xff74('0x3a')]?_0x3c1678['attributes']:_0x50c331[_0xff74('0x33')];if(!_0x3b9b93[_0xff74('0x36')][_0xff74('0x3b')](_0xff74('0x3c'))){_0x3c1678[_0xff74('0x20')]=qs['limit'](_0x3b9b93[_0xff74('0x36')]['limit']);_0x3c1678['offset']=qs['offset'](_0x3b9b93[_0xff74('0x36')][_0xff74('0x1e')]);}_0x3c1678[_0xff74('0x3d')]=qs[_0xff74('0x3e')](_0x3b9b93[_0xff74('0x36')][_0xff74('0x3e')]);_0x3c1678[_0xff74('0x3f')]=qs[_0xff74('0x40')](_['pick'](_0x3b9b93[_0xff74('0x36')],_0x50c331[_0xff74('0x40')]),_0xb099e7);if(_0x3b9b93[_0xff74('0x36')][_0xff74('0x41')]){_0x3c1678[_0xff74('0x3f')]=_[_0xff74('0x42')](_0x3c1678[_0xff74('0x3f')],{'$or':_[_0xff74('0x2e')](_0xb099e7,function(_0x48dac4){if(_0x48dac4[_0xff74('0x31')]!==_0xff74('0x43')){var _0x4e29e3={};_0x4e29e3[_0x48dac4[_0xff74('0x2c')]]={'$like':'%'+_0x3b9b93['query'][_0xff74('0x41')]+'%'};return _0x4e29e3;}})});}_0x3c1678=_[_0xff74('0x42')]({},_0x3c1678,_0x3b9b93[_0xff74('0x44')]);var _0x297f3f={'where':_0x3c1678[_0xff74('0x3f')]};return db['VoiceRecording'][_0xff74('0x21')](_0x297f3f)['then'](function(_0x42434e){_0x1a49b9[_0xff74('0x21')]=_0x42434e;if(_0x3b9b93['query'][_0xff74('0x45')]){_0x3c1678[_0xff74('0x46')]=[{'all':!![]}];}return db['VoiceRecording'][_0xff74('0x47')](_0x3c1678);})[_0xff74('0x28')](function(_0xbc261c){_0x1a49b9['rows']=_0xbc261c;return _0x1a49b9;})[_0xff74('0x28')](respondWithFilteredResult(_0xff9093,_0x3c1678))[_0xff74('0x48')](handleError(_0xff9093,null));};exports[_0xff74('0x49')]=function(_0xde3d7f,_0x5a3fc2){var _0x295b68={'raw':![],'where':{'id':_0xde3d7f[_0xff74('0x4a')]['id']}},_0x3c03d8={};_0x3c03d8['model']=_['keys'](db[_0xff74('0x2f')][_0xff74('0x4b')]);_0x3c03d8['query']=_[_0xff74('0x37')](_0xde3d7f[_0xff74('0x36')]);_0x3c03d8[_0xff74('0x40')]=_[_0xff74('0x4c')](_0x3c03d8[_0xff74('0x33')],_0x3c03d8[_0xff74('0x36')]);_0x295b68[_0xff74('0x38')]=_[_0xff74('0x4c')](_0x3c03d8[_0xff74('0x33')],qs[_0xff74('0x39')](_0xde3d7f[_0xff74('0x36')][_0xff74('0x39')]));_0x295b68[_0xff74('0x38')]=_0x295b68[_0xff74('0x38')][_0xff74('0x3a')]?_0x295b68[_0xff74('0x38')]:_0x3c03d8[_0xff74('0x33')];if(_0xde3d7f['query'][_0xff74('0x45')]){_0x295b68[_0xff74('0x46')]=[{'all':!![]}];}_0x295b68=_[_0xff74('0x42')]({},_0x295b68,_0xde3d7f[_0xff74('0x44')]);return db[_0xff74('0x2f')][_0xff74('0x4d')](_0x295b68)[_0xff74('0x28')](handleEntityNotFound(_0x5a3fc2,null))['then'](respondWithResult(_0x5a3fc2,null))['catch'](handleError(_0x5a3fc2,null));};exports[_0xff74('0x4e')]=function(_0x46e4ee,_0x25b612){return db[_0xff74('0x2f')]['create'](_0x46e4ee[_0xff74('0x4f')],{})['then'](respondWithResult(_0x25b612,0xc9))['catch'](handleError(_0x25b612,null));};exports[_0xff74('0x27')]=function(_0x4f417b,_0x339440){if(_0x4f417b['body']['id']){delete _0x4f417b[_0xff74('0x4f')]['id'];}return db[_0xff74('0x2f')][_0xff74('0x4d')]({'where':{'id':_0x4f417b[_0xff74('0x4a')]['id']}})[_0xff74('0x28')](handleEntityNotFound(_0x339440,null))['then'](saveUpdates(_0x4f417b[_0xff74('0x4f')],null))['then'](respondWithResult(_0x339440,null))[_0xff74('0x48')](handleError(_0x339440,null));};exports[_0xff74('0x50')]=function(_0x586eb7,_0x5528d7){return db[_0xff74('0x2f')]['describe']()[_0xff74('0x28')](respondWithResult(_0x5528d7,null))[_0xff74('0x48')](handleError(_0x5528d7,null));};exports['download']=function(_0x260284,_0xfd21a3,_0x5d9b93){var _0x13d1f5=require(_0xff74('0x51'));var _0x32c13e=![];var _0x5b799f={};if(_0x260284[_0xff74('0x36')][_0xff74('0x31')]&&_0x260284['query'][_0xff74('0x31')]===_0xff74('0x52')){_0x5b799f[_0xff74('0x52')]=_0x260284[_0xff74('0x4a')]['id'];}else{_0x5b799f['id']=_0x260284[_0xff74('0x4a')]['id'];}return db[_0xff74('0x2f')][_0xff74('0x4d')]({'where':_0x5b799f,'attributes':['id','value'],'raw':!![]})[_0xff74('0x28')](handleEntityNotFound(_0xfd21a3,null))[_0xff74('0x28')](function(_0x36855d){if(_0x36855d){var _0x2778a0=_0x36855d[_0xff74('0x53')];var _0x25dab6=util[_0xff74('0x35')](_0xff74('0x54'),_0x2778a0);if(fs[_0xff74('0x55')](_0x25dab6)){_0x32c13e=!![];return _0x13d1f5[_0xff74('0x56')](_0x25dab6,_0x2778a0,config[_0xff74('0x57')][_0xff74('0x58')])[_0xff74('0x28')](function(){return _0x36855d;});}return _0x36855d;}})[_0xff74('0x28')](function(_0xa9e478){if(_0xa9e478){var _0x4941e7=_0xa9e478[_0xff74('0x53')];if(!fs[_0xff74('0x55')](_0x4941e7)){throw new db[(_0xff74('0x59'))][(_0xff74('0x5a'))](_0xff74('0x5b'));}if(_0xa9e478['filename']){return _0xfd21a3[_0xff74('0x5c')](_0x4941e7,_0xa9e478['filename']+path[_0xff74('0x5d')](_0x4941e7),function(){if(_0x32c13e){fs[_0xff74('0x5e')](_0x4941e7);}});}else{return _0xfd21a3[_0xff74('0x5c')](_0x4941e7,function(_0xcf7b7e){if(_0x32c13e){fs[_0xff74('0x5e')](_0x4941e7);}});}}})[_0xff74('0x48')](function(_0x12ef14){if(_0x12ef14['message']===_0xff74('0x5b')){_0xfd21a3['status'](0x194)[_0xff74('0x2d')](_0xff74('0x5f'));}else{return handleError(_0xfd21a3,null);}});};exports[_0xff74('0x60')]=function(_0x901a80,_0x5068f2,_0x4bc190){var _0x31fb67=require(_0xff74('0x51'));var _0x3e8360=![];var _0x2a318d={'$and':[db[_0xff74('0x61')]['where'](db[_0xff74('0x61')]['fn'](_0xff74('0x62'),db[_0xff74('0x61')][_0xff74('0x63')]('uniqueid')),_0x901a80['query']['token'])]};if(_0x901a80['query']['type']&&_0x901a80['query'][_0xff74('0x31')]===_0xff74('0x52')){_0x2a318d[_0xff74('0x64')][_0xff74('0x65')]({'uniqueid':_0x901a80[_0xff74('0x4a')]['id']});}else{_0x2a318d[_0xff74('0x64')][_0xff74('0x65')]({'id':_0x901a80['params']['id']});}return db[_0xff74('0x2f')][_0xff74('0x4d')]({'where':_0x2a318d,'attributes':['id','value'],'raw':!![]})[_0xff74('0x28')](handleEntityNotFound(_0x5068f2,null))[_0xff74('0x28')](function(_0x17d1b7){if(_0x17d1b7){var _0x29c14b=util[_0xff74('0x35')](_0xff74('0x54'),_0x17d1b7[_0xff74('0x53')]);if(fs[_0xff74('0x55')](_0x29c14b)){_0x3e8360=!![];return _0x31fb67['decryptFile'](_0x29c14b,_0x17d1b7[_0xff74('0x53')],config[_0xff74('0x57')][_0xff74('0x58')])[_0xff74('0x28')](function(){return _0x17d1b7;});}return _0x17d1b7;}})[_0xff74('0x28')](function(_0x5d6c63){if(_0x5d6c63){if(!fs[_0xff74('0x55')](_0x5d6c63[_0xff74('0x53')])){throw new db[(_0xff74('0x59'))][(_0xff74('0x5a'))]('VoiceRecording\x20not\x20found');}if(_0x5d6c63[_0xff74('0x66')]){return _0x5068f2['download'](_0x5d6c63[_0xff74('0x53')],_0x5d6c63['filename']+path[_0xff74('0x5d')](_0x5d6c63[_0xff74('0x53')]),function(){if(_0x3e8360){fs[_0xff74('0x5e')](_0x5d6c63[_0xff74('0x53')]);}});}else{return _0x5068f2[_0xff74('0x5c')](_0x5d6c63['value'],function(_0x25cbd9){if(_0x3e8360){fs[_0xff74('0x5e')](_0x5d6c63[_0xff74('0x53')]);}});}}})[_0xff74('0x48')](handleError(_0x5068f2,null));};exports['destroy']=function(_0xbac0a8,_0x3cb334){return db[_0xff74('0x2f')][_0xff74('0x4d')]({'where':{'id':_0xbac0a8[_0xff74('0x4a')]['id']}})[_0xff74('0x28')](function(_0x2ede84){if(_[_0xff74('0x67')](_0x2ede84)){throw new ReferenceError(_0xff74('0x68'));}return _0x2ede84;})['then'](function(_0x111338){var _0xc4a7bd=_0x111338[_0xff74('0x53')];logger[_0xff74('0x69')](_0xff74('0x6a'),_0xc4a7bd);if(!_[_0xff74('0x67')](_0x111338['value'])&&fs[_0xff74('0x55')](_0xc4a7bd)){logger[_0xff74('0x69')](_0xff74('0x6b')+_0xc4a7bd+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xff74('0x6c')](_0xc4a7bd);}_0xc4a7bd=_0xc4a7bd+_0xff74('0x6d');if(!_[_0xff74('0x67')](_0x111338[_0xff74('0x53')])&&fs[_0xff74('0x55')](_0xc4a7bd)){logger[_0xff74('0x69')](_0xff74('0x6b')+_0xc4a7bd+_0xff74('0x6e'));fs[_0xff74('0x6c')](_0xc4a7bd);}return _0x111338;})['then'](function(_0x3f8e15){if(!_0x3f8e15)throw new InternalError();return _0x3f8e15[_0xff74('0x29')]();})[_0xff74('0x28')](function(){_0x3cb334[_0xff74('0x1c')](0xcc)[_0xff74('0x2a')]();})[_0xff74('0x48')](handleError(_0x3cb334,null));};function getBucketslist(_0x4d37c5,_0x56010d,_0x50689d){return new Promise(function(_0x43fb72,_0x3fbb35){var _0x4f5849=new AWS['S3']({'accessKeyId':_0x56010d,'secretAccessKey':_0x4d37c5,'region':_0x50689d});_0x4f5849[_0xff74('0x6f')]({},function(_0x7b8a8f,_0x4c4d89){if(_0x7b8a8f){return _0x3fbb35(_0x7b8a8f);}else{return _0x43fb72(_0x4c4d89);}});});}function createBucket(_0x169b77,_0x33df8d,_0x598574,_0x2af029){return new Promise(function(_0x4ed289,_0x1044b2){var _0x2de2fc=new AWS['S3']({'accessKeyId':_0x33df8d,'secretAccessKey':_0x169b77,'region':_0x598574});_0x2de2fc[_0xff74('0x70')]({'Bucket':_0x2af029},function(_0x4837ea,_0x38ebcd){if(_0x4837ea){return _0x1044b2(_0x4837ea);}else{return _0x4ed289(_0x38ebcd);}});});}function uploadFile(_0x4eea03,_0x4ec92a,_0x4b6961,_0x31d9e9,_0x3fc6ea,_0x470ae2){return new Promise(function(_0x237abc,_0x12741e){var _0x1a3265=new AWS['S3']({'accessKeyId':_0x4ec92a,'secretAccessKey':_0x4eea03,'region':_0x4b6961});_0x1a3265[_0xff74('0x71')]({'Bucket':_0x31d9e9,'Key':_0x3fc6ea,'Body':_0x470ae2},function(_0x4c1191,_0x24d920){if(_0x4c1191){return _0x12741e(_0x4c1191);}else{return _0x237abc(_0x24d920);}});});}function startTranscribe(_0x1319c1,_0x231104,_0x8da99d,_0x33633c,_0x44e00d,_0x33d7e5){return new Promise(function(_0x6e235f,_0x3f9e1e){var _0x5c77fa=new AWS[(_0xff74('0x72'))]({'accessKeyId':_0x231104,'secretAccessKey':_0x1319c1,'region':_0x8da99d});_0x5c77fa[_0xff74('0x73')]({'TranscriptionJobName':_0x33633c,'LanguageCode':_0x44e00d,'Media':{'MediaFileUri':_0x33d7e5}},function(_0xedb856,_0x11e125){if(_0xedb856){return _0x3f9e1e(_0xedb856);}else{return _0x6e235f(_0x11e125);}});});}function transcribe(_0x16f4cf,_0x3b9e22,_0x19bd83,_0x278792,_0x477227,_0x213352,_0x58945d){return new Promise(function(_0x2a63fc,_0x455ddf){var _0x59cc23={};logger[_0xff74('0x69')](util[_0xff74('0x35')]('[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s',_0x16f4cf,_0x477227));return uploadFile(_0x3b9e22,_0x19bd83,_0x278792,_0x477227,path[_0xff74('0x74')](_0x213352),fs['readFileSync'](_0x213352))[_0xff74('0x28')](function(_0x974e91){logger[_0xff74('0x69')](util[_0xff74('0x35')](_0xff74('0x75'),_0x16f4cf,_0x477227,_0x974e91['Location']));_0x59cc23[_0xff74('0x76')]=_0x974e91['Bucket'];_0x59cc23['location']=_0x974e91[_0xff74('0x77')];logger['info'](util['format']('[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request',_0x16f4cf));return startTranscribe(_0x3b9e22,_0x19bd83,_0x278792,uuidv4(),_0x58945d,_0x974e91['Location']);})[_0xff74('0x28')](function(_0x30422f){logger[_0xff74('0x69')](util['format'](_0xff74('0x78'),_0x16f4cf,_0x30422f[_0xff74('0x79')][_0xff74('0x7a')]));_0x59cc23[_0xff74('0x7b')]=_0x30422f['TranscriptionJob'][_0xff74('0x7a')];_0x59cc23[_0xff74('0x7c')]=_0x30422f['TranscriptionJob'][_0xff74('0x7d')];return _0x2a63fc(_0x59cc23);})['catch'](function(_0x5520b9){return _0x455ddf(_0x5520b9);});});}exports[_0xff74('0x7e')]=function(_0xb506eb,_0x3788ee,_0x3357c8){var _0x2d0a6e;var _0x1cebe5;var _0x1a36b3;var _0xdf1802=require('../../components/encryptor');return db[_0xff74('0x2f')][_0xff74('0x7f')]({'where':{'id':_0xb506eb[_0xff74('0x4a')]['id']}})[_0xff74('0x28')](function(_0xa85195){if(_0xa85195){var _0x32e820=util[_0xff74('0x35')]('%s.cypher',_0xa85195[_0xff74('0x53')]);if(fs[_0xff74('0x55')](_0x32e820)){cypher=!![];return _0xdf1802[_0xff74('0x56')](_0x32e820,_0xa85195[_0xff74('0x53')],config[_0xff74('0x57')]['recording'])['then'](function(){return _0xa85195;});}return _0xa85195;}})[_0xff74('0x28')](function(_0x4bfefe){if(!_0x4bfefe){throw new db[(_0xff74('0x59'))][(_0xff74('0x5a'))]('Voice\x20Recording\x20not\x20found');}_0x1cebe5=_0x4bfefe;return db[_0xff74('0x80')][_0xff74('0x7f')]({'where':{'id':0x1}});})['then'](handleEntityNotFound(_0x3788ee,null))[_0xff74('0x28')](function(_0x3096d3){if(_0x3096d3){_0x2d0a6e=_0x3096d3;if(!_0x2d0a6e[_0xff74('0x81')]||!_0x2d0a6e['transcribeAccountId']||!_0x2d0a6e[_0xff74('0x82')]||!_0x2d0a6e['language']||!_0x2d0a6e[_0xff74('0x76')]){throw new db[(_0xff74('0x59'))]['ValidationError'](_0xff74('0x83'));}if(_0xb506eb[_0xff74('0x4f')][_0xff74('0x84')]&&(!_0x2d0a6e['sentiment']||!_0x2d0a6e[_0xff74('0x85')]||!_0x2d0a6e[_0xff74('0x86')]||!_0x2d0a6e[_0xff74('0x87')]||!_0x2d0a6e['bucket'])){throw new db[(_0xff74('0x59'))][(_0xff74('0x5a'))](_0xff74('0x88'));}return db['CloudProvider'][_0xff74('0x7f')]({'where':{'id':_0x2d0a6e[_0xff74('0x89')]}});}})['then'](function(_0x30c64c){if(!_0x30c64c){throw new db[(_0xff74('0x59'))][(_0xff74('0x5a'))](_0xff74('0x8a'));}if(!_0x30c64c[_0xff74('0x8b')]||!_0x30c64c[_0xff74('0x8c')]){throw new db[(_0xff74('0x59'))][(_0xff74('0x5a'))](_0xff74('0x8d'));}_0x1a36b3=_0x30c64c;return getBucketslist(_0x1a36b3[_0xff74('0x8b')],_0x1a36b3[_0xff74('0x8c')],_0x2d0a6e['transcribeRegion']);})['then'](function(_0x2ebca2){if(_0x2ebca2&&_0x2ebca2[_0xff74('0x8e')]){var _0x1eb6e2=_[_0xff74('0x4d')](_0x2ebca2[_0xff74('0x8e')],function(_0x2a0d42){return _0x2a0d42[_0xff74('0x8f')]===_0x2d0a6e[_0xff74('0x76')];});if(!_0x1eb6e2){logger['info'](util[_0xff74('0x35')](_0xff74('0x90'),_0xb506eb[_0xff74('0x4a')]['id'],_0x2d0a6e['bucket']));return createBucket(_0x1a36b3[_0xff74('0x8b')],_0x1a36b3[_0xff74('0x8c')],_0x2d0a6e[_0xff74('0x82')],_0x2d0a6e[_0xff74('0x76')]);}logger[_0xff74('0x69')](util[_0xff74('0x35')](_0xff74('0x91'),_0xb506eb[_0xff74('0x4a')]['id'],_0x2d0a6e['bucket']));return;}})[_0xff74('0x28')](function(_0x2c36b0){if(_0x1cebe5[_0xff74('0x7c')]===_0xff74('0x92')){return transcribe(_0xb506eb[_0xff74('0x4a')]['id'],_0x1a36b3[_0xff74('0x8b')],_0x1a36b3[_0xff74('0x8c')],_0x2d0a6e[_0xff74('0x82')],_0x2d0a6e['bucket'],_0x1cebe5[_0xff74('0x53')],_0x2d0a6e[_0xff74('0x87')]);}else{logger['info'](util[_0xff74('0x35')](_0xff74('0x93'),_0xb506eb[_0xff74('0x4a')]['id']));return{'transcribeStatus':_0xff74('0x94')};}})[_0xff74('0x28')](function(_0x2516de){if(_0x2516de){_0x2516de[_0xff74('0x95')]=_0xb506eb[_0xff74('0x4f')]['runSentiment'];return _0x1cebe5[_0xff74('0x96')](_0x2516de);}})['then'](respondWithResult(_0x3788ee,null))[_0xff74('0x48')](handleError(_0x3788ee,null));};function writeFile(_0x3d07e4,_0x2a9e4b){return new Promise(function(_0x177136,_0x3b9dbb){fs['writeFile'](_0x2a9e4b,_0x3d07e4,function(_0x29d151,_0x284e36){if(_0x29d151){return _0x3b9dbb(_0x29d151);}else{return _0x177136(_0x284e36);}});});}exports[_0xff74('0x97')]=function(_0x168885,_0x5c0e9f,_0x21f96f){return db[_0xff74('0x2f')][_0xff74('0x7f')]({'where':{'id':_0x168885['params']['id']}})[_0xff74('0x28')](handleEntityNotFound(_0x5c0e9f))[_0xff74('0x28')](function(_0x5f3304){if(_0x5f3304&&_0x5f3304[_0xff74('0x98')]){var _0x34cd35=_0x5f3304[_0xff74('0x98')];var _0x14a6b0=config['root']+'/server/files/transcribes/transcribe_'+_0x5f3304['id']+_0xff74('0x99');if(fs[_0xff74('0x55')](_0x14a6b0)){return _0x14a6b0;}return writeFile(_0x34cd35,_0x14a6b0)[_0xff74('0x28')](function(){return _0x14a6b0;});}else{throw new db[(_0xff74('0x59'))][(_0xff74('0x5a'))]('Transcript\x20not\x20available');}})[_0xff74('0x28')](function(_0xaa82b3){return _0x5c0e9f['download'](_0xaa82b3);})[_0xff74('0x48')](handleError(_0x5c0e9f));};
\ No newline at end of file
index f8d26b8..5dfd3cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a29=['VoiceRecording','voice_recordings','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./voiceRecording.attributes','exports','define'];(function(_0x3295c5,_0x33ca95){var _0x40a2c8=function(_0x36a203){while(--_0x36a203){_0x3295c5['push'](_0x3295c5['shift']());}};_0x40a2c8(++_0x33ca95);}(_0x3a29,0x199));var _0x93a2=function(_0x4242c6,_0x255889){_0x4242c6=_0x4242c6-0x0;var _0x17032e=_0x3a29[_0x4242c6];return _0x17032e;};'use strict';var _=require(_0x93a2('0x0'));var util=require(_0x93a2('0x1'));var logger=require(_0x93a2('0x2'))(_0x93a2('0x3'));var moment=require('moment');var BPromise=require(_0x93a2('0x4'));var rp=require(_0x93a2('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x93a2('0x6'));var config=require(_0x93a2('0x7'));var attributes=require(_0x93a2('0x8'));module[_0x93a2('0x9')]=function(_0x319cf0,_0xa73dd5){return _0x319cf0[_0x93a2('0xa')](_0x93a2('0xb'),attributes,{'tableName':_0x93a2('0xc'),'paranoid':![],'indexes':[{'name':_0x93a2('0xd'),'fields':[_0x93a2('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x41d5=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceRecording.attributes','exports','define','VoiceRecording','voice_recordings','uniqueid'];(function(_0x508926,_0xa05b4f){var _0x49ab00=function(_0x360b74){while(--_0x360b74){_0x508926['push'](_0x508926['shift']());}};_0x49ab00(++_0xa05b4f);}(_0x41d5,0x7e));var _0x541d=function(_0x10ed34,_0x133ee2){_0x10ed34=_0x10ed34-0x0;var _0x1ebc77=_0x41d5[_0x10ed34];return _0x1ebc77;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x541d('0x0'))(_0x541d('0x1'));var moment=require(_0x541d('0x2'));var BPromise=require(_0x541d('0x3'));var rp=require(_0x541d('0x4'));var fs=require('fs');var path=require(_0x541d('0x5'));var rimraf=require(_0x541d('0x6'));var config=require(_0x541d('0x7'));var attributes=require(_0x541d('0x8'));module[_0x541d('0x9')]=function(_0x48614c,_0x4933a5){return _0x48614c[_0x541d('0xa')](_0x541d('0xb'),attributes,{'tableName':_0x541d('0xc'),'paranoid':![],'indexes':[{'name':_0x541d('0xd'),'fields':[_0x541d('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index b49d982..e1f7265 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcbb=['VoiceRecording,\x20%s,\x20%s','message','result','catch','UpdateVoiceRecording','VoiceRecording','update','options','attributes','limit','CreateVoiceRecording','Setting','findOne','callRecordingEncryption','create','body','existsSync','value','format','%s.cypher','encryptFile','recording','unlink','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','then','info','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x461467,_0x81d0dd){var _0x5c47da=function(_0x5a10a8){while(--_0x5a10a8){_0x461467['push'](_0x461467['shift']());}};_0x5c47da(++_0x81d0dd);}(_0xfcbb,0x10d));var _0xbfcb=function(_0x5072a2,_0x4cee35){_0x5072a2=_0x5072a2-0x0;var _0x240318=_0xfcbb[_0x5072a2];return _0x240318;};'use strict';var _=require(_0xbfcb('0x0'));var util=require(_0xbfcb('0x1'));var moment=require(_0xbfcb('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbfcb('0x3'));var db=require(_0xbfcb('0x4'))['db'];var utils=require(_0xbfcb('0x5'));var logger=require(_0xbfcb('0x6'))(_0xbfcb('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xbfcb('0x8')][_0xbfcb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x8d4e6a,_0x2df839,_0x288ee5){return new BPromise(function(_0x2f875c,_0x49717b){return client['request'](_0x8d4e6a,_0x288ee5)[_0xbfcb('0xa')](function(_0x331173){logger[_0xbfcb('0xb')]('VoiceRecording,\x20%s,\x20%s',_0x2df839,_0xbfcb('0xc'));logger[_0xbfcb('0xd')](_0xbfcb('0xe'),_0x2df839,_0xbfcb('0xc'),JSON[_0xbfcb('0xf')](_0x331173));if(_0x331173[_0xbfcb('0x10')]){if(_0x331173['error'][_0xbfcb('0x11')]===0x1f4){logger[_0xbfcb('0x10')](_0xbfcb('0x12'),_0x2df839,_0x331173[_0xbfcb('0x10')]['message']);return _0x49717b(_0x331173[_0xbfcb('0x10')]['message']);}logger[_0xbfcb('0x10')](_0xbfcb('0x12'),_0x2df839,_0x331173[_0xbfcb('0x10')][_0xbfcb('0x13')]);return _0x2f875c(_0x331173[_0xbfcb('0x10')][_0xbfcb('0x13')]);}else{logger[_0xbfcb('0xb')](_0xbfcb('0x12'),_0x2df839,_0xbfcb('0xc'));_0x2f875c(_0x331173[_0xbfcb('0x14')][_0xbfcb('0x13')]);}})[_0xbfcb('0x15')](function(_0x26f335){logger[_0xbfcb('0x10')](_0xbfcb('0x12'),_0x2df839,_0x26f335);_0x49717b(_0x26f335);});});}exports[_0xbfcb('0x16')]=function(_0xba1d6){var _0x38689e=this;return new Promise(function(_0x3404aa,_0x46b8d2){return db[_0xbfcb('0x17')][_0xbfcb('0x18')](_0xba1d6['body'],{'raw':_0xba1d6[_0xbfcb('0x19')]?_0xba1d6[_0xbfcb('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xba1d6[_0xbfcb('0x19')]?_0xba1d6[_0xbfcb('0x19')]['where']||null:null,'attributes':_0xba1d6['options']?_0xba1d6[_0xbfcb('0x19')][_0xbfcb('0x1a')]||null:null,'limit':_0xba1d6[_0xbfcb('0x19')]?_0xba1d6[_0xbfcb('0x19')][_0xbfcb('0x1b')]||null:null})['then'](function(_0x365d6c){logger[_0xbfcb('0xb')](_0xbfcb('0x16'),_0xba1d6);logger[_0xbfcb('0xd')](_0xbfcb('0x16'),_0xba1d6,JSON[_0xbfcb('0xf')](_0x365d6c));_0x3404aa(_0x365d6c);})[_0xbfcb('0x15')](function(_0x14e43c){logger[_0xbfcb('0x10')](_0xbfcb('0x16'),_0x14e43c[_0xbfcb('0x13')],_0xba1d6);_0x46b8d2(_0x38689e[_0xbfcb('0x10')](0x1f4,_0x14e43c[_0xbfcb('0x13')]));});});};exports[_0xbfcb('0x1c')]=function(_0x3e954d){var _0x2a1272=this;return new Promise(function(_0x5cd703,_0x3465f5){var _0x2881f8=require('../../components/encryptor');var _0x64a69;return db[_0xbfcb('0x1d')][_0xbfcb('0x1e')]({'attributes':['id',_0xbfcb('0x1f')],'where':{'id':0x1},'raw':!![]})[_0xbfcb('0xa')](function(_0x3542e9){_0x64a69=_0x3542e9;return db[_0xbfcb('0x17')][_0xbfcb('0x20')](_0x3e954d[_0xbfcb('0x21')]);})[_0xbfcb('0xa')](function(_0x59719b){if(_0x64a69[_0xbfcb('0x1f')]&&fs[_0xbfcb('0x22')](_0x59719b[_0xbfcb('0x23')])){var _0x43de3c=util[_0xbfcb('0x24')](_0xbfcb('0x25'),_0x59719b[_0xbfcb('0x23')]);return _0x2881f8[_0xbfcb('0x26')](_0x59719b[_0xbfcb('0x23')],_0x43de3c,config['secrets'][_0xbfcb('0x27')])[_0xbfcb('0xa')](function(){fs[_0xbfcb('0x28')](_0x59719b[_0xbfcb('0x23')]);logger['info']('CreateVoiceRecording\x20file\x20encrypted');return _0x59719b;});}return _0x59719b;})[_0xbfcb('0xa')](function(_0x35925b){logger[_0xbfcb('0xb')](_0xbfcb('0x1c'),_0x3e954d);logger[_0xbfcb('0xd')](_0xbfcb('0x1c'),_0x3e954d,JSON[_0xbfcb('0xf')](_0x35925b));_0x5cd703(_0x35925b);})['catch'](function(_0x504d81){logger['error'](_0xbfcb('0x1c'),_0x504d81['message'],_0x3e954d);_0x3465f5(_0x2a1272[_0xbfcb('0x10')](0x1f4,_0x504d81[_0xbfcb('0x13')]));});});};
\ No newline at end of file
+var _0x896e=['body','options','raw','where','attributes','limit','CreateVoiceRecording','../../components/encryptor','findOne','callRecordingEncryption','existsSync','value','format','%s.cypher','encryptFile','unlink','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','VoiceRecording,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','info','catch','UpdateVoiceRecording','VoiceRecording','update'];(function(_0x3db66c,_0x387885){var _0x56ea11=function(_0x12a8a8){while(--_0x12a8a8){_0x3db66c['push'](_0x3db66c['shift']());}};_0x56ea11(++_0x387885);}(_0x896e,0x1e9));var _0xe896=function(_0x100546,_0x5d79de){_0x100546=_0x100546-0x0;var _0xceec26=_0x896e[_0x100546];return _0xceec26;};'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')]('VoiceRecording,\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')]('VoiceRecording,\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?!![]:![]:!![],'individualHooks':!![],'where':_0x32f86d[_0xe896('0x1c')]?_0x32f86d['options'][_0xe896('0x1e')]||null:null,'attributes':_0x32f86d['options']?_0x32f86d['options'][_0xe896('0x1f')]||null:null,'limit':_0x32f86d[_0xe896('0x1c')]?_0x32f86d[_0xe896('0x1c')][_0xe896('0x20')]||null:null})['then'](function(_0x468479){logger['info']('UpdateVoiceRecording',_0x32f86d);logger[_0xe896('0x10')](_0xe896('0x18'),_0x32f86d,JSON[_0xe896('0x12')](_0x468479));_0x5dc89d(_0x468479);})[_0xe896('0x17')](function(_0x20e295){logger[_0xe896('0x13')](_0xe896('0x18'),_0x20e295['message'],_0x32f86d);_0x782813(_0x2d4cf0[_0xe896('0x13')](0x1f4,_0x20e295[_0xe896('0x15')]));});});};exports[_0xe896('0x21')]=function(_0x569d5f){var _0x26635e=this;return new Promise(function(_0xd50fe2,_0x2bc11d){var _0xe93aa0=require(_0xe896('0x22'));var _0x3f8ceb;return db['Setting'][_0xe896('0x23')]({'attributes':['id',_0xe896('0x24')],'where':{'id':0x1},'raw':!![]})[_0xe896('0xe')](function(_0xbfb15b){_0x3f8ceb=_0xbfb15b;return db[_0xe896('0x19')]['create'](_0x569d5f['body']);})['then'](function(_0x504d7c){if(_0x3f8ceb['callRecordingEncryption']&&fs[_0xe896('0x25')](_0x504d7c[_0xe896('0x26')])){var _0x10fd26=util[_0xe896('0x27')](_0xe896('0x28'),_0x504d7c[_0xe896('0x26')]);return _0xe93aa0[_0xe896('0x29')](_0x504d7c[_0xe896('0x26')],_0x10fd26,config['secrets']['recording'])[_0xe896('0xe')](function(){fs[_0xe896('0x2a')](_0x504d7c[_0xe896('0x26')]);logger[_0xe896('0x16')]('CreateVoiceRecording\x20file\x20encrypted');return _0x504d7c;});}return _0x504d7c;})[_0xe896('0xe')](function(_0x571e4d){logger['info'](_0xe896('0x21'),_0x569d5f);logger[_0xe896('0x10')](_0xe896('0x21'),_0x569d5f,JSON['stringify'](_0x571e4d));_0xd50fe2(_0x571e4d);})['catch'](function(_0x567589){logger[_0xe896('0x13')](_0xe896('0x21'),_0x567589[_0xe896('0x15')],_0x569d5f);_0x2bc11d(_0x26635e[_0xe896('0x13')](0x1f4,_0x567589[_0xe896('0x15')]));});});};
\ No newline at end of file
index 44d133a..8f59e06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb862=['util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceTransferReport.controller','get','index','isAuthenticated','describe','/:id','show','post','put','delete','destroy','exports','multer'];(function(_0x500419,_0x549162){var _0x241c1a=function(_0x3bea1a){while(--_0x3bea1a){_0x500419['push'](_0x500419['shift']());}};_0x241c1a(++_0x549162);}(_0xb862,0x97));var _0x2b86=function(_0x392f65,_0x43f0e1){_0x392f65=_0x392f65-0x0;var _0x47b36e=_0xb862[_0x392f65];return _0x47b36e;};'use strict';var multer=require(_0x2b86('0x0'));var util=require(_0x2b86('0x1'));var path=require(_0x2b86('0x2'));var timeout=require('connect-timeout');var express=require(_0x2b86('0x3'));var router=express['Router']();var fs_extra=require(_0x2b86('0x4'));var auth=require(_0x2b86('0x5'));var interaction=require(_0x2b86('0x6'));var config=require('../../config/environment');var controller=require(_0x2b86('0x7'));router[_0x2b86('0x8')]('/',auth['isAuthenticated'](),controller[_0x2b86('0x9')]);router[_0x2b86('0x8')]('/describe',auth[_0x2b86('0xa')](),controller[_0x2b86('0xb')]);router[_0x2b86('0x8')](_0x2b86('0xc'),auth['isAuthenticated'](),controller[_0x2b86('0xd')]);router[_0x2b86('0xe')]('/',auth[_0x2b86('0xa')](),controller['create']);router[_0x2b86('0xf')](_0x2b86('0xc'),auth[_0x2b86('0xa')](),controller['update']);router[_0x2b86('0x10')]('/:id',auth[_0x2b86('0xa')](),controller[_0x2b86('0x11')]);module[_0x2b86('0x12')]=router;
\ No newline at end of file
+var _0x9988=['create','put','/:id','update','destroy','multer','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceTransferReport.controller','get','isAuthenticated','describe','post'];(function(_0x7a3237,_0x56fa08){var _0x341cb1=function(_0x406495){while(--_0x406495){_0x7a3237['push'](_0x7a3237['shift']());}};_0x341cb1(++_0x56fa08);}(_0x9988,0x1ae));var _0x8998=function(_0x1d9e40,_0x1c44db){_0x1d9e40=_0x1d9e40-0x0;var _0x2ee94f=_0x9988[_0x1d9e40];return _0x2ee94f;};'use strict';var multer=require(_0x8998('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x8998('0x1'));var express=require(_0x8998('0x2'));var router=express[_0x8998('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x8998('0x4'));var interaction=require(_0x8998('0x5'));var config=require(_0x8998('0x6'));var controller=require(_0x8998('0x7'));router[_0x8998('0x8')]('/',auth[_0x8998('0x9')](),controller['index']);router[_0x8998('0x8')]('/describe',auth[_0x8998('0x9')](),controller[_0x8998('0xa')]);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0x8998('0xb')]('/',auth['isAuthenticated'](),controller[_0x8998('0xc')]);router[_0x8998('0xd')](_0x8998('0xe'),auth['isAuthenticated'](),controller[_0x8998('0xf')]);router['delete'](_0x8998('0xe'),auth[_0x8998('0x9')](),controller[_0x8998('0x10')]);module['exports']=router;
\ No newline at end of file
index 125b3c9..1d69b0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2915=['STRING','sequelize','moment','exports','ENUM','blind'];(function(_0x1a7550,_0x1edace){var _0x426e22=function(_0x1c10a1){while(--_0x1c10a1){_0x1a7550['push'](_0x1a7550['shift']());}};_0x426e22(++_0x1edace);}(_0x2915,0x145));var _0x5291=function(_0x25e214,_0x42a13e){_0x25e214=_0x25e214-0x0;var _0x48ca06=_0x2915[_0x25e214];return _0x48ca06;};'use strict';var Sequelize=require(_0x5291('0x0'));var moment=require(_0x5291('0x1'));module[_0x5291('0x2')]={'type':{'type':Sequelize[_0x5291('0x3')](_0x5291('0x4'),'attended')},'result':{'type':Sequelize[_0x5291('0x5')]},'transfererchannel':{'type':Sequelize[_0x5291('0x5')]},'transferercalleridnum':{'type':Sequelize[_0x5291('0x5')]},'transferercalleridname':{'type':Sequelize[_0x5291('0x5')]},'transfererconnectedlinenum':{'type':Sequelize['STRING']},'transfererconnectedlinename':{'type':Sequelize['STRING']},'transfereraccountcode':{'type':Sequelize[_0x5291('0x5')]},'transferercontext':{'type':Sequelize[_0x5291('0x5')]},'transfererexten':{'type':Sequelize[_0x5291('0x5')]},'transfererlinkedid':{'type':Sequelize[_0x5291('0x5')]},'transfereechannel':{'type':Sequelize[_0x5291('0x5')]},'transfereecalleridnum':{'type':Sequelize['STRING']},'transfereecalleridname':{'type':Sequelize[_0x5291('0x5')]},'transfereeconnectedlinenum':{'type':Sequelize[_0x5291('0x5')]},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize[_0x5291('0x5')]},'transfereecontext':{'type':Sequelize['STRING']},'transfereeexten':{'type':Sequelize[_0x5291('0x5')]},'transfereelinkedid':{'type':Sequelize[_0x5291('0x5')]},'isexternal':{'type':Sequelize['ENUM']('Yes','No')},'context':{'type':Sequelize[_0x5291('0x5')]},'extension':{'type':Sequelize[_0x5291('0x5')]}};
\ No newline at end of file
+var _0xe67c=['ENUM','blind','attended','STRING','Yes','sequelize','moment'];(function(_0x3841a2,_0x41f93b){var _0x3baf87=function(_0x42d31b){while(--_0x42d31b){_0x3841a2['push'](_0x3841a2['shift']());}};_0x3baf87(++_0x41f93b);}(_0xe67c,0x178));var _0xce67=function(_0x1319b1,_0x589002){_0x1319b1=_0x1319b1-0x0;var _0x5419b0=_0xe67c[_0x1319b1];return _0x5419b0;};'use strict';var Sequelize=require(_0xce67('0x0'));var moment=require(_0xce67('0x1'));module['exports']={'type':{'type':Sequelize[_0xce67('0x2')](_0xce67('0x3'),_0xce67('0x4'))},'result':{'type':Sequelize[_0xce67('0x5')]},'transfererchannel':{'type':Sequelize[_0xce67('0x5')]},'transferercalleridnum':{'type':Sequelize[_0xce67('0x5')]},'transferercalleridname':{'type':Sequelize['STRING']},'transfererconnectedlinenum':{'type':Sequelize[_0xce67('0x5')]},'transfererconnectedlinename':{'type':Sequelize[_0xce67('0x5')]},'transfereraccountcode':{'type':Sequelize[_0xce67('0x5')]},'transferercontext':{'type':Sequelize[_0xce67('0x5')]},'transfererexten':{'type':Sequelize[_0xce67('0x5')]},'transfererlinkedid':{'type':Sequelize[_0xce67('0x5')]},'transfereechannel':{'type':Sequelize[_0xce67('0x5')]},'transfereecalleridnum':{'type':Sequelize['STRING']},'transfereecalleridname':{'type':Sequelize[_0xce67('0x5')]},'transfereeconnectedlinenum':{'type':Sequelize[_0xce67('0x5')]},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize['STRING']},'transfereecontext':{'type':Sequelize['STRING']},'transfereeexten':{'type':Sequelize[_0xce67('0x5')]},'transfereelinkedid':{'type':Sequelize[_0xce67('0x5')]},'isexternal':{'type':Sequelize['ENUM'](_0xce67('0x6'),'No')},'context':{'type':Sequelize[_0xce67('0x5')]},'extension':{'type':Sequelize['STRING']}};
\ No newline at end of file
index a7fcb62..8df4c47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd424=['index','map','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','merge','type','options','VoiceTransferReport','includeAll','include','findAll','catch','show','params','rawAttributes','length','find','create','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','then','destroy','error','stack','name','send'];(function(_0x1598c1,_0x71e50b){var _0x17e123=function(_0x354361){while(--_0x354361){_0x1598c1['push'](_0x1598c1['shift']());}};_0x17e123(++_0x71e50b);}(_0xd424,0x105));var _0x4d42=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0xd424[_0x580576];return _0x3f55a0;};'use strict';var emlformat=require(_0x4d42('0x0'));var rimraf=require(_0x4d42('0x1'));var zipdir=require(_0x4d42('0x2'));var jsonpatch=require(_0x4d42('0x3'));var rp=require(_0x4d42('0x4'));var moment=require(_0x4d42('0x5'));var BPromise=require(_0x4d42('0x6'));var Mustache=require(_0x4d42('0x7'));var util=require('util');var path=require(_0x4d42('0x8'));var sox=require(_0x4d42('0x9'));var csv=require(_0x4d42('0xa'));var ejs=require(_0x4d42('0xb'));var fs=require('fs');var fs_extra=require(_0x4d42('0xc'));var _=require('lodash');var squel=require(_0x4d42('0xd'));var crypto=require(_0x4d42('0xe'));var jsforce=require(_0x4d42('0xf'));var deskjs=require(_0x4d42('0x10'));var toCsv=require(_0x4d42('0xa'));var querystring=require(_0x4d42('0x11'));var Papa=require(_0x4d42('0x12'));var Redis=require(_0x4d42('0x13'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4d42('0x14'));var logger=require(_0x4d42('0x15'))(_0x4d42('0x16'));var utils=require(_0x4d42('0x17'));var config=require(_0x4d42('0x18'));var licenseUtil=require(_0x4d42('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a18a9,_0x303ca2){_0x303ca2=_0x303ca2||0xcc;return function(_0x50235b){if(_0x50235b){return _0x2a18a9[_0x4d42('0x1a')](_0x303ca2);}return _0x2a18a9[_0x4d42('0x1b')](_0x303ca2)[_0x4d42('0x1c')]();};}function respondWithResult(_0x584873,_0x10b608){_0x10b608=_0x10b608||0xc8;return function(_0xc29236){if(_0xc29236){return _0x584873[_0x4d42('0x1b')](_0x10b608)[_0x4d42('0x1d')](_0xc29236);}};}function respondWithFilteredResult(_0x4d5e0f,_0x1f2ad1){return function(_0xf6e799){if(_0xf6e799){var _0x268a8c=typeof _0x1f2ad1[_0x4d42('0x1e')]===_0x4d42('0x1f')&&typeof _0x1f2ad1[_0x4d42('0x20')]===_0x4d42('0x1f');var _0x5a9b43=_0xf6e799[_0x4d42('0x21')];var _0x28d236=_0x268a8c?0x0:_0x1f2ad1['offset'];var _0x550482=_0x268a8c?_0xf6e799[_0x4d42('0x21')]:_0x1f2ad1[_0x4d42('0x1e')]+_0x1f2ad1[_0x4d42('0x20')];var _0x1c4641;if(_0x550482>=_0x5a9b43){_0x550482=_0x5a9b43;_0x1c4641=0xc8;}else{_0x1c4641=0xce;}_0x4d5e0f[_0x4d42('0x1b')](_0x1c4641);return _0x4d5e0f[_0x4d42('0x22')](_0x4d42('0x23'),_0x28d236+'-'+_0x550482+'/'+_0x5a9b43)[_0x4d42('0x1d')](_0xf6e799);}return null;};}function patchUpdates(_0x2776b9){return function(_0x249029){try{jsonpatch['apply'](_0x249029,_0x2776b9,!![]);}catch(_0x562de3){return BPromise['reject'](_0x562de3);}return _0x249029[_0x4d42('0x24')]();};}function saveUpdates(_0x5bebbd,_0x150eab){return function(_0xa66652){if(_0xa66652){return _0xa66652['update'](_0x5bebbd)[_0x4d42('0x25')](function(_0x3d9210){return _0x3d9210;});}return null;};}function removeEntity(_0x12f185,_0x171a46){return function(_0x11850d){if(_0x11850d){return _0x11850d[_0x4d42('0x26')]()['then'](function(){_0x12f185[_0x4d42('0x1b')](0xcc)[_0x4d42('0x1c')]();});}};}function handleEntityNotFound(_0x19b408,_0xdde436){return function(_0x1da7ef){if(!_0x1da7ef){_0x19b408[_0x4d42('0x1a')](0x194);}return _0x1da7ef;};}function handleError(_0x1aa1b5,_0x1fb647){_0x1fb647=_0x1fb647||0x1f4;return function(_0x10e2dc){logger[_0x4d42('0x27')](_0x10e2dc[_0x4d42('0x28')]);if(_0x10e2dc['name']){delete _0x10e2dc[_0x4d42('0x29')];}_0x1aa1b5[_0x4d42('0x1b')](_0x1fb647)[_0x4d42('0x2a')](_0x10e2dc);};}exports[_0x4d42('0x2b')]=function(_0x4f2e5c,_0x344864){var _0x16fa13={},_0x1e67b3={},_0x4d93cf={'count':0x0,'rows':[]};var _0x301631=_[_0x4d42('0x2c')](db['VoiceTransferReport']['rawAttributes'],function(_0x3a618a){return{'name':_0x3a618a['fieldName'],'type':_0x3a618a['type'][_0x4d42('0x2d')]};});_0x1e67b3[_0x4d42('0x2e')]=_[_0x4d42('0x2c')](_0x301631,_0x4d42('0x29'));_0x1e67b3[_0x4d42('0x2f')]=_[_0x4d42('0x30')](_0x4f2e5c['query']);_0x1e67b3[_0x4d42('0x31')]=_[_0x4d42('0x32')](_0x1e67b3['model'],_0x1e67b3[_0x4d42('0x2f')]);_0x16fa13[_0x4d42('0x33')]=_[_0x4d42('0x32')](_0x1e67b3[_0x4d42('0x2e')],qs[_0x4d42('0x34')](_0x4f2e5c[_0x4d42('0x2f')]['fields']));_0x16fa13['attributes']=_0x16fa13[_0x4d42('0x33')]['length']?_0x16fa13[_0x4d42('0x33')]:_0x1e67b3[_0x4d42('0x2e')];if(!_0x4f2e5c[_0x4d42('0x2f')][_0x4d42('0x35')](_0x4d42('0x36'))){_0x16fa13[_0x4d42('0x20')]=qs[_0x4d42('0x20')](_0x4f2e5c[_0x4d42('0x2f')]['limit']);_0x16fa13['offset']=qs[_0x4d42('0x1e')](_0x4f2e5c[_0x4d42('0x2f')][_0x4d42('0x1e')]);}_0x16fa13[_0x4d42('0x37')]=qs['sort'](_0x4f2e5c[_0x4d42('0x2f')][_0x4d42('0x38')]);_0x16fa13['where']=qs[_0x4d42('0x31')](_[_0x4d42('0x39')](_0x4f2e5c['query'],_0x1e67b3[_0x4d42('0x31')]),_0x301631);if(_0x4f2e5c[_0x4d42('0x2f')]['filter']){_0x16fa13[_0x4d42('0x3a')]=_[_0x4d42('0x3b')](_0x16fa13['where'],{'$or':_[_0x4d42('0x2c')](_0x301631,function(_0x17012f){if(_0x17012f[_0x4d42('0x3c')]!=='VIRTUAL'){var _0x4460a3={};_0x4460a3[_0x17012f[_0x4d42('0x29')]]={'$like':'%'+_0x4f2e5c['query']['filter']+'%'};return _0x4460a3;}})});}_0x16fa13=_[_0x4d42('0x3b')]({},_0x16fa13,_0x4f2e5c[_0x4d42('0x3d')]);var _0x32dfdc={'where':_0x16fa13['where']};return db[_0x4d42('0x3e')][_0x4d42('0x21')](_0x32dfdc)[_0x4d42('0x25')](function(_0x5eb463){_0x4d93cf[_0x4d42('0x21')]=_0x5eb463;if(_0x4f2e5c['query'][_0x4d42('0x3f')]){_0x16fa13[_0x4d42('0x40')]=[{'all':!![]}];}return db[_0x4d42('0x3e')][_0x4d42('0x41')](_0x16fa13);})['then'](function(_0x1ba24a){_0x4d93cf['rows']=_0x1ba24a;return _0x4d93cf;})[_0x4d42('0x25')](respondWithFilteredResult(_0x344864,_0x16fa13))[_0x4d42('0x42')](handleError(_0x344864,null));};exports[_0x4d42('0x43')]=function(_0x61506d,_0x45bcad){var _0x3e2839={'raw':!![],'where':{'id':_0x61506d[_0x4d42('0x44')]['id']}},_0xae8d55={};_0xae8d55[_0x4d42('0x2e')]=_[_0x4d42('0x30')](db[_0x4d42('0x3e')][_0x4d42('0x45')]);_0xae8d55[_0x4d42('0x2f')]=_[_0x4d42('0x30')](_0x61506d['query']);_0xae8d55[_0x4d42('0x31')]=_['intersection'](_0xae8d55[_0x4d42('0x2e')],_0xae8d55['query']);_0x3e2839[_0x4d42('0x33')]=_['intersection'](_0xae8d55['model'],qs[_0x4d42('0x34')](_0x61506d[_0x4d42('0x2f')][_0x4d42('0x34')]));_0x3e2839[_0x4d42('0x33')]=_0x3e2839['attributes'][_0x4d42('0x46')]?_0x3e2839['attributes']:_0xae8d55[_0x4d42('0x2e')];if(_0x61506d['query'][_0x4d42('0x3f')]){_0x3e2839['include']=[{'all':!![]}];}_0x3e2839=_[_0x4d42('0x3b')]({},_0x3e2839,_0x61506d[_0x4d42('0x3d')]);return db['VoiceTransferReport'][_0x4d42('0x47')](_0x3e2839)[_0x4d42('0x25')](handleEntityNotFound(_0x45bcad,null))[_0x4d42('0x25')](respondWithResult(_0x45bcad,null))[_0x4d42('0x42')](handleError(_0x45bcad,null));};exports[_0x4d42('0x48')]=function(_0x4c87b6,_0x1e1de0){return db[_0x4d42('0x3e')][_0x4d42('0x48')](_0x4c87b6[_0x4d42('0x49')],{})[_0x4d42('0x25')](respondWithResult(_0x1e1de0,0xc9))[_0x4d42('0x42')](handleError(_0x1e1de0,null));};exports[_0x4d42('0x4a')]=function(_0x18a88f,_0x3a6dd2){if(_0x18a88f[_0x4d42('0x49')]['id']){delete _0x18a88f['body']['id'];}return db['VoiceTransferReport']['find']({'where':{'id':_0x18a88f[_0x4d42('0x44')]['id']}})['then'](handleEntityNotFound(_0x3a6dd2,null))[_0x4d42('0x25')](saveUpdates(_0x18a88f[_0x4d42('0x49')],null))[_0x4d42('0x25')](respondWithResult(_0x3a6dd2,null))['catch'](handleError(_0x3a6dd2,null));};exports['destroy']=function(_0x167a0a,_0x1984e1){return db[_0x4d42('0x3e')][_0x4d42('0x47')]({'where':{'id':_0x167a0a[_0x4d42('0x44')]['id']}})[_0x4d42('0x25')](handleEntityNotFound(_0x1984e1,null))['then'](removeEntity(_0x1984e1,null))[_0x4d42('0x42')](handleError(_0x1984e1,null));};exports[_0x4d42('0x4b')]=function(_0x44bd13,_0x10d8f9){return db[_0x4d42('0x3e')]['describe']()['then'](respondWithResult(_0x10d8f9,null))['catch'](handleError(_0x10d8f9,null));};
\ No newline at end of file
+var _0xa054=['sox','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','ioredis','../../components/auth/service','api','../../config/utils','../../config/environment','../../mysqldb','end','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','then','destroy','sendStatus','error','stack','name','map','rawAttributes','type','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','VIRTUAL','filter','options','VoiceTransferReport','includeAll','include','findAll','catch','show','params','length','merge','find','create','body','describe','rimraf','zip-dir','request-promise','bluebird','mustache','util','path'];(function(_0x543084,_0x4337f5){var _0x306a57=function(_0x2769ed){while(--_0x2769ed){_0x543084['push'](_0x543084['shift']());}};_0x306a57(++_0x4337f5);}(_0xa054,0x1dc));var _0x4a05=function(_0x117f4c,_0x36a9b1){_0x117f4c=_0x117f4c-0x0;var _0x2b24e9=_0xa054[_0x117f4c];return _0x2b24e9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4a05('0x0'));var zipdir=require(_0x4a05('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4a05('0x2'));var moment=require('moment');var BPromise=require(_0x4a05('0x3'));var Mustache=require(_0x4a05('0x4'));var util=require(_0x4a05('0x5'));var path=require(_0x4a05('0x6'));var sox=require(_0x4a05('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4a05('0x8'));var _=require(_0x4a05('0x9'));var squel=require(_0x4a05('0xa'));var crypto=require(_0x4a05('0xb'));var jsforce=require(_0x4a05('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x4a05('0xd'));var querystring=require(_0x4a05('0xe'));var Papa=require('papaparse');var Redis=require(_0x4a05('0xf'));var authService=require(_0x4a05('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x4a05('0x11'));var utils=require(_0x4a05('0x12'));var config=require(_0x4a05('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x4a05('0x14'))['db'];function respondWithStatusCode(_0x39fcd3,_0x38e1d5){_0x38e1d5=_0x38e1d5||0xcc;return function(_0x2960f1){if(_0x2960f1){return _0x39fcd3['sendStatus'](_0x38e1d5);}return _0x39fcd3['status'](_0x38e1d5)[_0x4a05('0x15')]();};}function respondWithResult(_0xd77daa,_0xcd0747){_0xcd0747=_0xcd0747||0xc8;return function(_0x5d1f01){if(_0x5d1f01){return _0xd77daa[_0x4a05('0x16')](_0xcd0747)[_0x4a05('0x17')](_0x5d1f01);}};}function respondWithFilteredResult(_0x2ac069,_0x17e9b2){return function(_0x4a1493){if(_0x4a1493){var _0x166bc1=typeof _0x17e9b2[_0x4a05('0x18')]===_0x4a05('0x19')&&typeof _0x17e9b2['limit']===_0x4a05('0x19');var _0x2e2547=_0x4a1493[_0x4a05('0x1a')];var _0x58a163=_0x166bc1?0x0:_0x17e9b2[_0x4a05('0x18')];var _0x2c4ce1=_0x166bc1?_0x4a1493['count']:_0x17e9b2[_0x4a05('0x18')]+_0x17e9b2[_0x4a05('0x1b')];var _0x104991;if(_0x2c4ce1>=_0x2e2547){_0x2c4ce1=_0x2e2547;_0x104991=0xc8;}else{_0x104991=0xce;}_0x2ac069[_0x4a05('0x16')](_0x104991);return _0x2ac069['set'](_0x4a05('0x1c'),_0x58a163+'-'+_0x2c4ce1+'/'+_0x2e2547)[_0x4a05('0x17')](_0x4a1493);}return null;};}function patchUpdates(_0x3cbf47){return function(_0x504d85){try{jsonpatch[_0x4a05('0x1d')](_0x504d85,_0x3cbf47,!![]);}catch(_0x167f4a){return BPromise[_0x4a05('0x1e')](_0x167f4a);}return _0x504d85[_0x4a05('0x1f')]();};}function saveUpdates(_0x193ed9,_0x4bca61){return function(_0x101acb){if(_0x101acb){return _0x101acb['update'](_0x193ed9)[_0x4a05('0x20')](function(_0x230f66){return _0x230f66;});}return null;};}function removeEntity(_0x5cb8db,_0x4e926c){return function(_0x13485f){if(_0x13485f){return _0x13485f[_0x4a05('0x21')]()[_0x4a05('0x20')](function(){_0x5cb8db[_0x4a05('0x16')](0xcc)[_0x4a05('0x15')]();});}};}function handleEntityNotFound(_0x3cd2fa,_0x532f9f){return function(_0x3173a3){if(!_0x3173a3){_0x3cd2fa[_0x4a05('0x22')](0x194);}return _0x3173a3;};}function handleError(_0x36e77a,_0x5d40ff){_0x5d40ff=_0x5d40ff||0x1f4;return function(_0x5a68ce){logger[_0x4a05('0x23')](_0x5a68ce[_0x4a05('0x24')]);if(_0x5a68ce[_0x4a05('0x25')]){delete _0x5a68ce['name'];}_0x36e77a['status'](_0x5d40ff)['send'](_0x5a68ce);};}exports['index']=function(_0x46e3fb,_0x40b229){var _0x3598d7={},_0x455483={},_0x5a6b9e={'count':0x0,'rows':[]};var _0x4d6d1f=_[_0x4a05('0x26')](db['VoiceTransferReport'][_0x4a05('0x27')],function(_0x4f47c7){return{'name':_0x4f47c7['fieldName'],'type':_0x4f47c7[_0x4a05('0x28')]['key']};});_0x455483[_0x4a05('0x29')]=_[_0x4a05('0x26')](_0x4d6d1f,_0x4a05('0x25'));_0x455483[_0x4a05('0x2a')]=_[_0x4a05('0x2b')](_0x46e3fb['query']);_0x455483[_0x4a05('0x2c')]=_[_0x4a05('0x2d')](_0x455483['model'],_0x455483['query']);_0x3598d7['attributes']=_[_0x4a05('0x2d')](_0x455483[_0x4a05('0x29')],qs[_0x4a05('0x2e')](_0x46e3fb[_0x4a05('0x2a')]['fields']));_0x3598d7[_0x4a05('0x2f')]=_0x3598d7[_0x4a05('0x2f')]['length']?_0x3598d7[_0x4a05('0x2f')]:_0x455483['model'];if(!_0x46e3fb[_0x4a05('0x2a')][_0x4a05('0x30')](_0x4a05('0x31'))){_0x3598d7[_0x4a05('0x1b')]=qs[_0x4a05('0x1b')](_0x46e3fb['query']['limit']);_0x3598d7['offset']=qs[_0x4a05('0x18')](_0x46e3fb[_0x4a05('0x2a')][_0x4a05('0x18')]);}_0x3598d7[_0x4a05('0x32')]=qs[_0x4a05('0x33')](_0x46e3fb[_0x4a05('0x2a')][_0x4a05('0x33')]);_0x3598d7[_0x4a05('0x34')]=qs['filters'](_['pick'](_0x46e3fb[_0x4a05('0x2a')],_0x455483[_0x4a05('0x2c')]),_0x4d6d1f);if(_0x46e3fb[_0x4a05('0x2a')]['filter']){_0x3598d7[_0x4a05('0x34')]=_['merge'](_0x3598d7[_0x4a05('0x34')],{'$or':_[_0x4a05('0x26')](_0x4d6d1f,function(_0x363fc1){if(_0x363fc1['type']!==_0x4a05('0x35')){var _0x59643d={};_0x59643d[_0x363fc1[_0x4a05('0x25')]]={'$like':'%'+_0x46e3fb[_0x4a05('0x2a')][_0x4a05('0x36')]+'%'};return _0x59643d;}})});}_0x3598d7=_['merge']({},_0x3598d7,_0x46e3fb[_0x4a05('0x37')]);var _0x10be55={'where':_0x3598d7[_0x4a05('0x34')]};return db[_0x4a05('0x38')][_0x4a05('0x1a')](_0x10be55)[_0x4a05('0x20')](function(_0x385730){_0x5a6b9e[_0x4a05('0x1a')]=_0x385730;if(_0x46e3fb[_0x4a05('0x2a')][_0x4a05('0x39')]){_0x3598d7[_0x4a05('0x3a')]=[{'all':!![]}];}return db[_0x4a05('0x38')][_0x4a05('0x3b')](_0x3598d7);})[_0x4a05('0x20')](function(_0x331d42){_0x5a6b9e['rows']=_0x331d42;return _0x5a6b9e;})[_0x4a05('0x20')](respondWithFilteredResult(_0x40b229,_0x3598d7))[_0x4a05('0x3c')](handleError(_0x40b229,null));};exports[_0x4a05('0x3d')]=function(_0x44003a,_0x18bd7c){var _0x3207b5={'raw':!![],'where':{'id':_0x44003a[_0x4a05('0x3e')]['id']}},_0x42a1ab={};_0x42a1ab['model']=_['keys'](db[_0x4a05('0x38')][_0x4a05('0x27')]);_0x42a1ab[_0x4a05('0x2a')]=_['keys'](_0x44003a[_0x4a05('0x2a')]);_0x42a1ab[_0x4a05('0x2c')]=_[_0x4a05('0x2d')](_0x42a1ab[_0x4a05('0x29')],_0x42a1ab['query']);_0x3207b5['attributes']=_['intersection'](_0x42a1ab[_0x4a05('0x29')],qs[_0x4a05('0x2e')](_0x44003a[_0x4a05('0x2a')][_0x4a05('0x2e')]));_0x3207b5['attributes']=_0x3207b5[_0x4a05('0x2f')][_0x4a05('0x3f')]?_0x3207b5[_0x4a05('0x2f')]:_0x42a1ab[_0x4a05('0x29')];if(_0x44003a[_0x4a05('0x2a')][_0x4a05('0x39')]){_0x3207b5[_0x4a05('0x3a')]=[{'all':!![]}];}_0x3207b5=_[_0x4a05('0x40')]({},_0x3207b5,_0x44003a['options']);return db[_0x4a05('0x38')][_0x4a05('0x41')](_0x3207b5)[_0x4a05('0x20')](handleEntityNotFound(_0x18bd7c,null))[_0x4a05('0x20')](respondWithResult(_0x18bd7c,null))[_0x4a05('0x3c')](handleError(_0x18bd7c,null));};exports[_0x4a05('0x42')]=function(_0x26571a,_0x14db39){return db['VoiceTransferReport'][_0x4a05('0x42')](_0x26571a[_0x4a05('0x43')],{})[_0x4a05('0x20')](respondWithResult(_0x14db39,0xc9))[_0x4a05('0x3c')](handleError(_0x14db39,null));};exports['update']=function(_0x24dbd2,_0x5ca766){if(_0x24dbd2[_0x4a05('0x43')]['id']){delete _0x24dbd2[_0x4a05('0x43')]['id'];}return db['VoiceTransferReport'][_0x4a05('0x41')]({'where':{'id':_0x24dbd2[_0x4a05('0x3e')]['id']}})[_0x4a05('0x20')](handleEntityNotFound(_0x5ca766,null))[_0x4a05('0x20')](saveUpdates(_0x24dbd2['body'],null))[_0x4a05('0x20')](respondWithResult(_0x5ca766,null))[_0x4a05('0x3c')](handleError(_0x5ca766,null));};exports['destroy']=function(_0x2895db,_0x471895){return db[_0x4a05('0x38')][_0x4a05('0x41')]({'where':{'id':_0x2895db['params']['id']}})['then'](handleEntityNotFound(_0x471895,null))['then'](removeEntity(_0x471895,null))[_0x4a05('0x3c')](handleError(_0x471895,null));};exports[_0x4a05('0x44')]=function(_0x187e14,_0x170981){return db[_0x4a05('0x38')][_0x4a05('0x44')]()[_0x4a05('0x20')](respondWithResult(_0x170981,null))[_0x4a05('0x3c')](handleError(_0x170981,null));};
\ No newline at end of file
index 84baf2e..de3685e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f24=['util','../../config/logger','api','moment','request-promise','../../config/environment','./voiceTransferReport.attributes','define','VoiceTransferReport','lodash'];(function(_0x503e60,_0xb589a0){var _0x3dcdf9=function(_0x44cf7f){while(--_0x44cf7f){_0x503e60['push'](_0x503e60['shift']());}};_0x3dcdf9(++_0xb589a0);}(_0x0f24,0x185));var _0x40f2=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x0f24[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x40f2('0x0'));var util=require(_0x40f2('0x1'));var logger=require(_0x40f2('0x2'))(_0x40f2('0x3'));var moment=require(_0x40f2('0x4'));var BPromise=require('bluebird');var rp=require(_0x40f2('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x40f2('0x6'));var attributes=require(_0x40f2('0x7'));module['exports']=function(_0x1f35fd,_0x57dd67){return _0x1f35fd[_0x40f2('0x8')](_0x40f2('0x9'),attributes,{'tableName':'report_call_transfer','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6d55=['report_call_transfer','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./voiceTransferReport.attributes','exports','define','VoiceTransferReport'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x6d55,0x1c9));var _0x56d5=function(_0x560cae,_0x33c770){_0x560cae=_0x560cae-0x0;var _0x4e3c5d=_0x6d55[_0x560cae];return _0x4e3c5d;};'use strict';var _=require('lodash');var util=require(_0x56d5('0x0'));var logger=require(_0x56d5('0x1'))(_0x56d5('0x2'));var moment=require('moment');var BPromise=require(_0x56d5('0x3'));var rp=require(_0x56d5('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x56d5('0x5'));var config=require(_0x56d5('0x6'));var attributes=require(_0x56d5('0x7'));module[_0x56d5('0x8')]=function(_0xc7b785,_0x2bfd6a){return _0xc7b785[_0x56d5('0x9')](_0x56d5('0xa'),attributes,{'tableName':_0x56d5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 76bb3a6..b2189a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8aee=['lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','error','message','result','VoiceTransferReport','create','body','options','raw','CreateVoiceTransferReport','stringify','catch'];(function(_0x254d9f,_0x54ddb5){var _0x1eedb9=function(_0x2d05f1){while(--_0x2d05f1){_0x254d9f['push'](_0x254d9f['shift']());}};_0x1eedb9(++_0x54ddb5);}(_0x8aee,0x10e));var _0xe8ae=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8aee[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xe8ae('0x0'));var util=require(_0xe8ae('0x1'));var moment=require('moment');var BPromise=require(_0xe8ae('0x2'));var rs=require(_0xe8ae('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe8ae('0x4'))['db'];var utils=require(_0xe8ae('0x5'));var logger=require(_0xe8ae('0x6'))(_0xe8ae('0x7'));var config=require(_0xe8ae('0x8'));var jayson=require(_0xe8ae('0x9'));var client=jayson[_0xe8ae('0xa')][_0xe8ae('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x45b011,_0xfccbc7,_0x11d767){return new BPromise(function(_0x55659a,_0x4285f1){return client[_0xe8ae('0xc')](_0x45b011,_0x11d767)[_0xe8ae('0xd')](function(_0x5942e9){logger[_0xe8ae('0xe')](_0xe8ae('0xf'),_0xfccbc7,_0xe8ae('0x10'));logger[_0xe8ae('0x11')](_0xe8ae('0x12'),_0xfccbc7,_0xe8ae('0x10'),JSON['stringify'](_0x5942e9));if(_0x5942e9['error']){if(_0x5942e9[_0xe8ae('0x13')]['code']===0x1f4){logger[_0xe8ae('0x13')](_0xe8ae('0xf'),_0xfccbc7,_0x5942e9[_0xe8ae('0x13')][_0xe8ae('0x14')]);return _0x4285f1(_0x5942e9[_0xe8ae('0x13')][_0xe8ae('0x14')]);}logger[_0xe8ae('0x13')](_0xe8ae('0xf'),_0xfccbc7,_0x5942e9[_0xe8ae('0x13')][_0xe8ae('0x14')]);return _0x55659a(_0x5942e9[_0xe8ae('0x13')][_0xe8ae('0x14')]);}else{logger[_0xe8ae('0xe')](_0xe8ae('0xf'),_0xfccbc7,'request\x20sent');_0x55659a(_0x5942e9[_0xe8ae('0x15')]['message']);}})['catch'](function(_0x339b86){logger[_0xe8ae('0x13')](_0xe8ae('0xf'),_0xfccbc7,_0x339b86);_0x4285f1(_0x339b86);});});}exports['CreateVoiceTransferReport']=function(_0x291126){var _0x29b25c=this;return new Promise(function(_0x41c4be,_0x2dcc6d){return db[_0xe8ae('0x16')][_0xe8ae('0x17')](_0x291126[_0xe8ae('0x18')],{'raw':_0x291126['options']?_0x291126[_0xe8ae('0x19')][_0xe8ae('0x1a')]===undefined?!![]:![]:!![]})[_0xe8ae('0xd')](function(_0x198ac4){logger[_0xe8ae('0xe')](_0xe8ae('0x1b'),_0x291126);logger[_0xe8ae('0x11')](_0xe8ae('0x1b'),_0x291126,JSON[_0xe8ae('0x1c')](_0x198ac4));_0x41c4be(_0x198ac4);})[_0xe8ae('0x1d')](function(_0xbe321a){logger['error'](_0xe8ae('0x1b'),_0xbe321a[_0xe8ae('0x14')],_0x291126);_0x2dcc6d(_0x29b25c[_0xe8ae('0x13')](0x1f4,_0xbe321a[_0xe8ae('0x14')]));});});};
\ No newline at end of file
+var _0x49ab=['lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','VoiceTransferReport','create','options','CreateVoiceTransferReport'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x49ab,0x150));var _0xb49a=function(_0x350ebd,_0x3259f9){_0x350ebd=_0x350ebd-0x0;var _0x1b5d2b=_0x49ab[_0x350ebd];return _0x1b5d2b;};'use strict';var _=require(_0xb49a('0x0'));var util=require('util');var moment=require(_0xb49a('0x1'));var BPromise=require(_0xb49a('0x2'));var rs=require(_0xb49a('0x3'));var fs=require('fs');var Redis=require(_0xb49a('0x4'));var db=require(_0xb49a('0x5'))['db'];var utils=require(_0xb49a('0x6'));var logger=require(_0xb49a('0x7'))('rpc');var config=require(_0xb49a('0x8'));var jayson=require(_0xb49a('0x9'));var client=jayson[_0xb49a('0xa')][_0xb49a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3c954b,_0x5aec26,_0x319fa0){return new BPromise(function(_0x59a9c0,_0x3a3a48){return client[_0xb49a('0xc')](_0x3c954b,_0x319fa0)[_0xb49a('0xd')](function(_0x4100bc){logger[_0xb49a('0xe')](_0xb49a('0xf'),_0x5aec26,_0xb49a('0x10'));logger[_0xb49a('0x11')]('VoiceTransferReport,\x20%s,\x20%s,\x20%s',_0x5aec26,_0xb49a('0x10'),JSON[_0xb49a('0x12')](_0x4100bc));if(_0x4100bc[_0xb49a('0x13')]){if(_0x4100bc[_0xb49a('0x13')][_0xb49a('0x14')]===0x1f4){logger[_0xb49a('0x13')](_0xb49a('0xf'),_0x5aec26,_0x4100bc['error'][_0xb49a('0x15')]);return _0x3a3a48(_0x4100bc[_0xb49a('0x13')]['message']);}logger[_0xb49a('0x13')]('VoiceTransferReport,\x20%s,\x20%s',_0x5aec26,_0x4100bc[_0xb49a('0x13')][_0xb49a('0x15')]);return _0x59a9c0(_0x4100bc[_0xb49a('0x13')]['message']);}else{logger['info'](_0xb49a('0xf'),_0x5aec26,'request\x20sent');_0x59a9c0(_0x4100bc[_0xb49a('0x16')][_0xb49a('0x15')]);}})[_0xb49a('0x17')](function(_0x37c98d){logger[_0xb49a('0x13')](_0xb49a('0xf'),_0x5aec26,_0x37c98d);_0x3a3a48(_0x37c98d);});});}exports['CreateVoiceTransferReport']=function(_0x45ead6){var _0x9ba810=this;return new Promise(function(_0x4603b4,_0x410983){return db[_0xb49a('0x18')][_0xb49a('0x19')](_0x45ead6['body'],{'raw':_0x45ead6[_0xb49a('0x1a')]?_0x45ead6[_0xb49a('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0xb49a('0xd')](function(_0x501381){logger[_0xb49a('0xe')](_0xb49a('0x1b'),_0x45ead6);logger[_0xb49a('0x11')]('CreateVoiceTransferReport',_0x45ead6,JSON[_0xb49a('0x12')](_0x501381));_0x4603b4(_0x501381);})[_0xb49a('0x17')](function(_0x29a641){logger[_0xb49a('0x13')](_0xb49a('0x1b'),_0x29a641['message'],_0x45ead6);_0x410983(_0x9ba810[_0xb49a('0x13')](0x1f4,_0x29a641['message']));});});};
\ No newline at end of file
index cd18689..d716199 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x902e=['/calls','/transfer','transfer','exports','express','Router','../../components/auth/service','post','/originate','isAuthenticated','/hangup','canUpdate','/answer','/unhold','unhold'];(function(_0x237fed,_0x1af92f){var _0x47d2be=function(_0x474a23){while(--_0x474a23){_0x237fed['push'](_0x237fed['shift']());}};_0x47d2be(++_0x1af92f);}(_0x902e,0x16c));var _0xe902=function(_0x5964d3,_0x9d25d6){_0x5964d3=_0x5964d3-0x0;var _0x37e9e5=_0x902e[_0x5964d3];return _0x37e9e5;};'use strict';var express=require(_0xe902('0x0'));var router=express[_0xe902('0x1')]();var auth=require(_0xe902('0x2'));var controller=require('./webbar.controller');router[_0xe902('0x3')](_0xe902('0x4'),auth[_0xe902('0x5')](),auth['canUpdate'](),controller['originate']);router[_0xe902('0x3')](_0xe902('0x6'),auth[_0xe902('0x5')](),auth[_0xe902('0x7')](),controller['hangup']);router['post'](_0xe902('0x8'),auth[_0xe902('0x5')](),auth[_0xe902('0x7')](),controller['answer']);router[_0xe902('0x3')]('/hold',auth[_0xe902('0x5')](),auth['canUpdate'](),controller['hold']);router[_0xe902('0x3')](_0xe902('0x9'),auth[_0xe902('0x5')](),auth['canUpdate'](),controller[_0xe902('0xa')]);router['post'](_0xe902('0xb'),auth[_0xe902('0x5')](),auth[_0xe902('0x7')](),controller['calls']);router[_0xe902('0x3')](_0xe902('0xc'),auth[_0xe902('0x5')](),auth[_0xe902('0x7')](),controller[_0xe902('0xd')]);module[_0xe902('0xe')]=router;
\ No newline at end of file
+var _0x2067=['/transfer','transfer','exports','express','Router','../../components/auth/service','./webbar.controller','post','/originate','isAuthenticated','canUpdate','/hangup','/answer','answer','/hold','hold','/unhold','unhold','/calls','calls'];(function(_0x10c51f,_0x11270f){var _0x56a0cd=function(_0x563ac6){while(--_0x563ac6){_0x10c51f['push'](_0x10c51f['shift']());}};_0x56a0cd(++_0x11270f);}(_0x2067,0x67));var _0x7206=function(_0x29df9a,_0x42aff3){_0x29df9a=_0x29df9a-0x0;var _0x3a8e96=_0x2067[_0x29df9a];return _0x3a8e96;};'use strict';var express=require(_0x7206('0x0'));var router=express[_0x7206('0x1')]();var auth=require(_0x7206('0x2'));var controller=require(_0x7206('0x3'));router[_0x7206('0x4')](_0x7206('0x5'),auth[_0x7206('0x6')](),auth[_0x7206('0x7')](),controller['originate']);router['post'](_0x7206('0x8'),auth['isAuthenticated'](),auth[_0x7206('0x7')](),controller['hangup']);router['post'](_0x7206('0x9'),auth[_0x7206('0x6')](),auth[_0x7206('0x7')](),controller[_0x7206('0xa')]);router[_0x7206('0x4')](_0x7206('0xb'),auth[_0x7206('0x6')](),auth['canUpdate'](),controller[_0x7206('0xc')]);router[_0x7206('0x4')](_0x7206('0xd'),auth['isAuthenticated'](),auth[_0x7206('0x7')](),controller[_0x7206('0xe')]);router[_0x7206('0x4')](_0x7206('0xf'),auth[_0x7206('0x6')](),auth['canUpdate'](),controller[_0x7206('0x10')]);router[_0x7206('0x4')](_0x7206('0x11'),auth[_0x7206('0x6')](),auth[_0x7206('0x7')](),controller[_0x7206('0x12')]);module[_0x7206('0x13')]=router;
\ No newline at end of file
index 13eb7d2..802aced 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a2c=['answer\x20fired:','webbar:answer','answer\x20executed!','hold\x20fired:','unhold','webbar:unhold','unhold\x20executed!','all','conference','webbar:conference','conference\x20executed!','transfer\x20fired:','webbar:transfer','transfer\x20executed!','path','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','http','../../config/logger','ioredis','redis','socket.io-emitter','validate','number','string','callNumber\x20is\x20required','userId\x20is\x20required','transferNumber\x20is\x20required','stringify','log','handleError:','name','send','request','then','error','code','message','result','catch','User','agent','VoiceChannels','filter','rows','UserId','sessionId','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','status','userId','body','callNumber','callerId','callbackUrl','info','format','user:%s','webbar:originate','json','hangup','hangup\x20fired:','length','entityFound:','webbar:hangup','hangup\x20executed!','answer'];(function(_0x65d748,_0x35e146){var _0x52e055=function(_0x115a19){while(--_0x115a19){_0x65d748['push'](_0x65d748['shift']());}};_0x52e055(++_0x35e146);}(_0x7a2c,0x17b));var _0xc7a2=function(_0x301a40,_0x45e6fa){_0x301a40=_0x301a40-0x0;var _0x3f25d2=_0x7a2c[_0x301a40];return _0x3f25d2;};'use strict';var path=require(_0xc7a2('0x0'));var fs=require('fs');var _=require('lodash');var db=require(_0xc7a2('0x1'))['db'];var config=require(_0xc7a2('0x2'));var util=require(_0xc7a2('0x3'));var BPromise=require(_0xc7a2('0x4'));var jayson=require(_0xc7a2('0x5'));var amiClient=jayson[_0xc7a2('0x6')][_0xc7a2('0x7')]({'port':0x232a});var logger=require(_0xc7a2('0x8'))('webbarapi');var Redis=require(_0xc7a2('0x9'));config[_0xc7a2('0xa')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xc7a2('0xb'))(new Redis(config[_0xc7a2('0xa')]));var Schema=require(_0xc7a2('0xc'));var originateValidation=new Schema({'userId':{'type':_0xc7a2('0xd'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':_0xc7a2('0xe'),'required':[!![],_0xc7a2('0xf')]},'callerId':{'type':_0xc7a2('0xe')},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':_0xc7a2('0xd'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xc7a2('0xe'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xc7a2('0xd'),'required':[!![],_0xc7a2('0x10')]},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0xc7a2('0xd'),'required':[!![],_0xc7a2('0x10')]},'sessionId':{'type':_0xc7a2('0xe'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0xc7a2('0xe'),'required':[!![],_0xc7a2('0x11')]}});var holdValidation=new Schema({'userId':{'type':_0xc7a2('0xd'),'required':[!![],_0xc7a2('0x10')]},'sessionId':{'type':_0xc7a2('0xe'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xc7a2('0xd'),'required':[!![],_0xc7a2('0x10')]},'sessionId':{'type':_0xc7a2('0xe'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xc7a2('0xd'),'required':[!![],_0xc7a2('0x10')]}});var conferenceValidation=new Schema({'userId':{'type':_0xc7a2('0xd'),'required':[!![],_0xc7a2('0x10')]}});function emit(_0x26d678,_0x2c3338,_0x2bc321){logger['info'](_0x26d678,_0x2c3338,JSON[_0xc7a2('0x12')](_0x2bc321));io['to'](_0x26d678)['emit'](_0x2c3338,_0x2bc321);}function handleError(_0x2414f4){return function(_0x302d54){console[_0xc7a2('0x13')](_0xc7a2('0x14'),_0x302d54,_0x302d54 instanceof RangeError);logger['error'](_0x302d54['stack']);if(_0x302d54 instanceof RangeError){if(_0x302d54[_0xc7a2('0x15')]){delete _0x302d54[_0xc7a2('0x15')];}_0x2414f4['status'](0x194)['send'](_0x302d54);}else{if(_0x302d54['name']){delete _0x302d54[_0xc7a2('0x15')];}_0x2414f4['status'](0x1f4)[_0xc7a2('0x16')](_0x302d54);}};}function checkError(){return function(_0x260be1){if(!_0x260be1){throw new RangeError('NotFound');}return _0x260be1;};}function respondWithRpcPromise(_0x40f3c4,_0x2dff1d){return new BPromise(function(_0x1b51a1,_0x35e0f6){var _0x337bdb=amiClient;return _0x337bdb[_0xc7a2('0x17')](_0x40f3c4,_0x2dff1d)[_0xc7a2('0x18')](function(_0x4a05e1){if(_0x4a05e1['error']){if(_0x4a05e1[_0xc7a2('0x19')][_0xc7a2('0x1a')]===0x1f4){return _0x35e0f6(_0x4a05e1['error'][_0xc7a2('0x1b')]);}return _0x1b51a1(_0x4a05e1[_0xc7a2('0x19')][_0xc7a2('0x1b')]);}else{_0x1b51a1(_0x4a05e1[_0xc7a2('0x1c')]);}})[_0xc7a2('0x1d')](function(_0x35584a){_0x35e0f6(_0x35584a);});});}function getAgent(_0x1beecd){return db[_0xc7a2('0x1e')]['findOne']({'where':{'id':_0x1beecd,'role':_0xc7a2('0x1f')}})['then'](checkError());}function getAgentCheckSession(_0x206eb7,_0x4cc3a8){return new BPromise(function(_0x20404b,_0x14182f){var _0xd93f19=respondWithRpcPromise(_0xc7a2('0x20'));var _0x4977f0=getAgent(_0x206eb7);Promise['all']([_0xd93f19,_0x4977f0])[_0xc7a2('0x18')](function(_0x2f3097){var _0x272c6b=_0x2f3097[0x0];var _0x305efb=_0x2f3097[0x1];var _0x3be88c=_[_0xc7a2('0x21')](_0x272c6b[_0xc7a2('0x22')],function(_0x5e970e){return _0x5e970e[_0xc7a2('0x23')]==_0x305efb['id']&&_0x5e970e[_0xc7a2('0x24')]==_0x4cc3a8;});if(_0x3be88c['length']==0x1){_0x20404b(_0x305efb);}else{_0x14182f(new RangeError(_0xc7a2('0x25')+_0x4cc3a8+_0xc7a2('0x26')));}});});}exports[_0xc7a2('0x27')]=function(_0x517df7,_0x2820a9){logger['info'](_0xc7a2('0x28'),_0x517df7['body']);var _0x5cd5ef=originateValidation[_0xc7a2('0xc')](_0x517df7['body']);if(_0x5cd5ef['length']>0x0){return _0x2820a9[_0xc7a2('0x29')](0x190)['json'](_0x5cd5ef);}var _0x3df1d2=_0x517df7['body'][_0xc7a2('0x2a')];var _0x2a8a26=_0x517df7[_0xc7a2('0x2b')][_0xc7a2('0x2c')];var _0x3d5d7e=_0x517df7[_0xc7a2('0x2b')][_0xc7a2('0x2d')];var _0x2a3bfb=_0x517df7[_0xc7a2('0x2b')][_0xc7a2('0x2e')];return getAgent(_0x3df1d2)['then'](function(_0x30234f){logger[_0xc7a2('0x2f')]('entityFound:',_0x30234f[_0xc7a2('0x15')]);emit(util[_0xc7a2('0x30')](_0xc7a2('0x31'),_0x30234f[_0xc7a2('0x15')]),_0xc7a2('0x32'),{'callNumber':_0x2a8a26,'callerId':_0x3d5d7e,'callbackUrl':_0x2a3bfb});return _0x2820a9[_0xc7a2('0x29')](0xc8)[_0xc7a2('0x33')]({'error':![],'message':'originate\x20executed!'});})[_0xc7a2('0x1d')](handleError(_0x2820a9));};exports[_0xc7a2('0x34')]=function(_0x468151,_0x49ad1f){logger[_0xc7a2('0x2f')](_0xc7a2('0x35'),_0x468151['body']);var _0x366706=hangupValidation[_0xc7a2('0xc')](_0x468151[_0xc7a2('0x2b')]);if(_0x366706[_0xc7a2('0x36')]>0x0){return _0x49ad1f[_0xc7a2('0x29')](0x190)[_0xc7a2('0x33')](_0x366706);}var _0x8559fe=_0x468151[_0xc7a2('0x2b')]['userId'];var _0xd418ee=_0x468151['body'][_0xc7a2('0x24')];return getAgent(_0x8559fe)[_0xc7a2('0x18')](function(_0x2cd014){logger[_0xc7a2('0x2f')](_0xc7a2('0x37'),_0x2cd014[_0xc7a2('0x15')]);emit(util[_0xc7a2('0x30')](_0xc7a2('0x31'),_0x2cd014['name']),_0xc7a2('0x38'),{'sessionId':_0xd418ee});return _0x49ad1f[_0xc7a2('0x29')](0xc8)[_0xc7a2('0x33')]({'error':![],'message':_0xc7a2('0x39')});})[_0xc7a2('0x1d')](handleError(_0x49ad1f));};exports[_0xc7a2('0x3a')]=function(_0x4c99de,_0x5ebb9c){logger['info'](_0xc7a2('0x3b'),_0x4c99de[_0xc7a2('0x2b')]);var _0x28ed1c=answerValidation[_0xc7a2('0xc')](_0x4c99de[_0xc7a2('0x2b')]);if(_0x28ed1c[_0xc7a2('0x36')]>0x0){return _0x5ebb9c[_0xc7a2('0x29')](0x190)[_0xc7a2('0x33')](_0x28ed1c);}var _0x246482=_0x4c99de['body']['userId'];var _0x4bcb42=_0x4c99de[_0xc7a2('0x2b')][_0xc7a2('0x24')];return getAgent(_0x246482)['then'](function(_0x44f2e9){logger[_0xc7a2('0x2f')](_0xc7a2('0x37'),_0x44f2e9['name']);emit(util[_0xc7a2('0x30')]('user:%s',_0x44f2e9[_0xc7a2('0x15')]),_0xc7a2('0x3c'),{'sessionId':_0x4bcb42});return _0x5ebb9c['status'](0xc8)['json']({'error':![],'message':_0xc7a2('0x3d')});})[_0xc7a2('0x1d')](handleError(_0x5ebb9c));};exports['hold']=function(_0x8b8cc2,_0x404e48){logger[_0xc7a2('0x2f')](_0xc7a2('0x3e'),_0x8b8cc2[_0xc7a2('0x2b')]);var _0xa81aa3=holdValidation['validate'](_0x8b8cc2[_0xc7a2('0x2b')]);if(_0xa81aa3[_0xc7a2('0x36')]>0x0){return _0x404e48[_0xc7a2('0x29')](0x190)[_0xc7a2('0x33')](_0xa81aa3);}var _0x54fc41=_0x8b8cc2[_0xc7a2('0x2b')][_0xc7a2('0x2a')];var _0x2adcc6=_0x8b8cc2[_0xc7a2('0x2b')][_0xc7a2('0x24')];return getAgent(_0x54fc41)[_0xc7a2('0x18')](function(_0x7378ed){logger[_0xc7a2('0x2f')]('entityFound:',_0x7378ed[_0xc7a2('0x15')]);emit(util[_0xc7a2('0x30')](_0xc7a2('0x31'),_0x7378ed[_0xc7a2('0x15')]),'webbar:hold',{'sessionId':_0x2adcc6});return _0x404e48[_0xc7a2('0x29')](0xc8)[_0xc7a2('0x33')]({'error':![],'message':'hold\x20executed!'});})[_0xc7a2('0x1d')](handleError(_0x404e48));};exports[_0xc7a2('0x3f')]=function(_0xb09c6f,_0x457318){logger[_0xc7a2('0x2f')]('unhold\x20fired:',_0xb09c6f[_0xc7a2('0x2b')]);var _0x44716e=unholdValidation[_0xc7a2('0xc')](_0xb09c6f['body']);if(_0x44716e['length']>0x0){return _0x457318[_0xc7a2('0x29')](0x190)['json'](_0x44716e);}var _0x4944b7=_0xb09c6f[_0xc7a2('0x2b')][_0xc7a2('0x2a')];var _0x4a6cb2=_0xb09c6f['body'][_0xc7a2('0x24')];return getAgent(_0x4944b7)[_0xc7a2('0x18')](function(_0x119355){logger[_0xc7a2('0x2f')](_0xc7a2('0x37'),_0x119355['name']);emit(util[_0xc7a2('0x30')](_0xc7a2('0x31'),_0x119355['name']),_0xc7a2('0x40'),{'sessionId':_0x4a6cb2});return _0x457318[_0xc7a2('0x29')](0xc8)[_0xc7a2('0x33')]({'error':![],'message':_0xc7a2('0x41')});})[_0xc7a2('0x1d')](handleError(_0x457318));};exports['calls']=function(_0xd91777,_0x40afd2){logger[_0xc7a2('0x2f')]('calls\x20fired:',_0x40afd2[_0xc7a2('0x2b')]);var _0x3174ef=callsValidation[_0xc7a2('0xc')](_0xd91777[_0xc7a2('0x2b')]);if(_0x3174ef[_0xc7a2('0x36')]>0x0){return _0x40afd2[_0xc7a2('0x29')](0x190)['json'](_0x3174ef);}var _0x458ee7=_0xd91777[_0xc7a2('0x2b')][_0xc7a2('0x2a')];var _0x332e8e=respondWithRpcPromise(_0xc7a2('0x20'));var _0x1f0762=getAgent(_0x458ee7);return Promise[_0xc7a2('0x42')]([_0x332e8e,_0x1f0762])['then'](function(_0x2b1bb3){var _0x4e51a8=_0x2b1bb3[0x0];var _0x4e1efa=_0x2b1bb3[0x1];var _0x38df09=_[_0xc7a2('0x21')](_0x4e51a8[_0xc7a2('0x22')],function(_0x4b3045){return _0x4b3045[_0xc7a2('0x23')]==_0x4e1efa['id'];});return _0x40afd2['status'](0xc8)['json']({'count':_0x38df09[_0xc7a2('0x36')],'rows':_0x38df09});})[_0xc7a2('0x1d')](handleError(_0x40afd2));};exports[_0xc7a2('0x43')]=function(_0x1c915b,_0x2fd2b2){logger[_0xc7a2('0x2f')]('conference\x20fired:',_0x1c915b['body']);var _0x5a91d1=conferenceValidation[_0xc7a2('0xc')](_0x1c915b['body']);if(_0x5a91d1['length']>0x0){return _0x2fd2b2['status'](0x190)['json'](_0x5a91d1);}var _0x100b1f=_0x1c915b[_0xc7a2('0x2b')][_0xc7a2('0x2a')];return getAgent(_0x100b1f)[_0xc7a2('0x18')](function(_0x52c83a){logger[_0xc7a2('0x2f')](_0xc7a2('0x37'),_0x52c83a[_0xc7a2('0x15')]);emit(util[_0xc7a2('0x30')](_0xc7a2('0x31'),_0x52c83a[_0xc7a2('0x15')]),_0xc7a2('0x44'));return _0x2fd2b2[_0xc7a2('0x29')](0xc8)[_0xc7a2('0x33')]({'error':![],'message':_0xc7a2('0x45')});})[_0xc7a2('0x1d')](handleError(_0x2fd2b2));};exports['transfer']=function(_0x531924,_0x3613be){logger['info'](_0xc7a2('0x46'),_0x531924[_0xc7a2('0x2b')]);var _0x3dc131=transferValidation[_0xc7a2('0xc')](_0x531924['body']);if(_0x3dc131[_0xc7a2('0x36')]>0x0){return _0x3613be[_0xc7a2('0x29')](0x190)[_0xc7a2('0x33')](_0x3dc131);}var _0xc7ce86=_0x531924[_0xc7a2('0x2b')]['userId'];var _0x1d387c=_0x531924[_0xc7a2('0x2b')][_0xc7a2('0x24')];var _0x45044a=_0x531924[_0xc7a2('0x2b')]['transferNumber'];return getAgent(_0xc7ce86)[_0xc7a2('0x18')](function(_0x4ce8d0){logger['info'](_0xc7a2('0x37'),_0x4ce8d0[_0xc7a2('0x15')]);emit(util[_0xc7a2('0x30')]('user:%s',_0x4ce8d0[_0xc7a2('0x15')]),_0xc7a2('0x47'),{'sessionId':_0x1d387c,'transferNumber':_0x45044a});return _0x3613be['status'](0xc8)[_0xc7a2('0x33')]({'error':![],'message':_0xc7a2('0x48')});})[_0xc7a2('0x1d')](handleError(_0x3613be));};
\ No newline at end of file
+var _0x3140=['answer\x20executed!','hold','sessionId','webbar:hold','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','conference','conference\x20fired:','webbar:conference','transfer','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','number','callNumber\x20is\x20required','string','userId\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','emit','log','handleError:','stack','name','status','send','NotFound','request','then','error','code','message','result','catch','User','findOne','agent','VoiceChannels','all','rows','UserId','length','sessionId\x20','\x20not\x20found!','originate','body','json','userId','callNumber','callerId','entityFound:','format','originate\x20executed!','hangup\x20fired:','user:%s','webbar:hangup','answer','answer\x20fired:','webbar:answer'];(function(_0x26cf07,_0x28c64a){var _0xec3c66=function(_0x523cde){while(--_0x523cde){_0x26cf07['push'](_0x26cf07['shift']());}};_0xec3c66(++_0x28c64a);}(_0x3140,0xaf));var _0x0314=function(_0x2e2a10,_0x55f9f5){_0x2e2a10=_0x2e2a10-0x0;var _0x5ad6cd=_0x3140[_0x2e2a10];return _0x5ad6cd;};'use strict';var path=require(_0x0314('0x0'));var fs=require('fs');var _=require(_0x0314('0x1'));var db=require(_0x0314('0x2'))['db'];var config=require(_0x0314('0x3'));var util=require('util');var BPromise=require('bluebird');var jayson=require(_0x0314('0x4'));var amiClient=jayson[_0x0314('0x5')][_0x0314('0x6')]({'port':0x232a});var logger=require(_0x0314('0x7'))(_0x0314('0x8'));var Redis=require(_0x0314('0x9'));config[_0x0314('0xa')]=_[_0x0314('0xb')](config[_0x0314('0xa')],{'host':_0x0314('0xc'),'port':0x18eb});var io=require(_0x0314('0xd'))(new Redis(config['redis']));var Schema=require(_0x0314('0xe'));var originateValidation=new Schema({'userId':{'type':_0x0314('0xf'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':'string','required':[!![],_0x0314('0x10')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0x0314('0x11')}});var hangupValidation=new Schema({'userId':{'type':_0x0314('0xf'),'required':[!![],_0x0314('0x12')]},'sessionId':{'type':_0x0314('0x11'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x0314('0xf'),'required':[!![],_0x0314('0x12')]},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0x0314('0xf'),'required':[!![],_0x0314('0x12')]},'sessionId':{'type':_0x0314('0x11'),'required':[!![],_0x0314('0x13')]},'transferNumber':{'type':_0x0314('0x11'),'required':[!![],_0x0314('0x14')]}});var holdValidation=new Schema({'userId':{'type':_0x0314('0xf'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x0314('0x11'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x0314('0xf'),'required':[!![],_0x0314('0x12')]},'sessionId':{'type':_0x0314('0x11'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x0314('0xf'),'required':[!![],_0x0314('0x12')]}});var conferenceValidation=new Schema({'userId':{'type':_0x0314('0xf'),'required':[!![],_0x0314('0x12')]}});function emit(_0x5e460f,_0xb9730b,_0x24cd42){logger[_0x0314('0x15')](_0x5e460f,_0xb9730b,JSON['stringify'](_0x24cd42));io['to'](_0x5e460f)[_0x0314('0x16')](_0xb9730b,_0x24cd42);}function handleError(_0x5f2e82){return function(_0x575b68){console[_0x0314('0x17')](_0x0314('0x18'),_0x575b68,_0x575b68 instanceof RangeError);logger['error'](_0x575b68[_0x0314('0x19')]);if(_0x575b68 instanceof RangeError){if(_0x575b68[_0x0314('0x1a')]){delete _0x575b68['name'];}_0x5f2e82[_0x0314('0x1b')](0x194)['send'](_0x575b68);}else{if(_0x575b68[_0x0314('0x1a')]){delete _0x575b68[_0x0314('0x1a')];}_0x5f2e82[_0x0314('0x1b')](0x1f4)[_0x0314('0x1c')](_0x575b68);}};}function checkError(){return function(_0x3bdb1){if(!_0x3bdb1){throw new RangeError(_0x0314('0x1d'));}return _0x3bdb1;};}function respondWithRpcPromise(_0x4d3bc6,_0x56ef33){return new BPromise(function(_0x20305b,_0xbd3ad0){var _0x1945f8=amiClient;return _0x1945f8[_0x0314('0x1e')](_0x4d3bc6,_0x56ef33)[_0x0314('0x1f')](function(_0xd7638b){if(_0xd7638b['error']){if(_0xd7638b[_0x0314('0x20')][_0x0314('0x21')]===0x1f4){return _0xbd3ad0(_0xd7638b['error'][_0x0314('0x22')]);}return _0x20305b(_0xd7638b[_0x0314('0x20')][_0x0314('0x22')]);}else{_0x20305b(_0xd7638b[_0x0314('0x23')]);}})[_0x0314('0x24')](function(_0x3af9d3){_0xbd3ad0(_0x3af9d3);});});}function getAgent(_0x5d5b13){return db[_0x0314('0x25')][_0x0314('0x26')]({'where':{'id':_0x5d5b13,'role':_0x0314('0x27')}})['then'](checkError());}function getAgentCheckSession(_0x29b4b5,_0x5e3eba){return new BPromise(function(_0x47c102,_0x5da2c7){var _0x2fc520=respondWithRpcPromise(_0x0314('0x28'));var _0x550dc4=getAgent(_0x29b4b5);Promise[_0x0314('0x29')]([_0x2fc520,_0x550dc4])[_0x0314('0x1f')](function(_0x5291c2){var _0x547ab3=_0x5291c2[0x0];var _0x15fbfb=_0x5291c2[0x1];var _0x345cef=_['filter'](_0x547ab3[_0x0314('0x2a')],function(_0x16e74a){return _0x16e74a[_0x0314('0x2b')]==_0x15fbfb['id']&&_0x16e74a['sessionId']==_0x5e3eba;});if(_0x345cef[_0x0314('0x2c')]==0x1){_0x47c102(_0x15fbfb);}else{_0x5da2c7(new RangeError(_0x0314('0x2d')+_0x5e3eba+_0x0314('0x2e')));}});});}exports[_0x0314('0x2f')]=function(_0x549b0b,_0x1d01b5){logger['info']('originate\x20fired:',_0x549b0b[_0x0314('0x30')]);var _0x14d3b4=originateValidation[_0x0314('0xe')](_0x549b0b['body']);if(_0x14d3b4[_0x0314('0x2c')]>0x0){return _0x1d01b5['status'](0x190)[_0x0314('0x31')](_0x14d3b4);}var _0x5a0767=_0x549b0b['body'][_0x0314('0x32')];var _0x5d3b0e=_0x549b0b[_0x0314('0x30')][_0x0314('0x33')];var _0x2990ea=_0x549b0b[_0x0314('0x30')][_0x0314('0x34')];var _0x1a9ff7=_0x549b0b[_0x0314('0x30')]['callbackUrl'];return getAgent(_0x5a0767)[_0x0314('0x1f')](function(_0x28c6d0){logger[_0x0314('0x15')](_0x0314('0x35'),_0x28c6d0[_0x0314('0x1a')]);emit(util[_0x0314('0x36')]('user:%s',_0x28c6d0[_0x0314('0x1a')]),'webbar:originate',{'callNumber':_0x5d3b0e,'callerId':_0x2990ea,'callbackUrl':_0x1a9ff7});return _0x1d01b5[_0x0314('0x1b')](0xc8)['json']({'error':![],'message':_0x0314('0x37')});})['catch'](handleError(_0x1d01b5));};exports['hangup']=function(_0x58c701,_0x1765d7){logger[_0x0314('0x15')](_0x0314('0x38'),_0x58c701[_0x0314('0x30')]);var _0x986315=hangupValidation['validate'](_0x58c701[_0x0314('0x30')]);if(_0x986315[_0x0314('0x2c')]>0x0){return _0x1765d7[_0x0314('0x1b')](0x190)['json'](_0x986315);}var _0x273f2c=_0x58c701['body'][_0x0314('0x32')];var _0x5b034a=_0x58c701[_0x0314('0x30')]['sessionId'];return getAgent(_0x273f2c)['then'](function(_0x370539){logger[_0x0314('0x15')]('entityFound:',_0x370539[_0x0314('0x1a')]);emit(util['format'](_0x0314('0x39'),_0x370539[_0x0314('0x1a')]),_0x0314('0x3a'),{'sessionId':_0x5b034a});return _0x1765d7[_0x0314('0x1b')](0xc8)[_0x0314('0x31')]({'error':![],'message':'hangup\x20executed!'});})[_0x0314('0x24')](handleError(_0x1765d7));};exports[_0x0314('0x3b')]=function(_0x3b070a,_0x5f33cd){logger[_0x0314('0x15')](_0x0314('0x3c'),_0x3b070a[_0x0314('0x30')]);var _0x599473=answerValidation[_0x0314('0xe')](_0x3b070a['body']);if(_0x599473[_0x0314('0x2c')]>0x0){return _0x5f33cd[_0x0314('0x1b')](0x190)[_0x0314('0x31')](_0x599473);}var _0x583aba=_0x3b070a[_0x0314('0x30')][_0x0314('0x32')];var _0x588e65=_0x3b070a['body']['sessionId'];return getAgent(_0x583aba)[_0x0314('0x1f')](function(_0x70bcd){logger[_0x0314('0x15')]('entityFound:',_0x70bcd[_0x0314('0x1a')]);emit(util[_0x0314('0x36')](_0x0314('0x39'),_0x70bcd[_0x0314('0x1a')]),_0x0314('0x3d'),{'sessionId':_0x588e65});return _0x5f33cd['status'](0xc8)[_0x0314('0x31')]({'error':![],'message':_0x0314('0x3e')});})[_0x0314('0x24')](handleError(_0x5f33cd));};exports[_0x0314('0x3f')]=function(_0x1b7292,_0x209ea9){logger[_0x0314('0x15')]('hold\x20fired:',_0x1b7292[_0x0314('0x30')]);var _0x1d72f6=holdValidation['validate'](_0x1b7292[_0x0314('0x30')]);if(_0x1d72f6[_0x0314('0x2c')]>0x0){return _0x209ea9[_0x0314('0x1b')](0x190)['json'](_0x1d72f6);}var _0x4a1850=_0x1b7292[_0x0314('0x30')][_0x0314('0x32')];var _0x2cbed3=_0x1b7292[_0x0314('0x30')][_0x0314('0x40')];return getAgent(_0x4a1850)[_0x0314('0x1f')](function(_0x36a72a){logger['info'](_0x0314('0x35'),_0x36a72a['name']);emit(util[_0x0314('0x36')](_0x0314('0x39'),_0x36a72a[_0x0314('0x1a')]),_0x0314('0x41'),{'sessionId':_0x2cbed3});return _0x209ea9[_0x0314('0x1b')](0xc8)['json']({'error':![],'message':'hold\x20executed!'});})[_0x0314('0x24')](handleError(_0x209ea9));};exports[_0x0314('0x42')]=function(_0x20070c,_0x26ecb7){logger['info'](_0x0314('0x43'),_0x20070c[_0x0314('0x30')]);var _0x2b601a=unholdValidation[_0x0314('0xe')](_0x20070c[_0x0314('0x30')]);if(_0x2b601a[_0x0314('0x2c')]>0x0){return _0x26ecb7[_0x0314('0x1b')](0x190)['json'](_0x2b601a);}var _0x28ca8f=_0x20070c[_0x0314('0x30')][_0x0314('0x32')];var _0x577a91=_0x20070c[_0x0314('0x30')][_0x0314('0x40')];return getAgent(_0x28ca8f)['then'](function(_0x92cb75){logger[_0x0314('0x15')](_0x0314('0x35'),_0x92cb75[_0x0314('0x1a')]);emit(util['format'](_0x0314('0x39'),_0x92cb75[_0x0314('0x1a')]),_0x0314('0x44'),{'sessionId':_0x577a91});return _0x26ecb7[_0x0314('0x1b')](0xc8)[_0x0314('0x31')]({'error':![],'message':_0x0314('0x45')});})[_0x0314('0x24')](handleError(_0x26ecb7));};exports[_0x0314('0x46')]=function(_0x166154,_0xa8dc19){logger['info'](_0x0314('0x47'),_0xa8dc19[_0x0314('0x30')]);var _0xf29a33=callsValidation[_0x0314('0xe')](_0x166154[_0x0314('0x30')]);if(_0xf29a33[_0x0314('0x2c')]>0x0){return _0xa8dc19[_0x0314('0x1b')](0x190)['json'](_0xf29a33);}var _0x5c4e26=_0x166154['body'][_0x0314('0x32')];var _0x3c292c=respondWithRpcPromise('VoiceChannels');var _0xda9a80=getAgent(_0x5c4e26);return Promise[_0x0314('0x29')]([_0x3c292c,_0xda9a80])[_0x0314('0x1f')](function(_0x4b35d8){var _0x50e8dc=_0x4b35d8[0x0];var _0x2e29ce=_0x4b35d8[0x1];var _0x40a4d8=_['filter'](_0x50e8dc[_0x0314('0x2a')],function(_0x4b022a){return _0x4b022a[_0x0314('0x2b')]==_0x2e29ce['id'];});return _0xa8dc19[_0x0314('0x1b')](0xc8)[_0x0314('0x31')]({'count':_0x40a4d8[_0x0314('0x2c')],'rows':_0x40a4d8});})['catch'](handleError(_0xa8dc19));};exports[_0x0314('0x48')]=function(_0x3fc295,_0x549f4c){logger['info'](_0x0314('0x49'),_0x3fc295[_0x0314('0x30')]);var _0x1cca34=conferenceValidation[_0x0314('0xe')](_0x3fc295[_0x0314('0x30')]);if(_0x1cca34[_0x0314('0x2c')]>0x0){return _0x549f4c[_0x0314('0x1b')](0x190)['json'](_0x1cca34);}var _0x340676=_0x3fc295['body']['userId'];return getAgent(_0x340676)[_0x0314('0x1f')](function(_0x5521dd){logger[_0x0314('0x15')](_0x0314('0x35'),_0x5521dd[_0x0314('0x1a')]);emit(util[_0x0314('0x36')](_0x0314('0x39'),_0x5521dd[_0x0314('0x1a')]),_0x0314('0x4a'));return _0x549f4c[_0x0314('0x1b')](0xc8)['json']({'error':![],'message':'conference\x20executed!'});})[_0x0314('0x24')](handleError(_0x549f4c));};exports[_0x0314('0x4b')]=function(_0xf480fe,_0x582451){logger['info']('transfer\x20fired:',_0xf480fe[_0x0314('0x30')]);var _0x17dbb9=transferValidation['validate'](_0xf480fe[_0x0314('0x30')]);if(_0x17dbb9[_0x0314('0x2c')]>0x0){return _0x582451[_0x0314('0x1b')](0x190)[_0x0314('0x31')](_0x17dbb9);}var _0x19d14b=_0xf480fe[_0x0314('0x30')]['userId'];var _0x41ec80=_0xf480fe[_0x0314('0x30')][_0x0314('0x40')];var _0x5a69ac=_0xf480fe[_0x0314('0x30')][_0x0314('0x4c')];return getAgent(_0x19d14b)[_0x0314('0x1f')](function(_0x51632e){logger[_0x0314('0x15')](_0x0314('0x35'),_0x51632e['name']);emit(util[_0x0314('0x36')](_0x0314('0x39'),_0x51632e[_0x0314('0x1a')]),_0x0314('0x4d'),{'sessionId':_0x41ec80,'transferNumber':_0x5a69ac});return _0x582451[_0x0314('0x1b')](0xc8)['json']({'error':![],'message':_0x0314('0x4e')});})[_0x0314('0x24')](handleError(_0x582451));};
\ No newline at end of file
index 8f9de38..c6191a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4a2=['../../components/auth/service','../../config/environment','./whatsappAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','getAnswers','/:id/users','getAgents','/:id/applications','getApplications','post','addDisposition','/:id/canned_answers','addAnswer','addAgents','notify','/:id/send','send','put','update','delete','destroy','removeAnswers','removeAgents','multer','connect-timeout','Router'];(function(_0x172450,_0x5801c7){var _0x22888d=function(_0x185d86){while(--_0x185d86){_0x172450['push'](_0x172450['shift']());}};_0x22888d(++_0x5801c7);}(_0xd4a2,0x173));var _0x2d4a=function(_0x176570,_0x35f814){_0x176570=_0x176570-0x0;var _0x50f1d7=_0xd4a2[_0x176570];return _0x50f1d7;};'use strict';var multer=require(_0x2d4a('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x2d4a('0x1'));var express=require('express');var router=express[_0x2d4a('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x2d4a('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x2d4a('0x4'));var controller=require(_0x2d4a('0x5'));router[_0x2d4a('0x6')]('/',auth[_0x2d4a('0x7')](),controller[_0x2d4a('0x8')]);router['get'](_0x2d4a('0x9'),auth[_0x2d4a('0x7')](),controller[_0x2d4a('0xa')]);router[_0x2d4a('0x6')](_0x2d4a('0xb'),auth[_0x2d4a('0x7')](),controller[_0x2d4a('0xc')]);router[_0x2d4a('0x6')](_0x2d4a('0xd'),auth[_0x2d4a('0x7')](),controller[_0x2d4a('0xe')]);router[_0x2d4a('0x6')]('/:id/canned_answers',auth['isAuthenticated'](),controller[_0x2d4a('0xf')]);router['get'](_0x2d4a('0x10'),auth[_0x2d4a('0x7')](),controller[_0x2d4a('0x11')]);router[_0x2d4a('0x6')](_0x2d4a('0x12'),auth[_0x2d4a('0x7')](),controller[_0x2d4a('0x13')]);router[_0x2d4a('0x14')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2d4a('0x14')]('/:id/dispositions',auth[_0x2d4a('0x7')](),controller[_0x2d4a('0x15')]);router[_0x2d4a('0x14')](_0x2d4a('0x16'),auth['isAuthenticated'](),controller[_0x2d4a('0x17')]);router['post'](_0x2d4a('0x10'),auth['isAuthenticated'](),controller[_0x2d4a('0x18')]);router[_0x2d4a('0x14')](_0x2d4a('0x12'),auth[_0x2d4a('0x7')](),controller['addApplications']);router['post']('/:id/notify',controller[_0x2d4a('0x19')]);router[_0x2d4a('0x14')](_0x2d4a('0x1a'),auth[_0x2d4a('0x7')](),controller[_0x2d4a('0x1b')]);router[_0x2d4a('0x1c')]('/:id',auth['isAuthenticated'](),controller[_0x2d4a('0x1d')]);router[_0x2d4a('0x1e')](_0x2d4a('0xb'),auth[_0x2d4a('0x7')](),controller[_0x2d4a('0x1f')]);router[_0x2d4a('0x1e')](_0x2d4a('0xd'),auth[_0x2d4a('0x7')](),controller['removeDispositions']);router[_0x2d4a('0x1e')](_0x2d4a('0x16'),auth[_0x2d4a('0x7')](),controller[_0x2d4a('0x20')]);router[_0x2d4a('0x1e')](_0x2d4a('0x10'),auth[_0x2d4a('0x7')](),controller[_0x2d4a('0x21')]);module['exports']=router;
\ No newline at end of file
+var _0xdb28=['removeDispositions','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/users','getAgents','getApplications','post','create','addDisposition','addAnswer','addAgents','/:id/applications','addApplications','notify','/:id/send','put','update','delete','destroy'];(function(_0x6ce72b,_0xb24cb2){var _0xf54833=function(_0x432487){while(--_0x432487){_0x6ce72b['push'](_0x6ce72b['shift']());}};_0xf54833(++_0xb24cb2);}(_0xdb28,0x106));var _0x8db2=function(_0x3f6f0e,_0x103f6c){_0x3f6f0e=_0x3f6f0e-0x0;var _0x583cb1=_0xdb28[_0x3f6f0e];return _0x583cb1;};'use strict';var multer=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var path=require(_0x8db2('0x2'));var timeout=require(_0x8db2('0x3'));var express=require('express');var router=express[_0x8db2('0x4')]();var fs_extra=require(_0x8db2('0x5'));var auth=require(_0x8db2('0x6'));var interaction=require(_0x8db2('0x7'));var config=require(_0x8db2('0x8'));var controller=require('./whatsappAccount.controller');router[_0x8db2('0x9')]('/',auth[_0x8db2('0xa')](),controller['index']);router['get'](_0x8db2('0xb'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xc')]);router[_0x8db2('0x9')](_0x8db2('0xd'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xe')]);router['get'](_0x8db2('0xf'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x10')]);router['get'](_0x8db2('0x11'),auth[_0x8db2('0xa')](),controller['getAnswers']);router[_0x8db2('0x9')](_0x8db2('0x12'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x13')]);router[_0x8db2('0x9')]('/:id/applications',auth['isAuthenticated'](),controller[_0x8db2('0x14')]);router[_0x8db2('0x15')]('/',auth[_0x8db2('0xa')](),controller[_0x8db2('0x16')]);router[_0x8db2('0x15')](_0x8db2('0xf'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x17')]);router[_0x8db2('0x15')](_0x8db2('0x11'),auth['isAuthenticated'](),controller[_0x8db2('0x18')]);router[_0x8db2('0x15')]('/:id/users',auth[_0x8db2('0xa')](),controller[_0x8db2('0x19')]);router[_0x8db2('0x15')](_0x8db2('0x1a'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x1b')]);router['post']('/:id/notify',controller[_0x8db2('0x1c')]);router[_0x8db2('0x15')](_0x8db2('0x1d'),auth[_0x8db2('0xa')](),controller['send']);router[_0x8db2('0x1e')](_0x8db2('0xd'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x1f')]);router[_0x8db2('0x20')]('/:id',auth[_0x8db2('0xa')](),controller[_0x8db2('0x21')]);router[_0x8db2('0x20')](_0x8db2('0xf'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x22')]);router[_0x8db2('0x20')]('/:id/canned_answers',auth[_0x8db2('0xa')](),controller['removeAnswers']);router['delete']('/:id/users',auth['isAuthenticated'](),controller[_0x8db2('0x23')]);module[_0x8db2('0x24')]=router;
\ No newline at end of file
index 3ac2f7e..a285924 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2529=['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','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','randomstring','exports','STRING','name','generate','ENUM','twilio','TEXT'];(function(_0x4154a6,_0x2c0b8e){var _0x3b2786=function(_0x2f5936){while(--_0x2f5936){_0x4154a6['push'](_0x4154a6['shift']());}};_0x3b2786(++_0x2c0b8e);}(_0x2529,0x16f));var _0x9252=function(_0x240e2b,_0x1d9ac0){_0x240e2b=_0x240e2b-0x0;var _0x4656ca=_0x2529[_0x240e2b];return _0x4656ca;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x9252('0x0'));module[_0x9252('0x1')]={'name':{'type':Sequelize[_0x9252('0x2')],'unique':_0x9252('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x9252('0x2')],'allowNull':![]},'remote':{'type':Sequelize[_0x9252('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0x9252('0x2')],'defaultValue':function(){return rs[_0x9252('0x4')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x9252('0x5')](_0x9252('0x6'))},'accountSid':{'type':Sequelize[_0x9252('0x2')]},'authToken':{'type':Sequelize[_0x9252('0x2')]},'notificationTemplate':{'type':Sequelize[_0x9252('0x7')],'defaultValue':function(){return _0x9252('0x8');}},'notificationSound':{'type':Sequelize[_0x9252('0x9')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x9252('0x9')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x9252('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x9252('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x9252('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x9252('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0x9252('0xb')},'mandatoryDisposition':{'type':Sequelize[_0x9252('0x9')],'defaultValue':![],'comment':_0x9252('0xc'),'set':function(_0x13eafc){if(!_0x13eafc){this[_0x9252('0xd')]('mandatoryDispositionPauseId',null);}this[_0x9252('0xd')](_0x9252('0xe'),_0x13eafc);}},'description':{'type':Sequelize[_0x9252('0x2')]}};
\ No newline at end of file
+var _0x36d3=['sequelize','exports','name','STRING','ENUM','twilio','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition'];(function(_0x4e6fb2,_0x3cf23e){var _0x2f1636=function(_0x53c7eb){while(--_0x53c7eb){_0x4e6fb2['push'](_0x4e6fb2['shift']());}};_0x2f1636(++_0x3cf23e);}(_0x36d3,0x6c));var _0x336d=function(_0x3f8e54,_0x3267f0){_0x3f8e54=_0x3f8e54-0x0;var _0x4fbcbf=_0x36d3[_0x3f8e54];return _0x4fbcbf;};'use strict';var Sequelize=require(_0x336d('0x0'));var rs=require('randomstring');module[_0x336d('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x336d('0x2'),'allowNull':![]},'key':{'type':Sequelize[_0x336d('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x336d('0x3')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0x336d('0x3')]},'type':{'type':Sequelize[_0x336d('0x4')](_0x336d('0x5'))},'accountSid':{'type':Sequelize[_0x336d('0x3')]},'authToken':{'type':Sequelize['STRING']},'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[_0x336d('0x6')],'defaultValue':![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x336d('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x336d('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x336d('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x336d('0x7')],'comment':_0x336d('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x336d('0x6')],'defaultValue':![],'comment':_0x336d('0x9'),'set':function(_0x17c859){if(!_0x17c859){this[_0x336d('0xa')]('mandatoryDispositionPauseId',null);}this[_0x336d('0xa')](_0x336d('0xb'),_0x17c859);}},'description':{'type':Sequelize[_0x336d('0x3')]}};
\ No newline at end of file
index 89cae33..fda1923 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2544=['jayson/promise','client','http','request','then','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','error','code','WhatsappAccount,\x20%s,\x20%s','message','info','result','catch','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','destroy','get','WhatsappAccounts','UserProfileResource','stack','name','send','index','Pause','map','WhatsappAccount','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','include','show','params','mandatoryDispositionPause','rawAttributes','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','userProfileId','autoAssociation','update','describe','addDisposition','WhatsappAccountId','Disposition','findOne','includeAll','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','findAll','rows','removeAnswers','addAgents','emit','removeAgents','isArray','userWhatsappAccount:remove','getAgents','User','addApplications','transaction','WhatsappApplication','bulkCreate','findAndCountAll','priority','getApplications','notify','account','Applications','CmContact','ValidationError','no\x20available\x20attributes','createdAt','updatedAt','difference','CompanyId','ListId','mobile','from','From','replace','whatsapp:','messageId','MessageSid','from\x20is\x20mandatory','Sequelize','body\x20is\x20mandatory\x20and\x20not\x20empty','isNil','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','Contacts','DESC','list','omit','contact','WhatsappInteraction','spread','interaction','created','push','applications','*,*,*,*','WhatsappMessage','ContactId','AttachmentId','UserId','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','stringify','Content-Type','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','to\x20is\x20mandatory','List','Messages','dataValues','eml-format','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','defaults','localhost','./whatsappAccount.socket','register'];(function(_0x51b40b,_0x500335){var _0xc62221=function(_0x1681f4){while(--_0x1681f4){_0x51b40b['push'](_0x51b40b['shift']());}};_0xc62221(++_0x500335);}(_0x2544,0x14d));var _0x4254=function(_0x2a2d04,_0x2a9d65){_0x2a2d04=_0x2a2d04-0x0;var _0x2f493e=_0x2544[_0x2a2d04];return _0x2f493e;};'use strict';var emlformat=require(_0x4254('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x4254('0x1'));var rp=require(_0x4254('0x2'));var moment=require(_0x4254('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x4254('0x4'));var util=require(_0x4254('0x5'));var path=require(_0x4254('0x6'));var sox=require(_0x4254('0x7'));var csv=require(_0x4254('0x8'));var ejs=require(_0x4254('0x9'));var fs=require('fs');var fs_extra=require(_0x4254('0xa'));var _=require(_0x4254('0xb'));var squel=require('squel');var crypto=require(_0x4254('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4254('0x8'));var querystring=require('querystring');var Papa=require(_0x4254('0xd'));var Redis=require('ioredis');var authService=require(_0x4254('0xe'));var qs=require(_0x4254('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4254('0x10'));var logger=require('../../config/logger')(_0x4254('0x11'));var utils=require(_0x4254('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x4254('0x13'));var db=require(_0x4254('0x14'))['db'];config['redis']=_[_0x4254('0x15')](config['redis'],{'host':_0x4254('0x16'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x4254('0x17'))[_0x4254('0x18')](socket);var jayson=require(_0x4254('0x19'));var client=jayson[_0x4254('0x1a')][_0x4254('0x1b')]({'port':0x232c});function respondWithRpcPromise(_0x21518d,_0x4d605f,_0x2712f2,_0x3fee6e){return new BPromise(function(_0x20030f,_0x2456f5){var _0x57d1c5=_0x3fee6e||client;return _0x57d1c5[_0x4254('0x1c')](_0x21518d,_0x2712f2)[_0x4254('0x1d')](function(_0x49a0a2){logger['info']('WhatsappAccount,\x20%s,\x20%s',_0x4d605f,_0x4254('0x1e'));logger[_0x4254('0x1f')](_0x4254('0x20'),_0x4d605f,_0x4254('0x1e'),JSON['stringify'](_0x49a0a2));if(_0x49a0a2['error']){if(_0x49a0a2[_0x4254('0x21')][_0x4254('0x22')]===0x1f4){logger[_0x4254('0x21')](_0x4254('0x23'),_0x4d605f,_0x49a0a2['error']['message']);return _0x2456f5(_0x49a0a2['error']['message']);}logger[_0x4254('0x21')](_0x4254('0x23'),_0x4d605f,_0x49a0a2[_0x4254('0x21')][_0x4254('0x24')]);return _0x20030f(_0x49a0a2[_0x4254('0x21')][_0x4254('0x24')]);}else{logger[_0x4254('0x25')](_0x4254('0x23'),_0x4d605f,_0x4254('0x1e'));_0x20030f(_0x49a0a2[_0x4254('0x26')][_0x4254('0x24')]);}})[_0x4254('0x27')](function(_0x54bd7d){logger[_0x4254('0x21')](_0x4254('0x23'),_0x4d605f,_0x54bd7d);_0x2456f5(_0x54bd7d);});});}function respondWithStatusCode(_0x5d2bc9,_0x51f08d){_0x51f08d=_0x51f08d||0xcc;return function(_0x446bb1){if(_0x446bb1){return _0x5d2bc9[_0x4254('0x28')](_0x51f08d);}return _0x5d2bc9[_0x4254('0x29')](_0x51f08d)[_0x4254('0x2a')]();};}function respondWithResult(_0x18ce72,_0x4adbec){_0x4adbec=_0x4adbec||0xc8;return function(_0x119bdd){if(_0x119bdd){return _0x18ce72[_0x4254('0x29')](_0x4adbec)['json'](_0x119bdd);}};}function respondWithFilteredResult(_0x18e482,_0x1e0ff8){return function(_0x2fc34b){if(_0x2fc34b){var _0x23ab0d=typeof _0x1e0ff8['offset']===_0x4254('0x2b')&&typeof _0x1e0ff8[_0x4254('0x2c')]===_0x4254('0x2b');var _0x5a8e73=_0x2fc34b[_0x4254('0x2d')];var _0x22eef8=_0x23ab0d?0x0:_0x1e0ff8[_0x4254('0x2e')];var _0x169e28=_0x23ab0d?_0x2fc34b['count']:_0x1e0ff8['offset']+_0x1e0ff8['limit'];var _0x569605;if(_0x169e28>=_0x5a8e73){_0x169e28=_0x5a8e73;_0x569605=0xc8;}else{_0x569605=0xce;}_0x18e482[_0x4254('0x29')](_0x569605);return _0x18e482[_0x4254('0x2f')](_0x4254('0x30'),_0x22eef8+'-'+_0x169e28+'/'+_0x5a8e73)[_0x4254('0x31')](_0x2fc34b);}return null;};}function patchUpdates(_0x120463){return function(_0x105cfb){try{jsonpatch[_0x4254('0x32')](_0x105cfb,_0x120463,!![]);}catch(_0x457b9e){return BPromise[_0x4254('0x33')](_0x457b9e);}return _0x105cfb['save']();};}function saveUpdates(_0x272527,_0x262876){return function(_0x341f39){if(_0x341f39){return _0x341f39['update'](_0x272527)[_0x4254('0x1d')](function(_0x4f0135){return _0x4f0135;});}return null;};}function removeEntity(_0x2678e8,_0x538c7d){return function(_0x1ae8c9){if(_0x1ae8c9){return _0x1ae8c9[_0x4254('0x34')]()[_0x4254('0x1d')](function(){var _0x512f21=_0x1ae8c9[_0x4254('0x35')]({'plain':!![]});var _0x1f54d4=_0x4254('0x36');return db[_0x4254('0x37')]['destroy']({'where':{'type':_0x1f54d4,'resourceId':_0x512f21['id']}})[_0x4254('0x1d')](function(){return _0x1ae8c9;});})[_0x4254('0x1d')](function(){_0x2678e8[_0x4254('0x29')](0xcc)[_0x4254('0x2a')]();});}};}function handleEntityNotFound(_0x21d0cc,_0x573d09){return function(_0x56ac64){if(!_0x56ac64){_0x21d0cc['sendStatus'](0x194);}return _0x56ac64;};}function handleError(_0x4c06d,_0x44e65e){_0x44e65e=_0x44e65e||0x1f4;return function(_0xd6e864){logger[_0x4254('0x21')](_0xd6e864[_0x4254('0x38')]);if(_0xd6e864['name']){delete _0xd6e864[_0x4254('0x39')];}_0x4c06d[_0x4254('0x29')](_0x44e65e)[_0x4254('0x3a')](_0xd6e864);};}exports[_0x4254('0x3b')]=function(_0x5069c1,_0xa0418){var _0x35f1b6={'include':[{'model':db[_0x4254('0x3c')],'as':'mandatoryDispositionPause'}]},_0x520d2f={},_0x3de483={'count':0x0,'rows':[]};var _0x447424=_[_0x4254('0x3d')](db[_0x4254('0x3e')]['rawAttributes'],function(_0x129f9c){return{'name':_0x129f9c[_0x4254('0x3f')],'type':_0x129f9c[_0x4254('0x40')][_0x4254('0x41')]};});_0x520d2f['model']=_[_0x4254('0x3d')](_0x447424,'name');_0x520d2f[_0x4254('0x42')]=_[_0x4254('0x43')](_0x5069c1['query']);_0x520d2f[_0x4254('0x44')]=_[_0x4254('0x45')](_0x520d2f[_0x4254('0x46')],_0x520d2f[_0x4254('0x42')]);_0x35f1b6[_0x4254('0x47')]=_[_0x4254('0x45')](_0x520d2f[_0x4254('0x46')],qs[_0x4254('0x48')](_0x5069c1['query']['fields']));_0x35f1b6[_0x4254('0x47')]=_0x35f1b6[_0x4254('0x47')][_0x4254('0x49')]?_0x35f1b6[_0x4254('0x47')]:_0x520d2f[_0x4254('0x46')];if(!_0x5069c1[_0x4254('0x42')][_0x4254('0x4a')](_0x4254('0x4b'))){_0x35f1b6[_0x4254('0x2c')]=qs[_0x4254('0x2c')](_0x5069c1['query'][_0x4254('0x2c')]);_0x35f1b6[_0x4254('0x2e')]=qs['offset'](_0x5069c1['query'][_0x4254('0x2e')]);}_0x35f1b6[_0x4254('0x4c')]=qs['sort'](_0x5069c1[_0x4254('0x42')][_0x4254('0x4d')]);_0x35f1b6[_0x4254('0x4e')]=qs[_0x4254('0x44')](_[_0x4254('0x4f')](_0x5069c1['query'],_0x520d2f[_0x4254('0x44')]),_0x447424);if(_0x5069c1['query'][_0x4254('0x50')]){_0x35f1b6['where']=_[_0x4254('0x51')](_0x35f1b6[_0x4254('0x4e')],{'$or':_[_0x4254('0x3d')](_0x447424,function(_0x28743c){if(_0x28743c[_0x4254('0x40')]!=='VIRTUAL'){var _0x3fcb2c={};_0x3fcb2c[_0x28743c['name']]={'$like':'%'+_0x5069c1[_0x4254('0x42')][_0x4254('0x50')]+'%'};return _0x3fcb2c;}})});}_0x35f1b6=_[_0x4254('0x51')]({},_0x35f1b6,_0x5069c1[_0x4254('0x52')]);var _0x2f63a8={'where':_0x35f1b6[_0x4254('0x4e')]};return db[_0x4254('0x3e')][_0x4254('0x2d')](_0x2f63a8)[_0x4254('0x1d')](function(_0xc3afd8){_0x3de483[_0x4254('0x2d')]=_0xc3afd8;if(_0x5069c1['query']['includeAll']){_0x35f1b6[_0x4254('0x53')]=[{'all':!![]}];}return db[_0x4254('0x3e')]['findAll'](_0x35f1b6);})['then'](function(_0x26f7ea){_0x3de483['rows']=_0x26f7ea;return _0x3de483;})[_0x4254('0x1d')](respondWithFilteredResult(_0xa0418,_0x35f1b6))[_0x4254('0x27')](handleError(_0xa0418,null));};exports[_0x4254('0x54')]=function(_0x372600,_0x28d26e){var _0x51c8cd={'raw':![],'where':{'id':_0x372600[_0x4254('0x55')]['id']},'include':[{'model':db[_0x4254('0x3c')],'as':_0x4254('0x56')}]},_0x5d41ca={};_0x5d41ca[_0x4254('0x46')]=_[_0x4254('0x43')](db['WhatsappAccount'][_0x4254('0x57')]);_0x5d41ca[_0x4254('0x42')]=_['keys'](_0x372600[_0x4254('0x42')]);_0x5d41ca['filters']=_['intersection'](_0x5d41ca[_0x4254('0x46')],_0x5d41ca[_0x4254('0x42')]);_0x51c8cd['attributes']=_['intersection'](_0x5d41ca['model'],qs[_0x4254('0x48')](_0x372600['query'][_0x4254('0x48')]));_0x51c8cd['attributes']=_0x51c8cd[_0x4254('0x47')][_0x4254('0x49')]?_0x51c8cd[_0x4254('0x47')]:_0x5d41ca[_0x4254('0x46')];if(_0x372600['query']['includeAll']){_0x51c8cd['include']=[{'all':!![]}];}_0x51c8cd=_[_0x4254('0x51')]({},_0x51c8cd,_0x372600[_0x4254('0x52')]);return db[_0x4254('0x3e')][_0x4254('0x58')](_0x51c8cd)['then'](handleEntityNotFound(_0x28d26e,null))[_0x4254('0x1d')](respondWithResult(_0x28d26e,null))[_0x4254('0x27')](handleError(_0x28d26e,null));};exports[_0x4254('0x59')]=function(_0xe53fbe,_0x2534b9){return db[_0x4254('0x3e')]['create'](_0xe53fbe[_0x4254('0x5a')],{})['then'](function(_0x4e1c43){var _0x25875c=_0xe53fbe['user'][_0x4254('0x35')]({'plain':!![]});if(!_0x25875c)throw new Error(_0x4254('0x5b'));if(_0x25875c['role']===_0x4254('0x5c')){var _0x78d3b8=_0x4e1c43[_0x4254('0x35')]({'plain':!![]});var _0x45ac8c='WhatsappAccounts';return db['UserProfileSection'][_0x4254('0x58')]({'where':{'name':_0x45ac8c,'userProfileId':_0x25875c[_0x4254('0x5d')]},'raw':!![]})[_0x4254('0x1d')](function(_0x569fb8){if(_0x569fb8&&_0x569fb8[_0x4254('0x5e')]===0x0){return db['UserProfileResource'][_0x4254('0x59')]({'name':_0x78d3b8[_0x4254('0x39')],'resourceId':_0x78d3b8['id'],'type':_0x569fb8[_0x4254('0x39')],'sectionId':_0x569fb8['id']},{})[_0x4254('0x1d')](function(){return _0x4e1c43;});}else{return _0x4e1c43;}})['catch'](function(_0x1c3163){logger[_0x4254('0x21')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1c3163);throw _0x1c3163;});}return _0x4e1c43;})['then'](respondWithResult(_0x2534b9,0xc9))[_0x4254('0x27')](handleError(_0x2534b9,null));};exports[_0x4254('0x5f')]=function(_0x2fefe1,_0x14becb){if(_0x2fefe1[_0x4254('0x5a')]['id']){delete _0x2fefe1[_0x4254('0x5a')]['id'];}return db[_0x4254('0x3e')]['find']({'where':{'id':_0x2fefe1[_0x4254('0x55')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0x4254('0x1d')](handleEntityNotFound(_0x14becb,null))[_0x4254('0x1d')](saveUpdates(_0x2fefe1[_0x4254('0x5a')],null))['then'](respondWithResult(_0x14becb,null))['catch'](handleError(_0x14becb,null));};exports[_0x4254('0x34')]=function(_0x3f17b2,_0x9c8581){return db[_0x4254('0x3e')][_0x4254('0x58')]({'where':{'id':_0x3f17b2[_0x4254('0x55')]['id']}})[_0x4254('0x1d')](handleEntityNotFound(_0x9c8581,null))[_0x4254('0x1d')](removeEntity(_0x9c8581,null))['catch'](handleError(_0x9c8581,null));};exports[_0x4254('0x60')]=function(_0x427d9d,_0x28b2aa){return db[_0x4254('0x3e')][_0x4254('0x60')]()[_0x4254('0x1d')](respondWithResult(_0x28b2aa,null))[_0x4254('0x27')](handleError(_0x28b2aa,null));};exports[_0x4254('0x61')]=function(_0x4a1e4e,_0x44d5ed,_0x3bc208){if(_0x4a1e4e[_0x4254('0x5a')]['id']){delete _0x4a1e4e['body']['id'];}return db[_0x4254('0x3e')][_0x4254('0x58')]({'where':{'id':_0x4a1e4e[_0x4254('0x55')]['id']}})['then'](handleEntityNotFound(_0x44d5ed,null))[_0x4254('0x1d')](function(_0xea2142){if(_0xea2142){_0x4a1e4e[_0x4254('0x5a')][_0x4254('0x62')]=_0xea2142['id'];return db[_0x4254('0x63')]['create'](_0x4a1e4e['body']);}})[_0x4254('0x1d')](respondWithResult(_0x44d5ed,null))[_0x4254('0x27')](handleError(_0x44d5ed,null));};exports['getDispositions']=function(_0x347198,_0x643d83,_0x42b17c){var _0x1b266c={'raw':![],'where':{}};var _0x8e4aae={};var _0x27b9c8={'count':0x0,'rows':[]};return db[_0x4254('0x3e')][_0x4254('0x64')]({'where':{'id':_0x347198[_0x4254('0x55')]['id']}})[_0x4254('0x1d')](handleEntityNotFound(_0x643d83,null))[_0x4254('0x1d')](function(_0x31ccb8){if(_0x31ccb8){_0x8e4aae[_0x4254('0x46')]=_[_0x4254('0x43')](db[_0x4254('0x63')][_0x4254('0x57')]);_0x8e4aae[_0x4254('0x42')]=_[_0x4254('0x43')](_0x347198[_0x4254('0x42')]);_0x8e4aae[_0x4254('0x44')]=_['intersection'](_0x8e4aae[_0x4254('0x46')],_0x8e4aae[_0x4254('0x42')]);_0x1b266c[_0x4254('0x47')]=_[_0x4254('0x45')](_0x8e4aae[_0x4254('0x46')],qs[_0x4254('0x48')](_0x347198[_0x4254('0x42')][_0x4254('0x48')]));_0x1b266c['attributes']=_0x1b266c[_0x4254('0x47')]['length']?_0x1b266c['attributes']:_0x8e4aae[_0x4254('0x46')];if(!_0x347198[_0x4254('0x42')][_0x4254('0x4a')](_0x4254('0x4b'))){_0x1b266c[_0x4254('0x2c')]=qs['limit'](_0x347198[_0x4254('0x42')]['limit']);_0x1b266c[_0x4254('0x2e')]=qs[_0x4254('0x2e')](_0x347198[_0x4254('0x42')]['offset']);}_0x1b266c['order']=qs['sort'](_0x347198[_0x4254('0x42')][_0x4254('0x4d')]);_0x1b266c['where']=qs['filters'](_['pick'](_0x347198[_0x4254('0x42')],_0x8e4aae[_0x4254('0x44')]));_0x1b266c['where'][_0x4254('0x62')]=_0x31ccb8['id'];if(_0x347198[_0x4254('0x42')][_0x4254('0x50')]){_0x1b266c['where']=_[_0x4254('0x51')](_0x1b266c[_0x4254('0x4e')],{'$or':_[_0x4254('0x3d')](_0x1b266c['attributes'],function(_0x3f1eaf){var _0x11371d={};_0x11371d[_0x3f1eaf]={'$like':'%'+_0x347198[_0x4254('0x42')][_0x4254('0x50')]+'%'};return _0x11371d;})});}_0x1b266c=_[_0x4254('0x51')]({},_0x1b266c,_0x347198[_0x4254('0x52')]);return db['Disposition'][_0x4254('0x2d')]({'where':_0x1b266c[_0x4254('0x4e')]})['then'](function(_0x1da05){_0x27b9c8[_0x4254('0x2d')]=_0x1da05;if(_0x347198[_0x4254('0x42')][_0x4254('0x65')]){_0x1b266c['include']=[{'all':!![]}];}return db[_0x4254('0x63')]['findAll'](_0x1b266c);})['then'](function(_0x3face5){_0x27b9c8['rows']=_0x3face5;return _0x27b9c8;});}})[_0x4254('0x1d')](respondWithFilteredResult(_0x643d83,_0x1b266c))[_0x4254('0x27')](handleError(_0x643d83,null));};exports['removeDispositions']=function(_0x3db3fa,_0x3c494d,_0x55c68a){return db[_0x4254('0x3e')][_0x4254('0x58')]({'where':{'id':_0x3db3fa[_0x4254('0x55')]['id']}})[_0x4254('0x1d')](handleEntityNotFound(_0x3c494d,null))[_0x4254('0x1d')](function(_0x5e17f4){if(_0x5e17f4){return _0x5e17f4[_0x4254('0x66')](_0x3db3fa[_0x4254('0x42')][_0x4254('0x67')]);}})[_0x4254('0x1d')](respondWithStatusCode(_0x3c494d,null))[_0x4254('0x27')](handleError(_0x3c494d,null));};exports[_0x4254('0x68')]=function(_0x55fcf9,_0x17720a,_0x34db05){if(_0x55fcf9['body']['id']){delete _0x55fcf9['body']['id'];}return db[_0x4254('0x3e')][_0x4254('0x58')]({'where':{'id':_0x55fcf9['params']['id']}})['then'](handleEntityNotFound(_0x17720a,null))[_0x4254('0x1d')](function(_0x4daeb7){if(_0x4daeb7){_0x55fcf9[_0x4254('0x5a')][_0x4254('0x62')]=_0x4daeb7['id'];return db['CannedAnswer']['create'](_0x55fcf9[_0x4254('0x5a')]);}})['then'](respondWithResult(_0x17720a,null))[_0x4254('0x27')](handleError(_0x17720a,null));};exports[_0x4254('0x69')]=function(_0x20668d,_0x228d19,_0x25ed37){var _0x2441f3={'raw':![],'where':{}};var _0x1d1f32={};var _0x47834c={'count':0x0,'rows':[]};return db[_0x4254('0x3e')][_0x4254('0x64')]({'where':{'id':_0x20668d[_0x4254('0x55')]['id']}})['then'](handleEntityNotFound(_0x228d19,null))[_0x4254('0x1d')](function(_0xb3993f){if(_0xb3993f){_0x1d1f32[_0x4254('0x46')]=_[_0x4254('0x43')](db[_0x4254('0x6a')]['rawAttributes']);_0x1d1f32[_0x4254('0x42')]=_['keys'](_0x20668d[_0x4254('0x42')]);_0x1d1f32[_0x4254('0x44')]=_[_0x4254('0x45')](_0x1d1f32[_0x4254('0x46')],_0x1d1f32['query']);_0x2441f3[_0x4254('0x47')]=_[_0x4254('0x45')](_0x1d1f32[_0x4254('0x46')],qs['fields'](_0x20668d[_0x4254('0x42')][_0x4254('0x48')]));_0x2441f3['attributes']=_0x2441f3[_0x4254('0x47')][_0x4254('0x49')]?_0x2441f3[_0x4254('0x47')]:_0x1d1f32[_0x4254('0x46')];if(!_0x20668d['query'][_0x4254('0x4a')]('nolimit')){_0x2441f3[_0x4254('0x2c')]=qs[_0x4254('0x2c')](_0x20668d[_0x4254('0x42')]['limit']);_0x2441f3[_0x4254('0x2e')]=qs[_0x4254('0x2e')](_0x20668d[_0x4254('0x42')]['offset']);}_0x2441f3[_0x4254('0x4c')]=qs[_0x4254('0x4d')](_0x20668d[_0x4254('0x42')][_0x4254('0x4d')]);_0x2441f3[_0x4254('0x4e')]=qs[_0x4254('0x44')](_[_0x4254('0x4f')](_0x20668d[_0x4254('0x42')],_0x1d1f32[_0x4254('0x44')]));_0x2441f3[_0x4254('0x4e')][_0x4254('0x62')]=_0xb3993f['id'];if(_0x20668d[_0x4254('0x42')]['filter']){_0x2441f3[_0x4254('0x4e')]=_[_0x4254('0x51')](_0x2441f3['where'],{'$or':_[_0x4254('0x3d')](_0x2441f3['attributes'],function(_0x177450){var _0x1cfaba={};_0x1cfaba[_0x177450]={'$like':'%'+_0x20668d[_0x4254('0x42')][_0x4254('0x50')]+'%'};return _0x1cfaba;})});}_0x2441f3=_[_0x4254('0x51')]({},_0x2441f3,_0x20668d[_0x4254('0x52')]);return db[_0x4254('0x6a')][_0x4254('0x2d')]({'where':_0x2441f3[_0x4254('0x4e')]})[_0x4254('0x1d')](function(_0x13abef){_0x47834c['count']=_0x13abef;if(_0x20668d[_0x4254('0x42')]['includeAll']){_0x2441f3[_0x4254('0x53')]=[{'all':!![]}];}return db[_0x4254('0x6a')][_0x4254('0x6b')](_0x2441f3);})[_0x4254('0x1d')](function(_0x3a5035){_0x47834c[_0x4254('0x6c')]=_0x3a5035;return _0x47834c;});}})[_0x4254('0x1d')](respondWithFilteredResult(_0x228d19,_0x2441f3))['catch'](handleError(_0x228d19,null));};exports[_0x4254('0x6d')]=function(_0x458b10,_0x15ccdc,_0x8f94dc){return db[_0x4254('0x3e')][_0x4254('0x58')]({'where':{'id':_0x458b10['params']['id']}})[_0x4254('0x1d')](handleEntityNotFound(_0x15ccdc,null))['then'](function(_0x2366ef){if(_0x2366ef){return _0x2366ef['removeAnswers'](_0x458b10[_0x4254('0x42')][_0x4254('0x67')]);}})[_0x4254('0x1d')](respondWithStatusCode(_0x15ccdc,null))['catch'](handleError(_0x15ccdc,null));};exports[_0x4254('0x6e')]=function(_0x1000e8,_0x252ad0,_0x1fd375){return db[_0x4254('0x3e')][_0x4254('0x58')]({'where':{'id':_0x1000e8[_0x4254('0x55')]['id']}})['then'](handleEntityNotFound(_0x252ad0,null))[_0x4254('0x1d')](function(_0x54276a){if(_0x54276a){return _0x54276a[_0x4254('0x6e')](_0x1000e8[_0x4254('0x5a')][_0x4254('0x67')],_['omit'](_0x1000e8[_0x4254('0x5a')],[_0x4254('0x67'),'id'])||{})['spread'](function(_0x3bb76b){for(var _0x322ff2=0x0;_0x322ff2<_0x1000e8[_0x4254('0x5a')][_0x4254('0x67')][_0x4254('0x49')];_0x322ff2+=0x1){socket[_0x4254('0x6f')]('userWhatsappAccount:save',{'UserId':Number(_0x1000e8[_0x4254('0x5a')][_0x4254('0x67')][_0x322ff2]),'WhatsappAccountId':Number(_0x1000e8[_0x4254('0x55')]['id'])});}return _0x3bb76b;});}})[_0x4254('0x1d')](respondWithResult(_0x252ad0,null))[_0x4254('0x27')](handleError(_0x252ad0,null));};exports[_0x4254('0x70')]=function(_0x1ebee9,_0x1c1f3e,_0xe99cf3){return db[_0x4254('0x3e')][_0x4254('0x58')]({'where':{'id':_0x1ebee9[_0x4254('0x55')]['id']}})[_0x4254('0x1d')](handleEntityNotFound(_0x1c1f3e,null))[_0x4254('0x1d')](function(_0x59f58c){if(_0x59f58c){return _0x59f58c['removeAgents'](_0x1ebee9[_0x4254('0x42')][_0x4254('0x67')])['then'](function(){if(_[_0x4254('0x71')](_0x1ebee9[_0x4254('0x42')][_0x4254('0x67')])){for(var _0x13254b=0x0;_0x13254b<_0x1ebee9[_0x4254('0x42')][_0x4254('0x67')][_0x4254('0x49')];_0x13254b+=0x1){socket[_0x4254('0x6f')]('userWhatsappAccount:remove',{'UserId':Number(_0x1ebee9[_0x4254('0x42')][_0x4254('0x67')][_0x13254b]),'WhatsappAccountId':Number(_0x1ebee9[_0x4254('0x55')]['id'])});}}else{socket['emit'](_0x4254('0x72'),{'UserId':Number(_0x1ebee9[_0x4254('0x42')][_0x4254('0x67')]),'WhatsappAccountId':Number(_0x1ebee9[_0x4254('0x55')]['id'])});}});}})['then'](respondWithStatusCode(_0x1c1f3e,null))[_0x4254('0x27')](handleError(_0x1c1f3e,null));};exports[_0x4254('0x73')]=function(_0xfc234f,_0x50a25e,_0x5c6da2){var _0x4afe85={};var _0x21e1aa={};var _0x47e594;var _0x1844ae;return db['WhatsappAccount']['findOne']({'where':{'id':_0xfc234f[_0x4254('0x55')]['id']}})[_0x4254('0x1d')](handleEntityNotFound(_0x50a25e,null))['then'](function(_0x3b0140){if(_0x3b0140){_0x47e594=_0x3b0140;_0x21e1aa[_0x4254('0x46')]=_[_0x4254('0x43')](db[_0x4254('0x74')]['rawAttributes']);_0x21e1aa['query']=_[_0x4254('0x43')](_0xfc234f[_0x4254('0x42')]);_0x21e1aa['filters']=_[_0x4254('0x45')](_0x21e1aa['model'],_0x21e1aa[_0x4254('0x42')]);_0x4afe85[_0x4254('0x47')]=_[_0x4254('0x45')](_0x21e1aa[_0x4254('0x46')],qs[_0x4254('0x48')](_0xfc234f['query'][_0x4254('0x48')]));_0x4afe85[_0x4254('0x47')]=_0x4afe85['attributes'][_0x4254('0x49')]?_0x4afe85[_0x4254('0x47')]:_0x21e1aa['model'];_0x4afe85[_0x4254('0x4c')]=qs[_0x4254('0x4d')](_0xfc234f[_0x4254('0x42')][_0x4254('0x4d')]);_0x4afe85['where']=qs['filters'](_[_0x4254('0x4f')](_0xfc234f[_0x4254('0x42')],_0x21e1aa[_0x4254('0x44')]));if(_0xfc234f['query']['filter']){_0x4afe85[_0x4254('0x4e')]=_[_0x4254('0x51')](_0x4afe85[_0x4254('0x4e')],{'$or':_[_0x4254('0x3d')](_0x4afe85['attributes'],function(_0x2e2dc7){var _0x53ab35={};_0x53ab35[_0x2e2dc7]={'$like':'%'+_0xfc234f[_0x4254('0x42')][_0x4254('0x50')]+'%'};return _0x53ab35;})});}_0x4afe85=_[_0x4254('0x51')]({},_0x4afe85,_0xfc234f['options']);return _0x47e594[_0x4254('0x73')](_0x4afe85);}})[_0x4254('0x1d')](function(_0x3da6ec){if(_0x3da6ec){_0x1844ae=_0x3da6ec[_0x4254('0x49')];if(!_0xfc234f[_0x4254('0x42')]['hasOwnProperty'](_0x4254('0x4b'))){_0x4afe85['limit']=qs['limit'](_0xfc234f[_0x4254('0x42')]['limit']);_0x4afe85[_0x4254('0x2e')]=qs['offset'](_0xfc234f['query']['offset']);}return _0x47e594[_0x4254('0x73')](_0x4afe85);}})[_0x4254('0x1d')](function(_0x560df5){if(_0x560df5){return _0x560df5?{'count':_0x1844ae,'rows':_0x560df5}:null;}})[_0x4254('0x1d')](respondWithResult(_0x50a25e,null))[_0x4254('0x27')](handleError(_0x50a25e,null));};exports[_0x4254('0x75')]=function(_0x5444a1,_0x5e4f88,_0x31aa06){return db[_0x4254('0x3e')][_0x4254('0x64')]({'where':{'id':_0x5444a1[_0x4254('0x55')]['id']}})[_0x4254('0x1d')](handleEntityNotFound(_0x5e4f88,null))[_0x4254('0x1d')](function(_0x29cb82){if(_0x29cb82){return db['sequelize'][_0x4254('0x76')](function(_0x5495f3){return db['WhatsappApplication'][_0x4254('0x34')]({'where':{'WhatsappAccountId':_0x5444a1['params']['id']},'transaction':_0x5495f3})[_0x4254('0x1d')](function(_0x4ecbe3){var _0x423054=_['map'](_0x5444a1[_0x4254('0x5a')],function(_0x46d4a5){_0x46d4a5[_0x4254('0x62')]=_0x5444a1[_0x4254('0x55')]['id'];return _0x46d4a5;});return db[_0x4254('0x77')][_0x4254('0x78')](_0x423054,{'transaction':_0x5495f3});});})[_0x4254('0x1d')](function(){return db['WhatsappApplication'][_0x4254('0x79')]({'where':{'WhatsappAccountId':_0x5444a1[_0x4254('0x55')]['id']},'order':_0x4254('0x7a')});});}})[_0x4254('0x1d')](respondWithResult(_0x5e4f88,null))[_0x4254('0x27')](handleError(_0x5e4f88,null));};exports['getApplications']=function(_0x28a774,_0x46681e,_0x5a681e){var _0x3d187d={};var _0x4dc605={};var _0x5331c9;var _0x1a64b3;return db[_0x4254('0x3e')][_0x4254('0x64')]({'where':{'id':_0x28a774['params']['id']}})['then'](handleEntityNotFound(_0x46681e,null))[_0x4254('0x1d')](function(_0x1db58c){if(_0x1db58c){_0x5331c9=_0x1db58c;_0x4dc605[_0x4254('0x46')]=_[_0x4254('0x43')](db[_0x4254('0x77')][_0x4254('0x57')]);_0x4dc605[_0x4254('0x42')]=_['keys'](_0x28a774[_0x4254('0x42')]);_0x4dc605[_0x4254('0x44')]=_[_0x4254('0x45')](_0x4dc605[_0x4254('0x46')],_0x4dc605['query']);_0x3d187d[_0x4254('0x47')]=_[_0x4254('0x45')](_0x4dc605['model'],qs['fields'](_0x28a774['query'][_0x4254('0x48')]));_0x3d187d[_0x4254('0x47')]=_0x3d187d[_0x4254('0x47')][_0x4254('0x49')]?_0x3d187d['attributes']:_0x4dc605[_0x4254('0x46')];_0x3d187d[_0x4254('0x4c')]=qs[_0x4254('0x4d')](_0x28a774['query'][_0x4254('0x4d')]);_0x3d187d[_0x4254('0x4e')]=qs[_0x4254('0x44')](_[_0x4254('0x4f')](_0x28a774[_0x4254('0x42')],_0x4dc605['filters']));if(_0x28a774[_0x4254('0x42')][_0x4254('0x50')]){_0x3d187d[_0x4254('0x4e')]=_['merge'](_0x3d187d[_0x4254('0x4e')],{'$or':_['map'](_0x3d187d[_0x4254('0x47')],function(_0x185935){var _0x1246a4={};_0x1246a4[_0x185935]={'$like':'%'+_0x28a774['query'][_0x4254('0x50')]+'%'};return _0x1246a4;})});}_0x3d187d=_[_0x4254('0x51')]({},_0x3d187d,_0x28a774[_0x4254('0x52')]);return _0x5331c9[_0x4254('0x7b')](_0x3d187d);}})[_0x4254('0x1d')](function(_0x6d51fa){if(_0x6d51fa){_0x1a64b3=_0x6d51fa[_0x4254('0x49')];if(!_0x28a774[_0x4254('0x42')][_0x4254('0x4a')](_0x4254('0x4b'))){_0x3d187d[_0x4254('0x2c')]=qs['limit'](_0x28a774['query']['limit']);_0x3d187d['offset']=qs[_0x4254('0x2e')](_0x28a774[_0x4254('0x42')][_0x4254('0x2e')]);}return _0x5331c9['getApplications'](_0x3d187d);}})[_0x4254('0x1d')](function(_0x2a69e4){if(_0x2a69e4){return _0x2a69e4?{'count':_0x1a64b3,'rows':_0x2a69e4}:null;}})[_0x4254('0x1d')](respondWithResult(_0x46681e,null))[_0x4254('0x27')](handleError(_0x46681e,null));};exports[_0x4254('0x7c')]=function(_0x1097d2,_0x262781,_0x55c457){var _0x414dc9={'channel':'whatsapp'};var _0x1a47ae=[];var _0x1abf46=[];var _0x1a77e3={};return db['WhatsappAccount'][_0x4254('0x58')]({'where':{'id':_0x1097d2[_0x4254('0x55')]['id']},'include':[{'model':db[_0x4254('0x77')],'as':'Applications'}]})[_0x4254('0x1d')](handleEntityNotFound(_0x262781,null))[_0x4254('0x1d')](function(_0x413883){_0x414dc9[_0x4254('0x7d')]=_0x413883;_0x414dc9['applications']=_['orderBy'](_0x413883[_0x4254('0x7e')],[_0x4254('0x7a')],['asc']);if(_0x414dc9[_0x4254('0x7d')]['Applications']){delete _0x414dc9[_0x4254('0x7d')][_0x4254('0x7e')];}return db[_0x4254('0x7f')][_0x4254('0x60')]();})[_0x4254('0x1d')](function(_0x5488f7){if(!_0x5488f7){throw new db['Sequelize'][(_0x4254('0x80'))](_0x4254('0x81'));}_0x1a47ae=_['difference'](_[_0x4254('0x43')](_0x5488f7),[_0x4254('0x82'),_0x4254('0x83')]);_0x1abf46=_[_0x4254('0x84')](_[_0x4254('0x43')](_0x5488f7),['createdAt',_0x4254('0x83'),_0x4254('0x85'),_0x4254('0x86')]);_0x414dc9[_0x4254('0x5a')]={'mapKey':_0x4254('0x87')};if(_0x414dc9[_0x4254('0x7d')][_0x4254('0x40')]&&_0x414dc9[_0x4254('0x7d')][_0x4254('0x40')]==='twilio'){_0x414dc9[_0x4254('0x5a')][_0x4254('0x88')]=_0x1097d2[_0x4254('0x5a')][_0x4254('0x89')][_0x4254('0x8a')](_0x4254('0x8b'),'');_0x414dc9[_0x4254('0x5a')][_0x4254('0x5a')]=_0x1097d2[_0x4254('0x5a')]['Body'];_0x414dc9[_0x4254('0x5a')][_0x4254('0x8c')]=_0x1097d2['body'][_0x4254('0x8d')];}if(_0x414dc9['body']['id']){delete _0x414dc9['body']['id'];}if(_['isNil'](_0x414dc9[_0x4254('0x5a')][_0x4254('0x88')])){throw new db['Sequelize']['ValidationError'](_0x4254('0x8e'));}if(_['isNil'](_0x414dc9[_0x4254('0x5a')][_0x4254('0x5a')])||_0x414dc9['body']['body']===''){throw new db[(_0x4254('0x8f'))][(_0x4254('0x80'))](_0x4254('0x90'));}if(_[_0x4254('0x91')](_0x414dc9[_0x4254('0x5a')]['mapKey'])){throw new db[(_0x4254('0x8f'))][(_0x4254('0x80'))](_0x4254('0x92')+_0x1abf46);}if(!_[_0x4254('0x93')](_0x1abf46,_0x414dc9[_0x4254('0x5a')][_0x4254('0x94')])){throw new db[(_0x4254('0x8f'))][(_0x4254('0x80'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x1abf46);}_0x1a77e3[_0x414dc9['body'][_0x4254('0x94')]]=_0x414dc9[_0x4254('0x5a')][_0x4254('0x88')];return db['CmList'][_0x4254('0x58')]({'where':{'id':_0x414dc9[_0x4254('0x7d')]['ListId']},'include':[{'model':db[_0x4254('0x7f')],'as':_0x4254('0x95'),'where':_0x1a77e3,'limit':0x1,'order':[['updatedAt',_0x4254('0x96')]]}]});})[_0x4254('0x1d')](handleEntityNotFound(_0x262781,null))['then'](function(_0xef0848){if(_0xef0848){_0x414dc9[_0x4254('0x97')]=_[_0x4254('0x98')](_0xef0848,[_0x4254('0x95')]);if(_0xef0848[_0x4254('0x95')][_0x4254('0x49')]){return _0xef0848['Contacts'][0x0];}var _0x4db76f=_['defaults'](_0x414dc9['body'],{'firstName':_0x414dc9[_0x4254('0x5a')]['from'],'ListId':_0xef0848['id']});_0x4db76f[_0x414dc9[_0x4254('0x5a')][_0x4254('0x94')]]=_0x414dc9[_0x4254('0x5a')][_0x4254('0x88')];return db[_0x4254('0x7f')][_0x4254('0x59')](_0x4db76f,{'fields':_0x1a47ae,'raw':!![]});}})[_0x4254('0x1d')](handleEntityNotFound(_0x262781,null))['then'](function(_0x2f5eec){if(_0x2f5eec){_0x414dc9[_0x4254('0x99')]=_0x2f5eec;var _0x9efa5d={'ContactId':_0x2f5eec['id'],'phone':_0x414dc9[_0x4254('0x5a')]['from'],'WhatsappAccountId':_0x1097d2[_0x4254('0x55')]['id']};var _0x3bacc3={'ContactId':_0x2f5eec['id'],'WhatsappAccountId':_0x1097d2['params']['id'],'closed':![]};return db[_0x4254('0x9a')][_0x4254('0x58')]({'where':_0x3bacc3})['then'](function(_0x372918){if(_0x372918){return[_0x372918,![]];}return db[_0x4254('0x9a')]['create'](_0x9efa5d)[_0x4254('0x1d')](function(_0x42ea39){return[_0x42ea39,!![]];});});}})[_0x4254('0x9b')](function(_0x57910c,_0x27b91d){_0x414dc9[_0x4254('0x9c')]=_0x57910c['get']({'plain':!![]});_0x414dc9['interaction'][_0x4254('0x9d')]=![];if(_0x27b91d){if(_0x414dc9['account']['autoclose']){_0x414dc9['applications'][_0x4254('0x9e')]({'id':0x0,'priority':_0x414dc9[_0x4254('0x9f')][_0x4254('0x49')]+0x1,'app':'close','appdata':'unmanaged','interval':_0x4254('0xa0')});}_0x414dc9[_0x4254('0x9c')][_0x4254('0x9d')]=!![];}return db[_0x4254('0xa1')][_0x4254('0x59')]({'phone':_0x414dc9[_0x4254('0x5a')][_0x4254('0x88')],'messageId':_0x414dc9['body']['messageId'],'body':_0x414dc9['body'][_0x4254('0x5a')],'WhatsappAccountId':_0x1097d2['params']['id'],'WhatsappInteractionId':_0x57910c['id'],'direction':'in','ContactId':_0x57910c[_0x4254('0xa2')],'AttachmentId':_0x414dc9[_0x4254('0x5a')][_0x4254('0xa3')]});})[_0x4254('0x1d')](function(_0x26b309){_0x414dc9[_0x4254('0x24')]=_0x26b309;if(_0x414dc9[_0x4254('0x9c')][_0x4254('0xa4')]){return db[_0x4254('0x74')][_0x4254('0x58')]({'attributes':['id',_0x4254('0x39')],'where':{'id':_0x414dc9['interaction']['UserId']}})['then'](function(_0x58e135){if(_0x58e135){_0x414dc9[_0x4254('0x9f')]['unshift']({'id':0x0,'priority':0x0,'app':_0x4254('0xa5'),'appdata':_0x58e135[_0x4254('0x39')]+','+(_0x414dc9[_0x4254('0x7d')][_0x4254('0xa6')]||0xa),'interval':_0x4254('0xa0')});}return respondWithRpcPromise(_0x4254('0xa7'),_0x4254('0xa8'),_0x414dc9);});}return respondWithRpcPromise(_0x4254('0xa7'),_0x4254('0xa8'),_0x414dc9);})[_0x4254('0x1d')](function(_0x20c430){if(_0x20c430){var _0x4da505=0xc8;var _0x947896=_0x4254('0xa9');logger[_0x4254('0x25')](_0x4254('0x20'),_0x947896,_0x4da505,_0x4254('0xaa'));logger[_0x4254('0x1f')](_0x4254('0xab'),_0x947896,_0x4da505,'entity\x20found',JSON[_0x4254('0xac')](_0x20c430));if(_0x414dc9[_0x4254('0x7d')][_0x4254('0x40')]==='twilio'){return _0x262781['status'](_0x4da505)['set'](_0x4254('0xad'),'text/xml')[_0x4254('0x3a')](_0x4254('0xae'));}else{return _0x262781[_0x4254('0x29')](_0x4da505)[_0x4254('0x31')](_0x20c430);}}})[_0x4254('0x27')](handleError(_0x262781,null));};exports[_0x4254('0x3a')]=function(_0x5e1cdd,_0x46c0a1,_0x3140a1){var _0x522067,_0x2c9a00,_0x24a5b3;if(_['isNil'](_0x5e1cdd['body'][_0x4254('0x5a')])||_0x5e1cdd[_0x4254('0x5a')][_0x4254('0x5a')]===''){throw new db[(_0x4254('0x8f'))][(_0x4254('0x80'))](_0x4254('0x90'));}if(_[_0x4254('0x91')](_0x5e1cdd[_0x4254('0x5a')]['to'])){throw new db[(_0x4254('0x8f'))][(_0x4254('0x80'))](_0x4254('0xaf'));}_0x522067=_0x5e1cdd[_0x4254('0x5a')]['to'];return db[_0x4254('0x3e')][_0x4254('0x58')]({'where':{'id':_0x5e1cdd[_0x4254('0x55')]['id']},'include':[{'model':db['CmList'],'as':_0x4254('0xb0'),'include':[{'model':db[_0x4254('0x7f')],'as':_0x4254('0x95'),'where':{'mobile':_0x522067},'limit':0x1,'order':[[_0x4254('0x83'),'DESC']]}]}]})[_0x4254('0x1d')](handleEntityNotFound(_0x46c0a1,null))[_0x4254('0x1d')](function(_0x2a8e8b){if(_0x2a8e8b&&_0x2a8e8b['List']){_0x2c9a00=_0x2a8e8b[_0x4254('0x35')]({'plain':!![]});if(_0x2c9a00[_0x4254('0xb0')]&&_0x2c9a00[_0x4254('0xb0')][_0x4254('0x95')][_0x4254('0x49')]){return _0x2c9a00[_0x4254('0xb0')][_0x4254('0x95')][0x0];}return db[_0x4254('0x7f')]['create'](_[_0x4254('0x15')](_0x5e1cdd['body'],{'firstName':_0x522067,'mobile':_0x522067,'phone':_0x522067,'ListId':_0x2c9a00[_0x4254('0x86')]}));}})[_0x4254('0x1d')](handleEntityNotFound(_0x46c0a1,null))[_0x4254('0x1d')](function(_0x27d612){if(_0x27d612){_0x24a5b3=_0x27d612;return db[_0x4254('0x9a')][_0x4254('0x58')]({'where':{'ContactId':_0x24a5b3['id'],'closed':![],'WhatsappAccountId':_0x2c9a00['id']}})['then'](function(_0x467ce1){if(_0x467ce1){return[_0x467ce1,![]];}return db[_0x4254('0x9a')][_0x4254('0x59')]({'UserId':_0x5e1cdd[_0x4254('0x5c')]['id'],'ContactId':_0x24a5b3['id'],'WhatsappAccountId':_0x2c9a00['id'],'phone':_0x522067,'firstMsgDirection':'out','Messages':[_[_0x4254('0x51')](_0x5e1cdd[_0x4254('0x5a')],{'read':![],'body':_0x5e1cdd[_0x4254('0x5a')][_0x4254('0x5a')],'phone':_0x522067,'WhatsappAccountId':_0x2c9a00['id'],'UserId':_0x5e1cdd[_0x4254('0x5c')]['id'],'ContactId':_0x24a5b3['id']})]},{'include':[{'model':db[_0x4254('0xa1')],'as':_0x4254('0xb1')}]})[_0x4254('0x1d')](function(_0x47c831){return[_0x47c831,!![]];});});}})[_0x4254('0x9b')](function(_0x3ec42d,_0x215305){if(_0x215305){return _0x3ec42d;}return db[_0x4254('0xa1')][_0x4254('0x59')](_[_0x4254('0x51')](_0x5e1cdd[_0x4254('0x5a')],{'read':![],'body':_0x5e1cdd[_0x4254('0x5a')][_0x4254('0x5a')],'phone':_0x522067,'WhatsappAccountId':_0x2c9a00['id'],'WhatsappInteractionId':_0x3ec42d['id'],'UserId':_0x5e1cdd['user']['id'],'ContactId':_0x24a5b3['id']}))[_0x4254('0x1d')](function(_0x351b06){_0x3ec42d[_0x4254('0xb2')]['Messages']=[];_0x3ec42d[_0x4254('0xb2')][_0x4254('0xb1')][_0x4254('0x9e')](_0x351b06[_0x4254('0xb2')]);return _0x3ec42d;});})[_0x4254('0x1d')](respondWithResult(_0x46c0a1,null))['catch'](handleError(_0x46c0a1,null));};
\ No newline at end of file
+var _0x177e=['userWhatsappAccount:remove','getAgents','addApplications','sequelize','WhatsappApplication','findAndCountAll','priority','notify','whatsapp','account','applications','orderBy','Applications','asc','CmContact','Sequelize','no\x20available\x20attributes','difference','updatedAt','createdAt','CompanyId','mobile','From','whatsapp:','Body','messageId','MessageSid','isNil','ValidationError','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','CmList','ListId','Contacts','list','contact','WhatsappInteraction','interaction','created','push','unmanaged','*,*,*,*','WhatsappMessage','ContactId','AttachmentId','User','UserId','unshift','agent','waitForTheAssignedAgent','startRouting','Start','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','twilio','Content-Type','text/xml','to\x20is\x20mandatory','List','DESC','user','out','Messages','spread','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','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','redis','defaults','socket.io-emitter','./whatsappAccount.socket','jayson/promise','http','request','WhatsappAccount,\x20%s,\x20%s','request\x20sent','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','update','then','destroy','get','UserProfileResource','end','stack','name','send','index','Pause','mandatoryDispositionPause','map','WhatsappAccount','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','options','include','findAll','rows','show','params','includeAll','merge','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','WhatsappAccountId','Disposition','getDispositions','findOne','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addAgents','omit','emit','userWhatsappAccount:save','removeAgents','isArray'];(function(_0xbb2a49,_0x3df491){var _0x1bc3ee=function(_0x252aa6){while(--_0x252aa6){_0xbb2a49['push'](_0xbb2a49['shift']());}};_0x1bc3ee(++_0x3df491);}(_0x177e,0x1b8));var _0xe177=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x177e[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0xe177('0x0'));var rimraf=require(_0xe177('0x1'));var zipdir=require(_0xe177('0x2'));var jsonpatch=require(_0xe177('0x3'));var rp=require(_0xe177('0x4'));var moment=require(_0xe177('0x5'));var BPromise=require(_0xe177('0x6'));var Mustache=require(_0xe177('0x7'));var util=require('util');var path=require(_0xe177('0x8'));var sox=require(_0xe177('0x9'));var csv=require(_0xe177('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe177('0xb'));var _=require(_0xe177('0xc'));var squel=require('squel');var crypto=require(_0xe177('0xd'));var jsforce=require(_0xe177('0xe'));var deskjs=require(_0xe177('0xf'));var toCsv=require(_0xe177('0xa'));var querystring=require(_0xe177('0x10'));var Papa=require(_0xe177('0x11'));var Redis=require(_0xe177('0x12'));var authService=require(_0xe177('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xe177('0x14'));var hardwareService=require(_0xe177('0x15'));var logger=require('../../config/logger')(_0xe177('0x16'));var utils=require(_0xe177('0x17'));var config=require(_0xe177('0x18'));var licenseUtil=require(_0xe177('0x19'));var db=require(_0xe177('0x1a'))['db'];config[_0xe177('0x1b')]=_[_0xe177('0x1c')](config[_0xe177('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0xe177('0x1d'))(new Redis(config[_0xe177('0x1b')]));require(_0xe177('0x1e'))['register'](socket);var jayson=require(_0xe177('0x1f'));var client=jayson['client'][_0xe177('0x20')]({'port':0x232c});function respondWithRpcPromise(_0x9a53b7,_0x27afaf,_0x396656,_0x10cddf){return new BPromise(function(_0x30e708,_0x79d000){var _0x387783=_0x10cddf||client;return _0x387783[_0xe177('0x21')](_0x9a53b7,_0x396656)['then'](function(_0x4541d9){logger['info'](_0xe177('0x22'),_0x27afaf,_0xe177('0x23'));logger['debug'](_0xe177('0x24'),_0x27afaf,'request\x20sent',JSON[_0xe177('0x25')](_0x4541d9));if(_0x4541d9['error']){if(_0x4541d9[_0xe177('0x26')][_0xe177('0x27')]===0x1f4){logger[_0xe177('0x26')]('WhatsappAccount,\x20%s,\x20%s',_0x27afaf,_0x4541d9['error'][_0xe177('0x28')]);return _0x79d000(_0x4541d9[_0xe177('0x26')][_0xe177('0x28')]);}logger['error'](_0xe177('0x22'),_0x27afaf,_0x4541d9['error'][_0xe177('0x28')]);return _0x30e708(_0x4541d9[_0xe177('0x26')]['message']);}else{logger[_0xe177('0x29')]('WhatsappAccount,\x20%s,\x20%s',_0x27afaf,'request\x20sent');_0x30e708(_0x4541d9[_0xe177('0x2a')]['message']);}})[_0xe177('0x2b')](function(_0x29578b){logger[_0xe177('0x26')]('WhatsappAccount,\x20%s,\x20%s',_0x27afaf,_0x29578b);_0x79d000(_0x29578b);});});}function respondWithStatusCode(_0x53472b,_0x4ddc4d){_0x4ddc4d=_0x4ddc4d||0xcc;return function(_0x5d964e){if(_0x5d964e){return _0x53472b[_0xe177('0x2c')](_0x4ddc4d);}return _0x53472b[_0xe177('0x2d')](_0x4ddc4d)['end']();};}function respondWithResult(_0x566744,_0x19d8ad){_0x19d8ad=_0x19d8ad||0xc8;return function(_0x2e5277){if(_0x2e5277){return _0x566744[_0xe177('0x2d')](_0x19d8ad)[_0xe177('0x2e')](_0x2e5277);}};}function respondWithFilteredResult(_0x150f01,_0xf89df7){return function(_0x3b2796){if(_0x3b2796){var _0x1f661d=typeof _0xf89df7['offset']===_0xe177('0x2f')&&typeof _0xf89df7[_0xe177('0x30')]===_0xe177('0x2f');var _0x49206e=_0x3b2796[_0xe177('0x31')];var _0x52d01f=_0x1f661d?0x0:_0xf89df7['offset'];var _0x51ed9a=_0x1f661d?_0x3b2796[_0xe177('0x31')]:_0xf89df7[_0xe177('0x32')]+_0xf89df7[_0xe177('0x30')];var _0x4e50d5;if(_0x51ed9a>=_0x49206e){_0x51ed9a=_0x49206e;_0x4e50d5=0xc8;}else{_0x4e50d5=0xce;}_0x150f01['status'](_0x4e50d5);return _0x150f01[_0xe177('0x33')](_0xe177('0x34'),_0x52d01f+'-'+_0x51ed9a+'/'+_0x49206e)[_0xe177('0x2e')](_0x3b2796);}return null;};}function patchUpdates(_0x34e2a9){return function(_0x3773f9){try{jsonpatch['apply'](_0x3773f9,_0x34e2a9,!![]);}catch(_0x193d68){return BPromise['reject'](_0x193d68);}return _0x3773f9['save']();};}function saveUpdates(_0x492089,_0x43ce4d){return function(_0x2d3456){if(_0x2d3456){return _0x2d3456[_0xe177('0x35')](_0x492089)[_0xe177('0x36')](function(_0x1c81f4){return _0x1c81f4;});}return null;};}function removeEntity(_0x9ce389,_0x17400e){return function(_0x2dd7e1){if(_0x2dd7e1){return _0x2dd7e1[_0xe177('0x37')]()['then'](function(){var _0x2b8d33=_0x2dd7e1[_0xe177('0x38')]({'plain':!![]});var _0x3f4f53='WhatsappAccounts';return db[_0xe177('0x39')][_0xe177('0x37')]({'where':{'type':_0x3f4f53,'resourceId':_0x2b8d33['id']}})[_0xe177('0x36')](function(){return _0x2dd7e1;});})[_0xe177('0x36')](function(){_0x9ce389[_0xe177('0x2d')](0xcc)[_0xe177('0x3a')]();});}};}function handleEntityNotFound(_0x12d949,_0x40f992){return function(_0x5c3c11){if(!_0x5c3c11){_0x12d949[_0xe177('0x2c')](0x194);}return _0x5c3c11;};}function handleError(_0x35b904,_0x3ca6df){_0x3ca6df=_0x3ca6df||0x1f4;return function(_0x4b7581){logger['error'](_0x4b7581[_0xe177('0x3b')]);if(_0x4b7581['name']){delete _0x4b7581[_0xe177('0x3c')];}_0x35b904['status'](_0x3ca6df)[_0xe177('0x3d')](_0x4b7581);};}exports[_0xe177('0x3e')]=function(_0x29f0fd,_0x513223){var _0x32f420={'include':[{'model':db[_0xe177('0x3f')],'as':_0xe177('0x40')}]},_0x132fee={},_0x3200ea={'count':0x0,'rows':[]};var _0x4ba5cb=_[_0xe177('0x41')](db[_0xe177('0x42')][_0xe177('0x43')],function(_0x1bd9ca){return{'name':_0x1bd9ca[_0xe177('0x44')],'type':_0x1bd9ca[_0xe177('0x45')]['key']};});_0x132fee['model']=_[_0xe177('0x41')](_0x4ba5cb,_0xe177('0x3c'));_0x132fee[_0xe177('0x46')]=_[_0xe177('0x47')](_0x29f0fd[_0xe177('0x46')]);_0x132fee[_0xe177('0x48')]=_[_0xe177('0x49')](_0x132fee[_0xe177('0x4a')],_0x132fee[_0xe177('0x46')]);_0x32f420[_0xe177('0x4b')]=_['intersection'](_0x132fee[_0xe177('0x4a')],qs[_0xe177('0x4c')](_0x29f0fd[_0xe177('0x46')]['fields']));_0x32f420['attributes']=_0x32f420['attributes'][_0xe177('0x4d')]?_0x32f420[_0xe177('0x4b')]:_0x132fee[_0xe177('0x4a')];if(!_0x29f0fd[_0xe177('0x46')][_0xe177('0x4e')](_0xe177('0x4f'))){_0x32f420[_0xe177('0x30')]=qs[_0xe177('0x30')](_0x29f0fd[_0xe177('0x46')]['limit']);_0x32f420[_0xe177('0x32')]=qs[_0xe177('0x32')](_0x29f0fd[_0xe177('0x46')]['offset']);}_0x32f420[_0xe177('0x50')]=qs[_0xe177('0x51')](_0x29f0fd['query'][_0xe177('0x51')]);_0x32f420['where']=qs[_0xe177('0x48')](_[_0xe177('0x52')](_0x29f0fd[_0xe177('0x46')],_0x132fee[_0xe177('0x48')]),_0x4ba5cb);if(_0x29f0fd['query'][_0xe177('0x53')]){_0x32f420['where']=_['merge'](_0x32f420[_0xe177('0x54')],{'$or':_['map'](_0x4ba5cb,function(_0x77abc0){if(_0x77abc0[_0xe177('0x45')]!==_0xe177('0x55')){var _0x527938={};_0x527938[_0x77abc0[_0xe177('0x3c')]]={'$like':'%'+_0x29f0fd['query'][_0xe177('0x53')]+'%'};return _0x527938;}})});}_0x32f420=_['merge']({},_0x32f420,_0x29f0fd[_0xe177('0x56')]);var _0x561bf3={'where':_0x32f420['where']};return db[_0xe177('0x42')][_0xe177('0x31')](_0x561bf3)[_0xe177('0x36')](function(_0x4a4988){_0x3200ea[_0xe177('0x31')]=_0x4a4988;if(_0x29f0fd[_0xe177('0x46')]['includeAll']){_0x32f420[_0xe177('0x57')]=[{'all':!![]}];}return db[_0xe177('0x42')][_0xe177('0x58')](_0x32f420);})[_0xe177('0x36')](function(_0x206497){_0x3200ea[_0xe177('0x59')]=_0x206497;return _0x3200ea;})[_0xe177('0x36')](respondWithFilteredResult(_0x513223,_0x32f420))[_0xe177('0x2b')](handleError(_0x513223,null));};exports[_0xe177('0x5a')]=function(_0x52efc9,_0x71709){var _0x372030={'raw':![],'where':{'id':_0x52efc9[_0xe177('0x5b')]['id']},'include':[{'model':db[_0xe177('0x3f')],'as':_0xe177('0x40')}]},_0x19a675={};_0x19a675['model']=_[_0xe177('0x47')](db['WhatsappAccount'][_0xe177('0x43')]);_0x19a675[_0xe177('0x46')]=_[_0xe177('0x47')](_0x52efc9['query']);_0x19a675[_0xe177('0x48')]=_[_0xe177('0x49')](_0x19a675['model'],_0x19a675[_0xe177('0x46')]);_0x372030[_0xe177('0x4b')]=_['intersection'](_0x19a675[_0xe177('0x4a')],qs[_0xe177('0x4c')](_0x52efc9['query'][_0xe177('0x4c')]));_0x372030[_0xe177('0x4b')]=_0x372030[_0xe177('0x4b')]['length']?_0x372030[_0xe177('0x4b')]:_0x19a675[_0xe177('0x4a')];if(_0x52efc9[_0xe177('0x46')][_0xe177('0x5c')]){_0x372030[_0xe177('0x57')]=[{'all':!![]}];}_0x372030=_[_0xe177('0x5d')]({},_0x372030,_0x52efc9[_0xe177('0x56')]);return db[_0xe177('0x42')][_0xe177('0x5e')](_0x372030)[_0xe177('0x36')](handleEntityNotFound(_0x71709,null))[_0xe177('0x36')](respondWithResult(_0x71709,null))[_0xe177('0x2b')](handleError(_0x71709,null));};exports['create']=function(_0x47db1b,_0x2854b2){return db[_0xe177('0x42')][_0xe177('0x5f')](_0x47db1b[_0xe177('0x60')],{})[_0xe177('0x36')](function(_0x423ddd){var _0x54e646=_0x47db1b['user']['get']({'plain':!![]});if(!_0x54e646)throw new Error(_0xe177('0x61'));if(_0x54e646[_0xe177('0x62')]==='user'){var _0x3333b6=_0x423ddd[_0xe177('0x38')]({'plain':!![]});var _0x3604d4='WhatsappAccounts';return db[_0xe177('0x63')][_0xe177('0x5e')]({'where':{'name':_0x3604d4,'userProfileId':_0x54e646[_0xe177('0x64')]},'raw':!![]})[_0xe177('0x36')](function(_0x6ef1d9){if(_0x6ef1d9&&_0x6ef1d9[_0xe177('0x65')]===0x0){return db[_0xe177('0x39')]['create']({'name':_0x3333b6['name'],'resourceId':_0x3333b6['id'],'type':_0x6ef1d9['name'],'sectionId':_0x6ef1d9['id']},{})[_0xe177('0x36')](function(){return _0x423ddd;});}else{return _0x423ddd;}})['catch'](function(_0x407092){logger[_0xe177('0x26')](_0xe177('0x66'),_0x407092);throw _0x407092;});}return _0x423ddd;})[_0xe177('0x36')](respondWithResult(_0x2854b2,0xc9))[_0xe177('0x2b')](handleError(_0x2854b2,null));};exports[_0xe177('0x35')]=function(_0x2a3b7e,_0x225639){if(_0x2a3b7e[_0xe177('0x60')]['id']){delete _0x2a3b7e[_0xe177('0x60')]['id'];}return db[_0xe177('0x42')]['find']({'where':{'id':_0x2a3b7e[_0xe177('0x5b')]['id']},'include':[{'model':db[_0xe177('0x3f')],'as':_0xe177('0x40')}]})[_0xe177('0x36')](handleEntityNotFound(_0x225639,null))[_0xe177('0x36')](saveUpdates(_0x2a3b7e['body'],null))[_0xe177('0x36')](respondWithResult(_0x225639,null))[_0xe177('0x2b')](handleError(_0x225639,null));};exports[_0xe177('0x37')]=function(_0x3e7ae1,_0x4abecc){return db['WhatsappAccount'][_0xe177('0x5e')]({'where':{'id':_0x3e7ae1[_0xe177('0x5b')]['id']}})['then'](handleEntityNotFound(_0x4abecc,null))[_0xe177('0x36')](removeEntity(_0x4abecc,null))[_0xe177('0x2b')](handleError(_0x4abecc,null));};exports['describe']=function(_0xa608a2,_0x5e6cee){return db[_0xe177('0x42')][_0xe177('0x67')]()[_0xe177('0x36')](respondWithResult(_0x5e6cee,null))[_0xe177('0x2b')](handleError(_0x5e6cee,null));};exports[_0xe177('0x68')]=function(_0x439530,_0x82988,_0x2b597a){if(_0x439530['body']['id']){delete _0x439530[_0xe177('0x60')]['id'];}return db[_0xe177('0x42')][_0xe177('0x5e')]({'where':{'id':_0x439530['params']['id']}})[_0xe177('0x36')](handleEntityNotFound(_0x82988,null))[_0xe177('0x36')](function(_0x256534){if(_0x256534){_0x439530[_0xe177('0x60')][_0xe177('0x69')]=_0x256534['id'];return db[_0xe177('0x6a')][_0xe177('0x5f')](_0x439530[_0xe177('0x60')]);}})[_0xe177('0x36')](respondWithResult(_0x82988,null))[_0xe177('0x2b')](handleError(_0x82988,null));};exports[_0xe177('0x6b')]=function(_0x3daa26,_0x34e243,_0x3bed8d){var _0x43a1f4={'raw':![],'where':{}};var _0xc6d685={};var _0x527f5c={'count':0x0,'rows':[]};return db[_0xe177('0x42')][_0xe177('0x6c')]({'where':{'id':_0x3daa26[_0xe177('0x5b')]['id']}})[_0xe177('0x36')](handleEntityNotFound(_0x34e243,null))[_0xe177('0x36')](function(_0x29332e){if(_0x29332e){_0xc6d685[_0xe177('0x4a')]=_[_0xe177('0x47')](db[_0xe177('0x6a')][_0xe177('0x43')]);_0xc6d685['query']=_[_0xe177('0x47')](_0x3daa26[_0xe177('0x46')]);_0xc6d685[_0xe177('0x48')]=_[_0xe177('0x49')](_0xc6d685['model'],_0xc6d685['query']);_0x43a1f4[_0xe177('0x4b')]=_[_0xe177('0x49')](_0xc6d685[_0xe177('0x4a')],qs['fields'](_0x3daa26['query'][_0xe177('0x4c')]));_0x43a1f4[_0xe177('0x4b')]=_0x43a1f4['attributes'][_0xe177('0x4d')]?_0x43a1f4['attributes']:_0xc6d685[_0xe177('0x4a')];if(!_0x3daa26[_0xe177('0x46')][_0xe177('0x4e')]('nolimit')){_0x43a1f4[_0xe177('0x30')]=qs[_0xe177('0x30')](_0x3daa26[_0xe177('0x46')][_0xe177('0x30')]);_0x43a1f4[_0xe177('0x32')]=qs[_0xe177('0x32')](_0x3daa26[_0xe177('0x46')]['offset']);}_0x43a1f4[_0xe177('0x50')]=qs[_0xe177('0x51')](_0x3daa26[_0xe177('0x46')][_0xe177('0x51')]);_0x43a1f4[_0xe177('0x54')]=qs[_0xe177('0x48')](_[_0xe177('0x52')](_0x3daa26['query'],_0xc6d685['filters']));_0x43a1f4[_0xe177('0x54')][_0xe177('0x69')]=_0x29332e['id'];if(_0x3daa26[_0xe177('0x46')][_0xe177('0x53')]){_0x43a1f4[_0xe177('0x54')]=_[_0xe177('0x5d')](_0x43a1f4[_0xe177('0x54')],{'$or':_['map'](_0x43a1f4[_0xe177('0x4b')],function(_0x30b92c){var _0x44e041={};_0x44e041[_0x30b92c]={'$like':'%'+_0x3daa26[_0xe177('0x46')]['filter']+'%'};return _0x44e041;})});}_0x43a1f4=_[_0xe177('0x5d')]({},_0x43a1f4,_0x3daa26[_0xe177('0x56')]);return db[_0xe177('0x6a')][_0xe177('0x31')]({'where':_0x43a1f4[_0xe177('0x54')]})[_0xe177('0x36')](function(_0x5e2e6b){_0x527f5c[_0xe177('0x31')]=_0x5e2e6b;if(_0x3daa26['query'][_0xe177('0x5c')]){_0x43a1f4[_0xe177('0x57')]=[{'all':!![]}];}return db[_0xe177('0x6a')]['findAll'](_0x43a1f4);})[_0xe177('0x36')](function(_0x19c550){_0x527f5c[_0xe177('0x59')]=_0x19c550;return _0x527f5c;});}})[_0xe177('0x36')](respondWithFilteredResult(_0x34e243,_0x43a1f4))[_0xe177('0x2b')](handleError(_0x34e243,null));};exports[_0xe177('0x6d')]=function(_0x4b3b11,_0x59488c,_0x5a7b3a){return db[_0xe177('0x42')]['find']({'where':{'id':_0x4b3b11[_0xe177('0x5b')]['id']}})[_0xe177('0x36')](handleEntityNotFound(_0x59488c,null))[_0xe177('0x36')](function(_0x4a5a75){if(_0x4a5a75){return _0x4a5a75[_0xe177('0x6d')](_0x4b3b11['query'][_0xe177('0x6e')]);}})['then'](respondWithStatusCode(_0x59488c,null))[_0xe177('0x2b')](handleError(_0x59488c,null));};exports[_0xe177('0x6f')]=function(_0x157933,_0x5a5a41,_0x931f5){if(_0x157933[_0xe177('0x60')]['id']){delete _0x157933[_0xe177('0x60')]['id'];}return db['WhatsappAccount'][_0xe177('0x5e')]({'where':{'id':_0x157933['params']['id']}})[_0xe177('0x36')](handleEntityNotFound(_0x5a5a41,null))[_0xe177('0x36')](function(_0x271e6b){if(_0x271e6b){_0x157933[_0xe177('0x60')][_0xe177('0x69')]=_0x271e6b['id'];return db[_0xe177('0x70')][_0xe177('0x5f')](_0x157933[_0xe177('0x60')]);}})['then'](respondWithResult(_0x5a5a41,null))[_0xe177('0x2b')](handleError(_0x5a5a41,null));};exports[_0xe177('0x71')]=function(_0x293f95,_0x3b6c1d,_0x12b97b){var _0x2393b9={'raw':![],'where':{}};var _0x11c3ac={};var _0x265789={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0xe177('0x6c')]({'where':{'id':_0x293f95[_0xe177('0x5b')]['id']}})['then'](handleEntityNotFound(_0x3b6c1d,null))['then'](function(_0x592c76){if(_0x592c76){_0x11c3ac['model']=_['keys'](db['CannedAnswer'][_0xe177('0x43')]);_0x11c3ac[_0xe177('0x46')]=_[_0xe177('0x47')](_0x293f95[_0xe177('0x46')]);_0x11c3ac[_0xe177('0x48')]=_[_0xe177('0x49')](_0x11c3ac[_0xe177('0x4a')],_0x11c3ac[_0xe177('0x46')]);_0x2393b9[_0xe177('0x4b')]=_[_0xe177('0x49')](_0x11c3ac[_0xe177('0x4a')],qs[_0xe177('0x4c')](_0x293f95[_0xe177('0x46')]['fields']));_0x2393b9[_0xe177('0x4b')]=_0x2393b9[_0xe177('0x4b')][_0xe177('0x4d')]?_0x2393b9[_0xe177('0x4b')]:_0x11c3ac[_0xe177('0x4a')];if(!_0x293f95[_0xe177('0x46')][_0xe177('0x4e')](_0xe177('0x4f'))){_0x2393b9[_0xe177('0x30')]=qs[_0xe177('0x30')](_0x293f95[_0xe177('0x46')][_0xe177('0x30')]);_0x2393b9[_0xe177('0x32')]=qs['offset'](_0x293f95['query']['offset']);}_0x2393b9[_0xe177('0x50')]=qs[_0xe177('0x51')](_0x293f95['query'][_0xe177('0x51')]);_0x2393b9['where']=qs[_0xe177('0x48')](_[_0xe177('0x52')](_0x293f95[_0xe177('0x46')],_0x11c3ac[_0xe177('0x48')]));_0x2393b9['where'][_0xe177('0x69')]=_0x592c76['id'];if(_0x293f95['query'][_0xe177('0x53')]){_0x2393b9[_0xe177('0x54')]=_[_0xe177('0x5d')](_0x2393b9[_0xe177('0x54')],{'$or':_['map'](_0x2393b9[_0xe177('0x4b')],function(_0x43c63a){var _0x2d8cbd={};_0x2d8cbd[_0x43c63a]={'$like':'%'+_0x293f95['query'][_0xe177('0x53')]+'%'};return _0x2d8cbd;})});}_0x2393b9=_[_0xe177('0x5d')]({},_0x2393b9,_0x293f95[_0xe177('0x56')]);return db['CannedAnswer']['count']({'where':_0x2393b9[_0xe177('0x54')]})[_0xe177('0x36')](function(_0x3e8d20){_0x265789[_0xe177('0x31')]=_0x3e8d20;if(_0x293f95[_0xe177('0x46')][_0xe177('0x5c')]){_0x2393b9[_0xe177('0x57')]=[{'all':!![]}];}return db[_0xe177('0x70')][_0xe177('0x58')](_0x2393b9);})[_0xe177('0x36')](function(_0x2f5d15){_0x265789[_0xe177('0x59')]=_0x2f5d15;return _0x265789;});}})[_0xe177('0x36')](respondWithFilteredResult(_0x3b6c1d,_0x2393b9))[_0xe177('0x2b')](handleError(_0x3b6c1d,null));};exports[_0xe177('0x72')]=function(_0x438068,_0x3f901a,_0x41d120){return db['WhatsappAccount'][_0xe177('0x5e')]({'where':{'id':_0x438068[_0xe177('0x5b')]['id']}})[_0xe177('0x36')](handleEntityNotFound(_0x3f901a,null))['then'](function(_0x28382e){if(_0x28382e){return _0x28382e[_0xe177('0x72')](_0x438068[_0xe177('0x46')]['ids']);}})[_0xe177('0x36')](respondWithStatusCode(_0x3f901a,null))[_0xe177('0x2b')](handleError(_0x3f901a,null));};exports[_0xe177('0x73')]=function(_0x564fe3,_0x1a672a,_0x562aaa){return db[_0xe177('0x42')][_0xe177('0x5e')]({'where':{'id':_0x564fe3[_0xe177('0x5b')]['id']}})['then'](handleEntityNotFound(_0x1a672a,null))[_0xe177('0x36')](function(_0x43273d){if(_0x43273d){return _0x43273d[_0xe177('0x73')](_0x564fe3[_0xe177('0x60')][_0xe177('0x6e')],_[_0xe177('0x74')](_0x564fe3[_0xe177('0x60')],[_0xe177('0x6e'),'id'])||{})['spread'](function(_0x1ef815){for(var _0x2465d9=0x0;_0x2465d9<_0x564fe3[_0xe177('0x60')][_0xe177('0x6e')][_0xe177('0x4d')];_0x2465d9+=0x1){socket[_0xe177('0x75')](_0xe177('0x76'),{'UserId':Number(_0x564fe3[_0xe177('0x60')][_0xe177('0x6e')][_0x2465d9]),'WhatsappAccountId':Number(_0x564fe3['params']['id'])});}return _0x1ef815;});}})[_0xe177('0x36')](respondWithResult(_0x1a672a,null))[_0xe177('0x2b')](handleError(_0x1a672a,null));};exports[_0xe177('0x77')]=function(_0x2f6a96,_0x4cf205,_0x591916){return db[_0xe177('0x42')][_0xe177('0x5e')]({'where':{'id':_0x2f6a96[_0xe177('0x5b')]['id']}})[_0xe177('0x36')](handleEntityNotFound(_0x4cf205,null))['then'](function(_0x51cbfd){if(_0x51cbfd){return _0x51cbfd[_0xe177('0x77')](_0x2f6a96['query'][_0xe177('0x6e')])[_0xe177('0x36')](function(){if(_[_0xe177('0x78')](_0x2f6a96[_0xe177('0x46')]['ids'])){for(var _0x4f276d=0x0;_0x4f276d<_0x2f6a96[_0xe177('0x46')][_0xe177('0x6e')][_0xe177('0x4d')];_0x4f276d+=0x1){socket[_0xe177('0x75')](_0xe177('0x79'),{'UserId':Number(_0x2f6a96[_0xe177('0x46')]['ids'][_0x4f276d]),'WhatsappAccountId':Number(_0x2f6a96[_0xe177('0x5b')]['id'])});}}else{socket[_0xe177('0x75')]('userWhatsappAccount:remove',{'UserId':Number(_0x2f6a96[_0xe177('0x46')][_0xe177('0x6e')]),'WhatsappAccountId':Number(_0x2f6a96[_0xe177('0x5b')]['id'])});}});}})[_0xe177('0x36')](respondWithStatusCode(_0x4cf205,null))[_0xe177('0x2b')](handleError(_0x4cf205,null));};exports[_0xe177('0x7a')]=function(_0x1f861f,_0x2b4c40,_0x5d848c){var _0x47c76d={};var _0x3f6f7c={};var _0x39a63e;var _0x4bcddb;return db[_0xe177('0x42')][_0xe177('0x6c')]({'where':{'id':_0x1f861f[_0xe177('0x5b')]['id']}})[_0xe177('0x36')](handleEntityNotFound(_0x2b4c40,null))[_0xe177('0x36')](function(_0x48e031){if(_0x48e031){_0x39a63e=_0x48e031;_0x3f6f7c[_0xe177('0x4a')]=_[_0xe177('0x47')](db['User'][_0xe177('0x43')]);_0x3f6f7c[_0xe177('0x46')]=_['keys'](_0x1f861f['query']);_0x3f6f7c[_0xe177('0x48')]=_[_0xe177('0x49')](_0x3f6f7c[_0xe177('0x4a')],_0x3f6f7c[_0xe177('0x46')]);_0x47c76d['attributes']=_['intersection'](_0x3f6f7c[_0xe177('0x4a')],qs[_0xe177('0x4c')](_0x1f861f['query'][_0xe177('0x4c')]));_0x47c76d['attributes']=_0x47c76d[_0xe177('0x4b')][_0xe177('0x4d')]?_0x47c76d[_0xe177('0x4b')]:_0x3f6f7c[_0xe177('0x4a')];_0x47c76d['order']=qs[_0xe177('0x51')](_0x1f861f['query']['sort']);_0x47c76d['where']=qs[_0xe177('0x48')](_[_0xe177('0x52')](_0x1f861f['query'],_0x3f6f7c[_0xe177('0x48')]));if(_0x1f861f[_0xe177('0x46')][_0xe177('0x53')]){_0x47c76d['where']=_[_0xe177('0x5d')](_0x47c76d[_0xe177('0x54')],{'$or':_[_0xe177('0x41')](_0x47c76d[_0xe177('0x4b')],function(_0x52e046){var _0x2a6c03={};_0x2a6c03[_0x52e046]={'$like':'%'+_0x1f861f[_0xe177('0x46')][_0xe177('0x53')]+'%'};return _0x2a6c03;})});}_0x47c76d=_[_0xe177('0x5d')]({},_0x47c76d,_0x1f861f[_0xe177('0x56')]);return _0x39a63e[_0xe177('0x7a')](_0x47c76d);}})['then'](function(_0x2b58f4){if(_0x2b58f4){_0x4bcddb=_0x2b58f4[_0xe177('0x4d')];if(!_0x1f861f[_0xe177('0x46')][_0xe177('0x4e')](_0xe177('0x4f'))){_0x47c76d[_0xe177('0x30')]=qs[_0xe177('0x30')](_0x1f861f[_0xe177('0x46')][_0xe177('0x30')]);_0x47c76d[_0xe177('0x32')]=qs['offset'](_0x1f861f[_0xe177('0x46')][_0xe177('0x32')]);}return _0x39a63e[_0xe177('0x7a')](_0x47c76d);}})[_0xe177('0x36')](function(_0x497668){if(_0x497668){return _0x497668?{'count':_0x4bcddb,'rows':_0x497668}:null;}})[_0xe177('0x36')](respondWithResult(_0x2b4c40,null))['catch'](handleError(_0x2b4c40,null));};exports[_0xe177('0x7b')]=function(_0x3d3725,_0x4b4704,_0x441991){return db[_0xe177('0x42')][_0xe177('0x6c')]({'where':{'id':_0x3d3725[_0xe177('0x5b')]['id']}})[_0xe177('0x36')](handleEntityNotFound(_0x4b4704,null))['then'](function(_0x1ed1a2){if(_0x1ed1a2){return db[_0xe177('0x7c')]['transaction'](function(_0x3f88f5){return db[_0xe177('0x7d')][_0xe177('0x37')]({'where':{'WhatsappAccountId':_0x3d3725[_0xe177('0x5b')]['id']},'transaction':_0x3f88f5})[_0xe177('0x36')](function(_0x286e0f){var _0x41146b=_['map'](_0x3d3725[_0xe177('0x60')],function(_0x9df915){_0x9df915['WhatsappAccountId']=_0x3d3725[_0xe177('0x5b')]['id'];return _0x9df915;});return db['WhatsappApplication']['bulkCreate'](_0x41146b,{'transaction':_0x3f88f5});});})[_0xe177('0x36')](function(){return db[_0xe177('0x7d')][_0xe177('0x7e')]({'where':{'WhatsappAccountId':_0x3d3725[_0xe177('0x5b')]['id']},'order':_0xe177('0x7f')});});}})['then'](respondWithResult(_0x4b4704,null))['catch'](handleError(_0x4b4704,null));};exports['getApplications']=function(_0x44d719,_0x25b8f7,_0x43f222){var _0x338f17={};var _0x3a09df={};var _0x5a4fdd;var _0x370422;return db[_0xe177('0x42')][_0xe177('0x6c')]({'where':{'id':_0x44d719[_0xe177('0x5b')]['id']}})[_0xe177('0x36')](handleEntityNotFound(_0x25b8f7,null))[_0xe177('0x36')](function(_0x4a4c0d){if(_0x4a4c0d){_0x5a4fdd=_0x4a4c0d;_0x3a09df[_0xe177('0x4a')]=_[_0xe177('0x47')](db[_0xe177('0x7d')][_0xe177('0x43')]);_0x3a09df[_0xe177('0x46')]=_[_0xe177('0x47')](_0x44d719[_0xe177('0x46')]);_0x3a09df[_0xe177('0x48')]=_[_0xe177('0x49')](_0x3a09df[_0xe177('0x4a')],_0x3a09df[_0xe177('0x46')]);_0x338f17[_0xe177('0x4b')]=_['intersection'](_0x3a09df[_0xe177('0x4a')],qs[_0xe177('0x4c')](_0x44d719[_0xe177('0x46')][_0xe177('0x4c')]));_0x338f17[_0xe177('0x4b')]=_0x338f17[_0xe177('0x4b')]['length']?_0x338f17[_0xe177('0x4b')]:_0x3a09df['model'];_0x338f17[_0xe177('0x50')]=qs['sort'](_0x44d719[_0xe177('0x46')][_0xe177('0x51')]);_0x338f17[_0xe177('0x54')]=qs[_0xe177('0x48')](_[_0xe177('0x52')](_0x44d719[_0xe177('0x46')],_0x3a09df['filters']));if(_0x44d719[_0xe177('0x46')][_0xe177('0x53')]){_0x338f17[_0xe177('0x54')]=_[_0xe177('0x5d')](_0x338f17[_0xe177('0x54')],{'$or':_[_0xe177('0x41')](_0x338f17[_0xe177('0x4b')],function(_0x43bbef){var _0x59fca1={};_0x59fca1[_0x43bbef]={'$like':'%'+_0x44d719[_0xe177('0x46')]['filter']+'%'};return _0x59fca1;})});}_0x338f17=_[_0xe177('0x5d')]({},_0x338f17,_0x44d719[_0xe177('0x56')]);return _0x5a4fdd['getApplications'](_0x338f17);}})[_0xe177('0x36')](function(_0x2b1422){if(_0x2b1422){_0x370422=_0x2b1422['length'];if(!_0x44d719[_0xe177('0x46')][_0xe177('0x4e')](_0xe177('0x4f'))){_0x338f17[_0xe177('0x30')]=qs['limit'](_0x44d719[_0xe177('0x46')][_0xe177('0x30')]);_0x338f17[_0xe177('0x32')]=qs[_0xe177('0x32')](_0x44d719[_0xe177('0x46')][_0xe177('0x32')]);}return _0x5a4fdd['getApplications'](_0x338f17);}})[_0xe177('0x36')](function(_0x122469){if(_0x122469){return _0x122469?{'count':_0x370422,'rows':_0x122469}:null;}})['then'](respondWithResult(_0x25b8f7,null))[_0xe177('0x2b')](handleError(_0x25b8f7,null));};exports[_0xe177('0x80')]=function(_0x1bda60,_0x97f2b,_0x2559a5){var _0xa72d0f={'channel':_0xe177('0x81')};var _0x27973d=[];var _0x1c61a6=[];var _0x3146a5={};return db[_0xe177('0x42')][_0xe177('0x5e')]({'where':{'id':_0x1bda60[_0xe177('0x5b')]['id']},'include':[{'model':db['WhatsappApplication'],'as':'Applications'}]})[_0xe177('0x36')](handleEntityNotFound(_0x97f2b,null))[_0xe177('0x36')](function(_0x5e9303){_0xa72d0f[_0xe177('0x82')]=_0x5e9303;_0xa72d0f[_0xe177('0x83')]=_[_0xe177('0x84')](_0x5e9303[_0xe177('0x85')],[_0xe177('0x7f')],[_0xe177('0x86')]);if(_0xa72d0f[_0xe177('0x82')][_0xe177('0x85')]){delete _0xa72d0f[_0xe177('0x82')][_0xe177('0x85')];}return db[_0xe177('0x87')][_0xe177('0x67')]();})[_0xe177('0x36')](function(_0x16fac8){if(!_0x16fac8){throw new db[(_0xe177('0x88'))]['ValidationError'](_0xe177('0x89'));}_0x27973d=_[_0xe177('0x8a')](_[_0xe177('0x47')](_0x16fac8),['createdAt',_0xe177('0x8b')]);_0x1c61a6=_[_0xe177('0x8a')](_[_0xe177('0x47')](_0x16fac8),[_0xe177('0x8c'),_0xe177('0x8b'),_0xe177('0x8d'),'ListId']);_0xa72d0f[_0xe177('0x60')]={'mapKey':_0xe177('0x8e')};if(_0xa72d0f[_0xe177('0x82')]['type']&&_0xa72d0f[_0xe177('0x82')][_0xe177('0x45')]==='twilio'){_0xa72d0f[_0xe177('0x60')]['from']=_0x1bda60['body'][_0xe177('0x8f')]['replace'](_0xe177('0x90'),'');_0xa72d0f[_0xe177('0x60')]['body']=_0x1bda60['body'][_0xe177('0x91')];_0xa72d0f[_0xe177('0x60')][_0xe177('0x92')]=_0x1bda60['body'][_0xe177('0x93')];}if(_0xa72d0f[_0xe177('0x60')]['id']){delete _0xa72d0f['body']['id'];}if(_[_0xe177('0x94')](_0xa72d0f[_0xe177('0x60')]['from'])){throw new db[(_0xe177('0x88'))][(_0xe177('0x95'))]('from\x20is\x20mandatory');}if(_[_0xe177('0x94')](_0xa72d0f[_0xe177('0x60')][_0xe177('0x60')])||_0xa72d0f[_0xe177('0x60')][_0xe177('0x60')]===''){throw new db[(_0xe177('0x88'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0xa72d0f[_0xe177('0x60')]['mapKey'])){throw new db[(_0xe177('0x88'))][(_0xe177('0x95'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x1c61a6);}if(!_[_0xe177('0x96')](_0x1c61a6,_0xa72d0f[_0xe177('0x60')][_0xe177('0x97')])){throw new db[(_0xe177('0x88'))][(_0xe177('0x95'))](_0xe177('0x98')+_0x1c61a6);}_0x3146a5[_0xa72d0f[_0xe177('0x60')][_0xe177('0x97')]]=_0xa72d0f[_0xe177('0x60')][_0xe177('0x99')];return db[_0xe177('0x9a')][_0xe177('0x5e')]({'where':{'id':_0xa72d0f[_0xe177('0x82')][_0xe177('0x9b')]},'include':[{'model':db['CmContact'],'as':_0xe177('0x9c'),'where':_0x3146a5,'limit':0x1,'order':[[_0xe177('0x8b'),'DESC']]}]});})[_0xe177('0x36')](handleEntityNotFound(_0x97f2b,null))[_0xe177('0x36')](function(_0x129868){if(_0x129868){_0xa72d0f[_0xe177('0x9d')]=_['omit'](_0x129868,['Contacts']);if(_0x129868[_0xe177('0x9c')]['length']){return _0x129868[_0xe177('0x9c')][0x0];}var _0x39e116=_['defaults'](_0xa72d0f[_0xe177('0x60')],{'firstName':_0xa72d0f['body'][_0xe177('0x99')],'ListId':_0x129868['id']});_0x39e116[_0xa72d0f[_0xe177('0x60')][_0xe177('0x97')]]=_0xa72d0f[_0xe177('0x60')]['from'];return db[_0xe177('0x87')][_0xe177('0x5f')](_0x39e116,{'fields':_0x27973d,'raw':!![]});}})[_0xe177('0x36')](handleEntityNotFound(_0x97f2b,null))[_0xe177('0x36')](function(_0x311b77){if(_0x311b77){_0xa72d0f[_0xe177('0x9e')]=_0x311b77;var _0x40fc74={'ContactId':_0x311b77['id'],'phone':_0xa72d0f[_0xe177('0x60')][_0xe177('0x99')],'WhatsappAccountId':_0x1bda60[_0xe177('0x5b')]['id']};var _0x2da465={'ContactId':_0x311b77['id'],'WhatsappAccountId':_0x1bda60[_0xe177('0x5b')]['id'],'closed':![]};return db[_0xe177('0x9f')][_0xe177('0x5e')]({'where':_0x2da465})[_0xe177('0x36')](function(_0x42d0af){if(_0x42d0af){return[_0x42d0af,![]];}return db[_0xe177('0x9f')]['create'](_0x40fc74)[_0xe177('0x36')](function(_0x1c253a){return[_0x1c253a,!![]];});});}})['spread'](function(_0x4e381a,_0x440602){_0xa72d0f[_0xe177('0xa0')]=_0x4e381a[_0xe177('0x38')]({'plain':!![]});_0xa72d0f[_0xe177('0xa0')][_0xe177('0xa1')]=![];if(_0x440602){if(_0xa72d0f['account']['autoclose']){_0xa72d0f['applications'][_0xe177('0xa2')]({'id':0x0,'priority':_0xa72d0f[_0xe177('0x83')][_0xe177('0x4d')]+0x1,'app':'close','appdata':_0xe177('0xa3'),'interval':_0xe177('0xa4')});}_0xa72d0f['interaction'][_0xe177('0xa1')]=!![];}return db[_0xe177('0xa5')]['create']({'phone':_0xa72d0f[_0xe177('0x60')][_0xe177('0x99')],'messageId':_0xa72d0f[_0xe177('0x60')][_0xe177('0x92')],'body':_0xa72d0f[_0xe177('0x60')]['body'],'WhatsappAccountId':_0x1bda60[_0xe177('0x5b')]['id'],'WhatsappInteractionId':_0x4e381a['id'],'direction':'in','ContactId':_0x4e381a[_0xe177('0xa6')],'AttachmentId':_0xa72d0f[_0xe177('0x60')][_0xe177('0xa7')]});})[_0xe177('0x36')](function(_0x4875c4){_0xa72d0f[_0xe177('0x28')]=_0x4875c4;if(_0xa72d0f['interaction']['UserId']){return db[_0xe177('0xa8')][_0xe177('0x5e')]({'attributes':['id','name'],'where':{'id':_0xa72d0f[_0xe177('0xa0')][_0xe177('0xa9')]}})['then'](function(_0x285a1f){if(_0x285a1f){_0xa72d0f[_0xe177('0x83')][_0xe177('0xaa')]({'id':0x0,'priority':0x0,'app':_0xe177('0xab'),'appdata':_0x285a1f[_0xe177('0x3c')]+','+(_0xa72d0f[_0xe177('0x82')][_0xe177('0xac')]||0xa),'interval':_0xe177('0xa4')});}return respondWithRpcPromise('Start',_0xe177('0xad'),_0xa72d0f);});}return respondWithRpcPromise(_0xe177('0xae'),_0xe177('0xad'),_0xa72d0f);})[_0xe177('0x36')](function(_0x21eba1){if(_0x21eba1){var _0x4abe12=0xc8;var _0x2453e2='receiveMessage';logger[_0xe177('0x29')](_0xe177('0x24'),_0x2453e2,_0x4abe12,'entity\x20found');logger['debug'](_0xe177('0xaf'),_0x2453e2,_0x4abe12,'entity\x20found',JSON[_0xe177('0x25')](_0x21eba1));if(_0xa72d0f[_0xe177('0x82')][_0xe177('0x45')]===_0xe177('0xb0')){return _0x97f2b[_0xe177('0x2d')](_0x4abe12)[_0xe177('0x33')](_0xe177('0xb1'),_0xe177('0xb2'))[_0xe177('0x3d')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x97f2b[_0xe177('0x2d')](_0x4abe12)[_0xe177('0x2e')](_0x21eba1);}}})['catch'](handleError(_0x97f2b,null));};exports[_0xe177('0x3d')]=function(_0x75af23,_0x1c4390,_0x280eb1){var _0x3a6e0d,_0x30699b,_0x1beb7b;if(_[_0xe177('0x94')](_0x75af23[_0xe177('0x60')][_0xe177('0x60')])||_0x75af23[_0xe177('0x60')][_0xe177('0x60')]===''){throw new db[(_0xe177('0x88'))][(_0xe177('0x95'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x75af23['body']['to'])){throw new db[(_0xe177('0x88'))][(_0xe177('0x95'))](_0xe177('0xb3'));}_0x3a6e0d=_0x75af23[_0xe177('0x60')]['to'];return db['WhatsappAccount'][_0xe177('0x5e')]({'where':{'id':_0x75af23['params']['id']},'include':[{'model':db['CmList'],'as':_0xe177('0xb4'),'include':[{'model':db[_0xe177('0x87')],'as':_0xe177('0x9c'),'where':{'mobile':_0x3a6e0d},'limit':0x1,'order':[[_0xe177('0x8b'),_0xe177('0xb5')]]}]}]})['then'](handleEntityNotFound(_0x1c4390,null))[_0xe177('0x36')](function(_0x5f42ca){if(_0x5f42ca&&_0x5f42ca[_0xe177('0xb4')]){_0x30699b=_0x5f42ca['get']({'plain':!![]});if(_0x30699b[_0xe177('0xb4')]&&_0x30699b['List']['Contacts'][_0xe177('0x4d')]){return _0x30699b[_0xe177('0xb4')]['Contacts'][0x0];}return db[_0xe177('0x87')][_0xe177('0x5f')](_[_0xe177('0x1c')](_0x75af23['body'],{'firstName':_0x3a6e0d,'mobile':_0x3a6e0d,'phone':_0x3a6e0d,'ListId':_0x30699b[_0xe177('0x9b')]}));}})['then'](handleEntityNotFound(_0x1c4390,null))[_0xe177('0x36')](function(_0x3987f6){if(_0x3987f6){_0x1beb7b=_0x3987f6;return db['WhatsappInteraction'][_0xe177('0x5e')]({'where':{'ContactId':_0x1beb7b['id'],'closed':![],'WhatsappAccountId':_0x30699b['id']}})[_0xe177('0x36')](function(_0x6bbe56){if(_0x6bbe56){return[_0x6bbe56,![]];}return db[_0xe177('0x9f')][_0xe177('0x5f')]({'UserId':_0x75af23[_0xe177('0xb6')]['id'],'ContactId':_0x1beb7b['id'],'WhatsappAccountId':_0x30699b['id'],'phone':_0x3a6e0d,'firstMsgDirection':_0xe177('0xb7'),'Messages':[_['merge'](_0x75af23[_0xe177('0x60')],{'read':![],'body':_0x75af23[_0xe177('0x60')][_0xe177('0x60')],'phone':_0x3a6e0d,'WhatsappAccountId':_0x30699b['id'],'UserId':_0x75af23[_0xe177('0xb6')]['id'],'ContactId':_0x1beb7b['id']})]},{'include':[{'model':db['WhatsappMessage'],'as':_0xe177('0xb8')}]})['then'](function(_0x29f619){return[_0x29f619,!![]];});});}})[_0xe177('0xb9')](function(_0x13a2ba,_0x3d9db4){if(_0x3d9db4){return _0x13a2ba;}return db[_0xe177('0xa5')][_0xe177('0x5f')](_['merge'](_0x75af23[_0xe177('0x60')],{'read':![],'body':_0x75af23['body']['body'],'phone':_0x3a6e0d,'WhatsappAccountId':_0x30699b['id'],'WhatsappInteractionId':_0x13a2ba['id'],'UserId':_0x75af23[_0xe177('0xb6')]['id'],'ContactId':_0x1beb7b['id']}))[_0xe177('0x36')](function(_0x392d0c){_0x13a2ba[_0xe177('0xba')][_0xe177('0xb8')]=[];_0x13a2ba[_0xe177('0xba')][_0xe177('0xb8')]['push'](_0x392d0c[_0xe177('0xba')]);return _0x13a2ba;});})[_0xe177('0x36')](respondWithResult(_0x1c4390,null))['catch'](handleError(_0x1c4390,null));};
\ No newline at end of file
index 2154c35..09c2a50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16e7=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappAccount','setMaxListeners','save','update','remove'];(function(_0x1252d9,_0xb59816){var _0x76c018=function(_0x52e72c){while(--_0x52e72c){_0x1252d9['push'](_0x1252d9['shift']());}};_0x76c018(++_0xb59816);}(_0x16e7,0x14e));var _0x716e=function(_0x582691,_0x2f2f7f){_0x582691=_0x582691-0x0;var _0x3a00b9=_0x16e7[_0x582691];return _0x3a00b9;};'use strict';var EventEmitter=require(_0x716e('0x0'));var WhatsappAccount=require(_0x716e('0x1'))['db'][_0x716e('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x716e('0x3')](0x0);var events={'afterCreate':_0x716e('0x4'),'afterUpdate':_0x716e('0x5'),'afterDestroy':_0x716e('0x6')};function emitEvent(_0x930753){return function(_0x2cbc08,_0x317e67,_0x3ae0bd){WhatsappAccountEvents[_0x716e('0x7')](_0x930753+':'+_0x2cbc08['id'],_0x2cbc08);WhatsappAccountEvents['emit'](_0x930753,_0x2cbc08);_0x3ae0bd(null);};}for(var e in events){if(events[_0x716e('0x8')](e)){var event=events[e];WhatsappAccount[_0x716e('0x9')](e,emitEvent(event));}}module[_0x716e('0xa')]=WhatsappAccountEvents;
\ No newline at end of file
+var _0xb24d=['setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','WhatsappAccount'];(function(_0x3c53a2,_0x11b05f){var _0x140454=function(_0x16ac5b){while(--_0x16ac5b){_0x3c53a2['push'](_0x3c53a2['shift']());}};_0x140454(++_0x11b05f);}(_0xb24d,0x7c));var _0xdb24=function(_0x32bb81,_0xa5f4db){_0x32bb81=_0x32bb81-0x0;var _0x2f4e50=_0xb24d[_0x32bb81];return _0x2f4e50;};'use strict';var EventEmitter=require('events');var WhatsappAccount=require(_0xdb24('0x0'))['db'][_0xdb24('0x1')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0xdb24('0x2')](0x0);var events={'afterCreate':_0xdb24('0x3'),'afterUpdate':'update','afterDestroy':_0xdb24('0x4')};function emitEvent(_0x530524){return function(_0x46870e,_0x195f1a,_0x2b2936){WhatsappAccountEvents[_0xdb24('0x5')](_0x530524+':'+_0x46870e['id'],_0x46870e);WhatsappAccountEvents[_0xdb24('0x5')](_0x530524,_0x46870e);_0x2b2936(null);};}for(var e in events){if(events[_0xdb24('0x6')](e)){var event=events[e];WhatsappAccount[_0xdb24('0x7')](e,emitEvent(event));}}module[_0xdb24('0x8')]=WhatsappAccountEvents;
\ No newline at end of file
index 3db5fbe..0a2b98e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7295=['whatsapp_accounts','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','WhatsappAccount'];(function(_0x2a3caa,_0x5623c7){var _0x208113=function(_0x30eef8){while(--_0x30eef8){_0x2a3caa['push'](_0x2a3caa['shift']());}};_0x208113(++_0x5623c7);}(_0x7295,0x79));var _0x5729=function(_0x511b17,_0xe6b453){_0x511b17=_0x511b17-0x0;var _0x4fa333=_0x7295[_0x511b17];return _0x4fa333;};'use strict';var _=require(_0x5729('0x0'));var util=require(_0x5729('0x1'));var logger=require(_0x5729('0x2'))('api');var moment=require(_0x5729('0x3'));var BPromise=require(_0x5729('0x4'));var rp=require(_0x5729('0x5'));var fs=require('fs');var path=require(_0x5729('0x6'));var rimraf=require(_0x5729('0x7'));var config=require(_0x5729('0x8'));var attributes=require('./whatsappAccount.attributes');module[_0x5729('0x9')]=function(_0x43fd90,_0x5faccc){return _0x43fd90['define'](_0x5729('0xa'),attributes,{'tableName':_0x5729('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf67d=['lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','define','WhatsappAccount','whatsapp_accounts'];(function(_0x1313b2,_0x1b0889){var _0x1146f5=function(_0x46e8c4){while(--_0x46e8c4){_0x1313b2['push'](_0x1313b2['shift']());}};_0x1146f5(++_0x1b0889);}(_0xf67d,0xfd));var _0xdf67=function(_0x14fc6e,_0x252589){_0x14fc6e=_0x14fc6e-0x0;var _0xed54e0=_0xf67d[_0x14fc6e];return _0xed54e0;};'use strict';var _=require(_0xdf67('0x0'));var util=require(_0xdf67('0x1'));var logger=require(_0xdf67('0x2'))(_0xdf67('0x3'));var moment=require(_0xdf67('0x4'));var BPromise=require(_0xdf67('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xdf67('0x6'));var config=require(_0xdf67('0x7'));var attributes=require('./whatsappAccount.attributes');module['exports']=function(_0x410663,_0x39fe6a){return _0x410663[_0xdf67('0x8')](_0xdf67('0x9'),attributes,{'tableName':_0xdf67('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ed6d554..62de14f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf801=['model','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','redis','localhost','socket.io-emitter','./whatsappAccount.socket','register','then','info','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','error','code','message','WhatsappAccount,\x20%s,\x20%s','result','catch','ShowWhatsappAccount','WhatsappAccount','find','options','raw','where','attributes','include','map'];(function(_0x549278,_0x450754){var _0x1ea9a1=function(_0x2e559d){while(--_0x2e559d){_0x549278['push'](_0x549278['shift']());}};_0x1ea9a1(++_0x450754);}(_0xf801,0x96));var _0x1f80=function(_0x46f4bb,_0x7dc8a9){_0x46f4bb=_0x46f4bb-0x0;var _0x29f2af=_0xf801[_0x46f4bb];return _0x29f2af;};'use strict';var _=require(_0x1f80('0x0'));var util=require(_0x1f80('0x1'));var moment=require(_0x1f80('0x2'));var BPromise=require(_0x1f80('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1f80('0x4'));var db=require(_0x1f80('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x1f80('0x6'))(_0x1f80('0x7'));var config=require(_0x1f80('0x8'));var jayson=require(_0x1f80('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x1f80('0xa')]=_['defaults'](config[_0x1f80('0xa')],{'host':_0x1f80('0xb'),'port':0x18eb});var socket=require(_0x1f80('0xc'))(new Redis(config[_0x1f80('0xa')]));require(_0x1f80('0xd'))[_0x1f80('0xe')](socket);function respondWithRpcPromise(_0x2dc697,_0x2e9bc7,_0x59e4a6){return new BPromise(function(_0x5dddfe,_0x1a650b){return client['request'](_0x2dc697,_0x59e4a6)[_0x1f80('0xf')](function(_0x49c71d){logger[_0x1f80('0x10')]('WhatsappAccount,\x20%s,\x20%s',_0x2e9bc7,_0x1f80('0x11'));logger[_0x1f80('0x12')](_0x1f80('0x13'),_0x2e9bc7,_0x1f80('0x11'),JSON['stringify'](_0x49c71d));if(_0x49c71d[_0x1f80('0x14')]){if(_0x49c71d[_0x1f80('0x14')][_0x1f80('0x15')]===0x1f4){logger[_0x1f80('0x14')]('WhatsappAccount,\x20%s,\x20%s',_0x2e9bc7,_0x49c71d[_0x1f80('0x14')][_0x1f80('0x16')]);return _0x1a650b(_0x49c71d['error'][_0x1f80('0x16')]);}logger[_0x1f80('0x14')]('WhatsappAccount,\x20%s,\x20%s',_0x2e9bc7,_0x49c71d[_0x1f80('0x14')][_0x1f80('0x16')]);return _0x5dddfe(_0x49c71d[_0x1f80('0x14')]['message']);}else{logger[_0x1f80('0x10')](_0x1f80('0x17'),_0x2e9bc7,_0x1f80('0x11'));_0x5dddfe(_0x49c71d[_0x1f80('0x18')]['message']);}})[_0x1f80('0x19')](function(_0x435bae){logger[_0x1f80('0x14')](_0x1f80('0x17'),_0x2e9bc7,_0x435bae);_0x1a650b(_0x435bae);});});}exports[_0x1f80('0x1a')]=function(_0x552432){var _0x2103e4=this;return new Promise(function(_0x33877f,_0x5c9244){return db[_0x1f80('0x1b')][_0x1f80('0x1c')]({'raw':_0x552432[_0x1f80('0x1d')]?_0x552432[_0x1f80('0x1d')][_0x1f80('0x1e')]===undefined?!![]:![]:!![],'where':_0x552432[_0x1f80('0x1d')]?_0x552432['options'][_0x1f80('0x1f')]||null:null,'attributes':_0x552432[_0x1f80('0x1d')]?_0x552432[_0x1f80('0x1d')][_0x1f80('0x20')]||null:null,'include':_0x552432['options']?_0x552432[_0x1f80('0x1d')][_0x1f80('0x21')]?_[_0x1f80('0x22')](_0x552432[_0x1f80('0x1d')][_0x1f80('0x21')],function(_0x56b8e8){return{'model':db[_0x56b8e8[_0x1f80('0x23')]],'as':_0x56b8e8['as'],'attributes':_0x56b8e8['attributes'],'include':_0x56b8e8['include']?_[_0x1f80('0x22')](_0x56b8e8[_0x1f80('0x21')],function(_0x33c783){return{'model':db[_0x33c783[_0x1f80('0x23')]],'as':_0x33c783['as'],'attributes':_0x33c783[_0x1f80('0x20')],'include':_0x33c783[_0x1f80('0x21')]?_[_0x1f80('0x22')](_0x33c783[_0x1f80('0x21')],function(_0x3010cd){return{'model':db[_0x3010cd[_0x1f80('0x23')]],'as':_0x3010cd['as'],'attributes':_0x3010cd[_0x1f80('0x20')]};}):[]};}):[]};}):[]:[]})[_0x1f80('0xf')](function(_0x48bc21){logger[_0x1f80('0x10')](_0x1f80('0x1a'),_0x552432);logger['debug'](_0x1f80('0x1a'),_0x552432,JSON[_0x1f80('0x24')](_0x48bc21));_0x33877f(_0x48bc21);})['catch'](function(_0x562a){logger['error'](_0x1f80('0x1a'),_0x562a[_0x1f80('0x16')],_0x552432);_0x5c9244(_0x2103e4[_0x1f80('0x14')](0x1f4,_0x562a[_0x1f80('0x16')]));});});};
\ No newline at end of file
+var _0xeecc=['map','model','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','./whatsappAccount.socket','register','request','then','info','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','error','WhatsappAccount,\x20%s,\x20%s','message','result','catch','ShowWhatsappAccount','WhatsappAccount','find','options','raw','attributes','include'];(function(_0x16a637,_0x5eb627){var _0x25126d=function(_0x54e016){while(--_0x54e016){_0x16a637['push'](_0x16a637['shift']());}};_0x25126d(++_0x5eb627);}(_0xeecc,0x146));var _0xceec=function(_0xc2adf7,_0xd55f45){_0xc2adf7=_0xc2adf7-0x0;var _0x464209=_0xeecc[_0xc2adf7];return _0x464209;};'use strict';var _=require(_0xceec('0x0'));var util=require('util');var moment=require(_0xceec('0x1'));var BPromise=require(_0xceec('0x2'));var rs=require(_0xceec('0x3'));var fs=require('fs');var Redis=require(_0xceec('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xceec('0x5'));var logger=require(_0xceec('0x6'))('rpc');var config=require(_0xceec('0x7'));var jayson=require(_0xceec('0x8'));var client=jayson[_0xceec('0x9')][_0xceec('0xa')]({'port':0x232a});config['redis']=_[_0xceec('0xb')](config[_0xceec('0xc')],{'host':_0xceec('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xceec('0xc')]));require(_0xceec('0xe'))[_0xceec('0xf')](socket);function respondWithRpcPromise(_0x42e572,_0x2d35ef,_0x17f2bb){return new BPromise(function(_0x341ae8,_0x152d07){return client[_0xceec('0x10')](_0x42e572,_0x17f2bb)[_0xceec('0x11')](function(_0xc9a442){logger[_0xceec('0x12')]('WhatsappAccount,\x20%s,\x20%s',_0x2d35ef,_0xceec('0x13'));logger[_0xceec('0x14')](_0xceec('0x15'),_0x2d35ef,_0xceec('0x13'),JSON['stringify'](_0xc9a442));if(_0xc9a442['error']){if(_0xc9a442[_0xceec('0x16')]['code']===0x1f4){logger[_0xceec('0x16')](_0xceec('0x17'),_0x2d35ef,_0xc9a442[_0xceec('0x16')][_0xceec('0x18')]);return _0x152d07(_0xc9a442['error'][_0xceec('0x18')]);}logger[_0xceec('0x16')](_0xceec('0x17'),_0x2d35ef,_0xc9a442[_0xceec('0x16')][_0xceec('0x18')]);return _0x341ae8(_0xc9a442[_0xceec('0x16')][_0xceec('0x18')]);}else{logger[_0xceec('0x12')](_0xceec('0x17'),_0x2d35ef,'request\x20sent');_0x341ae8(_0xc9a442[_0xceec('0x19')][_0xceec('0x18')]);}})[_0xceec('0x1a')](function(_0x268cbc){logger[_0xceec('0x16')]('WhatsappAccount,\x20%s,\x20%s',_0x2d35ef,_0x268cbc);_0x152d07(_0x268cbc);});});}exports[_0xceec('0x1b')]=function(_0x262968){var _0x3deaf1=this;return new Promise(function(_0x116707,_0x52ff3a){return db[_0xceec('0x1c')][_0xceec('0x1d')]({'raw':_0x262968['options']?_0x262968[_0xceec('0x1e')][_0xceec('0x1f')]===undefined?!![]:![]:!![],'where':_0x262968[_0xceec('0x1e')]?_0x262968[_0xceec('0x1e')]['where']||null:null,'attributes':_0x262968[_0xceec('0x1e')]?_0x262968[_0xceec('0x1e')][_0xceec('0x20')]||null:null,'include':_0x262968[_0xceec('0x1e')]?_0x262968['options'][_0xceec('0x21')]?_[_0xceec('0x22')](_0x262968['options'][_0xceec('0x21')],function(_0x134e41){return{'model':db[_0x134e41[_0xceec('0x23')]],'as':_0x134e41['as'],'attributes':_0x134e41['attributes'],'include':_0x134e41[_0xceec('0x21')]?_[_0xceec('0x22')](_0x134e41[_0xceec('0x21')],function(_0x4e0228){return{'model':db[_0x4e0228['model']],'as':_0x4e0228['as'],'attributes':_0x4e0228[_0xceec('0x20')],'include':_0x4e0228[_0xceec('0x21')]?_[_0xceec('0x22')](_0x4e0228[_0xceec('0x21')],function(_0x5acd38){return{'model':db[_0x5acd38[_0xceec('0x23')]],'as':_0x5acd38['as'],'attributes':_0x5acd38[_0xceec('0x20')]};}):[]};}):[]};}):[]:[]})[_0xceec('0x11')](function(_0x368c6d){logger['info']('ShowWhatsappAccount',_0x262968);logger[_0xceec('0x14')](_0xceec('0x1b'),_0x262968,JSON['stringify'](_0x368c6d));_0x116707(_0x368c6d);})['catch'](function(_0x34af62){logger[_0xceec('0x16')](_0xceec('0x1b'),_0x34af62[_0xceec('0x18')],_0x262968);_0x52ff3a(_0x3deaf1[_0xceec('0x16')](0x1f4,_0x34af62['message']));});});};
\ No newline at end of file
index 60bf94c..8dded46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e34=['update','emit','removeListener','register','length','whatsappAccount:','./whatsappAccount.events','save'];(function(_0x5c3c0b,_0x4ee35e){var _0x52ecd2=function(_0x3cf575){while(--_0x3cf575){_0x5c3c0b['push'](_0x5c3c0b['shift']());}};_0x52ecd2(++_0x4ee35e);}(_0x1e34,0x14e));var _0x41e3=function(_0x233f02,_0x369cba){_0x233f02=_0x233f02-0x0;var _0x4b62c6=_0x1e34[_0x233f02];return _0x4b62c6;};'use strict';var WhatsappAccountEvents=require(_0x41e3('0x0'));var events=[_0x41e3('0x1'),'remove',_0x41e3('0x2')];function createListener(_0x3dabb2,_0x47f9fb){return function(_0x3f91f5){_0x47f9fb[_0x41e3('0x3')](_0x3dabb2,_0x3f91f5);};}function removeListener(_0x42a99c,_0x51a9e0){return function(){WhatsappAccountEvents[_0x41e3('0x4')](_0x42a99c,_0x51a9e0);};}exports[_0x41e3('0x5')]=function(_0x13fca9){for(var _0x4e9bcd=0x0,_0x3b2dc1=events[_0x41e3('0x6')];_0x4e9bcd<_0x3b2dc1;_0x4e9bcd++){var _0x5a0d18=events[_0x4e9bcd];var _0x49bd80=createListener(_0x41e3('0x7')+_0x5a0d18,_0x13fca9);WhatsappAccountEvents['on'](_0x5a0d18,_0x49bd80);}};
\ No newline at end of file
+var _0x1546=['length','whatsappAccount:','save','remove','update','removeListener','register'];(function(_0x2e66b3,_0x12ec8a){var _0x3fa749=function(_0x57cd0d){while(--_0x57cd0d){_0x2e66b3['push'](_0x2e66b3['shift']());}};_0x3fa749(++_0x12ec8a);}(_0x1546,0xcd));var _0x6154=function(_0x20616f,_0x3181e5){_0x20616f=_0x20616f-0x0;var _0x48040d=_0x1546[_0x20616f];return _0x48040d;};'use strict';var WhatsappAccountEvents=require('./whatsappAccount.events');var events=[_0x6154('0x0'),_0x6154('0x1'),_0x6154('0x2')];function createListener(_0x517bc8,_0x41123d){return function(_0x40df96){_0x41123d['emit'](_0x517bc8,_0x40df96);};}function removeListener(_0x5e47d5,_0x546914){return function(){WhatsappAccountEvents[_0x6154('0x3')](_0x5e47d5,_0x546914);};}exports[_0x6154('0x4')]=function(_0x2a9d5b){for(var _0x179fb4=0x0,_0x1a1a06=events[_0x6154('0x5')];_0x179fb4<_0x1a1a06;_0x179fb4++){var _0x51a0e7=events[_0x179fb4];var _0x284533=createListener(_0x6154('0x6')+_0x51a0e7,_0x2a9d5b);WhatsappAccountEvents['on'](_0x51a0e7,_0x284533);}};
\ No newline at end of file
index f72ea30..2d6ac17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a0f=['express','fs-extra','../../config/environment','./whatsappApplication.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','destroy','exports','multer','util','path','connect-timeout'];(function(_0x12365a,_0x469597){var _0x43d595=function(_0x35b9cd){while(--_0x35b9cd){_0x12365a['push'](_0x12365a['shift']());}};_0x43d595(++_0x469597);}(_0x6a0f,0x106));var _0xf6a0=function(_0xf669dc,_0x588d3b){_0xf669dc=_0xf669dc-0x0;var _0x5028ad=_0x6a0f[_0xf669dc];return _0x5028ad;};'use strict';var multer=require(_0xf6a0('0x0'));var util=require(_0xf6a0('0x1'));var path=require(_0xf6a0('0x2'));var timeout=require(_0xf6a0('0x3'));var express=require(_0xf6a0('0x4'));var router=express['Router']();var fs_extra=require(_0xf6a0('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xf6a0('0x6'));var controller=require(_0xf6a0('0x7'));router[_0xf6a0('0x8')]('/',auth[_0xf6a0('0x9')](),controller[_0xf6a0('0xa')]);router[_0xf6a0('0x8')](_0xf6a0('0xb'),auth[_0xf6a0('0x9')](),controller[_0xf6a0('0xc')]);router[_0xf6a0('0xd')]('/',auth[_0xf6a0('0x9')](),controller[_0xf6a0('0xe')]);router[_0xf6a0('0xf')]('/:id',auth[_0xf6a0('0x9')](),controller[_0xf6a0('0x10')]);router['delete'](_0xf6a0('0xb'),auth[_0xf6a0('0x9')](),controller[_0xf6a0('0x11')]);module[_0xf6a0('0x12')]=router;
\ No newline at end of file
+var _0xc561=['index','/:id','post','put','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0x13187a,_0x2fcec4){var _0x65b85f=function(_0x33bf1f){while(--_0x33bf1f){_0x13187a['push'](_0x13187a['shift']());}};_0x65b85f(++_0x2fcec4);}(_0xc561,0xbc));var _0x1c56=function(_0x1a12c8,_0x2df4dc){_0x1a12c8=_0x1a12c8-0x0;var _0x305109=_0xc561[_0x1a12c8];return _0x305109;};'use strict';var multer=require(_0x1c56('0x0'));var util=require('util');var path=require(_0x1c56('0x1'));var timeout=require(_0x1c56('0x2'));var express=require('express');var router=express[_0x1c56('0x3')]();var fs_extra=require(_0x1c56('0x4'));var auth=require(_0x1c56('0x5'));var interaction=require(_0x1c56('0x6'));var config=require(_0x1c56('0x7'));var controller=require('./whatsappApplication.controller');router[_0x1c56('0x8')]('/',auth[_0x1c56('0x9')](),controller[_0x1c56('0xa')]);router[_0x1c56('0x8')](_0x1c56('0xb'),auth[_0x1c56('0x9')](),controller['show']);router[_0x1c56('0xc')]('/',auth[_0x1c56('0x9')](),controller['create']);router[_0x1c56('0xd')](_0x1c56('0xb'),auth[_0x1c56('0x9')](),controller[_0x1c56('0xe')]);router[_0x1c56('0xf')](_0x1c56('0xb'),auth['isAuthenticated'](),controller[_0x1c56('0x10')]);module[_0x1c56('0x11')]=router;
\ No newline at end of file
index 6438a73..6df406a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb797=['exports','noop','TEXT','STRING','*,*,*,*'];(function(_0x48f1db,_0x554c57){var _0x27de48=function(_0x3cd347){while(--_0x3cd347){_0x48f1db['push'](_0x48f1db['shift']());}};_0x27de48(++_0x554c57);}(_0xb797,0x1d6));var _0x7b79=function(_0x35757d,_0x52e37e){_0x35757d=_0x35757d-0x0;var _0x18fd8b=_0xb797[_0x35757d];return _0x18fd8b;};'use strict';var Sequelize=require('sequelize');module[_0x7b79('0x0')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x7b79('0x1')},'appdata':{'type':Sequelize[_0x7b79('0x2')]()},'description':{'type':Sequelize[_0x7b79('0x3')]},'interval':{'type':Sequelize[_0x7b79('0x3')],'defaultValue':_0x7b79('0x4')}};
\ No newline at end of file
+var _0x92bd=['sequelize','exports','STRING','noop','TEXT','*,*,*,*'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x92bd,0xde));var _0xd92b=function(_0x446377,_0x303043){_0x446377=_0x446377-0x0;var _0x20e753=_0x92bd[_0x446377];return _0x20e753;};'use strict';var Sequelize=require(_0xd92b('0x0'));module[_0xd92b('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xd92b('0x2')],'allowNull':![],'defaultValue':_0xd92b('0x3')},'appdata':{'type':Sequelize[_0xd92b('0x4')]()},'description':{'type':Sequelize[_0xd92b('0x2')]},'interval':{'type':Sequelize[_0xd92b('0x2')],'defaultValue':_0xd92b('0x5')}};
\ No newline at end of file
index 89a4474..1285e10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x341c=['../../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','then','error','stack','name','send','index','WhatsappApplication','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','catch','params','create','body','find','destroy','eml-format','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','../../config/license/hardware'];(function(_0x37fd20,_0x215b63){var _0x1e4b99=function(_0x38c7cd){while(--_0x38c7cd){_0x37fd20['push'](_0x37fd20['shift']());}};_0x1e4b99(++_0x215b63);}(_0x341c,0xcc));var _0xc341=function(_0x13fdb3,_0x493557){_0x13fdb3=_0x13fdb3-0x0;var _0x212e46=_0x341c[_0x13fdb3];return _0x212e46;};'use strict';var emlformat=require(_0xc341('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc341('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc341('0x2'));var moment=require(_0xc341('0x3'));var BPromise=require(_0xc341('0x4'));var Mustache=require(_0xc341('0x5'));var util=require(_0xc341('0x6'));var path=require(_0xc341('0x7'));var sox=require(_0xc341('0x8'));var csv=require(_0xc341('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc341('0xa'));var _=require(_0xc341('0xb'));var squel=require(_0xc341('0xc'));var crypto=require(_0xc341('0xd'));var jsforce=require(_0xc341('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xc341('0x9'));var querystring=require(_0xc341('0xf'));var Papa=require(_0xc341('0x10'));var Redis=require(_0xc341('0x11'));var authService=require(_0xc341('0x12'));var qs=require(_0xc341('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc341('0x14'));var logger=require(_0xc341('0x15'))(_0xc341('0x16'));var utils=require(_0xc341('0x17'));var config=require(_0xc341('0x18'));var licenseUtil=require(_0xc341('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x551f9d,_0x15c85c){_0x15c85c=_0x15c85c||0xcc;return function(_0x19a093){if(_0x19a093){return _0x551f9d[_0xc341('0x1a')](_0x15c85c);}return _0x551f9d[_0xc341('0x1b')](_0x15c85c)[_0xc341('0x1c')]();};}function respondWithResult(_0x483e30,_0x22fdc3){_0x22fdc3=_0x22fdc3||0xc8;return function(_0x12a4eb){if(_0x12a4eb){return _0x483e30[_0xc341('0x1b')](_0x22fdc3)[_0xc341('0x1d')](_0x12a4eb);}};}function respondWithFilteredResult(_0x989024,_0x2bd235){return function(_0x203a06){if(_0x203a06){var _0x26bbce=typeof _0x2bd235[_0xc341('0x1e')]===_0xc341('0x1f')&&typeof _0x2bd235[_0xc341('0x20')]==='undefined';var _0x4a0259=_0x203a06[_0xc341('0x21')];var _0x19d0bc=_0x26bbce?0x0:_0x2bd235[_0xc341('0x1e')];var _0x31f1ae=_0x26bbce?_0x203a06[_0xc341('0x21')]:_0x2bd235[_0xc341('0x1e')]+_0x2bd235[_0xc341('0x20')];var _0x41a020;if(_0x31f1ae>=_0x4a0259){_0x31f1ae=_0x4a0259;_0x41a020=0xc8;}else{_0x41a020=0xce;}_0x989024[_0xc341('0x1b')](_0x41a020);return _0x989024[_0xc341('0x22')](_0xc341('0x23'),_0x19d0bc+'-'+_0x31f1ae+'/'+_0x4a0259)[_0xc341('0x1d')](_0x203a06);}return null;};}function patchUpdates(_0x55a3c3){return function(_0x556281){try{jsonpatch[_0xc341('0x24')](_0x556281,_0x55a3c3,!![]);}catch(_0x48351d){return BPromise[_0xc341('0x25')](_0x48351d);}return _0x556281[_0xc341('0x26')]();};}function saveUpdates(_0x330cb2,_0x230754){return function(_0x488d43){if(_0x488d43){return _0x488d43[_0xc341('0x27')](_0x330cb2)[_0xc341('0x28')](function(_0x190599){return _0x190599;});}return null;};}function removeEntity(_0x5a4912,_0x5c749b){return function(_0x440a4d){if(_0x440a4d){return _0x440a4d['destroy']()[_0xc341('0x28')](function(){_0x5a4912[_0xc341('0x1b')](0xcc)[_0xc341('0x1c')]();});}};}function handleEntityNotFound(_0x36b60e,_0x118742){return function(_0x56831d){if(!_0x56831d){_0x36b60e[_0xc341('0x1a')](0x194);}return _0x56831d;};}function handleError(_0x3cd7ba,_0x258378){_0x258378=_0x258378||0x1f4;return function(_0x349380){logger[_0xc341('0x29')](_0x349380[_0xc341('0x2a')]);if(_0x349380[_0xc341('0x2b')]){delete _0x349380['name'];}_0x3cd7ba[_0xc341('0x1b')](_0x258378)[_0xc341('0x2c')](_0x349380);};}exports[_0xc341('0x2d')]=function(_0x469dd4,_0x3914a9){var _0x31ef05={},_0x192611={},_0x430896={'count':0x0,'rows':[]};var _0xb810ae=_['map'](db[_0xc341('0x2e')][_0xc341('0x2f')],function(_0x2bf5fd){return{'name':_0x2bf5fd[_0xc341('0x30')],'type':_0x2bf5fd[_0xc341('0x31')][_0xc341('0x32')]};});_0x192611[_0xc341('0x33')]=_[_0xc341('0x34')](_0xb810ae,_0xc341('0x2b'));_0x192611[_0xc341('0x35')]=_[_0xc341('0x36')](_0x469dd4['query']);_0x192611['filters']=_[_0xc341('0x37')](_0x192611['model'],_0x192611[_0xc341('0x35')]);_0x31ef05[_0xc341('0x38')]=_[_0xc341('0x37')](_0x192611[_0xc341('0x33')],qs[_0xc341('0x39')](_0x469dd4[_0xc341('0x35')][_0xc341('0x39')]));_0x31ef05[_0xc341('0x38')]=_0x31ef05[_0xc341('0x38')]['length']?_0x31ef05[_0xc341('0x38')]:_0x192611[_0xc341('0x33')];if(!_0x469dd4[_0xc341('0x35')][_0xc341('0x3a')](_0xc341('0x3b'))){_0x31ef05['limit']=qs['limit'](_0x469dd4['query'][_0xc341('0x20')]);_0x31ef05[_0xc341('0x1e')]=qs[_0xc341('0x1e')](_0x469dd4[_0xc341('0x35')]['offset']);}_0x31ef05['order']=qs[_0xc341('0x3c')](_0x469dd4[_0xc341('0x35')][_0xc341('0x3c')]);_0x31ef05[_0xc341('0x3d')]=qs['filters'](_[_0xc341('0x3e')](_0x469dd4[_0xc341('0x35')],_0x192611['filters']),_0xb810ae);if(_0x469dd4[_0xc341('0x35')]['filter']){_0x31ef05[_0xc341('0x3d')]=_[_0xc341('0x3f')](_0x31ef05[_0xc341('0x3d')],{'$or':_[_0xc341('0x34')](_0xb810ae,function(_0x13a49b){if(_0x13a49b[_0xc341('0x31')]!==_0xc341('0x40')){var _0x28a962={};_0x28a962[_0x13a49b[_0xc341('0x2b')]]={'$like':'%'+_0x469dd4[_0xc341('0x35')][_0xc341('0x41')]+'%'};return _0x28a962;}})});}_0x31ef05=_[_0xc341('0x3f')]({},_0x31ef05,_0x469dd4['options']);var _0x28e320={'where':_0x31ef05[_0xc341('0x3d')]};return db[_0xc341('0x2e')][_0xc341('0x21')](_0x28e320)[_0xc341('0x28')](function(_0x3af022){_0x430896[_0xc341('0x21')]=_0x3af022;if(_0x469dd4[_0xc341('0x35')][_0xc341('0x42')]){_0x31ef05[_0xc341('0x43')]=[{'all':!![]}];}return db[_0xc341('0x2e')][_0xc341('0x44')](_0x31ef05);})[_0xc341('0x28')](function(_0x5edcd2){_0x430896['rows']=_0x5edcd2;return _0x430896;})[_0xc341('0x28')](respondWithFilteredResult(_0x3914a9,_0x31ef05))[_0xc341('0x45')](handleError(_0x3914a9,null));};exports['show']=function(_0x20d7ff,_0x358421){var _0x1a1260={'raw':!![],'where':{'id':_0x20d7ff[_0xc341('0x46')]['id']}},_0x53a74a={};_0x53a74a['model']=_[_0xc341('0x36')](db[_0xc341('0x2e')][_0xc341('0x2f')]);_0x53a74a[_0xc341('0x35')]=_[_0xc341('0x36')](_0x20d7ff[_0xc341('0x35')]);_0x53a74a['filters']=_[_0xc341('0x37')](_0x53a74a[_0xc341('0x33')],_0x53a74a[_0xc341('0x35')]);_0x1a1260['attributes']=_[_0xc341('0x37')](_0x53a74a['model'],qs[_0xc341('0x39')](_0x20d7ff[_0xc341('0x35')][_0xc341('0x39')]));_0x1a1260[_0xc341('0x38')]=_0x1a1260[_0xc341('0x38')]['length']?_0x1a1260[_0xc341('0x38')]:_0x53a74a['model'];if(_0x20d7ff['query'][_0xc341('0x42')]){_0x1a1260[_0xc341('0x43')]=[{'all':!![]}];}_0x1a1260=_['merge']({},_0x1a1260,_0x20d7ff['options']);return db['WhatsappApplication']['find'](_0x1a1260)[_0xc341('0x28')](handleEntityNotFound(_0x358421,null))[_0xc341('0x28')](respondWithResult(_0x358421,null))['catch'](handleError(_0x358421,null));};exports['create']=function(_0x44d271,_0x500137){return db[_0xc341('0x2e')][_0xc341('0x47')](_0x44d271[_0xc341('0x48')],{})[_0xc341('0x28')](respondWithResult(_0x500137,0xc9))[_0xc341('0x45')](handleError(_0x500137,null));};exports[_0xc341('0x27')]=function(_0x436403,_0x41194b){if(_0x436403[_0xc341('0x48')]['id']){delete _0x436403[_0xc341('0x48')]['id'];}return db[_0xc341('0x2e')][_0xc341('0x49')]({'where':{'id':_0x436403[_0xc341('0x46')]['id']}})[_0xc341('0x28')](handleEntityNotFound(_0x41194b,null))[_0xc341('0x28')](saveUpdates(_0x436403[_0xc341('0x48')],null))[_0xc341('0x28')](respondWithResult(_0x41194b,null))[_0xc341('0x45')](handleError(_0x41194b,null));};exports[_0xc341('0x4a')]=function(_0x427402,_0x2940ba){return db['WhatsappApplication'][_0xc341('0x49')]({'where':{'id':_0x427402[_0xc341('0x46')]['id']}})[_0xc341('0x28')](handleEntityNotFound(_0x2940ba,null))[_0xc341('0x28')](removeEntity(_0x2940ba,null))[_0xc341('0x45')](handleError(_0x2940ba,null));};
\ No newline at end of file
+var _0x17a7=['crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','offset','limit','count','json','apply','reject','save','update','then','destroy','end','sendStatus','stack','name','send','index','WhatsappApplication','rawAttributes','type','key','map','query','keys','filters','attributes','model','fields','length','hasOwnProperty','nolimit','where','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','intersection','create','body','find','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','fs-extra','lodash','squel'];(function(_0x309504,_0x50286e){var _0x41ff1e=function(_0x5e92e1){while(--_0x5e92e1){_0x309504['push'](_0x309504['shift']());}};_0x41ff1e(++_0x50286e);}(_0x17a7,0xc2));var _0x717a=function(_0x6324,_0x5e8def){_0x6324=_0x6324-0x0;var _0x461899=_0x17a7[_0x6324];return _0x461899;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x717a('0x0'));var rp=require(_0x717a('0x1'));var moment=require(_0x717a('0x2'));var BPromise=require(_0x717a('0x3'));var Mustache=require('mustache');var util=require(_0x717a('0x4'));var path=require('path');var sox=require(_0x717a('0x5'));var csv=require(_0x717a('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x717a('0x7'));var _=require(_0x717a('0x8'));var squel=require(_0x717a('0x9'));var crypto=require(_0x717a('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x717a('0xb'));var toCsv=require('to-csv');var querystring=require(_0x717a('0xc'));var Papa=require('papaparse');var Redis=require(_0x717a('0xd'));var authService=require(_0x717a('0xe'));var qs=require(_0x717a('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x717a('0x10'))(_0x717a('0x11'));var utils=require(_0x717a('0x12'));var config=require(_0x717a('0x13'));var licenseUtil=require(_0x717a('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x45eb68,_0x588baf){_0x588baf=_0x588baf||0xcc;return function(_0x2e2e95){if(_0x2e2e95){return _0x45eb68['sendStatus'](_0x588baf);}return _0x45eb68['status'](_0x588baf)['end']();};}function respondWithResult(_0x4a11bb,_0x295862){_0x295862=_0x295862||0xc8;return function(_0x546495){if(_0x546495){return _0x4a11bb[_0x717a('0x15')](_0x295862)['json'](_0x546495);}};}function respondWithFilteredResult(_0x1eca09,_0x58e33a){return function(_0xb85066){if(_0xb85066){var _0x6ae1be=typeof _0x58e33a[_0x717a('0x16')]==='undefined'&&typeof _0x58e33a[_0x717a('0x17')]==='undefined';var _0x130cb2=_0xb85066[_0x717a('0x18')];var _0x152e10=_0x6ae1be?0x0:_0x58e33a[_0x717a('0x16')];var _0x45dc38=_0x6ae1be?_0xb85066[_0x717a('0x18')]:_0x58e33a[_0x717a('0x16')]+_0x58e33a[_0x717a('0x17')];var _0x1e798f;if(_0x45dc38>=_0x130cb2){_0x45dc38=_0x130cb2;_0x1e798f=0xc8;}else{_0x1e798f=0xce;}_0x1eca09[_0x717a('0x15')](_0x1e798f);return _0x1eca09['set']('Content-Range',_0x152e10+'-'+_0x45dc38+'/'+_0x130cb2)[_0x717a('0x19')](_0xb85066);}return null;};}function patchUpdates(_0x1d7ebd){return function(_0x3ac808){try{jsonpatch[_0x717a('0x1a')](_0x3ac808,_0x1d7ebd,!![]);}catch(_0x2ef0e9){return BPromise[_0x717a('0x1b')](_0x2ef0e9);}return _0x3ac808[_0x717a('0x1c')]();};}function saveUpdates(_0x50847f,_0x4e95dc){return function(_0x3fc2be){if(_0x3fc2be){return _0x3fc2be[_0x717a('0x1d')](_0x50847f)[_0x717a('0x1e')](function(_0x33947c){return _0x33947c;});}return null;};}function removeEntity(_0x29a64c,_0x594e9c){return function(_0x345d54){if(_0x345d54){return _0x345d54[_0x717a('0x1f')]()[_0x717a('0x1e')](function(){_0x29a64c['status'](0xcc)[_0x717a('0x20')]();});}};}function handleEntityNotFound(_0x36a145,_0x5e394f){return function(_0x3f443a){if(!_0x3f443a){_0x36a145[_0x717a('0x21')](0x194);}return _0x3f443a;};}function handleError(_0x3eb06d,_0x16fbce){_0x16fbce=_0x16fbce||0x1f4;return function(_0x2c0cb3){logger['error'](_0x2c0cb3[_0x717a('0x22')]);if(_0x2c0cb3[_0x717a('0x23')]){delete _0x2c0cb3[_0x717a('0x23')];}_0x3eb06d[_0x717a('0x15')](_0x16fbce)[_0x717a('0x24')](_0x2c0cb3);};}exports[_0x717a('0x25')]=function(_0x40f3ac,_0x5dccb8){var _0x3621dc={},_0x292cfe={},_0xc189b={'count':0x0,'rows':[]};var _0x47e24b=_['map'](db[_0x717a('0x26')][_0x717a('0x27')],function(_0x97d7a1){return{'name':_0x97d7a1['fieldName'],'type':_0x97d7a1[_0x717a('0x28')][_0x717a('0x29')]};});_0x292cfe['model']=_[_0x717a('0x2a')](_0x47e24b,'name');_0x292cfe[_0x717a('0x2b')]=_[_0x717a('0x2c')](_0x40f3ac[_0x717a('0x2b')]);_0x292cfe[_0x717a('0x2d')]=_['intersection'](_0x292cfe['model'],_0x292cfe['query']);_0x3621dc[_0x717a('0x2e')]=_['intersection'](_0x292cfe[_0x717a('0x2f')],qs[_0x717a('0x30')](_0x40f3ac[_0x717a('0x2b')][_0x717a('0x30')]));_0x3621dc['attributes']=_0x3621dc['attributes'][_0x717a('0x31')]?_0x3621dc[_0x717a('0x2e')]:_0x292cfe['model'];if(!_0x40f3ac[_0x717a('0x2b')][_0x717a('0x32')](_0x717a('0x33'))){_0x3621dc[_0x717a('0x17')]=qs['limit'](_0x40f3ac[_0x717a('0x2b')][_0x717a('0x17')]);_0x3621dc[_0x717a('0x16')]=qs[_0x717a('0x16')](_0x40f3ac['query'][_0x717a('0x16')]);}_0x3621dc['order']=qs['sort'](_0x40f3ac['query']['sort']);_0x3621dc[_0x717a('0x34')]=qs[_0x717a('0x2d')](_['pick'](_0x40f3ac['query'],_0x292cfe['filters']),_0x47e24b);if(_0x40f3ac[_0x717a('0x2b')][_0x717a('0x35')]){_0x3621dc[_0x717a('0x34')]=_['merge'](_0x3621dc[_0x717a('0x34')],{'$or':_['map'](_0x47e24b,function(_0x5c2e80){if(_0x5c2e80[_0x717a('0x28')]!==_0x717a('0x36')){var _0x176d5f={};_0x176d5f[_0x5c2e80[_0x717a('0x23')]]={'$like':'%'+_0x40f3ac[_0x717a('0x2b')][_0x717a('0x35')]+'%'};return _0x176d5f;}})});}_0x3621dc=_[_0x717a('0x37')]({},_0x3621dc,_0x40f3ac[_0x717a('0x38')]);var _0x30ff72={'where':_0x3621dc['where']};return db[_0x717a('0x26')][_0x717a('0x18')](_0x30ff72)[_0x717a('0x1e')](function(_0x879271){_0xc189b['count']=_0x879271;if(_0x40f3ac['query'][_0x717a('0x39')]){_0x3621dc[_0x717a('0x3a')]=[{'all':!![]}];}return db[_0x717a('0x26')][_0x717a('0x3b')](_0x3621dc);})[_0x717a('0x1e')](function(_0x52b944){_0xc189b[_0x717a('0x3c')]=_0x52b944;return _0xc189b;})['then'](respondWithFilteredResult(_0x5dccb8,_0x3621dc))[_0x717a('0x3d')](handleError(_0x5dccb8,null));};exports[_0x717a('0x3e')]=function(_0x516f31,_0x429e84){var _0x34edd5={'raw':!![],'where':{'id':_0x516f31[_0x717a('0x3f')]['id']}},_0x684c41={};_0x684c41[_0x717a('0x2f')]=_[_0x717a('0x2c')](db[_0x717a('0x26')][_0x717a('0x27')]);_0x684c41[_0x717a('0x2b')]=_[_0x717a('0x2c')](_0x516f31[_0x717a('0x2b')]);_0x684c41[_0x717a('0x2d')]=_[_0x717a('0x40')](_0x684c41['model'],_0x684c41['query']);_0x34edd5[_0x717a('0x2e')]=_[_0x717a('0x40')](_0x684c41[_0x717a('0x2f')],qs[_0x717a('0x30')](_0x516f31[_0x717a('0x2b')][_0x717a('0x30')]));_0x34edd5[_0x717a('0x2e')]=_0x34edd5[_0x717a('0x2e')][_0x717a('0x31')]?_0x34edd5[_0x717a('0x2e')]:_0x684c41[_0x717a('0x2f')];if(_0x516f31[_0x717a('0x2b')][_0x717a('0x39')]){_0x34edd5[_0x717a('0x3a')]=[{'all':!![]}];}_0x34edd5=_[_0x717a('0x37')]({},_0x34edd5,_0x516f31['options']);return db[_0x717a('0x26')]['find'](_0x34edd5)[_0x717a('0x1e')](handleEntityNotFound(_0x429e84,null))['then'](respondWithResult(_0x429e84,null))[_0x717a('0x3d')](handleError(_0x429e84,null));};exports[_0x717a('0x41')]=function(_0x17859e,_0x4698c4){return db[_0x717a('0x26')][_0x717a('0x41')](_0x17859e[_0x717a('0x42')],{})[_0x717a('0x1e')](respondWithResult(_0x4698c4,0xc9))[_0x717a('0x3d')](handleError(_0x4698c4,null));};exports[_0x717a('0x1d')]=function(_0x3914f4,_0x20c865){if(_0x3914f4[_0x717a('0x42')]['id']){delete _0x3914f4[_0x717a('0x42')]['id'];}return db['WhatsappApplication'][_0x717a('0x43')]({'where':{'id':_0x3914f4['params']['id']}})[_0x717a('0x1e')](handleEntityNotFound(_0x20c865,null))[_0x717a('0x1e')](saveUpdates(_0x3914f4[_0x717a('0x42')],null))[_0x717a('0x1e')](respondWithResult(_0x20c865,null))[_0x717a('0x3d')](handleError(_0x20c865,null));};exports[_0x717a('0x1f')]=function(_0x2e07eb,_0x1910ff){return db[_0x717a('0x26')][_0x717a('0x43')]({'where':{'id':_0x2e07eb['params']['id']}})[_0x717a('0x1e')](handleEntityNotFound(_0x1910ff,null))[_0x717a('0x1e')](removeEntity(_0x1910ff,null))[_0x717a('0x3d')](handleError(_0x1910ff,null));};
\ No newline at end of file
index 6ddeca7..0b75923 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b19=['define','utf8mb4','lodash','util','api','request-promise','path','rimraf','../../config/environment','./whatsappApplication.attributes'];(function(_0x10857f,_0x3cd931){var _0x543437=function(_0x5d24a3){while(--_0x5d24a3){_0x10857f['push'](_0x10857f['shift']());}};_0x543437(++_0x3cd931);}(_0x6b19,0xe8));var _0x96b1=function(_0x674de8,_0x2bdefc){_0x674de8=_0x674de8-0x0;var _0x14f9ad=_0x6b19[_0x674de8];return _0x14f9ad;};'use strict';var _=require(_0x96b1('0x0'));var util=require(_0x96b1('0x1'));var logger=require('../../config/logger')(_0x96b1('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x96b1('0x3'));var fs=require('fs');var path=require(_0x96b1('0x4'));var rimraf=require(_0x96b1('0x5'));var config=require(_0x96b1('0x6'));var attributes=require(_0x96b1('0x7'));module['exports']=function(_0x8b5ab8,_0x546193){return _0x8b5ab8[_0x96b1('0x8')]('WhatsappApplication',attributes,{'tableName':'whatsapp_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x96b1('0x9'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xae1c=['WhatsappApplication','whatsapp_applications','moment','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappApplication.attributes','exports','define'];(function(_0x218e9c,_0x3982e5){var _0x3b3ea4=function(_0xa13c0b){while(--_0xa13c0b){_0x218e9c['push'](_0x218e9c['shift']());}};_0x3b3ea4(++_0x3982e5);}(_0xae1c,0xff));var _0xcae1=function(_0x1e9341,_0x53ff67){_0x1e9341=_0x1e9341-0x0;var _0x344f8c=_0xae1c[_0x1e9341];return _0x344f8c;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xcae1('0x0'));var BPromise=require(_0xcae1('0x1'));var rp=require(_0xcae1('0x2'));var fs=require('fs');var path=require(_0xcae1('0x3'));var rimraf=require(_0xcae1('0x4'));var config=require(_0xcae1('0x5'));var attributes=require(_0xcae1('0x6'));module[_0xcae1('0x7')]=function(_0x3513e5,_0x40fcec){return _0x3513e5[_0xcae1('0x8')](_0xcae1('0x9'),attributes,{'tableName':_0xcae1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 04031b1..abb490f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb458=['WhatsappApplication,\x20%s,\x20%s,\x20%s','code','error','message','request\x20sent','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','request','then','info','WhatsappApplication,\x20%s,\x20%s','debug'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0xb458,0x103));var _0x8b45=function(_0x1b7330,_0x2ea8c1){_0x1b7330=_0x1b7330-0x0;var _0x4bdd4e=_0xb458[_0x1b7330];return _0x4bdd4e;};'use strict';var _=require(_0x8b45('0x0'));var util=require(_0x8b45('0x1'));var moment=require(_0x8b45('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8b45('0x3'));var db=require(_0x8b45('0x4'))['db'];var utils=require(_0x8b45('0x5'));var logger=require(_0x8b45('0x6'))('rpc');var config=require(_0x8b45('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8b45('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x12bd05,_0x2daa9a,_0x3a8ccb){return new BPromise(function(_0x32342f,_0x4d1718){return client[_0x8b45('0x9')](_0x12bd05,_0x3a8ccb)[_0x8b45('0xa')](function(_0x33f30e){logger[_0x8b45('0xb')](_0x8b45('0xc'),_0x2daa9a,'request\x20sent');logger[_0x8b45('0xd')](_0x8b45('0xe'),_0x2daa9a,'request\x20sent',JSON['stringify'](_0x33f30e));if(_0x33f30e['error']){if(_0x33f30e['error'][_0x8b45('0xf')]===0x1f4){logger[_0x8b45('0x10')](_0x8b45('0xc'),_0x2daa9a,_0x33f30e['error'][_0x8b45('0x11')]);return _0x4d1718(_0x33f30e[_0x8b45('0x10')][_0x8b45('0x11')]);}logger[_0x8b45('0x10')](_0x8b45('0xc'),_0x2daa9a,_0x33f30e[_0x8b45('0x10')]['message']);return _0x32342f(_0x33f30e['error'][_0x8b45('0x11')]);}else{logger[_0x8b45('0xb')](_0x8b45('0xc'),_0x2daa9a,_0x8b45('0x12'));_0x32342f(_0x33f30e[_0x8b45('0x13')][_0x8b45('0x11')]);}})[_0x8b45('0x14')](function(_0x147d6b){logger[_0x8b45('0x10')](_0x8b45('0xc'),_0x2daa9a,_0x147d6b);_0x4d1718(_0x147d6b);});});}
\ No newline at end of file
+var _0x00bb=['stringify','error','message','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','request','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s'];(function(_0x5e235e,_0x4be335){var _0x34974a=function(_0x42d0f3){while(--_0x42d0f3){_0x5e235e['push'](_0x5e235e['shift']());}};_0x34974a(++_0x4be335);}(_0x00bb,0x1d8));var _0xb00b=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x00bb[_0x2d7f0e];return _0x110b07;};'use strict';var _=require(_0xb00b('0x0'));var util=require(_0xb00b('0x1'));var moment=require(_0xb00b('0x2'));var BPromise=require('bluebird');var rs=require(_0xb00b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb00b('0x4'))['db'];var utils=require(_0xb00b('0x5'));var logger=require('../../config/logger')(_0xb00b('0x6'));var config=require(_0xb00b('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x36e363,_0xf737d0,_0x41dfc9){return new BPromise(function(_0x37f07d,_0xfa4181){return client[_0xb00b('0x8')](_0x36e363,_0x41dfc9)['then'](function(_0x51d12b){logger[_0xb00b('0x9')](_0xb00b('0xa'),_0xf737d0,_0xb00b('0xb'));logger[_0xb00b('0xc')](_0xb00b('0xd'),_0xf737d0,'request\x20sent',JSON[_0xb00b('0xe')](_0x51d12b));if(_0x51d12b['error']){if(_0x51d12b['error']['code']===0x1f4){logger[_0xb00b('0xf')](_0xb00b('0xa'),_0xf737d0,_0x51d12b[_0xb00b('0xf')][_0xb00b('0x10')]);return _0xfa4181(_0x51d12b[_0xb00b('0xf')][_0xb00b('0x10')]);}logger['error'](_0xb00b('0xa'),_0xf737d0,_0x51d12b[_0xb00b('0xf')]['message']);return _0x37f07d(_0x51d12b[_0xb00b('0xf')][_0xb00b('0x10')]);}else{logger['info']('WhatsappApplication,\x20%s,\x20%s',_0xf737d0,_0xb00b('0xb'));_0x37f07d(_0x51d12b['result']['message']);}})[_0xb00b('0x11')](function(_0x638443){logger[_0xb00b('0xf')](_0xb00b('0xa'),_0xf737d0,_0x638443);_0xfa4181(_0x638443);});});}
\ No newline at end of file
index e2afbf3..bf780df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90b1=['index','get','/describe','isAuthenticated','describe','/:id','show','/:id/messages','getMessages','/:id/download','post','addMessage','/:id/tags','tracked','whatsapp','whatsappinteraction:addtags','addTags','put','whatsappinteraction:update','delete','whatsappinteraction:destroy','removeTags','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x1fa007,_0x5d3503){var _0x24a0c2=function(_0x261ea0){while(--_0x261ea0){_0x1fa007['push'](_0x1fa007['shift']());}};_0x24a0c2(++_0x5d3503);}(_0x90b1,0x1bb));var _0x190b=function(_0x5846b4,_0x2a47f9){_0x5846b4=_0x5846b4-0x0;var _0x49a222=_0x90b1[_0x5846b4];return _0x49a222;};'use strict';var multer=require(_0x190b('0x0'));var util=require(_0x190b('0x1'));var path=require(_0x190b('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x190b('0x3')]();var fs_extra=require(_0x190b('0x4'));var auth=require(_0x190b('0x5'));var interaction=require(_0x190b('0x6'));var config=require('../../config/environment');var controller=require('./whatsappInteraction.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x190b('0x7')]);router[_0x190b('0x8')](_0x190b('0x9'),auth[_0x190b('0xa')](),controller[_0x190b('0xb')]);router[_0x190b('0x8')](_0x190b('0xc'),auth['isAuthenticated'](),controller[_0x190b('0xd')]);router[_0x190b('0x8')](_0x190b('0xe'),auth[_0x190b('0xa')](),controller[_0x190b('0xf')]);router[_0x190b('0x8')](_0x190b('0x10'),auth[_0x190b('0xa')](),controller['download']);router[_0x190b('0x11')]('/',auth[_0x190b('0xa')](),controller['create']);router[_0x190b('0x11')](_0x190b('0xe'),auth[_0x190b('0xa')](),controller[_0x190b('0x12')]);router[_0x190b('0x11')](_0x190b('0x13'),auth[_0x190b('0xa')](),interaction[_0x190b('0x14')](_0x190b('0x15'),_0x190b('0x16')),controller[_0x190b('0x17')]);router[_0x190b('0x18')](_0x190b('0xc'),auth[_0x190b('0xa')](),interaction[_0x190b('0x14')](_0x190b('0x15'),_0x190b('0x19')),controller['update']);router[_0x190b('0x1a')]('/:id',auth[_0x190b('0xa')](),interaction[_0x190b('0x14')](_0x190b('0x15'),_0x190b('0x1b')),controller['destroy']);router[_0x190b('0x1a')](_0x190b('0x13'),auth[_0x190b('0xa')](),controller[_0x190b('0x1c')]);module[_0x190b('0x1d')]=router;
\ No newline at end of file
+var _0x2bd8=['delete','whatsappinteraction:destroy','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappInteraction.controller','get','isAuthenticated','/describe','describe','/:id','/:id/messages','download','post','create','addMessage','/:id/tags','whatsapp','whatsappinteraction:addtags','put','tracked','whatsappinteraction:update','update'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x2bd8,0x130));var _0x82bd=function(_0x47bffd,_0xbf560a){_0x47bffd=_0x47bffd-0x0;var _0x226e7b=_0x2bd8[_0x47bffd];return _0x226e7b;};'use strict';var multer=require(_0x82bd('0x0'));var util=require('util');var path=require(_0x82bd('0x1'));var timeout=require(_0x82bd('0x2'));var express=require(_0x82bd('0x3'));var router=express[_0x82bd('0x4')]();var fs_extra=require(_0x82bd('0x5'));var auth=require(_0x82bd('0x6'));var interaction=require(_0x82bd('0x7'));var config=require('../../config/environment');var controller=require(_0x82bd('0x8'));router[_0x82bd('0x9')]('/',auth[_0x82bd('0xa')](),controller['index']);router[_0x82bd('0x9')](_0x82bd('0xb'),auth[_0x82bd('0xa')](),controller[_0x82bd('0xc')]);router['get'](_0x82bd('0xd'),auth['isAuthenticated'](),controller['show']);router['get'](_0x82bd('0xe'),auth['isAuthenticated'](),controller['getMessages']);router[_0x82bd('0x9')]('/:id/download',auth['isAuthenticated'](),controller[_0x82bd('0xf')]);router[_0x82bd('0x10')]('/',auth['isAuthenticated'](),controller[_0x82bd('0x11')]);router['post'](_0x82bd('0xe'),auth['isAuthenticated'](),controller[_0x82bd('0x12')]);router[_0x82bd('0x10')](_0x82bd('0x13'),auth[_0x82bd('0xa')](),interaction['tracked'](_0x82bd('0x14'),_0x82bd('0x15')),controller['addTags']);router[_0x82bd('0x16')]('/:id',auth[_0x82bd('0xa')](),interaction[_0x82bd('0x17')](_0x82bd('0x14'),_0x82bd('0x18')),controller[_0x82bd('0x19')]);router[_0x82bd('0x1a')](_0x82bd('0xd'),auth[_0x82bd('0xa')](),interaction[_0x82bd('0x17')](_0x82bd('0x14'),_0x82bd('0x1b')),controller[_0x82bd('0x1c')]);router[_0x82bd('0x1a')](_0x82bd('0x13'),auth['isAuthenticated'](),controller['removeTags']);module[_0x82bd('0x1d')]=router;
\ No newline at end of file
index 4263db9..c25a2ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc03e=['STRING','DATE','ENUM','out','sequelize','BOOLEAN'];(function(_0x21a1fb,_0xb5129e){var _0xe70efd=function(_0x447b7c){while(--_0x447b7c){_0x21a1fb['push'](_0x21a1fb['shift']());}};_0xe70efd(++_0xb5129e);}(_0xc03e,0x15a));var _0xec03=function(_0x2d3d0d,_0x67ac82){_0x2d3d0d=_0x2d3d0d-0x0;var _0xca35b6=_0xc03e[_0x2d3d0d];return _0xca35b6;};'use strict';var Sequelize=require(_0xec03('0x0'));var moment=require('moment');module['exports']={'closed':{'type':Sequelize[_0xec03('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xec03('0x2')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xec03('0x2')]},'note':{'type':Sequelize[_0xec03('0x2')]},'phone':{'type':Sequelize[_0xec03('0x2')]},'read1stAt':{'type':Sequelize[_0xec03('0x3')]},'firstMsgDirection':{'type':Sequelize[_0xec03('0x4')]('in',_0xec03('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xec03('0x3')]},'lastMsgDirection':{'type':Sequelize[_0xec03('0x4')]('in',_0xec03('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x88d5=['exports','BOOLEAN','DATE','STRING','ENUM','out','sequelize','moment'];(function(_0x2b846e,_0x31515f){var _0x32d19f=function(_0xc2e7dd){while(--_0xc2e7dd){_0x2b846e['push'](_0x2b846e['shift']());}};_0x32d19f(++_0x31515f);}(_0x88d5,0x76));var _0x588d=function(_0x36bc58,_0x27f03c){_0x36bc58=_0x36bc58-0x0;var _0x4a547e=_0x88d5[_0x36bc58];return _0x4a547e;};'use strict';var Sequelize=require(_0x588d('0x0'));var moment=require(_0x588d('0x1'));module[_0x588d('0x2')]={'closed':{'type':Sequelize[_0x588d('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x588d('0x4')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x588d('0x5')]},'thirdDisposition':{'type':Sequelize[_0x588d('0x5')]},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x588d('0x5')]},'read1stAt':{'type':Sequelize[_0x588d('0x4')]},'firstMsgDirection':{'type':Sequelize[_0x588d('0x6')]('in',_0x588d('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x588d('0x4')]},'lastMsgDirection':{'type':Sequelize[_0x588d('0x6')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index b674e95..37c876f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa25a=['UserId','body','some','compact','isEmpty','WhatsappAccountId','where','i.WhatsappAccountId\x20IN\x20?','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','replace','isNumeric','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','Sequelize','QueryTypes','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','t.id\x20IN\x20?','resolve','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','role','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','agent','sequelize','toString','merge','a.key','Account.key','a.mandatoryDisposition','i.*','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.mobile','c.fax','Contact.fax','o.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','WhatsappInteractionId','push','all','show','include','options','create','update','describe','addMessage','WhatsappMessage','params','ids','omit','getMessages','findOne','nolimit','filter','$gte','format','findAll','rows','addTags','spread','color','emit','whatsappInteractionTags:save','removeTags','download','unix','join','server','files','tmp','root','attachments','transcript-%d-%s.zip','firstName','lastName','Attachment','Messages','createdAt','direction','secret','WhatsappAccount','Account','get','Whatsapp','Owner','N.A.','YYYY-MM-DD\x20HH:mm:ss','basename','existsSync','createReadStream','pipe','createWriteStream','out','System','renderFile','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','lodash','squel','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/logger','api','../../config/environment','redis','defaults','localhost','register','sendStatus','end','status','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','map','fullname','Tags','TagIds','split','forEach','catch','index','WhatsappInteraction','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','pick','select','field','from','u.id','u.fullname','ui.WhatsappInteractionId','user_has_whatsapp_interactions','left_join','u.id\x20=\x20ui.UserId','cm_contacts','o.id\x20=\x20i.UserId','whatsapp_accounts','a.id\x20=\x20i.WhatsappAccountId','whatsapp_messages','me.WhatsappInteractionId\x20=\x20i.id','whatsapp_interaction_has_tags','tools_tags','expr','search','parseSearch','sqlOperator','conditions','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','find'];(function(_0x188703,_0x596b26){var _0x1a0c81=function(_0x1cd22d){while(--_0x1cd22d){_0x188703['push'](_0x188703['shift']());}};_0x1a0c81(++_0x596b26);}(_0xa25a,0x160));var _0xaa25=function(_0xcb8474,_0x36a0fe){_0xcb8474=_0xcb8474-0x0;var _0x212304=_0xa25a[_0xcb8474];return _0x212304;};'use strict';var emlformat=require(_0xaa25('0x0'));var rimraf=require(_0xaa25('0x1'));var zipdir=require(_0xaa25('0x2'));var jsonpatch=require(_0xaa25('0x3'));var rp=require(_0xaa25('0x4'));var moment=require(_0xaa25('0x5'));var BPromise=require(_0xaa25('0x6'));var Mustache=require(_0xaa25('0x7'));var util=require(_0xaa25('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0xaa25('0x9'));var ejs=require(_0xaa25('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xaa25('0xb'));var squel=require(_0xaa25('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xaa25('0xd'));var toCsv=require(_0xaa25('0x9'));var querystring=require('querystring');var Papa=require(_0xaa25('0xe'));var Redis=require('ioredis');var authService=require(_0xaa25('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xaa25('0x10'));var pdf=require(_0xaa25('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xaa25('0x12'))(_0xaa25('0x13'));var utils=require('../../config/utils');var config=require(_0xaa25('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xaa25('0x15')]=_[_0xaa25('0x16')](config['redis'],{'host':_0xaa25('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xaa25('0x15')]));require('./whatsappInteraction.socket')[_0xaa25('0x18')](socket);function respondWithStatusCode(_0x47b953,_0x3ae3ab){_0x3ae3ab=_0x3ae3ab||0xcc;return function(_0x452084){if(_0x452084){return _0x47b953[_0xaa25('0x19')](_0x3ae3ab);}return _0x47b953['status'](_0x3ae3ab)[_0xaa25('0x1a')]();};}function respondWithResult(_0x18aad4,_0x9df15f){_0x9df15f=_0x9df15f||0xc8;return function(_0x475436){if(_0x475436){return _0x18aad4[_0xaa25('0x1b')](_0x9df15f)[_0xaa25('0x1c')](_0x475436);}};}function respondWithFilteredResult(_0x896a57,_0x40eac5){return function(_0x4d72d8){if(_0x4d72d8){var _0x4dd7f8=typeof _0x40eac5['offset']===_0xaa25('0x1d')&&typeof _0x40eac5['limit']==='undefined';var _0x5717dd=_0x4d72d8[_0xaa25('0x1e')];var _0x469947=_0x4dd7f8?0x0:_0x40eac5[_0xaa25('0x1f')];var _0x6b1964=_0x4dd7f8?_0x4d72d8[_0xaa25('0x1e')]:_0x40eac5['offset']+_0x40eac5[_0xaa25('0x20')];var _0x30e60e;if(_0x6b1964>=_0x5717dd){_0x6b1964=_0x5717dd;_0x30e60e=0xc8;}else{_0x30e60e=0xce;}_0x896a57[_0xaa25('0x1b')](_0x30e60e);return _0x896a57[_0xaa25('0x21')](_0xaa25('0x22'),_0x469947+'-'+_0x6b1964+'/'+_0x5717dd)['json'](_0x4d72d8);}return null;};}function patchUpdates(_0x445aa5){return function(_0x28dbbf){try{jsonpatch[_0xaa25('0x23')](_0x28dbbf,_0x445aa5,!![]);}catch(_0xcf1316){return BPromise[_0xaa25('0x24')](_0xcf1316);}return _0x28dbbf[_0xaa25('0x25')]();};}function saveUpdates(_0x143a5c,_0x5cd5f1){return function(_0xbdfabc){if(_0xbdfabc){return _0xbdfabc['update'](_0x143a5c)[_0xaa25('0x26')](function(_0x630afe){return _0x630afe;});}return null;};}function removeEntity(_0x51a974,_0x4d3863){return function(_0x430d0a){if(_0x430d0a){return _0x430d0a[_0xaa25('0x27')]()[_0xaa25('0x26')](function(){_0x51a974[_0xaa25('0x1b')](0xcc)[_0xaa25('0x1a')]();});}};}function handleEntityNotFound(_0x171c24,_0x27ff13){return function(_0x280856){if(!_0x280856){_0x171c24[_0xaa25('0x19')](0x194);}return _0x280856;};}function handleError(_0x8eb714,_0x1dcb09){_0x1dcb09=_0x1dcb09||0x1f4;return function(_0x146e28){logger[_0xaa25('0x28')](_0x146e28[_0xaa25('0x29')]);if(_0x146e28[_0xaa25('0x2a')]){delete _0x146e28[_0xaa25('0x2a')];}_0x8eb714[_0xaa25('0x1b')](_0x1dcb09)[_0xaa25('0x2b')](_0x146e28);};}function getInteractionUsers(_0x43f129,_0x681671){return new BPromise(function(_0xe7ed55,_0x4c7904){try{if(_0x681671[_0x43f129['id']]){_0x43f129['Users']=_[_0xaa25('0x2c')](_0x681671[_0x43f129['id']],function(_0x210b22){return{'id':_0x210b22['id'],'fullname':_0x210b22[_0xaa25('0x2d')]};});}}catch(_0x220bb6){_0x4c7904(_0x220bb6);}_0xe7ed55(_0x43f129);});}function getInteractionTags(_0x3ace3b,_0xe45ef6){return new BPromise(function(_0x1bbbe7,_0x5c7209){try{if(_0x3ace3b['TagIds']){_0x3ace3b[_0xaa25('0x2e')]=[];_0x3ace3b[_0xaa25('0x2f')][_0xaa25('0x30')](',')[_0xaa25('0x31')](function(_0x258cb9){_0x3ace3b[_0xaa25('0x2e')]['push'](_0xe45ef6[_0x258cb9]);});}delete _0x3ace3b[_0xaa25('0x2f')];}catch(_0x31cdf6){_0x5c7209(_0x31cdf6);}_0x1bbbe7(_0x3ace3b);});}function updateWhatsappInteraction(_0xcc157e,_0x49b733,_0x549ce4){return new BPromise(function(_0x5c80c7,_0x4c10db){return getInteractionUsers(_0xcc157e,_0x549ce4)[_0xaa25('0x26')](function(_0x4758d1){return getInteractionTags(_0x4758d1,_0x49b733);})[_0xaa25('0x26')](function(_0x625c24){_0x5c80c7(_0x625c24);})[_0xaa25('0x32')](function(_0x98ba31){_0x4c10db(_0x98ba31);});});}exports[_0xaa25('0x33')]=function(_0x1eba53,_0x481f70){var _0x301b0f={},_0x2579eb={},_0xe7503c={'count':0x0,'rows':[]};var _0xaff2ed=_[_0xaa25('0x2c')](db[_0xaa25('0x34')][_0xaa25('0x35')],function(_0x4e8e8c){return{'name':_0x4e8e8c['fieldName'],'type':_0x4e8e8c[_0xaa25('0x36')][_0xaa25('0x37')]};});_0x2579eb[_0xaa25('0x38')]=_[_0xaa25('0x2c')](_0xaff2ed,'name');_0x2579eb[_0xaa25('0x39')]=_[_0xaa25('0x3a')](_0x1eba53[_0xaa25('0x39')]);_0x2579eb[_0xaa25('0x3b')]=_['intersection'](_0x2579eb[_0xaa25('0x38')],_0x2579eb[_0xaa25('0x39')]);_0x301b0f[_0xaa25('0x3c')]=_[_0xaa25('0x3d')](_0x2579eb[_0xaa25('0x38')],qs[_0xaa25('0x3e')](_0x1eba53[_0xaa25('0x39')]['fields']));_0x301b0f[_0xaa25('0x3c')]=_0x301b0f[_0xaa25('0x3c')][_0xaa25('0x3f')]?_0x301b0f['attributes']:_0x2579eb[_0xaa25('0x38')];if(!_0x1eba53['query'][_0xaa25('0x40')]('nolimit')){_0x301b0f['limit']=qs['limit'](_0x1eba53['query'][_0xaa25('0x20')]);_0x301b0f[_0xaa25('0x1f')]=qs[_0xaa25('0x1f')](_0x1eba53[_0xaa25('0x39')][_0xaa25('0x1f')]);}_0x301b0f[_0xaa25('0x41')]=qs[_0xaa25('0x42')](_0x1eba53[_0xaa25('0x39')][_0xaa25('0x42')]);_0x301b0f['where']=qs[_0xaa25('0x3b')](_[_0xaa25('0x43')](_0x1eba53[_0xaa25('0x39')],_0x2579eb['filters']),_0xaff2ed);var _0x554b02=[];var _0x177d6d=squel[_0xaa25('0x44')]()[_0xaa25('0x45')]('id')[_0xaa25('0x45')]('name')['field']('color')[_0xaa25('0x46')]('tools_tags');var _0x57b043=squel[_0xaa25('0x44')]()[_0xaa25('0x45')](_0xaa25('0x47'))[_0xaa25('0x45')](_0xaa25('0x48'))[_0xaa25('0x45')](_0xaa25('0x49'))['from'](_0xaa25('0x4a'),'ui')[_0xaa25('0x4b')]('users','u',_0xaa25('0x4c'));var _0x20a276=squel[_0xaa25('0x44')]()[_0xaa25('0x46')]('whatsapp_interactions','i')['left_join'](_0xaa25('0x4d'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xaa25('0x4b')]('users','o',_0xaa25('0x4e'))['left_join'](_0xaa25('0x4f'),'a',_0xaa25('0x50'))['left_join'](_0xaa25('0x51'),'me',_0xaa25('0x52'))[_0xaa25('0x4b')](_0xaa25('0x53'),'it','it.WhatsappInteractionId\x20=\x20i.id')[_0xaa25('0x4b')](_0xaa25('0x54'),'t','t.id\x20=\x20it.TagId');var _0x2834a6=squel[_0xaa25('0x55')]();var _0xd53b6b=[];var _0x14b6d4=squel[_0xaa25('0x55')]();var _0x181c61;if(_0x1eba53[_0xaa25('0x39')][_0xaa25('0x56')]){_0x181c61=as[_0xaa25('0x57')](_0x1eba53[_0xaa25('0x39')][_0xaa25('0x56')]);var _0x2aaa32=_0x181c61[_0xaa25('0x58')];for(var _0x25ae56=0x0;_0x25ae56<_0x181c61[_0xaa25('0x59')]['length'];_0x25ae56++){var _0x2b24eb=_0x181c61['conditions'][_0x25ae56];var _0x25278a='i';var _0x832eb4=_['find'](_0xaff2ed,['name',_0x2b24eb[_0xaa25('0x45')]]);if(!_0x832eb4){switch(_0x2b24eb[_0xaa25('0x45')]){case _0xaa25('0x5a'):if(_0x2b24eb[_0xaa25('0x5b')]==0x1){_0x20a276[_0xaa25('0x5c')]('`'+_0x2b24eb[_0xaa25('0x45')]+_0xaa25('0x5d'));}else{_0x20a276[_0xaa25('0x5c')]('`'+_0x2b24eb['field']+_0xaa25('0x5e'));}break;case _0xaa25('0x5f'):if(_0x2b24eb[_0xaa25('0x60')]==='$substring'){if(_0x2b24eb[_0xaa25('0x5b')][_0xaa25('0x30')]('\x20')[_0xaa25('0x3f')]>0x1){_0x2834a6[_0x2aaa32](_0xaa25('0x61'),qs[_0xaa25('0x62')](_0x2b24eb[_0xaa25('0x5b')]),null);}else{var _0x166df3='%'+_0x2b24eb['value']+'%';_0x2834a6[_0x2aaa32](_0xaa25('0x63'),_0x166df3,_0x166df3,_0x166df3);}}else{_0x832eb4=_['find'](_0xaff2ed,[_0xaa25('0x2a'),_0xaa25('0x64')]);_0x2b24eb[_0xaa25('0x45')]=_0xaa25('0x64');_0x21075e=as[_0xaa25('0x65')](_0x25278a,_0x832eb4['type'],_0x2b24eb);_0x2834a6[_0x2aaa32](_0x21075e[_0xaa25('0x66')],_0x21075e[_0xaa25('0x5b')][_0xaa25('0x67')],_0x21075e[_0xaa25('0x5b')]['end']);}break;case _0xaa25('0x68'):var _0x48907f=_0x2b24eb[_0xaa25('0x5b')]['split'](',')[_0xaa25('0x2c')](function(_0x1e0c68){return Number(_0x1e0c68);});_0x48907f['forEach'](function(_0x470504){_0x14b6d4['or'](_0xaa25('0x69'),'%,'+_0x470504+',%');});_0xd53b6b=_['union'](_0xd53b6b,_0x48907f);break;case _0xaa25('0x6a'):if(_0x2b24eb['operator']===_0xaa25('0x6b')){_0x2834a6[_0x2aaa32](_0xaa25('0x6c'),'%'+_0x2b24eb[_0xaa25('0x5b')]+'%',null);}else{_0x832eb4=_[_0xaa25('0x6d')](_0xaff2ed,[_0xaa25('0x2a'),_0xaa25('0x6e')]);_0x2b24eb['field']=_0xaa25('0x6e');_0x21075e=as[_0xaa25('0x65')](_0x25278a,_0x832eb4[_0xaa25('0x36')],_0x2b24eb);_0x2834a6[_0x2aaa32](_0x21075e[_0xaa25('0x66')],_0x21075e[_0xaa25('0x5b')][_0xaa25('0x67')],_0x21075e[_0xaa25('0x5b')]['end']);}break;case _0xaa25('0x6f'):_0x21075e=as['buildExpression']('me',null,_0x2b24eb);_0x2834a6[_0x2aaa32](_0x21075e['text'],_0x21075e['value']['start'],_0x21075e[_0xaa25('0x5b')][_0xaa25('0x1a')]);break;}}else{var _0x21075e=as['buildExpression'](_0x25278a,_0x832eb4[_0xaa25('0x36')],_0x2b24eb);_0x2834a6[_0x2aaa32](_0x21075e[_0xaa25('0x66')],_0x21075e['value']['start'],_0x21075e[_0xaa25('0x5b')][_0xaa25('0x1a')]);}}}else{var _0x3f76d6=_(_0x1eba53[_0xaa25('0x39')])[_0xaa25('0x3a')]()['map'](function(_0x3a6cf5){return _[_0xaa25('0x70')](_0xaff2ed,[_0xaa25('0x2a'),_0x3a6cf5])?_0x3a6cf5:undefined;})[_0xaa25('0x71')]()['value']();if(!_[_0xaa25('0x72')](_0x3f76d6)){_0x3f76d6[_0xaa25('0x31')](function(_0x213ef4){if(_0x213ef4===_0xaa25('0x73')){_0x20a276[_0xaa25('0x74')](_0xaa25('0x75'),[]['concat'](_0x1eba53[_0xaa25('0x39')][_0x213ef4]));}else if(_0x213ef4==='createdAt'){var _0x13e099=JSON[_0xaa25('0x76')](_0x1eba53['query'][_0x213ef4])['$gte'];var _0x1239e2=JSON[_0xaa25('0x76')](_0x1eba53[_0xaa25('0x39')][_0x213ef4])[_0xaa25('0x77')];_0x20a276[_0xaa25('0x74')](_0xaa25('0x78'),_0x13e099,_0x1239e2);}else{if(_0x1eba53[_0xaa25('0x39')][_0x213ef4]==='null'){_0x20a276['where']('i.'+_0x213ef4+_0xaa25('0x79'));}else{_0x20a276[_0xaa25('0x74')]('i.'+_0x213ef4+_0xaa25('0x7a'),_0x1eba53[_0xaa25('0x39')][_0x213ef4]);}}});}if(_0x1eba53[_0xaa25('0x39')][_0xaa25('0x7b')]){if(_0x1eba53['query'][_0xaa25('0x7b')]==0x1){_0x20a276[_0xaa25('0x5c')](_0xaa25('0x7c'));}else{_0x20a276[_0xaa25('0x5c')](_0xaa25('0x7d'));}}if(_0x1eba53[_0xaa25('0x39')][_0xaa25('0x7e')]){_0xd53b6b=_[_0xaa25('0x7f')](_0x1eba53[_0xaa25('0x39')][_0xaa25('0x7e')])?_0x1eba53[_0xaa25('0x39')][_0xaa25('0x7e')]:new Array(_0x1eba53[_0xaa25('0x39')][_0xaa25('0x7e')]);_0xd53b6b[_0xaa25('0x31')](function(_0x37e4c9){_0x14b6d4['or'](_0xaa25('0x69'),'%,'+_0x37e4c9+',%');});}if(_0x1eba53['query']['filter']){var _0x288fe6=_0x1eba53['query']['filter'][_0xaa25('0x80')]('\x5c','\x5c\x5c')[_0xaa25('0x80')](/'/g,'\x27\x27');if(qs[_0xaa25('0x81')](_0x288fe6)){_0x2834a6['or']('i.id\x20LIKE\x20?',_0x288fe6+'%')['or'](_0xaa25('0x82'),_0x288fe6+'%');}else{_0x2834a6['or'](_0xaa25('0x83'),qs[_0xaa25('0x62')](_0x288fe6))['or'](_0xaa25('0x84'),_0x288fe6+'%');}}}_0x20a276[_0xaa25('0x74')](_0x2834a6);_0x20a276['group'](_0xaa25('0x85'));var _0x1e5855={'type':db[_0xaa25('0x86')][_0xaa25('0x87')]['SELECT'],'raw':!![]};var _0x183731=_0x20a276['clone']();_0x183731[_0xaa25('0x45')](_0xaa25('0x85'));_0x183731[_0xaa25('0x45')](_0xaa25('0x88'),_0xaa25('0x5a'));if(_0x301b0f['order']){_0x301b0f[_0xaa25('0x41')]['forEach'](function(_0x2b2111){var _0x59bd6c=_0x2b2111[0x0]===_0xaa25('0x89')?_0x2b2111[0x0]:'i.'+_0x2b2111[0x0];_0x20a276[_0xaa25('0x41')](_0x59bd6c,_0x2b2111[0x1]==='DESC'?![]:!![]);});}if(!_[_0xaa25('0x72')](_0xd53b6b)){_0x20a276['having'](_0x14b6d4);_0x183731[_0xaa25('0x74')](_0xaa25('0x8a'),_0xd53b6b);}BPromise[_0xaa25('0x8b')]()[_0xaa25('0x26')](function(){if(!_0x181c61){if(_0x1eba53[_0xaa25('0x39')][_0xaa25('0x73')])return;_0x183731['where'](_0xaa25('0x8c'));_0x20a276['where'](_0xaa25('0x8c'));return;}if(_0x1eba53[_0xaa25('0x8d')][_0xaa25('0x8e')]!=='agent')return;return _0x1eba53['user'][_0xaa25('0x8f')]({'attributes':['id'],'raw':!![]})[_0xaa25('0x26')](function(_0x42b167){if(_[_0xaa25('0x72')](_0x42b167)){_0x183731['where'](_0xaa25('0x90'));_0x20a276[_0xaa25('0x74')](_0xaa25('0x90'));}else{_0x183731[_0xaa25('0x74')]('i.WhatsappAccountId\x20IN\x20?',_[_0xaa25('0x2c')](_0x42b167,'id'));_0x20a276[_0xaa25('0x74')](_0xaa25('0x75'),_[_0xaa25('0x2c')](_0x42b167,'id'));}});})[_0xaa25('0x26')](function(){if(_0x1eba53[_0xaa25('0x8d')]['role']===_0xaa25('0x91')&&!_0x181c61&&!_0x1eba53[_0xaa25('0x39')]['WhatsappAccountId'])return[];return db[_0xaa25('0x92')][_0xaa25('0x39')](_0x183731[_0xaa25('0x93')](),_0x1e5855);})['then'](function(_0x1c25c5){_0xe7503c[_0xaa25('0x1e')]=_0x1c25c5[_0xaa25('0x3f')];if(_0xe7503c['count']===0x0)return[];return db[_0xaa25('0x92')][_0xaa25('0x39')](_0x177d6d[_0xaa25('0x93')](),_0x1e5855)[_0xaa25('0x26')](function(_0x1d4090){_0x554b02=_['keyBy'](_0x1d4090,'id');_0x1e5855=_[_0xaa25('0x94')](_0x1e5855,{'model':db[_0xaa25('0x34')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1eba53[_0xaa25('0x39')][_0xaa25('0x3e')]){_0x301b0f['attributes'][_0xaa25('0x31')](function(_0x129514){_0x20a276[_0xaa25('0x45')]('i.'+_0x129514);});}else{_0x20a276[_0xaa25('0x45')](_0xaa25('0x88'),_0xaa25('0x5a'));_0x20a276[_0xaa25('0x45')](_0xaa25('0x95'),_0xaa25('0x96'));_0x20a276[_0xaa25('0x45')](_0xaa25('0x97'),'Account.mandatoryDisposition');_0x20a276['field']('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',_0xaa25('0x89'));_0x20a276[_0xaa25('0x45')](_0xaa25('0x98'));_0x20a276[_0xaa25('0x45')]('c.firstName',_0xaa25('0x99'));_0x20a276[_0xaa25('0x45')](_0xaa25('0x9a'),_0xaa25('0x9b'));_0x20a276[_0xaa25('0x45')](_0xaa25('0x9c'),_0xaa25('0x9d'));_0x20a276['field']('c.phone','Contact.phone');_0x20a276['field'](_0xaa25('0x9e'),'Contact.mobile');_0x20a276[_0xaa25('0x45')](_0xaa25('0x9f'),_0xaa25('0xa0'));_0x20a276['field'](_0xaa25('0xa1'),'Owner.fullname');_0x20a276[_0xaa25('0x45')](_0xaa25('0xa2'),_0xaa25('0xa3'));_0x20a276[_0xaa25('0x45')](_0xaa25('0xa4'),_0xaa25('0x2f'));}if(_0x301b0f[_0xaa25('0x20')])_0x20a276[_0xaa25('0x20')](_0x301b0f[_0xaa25('0x20')]);if(_0x301b0f[_0xaa25('0x1f')])_0x20a276[_0xaa25('0x1f')](_0x301b0f[_0xaa25('0x1f')]);return db[_0xaa25('0x92')]['query'](_0x20a276[_0xaa25('0x93')](),_0x1e5855);})['then'](function(_0x3efa37){if(_0x3efa37[_0xaa25('0x3f')]>0x0)_0x57b043[_0xaa25('0x74')]('ui.WhatsappInteractionId\x20IN\x20?',_[_0xaa25('0x2c')](_0x3efa37,'id'));return db['sequelize']['query'](_0x57b043[_0xaa25('0x93')](),_0x1e5855)[_0xaa25('0x26')](function(_0x36c161){var _0x224f44=_[_0xaa25('0xa5')](_0x36c161,_0xaa25('0xa6'));var _0x7be15d=[];_0x3efa37['forEach'](function(_0x4ea678){_0x7be15d[_0xaa25('0xa7')](updateWhatsappInteraction(_0x4ea678,_0x554b02,_0x224f44));});return BPromise[_0xaa25('0xa8')](_0x7be15d);});});})['then'](function(_0x360876){_0xe7503c['rows']=_0x360876;return _0xe7503c;})[_0xaa25('0x26')](respondWithFilteredResult(_0x481f70,_0x301b0f))[_0xaa25('0x32')](handleError(_0x481f70,null));};exports[_0xaa25('0xa9')]=function(_0x18204b,_0x311662){var _0x178d4b={'raw':![],'where':{'id':_0x18204b['params']['id']}},_0x251627={};_0x251627[_0xaa25('0x38')]=_[_0xaa25('0x3a')](db[_0xaa25('0x34')]['rawAttributes']);_0x251627[_0xaa25('0x39')]=_[_0xaa25('0x3a')](_0x18204b[_0xaa25('0x39')]);_0x251627[_0xaa25('0x3b')]=_[_0xaa25('0x3d')](_0x251627[_0xaa25('0x38')],_0x251627[_0xaa25('0x39')]);_0x178d4b[_0xaa25('0x3c')]=_[_0xaa25('0x3d')](_0x251627[_0xaa25('0x38')],qs['fields'](_0x18204b[_0xaa25('0x39')][_0xaa25('0x3e')]));_0x178d4b[_0xaa25('0x3c')]=_0x178d4b[_0xaa25('0x3c')][_0xaa25('0x3f')]?_0x178d4b['attributes']:_0x251627[_0xaa25('0x38')];if(_0x18204b[_0xaa25('0x39')]['includeAll']){_0x178d4b[_0xaa25('0xaa')]=[{'all':!![]}];}_0x178d4b=_[_0xaa25('0x94')]({},_0x178d4b,_0x18204b[_0xaa25('0xab')]);return db[_0xaa25('0x34')][_0xaa25('0x6d')](_0x178d4b)[_0xaa25('0x26')](handleEntityNotFound(_0x311662,null))[_0xaa25('0x26')](respondWithResult(_0x311662,null))[_0xaa25('0x32')](handleError(_0x311662,null));};exports[_0xaa25('0xac')]=function(_0x1a5b66,_0x3803b3){return db[_0xaa25('0x34')]['create'](_0x1a5b66[_0xaa25('0x6f')],{})[_0xaa25('0x26')](respondWithResult(_0x3803b3,0xc9))[_0xaa25('0x32')](handleError(_0x3803b3,null));};exports[_0xaa25('0xad')]=function(_0x2ea384,_0x1b1621){if(_0x2ea384[_0xaa25('0x6f')]['id']){delete _0x2ea384[_0xaa25('0x6f')]['id'];}return db['WhatsappInteraction'][_0xaa25('0x6d')]({'where':{'id':_0x2ea384['params']['id']}})[_0xaa25('0x26')](handleEntityNotFound(_0x1b1621,null))['then'](saveUpdates(_0x2ea384['body'],null))['then'](respondWithResult(_0x1b1621,null))[_0xaa25('0x32')](handleError(_0x1b1621,null));};exports['destroy']=function(_0x3b25d7,_0x265acd){return db['WhatsappInteraction'][_0xaa25('0x6d')]({'where':{'id':_0x3b25d7['params']['id']}})[_0xaa25('0x26')](handleEntityNotFound(_0x265acd,null))[_0xaa25('0x26')](removeEntity(_0x265acd,null))[_0xaa25('0x32')](handleError(_0x265acd,null));};exports[_0xaa25('0xae')]=function(_0x28f418,_0xef2bc3){return db[_0xaa25('0x34')][_0xaa25('0xae')]()[_0xaa25('0x26')](respondWithResult(_0xef2bc3,null))[_0xaa25('0x32')](handleError(_0xef2bc3,null));};exports[_0xaa25('0xaf')]=function(_0x22b3a9,_0x132a7c,_0x4ee49b){return db[_0xaa25('0xb0')][_0xaa25('0x6d')]({'where':{'id':_0x22b3a9[_0xaa25('0xb1')]['id']}})[_0xaa25('0x26')](handleEntityNotFound(_0x132a7c,null))['then'](function(_0x1425a4){if(_0x1425a4){return _0x1425a4[_0xaa25('0xaf')](_0x22b3a9[_0xaa25('0x6f')][_0xaa25('0xb2')],_[_0xaa25('0xb3')](_0x22b3a9[_0xaa25('0x6f')],['ids','id'])||{});}})[_0xaa25('0x26')](respondWithResult(_0x132a7c,null))[_0xaa25('0x32')](handleError(_0x132a7c,null));};exports[_0xaa25('0xb4')]=function(_0x4603a2,_0x4224c5,_0x346414){var _0x4632dc={'raw':![],'where':{}};var _0x52c30c={};var _0x5994fa={'count':0x0,'rows':[]};return db['WhatsappInteraction'][_0xaa25('0xb5')]({'where':{'id':_0x4603a2['params']['id']}})[_0xaa25('0x26')](handleEntityNotFound(_0x4224c5,null))[_0xaa25('0x26')](function(_0x2273b0){if(_0x2273b0){_0x52c30c[_0xaa25('0x38')]=_[_0xaa25('0x3a')](db[_0xaa25('0xb0')][_0xaa25('0x35')]);_0x52c30c[_0xaa25('0x39')]=_[_0xaa25('0x3a')](_0x4603a2['query']);_0x52c30c[_0xaa25('0x3b')]=_['intersection'](_0x52c30c[_0xaa25('0x38')],_0x52c30c[_0xaa25('0x39')]);_0x4632dc[_0xaa25('0x3c')]=_[_0xaa25('0x3d')](_0x52c30c[_0xaa25('0x38')],qs['fields'](_0x4603a2[_0xaa25('0x39')][_0xaa25('0x3e')]));_0x4632dc[_0xaa25('0x3c')]=_0x4632dc['attributes'][_0xaa25('0x3f')]?_0x4632dc[_0xaa25('0x3c')]:_0x52c30c['model'];if(!_0x4603a2[_0xaa25('0x39')]['hasOwnProperty'](_0xaa25('0xb6'))){_0x4632dc[_0xaa25('0x20')]=qs[_0xaa25('0x20')](_0x4603a2[_0xaa25('0x39')]['limit']);_0x4632dc[_0xaa25('0x1f')]=qs[_0xaa25('0x1f')](_0x4603a2[_0xaa25('0x39')]['offset']);}_0x4632dc[_0xaa25('0x41')]=qs[_0xaa25('0x42')](_0x4603a2['query'][_0xaa25('0x42')]);_0x4632dc[_0xaa25('0x74')]=qs[_0xaa25('0x3b')](_[_0xaa25('0x43')](_0x4603a2['query'],_0x52c30c[_0xaa25('0x3b')]));_0x4632dc[_0xaa25('0x74')]['WhatsappInteractionId']=_0x2273b0['id'];if(_0x4603a2['query'][_0xaa25('0xb7')]){_0x4632dc[_0xaa25('0x74')]=_['merge'](_0x4632dc[_0xaa25('0x74')],{'$or':_['map'](_0x4632dc[_0xaa25('0x3c')],function(_0x4cc11e){var _0x5ea41c={};_0x5ea41c[_0x4cc11e]={'$like':'%'+_0x4603a2[_0xaa25('0x39')][_0xaa25('0xb7')]+'%'};return _0x5ea41c;})});}if(_0x4603a2[_0xaa25('0x39')]['$gte']){var _0x57639c=_0x4603a2['query'][_0xaa25('0xb8')][_0xaa25('0x30')](',');var _0x779c6d={};_0x779c6d[_0x57639c[0x0]]={'$gte':moment(_0x57639c[0x1])[_0xaa25('0xb9')]('YYYY-MM-DD\x20HH:mm:ss')};_0x4632dc[_0xaa25('0x74')]=_[_0xaa25('0x94')](_0x4632dc[_0xaa25('0x74')],_0x779c6d);}_0x4632dc=_[_0xaa25('0x94')]({},_0x4632dc,_0x4603a2[_0xaa25('0xab')]);return db[_0xaa25('0xb0')][_0xaa25('0x1e')]({'where':_0x4632dc[_0xaa25('0x74')]})[_0xaa25('0x26')](function(_0x35d97d){_0x5994fa[_0xaa25('0x1e')]=_0x35d97d;if(_0x4603a2[_0xaa25('0x39')]['includeAll']){_0x4632dc[_0xaa25('0xaa')]=[{'all':!![]}];}return db[_0xaa25('0xb0')][_0xaa25('0xba')](_0x4632dc);})[_0xaa25('0x26')](function(_0x4bf077){_0x5994fa[_0xaa25('0xbb')]=_0x4bf077;return _0x5994fa;});}})[_0xaa25('0x26')](respondWithFilteredResult(_0x4224c5,_0x4632dc))[_0xaa25('0x32')](handleError(_0x4224c5,null));};exports[_0xaa25('0xbc')]=function(_0x34e376,_0x524a9c,_0x2077f1){return db[_0xaa25('0x34')]['find']({'where':{'id':_0x34e376[_0xaa25('0xb1')]['id']}})[_0xaa25('0x26')](handleEntityNotFound(_0x524a9c,null))['then'](function(_0x1e56e8){if(_0x1e56e8){return _0x1e56e8['setTags'](_0x34e376[_0xaa25('0x6f')]['ids'],_[_0xaa25('0xb3')](_0x34e376['body'],[_0xaa25('0xb2'),'id'])||{})[_0xaa25('0xbd')](function(){return db['Tag'][_0xaa25('0xba')]({'attributes':['id','name',_0xaa25('0xbe')],'where':{'id':_0x34e376['body'][_0xaa25('0xb2')]}});})['then'](function(_0x385c3f){socket[_0xaa25('0xbf')](_0xaa25('0xc0'),{'id':Number(_0x34e376[_0xaa25('0xb1')]['id']),'tags':_0x385c3f||[]});return{'id':Number(_0x34e376['params']['id']),'tags':_0x385c3f||[]};});}})[_0xaa25('0x26')](respondWithResult(_0x524a9c,null))[_0xaa25('0x32')](handleError(_0x524a9c,null));};exports[_0xaa25('0xc1')]=function(_0x451805,_0x95857a,_0x4f1d22){return db[_0xaa25('0x34')][_0xaa25('0x6d')]({'where':{'id':_0x451805[_0xaa25('0xb1')]['id']}})[_0xaa25('0x26')](handleEntityNotFound(_0x95857a,null))['then'](function(_0x451564){if(_0x451564){return _0x451564['removeTags'](_0x451805[_0xaa25('0x39')]['ids']);}})['then'](respondWithStatusCode(_0x95857a,null))['catch'](handleError(_0x95857a,null));};exports[_0xaa25('0xc2')]=function(_0x20ba50,_0x3a5ca3){var _0x2e67f5=moment()[_0xaa25('0xc3')]()[_0xaa25('0x93')]();var _0x2205df=path[_0xaa25('0xc4')](config['root'],_0xaa25('0xc5'),_0xaa25('0xc6'),_0xaa25('0xc7'));var _0x5070c6=path['join'](config[_0xaa25('0xc8')],_0xaa25('0xc5'),_0xaa25('0xc6'),_0xaa25('0xc9'));var _0x137972=path['join'](_0x2205df,_0x2e67f5);var _0x4346cb=util[_0xaa25('0xb9')](_0xaa25('0xca'),_0x20ba50['params']['id'],_0x2e67f5);var _0xa30511=path[_0xaa25('0xc4')](_0x2205df,_0x4346cb);var _0x3d8738=[];_0x3d8738[_0xaa25('0xa7')]({'model':db['User'],'as':_0xaa25('0x6a'),'attributes':['id',_0xaa25('0x2d')],'raw':!![]});_0x3d8738[_0xaa25('0xa7')]({'model':db['CmContact'],'as':'Contact','attributes':['id',_0xaa25('0xcb'),_0xaa25('0xcc')],'raw':!![]});if(_0x20ba50[_0xaa25('0x39')][_0xaa25('0xc9')]){_0x3d8738[_0xaa25('0xa7')]({'model':db[_0xaa25('0xcd')],'as':_0xaa25('0xcd'),'raw':!![]});}var _0x537664=[{'model':db[_0xaa25('0xb0')],'as':_0xaa25('0xce'),'attributes':['id',_0xaa25('0x6f'),_0xaa25('0xcf'),_0xaa25('0xd0'),_0xaa25('0xd1'),_0xaa25('0x7b')],'include':_0x3d8738}];_0x537664[_0xaa25('0xa7')]({'model':db[_0xaa25('0xd2')],'as':_0xaa25('0xd3'),'attributes':['id',_0xaa25('0x2a')]});_0x537664[_0xaa25('0xa7')]({'model':db['User'],'as':'Owner','attributes':['id',_0xaa25('0x2d')]});return db['WhatsappInteraction'][_0xaa25('0x6d')]({'where':{'id':_0x20ba50[_0xaa25('0xb1')]['id']},'include':_0x537664})['then'](handleEntityNotFound(_0x3a5ca3,null))['then'](function(_0x20f523){if(_0x20f523){var _0x131802=_0x20f523[_0xaa25('0xd4')]({'plain':!![]});fs['mkdirSync'](_0x137972);var _0x5edb66={'channel':_0xaa25('0xd5'),'account':_0x131802['Account'][_0xaa25('0x2a')],'agent':_0x131802[_0xaa25('0xd6')]?_0x131802['Owner']['fullname']:_0xaa25('0xd7'),'createdAt':moment(_0x131802[_0xaa25('0xcf')])[_0xaa25('0xb9')](_0xaa25('0xd8'))[_0xaa25('0x93')](),'closedAt':_0x131802['closed']?moment(_0x131802['closedAt'])[_0xaa25('0xb9')](_0xaa25('0xd8'))['toString']():'','disposition':_0x131802['disposition'],'messages':_(_0x131802[_0xaa25('0xce')])[_0xaa25('0xb7')]({'secret':![]})[_0xaa25('0x2c')](function(_0x26c5b3){if(_0x26c5b3[_0xaa25('0xcd')]){var _0x39b341=path[_0xaa25('0xc4')](_0x5070c6,_0x26c5b3[_0xaa25('0xcd')][_0xaa25('0xd9')]);if(fs[_0xaa25('0xda')](_0x39b341)){fs[_0xaa25('0xdb')](_0x39b341)[_0xaa25('0xdc')](fs[_0xaa25('0xdd')](path[_0xaa25('0xc4')](_0x137972,_0x26c5b3['Attachment']['basename'])));}}return{'date':moment(_0x26c5b3[_0xaa25('0xcf')])[_0xaa25('0xb9')](_0xaa25('0xd8'))['toString'](),'sender':_0x26c5b3['direction']===_0xaa25('0xde')?_0x26c5b3[_0xaa25('0x6a')]?_0x26c5b3[_0xaa25('0x6a')][_0xaa25('0x2d')]:_0xaa25('0xdf'):_0x26c5b3[_0xaa25('0x5f')][_0xaa25('0xcb')]+(_0x26c5b3[_0xaa25('0x5f')]['lastName']?'\x20'+_0x26c5b3['Contact'][_0xaa25('0xcc')]:''),'body':_0x26c5b3['Attachment']?_0x26c5b3[_0xaa25('0xcd')]['basename']:_0x26c5b3[_0xaa25('0x6f')],'direction':_0x26c5b3[_0xaa25('0xd0')]===_0xaa25('0xde')?'A':'C','secret':_0x26c5b3['secret'],'read':_0x26c5b3[_0xaa25('0x7b')],'attachment':_0x26c5b3['Attachment']};})[_0xaa25('0x5b')]()};return ejs[_0xaa25('0xe0')](path[_0xaa25('0xc4')](config[_0xaa25('0xc8')],'server','views','downloadInteraction.ejs'),{'interaction':_0x5edb66})[_0xaa25('0x26')](function(_0x388dad){var _0x275475=path[_0xaa25('0xc4')](_0x137972,_0xaa25('0xe1')+_0x131802['id']+'-'+_0x2e67f5+_0xaa25('0xe2'));var _0x1796f6={'path':_0x275475,'channel':_0xaa25('0xd5'),'interactionId':_0x131802['id']};return pdf[_0xaa25('0xe3')](_0x388dad,_0x1796f6);})[_0xaa25('0x26')](function(){return new BPromise(function(_0x34b29e,_0x2aaeaa){zipdir(_0x137972,{'saveTo':_0xa30511},function(_0x4f1e94,_0x2be357){if(_0x4f1e94)return _0x2aaeaa(_0x4f1e94);return _0x34b29e(_0x2be357);});})[_0xaa25('0x26')](function(){return new BPromise(function(_0x1af2a5,_0x2c1a26){rimraf(_0x137972,function(_0x4c350b){if(_0x4c350b)_0x2c1a26(_0x4c350b);return _0x1af2a5();});});})['then'](function(){return _0x3a5ca3['download'](_0xa30511,_0x4346cb,function(_0x427884){if(_0x427884){console[_0xaa25('0xe4')](_0xaa25('0xe5'),_0x427884);}else{fs[_0xaa25('0xe6')](_0xa30511);}});});});}else{return _0x3a5ca3[_0xaa25('0x19')](0xc8);}})[_0xaa25('0x32')](handleError(_0x3a5ca3,null));};
\ No newline at end of file
+var _0xdbad=['conditions','find','unreadMessages','value','`\x20=\x200','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','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','UserId','body','some','compact','isEmpty','i.WhatsappAccountId\x20IN\x20?','concat','createdAt','$gte','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','t.id\x20IN\x20?','resolve','WhatsappAccountId','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','agent','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','role','sequelize','toString','merge','WhatsappInteraction','a.key','Account.key','Account.mandatoryDisposition','contactName','i.*','c.firstName','Contact.firstName','c.email','Contact.phone','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.WhatsappInteractionId\x20IN\x20?','groupBy','WhatsappInteractionId','push','all','params','includeAll','include','options','describe','addMessage','WhatsappMessage','ids','getMessages','findOne','nolimit','sort','format','findAll','setTags','omit','spread','whatsappInteractionTags:save','removeTags','download','join','root','files','tmp','server','attachments','transcript-%d-%s.zip','fullname','CmContact','lastName','Attachment','Messages','secret','WhatsappAccount','Account','get','Owner','N.A.','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','disposition','basename','existsSync','pipe','createWriteStream','direction','out','System','firstName','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','sox','to-csv','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/logger','api','../../config/environment','../../config/license/util','defaults','redis','socket.io-emitter','./whatsappInteraction.socket','register','sendStatus','status','end','offset','undefined','count','set','Content-Range','json','apply','reject','save','then','destroy','stack','name','send','Users','map','TagIds','split','forEach','catch','index','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','limit','order','where','pick','field','color','from','tools_tags','select','u.id','u.fullname','ui.WhatsappInteractionId','user_has_whatsapp_interactions','left_join','users','whatsapp_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','a.id\x20=\x20i.WhatsappAccountId','whatsapp_messages','me.WhatsappInteractionId\x20=\x20i.id','whatsapp_interaction_has_tags','it.WhatsappInteractionId\x20=\x20i.id','expr','search','parseSearch'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0xdbad,0x8d));var _0xddba=function(_0x1f7e42,_0x32a1b6){_0x1f7e42=_0x1f7e42-0x0;var _0x1f5e9c=_0xdbad[_0x1f7e42];return _0x1f5e9c;};'use strict';var emlformat=require(_0xddba('0x0'));var rimraf=require(_0xddba('0x1'));var zipdir=require(_0xddba('0x2'));var jsonpatch=require(_0xddba('0x3'));var rp=require(_0xddba('0x4'));var moment=require('moment');var BPromise=require(_0xddba('0x5'));var Mustache=require(_0xddba('0x6'));var util=require('util');var path=require('path');var sox=require(_0xddba('0x7'));var csv=require(_0xddba('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xddba('0x9'));var _=require(_0xddba('0xa'));var squel=require(_0xddba('0xb'));var crypto=require(_0xddba('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xddba('0x8'));var querystring=require(_0xddba('0xd'));var Papa=require(_0xddba('0xe'));var Redis=require(_0xddba('0xf'));var authService=require(_0xddba('0x10'));var qs=require(_0xddba('0x11'));var as=require(_0xddba('0x12'));var pdf=require(_0xddba('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xddba('0x14'))(_0xddba('0x15'));var utils=require('../../config/utils');var config=require(_0xddba('0x16'));var licenseUtil=require(_0xddba('0x17'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xddba('0x18')](config[_0xddba('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xddba('0x1a'))(new Redis(config[_0xddba('0x19')]));require(_0xddba('0x1b'))[_0xddba('0x1c')](socket);function respondWithStatusCode(_0x2d75c8,_0x12d971){_0x12d971=_0x12d971||0xcc;return function(_0x4c66e3){if(_0x4c66e3){return _0x2d75c8[_0xddba('0x1d')](_0x12d971);}return _0x2d75c8[_0xddba('0x1e')](_0x12d971)[_0xddba('0x1f')]();};}function respondWithResult(_0x3cc67e,_0xa15f4){_0xa15f4=_0xa15f4||0xc8;return function(_0x2663d9){if(_0x2663d9){return _0x3cc67e[_0xddba('0x1e')](_0xa15f4)['json'](_0x2663d9);}};}function respondWithFilteredResult(_0xd9ba53,_0x47da5b){return function(_0x28eb79){if(_0x28eb79){var _0x56677a=typeof _0x47da5b[_0xddba('0x20')]===_0xddba('0x21')&&typeof _0x47da5b['limit']===_0xddba('0x21');var _0x55f5fc=_0x28eb79[_0xddba('0x22')];var _0x28d3f3=_0x56677a?0x0:_0x47da5b['offset'];var _0x29fb4a=_0x56677a?_0x28eb79[_0xddba('0x22')]:_0x47da5b[_0xddba('0x20')]+_0x47da5b['limit'];var _0x4a24c4;if(_0x29fb4a>=_0x55f5fc){_0x29fb4a=_0x55f5fc;_0x4a24c4=0xc8;}else{_0x4a24c4=0xce;}_0xd9ba53[_0xddba('0x1e')](_0x4a24c4);return _0xd9ba53[_0xddba('0x23')](_0xddba('0x24'),_0x28d3f3+'-'+_0x29fb4a+'/'+_0x55f5fc)[_0xddba('0x25')](_0x28eb79);}return null;};}function patchUpdates(_0x4688ff){return function(_0x458c60){try{jsonpatch[_0xddba('0x26')](_0x458c60,_0x4688ff,!![]);}catch(_0x42a672){return BPromise[_0xddba('0x27')](_0x42a672);}return _0x458c60[_0xddba('0x28')]();};}function saveUpdates(_0x11e6bd,_0xe0deb4){return function(_0x1f7525){if(_0x1f7525){return _0x1f7525['update'](_0x11e6bd)[_0xddba('0x29')](function(_0x4fcc72){return _0x4fcc72;});}return null;};}function removeEntity(_0x2a5413,_0xe42647){return function(_0x5a1f2b){if(_0x5a1f2b){return _0x5a1f2b[_0xddba('0x2a')]()['then'](function(){_0x2a5413[_0xddba('0x1e')](0xcc)[_0xddba('0x1f')]();});}};}function handleEntityNotFound(_0x5275e1,_0xf63696){return function(_0x333a64){if(!_0x333a64){_0x5275e1[_0xddba('0x1d')](0x194);}return _0x333a64;};}function handleError(_0x1a23bf,_0x197552){_0x197552=_0x197552||0x1f4;return function(_0x40d5ef){logger['error'](_0x40d5ef[_0xddba('0x2b')]);if(_0x40d5ef['name']){delete _0x40d5ef[_0xddba('0x2c')];}_0x1a23bf['status'](_0x197552)[_0xddba('0x2d')](_0x40d5ef);};}function getInteractionUsers(_0x537e79,_0x325d33){return new BPromise(function(_0x290798,_0x1ec6a6){try{if(_0x325d33[_0x537e79['id']]){_0x537e79[_0xddba('0x2e')]=_[_0xddba('0x2f')](_0x325d33[_0x537e79['id']],function(_0xf90ba1){return{'id':_0xf90ba1['id'],'fullname':_0xf90ba1['fullname']};});}}catch(_0x176975){_0x1ec6a6(_0x176975);}_0x290798(_0x537e79);});}function getInteractionTags(_0x2b1f22,_0xd3e96b){return new BPromise(function(_0x4f4358,_0x4d560c){try{if(_0x2b1f22[_0xddba('0x30')]){_0x2b1f22['Tags']=[];_0x2b1f22[_0xddba('0x30')][_0xddba('0x31')](',')[_0xddba('0x32')](function(_0x59a9f2){_0x2b1f22['Tags']['push'](_0xd3e96b[_0x59a9f2]);});}delete _0x2b1f22[_0xddba('0x30')];}catch(_0x507e84){_0x4d560c(_0x507e84);}_0x4f4358(_0x2b1f22);});}function updateWhatsappInteraction(_0x13c3d2,_0x25f712,_0x42ccd6){return new BPromise(function(_0x5192e4,_0x50e4de){return getInteractionUsers(_0x13c3d2,_0x42ccd6)[_0xddba('0x29')](function(_0x5ab742){return getInteractionTags(_0x5ab742,_0x25f712);})[_0xddba('0x29')](function(_0x420006){_0x5192e4(_0x420006);})[_0xddba('0x33')](function(_0x221cbf){_0x50e4de(_0x221cbf);});});}exports[_0xddba('0x34')]=function(_0x47631e,_0x4810b3){var _0x2d72d2={},_0x31abea={},_0x4eca38={'count':0x0,'rows':[]};var _0x1f4f69=_['map'](db['WhatsappInteraction'][_0xddba('0x35')],function(_0x4b569c){return{'name':_0x4b569c[_0xddba('0x36')],'type':_0x4b569c[_0xddba('0x37')][_0xddba('0x38')]};});_0x31abea[_0xddba('0x39')]=_['map'](_0x1f4f69,_0xddba('0x2c'));_0x31abea[_0xddba('0x3a')]=_[_0xddba('0x3b')](_0x47631e[_0xddba('0x3a')]);_0x31abea[_0xddba('0x3c')]=_[_0xddba('0x3d')](_0x31abea[_0xddba('0x39')],_0x31abea[_0xddba('0x3a')]);_0x2d72d2[_0xddba('0x3e')]=_[_0xddba('0x3d')](_0x31abea[_0xddba('0x39')],qs[_0xddba('0x3f')](_0x47631e[_0xddba('0x3a')][_0xddba('0x3f')]));_0x2d72d2[_0xddba('0x3e')]=_0x2d72d2[_0xddba('0x3e')][_0xddba('0x40')]?_0x2d72d2[_0xddba('0x3e')]:_0x31abea[_0xddba('0x39')];if(!_0x47631e[_0xddba('0x3a')][_0xddba('0x41')]('nolimit')){_0x2d72d2[_0xddba('0x42')]=qs['limit'](_0x47631e['query'][_0xddba('0x42')]);_0x2d72d2['offset']=qs['offset'](_0x47631e[_0xddba('0x3a')][_0xddba('0x20')]);}_0x2d72d2[_0xddba('0x43')]=qs['sort'](_0x47631e[_0xddba('0x3a')]['sort']);_0x2d72d2[_0xddba('0x44')]=qs[_0xddba('0x3c')](_[_0xddba('0x45')](_0x47631e[_0xddba('0x3a')],_0x31abea[_0xddba('0x3c')]),_0x1f4f69);var _0xe3b966=[];var _0x4b7a2d=squel['select']()['field']('id')[_0xddba('0x46')](_0xddba('0x2c'))[_0xddba('0x46')](_0xddba('0x47'))[_0xddba('0x48')](_0xddba('0x49'));var _0x3bb208=squel[_0xddba('0x4a')]()[_0xddba('0x46')](_0xddba('0x4b'))['field'](_0xddba('0x4c'))[_0xddba('0x46')](_0xddba('0x4d'))['from'](_0xddba('0x4e'),'ui')[_0xddba('0x4f')](_0xddba('0x50'),'u','u.id\x20=\x20ui.UserId');var _0x30b71c=squel[_0xddba('0x4a')]()[_0xddba('0x48')](_0xddba('0x51'),'i')['left_join']('cm_contacts','c',_0xddba('0x52'))[_0xddba('0x4f')](_0xddba('0x50'),'o',_0xddba('0x53'))[_0xddba('0x4f')]('whatsapp_accounts','a',_0xddba('0x54'))[_0xddba('0x4f')](_0xddba('0x55'),'me',_0xddba('0x56'))[_0xddba('0x4f')](_0xddba('0x57'),'it',_0xddba('0x58'))[_0xddba('0x4f')](_0xddba('0x49'),'t','t.id\x20=\x20it.TagId');var _0x3e9f95=squel[_0xddba('0x59')]();var _0x2e1ee5=[];var _0x105409=squel[_0xddba('0x59')]();var _0x3236d9;if(_0x47631e['query'][_0xddba('0x5a')]){_0x3236d9=as[_0xddba('0x5b')](_0x47631e['query'][_0xddba('0x5a')]);var _0x84a4b2=_0x3236d9['sqlOperator'];for(var _0x239fd9=0x0;_0x239fd9<_0x3236d9['conditions'][_0xddba('0x40')];_0x239fd9++){var _0x1f723a=_0x3236d9[_0xddba('0x5c')][_0x239fd9];var _0x314dc4='i';var _0x1b2bb2=_[_0xddba('0x5d')](_0x1f4f69,[_0xddba('0x2c'),_0x1f723a[_0xddba('0x46')]]);if(!_0x1b2bb2){switch(_0x1f723a[_0xddba('0x46')]){case _0xddba('0x5e'):if(_0x1f723a[_0xddba('0x5f')]==0x1){_0x30b71c['having']('`'+_0x1f723a['field']+_0xddba('0x60'));}else{_0x30b71c[_0xddba('0x61')]('`'+_0x1f723a[_0xddba('0x46')]+_0xddba('0x62'));}break;case _0xddba('0x63'):if(_0x1f723a[_0xddba('0x64')]===_0xddba('0x65')){if(_0x1f723a[_0xddba('0x5f')][_0xddba('0x31')]('\x20')[_0xddba('0x40')]>0x1){_0x3e9f95[_0x84a4b2](_0xddba('0x66'),qs[_0xddba('0x67')](_0x1f723a[_0xddba('0x5f')]),null);}else{var _0x3ed89f='%'+_0x1f723a[_0xddba('0x5f')]+'%';_0x3e9f95[_0x84a4b2]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x3ed89f,_0x3ed89f,_0x3ed89f);}}else{_0x1b2bb2=_[_0xddba('0x5d')](_0x1f4f69,['name',_0xddba('0x68')]);_0x1f723a[_0xddba('0x46')]=_0xddba('0x68');_0x7ac96=as[_0xddba('0x69')](_0x314dc4,_0x1b2bb2[_0xddba('0x37')],_0x1f723a);_0x3e9f95[_0x84a4b2](_0x7ac96[_0xddba('0x6a')],_0x7ac96[_0xddba('0x5f')][_0xddba('0x6b')],_0x7ac96[_0xddba('0x5f')][_0xddba('0x1f')]);}break;case _0xddba('0x6c'):var _0x47929d=_0x1f723a[_0xddba('0x5f')][_0xddba('0x31')](',')[_0xddba('0x2f')](function(_0x1c3b17){return Number(_0x1c3b17);});_0x47929d['forEach'](function(_0x4b699f){_0x105409['or'](_0xddba('0x6d'),'%,'+_0x4b699f+',%');});_0x2e1ee5=_['union'](_0x2e1ee5,_0x47929d);break;case _0xddba('0x6e'):if(_0x1f723a[_0xddba('0x64')]===_0xddba('0x65')){_0x3e9f95[_0x84a4b2]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x1f723a[_0xddba('0x5f')]+'%',null);}else{_0x1b2bb2=_[_0xddba('0x5d')](_0x1f4f69,['name',_0xddba('0x6f')]);_0x1f723a['field']='UserId';_0x7ac96=as[_0xddba('0x69')](_0x314dc4,_0x1b2bb2[_0xddba('0x37')],_0x1f723a);_0x3e9f95[_0x84a4b2](_0x7ac96[_0xddba('0x6a')],_0x7ac96[_0xddba('0x5f')][_0xddba('0x6b')],_0x7ac96[_0xddba('0x5f')]['end']);}break;case _0xddba('0x70'):_0x7ac96=as[_0xddba('0x69')]('me',null,_0x1f723a);_0x3e9f95[_0x84a4b2](_0x7ac96['text'],_0x7ac96[_0xddba('0x5f')]['start'],_0x7ac96[_0xddba('0x5f')][_0xddba('0x1f')]);break;}}else{var _0x7ac96=as['buildExpression'](_0x314dc4,_0x1b2bb2[_0xddba('0x37')],_0x1f723a);_0x3e9f95[_0x84a4b2](_0x7ac96[_0xddba('0x6a')],_0x7ac96['value']['start'],_0x7ac96[_0xddba('0x5f')][_0xddba('0x1f')]);}}}else{var _0x2f12ff=_(_0x47631e['query'])[_0xddba('0x3b')]()[_0xddba('0x2f')](function(_0x2c10dd){return _[_0xddba('0x71')](_0x1f4f69,[_0xddba('0x2c'),_0x2c10dd])?_0x2c10dd:undefined;})[_0xddba('0x72')]()[_0xddba('0x5f')]();if(!_[_0xddba('0x73')](_0x2f12ff)){_0x2f12ff[_0xddba('0x32')](function(_0x3872dd){if(_0x3872dd==='WhatsappAccountId'){_0x30b71c['where'](_0xddba('0x74'),[][_0xddba('0x75')](_0x47631e[_0xddba('0x3a')][_0x3872dd]));}else if(_0x3872dd===_0xddba('0x76')){var _0xa0168=JSON['parse'](_0x47631e['query'][_0x3872dd])[_0xddba('0x77')];var _0xc3a801=JSON[_0xddba('0x78')](_0x47631e['query'][_0x3872dd])[_0xddba('0x79')];_0x30b71c[_0xddba('0x44')](_0xddba('0x7a'),_0xa0168,_0xc3a801);}else{if(_0x47631e['query'][_0x3872dd]===_0xddba('0x7b')){_0x30b71c[_0xddba('0x44')]('i.'+_0x3872dd+_0xddba('0x7c'));}else{_0x30b71c[_0xddba('0x44')]('i.'+_0x3872dd+_0xddba('0x7d'),_0x47631e[_0xddba('0x3a')][_0x3872dd]);}}});}if(_0x47631e[_0xddba('0x3a')][_0xddba('0x7e')]){if(_0x47631e[_0xddba('0x3a')]['read']==0x1){_0x30b71c[_0xddba('0x61')]('`unreadMessages`\x20=\x200');}else{_0x30b71c[_0xddba('0x61')](_0xddba('0x7f'));}}if(_0x47631e[_0xddba('0x3a')][_0xddba('0x80')]){_0x2e1ee5=_[_0xddba('0x81')](_0x47631e[_0xddba('0x3a')]['tag'])?_0x47631e[_0xddba('0x3a')][_0xddba('0x80')]:new Array(_0x47631e[_0xddba('0x3a')]['tag']);_0x2e1ee5['forEach'](function(_0x55c646){_0x105409['or'](_0xddba('0x6d'),'%,'+_0x55c646+',%');});}if(_0x47631e[_0xddba('0x3a')][_0xddba('0x82')]){var _0x485c5a=_0x47631e[_0xddba('0x3a')][_0xddba('0x82')][_0xddba('0x83')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs['isNumeric'](_0x485c5a)){_0x3e9f95['or']('i.id\x20LIKE\x20?',_0x485c5a+'%')['or'](_0xddba('0x84'),_0x485c5a+'%');}else{_0x3e9f95['or'](_0xddba('0x85'),qs['getFullTextValue'](_0x485c5a))['or'](_0xddba('0x86'),_0x485c5a+'%');}}}_0x30b71c['where'](_0x3e9f95);_0x30b71c[_0xddba('0x87')](_0xddba('0x88'));var _0xcf54c6={'type':db['Sequelize'][_0xddba('0x89')][_0xddba('0x8a')],'raw':!![]};var _0x5c5802=_0x30b71c[_0xddba('0x8b')]();_0x5c5802[_0xddba('0x46')](_0xddba('0x88'));_0x5c5802[_0xddba('0x46')](_0xddba('0x8c'),_0xddba('0x5e'));if(_0x2d72d2['order']){_0x2d72d2[_0xddba('0x43')][_0xddba('0x32')](function(_0x3c017b){var _0x37d06b=_0x3c017b[0x0]==='contactName'?_0x3c017b[0x0]:'i.'+_0x3c017b[0x0];_0x30b71c[_0xddba('0x43')](_0x37d06b,_0x3c017b[0x1]==='DESC'?![]:!![]);});}if(!_[_0xddba('0x73')](_0x2e1ee5)){_0x30b71c['having'](_0x105409);_0x5c5802[_0xddba('0x44')](_0xddba('0x8d'),_0x2e1ee5);}BPromise[_0xddba('0x8e')]()[_0xddba('0x29')](function(){if(!_0x3236d9){if(_0x47631e[_0xddba('0x3a')][_0xddba('0x8f')])return;_0x5c5802[_0xddba('0x44')](_0xddba('0x90'));_0x30b71c['where'](_0xddba('0x90'));return;}if(_0x47631e[_0xddba('0x91')]['role']!==_0xddba('0x92'))return;return _0x47631e[_0xddba('0x91')][_0xddba('0x93')]({'attributes':['id'],'raw':!![]})[_0xddba('0x29')](function(_0x171083){if(_[_0xddba('0x73')](_0x171083)){_0x5c5802[_0xddba('0x44')](_0xddba('0x94'));_0x30b71c[_0xddba('0x44')](_0xddba('0x94'));}else{_0x5c5802[_0xddba('0x44')](_0xddba('0x74'),_[_0xddba('0x2f')](_0x171083,'id'));_0x30b71c[_0xddba('0x44')](_0xddba('0x74'),_[_0xddba('0x2f')](_0x171083,'id'));}});})[_0xddba('0x29')](function(){if(_0x47631e['user'][_0xddba('0x95')]===_0xddba('0x92')&&!_0x3236d9&&!_0x47631e['query'][_0xddba('0x8f')])return[];return db[_0xddba('0x96')]['query'](_0x5c5802[_0xddba('0x97')](),_0xcf54c6);})['then'](function(_0x27881c){_0x4eca38[_0xddba('0x22')]=_0x27881c[_0xddba('0x40')];if(_0x4eca38[_0xddba('0x22')]===0x0)return[];return db[_0xddba('0x96')][_0xddba('0x3a')](_0x4b7a2d[_0xddba('0x97')](),_0xcf54c6)[_0xddba('0x29')](function(_0x3f27f8){_0xe3b966=_['keyBy'](_0x3f27f8,'id');_0xcf54c6=_[_0xddba('0x98')](_0xcf54c6,{'model':db[_0xddba('0x99')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x47631e[_0xddba('0x3a')][_0xddba('0x3f')]){_0x2d72d2['attributes'][_0xddba('0x32')](function(_0xfb0e1b){_0x30b71c[_0xddba('0x46')]('i.'+_0xfb0e1b);});}else{_0x30b71c[_0xddba('0x46')](_0xddba('0x8c'),_0xddba('0x5e'));_0x30b71c['field'](_0xddba('0x9a'),_0xddba('0x9b'));_0x30b71c['field']('a.mandatoryDisposition',_0xddba('0x9c'));_0x30b71c[_0xddba('0x46')]('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',_0xddba('0x9d'));_0x30b71c[_0xddba('0x46')](_0xddba('0x9e'));_0x30b71c[_0xddba('0x46')](_0xddba('0x9f'),_0xddba('0xa0'));_0x30b71c['field']('c.lastName','Contact.lastName');_0x30b71c[_0xddba('0x46')](_0xddba('0xa1'),'Contact.email');_0x30b71c[_0xddba('0x46')]('c.phone',_0xddba('0xa2'));_0x30b71c[_0xddba('0x46')]('c.mobile',_0xddba('0xa3'));_0x30b71c[_0xddba('0x46')](_0xddba('0xa4'),_0xddba('0xa5'));_0x30b71c[_0xddba('0x46')](_0xddba('0xa6'),_0xddba('0xa7'));_0x30b71c[_0xddba('0x46')](_0xddba('0xa8'),_0xddba('0xa9'));_0x30b71c[_0xddba('0x46')](_0xddba('0xaa'),_0xddba('0x30'));}if(_0x2d72d2[_0xddba('0x42')])_0x30b71c[_0xddba('0x42')](_0x2d72d2['limit']);if(_0x2d72d2[_0xddba('0x20')])_0x30b71c[_0xddba('0x20')](_0x2d72d2[_0xddba('0x20')]);return db['sequelize'][_0xddba('0x3a')](_0x30b71c[_0xddba('0x97')](),_0xcf54c6);})['then'](function(_0x410e85){if(_0x410e85[_0xddba('0x40')]>0x0)_0x3bb208[_0xddba('0x44')](_0xddba('0xab'),_[_0xddba('0x2f')](_0x410e85,'id'));return db[_0xddba('0x96')][_0xddba('0x3a')](_0x3bb208[_0xddba('0x97')](),_0xcf54c6)[_0xddba('0x29')](function(_0x35bf49){var _0x2ceaf4=_[_0xddba('0xac')](_0x35bf49,_0xddba('0xad'));var _0x4b0e72=[];_0x410e85[_0xddba('0x32')](function(_0x2cf384){_0x4b0e72[_0xddba('0xae')](updateWhatsappInteraction(_0x2cf384,_0xe3b966,_0x2ceaf4));});return BPromise[_0xddba('0xaf')](_0x4b0e72);});});})[_0xddba('0x29')](function(_0x557b9f){_0x4eca38['rows']=_0x557b9f;return _0x4eca38;})[_0xddba('0x29')](respondWithFilteredResult(_0x4810b3,_0x2d72d2))[_0xddba('0x33')](handleError(_0x4810b3,null));};exports['show']=function(_0x2cd93e,_0x2983cb){var _0x21b4c6={'raw':![],'where':{'id':_0x2cd93e[_0xddba('0xb0')]['id']}},_0x45e54f={};_0x45e54f[_0xddba('0x39')]=_[_0xddba('0x3b')](db[_0xddba('0x99')][_0xddba('0x35')]);_0x45e54f[_0xddba('0x3a')]=_[_0xddba('0x3b')](_0x2cd93e[_0xddba('0x3a')]);_0x45e54f[_0xddba('0x3c')]=_['intersection'](_0x45e54f[_0xddba('0x39')],_0x45e54f[_0xddba('0x3a')]);_0x21b4c6[_0xddba('0x3e')]=_[_0xddba('0x3d')](_0x45e54f['model'],qs[_0xddba('0x3f')](_0x2cd93e[_0xddba('0x3a')][_0xddba('0x3f')]));_0x21b4c6[_0xddba('0x3e')]=_0x21b4c6['attributes'][_0xddba('0x40')]?_0x21b4c6['attributes']:_0x45e54f[_0xddba('0x39')];if(_0x2cd93e[_0xddba('0x3a')][_0xddba('0xb1')]){_0x21b4c6[_0xddba('0xb2')]=[{'all':!![]}];}_0x21b4c6=_[_0xddba('0x98')]({},_0x21b4c6,_0x2cd93e[_0xddba('0xb3')]);return db[_0xddba('0x99')]['find'](_0x21b4c6)[_0xddba('0x29')](handleEntityNotFound(_0x2983cb,null))[_0xddba('0x29')](respondWithResult(_0x2983cb,null))[_0xddba('0x33')](handleError(_0x2983cb,null));};exports['create']=function(_0x366039,_0x4f1609){return db[_0xddba('0x99')]['create'](_0x366039['body'],{})[_0xddba('0x29')](respondWithResult(_0x4f1609,0xc9))[_0xddba('0x33')](handleError(_0x4f1609,null));};exports['update']=function(_0x463f19,_0x527ce3){if(_0x463f19[_0xddba('0x70')]['id']){delete _0x463f19[_0xddba('0x70')]['id'];}return db['WhatsappInteraction'][_0xddba('0x5d')]({'where':{'id':_0x463f19[_0xddba('0xb0')]['id']}})[_0xddba('0x29')](handleEntityNotFound(_0x527ce3,null))[_0xddba('0x29')](saveUpdates(_0x463f19[_0xddba('0x70')],null))[_0xddba('0x29')](respondWithResult(_0x527ce3,null))[_0xddba('0x33')](handleError(_0x527ce3,null));};exports[_0xddba('0x2a')]=function(_0x192014,_0x50287c){return db[_0xddba('0x99')][_0xddba('0x5d')]({'where':{'id':_0x192014[_0xddba('0xb0')]['id']}})['then'](handleEntityNotFound(_0x50287c,null))[_0xddba('0x29')](removeEntity(_0x50287c,null))[_0xddba('0x33')](handleError(_0x50287c,null));};exports['describe']=function(_0x5a8310,_0x49e0b0){return db[_0xddba('0x99')][_0xddba('0xb4')]()[_0xddba('0x29')](respondWithResult(_0x49e0b0,null))[_0xddba('0x33')](handleError(_0x49e0b0,null));};exports[_0xddba('0xb5')]=function(_0x1cd609,_0x113cf5,_0x44a805){return db[_0xddba('0xb6')][_0xddba('0x5d')]({'where':{'id':_0x1cd609['params']['id']}})[_0xddba('0x29')](handleEntityNotFound(_0x113cf5,null))[_0xddba('0x29')](function(_0x3b8b8e){if(_0x3b8b8e){return _0x3b8b8e[_0xddba('0xb5')](_0x1cd609[_0xddba('0x70')][_0xddba('0xb7')],_['omit'](_0x1cd609[_0xddba('0x70')],['ids','id'])||{});}})[_0xddba('0x29')](respondWithResult(_0x113cf5,null))['catch'](handleError(_0x113cf5,null));};exports[_0xddba('0xb8')]=function(_0xdedbdd,_0x4b5d55,_0x28c3e4){var _0x13e5e7={'raw':![],'where':{}};var _0x4ca125={};var _0x419faa={'count':0x0,'rows':[]};return db[_0xddba('0x99')][_0xddba('0xb9')]({'where':{'id':_0xdedbdd[_0xddba('0xb0')]['id']}})[_0xddba('0x29')](handleEntityNotFound(_0x4b5d55,null))['then'](function(_0x11ea64){if(_0x11ea64){_0x4ca125[_0xddba('0x39')]=_[_0xddba('0x3b')](db[_0xddba('0xb6')]['rawAttributes']);_0x4ca125['query']=_[_0xddba('0x3b')](_0xdedbdd[_0xddba('0x3a')]);_0x4ca125[_0xddba('0x3c')]=_['intersection'](_0x4ca125['model'],_0x4ca125[_0xddba('0x3a')]);_0x13e5e7[_0xddba('0x3e')]=_[_0xddba('0x3d')](_0x4ca125[_0xddba('0x39')],qs['fields'](_0xdedbdd['query'][_0xddba('0x3f')]));_0x13e5e7[_0xddba('0x3e')]=_0x13e5e7[_0xddba('0x3e')][_0xddba('0x40')]?_0x13e5e7[_0xddba('0x3e')]:_0x4ca125[_0xddba('0x39')];if(!_0xdedbdd[_0xddba('0x3a')][_0xddba('0x41')](_0xddba('0xba'))){_0x13e5e7[_0xddba('0x42')]=qs[_0xddba('0x42')](_0xdedbdd[_0xddba('0x3a')][_0xddba('0x42')]);_0x13e5e7['offset']=qs[_0xddba('0x20')](_0xdedbdd[_0xddba('0x3a')][_0xddba('0x20')]);}_0x13e5e7['order']=qs[_0xddba('0xbb')](_0xdedbdd[_0xddba('0x3a')]['sort']);_0x13e5e7[_0xddba('0x44')]=qs['filters'](_[_0xddba('0x45')](_0xdedbdd['query'],_0x4ca125['filters']));_0x13e5e7[_0xddba('0x44')]['WhatsappInteractionId']=_0x11ea64['id'];if(_0xdedbdd[_0xddba('0x3a')]['filter']){_0x13e5e7[_0xddba('0x44')]=_[_0xddba('0x98')](_0x13e5e7[_0xddba('0x44')],{'$or':_['map'](_0x13e5e7[_0xddba('0x3e')],function(_0x305d5e){var _0x70e13d={};_0x70e13d[_0x305d5e]={'$like':'%'+_0xdedbdd[_0xddba('0x3a')][_0xddba('0x82')]+'%'};return _0x70e13d;})});}if(_0xdedbdd[_0xddba('0x3a')][_0xddba('0x77')]){var _0x23d05f=_0xdedbdd[_0xddba('0x3a')][_0xddba('0x77')][_0xddba('0x31')](',');var _0x11e436={};_0x11e436[_0x23d05f[0x0]]={'$gte':moment(_0x23d05f[0x1])[_0xddba('0xbc')]('YYYY-MM-DD\x20HH:mm:ss')};_0x13e5e7[_0xddba('0x44')]=_['merge'](_0x13e5e7[_0xddba('0x44')],_0x11e436);}_0x13e5e7=_[_0xddba('0x98')]({},_0x13e5e7,_0xdedbdd[_0xddba('0xb3')]);return db[_0xddba('0xb6')][_0xddba('0x22')]({'where':_0x13e5e7[_0xddba('0x44')]})[_0xddba('0x29')](function(_0x2c9ecc){_0x419faa['count']=_0x2c9ecc;if(_0xdedbdd[_0xddba('0x3a')][_0xddba('0xb1')]){_0x13e5e7['include']=[{'all':!![]}];}return db[_0xddba('0xb6')][_0xddba('0xbd')](_0x13e5e7);})[_0xddba('0x29')](function(_0xae87c3){_0x419faa['rows']=_0xae87c3;return _0x419faa;});}})[_0xddba('0x29')](respondWithFilteredResult(_0x4b5d55,_0x13e5e7))[_0xddba('0x33')](handleError(_0x4b5d55,null));};exports['addTags']=function(_0x1a9d82,_0x596408,_0xd35049){return db[_0xddba('0x99')]['find']({'where':{'id':_0x1a9d82[_0xddba('0xb0')]['id']}})[_0xddba('0x29')](handleEntityNotFound(_0x596408,null))[_0xddba('0x29')](function(_0x5ea44d){if(_0x5ea44d){return _0x5ea44d[_0xddba('0xbe')](_0x1a9d82[_0xddba('0x70')][_0xddba('0xb7')],_[_0xddba('0xbf')](_0x1a9d82[_0xddba('0x70')],['ids','id'])||{})[_0xddba('0xc0')](function(){return db['Tag']['findAll']({'attributes':['id',_0xddba('0x2c'),_0xddba('0x47')],'where':{'id':_0x1a9d82['body'][_0xddba('0xb7')]}});})[_0xddba('0x29')](function(_0x57afc4){socket['emit'](_0xddba('0xc1'),{'id':Number(_0x1a9d82['params']['id']),'tags':_0x57afc4||[]});return{'id':Number(_0x1a9d82['params']['id']),'tags':_0x57afc4||[]};});}})[_0xddba('0x29')](respondWithResult(_0x596408,null))[_0xddba('0x33')](handleError(_0x596408,null));};exports[_0xddba('0xc2')]=function(_0x68560e,_0x5bcb25,_0x4b30bd){return db[_0xddba('0x99')]['find']({'where':{'id':_0x68560e[_0xddba('0xb0')]['id']}})['then'](handleEntityNotFound(_0x5bcb25,null))['then'](function(_0x2603a6){if(_0x2603a6){return _0x2603a6['removeTags'](_0x68560e[_0xddba('0x3a')]['ids']);}})['then'](respondWithStatusCode(_0x5bcb25,null))[_0xddba('0x33')](handleError(_0x5bcb25,null));};exports[_0xddba('0xc3')]=function(_0x1d9594,_0xc674a5){var _0x4082e8=moment()['unix']()[_0xddba('0x97')]();var _0x29c674=path[_0xddba('0xc4')](config[_0xddba('0xc5')],'server',_0xddba('0xc6'),_0xddba('0xc7'));var _0x5a6ff8=path[_0xddba('0xc4')](config[_0xddba('0xc5')],_0xddba('0xc8'),_0xddba('0xc6'),_0xddba('0xc9'));var _0x365813=path[_0xddba('0xc4')](_0x29c674,_0x4082e8);var _0x191641=util[_0xddba('0xbc')](_0xddba('0xca'),_0x1d9594['params']['id'],_0x4082e8);var _0x32531b=path[_0xddba('0xc4')](_0x29c674,_0x191641);var _0x3f7713=[];_0x3f7713[_0xddba('0xae')]({'model':db[_0xddba('0x6e')],'as':_0xddba('0x6e'),'attributes':['id',_0xddba('0xcb')],'raw':!![]});_0x3f7713[_0xddba('0xae')]({'model':db[_0xddba('0xcc')],'as':_0xddba('0x63'),'attributes':['id','firstName',_0xddba('0xcd')],'raw':!![]});if(_0x1d9594[_0xddba('0x3a')]['attachments']){_0x3f7713['push']({'model':db[_0xddba('0xce')],'as':'Attachment','raw':!![]});}var _0x23cd91=[{'model':db['WhatsappMessage'],'as':_0xddba('0xcf'),'attributes':['id',_0xddba('0x70'),_0xddba('0x76'),'direction',_0xddba('0xd0'),'read'],'include':_0x3f7713}];_0x23cd91[_0xddba('0xae')]({'model':db[_0xddba('0xd1')],'as':_0xddba('0xd2'),'attributes':['id',_0xddba('0x2c')]});_0x23cd91['push']({'model':db['User'],'as':'Owner','attributes':['id',_0xddba('0xcb')]});return db[_0xddba('0x99')][_0xddba('0x5d')]({'where':{'id':_0x1d9594[_0xddba('0xb0')]['id']},'include':_0x23cd91})[_0xddba('0x29')](handleEntityNotFound(_0xc674a5,null))['then'](function(_0x438a2c){if(_0x438a2c){var _0x4a2ef5=_0x438a2c[_0xddba('0xd3')]({'plain':!![]});fs['mkdirSync'](_0x365813);var _0xcf70={'channel':'Whatsapp','account':_0x4a2ef5[_0xddba('0xd2')][_0xddba('0x2c')],'agent':_0x4a2ef5['Owner']?_0x4a2ef5[_0xddba('0xd4')][_0xddba('0xcb')]:_0xddba('0xd5'),'createdAt':moment(_0x4a2ef5[_0xddba('0x76')])[_0xddba('0xbc')](_0xddba('0xd6'))[_0xddba('0x97')](),'closedAt':_0x4a2ef5[_0xddba('0xd7')]?moment(_0x4a2ef5[_0xddba('0xd8')])[_0xddba('0xbc')]('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0x4a2ef5[_0xddba('0xd9')],'messages':_(_0x4a2ef5['Messages'])['filter']({'secret':![]})[_0xddba('0x2f')](function(_0x2e8da5){if(_0x2e8da5[_0xddba('0xce')]){var _0x1d3e2e=path[_0xddba('0xc4')](_0x5a6ff8,_0x2e8da5[_0xddba('0xce')][_0xddba('0xda')]);if(fs[_0xddba('0xdb')](_0x1d3e2e)){fs['createReadStream'](_0x1d3e2e)[_0xddba('0xdc')](fs[_0xddba('0xdd')](path[_0xddba('0xc4')](_0x365813,_0x2e8da5['Attachment']['basename'])));}}return{'date':moment(_0x2e8da5[_0xddba('0x76')])[_0xddba('0xbc')](_0xddba('0xd6'))[_0xddba('0x97')](),'sender':_0x2e8da5[_0xddba('0xde')]===_0xddba('0xdf')?_0x2e8da5[_0xddba('0x6e')]?_0x2e8da5[_0xddba('0x6e')][_0xddba('0xcb')]:_0xddba('0xe0'):_0x2e8da5[_0xddba('0x63')][_0xddba('0xe1')]+(_0x2e8da5[_0xddba('0x63')][_0xddba('0xcd')]?'\x20'+_0x2e8da5[_0xddba('0x63')][_0xddba('0xcd')]:''),'body':_0x2e8da5[_0xddba('0xce')]?_0x2e8da5[_0xddba('0xce')][_0xddba('0xda')]:_0x2e8da5[_0xddba('0x70')],'direction':_0x2e8da5[_0xddba('0xde')]===_0xddba('0xdf')?'A':'C','secret':_0x2e8da5[_0xddba('0xd0')],'read':_0x2e8da5[_0xddba('0x7e')],'attachment':_0x2e8da5[_0xddba('0xce')]};})[_0xddba('0x5f')]()};return ejs['renderFile'](path[_0xddba('0xc4')](config[_0xddba('0xc5')],'server',_0xddba('0xe2'),_0xddba('0xe3')),{'interaction':_0xcf70})[_0xddba('0x29')](function(_0x2ae25e){var _0x14ccdb=path['join'](_0x365813,_0xddba('0xe4')+_0x4a2ef5['id']+'-'+_0x4082e8+_0xddba('0xe5'));var _0x5de125={'path':_0x14ccdb,'channel':'Whatsapp','interactionId':_0x4a2ef5['id']};return pdf[_0xddba('0xe6')](_0x2ae25e,_0x5de125);})[_0xddba('0x29')](function(){return new BPromise(function(_0x1149a5,_0x62f15e){zipdir(_0x365813,{'saveTo':_0x32531b},function(_0x369921,_0x43840e){if(_0x369921)return _0x62f15e(_0x369921);return _0x1149a5(_0x43840e);});})[_0xddba('0x29')](function(){return new BPromise(function(_0x200812,_0x5e9de9){rimraf(_0x365813,function(_0x21e961){if(_0x21e961)_0x5e9de9(_0x21e961);return _0x200812();});});})[_0xddba('0x29')](function(){return _0xc674a5[_0xddba('0xc3')](_0x32531b,_0x191641,function(_0x632556){if(_0x632556){console[_0xddba('0xe7')]('err',_0x632556);}else{fs[_0xddba('0xe8')](_0x32531b);}});});});}else{return _0xc674a5[_0xddba('0x1d')](0xc8);}})[_0xddba('0x33')](handleError(_0xc674a5,null));};
\ No newline at end of file
index 0bbafb5..5b75988 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60d7=['setMaxListeners','update','remove','getUsers','then','setDataValue','map','findAll','unreadMessages','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x11fadc,_0x58d876){var _0xd81fd1=function(_0x45ac34){while(--_0x45ac34){_0x11fadc['push'](_0x11fadc['shift']());}};_0xd81fd1(++_0x58d876);}(_0x60d7,0x139));var _0x760d=function(_0x2675da,_0x1c3978){_0x2675da=_0x2675da-0x0;var _0x130b66=_0x60d7[_0x2675da];return _0x130b66;};'use strict';var EventEmitter=require(_0x760d('0x0'));var WhatsappInteraction=require(_0x760d('0x1'))['db']['WhatsappInteraction'];var WhatsappMessage=require(_0x760d('0x1'))['db']['WhatsappMessage'];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x760d('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x760d('0x3'),'afterDestroy':_0x760d('0x4')};function emitEvent(_0x2eebb3){return function(_0x2d963b,_0x47affe,_0x34ebba){_0x2d963b[_0x760d('0x5')]({'attributes':['id'],'raw':!![]})[_0x760d('0x6')](function(_0x463b41){_0x2d963b[_0x760d('0x7')]('Users',_0x463b41[_0x760d('0x8')](function(_0x3ffaa4){return{'id':_0x3ffaa4['id']};}));return WhatsappMessage[_0x760d('0x9')]({'where':{'WhatsappInteractionId':_0x2d963b['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x465102){_0x2d963b[_0x760d('0x7')](_0x760d('0xa'),_0x465102['length']);WhatsappInteractionEvents[_0x760d('0xb')](_0x2eebb3+':'+_0x2d963b['id'],_0x2d963b);WhatsappInteractionEvents[_0x760d('0xb')](_0x2eebb3,_0x2d963b);_0x34ebba(null);})['catch'](_0x34ebba(null));};}for(var e in events){if(events[_0x760d('0xc')](e)){var event=events[e];WhatsappInteraction[_0x760d('0xd')](e,emitEvent(event));}}module[_0x760d('0xe')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0x8ba2=['save','remove','getUsers','setDataValue','Users','findAll','then','unreadMessages','length','emit','catch','hook','exports','events','../../mysqldb','WhatsappInteraction','WhatsappMessage','setMaxListeners'];(function(_0x259f4f,_0x15b277){var _0x5e7bd4=function(_0x4d8964){while(--_0x4d8964){_0x259f4f['push'](_0x259f4f['shift']());}};_0x5e7bd4(++_0x15b277);}(_0x8ba2,0x13f));var _0x28ba=function(_0x250cfb,_0x3b907f){_0x250cfb=_0x250cfb-0x0;var _0x45a9de=_0x8ba2[_0x250cfb];return _0x45a9de;};'use strict';var EventEmitter=require(_0x28ba('0x0'));var WhatsappInteraction=require(_0x28ba('0x1'))['db'][_0x28ba('0x2')];var WhatsappMessage=require('../../mysqldb')['db'][_0x28ba('0x3')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x28ba('0x4')](0x0);var events={'afterCreate':_0x28ba('0x5'),'afterUpdate':'update','afterDestroy':_0x28ba('0x6')};function emitEvent(_0x1d7725){return function(_0x10d57d,_0xe89367,_0x3d039d){_0x10d57d[_0x28ba('0x7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x5aa8bf){_0x10d57d[_0x28ba('0x8')](_0x28ba('0x9'),_0x5aa8bf['map'](function(_0x3d98c8){return{'id':_0x3d98c8['id']};}));return WhatsappMessage[_0x28ba('0xa')]({'where':{'WhatsappInteractionId':_0x10d57d['id'],'direction':'in','read':![]},'raw':!![]});})[_0x28ba('0xb')](function(_0x3a9740){_0x10d57d[_0x28ba('0x8')](_0x28ba('0xc'),_0x3a9740[_0x28ba('0xd')]);WhatsappInteractionEvents[_0x28ba('0xe')](_0x1d7725+':'+_0x10d57d['id'],_0x10d57d);WhatsappInteractionEvents[_0x28ba('0xe')](_0x1d7725,_0x10d57d);_0x3d039d(null);})[_0x28ba('0xf')](_0x3d039d(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappInteraction[_0x28ba('0x10')](e,emitEvent(event));}}module[_0x28ba('0x11')]=WhatsappInteractionEvents;
\ No newline at end of file
index b7f5e41..a5d94dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccc1=['WhatsappInteraction','whatsapp_interactions','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','exports','define'];(function(_0x1c71cd,_0x4b696a){var _0x505500=function(_0x56300b){while(--_0x56300b){_0x1c71cd['push'](_0x1c71cd['shift']());}};_0x505500(++_0x4b696a);}(_0xccc1,0x73));var _0x1ccc=function(_0x1fa9c6,_0x4756ee){_0x1fa9c6=_0x1fa9c6-0x0;var _0x3460c7=_0xccc1[_0x1fa9c6];return _0x3460c7;};'use strict';var _=require(_0x1ccc('0x0'));var util=require(_0x1ccc('0x1'));var logger=require(_0x1ccc('0x2'))(_0x1ccc('0x3'));var moment=require(_0x1ccc('0x4'));var BPromise=require(_0x1ccc('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1ccc('0x6'));var rimraf=require(_0x1ccc('0x7'));var config=require(_0x1ccc('0x8'));var attributes=require('./whatsappInteraction.attributes');module[_0x1ccc('0x9')]=function(_0x3df958,_0x749770){return _0x3df958[_0x1ccc('0xa')](_0x1ccc('0xb'),attributes,{'tableName':_0x1ccc('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3fe328,_0x23ba3f,_0x6241ac){if(_0x3fe328[_0x1ccc('0xd')](_0x1ccc('0xe'))){_0x3fe328[_0x1ccc('0xf')]=moment()[_0x1ccc('0x10')](_0x1ccc('0x11'));}_0x6241ac(null,_0x3fe328);}}});};
\ No newline at end of file
+var _0xb396=['rimraf','../../config/environment','./whatsappInteraction.attributes','define','changed','closed','closedAt','format','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x299f73,_0x3efc1f){var _0x4b200b=function(_0x2b2151){while(--_0x2b2151){_0x299f73['push'](_0x299f73['shift']());}};_0x4b200b(++_0x3efc1f);}(_0xb396,0x1e8));var _0x6b39=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xb396[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x6b39('0x0'));var util=require(_0x6b39('0x1'));var logger=require(_0x6b39('0x2'))(_0x6b39('0x3'));var moment=require('moment');var BPromise=require(_0x6b39('0x4'));var rp=require(_0x6b39('0x5'));var fs=require('fs');var path=require(_0x6b39('0x6'));var rimraf=require(_0x6b39('0x7'));var config=require(_0x6b39('0x8'));var attributes=require(_0x6b39('0x9'));module['exports']=function(_0x474aa8,_0x48fbca){return _0x474aa8[_0x6b39('0xa')]('WhatsappInteraction',attributes,{'tableName':'whatsapp_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0xa5a6e0,_0x42d428,_0x3ea913){if(_0xa5a6e0[_0x6b39('0xb')](_0x6b39('0xc'))){_0xa5a6e0[_0x6b39('0xd')]=moment()[_0x6b39('0xe')]('YYYY-MM-DD\x20HH:mm:ss');}_0x3ea913(null,_0xa5a6e0);}}});};
\ No newline at end of file
index 158aa12..f5ac3f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf467=['addTags','ids','omit','body','spread','AddTags','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','request','then','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','error','code','message','result','UpdateWhatsappInteraction','update','options','raw','where','attributes','limit','debug','catch','AddTagsToWhatsappInteraction','WhatsappInteraction','find'];(function(_0x9b075,_0x3b12db){var _0x406ee2=function(_0x55e5c9){while(--_0x55e5c9){_0x9b075['push'](_0x9b075['shift']());}};_0x406ee2(++_0x3b12db);}(_0xf467,0x108));var _0x7f46=function(_0x218596,_0x5655d6){_0x218596=_0x218596-0x0;var _0x3e0674=_0xf467[_0x218596];return _0x3e0674;};'use strict';var _=require(_0x7f46('0x0'));var util=require(_0x7f46('0x1'));var moment=require(_0x7f46('0x2'));var BPromise=require('bluebird');var rs=require(_0x7f46('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7f46('0x4'))['db'];var utils=require(_0x7f46('0x5'));var logger=require(_0x7f46('0x6'))(_0x7f46('0x7'));var config=require(_0x7f46('0x8'));var jayson=require(_0x7f46('0x9'));var client=jayson['client'][_0x7f46('0xa')]({'port':0x232a});config[_0x7f46('0xb')]=_[_0x7f46('0xc')](config[_0x7f46('0xb')],{'host':_0x7f46('0xd'),'port':0x18eb});var socket=require(_0x7f46('0xe'))(new Redis(config[_0x7f46('0xb')]));require(_0x7f46('0xf'))['register'](socket);function respondWithRpcPromise(_0xc1c80,_0x3afe4b,_0x264006){return new BPromise(function(_0x3e7f2f,_0x12ebf8){return client[_0x7f46('0x10')](_0xc1c80,_0x264006)[_0x7f46('0x11')](function(_0x2ac84e){logger[_0x7f46('0x12')](_0x7f46('0x13'),_0x3afe4b,'request\x20sent');logger['debug']('WhatsappInteraction,\x20%s,\x20%s,\x20%s',_0x3afe4b,_0x7f46('0x14'),JSON['stringify'](_0x2ac84e));if(_0x2ac84e[_0x7f46('0x15')]){if(_0x2ac84e['error'][_0x7f46('0x16')]===0x1f4){logger[_0x7f46('0x15')](_0x7f46('0x13'),_0x3afe4b,_0x2ac84e['error'][_0x7f46('0x17')]);return _0x12ebf8(_0x2ac84e[_0x7f46('0x15')]['message']);}logger[_0x7f46('0x15')](_0x7f46('0x13'),_0x3afe4b,_0x2ac84e['error'][_0x7f46('0x17')]);return _0x3e7f2f(_0x2ac84e[_0x7f46('0x15')][_0x7f46('0x17')]);}else{logger[_0x7f46('0x12')](_0x7f46('0x13'),_0x3afe4b,_0x7f46('0x14'));_0x3e7f2f(_0x2ac84e[_0x7f46('0x18')][_0x7f46('0x17')]);}})['catch'](function(_0x229e6a){logger[_0x7f46('0x15')](_0x7f46('0x13'),_0x3afe4b,_0x229e6a);_0x12ebf8(_0x229e6a);});});}exports[_0x7f46('0x19')]=function(_0x1bd5c9){var _0x247e34=this;return new Promise(function(_0x2283aa,_0x9b4e8f){return db['WhatsappInteraction'][_0x7f46('0x1a')](_0x1bd5c9['body'],{'raw':_0x1bd5c9[_0x7f46('0x1b')]?_0x1bd5c9[_0x7f46('0x1b')][_0x7f46('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1bd5c9[_0x7f46('0x1b')]?_0x1bd5c9[_0x7f46('0x1b')][_0x7f46('0x1d')]||null:null,'attributes':_0x1bd5c9['options']?_0x1bd5c9[_0x7f46('0x1b')][_0x7f46('0x1e')]||null:null,'limit':_0x1bd5c9[_0x7f46('0x1b')]?_0x1bd5c9[_0x7f46('0x1b')][_0x7f46('0x1f')]||null:null})['then'](function(_0x357612){logger[_0x7f46('0x12')](_0x7f46('0x19'),_0x1bd5c9);logger[_0x7f46('0x20')](_0x7f46('0x19'),_0x1bd5c9,JSON['stringify'](_0x357612));_0x2283aa(_0x357612);})[_0x7f46('0x21')](function(_0x7e044b){logger[_0x7f46('0x15')](_0x7f46('0x19'),_0x7e044b['message'],_0x1bd5c9);_0x9b4e8f(_0x247e34[_0x7f46('0x15')](0x1f4,_0x7e044b[_0x7f46('0x17')]));});});};exports[_0x7f46('0x22')]=function(_0x55c23a){return new Promise(function(_0x339699,_0x149e5a){return db[_0x7f46('0x23')][_0x7f46('0x24')]({'where':_0x55c23a['options']?_0x55c23a['options']['where']||null:null})[_0x7f46('0x11')](function(_0x1e370c){if(_0x1e370c){return _0x1e370c[_0x7f46('0x25')](_0x55c23a['body'][_0x7f46('0x26')],_[_0x7f46('0x27')](_0x55c23a[_0x7f46('0x28')],[_0x7f46('0x26'),'id'])||{});}})[_0x7f46('0x29')](function(_0x328a31){logger[_0x7f46('0x12')](_0x7f46('0x2a'),_0x55c23a);logger[_0x7f46('0x20')](_0x7f46('0x2a'),_0x55c23a,JSON['stringify'](_0x328a31));_0x339699(_0x328a31);})[_0x7f46('0x21')](function(_0x100867){logger['error']('AddTags',_0x100867[_0x7f46('0x17')],_0x55c23a);_0x149e5a(_this['error'](0x1f4,_0x100867[_0x7f46('0x17')]));});});};
\ No newline at end of file
+var _0x8dca=['limit','AddTagsToWhatsappInteraction','find','addTags','body','ids','omit','AddTags','lodash','util','moment','bluebird','ioredis','../../config/utils','rpc','http','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','request','then','info','WhatsappInteraction,\x20%s,\x20%s','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','UpdateWhatsappInteraction','WhatsappInteraction','update','options','raw','where'];(function(_0x53a10e,_0x551de1){var _0x2af861=function(_0x541ffb){while(--_0x541ffb){_0x53a10e['push'](_0x53a10e['shift']());}};_0x2af861(++_0x551de1);}(_0x8dca,0x80));var _0xa8dc=function(_0x379f34,_0x36b269){_0x379f34=_0x379f34-0x0;var _0x567949=_0x8dca[_0x379f34];return _0x567949;};'use strict';var _=require(_0xa8dc('0x0'));var util=require(_0xa8dc('0x1'));var moment=require(_0xa8dc('0x2'));var BPromise=require(_0xa8dc('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa8dc('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa8dc('0x5'));var logger=require('../../config/logger')(_0xa8dc('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xa8dc('0x7')]({'port':0x232a});config[_0xa8dc('0x8')]=_[_0xa8dc('0x9')](config['redis'],{'host':_0xa8dc('0xa'),'port':0x18eb});var socket=require(_0xa8dc('0xb'))(new Redis(config[_0xa8dc('0x8')]));require(_0xa8dc('0xc'))[_0xa8dc('0xd')](socket);function respondWithRpcPromise(_0x486044,_0x29498c,_0x50cb1b){return new BPromise(function(_0x308cd6,_0x14442a){return client[_0xa8dc('0xe')](_0x486044,_0x50cb1b)[_0xa8dc('0xf')](function(_0x5253dd){logger[_0xa8dc('0x10')](_0xa8dc('0x11'),_0x29498c,'request\x20sent');logger[_0xa8dc('0x12')](_0xa8dc('0x13'),_0x29498c,_0xa8dc('0x14'),JSON[_0xa8dc('0x15')](_0x5253dd));if(_0x5253dd[_0xa8dc('0x16')]){if(_0x5253dd[_0xa8dc('0x16')]['code']===0x1f4){logger['error'](_0xa8dc('0x11'),_0x29498c,_0x5253dd[_0xa8dc('0x16')]['message']);return _0x14442a(_0x5253dd[_0xa8dc('0x16')]['message']);}logger['error'](_0xa8dc('0x11'),_0x29498c,_0x5253dd[_0xa8dc('0x16')][_0xa8dc('0x17')]);return _0x308cd6(_0x5253dd[_0xa8dc('0x16')][_0xa8dc('0x17')]);}else{logger[_0xa8dc('0x10')](_0xa8dc('0x11'),_0x29498c,_0xa8dc('0x14'));_0x308cd6(_0x5253dd[_0xa8dc('0x18')][_0xa8dc('0x17')]);}})[_0xa8dc('0x19')](function(_0x1c66ed){logger['error'](_0xa8dc('0x11'),_0x29498c,_0x1c66ed);_0x14442a(_0x1c66ed);});});}exports[_0xa8dc('0x1a')]=function(_0x59db54){var _0x40a5bc=this;return new Promise(function(_0xab6cca,_0xa9ad02){return db[_0xa8dc('0x1b')][_0xa8dc('0x1c')](_0x59db54['body'],{'raw':_0x59db54[_0xa8dc('0x1d')]?_0x59db54[_0xa8dc('0x1d')][_0xa8dc('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x59db54[_0xa8dc('0x1d')]?_0x59db54[_0xa8dc('0x1d')][_0xa8dc('0x1f')]||null:null,'attributes':_0x59db54[_0xa8dc('0x1d')]?_0x59db54[_0xa8dc('0x1d')]['attributes']||null:null,'limit':_0x59db54[_0xa8dc('0x1d')]?_0x59db54[_0xa8dc('0x1d')][_0xa8dc('0x20')]||null:null})[_0xa8dc('0xf')](function(_0x33b590){logger[_0xa8dc('0x10')]('UpdateWhatsappInteraction',_0x59db54);logger[_0xa8dc('0x12')](_0xa8dc('0x1a'),_0x59db54,JSON[_0xa8dc('0x15')](_0x33b590));_0xab6cca(_0x33b590);})['catch'](function(_0x24ac28){logger[_0xa8dc('0x16')](_0xa8dc('0x1a'),_0x24ac28['message'],_0x59db54);_0xa9ad02(_0x40a5bc[_0xa8dc('0x16')](0x1f4,_0x24ac28['message']));});});};exports[_0xa8dc('0x21')]=function(_0xb5f55f){return new Promise(function(_0xc5cd93,_0x41156b){return db[_0xa8dc('0x1b')][_0xa8dc('0x22')]({'where':_0xb5f55f['options']?_0xb5f55f[_0xa8dc('0x1d')][_0xa8dc('0x1f')]||null:null})[_0xa8dc('0xf')](function(_0x222607){if(_0x222607){return _0x222607[_0xa8dc('0x23')](_0xb5f55f[_0xa8dc('0x24')][_0xa8dc('0x25')],_[_0xa8dc('0x26')](_0xb5f55f[_0xa8dc('0x24')],[_0xa8dc('0x25'),'id'])||{});}})['spread'](function(_0x55692e){logger[_0xa8dc('0x10')](_0xa8dc('0x27'),_0xb5f55f);logger['debug']('AddTags',_0xb5f55f,JSON[_0xa8dc('0x15')](_0x55692e));_0xc5cd93(_0x55692e);})[_0xa8dc('0x19')](function(_0x30b304){logger['error']('AddTags',_0x30b304[_0xa8dc('0x17')],_0xb5f55f);_0x41156b(_this[_0xa8dc('0x16')](0x1f4,_0x30b304[_0xa8dc('0x17')]));});});};
\ No newline at end of file
index e018b0d..a838b38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa78c=['remove','update','emit','removeListener','length','whatsappInteraction:','./whatsappInteraction.events'];(function(_0xc67528,_0x24e2fb){var _0x38e26d=function(_0x1b0efe){while(--_0x1b0efe){_0xc67528['push'](_0xc67528['shift']());}};_0x38e26d(++_0x24e2fb);}(_0xa78c,0x13a));var _0xca78=function(_0xea51d,_0x3d8d89){_0xea51d=_0xea51d-0x0;var _0x190c63=_0xa78c[_0xea51d];return _0x190c63;};'use strict';var WhatsappInteractionEvents=require(_0xca78('0x0'));var events=['save',_0xca78('0x1'),_0xca78('0x2')];function createListener(_0xaf1cc4,_0x4f94ff){return function(_0x1a9bcc){_0x4f94ff[_0xca78('0x3')](_0xaf1cc4,_0x1a9bcc);};}function removeListener(_0xc824c6,_0x39f086){return function(){WhatsappInteractionEvents[_0xca78('0x4')](_0xc824c6,_0x39f086);};}exports['register']=function(_0x40ea2d){for(var _0x3d35f4=0x0,_0x50882e=events[_0xca78('0x5')];_0x3d35f4<_0x50882e;_0x3d35f4++){var _0x9f0d2b=events[_0x3d35f4];var _0x4d92b7=createListener(_0xca78('0x6')+_0x9f0d2b,_0x40ea2d);WhatsappInteractionEvents['on'](_0x9f0d2b,_0x4d92b7);}};
\ No newline at end of file
+var _0xb293=['save','remove','emit','removeListener','register','length','whatsappInteraction:'];(function(_0x1be3fe,_0x2016c3){var _0x2c5162=function(_0x3a6531){while(--_0x3a6531){_0x1be3fe['push'](_0x1be3fe['shift']());}};_0x2c5162(++_0x2016c3);}(_0xb293,0xfc));var _0x3b29=function(_0x36cee6,_0x22c2fd){_0x36cee6=_0x36cee6-0x0;var _0x23c57e=_0xb293[_0x36cee6];return _0x23c57e;};'use strict';var WhatsappInteractionEvents=require('./whatsappInteraction.events');var events=[_0x3b29('0x0'),_0x3b29('0x1'),'update'];function createListener(_0x485351,_0x28b373){return function(_0x4003ad){_0x28b373[_0x3b29('0x2')](_0x485351,_0x4003ad);};}function removeListener(_0x1409dd,_0x4beafc){return function(){WhatsappInteractionEvents[_0x3b29('0x3')](_0x1409dd,_0x4beafc);};}exports[_0x3b29('0x4')]=function(_0x5562d3){for(var _0x32ebf0=0x0,_0x34c0e2=events[_0x3b29('0x5')];_0x32ebf0<_0x34c0e2;_0x32ebf0++){var _0x409904=events[_0x32ebf0];var _0xfc27b3=createListener(_0x3b29('0x6')+_0x409904,_0x5562d3);WhatsappInteractionEvents['on'](_0x409904,_0xfc27b3);}};
\ No newline at end of file
index 46dd176..b9d8246 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ce2=['express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index','describe','show','post','tracked','whatsapp','whatsappmessage:create','create','put','/:id','update','/:id/accept','/:id/reject','delete','destroy','exports','multer','util'];(function(_0x26b062,_0x29a041){var _0x3d273a=function(_0x3b42aa){while(--_0x3b42aa){_0x26b062['push'](_0x26b062['shift']());}};_0x3d273a(++_0x29a041);}(_0x4ce2,0x1ae));var _0x24ce=function(_0x522c42,_0x46d4a7){_0x522c42=_0x522c42-0x0;var _0xd589e6=_0x4ce2[_0x522c42];return _0xd589e6;};'use strict';var multer=require(_0x24ce('0x0'));var util=require(_0x24ce('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x24ce('0x2'));var router=express[_0x24ce('0x3')]();var fs_extra=require(_0x24ce('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x24ce('0x5'));var config=require('../../config/environment');var controller=require('./whatsappMessage.controller');router[_0x24ce('0x6')]('/',auth[_0x24ce('0x7')](),controller[_0x24ce('0x8')]);router[_0x24ce('0x6')]('/describe',auth[_0x24ce('0x7')](),controller[_0x24ce('0x9')]);router[_0x24ce('0x6')]('/:id',auth[_0x24ce('0x7')](),controller[_0x24ce('0xa')]);router[_0x24ce('0xb')]('/',auth['isAuthenticated'](),interaction[_0x24ce('0xc')](_0x24ce('0xd'),_0x24ce('0xe')),controller[_0x24ce('0xf')]);router[_0x24ce('0xb')]('/:id/status',controller['status']);router[_0x24ce('0x10')](_0x24ce('0x11'),auth[_0x24ce('0x7')](),controller[_0x24ce('0x12')]);router['put'](_0x24ce('0x13'),auth['isAuthenticated'](),controller['accept']);router[_0x24ce('0x10')](_0x24ce('0x14'),auth['isAuthenticated'](),controller['reject']);router[_0x24ce('0x15')](_0x24ce('0x11'),auth['isAuthenticated'](),controller[_0x24ce('0x16')]);module[_0x24ce('0x17')]=router;
\ No newline at end of file
+var _0xa191=['../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','tracked','whatsapp','create','/:id/status','status','put','update','accept','/:id/reject','reject','delete','destroy','path','express','Router','../../components/auth/service'];(function(_0x360584,_0x4d5cbc){var _0x3d18c3=function(_0x561aa7){while(--_0x561aa7){_0x360584['push'](_0x360584['shift']());}};_0x3d18c3(++_0x4d5cbc);}(_0xa191,0x1dc));var _0x1a19=function(_0x4b574b,_0x132efc){_0x4b574b=_0x4b574b-0x0;var _0x32cd68=_0xa191[_0x4b574b];return _0x32cd68;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1a19('0x0'));var timeout=require('connect-timeout');var express=require(_0x1a19('0x1'));var router=express[_0x1a19('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x1a19('0x3'));var interaction=require(_0x1a19('0x4'));var config=require(_0x1a19('0x5'));var controller=require('./whatsappMessage.controller');router[_0x1a19('0x6')]('/',auth[_0x1a19('0x7')](),controller[_0x1a19('0x8')]);router[_0x1a19('0x6')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x1a19('0x6')](_0x1a19('0x9'),auth[_0x1a19('0x7')](),controller[_0x1a19('0xa')]);router[_0x1a19('0xb')]('/',auth['isAuthenticated'](),interaction[_0x1a19('0xc')](_0x1a19('0xd'),'whatsappmessage:create'),controller[_0x1a19('0xe')]);router[_0x1a19('0xb')](_0x1a19('0xf'),controller[_0x1a19('0x10')]);router[_0x1a19('0x11')](_0x1a19('0x9'),auth[_0x1a19('0x7')](),controller[_0x1a19('0x12')]);router[_0x1a19('0x11')]('/:id/accept',auth['isAuthenticated'](),controller[_0x1a19('0x13')]);router[_0x1a19('0x11')](_0x1a19('0x14'),auth[_0x1a19('0x7')](),controller[_0x1a19('0x15')]);router[_0x1a19('0x16')](_0x1a19('0x9'),auth['isAuthenticated'](),controller[_0x1a19('0x17')]);module['exports']=router;
\ No newline at end of file
index 28418ab..0196585 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe58a=['STRING','DATE','sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out'];(function(_0x4a4677,_0x10559e){var _0x3d0e6b=function(_0x541356){while(--_0x541356){_0x4a4677['push'](_0x4a4677['shift']());}};_0x3d0e6b(++_0x10559e);}(_0xe58a,0xc8));var _0xae58=function(_0x1ee24d,_0x3cdb24){_0x1ee24d=_0x1ee24d-0x0;var _0x2b5db9=_0xe58a[_0x1ee24d];return _0x2b5db9;};'use strict';var Sequelize=require(_0xae58('0x0'));module[_0xae58('0x1')]={'body':{'type':Sequelize[_0xae58('0x2')](_0xae58('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xae58('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xae58('0x5')]('in',_0xae58('0x6')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0xae58('0x7')]},'readAt':{'type':Sequelize[_0xae58('0x8')]},'secret':{'type':Sequelize[_0xae58('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xae58('0x7')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x6a93=['exports','TEXT','ENUM','out','STRING','DATE','BOOLEAN','sequelize'];(function(_0x136056,_0x1b9194){var _0x34252f=function(_0x31d6cb){while(--_0x31d6cb){_0x136056['push'](_0x136056['shift']());}};_0x34252f(++_0x1b9194);}(_0x6a93,0x1d7));var _0x36a9=function(_0x9a29e7,_0x57b3ba){_0x9a29e7=_0x9a29e7-0x0;var _0x423e0d=_0x6a93[_0x9a29e7];return _0x423e0d;};'use strict';var Sequelize=require(_0x36a9('0x0'));module[_0x36a9('0x1')]={'body':{'type':Sequelize[_0x36a9('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x36a9('0x3')]('in',_0x36a9('0x4')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0x36a9('0x5')](0xbe)},'phone':{'type':Sequelize[_0x36a9('0x5')]},'readAt':{'type':Sequelize[_0x36a9('0x6')]},'secret':{'type':Sequelize[_0x36a9('0x7')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x36a9('0x5')]},'providerResponse':{'type':Sequelize[_0x36a9('0x2')]}};
\ No newline at end of file
index dd9f6b2..87fb3d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c4a=['format','interaction','[WHATSAPPMESSAGE: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','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','rejectmessage','WhatsappAccount','WhatsappAccountId','twilio','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappMessage.socket','register','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','WhatsappMessage,\x20%s,\x20%s','message','result','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','sendStatus','stack','send','index','map','WhatsappMessage','rawAttributes','query','intersection','model','attributes','fields','length','nolimit','order','sort','filters','pick','filter','where','merge','type','VIRTUAL','name','options','include','rows','show','keys','includeAll','find','create','body','params','describe','accept','whatsapp','read','readAt','YYYY-MM-DD\x20HH:mm:ss','agent','UserId','get','WhatsappInteraction','WhatsappInteractionId','isNil'];(function(_0x5b2767,_0xc983df){var _0x482816=function(_0x1c8a6c){while(--_0x1c8a6c){_0x5b2767['push'](_0x5b2767['shift']());}};_0x482816(++_0xc983df);}(_0x8c4a,0xb0));var _0xa8c4=function(_0x2d9a29,_0x23df16){_0x2d9a29=_0x2d9a29-0x0;var _0x4a52c8=_0x8c4a[_0x2d9a29];return _0x4a52c8;};'use strict';var emlformat=require(_0xa8c4('0x0'));var rimraf=require(_0xa8c4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa8c4('0x2'));var rp=require('request-promise');var moment=require(_0xa8c4('0x3'));var BPromise=require(_0xa8c4('0x4'));var Mustache=require(_0xa8c4('0x5'));var util=require(_0xa8c4('0x6'));var path=require(_0xa8c4('0x7'));var sox=require(_0xa8c4('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa8c4('0x9'));var _=require(_0xa8c4('0xa'));var squel=require(_0xa8c4('0xb'));var crypto=require(_0xa8c4('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xa8c4('0xd'));var toCsv=require('to-csv');var querystring=require(_0xa8c4('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa8c4('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xa8c4('0x10'));var hardwareService=require(_0xa8c4('0x11'));var logger=require(_0xa8c4('0x12'))(_0xa8c4('0x13'));var utils=require(_0xa8c4('0x14'));var config=require(_0xa8c4('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xa8c4('0x16'))['db'];config['redis']=_['defaults'](config[_0xa8c4('0x17')],{'host':_0xa8c4('0x18'),'port':0x18eb});var socket=require(_0xa8c4('0x19'))(new Redis(config[_0xa8c4('0x17')]));require(_0xa8c4('0x1a'))[_0xa8c4('0x1b')](socket);var jayson=require(_0xa8c4('0x1c'));var client=jayson[_0xa8c4('0x1d')][_0xa8c4('0x1e')]({'port':0x232c});var client9002=jayson[_0xa8c4('0x1d')][_0xa8c4('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x19ee7c,_0x2e7c0b,_0x32d379,_0x256412){return new BPromise(function(_0x4efa9d,_0x182d74){var _0x27543a=_0x256412||client;return _0x27543a[_0xa8c4('0x1f')](_0x19ee7c,_0x32d379)[_0xa8c4('0x20')](function(_0x3557ae){logger[_0xa8c4('0x21')]('WhatsappMessage,\x20%s,\x20%s',_0x2e7c0b,_0xa8c4('0x22'));logger[_0xa8c4('0x23')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x2e7c0b,'request\x20sent',JSON[_0xa8c4('0x24')](_0x3557ae));if(_0x3557ae[_0xa8c4('0x25')]){if(_0x3557ae[_0xa8c4('0x25')][_0xa8c4('0x26')]===0x1f4){logger[_0xa8c4('0x25')](_0xa8c4('0x27'),_0x2e7c0b,_0x3557ae[_0xa8c4('0x25')][_0xa8c4('0x28')]);return _0x182d74(_0x3557ae[_0xa8c4('0x25')][_0xa8c4('0x28')]);}logger[_0xa8c4('0x25')](_0xa8c4('0x27'),_0x2e7c0b,_0x3557ae[_0xa8c4('0x25')]['message']);return _0x4efa9d(_0x3557ae[_0xa8c4('0x25')]['message']);}else{logger[_0xa8c4('0x21')](_0xa8c4('0x27'),_0x2e7c0b,_0xa8c4('0x22'));_0x4efa9d(_0x3557ae[_0xa8c4('0x29')][_0xa8c4('0x28')]);}})[_0xa8c4('0x2a')](function(_0x288d79){logger[_0xa8c4('0x25')](_0xa8c4('0x27'),_0x2e7c0b,_0x288d79);_0x182d74(_0x288d79);});});}function respondWithStatusCode(_0xc02d90,_0x4641a2){_0x4641a2=_0x4641a2||0xcc;return function(_0x8f794b){if(_0x8f794b){return _0xc02d90['sendStatus'](_0x4641a2);}return _0xc02d90[_0xa8c4('0x2b')](_0x4641a2)[_0xa8c4('0x2c')]();};}function respondWithResult(_0x524976,_0x551243){_0x551243=_0x551243||0xc8;return function(_0x37526c){if(_0x37526c){return _0x524976[_0xa8c4('0x2b')](_0x551243)[_0xa8c4('0x2d')](_0x37526c);}};}function respondWithFilteredResult(_0x160f7b,_0x2af22c){return function(_0x755c52){if(_0x755c52){var _0xd2b2f=typeof _0x2af22c[_0xa8c4('0x2e')]===_0xa8c4('0x2f')&&typeof _0x2af22c[_0xa8c4('0x30')]===_0xa8c4('0x2f');var _0x5ba4fb=_0x755c52['count'];var _0x43782c=_0xd2b2f?0x0:_0x2af22c[_0xa8c4('0x2e')];var _0x5a37f2=_0xd2b2f?_0x755c52[_0xa8c4('0x31')]:_0x2af22c['offset']+_0x2af22c[_0xa8c4('0x30')];var _0x10b16f;if(_0x5a37f2>=_0x5ba4fb){_0x5a37f2=_0x5ba4fb;_0x10b16f=0xc8;}else{_0x10b16f=0xce;}_0x160f7b['status'](_0x10b16f);return _0x160f7b[_0xa8c4('0x32')](_0xa8c4('0x33'),_0x43782c+'-'+_0x5a37f2+'/'+_0x5ba4fb)['json'](_0x755c52);}return null;};}function patchUpdates(_0x212fe1){return function(_0x1a0e4d){try{jsonpatch[_0xa8c4('0x34')](_0x1a0e4d,_0x212fe1,!![]);}catch(_0x3261e0){return BPromise[_0xa8c4('0x35')](_0x3261e0);}return _0x1a0e4d['save']();};}function saveUpdates(_0x4c8ee6,_0x951ce5){return function(_0x9907c2){if(_0x9907c2){return _0x9907c2[_0xa8c4('0x36')](_0x4c8ee6)[_0xa8c4('0x20')](function(_0x3516a5){return _0x3516a5;});}return null;};}function removeEntity(_0x2dc85e,_0x216ed7){return function(_0x3a5e25){if(_0x3a5e25){return _0x3a5e25[_0xa8c4('0x37')]()[_0xa8c4('0x20')](function(){_0x2dc85e[_0xa8c4('0x2b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x316828,_0x1040a4){return function(_0x1e47c4){if(!_0x1e47c4){_0x316828[_0xa8c4('0x38')](0x194);}return _0x1e47c4;};}function handleError(_0x20fedf,_0x22df20){_0x22df20=_0x22df20||0x1f4;return function(_0x3eaed5){logger['error'](_0x3eaed5[_0xa8c4('0x39')]);if(_0x3eaed5['name']){delete _0x3eaed5['name'];}_0x20fedf[_0xa8c4('0x2b')](_0x22df20)[_0xa8c4('0x3a')](_0x3eaed5);};}exports[_0xa8c4('0x3b')]=function(_0x5bd62f,_0x4a8afa){var _0x341a14={},_0x38d6e7={},_0x587dae={'count':0x0,'rows':[]};var _0x171a50=_[_0xa8c4('0x3c')](db[_0xa8c4('0x3d')][_0xa8c4('0x3e')],function(_0x3342d0){return{'name':_0x3342d0['fieldName'],'type':_0x3342d0['type']['key']};});_0x38d6e7['model']=_['map'](_0x171a50,'name');_0x38d6e7[_0xa8c4('0x3f')]=_['keys'](_0x5bd62f[_0xa8c4('0x3f')]);_0x38d6e7['filters']=_[_0xa8c4('0x40')](_0x38d6e7[_0xa8c4('0x41')],_0x38d6e7[_0xa8c4('0x3f')]);_0x341a14[_0xa8c4('0x42')]=_[_0xa8c4('0x40')](_0x38d6e7[_0xa8c4('0x41')],qs[_0xa8c4('0x43')](_0x5bd62f[_0xa8c4('0x3f')][_0xa8c4('0x43')]));_0x341a14[_0xa8c4('0x42')]=_0x341a14[_0xa8c4('0x42')][_0xa8c4('0x44')]?_0x341a14[_0xa8c4('0x42')]:_0x38d6e7[_0xa8c4('0x41')];if(!_0x5bd62f[_0xa8c4('0x3f')]['hasOwnProperty'](_0xa8c4('0x45'))){_0x341a14['limit']=qs['limit'](_0x5bd62f[_0xa8c4('0x3f')]['limit']);_0x341a14[_0xa8c4('0x2e')]=qs[_0xa8c4('0x2e')](_0x5bd62f['query']['offset']);}_0x341a14[_0xa8c4('0x46')]=qs[_0xa8c4('0x47')](_0x5bd62f[_0xa8c4('0x3f')][_0xa8c4('0x47')]);_0x341a14['where']=qs[_0xa8c4('0x48')](_[_0xa8c4('0x49')](_0x5bd62f[_0xa8c4('0x3f')],_0x38d6e7['filters']),_0x171a50);if(_0x5bd62f[_0xa8c4('0x3f')][_0xa8c4('0x4a')]){_0x341a14[_0xa8c4('0x4b')]=_[_0xa8c4('0x4c')](_0x341a14['where'],{'$or':_['map'](_0x171a50,function(_0x18b43b){if(_0x18b43b[_0xa8c4('0x4d')]!==_0xa8c4('0x4e')){var _0x4dba48={};_0x4dba48[_0x18b43b[_0xa8c4('0x4f')]]={'$like':'%'+_0x5bd62f[_0xa8c4('0x3f')]['filter']+'%'};return _0x4dba48;}})});}_0x341a14=_[_0xa8c4('0x4c')]({},_0x341a14,_0x5bd62f[_0xa8c4('0x50')]);var _0x20657d={'where':_0x341a14[_0xa8c4('0x4b')]};return db[_0xa8c4('0x3d')][_0xa8c4('0x31')](_0x20657d)[_0xa8c4('0x20')](function(_0x51d529){_0x587dae[_0xa8c4('0x31')]=_0x51d529;if(_0x5bd62f[_0xa8c4('0x3f')]['includeAll']){_0x341a14[_0xa8c4('0x51')]=[{'all':!![]}];}return db[_0xa8c4('0x3d')]['findAll'](_0x341a14);})['then'](function(_0x3203d6){_0x587dae[_0xa8c4('0x52')]=_0x3203d6;return _0x587dae;})[_0xa8c4('0x20')](respondWithFilteredResult(_0x4a8afa,_0x341a14))['catch'](handleError(_0x4a8afa,null));};exports[_0xa8c4('0x53')]=function(_0x13b598,_0x4d1048){var _0x41b29d={'raw':!![],'where':{'id':_0x13b598['params']['id']}},_0x3b27d8={};_0x3b27d8[_0xa8c4('0x41')]=_[_0xa8c4('0x54')](db['WhatsappMessage'][_0xa8c4('0x3e')]);_0x3b27d8[_0xa8c4('0x3f')]=_[_0xa8c4('0x54')](_0x13b598[_0xa8c4('0x3f')]);_0x3b27d8['filters']=_['intersection'](_0x3b27d8['model'],_0x3b27d8[_0xa8c4('0x3f')]);_0x41b29d[_0xa8c4('0x42')]=_[_0xa8c4('0x40')](_0x3b27d8[_0xa8c4('0x41')],qs[_0xa8c4('0x43')](_0x13b598[_0xa8c4('0x3f')][_0xa8c4('0x43')]));_0x41b29d[_0xa8c4('0x42')]=_0x41b29d[_0xa8c4('0x42')][_0xa8c4('0x44')]?_0x41b29d[_0xa8c4('0x42')]:_0x3b27d8[_0xa8c4('0x41')];if(_0x13b598[_0xa8c4('0x3f')][_0xa8c4('0x55')]){_0x41b29d[_0xa8c4('0x51')]=[{'all':!![]}];}_0x41b29d=_[_0xa8c4('0x4c')]({},_0x41b29d,_0x13b598[_0xa8c4('0x50')]);return db[_0xa8c4('0x3d')][_0xa8c4('0x56')](_0x41b29d)['then'](handleEntityNotFound(_0x4d1048,null))[_0xa8c4('0x20')](respondWithResult(_0x4d1048,null))['catch'](handleError(_0x4d1048,null));};exports[_0xa8c4('0x57')]=function(_0x449b60,_0xeafcbf){return db[_0xa8c4('0x3d')][_0xa8c4('0x57')](_0x449b60['body'],{})[_0xa8c4('0x20')](respondWithResult(_0xeafcbf,0xc9))[_0xa8c4('0x2a')](handleError(_0xeafcbf,null));};exports[_0xa8c4('0x36')]=function(_0x2e3204,_0x383344){if(_0x2e3204[_0xa8c4('0x58')]['id']){delete _0x2e3204[_0xa8c4('0x58')]['id'];}return db[_0xa8c4('0x3d')][_0xa8c4('0x56')]({'where':{'id':_0x2e3204[_0xa8c4('0x59')]['id']}})[_0xa8c4('0x20')](handleEntityNotFound(_0x383344,null))[_0xa8c4('0x20')](saveUpdates(_0x2e3204[_0xa8c4('0x58')],null))[_0xa8c4('0x20')](respondWithResult(_0x383344,null))[_0xa8c4('0x2a')](handleError(_0x383344,null));};exports[_0xa8c4('0x37')]=function(_0x783b98,_0x288244){return db[_0xa8c4('0x3d')]['find']({'where':{'id':_0x783b98[_0xa8c4('0x59')]['id']}})[_0xa8c4('0x20')](handleEntityNotFound(_0x288244,null))['then'](removeEntity(_0x288244,null))[_0xa8c4('0x2a')](handleError(_0x288244,null));};exports[_0xa8c4('0x5a')]=function(_0x5186a8,_0x847279){return db[_0xa8c4('0x3d')][_0xa8c4('0x5a')]()[_0xa8c4('0x20')](respondWithResult(_0x847279,null))[_0xa8c4('0x2a')](handleError(_0x847279,null));};var interaction_log=require(_0xa8c4('0x12'))('whatsapp-interactions');exports[_0xa8c4('0x5b')]=function(_0x2107f8,_0x1f143b,_0x3702de){var _0x1f1331={'agent':{},'channel':_0xa8c4('0x5c')};if(_0x2107f8[_0xa8c4('0x58')]['id']){delete _0x2107f8[_0xa8c4('0x58')]['id'];}_0x2107f8['body'][_0xa8c4('0x5d')]=!![];_0x2107f8[_0xa8c4('0x58')][_0xa8c4('0x5e')]=moment()['format'](_0xa8c4('0x5f'));_0x2107f8['body']['UserId']=_0x2107f8[_0xa8c4('0x58')]['UserId']||_0x2107f8['user']['id'];_0x1f1331[_0xa8c4('0x60')]['id']=_0x2107f8['body'][_0xa8c4('0x61')];return db[_0xa8c4('0x3d')]['find']({'where':{'id':_0x2107f8['params']['id'],'UserId':null}})[_0xa8c4('0x20')](handleEntityNotFound(_0x1f143b,null))[_0xa8c4('0x20')](saveUpdates(_0x2107f8[_0xa8c4('0x58')],null))['then'](function(_0x554303){if(_0x554303){_0x1f1331['message']=_0x554303[_0xa8c4('0x62')]({'plain':!![]});return db[_0xa8c4('0x63')]['find']({'where':{'id':_0x554303[_0xa8c4('0x64')]}});}return null;})[_0xa8c4('0x20')](handleEntityNotFound(_0x1f143b,null))[_0xa8c4('0x20')](function(_0x2e70e4){if(_0x2e70e4){return _0x2e70e4[_0xa8c4('0x36')]({'UserId':_0x2107f8[_0xa8c4('0x58')][_0xa8c4('0x61')],'read1stAt':_[_0xa8c4('0x65')](_0x2e70e4['read1stAt'])?moment()[_0xa8c4('0x66')](_0xa8c4('0x5f')):undefined});}return null;})[_0xa8c4('0x20')](function(_0x50233b){if(_0x50233b){_0x1f1331[_0xa8c4('0x67')]=_0x50233b[_0xa8c4('0x62')]({'plain':!![]});interaction_log[_0xa8c4('0x21')](_0xa8c4('0x68'),_0x2107f8[_0xa8c4('0x69')]['id'],_0x2107f8[_0xa8c4('0x69')][_0xa8c4('0x4f')],_0x2107f8['user'][_0xa8c4('0x6a')],_0x1f1331[_0xa8c4('0x67')]['id'],_0x2107f8[_0xa8c4('0x58')]?JSON[_0xa8c4('0x24')](_0x2107f8[_0xa8c4('0x58')]):_0xa8c4('0x6b'));return respondWithRpcPromise(_0xa8c4('0x6c'),'acceptMessage',_0x1f1331);}return null;})[_0xa8c4('0x20')](function(_0x5d8f15){var _0x42161a=_0xa8c4('0x6d')+_0x5d8f15[_0xa8c4('0x28')][_0xa8c4('0x6e')];return db[_0xa8c4('0x6f')]['query'](_0x42161a,{'type':db[_0xa8c4('0x70')][_0xa8c4('0x71')][_0xa8c4('0x72')],'raw':!![]})[_0xa8c4('0x20')](function(_0x17f780){return _0x17f780;});})[_0xa8c4('0x20')](function(_0x7267f1){if(_0x7267f1){_0x1f1331[_0xa8c4('0x28')][_0xa8c4('0x73')]=_0x7267f1[0x0];if(!_0x2107f8['body'][_0xa8c4('0x61')])return;return db[_0xa8c4('0x74')]['find']({'where':{'id':_0x2107f8[_0xa8c4('0x58')]['UserId'],'role':_0xa8c4('0x60')},'attributes':['id','name',_0xa8c4('0x75'),_0xa8c4('0x76'),_0xa8c4('0x77')],'raw':!![]});}return null;})[_0xa8c4('0x20')](function(_0x453d3f){if(!_0x453d3f)return null;_0x1f1331[_0xa8c4('0x28')][_0xa8c4('0x60')]=_0x453d3f;return _0x1f1331;})['then'](function(_0x5d2a92){if(_0x5d2a92){if(_0x2107f8[_0xa8c4('0x58')][_0xa8c4('0x78')]){_0x1f1331['message'][_0xa8c4('0x79')]=util[_0xa8c4('0x66')](_0xa8c4('0x7a'),_0x2107f8['user'][_0xa8c4('0x4f')]);_0x1f1331[_0xa8c4('0x28')]['channel']=_0x1f1331[_0xa8c4('0x7b')];_0x1f1331[_0xa8c4('0x28')][_0xa8c4('0x7c')]=_0x1f1331[_0xa8c4('0x7b')];_0x1f1331[_0xa8c4('0x28')][_0xa8c4('0x7d')]=_0xa8c4('0x5b');return respondWithRpcPromise('EventManager',_0xa8c4('0x7e'),{'event':_0xa8c4('0x7f'),'message':_0x1f1331[_0xa8c4('0x28')]},client9002)[_0xa8c4('0x20')](function(){return _0x1f1331;});}return _0x1f1331;}return null;})[_0xa8c4('0x20')](respondWithResult(_0x1f143b,null))['catch'](handleError(_0x1f143b,null));};var interaction_log=require(_0xa8c4('0x12'))('whatsapp-interactions');exports[_0xa8c4('0x35')]=function(_0x559996,_0x462147,_0x49c4cd){var _0x2e6898={'agent':{},'channel':_0xa8c4('0x5c')};if(_0x559996[_0xa8c4('0x58')]['id']){delete _0x559996[_0xa8c4('0x58')]['id'];}_0x559996[_0xa8c4('0x58')][_0xa8c4('0x61')]=_0x559996[_0xa8c4('0x58')][_0xa8c4('0x61')]||_0x559996[_0xa8c4('0x69')]['id'];_0x2e6898[_0xa8c4('0x60')]['id']=_0x559996[_0xa8c4('0x58')]['UserId'];return db['WhatsappMessage'][_0xa8c4('0x56')]({'where':{'id':_0x559996['params']['id'],'UserId':null}})[_0xa8c4('0x20')](handleEntityNotFound(_0x462147,null))['then'](function(_0x7b30e2){if(_0x7b30e2){_0x2e6898[_0xa8c4('0x28')]=_0x7b30e2['get']({'plain':!![]});return db[_0xa8c4('0x63')][_0xa8c4('0x56')]({'where':{'id':_0x7b30e2[_0xa8c4('0x64')]}});}return null;})[_0xa8c4('0x20')](handleEntityNotFound(_0x462147,null))[_0xa8c4('0x20')](function(_0x868f86){if(_0x868f86){_0x2e6898[_0xa8c4('0x67')]=_0x868f86['get']({'plain':!![]});interaction_log[_0xa8c4('0x21')](_0xa8c4('0x80'),_0x559996[_0xa8c4('0x69')]['id'],_0x559996['user'][_0xa8c4('0x4f')],_0x559996[_0xa8c4('0x69')]['role'],_0x2e6898[_0xa8c4('0x67')]['id'],_0x559996[_0xa8c4('0x58')]?JSON[_0xa8c4('0x24')](_0x559996[_0xa8c4('0x58')]):_0xa8c4('0x6b'));return respondWithRpcPromise(_0xa8c4('0x81'),_0xa8c4('0x82'),_0x2e6898);}return null;})[_0xa8c4('0x20')](function(_0x3698af){var _0x1151a1=_0xa8c4('0x6d')+_0x3698af[_0xa8c4('0x28')][_0xa8c4('0x6e')];return db['sequelize']['query'](_0x1151a1,{'type':db[_0xa8c4('0x70')][_0xa8c4('0x71')][_0xa8c4('0x72')],'raw':!![]})[_0xa8c4('0x20')](function(_0x1c11d8){return _0x1c11d8;});})[_0xa8c4('0x20')](function(_0x20556c){if(_0x20556c){_0x2e6898[_0xa8c4('0x28')]['contact']=_0x20556c[0x0];if(!_0x559996[_0xa8c4('0x58')]['UserId'])return;return db[_0xa8c4('0x74')][_0xa8c4('0x56')]({'where':{'id':_0x559996['body'][_0xa8c4('0x61')],'role':_0xa8c4('0x60')},'attributes':['id',_0xa8c4('0x4f'),'fullname','email',_0xa8c4('0x77')],'raw':!![]});}return null;})[_0xa8c4('0x20')](function(_0x2cfa76){if(!_0x2cfa76)return null;_0x2e6898['message'][_0xa8c4('0x60')]=_0x2cfa76;return _0x2e6898;})['then'](function(_0x1005b3){if(_0x1005b3){_0x1005b3['message'][_0xa8c4('0x79')]=util[_0xa8c4('0x66')](_0xa8c4('0x7a'),_0x559996[_0xa8c4('0x69')][_0xa8c4('0x4f')]);_0x1005b3['message']['channel']=_0x2e6898[_0xa8c4('0x7b')];_0x1005b3[_0xa8c4('0x28')][_0xa8c4('0x7c')]=_0x2e6898[_0xa8c4('0x7b')];_0x1005b3['message']['event']='reject';respondWithRpcPromise('EventManager',_0xa8c4('0x7e'),{'event':_0xa8c4('0x83'),'message':_0x1005b3[_0xa8c4('0x28')]},client9002);return _0x2e6898;}return null;})[_0xa8c4('0x20')](respondWithResult(_0x462147,null))[_0xa8c4('0x2a')](handleError(_0x462147,null));};exports[_0xa8c4('0x2b')]=function(_0x2bd26a,_0x41e3d5,_0x1c0824){if(_0x2bd26a[_0xa8c4('0x58')]['id']){delete _0x2bd26a[_0xa8c4('0x58')]['id'];}var _0x347b61;return db[_0xa8c4('0x3d')][_0xa8c4('0x56')]({'where':{'id':_0x2bd26a['params']['id']}})['then'](handleEntityNotFound(_0x41e3d5,null))[_0xa8c4('0x20')](function(_0x43a65d){if(_0x43a65d){_0x347b61=_0x43a65d;return db[_0xa8c4('0x84')][_0xa8c4('0x56')]({'where':{'id':_0x43a65d[_0xa8c4('0x85')]}});}})['then'](handleEntityNotFound(_0x41e3d5,null))[_0xa8c4('0x20')](function(_0x12eb0a){if(_0x12eb0a){logger[_0xa8c4('0x23')]('WhatsppMessage,\x20%s,\x20%s,\x20%s','status','received\x20delivery\x20report\x20from',_0x12eb0a[_0xa8c4('0x4d')],util['inspect'](_0x2bd26a[_0xa8c4('0x58')],{'showHidden':![],'depth':null}));switch(_0x12eb0a[_0xa8c4('0x4d')]){case _0xa8c4('0x86'):if(_0x2bd26a[_0xa8c4('0x58')][_0xa8c4('0x87')]&&_0x2bd26a[_0xa8c4('0x58')][_0xa8c4('0x87')]===_0x347b61[_0xa8c4('0x88')]&&_0x2bd26a['body'][_0xa8c4('0x89')]&&_0x2bd26a[_0xa8c4('0x58')][_0xa8c4('0x89')]==='read'){return _0x347b61[_0xa8c4('0x36')]({'read':!![]});}else{logger[_0xa8c4('0x25')](_0xa8c4('0x8a'),_0xa8c4('0x2b'),_0xa8c4('0x86'),util['inspect'](_0x2bd26a[_0xa8c4('0x58')],{'showHidden':![],'depth':null}));}break;}return _0x347b61;}})[_0xa8c4('0x20')](respondWithResult(_0x41e3d5,null))[_0xa8c4('0x2a')](handleError(_0x41e3d5,null));};
\ No newline at end of file
+var _0x1da9=['interaction','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','interface','SIP/%s','channel','event','accept','EventManager','acceptmessage','whatsapp-interactions','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','email','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','twilio','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','client','http','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','end','stack','send','index','map','WhatsappMessage','rawAttributes','fieldName','type','key','name','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','options','includeAll','findAll','params','include','find','create','body','describe','whatsapp','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','WhatsappInteraction','WhatsappInteractionId','isNil','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role'];(function(_0x3923a9,_0x1a55ee){var _0xa7b4f1=function(_0x5ec904){while(--_0x5ec904){_0x3923a9['push'](_0x3923a9['shift']());}};_0xa7b4f1(++_0x1a55ee);}(_0x1da9,0x141));var _0x91da=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0x1da9[_0x30ae5e];return _0x1f2e93;};'use strict';var emlformat=require(_0x91da('0x0'));var rimraf=require(_0x91da('0x1'));var zipdir=require(_0x91da('0x2'));var jsonpatch=require(_0x91da('0x3'));var rp=require(_0x91da('0x4'));var moment=require(_0x91da('0x5'));var BPromise=require(_0x91da('0x6'));var Mustache=require(_0x91da('0x7'));var util=require(_0x91da('0x8'));var path=require(_0x91da('0x9'));var sox=require(_0x91da('0xa'));var csv=require(_0x91da('0xb'));var ejs=require(_0x91da('0xc'));var fs=require('fs');var fs_extra=require(_0x91da('0xd'));var _=require(_0x91da('0xe'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x91da('0xf'));var deskjs=require(_0x91da('0x10'));var toCsv=require(_0x91da('0xb'));var querystring=require('querystring');var Papa=require(_0x91da('0x11'));var Redis=require(_0x91da('0x12'));var authService=require(_0x91da('0x13'));var qs=require(_0x91da('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x91da('0x15'));var logger=require(_0x91da('0x16'))('api');var utils=require(_0x91da('0x17'));var config=require(_0x91da('0x18'));var licenseUtil=require(_0x91da('0x19'));var db=require(_0x91da('0x1a'))['db'];config[_0x91da('0x1b')]=_[_0x91da('0x1c')](config[_0x91da('0x1b')],{'host':_0x91da('0x1d'),'port':0x18eb});var socket=require(_0x91da('0x1e'))(new Redis(config[_0x91da('0x1b')]));require('./whatsappMessage.socket')[_0x91da('0x1f')](socket);var jayson=require('jayson/promise');var client=jayson[_0x91da('0x20')][_0x91da('0x21')]({'port':0x232c});var client9002=jayson['client'][_0x91da('0x21')]({'port':0x232a});function respondWithRpcPromise(_0xc1e865,_0x36c0c9,_0x404abe,_0x3a9044){return new BPromise(function(_0x40dd9f,_0x3c2593){var _0xde7544=_0x3a9044||client;return _0xde7544[_0x91da('0x22')](_0xc1e865,_0x404abe)[_0x91da('0x23')](function(_0xe024bd){logger[_0x91da('0x24')](_0x91da('0x25'),_0x36c0c9,_0x91da('0x26'));logger[_0x91da('0x27')](_0x91da('0x28'),_0x36c0c9,'request\x20sent',JSON[_0x91da('0x29')](_0xe024bd));if(_0xe024bd[_0x91da('0x2a')]){if(_0xe024bd['error'][_0x91da('0x2b')]===0x1f4){logger[_0x91da('0x2a')](_0x91da('0x25'),_0x36c0c9,_0xe024bd['error'][_0x91da('0x2c')]);return _0x3c2593(_0xe024bd[_0x91da('0x2a')][_0x91da('0x2c')]);}logger[_0x91da('0x2a')](_0x91da('0x25'),_0x36c0c9,_0xe024bd['error'][_0x91da('0x2c')]);return _0x40dd9f(_0xe024bd[_0x91da('0x2a')][_0x91da('0x2c')]);}else{logger[_0x91da('0x24')](_0x91da('0x25'),_0x36c0c9,_0x91da('0x26'));_0x40dd9f(_0xe024bd[_0x91da('0x2d')][_0x91da('0x2c')]);}})[_0x91da('0x2e')](function(_0x263463){logger[_0x91da('0x2a')](_0x91da('0x25'),_0x36c0c9,_0x263463);_0x3c2593(_0x263463);});});}function respondWithStatusCode(_0x3deb73,_0x1a9b87){_0x1a9b87=_0x1a9b87||0xcc;return function(_0x4269f2){if(_0x4269f2){return _0x3deb73[_0x91da('0x2f')](_0x1a9b87);}return _0x3deb73[_0x91da('0x30')](_0x1a9b87)['end']();};}function respondWithResult(_0x275d54,_0x572320){_0x572320=_0x572320||0xc8;return function(_0x2afa22){if(_0x2afa22){return _0x275d54['status'](_0x572320)['json'](_0x2afa22);}};}function respondWithFilteredResult(_0x3d37c4,_0x274c82){return function(_0x74a4cf){if(_0x74a4cf){var _0x5ebd61=typeof _0x274c82[_0x91da('0x31')]===_0x91da('0x32')&&typeof _0x274c82[_0x91da('0x33')]===_0x91da('0x32');var _0x15c96c=_0x74a4cf['count'];var _0x51968d=_0x5ebd61?0x0:_0x274c82[_0x91da('0x31')];var _0x304b3c=_0x5ebd61?_0x74a4cf[_0x91da('0x34')]:_0x274c82[_0x91da('0x31')]+_0x274c82[_0x91da('0x33')];var _0x5d1faa;if(_0x304b3c>=_0x15c96c){_0x304b3c=_0x15c96c;_0x5d1faa=0xc8;}else{_0x5d1faa=0xce;}_0x3d37c4[_0x91da('0x30')](_0x5d1faa);return _0x3d37c4[_0x91da('0x35')](_0x91da('0x36'),_0x51968d+'-'+_0x304b3c+'/'+_0x15c96c)['json'](_0x74a4cf);}return null;};}function patchUpdates(_0x466b67){return function(_0x13d7af){try{jsonpatch['apply'](_0x13d7af,_0x466b67,!![]);}catch(_0x5e9adb){return BPromise[_0x91da('0x37')](_0x5e9adb);}return _0x13d7af[_0x91da('0x38')]();};}function saveUpdates(_0x41a0a5,_0x367c42){return function(_0x3e3268){if(_0x3e3268){return _0x3e3268[_0x91da('0x39')](_0x41a0a5)['then'](function(_0x175384){return _0x175384;});}return null;};}function removeEntity(_0x96b8da,_0x425e9d){return function(_0x29597f){if(_0x29597f){return _0x29597f[_0x91da('0x3a')]()[_0x91da('0x23')](function(){_0x96b8da[_0x91da('0x30')](0xcc)[_0x91da('0x3b')]();});}};}function handleEntityNotFound(_0x77a081,_0x1ffaa8){return function(_0x596f1a){if(!_0x596f1a){_0x77a081[_0x91da('0x2f')](0x194);}return _0x596f1a;};}function handleError(_0x44a2a9,_0x313547){_0x313547=_0x313547||0x1f4;return function(_0x2f41c5){logger[_0x91da('0x2a')](_0x2f41c5[_0x91da('0x3c')]);if(_0x2f41c5['name']){delete _0x2f41c5['name'];}_0x44a2a9[_0x91da('0x30')](_0x313547)[_0x91da('0x3d')](_0x2f41c5);};}exports[_0x91da('0x3e')]=function(_0xc94277,_0x441ab0){var _0x512f64={},_0x3c455a={},_0xe7c3ae={'count':0x0,'rows':[]};var _0x2be2bf=_[_0x91da('0x3f')](db[_0x91da('0x40')][_0x91da('0x41')],function(_0x264356){return{'name':_0x264356[_0x91da('0x42')],'type':_0x264356[_0x91da('0x43')][_0x91da('0x44')]};});_0x3c455a['model']=_['map'](_0x2be2bf,_0x91da('0x45'));_0x3c455a[_0x91da('0x46')]=_[_0x91da('0x47')](_0xc94277[_0x91da('0x46')]);_0x3c455a[_0x91da('0x48')]=_[_0x91da('0x49')](_0x3c455a[_0x91da('0x4a')],_0x3c455a['query']);_0x512f64[_0x91da('0x4b')]=_[_0x91da('0x49')](_0x3c455a[_0x91da('0x4a')],qs['fields'](_0xc94277[_0x91da('0x46')][_0x91da('0x4c')]));_0x512f64[_0x91da('0x4b')]=_0x512f64[_0x91da('0x4b')][_0x91da('0x4d')]?_0x512f64[_0x91da('0x4b')]:_0x3c455a['model'];if(!_0xc94277[_0x91da('0x46')][_0x91da('0x4e')](_0x91da('0x4f'))){_0x512f64[_0x91da('0x33')]=qs[_0x91da('0x33')](_0xc94277[_0x91da('0x46')]['limit']);_0x512f64[_0x91da('0x31')]=qs[_0x91da('0x31')](_0xc94277[_0x91da('0x46')][_0x91da('0x31')]);}_0x512f64[_0x91da('0x50')]=qs['sort'](_0xc94277['query']['sort']);_0x512f64[_0x91da('0x51')]=qs[_0x91da('0x48')](_[_0x91da('0x52')](_0xc94277[_0x91da('0x46')],_0x3c455a[_0x91da('0x48')]),_0x2be2bf);if(_0xc94277[_0x91da('0x46')][_0x91da('0x53')]){_0x512f64[_0x91da('0x51')]=_[_0x91da('0x54')](_0x512f64['where'],{'$or':_[_0x91da('0x3f')](_0x2be2bf,function(_0x275930){if(_0x275930[_0x91da('0x43')]!=='VIRTUAL'){var _0x5f38bc={};_0x5f38bc[_0x275930[_0x91da('0x45')]]={'$like':'%'+_0xc94277[_0x91da('0x46')][_0x91da('0x53')]+'%'};return _0x5f38bc;}})});}_0x512f64=_[_0x91da('0x54')]({},_0x512f64,_0xc94277[_0x91da('0x55')]);var _0x5a3690={'where':_0x512f64[_0x91da('0x51')]};return db[_0x91da('0x40')]['count'](_0x5a3690)[_0x91da('0x23')](function(_0x4c9f7c){_0xe7c3ae[_0x91da('0x34')]=_0x4c9f7c;if(_0xc94277[_0x91da('0x46')][_0x91da('0x56')]){_0x512f64['include']=[{'all':!![]}];}return db[_0x91da('0x40')][_0x91da('0x57')](_0x512f64);})[_0x91da('0x23')](function(_0x176e9d){_0xe7c3ae['rows']=_0x176e9d;return _0xe7c3ae;})[_0x91da('0x23')](respondWithFilteredResult(_0x441ab0,_0x512f64))[_0x91da('0x2e')](handleError(_0x441ab0,null));};exports['show']=function(_0x5b33fc,_0x32ed7d){var _0x63fbe6={'raw':!![],'where':{'id':_0x5b33fc[_0x91da('0x58')]['id']}},_0x1c2078={};_0x1c2078[_0x91da('0x4a')]=_[_0x91da('0x47')](db['WhatsappMessage'][_0x91da('0x41')]);_0x1c2078[_0x91da('0x46')]=_[_0x91da('0x47')](_0x5b33fc['query']);_0x1c2078[_0x91da('0x48')]=_[_0x91da('0x49')](_0x1c2078['model'],_0x1c2078[_0x91da('0x46')]);_0x63fbe6[_0x91da('0x4b')]=_[_0x91da('0x49')](_0x1c2078[_0x91da('0x4a')],qs[_0x91da('0x4c')](_0x5b33fc[_0x91da('0x46')][_0x91da('0x4c')]));_0x63fbe6['attributes']=_0x63fbe6[_0x91da('0x4b')]['length']?_0x63fbe6[_0x91da('0x4b')]:_0x1c2078[_0x91da('0x4a')];if(_0x5b33fc[_0x91da('0x46')][_0x91da('0x56')]){_0x63fbe6[_0x91da('0x59')]=[{'all':!![]}];}_0x63fbe6=_[_0x91da('0x54')]({},_0x63fbe6,_0x5b33fc['options']);return db['WhatsappMessage'][_0x91da('0x5a')](_0x63fbe6)[_0x91da('0x23')](handleEntityNotFound(_0x32ed7d,null))[_0x91da('0x23')](respondWithResult(_0x32ed7d,null))[_0x91da('0x2e')](handleError(_0x32ed7d,null));};exports[_0x91da('0x5b')]=function(_0x478ff9,_0x1aae97){return db[_0x91da('0x40')][_0x91da('0x5b')](_0x478ff9[_0x91da('0x5c')],{})[_0x91da('0x23')](respondWithResult(_0x1aae97,0xc9))[_0x91da('0x2e')](handleError(_0x1aae97,null));};exports[_0x91da('0x39')]=function(_0x49a114,_0x278502){if(_0x49a114[_0x91da('0x5c')]['id']){delete _0x49a114['body']['id'];}return db['WhatsappMessage'][_0x91da('0x5a')]({'where':{'id':_0x49a114[_0x91da('0x58')]['id']}})[_0x91da('0x23')](handleEntityNotFound(_0x278502,null))[_0x91da('0x23')](saveUpdates(_0x49a114[_0x91da('0x5c')],null))[_0x91da('0x23')](respondWithResult(_0x278502,null))[_0x91da('0x2e')](handleError(_0x278502,null));};exports[_0x91da('0x3a')]=function(_0xd13d41,_0xc880b6){return db[_0x91da('0x40')][_0x91da('0x5a')]({'where':{'id':_0xd13d41[_0x91da('0x58')]['id']}})[_0x91da('0x23')](handleEntityNotFound(_0xc880b6,null))[_0x91da('0x23')](removeEntity(_0xc880b6,null))['catch'](handleError(_0xc880b6,null));};exports[_0x91da('0x5d')]=function(_0xcc828b,_0x214c86){return db[_0x91da('0x40')]['describe']()['then'](respondWithResult(_0x214c86,null))['catch'](handleError(_0x214c86,null));};var interaction_log=require(_0x91da('0x16'))('whatsapp-interactions');exports['accept']=function(_0x5b74b9,_0x2baeee,_0x6354fd){var _0x2c2052={'agent':{},'channel':_0x91da('0x5e')};if(_0x5b74b9['body']['id']){delete _0x5b74b9[_0x91da('0x5c')]['id'];}_0x5b74b9[_0x91da('0x5c')][_0x91da('0x5f')]=!![];_0x5b74b9[_0x91da('0x5c')][_0x91da('0x60')]=moment()[_0x91da('0x61')](_0x91da('0x62'));_0x5b74b9[_0x91da('0x5c')][_0x91da('0x63')]=_0x5b74b9[_0x91da('0x5c')][_0x91da('0x63')]||_0x5b74b9[_0x91da('0x64')]['id'];_0x2c2052[_0x91da('0x65')]['id']=_0x5b74b9['body'][_0x91da('0x63')];return db[_0x91da('0x40')][_0x91da('0x5a')]({'where':{'id':_0x5b74b9['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x2baeee,null))[_0x91da('0x23')](saveUpdates(_0x5b74b9[_0x91da('0x5c')],null))[_0x91da('0x23')](function(_0x53d795){if(_0x53d795){_0x2c2052[_0x91da('0x2c')]=_0x53d795[_0x91da('0x66')]({'plain':!![]});return db[_0x91da('0x67')]['find']({'where':{'id':_0x53d795[_0x91da('0x68')]}});}return null;})[_0x91da('0x23')](handleEntityNotFound(_0x2baeee,null))['then'](function(_0x3203dd){if(_0x3203dd){return _0x3203dd['update']({'UserId':_0x5b74b9['body']['UserId'],'read1stAt':_[_0x91da('0x69')](_0x3203dd['read1stAt'])?moment()[_0x91da('0x61')](_0x91da('0x62')):undefined});}return null;})['then'](function(_0xb35925){if(_0xb35925){_0x2c2052['interaction']=_0xb35925[_0x91da('0x66')]({'plain':!![]});interaction_log[_0x91da('0x24')](_0x91da('0x6a'),_0x5b74b9[_0x91da('0x64')]['id'],_0x5b74b9[_0x91da('0x64')][_0x91da('0x45')],_0x5b74b9[_0x91da('0x64')][_0x91da('0x6b')],_0x2c2052[_0x91da('0x6c')]['id'],_0x5b74b9[_0x91da('0x5c')]?JSON['stringify'](_0x5b74b9[_0x91da('0x5c')]):_0x91da('0x6d'));return respondWithRpcPromise(_0x91da('0x6e'),_0x91da('0x6f'),_0x2c2052);}return null;})['then'](function(_0x21c428){var _0x1d1238=_0x91da('0x70')+_0x21c428[_0x91da('0x2c')][_0x91da('0x71')];return db[_0x91da('0x72')]['query'](_0x1d1238,{'type':db[_0x91da('0x73')][_0x91da('0x74')][_0x91da('0x75')],'raw':!![]})[_0x91da('0x23')](function(_0x2696e0){return _0x2696e0;});})[_0x91da('0x23')](function(_0x54bf2){if(_0x54bf2){_0x2c2052[_0x91da('0x2c')][_0x91da('0x76')]=_0x54bf2[0x0];if(!_0x5b74b9[_0x91da('0x5c')][_0x91da('0x63')])return;return db[_0x91da('0x77')][_0x91da('0x5a')]({'where':{'id':_0x5b74b9[_0x91da('0x5c')][_0x91da('0x63')],'role':_0x91da('0x65')},'attributes':['id',_0x91da('0x45'),_0x91da('0x78'),'email','internal'],'raw':!![]});}return null;})[_0x91da('0x23')](function(_0x3a9361){if(!_0x3a9361)return null;_0x2c2052[_0x91da('0x2c')][_0x91da('0x65')]=_0x3a9361;return _0x2c2052;})[_0x91da('0x23')](function(_0x311ea1){if(_0x311ea1){if(_0x5b74b9[_0x91da('0x5c')]['manual']){_0x2c2052['message'][_0x91da('0x79')]=util['format'](_0x91da('0x7a'),_0x5b74b9[_0x91da('0x64')][_0x91da('0x45')]);_0x2c2052[_0x91da('0x2c')][_0x91da('0x7b')]=_0x2c2052[_0x91da('0x7b')];_0x2c2052['message'][_0x91da('0x7c')]=_0x91da('0x7d');return respondWithRpcPromise(_0x91da('0x7e'),_0x91da('0x7e'),{'event':_0x91da('0x7f'),'message':_0x2c2052[_0x91da('0x2c')]},client9002)['then'](function(){return _0x2c2052;});}return _0x2c2052;}return null;})['then'](respondWithResult(_0x2baeee,null))['catch'](handleError(_0x2baeee,null));};var interaction_log=require(_0x91da('0x16'))(_0x91da('0x80'));exports[_0x91da('0x37')]=function(_0x58da30,_0x559064,_0x176823){var _0x2b559d={'agent':{},'channel':'whatsapp'};if(_0x58da30[_0x91da('0x5c')]['id']){delete _0x58da30[_0x91da('0x5c')]['id'];}_0x58da30[_0x91da('0x5c')][_0x91da('0x63')]=_0x58da30['body']['UserId']||_0x58da30['user']['id'];_0x2b559d[_0x91da('0x65')]['id']=_0x58da30[_0x91da('0x5c')]['UserId'];return db[_0x91da('0x40')][_0x91da('0x5a')]({'where':{'id':_0x58da30[_0x91da('0x58')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x559064,null))[_0x91da('0x23')](function(_0x171b84){if(_0x171b84){_0x2b559d[_0x91da('0x2c')]=_0x171b84[_0x91da('0x66')]({'plain':!![]});return db[_0x91da('0x67')][_0x91da('0x5a')]({'where':{'id':_0x171b84['WhatsappInteractionId']}});}return null;})[_0x91da('0x23')](handleEntityNotFound(_0x559064,null))[_0x91da('0x23')](function(_0x5309af){if(_0x5309af){_0x2b559d[_0x91da('0x6c')]=_0x5309af[_0x91da('0x66')]({'plain':!![]});interaction_log[_0x91da('0x24')](_0x91da('0x81'),_0x58da30['user']['id'],_0x58da30['user'][_0x91da('0x45')],_0x58da30['user']['role'],_0x2b559d[_0x91da('0x6c')]['id'],_0x58da30[_0x91da('0x5c')]?JSON['stringify'](_0x58da30['body']):'null');return respondWithRpcPromise(_0x91da('0x82'),_0x91da('0x83'),_0x2b559d);}return null;})[_0x91da('0x23')](function(_0x5077f1){var _0x4bcfeb=_0x91da('0x70')+_0x5077f1[_0x91da('0x2c')][_0x91da('0x71')];return db[_0x91da('0x72')][_0x91da('0x46')](_0x4bcfeb,{'type':db[_0x91da('0x73')][_0x91da('0x74')][_0x91da('0x75')],'raw':!![]})[_0x91da('0x23')](function(_0x31c49d){return _0x31c49d;});})[_0x91da('0x23')](function(_0x140eb0){if(_0x140eb0){_0x2b559d['message'][_0x91da('0x76')]=_0x140eb0[0x0];if(!_0x58da30['body'][_0x91da('0x63')])return;return db[_0x91da('0x77')][_0x91da('0x5a')]({'where':{'id':_0x58da30[_0x91da('0x5c')][_0x91da('0x63')],'role':_0x91da('0x65')},'attributes':['id',_0x91da('0x45'),'fullname',_0x91da('0x84'),'internal'],'raw':!![]});}return null;})['then'](function(_0x3d99a8){if(!_0x3d99a8)return null;_0x2b559d[_0x91da('0x2c')][_0x91da('0x65')]=_0x3d99a8;return _0x2b559d;})[_0x91da('0x23')](function(_0x18108e){if(_0x18108e){_0x18108e['message'][_0x91da('0x79')]=util[_0x91da('0x61')](_0x91da('0x7a'),_0x58da30[_0x91da('0x64')][_0x91da('0x45')]);_0x18108e[_0x91da('0x2c')][_0x91da('0x7b')]=_0x2b559d[_0x91da('0x7b')];_0x18108e[_0x91da('0x2c')][_0x91da('0x7c')]=_0x91da('0x37');respondWithRpcPromise(_0x91da('0x7e'),_0x91da('0x7e'),{'event':'rejectmessage','message':_0x18108e[_0x91da('0x2c')]},client9002);return _0x2b559d;}return null;})[_0x91da('0x23')](respondWithResult(_0x559064,null))[_0x91da('0x2e')](handleError(_0x559064,null));};exports['status']=function(_0x191605,_0x27e39c,_0x5bebc0){if(_0x191605['body']['id']){delete _0x191605[_0x91da('0x5c')]['id'];}var _0x17e72b;return db[_0x91da('0x40')][_0x91da('0x5a')]({'where':{'id':_0x191605[_0x91da('0x58')]['id']}})[_0x91da('0x23')](handleEntityNotFound(_0x27e39c,null))[_0x91da('0x23')](function(_0x47567b){if(_0x47567b){_0x17e72b=_0x47567b;return db[_0x91da('0x85')][_0x91da('0x5a')]({'where':{'id':_0x47567b[_0x91da('0x86')]}});}})['then'](handleEntityNotFound(_0x27e39c,null))[_0x91da('0x23')](function(_0x430724){if(_0x430724){logger[_0x91da('0x27')](_0x91da('0x87'),_0x91da('0x30'),_0x91da('0x88'),_0x430724[_0x91da('0x43')],util[_0x91da('0x89')](_0x191605['body'],{'showHidden':![],'depth':null}));switch(_0x430724[_0x91da('0x43')]){case'twilio':if(_0x191605[_0x91da('0x5c')][_0x91da('0x8a')]&&_0x191605[_0x91da('0x5c')][_0x91da('0x8a')]===_0x17e72b[_0x91da('0x8b')]&&_0x191605[_0x91da('0x5c')][_0x91da('0x8c')]&&_0x191605['body'][_0x91da('0x8c')]===_0x91da('0x5f')){return _0x17e72b[_0x91da('0x39')]({'read':!![]});}else{logger[_0x91da('0x2a')](_0x91da('0x8d'),'status',_0x91da('0x8e'),util[_0x91da('0x89')](_0x191605[_0x91da('0x5c')],{'showHidden':![],'depth':null}));}break;}return _0x17e72b;}})[_0x91da('0x23')](respondWithResult(_0x27e39c,null))[_0x91da('0x2e')](handleError(_0x27e39c,null));};
\ No newline at end of file
index 18fc942..23c3955 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bde=['hook','events','../../mysqldb','WhatsappMessage','save','update','remove','emit','hasOwnProperty'];(function(_0x58e77d,_0x1738fd){var _0x2f3740=function(_0x33146a){while(--_0x33146a){_0x58e77d['push'](_0x58e77d['shift']());}};_0x2f3740(++_0x1738fd);}(_0x4bde,0x1b1));var _0xe4bd=function(_0x5dd439,_0x32cdf2){_0x5dd439=_0x5dd439-0x0;var _0x3fc93b=_0x4bde[_0x5dd439];return _0x3fc93b;};'use strict';var EventEmitter=require(_0xe4bd('0x0'));var WhatsappMessage=require(_0xe4bd('0x1'))['db'][_0xe4bd('0x2')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe4bd('0x3'),'afterUpdate':_0xe4bd('0x4'),'afterDestroy':_0xe4bd('0x5')};function emitEvent(_0x3108bd){return function(_0x5741e5,_0x210d47,_0x1b8621){WhatsappMessageEvents[_0xe4bd('0x6')](_0x3108bd+':'+_0x5741e5['id'],_0x5741e5);WhatsappMessageEvents[_0xe4bd('0x6')](_0x3108bd,_0x5741e5);_0x1b8621(null);};}for(var e in events){if(events[_0xe4bd('0x7')](e)){var event=events[e];WhatsappMessage[_0xe4bd('0x8')](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
+var _0x8caf=['remove','emit','hasOwnProperty','exports','../../mysqldb','WhatsappMessage','setMaxListeners','save','update'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0x8caf,0x1ab));var _0xf8ca=function(_0x4f2bc2,_0x1520ed){_0x4f2bc2=_0x4f2bc2-0x0;var _0x45e3e1=_0x8caf[_0x4f2bc2];return _0x45e3e1;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require(_0xf8ca('0x0'))['db'][_0xf8ca('0x1')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0xf8ca('0x2')](0x0);var events={'afterCreate':_0xf8ca('0x3'),'afterUpdate':_0xf8ca('0x4'),'afterDestroy':_0xf8ca('0x5')};function emitEvent(_0x4e6684){return function(_0x129ca9,_0x23939c,_0x2a9691){WhatsappMessageEvents[_0xf8ca('0x6')](_0x4e6684+':'+_0x129ca9['id'],_0x129ca9);WhatsappMessageEvents[_0xf8ca('0x6')](_0x4e6684,_0x129ca9);_0x2a9691(null);};}for(var e in events){if(events[_0xf8ca('0x7')](e)){var event=events[e];WhatsappMessage['hook'](e,emitEvent(event));}}module[_0xf8ca('0x8')]=WhatsappMessageEvents;
\ No newline at end of file
index 3cc224f..f2d66b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa2a=['secret','isNil','UserId','WhatsappInteraction','findOne','then','update','catch','error','out','WhatsappAccount','WhatsappAccountId','type','twilio','accountSid','phone','create','whatsapp:','remote','/api/whatsapp/messages/','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','inspect','afterCreate','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','WhatsappMessage','messageId','fti_whatsapp_messages','body','FULLTEXT','models','get','toLowerCase','direction'];(function(_0x4d9947,_0x12e363){var _0x264ae9=function(_0x90af8b){while(--_0x90af8b){_0x4d9947['push'](_0x4d9947['shift']());}};_0x264ae9(++_0x12e363);}(_0xaa2a,0x1a4));var _0xaaa2=function(_0x5a8d27,_0x188425){_0x5a8d27=_0x5a8d27-0x0;var _0x52dfa5=_0xaa2a[_0x5a8d27];return _0x52dfa5;};'use strict';var _=require(_0xaaa2('0x0'));var util=require(_0xaaa2('0x1'));var logger=require(_0xaaa2('0x2'))(_0xaaa2('0x3'));var moment=require('moment');var BPromise=require(_0xaaa2('0x4'));var rp=require(_0xaaa2('0x5'));var fs=require('fs');var path=require(_0xaaa2('0x6'));var rimraf=require(_0xaaa2('0x7'));var config=require(_0xaaa2('0x8'));var attributes=require('./whatsappMessage.attributes');module[_0xaaa2('0x9')]=function(_0x2101c2,_0x2c59d2){return _0x2101c2[_0xaaa2('0xa')](_0xaaa2('0xb'),attributes,{'tableName':'whatsapp_messages','paranoid':![],'indexes':[{'name':_0xaaa2('0xc'),'fields':[_0xaaa2('0xc')]},{'name':_0xaaa2('0xd'),'fields':[_0xaaa2('0xe')],'type':_0xaaa2('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x52dd98,_0x827ca4,_0x1a7563){var _0x58efe7=_0x2101c2[_0xaaa2('0x10')];var _0x3d800a=_0x52dd98[_0xaaa2('0x11')]({'plain':!![]});if(_0x3d800a['direction'][_0xaaa2('0x12')]()==='in'||_0x3d800a[_0xaaa2('0x13')][_0xaaa2('0x12')]()==='out'&&!_0x3d800a[_0xaaa2('0x14')]&&!_[_0xaaa2('0x15')](_0x3d800a[_0xaaa2('0x16')])){_0x58efe7[_0xaaa2('0x17')][_0xaaa2('0x18')]({'where':{'id':_0x3d800a['WhatsappInteractionId']}})[_0xaaa2('0x19')](function(_0x49f944){if(_0x49f944){_0x49f944[_0xaaa2('0x1a')]({'lastMsgAt':_0x3d800a['createdAt'],'lastMsgDirection':_0x3d800a[_0xaaa2('0x13')][_0xaaa2('0x12')]()});}})[_0xaaa2('0x1b')](function(_0x45f4ef){console[_0xaaa2('0x1c')](_0x45f4ef);});}if(_0x3d800a[_0xaaa2('0x13')]===_0xaaa2('0x1d')&&!_0x3d800a[_0xaaa2('0x14')]){var _0x383a6d;_0x58efe7[_0xaaa2('0x1e')]['find']({'where':{'id':_0x3d800a[_0xaaa2('0x1f')]},'raw':!![]})[_0xaaa2('0x19')](function(_0x50aff2){_0x383a6d=_0x50aff2;if(_0x383a6d&&_0x383a6d[_0xaaa2('0x20')]){switch(_0x383a6d[_0xaaa2('0x20')]){case'twilio':var _0x130bba=require(_0xaaa2('0x21'));if(_0x383a6d[_0xaaa2('0x22')]&&_0x383a6d['authToken']&&_0x383a6d[_0xaaa2('0x23')]){var _0x127ea4=new _0x130bba(_0x383a6d[_0xaaa2('0x22')],_0x383a6d['authToken']);_0x127ea4['messages'][_0xaaa2('0x24')]({'body':_0x3d800a['body'],'to':_0xaaa2('0x25')+_0x3d800a[_0xaaa2('0x23')],'from':_0xaaa2('0x25')+_0x383a6d['phone'],'statusCallback':_0x383a6d[_0xaaa2('0x26')]+_0xaaa2('0x27')+_0x3d800a['id']+'/status?token='+_0x383a6d['token']})[_0xaaa2('0x19')](function(_0x564ce8){if(_0x564ce8['sid']){return _0x52dd98[_0xaaa2('0x1a')]({'messageId':_0x564ce8[_0xaaa2('0x28')]});}})[_0xaaa2('0x1b')](function(_0x24ef79){logger[_0xaaa2('0x1c')](_0xaaa2('0x29'),'afterCreate',_0xaaa2('0x21'),util[_0xaaa2('0x2a')](_0x24ef79,{'showHidden':![],'depth':null}));});}else{logger[_0xaaa2('0x1c')](_0xaaa2('0x29'),_0xaaa2('0x2b'),'twilio','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;}}})['finally'](function(){_0x1a7563();});}else{_0x1a7563();}}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xb81d=['then','update','createdAt','catch','error','WhatsappAccount','WhatsappAccountId','type','twilio','accountSid','authToken','phone','messages','whatsapp:','remote','/api/whatsapp/messages/','token','WhatsappMessage,\x20%s,\x20%s,\x20%s','inspect','afterCreate','finally','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','request-promise','rimraf','../../config/environment','./whatsappMessage.attributes','exports','define','whatsapp_messages','messageId','fti_whatsapp_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','UserId','findOne','WhatsappInteractionId'];(function(_0x53c364,_0x25afb7){var _0x3ef64e=function(_0x5aa2c6){while(--_0x5aa2c6){_0x53c364['push'](_0x53c364['shift']());}};_0x3ef64e(++_0x25afb7);}(_0xb81d,0x73));var _0xdb81=function(_0x47e462,_0x57135f){_0x47e462=_0x47e462-0x0;var _0xf45f50=_0xb81d[_0x47e462];return _0xf45f50;};'use strict';var _=require(_0xdb81('0x0'));var util=require('util');var logger=require(_0xdb81('0x1'))(_0xdb81('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xdb81('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdb81('0x4'));var config=require(_0xdb81('0x5'));var attributes=require(_0xdb81('0x6'));module[_0xdb81('0x7')]=function(_0x8cb016,_0x12deb8){return _0x8cb016[_0xdb81('0x8')]('WhatsappMessage',attributes,{'tableName':_0xdb81('0x9'),'paranoid':![],'indexes':[{'name':_0xdb81('0xa'),'fields':[_0xdb81('0xa')]},{'name':_0xdb81('0xb'),'fields':[_0xdb81('0xc')],'type':_0xdb81('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3080b7,_0x55d998,_0x317875){var _0x33cf45=_0x8cb016[_0xdb81('0xe')];var _0x4ace36=_0x3080b7[_0xdb81('0xf')]({'plain':!![]});if(_0x4ace36[_0xdb81('0x10')][_0xdb81('0x11')]()==='in'||_0x4ace36[_0xdb81('0x10')][_0xdb81('0x11')]()===_0xdb81('0x12')&&!_0x4ace36[_0xdb81('0x13')]&&!_['isNil'](_0x4ace36[_0xdb81('0x14')])){_0x33cf45['WhatsappInteraction'][_0xdb81('0x15')]({'where':{'id':_0x4ace36[_0xdb81('0x16')]}})[_0xdb81('0x17')](function(_0x13af37){if(_0x13af37){_0x13af37[_0xdb81('0x18')]({'lastMsgAt':_0x4ace36[_0xdb81('0x19')],'lastMsgDirection':_0x4ace36[_0xdb81('0x10')][_0xdb81('0x11')]()});}})[_0xdb81('0x1a')](function(_0x172e3e){console[_0xdb81('0x1b')](_0x172e3e);});}if(_0x4ace36[_0xdb81('0x10')]===_0xdb81('0x12')&&!_0x4ace36['secret']){var _0x59743e;_0x33cf45[_0xdb81('0x1c')]['find']({'where':{'id':_0x4ace36[_0xdb81('0x1d')]},'raw':!![]})[_0xdb81('0x17')](function(_0x5545e3){_0x59743e=_0x5545e3;if(_0x59743e&&_0x59743e[_0xdb81('0x1e')]){switch(_0x59743e[_0xdb81('0x1e')]){case _0xdb81('0x1f'):var _0x418f09=require(_0xdb81('0x1f'));if(_0x59743e[_0xdb81('0x20')]&&_0x59743e[_0xdb81('0x21')]&&_0x59743e[_0xdb81('0x22')]){var _0x446491=new _0x418f09(_0x59743e[_0xdb81('0x20')],_0x59743e[_0xdb81('0x21')]);_0x446491[_0xdb81('0x23')]['create']({'body':_0x4ace36[_0xdb81('0xc')],'to':'whatsapp:'+_0x4ace36[_0xdb81('0x22')],'from':_0xdb81('0x24')+_0x59743e[_0xdb81('0x22')],'statusCallback':_0x59743e[_0xdb81('0x25')]+_0xdb81('0x26')+_0x4ace36['id']+'/status?token='+_0x59743e[_0xdb81('0x27')]})['then'](function(_0x5a286c){if(_0x5a286c['sid']){return _0x3080b7['update']({'messageId':_0x5a286c['sid']});}})[_0xdb81('0x1a')](function(_0x473514){logger[_0xdb81('0x1b')](_0xdb81('0x28'),'afterCreate',_0xdb81('0x1f'),util[_0xdb81('0x29')](_0x473514,{'showHidden':![],'depth':null}));});}else{logger[_0xdb81('0x1b')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0xdb81('0x2a'),_0xdb81('0x1f'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;}}})[_0xdb81('0x2b')](function(){_0x317875();});}else{_0x317875();}}},'charset':_0xdb81('0x2c'),'collate':_0xdb81('0x2d')});};
\ No newline at end of file
index dc0dfdd..cceb8c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2065=['options','raw','stringify','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','request','then','info','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','error','code','WhatsappMessage,\x20%s,\x20%s','message','result','CreateWhatsappMessage','WhatsappMessage','create','body'];(function(_0x37fcda,_0x2f5aa1){var _0xf5ed91=function(_0x3c3241){while(--_0x3c3241){_0x37fcda['push'](_0x37fcda['shift']());}};_0xf5ed91(++_0x2f5aa1);}(_0x2065,0xcf));var _0x5206=function(_0x1ed8d2,_0x129fa2){_0x1ed8d2=_0x1ed8d2-0x0;var _0x5831b7=_0x2065[_0x1ed8d2];return _0x5831b7;};'use strict';var _=require('lodash');var util=require(_0x5206('0x0'));var moment=require('moment');var BPromise=require(_0x5206('0x1'));var rs=require(_0x5206('0x2'));var fs=require('fs');var Redis=require(_0x5206('0x3'));var db=require(_0x5206('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x5206('0x5'))('rpc');var config=require(_0x5206('0x6'));var jayson=require(_0x5206('0x7'));var client=jayson[_0x5206('0x8')][_0x5206('0x9')]({'port':0x232a});config[_0x5206('0xa')]=_[_0x5206('0xb')](config[_0x5206('0xa')],{'host':_0x5206('0xc'),'port':0x18eb});var socket=require(_0x5206('0xd'))(new Redis(config[_0x5206('0xa')]));require(_0x5206('0xe'))[_0x5206('0xf')](socket);function respondWithRpcPromise(_0x5d1fd7,_0x563abc,_0x109a35){return new BPromise(function(_0x2761ec,_0x420805){return client[_0x5206('0x10')](_0x5d1fd7,_0x109a35)[_0x5206('0x11')](function(_0x1a7b7e){logger[_0x5206('0x12')]('WhatsappMessage,\x20%s,\x20%s',_0x563abc,_0x5206('0x13'));logger[_0x5206('0x14')](_0x5206('0x15'),_0x563abc,_0x5206('0x13'),JSON['stringify'](_0x1a7b7e));if(_0x1a7b7e['error']){if(_0x1a7b7e[_0x5206('0x16')][_0x5206('0x17')]===0x1f4){logger[_0x5206('0x16')](_0x5206('0x18'),_0x563abc,_0x1a7b7e[_0x5206('0x16')][_0x5206('0x19')]);return _0x420805(_0x1a7b7e[_0x5206('0x16')][_0x5206('0x19')]);}logger[_0x5206('0x16')](_0x5206('0x18'),_0x563abc,_0x1a7b7e[_0x5206('0x16')][_0x5206('0x19')]);return _0x2761ec(_0x1a7b7e[_0x5206('0x16')]['message']);}else{logger[_0x5206('0x12')](_0x5206('0x18'),_0x563abc,_0x5206('0x13'));_0x2761ec(_0x1a7b7e[_0x5206('0x1a')][_0x5206('0x19')]);}})['catch'](function(_0x2f7e65){logger[_0x5206('0x16')]('WhatsappMessage,\x20%s,\x20%s',_0x563abc,_0x2f7e65);_0x420805(_0x2f7e65);});});}exports[_0x5206('0x1b')]=function(_0x3971cd){var _0x3f41b4=this;return new Promise(function(_0x23916b,_0x4f3e9c){return db[_0x5206('0x1c')][_0x5206('0x1d')](_0x3971cd[_0x5206('0x1e')],{'raw':_0x3971cd[_0x5206('0x1f')]?_0x3971cd[_0x5206('0x1f')][_0x5206('0x20')]===undefined?!![]:![]:!![]})[_0x5206('0x11')](function(_0x5b9e5f){logger[_0x5206('0x12')]('CreateWhatsappMessage',_0x3971cd);logger[_0x5206('0x14')](_0x5206('0x1b'),_0x3971cd,JSON[_0x5206('0x21')](_0x5b9e5f));_0x23916b(_0x5b9e5f);})['catch'](function(_0xe925f3){logger[_0x5206('0x16')](_0x5206('0x1b'),_0xe925f3[_0x5206('0x19')],_0x3971cd);_0x4f3e9c(_0x3f41b4[_0x5206('0x16')](0x1f4,_0xe925f3[_0x5206('0x19')]));});});};
\ No newline at end of file
+var _0x4969=['debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','error','code','WhatsappMessage,\x20%s,\x20%s','message','result','WhatsappMessage','create','body','options','raw','CreateWhatsappMessage','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','redis','localhost','socket.io-emitter','./whatsappMessage.socket','register','request','then','info','request\x20sent'];(function(_0x4a5caf,_0x17fd3d){var _0x181eab=function(_0x5a76d2){while(--_0x5a76d2){_0x4a5caf['push'](_0x4a5caf['shift']());}};_0x181eab(++_0x17fd3d);}(_0x4969,0x137));var _0x9496=function(_0x4dab14,_0x164ea0){_0x4dab14=_0x4dab14-0x0;var _0xf41aa=_0x4969[_0x4dab14];return _0xf41aa;};'use strict';var _=require(_0x9496('0x0'));var util=require(_0x9496('0x1'));var moment=require(_0x9496('0x2'));var BPromise=require(_0x9496('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9496('0x4'));var db=require(_0x9496('0x5'))['db'];var utils=require(_0x9496('0x6'));var logger=require(_0x9496('0x7'))(_0x9496('0x8'));var config=require('../../config/environment');var jayson=require(_0x9496('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x9496('0xa')]=_['defaults'](config[_0x9496('0xa')],{'host':_0x9496('0xb'),'port':0x18eb});var socket=require(_0x9496('0xc'))(new Redis(config[_0x9496('0xa')]));require(_0x9496('0xd'))[_0x9496('0xe')](socket);function respondWithRpcPromise(_0x2fa696,_0x4efa9c,_0x177d2d){return new BPromise(function(_0x38249a,_0x59ea0e){return client[_0x9496('0xf')](_0x2fa696,_0x177d2d)[_0x9496('0x10')](function(_0x20f7e7){logger[_0x9496('0x11')]('WhatsappMessage,\x20%s,\x20%s',_0x4efa9c,_0x9496('0x12'));logger[_0x9496('0x13')](_0x9496('0x14'),_0x4efa9c,_0x9496('0x12'),JSON['stringify'](_0x20f7e7));if(_0x20f7e7[_0x9496('0x15')]){if(_0x20f7e7[_0x9496('0x15')][_0x9496('0x16')]===0x1f4){logger[_0x9496('0x15')](_0x9496('0x17'),_0x4efa9c,_0x20f7e7[_0x9496('0x15')][_0x9496('0x18')]);return _0x59ea0e(_0x20f7e7['error'][_0x9496('0x18')]);}logger[_0x9496('0x15')]('WhatsappMessage,\x20%s,\x20%s',_0x4efa9c,_0x20f7e7[_0x9496('0x15')][_0x9496('0x18')]);return _0x38249a(_0x20f7e7[_0x9496('0x15')][_0x9496('0x18')]);}else{logger[_0x9496('0x11')]('WhatsappMessage,\x20%s,\x20%s',_0x4efa9c,_0x9496('0x12'));_0x38249a(_0x20f7e7[_0x9496('0x19')][_0x9496('0x18')]);}})['catch'](function(_0x1b9b00){logger['error'](_0x9496('0x17'),_0x4efa9c,_0x1b9b00);_0x59ea0e(_0x1b9b00);});});}exports['CreateWhatsappMessage']=function(_0x48210d){var _0x3a5dba=this;return new Promise(function(_0x25a9d6,_0x11e787){return db[_0x9496('0x1a')][_0x9496('0x1b')](_0x48210d[_0x9496('0x1c')],{'raw':_0x48210d[_0x9496('0x1d')]?_0x48210d['options'][_0x9496('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x2058ab){logger[_0x9496('0x11')](_0x9496('0x1f'),_0x48210d);logger[_0x9496('0x13')](_0x9496('0x1f'),_0x48210d,JSON[_0x9496('0x20')](_0x2058ab));_0x25a9d6(_0x2058ab);})['catch'](function(_0x35ea82){logger[_0x9496('0x15')](_0x9496('0x1f'),_0x35ea82['message'],_0x48210d);_0x11e787(_0x3a5dba[_0x9496('0x15')](0x1f4,_0x35ea82[_0x9496('0x18')]));});});};
\ No newline at end of file
index 2024e92..09bd811 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6cc=['update','emit','removeListener','register','whatsappMessage:','./whatsappMessage.events','save','remove'];(function(_0x2884e2,_0x5b55a4){var _0x1c7647=function(_0x152672){while(--_0x152672){_0x2884e2['push'](_0x2884e2['shift']());}};_0x1c7647(++_0x5b55a4);}(_0xb6cc,0x65));var _0xcb6c=function(_0x39b861,_0x50baf1){_0x39b861=_0x39b861-0x0;var _0x76423a=_0xb6cc[_0x39b861];return _0x76423a;};'use strict';var WhatsappMessageEvents=require(_0xcb6c('0x0'));var events=[_0xcb6c('0x1'),_0xcb6c('0x2'),_0xcb6c('0x3')];function createListener(_0x3bcd89,_0x44d3ac){return function(_0x5b739a){_0x44d3ac[_0xcb6c('0x4')](_0x3bcd89,_0x5b739a);};}function removeListener(_0x4dae51,_0x2e9bc6){return function(){WhatsappMessageEvents[_0xcb6c('0x5')](_0x4dae51,_0x2e9bc6);};}exports[_0xcb6c('0x6')]=function(_0x5b3724){for(var _0x33547d=0x0,_0x4d37c5=events['length'];_0x33547d<_0x4d37c5;_0x33547d++){var _0x4fd544=events[_0x33547d];var _0x197428=createListener(_0xcb6c('0x7')+_0x4fd544,_0x5b3724);WhatsappMessageEvents['on'](_0x4fd544,_0x197428);}};
\ No newline at end of file
+var _0xf486=['register','length','./whatsappMessage.events','save','remove','update','emit'];(function(_0x5c351c,_0x2046d8){var _0x26f3b3=function(_0x47ac18){while(--_0x47ac18){_0x5c351c['push'](_0x5c351c['shift']());}};_0x26f3b3(++_0x2046d8);}(_0xf486,0x167));var _0x6f48=function(_0x19360a,_0x3a13c8){_0x19360a=_0x19360a-0x0;var _0x5107b4=_0xf486[_0x19360a];return _0x5107b4;};'use strict';var WhatsappMessageEvents=require(_0x6f48('0x0'));var events=[_0x6f48('0x1'),_0x6f48('0x2'),_0x6f48('0x3')];function createListener(_0x3acd25,_0x1a36b4){return function(_0x17fafc){_0x1a36b4[_0x6f48('0x4')](_0x3acd25,_0x17fafc);};}function removeListener(_0x5ea4d5,_0x1d9850){return function(){WhatsappMessageEvents['removeListener'](_0x5ea4d5,_0x1d9850);};}exports[_0x6f48('0x5')]=function(_0x1093fd){for(var _0x45ab57=0x0,_0x5290e9=events[_0x6f48('0x6')];_0x45ab57<_0x5290e9;_0x45ab57++){var _0x51a7b2=events[_0x45ab57];var _0x4b1d88=createListener('whatsappMessage:'+_0x51a7b2,_0x1093fd);WhatsappMessageEvents['on'](_0x51a7b2,_0x4b1d88);}};
\ No newline at end of file
index b56154b..500bd44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc067=['removeAgents','exports','multer','util','path','express','Router','fs-extra','../../config/environment','./whatsappQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','/:id/users','getAgents','post','create','addTeams','addAgents','put','update','delete','removeTeams'];(function(_0x2ef375,_0x5604a4){var _0x418d1f=function(_0x3841d1){while(--_0x3841d1){_0x2ef375['push'](_0x2ef375['shift']());}};_0x418d1f(++_0x5604a4);}(_0xc067,0xb6));var _0x7c06=function(_0x1443eb,_0x203408){_0x1443eb=_0x1443eb-0x0;var _0x2b8810=_0xc067[_0x1443eb];return _0x2b8810;};'use strict';var multer=require(_0x7c06('0x0'));var util=require(_0x7c06('0x1'));var path=require(_0x7c06('0x2'));var timeout=require('connect-timeout');var express=require(_0x7c06('0x3'));var router=express[_0x7c06('0x4')]();var fs_extra=require(_0x7c06('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7c06('0x6'));var controller=require(_0x7c06('0x7'));router[_0x7c06('0x8')]('/',auth[_0x7c06('0x9')](),controller[_0x7c06('0xa')]);router['get'](_0x7c06('0xb'),auth[_0x7c06('0x9')](),controller[_0x7c06('0xc')]);router[_0x7c06('0x8')](_0x7c06('0xd'),auth['isAuthenticated'](),controller[_0x7c06('0xe')]);router[_0x7c06('0x8')](_0x7c06('0xf'),auth['isAuthenticated'](),controller[_0x7c06('0x10')]);router[_0x7c06('0x8')](_0x7c06('0x11'),auth['isAuthenticated'](),controller['getTeams']);router[_0x7c06('0x8')](_0x7c06('0x12'),auth[_0x7c06('0x9')](),controller[_0x7c06('0x13')]);router[_0x7c06('0x14')]('/',auth[_0x7c06('0x9')](),controller[_0x7c06('0x15')]);router[_0x7c06('0x14')]('/:id/teams',auth[_0x7c06('0x9')](),controller[_0x7c06('0x16')]);router[_0x7c06('0x14')](_0x7c06('0x12'),auth[_0x7c06('0x9')](),controller[_0x7c06('0x17')]);router[_0x7c06('0x18')](_0x7c06('0xd'),auth[_0x7c06('0x9')](),controller[_0x7c06('0x19')]);router[_0x7c06('0x1a')](_0x7c06('0xd'),auth[_0x7c06('0x9')](),controller['destroy']);router['delete'](_0x7c06('0x11'),auth[_0x7c06('0x9')](),controller[_0x7c06('0x1b')]);router[_0x7c06('0x1a')](_0x7c06('0x12'),auth[_0x7c06('0x9')](),controller[_0x7c06('0x1c')]);module[_0x7c06('0x1d')]=router;
\ No newline at end of file
+var _0xb541=['/:id/teams','getTeams','getAgents','create','post','/:id/users','/:id','delete','destroy','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','/describe','show','/:id/members'];(function(_0x5e5aaa,_0x13e296){var _0x4f9986=function(_0x34d409){while(--_0x34d409){_0x5e5aaa['push'](_0x5e5aaa['shift']());}};_0x4f9986(++_0x13e296);}(_0xb541,0x1b5));var _0x1b54=function(_0x2f1c13,_0xde1e3d){_0x2f1c13=_0x2f1c13-0x0;var _0x3de6d6=_0xb541[_0x2f1c13];return _0x3de6d6;};'use strict';var multer=require(_0x1b54('0x0'));var util=require(_0x1b54('0x1'));var path=require(_0x1b54('0x2'));var timeout=require(_0x1b54('0x3'));var express=require(_0x1b54('0x4'));var router=express[_0x1b54('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x1b54('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x1b54('0x7'));var controller=require('./whatsappQueue.controller');router[_0x1b54('0x8')]('/',auth[_0x1b54('0x9')](),controller['index']);router[_0x1b54('0x8')](_0x1b54('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x1b54('0x8')]('/:id',auth[_0x1b54('0x9')](),controller[_0x1b54('0xb')]);router[_0x1b54('0x8')](_0x1b54('0xc'),auth['isAuthenticated'](),controller['getMembers']);router[_0x1b54('0x8')](_0x1b54('0xd'),auth[_0x1b54('0x9')](),controller[_0x1b54('0xe')]);router['get']('/:id/users',auth[_0x1b54('0x9')](),controller[_0x1b54('0xf')]);router['post']('/',auth[_0x1b54('0x9')](),controller[_0x1b54('0x10')]);router[_0x1b54('0x11')](_0x1b54('0xd'),auth[_0x1b54('0x9')](),controller['addTeams']);router['post'](_0x1b54('0x12'),auth[_0x1b54('0x9')](),controller['addAgents']);router['put'](_0x1b54('0x13'),auth['isAuthenticated'](),controller['update']);router[_0x1b54('0x14')](_0x1b54('0x13'),auth[_0x1b54('0x9')](),controller[_0x1b54('0x15')]);router[_0x1b54('0x14')](_0x1b54('0xd'),auth[_0x1b54('0x9')](),controller[_0x1b54('0x16')]);router[_0x1b54('0x14')](_0x1b54('0x12'),auth[_0x1b54('0x9')](),controller[_0x1b54('0x17')]);module[_0x1b54('0x18')]=router;
\ No newline at end of file
index cbdac82..a3ca167 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40ca=['ENUM','rrmemory','roundrobin','sequelize','name','INTEGER'];(function(_0x492f37,_0x40d98e){var _0x1d981c=function(_0x18b4f2){while(--_0x18b4f2){_0x492f37['push'](_0x492f37['shift']());}};_0x1d981c(++_0x40d98e);}(_0x40ca,0x1a1));var _0xa40c=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0x40ca[_0x491a7f];return _0x3d8f44;};'use strict';var Sequelize=require(_0xa40c('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xa40c('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0xa40c('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xa40c('0x3')](_0xa40c('0x4'),'beepall',_0xa40c('0x5'))},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xab26=['sequelize','exports','STRING','INTEGER','ENUM','roundrobin'];(function(_0x46f1a6,_0xc7a582){var _0x38429a=function(_0x31adae){while(--_0x31adae){_0x46f1a6['push'](_0x46f1a6['shift']());}};_0x38429a(++_0xc7a582);}(_0xab26,0xd2));var _0x6ab2=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xab26[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require(_0x6ab2('0x0'));module[_0x6ab2('0x1')]={'name':{'type':Sequelize[_0x6ab2('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x6ab2('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x6ab2('0x4')]('rrmemory','beepall',_0x6ab2('0x5'))},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index cd911aa..49e649c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x445e=['zip-dir','request-promise','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./whatsappQueue.socket','register','sendStatus','end','status','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','get','WhatsappQueues','destroy','error','stack','name','send','index','WhatsappQueue','rawAttributes','type','key','map','query','keys','filters','intersection','model','fields','length','attributes','hasOwnProperty','nolimit','limit','sort','pick','filter','merge','where','include','findAll','show','params','includeAll','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserWhatsappQueue','order','WhatsappQueueId','options','User','findAndCountAll','UserId','agent','updatedAt','createdAt','format','SIP','Team','ids','Agents','voicePause','interface','sequelize','transaction','addTeams','each','findOrCreate','emit','userWhatsappQueue:save','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?','push','QueryTypes','SELECT','TeamId','includes','all','union','compact','removeTeams','isEmpty','forEach','userWhatsappQueue:remove','addAgents','omit','spread','removeAgents','isArray','getAgents'];(function(_0x237583,_0x3d9b05){var _0x29d541=function(_0x1b781f){while(--_0x1b781f){_0x237583['push'](_0x237583['shift']());}};_0x29d541(++_0x3d9b05);}(_0x445e,0x116));var _0xe445=function(_0x5e0ec3,_0x30d032){_0x5e0ec3=_0x5e0ec3-0x0;var _0x54bce4=_0x445e[_0x5e0ec3];return _0x54bce4;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe445('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe445('0x1'));var moment=require('moment');var BPromise=require(_0xe445('0x2'));var Mustache=require(_0xe445('0x3'));var util=require('util');var path=require(_0xe445('0x4'));var sox=require(_0xe445('0x5'));var csv=require(_0xe445('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe445('0x7'));var _=require(_0xe445('0x8'));var squel=require(_0xe445('0x9'));var crypto=require(_0xe445('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xe445('0xb'));var toCsv=require(_0xe445('0x6'));var querystring=require(_0xe445('0xc'));var Papa=require('papaparse');var Redis=require(_0xe445('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xe445('0xe'));var as=require(_0xe445('0xf'));var hardwareService=require(_0xe445('0x10'));var logger=require(_0xe445('0x11'))(_0xe445('0x12'));var utils=require(_0xe445('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xe445('0x14'))['db'];config['redis']=_[_0xe445('0x15')](config['redis'],{'host':_0xe445('0x16'),'port':0x18eb});var socket=require(_0xe445('0x17'))(new Redis(config[_0xe445('0x18')]));require(_0xe445('0x19'))[_0xe445('0x1a')](socket);function respondWithStatusCode(_0x250387,_0x1302f8){_0x1302f8=_0x1302f8||0xcc;return function(_0xedb586){if(_0xedb586){return _0x250387[_0xe445('0x1b')](_0x1302f8);}return _0x250387['status'](_0x1302f8)[_0xe445('0x1c')]();};}function respondWithResult(_0x313740,_0x107767){_0x107767=_0x107767||0xc8;return function(_0x1b2003){if(_0x1b2003){return _0x313740[_0xe445('0x1d')](_0x107767)['json'](_0x1b2003);}};}function respondWithFilteredResult(_0x3792cf,_0x23615c){return function(_0x180ef0){if(_0x180ef0){var _0xfd03b1=typeof _0x23615c[_0xe445('0x1e')]===_0xe445('0x1f')&&typeof _0x23615c['limit']===_0xe445('0x1f');var _0x59d461=_0x180ef0[_0xe445('0x20')];var _0x24f401=_0xfd03b1?0x0:_0x23615c[_0xe445('0x1e')];var _0x43fb00=_0xfd03b1?_0x180ef0[_0xe445('0x20')]:_0x23615c[_0xe445('0x1e')]+_0x23615c['limit'];var _0x471300;if(_0x43fb00>=_0x59d461){_0x43fb00=_0x59d461;_0x471300=0xc8;}else{_0x471300=0xce;}_0x3792cf['status'](_0x471300);return _0x3792cf[_0xe445('0x21')](_0xe445('0x22'),_0x24f401+'-'+_0x43fb00+'/'+_0x59d461)['json'](_0x180ef0);}return null;};}function patchUpdates(_0x3a7598){return function(_0x3089ee){try{jsonpatch[_0xe445('0x23')](_0x3089ee,_0x3a7598,!![]);}catch(_0x4617d3){return BPromise[_0xe445('0x24')](_0x4617d3);}return _0x3089ee[_0xe445('0x25')]();};}function saveUpdates(_0x2a415c,_0x425c0e){return function(_0x5e643e){if(_0x5e643e){return _0x5e643e[_0xe445('0x26')](_0x2a415c)['then'](function(_0x3fa896){return _0x3fa896;});}return null;};}function removeEntity(_0x8ed0e6,_0x4addf1){return function(_0x9a9d5d){if(_0x9a9d5d){return _0x9a9d5d['destroy']()[_0xe445('0x27')](function(){var _0x1a2c1f=_0x9a9d5d[_0xe445('0x28')]({'plain':!![]});var _0x3baac6=_0xe445('0x29');return db['UserProfileResource'][_0xe445('0x2a')]({'where':{'type':_0x3baac6,'resourceId':_0x1a2c1f['id']}})[_0xe445('0x27')](function(){return _0x9a9d5d;});})[_0xe445('0x27')](function(){_0x8ed0e6[_0xe445('0x1d')](0xcc)[_0xe445('0x1c')]();});}};}function handleEntityNotFound(_0x3cb4a5,_0x4658f4){return function(_0x2a8cf2){if(!_0x2a8cf2){_0x3cb4a5['sendStatus'](0x194);}return _0x2a8cf2;};}function handleError(_0x147f83,_0x410d49){_0x410d49=_0x410d49||0x1f4;return function(_0x3be1bc){logger[_0xe445('0x2b')](_0x3be1bc[_0xe445('0x2c')]);if(_0x3be1bc['name']){delete _0x3be1bc[_0xe445('0x2d')];}_0x147f83[_0xe445('0x1d')](_0x410d49)[_0xe445('0x2e')](_0x3be1bc);};}exports[_0xe445('0x2f')]=function(_0x2efa67,_0x415658){var _0x23e551={},_0x3d6ca4={},_0x613b3f={'count':0x0,'rows':[]};var _0x2a9dcb=_['map'](db[_0xe445('0x30')][_0xe445('0x31')],function(_0xe49f4f){return{'name':_0xe49f4f['fieldName'],'type':_0xe49f4f[_0xe445('0x32')][_0xe445('0x33')]};});_0x3d6ca4['model']=_[_0xe445('0x34')](_0x2a9dcb,_0xe445('0x2d'));_0x3d6ca4[_0xe445('0x35')]=_[_0xe445('0x36')](_0x2efa67[_0xe445('0x35')]);_0x3d6ca4[_0xe445('0x37')]=_[_0xe445('0x38')](_0x3d6ca4[_0xe445('0x39')],_0x3d6ca4[_0xe445('0x35')]);_0x23e551['attributes']=_[_0xe445('0x38')](_0x3d6ca4[_0xe445('0x39')],qs[_0xe445('0x3a')](_0x2efa67[_0xe445('0x35')][_0xe445('0x3a')]));_0x23e551['attributes']=_0x23e551['attributes'][_0xe445('0x3b')]?_0x23e551[_0xe445('0x3c')]:_0x3d6ca4[_0xe445('0x39')];if(!_0x2efa67[_0xe445('0x35')][_0xe445('0x3d')](_0xe445('0x3e'))){_0x23e551['limit']=qs[_0xe445('0x3f')](_0x2efa67[_0xe445('0x35')][_0xe445('0x3f')]);_0x23e551['offset']=qs[_0xe445('0x1e')](_0x2efa67['query'][_0xe445('0x1e')]);}_0x23e551['order']=qs[_0xe445('0x40')](_0x2efa67[_0xe445('0x35')][_0xe445('0x40')]);_0x23e551['where']=qs[_0xe445('0x37')](_[_0xe445('0x41')](_0x2efa67['query'],_0x3d6ca4[_0xe445('0x37')]),_0x2a9dcb);if(_0x2efa67[_0xe445('0x35')][_0xe445('0x42')]){_0x23e551['where']=_[_0xe445('0x43')](_0x23e551[_0xe445('0x44')],{'$or':_[_0xe445('0x34')](_0x2a9dcb,function(_0x2298ce){if(_0x2298ce[_0xe445('0x32')]!=='VIRTUAL'){var _0x5b2a7b={};_0x5b2a7b[_0x2298ce[_0xe445('0x2d')]]={'$like':'%'+_0x2efa67[_0xe445('0x35')][_0xe445('0x42')]+'%'};return _0x5b2a7b;}})});}_0x23e551=_['merge']({},_0x23e551,_0x2efa67['options']);var _0x55160b={'where':_0x23e551['where']};return db[_0xe445('0x30')][_0xe445('0x20')](_0x55160b)['then'](function(_0x886c7f){_0x613b3f['count']=_0x886c7f;if(_0x2efa67['query']['includeAll']){_0x23e551[_0xe445('0x45')]=[{'all':!![]}];}return db[_0xe445('0x30')][_0xe445('0x46')](_0x23e551);})[_0xe445('0x27')](function(_0x33e752){_0x613b3f['rows']=_0x33e752;return _0x613b3f;})[_0xe445('0x27')](respondWithFilteredResult(_0x415658,_0x23e551))['catch'](handleError(_0x415658,null));};exports[_0xe445('0x47')]=function(_0x5f415b,_0x54fe95){var _0x3d423d={'raw':!![],'where':{'id':_0x5f415b[_0xe445('0x48')]['id']}},_0x119d39={};_0x119d39[_0xe445('0x39')]=_[_0xe445('0x36')](db['WhatsappQueue'][_0xe445('0x31')]);_0x119d39[_0xe445('0x35')]=_['keys'](_0x5f415b[_0xe445('0x35')]);_0x119d39[_0xe445('0x37')]=_[_0xe445('0x38')](_0x119d39[_0xe445('0x39')],_0x119d39[_0xe445('0x35')]);_0x3d423d[_0xe445('0x3c')]=_[_0xe445('0x38')](_0x119d39[_0xe445('0x39')],qs[_0xe445('0x3a')](_0x5f415b[_0xe445('0x35')][_0xe445('0x3a')]));_0x3d423d['attributes']=_0x3d423d[_0xe445('0x3c')][_0xe445('0x3b')]?_0x3d423d[_0xe445('0x3c')]:_0x119d39[_0xe445('0x39')];if(_0x5f415b[_0xe445('0x35')][_0xe445('0x49')]){_0x3d423d['include']=[{'all':!![]}];}_0x3d423d=_[_0xe445('0x43')]({},_0x3d423d,_0x5f415b['options']);return db[_0xe445('0x30')]['find'](_0x3d423d)[_0xe445('0x27')](handleEntityNotFound(_0x54fe95,null))[_0xe445('0x27')](respondWithResult(_0x54fe95,null))[_0xe445('0x4a')](handleError(_0x54fe95,null));};exports[_0xe445('0x4b')]=function(_0xe19a07,_0x36a737){return db[_0xe445('0x30')][_0xe445('0x4b')](_0xe19a07[_0xe445('0x4c')],{})[_0xe445('0x27')](function(_0x33f63a){var _0x3f3b1c=_0xe19a07[_0xe445('0x4d')]['get']({'plain':!![]});if(!_0x3f3b1c)throw new Error(_0xe445('0x4e'));if(_0x3f3b1c[_0xe445('0x4f')]==='user'){var _0x258dfe=_0x33f63a['get']({'plain':!![]});var _0x119372='WhatsappQueues';return db['UserProfileSection'][_0xe445('0x50')]({'where':{'name':_0x119372,'userProfileId':_0x3f3b1c[_0xe445('0x51')]},'raw':!![]})[_0xe445('0x27')](function(_0x1dc3b0){if(_0x1dc3b0&&_0x1dc3b0['autoAssociation']===0x0){return db['UserProfileResource'][_0xe445('0x4b')]({'name':_0x258dfe[_0xe445('0x2d')],'resourceId':_0x258dfe['id'],'type':_0x1dc3b0[_0xe445('0x2d')],'sectionId':_0x1dc3b0['id']},{})['then'](function(){return _0x33f63a;});}else{return _0x33f63a;}})[_0xe445('0x4a')](function(_0x5180f0){logger[_0xe445('0x2b')](_0xe445('0x52'),_0x5180f0);throw _0x5180f0;});}return _0x33f63a;})['then'](respondWithResult(_0x36a737,0xc9))[_0xe445('0x4a')](handleError(_0x36a737,null));};exports['update']=function(_0x4df8ac,_0x360768){if(_0x4df8ac['body']['id']){delete _0x4df8ac[_0xe445('0x4c')]['id'];}return db[_0xe445('0x30')]['find']({'where':{'id':_0x4df8ac[_0xe445('0x48')]['id']}})[_0xe445('0x27')](handleEntityNotFound(_0x360768,null))[_0xe445('0x27')](saveUpdates(_0x4df8ac[_0xe445('0x4c')],null))['then'](respondWithResult(_0x360768,null))[_0xe445('0x4a')](handleError(_0x360768,null));};exports[_0xe445('0x2a')]=function(_0x405cd0,_0x659bb8){return db[_0xe445('0x30')][_0xe445('0x50')]({'where':{'id':_0x405cd0[_0xe445('0x48')]['id']}})[_0xe445('0x27')](handleEntityNotFound(_0x659bb8,null))[_0xe445('0x27')](removeEntity(_0x659bb8,null))[_0xe445('0x4a')](handleError(_0x659bb8,null));};exports[_0xe445('0x53')]=function(_0x44683a,_0x364319){return db[_0xe445('0x30')][_0xe445('0x53')]()[_0xe445('0x27')](respondWithResult(_0x364319,null))[_0xe445('0x4a')](handleError(_0x364319,null));};exports[_0xe445('0x54')]=function(_0x137989,_0x51d9a3,_0x4ac2f9){var _0x4ba91c={'raw':!![],'where':{}},_0x3d292b={},_0x5aac83;return db[_0xe445('0x30')][_0xe445('0x55')]({'where':{'id':_0x137989[_0xe445('0x48')]['id']}})[_0xe445('0x27')](handleEntityNotFound(_0x51d9a3,null))['then'](function(_0x59da4d){if(_0x59da4d){_0x5aac83=_0x59da4d[_0xe445('0x28')]({'plain':!![]});_0x3d292b[_0xe445('0x39')]=_['keys'](db[_0xe445('0x56')][_0xe445('0x31')]);_0x3d292b[_0xe445('0x35')]=_[_0xe445('0x36')](_0x137989[_0xe445('0x35')]);_0x3d292b[_0xe445('0x37')]=_[_0xe445('0x38')](_0x3d292b[_0xe445('0x39')],_0x3d292b[_0xe445('0x35')]);_0x4ba91c[_0xe445('0x3c')]=_[_0xe445('0x38')](_0x3d292b['model'],qs[_0xe445('0x3a')](_0x137989[_0xe445('0x35')]['fields']));_0x4ba91c['attributes']=_0x4ba91c[_0xe445('0x3c')][_0xe445('0x3b')]?_0x4ba91c[_0xe445('0x3c')]:_0x3d292b[_0xe445('0x39')];if(!_0x137989['query']['hasOwnProperty'](_0xe445('0x3e'))){_0x4ba91c[_0xe445('0x3f')]=qs[_0xe445('0x3f')](_0x137989[_0xe445('0x35')][_0xe445('0x3f')]);_0x4ba91c[_0xe445('0x1e')]=qs[_0xe445('0x1e')](_0x137989[_0xe445('0x35')][_0xe445('0x1e')]);}_0x4ba91c[_0xe445('0x57')]=qs[_0xe445('0x40')](_0x137989['query']['sort']);_0x4ba91c['where']=qs[_0xe445('0x37')](_[_0xe445('0x41')](_0x137989[_0xe445('0x35')],_0x3d292b[_0xe445('0x37')]));_0x4ba91c[_0xe445('0x44')][_0xe445('0x58')]=_0x59da4d['id'];if(_0x137989[_0xe445('0x35')][_0xe445('0x42')]){_0x4ba91c[_0xe445('0x44')]=_[_0xe445('0x43')](_0x4ba91c[_0xe445('0x44')],{'$or':_['map'](_0x4ba91c[_0xe445('0x3c')],function(_0x231683){var _0x586a8d={};_0x586a8d[_0x231683]={'$like':'%'+_0x137989['query'][_0xe445('0x42')]+'%'};return _0x586a8d;})});}_0x4ba91c=_[_0xe445('0x43')]({},_0x4ba91c,_0x137989[_0xe445('0x59')]);return db[_0xe445('0x56')][_0xe445('0x46')](_0x4ba91c);}})['then'](function(_0x573860){if(_0x573860){return db[_0xe445('0x5a')][_0xe445('0x5b')]({'where':{'id':_[_0xe445('0x34')](_0x573860,_0xe445('0x5c')),'role':_0xe445('0x5d')},'attributes':['id','name','whatsappPause',_0xe445('0x5e'),_0xe445('0x5f')]});}})[_0xe445('0x27')](function(_0x11a66f){if(_0x11a66f){return{'count':_0x11a66f[_0xe445('0x20')],'rows':_[_0xe445('0x34')](_0x11a66f['rows'],function(_0x117593){return{'membername':_0x117593[_0xe445('0x2d')],'UserId':_0x117593['id'],'queue_name':_0x5aac83[_0xe445('0x2d')],'WhatsappQueueId':_0x5aac83['id'],'interface':util[_0xe445('0x60')]('%s/%s',_0xe445('0x61'),_0x117593[_0xe445('0x2d')]),'penalty':0x0,'paused':_0x117593['whatsappPause'],'createdAt':_0x117593[_0xe445('0x5f')],'updatedAt':_0x117593['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x51d9a3,_0x4ba91c))[_0xe445('0x4a')](handleError(_0x51d9a3,null));};exports['getTeams']=function(_0x213d30,_0x1c2255,_0x267e41){var _0x4ff368={};var _0x13becf={};var _0x2ca43c;var _0x15b322;return db[_0xe445('0x30')][_0xe445('0x55')]({'where':{'id':_0x213d30['params']['id']}})[_0xe445('0x27')](handleEntityNotFound(_0x1c2255,null))[_0xe445('0x27')](function(_0x5d3696){if(_0x5d3696){_0x2ca43c=_0x5d3696;_0x13becf[_0xe445('0x39')]=_['keys'](db[_0xe445('0x62')][_0xe445('0x31')]);_0x13becf[_0xe445('0x35')]=_[_0xe445('0x36')](_0x213d30[_0xe445('0x35')]);_0x13becf[_0xe445('0x37')]=_[_0xe445('0x38')](_0x13becf['model'],_0x13becf[_0xe445('0x35')]);_0x4ff368[_0xe445('0x3c')]=_[_0xe445('0x38')](_0x13becf['model'],qs[_0xe445('0x3a')](_0x213d30[_0xe445('0x35')][_0xe445('0x3a')]));_0x4ff368['attributes']=_0x4ff368[_0xe445('0x3c')][_0xe445('0x3b')]?_0x4ff368[_0xe445('0x3c')]:_0x13becf['model'];_0x4ff368[_0xe445('0x57')]=qs[_0xe445('0x40')](_0x213d30[_0xe445('0x35')][_0xe445('0x40')]);_0x4ff368['where']=qs['filters'](_[_0xe445('0x41')](_0x213d30[_0xe445('0x35')],_0x13becf['filters']));if(_0x213d30[_0xe445('0x35')][_0xe445('0x42')]){_0x4ff368[_0xe445('0x44')]=_[_0xe445('0x43')](_0x4ff368['where'],{'$or':_[_0xe445('0x34')](_0x4ff368[_0xe445('0x3c')],function(_0x1e9359){var _0x51a46c={};_0x51a46c[_0x1e9359]={'$like':'%'+_0x213d30[_0xe445('0x35')][_0xe445('0x42')]+'%'};return _0x51a46c;})});}_0x4ff368=_[_0xe445('0x43')]({},_0x4ff368,_0x213d30['options']);return _0x2ca43c['getTeams'](_0x4ff368);}})[_0xe445('0x27')](function(_0x4e969e){if(_0x4e969e){_0x15b322=_0x4e969e['length'];if(!_0x213d30[_0xe445('0x35')][_0xe445('0x3d')](_0xe445('0x3e'))){_0x4ff368[_0xe445('0x3f')]=qs[_0xe445('0x3f')](_0x213d30[_0xe445('0x35')][_0xe445('0x3f')]);_0x4ff368[_0xe445('0x1e')]=qs[_0xe445('0x1e')](_0x213d30[_0xe445('0x35')][_0xe445('0x1e')]);}return _0x2ca43c['getTeams'](_0x4ff368);}})[_0xe445('0x27')](function(_0x548a27){if(_0x548a27){return _0x548a27?{'count':_0x15b322,'rows':_0x548a27}:null;}})['then'](respondWithResult(_0x1c2255,null))[_0xe445('0x4a')](handleError(_0x1c2255,null));};exports['addTeams']=function(_0x3a04a8,_0x4e0b4b,_0x27474c){var _0x68dfc4=_0x3a04a8[_0xe445('0x4c')][_0xe445('0x63')];return db[_0xe445('0x62')]['findAll']({'where':{'id':_0x68dfc4},'attributes':['id'],'include':[{'model':db['User'],'as':_0xe445('0x64'),'attributes':['id',_0xe445('0x2d'),'online',_0xe445('0x65'),_0xe445('0x66')],'raw':!![]}]})['then'](function(_0x5be5dc){if(_0x5be5dc){var _0x46c347=_['flatMap'](_0x5be5dc,function(_0x32a600){var _0x35beb1=_0x32a600[_0xe445('0x28')]({'plain':!![]});return _0x35beb1[_0xe445('0x64')];});return db[_0xe445('0x30')][_0xe445('0x50')]({'where':{'id':_0x3a04a8[_0xe445('0x48')]['id']}})[_0xe445('0x27')](function(_0x234e38){return db[_0xe445('0x67')][_0xe445('0x68')](function(_0x3c65ad){return _0x234e38[_0xe445('0x69')](_0x68dfc4,{'transaction':_0x3c65ad})[_0xe445('0x27')](function(){return BPromise[_0xe445('0x6a')](_0x46c347,function(_0x1fbc8d){return db['UserWhatsappQueue'][_0xe445('0x6b')]({'where':{'UserId':_0x1fbc8d['id'],'WhatsappQueueId':_0x3a04a8[_0xe445('0x48')]['id']},'transaction':_0x3c65ad});});})[_0xe445('0x27')](function(){_0x46c347['forEach'](function(_0x284388){socket[_0xe445('0x6c')](_0xe445('0x6d'),{'UserId':_0x284388['id'],'WhatsappQueueId':_0x234e38['id']});});});});});}})[_0xe445('0x27')](respondWithStatusCode(_0x4e0b4b,null))['catch'](handleError(_0x4e0b4b,null));};exports['removeTeams']=function(_0x51a0bf,_0x3eb8bf,_0x2ec298){return db[_0xe445('0x62')]['findAll']({'where':{'id':_0x51a0bf[_0xe445('0x35')][_0xe445('0x63')]},'attributes':['id'],'include':[{'model':db[_0xe445('0x5a')],'as':_0xe445('0x64'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x3eb8bf,null))[_0xe445('0x27')](function(_0x4af2b4){var _0x47300c=_[_0xe445('0x34')](_0x4af2b4,'id');var _0x6fdbe0=[];var _0x461653=[];var _0x3b5d12=squel[_0xe445('0x6e')]();_0x3b5d12[_0xe445('0x6f')](_0xe445('0x70'))[_0xe445('0x71')](_0xe445('0x72'),'tq')[_0xe445('0x73')](_0xe445('0x74'),'ut',_0xe445('0x75'))[_0xe445('0x44')](_0xe445('0x76'),_0x51a0bf[_0xe445('0x48')]['id']);for(var _0x2e634c=0x0;_0x2e634c<_0x4af2b4[_0xe445('0x3b')];_0x2e634c+=0x1){let _0x55e4d7=_0x4af2b4[_0x2e634c];for(var _0x55de1f=0x0;_0x55de1f<_0x55e4d7[_0xe445('0x64')][_0xe445('0x3b')];_0x55de1f+=0x1){let _0x2c2e5f=_0x55e4d7[_0xe445('0x64')][_0x55de1f];var _0x5b0dc0=_0x3b5d12[_0xe445('0x77')]();_0x5b0dc0['where'](_0xe445('0x78'),_0x2c2e5f['id']);_0x461653[_0xe445('0x79')](db[_0xe445('0x67')][_0xe445('0x35')](_0x5b0dc0['toString'](),{'type':db[_0xe445('0x67')][_0xe445('0x7a')][_0xe445('0x7b')]})['then'](function(_0x1eba06){if(_0x1eba06[_0xe445('0x3b')]===0x1){return _0x2c2e5f['id'];}else{var _0x5d9159=_['every'](_[_0xe445('0x34')](_0x1eba06,_0xe445('0x7c')),function(_0x2b41f9){return _[_0xe445('0x7d')](_0x47300c,_0x2b41f9);});if(_0x5d9159){return _0x2c2e5f['id'];}}}));}}return BPromise[_0xe445('0x7e')](_0x461653)['then'](function(_0x2d0ca1){_0x6fdbe0=_(_0x6fdbe0)[_0xe445('0x7f')](_0x2d0ca1)[_0xe445('0x80')]()['value']();return db[_0xe445('0x30')]['find']({'where':{'id':_0x51a0bf['params']['id']}})[_0xe445('0x27')](function(_0x1a1630){return db[_0xe445('0x67')]['transaction'](function(_0x37ceac){return _0x1a1630[_0xe445('0x81')](_0x51a0bf['query']['ids'],{'transaction':_0x37ceac})[_0xe445('0x27')](function(){if(!_[_0xe445('0x82')](_0x6fdbe0)){return _0x1a1630['removeAgents'](_0x6fdbe0,{'transaction':_0x37ceac});}})['then'](function(){_0x6fdbe0[_0xe445('0x83')](function(_0x19d7c9){socket['emit'](_0xe445('0x84'),{'UserId':_0x19d7c9,'WhatsappQueueId':_0x1a1630['id']});});});});});});})[_0xe445('0x27')](respondWithStatusCode(_0x3eb8bf,null))['catch'](handleError(_0x3eb8bf,null));};exports['addAgents']=function(_0x4e9a43,_0x3ddac4,_0x1cec5d){return db[_0xe445('0x30')][_0xe445('0x50')]({'where':{'id':_0x4e9a43[_0xe445('0x48')]['id']}})[_0xe445('0x27')](handleEntityNotFound(_0x3ddac4,null))[_0xe445('0x27')](function(_0x45d593){if(_0x45d593){return _0x45d593[_0xe445('0x85')](_0x4e9a43[_0xe445('0x4c')][_0xe445('0x63')],_[_0xe445('0x86')](_0x4e9a43[_0xe445('0x4c')],[_0xe445('0x63'),'id'])||{})[_0xe445('0x87')](function(_0x4b112c){for(var _0x4fcebd=0x0;_0x4fcebd<_0x4e9a43['body'][_0xe445('0x63')][_0xe445('0x3b')];_0x4fcebd+=0x1){socket[_0xe445('0x6c')](_0xe445('0x6d'),{'UserId':Number(_0x4e9a43[_0xe445('0x4c')]['ids'][_0x4fcebd]),'WhatsappQueueId':Number(_0x4e9a43[_0xe445('0x48')]['id'])});}return _0x4b112c;});}})[_0xe445('0x27')](respondWithResult(_0x3ddac4,null))[_0xe445('0x4a')](handleError(_0x3ddac4,null));};exports[_0xe445('0x88')]=function(_0x3e5f50,_0x4c4eba,_0xbe0da9){return db[_0xe445('0x30')][_0xe445('0x50')]({'where':{'id':_0x3e5f50[_0xe445('0x48')]['id']}})['then'](handleEntityNotFound(_0x4c4eba,null))[_0xe445('0x27')](function(_0x5d8e3b){if(_0x5d8e3b){return _0x5d8e3b[_0xe445('0x88')](_0x3e5f50[_0xe445('0x35')][_0xe445('0x63')])[_0xe445('0x27')](function(){if(_[_0xe445('0x89')](_0x3e5f50[_0xe445('0x35')]['ids'])){for(var _0x3fc162=0x0;_0x3fc162<_0x3e5f50[_0xe445('0x35')][_0xe445('0x63')][_0xe445('0x3b')];_0x3fc162+=0x1){socket[_0xe445('0x6c')](_0xe445('0x84'),{'UserId':Number(_0x3e5f50[_0xe445('0x35')][_0xe445('0x63')][_0x3fc162]),'WhatsappQueueId':Number(_0x3e5f50['params']['id'])});}}else{socket[_0xe445('0x6c')](_0xe445('0x84'),{'UserId':Number(_0x3e5f50['query'][_0xe445('0x63')]),'WhatsappQueueId':Number(_0x3e5f50[_0xe445('0x48')]['id'])});}});}})[_0xe445('0x27')](respondWithStatusCode(_0x4c4eba,null))[_0xe445('0x4a')](handleError(_0x4c4eba,null));};exports[_0xe445('0x8a')]=function(_0x2e86f1,_0x39e2c2,_0x485d34){var _0x6de3ae={};var _0x11fccb={};var _0x44bba5;var _0x2b45d9;return db['WhatsappQueue'][_0xe445('0x55')]({'where':{'id':_0x2e86f1[_0xe445('0x48')]['id']}})[_0xe445('0x27')](handleEntityNotFound(_0x39e2c2,null))[_0xe445('0x27')](function(_0x4a7cbf){if(_0x4a7cbf){_0x44bba5=_0x4a7cbf;_0x11fccb['model']=_[_0xe445('0x36')](db[_0xe445('0x5a')][_0xe445('0x31')]);_0x11fccb[_0xe445('0x35')]=_['keys'](_0x2e86f1[_0xe445('0x35')]);_0x11fccb[_0xe445('0x37')]=_[_0xe445('0x38')](_0x11fccb[_0xe445('0x39')],_0x11fccb['query']);_0x6de3ae[_0xe445('0x3c')]=_[_0xe445('0x38')](_0x11fccb[_0xe445('0x39')],qs[_0xe445('0x3a')](_0x2e86f1[_0xe445('0x35')][_0xe445('0x3a')]));_0x6de3ae[_0xe445('0x3c')]=_0x6de3ae[_0xe445('0x3c')][_0xe445('0x3b')]?_0x6de3ae[_0xe445('0x3c')]:_0x11fccb[_0xe445('0x39')];_0x6de3ae['order']=qs[_0xe445('0x40')](_0x2e86f1['query'][_0xe445('0x40')]);_0x6de3ae['where']=qs['filters'](_[_0xe445('0x41')](_0x2e86f1['query'],_0x11fccb[_0xe445('0x37')]));if(_0x2e86f1[_0xe445('0x35')][_0xe445('0x42')]){_0x6de3ae[_0xe445('0x44')]=_[_0xe445('0x43')](_0x6de3ae[_0xe445('0x44')],{'$or':_['map'](_0x6de3ae[_0xe445('0x3c')],function(_0x2bf9c6){var _0x1c0eee={};_0x1c0eee[_0x2bf9c6]={'$like':'%'+_0x2e86f1[_0xe445('0x35')][_0xe445('0x42')]+'%'};return _0x1c0eee;})});}_0x6de3ae=_[_0xe445('0x43')]({},_0x6de3ae,_0x2e86f1[_0xe445('0x59')]);return _0x44bba5[_0xe445('0x8a')](_0x6de3ae);}})[_0xe445('0x27')](function(_0x34e42e){if(_0x34e42e){_0x2b45d9=_0x34e42e['length'];if(!_0x2e86f1[_0xe445('0x35')][_0xe445('0x3d')](_0xe445('0x3e'))){_0x6de3ae[_0xe445('0x3f')]=qs['limit'](_0x2e86f1['query'][_0xe445('0x3f')]);_0x6de3ae[_0xe445('0x1e')]=qs['offset'](_0x2e86f1[_0xe445('0x35')]['offset']);}return _0x44bba5[_0xe445('0x8a')](_0x6de3ae);}})[_0xe445('0x27')](function(_0x31b767){if(_0x31b767){return _0x31b767?{'count':_0x2b45d9,'rows':_0x31b767}:null;}})[_0xe445('0x27')](respondWithResult(_0x39e2c2,null))[_0xe445('0x4a')](handleError(_0x39e2c2,null));};
\ No newline at end of file
+var _0x5a96=['attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','name','filter','options','WhatsappQueue','includeAll','include','findAll','catch','find','create','user','get','role','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','getMembers','findOne','WhatsappQueueId','UserWhatsappQueue','User','findAndCountAll','UserId','whatsappPause','updatedAt','createdAt','rows','SIP','getTeams','Team','addTeams','ids','Agents','online','voicePause','interface','flatMap','each','findOrCreate','forEach','emit','userWhatsappQueue:save','field','tq.TeamId','from','team_has_whatsapp_queues','join','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','push','sequelize','toString','QueryTypes','TeamId','includes','all','compact','value','transaction','isEmpty','userWhatsappQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','register','offset','undefined','limit','count','status','set','json','apply','reject','update','then','destroy','WhatsappQueues','end','error','stack','send','index','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model','fields'];(function(_0x5de385,_0x2638c3){var _0x306007=function(_0x50a60b){while(--_0x50a60b){_0x5de385['push'](_0x5de385['shift']());}};_0x306007(++_0x2638c3);}(_0x5a96,0x1ee));var _0x65a9=function(_0x64d2f5,_0x19327e){_0x64d2f5=_0x64d2f5-0x0;var _0x334968=_0x5a96[_0x64d2f5];return _0x334968;};'use strict';var emlformat=require(_0x65a9('0x0'));var rimraf=require(_0x65a9('0x1'));var zipdir=require(_0x65a9('0x2'));var jsonpatch=require(_0x65a9('0x3'));var rp=require(_0x65a9('0x4'));var moment=require(_0x65a9('0x5'));var BPromise=require(_0x65a9('0x6'));var Mustache=require(_0x65a9('0x7'));var util=require(_0x65a9('0x8'));var path=require(_0x65a9('0x9'));var sox=require('sox');var csv=require(_0x65a9('0xa'));var ejs=require(_0x65a9('0xb'));var fs=require('fs');var fs_extra=require(_0x65a9('0xc'));var _=require('lodash');var squel=require(_0x65a9('0xd'));var crypto=require(_0x65a9('0xe'));var jsforce=require(_0x65a9('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x65a9('0xa'));var querystring=require('querystring');var Papa=require(_0x65a9('0x10'));var Redis=require(_0x65a9('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x65a9('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x65a9('0x13'));var logger=require(_0x65a9('0x14'))(_0x65a9('0x15'));var utils=require(_0x65a9('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x65a9('0x17'));var db=require(_0x65a9('0x18'))['db'];config[_0x65a9('0x19')]=_[_0x65a9('0x1a')](config[_0x65a9('0x19')],{'host':_0x65a9('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x65a9('0x19')]));require('./whatsappQueue.socket')[_0x65a9('0x1c')](socket);function respondWithStatusCode(_0x56dbeb,_0xb00bde){_0xb00bde=_0xb00bde||0xcc;return function(_0x15aded){if(_0x15aded){return _0x56dbeb['sendStatus'](_0xb00bde);}return _0x56dbeb['status'](_0xb00bde)['end']();};}function respondWithResult(_0xeb312d,_0x464e0d){_0x464e0d=_0x464e0d||0xc8;return function(_0x31302f){if(_0x31302f){return _0xeb312d['status'](_0x464e0d)['json'](_0x31302f);}};}function respondWithFilteredResult(_0x5a98ea,_0x208e9b){return function(_0x3dd4c6){if(_0x3dd4c6){var _0x48d660=typeof _0x208e9b[_0x65a9('0x1d')]===_0x65a9('0x1e')&&typeof _0x208e9b[_0x65a9('0x1f')]===_0x65a9('0x1e');var _0x282a00=_0x3dd4c6[_0x65a9('0x20')];var _0xf4538b=_0x48d660?0x0:_0x208e9b['offset'];var _0x32ee76=_0x48d660?_0x3dd4c6[_0x65a9('0x20')]:_0x208e9b['offset']+_0x208e9b[_0x65a9('0x1f')];var _0x577911;if(_0x32ee76>=_0x282a00){_0x32ee76=_0x282a00;_0x577911=0xc8;}else{_0x577911=0xce;}_0x5a98ea[_0x65a9('0x21')](_0x577911);return _0x5a98ea[_0x65a9('0x22')]('Content-Range',_0xf4538b+'-'+_0x32ee76+'/'+_0x282a00)[_0x65a9('0x23')](_0x3dd4c6);}return null;};}function patchUpdates(_0x55a873){return function(_0x3e9434){try{jsonpatch[_0x65a9('0x24')](_0x3e9434,_0x55a873,!![]);}catch(_0x180f6e){return BPromise[_0x65a9('0x25')](_0x180f6e);}return _0x3e9434['save']();};}function saveUpdates(_0x254a55,_0x3b9f0c){return function(_0x2a1e0d){if(_0x2a1e0d){return _0x2a1e0d[_0x65a9('0x26')](_0x254a55)[_0x65a9('0x27')](function(_0x419890){return _0x419890;});}return null;};}function removeEntity(_0x46c2da,_0x5686c3){return function(_0x18beb9){if(_0x18beb9){return _0x18beb9[_0x65a9('0x28')]()[_0x65a9('0x27')](function(){var _0x5c2687=_0x18beb9['get']({'plain':!![]});var _0x23bd74=_0x65a9('0x29');return db['UserProfileResource']['destroy']({'where':{'type':_0x23bd74,'resourceId':_0x5c2687['id']}})[_0x65a9('0x27')](function(){return _0x18beb9;});})[_0x65a9('0x27')](function(){_0x46c2da[_0x65a9('0x21')](0xcc)[_0x65a9('0x2a')]();});}};}function handleEntityNotFound(_0x1726a5,_0x479700){return function(_0x149d9e){if(!_0x149d9e){_0x1726a5['sendStatus'](0x194);}return _0x149d9e;};}function handleError(_0x380a16,_0x5ccc8c){_0x5ccc8c=_0x5ccc8c||0x1f4;return function(_0x549ef9){logger[_0x65a9('0x2b')](_0x549ef9[_0x65a9('0x2c')]);if(_0x549ef9['name']){delete _0x549ef9['name'];}_0x380a16['status'](_0x5ccc8c)[_0x65a9('0x2d')](_0x549ef9);};}exports[_0x65a9('0x2e')]=function(_0x5aacba,_0x425705){var _0x59a865={},_0x42d385={},_0x548f4c={'count':0x0,'rows':[]};var _0x46a04d=_['map'](db['WhatsappQueue'][_0x65a9('0x2f')],function(_0x321236){return{'name':_0x321236[_0x65a9('0x30')],'type':_0x321236[_0x65a9('0x31')][_0x65a9('0x32')]};});_0x42d385['model']=_[_0x65a9('0x33')](_0x46a04d,'name');_0x42d385[_0x65a9('0x34')]=_[_0x65a9('0x35')](_0x5aacba[_0x65a9('0x34')]);_0x42d385[_0x65a9('0x36')]=_[_0x65a9('0x37')](_0x42d385[_0x65a9('0x38')],_0x42d385[_0x65a9('0x34')]);_0x59a865['attributes']=_[_0x65a9('0x37')](_0x42d385[_0x65a9('0x38')],qs['fields'](_0x5aacba[_0x65a9('0x34')][_0x65a9('0x39')]));_0x59a865[_0x65a9('0x3a')]=_0x59a865[_0x65a9('0x3a')][_0x65a9('0x3b')]?_0x59a865[_0x65a9('0x3a')]:_0x42d385[_0x65a9('0x38')];if(!_0x5aacba[_0x65a9('0x34')][_0x65a9('0x3c')](_0x65a9('0x3d'))){_0x59a865[_0x65a9('0x1f')]=qs[_0x65a9('0x1f')](_0x5aacba[_0x65a9('0x34')][_0x65a9('0x1f')]);_0x59a865[_0x65a9('0x1d')]=qs[_0x65a9('0x1d')](_0x5aacba[_0x65a9('0x34')][_0x65a9('0x1d')]);}_0x59a865[_0x65a9('0x3e')]=qs[_0x65a9('0x3f')](_0x5aacba['query'][_0x65a9('0x3f')]);_0x59a865[_0x65a9('0x40')]=qs[_0x65a9('0x36')](_[_0x65a9('0x41')](_0x5aacba[_0x65a9('0x34')],_0x42d385[_0x65a9('0x36')]),_0x46a04d);if(_0x5aacba[_0x65a9('0x34')]['filter']){_0x59a865[_0x65a9('0x40')]=_[_0x65a9('0x42')](_0x59a865['where'],{'$or':_[_0x65a9('0x33')](_0x46a04d,function(_0x21b793){if(_0x21b793[_0x65a9('0x31')]!=='VIRTUAL'){var _0xd34c8c={};_0xd34c8c[_0x21b793[_0x65a9('0x43')]]={'$like':'%'+_0x5aacba[_0x65a9('0x34')][_0x65a9('0x44')]+'%'};return _0xd34c8c;}})});}_0x59a865=_[_0x65a9('0x42')]({},_0x59a865,_0x5aacba[_0x65a9('0x45')]);var _0x897b51={'where':_0x59a865[_0x65a9('0x40')]};return db[_0x65a9('0x46')][_0x65a9('0x20')](_0x897b51)[_0x65a9('0x27')](function(_0x48e5c3){_0x548f4c[_0x65a9('0x20')]=_0x48e5c3;if(_0x5aacba[_0x65a9('0x34')][_0x65a9('0x47')]){_0x59a865[_0x65a9('0x48')]=[{'all':!![]}];}return db[_0x65a9('0x46')][_0x65a9('0x49')](_0x59a865);})[_0x65a9('0x27')](function(_0x1ded5c){_0x548f4c['rows']=_0x1ded5c;return _0x548f4c;})['then'](respondWithFilteredResult(_0x425705,_0x59a865))[_0x65a9('0x4a')](handleError(_0x425705,null));};exports['show']=function(_0x5bd830,_0x2b16c2){var _0x2958b3={'raw':!![],'where':{'id':_0x5bd830['params']['id']}},_0xca4591={};_0xca4591[_0x65a9('0x38')]=_[_0x65a9('0x35')](db[_0x65a9('0x46')][_0x65a9('0x2f')]);_0xca4591[_0x65a9('0x34')]=_['keys'](_0x5bd830[_0x65a9('0x34')]);_0xca4591[_0x65a9('0x36')]=_[_0x65a9('0x37')](_0xca4591[_0x65a9('0x38')],_0xca4591[_0x65a9('0x34')]);_0x2958b3['attributes']=_[_0x65a9('0x37')](_0xca4591['model'],qs['fields'](_0x5bd830[_0x65a9('0x34')]['fields']));_0x2958b3['attributes']=_0x2958b3[_0x65a9('0x3a')][_0x65a9('0x3b')]?_0x2958b3[_0x65a9('0x3a')]:_0xca4591[_0x65a9('0x38')];if(_0x5bd830[_0x65a9('0x34')][_0x65a9('0x47')]){_0x2958b3[_0x65a9('0x48')]=[{'all':!![]}];}_0x2958b3=_[_0x65a9('0x42')]({},_0x2958b3,_0x5bd830[_0x65a9('0x45')]);return db[_0x65a9('0x46')][_0x65a9('0x4b')](_0x2958b3)[_0x65a9('0x27')](handleEntityNotFound(_0x2b16c2,null))['then'](respondWithResult(_0x2b16c2,null))['catch'](handleError(_0x2b16c2,null));};exports[_0x65a9('0x4c')]=function(_0x5368bc,_0x1ce5c5){return db[_0x65a9('0x46')][_0x65a9('0x4c')](_0x5368bc['body'],{})[_0x65a9('0x27')](function(_0xcf9838){var _0x446666=_0x5368bc[_0x65a9('0x4d')][_0x65a9('0x4e')]({'plain':!![]});if(!_0x446666)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x446666[_0x65a9('0x4f')]==='user'){var _0x306dc0=_0xcf9838[_0x65a9('0x4e')]({'plain':!![]});var _0x50e08c=_0x65a9('0x29');return db[_0x65a9('0x50')][_0x65a9('0x4b')]({'where':{'name':_0x50e08c,'userProfileId':_0x446666[_0x65a9('0x51')]},'raw':!![]})[_0x65a9('0x27')](function(_0x23fa8b){if(_0x23fa8b&&_0x23fa8b['autoAssociation']===0x0){return db[_0x65a9('0x52')][_0x65a9('0x4c')]({'name':_0x306dc0[_0x65a9('0x43')],'resourceId':_0x306dc0['id'],'type':_0x23fa8b['name'],'sectionId':_0x23fa8b['id']},{})[_0x65a9('0x27')](function(){return _0xcf9838;});}else{return _0xcf9838;}})[_0x65a9('0x4a')](function(_0x9c907c){logger[_0x65a9('0x2b')](_0x65a9('0x53'),_0x9c907c);throw _0x9c907c;});}return _0xcf9838;})[_0x65a9('0x27')](respondWithResult(_0x1ce5c5,0xc9))['catch'](handleError(_0x1ce5c5,null));};exports[_0x65a9('0x26')]=function(_0x1425ab,_0x828a6f){if(_0x1425ab[_0x65a9('0x54')]['id']){delete _0x1425ab[_0x65a9('0x54')]['id'];}return db[_0x65a9('0x46')]['find']({'where':{'id':_0x1425ab[_0x65a9('0x55')]['id']}})[_0x65a9('0x27')](handleEntityNotFound(_0x828a6f,null))[_0x65a9('0x27')](saveUpdates(_0x1425ab[_0x65a9('0x54')],null))[_0x65a9('0x27')](respondWithResult(_0x828a6f,null))[_0x65a9('0x4a')](handleError(_0x828a6f,null));};exports['destroy']=function(_0x5d7d8b,_0x5afc67){return db['WhatsappQueue'][_0x65a9('0x4b')]({'where':{'id':_0x5d7d8b['params']['id']}})[_0x65a9('0x27')](handleEntityNotFound(_0x5afc67,null))[_0x65a9('0x27')](removeEntity(_0x5afc67,null))['catch'](handleError(_0x5afc67,null));};exports[_0x65a9('0x56')]=function(_0x4bdcd4,_0x10d496){return db[_0x65a9('0x46')][_0x65a9('0x56')]()['then'](respondWithResult(_0x10d496,null))[_0x65a9('0x4a')](handleError(_0x10d496,null));};exports[_0x65a9('0x57')]=function(_0x59b08f,_0x32139f,_0x5a5c7f){var _0xfdb09b={'raw':!![],'where':{}},_0x527858={},_0x8b1c9a;return db[_0x65a9('0x46')][_0x65a9('0x58')]({'where':{'id':_0x59b08f[_0x65a9('0x55')]['id']}})[_0x65a9('0x27')](handleEntityNotFound(_0x32139f,null))[_0x65a9('0x27')](function(_0x16d51b){if(_0x16d51b){_0x8b1c9a=_0x16d51b[_0x65a9('0x4e')]({'plain':!![]});_0x527858[_0x65a9('0x38')]=_[_0x65a9('0x35')](db['UserWhatsappQueue'][_0x65a9('0x2f')]);_0x527858[_0x65a9('0x34')]=_[_0x65a9('0x35')](_0x59b08f['query']);_0x527858['filters']=_[_0x65a9('0x37')](_0x527858[_0x65a9('0x38')],_0x527858[_0x65a9('0x34')]);_0xfdb09b[_0x65a9('0x3a')]=_[_0x65a9('0x37')](_0x527858[_0x65a9('0x38')],qs[_0x65a9('0x39')](_0x59b08f[_0x65a9('0x34')][_0x65a9('0x39')]));_0xfdb09b['attributes']=_0xfdb09b[_0x65a9('0x3a')][_0x65a9('0x3b')]?_0xfdb09b['attributes']:_0x527858['model'];if(!_0x59b08f[_0x65a9('0x34')][_0x65a9('0x3c')](_0x65a9('0x3d'))){_0xfdb09b['limit']=qs['limit'](_0x59b08f['query']['limit']);_0xfdb09b['offset']=qs[_0x65a9('0x1d')](_0x59b08f[_0x65a9('0x34')][_0x65a9('0x1d')]);}_0xfdb09b[_0x65a9('0x3e')]=qs[_0x65a9('0x3f')](_0x59b08f[_0x65a9('0x34')][_0x65a9('0x3f')]);_0xfdb09b[_0x65a9('0x40')]=qs['filters'](_[_0x65a9('0x41')](_0x59b08f['query'],_0x527858[_0x65a9('0x36')]));_0xfdb09b['where'][_0x65a9('0x59')]=_0x16d51b['id'];if(_0x59b08f[_0x65a9('0x34')][_0x65a9('0x44')]){_0xfdb09b[_0x65a9('0x40')]=_[_0x65a9('0x42')](_0xfdb09b[_0x65a9('0x40')],{'$or':_[_0x65a9('0x33')](_0xfdb09b['attributes'],function(_0x2f0cff){var _0x1e365a={};_0x1e365a[_0x2f0cff]={'$like':'%'+_0x59b08f[_0x65a9('0x34')][_0x65a9('0x44')]+'%'};return _0x1e365a;})});}_0xfdb09b=_[_0x65a9('0x42')]({},_0xfdb09b,_0x59b08f[_0x65a9('0x45')]);return db[_0x65a9('0x5a')]['findAll'](_0xfdb09b);}})[_0x65a9('0x27')](function(_0x14f92e){if(_0x14f92e){return db[_0x65a9('0x5b')][_0x65a9('0x5c')]({'where':{'id':_['map'](_0x14f92e,_0x65a9('0x5d')),'role':'agent'},'attributes':['id',_0x65a9('0x43'),_0x65a9('0x5e'),_0x65a9('0x5f'),_0x65a9('0x60')]});}})[_0x65a9('0x27')](function(_0x2b3c00){if(_0x2b3c00){return{'count':_0x2b3c00[_0x65a9('0x20')],'rows':_[_0x65a9('0x33')](_0x2b3c00[_0x65a9('0x61')],function(_0x3157cd){return{'membername':_0x3157cd[_0x65a9('0x43')],'UserId':_0x3157cd['id'],'queue_name':_0x8b1c9a[_0x65a9('0x43')],'WhatsappQueueId':_0x8b1c9a['id'],'interface':util['format']('%s/%s',_0x65a9('0x62'),_0x3157cd[_0x65a9('0x43')]),'penalty':0x0,'paused':_0x3157cd['whatsappPause'],'createdAt':_0x3157cd[_0x65a9('0x60')],'updatedAt':_0x3157cd[_0x65a9('0x5f')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x65a9('0x27')](respondWithFilteredResult(_0x32139f,_0xfdb09b))[_0x65a9('0x4a')](handleError(_0x32139f,null));};exports[_0x65a9('0x63')]=function(_0x2cadb7,_0x4f3c57,_0x4378b1){var _0x4c0cff={};var _0x37b920={};var _0xd7c425;var _0x538b66;return db[_0x65a9('0x46')][_0x65a9('0x58')]({'where':{'id':_0x2cadb7[_0x65a9('0x55')]['id']}})['then'](handleEntityNotFound(_0x4f3c57,null))['then'](function(_0x48a1d0){if(_0x48a1d0){_0xd7c425=_0x48a1d0;_0x37b920[_0x65a9('0x38')]=_['keys'](db[_0x65a9('0x64')][_0x65a9('0x2f')]);_0x37b920[_0x65a9('0x34')]=_['keys'](_0x2cadb7[_0x65a9('0x34')]);_0x37b920['filters']=_[_0x65a9('0x37')](_0x37b920[_0x65a9('0x38')],_0x37b920[_0x65a9('0x34')]);_0x4c0cff[_0x65a9('0x3a')]=_[_0x65a9('0x37')](_0x37b920[_0x65a9('0x38')],qs[_0x65a9('0x39')](_0x2cadb7['query'][_0x65a9('0x39')]));_0x4c0cff[_0x65a9('0x3a')]=_0x4c0cff[_0x65a9('0x3a')]['length']?_0x4c0cff[_0x65a9('0x3a')]:_0x37b920[_0x65a9('0x38')];_0x4c0cff[_0x65a9('0x3e')]=qs[_0x65a9('0x3f')](_0x2cadb7[_0x65a9('0x34')][_0x65a9('0x3f')]);_0x4c0cff[_0x65a9('0x40')]=qs[_0x65a9('0x36')](_[_0x65a9('0x41')](_0x2cadb7[_0x65a9('0x34')],_0x37b920[_0x65a9('0x36')]));if(_0x2cadb7[_0x65a9('0x34')]['filter']){_0x4c0cff['where']=_['merge'](_0x4c0cff['where'],{'$or':_['map'](_0x4c0cff[_0x65a9('0x3a')],function(_0x591a80){var _0x13f925={};_0x13f925[_0x591a80]={'$like':'%'+_0x2cadb7[_0x65a9('0x34')][_0x65a9('0x44')]+'%'};return _0x13f925;})});}_0x4c0cff=_[_0x65a9('0x42')]({},_0x4c0cff,_0x2cadb7['options']);return _0xd7c425[_0x65a9('0x63')](_0x4c0cff);}})[_0x65a9('0x27')](function(_0x3b123c){if(_0x3b123c){_0x538b66=_0x3b123c[_0x65a9('0x3b')];if(!_0x2cadb7[_0x65a9('0x34')]['hasOwnProperty'](_0x65a9('0x3d'))){_0x4c0cff[_0x65a9('0x1f')]=qs[_0x65a9('0x1f')](_0x2cadb7[_0x65a9('0x34')][_0x65a9('0x1f')]);_0x4c0cff[_0x65a9('0x1d')]=qs[_0x65a9('0x1d')](_0x2cadb7[_0x65a9('0x34')]['offset']);}return _0xd7c425[_0x65a9('0x63')](_0x4c0cff);}})[_0x65a9('0x27')](function(_0x1ad5b9){if(_0x1ad5b9){return _0x1ad5b9?{'count':_0x538b66,'rows':_0x1ad5b9}:null;}})['then'](respondWithResult(_0x4f3c57,null))[_0x65a9('0x4a')](handleError(_0x4f3c57,null));};exports[_0x65a9('0x65')]=function(_0x262831,_0x153467,_0x54a485){var _0x13d8fa=_0x262831['body'][_0x65a9('0x66')];return db['Team'][_0x65a9('0x49')]({'where':{'id':_0x13d8fa},'attributes':['id'],'include':[{'model':db[_0x65a9('0x5b')],'as':_0x65a9('0x67'),'attributes':['id','name',_0x65a9('0x68'),_0x65a9('0x69'),_0x65a9('0x6a')],'raw':!![]}]})[_0x65a9('0x27')](function(_0x1af012){if(_0x1af012){var _0x5d58bb=_[_0x65a9('0x6b')](_0x1af012,function(_0x3290ec){var _0x5bca0d=_0x3290ec[_0x65a9('0x4e')]({'plain':!![]});return _0x5bca0d[_0x65a9('0x67')];});return db[_0x65a9('0x46')]['find']({'where':{'id':_0x262831[_0x65a9('0x55')]['id']}})[_0x65a9('0x27')](function(_0x30cbef){return db['sequelize']['transaction'](function(_0x2af623){return _0x30cbef[_0x65a9('0x65')](_0x13d8fa,{'transaction':_0x2af623})['then'](function(){return BPromise[_0x65a9('0x6c')](_0x5d58bb,function(_0x86d22e){return db['UserWhatsappQueue'][_0x65a9('0x6d')]({'where':{'UserId':_0x86d22e['id'],'WhatsappQueueId':_0x262831[_0x65a9('0x55')]['id']},'transaction':_0x2af623});});})[_0x65a9('0x27')](function(){_0x5d58bb[_0x65a9('0x6e')](function(_0x5c9ad7){socket[_0x65a9('0x6f')](_0x65a9('0x70'),{'UserId':_0x5c9ad7['id'],'WhatsappQueueId':_0x30cbef['id']});});});});});}})[_0x65a9('0x27')](respondWithStatusCode(_0x153467,null))['catch'](handleError(_0x153467,null));};exports['removeTeams']=function(_0xeda97a,_0x1cbf65,_0x32bd9c){return db[_0x65a9('0x64')]['findAll']({'where':{'id':_0xeda97a['query']['ids']},'attributes':['id'],'include':[{'model':db[_0x65a9('0x5b')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x1cbf65,null))[_0x65a9('0x27')](function(_0x3b20ac){var _0x2e562c=_[_0x65a9('0x33')](_0x3b20ac,'id');var _0x24e085=[];var _0x2c36d2=[];var _0x5b2ef7=squel['select']();_0x5b2ef7[_0x65a9('0x71')](_0x65a9('0x72'))[_0x65a9('0x73')](_0x65a9('0x74'),'tq')[_0x65a9('0x75')]('user_has_teams','ut',_0x65a9('0x76'))['where'](_0x65a9('0x77'),_0xeda97a['params']['id']);for(var _0x3a51bf=0x0;_0x3a51bf<_0x3b20ac[_0x65a9('0x3b')];_0x3a51bf+=0x1){let _0x3a30bb=_0x3b20ac[_0x3a51bf];for(var _0x5d6567=0x0;_0x5d6567<_0x3a30bb[_0x65a9('0x67')]['length'];_0x5d6567+=0x1){let _0x369db8=_0x3a30bb[_0x65a9('0x67')][_0x5d6567];var _0xa602de=_0x5b2ef7[_0x65a9('0x78')]();_0xa602de[_0x65a9('0x40')]('ut.UserId\x20=\x20?',_0x369db8['id']);_0x2c36d2[_0x65a9('0x79')](db[_0x65a9('0x7a')]['query'](_0xa602de[_0x65a9('0x7b')](),{'type':db[_0x65a9('0x7a')][_0x65a9('0x7c')]['SELECT']})[_0x65a9('0x27')](function(_0xf80c1d){if(_0xf80c1d[_0x65a9('0x3b')]===0x1){return _0x369db8['id'];}else{var _0x20d161=_['every'](_[_0x65a9('0x33')](_0xf80c1d,_0x65a9('0x7d')),function(_0x582931){return _[_0x65a9('0x7e')](_0x2e562c,_0x582931);});if(_0x20d161){return _0x369db8['id'];}}}));}}return BPromise[_0x65a9('0x7f')](_0x2c36d2)[_0x65a9('0x27')](function(_0x55608a){_0x24e085=_(_0x24e085)['union'](_0x55608a)[_0x65a9('0x80')]()[_0x65a9('0x81')]();return db[_0x65a9('0x46')][_0x65a9('0x4b')]({'where':{'id':_0xeda97a[_0x65a9('0x55')]['id']}})[_0x65a9('0x27')](function(_0x2e398c){return db['sequelize'][_0x65a9('0x82')](function(_0x412b52){return _0x2e398c['removeTeams'](_0xeda97a['query'][_0x65a9('0x66')],{'transaction':_0x412b52})['then'](function(){if(!_[_0x65a9('0x83')](_0x24e085)){return _0x2e398c['removeAgents'](_0x24e085,{'transaction':_0x412b52});}})[_0x65a9('0x27')](function(){_0x24e085['forEach'](function(_0x992449){socket[_0x65a9('0x6f')](_0x65a9('0x84'),{'UserId':_0x992449,'WhatsappQueueId':_0x2e398c['id']});});});});});});})[_0x65a9('0x27')](respondWithStatusCode(_0x1cbf65,null))[_0x65a9('0x4a')](handleError(_0x1cbf65,null));};exports[_0x65a9('0x85')]=function(_0x1adc81,_0x5c72ff,_0x1a0d40){return db[_0x65a9('0x46')][_0x65a9('0x4b')]({'where':{'id':_0x1adc81[_0x65a9('0x55')]['id']}})[_0x65a9('0x27')](handleEntityNotFound(_0x5c72ff,null))[_0x65a9('0x27')](function(_0x416e48){if(_0x416e48){return _0x416e48[_0x65a9('0x85')](_0x1adc81[_0x65a9('0x54')][_0x65a9('0x66')],_[_0x65a9('0x86')](_0x1adc81[_0x65a9('0x54')],['ids','id'])||{})[_0x65a9('0x87')](function(_0x11d3a2){for(var _0x4526f7=0x0;_0x4526f7<_0x1adc81['body'][_0x65a9('0x66')][_0x65a9('0x3b')];_0x4526f7+=0x1){socket[_0x65a9('0x6f')]('userWhatsappQueue:save',{'UserId':Number(_0x1adc81[_0x65a9('0x54')][_0x65a9('0x66')][_0x4526f7]),'WhatsappQueueId':Number(_0x1adc81['params']['id'])});}return _0x11d3a2;});}})[_0x65a9('0x27')](respondWithResult(_0x5c72ff,null))[_0x65a9('0x4a')](handleError(_0x5c72ff,null));};exports['removeAgents']=function(_0x52a97f,_0x139883,_0x33f042){return db[_0x65a9('0x46')]['find']({'where':{'id':_0x52a97f[_0x65a9('0x55')]['id']}})[_0x65a9('0x27')](handleEntityNotFound(_0x139883,null))[_0x65a9('0x27')](function(_0x3d25f5){if(_0x3d25f5){return _0x3d25f5['removeAgents'](_0x52a97f[_0x65a9('0x34')][_0x65a9('0x66')])['then'](function(){if(_[_0x65a9('0x88')](_0x52a97f[_0x65a9('0x34')][_0x65a9('0x66')])){for(var _0x4c5314=0x0;_0x4c5314<_0x52a97f[_0x65a9('0x34')][_0x65a9('0x66')][_0x65a9('0x3b')];_0x4c5314+=0x1){socket[_0x65a9('0x6f')](_0x65a9('0x84'),{'UserId':Number(_0x52a97f[_0x65a9('0x34')][_0x65a9('0x66')][_0x4c5314]),'WhatsappQueueId':Number(_0x52a97f['params']['id'])});}}else{socket[_0x65a9('0x6f')](_0x65a9('0x84'),{'UserId':Number(_0x52a97f[_0x65a9('0x34')][_0x65a9('0x66')]),'WhatsappQueueId':Number(_0x52a97f[_0x65a9('0x55')]['id'])});}});}})['then'](respondWithStatusCode(_0x139883,null))['catch'](handleError(_0x139883,null));};exports[_0x65a9('0x89')]=function(_0x33ddd2,_0x43342c,_0x3dfaff){var _0x53885c={};var _0x2da3d2={};var _0x540ffd;var _0x114c4c;return db['WhatsappQueue']['findOne']({'where':{'id':_0x33ddd2['params']['id']}})[_0x65a9('0x27')](handleEntityNotFound(_0x43342c,null))[_0x65a9('0x27')](function(_0x41e3cf){if(_0x41e3cf){_0x540ffd=_0x41e3cf;_0x2da3d2[_0x65a9('0x38')]=_[_0x65a9('0x35')](db[_0x65a9('0x5b')][_0x65a9('0x2f')]);_0x2da3d2[_0x65a9('0x34')]=_[_0x65a9('0x35')](_0x33ddd2['query']);_0x2da3d2[_0x65a9('0x36')]=_[_0x65a9('0x37')](_0x2da3d2[_0x65a9('0x38')],_0x2da3d2[_0x65a9('0x34')]);_0x53885c[_0x65a9('0x3a')]=_[_0x65a9('0x37')](_0x2da3d2[_0x65a9('0x38')],qs[_0x65a9('0x39')](_0x33ddd2[_0x65a9('0x34')]['fields']));_0x53885c[_0x65a9('0x3a')]=_0x53885c[_0x65a9('0x3a')][_0x65a9('0x3b')]?_0x53885c[_0x65a9('0x3a')]:_0x2da3d2[_0x65a9('0x38')];_0x53885c['order']=qs[_0x65a9('0x3f')](_0x33ddd2[_0x65a9('0x34')][_0x65a9('0x3f')]);_0x53885c['where']=qs[_0x65a9('0x36')](_[_0x65a9('0x41')](_0x33ddd2[_0x65a9('0x34')],_0x2da3d2['filters']));if(_0x33ddd2[_0x65a9('0x34')][_0x65a9('0x44')]){_0x53885c[_0x65a9('0x40')]=_['merge'](_0x53885c[_0x65a9('0x40')],{'$or':_[_0x65a9('0x33')](_0x53885c[_0x65a9('0x3a')],function(_0x52c58f){var _0x10cfe7={};_0x10cfe7[_0x52c58f]={'$like':'%'+_0x33ddd2[_0x65a9('0x34')]['filter']+'%'};return _0x10cfe7;})});}_0x53885c=_[_0x65a9('0x42')]({},_0x53885c,_0x33ddd2[_0x65a9('0x45')]);return _0x540ffd[_0x65a9('0x89')](_0x53885c);}})['then'](function(_0x391dce){if(_0x391dce){_0x114c4c=_0x391dce[_0x65a9('0x3b')];if(!_0x33ddd2[_0x65a9('0x34')][_0x65a9('0x3c')](_0x65a9('0x3d'))){_0x53885c[_0x65a9('0x1f')]=qs[_0x65a9('0x1f')](_0x33ddd2['query']['limit']);_0x53885c[_0x65a9('0x1d')]=qs[_0x65a9('0x1d')](_0x33ddd2[_0x65a9('0x34')]['offset']);}return _0x540ffd['getAgents'](_0x53885c);}})['then'](function(_0x5e2125){if(_0x5e2125){return _0x5e2125?{'count':_0x114c4c,'rows':_0x5e2125}:null;}})[_0x65a9('0x27')](respondWithResult(_0x43342c,null))[_0x65a9('0x4a')](handleError(_0x43342c,null));};
\ No newline at end of file
index 7cfac2c..b34270a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7018=['emit','hasOwnProperty','hook','exports','events','WhatsappQueue','setMaxListeners','save','update','remove'];(function(_0x4b26b5,_0x4f71fd){var _0x4dec71=function(_0x184329){while(--_0x184329){_0x4b26b5['push'](_0x4b26b5['shift']());}};_0x4dec71(++_0x4f71fd);}(_0x7018,0xc2));var _0x8701=function(_0x1e373e,_0x2730a6){_0x1e373e=_0x1e373e-0x0;var _0x34fd7a=_0x7018[_0x1e373e];return _0x34fd7a;};'use strict';var EventEmitter=require(_0x8701('0x0'));var WhatsappQueue=require('../../mysqldb')['db'][_0x8701('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0x8701('0x2')](0x0);var events={'afterCreate':_0x8701('0x3'),'afterUpdate':_0x8701('0x4'),'afterDestroy':_0x8701('0x5')};function emitEvent(_0x1462e7){return function(_0x1944f6,_0x13d42c,_0x5b2aa1){WhatsappQueueEvents[_0x8701('0x6')](_0x1462e7+':'+_0x1944f6['id'],_0x1944f6);WhatsappQueueEvents[_0x8701('0x6')](_0x1462e7,_0x1944f6);_0x5b2aa1(null);};}for(var e in events){if(events[_0x8701('0x7')](e)){var event=events[e];WhatsappQueue[_0x8701('0x8')](e,emitEvent(event));}}module[_0x8701('0x9')]=WhatsappQueueEvents;
\ No newline at end of file
+var _0x99ea=['events','../../mysqldb','setMaxListeners','save','remove','emit','hook','exports'];(function(_0x46371f,_0x282e44){var _0x317e58=function(_0x1fdc94){while(--_0x1fdc94){_0x46371f['push'](_0x46371f['shift']());}};_0x317e58(++_0x282e44);}(_0x99ea,0x1b0));var _0xa99e=function(_0x15797a,_0x16274f){_0x15797a=_0x15797a-0x0;var _0x3e2618=_0x99ea[_0x15797a];return _0x3e2618;};'use strict';var EventEmitter=require(_0xa99e('0x0'));var WhatsappQueue=require(_0xa99e('0x1'))['db']['WhatsappQueue'];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xa99e('0x2')](0x0);var events={'afterCreate':_0xa99e('0x3'),'afterUpdate':'update','afterDestroy':_0xa99e('0x4')};function emitEvent(_0x11ff13){return function(_0xf5bdb4,_0x594d7b,_0xcde8d4){WhatsappQueueEvents['emit'](_0x11ff13+':'+_0xf5bdb4['id'],_0xf5bdb4);WhatsappQueueEvents[_0xa99e('0x5')](_0x11ff13,_0xf5bdb4);_0xcde8d4(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappQueue[_0xa99e('0x6')](e,emitEvent(event));}}module[_0xa99e('0x7')]=WhatsappQueueEvents;
\ No newline at end of file
index 941c505..e6a6aec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9844=['moment','bluebird','path','rimraf','../../config/environment','exports','define','WhatsappQueue','lodash','util'];(function(_0x26528d,_0x45dc7e){var _0x198529=function(_0x55c55e){while(--_0x55c55e){_0x26528d['push'](_0x26528d['shift']());}};_0x198529(++_0x45dc7e);}(_0x9844,0x166));var _0x4984=function(_0x906002,_0x365920){_0x906002=_0x906002-0x0;var _0x55dc5c=_0x9844[_0x906002];return _0x55dc5c;};'use strict';var _=require(_0x4984('0x0'));var util=require(_0x4984('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x4984('0x2'));var BPromise=require(_0x4984('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4984('0x4'));var rimraf=require(_0x4984('0x5'));var config=require(_0x4984('0x6'));var attributes=require('./whatsappQueue.attributes');module[_0x4984('0x7')]=function(_0x3395e0,_0x13955c){return _0x3395e0[_0x4984('0x8')](_0x4984('0x9'),attributes,{'tableName':'whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6a10=['moment','bluebird','request-promise','path','rimraf','./whatsappQueue.attributes','exports','define','WhatsappQueue','lodash','../../config/logger','api'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x6a10,0x129));var _0x06a1=function(_0xda464c,_0x26e47d){_0xda464c=_0xda464c-0x0;var _0x19e222=_0x6a10[_0xda464c];return _0x19e222;};'use strict';var _=require(_0x06a1('0x0'));var util=require('util');var logger=require(_0x06a1('0x1'))(_0x06a1('0x2'));var moment=require(_0x06a1('0x3'));var BPromise=require(_0x06a1('0x4'));var rp=require(_0x06a1('0x5'));var fs=require('fs');var path=require(_0x06a1('0x6'));var rimraf=require(_0x06a1('0x7'));var config=require('../../config/environment');var attributes=require(_0x06a1('0x8'));module[_0x06a1('0x9')]=function(_0x6299c4,_0x62a320){return _0x6299c4[_0x06a1('0xa')](_0x06a1('0xb'),attributes,{'tableName':'whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6ee124d..c4acd0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad4a=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','./whatsappQueue.socket','register','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetWhatsappQueue','WhatsappQueue','options','attributes','limit','include','map','model','then','find','ShowWhatsappQueue','util','moment','bluebird'];(function(_0x2c74e5,_0x2f9a66){var _0x3ea53c=function(_0x5bf845){while(--_0x5bf845){_0x2c74e5['push'](_0x2c74e5['shift']());}};_0x3ea53c(++_0x2f9a66);}(_0xad4a,0x189));var _0xaad4=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xad4a[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0xaad4('0x0'));var moment=require(_0xaad4('0x1'));var BPromise=require(_0xaad4('0x2'));var rs=require(_0xaad4('0x3'));var fs=require('fs');var Redis=require(_0xaad4('0x4'));var db=require(_0xaad4('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xaad4('0x6'))(_0xaad4('0x7'));var config=require(_0xaad4('0x8'));var jayson=require(_0xaad4('0x9'));var client=jayson['client'][_0xaad4('0xa')]({'port':0x232a});config[_0xaad4('0xb')]=_['defaults'](config['redis'],{'host':_0xaad4('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xaad4('0xb')]));require(_0xaad4('0xd'))[_0xaad4('0xe')](socket);function respondWithRpcPromise(_0x5633df,_0x3098f7,_0x4a1c4a){return new BPromise(function(_0x463709,_0x3129e5){return client['request'](_0x5633df,_0x4a1c4a)['then'](function(_0x1a15de){logger[_0xaad4('0xf')](_0xaad4('0x10'),_0x3098f7,_0xaad4('0x11'));logger[_0xaad4('0x12')](_0xaad4('0x13'),_0x3098f7,_0xaad4('0x11'),JSON[_0xaad4('0x14')](_0x1a15de));if(_0x1a15de[_0xaad4('0x15')]){if(_0x1a15de[_0xaad4('0x15')]['code']===0x1f4){logger[_0xaad4('0x15')](_0xaad4('0x10'),_0x3098f7,_0x1a15de[_0xaad4('0x15')][_0xaad4('0x16')]);return _0x3129e5(_0x1a15de[_0xaad4('0x15')]['message']);}logger['error']('WhatsappQueue,\x20%s,\x20%s',_0x3098f7,_0x1a15de[_0xaad4('0x15')]['message']);return _0x463709(_0x1a15de['error']['message']);}else{logger['info'](_0xaad4('0x10'),_0x3098f7,_0xaad4('0x11'));_0x463709(_0x1a15de[_0xaad4('0x17')][_0xaad4('0x16')]);}})[_0xaad4('0x18')](function(_0x18044e){logger['error'](_0xaad4('0x10'),_0x3098f7,_0x18044e);_0x3129e5(_0x18044e);});});}exports[_0xaad4('0x19')]=function(_0x4c7217){var _0x376465=this;return new Promise(function(_0x49e27c,_0x55dcba){return db[_0xaad4('0x1a')]['findAll']({'raw':_0x4c7217['options']?_0x4c7217['options']['raw']===undefined?!![]:![]:!![],'where':_0x4c7217[_0xaad4('0x1b')]?_0x4c7217[_0xaad4('0x1b')]['where']||null:null,'attributes':_0x4c7217[_0xaad4('0x1b')]?_0x4c7217['options'][_0xaad4('0x1c')]||null:null,'limit':_0x4c7217[_0xaad4('0x1b')]?_0x4c7217[_0xaad4('0x1b')][_0xaad4('0x1d')]||null:null,'include':_0x4c7217[_0xaad4('0x1b')]?_0x4c7217['options'][_0xaad4('0x1e')]?_[_0xaad4('0x1f')](_0x4c7217['options'][_0xaad4('0x1e')],function(_0x5362bb){return{'model':db[_0x5362bb['model']],'as':_0x5362bb['as'],'attributes':_0x5362bb[_0xaad4('0x1c')],'include':_0x5362bb['include']?_['map'](_0x5362bb[_0xaad4('0x1e')],function(_0x3a46c6){return{'model':db[_0x3a46c6['model']],'as':_0x3a46c6['as'],'attributes':_0x3a46c6[_0xaad4('0x1c')],'include':_0x3a46c6[_0xaad4('0x1e')]?_[_0xaad4('0x1f')](_0x3a46c6[_0xaad4('0x1e')],function(_0xbe1584){return{'model':db[_0xbe1584[_0xaad4('0x20')]],'as':_0xbe1584['as'],'attributes':_0xbe1584['attributes']};}):[]};}):[]};}):[]:[]})[_0xaad4('0x21')](function(_0x274f0b){logger[_0xaad4('0xf')](_0xaad4('0x19'),_0x4c7217);logger['debug'](_0xaad4('0x19'),_0x4c7217,JSON['stringify'](_0x274f0b));_0x49e27c(_0x274f0b);})[_0xaad4('0x18')](function(_0x4b1f37){logger[_0xaad4('0x15')](_0xaad4('0x19'),_0x4b1f37['message'],_0x4c7217);_0x55dcba(_0x376465[_0xaad4('0x15')](0x1f4,_0x4b1f37['message']));});});};exports['ShowWhatsappQueue']=function(_0x161997){var _0x191b9f=this;return new Promise(function(_0x363b38,_0x2dd5a9){return db[_0xaad4('0x1a')][_0xaad4('0x22')]({'raw':_0x161997[_0xaad4('0x1b')]?_0x161997['options']['raw']===undefined?!![]:![]:!![],'where':_0x161997['options']?_0x161997[_0xaad4('0x1b')]['where']||null:null,'attributes':_0x161997[_0xaad4('0x1b')]?_0x161997['options'][_0xaad4('0x1c')]||null:null,'include':_0x161997[_0xaad4('0x1b')]?_0x161997[_0xaad4('0x1b')]['include']?_[_0xaad4('0x1f')](_0x161997[_0xaad4('0x1b')]['include'],function(_0xd22fdf){return{'model':db[_0xd22fdf[_0xaad4('0x20')]],'as':_0xd22fdf['as'],'attributes':_0xd22fdf[_0xaad4('0x1c')],'include':_0xd22fdf[_0xaad4('0x1e')]?_[_0xaad4('0x1f')](_0xd22fdf[_0xaad4('0x1e')],function(_0x40a1c1){return{'model':db[_0x40a1c1[_0xaad4('0x20')]],'as':_0x40a1c1['as'],'attributes':_0x40a1c1['attributes'],'include':_0x40a1c1[_0xaad4('0x1e')]?_['map'](_0x40a1c1[_0xaad4('0x1e')],function(_0x59694b){return{'model':db[_0x59694b['model']],'as':_0x59694b['as'],'attributes':_0x59694b[_0xaad4('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xaad4('0x21')](function(_0x4cb510){logger[_0xaad4('0xf')](_0xaad4('0x23'),_0x161997);logger[_0xaad4('0x12')]('ShowWhatsappQueue',_0x161997,JSON['stringify'](_0x4cb510));_0x363b38(_0x4cb510);})[_0xaad4('0x18')](function(_0x52a46f){logger[_0xaad4('0x15')](_0xaad4('0x23'),_0x52a46f['message'],_0x161997);_0x2dd5a9(_0x191b9f[_0xaad4('0x15')](0x1f4,_0x52a46f['message']));});});};
\ No newline at end of file
+var _0x7adc=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','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','error','code','message','result','catch','GetWhatsappQueue','WhatsappQueue','findAll','options','raw','where','include','model','map','attributes','stringify','ShowWhatsappQueue','find','lodash','util','randomstring'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x7adc,0x1d6));var _0xc7ad=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x7adc[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0xc7ad('0x0'));var util=require(_0xc7ad('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xc7ad('0x2'));var fs=require('fs');var Redis=require(_0xc7ad('0x3'));var db=require(_0xc7ad('0x4'))['db'];var utils=require(_0xc7ad('0x5'));var logger=require(_0xc7ad('0x6'))(_0xc7ad('0x7'));var config=require(_0xc7ad('0x8'));var jayson=require(_0xc7ad('0x9'));var client=jayson[_0xc7ad('0xa')][_0xc7ad('0xb')]({'port':0x232a});config[_0xc7ad('0xc')]=_[_0xc7ad('0xd')](config[_0xc7ad('0xc')],{'host':_0xc7ad('0xe'),'port':0x18eb});var socket=require(_0xc7ad('0xf'))(new Redis(config[_0xc7ad('0xc')]));require(_0xc7ad('0x10'))[_0xc7ad('0x11')](socket);function respondWithRpcPromise(_0x1f6e2a,_0x560621,_0x2552ae){return new BPromise(function(_0x5d4726,_0x1fe4ca){return client[_0xc7ad('0x12')](_0x1f6e2a,_0x2552ae)[_0xc7ad('0x13')](function(_0x51fb2f){logger[_0xc7ad('0x14')](_0xc7ad('0x15'),_0x560621,_0xc7ad('0x16'));logger[_0xc7ad('0x17')](_0xc7ad('0x18'),_0x560621,_0xc7ad('0x16'),JSON['stringify'](_0x51fb2f));if(_0x51fb2f[_0xc7ad('0x19')]){if(_0x51fb2f['error'][_0xc7ad('0x1a')]===0x1f4){logger[_0xc7ad('0x19')](_0xc7ad('0x15'),_0x560621,_0x51fb2f[_0xc7ad('0x19')][_0xc7ad('0x1b')]);return _0x1fe4ca(_0x51fb2f[_0xc7ad('0x19')][_0xc7ad('0x1b')]);}logger[_0xc7ad('0x19')](_0xc7ad('0x15'),_0x560621,_0x51fb2f[_0xc7ad('0x19')]['message']);return _0x5d4726(_0x51fb2f[_0xc7ad('0x19')]['message']);}else{logger[_0xc7ad('0x14')](_0xc7ad('0x15'),_0x560621,'request\x20sent');_0x5d4726(_0x51fb2f[_0xc7ad('0x1c')][_0xc7ad('0x1b')]);}})[_0xc7ad('0x1d')](function(_0x116f75){logger['error'](_0xc7ad('0x15'),_0x560621,_0x116f75);_0x1fe4ca(_0x116f75);});});}exports[_0xc7ad('0x1e')]=function(_0x40ac49){var _0x2b675e=this;return new Promise(function(_0x3fe233,_0x18376d){return db[_0xc7ad('0x1f')][_0xc7ad('0x20')]({'raw':_0x40ac49[_0xc7ad('0x21')]?_0x40ac49[_0xc7ad('0x21')][_0xc7ad('0x22')]===undefined?!![]:![]:!![],'where':_0x40ac49['options']?_0x40ac49['options'][_0xc7ad('0x23')]||null:null,'attributes':_0x40ac49[_0xc7ad('0x21')]?_0x40ac49[_0xc7ad('0x21')]['attributes']||null:null,'limit':_0x40ac49[_0xc7ad('0x21')]?_0x40ac49[_0xc7ad('0x21')]['limit']||null:null,'include':_0x40ac49[_0xc7ad('0x21')]?_0x40ac49[_0xc7ad('0x21')][_0xc7ad('0x24')]?_['map'](_0x40ac49[_0xc7ad('0x21')][_0xc7ad('0x24')],function(_0x53dab4){return{'model':db[_0x53dab4[_0xc7ad('0x25')]],'as':_0x53dab4['as'],'attributes':_0x53dab4['attributes'],'include':_0x53dab4['include']?_[_0xc7ad('0x26')](_0x53dab4[_0xc7ad('0x24')],function(_0x530e7b){return{'model':db[_0x530e7b['model']],'as':_0x530e7b['as'],'attributes':_0x530e7b[_0xc7ad('0x27')],'include':_0x530e7b['include']?_['map'](_0x530e7b[_0xc7ad('0x24')],function(_0x196dd4){return{'model':db[_0x196dd4[_0xc7ad('0x25')]],'as':_0x196dd4['as'],'attributes':_0x196dd4[_0xc7ad('0x27')]};}):[]};}):[]};}):[]:[]})[_0xc7ad('0x13')](function(_0x199a2c){logger[_0xc7ad('0x14')]('GetWhatsappQueue',_0x40ac49);logger['debug']('GetWhatsappQueue',_0x40ac49,JSON[_0xc7ad('0x28')](_0x199a2c));_0x3fe233(_0x199a2c);})[_0xc7ad('0x1d')](function(_0x20855f){logger['error']('GetWhatsappQueue',_0x20855f[_0xc7ad('0x1b')],_0x40ac49);_0x18376d(_0x2b675e['error'](0x1f4,_0x20855f[_0xc7ad('0x1b')]));});});};exports[_0xc7ad('0x29')]=function(_0x28366a){var _0x3631b6=this;return new Promise(function(_0x54e1a8,_0x3cfab7){return db[_0xc7ad('0x1f')][_0xc7ad('0x2a')]({'raw':_0x28366a[_0xc7ad('0x21')]?_0x28366a[_0xc7ad('0x21')][_0xc7ad('0x22')]===undefined?!![]:![]:!![],'where':_0x28366a[_0xc7ad('0x21')]?_0x28366a['options'][_0xc7ad('0x23')]||null:null,'attributes':_0x28366a[_0xc7ad('0x21')]?_0x28366a['options']['attributes']||null:null,'include':_0x28366a[_0xc7ad('0x21')]?_0x28366a[_0xc7ad('0x21')][_0xc7ad('0x24')]?_['map'](_0x28366a[_0xc7ad('0x21')][_0xc7ad('0x24')],function(_0x401cfa){return{'model':db[_0x401cfa['model']],'as':_0x401cfa['as'],'attributes':_0x401cfa[_0xc7ad('0x27')],'include':_0x401cfa['include']?_['map'](_0x401cfa[_0xc7ad('0x24')],function(_0x162547){return{'model':db[_0x162547[_0xc7ad('0x25')]],'as':_0x162547['as'],'attributes':_0x162547[_0xc7ad('0x27')],'include':_0x162547[_0xc7ad('0x24')]?_[_0xc7ad('0x26')](_0x162547[_0xc7ad('0x24')],function(_0x45b3bc){return{'model':db[_0x45b3bc['model']],'as':_0x45b3bc['as'],'attributes':_0x45b3bc[_0xc7ad('0x27')]};}):[]};}):[]};}):[]:[]})[_0xc7ad('0x13')](function(_0x48b4c2){logger[_0xc7ad('0x14')]('ShowWhatsappQueue',_0x28366a);logger[_0xc7ad('0x17')](_0xc7ad('0x29'),_0x28366a,JSON[_0xc7ad('0x28')](_0x48b4c2));_0x54e1a8(_0x48b4c2);})[_0xc7ad('0x1d')](function(_0x565dde){logger[_0xc7ad('0x19')]('ShowWhatsappQueue',_0x565dde[_0xc7ad('0x1b')],_0x28366a);_0x3cfab7(_0x3631b6['error'](0x1f4,_0x565dde['message']));});});};
\ No newline at end of file
index 8b68685..7cd0ea7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf910=['length','whatsappQueue:','save','remove','update','emit','removeListener','register'];(function(_0x3886c4,_0x1dfd90){var _0x1d8391=function(_0x5ca82b){while(--_0x5ca82b){_0x3886c4['push'](_0x3886c4['shift']());}};_0x1d8391(++_0x1dfd90);}(_0xf910,0x1d2));var _0x0f91=function(_0x4b5e1d,_0x39a146){_0x4b5e1d=_0x4b5e1d-0x0;var _0x37697f=_0xf910[_0x4b5e1d];return _0x37697f;};'use strict';var WhatsappQueueEvents=require('./whatsappQueue.events');var events=[_0x0f91('0x0'),_0x0f91('0x1'),_0x0f91('0x2')];function createListener(_0x9e1818,_0x4d1558){return function(_0x1e9a02){_0x4d1558[_0x0f91('0x3')](_0x9e1818,_0x1e9a02);};}function removeListener(_0x2402f0,_0x2d3f7f){return function(){WhatsappQueueEvents[_0x0f91('0x4')](_0x2402f0,_0x2d3f7f);};}exports[_0x0f91('0x5')]=function(_0x2311d6){for(var _0x415688=0x0,_0x2df3ea=events[_0x0f91('0x6')];_0x415688<_0x2df3ea;_0x415688++){var _0x3f975f=events[_0x415688];var _0x72f70b=createListener(_0x0f91('0x7')+_0x3f975f,_0x2311d6);WhatsappQueueEvents['on'](_0x3f975f,_0x72f70b);}};
\ No newline at end of file
+var _0xe43a=['removeListener','register','whatsappQueue:','remove','emit'];(function(_0x5277bc,_0x288570){var _0x5a44f1=function(_0x566d1d){while(--_0x566d1d){_0x5277bc['push'](_0x5277bc['shift']());}};_0x5a44f1(++_0x288570);}(_0xe43a,0x184));var _0xae43=function(_0x1ff22f,_0x14e658){_0x1ff22f=_0x1ff22f-0x0;var _0x4a174a=_0xe43a[_0x1ff22f];return _0x4a174a;};'use strict';var WhatsappQueueEvents=require('./whatsappQueue.events');var events=['save',_0xae43('0x0'),'update'];function createListener(_0x156365,_0x4c0515){return function(_0x27c27e){_0x4c0515[_0xae43('0x1')](_0x156365,_0x27c27e);};}function removeListener(_0x1dd12d,_0x56285f){return function(){WhatsappQueueEvents[_0xae43('0x2')](_0x1dd12d,_0x56285f);};}exports[_0xae43('0x3')]=function(_0x1ea610){for(var _0x3791b7=0x0,_0x68c02b=events['length'];_0x3791b7<_0x68c02b;_0x3791b7++){var _0x144938=events[_0x3791b7];var _0x359db8=createListener(_0xae43('0x4')+_0x144938,_0x1ea610);WhatsappQueueEvents['on'](_0x144938,_0x359db8);}};
\ No newline at end of file
index 63449a1..d8a8176 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb72=['destroy','exports','util','path','Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappQueueReport.controller','get','isAuthenticated','index','/describe','describe','show','create','put','/:id','update','delete'];(function(_0x368fb9,_0x1a9895){var _0x4892fb=function(_0x28d735){while(--_0x28d735){_0x368fb9['push'](_0x368fb9['shift']());}};_0x4892fb(++_0x1a9895);}(_0xcb72,0xde));var _0x2cb7=function(_0x39f657,_0x215f8e){_0x39f657=_0x39f657-0x0;var _0x30360d=_0xcb72[_0x39f657];return _0x30360d;};'use strict';var multer=require('multer');var util=require(_0x2cb7('0x0'));var path=require(_0x2cb7('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x2cb7('0x2')]();var fs_extra=require(_0x2cb7('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x2cb7('0x4'));var config=require(_0x2cb7('0x5'));var controller=require(_0x2cb7('0x6'));router[_0x2cb7('0x7')]('/',auth[_0x2cb7('0x8')](),controller[_0x2cb7('0x9')]);router['get'](_0x2cb7('0xa'),auth[_0x2cb7('0x8')](),controller[_0x2cb7('0xb')]);router[_0x2cb7('0x7')]('/:id',auth[_0x2cb7('0x8')](),controller[_0x2cb7('0xc')]);router['post']('/',auth[_0x2cb7('0x8')](),controller[_0x2cb7('0xd')]);router[_0x2cb7('0xe')](_0x2cb7('0xf'),auth[_0x2cb7('0x8')](),controller[_0x2cb7('0x10')]);router[_0x2cb7('0x11')](_0x2cb7('0xf'),auth[_0x2cb7('0x8')](),controller[_0x2cb7('0x12')]);module[_0x2cb7('0x13')]=router;
\ No newline at end of file
+var _0xd020=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueueReport.controller','isAuthenticated','index','get','post','create','put','update','delete','/:id','destroy','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd020,0xab));var _0x0d02=function(_0x2fb704,_0x322d48){_0x2fb704=_0x2fb704-0x0;var _0x10cdfd=_0xd020[_0x2fb704];return _0x10cdfd;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x0d02('0x0'));var timeout=require(_0x0d02('0x1'));var express=require('express');var router=express[_0x0d02('0x2')]();var fs_extra=require(_0x0d02('0x3'));var auth=require(_0x0d02('0x4'));var interaction=require(_0x0d02('0x5'));var config=require(_0x0d02('0x6'));var controller=require(_0x0d02('0x7'));router['get']('/',auth[_0x0d02('0x8')](),controller[_0x0d02('0x9')]);router['get']('/describe',auth[_0x0d02('0x8')](),controller['describe']);router[_0x0d02('0xa')]('/:id',auth[_0x0d02('0x8')](),controller['show']);router[_0x0d02('0xb')]('/',auth['isAuthenticated'](),controller[_0x0d02('0xc')]);router[_0x0d02('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x0d02('0xe')]);router[_0x0d02('0xf')](_0x0d02('0x10'),auth[_0x0d02('0x8')](),controller[_0x0d02('0x11')]);module[_0x0d02('0x12')]=router;
\ No newline at end of file
index 2d0c994..421a51f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0x1f97fa,_0x34b5de){var _0xc170b=function(_0x10e343){while(--_0x10e343){_0x1f97fa['push'](_0x1f97fa['shift']());}};_0xc170b(++_0x34b5de);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'uniqueid':{'type':Sequelize[_0x7995('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x7995('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x7995('0x3')]},'acceptAt':{'type':Sequelize[_0x7995('0x3')]},'exitAt':{'type':Sequelize[_0x7995('0x3')]},'reason':{'type':Sequelize[_0x7995('0x2')]}};
\ No newline at end of file
+var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0x1ce37a,_0x97cb60){var _0x235c99=function(_0x315958){while(--_0x315958){_0x1ce37a['push'](_0x1ce37a['shift']());}};_0x235c99(++_0x97cb60);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'uniqueid':{'type':Sequelize[_0x7995('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x7995('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x7995('0x3')]},'acceptAt':{'type':Sequelize[_0x7995('0x3')]},'exitAt':{'type':Sequelize[_0x7995('0x3')]},'reason':{'type':Sequelize[_0x7995('0x2')]}};
\ No newline at end of file
index 81ddbb4..dbe5014 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9348=['save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','merge','VIRTUAL','options','WhatsappQueueReport','count','include','findAll','show','params','includeAll','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','set','apply','reject'];(function(_0x3a167f,_0x56e95c){var _0x15f491=function(_0x50014b){while(--_0x50014b){_0x3a167f['push'](_0x3a167f['shift']());}};_0x15f491(++_0x56e95c);}(_0x9348,0x10d));var _0x8934=function(_0x27fedb,_0x31c693){_0x27fedb=_0x27fedb-0x0;var _0x58ab78=_0x9348[_0x27fedb];return _0x58ab78;};'use strict';var emlformat=require(_0x8934('0x0'));var rimraf=require(_0x8934('0x1'));var zipdir=require(_0x8934('0x2'));var jsonpatch=require(_0x8934('0x3'));var rp=require(_0x8934('0x4'));var moment=require('moment');var BPromise=require(_0x8934('0x5'));var Mustache=require(_0x8934('0x6'));var util=require('util');var path=require(_0x8934('0x7'));var sox=require(_0x8934('0x8'));var csv=require(_0x8934('0x9'));var ejs=require(_0x8934('0xa'));var fs=require('fs');var fs_extra=require(_0x8934('0xb'));var _=require(_0x8934('0xc'));var squel=require('squel');var crypto=require(_0x8934('0xd'));var jsforce=require(_0x8934('0xe'));var deskjs=require(_0x8934('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x8934('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x8934('0x11'));var hardwareService=require(_0x8934('0x12'));var logger=require(_0x8934('0x13'))(_0x8934('0x14'));var utils=require(_0x8934('0x15'));var config=require(_0x8934('0x16'));var licenseUtil=require(_0x8934('0x17'));var db=require(_0x8934('0x18'))['db'];function respondWithStatusCode(_0x4a999c,_0x68427d){_0x68427d=_0x68427d||0xcc;return function(_0x108eab){if(_0x108eab){return _0x4a999c[_0x8934('0x19')](_0x68427d);}return _0x4a999c[_0x8934('0x1a')](_0x68427d)[_0x8934('0x1b')]();};}function respondWithResult(_0xdf59f4,_0x5b560f){_0x5b560f=_0x5b560f||0xc8;return function(_0x254720){if(_0x254720){return _0xdf59f4[_0x8934('0x1a')](_0x5b560f)[_0x8934('0x1c')](_0x254720);}};}function respondWithFilteredResult(_0x94b948,_0x34d4dc){return function(_0x41e6a9){if(_0x41e6a9){var _0x2a5b04=typeof _0x34d4dc[_0x8934('0x1d')]==='undefined'&&typeof _0x34d4dc[_0x8934('0x1e')]===_0x8934('0x1f');var _0x261c78=_0x41e6a9['count'];var _0x47f25e=_0x2a5b04?0x0:_0x34d4dc['offset'];var _0x2ff9ce=_0x2a5b04?_0x41e6a9['count']:_0x34d4dc[_0x8934('0x1d')]+_0x34d4dc[_0x8934('0x1e')];var _0x14b4e4;if(_0x2ff9ce>=_0x261c78){_0x2ff9ce=_0x261c78;_0x14b4e4=0xc8;}else{_0x14b4e4=0xce;}_0x94b948[_0x8934('0x1a')](_0x14b4e4);return _0x94b948[_0x8934('0x20')]('Content-Range',_0x47f25e+'-'+_0x2ff9ce+'/'+_0x261c78)[_0x8934('0x1c')](_0x41e6a9);}return null;};}function patchUpdates(_0x5ae49f){return function(_0x476c6c){try{jsonpatch[_0x8934('0x21')](_0x476c6c,_0x5ae49f,!![]);}catch(_0x1ccbe5){return BPromise[_0x8934('0x22')](_0x1ccbe5);}return _0x476c6c[_0x8934('0x23')]();};}function saveUpdates(_0x331e18,_0x36fe20){return function(_0x4f4a9b){if(_0x4f4a9b){return _0x4f4a9b[_0x8934('0x24')](_0x331e18)[_0x8934('0x25')](function(_0x32020a){return _0x32020a;});}return null;};}function removeEntity(_0x343e09,_0x43b89a){return function(_0x5e593b){if(_0x5e593b){return _0x5e593b[_0x8934('0x26')]()[_0x8934('0x25')](function(){_0x343e09[_0x8934('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x16cfc2,_0x561df2){return function(_0x14c5f0){if(!_0x14c5f0){_0x16cfc2[_0x8934('0x19')](0x194);}return _0x14c5f0;};}function handleError(_0x110f7f,_0x5ef0ed){_0x5ef0ed=_0x5ef0ed||0x1f4;return function(_0x1fd5eb){logger[_0x8934('0x27')](_0x1fd5eb[_0x8934('0x28')]);if(_0x1fd5eb[_0x8934('0x29')]){delete _0x1fd5eb['name'];}_0x110f7f[_0x8934('0x1a')](_0x5ef0ed)[_0x8934('0x2a')](_0x1fd5eb);};}exports[_0x8934('0x2b')]=function(_0x3d93c7,_0x44972b){var _0x20d448={},_0x3f328a={},_0x457634={'count':0x0,'rows':[]};var _0x9c6a71=_[_0x8934('0x2c')](db['WhatsappQueueReport'][_0x8934('0x2d')],function(_0x3e973e){return{'name':_0x3e973e['fieldName'],'type':_0x3e973e[_0x8934('0x2e')][_0x8934('0x2f')]};});_0x3f328a[_0x8934('0x30')]=_[_0x8934('0x2c')](_0x9c6a71,'name');_0x3f328a[_0x8934('0x31')]=_[_0x8934('0x32')](_0x3d93c7[_0x8934('0x31')]);_0x3f328a[_0x8934('0x33')]=_[_0x8934('0x34')](_0x3f328a['model'],_0x3f328a[_0x8934('0x31')]);_0x20d448['attributes']=_['intersection'](_0x3f328a[_0x8934('0x30')],qs[_0x8934('0x35')](_0x3d93c7[_0x8934('0x31')][_0x8934('0x35')]));_0x20d448['attributes']=_0x20d448[_0x8934('0x36')][_0x8934('0x37')]?_0x20d448[_0x8934('0x36')]:_0x3f328a[_0x8934('0x30')];if(!_0x3d93c7[_0x8934('0x31')]['hasOwnProperty'](_0x8934('0x38'))){_0x20d448[_0x8934('0x1e')]=qs['limit'](_0x3d93c7['query'][_0x8934('0x1e')]);_0x20d448[_0x8934('0x1d')]=qs['offset'](_0x3d93c7['query'][_0x8934('0x1d')]);}_0x20d448[_0x8934('0x39')]=qs[_0x8934('0x3a')](_0x3d93c7[_0x8934('0x31')][_0x8934('0x3a')]);_0x20d448[_0x8934('0x3b')]=qs[_0x8934('0x33')](_[_0x8934('0x3c')](_0x3d93c7[_0x8934('0x31')],_0x3f328a[_0x8934('0x33')]),_0x9c6a71);if(_0x3d93c7[_0x8934('0x31')]['filter']){_0x20d448[_0x8934('0x3b')]=_[_0x8934('0x3d')](_0x20d448['where'],{'$or':_[_0x8934('0x2c')](_0x9c6a71,function(_0x122ad1){if(_0x122ad1[_0x8934('0x2e')]!==_0x8934('0x3e')){var _0xb189f1={};_0xb189f1[_0x122ad1['name']]={'$like':'%'+_0x3d93c7['query']['filter']+'%'};return _0xb189f1;}})});}_0x20d448=_[_0x8934('0x3d')]({},_0x20d448,_0x3d93c7[_0x8934('0x3f')]);var _0x8814f6={'where':_0x20d448['where']};return db[_0x8934('0x40')]['count'](_0x8814f6)['then'](function(_0x332098){_0x457634[_0x8934('0x41')]=_0x332098;if(_0x3d93c7['query']['includeAll']){_0x20d448[_0x8934('0x42')]=[{'all':!![]}];}return db[_0x8934('0x40')][_0x8934('0x43')](_0x20d448);})['then'](function(_0x46bfe7){_0x457634['rows']=_0x46bfe7;return _0x457634;})[_0x8934('0x25')](respondWithFilteredResult(_0x44972b,_0x20d448))['catch'](handleError(_0x44972b,null));};exports[_0x8934('0x44')]=function(_0x476ed9,_0x83be9e){var _0x566d67={'raw':!![],'where':{'id':_0x476ed9[_0x8934('0x45')]['id']}},_0xefdfab={};_0xefdfab[_0x8934('0x30')]=_[_0x8934('0x32')](db['WhatsappQueueReport'][_0x8934('0x2d')]);_0xefdfab[_0x8934('0x31')]=_[_0x8934('0x32')](_0x476ed9[_0x8934('0x31')]);_0xefdfab[_0x8934('0x33')]=_[_0x8934('0x34')](_0xefdfab[_0x8934('0x30')],_0xefdfab[_0x8934('0x31')]);_0x566d67['attributes']=_['intersection'](_0xefdfab['model'],qs[_0x8934('0x35')](_0x476ed9[_0x8934('0x31')]['fields']));_0x566d67[_0x8934('0x36')]=_0x566d67['attributes'][_0x8934('0x37')]?_0x566d67[_0x8934('0x36')]:_0xefdfab['model'];if(_0x476ed9[_0x8934('0x31')][_0x8934('0x46')]){_0x566d67[_0x8934('0x42')]=[{'all':!![]}];}_0x566d67=_[_0x8934('0x3d')]({},_0x566d67,_0x476ed9['options']);return db[_0x8934('0x40')][_0x8934('0x47')](_0x566d67)['then'](handleEntityNotFound(_0x83be9e,null))[_0x8934('0x25')](respondWithResult(_0x83be9e,null))[_0x8934('0x48')](handleError(_0x83be9e,null));};exports[_0x8934('0x49')]=function(_0x2d5c6a,_0x406d0a){return db[_0x8934('0x40')][_0x8934('0x49')](_0x2d5c6a[_0x8934('0x4a')],{})[_0x8934('0x25')](respondWithResult(_0x406d0a,0xc9))[_0x8934('0x48')](handleError(_0x406d0a,null));};exports[_0x8934('0x24')]=function(_0xe212bc,_0x2c322d){if(_0xe212bc[_0x8934('0x4a')]['id']){delete _0xe212bc[_0x8934('0x4a')]['id'];}return db[_0x8934('0x40')][_0x8934('0x47')]({'where':{'id':_0xe212bc[_0x8934('0x45')]['id']}})['then'](handleEntityNotFound(_0x2c322d,null))[_0x8934('0x25')](saveUpdates(_0xe212bc[_0x8934('0x4a')],null))['then'](respondWithResult(_0x2c322d,null))['catch'](handleError(_0x2c322d,null));};exports['destroy']=function(_0x4bc431,_0x3610a0){return db[_0x8934('0x40')][_0x8934('0x47')]({'where':{'id':_0x4bc431['params']['id']}})['then'](handleEntityNotFound(_0x3610a0,null))[_0x8934('0x25')](removeEntity(_0x3610a0,null))['catch'](handleError(_0x3610a0,null));};exports['describe']=function(_0xce93cd,_0x2778f9){return db[_0x8934('0x40')][_0x8934('0x4b')]()[_0x8934('0x25')](respondWithResult(_0x2778f9,null))[_0x8934('0x48')](handleError(_0x2778f9,null));};
\ No newline at end of file
+var _0xa902=['ejs','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','order','sort','filters','filter','merge','where','VIRTUAL','includeAll','include','WhatsappQueueReport','findAll','rows','catch','params','length','options','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','to-csv'];(function(_0x464fc9,_0x4289a3){var _0xb4ddd0=function(_0x4d1506){while(--_0x4d1506){_0x464fc9['push'](_0x464fc9['shift']());}};_0xb4ddd0(++_0x4289a3);}(_0xa902,0x8d));var _0x2a90=function(_0xc48d84,_0x42352d){_0xc48d84=_0xc48d84-0x0;var _0xa68c33=_0xa902[_0xc48d84];return _0xa68c33;};'use strict';var emlformat=require(_0x2a90('0x0'));var rimraf=require(_0x2a90('0x1'));var zipdir=require(_0x2a90('0x2'));var jsonpatch=require(_0x2a90('0x3'));var rp=require(_0x2a90('0x4'));var moment=require('moment');var BPromise=require(_0x2a90('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x2a90('0x6'));var sox=require(_0x2a90('0x7'));var csv=require(_0x2a90('0x8'));var ejs=require(_0x2a90('0x9'));var fs=require('fs');var fs_extra=require(_0x2a90('0xa'));var _=require(_0x2a90('0xb'));var squel=require('squel');var crypto=require(_0x2a90('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2a90('0x8'));var querystring=require(_0x2a90('0xd'));var Papa=require(_0x2a90('0xe'));var Redis=require(_0x2a90('0xf'));var authService=require(_0x2a90('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x2a90('0x11'));var hardwareService=require(_0x2a90('0x12'));var logger=require(_0x2a90('0x13'))(_0x2a90('0x14'));var utils=require('../../config/utils');var config=require(_0x2a90('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x2a90('0x16'))['db'];function respondWithStatusCode(_0x57458a,_0x1f6953){_0x1f6953=_0x1f6953||0xcc;return function(_0x57aee3){if(_0x57aee3){return _0x57458a[_0x2a90('0x17')](_0x1f6953);}return _0x57458a[_0x2a90('0x18')](_0x1f6953)[_0x2a90('0x19')]();};}function respondWithResult(_0x4c328b,_0x56d1b8){_0x56d1b8=_0x56d1b8||0xc8;return function(_0x57227c){if(_0x57227c){return _0x4c328b[_0x2a90('0x18')](_0x56d1b8)[_0x2a90('0x1a')](_0x57227c);}};}function respondWithFilteredResult(_0x5a2682,_0x1ff63d){return function(_0x21c648){if(_0x21c648){var _0x312782=typeof _0x1ff63d[_0x2a90('0x1b')]===_0x2a90('0x1c')&&typeof _0x1ff63d[_0x2a90('0x1d')]===_0x2a90('0x1c');var _0x10cf94=_0x21c648[_0x2a90('0x1e')];var _0x5c3e4b=_0x312782?0x0:_0x1ff63d[_0x2a90('0x1b')];var _0x1d9a28=_0x312782?_0x21c648[_0x2a90('0x1e')]:_0x1ff63d['offset']+_0x1ff63d[_0x2a90('0x1d')];var _0x1f51a6;if(_0x1d9a28>=_0x10cf94){_0x1d9a28=_0x10cf94;_0x1f51a6=0xc8;}else{_0x1f51a6=0xce;}_0x5a2682[_0x2a90('0x18')](_0x1f51a6);return _0x5a2682[_0x2a90('0x1f')](_0x2a90('0x20'),_0x5c3e4b+'-'+_0x1d9a28+'/'+_0x10cf94)[_0x2a90('0x1a')](_0x21c648);}return null;};}function patchUpdates(_0x312cd5){return function(_0x114d42){try{jsonpatch[_0x2a90('0x21')](_0x114d42,_0x312cd5,!![]);}catch(_0x465284){return BPromise[_0x2a90('0x22')](_0x465284);}return _0x114d42[_0x2a90('0x23')]();};}function saveUpdates(_0x4fdd62,_0x3da7d0){return function(_0x217873){if(_0x217873){return _0x217873[_0x2a90('0x24')](_0x4fdd62)[_0x2a90('0x25')](function(_0x5912fd){return _0x5912fd;});}return null;};}function removeEntity(_0x180485,_0xd033d){return function(_0x4ed9e6){if(_0x4ed9e6){return _0x4ed9e6[_0x2a90('0x26')]()[_0x2a90('0x25')](function(){_0x180485[_0x2a90('0x18')](0xcc)[_0x2a90('0x19')]();});}};}function handleEntityNotFound(_0x2a212c,_0x1303d9){return function(_0x29ed73){if(!_0x29ed73){_0x2a212c[_0x2a90('0x17')](0x194);}return _0x29ed73;};}function handleError(_0x48c2f9,_0x27f883){_0x27f883=_0x27f883||0x1f4;return function(_0x17f978){logger[_0x2a90('0x27')](_0x17f978[_0x2a90('0x28')]);if(_0x17f978[_0x2a90('0x29')]){delete _0x17f978['name'];}_0x48c2f9['status'](_0x27f883)[_0x2a90('0x2a')](_0x17f978);};}exports['index']=function(_0x53391e,_0x4969c3){var _0x2d83b3={},_0x3c78f5={},_0x595638={'count':0x0,'rows':[]};var _0x5bd700=_[_0x2a90('0x2b')](db['WhatsappQueueReport'][_0x2a90('0x2c')],function(_0x6892e1){return{'name':_0x6892e1[_0x2a90('0x2d')],'type':_0x6892e1[_0x2a90('0x2e')][_0x2a90('0x2f')]};});_0x3c78f5[_0x2a90('0x30')]=_[_0x2a90('0x2b')](_0x5bd700,'name');_0x3c78f5[_0x2a90('0x31')]=_[_0x2a90('0x32')](_0x53391e[_0x2a90('0x31')]);_0x3c78f5['filters']=_[_0x2a90('0x33')](_0x3c78f5[_0x2a90('0x30')],_0x3c78f5[_0x2a90('0x31')]);_0x2d83b3[_0x2a90('0x34')]=_['intersection'](_0x3c78f5[_0x2a90('0x30')],qs[_0x2a90('0x35')](_0x53391e[_0x2a90('0x31')][_0x2a90('0x35')]));_0x2d83b3[_0x2a90('0x34')]=_0x2d83b3[_0x2a90('0x34')]['length']?_0x2d83b3[_0x2a90('0x34')]:_0x3c78f5[_0x2a90('0x30')];if(!_0x53391e[_0x2a90('0x31')][_0x2a90('0x36')]('nolimit')){_0x2d83b3[_0x2a90('0x1d')]=qs[_0x2a90('0x1d')](_0x53391e['query'][_0x2a90('0x1d')]);_0x2d83b3[_0x2a90('0x1b')]=qs['offset'](_0x53391e['query'][_0x2a90('0x1b')]);}_0x2d83b3[_0x2a90('0x37')]=qs[_0x2a90('0x38')](_0x53391e['query'][_0x2a90('0x38')]);_0x2d83b3['where']=qs[_0x2a90('0x39')](_['pick'](_0x53391e[_0x2a90('0x31')],_0x3c78f5['filters']),_0x5bd700);if(_0x53391e['query'][_0x2a90('0x3a')]){_0x2d83b3['where']=_[_0x2a90('0x3b')](_0x2d83b3[_0x2a90('0x3c')],{'$or':_[_0x2a90('0x2b')](_0x5bd700,function(_0x573aee){if(_0x573aee[_0x2a90('0x2e')]!==_0x2a90('0x3d')){var _0x3be438={};_0x3be438[_0x573aee['name']]={'$like':'%'+_0x53391e[_0x2a90('0x31')][_0x2a90('0x3a')]+'%'};return _0x3be438;}})});}_0x2d83b3=_[_0x2a90('0x3b')]({},_0x2d83b3,_0x53391e['options']);var _0x1aa096={'where':_0x2d83b3[_0x2a90('0x3c')]};return db['WhatsappQueueReport'][_0x2a90('0x1e')](_0x1aa096)[_0x2a90('0x25')](function(_0x2a6bea){_0x595638[_0x2a90('0x1e')]=_0x2a6bea;if(_0x53391e[_0x2a90('0x31')][_0x2a90('0x3e')]){_0x2d83b3[_0x2a90('0x3f')]=[{'all':!![]}];}return db[_0x2a90('0x40')][_0x2a90('0x41')](_0x2d83b3);})[_0x2a90('0x25')](function(_0x45b41c){_0x595638[_0x2a90('0x42')]=_0x45b41c;return _0x595638;})[_0x2a90('0x25')](respondWithFilteredResult(_0x4969c3,_0x2d83b3))[_0x2a90('0x43')](handleError(_0x4969c3,null));};exports['show']=function(_0x45cbc2,_0x3a70fe){var _0x528b41={'raw':!![],'where':{'id':_0x45cbc2[_0x2a90('0x44')]['id']}},_0x1045bb={};_0x1045bb[_0x2a90('0x30')]=_[_0x2a90('0x32')](db[_0x2a90('0x40')]['rawAttributes']);_0x1045bb[_0x2a90('0x31')]=_['keys'](_0x45cbc2[_0x2a90('0x31')]);_0x1045bb['filters']=_[_0x2a90('0x33')](_0x1045bb[_0x2a90('0x30')],_0x1045bb[_0x2a90('0x31')]);_0x528b41[_0x2a90('0x34')]=_[_0x2a90('0x33')](_0x1045bb[_0x2a90('0x30')],qs[_0x2a90('0x35')](_0x45cbc2['query']['fields']));_0x528b41[_0x2a90('0x34')]=_0x528b41[_0x2a90('0x34')][_0x2a90('0x45')]?_0x528b41[_0x2a90('0x34')]:_0x1045bb[_0x2a90('0x30')];if(_0x45cbc2[_0x2a90('0x31')][_0x2a90('0x3e')]){_0x528b41[_0x2a90('0x3f')]=[{'all':!![]}];}_0x528b41=_['merge']({},_0x528b41,_0x45cbc2[_0x2a90('0x46')]);return db['WhatsappQueueReport'][_0x2a90('0x47')](_0x528b41)[_0x2a90('0x25')](handleEntityNotFound(_0x3a70fe,null))['then'](respondWithResult(_0x3a70fe,null))[_0x2a90('0x43')](handleError(_0x3a70fe,null));};exports[_0x2a90('0x48')]=function(_0x280e63,_0x1d55db){return db[_0x2a90('0x40')][_0x2a90('0x48')](_0x280e63[_0x2a90('0x49')],{})['then'](respondWithResult(_0x1d55db,0xc9))['catch'](handleError(_0x1d55db,null));};exports[_0x2a90('0x24')]=function(_0x2611d0,_0x42c890){if(_0x2611d0[_0x2a90('0x49')]['id']){delete _0x2611d0[_0x2a90('0x49')]['id'];}return db['WhatsappQueueReport']['find']({'where':{'id':_0x2611d0[_0x2a90('0x44')]['id']}})[_0x2a90('0x25')](handleEntityNotFound(_0x42c890,null))['then'](saveUpdates(_0x2611d0['body'],null))['then'](respondWithResult(_0x42c890,null))[_0x2a90('0x43')](handleError(_0x42c890,null));};exports['destroy']=function(_0x370da3,_0x3dfe72){return db[_0x2a90('0x40')][_0x2a90('0x47')]({'where':{'id':_0x370da3[_0x2a90('0x44')]['id']}})[_0x2a90('0x25')](handleEntityNotFound(_0x3dfe72,null))['then'](removeEntity(_0x3dfe72,null))[_0x2a90('0x43')](handleError(_0x3dfe72,null));};exports[_0x2a90('0x4a')]=function(_0x48d3bc,_0x265769){return db['WhatsappQueueReport']['describe']()[_0x2a90('0x25')](respondWithResult(_0x265769,null))[_0x2a90('0x43')](handleError(_0x265769,null));};
\ No newline at end of file
index 0196ae0..05f9329 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc994=['rimraf','../../config/environment','./whatsappQueueReport.attributes','define','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash','moment','bluebird','request-promise','path'];(function(_0x96f487,_0x5edd96){var _0xef8119=function(_0x23885a){while(--_0x23885a){_0x96f487['push'](_0x96f487['shift']());}};_0xef8119(++_0x5edd96);}(_0xc994,0x1c3));var _0x4c99=function(_0x1c0705,_0x453b20){_0x1c0705=_0x1c0705-0x0;var _0xfab99d=_0xc994[_0x1c0705];return _0xfab99d;};'use strict';var _=require(_0x4c99('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x4c99('0x1'));var BPromise=require(_0x4c99('0x2'));var rp=require(_0x4c99('0x3'));var fs=require('fs');var path=require(_0x4c99('0x4'));var rimraf=require(_0x4c99('0x5'));var config=require(_0x4c99('0x6'));var attributes=require(_0x4c99('0x7'));module['exports']=function(_0x3858df,_0x375b21){return _0x3858df[_0x4c99('0x8')](_0x4c99('0x9'),attributes,{'tableName':_0x4c99('0xa'),'paranoid':![],'indexes':[{'name':_0x4c99('0xb'),'fields':[_0x4c99('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x548b=['uniqueid','lodash','util','../../config/logger','api','moment','path','./whatsappQueueReport.attributes','exports','define','WhatsappQueueReport'];(function(_0x10eb3c,_0x35fdc9){var _0x5122d8=function(_0x528f8c){while(--_0x528f8c){_0x10eb3c['push'](_0x10eb3c['shift']());}};_0x5122d8(++_0x35fdc9);}(_0x548b,0x14b));var _0xb548=function(_0x520c0f,_0x28dcdc){_0x520c0f=_0x520c0f-0x0;var _0x44cf48=_0x548b[_0x520c0f];return _0x44cf48;};'use strict';var _=require(_0xb548('0x0'));var util=require(_0xb548('0x1'));var logger=require(_0xb548('0x2'))(_0xb548('0x3'));var moment=require(_0xb548('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xb548('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xb548('0x6'));module[_0xb548('0x7')]=function(_0x4b080f,_0x43ae6e){return _0x4b080f[_0xb548('0x8')](_0xb548('0x9'),attributes,{'tableName':'report_whatsapp_queue','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xb548('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 58f39ef..7446e99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca05=['where','attributes','limit','stringify','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','request\x20sent','error','code','WhatsappQueueReport,\x20%s,\x20%s','message','CreateWhatsappQueueReport','WhatsappQueueReport','create','body','options','then','debug','catch','UpdateWhatsappQueueReport'];(function(_0x1aaa00,_0x245138){var _0x4be822=function(_0x249c61){while(--_0x249c61){_0x1aaa00['push'](_0x1aaa00['shift']());}};_0x4be822(++_0x245138);}(_0xca05,0x80));var _0x5ca0=function(_0xba1760,_0x191969){_0xba1760=_0xba1760-0x0;var _0x1f3143=_0xca05[_0xba1760];return _0x1f3143;};'use strict';var _=require(_0x5ca0('0x0'));var util=require(_0x5ca0('0x1'));var moment=require(_0x5ca0('0x2'));var BPromise=require(_0x5ca0('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5ca0('0x4'))['db'];var utils=require(_0x5ca0('0x5'));var logger=require(_0x5ca0('0x6'))(_0x5ca0('0x7'));var config=require(_0x5ca0('0x8'));var jayson=require(_0x5ca0('0x9'));var client=jayson[_0x5ca0('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x10b9e6,_0x23167d,_0xecbd41){return new BPromise(function(_0x1caba0,_0x43ffc8){return client[_0x5ca0('0xb')](_0x10b9e6,_0xecbd41)['then'](function(_0x449bf7){logger[_0x5ca0('0xc')]('WhatsappQueueReport,\x20%s,\x20%s',_0x23167d,_0x5ca0('0xd'));logger['debug']('WhatsappQueueReport,\x20%s,\x20%s,\x20%s',_0x23167d,_0x5ca0('0xd'),JSON['stringify'](_0x449bf7));if(_0x449bf7[_0x5ca0('0xe')]){if(_0x449bf7[_0x5ca0('0xe')][_0x5ca0('0xf')]===0x1f4){logger['error'](_0x5ca0('0x10'),_0x23167d,_0x449bf7[_0x5ca0('0xe')]['message']);return _0x43ffc8(_0x449bf7[_0x5ca0('0xe')]['message']);}logger[_0x5ca0('0xe')](_0x5ca0('0x10'),_0x23167d,_0x449bf7[_0x5ca0('0xe')][_0x5ca0('0x11')]);return _0x1caba0(_0x449bf7[_0x5ca0('0xe')][_0x5ca0('0x11')]);}else{logger[_0x5ca0('0xc')](_0x5ca0('0x10'),_0x23167d,_0x5ca0('0xd'));_0x1caba0(_0x449bf7['result'][_0x5ca0('0x11')]);}})['catch'](function(_0xb586aa){logger['error'](_0x5ca0('0x10'),_0x23167d,_0xb586aa);_0x43ffc8(_0xb586aa);});});}exports[_0x5ca0('0x12')]=function(_0x54fc5c){var _0x36dbbe=this;return new Promise(function(_0x42486a,_0x47f9dd){return db[_0x5ca0('0x13')][_0x5ca0('0x14')](_0x54fc5c[_0x5ca0('0x15')],{'raw':_0x54fc5c['options']?_0x54fc5c[_0x5ca0('0x16')]['raw']===undefined?!![]:![]:!![]})[_0x5ca0('0x17')](function(_0x2fb59c){logger[_0x5ca0('0xc')]('CreateWhatsappQueueReport',_0x54fc5c);logger[_0x5ca0('0x18')](_0x5ca0('0x12'),_0x54fc5c,JSON['stringify'](_0x2fb59c));_0x42486a(_0x2fb59c);})[_0x5ca0('0x19')](function(_0x2c3a77){logger[_0x5ca0('0xe')](_0x5ca0('0x12'),_0x2c3a77[_0x5ca0('0x11')],_0x54fc5c);_0x47f9dd(_0x36dbbe[_0x5ca0('0xe')](0x1f4,_0x2c3a77[_0x5ca0('0x11')]));});});};exports[_0x5ca0('0x1a')]=function(_0x55e701){var _0x498a6d=this;return new Promise(function(_0x378f07,_0x2709b7){return db[_0x5ca0('0x13')]['update'](_0x55e701[_0x5ca0('0x15')],{'raw':_0x55e701[_0x5ca0('0x16')]?_0x55e701[_0x5ca0('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x55e701[_0x5ca0('0x16')]?_0x55e701[_0x5ca0('0x16')][_0x5ca0('0x1b')]||null:null,'attributes':_0x55e701[_0x5ca0('0x16')]?_0x55e701['options'][_0x5ca0('0x1c')]||null:null,'limit':_0x55e701['options']?_0x55e701[_0x5ca0('0x16')][_0x5ca0('0x1d')]||null:null})[_0x5ca0('0x17')](function(_0x1fdaf6){logger[_0x5ca0('0xc')](_0x5ca0('0x1a'),_0x55e701);logger['debug']('UpdateWhatsappQueueReport',_0x55e701,JSON[_0x5ca0('0x1e')](_0x1fdaf6));_0x378f07(_0x1fdaf6);})[_0x5ca0('0x19')](function(_0x5afd06){logger[_0x5ca0('0xe')]('UpdateWhatsappQueueReport',_0x5afd06[_0x5ca0('0x11')],_0x55e701);_0x2709b7(_0x498a6d[_0x5ca0('0xe')](0x1f4,_0x5afd06[_0x5ca0('0x11')]));});});};
\ No newline at end of file
+var _0xb881=['attributes','util','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','http','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','error','message','result','catch','CreateWhatsappQueueReport','WhatsappQueueReport','create','body','raw','UpdateWhatsappQueueReport','update','options','where'];(function(_0x2f3be0,_0x3f00e6){var _0x3b0a49=function(_0x321fd9){while(--_0x321fd9){_0x2f3be0['push'](_0x2f3be0['shift']());}};_0x3b0a49(++_0x3f00e6);}(_0xb881,0x119));var _0x1b88=function(_0x1278b6,_0x24252e){_0x1278b6=_0x1278b6-0x0;var _0x2cff42=_0xb881[_0x1278b6];return _0x2cff42;};'use strict';var _=require('lodash');var util=require(_0x1b88('0x0'));var moment=require(_0x1b88('0x1'));var BPromise=require(_0x1b88('0x2'));var rs=require(_0x1b88('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1b88('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x1b88('0x5'));var config=require(_0x1b88('0x6'));var jayson=require(_0x1b88('0x7'));var client=jayson['client'][_0x1b88('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x33f00a,_0x3a3618,_0x3583d8){return new BPromise(function(_0x5d0b97,_0x50971d){return client['request'](_0x33f00a,_0x3583d8)[_0x1b88('0x9')](function(_0x5ba92a){logger[_0x1b88('0xa')](_0x1b88('0xb'),_0x3a3618,_0x1b88('0xc'));logger[_0x1b88('0xd')]('WhatsappQueueReport,\x20%s,\x20%s,\x20%s',_0x3a3618,_0x1b88('0xc'),JSON['stringify'](_0x5ba92a));if(_0x5ba92a[_0x1b88('0xe')]){if(_0x5ba92a['error']['code']===0x1f4){logger[_0x1b88('0xe')](_0x1b88('0xb'),_0x3a3618,_0x5ba92a[_0x1b88('0xe')][_0x1b88('0xf')]);return _0x50971d(_0x5ba92a['error'][_0x1b88('0xf')]);}logger[_0x1b88('0xe')]('WhatsappQueueReport,\x20%s,\x20%s',_0x3a3618,_0x5ba92a[_0x1b88('0xe')]['message']);return _0x5d0b97(_0x5ba92a[_0x1b88('0xe')][_0x1b88('0xf')]);}else{logger[_0x1b88('0xa')](_0x1b88('0xb'),_0x3a3618,'request\x20sent');_0x5d0b97(_0x5ba92a[_0x1b88('0x10')][_0x1b88('0xf')]);}})[_0x1b88('0x11')](function(_0x31f041){logger['error'](_0x1b88('0xb'),_0x3a3618,_0x31f041);_0x50971d(_0x31f041);});});}exports[_0x1b88('0x12')]=function(_0x352d39){var _0xb8a784=this;return new Promise(function(_0x2c24a7,_0x18811f){return db[_0x1b88('0x13')][_0x1b88('0x14')](_0x352d39[_0x1b88('0x15')],{'raw':_0x352d39['options']?_0x352d39['options'][_0x1b88('0x16')]===undefined?!![]:![]:!![]})[_0x1b88('0x9')](function(_0x324647){logger[_0x1b88('0xa')](_0x1b88('0x12'),_0x352d39);logger[_0x1b88('0xd')](_0x1b88('0x12'),_0x352d39,JSON['stringify'](_0x324647));_0x2c24a7(_0x324647);})['catch'](function(_0x338952){logger['error'](_0x1b88('0x12'),_0x338952[_0x1b88('0xf')],_0x352d39);_0x18811f(_0xb8a784[_0x1b88('0xe')](0x1f4,_0x338952[_0x1b88('0xf')]));});});};exports[_0x1b88('0x17')]=function(_0x1f6499){var _0x353ae1=this;return new Promise(function(_0x4cabb9,_0x435bc5){return db[_0x1b88('0x13')][_0x1b88('0x18')](_0x1f6499['body'],{'raw':_0x1f6499['options']?_0x1f6499[_0x1b88('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1f6499[_0x1b88('0x19')]?_0x1f6499[_0x1b88('0x19')][_0x1b88('0x1a')]||null:null,'attributes':_0x1f6499[_0x1b88('0x19')]?_0x1f6499['options'][_0x1b88('0x1b')]||null:null,'limit':_0x1f6499[_0x1b88('0x19')]?_0x1f6499['options']['limit']||null:null})['then'](function(_0x569e80){logger['info'](_0x1b88('0x17'),_0x1f6499);logger[_0x1b88('0xd')]('UpdateWhatsappQueueReport',_0x1f6499,JSON['stringify'](_0x569e80));_0x4cabb9(_0x569e80);})[_0x1b88('0x11')](function(_0x34a016){logger[_0x1b88('0xe')](_0x1b88('0x17'),_0x34a016['message'],_0x1f6499);_0x435bc5(_0x353ae1['error'](0x1f4,_0x34a016[_0x1b88('0xf')]));});});};
\ No newline at end of file
index 317ca43..ea399dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8329=['/describe','isAuthenticated','describe','show','post','create','put','update','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','index','get'];(function(_0x5ef521,_0x462391){var _0x4ec811=function(_0x554503){while(--_0x554503){_0x5ef521['push'](_0x5ef521['shift']());}};_0x4ec811(++_0x462391);}(_0x8329,0xed));var _0x9832=function(_0x42203a,_0x28fa12){_0x42203a=_0x42203a-0x0;var _0x1b6fc9=_0x8329[_0x42203a];return _0x1b6fc9;};'use strict';var multer=require(_0x9832('0x0'));var util=require(_0x9832('0x1'));var path=require(_0x9832('0x2'));var timeout=require(_0x9832('0x3'));var express=require('express');var router=express[_0x9832('0x4')]();var fs_extra=require(_0x9832('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x9832('0x6'));var config=require(_0x9832('0x7'));var controller=require('./whatsappTransferReport.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x9832('0x8')]);router[_0x9832('0x9')](_0x9832('0xa'),auth[_0x9832('0xb')](),controller[_0x9832('0xc')]);router[_0x9832('0x9')]('/:id',auth[_0x9832('0xb')](),controller[_0x9832('0xd')]);router[_0x9832('0xe')]('/',auth[_0x9832('0xb')](),controller[_0x9832('0xf')]);router[_0x9832('0x10')]('/:id',auth[_0x9832('0xb')](),controller[_0x9832('0x11')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x9832('0x12')]=router;
\ No newline at end of file
+var _0x4e5c=['/:id','post','put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','get','isAuthenticated','describe'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0x4e5c,0x16f));var _0xc4e5=function(_0x20589d,_0x55d5bf){_0x20589d=_0x20589d-0x0;var _0x422de9=_0x4e5c[_0x20589d];return _0x422de9;};'use strict';var multer=require(_0xc4e5('0x0'));var util=require(_0xc4e5('0x1'));var path=require(_0xc4e5('0x2'));var timeout=require('connect-timeout');var express=require(_0xc4e5('0x3'));var router=express[_0xc4e5('0x4')]();var fs_extra=require(_0xc4e5('0x5'));var auth=require(_0xc4e5('0x6'));var interaction=require(_0xc4e5('0x7'));var config=require(_0xc4e5('0x8'));var controller=require(_0xc4e5('0x9'));router[_0xc4e5('0xa')]('/',auth[_0xc4e5('0xb')](),controller['index']);router[_0xc4e5('0xa')]('/describe',auth[_0xc4e5('0xb')](),controller[_0xc4e5('0xc')]);router[_0xc4e5('0xa')](_0xc4e5('0xd'),auth[_0xc4e5('0xb')](),controller['show']);router[_0xc4e5('0xe')]('/',auth[_0xc4e5('0xb')](),controller['create']);router[_0xc4e5('0xf')](_0xc4e5('0xd'),auth[_0xc4e5('0xb')](),controller[_0xc4e5('0x10')]);router[_0xc4e5('0x11')](_0xc4e5('0xd'),auth['isAuthenticated'](),controller[_0xc4e5('0x12')]);module[_0xc4e5('0x13')]=router;
\ No newline at end of file
index ca934df..87a46b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb077=['queue','DATE','sequelize','ENUM','agent'];(function(_0x2aa7b5,_0x3acbfb){var _0x4fb99e=function(_0x2a4196){while(--_0x2a4196){_0x2aa7b5['push'](_0x2aa7b5['shift']());}};_0x4fb99e(++_0x3acbfb);}(_0xb077,0x7a));var _0x7b07=function(_0x1c0897,_0x244222){_0x1c0897=_0x1c0897-0x0;var _0x7806c0=_0xb077[_0x1c0897];return _0x7806c0;};'use strict';var Sequelize=require(_0x7b07('0x0'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x7b07('0x1')]('account',_0x7b07('0x2'),_0x7b07('0x3')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x7b07('0x4')]}};
\ No newline at end of file
+var _0xc35f=['agent','queue','DATE','sequelize','exports','STRING','ENUM'];(function(_0x487daf,_0x2c8a74){var _0x8e2c53=function(_0x213bb2){while(--_0x213bb2){_0x487daf['push'](_0x487daf['shift']());}};_0x8e2c53(++_0x2c8a74);}(_0xc35f,0x1ca));var _0xfc35=function(_0x2d513e,_0x5152b9){_0x2d513e=_0x2d513e-0x0;var _0x67db68=_0xc35f[_0x2d513e];return _0x67db68;};'use strict';var Sequelize=require(_0xfc35('0x0'));module[_0xfc35('0x1')]={'uniqueid':{'type':Sequelize[_0xfc35('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xfc35('0x3')]('account',_0xfc35('0x4'),_0xfc35('0x5')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0xfc35('0x6')]}};
\ No newline at end of file
index c6726a3..6175e93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cf5=['map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','catch','show','WhatsappTransferReport','length','include','find','create','body','params','eml-format','rimraf','fast-json-patch','request-promise','moment','util','sox','to-csv','ejs','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','count','Content-Range','reject','update','then','error','name','send','index'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x3cf5,0xa6));var _0x53cf=function(_0x2409d0,_0x127d21){_0x2409d0=_0x2409d0-0x0;var _0x38eb87=_0x3cf5[_0x2409d0];return _0x38eb87;};'use strict';var emlformat=require(_0x53cf('0x0'));var rimraf=require(_0x53cf('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x53cf('0x2'));var rp=require(_0x53cf('0x3'));var moment=require(_0x53cf('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x53cf('0x5'));var path=require('path');var sox=require(_0x53cf('0x6'));var csv=require(_0x53cf('0x7'));var ejs=require(_0x53cf('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x53cf('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x53cf('0xa'));var toCsv=require(_0x53cf('0x7'));var querystring=require(_0x53cf('0xb'));var Papa=require(_0x53cf('0xc'));var Redis=require(_0x53cf('0xd'));var authService=require(_0x53cf('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x53cf('0xf'))(_0x53cf('0x10'));var utils=require(_0x53cf('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x53cf('0x12'));var db=require(_0x53cf('0x13'))['db'];function respondWithStatusCode(_0x33bede,_0xc34a56){_0xc34a56=_0xc34a56||0xcc;return function(_0x3b3b20){if(_0x3b3b20){return _0x33bede[_0x53cf('0x14')](_0xc34a56);}return _0x33bede['status'](_0xc34a56)[_0x53cf('0x15')]();};}function respondWithResult(_0x1623d3,_0x49e73d){_0x49e73d=_0x49e73d||0xc8;return function(_0x943f2e){if(_0x943f2e){return _0x1623d3[_0x53cf('0x16')](_0x49e73d)[_0x53cf('0x17')](_0x943f2e);}};}function respondWithFilteredResult(_0x4ef376,_0x4b79cf){return function(_0x328dcf){if(_0x328dcf){var _0x1c5322=typeof _0x4b79cf[_0x53cf('0x18')]==='undefined'&&typeof _0x4b79cf[_0x53cf('0x19')]==='undefined';var _0x29ecc9=_0x328dcf[_0x53cf('0x1a')];var _0x1878d9=_0x1c5322?0x0:_0x4b79cf[_0x53cf('0x18')];var _0x50d673=_0x1c5322?_0x328dcf[_0x53cf('0x1a')]:_0x4b79cf['offset']+_0x4b79cf[_0x53cf('0x19')];var _0x355dc7;if(_0x50d673>=_0x29ecc9){_0x50d673=_0x29ecc9;_0x355dc7=0xc8;}else{_0x355dc7=0xce;}_0x4ef376[_0x53cf('0x16')](_0x355dc7);return _0x4ef376['set'](_0x53cf('0x1b'),_0x1878d9+'-'+_0x50d673+'/'+_0x29ecc9)['json'](_0x328dcf);}return null;};}function patchUpdates(_0x4897d7){return function(_0x17df3b){try{jsonpatch['apply'](_0x17df3b,_0x4897d7,!![]);}catch(_0x20af67){return BPromise[_0x53cf('0x1c')](_0x20af67);}return _0x17df3b['save']();};}function saveUpdates(_0x2202a8,_0x149546){return function(_0x4c3227){if(_0x4c3227){return _0x4c3227[_0x53cf('0x1d')](_0x2202a8)[_0x53cf('0x1e')](function(_0x279f45){return _0x279f45;});}return null;};}function removeEntity(_0xdc49ce,_0x58f56a){return function(_0x3ee430){if(_0x3ee430){return _0x3ee430['destroy']()[_0x53cf('0x1e')](function(){_0xdc49ce[_0x53cf('0x16')](0xcc)[_0x53cf('0x15')]();});}};}function handleEntityNotFound(_0x3df440,_0x17b536){return function(_0xed826c){if(!_0xed826c){_0x3df440['sendStatus'](0x194);}return _0xed826c;};}function handleError(_0x46199e,_0xde4b6d){_0xde4b6d=_0xde4b6d||0x1f4;return function(_0x397866){logger[_0x53cf('0x1f')](_0x397866['stack']);if(_0x397866['name']){delete _0x397866[_0x53cf('0x20')];}_0x46199e['status'](_0xde4b6d)[_0x53cf('0x21')](_0x397866);};}exports[_0x53cf('0x22')]=function(_0x479d1a,_0x410e98){var _0x46c60e={},_0x3a6fdb={},_0x5586cc={'count':0x0,'rows':[]};var _0x4dec0e=_[_0x53cf('0x23')](db['WhatsappTransferReport'][_0x53cf('0x24')],function(_0x5c9f25){return{'name':_0x5c9f25[_0x53cf('0x25')],'type':_0x5c9f25[_0x53cf('0x26')][_0x53cf('0x27')]};});_0x3a6fdb[_0x53cf('0x28')]=_[_0x53cf('0x23')](_0x4dec0e,_0x53cf('0x20'));_0x3a6fdb[_0x53cf('0x29')]=_[_0x53cf('0x2a')](_0x479d1a[_0x53cf('0x29')]);_0x3a6fdb[_0x53cf('0x2b')]=_['intersection'](_0x3a6fdb['model'],_0x3a6fdb[_0x53cf('0x29')]);_0x46c60e[_0x53cf('0x2c')]=_[_0x53cf('0x2d')](_0x3a6fdb[_0x53cf('0x28')],qs[_0x53cf('0x2e')](_0x479d1a['query'][_0x53cf('0x2e')]));_0x46c60e[_0x53cf('0x2c')]=_0x46c60e[_0x53cf('0x2c')]['length']?_0x46c60e[_0x53cf('0x2c')]:_0x3a6fdb[_0x53cf('0x28')];if(!_0x479d1a[_0x53cf('0x29')]['hasOwnProperty'](_0x53cf('0x2f'))){_0x46c60e[_0x53cf('0x19')]=qs['limit'](_0x479d1a['query'][_0x53cf('0x19')]);_0x46c60e['offset']=qs[_0x53cf('0x18')](_0x479d1a[_0x53cf('0x29')][_0x53cf('0x18')]);}_0x46c60e[_0x53cf('0x30')]=qs[_0x53cf('0x31')](_0x479d1a[_0x53cf('0x29')][_0x53cf('0x31')]);_0x46c60e[_0x53cf('0x32')]=qs[_0x53cf('0x2b')](_[_0x53cf('0x33')](_0x479d1a['query'],_0x3a6fdb[_0x53cf('0x2b')]),_0x4dec0e);if(_0x479d1a[_0x53cf('0x29')][_0x53cf('0x34')]){_0x46c60e[_0x53cf('0x32')]=_[_0x53cf('0x35')](_0x46c60e['where'],{'$or':_[_0x53cf('0x23')](_0x4dec0e,function(_0x37bea8){if(_0x37bea8[_0x53cf('0x26')]!==_0x53cf('0x36')){var _0x4527ac={};_0x4527ac[_0x37bea8['name']]={'$like':'%'+_0x479d1a[_0x53cf('0x29')][_0x53cf('0x34')]+'%'};return _0x4527ac;}})});}_0x46c60e=_[_0x53cf('0x35')]({},_0x46c60e,_0x479d1a[_0x53cf('0x37')]);var _0x377a36={'where':_0x46c60e[_0x53cf('0x32')]};return db['WhatsappTransferReport']['count'](_0x377a36)[_0x53cf('0x1e')](function(_0x1d79dc){_0x5586cc[_0x53cf('0x1a')]=_0x1d79dc;if(_0x479d1a[_0x53cf('0x29')][_0x53cf('0x38')]){_0x46c60e['include']=[{'all':!![]}];}return db['WhatsappTransferReport'][_0x53cf('0x39')](_0x46c60e);})[_0x53cf('0x1e')](function(_0x108a22){_0x5586cc['rows']=_0x108a22;return _0x5586cc;})[_0x53cf('0x1e')](respondWithFilteredResult(_0x410e98,_0x46c60e))[_0x53cf('0x3a')](handleError(_0x410e98,null));};exports[_0x53cf('0x3b')]=function(_0x17cb20,_0x43e588){var _0x27a4df={'raw':!![],'where':{'id':_0x17cb20['params']['id']}},_0x552931={};_0x552931[_0x53cf('0x28')]=_[_0x53cf('0x2a')](db[_0x53cf('0x3c')][_0x53cf('0x24')]);_0x552931[_0x53cf('0x29')]=_['keys'](_0x17cb20[_0x53cf('0x29')]);_0x552931[_0x53cf('0x2b')]=_[_0x53cf('0x2d')](_0x552931['model'],_0x552931['query']);_0x27a4df['attributes']=_['intersection'](_0x552931['model'],qs[_0x53cf('0x2e')](_0x17cb20[_0x53cf('0x29')][_0x53cf('0x2e')]));_0x27a4df[_0x53cf('0x2c')]=_0x27a4df[_0x53cf('0x2c')][_0x53cf('0x3d')]?_0x27a4df['attributes']:_0x552931[_0x53cf('0x28')];if(_0x17cb20[_0x53cf('0x29')][_0x53cf('0x38')]){_0x27a4df[_0x53cf('0x3e')]=[{'all':!![]}];}_0x27a4df=_[_0x53cf('0x35')]({},_0x27a4df,_0x17cb20[_0x53cf('0x37')]);return db[_0x53cf('0x3c')][_0x53cf('0x3f')](_0x27a4df)[_0x53cf('0x1e')](handleEntityNotFound(_0x43e588,null))[_0x53cf('0x1e')](respondWithResult(_0x43e588,null))[_0x53cf('0x3a')](handleError(_0x43e588,null));};exports[_0x53cf('0x40')]=function(_0x367c22,_0x2f7a4d){return db[_0x53cf('0x3c')]['create'](_0x367c22[_0x53cf('0x41')],{})[_0x53cf('0x1e')](respondWithResult(_0x2f7a4d,0xc9))['catch'](handleError(_0x2f7a4d,null));};exports[_0x53cf('0x1d')]=function(_0x2beb72,_0x87e272){if(_0x2beb72[_0x53cf('0x41')]['id']){delete _0x2beb72[_0x53cf('0x41')]['id'];}return db[_0x53cf('0x3c')]['find']({'where':{'id':_0x2beb72[_0x53cf('0x42')]['id']}})[_0x53cf('0x1e')](handleEntityNotFound(_0x87e272,null))[_0x53cf('0x1e')](saveUpdates(_0x2beb72[_0x53cf('0x41')],null))[_0x53cf('0x1e')](respondWithResult(_0x87e272,null))[_0x53cf('0x3a')](handleError(_0x87e272,null));};exports['destroy']=function(_0x51b661,_0x166a58){return db[_0x53cf('0x3c')][_0x53cf('0x3f')]({'where':{'id':_0x51b661['params']['id']}})[_0x53cf('0x1e')](handleEntityNotFound(_0x166a58,null))[_0x53cf('0x1e')](removeEntity(_0x166a58,null))[_0x53cf('0x3a')](handleError(_0x166a58,null));};exports['describe']=function(_0x42f826,_0x5c096c){return db[_0x53cf('0x3c')]['describe']()[_0x53cf('0x1e')](respondWithResult(_0x5c096c,null))['catch'](handleError(_0x5c096c,null));};
\ No newline at end of file
+var _0x64b8=['attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','map','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','keys','find','create','body','params','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','index','WhatsappTransferReport','rawAttributes','fieldName','type','name','query','filters','intersection','model'];(function(_0x406053,_0x3366c7){var _0x2d1875=function(_0x1eb73f){while(--_0x1eb73f){_0x406053['push'](_0x406053['shift']());}};_0x2d1875(++_0x3366c7);}(_0x64b8,0x14b));var _0x864b=function(_0x32774f,_0x6f7f11){_0x32774f=_0x32774f-0x0;var _0x432db8=_0x64b8[_0x32774f];return _0x432db8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x864b('0x0'));var zipdir=require(_0x864b('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x864b('0x2'));var moment=require(_0x864b('0x3'));var BPromise=require(_0x864b('0x4'));var Mustache=require(_0x864b('0x5'));var util=require(_0x864b('0x6'));var path=require(_0x864b('0x7'));var sox=require(_0x864b('0x8'));var csv=require(_0x864b('0x9'));var ejs=require(_0x864b('0xa'));var fs=require('fs');var fs_extra=require(_0x864b('0xb'));var _=require(_0x864b('0xc'));var squel=require(_0x864b('0xd'));var crypto=require(_0x864b('0xe'));var jsforce=require(_0x864b('0xf'));var deskjs=require(_0x864b('0x10'));var toCsv=require(_0x864b('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x864b('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x864b('0x12'));var as=require(_0x864b('0x13'));var hardwareService=require(_0x864b('0x14'));var logger=require('../../config/logger')(_0x864b('0x15'));var utils=require(_0x864b('0x16'));var config=require(_0x864b('0x17'));var licenseUtil=require(_0x864b('0x18'));var db=require(_0x864b('0x19'))['db'];function respondWithStatusCode(_0x2f3f5c,_0x18e3bb){_0x18e3bb=_0x18e3bb||0xcc;return function(_0x263d14){if(_0x263d14){return _0x2f3f5c[_0x864b('0x1a')](_0x18e3bb);}return _0x2f3f5c['status'](_0x18e3bb)[_0x864b('0x1b')]();};}function respondWithResult(_0x1fbea2,_0x3f9376){_0x3f9376=_0x3f9376||0xc8;return function(_0x33986e){if(_0x33986e){return _0x1fbea2[_0x864b('0x1c')](_0x3f9376)[_0x864b('0x1d')](_0x33986e);}};}function respondWithFilteredResult(_0x4c2118,_0x445196){return function(_0x3152a9){if(_0x3152a9){var _0x154a27=typeof _0x445196[_0x864b('0x1e')]===_0x864b('0x1f')&&typeof _0x445196[_0x864b('0x20')]===_0x864b('0x1f');var _0x3240d6=_0x3152a9[_0x864b('0x21')];var _0x17e830=_0x154a27?0x0:_0x445196[_0x864b('0x1e')];var _0x3233b2=_0x154a27?_0x3152a9[_0x864b('0x21')]:_0x445196[_0x864b('0x1e')]+_0x445196[_0x864b('0x20')];var _0x8297b;if(_0x3233b2>=_0x3240d6){_0x3233b2=_0x3240d6;_0x8297b=0xc8;}else{_0x8297b=0xce;}_0x4c2118[_0x864b('0x1c')](_0x8297b);return _0x4c2118[_0x864b('0x22')](_0x864b('0x23'),_0x17e830+'-'+_0x3233b2+'/'+_0x3240d6)[_0x864b('0x1d')](_0x3152a9);}return null;};}function patchUpdates(_0x3048b1){return function(_0x3371f4){try{jsonpatch[_0x864b('0x24')](_0x3371f4,_0x3048b1,!![]);}catch(_0x96bc4b){return BPromise[_0x864b('0x25')](_0x96bc4b);}return _0x3371f4[_0x864b('0x26')]();};}function saveUpdates(_0x434738,_0x1dec91){return function(_0x45c816){if(_0x45c816){return _0x45c816[_0x864b('0x27')](_0x434738)[_0x864b('0x28')](function(_0x28e1b4){return _0x28e1b4;});}return null;};}function removeEntity(_0x28f941,_0x1eff9b){return function(_0x501ffc){if(_0x501ffc){return _0x501ffc[_0x864b('0x29')]()[_0x864b('0x28')](function(){_0x28f941['status'](0xcc)[_0x864b('0x1b')]();});}};}function handleEntityNotFound(_0x3476ec,_0x1175ab){return function(_0x4284eb){if(!_0x4284eb){_0x3476ec['sendStatus'](0x194);}return _0x4284eb;};}function handleError(_0x578ac5,_0x464dcf){_0x464dcf=_0x464dcf||0x1f4;return function(_0x2dec87){logger[_0x864b('0x2a')](_0x2dec87[_0x864b('0x2b')]);if(_0x2dec87['name']){delete _0x2dec87['name'];}_0x578ac5[_0x864b('0x1c')](_0x464dcf)['send'](_0x2dec87);};}exports[_0x864b('0x2c')]=function(_0x7adf04,_0x36926e){var _0x53ef17={},_0x39f9c4={},_0x65d18f={'count':0x0,'rows':[]};var _0x2d5c94=_['map'](db[_0x864b('0x2d')][_0x864b('0x2e')],function(_0x2c15bb){return{'name':_0x2c15bb[_0x864b('0x2f')],'type':_0x2c15bb[_0x864b('0x30')]['key']};});_0x39f9c4['model']=_['map'](_0x2d5c94,_0x864b('0x31'));_0x39f9c4[_0x864b('0x32')]=_['keys'](_0x7adf04[_0x864b('0x32')]);_0x39f9c4[_0x864b('0x33')]=_[_0x864b('0x34')](_0x39f9c4[_0x864b('0x35')],_0x39f9c4[_0x864b('0x32')]);_0x53ef17[_0x864b('0x36')]=_[_0x864b('0x34')](_0x39f9c4[_0x864b('0x35')],qs[_0x864b('0x37')](_0x7adf04[_0x864b('0x32')]['fields']));_0x53ef17['attributes']=_0x53ef17[_0x864b('0x36')][_0x864b('0x38')]?_0x53ef17[_0x864b('0x36')]:_0x39f9c4[_0x864b('0x35')];if(!_0x7adf04[_0x864b('0x32')][_0x864b('0x39')](_0x864b('0x3a'))){_0x53ef17[_0x864b('0x20')]=qs[_0x864b('0x20')](_0x7adf04['query'][_0x864b('0x20')]);_0x53ef17[_0x864b('0x1e')]=qs[_0x864b('0x1e')](_0x7adf04['query'][_0x864b('0x1e')]);}_0x53ef17['order']=qs['sort'](_0x7adf04['query'][_0x864b('0x3b')]);_0x53ef17[_0x864b('0x3c')]=qs[_0x864b('0x33')](_[_0x864b('0x3d')](_0x7adf04['query'],_0x39f9c4[_0x864b('0x33')]),_0x2d5c94);if(_0x7adf04[_0x864b('0x32')]['filter']){_0x53ef17['where']=_[_0x864b('0x3e')](_0x53ef17[_0x864b('0x3c')],{'$or':_[_0x864b('0x3f')](_0x2d5c94,function(_0x2ec55b){if(_0x2ec55b[_0x864b('0x30')]!==_0x864b('0x40')){var _0x4f7967={};_0x4f7967[_0x2ec55b['name']]={'$like':'%'+_0x7adf04[_0x864b('0x32')][_0x864b('0x41')]+'%'};return _0x4f7967;}})});}_0x53ef17=_[_0x864b('0x3e')]({},_0x53ef17,_0x7adf04[_0x864b('0x42')]);var _0x5947c8={'where':_0x53ef17[_0x864b('0x3c')]};return db[_0x864b('0x2d')][_0x864b('0x21')](_0x5947c8)[_0x864b('0x28')](function(_0x46dc50){_0x65d18f[_0x864b('0x21')]=_0x46dc50;if(_0x7adf04['query'][_0x864b('0x43')]){_0x53ef17[_0x864b('0x44')]=[{'all':!![]}];}return db[_0x864b('0x2d')][_0x864b('0x45')](_0x53ef17);})[_0x864b('0x28')](function(_0x4a913a){_0x65d18f[_0x864b('0x46')]=_0x4a913a;return _0x65d18f;})[_0x864b('0x28')](respondWithFilteredResult(_0x36926e,_0x53ef17))[_0x864b('0x47')](handleError(_0x36926e,null));};exports['show']=function(_0x53e685,_0xfed0c){var _0x4cda8d={'raw':!![],'where':{'id':_0x53e685['params']['id']}},_0x11b2ca={};_0x11b2ca[_0x864b('0x35')]=_[_0x864b('0x48')](db[_0x864b('0x2d')]['rawAttributes']);_0x11b2ca[_0x864b('0x32')]=_['keys'](_0x53e685['query']);_0x11b2ca[_0x864b('0x33')]=_[_0x864b('0x34')](_0x11b2ca[_0x864b('0x35')],_0x11b2ca[_0x864b('0x32')]);_0x4cda8d['attributes']=_[_0x864b('0x34')](_0x11b2ca[_0x864b('0x35')],qs[_0x864b('0x37')](_0x53e685[_0x864b('0x32')][_0x864b('0x37')]));_0x4cda8d['attributes']=_0x4cda8d['attributes'][_0x864b('0x38')]?_0x4cda8d[_0x864b('0x36')]:_0x11b2ca[_0x864b('0x35')];if(_0x53e685[_0x864b('0x32')][_0x864b('0x43')]){_0x4cda8d[_0x864b('0x44')]=[{'all':!![]}];}_0x4cda8d=_[_0x864b('0x3e')]({},_0x4cda8d,_0x53e685[_0x864b('0x42')]);return db[_0x864b('0x2d')][_0x864b('0x49')](_0x4cda8d)[_0x864b('0x28')](handleEntityNotFound(_0xfed0c,null))[_0x864b('0x28')](respondWithResult(_0xfed0c,null))[_0x864b('0x47')](handleError(_0xfed0c,null));};exports[_0x864b('0x4a')]=function(_0xa752b4,_0x88c3ce){return db[_0x864b('0x2d')][_0x864b('0x4a')](_0xa752b4['body'],{})['then'](respondWithResult(_0x88c3ce,0xc9))[_0x864b('0x47')](handleError(_0x88c3ce,null));};exports[_0x864b('0x27')]=function(_0x1d51d7,_0x35f3da){if(_0x1d51d7[_0x864b('0x4b')]['id']){delete _0x1d51d7[_0x864b('0x4b')]['id'];}return db['WhatsappTransferReport'][_0x864b('0x49')]({'where':{'id':_0x1d51d7['params']['id']}})['then'](handleEntityNotFound(_0x35f3da,null))[_0x864b('0x28')](saveUpdates(_0x1d51d7['body'],null))[_0x864b('0x28')](respondWithResult(_0x35f3da,null))[_0x864b('0x47')](handleError(_0x35f3da,null));};exports[_0x864b('0x29')]=function(_0x48c455,_0x2b8fb9){return db[_0x864b('0x2d')][_0x864b('0x49')]({'where':{'id':_0x48c455[_0x864b('0x4c')]['id']}})[_0x864b('0x28')](handleEntityNotFound(_0x2b8fb9,null))['then'](removeEntity(_0x2b8fb9,null))['catch'](handleError(_0x2b8fb9,null));};exports['describe']=function(_0x4f3d2d,_0x24e2ea){return db[_0x864b('0x2d')]['describe']()[_0x864b('0x28')](respondWithResult(_0x24e2ea,null))[_0x864b('0x47')](handleError(_0x24e2ea,null));};
\ No newline at end of file
index f8cc39a..749dd0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x982b=['moment','request-promise','path','rimraf','../../config/environment','define','report_whatsapp_transfer','uniqueid','lodash','util','../../config/logger','api'];(function(_0x8cd3b,_0x2ddeb3){var _0x620718=function(_0x177f17){while(--_0x177f17){_0x8cd3b['push'](_0x8cd3b['shift']());}};_0x620718(++_0x2ddeb3);}(_0x982b,0xec));var _0xb982=function(_0x41e2af,_0x3662f8){_0x41e2af=_0x41e2af-0x0;var _0x41df19=_0x982b[_0x41e2af];return _0x41df19;};'use strict';var _=require(_0xb982('0x0'));var util=require(_0xb982('0x1'));var logger=require(_0xb982('0x2'))(_0xb982('0x3'));var moment=require(_0xb982('0x4'));var BPromise=require('bluebird');var rp=require(_0xb982('0x5'));var fs=require('fs');var path=require(_0xb982('0x6'));var rimraf=require(_0xb982('0x7'));var config=require(_0xb982('0x8'));var attributes=require('./whatsappTransferReport.attributes');module['exports']=function(_0x55e2b9,_0x545e87){return _0x55e2b9[_0xb982('0x9')]('WhatsappTransferReport',attributes,{'tableName':_0xb982('0xa'),'paranoid':![],'indexes':[{'name':_0xb982('0xb'),'fields':[_0xb982('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x70ee=['moment','bluebird','request-promise','path','../../config/environment','./whatsappTransferReport.attributes','define','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util','api'];(function(_0x669be3,_0x1871ff){var _0x3a1a61=function(_0x56fc34){while(--_0x56fc34){_0x669be3['push'](_0x669be3['shift']());}};_0x3a1a61(++_0x1871ff);}(_0x70ee,0x15c));var _0xe70e=function(_0x3dddb9,_0x3b2f73){_0x3dddb9=_0x3dddb9-0x0;var _0x4df584=_0x70ee[_0x3dddb9];return _0x4df584;};'use strict';var _=require(_0xe70e('0x0'));var util=require(_0xe70e('0x1'));var logger=require('../../config/logger')(_0xe70e('0x2'));var moment=require(_0xe70e('0x3'));var BPromise=require(_0xe70e('0x4'));var rp=require(_0xe70e('0x5'));var fs=require('fs');var path=require(_0xe70e('0x6'));var rimraf=require('rimraf');var config=require(_0xe70e('0x7'));var attributes=require(_0xe70e('0x8'));module['exports']=function(_0x35595f,_0x3e7b95){return _0x35595f[_0xe70e('0x9')](_0xe70e('0xa'),attributes,{'tableName':_0xe70e('0xb'),'paranoid':![],'indexes':[{'name':_0xe70e('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 941b907..19869df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb090=['util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xb090,0x125));var _0x0b09=function(_0x23e3fd,_0x23013c){_0x23e3fd=_0x23e3fd-0x0;var _0x9d32d8=_0xb090[_0x23e3fd];return _0x9d32d8;};'use strict';var _=require(_0x0b09('0x0'));var util=require(_0x0b09('0x1'));var moment=require(_0x0b09('0x2'));var BPromise=require(_0x0b09('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0b09('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x0b09('0x5'));var logger=require(_0x0b09('0x6'))(_0x0b09('0x7'));var config=require(_0x0b09('0x8'));var jayson=require(_0x0b09('0x9'));var client=jayson[_0x0b09('0xa')][_0x0b09('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5ed00d,_0x26e762,_0x2de142){return new BPromise(function(_0x18b29e,_0x527fc7){return client['request'](_0x5ed00d,_0x2de142)['then'](function(_0x58bd47){logger['info'](_0x0b09('0xc'),_0x26e762,_0x0b09('0xd'));logger['debug'](_0x0b09('0xe'),_0x26e762,'request\x20sent',JSON[_0x0b09('0xf')](_0x58bd47));if(_0x58bd47['error']){if(_0x58bd47[_0x0b09('0x10')][_0x0b09('0x11')]===0x1f4){logger['error']('WhatsappTransferReport,\x20%s,\x20%s',_0x26e762,_0x58bd47[_0x0b09('0x10')][_0x0b09('0x12')]);return _0x527fc7(_0x58bd47[_0x0b09('0x10')]['message']);}logger[_0x0b09('0x10')](_0x0b09('0xc'),_0x26e762,_0x58bd47[_0x0b09('0x10')][_0x0b09('0x12')]);return _0x18b29e(_0x58bd47[_0x0b09('0x10')][_0x0b09('0x12')]);}else{logger['info'](_0x0b09('0xc'),_0x26e762,_0x0b09('0xd'));_0x18b29e(_0x58bd47[_0x0b09('0x13')]['message']);}})[_0x0b09('0x14')](function(_0x1ccdc3){logger['error'](_0x0b09('0xc'),_0x26e762,_0x1ccdc3);_0x527fc7(_0x1ccdc3);});});}
\ No newline at end of file
+var _0x26e5=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','error','message','info','result','lodash','util','moment'];(function(_0x2ea076,_0xa59a85){var _0x1e0867=function(_0x4d5ae2){while(--_0x4d5ae2){_0x2ea076['push'](_0x2ea076['shift']());}};_0x1e0867(++_0xa59a85);}(_0x26e5,0x1c9));var _0x526e=function(_0x496738,_0x3f1a9f){_0x496738=_0x496738-0x0;var _0xee1381=_0x26e5[_0x496738];return _0xee1381;};'use strict';var _=require(_0x526e('0x0'));var util=require(_0x526e('0x1'));var moment=require(_0x526e('0x2'));var BPromise=require(_0x526e('0x3'));var rs=require(_0x526e('0x4'));var fs=require('fs');var Redis=require(_0x526e('0x5'));var db=require(_0x526e('0x6'))['db'];var utils=require(_0x526e('0x7'));var logger=require(_0x526e('0x8'))(_0x526e('0x9'));var config=require('../../config/environment');var jayson=require(_0x526e('0xa'));var client=jayson['client'][_0x526e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xfda1b6,_0xddccda,_0x253ae4){return new BPromise(function(_0x40f964,_0x462129){return client[_0x526e('0xc')](_0xfda1b6,_0x253ae4)[_0x526e('0xd')](function(_0x29e0df){logger['info'](_0x526e('0xe'),_0xddccda,'request\x20sent');logger['debug']('WhatsappTransferReport,\x20%s,\x20%s,\x20%s',_0xddccda,_0x526e('0xf'),JSON['stringify'](_0x29e0df));if(_0x29e0df[_0x526e('0x10')]){if(_0x29e0df[_0x526e('0x10')]['code']===0x1f4){logger[_0x526e('0x10')](_0x526e('0xe'),_0xddccda,_0x29e0df['error']['message']);return _0x462129(_0x29e0df[_0x526e('0x10')][_0x526e('0x11')]);}logger[_0x526e('0x10')](_0x526e('0xe'),_0xddccda,_0x29e0df[_0x526e('0x10')]['message']);return _0x40f964(_0x29e0df[_0x526e('0x10')]['message']);}else{logger[_0x526e('0x12')](_0x526e('0xe'),_0xddccda,_0x526e('0xf'));_0x40f964(_0x29e0df[_0x526e('0x13')][_0x526e('0x11')]);}})['catch'](function(_0x2f4766){logger['error']('WhatsappTransferReport,\x20%s,\x20%s',_0xddccda,_0x2f4766);_0x462129(_0x2f4766);});});}
\ No newline at end of file
index 4a9bd9a..7419f0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd935=['default','catch','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','./mysqldb','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule/whatsapp','sequelize','sync','then','listen','start','Online\x20apps:','map','filter','name','info','Offline\x20apps:','status','online','seedDB','./config/seedDB'];(function(_0x5d76cc,_0x195736){var _0x4acce4=function(_0x3b889d){while(--_0x3b889d){_0x5d76cc['push'](_0x5d76cc['shift']());}};_0x4acce4(++_0x195736);}(_0xd935,0x1ad));var _0x5d93=function(_0x3e4003,_0x3819a2){_0x3e4003=_0x3e4003-0x0;var _0x3280f2=_0xd935[_0x3e4003];return _0x3280f2;};'use strict';var _=require('lodash');var mysqldb=require(_0x5d93('0x0'));var rpc=require('./rpc');var config=require('./config/environment');var logger=require(_0x5d93('0x1'))(_0x5d93('0x2'));var pm2=require(_0x5d93('0x3'));var pm2Config=require(_0x5d93('0x4'));var schedule=require('./config/schedule');var chat=require('./config/schedule/chat');var whatsapp=require(_0x5d93('0x5'));var transcribe=require('./config/schedule/transcribe');function main(){return mysqldb['db'][_0x5d93('0x6')][_0x5d93('0x7')]()[_0x5d93('0x8')](function(){return rpc[_0x5d93('0x9')]();})[_0x5d93('0x8')](function(_0x4a36e0){logger['info'](_0x4a36e0);return chat[_0x5d93('0xa')]();})['then'](function(){return whatsapp['start']();})[_0x5d93('0x8')](function(){return schedule[_0x5d93('0xa')]();})[_0x5d93('0x8')](function(){return transcribe[_0x5d93('0xa')]();})[_0x5d93('0x8')](function(_0x2652a5){logger['info'](_0x2652a5);return pm2[_0x5d93('0xa')](pm2Config);})[_0x5d93('0x8')](function(_0x5a2336){logger['info'](_0x5d93('0xb'),_[_0x5d93('0xc')](_[_0x5d93('0xd')](_0x5a2336,{'status':'online'}),_0x5d93('0xe'))['join']());logger[_0x5d93('0xf')](_0x5d93('0x10'),_[_0x5d93('0xc')](_['filter'](_0x5a2336,function(_0x3a96a6){return _0x3a96a6[_0x5d93('0x11')]!==_0x5d93('0x12');}),_0x5d93('0xe'))['join']()||'None');config[_0x5d93('0x13')]&&require(_0x5d93('0x14'))[_0x5d93('0x15')]();require('./config/license')[_0x5d93('0x15')]();})[_0x5d93('0x16')](function(_0x1353dd){logger[_0x5d93('0x17')](_0x5d93('0x18'),_0x1353dd);process['exit'](0x1);});}main();
\ No newline at end of file
+var _0x22a0=['name','join','None','seedDB','./config/seedDB','default','catch','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','./rpc','./config/environment','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule/chat','./config/schedule/whatsapp','sequelize','sync','then','listen','start','info','Online\x20apps:','map','filter','online'];(function(_0x53ea78,_0x415cba){var _0x3e24c9=function(_0x11a49b){while(--_0x11a49b){_0x53ea78['push'](_0x53ea78['shift']());}};_0x3e24c9(++_0x415cba);}(_0x22a0,0x117));var _0x022a=function(_0x4d971e,_0x4e6d1c){_0x4d971e=_0x4d971e-0x0;var _0x171201=_0x22a0[_0x4d971e];return _0x171201;};'use strict';var _=require('lodash');var mysqldb=require('./mysqldb');var rpc=require(_0x022a('0x0'));var config=require(_0x022a('0x1'));var logger=require(_0x022a('0x2'))(_0x022a('0x3'));var pm2=require(_0x022a('0x4'));var pm2Config=require(_0x022a('0x5'));var schedule=require('./config/schedule');var chat=require(_0x022a('0x6'));var whatsapp=require(_0x022a('0x7'));var transcribe=require('./config/schedule/transcribe');function main(){return mysqldb['db'][_0x022a('0x8')][_0x022a('0x9')]()[_0x022a('0xa')](function(){return rpc[_0x022a('0xb')]();})['then'](function(_0x38ba55){logger['info'](_0x38ba55);return chat[_0x022a('0xc')]();})[_0x022a('0xa')](function(){return whatsapp[_0x022a('0xc')]();})[_0x022a('0xa')](function(){return schedule[_0x022a('0xc')]();})['then'](function(){return transcribe['start']();})[_0x022a('0xa')](function(_0x2e1c80){logger['info'](_0x2e1c80);return pm2[_0x022a('0xc')](pm2Config);})[_0x022a('0xa')](function(_0x448080){logger[_0x022a('0xd')](_0x022a('0xe'),_[_0x022a('0xf')](_[_0x022a('0x10')](_0x448080,{'status':_0x022a('0x11')}),_0x022a('0x12'))[_0x022a('0x13')]());logger['info']('Offline\x20apps:',_['map'](_['filter'](_0x448080,function(_0x3aa927){return _0x3aa927['status']!==_0x022a('0x11');}),_0x022a('0x12'))[_0x022a('0x13')]()||_0x022a('0x14'));config[_0x022a('0x15')]&&require(_0x022a('0x16'))['default']();require('./config/license')[_0x022a('0x17')]();})[_0x022a('0x18')](function(_0x143647){logger[_0x022a('0x19')](_0x022a('0x1a'),_0x143647);process['exit'](0x1);});}main();
\ No newline at end of file
index 69aa224..97a406f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38fd=['unmanaged','json','Unmanaged.','Forbidden.','catch','headers','authorization','startsWith','Basic','User','find','name','then','authenticate','Wrong\x20credentials.','Unknown\x20authorization\x20format','getUuid','query','sub','allowedLoginAttempts','isEqual','apiKeyNonce','nonce','disabled','Invalid\x20API\x20access\x20key','blocked','blockDuration','blockedAt','add','minutes','User\x20not\x20found.','canUpdate','getLicense','Forbidden','isMiddleware','setTokenCookie','cookie','redirect','/dashboards/general','send','retrieveApiKey','isNil','apiKeyIat','generateApiKey','regenerateApiKey','apikey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','Sequelize','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','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.','updatePasswordsHistory','split','length','unshift','encryptString','join','promisify','sign','session','options','randomBytes','toString','hex','floor','now','HS512','../../mysqldb','../../config/environment','../../config/license/hardware','../encryptor','jsonwebtoken','composable-middleware','basic-auth','crypto','util','moment','secrets','role','internal','userpic','permissions','md5secret','voicePause','chatPause','mailPause','faxPause','openchannelPause','lastLoginAt','crudPermissions','passwordResetAt','phoneBarAutoAnswerDelay','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarPrefixRequired','hotdesk','privacyEnabled','settingsEnabled','downloadVoiceRecordings','downloadOmnichannelInteractions','isChatInteractionAuthorized','isAuthenticated','use','user','ChatInteraction','findOne','closed','disposition','status'];(function(_0x320b8e,_0x1da3fe){var _0x55a10a=function(_0x148a56){while(--_0x148a56){_0x320b8e['push'](_0x320b8e['shift']());}};_0x55a10a(++_0x1da3fe);}(_0x38fd,0x12f));var _0xd38f=function(_0x3c689b,_0x23d31c){_0x3c689b=_0x3c689b-0x0;var _0x117692=_0x38fd[_0x3c689b];return _0x117692;};'use strict';var db=require(_0xd38f('0x0'))['db'];var config=require(_0xd38f('0x1'));var hardwareConf=require(_0xd38f('0x2'));var licenseUtil=require('../../config/license/util');var encryptor=require(_0xd38f('0x3'));var _=require('lodash');var jwt=require(_0xd38f('0x4'));var expressJwt=require('express-jwt');var compose=require(_0xd38f('0x5'));var basicAuth=require(_0xd38f('0x6'));var crypto=require(_0xd38f('0x7'));var BPromise=require('bluebird');var util=require(_0xd38f('0x8'));var moment=require(_0xd38f('0x9'));var validateJwt=expressJwt({'secret':config[_0xd38f('0xa')]['session']});var userAttributes=['id',_0xd38f('0xb'),'fullname','name',_0xd38f('0xc'),'email',_0xd38f('0xd'),_0xd38f('0xe'),_0xd38f('0xf'),_0xd38f('0x10'),_0xd38f('0x11'),_0xd38f('0x12'),_0xd38f('0x13'),'smsPause',_0xd38f('0x14'),'pauseType','showWebBar',_0xd38f('0x15'),'lastPauseAt',_0xd38f('0x16'),'allowmessenger',_0xd38f('0x17'),'alias','phoneBarAutoAnswer',_0xd38f('0x18'),'phoneBarDnd','phoneBarEnableRecording',_0xd38f('0x19'),_0xd38f('0x1a'),'phoneBarExpires',_0xd38f('0x1b'),'phoneBarRemoteControl','phoneBarRemoteControlPort',_0xd38f('0x1c'),'interface','userProfileId',_0xd38f('0x1d'),_0xd38f('0x1e'),'wssPort',_0xd38f('0x1f'),_0xd38f('0x20'),'downloadAttachments'];exports[_0xd38f('0x21')]=function(){return this[_0xd38f('0x22')](!![])[_0xd38f('0x23')](function(_0x3da845,_0x13f92b,_0x381df2){if(_0x3da845[_0xd38f('0x24')]){_0x381df2();}else{return db[_0xd38f('0x25')][_0xd38f('0x26')]({'where':{'id':_0x3da845['params']['id']},'attributes':['id',_0xd38f('0x27'),_0xd38f('0x28')],'raw':!![]})['then'](function(_0x586d90){if(_0x586d90&&_0x586d90[_0xd38f('0x27')]){return _0x13f92b[_0xd38f('0x29')](_0x586d90[_0xd38f('0x28')]===_0xd38f('0x2a')?0x195:0x193)[_0xd38f('0x2b')]({'message':_0x586d90[_0xd38f('0x28')]===_0xd38f('0x2a')?_0xd38f('0x2c'):_0xd38f('0x2d')});}else{_0x381df2();}})[_0xd38f('0x2e')](function(_0x4af87f){_0x381df2(_0x4af87f);});}});};exports['isAuthenticated']=function isAuthenticated(_0xfb3926){return compose()[_0xd38f('0x23')](function(_0x39ac21,_0xe16999,_0x1539cd){var _0x5cafe4;if(_0x39ac21[_0xd38f('0x2f')][_0xd38f('0x30')]){if(_[_0xd38f('0x31')](_0x39ac21['headers'][_0xd38f('0x30')],_0xd38f('0x32'))){var _0xe77376=basicAuth(_0x39ac21);db[_0xd38f('0x33')][_0xd38f('0x34')]({'where':{'name':_0xe77376[_0xd38f('0x35')]}})[_0xd38f('0x36')](function(_0x24fb18){if(!_0x24fb18||!_0x24fb18[_0xd38f('0x37')](_0xe77376['pass'])){return _0xe16999['status'](0x191)[_0xd38f('0x2b')]({'message':_0xd38f('0x38')});}_0x39ac21[_0xd38f('0x24')]={'id':_0x24fb18['id']};_0x1539cd();})[_0xd38f('0x2e')](function(_0x296434){_0x1539cd(_0x296434);});}else if(_[_0xd38f('0x31')](_0x39ac21['headers']['authorization'],'Bearer')){validateJwt(_0x39ac21,_0xe16999,_0x1539cd);}else{if(_0xfb3926){_0x1539cd();}else{return _0xe16999[_0xd38f('0x29')](0x193)[_0xd38f('0x2b')]({'message':_0xd38f('0x39')});}}}else if(_0x39ac21['query']['apikey']){try{var _0x27f123={'audience':hardwareConf[_0xd38f('0x3a')](),'issuer':hardwareConf[_0xd38f('0x3a')]()};verifyJwt(_0x39ac21[_0xd38f('0x3b')]['apikey'],_0x27f123)[_0xd38f('0x36')](function(_0x5d192d){return db[_0xd38f('0x33')][_0xd38f('0x34')]({'where':{'id':_0x5d192d[_0xd38f('0x3c')]}})['then'](function(_0x41bcd6){_0x5cafe4=_0x41bcd6;return db['Setting'][_0xd38f('0x26')]({'where':{'id':0x1},'attributes':[_0xd38f('0x3d'),'blockDuration'],'raw':!![]});})[_0xd38f('0x36')](function(_0x264355){if(!_0x5cafe4||!_[_0xd38f('0x3e')](_0x5cafe4[_0xd38f('0x3f')],_0x5d192d[_0xd38f('0x40')])){return _0xe16999[_0xd38f('0x29')](0x191)['json']({'message':'API\x20access\x20key\x20is\x20not\x20valid\x20anymore'});}if(_0x5cafe4[_0xd38f('0x41')]){return _0xe16999[_0xd38f('0x29')](0x191)['json']({'message':_0xd38f('0x42')});}if(_0x5cafe4[_0xd38f('0x43')]){if(_0x264355[_0xd38f('0x44')]>0x0){if(moment(_0x5cafe4[_0xd38f('0x45')])[_0xd38f('0x46')](_0x264355[_0xd38f('0x44')],_0xd38f('0x47'))>moment()){return _0xe16999['status'](0x191)[_0xd38f('0x2b')]({'message':_0xd38f('0x42')});}}else{return _0xe16999[_0xd38f('0x29')](0x191)[_0xd38f('0x2b')]({'message':_0xd38f('0x42')});}}_0x39ac21['user']={'id':_0x5cafe4['id']};_0x1539cd();});})[_0xd38f('0x2e')](function(){return _0xe16999['status'](0x191)[_0xd38f('0x2b')]({'message':_0xd38f('0x42')});});}catch(_0x135924){_0x1539cd(_0x135924);}}else if(_0xfb3926){_0x1539cd();}else{return _0xe16999[_0xd38f('0x29')](0x193)[_0xd38f('0x2b')]({'message':_0xd38f('0x39')});}})[_0xd38f('0x23')](function(_0x3e77fb,_0x5a442b,_0x44d91f){if(_0x3e77fb[_0xd38f('0x24')]){db[_0xd38f('0x33')][_0xd38f('0x34')]({'where':{'id':_0x3e77fb[_0xd38f('0x24')]['id']},'attributes':userAttributes})['then'](function(_0x355eef){if(!_0x355eef){return _0x5a442b[_0xd38f('0x29')](0x194)[_0xd38f('0x2b')]({'message':_0xd38f('0x48')});}_0x3e77fb[_0xd38f('0x24')]=_0x355eef;_0x44d91f();})[_0xd38f('0x2e')](function(_0x2018c8){_0x44d91f(_0x2018c8);});}else if(_0xfb3926){_0x44d91f();}else{return _0x5a442b[_0xd38f('0x29')](0x194)[_0xd38f('0x2b')]({'message':'User\x20object\x20not\x20found.'});}});};exports[_0xd38f('0x49')]=function canUpdate(){return compose()[_0xd38f('0x23')](function(_0x18739c,_0xcee560,_0x5b1704){return licenseUtil[_0xd38f('0x4a')]()['then'](function(_0x2f80c7){if(_0x2f80c7['update']){_0x5b1704();}else{return _0xcee560[_0xd38f('0x29')](0x193)['json']({'message':_0xd38f('0x4b')});}})[_0xd38f('0x2e')](function(_0x3f7d3d){_0x5b1704(_0x3f7d3d);});});};exports[_0xd38f('0x4c')]=function(_0x5ceb56,_0x4545fa,_0x135092){_0x5ceb56[_0xd38f('0x4c')]=!![];return _0x135092();};exports['signToken']=function signToken(_0x31904b){return signJwt(_0x31904b);};exports[_0xd38f('0x4d')]=function(_0x5a5dd0,_0x18be14){if(!_0x5a5dd0[_0xd38f('0x24')]){return _0x18be14[_0xd38f('0x29')](0x194)[_0xd38f('0x2b')]({'message':'It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.'});}var _0x261bbb={'payload':{'id':_0x5a5dd0[_0xd38f('0x24')]['id'],'role':_0x5a5dd0[_0xd38f('0x24')][_0xd38f('0xb')]},'options':{'expiresIn':0x15180}};return signJwt(_0x261bbb)['then'](function(_0x92e391){_0x18be14[_0xd38f('0x4e')]('motion.token',_0x92e391);_0x18be14[_0xd38f('0x4f')](_0xd38f('0x50'));})[_0xd38f('0x2e')](function(_0x18baaf){return _0x18be14[_0xd38f('0x29')](0x1f4)[_0xd38f('0x51')](_0x18baaf);});};exports[_0xd38f('0x52')]=function(_0x30a455){if(_['isNil'](_0x30a455['apiKeyNonce'])||_[_0xd38f('0x53')](_0x30a455[_0xd38f('0x54')])){return null;}else{return createJwt(_0x30a455);}};exports[_0xd38f('0x55')]=function(_0x103ecb){_0x103ecb[_0xd38f('0x3f')]=generateNonce();_0x103ecb[_0xd38f('0x54')]=generateIssuedAt();return createJwt(_0x103ecb);};exports[_0xd38f('0x56')]=function(_0x3832a5,_0x2e328d){var _0x2c847c=_0x3832a5[_0xd38f('0x3b')][_0xd38f('0x57')];if(_0x2c847c){var _0x472337={'nonce':_0x2e328d['apiKeyNonce'],'iat':_0x2e328d[_0xd38f('0x54')],'audience':hardwareConf[_0xd38f('0x3a')](),'issuer':hardwareConf[_0xd38f('0x3a')]()};return verifyJwt(_0x2c847c,_0x472337)[_0xd38f('0x36')](function(){return generateApiKey(_0x2e328d);});}else{throw{'message':_0xd38f('0x58')};}};exports[_0xd38f('0x59')]=function(_0x14671f){var _0x5578dd=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x5578dd['test'](_0x14671f))throw new db[(_0xd38f('0x5a'))][(_0xd38f('0x5b'))](_0xd38f('0x5c'));return;};exports[_0xd38f('0x5d')]=function(_0x224d38,_0x8f921b,_0x2103f0){var _0x2cafc4=encryptor[_0xd38f('0x5e')](_0x8f921b)['split'](',');for(var _0x154d85=0x0;_0x154d85<_0x2103f0;_0x154d85++){if(!_0x2cafc4[_0x154d85])break;if(_0x224d38[_0xd38f('0x5f')]()===_0x2cafc4[_0x154d85][_0xd38f('0x5f')]()){var _0x2dbf45=util[_0xd38f('0x60')](_0xd38f('0x61'),_0x2103f0);if(_0x2103f0===0x1){_0x2dbf45=_0xd38f('0x62');}throw new db[(_0xd38f('0x5a'))][(_0xd38f('0x5b'))](_0x2dbf45);}}return;};exports[_0xd38f('0x63')]=function(_0x4f218c,_0x2973dc){var _0x876310=_0x2973dc?encryptor[_0xd38f('0x5e')](_0x2973dc)[_0xd38f('0x64')](','):[];if(_0x876310[_0xd38f('0x65')]===0x5){_0x876310['splice'](-0x1,0x1);}_0x876310[_0xd38f('0x66')](_0x4f218c);return encryptor[_0xd38f('0x67')](_0x876310[_0xd38f('0x68')](','));};function signJwt(_0x199db1){var _0x4b3b0b=BPromise[_0xd38f('0x69')](jwt[_0xd38f('0x6a')],{'context':jwt});var _0xc3525f=_0x199db1['secret']||config['secrets'][_0xd38f('0x6b')];return new BPromise(function(_0x44ba08,_0x4d0ced){_0x4b3b0b(_0x199db1['payload'],_0xc3525f,_0x199db1[_0xd38f('0x6c')])[_0xd38f('0x36')](function(_0x2a646a){_0x44ba08(_0x2a646a);})[_0xd38f('0x2e')](function(_0x28ae40){_0x4d0ced(_0x28ae40);});});}function verifyJwt(_0x182046,_0x340d0e,_0x37553e){var _0x27d0da=BPromise[_0xd38f('0x69')](jwt['verify'],{'context':jwt});var _0xc1a1b2=_0x37553e||config[_0xd38f('0xa')][_0xd38f('0x6b')];return new BPromise(function(_0x41b4f3,_0x3df2a5){_0x27d0da(_0x182046,_0xc1a1b2,_0x340d0e)[_0xd38f('0x36')](function(_0x5c9201){_0x41b4f3(_0x5c9201);})[_0xd38f('0x2e')](function(_0x421ce4){_0x3df2a5(_0x421ce4);});});}function generateNonce(){return crypto[_0xd38f('0x6d')](0x10)[_0xd38f('0x6e')](_0xd38f('0x6f'));}function generateIssuedAt(){return Math[_0xd38f('0x70')](Date[_0xd38f('0x71')]()/0x3e8)[_0xd38f('0x6e')]();}function createJwt(_0x4fc7bf){var _0x273264={'payload':{'iat':_0x4fc7bf['apiKeyIat'],'nonce':_0x4fc7bf[_0xd38f('0x3f')]},'options':{'algorithm':_0xd38f('0x72'),'subject':_0x4fc7bf['id']['toString'](),'issuer':hardwareConf[_0xd38f('0x3a')](),'audience':hardwareConf[_0xd38f('0x3a')]()}};return signJwt(_0x273264)['then'](function(_0x1086f6){return{'iat':_0x4fc7bf[_0xd38f('0x54')],'nonce':_0x4fc7bf[_0xd38f('0x3f')],'token':_0x1086f6};});}
\ No newline at end of file
+var _0xb94d=['disposition','then','status','json','unmanaged','Forbidden.','catch','use','headers','authorization','startsWith','Basic','User','find','authenticate','pass','Wrong\x20credentials.','user','Bearer','Unknown\x20authorization\x20format','query','apikey','getUuid','Setting','allowedLoginAttempts','blockDuration','isEqual','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blockedAt','minutes','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','update','Forbidden','signToken','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','role','cookie','motion.token','redirect','/dashboards/general','isNil','apiKeyNonce','apiKeyIat','generateApiKey','regenerateApiKey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','ValidationError','validatePasswordHistory','decryptString','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.','Sequelize','updatePasswordsHistory','split','length','splice','unshift','join','promisify','sign','secret','payload','options','randomBytes','toString','hex','floor','HS512','../../config/environment','../../config/license/util','../encryptor','lodash','jsonwebtoken','express-jwt','composable-middleware','basic-auth','secrets','session','fullname','name','internal','email','userpic','permissions','md5secret','chatPause','mailPause','faxPause','smsPause','openchannelPause','pauseType','showWebBar','lastLoginAt','lastPauseAt','crudPermissions','allowmessenger','passwordResetAt','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','phoneBarRemoteControlPort','hotdesk','userProfileId','privacyEnabled','settingsEnabled','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','isAuthenticated','findOne','params'];(function(_0x3b8f99,_0x718933){var _0x104c8a=function(_0x13b53f){while(--_0x13b53f){_0x3b8f99['push'](_0x3b8f99['shift']());}};_0x104c8a(++_0x718933);}(_0xb94d,0x147));var _0xdb94=function(_0x4287fe,_0x14ad49){_0x4287fe=_0x4287fe-0x0;var _0x329a39=_0xb94d[_0x4287fe];return _0x329a39;};'use strict';var db=require('../../mysqldb')['db'];var config=require(_0xdb94('0x0'));var hardwareConf=require('../../config/license/hardware');var licenseUtil=require(_0xdb94('0x1'));var encryptor=require(_0xdb94('0x2'));var _=require(_0xdb94('0x3'));var jwt=require(_0xdb94('0x4'));var expressJwt=require(_0xdb94('0x5'));var compose=require(_0xdb94('0x6'));var basicAuth=require(_0xdb94('0x7'));var crypto=require('crypto');var BPromise=require('bluebird');var util=require('util');var moment=require('moment');var validateJwt=expressJwt({'secret':config[_0xdb94('0x8')][_0xdb94('0x9')]});var userAttributes=['id','role',_0xdb94('0xa'),_0xdb94('0xb'),_0xdb94('0xc'),_0xdb94('0xd'),_0xdb94('0xe'),_0xdb94('0xf'),_0xdb94('0x10'),'voicePause',_0xdb94('0x11'),_0xdb94('0x12'),_0xdb94('0x13'),_0xdb94('0x14'),_0xdb94('0x15'),_0xdb94('0x16'),_0xdb94('0x17'),_0xdb94('0x18'),_0xdb94('0x19'),_0xdb94('0x1a'),_0xdb94('0x1b'),_0xdb94('0x1c'),'alias',_0xdb94('0x1d'),_0xdb94('0x1e'),_0xdb94('0x1f'),'phoneBarEnableRecording',_0xdb94('0x20'),_0xdb94('0x21'),_0xdb94('0x22'),_0xdb94('0x23'),_0xdb94('0x24'),_0xdb94('0x25'),_0xdb94('0x26'),'interface',_0xdb94('0x27'),_0xdb94('0x28'),_0xdb94('0x29'),'wssPort',_0xdb94('0x2a'),_0xdb94('0x2b'),_0xdb94('0x2c')];exports['isChatInteractionAuthorized']=function(){return this[_0xdb94('0x2d')](!![])['use'](function(_0x16f98e,_0x1160f6,_0x35acea){if(_0x16f98e['user']){_0x35acea();}else{return db['ChatInteraction'][_0xdb94('0x2e')]({'where':{'id':_0x16f98e[_0xdb94('0x2f')]['id']},'attributes':['id','closed',_0xdb94('0x30')],'raw':!![]})[_0xdb94('0x31')](function(_0x53fea1){if(_0x53fea1&&_0x53fea1['closed']){return _0x1160f6[_0xdb94('0x32')](_0x53fea1[_0xdb94('0x30')]==='unmanaged'?0x195:0x193)[_0xdb94('0x33')]({'message':_0x53fea1[_0xdb94('0x30')]===_0xdb94('0x34')?'Unmanaged.':_0xdb94('0x35')});}else{_0x35acea();}})[_0xdb94('0x36')](function(_0x25c6bd){_0x35acea(_0x25c6bd);});}});};exports[_0xdb94('0x2d')]=function isAuthenticated(_0x28a8fa){return compose()[_0xdb94('0x37')](function(_0x2acab3,_0x345479,_0x46beed){var _0x74c341;if(_0x2acab3[_0xdb94('0x38')][_0xdb94('0x39')]){if(_[_0xdb94('0x3a')](_0x2acab3[_0xdb94('0x38')][_0xdb94('0x39')],_0xdb94('0x3b'))){var _0x535263=basicAuth(_0x2acab3);db[_0xdb94('0x3c')][_0xdb94('0x3d')]({'where':{'name':_0x535263[_0xdb94('0xb')]}})['then'](function(_0x242251){if(!_0x242251||!_0x242251[_0xdb94('0x3e')](_0x535263[_0xdb94('0x3f')])){return _0x345479[_0xdb94('0x32')](0x191)['json']({'message':_0xdb94('0x40')});}_0x2acab3[_0xdb94('0x41')]={'id':_0x242251['id']};_0x46beed();})['catch'](function(_0x108781){_0x46beed(_0x108781);});}else if(_[_0xdb94('0x3a')](_0x2acab3[_0xdb94('0x38')][_0xdb94('0x39')],_0xdb94('0x42'))){validateJwt(_0x2acab3,_0x345479,_0x46beed);}else{if(_0x28a8fa){_0x46beed();}else{return _0x345479['status'](0x193)['json']({'message':_0xdb94('0x43')});}}}else if(_0x2acab3[_0xdb94('0x44')][_0xdb94('0x45')]){try{var _0x2944c7={'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0xdb94('0x46')]()};verifyJwt(_0x2acab3['query']['apikey'],_0x2944c7)['then'](function(_0x3de672){return db['User']['find']({'where':{'id':_0x3de672['sub']}})[_0xdb94('0x31')](function(_0x376663){_0x74c341=_0x376663;return db[_0xdb94('0x47')][_0xdb94('0x2e')]({'where':{'id':0x1},'attributes':[_0xdb94('0x48'),_0xdb94('0x49')],'raw':!![]});})['then'](function(_0x28667d){if(!_0x74c341||!_[_0xdb94('0x4a')](_0x74c341['apiKeyNonce'],_0x3de672[_0xdb94('0x4b')])){return _0x345479['status'](0x191)['json']({'message':_0xdb94('0x4c')});}if(_0x74c341[_0xdb94('0x4d')]){return _0x345479[_0xdb94('0x32')](0x191)[_0xdb94('0x33')]({'message':_0xdb94('0x4e')});}if(_0x74c341['blocked']){if(_0x28667d[_0xdb94('0x49')]>0x0){if(moment(_0x74c341[_0xdb94('0x4f')])['add'](_0x28667d[_0xdb94('0x49')],_0xdb94('0x50'))>moment()){return _0x345479['status'](0x191)[_0xdb94('0x33')]({'message':_0xdb94('0x4e')});}}else{return _0x345479['status'](0x191)[_0xdb94('0x33')]({'message':_0xdb94('0x4e')});}}_0x2acab3[_0xdb94('0x41')]={'id':_0x74c341['id']};_0x46beed();});})[_0xdb94('0x36')](function(){return _0x345479['status'](0x191)['json']({'message':_0xdb94('0x4e')});});}catch(_0x5027e4){_0x46beed(_0x5027e4);}}else if(_0x28a8fa){_0x46beed();}else{return _0x345479[_0xdb94('0x32')](0x193)[_0xdb94('0x33')]({'message':_0xdb94('0x43')});}})[_0xdb94('0x37')](function(_0x2bbc1e,_0x469851,_0x377035){if(_0x2bbc1e[_0xdb94('0x41')]){db[_0xdb94('0x3c')][_0xdb94('0x3d')]({'where':{'id':_0x2bbc1e[_0xdb94('0x41')]['id']},'attributes':userAttributes})[_0xdb94('0x31')](function(_0x3d7967){if(!_0x3d7967){return _0x469851[_0xdb94('0x32')](0x194)['json']({'message':_0xdb94('0x51')});}_0x2bbc1e[_0xdb94('0x41')]=_0x3d7967;_0x377035();})['catch'](function(_0x538007){_0x377035(_0x538007);});}else if(_0x28a8fa){_0x377035();}else{return _0x469851[_0xdb94('0x32')](0x194)[_0xdb94('0x33')]({'message':_0xdb94('0x52')});}});};exports[_0xdb94('0x53')]=function canUpdate(){return compose()[_0xdb94('0x37')](function(_0x4002e8,_0x4823f7,_0x4b1563){return licenseUtil[_0xdb94('0x54')]()[_0xdb94('0x31')](function(_0x4a43f2){if(_0x4a43f2[_0xdb94('0x55')]){_0x4b1563();}else{return _0x4823f7[_0xdb94('0x32')](0x193)['json']({'message':_0xdb94('0x56')});}})[_0xdb94('0x36')](function(_0x54fc62){_0x4b1563(_0x54fc62);});});};exports['isMiddleware']=function(_0x4070bb,_0x113bf1,_0x6ad513){_0x4070bb['isMiddleware']=!![];return _0x6ad513();};exports[_0xdb94('0x57')]=function signToken(_0x558634){return signJwt(_0x558634);};exports[_0xdb94('0x58')]=function(_0x4d3195,_0x1a4832){if(!_0x4d3195[_0xdb94('0x41')]){return _0x1a4832[_0xdb94('0x32')](0x194)[_0xdb94('0x33')]({'message':_0xdb94('0x59')});}var _0x30f2bc={'payload':{'id':_0x4d3195[_0xdb94('0x41')]['id'],'role':_0x4d3195[_0xdb94('0x41')][_0xdb94('0x5a')]},'options':{'expiresIn':0x15180}};return signJwt(_0x30f2bc)[_0xdb94('0x31')](function(_0x5bb579){_0x1a4832[_0xdb94('0x5b')](_0xdb94('0x5c'),_0x5bb579);_0x1a4832[_0xdb94('0x5d')](_0xdb94('0x5e'));})[_0xdb94('0x36')](function(_0x2fba59){return _0x1a4832['status'](0x1f4)['send'](_0x2fba59);});};exports['retrieveApiKey']=function(_0x2cd8c9){if(_[_0xdb94('0x5f')](_0x2cd8c9[_0xdb94('0x60')])||_[_0xdb94('0x5f')](_0x2cd8c9[_0xdb94('0x61')])){return null;}else{return createJwt(_0x2cd8c9);}};exports[_0xdb94('0x62')]=function(_0x378f3a){_0x378f3a[_0xdb94('0x60')]=generateNonce();_0x378f3a[_0xdb94('0x61')]=generateIssuedAt();return createJwt(_0x378f3a);};exports[_0xdb94('0x63')]=function(_0x49da34,_0x58e0b5){var _0x21825a=_0x49da34[_0xdb94('0x44')]['apikey'];if(_0x21825a){var _0x33c871={'nonce':_0x58e0b5[_0xdb94('0x60')],'iat':_0x58e0b5[_0xdb94('0x61')],'audience':hardwareConf[_0xdb94('0x46')](),'issuer':hardwareConf['getUuid']()};return verifyJwt(_0x21825a,_0x33c871)[_0xdb94('0x31')](function(){return generateApiKey(_0x58e0b5);});}else{throw{'message':_0xdb94('0x64')};}};exports['validatePasswordPattern']=function(_0x190a94){var _0x4d59c8=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x4d59c8['test'](_0x190a94))throw new db['Sequelize'][(_0xdb94('0x65'))]('The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.');return;};exports[_0xdb94('0x66')]=function(_0x368615,_0x3289d0,_0x25e265){var _0x129fa0=encryptor[_0xdb94('0x67')](_0x3289d0)['split'](',');for(var _0x5113c5=0x0;_0x5113c5<_0x25e265;_0x5113c5++){if(!_0x129fa0[_0x5113c5])break;if(_0x368615[_0xdb94('0x68')]()===_0x129fa0[_0x5113c5][_0xdb94('0x68')]()){var _0x207576=util[_0xdb94('0x69')](_0xdb94('0x6a'),_0x25e265);if(_0x25e265===0x1){_0x207576=_0xdb94('0x6b');}throw new db[(_0xdb94('0x6c'))][(_0xdb94('0x65'))](_0x207576);}}return;};exports[_0xdb94('0x6d')]=function(_0x182e79,_0x70d245){var _0x46e460=_0x70d245?encryptor[_0xdb94('0x67')](_0x70d245)[_0xdb94('0x6e')](','):[];if(_0x46e460[_0xdb94('0x6f')]===0x5){_0x46e460[_0xdb94('0x70')](-0x1,0x1);}_0x46e460[_0xdb94('0x71')](_0x182e79);return encryptor['encryptString'](_0x46e460[_0xdb94('0x72')](','));};function signJwt(_0xdfc6ec){var _0x3a27db=BPromise[_0xdb94('0x73')](jwt[_0xdb94('0x74')],{'context':jwt});var _0x543e0d=_0xdfc6ec[_0xdb94('0x75')]||config[_0xdb94('0x8')][_0xdb94('0x9')];return new BPromise(function(_0xfef2ee,_0x510775){_0x3a27db(_0xdfc6ec[_0xdb94('0x76')],_0x543e0d,_0xdfc6ec[_0xdb94('0x77')])[_0xdb94('0x31')](function(_0x50ab58){_0xfef2ee(_0x50ab58);})[_0xdb94('0x36')](function(_0x598b49){_0x510775(_0x598b49);});});}function verifyJwt(_0x2c33c8,_0x143e81,_0x31bb8b){var _0x4eeec9=BPromise[_0xdb94('0x73')](jwt['verify'],{'context':jwt});var _0x3bdb5e=_0x31bb8b||config['secrets']['session'];return new BPromise(function(_0x4a964e,_0x14d0d4){_0x4eeec9(_0x2c33c8,_0x3bdb5e,_0x143e81)[_0xdb94('0x31')](function(_0x53f149){_0x4a964e(_0x53f149);})['catch'](function(_0x2e1aac){_0x14d0d4(_0x2e1aac);});});}function generateNonce(){return crypto[_0xdb94('0x78')](0x10)[_0xdb94('0x79')](_0xdb94('0x7a'));}function generateIssuedAt(){return Math[_0xdb94('0x7b')](Date['now']()/0x3e8)['toString']();}function createJwt(_0x4d2c0b){var _0x50321c={'payload':{'iat':_0x4d2c0b[_0xdb94('0x61')],'nonce':_0x4d2c0b['apiKeyNonce']},'options':{'algorithm':_0xdb94('0x7c'),'subject':_0x4d2c0b['id'][_0xdb94('0x79')](),'issuer':hardwareConf[_0xdb94('0x46')](),'audience':hardwareConf['getUuid']()}};return signJwt(_0x50321c)[_0xdb94('0x31')](function(_0x4cc45a){return{'iat':_0x4d2c0b[_0xdb94('0x61')],'nonce':_0x4d2c0b['apiKeyNonce'],'token':_0x4cc45a};});}
\ No newline at end of file
index 2c8aa1d..8cf70b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfa7=['secret','utf8','base64','decryptString','bluebird','lodash','../../config/environment','../../config/logger','app','secrets','session','aes-256-ctr','aes192','encrypt','algorithm','join','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','indexOf','hasOwnProperty','createWriteStream','createCipher','update','binary','write','end','final','close','unlink','decryptFile','createReadStream','createDecipher','data','encryptString'];(function(_0xe3de60,_0x21bb8b){var _0xe37aa3=function(_0x8b26b8){while(--_0x8b26b8){_0xe3de60['push'](_0xe3de60['shift']());}};_0xe37aa3(++_0x21bb8b);}(_0xbfa7,0x1d8));var _0x7bfa=function(_0x3968ec,_0x496c76){_0x3968ec=_0x3968ec-0x0;var _0x3299b8=_0xbfa7[_0x3968ec];return _0x3299b8;};'use strict';var crypto=require('crypto');var fs=require('fs');var BPromise=require(_0x7bfa('0x0'));var _=require(_0x7bfa('0x1'));var config=require(_0x7bfa('0x2'));var logger=require(_0x7bfa('0x3'))(_0x7bfa('0x4'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x7bfa('0x5')][_0x7bfa('0x6')],'algorithm':_0x7bfa('0x7')};const fileOptions={'algorithm':_0x7bfa('0x8')};if(config[_0x7bfa('0x9')]&&config[_0x7bfa('0x9')][_0x7bfa('0xa')]){var isSupported=isAlgorithmSupported(config['encrypt']['algorithm']);if(isSupported){fileOptions[_0x7bfa('0xa')]=config[_0x7bfa('0x9')][_0x7bfa('0xa')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x7bfa('0xb')](',\x20');logger['error'](config['encrypt'][_0x7bfa('0xa')],_0x7bfa('0xc'),supportedAlgorithms);}}function isASupportedCipher(_0x4f013b){return AES_SUPPORTED_RX[_0x7bfa('0xd')](_0x4f013b);}function getSupportedCiphers(){return crypto[_0x7bfa('0xe')]()[_0x7bfa('0xf')](isASupportedCipher);}function isAlgorithmSupported(_0x286be2){return getSupportedCiphers()[_0x7bfa('0x10')](_0x286be2)>-0x1;}function combineOptions(_0x2abdfd){var _0x284248={};for(var _0x88fc24 in fileOptions){if(fileOptions[_0x7bfa('0x11')](_0x88fc24)){_0x284248[_0x88fc24]=fileOptions[_0x88fc24];}}if(_0x2abdfd){for(var _0x48928e in _0x2abdfd){if(_0x2abdfd[_0x7bfa('0x11')](_0x48928e)){_0x284248[_0x48928e]=_0x2abdfd[_0x48928e];}}}return _0x284248;}exports['encryptFile']=function(_0x310c6d,_0x4bf12a,_0x44a495,_0x427604){return new BPromise(function(_0xabd8f8,_0x24f86a){_0x427604=combineOptions(_0x427604);var _0x1e8e73=new Buffer(_0x44a495);var _0x5ad56f=fs['createReadStream'](_0x310c6d);var _0x4dda9f=fs[_0x7bfa('0x12')](_0x4bf12a);var _0x526853=crypto[_0x7bfa('0x13')](_0x427604[_0x7bfa('0xa')],_0x1e8e73);_0x5ad56f['on']('data',function(_0x2cb10c){var _0x4f6c8f=new Buffer(_0x526853[_0x7bfa('0x14')](_0x2cb10c),_0x7bfa('0x15'));_0x4dda9f[_0x7bfa('0x16')](_0x4f6c8f);});_0x5ad56f['on'](_0x7bfa('0x17'),function(){try{var _0x1d2f4e=new Buffer(_0x526853[_0x7bfa('0x18')](_0x7bfa('0x15')),_0x7bfa('0x15'));_0x4dda9f[_0x7bfa('0x16')](_0x1d2f4e);_0x4dda9f['end']();_0x4dda9f['on'](_0x7bfa('0x19'),function(){return _0xabd8f8(_0x4bf12a);});}catch(_0x17068d){fs[_0x7bfa('0x1a')](_0x4bf12a);return _0x24f86a(_0x17068d);}});});};exports[_0x7bfa('0x1b')]=function(_0xbae8ef,_0x121ec7,_0xf2b5c9,_0x1b1b01){return new BPromise(function(_0x336735,_0x4d6ca8){_0x1b1b01=combineOptions(_0x1b1b01);var _0x5bd42c=new Buffer(_0xf2b5c9);var _0xbac005=fs[_0x7bfa('0x1c')](_0xbae8ef);var _0x3c9d72=fs[_0x7bfa('0x12')](_0x121ec7);var _0x128e3e=crypto[_0x7bfa('0x1d')](_0x1b1b01[_0x7bfa('0xa')],_0x5bd42c);_0xbac005['on'](_0x7bfa('0x1e'),function(_0x4b60cd){var _0x1221cd=new Buffer(_0x128e3e[_0x7bfa('0x14')](_0x4b60cd),_0x7bfa('0x15'));_0x3c9d72[_0x7bfa('0x16')](_0x1221cd);});_0xbac005['on'](_0x7bfa('0x17'),function(){try{var _0x2bb45d=new Buffer(_0x128e3e[_0x7bfa('0x18')](_0x7bfa('0x15')),_0x7bfa('0x15'));_0x3c9d72[_0x7bfa('0x16')](_0x2bb45d);_0x3c9d72[_0x7bfa('0x17')]();_0x3c9d72['on']('close',function(){return _0x336735(_0x121ec7);});}catch(_0x4b0efc){fs[_0x7bfa('0x1a')](_0x121ec7);return _0x4d6ca8(_0x4b0efc);}});});};exports[_0x7bfa('0x1f')]=function(_0x1fc379,_0x1aa141,_0x53b1f5){var _0xc193b=_0x53b1f5||stringOptions['algorithm'];var _0x2caf4c=_0x1aa141||stringOptions[_0x7bfa('0x20')];var _0x1cae24=crypto[_0x7bfa('0x13')](_0xc193b,_0x2caf4c);var _0x13eef6=_0x1cae24['update'](_0x1fc379,_0x7bfa('0x21'),_0x7bfa('0x22'));_0x13eef6+=_0x1cae24[_0x7bfa('0x18')]('base64');return _0x13eef6;};exports[_0x7bfa('0x23')]=function(_0x1dae4a,_0x4517d8,_0x3b0d4a){var _0x536696=_0x3b0d4a||stringOptions[_0x7bfa('0xa')];var _0x53bd94=_0x4517d8||stringOptions[_0x7bfa('0x20')];var _0x45d6ba=crypto[_0x7bfa('0x1d')](_0x536696,_0x53bd94);var _0x241e57=_0x45d6ba[_0x7bfa('0x14')](_0x1dae4a,'base64',_0x7bfa('0x21'));_0x241e57+=_0x45d6ba[_0x7bfa('0x18')]('utf8');return _0x241e57;};
\ No newline at end of file
+var _0x36f7=['close','unlink','encryptString','utf8','base64','decryptString','secret','crypto','lodash','../../config/environment','../../config/logger','app','secrets','aes-256-ctr','encrypt','algorithm','join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','getCiphers','indexOf','hasOwnProperty','encryptFile','createWriteStream','createCipher','update','binary','end','final','write','decryptFile','createReadStream','createDecipher'];(function(_0x48f791,_0x57dbd7){var _0x5ec5ea=function(_0x1b8718){while(--_0x1b8718){_0x48f791['push'](_0x48f791['shift']());}};_0x5ec5ea(++_0x57dbd7);}(_0x36f7,0x8b));var _0x736f=function(_0x2fdaa0,_0x25ad1a){_0x2fdaa0=_0x2fdaa0-0x0;var _0x3b8f11=_0x36f7[_0x2fdaa0];return _0x3b8f11;};'use strict';var crypto=require(_0x736f('0x0'));var fs=require('fs');var BPromise=require('bluebird');var _=require(_0x736f('0x1'));var config=require(_0x736f('0x2'));var logger=require(_0x736f('0x3'))(_0x736f('0x4'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x736f('0x5')]['session'],'algorithm':_0x736f('0x6')};const fileOptions={'algorithm':'aes192'};if(config[_0x736f('0x7')]&&config['encrypt'][_0x736f('0x8')]){var isSupported=isAlgorithmSupported(config[_0x736f('0x7')]['algorithm']);if(isSupported){fileOptions[_0x736f('0x8')]=config[_0x736f('0x7')][_0x736f('0x8')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x736f('0x9')](',\x20');logger[_0x736f('0xa')](config[_0x736f('0x7')][_0x736f('0x8')],_0x736f('0xb'),supportedAlgorithms);}}function isASupportedCipher(_0xaa0d0f){return AES_SUPPORTED_RX['test'](_0xaa0d0f);}function getSupportedCiphers(){return crypto[_0x736f('0xc')]()['filter'](isASupportedCipher);}function isAlgorithmSupported(_0x80b7b3){return getSupportedCiphers()[_0x736f('0xd')](_0x80b7b3)>-0x1;}function combineOptions(_0xaad981){var _0x99ea5e={};for(var _0xdc5e94 in fileOptions){if(fileOptions[_0x736f('0xe')](_0xdc5e94)){_0x99ea5e[_0xdc5e94]=fileOptions[_0xdc5e94];}}if(_0xaad981){for(var _0x457e4f in _0xaad981){if(_0xaad981[_0x736f('0xe')](_0x457e4f)){_0x99ea5e[_0x457e4f]=_0xaad981[_0x457e4f];}}}return _0x99ea5e;}exports[_0x736f('0xf')]=function(_0x5d9338,_0x32cc3b,_0x8e7e2a,_0x364669){return new BPromise(function(_0x3302ac,_0x1b98ed){_0x364669=combineOptions(_0x364669);var _0x4c4227=new Buffer(_0x8e7e2a);var _0x31e63d=fs['createReadStream'](_0x5d9338);var _0x38c243=fs[_0x736f('0x10')](_0x32cc3b);var _0x50a6fc=crypto[_0x736f('0x11')](_0x364669[_0x736f('0x8')],_0x4c4227);_0x31e63d['on']('data',function(_0x2a0de7){var _0x51498e=new Buffer(_0x50a6fc[_0x736f('0x12')](_0x2a0de7),_0x736f('0x13'));_0x38c243['write'](_0x51498e);});_0x31e63d['on'](_0x736f('0x14'),function(){try{var _0x1b7a72=new Buffer(_0x50a6fc[_0x736f('0x15')](_0x736f('0x13')),_0x736f('0x13'));_0x38c243[_0x736f('0x16')](_0x1b7a72);_0x38c243[_0x736f('0x14')]();_0x38c243['on']('close',function(){return _0x3302ac(_0x32cc3b);});}catch(_0x519789){fs['unlink'](_0x32cc3b);return _0x1b98ed(_0x519789);}});});};exports[_0x736f('0x17')]=function(_0x25b181,_0x194393,_0x172bfb,_0x1c0c09){return new BPromise(function(_0x3e08ea,_0x361590){_0x1c0c09=combineOptions(_0x1c0c09);var _0x2a752e=new Buffer(_0x172bfb);var _0x35c103=fs[_0x736f('0x18')](_0x25b181);var _0x151f69=fs['createWriteStream'](_0x194393);var _0x263f61=crypto[_0x736f('0x19')](_0x1c0c09[_0x736f('0x8')],_0x2a752e);_0x35c103['on']('data',function(_0x35ce27){var _0xbf8791=new Buffer(_0x263f61['update'](_0x35ce27),_0x736f('0x13'));_0x151f69[_0x736f('0x16')](_0xbf8791);});_0x35c103['on'](_0x736f('0x14'),function(){try{var _0xe20639=new Buffer(_0x263f61['final'](_0x736f('0x13')),_0x736f('0x13'));_0x151f69[_0x736f('0x16')](_0xe20639);_0x151f69[_0x736f('0x14')]();_0x151f69['on'](_0x736f('0x1a'),function(){return _0x3e08ea(_0x194393);});}catch(_0x348b85){fs[_0x736f('0x1b')](_0x194393);return _0x361590(_0x348b85);}});});};exports[_0x736f('0x1c')]=function(_0x297855,_0x5bc38a,_0x1e3b99){var _0x4795ff=_0x1e3b99||stringOptions['algorithm'];var _0x18862a=_0x5bc38a||stringOptions['secret'];var _0x340dbb=crypto[_0x736f('0x11')](_0x4795ff,_0x18862a);var _0x37910e=_0x340dbb[_0x736f('0x12')](_0x297855,_0x736f('0x1d'),_0x736f('0x1e'));_0x37910e+=_0x340dbb[_0x736f('0x15')](_0x736f('0x1e'));return _0x37910e;};exports[_0x736f('0x1f')]=function(_0x359970,_0x43d0e1,_0x12fe88){var _0x33db1f=_0x12fe88||stringOptions[_0x736f('0x8')];var _0x3f86ba=_0x43d0e1||stringOptions[_0x736f('0x20')];var _0x4e4b9e=crypto[_0x736f('0x19')](_0x33db1f,_0x3f86ba);var _0x23f4e9=_0x4e4b9e[_0x736f('0x12')](_0x359970,'base64',_0x736f('0x1d'));_0x23f4e9+=_0x4e4b9e[_0x736f('0x15')](_0x736f('0x1d'));return _0x23f4e9;};
\ No newline at end of file
index 1d96d64..4e6dff6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4227=['analytics','argv','savename','AnalyticExtractedReport','update','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','splitSizeCsv','then','query','QueryTypes','Empty','length','split','num','push','%s\x20limit\x20%d\x20OFFSET\x20%d','sequelize','dirname','basename','.csv','existsSync','mkdirSync','join','each','%s%d.%s','csv','%s.%s','writeFileSync','info','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','Failed','finally','exit','util','to-csv','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger'];(function(_0x19fbac,_0x4478ed){var _0x309b41=function(_0x1f3d6c){while(--_0x1f3d6c){_0x19fbac['push'](_0x19fbac['shift']());}};_0x309b41(++_0x4478ed);}(_0x4227,0x89));var _0x7422=function(_0x4922c4,_0x5c17fc){_0x4922c4=_0x4922c4-0x0;var _0x320b3c=_0x4227[_0x4922c4];return _0x320b3c;};'use strict';var util=require(_0x7422('0x0'));var path=require('path');var _=require('lodash');var csv=require(_0x7422('0x1'));var fs=require('fs');var BPromise=require('bluebird');var zipdir=require(_0x7422('0x2'));var rimraf=require(_0x7422('0x3'));var db=require(_0x7422('0x4'))['db'];var dbH=require('../../mysqldb')[_0x7422('0x5')];var logger=require(_0x7422('0x6'))(_0x7422('0x7'));var EXTRACTED_REPORT_ID=Number(process[_0x7422('0x8')][0x2]);var QUERY=process[_0x7422('0x8')][0x3];var PATH=process[_0x7422('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0xe99299,_0x45ca1a){var _0x12965e={'status':_0xe99299};var _0x599d78={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x45ca1a){_0x12965e[_0x7422('0x9')]=_0x45ca1a;}return db[_0x7422('0xa')][_0x7422('0xb')](_0x12965e,_0x599d78);}function main(){var _0x511340=0x1388;var _0x1603ee;logger['info'](util[_0x7422('0xc')](_0x7422('0xd'),EXTRACTED_REPORT_ID,_0x7422('0xe')));return db[_0x7422('0xf')][_0x7422('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x7422('0x11')]})[_0x7422('0x12')](function(_0x575c47){if(_0x575c47){_0x1603ee=_0x575c47;_0x511340=_0x1603ee[_0x7422('0x11')]||0x1388;}})[_0x7422('0x12')](function(){return dbH['sequelize'][_0x7422('0x13')](util[_0x7422('0xc')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH['sequelize'][_0x7422('0x14')]['SELECT']});})[_0x7422('0x12')](function(_0x788829){if(!_0x788829[0x0]['num']){return analyticExtractedReport(_0x7422('0x15'));}var _0x39c31c=[];var _0x31c3ec=0x0;var _0x1d1ac3=!![];if(_0x788829&&_0x788829[_0x7422('0x16')]){var _0x25401d=_0x788829[0x0]['num']%(_0x31c3ec+_0x511340);if(_0x1603ee[_0x7422('0x17')]){for(;_0x1d1ac3;_0x31c3ec+=_0x511340,_0x25401d=_0x788829[0x0][_0x7422('0x18')]%(_0x31c3ec+_0x511340)){if(_0x25401d==0x0||_0x25401d==_0x788829[0x0][_0x7422('0x18')]){_0x1d1ac3=![];}_0x39c31c[_0x7422('0x19')](dbH['sequelize'][_0x7422('0x13')](util['format'](_0x7422('0x1a'),QUERY,_0x511340,_0x31c3ec),{'type':dbH[_0x7422('0x1b')][_0x7422('0x14')]['SELECT']}));}}else{_0x39c31c[_0x7422('0x19')](dbH[_0x7422('0x1b')][_0x7422('0x13')](QUERY,{'type':dbH[_0x7422('0x1b')]['QueryTypes']['SELECT']}));}}var _0x2fedd2=path[_0x7422('0x1c')](PATH);var _0x20c1e3=path[_0x7422('0x1d')](PATH,_0x7422('0x1e'));var _0x35e2b0=_0x1603ee[_0x7422('0x17')]&&_0x39c31c['length']>0x1;var _0x24ce62=[];if(!fs[_0x7422('0x1f')](path['join'](_0x2fedd2,_0x20c1e3))&&_0x35e2b0){fs[_0x7422('0x20')](path[_0x7422('0x21')](_0x2fedd2,_0x20c1e3));}return BPromise[_0x7422('0x22')](_0x39c31c,function(_0x3eeb9c){_0x24ce62['push'](_0x3eeb9c);})[_0x7422('0x12')](function(){for(var _0x2eed9f=0x0;_0x2eed9f<_0x24ce62[_0x7422('0x16')];_0x2eed9f+=0x1){var _0x2dd10f;var _0x3438d1=_0x24ce62[_0x2eed9f];if(_0x35e2b0){_0x2dd10f=path['join'](_0x2fedd2,_0x20c1e3,util[_0x7422('0xc')](_0x7422('0x23'),_0x20c1e3,_0x2eed9f,_0x7422('0x24')));}else{_0x2dd10f=path[_0x7422('0x21')](_0x2fedd2,util['format'](_0x7422('0x25'),_0x20c1e3,_0x7422('0x24')));}fs[_0x7422('0x26')](_0x2dd10f,csv(_0x3438d1));}})[_0x7422('0x12')](function(){if(_0x35e2b0){zipdir(path['join'](_0x2fedd2,_0x20c1e3),{'saveTo':path[_0x7422('0x21')](_0x2fedd2,util[_0x7422('0xc')]('%s.%s',_0x20c1e3,'zip'))},function(_0x2baac6,_0x2fb125){});rimraf(path['join'](_0x2fedd2,_0x20c1e3),function(){});}})[_0x7422('0x12')](function(){logger[_0x7422('0x27')](util[_0x7422('0xc')](_0x7422('0x28'),EXTRACTED_REPORT_ID,_0x7422('0xe')));return analyticExtractedReport(_0x7422('0x29'),_0x35e2b0?util[_0x7422('0xc')](_0x7422('0x25'),_0x20c1e3,_0x35e2b0?_0x7422('0x2a'):_0x7422('0x24')):null);});})[_0x7422('0x2b')](function(_0x47e57b){logger[_0x7422('0x27')](util[_0x7422('0xc')](_0x7422('0x2c'),EXTRACTED_REPORT_ID,_0x7422('0xe')),util['inspect'](_0x47e57b,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x7422('0x2d'));})[_0x7422('0x2e')](function(){process[_0x7422('0x2f')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x97c1=['CSV','Setting','find','split','then','splitSizeCsv','query','format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','sequelize','QueryTypes','SELECT','num','Empty','length','%s\x20limit\x20%d\x20OFFSET\x20%d','push','dirname','basename','.csv','existsSync','join','mkdirSync','each','%s%d.%s','csv','%s.%s','writeFileSync','Completed','zip','catch','inspect','Failed','finally','exit','util','path','to-csv','rimraf','../../mysqldb','dbH','../../config/logger','argv','savename','update','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format'];(function(_0x1af655,_0x28b928){var _0x29da01=function(_0x508209){while(--_0x508209){_0x1af655['push'](_0x1af655['shift']());}};_0x29da01(++_0x28b928);}(_0x97c1,0xdf));var _0x197c=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x97c1[_0x4a9fb1];return _0x348672;};'use strict';var util=require(_0x197c('0x0'));var path=require(_0x197c('0x1'));var _=require('lodash');var csv=require(_0x197c('0x2'));var fs=require('fs');var BPromise=require('bluebird');var zipdir=require('zip-dir');var rimraf=require(_0x197c('0x3'));var db=require(_0x197c('0x4'))['db'];var dbH=require(_0x197c('0x4'))[_0x197c('0x5')];var logger=require(_0x197c('0x6'))('analytics');var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x197c('0x7')][0x3];var PATH=process[_0x197c('0x7')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x60fab2,_0xfcee35){var _0x5cf5cb={'status':_0x60fab2};var _0x5d42c5={'where':{'id':EXTRACTED_REPORT_ID}};if(_0xfcee35){_0x5cf5cb[_0x197c('0x8')]=_0xfcee35;}return db['AnalyticExtractedReport'][_0x197c('0x9')](_0x5cf5cb,_0x5d42c5);}function main(){var _0x3e83e6=0x1388;var _0x853d68;logger[_0x197c('0xa')](util['format'](_0x197c('0xb'),EXTRACTED_REPORT_ID,_0x197c('0xc')));return db[_0x197c('0xd')][_0x197c('0xe')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x197c('0xf'),'splitSizeCsv']})[_0x197c('0x10')](function(_0x668f8){if(_0x668f8){_0x853d68=_0x668f8;_0x3e83e6=_0x853d68[_0x197c('0x11')]||0x1388;}})[_0x197c('0x10')](function(){return dbH['sequelize'][_0x197c('0x12')](util[_0x197c('0x13')](_0x197c('0x14'),QUERY),{'type':dbH[_0x197c('0x15')][_0x197c('0x16')][_0x197c('0x17')]});})['then'](function(_0x5194c3){if(!_0x5194c3[0x0][_0x197c('0x18')]){return analyticExtractedReport(_0x197c('0x19'));}var _0x2083d4=[];var _0x24901f=0x0;var _0x33f8d3=!![];if(_0x5194c3&&_0x5194c3[_0x197c('0x1a')]){var _0x437050=_0x5194c3[0x0][_0x197c('0x18')]%(_0x24901f+_0x3e83e6);if(_0x853d68['split']){for(;_0x33f8d3;_0x24901f+=_0x3e83e6,_0x437050=_0x5194c3[0x0][_0x197c('0x18')]%(_0x24901f+_0x3e83e6)){if(_0x437050==0x0||_0x437050==_0x5194c3[0x0]['num']){_0x33f8d3=![];}_0x2083d4['push'](dbH[_0x197c('0x15')][_0x197c('0x12')](util[_0x197c('0x13')](_0x197c('0x1b'),QUERY,_0x3e83e6,_0x24901f),{'type':dbH['sequelize'][_0x197c('0x16')][_0x197c('0x17')]}));}}else{_0x2083d4[_0x197c('0x1c')](dbH['sequelize'][_0x197c('0x12')](QUERY,{'type':dbH[_0x197c('0x15')][_0x197c('0x16')][_0x197c('0x17')]}));}}var _0x46801c=path[_0x197c('0x1d')](PATH);var _0x362bbf=path[_0x197c('0x1e')](PATH,_0x197c('0x1f'));var _0x3dfb7b=_0x853d68[_0x197c('0xf')]&&_0x2083d4[_0x197c('0x1a')]>0x1;var _0x174942=[];if(!fs[_0x197c('0x20')](path[_0x197c('0x21')](_0x46801c,_0x362bbf))&&_0x3dfb7b){fs[_0x197c('0x22')](path['join'](_0x46801c,_0x362bbf));}return BPromise[_0x197c('0x23')](_0x2083d4,function(_0x2911dd){_0x174942[_0x197c('0x1c')](_0x2911dd);})['then'](function(){for(var _0x2c2952=0x0;_0x2c2952<_0x174942[_0x197c('0x1a')];_0x2c2952+=0x1){var _0x4c3337;var _0x5e7bc9=_0x174942[_0x2c2952];if(_0x3dfb7b){_0x4c3337=path[_0x197c('0x21')](_0x46801c,_0x362bbf,util['format'](_0x197c('0x24'),_0x362bbf,_0x2c2952,_0x197c('0x25')));}else{_0x4c3337=path[_0x197c('0x21')](_0x46801c,util[_0x197c('0x13')](_0x197c('0x26'),_0x362bbf,_0x197c('0x25')));}fs[_0x197c('0x27')](_0x4c3337,csv(_0x5e7bc9));}})[_0x197c('0x10')](function(){if(_0x3dfb7b){zipdir(path[_0x197c('0x21')](_0x46801c,_0x362bbf),{'saveTo':path['join'](_0x46801c,util['format']('%s.%s',_0x362bbf,'zip'))},function(_0x5f7425,_0x4c9256){});rimraf(path[_0x197c('0x21')](_0x46801c,_0x362bbf),function(){});}})[_0x197c('0x10')](function(){logger['info'](util[_0x197c('0x13')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x197c('0xc')));return analyticExtractedReport(_0x197c('0x28'),_0x3dfb7b?util[_0x197c('0x13')](_0x197c('0x26'),_0x362bbf,_0x3dfb7b?_0x197c('0x29'):_0x197c('0x25')):null);});})[_0x197c('0x2a')](function(_0x41d792){logger[_0x197c('0xa')](util['format']('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x197c('0xc')),util[_0x197c('0x2b')](_0x41d792,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x197c('0x2c'));})[_0x197c('0x2d')](function(){process[_0x197c('0x2e')](EXIT_CODE);});}main();
\ No newline at end of file
index da027ca..4b495a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a3f=['util','moment','html-to-pdfmake','pdfmake/src/printer','rimraf','jsdom','JSDOM','window','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','map','tableHeader','toString','value','fill','length','body','concat','chunk','keys','forEach','push','format','name','startDate','endDate','header','pageBreak','before','margin','landscape','\x20/\x20','footer','right','num','Empty','dirname','basename','join','%s.%s','find','split','then','splitSizePdf','query','%s\x20limit\x20%d\x20OFFSET\x20%d','sequelize','QueryTypes','SELECT','existsSync','all','createPdfKitDocument','%s%d.%s','zip','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','pdf','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','PDF','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','finally','/fonts/arial-regular.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','YYYY-MM-DD','Arial','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','finish','error','end','path','lodash'];(function(_0x4cfca2,_0x243488){var _0x23d42a=function(_0x5509a4){while(--_0x5509a4){_0x4cfca2['push'](_0x4cfca2['shift']());}};_0x23d42a(++_0x243488);}(_0x6a3f,0x104));var _0xf6a3=function(_0x17d7ed,_0x57a9cb){_0x17d7ed=_0x17d7ed-0x0;var _0x1d0add=_0x6a3f[_0x17d7ed];return _0x1d0add;};'use strict';var _=require(_0xf6a3('0x0'));var fs=require('fs');var util=require(_0xf6a3('0x1'));var path=require('path');var moment=require(_0xf6a3('0x2'));var htmlToPdfmake=require(_0xf6a3('0x3'));var PdfPrinter=require(_0xf6a3('0x4'));var zipdir=require('zip-dir');var rimraf=require(_0xf6a3('0x5'));var JSDOM=require(_0xf6a3('0x6'))[_0xf6a3('0x7')];var window=new JSDOM('')[_0xf6a3('0x8')];var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')[_0xf6a3('0x9')];var logger=require(_0xf6a3('0xa'))(_0xf6a3('0xb'));var EXTRACTED_REPORT_ID=Number(process[_0xf6a3('0xc')][0x2]);var QUERY=process[_0xf6a3('0xc')][0x3];var PATH=process['argv'][0x4];var NAME=process['argv'][0x5];var FORMAT=_0xf6a3('0xd');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x16b0f6,_0x27b8b7){var _0xb2f994={'status':_0x16b0f6};var _0x1424f2={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x27b8b7){_0xb2f994[_0xf6a3('0xe')]=_0x27b8b7;}return db[_0xf6a3('0xf')]['update'](_0xb2f994,_0x1424f2);}function getHeaders(_0x3a0f22){return _[_0xf6a3('0x10')](_0x3a0f22,function(_0x4b1710){return{'text':_0x4b1710,'style':_0xf6a3('0x11')};});}function getRows(_0x93861d,_0x4ec536){return _[_0xf6a3('0x10')](_0x4ec536,function(_0x42caf0){return _(_0x42caf0)['pick'](_0x93861d)[_0xf6a3('0x10')](function(_0x263f5b){return _0x263f5b?_[_0xf6a3('0x12')](_0x263f5b):'';})[_0xf6a3('0x13')]();});}function createTable(_0x4765f3,_0x1f4fc0){var _0x1d3716={'widths':_[_0xf6a3('0x14')](Array(_0x4765f3[_0xf6a3('0x15')]),0x91),'heights':function(_0x556c53){return _0x556c53===0x0?'auto':0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x38629c=getHeaders(_0x4765f3);_0x1d3716[_0xf6a3('0x16')]['push'](_0x38629c);var _0x185fc1=getRows(_0x4765f3,_0x1f4fc0);_0x1d3716[_0xf6a3('0x16')]=_0x1d3716[_0xf6a3('0x16')][_0xf6a3('0x17')](_0x185fc1);return _0x1d3716;}function createTables(_0x1cd520){var _0x18565a=[];var _0x4d5b36=_[_0xf6a3('0x18')](Object[_0xf6a3('0x19')](_0x1cd520[0x0]),0x5);_0x4d5b36[_0xf6a3('0x1a')](function(_0x1239eb){_0x18565a[_0xf6a3('0x1b')](createTable(_0x1239eb,_0x1cd520));});return _0x18565a;}function getPDFDocDefinition(_0x4c3ed3){var _0x815c1f=util[_0xf6a3('0x1c')]('Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s',NAME,EXTRACTED_REPORT[_0xf6a3('0x1d')],moment(EXTRACTED_REPORT[_0xf6a3('0x1e')])[_0xf6a3('0x1c')](FORMAT),moment(EXTRACTED_REPORT[_0xf6a3('0x1f')])[_0xf6a3('0x1c')](FORMAT));var _0x1acedd=[];for(var _0xbc93c8=0x0;_0xbc93c8<_0x4c3ed3[_0xf6a3('0x15')];_0xbc93c8++){var _0x549ffa=[];if(_0xbc93c8===0x0){_0x549ffa[_0xf6a3('0x1b')]({'text':_0x815c1f,'style':_0xf6a3('0x20')});}var _0x3bd7d1={'table':_0x4c3ed3[_0xbc93c8]};if(_0xbc93c8>0x0){_0x3bd7d1[_0xf6a3('0x21')]=_0xf6a3('0x22');_0x3bd7d1[_0xf6a3('0x23')]=[0x0,0x46,0x0,0x0];}_0x549ffa[_0xf6a3('0x1b')](_0x3bd7d1);_0x1acedd[_0xf6a3('0x1b')](_0x549ffa);}return{'pageSize':'A4','pageOrientation':_0xf6a3('0x24'),'content':_0x1acedd,'footer':function(_0x43f08e,_0x47f491){return{'text':_0x43f08e['toString']()+_0xf6a3('0x25')+_0x47f491,'style':_0xf6a3('0x26')};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':'black'},'footer':{'alignment':_0xf6a3('0x27'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x411b4e){var _0x3c5f69=0x1388;var _0x4c76d8;if(!_0x411b4e[0x0][_0xf6a3('0x28')]){return analyticExtractedReport(_0xf6a3('0x29'));}var _0x491aaf=[];var _0x427ca5=0x0;var _0x5a9b1f=!![];var _0x1789e0=path[_0xf6a3('0x2a')](PATH);var _0x19a3b9=path[_0xf6a3('0x2b')](PATH,'.pdf');var _0x3e49da=path[_0xf6a3('0x2c')](_0x1789e0,util[_0xf6a3('0x1c')](_0xf6a3('0x2d'),_0x19a3b9,'pdf'));var _0x229fd8=![];return db['Setting'][_0xf6a3('0x2e')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xf6a3('0x2f'),'splitSizePdf']})[_0xf6a3('0x30')](function(_0x15a370){if(_0x15a370){_0x4c76d8=_0x15a370;_0x3c5f69=_0x4c76d8[_0xf6a3('0x31')]||0x3e8;}})[_0xf6a3('0x30')](function(){if(_0x411b4e&&_0x411b4e['length']){var _0x36d2f3=_0x411b4e[0x0][_0xf6a3('0x28')]%(_0x427ca5+_0x3c5f69);if(_0x4c76d8[_0xf6a3('0x2f')]){for(;_0x5a9b1f;_0x427ca5+=_0x3c5f69,_0x36d2f3=_0x411b4e[0x0]['num']%(_0x427ca5+_0x3c5f69)){if(_0x36d2f3==0x0||_0x36d2f3==_0x411b4e[0x0][_0xf6a3('0x28')]){_0x5a9b1f=![];}_0x491aaf[_0xf6a3('0x1b')](dbH['sequelize'][_0xf6a3('0x32')](util[_0xf6a3('0x1c')](_0xf6a3('0x33'),QUERY,_0x3c5f69,_0x427ca5),{'type':dbH[_0xf6a3('0x34')][_0xf6a3('0x35')][_0xf6a3('0x36')]}));}}else{_0x491aaf['push'](dbH[_0xf6a3('0x34')]['query'](QUERY,{'type':dbH[_0xf6a3('0x34')]['QueryTypes'][_0xf6a3('0x36')]}));}}_0x229fd8=_0x4c76d8['split']&&_0x491aaf[_0xf6a3('0x15')]>0x1;if(!fs[_0xf6a3('0x37')](path[_0xf6a3('0x2c')](_0x1789e0,_0x19a3b9))&&_0x229fd8){fs['mkdirSync'](path[_0xf6a3('0x2c')](_0x1789e0,_0x19a3b9));}return Promise[_0xf6a3('0x38')](_0x491aaf);})['then'](function(_0x95f7b4){return createTables(_['flatten'](_0x95f7b4));})['then'](function(_0x2cb85f){var _0x25dd05=getPDFDocDefinition(_0x2cb85f);var _0x417225=getPDFPrinter();var _0x1fdc9d=_0x417225[_0xf6a3('0x39')](_0x25dd05);if(_0x229fd8)_0x3e49da=path[_0xf6a3('0x2c')](_0x1789e0,_0x19a3b9,util['format'](_0xf6a3('0x3a'),_0x19a3b9,index,'pdf'));return writePDFDocument(_0x1fdc9d,_0x3e49da);})[_0xf6a3('0x30')](function(){if(!_0x229fd8)return;zipdir(path[_0xf6a3('0x2c')](_0x1789e0,_0x19a3b9),{'saveTo':path[_0xf6a3('0x2c')](_0x1789e0,util['format'](_0xf6a3('0x2d'),_0x19a3b9,_0xf6a3('0x3b')))},function(_0x22b2b5){if(_0x22b2b5)throw _0x22b2b5;return;});})['then'](function(){if(!_0x229fd8)return;rimraf(path[_0xf6a3('0x2c')](_0x1789e0,_0x19a3b9),function(){});})[_0xf6a3('0x30')](function(){logger[_0xf6a3('0x3c')](util[_0xf6a3('0x1c')](_0xf6a3('0x3d'),EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport(_0xf6a3('0x3e'),_0x229fd8?util['format'](_0xf6a3('0x2d'),_0x19a3b9,_0x229fd8?_0xf6a3('0x3b'):_0xf6a3('0x3f')):null);});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0xf6a3('0x3c')](util[_0xf6a3('0x1c')](_0xf6a3('0x40'),EXTRACTED_REPORT_ID,_0xf6a3('0x41')));return db[_0xf6a3('0xf')][_0xf6a3('0x42')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0xf6a3('0x30')](function(_0x36f1c8){EXTRACTED_REPORT=_0x36f1c8;return dbH['sequelize'][_0xf6a3('0x32')](util[_0xf6a3('0x1c')](_0xf6a3('0x43'),QUERY),{'type':dbH[_0xf6a3('0x34')][_0xf6a3('0x35')][_0xf6a3('0x36')]});})[_0xf6a3('0x30')](extractReport)[_0xf6a3('0x44')](function(_0x10381c){logger['info'](util[_0xf6a3('0x1c')](_0xf6a3('0x45'),EXTRACTED_REPORT_ID,_0xf6a3('0x41')),util[_0xf6a3('0x46')](_0x10381c,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0xf6a3('0x47')](function(){process['exit'](EXIT_CODE);});}main();function getPDFPrinter(){var _0x9c6025=new PdfPrinter({'Arial':{'normal':__dirname+_0xf6a3('0x48'),'bold':__dirname+'/fonts/arial-bold.ttf','italics':__dirname+'/fonts/arial-italic.ttf','bolditalics':__dirname+_0xf6a3('0x49')}});return _0x9c6025;}function getPDFDocDefinitionFromHTML(_0x42da40,_0x511f0d){var _0x245501=util['format'](_0xf6a3('0x4a'),_0x511f0d[_0xf6a3('0x4b')],_0x511f0d['interactionId']);var _0x44fe5e=moment()[_0xf6a3('0x1c')](_0xf6a3('0x4c'))['toString']();var _0xd3a43b=htmlToPdfmake(_0x42da40,{'window':window,'tableAutoSize':!![]});return{'content':[_0xd3a43b],'defaultStyle':{'font':_0xf6a3('0x4d')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0xf6a3('0x4e'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0xf6a3('0x4e'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0xf6a3('0x4e')}},'header':function(){return[{'text':_0xf6a3('0x4f'),'style':_0xf6a3('0x20')}];},'footer':function(_0x2d1d65,_0x1f37c4){return[{'text':util['format'](_0xf6a3('0x50'),_0x245501,_0x2d1d65,_0x1f37c4,_0x44fe5e),'style':'footer'}];}};}function writePDFDocument(_0xf24d4f,_0x484136){return new Promise(function(_0x4f50f8,_0x43515e){var _0x133f73=_0xf24d4f[_0xf6a3('0x51')](fs[_0xf6a3('0x52')](_0x484136));_0x133f73['on'](_0xf6a3('0x53'),function(){_0x4f50f8(_0xf6a3('0x53'));});_0x133f73['on'](_0xf6a3('0x54'),function(_0x58209f){_0x43515e(_0x58209f);});_0xf24d4f[_0xf6a3('0x55')]();});}exports['createPdfFromHTML']=function(_0x366545,_0x196f15){var _0x1863e3=getPDFPrinter();var _0x3a11e4=getPDFDocDefinitionFromHTML(_0x366545,_0x196f15);var _0x15cfb3=_0x1863e3['createPdfKitDocument'](_0x3a11e4);return writePDFDocument(_0x15cfb3,_0x196f15[_0xf6a3('0x56')])['catch'](function(_0x49b3e9){throw _0x49b3e9;});};
\ No newline at end of file
+var _0x5ed0=['flatten','createPdfKitDocument','%s%d.%s','info','CSV','Completed','zip','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','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-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','YYYY-MM-DD','Arial','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','finish','error','end','util','path','pdfmake/src/printer','zip-dir','rimraf','jsdom','JSDOM','window','../../mysqldb','../../config/logger','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map','tableHeader','pick','toString','value','fill','auto','body','push','chunk','keys','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','endDate','format','header','before','margin','\x20/\x20','black','right','num','Empty','dirname','basename','join','%s.%s','find','splitSizePdf','then','split','query','%s\x20limit\x20%d\x20OFFSET\x20%d','sequelize','QueryTypes','SELECT','existsSync','mkdirSync'];(function(_0x55bcc2,_0x5e835d){var _0x473156=function(_0x3cec4c){while(--_0x3cec4c){_0x55bcc2['push'](_0x55bcc2['shift']());}};_0x473156(++_0x5e835d);}(_0x5ed0,0x11e));var _0x05ed=function(_0x1d27b4,_0x3cd317){_0x1d27b4=_0x1d27b4-0x0;var _0x2964b6=_0x5ed0[_0x1d27b4];return _0x2964b6;};'use strict';var _=require('lodash');var fs=require('fs');var util=require(_0x05ed('0x0'));var path=require(_0x05ed('0x1'));var moment=require('moment');var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require(_0x05ed('0x2'));var zipdir=require(_0x05ed('0x3'));var rimraf=require(_0x05ed('0x4'));var JSDOM=require(_0x05ed('0x5'))[_0x05ed('0x6')];var window=new JSDOM('')[_0x05ed('0x7')];var db=require(_0x05ed('0x8'))['db'];var dbH=require('../../mysqldb')['dbH'];var logger=require(_0x05ed('0x9'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x05ed('0xa')][0x2]);var QUERY=process[_0x05ed('0xa')][0x3];var PATH=process[_0x05ed('0xa')][0x4];var NAME=process[_0x05ed('0xa')][0x5];var FORMAT=_0x05ed('0xb');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x210438,_0x110368){var _0x3a236c={'status':_0x210438};var _0x1f6167={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x110368){_0x3a236c[_0x05ed('0xc')]=_0x110368;}return db[_0x05ed('0xd')][_0x05ed('0xe')](_0x3a236c,_0x1f6167);}function getHeaders(_0x3ee734){return _[_0x05ed('0xf')](_0x3ee734,function(_0x356fd3){return{'text':_0x356fd3,'style':_0x05ed('0x10')};});}function getRows(_0x1cbf8e,_0x4eeeb5){return _[_0x05ed('0xf')](_0x4eeeb5,function(_0x118842){return _(_0x118842)[_0x05ed('0x11')](_0x1cbf8e)['map'](function(_0x21365d){return _0x21365d?_[_0x05ed('0x12')](_0x21365d):'';})[_0x05ed('0x13')]();});}function createTable(_0x61759f,_0x2eacbc){var _0x511962={'widths':_[_0x05ed('0x14')](Array(_0x61759f['length']),0x91),'heights':function(_0x5c6c4e){return _0x5c6c4e===0x0?_0x05ed('0x15'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x1e97a5=getHeaders(_0x61759f);_0x511962[_0x05ed('0x16')][_0x05ed('0x17')](_0x1e97a5);var _0x1eda1e=getRows(_0x61759f,_0x2eacbc);_0x511962[_0x05ed('0x16')]=_0x511962[_0x05ed('0x16')]['concat'](_0x1eda1e);return _0x511962;}function createTables(_0x53f034){var _0x5bde81=[];var _0x43f319=_[_0x05ed('0x18')](Object[_0x05ed('0x19')](_0x53f034[0x0]),0x5);_0x43f319['forEach'](function(_0x5a245e){_0x5bde81[_0x05ed('0x17')](createTable(_0x5a245e,_0x53f034));});return _0x5bde81;}function getPDFDocDefinition(_0x21e246){var _0x1328c3=util['format'](_0x05ed('0x1a'),NAME,EXTRACTED_REPORT[_0x05ed('0x1b')],moment(EXTRACTED_REPORT[_0x05ed('0x1c')])['format'](FORMAT),moment(EXTRACTED_REPORT[_0x05ed('0x1d')])[_0x05ed('0x1e')](FORMAT));var _0x15dc86=[];for(var _0xeef25c=0x0;_0xeef25c<_0x21e246['length'];_0xeef25c++){var _0x32f20e=[];if(_0xeef25c===0x0){_0x32f20e[_0x05ed('0x17')]({'text':_0x1328c3,'style':_0x05ed('0x1f')});}var _0x146a70={'table':_0x21e246[_0xeef25c]};if(_0xeef25c>0x0){_0x146a70['pageBreak']=_0x05ed('0x20');_0x146a70[_0x05ed('0x21')]=[0x0,0x46,0x0,0x0];}_0x32f20e[_0x05ed('0x17')](_0x146a70);_0x15dc86['push'](_0x32f20e);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x15dc86,'footer':function(_0x2fee04,_0x64c124){return{'text':_0x2fee04['toString']()+_0x05ed('0x22')+_0x64c124,'style':'footer'};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x05ed('0x23')},'footer':{'alignment':_0x05ed('0x24'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x594eac){var _0x32cfc8=0x1388;var _0xf2f65a;if(!_0x594eac[0x0][_0x05ed('0x25')]){return analyticExtractedReport(_0x05ed('0x26'));}var _0x96505=[];var _0x5d2594=0x0;var _0x29db19=!![];var _0x20ce96=path[_0x05ed('0x27')](PATH);var _0xf29d1e=path[_0x05ed('0x28')](PATH,'.pdf');var _0x115dd3=path[_0x05ed('0x29')](_0x20ce96,util[_0x05ed('0x1e')](_0x05ed('0x2a'),_0xf29d1e,'pdf'));var _0x382e61=![];return db['Setting'][_0x05ed('0x2b')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x05ed('0x2c')]})[_0x05ed('0x2d')](function(_0x53220e){if(_0x53220e){_0xf2f65a=_0x53220e;_0x32cfc8=_0xf2f65a['splitSizePdf']||0x3e8;}})[_0x05ed('0x2d')](function(){if(_0x594eac&&_0x594eac['length']){var _0x54faae=_0x594eac[0x0][_0x05ed('0x25')]%(_0x5d2594+_0x32cfc8);if(_0xf2f65a[_0x05ed('0x2e')]){for(;_0x29db19;_0x5d2594+=_0x32cfc8,_0x54faae=_0x594eac[0x0][_0x05ed('0x25')]%(_0x5d2594+_0x32cfc8)){if(_0x54faae==0x0||_0x54faae==_0x594eac[0x0][_0x05ed('0x25')]){_0x29db19=![];}_0x96505[_0x05ed('0x17')](dbH['sequelize'][_0x05ed('0x2f')](util[_0x05ed('0x1e')](_0x05ed('0x30'),QUERY,_0x32cfc8,_0x5d2594),{'type':dbH[_0x05ed('0x31')][_0x05ed('0x32')]['SELECT']}));}}else{_0x96505[_0x05ed('0x17')](dbH[_0x05ed('0x31')]['query'](QUERY,{'type':dbH[_0x05ed('0x31')][_0x05ed('0x32')][_0x05ed('0x33')]}));}}_0x382e61=_0xf2f65a[_0x05ed('0x2e')]&&_0x96505['length']>0x1;if(!fs[_0x05ed('0x34')](path[_0x05ed('0x29')](_0x20ce96,_0xf29d1e))&&_0x382e61){fs[_0x05ed('0x35')](path['join'](_0x20ce96,_0xf29d1e));}return Promise['all'](_0x96505);})[_0x05ed('0x2d')](function(_0x431d94){return createTables(_[_0x05ed('0x36')](_0x431d94));})[_0x05ed('0x2d')](function(_0x3a42f6){var _0xce6a6f=getPDFDocDefinition(_0x3a42f6);var _0x4a01b3=getPDFPrinter();var _0x2a4391=_0x4a01b3[_0x05ed('0x37')](_0xce6a6f);if(_0x382e61)_0x115dd3=path['join'](_0x20ce96,_0xf29d1e,util[_0x05ed('0x1e')](_0x05ed('0x38'),_0xf29d1e,index,'pdf'));return writePDFDocument(_0x2a4391,_0x115dd3);})[_0x05ed('0x2d')](function(){if(!_0x382e61)return;zipdir(path[_0x05ed('0x29')](_0x20ce96,_0xf29d1e),{'saveTo':path[_0x05ed('0x29')](_0x20ce96,util[_0x05ed('0x1e')](_0x05ed('0x2a'),_0xf29d1e,'zip'))},function(_0x27840a){if(_0x27840a)throw _0x27840a;return;});})['then'](function(){if(!_0x382e61)return;rimraf(path[_0x05ed('0x29')](_0x20ce96,_0xf29d1e),function(){});})['then'](function(){logger[_0x05ed('0x39')](util[_0x05ed('0x1e')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x05ed('0x3a')));return analyticExtractedReport(_0x05ed('0x3b'),_0x382e61?util['format'](_0x05ed('0x2a'),_0xf29d1e,_0x382e61?_0x05ed('0x3c'):'pdf'):null);});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x05ed('0x39')](util[_0x05ed('0x1e')](_0x05ed('0x3d'),EXTRACTED_REPORT_ID,'PDF'));return db[_0x05ed('0xd')][_0x05ed('0x3e')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x05ed('0x2d')](function(_0x58741d){EXTRACTED_REPORT=_0x58741d;return dbH[_0x05ed('0x31')][_0x05ed('0x2f')](util[_0x05ed('0x1e')](_0x05ed('0x3f'),QUERY),{'type':dbH['sequelize']['QueryTypes']['SELECT']});})[_0x05ed('0x2d')](extractReport)[_0x05ed('0x40')](function(_0x49ed08){logger[_0x05ed('0x39')](util[_0x05ed('0x1e')](_0x05ed('0x41'),EXTRACTED_REPORT_ID,'PDF'),util[_0x05ed('0x42')](_0x49ed08,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x05ed('0x43')](function(){process[_0x05ed('0x44')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x38bc37=new PdfPrinter({'Arial':{'normal':__dirname+_0x05ed('0x45'),'bold':__dirname+_0x05ed('0x46'),'italics':__dirname+_0x05ed('0x47'),'bolditalics':__dirname+_0x05ed('0x48')}});return _0x38bc37;}function getPDFDocDefinitionFromHTML(_0x4394f4,_0x2a4caa){var _0x13d46c=util[_0x05ed('0x1e')](_0x05ed('0x49'),_0x2a4caa[_0x05ed('0x4a')],_0x2a4caa['interactionId']);var _0x22cd3d=moment()[_0x05ed('0x1e')](_0x05ed('0x4b'))[_0x05ed('0x12')]();var _0x279a22=htmlToPdfmake(_0x4394f4,{'window':window,'tableAutoSize':!![]});return{'content':[_0x279a22],'defaultStyle':{'font':_0x05ed('0x4c')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x05ed('0x4d'),'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':_0x05ed('0x4d')}},'header':function(){return[{'text':_0x05ed('0x4e'),'style':_0x05ed('0x1f')}];},'footer':function(_0x29bd97,_0xb2fff0){return[{'text':util[_0x05ed('0x1e')](_0x05ed('0x4f'),_0x13d46c,_0x29bd97,_0xb2fff0,_0x22cd3d),'style':'footer'}];}};}function writePDFDocument(_0x2bbcfd,_0x10188a){return new Promise(function(_0x4bac06,_0x337bd9){var _0x74bd2f=_0x2bbcfd[_0x05ed('0x50')](fs[_0x05ed('0x51')](_0x10188a));_0x74bd2f['on'](_0x05ed('0x52'),function(){_0x4bac06(_0x05ed('0x52'));});_0x74bd2f['on'](_0x05ed('0x53'),function(_0xd37a1b){_0x337bd9(_0xd37a1b);});_0x2bbcfd[_0x05ed('0x54')]();});}exports['createPdfFromHTML']=function(_0x582a91,_0x220e81){var _0x2fcf37=getPDFPrinter();var _0xbc16cc=getPDFDocDefinitionFromHTML(_0x582a91,_0x220e81);var _0x31105b=_0x2fcf37[_0x05ed('0x37')](_0xbc16cc);return writePDFDocument(_0x31105b,_0x220e81[_0x05ed('0x1')])[_0x05ed('0x40')](function(_0x39bd9c){throw _0x39bd9c;});};
\ No newline at end of file
index 668a03b..516fd3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf62e=['../../config/logger','analytics','argv','savename','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Setting','find','split','splitSizeXlsx','then','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','sequelize','QueryTypes','SELECT','num','Empty','length','push','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','join','mkdirSync','each','xlsx','%s.%s','writeFileSync','binary','zip','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','XLSX','inspect','Failed','finally','exit','path','lodash','json2xls','bluebird','zip-dir','rimraf','../../mysqldb','dbH'];(function(_0x31b6e4,_0x43fca6){var _0x4f66da=function(_0x133c2){while(--_0x133c2){_0x31b6e4['push'](_0x31b6e4['shift']());}};_0x4f66da(++_0x43fca6);}(_0xf62e,0x1ce));var _0xef62=function(_0x46d438,_0x300ae7){_0x46d438=_0x46d438-0x0;var _0xaf8b7a=_0xf62e[_0x46d438];return _0xaf8b7a;};'use strict';var util=require('util');var path=require(_0xef62('0x0'));var _=require(_0xef62('0x1'));var fs=require('fs');var json2xls=require(_0xef62('0x2'));var BPromise=require(_0xef62('0x3'));var zipdir=require(_0xef62('0x4'));var rimraf=require(_0xef62('0x5'));var db=require('../../mysqldb')['db'];var dbH=require(_0xef62('0x6'))[_0xef62('0x7')];var logger=require(_0xef62('0x8'))(_0xef62('0x9'));var EXTRACTED_REPORT_ID=Number(process[_0xef62('0xa')][0x2]);var QUERY=process[_0xef62('0xa')][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x5c123e,_0x4db3d1){var _0x89aa04={'status':_0x5c123e};var _0x495cce={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x4db3d1){_0x89aa04[_0xef62('0xb')]=_0x4db3d1;}return db['AnalyticExtractedReport']['update'](_0x89aa04,_0x495cce);}function main(){var _0x5dc985=0x1388;var _0x516edb;logger['info'](util[_0xef62('0xc')](_0xef62('0xd'),EXTRACTED_REPORT_ID,'XLSX'));return db[_0xef62('0xe')][_0xef62('0xf')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xef62('0x10'),_0xef62('0x11')]})[_0xef62('0x12')](function(_0x2baab6){if(_0x2baab6){_0x516edb=_0x2baab6;_0x5dc985=_0x516edb[_0xef62('0x11')]||0x1388;}})[_0xef62('0x12')](function(){return dbH['sequelize'][_0xef62('0x13')](util[_0xef62('0xc')](_0xef62('0x14'),QUERY),{'type':dbH[_0xef62('0x15')][_0xef62('0x16')][_0xef62('0x17')]});})[_0xef62('0x12')](function(_0x52cb96){if(!_0x52cb96[0x0][_0xef62('0x18')]){return analyticExtractedReport(_0xef62('0x19'));}var _0x534d4e=[];var _0x4e9469=0x0;var _0x3e23f6=!![];if(_0x516edb[_0xef62('0x10')]){if(_0x52cb96&&_0x52cb96[_0xef62('0x1a')]){var _0x5afc64=_0x52cb96[0x0][_0xef62('0x18')]%(_0x4e9469+_0x5dc985);for(;_0x3e23f6;_0x4e9469+=_0x5dc985,_0x5afc64=_0x52cb96[0x0][_0xef62('0x18')]%(_0x4e9469+_0x5dc985)){if(_0x5afc64==0x0||_0x5afc64==_0x52cb96[0x0][_0xef62('0x18')]){_0x3e23f6=![];}_0x534d4e[_0xef62('0x1b')](dbH[_0xef62('0x15')][_0xef62('0x13')](util[_0xef62('0xc')](_0xef62('0x1c'),QUERY,_0x5dc985,_0x4e9469),{'type':dbH[_0xef62('0x15')]['QueryTypes'][_0xef62('0x17')]}));}}}else{_0x534d4e[_0xef62('0x1b')](dbH[_0xef62('0x15')]['query'](QUERY,{'type':dbH[_0xef62('0x15')]['QueryTypes'][_0xef62('0x17')]}));}var _0xf90d9f=path[_0xef62('0x1d')](PATH);var _0x2e2eda=path[_0xef62('0x1e')](PATH,'.xlsx');var _0x663c75=_0x516edb[_0xef62('0x10')]&&_0x534d4e[_0xef62('0x1a')]>0x1;var _0x360189=[];if(!fs['existsSync'](path[_0xef62('0x1f')](_0xf90d9f,_0x2e2eda))&&_0x663c75){fs[_0xef62('0x20')](path[_0xef62('0x1f')](_0xf90d9f,_0x2e2eda));}return BPromise[_0xef62('0x21')](_0x534d4e,function(_0x59d803){_0x360189[_0xef62('0x1b')](_0x59d803);})[_0xef62('0x12')](function(){for(var _0x4f9d59=0x0;_0x4f9d59<_0x360189['length'];_0x4f9d59+=0x1){var _0xb0d03c;var _0x5a869a=_0x360189[_0x4f9d59];if(_0x663c75){_0xb0d03c=path[_0xef62('0x1f')](_0xf90d9f,_0x2e2eda,util[_0xef62('0xc')]('%s%d.%s',_0x2e2eda,_0x4f9d59,_0xef62('0x22')));}else{_0xb0d03c=path['join'](_0xf90d9f,util[_0xef62('0xc')](_0xef62('0x23'),_0x2e2eda,'xlsx'));}fs[_0xef62('0x24')](_0xb0d03c,json2xls(_0x5a869a),_0xef62('0x25'));}})[_0xef62('0x12')](function(){if(_0x663c75){zipdir(path['join'](_0xf90d9f,_0x2e2eda),{'saveTo':path[_0xef62('0x1f')](_0xf90d9f,util[_0xef62('0xc')](_0xef62('0x23'),_0x2e2eda,_0xef62('0x26')))},function(_0x399c52,_0x2e591b){});rimraf(path[_0xef62('0x1f')](_0xf90d9f,_0x2e2eda),function(){});}})[_0xef62('0x12')](function(){logger[_0xef62('0x27')](util[_0xef62('0xc')](_0xef62('0x28'),EXTRACTED_REPORT_ID,'XLSX'));return analyticExtractedReport(_0xef62('0x29'),_0x663c75?util['format']('%s.%s',_0x2e2eda,_0x663c75?'zip':_0xef62('0x22')):null);});})['catch'](function(_0x3494f1){logger[_0xef62('0x27')](util[_0xef62('0xc')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xef62('0x2a')),util[_0xef62('0x2b')](_0x3494f1,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xef62('0x2c'));})[_0xef62('0x2d')](function(){process[_0xef62('0x2e')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xda8e=['catch','inspect','util','path','lodash','json2xls','bluebird','zip-dir','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','info','format','XLSX','find','split','splitSizeXlsx','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','length','push','dirname','basename','existsSync','join','mkdirSync','%s%d.%s','xlsx','writeFileSync','binary','%s.%s','zip'];(function(_0x5bff9a,_0x4637bf){var _0x25dc7a=function(_0x43e48e){while(--_0x43e48e){_0x5bff9a['push'](_0x5bff9a['shift']());}};_0x25dc7a(++_0x4637bf);}(_0xda8e,0x17c));var _0xeda8=function(_0x503790,_0x525c78){_0x503790=_0x503790-0x0;var _0x388092=_0xda8e[_0x503790];return _0x388092;};'use strict';var util=require(_0xeda8('0x0'));var path=require(_0xeda8('0x1'));var _=require(_0xeda8('0x2'));var fs=require('fs');var json2xls=require(_0xeda8('0x3'));var BPromise=require(_0xeda8('0x4'));var zipdir=require(_0xeda8('0x5'));var rimraf=require('rimraf');var db=require('../../mysqldb')['db'];var dbH=require(_0xeda8('0x6'))[_0xeda8('0x7')];var logger=require(_0xeda8('0x8'))(_0xeda8('0x9'));var EXTRACTED_REPORT_ID=Number(process[_0xeda8('0xa')][0x2]);var QUERY=process[_0xeda8('0xa')][0x3];var PATH=process[_0xeda8('0xa')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x5ef5ec,_0x506a8f){var _0x1ead52={'status':_0x5ef5ec};var _0x14124f={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x506a8f){_0x1ead52[_0xeda8('0xb')]=_0x506a8f;}return db[_0xeda8('0xc')]['update'](_0x1ead52,_0x14124f);}function main(){var _0x2be6fe=0x1388;var _0x305aba;logger[_0xeda8('0xd')](util[_0xeda8('0xe')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xeda8('0xf')));return db['Setting'][_0xeda8('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xeda8('0x11'),_0xeda8('0x12')]})[_0xeda8('0x13')](function(_0x56a6b9){if(_0x56a6b9){_0x305aba=_0x56a6b9;_0x2be6fe=_0x305aba[_0xeda8('0x12')]||0x1388;}})[_0xeda8('0x13')](function(){return dbH[_0xeda8('0x14')][_0xeda8('0x15')](util[_0xeda8('0xe')](_0xeda8('0x16'),QUERY),{'type':dbH['sequelize'][_0xeda8('0x17')][_0xeda8('0x18')]});})[_0xeda8('0x13')](function(_0x379bbb){if(!_0x379bbb[0x0][_0xeda8('0x19')]){return analyticExtractedReport(_0xeda8('0x1a'));}var _0x18fd15=[];var _0x1f00ea=0x0;var _0x3ab293=!![];if(_0x305aba[_0xeda8('0x11')]){if(_0x379bbb&&_0x379bbb[_0xeda8('0x1b')]){var _0x1538f7=_0x379bbb[0x0][_0xeda8('0x19')]%(_0x1f00ea+_0x2be6fe);for(;_0x3ab293;_0x1f00ea+=_0x2be6fe,_0x1538f7=_0x379bbb[0x0]['num']%(_0x1f00ea+_0x2be6fe)){if(_0x1538f7==0x0||_0x1538f7==_0x379bbb[0x0][_0xeda8('0x19')]){_0x3ab293=![];}_0x18fd15['push'](dbH[_0xeda8('0x14')][_0xeda8('0x15')](util[_0xeda8('0xe')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x2be6fe,_0x1f00ea),{'type':dbH['sequelize'][_0xeda8('0x17')][_0xeda8('0x18')]}));}}}else{_0x18fd15[_0xeda8('0x1c')](dbH[_0xeda8('0x14')][_0xeda8('0x15')](QUERY,{'type':dbH[_0xeda8('0x14')][_0xeda8('0x17')][_0xeda8('0x18')]}));}var _0x12dd37=path[_0xeda8('0x1d')](PATH);var _0x599401=path[_0xeda8('0x1e')](PATH,'.xlsx');var _0x2de79b=_0x305aba[_0xeda8('0x11')]&&_0x18fd15[_0xeda8('0x1b')]>0x1;var _0xc5607c=[];if(!fs[_0xeda8('0x1f')](path[_0xeda8('0x20')](_0x12dd37,_0x599401))&&_0x2de79b){fs[_0xeda8('0x21')](path['join'](_0x12dd37,_0x599401));}return BPromise['each'](_0x18fd15,function(_0x1b7d9a){_0xc5607c[_0xeda8('0x1c')](_0x1b7d9a);})['then'](function(){for(var _0x393f61=0x0;_0x393f61<_0xc5607c[_0xeda8('0x1b')];_0x393f61+=0x1){var _0x648a82;var _0x360638=_0xc5607c[_0x393f61];if(_0x2de79b){_0x648a82=path['join'](_0x12dd37,_0x599401,util[_0xeda8('0xe')](_0xeda8('0x22'),_0x599401,_0x393f61,'xlsx'));}else{_0x648a82=path[_0xeda8('0x20')](_0x12dd37,util['format']('%s.%s',_0x599401,_0xeda8('0x23')));}fs[_0xeda8('0x24')](_0x648a82,json2xls(_0x360638),_0xeda8('0x25'));}})[_0xeda8('0x13')](function(){if(_0x2de79b){zipdir(path[_0xeda8('0x20')](_0x12dd37,_0x599401),{'saveTo':path[_0xeda8('0x20')](_0x12dd37,util[_0xeda8('0xe')](_0xeda8('0x26'),_0x599401,_0xeda8('0x27')))},function(_0x46748,_0x3e21e4){});rimraf(path[_0xeda8('0x20')](_0x12dd37,_0x599401),function(){});}})[_0xeda8('0x13')](function(){logger[_0xeda8('0xd')](util['format']('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0xeda8('0xf')));return analyticExtractedReport('Completed',_0x2de79b?util[_0xeda8('0xe')]('%s.%s',_0x599401,_0x2de79b?'zip':'xlsx'):null);});})[_0xeda8('0x28')](function(_0x166d91){logger['info'](util['format']('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xeda8('0xf')),util[_0xeda8('0x29')](_0x166d91,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})['finally'](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
index 0106f69..4d592c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab89=['Hangup','transaction','destroy','bulkCreate','catch','error','rewrite','lodash','util','models','Interval','findAll','intervals','VoiceExtension','IntervalId','then','uniq','map','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','queue','hasOwnProperty','priority','extensions','extension','find','type','Set','format','CDR(type)=%s','context','VoiceExtensionId','inbound','push','CDR(routeid)=','outbound','CDR(destination)=','cutdigits','${EXTEN:','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','toLowerCase','createdAt','updatedAt','interval','*,*,*,*','tag','length','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','indexOf','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','concat'];(function(_0x5221da,_0x405dfd){var _0x3960a6=function(_0x32bb01){while(--_0x32bb01){_0x5221da['push'](_0x5221da['shift']());}};_0x3960a6(++_0x405dfd);}(_0xab89,0x127));var _0x9ab8=function(_0x344a3f,_0x579a22){_0x344a3f=_0x344a3f-0x0;var _0x264712=_0xab89[_0x344a3f];return _0x264712;};'use strict';var _=require(_0x9ab8('0x0'));var util=require(_0x9ab8('0x1'));function rewrite(_0x18241a,_0xf76f21){var _0x532a37=this;return _0x18241a[_0x9ab8('0x2')][_0x9ab8('0x3')][_0x9ab8('0x4')]({'raw':!![]})['then'](function(_0xea57ea){_0x532a37[_0x9ab8('0x5')]=_0xea57ea;return _0x18241a[_0x9ab8('0x2')][_0x9ab8('0x6')]['findAll']({'where':{'IntervalId':_0xf76f21[_0x9ab8('0x7')]},'raw':!![]});})[_0x9ab8('0x8')](function(_0x31f2b9){return _0x18241a[_0x9ab8('0x2')][_0x9ab8('0x6')][_0x9ab8('0x4')]({'where':{'exten':{'$in':_[_0x9ab8('0x9')](_[_0x9ab8('0xa')](_0x31f2b9,_0x9ab8('0xb')))}},'order':[{'raw':_0x9ab8('0xc')}],'raw':!![]});})[_0x9ab8('0x8')](function(_0x5d25eb){var _0x1df354=_[_0x9ab8('0xd')](_0x5d25eb,{'priority':'1'});var _0x5deba0=_[_0x9ab8('0xd')](_0x5d25eb,{'isApp':0x1});var _0x20b713=_[_0x9ab8('0xe')](_0x5deba0,_0x9ab8('0xb'));var _0x31acb6=[_0x9ab8('0xf'),'playback'];var _0x36bbee=[];var _0x7ecbe7=[];for(var _0x5c6c17 in _0x20b713){if(_0x20b713[_0x9ab8('0x10')](_0x5c6c17)){_0x532a37[_0x9ab8('0x11')]=0x2;_0x532a37[_0x9ab8('0x12')]=[];_0x532a37[_0x9ab8('0x13')]=_[_0x9ab8('0x14')](_0x1df354,{'exten':_0x20b713[_0x5c6c17][0x0]['exten']});_0x532a37[_0x9ab8('0x12')]['push']({'type':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')],'app':_0x9ab8('0x16'),'appdata':util[_0x9ab8('0x17')](_0x9ab8('0x18'),_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')]),'context':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x19')],'exten':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0xb')],'priority':_0x532a37[_0x9ab8('0x11')]++,'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x1a')]});if(_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')]===_0x9ab8('0x1b')){_0x532a37['extensions'][_0x9ab8('0x1c')]({'type':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')],'app':_0x9ab8('0x16'),'appdata':_0x9ab8('0x1d')+_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x1a')],'context':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x19')],'exten':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0xb')],'priority':_0x532a37[_0x9ab8('0x11')]++,'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x1a')]});}else if(_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')]===_0x9ab8('0x1e')){if(_0x532a37[_0x9ab8('0x13')]){_0x532a37[_0x9ab8('0x12')][_0x9ab8('0x1c')]({'type':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')],'app':_0x9ab8('0x16'),'appdata':_0x9ab8('0x1f')+(_0x532a37[_0x9ab8('0x13')][_0x9ab8('0x20')]?_0x9ab8('0x21')+_0x532a37[_0x9ab8('0x13')][_0x9ab8('0x20')]+'}':'${EXTEN}'),'context':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x19')],'exten':_0x20b713[_0x5c6c17][0x0]['exten'],'priority':_0x532a37['priority']++,'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0]['VoiceExtensionId']});}_0x532a37[_0x9ab8('0x12')][_0x9ab8('0x1c')]({'type':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')],'app':_0x9ab8('0x16'),'appdata':'CDR(routeid)='+_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x1a')],'context':_0x20b713[_0x5c6c17][0x0]['context'],'exten':_0x20b713[_0x5c6c17][0x0]['exten'],'priority':_0x532a37['priority']++,'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x1a')]});var _0x594980=_0x532a37[_0x9ab8('0x11')]++;_0x532a37[_0x9ab8('0x12')][_0x9ab8('0x1c')]({'type':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')],'app':_0x9ab8('0x22'),'appdata':_0x9ab8('0x23')+(_0x594980+0x2)+_0x9ab8('0x24')+(_0x594980+0x1)+')','context':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x19')],'exten':_0x20b713[_0x5c6c17][0x0]['exten'],'priority':_0x594980,'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x1a')]});if(_0x532a37[_0x9ab8('0x13')]){_0x532a37[_0x9ab8('0x12')][_0x9ab8('0x1c')]({'type':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')],'app':'Set','appdata':_0x532a37[_0x9ab8('0x13')]['cutdigits']?'CDR(prefix)=${EXTEN:0:'+_0x532a37[_0x9ab8('0x13')]['cutdigits']+'}':'CDR(prefix)=noprefix','context':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x19')],'exten':_0x20b713[_0x5c6c17][0x0]['exten'],'priority':_0x532a37[_0x9ab8('0x11')]++,'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x1a')]});}_0x532a37[_0x9ab8('0x12')]['push']({'type':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')],'app':_0x9ab8('0x16'),'appdata':_0x9ab8('0x25')+_0x20b713[_0x5c6c17][0x0]['VoiceExtensionId'],'context':_0x20b713[_0x5c6c17][0x0]['context'],'exten':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0xb')],'priority':_0x532a37[_0x9ab8('0x11')]++,'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x1a')]});if(_0x532a37[_0x9ab8('0x13')]&&_0x532a37['extension'][_0x9ab8('0x10')](_0x9ab8('0x26'))&&_0x532a37['extension'][_0x9ab8('0x26')]!==_0x9ab8('0x27')){_0x532a37[_0x9ab8('0x12')][_0x9ab8('0x1c')]({'type':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')],'app':'Set','appdata':_0x9ab8('0x28'),'context':_0x20b713[_0x5c6c17][0x0]['context'],'exten':_0x20b713[_0x5c6c17][0x0]['exten'],'priority':_0x532a37['priority']++,'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x1a')]});_0x532a37[_0x9ab8('0x12')][_0x9ab8('0x1c')]({'type':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')],'app':_0x9ab8('0x16'),'appdata':_0x9ab8('0x29')+_0x532a37[_0x9ab8('0x13')][_0x9ab8('0x26')]||_0x9ab8('0x2a'),'context':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x19')],'exten':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0xb')],'priority':_0x532a37[_0x9ab8('0x11')]++,'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0]['VoiceExtensionId']});}}_0x532a37['extensions']['push']({'type':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')],'app':_0x9ab8('0x16'),'appdata':_0x9ab8('0x2b'),'context':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x19')],'exten':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0xb')],'priority':_0x532a37[_0x9ab8('0x11')]++,'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x1a')]});_0x532a37[_0x9ab8('0x12')][_0x9ab8('0x1c')]({'type':_0x20b713[_0x5c6c17][0x0]['type'],'app':_0x9ab8('0x16'),'appdata':_0x9ab8('0x2c'),'context':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x19')],'exten':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0xb')],'priority':_0x532a37[_0x9ab8('0x11')]++,'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x1a')]});_0x532a37[_0x9ab8('0x12')]['push']({'type':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')],'app':'Set','appdata':_0x9ab8('0x2d'),'context':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x19')],'exten':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0xb')],'priority':_0x532a37[_0x9ab8('0x11')]++,'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0]['VoiceExtensionId']});for(var _0x407720=0x0,_0xdcafda=0x0;_0x407720<_0x20b713[_0x5c6c17]['length'];_0x407720+=0x1,_0xdcafda=0x0){var _0xf729e6=_0x20b713[_0x5c6c17][_0x407720];if(_0xf729e6['type']){_0xf729e6[_0x9ab8('0x15')]=_0xf729e6[_0x9ab8('0x15')][_0x9ab8('0x2e')]();}var _0x3578af=[];var _0x58ef2d=[];delete _0xf729e6['id'];delete _0xf729e6[_0x9ab8('0x2f')];delete _0xf729e6[_0x9ab8('0x30')];var _0x554b47=_0xf729e6[_0x9ab8('0x31')]!==_0x9ab8('0x32')?[_0xf729e6[_0x9ab8('0x31')]]:_0xf729e6[_0x9ab8('0x7')]?_[_0x9ab8('0xa')](_[_0x9ab8('0xd')](_0x532a37[_0x9ab8('0x5')],{'IntervalId':_0xf729e6[_0x9ab8('0x7')]}),_0x9ab8('0x31')):[];if(_0xf729e6[_0x9ab8('0x10')](_0x9ab8('0x33'))){if(_0xf729e6[_0x9ab8('0x33')]&&_0xf729e6[_0x9ab8('0x33')]!=='--'){_0x3578af[_0x9ab8('0x1c')]({'type':_0xf729e6['type'],'app':_0x9ab8('0x16'),'appdata':'CDR(tag)='+_0xf729e6[_0x9ab8('0x33')],'context':_0xf729e6[_0x9ab8('0x19')],'exten':_0xf729e6['exten'],'priority':_0x554b47[_0x9ab8('0x34')]+_0x532a37['priority']+_0xdcafda++,'VoiceExtensionId':_0xf729e6['VoiceExtensionId']});}}if(_0xf729e6[_0x9ab8('0x15')]===_0x9ab8('0x1e')&&_0xf729e6[_0x9ab8('0x10')]('callerID')){if(_0xf729e6[_0x9ab8('0x35')]){_0x3578af[_0x9ab8('0x1c')]({'type':_0xf729e6[_0x9ab8('0x15')],'app':_0x9ab8('0x22'),'appdata':_0x9ab8('0x36')+_0xf729e6['callerID']+')','context':_0xf729e6['context'],'exten':_0xf729e6['exten'],'priority':_0x554b47[_0x9ab8('0x34')]+_0x532a37['priority']+_0xdcafda++,'VoiceExtensionId':_0xf729e6[_0x9ab8('0x1a')]});}else{_0x3578af['push']({'type':_0xf729e6[_0x9ab8('0x15')],'app':_0x9ab8('0x22'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','context':_0xf729e6[_0x9ab8('0x19')],'exten':_0xf729e6[_0x9ab8('0xb')],'priority':_0x554b47[_0x9ab8('0x34')]+_0x532a37[_0x9ab8('0x11')]+_0xdcafda++,'VoiceExtensionId':_0xf729e6[_0x9ab8('0x1a')]});}}if(_0xf729e6[_0x9ab8('0x10')]('answer')){if(_0x31acb6[_0x9ab8('0x37')](_0xf729e6['app'][_0x9ab8('0x2e')]())>=0x0&&_0xf729e6[_0x9ab8('0x38')]!==_0x9ab8('0x39')){if(_0xf729e6['answer']){_0x3578af[_0x9ab8('0x1c')]({'type':_0xf729e6['type'],'app':_0x9ab8('0x22'),'appdata':_0x9ab8('0x3a'),'context':_0xf729e6[_0x9ab8('0x19')],'exten':_0xf729e6[_0x9ab8('0xb')],'priority':_0x554b47[_0x9ab8('0x34')]+_0x532a37['priority']+_0xdcafda++,'VoiceExtensionId':_0xf729e6[_0x9ab8('0x1a')]});_0x3578af['push']({'type':_0xf729e6[_0x9ab8('0x15')],'app':_0x9ab8('0x16'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0xf729e6[_0x9ab8('0x19')],'exten':_0xf729e6[_0x9ab8('0xb')],'priority':_0x554b47[_0x9ab8('0x34')]+_0x532a37['priority']+_0xdcafda++,'VoiceExtensionId':_0xf729e6[_0x9ab8('0x1a')]});}else{_0x3578af[_0x9ab8('0x1c')]({'type':_0xf729e6[_0x9ab8('0x15')],'app':_0x9ab8('0x22'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0xf729e6[_0x9ab8('0x19')],'exten':_0xf729e6[_0x9ab8('0xb')],'priority':_0x554b47[_0x9ab8('0x34')]+_0x532a37[_0x9ab8('0x11')]+_0xdcafda++,'VoiceExtensionId':_0xf729e6[_0x9ab8('0x1a')]});_0x3578af['push']({'type':_0xf729e6[_0x9ab8('0x15')],'app':'Set','appdata':_0x9ab8('0x3b'),'context':_0xf729e6['context'],'exten':_0xf729e6[_0x9ab8('0xb')],'priority':_0x554b47['length']+_0x532a37[_0x9ab8('0x11')]+_0xdcafda++,'VoiceExtensionId':_0xf729e6[_0x9ab8('0x1a')]});}}}for(var _0x457456=0x0;_0x457456<_0x554b47[_0x9ab8('0x34')];_0x457456+=0x1){var _0x28f505=_0x532a37['priority']+_0x554b47[_0x9ab8('0x34')];var _0x197b8a=_0x457456===_0x554b47[_0x9ab8('0x34')]-0x1?_0x532a37['priority']+_0x3578af[_0x9ab8('0x34')]+_0x58ef2d[_0x9ab8('0x34')]+0x2:_0x532a37[_0x9ab8('0x11')]+_0x457456+0x1;_0x3578af[_0x9ab8('0x3c')](_0x457456,0x0,{'type':_0xf729e6[_0x9ab8('0x15')],'app':_0x9ab8('0x3d'),'appdata':_0x554b47[_0x457456]+'?'+_0xf729e6[_0x9ab8('0x19')]+',${EXTEN},'+_0x28f505+':'+_0xf729e6[_0x9ab8('0x19')]+_0x9ab8('0x3e')+_0x197b8a,'exten':_0xf729e6[_0x9ab8('0xb')],'context':_0xf729e6[_0x9ab8('0x19')],'priority':_0x532a37[_0x9ab8('0x11')]+_0x457456,'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0]['VoiceExtensionId']});}_0xf729e6[_0x9ab8('0x11')]=_0x3578af['length']?_[_0x9ab8('0x3f')](_0x3578af)[_0x9ab8('0x11')]+0x1:_0x532a37[_0x9ab8('0x11')];_0x532a37['priority']=(_0x58ef2d[_0x9ab8('0x34')]?_[_0x9ab8('0x3f')](_0x58ef2d)['priority']:_0xf729e6[_0x9ab8('0x11')])+0x1;_0x532a37[_0x9ab8('0x12')]=_[_0x9ab8('0x40')](_0x532a37['extensions'],_0x3578af,[_0xf729e6],_0x58ef2d);}_0x532a37[_0x9ab8('0x12')][_0x9ab8('0x1c')]({'type':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x15')],'app':_0x9ab8('0x41'),'exten':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0xb')],'context':_0x20b713[_0x5c6c17][0x0]['context'],'priority':_0x532a37[_0x9ab8('0x11')],'VoiceExtensionId':_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x1a')]});_0x36bbee[_0x9ab8('0x1c')](_0x20b713[_0x5c6c17][0x0][_0x9ab8('0x1a')]);_0x7ecbe7=_[_0x9ab8('0x40')](_0x7ecbe7,_0x532a37[_0x9ab8('0x12')]);}}return _0x18241a[_0x9ab8('0x42')](function(_0x1cb466){return _0x18241a['models'][_0x9ab8('0x6')][_0x9ab8('0x43')]({'where':{'VoiceExtensionId':{'$in':_0x36bbee}},'transaction':_0x1cb466})['then'](function(_0x16d73e){return _0x18241a[_0x9ab8('0x2')][_0x9ab8('0x6')][_0x9ab8('0x44')](_['sortBy'](_0x7ecbe7,'priority'),{'transaction':_0x1cb466});});});})[_0x9ab8('0x45')](function(_0x35537e){console[_0x9ab8('0x46')](_0x35537e);});}exports[_0x9ab8('0x47')]=rewrite;
\ No newline at end of file
+var _0x2399=['ExecIf','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','length','toLowerCase','createdAt','updatedAt','*,*,*,*','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','app','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','concat','Hangup','bulkCreate','sortBy','error','rewrite','lodash','util','models','Interval','findAll','then','VoiceExtension','IntervalId','uniq','map','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','queue','playback','priority','extensions','find','type','format','CDR(type)=%s','VoiceExtensionId','inbound','push','Set','CDR(routeid)=','outbound','extension','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','context'];(function(_0x24a88e,_0x22a0b8){var _0x232cbb=function(_0x50b7a4){while(--_0x50b7a4){_0x24a88e['push'](_0x24a88e['shift']());}};_0x232cbb(++_0x22a0b8);}(_0x2399,0xf6));var _0x9239=function(_0x5c3dbe,_0x42c3a8){_0x5c3dbe=_0x5c3dbe-0x0;var _0x49086d=_0x2399[_0x5c3dbe];return _0x49086d;};'use strict';var _=require(_0x9239('0x0'));var util=require(_0x9239('0x1'));function rewrite(_0x3cfd0c,_0x5c3214){var _0x2520a0=this;return _0x3cfd0c[_0x9239('0x2')][_0x9239('0x3')][_0x9239('0x4')]({'raw':!![]})[_0x9239('0x5')](function(_0x3e93fa){_0x2520a0['intervals']=_0x3e93fa;return _0x3cfd0c['models'][_0x9239('0x6')][_0x9239('0x4')]({'where':{'IntervalId':_0x5c3214[_0x9239('0x7')]},'raw':!![]});})[_0x9239('0x5')](function(_0xe36e1d){return _0x3cfd0c[_0x9239('0x2')][_0x9239('0x6')][_0x9239('0x4')]({'where':{'exten':{'$in':_[_0x9239('0x8')](_[_0x9239('0x9')](_0xe36e1d,_0x9239('0xa')))}},'order':[{'raw':_0x9239('0xb')}],'raw':!![]});})[_0x9239('0x5')](function(_0x1e53c8){var _0x386f1c=_[_0x9239('0xc')](_0x1e53c8,{'priority':'1'});var _0x30ef50=_[_0x9239('0xc')](_0x1e53c8,{'isApp':0x1});var _0x3af860=_[_0x9239('0xd')](_0x30ef50,_0x9239('0xa'));var _0x40288a=[_0x9239('0xe'),_0x9239('0xf')];var _0x2f17f9=[];var _0x549b52=[];for(var _0x213515 in _0x3af860){if(_0x3af860['hasOwnProperty'](_0x213515)){_0x2520a0[_0x9239('0x10')]=0x2;_0x2520a0[_0x9239('0x11')]=[];_0x2520a0['extension']=_[_0x9239('0x12')](_0x386f1c,{'exten':_0x3af860[_0x213515][0x0][_0x9239('0xa')]});_0x2520a0[_0x9239('0x11')]['push']({'type':_0x3af860[_0x213515][0x0][_0x9239('0x13')],'app':'Set','appdata':util[_0x9239('0x14')](_0x9239('0x15'),_0x3af860[_0x213515][0x0]['type']),'context':_0x3af860[_0x213515][0x0]['context'],'exten':_0x3af860[_0x213515][0x0][_0x9239('0xa')],'priority':_0x2520a0['priority']++,'VoiceExtensionId':_0x3af860[_0x213515][0x0][_0x9239('0x16')]});if(_0x3af860[_0x213515][0x0][_0x9239('0x13')]===_0x9239('0x17')){_0x2520a0['extensions'][_0x9239('0x18')]({'type':_0x3af860[_0x213515][0x0]['type'],'app':_0x9239('0x19'),'appdata':_0x9239('0x1a')+_0x3af860[_0x213515][0x0]['VoiceExtensionId'],'context':_0x3af860[_0x213515][0x0]['context'],'exten':_0x3af860[_0x213515][0x0][_0x9239('0xa')],'priority':_0x2520a0[_0x9239('0x10')]++,'VoiceExtensionId':_0x3af860[_0x213515][0x0][_0x9239('0x16')]});}else if(_0x3af860[_0x213515][0x0][_0x9239('0x13')]===_0x9239('0x1b')){if(_0x2520a0[_0x9239('0x1c')]){_0x2520a0[_0x9239('0x11')]['push']({'type':_0x3af860[_0x213515][0x0][_0x9239('0x13')],'app':_0x9239('0x19'),'appdata':_0x9239('0x1d')+(_0x2520a0[_0x9239('0x1c')][_0x9239('0x1e')]?_0x9239('0x1f')+_0x2520a0[_0x9239('0x1c')][_0x9239('0x1e')]+'}':_0x9239('0x20')),'context':_0x3af860[_0x213515][0x0][_0x9239('0x21')],'exten':_0x3af860[_0x213515][0x0][_0x9239('0xa')],'priority':_0x2520a0[_0x9239('0x10')]++,'VoiceExtensionId':_0x3af860[_0x213515][0x0][_0x9239('0x16')]});}_0x2520a0[_0x9239('0x11')][_0x9239('0x18')]({'type':_0x3af860[_0x213515][0x0][_0x9239('0x13')],'app':_0x9239('0x19'),'appdata':_0x9239('0x1a')+_0x3af860[_0x213515][0x0][_0x9239('0x16')],'context':_0x3af860[_0x213515][0x0]['context'],'exten':_0x3af860[_0x213515][0x0][_0x9239('0xa')],'priority':_0x2520a0[_0x9239('0x10')]++,'VoiceExtensionId':_0x3af860[_0x213515][0x0][_0x9239('0x16')]});var _0xfcbee6=_0x2520a0['priority']++;_0x2520a0[_0x9239('0x11')][_0x9239('0x18')]({'type':_0x3af860[_0x213515][0x0]['type'],'app':_0x9239('0x22'),'appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0xfcbee6+0x2)+_0x9239('0x23')+(_0xfcbee6+0x1)+')','context':_0x3af860[_0x213515][0x0][_0x9239('0x21')],'exten':_0x3af860[_0x213515][0x0][_0x9239('0xa')],'priority':_0xfcbee6,'VoiceExtensionId':_0x3af860[_0x213515][0x0]['VoiceExtensionId']});if(_0x2520a0[_0x9239('0x1c')]){_0x2520a0[_0x9239('0x11')][_0x9239('0x18')]({'type':_0x3af860[_0x213515][0x0][_0x9239('0x13')],'app':_0x9239('0x19'),'appdata':_0x2520a0[_0x9239('0x1c')][_0x9239('0x1e')]?_0x9239('0x24')+_0x2520a0[_0x9239('0x1c')]['cutdigits']+'}':_0x9239('0x25'),'context':_0x3af860[_0x213515][0x0]['context'],'exten':_0x3af860[_0x213515][0x0][_0x9239('0xa')],'priority':_0x2520a0[_0x9239('0x10')]++,'VoiceExtensionId':_0x3af860[_0x213515][0x0][_0x9239('0x16')]});}_0x2520a0['extensions'][_0x9239('0x18')]({'type':_0x3af860[_0x213515][0x0][_0x9239('0x13')],'app':_0x9239('0x19'),'appdata':'outboundrouteid='+_0x3af860[_0x213515][0x0]['VoiceExtensionId'],'context':_0x3af860[_0x213515][0x0][_0x9239('0x21')],'exten':_0x3af860[_0x213515][0x0][_0x9239('0xa')],'priority':_0x2520a0[_0x9239('0x10')]++,'VoiceExtensionId':_0x3af860[_0x213515][0x0][_0x9239('0x16')]});if(_0x2520a0[_0x9239('0x1c')]&&_0x2520a0['extension'][_0x9239('0x26')]('recordingFormat')&&_0x2520a0[_0x9239('0x1c')][_0x9239('0x27')]!==_0x9239('0x28')){_0x2520a0[_0x9239('0x11')][_0x9239('0x18')]({'type':_0x3af860[_0x213515][0x0]['type'],'app':_0x9239('0x19'),'appdata':_0x9239('0x29'),'context':_0x3af860[_0x213515][0x0][_0x9239('0x21')],'exten':_0x3af860[_0x213515][0x0]['exten'],'priority':_0x2520a0[_0x9239('0x10')]++,'VoiceExtensionId':_0x3af860[_0x213515][0x0][_0x9239('0x16')]});_0x2520a0[_0x9239('0x11')][_0x9239('0x18')]({'type':_0x3af860[_0x213515][0x0]['type'],'app':_0x9239('0x19'),'appdata':_0x9239('0x2a')+_0x2520a0[_0x9239('0x1c')]['recordingFormat']||_0x9239('0x2b'),'context':_0x3af860[_0x213515][0x0]['context'],'exten':_0x3af860[_0x213515][0x0]['exten'],'priority':_0x2520a0[_0x9239('0x10')]++,'VoiceExtensionId':_0x3af860[_0x213515][0x0][_0x9239('0x16')]});}}_0x2520a0[_0x9239('0x11')]['push']({'type':_0x3af860[_0x213515][0x0]['type'],'app':'Set','appdata':_0x9239('0x2c'),'context':_0x3af860[_0x213515][0x0]['context'],'exten':_0x3af860[_0x213515][0x0][_0x9239('0xa')],'priority':_0x2520a0['priority']++,'VoiceExtensionId':_0x3af860[_0x213515][0x0]['VoiceExtensionId']});_0x2520a0[_0x9239('0x11')][_0x9239('0x18')]({'type':_0x3af860[_0x213515][0x0][_0x9239('0x13')],'app':_0x9239('0x19'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x3af860[_0x213515][0x0][_0x9239('0x21')],'exten':_0x3af860[_0x213515][0x0][_0x9239('0xa')],'priority':_0x2520a0[_0x9239('0x10')]++,'VoiceExtensionId':_0x3af860[_0x213515][0x0][_0x9239('0x16')]});_0x2520a0[_0x9239('0x11')]['push']({'type':_0x3af860[_0x213515][0x0][_0x9239('0x13')],'app':'Set','appdata':_0x9239('0x2d'),'context':_0x3af860[_0x213515][0x0][_0x9239('0x21')],'exten':_0x3af860[_0x213515][0x0][_0x9239('0xa')],'priority':_0x2520a0[_0x9239('0x10')]++,'VoiceExtensionId':_0x3af860[_0x213515][0x0][_0x9239('0x16')]});for(var _0x24e169=0x0,_0x50815d=0x0;_0x24e169<_0x3af860[_0x213515][_0x9239('0x2e')];_0x24e169+=0x1,_0x50815d=0x0){var _0x3f6891=_0x3af860[_0x213515][_0x24e169];if(_0x3f6891['type']){_0x3f6891[_0x9239('0x13')]=_0x3f6891[_0x9239('0x13')][_0x9239('0x2f')]();}var _0xbdef5d=[];var _0x9499f5=[];delete _0x3f6891['id'];delete _0x3f6891[_0x9239('0x30')];delete _0x3f6891[_0x9239('0x31')];var _0x2f4751=_0x3f6891['interval']!==_0x9239('0x32')?[_0x3f6891['interval']]:_0x3f6891[_0x9239('0x7')]?_[_0x9239('0x9')](_['filter'](_0x2520a0['intervals'],{'IntervalId':_0x3f6891['IntervalId']}),'interval'):[];if(_0x3f6891['hasOwnProperty'](_0x9239('0x33'))){if(_0x3f6891[_0x9239('0x33')]&&_0x3f6891[_0x9239('0x33')]!=='--'){_0xbdef5d[_0x9239('0x18')]({'type':_0x3f6891[_0x9239('0x13')],'app':'Set','appdata':_0x9239('0x34')+_0x3f6891[_0x9239('0x33')],'context':_0x3f6891[_0x9239('0x21')],'exten':_0x3f6891[_0x9239('0xa')],'priority':_0x2f4751[_0x9239('0x2e')]+_0x2520a0[_0x9239('0x10')]+_0x50815d++,'VoiceExtensionId':_0x3f6891[_0x9239('0x16')]});}}if(_0x3f6891[_0x9239('0x13')]===_0x9239('0x1b')&&_0x3f6891[_0x9239('0x26')](_0x9239('0x35'))){if(_0x3f6891['callerID']){_0xbdef5d[_0x9239('0x18')]({'type':_0x3f6891['type'],'app':_0x9239('0x22'),'appdata':_0x9239('0x36')+_0x3f6891[_0x9239('0x35')]+')','context':_0x3f6891[_0x9239('0x21')],'exten':_0x3f6891[_0x9239('0xa')],'priority':_0x2f4751['length']+_0x2520a0[_0x9239('0x10')]+_0x50815d++,'VoiceExtensionId':_0x3f6891[_0x9239('0x16')]});}else{_0xbdef5d['push']({'type':_0x3f6891[_0x9239('0x13')],'app':_0x9239('0x22'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','context':_0x3f6891['context'],'exten':_0x3f6891[_0x9239('0xa')],'priority':_0x2f4751[_0x9239('0x2e')]+_0x2520a0['priority']+_0x50815d++,'VoiceExtensionId':_0x3f6891[_0x9239('0x16')]});}}if(_0x3f6891[_0x9239('0x26')]('answer')){if(_0x40288a['indexOf'](_0x3f6891[_0x9239('0x37')][_0x9239('0x2f')]())>=0x0&&_0x3f6891['appType']!=='custom'){if(_0x3f6891['answer']){_0xbdef5d[_0x9239('0x18')]({'type':_0x3f6891[_0x9239('0x13')],'app':_0x9239('0x22'),'appdata':_0x9239('0x38'),'context':_0x3f6891[_0x9239('0x21')],'exten':_0x3f6891['exten'],'priority':_0x2f4751[_0x9239('0x2e')]+_0x2520a0[_0x9239('0x10')]+_0x50815d++,'VoiceExtensionId':_0x3f6891[_0x9239('0x16')]});_0xbdef5d[_0x9239('0x18')]({'type':_0x3f6891['type'],'app':_0x9239('0x19'),'appdata':_0x9239('0x39'),'context':_0x3f6891[_0x9239('0x21')],'exten':_0x3f6891[_0x9239('0xa')],'priority':_0x2f4751[_0x9239('0x2e')]+_0x2520a0['priority']+_0x50815d++,'VoiceExtensionId':_0x3f6891['VoiceExtensionId']});}else{_0xbdef5d[_0x9239('0x18')]({'type':_0x3f6891[_0x9239('0x13')],'app':_0x9239('0x22'),'appdata':_0x9239('0x3a'),'context':_0x3f6891['context'],'exten':_0x3f6891['exten'],'priority':_0x2f4751[_0x9239('0x2e')]+_0x2520a0[_0x9239('0x10')]+_0x50815d++,'VoiceExtensionId':_0x3f6891[_0x9239('0x16')]});_0xbdef5d[_0x9239('0x18')]({'type':_0x3f6891[_0x9239('0x13')],'app':'Set','appdata':_0x9239('0x3b'),'context':_0x3f6891[_0x9239('0x21')],'exten':_0x3f6891['exten'],'priority':_0x2f4751[_0x9239('0x2e')]+_0x2520a0['priority']+_0x50815d++,'VoiceExtensionId':_0x3f6891[_0x9239('0x16')]});}}}for(var _0x177ab2=0x0;_0x177ab2<_0x2f4751['length'];_0x177ab2+=0x1){var _0x404f88=_0x2520a0[_0x9239('0x10')]+_0x2f4751[_0x9239('0x2e')];var _0x47843a=_0x177ab2===_0x2f4751[_0x9239('0x2e')]-0x1?_0x2520a0[_0x9239('0x10')]+_0xbdef5d[_0x9239('0x2e')]+_0x9499f5[_0x9239('0x2e')]+0x2:_0x2520a0[_0x9239('0x10')]+_0x177ab2+0x1;_0xbdef5d[_0x9239('0x3c')](_0x177ab2,0x0,{'type':_0x3f6891[_0x9239('0x13')],'app':_0x9239('0x3d'),'appdata':_0x2f4751[_0x177ab2]+'?'+_0x3f6891[_0x9239('0x21')]+_0x9239('0x3e')+_0x404f88+':'+_0x3f6891['context']+_0x9239('0x3e')+_0x47843a,'exten':_0x3f6891[_0x9239('0xa')],'context':_0x3f6891[_0x9239('0x21')],'priority':_0x2520a0['priority']+_0x177ab2,'VoiceExtensionId':_0x3af860[_0x213515][0x0]['VoiceExtensionId']});}_0x3f6891[_0x9239('0x10')]=_0xbdef5d[_0x9239('0x2e')]?_[_0x9239('0x3f')](_0xbdef5d)[_0x9239('0x10')]+0x1:_0x2520a0[_0x9239('0x10')];_0x2520a0[_0x9239('0x10')]=(_0x9499f5[_0x9239('0x2e')]?_['last'](_0x9499f5)[_0x9239('0x10')]:_0x3f6891[_0x9239('0x10')])+0x1;_0x2520a0[_0x9239('0x11')]=_[_0x9239('0x40')](_0x2520a0[_0x9239('0x11')],_0xbdef5d,[_0x3f6891],_0x9499f5);}_0x2520a0['extensions'][_0x9239('0x18')]({'type':_0x3af860[_0x213515][0x0][_0x9239('0x13')],'app':_0x9239('0x41'),'exten':_0x3af860[_0x213515][0x0][_0x9239('0xa')],'context':_0x3af860[_0x213515][0x0][_0x9239('0x21')],'priority':_0x2520a0[_0x9239('0x10')],'VoiceExtensionId':_0x3af860[_0x213515][0x0][_0x9239('0x16')]});_0x2f17f9[_0x9239('0x18')](_0x3af860[_0x213515][0x0][_0x9239('0x16')]);_0x549b52=_[_0x9239('0x40')](_0x549b52,_0x2520a0[_0x9239('0x11')]);}}return _0x3cfd0c['transaction'](function(_0x3d7d6a){return _0x3cfd0c[_0x9239('0x2')]['VoiceExtension']['destroy']({'where':{'VoiceExtensionId':{'$in':_0x2f17f9}},'transaction':_0x3d7d6a})['then'](function(_0x406c30){return _0x3cfd0c[_0x9239('0x2')][_0x9239('0x6')][_0x9239('0x42')](_[_0x9239('0x43')](_0x549b52,'priority'),{'transaction':_0x3d7d6a});});});})['catch'](function(_0xc89e33){console[_0x9239('0x44')](_0xc89e33);});}exports[_0x9239('0x45')]=rewrite;
\ No newline at end of file
index 5796a7e..583361b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16c6=['emit','contact:csv_','resume','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','CSV\x20import\x20process\x20stopped!','CmContact','createReadStream','pause','info','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','squel','papaparse','ioredis','../../../mysqldb','../../../config/environment','api','defaults','redis','localhost','socket.io-emitter','register','argv','undefined','null','Missing\x20filepath\x20parameter!','zipObject','split','Missing\x20ListId\x20parameter!','error','index','test','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','map','join','hasOwnProperty','data','firstName','phone','phone\x20not\x20specified!','birthDate','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','length','find','duplicate','Duplicate\x20Contact','create','keys','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','message','stringify','cmContact','checkHopper','into','cm_hopper','fromQuery','scheduledAt','ContactId','createdAt','select','field','NOW()','toString','updatedAt','from','cm_contacts','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','insert','id\x20IN\x20?','str','phone\x20IS\x20NOT\x20NULL','calleridnum','cm_hopper_final','\x20=\x20?','cm_hopper_black','VoiceQueue','outbound','Lists','get','dialCheckDuplicateType','always','sequelize','VoiceQueueId','query','all','findAll','CmList','BlackLists','CampaignId','Campaign','generalCheckHopper'];(function(_0xcd6876,_0xc064c5){var _0x53b0d2=function(_0x45425d){while(--_0x45425d){_0xcd6876['push'](_0xcd6876['shift']());}};_0x53b0d2(++_0xc064c5);}(_0x16c6,0xe3));var _0x616c=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x16c6[_0x4565bf];return _0x5610ba;};'use strict';var BPromise=require(_0x616c('0x0'));var util=require(_0x616c('0x1'));var _=require(_0x616c('0x2'));var fs=require('fs');var squel=require(_0x616c('0x3'));var Papa=require(_0x616c('0x4'));var Redis=require(_0x616c('0x5'));var db=require(_0x616c('0x6'))['db'];var config=require(_0x616c('0x7'));var logger=require('../../../config/logger')(_0x616c('0x8'));config['redis']=_[_0x616c('0x9')](config[_0x616c('0xa')],{'host':_0x616c('0xb'),'port':0x18eb});var socket=require(_0x616c('0xc'))(new Redis(config[_0x616c('0xa')]));require('../../../api/cmContact/cmContact.socket')[_0x616c('0xd')](socket);try{if(!process[_0x616c('0xe')][0x2]||process[_0x616c('0xe')][0x2]===_0x616c('0xf')||process[_0x616c('0xe')][0x2]===_0x616c('0x10')){throw new Error(_0x616c('0x11'));}var FILEPATH=process[_0x616c('0xe')][0x2];if(!process[_0x616c('0xe')][0x3]||process[_0x616c('0xe')][0x3]===_0x616c('0xf')||process[_0x616c('0xe')][0x3]===_0x616c('0x10')||!process[_0x616c('0xe')][0x4]||process[_0x616c('0xe')][0x4]===_0x616c('0xf')||process[_0x616c('0xe')][0x4]===_0x616c('0x10')){throw new Error('Missing\x20binding\x20parameters!');}var FIELDS=_[_0x616c('0x12')](process[_0x616c('0xe')][0x3][_0x616c('0x13')](','),process['argv'][0x4][_0x616c('0x13')](','));if(!process[_0x616c('0xe')][0x5]||process[_0x616c('0xe')][0x5]==='undefined'||process[_0x616c('0xe')][0x5]==='null'){throw new Error(_0x616c('0x14'));}var LISTID=process[_0x616c('0xe')][0x5];var COMPANYID=process['argv'][0x6]&&process[_0x616c('0xe')][0x6]!=='undefined'&&process[_0x616c('0xe')][0x6]!==_0x616c('0x10')?process[_0x616c('0xe')][0x6]:null;var DUPLICATES=process['argv'][0x7]&&process[_0x616c('0xe')][0x7]!=='undefined'&&process[_0x616c('0xe')][0x7]!=='null'?process['argv'][0x7]:null;if(!process[_0x616c('0xe')][0x8]||process['argv'][0x8]===_0x616c('0xf')||process['argv'][0x8]===_0x616c('0x10')){throw new Error('Missing\x20socket_timestamp\x20parameter!');}var SOCKET_TIMESTAMP=process[_0x616c('0xe')][0x8];}catch(_0x323c9f){logger[_0x616c('0x15')](_0x323c9f);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(_0xad4603,_0x4e2195,_0x12ef91,_0x560cee){var _0x3d8437={'message':_0x4e2195};_0x3d8437[_0xad4603]=!![];if(_0x12ef91){_0x3d8437['contact']=_0x12ef91;}if(_0x560cee){_0x3d8437[_0x616c('0x16')]=_0x560cee;}return _0x3d8437;}function isEmail(_0xdb2b57){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))*$/[_0x616c('0x17')](_0xdb2b57);}function checkRow(_0x11b6e3,_0xdfbe04,_0x3b4f92){return new BPromise(function(_0x1615f8,_0x38fdbc){if(_['isNil'](_0x11b6e3)){return _0x38fdbc(handleCheckRowError(_0x616c('0x15'),_0x616c('0x18'),null,_0x3b4f92));}if(_0x11b6e3['errors']&&_0x11b6e3['errors']['length']){var _0x32d379=_[_0x616c('0x19')](_0x11b6e3['errors'],'message')[_0x616c('0x1a')](';');return _0x38fdbc(handleCheckRowError(_0x616c('0x15'),_0x32d379,null,_0x3b4f92));}var _0x515990={};for(var _0x4e7449 in FIELDS){if(FIELDS[_0x616c('0x1b')](_0x4e7449)&&FIELDS[_0x4e7449]){_0x515990[_0x4e7449]=_0x11b6e3[_0x616c('0x1c')][0x0][FIELDS[_0x4e7449]]||_0x11b6e3['data'][0x0]['\ufeff'+FIELDS[_0x4e7449]];}}if(!_0x515990[_0x616c('0x1d')]){return _0x38fdbc(handleCheckRowError(_0x616c('0x15'),'firstName\x20not\x20specified!',null,_0x3b4f92));}if(!_0x515990[_0x616c('0x1e')]){return _0x38fdbc(handleCheckRowError(_0x616c('0x15'),_0x616c('0x1f'),null,_0x3b4f92));}if(_0x515990[_0x616c('0x20')]){var _0x316800=moment(_0x515990['birthDate'],'YYYY-MM-DD');if(!_0x316800[_0x616c('0x21')]()){return _0x38fdbc(handleCheckRowError('error',_0x616c('0x22'),null,_0x3b4f92));}}if(_0x515990[_0x616c('0x23')]){if(!isEmail(_0x515990['email'])){return _0x38fdbc(handleCheckRowError(_0x616c('0x15'),_0x616c('0x24'),null,_0x3b4f92));}}_0x515990[_0x616c('0x25')]=LISTID;_0x515990[_0x616c('0x26')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x616c('0x27')]&&_0xdfbe04){var _0x3f110b={};for(var _0x232d8d=0x0,_0x3df356=DUPLICATES[_0x616c('0x27')];_0x232d8d<_0x3df356;_0x232d8d+=0x1){_0x3f110b[DUPLICATES[_0x232d8d]]=_0x515990[DUPLICATES[_0x232d8d]];}var _0xbe9a93=_[_0x616c('0x28')](_0xdfbe04,_0x3f110b);if(_0xbe9a93){return _0x38fdbc(handleCheckRowError(_0x616c('0x29'),_0x616c('0x2a'),_0xbe9a93,_0x3b4f92));}}return db['CmContact'][_0x616c('0x2b')](_0x515990,{'raw':!![],'hooks':![],'fields':_[_0x616c('0x2c')](_0x515990)})[_0x616c('0x2d')](function(_0x50f0f1){if(DUPLICATES&&DUPLICATES[_0x616c('0x27')]&&_0xdfbe04){_0xdfbe04[_0x616c('0x2e')](_[_0x616c('0x2f')](_0x515990,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x50f0f1['id'];return _0x1615f8();})[_0x616c('0x30')](function(_0x3eda79){return _0x38fdbc(handleCheckRowError(_0x616c('0x15'),_0x616c('0x31')+(_0x3eda79[_0x616c('0x32')]||JSON[_0x616c('0x33')](_0x3eda79)),null,_0x3b4f92));});});}function checkHopper(){function _0x288a08(){return function(_0x599d37){logger[_0x616c('0x15')](_0x616c('0x34'),_0x616c('0x35'),util['inspect'](_0x599d37,{'showHidden':![],'depth':null}));};}var _0x2564cb=function(_0x2ef606,_0xd9e0fb){var _0x444857=squel['insert']()[_0x616c('0x36')](_0x616c('0x37'))[_0x616c('0x38')]([_0x616c('0x1e'),_0x616c('0x39'),_0x616c('0x3a'),_0x616c('0x25'),_0xd9e0fb,_0x616c('0x3b'),'updatedAt'],squel[_0x616c('0x3c')]()['field']('phone','phone')[_0x616c('0x3d')](_0x616c('0x3e'),_0x616c('0x39'))['field']('id',_0x616c('0x3a'))['field'](LISTID[_0x616c('0x3f')](),_0x616c('0x25'))[_0x616c('0x3d')](_0x2ef606['id'][_0x616c('0x3f')](),_0xd9e0fb)['field'](_0x616c('0x3e'),'createdAt')['field'](_0x616c('0x3e'),_0x616c('0x40'))[_0x616c('0x41')](_0x616c('0x42'))[_0x616c('0x43')](_0x616c('0x44'))[_0x616c('0x43')](_0x616c('0x45'),LISTID['toString']())['where']('phone\x20IS\x20NOT\x20NULL')[_0x616c('0x43')]('phone\x20NOT\x20IN\x20(?)',squel[_0x616c('0x3c')]()[_0x616c('0x3d')](_0x616c('0x1e'))[_0x616c('0x41')](_0x616c('0x37'))['where'](_0xd9e0fb+'\x20=\x20?',_0x2ef606['id'][_0x616c('0x3f')]())))[_0x616c('0x3f')]();return _0x444857;};var _0x313c5d=function(_0x2de84a,_0x235ef8){var _0x4ba05d=squel[_0x616c('0x46')]()[_0x616c('0x36')](_0x616c('0x37'))[_0x616c('0x38')](['phone',_0x616c('0x39'),_0x616c('0x3a'),'ListId',_0x235ef8,_0x616c('0x3b'),_0x616c('0x40')],squel[_0x616c('0x3c')]()[_0x616c('0x3d')](_0x616c('0x1e'),'phone')['field']('NOW()','scheduledAt')[_0x616c('0x3d')]('id','ContactId')['field'](LISTID[_0x616c('0x3f')](),_0x616c('0x25'))[_0x616c('0x3d')](_0x2de84a['id'][_0x616c('0x3f')](),_0x235ef8)['field']('NOW()',_0x616c('0x3b'))[_0x616c('0x3d')](_0x616c('0x3e'),_0x616c('0x40'))[_0x616c('0x41')](_0x616c('0x42'))[_0x616c('0x43')]('deletedAt\x20IS\x20NULL')[_0x616c('0x43')](_0x616c('0x45'),LISTID[_0x616c('0x3f')]())[_0x616c('0x43')](_0x616c('0x47'),squel[_0x616c('0x48')](hopperContacts))['where'](_0x616c('0x49'))[_0x616c('0x43')]('phone\x20NOT\x20IN\x20(?)',squel[_0x616c('0x3c')]()['field'](_0x616c('0x4a'))[_0x616c('0x41')](_0x616c('0x4b'))[_0x616c('0x43')](_0x235ef8+_0x616c('0x4c'),_0x2de84a['id']['toString']()))[_0x616c('0x43')]('phone\x20NOT\x20IN\x20(?)',squel[_0x616c('0x3c')]()[_0x616c('0x3d')](_0x616c('0x1e'))[_0x616c('0x41')](_0x616c('0x37'))[_0x616c('0x43')](_0x235ef8+_0x616c('0x4c'),_0x2de84a['id']['toString']())))[_0x616c('0x3f')]();return _0x4ba05d;};function _0x47a785(_0x3ed1c9,_0x5c9c8f){var _0x3cb0cd=squel[_0x616c('0x46')]()[_0x616c('0x36')](_0x616c('0x37'))['fromQuery']([_0x616c('0x1e'),_0x616c('0x39'),_0x616c('0x3a'),'ListId',_0x5c9c8f,_0x616c('0x3b'),'updatedAt'],squel[_0x616c('0x3c')]()['field'](_0x616c('0x1e'),_0x616c('0x1e'))[_0x616c('0x3d')](_0x616c('0x3e'),_0x616c('0x39'))[_0x616c('0x3d')]('id',_0x616c('0x3a'))[_0x616c('0x3d')](LISTID['toString'](),_0x616c('0x25'))[_0x616c('0x3d')](_0x3ed1c9['id'][_0x616c('0x3f')](),_0x5c9c8f)[_0x616c('0x3d')](_0x616c('0x3e'),_0x616c('0x3b'))[_0x616c('0x3d')]('NOW()',_0x616c('0x40'))[_0x616c('0x41')](_0x616c('0x42'))[_0x616c('0x43')](_0x616c('0x44'))[_0x616c('0x43')]('ListId\x20=\x20?',LISTID[_0x616c('0x3f')]())[_0x616c('0x43')](_0x616c('0x47'),squel[_0x616c('0x48')](hopperContacts))['where'](_0x616c('0x49')))[_0x616c('0x3f')]();return _0x3cb0cd;}function _0x410b0b(_0x158b8a,_0x158db4){var _0x5b9633=squel[_0x616c('0x46')]()[_0x616c('0x36')](_0x616c('0x4d'))[_0x616c('0x38')]([_0x616c('0x1e'),_0x616c('0x3a'),_0x616c('0x25'),_0x158db4,'createdAt','updatedAt'],squel[_0x616c('0x3c')]()['field'](_0x616c('0x1e'),_0x616c('0x1e'))[_0x616c('0x3d')]('id',_0x616c('0x3a'))[_0x616c('0x3d')](LISTID[_0x616c('0x3f')](),_0x616c('0x25'))[_0x616c('0x3d')](_0x158b8a['id']['toString'](),_0x158db4)[_0x616c('0x3d')](_0x616c('0x3e'),_0x616c('0x3b'))[_0x616c('0x3d')]('NOW()','updatedAt')[_0x616c('0x41')](_0x616c('0x42'))[_0x616c('0x43')]('deletedAt\x20IS\x20NULL')[_0x616c('0x43')](_0x616c('0x45'),LISTID[_0x616c('0x3f')]())[_0x616c('0x43')](_0x616c('0x47'),squel[_0x616c('0x48')](hopperContacts))[_0x616c('0x43')]('phone\x20IS\x20NOT\x20NULL'))[_0x616c('0x3f')]();return _0x5b9633;}return db[_0x616c('0x4e')]['findAll']({'where':{'type':_0x616c('0x4f')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db['CmList'],'as':_0x616c('0x50'),'where':{'id':LISTID}}]})[_0x616c('0x2d')](function(_0x5e53a5){var _0x8622b=[];if(_0x5e53a5){var _0x49a948;for(var _0xcbe814=0x0,_0xa07b6e;_0xcbe814<_0x5e53a5['length'];_0xcbe814+=0x1){_0xa07b6e=_0x5e53a5[_0xcbe814][_0x616c('0x51')]({'plain':!![]});switch(_0xa07b6e[_0x616c('0x52')]){case _0x616c('0x53'):_0x8622b[_0x616c('0x2e')](db[_0x616c('0x54')]['query'](_0x313c5d(_0xa07b6e,_0x616c('0x55')))[_0x616c('0x2d')](function(){})['catch'](_0x288a08()));break;case'onlyIfOpen':_0x8622b[_0x616c('0x2e')](db[_0x616c('0x54')][_0x616c('0x56')](_0x2564cb(_0xa07b6e,_0x616c('0x55')))[_0x616c('0x2d')](function(){})[_0x616c('0x30')](_0x288a08()));break;default:_0x8622b[_0x616c('0x2e')](db[_0x616c('0x54')][_0x616c('0x56')](_0x47a785(_0xa07b6e,_0x616c('0x55')))[_0x616c('0x2d')](function(){})['catch'](_0x288a08()));}}}return _0x8622b;})[_0x616c('0x57')]()['then'](function(){return db[_0x616c('0x4e')][_0x616c('0x58')]({'where':{'type':_0x616c('0x4f')},'attributes':['id'],'include':[{'model':db[_0x616c('0x59')],'as':_0x616c('0x5a'),'where':{'id':LISTID}}]})[_0x616c('0x2d')](function(_0x1bf64b){var _0x327509=[];if(_0x1bf64b){var _0x5ab3e1;for(var _0x2bdfae=0x0,_0x44cc67;_0x2bdfae<_0x1bf64b[_0x616c('0x27')];_0x2bdfae+=0x1){_0x44cc67=_0x1bf64b[_0x2bdfae][_0x616c('0x51')]({'plain':!![]});_0x327509[_0x616c('0x2e')](db['sequelize'][_0x616c('0x56')](_0x410b0b(_0x44cc67,_0x616c('0x55')))['then'](function(){})[_0x616c('0x30')](_0x288a08()));}}return _0x327509;})[_0x616c('0x57')]();})[_0x616c('0x2d')](function(){return db['Campaign'][_0x616c('0x58')]({'attributes':['id',_0x616c('0x52')],'include':[{'model':db['CmList'],'as':_0x616c('0x50'),'where':{'id':LISTID}}]})['then'](function(_0x1d309a){var _0x4578b9=[];if(_0x1d309a){for(var _0x523623=0x0,_0x4a7de6;_0x523623<_0x1d309a[_0x616c('0x27')];_0x523623+=0x1){_0x4a7de6=_0x1d309a[_0x523623][_0x616c('0x51')]({'plain':!![]});switch(_0x4a7de6[_0x616c('0x52')]){case _0x616c('0x53'):_0x4578b9[_0x616c('0x2e')](db['sequelize'][_0x616c('0x56')](_0x313c5d(_0x4a7de6,_0x616c('0x5b')))['then'](function(){})['catch'](_0x288a08()));break;case'onlyIfOpen':_0x4578b9['push'](db[_0x616c('0x54')][_0x616c('0x56')](_0x2564cb(_0x4a7de6,_0x616c('0x5b')))[_0x616c('0x2d')](function(){})[_0x616c('0x30')](_0x288a08()));break;default:_0x4578b9[_0x616c('0x2e')](db[_0x616c('0x54')]['query'](_0x47a785(_0x4a7de6,'CampaignId'))[_0x616c('0x2d')](function(){})['catch'](_0x288a08()));}}}return _0x4578b9;})[_0x616c('0x57')]();})[_0x616c('0x2d')](function(){return db[_0x616c('0x5c')][_0x616c('0x58')]({'attributes':['id'],'include':[{'model':db[_0x616c('0x59')],'as':_0x616c('0x5a'),'where':{'id':LISTID}}]})['then'](function(_0x26631f){var _0x33cb78=[];if(_0x26631f){for(var _0x1e2d50=0x0,_0x2f85d0;_0x1e2d50<_0x26631f['length'];_0x1e2d50+=0x1){_0x2f85d0=_0x26631f[_0x1e2d50]['get']({'plain':!![]});_0x33cb78[_0x616c('0x2e')](db[_0x616c('0x54')][_0x616c('0x56')](_0x410b0b(_0x2f85d0,'CampaignId'))['then'](function(){})[_0x616c('0x30')](_0x288a08()));}}return _0x33cb78;})[_0x616c('0x57')]();})[_0x616c('0x30')](function(_0x5c7080){logger['error']('cmContact,\x20%s,\x20%s',_0x616c('0x5d'),_0x5c7080['message']);});}var processPromises=function(_0x27f63d){return BPromise[_0x616c('0x57')](promises)['then'](function(_0x25a4b8){})[_0x616c('0x30')](function(_0x1022b2){logger[_0x616c('0x15')]('Error\x20processing\x20rows\x20block:',JSON['stringify'](_0x1022b2));})['finally'](function(){socket[_0x616c('0x5e')](_0x616c('0x5f')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x27f63d){return _0x27f63d[_0x616c('0x60')]();}});};var endCsv=function(){return BPromise['resolve']()[_0x616c('0x2d')](function(){if(hopperContacts){return checkHopper();}})['then'](function(){socket[_0x616c('0x5e')](_0x616c('0x5f')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs['unlinkSync'](FILEPATH);}catch(_0x599c5f){logger[_0x616c('0x15')](_0x616c('0x61'),JSON[_0x616c('0x33')](_0x599c5f));}finally{process[_0x616c('0x62')](0x0);}});};process['on'](_0x616c('0x63'),function(){logger['info'](_0x616c('0x64'));endCsv();});function main(){return BPromise['resolve']()[_0x616c('0x2d')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES['split'](',');return db[_0x616c('0x65')][_0x616c('0x58')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x616c('0x2d')](function(_0x58b3f7){var _0x5c0940=fs[_0x616c('0x66')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa['parse'](_0x5c0940,{'header':!![],'skipEmptyLines':!![],'step':function(_0xf47caa,_0x1b6b25){total+=0x1;var _0x1fa7df=total;promises[_0x616c('0x2e')](checkRow(_0xf47caa,_0x58b3f7,_0x1fa7df)[_0x616c('0x2d')](function(){success+=0x1;})[_0x616c('0x30')](function(_0x247dd5){if(_0x247dd5[_0x616c('0x15')]){errors+=0x1;delete _0x247dd5[_0x616c('0x15')];}else if(_0x247dd5['duplicate']){duplicates+=0x1;delete _0x247dd5['duplicate'];}rows[_0x616c('0x2e')](_0x247dd5);}));if(total%0xc8===0x0){_0x1b6b25[_0x616c('0x67')]();return processPromises(_0x1b6b25);}},'complete':function(){return processPromises()[_0x616c('0x2d')](function(){logger['info']('CSV\x20parsed\x20correctly!');endCsv();});},'error':function(_0x34d6e1,_0x89db69){logger[_0x616c('0x68')](_0x616c('0x69'),JSON[_0x616c('0x33')](_0x34d6e1));endCsv();}});})[_0x616c('0x30')](function(_0x16a44e){logger['error'](_0x616c('0x6a'),JSON[_0x616c('0x33')](_0x16a44e));});}main();
\ No newline at end of file
+var _0x96d9=['str','calleridnum','id\x20IN\x20?','cm_hopper_black','VoiceQueue','findAll','outbound','dialCheckDuplicateType','get','always','sequelize','query','VoiceQueueId','onlyIfOpen','all','CmList','BlackLists','Campaign','CampaignId','cmContact,\x20%s,\x20%s','Error\x20processing\x20rows\x20block:','stringify','finally','emit','contact:csv_','resume','resolve','unlinkSync','exit','SIGINT','info','CSV\x20import\x20process\x20stopped!','createReadStream','parse','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','squel','papaparse','../../../mysqldb','../../../config/environment','../../../config/logger','api','redis','localhost','socket.io-emitter','register','argv','undefined','null','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','contact','index','test','error','errors','message','join','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','isValid','email','email\x20format\x20is\x20not\x20valid!','CompanyId','length','find','duplicate','Duplicate\x20Contact','CmContact','create','keys','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','cmContact','inspect','insert','into','cm_hopper','fromQuery','scheduledAt','ContactId','ListId','createdAt','updatedAt','select','field','NOW()','from','cm_contacts','deletedAt\x20IS\x20NULL','where','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','\x20=\x20?','toString'];(function(_0x3c56a5,_0x4a176b){var _0x153199=function(_0x21672b){while(--_0x21672b){_0x3c56a5['push'](_0x3c56a5['shift']());}};_0x153199(++_0x4a176b);}(_0x96d9,0xfa));var _0x996d=function(_0x27a477,_0x172fa5){_0x27a477=_0x27a477-0x0;var _0x4340e1=_0x96d9[_0x27a477];return _0x4340e1;};'use strict';var BPromise=require(_0x996d('0x0'));var util=require('util');var _=require('lodash');var fs=require('fs');var squel=require(_0x996d('0x1'));var Papa=require(_0x996d('0x2'));var Redis=require('ioredis');var db=require(_0x996d('0x3'))['db'];var config=require(_0x996d('0x4'));var logger=require(_0x996d('0x5'))(_0x996d('0x6'));config[_0x996d('0x7')]=_['defaults'](config[_0x996d('0x7')],{'host':_0x996d('0x8'),'port':0x18eb});var socket=require(_0x996d('0x9'))(new Redis(config[_0x996d('0x7')]));require('../../../api/cmContact/cmContact.socket')[_0x996d('0xa')](socket);try{if(!process['argv'][0x2]||process[_0x996d('0xb')][0x2]==='undefined'||process[_0x996d('0xb')][0x2]==='null'){throw new Error('Missing\x20filepath\x20parameter!');}var FILEPATH=process['argv'][0x2];if(!process['argv'][0x3]||process[_0x996d('0xb')][0x3]===_0x996d('0xc')||process[_0x996d('0xb')][0x3]===_0x996d('0xd')||!process[_0x996d('0xb')][0x4]||process['argv'][0x4]===_0x996d('0xc')||process[_0x996d('0xb')][0x4]===_0x996d('0xd')){throw new Error(_0x996d('0xe'));}var FIELDS=_[_0x996d('0xf')](process['argv'][0x3]['split'](','),process['argv'][0x4][_0x996d('0x10')](','));if(!process[_0x996d('0xb')][0x5]||process[_0x996d('0xb')][0x5]===_0x996d('0xc')||process[_0x996d('0xb')][0x5]===_0x996d('0xd')){throw new Error(_0x996d('0x11'));}var LISTID=process[_0x996d('0xb')][0x5];var COMPANYID=process[_0x996d('0xb')][0x6]&&process[_0x996d('0xb')][0x6]!==_0x996d('0xc')&&process['argv'][0x6]!=='null'?process[_0x996d('0xb')][0x6]:null;var DUPLICATES=process[_0x996d('0xb')][0x7]&&process['argv'][0x7]!==_0x996d('0xc')&&process[_0x996d('0xb')][0x7]!==_0x996d('0xd')?process[_0x996d('0xb')][0x7]:null;if(!process['argv'][0x8]||process[_0x996d('0xb')][0x8]===_0x996d('0xc')||process[_0x996d('0xb')][0x8]===_0x996d('0xd')){throw new Error(_0x996d('0x12'));}var SOCKET_TIMESTAMP=process[_0x996d('0xb')][0x8];}catch(_0x453937){logger['error'](_0x453937);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(_0x3d1e9e,_0xaa8bf8,_0x5ddf13,_0x327918){var _0x5e0805={'message':_0xaa8bf8};_0x5e0805[_0x3d1e9e]=!![];if(_0x5ddf13){_0x5e0805[_0x996d('0x13')]=_0x5ddf13;}if(_0x327918){_0x5e0805[_0x996d('0x14')]=_0x327918;}return _0x5e0805;}function isEmail(_0x2293ac){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))*$/[_0x996d('0x15')](_0x2293ac);}function checkRow(_0x57f2ad,_0x21d44e,_0x40ec88){return new BPromise(function(_0x5dd90d,_0x9ae14){if(_['isNil'](_0x57f2ad)){return _0x9ae14(handleCheckRowError(_0x996d('0x16'),'The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!',null,_0x40ec88));}if(_0x57f2ad[_0x996d('0x17')]&&_0x57f2ad['errors']['length']){var _0x43021b=_['map'](_0x57f2ad[_0x996d('0x17')],_0x996d('0x18'))[_0x996d('0x19')](';');return _0x9ae14(handleCheckRowError(_0x996d('0x16'),_0x43021b,null,_0x40ec88));}var _0x450288={};for(var _0x229213 in FIELDS){if(FIELDS[_0x996d('0x1a')](_0x229213)&&FIELDS[_0x229213]){_0x450288[_0x229213]=_0x57f2ad['data'][0x0][FIELDS[_0x229213]]||_0x57f2ad[_0x996d('0x1b')][0x0]['\ufeff'+FIELDS[_0x229213]];}}if(!_0x450288[_0x996d('0x1c')]){return _0x9ae14(handleCheckRowError(_0x996d('0x16'),_0x996d('0x1d'),null,_0x40ec88));}if(!_0x450288[_0x996d('0x1e')]){return _0x9ae14(handleCheckRowError(_0x996d('0x16'),_0x996d('0x1f'),null,_0x40ec88));}if(_0x450288['birthDate']){var _0x1e525f=moment(_0x450288['birthDate'],'YYYY-MM-DD');if(!_0x1e525f[_0x996d('0x20')]()){return _0x9ae14(handleCheckRowError(_0x996d('0x16'),'birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x40ec88));}}if(_0x450288[_0x996d('0x21')]){if(!isEmail(_0x450288['email'])){return _0x9ae14(handleCheckRowError(_0x996d('0x16'),_0x996d('0x22'),null,_0x40ec88));}}_0x450288['ListId']=LISTID;_0x450288[_0x996d('0x23')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x996d('0x24')]&&_0x21d44e){var _0x3f7d89={};for(var _0x4f3bc7=0x0,_0x4d6629=DUPLICATES[_0x996d('0x24')];_0x4f3bc7<_0x4d6629;_0x4f3bc7+=0x1){_0x3f7d89[DUPLICATES[_0x4f3bc7]]=_0x450288[DUPLICATES[_0x4f3bc7]];}var _0x1f9e4e=_[_0x996d('0x25')](_0x21d44e,_0x3f7d89);if(_0x1f9e4e){return _0x9ae14(handleCheckRowError(_0x996d('0x26'),_0x996d('0x27'),_0x1f9e4e,_0x40ec88));}}return db[_0x996d('0x28')][_0x996d('0x29')](_0x450288,{'raw':!![],'hooks':![],'fields':_[_0x996d('0x2a')](_0x450288)})[_0x996d('0x2b')](function(_0x2a0e4b){if(DUPLICATES&&DUPLICATES[_0x996d('0x24')]&&_0x21d44e){_0x21d44e[_0x996d('0x2c')](_[_0x996d('0x2d')](_0x450288,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x2a0e4b['id'];return _0x5dd90d();})[_0x996d('0x2e')](function(_0xf3f020){return _0x9ae14(handleCheckRowError('error',_0x996d('0x2f')+(_0xf3f020[_0x996d('0x18')]||JSON['stringify'](_0xf3f020)),null,_0x40ec88));});});}function checkHopper(){function _0x4e8624(){return function(_0x403e34){logger['error'](_0x996d('0x30'),'checkHopper',util[_0x996d('0x31')](_0x403e34,{'showHidden':![],'depth':null}));};}var _0x493d49=function(_0x55b1d5,_0x3c2029){var _0x48e30a=squel[_0x996d('0x32')]()[_0x996d('0x33')](_0x996d('0x34'))[_0x996d('0x35')]([_0x996d('0x1e'),_0x996d('0x36'),_0x996d('0x37'),_0x996d('0x38'),_0x3c2029,_0x996d('0x39'),_0x996d('0x3a')],squel[_0x996d('0x3b')]()[_0x996d('0x3c')](_0x996d('0x1e'),_0x996d('0x1e'))[_0x996d('0x3c')](_0x996d('0x3d'),'scheduledAt')[_0x996d('0x3c')]('id',_0x996d('0x37'))[_0x996d('0x3c')](LISTID['toString'](),'ListId')[_0x996d('0x3c')](_0x55b1d5['id']['toString'](),_0x3c2029)[_0x996d('0x3c')](_0x996d('0x3d'),_0x996d('0x39'))[_0x996d('0x3c')](_0x996d('0x3d'),_0x996d('0x3a'))[_0x996d('0x3e')](_0x996d('0x3f'))['where'](_0x996d('0x40'))[_0x996d('0x41')](_0x996d('0x42'),LISTID['toString']())[_0x996d('0x41')](_0x996d('0x43'))[_0x996d('0x41')](_0x996d('0x44'),squel[_0x996d('0x3b')]()[_0x996d('0x3c')]('phone')[_0x996d('0x3e')](_0x996d('0x34'))['where'](_0x3c2029+_0x996d('0x45'),_0x55b1d5['id'][_0x996d('0x46')]())))[_0x996d('0x46')]();return _0x48e30a;};var _0x524f78=function(_0xf4265,_0x340c1b){var _0x129344=squel[_0x996d('0x32')]()[_0x996d('0x33')]('cm_hopper')[_0x996d('0x35')]([_0x996d('0x1e'),_0x996d('0x36'),_0x996d('0x37'),_0x996d('0x38'),_0x340c1b,_0x996d('0x39'),_0x996d('0x3a')],squel[_0x996d('0x3b')]()[_0x996d('0x3c')]('phone',_0x996d('0x1e'))[_0x996d('0x3c')](_0x996d('0x3d'),_0x996d('0x36'))[_0x996d('0x3c')]('id',_0x996d('0x37'))[_0x996d('0x3c')](LISTID[_0x996d('0x46')](),_0x996d('0x38'))[_0x996d('0x3c')](_0xf4265['id'][_0x996d('0x46')](),_0x340c1b)[_0x996d('0x3c')](_0x996d('0x3d'),_0x996d('0x39'))[_0x996d('0x3c')]('NOW()',_0x996d('0x3a'))[_0x996d('0x3e')](_0x996d('0x3f'))[_0x996d('0x41')](_0x996d('0x40'))['where']('ListId\x20=\x20?',LISTID[_0x996d('0x46')]())[_0x996d('0x41')]('id\x20IN\x20?',squel[_0x996d('0x47')](hopperContacts))[_0x996d('0x41')](_0x996d('0x43'))['where'](_0x996d('0x44'),squel['select']()['field'](_0x996d('0x48'))[_0x996d('0x3e')]('cm_hopper_final')['where'](_0x340c1b+_0x996d('0x45'),_0xf4265['id']['toString']()))[_0x996d('0x41')]('phone\x20NOT\x20IN\x20(?)',squel[_0x996d('0x3b')]()[_0x996d('0x3c')](_0x996d('0x1e'))[_0x996d('0x3e')](_0x996d('0x34'))[_0x996d('0x41')](_0x340c1b+_0x996d('0x45'),_0xf4265['id']['toString']())))[_0x996d('0x46')]();return _0x129344;};function _0x160e5c(_0x12987b,_0x17a7dc){var _0x307e07=squel['insert']()['into'](_0x996d('0x34'))[_0x996d('0x35')]([_0x996d('0x1e'),_0x996d('0x36'),'ContactId',_0x996d('0x38'),_0x17a7dc,'createdAt',_0x996d('0x3a')],squel[_0x996d('0x3b')]()[_0x996d('0x3c')](_0x996d('0x1e'),_0x996d('0x1e'))[_0x996d('0x3c')](_0x996d('0x3d'),_0x996d('0x36'))[_0x996d('0x3c')]('id',_0x996d('0x37'))[_0x996d('0x3c')](LISTID[_0x996d('0x46')](),_0x996d('0x38'))[_0x996d('0x3c')](_0x12987b['id'][_0x996d('0x46')](),_0x17a7dc)[_0x996d('0x3c')]('NOW()','createdAt')[_0x996d('0x3c')](_0x996d('0x3d'),_0x996d('0x3a'))[_0x996d('0x3e')](_0x996d('0x3f'))[_0x996d('0x41')]('deletedAt\x20IS\x20NULL')[_0x996d('0x41')](_0x996d('0x42'),LISTID[_0x996d('0x46')]())[_0x996d('0x41')](_0x996d('0x49'),squel[_0x996d('0x47')](hopperContacts))[_0x996d('0x41')](_0x996d('0x43')))[_0x996d('0x46')]();return _0x307e07;}function _0x26436c(_0x1324a5,_0x3c49fe){var _0x29481a=squel[_0x996d('0x32')]()[_0x996d('0x33')](_0x996d('0x4a'))[_0x996d('0x35')]([_0x996d('0x1e'),_0x996d('0x37'),'ListId',_0x3c49fe,_0x996d('0x39'),_0x996d('0x3a')],squel[_0x996d('0x3b')]()[_0x996d('0x3c')]('phone',_0x996d('0x1e'))[_0x996d('0x3c')]('id',_0x996d('0x37'))['field'](LISTID[_0x996d('0x46')](),_0x996d('0x38'))[_0x996d('0x3c')](_0x1324a5['id'][_0x996d('0x46')](),_0x3c49fe)[_0x996d('0x3c')]('NOW()',_0x996d('0x39'))[_0x996d('0x3c')](_0x996d('0x3d'),_0x996d('0x3a'))[_0x996d('0x3e')](_0x996d('0x3f'))[_0x996d('0x41')]('deletedAt\x20IS\x20NULL')[_0x996d('0x41')]('ListId\x20=\x20?',LISTID[_0x996d('0x46')]())['where'](_0x996d('0x49'),squel['str'](hopperContacts))[_0x996d('0x41')]('phone\x20IS\x20NOT\x20NULL'))[_0x996d('0x46')]();return _0x29481a;}return db[_0x996d('0x4b')][_0x996d('0x4c')]({'where':{'type':_0x996d('0x4d')},'attributes':['id',_0x996d('0x4e')],'include':[{'model':db['CmList'],'as':'Lists','where':{'id':LISTID}}]})[_0x996d('0x2b')](function(_0x4767c1){var _0x214dc6=[];if(_0x4767c1){var _0x1f3073;for(var _0x59e8c3=0x0,_0x5c189d;_0x59e8c3<_0x4767c1[_0x996d('0x24')];_0x59e8c3+=0x1){_0x5c189d=_0x4767c1[_0x59e8c3][_0x996d('0x4f')]({'plain':!![]});switch(_0x5c189d['dialCheckDuplicateType']){case _0x996d('0x50'):_0x214dc6[_0x996d('0x2c')](db[_0x996d('0x51')][_0x996d('0x52')](_0x524f78(_0x5c189d,_0x996d('0x53')))[_0x996d('0x2b')](function(){})[_0x996d('0x2e')](_0x4e8624()));break;case _0x996d('0x54'):_0x214dc6[_0x996d('0x2c')](db[_0x996d('0x51')][_0x996d('0x52')](_0x493d49(_0x5c189d,_0x996d('0x53')))[_0x996d('0x2b')](function(){})['catch'](_0x4e8624()));break;default:_0x214dc6['push'](db[_0x996d('0x51')][_0x996d('0x52')](_0x160e5c(_0x5c189d,_0x996d('0x53')))[_0x996d('0x2b')](function(){})['catch'](_0x4e8624()));}}}return _0x214dc6;})[_0x996d('0x55')]()[_0x996d('0x2b')](function(){return db[_0x996d('0x4b')][_0x996d('0x4c')]({'where':{'type':_0x996d('0x4d')},'attributes':['id'],'include':[{'model':db[_0x996d('0x56')],'as':_0x996d('0x57'),'where':{'id':LISTID}}]})[_0x996d('0x2b')](function(_0x43ea6a){var _0x4d736f=[];if(_0x43ea6a){var _0x2180a7;for(var _0x4c009f=0x0,_0x51d50a;_0x4c009f<_0x43ea6a['length'];_0x4c009f+=0x1){_0x51d50a=_0x43ea6a[_0x4c009f]['get']({'plain':!![]});_0x4d736f[_0x996d('0x2c')](db[_0x996d('0x51')][_0x996d('0x52')](_0x26436c(_0x51d50a,_0x996d('0x53')))['then'](function(){})[_0x996d('0x2e')](_0x4e8624()));}}return _0x4d736f;})['all']();})[_0x996d('0x2b')](function(){return db[_0x996d('0x58')][_0x996d('0x4c')]({'attributes':['id',_0x996d('0x4e')],'include':[{'model':db[_0x996d('0x56')],'as':'Lists','where':{'id':LISTID}}]})['then'](function(_0x1dd944){var _0xa3925e=[];if(_0x1dd944){for(var _0x20ebc1=0x0,_0x3ec0d0;_0x20ebc1<_0x1dd944[_0x996d('0x24')];_0x20ebc1+=0x1){_0x3ec0d0=_0x1dd944[_0x20ebc1][_0x996d('0x4f')]({'plain':!![]});switch(_0x3ec0d0[_0x996d('0x4e')]){case _0x996d('0x50'):_0xa3925e[_0x996d('0x2c')](db[_0x996d('0x51')][_0x996d('0x52')](_0x524f78(_0x3ec0d0,'CampaignId'))[_0x996d('0x2b')](function(){})[_0x996d('0x2e')](_0x4e8624()));break;case _0x996d('0x54'):_0xa3925e['push'](db[_0x996d('0x51')][_0x996d('0x52')](_0x493d49(_0x3ec0d0,_0x996d('0x59')))[_0x996d('0x2b')](function(){})['catch'](_0x4e8624()));break;default:_0xa3925e[_0x996d('0x2c')](db[_0x996d('0x51')][_0x996d('0x52')](_0x160e5c(_0x3ec0d0,'CampaignId'))['then'](function(){})[_0x996d('0x2e')](_0x4e8624()));}}}return _0xa3925e;})['all']();})[_0x996d('0x2b')](function(){return db[_0x996d('0x58')][_0x996d('0x4c')]({'attributes':['id'],'include':[{'model':db[_0x996d('0x56')],'as':_0x996d('0x57'),'where':{'id':LISTID}}]})[_0x996d('0x2b')](function(_0x205a40){var _0x4369fc=[];if(_0x205a40){for(var _0x19cf57=0x0,_0x3d99fa;_0x19cf57<_0x205a40[_0x996d('0x24')];_0x19cf57+=0x1){_0x3d99fa=_0x205a40[_0x19cf57]['get']({'plain':!![]});_0x4369fc[_0x996d('0x2c')](db[_0x996d('0x51')]['query'](_0x26436c(_0x3d99fa,_0x996d('0x59')))['then'](function(){})[_0x996d('0x2e')](_0x4e8624()));}}return _0x4369fc;})['all']();})['catch'](function(_0x122eb8){logger[_0x996d('0x16')](_0x996d('0x5a'),'generalCheckHopper',_0x122eb8[_0x996d('0x18')]);});}var processPromises=function(_0x519360){return BPromise['all'](promises)['then'](function(_0x3a3d48){})[_0x996d('0x2e')](function(_0x23bbc0){logger[_0x996d('0x16')](_0x996d('0x5b'),JSON[_0x996d('0x5c')](_0x23bbc0));})[_0x996d('0x5d')](function(){socket[_0x996d('0x5e')](_0x996d('0x5f')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x519360){return _0x519360[_0x996d('0x60')]();}});};var endCsv=function(){return BPromise[_0x996d('0x61')]()[_0x996d('0x2b')](function(){if(hopperContacts){return checkHopper();}})[_0x996d('0x2b')](function(){socket[_0x996d('0x5e')](_0x996d('0x5f')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x996d('0x62')](FILEPATH);}catch(_0x5380d9){logger[_0x996d('0x16')]('Unable\x20to\x20delete\x20temp\x20file:',JSON['stringify'](_0x5380d9));}finally{process[_0x996d('0x63')](0x0);}});};process['on'](_0x996d('0x64'),function(){logger[_0x996d('0x65')](_0x996d('0x66'));endCsv();});function main(){return BPromise[_0x996d('0x61')]()[_0x996d('0x2b')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x996d('0x10')](',');return db[_0x996d('0x28')]['findAll']({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x996d('0x2b')](function(_0xce31db){var _0x296427=fs[_0x996d('0x67')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x996d('0x68')](_0x296427,{'header':!![],'skipEmptyLines':!![],'step':function(_0x1bb670,_0x35491d){total+=0x1;var _0x3f06e1=total;promises[_0x996d('0x2c')](checkRow(_0x1bb670,_0xce31db,_0x3f06e1)[_0x996d('0x2b')](function(){success+=0x1;})['catch'](function(_0x133892){if(_0x133892[_0x996d('0x16')]){errors+=0x1;delete _0x133892[_0x996d('0x16')];}else if(_0x133892[_0x996d('0x26')]){duplicates+=0x1;delete _0x133892[_0x996d('0x26')];}rows[_0x996d('0x2c')](_0x133892);}));if(total%0xc8===0x0){_0x35491d['pause']();return processPromises(_0x35491d);}},'complete':function(){return processPromises()['then'](function(){logger['info']('CSV\x20parsed\x20correctly!');endCsv();});},'error':function(_0x3bce9d,_0x190721){logger['info'](_0x996d('0x69'),JSON['stringify'](_0x3bce9d));endCsv();}});})[_0x996d('0x2e')](function(_0x5207fb){logger[_0x996d('0x16')](_0x996d('0x6a'),JSON[_0x996d('0x5c')](_0x5207fb));});}main();
\ No newline at end of file
index f00297c..0f0224e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5df0=['campaigns','each','finish','length','affectedRows','unlink','argv','server/files/tmp','existsSync','file\x20doesn\x27t\x20exists','parse','binding\x20doesn\x27t\x20exists','firstName\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','papaparse','bluebird','moment','squel','ioredis','../../../mysqldb','redis','localhost','socket.io-emitter','format','test','select','field','phone','from','join','.id\x20=\x20','where','\x20=\x20','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.UserId','insert','cm_hopper','fromQuery','scheduledat','ContactId','ListId','createdAt','recallme','fields','.CmListId','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_contacts.ListId','into','updatedAt','cm_contacts','.CmListId\x20=\x20?','ListId\x20=\x20?','concat','keys','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','min_id','group','info','Received\x20SIGINT','error','exit','errors','sequelize','query','spread','push','catch','message','main','stringify','send','start','binding','root','.csv','writeFileSync','createReadStream','data','rows','trim','replace','YYYY-MM-DD\x20HH:mm:ss','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','priority','isNaN','isNumber','includes','agent\x20not\x20exists','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','SystemRow','appendFileSync','emit','contact:import:','Abort\x20parser','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','isNil',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','voice_queues','VoiceQueueId','CampaignId','campaigns_has_cm_blacklists'];(function(_0x7033ad,_0x4f191a){var _0x4117fb=function(_0x537976){while(--_0x537976){_0x7033ad['push'](_0x7033ad['shift']());}};_0x4117fb(++_0x4f191a);}(_0x5df0,0x118));var _0x05df=function(_0x172919,_0x20d210){_0x172919=_0x172919-0x0;var _0x519246=_0x5df0[_0x172919];return _0x519246;};'use strict';var fs=require('fs');var path=require(_0x05df('0x0'));var _=require(_0x05df('0x1'));var Papa=require(_0x05df('0x2'));var util=require('util');var BPromise=require(_0x05df('0x3'));var moment=require(_0x05df('0x4'));var squel=require(_0x05df('0x5'));var Redis=require(_0x05df('0x6'));var db=require(_0x05df('0x7'))['db'];var config=require('../../../config/environment');var logger=require('../../../config/logger')('import');config[_0x05df('0x8')]=_['defaults'](config[_0x05df('0x8')],{'host':_0x05df('0x9'),'port':0x18eb});var socket=require(_0x05df('0xa'))(new Redis(config[_0x05df('0x8')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0x05df('0xb')]('YYYY-MM-DD\x20HH:mm:ss');function isEmail(_0x433d82){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))*$/[_0x05df('0xc')](_0x433d82);}function selectNotIn(_0x36a3f0,_0xc6bbf8,_0x5dc725,_0x4ca1e1,_0x27389e){return squel[_0x05df('0xd')]()[_0x05df('0xe')](_0x05df('0xf'))[_0x05df('0x10')](_0x4ca1e1)[_0x05df('0x11')](_0xc6bbf8,null,_0xc6bbf8+_0x05df('0x12')+_0x4ca1e1+'.'+_0x5dc725)[_0x05df('0x13')](_0x4ca1e1+'.'+_0x5dc725+_0x05df('0x14')+_0x36a3f0+'.'+_0x5dc725)[_0x05df('0x13')](_0xc6bbf8+'.dialCheckDuplicateType\x20IN\x20('+_0x27389e['join']()+')');}function insertCmHopper(_0x34a772,_0x544163,_0x476d1d,_0x402bf4,_0x2a5206){var _0x4ec35d=[_0x05df('0x15'),_0x05df('0x16'),_0x05df('0x17'),'cm_contacts.ListId',_0x544163+'.'+_0x402bf4,_0x05df('0x18'),_0x05df('0x19'),'cm_contacts.priority',_0x05df('0x1a'),'\x22'+_0x2a5206+'\x22'];return squel[_0x05df('0x1b')]()['into'](_0x05df('0x1c'))[_0x05df('0x1d')]([_0x05df('0xf'),_0x05df('0x1e'),_0x05df('0x1f'),_0x05df('0x20'),_0x402bf4,_0x05df('0x21'),'updatedAt','priority','UserId',_0x05df('0x22')],squel[_0x05df('0xd')]()[_0x05df('0x23')](_0x4ec35d)[_0x05df('0x10')](_0x544163)[_0x05df('0x11')]('cm_contacts',null,'cm_contacts.ListId\x20=\x20'+_0x544163+_0x05df('0x24'))['join'](_0x476d1d,null,_0x476d1d+_0x05df('0x12')+_0x544163+'.'+_0x402bf4)[_0x05df('0x13')](_0x544163+'.CmListId\x20=\x20?',_0x34a772)[_0x05df('0x13')](_0x05df('0x25'),NOW)[_0x05df('0x13')](_0x05df('0x26'),selectNotIn(_0x544163,_0x476d1d,_0x402bf4,_0x05df('0x1c'),[_0x05df('0x27'),_0x05df('0x28')]))[_0x05df('0x13')](_0x05df('0x26'),selectNotIn(_0x544163,_0x476d1d,_0x402bf4,'cm_hopper',[_0x05df('0x27')])))[_0x05df('0x29')]();}function insertCmHopperBlack(_0x21cbf2,_0x1e52e7,_0x1a5fe0,_0xe1f23c){var _0x31bb5d=[_0x05df('0x15'),_0x05df('0x17'),_0x05df('0x2a'),_0x1e52e7+'.'+_0xe1f23c,_0x05df('0x18'),_0x05df('0x19')];return squel[_0x05df('0x1b')]()[_0x05df('0x2b')]('cm_hopper_black')['fromQuery']([_0x05df('0xf'),'ContactId',_0x05df('0x20'),_0xe1f23c,_0x05df('0x21'),_0x05df('0x2c')],squel['select']()['fields'](_0x31bb5d)[_0x05df('0x10')](_0x1e52e7)[_0x05df('0x11')](_0x05df('0x2d'),null,'cm_contacts.ListId\x20=\x20'+_0x1e52e7+_0x05df('0x24'))[_0x05df('0x11')](_0x1a5fe0,null,_0x1a5fe0+_0x05df('0x12')+_0x1e52e7+'.'+_0xe1f23c)[_0x05df('0x13')](_0x1e52e7+_0x05df('0x2e'),_0x21cbf2)['where'](_0x05df('0x25'),NOW)[_0x05df('0x13')](_0x05df('0x26'),squel[_0x05df('0xd')]()[_0x05df('0xe')](_0x05df('0xf'))[_0x05df('0x10')]('cm_hopper_black')[_0x05df('0x13')](_0x05df('0x2f'),_0x21cbf2)[_0x05df('0x13')](_0xe1f23c+'\x20=\x20?',_0x1e52e7+'.'+_0xe1f23c)))[_0x05df('0x29')]();}function insertCmContact(_0x4db63d,_0x36f5cc,_0x1056cc,_0x3e1f97){var _0x5af564=_[_0x05df('0x30')](_[_0x05df('0x31')](_0x3e1f97),[_0x05df('0x20'),_0x05df('0x32'),_0x05df('0x21'),_0x05df('0x2c')]);return squel[_0x05df('0x1b')]()[_0x05df('0x2b')](_0x05df('0x2d'))[_0x05df('0x1d')](_0x5af564,squel[_0x05df('0xd')]()[_0x05df('0x23')](_0x5af564)[_0x05df('0x10')](_0x36f5cc)['where']('('+_0x1056cc[_0x05df('0x11')](',')+_0x05df('0x33'),squel[_0x05df('0xd')]()[_0x05df('0x23')](_0x1056cc)[_0x05df('0x10')](_0x05df('0x2d'))[_0x05df('0x13')](_0x05df('0x2f'),_0x4db63d)[_0x05df('0x13')](_0x05df('0x34')))[_0x05df('0x13')](_0x05df('0x35'),squel[_0x05df('0xd')]()[_0x05df('0xe')](_0x05df('0x36'),_0x05df('0x37'))[_0x05df('0x10')](_0x36f5cc)[_0x05df('0x38')](_0x1056cc[_0x05df('0x11')](','))))[_0x05df('0x29')]();}function handleStop(){logger[_0x05df('0x39')](_0x05df('0x3a'));stopped=!![];}function handleUncaughtException(_0x2a99d1){logger[_0x05df('0x3b')](_0x2a99d1['message']);process[_0x05df('0x3c')](0x1);}function handleError(_0x4f06af,_0x5f5bfc){stats[_0x05df('0x3d')]['push']({'name':_0x5f5bfc['code'],'message':_0x5f5bfc['message'],'row':_0x4f06af});}function handleQuery(_0x228a7c){logger[_0x05df('0x39')](_0x228a7c);return db[_0x05df('0x3e')][_0x05df('0x3f')](_0x228a7c)[_0x05df('0x40')](function(_0x5e96aa){results[_0x05df('0x41')](_0x5e96aa);})[_0x05df('0x42')](function(_0x146362){logger[_0x05df('0x3b')](_0x146362[_0x05df('0x43')]);});}function main(_0x5485bf,_0x213df1,_0x2ec9ab,_0x561b12){logger['info'](_0x05df('0x44'),_0x5485bf,JSON[_0x05df('0x45')](_0x213df1));process[_0x05df('0x46')](_0x05df('0x47'));var _0x5db780=_0x213df1[_0x05df('0x48')];var _0xa2844f=_0x213df1['socket_timestamp'];var _0x44968e=path[_0x05df('0x11')](config[_0x05df('0x49')],'server/files/tmp',_0xa2844f+_0x05df('0x4a'));var _0x5e7926=_['keys'](_0x5db780)[_0x05df('0x11')]();logger[_0x05df('0x39')]('header',_0x5e7926);fs[_0x05df('0x4b')](_0x44968e,_0x5e7926+'\x0a');Papa['parse'](fs[_0x05df('0x4c')](_0x5485bf),{'header':!![],'skipEmptyLines':!![],'step':function(_0x2b7797,_0xac16e5){try{for(var _0x5a73c6=0x0,_0x393dff=[];_0x5a73c6<_0x2b7797[_0x05df('0x4d')]['length'];_0x5a73c6++){stats[_0x05df('0x4e')]+=0x1;if(_0x2b7797['errors'][_0x5a73c6]){handleError(_0x2b7797[_0x05df('0x4d')][_0x5a73c6],_0x2b7797[_0x05df('0x3d')][_0x5a73c6]);}else{var _0x21d404=[];for(var _0x53f349 in _0x5db780){if(_0x5db780['hasOwnProperty'](_0x53f349)){if(_0x2b7797[_0x05df('0x4d')][_0x5a73c6][_0x5db780[_0x53f349]]){var _0x55373d=_[_0x05df('0x4f')](_0x2b7797[_0x05df('0x4d')][_0x5a73c6][_0x5db780[_0x53f349]][_0x05df('0x50')](/"/g,'\x27'));switch(_0x53f349){case _0x05df('0x1e'):var _0x5582ed=moment(_0x55373d,_0x05df('0x51'),!![]);if(_0x5582ed[_0x05df('0x52')]()){_0x393dff[_0x05df('0x41')]('\x22'+_0x55373d+'\x22');}else{_0x21d404[_0x05df('0x41')](_0x05df('0x53'));}break;case _0x05df('0x54'):var _0x395eb0=parseInt(_0x55373d);_0x55373d=_[_0x05df('0x55')](_0x395eb0)||_0x395eb0<0x0||_0x395eb0>0x4?_0x561b12?0x3:0x2:_0x395eb0;_0x393dff[_0x05df('0x41')]('\x22'+_0x55373d+'\x22');break;case'UserId':var _0x1fd528=parseInt(_0x55373d);if(_[_0x05df('0x56')](_0x1fd528)&&_[_0x05df('0x57')](_0x2ec9ab,_0x1fd528)){_0x393dff[_0x05df('0x41')]('\x22'+_0x1fd528+'\x22');}else{_0x21d404['push'](_0x05df('0x58'));}break;case'email':if(isEmail(_0x55373d)){_0x393dff['push']('\x22'+_0x55373d+'\x22');}else{_0x21d404[_0x05df('0x41')]('email\x20wrong\x20format');}break;case _0x05df('0x59'):var _0x3954c1=moment(_0x55373d,_0x05df('0x5a'),!![]);if(_0x3954c1[_0x05df('0x52')]()){_0x393dff[_0x05df('0x41')]('\x22'+_0x55373d+'\x22');}else{_0x21d404['push'](_0x05df('0x5b'));}break;default:_0x393dff[_0x05df('0x41')]('\x22'+_0x55373d+'\x22');}}else{switch(_0x53f349){case _0x05df('0x5c'):case _0x05df('0xf'):_0x21d404[_0x05df('0x41')](_0x53f349+_0x05df('0x5d'));break;default:_0x393dff['push']('\x22\x22');}}}}if(_0x21d404['length']){handleError(_0x2b7797[_0x05df('0x4d')][_0x5a73c6],{'code':_0x05df('0x5e'),'message':_0x21d404[_0x05df('0x11')]()});}else{fs[_0x05df('0x5f')](_0x44968e,_0x393dff[_0x05df('0x11')]()+'\x0a');}_0x393dff=[];}if(!(stats[_0x05df('0x4e')]%0xc8)){socket[_0x05df('0x60')](_0x05df('0x61')+_0xa2844f,stats);stats[_0x05df('0x3d')]=[];}}if(stopped){logger[_0x05df('0x39')](_0x05df('0x62'));_0xac16e5['abort']();}}catch(_0xa09ead){handleError(_0x2b7797['data'][_0x5a73c6],{'code':_0x05df('0x63'),'message':_0xa09ead[_0x05df('0x43')]});logger[_0x05df('0x3b')](_0x05df('0x64'),_0xa09ead[_0x05df('0x43')]);}},'complete':function(){try{var _0x2c0ed6=[];var _0x496f10='cm_contacts';if(_0x213df1[_0x05df('0x65')]&&_0x213df1[_0x05df('0x65')]['length']){_0x496f10=_0x05df('0x66')+_0xa2844f;_0x2c0ed6[_0x05df('0x41')](_0x05df('0x67')+_0x496f10+_0x05df('0x68'));}var _0xe30c6c=util[_0x05df('0xb')](_0x05df('0x69'),_0x44968e,_0x496f10,_0x5e7926,_0x213df1[_0x05df('0x20')],_0x213df1[_0x05df('0x32')]||null,NOW,NOW);if(_[_0x05df('0x6a')](_0x5db780[_0x05df('0x1e')])){_0xe30c6c+=_0x05df('0x6b');}_0x2c0ed6[_0x05df('0x41')](_0xe30c6c);if(_0x213df1['duplicates']&&_0x213df1['duplicates']['length']){_0x2c0ed6['push'](insertCmContact(_0x213df1['ListId'],_0x496f10,_0x213df1[_0x05df('0x65')],_0x5db780));_0x2c0ed6[_0x05df('0x41')](_0x05df('0x6c')+_0x496f10+';');}_0x2c0ed6['push'](insertCmHopper(_0x213df1[_0x05df('0x20')],'voice_queues_has_cm_lists',_0x05df('0x6d'),'VoiceQueueId',_0x561b12));_0x2c0ed6[_0x05df('0x41')](insertCmHopperBlack(_0x213df1[_0x05df('0x20')],'voice_queues_has_cm_blacklists',_0x05df('0x6d'),_0x05df('0x6e')));_0x2c0ed6['push'](insertCmHopper(_0x213df1[_0x05df('0x20')],'campaigns_has_cm_lists','campaigns',_0x05df('0x6f'),_0x561b12));_0x2c0ed6[_0x05df('0x41')](insertCmHopperBlack(_0x213df1[_0x05df('0x20')],_0x05df('0x70'),_0x05df('0x71'),_0x05df('0x6f')));BPromise[_0x05df('0x72')](_0x2c0ed6,handleQuery)['then'](function(_0x3e5add){stats[_0x05df('0x73')]=!![];stats['affectedRows']=_0x213df1[_0x05df('0x65')]&&_0x213df1['duplicates'][_0x05df('0x74')]?results[0x2][_0x05df('0x75')]:results[0x0]['affectedRows'];socket[_0x05df('0x60')](_0x05df('0x61')+_0xa2844f,stats);fs[_0x05df('0x76')](_0x5485bf);fs[_0x05df('0x76')](_0x44968e);process[_0x05df('0x3c')](0x0);})['catch'](function(_0x3adc95){logger[_0x05df('0x3b')](_0x3adc95[_0x05df('0x43')]);process[_0x05df('0x3c')](0x1);});}catch(_0x5d3368){logger[_0x05df('0x3b')]('complete',_0x5d3368[_0x05df('0x43')]);process[_0x05df('0x3c')](0x1);}},'error':function(_0x42e6d3,_0x4c5d7c,_0x6314c3,_0x58c659){throw new Error(_0x58c659);}});}function validate(){if(process['argv']&&process[_0x05df('0x77')]['length']<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x72e837=path[_0x05df('0x11')](config[_0x05df('0x49')],_0x05df('0x78'),process['argv'][0x2]);if(!fs[_0x05df('0x79')](_0x72e837)){throw new Error(_0x05df('0x7a'));}var _0x489f8f={};try{_0x489f8f=JSON[_0x05df('0x7b')](process[_0x05df('0x77')][0x3]);if(!_0x489f8f[_0x05df('0x48')]){throw new Error(_0x05df('0x7c'));}if(!_0x489f8f[_0x05df('0x48')][_0x05df('0xf')]){throw new Error('phone\x20is\x20mandatory');}if(!_0x489f8f[_0x05df('0x48')][_0x05df('0x5c')]){throw new Error(_0x05df('0x7d'));}var _0x3cbcfe=0x0;if(_0x489f8f[_0x05df('0x48')]['UserId']){_0x3cbcfe=0x1;}if(!_0x489f8f[_0x05df('0x20')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x54650c){throw new Error(_0x05df('0x7e'));}var _0x10ae52=[];try{_0x10ae52=_[_0x05df('0x7f')](JSON[_0x05df('0x7b')](process['argv'][0x4]),'id');}catch(_0xea2151){logger[_0x05df('0x39')](_0x05df('0x80'));}main(_0x72e837,_0x489f8f,_0x10ae52,_0x3cbcfe);}validate();process['on'](_0x05df('0x81'),handleStop);process['on'](_0x05df('0x82'),handleUncaughtException);
\ No newline at end of file
+var _0x760b=['.CmListId','.id\x20=\x20','.CmListId\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_contacts.ListId','cm_hopper_black','ListId','cm_contacts.createdAt\x20=\x20?','ListId\x20=\x20?','\x20=\x20?','concat','CompanyId','deletedAt\x20IS\x20NULL','id\x20IN\x20?','min_id','group','info','Received\x20SIGINT','error','message','exit','errors','push','code','sequelize','query','spread','catch','stringify','start','binding','socket_timestamp','server/files/tmp','.csv','header','parse','createReadStream','data','length','rows','hasOwnProperty','trim','YYYY-MM-DD\x20HH:mm:ss','isValid','isNaN','isNumber','includes','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','\x20not\x20specified','appendFileSync','contact:import:','Abort\x20parser','SystemError','step','duplicates','cm_contacts_','\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','voice_queues_has_cm_lists','voice_queues','VoiceQueueId','voice_queues_has_cm_blacklists','campaigns_has_cm_lists','campaigns','CampaignId','then','affectedRows','emit','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','root','existsSync','file\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','path','lodash','util','bluebird','moment','squel','ioredis','../../../mysqldb','../../../config/logger','import','redis','defaults','socket.io-emitter','format','test','select','field','from','join','where','\x20=\x20','cm_contacts.phone','cm_contacts.id','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','phone','scheduledat','createdAt','updatedAt','priority','UserId','recallme','fields','cm_contacts','cm_contacts.ListId\x20=\x20'];(function(_0x24a24f,_0x4da1eb){var _0x25e2e5=function(_0x1c76de){while(--_0x1c76de){_0x24a24f['push'](_0x24a24f['shift']());}};_0x25e2e5(++_0x4da1eb);}(_0x760b,0x1dc));var _0xb760=function(_0x461ef9,_0x3c082a){_0x461ef9=_0x461ef9-0x0;var _0x2b4c4f=_0x760b[_0x461ef9];return _0x2b4c4f;};'use strict';var fs=require('fs');var path=require(_0xb760('0x0'));var _=require(_0xb760('0x1'));var Papa=require('papaparse');var util=require(_0xb760('0x2'));var BPromise=require(_0xb760('0x3'));var moment=require(_0xb760('0x4'));var squel=require(_0xb760('0x5'));var Redis=require(_0xb760('0x6'));var db=require(_0xb760('0x7'))['db'];var config=require('../../../config/environment');var logger=require(_0xb760('0x8'))(_0xb760('0x9'));config[_0xb760('0xa')]=_[_0xb760('0xb')](config[_0xb760('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xb760('0xc'))(new Redis(config[_0xb760('0xa')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0xb760('0xd')]('YYYY-MM-DD\x20HH:mm:ss');function isEmail(_0x41439c){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))*$/[_0xb760('0xe')](_0x41439c);}function selectNotIn(_0x36b66c,_0x518eff,_0x4d577e,_0x3a8c47,_0x3d229a){return squel[_0xb760('0xf')]()[_0xb760('0x10')]('phone')[_0xb760('0x11')](_0x3a8c47)[_0xb760('0x12')](_0x518eff,null,_0x518eff+'.id\x20=\x20'+_0x3a8c47+'.'+_0x4d577e)[_0xb760('0x13')](_0x3a8c47+'.'+_0x4d577e+_0xb760('0x14')+_0x36b66c+'.'+_0x4d577e)[_0xb760('0x13')](_0x518eff+'.dialCheckDuplicateType\x20IN\x20('+_0x3d229a[_0xb760('0x12')]()+')');}function insertCmHopper(_0x1f84d6,_0x149c3d,_0x369d43,_0x4f91f9,_0x2d5fee){var _0x28f59c=[_0xb760('0x15'),'cm_contacts.scheduledat',_0xb760('0x16'),'cm_contacts.ListId',_0x149c3d+'.'+_0x4f91f9,_0xb760('0x17'),_0xb760('0x18'),'cm_contacts.priority',_0xb760('0x19'),'\x22'+_0x2d5fee+'\x22'];return squel[_0xb760('0x1a')]()[_0xb760('0x1b')](_0xb760('0x1c'))[_0xb760('0x1d')]([_0xb760('0x1e'),_0xb760('0x1f'),'ContactId','ListId',_0x4f91f9,_0xb760('0x20'),_0xb760('0x21'),_0xb760('0x22'),_0xb760('0x23'),_0xb760('0x24')],squel['select']()[_0xb760('0x25')](_0x28f59c)[_0xb760('0x11')](_0x149c3d)[_0xb760('0x12')](_0xb760('0x26'),null,_0xb760('0x27')+_0x149c3d+_0xb760('0x28'))['join'](_0x369d43,null,_0x369d43+_0xb760('0x29')+_0x149c3d+'.'+_0x4f91f9)[_0xb760('0x13')](_0x149c3d+_0xb760('0x2a'),_0x1f84d6)['where']('cm_contacts.createdAt\x20=\x20?',NOW)['where'](_0xb760('0x2b'),selectNotIn(_0x149c3d,_0x369d43,_0x4f91f9,_0xb760('0x1c'),[_0xb760('0x2c'),_0xb760('0x2d')]))[_0xb760('0x13')](_0xb760('0x2b'),selectNotIn(_0x149c3d,_0x369d43,_0x4f91f9,_0xb760('0x1c'),['\x22always\x22'])))[_0xb760('0x2e')]();}function insertCmHopperBlack(_0x33b0e5,_0x105e94,_0x566093,_0xa8eda5){var _0x480836=[_0xb760('0x15'),'cm_contacts.id',_0xb760('0x2f'),_0x105e94+'.'+_0xa8eda5,'cm_contacts.createdAt','cm_contacts.updatedAt'];return squel[_0xb760('0x1a')]()[_0xb760('0x1b')](_0xb760('0x30'))['fromQuery']([_0xb760('0x1e'),'ContactId',_0xb760('0x31'),_0xa8eda5,_0xb760('0x20'),_0xb760('0x21')],squel[_0xb760('0xf')]()['fields'](_0x480836)['from'](_0x105e94)[_0xb760('0x12')]('cm_contacts',null,_0xb760('0x27')+_0x105e94+_0xb760('0x28'))[_0xb760('0x12')](_0x566093,null,_0x566093+_0xb760('0x29')+_0x105e94+'.'+_0xa8eda5)['where'](_0x105e94+_0xb760('0x2a'),_0x33b0e5)['where'](_0xb760('0x32'),NOW)[_0xb760('0x13')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0xb760('0xf')]()[_0xb760('0x10')](_0xb760('0x1e'))[_0xb760('0x11')](_0xb760('0x30'))[_0xb760('0x13')](_0xb760('0x33'),_0x33b0e5)[_0xb760('0x13')](_0xa8eda5+_0xb760('0x34'),_0x105e94+'.'+_0xa8eda5)))[_0xb760('0x2e')]();}function insertCmContact(_0x58a52c,_0x3415f0,_0x2b8493,_0x1fe8a6){var _0x586ac0=_[_0xb760('0x35')](_['keys'](_0x1fe8a6),[_0xb760('0x31'),_0xb760('0x36'),'createdAt',_0xb760('0x21')]);return squel['insert']()[_0xb760('0x1b')](_0xb760('0x26'))[_0xb760('0x1d')](_0x586ac0,squel[_0xb760('0xf')]()[_0xb760('0x25')](_0x586ac0)[_0xb760('0x11')](_0x3415f0)[_0xb760('0x13')]('('+_0x2b8493['join'](',')+')\x20NOT\x20IN\x20?',squel[_0xb760('0xf')]()['fields'](_0x2b8493)[_0xb760('0x11')](_0xb760('0x26'))[_0xb760('0x13')]('ListId\x20=\x20?',_0x58a52c)[_0xb760('0x13')](_0xb760('0x37')))['where'](_0xb760('0x38'),squel['select']()[_0xb760('0x10')]('MIN(id)',_0xb760('0x39'))[_0xb760('0x11')](_0x3415f0)[_0xb760('0x3a')](_0x2b8493[_0xb760('0x12')](','))))[_0xb760('0x2e')]();}function handleStop(){logger[_0xb760('0x3b')](_0xb760('0x3c'));stopped=!![];}function handleUncaughtException(_0x42e215){logger[_0xb760('0x3d')](_0x42e215[_0xb760('0x3e')]);process[_0xb760('0x3f')](0x1);}function handleError(_0x426451,_0xf3dbe5){stats[_0xb760('0x40')][_0xb760('0x41')]({'name':_0xf3dbe5[_0xb760('0x42')],'message':_0xf3dbe5[_0xb760('0x3e')],'row':_0x426451});}function handleQuery(_0x1cb96d){logger[_0xb760('0x3b')](_0x1cb96d);return db[_0xb760('0x43')][_0xb760('0x44')](_0x1cb96d)[_0xb760('0x45')](function(_0x59b88d){results[_0xb760('0x41')](_0x59b88d);})[_0xb760('0x46')](function(_0x1b12ae){logger[_0xb760('0x3d')](_0x1b12ae[_0xb760('0x3e')]);});}function main(_0x5f10f8,_0x5be6c2,_0x129bbb,_0x460dab){logger[_0xb760('0x3b')]('main',_0x5f10f8,JSON[_0xb760('0x47')](_0x5be6c2));process['send'](_0xb760('0x48'));var _0x4c07af=_0x5be6c2[_0xb760('0x49')];var _0x403086=_0x5be6c2[_0xb760('0x4a')];var _0x17c3a1=path['join'](config['root'],_0xb760('0x4b'),_0x403086+_0xb760('0x4c'));var _0x1d1e63=_['keys'](_0x4c07af)[_0xb760('0x12')]();logger[_0xb760('0x3b')](_0xb760('0x4d'),_0x1d1e63);fs['writeFileSync'](_0x17c3a1,_0x1d1e63+'\x0a');Papa[_0xb760('0x4e')](fs[_0xb760('0x4f')](_0x5f10f8),{'header':!![],'skipEmptyLines':!![],'step':function(_0x52ef01,_0x353297){try{for(var _0x4d23d5=0x0,_0x3f325c=[];_0x4d23d5<_0x52ef01[_0xb760('0x50')][_0xb760('0x51')];_0x4d23d5++){stats[_0xb760('0x52')]+=0x1;if(_0x52ef01['errors'][_0x4d23d5]){handleError(_0x52ef01[_0xb760('0x50')][_0x4d23d5],_0x52ef01[_0xb760('0x40')][_0x4d23d5]);}else{var _0x568ae2=[];for(var _0x1c9d84 in _0x4c07af){if(_0x4c07af[_0xb760('0x53')](_0x1c9d84)){if(_0x52ef01[_0xb760('0x50')][_0x4d23d5][_0x4c07af[_0x1c9d84]]){var _0x15fd05=_[_0xb760('0x54')](_0x52ef01['data'][_0x4d23d5][_0x4c07af[_0x1c9d84]]['replace'](/"/g,'\x27'));switch(_0x1c9d84){case _0xb760('0x1f'):var _0x32b3de=moment(_0x15fd05,_0xb760('0x55'),!![]);if(_0x32b3de[_0xb760('0x56')]()){_0x3f325c['push']('\x22'+_0x15fd05+'\x22');}else{_0x568ae2[_0xb760('0x41')]('scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)');}break;case _0xb760('0x22'):var _0x1eaec0=parseInt(_0x15fd05);_0x15fd05=_[_0xb760('0x57')](_0x1eaec0)||_0x1eaec0<0x0||_0x1eaec0>0x4?_0x460dab?0x3:0x2:_0x1eaec0;_0x3f325c[_0xb760('0x41')]('\x22'+_0x15fd05+'\x22');break;case _0xb760('0x23'):var _0x50d4a4=parseInt(_0x15fd05);if(_[_0xb760('0x58')](_0x50d4a4)&&_[_0xb760('0x59')](_0x129bbb,_0x50d4a4)){_0x3f325c[_0xb760('0x41')]('\x22'+_0x50d4a4+'\x22');}else{_0x568ae2[_0xb760('0x41')](_0xb760('0x5a'));}break;case _0xb760('0x5b'):if(isEmail(_0x15fd05)){_0x3f325c[_0xb760('0x41')]('\x22'+_0x15fd05+'\x22');}else{_0x568ae2[_0xb760('0x41')](_0xb760('0x5c'));}break;case _0xb760('0x5d'):var _0xba8797=moment(_0x15fd05,_0xb760('0x5e'),!![]);if(_0xba8797[_0xb760('0x56')]()){_0x3f325c[_0xb760('0x41')]('\x22'+_0x15fd05+'\x22');}else{_0x568ae2[_0xb760('0x41')](_0xb760('0x5f'));}break;default:_0x3f325c[_0xb760('0x41')]('\x22'+_0x15fd05+'\x22');}}else{switch(_0x1c9d84){case'firstName':case _0xb760('0x1e'):_0x568ae2['push'](_0x1c9d84+_0xb760('0x60'));break;default:_0x3f325c[_0xb760('0x41')]('\x22\x22');}}}}if(_0x568ae2[_0xb760('0x51')]){handleError(_0x52ef01[_0xb760('0x50')][_0x4d23d5],{'code':'SystemRow','message':_0x568ae2[_0xb760('0x12')]()});}else{fs[_0xb760('0x61')](_0x17c3a1,_0x3f325c[_0xb760('0x12')]()+'\x0a');}_0x3f325c=[];}if(!(stats[_0xb760('0x52')]%0xc8)){socket['emit'](_0xb760('0x62')+_0x403086,stats);stats['errors']=[];}}if(stopped){logger['info'](_0xb760('0x63'));_0x353297['abort']();}}catch(_0x5f1661){handleError(_0x52ef01[_0xb760('0x50')][_0x4d23d5],{'code':_0xb760('0x64'),'message':_0x5f1661[_0xb760('0x3e')]});logger[_0xb760('0x3d')](_0xb760('0x65'),_0x5f1661[_0xb760('0x3e')]);}},'complete':function(){try{var _0x2b24fc=[];var _0xedf5a2=_0xb760('0x26');if(_0x5be6c2[_0xb760('0x66')]&&_0x5be6c2['duplicates']['length']){_0xedf5a2=_0xb760('0x67')+_0x403086;_0x2b24fc[_0xb760('0x41')]('CREATE\x20TABLE\x20'+_0xedf5a2+_0xb760('0x68'));}var _0x45f8e3=util[_0xb760('0xd')](_0xb760('0x69'),_0x17c3a1,_0xedf5a2,_0x1d1e63,_0x5be6c2[_0xb760('0x31')],_0x5be6c2[_0xb760('0x36')]||null,NOW,NOW);if(_[_0xb760('0x6a')](_0x4c07af[_0xb760('0x1f')])){_0x45f8e3+=',\x20scheduledAt\x20=\x20NOW()';}_0x2b24fc[_0xb760('0x41')](_0x45f8e3);if(_0x5be6c2['duplicates']&&_0x5be6c2[_0xb760('0x66')][_0xb760('0x51')]){_0x2b24fc[_0xb760('0x41')](insertCmContact(_0x5be6c2[_0xb760('0x31')],_0xedf5a2,_0x5be6c2[_0xb760('0x66')],_0x4c07af));_0x2b24fc[_0xb760('0x41')]('DROP\x20TABLE\x20'+_0xedf5a2+';');}_0x2b24fc[_0xb760('0x41')](insertCmHopper(_0x5be6c2[_0xb760('0x31')],_0xb760('0x6b'),_0xb760('0x6c'),_0xb760('0x6d'),_0x460dab));_0x2b24fc['push'](insertCmHopperBlack(_0x5be6c2['ListId'],_0xb760('0x6e'),_0xb760('0x6c'),_0xb760('0x6d')));_0x2b24fc[_0xb760('0x41')](insertCmHopper(_0x5be6c2[_0xb760('0x31')],_0xb760('0x6f'),_0xb760('0x70'),'CampaignId',_0x460dab));_0x2b24fc[_0xb760('0x41')](insertCmHopperBlack(_0x5be6c2[_0xb760('0x31')],'campaigns_has_cm_blacklists',_0xb760('0x70'),_0xb760('0x71')));BPromise['each'](_0x2b24fc,handleQuery)[_0xb760('0x72')](function(_0xfef049){stats['finish']=!![];stats['affectedRows']=_0x5be6c2[_0xb760('0x66')]&&_0x5be6c2[_0xb760('0x66')][_0xb760('0x51')]?results[0x2][_0xb760('0x73')]:results[0x0][_0xb760('0x73')];socket[_0xb760('0x74')](_0xb760('0x62')+_0x403086,stats);fs['unlink'](_0x5f10f8);fs['unlink'](_0x17c3a1);process['exit'](0x0);})[_0xb760('0x46')](function(_0x4dd8a0){logger[_0xb760('0x3d')](_0x4dd8a0[_0xb760('0x3e')]);process[_0xb760('0x3f')](0x1);});}catch(_0x1abcad){logger['error'](_0xb760('0x75'),_0x1abcad[_0xb760('0x3e')]);process[_0xb760('0x3f')](0x1);}},'error':function(_0x291e03,_0x61d55f,_0x7c1fe0,_0x178204){throw new Error(_0x178204);}});}function validate(){if(process[_0xb760('0x76')]&&process['argv'][_0xb760('0x51')]<0x4){throw new Error(_0xb760('0x77'));}var _0xb5df1a=path['join'](config[_0xb760('0x78')],_0xb760('0x4b'),process[_0xb760('0x76')][0x2]);if(!fs[_0xb760('0x79')](_0xb5df1a)){throw new Error(_0xb760('0x7a'));}var _0x5854b6={};try{_0x5854b6=JSON[_0xb760('0x4e')](process[_0xb760('0x76')][0x3]);if(!_0x5854b6[_0xb760('0x49')]){throw new Error('binding\x20doesn\x27t\x20exists');}if(!_0x5854b6[_0xb760('0x49')]['phone']){throw new Error(_0xb760('0x7b'));}if(!_0x5854b6[_0xb760('0x49')][_0xb760('0x7c')]){throw new Error(_0xb760('0x7d'));}var _0x343bc7=0x0;if(_0x5854b6[_0xb760('0x49')][_0xb760('0x23')]){_0x343bc7=0x1;}if(!_0x5854b6['ListId']){throw new Error(_0xb760('0x7e'));}}catch(_0xc6a41a){throw new Error(_0xb760('0x7f'));}var _0x3a7d18=[];try{_0x3a7d18=_[_0xb760('0x80')](JSON[_0xb760('0x4e')](process[_0xb760('0x76')][0x4]),'id');}catch(_0x494ea8){logger[_0xb760('0x3b')]('No\x20agent\x20available');}main(_0xb5df1a,_0x5854b6,_0x3a7d18,_0x343bc7);}validate();process['on']('SIGINT',handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
index 41c5ce4..9b38bcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64f4=['Caller\x20Name','calleridname','destexten','Queue','UniqueId','uniqueid','Date','agentcalledAt','***\x20Agent\x20Info\x20***','destcalleridname','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Ring','agentconnectAt','agentcompleteAt','Hold\x20Time','talktime','outbound','Called\x20Number','membername','starttime','Answer\x20Time','answertime','Complete\x20Time','Duration','duration','Billable\x20Time','billableseconds','getSubjects','toLowerCase','voice','push','variable','queue','string','destcalleridnum','getDescriptions','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','calleridnum'];(function(_0x25e7f5,_0x24f8e9){var _0x4a0fc9=function(_0x277eb2){while(--_0x277eb2){_0x25e7f5['push'](_0x25e7f5['shift']());}};_0x4a0fc9(++_0x24f8e9);}(_0x64f4,0x112));var _0x464f=function(_0x27080e,_0x43a231){_0x27080e=_0x27080e-0x0;var _0x2fc696=_0x64f4[_0x27080e];return _0x2fc696;};'use strict';exports[_0x464f('0x0')]=function(_0x442974,_0x25b13f){var _0xc6cafe=[{'type':'string','content':'[xCALLY\x20Ticket]','variableName':null}];switch(_0x442974[_0x464f('0x1')]()){case _0x464f('0x2'):switch(_0x25b13f[_0x464f('0x1')]()){case'inbound':_0xc6cafe[_0x464f('0x3')]({'type':_0x464f('0x4'),'content':'','variableName':_0x464f('0x5')});_0xc6cafe[_0x464f('0x3')]({'type':_0x464f('0x4'),'content':'','variableName':'calleridnum'});break;case'outbound':_0xc6cafe[_0x464f('0x3')]({'type':_0x464f('0x6'),'content':'Outbound\x20Call','variableName':null});_0xc6cafe[_0x464f('0x3')]({'type':_0x464f('0x4'),'content':'','variableName':_0x464f('0x7')});break;}}return _0xc6cafe;};exports[_0x464f('0x8')]=function(_0x11a1a0,_0x4a5d36){var _0x53dfc4=[];switch(_0x11a1a0[_0x464f('0x1')]()){case'voice':switch(_0x4a5d36[_0x464f('0x1')]()){case'inbound':_0x53dfc4=[{'type':_0x464f('0x6'),'content':_0x464f('0x9'),'key':null,'keyType':null,'variableName':null},{'type':_0x464f('0xa'),'content':'','key':_0x464f('0xb'),'keyType':_0x464f('0x4'),'variableName':_0x464f('0xc')},{'type':_0x464f('0xa'),'content':'','key':_0x464f('0xd'),'keyType':'variable','variableName':_0x464f('0xe')},{'type':'keyValue','content':'','key':'Call\x20To','keyType':_0x464f('0x4'),'variableName':_0x464f('0xf')},{'type':_0x464f('0xa'),'content':'','key':_0x464f('0x10'),'keyType':'variable','variableName':_0x464f('0x5')},{'type':_0x464f('0xa'),'content':'','key':_0x464f('0x11'),'keyType':_0x464f('0x4'),'variableName':_0x464f('0x12')},{'type':_0x464f('0xa'),'content':'','key':_0x464f('0x13'),'keyType':_0x464f('0x4'),'variableName':_0x464f('0x14')},{'type':'string','content':_0x464f('0x15'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':'Agent\x20Name','keyType':_0x464f('0x4'),'variableName':_0x464f('0x16')},{'type':'keyValue','content':'','key':_0x464f('0x17'),'keyType':_0x464f('0x4'),'variableName':_0x464f('0x7')},{'type':_0x464f('0x6'),'content':_0x464f('0x18'),'key':null,'keyType':null,'variableName':null},{'type':_0x464f('0xa'),'content':'','key':_0x464f('0x19'),'keyType':_0x464f('0x4'),'variableName':_0x464f('0x14')},{'type':_0x464f('0xa'),'content':'','key':'Agent\x20Connect','keyType':_0x464f('0x4'),'variableName':_0x464f('0x1a')},{'type':'keyValue','content':'','key':'Agent\x20Complete','keyType':_0x464f('0x4'),'variableName':_0x464f('0x1b')},{'type':_0x464f('0xa'),'content':'','key':_0x464f('0x1c'),'keyType':_0x464f('0x4'),'variableName':'holdtime'},{'type':_0x464f('0xa'),'content':'','key':'Talk\x20Time','keyType':'variable','variableName':_0x464f('0x1d')}];break;case _0x464f('0x1e'):_0x53dfc4=[{'type':'string','content':'***\x20Call\x20Info\x20***','variableName':null},{'type':_0x464f('0xa'),'content':'','key':_0x464f('0x1f'),'keyType':_0x464f('0x4'),'keyContent':'','variableName':_0x464f('0x7')},{'type':_0x464f('0xa'),'content':'','key':'Member\x20Name','keyType':_0x464f('0x4'),'keyContent':'','variableName':_0x464f('0x20')},{'type':_0x464f('0xa'),'content':'','key':_0x464f('0x11'),'keyType':_0x464f('0x4'),'keyContent':'','variableName':_0x464f('0x12')},{'type':_0x464f('0xa'),'content':'','key':'Date','keyType':_0x464f('0x4'),'keyContent':'','variableName':_0x464f('0x21')},{'type':_0x464f('0x6'),'content':'***\x20Time\x20Info\x20***'},{'type':_0x464f('0xa'),'content':'','key':_0x464f('0x22'),'keyType':_0x464f('0x4'),'keyContent':'','variableName':_0x464f('0x23')},{'type':_0x464f('0xa'),'content':'','key':_0x464f('0x24'),'keyType':_0x464f('0x4'),'keyContent':'','variableName':'endtime'},{'type':_0x464f('0xa'),'content':'','key':_0x464f('0x25'),'keyType':_0x464f('0x4'),'keyContent':'','variableName':_0x464f('0x26')},{'type':_0x464f('0xa'),'content':'','key':_0x464f('0x27'),'keyType':_0x464f('0x4'),'keyContent':'','variableName':_0x464f('0x28')}];break;}}return _0x53dfc4;};
\ No newline at end of file
+var _0x8ab1=['keyValue','Caller\x20Number','Call\x20To','destexten','Queue','UniqueId','uniqueid','agentcalledAt','***\x20Agent\x20Info\x20***','destcalleridname','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Connect','agentconnectAt','Hold\x20Time','holdtime','Talk\x20Time','Called\x20Number','membername','starttime','answertime','Complete\x20Time','Duration','duration','Billable\x20Time','billableseconds','getSubjects','string','toLowerCase','voice','inbound','push','variable','queue','calleridnum','Outbound\x20Call','destcalleridnum','getDescriptions','***\x20Call\x20Info\x20***'];(function(_0x27119e,_0x26a916){var _0x352012=function(_0x15cd0a){while(--_0x15cd0a){_0x27119e['push'](_0x27119e['shift']());}};_0x352012(++_0x26a916);}(_0x8ab1,0x12b));var _0x18ab=function(_0x3242f8,_0x452998){_0x3242f8=_0x3242f8-0x0;var _0x47e17f=_0x8ab1[_0x3242f8];return _0x47e17f;};'use strict';exports[_0x18ab('0x0')]=function(_0x2a65b7,_0x537b77){var _0x31caea=[{'type':_0x18ab('0x1'),'content':'[xCALLY\x20Ticket]','variableName':null}];switch(_0x2a65b7[_0x18ab('0x2')]()){case _0x18ab('0x3'):switch(_0x537b77[_0x18ab('0x2')]()){case _0x18ab('0x4'):_0x31caea[_0x18ab('0x5')]({'type':_0x18ab('0x6'),'content':'','variableName':_0x18ab('0x7')});_0x31caea[_0x18ab('0x5')]({'type':'variable','content':'','variableName':_0x18ab('0x8')});break;case'outbound':_0x31caea[_0x18ab('0x5')]({'type':_0x18ab('0x1'),'content':_0x18ab('0x9'),'variableName':null});_0x31caea['push']({'type':'variable','content':'','variableName':_0x18ab('0xa')});break;}}return _0x31caea;};exports[_0x18ab('0xb')]=function(_0x545737,_0x113373){var _0x144347=[];switch(_0x545737['toLowerCase']()){case _0x18ab('0x3'):switch(_0x113373[_0x18ab('0x2')]()){case _0x18ab('0x4'):_0x144347=[{'type':_0x18ab('0x1'),'content':_0x18ab('0xc'),'key':null,'keyType':null,'variableName':null},{'type':_0x18ab('0xd'),'content':'','key':_0x18ab('0xe'),'keyType':_0x18ab('0x6'),'variableName':_0x18ab('0x8')},{'type':_0x18ab('0xd'),'content':'','key':'Caller\x20Name','keyType':_0x18ab('0x6'),'variableName':'calleridname'},{'type':'keyValue','content':'','key':_0x18ab('0xf'),'keyType':_0x18ab('0x6'),'variableName':_0x18ab('0x10')},{'type':_0x18ab('0xd'),'content':'','key':_0x18ab('0x11'),'keyType':_0x18ab('0x6'),'variableName':_0x18ab('0x7')},{'type':'keyValue','content':'','key':_0x18ab('0x12'),'keyType':'variable','variableName':_0x18ab('0x13')},{'type':'keyValue','content':'','key':'Date','keyType':_0x18ab('0x6'),'variableName':_0x18ab('0x14')},{'type':'string','content':_0x18ab('0x15'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':'Agent\x20Name','keyType':'variable','variableName':_0x18ab('0x16')},{'type':'keyValue','content':'','key':_0x18ab('0x17'),'keyType':'variable','variableName':_0x18ab('0xa')},{'type':'string','content':_0x18ab('0x18'),'key':null,'keyType':null,'variableName':null},{'type':_0x18ab('0xd'),'content':'','key':'Agent\x20Ring','keyType':_0x18ab('0x6'),'variableName':'agentcalledAt'},{'type':_0x18ab('0xd'),'content':'','key':_0x18ab('0x19'),'keyType':'variable','variableName':_0x18ab('0x1a')},{'type':'keyValue','content':'','key':'Agent\x20Complete','keyType':_0x18ab('0x6'),'variableName':'agentcompleteAt'},{'type':_0x18ab('0xd'),'content':'','key':_0x18ab('0x1b'),'keyType':_0x18ab('0x6'),'variableName':_0x18ab('0x1c')},{'type':_0x18ab('0xd'),'content':'','key':_0x18ab('0x1d'),'keyType':_0x18ab('0x6'),'variableName':'talktime'}];break;case'outbound':_0x144347=[{'type':'string','content':_0x18ab('0xc'),'variableName':null},{'type':_0x18ab('0xd'),'content':'','key':_0x18ab('0x1e'),'keyType':_0x18ab('0x6'),'keyContent':'','variableName':_0x18ab('0xa')},{'type':_0x18ab('0xd'),'content':'','key':'Member\x20Name','keyType':'variable','keyContent':'','variableName':_0x18ab('0x1f')},{'type':_0x18ab('0xd'),'content':'','key':_0x18ab('0x12'),'keyType':_0x18ab('0x6'),'keyContent':'','variableName':'uniqueid'},{'type':'keyValue','content':'','key':'Date','keyType':_0x18ab('0x6'),'keyContent':'','variableName':_0x18ab('0x20')},{'type':_0x18ab('0x1'),'content':'***\x20Time\x20Info\x20***'},{'type':_0x18ab('0xd'),'content':'','key':'Answer\x20Time','keyType':'variable','keyContent':'','variableName':_0x18ab('0x21')},{'type':_0x18ab('0xd'),'content':'','key':_0x18ab('0x22'),'keyType':_0x18ab('0x6'),'keyContent':'','variableName':'endtime'},{'type':_0x18ab('0xd'),'content':'','key':_0x18ab('0x23'),'keyType':_0x18ab('0x6'),'keyContent':'','variableName':_0x18ab('0x24')},{'type':'keyValue','content':'','key':_0x18ab('0x25'),'keyType':_0x18ab('0x6'),'keyContent':'','variableName':_0x18ab('0x26')}];break;}}return _0x144347;};
\ No newline at end of file
index d2b9fe5..c42e2ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6642=['tracked','user','query','omit','body','html','phone','fax','mobile','lodash','../../mysqldb','../../config/logger','mail-interactions','fax-interactions','chat-interactions','upperFirst','InteractionId','unknown','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','null','Interaction','findOne','then','update','info'];(function(_0x43fe51,_0x27179f){var _0x497a3f=function(_0x42d894){while(--_0x42d894){_0x43fe51['push'](_0x43fe51['shift']());}};_0x497a3f(++_0x27179f);}(_0x6642,0x105));var _0x2664=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6642[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x2664('0x0'));var db=require(_0x2664('0x1'))['db'];var loggers={'openchannel':require(_0x2664('0x2'))('openchannel-interactions'),'mail':require('../../config/logger')(_0x2664('0x3')),'fax':require('../../config/logger')(_0x2664('0x4')),'sms':require(_0x2664('0x2'))('sms-interactions'),'chat':require('../../config/logger')(_0x2664('0x5')),'whatsapp':require(_0x2664('0x2'))('whatsapp-interactions')};function getInteractionId(_0x5a5fde,_0xad050f,_0x2dc682){if(_0x5a5fde&&_0x5a5fde[_[_0x2664('0x6')](_0x2dc682)+_0x2664('0x7')]){return _0x5a5fde[_[_0x2664('0x6')](_0x2dc682)+_0x2664('0x7')];}else if(_0x5a5fde&&_0x5a5fde['id']){return _0x5a5fde['id'];}else if(_0xad050f&&_0xad050f['id']){return _0xad050f['id'];}else{return _0x2664('0x8');}}function log(_0x128ee5,_0x3702c0,_0x1b5fc3,_0x2b8a8c,_0x289754,_0x4f3143){loggers[_0x289754[_0x2664('0x9')]()][_0x128ee5](_0x2664('0xa'),_0x4f3143[_0x2664('0xb')](),_0x3702c0?_0x3702c0['id']:null,_0x3702c0?_0x3702c0[_0x2664('0xc')]:null,_0x3702c0?_0x3702c0['role']:null,getInteractionId(_0x1b5fc3,_0x2b8a8c,_0x289754),_0x1b5fc3?JSON['stringify'](_0x1b5fc3):_0x2664('0xd'));}function updateUser(_0x4d4b0c,_0x512ae5,_0x3566ef,_0x2ce5ba,_0x171af6){db[_[_0x2664('0x6')](_0x2ce5ba)+_0x2664('0xe')][_0x2664('0xf')]({'where':{'id':getInteractionId(_0x512ae5,_0x3566ef,_0x2ce5ba)}})[_0x2664('0x10')](function(_0x42be86){if(_0x42be86){return _0x42be86[_0x2664('0x11')]({'UserId':_0x4d4b0c?_0x4d4b0c['id']:null});}})['then'](function(_0xb08d48){if(_0xb08d48){log(_0x2664('0x12'),_0x4d4b0c,_0x512ae5,_0x3566ef,_0x2ce5ba,_0x171af6);}})['catch'](function(){log('error',_0x4d4b0c,_0x512ae5,_0x3566ef,_0x2ce5ba,_0x171af6);});}exports[_0x2664('0x13')]=function(_0x23cf6f,_0x39abab){return function(_0x1982f0,_0x2f5aef,_0x5e0681){var _0x3e8202=_0x1982f0[_0x2664('0x14')];var _0x5dc5f7={};var _0x2c43f7=_0x1982f0[_0x2664('0x15')];if(_0x5dc5f7){_0x5dc5f7=_['clone'](_0x1982f0['body']);_0x5dc5f7=_[_0x2664('0x16')](_0x5dc5f7,[_0x2664('0x17'),_0x2664('0x18'),_0x2664('0x19'),_0x2664('0x1a'),_0x2664('0x1b')]);}updateUser(_0x3e8202,_0x5dc5f7,_0x2c43f7,_0x23cf6f,_0x39abab);_0x5e0681(null);};};
\ No newline at end of file
+var _0x636e=['then','catch','error','tracked','user','query','clone','body','omit','html','phone','fax','mobile','lodash','../../config/logger','mail-interactions','fax-interactions','sms-interactions','chat-interactions','whatsapp-interactions','upperFirst','InteractionId','unknown','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','stringify','Interaction','findOne','update'];(function(_0x23a8f7,_0x768747){var _0x5a1fc3=function(_0x238a39){while(--_0x238a39){_0x23a8f7['push'](_0x23a8f7['shift']());}};_0x5a1fc3(++_0x768747);}(_0x636e,0x11b));var _0xe636=function(_0x4eed43,_0x498e7d){_0x4eed43=_0x4eed43-0x0;var _0x38bf43=_0x636e[_0x4eed43];return _0x38bf43;};'use strict';var _=require(_0xe636('0x0'));var db=require('../../mysqldb')['db'];var loggers={'openchannel':require(_0xe636('0x1'))('openchannel-interactions'),'mail':require('../../config/logger')(_0xe636('0x2')),'fax':require(_0xe636('0x1'))(_0xe636('0x3')),'sms':require('../../config/logger')(_0xe636('0x4')),'chat':require(_0xe636('0x1'))(_0xe636('0x5')),'whatsapp':require('../../config/logger')(_0xe636('0x6'))};function getInteractionId(_0x4a4de1,_0xb9c102,_0x558168){if(_0x4a4de1&&_0x4a4de1[_[_0xe636('0x7')](_0x558168)+_0xe636('0x8')]){return _0x4a4de1[_['upperFirst'](_0x558168)+_0xe636('0x8')];}else if(_0x4a4de1&&_0x4a4de1['id']){return _0x4a4de1['id'];}else if(_0xb9c102&&_0xb9c102['id']){return _0xb9c102['id'];}else{return _0xe636('0x9');}}function log(_0x34649a,_0x1694fd,_0x4f2201,_0x483dfd,_0x134016,_0xd35ed9){loggers[_0x134016[_0xe636('0xa')]()][_0x34649a](_0xe636('0xb'),_0xd35ed9['toUpperCase'](),_0x1694fd?_0x1694fd['id']:null,_0x1694fd?_0x1694fd['name']:null,_0x1694fd?_0x1694fd[_0xe636('0xc')]:null,getInteractionId(_0x4f2201,_0x483dfd,_0x134016),_0x4f2201?JSON[_0xe636('0xd')](_0x4f2201):'null');}function updateUser(_0x3b5bf8,_0x4c02ac,_0x4e9592,_0x12b9a0,_0x49aec9){db[_[_0xe636('0x7')](_0x12b9a0)+_0xe636('0xe')][_0xe636('0xf')]({'where':{'id':getInteractionId(_0x4c02ac,_0x4e9592,_0x12b9a0)}})['then'](function(_0x1e9d84){if(_0x1e9d84){return _0x1e9d84[_0xe636('0x10')]({'UserId':_0x3b5bf8?_0x3b5bf8['id']:null});}})[_0xe636('0x11')](function(_0xbe21f5){if(_0xbe21f5){log('info',_0x3b5bf8,_0x4c02ac,_0x4e9592,_0x12b9a0,_0x49aec9);}})[_0xe636('0x12')](function(){log(_0xe636('0x13'),_0x3b5bf8,_0x4c02ac,_0x4e9592,_0x12b9a0,_0x49aec9);});}exports[_0xe636('0x14')]=function(_0x516b84,_0x21f88a){return function(_0x1c2648,_0x3369e8,_0x5c8876){var _0x4bc0af=_0x1c2648[_0xe636('0x15')];var _0x4a0d74={};var _0x2b6740=_0x1c2648[_0xe636('0x16')];if(_0x4a0d74){_0x4a0d74=_[_0xe636('0x17')](_0x1c2648[_0xe636('0x18')]);_0x4a0d74=_[_0xe636('0x19')](_0x4a0d74,[_0xe636('0x18'),_0xe636('0x1a'),_0xe636('0x1b'),_0xe636('0x1c'),_0xe636('0x1d')]);}updateUser(_0x4bc0af,_0x4a0d74,_0x2b6740,_0x516b84,_0x21f88a);_0x5c8876(null);};};
\ No newline at end of file
index fbf5f57..9337e0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb57b=['format','%s:%s:%s','update','base64','utf8','final','parse','hasOwnProperty','use','License','findOne','then','count','status','catch','admin','user','isUserLimit','crypto','util','composable-middleware','../../config/environment','license','data1','split','createDecipher'];(function(_0x51e673,_0x1cfdcc){var _0x3733be=function(_0x5f3b44){while(--_0x5f3b44){_0x51e673['push'](_0x51e673['shift']());}};_0x3733be(++_0x1cfdcc);}(_0xb57b,0xae));var _0xbb57=function(_0xd1d19a,_0x1933f0){_0xd1d19a=_0xd1d19a-0x0;var _0x52a79d=_0xb57b[_0xd1d19a];return _0x52a79d;};'use strict';var crypto=require(_0xbb57('0x0'));var util=require(_0xbb57('0x1'));var compose=require(_0xbb57('0x2'));var db=require('../../mysqldb')['db'];var config=require(_0xbb57('0x3'));function getValueFromLicense(_0x53d840,_0x5ac4e5){if(_0x53d840&&_0x5ac4e5){if(_0x5ac4e5['data1']&&_0x5ac4e5[_0xbb57('0x4')]){var _0x5b6305=_0x5ac4e5[_0xbb57('0x5')];var _0xec8698=_0x5ac4e5[_0xbb57('0x4')];var _0x29d0ab=_0x5b6305[_0xbb57('0x6')]('-')[0x4];var _0x143c8f=_0x5b6305['split']('-')[0x0];var _0xbe6f1e=crypto[_0xbb57('0x7')]('aes-256-ctr',util[_0xbb57('0x8')](_0xbb57('0x9'),_0x29d0ab,_0x5b6305,_0x143c8f));var _0xe0d8b9=_0xbe6f1e[_0xbb57('0xa')](_0xec8698,_0xbb57('0xb'),_0xbb57('0xc'));_0xe0d8b9+=_0xbe6f1e[_0xbb57('0xd')]('utf8');var _0x705b4a=JSON[_0xbb57('0xe')](_0xe0d8b9);return _0x705b4a[_0xbb57('0xf')](_0x53d840)?_0x705b4a[_0x53d840]:null;}}return null;}function isLimit(_0x3ea8b2,_0x4405b2,_0x3e98c3,_0x17f772){var _0x48c3b1=_0x4405b2;return compose()[_0xbb57('0x10')](function(_0x43bb52,_0x295686,_0x1c4a34){return db[_0xbb57('0x11')][_0xbb57('0x12')]({'where':{'id':0x1},'raw':!![]})[_0xbb57('0x13')](function(_0x393ac0){var _0x3932a4=getValueFromLicense(_0x3ea8b2,_0x393ac0);return _0x3932a4?_0x3932a4:_0x48c3b1;})['then'](function(_0x35fa6e){_0x48c3b1=_0x35fa6e;return _0x3e98c3[_0xbb57('0x14')](_0x17f772);})[_0xbb57('0x13')](function(_0x23db6f){if(_0x23db6f>=_0x48c3b1){return _0x295686[_0xbb57('0x15')](0x193)['json']({'message':util[_0xbb57('0x8')]('Maximum\x20%s\x20limit\x20have\x20been\x20reached',_0x3ea8b2)});}_0x1c4a34();})[_0xbb57('0x16')](function(_0x48617c){_0x1c4a34(_0x48617c);});});}function isUserLimit(){return isLimit('users',0x1,db['User'],{'where':{'$or':[{'role':_0xbb57('0x17')},{'role':_0xbb57('0x18')}]}});}exports[_0xbb57('0x19')]=isUserLimit;
\ No newline at end of file
+var _0xf512=['use','License','findOne','then','count','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','User','admin','isUserLimit','util','../../mysqldb','../../config/environment','data1','license','createDecipher','aes-256-ctr','format','update','base64','utf8','parse','hasOwnProperty'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xf512,0x1d3));var _0x2f51=function(_0x472cc1,_0x3ab6b9){_0x472cc1=_0x472cc1-0x0;var _0x3c4b67=_0xf512[_0x472cc1];return _0x3c4b67;};'use strict';var crypto=require('crypto');var util=require(_0x2f51('0x0'));var compose=require('composable-middleware');var db=require(_0x2f51('0x1'))['db'];var config=require(_0x2f51('0x2'));function getValueFromLicense(_0x3a2433,_0x566402){if(_0x3a2433&&_0x566402){if(_0x566402[_0x2f51('0x3')]&&_0x566402[_0x2f51('0x4')]){var _0x4123af=_0x566402[_0x2f51('0x3')];var _0x75cc36=_0x566402[_0x2f51('0x4')];var _0x4d6c14=_0x4123af['split']('-')[0x4];var _0x54d728=_0x4123af['split']('-')[0x0];var _0x22ff9a=crypto[_0x2f51('0x5')](_0x2f51('0x6'),util[_0x2f51('0x7')]('%s:%s:%s',_0x4d6c14,_0x4123af,_0x54d728));var _0x43ab48=_0x22ff9a[_0x2f51('0x8')](_0x75cc36,_0x2f51('0x9'),_0x2f51('0xa'));_0x43ab48+=_0x22ff9a['final']('utf8');var _0x1e8145=JSON[_0x2f51('0xb')](_0x43ab48);return _0x1e8145[_0x2f51('0xc')](_0x3a2433)?_0x1e8145[_0x3a2433]:null;}}return null;}function isLimit(_0x45d2fc,_0x3ef398,_0xc82054,_0x2895db){var _0x53e075=_0x3ef398;return compose()[_0x2f51('0xd')](function(_0x3b1af1,_0x517e2b,_0x2b97ca){return db[_0x2f51('0xe')][_0x2f51('0xf')]({'where':{'id':0x1},'raw':!![]})[_0x2f51('0x10')](function(_0x3b0cdb){var _0x2732a1=getValueFromLicense(_0x45d2fc,_0x3b0cdb);return _0x2732a1?_0x2732a1:_0x53e075;})[_0x2f51('0x10')](function(_0x1e6b4e){_0x53e075=_0x1e6b4e;return _0xc82054[_0x2f51('0x11')](_0x2895db);})['then'](function(_0x3d5265){if(_0x3d5265>=_0x53e075){return _0x517e2b['status'](0x193)['json']({'message':util['format'](_0x2f51('0x12'),_0x45d2fc)});}_0x2b97ca();})[_0x2f51('0x13')](function(_0x128a0c){_0x2b97ca(_0x128a0c);});});}function isUserLimit(){return isLimit(_0x2f51('0x14'),0x1,db[_0x2f51('0x15')],{'where':{'$or':[{'role':_0x2f51('0x16')},{'role':'user'}]}});}exports[_0x2f51('0x17')]=isUserLimit;
\ No newline at end of file
index b726441..cd7b479 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12dd=['pop','utcOffset','hours','seconds','format','moment','parseSearch','sqlOperator','[$or]','replace','[$and]','split','forEach','shift','match','filter','indexOf','map','conditions','push','buildExpression','$eq','operator','value','includes','$gt','$lte','add','days','YYYY-MM-DD','castTo','text','CAST(','field','\x20AS\x20','$ne','$notIn','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','NOT\x20IN\x20?','<>\x20?','$substring','$startsWith','$endsWith','LIKE\x20?','$lt','<\x20?','>\x20?','<=\x20?','$gte','start','$between'];(function(_0x297e15,_0x4943f2){var _0x553190=function(_0x55b6ad){while(--_0x55b6ad){_0x297e15['push'](_0x297e15['shift']());}};_0x553190(++_0x4943f2);}(_0x12dd,0x1eb));var _0xd12d=function(_0x19b606,_0x33ace0){_0x19b606=_0x19b606-0x0;var _0x471109=_0x12dd[_0x19b606];return _0x471109;};'use strict';var _=require('lodash');var moment=require(_0xd12d('0x0'));exports[_0xd12d('0x1')]=function(_0x1a222b){var _0x30f139={'conditions':[]};_0x30f139[_0xd12d('0x2')]=_['startsWith'](_0x1a222b,_0xd12d('0x3'))?'or':'and';var _0x28cec0=_0x1a222b[_0xd12d('0x4')](_0xd12d('0x5'),'')[_0xd12d('0x4')](_0xd12d('0x3'),'')[_0xd12d('0x6')]('||');for(var _0x3a34b1=0x0;_0x3a34b1<_0x28cec0['length'];_0x3a34b1++){var _0x3c830b=_0x28cec0[_0x3a34b1][_0xd12d('0x6')](':=');var _0x5bb96f=_0x3c830b[0x0];var _0x585c17=_0x3c830b['slice'](0x1);_0x585c17[_0xd12d('0x7')](function(_0x142c44){var _0x5363e3=_0x142c44[_0xd12d('0x6')]('[')[_0xd12d('0x8')]();var _0x376889=_0x142c44[_0xd12d('0x9')](/\[(.*?)\]/g);_0x376889['forEach'](function(_0x2f0bbc){var _0x2a677f=_0x2f0bbc[_0xd12d('0x6')]('[')[_0xd12d('0xa')](function(_0x2b62d2){return _0x2b62d2[_0xd12d('0xb')](']')>-0x1;})[_0xd12d('0xc')](function(_0x631fa2){return _0x631fa2['split'](']')[0x0];})[0x0];_0x30f139[_0xd12d('0xd')][_0xd12d('0xe')]({'field':_0x5bb96f,'operator':_0x5363e3,'value':_0x2a677f});});});}return _0x30f139;};exports[_0xd12d('0xf')]=function(_0x410672,_0x14866a,_0x3ab58f){var _0x25b179={};if(_0x14866a==='DATE'){if(_0x3ab58f['operator']===_0xd12d('0x10')){_0x3ab58f[_0xd12d('0x11')]='$between';_0x3ab58f[_0xd12d('0x12')]+=','+_0x3ab58f[_0xd12d('0x12')];}else if(_[_0xd12d('0x13')]([_0xd12d('0x14'),_0xd12d('0x15')],_0x3ab58f[_0xd12d('0x11')])){_0x3ab58f[_0xd12d('0x12')]=moment(_0x3ab58f[_0xd12d('0x12')])[_0xd12d('0x16')](0x1,_0xd12d('0x17'))['format'](_0xd12d('0x18'));}}if(_0x3ab58f[_0xd12d('0x19')]){_0x14866a=_0x3ab58f[_0xd12d('0x19')];_0x25b179[_0xd12d('0x1a')]=_0xd12d('0x1b')+_0x410672+'.'+_0x3ab58f[_0xd12d('0x1c')]+_0xd12d('0x1d')+_0x3ab58f[_0xd12d('0x19')]+')\x20'+parseOperator(_0x3ab58f[_0xd12d('0x11')]);}else{_0x25b179['text']=_0x410672+'.'+_0x3ab58f[_0xd12d('0x1c')]+'\x20'+parseOperator(_0x3ab58f[_0xd12d('0x11')]);}if(_['includes']([_0xd12d('0x1e'),_0xd12d('0x1f')],_0x3ab58f['operator']))_0x25b179[_0xd12d('0x1a')]='('+_0x25b179[_0xd12d('0x1a')]+_0xd12d('0x20')+_0x410672+'.'+_0x3ab58f[_0xd12d('0x1c')]+_0xd12d('0x21');_0x25b179[_0xd12d('0x12')]=parseValue(_0x14866a,_0x3ab58f[_0xd12d('0x11')],_0x3ab58f[_0xd12d('0x12')]);return _0x25b179;};function parseOperator(_0x3e10cf){var _0x11e991;switch(_0x3e10cf){case _0xd12d('0x22'):_0x11e991=_0xd12d('0x23');break;case _0xd12d('0x1f'):_0x11e991=_0xd12d('0x24');break;case _0xd12d('0x10'):_0x11e991='=\x20?';break;case'$ne':_0x11e991=_0xd12d('0x25');break;case _0xd12d('0x26'):case _0xd12d('0x27'):case _0xd12d('0x28'):_0x11e991=_0xd12d('0x29');break;case _0xd12d('0x2a'):_0x11e991=_0xd12d('0x2b');break;case'$gt':_0x11e991=_0xd12d('0x2c');break;case'$lte':_0x11e991=_0xd12d('0x2d');break;case _0xd12d('0x2e'):_0x11e991='>=\x20?';break;case'$between':_0x11e991='BETWEEN\x20?\x20AND\x20?';break;}return _0x11e991;}function parseValue(_0x105c0d,_0x1a38d7,_0x594654){var _0x56d3a5={'start':undefined,'end':undefined};switch(_0x1a38d7){case _0xd12d('0x22'):case _0xd12d('0x1f'):_0x56d3a5[_0xd12d('0x2f')]=_0x594654[_0xd12d('0x6')](',');break;case _0xd12d('0x26'):_0x56d3a5['start']='%'+_0x594654+'%';break;case'$startsWith':_0x56d3a5[_0xd12d('0x2f')]=_0x594654+'%';break;case _0xd12d('0x28'):_0x56d3a5[_0xd12d('0x2f')]='%'+_0x594654;break;case _0xd12d('0x30'):var _0x42e96e=_0x594654['split'](',');var _0x594654=_0x42e96e['shift']();var _0xb284fc=_0x42e96e[_0xd12d('0x31')]();if(_0x105c0d==='DATE'){_0x594654=moment(_0x594654)[_0xd12d('0x32')](0x0,!![])['format']();_0xb284fc=moment(_0xb284fc)['utcOffset'](0x0,!![])[_0xd12d('0x16')](0x17,_0xd12d('0x33'))[_0xd12d('0x16')](0x3b,'minutes')['add'](0x3b,_0xd12d('0x34'))[_0xd12d('0x35')]();}_0x56d3a5={'start':_0x594654,'end':_0xb284fc};break;default:_0x56d3a5[_0xd12d('0x2f')]=_0x594654;break;}return _0x56d3a5;}
\ No newline at end of file
+var _0xed79=['$notIn','\x20OR\x20','\x20IS\x20NULL)','$in','NOT\x20IN\x20?','<>\x20?','$startsWith','$lt','<\x20?','$gt','>\x20?','$lte','<=\x20?','$gte','start','$substring','$endsWith','shift','utcOffset','hours','minutes','seconds','moment','sqlOperator','startsWith','[$or]','and','replace','[$and]','split','slice','forEach','match','filter','indexOf','map','push','buildExpression','DATE','operator','$eq','$between','value','includes','add','format','YYYY-MM-DD','castTo','CAST(','field','\x20AS\x20','$ne'];(function(_0x3a6687,_0x401c5c){var _0x49735c=function(_0x360b2a){while(--_0x360b2a){_0x3a6687['push'](_0x3a6687['shift']());}};_0x49735c(++_0x401c5c);}(_0xed79,0xb2));var _0x9ed7=function(_0x3e3949,_0x146286){_0x3e3949=_0x3e3949-0x0;var _0x4ca465=_0xed79[_0x3e3949];return _0x4ca465;};'use strict';var _=require('lodash');var moment=require(_0x9ed7('0x0'));exports['parseSearch']=function(_0x13b304){var _0x4e57f8={'conditions':[]};_0x4e57f8[_0x9ed7('0x1')]=_[_0x9ed7('0x2')](_0x13b304,_0x9ed7('0x3'))?'or':_0x9ed7('0x4');var _0x4f7f92=_0x13b304[_0x9ed7('0x5')](_0x9ed7('0x6'),'')[_0x9ed7('0x5')](_0x9ed7('0x3'),'')[_0x9ed7('0x7')]('||');for(var _0x48a152=0x0;_0x48a152<_0x4f7f92['length'];_0x48a152++){var _0x424fb0=_0x4f7f92[_0x48a152][_0x9ed7('0x7')](':=');var _0xe380=_0x424fb0[0x0];var _0x4ccc2c=_0x424fb0[_0x9ed7('0x8')](0x1);_0x4ccc2c[_0x9ed7('0x9')](function(_0x28cf92){var _0x5cf2ab=_0x28cf92[_0x9ed7('0x7')]('[')['shift']();var _0x47280c=_0x28cf92[_0x9ed7('0xa')](/\[(.*?)\]/g);_0x47280c[_0x9ed7('0x9')](function(_0x588264){var _0x936c5e=_0x588264[_0x9ed7('0x7')]('[')[_0x9ed7('0xb')](function(_0x4ede54){return _0x4ede54[_0x9ed7('0xc')](']')>-0x1;})[_0x9ed7('0xd')](function(_0xfa7c6c){return _0xfa7c6c['split'](']')[0x0];})[0x0];_0x4e57f8['conditions'][_0x9ed7('0xe')]({'field':_0xe380,'operator':_0x5cf2ab,'value':_0x936c5e});});});}return _0x4e57f8;};exports[_0x9ed7('0xf')]=function(_0x261d97,_0x195dc9,_0x395319){var _0x5d38d6={};if(_0x195dc9===_0x9ed7('0x10')){if(_0x395319[_0x9ed7('0x11')]===_0x9ed7('0x12')){_0x395319[_0x9ed7('0x11')]=_0x9ed7('0x13');_0x395319[_0x9ed7('0x14')]+=','+_0x395319['value'];}else if(_[_0x9ed7('0x15')](['$gt','$lte'],_0x395319[_0x9ed7('0x11')])){_0x395319['value']=moment(_0x395319[_0x9ed7('0x14')])[_0x9ed7('0x16')](0x1,'days')[_0x9ed7('0x17')](_0x9ed7('0x18'));}}if(_0x395319[_0x9ed7('0x19')]){_0x195dc9=_0x395319[_0x9ed7('0x19')];_0x5d38d6['text']=_0x9ed7('0x1a')+_0x261d97+'.'+_0x395319[_0x9ed7('0x1b')]+_0x9ed7('0x1c')+_0x395319[_0x9ed7('0x19')]+')\x20'+parseOperator(_0x395319[_0x9ed7('0x11')]);}else{_0x5d38d6['text']=_0x261d97+'.'+_0x395319[_0x9ed7('0x1b')]+'\x20'+parseOperator(_0x395319[_0x9ed7('0x11')]);}if(_[_0x9ed7('0x15')]([_0x9ed7('0x1d'),_0x9ed7('0x1e')],_0x395319['operator']))_0x5d38d6['text']='('+_0x5d38d6['text']+_0x9ed7('0x1f')+_0x261d97+'.'+_0x395319[_0x9ed7('0x1b')]+_0x9ed7('0x20');_0x5d38d6[_0x9ed7('0x14')]=parseValue(_0x195dc9,_0x395319[_0x9ed7('0x11')],_0x395319[_0x9ed7('0x14')]);return _0x5d38d6;};function parseOperator(_0x5ed6d8){var _0x1d3139;switch(_0x5ed6d8){case _0x9ed7('0x21'):_0x1d3139='IN\x20?';break;case'$notIn':_0x1d3139=_0x9ed7('0x22');break;case'$eq':_0x1d3139='=\x20?';break;case'$ne':_0x1d3139=_0x9ed7('0x23');break;case'$substring':case _0x9ed7('0x24'):case'$endsWith':_0x1d3139='LIKE\x20?';break;case _0x9ed7('0x25'):_0x1d3139=_0x9ed7('0x26');break;case _0x9ed7('0x27'):_0x1d3139=_0x9ed7('0x28');break;case _0x9ed7('0x29'):_0x1d3139=_0x9ed7('0x2a');break;case _0x9ed7('0x2b'):_0x1d3139='>=\x20?';break;case _0x9ed7('0x13'):_0x1d3139='BETWEEN\x20?\x20AND\x20?';break;}return _0x1d3139;}function parseValue(_0x37f23c,_0x4f3cdd,_0x225253){var _0x485c92={'start':undefined,'end':undefined};switch(_0x4f3cdd){case _0x9ed7('0x21'):case _0x9ed7('0x1e'):_0x485c92[_0x9ed7('0x2c')]=_0x225253[_0x9ed7('0x7')](',');break;case _0x9ed7('0x2d'):_0x485c92[_0x9ed7('0x2c')]='%'+_0x225253+'%';break;case'$startsWith':_0x485c92[_0x9ed7('0x2c')]=_0x225253+'%';break;case _0x9ed7('0x2e'):_0x485c92['start']='%'+_0x225253;break;case _0x9ed7('0x13'):var _0x3704ec=_0x225253[_0x9ed7('0x7')](',');var _0x225253=_0x3704ec[_0x9ed7('0x2f')]();var _0x4d9b0c=_0x3704ec['pop']();if(_0x37f23c==='DATE'){_0x225253=moment(_0x225253)[_0x9ed7('0x30')](0x0,!![])['format']();_0x4d9b0c=moment(_0x4d9b0c)['utcOffset'](0x0,!![])[_0x9ed7('0x16')](0x17,_0x9ed7('0x31'))[_0x9ed7('0x16')](0x3b,_0x9ed7('0x32'))[_0x9ed7('0x16')](0x3b,_0x9ed7('0x33'))[_0x9ed7('0x17')]();}_0x485c92={'start':_0x225253,'end':_0x4d9b0c};break;default:_0x485c92['start']=_0x225253;break;}return _0x485c92;}
\ No newline at end of file
index 4ec058a..5c27668 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb84=['includes','fields','split','filters','isEmpty','forOwn','type','DATE','isPlainObject','$gte','format','$lte','YYYY-MM-DD','utc','subtract','name','uniqueid','isArray','limit','offset','map','indexOf','priority','cast','col','unsigned','substr','DESC','ASC','omit','length','isString','unset','isNumeric','^[+]?[0-9]*$','isEmail','getFullTextValue','forEach','replace','push','getOptions','$id','query','model','intersection','attributes','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','lodash','sequelize','parse','keys'];(function(_0xe00f4c,_0x59ba20){var _0x5dfa97=function(_0xe557dc){while(--_0xe557dc){_0xe00f4c['push'](_0xe00f4c['shift']());}};_0x5dfa97(++_0x59ba20);}(_0xcb84,0x72));var _0x4cb8=function(_0x2cd1fb,_0x291f55){_0x2cd1fb=_0x2cd1fb-0x0;var _0x48fd2b=_0xcb84[_0x2cd1fb];return _0x48fd2b;};'use strict';var _=require(_0x4cb8('0x0'));var sequelize=require(_0x4cb8('0x1'));var moment=require('moment');var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x5c5013){var _0x4e98cf=['ne'];try{var _0x3c75d6=JSON[_0x4cb8('0x2')](_0x5c5013);var _0x4144cc=Object[_0x4cb8('0x3')](_0x3c75d6)[0x0];return _0x4e98cf[_0x4cb8('0x4')](_0x4144cc);}catch(_0x360dba){return![];}}function getOperatorValue(_0x41b213){var _0x3714d0=JSON['parse'](_0x41b213);var _0x2b9bfe=Object[_0x4cb8('0x3')](_0x3714d0)[0x0];var _0x4b129f=_0x3714d0[_0x2b9bfe];return{['$'+_0x2b9bfe]:_0x4b129f};}exports[_0x4cb8('0x5')]=function(_0x4c0162){var _0x2919ce=null;if(_0x4c0162){_0x2919ce=_0x4c0162[_0x4cb8('0x6')](',');}return _0x2919ce;};exports[_0x4cb8('0x7')]=function(_0x28ab20,_0xa4ac1a){var _0x136c46={};if(!_[_0x4cb8('0x8')](_0x28ab20)){_[_0x4cb8('0x9')](_0x28ab20,function(_0x3100dd,_0x50c037){try{if(_0xa4ac1a){var _0x403ad4=_['find'](_0xa4ac1a,{'name':_0x50c037})||{};if(hasSequelizeOperator(_0x3100dd)){_0x136c46[_0x50c037]=getOperatorValue(_0x3100dd);}else if(_0x403ad4[_0x4cb8('0xa')]===_0x4cb8('0xb')&&_[_0x4cb8('0xc')](_0x3100dd)){var _0x18a46a=JSON['parse'](_0x3100dd);var _0x117344={'$gte':moment(moment(_0x18a46a[_0x4cb8('0xd')])[_0x4cb8('0xe')]('YYYY-MM-DD'))['utc']()['format'](),'$lte':moment(moment(_0x18a46a[_0x4cb8('0xf')])[_0x4cb8('0xe')](_0x4cb8('0x10')))[_0x4cb8('0x11')]()[_0x4cb8('0x12')](0x1,'s')[_0x4cb8('0xe')]()};_0x136c46[_0x50c037]=_0x117344;}else if(_0x403ad4[_0x4cb8('0x13')]===_0x4cb8('0x14')){_0x136c46[_0x50c037]=_0x3100dd;}else{_0x136c46[_0x50c037]=_[_0x4cb8('0x15')](_0x3100dd)?_0x3100dd:JSON[_0x4cb8('0x2')](_0x3100dd);}}else{_0x136c46[_0x50c037]=_[_0x4cb8('0x15')](_0x3100dd)?_0x3100dd:JSON[_0x4cb8('0x2')](_0x3100dd);}}catch(_0x301948){_0x136c46[_0x50c037]=_0x3100dd[_0x4cb8('0x6')](',');}});}return _0x136c46;};exports[_0x4cb8('0x16')]=function(_0x485522){_0x485522=parseInt(_0x485522,0xa);if(!_0x485522||_0x485522<0x0){_0x485522=LIMIT_VALUE;}return _0x485522;};exports[_0x4cb8('0x17')]=function(_0x182a5b){_0x182a5b=parseInt(_0x182a5b,0xa);if(!_0x182a5b||_0x182a5b<0x0){_0x182a5b=0x0;}return _0x182a5b;};exports['sort']=function(_0x1a60c6){var _0x38c752,_0x24cb88=null;if(_0x1a60c6){_0x38c752=_0x1a60c6[_0x4cb8('0x6')](',');_0x24cb88=_[_0x4cb8('0x18')](_0x38c752,function(_0x26b078){if(_0x26b078[_0x4cb8('0x19')]('-')===0x0){return[_0x26b078===_0x4cb8('0x1a')?sequelize[_0x4cb8('0x1b')](sequelize[_0x4cb8('0x1c')](_0x4cb8('0x1a')),_0x4cb8('0x1d')):_0x26b078[_0x4cb8('0x1e')](0x1),_0x4cb8('0x1f')];}else{return[_0x26b078==='priority'?sequelize['cast'](sequelize[_0x4cb8('0x1c')](_0x4cb8('0x1a')),_0x4cb8('0x1d')):_0x26b078,_0x4cb8('0x20')];}});}return _0x24cb88;};exports[_0x4cb8('0x21')]=function(_0x26894d,_0x30a239){if(_[_0x4cb8('0x8')](_0x26894d)){return _0x26894d;}if(_[_0x4cb8('0x15')](_0x26894d)){for(var _0x3b243a=0x0;_0x3b243a<_0x26894d[_0x4cb8('0x22')];_0x3b243a+=0x1){_0x26894d[_0x3b243a]=this[_0x4cb8('0x21')](_0x26894d[_0x3b243a],_0x30a239);}return _0x26894d;}if(!_['isObject'](_0x26894d)){return _0x26894d;}if(_[_0x4cb8('0x23')](_0x30a239)){_0x30a239=[_0x30a239];}if(!_['isArray'](_0x30a239)){return _0x26894d;}for(var _0x46f524=0x0;_0x46f524<_0x30a239[_0x4cb8('0x22')];_0x46f524+=0x1){_[_0x4cb8('0x24')](_0x26894d,_0x30a239[_0x46f524]);}for(var _0x447eeb in _0x26894d){if(_0x26894d['hasOwnProperty'](_0x447eeb)){_0x26894d[_0x447eeb]=this['omit'](_0x26894d[_0x447eeb],_0x30a239);}}return _0x26894d;};exports[_0x4cb8('0x25')]=function(_0x3add3c){return _0x3add3c['match'](RegExp(_0x4cb8('0x26')))?!![]:![];};exports[_0x4cb8('0x27')]=function(_0x461cbc){return _0x461cbc['match'](/^\S+@\S+$/)?!![]:![];};exports[_0x4cb8('0x28')]=function(_0x2206ed){var _0x3e88f9=[];_0x2206ed[_0x4cb8('0x6')](/[ ,]+/)[_0x4cb8('0x29')](function(_0x5cf92c){_0x5cf92c=_0x5cf92c[_0x4cb8('0x2a')](/([^:]")"+/g,'$1');_0x5cf92c='+'+_0x5cf92c+'*';if(_0x5cf92c[_0x4cb8('0x4')]('@'))_0x5cf92c='\x22'+_0x5cf92c+'\x22';_0x3e88f9[_0x4cb8('0x2b')](_0x5cf92c);});return _0x3e88f9['join']('\x20');};exports[_0x4cb8('0x2c')]=function(_0x38bcaf,_0x21aeb8,_0x5b9685){var _0x5aff4b={},_0x48c83f={};if(_0x21aeb8['query'][_0x4cb8('0x2d')]){_0x21aeb8['query']['id']=_0x21aeb8[_0x4cb8('0x2e')]['$id'];delete _0x21aeb8['query'][_0x4cb8('0x2d')];}_0x5aff4b[_0x4cb8('0x2f')]=_[_0x4cb8('0x18')](_0x38bcaf,_0x4cb8('0x13'));_0x5aff4b[_0x4cb8('0x2e')]=_[_0x4cb8('0x3')](_0x21aeb8[_0x4cb8('0x2e')]);_0x5aff4b[_0x4cb8('0x7')]=_[_0x4cb8('0x30')](_0x5aff4b[_0x4cb8('0x2f')],_0x5aff4b[_0x4cb8('0x2e')]);_0x48c83f['attributes']=_[_0x4cb8('0x30')](_0x5aff4b[_0x4cb8('0x2f')],this[_0x4cb8('0x5')](_0x21aeb8['query'][_0x4cb8('0x5')]));_0x48c83f[_0x4cb8('0x31')]=_0x48c83f[_0x4cb8('0x31')][_0x4cb8('0x22')]?_0x48c83f[_0x4cb8('0x31')]:_0x5aff4b['model'];if(!_0x21aeb8[_0x4cb8('0x2e')][_0x4cb8('0x32')](_0x4cb8('0x33'))){_0x48c83f['limit']=this[_0x4cb8('0x16')](_0x21aeb8['query']['limit']);_0x48c83f[_0x4cb8('0x17')]=this[_0x4cb8('0x17')](_0x21aeb8['query'][_0x4cb8('0x17')]);}_0x48c83f[_0x4cb8('0x34')]=this[_0x4cb8('0x35')](_0x21aeb8['query'][_0x4cb8('0x35')]);_0x48c83f['where']=this[_0x4cb8('0x7')](_[_0x4cb8('0x36')](_0x21aeb8[_0x4cb8('0x2e')],_0x5aff4b['filters']),_0x38bcaf);if(_0x21aeb8['query'][_0x4cb8('0x37')]){_0x48c83f[_0x4cb8('0x38')]=_['merge'](_0x48c83f['where'],{'$or':_['map'](_0x38bcaf,function(_0xf7740a){if(_0xf7740a['type']!=='VIRTUAL'){if(_0x5b9685){return sequelize[_0x4cb8('0x38')](sequelize['fn']('lower',sequelize[_0x4cb8('0x1c')](_0xf7740a['name'])),{'$like':sequelize['fn']('lower','%'+_0x21aeb8['query'][_0x4cb8('0x37')]+'%')});}else{var _0x9a5144={};_0x9a5144[_0xf7740a[_0x4cb8('0x13')]]={'$like':'%'+_0x21aeb8['query'][_0x4cb8('0x37')]+'%'};return _0x9a5144;}}})});}_0x48c83f=_[_0x4cb8('0x39')]({},_0x48c83f,_0x21aeb8[_0x4cb8('0x3a')]);return _0x48c83f;};
\ No newline at end of file
+var _0x4910=['limit','split','map','indexOf','priority','cast','col','unsigned','substr','ASC','omit','isEmpty','isObject','isString','length','hasOwnProperty','match','^[+]?[0-9]*$','isEmail','getFullTextValue','forEach','replace','query','$id','model','attributes','intersection','nolimit','offset','order','pick','filter','where','VIRTUAL','lower','merge','options','lodash','sequelize','keys','includes','parse','fields','filters','find','type','DATE','isPlainObject','$gte','utc','format','$lte','YYYY-MM-DD','subtract','name','uniqueid','isArray'];(function(_0x646b70,_0x53d1e8){var _0x3c921a=function(_0x3dbee3){while(--_0x3dbee3){_0x646b70['push'](_0x646b70['shift']());}};_0x3c921a(++_0x53d1e8);}(_0x4910,0x97));var _0x0491=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x4910[_0x59ee6f];return _0x4c0979;};'use strict';var _=require(_0x0491('0x0'));var sequelize=require(_0x0491('0x1'));var moment=require('moment');var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x5da89f){var _0x19db4b=['ne'];try{var _0x321252=JSON['parse'](_0x5da89f);var _0x6fe30b=Object[_0x0491('0x2')](_0x321252)[0x0];return _0x19db4b[_0x0491('0x3')](_0x6fe30b);}catch(_0x15f590){return![];}}function getOperatorValue(_0x237e9d){var _0x16f3da=JSON[_0x0491('0x4')](_0x237e9d);var _0xad28f5=Object[_0x0491('0x2')](_0x16f3da)[0x0];var _0x4e6e74=_0x16f3da[_0xad28f5];return{['$'+_0xad28f5]:_0x4e6e74};}exports[_0x0491('0x5')]=function(_0x3e402d){var _0x1874a7=null;if(_0x3e402d){_0x1874a7=_0x3e402d['split'](',');}return _0x1874a7;};exports[_0x0491('0x6')]=function(_0x4c5bc0,_0x2a8198){var _0x17a3f1={};if(!_['isEmpty'](_0x4c5bc0)){_['forOwn'](_0x4c5bc0,function(_0x1470a4,_0x124190){try{if(_0x2a8198){var _0x1d43e8=_[_0x0491('0x7')](_0x2a8198,{'name':_0x124190})||{};if(hasSequelizeOperator(_0x1470a4)){_0x17a3f1[_0x124190]=getOperatorValue(_0x1470a4);}else if(_0x1d43e8[_0x0491('0x8')]===_0x0491('0x9')&&_[_0x0491('0xa')](_0x1470a4)){var _0x2dca79=JSON[_0x0491('0x4')](_0x1470a4);var _0x1ee6db={'$gte':moment(moment(_0x2dca79[_0x0491('0xb')])['format']('YYYY-MM-DD'))[_0x0491('0xc')]()[_0x0491('0xd')](),'$lte':moment(moment(_0x2dca79[_0x0491('0xe')])[_0x0491('0xd')](_0x0491('0xf')))[_0x0491('0xc')]()[_0x0491('0x10')](0x1,'s')['format']()};_0x17a3f1[_0x124190]=_0x1ee6db;}else if(_0x1d43e8[_0x0491('0x11')]===_0x0491('0x12')){_0x17a3f1[_0x124190]=_0x1470a4;}else{_0x17a3f1[_0x124190]=_[_0x0491('0x13')](_0x1470a4)?_0x1470a4:JSON[_0x0491('0x4')](_0x1470a4);}}else{_0x17a3f1[_0x124190]=_[_0x0491('0x13')](_0x1470a4)?_0x1470a4:JSON[_0x0491('0x4')](_0x1470a4);}}catch(_0x1e6564){_0x17a3f1[_0x124190]=_0x1470a4['split'](',');}});}return _0x17a3f1;};exports[_0x0491('0x14')]=function(_0x4d05a7){_0x4d05a7=parseInt(_0x4d05a7,0xa);if(!_0x4d05a7||_0x4d05a7<0x0){_0x4d05a7=LIMIT_VALUE;}return _0x4d05a7;};exports['offset']=function(_0x125b4c){_0x125b4c=parseInt(_0x125b4c,0xa);if(!_0x125b4c||_0x125b4c<0x0){_0x125b4c=0x0;}return _0x125b4c;};exports['sort']=function(_0x532a0f){var _0x337072,_0x37d045=null;if(_0x532a0f){_0x337072=_0x532a0f[_0x0491('0x15')](',');_0x37d045=_[_0x0491('0x16')](_0x337072,function(_0x1c7834){if(_0x1c7834[_0x0491('0x17')]('-')===0x0){return[_0x1c7834===_0x0491('0x18')?sequelize[_0x0491('0x19')](sequelize[_0x0491('0x1a')](_0x0491('0x18')),_0x0491('0x1b')):_0x1c7834[_0x0491('0x1c')](0x1),'DESC'];}else{return[_0x1c7834==='priority'?sequelize['cast'](sequelize['col'](_0x0491('0x18')),_0x0491('0x1b')):_0x1c7834,_0x0491('0x1d')];}});}return _0x37d045;};exports[_0x0491('0x1e')]=function(_0x3b846c,_0x2dd549){if(_[_0x0491('0x1f')](_0x3b846c)){return _0x3b846c;}if(_['isArray'](_0x3b846c)){for(var _0x4da3fe=0x0;_0x4da3fe<_0x3b846c['length'];_0x4da3fe+=0x1){_0x3b846c[_0x4da3fe]=this[_0x0491('0x1e')](_0x3b846c[_0x4da3fe],_0x2dd549);}return _0x3b846c;}if(!_[_0x0491('0x20')](_0x3b846c)){return _0x3b846c;}if(_[_0x0491('0x21')](_0x2dd549)){_0x2dd549=[_0x2dd549];}if(!_[_0x0491('0x13')](_0x2dd549)){return _0x3b846c;}for(var _0x258cce=0x0;_0x258cce<_0x2dd549[_0x0491('0x22')];_0x258cce+=0x1){_['unset'](_0x3b846c,_0x2dd549[_0x258cce]);}for(var _0x355177 in _0x3b846c){if(_0x3b846c[_0x0491('0x23')](_0x355177)){_0x3b846c[_0x355177]=this[_0x0491('0x1e')](_0x3b846c[_0x355177],_0x2dd549);}}return _0x3b846c;};exports['isNumeric']=function(_0x3c7de6){return _0x3c7de6[_0x0491('0x24')](RegExp(_0x0491('0x25')))?!![]:![];};exports[_0x0491('0x26')]=function(_0x4e2ef6){return _0x4e2ef6[_0x0491('0x24')](/^\S+@\S+$/)?!![]:![];};exports[_0x0491('0x27')]=function(_0x159d53){var _0x49acc9=[];_0x159d53[_0x0491('0x15')](/[ ,]+/)[_0x0491('0x28')](function(_0x4e2dff){_0x4e2dff=_0x4e2dff[_0x0491('0x29')](/([^:]")"+/g,'$1');_0x4e2dff='+'+_0x4e2dff+'*';if(_0x4e2dff[_0x0491('0x3')]('@'))_0x4e2dff='\x22'+_0x4e2dff+'\x22';_0x49acc9['push'](_0x4e2dff);});return _0x49acc9['join']('\x20');};exports['getOptions']=function(_0x46404e,_0x19fe77,_0x5bec46){var _0x3d8a59={},_0x185953={};if(_0x19fe77[_0x0491('0x2a')][_0x0491('0x2b')]){_0x19fe77[_0x0491('0x2a')]['id']=_0x19fe77[_0x0491('0x2a')][_0x0491('0x2b')];delete _0x19fe77[_0x0491('0x2a')][_0x0491('0x2b')];}_0x3d8a59['model']=_[_0x0491('0x16')](_0x46404e,_0x0491('0x11'));_0x3d8a59[_0x0491('0x2a')]=_[_0x0491('0x2')](_0x19fe77[_0x0491('0x2a')]);_0x3d8a59[_0x0491('0x6')]=_['intersection'](_0x3d8a59[_0x0491('0x2c')],_0x3d8a59[_0x0491('0x2a')]);_0x185953[_0x0491('0x2d')]=_[_0x0491('0x2e')](_0x3d8a59[_0x0491('0x2c')],this[_0x0491('0x5')](_0x19fe77[_0x0491('0x2a')][_0x0491('0x5')]));_0x185953['attributes']=_0x185953[_0x0491('0x2d')][_0x0491('0x22')]?_0x185953[_0x0491('0x2d')]:_0x3d8a59[_0x0491('0x2c')];if(!_0x19fe77[_0x0491('0x2a')][_0x0491('0x23')](_0x0491('0x2f'))){_0x185953[_0x0491('0x14')]=this[_0x0491('0x14')](_0x19fe77[_0x0491('0x2a')]['limit']);_0x185953['offset']=this[_0x0491('0x30')](_0x19fe77[_0x0491('0x2a')][_0x0491('0x30')]);}_0x185953[_0x0491('0x31')]=this['sort'](_0x19fe77[_0x0491('0x2a')]['sort']);_0x185953['where']=this['filters'](_[_0x0491('0x32')](_0x19fe77['query'],_0x3d8a59[_0x0491('0x6')]),_0x46404e);if(_0x19fe77[_0x0491('0x2a')][_0x0491('0x33')]){_0x185953[_0x0491('0x34')]=_['merge'](_0x185953[_0x0491('0x34')],{'$or':_[_0x0491('0x16')](_0x46404e,function(_0x380432){if(_0x380432['type']!==_0x0491('0x35')){if(_0x5bec46){return sequelize['where'](sequelize['fn'](_0x0491('0x36'),sequelize[_0x0491('0x1a')](_0x380432[_0x0491('0x11')])),{'$like':sequelize['fn']('lower','%'+_0x19fe77[_0x0491('0x2a')]['filter']+'%')});}else{var _0x1e7347={};_0x1e7347[_0x380432[_0x0491('0x11')]]={'$like':'%'+_0x19fe77['query'][_0x0491('0x33')]+'%'};return _0x1e7347;}}})});}_0x185953=_[_0x0491('0x37')]({},_0x185953,_0x19fe77[_0x0491('0x38')]);return _0x185953;};
\ No newline at end of file
index 07619b9..6143e8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa8e=['express','body-parser','cookie-parser','errorhandler','path','passport','cors','moment','./environment','../mysqldb','default','get','env','production','appPath','join','public','test','set','client','use','json\x20replacer','split','static','views','root','engine','html','ejs','view\x20engine','urlencoded','json','50mb','initialize'];(function(_0x1c5142,_0x30ea72){var _0x1268cb=function(_0xaa2299){while(--_0xaa2299){_0x1c5142['push'](_0x1c5142['shift']());}};_0x1268cb(++_0x30ea72);}(_0xfa8e,0xaa));var _0xefa8=function(_0x2355c6,_0x36c21e){_0x2355c6=_0x2355c6-0x0;var _0x238462=_0xfa8e[_0x2355c6];return _0x238462;};'use strict';var express=require(_0xefa8('0x0'));var favicon=require('serve-favicon');var bodyParser=require(_0xefa8('0x1'));var methodOverride=require('method-override');var cookieParser=require(_0xefa8('0x2'));var errorHandler=require(_0xefa8('0x3'));var path=require(_0xefa8('0x4'));var passport=require(_0xefa8('0x5'));var cors=require(_0xefa8('0x6'));var moment=require(_0xefa8('0x7'));var config=require(_0xefa8('0x8'));var db=require(_0xefa8('0x9'))['db'];exports[_0xefa8('0xa')]=function(_0x626da8){var _0x4cc204=_0x626da8[_0xefa8('0xb')](_0xefa8('0xc'));if(_0x4cc204===_0xefa8('0xd')){_0x626da8['set'](_0xefa8('0xe'),path[_0xefa8('0xf')](config['root'],_0xefa8('0x10')));}if(_0x4cc204==='development'||_0x4cc204===_0xefa8('0x11')){_0x626da8[_0xefa8('0x12')](_0xefa8('0xe'),path[_0xefa8('0xf')](config['root'],_0xefa8('0x13')));_0x626da8[_0xefa8('0x14')](errorHandler());}_0x626da8['set'](_0xefa8('0x15'),function(_0x285e94,_0xb47d70){if(this[_0x285e94]instanceof Date){_0xb47d70=this[_0x285e94]['toISOString']()[_0xefa8('0x16')]('.')[0x0]+'Z';}return _0xb47d70;});_0x626da8[_0xefa8('0x14')](express[_0xefa8('0x17')](_0x626da8['get'](_0xefa8('0xe'))));_0x626da8[_0xefa8('0x12')](_0xefa8('0x18'),config[_0xefa8('0x19')]+'/server/views');_0x626da8[_0xefa8('0x1a')](_0xefa8('0x1b'),require(_0xefa8('0x1c'))['renderFile']);_0x626da8[_0xefa8('0x12')](_0xefa8('0x1d'),'html');_0x626da8[_0xefa8('0x14')](bodyParser[_0xefa8('0x1e')]({'limit':'50mb','extended':!![]}));_0x626da8[_0xefa8('0x14')](bodyParser[_0xefa8('0x1f')]({'limit':_0xefa8('0x20')}));_0x626da8['use'](cors());_0x626da8[_0xefa8('0x14')](methodOverride());_0x626da8[_0xefa8('0x14')](cookieParser());_0x626da8[_0xefa8('0x14')](passport[_0xefa8('0x21')]());};
\ No newline at end of file
+var _0x8ba8=['serve-favicon','body-parser','cookie-parser','errorhandler','cors','moment','./environment','../mysqldb','default','get','env','production','set','appPath','join','root','public','client','use','json\x20replacer','split','views','engine','html','renderFile','view\x20engine','urlencoded','json','50mb','initialize','express'];(function(_0x32fdc0,_0x261cf3){var _0x15edda=function(_0x150e05){while(--_0x150e05){_0x32fdc0['push'](_0x32fdc0['shift']());}};_0x15edda(++_0x261cf3);}(_0x8ba8,0x192));var _0x88ba=function(_0x1537f1,_0x562bf5){_0x1537f1=_0x1537f1-0x0;var _0xe4452=_0x8ba8[_0x1537f1];return _0xe4452;};'use strict';var express=require(_0x88ba('0x0'));var favicon=require(_0x88ba('0x1'));var bodyParser=require(_0x88ba('0x2'));var methodOverride=require('method-override');var cookieParser=require(_0x88ba('0x3'));var errorHandler=require(_0x88ba('0x4'));var path=require('path');var passport=require('passport');var cors=require(_0x88ba('0x5'));var moment=require(_0x88ba('0x6'));var config=require(_0x88ba('0x7'));var db=require(_0x88ba('0x8'))['db'];exports[_0x88ba('0x9')]=function(_0x458c1a){var _0x2d07d6=_0x458c1a[_0x88ba('0xa')](_0x88ba('0xb'));if(_0x2d07d6===_0x88ba('0xc')){_0x458c1a[_0x88ba('0xd')](_0x88ba('0xe'),path[_0x88ba('0xf')](config[_0x88ba('0x10')],_0x88ba('0x11')));}if(_0x2d07d6==='development'||_0x2d07d6==='test'){_0x458c1a[_0x88ba('0xd')]('appPath',path[_0x88ba('0xf')](config[_0x88ba('0x10')],_0x88ba('0x12')));_0x458c1a[_0x88ba('0x13')](errorHandler());}_0x458c1a[_0x88ba('0xd')](_0x88ba('0x14'),function(_0x5bdf17,_0x1e5164){if(this[_0x5bdf17]instanceof Date){_0x1e5164=this[_0x5bdf17]['toISOString']()[_0x88ba('0x15')]('.')[0x0]+'Z';}return _0x1e5164;});_0x458c1a[_0x88ba('0x13')](express['static'](_0x458c1a[_0x88ba('0xa')](_0x88ba('0xe'))));_0x458c1a['set'](_0x88ba('0x16'),config[_0x88ba('0x10')]+'/server/views');_0x458c1a[_0x88ba('0x17')](_0x88ba('0x18'),require('ejs')[_0x88ba('0x19')]);_0x458c1a[_0x88ba('0xd')](_0x88ba('0x1a'),_0x88ba('0x18'));_0x458c1a['use'](bodyParser[_0x88ba('0x1b')]({'limit':'50mb','extended':!![]}));_0x458c1a[_0x88ba('0x13')](bodyParser[_0x88ba('0x1c')]({'limit':_0x88ba('0x1d')}));_0x458c1a[_0x88ba('0x13')](cors());_0x458c1a[_0x88ba('0x13')](methodOverride());_0x458c1a['use'](cookieParser());_0x458c1a['use'](passport[_0x88ba('0x1e')]());};
\ No newline at end of file
index 15266ca..cc1f6f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c04=['map','createHash','md5','update','hex','getUuid','platform','licenseToken','test','dmidecode\x20--string\x20system-uuid','utf8','hostname','macAddress','ipAddress','digest','substring','lodash','crypto','bimedia-machine-uuid','execSync','networkInterfaces','orderBy','keys','length','filter','family','internal','concat','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface'];(function(_0x553464,_0x57977b){var _0xe3dd09=function(_0x52da88){while(--_0x52da88){_0x553464['push'](_0x553464['shift']());}};_0xe3dd09(++_0x57977b);}(_0x2c04,0x19c));var _0x42c0=function(_0x5be335,_0x257fe0){_0x5be335=_0x5be335-0x0;var _0x58c00e=_0x2c04[_0x5be335];return _0x58c00e;};'use strict';var _=require(_0x42c0('0x0'));var os=require('os');var crypto=require(_0x42c0('0x1'));var machine=require(_0x42c0('0x2'));var exec=require('child_process')[_0x42c0('0x3')];var config=require('../environment');function getInterfaces(){var _0x2405d9=[];var _0x1ada18=os[_0x42c0('0x4')]();var _0x5ba989=_[_0x42c0('0x5')](_[_0x42c0('0x6')](_0x1ada18));for(var _0x5a29cb=0x0;_0x5a29cb<_0x5ba989[_0x42c0('0x7')];_0x5a29cb++){var _0x16624a=_0x1ada18[_0x5ba989[_0x5a29cb]][_0x42c0('0x8')](function(_0x163e97){return _0x163e97[_0x42c0('0x9')]==='IPv4'&&_0x163e97[_0x42c0('0xa')]===![];});_0x2405d9=_0x2405d9[_0x42c0('0xb')](_0x16624a);}return _0x2405d9;}function getFirstInterface(){var _0xa201c=_['head'](getInterfaces());return{'macAddress':_0xa201c&&_0xa201c[_0x42c0('0xc')]?_0xa201c[_0x42c0('0xc')]:_0x42c0('0xd'),'ipAddress':_0xa201c&&_0xa201c['address']?_0xa201c[_0x42c0('0xe')]:_0x42c0('0xf')};}exports[_0x42c0('0x10')]=getFirstInterface;function getCPUhash(){var _0x4b6c28=_['orderBy'](os['cpus']()[_0x42c0('0x11')](function(_0x119ad0){return _0x119ad0['model'];}))['join'](':');return crypto[_0x42c0('0x12')](_0x42c0('0x13'))[_0x42c0('0x14')](_0x4b6c28)['digest'](_0x42c0('0x15'));}exports[_0x42c0('0x16')]=function(){var _0x5ea142=os[_0x42c0('0x17')]();var _0xef05fe=/[0-9a-f-]{36}/;if(config[_0x42c0('0x18')]&&_0xef05fe[_0x42c0('0x19')](config[_0x42c0('0x18')])){return config[_0x42c0('0x18')];}else if(_0x5ea142==='win32'){return exec(_0x42c0('0x1a'),{'encoding':_0x42c0('0x1b')})['replace']('\x0d\x0a','');}else{var _0x3ee8b5=getFirstInterface();var _0xa0ccd0=getCPUhash();var _0x32538a=_0xa0ccd0+'|'+os[_0x42c0('0x1c')]()+'|'+_0x3ee8b5[_0x42c0('0x1d')]+'|'+_0x3ee8b5[_0x42c0('0x1e')];var _0x37bf50=crypto['createHash'](_0x42c0('0x13'))['update'](_0x32538a)[_0x42c0('0x1f')]('hex');return _0x37bf50[_0x42c0('0x20')](0x0,0x8)+'-'+_0x37bf50[_0x42c0('0x20')](0x8,0xc)+'-'+_0x37bf50[_0x42c0('0x20')](0xc,0x10)+'-'+_0x37bf50['substring'](0x10,0x14)+'-'+_0x37bf50['substring'](0x14);}};
\ No newline at end of file
+var _0xfd51=['substring','crypto','bimedia-machine-uuid','child_process','execSync','../environment','networkInterfaces','orderBy','length','filter','family','internal','head','mac','address','cpus','map','model','createHash','md5','update','hex','getUuid','platform','licenseToken','win32','dmidecode\x20--string\x20system-uuid','replace','macAddress','ipAddress','digest'];(function(_0x35ed69,_0x1b09f2){var _0x1d53bb=function(_0x22a13f){while(--_0x22a13f){_0x35ed69['push'](_0x35ed69['shift']());}};_0x1d53bb(++_0x1b09f2);}(_0xfd51,0x118));var _0x1fd5=function(_0x141a86,_0x343c1a){_0x141a86=_0x141a86-0x0;var _0x306338=_0xfd51[_0x141a86];return _0x306338;};'use strict';var _=require('lodash');var os=require('os');var crypto=require(_0x1fd5('0x0'));var machine=require(_0x1fd5('0x1'));var exec=require(_0x1fd5('0x2'))[_0x1fd5('0x3')];var config=require(_0x1fd5('0x4'));function getInterfaces(){var _0x4884a7=[];var _0x56fd07=os[_0x1fd5('0x5')]();var _0x2f85d5=_[_0x1fd5('0x6')](_['keys'](_0x56fd07));for(var _0x124af0=0x0;_0x124af0<_0x2f85d5[_0x1fd5('0x7')];_0x124af0++){var _0x3aa6dd=_0x56fd07[_0x2f85d5[_0x124af0]][_0x1fd5('0x8')](function(_0x1b6e04){return _0x1b6e04[_0x1fd5('0x9')]==='IPv4'&&_0x1b6e04[_0x1fd5('0xa')]===![];});_0x4884a7=_0x4884a7['concat'](_0x3aa6dd);}return _0x4884a7;}function getFirstInterface(){var _0x439711=_[_0x1fd5('0xb')](getInterfaces());return{'macAddress':_0x439711&&_0x439711[_0x1fd5('0xc')]?_0x439711[_0x1fd5('0xc')]:'00:00:00:00:00:00','ipAddress':_0x439711&&_0x439711[_0x1fd5('0xd')]?_0x439711[_0x1fd5('0xd')]:'127.0.0.1'};}exports['getFirstInterface']=getFirstInterface;function getCPUhash(){var _0xb08d95=_[_0x1fd5('0x6')](os[_0x1fd5('0xe')]()[_0x1fd5('0xf')](function(_0x175c65){return _0x175c65[_0x1fd5('0x10')];}))['join'](':');return crypto[_0x1fd5('0x11')](_0x1fd5('0x12'))[_0x1fd5('0x13')](_0xb08d95)['digest'](_0x1fd5('0x14'));}exports[_0x1fd5('0x15')]=function(){var _0x141722=os[_0x1fd5('0x16')]();var _0x45cf0f=/[0-9a-f-]{36}/;if(config[_0x1fd5('0x17')]&&_0x45cf0f['test'](config[_0x1fd5('0x17')])){return config[_0x1fd5('0x17')];}else if(_0x141722===_0x1fd5('0x18')){return exec(_0x1fd5('0x19'),{'encoding':'utf8'})[_0x1fd5('0x1a')]('\x0d\x0a','');}else{var _0x443019=getFirstInterface();var _0x2a7060=getCPUhash();var _0x248c16=_0x2a7060+'|'+os['hostname']()+'|'+_0x443019[_0x1fd5('0x1b')]+'|'+_0x443019[_0x1fd5('0x1c')];var _0x510da4=crypto['createHash'](_0x1fd5('0x12'))[_0x1fd5('0x13')](_0x248c16)[_0x1fd5('0x1d')](_0x1fd5('0x14'));return _0x510da4[_0x1fd5('0x1e')](0x0,0x8)+'-'+_0x510da4[_0x1fd5('0x1e')](0x8,0xc)+'-'+_0x510da4[_0x1fd5('0x1e')](0xc,0x10)+'-'+_0x510da4[_0x1fd5('0x1e')](0x10,0x14)+'-'+_0x510da4[_0x1fd5('0x1e')](0x14);}};
\ No newline at end of file
index 4bf04ec..9fd9bf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x006f=['NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','toUpperCase','format','YYYY-MM-DD\x20HH:mm','encryptString','diff','decryptString','days','DEMO\x20START\x20AT\x20%s','getUuid','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','error','message','default','util','request-promise','bluebird','pkginfo','../../mysqldb','../../components/encryptor','./hardware','license','exports','version','then','catch','data1','data2','active','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED'];(function(_0x540e48,_0x19f1b5){var _0x20a1d3=function(_0x3a79c1){while(--_0x3a79c1){_0x540e48['push'](_0x540e48['shift']());}};_0x20a1d3(++_0x19f1b5);}(_0x006f,0x7f));var _0xf006=function(_0x5baa5c,_0x2fc2e0){_0x5baa5c=_0x5baa5c-0x0;var _0x3a12a6=_0x006f[_0x5baa5c];return _0x3a12a6;};'use strict';var util=require(_0xf006('0x0'));var moment=require('moment');var rp=require(_0xf006('0x1'));var BPromise=require(_0xf006('0x2'));var pkginfo=require(_0xf006('0x3'))(module,'version');var db=require(_0xf006('0x4'))['db'];var encryptor=require(_0xf006('0x5'));var hardware=require(_0xf006('0x6'));var logger=require('../logger')(_0xf006('0x7'));var HOST='https://www.xcallymotion.com';var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x419ba3){return new BPromise(function(_0x12cea6,_0x65d74a){var _0x1e223b=util['format']('%s/api/servers/%s/check?version=%s',HOST,_0x419ba3,module[_0xf006('0x8')][_0xf006('0x9')]);if(oldToken){_0x1e223b=util['format']('%s/api/servers/%s/check?version=%s&oldtoken=%s',HOST,_0x419ba3,module['exports'][_0xf006('0x9')],oldToken);}var _0x505fcf={'uri':_0x1e223b,'method':'GET','timeout':0xea60,'json':!![]};return rp(_0x505fcf)[_0xf006('0xa')](function(_0x2048e3){_0x12cea6(_0x2048e3);})[_0xf006('0xb')](function(_0xd6d950){_0x65d74a(_0xd6d950);});});}function manageLicense(_0x2f1a55,_0xcb1446){var _0x5119a7=_0xcb1446['get']({'plain':!![]});if(!isOldTokenSent&&_0x5119a7[_0xf006('0xc')]!==_0x2f1a55&&!_0x5119a7[_0xf006('0xd')]){oldToken=_0x5119a7['data1'];}httpRequest(_0x2f1a55)[_0xf006('0xa')](function(_0xa532c1){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0xa532c1[_0xf006('0xe')]){isOldTokenSent=![];if(!_0x5119a7['license']&&_0x5119a7[_0xf006('0x7')]!=_0xa532c1['license']||_0x5119a7[_0xf006('0x7')]&&_0x5119a7[_0xf006('0xd')]){logger[_0xf006('0xf')](_0xf006('0x10'));}if(_0x5119a7['license']&&!_0x5119a7[_0xf006('0xd')]&&_0x5119a7[_0xf006('0x7')]!=_0xa532c1['license']){logger['info'](_0xf006('0x11'));}if(_0x5119a7[_0xf006('0x7')]&&!_0x5119a7[_0xf006('0xd')]&&_0x5119a7['license']==_0xa532c1[_0xf006('0x7')]){return _0xcb1446;}return _0xcb1446[_0xf006('0x12')]({'data1':_0x2f1a55,'data2':null,'license':_0xa532c1[_0xf006('0x7')]});}else{if(_0xa532c1[_0xf006('0x7')]||_0x5119a7['license']){if(!_0x5119a7[_0xf006('0xd')]){if(_0x5119a7[_0xf006('0xc')]==_0x2f1a55){GRAY_PERIOD_REASON=_0xf006('0x13');logger[_0xf006('0xf')](_0xf006('0x14'));}else{GRAY_PERIOD_REASON='Changed';logger[_0xf006('0xf')](_0xf006('0x15'),_0x5119a7[_0xf006('0xc')],_0x2f1a55);}logger['info']('%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s',GRAY_PERIOD_REASON[_0xf006('0x16')](),moment()[_0xf006('0x17')](_0xf006('0x18')));return _0xcb1446[_0xf006('0x12')]({'data2':encryptor[_0xf006('0x19')](moment()[_0xf006('0x17')]('YYYY-MM-DD\x20HH:mm'))});}else{if(moment()[_0xf006('0x1a')](encryptor[_0xf006('0x1b')](_0x5119a7['data2']),_0xf006('0x1c'))>DAYS){logger[_0xf006('0xf')](_0xf006('0x1d'),moment()[_0xf006('0x17')](_0xf006('0x18')));isOldTokenSent=![];return _0xcb1446[_0xf006('0x12')]({'data1':_0x2f1a55,'data2':null,'license':null});}}}else{if(_0x5119a7[_0xf006('0xc')]!=_0x2f1a55){logger['info'](_0xf006('0x15'),_0x5119a7[_0xf006('0xc')],_0x2f1a55);return _0xcb1446[_0xf006('0x12')]({'data1':_0x2f1a55,'data2':null,'license':null});}}}return _0xcb1446;})['then'](function(_0x20e133){_0xcb1446=_0x20e133;})[_0xf006('0xb')](function(_0x10ef67){logger['error'](_0x10ef67['message']);})['finally'](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0xcb1446);},TIME);});}function defaultLicense(){var _0x327e11=hardware[_0xf006('0x1e')]();if(_0x327e11){return db['License'][_0xf006('0x1f')]({'where':{'id':0x1},'defaults':{'data1':_0x327e11}})[_0xf006('0x20')](function(_0x48ae7e,_0x26f978){logger[_0xf006('0xf')](_0xf006('0x21'),_0x327e11);manageLicense(_0x327e11,_0x48ae7e);})[_0xf006('0xb')](function(_0x29426d){logger[_0xf006('0x22')](_0x29426d[_0xf006('0x23')]);});}}exports[_0xf006('0x24')]=defaultLicense;
\ No newline at end of file
+var _0x4b25=['YYYY-MM-DD\x20HH:mm','encryptString','decryptString','days','error','message','finally','getUuid','License','spread','default','moment','request-promise','bluebird','pkginfo','version','../logger','format','%s/api/servers/%s/check?version=%s','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','catch','get','data1','data2','license','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','info','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase'];(function(_0x1b3224,_0x3351d9){var _0x5dae4f=function(_0x22894a){while(--_0x22894a){_0x1b3224['push'](_0x1b3224['shift']());}};_0x5dae4f(++_0x3351d9);}(_0x4b25,0x13b));var _0x54b2=function(_0x4a3f67,_0x346a43){_0x4a3f67=_0x4a3f67-0x0;var _0x3874ee=_0x4b25[_0x4a3f67];return _0x3874ee;};'use strict';var util=require('util');var moment=require(_0x54b2('0x0'));var rp=require(_0x54b2('0x1'));var BPromise=require(_0x54b2('0x2'));var pkginfo=require(_0x54b2('0x3'))(module,_0x54b2('0x4'));var db=require('../../mysqldb')['db'];var encryptor=require('../../components/encryptor');var hardware=require('./hardware');var logger=require(_0x54b2('0x5'))('license');var HOST='https://www.xcallymotion.com';var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x1db335){return new BPromise(function(_0x5e6196,_0x3f0bf5){var _0x581880=util[_0x54b2('0x6')](_0x54b2('0x7'),HOST,_0x1db335,module[_0x54b2('0x8')][_0x54b2('0x4')]);if(oldToken){_0x581880=util[_0x54b2('0x6')](_0x54b2('0x9'),HOST,_0x1db335,module[_0x54b2('0x8')][_0x54b2('0x4')],oldToken);}var _0x9fd3d2={'uri':_0x581880,'method':_0x54b2('0xa'),'timeout':0xea60,'json':!![]};return rp(_0x9fd3d2)[_0x54b2('0xb')](function(_0x1a5d46){_0x5e6196(_0x1a5d46);})[_0x54b2('0xc')](function(_0x2200c3){_0x3f0bf5(_0x2200c3);});});}function manageLicense(_0x3bc1e2,_0x221b9){var _0x2e8e77=_0x221b9[_0x54b2('0xd')]({'plain':!![]});if(!isOldTokenSent&&_0x2e8e77[_0x54b2('0xe')]!==_0x3bc1e2&&!_0x2e8e77[_0x54b2('0xf')]){oldToken=_0x2e8e77['data1'];}httpRequest(_0x3bc1e2)['then'](function(_0x442e02){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x442e02['active']){isOldTokenSent=![];if(!_0x2e8e77[_0x54b2('0x10')]&&_0x2e8e77[_0x54b2('0x10')]!=_0x442e02[_0x54b2('0x10')]||_0x2e8e77[_0x54b2('0x10')]&&_0x2e8e77['data2']){logger['info'](_0x54b2('0x11'));}if(_0x2e8e77['license']&&!_0x2e8e77['data2']&&_0x2e8e77[_0x54b2('0x10')]!=_0x442e02[_0x54b2('0x10')]){logger[_0x54b2('0x12')](_0x54b2('0x13'));}if(_0x2e8e77[_0x54b2('0x10')]&&!_0x2e8e77['data2']&&_0x2e8e77[_0x54b2('0x10')]==_0x442e02[_0x54b2('0x10')]){return _0x221b9;}return _0x221b9[_0x54b2('0x14')]({'data1':_0x3bc1e2,'data2':null,'license':_0x442e02[_0x54b2('0x10')]});}else{if(_0x442e02[_0x54b2('0x10')]||_0x2e8e77['license']){if(!_0x2e8e77['data2']){if(_0x2e8e77['data1']==_0x3bc1e2){GRAY_PERIOD_REASON=_0x54b2('0x15');logger[_0x54b2('0x12')](_0x54b2('0x16'));}else{GRAY_PERIOD_REASON=_0x54b2('0x17');logger[_0x54b2('0x12')](_0x54b2('0x18'),_0x2e8e77['data1'],_0x3bc1e2);}logger[_0x54b2('0x12')](_0x54b2('0x19'),GRAY_PERIOD_REASON[_0x54b2('0x1a')](),moment()['format'](_0x54b2('0x1b')));return _0x221b9['update']({'data2':encryptor[_0x54b2('0x1c')](moment()[_0x54b2('0x6')]('YYYY-MM-DD\x20HH:mm'))});}else{if(moment()['diff'](encryptor[_0x54b2('0x1d')](_0x2e8e77[_0x54b2('0xf')]),_0x54b2('0x1e'))>DAYS){logger[_0x54b2('0x12')]('DEMO\x20START\x20AT\x20%s',moment()[_0x54b2('0x6')]('YYYY-MM-DD\x20HH:mm'));isOldTokenSent=![];return _0x221b9[_0x54b2('0x14')]({'data1':_0x3bc1e2,'data2':null,'license':null});}}}else{if(_0x2e8e77[_0x54b2('0xe')]!=_0x3bc1e2){logger[_0x54b2('0x12')](_0x54b2('0x18'),_0x2e8e77[_0x54b2('0xe')],_0x3bc1e2);return _0x221b9['update']({'data1':_0x3bc1e2,'data2':null,'license':null});}}}return _0x221b9;})[_0x54b2('0xb')](function(_0x2b83b3){_0x221b9=_0x2b83b3;})['catch'](function(_0x2c5074){logger[_0x54b2('0x1f')](_0x2c5074[_0x54b2('0x20')]);})[_0x54b2('0x21')](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0x221b9);},TIME);});}function defaultLicense(){var _0x75f3f3=hardware[_0x54b2('0x22')]();if(_0x75f3f3){return db[_0x54b2('0x23')]['findOrCreate']({'where':{'id':0x1},'defaults':{'data1':_0x75f3f3}})[_0x54b2('0x24')](function(_0xf3be84,_0x27304c){logger[_0x54b2('0x12')]('SERVICE\x20LICENSE\x20STARTED\x20%s',_0x75f3f3);manageLicense(_0x75f3f3,_0xf3be84);})[_0x54b2('0xc')](function(_0xa06e6d){logger[_0x54b2('0x1f')](_0xa06e6d[_0x54b2('0x20')]);});}}exports[_0x54b2('0x25')]=defaultLicense;
\ No newline at end of file
index e83cca4..3151d56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f65=['col','admin','telephone','users','forEach','user','count','pick','countBy','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','util','moment','bluebird','./hardware','../../mysqldb','Breaking\x20license','getUuid','License','defaults','catch','uuid','license','isEmpty','data1','split','decryptString','%s:%s:%s','parse','demo','machineUuid','gray','deadline','add','days','format','grayReason','changed','disabled','message','then','User','findAll'];(function(_0x12e5b3,_0x52389d){var _0x27a568=function(_0x4218fc){while(--_0x4218fc){_0x12e5b3['push'](_0x12e5b3['shift']());}};_0x27a568(++_0x52389d);}(_0x3f65,0x140));var _0x53f6=function(_0x37ad5a,_0x55b590){_0x37ad5a=_0x37ad5a-0x0;var _0x1ab506=_0x3f65[_0x37ad5a];return _0x1ab506;};'use strict';var util=require(_0x53f6('0x0'));var _=require('lodash');var moment=require(_0x53f6('0x1'));var BPromise=require(_0x53f6('0x2'));var hardware=require(_0x53f6('0x3'));var encryptor=require('../../components/encryptor');var db=require(_0x53f6('0x4'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':'2027-01-01T00:00:00.000Z','chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':'Demo\x20license','machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':'2027-01-01T00:00:00.000Z','chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x53f6('0x5'),'machineUuid':hardware[_0x53f6('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x5c2613){return new BPromise(function(_0x4ee2d4,_0x459351){return db[_0x53f6('0x7')]['find'](_[_0x53f6('0x8')](_0x5c2613,{'raw':!![],'where':{'id':0x1}}))['then'](function(_0x16fb35){return checkLicense(_0x16fb35,null);})['then'](function(_0x5c315a){_0x4ee2d4(_0x5c315a);return;})[_0x53f6('0x9')](function(_0x4167a5){_0x459351(_0x4167a5);});});}function checkLicense(_0x4cb933,_0x2d56d3){if(!_0x4cb933){demoLicense[_0x53f6('0xa')]=_0x4cb933['data1'];return demoLicense;}try{var _0x1a12db=_0x2d56d3||_0x4cb933[_0x53f6('0xb')];if(_[_0x53f6('0xc')](_0x1a12db)){throw new Error('License\x20key\x20value\x20not\x20found');}var _0x16c467=_0x4cb933[_0x53f6('0xd')];var _0x3b5303=_0x4cb933['data2'];var _0x5d46c9=_0x16c467['split']('-')[0x4];var _0x1b1444=_0x16c467[_0x53f6('0xe')]('-')[0x0];var _0x2dac81=encryptor[_0x53f6('0xf')](_0x1a12db,util['format'](_0x53f6('0x10'),_0x5d46c9,_0x16c467,_0x1b1444));var _0x259700=JSON[_0x53f6('0x11')](_0x2dac81);_0x259700[_0x53f6('0x12')]=![];_0x259700[_0x53f6('0xa')]=_0x16c467;_0x259700[_0x53f6('0x13')]=hardware[_0x53f6('0x6')]();if(_0x3b5303){var _0x1b71c2=encryptor[_0x53f6('0xf')](_0x3b5303);_0x259700[_0x53f6('0x14')]=_0x1b71c2;_0x259700[_0x53f6('0x15')]=moment(_0x1b71c2)[_0x53f6('0x16')](0x7,_0x53f6('0x17'))[_0x53f6('0x18')]();_0x259700[_0x53f6('0x19')]=_0x259700[_0x53f6('0xa')]!=_0x259700['machineUuid']?_0x53f6('0x1a'):_0x53f6('0x1b');}return _0x259700;}catch(_0x18a577){breakingLicense['uuid']=_0x4cb933[_0x53f6('0xd')];breakingLicense[_0x53f6('0x1c')]=_0x18a577[_0x53f6('0x1c')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x10f6bd,_0x2ca284){getLicense()[_0x53f6('0x1d')](function(_0x24bcfd){return db[_0x53f6('0x1e')][_0x53f6('0x1f')]({'attributes':['role',[db['sequelize']['fn']('COUNT',db['sequelize'][_0x53f6('0x20')]('role')),'count']],'group':'role','where':{'role':{'$or':[_0x53f6('0x21'),'user',_0x53f6('0x22')]}},'raw':!![]})[_0x53f6('0x1d')](function(_0x231fd4){var _0x15b720={'user':_0x24bcfd[_0x53f6('0x23')]||0x0,'telephone':_0x24bcfd['telephones']||0x0};_0x231fd4[_0x53f6('0x24')](function(_0x5dcea5){var _0x1c183a=_0x5dcea5['role']==='admin'?_0x53f6('0x25'):_0x5dcea5['role'];_0x15b720[_0x1c183a]-=_0x5dcea5[_0x53f6('0x26')];if(_0x15b720[_0x1c183a]<0x0)_0x15b720[_0x1c183a]=0x0;});_0x10f6bd(_0x15b720);return;});})[_0x53f6('0x9')](function(_0x12f76d){_0x2ca284(_0x12f76d);});});}function checkUserLimits(_0x16d5f5){return new BPromise(function(_0x4859db,_0x41eebb){getLimits()['then'](function(_0x21368e){var _0x3e25fb=_[_0x53f6('0x27')](_[_0x53f6('0x28')](_0x16d5f5,'role'),[_0x53f6('0x21'),_0x53f6('0x25'),_0x53f6('0x22')]);var _0x5dcf5f=(_0x3e25fb[_0x53f6('0x21')]||0x0)+(_0x3e25fb[_0x53f6('0x25')]||0x0);var _0x4f9faa=_0x3e25fb[_0x53f6('0x22')]||0x0;if(_0x5dcf5f>_0x21368e[_0x53f6('0x25')])return _0x41eebb(_0x53f6('0x29'));if(_0x4f9faa>_0x21368e[_0x53f6('0x22')])return _0x41eebb(_0x53f6('0x2a'));return _0x4859db();})['catch'](function(_0x65f599){_0x41eebb(_0x65f599);});});}module[_0x53f6('0x2b')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0x4289=['forEach','pick','countBy','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','moment','bluebird','./hardware','../../mysqldb','2027-01-01T00:00:00.000Z','Breaking\x20license','getUuid','License','defaults','then','catch','uuid','data1','isEmpty','License\x20key\x20value\x20not\x20found','split','decryptString','format','%s:%s:%s','parse','demo','grayReason','machineUuid','disabled','message','User','findAll','sequelize','COUNT','col','role','count','admin','user','telephone','users','telephones'];(function(_0x47235c,_0x3190fc){var _0x43efc6=function(_0x385c70){while(--_0x385c70){_0x47235c['push'](_0x47235c['shift']());}};_0x43efc6(++_0x3190fc);}(_0x4289,0x15e));var _0x9428=function(_0x22eb6d,_0xe01b3){_0x22eb6d=_0x22eb6d-0x0;var _0x41ca31=_0x4289[_0x22eb6d];return _0x41ca31;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0x9428('0x0'));var BPromise=require(_0x9428('0x1'));var hardware=require(_0x9428('0x2'));var encryptor=require('../../components/encryptor');var db=require(_0x9428('0x3'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x9428('0x4'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':'Demo\x20license','machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':'2027-01-01T00:00:00.000Z','chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x9428('0x5'),'machineUuid':hardware[_0x9428('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x248d20){return new BPromise(function(_0x5bba24,_0x58567e){return db[_0x9428('0x7')]['find'](_[_0x9428('0x8')](_0x248d20,{'raw':!![],'where':{'id':0x1}}))[_0x9428('0x9')](function(_0x52cd43){return checkLicense(_0x52cd43,null);})[_0x9428('0x9')](function(_0x346fe2){_0x5bba24(_0x346fe2);return;})[_0x9428('0xa')](function(_0x5a401c){_0x58567e(_0x5a401c);});});}function checkLicense(_0x408bab,_0x4174c6){if(!_0x408bab){demoLicense[_0x9428('0xb')]=_0x408bab[_0x9428('0xc')];return demoLicense;}try{var _0x36ba85=_0x4174c6||_0x408bab['license'];if(_[_0x9428('0xd')](_0x36ba85)){throw new Error(_0x9428('0xe'));}var _0x1a12c7=_0x408bab['data1'];var _0xf99a41=_0x408bab['data2'];var _0x1d53d3=_0x1a12c7['split']('-')[0x4];var _0x2feed8=_0x1a12c7[_0x9428('0xf')]('-')[0x0];var _0x52e1d8=encryptor[_0x9428('0x10')](_0x36ba85,util[_0x9428('0x11')](_0x9428('0x12'),_0x1d53d3,_0x1a12c7,_0x2feed8));var _0x218bb2=JSON[_0x9428('0x13')](_0x52e1d8);_0x218bb2[_0x9428('0x14')]=![];_0x218bb2[_0x9428('0xb')]=_0x1a12c7;_0x218bb2['machineUuid']=hardware['getUuid']();if(_0xf99a41){var _0x5cfcff=encryptor['decryptString'](_0xf99a41);_0x218bb2['gray']=_0x5cfcff;_0x218bb2['deadline']=moment(_0x5cfcff)['add'](0x7,'days')[_0x9428('0x11')]();_0x218bb2[_0x9428('0x15')]=_0x218bb2[_0x9428('0xb')]!=_0x218bb2[_0x9428('0x16')]?'changed':_0x9428('0x17');}return _0x218bb2;}catch(_0x3a0919){breakingLicense[_0x9428('0xb')]=_0x408bab[_0x9428('0xc')];breakingLicense[_0x9428('0x18')]=_0x3a0919['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x2c3620,_0x1622b0){getLicense()[_0x9428('0x9')](function(_0x314980){return db[_0x9428('0x19')][_0x9428('0x1a')]({'attributes':['role',[db[_0x9428('0x1b')]['fn'](_0x9428('0x1c'),db['sequelize'][_0x9428('0x1d')](_0x9428('0x1e'))),_0x9428('0x1f')]],'group':'role','where':{'role':{'$or':[_0x9428('0x20'),_0x9428('0x21'),_0x9428('0x22')]}},'raw':!![]})[_0x9428('0x9')](function(_0x2997c5){var _0x42b17d={'user':_0x314980[_0x9428('0x23')]||0x0,'telephone':_0x314980[_0x9428('0x24')]||0x0};_0x2997c5[_0x9428('0x25')](function(_0x1bdfaa){var _0x2f2391=_0x1bdfaa[_0x9428('0x1e')]===_0x9428('0x20')?_0x9428('0x21'):_0x1bdfaa[_0x9428('0x1e')];_0x42b17d[_0x2f2391]-=_0x1bdfaa[_0x9428('0x1f')];if(_0x42b17d[_0x2f2391]<0x0)_0x42b17d[_0x2f2391]=0x0;});_0x2c3620(_0x42b17d);return;});})[_0x9428('0xa')](function(_0x2baf8c){_0x1622b0(_0x2baf8c);});});}function checkUserLimits(_0x2dad2b){return new BPromise(function(_0x18eec1,_0x4f7f6d){getLimits()['then'](function(_0x14fed9){var _0x198fa4=_[_0x9428('0x26')](_[_0x9428('0x27')](_0x2dad2b,_0x9428('0x1e')),[_0x9428('0x20'),_0x9428('0x21'),_0x9428('0x22')]);var _0x1f2893=(_0x198fa4[_0x9428('0x20')]||0x0)+(_0x198fa4[_0x9428('0x21')]||0x0);var _0x382ee5=_0x198fa4[_0x9428('0x22')]||0x0;if(_0x1f2893>_0x14fed9[_0x9428('0x21')])return _0x4f7f6d(_0x9428('0x28'));if(_0x382ee5>_0x14fed9[_0x9428('0x22')])return _0x4f7f6d(_0x9428('0x29'));return _0x18eec1();})['catch'](function(_0x1e5f8c){_0x4f7f6d(_0x1e5f8c);});});}module[_0x9428('0x2a')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index fea880b..e93ed89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb44a=['myappanuglar-secret','secret'];(function(_0x29b609,_0x19d388){var _0x54c952=function(_0xb3c38d){while(--_0xb3c38d){_0x29b609['push'](_0x29b609['shift']());}};_0x54c952(++_0x19d388);}(_0xb44a,0x1c2));var _0xab44=function(_0x8c0bf5,_0x2456ab){_0x8c0bf5=_0x8c0bf5-0x0;var _0x447387=_0xb44a[_0x8c0bf5];return _0x447387;};'use strict';module['exports']={'DOMAIN':'http://localhost:9000','SESSION_SECRET':_0xab44('0x0'),'GOOGLE_ID':'app-id','GOOGLE_SECRET':_0xab44('0x1'),'DEBUG':''};
\ No newline at end of file
+var _0x1775=['myappanuglar-secret','app-id','secret','http://localhost:9000'];(function(_0x2d649c,_0x5656bd){var _0x498e3b=function(_0x46d566){while(--_0x46d566){_0x2d649c['push'](_0x2d649c['shift']());}};_0x498e3b(++_0x5656bd);}(_0x1775,0x1db));var _0x5177=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x1775[_0x432682];return _0x463d05;};'use strict';module['exports']={'DOMAIN':_0x5177('0x0'),'SESSION_SECRET':_0x5177('0x1'),'GOOGLE_ID':_0x5177('0x2'),'GOOGLE_SECRET':_0x5177('0x3'),'DEBUG':''};
\ No newline at end of file
index d22f651..4f90e85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b24=['format','%s-%s.log','message','{{{','replace','}}}','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','exports','Logger','transports','File','%s-%s','error','info','Console','env','moment','winston','path','INFO','join','/var'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x0b24,0xba));var _0x40b2=function(_0x44132a,_0x3667ff){_0x44132a=_0x44132a-0x0;var _0x6b03c0=_0x0b24[_0x44132a];return _0x6b03c0;};'use strict';var moment=require(_0x40b2('0x0'));var winston=require(_0x40b2('0x1'));var util=require('util');var path=require(_0x40b2('0x2'));var debugLevel=_0x40b2('0x3');function filename(_0xffe265,_0x2cb59d){return path[_0x40b2('0x4')](_0x40b2('0x5'),'log','xcally',util[_0x40b2('0x6')](_0x40b2('0x7'),_0xffe265,_0x2cb59d));}function formatter(_0x526638,_0xa56a7a){_0xa56a7a[_0x40b2('0x8')]=_0xa56a7a[_0x40b2('0x8')]['replace'](/@@{/g,_0x40b2('0x9'))[_0x40b2('0xa')](/}@@/g,_0x40b2('0xb'))['replace'](/@{/g,'{{')[_0x40b2('0xa')](/}@/g,'}}');return util[_0x40b2('0x6')](_0x40b2('0xc'),moment()[_0x40b2('0x6')](_0x40b2('0xd')),_0xa56a7a[_0x40b2('0xe')]['toUpperCase'](),_0x526638,_0xa56a7a[_0x40b2('0x8')]);}module[_0x40b2('0xf')]=function(_0x574e26){return new winston[(_0x40b2('0x10'))]({'transports':[new winston[(_0x40b2('0x11'))][(_0x40b2('0x12'))]({'name':util[_0x40b2('0x6')](_0x40b2('0x13'),_0x574e26,'error'),'filename':filename(_0x574e26,_0x40b2('0x14')),'level':_0x40b2('0x14'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x1d61e9){return formatter(_0x574e26,_0x1d61e9);}}),new winston[(_0x40b2('0x11'))][(_0x40b2('0x12'))]({'name':util[_0x40b2('0x6')]('%s-%s',_0x574e26,_0x40b2('0x15')),'filename':filename(_0x574e26,_0x40b2('0x15')),'level':_0x40b2('0x15'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x45c894){return formatter(_0x574e26,_0x45c894);}}),new winston[(_0x40b2('0x11'))][(_0x40b2('0x16'))]({'level':process[_0x40b2('0x17')]['debugLevel']||debugLevel,'json':![],'formatter':function(_0x5a43f1){return formatter(_0x574e26,_0x5a43f1);}})]});};
\ No newline at end of file
+var _0x4a59=['path','INFO','join','/var','log','xcally','format','message','replace','{{{','}}}','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','Logger','transports','File','%s-%s','error','info','Console','env','debugLevel','moment','winston','util'];(function(_0x4952a9,_0xad0ba1){var _0x1c0399=function(_0x86f54f){while(--_0x86f54f){_0x4952a9['push'](_0x4952a9['shift']());}};_0x1c0399(++_0xad0ba1);}(_0x4a59,0x1e3));var _0x94a5=function(_0x5e6ed6,_0x4708ed){_0x5e6ed6=_0x5e6ed6-0x0;var _0x333751=_0x4a59[_0x5e6ed6];return _0x333751;};'use strict';var moment=require(_0x94a5('0x0'));var winston=require(_0x94a5('0x1'));var util=require(_0x94a5('0x2'));var path=require(_0x94a5('0x3'));var debugLevel=_0x94a5('0x4');function filename(_0x4ceae6,_0xd6aaf8){return path[_0x94a5('0x5')](_0x94a5('0x6'),_0x94a5('0x7'),_0x94a5('0x8'),util[_0x94a5('0x9')]('%s-%s.log',_0x4ceae6,_0xd6aaf8));}function formatter(_0x201b9a,_0x38ab6e){_0x38ab6e['message']=_0x38ab6e[_0x94a5('0xa')][_0x94a5('0xb')](/@@{/g,_0x94a5('0xc'))['replace'](/}@@/g,_0x94a5('0xd'))[_0x94a5('0xb')](/@{/g,'{{')[_0x94a5('0xb')](/}@/g,'}}');return util['format'](_0x94a5('0xe'),moment()[_0x94a5('0x9')](_0x94a5('0xf')),_0x38ab6e[_0x94a5('0x10')][_0x94a5('0x11')](),_0x201b9a,_0x38ab6e['message']);}module['exports']=function(_0x15d6ee){return new winston[(_0x94a5('0x12'))]({'transports':[new winston[(_0x94a5('0x13'))][(_0x94a5('0x14'))]({'name':util[_0x94a5('0x9')](_0x94a5('0x15'),_0x15d6ee,_0x94a5('0x16')),'filename':filename(_0x15d6ee,'error'),'level':_0x94a5('0x16'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x475d14){return formatter(_0x15d6ee,_0x475d14);}}),new winston['transports'][(_0x94a5('0x14'))]({'name':util[_0x94a5('0x9')](_0x94a5('0x15'),_0x15d6ee,'info'),'filename':filename(_0x15d6ee,'info'),'level':_0x94a5('0x17'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x5d7e25){return formatter(_0x15d6ee,_0x5d7e25);}}),new winston[(_0x94a5('0x13'))][(_0x94a5('0x18'))]({'level':process[_0x94a5('0x19')][_0x94a5('0x1a')]||debugLevel,'json':![],'formatter':function(_0x2747fe){return formatter(_0x15d6ee,_0x2747fe);}})]});};
\ No newline at end of file
index 826a7cf..5024ec3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14dd=['../../services/express/index.js','ami','../../services/ami/index.js','agi','email','../../services/routing/index.js','xdr','exports','path','express','join'];(function(_0x17fef8,_0x334993){var _0x457f53=function(_0x4a53c9){while(--_0x4a53c9){_0x17fef8['push'](_0x17fef8['shift']());}};_0x457f53(++_0x334993);}(_0x14dd,0x76));var _0xd14d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x14dd[_0x3dd15e];return _0x231fd0;};'use strict';var path=require(_0xd14d('0x0'));var os=require('os');var config={'apps':[{'name':_0xd14d('0x1'),'script':path[_0xd14d('0x2')](__dirname,_0xd14d('0x3'))},{'name':_0xd14d('0x4'),'script':path[_0xd14d('0x2')](__dirname,_0xd14d('0x5'))},{'name':_0xd14d('0x6'),'script':path[_0xd14d('0x2')](__dirname,'../../services/agi/index.js')},{'name':_0xd14d('0x7'),'script':path[_0xd14d('0x2')](__dirname,'../../services/email/index.js')},{'name':'routing','script':path[_0xd14d('0x2')](__dirname,_0xd14d('0x8'))},{'name':_0xd14d('0x9'),'script':path[_0xd14d('0x2')](__dirname,'../../services/xdr/index.js')}]};module[_0xd14d('0xa')]=config;
\ No newline at end of file
+var _0x505e=['email','../../services/email/index.js','routing','../../services/routing/index.js','xdr','exports','path','express','join','../../services/express/index.js','ami','../../services/ami/index.js','agi'];(function(_0x2857d8,_0x1b9b78){var _0x31569b=function(_0xbc4a2c){while(--_0xbc4a2c){_0x2857d8['push'](_0x2857d8['shift']());}};_0x31569b(++_0x1b9b78);}(_0x505e,0x199));var _0xe505=function(_0x45bf86,_0x75586e){_0x45bf86=_0x45bf86-0x0;var _0x1f02b7=_0x505e[_0x45bf86];return _0x1f02b7;};'use strict';var path=require(_0xe505('0x0'));var os=require('os');var config={'apps':[{'name':_0xe505('0x1'),'script':path[_0xe505('0x2')](__dirname,_0xe505('0x3'))},{'name':_0xe505('0x4'),'script':path[_0xe505('0x2')](__dirname,_0xe505('0x5'))},{'name':_0xe505('0x6'),'script':path['join'](__dirname,'../../services/agi/index.js')},{'name':_0xe505('0x7'),'script':path['join'](__dirname,_0xe505('0x8'))},{'name':_0xe505('0x9'),'script':path[_0xe505('0x2')](__dirname,_0xe505('0xa'))},{'name':_0xe505('0xb'),'script':path['join'](__dirname,'../../services/xdr/index.js')}]};module[_0xe505('0xc')]=config;
\ No newline at end of file
index ee7b3ee..5450b2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85a5=['disconnect','stop','list','describe','delete','dump','saved','bluebird','./config','start','then'];(function(_0x32fc16,_0x26b884){var _0x262a81=function(_0x5a5941){while(--_0x5a5941){_0x32fc16['push'](_0x32fc16['shift']());}};_0x262a81(++_0x26b884);}(_0x85a5,0x1ca));var _0x585a=function(_0x4c11f7,_0x5a0447){_0x4c11f7=_0x4c11f7-0x0;var _0x587d6b=_0x85a5[_0x4c11f7];return _0x587d6b;};'use strict';var pm2=require('pm2');var BPromise=require(_0x585a('0x0'));var config=require(_0x585a('0x1'));function connect(){return new BPromise(function(_0x21e11b,_0x47a934){return pm2['connect'](function(_0x5bcc18){if(_0x5bcc18){return _0x47a934(_0x5bcc18);}return _0x21e11b('connected');});});};exports[_0x585a('0x2')]=function(_0x5b0048){return connect()[_0x585a('0x3')](function(){return new BPromise(function(_0x8e75db,_0x5655a2){return pm2['start'](_0x5b0048,function(_0x4f81a2,_0x26d4f5){if(_0x4f81a2){return _0x5655a2(_0x4f81a2);}pm2[_0x585a('0x4')]();return _0x8e75db(_0x26d4f5);});});});};exports[_0x585a('0x5')]=function(_0x327d0e){return connect()['then'](function(){return new BPromise(function(_0x24c9c4,_0x2b1cc7){return pm2['stop'](_0x327d0e,function(_0x434197,_0x341261){if(_0x434197){return _0x2b1cc7(_0x434197);}pm2['disconnect']();return _0x24c9c4(_0x341261);});});});};exports['restart']=function(_0x453f94){return connect()[_0x585a('0x3')](function(){return new BPromise(function(_0x1fd87b,_0x24d6fd){return pm2['restart'](_0x453f94,function(_0x293d61,_0x27cdde){if(_0x293d61){return _0x24d6fd(_0x293d61);}pm2[_0x585a('0x4')]();return _0x1fd87b(_0x27cdde);});});});};exports[_0x585a('0x6')]=function(){return connect()[_0x585a('0x3')](function(){return new BPromise(function(_0x33acd4,_0x28ef3b){return pm2['list'](function(_0x3200a5,_0x2542ad){if(_0x3200a5){return _0x28ef3b(_0x3200a5);}pm2[_0x585a('0x4')]();return _0x33acd4(_0x2542ad);});});});};exports[_0x585a('0x7')]=function(_0x2f8ec7){return connect()['then'](function(){return new BPromise(function(_0x23de5e,_0x3039ce){return pm2[_0x585a('0x7')](_0x2f8ec7,function(_0x4b1479,_0x5517c2){if(_0x4b1479){return _0x3039ce(_0x4b1479);}pm2[_0x585a('0x4')]();return _0x23de5e(_0x5517c2);});});});};exports['delete']=function(_0x34116d){return connect()[_0x585a('0x3')](function(){return new BPromise(function(_0x39575c,_0x2b89ad){return pm2[_0x585a('0x8')](_0x34116d,function(_0x118734,_0x56de7d){if(_0x118734){return _0x2b89ad(_0x118734);}pm2[_0x585a('0x4')]();return _0x39575c(_0x56de7d);});});});};exports[_0x585a('0x9')]=function(){return connect()[_0x585a('0x3')](function(){return new BPromise(function(_0x263993,_0x8324ba){return pm2[_0x585a('0x9')](function(_0x1afa47){if(_0x1afa47){return _0x8324ba(_0x1afa47);}return _0x263993(_0x585a('0xa'));});});});};
\ No newline at end of file
+var _0x8feb=['./config','connect','start','disconnect','stop','then','list','describe','delete','dump','saved','pm2','bluebird'];(function(_0x595a6b,_0x222a50){var _0x262fdd=function(_0x24f51c){while(--_0x24f51c){_0x595a6b['push'](_0x595a6b['shift']());}};_0x262fdd(++_0x222a50);}(_0x8feb,0x150));var _0xb8fe=function(_0x5d0990,_0x41d3ea){_0x5d0990=_0x5d0990-0x0;var _0x55271f=_0x8feb[_0x5d0990];return _0x55271f;};'use strict';var pm2=require(_0xb8fe('0x0'));var BPromise=require(_0xb8fe('0x1'));var config=require(_0xb8fe('0x2'));function connect(){return new BPromise(function(_0x252be1,_0x42aa2e){return pm2[_0xb8fe('0x3')](function(_0x3650e0){if(_0x3650e0){return _0x42aa2e(_0x3650e0);}return _0x252be1('connected');});});};exports['start']=function(_0x1d272d){return connect()['then'](function(){return new BPromise(function(_0x4fb5f8,_0x1f81a2){return pm2[_0xb8fe('0x4')](_0x1d272d,function(_0x4d8a8c,_0x1dd0cc){if(_0x4d8a8c){return _0x1f81a2(_0x4d8a8c);}pm2[_0xb8fe('0x5')]();return _0x4fb5f8(_0x1dd0cc);});});});};exports[_0xb8fe('0x6')]=function(_0x16aa45){return connect()[_0xb8fe('0x7')](function(){return new BPromise(function(_0xda9c8e,_0x17e428){return pm2['stop'](_0x16aa45,function(_0x259512,_0x205bc4){if(_0x259512){return _0x17e428(_0x259512);}pm2[_0xb8fe('0x5')]();return _0xda9c8e(_0x205bc4);});});});};exports['restart']=function(_0xb6b423){return connect()[_0xb8fe('0x7')](function(){return new BPromise(function(_0x26797b,_0x5bc1ce){return pm2['restart'](_0xb6b423,function(_0x292c08,_0x4dd931){if(_0x292c08){return _0x5bc1ce(_0x292c08);}pm2[_0xb8fe('0x5')]();return _0x26797b(_0x4dd931);});});});};exports['list']=function(){return connect()[_0xb8fe('0x7')](function(){return new BPromise(function(_0x56c7ff,_0x500c98){return pm2[_0xb8fe('0x8')](function(_0x14715f,_0x426977){if(_0x14715f){return _0x500c98(_0x14715f);}pm2[_0xb8fe('0x5')]();return _0x56c7ff(_0x426977);});});});};exports[_0xb8fe('0x9')]=function(_0x349c79){return connect()[_0xb8fe('0x7')](function(){return new BPromise(function(_0x5ac705,_0x299c41){return pm2[_0xb8fe('0x9')](_0x349c79,function(_0x59addd,_0x3383bb){if(_0x59addd){return _0x299c41(_0x59addd);}pm2[_0xb8fe('0x5')]();return _0x5ac705(_0x3383bb);});});});};exports[_0xb8fe('0xa')]=function(_0x23233e){return connect()[_0xb8fe('0x7')](function(){return new BPromise(function(_0x2aa954,_0x47c8f8){return pm2[_0xb8fe('0xa')](_0x23233e,function(_0x275bb8,_0x112fdc){if(_0x275bb8){return _0x47c8f8(_0x275bb8);}pm2['disconnect']();return _0x2aa954(_0x112fdc);});});});};exports['dump']=function(){return connect()['then'](function(){return new BPromise(function(_0x5b6b70,_0x5148c6){return pm2[_0xb8fe('0xb')](function(_0x39a806){if(_0x39a806){return _0x5148c6(_0x39a806);}return _0x5b6b70(_0xb8fe('0xc'));});});});};
\ No newline at end of file
index 923a3ee..c7c30ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe305=['Setting','chatTimeout','ChatInteraction','findAll','lastMsgAt','subtract','length','map','info','join','update','system','format','then','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','chatInteraction:update','catch','error','inspect','start','lodash','moment','util','../logger','redis','defaults','localhost','socket.io-emitter'];(function(_0x299e98,_0xcf14c){var _0xcf8a38=function(_0x28fa8b){while(--_0x28fa8b){_0x299e98['push'](_0x299e98['shift']());}};_0xcf8a38(++_0xcf14c);}(_0xe305,0x137));var _0x5e30=function(_0x4380da,_0x14a45a){_0x4380da=_0x4380da-0x0;var _0x16c7f8=_0xe305[_0x4380da];return _0x16c7f8;};'use strict';var _=require(_0x5e30('0x0'));var moment=require(_0x5e30('0x1'));var Redis=require('ioredis');var util=require(_0x5e30('0x2'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];var logger=require(_0x5e30('0x3'))('schedule');config[_0x5e30('0x4')]=_[_0x5e30('0x5')](config[_0x5e30('0x4')],{'host':_0x5e30('0x6'),'port':0x18eb});var io=require(_0x5e30('0x7'))(new Redis(config[_0x5e30('0x4')]));function closeInteractions(){var _0x3c2b9d=0x0;var _0x5d22b6=[];return db[_0x5e30('0x8')]['find']({'raw':!![],'attributes':['id',_0x5e30('0x9')],'where':{'id':0x1}})['then'](function(_0x58d002){_0x3c2b9d=_0x58d002[_0x5e30('0x9')];if(_0x3c2b9d){return db[_0x5e30('0xa')][_0x5e30('0xb')]({'raw':!![],'attributes':['id',_0x5e30('0xc')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x5e30('0xd')](_0x58d002[_0x5e30('0x9')],'minutes')}}});}else{return[];}})['then'](function(_0x267edb){if(_0x267edb&&_0x267edb[_0x5e30('0xe')]){_0x5d22b6=_[_0x5e30('0xf')](_0x267edb||[],'id');logger[_0x5e30('0x10')]('[CHAT]\x20Interactions\x20to\x20close:',_0x5d22b6[_0x5e30('0x11')]());return db['ChatInteraction'][_0x5e30('0x12')]({'closeReason':_0x5e30('0x13'),'disposition':'timeout','closed':!![],'closedAt':moment()[_0x5e30('0x14')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x5d22b6}});}})[_0x5e30('0x15')](function(){if(_0x5d22b6&&_0x5d22b6['length']){logger['info'](_0x5e30('0x16'),_0x5d22b6[_0x5e30('0x11')]());for(var _0x45e6db=0x0;_0x45e6db<_0x5d22b6['length'];_0x45e6db++){io[_0x5e30('0x17')](_0x5e30('0x18'),{'id':_0x5d22b6[_0x45e6db],'closed':!![]});}}})[_0x5e30('0x19')](function(_0xac8a6f){logger[_0x5e30('0x1a')]('[CHAT]\x20Error\x20closing\x20interactions',_0xac8a6f?util[_0x5e30('0x1b')](_0xac8a6f,{'showHidden':![],'depth':null}):'');});}exports[_0x5e30('0x1c')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x022a=['length','map','info','join','ChatInteraction','update','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','chatInteraction:update','catch','[CHAT]\x20Error\x20closing\x20interactions','inspect','start','moment','ioredis','util','../../config/environment','../../mysqldb','schedule','redis','localhost','socket.io-emitter','chatTimeout','then','findAll','lastMsgAt'];(function(_0x35e648,_0x498216){var _0x19135f=function(_0x42e07d){while(--_0x42e07d){_0x35e648['push'](_0x35e648['shift']());}};_0x19135f(++_0x498216);}(_0x022a,0xef));var _0xa022=function(_0x3e5608,_0x8b6979){_0x3e5608=_0x3e5608-0x0;var _0x4128d3=_0x022a[_0x3e5608];return _0x4128d3;};'use strict';var _=require('lodash');var moment=require(_0xa022('0x0'));var Redis=require(_0xa022('0x1'));var util=require(_0xa022('0x2'));var config=require(_0xa022('0x3'));var db=require(_0xa022('0x4'))['db'];var logger=require('../logger')(_0xa022('0x5'));config[_0xa022('0x6')]=_['defaults'](config[_0xa022('0x6')],{'host':_0xa022('0x7'),'port':0x18eb});var io=require(_0xa022('0x8'))(new Redis(config[_0xa022('0x6')]));function closeInteractions(){var _0x473c01=0x0;var _0x2f93bf=[];return db['Setting']['find']({'raw':!![],'attributes':['id',_0xa022('0x9')],'where':{'id':0x1}})[_0xa022('0xa')](function(_0x521cf4){_0x473c01=_0x521cf4[_0xa022('0x9')];if(_0x473c01){return db['ChatInteraction'][_0xa022('0xb')]({'raw':!![],'attributes':['id',_0xa022('0xc')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()['subtract'](_0x521cf4['chatTimeout'],'minutes')}}});}else{return[];}})[_0xa022('0xa')](function(_0x243c7c){if(_0x243c7c&&_0x243c7c[_0xa022('0xd')]){_0x2f93bf=_[_0xa022('0xe')](_0x243c7c||[],'id');logger[_0xa022('0xf')]('[CHAT]\x20Interactions\x20to\x20close:',_0x2f93bf[_0xa022('0x10')]());return db[_0xa022('0x11')][_0xa022('0x12')]({'closeReason':_0xa022('0x13'),'disposition':_0xa022('0x14'),'closed':!![],'closedAt':moment()[_0xa022('0x15')](_0xa022('0x16'))},{'where':{'id':_0x2f93bf}});}})[_0xa022('0xa')](function(){if(_0x2f93bf&&_0x2f93bf[_0xa022('0xd')]){logger[_0xa022('0xf')]('[CHAT]\x20Sending\x20updates\x20for\x20interactions:',_0x2f93bf['join']());for(var _0x4d7bb3=0x0;_0x4d7bb3<_0x2f93bf['length'];_0x4d7bb3++){io['emit'](_0xa022('0x17'),{'id':_0x2f93bf[_0x4d7bb3],'closed':!![]});}}})[_0xa022('0x18')](function(_0x577031){logger['error'](_0xa022('0x19'),_0x577031?util[_0xa022('0x1a')](_0x577031,{'showHidden':![],'depth':null}):'');});}exports[_0xa022('0x1b')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 5f5d14b..64256d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd62b=['request','then','error','error\x20mail','email\x20sent','catch','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit','subtractUnit\x20null\x20or\x20undefined','subtractNumber','YYYY-MM-DD\x20HH:mm:ss','scheduled','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','MailServerOut','keys','jobs','map','keyBy','difference','intersection','length','exists','stop','deleteJob','delete\x20cron','toString','index','my\x20id','run\x20job','isBetween','startAt','add','cron','start','add\x20cron','stop\x20cron','active','endAt','update','update\x20cron','run','util','path','lodash','moment','jayson/promise','bluebird','../logger','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','Smtp','service','host','port','secure','authentication','user','pass','\x22%s\x22\x20<%s>','name','bcc','format','Report\x20%s\x20last\x20%s\x20%s','join','savename','%s.%s','zip','existsSync','Sent','message','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','stringify','status','attachments','text','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent'];(function(_0x41dc1a,_0x3bfed4){var _0x14087e=function(_0x4e576d){while(--_0x4e576d){_0x41dc1a['push'](_0x41dc1a['shift']());}};_0x14087e(++_0x3bfed4);}(_0xd62b,0x146));var _0xbd62=function(_0x3e961c,_0x5747e7){_0x3e961c=_0x3e961c-0x0;var _0x474f9c=_0xd62b[_0x3e961c];return _0x474f9c;};'use strict';var fs=require('fs');var util=require(_0xbd62('0x0'));var path=require(_0xbd62('0x1'));var _=require(_0xbd62('0x2'));var moment=require(_0xbd62('0x3'));var CronJobManager=require('cron-job-manager');var jayson=require(_0xbd62('0x4'));var BPromise=require(_0xbd62('0x5'));var logger=require(_0xbd62('0x6'))('schedule');var db=require(_0xbd62('0x7'))['db'];var analyticCustomReportController=require(_0xbd62('0x8'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson['client'][_0xbd62('0x9')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x1acfe6,_0x5d6fd3){return function(){logger[_0xbd62('0xa')](_0xbd62('0xb'),_0x1acfe6[_0xbd62('0xc')]);var _0x57bb39=!![];var _0x2a3c0c={'tls':{'rejectUnauthorized':![]}};if(_0x1acfe6[_0xbd62('0xd')][_0xbd62('0xe')][_0xbd62('0xf')]){_0x2a3c0c['service']=_0x1acfe6[_0xbd62('0xd')][_0xbd62('0xe')][_0xbd62('0xf')];}else{_0x2a3c0c[_0xbd62('0x10')]=_0x1acfe6[_0xbd62('0xd')][_0xbd62('0xe')]['host'];_0x2a3c0c['port']=_0x1acfe6['MailAccount'][_0xbd62('0xe')][_0xbd62('0x11')];_0x2a3c0c[_0xbd62('0x12')]=_0x1acfe6[_0xbd62('0xd')][_0xbd62('0xe')][_0xbd62('0x12')];}if(_0x1acfe6['MailAccount'][_0xbd62('0xe')][_0xbd62('0x13')]){_0x2a3c0c['auth']={'user':_0x1acfe6[_0xbd62('0xd')][_0xbd62('0xe')][_0xbd62('0x14')],'pass':_0x1acfe6[_0xbd62('0xd')]['Smtp'][_0xbd62('0x15')]};}var _0x5560d2={'account':_0x2a3c0c,'message':{'from':util['format'](_0xbd62('0x16'),_0x1acfe6['MailAccount'][_0xbd62('0x17')],_0x1acfe6['MailAccount'][_0xbd62('0xc')]||_0x1acfe6['MailAccount'][_0xbd62('0xe')][_0xbd62('0x14')]),'to':_0x1acfe6[_0xbd62('0xc')],'cc':_0x1acfe6['cc'],'bcc':_0x1acfe6[_0xbd62('0x18')],'subject':util[_0xbd62('0x19')](_0xbd62('0x1a'),_0x5d6fd3[_0xbd62('0x17')],_0x1acfe6['subtractNumber'],_0x1acfe6['subtractUnit'])}};var _0x5032ba=path[_0xbd62('0x1b')](__dirname,'../../files/reports');var _0x589aee=_0x5d6fd3[_0xbd62('0x1c')];var _0x517b69=util[_0xbd62('0x19')](_0xbd62('0x1d'),path['basename'](_0x5d6fd3[_0xbd62('0x1c')],path['extname'](_0x5d6fd3[_0xbd62('0x1c')])),_0xbd62('0x1e'));var _0x26a74e=path[_0xbd62('0x1b')](_0x5032ba,_0x589aee);var _0x257b1e=path[_0xbd62('0x1b')](_0x5032ba,_0x517b69);if(fs[_0xbd62('0x1f')](_0x26a74e)){_0x5d6fd3['status']=_0xbd62('0x20');_0x5560d2[_0xbd62('0x21')]['attachments']=[{'filename':_0x589aee,'path':_0x26a74e}];_0x5560d2[_0xbd62('0x21')]['text']=util['format'](_0xbd62('0x22'),JSON[_0xbd62('0x23')](_0x5d6fd3,null,0x2));}else if(fs[_0xbd62('0x1f')](_0x257b1e)){_0x5d6fd3[_0xbd62('0x24')]=_0xbd62('0x20');_0x5560d2[_0xbd62('0x21')][_0xbd62('0x25')]=[{'filename':_0x517b69,'path':_0x257b1e}];}else{_0x5560d2[_0xbd62('0x21')][_0xbd62('0x26')]=_0xbd62('0x27');if(!_0x1acfe6[_0xbd62('0x28')]){_0x57bb39=![];logger[_0xbd62('0xa')](_0xbd62('0x29'));}}if(_0x57bb39){return client[_0xbd62('0x2a')]('SendMail',_0x5560d2)[_0xbd62('0x2b')](function(_0xace256){if(_0xace256['error']){return logger[_0xbd62('0x2c')](_0xbd62('0x2d'),JSON[_0xbd62('0x23')](_0xace256));}return logger[_0xbd62('0xa')](_0xbd62('0x2e'));})[_0xbd62('0x2f')](function(_0x3e8da3){return logger['error']('error\x20mail',JSON[_0xbd62('0x23')](_0x3e8da3));});}};}function handleError(){return function(_0x3e70d4){return logger[_0xbd62('0x2c')](JSON[_0xbd62('0x23')](_0x3e70d4));};}function handleResult(_0x14ca86){return function(_0x58b055){logger[_0xbd62('0xa')](_0xbd62('0x30'),JSON[_0xbd62('0x23')](_0x58b055));if(_0x14ca86[_0xbd62('0xd')]&&_0x14ca86['MailAccount'][_0xbd62('0xe')]&&!_[_0xbd62('0x31')](_0x14ca86['email'])){setTimeout(handleSendEmail(_0x14ca86,_0x58b055),0x3c*0x3e8);}};}function handleJob(_0x2eb009){return function(){try{if(_['isNil'](_0x2eb009['subtractNumber'])){return logger['info'](_0xbd62('0x32'));}if(_[_0xbd62('0x31')](_0x2eb009[_0xbd62('0x33')])){return logger[_0xbd62('0xa')](_0xbd62('0x34'));}var _0x1573a7={'startDate':moment()['subtract'](_0x2eb009[_0xbd62('0x35')],_0x2eb009[_0xbd62('0x33')])[_0xbd62('0x19')](_0xbd62('0x36')),'endDate':moment()[_0xbd62('0x19')](_0xbd62('0x36')),'type':_0xbd62('0x37'),'output':_0x2eb009['output'],'name':_0x2eb009['name']};if(!_[_0xbd62('0x31')](_0x2eb009[_0xbd62('0x38')])){logger[_0xbd62('0xa')](_0xbd62('0x39'),_0x2eb009[_0xbd62('0x38')]);return analyticDefaultReportController[_0xbd62('0x3a')]({'id':_0x2eb009[_0xbd62('0x38')]},_0x1573a7)[_0xbd62('0x2b')](handleResult(_0x2eb009))[_0xbd62('0x2f')](handleError());}if(!_[_0xbd62('0x31')](_0x2eb009[_0xbd62('0x3b')])){logger[_0xbd62('0xa')](_0xbd62('0x3c'),_0x2eb009[_0xbd62('0x3b')]);return analyticCustomReportController[_0xbd62('0x3a')]({'id':_0x2eb009[_0xbd62('0x3b')]},_0x1573a7)[_0xbd62('0x2b')](handleResult(_0x2eb009))[_0xbd62('0x2f')](handleError());}}catch(_0x980ad4){logger['error'](JSON['stringify'](_0x980ad4));}return logger[_0xbd62('0xa')](_0xbd62('0x3d'));};}function getJobs(_0x2d60a4){var _0x737aeb={};if(_0x2d60a4){_0x737aeb['id']=_0x2d60a4;}return db[_0xbd62('0x3e')][_0xbd62('0x3f')]({'where':_0x737aeb,'include':[{'model':db['MailAccount'],'attributes':['id',_0xbd62('0x17'),'email'],'include':[{'model':db[_0xbd62('0x40')],'as':'Smtp'}]}]})[_0xbd62('0x2b')](function(_0x5936b6){var _0x496ae9=_[_0xbd62('0x41')](manager[_0xbd62('0x42')]);var _0x45c0c7=_[_0xbd62('0x43')](_0x5936b6,function(_0x136290){return _0x136290['id']['toString']();});var _0x3f4d7e=_[_0xbd62('0x44')](_0x5936b6,function(_0x355650){return _0x355650['id']['toString']();});var _0x258fa3=_0x2d60a4?_0x45c0c7:_[_0xbd62('0x45')](_0x45c0c7,_0x496ae9);var _0x6d9417=_[_0xbd62('0x46')](_0x45c0c7,_0x496ae9);var _0x51832c=_[_0xbd62('0x45')](_0x496ae9,_0x45c0c7);var _0x4c68f8;var _0x26b8a2;for(_0x4c68f8=0x0;_0x4c68f8<_0x51832c[_0xbd62('0x47')]&&!_0x2d60a4;_0x4c68f8+=0x1){_0x26b8a2=_0x51832c[_0x4c68f8]['toString']();if(manager[_0xbd62('0x48')](_0x26b8a2)){manager[_0xbd62('0x49')](_0x26b8a2);manager[_0xbd62('0x4a')](_0x26b8a2);logger['info'](_0xbd62('0x4b'),_0x26b8a2);}}logger[_0xbd62('0xa')]('toRun',JSON[_0xbd62('0x23')](_0x258fa3));for(_0x4c68f8=0x0;_0x4c68f8<_0x258fa3[_0xbd62('0x47')];_0x4c68f8+=0x1){_0x26b8a2=_0x258fa3[_0x4c68f8][_0xbd62('0x4c')]();logger[_0xbd62('0xa')](_0xbd62('0x4d'),_0x26b8a2);if(_0x2d60a4){logger['info'](_0xbd62('0x4e'),_0x2d60a4);logger[_0xbd62('0xa')](JSON[_0xbd62('0x23')](_0x3f4d7e[_0x26b8a2]));BPromise['resolve']()[_0xbd62('0x2b')](handleJob(_0x3f4d7e[_0x26b8a2]));logger[_0xbd62('0xa')](_0xbd62('0x4f'),_0x3f4d7e[_0x26b8a2][_0xbd62('0x17')],_0x3f4d7e[_0x26b8a2]['cron']);}else if(_0x3f4d7e[_0x26b8a2]['cron']&&_0x3f4d7e[_0x26b8a2]['active']&&moment()[_0xbd62('0x50')](_0x3f4d7e[_0x26b8a2][_0xbd62('0x51')],_0x3f4d7e[_0x26b8a2]['endAt'])){manager[_0xbd62('0x52')](_0x26b8a2,_0x3f4d7e[_0x26b8a2][_0xbd62('0x53')],handleJob(_0x3f4d7e[_0x26b8a2]));manager[_0xbd62('0x54')](_0x26b8a2);logger[_0xbd62('0xa')](_0xbd62('0x55'),_0x3f4d7e[_0x26b8a2][_0xbd62('0x17')],_0x3f4d7e[_0x26b8a2][_0xbd62('0x53')]);}else if(manager[_0xbd62('0x48')](_0x26b8a2)){manager['stop'](_0x26b8a2);manager['deleteJob'](_0x26b8a2);logger['info'](_0xbd62('0x56'),_0x3f4d7e[_0x26b8a2]['name'],_0x3f4d7e[_0x26b8a2][_0xbd62('0x53')]);}}for(_0x4c68f8=0x0,_0x26b8a2;_0x4c68f8<_0x6d9417[_0xbd62('0x47')]&&!_0x2d60a4;_0x4c68f8+=0x1){_0x26b8a2=_0x6d9417[_0x4c68f8][_0xbd62('0x4c')]();if(manager['exists'](_0x26b8a2)){if(_0x3f4d7e[_0x26b8a2][_0xbd62('0x53')]&&_0x3f4d7e[_0x26b8a2][_0xbd62('0x57')]&&moment()[_0xbd62('0x50')](_0x3f4d7e[_0x26b8a2][_0xbd62('0x51')],_0x3f4d7e[_0x26b8a2][_0xbd62('0x58')])){manager[_0xbd62('0x59')](_0x26b8a2,_0x3f4d7e[_0x26b8a2][_0xbd62('0x53')],handleJob(_0x3f4d7e[_0x26b8a2]));logger[_0xbd62('0xa')](_0xbd62('0x5a'),_0x3f4d7e[_0x26b8a2][_0xbd62('0x17')],_0x3f4d7e[_0x26b8a2][_0xbd62('0x53')]);}else{manager[_0xbd62('0x49')](_0x26b8a2);manager['deleteJob'](_0x26b8a2);logger[_0xbd62('0xa')](_0xbd62('0x56'),_0x3f4d7e[_0x26b8a2][_0xbd62('0x17')],_0x3f4d7e[_0x26b8a2][_0xbd62('0x53')]);}}}})[_0xbd62('0x2f')](function(_0xc298f2){logger['error'](JSON[_0xbd62('0x23')](_0xc298f2));});}exports[_0xbd62('0x5b')]=function(_0x175273){return getJobs(_0x175273);};exports[_0xbd62('0x54')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0x7e01=['moment','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticDefaultReport/analyticDefaultReport.controller','http','info','Try\x20to\x20send\x20a\x20mail\x20to','MailAccount','Smtp','service','host','port','secure','pass','format','\x22%s\x22\x20<%s>','name','email','user','bcc','subtractNumber','subtractUnit','join','../../files/reports','savename','%s.%s','basename','extname','zip','existsSync','status','Sent','message','attachments','text','stringify','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','error','error\x20mail','catch','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','exec\x20defaul\x20report\x20id:%s','CustomReportId','exec\x20custom\x20report\x20id:%s','runReport','then','findAll','MailServerOut','jobs','toString','keyBy','difference','intersection','length','exists','stop','toRun','index','my\x20id','run\x20job','cron','active','isBetween','startAt','endAt','add','add\x20cron','update','update\x20cron','deleteJob','stop\x20cron','start','util','path','lodash'];(function(_0x3f0140,_0x1a2ee7){var _0x247246=function(_0xbdf77b){while(--_0xbdf77b){_0x3f0140['push'](_0x3f0140['shift']());}};_0x247246(++_0x1a2ee7);}(_0x7e01,0x108));var _0x17e0=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x7e01[_0x1facfa];return _0x9ec701;};'use strict';var fs=require('fs');var util=require(_0x17e0('0x0'));var path=require(_0x17e0('0x1'));var _=require(_0x17e0('0x2'));var moment=require(_0x17e0('0x3'));var CronJobManager=require(_0x17e0('0x4'));var jayson=require(_0x17e0('0x5'));var BPromise=require(_0x17e0('0x6'));var logger=require(_0x17e0('0x7'))(_0x17e0('0x8'));var db=require(_0x17e0('0x9'))['db'];var analyticCustomReportController=require('../../api/analyticCustomReport/analyticCustomReport.controller');var analyticDefaultReportController=require(_0x17e0('0xa'));var client=jayson['client'][_0x17e0('0xb')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x332a52,_0x1623af){return function(){logger[_0x17e0('0xc')](_0x17e0('0xd'),_0x332a52['email']);var _0x1c56c2=!![];var _0x33077f={'tls':{'rejectUnauthorized':![]}};if(_0x332a52[_0x17e0('0xe')][_0x17e0('0xf')][_0x17e0('0x10')]){_0x33077f[_0x17e0('0x10')]=_0x332a52['MailAccount'][_0x17e0('0xf')][_0x17e0('0x10')];}else{_0x33077f[_0x17e0('0x11')]=_0x332a52['MailAccount'][_0x17e0('0xf')]['host'];_0x33077f[_0x17e0('0x12')]=_0x332a52[_0x17e0('0xe')][_0x17e0('0xf')][_0x17e0('0x12')];_0x33077f[_0x17e0('0x13')]=_0x332a52['MailAccount']['Smtp']['secure'];}if(_0x332a52['MailAccount'][_0x17e0('0xf')]['authentication']){_0x33077f['auth']={'user':_0x332a52['MailAccount'][_0x17e0('0xf')]['user'],'pass':_0x332a52[_0x17e0('0xe')]['Smtp'][_0x17e0('0x14')]};}var _0x3b3c90={'account':_0x33077f,'message':{'from':util[_0x17e0('0x15')](_0x17e0('0x16'),_0x332a52[_0x17e0('0xe')][_0x17e0('0x17')],_0x332a52['MailAccount'][_0x17e0('0x18')]||_0x332a52[_0x17e0('0xe')][_0x17e0('0xf')][_0x17e0('0x19')]),'to':_0x332a52[_0x17e0('0x18')],'cc':_0x332a52['cc'],'bcc':_0x332a52[_0x17e0('0x1a')],'subject':util[_0x17e0('0x15')]('Report\x20%s\x20last\x20%s\x20%s',_0x1623af['name'],_0x332a52[_0x17e0('0x1b')],_0x332a52[_0x17e0('0x1c')])}};var _0x3d9fd3=path[_0x17e0('0x1d')](__dirname,_0x17e0('0x1e'));var _0x30d46a=_0x1623af[_0x17e0('0x1f')];var _0x3dbc69=util[_0x17e0('0x15')](_0x17e0('0x20'),path[_0x17e0('0x21')](_0x1623af[_0x17e0('0x1f')],path[_0x17e0('0x22')](_0x1623af[_0x17e0('0x1f')])),_0x17e0('0x23'));var _0x46f11d=path['join'](_0x3d9fd3,_0x30d46a);var _0x28161e=path['join'](_0x3d9fd3,_0x3dbc69);if(fs[_0x17e0('0x24')](_0x46f11d)){_0x1623af[_0x17e0('0x25')]=_0x17e0('0x26');_0x3b3c90[_0x17e0('0x27')][_0x17e0('0x28')]=[{'filename':_0x30d46a,'path':_0x46f11d}];_0x3b3c90[_0x17e0('0x27')][_0x17e0('0x29')]=util[_0x17e0('0x15')]('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0x17e0('0x2a')](_0x1623af,null,0x2));}else if(fs[_0x17e0('0x24')](_0x28161e)){_0x1623af[_0x17e0('0x25')]=_0x17e0('0x26');_0x3b3c90[_0x17e0('0x27')]['attachments']=[{'filename':_0x3dbc69,'path':_0x28161e}];}else{_0x3b3c90['message'][_0x17e0('0x29')]=_0x17e0('0x2b');if(!_0x332a52[_0x17e0('0x2c')]){_0x1c56c2=![];logger['info'](_0x17e0('0x2d'));}}if(_0x1c56c2){return client[_0x17e0('0x2e')](_0x17e0('0x2f'),_0x3b3c90)['then'](function(_0xe03fd){if(_0xe03fd[_0x17e0('0x30')]){return logger[_0x17e0('0x30')](_0x17e0('0x31'),JSON[_0x17e0('0x2a')](_0xe03fd));}return logger[_0x17e0('0xc')]('email\x20sent');})[_0x17e0('0x32')](function(_0x2f2db4){return logger[_0x17e0('0x30')](_0x17e0('0x31'),JSON[_0x17e0('0x2a')](_0x2f2db4));});}};}function handleError(){return function(_0x1953ab){return logger[_0x17e0('0x30')](JSON[_0x17e0('0x2a')](_0x1953ab));};}function handleResult(_0x5b8680){return function(_0x25b787){logger[_0x17e0('0xc')](_0x17e0('0x33'),JSON['stringify'](_0x25b787));if(_0x5b8680[_0x17e0('0xe')]&&_0x5b8680[_0x17e0('0xe')][_0x17e0('0xf')]&&!_[_0x17e0('0x34')](_0x5b8680[_0x17e0('0x18')])){setTimeout(handleSendEmail(_0x5b8680,_0x25b787),0x3c*0x3e8);}};}function handleJob(_0x23e078){return function(){try{if(_['isNil'](_0x23e078[_0x17e0('0x1b')])){return logger[_0x17e0('0xc')](_0x17e0('0x35'));}if(_['isNil'](_0x23e078[_0x17e0('0x1c')])){return logger[_0x17e0('0xc')](_0x17e0('0x36'));}var _0x2ee8e2={'startDate':moment()[_0x17e0('0x37')](_0x23e078[_0x17e0('0x1b')],_0x23e078['subtractUnit'])[_0x17e0('0x15')](_0x17e0('0x38')),'endDate':moment()[_0x17e0('0x15')](_0x17e0('0x38')),'type':_0x17e0('0x39'),'output':_0x23e078['output'],'name':_0x23e078[_0x17e0('0x17')]};if(!_[_0x17e0('0x34')](_0x23e078['DefaultReportId'])){logger[_0x17e0('0xc')](_0x17e0('0x3a'),_0x23e078['DefaultReportId']);return analyticDefaultReportController['runReport']({'id':_0x23e078['DefaultReportId']},_0x2ee8e2)['then'](handleResult(_0x23e078))[_0x17e0('0x32')](handleError());}if(!_[_0x17e0('0x34')](_0x23e078[_0x17e0('0x3b')])){logger[_0x17e0('0xc')](_0x17e0('0x3c'),_0x23e078[_0x17e0('0x3b')]);return analyticCustomReportController[_0x17e0('0x3d')]({'id':_0x23e078[_0x17e0('0x3b')]},_0x2ee8e2)[_0x17e0('0x3e')](handleResult(_0x23e078))[_0x17e0('0x32')](handleError());}}catch(_0x501dc0){logger[_0x17e0('0x30')](JSON[_0x17e0('0x2a')](_0x501dc0));}return logger[_0x17e0('0xc')]('no\x20report\x20id');};}function getJobs(_0x44caec){var _0xb5597b={};if(_0x44caec){_0xb5597b['id']=_0x44caec;}return db['Schedule'][_0x17e0('0x3f')]({'where':_0xb5597b,'include':[{'model':db[_0x17e0('0xe')],'attributes':['id','name',_0x17e0('0x18')],'include':[{'model':db[_0x17e0('0x40')],'as':_0x17e0('0xf')}]}]})[_0x17e0('0x3e')](function(_0x523cdd){var _0x3b417b=_['keys'](manager[_0x17e0('0x41')]);var _0x7d27e0=_['map'](_0x523cdd,function(_0x10091b){return _0x10091b['id'][_0x17e0('0x42')]();});var _0x19e5ba=_[_0x17e0('0x43')](_0x523cdd,function(_0x21008c){return _0x21008c['id']['toString']();});var _0x2c68a3=_0x44caec?_0x7d27e0:_[_0x17e0('0x44')](_0x7d27e0,_0x3b417b);var _0x3998d4=_[_0x17e0('0x45')](_0x7d27e0,_0x3b417b);var _0x2de72f=_[_0x17e0('0x44')](_0x3b417b,_0x7d27e0);var _0x456436;var _0x1e9cd0;for(_0x456436=0x0;_0x456436<_0x2de72f[_0x17e0('0x46')]&&!_0x44caec;_0x456436+=0x1){_0x1e9cd0=_0x2de72f[_0x456436][_0x17e0('0x42')]();if(manager[_0x17e0('0x47')](_0x1e9cd0)){manager[_0x17e0('0x48')](_0x1e9cd0);manager['deleteJob'](_0x1e9cd0);logger['info']('delete\x20cron',_0x1e9cd0);}}logger['info'](_0x17e0('0x49'),JSON[_0x17e0('0x2a')](_0x2c68a3));for(_0x456436=0x0;_0x456436<_0x2c68a3[_0x17e0('0x46')];_0x456436+=0x1){_0x1e9cd0=_0x2c68a3[_0x456436][_0x17e0('0x42')]();logger[_0x17e0('0xc')](_0x17e0('0x4a'),_0x1e9cd0);if(_0x44caec){logger[_0x17e0('0xc')](_0x17e0('0x4b'),_0x44caec);logger['info'](JSON[_0x17e0('0x2a')](_0x19e5ba[_0x1e9cd0]));BPromise['resolve']()['then'](handleJob(_0x19e5ba[_0x1e9cd0]));logger[_0x17e0('0xc')](_0x17e0('0x4c'),_0x19e5ba[_0x1e9cd0][_0x17e0('0x17')],_0x19e5ba[_0x1e9cd0][_0x17e0('0x4d')]);}else if(_0x19e5ba[_0x1e9cd0][_0x17e0('0x4d')]&&_0x19e5ba[_0x1e9cd0][_0x17e0('0x4e')]&&moment()[_0x17e0('0x4f')](_0x19e5ba[_0x1e9cd0][_0x17e0('0x50')],_0x19e5ba[_0x1e9cd0][_0x17e0('0x51')])){manager[_0x17e0('0x52')](_0x1e9cd0,_0x19e5ba[_0x1e9cd0][_0x17e0('0x4d')],handleJob(_0x19e5ba[_0x1e9cd0]));manager['start'](_0x1e9cd0);logger['info'](_0x17e0('0x53'),_0x19e5ba[_0x1e9cd0]['name'],_0x19e5ba[_0x1e9cd0]['cron']);}else if(manager[_0x17e0('0x47')](_0x1e9cd0)){manager[_0x17e0('0x48')](_0x1e9cd0);manager['deleteJob'](_0x1e9cd0);logger['info']('stop\x20cron',_0x19e5ba[_0x1e9cd0][_0x17e0('0x17')],_0x19e5ba[_0x1e9cd0]['cron']);}}for(_0x456436=0x0,_0x1e9cd0;_0x456436<_0x3998d4[_0x17e0('0x46')]&&!_0x44caec;_0x456436+=0x1){_0x1e9cd0=_0x3998d4[_0x456436][_0x17e0('0x42')]();if(manager[_0x17e0('0x47')](_0x1e9cd0)){if(_0x19e5ba[_0x1e9cd0][_0x17e0('0x4d')]&&_0x19e5ba[_0x1e9cd0][_0x17e0('0x4e')]&&moment()[_0x17e0('0x4f')](_0x19e5ba[_0x1e9cd0][_0x17e0('0x50')],_0x19e5ba[_0x1e9cd0]['endAt'])){manager[_0x17e0('0x54')](_0x1e9cd0,_0x19e5ba[_0x1e9cd0]['cron'],handleJob(_0x19e5ba[_0x1e9cd0]));logger[_0x17e0('0xc')](_0x17e0('0x55'),_0x19e5ba[_0x1e9cd0]['name'],_0x19e5ba[_0x1e9cd0][_0x17e0('0x4d')]);}else{manager[_0x17e0('0x48')](_0x1e9cd0);manager[_0x17e0('0x56')](_0x1e9cd0);logger[_0x17e0('0xc')](_0x17e0('0x57'),_0x19e5ba[_0x1e9cd0][_0x17e0('0x17')],_0x19e5ba[_0x1e9cd0][_0x17e0('0x4d')]);}}}})[_0x17e0('0x32')](function(_0x4da3d6){logger['error'](JSON[_0x17e0('0x2a')](_0x4da3d6));});}exports['run']=function(_0x582a3c){return getJobs(_0x582a3c);};exports[_0x17e0('0x58')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index bc81e03..232c93a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98e5=['TranscribeService','getTranscriptionJob','Comprehend','substring','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data1','data2','transcribeRegion','transcribeName','then','info','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','fileText','transcript','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','Sequelize','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','language','Sentiment','Positive','SentimentScore','Mixed','Neutral','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','bucket','update','Negative','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','findAll','IN_PROGRESS','Setting','findOne','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','all','start','util','bluebird','../../config/logger','transcribe'];(function(_0x5573a0,_0x3a93d8){var _0xfdb4e3=function(_0x192a63){while(--_0x192a63){_0x5573a0['push'](_0x5573a0['shift']());}};_0xfdb4e3(++_0x3a93d8);}(_0x98e5,0x8a));var _0x598e=function(_0x1793de,_0x4d7233){_0x1793de=_0x1793de-0x0;var _0x4f0309=_0x98e5[_0x1793de];return _0x4f0309;};var _=require('lodash');var AWS=require('aws-sdk');var rp=require('request-promise');var util=require(_0x598e('0x0'));var BPromise=require(_0x598e('0x1'));var db=require('../../mysqldb')['db'];var logger=require(_0x598e('0x2'))(_0x598e('0x3'));function getTranscriptionJob(_0x5cc274,_0x3af01f,_0x5a876c,_0x55025c){return new Promise(function(_0x154755,_0x568749){var _0x4292c3=new AWS[(_0x598e('0x4'))]({'accessKeyId':_0x3af01f,'secretAccessKey':_0x5cc274,'region':_0x5a876c});_0x4292c3[_0x598e('0x5')]({'TranscriptionJobName':_0x55025c},function(_0x3e0212,_0x9dc046){if(_0x3e0212){return _0x568749(_0x3e0212);}else{return _0x154755(_0x9dc046);}});});}function sentiment(_0x3e6e86,_0x1d394c,_0x2550b9,_0x2e8f07,_0x12a9f4){return new Promise(function(_0x28dee7,_0x4883b1){var _0x44e441=new AWS[(_0x598e('0x6'))]({'accessKeyId':_0x1d394c,'secretAccessKey':_0x3e6e86,'region':_0x2550b9});_0x44e441['detectSentiment']({'Text':_0x2e8f07,'LanguageCode':_0x12a9f4[_0x598e('0x7')](0x0,0x2)},function(_0x547579,_0x3bcd08){if(_0x547579){return _0x4883b1(_0x547579);}else{return _0x28dee7(_0x3bcd08);}});});}function checkTranscribeJob(_0x445d1d,_0x2e3614,_0xd29d12){var _0x3811b2;return new BPromise(function(_0x49ac43,_0x1497c9){logger['info'](util[_0x598e('0x8')](_0x598e('0x9'),_0x445d1d['id'],_0x445d1d['transcribeName']));return getTranscriptionJob(_0xd29d12[_0x598e('0xa')],_0xd29d12[_0x598e('0xb')],_0x2e3614[_0x598e('0xc')],_0x445d1d[_0x598e('0xd')])[_0x598e('0xe')](function(_0x93ba6c){logger[_0x598e('0xf')](util['format'](_0x598e('0x10'),_0x445d1d['id'],_0x445d1d[_0x598e('0xd')],_0x93ba6c[_0x598e('0x11')][_0x598e('0x12')]));if(!_0x445d1d['fileText']){switch(_0x93ba6c[_0x598e('0x11')][_0x598e('0x12')]){case _0x598e('0x13'):var _0x31846e={'transcribeStatus':_0x93ba6c[_0x598e('0x11')][_0x598e('0x12')],'fileUri':_0x93ba6c[_0x598e('0x11')][_0x598e('0x14')][_0x598e('0x15')]};logger[_0x598e('0xf')](util[_0x598e('0x8')](_0x598e('0x16'),_0x445d1d['id']));return rp({'uri':_0x93ba6c[_0x598e('0x11')][_0x598e('0x14')][_0x598e('0x15')],'json':!![]})[_0x598e('0xe')](function(_0x233f16){logger[_0x598e('0xf')](util['format'](_0x598e('0x17'),_0x445d1d['id']));if(_0x233f16&&_0x233f16['results']&&_0x233f16[_0x598e('0x18')][_0x598e('0x19')]&&_0x233f16['results'][_0x598e('0x19')][_0x598e('0x1a')]){_0x31846e[_0x598e('0x1b')]='';for(var _0xc83fcf=0x0;_0xc83fcf<_0x233f16[_0x598e('0x18')][_0x598e('0x19')][_0x598e('0x1a')];_0xc83fcf++){_0x31846e[_0x598e('0x1b')]+=_0x233f16[_0x598e('0x18')][_0x598e('0x19')][_0xc83fcf][_0x598e('0x1c')]+'';}}return _0x445d1d['update'](_0x31846e);})[_0x598e('0xe')](function(){logger['info'](util[_0x598e('0x8')](_0x598e('0x1d'),_0x445d1d['id']));if(!_0x445d1d[_0x598e('0x1e')]){throw new db['Sequelize'][(_0x598e('0x1f'))](_0x598e('0x20'));}if(!_0x2e3614[_0x598e('0x21')]||!_0x2e3614[_0x598e('0x22')]||!_0x2e3614[_0x598e('0x23')]||!_0x2e3614['language']||!_0x2e3614['bucket']){throw new db['Sequelize'][(_0x598e('0x1f'))](_0x598e('0x24'));}if(!_0x31846e[_0x598e('0x1b')]){throw new Error(_0x598e('0x25'));}if(_0x2e3614[_0x598e('0x22')]===_0xd29d12['id']){return _0xd29d12;}else{return db[_0x598e('0x26')]['findOne']({'where':{'id':_settings[_0x598e('0x22')]}});}})[_0x598e('0xe')](function(_0x9922ca){if(!_0x9922ca){throw new db[(_0x598e('0x27'))][(_0x598e('0x1f'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x9922ca[_0x598e('0xa')]||!_0x9922ca[_0x598e('0xb')]){throw new db[(_0x598e('0x27'))]['ValidationError'](_0x598e('0x28'));}_0x3811b2=_0x9922ca;logger[_0x598e('0xf')](util['format'](_0x598e('0x29'),_0x445d1d['id']));return sentiment(_0x3811b2[_0x598e('0xa')],_0x3811b2[_0x598e('0xb')],_0x2e3614[_0x598e('0x23')],_0x31846e[_0x598e('0x1b')],_0x2e3614[_0x598e('0x2a')]);})['then'](function(_0x16de0a){logger[_0x598e('0xf')](util[_0x598e('0x8')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x445d1d['id']));return _0x445d1d['update']({'sentiment':_0x16de0a[_0x598e('0x2b')],'sPositive':_0x16de0a['SentimentScore'][_0x598e('0x2c')],'sNegative':_0x16de0a[_0x598e('0x2d')]['Negative'],'sMixed':_0x16de0a['SentimentScore'][_0x598e('0x2e')],'sNeutral':_0x16de0a['SentimentScore'][_0x598e('0x2f')]});})[_0x598e('0xe')](function(){logger[_0x598e('0xf')](util['format'](_0x598e('0x1d'),_0x445d1d['id']));_0x49ac43();});case'FAILED':return _0x445d1d['update']({'transcribeStatus':_0x598e('0x30'),'failureReason':_0x93ba6c[_0x598e('0x11')]['FailureReason']})['then'](function(){logger[_0x598e('0xf')](util[_0x598e('0x8')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x445d1d['id']));_0x49ac43();});default:logger[_0x598e('0xf')](util[_0x598e('0x8')](_0x598e('0x31'),_0x445d1d['id']));break;}}else{return BPromise[_0x598e('0x32')]()[_0x598e('0xe')](function(){if(!_0x445d1d[_0x598e('0x1e')]){throw new db[(_0x598e('0x27'))]['ValidationError'](_0x598e('0x20'));}if(!_0x2e3614[_0x598e('0x21')]||!_0x2e3614[_0x598e('0x22')]||!_0x2e3614[_0x598e('0x23')]||!_0x2e3614[_0x598e('0x2a')]||!_0x2e3614[_0x598e('0x33')]){throw new db[(_0x598e('0x27'))][(_0x598e('0x1f'))](_0x598e('0x24'));}if(!_0x445d1d[_0x598e('0x1b')]){throw new Error(_0x598e('0x25'));}if(_0x2e3614[_0x598e('0x22')]===_0xd29d12['id']){return _0xd29d12;}else{return db[_0x598e('0x26')]['findOne']({'where':{'id':_settings['sentimentAccountId']}});}})[_0x598e('0xe')](function(_0x10218f){if(!_0x10218f){throw new db[(_0x598e('0x27'))][(_0x598e('0x1f'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x10218f[_0x598e('0xa')]||!_0x10218f[_0x598e('0xb')]){throw new db[(_0x598e('0x27'))]['ValidationError'](_0x598e('0x28'));}_0x3811b2=_0x10218f;logger[_0x598e('0xf')](util[_0x598e('0x8')](_0x598e('0x29'),_0x445d1d['id']));return sentiment(_0x3811b2[_0x598e('0xa')],_0x3811b2[_0x598e('0xb')],_0x2e3614[_0x598e('0x23')],_0x445d1d[_0x598e('0x1b')],_0x2e3614[_0x598e('0x2a')]);})[_0x598e('0xe')](function(_0x1cacb6){logger['info'](util['format']('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x445d1d['id']));return _0x445d1d[_0x598e('0x34')]({'sentiment':_0x1cacb6[_0x598e('0x2b')],'sPositive':_0x1cacb6[_0x598e('0x2d')]['Positive'],'sNegative':_0x1cacb6[_0x598e('0x2d')][_0x598e('0x35')],'sMixed':_0x1cacb6[_0x598e('0x2d')]['Mixed'],'sNeutral':_0x1cacb6[_0x598e('0x2d')][_0x598e('0x2f')],'transcribeStatus':_0x598e('0x13')});})['then'](function(){logger[_0x598e('0xf')](util[_0x598e('0x8')](_0x598e('0x1d'),_0x445d1d['id']));_0x49ac43();});}})[_0x598e('0x36')](function(_0x20723d){if(_0x20723d){if(!_0x20723d[_0x598e('0x37')]||_0x20723d['name']!==_0x598e('0x38')){logger[_0x598e('0x39')](util['format'](_0x598e('0x3a'),_0x445d1d['id']),util[_0x598e('0x3b')](_0x20723d,{'showHidden':![],'depth':null}));}}_0x49ac43();});});}function checkTranscribe(){var _0x2a55a7;var _0x584f24;var _0x59e67b;return db['VoiceRecording'][_0x598e('0x3c')]({'where':{'transcribeStatus':_0x598e('0x3d')}})['then'](function(_0x4b4fcb){if(!_0x4b4fcb||!_0x4b4fcb[_0x598e('0x1a')]){throw new db[(_0x598e('0x27'))]['ValidationError']('No\x20transcribe\x20job\x20to\x20check');}_0x2a55a7=_0x4b4fcb;return db[_0x598e('0x3e')][_0x598e('0x3f')]({'where':{'id':0x1}});})[_0x598e('0xe')](function(_0x34a43d){if(!_0x34a43d){throw new db['Sequelize']['ValidationError'](_0x598e('0x40'));}_0x584f24=_0x34a43d;if(!_0x584f24['transcribe']||!_0x584f24[_0x598e('0x41')]||!_0x584f24['transcribeRegion']||!_0x584f24[_0x598e('0x2a')]||!_0x584f24[_0x598e('0x33')]){throw new db[(_0x598e('0x27'))][(_0x598e('0x1f'))](_0x598e('0x42'));}return db[_0x598e('0x26')][_0x598e('0x3f')]({'where':{'id':_0x584f24['transcribeAccountId']}});})[_0x598e('0xe')](function(_0x170ee8){if(!_0x170ee8){throw new db[(_0x598e('0x27'))][(_0x598e('0x1f'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x170ee8[_0x598e('0xa')]||!_0x170ee8[_0x598e('0xb')]){throw new db[(_0x598e('0x27'))][(_0x598e('0x1f'))](_0x598e('0x28'));}_0x59e67b=_0x170ee8;var _0x3b37fa=[];_0x2a55a7[_0x598e('0x43')](function(_0x58b6b3){_0x3b37fa[_0x598e('0x44')](checkTranscribeJob(_0x58b6b3,_0x584f24,_0x59e67b));});return BPromise[_0x598e('0x45')](_0x3b37fa);})[_0x598e('0x36')](function(_0x32d5fe){if(_0x32d5fe){if(!_0x32d5fe['name']||_0x32d5fe[_0x598e('0x37')]!=='SequelizeValidationError'){logger['error'](util[_0x598e('0x3b')](_0x32d5fe,{'showHidden':![],'depth':null}));}}});}exports[_0x598e('0x46')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0x8aa7=['tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentimentAccountId','sentimentRegion','bucket','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','findOne','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','sentiment','Cloud\x20Provider\x20not\x20available','language','name','error','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribeAccountId','forEach','push','catch','SequelizeValidationError','inspect','start','aws-sdk','request-promise','util','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','then','info','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJobStatus','fileText','TranscriptionJob','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated'];(function(_0x51a0a9,_0x569499){var _0x4bd20c=function(_0x26235a){while(--_0x26235a){_0x51a0a9['push'](_0x51a0a9['shift']());}};_0x4bd20c(++_0x569499);}(_0x8aa7,0xb6));var _0x78aa=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x8aa7[_0x2d7f0e];return _0x110b07;};var _=require('lodash');var AWS=require(_0x78aa('0x0'));var rp=require(_0x78aa('0x1'));var util=require(_0x78aa('0x2'));var BPromise=require(_0x78aa('0x3'));var db=require(_0x78aa('0x4'))['db'];var logger=require(_0x78aa('0x5'))(_0x78aa('0x6'));function getTranscriptionJob(_0x5b46d1,_0x2b9bfa,_0x4055f5,_0x148997){return new Promise(function(_0x229075,_0x2d17c2){var _0x369ee7=new AWS[(_0x78aa('0x7'))]({'accessKeyId':_0x2b9bfa,'secretAccessKey':_0x5b46d1,'region':_0x4055f5});_0x369ee7[_0x78aa('0x8')]({'TranscriptionJobName':_0x148997},function(_0x2368ac,_0x460488){if(_0x2368ac){return _0x2d17c2(_0x2368ac);}else{return _0x229075(_0x460488);}});});}function sentiment(_0x1da0ad,_0x116a77,_0x45d377,_0x41e196,_0x357ab1){return new Promise(function(_0x3bb06f,_0x3df85c){var _0x3b7690=new AWS[(_0x78aa('0x9'))]({'accessKeyId':_0x116a77,'secretAccessKey':_0x1da0ad,'region':_0x45d377});_0x3b7690['detectSentiment']({'Text':_0x41e196,'LanguageCode':_0x357ab1['substring'](0x0,0x2)},function(_0x902d0e,_0x2a0b90){if(_0x902d0e){return _0x3df85c(_0x902d0e);}else{return _0x3bb06f(_0x2a0b90);}});});}function checkTranscribeJob(_0x47de41,_0x1a53ba,_0x41b378){var _0x1ef828;return new BPromise(function(_0x33773a,_0xe0b9f7){logger['info'](util[_0x78aa('0xa')](_0x78aa('0xb'),_0x47de41['id'],_0x47de41[_0x78aa('0xc')]));return getTranscriptionJob(_0x41b378[_0x78aa('0xd')],_0x41b378[_0x78aa('0xe')],_0x1a53ba['transcribeRegion'],_0x47de41[_0x78aa('0xc')])[_0x78aa('0xf')](function(_0x23dbb4){logger[_0x78aa('0x10')](util[_0x78aa('0xa')](_0x78aa('0x11'),_0x47de41['id'],_0x47de41['transcribeName'],_0x23dbb4['TranscriptionJob'][_0x78aa('0x12')]));if(!_0x47de41[_0x78aa('0x13')]){switch(_0x23dbb4[_0x78aa('0x14')][_0x78aa('0x12')]){case _0x78aa('0x15'):var _0x18513e={'transcribeStatus':_0x23dbb4[_0x78aa('0x14')][_0x78aa('0x12')],'fileUri':_0x23dbb4[_0x78aa('0x14')][_0x78aa('0x16')][_0x78aa('0x17')]};logger['info'](util[_0x78aa('0xa')](_0x78aa('0x18'),_0x47de41['id']));return rp({'uri':_0x23dbb4['TranscriptionJob'][_0x78aa('0x16')][_0x78aa('0x17')],'json':!![]})[_0x78aa('0xf')](function(_0x507b19){logger['info'](util[_0x78aa('0xa')](_0x78aa('0x19'),_0x47de41['id']));if(_0x507b19&&_0x507b19['results']&&_0x507b19[_0x78aa('0x1a')][_0x78aa('0x1b')]&&_0x507b19[_0x78aa('0x1a')][_0x78aa('0x1b')]['length']){_0x18513e[_0x78aa('0x13')]='';for(var _0x25463d=0x0;_0x25463d<_0x507b19[_0x78aa('0x1a')][_0x78aa('0x1b')][_0x78aa('0x1c')];_0x25463d++){_0x18513e[_0x78aa('0x13')]+=_0x507b19[_0x78aa('0x1a')][_0x78aa('0x1b')][_0x25463d]['transcript']+'';}}return _0x47de41[_0x78aa('0x1d')](_0x18513e);})['then'](function(){logger[_0x78aa('0x10')](util['format'](_0x78aa('0x1e'),_0x47de41['id']));if(!_0x47de41[_0x78aa('0x1f')]){throw new db[(_0x78aa('0x20'))][(_0x78aa('0x21'))](_0x78aa('0x22'));}if(!_0x1a53ba['sentiment']||!_0x1a53ba[_0x78aa('0x23')]||!_0x1a53ba[_0x78aa('0x24')]||!_0x1a53ba['language']||!_0x1a53ba[_0x78aa('0x25')]){throw new db['Sequelize']['ValidationError'](_0x78aa('0x26'));}if(!_0x18513e['fileText']){throw new Error('Transcript\x20not\x20available');}if(_0x1a53ba[_0x78aa('0x23')]===_0x41b378['id']){return _0x41b378;}else{return db[_0x78aa('0x27')][_0x78aa('0x28')]({'where':{'id':_settings[_0x78aa('0x23')]}});}})[_0x78aa('0xf')](function(_0x2a9fad){if(!_0x2a9fad){throw new db[(_0x78aa('0x20'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x2a9fad['data1']||!_0x2a9fad[_0x78aa('0xe')]){throw new db[(_0x78aa('0x20'))][(_0x78aa('0x21'))](_0x78aa('0x29'));}_0x1ef828=_0x2a9fad;logger['info'](util[_0x78aa('0xa')](_0x78aa('0x2a'),_0x47de41['id']));return sentiment(_0x1ef828[_0x78aa('0xd')],_0x1ef828['data2'],_0x1a53ba['sentimentRegion'],_0x18513e['fileText'],_0x1a53ba['language']);})[_0x78aa('0xf')](function(_0x3402bd){logger[_0x78aa('0x10')](util[_0x78aa('0xa')](_0x78aa('0x2b'),_0x47de41['id']));return _0x47de41[_0x78aa('0x1d')]({'sentiment':_0x3402bd[_0x78aa('0x2c')],'sPositive':_0x3402bd[_0x78aa('0x2d')][_0x78aa('0x2e')],'sNegative':_0x3402bd['SentimentScore'][_0x78aa('0x2f')],'sMixed':_0x3402bd['SentimentScore'][_0x78aa('0x30')],'sNeutral':_0x3402bd[_0x78aa('0x2d')][_0x78aa('0x31')]});})[_0x78aa('0xf')](function(){logger[_0x78aa('0x10')](util[_0x78aa('0xa')](_0x78aa('0x1e'),_0x47de41['id']));_0x33773a();});case _0x78aa('0x32'):return _0x47de41['update']({'transcribeStatus':_0x78aa('0x32'),'failureReason':_0x23dbb4[_0x78aa('0x14')]['FailureReason']})[_0x78aa('0xf')](function(){logger['info'](util[_0x78aa('0xa')](_0x78aa('0x1e'),_0x47de41['id']));_0x33773a();});default:logger[_0x78aa('0x10')](util[_0x78aa('0xa')](_0x78aa('0x33'),_0x47de41['id']));break;}}else{return BPromise[_0x78aa('0x34')]()[_0x78aa('0xf')](function(){if(!_0x47de41[_0x78aa('0x1f')]){throw new db[(_0x78aa('0x20'))][(_0x78aa('0x21'))](_0x78aa('0x22'));}if(!_0x1a53ba[_0x78aa('0x35')]||!_0x1a53ba[_0x78aa('0x23')]||!_0x1a53ba[_0x78aa('0x24')]||!_0x1a53ba['language']||!_0x1a53ba['bucket']){throw new db[(_0x78aa('0x20'))]['ValidationError'](_0x78aa('0x26'));}if(!_0x47de41[_0x78aa('0x13')]){throw new Error('Transcript\x20not\x20available');}if(_0x1a53ba[_0x78aa('0x23')]===_0x41b378['id']){return _0x41b378;}else{return db[_0x78aa('0x27')]['findOne']({'where':{'id':_settings[_0x78aa('0x23')]}});}})['then'](function(_0x4d9913){if(!_0x4d9913){throw new db[(_0x78aa('0x20'))][(_0x78aa('0x21'))](_0x78aa('0x36'));}if(!_0x4d9913[_0x78aa('0xd')]||!_0x4d9913['data2']){throw new db[(_0x78aa('0x20'))]['ValidationError'](_0x78aa('0x29'));}_0x1ef828=_0x4d9913;logger[_0x78aa('0x10')](util['format']('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x47de41['id']));return sentiment(_0x1ef828[_0x78aa('0xd')],_0x1ef828['data2'],_0x1a53ba['sentimentRegion'],_0x47de41[_0x78aa('0x13')],_0x1a53ba[_0x78aa('0x37')]);})['then'](function(_0x199c90){logger[_0x78aa('0x10')](util[_0x78aa('0xa')](_0x78aa('0x2b'),_0x47de41['id']));return _0x47de41[_0x78aa('0x1d')]({'sentiment':_0x199c90[_0x78aa('0x2c')],'sPositive':_0x199c90[_0x78aa('0x2d')][_0x78aa('0x2e')],'sNegative':_0x199c90[_0x78aa('0x2d')][_0x78aa('0x2f')],'sMixed':_0x199c90[_0x78aa('0x2d')][_0x78aa('0x30')],'sNeutral':_0x199c90[_0x78aa('0x2d')]['Neutral'],'transcribeStatus':'COMPLETED'});})[_0x78aa('0xf')](function(){logger[_0x78aa('0x10')](util['format'](_0x78aa('0x1e'),_0x47de41['id']));_0x33773a();});}})['catch'](function(_0xb727c1){if(_0xb727c1){if(!_0xb727c1[_0x78aa('0x38')]||_0xb727c1['name']!=='SequelizeValidationError'){logger[_0x78aa('0x39')](util[_0x78aa('0xa')]('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x47de41['id']),util['inspect'](_0xb727c1,{'showHidden':![],'depth':null}));}}_0x33773a();});});}function checkTranscribe(){var _0x3ae00e;var _0x46e3c2;var _0x580adc;return db[_0x78aa('0x3a')][_0x78aa('0x3b')]({'where':{'transcribeStatus':_0x78aa('0x3c')}})[_0x78aa('0xf')](function(_0x31670d){if(!_0x31670d||!_0x31670d['length']){throw new db[(_0x78aa('0x20'))][(_0x78aa('0x21'))](_0x78aa('0x3d'));}_0x3ae00e=_0x31670d;return db[_0x78aa('0x3e')][_0x78aa('0x28')]({'where':{'id':0x1}});})[_0x78aa('0xf')](function(_0x49be51){if(!_0x49be51){throw new db[(_0x78aa('0x20'))][(_0x78aa('0x21'))](_0x78aa('0x3f'));}_0x46e3c2=_0x49be51;if(!_0x46e3c2['transcribe']||!_0x46e3c2[_0x78aa('0x40')]||!_0x46e3c2['transcribeRegion']||!_0x46e3c2['language']||!_0x46e3c2[_0x78aa('0x25')]){throw new db[(_0x78aa('0x20'))][(_0x78aa('0x21'))]('Transcribe\x20not\x20configured');}return db[_0x78aa('0x27')][_0x78aa('0x28')]({'where':{'id':_0x46e3c2[_0x78aa('0x40')]}});})['then'](function(_0x383d71){if(!_0x383d71){throw new db[(_0x78aa('0x20'))][(_0x78aa('0x21'))](_0x78aa('0x36'));}if(!_0x383d71[_0x78aa('0xd')]||!_0x383d71['data2']){throw new db[(_0x78aa('0x20'))][(_0x78aa('0x21'))](_0x78aa('0x29'));}_0x580adc=_0x383d71;var _0x47e9b4=[];_0x3ae00e[_0x78aa('0x41')](function(_0x44cbee){_0x47e9b4[_0x78aa('0x42')](checkTranscribeJob(_0x44cbee,_0x46e3c2,_0x580adc));});return BPromise['all'](_0x47e9b4);})[_0x78aa('0x43')](function(_0x58d065){if(_0x58d065){if(!_0x58d065[_0x78aa('0x38')]||_0x58d065[_0x78aa('0x38')]!==_0x78aa('0x44')){logger['error'](util[_0x78aa('0x45')](_0x58d065,{'showHidden':![],'depth':null}));}}});}exports[_0x78aa('0x46')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index a19b78c..99ea6a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b8f=['map','info','join','update','system','YYYY-MM-DD\x20HH:mm:ss','then','length','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','error','[WHATSAPP]\x20Error\x20closing\x20interactions','start','lodash','moment','ioredis','util','../../config/environment','schedule','redis','defaults','localhost','socket.io-emitter','WhatsappInteraction','findAll','lastMsgAt','subtract','hours'];(function(_0x65c50e,_0x1aa926){var _0x4573e7=function(_0x5bc049){while(--_0x5bc049){_0x65c50e['push'](_0x65c50e['shift']());}};_0x4573e7(++_0x1aa926);}(_0x4b8f,0x187));var _0xf4b8=function(_0xefe895,_0x4cbfe9){_0xefe895=_0xefe895-0x0;var _0x59c184=_0x4b8f[_0xefe895];return _0x59c184;};'use strict';var _=require(_0xf4b8('0x0'));var moment=require(_0xf4b8('0x1'));var Redis=require(_0xf4b8('0x2'));var util=require(_0xf4b8('0x3'));var config=require(_0xf4b8('0x4'));var db=require('../../mysqldb')['db'];var logger=require('../logger')(_0xf4b8('0x5'));config[_0xf4b8('0x6')]=_[_0xf4b8('0x7')](config['redis'],{'host':_0xf4b8('0x8'),'port':0x18eb});var io=require(_0xf4b8('0x9'))(new Redis(config[_0xf4b8('0x6')]));function closeInteractions(){var _0x111fea=[];return db[_0xf4b8('0xa')][_0xf4b8('0xb')]({'raw':!![],'attributes':['id',_0xf4b8('0xc')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0xf4b8('0xd')](0x18,_0xf4b8('0xe'))}}})['then'](function(_0x447eb1){if(_0x447eb1&&_0x447eb1['length']){_0x111fea=_[_0xf4b8('0xf')](_0x447eb1||[],'id');logger[_0xf4b8('0x10')]('[WHATSAPP]\x20Interactions\x20to\x20close:',_0x111fea[_0xf4b8('0x11')]());return db[_0xf4b8('0xa')][_0xf4b8('0x12')]({'closeReason':_0xf4b8('0x13'),'disposition':'timeout','closed':!![],'closedAt':moment()['format'](_0xf4b8('0x14'))},{'where':{'id':_0x111fea}});}})[_0xf4b8('0x15')](function(){if(_0x111fea&&_0x111fea[_0xf4b8('0x16')]){logger[_0xf4b8('0x10')](_0xf4b8('0x17'),_0x111fea[_0xf4b8('0x11')]());for(var _0xdf70ac=0x0;_0xdf70ac<_0x111fea['length'];_0xdf70ac++){io[_0xf4b8('0x18')](_0xf4b8('0x19'),{'id':_0x111fea[_0xdf70ac],'closed':!![]});}}})['catch'](function(_0x244f92){logger[_0xf4b8('0x1a')](_0xf4b8('0x1b'),_0x244f92?util['inspect'](_0x244f92,{'showHidden':![],'depth':null}):'');});}exports[_0xf4b8('0x1c')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x5e35=['../../mysqldb','../logger','redis','localhost','WhatsappInteraction','findAll','lastMsgAt','subtract','hours','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','YYYY-MM-DD\x20HH:mm:ss','then','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','catch','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment','ioredis','../../config/environment'];(function(_0xc4001c,_0x1bf8f0){var _0x49f7bc=function(_0x1059b8){while(--_0x1059b8){_0xc4001c['push'](_0xc4001c['shift']());}};_0x49f7bc(++_0x1bf8f0);}(_0x5e35,0x1af));var _0x55e3=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x5e35[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0x55e3('0x0'));var moment=require(_0x55e3('0x1'));var Redis=require(_0x55e3('0x2'));var util=require('util');var config=require(_0x55e3('0x3'));var db=require(_0x55e3('0x4'))['db'];var logger=require(_0x55e3('0x5'))('schedule');config[_0x55e3('0x6')]=_['defaults'](config[_0x55e3('0x6')],{'host':_0x55e3('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x55e3('0x6')]));function closeInteractions(){var _0x46b78c=[];return db[_0x55e3('0x8')][_0x55e3('0x9')]({'raw':!![],'attributes':['id',_0x55e3('0xa')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0x55e3('0xb')](0x18,_0x55e3('0xc'))}}})['then'](function(_0x153316){if(_0x153316&&_0x153316[_0x55e3('0xd')]){_0x46b78c=_[_0x55e3('0xe')](_0x153316||[],'id');logger[_0x55e3('0xf')](_0x55e3('0x10'),_0x46b78c[_0x55e3('0x11')]());return db[_0x55e3('0x8')][_0x55e3('0x12')]({'closeReason':'system','disposition':'timeout','closed':!![],'closedAt':moment()['format'](_0x55e3('0x13'))},{'where':{'id':_0x46b78c}});}})[_0x55e3('0x14')](function(){if(_0x46b78c&&_0x46b78c[_0x55e3('0xd')]){logger[_0x55e3('0xf')](_0x55e3('0x15'),_0x46b78c[_0x55e3('0x11')]());for(var _0x2e695a=0x0;_0x2e695a<_0x46b78c[_0x55e3('0xd')];_0x2e695a++){io[_0x55e3('0x16')](_0x55e3('0x17'),{'id':_0x46b78c[_0x2e695a],'closed':!![]});}}})[_0x55e3('0x18')](function(_0x3233fc){logger[_0x55e3('0x19')](_0x55e3('0x1a'),_0x3233fc?util[_0x55e3('0x1b')](_0x3233fc,{'showHidden':![],'depth':null}):'');});}exports[_0x55e3('0x1c')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 057bf52..e69d1a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76a8=['catch','util','../mysqldb','push','Biondo','innocenzo.biondo','now','@xcally.com','CmContact','destroy','bulkCreate','then','log','finished\x20populating','contacts1','CmHopper','hopper1','contacts2','hopper2'];(function(_0xf20b6,_0x49ddbb){var _0x4ff567=function(_0x3ccc7f){while(--_0x3ccc7f){_0xf20b6['push'](_0xf20b6['shift']());}};_0x4ff567(++_0x49ddbb);}(_0x76a8,0x1ef));var _0x876a=function(_0x30e235,_0x247107){_0x30e235=_0x30e235-0x0;var _0x48977b=_0x76a8[_0x30e235];return _0x48977b;};'use strict';var util=require(_0x876a('0x0'));var db=require(_0x876a('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x876a('0x2')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0x876a('0x3')+i,'phone':0xf879fb460+i,'email':_0x876a('0x4')+i+'@xcally.com'});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x876a('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x876a('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x876a('0x5')](),'updatedAt':Date['now']()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x876a('0x2')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0x876a('0x3')+i,'phone':0xf879fb460+i,'email':_0x876a('0x4')+i+_0x876a('0x6')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x876a('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x876a('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x876a('0x5')](),'updatedAt':Date[_0x876a('0x5')]()});}db[_0x876a('0x7')][_0x876a('0x8')]({'where':{}})['then'](function(){return db[_0x876a('0x7')][_0x876a('0x9')](contacts);})[_0x876a('0xa')](function(){console[_0x876a('0xb')](_0x876a('0xc'),_0x876a('0xd'));return db['CmHopper'][_0x876a('0x8')]({'where':{}});})[_0x876a('0xa')](function(){return db[_0x876a('0xe')][_0x876a('0x9')](hopper);})['then'](function(){console[_0x876a('0xb')](_0x876a('0xc'),_0x876a('0xf'));return db['CmContact'][_0x876a('0x9')](contacts2);})[_0x876a('0xa')](function(){console[_0x876a('0xb')](_0x876a('0xc'),_0x876a('0x10'));return db[_0x876a('0xe')][_0x876a('0x9')](hopper2);})[_0x876a('0xa')](function(){console['log'](_0x876a('0xc'),_0x876a('0x11'));})[_0x876a('0x12')](function(_0x16b8b6){console[_0x876a('0xb')](_0x16b8b6);});
\ No newline at end of file
+var _0x43c2=['Biondo','innocenzo.biondo','@xcally.com','now','then','CmContact','bulkCreate','log','contacts1','CmHopper','finished\x20populating','hopper1','hopper2','catch','util','../mysqldb','push','Innocenzo'];(function(_0x1b7707,_0x2a84e1){var _0x985bbd=function(_0x3fb0d3){while(--_0x3fb0d3){_0x1b7707['push'](_0x1b7707['shift']());}};_0x985bbd(++_0x2a84e1);}(_0x43c2,0x164));var _0x243c=function(_0x10afb8,_0x5b0437){_0x10afb8=_0x10afb8-0x0;var _0x7c019=_0x43c2[_0x10afb8];return _0x7c019;};'use strict';var util=require(_0x243c('0x0'));var db=require(_0x243c('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x243c('0x2')]({'id':i,'firstName':_0x243c('0x3')+i,'lastName':_0x243c('0x4')+i,'phone':0xf879fb460+i,'email':_0x243c('0x5')+i+_0x243c('0x6')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper['push']({'id':i,'active':![],'scheduledat':Date[_0x243c('0x7')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0x243c('0x7')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x243c('0x2')]({'id':i,'firstName':_0x243c('0x3')+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':_0x243c('0x5')+i+_0x243c('0x6')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x243c('0x2')]({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0x243c('0x7')]()});}db['CmContact']['destroy']({'where':{}})[_0x243c('0x8')](function(){return db[_0x243c('0x9')][_0x243c('0xa')](contacts);})[_0x243c('0x8')](function(){console[_0x243c('0xb')]('finished\x20populating',_0x243c('0xc'));return db[_0x243c('0xd')]['destroy']({'where':{}});})[_0x243c('0x8')](function(){return db[_0x243c('0xd')]['bulkCreate'](hopper);})[_0x243c('0x8')](function(){console[_0x243c('0xb')](_0x243c('0xe'),_0x243c('0xf'));return db[_0x243c('0x9')][_0x243c('0xa')](contacts2);})[_0x243c('0x8')](function(){console[_0x243c('0xb')]('finished\x20populating','contacts2');return db[_0x243c('0xd')]['bulkCreate'](hopper2);})[_0x243c('0x8')](function(){console['log'](_0x243c('0xe'),_0x243c('0x10'));})[_0x243c('0x11')](function(_0x562e13){console['log'](_0x562e13);});
\ No newline at end of file
index 6831aca..7a57c0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02a9=['agent','%s%s@xcally.com','password','friend','udp','wss','ulaw','yes','/etc/pki/tls/certs/motion.crt','actpass','\x22%s\x22\x20<%s>','User','bulkCreate','then','log','add\x20user','util','push','format','%s%s'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x02a9,0x1dc));var _0x902a=function(_0x47fc9c,_0x5aacec){_0x47fc9c=_0x47fc9c-0x0;var _0x27a677=_0x02a9[_0x47fc9c];return _0x27a677;};'use strict';var util=require(_0x902a('0x0'));var db=require('../mysqldb')['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x902a('0x1')]({'name':util[_0x902a('0x2')](_0x902a('0x3'),_0x902a('0x4'),i),'fullname':util[_0x902a('0x2')](_0x902a('0x3'),_0x902a('0x4'),i),'email':util[_0x902a('0x2')](_0x902a('0x5'),_0x902a('0x4'),i),'role':_0x902a('0x4'),'password':_0x902a('0x6'),'internal':0xfa0+i,'type':_0x902a('0x7'),'transport':[_0x902a('0x8'),'ws',_0x902a('0x9')],'disallow':['all'],'allow':[_0x902a('0xa')],'defaultuser':util['format']('%s%s',_0x902a('0x4'),i),'encryption':_0x902a('0xb'),'avpf':_0x902a('0xb'),'force_avp':_0x902a('0xb'),'icesupport':_0x902a('0xb'),'dtlsenable':_0x902a('0xb'),'dtlsverify':'no','dtlscertfile':_0x902a('0xc'),'dtlsprivatekey':'/etc/pki/tls/private/motion.key','dtlssetup':_0x902a('0xd'),'callerid':util[_0x902a('0x2')](_0x902a('0xe'),util[_0x902a('0x2')](_0x902a('0x3'),_0x902a('0x4'),i),0xfa0+i)});}db[_0x902a('0xf')][_0x902a('0x10')](users)[_0x902a('0x11')](function(){console[_0x902a('0x12')](_0x902a('0x13'));})['catch'](function(_0x323f81){console[_0x902a('0x12')](_0x323f81);});
\ No newline at end of file
+var _0x4bf1=['actpass','User','bulkCreate','then','log','add\x20user','catch','util','../mysqldb','push','format','agent','%s%s','password','friend','udp','wss','ulaw','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key'];(function(_0x44ab77,_0x53c1fe){var _0x4e33e4=function(_0x80b0f7){while(--_0x80b0f7){_0x44ab77['push'](_0x44ab77['shift']());}};_0x4e33e4(++_0x53c1fe);}(_0x4bf1,0x1d5));var _0x14bf=function(_0x32672a,_0x1efb7c){_0x32672a=_0x32672a-0x0;var _0x59e960=_0x4bf1[_0x32672a];return _0x59e960;};'use strict';var util=require(_0x14bf('0x0'));var db=require(_0x14bf('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x14bf('0x2')]({'name':util[_0x14bf('0x3')]('%s%s',_0x14bf('0x4'),i),'fullname':util[_0x14bf('0x3')](_0x14bf('0x5'),_0x14bf('0x4'),i),'email':util[_0x14bf('0x3')]('%s%s@xcally.com',_0x14bf('0x4'),i),'role':_0x14bf('0x4'),'password':_0x14bf('0x6'),'internal':0xfa0+i,'type':_0x14bf('0x7'),'transport':[_0x14bf('0x8'),'ws',_0x14bf('0x9')],'disallow':['all'],'allow':[_0x14bf('0xa')],'defaultuser':util[_0x14bf('0x3')]('%s%s',_0x14bf('0x4'),i),'encryption':_0x14bf('0xb'),'avpf':'yes','force_avp':_0x14bf('0xb'),'icesupport':_0x14bf('0xb'),'dtlsenable':_0x14bf('0xb'),'dtlsverify':'no','dtlscertfile':_0x14bf('0xc'),'dtlsprivatekey':_0x14bf('0xd'),'dtlssetup':_0x14bf('0xe'),'callerid':util[_0x14bf('0x3')]('\x22%s\x22\x20<%s>',util[_0x14bf('0x3')]('%s%s',_0x14bf('0x4'),i),0xfa0+i)});}db[_0x14bf('0xf')][_0x14bf('0x10')](users)[_0x14bf('0x11')](function(){console[_0x14bf('0x12')](_0x14bf('0x13'));})[_0x14bf('0x14')](function(_0x1a0881){console[_0x14bf('0x12')](_0x1a0881);});
\ No newline at end of file
index 1deb7be..144c64b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0d7=['map','removeChatInteractions','user_has_chat_interactions:remove','leave','removeMailInteractions','emit','user_has_mail_interactions:remove','FaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','WhatsappInteractions','removeWhatsappInteractions','catch','log','join','default','setMaxListeners','address','request','connection','remoteAddress','remotePort','SocketIO\x20','DISCONNECTED','CONNECTED','../mysqldb','./environment','name','Agents','User','role','agent','ivr','findOne','then','VoiceQueues','ChatQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','where','telephone','Campaign','type','format','%s:queue:%s','handshake','query','find','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','user:%s','admin','voice:outbound','include','ChatQueue','SmsQueue','push','MailQueue','OpenchannelQueue','Trunk','voice:inbound','userProfileId','VoiceQueue','FaxQueues','WhatsappQueue','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getWhatsappQueues','all','length','voice','fax','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s'];(function(_0xd4de4b,_0x1c5508){var _0x49855b=function(_0x5dcbc6){while(--_0x5dcbc6){_0xd4de4b['push'](_0xd4de4b['shift']());}};_0x49855b(++_0x1c5508);}(_0xc0d7,0x7f));var _0x7c0d=function(_0x231657,_0x4a3f0e){_0x231657=_0x231657-0x0;var _0x1ae1d0=_0xc0d7[_0x231657];return _0x1ae1d0;};'use strict';var _=require('lodash');var util=require('util');var BPromise=require('bluebird');var db=require(_0x7c0d('0x0'))['db'];var config=require(_0x7c0d('0x1'));var queryQueues={'attributes':['id',_0x7c0d('0x2')],'include':[{'as':_0x7c0d('0x3'),'model':db[_0x7c0d('0x4')],'attributes':['id',_0x7c0d('0x2'),_0x7c0d('0x5')],'raw':!![],'where':{'role':_0x7c0d('0x6')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x7c0d('0x2')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0x7c0d('0x2')]};var queryAgents={'raw':!![],'attributes':['id',_0x7c0d('0x2')],'where':{'role':_0x7c0d('0x6')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x7c0d('0x2'),'type'],'where':{'type':_0x7c0d('0x7')}};function getAssociatedResources(_0x15d9ed,_0x230a6b,_0xfd38a0){return db['UserProfileSection'][_0x7c0d('0x8')]({'where':{'name':_0x15d9ed,'userProfileId':_0x230a6b},'raw':!![]})[_0x7c0d('0x9')](function(_0x4c0798){if(_0x4c0798){if(_0x4c0798['autoAssociation']){switch(_0x15d9ed){case _0x7c0d('0xa'):case _0x7c0d('0xb'):case'FaxQueues':case _0x7c0d('0xc'):case _0x7c0d('0xd'):case _0x7c0d('0xe'):case _0x7c0d('0xf'):return db[_0xfd38a0][_0x7c0d('0x10')](queryQueues);case _0x7c0d('0x11'):return db[_0xfd38a0]['findAll'](queryTelephones);case _0x7c0d('0x12'):return db[_0xfd38a0][_0x7c0d('0x10')](queryTrunks);case _0x7c0d('0x13'):return db[_0xfd38a0][_0x7c0d('0x10')](queryCampaigns);}}else{return db[_0x7c0d('0x14')][_0x7c0d('0x10')]({'attributes':[_0x7c0d('0x15')],'where':{'sectionId':_0x4c0798['id']},'raw':!![]})[_0x7c0d('0x9')](function(_0x4a5fb4){if(_0x4a5fb4){var _0x340937={'where':{'id':_['map'](_0x4a5fb4,_0x7c0d('0x15'))},'raw':!![]};switch(_0xfd38a0){case'User':_0x340937[_0x7c0d('0x16')][_0x7c0d('0x5')]=_0x7c0d('0x17');break;case _0x7c0d('0x18'):_0x340937[_0x7c0d('0x16')][_0x7c0d('0x19')]=_0x7c0d('0x7');break;}return db[_0xfd38a0][_0x7c0d('0x10')](_0x340937);}else{return[];}});}}else{return[];}})[_0x7c0d('0x9')](function(_0xf0657e){return _0xf0657e;});}function joinOrLeaveQueues(_0x111dbe,_0x2e3f30,_0x3e1b95,_0x265d48){_0x111dbe[_0x2e3f30](util[_0x7c0d('0x1a')](_0x7c0d('0x1b'),_0x3e1b95,_0x265d48[_0x7c0d('0x2')]));if(_0x265d48[_0x7c0d('0x3')]){for(var _0x1308c6=0x0;_0x1308c6<_0x265d48['Agents']['length'];_0x1308c6+=0x1){_0x111dbe[_0x2e3f30](util['format']('user:%s',_0x265d48['Agents'][_0x1308c6][_0x7c0d('0x2')]));}}}function joinOrLeave(_0x2997a7,_0x1c7b84,_0x2f657e){var _0x1ef191;if(_0x2997a7[_0x7c0d('0x1c')][_0x7c0d('0x1d')]['id']){db['User'][_0x7c0d('0x1e')]({'attributes':['id',_0x7c0d('0x2'),'role','userProfileId'],'where':{'id':_0x2997a7[_0x7c0d('0x1c')]['query']['id']},'include':[{'model':db[_0x7c0d('0x1f')],'as':_0x7c0d('0x20'),'attributes':['id'],'raw':!![]},{'model':db[_0x7c0d('0x21')],'as':_0x7c0d('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0x7c0d('0x23')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x7c0d('0x24')],'as':_0x7c0d('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x7c0d('0x26')],'as':_0x7c0d('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x7c0d('0x28')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0x7c0d('0x9')](function(_0x553627){if(_0x553627){_0x1ef191=_0x553627;_0x2997a7[_0x1c7b84](util[_0x7c0d('0x1a')](_0x7c0d('0x29'),_0x553627[_0x7c0d('0x2')]));var _0x5aa43a=[];switch(_0x553627[_0x7c0d('0x5')]){case _0x7c0d('0x2a'):_0x2997a7[_0x1c7b84]('voice:inbound');_0x2997a7[_0x1c7b84](_0x7c0d('0x2b'));if(queryQueues['hasOwnProperty'](_0x7c0d('0x2c'))){delete queryQueues[_0x7c0d('0x2c')];}_0x5aa43a['push'](db['VoiceQueue'][_0x7c0d('0x10')](queryQueues));_0x5aa43a['push'](db[_0x7c0d('0x2d')][_0x7c0d('0x10')](queryQueues));_0x5aa43a['push'](db['FaxQueue']['findAll'](queryQueues));_0x5aa43a['push'](db[_0x7c0d('0x2e')]['findAll'](queryQueues));_0x5aa43a[_0x7c0d('0x2f')](db[_0x7c0d('0x30')]['findAll'](queryQueues));_0x5aa43a[_0x7c0d('0x2f')](db[_0x7c0d('0x31')][_0x7c0d('0x10')](queryQueues));_0x5aa43a[_0x7c0d('0x2f')](db['WhatsappQueue'][_0x7c0d('0x10')](queryQueues));_0x5aa43a[_0x7c0d('0x2f')](db[_0x7c0d('0x4')][_0x7c0d('0x10')](queryTelephones));_0x5aa43a[_0x7c0d('0x2f')](db[_0x7c0d('0x32')][_0x7c0d('0x10')](queryTrunks));_0x5aa43a[_0x7c0d('0x2f')](db[_0x7c0d('0x18')][_0x7c0d('0x10')](queryCampaigns));_0x5aa43a['push'](db[_0x7c0d('0x4')][_0x7c0d('0x10')](queryAgents));break;case'user':_0x2997a7[_0x1c7b84](_0x7c0d('0x33'));_0x2997a7[_0x1c7b84](_0x7c0d('0x2b'));_0x5aa43a[_0x7c0d('0x2f')](getAssociatedResources(_0x7c0d('0xa'),_0x553627[_0x7c0d('0x34')],_0x7c0d('0x35')));_0x5aa43a['push'](getAssociatedResources(_0x7c0d('0xb'),_0x553627[_0x7c0d('0x34')],_0x7c0d('0x2d')));_0x5aa43a[_0x7c0d('0x2f')](getAssociatedResources(_0x7c0d('0x36'),_0x553627['userProfileId'],'FaxQueue'));_0x5aa43a[_0x7c0d('0x2f')](getAssociatedResources(_0x7c0d('0xc'),_0x553627['userProfileId'],_0x7c0d('0x2e')));_0x5aa43a['push'](getAssociatedResources(_0x7c0d('0xd'),_0x553627[_0x7c0d('0x34')],'MailQueue'));_0x5aa43a[_0x7c0d('0x2f')](getAssociatedResources('OpenchannelQueues',_0x553627[_0x7c0d('0x34')],_0x7c0d('0x31')));_0x5aa43a['push'](getAssociatedResources('WhatsappQueues',_0x553627['userProfileId'],_0x7c0d('0x37')));_0x5aa43a[_0x7c0d('0x2f')](getAssociatedResources(_0x7c0d('0x11'),_0x553627[_0x7c0d('0x34')],'User'));_0x5aa43a['push'](getAssociatedResources(_0x7c0d('0x12'),_0x553627['userProfileId'],'Trunk'));_0x5aa43a[_0x7c0d('0x2f')](getAssociatedResources('IvrCampaigns',_0x553627[_0x7c0d('0x34')],_0x7c0d('0x18')));_0x5aa43a['push'](db[_0x7c0d('0x4')][_0x7c0d('0x10')](queryAgents));break;case _0x7c0d('0x6'):_0x2997a7[_0x1c7b84](_0x7c0d('0x33'));_0x2997a7[_0x1c7b84](_0x7c0d('0x2b'));_0x5aa43a['push'](_0x553627[_0x7c0d('0x38')]({'attributes':['id',_0x7c0d('0x2')]}));_0x5aa43a['push'](_0x553627[_0x7c0d('0x39')]({'attributes':['id',_0x7c0d('0x2')]}));_0x5aa43a[_0x7c0d('0x2f')](_0x553627[_0x7c0d('0x3a')]({'attributes':['id','name']}));_0x5aa43a[_0x7c0d('0x2f')](_0x553627[_0x7c0d('0x3b')]({'attributes':['id',_0x7c0d('0x2')]}));_0x5aa43a[_0x7c0d('0x2f')](_0x553627[_0x7c0d('0x3c')]({'attributes':['id','name']}));_0x5aa43a[_0x7c0d('0x2f')](_0x553627['getOpenchannelQueues']({'attributes':['id',_0x7c0d('0x2')]}));_0x5aa43a['push'](_0x553627[_0x7c0d('0x3d')]({'attributes':['id',_0x7c0d('0x2')]}));break;}return BPromise[_0x7c0d('0x3e')](_0x5aa43a);}})[_0x7c0d('0x9')](function(_0x1d9ced){if(_0x1d9ced&&_0x1d9ced['length']){for(var _0x214303=0x0;_0x214303<_0x1d9ced['length'];_0x214303+=0x1){for(var _0x20f0ec=0x0;_0x20f0ec<_0x1d9ced[_0x214303][_0x7c0d('0x3f')];_0x20f0ec+=0x1){switch(_0x214303){case 0x0:joinOrLeaveQueues(_0x2997a7,_0x1c7b84,_0x7c0d('0x40'),_0x1d9ced[_0x214303][_0x20f0ec]);break;case 0x1:joinOrLeaveQueues(_0x2997a7,_0x1c7b84,'chat',_0x1d9ced[_0x214303][_0x20f0ec]);break;case 0x2:joinOrLeaveQueues(_0x2997a7,_0x1c7b84,_0x7c0d('0x41'),_0x1d9ced[_0x214303][_0x20f0ec]);break;case 0x3:joinOrLeaveQueues(_0x2997a7,_0x1c7b84,'sms',_0x1d9ced[_0x214303][_0x20f0ec]);break;case 0x4:joinOrLeaveQueues(_0x2997a7,_0x1c7b84,'mail',_0x1d9ced[_0x214303][_0x20f0ec]);break;case 0x5:joinOrLeaveQueues(_0x2997a7,_0x1c7b84,_0x7c0d('0x42'),_0x1d9ced[_0x214303][_0x20f0ec]);break;case 0x6:joinOrLeaveQueues(_0x2997a7,_0x1c7b84,_0x7c0d('0x43'),_0x1d9ced[_0x214303][_0x20f0ec]);break;case 0x7:if(_0x1ef191[_0x7c0d('0x5')]!=='agent')_0x2997a7[_0x1c7b84](util[_0x7c0d('0x1a')](_0x7c0d('0x44'),_0x1d9ced[_0x214303][_0x20f0ec][_0x7c0d('0x2')]));break;case 0x8:if(_0x1ef191['role']!==_0x7c0d('0x6'))_0x2997a7[_0x1c7b84](util[_0x7c0d('0x1a')](_0x7c0d('0x45'),_0x1d9ced[_0x214303][_0x20f0ec][_0x7c0d('0x2')]));break;case 0x9:if(_0x1ef191[_0x7c0d('0x5')]!=='agent')_0x2997a7[_0x1c7b84](util['format'](_0x7c0d('0x46'),_0x1d9ced[_0x214303][_0x20f0ec][_0x7c0d('0x19')],_0x1d9ced[_0x214303][_0x20f0ec]['name']));break;case 0xa:_0x2997a7[_0x1c7b84](util['format'](_0x7c0d('0x29'),_0x1d9ced[_0x214303][_0x20f0ec][_0x7c0d('0x2')]));break;}}}}})[_0x7c0d('0x9')](function(){if(_0x1c7b84==='leave'){var _0x352e7e=_[_0x7c0d('0x47')](_0x1ef191[_0x7c0d('0x20')],'id');return _0x1ef191[_0x7c0d('0x48')](_0x352e7e)[_0x7c0d('0x9')](function(){for(var _0x449841=0x0;_0x449841<_0x352e7e['length'];_0x449841+=0x1){_0x2f657e['emit'](_0x7c0d('0x49'),{'ChatInteractionId':Number(_0x352e7e[_0x449841]),'UserId':Number(_0x1ef191['id'])});}});}})[_0x7c0d('0x9')](function(){if(_0x1c7b84===_0x7c0d('0x4a')){var _0x4a5837=_[_0x7c0d('0x47')](_0x1ef191[_0x7c0d('0x22')],'id');return _0x1ef191[_0x7c0d('0x4b')](_0x4a5837)[_0x7c0d('0x9')](function(){for(var _0x4c81fb=0x0;_0x4c81fb<_0x4a5837[_0x7c0d('0x3f')];_0x4c81fb+=0x1){_0x2f657e[_0x7c0d('0x4c')](_0x7c0d('0x4d'),{'MailInteractionId':Number(_0x4a5837[_0x4c81fb]),'UserId':Number(_0x1ef191['id'])});}});}})[_0x7c0d('0x9')](function(){if(_0x1c7b84===_0x7c0d('0x4a')){var _0x5e76ec=_['map'](_0x1ef191[_0x7c0d('0x4e')],'id');return _0x1ef191[_0x7c0d('0x4f')](_0x5e76ec)[_0x7c0d('0x9')](function(){for(var _0x3f3abc=0x0;_0x3f3abc<_0x5e76ec[_0x7c0d('0x3f')];_0x3f3abc+=0x1){_0x2f657e['emit'](_0x7c0d('0x50'),{'FaxInteractionId':Number(_0x5e76ec[_0x3f3abc]),'UserId':Number(_0x1ef191['id'])});}});}})[_0x7c0d('0x9')](function(){if(_0x1c7b84===_0x7c0d('0x4a')){var _0x55efe6=_[_0x7c0d('0x47')](_0x1ef191[_0x7c0d('0x25')],'id');return _0x1ef191['removeSmsInteractions'](_0x55efe6)[_0x7c0d('0x9')](function(){for(var _0x446c20=0x0;_0x446c20<_0x55efe6[_0x7c0d('0x3f')];_0x446c20+=0x1){_0x2f657e[_0x7c0d('0x4c')](_0x7c0d('0x51'),{'SmsInteractionId':Number(_0x55efe6[_0x446c20]),'UserId':Number(_0x1ef191['id'])});}});}})['then'](function(){if(_0x1c7b84==='leave'){var _0x5bfc8d=_[_0x7c0d('0x47')](_0x1ef191['OpenchannelInteractions'],'id');return _0x1ef191[_0x7c0d('0x52')](_0x5bfc8d)[_0x7c0d('0x9')](function(){for(var _0x293344=0x0;_0x293344<_0x5bfc8d['length'];_0x293344+=0x1){_0x2f657e[_0x7c0d('0x4c')](_0x7c0d('0x53'),{'OpenchannelInteractionId':Number(_0x5bfc8d[_0x293344]),'UserId':Number(_0x1ef191['id'])});}});}})[_0x7c0d('0x9')](function(){if(_0x1c7b84===_0x7c0d('0x4a')){var _0x4bd3b4=_[_0x7c0d('0x47')](_0x1ef191[_0x7c0d('0x54')],'id');return _0x1ef191[_0x7c0d('0x55')](_0x4bd3b4)[_0x7c0d('0x9')](function(){for(var _0x557d74=0x0;_0x557d74<_0x4bd3b4[_0x7c0d('0x3f')];_0x557d74+=0x1){_0x2f657e['emit']('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x4bd3b4[_0x557d74]),'UserId':Number(_0x1ef191['id'])});}});}})[_0x7c0d('0x56')](function(_0x18f2a3){_0x2997a7[_0x7c0d('0x57')](_0x18f2a3);});}}function onDisconnect(_0x4ce477,_0x87b741){joinOrLeave(_0x4ce477,_0x7c0d('0x4a'),_0x87b741);}function onConnect(_0x4b4396){joinOrLeave(_0x4b4396,_0x7c0d('0x58'));}exports[_0x7c0d('0x59')]=function(_0x22b065){_0x22b065['on']('connection',function(_0x50a24b){_0x50a24b[_0x7c0d('0x5a')](0x0);_0x50a24b[_0x7c0d('0x5b')]=_0x50a24b[_0x7c0d('0x5c')][_0x7c0d('0x5d')][_0x7c0d('0x5e')]+':'+_0x50a24b[_0x7c0d('0x5c')][_0x7c0d('0x5d')][_0x7c0d('0x5f')];_0x50a24b['connectedAt']=new Date();_0x50a24b[_0x7c0d('0x57')]=function(_0x415216){console['log'](_0x7c0d('0x60')+_0x50a24b['nsp'][_0x7c0d('0x2')]+'['+_0x50a24b['address']+']',_0x415216);};_0x50a24b['on']('disconnect',function(){onDisconnect(_0x50a24b,_0x22b065);_0x50a24b['log'](_0x7c0d('0x61'));});onConnect(_0x50a24b);_0x50a24b[_0x7c0d('0x57')](_0x7c0d('0x62'));});};
\ No newline at end of file
+var _0xfba8=['type','ivr','UserProfileSection','findOne','then','VoiceQueues','ChatQueues','SmsQueues','MailQueues','findAll','Trunks','IvrCampaigns','UserProfileResource','map','resourceId','role','Campaign','where','format','user:%s','handshake','query','userProfileId','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:outbound','hasOwnProperty','include','push','VoiceQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','voice:inbound','ChatQueue','FaxQueues','OpenchannelQueues','WhatsappQueues','Telephones','getVoiceQueues','getChatQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','length','voice','chat','fax','whatsapp','campaign:%s:%s','removeChatInteractions','user_has_chat_interactions:remove','leave','removeMailInteractions','user_has_mail_interactions:remove','user_has_fax_interactions:remove','removeSmsInteractions','emit','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','catch','log','join','default','setMaxListeners','address','connection','remoteAddress','request','remotePort','connectedAt','SocketIO\x20','nsp','disconnect','lodash','util','bluebird','../mysqldb','./environment','name','Agents','User','agent','telephone'];(function(_0x28578d,_0xcf5cf0){var _0x524826=function(_0x4a51b7){while(--_0x4a51b7){_0x28578d['push'](_0x28578d['shift']());}};_0x524826(++_0xcf5cf0);}(_0xfba8,0x1d6));var _0x8fba=function(_0x302a8a,_0x1bbf19){_0x302a8a=_0x302a8a-0x0;var _0x234e03=_0xfba8[_0x302a8a];return _0x234e03;};'use strict';var _=require(_0x8fba('0x0'));var util=require(_0x8fba('0x1'));var BPromise=require(_0x8fba('0x2'));var db=require(_0x8fba('0x3'))['db'];var config=require(_0x8fba('0x4'));var queryQueues={'attributes':['id',_0x8fba('0x5')],'include':[{'as':_0x8fba('0x6'),'model':db[_0x8fba('0x7')],'attributes':['id',_0x8fba('0x5'),'role'],'raw':!![],'where':{'role':_0x8fba('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0x8fba('0x9')}};var queryTrunks={'raw':!![],'attributes':['id',_0x8fba('0x5')]};var queryAgents={'raw':!![],'attributes':['id',_0x8fba('0x5')],'where':{'role':_0x8fba('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x8fba('0x5'),_0x8fba('0xa')],'where':{'type':_0x8fba('0xb')}};function getAssociatedResources(_0x577834,_0xdc7b43,_0x589ec6){return db[_0x8fba('0xc')][_0x8fba('0xd')]({'where':{'name':_0x577834,'userProfileId':_0xdc7b43},'raw':!![]})[_0x8fba('0xe')](function(_0x139921){if(_0x139921){if(_0x139921['autoAssociation']){switch(_0x577834){case _0x8fba('0xf'):case _0x8fba('0x10'):case'FaxQueues':case _0x8fba('0x11'):case _0x8fba('0x12'):case'OpenchannelQueues':case'WhatsappQueues':return db[_0x589ec6][_0x8fba('0x13')](queryQueues);case'Telephones':return db[_0x589ec6][_0x8fba('0x13')](queryTelephones);case _0x8fba('0x14'):return db[_0x589ec6][_0x8fba('0x13')](queryTrunks);case _0x8fba('0x15'):return db[_0x589ec6][_0x8fba('0x13')](queryCampaigns);}}else{return db[_0x8fba('0x16')]['findAll']({'attributes':['resourceId'],'where':{'sectionId':_0x139921['id']},'raw':!![]})[_0x8fba('0xe')](function(_0xbd4229){if(_0xbd4229){var _0x2fa3ed={'where':{'id':_[_0x8fba('0x17')](_0xbd4229,_0x8fba('0x18'))},'raw':!![]};switch(_0x589ec6){case _0x8fba('0x7'):_0x2fa3ed['where'][_0x8fba('0x19')]=_0x8fba('0x9');break;case _0x8fba('0x1a'):_0x2fa3ed[_0x8fba('0x1b')][_0x8fba('0xa')]=_0x8fba('0xb');break;}return db[_0x589ec6][_0x8fba('0x13')](_0x2fa3ed);}else{return[];}});}}else{return[];}})[_0x8fba('0xe')](function(_0x5e9991){return _0x5e9991;});}function joinOrLeaveQueues(_0x2564cc,_0x1eaeb1,_0x7beb17,_0x1acc72){_0x2564cc[_0x1eaeb1](util[_0x8fba('0x1c')]('%s:queue:%s',_0x7beb17,_0x1acc72[_0x8fba('0x5')]));if(_0x1acc72[_0x8fba('0x6')]){for(var _0x532406=0x0;_0x532406<_0x1acc72[_0x8fba('0x6')]['length'];_0x532406+=0x1){_0x2564cc[_0x1eaeb1](util['format'](_0x8fba('0x1d'),_0x1acc72['Agents'][_0x532406][_0x8fba('0x5')]));}}}function joinOrLeave(_0xb37b7b,_0x393f24,_0x2f3225){var _0x52eebd;if(_0xb37b7b[_0x8fba('0x1e')][_0x8fba('0x1f')]['id']){db[_0x8fba('0x7')]['find']({'attributes':['id',_0x8fba('0x5'),'role',_0x8fba('0x20')],'where':{'id':_0xb37b7b[_0x8fba('0x1e')][_0x8fba('0x1f')]['id']},'include':[{'model':db['ChatInteraction'],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x8fba('0x21')],'as':_0x8fba('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0x8fba('0x23')],'as':_0x8fba('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0x8fba('0x25')],'as':_0x8fba('0x26'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x8fba('0x27')],'as':_0x8fba('0x28'),'attributes':['id'],'raw':!![]}]})[_0x8fba('0xe')](function(_0x20fd52){if(_0x20fd52){_0x52eebd=_0x20fd52;_0xb37b7b[_0x393f24](util[_0x8fba('0x1c')](_0x8fba('0x1d'),_0x20fd52[_0x8fba('0x5')]));var _0x17e11b=[];switch(_0x20fd52['role']){case _0x8fba('0x29'):_0xb37b7b[_0x393f24]('voice:inbound');_0xb37b7b[_0x393f24](_0x8fba('0x2a'));if(queryQueues[_0x8fba('0x2b')](_0x8fba('0x2c'))){delete queryQueues[_0x8fba('0x2c')];}_0x17e11b[_0x8fba('0x2d')](db[_0x8fba('0x2e')][_0x8fba('0x13')](queryQueues));_0x17e11b['push'](db['ChatQueue'][_0x8fba('0x13')](queryQueues));_0x17e11b[_0x8fba('0x2d')](db[_0x8fba('0x2f')][_0x8fba('0x13')](queryQueues));_0x17e11b['push'](db[_0x8fba('0x30')][_0x8fba('0x13')](queryQueues));_0x17e11b[_0x8fba('0x2d')](db[_0x8fba('0x31')][_0x8fba('0x13')](queryQueues));_0x17e11b[_0x8fba('0x2d')](db[_0x8fba('0x32')][_0x8fba('0x13')](queryQueues));_0x17e11b[_0x8fba('0x2d')](db[_0x8fba('0x33')][_0x8fba('0x13')](queryQueues));_0x17e11b[_0x8fba('0x2d')](db[_0x8fba('0x7')][_0x8fba('0x13')](queryTelephones));_0x17e11b[_0x8fba('0x2d')](db[_0x8fba('0x34')]['findAll'](queryTrunks));_0x17e11b[_0x8fba('0x2d')](db[_0x8fba('0x1a')][_0x8fba('0x13')](queryCampaigns));_0x17e11b[_0x8fba('0x2d')](db[_0x8fba('0x7')]['findAll'](queryAgents));break;case _0x8fba('0x35'):_0xb37b7b[_0x393f24](_0x8fba('0x36'));_0xb37b7b[_0x393f24](_0x8fba('0x2a'));_0x17e11b[_0x8fba('0x2d')](getAssociatedResources('VoiceQueues',_0x20fd52[_0x8fba('0x20')],'VoiceQueue'));_0x17e11b[_0x8fba('0x2d')](getAssociatedResources(_0x8fba('0x10'),_0x20fd52[_0x8fba('0x20')],_0x8fba('0x37')));_0x17e11b[_0x8fba('0x2d')](getAssociatedResources(_0x8fba('0x38'),_0x20fd52['userProfileId'],_0x8fba('0x2f')));_0x17e11b[_0x8fba('0x2d')](getAssociatedResources(_0x8fba('0x11'),_0x20fd52[_0x8fba('0x20')],_0x8fba('0x30')));_0x17e11b[_0x8fba('0x2d')](getAssociatedResources(_0x8fba('0x12'),_0x20fd52[_0x8fba('0x20')],_0x8fba('0x31')));_0x17e11b[_0x8fba('0x2d')](getAssociatedResources(_0x8fba('0x39'),_0x20fd52[_0x8fba('0x20')],_0x8fba('0x32')));_0x17e11b[_0x8fba('0x2d')](getAssociatedResources(_0x8fba('0x3a'),_0x20fd52['userProfileId'],'WhatsappQueue'));_0x17e11b[_0x8fba('0x2d')](getAssociatedResources(_0x8fba('0x3b'),_0x20fd52['userProfileId'],_0x8fba('0x7')));_0x17e11b['push'](getAssociatedResources('Trunks',_0x20fd52[_0x8fba('0x20')],_0x8fba('0x34')));_0x17e11b[_0x8fba('0x2d')](getAssociatedResources(_0x8fba('0x15'),_0x20fd52['userProfileId'],_0x8fba('0x1a')));_0x17e11b[_0x8fba('0x2d')](db[_0x8fba('0x7')][_0x8fba('0x13')](queryAgents));break;case'agent':_0xb37b7b[_0x393f24](_0x8fba('0x36'));_0xb37b7b[_0x393f24](_0x8fba('0x2a'));_0x17e11b[_0x8fba('0x2d')](_0x20fd52[_0x8fba('0x3c')]({'attributes':['id',_0x8fba('0x5')]}));_0x17e11b['push'](_0x20fd52[_0x8fba('0x3d')]({'attributes':['id',_0x8fba('0x5')]}));_0x17e11b[_0x8fba('0x2d')](_0x20fd52['getFaxQueues']({'attributes':['id',_0x8fba('0x5')]}));_0x17e11b['push'](_0x20fd52[_0x8fba('0x3e')]({'attributes':['id',_0x8fba('0x5')]}));_0x17e11b[_0x8fba('0x2d')](_0x20fd52[_0x8fba('0x3f')]({'attributes':['id',_0x8fba('0x5')]}));_0x17e11b[_0x8fba('0x2d')](_0x20fd52[_0x8fba('0x40')]({'attributes':['id',_0x8fba('0x5')]}));_0x17e11b[_0x8fba('0x2d')](_0x20fd52['getWhatsappQueues']({'attributes':['id',_0x8fba('0x5')]}));break;}return BPromise['all'](_0x17e11b);}})[_0x8fba('0xe')](function(_0x92face){if(_0x92face&&_0x92face[_0x8fba('0x41')]){for(var _0x575df2=0x0;_0x575df2<_0x92face[_0x8fba('0x41')];_0x575df2+=0x1){for(var _0x294608=0x0;_0x294608<_0x92face[_0x575df2][_0x8fba('0x41')];_0x294608+=0x1){switch(_0x575df2){case 0x0:joinOrLeaveQueues(_0xb37b7b,_0x393f24,_0x8fba('0x42'),_0x92face[_0x575df2][_0x294608]);break;case 0x1:joinOrLeaveQueues(_0xb37b7b,_0x393f24,_0x8fba('0x43'),_0x92face[_0x575df2][_0x294608]);break;case 0x2:joinOrLeaveQueues(_0xb37b7b,_0x393f24,_0x8fba('0x44'),_0x92face[_0x575df2][_0x294608]);break;case 0x3:joinOrLeaveQueues(_0xb37b7b,_0x393f24,'sms',_0x92face[_0x575df2][_0x294608]);break;case 0x4:joinOrLeaveQueues(_0xb37b7b,_0x393f24,'mail',_0x92face[_0x575df2][_0x294608]);break;case 0x5:joinOrLeaveQueues(_0xb37b7b,_0x393f24,'openchannel',_0x92face[_0x575df2][_0x294608]);break;case 0x6:joinOrLeaveQueues(_0xb37b7b,_0x393f24,_0x8fba('0x45'),_0x92face[_0x575df2][_0x294608]);break;case 0x7:if(_0x52eebd[_0x8fba('0x19')]!==_0x8fba('0x8'))_0xb37b7b[_0x393f24](util['format']('telephone:%s',_0x92face[_0x575df2][_0x294608]['name']));break;case 0x8:if(_0x52eebd[_0x8fba('0x19')]!==_0x8fba('0x8'))_0xb37b7b[_0x393f24](util[_0x8fba('0x1c')]('trunk:%s',_0x92face[_0x575df2][_0x294608][_0x8fba('0x5')]));break;case 0x9:if(_0x52eebd['role']!==_0x8fba('0x8'))_0xb37b7b[_0x393f24](util[_0x8fba('0x1c')](_0x8fba('0x46'),_0x92face[_0x575df2][_0x294608][_0x8fba('0xa')],_0x92face[_0x575df2][_0x294608][_0x8fba('0x5')]));break;case 0xa:_0xb37b7b[_0x393f24](util[_0x8fba('0x1c')](_0x8fba('0x1d'),_0x92face[_0x575df2][_0x294608][_0x8fba('0x5')]));break;}}}}})['then'](function(){if(_0x393f24==='leave'){var _0x25c6d2=_[_0x8fba('0x17')](_0x52eebd['ChatInteractions'],'id');return _0x52eebd[_0x8fba('0x47')](_0x25c6d2)['then'](function(){for(var _0x31d60d=0x0;_0x31d60d<_0x25c6d2['length'];_0x31d60d+=0x1){_0x2f3225['emit'](_0x8fba('0x48'),{'ChatInteractionId':Number(_0x25c6d2[_0x31d60d]),'UserId':Number(_0x52eebd['id'])});}});}})['then'](function(){if(_0x393f24===_0x8fba('0x49')){var _0x24201a=_[_0x8fba('0x17')](_0x52eebd['MailInteractions'],'id');return _0x52eebd[_0x8fba('0x4a')](_0x24201a)['then'](function(){for(var _0x55b608=0x0;_0x55b608<_0x24201a[_0x8fba('0x41')];_0x55b608+=0x1){_0x2f3225['emit'](_0x8fba('0x4b'),{'MailInteractionId':Number(_0x24201a[_0x55b608]),'UserId':Number(_0x52eebd['id'])});}});}})[_0x8fba('0xe')](function(){if(_0x393f24==='leave'){var _0x13a2ed=_[_0x8fba('0x17')](_0x52eebd[_0x8fba('0x24')],'id');return _0x52eebd['removeFaxInteractions'](_0x13a2ed)['then'](function(){for(var _0x343f6e=0x0;_0x343f6e<_0x13a2ed[_0x8fba('0x41')];_0x343f6e+=0x1){_0x2f3225['emit'](_0x8fba('0x4c'),{'FaxInteractionId':Number(_0x13a2ed[_0x343f6e]),'UserId':Number(_0x52eebd['id'])});}});}})[_0x8fba('0xe')](function(){if(_0x393f24===_0x8fba('0x49')){var _0x43a91d=_['map'](_0x52eebd[_0x8fba('0x26')],'id');return _0x52eebd[_0x8fba('0x4d')](_0x43a91d)[_0x8fba('0xe')](function(){for(var _0x30c044=0x0;_0x30c044<_0x43a91d[_0x8fba('0x41')];_0x30c044+=0x1){_0x2f3225[_0x8fba('0x4e')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x43a91d[_0x30c044]),'UserId':Number(_0x52eebd['id'])});}});}})['then'](function(){if(_0x393f24===_0x8fba('0x49')){var _0x34c730=_['map'](_0x52eebd['OpenchannelInteractions'],'id');return _0x52eebd[_0x8fba('0x4f')](_0x34c730)['then'](function(){for(var _0x2bd55e=0x0;_0x2bd55e<_0x34c730[_0x8fba('0x41')];_0x2bd55e+=0x1){_0x2f3225[_0x8fba('0x4e')](_0x8fba('0x50'),{'OpenchannelInteractionId':Number(_0x34c730[_0x2bd55e]),'UserId':Number(_0x52eebd['id'])});}});}})[_0x8fba('0xe')](function(){if(_0x393f24==='leave'){var _0x285873=_[_0x8fba('0x17')](_0x52eebd[_0x8fba('0x28')],'id');return _0x52eebd[_0x8fba('0x51')](_0x285873)[_0x8fba('0xe')](function(){for(var _0xa3e78c=0x0;_0xa3e78c<_0x285873[_0x8fba('0x41')];_0xa3e78c+=0x1){_0x2f3225[_0x8fba('0x4e')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x285873[_0xa3e78c]),'UserId':Number(_0x52eebd['id'])});}});}})[_0x8fba('0x52')](function(_0x43e23a){_0xb37b7b[_0x8fba('0x53')](_0x43e23a);});}}function onDisconnect(_0x2ce5ea,_0x555289){joinOrLeave(_0x2ce5ea,_0x8fba('0x49'),_0x555289);}function onConnect(_0x5d3507){joinOrLeave(_0x5d3507,_0x8fba('0x54'));}exports[_0x8fba('0x55')]=function(_0x4a38ba){_0x4a38ba['on']('connection',function(_0x37030c){_0x37030c[_0x8fba('0x56')](0x0);_0x37030c[_0x8fba('0x57')]=_0x37030c['request'][_0x8fba('0x58')][_0x8fba('0x59')]+':'+_0x37030c[_0x8fba('0x5a')][_0x8fba('0x58')][_0x8fba('0x5b')];_0x37030c[_0x8fba('0x5c')]=new Date();_0x37030c[_0x8fba('0x53')]=function(_0x4c3f58){console['log'](_0x8fba('0x5d')+_0x37030c[_0x8fba('0x5e')][_0x8fba('0x5')]+'['+_0x37030c[_0x8fba('0x57')]+']',_0x4c3f58);};_0x37030c['on'](_0x8fba('0x5f'),function(){onDisconnect(_0x37030c,_0x4a38ba);_0x37030c[_0x8fba('0x53')]('DISCONNECTED');});onConnect(_0x37030c);_0x37030c['log']('CONNECTED');});};
\ No newline at end of file
index a1f30f4..37ac3d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x306f=['info','Trigger,\x20%s','error','code','catch','get','channel','event','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','query','Sequelize','SELECT','User','find','UserId','fullname','email','interface','SIP/%s','name','agent','incomingmessage','outgoingmessage','motionChannel','QueryTypes','contact','closed','internal','length','hasOwnProperty','model','toLowerCase','util','../../mysqldb','jayson/promise','../logger','triggers','client','Chat','ChatInteraction','afterCreate','newinteraction','afterUpdate','closedinteraction','ChatMessage','newmessage','Sms','SmsInteraction','Whatsapp','WhatsappInteraction','WhatsappMessage','FaxInteraction','Fax','FaxMessage','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','EventManager','then'];(function(_0x4792c8,_0x5158a1){var _0x35edb1=function(_0x2472d3){while(--_0x2472d3){_0x4792c8['push'](_0x4792c8['shift']());}};_0x35edb1(++_0x5158a1);}(_0x306f,0x1e9));var _0xf306=function(_0x3907a3,_0x21b55e){_0x3907a3=_0x3907a3-0x0;var _0x53ea7f=_0x306f[_0x3907a3];return _0x53ea7f;};'use strict';var util=require(_0xf306('0x0'));var db=require(_0xf306('0x1'))['db'];var jayson=require(_0xf306('0x2'));var logger=require(_0xf306('0x3'))(_0xf306('0x4'));var _=require('lodash');var client=jayson[_0xf306('0x5')]['http']({'port':0x232a});var triggers=[{'channel':_0xf306('0x6'),'model':_0xf306('0x7'),'event':_0xf306('0x8'),'condition':_0xf306('0x9'),'callback':afterCreate},{'channel':_0xf306('0x6'),'model':'ChatInteraction','event':_0xf306('0xa'),'condition':_0xf306('0xb'),'callback':afterUpdate},{'channel':'Chat','model':_0xf306('0xc'),'event':'afterCreate','condition':_0xf306('0xd'),'callback':afterCreateMessage},{'channel':_0xf306('0xe'),'model':_0xf306('0xf'),'event':_0xf306('0x8'),'condition':_0xf306('0x9'),'callback':afterCreate},{'channel':_0xf306('0xe'),'model':_0xf306('0xf'),'event':_0xf306('0xa'),'condition':_0xf306('0xb'),'callback':afterUpdate},{'channel':_0xf306('0xe'),'model':'SmsMessage','event':_0xf306('0x8'),'condition':_0xf306('0xd'),'callback':afterCreateMessage},{'channel':_0xf306('0x10'),'model':_0xf306('0x11'),'event':'afterCreate','condition':_0xf306('0x9'),'callback':afterCreate},{'channel':'Whatsapp','model':'WhatsappInteraction','event':'afterUpdate','condition':_0xf306('0xb'),'callback':afterUpdate},{'channel':_0xf306('0x10'),'model':_0xf306('0x12'),'event':'afterCreate','condition':'newmessage','callback':afterCreateMessage},{'channel':'Fax','model':_0xf306('0x13'),'event':_0xf306('0x8'),'condition':_0xf306('0x9'),'callback':afterCreate},{'channel':_0xf306('0x14'),'model':'FaxInteraction','event':_0xf306('0xa'),'condition':_0xf306('0xb'),'callback':afterUpdate},{'channel':_0xf306('0x14'),'model':_0xf306('0x15'),'event':_0xf306('0x8'),'condition':_0xf306('0xd'),'callback':afterCreateMessage},{'channel':_0xf306('0x16'),'model':_0xf306('0x17'),'event':_0xf306('0x8'),'condition':_0xf306('0x9'),'callback':afterCreate},{'channel':_0xf306('0x16'),'model':_0xf306('0x17'),'event':'afterUpdate','condition':_0xf306('0xb'),'callback':afterUpdate},{'channel':_0xf306('0x16'),'model':_0xf306('0x18'),'event':_0xf306('0x8'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0xf306('0x19'),'model':_0xf306('0x1a'),'event':_0xf306('0x8'),'condition':_0xf306('0x9'),'callback':afterCreate},{'channel':'Openchannel','model':_0xf306('0x1a'),'event':_0xf306('0xa'),'condition':_0xf306('0xb'),'callback':afterUpdate},{'channel':_0xf306('0x19'),'model':_0xf306('0x1b'),'event':_0xf306('0x8'),'condition':'newmessage','callback':afterCreateMessage}];function request(_0x2a63b8){return client[_0xf306('0x1c')](_0xf306('0x1d'),_0x2a63b8)[_0xf306('0x1e')](function(_0x251820){logger[_0xf306('0x1f')](_0xf306('0x20'),_0xf306('0x1d'),_0x251820);if(_0x251820[_0xf306('0x21')]){if(_0x251820['error'][_0xf306('0x22')]===0x1f4){logger[_0xf306('0x21')](_0xf306('0x20'),'EventManager',_0x251820[_0xf306('0x21')]);}}})[_0xf306('0x23')](function(_0x5b4712){logger[_0xf306('0x21')](_0xf306('0x20'),'EventManager',_0x5b4712);});}function afterCreateMessage(_0x268655,_0x56b1f7){return function(_0x2b669b,_0x25693e){_0x2b669b=_0x2b669b[_0xf306('0x24')]({'plain':!![]});_0x2b669b[_0xf306('0x25')]=_0x268655;_0x2b669b['motionChannel']=_0x268655;_0x2b669b[_0xf306('0x26')]=_0x2b669b['direction'];var _0x466428=_0xf306('0x27')+_0x2b669b[_0xf306('0x28')];return db[_0xf306('0x29')][_0xf306('0x2a')](_0x466428,{'type':db[_0xf306('0x2b')]['QueryTypes'][_0xf306('0x2c')],'raw':!![]})[_0xf306('0x1e')](function(_0x1e7739){return _0x1e7739;})[_0xf306('0x1e')](function(_0x7c55b2){if(_0x7c55b2){_0x2b669b['contact']=_0x7c55b2[0x0];}if(_0x2b669b['UserId']){return db[_0xf306('0x2d')][_0xf306('0x2e')]({'where':{'id':_0x2b669b[_0xf306('0x2f')]},'attributes':['id','name',_0xf306('0x30'),_0xf306('0x31'),'internal'],'raw':!![]})[_0xf306('0x1e')](function(_0x18701d){_0x2b669b[_0xf306('0x32')]=util['format'](_0xf306('0x33'),_0x18701d[_0xf306('0x34')]);_0x2b669b[_0xf306('0x25')]=_0x268655;_0x2b669b[_0xf306('0x35')]=_0x18701d;return request({'event':_0xf306('0x36'),'message':_0x2b669b});})['catch'](function(_0x798460){console[_0xf306('0x21')](_0x798460);});}else{return request({'event':_0xf306('0x37'),'message':_0x2b669b});}});};}function afterCreate(_0x49ea7e,_0x579a00){return function(_0x8a6e9c,_0x1e0fe5){_0x8a6e9c=_0x8a6e9c[_0xf306('0x24')]({'plain':!![]});_0x8a6e9c[_0xf306('0x25')]=_0x49ea7e;_0x8a6e9c[_0xf306('0x38')]=_0x49ea7e;_0x8a6e9c[_0xf306('0x26')]='opened';var _0x5c8fe0=_0xf306('0x27')+_0x8a6e9c[_0xf306('0x28')];return db[_0xf306('0x29')][_0xf306('0x2a')](_0x5c8fe0,{'type':db[_0xf306('0x2b')][_0xf306('0x39')][_0xf306('0x2c')],'raw':!![]})['then'](function(_0x8a9dad){return _0x8a9dad;})[_0xf306('0x1e')](function(_0x2a51cf){if(_0x2a51cf){_0x8a6e9c[_0xf306('0x3a')]=_0x2a51cf[0x0];}return request({'event':_0x579a00,'message':_0x8a6e9c});});};}function afterUpdate(_0xc9f980,_0x35e120){return function(_0x154697,_0x5b4fe6){if(_0x154697['changed'](_0xf306('0x3b'))&&_0x154697[_0xf306('0x3b')]){_0x154697=_0x154697[_0xf306('0x24')]({'plain':!![]});_0x154697[_0xf306('0x25')]=_0xc9f980;_0x154697[_0xf306('0x38')]=_0xc9f980;_0x154697[_0xf306('0x26')]=_0xf306('0x3b');var _0x1e2384=_0xf306('0x27')+_0x154697[_0xf306('0x28')];return db[_0xf306('0x29')][_0xf306('0x2a')](_0x1e2384,{'type':db[_0xf306('0x2b')][_0xf306('0x39')][_0xf306('0x2c')],'raw':!![]})['then'](function(_0x278768){return _0x278768;})['then'](function(_0x15dbf6){if(_0x15dbf6){_0x154697[_0xf306('0x3a')]=_0x15dbf6[0x0];}if(_0x154697['UserId']){return db[_0xf306('0x2d')][_0xf306('0x2e')]({'where':{'id':_0x154697[_0xf306('0x2f')]},'attributes':['id','name',_0xf306('0x30'),_0xf306('0x31'),_0xf306('0x3c')],'raw':!![]})[_0xf306('0x1e')](function(_0x7a1518){_0x154697[_0xf306('0x32')]=util['format'](_0xf306('0x33'),_0x7a1518['name']);_0x154697['agent']=_0x7a1518;return request({'event':_0x35e120,'message':_0x154697});})[_0xf306('0x23')](function(_0x58f519){console['error'](_0x58f519);});}else{return request({'event':_0x35e120,'message':_0x154697});}});}};}exports['default']=function(){for(var _0x2b78c7=0x0;_0x2b78c7<triggers[_0xf306('0x3d')];_0x2b78c7+=0x1){if(db[_0xf306('0x3e')](triggers[_0x2b78c7][_0xf306('0x3f')])){db[triggers[_0x2b78c7]['model']]['hook'](triggers[_0x2b78c7]['event'],triggers[_0x2b78c7]['callback'](triggers[_0x2b78c7][_0xf306('0x25')][_0xf306('0x40')](),triggers[_0x2b78c7]['condition']));}}};
\ No newline at end of file
+var _0x2f83=['OpenchannelMessage','request','EventManager','info','Trigger,\x20%s','error','code','catch','channel','event','direction','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','query','SELECT','then','UserId','User','find','name','fullname','email','internal','interface','format','SIP/%s','incomingmessage','outgoingmessage','get','opened','ContactId','Sequelize','QueryTypes','contact','changed','closed','agent','default','length','hasOwnProperty','hook','callback','toLowerCase','condition','util','../logger','triggers','lodash','client','http','Chat','ChatInteraction','afterCreate','newinteraction','afterUpdate','ChatMessage','newmessage','Sms','SmsInteraction','closedinteraction','SmsMessage','Whatsapp','WhatsappMessage','Fax','FaxInteraction','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction'];(function(_0xa46b86,_0x5c1465){var _0x417360=function(_0x4800d1){while(--_0x4800d1){_0xa46b86['push'](_0xa46b86['shift']());}};_0x417360(++_0x5c1465);}(_0x2f83,0x1d0));var _0x32f8=function(_0x1bbce7,_0x581b65){_0x1bbce7=_0x1bbce7-0x0;var _0xe3a3ef=_0x2f83[_0x1bbce7];return _0xe3a3ef;};'use strict';var util=require(_0x32f8('0x0'));var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var logger=require(_0x32f8('0x1'))(_0x32f8('0x2'));var _=require(_0x32f8('0x3'));var client=jayson[_0x32f8('0x4')][_0x32f8('0x5')]({'port':0x232a});var triggers=[{'channel':_0x32f8('0x6'),'model':_0x32f8('0x7'),'event':_0x32f8('0x8'),'condition':_0x32f8('0x9'),'callback':afterCreate},{'channel':_0x32f8('0x6'),'model':_0x32f8('0x7'),'event':_0x32f8('0xa'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Chat','model':_0x32f8('0xb'),'event':_0x32f8('0x8'),'condition':_0x32f8('0xc'),'callback':afterCreateMessage},{'channel':_0x32f8('0xd'),'model':_0x32f8('0xe'),'event':_0x32f8('0x8'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x32f8('0xd'),'model':_0x32f8('0xe'),'event':_0x32f8('0xa'),'condition':_0x32f8('0xf'),'callback':afterUpdate},{'channel':'Sms','model':_0x32f8('0x10'),'event':_0x32f8('0x8'),'condition':_0x32f8('0xc'),'callback':afterCreateMessage},{'channel':'Whatsapp','model':'WhatsappInteraction','event':_0x32f8('0x8'),'condition':_0x32f8('0x9'),'callback':afterCreate},{'channel':'Whatsapp','model':'WhatsappInteraction','event':_0x32f8('0xa'),'condition':_0x32f8('0xf'),'callback':afterUpdate},{'channel':_0x32f8('0x11'),'model':_0x32f8('0x12'),'event':_0x32f8('0x8'),'condition':_0x32f8('0xc'),'callback':afterCreateMessage},{'channel':_0x32f8('0x13'),'model':_0x32f8('0x14'),'event':'afterCreate','condition':_0x32f8('0x9'),'callback':afterCreate},{'channel':_0x32f8('0x13'),'model':_0x32f8('0x14'),'event':_0x32f8('0xa'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Fax','model':'FaxMessage','event':_0x32f8('0x8'),'condition':_0x32f8('0xc'),'callback':afterCreateMessage},{'channel':_0x32f8('0x15'),'model':_0x32f8('0x16'),'event':_0x32f8('0x8'),'condition':_0x32f8('0x9'),'callback':afterCreate},{'channel':_0x32f8('0x15'),'model':_0x32f8('0x16'),'event':_0x32f8('0xa'),'condition':_0x32f8('0xf'),'callback':afterUpdate},{'channel':_0x32f8('0x15'),'model':_0x32f8('0x17'),'event':'afterCreate','condition':_0x32f8('0xc'),'callback':afterCreateMessage},{'channel':_0x32f8('0x18'),'model':_0x32f8('0x19'),'event':_0x32f8('0x8'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x32f8('0x18'),'model':_0x32f8('0x19'),'event':_0x32f8('0xa'),'condition':_0x32f8('0xf'),'callback':afterUpdate},{'channel':_0x32f8('0x18'),'model':_0x32f8('0x1a'),'event':'afterCreate','condition':_0x32f8('0xc'),'callback':afterCreateMessage}];function request(_0x376bd8){return client[_0x32f8('0x1b')](_0x32f8('0x1c'),_0x376bd8)['then'](function(_0x26f99a){logger[_0x32f8('0x1d')](_0x32f8('0x1e'),_0x32f8('0x1c'),_0x26f99a);if(_0x26f99a[_0x32f8('0x1f')]){if(_0x26f99a[_0x32f8('0x1f')][_0x32f8('0x20')]===0x1f4){logger['error'](_0x32f8('0x1e'),_0x32f8('0x1c'),_0x26f99a[_0x32f8('0x1f')]);}}})[_0x32f8('0x21')](function(_0xa5776e){logger[_0x32f8('0x1f')](_0x32f8('0x1e'),_0x32f8('0x1c'),_0xa5776e);});}function afterCreateMessage(_0x24a8d9,_0x246d78){return function(_0x1986a3,_0x3909cd){_0x1986a3=_0x1986a3['get']({'plain':!![]});_0x1986a3[_0x32f8('0x22')]=_0x24a8d9;_0x1986a3[_0x32f8('0x23')]=_0x1986a3[_0x32f8('0x24')];var _0x28b859=_0x32f8('0x25')+_0x1986a3['ContactId'];return db[_0x32f8('0x26')][_0x32f8('0x27')](_0x28b859,{'type':db['Sequelize']['QueryTypes'][_0x32f8('0x28')],'raw':!![]})[_0x32f8('0x29')](function(_0xddcbcd){return _0xddcbcd;})['then'](function(_0x4cabb){if(_0x4cabb){_0x1986a3['contact']=_0x4cabb[0x0];}if(_0x1986a3[_0x32f8('0x2a')]){return db[_0x32f8('0x2b')][_0x32f8('0x2c')]({'where':{'id':_0x1986a3[_0x32f8('0x2a')]},'attributes':['id',_0x32f8('0x2d'),_0x32f8('0x2e'),_0x32f8('0x2f'),_0x32f8('0x30')],'raw':!![]})[_0x32f8('0x29')](function(_0x3b0ee1){_0x1986a3[_0x32f8('0x31')]=util[_0x32f8('0x32')](_0x32f8('0x33'),_0x3b0ee1[_0x32f8('0x2d')]);_0x1986a3[_0x32f8('0x22')]=_0x24a8d9;_0x1986a3['agent']=_0x3b0ee1;return request({'event':_0x32f8('0x34'),'message':_0x1986a3});})[_0x32f8('0x21')](function(_0x208319){console[_0x32f8('0x1f')](_0x208319);});}else{return request({'event':_0x32f8('0x35'),'message':_0x1986a3});}});};}function afterCreate(_0x2694cf,_0x59ed03){return function(_0x2715eb,_0x5f6ecd){_0x2715eb=_0x2715eb[_0x32f8('0x36')]({'plain':!![]});_0x2715eb[_0x32f8('0x22')]=_0x2694cf;_0x2715eb[_0x32f8('0x23')]=_0x32f8('0x37');var _0x2bdf58='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2715eb[_0x32f8('0x38')];return db[_0x32f8('0x26')]['query'](_0x2bdf58,{'type':db[_0x32f8('0x39')][_0x32f8('0x3a')][_0x32f8('0x28')],'raw':!![]})[_0x32f8('0x29')](function(_0xcaa1e9){return _0xcaa1e9;})[_0x32f8('0x29')](function(_0x4014cc){if(_0x4014cc){_0x2715eb[_0x32f8('0x3b')]=_0x4014cc[0x0];}return request({'event':_0x59ed03,'message':_0x2715eb});});};}function afterUpdate(_0x57d8be,_0x1b0b3e){return function(_0x1edd15,_0x180b43){if(_0x1edd15[_0x32f8('0x3c')]('closed')&&_0x1edd15[_0x32f8('0x3d')]){_0x1edd15=_0x1edd15['get']({'plain':!![]});_0x1edd15[_0x32f8('0x22')]=_0x57d8be;_0x1edd15['event']='closed';var _0x18d8cb='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x1edd15[_0x32f8('0x38')];return db[_0x32f8('0x26')][_0x32f8('0x27')](_0x18d8cb,{'type':db[_0x32f8('0x39')]['QueryTypes'][_0x32f8('0x28')],'raw':!![]})['then'](function(_0x3f4ba6){return _0x3f4ba6;})['then'](function(_0x1c0722){if(_0x1c0722){_0x1edd15[_0x32f8('0x3b')]=_0x1c0722[0x0];}if(_0x1edd15[_0x32f8('0x2a')]){return db['User'][_0x32f8('0x2c')]({'where':{'id':_0x1edd15[_0x32f8('0x2a')]},'attributes':['id',_0x32f8('0x2d'),_0x32f8('0x2e'),_0x32f8('0x2f'),_0x32f8('0x30')],'raw':!![]})['then'](function(_0x59fdbb){_0x1edd15[_0x32f8('0x31')]=util[_0x32f8('0x32')]('SIP/%s',_0x59fdbb[_0x32f8('0x2d')]);_0x1edd15[_0x32f8('0x3e')]=_0x59fdbb;return request({'event':_0x1b0b3e,'message':_0x1edd15});})[_0x32f8('0x21')](function(_0x467e69){console[_0x32f8('0x1f')](_0x467e69);});}else{return request({'event':_0x1b0b3e,'message':_0x1edd15});}});}};}exports[_0x32f8('0x3f')]=function(){for(var _0x29ca37=0x0;_0x29ca37<triggers[_0x32f8('0x40')];_0x29ca37+=0x1){if(db[_0x32f8('0x41')](triggers[_0x29ca37]['model'])){db[triggers[_0x29ca37]['model']][_0x32f8('0x42')](triggers[_0x29ca37]['event'],triggers[_0x29ca37][_0x32f8('0x43')](triggers[_0x29ca37][_0x32f8('0x22')][_0x32f8('0x44')](),triggers[_0x29ca37][_0x32f8('0x45')]));}}};
\ No newline at end of file
index 0f2a494..81a2a2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd63d=['bluebird','./license/util','voice','mail','chat','openchannel','isValidChannel','clearBlockUser','blockedAt','updateAttributes','getLicense','role','agent','User','count','then','agents','Maximum\x20login\x20has\x20been\x20reached'];(function(_0x3ea913,_0x255df2){var _0x2b4f28=function(_0x48bb25){while(--_0x48bb25){_0x3ea913['push'](_0x3ea913['shift']());}};_0x2b4f28(++_0x255df2);}(_0xd63d,0xb4));var _0xdd63=function(_0x5f49c0,_0x27a1b4){_0x5f49c0=_0x5f49c0-0x0;var _0x5ab653=_0xd63d[_0x5f49c0];return _0x5ab653;};'use strict';var _=require('lodash');var BPromise=require(_0xdd63('0x0'));var db=require('../mysqldb')['db'];var util=require(_0xdd63('0x1'));var channels=[_0xdd63('0x2'),_0xdd63('0x3'),_0xdd63('0x4'),'fax','sms','whatsapp',_0xdd63('0x5')];exports['getChannels']=function(){return channels;};exports[_0xdd63('0x6')]=function(_0x829a2a){_0x829a2a=_0x829a2a['toLowerCase']();return _['includes'](channels,_0x829a2a);};exports[_0xdd63('0x7')]=function(_0x3cf0da,_0x3a4088,_0x412758,_0x48e900){var _0x5aac00={'loginAttempts':_0x3a4088,'blocked':_0x412758};if(!_['isUndefined'](_0x48e900)){_0x5aac00[_0xdd63('0x8')]=_0x48e900;}return _0x3cf0da[_0xdd63('0x9')](_0x5aac00);};exports[_0xdd63('0xa')]=function(_0x54dc5a){return new BPromise(function(_0x26fb9e,_0x38737a){var _0x3f41c6=0x0;if(_0x54dc5a[_0xdd63('0xb')]!==_0xdd63('0xc')){_0x26fb9e(_0x54dc5a);}db[_0xdd63('0xd')][_0xdd63('0xe')]({'where':{'role':_0xdd63('0xc'),'online':!![],'id':{'$ne':_0x54dc5a['id']}}})[_0xdd63('0xf')](function(_0x5e6261){_0x3f41c6=_0x5e6261;return util[_0xdd63('0xa')]();})[_0xdd63('0xf')](function(_0x3c2212){if(_0x3c2212&&_0x3c2212[_0xdd63('0x10')]&&_0x3f41c6>=_0x3c2212[_0xdd63('0x10')]){throw Error(_0xdd63('0x11'));}_0x26fb9e(_0x54dc5a);})['catch'](function(_0x265077){_0x38737a(_0x265077);});});};
\ No newline at end of file
+var _0x30e2=['then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','bluebird','../mysqldb','./license/util','voice','mail','chat','sms','whatsapp','openchannel','isValidChannel','toLowerCase','includes','clearBlockUser','isUndefined','blockedAt','updateAttributes','role','agent','User','count','getLicense'];(function(_0x20e8d0,_0x512baa){var _0x573fea=function(_0x159b32){while(--_0x159b32){_0x20e8d0['push'](_0x20e8d0['shift']());}};_0x573fea(++_0x512baa);}(_0x30e2,0x1be));var _0x230e=function(_0x2e6b65,_0x41bef5){_0x2e6b65=_0x2e6b65-0x0;var _0x92ff9e=_0x30e2[_0x2e6b65];return _0x92ff9e;};'use strict';var _=require(_0x230e('0x0'));var BPromise=require(_0x230e('0x1'));var db=require(_0x230e('0x2'))['db'];var util=require(_0x230e('0x3'));var channels=[_0x230e('0x4'),_0x230e('0x5'),_0x230e('0x6'),'fax',_0x230e('0x7'),_0x230e('0x8'),_0x230e('0x9')];exports['getChannels']=function(){return channels;};exports[_0x230e('0xa')]=function(_0x3f07b3){_0x3f07b3=_0x3f07b3[_0x230e('0xb')]();return _[_0x230e('0xc')](channels,_0x3f07b3);};exports[_0x230e('0xd')]=function(_0x5c2b52,_0x22e34c,_0x55f265,_0x382b6a){var _0x487fb6={'loginAttempts':_0x22e34c,'blocked':_0x55f265};if(!_[_0x230e('0xe')](_0x382b6a)){_0x487fb6[_0x230e('0xf')]=_0x382b6a;}return _0x5c2b52[_0x230e('0x10')](_0x487fb6);};exports['getLicense']=function(_0x48713a){return new BPromise(function(_0x342bdf,_0x513ef0){var _0x120435=0x0;if(_0x48713a[_0x230e('0x11')]!==_0x230e('0x12')){_0x342bdf(_0x48713a);}db[_0x230e('0x13')][_0x230e('0x14')]({'where':{'role':_0x230e('0x12'),'online':!![],'id':{'$ne':_0x48713a['id']}}})['then'](function(_0x2abb2b){_0x120435=_0x2abb2b;return util[_0x230e('0x15')]();})[_0x230e('0x16')](function(_0x49e0c8){if(_0x49e0c8&&_0x49e0c8['agents']&&_0x120435>=_0x49e0c8[_0x230e('0x17')]){throw Error(_0x230e('0x18'));}_0x342bdf(_0x48713a);})[_0x230e('0x19')](function(_0x5d8eb9){_0x513ef0(_0x5d8eb9);});});};
\ No newline at end of file
index f790cf8..d4c69a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d0e=['exports','status','render','send'];(function(_0x2375ae,_0x3f62f3){var _0x49585e=function(_0x416109){while(--_0x416109){_0x2375ae['push'](_0x2375ae['shift']());}};_0x49585e(++_0x3f62f3);}(_0x5d0e,0x78));var _0xe5d0=function(_0xf4843e,_0xa0fe51){_0xf4843e=_0xf4843e-0x0;var _0x244bb3=_0x5d0e[_0xf4843e];return _0x244bb3;};'use strict';module[_0xe5d0('0x0')][0x194]=function pageNotFound(_0x22260f,_0x5a7e63){var _0x302148='404';var _0x2e6083=0x194;var _0x2b9e91={'status':_0x2e6083};_0x5a7e63['status'](_0x2b9e91[_0xe5d0('0x1')]);_0x5a7e63[_0xe5d0('0x2')](_0x302148,{},function(_0x1f2d32,_0x56b1e4){if(_0x1f2d32){return _0x5a7e63['status'](_0x2b9e91[_0xe5d0('0x1')])['json'](_0x2b9e91);}_0x5a7e63[_0xe5d0('0x3')](_0x56b1e4);});};
\ No newline at end of file
+var _0xeb55=['json','exports','404','status','render'];(function(_0x43d0ec,_0x14d914){var _0x1288cf=function(_0x17d948){while(--_0x17d948){_0x43d0ec['push'](_0x43d0ec['shift']());}};_0x1288cf(++_0x14d914);}(_0xeb55,0x1cd));var _0x5eb5=function(_0x4088ff,_0x28d61e){_0x4088ff=_0x4088ff-0x0;var _0x536edf=_0xeb55[_0x4088ff];return _0x536edf;};'use strict';module[_0x5eb5('0x0')][0x194]=function pageNotFound(_0x45c48c,_0x7b4fcf){var _0x4c4760=_0x5eb5('0x1');var _0x54d2aa=0x194;var _0x2d416a={'status':_0x54d2aa};_0x7b4fcf[_0x5eb5('0x2')](_0x2d416a['status']);_0x7b4fcf[_0x5eb5('0x3')](_0x4c4760,{},function(_0x53634c,_0x1e5cc2){if(_0x53634c){return _0x7b4fcf[_0x5eb5('0x2')](_0x2d416a['status'])[_0x5eb5('0x4')](_0x2d416a);}_0x7b4fcf['send'](_0x1e5cc2);});};
\ 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 4b91344..0000000
+++ /dev/null
@@ -1,166 +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
-      migration.query('ALTER TABLE cm_contacts DROP FOREIGN KEY cm_contacts_ibfk_2');\r
-      migration.query('ALTER TABLE cm_contacts ADD CONSTRAINT cm_contacts_ibfk_2 FOREIGN KEY (ListId) REFERENCES cm_lists(id) ON DELETE RESTRICT ON UPDATE RESTRICT');\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 2fc3905..49dfd15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0fc=['../api/intSalesforceAccount/intSalesforceAccount.model','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','ServicenowConfiguration','ServicenowField','Dynamics365Account','Dynamics365Configuration','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','../api/intFreshsalesField/intFreshsalesField.model','../api/network/network.model','../api/chatQueueReport/chatQueueReport.model','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','../api/team/team.model','License','../api/license/license.model','Campaign','../api/campaign/campaign.model','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','MailTransferReport','../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/userProfile/userProfile.model','UserProfileSection','UserProfileResource','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','WhatsappInteraction','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','../api/teamVoiceQueue/teamVoiceQueue.model','hasOne','cascade','hasMany','Recordings','UserId','Extensions','CmHopperFinal','HopperFinals','HopperHistory','OpenchannelInteractions','ChatInteractions','SmsInteractions','FaxInteractions','MailInteractions','WhatsappInteractions','UserNotifications','SenderId','ChatGroup','Groups','chat_group_has_users','belongsToMany','CmContact','Contacts','cm_user_has_contacts','cm_user_has_lists','Team','user_has_mail_interactions','user_has_chat_interactions','user_has_fax_interactions','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueues','MailQueues','UserMailQueue','ChatQueues','FaxQueues','OpenchannelQueues','WhatsappQueues','VoicePrefixes','user_has_voice_prefixes','ChatWebsites','user_has_chat_websites','user_has_fax_accounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','user_has_sms_accounts','user_has_whatsapp_accounts','SquareProject','SquareProjects','user_has_square_projects','SpiedAgents','ChanSpyId','Applications','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperBlacks','JscriptySessions','belongsTo','TrunkId','TrunkBackup','TrunkBackupId','mandatoryDispositionPauseId','Lists','voice_queues_has_cm_lists','Teams','TeamVoiceQueue','BlackLists','voice_queues_has_cm_blacklists','ScreenRecording','Messages','mailbox','mailboxuser','QueueCalls','uniqueid','AgentReports','Contact','ContactId','MailAccountId','Dispositions','Answers','MailMessage','ListId','TemplateId','Pause','Agents','team_has_mail_queues','Account','mail_interaction_has_tags','Tags','ThroughTags','Users','MailInteractionId','Attachments','Interaction','ChatWebsiteId','ChatOfflineMessageId','MailApplication','restrict','IntervalId','TagId','MailQueueReport','Dashboard','Items','FaxAccountId','Interactions','List','Owner','fax_interaction_has_tags','FaxInteractionId','AttachmentId','team_has_fax_queues','SmsAccountId','SmsMessage','SmsInteraction','mandatoryDispositionPause','SmsQueue','sms_interaction_has_tags','SmsInteractionId','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelMessage','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','team_has_openchannel_queues','ProactiveActions','ChatApplication','OpenchannelQueueReport','Agent','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','ChatGroupId','HopperHistories','CompanyId','cm_contact_has_tags','CampaignId','OwnerId','CmHopperBlack','Condition','All','OneAll','AutomationAllId','Any','OneAny','AutomationAnyId','Actions','AutomationId','Intervals','MailApplications','ChatApplications','FaxApplications','Schedule','DefaultReportId','CustomReportId','Mohs','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','TriggerId','AnalyticFieldReport','AnalyticMetric','Fields','MetricId','SalesforceConfiguration','Configurations','AccountId','SalesforceField','Subjects','SubjectId','Descriptions','DescriptionId','FieldId','Subject','Description','Field','VariableId','DeskAccount','ZendeskConfiguration','FreshdeskConfiguration','int_freshdesk_configuration_has_tags','FreshsalesAccount','FreshsalesConfiguration','FreshsalesField','ChatQueueReport','ChatInternalMessage','FromId','ToId','SessionId','SmsQueueReport','ProjectId','user_has_teams','team_has_chat_queues','SmsQueues','team_has_whatsapp_queues','SquareProjectId','campaigns_has_cm_blacklists','FromMailAccountId','FromAccount','FromUserId','ToUserId','ToAgent','ToMailQueueId','ToQueue','ToAccount','FromChatWebsiteId','FromAgent','ToChatQueueId','ToChatWebsiteId','FaxTransferReport','ToFaxQueueId','ToFaxAccountId','FromOpenchannelAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','CustomFields','Queues','userProfileId','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','whatsapp_interaction_has_tags','WhatsappTransferReport','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','WhatsappQueueId','../config/environment','sequelize','jstz','determine','defaultsDeep','motion2','xC@LL1234','127.0.0.1','name','utf8','utf8_general_ci','sequelizeHistory','xcall','mysql','utf8mb4','database','password','options','username','User','import','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','VoiceRecording','../api/voiceRecording/voiceRecording.model','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','VoiceMailMessage','VoiceCallReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','Trunk','../api/trunk/trunk.model','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','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','../api/mailMessage/mailMessage.model','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','DashboardItem','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','SmsApplication','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','../api/openchannelMessage/openchannelMessage.model','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','../api/openchannelQueueReport/openchannelQueueReport.model','ChatInteraction','ChatMessage','../api/chatMessage/chatMessage.model','ChatOfflineMessage','ChatQueue','../api/chatQueue/chatQueue.model','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','../api/cmHopperBlack/cmHopperBlack.model','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','Automation','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','../api/condition/condition.model','Interval','../api/interval/interval.model','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','Template','../api/template/template.model','Trigger','Variable','../api/integration/integration.model','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','../api/analyticMetric/analyticMetric.model','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount'];(function(_0x406dcb,_0x215832){var _0x5d8cdf=function(_0x27dcdb){while(--_0x27dcdb){_0x406dcb['push'](_0x406dcb['shift']());}};_0x5d8cdf(++_0x215832);}(_0xa0fc,0x158));var _0xca0f=function(_0x485abd,_0x32c7c1){_0x485abd=_0x485abd-0x0;var _0x3379f1=_0xa0fc[_0x485abd];return _0x3379f1;};'use strict';var config=require(_0xca0f('0x0'));var Sequelize=require(_0xca0f('0x1'));var _=require('lodash');var jstz=require(_0xca0f('0x2'));var timezone=jstz[_0xca0f('0x3')]();config[_0xca0f('0x1')]=_[_0xca0f('0x4')](config[_0xca0f('0x1')],{'database':_0xca0f('0x5'),'username':'xcall','password':_0xca0f('0x6'),'options':{'host':_0xca0f('0x7'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone[_0xca0f('0x8')](),'define':{'charset':_0xca0f('0x9'),'collate':_0xca0f('0xa')}}});config['sequelizeHistory']=_[_0xca0f('0x4')](config[_0xca0f('0xb')],{'database':'motion2','username':_0xca0f('0xc'),'password':_0xca0f('0x6'),'options':{'host':_0xca0f('0x7'),'port':0xcea,'dialect':_0xca0f('0xd'),'dialectOptions':{'charset':_0xca0f('0xe')},'logging':![],'timezone':timezone[_0xca0f('0x8')](),'define':{'charset':_0xca0f('0x9'),'collate':_0xca0f('0xa')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xca0f('0x1')][_0xca0f('0xf')],config[_0xca0f('0x1')]['username'],config[_0xca0f('0x1')][_0xca0f('0x10')],config[_0xca0f('0x1')][_0xca0f('0x11')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory']['database'],config[_0xca0f('0xb')][_0xca0f('0x12')],config[_0xca0f('0xb')][_0xca0f('0x10')],config[_0xca0f('0xb')][_0xca0f('0x11')])};db[_0xca0f('0x13')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/user/user.model');db[_0xca0f('0x15')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x16'));db[_0xca0f('0x17')]=db[_0xca0f('0x1')]['import'](_0xca0f('0x18'));db[_0xca0f('0x19')]=db['sequelize']['import'](_0xca0f('0x1a'));db[_0xca0f('0x1b')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x1c'));db[_0xca0f('0x1d')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x1e'));db[_0xca0f('0x1f')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x20'));db['ScreenRecording']=db['sequelize']['import'](_0xca0f('0x21'));db[_0xca0f('0x22')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x23'));db[_0xca0f('0x24')]=db['sequelize'][_0xca0f('0x14')]('../api/voiceMailMessage/voiceMailMessage.model');db[_0xca0f('0x25')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/voiceCallReport/voiceCallReport.model');db['VoiceDialReport']=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x26'));db[_0xca0f('0x27')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x28'));db[_0xca0f('0x29')]=db[_0xca0f('0x1')]['import'](_0xca0f('0x2a'));db[_0xca0f('0x2b')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x2c'));db[_0xca0f('0x2d')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x2e'));db['VoiceTransferReport']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x2f'));db[_0xca0f('0x30')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x31'));db[_0xca0f('0x32')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x33'));db[_0xca0f('0x34')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/userChatQueue/userChatQueue.model');db['UserMailQueue']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x35'));db[_0xca0f('0x36')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x37'));db[_0xca0f('0x38')]=db['sequelize']['import'](_0xca0f('0x39'));db[_0xca0f('0x3a')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/userOpenchannelQueue/userOpenchannelQueue.model');db[_0xca0f('0x3b')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x3c'));db[_0xca0f('0x3d')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x3e'));db[_0xca0f('0x3f')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x40'));db[_0xca0f('0x41')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x42'));db[_0xca0f('0x43')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x44'));db[_0xca0f('0x45')]=db['sequelize']['import'](_0xca0f('0x46'));db[_0xca0f('0x47')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x48'));db['MailMessage']=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x49'));db['MailApplication']=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/mailApplication/mailApplication.model');db['MailQueueReport']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x4a'));db['Dashboard']=db[_0xca0f('0x1')]['import'](_0xca0f('0x4b'));db[_0xca0f('0x4c')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/dashboardItem/dashboardItem.model');db[_0xca0f('0x4d')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x4e'));db[_0xca0f('0x4f')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x50'));db[_0xca0f('0x51')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x52'));db[_0xca0f('0x53')]=db[_0xca0f('0x1')]['import']('../api/faxMessage/faxMessage.model');db[_0xca0f('0x54')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x55'));db[_0xca0f('0x56')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x57'));db[_0xca0f('0x58')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/smsAccount/smsAccount.model');db[_0xca0f('0x59')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/smsApplication/smsApplication.model');db['SmsInteraction']=db['sequelize'][_0xca0f('0x14')]('../api/smsInteraction/smsInteraction.model');db['SmsMessage']=db[_0xca0f('0x1')]['import']('../api/smsMessage/smsMessage.model');db['SmsQueue']=db[_0xca0f('0x1')]['import'](_0xca0f('0x5a'));db[_0xca0f('0x5b')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x5c'));db[_0xca0f('0x5d')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x5e'));db[_0xca0f('0x5f')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x60'));db['OpenchannelMessage']=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x61'));db[_0xca0f('0x62')]=db[_0xca0f('0x1')]['import'](_0xca0f('0x63'));db[_0xca0f('0x64')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x65'));db['OpenchannelQueueReport']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x66'));db['ChatApplication']=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/chatApplication/chatApplication.model');db[_0xca0f('0x67')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/chatInteraction/chatInteraction.model');db[_0xca0f('0x68')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x69'));db[_0xca0f('0x6a')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/chatOfflineMessage/chatOfflineMessage.model');db[_0xca0f('0x6b')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x6c'));db['ChatGroup']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x6d'));db[_0xca0f('0x6e')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x6f'));db[_0xca0f('0x70')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x71'));db['CmContact']=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x72'));db[_0xca0f('0x73')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x74'));db['CmHopperBlack']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x75'));db['CmHopperFinal']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x76'));db[_0xca0f('0x77')]=db[_0xca0f('0x1')]['import']('../api/cmHopperHistory/cmHopperHistory.model');db[_0xca0f('0x78')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x79'));db[_0xca0f('0x7a')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x7b'));db[_0xca0f('0x7c')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x7d'));db[_0xca0f('0x7e')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x7f'));db[_0xca0f('0x80')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x81'));db[_0xca0f('0x82')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x83'));db['Condition']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x84'));db[_0xca0f('0x85')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x86'));db['Pause']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x87'));db[_0xca0f('0x88')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x89'));db[_0xca0f('0x8a')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/voiceQueuesLog/voiceQueuesLog.model');db['Schedule']=db['sequelize'][_0xca0f('0x14')]('../api/schedule/schedule.model');db[_0xca0f('0x8b')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x8c'));db[_0xca0f('0x8d')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x8e'));db[_0xca0f('0x8f')]=db[_0xca0f('0x1')]['import'](_0xca0f('0x90'));db[_0xca0f('0x91')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/trigger/trigger.model');db[_0xca0f('0x92')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/variable/variable.model');db['Integration']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x93'));db['IntegrationReport']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x94'));db[_0xca0f('0x95')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x96'));db[_0xca0f('0x97')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x98'));db[_0xca0f('0x99')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x9a'));db['AnalyticMetric']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x9b'));db['AnalyticFieldReport']=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x9c'));db[_0xca0f('0x9d')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x9e'));db[_0xca0f('0x9f')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xa0'));db['SalesforceConfiguration']=db['sequelize'][_0xca0f('0x14')](_0xca0f('0xa1'));db['SalesforceField']=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/intSalesforceField/intSalesforceField.model');db[_0xca0f('0xa2')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xa3'));db[_0xca0f('0xa4')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0xa5'));db[_0xca0f('0xa6')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xa7'));db['DeskAccount']=db[_0xca0f('0x1')]['import'](_0xca0f('0xa8'));db[_0xca0f('0xa9')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xaa'));db[_0xca0f('0xab')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xac'));db[_0xca0f('0xad')]=db['sequelize']['import'](_0xca0f('0xae'));db[_0xca0f('0xaf')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xb0'));db[_0xca0f('0xb1')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xb2'));db[_0xca0f('0xb3')]=db[_0xca0f('0x1')]['import']('../api/intZendeskAccount/intZendeskAccount.model');db['ZendeskConfiguration']=db['sequelize'][_0xca0f('0x14')]('../api/intZendeskConfiguration/intZendeskConfiguration.model');db[_0xca0f('0xb4')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0xb5'));db[_0xca0f('0xb6')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0xb7'));db['FreshdeskConfiguration']=db['sequelize'][_0xca0f('0x14')](_0xca0f('0xb8'));db[_0xca0f('0xb9')]=db[_0xca0f('0x1')]['import'](_0xca0f('0xba'));db[_0xca0f('0xbb')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xbc'));db[_0xca0f('0xbd')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0xbe'));db[_0xca0f('0xbf')]=db[_0xca0f('0x1')]['import'](_0xca0f('0xc0'));db[_0xca0f('0xc1')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/intServicenowAccount/intServicenowAccount.model');db[_0xca0f('0xc2')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/intServicenowConfiguration/intServicenowConfiguration.model');db[_0xca0f('0xc3')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/intServicenowField/intServicenowField.model');db[_0xca0f('0xc4')]=db[_0xca0f('0x1')]['import']('../api/intDynamics365Account/intDynamics365Account.model');db[_0xca0f('0xc5')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/intDynamics365Configuration/intDynamics365Configuration.model');db[_0xca0f('0xc6')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xc7'));db['FreshsalesAccount']=db[_0xca0f('0x1')]['import']('../api/intFreshsalesAccount/intFreshsalesAccount.model');db['FreshsalesConfiguration']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xc8'));db['FreshsalesField']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xc9'));db['Integration']=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/integration/integration.model');db['Network']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xca'));db['ChatQueueReport']=db['sequelize'][_0xca0f('0x14')](_0xca0f('0xcb'));db['ChatInternalMessage']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xcc'));db[_0xca0f('0xcd')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xce'));db[_0xca0f('0xcf')]=db['sequelize']['import'](_0xca0f('0xd0'));db[_0xca0f('0xd1')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xd2'));db['SmsQueueReport']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xd3'));db[_0xca0f('0xd4')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0xd5'));db[_0xca0f('0xd6')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xd7'));db[_0xca0f('0xd8')]=db['sequelize']['import'](_0xca0f('0xd9'));db[_0xca0f('0xda')]=db[_0xca0f('0x1')]['import'](_0xca0f('0xdb'));db[_0xca0f('0xdc')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xdd'));db['SquareProject']=db['sequelize'][_0xca0f('0x14')]('../api/squareProject/squareProject.model');db[_0xca0f('0xde')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xdf'));db[_0xca0f('0xe0')]=db[_0xca0f('0x1')]['import'](_0xca0f('0xe1'));db['Team']=db['sequelize']['import'](_0xca0f('0xe2'));db[_0xca0f('0xe3')]=db[_0xca0f('0x1')]['import'](_0xca0f('0xe4'));db[_0xca0f('0xe5')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xe6'));db['Migration']=db[_0xca0f('0x1')]['import'](_0xca0f('0xe7'));db[_0xca0f('0xe8')]=db['sequelize'][_0xca0f('0x14')](_0xca0f('0xe9'));db[_0xca0f('0xea')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xeb'));db[_0xca0f('0xec')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xed'));db[_0xca0f('0xee')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xef'));db['FaxTransferReport']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xf0'));db[_0xca0f('0xf1')]=db[_0xca0f('0x1')]['import'](_0xca0f('0xf2'));db[_0xca0f('0xf3')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xf4'));db[_0xca0f('0xf5')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xf6'));db[_0xca0f('0xf7')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/voicePrefix/voicePrefix.model');db['UserProfile']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xf8'));db[_0xca0f('0xf9')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/userProfileSection/userProfileSection.model');db[_0xca0f('0xfa')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xfb'));db[_0xca0f('0xfc')]=db[_0xca0f('0x1')]['import'](_0xca0f('0xfd'));db[_0xca0f('0xfe')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0xff'));db[_0xca0f('0x100')]=db['sequelize'][_0xca0f('0x14')]('../api/whatsappApplication/whatsappApplication.model');db[_0xca0f('0x101')]=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/whatsappInteraction/whatsappInteraction.model');db[_0xca0f('0x102')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x103'));db[_0xca0f('0x104')]=db['sequelize'][_0xca0f('0x14')]('../api/whatsappQueueReport/whatsappQueueReport.model');db['WhatsappTransferReport']=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x105'));db[_0xca0f('0x106')]=db[_0xca0f('0x1')][_0xca0f('0x14')](_0xca0f('0x107'));db['CloudProvider']=db[_0xca0f('0x1')][_0xca0f('0x14')]('../api/cloudProvider/cloudProvider.model');db['TeamVoiceQueue']=db['sequelize'][_0xca0f('0x14')](_0xca0f('0x108'));db[_0xca0f('0x13')][_0xca0f('0x109')](db[_0xca0f('0x22')],{'as':_0xca0f('0x22'),'onDelete':_0xca0f('0x10a'),'foreignKey':'UserId'});db[_0xca0f('0x13')][_0xca0f('0x10b')](db[_0xca0f('0x1f')],{'as':_0xca0f('0x10c'),'foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x13')]['hasMany'](db[_0xca0f('0x30')],{'as':'VoiceQueuesRt','foreignKey':'UserId'});db[_0xca0f('0x13')]['hasMany'](db['VoiceExtension'],{'as':_0xca0f('0x10e'),'onDelete':'cascade','hooks':!![]});db[_0xca0f('0x13')][_0xca0f('0x10b')](db[_0xca0f('0x10f')],{'as':_0xca0f('0x110'),'foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x13')][_0xca0f('0x10b')](db[_0xca0f('0x77')],{'as':_0xca0f('0x111'),'foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x13')][_0xca0f('0x10b')](db[_0xca0f('0x78')],{'as':_0xca0f('0x78'),'foreignKey':'UserId'});db[_0xca0f('0x13')][_0xca0f('0x10b')](db[_0xca0f('0x5f')],{'as':_0xca0f('0x112'),'foreignKey':'UserId'});db['User'][_0xca0f('0x10b')](db[_0xca0f('0x67')],{'as':_0xca0f('0x113'),'foreignKey':'UserId'});db[_0xca0f('0x13')][_0xca0f('0x10b')](db['SmsInteraction'],{'as':_0xca0f('0x114'),'foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x13')][_0xca0f('0x10b')](db[_0xca0f('0x51')],{'as':_0xca0f('0x115'),'foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x13')][_0xca0f('0x10b')](db['MailInteraction'],{'as':_0xca0f('0x116'),'foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x13')][_0xca0f('0x10b')](db[_0xca0f('0x101')],{'as':_0xca0f('0x117'),'foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x13')][_0xca0f('0x10b')](db[_0xca0f('0xfc')],{'as':_0xca0f('0x118'),'foreignKey':_0xca0f('0x119')});db['User']['belongsTo'](db['UserProfile'],{'as':'UserProfile','foreignKey':'userProfileId'});db[_0xca0f('0x13')]['belongsToMany'](db[_0xca0f('0x11a')],{'as':_0xca0f('0x11b'),'through':_0xca0f('0x11c')});db[_0xca0f('0x13')][_0xca0f('0x11d')](db[_0xca0f('0x11e')],{'as':_0xca0f('0x11f'),'through':_0xca0f('0x120')});db['User'][_0xca0f('0x11d')](db[_0xca0f('0xf5')],{'as':'Lists','through':_0xca0f('0x121')});db[_0xca0f('0x13')][_0xca0f('0x11d')](db[_0xca0f('0x122')],{'through':'user_has_teams'});db[_0xca0f('0x13')][_0xca0f('0x11d')](db[_0xca0f('0x47')],{'as':_0xca0f('0x116'),'through':_0xca0f('0x123')});db[_0xca0f('0x13')][_0xca0f('0x11d')](db[_0xca0f('0x67')],{'as':_0xca0f('0x113'),'through':_0xca0f('0x124')});db[_0xca0f('0x13')][_0xca0f('0x11d')](db['FaxInteraction'],{'as':_0xca0f('0x115'),'through':_0xca0f('0x125')});db[_0xca0f('0x13')][_0xca0f('0x11d')](db['SmsInteraction'],{'as':'SmsInteractions','through':_0xca0f('0x126')});db[_0xca0f('0x13')]['belongsToMany'](db[_0xca0f('0x5f')],{'as':_0xca0f('0x112'),'through':_0xca0f('0x127')});db['User'][_0xca0f('0x11d')](db[_0xca0f('0x101')],{'as':_0xca0f('0x117'),'through':_0xca0f('0x128')});db[_0xca0f('0x13')]['belongsToMany'](db[_0xca0f('0x1d')],{'as':_0xca0f('0x129'),'through':_0xca0f('0x32'),'required':![]});db['User'][_0xca0f('0x11d')](db[_0xca0f('0x43')],{'as':_0xca0f('0x12a'),'through':_0xca0f('0x12b'),'required':![]});db[_0xca0f('0x13')]['belongsToMany'](db[_0xca0f('0x6b')],{'as':_0xca0f('0x12c'),'through':'UserChatQueue','required':![],'hooks':!![]});db[_0xca0f('0x13')][_0xca0f('0x11d')](db[_0xca0f('0x54')],{'as':_0xca0f('0x12d'),'through':_0xca0f('0x36'),'required':![]});db[_0xca0f('0x13')][_0xca0f('0x11d')](db['SmsQueue'],{'as':'SmsQueues','through':'UserSmsQueue','required':![]});db[_0xca0f('0x13')][_0xca0f('0x11d')](db['OpenchannelQueue'],{'as':_0xca0f('0x12e'),'through':_0xca0f('0x3a'),'required':![]});db['User'][_0xca0f('0x11d')](db[_0xca0f('0x106')],{'as':_0xca0f('0x12f'),'through':_0xca0f('0x3b'),'required':![]});db[_0xca0f('0x13')]['belongsToMany'](db[_0xca0f('0xf5')],{'through':_0xca0f('0x121')});db[_0xca0f('0x13')][_0xca0f('0x11d')](db['VoicePrefix'],{'as':_0xca0f('0x130'),'through':_0xca0f('0x131'),'required':![]});db['User'][_0xca0f('0x11d')](db[_0xca0f('0x64')],{'as':_0xca0f('0x132'),'through':_0xca0f('0x133')});db[_0xca0f('0x13')][_0xca0f('0x11d')](db[_0xca0f('0x4d')],{'as':'FaxAccounts','through':_0xca0f('0x134')});db['User'][_0xca0f('0x11d')](db[_0xca0f('0x41')],{'as':'MailAccounts','through':_0xca0f('0x135')});db[_0xca0f('0x13')][_0xca0f('0x11d')](db['OpenchannelAccount'],{'as':_0xca0f('0x136'),'through':_0xca0f('0x137')});db[_0xca0f('0x13')][_0xca0f('0x11d')](db['SmsAccount'],{'as':'SmsAccounts','through':_0xca0f('0x138')});db[_0xca0f('0x13')][_0xca0f('0x11d')](db[_0xca0f('0xfe')],{'as':'WhatsappAccounts','through':_0xca0f('0x139')});db[_0xca0f('0x13')][_0xca0f('0x11d')](db[_0xca0f('0x13a')],{'as':_0xca0f('0x13b'),'through':_0xca0f('0x13c')});db[_0xca0f('0x15')][_0xca0f('0x10b')](db['VoiceExtension'],{'as':_0xca0f('0x13d'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x13e')});db[_0xca0f('0x17')][_0xca0f('0x10b')](db[_0xca0f('0x19')],{'onDelete':_0xca0f('0x10a')});db[_0xca0f('0x19')][_0xca0f('0x10b')](db[_0xca0f('0x19')],{'as':_0xca0f('0x13f'),'onDelete':_0xca0f('0x10a')});db[_0xca0f('0x1b')][_0xca0f('0x11d')](db[_0xca0f('0x8b')],{'as':_0xca0f('0x140'),'through':_0xca0f('0x141')});db[_0xca0f('0x1d')][_0xca0f('0x10b')](db[_0xca0f('0x30')],{'as':_0xca0f('0x142'),'foreignKey':_0xca0f('0x143')});db['VoiceQueue'][_0xca0f('0x10b')](db['CmHopper'],{'as':_0xca0f('0x144'),'foreignKey':_0xca0f('0x143')});db['VoiceQueue'][_0xca0f('0x10b')](db[_0xca0f('0x10f')],{'as':_0xca0f('0x110'),'foreignKey':_0xca0f('0x143')});db[_0xca0f('0x1d')][_0xca0f('0x10b')](db['CmHopperHistory'],{'as':'HopperHistories','foreignKey':'VoiceQueueId'});db[_0xca0f('0x1d')][_0xca0f('0x10b')](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':'VoiceQueueId'});db[_0xca0f('0x1d')][_0xca0f('0x10b')](db['CmHopperBlack'],{'as':_0xca0f('0x145'),'foreignKey':'VoiceQueueId'});db[_0xca0f('0x1d')][_0xca0f('0x10b')](db[_0xca0f('0xd1')],{'as':_0xca0f('0x146'),'foreignKey':_0xca0f('0x143')});db['VoiceQueue'][_0xca0f('0x147')](db[_0xca0f('0x2d')],{'as':_0xca0f('0x2d'),'foreignKey':_0xca0f('0x148')});db[_0xca0f('0x1d')][_0xca0f('0x147')](db[_0xca0f('0x2d')],{'as':_0xca0f('0x149'),'foreignKey':_0xca0f('0x14a')});db[_0xca0f('0x1d')][_0xca0f('0x147')](db[_0xca0f('0x85')],{'as':'Interval','foreignKey':'IntervalId'});db[_0xca0f('0x1d')][_0xca0f('0x147')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0xca0f('0x14b')});db[_0xca0f('0x1d')][_0xca0f('0x11d')](db[_0xca0f('0xf5')],{'as':_0xca0f('0x14c'),'through':_0xca0f('0x14d')});db[_0xca0f('0x1d')][_0xca0f('0x11d')](db['User'],{'as':'Agents','through':_0xca0f('0x32')});db[_0xca0f('0x1d')][_0xca0f('0x11d')](db[_0xca0f('0x122')],{'as':_0xca0f('0x14e'),'through':_0xca0f('0x14f')});db[_0xca0f('0x1d')][_0xca0f('0x11d')](db[_0xca0f('0xf5')],{'as':_0xca0f('0x150'),'through':_0xca0f('0x151')});db[_0xca0f('0x1f')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'as':'User','foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x152')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'as':_0xca0f('0x13'),'foreignKey':_0xca0f('0x10d')});db['VoiceMail'][_0xca0f('0x10b')](db[_0xca0f('0x24')],{'as':_0xca0f('0x153'),'onDelete':_0xca0f('0x10a'),'foreignKey':'mailboxuser','sourceKey':_0xca0f('0x154')});db['VoiceMailMessage'][_0xca0f('0x147')](db[_0xca0f('0x22')],{'foreignKey':_0xca0f('0x155'),'targetKey':_0xca0f('0x154')});db[_0xca0f('0x25')][_0xca0f('0x10b')](db[_0xca0f('0x29')],{'as':_0xca0f('0x156'),'foreignKey':_0xca0f('0x157'),'constraints':![]});db[_0xca0f('0x25')]['hasMany'](db['VoiceAgentReport'],{'as':_0xca0f('0x158'),'foreignKey':_0xca0f('0x157'),'constraints':![]});db[_0xca0f('0x25')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'as':_0xca0f('0x13'),'foreignKey':'UserId'});db[_0xca0f('0x25')][_0xca0f('0x147')](db[_0xca0f('0x11e')],{'as':_0xca0f('0x159'),'foreignKey':_0xca0f('0x15a')});db[_0xca0f('0x3d')]['belongsTo'](db[_0xca0f('0x41')],{'as':_0xca0f('0x41'),'foreignKey':'MailAccountId'});db[_0xca0f('0x3f')][_0xca0f('0x147')](db[_0xca0f('0x41')],{'as':_0xca0f('0x41'),'foreignKey':_0xca0f('0x15b')});db[_0xca0f('0x41')]['hasOne'](db[_0xca0f('0x3d')],{'as':'Imap','onDelete':_0xca0f('0x10a')});db[_0xca0f('0x41')][_0xca0f('0x109')](db[_0xca0f('0x3f')],{'as':'Smtp','onDelete':_0xca0f('0x10a')});db[_0xca0f('0x41')][_0xca0f('0x10b')](db['Disposition'],{'as':_0xca0f('0x15c'),'foreignKey':_0xca0f('0x15b'),'onDelete':_0xca0f('0x10a')});db['MailAccount']['hasMany'](db['CannedAnswer'],{'as':_0xca0f('0x15d'),'foreignKey':_0xca0f('0x15b')});db[_0xca0f('0x41')][_0xca0f('0x10b')](db[_0xca0f('0x15e')],{'as':_0xca0f('0x153'),'foreignKey':_0xca0f('0x15b')});db[_0xca0f('0x41')][_0xca0f('0x10b')](db[_0xca0f('0x47')],{'as':'Interactions'});db['MailAccount'][_0xca0f('0x10b')](db['MailApplication'],{'as':_0xca0f('0x13f')});db['MailAccount'][_0xca0f('0x147')](db[_0xca0f('0xf5')],{'as':'List','foreignKey':_0xca0f('0x15f')});db[_0xca0f('0x41')][_0xca0f('0x147')](db[_0xca0f('0x8f')],{'as':_0xca0f('0x8f'),'foreignKey':_0xca0f('0x160')});db[_0xca0f('0x41')]['belongsTo'](db[_0xca0f('0x161')],{'as':'mandatoryDispositionPause','foreignKey':_0xca0f('0x14b')});db[_0xca0f('0x41')][_0xca0f('0x11d')](db[_0xca0f('0x13')],{'as':_0xca0f('0x162'),'through':_0xca0f('0x135')});db[_0xca0f('0x43')][_0xca0f('0x11d')](db[_0xca0f('0x13')],{'as':_0xca0f('0x162'),'through':_0xca0f('0x12b')});db[_0xca0f('0x43')][_0xca0f('0x11d')](db[_0xca0f('0x122')],{'through':_0xca0f('0x163'),'as':_0xca0f('0x14e')});db[_0xca0f('0x47')][_0xca0f('0x10b')](db[_0xca0f('0x15e')],{'as':_0xca0f('0x153'),'onDelete':_0xca0f('0x10a'),'foreignKey':'MailInteractionId'});db[_0xca0f('0x47')][_0xca0f('0x147')](db[_0xca0f('0x41')],{'as':_0xca0f('0x164'),'foreignKey':_0xca0f('0x15b')});db[_0xca0f('0x47')][_0xca0f('0x147')](db['CmContact'],{'as':'Contact','foreignKey':_0xca0f('0x15a')});db[_0xca0f('0x47')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'as':'Owner','foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x47')]['belongsToMany'](db[_0xca0f('0x8d')],{'through':_0xca0f('0x165'),'as':_0xca0f('0x166')});db['MailInteraction']['belongsToMany'](db[_0xca0f('0x8d')],{'through':_0xca0f('0x165'),'as':_0xca0f('0x167')});db[_0xca0f('0x47')][_0xca0f('0x11d')](db[_0xca0f('0x13')],{'as':_0xca0f('0x168'),'through':_0xca0f('0x123'),'foreignKey':_0xca0f('0x169')});db[_0xca0f('0x15e')][_0xca0f('0x10b')](db[_0xca0f('0xe8')],{'as':_0xca0f('0x16a'),'onDelete':'cascade'});db[_0xca0f('0x15e')]['belongsTo'](db['User'],{'as':_0xca0f('0x13')});db['MailMessage'][_0xca0f('0x147')](db['CmContact'],{'onDelete':'cascade','as':_0xca0f('0x159')});db[_0xca0f('0x15e')][_0xca0f('0x147')](db[_0xca0f('0x47')],{'as':_0xca0f('0x16b'),'foreignKey':_0xca0f('0x169')});db['MailMessage'][_0xca0f('0x147')](db[_0xca0f('0x41')],{'as':_0xca0f('0x164'),'foreignKey':_0xca0f('0x15b')});db['MailMessage'][_0xca0f('0x147')](db['ChatWebsite'],{'as':_0xca0f('0x64'),'foreignKey':_0xca0f('0x16c')});db[_0xca0f('0x15e')]['belongsTo'](db['ChatOfflineMessage'],{'as':_0xca0f('0x6a'),'foreignKey':_0xca0f('0x16d')});db[_0xca0f('0x16e')][_0xca0f('0x147')](db['User'],{'onDelete':_0xca0f('0x16f')});db[_0xca0f('0x16e')]['belongsTo'](db[_0xca0f('0x43')],{'onDelete':'restrict'});db[_0xca0f('0x16e')]['belongsTo'](db[_0xca0f('0x41')],{'onDelete':'restrict'});db[_0xca0f('0x16e')]['belongsTo'](db[_0xca0f('0x85')],{'onDelete':_0xca0f('0x16f'),'foreignKey':_0xca0f('0x170')});db[_0xca0f('0x16e')]['belongsTo'](db[_0xca0f('0x8d')],{'onDelete':_0xca0f('0x16f'),'foreignKey':_0xca0f('0x171')});db[_0xca0f('0x172')][_0xca0f('0x147')](db['MailAccount'],{});db[_0xca0f('0x172')]['belongsTo'](db[_0xca0f('0xf5')],{'as':'List','foreignKey':'ListId'});db[_0xca0f('0x172')][_0xca0f('0x147')](db[_0xca0f('0x11e')],{'as':_0xca0f('0x159'),'foreignKey':_0xca0f('0x15a')});db[_0xca0f('0x172')][_0xca0f('0x147')](db[_0xca0f('0x47')],{});db[_0xca0f('0x172')][_0xca0f('0x147')](db['MailMessage'],{});db[_0xca0f('0x172')]['belongsTo'](db['User'],{});db[_0xca0f('0x172')]['belongsTo'](db[_0xca0f('0x43')],{});db[_0xca0f('0x173')][_0xca0f('0x10b')](db[_0xca0f('0x4c')],{'as':_0xca0f('0x174'),'onDelete':_0xca0f('0x10a')});db[_0xca0f('0x4d')][_0xca0f('0x10b')](db['Disposition'],{'as':_0xca0f('0x15c'),'foreignKey':_0xca0f('0x175'),'onDelete':'cascade'});db[_0xca0f('0x4d')][_0xca0f('0x10b')](db[_0xca0f('0x80')],{'as':_0xca0f('0x15d'),'foreignKey':_0xca0f('0x175')});db[_0xca0f('0x4d')][_0xca0f('0x10b')](db[_0xca0f('0x51')],{'as':_0xca0f('0x176')});db[_0xca0f('0x4d')][_0xca0f('0x10b')](db[_0xca0f('0x4f')],{'as':_0xca0f('0x13f')});db[_0xca0f('0x4d')][_0xca0f('0x10b')](db[_0xca0f('0x19')],{'as':'Exntensions','onDelete':_0xca0f('0x10a')});db[_0xca0f('0x4d')][_0xca0f('0x10b')](db['FaxMessage'],{'as':_0xca0f('0x153')});db[_0xca0f('0x4d')]['belongsTo'](db[_0xca0f('0x2d')],{'as':'Trunk'});db[_0xca0f('0x4d')][_0xca0f('0x147')](db[_0xca0f('0xf5')],{'as':_0xca0f('0x177'),'foreignKey':_0xca0f('0x15f')});db[_0xca0f('0x4d')][_0xca0f('0x147')](db[_0xca0f('0x161')],{'as':'mandatoryDispositionPause','foreignKey':_0xca0f('0x14b')});db[_0xca0f('0x4d')]['belongsToMany'](db['User'],{'as':'Agents','through':_0xca0f('0x134')});db[_0xca0f('0x4f')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'onDelete':_0xca0f('0x16f')});db[_0xca0f('0x4f')][_0xca0f('0x147')](db['FaxQueue'],{'onDelete':_0xca0f('0x16f')});db[_0xca0f('0x4f')][_0xca0f('0x147')](db[_0xca0f('0x4d')],{'onDelete':_0xca0f('0x16f')});db[_0xca0f('0x4f')][_0xca0f('0x147')](db[_0xca0f('0x8d')],{'onDelete':'restrict','foreignKey':_0xca0f('0x171')});db['FaxInteraction'][_0xca0f('0x10b')](db[_0xca0f('0x53')],{'as':_0xca0f('0x153'),'onDelete':_0xca0f('0x10a'),'foreignKey':'FaxInteractionId'});db[_0xca0f('0x51')][_0xca0f('0x147')](db[_0xca0f('0x4d')],{'as':_0xca0f('0x164'),'foreignKey':_0xca0f('0x175')});db[_0xca0f('0x51')][_0xca0f('0x147')](db['CmContact'],{'as':_0xca0f('0x159'),'foreignKey':_0xca0f('0x15a')});db[_0xca0f('0x51')]['belongsTo'](db[_0xca0f('0x13')],{'as':_0xca0f('0x178'),'foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x51')][_0xca0f('0x11d')](db[_0xca0f('0x8d')],{'through':_0xca0f('0x179'),'as':_0xca0f('0x166')});db[_0xca0f('0x51')]['belongsToMany'](db[_0xca0f('0x8d')],{'through':_0xca0f('0x179'),'as':_0xca0f('0x167')});db[_0xca0f('0x51')]['belongsToMany'](db[_0xca0f('0x13')],{'as':'Users','through':_0xca0f('0x125'),'foreignKey':_0xca0f('0x17a')});db[_0xca0f('0x53')]['belongsTo'](db[_0xca0f('0x13')],{'onDelete':_0xca0f('0x10a'),'as':_0xca0f('0x13')});db[_0xca0f('0x53')][_0xca0f('0x147')](db[_0xca0f('0x51')],{'as':'Interaction','foreignKey':_0xca0f('0x17a')});db[_0xca0f('0x53')][_0xca0f('0x147')](db[_0xca0f('0x11e')],{'onDelete':'cascade','as':_0xca0f('0x159')});db[_0xca0f('0x53')][_0xca0f('0x147')](db['Attachment'],{'as':'Attachment','foreignKey':_0xca0f('0x17b')});db[_0xca0f('0x53')]['belongsTo'](db[_0xca0f('0x4d')],{'as':_0xca0f('0x164'),'foreignKey':_0xca0f('0x175')});db[_0xca0f('0x54')][_0xca0f('0x11d')](db[_0xca0f('0x13')],{'as':_0xca0f('0x162'),'through':_0xca0f('0x36')});db[_0xca0f('0x54')][_0xca0f('0x11d')](db[_0xca0f('0x122')],{'through':_0xca0f('0x17c'),'as':_0xca0f('0x14e')});db[_0xca0f('0x56')]['belongsTo'](db['FaxAccount'],{});db[_0xca0f('0x56')][_0xca0f('0x147')](db['CmList'],{'as':'List','foreignKey':_0xca0f('0x15f')});db[_0xca0f('0x56')]['belongsTo'](db[_0xca0f('0x11e')],{'as':_0xca0f('0x159'),'foreignKey':_0xca0f('0x15a')});db[_0xca0f('0x56')][_0xca0f('0x147')](db[_0xca0f('0x51')],{});db[_0xca0f('0x56')][_0xca0f('0x147')](db[_0xca0f('0x53')],{});db[_0xca0f('0x56')][_0xca0f('0x147')](db[_0xca0f('0x13')],{});db[_0xca0f('0x56')][_0xca0f('0x147')](db[_0xca0f('0x54')],{});db[_0xca0f('0x58')][_0xca0f('0x10b')](db[_0xca0f('0x82')],{'as':'Dispositions','foreignKey':_0xca0f('0x17d'),'onDelete':'cascade'});db[_0xca0f('0x58')][_0xca0f('0x10b')](db['CannedAnswer'],{'as':_0xca0f('0x15d'),'foreignKey':'SmsAccountId'});db[_0xca0f('0x58')]['hasMany'](db[_0xca0f('0x17e')],{'as':_0xca0f('0x153'),'foreignKey':_0xca0f('0x17d')});db[_0xca0f('0x58')][_0xca0f('0x10b')](db[_0xca0f('0x17f')],{'as':_0xca0f('0x176')});db[_0xca0f('0x58')][_0xca0f('0x10b')](db['SmsApplication'],{'as':_0xca0f('0x13f')});db[_0xca0f('0x58')][_0xca0f('0x147')](db[_0xca0f('0xf5')],{'as':_0xca0f('0x177'),'foreignKey':_0xca0f('0x15f')});db[_0xca0f('0x58')][_0xca0f('0x147')](db[_0xca0f('0x161')],{'as':_0xca0f('0x180'),'foreignKey':'mandatoryDispositionPauseId'});db[_0xca0f('0x58')][_0xca0f('0x11d')](db['User'],{'as':_0xca0f('0x162'),'through':_0xca0f('0x138')});db[_0xca0f('0x59')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'onDelete':_0xca0f('0x16f')});db[_0xca0f('0x59')][_0xca0f('0x147')](db[_0xca0f('0x181')],{'onDelete':_0xca0f('0x16f')});db[_0xca0f('0x59')][_0xca0f('0x147')](db[_0xca0f('0x58')],{'onDelete':'restrict'});db[_0xca0f('0x59')][_0xca0f('0x147')](db[_0xca0f('0x85')],{'onDelete':_0xca0f('0x16f'),'foreignKey':'IntervalId'});db[_0xca0f('0x59')]['belongsTo'](db[_0xca0f('0x8d')],{'onDelete':_0xca0f('0x16f'),'foreignKey':_0xca0f('0x171')});db[_0xca0f('0x17f')][_0xca0f('0x10b')](db[_0xca0f('0x17e')],{'as':_0xca0f('0x153'),'onDelete':_0xca0f('0x10a'),'foreignKey':'SmsInteractionId'});db[_0xca0f('0x17f')][_0xca0f('0x147')](db[_0xca0f('0x58')],{'as':_0xca0f('0x164'),'foreignKey':'SmsAccountId'});db[_0xca0f('0x17f')][_0xca0f('0x147')](db[_0xca0f('0x11e')],{'as':_0xca0f('0x159'),'foreignKey':_0xca0f('0x15a')});db['SmsInteraction'][_0xca0f('0x147')](db[_0xca0f('0x13')],{'as':'Owner','foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x17f')][_0xca0f('0x11d')](db['Tag'],{'through':_0xca0f('0x182'),'as':_0xca0f('0x166')});db[_0xca0f('0x17f')][_0xca0f('0x11d')](db[_0xca0f('0x8d')],{'through':_0xca0f('0x182'),'as':_0xca0f('0x167')});db[_0xca0f('0x17f')][_0xca0f('0x11d')](db[_0xca0f('0x13')],{'as':'Users','through':_0xca0f('0x126'),'foreignKey':'SmsInteractionId'});db[_0xca0f('0x17e')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'as':_0xca0f('0x13')});db[_0xca0f('0x17e')][_0xca0f('0x147')](db[_0xca0f('0x11e')],{'onDelete':_0xca0f('0x10a'),'as':_0xca0f('0x159')});db[_0xca0f('0x17e')][_0xca0f('0x147')](db['SmsInteraction'],{'onDelete':_0xca0f('0x10a'),'as':_0xca0f('0x16b'),'foreignKey':_0xca0f('0x183')});db['SmsMessage'][_0xca0f('0x147')](db[_0xca0f('0x58')],{'as':'Account','foreignKey':_0xca0f('0x17d')});db[_0xca0f('0x181')][_0xca0f('0x11d')](db['User'],{'as':'Agents','through':_0xca0f('0x38'),'foreignKey':_0xca0f('0x184')});db['SmsQueue']['belongsToMany'](db[_0xca0f('0x122')],{'through':_0xca0f('0x185'),'as':'Teams'});db[_0xca0f('0x5b')][_0xca0f('0x10b')](db[_0xca0f('0x82')],{'as':_0xca0f('0x15c'),'foreignKey':_0xca0f('0x186'),'onDelete':_0xca0f('0x10a')});db['OpenchannelAccount'][_0xca0f('0x10b')](db[_0xca0f('0x80')],{'as':_0xca0f('0x15d'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0xca0f('0x10b')](db[_0xca0f('0x5f')],{'as':'Interactions','foreignKey':'OpenchannelAccountId'});db[_0xca0f('0x5b')][_0xca0f('0x10b')](db[_0xca0f('0x187')],{'as':_0xca0f('0x153'),'foreignKey':_0xca0f('0x186')});db[_0xca0f('0x5b')][_0xca0f('0x10b')](db['OpenchannelApplication'],{'as':_0xca0f('0x13f'),'foreignKey':_0xca0f('0x186')});db[_0xca0f('0x5b')][_0xca0f('0x147')](db['CmList'],{'as':_0xca0f('0x177'),'foreignKey':_0xca0f('0x15f')});db['OpenchannelAccount'][_0xca0f('0x147')](db[_0xca0f('0x161')],{'as':_0xca0f('0x180'),'foreignKey':'mandatoryDispositionPauseId'});db[_0xca0f('0x5b')][_0xca0f('0x11d')](db[_0xca0f('0x13')],{'as':'Agents','through':'user_has_openchannel_accounts'});db[_0xca0f('0x5d')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'onDelete':'restrict'});db[_0xca0f('0x5d')][_0xca0f('0x147')](db[_0xca0f('0x62')],{'onDelete':'restrict','foreignKey':_0xca0f('0x188')});db[_0xca0f('0x5d')]['belongsTo'](db[_0xca0f('0x5b')],{'onDelete':_0xca0f('0x16f'),'foreignKey':_0xca0f('0x186')});db[_0xca0f('0x5d')][_0xca0f('0x147')](db[_0xca0f('0x85')],{'onDelete':_0xca0f('0x16f'),'foreignKey':_0xca0f('0x170')});db[_0xca0f('0x5d')][_0xca0f('0x147')](db[_0xca0f('0x8d')],{'onDelete':_0xca0f('0x16f'),'foreignKey':'TagId'});db['OpenchannelInteraction'][_0xca0f('0x10b')](db[_0xca0f('0x187')],{'as':_0xca0f('0x153'),'onDelete':'cascade','foreignKey':_0xca0f('0x189')});db[_0xca0f('0x5f')][_0xca0f('0x147')](db[_0xca0f('0x5b')],{'as':'Account','foreignKey':'OpenchannelAccountId'});db[_0xca0f('0x5f')][_0xca0f('0x147')](db['CmContact'],{'as':_0xca0f('0x159'),'foreignKey':'ContactId'});db[_0xca0f('0x5f')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'as':_0xca0f('0x178'),'foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x5f')][_0xca0f('0x11d')](db[_0xca0f('0x8d')],{'through':_0xca0f('0x18a'),'as':_0xca0f('0x166')});db[_0xca0f('0x5f')][_0xca0f('0x11d')](db[_0xca0f('0x8d')],{'through':_0xca0f('0x18a'),'as':'ThroughTags'});db[_0xca0f('0x5f')][_0xca0f('0x11d')](db[_0xca0f('0x13')],{'as':'Users','through':_0xca0f('0x127'),'foreignKey':_0xca0f('0x189')});db[_0xca0f('0x187')]['belongsTo'](db['User'],{'onDelete':_0xca0f('0x10a'),'as':_0xca0f('0x13')});db[_0xca0f('0x187')][_0xca0f('0x147')](db[_0xca0f('0x11e')],{'onDelete':_0xca0f('0x10a'),'as':_0xca0f('0x159')});db[_0xca0f('0x187')][_0xca0f('0x147')](db[_0xca0f('0x5f')],{'onDelete':_0xca0f('0x10a'),'as':_0xca0f('0x16b'),'foreignKey':_0xca0f('0x189')});db[_0xca0f('0x187')]['belongsTo'](db[_0xca0f('0xe8')],{'as':_0xca0f('0xe8'),'foreignKey':_0xca0f('0x17b')});db[_0xca0f('0x187')][_0xca0f('0x147')](db['OpenchannelAccount'],{'as':_0xca0f('0x164'),'foreignKey':_0xca0f('0x186')});db['OpenchannelQueue'][_0xca0f('0x11d')](db[_0xca0f('0x13')],{'as':_0xca0f('0x162'),'through':_0xca0f('0x3a'),'foreignKey':'OpenchannelQueueId'});db[_0xca0f('0x62')][_0xca0f('0x11d')](db[_0xca0f('0x122')],{'through':_0xca0f('0x18b'),'as':_0xca0f('0x14e')});db['ChatWebsite'][_0xca0f('0x10b')](db[_0xca0f('0x82')],{'as':'Dispositions','foreignKey':'ChatWebsiteId','onDelete':_0xca0f('0x10a')});db['ChatWebsite'][_0xca0f('0x10b')](db['CannedAnswer'],{'as':'Answers','foreignKey':_0xca0f('0x16c')});db[_0xca0f('0x64')]['hasMany'](db[_0xca0f('0x6e')],{'as':_0xca0f('0x18c')});db[_0xca0f('0x64')][_0xca0f('0x10b')](db[_0xca0f('0x67')],{'as':'Interactions'});db[_0xca0f('0x64')][_0xca0f('0x10b')](db[_0xca0f('0x18d')],{'as':'Applications'});db[_0xca0f('0x64')][_0xca0f('0x10b')](db['ChatMessage'],{'as':_0xca0f('0x153')});db[_0xca0f('0x64')][_0xca0f('0x147')](db[_0xca0f('0xf5')],{'as':_0xca0f('0x177'),'foreignKey':_0xca0f('0x15f')});db[_0xca0f('0x64')][_0xca0f('0x147')](db[_0xca0f('0x85')],{'as':'Interval','foreignKey':_0xca0f('0x170')});db[_0xca0f('0x64')][_0xca0f('0x147')](db['MailAccount'],{'as':_0xca0f('0x41'),'foreignKey':_0xca0f('0x15b')});db['ChatWebsite'][_0xca0f('0x147')](db[_0xca0f('0x161')],{'as':'mandatoryDispositionPause','foreignKey':_0xca0f('0x14b')});db[_0xca0f('0x64')]['belongsToMany'](db['User'],{'as':_0xca0f('0x162'),'through':_0xca0f('0x133')});db[_0xca0f('0x18e')][_0xca0f('0x147')](db['OpenchannelAccount'],{});db[_0xca0f('0x18e')][_0xca0f('0x147')](db[_0xca0f('0xf5')],{'as':_0xca0f('0x177'),'foreignKey':_0xca0f('0x15f')});db[_0xca0f('0x18e')][_0xca0f('0x147')](db[_0xca0f('0x11e')],{'as':_0xca0f('0x159'),'foreignKey':_0xca0f('0x15a')});db[_0xca0f('0x18e')][_0xca0f('0x147')](db[_0xca0f('0x5f')],{});db[_0xca0f('0x18e')][_0xca0f('0x147')](db[_0xca0f('0x187')],{});db[_0xca0f('0x18e')][_0xca0f('0x147')](db[_0xca0f('0x13')],{});db[_0xca0f('0x18e')]['belongsTo'](db[_0xca0f('0x62')],{});db['ChatApplication'][_0xca0f('0x147')](db[_0xca0f('0x13')],{'as':_0xca0f('0x18f'),'foreignKey':_0xca0f('0x10d'),'onDelete':_0xca0f('0x16f')});db[_0xca0f('0x18d')]['belongsTo'](db[_0xca0f('0x6b')],{'as':_0xca0f('0x190'),'foreignKey':_0xca0f('0x191'),'onDelete':_0xca0f('0x16f')});db[_0xca0f('0x18d')]['belongsTo'](db[_0xca0f('0x64')],{'as':_0xca0f('0x192'),'foreignKey':_0xca0f('0x16c'),'onDelete':'restrict'});db['ChatApplication'][_0xca0f('0x147')](db[_0xca0f('0x8d')],{'onDelete':_0xca0f('0x16f'),'foreignKey':_0xca0f('0x171')});db[_0xca0f('0x67')][_0xca0f('0x10b')](db[_0xca0f('0x68')],{'as':_0xca0f('0x153'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x193')});db[_0xca0f('0x67')][_0xca0f('0x147')](db['ChatWebsite'],{'as':_0xca0f('0x164'),'foreignKey':_0xca0f('0x16c')});db[_0xca0f('0x67')][_0xca0f('0x147')](db['CmContact'],{'as':_0xca0f('0x159'),'foreignKey':_0xca0f('0x15a')});db[_0xca0f('0x67')][_0xca0f('0x147')](db['User'],{'as':_0xca0f('0x178'),'foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x67')][_0xca0f('0x11d')](db['Tag'],{'through':_0xca0f('0x194'),'as':_0xca0f('0x166')});db['ChatInteraction'][_0xca0f('0x11d')](db['Tag'],{'through':'chat_interaction_has_tags','as':_0xca0f('0x167')});db[_0xca0f('0x67')]['belongsToMany'](db[_0xca0f('0x13')],{'as':'Users','through':_0xca0f('0x124'),'foreignKey':_0xca0f('0x193')});db[_0xca0f('0x68')][_0xca0f('0x147')](db['User'],{'onDelete':_0xca0f('0x10a'),'as':_0xca0f('0x13')});db[_0xca0f('0x68')][_0xca0f('0x147')](db[_0xca0f('0x11e')],{'onDelete':_0xca0f('0x10a'),'as':'Contact','foreignKey':_0xca0f('0x15a')});db['ChatMessage'][_0xca0f('0x147')](db['ChatInteraction'],{'onDelete':_0xca0f('0x10a'),'as':_0xca0f('0x16b'),'foreignKey':_0xca0f('0x193')});db[_0xca0f('0x68')]['belongsTo'](db['Attachment'],{'as':_0xca0f('0xe8'),'foreignKey':'AttachmentId'});db[_0xca0f('0x68')][_0xca0f('0x147')](db['ChatWebsite'],{'as':_0xca0f('0x164'),'foreignKey':_0xca0f('0x16c')});db[_0xca0f('0x6a')][_0xca0f('0x10b')](db[_0xca0f('0xe8')],{'as':_0xca0f('0x16a'),'foreignKey':_0xca0f('0x16d'),'onDelete':'cascade','hooks':!![]});db[_0xca0f('0x6a')]['belongsTo'](db[_0xca0f('0x11e')],{'onDelete':_0xca0f('0x10a'),'as':_0xca0f('0x159'),'foreignKey':_0xca0f('0x15a')});db[_0xca0f('0x6a')][_0xca0f('0x147')](db[_0xca0f('0x64')],{'as':_0xca0f('0x164'),'foreignKey':'ChatWebsiteId'});db[_0xca0f('0x6b')][_0xca0f('0x11d')](db[_0xca0f('0x13')],{'as':_0xca0f('0x162'),'through':_0xca0f('0x34'),'hooks':!![]});db[_0xca0f('0x6b')][_0xca0f('0x11d')](db[_0xca0f('0x122')],{'through':'team_has_chat_queues','as':_0xca0f('0x14e')});db[_0xca0f('0x11a')]['hasMany'](db['ChatInternalMessage'],{'as':'Messages','foreignKey':_0xca0f('0x195'),'onDelete':_0xca0f('0x10a')});db['ChatGroup'][_0xca0f('0x11d')](db['User'],{'as':_0xca0f('0x142'),'through':'chat_group_has_users'});db[_0xca0f('0x6e')]['belongsTo'](db['ChatWebsite'],{'as':_0xca0f('0x192'),'foreignKey':_0xca0f('0x16c')});db[_0xca0f('0x70')][_0xca0f('0x10b')](db['CmContact'],{'as':_0xca0f('0x11f'),'foreignKey':'CompanyId'});db[_0xca0f('0x11e')]['hasMany'](db[_0xca0f('0x73')],{'as':'Hoppers','foreignKey':'ContactId'});db[_0xca0f('0x11e')]['hasMany'](db[_0xca0f('0x10f')],{'as':_0xca0f('0x110'),'foreignKey':_0xca0f('0x15a')});db[_0xca0f('0x11e')]['hasMany'](db['CmHopperHistory'],{'as':_0xca0f('0x196'),'foreignKey':_0xca0f('0x15a')});db[_0xca0f('0x11e')][_0xca0f('0x10b')](db[_0xca0f('0x78')],{'as':_0xca0f('0x78'),'foreignKey':_0xca0f('0x15a')});db['CmContact'][_0xca0f('0x10b')](db[_0xca0f('0xd1')],{'as':_0xca0f('0x146'),'foreignKey':'ContactId'});db[_0xca0f('0x11e')][_0xca0f('0x10b')](db['OpenchannelInteraction'],{'as':_0xca0f('0x112'),'foreignKey':_0xca0f('0x15a'),'onDelete':'restrict'});db[_0xca0f('0x11e')]['hasMany'](db[_0xca0f('0x67')],{'as':_0xca0f('0x113'),'foreignKey':'ContactId','onDelete':'restrict'});db['CmContact'][_0xca0f('0x10b')](db['SmsInteraction'],{'as':'SmsInteractions','foreignKey':_0xca0f('0x15a'),'onDelete':_0xca0f('0x16f')});db[_0xca0f('0x11e')]['hasMany'](db[_0xca0f('0x51')],{'as':_0xca0f('0x115'),'foreignKey':_0xca0f('0x15a'),'onDelete':_0xca0f('0x16f')});db[_0xca0f('0x11e')][_0xca0f('0x10b')](db[_0xca0f('0x47')],{'as':_0xca0f('0x116'),'foreignKey':_0xca0f('0x15a'),'onDelete':_0xca0f('0x16f')});db[_0xca0f('0x11e')]['belongsTo'](db[_0xca0f('0x70')],{'as':'Company','foreignKey':_0xca0f('0x197')});db[_0xca0f('0x11e')][_0xca0f('0x147')](db[_0xca0f('0xf5')],{'as':_0xca0f('0x177'),'foreignKey':_0xca0f('0x15f'),'onDelete':_0xca0f('0x16f')});db[_0xca0f('0x11e')]['belongsToMany'](db[_0xca0f('0x13')],{'as':_0xca0f('0x168'),'through':_0xca0f('0x120')});db[_0xca0f('0x11e')][_0xca0f('0x11d')](db[_0xca0f('0x8d')],{'as':_0xca0f('0x166'),'through':_0xca0f('0x198')});db[_0xca0f('0x11e')]['belongsToMany'](db[_0xca0f('0x8d')],{'through':_0xca0f('0x198'),'as':_0xca0f('0x167')});db[_0xca0f('0x73')]['belongsTo'](db[_0xca0f('0x11e')],{'as':'Contact','foreignKey':_0xca0f('0x15a'),'onDelete':_0xca0f('0x10a')});db[_0xca0f('0x73')][_0xca0f('0x147')](db['CmList'],{'as':_0xca0f('0x177'),'foreignKey':'ListId','onDelete':_0xca0f('0x10a')});db[_0xca0f('0x73')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'as':_0xca0f('0x18f'),'foreignKey':_0xca0f('0x10d')});db['CmHopper'][_0xca0f('0x147')](db[_0xca0f('0x1d')],{'as':_0xca0f('0x190'),'foreignKey':'VoiceQueueId','onDelete':_0xca0f('0x10a')});db[_0xca0f('0x73')]['belongsTo'](db[_0xca0f('0xe5')],{'as':_0xca0f('0xe5'),'foreignKey':_0xca0f('0x199'),'onDelete':_0xca0f('0x10a')});db[_0xca0f('0x73')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'as':_0xca0f('0x178'),'foreignKey':_0xca0f('0x19a')});db[_0xca0f('0x19b')]['belongsTo'](db['CmContact'],{'as':_0xca0f('0x159'),'foreignKey':_0xca0f('0x15a'),'onDelete':'cascade'});db['CmHopperBlack'][_0xca0f('0x147')](db[_0xca0f('0xf5')],{'as':'List','foreignKey':_0xca0f('0x15f'),'onDelete':_0xca0f('0x10a')});db[_0xca0f('0x19b')][_0xca0f('0x147')](db[_0xca0f('0x1d')],{'as':'Queue','foreignKey':_0xca0f('0x143'),'onDelete':_0xca0f('0x10a')});db['CmHopperBlack'][_0xca0f('0x147')](db[_0xca0f('0xe5')],{'as':_0xca0f('0xe5'),'foreignKey':_0xca0f('0x199'),'onDelete':'cascade'});db['Automation'][_0xca0f('0x10b')](db[_0xca0f('0x19c')],{'as':{'plural':_0xca0f('0x19d'),'singular':_0xca0f('0x19e')},'foreignKey':_0xca0f('0x19f'),'onDelete':_0xca0f('0x10a'),'hooks':!![]});db[_0xca0f('0x7e')][_0xca0f('0x10b')](db['Condition'],{'as':{'plural':_0xca0f('0x1a0'),'singular':_0xca0f('0x1a1')},'foreignKey':_0xca0f('0x1a2'),'onDelete':_0xca0f('0x10a'),'hooks':!![]});db[_0xca0f('0x7e')][_0xca0f('0x10b')](db[_0xca0f('0x7c')],{'as':_0xca0f('0x1a3'),'foreignKey':_0xca0f('0x1a4'),'onDelete':_0xca0f('0x10a'),'hooks':!![]});db[_0xca0f('0x82')][_0xca0f('0x10b')](db[_0xca0f('0x82')],{'as':_0xca0f('0x15c'),'foreignKey':'ParentId','onDelete':_0xca0f('0x10a')});db['Interval'][_0xca0f('0x10b')](db['Interval'],{'as':_0xca0f('0x1a5'),'foreignKey':'IntervalId','onDelete':_0xca0f('0x10a'),'hooks':!![],'required':![]});db[_0xca0f('0x85')][_0xca0f('0x10b')](db[_0xca0f('0x19')],{'as':_0xca0f('0x10e'),'foreignKey':'IntervalId','onDelete':_0xca0f('0x16f')});db[_0xca0f('0x85')][_0xca0f('0x10b')](db['MailApplication'],{'as':_0xca0f('0x1a6'),'foreignKey':'IntervalId'});db[_0xca0f('0x85')][_0xca0f('0x10b')](db[_0xca0f('0x18d')],{'as':_0xca0f('0x1a7'),'foreignKey':_0xca0f('0x170')});db[_0xca0f('0x85')][_0xca0f('0x10b')](db[_0xca0f('0x4f')],{'as':_0xca0f('0x1a8'),'foreignKey':_0xca0f('0x170')});db[_0xca0f('0x85')][_0xca0f('0x10b')](db[_0xca0f('0x59')],{'as':'SmsApplications','foreignKey':_0xca0f('0x170')});db['Schedule'][_0xca0f('0x147')](db[_0xca0f('0x41')],{});db[_0xca0f('0x1a9')][_0xca0f('0x147')](db[_0xca0f('0x97')],{'foreignKey':_0xca0f('0x1aa')});db[_0xca0f('0x1a9')][_0xca0f('0x147')](db[_0xca0f('0x95')],{'foreignKey':_0xca0f('0x1ab')});db['Sound'][_0xca0f('0x11d')](db[_0xca0f('0x1b')],{'as':_0xca0f('0x1ac'),'through':_0xca0f('0x141'),'onDelete':'restrict'});db[_0xca0f('0x8d')]['belongsToMany'](db[_0xca0f('0x11e')],{'through':_0xca0f('0x198')});db['Tag'][_0xca0f('0x11d')](db[_0xca0f('0x67')],{'through':_0xca0f('0x194')});db['Tag'][_0xca0f('0x11d')](db[_0xca0f('0x47')],{'through':_0xca0f('0x165')});db[_0xca0f('0x8d')][_0xca0f('0x11d')](db[_0xca0f('0x17f')],{'through':_0xca0f('0x182')});db[_0xca0f('0x8d')][_0xca0f('0x11d')](db[_0xca0f('0x51')],{'through':_0xca0f('0x179')});db[_0xca0f('0x8d')]['belongsToMany'](db[_0xca0f('0x5f')],{'through':'openchannel_interaction_has_tags'});db['Tag']['belongsToMany'](db[_0xca0f('0x101')],{'through':'whatsapp_interaction_has_tags'});db[_0xca0f('0x91')]['hasMany'](db[_0xca0f('0x19c')],{'as':{'plural':'AllConditions','singular':'AllCondition'},'foreignKey':_0xca0f('0x1ad'),'onDelete':_0xca0f('0x10a'),'hooks':!![]});db['Trigger'][_0xca0f('0x10b')](db[_0xca0f('0x19c')],{'as':{'plural':_0xca0f('0x1ae'),'singular':_0xca0f('0x1af')},'foreignKey':_0xca0f('0x1b0'),'onDelete':_0xca0f('0x10a'),'hooks':!![]});db[_0xca0f('0x91')][_0xca0f('0x10b')](db[_0xca0f('0x7c')],{'as':_0xca0f('0x1a3'),'foreignKey':_0xca0f('0x1b1'),'onDelete':_0xca0f('0x10a'),'hooks':!![]});db[_0xca0f('0x95')]['hasMany'](db['AnalyticFieldReport'],{'as':'Fields','onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1ab'),'hooks':!![]});db[_0xca0f('0x97')]['hasMany'](db[_0xca0f('0x1b2')],{'as':'Fields','onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1aa')});db[_0xca0f('0x1b3')][_0xca0f('0x10b')](db['AnalyticFieldReport'],{'as':_0xca0f('0x1b4'),'onDelete':_0xca0f('0x10a'),'foreignKey':'MetricId'});db[_0xca0f('0x1b2')][_0xca0f('0x147')](db[_0xca0f('0x1b3')],{'foreignKey':_0xca0f('0x1b5')});db['SalesforceAccount'][_0xca0f('0x10b')](db[_0xca0f('0x1b6')],{'as':_0xca0f('0x1b7'),'onDelete':'cascade','foreignKey':_0xca0f('0x1b8')});db[_0xca0f('0x1b6')]['hasMany'](db[_0xca0f('0x1b9')],{'as':_0xca0f('0x1ba'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1bb')});db['SalesforceConfiguration'][_0xca0f('0x10b')](db[_0xca0f('0x1b9')],{'as':_0xca0f('0x1bc'),'onDelete':'cascade','foreignKey':_0xca0f('0x1bd')});db[_0xca0f('0x1b6')]['hasMany'](db[_0xca0f('0x1b9')],{'as':_0xca0f('0x1b4'),'onDelete':'cascade','foreignKey':_0xca0f('0x1be')});db[_0xca0f('0x1b6')][_0xca0f('0x147')](db[_0xca0f('0x9f')],{'as':_0xca0f('0x164'),'foreignKey':'AccountId'});db['SalesforceField'][_0xca0f('0x10b')](db[_0xca0f('0x1b9')],{'as':_0xca0f('0x1bf'),'foreignKey':'SubjectId'});db[_0xca0f('0x1b9')][_0xca0f('0x10b')](db[_0xca0f('0x1b9')],{'as':_0xca0f('0x1c0'),'foreignKey':_0xca0f('0x1bd')});db[_0xca0f('0x1b9')]['hasMany'](db[_0xca0f('0x1b9')],{'as':_0xca0f('0x1c1'),'foreignKey':'FieldId'});db[_0xca0f('0x1b9')][_0xca0f('0x147')](db['Variable'],{'as':'Variable','foreignKey':'VariableId'});db[_0xca0f('0xa2')][_0xca0f('0x10b')](db['SugarcrmConfiguration'],{'as':_0xca0f('0x1b7'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1b8')});db[_0xca0f('0xa4')]['hasMany'](db['SugarcrmField'],{'as':_0xca0f('0x1ba'),'onDelete':'cascade','foreignKey':'SubjectId'});db[_0xca0f('0xa4')][_0xca0f('0x10b')](db[_0xca0f('0xa6')],{'as':_0xca0f('0x1bc'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1bd')});db[_0xca0f('0xa4')][_0xca0f('0x10b')](db[_0xca0f('0xa6')],{'as':'Fields','onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1be')});db['SugarcrmConfiguration'][_0xca0f('0x147')](db[_0xca0f('0xa2')],{'as':'Account','foreignKey':_0xca0f('0x1b8')});db[_0xca0f('0xa6')][_0xca0f('0x10b')](db[_0xca0f('0xa6')],{'as':_0xca0f('0x1bf'),'foreignKey':_0xca0f('0x1bb')});db['SugarcrmField'][_0xca0f('0x10b')](db[_0xca0f('0xa6')],{'as':_0xca0f('0x1c0'),'foreignKey':_0xca0f('0x1bd')});db[_0xca0f('0xa6')]['hasMany'](db['SugarcrmField'],{'as':_0xca0f('0x1c1'),'foreignKey':_0xca0f('0x1be')});db[_0xca0f('0xa6')][_0xca0f('0x147')](db['Variable'],{'as':_0xca0f('0x92'),'foreignKey':_0xca0f('0x1c2')});db[_0xca0f('0x1c3')]['hasMany'](db['DeskConfiguration'],{'as':_0xca0f('0x1b7'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1b8')});db[_0xca0f('0xa9')][_0xca0f('0x10b')](db['DeskField'],{'as':_0xca0f('0x1ba'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1bb')});db[_0xca0f('0xa9')][_0xca0f('0x10b')](db[_0xca0f('0xab')],{'as':_0xca0f('0x1bc'),'onDelete':'cascade','foreignKey':_0xca0f('0x1bd')});db[_0xca0f('0xa9')]['hasMany'](db[_0xca0f('0xab')],{'as':_0xca0f('0x1b4'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1be')});db[_0xca0f('0xa9')]['belongsTo'](db[_0xca0f('0x1c3')],{'as':'Account','foreignKey':_0xca0f('0x1b8')});db[_0xca0f('0xa9')][_0xca0f('0x11d')](db[_0xca0f('0x8d')],{'through':'int_desk_configuration_has_tags'});db[_0xca0f('0xab')][_0xca0f('0x10b')](db[_0xca0f('0xab')],{'as':_0xca0f('0x1bf'),'foreignKey':_0xca0f('0x1bb')});db[_0xca0f('0xab')][_0xca0f('0x10b')](db[_0xca0f('0xab')],{'as':_0xca0f('0x1c0'),'foreignKey':_0xca0f('0x1bd')});db['DeskField'][_0xca0f('0x10b')](db[_0xca0f('0xab')],{'as':_0xca0f('0x1c1'),'foreignKey':_0xca0f('0x1be')});db[_0xca0f('0xab')][_0xca0f('0x147')](db['Variable'],{'as':_0xca0f('0x92'),'foreignKey':_0xca0f('0x1c2')});db[_0xca0f('0xad')]['hasMany'](db['ZohoConfiguration'],{'as':_0xca0f('0x1b7'),'onDelete':'cascade','foreignKey':'AccountId'});db[_0xca0f('0xaf')]['hasMany'](db[_0xca0f('0xb1')],{'as':_0xca0f('0x1ba'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1bb')});db[_0xca0f('0xaf')][_0xca0f('0x10b')](db[_0xca0f('0xb1')],{'as':_0xca0f('0x1bc'),'onDelete':'cascade','foreignKey':_0xca0f('0x1bd')});db['ZohoConfiguration'][_0xca0f('0x10b')](db[_0xca0f('0xb1')],{'as':_0xca0f('0x1b4'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1be')});db[_0xca0f('0xaf')]['belongsTo'](db[_0xca0f('0xad')],{'as':_0xca0f('0x164'),'foreignKey':_0xca0f('0x1b8')});db[_0xca0f('0xb1')]['hasMany'](db[_0xca0f('0xb1')],{'as':'Subject','foreignKey':_0xca0f('0x1bb')});db[_0xca0f('0xb1')][_0xca0f('0x10b')](db[_0xca0f('0xb1')],{'as':_0xca0f('0x1c0'),'foreignKey':_0xca0f('0x1bd')});db[_0xca0f('0xb1')][_0xca0f('0x10b')](db[_0xca0f('0xb1')],{'as':'Field','foreignKey':_0xca0f('0x1be')});db['ZohoField'][_0xca0f('0x147')](db[_0xca0f('0x92')],{'as':'Variable','foreignKey':_0xca0f('0x1c2')});db[_0xca0f('0xb3')][_0xca0f('0x10b')](db[_0xca0f('0x1c4')],{'as':_0xca0f('0x1b7'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1b8')});db[_0xca0f('0x1c4')][_0xca0f('0x10b')](db[_0xca0f('0xb4')],{'as':_0xca0f('0x1ba'),'foreignKey':'SubjectId'});db[_0xca0f('0x1c4')][_0xca0f('0x10b')](db['ZendeskField'],{'as':_0xca0f('0x1bc'),'foreignKey':_0xca0f('0x1bd')});db[_0xca0f('0x1c4')][_0xca0f('0x10b')](db[_0xca0f('0xb4')],{'as':'Fields','foreignKey':_0xca0f('0x1be')});db[_0xca0f('0x1c4')][_0xca0f('0x147')](db[_0xca0f('0xb3')],{'as':_0xca0f('0x164'),'foreignKey':_0xca0f('0x1b8')});db[_0xca0f('0x1c4')]['belongsToMany'](db['Tag'],{'through':'int_zendesk_configuration_has_tags'});db[_0xca0f('0xb4')][_0xca0f('0x10b')](db[_0xca0f('0xb4')],{'as':'Subject','foreignKey':_0xca0f('0x1bb')});db['ZendeskField']['hasMany'](db['ZendeskField'],{'as':_0xca0f('0x1c0'),'foreignKey':_0xca0f('0x1bd')});db[_0xca0f('0xb4')][_0xca0f('0x10b')](db[_0xca0f('0xb4')],{'as':_0xca0f('0x1c1'),'foreignKey':'FieldId'});db[_0xca0f('0xb4')][_0xca0f('0x147')](db['Variable'],{'as':_0xca0f('0x92'),'foreignKey':'VariableId'});db['FreshdeskAccount'][_0xca0f('0x10b')](db['FreshdeskConfiguration'],{'as':'Configurations','onDelete':'cascade','foreignKey':_0xca0f('0x1b8')});db[_0xca0f('0x1c5')][_0xca0f('0x10b')](db[_0xca0f('0xb9')],{'as':'Subjects','onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1bb')});db[_0xca0f('0x1c5')][_0xca0f('0x10b')](db['FreshdeskField'],{'as':_0xca0f('0x1bc'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1bd')});db[_0xca0f('0x1c5')]['hasMany'](db[_0xca0f('0xb9')],{'as':'Fields','onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1be')});db['FreshdeskConfiguration'][_0xca0f('0x147')](db[_0xca0f('0xb6')],{'as':_0xca0f('0x164'),'foreignKey':_0xca0f('0x1b8')});db[_0xca0f('0x1c5')]['belongsToMany'](db[_0xca0f('0x8d')],{'through':_0xca0f('0x1c6')});db[_0xca0f('0xb9')][_0xca0f('0x10b')](db[_0xca0f('0xb9')],{'as':'Subject','foreignKey':_0xca0f('0x1bb')});db[_0xca0f('0xb9')]['hasMany'](db[_0xca0f('0xb9')],{'as':_0xca0f('0x1c0'),'foreignKey':'DescriptionId'});db[_0xca0f('0xb9')][_0xca0f('0x10b')](db[_0xca0f('0xb9')],{'as':_0xca0f('0x1c1'),'foreignKey':'FieldId'});db['FreshdeskField']['belongsTo'](db[_0xca0f('0x92')],{'as':'Variable','foreignKey':_0xca0f('0x1c2')});db[_0xca0f('0xbb')][_0xca0f('0x10b')](db[_0xca0f('0xbd')],{'as':_0xca0f('0x1b7'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1b8')});db[_0xca0f('0xbd')][_0xca0f('0x10b')](db[_0xca0f('0xbf')],{'as':_0xca0f('0x1ba'),'foreignKey':_0xca0f('0x1bb')});db[_0xca0f('0xbd')][_0xca0f('0x10b')](db[_0xca0f('0xbf')],{'as':_0xca0f('0x1bc'),'foreignKey':_0xca0f('0x1bd')});db[_0xca0f('0xbd')][_0xca0f('0x10b')](db[_0xca0f('0xbf')],{'as':_0xca0f('0x1b4'),'foreignKey':_0xca0f('0x1be')});db[_0xca0f('0xbd')][_0xca0f('0x147')](db[_0xca0f('0xbb')],{'as':'Account','foreignKey':'AccountId'});db[_0xca0f('0xbf')][_0xca0f('0x10b')](db['VtigerField'],{'as':_0xca0f('0x1bf'),'foreignKey':_0xca0f('0x1bb')});db[_0xca0f('0xbf')]['hasMany'](db[_0xca0f('0xbf')],{'as':_0xca0f('0x1c0'),'foreignKey':_0xca0f('0x1bd')});db[_0xca0f('0xbf')][_0xca0f('0x10b')](db[_0xca0f('0xbf')],{'as':_0xca0f('0x1c1'),'foreignKey':_0xca0f('0x1be')});db[_0xca0f('0xbf')][_0xca0f('0x147')](db['Variable'],{'as':_0xca0f('0x92'),'foreignKey':'VariableId'});db[_0xca0f('0xc1')]['hasMany'](db['ServicenowConfiguration'],{'as':'Configurations','onDelete':_0xca0f('0x10a'),'foreignKey':'AccountId'});db[_0xca0f('0xc2')][_0xca0f('0x10b')](db['ServicenowField'],{'as':_0xca0f('0x1ba'),'foreignKey':_0xca0f('0x1bb')});db['ServicenowConfiguration']['hasMany'](db[_0xca0f('0xc3')],{'as':_0xca0f('0x1bc'),'foreignKey':_0xca0f('0x1bd')});db[_0xca0f('0xc2')][_0xca0f('0x10b')](db[_0xca0f('0xc3')],{'as':_0xca0f('0x1b4'),'foreignKey':_0xca0f('0x1be')});db[_0xca0f('0xc2')][_0xca0f('0x147')](db[_0xca0f('0xc1')],{'as':_0xca0f('0x164'),'foreignKey':_0xca0f('0x1b8')});db[_0xca0f('0xc3')][_0xca0f('0x10b')](db[_0xca0f('0xc3')],{'as':'Subject','foreignKey':_0xca0f('0x1bb')});db['ServicenowField'][_0xca0f('0x10b')](db[_0xca0f('0xc3')],{'as':'Description','foreignKey':'DescriptionId'});db['ServicenowField'][_0xca0f('0x10b')](db[_0xca0f('0xc3')],{'as':_0xca0f('0x1c1'),'foreignKey':_0xca0f('0x1be')});db[_0xca0f('0xc3')][_0xca0f('0x147')](db[_0xca0f('0x92')],{'as':_0xca0f('0x92'),'foreignKey':_0xca0f('0x1c2')});db[_0xca0f('0xc4')][_0xca0f('0x10b')](db[_0xca0f('0xc5')],{'as':_0xca0f('0x1b7'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1b8')});db[_0xca0f('0xc5')][_0xca0f('0x10b')](db[_0xca0f('0xc6')],{'as':_0xca0f('0x1ba'),'onDelete':'cascade','foreignKey':_0xca0f('0x1bb')});db['Dynamics365Configuration'][_0xca0f('0x10b')](db['Dynamics365Field'],{'as':_0xca0f('0x1bc'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1bd')});db['Dynamics365Configuration'][_0xca0f('0x10b')](db[_0xca0f('0xc6')],{'as':_0xca0f('0x1b4'),'onDelete':'cascade','foreignKey':_0xca0f('0x1be')});db[_0xca0f('0xc5')][_0xca0f('0x147')](db[_0xca0f('0xc4')],{'as':_0xca0f('0x164'),'foreignKey':'AccountId'});db[_0xca0f('0xc6')]['hasMany'](db[_0xca0f('0xc6')],{'as':_0xca0f('0x1bf'),'foreignKey':_0xca0f('0x1bb')});db[_0xca0f('0xc6')][_0xca0f('0x10b')](db['Dynamics365Field'],{'as':_0xca0f('0x1c0'),'foreignKey':_0xca0f('0x1bd')});db['Dynamics365Field'][_0xca0f('0x10b')](db['Dynamics365Field'],{'as':_0xca0f('0x1c1'),'foreignKey':_0xca0f('0x1be')});db[_0xca0f('0xc6')][_0xca0f('0x147')](db[_0xca0f('0x92')],{'as':_0xca0f('0x92'),'foreignKey':_0xca0f('0x1c2')});db[_0xca0f('0x1c7')][_0xca0f('0x10b')](db[_0xca0f('0x1c8')],{'as':'Configurations','onDelete':'cascade','foreignKey':'AccountId'});db['FreshsalesConfiguration']['hasMany'](db[_0xca0f('0x1c9')],{'as':'Subjects','foreignKey':_0xca0f('0x1bb')});db['FreshsalesConfiguration'][_0xca0f('0x10b')](db[_0xca0f('0x1c9')],{'as':'Descriptions','foreignKey':'DescriptionId'});db[_0xca0f('0x1c8')][_0xca0f('0x10b')](db[_0xca0f('0x1c9')],{'as':_0xca0f('0x1b4'),'foreignKey':'FieldId'});db[_0xca0f('0x1c8')][_0xca0f('0x147')](db[_0xca0f('0x1c7')],{'as':'Account','foreignKey':_0xca0f('0x1b8')});db['FreshsalesField'][_0xca0f('0x10b')](db[_0xca0f('0x1c9')],{'as':'Subject','foreignKey':'SubjectId'});db[_0xca0f('0x1c9')]['hasMany'](db[_0xca0f('0x1c9')],{'as':_0xca0f('0x1c0'),'foreignKey':_0xca0f('0x1bd')});db[_0xca0f('0x1c9')][_0xca0f('0x10b')](db[_0xca0f('0x1c9')],{'as':_0xca0f('0x1c1'),'foreignKey':_0xca0f('0x1be')});db['FreshsalesField'][_0xca0f('0x147')](db[_0xca0f('0x92')],{'as':_0xca0f('0x92'),'foreignKey':_0xca0f('0x1c2')});db[_0xca0f('0x1ca')][_0xca0f('0x147')](db[_0xca0f('0x64')],{});db[_0xca0f('0x1ca')]['belongsTo'](db[_0xca0f('0xf5')],{'as':_0xca0f('0x177'),'foreignKey':_0xca0f('0x15f')});db['ChatQueueReport'][_0xca0f('0x147')](db[_0xca0f('0x11e')],{'as':_0xca0f('0x159'),'foreignKey':_0xca0f('0x15a')});db[_0xca0f('0x1ca')][_0xca0f('0x147')](db['ChatInteraction'],{});db[_0xca0f('0x1ca')][_0xca0f('0x147')](db[_0xca0f('0x68')],{});db[_0xca0f('0x1ca')][_0xca0f('0x147')](db[_0xca0f('0x13')],{});db[_0xca0f('0x1ca')][_0xca0f('0x147')](db['ChatQueue'],{});db[_0xca0f('0x1cb')]['belongsTo'](db['User'],{'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1cc')});db['ChatInternalMessage'][_0xca0f('0x147')](db['User'],{'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1cd')});db[_0xca0f('0xd1')][_0xca0f('0x10b')](db[_0xca0f('0xcf')],{'foreignKey':_0xca0f('0x1ce'),'onDelete':_0xca0f('0x10a')});db[_0xca0f('0xd1')][_0xca0f('0x10b')](db[_0xca0f('0xcd')],{'foreignKey':'SessionId','onDelete':'cascade'});db[_0xca0f('0x1cf')][_0xca0f('0x147')](db['SmsAccount'],{});db[_0xca0f('0x1cf')][_0xca0f('0x147')](db[_0xca0f('0xf5')],{'as':_0xca0f('0x177'),'foreignKey':_0xca0f('0x15f')});db['SmsQueueReport'][_0xca0f('0x147')](db[_0xca0f('0x11e')],{'as':_0xca0f('0x159'),'foreignKey':_0xca0f('0x15a')});db['SmsQueueReport'][_0xca0f('0x147')](db['SmsInteraction'],{});db['SmsQueueReport']['belongsTo'](db['SmsMessage'],{});db[_0xca0f('0x1cf')][_0xca0f('0x147')](db['User'],{});db[_0xca0f('0x1cf')][_0xca0f('0x147')](db[_0xca0f('0x181')],{});db[_0xca0f('0xd8')][_0xca0f('0x10b')](db[_0xca0f('0xd1')],{'foreignKey':_0xca0f('0x1d0')});db[_0xca0f('0xd8')][_0xca0f('0x10b')](db[_0xca0f('0xcf')],{'foreignKey':_0xca0f('0x1d0')});db['JscriptyProject']['hasMany'](db[_0xca0f('0xcd')],{'foreignKey':_0xca0f('0x1d0')});db[_0xca0f('0x13a')]['belongsToMany'](db[_0xca0f('0x13')],{'as':_0xca0f('0x168'),'through':_0xca0f('0x13c')});db[_0xca0f('0x122')]['belongsToMany'](db[_0xca0f('0x13')],{'as':_0xca0f('0x162'),'through':_0xca0f('0x1d1')});db['Team'][_0xca0f('0x11d')](db[_0xca0f('0x1d')],{'through':_0xca0f('0x14f'),'as':_0xca0f('0x129')});db['Team'][_0xca0f('0x11d')](db[_0xca0f('0x43')],{'through':_0xca0f('0x163'),'as':_0xca0f('0x12a')});db[_0xca0f('0x122')]['belongsToMany'](db[_0xca0f('0x6b')],{'through':_0xca0f('0x1d2'),'as':_0xca0f('0x12c')});db['Team']['belongsToMany'](db[_0xca0f('0x54')],{'through':_0xca0f('0x17c'),'as':'FaxQueues'});db[_0xca0f('0x122')][_0xca0f('0x11d')](db['SmsQueue'],{'through':_0xca0f('0x185'),'as':_0xca0f('0x1d3')});db[_0xca0f('0x122')][_0xca0f('0x11d')](db[_0xca0f('0x62')],{'through':_0xca0f('0x18b'),'as':_0xca0f('0x12e')});db[_0xca0f('0x122')][_0xca0f('0x11d')](db[_0xca0f('0x106')],{'through':_0xca0f('0x1d4'),'as':_0xca0f('0x12f')});db[_0xca0f('0xe5')][_0xca0f('0x10b')](db[_0xca0f('0x73')],{'as':_0xca0f('0x144'),'foreignKey':_0xca0f('0x199')});db[_0xca0f('0xe5')][_0xca0f('0x10b')](db[_0xca0f('0x10f')],{'as':'HopperFinals','foreignKey':_0xca0f('0x199')});db['Campaign'][_0xca0f('0x10b')](db[_0xca0f('0x77')],{'as':_0xca0f('0x196'),'foreignKey':_0xca0f('0x199')});db[_0xca0f('0xe5')][_0xca0f('0x10b')](db[_0xca0f('0x19b')],{'as':_0xca0f('0x145'),'foreignKey':_0xca0f('0x199')});db[_0xca0f('0xe5')][_0xca0f('0x147')](db[_0xca0f('0x2d')],{'as':_0xca0f('0x2d'),'foreignKey':_0xca0f('0x148')});db[_0xca0f('0xe5')]['belongsTo'](db['Trunk'],{'as':_0xca0f('0x149'),'foreignKey':_0xca0f('0x14a')});db[_0xca0f('0xe5')][_0xca0f('0x147')](db[_0xca0f('0x85')],{'as':_0xca0f('0x85'),'foreignKey':_0xca0f('0x170')});db[_0xca0f('0xe5')][_0xca0f('0x147')](db[_0xca0f('0x13a')],{'as':_0xca0f('0x13a'),'foreignKey':_0xca0f('0x1d5')});db[_0xca0f('0xe5')]['belongsToMany'](db[_0xca0f('0xf5')],{'as':_0xca0f('0x14c'),'through':'campaigns_has_cm_lists'});db['Campaign'][_0xca0f('0x11d')](db[_0xca0f('0xf5')],{'as':'BlackLists','through':_0xca0f('0x1d6')});db[_0xca0f('0xe8')][_0xca0f('0x147')](db['ChatOfflineMessage'],{'as':_0xca0f('0x6a'),'foreignKey':_0xca0f('0x16d')});db['MailTransferReport']['belongsTo'](db['MailMessage'],{});db['MailTransferReport'][_0xca0f('0x147')](db['MailInteraction'],{});db[_0xca0f('0xec')][_0xca0f('0x147')](db[_0xca0f('0x41')],{'foreignKey':_0xca0f('0x1d7'),'as':_0xca0f('0x1d8')});db[_0xca0f('0xec')][_0xca0f('0x147')](db['User'],{'foreignKey':_0xca0f('0x1d9'),'as':'FromAgent'});db[_0xca0f('0xec')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'foreignKey':_0xca0f('0x1da'),'as':_0xca0f('0x1db')});db[_0xca0f('0xec')][_0xca0f('0x147')](db[_0xca0f('0x43')],{'foreignKey':_0xca0f('0x1dc'),'as':_0xca0f('0x1dd')});db['MailTransferReport'][_0xca0f('0x147')](db[_0xca0f('0x41')],{'foreignKey':'ToMailAccountId','as':_0xca0f('0x1de')});db['ChatTransferReport'][_0xca0f('0x147')](db[_0xca0f('0x68')],{});db[_0xca0f('0xee')]['belongsTo'](db[_0xca0f('0x67')],{});db[_0xca0f('0xee')][_0xca0f('0x147')](db[_0xca0f('0x64')],{'foreignKey':_0xca0f('0x1df'),'as':_0xca0f('0x1d8')});db[_0xca0f('0xee')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'foreignKey':_0xca0f('0x1d9'),'as':_0xca0f('0x1e0')});db[_0xca0f('0xee')]['belongsTo'](db['User'],{'foreignKey':_0xca0f('0x1da'),'as':_0xca0f('0x1db')});db[_0xca0f('0xee')][_0xca0f('0x147')](db[_0xca0f('0x6b')],{'foreignKey':_0xca0f('0x1e1'),'as':_0xca0f('0x1dd')});db[_0xca0f('0xee')][_0xca0f('0x147')](db[_0xca0f('0x64')],{'foreignKey':_0xca0f('0x1e2'),'as':'ToAccount'});db[_0xca0f('0x1e3')][_0xca0f('0x147')](db[_0xca0f('0x53')],{});db[_0xca0f('0x1e3')]['belongsTo'](db[_0xca0f('0x51')],{});db[_0xca0f('0x1e3')][_0xca0f('0x147')](db[_0xca0f('0x4d')],{'foreignKey':'FromFaxAccountId','as':_0xca0f('0x1d8')});db[_0xca0f('0x1e3')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'foreignKey':_0xca0f('0x1d9'),'as':_0xca0f('0x1e0')});db[_0xca0f('0x1e3')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'foreignKey':_0xca0f('0x1da'),'as':'ToAgent'});db[_0xca0f('0x1e3')]['belongsTo'](db[_0xca0f('0x54')],{'foreignKey':_0xca0f('0x1e4'),'as':_0xca0f('0x1dd')});db[_0xca0f('0x1e3')][_0xca0f('0x147')](db[_0xca0f('0x4d')],{'foreignKey':_0xca0f('0x1e5'),'as':_0xca0f('0x1de')});db[_0xca0f('0xf1')]['belongsTo'](db['OpenchannelMessage'],{});db[_0xca0f('0xf1')][_0xca0f('0x147')](db[_0xca0f('0x5f')],{});db['OpenchannelTransferReport'][_0xca0f('0x147')](db[_0xca0f('0x5b')],{'foreignKey':_0xca0f('0x1e6'),'as':_0xca0f('0x1d8')});db[_0xca0f('0xf1')]['belongsTo'](db[_0xca0f('0x13')],{'foreignKey':'FromUserId','as':'FromAgent'});db[_0xca0f('0xf1')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'foreignKey':_0xca0f('0x1da'),'as':_0xca0f('0x1db')});db[_0xca0f('0xf1')][_0xca0f('0x147')](db[_0xca0f('0x62')],{'foreignKey':_0xca0f('0x1e7'),'as':'ToQueue'});db[_0xca0f('0xf1')][_0xca0f('0x147')](db[_0xca0f('0x5b')],{'foreignKey':_0xca0f('0x1e8'),'as':'ToAccount'});db[_0xca0f('0xf3')][_0xca0f('0x147')](db[_0xca0f('0x17e')],{});db[_0xca0f('0xf3')][_0xca0f('0x147')](db[_0xca0f('0x17f')],{});db['SmsTransferReport']['belongsTo'](db[_0xca0f('0x58')],{'foreignKey':_0xca0f('0x1e9'),'as':_0xca0f('0x1d8')});db[_0xca0f('0xf3')]['belongsTo'](db[_0xca0f('0x13')],{'foreignKey':'FromUserId','as':_0xca0f('0x1e0')});db[_0xca0f('0xf3')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'foreignKey':_0xca0f('0x1da'),'as':'ToAgent'});db[_0xca0f('0xf3')][_0xca0f('0x147')](db[_0xca0f('0x181')],{'foreignKey':_0xca0f('0x1ea'),'as':_0xca0f('0x1dd')});db[_0xca0f('0xf3')][_0xca0f('0x147')](db['SmsAccount'],{'foreignKey':'ToSmsAccountId','as':_0xca0f('0x1de')});db[_0xca0f('0xf5')][_0xca0f('0x10b')](db['Disposition'],{'as':_0xca0f('0x15c'),'foreignKey':'ListId','onDelete':_0xca0f('0x10a')});db[_0xca0f('0xf5')][_0xca0f('0x10b')](db['CmCustomField'],{'as':_0xca0f('0x1eb'),'foreignKey':_0xca0f('0x15f')});db['CmList'][_0xca0f('0x10b')](db[_0xca0f('0x11e')],{'as':_0xca0f('0x11f'),'onDelete':'cascade','foreignKey':_0xca0f('0x15f')});db[_0xca0f('0xf5')][_0xca0f('0x10b')](db[_0xca0f('0x10f')],{'as':_0xca0f('0x110'),'foreignKey':_0xca0f('0x15f')});db[_0xca0f('0xf5')][_0xca0f('0x10b')](db[_0xca0f('0x77')],{'as':_0xca0f('0x111'),'foreignKey':'ListId'});db[_0xca0f('0xf5')]['hasMany'](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':'ListId'});db[_0xca0f('0xf5')][_0xca0f('0x11d')](db[_0xca0f('0x1d')],{'as':_0xca0f('0x1ec'),'through':'voice_queues_has_cm_lists'});db[_0xca0f('0xf5')][_0xca0f('0x11d')](db['User'],{'as':'Agents','through':_0xca0f('0x121')});db[_0xca0f('0xf7')][_0xca0f('0x10b')](db[_0xca0f('0x19')],{'as':'Extensions','onDelete':_0xca0f('0x10a')});db['VoicePrefix'][_0xca0f('0x11d')](db['User'],{'as':_0xca0f('0x162'),'through':_0xca0f('0x131')});db['UserProfile'][_0xca0f('0x10b')](db[_0xca0f('0x13')],{'as':_0xca0f('0x168'),'foreignKey':_0xca0f('0x1ed')});db['UserProfile'][_0xca0f('0x10b')](db[_0xca0f('0xf9')],{'as':'UserProfileSections','foreignKey':_0xca0f('0x1ed'),'onDelete':_0xca0f('0x10a')});db[_0xca0f('0xf9')][_0xca0f('0x10b')](db[_0xca0f('0xfa')],{'as':_0xca0f('0x1ee'),'foreignKey':_0xca0f('0x1ef'),'onDelete':_0xca0f('0x10a')});db['WhatsappAccount'][_0xca0f('0x10b')](db[_0xca0f('0x82')],{'as':'Dispositions','foreignKey':_0xca0f('0x1f0'),'onDelete':_0xca0f('0x10a')});db[_0xca0f('0xfe')][_0xca0f('0x10b')](db[_0xca0f('0x80')],{'as':_0xca0f('0x15d'),'foreignKey':_0xca0f('0x1f0')});db[_0xca0f('0xfe')][_0xca0f('0x10b')](db[_0xca0f('0x102')],{'as':_0xca0f('0x153'),'foreignKey':'WhatsappAccountId'});db[_0xca0f('0xfe')][_0xca0f('0x10b')](db[_0xca0f('0x101')],{'as':'Interactions'});db[_0xca0f('0xfe')][_0xca0f('0x10b')](db[_0xca0f('0x100')],{'as':_0xca0f('0x13f')});db['WhatsappAccount']['belongsTo'](db[_0xca0f('0xf5')],{'as':_0xca0f('0x177'),'foreignKey':'ListId'});db[_0xca0f('0xfe')][_0xca0f('0x147')](db[_0xca0f('0x161')],{'as':_0xca0f('0x180'),'foreignKey':_0xca0f('0x14b')});db[_0xca0f('0xfe')]['belongsToMany'](db[_0xca0f('0x13')],{'as':'Agents','through':'user_has_whatsapp_accounts'});db[_0xca0f('0x100')]['belongsTo'](db['User'],{'onDelete':'restrict'});db[_0xca0f('0x100')]['belongsTo'](db[_0xca0f('0x106')],{'onDelete':_0xca0f('0x16f')});db[_0xca0f('0x100')][_0xca0f('0x147')](db[_0xca0f('0xfe')],{'onDelete':'restrict'});db['WhatsappApplication'][_0xca0f('0x147')](db[_0xca0f('0x85')],{'onDelete':_0xca0f('0x16f'),'foreignKey':_0xca0f('0x170')});db['WhatsappApplication']['belongsTo'](db['Tag'],{'onDelete':'restrict','foreignKey':'TagId'});db[_0xca0f('0x101')][_0xca0f('0x10b')](db[_0xca0f('0x102')],{'as':_0xca0f('0x153'),'onDelete':_0xca0f('0x10a'),'foreignKey':_0xca0f('0x1f1')});db[_0xca0f('0x101')]['belongsTo'](db[_0xca0f('0xfe')],{'as':'Account','foreignKey':_0xca0f('0x1f0')});db[_0xca0f('0x101')][_0xca0f('0x147')](db[_0xca0f('0x11e')],{'as':'Contact','foreignKey':_0xca0f('0x15a')});db[_0xca0f('0x101')][_0xca0f('0x147')](db['User'],{'as':_0xca0f('0x178'),'foreignKey':_0xca0f('0x10d')});db[_0xca0f('0x101')][_0xca0f('0x11d')](db[_0xca0f('0x8d')],{'through':'whatsapp_interaction_has_tags','as':'Tags'});db['WhatsappInteraction'][_0xca0f('0x11d')](db[_0xca0f('0x8d')],{'through':_0xca0f('0x1f2'),'as':_0xca0f('0x167')});db[_0xca0f('0x101')][_0xca0f('0x11d')](db['User'],{'as':_0xca0f('0x168'),'through':'user_has_whatsapp_interactions','foreignKey':_0xca0f('0x1f1')});db[_0xca0f('0x102')][_0xca0f('0x147')](db['User'],{'as':_0xca0f('0x13')});db[_0xca0f('0x102')][_0xca0f('0x147')](db['CmContact'],{'onDelete':_0xca0f('0x10a'),'as':'Contact'});db[_0xca0f('0x102')][_0xca0f('0x147')](db['WhatsappInteraction'],{'onDelete':_0xca0f('0x10a'),'as':_0xca0f('0x16b'),'foreignKey':_0xca0f('0x1f1')});db[_0xca0f('0x102')][_0xca0f('0x147')](db[_0xca0f('0xfe')],{'as':_0xca0f('0x164'),'foreignKey':_0xca0f('0x1f0')});db['WhatsappQueueReport'][_0xca0f('0x147')](db[_0xca0f('0xfe')],{});db[_0xca0f('0x104')][_0xca0f('0x147')](db[_0xca0f('0xf5')],{'as':'List','foreignKey':_0xca0f('0x15f')});db['WhatsappQueueReport']['belongsTo'](db[_0xca0f('0x11e')],{'as':_0xca0f('0x159'),'foreignKey':'ContactId'});db[_0xca0f('0x104')][_0xca0f('0x147')](db['WhatsappInteraction'],{});db[_0xca0f('0x104')][_0xca0f('0x147')](db[_0xca0f('0x106')],{});db[_0xca0f('0x104')][_0xca0f('0x147')](db[_0xca0f('0x102')],{});db[_0xca0f('0x104')][_0xca0f('0x147')](db[_0xca0f('0x13')],{});db[_0xca0f('0x1f3')]['belongsTo'](db[_0xca0f('0x102')],{});db['WhatsappTransferReport'][_0xca0f('0x147')](db[_0xca0f('0x101')],{});db['WhatsappTransferReport'][_0xca0f('0x147')](db[_0xca0f('0xfe')],{'foreignKey':_0xca0f('0x1f4'),'as':_0xca0f('0x1d8')});db['WhatsappTransferReport']['belongsTo'](db[_0xca0f('0xfe')],{'foreignKey':_0xca0f('0x1f5'),'as':_0xca0f('0x1de')});db[_0xca0f('0x1f3')]['belongsTo'](db[_0xca0f('0x106')],{'foreignKey':_0xca0f('0x1f6'),'as':_0xca0f('0x1dd')});db[_0xca0f('0x1f3')]['belongsTo'](db[_0xca0f('0x13')],{'foreignKey':_0xca0f('0x1d9'),'as':_0xca0f('0x1e0')});db[_0xca0f('0x1f3')][_0xca0f('0x147')](db[_0xca0f('0x13')],{'foreignKey':'ToUserId','as':_0xca0f('0x1db')});db[_0xca0f('0x106')]['belongsToMany'](db[_0xca0f('0x13')],{'as':_0xca0f('0x162'),'through':_0xca0f('0x3b'),'foreignKey':_0xca0f('0x1f7')});db[_0xca0f('0x106')][_0xca0f('0x11d')](db[_0xca0f('0x122')],{'through':'team_has_whatsapp_queues','as':_0xca0f('0x14e')});module['exports']={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0x6b86=['UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerOut/mailServerOut.model','../api/mailAccount/mailAccount.model','MailQueue','../api/mailQueue/mailQueue.model','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','DashboardItem','../api/faxAccount/faxAccount.model','FaxInteraction','../api/faxInteraction/faxInteraction.model','../api/faxMessage/faxMessage.model','FaxQueue','FaxQueueReport','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','../api/openchannelMessage/openchannelMessage.model','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','ChatMessage','../api/chatMessage/chatMessage.model','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','Action','../api/action/action.model','Automation','../api/automation/automation.model','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','Condition','../api/condition/condition.model','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','Template','../api/template/template.model','Trigger','../api/trigger/trigger.model','Variable','../api/variable/variable.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','ZendeskConfiguration','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','Integration','../api/integration/integration.model','Network','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareDetailsReport','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','../api/setting/setting.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','../api/license/license.model','Campaign','../api/campaign/campaign.model','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','../api/voicePrefix/voicePrefix.model','UserProfile','UserProfileResource','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappMessage/whatsappMessage.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','cascade','hasMany','UserId','UserVoiceQueueRt','VoiceQueuesRt','HopperFinals','HopperHistory','ReportAgentPreview','OpenchannelInteraction','ChatInteractions','SmsInteraction','MailInteractions','WhatsappInteractions','UserNotifications','SenderId','belongsTo','userProfileId','belongsToMany','Groups','Lists','cm_user_has_lists','user_has_teams','FaxInteractions','SmsInteractions','OpenchannelInteractions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueue','VoiceQueues','UserVoiceQueue','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueue','OpenchannelQueues','WhatsappQueues','VoicePrefix','VoicePrefixes','user_has_voice_prefixes','ChatWebsites','user_has_chat_websites','FaxAccount','FaxAccounts','user_has_fax_accounts','MailAccount','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','SquareProjects','user_has_square_projects','ChanSpyId','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperHistories','HopperBlacks','JscriptySessions','TrunkId','TrunkBackup','TrunkBackupId','Interval','IntervalId','mandatoryDispositionPause','BlackLists','voice_queues_has_cm_blacklists','ScreenRecording','mailboxuser','mailbox','VoiceCallReport','QueueCalls','uniqueid','Contact','ContactId','MailAccountId','hasOne','Imap','Dispositions','CannedAnswer','Messages','Interactions','List','TemplateId','mandatoryDispositionPauseId','Agents','team_has_mail_queues','Teams','MailInteractionId','Owner','mail_interaction_has_tags','Tags','ThroughTags','user_has_mail_interactions','Attachments','Interaction','Account','ChatWebsiteId','ChatOfflineMessageId','restrict','TagId','Items','FaxAccountId','Applications','Exntensions','FaxMessage','FaxApplication','FaxInteractionId','fax_interaction_has_tags','Users','AttachmentId','team_has_fax_queues','ListId','SmsAccountId','Answers','SmsInteractionId','sms_interaction_has_tags','user_has_sms_interactions','OpenchannelAccountId','OpenchannelApplication','OpenchannelQueueId','openchannel_interaction_has_tags','OpenchannelInteractionId','team_has_openchannel_queues','ChatApplication','Agent','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','UserChatQueue','team_has_chat_queues','ChatGroupId','chat_group_has_users','Contacts','CompanyId','Company','cm_contact_has_tags','CampaignId','OwnerId','OneAll','AutomationAllId','Any','OneAny','AutomationAnyId','Actions','AutomationId','ParentId','Intervals','MailApplications','FaxApplications','SmsApplications','DefaultReportId','AnalyticCustomReport','CustomReportId','whatsapp_interaction_has_tags','AllCondition','AnyConditions','TriggerAnyId','TriggerId','Fields','Configurations','AccountId','SalesforceField','SubjectId','Descriptions','DescriptionId','Subject','Description','FieldId','VariableId','SugarcrmConfiguration','DeskAccount','Subjects','Field','ZohoAccount','ZendeskField','int_zendesk_configuration_has_tags','FreshdeskConfiguration','VtigerAccount','Dynamics365Account','FromId','ToId','SessionId','ProjectId','SquareProject','MailQueues','team_has_sms_queues','team_has_whatsapp_queues','SquareProjectId','campaigns_has_cm_blacklists','MailTransferReport','FromMailAccountId','FromAccount','FromUserId','ToAgent','ToMailQueueId','ToQueue','ToMailAccountId','ToAccount','ChatTransferReport','FromChatWebsiteId','ToUserId','ToChatWebsiteId','FromFaxAccountId','FromAgent','ToFaxQueueId','ToFaxAccountId','OpenchannelTransferReport','FromOpenchannelAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','CmCustomField','Queues','Extensions','UserProfileSection','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappMessage','WhatsappInteractionId','WhatsappQueueReport','ToQueueId','WhatsappQueueId','exports','../config/environment','sequelize','lodash','motion2','xC@LL1234','mysql','utf8_general_ci','sequelizeHistory','defaultsDeep','xcall','utf8','database','username','password','options','User','../api/user/user.model','VoiceChanSpy','import','../api/voiceChanSpy/voiceChanSpy.model','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceQueue/voiceQueue.model','VoiceRecording','../api/voiceRecording/voiceRecording.model','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','Trunk','../api/trunk/trunk.model','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','../api/userVoiceQueueRt/userVoiceQueueRt.model','../api/userVoiceQueue/userVoiceQueue.model','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model'];(function(_0x597484,_0x199340){var _0x218e64=function(_0x390d55){while(--_0x390d55){_0x597484['push'](_0x597484['shift']());}};_0x218e64(++_0x199340);}(_0x6b86,0x1bd));var _0x66b8=function(_0xde43c2,_0x4f6a35){_0xde43c2=_0xde43c2-0x0;var _0x37a763=_0x6b86[_0xde43c2];return _0x37a763;};'use strict';var config=require(_0x66b8('0x0'));var Sequelize=require(_0x66b8('0x1'));var _=require(_0x66b8('0x2'));var jstz=require('jstz');var timezone=jstz['determine']();config[_0x66b8('0x1')]=_['defaultsDeep'](config[_0x66b8('0x1')],{'database':_0x66b8('0x3'),'username':'xcall','password':_0x66b8('0x4'),'options':{'host':'127.0.0.1','port':0xcea,'dialect':_0x66b8('0x5'),'dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone['name'](),'define':{'charset':'utf8','collate':_0x66b8('0x6')}}});config[_0x66b8('0x7')]=_[_0x66b8('0x8')](config[_0x66b8('0x7')],{'database':_0x66b8('0x3'),'username':_0x66b8('0x9'),'password':'xC@LL1234','options':{'host':'127.0.0.1','port':0xcea,'dialect':_0x66b8('0x5'),'dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0x66b8('0xa'),'collate':'utf8_general_ci'}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x66b8('0x1')][_0x66b8('0xb')],config['sequelize'][_0x66b8('0xc')],config[_0x66b8('0x1')][_0x66b8('0xd')],config[_0x66b8('0x1')][_0x66b8('0xe')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x66b8('0x7')]['database'],config[_0x66b8('0x7')][_0x66b8('0xc')],config[_0x66b8('0x7')]['password'],config[_0x66b8('0x7')][_0x66b8('0xe')])};db[_0x66b8('0xf')]=db[_0x66b8('0x1')]['import'](_0x66b8('0x10'));db[_0x66b8('0x11')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x13'));db['VoiceContext']=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x14'));db[_0x66b8('0x15')]=db[_0x66b8('0x1')][_0x66b8('0x12')]('../api/voiceExtension/voiceExtension.model');db['VoiceMusicOnHold']=db['sequelize']['import']('../api/voiceMusicOnHold/voiceMusicOnHold.model');db['VoiceQueue']=db['sequelize'][_0x66b8('0x12')](_0x66b8('0x16'));db[_0x66b8('0x17')]=db['sequelize'][_0x66b8('0x12')](_0x66b8('0x18'));db['ScreenRecording']=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x19'));db[_0x66b8('0x1a')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x1b'));db[_0x66b8('0x1c')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x1d'));db['VoiceCallReport']=db[_0x66b8('0x1')]['import'](_0x66b8('0x1e'));db[_0x66b8('0x1f')]=db['sequelize'][_0x66b8('0x12')](_0x66b8('0x20'));db[_0x66b8('0x21')]=db[_0x66b8('0x1')]['import'](_0x66b8('0x22'));db[_0x66b8('0x23')]=db[_0x66b8('0x1')]['import'](_0x66b8('0x24'));db[_0x66b8('0x25')]=db[_0x66b8('0x1')][_0x66b8('0x12')]('../api/memberReport/memberReport.model');db[_0x66b8('0x26')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x27'));db[_0x66b8('0x28')]=db['sequelize'][_0x66b8('0x12')](_0x66b8('0x29'));db['UserVoiceQueueRt']=db['sequelize'][_0x66b8('0x12')](_0x66b8('0x2a'));db['UserVoiceQueue']=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x2b'));db['UserChatQueue']=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x2c'));db[_0x66b8('0x2d')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x2e'));db[_0x66b8('0x2f')]=db[_0x66b8('0x1')]['import'](_0x66b8('0x30'));db[_0x66b8('0x31')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x32'));db[_0x66b8('0x33')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x34'));db[_0x66b8('0x35')]=db[_0x66b8('0x1')]['import'](_0x66b8('0x36'));db[_0x66b8('0x37')]=db[_0x66b8('0x1')][_0x66b8('0x12')]('../api/mailServerIn/mailServerIn.model');db['MailServerOut']=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x38'));db['MailAccount']=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x39'));db[_0x66b8('0x3a')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x3b'));db['MailSubstatus']=db[_0x66b8('0x1')]['import'](_0x66b8('0x3c'));db[_0x66b8('0x3d')]=db['sequelize'][_0x66b8('0x12')](_0x66b8('0x3e'));db[_0x66b8('0x3f')]=db['sequelize']['import'](_0x66b8('0x40'));db[_0x66b8('0x41')]=db[_0x66b8('0x1')][_0x66b8('0x12')]('../api/mailApplication/mailApplication.model');db[_0x66b8('0x42')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x43'));db['Dashboard']=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x44'));db[_0x66b8('0x45')]=db[_0x66b8('0x1')][_0x66b8('0x12')]('../api/dashboardItem/dashboardItem.model');db['FaxAccount']=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x46'));db['FaxApplication']=db[_0x66b8('0x1')]['import']('../api/faxApplication/faxApplication.model');db[_0x66b8('0x47')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x48'));db['FaxMessage']=db['sequelize']['import'](_0x66b8('0x49'));db[_0x66b8('0x4a')]=db[_0x66b8('0x1')][_0x66b8('0x12')]('../api/faxQueue/faxQueue.model');db[_0x66b8('0x4b')]=db['sequelize'][_0x66b8('0x12')]('../api/faxQueueReport/faxQueueReport.model');db[_0x66b8('0x4c')]=db['sequelize']['import'](_0x66b8('0x4d'));db[_0x66b8('0x4e')]=db['sequelize'][_0x66b8('0x12')]('../api/smsApplication/smsApplication.model');db['SmsInteraction']=db['sequelize'][_0x66b8('0x12')](_0x66b8('0x4f'));db[_0x66b8('0x50')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x51'));db[_0x66b8('0x52')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x53'));db[_0x66b8('0x54')]=db[_0x66b8('0x1')]['import'](_0x66b8('0x55'));db['OpenchannelApplication']=db[_0x66b8('0x1')]['import']('../api/openchannelApplication/openchannelApplication.model');db['OpenchannelInteraction']=db['sequelize'][_0x66b8('0x12')](_0x66b8('0x56'));db[_0x66b8('0x57')]=db['sequelize'][_0x66b8('0x12')](_0x66b8('0x58'));db['OpenchannelQueue']=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x59'));db[_0x66b8('0x5a')]=db['sequelize']['import'](_0x66b8('0x5b'));db[_0x66b8('0x5c')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x5d'));db['ChatApplication']=db[_0x66b8('0x1')]['import']('../api/chatApplication/chatApplication.model');db[_0x66b8('0x5e')]=db[_0x66b8('0x1')]['import'](_0x66b8('0x5f'));db[_0x66b8('0x60')]=db[_0x66b8('0x1')]['import'](_0x66b8('0x61'));db[_0x66b8('0x62')]=db['sequelize'][_0x66b8('0x12')](_0x66b8('0x63'));db[_0x66b8('0x64')]=db[_0x66b8('0x1')][_0x66b8('0x12')]('../api/chatQueue/chatQueue.model');db[_0x66b8('0x65')]=db['sequelize'][_0x66b8('0x12')](_0x66b8('0x66'));db[_0x66b8('0x67')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x68'));db['CmCompany']=db[_0x66b8('0x1')]['import'](_0x66b8('0x69'));db[_0x66b8('0x6a')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x6b'));db[_0x66b8('0x6c')]=db[_0x66b8('0x1')]['import'](_0x66b8('0x6d'));db[_0x66b8('0x6e')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x6f'));db[_0x66b8('0x70')]=db[_0x66b8('0x1')][_0x66b8('0x12')]('../api/cmHopperFinal/cmHopperFinal.model');db[_0x66b8('0x71')]=db['sequelize'][_0x66b8('0x12')](_0x66b8('0x72'));db['ReportAgentPreview']=db['sequelize'][_0x66b8('0x12')]('../api/reportAgentPreview/reportAgentPreview.model');db['CmCustomField']=db[_0x66b8('0x1')]['import']('../api/cmCustomField/cmCustomField.model');db[_0x66b8('0x73')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x74'));db[_0x66b8('0x75')]=db['sequelize'][_0x66b8('0x12')](_0x66b8('0x76'));db['CannedAnswer']=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x77'));db[_0x66b8('0x78')]=db[_0x66b8('0x1')]['import'](_0x66b8('0x79'));db[_0x66b8('0x7a')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x7b'));db['Interval']=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x7c'));db[_0x66b8('0x7d')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x7e'));db[_0x66b8('0x7f')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x80'));db[_0x66b8('0x81')]=db['sequelize'][_0x66b8('0x12')]('../api/voiceQueuesLog/voiceQueuesLog.model');db[_0x66b8('0x82')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x83'));db[_0x66b8('0x84')]=db['sequelize'][_0x66b8('0x12')](_0x66b8('0x85'));db[_0x66b8('0x86')]=db[_0x66b8('0x1')]['import'](_0x66b8('0x87'));db[_0x66b8('0x88')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x89'));db[_0x66b8('0x8a')]=db[_0x66b8('0x1')]['import'](_0x66b8('0x8b'));db[_0x66b8('0x8c')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x8d'));db['Integration']=db[_0x66b8('0x1')]['import']('../api/integration/integration.model');db['IntegrationReport']=db[_0x66b8('0x1')][_0x66b8('0x12')]('../api/integrationReport/integrationReport.model');db['AnalyticCustomReport']=db[_0x66b8('0x1')][_0x66b8('0x12')]('../api/analyticCustomReport/analyticCustomReport.model');db[_0x66b8('0x8e')]=db['sequelize'][_0x66b8('0x12')](_0x66b8('0x8f'));db[_0x66b8('0x90')]=db['sequelize'][_0x66b8('0x12')](_0x66b8('0x91'));db[_0x66b8('0x92')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x93'));db[_0x66b8('0x94')]=db[_0x66b8('0x1')]['import']('../api/analyticFieldReport/analyticFieldReport.model');db[_0x66b8('0x95')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x96'));db[_0x66b8('0x97')]=db[_0x66b8('0x1')]['import'](_0x66b8('0x98'));db[_0x66b8('0x99')]=db['sequelize'][_0x66b8('0x12')]('../api/intSalesforceConfiguration/intSalesforceConfiguration.model');db['SalesforceField']=db['sequelize'][_0x66b8('0x12')](_0x66b8('0x9a'));db[_0x66b8('0x9b')]=db['sequelize']['import'](_0x66b8('0x9c'));db['SugarcrmConfiguration']=db[_0x66b8('0x1')]['import'](_0x66b8('0x9d'));db[_0x66b8('0x9e')]=db[_0x66b8('0x1')]['import']('../api/intSugarcrmField/intSugarcrmField.model');db['DeskAccount']=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x9f'));db[_0x66b8('0xa0')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0xa1'));db[_0x66b8('0xa2')]=db['sequelize'][_0x66b8('0x12')](_0x66b8('0xa3'));db['ZohoAccount']=db['sequelize'][_0x66b8('0x12')](_0x66b8('0xa4'));db[_0x66b8('0xa5')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0xa6'));db[_0x66b8('0xa7')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0xa8'));db[_0x66b8('0xa9')]=db['sequelize']['import']('../api/intZendeskAccount/intZendeskAccount.model');db[_0x66b8('0xaa')]=db[_0x66b8('0x1')][_0x66b8('0x12')]('../api/intZendeskConfiguration/intZendeskConfiguration.model');db['ZendeskField']=db['sequelize'][_0x66b8('0x12')]('../api/intZendeskField/intZendeskField.model');db[_0x66b8('0xab')]=db['sequelize'][_0x66b8('0x12')](_0x66b8('0xac'));db['FreshdeskConfiguration']=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0xad'));db[_0x66b8('0xae')]=db[_0x66b8('0x1')]['import'](_0x66b8('0xaf'));db['VtigerAccount']=db['sequelize'][_0x66b8('0x12')](_0x66b8('0xb0'));db[_0x66b8('0xb1')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0xb2'));db[_0x66b8('0xb3')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0xb4'));db[_0x66b8('0xb5')]=db[_0x66b8('0x1')]['import'](_0x66b8('0xb6'));db[_0x66b8('0xb7')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0xb8'));db[_0x66b8('0xb9')]=db[_0x66b8('0x1')]['import']('../api/intServicenowField/intServicenowField.model');db['Dynamics365Account']=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0xba'));db[_0x66b8('0xbb')]=db[_0x66b8('0x1')][_0x66b8('0x12')]('../api/intDynamics365Configuration/intDynamics365Configuration.model');db[_0x66b8('0xbc')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0xbd'));db[_0x66b8('0xbe')]=db['sequelize'][_0x66b8('0x12')](_0x66b8('0xbf'));db[_0x66b8('0xc0')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0xc1'));db[_0x66b8('0xc2')]=db['sequelize'][_0x66b8('0x12')](_0x66b8('0xc3'));db[_0x66b8('0xc4')]=db[_0x66b8('0x1')]['import'](_0x66b8('0xc5'));db[_0x66b8('0xc6')]=db[_0x66b8('0x1')]['import']('../api/network/network.model');db[_0x66b8('0xc7')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0xc8'));db[_0x66b8('0xc9')]=db[_0x66b8('0x1')][_0x66b8('0x12')]('../api/chatInternalMessage/chatInternalMessage.model');db[_0x66b8('0xca')]=db['sequelize'][_0x66b8('0x12')](_0x66b8('0xcb'));db[_0x66b8('0xcc')]=db['sequelize']['import']('../api/jscriptyQuestionReport/jscriptyQuestionReport.model');db[_0x66b8('0xcd')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0xce'));db[_0x66b8('0xcf')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0xd0'));db['SquareReport']=db[_0x66b8('0x1')][_0x66b8('0x12')]('../api/squareReport/squareReport.model');db[_0x66b8('0xd1')]=db['sequelize'][_0x66b8('0x12')]('../api/squareReportDetail/squareReportDetail.model');db[_0x66b8('0xd2')]=db['sequelize']['import'](_0x66b8('0xd3'));db['Setting']=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0xd4'));db[_0x66b8('0xd5')]=db[_0x66b8('0x1')]['import'](_0x66b8('0xd6'));db['SquareProject']=db['sequelize'][_0x66b8('0x12')](_0x66b8('0xd7'));db[_0x66b8('0xd8')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0xd9'));db['SquareMessage']=db[_0x66b8('0x1')]['import'](_0x66b8('0xda'));db[_0x66b8('0xdb')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0xdc'));db[_0x66b8('0xdd')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0xde'));db[_0x66b8('0xdf')]=db[_0x66b8('0x1')]['import'](_0x66b8('0xe0'));db[_0x66b8('0xe1')]=db['sequelize']['import'](_0x66b8('0xe2'));db[_0x66b8('0xe3')]=db[_0x66b8('0x1')]['import'](_0x66b8('0xe4'));db[_0x66b8('0xe5')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0xe6'));db['MailTransferReport']=db[_0x66b8('0x1')]['import']('../api/mailTransferReport/mailTransferReport.model');db['ChatTransferReport']=db[_0x66b8('0x1')][_0x66b8('0x12')]('../api/chatTransferReport/chatTransferReport.model');db[_0x66b8('0xe7')]=db[_0x66b8('0x1')]['import'](_0x66b8('0xe8'));db['OpenchannelTransferReport']=db[_0x66b8('0x1')]['import'](_0x66b8('0xe9'));db[_0x66b8('0xea')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0xeb'));db[_0x66b8('0xec')]=db['sequelize'][_0x66b8('0x12')](_0x66b8('0xed'));db['VoicePrefix']=db['sequelize'][_0x66b8('0x12')](_0x66b8('0xee'));db[_0x66b8('0xef')]=db[_0x66b8('0x1')][_0x66b8('0x12')]('../api/userProfile/userProfile.model');db['UserProfileSection']=db['sequelize'][_0x66b8('0x12')]('../api/userProfileSection/userProfileSection.model');db[_0x66b8('0xf0')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0xf1'));db[_0x66b8('0xf2')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0xf3'));db[_0x66b8('0xf4')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0xf5'));db[_0x66b8('0xf6')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0xf7'));db[_0x66b8('0xf8')]=db[_0x66b8('0x1')][_0x66b8('0x12')]('../api/whatsappInteraction/whatsappInteraction.model');db['WhatsappMessage']=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0xf9'));db['WhatsappQueueReport']=db[_0x66b8('0x1')]['import']('../api/whatsappQueueReport/whatsappQueueReport.model');db[_0x66b8('0xfa')]=db['sequelize'][_0x66b8('0x12')](_0x66b8('0xfb'));db[_0x66b8('0xfc')]=db[_0x66b8('0x1')]['import'](_0x66b8('0xfd'));db[_0x66b8('0xfe')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0xff'));db[_0x66b8('0x100')]=db[_0x66b8('0x1')][_0x66b8('0x12')](_0x66b8('0x101'));db[_0x66b8('0xf')]['hasOne'](db[_0x66b8('0x1a')],{'as':_0x66b8('0x1a'),'onDelete':_0x66b8('0x102'),'foreignKey':'UserId'});db['User'][_0x66b8('0x103')](db[_0x66b8('0x17')],{'as':'Recordings','foreignKey':_0x66b8('0x104')});db[_0x66b8('0xf')][_0x66b8('0x103')](db[_0x66b8('0x105')],{'as':_0x66b8('0x106'),'foreignKey':_0x66b8('0x104')});db['User']['hasMany'](db['VoiceExtension'],{'as':'Extensions','onDelete':_0x66b8('0x102'),'hooks':!![]});db[_0x66b8('0xf')]['hasMany'](db[_0x66b8('0x70')],{'as':_0x66b8('0x107'),'foreignKey':'UserId'});db[_0x66b8('0xf')][_0x66b8('0x103')](db[_0x66b8('0x71')],{'as':_0x66b8('0x108'),'foreignKey':_0x66b8('0x104')});db[_0x66b8('0xf')][_0x66b8('0x103')](db[_0x66b8('0x109')],{'as':_0x66b8('0x109'),'foreignKey':_0x66b8('0x104')});db['User'][_0x66b8('0x103')](db[_0x66b8('0x10a')],{'as':'OpenchannelInteractions','foreignKey':'UserId'});db[_0x66b8('0xf')][_0x66b8('0x103')](db[_0x66b8('0x5e')],{'as':_0x66b8('0x10b'),'foreignKey':_0x66b8('0x104')});db[_0x66b8('0xf')][_0x66b8('0x103')](db[_0x66b8('0x10c')],{'as':'SmsInteractions','foreignKey':_0x66b8('0x104')});db[_0x66b8('0xf')][_0x66b8('0x103')](db[_0x66b8('0x47')],{'as':'FaxInteractions','foreignKey':_0x66b8('0x104')});db[_0x66b8('0xf')][_0x66b8('0x103')](db[_0x66b8('0x3d')],{'as':_0x66b8('0x10d'),'foreignKey':_0x66b8('0x104')});db[_0x66b8('0xf')]['hasMany'](db['WhatsappInteraction'],{'as':_0x66b8('0x10e'),'foreignKey':_0x66b8('0x104')});db['User'][_0x66b8('0x103')](db[_0x66b8('0xf2')],{'as':_0x66b8('0x10f'),'foreignKey':_0x66b8('0x110')});db['User'][_0x66b8('0x111')](db[_0x66b8('0xef')],{'as':_0x66b8('0xef'),'foreignKey':_0x66b8('0x112')});db[_0x66b8('0xf')][_0x66b8('0x113')](db[_0x66b8('0x65')],{'as':_0x66b8('0x114'),'through':'chat_group_has_users'});db[_0x66b8('0xf')]['belongsToMany'](db['CmContact'],{'as':'Contacts','through':'cm_user_has_contacts'});db[_0x66b8('0xf')]['belongsToMany'](db[_0x66b8('0xec')],{'as':_0x66b8('0x115'),'through':_0x66b8('0x116')});db[_0x66b8('0xf')][_0x66b8('0x113')](db[_0x66b8('0xdb')],{'through':_0x66b8('0x117')});db[_0x66b8('0xf')][_0x66b8('0x113')](db[_0x66b8('0x3d')],{'as':_0x66b8('0x10d'),'through':'user_has_mail_interactions'});db['User'][_0x66b8('0x113')](db['ChatInteraction'],{'as':'ChatInteractions','through':'user_has_chat_interactions'});db[_0x66b8('0xf')][_0x66b8('0x113')](db[_0x66b8('0x47')],{'as':_0x66b8('0x118'),'through':'user_has_fax_interactions'});db['User'][_0x66b8('0x113')](db[_0x66b8('0x10c')],{'as':_0x66b8('0x119'),'through':'user_has_sms_interactions'});db['User'][_0x66b8('0x113')](db[_0x66b8('0x10a')],{'as':_0x66b8('0x11a'),'through':_0x66b8('0x11b')});db[_0x66b8('0xf')][_0x66b8('0x113')](db[_0x66b8('0xf8')],{'as':'WhatsappInteractions','through':_0x66b8('0x11c')});db[_0x66b8('0xf')][_0x66b8('0x113')](db[_0x66b8('0x11d')],{'as':_0x66b8('0x11e'),'through':_0x66b8('0x11f'),'required':![]});db[_0x66b8('0xf')][_0x66b8('0x113')](db[_0x66b8('0x3a')],{'as':'MailQueues','through':_0x66b8('0x2d'),'required':![]});db[_0x66b8('0xf')][_0x66b8('0x113')](db[_0x66b8('0x64')],{'as':_0x66b8('0x120'),'through':'UserChatQueue','required':![],'hooks':!![]});db[_0x66b8('0xf')][_0x66b8('0x113')](db[_0x66b8('0x4a')],{'as':_0x66b8('0x121'),'through':_0x66b8('0x2f'),'required':![]});db['User'][_0x66b8('0x113')](db['SmsQueue'],{'as':_0x66b8('0x122'),'through':_0x66b8('0x31'),'required':![]});db[_0x66b8('0xf')][_0x66b8('0x113')](db[_0x66b8('0x123')],{'as':_0x66b8('0x124'),'through':_0x66b8('0x33'),'required':![]});db[_0x66b8('0xf')][_0x66b8('0x113')](db[_0x66b8('0xfc')],{'as':_0x66b8('0x125'),'through':_0x66b8('0x35'),'required':![]});db[_0x66b8('0xf')][_0x66b8('0x113')](db[_0x66b8('0xec')],{'through':_0x66b8('0x116')});db['User'][_0x66b8('0x113')](db[_0x66b8('0x126')],{'as':_0x66b8('0x127'),'through':_0x66b8('0x128'),'required':![]});db['User'][_0x66b8('0x113')](db[_0x66b8('0x5a')],{'as':_0x66b8('0x129'),'through':_0x66b8('0x12a')});db[_0x66b8('0xf')][_0x66b8('0x113')](db[_0x66b8('0x12b')],{'as':_0x66b8('0x12c'),'through':_0x66b8('0x12d')});db[_0x66b8('0xf')]['belongsToMany'](db[_0x66b8('0x12e')],{'as':'MailAccounts','through':_0x66b8('0x12f')});db[_0x66b8('0xf')][_0x66b8('0x113')](db['OpenchannelAccount'],{'as':_0x66b8('0x130'),'through':_0x66b8('0x131')});db['User'][_0x66b8('0x113')](db[_0x66b8('0x4c')],{'as':_0x66b8('0x132'),'through':_0x66b8('0x133')});db['User'][_0x66b8('0x113')](db['WhatsappAccount'],{'as':_0x66b8('0x134'),'through':_0x66b8('0x135')});db[_0x66b8('0xf')][_0x66b8('0x113')](db['SquareProject'],{'as':_0x66b8('0x136'),'through':_0x66b8('0x137')});db[_0x66b8('0x11')][_0x66b8('0x103')](db[_0x66b8('0x15')],{'as':'SpiedAgents','onDelete':'cascade','foreignKey':_0x66b8('0x138')});db['VoiceContext']['hasMany'](db[_0x66b8('0x15')],{'onDelete':'cascade'});db[_0x66b8('0x15')][_0x66b8('0x103')](db[_0x66b8('0x15')],{'as':'Applications','onDelete':_0x66b8('0x102')});db['VoiceMusicOnHold'][_0x66b8('0x113')](db['Sound'],{'as':_0x66b8('0x139'),'through':_0x66b8('0x13a')});db[_0x66b8('0x11d')][_0x66b8('0x103')](db[_0x66b8('0x105')],{'as':_0x66b8('0x13b'),'foreignKey':_0x66b8('0x13c')});db['VoiceQueue'][_0x66b8('0x103')](db['CmHopper'],{'as':_0x66b8('0x13d'),'foreignKey':_0x66b8('0x13c')});db[_0x66b8('0x11d')]['hasMany'](db[_0x66b8('0x70')],{'as':_0x66b8('0x107'),'foreignKey':'VoiceQueueId'});db[_0x66b8('0x11d')][_0x66b8('0x103')](db[_0x66b8('0x71')],{'as':_0x66b8('0x13e'),'foreignKey':_0x66b8('0x13c')});db[_0x66b8('0x11d')][_0x66b8('0x103')](db[_0x66b8('0x109')],{'as':_0x66b8('0x109'),'foreignKey':_0x66b8('0x13c')});db[_0x66b8('0x11d')][_0x66b8('0x103')](db[_0x66b8('0x6e')],{'as':_0x66b8('0x13f'),'foreignKey':'VoiceQueueId'});db[_0x66b8('0x11d')][_0x66b8('0x103')](db['JscriptySessionReport'],{'as':_0x66b8('0x140'),'foreignKey':_0x66b8('0x13c')});db[_0x66b8('0x11d')][_0x66b8('0x111')](db['Trunk'],{'as':'Trunk','foreignKey':_0x66b8('0x141')});db[_0x66b8('0x11d')]['belongsTo'](db[_0x66b8('0x26')],{'as':_0x66b8('0x142'),'foreignKey':_0x66b8('0x143')});db['VoiceQueue'][_0x66b8('0x111')](db[_0x66b8('0x144')],{'as':_0x66b8('0x144'),'foreignKey':_0x66b8('0x145')});db['VoiceQueue'][_0x66b8('0x111')](db['Pause'],{'as':_0x66b8('0x146'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x66b8('0x11d')][_0x66b8('0x113')](db[_0x66b8('0xec')],{'as':_0x66b8('0x115'),'through':'voice_queues_has_cm_lists'});db[_0x66b8('0x11d')][_0x66b8('0x113')](db[_0x66b8('0xf')],{'as':'Agents','through':_0x66b8('0x11f')});db[_0x66b8('0x11d')][_0x66b8('0x113')](db[_0x66b8('0xdb')],{'as':'Teams','through':_0x66b8('0x100')});db['VoiceQueue'][_0x66b8('0x113')](db['CmList'],{'as':_0x66b8('0x147'),'through':_0x66b8('0x148')});db[_0x66b8('0x17')][_0x66b8('0x111')](db['User'],{'as':_0x66b8('0xf'),'foreignKey':_0x66b8('0x104')});db[_0x66b8('0x149')][_0x66b8('0x111')](db['User'],{'as':'User','foreignKey':_0x66b8('0x104')});db[_0x66b8('0x1a')][_0x66b8('0x103')](db['VoiceMailMessage'],{'as':'Messages','onDelete':_0x66b8('0x102'),'foreignKey':_0x66b8('0x14a'),'sourceKey':_0x66b8('0x14b')});db[_0x66b8('0x1c')][_0x66b8('0x111')](db[_0x66b8('0x1a')],{'foreignKey':_0x66b8('0x14a'),'targetKey':_0x66b8('0x14b')});db[_0x66b8('0x14c')][_0x66b8('0x103')](db[_0x66b8('0x23')],{'as':_0x66b8('0x14d'),'foreignKey':_0x66b8('0x14e'),'constraints':![]});db['VoiceCallReport']['hasMany'](db[_0x66b8('0x21')],{'as':'AgentReports','foreignKey':'uniqueid','constraints':![]});db[_0x66b8('0x14c')]['belongsTo'](db[_0x66b8('0xf')],{'as':_0x66b8('0xf'),'foreignKey':_0x66b8('0x104')});db[_0x66b8('0x14c')][_0x66b8('0x111')](db['CmContact'],{'as':_0x66b8('0x14f'),'foreignKey':_0x66b8('0x150')});db[_0x66b8('0x37')][_0x66b8('0x111')](db[_0x66b8('0x12e')],{'as':_0x66b8('0x12e'),'foreignKey':'MailAccountId'});db['MailServerOut']['belongsTo'](db[_0x66b8('0x12e')],{'as':_0x66b8('0x12e'),'foreignKey':_0x66b8('0x151')});db[_0x66b8('0x12e')][_0x66b8('0x152')](db[_0x66b8('0x37')],{'as':_0x66b8('0x153'),'onDelete':_0x66b8('0x102')});db[_0x66b8('0x12e')][_0x66b8('0x152')](db['MailServerOut'],{'as':'Smtp','onDelete':'cascade'});db['MailAccount'][_0x66b8('0x103')](db[_0x66b8('0x78')],{'as':_0x66b8('0x154'),'foreignKey':_0x66b8('0x151'),'onDelete':'cascade'});db[_0x66b8('0x12e')][_0x66b8('0x103')](db[_0x66b8('0x155')],{'as':'Answers','foreignKey':_0x66b8('0x151')});db['MailAccount'][_0x66b8('0x103')](db[_0x66b8('0x3f')],{'as':_0x66b8('0x156'),'foreignKey':_0x66b8('0x151')});db[_0x66b8('0x12e')]['hasMany'](db[_0x66b8('0x3d')],{'as':_0x66b8('0x157')});db[_0x66b8('0x12e')]['hasMany'](db['MailApplication'],{'as':'Applications'});db['MailAccount'][_0x66b8('0x111')](db[_0x66b8('0xec')],{'as':_0x66b8('0x158'),'foreignKey':'ListId'});db['MailAccount'][_0x66b8('0x111')](db[_0x66b8('0x88')],{'as':'Template','foreignKey':_0x66b8('0x159')});db[_0x66b8('0x12e')][_0x66b8('0x111')](db['Pause'],{'as':_0x66b8('0x146'),'foreignKey':_0x66b8('0x15a')});db[_0x66b8('0x12e')][_0x66b8('0x113')](db['User'],{'as':_0x66b8('0x15b'),'through':_0x66b8('0x12f')});db[_0x66b8('0x3a')][_0x66b8('0x113')](db[_0x66b8('0xf')],{'as':_0x66b8('0x15b'),'through':_0x66b8('0x2d')});db[_0x66b8('0x3a')][_0x66b8('0x113')](db['Team'],{'through':_0x66b8('0x15c'),'as':_0x66b8('0x15d')});db[_0x66b8('0x3d')][_0x66b8('0x103')](db[_0x66b8('0x3f')],{'as':_0x66b8('0x156'),'onDelete':_0x66b8('0x102'),'foreignKey':_0x66b8('0x15e')});db[_0x66b8('0x3d')][_0x66b8('0x111')](db['MailAccount'],{'as':'Account','foreignKey':'MailAccountId'});db['MailInteraction'][_0x66b8('0x111')](db[_0x66b8('0x6a')],{'as':'Contact','foreignKey':_0x66b8('0x150')});db['MailInteraction'][_0x66b8('0x111')](db[_0x66b8('0xf')],{'as':_0x66b8('0x15f'),'foreignKey':_0x66b8('0x104')});db[_0x66b8('0x3d')][_0x66b8('0x113')](db[_0x66b8('0x86')],{'through':_0x66b8('0x160'),'as':_0x66b8('0x161')});db[_0x66b8('0x3d')][_0x66b8('0x113')](db['Tag'],{'through':_0x66b8('0x160'),'as':_0x66b8('0x162')});db['MailInteraction'][_0x66b8('0x113')](db['User'],{'as':'Users','through':_0x66b8('0x163'),'foreignKey':'MailInteractionId'});db[_0x66b8('0x3f')]['hasMany'](db[_0x66b8('0xe3')],{'as':_0x66b8('0x164'),'onDelete':'cascade'});db[_0x66b8('0x3f')]['belongsTo'](db[_0x66b8('0xf')],{'as':_0x66b8('0xf')});db[_0x66b8('0x3f')][_0x66b8('0x111')](db['CmContact'],{'onDelete':_0x66b8('0x102'),'as':_0x66b8('0x14f')});db[_0x66b8('0x3f')]['belongsTo'](db[_0x66b8('0x3d')],{'as':_0x66b8('0x165'),'foreignKey':_0x66b8('0x15e')});db[_0x66b8('0x3f')][_0x66b8('0x111')](db[_0x66b8('0x12e')],{'as':_0x66b8('0x166'),'foreignKey':_0x66b8('0x151')});db[_0x66b8('0x3f')]['belongsTo'](db['ChatWebsite'],{'as':_0x66b8('0x5a'),'foreignKey':_0x66b8('0x167')});db[_0x66b8('0x3f')]['belongsTo'](db[_0x66b8('0x62')],{'as':_0x66b8('0x62'),'foreignKey':_0x66b8('0x168')});db[_0x66b8('0x41')][_0x66b8('0x111')](db['User'],{'onDelete':_0x66b8('0x169')});db[_0x66b8('0x41')][_0x66b8('0x111')](db[_0x66b8('0x3a')],{'onDelete':_0x66b8('0x169')});db['MailApplication'][_0x66b8('0x111')](db['MailAccount'],{'onDelete':'restrict'});db[_0x66b8('0x41')]['belongsTo'](db[_0x66b8('0x144')],{'onDelete':_0x66b8('0x169'),'foreignKey':_0x66b8('0x145')});db[_0x66b8('0x41')][_0x66b8('0x111')](db[_0x66b8('0x86')],{'onDelete':_0x66b8('0x169'),'foreignKey':_0x66b8('0x16a')});db[_0x66b8('0x42')][_0x66b8('0x111')](db[_0x66b8('0x12e')],{});db['MailQueueReport']['belongsTo'](db[_0x66b8('0xec')],{'as':_0x66b8('0x158'),'foreignKey':'ListId'});db[_0x66b8('0x42')]['belongsTo'](db[_0x66b8('0x6a')],{'as':_0x66b8('0x14f'),'foreignKey':_0x66b8('0x150')});db[_0x66b8('0x42')]['belongsTo'](db[_0x66b8('0x3d')],{});db[_0x66b8('0x42')][_0x66b8('0x111')](db['MailMessage'],{});db[_0x66b8('0x42')][_0x66b8('0x111')](db['User'],{});db['MailQueueReport']['belongsTo'](db[_0x66b8('0x3a')],{});db['Dashboard'][_0x66b8('0x103')](db[_0x66b8('0x45')],{'as':_0x66b8('0x16b'),'onDelete':_0x66b8('0x102')});db['FaxAccount'][_0x66b8('0x103')](db['Disposition'],{'as':'Dispositions','foreignKey':'FaxAccountId','onDelete':'cascade'});db[_0x66b8('0x12b')]['hasMany'](db[_0x66b8('0x155')],{'as':'Answers','foreignKey':_0x66b8('0x16c')});db['FaxAccount'][_0x66b8('0x103')](db[_0x66b8('0x47')],{'as':_0x66b8('0x157')});db['FaxAccount'][_0x66b8('0x103')](db['FaxApplication'],{'as':_0x66b8('0x16d')});db['FaxAccount'][_0x66b8('0x103')](db[_0x66b8('0x15')],{'as':_0x66b8('0x16e'),'onDelete':_0x66b8('0x102')});db[_0x66b8('0x12b')]['hasMany'](db[_0x66b8('0x16f')],{'as':_0x66b8('0x156')});db[_0x66b8('0x12b')][_0x66b8('0x111')](db[_0x66b8('0x26')],{'as':_0x66b8('0x26')});db[_0x66b8('0x12b')][_0x66b8('0x111')](db[_0x66b8('0xec')],{'as':'List','foreignKey':'ListId'});db[_0x66b8('0x12b')][_0x66b8('0x111')](db['Pause'],{'as':_0x66b8('0x146'),'foreignKey':_0x66b8('0x15a')});db[_0x66b8('0x12b')][_0x66b8('0x113')](db['User'],{'as':_0x66b8('0x15b'),'through':_0x66b8('0x12d')});db[_0x66b8('0x170')]['belongsTo'](db[_0x66b8('0xf')],{'onDelete':_0x66b8('0x169')});db[_0x66b8('0x170')][_0x66b8('0x111')](db[_0x66b8('0x4a')],{'onDelete':_0x66b8('0x169')});db[_0x66b8('0x170')]['belongsTo'](db[_0x66b8('0x12b')],{'onDelete':_0x66b8('0x169')});db[_0x66b8('0x170')][_0x66b8('0x111')](db[_0x66b8('0x86')],{'onDelete':_0x66b8('0x169'),'foreignKey':_0x66b8('0x16a')});db[_0x66b8('0x47')]['hasMany'](db[_0x66b8('0x16f')],{'as':'Messages','onDelete':'cascade','foreignKey':_0x66b8('0x171')});db[_0x66b8('0x47')][_0x66b8('0x111')](db[_0x66b8('0x12b')],{'as':_0x66b8('0x166'),'foreignKey':_0x66b8('0x16c')});db['FaxInteraction'][_0x66b8('0x111')](db[_0x66b8('0x6a')],{'as':_0x66b8('0x14f'),'foreignKey':_0x66b8('0x150')});db[_0x66b8('0x47')][_0x66b8('0x111')](db[_0x66b8('0xf')],{'as':_0x66b8('0x15f'),'foreignKey':'UserId'});db[_0x66b8('0x47')]['belongsToMany'](db[_0x66b8('0x86')],{'through':'fax_interaction_has_tags','as':_0x66b8('0x161')});db[_0x66b8('0x47')][_0x66b8('0x113')](db[_0x66b8('0x86')],{'through':_0x66b8('0x172'),'as':_0x66b8('0x162')});db[_0x66b8('0x47')][_0x66b8('0x113')](db[_0x66b8('0xf')],{'as':_0x66b8('0x173'),'through':'user_has_fax_interactions','foreignKey':_0x66b8('0x171')});db[_0x66b8('0x16f')]['belongsTo'](db[_0x66b8('0xf')],{'onDelete':_0x66b8('0x102'),'as':_0x66b8('0xf')});db[_0x66b8('0x16f')][_0x66b8('0x111')](db[_0x66b8('0x47')],{'as':_0x66b8('0x165'),'foreignKey':_0x66b8('0x171')});db[_0x66b8('0x16f')][_0x66b8('0x111')](db['CmContact'],{'onDelete':'cascade','as':_0x66b8('0x14f')});db[_0x66b8('0x16f')][_0x66b8('0x111')](db[_0x66b8('0xe3')],{'as':_0x66b8('0xe3'),'foreignKey':_0x66b8('0x174')});db[_0x66b8('0x16f')][_0x66b8('0x111')](db[_0x66b8('0x12b')],{'as':_0x66b8('0x166'),'foreignKey':_0x66b8('0x16c')});db[_0x66b8('0x4a')][_0x66b8('0x113')](db[_0x66b8('0xf')],{'as':_0x66b8('0x15b'),'through':'UserFaxQueue'});db['FaxQueue'][_0x66b8('0x113')](db[_0x66b8('0xdb')],{'through':_0x66b8('0x175'),'as':_0x66b8('0x15d')});db[_0x66b8('0x4b')]['belongsTo'](db[_0x66b8('0x12b')],{});db[_0x66b8('0x4b')][_0x66b8('0x111')](db[_0x66b8('0xec')],{'as':'List','foreignKey':_0x66b8('0x176')});db[_0x66b8('0x4b')]['belongsTo'](db[_0x66b8('0x6a')],{'as':_0x66b8('0x14f'),'foreignKey':_0x66b8('0x150')});db[_0x66b8('0x4b')][_0x66b8('0x111')](db['FaxInteraction'],{});db['FaxQueueReport']['belongsTo'](db[_0x66b8('0x16f')],{});db[_0x66b8('0x4b')][_0x66b8('0x111')](db[_0x66b8('0xf')],{});db['FaxQueueReport'][_0x66b8('0x111')](db[_0x66b8('0x4a')],{});db[_0x66b8('0x4c')][_0x66b8('0x103')](db[_0x66b8('0x78')],{'as':_0x66b8('0x154'),'foreignKey':_0x66b8('0x177'),'onDelete':_0x66b8('0x102')});db['SmsAccount'][_0x66b8('0x103')](db[_0x66b8('0x155')],{'as':_0x66b8('0x178'),'foreignKey':_0x66b8('0x177')});db[_0x66b8('0x4c')][_0x66b8('0x103')](db[_0x66b8('0x50')],{'as':_0x66b8('0x156'),'foreignKey':'SmsAccountId'});db[_0x66b8('0x4c')][_0x66b8('0x103')](db[_0x66b8('0x10c')],{'as':_0x66b8('0x157')});db[_0x66b8('0x4c')]['hasMany'](db[_0x66b8('0x4e')],{'as':_0x66b8('0x16d')});db[_0x66b8('0x4c')]['belongsTo'](db['CmList'],{'as':'List','foreignKey':'ListId'});db[_0x66b8('0x4c')][_0x66b8('0x111')](db[_0x66b8('0x7d')],{'as':_0x66b8('0x146'),'foreignKey':_0x66b8('0x15a')});db[_0x66b8('0x4c')][_0x66b8('0x113')](db[_0x66b8('0xf')],{'as':_0x66b8('0x15b'),'through':_0x66b8('0x133')});db[_0x66b8('0x4e')][_0x66b8('0x111')](db[_0x66b8('0xf')],{'onDelete':_0x66b8('0x169')});db[_0x66b8('0x4e')][_0x66b8('0x111')](db[_0x66b8('0x52')],{'onDelete':_0x66b8('0x169')});db['SmsApplication'][_0x66b8('0x111')](db['SmsAccount'],{'onDelete':_0x66b8('0x169')});db[_0x66b8('0x4e')][_0x66b8('0x111')](db[_0x66b8('0x144')],{'onDelete':_0x66b8('0x169'),'foreignKey':_0x66b8('0x145')});db['SmsApplication'][_0x66b8('0x111')](db[_0x66b8('0x86')],{'onDelete':'restrict','foreignKey':_0x66b8('0x16a')});db[_0x66b8('0x10c')][_0x66b8('0x103')](db[_0x66b8('0x50')],{'as':_0x66b8('0x156'),'onDelete':_0x66b8('0x102'),'foreignKey':_0x66b8('0x179')});db['SmsInteraction'][_0x66b8('0x111')](db[_0x66b8('0x4c')],{'as':_0x66b8('0x166'),'foreignKey':_0x66b8('0x177')});db[_0x66b8('0x10c')][_0x66b8('0x111')](db['CmContact'],{'as':_0x66b8('0x14f'),'foreignKey':_0x66b8('0x150')});db['SmsInteraction'][_0x66b8('0x111')](db[_0x66b8('0xf')],{'as':_0x66b8('0x15f'),'foreignKey':_0x66b8('0x104')});db[_0x66b8('0x10c')][_0x66b8('0x113')](db[_0x66b8('0x86')],{'through':_0x66b8('0x17a'),'as':_0x66b8('0x161')});db['SmsInteraction'][_0x66b8('0x113')](db[_0x66b8('0x86')],{'through':_0x66b8('0x17a'),'as':_0x66b8('0x162')});db[_0x66b8('0x10c')]['belongsToMany'](db[_0x66b8('0xf')],{'as':_0x66b8('0x173'),'through':_0x66b8('0x17b'),'foreignKey':_0x66b8('0x179')});db[_0x66b8('0x50')][_0x66b8('0x111')](db[_0x66b8('0xf')],{'as':'User'});db[_0x66b8('0x50')]['belongsTo'](db[_0x66b8('0x6a')],{'onDelete':_0x66b8('0x102'),'as':'Contact'});db[_0x66b8('0x50')][_0x66b8('0x111')](db[_0x66b8('0x10c')],{'onDelete':'cascade','as':_0x66b8('0x165'),'foreignKey':_0x66b8('0x179')});db[_0x66b8('0x50')][_0x66b8('0x111')](db[_0x66b8('0x4c')],{'as':'Account','foreignKey':_0x66b8('0x177')});db[_0x66b8('0x52')][_0x66b8('0x113')](db[_0x66b8('0xf')],{'as':_0x66b8('0x15b'),'through':_0x66b8('0x31'),'foreignKey':'SmsQueueId'});db['SmsQueue'][_0x66b8('0x113')](db[_0x66b8('0xdb')],{'through':'team_has_sms_queues','as':_0x66b8('0x15d')});db[_0x66b8('0x54')]['hasMany'](db[_0x66b8('0x78')],{'as':_0x66b8('0x154'),'foreignKey':_0x66b8('0x17c'),'onDelete':_0x66b8('0x102')});db[_0x66b8('0x54')][_0x66b8('0x103')](db[_0x66b8('0x155')],{'as':'Answers','foreignKey':_0x66b8('0x17c')});db[_0x66b8('0x54')][_0x66b8('0x103')](db[_0x66b8('0x10a')],{'as':_0x66b8('0x157'),'foreignKey':_0x66b8('0x17c')});db['OpenchannelAccount'][_0x66b8('0x103')](db[_0x66b8('0x57')],{'as':'Messages','foreignKey':_0x66b8('0x17c')});db[_0x66b8('0x54')]['hasMany'](db[_0x66b8('0x17d')],{'as':'Applications','foreignKey':_0x66b8('0x17c')});db[_0x66b8('0x54')][_0x66b8('0x111')](db[_0x66b8('0xec')],{'as':_0x66b8('0x158'),'foreignKey':_0x66b8('0x176')});db[_0x66b8('0x54')][_0x66b8('0x111')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x66b8('0x15a')});db[_0x66b8('0x54')]['belongsToMany'](db['User'],{'as':'Agents','through':'user_has_openchannel_accounts'});db[_0x66b8('0x17d')][_0x66b8('0x111')](db['User'],{'onDelete':_0x66b8('0x169')});db['OpenchannelApplication'][_0x66b8('0x111')](db[_0x66b8('0x123')],{'onDelete':_0x66b8('0x169'),'foreignKey':_0x66b8('0x17e')});db[_0x66b8('0x17d')][_0x66b8('0x111')](db[_0x66b8('0x54')],{'onDelete':'restrict','foreignKey':'OpenchannelAccountId'});db[_0x66b8('0x17d')]['belongsTo'](db['Interval'],{'onDelete':_0x66b8('0x169'),'foreignKey':_0x66b8('0x145')});db['OpenchannelApplication'][_0x66b8('0x111')](db[_0x66b8('0x86')],{'onDelete':_0x66b8('0x169'),'foreignKey':_0x66b8('0x16a')});db[_0x66b8('0x10a')]['hasMany'](db[_0x66b8('0x57')],{'as':_0x66b8('0x156'),'onDelete':_0x66b8('0x102'),'foreignKey':'OpenchannelInteractionId'});db[_0x66b8('0x10a')]['belongsTo'](db[_0x66b8('0x54')],{'as':_0x66b8('0x166'),'foreignKey':_0x66b8('0x17c')});db[_0x66b8('0x10a')][_0x66b8('0x111')](db['CmContact'],{'as':_0x66b8('0x14f'),'foreignKey':_0x66b8('0x150')});db['OpenchannelInteraction']['belongsTo'](db[_0x66b8('0xf')],{'as':_0x66b8('0x15f'),'foreignKey':_0x66b8('0x104')});db[_0x66b8('0x10a')]['belongsToMany'](db['Tag'],{'through':_0x66b8('0x17f'),'as':_0x66b8('0x161')});db['OpenchannelInteraction'][_0x66b8('0x113')](db[_0x66b8('0x86')],{'through':_0x66b8('0x17f'),'as':'ThroughTags'});db[_0x66b8('0x10a')][_0x66b8('0x113')](db[_0x66b8('0xf')],{'as':_0x66b8('0x173'),'through':_0x66b8('0x11b'),'foreignKey':_0x66b8('0x180')});db['OpenchannelMessage'][_0x66b8('0x111')](db['User'],{'onDelete':_0x66b8('0x102'),'as':_0x66b8('0xf')});db[_0x66b8('0x57')][_0x66b8('0x111')](db[_0x66b8('0x6a')],{'onDelete':_0x66b8('0x102'),'as':_0x66b8('0x14f')});db[_0x66b8('0x57')]['belongsTo'](db['OpenchannelInteraction'],{'onDelete':_0x66b8('0x102'),'as':_0x66b8('0x165'),'foreignKey':_0x66b8('0x180')});db[_0x66b8('0x57')][_0x66b8('0x111')](db[_0x66b8('0xe3')],{'as':_0x66b8('0xe3'),'foreignKey':_0x66b8('0x174')});db[_0x66b8('0x57')][_0x66b8('0x111')](db[_0x66b8('0x54')],{'as':_0x66b8('0x166'),'foreignKey':_0x66b8('0x17c')});db[_0x66b8('0x123')][_0x66b8('0x113')](db[_0x66b8('0xf')],{'as':_0x66b8('0x15b'),'through':'UserOpenchannelQueue','foreignKey':_0x66b8('0x17e')});db[_0x66b8('0x123')]['belongsToMany'](db[_0x66b8('0xdb')],{'through':_0x66b8('0x181'),'as':_0x66b8('0x15d')});db[_0x66b8('0x5a')][_0x66b8('0x103')](db[_0x66b8('0x78')],{'as':_0x66b8('0x154'),'foreignKey':_0x66b8('0x167'),'onDelete':'cascade'});db[_0x66b8('0x5a')][_0x66b8('0x103')](db[_0x66b8('0x155')],{'as':_0x66b8('0x178'),'foreignKey':_0x66b8('0x167')});db['ChatWebsite']['hasMany'](db[_0x66b8('0x67')],{'as':'ProactiveActions'});db[_0x66b8('0x5a')][_0x66b8('0x103')](db[_0x66b8('0x5e')],{'as':'Interactions'});db[_0x66b8('0x5a')]['hasMany'](db[_0x66b8('0x182')],{'as':_0x66b8('0x16d')});db[_0x66b8('0x5a')]['hasMany'](db[_0x66b8('0x60')],{'as':_0x66b8('0x156')});db[_0x66b8('0x5a')][_0x66b8('0x111')](db[_0x66b8('0xec')],{'as':'List','foreignKey':_0x66b8('0x176')});db['ChatWebsite'][_0x66b8('0x111')](db[_0x66b8('0x144')],{'as':'Interval','foreignKey':'IntervalId'});db[_0x66b8('0x5a')][_0x66b8('0x111')](db['MailAccount'],{'as':_0x66b8('0x12e'),'foreignKey':_0x66b8('0x151')});db[_0x66b8('0x5a')][_0x66b8('0x111')](db[_0x66b8('0x7d')],{'as':_0x66b8('0x146'),'foreignKey':_0x66b8('0x15a')});db['ChatWebsite'][_0x66b8('0x113')](db[_0x66b8('0xf')],{'as':_0x66b8('0x15b'),'through':_0x66b8('0x12a')});db[_0x66b8('0x5c')][_0x66b8('0x111')](db[_0x66b8('0x54')],{});db[_0x66b8('0x5c')][_0x66b8('0x111')](db['CmList'],{'as':_0x66b8('0x158'),'foreignKey':_0x66b8('0x176')});db['OpenchannelQueueReport']['belongsTo'](db[_0x66b8('0x6a')],{'as':_0x66b8('0x14f'),'foreignKey':_0x66b8('0x150')});db[_0x66b8('0x5c')][_0x66b8('0x111')](db[_0x66b8('0x10a')],{});db[_0x66b8('0x5c')][_0x66b8('0x111')](db['OpenchannelMessage'],{});db[_0x66b8('0x5c')]['belongsTo'](db[_0x66b8('0xf')],{});db[_0x66b8('0x5c')][_0x66b8('0x111')](db[_0x66b8('0x123')],{});db[_0x66b8('0x182')]['belongsTo'](db['User'],{'as':_0x66b8('0x183'),'foreignKey':_0x66b8('0x104'),'onDelete':_0x66b8('0x169')});db[_0x66b8('0x182')][_0x66b8('0x111')](db[_0x66b8('0x64')],{'as':_0x66b8('0x184'),'foreignKey':_0x66b8('0x185'),'onDelete':'restrict'});db[_0x66b8('0x182')][_0x66b8('0x111')](db['ChatWebsite'],{'as':_0x66b8('0x186'),'foreignKey':_0x66b8('0x167'),'onDelete':_0x66b8('0x169')});db['ChatApplication'][_0x66b8('0x111')](db[_0x66b8('0x86')],{'onDelete':_0x66b8('0x169'),'foreignKey':_0x66b8('0x16a')});db[_0x66b8('0x5e')][_0x66b8('0x103')](db[_0x66b8('0x60')],{'as':_0x66b8('0x156'),'onDelete':_0x66b8('0x102'),'foreignKey':_0x66b8('0x187')});db[_0x66b8('0x5e')][_0x66b8('0x111')](db['ChatWebsite'],{'as':_0x66b8('0x166'),'foreignKey':_0x66b8('0x167')});db[_0x66b8('0x5e')][_0x66b8('0x111')](db['CmContact'],{'as':_0x66b8('0x14f'),'foreignKey':'ContactId'});db[_0x66b8('0x5e')]['belongsTo'](db[_0x66b8('0xf')],{'as':_0x66b8('0x15f'),'foreignKey':'UserId'});db[_0x66b8('0x5e')][_0x66b8('0x113')](db[_0x66b8('0x86')],{'through':_0x66b8('0x188'),'as':'Tags'});db['ChatInteraction'][_0x66b8('0x113')](db[_0x66b8('0x86')],{'through':_0x66b8('0x188'),'as':_0x66b8('0x162')});db['ChatInteraction'][_0x66b8('0x113')](db[_0x66b8('0xf')],{'as':_0x66b8('0x173'),'through':'user_has_chat_interactions','foreignKey':_0x66b8('0x187')});db[_0x66b8('0x60')][_0x66b8('0x111')](db[_0x66b8('0xf')],{'onDelete':'cascade','as':_0x66b8('0xf')});db[_0x66b8('0x60')][_0x66b8('0x111')](db[_0x66b8('0x6a')],{'onDelete':_0x66b8('0x102'),'as':_0x66b8('0x14f'),'foreignKey':_0x66b8('0x150')});db[_0x66b8('0x60')]['belongsTo'](db['ChatInteraction'],{'onDelete':_0x66b8('0x102'),'as':_0x66b8('0x165'),'foreignKey':'ChatInteractionId'});db[_0x66b8('0x60')]['belongsTo'](db[_0x66b8('0xe3')],{'as':_0x66b8('0xe3'),'foreignKey':_0x66b8('0x174')});db[_0x66b8('0x60')][_0x66b8('0x111')](db[_0x66b8('0x5a')],{'as':_0x66b8('0x166'),'foreignKey':_0x66b8('0x167')});db[_0x66b8('0x62')]['hasMany'](db[_0x66b8('0xe3')],{'as':_0x66b8('0x164'),'foreignKey':_0x66b8('0x168'),'onDelete':'cascade','hooks':!![]});db[_0x66b8('0x62')][_0x66b8('0x111')](db['CmContact'],{'onDelete':_0x66b8('0x102'),'as':'Contact','foreignKey':'ContactId'});db[_0x66b8('0x62')]['belongsTo'](db['ChatWebsite'],{'as':_0x66b8('0x166'),'foreignKey':'ChatWebsiteId'});db[_0x66b8('0x64')][_0x66b8('0x113')](db[_0x66b8('0xf')],{'as':_0x66b8('0x15b'),'through':_0x66b8('0x189'),'hooks':!![]});db[_0x66b8('0x64')]['belongsToMany'](db['Team'],{'through':_0x66b8('0x18a'),'as':_0x66b8('0x15d')});db[_0x66b8('0x65')][_0x66b8('0x103')](db[_0x66b8('0xc9')],{'as':_0x66b8('0x156'),'foreignKey':_0x66b8('0x18b'),'onDelete':'cascade'});db['ChatGroup']['belongsToMany'](db[_0x66b8('0xf')],{'as':_0x66b8('0x13b'),'through':_0x66b8('0x18c')});db['ChatProactiveAction'][_0x66b8('0x111')](db[_0x66b8('0x5a')],{'as':_0x66b8('0x186'),'foreignKey':_0x66b8('0x167')});db['CmCompany']['hasMany'](db['CmContact'],{'as':_0x66b8('0x18d'),'foreignKey':_0x66b8('0x18e')});db[_0x66b8('0x6a')]['hasMany'](db[_0x66b8('0x6c')],{'as':_0x66b8('0x13d'),'foreignKey':_0x66b8('0x150')});db[_0x66b8('0x6a')][_0x66b8('0x103')](db[_0x66b8('0x70')],{'as':_0x66b8('0x107'),'foreignKey':_0x66b8('0x150')});db[_0x66b8('0x6a')][_0x66b8('0x103')](db[_0x66b8('0x71')],{'as':_0x66b8('0x13e'),'foreignKey':_0x66b8('0x150')});db[_0x66b8('0x6a')][_0x66b8('0x103')](db[_0x66b8('0x109')],{'as':_0x66b8('0x109'),'foreignKey':_0x66b8('0x150')});db[_0x66b8('0x6a')]['hasMany'](db[_0x66b8('0xcd')],{'as':_0x66b8('0x140'),'foreignKey':'ContactId'});db[_0x66b8('0x6a')]['hasMany'](db[_0x66b8('0x10a')],{'as':'OpenchannelInteractions','foreignKey':'ContactId','onDelete':_0x66b8('0x169')});db[_0x66b8('0x6a')][_0x66b8('0x103')](db[_0x66b8('0x5e')],{'as':_0x66b8('0x10b'),'foreignKey':'ContactId','onDelete':_0x66b8('0x169')});db[_0x66b8('0x6a')]['hasMany'](db['SmsInteraction'],{'as':_0x66b8('0x119'),'foreignKey':'ContactId','onDelete':_0x66b8('0x169')});db['CmContact'][_0x66b8('0x103')](db[_0x66b8('0x47')],{'as':_0x66b8('0x118'),'foreignKey':'ContactId','onDelete':_0x66b8('0x169')});db[_0x66b8('0x6a')][_0x66b8('0x103')](db[_0x66b8('0x3d')],{'as':_0x66b8('0x10d'),'foreignKey':_0x66b8('0x150'),'onDelete':'restrict'});db[_0x66b8('0x6a')][_0x66b8('0x111')](db['CmCompany'],{'as':_0x66b8('0x18f'),'foreignKey':_0x66b8('0x18e')});db[_0x66b8('0x6a')][_0x66b8('0x111')](db[_0x66b8('0xec')],{'as':_0x66b8('0x158'),'foreignKey':'ListId','onDelete':_0x66b8('0x102')});db['CmContact'][_0x66b8('0x113')](db[_0x66b8('0xf')],{'as':_0x66b8('0x173'),'through':'cm_user_has_contacts'});db['CmContact']['belongsToMany'](db[_0x66b8('0x86')],{'as':_0x66b8('0x161'),'through':_0x66b8('0x190')});db[_0x66b8('0x6a')][_0x66b8('0x113')](db[_0x66b8('0x86')],{'through':_0x66b8('0x190'),'as':_0x66b8('0x162')});db[_0x66b8('0x6c')][_0x66b8('0x111')](db[_0x66b8('0x6a')],{'as':_0x66b8('0x14f'),'foreignKey':_0x66b8('0x150'),'onDelete':_0x66b8('0x102')});db[_0x66b8('0x6c')][_0x66b8('0x111')](db[_0x66b8('0xec')],{'as':_0x66b8('0x158'),'foreignKey':'ListId','onDelete':_0x66b8('0x102')});db[_0x66b8('0x6c')][_0x66b8('0x111')](db[_0x66b8('0xf')],{'as':_0x66b8('0x183'),'foreignKey':_0x66b8('0x104')});db[_0x66b8('0x6c')][_0x66b8('0x111')](db[_0x66b8('0x11d')],{'as':'Queue','foreignKey':'VoiceQueueId','onDelete':_0x66b8('0x102')});db['CmHopper']['belongsTo'](db[_0x66b8('0xdf')],{'as':_0x66b8('0xdf'),'foreignKey':_0x66b8('0x191'),'onDelete':_0x66b8('0x102')});db[_0x66b8('0x6c')]['belongsTo'](db[_0x66b8('0xf')],{'as':'Owner','foreignKey':_0x66b8('0x192')});db[_0x66b8('0x6e')]['belongsTo'](db[_0x66b8('0x6a')],{'as':_0x66b8('0x14f'),'foreignKey':_0x66b8('0x150'),'onDelete':_0x66b8('0x102')});db[_0x66b8('0x6e')]['belongsTo'](db['CmList'],{'as':_0x66b8('0x158'),'foreignKey':'ListId','onDelete':_0x66b8('0x102')});db[_0x66b8('0x6e')]['belongsTo'](db[_0x66b8('0x11d')],{'as':'Queue','foreignKey':'VoiceQueueId','onDelete':'cascade'});db[_0x66b8('0x6e')]['belongsTo'](db[_0x66b8('0xdf')],{'as':_0x66b8('0xdf'),'foreignKey':'CampaignId','onDelete':_0x66b8('0x102')});db[_0x66b8('0x75')][_0x66b8('0x103')](db[_0x66b8('0x7a')],{'as':{'plural':'All','singular':_0x66b8('0x193')},'foreignKey':_0x66b8('0x194'),'onDelete':_0x66b8('0x102'),'hooks':!![]});db[_0x66b8('0x75')][_0x66b8('0x103')](db[_0x66b8('0x7a')],{'as':{'plural':_0x66b8('0x195'),'singular':_0x66b8('0x196')},'foreignKey':_0x66b8('0x197'),'onDelete':'cascade','hooks':!![]});db['Automation'][_0x66b8('0x103')](db[_0x66b8('0x73')],{'as':_0x66b8('0x198'),'foreignKey':_0x66b8('0x199'),'onDelete':'cascade','hooks':!![]});db[_0x66b8('0x78')]['hasMany'](db['Disposition'],{'as':_0x66b8('0x154'),'foreignKey':_0x66b8('0x19a'),'onDelete':'cascade'});db['Interval'][_0x66b8('0x103')](db[_0x66b8('0x144')],{'as':_0x66b8('0x19b'),'foreignKey':_0x66b8('0x145'),'onDelete':_0x66b8('0x102'),'hooks':!![],'required':![]});db[_0x66b8('0x144')][_0x66b8('0x103')](db[_0x66b8('0x15')],{'as':'Extensions','foreignKey':'IntervalId','onDelete':'restrict'});db[_0x66b8('0x144')][_0x66b8('0x103')](db[_0x66b8('0x41')],{'as':_0x66b8('0x19c'),'foreignKey':_0x66b8('0x145')});db[_0x66b8('0x144')]['hasMany'](db[_0x66b8('0x182')],{'as':'ChatApplications','foreignKey':_0x66b8('0x145')});db[_0x66b8('0x144')][_0x66b8('0x103')](db['FaxApplication'],{'as':_0x66b8('0x19d'),'foreignKey':_0x66b8('0x145')});db[_0x66b8('0x144')][_0x66b8('0x103')](db['SmsApplication'],{'as':_0x66b8('0x19e'),'foreignKey':_0x66b8('0x145')});db[_0x66b8('0x82')][_0x66b8('0x111')](db['MailAccount'],{});db[_0x66b8('0x82')][_0x66b8('0x111')](db[_0x66b8('0x8e')],{'foreignKey':_0x66b8('0x19f')});db[_0x66b8('0x82')]['belongsTo'](db[_0x66b8('0x1a0')],{'foreignKey':_0x66b8('0x1a1')});db[_0x66b8('0x84')]['belongsToMany'](db['VoiceMusicOnHold'],{'as':'Mohs','through':_0x66b8('0x13a'),'onDelete':_0x66b8('0x169')});db[_0x66b8('0x86')][_0x66b8('0x113')](db['CmContact'],{'through':_0x66b8('0x190')});db['Tag']['belongsToMany'](db['ChatInteraction'],{'through':_0x66b8('0x188')});db[_0x66b8('0x86')]['belongsToMany'](db['MailInteraction'],{'through':_0x66b8('0x160')});db['Tag'][_0x66b8('0x113')](db[_0x66b8('0x10c')],{'through':'sms_interaction_has_tags'});db[_0x66b8('0x86')]['belongsToMany'](db[_0x66b8('0x47')],{'through':'fax_interaction_has_tags'});db[_0x66b8('0x86')][_0x66b8('0x113')](db[_0x66b8('0x10a')],{'through':_0x66b8('0x17f')});db[_0x66b8('0x86')][_0x66b8('0x113')](db[_0x66b8('0xf8')],{'through':_0x66b8('0x1a2')});db['Trigger'][_0x66b8('0x103')](db['Condition'],{'as':{'plural':'AllConditions','singular':_0x66b8('0x1a3')},'foreignKey':'TriggerAllId','onDelete':'cascade','hooks':!![]});db['Trigger'][_0x66b8('0x103')](db[_0x66b8('0x7a')],{'as':{'plural':_0x66b8('0x1a4'),'singular':'AnyCondition'},'foreignKey':_0x66b8('0x1a5'),'onDelete':_0x66b8('0x102'),'hooks':!![]});db[_0x66b8('0x8a')][_0x66b8('0x103')](db[_0x66b8('0x73')],{'as':_0x66b8('0x198'),'foreignKey':_0x66b8('0x1a6'),'onDelete':_0x66b8('0x102'),'hooks':!![]});db[_0x66b8('0x1a0')][_0x66b8('0x103')](db[_0x66b8('0x94')],{'as':_0x66b8('0x1a7'),'onDelete':_0x66b8('0x102'),'foreignKey':_0x66b8('0x1a1'),'hooks':!![]});db[_0x66b8('0x8e')]['hasMany'](db[_0x66b8('0x94')],{'as':'Fields','onDelete':'cascade','foreignKey':_0x66b8('0x19f')});db['AnalyticMetric'][_0x66b8('0x103')](db[_0x66b8('0x94')],{'as':_0x66b8('0x1a7'),'onDelete':_0x66b8('0x102'),'foreignKey':'MetricId'});db[_0x66b8('0x94')]['belongsTo'](db[_0x66b8('0x92')],{'foreignKey':'MetricId'});db[_0x66b8('0x97')][_0x66b8('0x103')](db['SalesforceConfiguration'],{'as':_0x66b8('0x1a8'),'onDelete':_0x66b8('0x102'),'foreignKey':_0x66b8('0x1a9')});db['SalesforceConfiguration'][_0x66b8('0x103')](db[_0x66b8('0x1aa')],{'as':'Subjects','onDelete':_0x66b8('0x102'),'foreignKey':_0x66b8('0x1ab')});db[_0x66b8('0x99')][_0x66b8('0x103')](db[_0x66b8('0x1aa')],{'as':_0x66b8('0x1ac'),'onDelete':_0x66b8('0x102'),'foreignKey':_0x66b8('0x1ad')});db[_0x66b8('0x99')][_0x66b8('0x103')](db[_0x66b8('0x1aa')],{'as':_0x66b8('0x1a7'),'onDelete':'cascade','foreignKey':'FieldId'});db[_0x66b8('0x99')]['belongsTo'](db[_0x66b8('0x97')],{'as':_0x66b8('0x166'),'foreignKey':_0x66b8('0x1a9')});db[_0x66b8('0x1aa')][_0x66b8('0x103')](db[_0x66b8('0x1aa')],{'as':_0x66b8('0x1ae'),'foreignKey':_0x66b8('0x1ab')});db['SalesforceField'][_0x66b8('0x103')](db['SalesforceField'],{'as':_0x66b8('0x1af'),'foreignKey':_0x66b8('0x1ad')});db[_0x66b8('0x1aa')][_0x66b8('0x103')](db['SalesforceField'],{'as':'Field','foreignKey':_0x66b8('0x1b0')});db[_0x66b8('0x1aa')][_0x66b8('0x111')](db[_0x66b8('0x8c')],{'as':'Variable','foreignKey':_0x66b8('0x1b1')});db[_0x66b8('0x9b')][_0x66b8('0x103')](db[_0x66b8('0x1b2')],{'as':_0x66b8('0x1a8'),'onDelete':_0x66b8('0x102'),'foreignKey':'AccountId'});db[_0x66b8('0x1b2')]['hasMany'](db[_0x66b8('0x9e')],{'as':'Subjects','onDelete':_0x66b8('0x102'),'foreignKey':'SubjectId'});db[_0x66b8('0x1b2')][_0x66b8('0x103')](db[_0x66b8('0x9e')],{'as':_0x66b8('0x1ac'),'onDelete':_0x66b8('0x102'),'foreignKey':_0x66b8('0x1ad')});db['SugarcrmConfiguration']['hasMany'](db[_0x66b8('0x9e')],{'as':_0x66b8('0x1a7'),'onDelete':'cascade','foreignKey':_0x66b8('0x1b0')});db['SugarcrmConfiguration'][_0x66b8('0x111')](db['SugarcrmAccount'],{'as':_0x66b8('0x166'),'foreignKey':_0x66b8('0x1a9')});db['SugarcrmField'][_0x66b8('0x103')](db[_0x66b8('0x9e')],{'as':_0x66b8('0x1ae'),'foreignKey':_0x66b8('0x1ab')});db[_0x66b8('0x9e')][_0x66b8('0x103')](db[_0x66b8('0x9e')],{'as':_0x66b8('0x1af'),'foreignKey':'DescriptionId'});db['SugarcrmField']['hasMany'](db[_0x66b8('0x9e')],{'as':'Field','foreignKey':_0x66b8('0x1b0')});db['SugarcrmField'][_0x66b8('0x111')](db[_0x66b8('0x8c')],{'as':_0x66b8('0x8c'),'foreignKey':'VariableId'});db[_0x66b8('0x1b3')][_0x66b8('0x103')](db[_0x66b8('0xa0')],{'as':_0x66b8('0x1a8'),'onDelete':'cascade','foreignKey':_0x66b8('0x1a9')});db[_0x66b8('0xa0')]['hasMany'](db[_0x66b8('0xa2')],{'as':_0x66b8('0x1b4'),'onDelete':_0x66b8('0x102'),'foreignKey':'SubjectId'});db['DeskConfiguration'][_0x66b8('0x103')](db['DeskField'],{'as':'Descriptions','onDelete':_0x66b8('0x102'),'foreignKey':_0x66b8('0x1ad')});db[_0x66b8('0xa0')][_0x66b8('0x103')](db[_0x66b8('0xa2')],{'as':'Fields','onDelete':_0x66b8('0x102'),'foreignKey':'FieldId'});db['DeskConfiguration'][_0x66b8('0x111')](db[_0x66b8('0x1b3')],{'as':_0x66b8('0x166'),'foreignKey':'AccountId'});db[_0x66b8('0xa0')][_0x66b8('0x113')](db[_0x66b8('0x86')],{'through':'int_desk_configuration_has_tags'});db['DeskField'][_0x66b8('0x103')](db['DeskField'],{'as':_0x66b8('0x1ae'),'foreignKey':'SubjectId'});db[_0x66b8('0xa2')][_0x66b8('0x103')](db[_0x66b8('0xa2')],{'as':_0x66b8('0x1af'),'foreignKey':_0x66b8('0x1ad')});db[_0x66b8('0xa2')][_0x66b8('0x103')](db[_0x66b8('0xa2')],{'as':_0x66b8('0x1b5'),'foreignKey':_0x66b8('0x1b0')});db[_0x66b8('0xa2')][_0x66b8('0x111')](db[_0x66b8('0x8c')],{'as':'Variable','foreignKey':_0x66b8('0x1b1')});db['ZohoAccount'][_0x66b8('0x103')](db[_0x66b8('0xa5')],{'as':'Configurations','onDelete':_0x66b8('0x102'),'foreignKey':_0x66b8('0x1a9')});db[_0x66b8('0xa5')]['hasMany'](db['ZohoField'],{'as':_0x66b8('0x1b4'),'onDelete':_0x66b8('0x102'),'foreignKey':'SubjectId'});db[_0x66b8('0xa5')]['hasMany'](db[_0x66b8('0xa7')],{'as':_0x66b8('0x1ac'),'onDelete':'cascade','foreignKey':'DescriptionId'});db[_0x66b8('0xa5')]['hasMany'](db[_0x66b8('0xa7')],{'as':_0x66b8('0x1a7'),'onDelete':'cascade','foreignKey':'FieldId'});db[_0x66b8('0xa5')][_0x66b8('0x111')](db[_0x66b8('0x1b6')],{'as':'Account','foreignKey':_0x66b8('0x1a9')});db[_0x66b8('0xa7')][_0x66b8('0x103')](db[_0x66b8('0xa7')],{'as':_0x66b8('0x1ae'),'foreignKey':_0x66b8('0x1ab')});db['ZohoField']['hasMany'](db[_0x66b8('0xa7')],{'as':_0x66b8('0x1af'),'foreignKey':_0x66b8('0x1ad')});db[_0x66b8('0xa7')][_0x66b8('0x103')](db['ZohoField'],{'as':_0x66b8('0x1b5'),'foreignKey':_0x66b8('0x1b0')});db[_0x66b8('0xa7')][_0x66b8('0x111')](db['Variable'],{'as':_0x66b8('0x8c'),'foreignKey':_0x66b8('0x1b1')});db[_0x66b8('0xa9')]['hasMany'](db[_0x66b8('0xaa')],{'as':'Configurations','onDelete':_0x66b8('0x102'),'foreignKey':_0x66b8('0x1a9')});db[_0x66b8('0xaa')][_0x66b8('0x103')](db[_0x66b8('0x1b7')],{'as':'Subjects','foreignKey':_0x66b8('0x1ab')});db['ZendeskConfiguration']['hasMany'](db['ZendeskField'],{'as':_0x66b8('0x1ac'),'foreignKey':_0x66b8('0x1ad')});db['ZendeskConfiguration'][_0x66b8('0x103')](db[_0x66b8('0x1b7')],{'as':'Fields','foreignKey':'FieldId'});db[_0x66b8('0xaa')]['belongsTo'](db[_0x66b8('0xa9')],{'as':_0x66b8('0x166'),'foreignKey':_0x66b8('0x1a9')});db[_0x66b8('0xaa')][_0x66b8('0x113')](db[_0x66b8('0x86')],{'through':_0x66b8('0x1b8')});db[_0x66b8('0x1b7')]['hasMany'](db['ZendeskField'],{'as':_0x66b8('0x1ae'),'foreignKey':_0x66b8('0x1ab')});db['ZendeskField'][_0x66b8('0x103')](db[_0x66b8('0x1b7')],{'as':_0x66b8('0x1af'),'foreignKey':_0x66b8('0x1ad')});db[_0x66b8('0x1b7')]['hasMany'](db[_0x66b8('0x1b7')],{'as':'Field','foreignKey':_0x66b8('0x1b0')});db[_0x66b8('0x1b7')][_0x66b8('0x111')](db[_0x66b8('0x8c')],{'as':_0x66b8('0x8c'),'foreignKey':_0x66b8('0x1b1')});db[_0x66b8('0xab')][_0x66b8('0x103')](db[_0x66b8('0x1b9')],{'as':_0x66b8('0x1a8'),'onDelete':_0x66b8('0x102'),'foreignKey':_0x66b8('0x1a9')});db['FreshdeskConfiguration'][_0x66b8('0x103')](db[_0x66b8('0xae')],{'as':_0x66b8('0x1b4'),'onDelete':_0x66b8('0x102'),'foreignKey':'SubjectId'});db['FreshdeskConfiguration'][_0x66b8('0x103')](db[_0x66b8('0xae')],{'as':'Descriptions','onDelete':_0x66b8('0x102'),'foreignKey':_0x66b8('0x1ad')});db[_0x66b8('0x1b9')][_0x66b8('0x103')](db['FreshdeskField'],{'as':_0x66b8('0x1a7'),'onDelete':'cascade','foreignKey':_0x66b8('0x1b0')});db[_0x66b8('0x1b9')][_0x66b8('0x111')](db[_0x66b8('0xab')],{'as':_0x66b8('0x166'),'foreignKey':'AccountId'});db['FreshdeskConfiguration'][_0x66b8('0x113')](db[_0x66b8('0x86')],{'through':'int_freshdesk_configuration_has_tags'});db[_0x66b8('0xae')][_0x66b8('0x103')](db[_0x66b8('0xae')],{'as':_0x66b8('0x1ae'),'foreignKey':_0x66b8('0x1ab')});db[_0x66b8('0xae')][_0x66b8('0x103')](db['FreshdeskField'],{'as':_0x66b8('0x1af'),'foreignKey':_0x66b8('0x1ad')});db[_0x66b8('0xae')]['hasMany'](db[_0x66b8('0xae')],{'as':_0x66b8('0x1b5'),'foreignKey':_0x66b8('0x1b0')});db['FreshdeskField'][_0x66b8('0x111')](db[_0x66b8('0x8c')],{'as':_0x66b8('0x8c'),'foreignKey':_0x66b8('0x1b1')});db[_0x66b8('0x1ba')][_0x66b8('0x103')](db['VtigerConfiguration'],{'as':'Configurations','onDelete':'cascade','foreignKey':_0x66b8('0x1a9')});db[_0x66b8('0xb1')][_0x66b8('0x103')](db[_0x66b8('0xb3')],{'as':'Subjects','foreignKey':_0x66b8('0x1ab')});db[_0x66b8('0xb1')][_0x66b8('0x103')](db[_0x66b8('0xb3')],{'as':'Descriptions','foreignKey':_0x66b8('0x1ad')});db[_0x66b8('0xb1')][_0x66b8('0x103')](db[_0x66b8('0xb3')],{'as':_0x66b8('0x1a7'),'foreignKey':_0x66b8('0x1b0')});db[_0x66b8('0xb1')][_0x66b8('0x111')](db[_0x66b8('0x1ba')],{'as':_0x66b8('0x166'),'foreignKey':_0x66b8('0x1a9')});db[_0x66b8('0xb3')]['hasMany'](db[_0x66b8('0xb3')],{'as':_0x66b8('0x1ae'),'foreignKey':_0x66b8('0x1ab')});db[_0x66b8('0xb3')][_0x66b8('0x103')](db['VtigerField'],{'as':'Description','foreignKey':_0x66b8('0x1ad')});db['VtigerField']['hasMany'](db[_0x66b8('0xb3')],{'as':_0x66b8('0x1b5'),'foreignKey':_0x66b8('0x1b0')});db[_0x66b8('0xb3')][_0x66b8('0x111')](db[_0x66b8('0x8c')],{'as':'Variable','foreignKey':_0x66b8('0x1b1')});db['ServicenowAccount'][_0x66b8('0x103')](db['ServicenowConfiguration'],{'as':'Configurations','onDelete':_0x66b8('0x102'),'foreignKey':_0x66b8('0x1a9')});db[_0x66b8('0xb7')][_0x66b8('0x103')](db[_0x66b8('0xb9')],{'as':_0x66b8('0x1b4'),'foreignKey':_0x66b8('0x1ab')});db[_0x66b8('0xb7')]['hasMany'](db['ServicenowField'],{'as':_0x66b8('0x1ac'),'foreignKey':_0x66b8('0x1ad')});db[_0x66b8('0xb7')]['hasMany'](db[_0x66b8('0xb9')],{'as':_0x66b8('0x1a7'),'foreignKey':'FieldId'});db[_0x66b8('0xb7')][_0x66b8('0x111')](db['ServicenowAccount'],{'as':_0x66b8('0x166'),'foreignKey':_0x66b8('0x1a9')});db[_0x66b8('0xb9')][_0x66b8('0x103')](db[_0x66b8('0xb9')],{'as':_0x66b8('0x1ae'),'foreignKey':_0x66b8('0x1ab')});db['ServicenowField']['hasMany'](db['ServicenowField'],{'as':_0x66b8('0x1af'),'foreignKey':'DescriptionId'});db[_0x66b8('0xb9')][_0x66b8('0x103')](db[_0x66b8('0xb9')],{'as':_0x66b8('0x1b5'),'foreignKey':'FieldId'});db[_0x66b8('0xb9')][_0x66b8('0x111')](db[_0x66b8('0x8c')],{'as':'Variable','foreignKey':'VariableId'});db[_0x66b8('0x1bb')]['hasMany'](db[_0x66b8('0xbb')],{'as':'Configurations','onDelete':_0x66b8('0x102'),'foreignKey':'AccountId'});db[_0x66b8('0xbb')][_0x66b8('0x103')](db['Dynamics365Field'],{'as':'Subjects','onDelete':'cascade','foreignKey':_0x66b8('0x1ab')});db[_0x66b8('0xbb')][_0x66b8('0x103')](db[_0x66b8('0xbc')],{'as':_0x66b8('0x1ac'),'onDelete':_0x66b8('0x102'),'foreignKey':_0x66b8('0x1ad')});db[_0x66b8('0xbb')]['hasMany'](db[_0x66b8('0xbc')],{'as':_0x66b8('0x1a7'),'onDelete':_0x66b8('0x102'),'foreignKey':_0x66b8('0x1b0')});db[_0x66b8('0xbb')][_0x66b8('0x111')](db[_0x66b8('0x1bb')],{'as':_0x66b8('0x166'),'foreignKey':_0x66b8('0x1a9')});db[_0x66b8('0xbc')][_0x66b8('0x103')](db['Dynamics365Field'],{'as':_0x66b8('0x1ae'),'foreignKey':'SubjectId'});db[_0x66b8('0xbc')][_0x66b8('0x103')](db[_0x66b8('0xbc')],{'as':_0x66b8('0x1af'),'foreignKey':_0x66b8('0x1ad')});db['Dynamics365Field']['hasMany'](db[_0x66b8('0xbc')],{'as':_0x66b8('0x1b5'),'foreignKey':_0x66b8('0x1b0')});db[_0x66b8('0xbc')]['belongsTo'](db[_0x66b8('0x8c')],{'as':_0x66b8('0x8c'),'foreignKey':_0x66b8('0x1b1')});db[_0x66b8('0xbe')][_0x66b8('0x103')](db['FreshsalesConfiguration'],{'as':'Configurations','onDelete':_0x66b8('0x102'),'foreignKey':_0x66b8('0x1a9')});db['FreshsalesConfiguration'][_0x66b8('0x103')](db[_0x66b8('0xc2')],{'as':'Subjects','foreignKey':_0x66b8('0x1ab')});db[_0x66b8('0xc0')][_0x66b8('0x103')](db['FreshsalesField'],{'as':'Descriptions','foreignKey':_0x66b8('0x1ad')});db[_0x66b8('0xc0')][_0x66b8('0x103')](db[_0x66b8('0xc2')],{'as':'Fields','foreignKey':_0x66b8('0x1b0')});db['FreshsalesConfiguration'][_0x66b8('0x111')](db['FreshsalesAccount'],{'as':_0x66b8('0x166'),'foreignKey':_0x66b8('0x1a9')});db[_0x66b8('0xc2')][_0x66b8('0x103')](db[_0x66b8('0xc2')],{'as':_0x66b8('0x1ae'),'foreignKey':_0x66b8('0x1ab')});db['FreshsalesField']['hasMany'](db[_0x66b8('0xc2')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x66b8('0xc2')][_0x66b8('0x103')](db[_0x66b8('0xc2')],{'as':'Field','foreignKey':_0x66b8('0x1b0')});db[_0x66b8('0xc2')]['belongsTo'](db[_0x66b8('0x8c')],{'as':_0x66b8('0x8c'),'foreignKey':_0x66b8('0x1b1')});db['ChatQueueReport'][_0x66b8('0x111')](db[_0x66b8('0x5a')],{});db[_0x66b8('0xc7')][_0x66b8('0x111')](db[_0x66b8('0xec')],{'as':_0x66b8('0x158'),'foreignKey':_0x66b8('0x176')});db[_0x66b8('0xc7')][_0x66b8('0x111')](db[_0x66b8('0x6a')],{'as':_0x66b8('0x14f'),'foreignKey':_0x66b8('0x150')});db[_0x66b8('0xc7')][_0x66b8('0x111')](db[_0x66b8('0x5e')],{});db[_0x66b8('0xc7')][_0x66b8('0x111')](db['ChatMessage'],{});db[_0x66b8('0xc7')]['belongsTo'](db[_0x66b8('0xf')],{});db[_0x66b8('0xc7')]['belongsTo'](db[_0x66b8('0x64')],{});db[_0x66b8('0xc9')]['belongsTo'](db['User'],{'onDelete':'cascade','foreignKey':_0x66b8('0x1bc')});db['ChatInternalMessage'][_0x66b8('0x111')](db[_0x66b8('0xf')],{'onDelete':_0x66b8('0x102'),'foreignKey':_0x66b8('0x1bd')});db[_0x66b8('0xcd')][_0x66b8('0x103')](db[_0x66b8('0xcc')],{'foreignKey':_0x66b8('0x1be'),'onDelete':'cascade'});db[_0x66b8('0xcd')][_0x66b8('0x103')](db[_0x66b8('0xca')],{'foreignKey':_0x66b8('0x1be'),'onDelete':_0x66b8('0x102')});db['SmsQueueReport'][_0x66b8('0x111')](db['SmsAccount'],{});db[_0x66b8('0xcf')]['belongsTo'](db['CmList'],{'as':_0x66b8('0x158'),'foreignKey':_0x66b8('0x176')});db[_0x66b8('0xcf')][_0x66b8('0x111')](db[_0x66b8('0x6a')],{'as':_0x66b8('0x14f'),'foreignKey':_0x66b8('0x150')});db[_0x66b8('0xcf')][_0x66b8('0x111')](db['SmsInteraction'],{});db[_0x66b8('0xcf')][_0x66b8('0x111')](db[_0x66b8('0x50')],{});db[_0x66b8('0xcf')][_0x66b8('0x111')](db[_0x66b8('0xf')],{});db['SmsQueueReport'][_0x66b8('0x111')](db[_0x66b8('0x52')],{});db['JscriptyProject'][_0x66b8('0x103')](db[_0x66b8('0xcd')],{'foreignKey':'ProjectId'});db['JscriptyProject']['hasMany'](db[_0x66b8('0xcc')],{'foreignKey':_0x66b8('0x1bf')});db[_0x66b8('0xd2')]['hasMany'](db[_0x66b8('0xca')],{'foreignKey':_0x66b8('0x1bf')});db[_0x66b8('0x1c0')][_0x66b8('0x113')](db['User'],{'as':_0x66b8('0x173'),'through':_0x66b8('0x137')});db[_0x66b8('0xdb')][_0x66b8('0x113')](db[_0x66b8('0xf')],{'as':_0x66b8('0x15b'),'through':_0x66b8('0x117')});db[_0x66b8('0xdb')][_0x66b8('0x113')](db[_0x66b8('0x11d')],{'through':_0x66b8('0x100'),'as':_0x66b8('0x11e')});db[_0x66b8('0xdb')][_0x66b8('0x113')](db[_0x66b8('0x3a')],{'through':'team_has_mail_queues','as':_0x66b8('0x1c1')});db['Team'][_0x66b8('0x113')](db['ChatQueue'],{'through':_0x66b8('0x18a'),'as':_0x66b8('0x120')});db[_0x66b8('0xdb')][_0x66b8('0x113')](db['FaxQueue'],{'through':_0x66b8('0x175'),'as':_0x66b8('0x121')});db[_0x66b8('0xdb')][_0x66b8('0x113')](db[_0x66b8('0x52')],{'through':_0x66b8('0x1c2'),'as':'SmsQueues'});db[_0x66b8('0xdb')][_0x66b8('0x113')](db[_0x66b8('0x123')],{'through':'team_has_openchannel_queues','as':_0x66b8('0x124')});db['Team'][_0x66b8('0x113')](db[_0x66b8('0xfc')],{'through':_0x66b8('0x1c3'),'as':_0x66b8('0x125')});db['Campaign'][_0x66b8('0x103')](db[_0x66b8('0x6c')],{'as':_0x66b8('0x13d'),'foreignKey':_0x66b8('0x191')});db[_0x66b8('0xdf')][_0x66b8('0x103')](db[_0x66b8('0x70')],{'as':'HopperFinals','foreignKey':_0x66b8('0x191')});db[_0x66b8('0xdf')][_0x66b8('0x103')](db[_0x66b8('0x71')],{'as':_0x66b8('0x13e'),'foreignKey':_0x66b8('0x191')});db[_0x66b8('0xdf')]['hasMany'](db[_0x66b8('0x6e')],{'as':_0x66b8('0x13f'),'foreignKey':'CampaignId'});db[_0x66b8('0xdf')][_0x66b8('0x111')](db[_0x66b8('0x26')],{'as':_0x66b8('0x26'),'foreignKey':_0x66b8('0x141')});db['Campaign']['belongsTo'](db[_0x66b8('0x26')],{'as':_0x66b8('0x142'),'foreignKey':_0x66b8('0x143')});db[_0x66b8('0xdf')]['belongsTo'](db[_0x66b8('0x144')],{'as':_0x66b8('0x144'),'foreignKey':'IntervalId'});db[_0x66b8('0xdf')][_0x66b8('0x111')](db[_0x66b8('0x1c0')],{'as':_0x66b8('0x1c0'),'foreignKey':_0x66b8('0x1c4')});db['Campaign'][_0x66b8('0x113')](db[_0x66b8('0xec')],{'as':_0x66b8('0x115'),'through':'campaigns_has_cm_lists'});db['Campaign']['belongsToMany'](db[_0x66b8('0xec')],{'as':_0x66b8('0x147'),'through':_0x66b8('0x1c5')});db['Attachment'][_0x66b8('0x111')](db[_0x66b8('0x62')],{'as':_0x66b8('0x62'),'foreignKey':'ChatOfflineMessageId'});db[_0x66b8('0x1c6')][_0x66b8('0x111')](db[_0x66b8('0x3f')],{});db[_0x66b8('0x1c6')][_0x66b8('0x111')](db['MailInteraction'],{});db[_0x66b8('0x1c6')][_0x66b8('0x111')](db[_0x66b8('0x12e')],{'foreignKey':_0x66b8('0x1c7'),'as':_0x66b8('0x1c8')});db[_0x66b8('0x1c6')]['belongsTo'](db[_0x66b8('0xf')],{'foreignKey':_0x66b8('0x1c9'),'as':'FromAgent'});db[_0x66b8('0x1c6')]['belongsTo'](db['User'],{'foreignKey':'ToUserId','as':_0x66b8('0x1ca')});db[_0x66b8('0x1c6')]['belongsTo'](db[_0x66b8('0x3a')],{'foreignKey':_0x66b8('0x1cb'),'as':_0x66b8('0x1cc')});db[_0x66b8('0x1c6')][_0x66b8('0x111')](db['MailAccount'],{'foreignKey':_0x66b8('0x1cd'),'as':_0x66b8('0x1ce')});db['ChatTransferReport']['belongsTo'](db['ChatMessage'],{});db[_0x66b8('0x1cf')][_0x66b8('0x111')](db[_0x66b8('0x5e')],{});db[_0x66b8('0x1cf')][_0x66b8('0x111')](db[_0x66b8('0x5a')],{'foreignKey':_0x66b8('0x1d0'),'as':_0x66b8('0x1c8')});db[_0x66b8('0x1cf')][_0x66b8('0x111')](db[_0x66b8('0xf')],{'foreignKey':_0x66b8('0x1c9'),'as':'FromAgent'});db[_0x66b8('0x1cf')][_0x66b8('0x111')](db[_0x66b8('0xf')],{'foreignKey':_0x66b8('0x1d1'),'as':_0x66b8('0x1ca')});db['ChatTransferReport'][_0x66b8('0x111')](db[_0x66b8('0x64')],{'foreignKey':'ToChatQueueId','as':_0x66b8('0x1cc')});db['ChatTransferReport']['belongsTo'](db[_0x66b8('0x5a')],{'foreignKey':_0x66b8('0x1d2'),'as':_0x66b8('0x1ce')});db[_0x66b8('0xe7')][_0x66b8('0x111')](db[_0x66b8('0x16f')],{});db[_0x66b8('0xe7')][_0x66b8('0x111')](db[_0x66b8('0x47')],{});db['FaxTransferReport']['belongsTo'](db[_0x66b8('0x12b')],{'foreignKey':_0x66b8('0x1d3'),'as':_0x66b8('0x1c8')});db[_0x66b8('0xe7')][_0x66b8('0x111')](db[_0x66b8('0xf')],{'foreignKey':'FromUserId','as':_0x66b8('0x1d4')});db['FaxTransferReport'][_0x66b8('0x111')](db[_0x66b8('0xf')],{'foreignKey':_0x66b8('0x1d1'),'as':_0x66b8('0x1ca')});db[_0x66b8('0xe7')]['belongsTo'](db[_0x66b8('0x4a')],{'foreignKey':_0x66b8('0x1d5'),'as':_0x66b8('0x1cc')});db['FaxTransferReport'][_0x66b8('0x111')](db[_0x66b8('0x12b')],{'foreignKey':_0x66b8('0x1d6'),'as':_0x66b8('0x1ce')});db[_0x66b8('0x1d7')][_0x66b8('0x111')](db[_0x66b8('0x57')],{});db['OpenchannelTransferReport'][_0x66b8('0x111')](db['OpenchannelInteraction'],{});db[_0x66b8('0x1d7')]['belongsTo'](db['OpenchannelAccount'],{'foreignKey':_0x66b8('0x1d8'),'as':_0x66b8('0x1c8')});db[_0x66b8('0x1d7')][_0x66b8('0x111')](db['User'],{'foreignKey':_0x66b8('0x1c9'),'as':_0x66b8('0x1d4')});db[_0x66b8('0x1d7')][_0x66b8('0x111')](db[_0x66b8('0xf')],{'foreignKey':_0x66b8('0x1d1'),'as':_0x66b8('0x1ca')});db[_0x66b8('0x1d7')]['belongsTo'](db[_0x66b8('0x123')],{'foreignKey':_0x66b8('0x1d9'),'as':_0x66b8('0x1cc')});db[_0x66b8('0x1d7')][_0x66b8('0x111')](db[_0x66b8('0x54')],{'foreignKey':_0x66b8('0x1da'),'as':'ToAccount'});db[_0x66b8('0xea')][_0x66b8('0x111')](db[_0x66b8('0x50')],{});db[_0x66b8('0xea')][_0x66b8('0x111')](db['SmsInteraction'],{});db[_0x66b8('0xea')][_0x66b8('0x111')](db['SmsAccount'],{'foreignKey':_0x66b8('0x1db'),'as':_0x66b8('0x1c8')});db['SmsTransferReport'][_0x66b8('0x111')](db[_0x66b8('0xf')],{'foreignKey':'FromUserId','as':_0x66b8('0x1d4')});db[_0x66b8('0xea')]['belongsTo'](db[_0x66b8('0xf')],{'foreignKey':_0x66b8('0x1d1'),'as':_0x66b8('0x1ca')});db[_0x66b8('0xea')][_0x66b8('0x111')](db[_0x66b8('0x52')],{'foreignKey':_0x66b8('0x1dc'),'as':_0x66b8('0x1cc')});db[_0x66b8('0xea')][_0x66b8('0x111')](db[_0x66b8('0x4c')],{'foreignKey':_0x66b8('0x1dd'),'as':'ToAccount'});db[_0x66b8('0xec')]['hasMany'](db[_0x66b8('0x78')],{'as':_0x66b8('0x154'),'foreignKey':_0x66b8('0x176'),'onDelete':'cascade'});db[_0x66b8('0xec')][_0x66b8('0x103')](db[_0x66b8('0x1de')],{'as':'CustomFields','foreignKey':_0x66b8('0x176')});db[_0x66b8('0xec')][_0x66b8('0x103')](db['CmContact'],{'as':'Contacts','onDelete':'cascade','foreignKey':_0x66b8('0x176')});db[_0x66b8('0xec')]['hasMany'](db[_0x66b8('0x70')],{'as':_0x66b8('0x107'),'foreignKey':_0x66b8('0x176')});db[_0x66b8('0xec')][_0x66b8('0x103')](db[_0x66b8('0x71')],{'as':'HopperHistory','foreignKey':_0x66b8('0x176')});db[_0x66b8('0xec')]['hasMany'](db[_0x66b8('0x109')],{'as':'ReportAgentPreview','foreignKey':_0x66b8('0x176')});db[_0x66b8('0xec')]['belongsToMany'](db['VoiceQueue'],{'as':_0x66b8('0x1df'),'through':'voice_queues_has_cm_lists'});db[_0x66b8('0xec')][_0x66b8('0x113')](db['User'],{'as':_0x66b8('0x15b'),'through':'cm_user_has_lists'});db[_0x66b8('0x126')][_0x66b8('0x103')](db[_0x66b8('0x15')],{'as':_0x66b8('0x1e0'),'onDelete':_0x66b8('0x102')});db[_0x66b8('0x126')][_0x66b8('0x113')](db[_0x66b8('0xf')],{'as':_0x66b8('0x15b'),'through':_0x66b8('0x128')});db[_0x66b8('0xef')][_0x66b8('0x103')](db['User'],{'as':'Users','foreignKey':_0x66b8('0x112')});db[_0x66b8('0xef')][_0x66b8('0x103')](db[_0x66b8('0x1e1')],{'as':_0x66b8('0x1e2'),'foreignKey':_0x66b8('0x112'),'onDelete':'cascade'});db[_0x66b8('0x1e1')][_0x66b8('0x103')](db[_0x66b8('0xf0')],{'as':_0x66b8('0x1e3'),'foreignKey':_0x66b8('0x1e4'),'onDelete':_0x66b8('0x102')});db[_0x66b8('0xf4')][_0x66b8('0x103')](db[_0x66b8('0x78')],{'as':_0x66b8('0x154'),'foreignKey':_0x66b8('0x1e5'),'onDelete':'cascade'});db[_0x66b8('0xf4')]['hasMany'](db['CannedAnswer'],{'as':'Answers','foreignKey':_0x66b8('0x1e5')});db[_0x66b8('0xf4')][_0x66b8('0x103')](db[_0x66b8('0x1e6')],{'as':_0x66b8('0x156'),'foreignKey':_0x66b8('0x1e5')});db[_0x66b8('0xf4')][_0x66b8('0x103')](db[_0x66b8('0xf8')],{'as':_0x66b8('0x157')});db['WhatsappAccount'][_0x66b8('0x103')](db['WhatsappApplication'],{'as':_0x66b8('0x16d')});db[_0x66b8('0xf4')][_0x66b8('0x111')](db[_0x66b8('0xec')],{'as':'List','foreignKey':'ListId'});db['WhatsappAccount']['belongsTo'](db[_0x66b8('0x7d')],{'as':_0x66b8('0x146'),'foreignKey':_0x66b8('0x15a')});db[_0x66b8('0xf4')][_0x66b8('0x113')](db['User'],{'as':_0x66b8('0x15b'),'through':_0x66b8('0x135')});db['WhatsappApplication'][_0x66b8('0x111')](db['User'],{'onDelete':_0x66b8('0x169')});db[_0x66b8('0xf6')]['belongsTo'](db['WhatsappQueue'],{'onDelete':_0x66b8('0x169')});db['WhatsappApplication'][_0x66b8('0x111')](db['WhatsappAccount'],{'onDelete':_0x66b8('0x169')});db[_0x66b8('0xf6')]['belongsTo'](db[_0x66b8('0x144')],{'onDelete':_0x66b8('0x169'),'foreignKey':_0x66b8('0x145')});db[_0x66b8('0xf6')][_0x66b8('0x111')](db[_0x66b8('0x86')],{'onDelete':_0x66b8('0x169'),'foreignKey':'TagId'});db[_0x66b8('0xf8')][_0x66b8('0x103')](db[_0x66b8('0x1e6')],{'as':'Messages','onDelete':_0x66b8('0x102'),'foreignKey':_0x66b8('0x1e7')});db['WhatsappInteraction'][_0x66b8('0x111')](db[_0x66b8('0xf4')],{'as':_0x66b8('0x166'),'foreignKey':_0x66b8('0x1e5')});db['WhatsappInteraction'][_0x66b8('0x111')](db[_0x66b8('0x6a')],{'as':_0x66b8('0x14f'),'foreignKey':_0x66b8('0x150')});db[_0x66b8('0xf8')][_0x66b8('0x111')](db['User'],{'as':_0x66b8('0x15f'),'foreignKey':'UserId'});db['WhatsappInteraction'][_0x66b8('0x113')](db[_0x66b8('0x86')],{'through':_0x66b8('0x1a2'),'as':_0x66b8('0x161')});db['WhatsappInteraction']['belongsToMany'](db[_0x66b8('0x86')],{'through':_0x66b8('0x1a2'),'as':_0x66b8('0x162')});db['WhatsappInteraction'][_0x66b8('0x113')](db[_0x66b8('0xf')],{'as':'Users','through':_0x66b8('0x11c'),'foreignKey':'WhatsappInteractionId'});db[_0x66b8('0x1e6')]['belongsTo'](db[_0x66b8('0xf')],{'as':_0x66b8('0xf')});db['WhatsappMessage']['belongsTo'](db[_0x66b8('0x6a')],{'onDelete':_0x66b8('0x102'),'as':_0x66b8('0x14f')});db['WhatsappMessage']['belongsTo'](db[_0x66b8('0xf8')],{'onDelete':'cascade','as':'Interaction','foreignKey':_0x66b8('0x1e7')});db['WhatsappMessage']['belongsTo'](db[_0x66b8('0xf4')],{'as':_0x66b8('0x166'),'foreignKey':_0x66b8('0x1e5')});db['WhatsappQueueReport'][_0x66b8('0x111')](db[_0x66b8('0xf4')],{});db[_0x66b8('0x1e8')][_0x66b8('0x111')](db['CmList'],{'as':_0x66b8('0x158'),'foreignKey':_0x66b8('0x176')});db[_0x66b8('0x1e8')]['belongsTo'](db[_0x66b8('0x6a')],{'as':'Contact','foreignKey':_0x66b8('0x150')});db[_0x66b8('0x1e8')][_0x66b8('0x111')](db[_0x66b8('0xf8')],{});db['WhatsappQueueReport'][_0x66b8('0x111')](db[_0x66b8('0xfc')],{});db[_0x66b8('0x1e8')][_0x66b8('0x111')](db[_0x66b8('0x1e6')],{});db[_0x66b8('0x1e8')][_0x66b8('0x111')](db[_0x66b8('0xf')],{});db[_0x66b8('0xfa')][_0x66b8('0x111')](db[_0x66b8('0x1e6')],{});db[_0x66b8('0xfa')][_0x66b8('0x111')](db[_0x66b8('0xf8')],{});db[_0x66b8('0xfa')][_0x66b8('0x111')](db['WhatsappAccount'],{'foreignKey':'FromWhatsappAccountId','as':_0x66b8('0x1c8')});db[_0x66b8('0xfa')][_0x66b8('0x111')](db['WhatsappAccount'],{'foreignKey':'ToWhatsappAccountId','as':'ToAccount'});db[_0x66b8('0xfa')][_0x66b8('0x111')](db['WhatsappQueue'],{'foreignKey':_0x66b8('0x1e9'),'as':'ToQueue'});db[_0x66b8('0xfa')]['belongsTo'](db['User'],{'foreignKey':_0x66b8('0x1c9'),'as':_0x66b8('0x1d4')});db[_0x66b8('0xfa')]['belongsTo'](db[_0x66b8('0xf')],{'foreignKey':'ToUserId','as':_0x66b8('0x1ca')});db[_0x66b8('0xfc')][_0x66b8('0x113')](db[_0x66b8('0xf')],{'as':_0x66b8('0x15b'),'through':_0x66b8('0x35'),'foreignKey':_0x66b8('0x1ea')});db[_0x66b8('0xfc')][_0x66b8('0x113')](db[_0x66b8('0xdb')],{'through':_0x66b8('0x1c3'),'as':'Teams'});module[_0x66b8('0x1eb')]={'db':db,'dbH':dbH};
\ No newline at end of file
index 9908ba1..f6b238b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a2a=['/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','/api/integrations/freshsales/fields','/api/networks','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','./api/jscriptyProject','/api/settings','./api/setting','./api/squareOdbc','/api/square/projects','./api/squareProject','./api/squareRecording','/api/square/messages','./api/squareMessage','/api/teams','/api/license','./api/license','/api/campaigns','./api/campaign','/api/attachments','./api/attachment','/api/plugins','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','/api/voice/prefixes','./api/voicePrefix','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/queue','./api/whatsappQueueReport','./api/whatsappTransferReport','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/realtime','/api/auth/local','./api/authLocal','/api/auth/google','/api/jira','./api/jira','/api/rpc','./api/rpc','./api/version','./api/system','/api/pm2','./api/pm2','/api/webbar','/apidoc','static','join','root','/demo','/snippet','snippet','3.0.0','/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','/index.html','username','apiKey','firstName','lastName','street','email','clientId','clientSecret','securityToken','code','accessKey','tenantId','channelSecret','accessTokenSecret','authToken','consumerKey','consumerSecret','calleridnum','clientEmail','privateKey','accesskeyid','secretaccesskey','key','pass','accountSid','localstationid','dsn','secret','registry','oldPassword','isPlainObject','length','isString','replace','@@{','includes','lodash','path','express','util','./errors','./config/environment','api','default','use','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','\x20body=%s','format','method','x-forwarded-for','headers','connection','remoteAddress','statusCode','responseTime','user','name','inspect','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','body','agent_id','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','url','role','device','agent_name','/api/users','./api/voiceChanSpy','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/queues','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','/api/voice/mails','/api/voice/mails/messages','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceCallReport','./api/voiceDialReport','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','./api/memberReport','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','./api/mailServerOut','/api/mail/accounts','./api/mailAccount','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','./api/mailMessage','./api/mailApplication','./api/mailQueueReport','/api/dashboards/items','./api/dashboardItem','./api/faxAccount','/api/fax/applications','./api/faxApplication','./api/faxInteraction','./api/faxMessage','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','/api/sms/applications','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsMessage','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/messages','/api/openchannel/queues','/api/chat/websites','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','./api/chatQueue','/api/chat/groups','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/contacts','/api/cm/hopper','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','/api/actions','./api/action','/api/automations','./api/automation','/api/canned_answers','./api/cannedAnswer','/api/dispositions','./api/condition','/api/intervals','./api/interval','/api/pauses','./api/pause','/api/cdr','./api/cdr','/api/voiceQueuesLog','/api/schedules','./api/schedule','/api/sounds','/api/tags','/api/templates','./api/template','/api/triggers','/api/variables','./api/variable','/api/integrations','./api/integration','/api/integrations/reports','./api/integrationReport','./api/analyticCustomReport','./api/analyticDefaultReport','./api/analyticExtractedReport','./api/analyticMetric','/api/analytics/field_reports','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/accounts','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskField','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/freshdesk/accounts','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','./api/intDynamics365Configuration','./api/intDynamics365Field'];(function(_0x493121,_0x17b822){var _0x51b912=function(_0x36850e){while(--_0x36850e){_0x493121['push'](_0x493121['shift']());}};_0x51b912(++_0x17b822);}(_0x6a2a,0x1be));var _0xa6a2=function(_0x18cabd,_0x4c086d){_0x18cabd=_0x18cabd-0x0;var _0x737f87=_0x6a2a[_0x18cabd];return _0x737f87;};'use strict';var _=require(_0xa6a2('0x0'));var path=require(_0xa6a2('0x1'));var express=require(_0xa6a2('0x2'));var ewinston=require('express-winston');var util=require(_0xa6a2('0x3'));var errors=require(_0xa6a2('0x4'));var config=require(_0xa6a2('0x5'));var logger=require('./config/logger')(_0xa6a2('0x6'));var authLogger=require('./config/logger')('auth');exports[_0xa6a2('0x7')]=function(_0x406434){_0x406434[_0xa6a2('0x8')](ewinston[_0xa6a2('0x9')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x4059ac,_0x3beb87){var _0x5efd04=_0xa6a2('0xa');if(!_['isEmpty'](_0x4059ac['body'])){_0x5efd04+=_0xa6a2('0xb');var _0xaab4fd=_0x4059ac['body'];maskSensitiveData(_0xaab4fd);}return util[_0xa6a2('0xc')](_0x5efd04,_0x4059ac[_0xa6a2('0xd')],_0x4059ac['headers'][_0xa6a2('0xe')]?_0x4059ac[_0xa6a2('0xf')][_0xa6a2('0xe')]:_0x4059ac[_0xa6a2('0x10')][_0xa6a2('0x11')]||_0x4059ac['ip'],_0x4059ac['url'],_0x3beb87[_0xa6a2('0x12')],_0x3beb87[_0xa6a2('0x13')],_0x4059ac['user']?_0x4059ac[_0xa6a2('0x14')]['id']:null,_0x4059ac['user']?_0x4059ac['user'][_0xa6a2('0x15')]:null,_0x4059ac[_0xa6a2('0x14')]?_0x4059ac[_0xa6a2('0x14')]['role']:null,_0xaab4fd?util[_0xa6a2('0x16')](_0xaab4fd,![],null):'');}}));_0x406434[_0xa6a2('0x8')](ewinston['logger']({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x34697c,_0x59e85c){var _0x3be8b4=_0xa6a2('0x17');if(_0x34697c[_0xa6a2('0x18')]&&_0x34697c[_0xa6a2('0x18')]['device']&&_0x34697c[_0xa6a2('0x18')][_0xa6a2('0x19')]){_0x3be8b4=_0xa6a2('0x1a');}return util[_0xa6a2('0xc')](_0x3be8b4,_0x34697c[_0xa6a2('0xd')],_0x34697c[_0xa6a2('0xf')]['x-forwarded-for']?_0x34697c[_0xa6a2('0xf')][_0xa6a2('0xe')]:_0x34697c[_0xa6a2('0x10')][_0xa6a2('0x11')]||_0x34697c['ip'],_0x34697c[_0xa6a2('0x1b')],_0x59e85c['statusCode'],_0x59e85c[_0xa6a2('0x13')],_0x34697c['user']?_0x34697c['user']['id']:null,_0x34697c['user']?_0x34697c[_0xa6a2('0x14')][_0xa6a2('0x15')]:null,_0x34697c[_0xa6a2('0x14')]?_0x34697c[_0xa6a2('0x14')][_0xa6a2('0x1c')]:null,_0x34697c[_0xa6a2('0x18')]&&_0x34697c[_0xa6a2('0x18')]['device']?_0x34697c[_0xa6a2('0x18')][_0xa6a2('0x1d')]:'other',_0x34697c[_0xa6a2('0x18')]&&_0x34697c[_0xa6a2('0x18')][_0xa6a2('0x19')]?_0x34697c[_0xa6a2('0x18')][_0xa6a2('0x19')]:'',_0x34697c[_0xa6a2('0x18')]&&_0x34697c[_0xa6a2('0x18')][_0xa6a2('0x1e')]?_0x34697c[_0xa6a2('0x18')][_0xa6a2('0x1e')]:'');},'ignoreRoute':function(_0xeaabd){var _0x1d2e25=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x1d2e25['test'](_0xeaabd['url']);}}));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x1f'),require('./api/user'));_0x406434[_0xa6a2('0x8')]('/api/voice/chanspy',require(_0xa6a2('0x20')));_0x406434['use']('/api/voice/contexts',require(_0xa6a2('0x21')));_0x406434['use'](_0xa6a2('0x22'),require(_0xa6a2('0x23')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x24'),require(_0xa6a2('0x25')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x26'),require('./api/voiceQueue'));_0x406434[_0xa6a2('0x8')]('/api/voice/recordings',require(_0xa6a2('0x27')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x28'),require(_0xa6a2('0x29')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x2a'),require('./api/voiceMail'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x2b'),require(_0xa6a2('0x2c')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x2d'),require(_0xa6a2('0x2e')));_0x406434['use']('/api/voice/dials/reports',require(_0xa6a2('0x2f')));_0x406434[_0xa6a2('0x8')]('/api/voice/agents/reports',require(_0xa6a2('0x30')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x31'),require(_0xa6a2('0x32')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x33'),require(_0xa6a2('0x34')));_0x406434['use']('/api/trunks',require(_0xa6a2('0x35')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x36'),require(_0xa6a2('0x37')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x38'),require(_0xa6a2('0x39')));_0x406434['use'](_0xa6a2('0x3a'),require(_0xa6a2('0x3b')));_0x406434['use'](_0xa6a2('0x3c'),require(_0xa6a2('0x3d')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x3e'),require(_0xa6a2('0x3f')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x40'),require(_0xa6a2('0x41')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x42'),require(_0xa6a2('0x43')));_0x406434[_0xa6a2('0x8')]('/api/mail/applications',require(_0xa6a2('0x44')));_0x406434[_0xa6a2('0x8')]('/api/mail/reports/queue',require(_0xa6a2('0x45')));_0x406434[_0xa6a2('0x8')]('/api/dashboards',require('./api/dashboard'));_0x406434['use'](_0xa6a2('0x46'),require(_0xa6a2('0x47')));_0x406434[_0xa6a2('0x8')]('/api/fax/accounts',require(_0xa6a2('0x48')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x49'),require(_0xa6a2('0x4a')));_0x406434['use']('/api/fax/interactions',require(_0xa6a2('0x4b')));_0x406434['use']('/api/fax/messages',require(_0xa6a2('0x4c')));_0x406434['use']('/api/fax/queues',require('./api/faxQueue'));_0x406434['use']('/api/fax/reports/queue',require(_0xa6a2('0x4d')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x4e'),require(_0xa6a2('0x4f')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x50'),require(_0xa6a2('0x51')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x52'),require(_0xa6a2('0x53')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x54'),require(_0xa6a2('0x55')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x56'),require(_0xa6a2('0x57')));_0x406434['use'](_0xa6a2('0x58'),require(_0xa6a2('0x59')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x5a'),require(_0xa6a2('0x5b')));_0x406434['use'](_0xa6a2('0x5c'),require(_0xa6a2('0x5d')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x5e'),require('./api/openchannelMessage'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x5f'),require('./api/openchannelQueue'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x60'),require('./api/chatWebsite'));_0x406434['use']('/api/openchannel/reports/queue',require(_0xa6a2('0x61')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x62'),require(_0xa6a2('0x63')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x64'),require('./api/chatInteraction'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x65'),require(_0xa6a2('0x66')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x67'),require(_0xa6a2('0x68')));_0x406434['use']('/api/chat/queues',require(_0xa6a2('0x69')));_0x406434['use'](_0xa6a2('0x6a'),require(_0xa6a2('0x6b')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x6c'),require(_0xa6a2('0x6d')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x6e'),require(_0xa6a2('0x6f')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x70'),require('./api/cmContact'));_0x406434['use'](_0xa6a2('0x71'),require('./api/cmHopper'));_0x406434[_0xa6a2('0x8')]('/api/cm/hopper_black',require(_0xa6a2('0x72')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x73'),require(_0xa6a2('0x74')));_0x406434['use']('/api/cm/hopper_history',require('./api/cmHopperHistory'));_0x406434[_0xa6a2('0x8')]('/api/cm/custom_fields',require('./api/cmCustomField'));_0x406434['use'](_0xa6a2('0x75'),require(_0xa6a2('0x76')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x77'),require(_0xa6a2('0x78')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x79'),require(_0xa6a2('0x7a')));_0x406434['use'](_0xa6a2('0x7b'),require('./api/disposition'));_0x406434[_0xa6a2('0x8')]('/api/conditions',require(_0xa6a2('0x7c')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x7d'),require(_0xa6a2('0x7e')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x7f'),require(_0xa6a2('0x80')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x81'),require(_0xa6a2('0x82')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x83'),require('./api/voiceQueuesLog'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x84'),require(_0xa6a2('0x85')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x86'),require('./api/sound'));_0x406434['use'](_0xa6a2('0x87'),require('./api/tag'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x88'),require(_0xa6a2('0x89')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x8a'),require('./api/trigger'));_0x406434['use'](_0xa6a2('0x8b'),require(_0xa6a2('0x8c')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x8d'),require(_0xa6a2('0x8e')));_0x406434['use'](_0xa6a2('0x8f'),require(_0xa6a2('0x90')));_0x406434['use']('/api/analytics/custom_reports',require(_0xa6a2('0x91')));_0x406434['use']('/api/analytics/default_reports',require(_0xa6a2('0x92')));_0x406434[_0xa6a2('0x8')]('/api/analytics/extracted_reports',require(_0xa6a2('0x93')));_0x406434[_0xa6a2('0x8')]('/api/analytics/metrics',require(_0xa6a2('0x94')));_0x406434['use'](_0xa6a2('0x95'),require('./api/analyticFieldReport'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x96'),require(_0xa6a2('0x97')));_0x406434['use'](_0xa6a2('0x98'),require('./api/intSalesforceAccount'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x99'),require(_0xa6a2('0x9a')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x9b'),require(_0xa6a2('0x9c')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x9d'),require(_0xa6a2('0x9e')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x9f'),require(_0xa6a2('0xa0')));_0x406434[_0xa6a2('0x8')]('/api/integrations/sugarcrm/fields',require('./api/intSugarcrmField'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xa1'),require(_0xa6a2('0xa2')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xa3'),require('./api/intDeskConfiguration'));_0x406434[_0xa6a2('0x8')]('/api/integrations/desk/fields',require(_0xa6a2('0xa4')));_0x406434[_0xa6a2('0x8')]('/api/integrations/zoho/accounts',require('./api/intZohoAccount'));_0x406434['use'](_0xa6a2('0xa5'),require(_0xa6a2('0xa6')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xa7'),require(_0xa6a2('0xa8')));_0x406434['use'](_0xa6a2('0xa9'),require(_0xa6a2('0xaa')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xab'),require(_0xa6a2('0xac')));_0x406434[_0xa6a2('0x8')]('/api/integrations/zendesk/fields',require('./api/intZendeskField'));_0x406434['use'](_0xa6a2('0xad'),require('./api/intFreshdeskAccount'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xae'),require(_0xa6a2('0xaf')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xb0'),require(_0xa6a2('0xb1')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xb2'),require(_0xa6a2('0xb3')));_0x406434[_0xa6a2('0x8')]('/api/integrations/vtiger/configurations',require(_0xa6a2('0xb4')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xb5'),require(_0xa6a2('0xb6')));_0x406434[_0xa6a2('0x8')]('/api/integrations/servicenow/accounts',require('./api/intServicenowAccount'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xb7'),require(_0xa6a2('0xb8')));_0x406434[_0xa6a2('0x8')]('/api/integrations/servicenow/fields',require(_0xa6a2('0xb9')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xba'),require(_0xa6a2('0xbb')));_0x406434[_0xa6a2('0x8')]('/api/integrations/dynamics365/configurations',require(_0xa6a2('0xbc')));_0x406434[_0xa6a2('0x8')]('/api/integrations/dynamics365/fields',require(_0xa6a2('0xbd')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xbe'),require(_0xa6a2('0xbf')));_0x406434[_0xa6a2('0x8')]('/api/integrations/freshsales/configurations',require('./api/intFreshsalesConfiguration'));_0x406434['use'](_0xa6a2('0xc0'),require('./api/intFreshsalesField'));_0x406434['use'](_0xa6a2('0xc1'),require('./api/network'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xc2'),require(_0xa6a2('0xc3')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xc4'),require('./api/chatInternalMessage'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xc5'),require(_0xa6a2('0xc6')));_0x406434[_0xa6a2('0x8')]('/api/jscripty/questions/reports',require(_0xa6a2('0xc7')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xc8'),require(_0xa6a2('0xc9')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xca'),require(_0xa6a2('0xcb')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xcc'),require(_0xa6a2('0xcd')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xce'),require(_0xa6a2('0xcf')));_0x406434['use']('/api/jscripty/projects',require(_0xa6a2('0xd0')));_0x406434['use'](_0xa6a2('0xd1'),require(_0xa6a2('0xd2')));_0x406434[_0xa6a2('0x8')]('/api/square/odbc',require(_0xa6a2('0xd3')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xd4'),require(_0xa6a2('0xd5')));_0x406434[_0xa6a2('0x8')]('/api/square/recordings',require(_0xa6a2('0xd6')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xd7'),require(_0xa6a2('0xd8')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xd9'),require('./api/team'));_0x406434['use'](_0xa6a2('0xda'),require(_0xa6a2('0xdb')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xdc'),require(_0xa6a2('0xdd')));_0x406434[_0xa6a2('0x8')]('/api/migrations',require('./api/migration'));_0x406434['use'](_0xa6a2('0xde'),require(_0xa6a2('0xdf')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xe0'),require('./api/plugin'));_0x406434['use'](_0xa6a2('0xe1'),require(_0xa6a2('0xe2')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xe3'),require(_0xa6a2('0xe4')));_0x406434['use']('/api/fax/reports/transfer',require('./api/faxTransferReport'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xe5'),require(_0xa6a2('0xe6')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xe7'),require(_0xa6a2('0xe8')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xe9'),require('./api/cmList'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xea'),require(_0xa6a2('0xeb')));_0x406434[_0xa6a2('0x8')]('/api/userProfiles',require('./api/userProfile'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xec'),require(_0xa6a2('0xed')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xee'),require(_0xa6a2('0xef')));_0x406434['use'](_0xa6a2('0xf0'),require('./api/userNotification'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xf1'),require(_0xa6a2('0xf2')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xf3'),require('./api/whatsappApplication'));_0x406434[_0xa6a2('0x8')]('/api/whatsapp/interactions',require(_0xa6a2('0xf4')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xf5'),require(_0xa6a2('0xf6')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xf7'),require(_0xa6a2('0xf8')));_0x406434[_0xa6a2('0x8')]('/api/whatsapp/reports/transfer',require(_0xa6a2('0xf9')));_0x406434[_0xa6a2('0x8')]('/api/whatsapp/queues',require(_0xa6a2('0xfa')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xfb'),require(_0xa6a2('0xfc')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0xfd'),require(_0xa6a2('0xfe')));_0x406434['use'](_0xa6a2('0xff'),require(_0xa6a2('0x100')));_0x406434['use'](_0xa6a2('0x101'),require('./api/authGoogle'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x102'),require(_0xa6a2('0x103')));_0x406434['use'](_0xa6a2('0x104'),require(_0xa6a2('0x105')));_0x406434['use']('/api/version',require(_0xa6a2('0x106')));_0x406434[_0xa6a2('0x8')]('/api/system',require(_0xa6a2('0x107')));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x108'),require(_0xa6a2('0x109')));_0x406434['use'](_0xa6a2('0x10a'),require('./api/webbar'));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x10b'),express[_0xa6a2('0x10c')](path[_0xa6a2('0x10d')](config[_0xa6a2('0x10e')],_0xa6a2('0x10b'))));_0x406434[_0xa6a2('0x8')]('/www',express[_0xa6a2('0x10c')](path[_0xa6a2('0x10d')](config[_0xa6a2('0x10e')],'/www')));_0x406434[_0xa6a2('0x8')]('/demo',express[_0xa6a2('0x10c')](path[_0xa6a2('0x10d')](config[_0xa6a2('0x10e')],_0xa6a2('0x10f'))));_0x406434['use'](_0xa6a2('0x110'),express[_0xa6a2('0x10c')](path[_0xa6a2('0x10d')](config['root'],_0xa6a2('0x111'),_0xa6a2('0x112'))));_0x406434[_0xa6a2('0x8')](_0xa6a2('0x113'),express[_0xa6a2('0x10c')](path[_0xa6a2('0x10d')](config['root'],'/server/files/plugins')));_0x406434[_0xa6a2('0x114')](_0xa6a2('0x115'))[_0xa6a2('0x116')](errors[0x194]);_0x406434[_0xa6a2('0x114')]('/*')[_0xa6a2('0x116')](function(_0x170bb8,_0x1d2017){_0x1d2017[_0xa6a2('0x117')](path[_0xa6a2('0x118')](_0x406434[_0xa6a2('0x116')]('appPath')+_0xa6a2('0x119')));});};var sensitiveFields=[_0xa6a2('0x11a'),'password','newPassword',_0xa6a2('0x11b'),_0xa6a2('0x11c'),_0xa6a2('0x11d'),_0xa6a2('0x11e'),'phone','mobile','fax',_0xa6a2('0x11f'),_0xa6a2('0x120'),_0xa6a2('0x121'),_0xa6a2('0x122'),_0xa6a2('0x123'),_0xa6a2('0x124'),_0xa6a2('0x125'),'token',_0xa6a2('0x126'),'accessToken',_0xa6a2('0x127'),_0xa6a2('0x128'),_0xa6a2('0x129'),_0xa6a2('0x12a'),'membername','calleridname',_0xa6a2('0x12b'),'exten','vidaooApiKey',_0xa6a2('0x12c'),_0xa6a2('0x12d'),_0xa6a2('0x12e'),_0xa6a2('0x12f'),_0xa6a2('0x130'),_0xa6a2('0x14'),_0xa6a2('0x131'),_0xa6a2('0x132'),_0xa6a2('0x133'),_0xa6a2('0x134'),_0xa6a2('0x135'),_0xa6a2('0x136'),_0xa6a2('0x137')];function maskSensitiveData(_0x69d6a){var _0x143149=/(?!^)[\s\S](?!$)/g;if(!_[_0xa6a2('0x138')](_0x69d6a))return;for(var _0x1b09bc in _0x69d6a){if(_['isArray'](_0x69d6a[_0x1b09bc])){for(var _0x18b406=0x0;_0x18b406<_0x69d6a[_0x1b09bc][_0xa6a2('0x139')];_0x18b406++){maskSensitiveData(_0x69d6a[_0x1b09bc][_0x18b406]);}}else if(_[_0xa6a2('0x138')](_0x69d6a[_0x1b09bc])){maskSensitiveData(_0x69d6a[_0x1b09bc]);}else if(_[_0xa6a2('0x13a')](_0x69d6a[_0x1b09bc])){_0x69d6a[_0x1b09bc]=_0x69d6a[_0x1b09bc][_0xa6a2('0x13b')](/{{{/g,_0xa6a2('0x13c'))['replace'](/}}}/g,'}@@')['replace'](/{{/g,'@{')[_0xa6a2('0x13b')](/}}/g,'}@');if(_[_0xa6a2('0x13d')](sensitiveFields,_0x1b09bc)){_0x69d6a[_0x1b09bc]=_0x69d6a[_0x1b09bc][_0xa6a2('0x13b')](_0x143149,'*');}}}}
\ No newline at end of file
+var _0x28d0=['default','use','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','body','\x20body=%s','format','headers','x-forwarded-for','connection','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)','method','other','agent_name','test','/api/users','./api/user','./api/voiceChanSpy','/api/voice/contexts','/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/voice/mails','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','./api/voiceCallReport','/api/voice/dials/reports','/api/voice/agents/reports','/api/members/reports','./api/memberReport','/api/trunks','./api/trunk','./api/voiceTransferReport','/api/mail/out_servers','./api/mailServerOut','./api/mailAccount','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','./api/mailMessage','/api/mail/applications','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','./api/dashboard','/api/dashboards/items','./api/dashboardItem','./api/faxAccount','/api/fax/applications','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','./api/faxQueueReport','/api/sms/accounts','./api/smsApplication','./api/smsInteraction','/api/sms/messages','./api/smsMessage','/api/sms/queues','/api/openchannel/accounts','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','./api/openchannelMessage','./api/openchannelQueue','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','/api/chat/offline_messages','./api/chatOfflineMessage','./api/chatQueue','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/contacts','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperHistory','./api/cmCustomField','/api/actions','./api/action','./api/automation','/api/canned_answers','/api/dispositions','./api/disposition','./api/condition','/api/intervals','./api/interval','./api/pause','/api/cdr','./api/voiceQueuesLog','/api/schedules','./api/schedule','/api/sounds','./api/sound','/api/tags','./api/tag','/api/templates','./api/template','./api/trigger','./api/variable','/api/integrations','./api/integration','/api/integrations/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/intSalesforceAccount','/api/integrations/salesforce/configurations','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','./api/intDeskAccount','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','/api/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/network','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','/api/square/details/reports','./api/squareReportDetail','./api/jscriptyProject','/api/settings','./api/setting','/api/square/odbc','./api/squareOdbc','./api/squareRecording','/api/square/messages','./api/squareMessage','/api/teams','./api/team','./api/license','/api/campaigns','./api/campaign','./api/migration','/api/attachments','/api/plugins','./api/plugin','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','/api/openchannel/reports/transfer','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','./api/voicePrefix','/api/userProfiles','./api/userProfile','./api/userProfileSection','./api/userProfileResource','/api/whatsapp/accounts','/api/whatsapp/applications','./api/whatsappApplication','/api/whatsapp/interactions','./api/whatsappInteraction','/api/whatsapp/messages','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/realtime','/api/auth/local','./api/authLocal','/api/auth/google','./api/authGoogle','./api/jira','./api/rpc','/api/pm2','./api/pm2','./api/webbar','/apidoc','static','join','root','/demo','/snippet','snippet','3.0.0','/plugins','get','sendFile','/index.html','username','password','newPassword','apiKey','firstName','lastName','street','mobile','clientId','clientSecret','code','accessKey','tenantId','channelSecret','accessToken','authToken','consumerKey','consumerSecret','membername','calleridname','exten','vidaooApiKey','clientEmail','privateKey','accesskeyid','secretaccesskey','pass','localstationid','dsn','secret','oldPassword','isPlainObject','isString','@@{','replace','}@@','includes','lodash','path','express-winston','util','./config/environment','./config/logger','api','auth'];(function(_0x45d238,_0x206062){var _0x1f1dde=function(_0x38bda5){while(--_0x38bda5){_0x45d238['push'](_0x45d238['shift']());}};_0x1f1dde(++_0x206062);}(_0x28d0,0x13f));var _0x028d=function(_0x211618,_0x295c9f){_0x211618=_0x211618-0x0;var _0x587633=_0x28d0[_0x211618];return _0x587633;};'use strict';var _=require(_0x028d('0x0'));var path=require(_0x028d('0x1'));var express=require('express');var ewinston=require(_0x028d('0x2'));var util=require(_0x028d('0x3'));var errors=require('./errors');var config=require(_0x028d('0x4'));var logger=require(_0x028d('0x5'))(_0x028d('0x6'));var authLogger=require(_0x028d('0x5'))(_0x028d('0x7'));exports[_0x028d('0x8')]=function(_0x159474){_0x159474[_0x028d('0x9')](ewinston[_0x028d('0xa')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x808f39,_0x5aca3b){var _0x2f7992=_0x028d('0xb');if(!_[_0x028d('0xc')](_0x808f39[_0x028d('0xd')])){_0x2f7992+=_0x028d('0xe');var _0x4b5822=_0x808f39[_0x028d('0xd')];maskSensitiveData(_0x4b5822);}return util[_0x028d('0xf')](_0x2f7992,_0x808f39['method'],_0x808f39[_0x028d('0x10')][_0x028d('0x11')]?_0x808f39['headers']['x-forwarded-for']:_0x808f39[_0x028d('0x12')][_0x028d('0x13')]||_0x808f39['ip'],_0x808f39[_0x028d('0x14')],_0x5aca3b[_0x028d('0x15')],_0x5aca3b[_0x028d('0x16')],_0x808f39[_0x028d('0x17')]?_0x808f39[_0x028d('0x17')]['id']:null,_0x808f39[_0x028d('0x17')]?_0x808f39[_0x028d('0x17')][_0x028d('0x18')]:null,_0x808f39['user']?_0x808f39[_0x028d('0x17')][_0x028d('0x19')]:null,_0x4b5822?util[_0x028d('0x1a')](_0x4b5822,![],null):'');}}));_0x159474[_0x028d('0x9')](ewinston['logger']({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x50e514,_0x371b10){var _0x2a872b=_0x028d('0x1b');if(_0x50e514['body']&&_0x50e514['body'][_0x028d('0x1c')]&&_0x50e514[_0x028d('0xd')][_0x028d('0x1d')]){_0x2a872b=_0x028d('0x1e');}return util['format'](_0x2a872b,_0x50e514[_0x028d('0x1f')],_0x50e514[_0x028d('0x10')][_0x028d('0x11')]?_0x50e514['headers']['x-forwarded-for']:_0x50e514[_0x028d('0x12')][_0x028d('0x13')]||_0x50e514['ip'],_0x50e514[_0x028d('0x14')],_0x371b10[_0x028d('0x15')],_0x371b10[_0x028d('0x16')],_0x50e514['user']?_0x50e514[_0x028d('0x17')]['id']:null,_0x50e514['user']?_0x50e514[_0x028d('0x17')][_0x028d('0x18')]:null,_0x50e514[_0x028d('0x17')]?_0x50e514[_0x028d('0x17')][_0x028d('0x19')]:null,_0x50e514[_0x028d('0xd')]&&_0x50e514[_0x028d('0xd')]['device']?_0x50e514[_0x028d('0xd')][_0x028d('0x1c')]:_0x028d('0x20'),_0x50e514['body']&&_0x50e514[_0x028d('0xd')][_0x028d('0x1d')]?_0x50e514['body'][_0x028d('0x1d')]:'',_0x50e514['body']&&_0x50e514[_0x028d('0xd')][_0x028d('0x21')]?_0x50e514[_0x028d('0xd')][_0x028d('0x21')]:'');},'ignoreRoute':function(_0x34047f){var _0x104471=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x104471[_0x028d('0x22')](_0x34047f['url']);}}));_0x159474[_0x028d('0x9')](_0x028d('0x23'),require(_0x028d('0x24')));_0x159474[_0x028d('0x9')]('/api/voice/chanspy',require(_0x028d('0x25')));_0x159474[_0x028d('0x9')](_0x028d('0x26'),require('./api/voiceContext'));_0x159474[_0x028d('0x9')](_0x028d('0x27'),require(_0x028d('0x28')));_0x159474[_0x028d('0x9')](_0x028d('0x29'),require(_0x028d('0x2a')));_0x159474[_0x028d('0x9')](_0x028d('0x2b'),require(_0x028d('0x2c')));_0x159474[_0x028d('0x9')](_0x028d('0x2d'),require(_0x028d('0x2e')));_0x159474[_0x028d('0x9')](_0x028d('0x2f'),require(_0x028d('0x30')));_0x159474['use'](_0x028d('0x31'),require(_0x028d('0x32')));_0x159474[_0x028d('0x9')](_0x028d('0x33'),require(_0x028d('0x34')));_0x159474[_0x028d('0x9')]('/api/voice/calls/reports',require(_0x028d('0x35')));_0x159474[_0x028d('0x9')](_0x028d('0x36'),require('./api/voiceDialReport'));_0x159474[_0x028d('0x9')](_0x028d('0x37'),require('./api/voiceAgentReport'));_0x159474[_0x028d('0x9')]('/api/voice/queues/reports',require('./api/voiceQueueReport'));_0x159474[_0x028d('0x9')](_0x028d('0x38'),require(_0x028d('0x39')));_0x159474[_0x028d('0x9')](_0x028d('0x3a'),require(_0x028d('0x3b')));_0x159474[_0x028d('0x9')]('/api/voice/transfers/reports',require(_0x028d('0x3c')));_0x159474[_0x028d('0x9')](_0x028d('0x3d'),require(_0x028d('0x3e')));_0x159474['use']('/api/mail/accounts',require(_0x028d('0x3f')));_0x159474[_0x028d('0x9')](_0x028d('0x40'),require(_0x028d('0x41')));_0x159474[_0x028d('0x9')](_0x028d('0x42'),require('./api/mailSubstatus'));_0x159474[_0x028d('0x9')](_0x028d('0x43'),require(_0x028d('0x44')));_0x159474[_0x028d('0x9')](_0x028d('0x45'),require(_0x028d('0x46')));_0x159474['use'](_0x028d('0x47'),require('./api/mailApplication'));_0x159474[_0x028d('0x9')](_0x028d('0x48'),require(_0x028d('0x49')));_0x159474['use'](_0x028d('0x4a'),require(_0x028d('0x4b')));_0x159474[_0x028d('0x9')](_0x028d('0x4c'),require(_0x028d('0x4d')));_0x159474[_0x028d('0x9')]('/api/fax/accounts',require(_0x028d('0x4e')));_0x159474[_0x028d('0x9')](_0x028d('0x4f'),require('./api/faxApplication'));_0x159474[_0x028d('0x9')](_0x028d('0x50'),require(_0x028d('0x51')));_0x159474[_0x028d('0x9')](_0x028d('0x52'),require(_0x028d('0x53')));_0x159474[_0x028d('0x9')](_0x028d('0x54'),require(_0x028d('0x55')));_0x159474[_0x028d('0x9')]('/api/fax/reports/queue',require(_0x028d('0x56')));_0x159474[_0x028d('0x9')](_0x028d('0x57'),require('./api/smsAccount'));_0x159474[_0x028d('0x9')]('/api/sms/applications',require(_0x028d('0x58')));_0x159474[_0x028d('0x9')]('/api/sms/interactions',require(_0x028d('0x59')));_0x159474[_0x028d('0x9')](_0x028d('0x5a'),require(_0x028d('0x5b')));_0x159474[_0x028d('0x9')](_0x028d('0x5c'),require('./api/smsQueue'));_0x159474['use'](_0x028d('0x5d'),require('./api/openchannelAccount'));_0x159474[_0x028d('0x9')](_0x028d('0x5e'),require(_0x028d('0x5f')));_0x159474['use'](_0x028d('0x60'),require(_0x028d('0x61')));_0x159474['use']('/api/openchannel/messages',require(_0x028d('0x62')));_0x159474['use']('/api/openchannel/queues',require(_0x028d('0x63')));_0x159474[_0x028d('0x9')](_0x028d('0x64'),require(_0x028d('0x65')));_0x159474[_0x028d('0x9')](_0x028d('0x66'),require(_0x028d('0x67')));_0x159474[_0x028d('0x9')](_0x028d('0x68'),require(_0x028d('0x69')));_0x159474[_0x028d('0x9')](_0x028d('0x6a'),require(_0x028d('0x6b')));_0x159474[_0x028d('0x9')](_0x028d('0x6c'),require('./api/chatMessage'));_0x159474[_0x028d('0x9')](_0x028d('0x6d'),require(_0x028d('0x6e')));_0x159474[_0x028d('0x9')]('/api/chat/queues',require(_0x028d('0x6f')));_0x159474['use']('/api/chat/groups',require(_0x028d('0x70')));_0x159474[_0x028d('0x9')](_0x028d('0x71'),require(_0x028d('0x72')));_0x159474['use'](_0x028d('0x73'),require(_0x028d('0x74')));_0x159474['use'](_0x028d('0x75'),require('./api/cmContact'));_0x159474['use'](_0x028d('0x76'),require(_0x028d('0x77')));_0x159474[_0x028d('0x9')](_0x028d('0x78'),require('./api/cmHopperBlack'));_0x159474[_0x028d('0x9')]('/api/cm/hopper_final',require('./api/cmHopperFinal'));_0x159474['use']('/api/cm/hopper_history',require(_0x028d('0x79')));_0x159474[_0x028d('0x9')]('/api/cm/custom_fields',require(_0x028d('0x7a')));_0x159474[_0x028d('0x9')](_0x028d('0x7b'),require(_0x028d('0x7c')));_0x159474[_0x028d('0x9')]('/api/automations',require(_0x028d('0x7d')));_0x159474[_0x028d('0x9')](_0x028d('0x7e'),require('./api/cannedAnswer'));_0x159474[_0x028d('0x9')](_0x028d('0x7f'),require(_0x028d('0x80')));_0x159474[_0x028d('0x9')]('/api/conditions',require(_0x028d('0x81')));_0x159474[_0x028d('0x9')](_0x028d('0x82'),require(_0x028d('0x83')));_0x159474[_0x028d('0x9')]('/api/pauses',require(_0x028d('0x84')));_0x159474[_0x028d('0x9')](_0x028d('0x85'),require('./api/cdr'));_0x159474[_0x028d('0x9')]('/api/voiceQueuesLog',require(_0x028d('0x86')));_0x159474['use'](_0x028d('0x87'),require(_0x028d('0x88')));_0x159474[_0x028d('0x9')](_0x028d('0x89'),require(_0x028d('0x8a')));_0x159474[_0x028d('0x9')](_0x028d('0x8b'),require(_0x028d('0x8c')));_0x159474[_0x028d('0x9')](_0x028d('0x8d'),require(_0x028d('0x8e')));_0x159474[_0x028d('0x9')]('/api/triggers',require(_0x028d('0x8f')));_0x159474['use']('/api/variables',require(_0x028d('0x90')));_0x159474[_0x028d('0x9')](_0x028d('0x91'),require(_0x028d('0x92')));_0x159474[_0x028d('0x9')](_0x028d('0x93'),require('./api/integrationReport'));_0x159474[_0x028d('0x9')]('/api/analytics/custom_reports',require(_0x028d('0x94')));_0x159474['use'](_0x028d('0x95'),require(_0x028d('0x96')));_0x159474['use'](_0x028d('0x97'),require('./api/analyticExtractedReport'));_0x159474['use'](_0x028d('0x98'),require(_0x028d('0x99')));_0x159474['use'](_0x028d('0x9a'),require(_0x028d('0x9b')));_0x159474['use'](_0x028d('0x9c'),require(_0x028d('0x9d')));_0x159474[_0x028d('0x9')](_0x028d('0x9e'),require(_0x028d('0x9f')));_0x159474['use'](_0x028d('0xa0'),require('./api/intSalesforceConfiguration'));_0x159474[_0x028d('0x9')](_0x028d('0xa1'),require(_0x028d('0xa2')));_0x159474[_0x028d('0x9')](_0x028d('0xa3'),require('./api/intSugarcrmAccount'));_0x159474[_0x028d('0x9')](_0x028d('0xa4'),require(_0x028d('0xa5')));_0x159474[_0x028d('0x9')](_0x028d('0xa6'),require(_0x028d('0xa7')));_0x159474[_0x028d('0x9')]('/api/integrations/desk/accounts',require(_0x028d('0xa8')));_0x159474[_0x028d('0x9')]('/api/integrations/desk/configurations',require('./api/intDeskConfiguration'));_0x159474['use'](_0x028d('0xa9'),require(_0x028d('0xaa')));_0x159474[_0x028d('0x9')](_0x028d('0xab'),require(_0x028d('0xac')));_0x159474[_0x028d('0x9')](_0x028d('0xad'),require(_0x028d('0xae')));_0x159474[_0x028d('0x9')](_0x028d('0xaf'),require(_0x028d('0xb0')));_0x159474[_0x028d('0x9')](_0x028d('0xb1'),require(_0x028d('0xb2')));_0x159474[_0x028d('0x9')](_0x028d('0xb3'),require(_0x028d('0xb4')));_0x159474[_0x028d('0x9')]('/api/integrations/zendesk/fields',require(_0x028d('0xb5')));_0x159474[_0x028d('0x9')](_0x028d('0xb6'),require(_0x028d('0xb7')));_0x159474[_0x028d('0x9')](_0x028d('0xb8'),require(_0x028d('0xb9')));_0x159474['use'](_0x028d('0xba'),require(_0x028d('0xbb')));_0x159474[_0x028d('0x9')](_0x028d('0xbc'),require('./api/intVtigerAccount'));_0x159474[_0x028d('0x9')](_0x028d('0xbd'),require(_0x028d('0xbe')));_0x159474[_0x028d('0x9')](_0x028d('0xbf'),require(_0x028d('0xc0')));_0x159474[_0x028d('0x9')](_0x028d('0xc1'),require(_0x028d('0xc2')));_0x159474[_0x028d('0x9')](_0x028d('0xc3'),require(_0x028d('0xc4')));_0x159474[_0x028d('0x9')](_0x028d('0xc5'),require(_0x028d('0xc6')));_0x159474[_0x028d('0x9')](_0x028d('0xc7'),require(_0x028d('0xc8')));_0x159474[_0x028d('0x9')](_0x028d('0xc9'),require(_0x028d('0xca')));_0x159474[_0x028d('0x9')](_0x028d('0xcb'),require(_0x028d('0xcc')));_0x159474[_0x028d('0x9')]('/api/integrations/freshsales/accounts',require('./api/intFreshsalesAccount'));_0x159474['use'](_0x028d('0xcd'),require(_0x028d('0xce')));_0x159474['use'](_0x028d('0xcf'),require(_0x028d('0xd0')));_0x159474[_0x028d('0x9')]('/api/networks',require(_0x028d('0xd1')));_0x159474[_0x028d('0x9')]('/api/chat/reports/queue',require(_0x028d('0xd2')));_0x159474[_0x028d('0x9')](_0x028d('0xd3'),require(_0x028d('0xd4')));_0x159474['use']('/api/jscripty/answers/reports',require(_0x028d('0xd5')));_0x159474[_0x028d('0x9')](_0x028d('0xd6'),require(_0x028d('0xd7')));_0x159474[_0x028d('0x9')](_0x028d('0xd8'),require(_0x028d('0xd9')));_0x159474['use'](_0x028d('0xda'),require(_0x028d('0xdb')));_0x159474['use'](_0x028d('0xdc'),require('./api/squareReport'));_0x159474[_0x028d('0x9')](_0x028d('0xdd'),require(_0x028d('0xde')));_0x159474['use']('/api/jscripty/projects',require(_0x028d('0xdf')));_0x159474[_0x028d('0x9')](_0x028d('0xe0'),require(_0x028d('0xe1')));_0x159474[_0x028d('0x9')](_0x028d('0xe2'),require(_0x028d('0xe3')));_0x159474[_0x028d('0x9')]('/api/square/projects',require('./api/squareProject'));_0x159474[_0x028d('0x9')]('/api/square/recordings',require(_0x028d('0xe4')));_0x159474[_0x028d('0x9')](_0x028d('0xe5'),require(_0x028d('0xe6')));_0x159474[_0x028d('0x9')](_0x028d('0xe7'),require(_0x028d('0xe8')));_0x159474['use']('/api/license',require(_0x028d('0xe9')));_0x159474[_0x028d('0x9')](_0x028d('0xea'),require(_0x028d('0xeb')));_0x159474['use']('/api/migrations',require(_0x028d('0xec')));_0x159474[_0x028d('0x9')](_0x028d('0xed'),require('./api/attachment'));_0x159474['use'](_0x028d('0xee'),require(_0x028d('0xef')));_0x159474[_0x028d('0x9')]('/api/mail/reports/transfer',require(_0x028d('0xf0')));_0x159474[_0x028d('0x9')](_0x028d('0xf1'),require(_0x028d('0xf2')));_0x159474['use']('/api/fax/reports/transfer',require('./api/faxTransferReport'));_0x159474[_0x028d('0x9')](_0x028d('0xf3'),require('./api/openchannelTransferReport'));_0x159474[_0x028d('0x9')](_0x028d('0xf4'),require(_0x028d('0xf5')));_0x159474[_0x028d('0x9')](_0x028d('0xf6'),require(_0x028d('0xf7')));_0x159474['use'](_0x028d('0xf8'),require(_0x028d('0xf9')));_0x159474[_0x028d('0x9')](_0x028d('0xfa'),require(_0x028d('0xfb')));_0x159474['use']('/api/userProfile/sections',require(_0x028d('0xfc')));_0x159474[_0x028d('0x9')]('/api/userProfile/resources',require(_0x028d('0xfd')));_0x159474[_0x028d('0x9')]('/api/userNotifications',require('./api/userNotification'));_0x159474['use'](_0x028d('0xfe'),require('./api/whatsappAccount'));_0x159474[_0x028d('0x9')](_0x028d('0xff'),require(_0x028d('0x100')));_0x159474['use'](_0x028d('0x101'),require(_0x028d('0x102')));_0x159474['use'](_0x028d('0x103'),require('./api/whatsappMessage'));_0x159474[_0x028d('0x9')](_0x028d('0x104'),require(_0x028d('0x105')));_0x159474[_0x028d('0x9')](_0x028d('0x106'),require(_0x028d('0x107')));_0x159474[_0x028d('0x9')](_0x028d('0x108'),require('./api/whatsappQueue'));_0x159474[_0x028d('0x9')](_0x028d('0x109'),require(_0x028d('0x10a')));_0x159474[_0x028d('0x9')](_0x028d('0x10b'),require(_0x028d('0x10c')));_0x159474['use'](_0x028d('0x10d'),require(_0x028d('0x10e')));_0x159474[_0x028d('0x9')](_0x028d('0x10f'),require(_0x028d('0x110')));_0x159474['use']('/api/jira',require(_0x028d('0x111')));_0x159474['use']('/api/rpc',require(_0x028d('0x112')));_0x159474[_0x028d('0x9')]('/api/version',require('./api/version'));_0x159474[_0x028d('0x9')]('/api/system',require('./api/system'));_0x159474[_0x028d('0x9')](_0x028d('0x113'),require(_0x028d('0x114')));_0x159474[_0x028d('0x9')]('/api/webbar',require(_0x028d('0x115')));_0x159474[_0x028d('0x9')](_0x028d('0x116'),express[_0x028d('0x117')](path[_0x028d('0x118')](config[_0x028d('0x119')],_0x028d('0x116'))));_0x159474[_0x028d('0x9')]('/www',express['static'](path[_0x028d('0x118')](config[_0x028d('0x119')],'/www')));_0x159474[_0x028d('0x9')]('/demo',express[_0x028d('0x117')](path[_0x028d('0x118')](config['root'],_0x028d('0x11a'))));_0x159474[_0x028d('0x9')](_0x028d('0x11b'),express[_0x028d('0x117')](path[_0x028d('0x118')](config[_0x028d('0x119')],_0x028d('0x11c'),_0x028d('0x11d'))));_0x159474['use'](_0x028d('0x11e'),express['static'](path['join'](config[_0x028d('0x119')],'/server/files/plugins')));_0x159474['route']('/:url(api|auth|components|app|bower_components|assets)/*')[_0x028d('0x11f')](errors[0x194]);_0x159474['route']('/*')[_0x028d('0x11f')](function(_0x3eeec1,_0x2561cc){_0x2561cc[_0x028d('0x120')](path['resolve'](_0x159474[_0x028d('0x11f')]('appPath')+_0x028d('0x121')));});};var sensitiveFields=[_0x028d('0x122'),_0x028d('0x123'),_0x028d('0x124'),_0x028d('0x125'),_0x028d('0x126'),_0x028d('0x127'),_0x028d('0x128'),'phone',_0x028d('0x129'),'fax','email',_0x028d('0x12a'),_0x028d('0x12b'),'securityToken',_0x028d('0x12c'),_0x028d('0x12d'),_0x028d('0x12e'),'token',_0x028d('0x12f'),_0x028d('0x130'),'accessTokenSecret',_0x028d('0x131'),_0x028d('0x132'),_0x028d('0x133'),_0x028d('0x134'),_0x028d('0x135'),'calleridnum',_0x028d('0x136'),_0x028d('0x137'),_0x028d('0x138'),_0x028d('0x139'),_0x028d('0x13a'),_0x028d('0x13b'),'key','user',_0x028d('0x13c'),'accountSid',_0x028d('0x13d'),_0x028d('0x13e'),_0x028d('0x13f'),'registry',_0x028d('0x140')];function maskSensitiveData(_0x27abd0){var _0x461299=/(?!^)[\s\S](?!$)/g;if(!_[_0x028d('0x141')](_0x27abd0))return;for(var _0x273003 in _0x27abd0){if(_['isArray'](_0x27abd0[_0x273003])){for(var _0x4a78df=0x0;_0x4a78df<_0x27abd0[_0x273003]['length'];_0x4a78df++){maskSensitiveData(_0x27abd0[_0x273003][_0x4a78df]);}}else if(_[_0x028d('0x141')](_0x27abd0[_0x273003])){maskSensitiveData(_0x27abd0[_0x273003]);}else if(_[_0x028d('0x142')](_0x27abd0[_0x273003])){_0x27abd0[_0x273003]=_0x27abd0[_0x273003]['replace'](/{{{/g,_0x028d('0x143'))[_0x028d('0x144')](/}}}/g,_0x028d('0x145'))[_0x028d('0x144')](/{{/g,'@{')[_0x028d('0x144')](/}}/g,'}@');if(_[_0x028d('0x146')](sensitiveFields,_0x273003)){_0x27abd0[_0x273003]=_0x27abd0[_0x273003][_0x028d('0x144')](_0x461299,'*');}}}}
\ No newline at end of file
index 04c7df7..b160969 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c85=['jayson/promise','bluebird','lodash','listen','merge','../api/user/user.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.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/faxAccount/faxAccount.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/cmContact/cmContact.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/pause/pause.rpc','../api/template/template.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.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/chatQueueReport/chatQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareRecording/squareRecording.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','rpc','port','localhost','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default'];(function(_0x4031bb,_0x3f105a){var _0x4087f8=function(_0x3eac42){while(--_0x3eac42){_0x4031bb['push'](_0x4031bb['shift']());}};_0x4087f8(++_0x3f105a);}(_0x0c85,0x14f));var _0x50c8=function(_0x5397fe,_0x430598){_0x5397fe=_0x5397fe-0x0;var _0x289fff=_0x0c85[_0x5397fe];return _0x289fff;};'use strict';var jayson=require(_0x50c8('0x0'));var BPromise=require(_0x50c8('0x1'));var _=require(_0x50c8('0x2'));var config=require('../config/environment');exports[_0x50c8('0x3')]=function(){return new BPromise(function(_0x21a5b2,_0x5cbd1c){var _0x3e758d={};_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x5')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/voiceExtension/voiceExtension.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x6')));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x7')));_0x3e758d=_['merge'](_0x3e758d,require('../api/voiceCallReport/voiceCallReport.rpc'));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x8')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/voiceAgentReport/voiceAgentReport.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/voiceQueueReport/voiceQueueReport.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x9')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0xa')));_0x3e758d=_['merge'](_0x3e758d,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0xb')));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0xc')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0xd')));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0xe')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0xf')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x10')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/mailApplication/mailApplication.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/mailQueueReport/mailQueueReport.rpc'));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x11')));_0x3e758d=_['merge'](_0x3e758d,require('../api/faxApplication/faxApplication.rpc'));_0x3e758d=_['merge'](_0x3e758d,require('../api/faxInteraction/faxInteraction.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x12')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x13')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x14')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x15')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/smsInteraction/smsInteraction.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x16')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x17')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x18')));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x19')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x1a')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x1b')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x1c')));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x1d')));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x1e')));_0x3e758d=_['merge'](_0x3e758d,require('../api/chatQueue/chatQueue.rpc'));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x1f')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/cmHopper/cmHopper.rpc'));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x20')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x21')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/cmHopperHistory/cmHopperHistory.rpc'));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x22')));_0x3e758d=_['merge'](_0x3e758d,require('../api/interval/interval.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x23')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/sound/sound.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x24')));_0x3e758d=_['merge'](_0x3e758d,require('../api/trigger/trigger.rpc'));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x25')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x26')));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x27')));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x28')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/intZohoAccount/intZohoAccount.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x29')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x2a')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x2b')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x2c')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x2d')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/intFreshsalesAccount/intFreshsalesAccount.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x2e')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/smsQueueReport/smsQueueReport.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x2f')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/squareReportDetail/squareReportDetail.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x30')));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x31')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/squareProject/squareProject.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x32')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require('../api/squareMessage/squareMessage.rpc'));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x33')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x34')));_0x3e758d=_['merge'](_0x3e758d,require('../api/plugin/plugin.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x35')));_0x3e758d=_['merge'](_0x3e758d,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x36')));_0x3e758d=_['merge'](_0x3e758d,require(_0x50c8('0x37')));_0x3e758d=_[_0x50c8('0x4')](_0x3e758d,require(_0x50c8('0x38')));var _0x35531f=jayson[_0x50c8('0x39')](_0x3e758d)[_0x50c8('0x3a')]();var _0x4d4083=config[_0x50c8('0x3b')][_0x50c8('0x3c')]||config[_0x50c8('0x3c')]+0x1;var _0xa5f046=config[_0x50c8('0x3b')]['ip']||_0x50c8('0x3d');_0x35531f['on'](_0x50c8('0x3e'),function(_0x2d4d62){return _0x5cbd1c(_0x2d4d62);});_0x35531f[_0x50c8('0x3')](_0x4d4083,_0xa5f046,function(){console[_0x50c8('0x3f')](_0x50c8('0x40'),_0xa5f046,_0x4d4083);require(_0x50c8('0x41'))[_0x50c8('0x42')]();return _0x21a5b2('RPC\x20listening\x20on\x20'+_0xa5f046+':'+_0x4d4083);});});};
\ No newline at end of file
+var _0x8e70=['../api/intServicenowAccount/intServicenowAccount.rpc','../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/squareOdbc/squareOdbc.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','server','http','port','rpc','localhost','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','default','RPC\x20listening\x20on\x20','jayson/promise','bluebird','../config/environment','listen','merge','../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/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/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.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/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc'];(function(_0x2850c0,_0x1363a7){var _0x21e830=function(_0x3ec70a){while(--_0x3ec70a){_0x2850c0['push'](_0x2850c0['shift']());}};_0x21e830(++_0x1363a7);}(_0x8e70,0x9c));var _0x08e7=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0x8e70[_0x36ed48];return _0x51c63a;};'use strict';var jayson=require(_0x08e7('0x0'));var BPromise=require(_0x08e7('0x1'));var _=require('lodash');var config=require(_0x08e7('0x2'));exports[_0x08e7('0x3')]=function(){return new BPromise(function(_0x893017,_0xbb021a){var _0x12e489={};_0x12e489=_['merge'](_0x12e489,require('../api/user/user.rpc'));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x5')));_0x12e489=_['merge'](_0x12e489,require(_0x08e7('0x6')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x7')));_0x12e489=_['merge'](_0x12e489,require(_0x08e7('0x8')));_0x12e489=_['merge'](_0x12e489,require(_0x08e7('0x9')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require('../api/voiceAgentReport/voiceAgentReport.rpc'));_0x12e489=_['merge'](_0x12e489,require(_0x08e7('0xa')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require('../api/memberReport/memberReport.rpc'));_0x12e489=_['merge'](_0x12e489,require('../api/trunk/trunk.rpc'));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require('../api/userVoiceQueueRt/userVoiceQueueRt.rpc'));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0xb')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0xc')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0xd')));_0x12e489=_['merge'](_0x12e489,require(_0x08e7('0xe')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0xf')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x10')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x11')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x12')));_0x12e489=_['merge'](_0x12e489,require('../api/faxApplication/faxApplication.rpc'));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require('../api/faxInteraction/faxInteraction.rpc'));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x13')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x14')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require('../api/faxQueueReport/faxQueueReport.rpc'));_0x12e489=_['merge'](_0x12e489,require(_0x08e7('0x15')));_0x12e489=_['merge'](_0x12e489,require(_0x08e7('0x16')));_0x12e489=_['merge'](_0x12e489,require(_0x08e7('0x17')));_0x12e489=_['merge'](_0x12e489,require(_0x08e7('0x18')));_0x12e489=_['merge'](_0x12e489,require('../api/openchannelApplication/openchannelApplication.rpc'));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x19')));_0x12e489=_['merge'](_0x12e489,require(_0x08e7('0x1a')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x1b')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x1c')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x1d')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x1e')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x1f')));_0x12e489=_['merge'](_0x12e489,require(_0x08e7('0x20')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x21')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x22')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x23')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x24')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x25')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x26')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x27')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x28')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x29')));_0x12e489=_['merge'](_0x12e489,require('../api/variable/variable.rpc'));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require('../api/intSalesforceAccount/intSalesforceAccount.rpc'));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x2a')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x2b')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require('../api/intZohoAccount/intZohoAccount.rpc'));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x2c')));_0x12e489=_['merge'](_0x12e489,require('../api/intFreshdeskAccount/intFreshdeskAccount.rpc'));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require('../api/intVtigerAccount/intVtigerAccount.rpc'));_0x12e489=_['merge'](_0x12e489,require(_0x08e7('0x2d')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x2e')));_0x12e489=_['merge'](_0x12e489,require(_0x08e7('0x2f')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x30')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x31')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require('../api/squareReport/squareReport.rpc'));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x32')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x33')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x34')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require('../api/squareProject/squareProject.rpc'));_0x12e489=_['merge'](_0x12e489,require(_0x08e7('0x35')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x36')));_0x12e489=_['merge'](_0x12e489,require('../api/campaign/campaign.rpc'));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x37')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x38')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x39')));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require(_0x08e7('0x3a')));_0x12e489=_['merge'](_0x12e489,require('../api/whatsappMessage/whatsappMessage.rpc'));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require('../api/whatsappQueueReport/whatsappQueueReport.rpc'));_0x12e489=_[_0x08e7('0x4')](_0x12e489,require('../api/whatsappQueue/whatsappQueue.rpc'));var _0x40675f=jayson[_0x08e7('0x3b')](_0x12e489)[_0x08e7('0x3c')]();var _0xc19202=config['rpc'][_0x08e7('0x3d')]||config[_0x08e7('0x3d')]+0x1;var _0x11539f=config[_0x08e7('0x3e')]['ip']||_0x08e7('0x3f');_0x40675f['on']('error',function(_0x3fa46b){return _0xbb021a(_0x3fa46b);});_0x40675f[_0x08e7('0x3')](_0xc19202,_0x11539f,function(){console['log'](_0x08e7('0x40'),_0x11539f,_0xc19202);require('../config/triggers')[_0x08e7('0x41')]();return _0x893017(_0x08e7('0x42')+_0x11539f+':'+_0xc19202);});});};
\ No newline at end of file
index 4b53d97..5bfc763 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb778=['GOTO\x20%s\x20%s\x20%s','getVariable','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','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','util','events','./error','setEncoding','utf8','emit','ready','line','hangup','substring','520-Invalid','search','520\x20End\x20of\x20proper','function','no\x20code','replace','result=','substr','indexOf','startsWith','split','length','match','error','E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','pipe','command','write','prototype','sendRequest','sync','answer','getData','beep','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','exec','isArray','join','EXEC\x20%s\x20%s','SET\x20CONTEXT\x20%s','setExtension','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','sayPhonetic','continueAt','setContext'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0xb778,0x1c8));var _0x8b77=function(_0x1198a7,_0x58ca47){_0x1198a7=_0x1198a7-0x0;var _0x34e937=_0xb778[_0x1198a7];return _0x34e937;};'use strict';var util=require(_0x8b77('0x0'));var _=require('lodash');var EventEmitter=require(_0x8b77('0x1'))['EventEmitter'];var AGIReply=require('./reply');var AGIError=require(_0x8b77('0x2'));function AGIChannel(_0xa78b66){var _0x169029=this,_0x1d9fc7=new AGIReply(),_0x2a79ef=![],_0x3f309a={};EventEmitter['call'](_0x169029);_0xa78b66[_0x8b77('0x3')](_0x8b77('0x4'));_0xa78b66['setTimeout'](0x8*0x3c*0x3c*0x3e8);_0x1d9fc7[_0x8b77('0x3')](_0x8b77('0x4'));_0x1d9fc7['on']('headers',function(_0x1a7405){for(var _0x4909ef in _0x1a7405){_0x169029[_0x4909ef]=_0x1a7405[_0x4909ef];}_0x169029[_0x8b77('0x5')](_0x8b77('0x6'));});_0x1d9fc7['on'](_0x8b77('0x7'),function(_0x576f58){if(_0x576f58['toLowerCase']()==_0x8b77('0x8')){_0x169029['emit'](_0x8b77('0x8'));return;}if(_0x576f58[_0x8b77('0x9')](0x0,0xb)==_0x8b77('0xa')){_0x2a79ef=!![];}if(_0x2a79ef){_0x3f309a['rx']+=_0x576f58+'\x0a';if(_0x576f58[_0x8b77('0xb')](_0x8b77('0xc'))!=-0x1){_0x2a79ef=![];}}else{_0x3f309a['rx']=_0x576f58;}if(_0x2a79ef){return;}if(typeof _0x3f309a['cb']==_0x8b77('0xd')){var _0x3c1e3e=_0x3f309a['rx'][_0x8b77('0x9')](0x0,0x3),_0x1339e5=null,_0x320712=null;_0x3c1e3e=parseInt(_0x3c1e3e);if(isNaN(_0x3c1e3e)){_0x3f309a['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x8b77('0xe')});return;}if(_0x3c1e3e!=0xc8){_0x3f309a['cb'](null,{'code':_0x3c1e3e,'result':-0x1,'extra':'KO'});return;}_0x1339e5=_0x3f309a['rx'][_0x8b77('0x9')](0x4)[_0x8b77('0xf')](_0x8b77('0x10'),'');if(_0x1339e5['indexOf']('\x20')!=-0x1){_0x1339e5=_0x1339e5[_0x8b77('0x11')](0x0,_0x1339e5[_0x8b77('0x12')]('\x20'));}if(_[_0x8b77('0x13')](_0x1339e5,'-1')){_0x1339e5=parseInt(_0x1339e5);}_0x320712=_0x3f309a['rx'][_0x8b77('0x14')]('\x20');if(_0x320712[_0x8b77('0x15')]==0x3){_0x320712=_0x320712[0x2]['substring'](0x1,_0x320712[0x2][_0x8b77('0x15')]-0x1);}else if(_0x320712[_0x8b77('0x15')]>0x3){var _0x525577=/\((.+)\)/;var _0xd30a25=_0x3f309a['rx'][_0x8b77('0x16')](_0x525577);if(_0xd30a25){_0x320712=_0xd30a25[0x1];}else{_0x320712=null;}}else{_0x320712=null;}_0x3f309a['cb'](null,{'code':_0x3c1e3e,'result':_0x1339e5,'extra':_0x320712});}});_0xa78b66['on'](_0x8b77('0x17'),function(_0x20ca52){_0x169029['emit']('error',new AGIError(_0x8b77('0x18'),_0x20ca52[_0x8b77('0x19')]));});_0xa78b66['on'](_0x8b77('0x1a'),function(){_0x169029[_0x8b77('0x5')](_0x8b77('0x1a'),new AGIError(_0x8b77('0x1b')));});_0xa78b66['on']('timeout',function(){_0x169029['emit']('timeout',new AGIError('E_AGI_SOCKET_TIMEOUT'));_0xa78b66['destroy']();});_0xa78b66[_0x8b77('0x1c')](_0x1d9fc7);this[_0x8b77('0x1d')]=function(_0x489850,_0x459f5d){var _0x489850=_0x489850||'',_0x459f5d=typeof _0x459f5d=='function'?_0x459f5d:new Function();_0x3f309a={'tx':_0x489850,'rx':'','cb':_0x459f5d};_0xa78b66[_0x8b77('0x1e')](_0x489850+'\x0a');},this[_0x8b77('0x1a')]=function(){_0xa78b66['destroy']();};}util['inherits'](AGIChannel,EventEmitter);AGIChannel[_0x8b77('0x1f')][_0x8b77('0x20')]=function(_0x577aa8){return this[_0x8b77('0x1d')][_0x8b77('0x21')](this,_0x577aa8);};AGIChannel[_0x8b77('0x1f')][_0x8b77('0x22')]=function(){return this[_0x8b77('0x20')]('ANSWER');};AGIChannel['prototype'][_0x8b77('0x23')]=function(_0x57a559,_0x5ba4ce,_0x1b6319){_0x57a559=_0x57a559===undefined?_0x8b77('0x24'):_0x57a559;_0x5ba4ce=_0x5ba4ce===undefined?'5':_0x5ba4ce;_0x1b6319=_0x1b6319===undefined?'1':_0x1b6319;return this['sendRequest'](util[_0x8b77('0x25')](_0x8b77('0x26'),_0x57a559,_0x5ba4ce*0x3e8,_0x1b6319));};AGIChannel['prototype'][_0x8b77('0x27')]=function(_0x3cf13d){_0x3cf13d=_0x3cf13d||'NO\x20MESSAGE';return this[_0x8b77('0x20')](util[_0x8b77('0x25')]('VERBOSE\x20\x22%s\x22',_0x3cf13d));};AGIChannel['prototype'][_0x8b77('0x28')]=function(_0x553e49,_0x178ed4){if(_[_0x8b77('0x29')](_0x178ed4)){return this[_0x8b77('0x20')](util[_0x8b77('0x25')]('EXEC\x20%s\x20%s',_0x553e49,_0x178ed4[_0x8b77('0x2a')](',')));}return this[_0x8b77('0x20')](util[_0x8b77('0x25')](_0x8b77('0x2b'),_0x553e49,_0x178ed4));};AGIChannel[_0x8b77('0x1f')]['setContext']=function(_0x3942b9){return this[_0x8b77('0x20')](util['format'](_0x8b77('0x2c'),_0x3942b9));};AGIChannel['prototype'][_0x8b77('0x2d')]=function(_0x3374ce){return this[_0x8b77('0x20')](util[_0x8b77('0x25')](_0x8b77('0x2e'),_0x3374ce));};AGIChannel[_0x8b77('0x1f')][_0x8b77('0x2f')]=function(_0x21cc98){return this[_0x8b77('0x20')](util['format'](_0x8b77('0x30'),_0x21cc98));};AGIChannel['prototype'][_0x8b77('0x8')]=function(){return this[_0x8b77('0x20')](_0x8b77('0x31'));};AGIChannel['prototype'][_0x8b77('0x32')]=function(_0x8fbca3,_0x4bd211){var _0x2d6fef=_[_0x8b77('0x33')](_0x4bd211)||_[_0x8b77('0x34')](_0x4bd211)?_0x4bd211[_0x8b77('0x35')]():_0x4bd211;return this[_0x8b77('0x20')](util['format'](_0x8b77('0x36'),_0x8fbca3,_0x2d6fef?_0x2d6fef['toString']()[_0x8b77('0xf')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x8b77('0x1f')][_0x8b77('0x37')]=function(_0x21d1e6,_0x454b69){return this['sendRequest'](util['format'](_0x8b77('0x38'),_0x21d1e6,_0x454b69));};AGIChannel[_0x8b77('0x1f')][_0x8b77('0x39')]=function(_0x5ca7da,_0x31a65a){return this['sendRequest'](util[_0x8b77('0x25')](_0x8b77('0x3a'),_0x5ca7da,_0x31a65a));};AGIChannel['prototype'][_0x8b77('0x3b')]=function(_0x51e679,_0x3ba4a1){return this[_0x8b77('0x20')](util[_0x8b77('0x25')]('SAY\x20PHONETIC\x20\x22%s\x22\x20%s',_0x51e679,_0x3ba4a1));};AGIChannel[_0x8b77('0x1f')][_0x8b77('0x3c')]=function(_0xcb0304,_0x1a0fad,_0x4fca72){_0x1a0fad=_0x1a0fad||this['extension'];_0x4fca72=_0x4fca72||0x1;this[_0x8b77('0x3d')](_0xcb0304);this['setExtension'](_0x1a0fad);this[_0x8b77('0x2f')](_0x4fca72);return this[_0x8b77('0x27')](util[_0x8b77('0x25')](_0x8b77('0x3e'),_0xcb0304,_0x1a0fad,_0x4fca72));};AGIChannel[_0x8b77('0x1f')][_0x8b77('0x3f')]=function(_0x3f52e6){return this[_0x8b77('0x20')](util[_0x8b77('0x25')]('GET\x20VARIABLE\x20\x22%s\x22',_0x3f52e6));};AGIChannel['prototype']['recordFile']=function(_0x368472,_0x4e8dca,_0x42ab68,_0x58aef0,_0x5c4872,_0x12a7b2){_0x4e8dca=_0x4e8dca||_0x8b77('0x40');_0x42ab68=_0x42ab68||'';_0x58aef0=_0x58aef0===undefined?-0x1:_0x58aef0==='-1'?-0x1:_0x58aef0*0x3e8;_0x5c4872=_0x5c4872===undefined?'':'s='+_0x5c4872;_0x12a7b2=_0x12a7b2?_0x8b77('0x41'):'';return this[_0x8b77('0x20')](util[_0x8b77('0x25')](_0x8b77('0x42'),_0x368472,_0x4e8dca,_0x42ab68,_0x58aef0,_0x12a7b2,_0x5c4872));};AGIChannel[_0x8b77('0x1f')][_0x8b77('0x43')]=function(_0x18377e,_0x27a091){_0x27a091=_0x27a091||'';return this[_0x8b77('0x20')](util[_0x8b77('0x25')](_0x8b77('0x44'),_0x18377e,_0x27a091));};AGIChannel['prototype']['agi']=function(_0xc51a00){return this[_0x8b77('0x28')](_0x8b77('0x45'),_0xc51a00);};AGIChannel[_0x8b77('0x1f')][_0x8b77('0x46')]=function(_0x363c98){return this[_0x8b77('0x28')](_0x8b77('0x47'),_0x363c98);};AGIChannel[_0x8b77('0x1f')][_0x8b77('0x17')]=function(_0xb812b4,_0xb821d5){this[_0x8b77('0x27')](util['format'](_0x8b77('0x48'),_0xb812b4['id'],_0xb812b4[_0x8b77('0x49')],_0xb821d5));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;
\ No newline at end of file
+var _0x1203=['replace','result=','substr','indexOf','startsWith','split','length','match','error','E_AGI_SOCKET_ERROR','code','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','pipe','command','function','close','inherits','prototype','sendRequest','sync','ANSWER','beep','NO\x20MESSAGE','format','VERBOSE\x20\x22%s\x22','isArray','EXEC\x20%s\x20%s','join','setContext','SET\x20CONTEXT\x20%s','setExtension','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','HANGUP','setVariable','isBoolean','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','sayPhonetic','continueAt','noop','GOTO\x20%s\x20%s\x20%s','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','exec','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','lodash','events','EventEmitter','./reply','./error','call','setEncoding','utf8','setTimeout','headers','line','hangup','emit','substring','search','520\x20End\x20of\x20proper','no\x20code'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x1203,0x8c));var _0x3120=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1203[_0x14add3];return _0x4a174f;};'use strict';var util=require(_0x3120('0x0'));var _=require(_0x3120('0x1'));var EventEmitter=require(_0x3120('0x2'))[_0x3120('0x3')];var AGIReply=require(_0x3120('0x4'));var AGIError=require(_0x3120('0x5'));function AGIChannel(_0x1159b3){var _0x1aff37=this,_0xc8c32e=new AGIReply(),_0x809377=![],_0x1b7a3c={};EventEmitter[_0x3120('0x6')](_0x1aff37);_0x1159b3[_0x3120('0x7')](_0x3120('0x8'));_0x1159b3[_0x3120('0x9')](0x8*0x3c*0x3c*0x3e8);_0xc8c32e[_0x3120('0x7')]('utf8');_0xc8c32e['on'](_0x3120('0xa'),function(_0x513da6){for(var _0x5e19f1 in _0x513da6){_0x1aff37[_0x5e19f1]=_0x513da6[_0x5e19f1];}_0x1aff37['emit']('ready');});_0xc8c32e['on'](_0x3120('0xb'),function(_0x39f834){if(_0x39f834['toLowerCase']()==_0x3120('0xc')){_0x1aff37[_0x3120('0xd')](_0x3120('0xc'));return;}if(_0x39f834[_0x3120('0xe')](0x0,0xb)=='520-Invalid'){_0x809377=!![];}if(_0x809377){_0x1b7a3c['rx']+=_0x39f834+'\x0a';if(_0x39f834[_0x3120('0xf')](_0x3120('0x10'))!=-0x1){_0x809377=![];}}else{_0x1b7a3c['rx']=_0x39f834;}if(_0x809377){return;}if(typeof _0x1b7a3c['cb']=='function'){var _0x4a4312=_0x1b7a3c['rx'][_0x3120('0xe')](0x0,0x3),_0x41a236=null,_0x2b1879=null;_0x4a4312=parseInt(_0x4a4312);if(isNaN(_0x4a4312)){_0x1b7a3c['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x3120('0x11')});return;}if(_0x4a4312!=0xc8){_0x1b7a3c['cb'](null,{'code':_0x4a4312,'result':-0x1,'extra':'KO'});return;}_0x41a236=_0x1b7a3c['rx'][_0x3120('0xe')](0x4)[_0x3120('0x12')](_0x3120('0x13'),'');if(_0x41a236['indexOf']('\x20')!=-0x1){_0x41a236=_0x41a236[_0x3120('0x14')](0x0,_0x41a236[_0x3120('0x15')]('\x20'));}if(_[_0x3120('0x16')](_0x41a236,'-1')){_0x41a236=parseInt(_0x41a236);}_0x2b1879=_0x1b7a3c['rx'][_0x3120('0x17')]('\x20');if(_0x2b1879[_0x3120('0x18')]==0x3){_0x2b1879=_0x2b1879[0x2][_0x3120('0xe')](0x1,_0x2b1879[0x2][_0x3120('0x18')]-0x1);}else if(_0x2b1879['length']>0x3){var _0x308873=/\((.+)\)/;var _0x4cf3db=_0x1b7a3c['rx'][_0x3120('0x19')](_0x308873);if(_0x4cf3db){_0x2b1879=_0x4cf3db[0x1];}else{_0x2b1879=null;}}else{_0x2b1879=null;}_0x1b7a3c['cb'](null,{'code':_0x4a4312,'result':_0x41a236,'extra':_0x2b1879});}});_0x1159b3['on'](_0x3120('0x1a'),function(_0x2bbdb7){_0x1aff37[_0x3120('0xd')](_0x3120('0x1a'),new AGIError(_0x3120('0x1b'),_0x2bbdb7[_0x3120('0x1c')]));});_0x1159b3['on']('close',function(){_0x1aff37[_0x3120('0xd')]('close',new AGIError(_0x3120('0x1d')));});_0x1159b3['on'](_0x3120('0x1e'),function(){_0x1aff37[_0x3120('0xd')]('timeout',new AGIError(_0x3120('0x1f')));_0x1159b3['destroy']();});_0x1159b3[_0x3120('0x20')](_0xc8c32e);this[_0x3120('0x21')]=function(_0x5edd47,_0x1358e0){var _0x5edd47=_0x5edd47||'',_0x1358e0=typeof _0x1358e0==_0x3120('0x22')?_0x1358e0:new Function();_0x1b7a3c={'tx':_0x5edd47,'rx':'','cb':_0x1358e0};_0x1159b3['write'](_0x5edd47+'\x0a');},this[_0x3120('0x23')]=function(){_0x1159b3['destroy']();};}util[_0x3120('0x24')](AGIChannel,EventEmitter);AGIChannel[_0x3120('0x25')][_0x3120('0x26')]=function(_0x56fc9f){return this['command'][_0x3120('0x27')](this,_0x56fc9f);};AGIChannel[_0x3120('0x25')]['answer']=function(){return this[_0x3120('0x26')](_0x3120('0x28'));};AGIChannel[_0x3120('0x25')]['getData']=function(_0x2636b5,_0x4597a6,_0x4412f9){_0x2636b5=_0x2636b5===undefined?_0x3120('0x29'):_0x2636b5;_0x4597a6=_0x4597a6===undefined?'5':_0x4597a6;_0x4412f9=_0x4412f9===undefined?'1':_0x4412f9;return this['sendRequest'](util['format']('GET\x20DATA\x20\x22%s\x22\x20%s\x20%s',_0x2636b5,_0x4597a6*0x3e8,_0x4412f9));};AGIChannel[_0x3120('0x25')]['noop']=function(_0x2bc753){_0x2bc753=_0x2bc753||_0x3120('0x2a');return this[_0x3120('0x26')](util[_0x3120('0x2b')](_0x3120('0x2c'),_0x2bc753));};AGIChannel[_0x3120('0x25')]['exec']=function(_0x109756,_0xeed487){if(_[_0x3120('0x2d')](_0xeed487)){return this[_0x3120('0x26')](util[_0x3120('0x2b')](_0x3120('0x2e'),_0x109756,_0xeed487[_0x3120('0x2f')](',')));}return this[_0x3120('0x26')](util['format']('EXEC\x20%s\x20%s',_0x109756,_0xeed487));};AGIChannel[_0x3120('0x25')][_0x3120('0x30')]=function(_0xd45027){return this[_0x3120('0x26')](util[_0x3120('0x2b')](_0x3120('0x31'),_0xd45027));};AGIChannel['prototype'][_0x3120('0x32')]=function(_0x180ae5){return this[_0x3120('0x26')](util[_0x3120('0x2b')](_0x3120('0x33'),_0x180ae5));};AGIChannel[_0x3120('0x25')][_0x3120('0x34')]=function(_0x571aca){return this[_0x3120('0x26')](util[_0x3120('0x2b')](_0x3120('0x35'),_0x571aca));};AGIChannel[_0x3120('0x25')][_0x3120('0xc')]=function(){return this[_0x3120('0x26')](_0x3120('0x36'));};AGIChannel[_0x3120('0x25')][_0x3120('0x37')]=function(_0x2ed2cc,_0x2fb199){var _0x78c0c2=_[_0x3120('0x38')](_0x2fb199)||_['isNumber'](_0x2fb199)?_0x2fb199['toString']():_0x2fb199;return this[_0x3120('0x26')](util[_0x3120('0x2b')](_0x3120('0x39'),_0x2ed2cc,_0x78c0c2?_0x78c0c2['toString']()[_0x3120('0x12')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x3120('0x25')][_0x3120('0x3a')]=function(_0x5d414e,_0x2a3209){return this[_0x3120('0x26')](util[_0x3120('0x2b')](_0x3120('0x3b'),_0x5d414e,_0x2a3209));};AGIChannel[_0x3120('0x25')][_0x3120('0x3c')]=function(_0x4bbc5d,_0x5e5200){return this['sendRequest'](util[_0x3120('0x2b')]('SAY\x20DIGITS\x20%s\x20%s',_0x4bbc5d,_0x5e5200));};AGIChannel[_0x3120('0x25')][_0x3120('0x3d')]=function(_0x20bde7,_0x2d7482){return this['sendRequest'](util[_0x3120('0x2b')]('SAY\x20PHONETIC\x20\x22%s\x22\x20%s',_0x20bde7,_0x2d7482));};AGIChannel[_0x3120('0x25')][_0x3120('0x3e')]=function(_0x2928a4,_0x209f18,_0x240fba){_0x209f18=_0x209f18||this['extension'];_0x240fba=_0x240fba||0x1;this[_0x3120('0x30')](_0x2928a4);this[_0x3120('0x32')](_0x209f18);this[_0x3120('0x34')](_0x240fba);return this[_0x3120('0x3f')](util['format'](_0x3120('0x40'),_0x2928a4,_0x209f18,_0x240fba));};AGIChannel[_0x3120('0x25')]['getVariable']=function(_0x1f7b81){return this[_0x3120('0x26')](util[_0x3120('0x2b')]('GET\x20VARIABLE\x20\x22%s\x22',_0x1f7b81));};AGIChannel[_0x3120('0x25')][_0x3120('0x41')]=function(_0x546b79,_0x174ece,_0x3f01ac,_0x509e39,_0x4f85ac,_0x380e26){_0x174ece=_0x174ece||_0x3120('0x42');_0x3f01ac=_0x3f01ac||'';_0x509e39=_0x509e39===undefined?-0x1:_0x509e39==='-1'?-0x1:_0x509e39*0x3e8;_0x4f85ac=_0x4f85ac===undefined?'':'s='+_0x4f85ac;_0x380e26=_0x380e26?_0x3120('0x43'):'';return this[_0x3120('0x26')](util[_0x3120('0x2b')](_0x3120('0x44'),_0x546b79,_0x174ece,_0x3f01ac,_0x509e39,_0x380e26,_0x4f85ac));};AGIChannel[_0x3120('0x25')][_0x3120('0x45')]=function(_0x3a5836,_0x4051b6){_0x4051b6=_0x4051b6||'';return this['sendRequest'](util[_0x3120('0x2b')](_0x3120('0x46'),_0x3a5836,_0x4051b6));};AGIChannel[_0x3120('0x25')][_0x3120('0x47')]=function(_0x5c16e5){return this['exec'](_0x3120('0x48'),_0x5c16e5);};AGIChannel['prototype'][_0x3120('0x49')]=function(_0x3a66f7){return this[_0x3120('0x4a')](_0x3120('0x4b'),_0x3a66f7);};AGIChannel[_0x3120('0x25')][_0x3120('0x1a')]=function(_0x33cc5a,_0x22ac87){this['noop'](util[_0x3120('0x2b')](_0x3120('0x4c'),_0x33cc5a['id'],_0x33cc5a[_0x3120('0x4d')],_0x22ac87));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x3120('0x4e')]=AGIChannel;
\ No newline at end of file
index dc59023..f478282 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf87c=['Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_UNDEFINED','push','format','message','name','exports','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Socket\x20timeout.'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xf87c,0x174));var _0xcf87=function(_0x3f4891,_0x4e6f62){_0x3f4891=_0x3f4891-0x0;var _0x54f2d8=_0xf87c[_0x3f4891];return _0x54f2d8;};'use strict';var util=require('util');var error={'E_AGI_UNDEFINED':'Undefined\x20error.','E_AGI_ARGUMENT_PORT':_0xcf87('0x0'),'E_AGI_SERVER_ERROR':'Server\x20error.\x20Code:\x20%s.','E_AGI_SERVER_CLOSE':_0xcf87('0x1'),'E_AGI_SERVER_MAXCONNECTION':_0xcf87('0x2'),'E_AGI_SERVER_VOICE_DISABLED':'[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','E_AGI_SOCKET_ERROR':_0xcf87('0x3'),'E_AGI_SOCKET_CLOSE':_0xcf87('0x4'),'E_AGI_SOCKET_TIMEOUT':_0xcf87('0x5'),'E_AGI_COMMAND_EMPTY':_0xcf87('0x6'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xcf87('0x7'),'E_AGI_IVR_ENTRY':'Missing\x20\x27ivr.entry\x27\x20menu.'};function AGIError(_0x23fcb2){var _0x23fcb2=_0x23fcb2||null,_0x239398=_0x239398||[],_0x2069af=0x1,_0x3f2555='';if(!error[_0x23fcb2]){_0x23fcb2=_0xcf87('0x8');}_0x239398[_0xcf87('0x9')](error[_0x23fcb2]);while(arguments[_0x2069af]){_0x239398[_0xcf87('0x9')](arguments[_0x2069af]);_0x2069af++;}_0x3f2555=util[_0xcf87('0xa')]['apply'](util,_0x239398);this[_0xcf87('0xb')]=_0x3f2555;this[_0xcf87('0xc')]=_0x23fcb2;}module[_0xcf87('0xd')]=AGIError;
\ No newline at end of file
+var _0x3aca=['util','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20timeout.','Missing\x20\x27ivr.agi_network_script\x27.','push','format','apply','message','exports'];(function(_0x490a74,_0x70ade){var _0x338d58=function(_0x26f024){while(--_0x26f024){_0x490a74['push'](_0x490a74['shift']());}};_0x338d58(++_0x70ade);}(_0x3aca,0x14a));var _0xa3ac=function(_0x4a0e68,_0x45c08c){_0x4a0e68=_0x4a0e68-0x0;var _0x4fb274=_0x3aca[_0x4a0e68];return _0x4fb274;};'use strict';var util=require(_0xa3ac('0x0'));var error={'E_AGI_UNDEFINED':_0xa3ac('0x1'),'E_AGI_ARGUMENT_PORT':_0xa3ac('0x2'),'E_AGI_SERVER_ERROR':_0xa3ac('0x3'),'E_AGI_SERVER_CLOSE':_0xa3ac('0x4'),'E_AGI_SERVER_MAXCONNECTION':_0xa3ac('0x5'),'E_AGI_SERVER_VOICE_DISABLED':_0xa3ac('0x6'),'E_AGI_SOCKET_ERROR':_0xa3ac('0x7'),'E_AGI_SOCKET_CLOSE':'Socket\x20closed.','E_AGI_SOCKET_TIMEOUT':_0xa3ac('0x8'),'E_AGI_COMMAND_EMPTY':'Empty\x20command.','E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xa3ac('0x9'),'E_AGI_IVR_ENTRY':'Missing\x20\x27ivr.entry\x27\x20menu.'};function AGIError(_0xc9c39a){var _0xc9c39a=_0xc9c39a||null,_0x28efa5=_0x28efa5||[],_0x17a5fc=0x1,_0x266d6a='';if(!error[_0xc9c39a]){_0xc9c39a='E_AGI_UNDEFINED';}_0x28efa5[_0xa3ac('0xa')](error[_0xc9c39a]);while(arguments[_0x17a5fc]){_0x28efa5[_0xa3ac('0xa')](arguments[_0x17a5fc]);_0x17a5fc++;}_0x266d6a=util[_0xa3ac('0xb')][_0xa3ac('0xc')](util,_0x28efa5);this[_0xa3ac('0xd')]=_0x266d6a;this['name']=_0xc9c39a;}module[_0xa3ac('0xe')]=AGIError;
\ No newline at end of file
index dfefd24..09d0bcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7944=['includes','max\x20retry\x20reach','exports','lodash','../../../config/logger','agi','menu','getsecretdigits','edges','numberOfEdges','prototype','addVertex','vertices','addEdge','push','size','relations','getVertex','traverseBFS','no\x20vertex\x20found','info','stop\x20traverse','length','no\x20edge/s\x20available','condition','vswitch','default','target','invalid','agicommand','default\x20on\x20switch\x20not\x20found'];(function(_0xc94d2,_0xaa25ab){var _0x177666=function(_0x3bfa5c){while(--_0x3bfa5c){_0xc94d2['push'](_0xc94d2['shift']());}};_0x177666(++_0xaa25ab);}(_0x7944,0x11a));var _0x4794=function(_0x16390c,_0x462ee9){_0x16390c=_0x16390c-0x0;var _0x1f01d7=_0x7944[_0x16390c];return _0x1f01d7;};'use strict';var _=require(_0x4794('0x0'));var logger=require(_0x4794('0x1'))(_0x4794('0x2'));var verticesWithRetry=[_0x4794('0x3'),'getdigits',_0x4794('0x4')];var Graph=function(){this['vertices']={};this[_0x4794('0x5')]={};this[_0x4794('0x6')]=0x0;};Graph[_0x4794('0x7')][_0x4794('0x8')]=function(_0x163b2e){this[_0x4794('0x9')][_0x163b2e['id']]=_0x163b2e;this[_0x4794('0x5')][_0x163b2e['id']]=[];};Graph[_0x4794('0x7')][_0x4794('0xa')]=function(_0x1af46f,_0x51d2d3,_0x401178){this['edges'][_0x1af46f][_0x4794('0xb')]({'target':_0x51d2d3,'condition':_0x401178});this[_0x4794('0x6')]+=0x1;};Graph[_0x4794('0x7')][_0x4794('0xc')]=function(){return _[_0x4794('0xc')](this['vertices']);};Graph[_0x4794('0x7')][_0x4794('0xd')]=function(){return this['numberOfEdges'];};Graph[_0x4794('0x7')][_0x4794('0xe')]=function(_0x54f459){return this[_0x4794('0x9')][_0x54f459];};Graph[_0x4794('0x7')][_0x4794('0xf')]=function(_0xfba500,_0x339375){if(!this['vertices'][_0xfba500]){return logger['info'](_0x4794('0x10'));}var _0x3b1a93=_0x339375(this[_0x4794('0x9')][_0xfba500]);if(!_0x3b1a93){return logger[_0x4794('0x11')](_0x4794('0x12'));}if(this[_0x4794('0x5')][_0xfba500][_0x4794('0x13')]===0x0){return logger[_0x4794('0x11')](_0x4794('0x14'));}for(var _0x49463e=0x0,_0x1e15f0=[],_0x457fc5=![];_0x49463e<this[_0x4794('0x5')][_0xfba500][_0x4794('0x13')];_0x49463e+=0x1){if(this[_0x4794('0x5')][_0xfba500][_0x49463e][_0x4794('0x15')]){_0x1e15f0=this['edges'][_0xfba500][_0x49463e][_0x4794('0x15')]['split'](',');for(var _0x71d3cc=0x0;_0x71d3cc<_0x1e15f0[_0x4794('0x13')];_0x71d3cc+=0x1){if(this[_0x4794('0x9')][_0xfba500]['agicommand']===_0x4794('0x16')&&_0x1e15f0[_0x71d3cc]==='-'){_0x457fc5=this['edges'][_0xfba500][_0x49463e]['target'];logger[_0x4794('0x11')](_0x4794('0x17'),_0x1e15f0[_0x71d3cc],this[_0x4794('0x5')][_0xfba500][_0x49463e]['target']);}else if(this[_0x4794('0x9')][_0xfba500]['agicommand']===_0x4794('0x3')&&_0x1e15f0[_0x71d3cc]==='i'){_0x457fc5=this[_0x4794('0x5')][_0xfba500][_0x49463e][_0x4794('0x18')];logger[_0x4794('0x11')](_0x4794('0x19'),_0x1e15f0[_0x71d3cc],this[_0x4794('0x5')][_0xfba500][_0x49463e]['target']);}if(_0x1e15f0[_0x71d3cc]===_0x3b1a93){return this[_0x4794('0xf')](this['edges'][_0xfba500][_0x49463e][_0x4794('0x18')],_0x339375);}}}else{return this[_0x4794('0xf')](this['edges'][_0xfba500][_0x49463e][_0x4794('0x18')],_0x339375);}}if(_0x1e15f0[_0x4794('0x13')]){if(this[_0x4794('0x9')][_0xfba500][_0x4794('0x1a')]==='vswitch'){if(_0x457fc5){return this['traverseBFS'](_0x457fc5,_0x339375);}return logger[_0x4794('0x11')](_0x4794('0x1b'));}else if(_[_0x4794('0x1c')](verticesWithRetry,this['vertices'][_0xfba500][_0x4794('0x1a')])){if(_0x3b1a93==='-'){return logger['info'](_0x4794('0x1d'));}if(_0x457fc5&&_0x3b1a93!=='t'){return this[_0x4794('0xf')](_0x457fc5,_0x339375);}return this[_0x4794('0xf')](_0xfba500,_0x339375);}return logger[_0x4794('0x11')]('condition\x20not\x20found');}};module[_0x4794('0x1e')]=Graph;
\ No newline at end of file
+var _0x4877=['numberOfEdges','prototype','addVertex','addEdge','size','vertices','relations','getVertex','traverseBFS','info','no\x20vertex\x20found','stop\x20traverse','no\x20edge/s\x20available','length','condition','agicommand','vswitch','target','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','condition\x20not\x20found','exports','lodash','../../../config/logger','agi','menu','getdigits','edges'];(function(_0x51668e,_0x337bec){var _0x20fde3=function(_0x4f04ba){while(--_0x4f04ba){_0x51668e['push'](_0x51668e['shift']());}};_0x20fde3(++_0x337bec);}(_0x4877,0xa8));var _0x7487=function(_0x4f03d8,_0x21d3b5){_0x4f03d8=_0x4f03d8-0x0;var _0x3ff796=_0x4877[_0x4f03d8];return _0x3ff796;};'use strict';var _=require(_0x7487('0x0'));var logger=require(_0x7487('0x1'))(_0x7487('0x2'));var verticesWithRetry=[_0x7487('0x3'),_0x7487('0x4'),'getsecretdigits'];var Graph=function(){this['vertices']={};this[_0x7487('0x5')]={};this[_0x7487('0x6')]=0x0;};Graph[_0x7487('0x7')][_0x7487('0x8')]=function(_0x4bc675){this['vertices'][_0x4bc675['id']]=_0x4bc675;this[_0x7487('0x5')][_0x4bc675['id']]=[];};Graph[_0x7487('0x7')][_0x7487('0x9')]=function(_0x698f23,_0x1b594d,_0x16390a){this[_0x7487('0x5')][_0x698f23]['push']({'target':_0x1b594d,'condition':_0x16390a});this['numberOfEdges']+=0x1;};Graph[_0x7487('0x7')]['size']=function(){return _[_0x7487('0xa')](this[_0x7487('0xb')]);};Graph[_0x7487('0x7')][_0x7487('0xc')]=function(){return this['numberOfEdges'];};Graph[_0x7487('0x7')][_0x7487('0xd')]=function(_0x1182d4){return this['vertices'][_0x1182d4];};Graph['prototype'][_0x7487('0xe')]=function(_0x4d7bc1,_0xb90bc7){if(!this['vertices'][_0x4d7bc1]){return logger[_0x7487('0xf')](_0x7487('0x10'));}var _0x242c99=_0xb90bc7(this['vertices'][_0x4d7bc1]);if(!_0x242c99){return logger[_0x7487('0xf')](_0x7487('0x11'));}if(this['edges'][_0x4d7bc1]['length']===0x0){return logger[_0x7487('0xf')](_0x7487('0x12'));}for(var _0x262eb5=0x0,_0x3bdc68=[],_0x3c8f89=![];_0x262eb5<this[_0x7487('0x5')][_0x4d7bc1][_0x7487('0x13')];_0x262eb5+=0x1){if(this[_0x7487('0x5')][_0x4d7bc1][_0x262eb5]['condition']){_0x3bdc68=this[_0x7487('0x5')][_0x4d7bc1][_0x262eb5][_0x7487('0x14')]['split'](',');for(var _0x554bb9=0x0;_0x554bb9<_0x3bdc68[_0x7487('0x13')];_0x554bb9+=0x1){if(this[_0x7487('0xb')][_0x4d7bc1][_0x7487('0x15')]===_0x7487('0x16')&&_0x3bdc68[_0x554bb9]==='-'){_0x3c8f89=this[_0x7487('0x5')][_0x4d7bc1][_0x262eb5]['target'];logger[_0x7487('0xf')]('default',_0x3bdc68[_0x554bb9],this[_0x7487('0x5')][_0x4d7bc1][_0x262eb5][_0x7487('0x17')]);}else if(this[_0x7487('0xb')][_0x4d7bc1]['agicommand']===_0x7487('0x3')&&_0x3bdc68[_0x554bb9]==='i'){_0x3c8f89=this[_0x7487('0x5')][_0x4d7bc1][_0x262eb5]['target'];logger['info']('invalid',_0x3bdc68[_0x554bb9],this[_0x7487('0x5')][_0x4d7bc1][_0x262eb5][_0x7487('0x17')]);}if(_0x3bdc68[_0x554bb9]===_0x242c99){return this[_0x7487('0xe')](this[_0x7487('0x5')][_0x4d7bc1][_0x262eb5][_0x7487('0x17')],_0xb90bc7);}}}else{return this['traverseBFS'](this['edges'][_0x4d7bc1][_0x262eb5][_0x7487('0x17')],_0xb90bc7);}}if(_0x3bdc68[_0x7487('0x13')]){if(this[_0x7487('0xb')][_0x4d7bc1]['agicommand']==='vswitch'){if(_0x3c8f89){return this['traverseBFS'](_0x3c8f89,_0xb90bc7);}return logger[_0x7487('0xf')](_0x7487('0x18'));}else if(_[_0x7487('0x19')](verticesWithRetry,this['vertices'][_0x4d7bc1]['agicommand'])){if(_0x242c99==='-'){return logger[_0x7487('0xf')](_0x7487('0x1a'));}if(_0x3c8f89&&_0x242c99!=='t'){return this[_0x7487('0xe')](_0x3c8f89,_0xb90bc7);}return this['traverseBFS'](_0x4d7bc1,_0xb90bc7);}return logger[_0x7487('0xf')](_0x7487('0x1b'));}};module[_0x7487('0x1c')]=Graph;
\ No newline at end of file
index 5558ec8..1ee303a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x691a=['./graph','./vertices','defaults','nextTick','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','error','[%s]\x20%s','[ERROR]\x20%s','stack','arg_1','calleridname','callerid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','dnid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','root','agicommand','hasOwnProperty','retry','maxRetry','addVertex','length','target','addEdge','source','value','getSquareProject','then','catch','createSquareReport','indexOf','agi_','inspect','debug','[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','stringify','joinAt','YYYY-MM-DD\x20HH:mm:ss','mxCell','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','uniqueid','traverseBFS','vertex','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','isUndefined','result','toString','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','agicommand\x20not\x20found','[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','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','./server','listening','connection','xml2json','syncho','util','moment','../../config/logger','agi','../../config/license/util','./rpc','./mailRpc'];(function(_0x2976de,_0x4c546d){var _0xecbf51=function(_0x234025){while(--_0x234025){_0x2976de['push'](_0x2976de['shift']());}};_0xecbf51(++_0x4c546d);}(_0x691a,0x167));var _0xa691=function(_0x48dbe8,_0x36a866){_0x48dbe8=_0x48dbe8-0x0;var _0x4b5006=_0x691a[_0x48dbe8];return _0x4b5006;};'use strict';var parser=require(_0xa691('0x0'));var _=require('lodash');var syncho=require(_0xa691('0x1'));var util=require(_0xa691('0x2'));var moment=require(_0xa691('0x3'));var config=require('../../config/environment');var logger=require(_0xa691('0x4'))(_0xa691('0x5'));var utilLicense=require(_0xa691('0x6'));var rpc=require(_0xa691('0x7'));var mailRpc=require(_0xa691('0x8'));var Graph=require(_0xa691('0x9'));var Vertices=require(_0xa691('0xa'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config['agi']=_[_0xa691('0xb')](config[_0xa691('0x5')],{'ip':'127.0.0.1','port':0x11dd});function connectionHandler(_0x3ff9a6){process[_0xa691('0xc')](function(){syncho(function(){try{setChannelVariables(_0x3ff9a6);agiHandler(_0x3ff9a6);}catch(_0x16447a){logger['error'](_0x16447a['stack']);}});});}function listeningHandler(){console[_0xa691('0xd')](_0xa691('0xe'),config[_0xa691('0x5')][_0xa691('0xf')]);logger[_0xa691('0x10')](util[_0xa691('0x11')](_0xa691('0x12'),config['agi']['ip'],config[_0xa691('0x5')][_0xa691('0xf')]));}function errorHandler(_0x8b888f){if(_0x8b888f&&_0x8b888f[_0xa691('0x13')]&&_0x8b888f[_0xa691('0x14')]){logger[_0xa691('0x15')](util[_0xa691('0x11')](_0xa691('0x16'),_0x8b888f[_0xa691('0x13')],_0x8b888f[_0xa691('0x14')]));}else{logger[_0xa691('0x15')](util[_0xa691('0x11')](_0xa691('0x17'),_0x8b888f[_0xa691('0x18')]));}}function closeHandler(){logger[_0xa691('0x10')](util['format']('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xa691('0x19')],this[_0xa691('0x1a')],this[_0xa691('0x1b')],this['dnid'],this['uniqueid']));try{createSquareReport(this);}catch(_0x508a28){logger[_0xa691('0x15')](_0x508a28[_0xa691('0x18')]);}}function timeoutHandler(){logger[_0xa691('0x10')](util[_0xa691('0x11')](_0xa691('0x1c'),this[_0xa691('0x19')],this[_0xa691('0x1a')],this['callerid'],this[_0xa691('0x1d')],this['uniqueid']));}function hangupHandler(){logger[_0xa691('0x10')](util['format'](_0xa691('0x1e'),this['arg_1'],this[_0xa691('0x1a')],this[_0xa691('0x1b')],this['dnid'],this['uniqueid']));this[_0xa691('0x1f')]=!![];}function getRoot(_0x21add0){return parser[_0xa691('0x20')](_0x21add0,{'object':!![]})['mxGraphModel'][_0xa691('0x21')];}function addVertex(_0x52d04c,_0x49b941,_0x115b47){_0x49b941[_0xa691('0x22')]=_0x115b47;if(_0x49b941[_0xa691('0x23')](_0xa691('0x24'))){_0x49b941[_0xa691('0x25')]=parseInt(_0x49b941[_0xa691('0x24')],0xa);}_0x52d04c[_0xa691('0x26')](_['omit'](_0x49b941,'mxCell'));}function initGraph(_0x289a7d,_0x2d8090){var _0x19e4be=new Graph();for(var _0x45b1ae in _0x289a7d){if(_0x289a7d[_0xa691('0x23')](_0x45b1ae)){if(_['isArray'](_0x289a7d[_0x45b1ae])){for(var _0x5895ed=0x0;_0x5895ed<_0x289a7d[_0x45b1ae][_0xa691('0x27')];_0x5895ed+=0x1){addVertex(_0x19e4be,_0x289a7d[_0x45b1ae][_0x5895ed],_0x45b1ae);}}else{addVertex(_0x19e4be,_0x289a7d[_0x45b1ae],_0x45b1ae);}}}for(var _0x55e61a=0x0;_0x55e61a<_0x2d8090[_0xa691('0x27')];_0x55e61a+=0x1){if(_0x2d8090[_0x55e61a]['source']&&_0x2d8090[_0x55e61a][_0xa691('0x28')]){_0x19e4be[_0xa691('0x29')](_0x2d8090[_0x55e61a][_0xa691('0x2a')],_0x2d8090[_0x55e61a]['target'],_0x2d8090[_0x55e61a][_0xa691('0x2b')]);}}return _0x19e4be;}function getSquareProject(_0x316ac9,_0x41bc17){rpc[_0xa691('0x2c')](_0x316ac9)[_0xa691('0x2d')](function(_0x18df24){_0x41bc17(null,_0x18df24);})[_0xa691('0x2e')](function(_0x1ef485){_0x41bc17(null,_0x1ef485);});}function createSquareReport(_0x154152,_0xcebb90){rpc[_0xa691('0x2f')](_0x154152)[_0xa691('0x2d')](function(_0x1e64ea){if(_0xcebb90){_0xcebb90(null,_0x1e64ea);}})[_0xa691('0x2e')](function(_0x71429a){if(_0xcebb90){_0xcebb90(null,_0x71429a);}});}function setChannelVariables(_0x3eed0f){for(var _0x5eb898 in _0x3eed0f){if(_0x3eed0f[_0xa691('0x23')](_0x5eb898)){if(_0x5eb898[_0xa691('0x30')](_0xa691('0x31'))===0x0){_0x3eed0f[_0x5eb898['substring'](0x4)]=_0x3eed0f[_0x5eb898];delete _0x3eed0f[_0x5eb898];}}}}function getLogFromObject(_0x40ce32){return util[_0xa691('0x32')](_0x40ce32,{'showHidden':![],'depth':null});}function agiHandler(_0x55175b){var _0x382c3d,_0x12c43b,_0x2c47fa,_0x5bd578,_0x1771a9;logger[_0xa691('0x33')]('variables',JSON['stringify'](_0x55175b,null,0x2));logger[_0xa691('0x10')](util[_0xa691('0x11')](_0xa691('0x34'),_0x55175b[_0xa691('0x19')],_0x55175b[_0xa691('0x1a')],_0x55175b[_0xa691('0x1b')],_0x55175b[_0xa691('0x1d')],_0x55175b['uniqueid']));_0x55175b['on'](_0xa691('0x15'),errorHandler);_0x55175b['on'](_0xa691('0x35'),closeHandler);_0x55175b['on'](_0xa691('0x36'),timeoutHandler);_0x55175b[_0xa691('0x1f')]=![];_0x55175b['on'](_0xa691('0x37'),hangupHandler);var _0x10a262=getSquareProject[_0xa691('0x38')](null,_0x55175b[_0xa691('0x19')]);if(_0x10a262){if(_0x10a262[_0xa691('0x39')]){_0x382c3d=getRoot(_0x10a262[_0xa691('0x39')]);if(_0x382c3d&&_0x382c3d[_0xa691('0x3a')]){logger[_0xa691('0x33')](_0xa691('0x21'),JSON[_0xa691('0x3b')](_0x382c3d,null,0x2));_0x55175b[_0xa691('0x3c')]=moment()[_0xa691('0x11')](_0xa691('0x3d'));_0x12c43b=initGraph(_['omit'](_0x382c3d,_0xa691('0x3e')),_0x382c3d[_0xa691('0x3e')]);_0x2c47fa=new Vertices(_0x55175b,rpc,mailRpc);logger[_0xa691('0x10')](util['format'](_0xa691('0x3f'),_0x55175b['arg_1'],_0x55175b['calleridname'],_0x55175b['callerid'],_0x55175b[_0xa691('0x1d')],_0x55175b[_0xa691('0x40')]));_0x12c43b[_0xa691('0x41')](_0x382c3d['start']['id'],function(_0x20742a){try{_0x20742a=_0x2c47fa['clear'](_0x20742a);logger[_0xa691('0x33')](_0xa691('0x42'),JSON['stringify'](_0x20742a,null,0x2));if(_0x20742a['agicommand']===_0xa691('0x43')){logger[_0xa691('0x10')](_0xa691('0x44'));_0x55175b[_0xa691('0x45')]=_0x20742a['context']||_0x55175b[_0xa691('0x45')];_0x55175b['extension']=_0x20742a[_0xa691('0x46')];_0x55175b[_0xa691('0x47')]=_0x20742a['priority']?_0x20742a['priority']-0x1:0x1;return null;}else if(_0x20742a&&_0x2c47fa[_0x20742a['agicommand']]){_0x1771a9=_0x2c47fa[_0x20742a[_0xa691('0x22')]](_0x20742a);logger[_0xa691('0x10')](_0xa691('0x48'),JSON['stringify'](_0x1771a9,null,0x2));if(_0x1771a9&&_0x1771a9[_0xa691('0x49')]===AGI_CODE_SUCCESS&&_0x1771a9['result']!==AGI_RESULT_ERROR&&!_0x55175b[_0xa691('0x1f')]){logger[_0xa691('0x33')](_0xa691('0x48'),getLogFromObject(_0x1771a9));return _[_0xa691('0x4a')](_0x1771a9[_0xa691('0x4b')])?null:_0x1771a9[_0xa691('0x4b')][_0xa691('0x4c')]();}else{logger[_0xa691('0x15')](_0xa691('0x48'),getLogFromObject(_0x1771a9));return null;}}else{logger['error']('agicommand\x20not\x20found');return null;}}catch(_0x54ea44){logger[_0xa691('0x15')](_0x54ea44[_0xa691('0x18')]);return null;}});if(_0x382c3d[_0xa691('0x4d')]){logger[_0xa691('0x10')](util['format'](_0xa691('0x4e'),_0x55175b['arg_1'],_0x55175b[_0xa691('0x1a')],_0x55175b[_0xa691('0x1b')],_0x55175b[_0xa691('0x1d')],_0x55175b[_0xa691('0x40')]));_0x12c43b[_0xa691('0x41')](_0x382c3d['finally']['id'],function(_0x3938f9){try{_0x3938f9=_0x2c47fa['clear'](_0x3938f9);logger[_0xa691('0x33')](_0xa691('0x42'),JSON[_0xa691('0x3b')](_0x3938f9,null,0x2));if(_0x3938f9&&_0x2c47fa[_0x3938f9[_0xa691('0x22')]]){_0x1771a9=_0x2c47fa[_0x3938f9[_0xa691('0x22')]](_0x3938f9);if(_0x1771a9){logger[_0xa691('0x33')](_0xa691('0x48'),getLogFromObject(_0x1771a9));return _[_0xa691('0x4a')](_0x1771a9[_0xa691('0x4b')])?null:_0x1771a9[_0xa691('0x4b')][_0xa691('0x4c')]();}else{logger[_0xa691('0x15')](_0xa691('0x48'),getLogFromObject(_0x1771a9));return null;}}else{logger[_0xa691('0x15')](_0xa691('0x4f'));return null;}}catch(_0x381ef2){logger[_0xa691('0x15')](_0x381ef2[_0xa691('0x18')]);return null;}});}logger[_0xa691('0x10')](util[_0xa691('0x11')](_0xa691('0x50'),_0x55175b[_0xa691('0x19')],_0x55175b['calleridname'],_0x55175b[_0xa691('0x1b')],_0x55175b[_0xa691('0x1d')],_0x55175b[_0xa691('0x40')]));logger['info'](util['format'](_0xa691('0x51'),_0x55175b[_0xa691('0x45')],_0x55175b[_0xa691('0x46')],parseInt(_0x55175b[_0xa691('0x47')],0xa)+0x1));_0x55175b['continueAt'](_0x55175b[_0xa691('0x45')],_0x55175b[_0xa691('0x46')],parseInt(_0x55175b[_0xa691('0x47')],0xa)+0x1);_0x55175b['close']();}}else{logger[_0xa691('0x15')](util[_0xa691('0x11')]('Project\x20%s\x20not\x20published',_0x55175b[_0xa691('0x19')]));_0x55175b[_0xa691('0x52')](_0x55175b[_0xa691('0x45')],_0x55175b[_0xa691('0x46')],parseInt(_0x55175b['priority'],0xa)+0x1);_0x55175b[_0xa691('0x35')]();}}else{logger[_0xa691('0x15')](util['format']('Project\x20%s\x20not\x20found',_0x55175b[_0xa691('0x19')]));_0x55175b[_0xa691('0x52')](_0x55175b['context'],_0x55175b[_0xa691('0x46')],parseInt(_0x55175b[_0xa691('0x47')],0xa)+0x1);_0x55175b[_0xa691('0x35')]();}}function main(){var _0x5ad50c;return utilLicense[_0xa691('0x53')]()['then'](function(_0x5d0d78){if(_0x5d0d78){if(_0x5d0d78[_0xa691('0x54')]){if(_0x5d0d78[_0xa691('0x55')]&&_0x5d0d78[_0xa691('0x55')]>0x0){logger[_0xa691('0x10')](util[_0xa691('0x11')](_0xa691('0x56'),_0x5d0d78['callysquare']));_0x5ad50c=_0x5d0d78[_0xa691('0x55')];}else{logger[_0xa691('0x10')](_0xa691('0x57'));}}else{logger['info'](_0xa691('0x58'));_0x5ad50c=-0x1;}}})[_0xa691('0x2e')](function(_0x430bcd){logger['error']('[LICENSE]',_0x430bcd[_0xa691('0x18')]);})['finally'](function(){var _0xac8c6b=require(_0xa691('0x59'))(config[_0xa691('0x5')][_0xa691('0xf')],config[_0xa691('0x5')]['ip'],_0x5ad50c);_0xac8c6b['on'](_0xa691('0x15'),errorHandler);_0xac8c6b['on'](_0xa691('0x5a'),listeningHandler);_0xac8c6b['on'](_0xa691('0x5b'),connectionHandler);_0xac8c6b['on']('close',closeHandler);});}main();
\ No newline at end of file
+var _0xc489=['[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','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','uniqueid','evtHangup','toJson','mxGraphModel','agicommand','hasOwnProperty','retry','maxRetry','addVertex','omit','mxCell','length','source','target','value','catch','indexOf','agi_','substring','inspect','debug','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','timeout','hangup','start','root','joinAt','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','clear','vertex','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','isUndefined','agicommand\x20not\x20found','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','finally','toString','continueAt','close','Project\x20%s\x20not\x20found','getLicense','then','voice','callysquare','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]','./server','listening','connection','xml2json','lodash','syncho','moment','../../config/environment','./mailRpc','./vertices','agi','defaults','nextTick','error','stack','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','message','[%s]\x20%s','name','[ERROR]\x20%s'];(function(_0x4e0174,_0x347ca3){var _0x21b5db=function(_0x2f4b40){while(--_0x2f4b40){_0x4e0174['push'](_0x4e0174['shift']());}};_0x21b5db(++_0x347ca3);}(_0xc489,0x18f));var _0x9c48=function(_0x51246e,_0x4d0d02){_0x51246e=_0x51246e-0x0;var _0x1e4257=_0xc489[_0x51246e];return _0x1e4257;};'use strict';var parser=require(_0x9c48('0x0'));var _=require(_0x9c48('0x1'));var syncho=require(_0x9c48('0x2'));var util=require('util');var moment=require(_0x9c48('0x3'));var config=require(_0x9c48('0x4'));var logger=require('../../config/logger')('agi');var utilLicense=require('../../config/license/util');var rpc=require('./rpc');var mailRpc=require(_0x9c48('0x5'));var Graph=require('./graph');var Vertices=require(_0x9c48('0x6'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x9c48('0x7')]=_[_0x9c48('0x8')](config[_0x9c48('0x7')],{'ip':'127.0.0.1','port':0x11dd});function connectionHandler(_0x5def31){process[_0x9c48('0x9')](function(){syncho(function(){try{setChannelVariables(_0x5def31);agiHandler(_0x5def31);}catch(_0x24c381){logger[_0x9c48('0xa')](_0x24c381[_0x9c48('0xb')]);}});});}function listeningHandler(){console['log'](_0x9c48('0xc'),config[_0x9c48('0x7')][_0x9c48('0xd')]);logger[_0x9c48('0xe')](util[_0x9c48('0xf')](_0x9c48('0x10'),config[_0x9c48('0x7')]['ip'],config['agi'][_0x9c48('0xd')]));}function errorHandler(_0x45282a){if(_0x45282a&&_0x45282a['name']&&_0x45282a[_0x9c48('0x11')]){logger[_0x9c48('0xa')](util[_0x9c48('0xf')](_0x9c48('0x12'),_0x45282a[_0x9c48('0x13')],_0x45282a[_0x9c48('0x11')]));}else{logger[_0x9c48('0xa')](util[_0x9c48('0xf')](_0x9c48('0x14'),_0x45282a[_0x9c48('0xb')]));}}function closeHandler(){logger[_0x9c48('0xe')](util[_0x9c48('0xf')](_0x9c48('0x15'),this[_0x9c48('0x16')],this[_0x9c48('0x17')],this[_0x9c48('0x18')],this[_0x9c48('0x19')],this['uniqueid']));try{createSquareReport(this);}catch(_0x6cbb00){logger[_0x9c48('0xa')](_0x6cbb00[_0x9c48('0xb')]);}}function timeoutHandler(){logger[_0x9c48('0xe')](util[_0x9c48('0xf')](_0x9c48('0x1a'),this['arg_1'],this[_0x9c48('0x17')],this[_0x9c48('0x18')],this['dnid'],this['uniqueid']));}function hangupHandler(){logger[_0x9c48('0xe')](util[_0x9c48('0xf')](_0x9c48('0x1b'),this[_0x9c48('0x16')],this[_0x9c48('0x17')],this['callerid'],this[_0x9c48('0x19')],this[_0x9c48('0x1c')]));this[_0x9c48('0x1d')]=!![];}function getRoot(_0x566175){return parser[_0x9c48('0x1e')](_0x566175,{'object':!![]})[_0x9c48('0x1f')]['root'];}function addVertex(_0x22a4d5,_0xf94b33,_0x5869e2){_0xf94b33[_0x9c48('0x20')]=_0x5869e2;if(_0xf94b33[_0x9c48('0x21')](_0x9c48('0x22'))){_0xf94b33[_0x9c48('0x23')]=parseInt(_0xf94b33[_0x9c48('0x22')],0xa);}_0x22a4d5[_0x9c48('0x24')](_[_0x9c48('0x25')](_0xf94b33,_0x9c48('0x26')));}function initGraph(_0x15a843,_0x36fb6b){var _0x33be34=new Graph();for(var _0x32bbf3 in _0x15a843){if(_0x15a843[_0x9c48('0x21')](_0x32bbf3)){if(_['isArray'](_0x15a843[_0x32bbf3])){for(var _0x70d8e9=0x0;_0x70d8e9<_0x15a843[_0x32bbf3][_0x9c48('0x27')];_0x70d8e9+=0x1){addVertex(_0x33be34,_0x15a843[_0x32bbf3][_0x70d8e9],_0x32bbf3);}}else{addVertex(_0x33be34,_0x15a843[_0x32bbf3],_0x32bbf3);}}}for(var _0x353c38=0x0;_0x353c38<_0x36fb6b[_0x9c48('0x27')];_0x353c38+=0x1){if(_0x36fb6b[_0x353c38][_0x9c48('0x28')]&&_0x36fb6b[_0x353c38][_0x9c48('0x29')]){_0x33be34['addEdge'](_0x36fb6b[_0x353c38]['source'],_0x36fb6b[_0x353c38]['target'],_0x36fb6b[_0x353c38][_0x9c48('0x2a')]);}}return _0x33be34;}function getSquareProject(_0x3dd260,_0x532b0e){rpc['getSquareProject'](_0x3dd260)['then'](function(_0x17f1f2){_0x532b0e(null,_0x17f1f2);})[_0x9c48('0x2b')](function(_0xd49623){_0x532b0e(null,_0xd49623);});}function createSquareReport(_0x288c26,_0x4c86ee){rpc['createSquareReport'](_0x288c26)['then'](function(_0x434c1b){if(_0x4c86ee){_0x4c86ee(null,_0x434c1b);}})[_0x9c48('0x2b')](function(_0x1f27c6){if(_0x4c86ee){_0x4c86ee(null,_0x1f27c6);}});}function setChannelVariables(_0xf45c88){for(var _0x5bdfac in _0xf45c88){if(_0xf45c88[_0x9c48('0x21')](_0x5bdfac)){if(_0x5bdfac[_0x9c48('0x2c')](_0x9c48('0x2d'))===0x0){_0xf45c88[_0x5bdfac[_0x9c48('0x2e')](0x4)]=_0xf45c88[_0x5bdfac];delete _0xf45c88[_0x5bdfac];}}}}function getLogFromObject(_0xb4e7cf){return util[_0x9c48('0x2f')](_0xb4e7cf,{'showHidden':![],'depth':null});}function agiHandler(_0x3e7fad){var _0x24317f,_0x162d07,_0x77948a,_0x5c96f9,_0x338cf0;logger[_0x9c48('0x30')]('variables',JSON[_0x9c48('0x31')](_0x3e7fad,null,0x2));logger['info'](util['format'](_0x9c48('0x32'),_0x3e7fad[_0x9c48('0x16')],_0x3e7fad['calleridname'],_0x3e7fad[_0x9c48('0x18')],_0x3e7fad[_0x9c48('0x19')],_0x3e7fad[_0x9c48('0x1c')]));_0x3e7fad['on']('error',errorHandler);_0x3e7fad['on']('close',closeHandler);_0x3e7fad['on'](_0x9c48('0x33'),timeoutHandler);_0x3e7fad[_0x9c48('0x1d')]=![];_0x3e7fad['on'](_0x9c48('0x34'),hangupHandler);var _0x31172f=getSquareProject['sync'](null,_0x3e7fad[_0x9c48('0x16')]);if(_0x31172f){if(_0x31172f['production']){_0x24317f=getRoot(_0x31172f['production']);if(_0x24317f&&_0x24317f[_0x9c48('0x35')]){logger['debug'](_0x9c48('0x36'),JSON['stringify'](_0x24317f,null,0x2));_0x3e7fad[_0x9c48('0x37')]=moment()[_0x9c48('0xf')]('YYYY-MM-DD\x20HH:mm:ss');_0x162d07=initGraph(_['omit'](_0x24317f,'mxCell'),_0x24317f[_0x9c48('0x26')]);_0x77948a=new Vertices(_0x3e7fad,rpc,mailRpc);logger['info'](util[_0x9c48('0xf')](_0x9c48('0x38'),_0x3e7fad[_0x9c48('0x16')],_0x3e7fad[_0x9c48('0x17')],_0x3e7fad['callerid'],_0x3e7fad['dnid'],_0x3e7fad[_0x9c48('0x1c')]));_0x162d07['traverseBFS'](_0x24317f[_0x9c48('0x35')]['id'],function(_0x381e9c){try{_0x381e9c=_0x77948a[_0x9c48('0x39')](_0x381e9c);logger[_0x9c48('0x30')](_0x9c48('0x3a'),JSON[_0x9c48('0x31')](_0x381e9c,null,0x2));if(_0x381e9c['agicommand']===_0x9c48('0x3b')){logger[_0x9c48('0xe')](_0x9c48('0x3c'));_0x3e7fad[_0x9c48('0x3d')]=_0x381e9c[_0x9c48('0x3d')]||_0x3e7fad[_0x9c48('0x3d')];_0x3e7fad[_0x9c48('0x3e')]=_0x381e9c[_0x9c48('0x3e')];_0x3e7fad[_0x9c48('0x3f')]=_0x381e9c[_0x9c48('0x3f')]?_0x381e9c[_0x9c48('0x3f')]-0x1:0x1;return null;}else if(_0x381e9c&&_0x77948a[_0x381e9c[_0x9c48('0x20')]]){_0x338cf0=_0x77948a[_0x381e9c['agicommand']](_0x381e9c);logger[_0x9c48('0xe')](_0x9c48('0x40'),JSON[_0x9c48('0x31')](_0x338cf0,null,0x2));if(_0x338cf0&&_0x338cf0[_0x9c48('0x41')]===AGI_CODE_SUCCESS&&_0x338cf0[_0x9c48('0x42')]!==AGI_RESULT_ERROR&&!_0x3e7fad[_0x9c48('0x1d')]){logger[_0x9c48('0x30')](_0x9c48('0x40'),getLogFromObject(_0x338cf0));return _[_0x9c48('0x43')](_0x338cf0[_0x9c48('0x42')])?null:_0x338cf0['result']['toString']();}else{logger[_0x9c48('0xa')](_0x9c48('0x40'),getLogFromObject(_0x338cf0));return null;}}else{logger[_0x9c48('0xa')](_0x9c48('0x44'));return null;}}catch(_0x22f7bf){logger[_0x9c48('0xa')](_0x22f7bf[_0x9c48('0xb')]);return null;}});if(_0x24317f['finally']){logger[_0x9c48('0xe')](util[_0x9c48('0xf')](_0x9c48('0x45'),_0x3e7fad[_0x9c48('0x16')],_0x3e7fad['calleridname'],_0x3e7fad[_0x9c48('0x18')],_0x3e7fad[_0x9c48('0x19')],_0x3e7fad[_0x9c48('0x1c')]));_0x162d07['traverseBFS'](_0x24317f[_0x9c48('0x46')]['id'],function(_0x5c6731){try{_0x5c6731=_0x77948a[_0x9c48('0x39')](_0x5c6731);logger[_0x9c48('0x30')](_0x9c48('0x3a'),JSON[_0x9c48('0x31')](_0x5c6731,null,0x2));if(_0x5c6731&&_0x77948a[_0x5c6731[_0x9c48('0x20')]]){_0x338cf0=_0x77948a[_0x5c6731[_0x9c48('0x20')]](_0x5c6731);if(_0x338cf0){logger['debug']('response',getLogFromObject(_0x338cf0));return _[_0x9c48('0x43')](_0x338cf0['result'])?null:_0x338cf0[_0x9c48('0x42')][_0x9c48('0x47')]();}else{logger['error'](_0x9c48('0x40'),getLogFromObject(_0x338cf0));return null;}}else{logger[_0x9c48('0xa')](_0x9c48('0x44'));return null;}}catch(_0x3f80f7){logger[_0x9c48('0xa')](_0x3f80f7['stack']);return null;}});}logger[_0x9c48('0xe')](util[_0x9c48('0xf')]('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x3e7fad['arg_1'],_0x3e7fad['calleridname'],_0x3e7fad[_0x9c48('0x18')],_0x3e7fad['dnid'],_0x3e7fad[_0x9c48('0x1c')]));logger['info'](util[_0x9c48('0xf')]('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x3e7fad['context'],_0x3e7fad[_0x9c48('0x3e')],parseInt(_0x3e7fad[_0x9c48('0x3f')],0xa)+0x1));_0x3e7fad[_0x9c48('0x48')](_0x3e7fad['context'],_0x3e7fad[_0x9c48('0x3e')],parseInt(_0x3e7fad['priority'],0xa)+0x1);_0x3e7fad[_0x9c48('0x49')]();}}else{logger[_0x9c48('0xa')](util[_0x9c48('0xf')]('Project\x20%s\x20not\x20published',_0x3e7fad[_0x9c48('0x16')]));_0x3e7fad[_0x9c48('0x48')](_0x3e7fad[_0x9c48('0x3d')],_0x3e7fad['extension'],parseInt(_0x3e7fad[_0x9c48('0x3f')],0xa)+0x1);_0x3e7fad['close']();}}else{logger['error'](util[_0x9c48('0xf')](_0x9c48('0x4a'),_0x3e7fad[_0x9c48('0x16')]));_0x3e7fad['continueAt'](_0x3e7fad[_0x9c48('0x3d')],_0x3e7fad['extension'],parseInt(_0x3e7fad[_0x9c48('0x3f')],0xa)+0x1);_0x3e7fad[_0x9c48('0x49')]();}}function main(){var _0x3df196;return utilLicense[_0x9c48('0x4b')]()[_0x9c48('0x4c')](function(_0x151aac){if(_0x151aac){if(_0x151aac[_0x9c48('0x4d')]){if(_0x151aac[_0x9c48('0x4e')]&&_0x151aac[_0x9c48('0x4e')]>0x0){logger[_0x9c48('0xe')](util[_0x9c48('0xf')]('[LICENSE]\x20CHANNELS:\x20%s',_0x151aac[_0x9c48('0x4e')]));_0x3df196=_0x151aac[_0x9c48('0x4e')];}else{logger['info'](_0x9c48('0x4f'));}}else{logger['info']('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x3df196=-0x1;}}})[_0x9c48('0x2b')](function(_0x30f7b9){logger[_0x9c48('0xa')](_0x9c48('0x50'),_0x30f7b9[_0x9c48('0xb')]);})[_0x9c48('0x46')](function(){var _0x52514d=require(_0x9c48('0x51'))(config['agi'][_0x9c48('0xd')],config[_0x9c48('0x7')]['ip'],_0x3df196);_0x52514d['on']('error',errorHandler);_0x52514d['on'](_0x9c48('0x52'),listeningHandler);_0x52514d['on'](_0x9c48('0x53'),connectionHandler);_0x52514d['on'](_0x9c48('0x49'),closeHandler);});}main();
\ No newline at end of file
index 90e795d..116ed4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb94=['error','result','SendMail','jayson/promise','http','request','then'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xbb94,0x1df));var _0x4bb9=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xbb94[_0x397e5f];return _0x5302b8;};'use strict';var BPromise=require('bluebird');var jayson=require(_0x4bb9('0x0'));var client=jayson['client'][_0x4bb9('0x1')]({'port':0x232b});function request(_0x47b90f,_0x326c07){return new BPromise(function(_0x2cfca8,_0xdb73dd){return client[_0x4bb9('0x2')](_0x47b90f,_0x326c07)[_0x4bb9('0x3')](function(_0x46768a){if(_0x46768a[_0x4bb9('0x4')]){return _0xdb73dd(_0x46768a[_0x4bb9('0x4')]['message']);}else{return _0x2cfca8(_0x46768a[_0x4bb9('0x5')]);}})['catch'](function(_0x2c84ec){return _0xdb73dd(_0x2c84ec);});});}exports['sendMailMessage']=function(_0xd42ab9,_0x51ad48){return request(_0x4bb9('0x6'),{'account':_0xd42ab9,'message':_0x51ad48});};
\ No newline at end of file
+var _0x3063=['jayson/promise','http','request','then','error','message','result','SendMail','bluebird'];(function(_0x411017,_0x4a8117){var _0x2adeea=function(_0x545222){while(--_0x545222){_0x411017['push'](_0x411017['shift']());}};_0x2adeea(++_0x4a8117);}(_0x3063,0xe9));var _0x3306=function(_0x17ebae,_0x7da3){_0x17ebae=_0x17ebae-0x0;var _0x8cbe7d=_0x3063[_0x17ebae];return _0x8cbe7d;};'use strict';var BPromise=require(_0x3306('0x0'));var jayson=require(_0x3306('0x1'));var client=jayson['client'][_0x3306('0x2')]({'port':0x232b});function request(_0x1b3cc1,_0x89bf9){return new BPromise(function(_0x2190f3,_0x5be16b){return client[_0x3306('0x3')](_0x1b3cc1,_0x89bf9)[_0x3306('0x4')](function(_0x2619e8){if(_0x2619e8['error']){return _0x5be16b(_0x2619e8[_0x3306('0x5')][_0x3306('0x6')]);}else{return _0x2190f3(_0x2619e8[_0x3306('0x7')]);}})['catch'](function(_0x16834a){return _0x5be16b(_0x16834a);});});}exports['sendMailMessage']=function(_0x3b005f,_0x464ea3){return request(_0x3306('0x8'),{'account':_0x3b005f,'message':_0x464ea3});};
\ No newline at end of file
index 6023828..4232aa9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7444=['length','emit','headers','line','exports','util','stream','Transform','call','_inBody','prototype','_transform','_localBuffer','toString','indexOf','substring','slice','trim'];(function(_0x38d8dd,_0x5b0560){var _0x467a6e=function(_0x308e5f){while(--_0x308e5f){_0x38d8dd['push'](_0x38d8dd['shift']());}};_0x467a6e(++_0x5b0560);}(_0x7444,0x83));var _0x4744=function(_0x5ae05e,_0x3d5e5c){_0x5ae05e=_0x5ae05e-0x0;var _0x253ff8=_0x7444[_0x5ae05e];return _0x253ff8;};'use strict';var util=require(_0x4744('0x0'));var Transform=require(_0x4744('0x1'))[_0x4744('0x2')];function AGIReply(_0x166410){Transform[_0x4744('0x3')](this,_0x166410);this['_localBuffer']='';this[_0x4744('0x4')]=![];}util['inherits'](AGIReply,Transform);AGIReply[_0x4744('0x5')][_0x4744('0x6')]=function(_0x3d0ff3,_0xd37883,_0xfe2efa){var _0x17e83d='\x0a',_0x923c0e=['\x0a\x0a','\x0d\x0a\x0d\x0a'],_0xdea0ba=-0x1,_0x73aade=-0x1,_0x333eaf='',_0x501195=0x0,_0x7d720a='',_0x58d499='';this[_0x4744('0x7')]+=_0x3d0ff3[_0x4744('0x8')]();_0x7d720a=this['_localBuffer'];if(!this['_inBody']){_0x501195=0x0;while(_0x923c0e[_0x501195]){while((_0x73aade=_0x7d720a[_0x4744('0x9')](_0x923c0e[_0x501195]))!=-0x1){_0x333eaf=_0x923c0e[_0x501195];_0x58d499=_0x7d720a['substring'](0x0,_0x73aade);_0x7d720a=_0x7d720a[_0x4744('0xa')](_0x73aade+_0x333eaf['length']);var _0x44c330=_0x58d499['split'](_0x17e83d),_0x506b84=0x0,_0x4fa9b6={},_0x56656b='',_0x43a29e='',_0x47ef48=-0x1;while(_0x44c330[_0x506b84]){_0x47ef48=_0x44c330[_0x506b84][_0x4744('0x9')](':');if(_0x47ef48!=-0x1){_0x56656b=_0x44c330[_0x506b84][_0x4744('0xb')](0x0,_0x47ef48)['trim']();_0x43a29e=_0x44c330[_0x506b84]['slice'](_0x47ef48+0x1)[_0x4744('0xc')]();if(_0x56656b[_0x4744('0xd')]>0x0){_0x4fa9b6[_0x56656b]=_0x43a29e;}}else{}_0x506b84++;}this[_0x4744('0xe')](_0x4744('0xf'),_0x4fa9b6);this['_inBody']=!![];}_0x501195++;}this[_0x4744('0x7')]=_0x7d720a;}else{while((_0xdea0ba=_0x7d720a['indexOf'](_0x17e83d))!=-0x1){_0x58d499=_0x7d720a[_0x4744('0xa')](0x0,_0xdea0ba);this[_0x4744('0xe')](_0x4744('0x10'),_0x58d499);_0x7d720a=_0x7d720a[_0x4744('0xa')](_0xdea0ba+_0x17e83d[_0x4744('0xd')]);}this[_0x4744('0x7')]=_0x7d720a;}_0xfe2efa();};module[_0x4744('0x11')]=AGIReply;
\ No newline at end of file
+var _0xd3ef=['line','exports','stream','Transform','call','_localBuffer','_inBody','inherits','prototype','toString','indexOf','substring','length','slice','trim','emit','headers'];(function(_0x411017,_0x4a8117){var _0x2adeea=function(_0x545222){while(--_0x545222){_0x411017['push'](_0x411017['shift']());}};_0x2adeea(++_0x4a8117);}(_0xd3ef,0xce));var _0xfd3e=function(_0x114eac,_0x1243ea){_0x114eac=_0x114eac-0x0;var _0x534e0e=_0xd3ef[_0x114eac];return _0x534e0e;};'use strict';var util=require('util');var Transform=require(_0xfd3e('0x0'))[_0xfd3e('0x1')];function AGIReply(_0x6aa93d){Transform[_0xfd3e('0x2')](this,_0x6aa93d);this[_0xfd3e('0x3')]='';this[_0xfd3e('0x4')]=![];}util[_0xfd3e('0x5')](AGIReply,Transform);AGIReply[_0xfd3e('0x6')]['_transform']=function(_0x5ab6e5,_0x3814dd,_0x2be325){var _0x16456a='\x0a',_0x94129d=['\x0a\x0a','\x0d\x0a\x0d\x0a'],_0x41a08c=-0x1,_0x2a1bee=-0x1,_0x3465e3='',_0x1dcbff=0x0,_0x26e84b='',_0x2dd93b='';this[_0xfd3e('0x3')]+=_0x5ab6e5[_0xfd3e('0x7')]();_0x26e84b=this[_0xfd3e('0x3')];if(!this[_0xfd3e('0x4')]){_0x1dcbff=0x0;while(_0x94129d[_0x1dcbff]){while((_0x2a1bee=_0x26e84b[_0xfd3e('0x8')](_0x94129d[_0x1dcbff]))!=-0x1){_0x3465e3=_0x94129d[_0x1dcbff];_0x2dd93b=_0x26e84b['substring'](0x0,_0x2a1bee);_0x26e84b=_0x26e84b[_0xfd3e('0x9')](_0x2a1bee+_0x3465e3[_0xfd3e('0xa')]);var _0x50754f=_0x2dd93b['split'](_0x16456a),_0x5e3ca0=0x0,_0x2d6671={},_0x58cc95='',_0x26976b='',_0x325145=-0x1;while(_0x50754f[_0x5e3ca0]){_0x325145=_0x50754f[_0x5e3ca0]['indexOf'](':');if(_0x325145!=-0x1){_0x58cc95=_0x50754f[_0x5e3ca0][_0xfd3e('0xb')](0x0,_0x325145)[_0xfd3e('0xc')]();_0x26976b=_0x50754f[_0x5e3ca0][_0xfd3e('0xb')](_0x325145+0x1)[_0xfd3e('0xc')]();if(_0x58cc95[_0xfd3e('0xa')]>0x0){_0x2d6671[_0x58cc95]=_0x26976b;}}else{}_0x5e3ca0++;}this[_0xfd3e('0xd')](_0xfd3e('0xe'),_0x2d6671);this[_0xfd3e('0x4')]=!![];}_0x1dcbff++;}this['_localBuffer']=_0x26e84b;}else{while((_0x41a08c=_0x26e84b[_0xfd3e('0x8')](_0x16456a))!=-0x1){_0x2dd93b=_0x26e84b[_0xfd3e('0x9')](0x0,_0x41a08c);this[_0xfd3e('0xd')](_0xfd3e('0xf'),_0x2dd93b);_0x26e84b=_0x26e84b[_0xfd3e('0x9')](_0x41a08c+_0x16456a['length']);}this[_0xfd3e('0x3')]=_0x26e84b;}_0x2be325();};module[_0xfd3e('0x10')]=AGIReply;
\ No newline at end of file
index 3881b5b..6c53765 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31fd=['UnpauseUser','agentLogout','bluebird','moment','lodash','util','http','request','then','error','message','result','getSquareProject','ShowSquareProject','production','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','name','email','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','getTrunkById','ShowTrunk','getSoundById','ShowSound','save_name','ShowInterval','Interval','Intervals','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','CreateSquareReport','merge','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','phone','ListId','getPauseById','LoginUser','PauseUser'];(function(_0x5b7c36,_0x464eb7){var _0x4c07da=function(_0x22dad8){while(--_0x22dad8){_0x5b7c36['push'](_0x5b7c36['shift']());}};_0x4c07da(++_0x464eb7);}(_0x31fd,0x7a));var _0xd31f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x31fd[_0x14add3];return _0x4a174f;};'use strict';var BPromise=require(_0xd31f('0x0'));var moment=require(_0xd31f('0x1'));var _=require(_0xd31f('0x2'));var util=require(_0xd31f('0x3'));var jayson=require('jayson/promise');var client=jayson['client'][_0xd31f('0x4')]({'port':0x2329});function request(_0x20d239,_0x3afd4d){return new BPromise(function(_0x5acd91,_0x14936b){return client[_0xd31f('0x5')](_0x20d239,_0x3afd4d)[_0xd31f('0x6')](function(_0x2ba1a3){if(_0x2ba1a3[_0xd31f('0x7')]){return _0x14936b(_0x2ba1a3['error'][_0xd31f('0x8')]);}else{return _0x5acd91(_0x2ba1a3[_0xd31f('0x9')]);}})['catch'](function(_0x2c5cf9){return _0x14936b(_0x2c5cf9);});});}exports[_0xd31f('0xa')]=function(_0x4a1013){return request(_0xd31f('0xb'),{'options':{'raw':![],'where':{'name':_0x4a1013},'attributes':[_0xd31f('0xc')]}});};exports[_0xd31f('0xd')]=function(_0x1583fb){return request(_0xd31f('0xe'),{'options':{'raw':![],'where':{'id':_0x1583fb},'include':[{'model':_0xd31f('0xf'),'as':_0xd31f('0x10')}],'attributes':['id',_0xd31f('0x11'),_0xd31f('0x12')]}});};exports[_0xd31f('0x13')]=function(_0xa98a2){return request('ShowSquareProject',{'options':{'where':{'id':_0xa98a2},'attributes':['name']}});};exports[_0xd31f('0x14')]=function(_0x746102){return request(_0xd31f('0x15'),{'options':{'where':{'id':_0x746102},'attributes':[_0xd31f('0x11')]}});};exports[_0xd31f('0x16')]=function(_0x45b18d){return request(_0xd31f('0x17'),{'options':{'where':{'id':_0x45b18d},'attributes':[_0xd31f('0x11')]}});};exports[_0xd31f('0x18')]=function(_0x17bb58){return request(_0xd31f('0x19'),{'options':{'where':{'id':_0x17bb58},'attributes':[_0xd31f('0x1a')]}});};exports[_0xd31f('0x1b')]=function(_0x521620){return request('ShowUser',{'options':{'where':{'id':_0x521620},'attributes':['name']}});};exports[_0xd31f('0x1c')]=function(_0x1657a2){return request(_0xd31f('0x1d'),{'options':{'where':{'id':_0x1657a2},'attributes':[_0xd31f('0x11')]}});};exports[_0xd31f('0x1e')]=function(_0x446668){return request(_0xd31f('0x1f'),{'options':{'where':{'id':_0x446668},'attributes':[_0xd31f('0x20')]}});};exports['getIntervalById']=function(_0x5567b5){return request(_0xd31f('0x21'),{'options':{'raw':![],'where':{'id':_0x5567b5},'include':[{'model':_0xd31f('0x22'),'as':_0xd31f('0x23')}]}});};exports[_0xd31f('0x24')]=function(_0x59c704){return request(_0xd31f('0x25'),{'options':{'where':{'id':_0x59c704},'attributes':['id',_0xd31f('0x11')]}});};exports[_0xd31f('0x26')]=function(_0x512725){return request(_0xd31f('0x27'),{'body':_0x512725});};exports[_0xd31f('0x28')]=function(_0x2a3057){return request(_0xd31f('0x29'),{'body':_0x2a3057});};exports['createSquareReport']=function(_0x5e0797){return request(_0xd31f('0x2a'),{'body':_[_0xd31f('0x2b')](_0x5e0797,{'project_name':_0x5e0797['arg_1'],'prev_project_name':_0x5e0797[_0xd31f('0x2c')]||'','is_subproject':_0x5e0797[_0xd31f('0x2c')]?!![]:![],'leaveAt':moment()[_0xd31f('0x2d')](_0xd31f('0x2e'))})});};exports[_0xd31f('0x2f')]=function(_0x59141c){return request(_0xd31f('0x30'),{'body':_0x59141c});};exports[_0xd31f('0x31')]=function(_0x27322f){return request(_0xd31f('0x32'),{'body':_0x27322f});};exports[_0xd31f('0x33')]=function(_0x208126){return request(_0xd31f('0x34'),{'options':{'raw':![],'where':{'phone':_0x208126[_0xd31f('0x35')],'ListId':_0x208126[_0xd31f('0x36')]}}})[_0xd31f('0x6')](function(_0x5e76e0){if(_0x5e76e0){return _0x5e76e0;}return request('CreateCmContact',{'body':_0x208126});});};exports[_0xd31f('0x37')]=function(_0x3ef0b3){return request('ShowPause',{'options':{'where':{'id':_0x3ef0b3},'attributes':[_0xd31f('0x11')]}});};exports['agentLogin']=function(_0x5b02b1,_0x3801cc){return request(_0xd31f('0x38'),{'body':{'interface':_0x3801cc},'options':{'where':_0x5b02b1}});};exports['agentPause']=function(_0x50cdb0,_0x2fc557,_0x20e650){return request(_0xd31f('0x39'),{'body':{'type':_0x2fc557,'uniqueid':_0x20e650},'options':{'where':_0x50cdb0}});};exports['agentUnpause']=function(_0x2d1a84){return request(_0xd31f('0x3a'),{'body':{},'options':{'where':_0x2d1a84}});};exports[_0xd31f('0x3b')]=function(_0x3d14ff){return request('LogoutUser',{'body':{},'options':{'where':_0x3d14ff}});};
\ No newline at end of file
+var _0xc2fe=['createSquareMessage','CreateSquareMessage','ShowCmHopper','phone','getPauseById','ShowPause','LoginUser','agentPause','PauseUser','agentUnpause','UnpauseUser','agentLogout','LogoutUser','bluebird','moment','lodash','util','jayson/promise','client','http','then','error','message','result','catch','production','getMailAccountById','MailServerOut','Smtp','name','email','getSquareProjectById','ShowSquareProject','getVoiceQueueById','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','getTrunkById','ShowTrunk','getSoundById','ShowSound','save_name','getIntervalById','Interval','Intervals','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','merge','arg_1','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording'];(function(_0x2b51f4,_0x2c260a){var _0x3de791=function(_0x57de37){while(--_0x57de37){_0x2b51f4['push'](_0x2b51f4['shift']());}};_0x3de791(++_0x2c260a);}(_0xc2fe,0x1b1));var _0xec2f=function(_0x58ebb6,_0x22739f){_0x58ebb6=_0x58ebb6-0x0;var _0x1a237e=_0xc2fe[_0x58ebb6];return _0x1a237e;};'use strict';var BPromise=require(_0xec2f('0x0'));var moment=require(_0xec2f('0x1'));var _=require(_0xec2f('0x2'));var util=require(_0xec2f('0x3'));var jayson=require(_0xec2f('0x4'));var client=jayson[_0xec2f('0x5')][_0xec2f('0x6')]({'port':0x2329});function request(_0x14208b,_0x5e9b65){return new BPromise(function(_0x47df8f,_0x552bd8){return client['request'](_0x14208b,_0x5e9b65)[_0xec2f('0x7')](function(_0x3a18f8){if(_0x3a18f8[_0xec2f('0x8')]){return _0x552bd8(_0x3a18f8[_0xec2f('0x8')][_0xec2f('0x9')]);}else{return _0x47df8f(_0x3a18f8[_0xec2f('0xa')]);}})[_0xec2f('0xb')](function(_0x50aa2b){return _0x552bd8(_0x50aa2b);});});}exports['getSquareProject']=function(_0x55022e){return request('ShowSquareProject',{'options':{'raw':![],'where':{'name':_0x55022e},'attributes':[_0xec2f('0xc')]}});};exports[_0xec2f('0xd')]=function(_0x4f19ae){return request('ShowMailAccount',{'options':{'raw':![],'where':{'id':_0x4f19ae},'include':[{'model':_0xec2f('0xe'),'as':_0xec2f('0xf')}],'attributes':['id',_0xec2f('0x10'),_0xec2f('0x11')]}});};exports[_0xec2f('0x12')]=function(_0x4151d3){return request(_0xec2f('0x13'),{'options':{'where':{'id':_0x4151d3},'attributes':['name']}});};exports[_0xec2f('0x14')]=function(_0x55ac83){return request('ShowVoiceQueue',{'options':{'where':{'id':_0x55ac83},'attributes':['name']}});};exports[_0xec2f('0x15')]=function(_0x6c653b){return request(_0xec2f('0x16'),{'options':{'where':{'id':_0x6c653b},'attributes':[_0xec2f('0x10')]}});};exports[_0xec2f('0x17')]=function(_0x24dbb4){return request(_0xec2f('0x18'),{'options':{'where':{'id':_0x24dbb4},'attributes':[_0xec2f('0x19')]}});};exports['getUserById']=function(_0x2585ab){return request('ShowUser',{'options':{'where':{'id':_0x2585ab},'attributes':[_0xec2f('0x10')]}});};exports[_0xec2f('0x1a')]=function(_0xb5a2f9){return request(_0xec2f('0x1b'),{'options':{'where':{'id':_0xb5a2f9},'attributes':[_0xec2f('0x10')]}});};exports[_0xec2f('0x1c')]=function(_0x4da84f){return request(_0xec2f('0x1d'),{'options':{'where':{'id':_0x4da84f},'attributes':[_0xec2f('0x1e')]}});};exports[_0xec2f('0x1f')]=function(_0x11fc43){return request('ShowInterval',{'options':{'raw':![],'where':{'id':_0x11fc43},'include':[{'model':_0xec2f('0x20'),'as':_0xec2f('0x21')}]}});};exports[_0xec2f('0x22')]=function(_0x4b17cd){return request(_0xec2f('0x23'),{'options':{'where':{'id':_0x4b17cd},'attributes':['id',_0xec2f('0x10')]}});};exports[_0xec2f('0x24')]=function(_0x3817e0){return request(_0xec2f('0x25'),{'body':_0x3817e0});};exports[_0xec2f('0x26')]=function(_0x564426){return request(_0xec2f('0x27'),{'body':_0x564426});};exports[_0xec2f('0x28')]=function(_0x56fb06){return request('CreateSquareReport',{'body':_[_0xec2f('0x29')](_0x56fb06,{'project_name':_0x56fb06[_0xec2f('0x2a')],'prev_project_name':_0x56fb06[_0xec2f('0x2b')]||'','is_subproject':_0x56fb06[_0xec2f('0x2b')]?!![]:![],'leaveAt':moment()[_0xec2f('0x2c')](_0xec2f('0x2d'))})});};exports[_0xec2f('0x2e')]=function(_0x471320){return request('CreateSquareRecording',{'body':_0x471320});};exports[_0xec2f('0x2f')]=function(_0x4d037a){return request(_0xec2f('0x30'),{'body':_0x4d037a});};exports['createCmContact']=function(_0x3e779){return request(_0xec2f('0x31'),{'options':{'raw':![],'where':{'phone':_0x3e779[_0xec2f('0x32')],'ListId':_0x3e779['ListId']}}})['then'](function(_0x581d3d){if(_0x581d3d){return _0x581d3d;}return request('CreateCmContact',{'body':_0x3e779});});};exports[_0xec2f('0x33')]=function(_0x6dfd2){return request(_0xec2f('0x34'),{'options':{'where':{'id':_0x6dfd2},'attributes':[_0xec2f('0x10')]}});};exports['agentLogin']=function(_0x7ddd06,_0x519fef){return request(_0xec2f('0x35'),{'body':{'interface':_0x519fef},'options':{'where':_0x7ddd06}});};exports[_0xec2f('0x36')]=function(_0x135f1e,_0x350d99,_0x283b53){return request(_0xec2f('0x37'),{'body':{'type':_0x350d99,'uniqueid':_0x283b53},'options':{'where':_0x135f1e}});};exports[_0xec2f('0x38')]=function(_0x55bb01){return request(_0xec2f('0x39'),{'body':{},'options':{'where':_0x55bb01}});};exports[_0xec2f('0x3a')]=function(_0x40d39b){return request(_0xec2f('0x3b'),{'body':{},'options':{'where':_0x40d39b}});};
\ No newline at end of file
index c697964..dda3bc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf98=['exports','./polly'];(function(_0x28df65,_0x41a1bf){var _0x6261fa=function(_0xf9e684){while(--_0xf9e684){_0x28df65['push'](_0x28df65['shift']());}};_0x6261fa(++_0x41a1bf);}(_0xdf98,0xcf));var _0x8df9=function(_0x5a4b16,_0x294bb1){_0x5a4b16=_0x5a4b16-0x0;var _0x5236dc=_0xdf98[_0x5a4b16];return _0x5236dc;};var polly=require(_0x8df9('0x0'));var lex=require('./lex');module[_0x8df9('0x1')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0x75a2=['exports','./polly','./lex'];(function(_0x4d63ba,_0x5b24b8){var _0x438165=function(_0x2d9c44){while(--_0x2d9c44){_0x4d63ba['push'](_0x4d63ba['shift']());}};_0x438165(++_0x5b24b8);}(_0x75a2,0x187));var _0x275a=function(_0x195ef4,_0x5142c1){_0x195ef4=_0x195ef4-0x0;var _0x38bbbc=_0x75a2[_0x195ef4];return _0x38bbbc;};var polly=require(_0x275a('0x0'));var lex=require(_0x275a('0x1'));module[_0x275a('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
index cc736a6..f40b0ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96cc=['./lib/api'];(function(_0x3b994b,_0x5906cd){var _0x4b73ca=function(_0x33675a){while(--_0x33675a){_0x3b994b['push'](_0x3b994b['shift']());}};_0x4b73ca(++_0x5906cd);}(_0x96cc,0x16c));var _0xc96c=function(_0x151787,_0x77ec0f){_0x151787=_0x151787-0x0;var _0x35f544=_0x96cc[_0x151787];return _0x35f544;};'use strict';var lex=require(_0xc96c('0x0'));module['exports']=function(_0x15025f,_0x5f11f2,_0x30bf8a,_0x3e7a95,_0x107043,_0x421701){return lex(_0x15025f,_0x5f11f2,_0x30bf8a,_0x3e7a95,_0x107043,_0x421701);};
\ No newline at end of file
+var _0xe706=['exports','./lib/api'];(function(_0x55a748,_0x3c2eed){var _0x3bef2b=function(_0x84f64b){while(--_0x84f64b){_0x55a748['push'](_0x55a748['shift']());}};_0x3bef2b(++_0x3c2eed);}(_0xe706,0xa3));var _0x6e70=function(_0xd5584e,_0x251c06){_0xd5584e=_0xd5584e-0x0;var _0xdc594e=_0xe706[_0xd5584e];return _0xdc594e;};'use strict';var lex=require(_0x6e70('0x0'));module[_0x6e70('0x1')]=function(_0x311951,_0x5e8446,_0x2cae77,_0x315629,_0x2ca810,_0x7dfbc3){return lex(_0x311951,_0x5e8446,_0x2cae77,_0x315629,_0x2ca810,_0x7dfbc3);};
\ No newline at end of file
index c6908b8..cdbc1d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x1c3748,_0x4b75eb){var _0x2f42e2=function(_0x27e4db){while(--_0x27e4db){_0x1c3748['push'](_0x1c3748['shift']());}};_0x2f42e2(++_0x4b75eb);}(_0xa9e0,0x123));var _0x0a9e=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0xa9e0[_0x139a3c];return _0x2b375b;};'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(_0x3f3990,_0x39ce92){var _0x542c68=function(_0x19f07b){while(--_0x19f07b){_0x3f3990['push'](_0x3f3990['shift']());}};_0x542c68(++_0x39ce92);}(_0xa9e0,0x123));var _0x0a9e=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0xa9e0[_0x13ea00];return _0x1f7347;};'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 73f06d3..2f7104d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1ca=['./lib/api','exports'];(function(_0x4642f2,_0x1a8147){var _0x50ac6c=function(_0x173dba){while(--_0x173dba){_0x4642f2['push'](_0x4642f2['shift']());}};_0x50ac6c(++_0x1a8147);}(_0xd1ca,0xba));var _0xad1c=function(_0x4a747d,_0x3b747f){_0x4a747d=_0x4a747d-0x0;var _0x3a5b5c=_0xd1ca[_0x4a747d];return _0x3a5b5c;};'use strict';var polly=require(_0xad1c('0x0'));module[_0xad1c('0x1')]=function(_0x1f18e0,_0x986680,_0xe5a974,_0xe4b472,_0x465ee2,_0x2d717c,_0x164aff){return polly(_0x1f18e0,_0x986680,_0xe5a974,_0xe4b472,_0x465ee2,_0x2d717c,_0x164aff);};
\ No newline at end of file
+var _0xb423=['./lib/api'];(function(_0x3c4f2c,_0x3fd819){var _0x16e06d=function(_0x53fbf1){while(--_0x53fbf1){_0x3c4f2c['push'](_0x3c4f2c['shift']());}};_0x16e06d(++_0x3fd819);}(_0xb423,0x183));var _0x3b42=function(_0x53831,_0x3bc701){_0x53831=_0x53831-0x0;var _0xd7d46e=_0xb423[_0x53831];return _0xd7d46e;};'use strict';var polly=require(_0x3b42('0x0'));module['exports']=function(_0x5c1ec2,_0x21e3c6,_0xf0506b,_0x17fddb,_0x2dcf30,_0x2d90c2,_0x477677){return polly(_0x5c1ec2,_0x21e3c6,_0xf0506b,_0x17fddb,_0x2dcf30,_0x2d90c2,_0x477677);};
\ No newline at end of file
index 449003b..bfb6ccc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x702a=['AudioStream','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','path','bluebird','randomstring','aws-sdk','synthesizeSpeech'];(function(_0x34c7bf,_0x2da9f2){var _0xab36e7=function(_0x5e1397){while(--_0x5e1397){_0x34c7bf['push'](_0x34c7bf['shift']());}};_0xab36e7(++_0x2da9f2);}(_0x702a,0x1ef));var _0xa702=function(_0x15c95a,_0x4f25da){_0x15c95a=_0x15c95a-0x0;var _0x7dc3fe=_0x702a[_0x15c95a];return _0x7dc3fe;};'use strict';var fs=require('fs');var path=require(_0xa702('0x0'));var BPromise=require(_0xa702('0x1'));var rs=require(_0xa702('0x2'));var AWS=require(_0xa702('0x3'));function pollyResult(_0x406957,_0x1bda55,_0x225312){return new BPromise(function(_0x7b1e26,_0x502253){_0x406957[_0xa702('0x4')](_0x1bda55,function(_0x19aaee,_0x285b93){if(_0x19aaee){_0x502253(_0x19aaee);}else if(_0x285b93){if(_0x285b93[_0xa702('0x5')]instanceof Buffer){fs['writeFile'](_0x225312,_0x285b93['AudioStream'],function(_0x552f37){if(_0x552f37){_0x502253(_0x552f37);}else{_0x7b1e26();}});}else{_0x502253(new Error(_0xa702('0x6')));}}else{_0x502253(new Error(_0xa702('0x7')));}});});}module[_0xa702('0x8')]=function(_0x2f8f29,_0x5872bb,_0x2b7814,_0x20a3f5,_0x100ea4,_0x3211bb,_0x99b7c4){var _0x27b15c=new AWS[(_0xa702('0x9'))]({'accessKeyId':_0x2f8f29,'secretAccessKey':_0x5872bb,'region':_0x2b7814});var _0xbb0381={'Text':_0x100ea4,'TextType':_0x3211bb||'text','OutputFormat':'mp3','VoiceId':_0x20a3f5};return pollyResult(_0x27b15c,_0xbb0381,_0x99b7c4);};
\ No newline at end of file
+var _0xcfdb=['AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','text','mp3','aws-sdk','synthesizeSpeech'];(function(_0x40f9ee,_0x80a12){var _0x4284d0=function(_0x2dba43){while(--_0x2dba43){_0x40f9ee['push'](_0x40f9ee['shift']());}};_0x4284d0(++_0x80a12);}(_0xcfdb,0x1c0));var _0xbcfd=function(_0x177cc9,_0x3f6fdd){_0x177cc9=_0x177cc9-0x0;var _0x2fe577=_0xcfdb[_0x177cc9];return _0x2fe577;};'use strict';var fs=require('fs');var path=require('path');var BPromise=require('bluebird');var rs=require('randomstring');var AWS=require(_0xbcfd('0x0'));function pollyResult(_0x188784,_0xa246b4,_0x3667ff){return new BPromise(function(_0x17df8a,_0x4b6436){_0x188784[_0xbcfd('0x1')](_0xa246b4,function(_0x35d4bd,_0x2e455b){if(_0x35d4bd){_0x4b6436(_0x35d4bd);}else if(_0x2e455b){if(_0x2e455b[_0xbcfd('0x2')]instanceof Buffer){fs[_0xbcfd('0x3')](_0x3667ff,_0x2e455b[_0xbcfd('0x2')],function(_0x1a6ec2){if(_0x1a6ec2){_0x4b6436(_0x1a6ec2);}else{_0x17df8a();}});}else{_0x4b6436(new Error(_0xbcfd('0x4')));}}else{_0x4b6436(new Error(_0xbcfd('0x5')));}});});}module[_0xbcfd('0x6')]=function(_0x8e1def,_0x2385c6,_0x2c0c5b,_0x87649f,_0x1a94c5,_0x457b2b,_0x412cca){var _0x4d9c9b=new AWS['Polly']({'accessKeyId':_0x8e1def,'secretAccessKey':_0x2385c6,'region':_0x2c0c5b});var _0x4d06da={'Text':_0x1a94c5,'TextType':_0x457b2b||_0xbcfd('0x7'),'OutputFormat':_0xbcfd('0x8'),'VoiceId':_0x87649f};return pollyResult(_0x4d9c9b,_0x4d06da,_0x412cca);};
\ No newline at end of file
index 5140cfe..f489e97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09e7=['exports','./lib/api'];(function(_0x5027b1,_0x1409a5){var _0x4a46cf=function(_0x121920){while(--_0x121920){_0x5027b1['push'](_0x5027b1['shift']());}};_0x4a46cf(++_0x1409a5);}(_0x09e7,0x171));var _0x709e=function(_0x673722,_0x275d7e){_0x673722=_0x673722-0x0;var _0x21249c=_0x09e7[_0x673722];return _0x21249c;};'use strict';var asr=require(_0x709e('0x0'));module[_0x709e('0x1')]=function(_0x322f89,_0x25e7fa,_0x4fc3aa,_0x5103ab){return asr(_0x322f89,_0x25e7fa,_0x4fc3aa);};
\ No newline at end of file
+var _0xd735=['./lib/api','exports'];(function(_0xb8f97f,_0x27a8f7){var _0x3b16b1=function(_0x17b6cf){while(--_0x17b6cf){_0xb8f97f['push'](_0xb8f97f['shift']());}};_0x3b16b1(++_0x27a8f7);}(_0xd735,0x1cc));var _0x5d73=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xd735[_0x502c7d];return _0x30b7ed;};'use strict';var asr=require(_0x5d73('0x0'));module[_0x5d73('0x1')]=function(_0x15115b,_0x2d4df6,_0x29cdd6,_0x3a79d4){return asr(_0x15115b,_0x2d4df6,_0x29cdd6);};
\ No newline at end of file
index ba62e46..db3a2bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc112=['https://speech.googleapis.com','string','length','filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','undefined','readFileSync','toString','POST','/v1/speech:recognize?key=','LINEAR16','8000','url','bluebird'];(function(_0x16d10f,_0x2ba2d5){var _0x50c823=function(_0x44e43f){while(--_0x44e43f){_0x16d10f['push'](_0x16d10f['shift']());}};_0x50c823(++_0x2ba2d5);}(_0xc112,0xec));var _0x2c11=function(_0x5828e1,_0x57e55c){_0x5828e1=_0x5828e1-0x0;var _0x5f1106=_0xc112[_0x5828e1];return _0x5f1106;};'use strict';var url=require(_0x2c11('0x0'));var BPromise=require(_0x2c11('0x1'));var fs=require('fs');var host=_0x2c11('0x2');module['exports']=function(_0x8542d8,_0x40da2e,_0x26e2a3){return new BPromise(function(_0x170832,_0xaa8492){var _0x3a1cda;if(typeof _0x8542d8!==_0x2c11('0x3')||_0x8542d8[_0x2c11('0x4')]===0x0){return _0xaa8492(_0x2c11('0x5'));}if(typeof _0x40da2e!=='string'||_0x40da2e['length']===0x0){return _0xaa8492(_0x2c11('0x6'));}if(typeof _0x26e2a3!==_0x2c11('0x7')&&(typeof _0x26e2a3!==_0x2c11('0x3')||_0x26e2a3[_0x2c11('0x4')]===0x0)){return _0xaa8492('lang\x20should\x20be\x20a\x20string');}try{_0x3a1cda=fs[_0x2c11('0x8')](_0x8542d8)[_0x2c11('0x9')]('base64');}catch(_0xa32d3f){return _0xaa8492(_0xa32d3f);}return _0x170832({'method':_0x2c11('0xa'),'uri':host+_0x2c11('0xb')+_0x40da2e,'body':{'config':{'encoding':_0x2c11('0xc'),'sampleRateHertz':_0x2c11('0xd'),'languageCode':_0x26e2a3},'audio':{'content':_0x3a1cda}},'json':!![]});});};
\ No newline at end of file
+var _0xb821=['string','length','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string','readFileSync','toString','POST','/v1/speech:recognize?key=','LINEAR16','8000','bluebird','https://speech.googleapis.com'];(function(_0x212b07,_0x9580fc){var _0x5909a7=function(_0x3469e6){while(--_0x3469e6){_0x212b07['push'](_0x212b07['shift']());}};_0x5909a7(++_0x9580fc);}(_0xb821,0xa7));var _0x1b82=function(_0x58bba5,_0x127277){_0x58bba5=_0x58bba5-0x0;var _0xe21938=_0xb821[_0x58bba5];return _0xe21938;};'use strict';var url=require('url');var BPromise=require(_0x1b82('0x0'));var fs=require('fs');var host=_0x1b82('0x1');module['exports']=function(_0x4a4f81,_0xbab478,_0x578a10){return new BPromise(function(_0x4b1809,_0x3b1d14){var _0x1403ab;if(typeof _0x4a4f81!==_0x1b82('0x2')||_0x4a4f81[_0x1b82('0x3')]===0x0){return _0x3b1d14('filepath\x20should\x20be\x20a\x20string');}if(typeof _0xbab478!==_0x1b82('0x2')||_0xbab478[_0x1b82('0x3')]===0x0){return _0x3b1d14(_0x1b82('0x4'));}if(typeof _0x578a10!==_0x1b82('0x5')&&(typeof _0x578a10!==_0x1b82('0x2')||_0x578a10[_0x1b82('0x3')]===0x0)){return _0x3b1d14(_0x1b82('0x6'));}try{_0x1403ab=fs[_0x1b82('0x7')](_0x4a4f81)[_0x1b82('0x8')]('base64');}catch(_0x4011f2){return _0x3b1d14(_0x4011f2);}return _0x4b1809({'method':_0x1b82('0x9'),'uri':host+_0x1b82('0xa')+_0xbab478,'body':{'config':{'encoding':_0x1b82('0xb'),'sampleRateHertz':_0x1b82('0xc'),'languageCode':_0x578a10},'audio':{'content':_0x1403ab}},'json':!![]});});};
\ No newline at end of file
index e47bf4f..cad239f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6d6=['exports','./asr'];(function(_0x580647,_0x43d2c3){var _0x5f0792=function(_0x386cef){while(--_0x386cef){_0x580647['push'](_0x580647['shift']());}};_0x5f0792(++_0x43d2c3);}(_0xf6d6,0x179));var _0x6f6d=function(_0x479583,_0x52bcf0){_0x479583=_0x479583-0x0;var _0x590099=_0xf6d6[_0x479583];return _0x590099;};var asr=require(_0x6f6d('0x0'));module[_0x6f6d('0x1')]={'asr':asr};
\ No newline at end of file
+var _0x5ac5=['exports','./asr'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x5ac5,0x6b));var _0x55ac=function(_0x281357,_0x3dada9){_0x281357=_0x281357-0x0;var _0x3d0f2d=_0x5ac5[_0x281357];return _0x3d0f2d;};var asr=require(_0x55ac('0x0'));module[_0x55ac('0x1')]={'asr':asr};
\ No newline at end of file
index d4983b0..d5cccfd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95a2=['data','transcode','wav','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','base64','chmodSync','777','split','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','input','voice','audioConfig','MP3','text:synthesize','POST','.mp3','from','then','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','stringify','generic','slice','parse\x20response\x20failed:\x0a','lang\x20\x22','\x22\x20might\x20not\x20exist','uri','results','transcript','alternatives','join','confidence','googleASR\x20transcription','name','message','googleDialogflow','textRequest','result','action','actionIncomplete','fulfillment','speech','score','status','code','metadata','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','isFallback','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','audiofile','dirName','apiai-promise','bluebird','dialogflow','http','https','path','querystring','randomstring','google-tts-api','url','parse','util','./google','./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','https:','host','WHAT_EVER','get','statusCode','error','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','info','finish\x20download\x20file','close','unlink','pipe','end','protocol','request\x20to\x20'];(function(_0x5bc0f9,_0x1de7b0){var _0x50c294=function(_0x14a9b9){while(--_0x14a9b9){_0x5bc0f9['push'](_0x5bc0f9['shift']());}};_0x50c294(++_0x1de7b0);}(_0x95a2,0x1e5));var _0x295a=function(_0x3df9dd,_0x26f5cd){_0x3df9dd=_0x3df9dd-0x0;var _0x4f11e4=_0x95a2[_0x3df9dd];return _0x4f11e4;};'use strict';var apiai=require(_0x295a('0x0'));var BPromise=require(_0x295a('0x1'));var dialogflow=require(_0x295a('0x2'));var fs=require('fs');var http=require(_0x295a('0x3'));var https=require(_0x295a('0x4'));var md5=require('md5');var path=require(_0x295a('0x5'));var querystring=require(_0x295a('0x6'));var rp=require('request-promise');var rs=require(_0x295a('0x7'));var sox=require('sox');var tts=require(_0x295a('0x8'));var urlParse=require(_0x295a('0x9'))[_0x295a('0xa')];var util=require(_0x295a('0xb'));var aws=require('./aws');var google=require(_0x295a('0xc'));var sestek=require(_0x295a('0xd'));var tilde=require(_0x295a('0xe'));var logger=require(_0x295a('0xf'))(_0x295a('0x10'));var ISPEECH_API=_0x295a('0x11');function downloadFile(_0x29964c,_0x28d5de){return new BPromise(function(_0x5f5104,_0x1b1234){var _0x5d62e4=urlParse(_0x29964c);var _0xf64ef1=_0x5d62e4['protocol']===_0x295a('0x12')?https:http;var _0x5873d9={'host':_0x5d62e4[_0x295a('0x13')],'path':_0x5d62e4[_0x295a('0x5')],'headers':{'user-agent':_0x295a('0x14')}};_0xf64ef1[_0x295a('0x15')](_0x5873d9,function(_0x346b08){if(_0x346b08[_0x295a('0x16')]!==0xc8){logger[_0x295a('0x17')]('request\x20to\x20'+_0x29964c+'\x20failed,\x20status\x20code\x20=\x20'+_0x346b08['statusCode']+'\x20('+_0x346b08['statusMessage']+')');_0x1b1234(new Error('request\x20to\x20'+_0x29964c+_0x295a('0x18')+_0x346b08[_0x295a('0x16')]+'\x20('+_0x346b08[_0x295a('0x19')]+')'));return;}var _0x1c3887=fs[_0x295a('0x1a')](_0x28d5de);_0x1c3887['on']('finish',function(){logger[_0x295a('0x1b')](_0x295a('0x1c'));_0x1c3887[_0x295a('0x1d')](_0x5f5104);});_0x1c3887['on'](_0x295a('0x17'),function(_0x132584){fs[_0x295a('0x1e')](_0x28d5de);logger['error']('download\x20error',_0x132584);_0x1b1234(_0x132584);});_0x346b08[_0x295a('0x1f')](_0x1c3887);})['on'](_0x295a('0x17'),function(_0x82095e){logger[_0x295a('0x17')](_0x82095e);_0x1b1234(_0x82095e);})[_0x295a('0x20')]();});}function uploadFile(_0x54ecfb){return new BPromise(function(_0x45f9dd,_0x351613){var _0x53597a=urlParse(_0x54ecfb);var _0x3810e8=_0x53597a[_0x295a('0x21')]===_0x295a('0x12')?https:http;var _0x2027be={'host':_0x53597a[_0x295a('0x13')],'path':_0x53597a['path'],'headers':{'user-agent':'WHAT_EVER'}};_0x3810e8['get'](_0x2027be,function(_0xef4d53){if(_0xef4d53[_0x295a('0x16')]!==0xc8){_0x351613(new Error(_0x295a('0x22')+_0x54ecfb+'\x20failed,\x20status\x20code\x20=\x20'+_0xef4d53['statusCode']+'\x20('+_0xef4d53[_0x295a('0x19')]+')'));return;}var _0x3e03ea='';_0xef4d53['on'](_0x295a('0x23'),function(_0x4a09c3){_0x3e03ea+=_0x4a09c3;});_0xef4d53['on'](_0x295a('0x20'),function(){_0x45f9dd(_0x3e03ea);});})['on'](_0x295a('0x17'),function(_0xc3f056){_0x351613(_0xc3f056);})['end']();});}function convertFile(_0x1ab0c3,_0x49dd14){return new BPromise(function(_0xc19b4d,_0x39462d){var _0x1c0ba6=sox[_0x295a('0x24')](_0x1ab0c3,_0x49dd14,{'sampleRate':0x1f40,'format':_0x295a('0x25'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x1c0ba6['on'](_0x295a('0x17'),function(_0x52f8cb){logger['error'](_0x295a('0x26'),_0x52f8cb);_0x39462d(_0x52f8cb);});_0x1c0ba6['on']('end',function(){logger[_0x295a('0x1b')](_0x295a('0x27'));_0xc19b4d();});_0x1c0ba6[_0x295a('0x28')]();});}function base64Decode(_0x52dca7,_0x3c9503){var _0x1763b4=path[_0x295a('0x29')](__dirname,_0x295a('0x2a'),rs[_0x295a('0x2b')](0x4)+_0x295a('0x2c'));fs['writeFileSync'](_0x1763b4,_0x52dca7,_0x295a('0x2d'));return convertFile(_0x1763b4,_0x3c9503)['then'](function(){try{fs[_0x295a('0x1e')](_0x1763b4);fs[_0x295a('0x2e')](_0x3c9503,_0x295a('0x2f'));}catch(_0x1f7813){logger['error'](_0x1f7813);}return _0x3c9503[_0x295a('0x30')]('.')[0x0];});}function base64Encode(_0x129dd7){var _0x449d8f=fs[_0x295a('0x31')](_0x129dd7);return new Buffer(_0x449d8f)[_0x295a('0x32')](_0x295a('0x2d'));}exports[_0x295a('0x33')]=function(_0x37063e,_0x39540b,_0x3233ee,_0x1bb33a,_0x3a6ae2,_0x246f4a){var _0x2281b1,_0xf05dec;var _0xab90ba=_0x295a('0x34');var _0x6e738=_0x295a('0x35')+_0x37063e;var _0x3ca374={};if(_0x39540b==='ssml'){_0x3ca374[_0x295a('0x36')]={'ssml':_0x3233ee};}else{_0x3ca374[_0x295a('0x36')]={'text':_0x3233ee};};_0x3ca374[_0x295a('0x37')]={'languageCode':_0x1bb33a,'ssmlGender':_0x3a6ae2};_0x3ca374[_0x295a('0x38')]={'audioEncoding':_0x295a('0x39'),'sampleRateHertz':0x1f40};var _0x3d846c={'url':_0xab90ba+_0x295a('0x3a')+_0x6e738,'method':_0x295a('0x3b'),'json':!![],'body':_0x3ca374};return rp(_0x3d846c)['then'](function(_0x1c0f93){return new BPromise(function(_0x2ece7e,_0x3559d9){_0x2281b1=path[_0x295a('0x29')](__dirname,_0x295a('0x2a'),rs[_0x295a('0x2b')](0x4)+_0x295a('0x3c'));var _0x3e1bec=Buffer[_0x295a('0x3d')](_0x1c0f93['audioContent'],_0x295a('0x2d'));return fs['writeFile'](_0x2281b1,_0x3e1bec,function(_0x269c5c){_0x3559d9(_0x269c5c);},function(_0x1ffb6c){fs[_0x295a('0x2e')](_0x2281b1,_0x295a('0x2f'));_0x2ece7e(_0x1ffb6c);});});})[_0x295a('0x3e')](function(_0x2dfa26){_0xf05dec=path[_0x295a('0x29')](__dirname,_0x295a('0x2a'),rs[_0x295a('0x2b')](0x4)+_0x295a('0x2c'));return convertFile(_0x2281b1,_0xf05dec);})[_0x295a('0x3e')](function(){try{fs[_0x295a('0x1e')](_0x2281b1);fs[_0x295a('0x2e')](_0xf05dec,_0x295a('0x2f'));}catch(_0x3244be){logger[_0x295a('0x17')](_0x3244be);}logger[_0x295a('0x1b')](_0x295a('0x3f'),_0xf05dec['split']('.')[0x0]);return _0xf05dec[_0x295a('0x30')]('.')[0x0];});};exports[_0x295a('0x40')]=function(_0x39dbbc,_0x577999){var _0x21d306=_0x295a('0x41');var _0xc4477a,_0x236fc8;var _0x86d977;var _0x59966c={'encoding':_0x295a('0x42'),'method':_0x295a('0x3b'),'timeout':0x2710,'url':_0x21d306,'headers':{'Content-Type':_0x295a('0x43')},'body':'f.req='+encodeURIComponent(JSON[_0x295a('0x44')]([[['jQ1olc',JSON[_0x295a('0x44')]([_0x39dbbc,_0x577999||'en',![],'null']),null,_0x295a('0x45')]]]))};return rp(_0x59966c)[_0x295a('0x3e')](function(_0x10d3bd){try{_0x86d977=eval(_0x10d3bd[_0x295a('0x46')](0x5))[0x0][0x2];}catch(_0x3d0adc){throw new Error(_0x295a('0x47')+_0x10d3bd[_0x295a('0x23')]);}if(!_0x86d977){if(_0x39dbbc['length']>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0x295a('0x48')+_0x577999+_0x295a('0x49'));}}try{_0x86d977=eval(_0x86d977)[0x0];}catch(_0xa5c442){throw new Error(_0x295a('0x47')+res[_0x295a('0x23')]);}const _0x1e447d=_0x86d977;_0xc4477a=path[_0x295a('0x29')](__dirname,_0x295a('0x2a'),rs['generate'](0x4)+_0x295a('0x3c'));fs['writeFileSync'](_0xc4477a,_0x86d977,{'encoding':_0x295a('0x2d')});_0x236fc8=path['resolve'](__dirname,_0x295a('0x2a'),rs[_0x295a('0x2b')](0x4)+_0x295a('0x2c'));return convertFile(_0xc4477a,_0x236fc8);})['then'](function(){try{fs[_0x295a('0x1e')](_0xc4477a);fs[_0x295a('0x2e')](_0x236fc8,'777');}catch(_0x5e7dd4){logger[_0x295a('0x17')](_0x5e7dd4);}logger[_0x295a('0x1b')]('goggleTTS\x20path',_0x236fc8[_0x295a('0x30')]('.')[0x0]);return _0x236fc8['split']('.')[0x0];});};exports['googleASR']=function(_0x35d61f,_0x26842e,_0x34673f){return google['asr'](_0x35d61f,_0x26842e,_0x34673f)[_0x295a('0x3e')](function(_0x494d47){logger[_0x295a('0x1b')](_0x494d47[_0x295a('0x4a')]);return rp(_0x494d47);})[_0x295a('0x3e')](function(_0x12d54d){var _0x50138b='';var _0x2bb5fa=0x0;try{fs[_0x295a('0x1e')](_0x35d61f);}catch(_0x58ebb7){logger['error'](_0x58ebb7);}if(_0x12d54d&&_0x12d54d[_0x295a('0x4b')]){_0x50138b=_0x12d54d[_0x295a('0x4b')]['map'](function(_0x4057b6){return _0x4057b6&&_0x4057b6['alternatives'][0x0]&&_0x4057b6['alternatives'][0x0][_0x295a('0x4c')]?_0x4057b6[_0x295a('0x4d')][0x0][_0x295a('0x4c')]:'';})[_0x295a('0x4e')]('\x0a');_0x2bb5fa=_0x12d54d[_0x295a('0x4b')]['map'](function(_0x4706d4){return _0x4706d4&&_0x4706d4['alternatives'][0x0]&&_0x4706d4[_0x295a('0x4d')][0x0][_0x295a('0x4f')]?_0x4706d4[_0x295a('0x4d')][0x0]['confidence']:0x0;})[_0x295a('0x4e')]('\x0a');}logger[_0x295a('0x1b')](_0x295a('0x50'),_0x50138b);logger[_0x295a('0x1b')]('googleASR\x20confidence',_0x2bb5fa);return{'transcript':_0x50138b,'confidence':_0x2bb5fa};})['catch'](function(_0x38510e){logger[_0x295a('0x17')]('[%s]\x20%s:%s',_0x38510e[_0x295a('0x16')],_0x38510e[_0x295a('0x51')],_0x38510e[_0x295a('0x52')]);});};exports[_0x295a('0x53')]=function(_0x2b6bf3,_0x114cb8,_0x2b125c,_0x4a5427){var _0xecff28=apiai(_0x114cb8,{'language':_0x4a5427||'en'});return _0xecff28[_0x295a('0x54')](_0x2b125c,{'sessionId':md5(_0x2b6bf3)})['then'](function(_0x4f41f7){logger['info'](JSON[_0x295a('0x44')](_0x4f41f7));return{'source':_0x4f41f7[_0x295a('0x55')]['source'],'resolvedQuery':_0x4f41f7[_0x295a('0x55')]['resolvedQuery'],'action':_0x4f41f7[_0x295a('0x55')][_0x295a('0x56')],'actionIncomplete':_0x4f41f7[_0x295a('0x55')][_0x295a('0x57')],'speech':_0x4f41f7[_0x295a('0x55')][_0x295a('0x58')][_0x295a('0x59')],'score':_0x4f41f7[_0x295a('0x55')][_0x295a('0x5a')],'statusCode':_0x4f41f7[_0x295a('0x5b')][_0x295a('0x5c')],'endConversation':_0x4f41f7[_0x295a('0x55')][_0x295a('0x5d')]['endConversation']||![],'isFallbackIntent':_0x4f41f7['result'][_0x295a('0x5d')][_0x295a('0x5e')]};});};exports[_0x295a('0x5f')]=function(_0x5a5c2a,_0x1778b9,_0x4b6088,_0x213cc9,_0x13549a,_0x9d096b){var _0x27a7f1=_0x213cc9[_0x295a('0x60')](/\\n/g,'\x0a');var _0x56afe7={'credentials':{'private_key':_0x27a7f1,'client_email':_0x4b6088}};var _0x5f13a9=new dialogflow[(_0x295a('0x61'))](_0x56afe7);var _0x321028=_0x5f13a9[_0x295a('0x62')](_0x1778b9,md5(_0x5a5c2a));var _0x2cfe08={'session':_0x321028,'queryInput':{'text':{'text':_0x13549a,'languageCode':_0x9d096b}}};return _0x5f13a9['detectIntent'](_0x2cfe08)[_0x295a('0x3e')](function(_0x5c7c7b){if(_0x5c7c7b&&_0x5c7c7b['length']){logger[_0x295a('0x1b')]('Dialogflow\x20V2\x20response:',JSON[_0x295a('0x44')](_0x5c7c7b));var _0x26b89b=_0x5c7c7b[0x0];if(_0x26b89b){var _0x378077={'action':_0x26b89b['queryResult']['action'],'allRequiredParamsPresent':_0x26b89b[_0x295a('0x63')][_0x295a('0x64')],'endConversation':_0x26b89b[_0x295a('0x63')]['diagnosticInfo']&&_0x26b89b['queryResult'][_0x295a('0x65')]['fields']?_0x26b89b[_0x295a('0x63')]['diagnosticInfo'][_0x295a('0x66')][_0x295a('0x67')][_0x295a('0x68')]:![],'fulfillmentText':_0x26b89b[_0x295a('0x63')][_0x295a('0x69')],'intentName':_0x26b89b[_0x295a('0x63')][_0x295a('0x6a')][_0x295a('0x51')],'intentDisplayName':_0x26b89b['queryResult'][_0x295a('0x6a')][_0x295a('0x6b')],'isFallbackIntent':_0x26b89b[_0x295a('0x63')][_0x295a('0x6a')][_0x295a('0x6c')],'languageCode':_0x26b89b[_0x295a('0x63')]['languageCode'],'queryText':_0x26b89b[_0x295a('0x63')]['queryText'],'responseId':_0x26b89b[_0x295a('0x6d')],'score':_0x26b89b['queryResult'][_0x295a('0x6e')],'speech':_0x26b89b[_0x295a('0x63')][_0x295a('0x69')],'providerResponse':JSON[_0x295a('0x44')](_0x5c7c7b)};return _0x378077;}}});};exports[_0x295a('0x6f')]=function(_0x3a83b9,_0x1a3cf7,_0x372331,_0x145978){return tilde['asr'](_0x3a83b9,_0x1a3cf7,_0x372331,_0x145978)[_0x295a('0x3e')](function(_0x47fc2b){try{fs[_0x295a('0x1e')](_0x3a83b9);}catch(_0x2f649e){logger[_0x295a('0x17')](_0x2f649e);}logger[_0x295a('0x1b')](_0x295a('0x70'),_0x47fc2b['transcript']);logger[_0x295a('0x1b')](_0x295a('0x71'),_0x47fc2b[_0x295a('0x4f')]);return _0x47fc2b;});};exports[_0x295a('0x72')]=function(_0x5c7f66,_0x340818,_0x1e561f,_0x5900ae,_0x6f8f74,_0x2a3d58){var _0x255de9=path['resolve'](__dirname,_0x295a('0x2a'),rs[_0x295a('0x2b')](0x4)+'.mp3');var _0x340935;return aws[_0x295a('0x73')](_0x5c7f66,_0x340818,_0x1e561f,_0x5900ae,_0x6f8f74,_0x2a3d58,_0x255de9)[_0x295a('0x3e')](function(){_0x340935=path['resolve'](__dirname,_0x295a('0x2a'),rs[_0x295a('0x2b')](0x4)+_0x295a('0x2c'));return convertFile(_0x255de9,_0x340935);})[_0x295a('0x3e')](function(){try{fs[_0x295a('0x1e')](_0x255de9);fs[_0x295a('0x2e')](_0x340935,_0x295a('0x2f'));}catch(_0x35924b){logger[_0x295a('0x17')](_0x35924b);}return _0x340935[_0x295a('0x30')]('.')[0x0];});};exports['awsLex']=function(_0x3653fe,_0x85440c,_0x1ab638,_0x151745,_0x5689e6,_0x142acc){return aws['lex'](_0x3653fe,_0x85440c,_0x1ab638,_0x151745,_0x5689e6,_0x142acc)[_0x295a('0x3e')](function(_0x17f2d9){logger[_0x295a('0x1b')](JSON['stringify'](_0x17f2d9));return _0x17f2d9;});};exports['ispeechTTS']=function(_0x5824d4,_0x590106,_0x12919a,_0x53c455){var _0xb60035=util[_0x295a('0x74')](_0x295a('0x75'),ISPEECH_API,_0x5824d4,encodeURIComponent(_0x590106),_0x12919a,_0x53c455);var _0x4b46a5=path[_0x295a('0x29')](__dirname,_0x295a('0x2a'),rs[_0x295a('0x2b')](0x4)+_0x295a('0x3c'));var _0x4ff14b;return downloadFile(_0xb60035,_0x4b46a5)['then'](function(){_0x4ff14b=path[_0x295a('0x29')](__dirname,'tmp',rs[_0x295a('0x2b')](0x4)+_0x295a('0x2c'));return convertFile(_0x4b46a5,_0x4ff14b);})[_0x295a('0x3e')](function(){try{fs[_0x295a('0x1e')](_0x4b46a5);fs[_0x295a('0x2e')](_0x4ff14b,'777');}catch(_0x10d802){logger[_0x295a('0x17')](_0x10d802);}return _0x4ff14b[_0x295a('0x30')]('.')[0x0];});};exports[_0x295a('0x76')]=function(_0xc9278c,_0x2790f2,_0x41320e,_0x32b0da){var _0x134db3=util[_0x295a('0x74')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x2790f2,_0x41320e,base64Encode(_0xc9278c),_0x32b0da?util['format'](_0x295a('0x77'),encodeURIComponent(_0x32b0da)):_0x295a('0x78'));return uploadFile(_0x134db3)[_0x295a('0x3e')](function(_0x82a221){return querystring[_0x295a('0xa')](_0x82a221);});};exports[_0x295a('0x79')]=function(_0x20034f,_0x217b5f){return sestek[_0x295a('0x7a')](_0x20034f,_0x217b5f)[_0x295a('0x3e')](function(_0x227555){logger['info'](JSON[_0x295a('0x44')](_0x227555));var _0x379543={'speech':_0x227555[_0x295a('0x7b')],'action':_0x227555[_0x295a('0x7c')]?_0x227555[_0x295a('0x7c')][_0x295a('0x7d')]:undefined,'actiondata':_0x227555[_0x295a('0x7c')]?_0x227555[_0x295a('0x7c')][_0x295a('0x7e')]:undefined};if(_0x227555[_0x295a('0x7c')]&&_0x227555[_0x295a('0x7c')][_0x295a('0x7f')]){return base64Decode(_0x227555[_0x295a('0x7c')][_0x295a('0x7f')]['Data'],path[_0x295a('0x29')](__dirname,_0x295a('0x2a'),rs[_0x295a('0x2b')](0x4)+_0x295a('0x2c')))[_0x295a('0x3e')](function(_0x5ea5c7){_0x379543[_0x295a('0x80')]=_0x5ea5c7;return _0x379543;});}return _0x379543;});};exports[_0x295a('0x81')]=function(){return __dirname;};
\ No newline at end of file
+var _0x0bd4=['replace','SessionsClient','sessionPath','length','Dialogflow\x20V2\x20response:','queryResult','action','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','fulfillmentText','intent','displayName','languageCode','queryText','intentDetectionConfidence','Tilde\x20ASR\x20confidence','polly','lex','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','text','channelData','CustomAction','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','http','https','path','request-promise','randomstring','sox','google-tts-api','url','parse','util','./google','./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','host','WHAT_EVER','get','statusCode','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','info','finish\x20download\x20file','error','unlink','download\x20error','pipe','data','end','transcode','wav','error\x20convert','finish\x20to\x20convert','start','tmp','generate','.wav','writeFileSync','then','chmodSync','777','split','readFileSync','base64','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','MP3','text:synthesize','resolve','.mp3','from','audioContent','writeFile','utf8','POST','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','generic','slice','parse\x20response\x20failed:\x0a','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','uri','results','alternatives','transcript','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result','source','resolvedQuery','actionIncomplete','fulfillment','speech','code','endConversation','metadata','isFallbackIntent','googleDialogflowV2'];(function(_0x2c5411,_0x37da99){var _0x1a6a16=function(_0x222813){while(--_0x222813){_0x2c5411['push'](_0x2c5411['shift']());}};_0x1a6a16(++_0x37da99);}(_0x0bd4,0x127));var _0x40bd=function(_0x59eacf,_0x56ec4a){_0x59eacf=_0x59eacf-0x0;var _0x5d74f2=_0x0bd4[_0x59eacf];return _0x5d74f2;};'use strict';var apiai=require(_0x40bd('0x0'));var BPromise=require(_0x40bd('0x1'));var dialogflow=require('dialogflow');var fs=require('fs');var http=require(_0x40bd('0x2'));var https=require(_0x40bd('0x3'));var md5=require('md5');var path=require(_0x40bd('0x4'));var querystring=require('querystring');var rp=require(_0x40bd('0x5'));var rs=require(_0x40bd('0x6'));var sox=require(_0x40bd('0x7'));var tts=require(_0x40bd('0x8'));var urlParse=require(_0x40bd('0x9'))[_0x40bd('0xa')];var util=require(_0x40bd('0xb'));var aws=require('./aws');var google=require(_0x40bd('0xc'));var sestek=require(_0x40bd('0xd'));var tilde=require(_0x40bd('0xe'));var logger=require(_0x40bd('0xf'))(_0x40bd('0x10'));var ISPEECH_API=_0x40bd('0x11');function downloadFile(_0x388765,_0x2070bd){return new BPromise(function(_0x58ada0,_0xe08975){var _0x519c53=urlParse(_0x388765);var _0x3b6f9c=_0x519c53[_0x40bd('0x12')]===_0x40bd('0x13')?https:http;var _0x50abb6={'host':_0x519c53[_0x40bd('0x14')],'path':_0x519c53[_0x40bd('0x4')],'headers':{'user-agent':_0x40bd('0x15')}};_0x3b6f9c[_0x40bd('0x16')](_0x50abb6,function(_0x2560b1){if(_0x2560b1[_0x40bd('0x17')]!==0xc8){logger['error'](_0x40bd('0x18')+_0x388765+_0x40bd('0x19')+_0x2560b1['statusCode']+'\x20('+_0x2560b1['statusMessage']+')');_0xe08975(new Error(_0x40bd('0x18')+_0x388765+_0x40bd('0x19')+_0x2560b1[_0x40bd('0x17')]+'\x20('+_0x2560b1[_0x40bd('0x1a')]+')'));return;}var _0x317ecf=fs[_0x40bd('0x1b')](_0x2070bd);_0x317ecf['on']('finish',function(){logger[_0x40bd('0x1c')](_0x40bd('0x1d'));_0x317ecf['close'](_0x58ada0);});_0x317ecf['on'](_0x40bd('0x1e'),function(_0x38f5){fs[_0x40bd('0x1f')](_0x2070bd);logger[_0x40bd('0x1e')](_0x40bd('0x20'),_0x38f5);_0xe08975(_0x38f5);});_0x2560b1[_0x40bd('0x21')](_0x317ecf);})['on']('error',function(_0x126ba5){logger[_0x40bd('0x1e')](_0x126ba5);_0xe08975(_0x126ba5);})['end']();});}function uploadFile(_0x3f1b8f){return new BPromise(function(_0x4135d2,_0xe68547){var _0x2d3960=urlParse(_0x3f1b8f);var _0x4bfbbf=_0x2d3960['protocol']===_0x40bd('0x13')?https:http;var _0x5651ed={'host':_0x2d3960[_0x40bd('0x14')],'path':_0x2d3960[_0x40bd('0x4')],'headers':{'user-agent':_0x40bd('0x15')}};_0x4bfbbf[_0x40bd('0x16')](_0x5651ed,function(_0x2623a4){if(_0x2623a4[_0x40bd('0x17')]!==0xc8){_0xe68547(new Error(_0x40bd('0x18')+_0x3f1b8f+_0x40bd('0x19')+_0x2623a4['statusCode']+'\x20('+_0x2623a4[_0x40bd('0x1a')]+')'));return;}var _0x1f5031='';_0x2623a4['on'](_0x40bd('0x22'),function(_0x3f4732){_0x1f5031+=_0x3f4732;});_0x2623a4['on'](_0x40bd('0x23'),function(){_0x4135d2(_0x1f5031);});})['on'](_0x40bd('0x1e'),function(_0x159330){_0xe68547(_0x159330);})[_0x40bd('0x23')]();});}function convertFile(_0x4e339b,_0xc773e9){return new BPromise(function(_0x474042,_0x32503b){var _0x3627e3=sox[_0x40bd('0x24')](_0x4e339b,_0xc773e9,{'sampleRate':0x1f40,'format':_0x40bd('0x25'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x3627e3['on']('error',function(_0x1925ee){logger['error'](_0x40bd('0x26'),_0x1925ee);_0x32503b(_0x1925ee);});_0x3627e3['on'](_0x40bd('0x23'),function(){logger[_0x40bd('0x1c')](_0x40bd('0x27'));_0x474042();});_0x3627e3[_0x40bd('0x28')]();});}function base64Decode(_0x514056,_0x5f38ac){var _0x559a14=path['resolve'](__dirname,_0x40bd('0x29'),rs[_0x40bd('0x2a')](0x4)+_0x40bd('0x2b'));fs[_0x40bd('0x2c')](_0x559a14,_0x514056,'base64');return convertFile(_0x559a14,_0x5f38ac)[_0x40bd('0x2d')](function(){try{fs[_0x40bd('0x1f')](_0x559a14);fs[_0x40bd('0x2e')](_0x5f38ac,_0x40bd('0x2f'));}catch(_0x51ffdd){logger['error'](_0x51ffdd);}return _0x5f38ac[_0x40bd('0x30')]('.')[0x0];});}function base64Encode(_0x16254a){var _0x4e1a44=fs[_0x40bd('0x31')](_0x16254a);return new Buffer(_0x4e1a44)['toString'](_0x40bd('0x32'));}exports[_0x40bd('0x33')]=function(_0x396de1,_0x260011,_0x3af8e0,_0x250e96,_0x4b0441,_0x54534b){var _0x1d7b0d,_0x5d4efb;var _0x18069a=_0x40bd('0x34');var _0x18f296=_0x40bd('0x35')+_0x396de1;var _0x11a783={};if(_0x260011===_0x40bd('0x36')){_0x11a783[_0x40bd('0x37')]={'ssml':_0x3af8e0};}else{_0x11a783[_0x40bd('0x37')]={'text':_0x3af8e0};};_0x11a783[_0x40bd('0x38')]={'languageCode':_0x250e96,'ssmlGender':_0x4b0441};_0x11a783[_0x40bd('0x39')]={'audioEncoding':_0x40bd('0x3a'),'sampleRateHertz':0x1f40};var _0x41bf3f={'url':_0x18069a+_0x40bd('0x3b')+_0x18f296,'method':'POST','json':!![],'body':_0x11a783};return rp(_0x41bf3f)['then'](function(_0x4a40fd){return new BPromise(function(_0x5d6bc0,_0x1996b7){_0x1d7b0d=path[_0x40bd('0x3c')](__dirname,_0x40bd('0x29'),rs[_0x40bd('0x2a')](0x4)+_0x40bd('0x3d'));var _0x1cd615=Buffer[_0x40bd('0x3e')](_0x4a40fd[_0x40bd('0x3f')],_0x40bd('0x32'));return fs[_0x40bd('0x40')](_0x1d7b0d,_0x1cd615,function(_0x1595cd){_0x1996b7(_0x1595cd);},function(_0x12c135){fs[_0x40bd('0x2e')](_0x1d7b0d,_0x40bd('0x2f'));_0x5d6bc0(_0x12c135);});});})[_0x40bd('0x2d')](function(_0x486baf){_0x5d4efb=path['resolve'](__dirname,_0x40bd('0x29'),rs[_0x40bd('0x2a')](0x4)+_0x40bd('0x2b'));return convertFile(_0x1d7b0d,_0x5d4efb);})[_0x40bd('0x2d')](function(){try{fs['unlink'](_0x1d7b0d);fs[_0x40bd('0x2e')](_0x5d4efb,_0x40bd('0x2f'));}catch(_0x625d84){logger[_0x40bd('0x1e')](_0x625d84);}logger['info']('googleCloudTTS\x20path',_0x5d4efb[_0x40bd('0x30')]('.')[0x0]);return _0x5d4efb[_0x40bd('0x30')]('.')[0x0];});};exports['googleTTS']=function(_0x4a4f8b,_0x3da192){var _0x5cd3c7='https://translate.google.com/_/TranslateWebserverUi/data/batchexecute';var _0x58cf94,_0x5268e3;var _0x412200;var _0x67923b={'encoding':_0x40bd('0x41'),'method':_0x40bd('0x42'),'timeout':0x2710,'url':_0x5cd3c7,'headers':{'Content-Type':_0x40bd('0x43')},'body':_0x40bd('0x44')+encodeURIComponent(JSON[_0x40bd('0x45')]([[[_0x40bd('0x46'),JSON['stringify']([_0x4a4f8b,_0x3da192||'en',![],'null']),null,_0x40bd('0x47')]]]))};return rp(_0x67923b)['then'](function(_0x3991ac){try{_0x412200=eval(_0x3991ac[_0x40bd('0x48')](0x5))[0x0][0x2];}catch(_0x5f3c3a){throw new Error(_0x40bd('0x49')+_0x3991ac[_0x40bd('0x22')]);}if(!_0x412200){if(_0x4a4f8b['length']>0xc8){throw new Error(_0x40bd('0x4a'));}else{throw new Error(_0x40bd('0x4b')+_0x3da192+_0x40bd('0x4c'));}}try{_0x412200=eval(_0x412200)[0x0];}catch(_0x2ff8bd){throw new Error(_0x40bd('0x49')+res[_0x40bd('0x22')]);}const _0x5afdd0=_0x412200;_0x58cf94=path[_0x40bd('0x3c')](__dirname,'tmp',rs['generate'](0x4)+_0x40bd('0x3d'));fs[_0x40bd('0x2c')](_0x58cf94,_0x412200,{'encoding':'base64'});_0x5268e3=path[_0x40bd('0x3c')](__dirname,'tmp',rs[_0x40bd('0x2a')](0x4)+'.wav');return convertFile(_0x58cf94,_0x5268e3);})[_0x40bd('0x2d')](function(){try{fs['unlink'](_0x58cf94);fs[_0x40bd('0x2e')](_0x5268e3,_0x40bd('0x2f'));}catch(_0x199eba){logger[_0x40bd('0x1e')](_0x199eba);}logger[_0x40bd('0x1c')]('goggleTTS\x20path',_0x5268e3[_0x40bd('0x30')]('.')[0x0]);return _0x5268e3[_0x40bd('0x30')]('.')[0x0];});};exports['googleASR']=function(_0x8166ac,_0x129120,_0x3b98fb){return google['asr'](_0x8166ac,_0x129120,_0x3b98fb)[_0x40bd('0x2d')](function(_0x4a1ba7){logger[_0x40bd('0x1c')](_0x4a1ba7[_0x40bd('0x4d')]);return rp(_0x4a1ba7);})[_0x40bd('0x2d')](function(_0xe06b7f){var _0x5e0bb6='';var _0x576b7d=0x0;try{fs[_0x40bd('0x1f')](_0x8166ac);}catch(_0x2fc010){logger[_0x40bd('0x1e')](_0x2fc010);}if(_0xe06b7f&&_0xe06b7f[_0x40bd('0x4e')]){_0x5e0bb6=_0xe06b7f[_0x40bd('0x4e')]['map'](function(_0x1dd1d8){return _0x1dd1d8&&_0x1dd1d8[_0x40bd('0x4f')][0x0]&&_0x1dd1d8[_0x40bd('0x4f')][0x0][_0x40bd('0x50')]?_0x1dd1d8['alternatives'][0x0][_0x40bd('0x50')]:'';})['join']('\x0a');_0x576b7d=_0xe06b7f[_0x40bd('0x4e')]['map'](function(_0x109bc6){return _0x109bc6&&_0x109bc6[_0x40bd('0x4f')][0x0]&&_0x109bc6[_0x40bd('0x4f')][0x0][_0x40bd('0x51')]?_0x109bc6[_0x40bd('0x4f')][0x0]['confidence']:0x0;})['join']('\x0a');}logger['info'](_0x40bd('0x52'),_0x5e0bb6);logger[_0x40bd('0x1c')](_0x40bd('0x53'),_0x576b7d);return{'transcript':_0x5e0bb6,'confidence':_0x576b7d};})[_0x40bd('0x54')](function(_0x228d5c){logger[_0x40bd('0x1e')](_0x40bd('0x55'),_0x228d5c['statusCode'],_0x228d5c[_0x40bd('0x56')],_0x228d5c[_0x40bd('0x57')]);});};exports[_0x40bd('0x58')]=function(_0x7cf76a,_0x46324f,_0x5207a3,_0x227977){var _0x83c099=apiai(_0x46324f,{'language':_0x227977||'en'});return _0x83c099[_0x40bd('0x59')](_0x5207a3,{'sessionId':md5(_0x7cf76a)})[_0x40bd('0x2d')](function(_0x1a9db6){logger[_0x40bd('0x1c')](JSON[_0x40bd('0x45')](_0x1a9db6));return{'source':_0x1a9db6[_0x40bd('0x5a')][_0x40bd('0x5b')],'resolvedQuery':_0x1a9db6[_0x40bd('0x5a')][_0x40bd('0x5c')],'action':_0x1a9db6[_0x40bd('0x5a')]['action'],'actionIncomplete':_0x1a9db6[_0x40bd('0x5a')][_0x40bd('0x5d')],'speech':_0x1a9db6[_0x40bd('0x5a')][_0x40bd('0x5e')][_0x40bd('0x5f')],'score':_0x1a9db6[_0x40bd('0x5a')]['score'],'statusCode':_0x1a9db6['status'][_0x40bd('0x60')],'endConversation':_0x1a9db6[_0x40bd('0x5a')]['metadata'][_0x40bd('0x61')]||![],'isFallbackIntent':_0x1a9db6['result'][_0x40bd('0x62')][_0x40bd('0x63')]};});};exports[_0x40bd('0x64')]=function(_0x30f860,_0x2b848a,_0x567175,_0x2a9932,_0x277b61,_0x14e97c){var _0x562c91=_0x2a9932[_0x40bd('0x65')](/\\n/g,'\x0a');var _0x6f3631={'credentials':{'private_key':_0x562c91,'client_email':_0x567175}};var _0x1a363c=new dialogflow[(_0x40bd('0x66'))](_0x6f3631);var _0x2428e6=_0x1a363c[_0x40bd('0x67')](_0x2b848a,md5(_0x30f860));var _0x433f27={'session':_0x2428e6,'queryInput':{'text':{'text':_0x277b61,'languageCode':_0x14e97c}}};return _0x1a363c['detectIntent'](_0x433f27)[_0x40bd('0x2d')](function(_0x150484){if(_0x150484&&_0x150484[_0x40bd('0x68')]){logger[_0x40bd('0x1c')](_0x40bd('0x69'),JSON[_0x40bd('0x45')](_0x150484));var _0x119a11=_0x150484[0x0];if(_0x119a11){var _0xe6c80b={'action':_0x119a11[_0x40bd('0x6a')][_0x40bd('0x6b')],'allRequiredParamsPresent':_0x119a11[_0x40bd('0x6a')][_0x40bd('0x6c')],'endConversation':_0x119a11[_0x40bd('0x6a')][_0x40bd('0x6d')]&&_0x119a11[_0x40bd('0x6a')][_0x40bd('0x6d')]['fields']?_0x119a11['queryResult'][_0x40bd('0x6d')][_0x40bd('0x6e')][_0x40bd('0x6f')]['boolValue']:![],'fulfillmentText':_0x119a11[_0x40bd('0x6a')][_0x40bd('0x70')],'intentName':_0x119a11[_0x40bd('0x6a')][_0x40bd('0x71')][_0x40bd('0x56')],'intentDisplayName':_0x119a11[_0x40bd('0x6a')][_0x40bd('0x71')][_0x40bd('0x72')],'isFallbackIntent':_0x119a11[_0x40bd('0x6a')][_0x40bd('0x71')]['isFallback'],'languageCode':_0x119a11[_0x40bd('0x6a')][_0x40bd('0x73')],'queryText':_0x119a11[_0x40bd('0x6a')][_0x40bd('0x74')],'responseId':_0x119a11['responseId'],'score':_0x119a11[_0x40bd('0x6a')][_0x40bd('0x75')],'speech':_0x119a11['queryResult'][_0x40bd('0x70')],'providerResponse':JSON[_0x40bd('0x45')](_0x150484)};return _0xe6c80b;}}});};exports['tildeASR']=function(_0xadab70,_0x61183b,_0x673699,_0x43cff9){return tilde['asr'](_0xadab70,_0x61183b,_0x673699,_0x43cff9)[_0x40bd('0x2d')](function(_0x26ebbe){try{fs[_0x40bd('0x1f')](_0xadab70);}catch(_0x4c0a33){logger[_0x40bd('0x1e')](_0x4c0a33);}logger[_0x40bd('0x1c')]('Tilde\x20ASR\x20transcription',_0x26ebbe[_0x40bd('0x50')]);logger[_0x40bd('0x1c')](_0x40bd('0x76'),_0x26ebbe['confidence']);return _0x26ebbe;});};exports['awsPolly']=function(_0x357112,_0x3e8871,_0x3bb7a1,_0x1393ff,_0x2c836f,_0x255315){var _0x110a20=path['resolve'](__dirname,_0x40bd('0x29'),rs['generate'](0x4)+_0x40bd('0x3d'));var _0x444297;return aws[_0x40bd('0x77')](_0x357112,_0x3e8871,_0x3bb7a1,_0x1393ff,_0x2c836f,_0x255315,_0x110a20)[_0x40bd('0x2d')](function(){_0x444297=path['resolve'](__dirname,'tmp',rs['generate'](0x4)+_0x40bd('0x2b'));return convertFile(_0x110a20,_0x444297);})['then'](function(){try{fs['unlink'](_0x110a20);fs[_0x40bd('0x2e')](_0x444297,_0x40bd('0x2f'));}catch(_0xb93d1c){logger['error'](_0xb93d1c);}return _0x444297[_0x40bd('0x30')]('.')[0x0];});};exports['awsLex']=function(_0x27afbc,_0x45a736,_0x341854,_0x4c3dda,_0x33b682,_0x440463){return aws[_0x40bd('0x78')](_0x27afbc,_0x45a736,_0x341854,_0x4c3dda,_0x33b682,_0x440463)[_0x40bd('0x2d')](function(_0x5624a8){logger[_0x40bd('0x1c')](JSON[_0x40bd('0x45')](_0x5624a8));return _0x5624a8;});};exports['ispeechTTS']=function(_0x5af0fa,_0x53866f,_0x3aa323,_0xa0dc07){var _0x54b871=util[_0x40bd('0x79')](_0x40bd('0x7a'),ISPEECH_API,_0x5af0fa,encodeURIComponent(_0x53866f),_0x3aa323,_0xa0dc07);var _0x2a58b3=path[_0x40bd('0x3c')](__dirname,_0x40bd('0x29'),rs[_0x40bd('0x2a')](0x4)+_0x40bd('0x3d'));var _0x5be374;return downloadFile(_0x54b871,_0x2a58b3)[_0x40bd('0x2d')](function(){_0x5be374=path[_0x40bd('0x3c')](__dirname,_0x40bd('0x29'),rs[_0x40bd('0x2a')](0x4)+'.wav');return convertFile(_0x2a58b3,_0x5be374);})[_0x40bd('0x2d')](function(){try{fs['unlink'](_0x2a58b3);fs[_0x40bd('0x2e')](_0x5be374,_0x40bd('0x2f'));}catch(_0x378f84){logger[_0x40bd('0x1e')](_0x378f84);}return _0x5be374[_0x40bd('0x30')]('.')[0x0];});};exports['ispeechASR']=function(_0x18f8dc,_0x5c3ef6,_0x2e6a64,_0x1a4bf7){var _0x38dd5f=util[_0x40bd('0x79')](_0x40bd('0x7b'),ISPEECH_API,_0x5c3ef6,_0x2e6a64,base64Encode(_0x18f8dc),_0x1a4bf7?util[_0x40bd('0x79')](_0x40bd('0x7c'),encodeURIComponent(_0x1a4bf7)):'freeform=3');return uploadFile(_0x38dd5f)[_0x40bd('0x2d')](function(_0x357506){return querystring['parse'](_0x357506);});};exports['sestekNDA']=function(_0x145377,_0x584098){return sestek['nda'](_0x145377,_0x584098)[_0x40bd('0x2d')](function(_0x2fc37f){logger[_0x40bd('0x1c')](JSON[_0x40bd('0x45')](_0x2fc37f));var _0x36581d={'speech':_0x2fc37f[_0x40bd('0x7d')],'action':_0x2fc37f[_0x40bd('0x7e')]?_0x2fc37f[_0x40bd('0x7e')][_0x40bd('0x7f')]:undefined,'actiondata':_0x2fc37f[_0x40bd('0x7e')]?_0x2fc37f['channelData']['CustomActionData']:undefined};if(_0x2fc37f['channelData']&&_0x2fc37f[_0x40bd('0x7e')][_0x40bd('0x80')]){return base64Decode(_0x2fc37f[_0x40bd('0x7e')]['AudioFromTts'][_0x40bd('0x81')],path[_0x40bd('0x3c')](__dirname,'tmp',rs['generate'](0x4)+_0x40bd('0x2b')))[_0x40bd('0x2d')](function(_0x18c55f){_0x36581d[_0x40bd('0x82')]=_0x18c55f;return _0x36581d;});}return _0x36581d;});};exports[_0x40bd('0x83')]=function(){return __dirname;};
\ No newline at end of file
index 5fe3ac2..ae424aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a3d=['./nda','exports'];(function(_0x38ba59,_0x38df8c){var _0x42ae76=function(_0xbf2780){while(--_0xbf2780){_0x38ba59['push'](_0x38ba59['shift']());}};_0x42ae76(++_0x38df8c);}(_0x1a3d,0x13e));var _0xd1a3=function(_0x4c18d4,_0x53a169){_0x4c18d4=_0x4c18d4-0x0;var _0x34a4ba=_0x1a3d[_0x4c18d4];return _0x34a4ba;};var nda=require(_0xd1a3('0x0'));module[_0xd1a3('0x1')]={'nda':nda};
\ No newline at end of file
+var _0x6b9f=['./nda'];(function(_0x2d418e,_0x52870d){var _0x10809b=function(_0x524b1f){while(--_0x524b1f){_0x2d418e['push'](_0x2d418e['shift']());}};_0x10809b(++_0x52870d);}(_0x6b9f,0x1ab));var _0xf6b9=function(_0x41a305,_0xedef37){_0x41a305=_0x41a305-0x0;var _0x464783=_0x6b9f[_0x41a305];return _0x464783;};var nda=require(_0xf6b9('0x0'));module['exports']={'nda':nda};
\ No newline at end of file
index 787e136..c05df1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2621=['message','uniqueid','callerid','extension','text','Bearer\x20','access_token','project','body','ProjectName','ndagenerate_audio','channelData','AudioOutputSettings','custom_action','CustomActionData','custom_action_data','info','stringify','request-promise','url','../../../../../config/logger','agi','exports','POST','resolve','ndauth_url','/token','password','username','then','ndassistant_url','/api/NaturalDialogAssistant/v1/Run'];(function(_0x57bd27,_0x2d45d6){var _0x55d683=function(_0x31ac1d){while(--_0x31ac1d){_0x57bd27['push'](_0x57bd27['shift']());}};_0x55d683(++_0x2d45d6);}(_0x2621,0x1d2));var _0x1262=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x2621[_0x14add3];return _0x4a174f;};'use strict';var rp=require(_0x1262('0x0'));var url=require(_0x1262('0x1'));var logger=require(_0x1262('0x2'))(_0x1262('0x3'));module[_0x1262('0x4')]=function(_0x44878a,_0x2dfe65){var _0xbabce3={'method':_0x1262('0x5'),'uri':url[_0x1262('0x6')](_0x2dfe65[_0x1262('0x7')],_0x1262('0x8')),'form':{'grant_type':_0x1262('0x9'),'username':_0x2dfe65[_0x1262('0xa')],'password':_0x2dfe65['password']},'json':!![]};return rp(_0xbabce3)[_0x1262('0xb')](function(_0x52af34){var _0xaa3c86={'method':'POST','uri':url[_0x1262('0x6')](_0x2dfe65[_0x1262('0xc')],_0x1262('0xd')),'body':{'type':_0x2dfe65['ndaactivity_type']||_0x1262('0xe'),'channelId':'Nda','conversation':{'id':_0x44878a[_0x1262('0xf')]},'from':{'id':_0x44878a[_0x1262('0x10')],'name':_0x44878a['calleridname']},'recipient':{'id':_0x44878a['dnid'],'name':_0x44878a[_0x1262('0x11')]},'text':_0x2dfe65[_0x1262('0x12')],'channelData':{}},'headers':{'Authorization':_0x1262('0x13')+_0x52af34[_0x1262('0x14')]},'json':!![]};if(_0x2dfe65[_0x1262('0x15')]){_0xaa3c86[_0x1262('0x16')]['channelData'][_0x1262('0x17')]=_0x2dfe65[_0x1262('0x15')];}if(_0x2dfe65[_0x1262('0x18')]=='1'){_0xaa3c86['body'][_0x1262('0x19')][_0x1262('0x1a')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':'audio/wav'};}if(_0x2dfe65['custom_action']){_0xaa3c86[_0x1262('0x16')][_0x1262('0x19')]['CustomAction']=_0x2dfe65[_0x1262('0x1b')];if(_0x2dfe65['custom_action_data']){_0xaa3c86[_0x1262('0x16')][_0x1262('0x19')][_0x1262('0x1c')]=_0x2dfe65[_0x1262('0x1d')];}}logger[_0x1262('0x1e')](JSON[_0x1262('0x1f')](_0xaa3c86));return rp(_0xaa3c86);});};
\ No newline at end of file
+var _0xa74f=['ndaactivity_type','message','uniqueid','callerid','dnid','extension','text','Bearer\x20','project','body','channelData','ProjectName','ndagenerate_audio','AudioOutputSettings','audio/wav','CustomAction','custom_action','custom_action_data','info','../../../../../config/logger','POST','ndauth_url','username','password','then','ndassistant_url','/api/NaturalDialogAssistant/v1/Run'];(function(_0x5cd054,_0x2d3b5d){var _0x5a9331=function(_0x2b2a0b){while(--_0x2b2a0b){_0x5cd054['push'](_0x5cd054['shift']());}};_0x5a9331(++_0x2d3b5d);}(_0xa74f,0x9a));var _0xfa74=function(_0x22e9fe,_0x3d019f){_0x22e9fe=_0x22e9fe-0x0;var _0x47cd19=_0xa74f[_0x22e9fe];return _0x47cd19;};'use strict';var rp=require('request-promise');var url=require('url');var logger=require(_0xfa74('0x0'))('agi');module['exports']=function(_0x29e4c8,_0x110824){var _0x394a1e={'method':_0xfa74('0x1'),'uri':url['resolve'](_0x110824[_0xfa74('0x2')],'/token'),'form':{'grant_type':'password','username':_0x110824[_0xfa74('0x3')],'password':_0x110824[_0xfa74('0x4')]},'json':!![]};return rp(_0x394a1e)[_0xfa74('0x5')](function(_0x2d9fa9){var _0x287921={'method':_0xfa74('0x1'),'uri':url['resolve'](_0x110824[_0xfa74('0x6')],_0xfa74('0x7')),'body':{'type':_0x110824[_0xfa74('0x8')]||_0xfa74('0x9'),'channelId':'Nda','conversation':{'id':_0x29e4c8[_0xfa74('0xa')]},'from':{'id':_0x29e4c8[_0xfa74('0xb')],'name':_0x29e4c8['calleridname']},'recipient':{'id':_0x29e4c8[_0xfa74('0xc')],'name':_0x29e4c8[_0xfa74('0xd')]},'text':_0x110824[_0xfa74('0xe')],'channelData':{}},'headers':{'Authorization':_0xfa74('0xf')+_0x2d9fa9['access_token']},'json':!![]};if(_0x110824[_0xfa74('0x10')]){_0x287921[_0xfa74('0x11')][_0xfa74('0x12')][_0xfa74('0x13')]=_0x110824['project'];}if(_0x110824[_0xfa74('0x14')]=='1'){_0x287921[_0xfa74('0x11')][_0xfa74('0x12')][_0xfa74('0x15')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0xfa74('0x16')};}if(_0x110824['custom_action']){_0x287921[_0xfa74('0x11')][_0xfa74('0x12')][_0xfa74('0x17')]=_0x110824[_0xfa74('0x18')];if(_0x110824[_0xfa74('0x19')]){_0x287921[_0xfa74('0x11')][_0xfa74('0x12')]['CustomActionData']=_0x110824[_0xfa74('0x19')];}}logger[_0xfa74('0x1a')](JSON['stringify'](_0x287921));return rp(_0x287921);});};
\ No newline at end of file
index acd8caa..334f801 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb04=['exports','./lib/api'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0xbb04,0x187));var _0x4bb0=function(_0x3240f1,_0x470595){_0x3240f1=_0x3240f1-0x0;var _0x504609=_0xbb04[_0x3240f1];return _0x504609;};'use strict';var asr=require(_0x4bb0('0x0'));module[_0x4bb0('0x1')]=function(_0x435d7f,_0x3c57aa,_0x5d9c59,_0x6a87bd){return asr(_0x435d7f,_0x3c57aa,_0x5d9c59,_0x6a87bd);};
\ No newline at end of file
+var _0xc27c=['./lib/api','exports'];(function(_0x23e785,_0x66b427){var _0x3f0686=function(_0x1d5f41){while(--_0x1d5f41){_0x23e785['push'](_0x23e785['shift']());}};_0x3f0686(++_0x66b427);}(_0xc27c,0x10a));var _0xcc27=function(_0x6c4a38,_0x160674){_0x6c4a38=_0x6c4a38-0x0;var _0x241fa3=_0xc27c[_0x6c4a38];return _0x241fa3;};'use strict';var asr=require(_0xcc27('0x0'));module[_0xcc27('0x1')]=function(_0x2a853b,_0x147878,_0x27d1f8,_0x2d2eb9){return asr(_0x2a853b,_0x147878,_0x27d1f8,_0x2d2eb9);};
\ No newline at end of file
index ba34e3c..47fc7d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22ab=['open','message','close','bluebird','lodash','../../../../../../config/logger','exports','info','Tilde\x20URI','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','update','digest','unix','send','createReadStream','data','EOS','error','Tilde\x20ASR\x20send\x20error','terminate','status','result','final','stringify','hypotheses','transcript','Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','isObject'];(function(_0x5e7bd4,_0x1654a6){var _0x423400=function(_0x5db00a){while(--_0x5db00a){_0x5e7bd4['push'](_0x5e7bd4['shift']());}};_0x423400(++_0x1654a6);}(_0x22ab,0x1a5));var _0xb22a=function(_0x5c25f7,_0x3a69dc){_0x5c25f7=_0x5c25f7-0x0;var _0x1d51d1=_0x22ab[_0x5c25f7];return _0x1d51d1;};'use strict';var BPromise=require(_0xb22a('0x0'));var _=require(_0xb22a('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require('moment');var crypto=require('crypto');var logger=require(_0xb22a('0x2'))('agi');module[_0xb22a('0x3')]=function(_0x39760b,_0x1763a2,_0x271791,_0x54e3d8){return new BPromise(function(_0x2158b2,_0xe12964){logger[_0xb22a('0x4')](_0xb22a('0x5'),_0x54e3d8||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE');var _0x503903=new WebSocket(_0x54e3d8||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE',{'perMessageDeflate':![]});var _0x573fe5='';var _0x1e7a88='0';var _0x19bd71='1';var _0x15d1e0=_0xb22a('0x6');function _0x31d939(_0x267331){var _0x39f960=crypto[_0xb22a('0x7')](_0xb22a('0x8'));_0x39f960[_0xb22a('0x9')](_0x267331);return _0x39f960[_0xb22a('0xa')]('hex');}function _0x512d45(){try{logger[_0xb22a('0x4')]('Open\x20Tilde\x20ASR\x20socket');var _0x3a7f23=moment()[_0xb22a('0xb')]();var _0x292cd6=_0x31d939(_0x3a7f23+_0x1763a2+_0x271791);_0x503903[_0xb22a('0xc')](JSON['stringify']({'appID':_0x1763a2,'timestamp':_0x3a7f23,'appKey':_0x292cd6}));var _0x3512ce=fs[_0xb22a('0xd')](_0x39760b);_0x3512ce['on'](_0xb22a('0xe'),function(_0xd34ed3){_0x503903['send'](_0xd34ed3);});_0x3512ce['on']('close',function(){_0x503903[_0xb22a('0xc')](_0xb22a('0xf'));});}catch(_0x2d8abf){logger[_0xb22a('0x10')](_0xb22a('0x11'),JSON['stringify'](_0x2d8abf));_0x503903[_0xb22a('0x12')]();}}function _0x1f5ea8(_0x3817db){try{if(_0x3817db){var _0x588b27=JSON['parse'](_0x3817db);switch(_0x588b27[_0xb22a('0x13')]){case 0x0:if(_0x588b27['result']){if(_0x588b27[_0xb22a('0x14')][_0xb22a('0x15')]){logger[_0xb22a('0x4')]('Tilde\x20ASR\x20hypoteses',JSON[_0xb22a('0x16')](_0x588b27['result'][_0xb22a('0x17')]));_0x573fe5=_0x588b27[_0xb22a('0x14')][_0xb22a('0x17')][0x0][_0xb22a('0x18')];_0x1e7a88=_0x588b27[_0xb22a('0x14')][_0xb22a('0x17')][0x0]['likelihood'];_0x19bd71='0';_0x15d1e0=_0xb22a('0x19');_0x503903[_0xb22a('0x12')]();}}break;case 0x1:logger[_0xb22a('0x4')](_0xb22a('0x6'));_0x19bd71='1';_0x15d1e0=_0xb22a('0x6');break;case 0x2:logger['info'](_0xb22a('0x1a'));_0x19bd71='2';_0x15d1e0=_0xb22a('0x1a');break;case 0x9:logger[_0xb22a('0x4')](_0xb22a('0x1b'));_0x19bd71='9';_0x15d1e0=_0xb22a('0x1b');break;case 0xa:logger[_0xb22a('0x4')](_0xb22a('0x1c'));_0x19bd71='10';_0x15d1e0=_0xb22a('0x1c');break;case 0xb:logger[_0xb22a('0x4')](_0xb22a('0x1d'));_0x19bd71='11';_0x15d1e0=_0xb22a('0x1d');}}}catch(_0x5120c8){logger[_0xb22a('0x10')](_0xb22a('0x1e'),JSON['stringify'](_0x5120c8));_0x503903[_0xb22a('0x12')]();}}function _0x2c82b5(){logger[_0xb22a('0x4')](_0xb22a('0x1f'));_0x2158b2({'transcript':_0x573fe5,'confidence':_0x1e7a88,'status':_0x19bd71,'status_message':_0x15d1e0});}function _0x4a3da5(_0x13cfc7){logger[_0xb22a('0x10')](_0xb22a('0x20'));if(!_[_0xb22a('0x21')](_0x13cfc7)){logger[_0xb22a('0x10')](_[_0xb22a('0x22')](_0x13cfc7)?JSON['stringify'](_0x13cfc7):_0x13cfc7);}}_0x503903['on'](_0xb22a('0x23'),_0x512d45);_0x503903['on'](_0xb22a('0x24'),_0x1f5ea8);_0x503903['on'](_0xb22a('0x25'),_0x2c82b5);_0x503903['on'](_0xb22a('0x10'),_0x4a3da5);});};
\ No newline at end of file
+var _0x283f=['hex','Open\x20Tilde\x20ASR\x20socket','unix','send','stringify','data','close','error','Tilde\x20ASR\x20send\x20error','terminate','parse','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood','Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Close\x20Tilde\x20ASR\x20socket','isNil','isObject','message','lodash','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'];(function(_0x4a808a,_0xff4d3b){var _0x3e8438=function(_0x4a8b61){while(--_0x4a8b61){_0x4a808a['push'](_0x4a808a['shift']());}};_0x3e8438(++_0xff4d3b);}(_0x283f,0x10b));var _0xf283=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x283f[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require('bluebird');var _=require(_0xf283('0x0'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0xf283('0x1'));var crypto=require(_0xf283('0x2'));var logger=require(_0xf283('0x3'))(_0xf283('0x4'));module[_0xf283('0x5')]=function(_0xb921d,_0x593ae9,_0x3a1558,_0x17b0ba){return new BPromise(function(_0x462fe0,_0x5948f8){logger[_0xf283('0x6')](_0xf283('0x7'),_0x17b0ba||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE');var _0x34c31d=new WebSocket(_0x17b0ba||_0xf283('0x8'),{'perMessageDeflate':![]});var _0x597a86='';var _0x5b20c8='0';var _0x2d394a='1';var _0x457544=_0xf283('0x9');function _0x3522cf(_0x5974a5){var _0x417ac8=crypto[_0xf283('0xa')](_0xf283('0xb'));_0x417ac8['update'](_0x5974a5);return _0x417ac8[_0xf283('0xc')](_0xf283('0xd'));}function _0x3740c5(){try{logger['info'](_0xf283('0xe'));var _0x3061e2=moment()[_0xf283('0xf')]();var _0x5a1783=_0x3522cf(_0x3061e2+_0x593ae9+_0x3a1558);_0x34c31d[_0xf283('0x10')](JSON[_0xf283('0x11')]({'appID':_0x593ae9,'timestamp':_0x3061e2,'appKey':_0x5a1783}));var _0x360ea0=fs['createReadStream'](_0xb921d);_0x360ea0['on'](_0xf283('0x12'),function(_0x3dadb2){_0x34c31d['send'](_0x3dadb2);});_0x360ea0['on'](_0xf283('0x13'),function(){_0x34c31d['send']('EOS');});}catch(_0x328545){logger[_0xf283('0x14')](_0xf283('0x15'),JSON[_0xf283('0x11')](_0x328545));_0x34c31d[_0xf283('0x16')]();}}function _0x15125b(_0x3c1ea5){try{if(_0x3c1ea5){var _0x3ee438=JSON[_0xf283('0x17')](_0x3c1ea5);switch(_0x3ee438[_0xf283('0x18')]){case 0x0:if(_0x3ee438[_0xf283('0x19')]){if(_0x3ee438['result'][_0xf283('0x1a')]){logger[_0xf283('0x6')](_0xf283('0x1b'),JSON[_0xf283('0x11')](_0x3ee438['result'][_0xf283('0x1c')]));_0x597a86=_0x3ee438[_0xf283('0x19')]['hypotheses'][0x0][_0xf283('0x1d')];_0x5b20c8=_0x3ee438[_0xf283('0x19')][_0xf283('0x1c')][0x0][_0xf283('0x1e')];_0x2d394a='0';_0x457544=_0xf283('0x1f');_0x34c31d['terminate']();}}break;case 0x1:logger[_0xf283('0x6')]('No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech');_0x2d394a='1';_0x457544=_0xf283('0x9');break;case 0x2:logger[_0xf283('0x6')](_0xf283('0x20'));_0x2d394a='2';_0x457544='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger[_0xf283('0x6')]('Not\x20available.\x20Max\x20load\x20limit\x20reached.');_0x2d394a='9';_0x457544='Not\x20available.\x20Max\x20load\x20limit\x20reached.';break;case 0xa:logger[_0xf283('0x6')](_0xf283('0x21'));_0x2d394a='10';_0x457544=_0xf283('0x21');break;case 0xb:logger[_0xf283('0x6')](_0xf283('0x22'));_0x2d394a='11';_0x457544=_0xf283('0x22');}}}catch(_0xd91750){logger[_0xf283('0x14')](_0xf283('0x23'),JSON[_0xf283('0x11')](_0xd91750));_0x34c31d[_0xf283('0x16')]();}}function _0x14a339(){logger[_0xf283('0x6')](_0xf283('0x24'));_0x462fe0({'transcript':_0x597a86,'confidence':_0x5b20c8,'status':_0x2d394a,'status_message':_0x457544});}function _0x2290c0(_0x4b1285){logger[_0xf283('0x14')]('Error\x20Tilde\x20ASR\x20socket');if(!_[_0xf283('0x25')](_0x4b1285)){logger[_0xf283('0x14')](_[_0xf283('0x26')](_0x4b1285)?JSON[_0xf283('0x11')](_0x4b1285):_0x4b1285);}}_0x34c31d['on']('open',_0x3740c5);_0x34c31d['on'](_0xf283('0x27'),_0x15125b);_0x34c31d['on']('close',_0x14a339);_0x34c31d['on']('error',_0x2290c0);});};
\ No newline at end of file
index 1d13c3d..620d680 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65d0=['exports','./asr'];(function(_0x2684ab,_0x3a86c3){var _0x11a08b=function(_0x3420ce){while(--_0x3420ce){_0x2684ab['push'](_0x2684ab['shift']());}};_0x11a08b(++_0x3a86c3);}(_0x65d0,0x1b5));var _0x065d=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x65d0[_0x178e48];return _0x440d7e;};var asr=require(_0x065d('0x0'));module[_0x065d('0x1')]={'asr':asr};
\ No newline at end of file
+var _0x4bce=['./asr'];(function(_0x1bfd20,_0x2801a7){var _0x1c3c48=function(_0x93e8e7){while(--_0x93e8e7){_0x1bfd20['push'](_0x1bfd20['shift']());}};_0x1c3c48(++_0x2801a7);}(_0x4bce,0x16c));var _0xe4bc=function(_0x3792e6,_0x32bd91){_0x3792e6=_0x3792e6-0x0;var _0x441e44=_0x4bce[_0x3792e6];return _0x441e44;};var asr=require(_0xe4bc('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
index 098a4d7..9a55e1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe71a=['listen','listening','connection','getConnections','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','ready','code','close','E_AGI_SERVER_CLOSE','nextTick','inherits','exports','util','net','events','EventEmitter','./error','./channel','emit','error','E_AGI_ARGUMENT_PORT','createServer'];(function(_0x2d8802,_0x239ae9){var _0x29c6a6=function(_0x2775fb){while(--_0x2775fb){_0x2d8802['push'](_0x2d8802['shift']());}};_0x29c6a6(++_0x239ae9);}(_0xe71a,0x1b8));var _0xae71=function(_0x2728e2,_0x35a369){_0x2728e2=_0x2728e2-0x0;var _0x25098e=_0xe71a[_0x2728e2];return _0x25098e;};'use strict';var util=require(_0xae71('0x0'));var net=require(_0xae71('0x1'));var EventEmitter=require(_0xae71('0x2'))[_0xae71('0x3')];var AGIError=require(_0xae71('0x4'));var AGIChannel=require(_0xae71('0x5'));var AGIServer=function(_0x2aa249,_0x59c4ba,_0x4e7957){var _0xd14fec=this,_0x2aa249=_0x2aa249||0x11dd,_0x59c4ba=_0x59c4ba||'127.0.0.1',_0x4b68dc=null,_0x4b9c55=0x0;EventEmitter['call'](_0xd14fec);function _0x205414(){if(!_0x2aa249){_0xd14fec[_0xae71('0x6')](_0xae71('0x7'),new AGIError(_0xae71('0x8')));return![];}_0x4b68dc=net[_0xae71('0x9')]();_0x4b68dc[_0xae71('0xa')](_0x2aa249,_0x59c4ba);_0x4b68dc['on'](_0xae71('0xb'),function(){_0xd14fec['emit'](_0xae71('0xb'));});_0x4b68dc['on'](_0xae71('0xc'),function(_0x641d31){_0x4b68dc[_0xae71('0xd')](function(_0x1e049a,_0x4651dc){if(_0x1e049a){_0xd14fec[_0xae71('0x6')](_0xae71('0x7'),new AGIError(_0xae71('0xe'),_0x1e049a));}else if(_0x4e7957&&_0x4e7957<0x0){_0xd14fec[_0xae71('0x6')](_0xae71('0x7'),new AGIError(_0xae71('0xf')));_0x641d31[_0xae71('0x10')]();}else if(_0x4e7957&&_0x4e7957>0x0&&_0x4e7957<_0x4651dc){_0x4b9c55+=0x1;_0xd14fec[_0xae71('0x6')](_0xae71('0x7'),new AGIError(_0xae71('0x11'),_0x4b9c55));_0x641d31[_0xae71('0x10')]();}else{var _0x211196=new AGIChannel(_0x641d31);_0x211196['on'](_0xae71('0x12'),function(){_0xd14fec[_0xae71('0x6')]('connection',_0x211196);});}});});_0x4b68dc['on'](_0xae71('0x7'),function(_0x597f6d){_0xd14fec[_0xae71('0x6')](_0xae71('0x7'),new AGIError(_0xae71('0xe'),_0x597f6d[_0xae71('0x13')]));});_0x4b68dc['on'](_0xae71('0x14'),function(){_0xd14fec[_0xae71('0x6')](_0xae71('0x14'),new AGIError(_0xae71('0x15')));});}process[_0xae71('0x16')](function(){_0x205414();});};util[_0xae71('0x17')](AGIServer,EventEmitter);module[_0xae71('0x18')]=function(_0x301b74,_0x4ea5f2,_0x4a7089){return new AGIServer(_0x301b74,_0x4ea5f2,_0x4a7089);};
\ No newline at end of file
+var _0xd512=['ready','connection','E_AGI_SERVER_ERROR','code','close','E_AGI_SERVER_CLOSE','nextTick','exports','net','events','EventEmitter','127.0.0.1','call','emit','error','E_AGI_ARGUMENT_PORT','createServer','listen','listening','getConnections','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION'];(function(_0x239f93,_0x59d5c6){var _0x449fa8=function(_0x11cef3){while(--_0x11cef3){_0x239f93['push'](_0x239f93['shift']());}};_0x449fa8(++_0x59d5c6);}(_0xd512,0x178));var _0x2d51=function(_0x524773,_0x1e1893){_0x524773=_0x524773-0x0;var _0x196e4f=_0xd512[_0x524773];return _0x196e4f;};'use strict';var util=require('util');var net=require(_0x2d51('0x0'));var EventEmitter=require(_0x2d51('0x1'))[_0x2d51('0x2')];var AGIError=require('./error');var AGIChannel=require('./channel');var AGIServer=function(_0x55bc4b,_0xad8b09,_0x18665f){var _0x4ceebd=this,_0x55bc4b=_0x55bc4b||0x11dd,_0xad8b09=_0xad8b09||_0x2d51('0x3'),_0x565045=null,_0x27658e=0x0;EventEmitter[_0x2d51('0x4')](_0x4ceebd);function _0x304b89(){if(!_0x55bc4b){_0x4ceebd[_0x2d51('0x5')](_0x2d51('0x6'),new AGIError(_0x2d51('0x7')));return![];}_0x565045=net[_0x2d51('0x8')]();_0x565045[_0x2d51('0x9')](_0x55bc4b,_0xad8b09);_0x565045['on'](_0x2d51('0xa'),function(){_0x4ceebd['emit'](_0x2d51('0xa'));});_0x565045['on']('connection',function(_0x5d883f){_0x565045[_0x2d51('0xb')](function(_0x5e12d7,_0x4e14a4){if(_0x5e12d7){_0x4ceebd[_0x2d51('0x5')]('error',new AGIError('E_AGI_SERVER_ERROR',_0x5e12d7));}else if(_0x18665f&&_0x18665f<0x0){_0x4ceebd[_0x2d51('0x5')](_0x2d51('0x6'),new AGIError(_0x2d51('0xc')));_0x5d883f[_0x2d51('0xd')]();}else if(_0x18665f&&_0x18665f>0x0&&_0x18665f<_0x4e14a4){_0x27658e+=0x1;_0x4ceebd['emit'](_0x2d51('0x6'),new AGIError(_0x2d51('0xe'),_0x27658e));_0x5d883f['destroy']();}else{var _0x476fc1=new AGIChannel(_0x5d883f);_0x476fc1['on'](_0x2d51('0xf'),function(){_0x4ceebd[_0x2d51('0x5')](_0x2d51('0x10'),_0x476fc1);});}});});_0x565045['on'](_0x2d51('0x6'),function(_0x2dbf3b){_0x4ceebd['emit'](_0x2d51('0x6'),new AGIError(_0x2d51('0x11'),_0x2dbf3b[_0x2d51('0x12')]));});_0x565045['on'](_0x2d51('0x13'),function(){_0x4ceebd[_0x2d51('0x5')]('close',new AGIError(_0x2d51('0x14')));});}process[_0x2d51('0x15')](function(){_0x304b89();});};util['inherits'](AGIServer,EventEmitter);module[_0x2d51('0x16')]=function(_0x1f5f8d,_0x4ae950,_0x1368ec){return new AGIServer(_0x1f5f8d,_0x4ae950,_0x1368ec);};
\ No newline at end of file
index ba12a26..9945cdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x742d=['Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','pause_id','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','Executed\x20command\x20%s\x20%s','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','no\x20queue\x20found','indexOf','toLowerCase','QUEUE','macro','gosub','position','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','escape_digits','restapi','no\x20url\x20configured','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','%s_STATUS_MESSAGE','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','number','sayphonetic','sayPhonetic','sendMail','no\x20mail\x20account\x20configured','account_id','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','user','subject','service','host','port','secure','authentication','pass','template_id','sendMail\x20message','sendFax','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20configured','no\x20sms\x20account\x20found','sms_text','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','START\x20CALLY\x20SQUARE','Skipped\x20Answer','subproject','project_id','no\x20subproject\x20selected','getSquareProject','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','command','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','google_cloud_tts','Trying\x20Google\x20Cloud\x20TTS\x20%s','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','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','Enter\x20in\x20SWITCH\x20(%s)\x20block','exports','path','util','lodash','shelljs','odbc','randomstring','mustache','request-promise','../../config/environment','./scripts','/var/opt/motion2/server/files','rawHeaders','rawBody','getsecretdigits','channel','mailRpc','prototype','getVariable','rpc','getVariableById','then','name','catch','getVoiceQueue','getVoiceQueueById','getSquareProjectById','getSquareOdbc','getSquareOdbcById','dsn','getUser','getTrunk','getSound','getSoundById','getSoundPath','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','getIntervalById','IntervalId','interval','map','Intervals','format','getQueryOdbc','ODBC\x20connection\x20successfully','Error\x20executing\x20query\x20%s','info','Query\x20executed\x20correctly\x20%s','error','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','label','agicommand','callerid','extension','priority','accountcode','dnid','arg_1','file','createSquareMessage','createCmContact','isEmpty','random','isNil','lastName','phone','list_id','scheduledAt','callback','Callback\x20scheduled\x20at\x20','toString','getPause','getPauseById','agentPause','agent','agentUnpause','agentLogout','agentLogin','internal','%s/%s@from-sip/n','LOCAL','shellCommand','exec','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','audioEncoding','MP3','googleTTS','google_tts_language','restAPI','url','timeout','includes','POST','toUpperCase','body','parse','headers','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','render','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusMessage','statusCode','message','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','speed','ispeechASR','ispeech_asr_language','model','awsPolly','aws_polly_voice','Amy','aws_text_type','awsLex','aws_access_key_id','aws_secret_access_key','googleASR','google_asr_language','tildeASR','clear','isString','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','hasOwnProperty','isPlainObject','length','saveRestApiResult','isArray','%s.%s','setVariable','split','replaceAll','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','isConfigured','retry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','noop','no\x20text\x20configured','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','MRCPRecog','MRCP_RECOG_CONFIDENCE','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','agi','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','no\x20list\x20selected','delay','callback_priority','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','MRCPSynth','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','RECOG_CONFIDENCE()','LUMENVOX_ASR_CONFIDENCE','RECOG_INPUT()','LUMENVOX_ASR_TRANSCRIPT','Executed\x20command\x20MRCPRecog\x20%s','sestekasr','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20database\x20selected','no\x20odbc\x20database\x20found','query','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','keys','forEach','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','no\x20user\x20selected','sip_id','SIP/%s','opts','Executed\x20command\x20%s','DIAL','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','speech','out','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','dialogflowV2','no\x20project_id\x20configured','no\x20client_email\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','DialogflowV2\x20Result\x20%s','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','password','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','unlink','SestekNDA\x20Result\x20%s','Enter\x20in\x20END\x20(%s)\x20block','end','ext_dial','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','trunk_name','SIP/%s/%s','Enter\x20in\x20FINALLY\x20(%s)\x20block','finally','getdigits','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','maxRetry','file_id','no\x20file\x20audio\x20found','response','maxdigit','test','mindigit','hiddendigitsnum','hiddendigitspos','first','substr','generate','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','GOAL\x20%s','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','aws\x20Polly\x20%s\x20file\x20created','.wav','aws\x20Polly\x20is\x20unreachable','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','aws_bot_name','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','NOBEEP','intKey','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','Enter\x20in\x20TILDEASR\x20(%s)\x20block','appid','no\x20appid\x20configured','appsecret','no\x20appsecret\x20configured','beep','recordFile','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','continueAt','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','EVAL\x20CONDITION\x20%s\x20%s','false','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','no\x20interval\x20configured','interval_id','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','true','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','ispeech\x20TTS\x20is\x20unreachable','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','operation','no\x20operation\x20configured','%s[%s]','menu','no\x20file\x20audio\x20selected'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x742d,0x66));var _0xd742=function(_0x292776,_0x54b6e5){_0x292776=_0x292776-0x0;var _0x2dee26=_0x742d[_0x292776];return _0x2dee26;};'use strict';var fs=require('fs');var path=require(_0xd742('0x0'));var util=require(_0xd742('0x1'));var _=require(_0xd742('0x2'));var sh=require(_0xd742('0x3'));var odbc=require(_0xd742('0x4'))();var rs=require(_0xd742('0x5'));var moment=require('moment');var Mustache=require(_0xd742('0x6'));var rp=require(_0xd742('0x7'));var logger=require('../../config/logger')('agi');var config=require(_0xd742('0x8'));var scripts=require(_0xd742('0x9'));var FILES_PATH=_0xd742('0xa');var recursiveMapAttributes=[_0xd742('0xb'),_0xd742('0xc')];var verticesWithRetry=['menu','getdigits',_0xd742('0xd')];var AGIVertices=function(_0x3469b5,_0x4845e2,_0x5386c1){this[_0xd742('0xe')]=_0x3469b5;this['rpc']=_0x4845e2;this[_0xd742('0xf')]=_0x5386c1;};AGIVertices[_0xd742('0x10')][_0xd742('0x11')]=function(_0x33181b,_0x1233e1){this[_0xd742('0x12')][_0xd742('0x13')](_0x33181b)[_0xd742('0x14')](function(_0x3346c9){_0x1233e1(null,_0x3346c9?_0x3346c9[_0xd742('0x15')]:![]);})[_0xd742('0x16')](function(_0x222df3){_0x1233e1(_0x222df3);});};AGIVertices[_0xd742('0x10')][_0xd742('0x17')]=function(_0xec5965,_0x5524a7){this[_0xd742('0x12')][_0xd742('0x18')](_0xec5965)[_0xd742('0x14')](function(_0x71333d){_0x5524a7(null,_0x71333d?_0x71333d[_0xd742('0x15')]:![]);})['catch'](function(_0x49313d){_0x5524a7(_0x49313d);});};AGIVertices[_0xd742('0x10')]['getSquareProject']=function(_0x5b8c4d,_0x5b67ba){this['rpc'][_0xd742('0x19')](_0x5b8c4d)[_0xd742('0x14')](function(_0x169bf2){_0x5b67ba(null,_0x169bf2?_0x169bf2[_0xd742('0x15')]:![]);})[_0xd742('0x16')](function(_0x45033c){_0x5b67ba(_0x45033c);});};AGIVertices[_0xd742('0x10')][_0xd742('0x1a')]=function(_0x12bdde,_0x1124fc){this[_0xd742('0x12')][_0xd742('0x1b')](_0x12bdde)[_0xd742('0x14')](function(_0x5ade4e){_0x1124fc(null,_0x5ade4e?_0x5ade4e[_0xd742('0x1c')]:![]);})[_0xd742('0x16')](function(_0x534181){_0x1124fc(_0x534181);});};AGIVertices['prototype'][_0xd742('0x1d')]=function(_0x3137d3,_0x1e2871){this[_0xd742('0x12')]['getUserById'](_0x3137d3)[_0xd742('0x14')](function(_0x14014c){_0x1e2871(null,_0x14014c?_0x14014c['name']:![]);})[_0xd742('0x16')](function(_0x4c220a){_0x1e2871(_0x4c220a);});};AGIVertices[_0xd742('0x10')][_0xd742('0x1e')]=function(_0x4dc3c8,_0x33579e){this[_0xd742('0x12')]['getTrunkById'](_0x4dc3c8)[_0xd742('0x14')](function(_0x2581e9){_0x33579e(null,_0x2581e9?_0x2581e9[_0xd742('0x15')]:![]);})[_0xd742('0x16')](function(_0x35f212){_0x33579e(_0x35f212);});};AGIVertices[_0xd742('0x10')][_0xd742('0x1f')]=function(_0x3f6327,_0x495647){var _0x3e7d1e=this;this[_0xd742('0x12')][_0xd742('0x20')](_0x3f6327)['then'](function(_0x20421b){_0x495647(null,_0x20421b?_0x3e7d1e[_0xd742('0x21')](_0x20421b[_0xd742('0x22')]):![]);})['catch'](function(_0x50754b){_0x495647(_0x50754b);});};AGIVertices['prototype'][_0xd742('0x23')]=function(_0x435998,_0x562c28){this[_0xd742('0x12')][_0xd742('0x24')](_0x435998)[_0xd742('0x14')](function(_0x347543){_0x562c28(null,_0x347543?_0x347543:![]);})[_0xd742('0x16')](function(_0x43ca2e){_0x562c28(_0x43ca2e);});};AGIVertices[_0xd742('0x10')][_0xd742('0x25')]=function(_0x12ea73,_0x568fc9,_0x5b88e2){this[_0xd742('0xf')]['sendMailMessage'](_0x12ea73,_0x568fc9)[_0xd742('0x14')](function(){_0x5b88e2(null);})[_0xd742('0x16')](function(_0x254de0){_0x5b88e2(_0x254de0);});};AGIVertices[_0xd742('0x10')][_0xd742('0x26')]=function(_0x4c114f,_0x5becc8){this[_0xd742('0x12')][_0xd742('0x27')](_0x4c114f)[_0xd742('0x14')](function(_0x46a9ab){if(_0x46a9ab){if(_0x46a9ab[_0xd742('0x28')]){_0x5becc8(null,[_0x46a9ab[_0xd742('0x29')]]);}else{_0x5becc8(null,_[_0xd742('0x2a')](_0x46a9ab[_0xd742('0x2b')],_0xd742('0x29')));}}else{_0x5becc8(null,![]);}})[_0xd742('0x16')](function(_0x1e3b1e){_0x5becc8(_0x1e3b1e);});};AGIVertices[_0xd742('0x10')]['getSoundPath']=function(_0x1f5e55){return util[_0xd742('0x2c')]('%s/sounds/converted/%s',FILES_PATH,_0x1f5e55);};AGIVertices[_0xd742('0x10')][_0xd742('0x2d')]=function(_0x5b7c98,_0x204fed,_0x51acf8){odbc['open'](_0x5b7c98,function(_0x59d0fd){if(_0x59d0fd){logger['error']('Error\x20getting\x20ODBC\x20connection\x20%s',_0x59d0fd);_0x51acf8(_0x59d0fd);}else{logger['info'](_0xd742('0x2e'));odbc['query'](_0x204fed,function(_0x445ff4,_0x5747dc){if(_0x445ff4){logger['info'](_0xd742('0x2f'),_0x204fed);_0x51acf8(_0x445ff4);}else{logger[_0xd742('0x30')](_0xd742('0x31'),_0x204fed);odbc['close'](function(_0x3e258a){if(_0x3e258a){logger[_0xd742('0x32')](_0xd742('0x33'),_0x3e258a);}_0x51acf8(null,_0x5747dc);});}});}});};AGIVertices[_0xd742('0x10')][_0xd742('0x34')]=function(_0x1daa5f,_0xfd3532){this[_0xd742('0x12')][_0xd742('0x35')](_0x1daa5f)[_0xd742('0x14')](function(_0xf62dab){_0xfd3532(null,_0xf62dab?_0xf62dab:![]);})[_0xd742('0x16')](function(_0x5ab3d7){_0xfd3532(_0x5ab3d7);});};AGIVertices[_0xd742('0x10')][_0xd742('0x36')]=function(_0x3b2c9a,_0x4ada93){this[_0xd742('0x12')][_0xd742('0x36')](_0x3b2c9a)[_0xd742('0x14')](function(_0x1f8d46){_0x4ada93(null,_0x1f8d46);})[_0xd742('0x16')](function(_0x4afd0e){_0x4ada93(_0x4afd0e);});};AGIVertices['prototype'][_0xd742('0x37')]=function(_0xcbd4bc,_0xef7682,_0x10b986){this[_0xd742('0x12')][_0xd742('0x37')]({'uniqueid':this[_0xd742('0xe')][_0xd742('0x38')],'node':_0xcbd4bc[_0xd742('0x39')],'application':_0xcbd4bc[_0xd742('0x3a')],'data':_0xef7682||null,'project_name':this[_0xd742('0xe')]['arg_1'],'callerid':this['channel'][_0xd742('0x3b')]})[_0xd742('0x14')](function(_0x3b9222){if(_0x10b986){_0x10b986(null,_0x3b9222);}})[_0xd742('0x16')](function(_0x453485){if(_0x10b986){_0x10b986(_0x453485);}});};AGIVertices[_0xd742('0x10')]['createSquareRecording']=function(_0x2a37cc,_0x280e3e,_0x3f65df,_0x321073){this[_0xd742('0x12')]['createSquareRecording']({'uniqueid':this[_0xd742('0xe')][_0xd742('0x38')],'callerid':this[_0xd742('0xe')][_0xd742('0x3b')],'calleridname':this['channel']['calleridname'],'context':this['channel']['context'],'extension':this[_0xd742('0xe')][_0xd742('0x3c')],'priority':this['channel'][_0xd742('0x3d')],'accountcode':this[_0xd742('0xe')][_0xd742('0x3e')],'dnid':this[_0xd742('0xe')][_0xd742('0x3f')],'projectName':this[_0xd742('0xe')][_0xd742('0x40')],'saveName':_0x280e3e,'filename':_0x2a37cc[_0xd742('0x41')]||_0x280e3e,'savePath':_0x3f65df})['then'](function(_0x402bfa){_0x321073(null,_0x402bfa);})[_0xd742('0x16')](function(_0x53d97a){_0x321073(_0x53d97a);});};AGIVertices[_0xd742('0x10')][_0xd742('0x42')]=function(_0x331493,_0x1b5b77,_0x261b9a,_0x1782a6,_0x76f2e7){this[_0xd742('0x12')][_0xd742('0x42')]({'uniqueid':this['channel'][_0xd742('0x38')],'body':_0x331493,'direction':_0x1b5b77,'providerName':_0x261b9a,'providerResponse':_0x1782a6})[_0xd742('0x14')](function(_0x322957){if(_0x76f2e7){_0x76f2e7(null,_0x322957);}})[_0xd742('0x16')](function(_0x46bbc7){if(_0x76f2e7){_0x76f2e7(_0x46bbc7);}});};AGIVertices[_0xd742('0x10')][_0xd742('0x43')]=function(_0xe1a0ed,_0xf7c5a){this[_0xd742('0x12')][_0xd742('0x43')]({'firstName':_[_0xd742('0x44')](_0xe1a0ed[_0xd742('0x15')])||_['isNil'](_0xe1a0ed['name'])?'callback_'+Math[_0xd742('0x45')]():_0xe1a0ed[_0xd742('0x15')],'lastName':_['isEmpty'](_0xe1a0ed['lastName'])||_[_0xd742('0x46')](_0xe1a0ed[_0xd742('0x47')])?null:_0xe1a0ed[_0xd742('0x47')],'phone':_0xe1a0ed[_0xd742('0x48')],'ListId':_0xe1a0ed[_0xd742('0x49')],'scheduledat':_0xe1a0ed[_0xd742('0x4a')],'callbackUniqueid':this[_0xd742('0xe')]['uniqueid'],'tags':_0xd742('0x4b'),'description':_0xd742('0x4c')+_0xe1a0ed[_0xd742('0x4a')][_0xd742('0x4d')](),'priority':_0xe1a0ed['callback_priority']})[_0xd742('0x14')](function(_0x3d020f){_0xf7c5a(null,_0x3d020f);})[_0xd742('0x16')](function(_0x4e2b8a){_0xf7c5a(_0x4e2b8a);});};AGIVertices[_0xd742('0x10')][_0xd742('0x4e')]=function(_0x3da108,_0x2cf15b){this[_0xd742('0x12')][_0xd742('0x4f')](_0x3da108)[_0xd742('0x14')](function(_0x5e77ce){_0x2cf15b(null,_0x5e77ce?_0x5e77ce[_0xd742('0x15')]:![]);})[_0xd742('0x16')](function(_0x52520e){_0x2cf15b(_0x52520e);});};AGIVertices[_0xd742('0x10')][_0xd742('0x50')]=function(_0x3a5e9c,_0x216455,_0x4c72b3){var _0x51186d={'role':_0xd742('0x51')};_0x51186d[_0x3a5e9c]=this[_0xd742('0xe')][_0xd742('0x3b')];this[_0xd742('0x12')]['agentPause'](_0x51186d,_0x216455,this[_0xd742('0xe')][_0xd742('0x38')])[_0xd742('0x14')](function(_0x3c3207){_0x4c72b3(null,_[_0xd742('0x46')](_0x3c3207)?![]:!![]);})[_0xd742('0x16')](function(_0xbe898f){logger[_0xd742('0x32')](_0xbe898f);_0x4c72b3(null,![]);});};AGIVertices[_0xd742('0x10')][_0xd742('0x52')]=function(_0x1f397d,_0x1827b6){var _0x38554e={'role':_0xd742('0x51')};_0x38554e[_0x1f397d]=this[_0xd742('0xe')][_0xd742('0x3b')];this[_0xd742('0x12')]['agentUnpause'](_0x38554e)[_0xd742('0x14')](function(_0x3ae5c1){_0x1827b6(null,_['isNil'](_0x3ae5c1)?![]:!![]);})[_0xd742('0x16')](function(_0x54c69e){logger['error'](_0x54c69e);_0x1827b6(null,![]);});};AGIVertices['prototype']['agentLogout']=function(_0x4dbbab,_0x74c1b9){var _0x554960={'role':'agent'};_0x554960[_0x4dbbab]=this[_0xd742('0xe')][_0xd742('0x3b')];this[_0xd742('0x12')][_0xd742('0x53')](_0x554960)['then'](function(_0x3cfc47){_0x74c1b9(null,_[_0xd742('0x46')](_0x3cfc47)?![]:!![]);})[_0xd742('0x16')](function(_0x2da403){logger['error'](_0x2da403);_0x74c1b9(null,![]);});};AGIVertices[_0xd742('0x10')][_0xd742('0x54')]=function(_0x22af8d,_0x9ceed7){var _0x551c41={'role':_0xd742('0x51')};_0x551c41[_0x22af8d]=this[_0xd742('0xe')][_0xd742('0x3b')];var _0x3389bf=_0x22af8d!=_0xd742('0x55')?util['format'](_0xd742('0x56'),_0xd742('0x57'),this['channel'][_0xd742('0x3b')]):undefined;this['rpc'][_0xd742('0x54')](_0x551c41,_0x3389bf)['then'](function(_0x78b7e2){_0x9ceed7(null,_[_0xd742('0x46')](_0x78b7e2)?![]:!![]);})[_0xd742('0x16')](function(_0xd09daa){logger[_0xd742('0x32')](_0xd09daa);_0x9ceed7(null,![]);});};AGIVertices[_0xd742('0x10')][_0xd742('0x58')]=function(_0x1f773f,_0x2ef5aa){sh[_0xd742('0x59')](_['trim'](_0x1f773f),function(_0x386d8e,_0x207696){var _0x3ae3b4=_0x207696[_0xd742('0x5a')](/(\r\n|\n|\r)/gm,'');_0x2ef5aa(null,_0x3ae3b4);});};AGIVertices['prototype'][_0xd742('0x5b')]=function(_0x4d6a8e,_0x393c51){scripts[_0xd742('0x5b')](_0x4d6a8e[_0xd742('0x5c')],_0x4d6a8e[_0xd742('0x5d')]||_0xd742('0x5e'),_0x4d6a8e[_0xd742('0x5e')],_0x4d6a8e[_0xd742('0x5f')]||_0xd742('0x60'),_0x4d6a8e[_0xd742('0x61')]||'MALE',_0x4d6a8e[_0xd742('0x62')]||_0xd742('0x63'))[_0xd742('0x14')](function(_0x13621d){_0x393c51(null,_0x13621d);})['catch'](function(_0x8c25ca){_0x393c51(_0x8c25ca);});};AGIVertices[_0xd742('0x10')]['googleTTS']=function(_0x37cb3a,_0x1529b6){scripts[_0xd742('0x64')](_0x37cb3a[_0xd742('0x5e')],_0x37cb3a[_0xd742('0x65')]||'en',0x1)[_0xd742('0x14')](function(_0x4c065f){_0x1529b6(null,_0x4c065f);})[_0xd742('0x16')](function(_0x3eb557){_0x1529b6(_0x3eb557);});};AGIVertices[_0xd742('0x10')][_0xd742('0x66')]=function(_0x5c992c,_0x2eb568){var _0x413cba={'uri':_0x5c992c[_0xd742('0x67')],'method':_0x5c992c['method'],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x5c992c[_0xd742('0x68')])==='number'&&parseInt(_0x5c992c[_0xd742('0x68')])>=0x1?parseInt(_0x5c992c[_0xd742('0x68')])*0x3e8:0x5*0x3e8};if(_[_0xd742('0x69')]([_0xd742('0x6a'),'PUT'],_0x413cba['method'][_0xd742('0x6b')]())){try{_0x413cba[_0xd742('0x6c')]=_0x5c992c[_0xd742('0xc')]?JSON[_0xd742('0x6d')](_0x5c992c[_0xd742('0xc')]):{};}catch(_0x22101e){logger['error']('An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function',_0x22101e);}}try{_0x413cba[_0xd742('0x6e')]=_0x5c992c['rawHeaders']?JSON['parse'](_0x5c992c[_0xd742('0xb')]):{};}catch(_0x4fc24a){logger[_0xd742('0x32')](_0xd742('0x6f'),_0x4fc24a);}if(_0x5c992c[_0xd742('0x70')]){try{var _0xf5b266=require(_0x5c992c['computedVariables'])[_0xd742('0x71')](this,_0x413cba);_0x413cba[_0xd742('0x72')]=Mustache['render'](_0x5c992c[_0xd742('0x67')],_0xf5b266,{},['$$','$$']);if(_0x413cba[_0xd742('0x6e')]){_0x413cba['headers']=JSON['parse'](Mustache[_0xd742('0x73')](JSON[_0xd742('0x74')](_0x413cba[_0xd742('0x6e')]),_0xf5b266,{},['$$','$$']));}if(_0x413cba[_0xd742('0x6c')]){_0x413cba['body']=JSON[_0xd742('0x6d')](Mustache['render'](JSON[_0xd742('0x74')](_0x413cba[_0xd742('0x6c')]),_0xf5b266,{},['$$','$$']));}}catch(_0x4cd5c4){logger[_0xd742('0x32')](_0xd742('0x75'),_0x4cd5c4);}}rp(_0x413cba)['then'](function(_0x55dffe){var _0x2e0fb5={'statusCode':_0x55dffe['statusCode']||0xc8,'statusMessage':_0x55dffe[_0xd742('0x76')]||'OK','headers':_0x55dffe['headers']||{},'body':_0x55dffe[_0xd742('0x6c')]||{}};_0x2eb568(null,_0x2e0fb5);})[_0xd742('0x16')](function(_0x5234ed){var _0x837d58={'statusCode':_0x5234ed[_0xd742('0x77')]||0x1f4,'statusMessage':_0x5234ed[_0xd742('0x78')]||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x5234ed[_0xd742('0x79')]['headers']||{},'body':_0x5234ed[_0xd742('0x79')][_0xd742('0x6c')]||{}};_0x2eb568(null,_0x837d58);});};AGIVertices[_0xd742('0x10')][_0xd742('0x7a')]=function(_0x52ef26,_0x5cad45){scripts[_0xd742('0x7a')](this[_0xd742('0xe')]['uniqueid'],_0x52ef26[_0xd742('0x7b')],_0x52ef26[_0xd742('0x5e')],_0x52ef26[_0xd742('0x7c')]||'en')[_0xd742('0x14')](function(_0x15fff6){_0x5cad45(null,_0x15fff6);})[_0xd742('0x16')](function(_0xd97a37){_0x5cad45(_0xd97a37);});};AGIVertices['prototype'][_0xd742('0x7d')]=function(_0x56f032,_0x588af9){scripts[_0xd742('0x7d')](this[_0xd742('0xe')]['uniqueid'],_0x56f032[_0xd742('0x7e')],_0x56f032[_0xd742('0x7f')],_0x56f032[_0xd742('0x80')],_0x56f032[_0xd742('0x5e')],_0x56f032[_0xd742('0x81')]||'en')[_0xd742('0x14')](function(_0x242efe){_0x588af9(null,_0x242efe);})[_0xd742('0x16')](function(_0x971430){_0x588af9(_0x971430);});};AGIVertices[_0xd742('0x10')]['sestekNDA']=function(_0x432db2,_0x1140de){scripts[_0xd742('0x82')](this[_0xd742('0xe')],_0x432db2)[_0xd742('0x14')](function(_0x51f599){_0x1140de(null,_0x51f599);})[_0xd742('0x16')](function(_0x5d1522){_0x1140de(_0x5d1522);});};AGIVertices[_0xd742('0x10')][_0xd742('0x83')]=function(_0x5ceac5,_0x304b3c){scripts[_0xd742('0x83')](_0x5ceac5[_0xd742('0x7b')],_0x5ceac5['text'],_0x5ceac5[_0xd742('0x84')]||_0xd742('0x60'),_0x5ceac5[_0xd742('0x85')])[_0xd742('0x14')](function(_0x13d065){_0x304b3c(null,_0x13d065);})[_0xd742('0x16')](function(_0x1e18b9){_0x304b3c(_0x1e18b9);});};AGIVertices[_0xd742('0x10')][_0xd742('0x86')]=function(_0x10c9bd,_0x4f08b0,_0x434dfe){scripts['ispeechASR'](_0x4f08b0,_0x10c9bd[_0xd742('0x7b')],_0x10c9bd[_0xd742('0x87')]||'en-US',this['isConfigured'](_0x10c9bd['model'])?_0x10c9bd[_0xd742('0x88')]:undefined)[_0xd742('0x14')](function(_0x4ca73f){_0x434dfe(null,_0x4ca73f);})['catch'](function(_0x2685b3){_0x434dfe(_0x2685b3);});};AGIVertices[_0xd742('0x10')][_0xd742('0x89')]=function(_0x2f8250,_0x50fa9a){scripts[_0xd742('0x89')](_0x2f8250['aws_access_key_id'],_0x2f8250['aws_secret_access_key'],_0x2f8250['aws_polly_region'],_0x2f8250[_0xd742('0x8a')]||_0xd742('0x8b'),_0x2f8250[_0xd742('0x5e')],_0x2f8250[_0xd742('0x8c')]||'text')[_0xd742('0x14')](function(_0x2a2232){_0x50fa9a(null,_0x2a2232);})[_0xd742('0x16')](function(_0x3b8d84){_0x50fa9a(_0x3b8d84);});};AGIVertices[_0xd742('0x10')]['awsLex']=function(_0x22553d,_0x6f144f){scripts[_0xd742('0x8d')](this[_0xd742('0xe')][_0xd742('0x38')],_0x22553d[_0xd742('0x8e')],_0x22553d[_0xd742('0x8f')],_0x22553d['aws_lex_region'],_0x22553d[_0xd742('0x5e')],_0x22553d['aws_bot_name'])[_0xd742('0x14')](function(_0x21a303){_0x6f144f(null,_0x21a303);})[_0xd742('0x16')](function(_0x1d8211){_0x6f144f(_0x1d8211);});};AGIVertices[_0xd742('0x10')]['googleASR']=function(_0x3d6a45,_0x90b457,_0x30aa1a){scripts[_0xd742('0x90')](_0x90b457,_0x3d6a45['key'],_0x3d6a45[_0xd742('0x91')]||_0xd742('0x60'))[_0xd742('0x14')](function(_0x384281){_0x30aa1a(null,_0x384281);})[_0xd742('0x16')](function(_0x393b21){_0x30aa1a(_0x393b21);});};AGIVertices[_0xd742('0x10')][_0xd742('0x92')]=function(_0x58ba6e,_0x335d7d,_0x523eef){scripts['tildeASR'](_0x335d7d,_0x58ba6e['appid'],_0x58ba6e['appsecret'],_0x58ba6e[_0xd742('0x72')])['then'](function(_0x15dd2b){_0x523eef(null,_0x15dd2b);})[_0xd742('0x16')](function(_0x57c7ae){_0x523eef(_0x57c7ae);});};AGIVertices[_0xd742('0x10')][_0xd742('0x93')]=function(_0x9e691){var _0x1b0c68=_['includes'](verticesWithRetry,_0x9e691['agicommand'])?_0x9e691:_['clone'](_0x9e691);for(var _0x3e977d in _0x1b0c68){if(_0x1b0c68['hasOwnProperty'](_0x3e977d)){if(_0x1b0c68[_0x3e977d]&&_[_0xd742('0x94')](_0x1b0c68[_0x3e977d])){if(_[_0xd742('0x69')](recursiveMapAttributes,_0x3e977d)){_0x1b0c68[_0x3e977d]=this[_0xd742('0x95')](_0x1b0c68[_0x3e977d]);}else{_0x1b0c68[_0x3e977d]=this[_0xd742('0x96')](_0x1b0c68[_0x3e977d]);}}}}return _0x1b0c68;};AGIVertices[_0xd742('0x10')][_0xd742('0x97')]=function(_0x3f5a77){for(var _0x4bac27 in _0x3f5a77){if(_0x3f5a77[_0xd742('0x98')](_0x4bac27)){if(_[_0xd742('0x99')](_0x3f5a77[_0x4bac27])){this['recursiveNodeIndex'](_0x3f5a77[_0x4bac27]);}else if(_['isArray'](_0x3f5a77[_0x4bac27])){for(var _0x5772ce=0x0;_0x5772ce<_0x3f5a77[_0x4bac27][_0xd742('0x9a')];_0x5772ce++){this[_0xd742('0x97')](_0x3f5a77[_0x4bac27][_0x5772ce]);}}else if(_['isString'](_0x3f5a77[_0x4bac27])){_0x3f5a77[_0x4bac27]=this['replaceAllVariables'](_0x3f5a77[_0x4bac27]);}}}};AGIVertices['prototype'][_0xd742('0x9b')]=function(_0x31851b,_0x69f671){for(var _0x1078e9 in _0x31851b){if(_0x31851b['hasOwnProperty'](_0x1078e9)){if(_['isPlainObject'](_0x31851b[_0x1078e9])){if(!_[_0xd742('0x44')](_0x31851b[_0x1078e9])){this[_0xd742('0x9b')](_0x31851b[_0x1078e9],util['format']('%s.%s',_0x69f671,_0x1078e9));}}else if(_[_0xd742('0x9c')](_0x31851b[_0x1078e9])){for(var _0x7dd90a=0x0;_0x7dd90a<_0x31851b[_0x1078e9][_0xd742('0x9a')];_0x7dd90a++){this[_0xd742('0x9b')](_0x31851b[_0x1078e9][_0x7dd90a],util[_0xd742('0x2c')](_0xd742('0x9d'),_0x69f671,_0x1078e9+'['+_0x7dd90a+']'));}}else{if(!_[_0xd742('0x46')](_0x31851b[_0x1078e9])){this[_0xd742('0xe')][_0xd742('0x9e')](util[_0xd742('0x2c')](_0xd742('0x9d'),_0x69f671,_0x1078e9),_0x31851b[_0x1078e9]);}}}}};AGIVertices[_0xd742('0x10')][_0xd742('0x95')]=function(_0x5bfc42){try{var _0x17b262=JSON['parse'](_0x5bfc42);this['recursiveNodeIndex'](_0x17b262);return JSON[_0xd742('0x74')](_0x17b262);}catch(_0x256534){return this[_0xd742('0x96')](_0x5bfc42);}};AGIVertices[_0xd742('0x10')][_0xd742('0x96')]=function(_0x381de5){var _0x3c5ba7=_0x381de5[_0xd742('0x9f')]('{');for(var _0x4eef5b=0x1;_0x4eef5b<_0x3c5ba7[_0xd742('0x9a')];_0x4eef5b+=0x1){var _0x4e54c2=_0x3c5ba7[_0x4eef5b]['split']('}');if(_0x4e54c2[_0xd742('0x9a')]>0x1){_0x381de5=_0x381de5[_0xd742('0xa0')]('{'+_0x4e54c2[0x0]+'}',this[_0xd742('0xe')][_0xd742('0x11')](_0x4e54c2[0x0])[_0xd742('0xa1')]||_0x4e54c2[0x0]);}}if(_0x3c5ba7['length']===0x1){return _0x381de5[_0xd742('0x4d')]();}return this['replaceAllVariables'](_0x381de5);};AGIVertices['prototype'][_0xd742('0xa2')]=function(_0x5abeb4,_0x25c5b1){var _0x2b0676=this[_0xd742('0xe')]['getVariable'](_0x5abeb4);if(_0x2b0676[_0xd742('0xa3')]===-0x1){return _0x2b0676;}logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0xa4'),_0x25c5b1,_0x2b0676['extra']));return this[_0xd742('0xe')][_0xd742('0x9e')](_0x25c5b1,_0x2b0676[_0xd742('0xa1')]);};AGIVertices[_0xd742('0x10')][_0xd742('0xa5')]=function(_0x47f2df){return _0x47f2df&&_0x47f2df!=='0'&&_0x47f2df!=='-1'&&_0x47f2df!=='';};AGIVertices[_0xd742('0x10')]['maxRetry']=function(_0x499986){this['createSquareDetailsReport'][_0xd742('0x71')](this,_0x499986,'-');_0x499986[_0xd742('0xa6')]=_0x499986['maxRetry'];return{'code':0xc8,'result':'-'};};AGIVertices[_0xd742('0x10')][_0xd742('0xa7')]=function(_0x578e6c){logger['info'](util['format'](_0xd742('0xa8'),_0x578e6c[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x578e6c[_0xd742('0x5e')])){return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0xaa'));}var _0x3f2e2f='\x22'+_0x578e6c['text']+'\x22';if(this[_0xd742('0xa5')](_0x578e6c[_0xd742('0x79')])){_0x3f2e2f+=','+_0x578e6c['options'];}var _0x490415=this[_0xd742('0xe')][_0xd742('0x59')]('MRCPSynth',_0x3f2e2f);if(_0x490415[_0xd742('0xa3')]===-0x1){return _0x490415;}return this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0xab'),_0x3f2e2f));};AGIVertices[_0xd742('0x10')][_0xd742('0xac')]=function(_0x47a989){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0xad'),_0x47a989[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x47a989[_0xd742('0xae')])){return this[_0xd742('0xe')]['noop'](_0xd742('0xaf'));}var _0x5348bb=_0x47a989[_0xd742('0xae')];if(this[_0xd742('0xa5')](_0x47a989[_0xd742('0x79')])){_0x5348bb+=','+_0x47a989['options'];}var _0x55e229=this['channel']['exec'](_0xd742('0xb0'),_0x5348bb);if(_0x55e229[_0xd742('0xa3')]===-0x1){return _0x55e229;}var _0x58b91c=this['getAndSetVariable']('RECOG_CONFIDENCE()',_0xd742('0xb1'));if(_0x58b91c[_0xd742('0xa3')]===-0x1){return _0x58b91c;}var _0x321839=this['getAndSetVariable']('RECOG_INPUT()',_0xd742('0xb2'));if(_0x321839['result']===-0x1){return _0x321839;}var _0x2b1bde=this[_0xd742('0xa2')](_0xd742('0xb3'),_0xd742('0xb4'));if(_0x2b1bde[_0xd742('0xa3')]===-0x1){return _0x2b1bde;}return this['channel'][_0xd742('0xa9')](util[_0xd742('0x2c')]('Executed\x20command\x20MRCPRecog\x20%s',_0x5348bb));};AGIVertices[_0xd742('0x10')]['agi']=function(_0x592022){logger[_0xd742('0x30')](util[_0xd742('0x2c')]('Enter\x20in\x20AGI\x20(%s)\x20block',_0x592022[_0xd742('0x39')]));return this[_0xd742('0xe')][_0xd742('0xb5')]([_0x592022['command'],_0x592022['args']]);};AGIVertices[_0xd742('0x10')][_0xd742('0xb6')]=function(_0x231a85){logger['info'](util['format'](_0xd742('0xb7'),_0x231a85['label']));if(this[_0xd742('0xa5')](_0x231a85[_0xd742('0x68')])){logger[_0xd742('0x30')](util['format'](_0xd742('0xb8'),_0x231a85[_0xd742('0x68')]));var _0x4c4bc7=this[_0xd742('0xe')][_0xd742('0xb9')](_0x231a85[_0xd742('0x68')]);if(_0x4c4bc7[_0xd742('0xa3')]===-0x1){return _0x4c4bc7;}}return this[_0xd742('0xe')][_0xd742('0xb6')]();};AGIVertices[_0xd742('0x10')]['callback']=function(_0x529ac5){logger[_0xd742('0x30')](util[_0xd742('0x2c')]('Enter\x20in\x20CALLBACK\x20(%s)\x20block',_0x529ac5[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x529ac5[_0xd742('0x49')])){return this[_0xd742('0xe')][_0xd742('0x32')](_0x529ac5,_0xd742('0xba'));}_0x529ac5[_0xd742('0x4a')]=moment();if(this['isConfigured'](_0x529ac5[_0xd742('0xbb')])){_0x529ac5[_0xd742('0x4a')]=moment()['add'](_0x529ac5[_0xd742('0xbb')],'minutes');}if(!this[_0xd742('0xa5')](_0x529ac5[_0xd742('0xbc')])){_0x529ac5[_0xd742('0xbc')]=0x2;}this[_0xd742('0x43')]['sync'](this,_0x529ac5);return this['channel']['noop'](util[_0xd742('0x2c')](_0xd742('0xbd'),_0x529ac5['phone'],_0x529ac5[_0xd742('0x49')],_0x529ac5[_0xd742('0x4a')]));};AGIVertices[_0xd742('0x10')][_0xd742('0xbe')]=function(_0x48e417){logger[_0xd742('0x30')](util['format'](_0xd742('0xbf'),_0x48e417[_0xd742('0x39')]));var _0x5d48d6=this['channel'][_0xd742('0x59')](_0x48e417[_0xd742('0xc0')],_0x48e417[_0xd742('0x79')]);if(_0x5d48d6[_0xd742('0xa3')]===-0x1){return _0x5d48d6;}return this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')]('Executed\x20command\x20%s\x20%s',_0x48e417['application'],_0x48e417['options']));};AGIVertices[_0xd742('0x10')][_0xd742('0xc1')]=function(_0x1e03cf){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0xc2'),_0x1e03cf['label']));if(!this[_0xd742('0xa5')](_0x1e03cf[_0xd742('0x5e')])){return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0xaa'));}var _0x4e639c='\x22'+_0x1e03cf['text']+'\x22';if(this[_0xd742('0xa5')](_0x1e03cf[_0xd742('0x79')])){_0x4e639c+=','+_0x1e03cf[_0xd742('0x79')];}var _0x5955a3=this[_0xd742('0xe')][_0xd742('0x59')](_0xd742('0xc3'),_0x4e639c);if(_0x5955a3[_0xd742('0xa3')]===-0x1){return _0x5955a3;}return this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0xab'),_0x4e639c));};AGIVertices['prototype'][_0xd742('0xc4')]=function(_0x313024){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0xc5'),_0x313024[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x313024[_0xd742('0x5e')])){return this[_0xd742('0xe')]['noop'](_0xd742('0xaa'));}var _0x196711='\x22'+_0x313024[_0xd742('0x5e')]+'\x22';if(this['isConfigured'](_0x313024[_0xd742('0x79')])){_0x196711+=','+_0x313024['options'];}var _0x251d09=this[_0xd742('0xe')][_0xd742('0x59')]('MRCPSynth',_0x196711);if(_0x251d09[_0xd742('0xa3')]===-0x1){return _0x251d09;}return this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0xab'),_0x196711));};AGIVertices[_0xd742('0x10')][_0xd742('0xc6')]=function(_0x282da8){logger['info'](util[_0xd742('0x2c')](_0xd742('0xc7'),_0x282da8[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x282da8[_0xd742('0xae')])){return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0xaf'));}var _0x28a5e8=_0x282da8[_0xd742('0xae')];if(this[_0xd742('0xa5')](_0x282da8[_0xd742('0x79')])){_0x28a5e8+=','+_0x282da8[_0xd742('0x79')];}var _0x57ff65=this[_0xd742('0xe')]['exec'](_0xd742('0xb0'),_0x28a5e8);if(_0x57ff65[_0xd742('0xa3')]===-0x1){return _0x57ff65;}var _0x4ce303=this[_0xd742('0xa2')](_0xd742('0xc8'),_0xd742('0xc9'));if(_0x4ce303[_0xd742('0xa3')]===-0x1){return _0x4ce303;}var _0x318cfb=this[_0xd742('0xa2')](_0xd742('0xca'),_0xd742('0xcb'));if(_0x318cfb[_0xd742('0xa3')]===-0x1){return _0x318cfb;}var _0x385898=this[_0xd742('0xa2')](_0xd742('0xb3'),'LUMENVOX_ASR_INSTANCE');if(_0x385898[_0xd742('0xa3')]===-0x1){return _0x385898;}return this[_0xd742('0xe')][_0xd742('0xa9')](util['format'](_0xd742('0xcc'),_0x28a5e8));};AGIVertices['prototype'][_0xd742('0xcd')]=function(_0x4132b9){logger[_0xd742('0x30')](util[_0xd742('0x2c')]('Enter\x20in\x20SESTEKASR\x20(%s)\x20block',_0x4132b9[_0xd742('0x39')]));if(!this['isConfigured'](_0x4132b9[_0xd742('0xae')])){return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0xaf'));}var _0x5d2e57=_0x4132b9[_0xd742('0xae')];if(this['isConfigured'](_0x4132b9['options'])){_0x5d2e57+=','+_0x4132b9[_0xd742('0x79')];}var _0x5429f8=this[_0xd742('0xe')][_0xd742('0x59')](_0xd742('0xb0'),_0x5d2e57);if(_0x5429f8['result']===-0x1){return _0x5429f8;}var _0x15a12a=this[_0xd742('0xa2')](_0xd742('0xc8'),_0xd742('0xce'));if(_0x15a12a[_0xd742('0xa3')]===-0x1){return _0x15a12a;}var _0x2f686b=this[_0xd742('0xa2')]('RECOG_INPUT()',_0xd742('0xcf'));if(_0x2f686b[_0xd742('0xa3')]===-0x1){return _0x2f686b;}var _0x2eefd8=this[_0xd742('0xa2')](_0xd742('0xb3'),_0xd742('0xd0'));if(_0x2eefd8[_0xd742('0xa3')]===-0x1){return _0x2eefd8;}return this['channel'][_0xd742('0xa9')](util[_0xd742('0x2c')]('Executed\x20command\x20MRCPRecog\x20%s',_0x5d2e57));};AGIVertices['prototype'][_0xd742('0xd1')]=function(_0x36ee54){logger[_0xd742('0x30')](util['format'](_0xd742('0xd2'),_0x36ee54['label']));if(!this[_0xd742('0xa5')](_0x36ee54[_0xd742('0xd3')])){return this[_0xd742('0xe')]['error'](_0x36ee54,_0xd742('0xd4'));}var _0x4e7568=this[_0xd742('0x1a')][_0xd742('0x71')](this,_0x36ee54['odbc_id']);if(!_0x4e7568){return this[_0xd742('0xe')][_0xd742('0x32')](_0x36ee54,_0xd742('0xd5'));}if(!this['isConfigured'](_0x36ee54[_0xd742('0xd6')])){return this[_0xd742('0xe')][_0xd742('0x32')](_0x36ee54,'no\x20query\x20configured');}var _0x3b6558=_0x36ee54[_0xd742('0xd6')][_0xd742('0x5a')](/(\r\n|\n|\r)/gm,'\x20');this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')]('query:\x20%s',_0x3b6558));var _0x41b082=this[_0xd742('0x2d')][_0xd742('0x71')](this,_0x4e7568,_0x3b6558);this['createSquareDetailsReport'][_0xd742('0x71')](this,_0x36ee54,_0x3b6558);if(!this[_0xd742('0xa5')](_0x36ee54[_0xd742('0xd7')])){return this['channel']['noop'](_0xd742('0xd8'));}var _0x1a4d3e=this['getVariable'][_0xd742('0x71')](this,_0x36ee54[_0xd742('0xd7')]);if(!_0x1a4d3e){return this['channel'][_0xd742('0x32')](_0x36ee54,_0xd742('0xd9'));}var _0x41d293=this;_0x41b082['forEach'](function(_0x146be7,_0x250c17){Object[_0xd742('0xda')](_0x146be7)[_0xd742('0xdb')](function(_0x1dd5e4){_0x41d293[_0xd742('0xe')][_0xd742('0x9e')](util[_0xd742('0x2c')](_0xd742('0xdc'),_0x1a4d3e,_0x250c17,_0x1dd5e4),_0x146be7[_0x1dd5e4]);});});this[_0xd742('0xe')]['setVariable'](util[_0xd742('0x2c')](_0xd742('0xdd'),_0x1a4d3e),_0x41b082[_0xd742('0x9a')]);return this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0xde'),_0x1a4d3e));};AGIVertices['prototype'][_0xd742('0xdf')]=function(_0xde548c){logger[_0xd742('0xe0')](util[_0xd742('0x2c')](_0xd742('0xe1'),_0xde548c['label']));if(!this[_0xd742('0xa5')](_0xde548c['sip_id'])){return this[_0xd742('0xe')][_0xd742('0x32')](_0xde548c,_0xd742('0xe2'));}var _0x2cd763=this[_0xd742('0x1d')]['sync'](this,_0xde548c[_0xd742('0xe3')]);if(!_0x2cd763){return this[_0xd742('0xe')][_0xd742('0x32')](_0xde548c,'no\x20user\x20found');}var _0x4a19f7=this[_0xd742('0xe')][_0xd742('0x59')]('DIAL',[util[_0xd742('0x2c')](_0xd742('0xe4'),_0x2cd763),_0xde548c['timeout'],_0xde548c[_0xd742('0xe5')],_0xde548c[_0xd742('0x67')]]);if(_0x4a19f7['result']===-0x1){return _0x4a19f7;}return this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0xe6'),_0xd742('0xe7')));};AGIVertices[_0xd742('0x10')][_0xd742('0xe8')]=function(_0x4a8752){logger[_0xd742('0x30')](util['format'](_0xd742('0xe9'),_0x4a8752[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x4a8752[_0xd742('0x7b')])){return this['channel'][_0xd742('0xa9')](_0xd742('0xea'));}if(!this[_0xd742('0xa5')](_0x4a8752[_0xd742('0x5e')])){return this[_0xd742('0xe')][_0xd742('0xa9')]('no\x20text\x20configured');}this[_0xd742('0xe')][_0xd742('0xeb')]=!![];this[_0xd742('0x37')](_0x4a8752);this['createSquareMessage'](_0x4a8752[_0xd742('0x5e')],'in','','');this[_0xd742('0xe')]['noop'](util[_0xd742('0x2c')](_0xd742('0xec'),_0x4a8752[_0xd742('0x5e')]));var _0x55384a=this[_0xd742('0x7a')]['sync'](this,_0x4a8752);if(_0x55384a){for(var _0x4b3c6c in _0x55384a){if(_0x55384a[_0xd742('0x98')](_0x4b3c6c)){this[_0xd742('0xe')][_0xd742('0x9e')](util[_0xd742('0x2c')](_0xd742('0xed'),_0x4b3c6c['toUpperCase']()),_0x55384a[_0x4b3c6c]);}}this[_0xd742('0x42')](_0x55384a[_0xd742('0xee')],_0xd742('0xef'),'dialogflow','');return this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0xf0'),_0x55384a['speech']));}return this[_0xd742('0xe')][_0xd742('0x32')](_0x4a8752,_0xd742('0xf1'));};AGIVertices['prototype'][_0xd742('0xf2')]=function(_0x56795b){logger[_0xd742('0x30')](util[_0xd742('0x2c')]('Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block',_0x56795b['label']));if(!this[_0xd742('0xa5')](_0x56795b[_0xd742('0x7e')])){return this['channel'][_0xd742('0xa9')](_0xd742('0xf3'));}if(!this[_0xd742('0xa5')](_0x56795b[_0xd742('0x7f')])){return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0xf4'));}if(!this[_0xd742('0xa5')](_0x56795b['private_key'])){return this[_0xd742('0xe')]['noop'](_0xd742('0xf5'));}if(!this[_0xd742('0xa5')](_0x56795b['dialogflowV2_language'])){return this['channel']['noop'](_0xd742('0xf6'));}if(!this[_0xd742('0xa5')](_0x56795b['text'])){return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0xaa'));}this[_0xd742('0xe')][_0xd742('0xeb')]=!![];this['createSquareDetailsReport'](_0x56795b);this[_0xd742('0x42')](_0x56795b[_0xd742('0x5e')],'in','','');this[_0xd742('0xe')]['noop'](util['format'](_0xd742('0xf7'),_0x56795b['text']));var _0x2da29e=this[_0xd742('0x7d')]['sync'](this,_0x56795b);if(_0x2da29e){for(var _0x122f50 in _0x2da29e){if(_0x2da29e['hasOwnProperty'](_0x122f50)){if(_0x122f50!=='providerResponse'){this[_0xd742('0xe')][_0xd742('0x9e')](util['format'](_0xd742('0xed'),_0x122f50[_0xd742('0x6b')]()),_0x2da29e[_0x122f50]);}}}this[_0xd742('0x42')](_0x2da29e['speech'],'out','dialogflowV2',_0x2da29e['providerResponse']);return this['channel'][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0xf8'),_0x2da29e[_0xd742('0xee')]));}return this['channel'][_0xd742('0x32')](_0x56795b,'DialogflowV2\x20is\x20unreachable');};AGIVertices[_0xd742('0x10')][_0xd742('0xf9')]=function(_0x1dc975){logger['info'](util['format'](_0xd742('0xfa'),_0x1dc975['label']));if(!this[_0xd742('0xa5')](_0x1dc975['ndauth_url'])){return this[_0xd742('0xe')]['noop'](_0xd742('0xfb'));}if(!this[_0xd742('0xa5')](_0x1dc975[_0xd742('0xfc')])){return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0xfd'));}if(!this[_0xd742('0xa5')](_0x1dc975[_0xd742('0xfe')])){return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0xff'));}if(!this[_0xd742('0xa5')](_0x1dc975[_0xd742('0x100')])){return this['channel']['noop'](_0xd742('0xaa'));}this[_0xd742('0xe')][_0xd742('0xeb')]=!![];this['createSquareDetailsReport'](_0x1dc975);this[_0xd742('0x42')](_0x1dc975['text'],'in','','');this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x101'),_0x1dc975[_0xd742('0x5e')]));var _0x1eb8f5=this[_0xd742('0x82')][_0xd742('0x71')](this,_0x1dc975);if(_0x1eb8f5){for(var _0x35c100 in _0x1eb8f5){if(_0x1eb8f5['hasOwnProperty'](_0x35c100)){this['channel'][_0xd742('0x9e')](util[_0xd742('0x2c')](_0xd742('0x102'),_0x35c100[_0xd742('0x6b')]()),_0x1eb8f5[_0x35c100]);}}this['createSquareMessage'](_0x1eb8f5[_0xd742('0xee')],_0xd742('0xef'),_0xd742('0xf9'),'');if(_0x1eb8f5[_0xd742('0x103')]){this['channel']['noop'](util[_0xd742('0x2c')](_0xd742('0x104'),_0x1eb8f5['audiofile']));var _0x17b823=this[_0xd742('0xe')][_0xd742('0x105')](_0x1eb8f5['audiofile']);try{fs[_0xd742('0x106')](_0x1eb8f5['audiofile']+'.wav');}catch(_0xb4bd63){logger[_0xd742('0x32')](_0xb4bd63);}return _0x17b823;}else{return this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x107'),_0x1eb8f5['speech']));}}return this['channel'][_0xd742('0x32')](_0x1dc975,'SestekNDA\x20is\x20unreachable');};AGIVertices['prototype']['end']=function(_0x30dbb1){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x108'),_0x30dbb1['label']));return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0x109'));};AGIVertices[_0xd742('0x10')][_0xd742('0x10a')]=function(_0x2d2e3d){logger[_0xd742('0x30')](util[_0xd742('0x2c')]('Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block',_0x2d2e3d[_0xd742('0x39')]));var _0x36e148='';if(_0x2d2e3d[_0xd742('0x10b')]){if(!this[_0xd742('0xa5')](_0x2d2e3d[_0xd742('0x10b')])){return this[_0xd742('0xe')][_0xd742('0x32')](_0x2d2e3d,_0xd742('0x10c'));}else{var _0x47239f=parseInt(_0x2d2e3d[_0xd742('0x10b')],0xa);if(isNaN(_0x47239f)){_0x36e148=_0x2d2e3d[_0xd742('0x10b')];}else{_0x36e148=this[_0xd742('0x1e')]['sync'](this,_0x2d2e3d[_0xd742('0x10b')]);if(!_0x36e148){return this[_0xd742('0xe')]['error'](_0x2d2e3d,_0xd742('0x10d'));}}}}else if(_0x2d2e3d['trunk_name']){_0x36e148=_0x2d2e3d[_0xd742('0x10e')];}else{return this[_0xd742('0xe')]['error'](_0x2d2e3d,_0xd742('0x10c'));}var _0x7de375=this[_0xd742('0xe')][_0xd742('0x59')](_0xd742('0xe7'),[util[_0xd742('0x2c')](_0xd742('0x10f'),_0x36e148,_0x2d2e3d[_0xd742('0x48')]),_0x2d2e3d[_0xd742('0x68')],_0x2d2e3d[_0xd742('0xe5')],_0x2d2e3d[_0xd742('0x67')]]);if(_0x7de375['result']===-0x1){return _0x7de375;}return this[_0xd742('0xe')][_0xd742('0xa9')](util['format'](_0xd742('0xe6'),_0xd742('0xe7')));};AGIVertices[_0xd742('0x10')]['finally']=function(_0x4f4a77){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x110'),_0x4f4a77[_0xd742('0x39')]));return this[_0xd742('0xe')]['noop'](_0xd742('0x111'));};AGIVertices['prototype'][_0xd742('0x112')]=function(_0x5f3bd3){logger[_0xd742('0x30')](util['format'](_0xd742('0x113'),_0x5f3bd3[_0xd742('0x39')]));if(_0x5f3bd3[_0xd742('0xa6')]===0x0){return this[_0xd742('0x114')](_0x5f3bd3);}_0x5f3bd3[_0xd742('0xa6')]-=0x1;if(!this[_0xd742('0xa5')](_0x5f3bd3[_0xd742('0x115')])){return this[_0xd742('0xe')]['error'](_0x5f3bd3,'no\x20file\x20audio\x20selected');}var _0xb5217f=this[_0xd742('0x1f')][_0xd742('0x71')](this,_0x5f3bd3[_0xd742('0x115')]);if(!_0xb5217f){return this[_0xd742('0xe')][_0xd742('0x32')](_0x5f3bd3,_0xd742('0x116'));}if(!this[_0xd742('0xa5')](_0x5f3bd3['variable_id'])){return this[_0xd742('0xe')][_0xd742('0x32')](_0xd742('0xd8'));}var _0x25a576=this[_0xd742('0xe')]['getData'](_0xb5217f,_0x5f3bd3[_0xd742('0x117')],_0x5f3bd3[_0xd742('0x118')]);var _0x3a2c4b=_0x25a576['result']?_0x25a576['result'][_0xd742('0x4d')]():'';logger[_0xd742('0x30')](_0xd742('0x119'),JSON['stringify'](_0x25a576));if(_0x25a576[_0xd742('0xa3')]===-0x1){this[_0xd742('0x37')][_0xd742('0x71')](this,_0x5f3bd3,_0x3a2c4b);return _0x25a576;}else if(_0x25a576['extra']===_0xd742('0x68')){_0x25a576[_0xd742('0xa3')]=_0x3a2c4b[_0xd742('0x9a')]>=parseInt(_0x5f3bd3[_0xd742('0x11a')])?'x':'i';}else{_0x25a576[_0xd742('0xa3')]=_0x3a2c4b[_0xd742('0x9a')]>=parseInt(_0x5f3bd3[_0xd742('0x11a')])&&_0x3a2c4b[_0xd742('0x9a')]<=parseInt(_0x5f3bd3[_0xd742('0x118')])?'x':'i';}var _0x3ba92e=this[_0xd742('0x11')][_0xd742('0x71')](this,_0x5f3bd3['variable_id']);if(!_0x3ba92e){return this[_0xd742('0xe')][_0xd742('0x32')](_0x5f3bd3,_0xd742('0xd9'));}this[_0xd742('0xe')][_0xd742('0x9e')](_0x3ba92e,_0x3a2c4b);if(this[_0xd742('0xa5')](_0x5f3bd3[_0xd742('0x11b')])){var _0x4e6b89=parseInt(_0x5f3bd3[_0xd742('0x11b')],0xa);var _0x1a4081=rs['generate']({'charset':'*','length':_0x4e6b89});var _0x4c54cf=_0x3a2c4b['length'];if(_0x4c54cf>0x0){if(_0x4c54cf>_0x4e6b89){this[_0xd742('0x37')][_0xd742('0x71')](this,_0x5f3bd3,_0x5f3bd3[_0xd742('0x11c')]===_0xd742('0x11d')?_0x1a4081+_0x3a2c4b[_0xd742('0x11e')](_0x4e6b89):_0x3a2c4b[_0xd742('0x11e')](0x0,_0x4c54cf-_0x4e6b89)+_0x1a4081);}else{this[_0xd742('0x37')]['sync'](this,_0x5f3bd3,rs[_0xd742('0x11f')]({'charset':'*','length':_0x4c54cf}));}}else{this[_0xd742('0x37')]['sync'](this,_0x5f3bd3,'');}}else{this[_0xd742('0x37')]['sync'](this,_0x5f3bd3,_0x3a2c4b);}return _0x25a576;};AGIVertices['prototype']['getsecretdigits']=function(_0x2a81ce){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x120'),_0x2a81ce[_0xd742('0x39')]));return this[_0xd742('0x112')](_0x2a81ce);};AGIVertices[_0xd742('0x10')][_0xd742('0x121')]=function(_0x14708f){logger[_0xd742('0x30')](util['format'](_0xd742('0x122'),_0x14708f['label']));this[_0xd742('0x37')][_0xd742('0x71')](this,_0x14708f,_0x14708f[_0xd742('0x123')]);return this['channel'][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x124'),_0x14708f[_0xd742('0x123')]));};AGIVertices[_0xd742('0x10')]['awspolly']=function(_0x3cf12f){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x125'),_0x3cf12f[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x3cf12f[_0xd742('0x8e')])||!this[_0xd742('0xa5')](_0x3cf12f[_0xd742('0x8f')])){return this[_0xd742('0xe')][_0xd742('0xa9')]('no\x20valid\x20credentials\x20configured');}if(!this[_0xd742('0xa5')](_0x3cf12f[_0xd742('0x5e')])){return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0xaa'));}this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')]('Trying\x20aws\x20Polly\x20%s',_0x3cf12f[_0xd742('0x5e')]));var _0x1c1645=this['awsPolly'][_0xd742('0x71')](this,_0x3cf12f);if(_0x1c1645){this[_0xd742('0xe')]['noop'](util['format'](_0xd742('0x126'),_0x1c1645));var _0x4bc2ec=this[_0xd742('0xe')][_0xd742('0x105')](_0x1c1645);try{fs[_0xd742('0x106')](_0x1c1645+_0xd742('0x127'));}catch(_0x212d67){logger[_0xd742('0x32')](_0x212d67);}return _0x4bc2ec;}return this[_0xd742('0xe')]['error'](_0x3cf12f,_0xd742('0x128'));};AGIVertices['prototype'][_0xd742('0x129')]=function(_0x2f1c20){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x12a'),_0x2f1c20[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x2f1c20[_0xd742('0x8e')])||!this[_0xd742('0xa5')](_0x2f1c20[_0xd742('0x8f')])){return this['channel'][_0xd742('0xa9')]('no\x20valid\x20credentials\x20configured');}if(!this[_0xd742('0xa5')](_0x2f1c20[_0xd742('0x12b')])){return this[_0xd742('0xe')]['noop'](_0xd742('0x12c'));}if(!this['isConfigured'](_0x2f1c20[_0xd742('0x5e')])){return this['channel'][_0xd742('0xa9')](_0xd742('0xaa'));}this['channel'][_0xd742('0xeb')]=!![];this[_0xd742('0x37')](_0x2f1c20);this[_0xd742('0x42')](_0x2f1c20['text'],'in','','');this[_0xd742('0xe')]['noop'](util['format'](_0xd742('0x12d'),_0x2f1c20['text']));var _0x47f3c6=this[_0xd742('0x8d')][_0xd742('0x71')](this,_0x2f1c20);if(_0x47f3c6){for(var _0x5e5a47 in _0x47f3c6){if(_0x47f3c6[_0xd742('0x98')](_0x5e5a47)&&_['isString'](_0x47f3c6[_0x5e5a47])){this['channel']['setVariable'](util[_0xd742('0x2c')](_0xd742('0x12e'),_0x5e5a47[_0xd742('0x6b')]()),_0x47f3c6[_0x5e5a47]);}}if(_[_0xd742('0x46')](_0x47f3c6[_0xd742('0x78')])){return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0x12f'));}else{this['createSquareMessage'](_0x47f3c6[_0xd742('0x78')],_0xd742('0xef'),_0xd742('0x130'),'');return this[_0xd742('0xe')]['noop'](util[_0xd742('0x2c')](_0xd742('0x131'),_0x47f3c6[_0xd742('0x78')]));}}return this['channel']['error'](_0x2f1c20,_0xd742('0x132'));};AGIVertices[_0xd742('0x10')][_0xd742('0x133')]=function(_0x392dc2){logger['info'](util['format'](_0xd742('0x134'),_0x392dc2[_0xd742('0x39')],_0x392dc2[_0xd742('0x68')]));if(!this['isConfigured'](_0x392dc2[_0xd742('0x7b')])){return this[_0xd742('0xe')]['noop']('no\x20key\x20configured');}var _0x1681d6=_0xd742('0x135');var _0x356ab5=util[_0xd742('0x2c')](_0xd742('0x136'),FILES_PATH,rs['generate'](0x4));var _0xd3af6c=util[_0xd742('0x2c')](_0xd742('0x9d'),_0x356ab5,_0x1681d6);var _0x29bf5d=!![];if(_0x392dc2['beep']===_0xd742('0x137')){_0x29bf5d=![];}var _0x2eeb6f=this[_0xd742('0xe')]['recordFile'](_0x356ab5,_0x1681d6,_0x392dc2[_0xd742('0x138')],_0x392dc2[_0xd742('0x68')],undefined,_0x29bf5d);if(_0x2eeb6f['result']!==-0x1){this['channel'][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x139'),_0xd3af6c));var _0x5050c5=this[_0xd742('0x90')][_0xd742('0x71')](this,_0x392dc2,_0xd3af6c);if(_0x5050c5){for(var _0x16970a in _0x5050c5){if(_0x5050c5[_0xd742('0x98')](_0x16970a)){this[_0xd742('0xe')]['setVariable'](util[_0xd742('0x2c')](_0xd742('0x13a'),_0x16970a[_0xd742('0x6b')]()),_0x5050c5[_0x16970a]);}}return this[_0xd742('0xe')]['noop'](util[_0xd742('0x2c')](_0xd742('0x13b'),JSON[_0xd742('0x74')](_0x5050c5)));}}return _0x2eeb6f;};AGIVertices[_0xd742('0x10')]['tildeasr']=function(_0x16f306){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x13c'),_0x16f306[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x16f306[_0xd742('0x13d')])){return this['channel'][_0xd742('0xa9')](_0xd742('0x13e'));}if(!this[_0xd742('0xa5')](_0x16f306[_0xd742('0x13f')])){return this['channel'][_0xd742('0xa9')](_0xd742('0x140'));}var _0x1ce7cf=_0xd742('0x135');var _0x3377f7=util[_0xd742('0x2c')]('%s/recordings/%s',FILES_PATH,rs[_0xd742('0x11f')](0x4));var _0x39a964=util['format'](_0xd742('0x9d'),_0x3377f7,_0x1ce7cf);var _0x258d42=!![];if(_0x16f306[_0xd742('0x141')]===_0xd742('0x137')){_0x258d42=![];}var _0x40747d=this[_0xd742('0xe')][_0xd742('0x142')](_0x3377f7,_0x1ce7cf,_0x16f306['intKey'],_0x16f306[_0xd742('0x68')],undefined,_0x258d42);if(_0x40747d[_0xd742('0xa3')]!==-0x1){this[_0xd742('0xe')]['noop'](util[_0xd742('0x2c')](_0xd742('0x143'),_0x39a964));var _0x809d36=this['tildeASR'][_0xd742('0x71')](this,_0x16f306,_0x39a964);if(_0x809d36){for(var _0x4f3105 in _0x809d36){if(_0x809d36[_0xd742('0x98')](_0x4f3105)){this[_0xd742('0xe')]['setVariable'](util[_0xd742('0x2c')](_0xd742('0x144'),_0x4f3105[_0xd742('0x6b')]()),_0x809d36[_0x4f3105]);}}return this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x145'),JSON[_0xd742('0x74')](_0x809d36)));}}return _0x40747d;};AGIVertices[_0xd742('0x10')][_0xd742('0x146')]=function(_0x23e57b){logger['info'](util[_0xd742('0x2c')]('Enter\x20in\x20GOTO\x20(%s)\x20block',_0x23e57b[_0xd742('0x39')]));return this['channel'][_0xd742('0x147')](_0x23e57b['context'],_0x23e57b['extension'],_0x23e57b[_0xd742('0x3d')]);};AGIVertices[_0xd742('0x10')][_0xd742('0x148')]=function(_0x3daa40){logger[_0xd742('0x30')](util['format'](_0xd742('0x149'),_0x3daa40[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x3daa40[_0xd742('0x14a')])){return this[_0xd742('0xe')]['error'](_0x3daa40,'no\x20condition\x20configured');}try{var _0x2cb595=eval(_0x3daa40[_0xd742('0x14a')])?'true':'false';this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x14b'),_0x3daa40['condition'],_0x2cb595));return{'code':0xc8,'result':_0x2cb595};}catch(_0xdaf2db){return{'code':0xc8,'result':_0xd742('0x14c')};}};AGIVertices[_0xd742('0x10')][_0xd742('0x14d')]=function(_0x572257){logger['info'](util[_0xd742('0x2c')](_0xd742('0x14e'),_0x572257[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x572257['interval_id'])){return this[_0xd742('0xe')]['error'](_0x572257,_0xd742('0x14f'));}var _0x505c88=this[_0xd742('0x26')]['sync'](this,_0x572257[_0xd742('0x150')]);if(!_0x505c88){return this[_0xd742('0xe')][_0xd742('0x32')](_0x572257,'no\x20intervals\x20found');}for(var _0x316ed8=0x0;_0x316ed8<_0x505c88[_0xd742('0x9a')];_0x316ed8+=0x1){var _0x4162ff=this[_0xd742('0xe')][_0xd742('0x11')](util[_0xd742('0x2c')](_0xd742('0x151'),_0x505c88[_0x316ed8]));if(_0x4162ff[_0xd742('0xa3')]===-0x1){return _0x4162ff;}logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x152'),_0x505c88[_0x316ed8],_0x4162ff[_0xd742('0xa1')]));if(_0x4162ff[_0xd742('0xa1')]===_0xd742('0x153')){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x152'),_0x505c88[_0x316ed8],_0xd742('0x153')));this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')]('IFTIME\x20%s\x20%s',_0x505c88[_0x316ed8],'true'));return{'code':0xc8,'result':_0xd742('0x153')};}else{logger[_0xd742('0x30')](util[_0xd742('0x2c')]('IFTIME\x20%s\x20%s',_0x505c88[_0x316ed8],_0xd742('0x14c')));this[_0xd742('0xe')]['noop'](util[_0xd742('0x2c')](_0xd742('0x152'),_0x505c88[_0x316ed8],_0xd742('0x14c')));}}return{'code':0xc8,'result':_0xd742('0x14c')};};AGIVertices['prototype'][_0xd742('0x154')]=function(_0x493b85){logger['info'](util[_0xd742('0x2c')](_0xd742('0x155'),_0x493b85[_0xd742('0x39')]));return this[_0xd742('0xe')]['hangup']();};AGIVertices[_0xd742('0x10')]['ispeechasr']=function(_0x92593c){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x156'),_0x92593c['label']));if(!this['isConfigured'](_0x92593c[_0xd742('0x7b')])){return this[_0xd742('0xe')]['noop'](_0xd742('0xea'));}var _0x1c84e5=_0xd742('0x135');var _0x1940dc=util[_0xd742('0x2c')](_0xd742('0x136'),FILES_PATH,rs[_0xd742('0x11f')](0x4));var _0xdd3a32=util['format'](_0xd742('0x9d'),_0x1940dc,_0x1c84e5);var _0x1becab=!![];if(_0x92593c[_0xd742('0x141')]===_0xd742('0x137')){_0x1becab=![];}var _0x25be84=this[_0xd742('0xe')][_0xd742('0x142')](_0x1940dc,_0x1c84e5,_0x92593c[_0xd742('0x138')],_0x92593c['timeout'],undefined,_0x1becab);if(_0x25be84[_0xd742('0xa3')]!==-0x1){this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x157'),_0xdd3a32));var _0x261034=this[_0xd742('0x86')][_0xd742('0x71')](this,_0x92593c,_0xdd3a32);if(_0x261034){for(var _0x510fcf in _0x261034){if(_0x261034[_0xd742('0x98')](_0x510fcf)){this[_0xd742('0xe')][_0xd742('0x9e')](util[_0xd742('0x2c')](_0xd742('0x158'),_0x510fcf['toUpperCase']()),_0x261034[_0x510fcf]);}}return this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x159'),JSON[_0xd742('0x74')](_0x261034)));}}return _0x25be84;};AGIVertices[_0xd742('0x10')]['ispeechtts']=function(_0x4d35f8){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x15a'),_0x4d35f8['label']));if(!this[_0xd742('0xa5')](_0x4d35f8[_0xd742('0x7b')])){return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0xea'));}if(!this[_0xd742('0xa5')](_0x4d35f8['text'])){return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0xaa'));}this[_0xd742('0xe')]['noop'](util[_0xd742('0x2c')]('Trying\x20ispeech\x20TTS\x20%s',_0x4d35f8[_0xd742('0x5e')]));var _0x5d0d63=this[_0xd742('0x83')][_0xd742('0x71')](this,_0x4d35f8);if(_0x5d0d63){this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x157'),_0x5d0d63));var _0x41b33b=this[_0xd742('0xe')][_0xd742('0x105')](_0x5d0d63,_0x4d35f8[_0xd742('0x138')]);try{fs['unlink'](_0x5d0d63+_0xd742('0x127'));}catch(_0x17281e){logger[_0xd742('0x32')](_0x17281e);}return _0x41b33b;}return this[_0xd742('0xe')][_0xd742('0x32')](_0x4d35f8,_0xd742('0x15b'));};AGIVertices[_0xd742('0x10')][_0xd742('0x15c')]=function(_0x220932){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x15d'),_0x220932[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x220932[_0xd742('0x15e')])){return this['channel'][_0xd742('0x32')](_0x220932,_0xd742('0x15f'));}logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x160'),this[_0xd742('0xe')]['callerid'],_0x220932[_0xd742('0x15e')]));var _0xb8b085=this[_0xd742('0x54')]['sync'](this,_0x220932[_0xd742('0x15e')]);if(_0xb8b085){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x161'),this[_0xd742('0xe')]['callerid'],_0x220932[_0xd742('0x15e')]));this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x161'),this[_0xd742('0xe')]['callerid'],_0x220932[_0xd742('0x15e')]));return{'code':0xc8,'result':_0xd742('0x162')};}else{logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x163'),this[_0xd742('0xe')][_0xd742('0x3b')],_0x220932[_0xd742('0x15e')]));this['channel'][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x163'),this['channel']['callerid'],_0x220932[_0xd742('0x15e')]));return{'code':0xc8,'result':_0xd742('0x164')};}};AGIVertices[_0xd742('0x10')][_0xd742('0x165')]=function(_0x36e3ba){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x166'),_0x36e3ba['label']));if(!this[_0xd742('0xa5')](_0x36e3ba['findBy'])){return this[_0xd742('0xe')][_0xd742('0x32')](_0x36e3ba,'no\x20find\x20by\x20configured');}logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x160'),this[_0xd742('0xe')][_0xd742('0x3b')],_0x36e3ba[_0xd742('0x15e')]));var _0x13cc69=this[_0xd742('0x53')][_0xd742('0x71')](this,_0x36e3ba['findBy']);if(_0x13cc69){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x161'),this['channel'][_0xd742('0x3b')],_0x36e3ba[_0xd742('0x15e')]));this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x161'),this[_0xd742('0xe')]['callerid'],_0x36e3ba['findBy']));return{'code':0xc8,'result':'success'};}else{logger['info'](util['format'](_0xd742('0x163'),this[_0xd742('0xe')][_0xd742('0x3b')],_0x36e3ba[_0xd742('0x15e')]));this[_0xd742('0xe')]['noop'](util[_0xd742('0x2c')](_0xd742('0x163'),this[_0xd742('0xe')]['callerid'],_0x36e3ba[_0xd742('0x15e')]));return{'code':0xc8,'result':_0xd742('0x164')};}};AGIVertices[_0xd742('0x10')]['math']=function(_0x142e35){logger[_0xd742('0x30')](util[_0xd742('0x2c')]('Enter\x20in\x20MATH\x20(%s)\x20block',_0x142e35['label']));if(!this[_0xd742('0xa5')](_0x142e35[_0xd742('0x167')])){return this[_0xd742('0xe')]['error'](_0x142e35,_0xd742('0x168'));}this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')]('math\x20%s',_0x142e35[_0xd742('0x167')]));var _0x2dfd25=eval(_0x142e35[_0xd742('0x167')]);if(!this[_0xd742('0xa5')](_0x142e35[_0xd742('0xd7')])){return this[_0xd742('0xe')]['noop']('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x341732=this[_0xd742('0x11')][_0xd742('0x71')](this,_0x142e35[_0xd742('0xd7')]);if(!_0x341732){return this[_0xd742('0xe')][_0xd742('0x32')](_0x142e35,_0xd742('0xd9'));}if(_['isArray'](_0x2dfd25)){var _0x2aa4cd=this;_0x2dfd25[_0xd742('0xdb')](function(_0x3b81b2,_0xd31ef4){_0x2aa4cd[_0xd742('0xe')]['setVariable'](util['format'](_0xd742('0x169'),_0x341732,_0xd31ef4),_0x3b81b2);});return this['channel'][_0xd742('0xa9')](util[_0xd742('0x2c')]('variable\x20%s[key]\x20set',_0x341732));}else{return this[_0xd742('0xe')][_0xd742('0x9e')](_0x341732,_0x2dfd25);}};AGIVertices['prototype'][_0xd742('0x16a')]=function(_0x4555cb){logger[_0xd742('0x30')](util[_0xd742('0x2c')]('Enter\x20in\x20MENU\x20(%s)\x20block',_0x4555cb[_0xd742('0x39')]));if(_0x4555cb[_0xd742('0xa6')]===0x0){return this[_0xd742('0x114')](_0x4555cb);}_0x4555cb[_0xd742('0xa6')]-=0x1;if(!this[_0xd742('0xa5')](_0x4555cb[_0xd742('0x115')])){return this[_0xd742('0xe')][_0xd742('0x32')](_0x4555cb,_0xd742('0x16b'));}var _0x4e4e69=this[_0xd742('0x1f')]['sync'](this,_0x4555cb[_0xd742('0x115')]);if(!_0x4e4e69){return this[_0xd742('0xe')]['error'](_0x4555cb,_0xd742('0x116'));}var _0x393c79=this[_0xd742('0xe')]['getData'](_0x4e4e69,_0x4555cb['response'],_0x4555cb['digit']);var _0x403c30=_0x393c79[_0xd742('0xa3')];if(_0x393c79[_0xd742('0xa3')]===-0x1){this[_0xd742('0x37')][_0xd742('0x71')](this,_0x4555cb,'-1');return _0x393c79;}else if(_0x393c79[_0xd742('0xa1')]===_0xd742('0x68')){_0x393c79[_0xd742('0xa3')]=_0x393c79[_0xd742('0xa3')]['length']>0x0?_0x393c79[_0xd742('0xa3')]:'t';}else if(_[_0xd742('0x44')](_0x393c79[_0xd742('0xa3')])){_0x393c79['result']='#';_0x403c30='#';}if(!this['isConfigured'](_0x4555cb[_0xd742('0xd7')])){this[_0xd742('0xe')]['noop']('no\x20variable\x20selected\x20for\x20the\x20result');}else{var _0x1e9eb8=this[_0xd742('0x11')]['sync'](this,_0x4555cb[_0xd742('0xd7')]);if(!_0x1e9eb8){return this[_0xd742('0xe')]['error'](_0x4555cb,_0xd742('0xd9'));}this[_0xd742('0xe')][_0xd742('0x9e')](_0x1e9eb8,_0x403c30);}this[_0xd742('0x37')]['sync'](this,_0x4555cb,_0x403c30);return _0x393c79;};AGIVertices['prototype'][_0xd742('0xa9')]=function(_0xd54683){logger[_0xd742('0x30')](util['format'](_0xd742('0x16c'),_0xd54683['label']));return this[_0xd742('0xe')]['noop'](_0xd54683[_0xd742('0x16d')]||_0xd54683[_0xd742('0x39')]);};AGIVertices[_0xd742('0x10')][_0xd742('0x16e')]=function(_0x47a11e){logger[_0xd742('0x30')](util[_0xd742('0x2c')]('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x47a11e[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x47a11e[_0xd742('0x15e')])){return this[_0xd742('0xe')][_0xd742('0x32')](_0x47a11e,_0xd742('0x15f'));}logger[_0xd742('0x30')](util['format']('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0xd742('0xe')][_0xd742('0x3b')],_0x47a11e[_0xd742('0x15e')]));var _0xf24dab=this[_0xd742('0x4e')]['sync'](this,_0x47a11e[_0xd742('0x16f')]);var _0x4717a6=this[_0xd742('0x50')][_0xd742('0x71')](this,_0x47a11e[_0xd742('0x15e')],_0xf24dab);if(_0x4717a6){logger[_0xd742('0x30')](util[_0xd742('0x2c')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xd742('0xe')][_0xd742('0x3b')],_0x47a11e[_0xd742('0x15e')]));this[_0xd742('0xe')]['noop'](util[_0xd742('0x2c')](_0xd742('0x161'),this[_0xd742('0xe')][_0xd742('0x3b')],_0x47a11e['findBy']));return{'code':0xc8,'result':_0xd742('0x162')};}else{logger[_0xd742('0x30')](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0xd742('0x3b')],_0x47a11e[_0xd742('0x15e')]));this[_0xd742('0xe')]['noop'](util['format'](_0xd742('0x161'),this[_0xd742('0xe')][_0xd742('0x3b')],_0x47a11e[_0xd742('0x15e')]));return{'code':0xc8,'result':_0xd742('0x164')};}};AGIVertices[_0xd742('0x10')]['playback']=function(_0x4f606b){logger[_0xd742('0x30')](util['format'](_0xd742('0x170'),_0x4f606b['label']));if(!this[_0xd742('0xa5')](_0x4f606b['file_id'])){return this[_0xd742('0xe')][_0xd742('0x32')](_0x4f606b,_0xd742('0x16b'));}var _0x2dd5ff=this[_0xd742('0x1f')][_0xd742('0x71')](this,_0x4f606b[_0xd742('0x115')]);if(!_0x2dd5ff){return this[_0xd742('0xe')][_0xd742('0x32')](_0x4f606b,_0xd742('0x116'));}var _0x10eda1=this[_0xd742('0xe')][_0xd742('0x59')]('PLAYBACK',[_0x2dd5ff,_0x4f606b[_0xd742('0xe5')]]);if(_0x10eda1[_0xd742('0xa3')]===-0x1){return _0x10eda1;}return this[_0xd742('0xe')][_0xd742('0xa9')](util['format'](_0xd742('0x171'),'PLAYBACK',_0x2dd5ff));};AGIVertices['prototype']['queue']=function(_0x2ac2a0){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x172'),_0x2ac2a0['label']));if(!this[_0xd742('0xa5')](_0x2ac2a0[_0xd742('0x173')])){return this[_0xd742('0xe')][_0xd742('0x32')](_0x2ac2a0,_0xd742('0x174'));}var _0x242a5a='';var _0x505898=parseInt(_0x2ac2a0['queue_id'],0xa);if(isNaN(_0x505898)){_0x242a5a=_0x2ac2a0[_0xd742('0x173')];}else{_0x242a5a=this[_0xd742('0x17')][_0xd742('0x71')](this,_0x2ac2a0[_0xd742('0x173')]);if(!_0x242a5a){return this[_0xd742('0xe')]['error'](_0x2ac2a0,_0xd742('0x175'));}}var _0x1e978b='';if(this[_0xd742('0xa5')](_0x2ac2a0['file_id'])){var _0x1b8774=this[_0xd742('0x1f')][_0xd742('0x71')](this,_0x2ac2a0['file_id']);if(_0x1b8774){_0x1e978b=_0x1b8774;}}this['createSquareDetailsReport'][_0xd742('0x71')](this,_0x2ac2a0,_0x242a5a);if(_0x2ac2a0[_0xd742('0xe5')][_0xd742('0x176')]('x')<0x0){_0x2ac2a0[_0xd742('0xe5')]+='x';}if(_0x2ac2a0['opts'][_0xd742('0x176')]('X')<0x0){_0x2ac2a0[_0xd742('0xe5')]+='X';}this[_0xd742('0xe')]['setVariable']('XMCS-QUEUE',_0x242a5a?_0x242a5a[_0xd742('0x177')]():'');var _0x49b266=this[_0xd742('0xe')]['exec'](_0xd742('0x178'),[_0x242a5a,_0x2ac2a0[_0xd742('0xe5')],_0x2ac2a0[_0xd742('0x67')],_0x1e978b,_0x2ac2a0[_0xd742('0x68')],_0x2ac2a0[_0xd742('0xb5')],_0x2ac2a0[_0xd742('0x179')],_0x2ac2a0[_0xd742('0x17a')],'',_0x2ac2a0[_0xd742('0x17b')]]);if(_0x49b266[_0xd742('0xa3')]===-0x1){return _0x49b266;}return this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x171'),_0xd742('0x178'),_0x242a5a));};AGIVertices[_0xd742('0x10')][_0xd742('0x17c')]=function(_0x221e0b){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x17d'),_0x221e0b['label']));var _0x51399c=_0x221e0b[_0xd742('0x17e')]||'wav';var _0x3050dc=util['format'](_0xd742('0x17f'),this[_0xd742('0xe')][_0xd742('0x38')],rs[_0xd742('0x11f')](0x5));var _0x2d96aa=util[_0xd742('0x2c')](_0xd742('0x180'),FILES_PATH,_0x3050dc,_0x51399c);var _0x1ed724=util['format'](_0xd742('0x136'),FILES_PATH,_0x3050dc);this['createSquareRecording'][_0xd742('0x71')](this,_0x221e0b,_0x3050dc,_0x2d96aa);this['channel'][_0xd742('0x9e')](_0xd742('0x181'),_0x3050dc);logger[_0xd742('0x30')]('Recording\x20%s\x20%s\x20%s\x20%s',_0x1ed724,_0x51399c,_0x221e0b[_0xd742('0x182')],_0x221e0b[_0xd742('0x68')]);return this[_0xd742('0xe')]['recordFile'](_0x1ed724,_0x51399c,_0x221e0b[_0xd742('0x182')],_0x221e0b[_0xd742('0x68')],undefined,!![]);};AGIVertices['prototype'][_0xd742('0x183')]=function(_0x5e004d){logger[_0xd742('0x30')](util[_0xd742('0x2c')]('Enter\x20in\x20RESTAPI\x20(%s)\x20block',_0x5e004d[_0xd742('0x39')]));if(!this['isConfigured'](_0x5e004d[_0xd742('0x67')])){return this[_0xd742('0xe')]['noop'](_0xd742('0x184'));}var _0x11e3ea=this[_0xd742('0x66')][_0xd742('0x71')](this,_0x5e004d);logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x185'),util[_0xd742('0x186')](_0x11e3ea,{'showHidden':![],'depth':null})));if(!this[_0xd742('0xa5')](_0x5e004d['variable_id'])){return this['channel'][_0xd742('0xa9')](_0xd742('0x187'));}var _0x629fee=this[_0xd742('0x11')][_0xd742('0x71')](this,_0x5e004d[_0xd742('0xd7')]);if(!_0x629fee){return this[_0xd742('0xe')][_0xd742('0x32')](_0x5e004d,_0xd742('0xd9'));}this[_0xd742('0xe')][_0xd742('0x9e')](util[_0xd742('0x2c')](_0xd742('0x188'),_0x629fee),_0x11e3ea[_0xd742('0x77')]?_0x11e3ea[_0xd742('0x77')]:_0xd742('0x189'));this['channel'][_0xd742('0x9e')](util[_0xd742('0x2c')](_0xd742('0x18a'),_0x629fee),_0x11e3ea[_0xd742('0x76')]?_0x11e3ea['statusMessage']:'OK');if(_0x11e3ea[_0xd742('0x6c')]){try{this[_0xd742('0x9b')](_0x11e3ea[_0xd742('0x6c')],_0x629fee);}catch(_0x1e9c99){logger[_0xd742('0x32')](util[_0xd742('0x2c')](_0xd742('0x18b'),_0x629fee));}}return this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0xde'),_0x629fee));};AGIVertices[_0xd742('0x10')]['saydigits']=function(_0x3d6a67){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x18c'),_0x3d6a67[_0xd742('0x39')]));return this[_0xd742('0xe')][_0xd742('0x18d')](_0x3d6a67[_0xd742('0x18e')]['replace'](/\s+/g,''),_0x3d6a67[_0xd742('0x182')]);};AGIVertices[_0xd742('0x10')][_0xd742('0x18f')]=function(_0x3b4372){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x190'),_0x3b4372[_0xd742('0x39')]));return this[_0xd742('0xe')][_0xd742('0x191')](_0x3b4372[_0xd742('0x192')][_0xd742('0x5a')](/\s+/g,''),_0x3b4372[_0xd742('0x182')]);};AGIVertices[_0xd742('0x10')][_0xd742('0x193')]=function(_0x2e5143){logger[_0xd742('0x30')](util['format']('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0x2e5143[_0xd742('0x39')]));return this[_0xd742('0xe')][_0xd742('0x194')](_0x2e5143[_0xd742('0x5e')],_0x2e5143[_0xd742('0x182')]);};AGIVertices[_0xd742('0x10')][_0xd742('0x195')]=function(_0x490718){logger['info'](util['format']('Enter\x20in\x20SENDMAIL\x20(%s)\x20block',_0x490718['label']));if(!this[_0xd742('0xa5')](_0x490718['account_id'])){return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0x196'));}var _0x59f492=this[_0xd742('0x23')][_0xd742('0x71')](this,_0x490718[_0xd742('0x197')]);if(!_0x59f492||!_0x59f492[_0xd742('0x198')]){return this[_0xd742('0xe')]['error'](_0x490718,_0xd742('0x199'));}var _0x4cdd59={'from':util[_0xd742('0x2c')](_0xd742('0x19a'),_0x59f492[_0xd742('0x15')],_0x59f492[_0xd742('0x19b')]||_0x59f492[_0xd742('0x198')][_0xd742('0x19c')]),'to':_0x490718['to']||'','cc':_0x490718['cc']||'','bcc':_0x490718['bcc']||'','subject':_0x490718[_0xd742('0x19d')],'html':_0x490718[_0xd742('0x5e')],'text':_0x490718[_0xd742('0x5e')]};var _0x187eaa={'tls':{'rejectUnauthorized':![]}};if(_0x59f492[_0xd742('0x198')][_0xd742('0x19e')]){_0x187eaa[_0xd742('0x19e')]=_0x59f492[_0xd742('0x198')][_0xd742('0x19e')];}else{_0x187eaa[_0xd742('0x19f')]=_0x59f492[_0xd742('0x198')]['host'];_0x187eaa[_0xd742('0x1a0')]=_0x59f492[_0xd742('0x198')][_0xd742('0x1a0')];_0x187eaa[_0xd742('0x1a1')]=_0x59f492[_0xd742('0x198')]['secure'];}if(_0x59f492[_0xd742('0x198')][_0xd742('0x1a2')]){_0x187eaa['auth']={'user':_0x59f492[_0xd742('0x198')][_0xd742('0x19c')],'pass':_0x59f492[_0xd742('0x198')][_0xd742('0x1a3')]};}if(this['isConfigured'](_0x490718[_0xd742('0x1a4')])){}logger[_0xd742('0xe0')](_0xd742('0x1a5'),JSON[_0xd742('0x74')](_0x4cdd59));this['createSquareDetailsReport'][_0xd742('0x71')](this,_0x490718,_0x490718[_0xd742('0x197')]);this[_0xd742('0xe')]['noop'](util[_0xd742('0x2c')]('Trying\x20SendMail\x20with\x20account\x20%s',_0x59f492[_0xd742('0x15')]));this[_0xd742('0x25')][_0xd742('0x71')](this,_0x187eaa,_0x4cdd59);return this[_0xd742('0xe')][_0xd742('0xa9')]('Mail\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0xd742('0x10')][_0xd742('0x1a6')]=function(_0x633e57){logger[_0xd742('0x30')](util[_0xd742('0x2c')]('Enter\x20in\x20SENDFAX\x20(%s)\x20block',_0x633e57[_0xd742('0x39')]));return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0x1a7'));};AGIVertices[_0xd742('0x10')][_0xd742('0x1a8')]=function(_0x117bd0){logger['info'](util[_0xd742('0x2c')](_0xd742('0x1a9'),_0x117bd0[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x117bd0[_0xd742('0x1aa')])){return this[_0xd742('0xe')]['noop'](_0xd742('0x1ab'));}var _0x37f598=this[_0xd742('0x34')][_0xd742('0x71')](this,_0x117bd0[_0xd742('0x1aa')]);if(!_0x37f598){return this[_0xd742('0xe')]['error'](_0x117bd0,_0xd742('0x1ac'));}var _0x5a4550={'body':_0x117bd0[_0xd742('0x1ad')],'phone':_0x117bd0['to']||'','SmsAccountId':_0x37f598['id']};logger[_0xd742('0xe0')]('sendSMS\x20message',JSON[_0xd742('0x74')](_0x5a4550));this['createSquareDetailsReport'][_0xd742('0x71')](this,_0x117bd0,_0x117bd0[_0xd742('0x1aa')]);this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x1ae'),_0x37f598[_0xd742('0x15')]));this['createSmsMessage'][_0xd742('0x71')](this,_0x5a4550);return this[_0xd742('0xe')][_0xd742('0xa9')](_0xd742('0x1af'));};AGIVertices[_0xd742('0x10')][_0xd742('0x1b0')]=function(_0x3d47cb){logger['info'](util[_0xd742('0x2c')](_0xd742('0x1b1'),_0x3d47cb[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x3d47cb[_0xd742('0xd7')])){return this['channel'][_0xd742('0x32')](_0x3d47cb,_0xd742('0x1b2'));}var _0x37de86=this[_0xd742('0x11')][_0xd742('0x71')](this,_0x3d47cb['variable_id']);if(!_0x37de86){return this[_0xd742('0xe')][_0xd742('0x32')](_0x3d47cb,'no\x20variable\x20found');}return this['channel'][_0xd742('0x9e')](_0x37de86,_0x3d47cb[_0xd742('0x1b3')]);};AGIVertices[_0xd742('0x10')]['start']=function(_0x3f33c8){logger['info'](util['format']('Enter\x20in\x20START\x20(%s)\x20block',_0x3f33c8['label']));this['channel'][_0xd742('0xa9')](_0xd742('0x1b4'));if(_0x3f33c8[_0xd742('0xb6')]==='yes'){this[_0xd742('0xe')][_0xd742('0xa9')]('Answer');return this[_0xd742('0xe')][_0xd742('0xb6')]();}return this[_0xd742('0xe')]['noop'](_0xd742('0x1b5'));};AGIVertices['prototype'][_0xd742('0x1b6')]=function(_0x28e465){logger[_0xd742('0x30')](util[_0xd742('0x2c')]('Enter\x20in\x20SUBPROJECT\x20(%s)\x20block',_0x28e465[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0x28e465[_0xd742('0x1b7')])){return this[_0xd742('0xe')][_0xd742('0x32')](_0x28e465,_0xd742('0x1b8'));}var _0x598749=this[_0xd742('0x1b9')][_0xd742('0x71')](this,_0x28e465[_0xd742('0x1b7')]);if(!this[_0xd742('0xa5')](_0x598749)){return this[_0xd742('0xe')][_0xd742('0x32')](_0x28e465,util[_0xd742('0x2c')](_0xd742('0x1ba'),_0x28e465[_0xd742('0x1b7')]));}if(_0x598749===this[_0xd742('0xe')][_0xd742('0x40')]){return this[_0xd742('0xe')]['error'](_0x28e465,_0xd742('0x1bb'));}this[_0xd742('0x37')][_0xd742('0x71')](this,_0x28e465,_0x598749);var _0x89ea81=this[_0xd742('0xe')][_0xd742('0x59')](_0xd742('0x1bc'),util[_0xd742('0x2c')](_0xd742('0x1bd'),config[_0xd742('0xb5')]['host']||'127.0.0.1',_0x598749,this[_0xd742('0xe')]['arg_1']));if(_0x89ea81['result']===-0x1){return _0x89ea81;}return this[_0xd742('0xe')]['noop'](util[_0xd742('0x2c')](_0xd742('0x171'),_0xd742('0x1bc'),_0x598749));};AGIVertices[_0xd742('0x10')][_0xd742('0x1be')]=function(_0x3a2090){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x1bf'),_0x3a2090[_0xd742('0x39')]));var _0x36d733=this[_0xd742('0x58')][_0xd742('0x71')](this,_0x3a2090['command']);this[_0xd742('0x37')][_0xd742('0x71')](this,_0x3a2090,_0x3a2090[_0xd742('0x1c0')]);if(this[_0xd742('0xa5')](_0x3a2090[_0xd742('0xd7')])){var _0x56b2d3=this[_0xd742('0x11')][_0xd742('0x71')](this,_0x3a2090['variable_id']);if(_0x56b2d3){this['channel']['setVariable'](_0x56b2d3,_0x36d733);return this[_0xd742('0xe')]['noop'](util['format'](_0xd742('0x1c1'),_0x3a2090['command'],_0x56b2d3));}}return this[_0xd742('0xe')]['noop'](util['format']('sh\x20command:\x20%s\x20result\x20no\x20stored',_0x3a2090[_0xd742('0x1c0')]));};AGIVertices[_0xd742('0x10')][_0xd742('0x1c2')]=function(_0x34d2e8){logger[_0xd742('0x30')](util[_0xd742('0x2c')]('Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block',_0x34d2e8[_0xd742('0x39')]));_0x34d2e8[_0xd742('0x5e')]=_0x34d2e8['text']['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x34d2e8[_0xd742('0x5c')])){return this[_0xd742('0xe')][_0xd742('0xa9')]('no\x20apiKey\x20configured');}if(!this[_0xd742('0xa5')](_0x34d2e8['text'])){return this['channel']['noop'](_0xd742('0xaa'));}this[_0xd742('0xe')]['noop'](util['format'](_0xd742('0x1c3'),_0x34d2e8[_0xd742('0x5e')]));var _0x31c286=this[_0xd742('0x5b')]['sync'](this,_0x34d2e8);if(_0x31c286){this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x1c4'),_0x31c286));var _0xb8778a=this[_0xd742('0xe')]['streamFile'](_0x31c286);try{fs[_0xd742('0x106')](_0x31c286+_0xd742('0x127'));}catch(_0x4b41bc){logger[_0xd742('0x32')](_0x4b41bc);}return _0xb8778a;}return this['channel'][_0xd742('0x32')](_0x34d2e8,_0xd742('0x1c5'));};AGIVertices['prototype'][_0xd742('0x1c6')]=function(_0x7f91a9){logger[_0xd742('0x30')](util['format'](_0xd742('0x1c7'),_0x7f91a9['label']));_0x7f91a9[_0xd742('0x5e')]=_0x7f91a9['text'][_0xd742('0x5a')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xd742('0xa5')](_0x7f91a9[_0xd742('0x5e')])){return this['channel'][_0xd742('0xa9')](_0xd742('0xaa'));}this[_0xd742('0xe')][_0xd742('0xa9')](util['format'](_0xd742('0x1c8'),_0x7f91a9[_0xd742('0x5e')]));var _0x15ec33=this['googleTTS'][_0xd742('0x71')](this,_0x7f91a9);if(_0x15ec33){this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')]('Google\x20TTS\x20%s\x20file\x20created',_0x15ec33));var _0x24405e=this[_0xd742('0xe')]['streamFile'](_0x15ec33);try{fs[_0xd742('0x106')](_0x15ec33+_0xd742('0x127'));}catch(_0x46ea4c){logger[_0xd742('0x32')](_0x46ea4c);}return _0x24405e;}return this[_0xd742('0xe')]['error'](_0x7f91a9,_0xd742('0x1c9'));};AGIVertices['prototype'][_0xd742('0x1ca')]=function(_0xe42b48){logger[_0xd742('0x30')](util['format'](_0xd742('0x1cb'),_0xe42b48[_0xd742('0x39')]));if(!this[_0xd742('0xa5')](_0xe42b48[_0xd742('0x15e')])){return this[_0xd742('0xe')]['error'](_0xe42b48,_0xd742('0x15f'));}logger['info'](util[_0xd742('0x2c')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0xd742('0xe')][_0xd742('0x3b')],_0xe42b48[_0xd742('0x15e')]));var _0x35c89e=this[_0xd742('0x52')]['sync'](this,_0xe42b48['findBy']);if(_0x35c89e){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x161'),this[_0xd742('0xe')][_0xd742('0x3b')],_0xe42b48[_0xd742('0x15e')]));this[_0xd742('0xe')][_0xd742('0xa9')](util['format'](_0xd742('0x161'),this['channel']['callerid'],_0xe42b48['findBy']));return{'code':0xc8,'result':'success'};}else{logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x163'),this[_0xd742('0xe')][_0xd742('0x3b')],_0xe42b48['findBy']));this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x163'),this[_0xd742('0xe')][_0xd742('0x3b')],_0xe42b48[_0xd742('0x15e')]));return{'code':0xc8,'result':'failure'};}};AGIVertices['prototype'][_0xd742('0x1cc')]=function(_0x4e4b4a){logger[_0xd742('0x30')](util[_0xd742('0x2c')](_0xd742('0x1cd'),_0x4e4b4a[_0xd742('0x39')]));var _0x4c2bd9=this['channel'][_0xd742('0x59')](_0xd742('0x1ce'),[_0x4e4b4a[_0xd742('0x1cf')],_0x4e4b4a[_0xd742('0x79')]]);if(_0x4c2bd9[_0xd742('0xa3')]===-0x1){return _0x4c2bd9;}return this[_0xd742('0xe')][_0xd742('0xa9')](util[_0xd742('0x2c')](_0xd742('0x171'),_0xd742('0x1ce'),_0x4e4b4a['mailbox']));};AGIVertices['prototype']['vswitch']=function(_0x47a5a2){logger['info'](util[_0xd742('0x2c')](_0xd742('0x1d0'),_0x47a5a2[_0xd742('0x39')]));if(!this['isConfigured'](_0x47a5a2[_0xd742('0xd7')])){return this[_0xd742('0xe')][_0xd742('0x32')](_0x47a5a2,_0xd742('0x1b2'));}var _0x1abd89=this[_0xd742('0x11')]['sync'](this,_0x47a5a2['variable_id']);if(!_0x1abd89){return this[_0xd742('0xe')][_0xd742('0x32')](_0x47a5a2,_0xd742('0xd9'));}var _0xf9c6bd=this[_0xd742('0xe')][_0xd742('0x11')](_0x1abd89);return{'code':0xc8,'result':_0xf9c6bd[_0xd742('0xa1')]?_0xf9c6bd[_0xd742('0xa1')]:'-'};};String[_0xd742('0x10')][_0xd742('0xa0')]=function(_0xf2c00e,_0x316d00){return this[_0xd742('0x9f')](_0xf2c00e)['join'](_0x316d00);};module[_0xd742('0x1d1')]=AGIVertices;
\ No newline at end of file
+var _0x80c4=['intKey','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','appid','no\x20appsecret\x20configured','wav','beep','recordFile','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','context','extension','gotoif','condition','no\x20condition\x20configured','true','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','interval_id','no\x20intervals\x20found','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','Enter\x20in\x20HANGUP\x20(%s)\x20block','hangup','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','%s/recordings/%s','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20TTS\x20is\x20unreachable','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','no\x20find\x20by\x20configured','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','FIND\x20AGENT\x20%s\x20BY\x20%s','math','operation','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','pause_id','playback','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','no\x20queue\x20selected','queue_id','indexOf','XMCS-QUEUE','toLowerCase','QUEUE','macro','gosub','position','Enter\x20in\x20RECORD\x20(%s)\x20block','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','restAPI','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','%s_STATUS_MESSAGE','statusMessage','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayphonetic','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','no\x20mail\x20account\x20configured','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','user','subject','service','host','port','secure','authentication','pass','template_id','sendMail\x20message','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20configured','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','Enter\x20in\x20START\x20(%s)\x20block','Answer','answer','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','no\x20subproject\x20selected','project_id','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','agi://%s/square,\x22%s\x22,\x22%s\x22','127.0.0.1','AGI','system','command','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','join','exports','path','lodash','shelljs','odbc','randomstring','moment','mustache','../../config/logger','agi','../../config/environment','./scripts','/var/opt/motion2/server/files','rawHeaders','rawBody','menu','getdigits','channel','rpc','mailRpc','prototype','getVariable','getVariableById','then','name','catch','getVoiceQueueById','getSquareProject','getSquareOdbc','getSquareOdbcById','getUser','getUserById','getTrunk','getTrunkById','getSoundPath','save_name','getMailAccount','sendMailMessage','getIntervals','getIntervalById','IntervalId','interval','map','Intervals','format','%s/sounds/converted/%s','getQueryOdbc','error','Error\x20getting\x20ODBC\x20connection\x20%s','ODBC\x20connection\x20successfully','query','Error\x20executing\x20query\x20%s','info','Query\x20executed\x20correctly\x20%s','close','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','label','agicommand','arg_1','callerid','createSquareRecording','calleridname','priority','file','createSquareMessage','createCmContact','isEmpty','isNil','lastName','list_id','callback','Callback\x20scheduled\x20at\x20','scheduledAt','toString','getPause','getPauseById','agentPause','agentUnpause','agent','agentLogout','agentLogin','%s/%s@from-sip/n','LOCAL','shellCommand','exec','trim','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','ssmlGender','audioEncoding','MP3','googleTTS','url','timeout','number','includes','POST','PUT','method','toUpperCase','body','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','computedVariables','render','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','message','options','googleDialogflow','dialogflow_language','googleDialogflowV2','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','key','en-US','speed','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','aws_polly_voice','Amy','awsLex','aws_lex_region','aws_bot_name','googleASR','tildeASR','appsecret','uri','clear','clone','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','isPlainObject','recursiveNodeIndex','isArray','length','saveRestApiResult','%s.%s','setVariable','split','replaceAll','extra','getAndSetVariable','result','maxRetry','sync','retry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','noop','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','Enter\x20in\x20AGI\x20(%s)\x20block','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','delay','add','callback_priority','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','phone','custom_app','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','no\x20text\x20configured','MRCPSynth','Executed\x20command\x20MRCPSynth\x20%s','sestektts','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','MRCPRecog','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','Executed\x20command\x20MRCPRecog\x20%s','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20database\x20selected','no\x20query\x20configured','query:\x20%s','no\x20variable\x20found','forEach','keys','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20selected','no\x20user\x20found','DIAL','SIP/%s','Executed\x20command\x20%s','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','speech','out','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20client_email\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','dialogflowV2','DialogflowV2\x20Result\x20%s','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','username','no\x20password\x20configured','ndassistant_url','SESTEK_NDA_%s','sesteknda','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','unlink','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','Enter\x20in\x20END\x20(%s)\x20block','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','trunk_name','SIP/%s/%s','opts','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','no\x20file\x20audio\x20selected','getSound','file_id','no\x20file\x20audio\x20found','no\x20variable\x20selected\x20for\x20the\x20result','getData','response','maxdigit','test','mindigit','variable_id','hiddendigitsnum','hiddendigitspos','first','substr','generate','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','goalname','GOAL\x20%s','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','awslex','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','NOBEEP'];(function(_0x616fb8,_0x177e11){var _0x739e20=function(_0xfe27e9){while(--_0xfe27e9){_0x616fb8['push'](_0x616fb8['shift']());}};_0x739e20(++_0x177e11);}(_0x80c4,0xa3));var _0x480c=function(_0xa3e9a,_0x75d10c){_0xa3e9a=_0xa3e9a-0x0;var _0x57f334=_0x80c4[_0xa3e9a];return _0x57f334;};'use strict';var fs=require('fs');var path=require(_0x480c('0x0'));var util=require('util');var _=require(_0x480c('0x1'));var sh=require(_0x480c('0x2'));var odbc=require(_0x480c('0x3'))();var rs=require(_0x480c('0x4'));var moment=require(_0x480c('0x5'));var Mustache=require(_0x480c('0x6'));var rp=require('request-promise');var logger=require(_0x480c('0x7'))(_0x480c('0x8'));var config=require(_0x480c('0x9'));var scripts=require(_0x480c('0xa'));var FILES_PATH=_0x480c('0xb');var recursiveMapAttributes=[_0x480c('0xc'),_0x480c('0xd')];var verticesWithRetry=[_0x480c('0xe'),_0x480c('0xf'),'getsecretdigits'];var AGIVertices=function(_0x2266fb,_0x2e9de7,_0x292aca){this[_0x480c('0x10')]=_0x2266fb;this[_0x480c('0x11')]=_0x2e9de7;this[_0x480c('0x12')]=_0x292aca;};AGIVertices[_0x480c('0x13')][_0x480c('0x14')]=function(_0x3d4a8b,_0x4deb40){this[_0x480c('0x11')][_0x480c('0x15')](_0x3d4a8b)[_0x480c('0x16')](function(_0x7cccb8){_0x4deb40(null,_0x7cccb8?_0x7cccb8[_0x480c('0x17')]:![]);})[_0x480c('0x18')](function(_0x376da3){_0x4deb40(_0x376da3);});};AGIVertices[_0x480c('0x13')]['getVoiceQueue']=function(_0x42a05a,_0x29613b){this['rpc'][_0x480c('0x19')](_0x42a05a)[_0x480c('0x16')](function(_0x1ff755){_0x29613b(null,_0x1ff755?_0x1ff755['name']:![]);})['catch'](function(_0x445635){_0x29613b(_0x445635);});};AGIVertices[_0x480c('0x13')][_0x480c('0x1a')]=function(_0x14248c,_0x93d6c5){this['rpc']['getSquareProjectById'](_0x14248c)['then'](function(_0xfc8a9f){_0x93d6c5(null,_0xfc8a9f?_0xfc8a9f[_0x480c('0x17')]:![]);})['catch'](function(_0x172103){_0x93d6c5(_0x172103);});};AGIVertices['prototype'][_0x480c('0x1b')]=function(_0x1507d1,_0x41a08a){this['rpc'][_0x480c('0x1c')](_0x1507d1)[_0x480c('0x16')](function(_0x9e5a12){_0x41a08a(null,_0x9e5a12?_0x9e5a12['dsn']:![]);})[_0x480c('0x18')](function(_0x50bb63){_0x41a08a(_0x50bb63);});};AGIVertices[_0x480c('0x13')][_0x480c('0x1d')]=function(_0x5b5a51,_0x3b5bca){this[_0x480c('0x11')][_0x480c('0x1e')](_0x5b5a51)[_0x480c('0x16')](function(_0x5dbf8f){_0x3b5bca(null,_0x5dbf8f?_0x5dbf8f[_0x480c('0x17')]:![]);})[_0x480c('0x18')](function(_0x5288f5){_0x3b5bca(_0x5288f5);});};AGIVertices[_0x480c('0x13')][_0x480c('0x1f')]=function(_0x16ddd6,_0x2b67b8){this[_0x480c('0x11')][_0x480c('0x20')](_0x16ddd6)[_0x480c('0x16')](function(_0x24857e){_0x2b67b8(null,_0x24857e?_0x24857e[_0x480c('0x17')]:![]);})[_0x480c('0x18')](function(_0x1363ef){_0x2b67b8(_0x1363ef);});};AGIVertices['prototype']['getSound']=function(_0x372f96,_0x4eafc7){var _0x5b87e5=this;this['rpc']['getSoundById'](_0x372f96)[_0x480c('0x16')](function(_0x6019aa){_0x4eafc7(null,_0x6019aa?_0x5b87e5[_0x480c('0x21')](_0x6019aa[_0x480c('0x22')]):![]);})['catch'](function(_0x4a54b2){_0x4eafc7(_0x4a54b2);});};AGIVertices['prototype'][_0x480c('0x23')]=function(_0x3eabb3,_0x5c56e5){this[_0x480c('0x11')]['getMailAccountById'](_0x3eabb3)['then'](function(_0x415f68){_0x5c56e5(null,_0x415f68?_0x415f68:![]);})[_0x480c('0x18')](function(_0x3c403b){_0x5c56e5(_0x3c403b);});};AGIVertices[_0x480c('0x13')][_0x480c('0x24')]=function(_0x2fc7ed,_0x20fc3c,_0x440c4a){this['mailRpc']['sendMailMessage'](_0x2fc7ed,_0x20fc3c)[_0x480c('0x16')](function(){_0x440c4a(null);})[_0x480c('0x18')](function(_0x590314){_0x440c4a(_0x590314);});};AGIVertices[_0x480c('0x13')][_0x480c('0x25')]=function(_0x13b7e6,_0x1d287f){this[_0x480c('0x11')][_0x480c('0x26')](_0x13b7e6)[_0x480c('0x16')](function(_0x11034c){if(_0x11034c){if(_0x11034c[_0x480c('0x27')]){_0x1d287f(null,[_0x11034c[_0x480c('0x28')]]);}else{_0x1d287f(null,_[_0x480c('0x29')](_0x11034c[_0x480c('0x2a')],_0x480c('0x28')));}}else{_0x1d287f(null,![]);}})[_0x480c('0x18')](function(_0x2780ae){_0x1d287f(_0x2780ae);});};AGIVertices['prototype'][_0x480c('0x21')]=function(_0x15db14){return util[_0x480c('0x2b')](_0x480c('0x2c'),FILES_PATH,_0x15db14);};AGIVertices['prototype'][_0x480c('0x2d')]=function(_0x1ae830,_0x564b16,_0x8b79fc){odbc['open'](_0x1ae830,function(_0x31c0aa){if(_0x31c0aa){logger[_0x480c('0x2e')](_0x480c('0x2f'),_0x31c0aa);_0x8b79fc(_0x31c0aa);}else{logger['info'](_0x480c('0x30'));odbc[_0x480c('0x31')](_0x564b16,function(_0x1b9b3c,_0x232920){if(_0x1b9b3c){logger['info'](_0x480c('0x32'),_0x564b16);_0x8b79fc(_0x1b9b3c);}else{logger[_0x480c('0x33')](_0x480c('0x34'),_0x564b16);odbc[_0x480c('0x35')](function(_0x3eb279){if(_0x3eb279){logger['error']('Error\x20closing\x20connection\x20to\x20odbc\x20%s',_0x3eb279);}_0x8b79fc(null,_0x232920);});}});}});};AGIVertices[_0x480c('0x13')][_0x480c('0x36')]=function(_0x3d03c1,_0x402940){this['rpc'][_0x480c('0x37')](_0x3d03c1)[_0x480c('0x16')](function(_0x1071d){_0x402940(null,_0x1071d?_0x1071d:![]);})[_0x480c('0x18')](function(_0x221c04){_0x402940(_0x221c04);});};AGIVertices[_0x480c('0x13')][_0x480c('0x38')]=function(_0x5d9811,_0x33664b){this['rpc'][_0x480c('0x38')](_0x5d9811)[_0x480c('0x16')](function(_0x4eb00d){_0x33664b(null,_0x4eb00d);})[_0x480c('0x18')](function(_0x2aad21){_0x33664b(_0x2aad21);});};AGIVertices['prototype'][_0x480c('0x39')]=function(_0x4d62fb,_0x43e8fd,_0x2257bc){this[_0x480c('0x11')]['createSquareDetailsReport']({'uniqueid':this[_0x480c('0x10')][_0x480c('0x3a')],'node':_0x4d62fb[_0x480c('0x3b')],'application':_0x4d62fb[_0x480c('0x3c')],'data':_0x43e8fd||null,'project_name':this[_0x480c('0x10')][_0x480c('0x3d')],'callerid':this[_0x480c('0x10')][_0x480c('0x3e')]})[_0x480c('0x16')](function(_0x13c0d0){if(_0x2257bc){_0x2257bc(null,_0x13c0d0);}})[_0x480c('0x18')](function(_0x4d6e03){if(_0x2257bc){_0x2257bc(_0x4d6e03);}});};AGIVertices[_0x480c('0x13')]['createSquareRecording']=function(_0x3b2571,_0x4fe4fd,_0x348f5b,_0x1a9af7){this[_0x480c('0x11')][_0x480c('0x3f')]({'uniqueid':this[_0x480c('0x10')]['uniqueid'],'callerid':this[_0x480c('0x10')]['callerid'],'calleridname':this[_0x480c('0x10')][_0x480c('0x40')],'context':this['channel']['context'],'extension':this[_0x480c('0x10')]['extension'],'priority':this[_0x480c('0x10')][_0x480c('0x41')],'accountcode':this[_0x480c('0x10')]['accountcode'],'dnid':this['channel']['dnid'],'projectName':this[_0x480c('0x10')]['arg_1'],'saveName':_0x4fe4fd,'filename':_0x3b2571[_0x480c('0x42')]||_0x4fe4fd,'savePath':_0x348f5b})[_0x480c('0x16')](function(_0x282f58){_0x1a9af7(null,_0x282f58);})[_0x480c('0x18')](function(_0x4881dc){_0x1a9af7(_0x4881dc);});};AGIVertices[_0x480c('0x13')][_0x480c('0x43')]=function(_0x326ce3,_0x39d839,_0xffb135,_0x10a03d,_0x34e874){this[_0x480c('0x11')]['createSquareMessage']({'uniqueid':this[_0x480c('0x10')][_0x480c('0x3a')],'body':_0x326ce3,'direction':_0x39d839,'providerName':_0xffb135,'providerResponse':_0x10a03d})['then'](function(_0x5e969f){if(_0x34e874){_0x34e874(null,_0x5e969f);}})[_0x480c('0x18')](function(_0x4dbd9d){if(_0x34e874){_0x34e874(_0x4dbd9d);}});};AGIVertices['prototype']['createCmContact']=function(_0x5cca6e,_0x2b97ff){this['rpc'][_0x480c('0x44')]({'firstName':_[_0x480c('0x45')](_0x5cca6e[_0x480c('0x17')])||_[_0x480c('0x46')](_0x5cca6e['name'])?'callback_'+Math['random']():_0x5cca6e['name'],'lastName':_[_0x480c('0x45')](_0x5cca6e[_0x480c('0x47')])||_[_0x480c('0x46')](_0x5cca6e[_0x480c('0x47')])?null:_0x5cca6e['lastName'],'phone':_0x5cca6e['phone'],'ListId':_0x5cca6e[_0x480c('0x48')],'scheduledat':_0x5cca6e['scheduledAt'],'callbackUniqueid':this[_0x480c('0x10')]['uniqueid'],'tags':_0x480c('0x49'),'description':_0x480c('0x4a')+_0x5cca6e[_0x480c('0x4b')][_0x480c('0x4c')](),'priority':_0x5cca6e['callback_priority']})[_0x480c('0x16')](function(_0x3175cd){_0x2b97ff(null,_0x3175cd);})[_0x480c('0x18')](function(_0x457acd){_0x2b97ff(_0x457acd);});};AGIVertices[_0x480c('0x13')][_0x480c('0x4d')]=function(_0x3497d5,_0x37be32){this[_0x480c('0x11')][_0x480c('0x4e')](_0x3497d5)['then'](function(_0x50486f){_0x37be32(null,_0x50486f?_0x50486f[_0x480c('0x17')]:![]);})[_0x480c('0x18')](function(_0x14d603){_0x37be32(_0x14d603);});};AGIVertices[_0x480c('0x13')][_0x480c('0x4f')]=function(_0x48215e,_0x1ff8c1,_0x51d8b8){var _0x5dcf94={'role':'agent'};_0x5dcf94[_0x48215e]=this[_0x480c('0x10')]['callerid'];this[_0x480c('0x11')][_0x480c('0x4f')](_0x5dcf94,_0x1ff8c1,this[_0x480c('0x10')][_0x480c('0x3a')])['then'](function(_0x362e99){_0x51d8b8(null,_['isNil'](_0x362e99)?![]:!![]);})[_0x480c('0x18')](function(_0x19dfab){logger[_0x480c('0x2e')](_0x19dfab);_0x51d8b8(null,![]);});};AGIVertices[_0x480c('0x13')][_0x480c('0x50')]=function(_0x4b6c51,_0x5c7621){var _0x4c6c47={'role':_0x480c('0x51')};_0x4c6c47[_0x4b6c51]=this[_0x480c('0x10')]['callerid'];this[_0x480c('0x11')][_0x480c('0x50')](_0x4c6c47)[_0x480c('0x16')](function(_0x13883b){_0x5c7621(null,_[_0x480c('0x46')](_0x13883b)?![]:!![]);})[_0x480c('0x18')](function(_0x4beddb){logger[_0x480c('0x2e')](_0x4beddb);_0x5c7621(null,![]);});};AGIVertices[_0x480c('0x13')]['agentLogout']=function(_0x22dad2,_0x1b7bb7){var _0x280bee={'role':_0x480c('0x51')};_0x280bee[_0x22dad2]=this[_0x480c('0x10')]['callerid'];this['rpc'][_0x480c('0x52')](_0x280bee)[_0x480c('0x16')](function(_0xb6128b){_0x1b7bb7(null,_[_0x480c('0x46')](_0xb6128b)?![]:!![]);})['catch'](function(_0x884593){logger[_0x480c('0x2e')](_0x884593);_0x1b7bb7(null,![]);});};AGIVertices[_0x480c('0x13')][_0x480c('0x53')]=function(_0x16d301,_0x489aa6){var _0x30b131={'role':_0x480c('0x51')};_0x30b131[_0x16d301]=this['channel'][_0x480c('0x3e')];var _0x1c6154=_0x16d301!='internal'?util[_0x480c('0x2b')](_0x480c('0x54'),_0x480c('0x55'),this[_0x480c('0x10')][_0x480c('0x3e')]):undefined;this[_0x480c('0x11')][_0x480c('0x53')](_0x30b131,_0x1c6154)[_0x480c('0x16')](function(_0x189419){_0x489aa6(null,_[_0x480c('0x46')](_0x189419)?![]:!![]);})[_0x480c('0x18')](function(_0x23902e){logger[_0x480c('0x2e')](_0x23902e);_0x489aa6(null,![]);});};AGIVertices[_0x480c('0x13')][_0x480c('0x56')]=function(_0x3c227e,_0x5f2859){sh[_0x480c('0x57')](_[_0x480c('0x58')](_0x3c227e),function(_0x4070b9,_0x25a92e){var _0x4cbb32=_0x25a92e[_0x480c('0x59')](/(\r\n|\n|\r)/gm,'');_0x5f2859(null,_0x4cbb32);});};AGIVertices['prototype'][_0x480c('0x5a')]=function(_0x404b5c,_0x139a39){scripts[_0x480c('0x5a')](_0x404b5c[_0x480c('0x5b')],_0x404b5c[_0x480c('0x5c')]||_0x480c('0x5d'),_0x404b5c[_0x480c('0x5d')],_0x404b5c[_0x480c('0x5e')]||'en-US',_0x404b5c[_0x480c('0x5f')]||'MALE',_0x404b5c[_0x480c('0x60')]||_0x480c('0x61'))[_0x480c('0x16')](function(_0x154952){_0x139a39(null,_0x154952);})[_0x480c('0x18')](function(_0x1eacc0){_0x139a39(_0x1eacc0);});};AGIVertices[_0x480c('0x13')][_0x480c('0x62')]=function(_0x349e05,_0x3f3fb2){scripts[_0x480c('0x62')](_0x349e05[_0x480c('0x5d')],_0x349e05['google_tts_language']||'en',0x1)[_0x480c('0x16')](function(_0x4728b9){_0x3f3fb2(null,_0x4728b9);})[_0x480c('0x18')](function(_0x464694){_0x3f3fb2(_0x464694);});};AGIVertices['prototype']['restAPI']=function(_0x45adc2,_0x311f51){var _0x514bd6={'uri':_0x45adc2[_0x480c('0x63')],'method':_0x45adc2['method'],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x45adc2[_0x480c('0x64')])===_0x480c('0x65')&&parseInt(_0x45adc2[_0x480c('0x64')])>=0x1?parseInt(_0x45adc2[_0x480c('0x64')])*0x3e8:0x5*0x3e8};if(_[_0x480c('0x66')]([_0x480c('0x67'),_0x480c('0x68')],_0x514bd6[_0x480c('0x69')][_0x480c('0x6a')]())){try{_0x514bd6[_0x480c('0x6b')]=_0x45adc2[_0x480c('0xd')]?JSON[_0x480c('0x6c')](_0x45adc2['rawBody']):{};}catch(_0x32cc00){logger['error'](_0x480c('0x6d'),_0x32cc00);}}try{_0x514bd6[_0x480c('0x6e')]=_0x45adc2['rawHeaders']?JSON[_0x480c('0x6c')](_0x45adc2[_0x480c('0xc')]):{};}catch(_0x1f11c4){logger[_0x480c('0x2e')]('An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function',_0x1f11c4);}if(_0x45adc2[_0x480c('0x6f')]){try{var _0x5833b5=require(_0x45adc2[_0x480c('0x6f')])['sync'](this,_0x514bd6);_0x514bd6['uri']=Mustache[_0x480c('0x70')](_0x45adc2[_0x480c('0x63')],_0x5833b5,{},['$$','$$']);if(_0x514bd6[_0x480c('0x6e')]){_0x514bd6[_0x480c('0x6e')]=JSON[_0x480c('0x6c')](Mustache[_0x480c('0x70')](JSON[_0x480c('0x71')](_0x514bd6[_0x480c('0x6e')]),_0x5833b5,{},['$$','$$']));}if(_0x514bd6[_0x480c('0x6b')]){_0x514bd6['body']=JSON[_0x480c('0x6c')](Mustache['render'](JSON[_0x480c('0x71')](_0x514bd6[_0x480c('0x6b')]),_0x5833b5,{},['$$','$$']));}}catch(_0x920309){logger[_0x480c('0x2e')](_0x480c('0x72'),_0x920309);}}rp(_0x514bd6)['then'](function(_0x5ea12d){var _0x4c4d3c={'statusCode':_0x5ea12d[_0x480c('0x73')]||0xc8,'statusMessage':_0x5ea12d['statusMessage']||'OK','headers':_0x5ea12d[_0x480c('0x6e')]||{},'body':_0x5ea12d[_0x480c('0x6b')]||{}};_0x311f51(null,_0x4c4d3c);})['catch'](function(_0x1978c2){var _0x505bb0={'statusCode':_0x1978c2['statusCode']||0x1f4,'statusMessage':_0x1978c2[_0x480c('0x74')]||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x1978c2[_0x480c('0x75')][_0x480c('0x6e')]||{},'body':_0x1978c2[_0x480c('0x75')][_0x480c('0x6b')]||{}};_0x311f51(null,_0x505bb0);});};AGIVertices['prototype']['googleDialogflow']=function(_0x43f2ad,_0x58adda){scripts[_0x480c('0x76')](this[_0x480c('0x10')][_0x480c('0x3a')],_0x43f2ad['key'],_0x43f2ad[_0x480c('0x5d')],_0x43f2ad[_0x480c('0x77')]||'en')[_0x480c('0x16')](function(_0x332040){_0x58adda(null,_0x332040);})['catch'](function(_0x40edb3){_0x58adda(_0x40edb3);});};AGIVertices[_0x480c('0x13')][_0x480c('0x78')]=function(_0x218fcf,_0x128fcd){scripts['googleDialogflowV2'](this[_0x480c('0x10')][_0x480c('0x3a')],_0x218fcf['dialogflowV2_project_id'],_0x218fcf['client_email'],_0x218fcf[_0x480c('0x79')],_0x218fcf[_0x480c('0x5d')],_0x218fcf[_0x480c('0x7a')]||'en')[_0x480c('0x16')](function(_0xf3f8f8){_0x128fcd(null,_0xf3f8f8);})[_0x480c('0x18')](function(_0x197f0d){_0x128fcd(_0x197f0d);});};AGIVertices[_0x480c('0x13')]['sestekNDA']=function(_0xf76e1d,_0x24027d){scripts[_0x480c('0x7b')](this[_0x480c('0x10')],_0xf76e1d)['then'](function(_0x53db69){_0x24027d(null,_0x53db69);})[_0x480c('0x18')](function(_0x17f20e){_0x24027d(_0x17f20e);});};AGIVertices[_0x480c('0x13')][_0x480c('0x7c')]=function(_0x174c79,_0xa2c1ed){scripts[_0x480c('0x7c')](_0x174c79[_0x480c('0x7d')],_0x174c79[_0x480c('0x5d')],_0x174c79['ispeech_tts_language']||_0x480c('0x7e'),_0x174c79[_0x480c('0x7f')])[_0x480c('0x16')](function(_0x446ec0){_0xa2c1ed(null,_0x446ec0);})[_0x480c('0x18')](function(_0x1845c1){_0xa2c1ed(_0x1845c1);});};AGIVertices[_0x480c('0x13')][_0x480c('0x80')]=function(_0x5bf64a,_0x5d4556,_0x594e7d){scripts[_0x480c('0x80')](_0x5d4556,_0x5bf64a[_0x480c('0x7d')],_0x5bf64a[_0x480c('0x81')]||'en-US',this[_0x480c('0x82')](_0x5bf64a[_0x480c('0x83')])?_0x5bf64a[_0x480c('0x83')]:undefined)[_0x480c('0x16')](function(_0x38ecb9){_0x594e7d(null,_0x38ecb9);})['catch'](function(_0x5b4433){_0x594e7d(_0x5b4433);});};AGIVertices[_0x480c('0x13')][_0x480c('0x84')]=function(_0x22d958,_0x114810){scripts['awsPolly'](_0x22d958[_0x480c('0x85')],_0x22d958[_0x480c('0x86')],_0x22d958[_0x480c('0x87')],_0x22d958[_0x480c('0x88')]||_0x480c('0x89'),_0x22d958['text'],_0x22d958['aws_text_type']||_0x480c('0x5d'))[_0x480c('0x16')](function(_0x5315cf){_0x114810(null,_0x5315cf);})['catch'](function(_0x1d89ec){_0x114810(_0x1d89ec);});};AGIVertices[_0x480c('0x13')][_0x480c('0x8a')]=function(_0x382d5b,_0x1da6e2){scripts['awsLex'](this[_0x480c('0x10')][_0x480c('0x3a')],_0x382d5b['aws_access_key_id'],_0x382d5b[_0x480c('0x86')],_0x382d5b[_0x480c('0x8b')],_0x382d5b[_0x480c('0x5d')],_0x382d5b[_0x480c('0x8c')])[_0x480c('0x16')](function(_0x2f163f){_0x1da6e2(null,_0x2f163f);})[_0x480c('0x18')](function(_0x410946){_0x1da6e2(_0x410946);});};AGIVertices[_0x480c('0x13')][_0x480c('0x8d')]=function(_0x454c72,_0x403bb5,_0x552bdb){scripts[_0x480c('0x8d')](_0x403bb5,_0x454c72[_0x480c('0x7d')],_0x454c72['google_asr_language']||'en-US')[_0x480c('0x16')](function(_0x370ce7){_0x552bdb(null,_0x370ce7);})[_0x480c('0x18')](function(_0x22adfd){_0x552bdb(_0x22adfd);});};AGIVertices[_0x480c('0x13')][_0x480c('0x8e')]=function(_0xff8bff,_0x22039c,_0x42173a){scripts[_0x480c('0x8e')](_0x22039c,_0xff8bff['appid'],_0xff8bff[_0x480c('0x8f')],_0xff8bff[_0x480c('0x90')])[_0x480c('0x16')](function(_0x55cbef){_0x42173a(null,_0x55cbef);})[_0x480c('0x18')](function(_0x27f462){_0x42173a(_0x27f462);});};AGIVertices[_0x480c('0x13')][_0x480c('0x91')]=function(_0x2675b0){var _0x1344a0=_[_0x480c('0x66')](verticesWithRetry,_0x2675b0[_0x480c('0x3c')])?_0x2675b0:_[_0x480c('0x92')](_0x2675b0);for(var _0x46422b in _0x1344a0){if(_0x1344a0[_0x480c('0x93')](_0x46422b)){if(_0x1344a0[_0x46422b]&&_[_0x480c('0x94')](_0x1344a0[_0x46422b])){if(_[_0x480c('0x66')](recursiveMapAttributes,_0x46422b)){_0x1344a0[_0x46422b]=this[_0x480c('0x95')](_0x1344a0[_0x46422b]);}else{_0x1344a0[_0x46422b]=this[_0x480c('0x96')](_0x1344a0[_0x46422b]);}}}}return _0x1344a0;};AGIVertices[_0x480c('0x13')]['recursiveNodeIndex']=function(_0x523b61){for(var _0x5df9bb in _0x523b61){if(_0x523b61[_0x480c('0x93')](_0x5df9bb)){if(_[_0x480c('0x97')](_0x523b61[_0x5df9bb])){this[_0x480c('0x98')](_0x523b61[_0x5df9bb]);}else if(_[_0x480c('0x99')](_0x523b61[_0x5df9bb])){for(var _0xa1a6d5=0x0;_0xa1a6d5<_0x523b61[_0x5df9bb][_0x480c('0x9a')];_0xa1a6d5++){this[_0x480c('0x98')](_0x523b61[_0x5df9bb][_0xa1a6d5]);}}else if(_['isString'](_0x523b61[_0x5df9bb])){_0x523b61[_0x5df9bb]=this[_0x480c('0x96')](_0x523b61[_0x5df9bb]);}}}};AGIVertices['prototype'][_0x480c('0x9b')]=function(_0x2b7d5c,_0x5b9894){for(var _0x5591a0 in _0x2b7d5c){if(_0x2b7d5c[_0x480c('0x93')](_0x5591a0)){if(_['isPlainObject'](_0x2b7d5c[_0x5591a0])){if(!_[_0x480c('0x45')](_0x2b7d5c[_0x5591a0])){this[_0x480c('0x9b')](_0x2b7d5c[_0x5591a0],util[_0x480c('0x2b')]('%s.%s',_0x5b9894,_0x5591a0));}}else if(_[_0x480c('0x99')](_0x2b7d5c[_0x5591a0])){for(var _0xfec2e4=0x0;_0xfec2e4<_0x2b7d5c[_0x5591a0][_0x480c('0x9a')];_0xfec2e4++){this['saveRestApiResult'](_0x2b7d5c[_0x5591a0][_0xfec2e4],util[_0x480c('0x2b')](_0x480c('0x9c'),_0x5b9894,_0x5591a0+'['+_0xfec2e4+']'));}}else{if(!_[_0x480c('0x46')](_0x2b7d5c[_0x5591a0])){this['channel'][_0x480c('0x9d')](util['format'](_0x480c('0x9c'),_0x5b9894,_0x5591a0),_0x2b7d5c[_0x5591a0]);}}}}};AGIVertices['prototype'][_0x480c('0x95')]=function(_0x5addfb){try{var _0x37b0ce=JSON['parse'](_0x5addfb);this[_0x480c('0x98')](_0x37b0ce);return JSON[_0x480c('0x71')](_0x37b0ce);}catch(_0x95e174){return this['replaceAllVariables'](_0x5addfb);}};AGIVertices[_0x480c('0x13')][_0x480c('0x96')]=function(_0x9ec6a7){var _0x3b49d5=_0x9ec6a7[_0x480c('0x9e')]('{');for(var _0xbf36f0=0x1;_0xbf36f0<_0x3b49d5[_0x480c('0x9a')];_0xbf36f0+=0x1){var _0x19e32b=_0x3b49d5[_0xbf36f0]['split']('}');if(_0x19e32b['length']>0x1){_0x9ec6a7=_0x9ec6a7[_0x480c('0x9f')]('{'+_0x19e32b[0x0]+'}',this[_0x480c('0x10')][_0x480c('0x14')](_0x19e32b[0x0])[_0x480c('0xa0')]||_0x19e32b[0x0]);}}if(_0x3b49d5['length']===0x1){return _0x9ec6a7[_0x480c('0x4c')]();}return this[_0x480c('0x96')](_0x9ec6a7);};AGIVertices['prototype'][_0x480c('0xa1')]=function(_0x14bf64,_0xfdad1d){var _0x3b6a50=this['channel'][_0x480c('0x14')](_0x14bf64);if(_0x3b6a50[_0x480c('0xa2')]===-0x1){return _0x3b6a50;}logger[_0x480c('0x33')](util[_0x480c('0x2b')]('The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s',_0xfdad1d,_0x3b6a50[_0x480c('0xa0')]));return this['channel'][_0x480c('0x9d')](_0xfdad1d,_0x3b6a50['extra']);};AGIVertices[_0x480c('0x13')][_0x480c('0x82')]=function(_0x24a2ca){return _0x24a2ca&&_0x24a2ca!=='0'&&_0x24a2ca!=='-1'&&_0x24a2ca!=='';};AGIVertices[_0x480c('0x13')][_0x480c('0xa3')]=function(_0xd88a4d){this[_0x480c('0x39')][_0x480c('0xa4')](this,_0xd88a4d,'-');_0xd88a4d[_0x480c('0xa5')]=_0xd88a4d[_0x480c('0xa3')];return{'code':0xc8,'result':'-'};};AGIVertices['prototype'][_0x480c('0xa6')]=function(_0x566fe8){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0xa7'),_0x566fe8['label']));if(!this[_0x480c('0x82')](_0x566fe8[_0x480c('0x5d')])){return this['channel']['noop']('no\x20text\x20configured');}var _0x150650='\x22'+_0x566fe8[_0x480c('0x5d')]+'\x22';if(this[_0x480c('0x82')](_0x566fe8[_0x480c('0x75')])){_0x150650+=','+_0x566fe8['options'];}var _0x187960=this['channel'][_0x480c('0x57')]('MRCPSynth',_0x150650);if(_0x187960['result']===-0x1){return _0x187960;}return this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')]('Executed\x20command\x20MRCPSynth\x20%s',_0x150650));};AGIVertices[_0x480c('0x13')][_0x480c('0xa9')]=function(_0x3b9a68){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0xaa'),_0x3b9a68[_0x480c('0x3b')]));if(!this[_0x480c('0x82')](_0x3b9a68[_0x480c('0xab')])){return this[_0x480c('0x10')][_0x480c('0xa8')](_0x480c('0xac'));}var _0x400ed0=_0x3b9a68[_0x480c('0xab')];if(this[_0x480c('0x82')](_0x3b9a68[_0x480c('0x75')])){_0x400ed0+=','+_0x3b9a68[_0x480c('0x75')];}var _0x201258=this['channel'][_0x480c('0x57')]('MRCPRecog',_0x400ed0);if(_0x201258[_0x480c('0xa2')]===-0x1){return _0x201258;}var _0x576bb7=this['getAndSetVariable'](_0x480c('0xad'),_0x480c('0xae'));if(_0x576bb7[_0x480c('0xa2')]===-0x1){return _0x576bb7;}var _0x1fe9a6=this[_0x480c('0xa1')](_0x480c('0xaf'),_0x480c('0xb0'));if(_0x1fe9a6[_0x480c('0xa2')]===-0x1){return _0x1fe9a6;}var _0x2580ef=this['getAndSetVariable'](_0x480c('0xb1'),'MRCP_RECOG_INSTANCE');if(_0x2580ef[_0x480c('0xa2')]===-0x1){return _0x2580ef;}return this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')]('Executed\x20command\x20MRCPRecog\x20%s',_0x400ed0));};AGIVertices['prototype'][_0x480c('0x8')]=function(_0x494d96){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0xb2'),_0x494d96[_0x480c('0x3b')]));return this['channel'][_0x480c('0x8')]([_0x494d96['command'],_0x494d96['args']]);};AGIVertices[_0x480c('0x13')]['answer']=function(_0x111c02){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0xb3'),_0x111c02[_0x480c('0x3b')]));if(this[_0x480c('0x82')](_0x111c02[_0x480c('0x64')])){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0xb4'),_0x111c02[_0x480c('0x64')]));var _0x4cc514=this['channel'][_0x480c('0xb5')](_0x111c02[_0x480c('0x64')]);if(_0x4cc514[_0x480c('0xa2')]===-0x1){return _0x4cc514;}}return this['channel']['answer']();};AGIVertices[_0x480c('0x13')][_0x480c('0x49')]=function(_0x228016){logger[_0x480c('0x33')](util[_0x480c('0x2b')]('Enter\x20in\x20CALLBACK\x20(%s)\x20block',_0x228016[_0x480c('0x3b')]));if(!this[_0x480c('0x82')](_0x228016[_0x480c('0x48')])){return this[_0x480c('0x10')][_0x480c('0x2e')](_0x228016,'no\x20list\x20selected');}_0x228016[_0x480c('0x4b')]=moment();if(this[_0x480c('0x82')](_0x228016[_0x480c('0xb6')])){_0x228016['scheduledAt']=moment()[_0x480c('0xb7')](_0x228016[_0x480c('0xb6')],'minutes');}if(!this[_0x480c('0x82')](_0x228016[_0x480c('0xb8')])){_0x228016[_0x480c('0xb8')]=0x2;}this['createCmContact'][_0x480c('0xa4')](this,_0x228016);return this[_0x480c('0x10')]['noop'](util[_0x480c('0x2b')](_0x480c('0xb9'),_0x228016[_0x480c('0xba')],_0x228016[_0x480c('0x48')],_0x228016['scheduledAt']));};AGIVertices['prototype'][_0x480c('0xbb')]=function(_0x3e3a19){logger[_0x480c('0x33')](util[_0x480c('0x2b')]('Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block',_0x3e3a19['label']));var _0x4f6b49=this[_0x480c('0x10')]['exec'](_0x3e3a19[_0x480c('0xbc')],_0x3e3a19[_0x480c('0x75')]);if(_0x4f6b49['result']===-0x1){return _0x4f6b49;}return this['channel'][_0x480c('0xa8')](util[_0x480c('0x2b')](_0x480c('0xbd'),_0x3e3a19['application'],_0x3e3a19[_0x480c('0x75')]));};AGIVertices[_0x480c('0x13')][_0x480c('0xbe')]=function(_0x68b021){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0xbf'),_0x68b021[_0x480c('0x3b')]));if(!this[_0x480c('0x82')](_0x68b021['text'])){return this[_0x480c('0x10')][_0x480c('0xa8')](_0x480c('0xc0'));}var _0x4b8f83='\x22'+_0x68b021[_0x480c('0x5d')]+'\x22';if(this[_0x480c('0x82')](_0x68b021[_0x480c('0x75')])){_0x4b8f83+=','+_0x68b021[_0x480c('0x75')];}var _0x45e259=this[_0x480c('0x10')][_0x480c('0x57')](_0x480c('0xc1'),_0x4b8f83);if(_0x45e259[_0x480c('0xa2')]===-0x1){return _0x45e259;}return this['channel'][_0x480c('0xa8')](util[_0x480c('0x2b')](_0x480c('0xc2'),_0x4b8f83));};AGIVertices['prototype'][_0x480c('0xc3')]=function(_0x29c23e){logger[_0x480c('0x33')](util[_0x480c('0x2b')]('Enter\x20in\x20SESTEKTTS\x20(%s)\x20block',_0x29c23e[_0x480c('0x3b')]));if(!this[_0x480c('0x82')](_0x29c23e[_0x480c('0x5d')])){return this[_0x480c('0x10')][_0x480c('0xa8')](_0x480c('0xc0'));}var _0x5b1416='\x22'+_0x29c23e[_0x480c('0x5d')]+'\x22';if(this['isConfigured'](_0x29c23e[_0x480c('0x75')])){_0x5b1416+=','+_0x29c23e['options'];}var _0xe620da=this[_0x480c('0x10')][_0x480c('0x57')]('MRCPSynth',_0x5b1416);if(_0xe620da[_0x480c('0xa2')]===-0x1){return _0xe620da;}return this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')](_0x480c('0xc2'),_0x5b1416));};AGIVertices[_0x480c('0x13')][_0x480c('0xc4')]=function(_0x1b2364){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0xc5'),_0x1b2364[_0x480c('0x3b')]));if(!this[_0x480c('0x82')](_0x1b2364[_0x480c('0xab')])){return this[_0x480c('0x10')]['noop'](_0x480c('0xac'));}var _0x2bb7fc=_0x1b2364['grammar'];if(this[_0x480c('0x82')](_0x1b2364['options'])){_0x2bb7fc+=','+_0x1b2364[_0x480c('0x75')];}var _0x565f5a=this[_0x480c('0x10')]['exec'](_0x480c('0xc6'),_0x2bb7fc);if(_0x565f5a[_0x480c('0xa2')]===-0x1){return _0x565f5a;}var _0x25a874=this[_0x480c('0xa1')](_0x480c('0xad'),_0x480c('0xc7'));if(_0x25a874[_0x480c('0xa2')]===-0x1){return _0x25a874;}var _0x110d94=this[_0x480c('0xa1')](_0x480c('0xaf'),_0x480c('0xc8'));if(_0x110d94['result']===-0x1){return _0x110d94;}var _0xb66563=this['getAndSetVariable'](_0x480c('0xb1'),'LUMENVOX_ASR_INSTANCE');if(_0xb66563[_0x480c('0xa2')]===-0x1){return _0xb66563;}return this['channel']['noop'](util[_0x480c('0x2b')](_0x480c('0xc9'),_0x2bb7fc));};AGIVertices[_0x480c('0x13')][_0x480c('0xca')]=function(_0x33ceac){logger[_0x480c('0x33')](util['format'](_0x480c('0xcb'),_0x33ceac[_0x480c('0x3b')]));if(!this[_0x480c('0x82')](_0x33ceac[_0x480c('0xab')])){return this[_0x480c('0x10')][_0x480c('0xa8')](_0x480c('0xac'));}var _0x397a99=_0x33ceac[_0x480c('0xab')];if(this[_0x480c('0x82')](_0x33ceac['options'])){_0x397a99+=','+_0x33ceac['options'];}var _0x2e28bc=this[_0x480c('0x10')][_0x480c('0x57')](_0x480c('0xc6'),_0x397a99);if(_0x2e28bc[_0x480c('0xa2')]===-0x1){return _0x2e28bc;}var _0x1c284d=this[_0x480c('0xa1')](_0x480c('0xad'),'SESTEK_ASR_CONFIDENCE');if(_0x1c284d['result']===-0x1){return _0x1c284d;}var _0x32c6cf=this['getAndSetVariable']('RECOG_INPUT()',_0x480c('0xcc'));if(_0x32c6cf[_0x480c('0xa2')]===-0x1){return _0x32c6cf;}var _0x5978c6=this['getAndSetVariable'](_0x480c('0xb1'),_0x480c('0xcd'));if(_0x5978c6[_0x480c('0xa2')]===-0x1){return _0x5978c6;}return this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')](_0x480c('0xc9'),_0x397a99));};AGIVertices[_0x480c('0x13')][_0x480c('0xce')]=function(_0x128cc8){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0xcf'),_0x128cc8['label']));if(!this[_0x480c('0x82')](_0x128cc8[_0x480c('0xd0')])){return this[_0x480c('0x10')][_0x480c('0x2e')](_0x128cc8,_0x480c('0xd1'));}var _0x2e12ce=this[_0x480c('0x1b')][_0x480c('0xa4')](this,_0x128cc8[_0x480c('0xd0')]);if(!_0x2e12ce){return this[_0x480c('0x10')][_0x480c('0x2e')](_0x128cc8,'no\x20odbc\x20database\x20found');}if(!this['isConfigured'](_0x128cc8[_0x480c('0x31')])){return this[_0x480c('0x10')][_0x480c('0x2e')](_0x128cc8,_0x480c('0xd2'));}var _0x2d2fe9=_0x128cc8[_0x480c('0x31')][_0x480c('0x59')](/(\r\n|\n|\r)/gm,'\x20');this[_0x480c('0x10')][_0x480c('0xa8')](util['format'](_0x480c('0xd3'),_0x2d2fe9));var _0x152bf9=this['getQueryOdbc']['sync'](this,_0x2e12ce,_0x2d2fe9);this[_0x480c('0x39')][_0x480c('0xa4')](this,_0x128cc8,_0x2d2fe9);if(!this[_0x480c('0x82')](_0x128cc8['variable_id'])){return this['channel']['noop']('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x193818=this['getVariable'][_0x480c('0xa4')](this,_0x128cc8['variable_id']);if(!_0x193818){return this[_0x480c('0x10')]['error'](_0x128cc8,_0x480c('0xd4'));}var _0xeac456=this;_0x152bf9[_0x480c('0xd5')](function(_0xdd0ceb,_0x27de7d){Object[_0x480c('0xd6')](_0xdd0ceb)['forEach'](function(_0x1fd34f){_0xeac456['channel']['setVariable'](util['format']('%s[%s][%s]',_0x193818,_0x27de7d,_0x1fd34f),_0xdd0ceb[_0x1fd34f]);});});this['channel'][_0x480c('0x9d')](util['format'](_0x480c('0xd7'),_0x193818),_0x152bf9[_0x480c('0x9a')]);return this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')](_0x480c('0xd8'),_0x193818));};AGIVertices['prototype'][_0x480c('0xd9')]=function(_0x56cd4b){logger[_0x480c('0xda')](util[_0x480c('0x2b')](_0x480c('0xdb'),_0x56cd4b[_0x480c('0x3b')]));if(!this[_0x480c('0x82')](_0x56cd4b[_0x480c('0xdc')])){return this[_0x480c('0x10')][_0x480c('0x2e')](_0x56cd4b,_0x480c('0xdd'));}var _0x5de5a5=this['getUser']['sync'](this,_0x56cd4b[_0x480c('0xdc')]);if(!_0x5de5a5){return this[_0x480c('0x10')][_0x480c('0x2e')](_0x56cd4b,_0x480c('0xde'));}var _0x221043=this['channel'][_0x480c('0x57')](_0x480c('0xdf'),[util[_0x480c('0x2b')](_0x480c('0xe0'),_0x5de5a5),_0x56cd4b[_0x480c('0x64')],_0x56cd4b['opts'],_0x56cd4b['url']]);if(_0x221043[_0x480c('0xa2')]===-0x1){return _0x221043;}return this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')](_0x480c('0xe1'),_0x480c('0xdf')));};AGIVertices[_0x480c('0x13')][_0x480c('0xe2')]=function(_0x255286){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0xe3'),_0x255286[_0x480c('0x3b')]));if(!this[_0x480c('0x82')](_0x255286['key'])){return this[_0x480c('0x10')][_0x480c('0xa8')](_0x480c('0xe4'));}if(!this[_0x480c('0x82')](_0x255286[_0x480c('0x5d')])){return this['channel'][_0x480c('0xa8')](_0x480c('0xc0'));}this[_0x480c('0x10')][_0x480c('0xe5')]=!![];this[_0x480c('0x39')](_0x255286);this[_0x480c('0x43')](_0x255286[_0x480c('0x5d')],'in','','');this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')](_0x480c('0xe6'),_0x255286[_0x480c('0x5d')]));var _0x156d81=this['googleDialogflow']['sync'](this,_0x255286);if(_0x156d81){for(var _0x1e74c4 in _0x156d81){if(_0x156d81[_0x480c('0x93')](_0x1e74c4)){this['channel'][_0x480c('0x9d')](util['format'](_0x480c('0xe7'),_0x1e74c4[_0x480c('0x6a')]()),_0x156d81[_0x1e74c4]);}}this[_0x480c('0x43')](_0x156d81[_0x480c('0xe8')],_0x480c('0xe9'),'dialogflow','');return this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')](_0x480c('0xea'),_0x156d81[_0x480c('0xe8')]));}return this['channel'][_0x480c('0x2e')](_0x255286,_0x480c('0xeb'));};AGIVertices[_0x480c('0x13')]['dialogflowV2']=function(_0x410769){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0xec'),_0x410769[_0x480c('0x3b')]));if(!this[_0x480c('0x82')](_0x410769['dialogflowV2_project_id'])){return this[_0x480c('0x10')][_0x480c('0xa8')]('no\x20project_id\x20configured');}if(!this[_0x480c('0x82')](_0x410769['client_email'])){return this[_0x480c('0x10')][_0x480c('0xa8')](_0x480c('0xed'));}if(!this[_0x480c('0x82')](_0x410769[_0x480c('0x79')])){return this[_0x480c('0x10')]['noop'](_0x480c('0xee'));}if(!this[_0x480c('0x82')](_0x410769[_0x480c('0x7a')])){return this[_0x480c('0x10')]['noop'](_0x480c('0xef'));}if(!this[_0x480c('0x82')](_0x410769[_0x480c('0x5d')])){return this[_0x480c('0x10')][_0x480c('0xa8')]('no\x20text\x20configured');}this['channel'][_0x480c('0xe5')]=!![];this['createSquareDetailsReport'](_0x410769);this['createSquareMessage'](_0x410769[_0x480c('0x5d')],'in','','');this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')](_0x480c('0xf0'),_0x410769['text']));var _0x26bfdd=this[_0x480c('0x78')][_0x480c('0xa4')](this,_0x410769);if(_0x26bfdd){for(var _0x440432 in _0x26bfdd){if(_0x26bfdd[_0x480c('0x93')](_0x440432)){if(_0x440432!==_0x480c('0xf1')){this['channel'][_0x480c('0x9d')](util['format'](_0x480c('0xe7'),_0x440432[_0x480c('0x6a')]()),_0x26bfdd[_0x440432]);}}}this['createSquareMessage'](_0x26bfdd[_0x480c('0xe8')],'out',_0x480c('0xf2'),_0x26bfdd['providerResponse']);return this[_0x480c('0x10')][_0x480c('0xa8')](util['format'](_0x480c('0xf3'),_0x26bfdd[_0x480c('0xe8')]));}return this[_0x480c('0x10')]['error'](_0x410769,'DialogflowV2\x20is\x20unreachable');};AGIVertices[_0x480c('0x13')]['sesteknda']=function(_0x38019f){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0xf4'),_0x38019f['label']));if(!this['isConfigured'](_0x38019f[_0x480c('0xf5')])){return this['channel']['noop'](_0x480c('0xf6'));}if(!this[_0x480c('0x82')](_0x38019f[_0x480c('0xf7')])){return this['channel'][_0x480c('0xa8')]('no\x20username\x20configured');}if(!this[_0x480c('0x82')](_0x38019f['password'])){return this[_0x480c('0x10')][_0x480c('0xa8')](_0x480c('0xf8'));}if(!this['isConfigured'](_0x38019f[_0x480c('0xf9')])){return this[_0x480c('0x10')][_0x480c('0xa8')](_0x480c('0xc0'));}this[_0x480c('0x10')][_0x480c('0xe5')]=!![];this[_0x480c('0x39')](_0x38019f);this[_0x480c('0x43')](_0x38019f[_0x480c('0x5d')],'in','','');this[_0x480c('0x10')][_0x480c('0xa8')](util['format']('Trying\x20SestekNDA:\x20%s',_0x38019f[_0x480c('0x5d')]));var _0x1b9941=this[_0x480c('0x7b')]['sync'](this,_0x38019f);if(_0x1b9941){for(var _0x45e08b in _0x1b9941){if(_0x1b9941[_0x480c('0x93')](_0x45e08b)){this[_0x480c('0x10')][_0x480c('0x9d')](util[_0x480c('0x2b')](_0x480c('0xfa'),_0x45e08b[_0x480c('0x6a')]()),_0x1b9941[_0x45e08b]);}}this['createSquareMessage'](_0x1b9941['speech'],'out',_0x480c('0xfb'),'');if(_0x1b9941[_0x480c('0xfc')]){this['channel']['noop'](util[_0x480c('0x2b')](_0x480c('0xfd'),_0x1b9941[_0x480c('0xfc')]));var _0x544467=this[_0x480c('0x10')][_0x480c('0xfe')](_0x1b9941[_0x480c('0xfc')]);try{fs[_0x480c('0xff')](_0x1b9941[_0x480c('0xfc')]+_0x480c('0x100'));}catch(_0x1933eb){logger['error'](_0x1933eb);}return _0x544467;}else{return this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')](_0x480c('0x101'),_0x1b9941[_0x480c('0xe8')]));}}return this[_0x480c('0x10')][_0x480c('0x2e')](_0x38019f,_0x480c('0x102'));};AGIVertices[_0x480c('0x13')]['end']=function(_0x4ac2b5){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0x103'),_0x4ac2b5[_0x480c('0x3b')]));return this[_0x480c('0x10')][_0x480c('0xa8')]('end');};AGIVertices[_0x480c('0x13')]['ext_dial']=function(_0x3a6d72){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0x104'),_0x3a6d72[_0x480c('0x3b')]));var _0x1c1d20='';if(_0x3a6d72['trunk_id']){if(!this[_0x480c('0x82')](_0x3a6d72[_0x480c('0x105')])){return this[_0x480c('0x10')][_0x480c('0x2e')](_0x3a6d72,_0x480c('0x106'));}else{var _0x2a0f24=parseInt(_0x3a6d72[_0x480c('0x105')],0xa);if(isNaN(_0x2a0f24)){_0x1c1d20=_0x3a6d72[_0x480c('0x105')];}else{_0x1c1d20=this[_0x480c('0x1f')][_0x480c('0xa4')](this,_0x3a6d72[_0x480c('0x105')]);if(!_0x1c1d20){return this['channel'][_0x480c('0x2e')](_0x3a6d72,'no\x20trunk\x20found');}}}}else if(_0x3a6d72[_0x480c('0x107')]){_0x1c1d20=_0x3a6d72[_0x480c('0x107')];}else{return this[_0x480c('0x10')][_0x480c('0x2e')](_0x3a6d72,_0x480c('0x106'));}var _0x588398=this[_0x480c('0x10')][_0x480c('0x57')](_0x480c('0xdf'),[util[_0x480c('0x2b')](_0x480c('0x108'),_0x1c1d20,_0x3a6d72[_0x480c('0xba')]),_0x3a6d72['timeout'],_0x3a6d72[_0x480c('0x109')],_0x3a6d72[_0x480c('0x63')]]);if(_0x588398[_0x480c('0xa2')]===-0x1){return _0x588398;}return this['channel'][_0x480c('0xa8')](util[_0x480c('0x2b')](_0x480c('0xe1'),'DIAL'));};AGIVertices[_0x480c('0x13')][_0x480c('0x10a')]=function(_0x4c6de7){logger['info'](util[_0x480c('0x2b')](_0x480c('0x10b'),_0x4c6de7['label']));return this[_0x480c('0x10')][_0x480c('0xa8')](_0x480c('0x10a'));};AGIVertices[_0x480c('0x13')]['getdigits']=function(_0x364818){logger[_0x480c('0x33')](util['format'](_0x480c('0x10c'),_0x364818[_0x480c('0x3b')]));if(_0x364818[_0x480c('0xa5')]===0x0){return this['maxRetry'](_0x364818);}_0x364818['retry']-=0x1;if(!this[_0x480c('0x82')](_0x364818['file_id'])){return this[_0x480c('0x10')]['error'](_0x364818,_0x480c('0x10d'));}var _0x56e41a=this[_0x480c('0x10e')][_0x480c('0xa4')](this,_0x364818[_0x480c('0x10f')]);if(!_0x56e41a){return this[_0x480c('0x10')]['error'](_0x364818,_0x480c('0x110'));}if(!this['isConfigured'](_0x364818['variable_id'])){return this[_0x480c('0x10')][_0x480c('0x2e')](_0x480c('0x111'));}var _0x12c42d=this['channel'][_0x480c('0x112')](_0x56e41a,_0x364818[_0x480c('0x113')],_0x364818[_0x480c('0x114')]);var _0x48fb78=_0x12c42d[_0x480c('0xa2')]?_0x12c42d[_0x480c('0xa2')][_0x480c('0x4c')]():'';logger[_0x480c('0x33')](_0x480c('0x115'),JSON[_0x480c('0x71')](_0x12c42d));if(_0x12c42d['result']===-0x1){this[_0x480c('0x39')][_0x480c('0xa4')](this,_0x364818,_0x48fb78);return _0x12c42d;}else if(_0x12c42d[_0x480c('0xa0')]===_0x480c('0x64')){_0x12c42d[_0x480c('0xa2')]=_0x48fb78[_0x480c('0x9a')]>=parseInt(_0x364818[_0x480c('0x116')])?'x':'i';}else{_0x12c42d[_0x480c('0xa2')]=_0x48fb78[_0x480c('0x9a')]>=parseInt(_0x364818['mindigit'])&&_0x48fb78['length']<=parseInt(_0x364818['maxdigit'])?'x':'i';}var _0xd0c990=this[_0x480c('0x14')][_0x480c('0xa4')](this,_0x364818[_0x480c('0x117')]);if(!_0xd0c990){return this['channel'][_0x480c('0x2e')](_0x364818,'no\x20variable\x20found');}this['channel'][_0x480c('0x9d')](_0xd0c990,_0x48fb78);if(this[_0x480c('0x82')](_0x364818[_0x480c('0x118')])){var _0x12b9b3=parseInt(_0x364818['hiddendigitsnum'],0xa);var _0x2f918f=rs['generate']({'charset':'*','length':_0x12b9b3});var _0x1a944d=_0x48fb78['length'];if(_0x1a944d>0x0){if(_0x1a944d>_0x12b9b3){this[_0x480c('0x39')][_0x480c('0xa4')](this,_0x364818,_0x364818[_0x480c('0x119')]===_0x480c('0x11a')?_0x2f918f+_0x48fb78['substr'](_0x12b9b3):_0x48fb78[_0x480c('0x11b')](0x0,_0x1a944d-_0x12b9b3)+_0x2f918f);}else{this[_0x480c('0x39')][_0x480c('0xa4')](this,_0x364818,rs[_0x480c('0x11c')]({'charset':'*','length':_0x1a944d}));}}else{this['createSquareDetailsReport'][_0x480c('0xa4')](this,_0x364818,'');}}else{this['createSquareDetailsReport'][_0x480c('0xa4')](this,_0x364818,_0x48fb78);}return _0x12c42d;};AGIVertices['prototype']['getsecretdigits']=function(_0x495464){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0x11d'),_0x495464[_0x480c('0x3b')]));return this[_0x480c('0xf')](_0x495464);};AGIVertices[_0x480c('0x13')][_0x480c('0x11e')]=function(_0x163a6f){logger['info'](util[_0x480c('0x2b')]('Enter\x20in\x20GOAL\x20(%s)\x20block',_0x163a6f[_0x480c('0x3b')]));this[_0x480c('0x39')][_0x480c('0xa4')](this,_0x163a6f,_0x163a6f[_0x480c('0x11f')]);return this['channel'][_0x480c('0xa8')](util['format'](_0x480c('0x120'),_0x163a6f[_0x480c('0x11f')]));};AGIVertices[_0x480c('0x13')]['awspolly']=function(_0x4d3234){logger['info'](util[_0x480c('0x2b')](_0x480c('0x121'),_0x4d3234[_0x480c('0x3b')]));if(!this[_0x480c('0x82')](_0x4d3234['aws_access_key_id'])||!this[_0x480c('0x82')](_0x4d3234[_0x480c('0x86')])){return this[_0x480c('0x10')]['noop'](_0x480c('0x122'));}if(!this[_0x480c('0x82')](_0x4d3234[_0x480c('0x5d')])){return this[_0x480c('0x10')][_0x480c('0xa8')](_0x480c('0xc0'));}this[_0x480c('0x10')][_0x480c('0xa8')](util['format'](_0x480c('0x123'),_0x4d3234[_0x480c('0x5d')]));var _0x192794=this[_0x480c('0x84')]['sync'](this,_0x4d3234);if(_0x192794){this['channel'][_0x480c('0xa8')](util['format'](_0x480c('0x124'),_0x192794));var _0x20d0a1=this[_0x480c('0x10')]['streamFile'](_0x192794);try{fs[_0x480c('0xff')](_0x192794+_0x480c('0x100'));}catch(_0x4bb18b){logger[_0x480c('0x2e')](_0x4bb18b);}return _0x20d0a1;}return this['channel']['error'](_0x4d3234,'aws\x20Polly\x20is\x20unreachable');};AGIVertices['prototype'][_0x480c('0x125')]=function(_0x116c1d){logger['info'](util[_0x480c('0x2b')]('Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block',_0x116c1d[_0x480c('0x3b')]));if(!this['isConfigured'](_0x116c1d[_0x480c('0x85')])||!this[_0x480c('0x82')](_0x116c1d[_0x480c('0x86')])){return this[_0x480c('0x10')][_0x480c('0xa8')]('no\x20valid\x20credentials\x20configured');}if(!this[_0x480c('0x82')](_0x116c1d['aws_bot_name'])){return this['channel'][_0x480c('0xa8')](_0x480c('0x126'));}if(!this[_0x480c('0x82')](_0x116c1d['text'])){return this[_0x480c('0x10')][_0x480c('0xa8')](_0x480c('0xc0'));}this[_0x480c('0x10')][_0x480c('0xe5')]=!![];this['createSquareDetailsReport'](_0x116c1d);this['createSquareMessage'](_0x116c1d[_0x480c('0x5d')],'in','','');this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')](_0x480c('0x127'),_0x116c1d[_0x480c('0x5d')]));var _0x2e0008=this[_0x480c('0x8a')]['sync'](this,_0x116c1d);if(_0x2e0008){for(var _0x77051b in _0x2e0008){if(_0x2e0008[_0x480c('0x93')](_0x77051b)&&_['isString'](_0x2e0008[_0x77051b])){this[_0x480c('0x10')]['setVariable'](util[_0x480c('0x2b')](_0x480c('0x128'),_0x77051b[_0x480c('0x6a')]()),_0x2e0008[_0x77051b]);}}if(_[_0x480c('0x46')](_0x2e0008[_0x480c('0x74')])){return this[_0x480c('0x10')][_0x480c('0xa8')](_0x480c('0x129'));}else{this['createSquareMessage'](_0x2e0008[_0x480c('0x74')],_0x480c('0xe9'),_0x480c('0x12a'),'');return this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')](_0x480c('0x12b'),_0x2e0008[_0x480c('0x74')]));}}return this[_0x480c('0x10')][_0x480c('0x2e')](_0x116c1d,_0x480c('0x12c'));};AGIVertices[_0x480c('0x13')][_0x480c('0x12d')]=function(_0x51e5e4){logger[_0x480c('0x33')](util[_0x480c('0x2b')]('Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s',_0x51e5e4['label'],_0x51e5e4[_0x480c('0x64')]));if(!this[_0x480c('0x82')](_0x51e5e4[_0x480c('0x7d')])){return this['channel'][_0x480c('0xa8')](_0x480c('0xe4'));}var _0x477fea='wav';var _0x4423b8=util[_0x480c('0x2b')]('%s/recordings/%s',FILES_PATH,rs['generate'](0x4));var _0x1cd12a=util[_0x480c('0x2b')](_0x480c('0x9c'),_0x4423b8,_0x477fea);var _0x3de8e1=!![];if(_0x51e5e4['beep']===_0x480c('0x12e')){_0x3de8e1=![];}var _0x5124f0=this[_0x480c('0x10')]['recordFile'](_0x4423b8,_0x477fea,_0x51e5e4[_0x480c('0x12f')],_0x51e5e4[_0x480c('0x64')],undefined,_0x3de8e1);if(_0x5124f0[_0x480c('0xa2')]!==-0x1){this[_0x480c('0x10')][_0x480c('0xa8')](util['format'](_0x480c('0x130'),_0x1cd12a));var _0x275ba=this[_0x480c('0x8d')][_0x480c('0xa4')](this,_0x51e5e4,_0x1cd12a);if(_0x275ba){for(var _0x21e6b1 in _0x275ba){if(_0x275ba[_0x480c('0x93')](_0x21e6b1)){this[_0x480c('0x10')][_0x480c('0x9d')](util[_0x480c('0x2b')](_0x480c('0x131'),_0x21e6b1[_0x480c('0x6a')]()),_0x275ba[_0x21e6b1]);}}return this['channel'][_0x480c('0xa8')](util[_0x480c('0x2b')](_0x480c('0x132'),JSON[_0x480c('0x71')](_0x275ba)));}}return _0x5124f0;};AGIVertices['prototype'][_0x480c('0x133')]=function(_0x401fc2){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0x134'),_0x401fc2[_0x480c('0x3b')]));if(!this[_0x480c('0x82')](_0x401fc2[_0x480c('0x135')])){return this[_0x480c('0x10')][_0x480c('0xa8')]('no\x20appid\x20configured');}if(!this['isConfigured'](_0x401fc2['appsecret'])){return this[_0x480c('0x10')]['noop'](_0x480c('0x136'));}var _0xb5a409=_0x480c('0x137');var _0x5eff46=util[_0x480c('0x2b')]('%s/recordings/%s',FILES_PATH,rs['generate'](0x4));var _0x53158d=util[_0x480c('0x2b')](_0x480c('0x9c'),_0x5eff46,_0xb5a409);var _0xc82b62=!![];if(_0x401fc2[_0x480c('0x138')]===_0x480c('0x12e')){_0xc82b62=![];}var _0x4b8bfb=this[_0x480c('0x10')][_0x480c('0x139')](_0x5eff46,_0xb5a409,_0x401fc2[_0x480c('0x12f')],_0x401fc2[_0x480c('0x64')],undefined,_0xc82b62);if(_0x4b8bfb[_0x480c('0xa2')]!==-0x1){this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')](_0x480c('0x13a'),_0x53158d));var _0x36b6a3=this['tildeASR'][_0x480c('0xa4')](this,_0x401fc2,_0x53158d);if(_0x36b6a3){for(var _0x50d571 in _0x36b6a3){if(_0x36b6a3[_0x480c('0x93')](_0x50d571)){this[_0x480c('0x10')][_0x480c('0x9d')](util['format'](_0x480c('0x13b'),_0x50d571[_0x480c('0x6a')]()),_0x36b6a3[_0x50d571]);}}return this['channel'][_0x480c('0xa8')](util[_0x480c('0x2b')](_0x480c('0x13c'),JSON[_0x480c('0x71')](_0x36b6a3)));}}return _0x4b8bfb;};AGIVertices['prototype'][_0x480c('0x13d')]=function(_0x1a1f73){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0x13e'),_0x1a1f73[_0x480c('0x3b')]));return this[_0x480c('0x10')][_0x480c('0x13f')](_0x1a1f73[_0x480c('0x140')],_0x1a1f73[_0x480c('0x141')],_0x1a1f73[_0x480c('0x41')]);};AGIVertices[_0x480c('0x13')][_0x480c('0x142')]=function(_0x50a85b){logger['info'](util[_0x480c('0x2b')]('Enter\x20in\x20GOTOIF\x20(%s)\x20block',_0x50a85b['label']));if(!this[_0x480c('0x82')](_0x50a85b[_0x480c('0x143')])){return this['channel']['error'](_0x50a85b,_0x480c('0x144'));}try{var _0x2127ff=eval(_0x50a85b[_0x480c('0x143')])?_0x480c('0x145'):_0x480c('0x146');this[_0x480c('0x10')][_0x480c('0xa8')](util['format'](_0x480c('0x147'),_0x50a85b[_0x480c('0x143')],_0x2127ff));return{'code':0xc8,'result':_0x2127ff};}catch(_0x2f92a8){return{'code':0xc8,'result':_0x480c('0x146')};}};AGIVertices['prototype'][_0x480c('0x148')]=function(_0xbf959c){logger[_0x480c('0x33')](util[_0x480c('0x2b')]('Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block',_0xbf959c[_0x480c('0x3b')]));if(!this[_0x480c('0x82')](_0xbf959c[_0x480c('0x149')])){return this[_0x480c('0x10')][_0x480c('0x2e')](_0xbf959c,'no\x20interval\x20configured');}var _0x54b622=this[_0x480c('0x25')][_0x480c('0xa4')](this,_0xbf959c[_0x480c('0x149')]);if(!_0x54b622){return this[_0x480c('0x10')][_0x480c('0x2e')](_0xbf959c,_0x480c('0x14a'));}for(var _0x5c1cf5=0x0;_0x5c1cf5<_0x54b622[_0x480c('0x9a')];_0x5c1cf5+=0x1){var _0x2666df=this['channel']['getVariable'](util[_0x480c('0x2b')](_0x480c('0x14b'),_0x54b622[_0x5c1cf5]));if(_0x2666df['result']===-0x1){return _0x2666df;}logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0x14c'),_0x54b622[_0x5c1cf5],_0x2666df[_0x480c('0xa0')]));if(_0x2666df['extra']===_0x480c('0x145')){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0x14c'),_0x54b622[_0x5c1cf5],'true'));this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')]('IFTIME\x20%s\x20%s',_0x54b622[_0x5c1cf5],'true'));return{'code':0xc8,'result':_0x480c('0x145')};}else{logger[_0x480c('0x33')](util['format'](_0x480c('0x14c'),_0x54b622[_0x5c1cf5],'false'));this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')](_0x480c('0x14c'),_0x54b622[_0x5c1cf5],_0x480c('0x146')));}}return{'code':0xc8,'result':_0x480c('0x146')};};AGIVertices['prototype']['hangup']=function(_0xd1b826){logger['info'](util[_0x480c('0x2b')](_0x480c('0x14d'),_0xd1b826['label']));return this[_0x480c('0x10')][_0x480c('0x14e')]();};AGIVertices[_0x480c('0x13')][_0x480c('0x14f')]=function(_0x4e2810){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0x150'),_0x4e2810[_0x480c('0x3b')]));if(!this[_0x480c('0x82')](_0x4e2810['key'])){return this[_0x480c('0x10')][_0x480c('0xa8')](_0x480c('0xe4'));}var _0x1fcaf1='wav';var _0x5a0847=util['format'](_0x480c('0x151'),FILES_PATH,rs[_0x480c('0x11c')](0x4));var _0xa3b007=util[_0x480c('0x2b')]('%s.%s',_0x5a0847,_0x1fcaf1);var _0x17cddd=!![];if(_0x4e2810['beep']===_0x480c('0x12e')){_0x17cddd=![];}var _0x2cb93a=this[_0x480c('0x10')][_0x480c('0x139')](_0x5a0847,_0x1fcaf1,_0x4e2810[_0x480c('0x12f')],_0x4e2810['timeout'],undefined,_0x17cddd);if(_0x2cb93a[_0x480c('0xa2')]!==-0x1){this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')](_0x480c('0x152'),_0xa3b007));var _0xf7e52b=this[_0x480c('0x80')][_0x480c('0xa4')](this,_0x4e2810,_0xa3b007);if(_0xf7e52b){for(var _0x1cc4f5 in _0xf7e52b){if(_0xf7e52b[_0x480c('0x93')](_0x1cc4f5)){this[_0x480c('0x10')][_0x480c('0x9d')](util[_0x480c('0x2b')](_0x480c('0x153'),_0x1cc4f5['toUpperCase']()),_0xf7e52b[_0x1cc4f5]);}}return this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')]('IspeechASR\x20Result\x20%s',JSON['stringify'](_0xf7e52b)));}}return _0x2cb93a;};AGIVertices[_0x480c('0x13')][_0x480c('0x154')]=function(_0x2acc04){logger[_0x480c('0x33')](util['format'](_0x480c('0x155'),_0x2acc04[_0x480c('0x3b')]));if(!this[_0x480c('0x82')](_0x2acc04[_0x480c('0x7d')])){return this[_0x480c('0x10')][_0x480c('0xa8')](_0x480c('0xe4'));}if(!this['isConfigured'](_0x2acc04[_0x480c('0x5d')])){return this[_0x480c('0x10')][_0x480c('0xa8')](_0x480c('0xc0'));}this['channel'][_0x480c('0xa8')](util['format'](_0x480c('0x156'),_0x2acc04[_0x480c('0x5d')]));var _0x261a30=this[_0x480c('0x7c')]['sync'](this,_0x2acc04);if(_0x261a30){this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')]('ispeech\x20%s\x20file\x20created',_0x261a30));var _0x4de79b=this['channel'][_0x480c('0xfe')](_0x261a30,_0x2acc04[_0x480c('0x12f')]);try{fs[_0x480c('0xff')](_0x261a30+_0x480c('0x100'));}catch(_0x1fd815){logger[_0x480c('0x2e')](_0x1fd815);}return _0x4de79b;}return this['channel'][_0x480c('0x2e')](_0x2acc04,_0x480c('0x157'));};AGIVertices[_0x480c('0x13')][_0x480c('0x158')]=function(_0x3e69ca){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0x159'),_0x3e69ca[_0x480c('0x3b')]));if(!this[_0x480c('0x82')](_0x3e69ca[_0x480c('0x15a')])){return this[_0x480c('0x10')]['error'](_0x3e69ca,_0x480c('0x15b'));}logger[_0x480c('0x33')](util[_0x480c('0x2b')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this['channel'][_0x480c('0x3e')],_0x3e69ca[_0x480c('0x15a')]));var _0x1cb6b7=this['agentLogin'][_0x480c('0xa4')](this,_0x3e69ca[_0x480c('0x15a')]);if(_0x1cb6b7){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0x15c'),this[_0x480c('0x10')][_0x480c('0x3e')],_0x3e69ca[_0x480c('0x15a')]));this[_0x480c('0x10')][_0x480c('0xa8')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0x480c('0x10')][_0x480c('0x3e')],_0x3e69ca['findBy']));return{'code':0xc8,'result':_0x480c('0x15d')};}else{logger[_0x480c('0x33')](util[_0x480c('0x2b')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x480c('0x10')]['callerid'],_0x3e69ca[_0x480c('0x15a')]));this[_0x480c('0x10')]['noop'](util[_0x480c('0x2b')](_0x480c('0x15e'),this[_0x480c('0x10')]['callerid'],_0x3e69ca['findBy']));return{'code':0xc8,'result':_0x480c('0x15f')};}};AGIVertices['prototype'][_0x480c('0x160')]=function(_0x512316){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0x161'),_0x512316[_0x480c('0x3b')]));if(!this[_0x480c('0x82')](_0x512316[_0x480c('0x15a')])){return this[_0x480c('0x10')][_0x480c('0x2e')](_0x512316,_0x480c('0x15b'));}logger['info'](util[_0x480c('0x2b')](_0x480c('0x162'),this['channel']['callerid'],_0x512316[_0x480c('0x15a')]));var _0x9f18b8=this[_0x480c('0x52')][_0x480c('0xa4')](this,_0x512316[_0x480c('0x15a')]);if(_0x9f18b8){logger['info'](util['format']('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0x480c('0x3e')],_0x512316[_0x480c('0x15a')]));this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')](_0x480c('0x15c'),this[_0x480c('0x10')]['callerid'],_0x512316[_0x480c('0x15a')]));return{'code':0xc8,'result':'success'};}else{logger['info'](util[_0x480c('0x2b')](_0x480c('0x15e'),this['channel']['callerid'],_0x512316['findBy']));this['channel'][_0x480c('0xa8')](util[_0x480c('0x2b')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x480c('0x10')][_0x480c('0x3e')],_0x512316[_0x480c('0x15a')]));return{'code':0xc8,'result':_0x480c('0x15f')};}};AGIVertices[_0x480c('0x13')][_0x480c('0x163')]=function(_0x2bcfbd){logger[_0x480c('0x33')](util[_0x480c('0x2b')]('Enter\x20in\x20MATH\x20(%s)\x20block',_0x2bcfbd['label']));if(!this[_0x480c('0x82')](_0x2bcfbd[_0x480c('0x164')])){return this['channel']['error'](_0x2bcfbd,'no\x20operation\x20configured');}this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')]('math\x20%s',_0x2bcfbd[_0x480c('0x164')]));var _0x2db597=eval(_0x2bcfbd[_0x480c('0x164')]);if(!this[_0x480c('0x82')](_0x2bcfbd[_0x480c('0x117')])){return this[_0x480c('0x10')][_0x480c('0xa8')](_0x480c('0x111'));}var _0x597d0b=this[_0x480c('0x14')][_0x480c('0xa4')](this,_0x2bcfbd[_0x480c('0x117')]);if(!_0x597d0b){return this[_0x480c('0x10')][_0x480c('0x2e')](_0x2bcfbd,_0x480c('0xd4'));}if(_[_0x480c('0x99')](_0x2db597)){var _0x1811f9=this;_0x2db597['forEach'](function(_0x4d5022,_0x245b2f){_0x1811f9['channel'][_0x480c('0x9d')](util[_0x480c('0x2b')]('%s[%s]',_0x597d0b,_0x245b2f),_0x4d5022);});return this[_0x480c('0x10')]['noop'](util[_0x480c('0x2b')](_0x480c('0x165'),_0x597d0b));}else{return this['channel'][_0x480c('0x9d')](_0x597d0b,_0x2db597);}};AGIVertices[_0x480c('0x13')][_0x480c('0xe')]=function(_0x2e7524){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0x166'),_0x2e7524[_0x480c('0x3b')]));if(_0x2e7524['retry']===0x0){return this['maxRetry'](_0x2e7524);}_0x2e7524[_0x480c('0xa5')]-=0x1;if(!this[_0x480c('0x82')](_0x2e7524[_0x480c('0x10f')])){return this['channel'][_0x480c('0x2e')](_0x2e7524,_0x480c('0x10d'));}var _0x54c73a=this[_0x480c('0x10e')][_0x480c('0xa4')](this,_0x2e7524[_0x480c('0x10f')]);if(!_0x54c73a){return this[_0x480c('0x10')][_0x480c('0x2e')](_0x2e7524,_0x480c('0x110'));}var _0x475ecd=this[_0x480c('0x10')]['getData'](_0x54c73a,_0x2e7524[_0x480c('0x113')],_0x2e7524[_0x480c('0x167')]);var _0x5bbd97=_0x475ecd['result'];if(_0x475ecd[_0x480c('0xa2')]===-0x1){this['createSquareDetailsReport'][_0x480c('0xa4')](this,_0x2e7524,'-1');return _0x475ecd;}else if(_0x475ecd[_0x480c('0xa0')]===_0x480c('0x64')){_0x475ecd[_0x480c('0xa2')]=_0x475ecd[_0x480c('0xa2')][_0x480c('0x9a')]>0x0?_0x475ecd[_0x480c('0xa2')]:'t';}else if(_[_0x480c('0x45')](_0x475ecd[_0x480c('0xa2')])){_0x475ecd[_0x480c('0xa2')]='#';_0x5bbd97='#';}if(!this[_0x480c('0x82')](_0x2e7524[_0x480c('0x117')])){this[_0x480c('0x10')][_0x480c('0xa8')]('no\x20variable\x20selected\x20for\x20the\x20result');}else{var _0x92c38a=this[_0x480c('0x14')][_0x480c('0xa4')](this,_0x2e7524['variable_id']);if(!_0x92c38a){return this[_0x480c('0x10')][_0x480c('0x2e')](_0x2e7524,_0x480c('0xd4'));}this[_0x480c('0x10')][_0x480c('0x9d')](_0x92c38a,_0x5bbd97);}this[_0x480c('0x39')][_0x480c('0xa4')](this,_0x2e7524,_0x5bbd97);return _0x475ecd;};AGIVertices[_0x480c('0x13')][_0x480c('0xa8')]=function(_0x766d75){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0x168'),_0x766d75[_0x480c('0x3b')]));return this['channel'][_0x480c('0xa8')](_0x766d75[_0x480c('0x169')]||_0x766d75['label']);};AGIVertices[_0x480c('0x13')][_0x480c('0x16a')]=function(_0x2443e2){logger[_0x480c('0x33')](util[_0x480c('0x2b')]('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x2443e2[_0x480c('0x3b')]));if(!this[_0x480c('0x82')](_0x2443e2['findBy'])){return this[_0x480c('0x10')][_0x480c('0x2e')](_0x2443e2,_0x480c('0x15b'));}logger[_0x480c('0x33')](util[_0x480c('0x2b')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x480c('0x10')][_0x480c('0x3e')],_0x2443e2[_0x480c('0x15a')]));var _0x2b3b79=this[_0x480c('0x4d')][_0x480c('0xa4')](this,_0x2443e2[_0x480c('0x16b')]);var _0x1e7634=this[_0x480c('0x4f')][_0x480c('0xa4')](this,_0x2443e2[_0x480c('0x15a')],_0x2b3b79);if(_0x1e7634){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0x15c'),this[_0x480c('0x10')][_0x480c('0x3e')],_0x2443e2['findBy']));this['channel']['noop'](util[_0x480c('0x2b')](_0x480c('0x15c'),this['channel']['callerid'],_0x2443e2[_0x480c('0x15a')]));return{'code':0xc8,'result':_0x480c('0x15d')};}else{logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0x15e'),this[_0x480c('0x10')]['callerid'],_0x2443e2[_0x480c('0x15a')]));this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')](_0x480c('0x15c'),this['channel'][_0x480c('0x3e')],_0x2443e2[_0x480c('0x15a')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x480c('0x13')][_0x480c('0x16c')]=function(_0x3e7c0f){logger[_0x480c('0x33')](util[_0x480c('0x2b')]('Enter\x20in\x20PLAYBACK\x20(%s)\x20block',_0x3e7c0f[_0x480c('0x3b')]));if(!this[_0x480c('0x82')](_0x3e7c0f['file_id'])){return this[_0x480c('0x10')][_0x480c('0x2e')](_0x3e7c0f,_0x480c('0x10d'));}var _0x503aef=this[_0x480c('0x10e')][_0x480c('0xa4')](this,_0x3e7c0f[_0x480c('0x10f')]);if(!_0x503aef){return this['channel'][_0x480c('0x2e')](_0x3e7c0f,_0x480c('0x110'));}var _0x1a3e3d=this['channel']['exec'](_0x480c('0x16d'),[_0x503aef,_0x3e7c0f[_0x480c('0x109')]]);if(_0x1a3e3d[_0x480c('0xa2')]===-0x1){return _0x1a3e3d;}return this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')](_0x480c('0xbd'),_0x480c('0x16d'),_0x503aef));};AGIVertices[_0x480c('0x13')][_0x480c('0x16e')]=function(_0x58d671){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0x16f'),_0x58d671[_0x480c('0x3b')]));if(!this[_0x480c('0x82')](_0x58d671['queue_id'])){return this[_0x480c('0x10')][_0x480c('0x2e')](_0x58d671,_0x480c('0x170'));}var _0xb164df='';var _0x12403d=parseInt(_0x58d671[_0x480c('0x171')],0xa);if(isNaN(_0x12403d)){_0xb164df=_0x58d671[_0x480c('0x171')];}else{_0xb164df=this['getVoiceQueue'][_0x480c('0xa4')](this,_0x58d671[_0x480c('0x171')]);if(!_0xb164df){return this['channel']['error'](_0x58d671,'no\x20queue\x20found');}}var _0x5cdba3='';if(this[_0x480c('0x82')](_0x58d671[_0x480c('0x10f')])){var _0x50a966=this[_0x480c('0x10e')][_0x480c('0xa4')](this,_0x58d671['file_id']);if(_0x50a966){_0x5cdba3=_0x50a966;}}this[_0x480c('0x39')][_0x480c('0xa4')](this,_0x58d671,_0xb164df);if(_0x58d671[_0x480c('0x109')][_0x480c('0x172')]('x')<0x0){_0x58d671[_0x480c('0x109')]+='x';}if(_0x58d671[_0x480c('0x109')][_0x480c('0x172')]('X')<0x0){_0x58d671[_0x480c('0x109')]+='X';}this[_0x480c('0x10')][_0x480c('0x9d')](_0x480c('0x173'),_0xb164df?_0xb164df[_0x480c('0x174')]():'');var _0xbf8d8f=this[_0x480c('0x10')]['exec'](_0x480c('0x175'),[_0xb164df,_0x58d671[_0x480c('0x109')],_0x58d671['url'],_0x5cdba3,_0x58d671['timeout'],_0x58d671[_0x480c('0x8')],_0x58d671[_0x480c('0x176')],_0x58d671[_0x480c('0x177')],'',_0x58d671[_0x480c('0x178')]]);if(_0xbf8d8f[_0x480c('0xa2')]===-0x1){return _0xbf8d8f;}return this[_0x480c('0x10')][_0x480c('0xa8')](util['format'](_0x480c('0xbd'),_0x480c('0x175'),_0xb164df));};AGIVertices['prototype']['record']=function(_0x1287be){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0x179'),_0x1287be[_0x480c('0x3b')]));var _0xc7aa49=_0x1287be['recordingFormat']||'wav';var _0x56ffde=util[_0x480c('0x2b')](_0x480c('0x17a'),this[_0x480c('0x10')]['uniqueid'],rs[_0x480c('0x11c')](0x5));var _0xddf277=util[_0x480c('0x2b')](_0x480c('0x17b'),FILES_PATH,_0x56ffde,_0xc7aa49);var _0xbdd94c=util[_0x480c('0x2b')]('%s/recordings/%s',FILES_PATH,_0x56ffde);this[_0x480c('0x3f')]['sync'](this,_0x1287be,_0x56ffde,_0xddf277);this[_0x480c('0x10')][_0x480c('0x9d')](_0x480c('0x17c'),_0x56ffde);logger['info'](_0x480c('0x17d'),_0xbdd94c,_0xc7aa49,_0x1287be[_0x480c('0x17e')],_0x1287be[_0x480c('0x64')]);return this['channel'][_0x480c('0x139')](_0xbdd94c,_0xc7aa49,_0x1287be[_0x480c('0x17e')],_0x1287be['timeout'],undefined,!![]);};AGIVertices[_0x480c('0x13')][_0x480c('0x17f')]=function(_0x443e76){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0x180'),_0x443e76[_0x480c('0x3b')]));if(!this['isConfigured'](_0x443e76[_0x480c('0x63')])){return this[_0x480c('0x10')][_0x480c('0xa8')](_0x480c('0x181'));}var _0x1e087e=this[_0x480c('0x182')][_0x480c('0xa4')](this,_0x443e76);logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0x183'),util[_0x480c('0x184')](_0x1e087e,{'showHidden':![],'depth':null})));if(!this[_0x480c('0x82')](_0x443e76[_0x480c('0x117')])){return this[_0x480c('0x10')][_0x480c('0xa8')](_0x480c('0x185'));}var _0x98ee81=this[_0x480c('0x14')][_0x480c('0xa4')](this,_0x443e76['variable_id']);if(!_0x98ee81){return this[_0x480c('0x10')][_0x480c('0x2e')](_0x443e76,_0x480c('0xd4'));}this[_0x480c('0x10')][_0x480c('0x9d')](util[_0x480c('0x2b')](_0x480c('0x186'),_0x98ee81),_0x1e087e[_0x480c('0x73')]?_0x1e087e[_0x480c('0x73')]:_0x480c('0x187'));this[_0x480c('0x10')][_0x480c('0x9d')](util['format'](_0x480c('0x188'),_0x98ee81),_0x1e087e['statusMessage']?_0x1e087e[_0x480c('0x189')]:'OK');if(_0x1e087e[_0x480c('0x6b')]){try{this['saveRestApiResult'](_0x1e087e[_0x480c('0x6b')],_0x98ee81);}catch(_0x1dbbee){logger[_0x480c('0x2e')](util['format'](_0x480c('0x18a'),_0x98ee81));}}return this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')](_0x480c('0xd8'),_0x98ee81));};AGIVertices[_0x480c('0x13')][_0x480c('0x18b')]=function(_0x182565){logger['info'](util[_0x480c('0x2b')](_0x480c('0x18c'),_0x182565[_0x480c('0x3b')]));return this['channel'][_0x480c('0x18d')](_0x182565[_0x480c('0x18e')]['replace'](/\s+/g,''),_0x182565[_0x480c('0x17e')]);};AGIVertices[_0x480c('0x13')][_0x480c('0x18f')]=function(_0x52e501){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0x190'),_0x52e501[_0x480c('0x3b')]));return this['channel']['sayNumber'](_0x52e501[_0x480c('0x65')][_0x480c('0x59')](/\s+/g,''),_0x52e501['escape_digits']);};AGIVertices[_0x480c('0x13')][_0x480c('0x191')]=function(_0x4dd960){logger['info'](util['format']('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0x4dd960[_0x480c('0x3b')]));return this['channel']['sayPhonetic'](_0x4dd960[_0x480c('0x5d')],_0x4dd960['escape_digits']);};AGIVertices[_0x480c('0x13')]['sendMail']=function(_0x5e07bc){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0x192'),_0x5e07bc['label']));if(!this[_0x480c('0x82')](_0x5e07bc[_0x480c('0x193')])){return this['channel'][_0x480c('0xa8')](_0x480c('0x194'));}var _0x48a301=this[_0x480c('0x23')][_0x480c('0xa4')](this,_0x5e07bc[_0x480c('0x193')]);if(!_0x48a301||!_0x48a301[_0x480c('0x195')]){return this[_0x480c('0x10')][_0x480c('0x2e')](_0x5e07bc,_0x480c('0x196'));}var _0x2632ea={'from':util[_0x480c('0x2b')](_0x480c('0x197'),_0x48a301[_0x480c('0x17')],_0x48a301[_0x480c('0x198')]||_0x48a301[_0x480c('0x195')][_0x480c('0x199')]),'to':_0x5e07bc['to']||'','cc':_0x5e07bc['cc']||'','bcc':_0x5e07bc['bcc']||'','subject':_0x5e07bc[_0x480c('0x19a')],'html':_0x5e07bc[_0x480c('0x5d')],'text':_0x5e07bc[_0x480c('0x5d')]};var _0x3e50cd={'tls':{'rejectUnauthorized':![]}};if(_0x48a301[_0x480c('0x195')][_0x480c('0x19b')]){_0x3e50cd['service']=_0x48a301[_0x480c('0x195')][_0x480c('0x19b')];}else{_0x3e50cd[_0x480c('0x19c')]=_0x48a301[_0x480c('0x195')][_0x480c('0x19c')];_0x3e50cd[_0x480c('0x19d')]=_0x48a301[_0x480c('0x195')][_0x480c('0x19d')];_0x3e50cd['secure']=_0x48a301[_0x480c('0x195')][_0x480c('0x19e')];}if(_0x48a301[_0x480c('0x195')][_0x480c('0x19f')]){_0x3e50cd['auth']={'user':_0x48a301['Smtp'][_0x480c('0x199')],'pass':_0x48a301[_0x480c('0x195')][_0x480c('0x1a0')]};}if(this[_0x480c('0x82')](_0x5e07bc[_0x480c('0x1a1')])){}logger[_0x480c('0xda')](_0x480c('0x1a2'),JSON[_0x480c('0x71')](_0x2632ea));this[_0x480c('0x39')][_0x480c('0xa4')](this,_0x5e07bc,_0x5e07bc[_0x480c('0x193')]);this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')]('Trying\x20SendMail\x20with\x20account\x20%s',_0x48a301[_0x480c('0x17')]));this[_0x480c('0x24')][_0x480c('0xa4')](this,_0x3e50cd,_0x2632ea);return this[_0x480c('0x10')][_0x480c('0xa8')](_0x480c('0x1a3'));};AGIVertices[_0x480c('0x13')][_0x480c('0x1a4')]=function(_0x7d1c2e){logger['info'](util[_0x480c('0x2b')](_0x480c('0x1a5'),_0x7d1c2e[_0x480c('0x3b')]));return this[_0x480c('0x10')][_0x480c('0xa8')]('SENDFAX\x20block\x20not\x20implemented');};AGIVertices[_0x480c('0x13')][_0x480c('0x1a6')]=function(_0xbd0d7c){logger['info'](util[_0x480c('0x2b')](_0x480c('0x1a7'),_0xbd0d7c['label']));if(!this[_0x480c('0x82')](_0xbd0d7c[_0x480c('0x1a8')])){return this[_0x480c('0x10')]['noop'](_0x480c('0x1a9'));}var _0x3b14f8=this[_0x480c('0x36')]['sync'](this,_0xbd0d7c[_0x480c('0x1a8')]);if(!_0x3b14f8){return this[_0x480c('0x10')][_0x480c('0x2e')](_0xbd0d7c,'no\x20sms\x20account\x20found');}var _0x449b7b={'body':_0xbd0d7c[_0x480c('0x1aa')],'phone':_0xbd0d7c['to']||'','SmsAccountId':_0x3b14f8['id']};logger[_0x480c('0xda')](_0x480c('0x1ab'),JSON[_0x480c('0x71')](_0x449b7b));this[_0x480c('0x39')][_0x480c('0xa4')](this,_0xbd0d7c,_0xbd0d7c[_0x480c('0x1a8')]);this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')](_0x480c('0x1ac'),_0x3b14f8['name']));this[_0x480c('0x38')][_0x480c('0xa4')](this,_0x449b7b);return this['channel'][_0x480c('0xa8')](_0x480c('0x1ad'));};AGIVertices[_0x480c('0x13')]['set']=function(_0x11c12b){logger[_0x480c('0x33')](util['format'](_0x480c('0x1ae'),_0x11c12b[_0x480c('0x3b')]));if(!this[_0x480c('0x82')](_0x11c12b[_0x480c('0x117')])){return this[_0x480c('0x10')][_0x480c('0x2e')](_0x11c12b,_0x480c('0x1af'));}var _0x52f2e3=this[_0x480c('0x14')][_0x480c('0xa4')](this,_0x11c12b['variable_id']);if(!_0x52f2e3){return this[_0x480c('0x10')][_0x480c('0x2e')](_0x11c12b,'no\x20variable\x20found');}return this[_0x480c('0x10')][_0x480c('0x9d')](_0x52f2e3,_0x11c12b[_0x480c('0x1b0')]);};AGIVertices[_0x480c('0x13')]['start']=function(_0x228a0d){logger[_0x480c('0x33')](util['format'](_0x480c('0x1b1'),_0x228a0d['label']));this['channel'][_0x480c('0xa8')]('START\x20CALLY\x20SQUARE');if(_0x228a0d['answer']==='yes'){this[_0x480c('0x10')][_0x480c('0xa8')](_0x480c('0x1b2'));return this['channel'][_0x480c('0x1b3')]();}return this[_0x480c('0x10')]['noop']('Skipped\x20Answer');};AGIVertices[_0x480c('0x13')]['subproject']=function(_0x109716){logger['info'](util[_0x480c('0x2b')](_0x480c('0x1b4'),_0x109716[_0x480c('0x3b')]));if(!this[_0x480c('0x82')](_0x109716['project_id'])){return this[_0x480c('0x10')]['error'](_0x109716,_0x480c('0x1b5'));}var _0xe163a=this[_0x480c('0x1a')][_0x480c('0xa4')](this,_0x109716['project_id']);if(!this[_0x480c('0x82')](_0xe163a)){return this['channel'][_0x480c('0x2e')](_0x109716,util['format']('no\x20subproject\x20found\x20with\x20id\x20%d',_0x109716[_0x480c('0x1b6')]));}if(_0xe163a===this[_0x480c('0x10')][_0x480c('0x3d')]){return this[_0x480c('0x10')][_0x480c('0x2e')](_0x109716,_0x480c('0x1b7'));}this['createSquareDetailsReport'][_0x480c('0xa4')](this,_0x109716,_0xe163a);var _0x3d0933=this[_0x480c('0x10')][_0x480c('0x57')]('AGI',util[_0x480c('0x2b')](_0x480c('0x1b8'),config[_0x480c('0x8')]['host']||_0x480c('0x1b9'),_0xe163a,this[_0x480c('0x10')][_0x480c('0x3d')]));if(_0x3d0933[_0x480c('0xa2')]===-0x1){return _0x3d0933;}return this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')](_0x480c('0xbd'),_0x480c('0x1ba'),_0xe163a));};AGIVertices[_0x480c('0x13')][_0x480c('0x1bb')]=function(_0x5692c3){logger[_0x480c('0x33')](util['format']('Enter\x20in\x20SYSTEM\x20(%s)\x20block',_0x5692c3[_0x480c('0x3b')]));var _0x202923=this[_0x480c('0x56')]['sync'](this,_0x5692c3[_0x480c('0x1bc')]);this[_0x480c('0x39')][_0x480c('0xa4')](this,_0x5692c3,_0x5692c3[_0x480c('0x1bc')]);if(this[_0x480c('0x82')](_0x5692c3[_0x480c('0x117')])){var _0x43e803=this[_0x480c('0x14')][_0x480c('0xa4')](this,_0x5692c3[_0x480c('0x117')]);if(_0x43e803){this['channel'][_0x480c('0x9d')](_0x43e803,_0x202923);return this['channel']['noop'](util[_0x480c('0x2b')]('sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s',_0x5692c3['command'],_0x43e803));}}return this['channel'][_0x480c('0xa8')](util[_0x480c('0x2b')](_0x480c('0x1bd'),_0x5692c3[_0x480c('0x1bc')]));};AGIVertices[_0x480c('0x13')][_0x480c('0x1be')]=function(_0x162999){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0x1bf'),_0x162999['label']));_0x162999[_0x480c('0x5d')]=_0x162999[_0x480c('0x5d')][_0x480c('0x59')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x480c('0x82')](_0x162999[_0x480c('0x5b')])){return this[_0x480c('0x10')][_0x480c('0xa8')](_0x480c('0x1c0'));}if(!this['isConfigured'](_0x162999['text'])){return this[_0x480c('0x10')][_0x480c('0xa8')](_0x480c('0xc0'));}this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')](_0x480c('0x1c1'),_0x162999['text']));var _0x3a6979=this[_0x480c('0x5a')]['sync'](this,_0x162999);if(_0x3a6979){this[_0x480c('0x10')][_0x480c('0xa8')](util['format'](_0x480c('0x1c2'),_0x3a6979));var _0x3e3d2a=this[_0x480c('0x10')]['streamFile'](_0x3a6979);try{fs[_0x480c('0xff')](_0x3a6979+_0x480c('0x100'));}catch(_0x10fed1){logger['error'](_0x10fed1);}return _0x3e3d2a;}return this[_0x480c('0x10')]['error'](_0x162999,_0x480c('0x1c3'));};AGIVertices[_0x480c('0x13')][_0x480c('0x1c4')]=function(_0x2e7c17){logger[_0x480c('0x33')](util[_0x480c('0x2b')]('Enter\x20in\x20GOOGLETTS\x20(%s)\x20block',_0x2e7c17['label']));_0x2e7c17['text']=_0x2e7c17[_0x480c('0x5d')][_0x480c('0x59')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x2e7c17[_0x480c('0x5d')])){return this[_0x480c('0x10')][_0x480c('0xa8')](_0x480c('0xc0'));}this[_0x480c('0x10')]['noop'](util[_0x480c('0x2b')](_0x480c('0x1c5'),_0x2e7c17[_0x480c('0x5d')]));var _0x335ec7=this[_0x480c('0x62')]['sync'](this,_0x2e7c17);if(_0x335ec7){this[_0x480c('0x10')][_0x480c('0xa8')](util['format'](_0x480c('0x1c6'),_0x335ec7));var _0x476ca6=this[_0x480c('0x10')][_0x480c('0xfe')](_0x335ec7);try{fs[_0x480c('0xff')](_0x335ec7+_0x480c('0x100'));}catch(_0xde29c5){logger['error'](_0xde29c5);}return _0x476ca6;}return this[_0x480c('0x10')][_0x480c('0x2e')](_0x2e7c17,_0x480c('0x1c7'));};AGIVertices[_0x480c('0x13')][_0x480c('0x1c8')]=function(_0x13bd8e){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0x1c9'),_0x13bd8e[_0x480c('0x3b')]));if(!this['isConfigured'](_0x13bd8e['findBy'])){return this[_0x480c('0x10')][_0x480c('0x2e')](_0x13bd8e,_0x480c('0x15b'));}logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0x162'),this['channel'][_0x480c('0x3e')],_0x13bd8e[_0x480c('0x15a')]));var _0x1121de=this[_0x480c('0x50')][_0x480c('0xa4')](this,_0x13bd8e[_0x480c('0x15a')]);if(_0x1121de){logger['info'](util[_0x480c('0x2b')](_0x480c('0x15c'),this[_0x480c('0x10')][_0x480c('0x3e')],_0x13bd8e[_0x480c('0x15a')]));this[_0x480c('0x10')][_0x480c('0xa8')](util[_0x480c('0x2b')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x480c('0x10')][_0x480c('0x3e')],_0x13bd8e[_0x480c('0x15a')]));return{'code':0xc8,'result':_0x480c('0x15d')};}else{logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0x15e'),this[_0x480c('0x10')]['callerid'],_0x13bd8e['findBy']));this['channel']['noop'](util[_0x480c('0x2b')](_0x480c('0x15e'),this['channel']['callerid'],_0x13bd8e['findBy']));return{'code':0xc8,'result':_0x480c('0x15f')};}};AGIVertices[_0x480c('0x13')][_0x480c('0x1ca')]=function(_0x32f584){logger[_0x480c('0x33')](util['format'](_0x480c('0x1cb'),_0x32f584[_0x480c('0x3b')]));var _0x13755a=this[_0x480c('0x10')][_0x480c('0x57')](_0x480c('0x1cc'),[_0x32f584[_0x480c('0x1cd')],_0x32f584[_0x480c('0x75')]]);if(_0x13755a['result']===-0x1){return _0x13755a;}return this[_0x480c('0x10')][_0x480c('0xa8')](util['format'](_0x480c('0xbd'),_0x480c('0x1cc'),_0x32f584['mailbox']));};AGIVertices[_0x480c('0x13')][_0x480c('0x1ce')]=function(_0x4573b7){logger[_0x480c('0x33')](util[_0x480c('0x2b')](_0x480c('0x1cf'),_0x4573b7['label']));if(!this['isConfigured'](_0x4573b7[_0x480c('0x117')])){return this[_0x480c('0x10')][_0x480c('0x2e')](_0x4573b7,_0x480c('0x1af'));}var _0x194cba=this['getVariable']['sync'](this,_0x4573b7[_0x480c('0x117')]);if(!_0x194cba){return this[_0x480c('0x10')][_0x480c('0x2e')](_0x4573b7,'no\x20variable\x20found');}var _0x5734b2=this[_0x480c('0x10')]['getVariable'](_0x194cba);return{'code':0xc8,'result':_0x5734b2[_0x480c('0xa0')]?_0x5734b2[_0x480c('0xa0')]:'-'};};String[_0x480c('0x13')]['replaceAll']=function(_0x4c0524,_0x520267){return this[_0x480c('0x9e')](_0x4c0524)[_0x480c('0x1d0')](_0x520267);};module[_0x480c('0x1d1')]=AGIVertices;
\ No newline at end of file
index 1b7ae4e..ca4b5a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bb4=['lodash','moment','../../../config/logger','acw','../rpc/voiceAgentReport','voiceQueues','timers','channels','syncAgentConnect','bind','agentringnoanswer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','milliseconds','diff','seconds','prototype','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','QueuePause','agents','getAgent','then','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','timer','acwTimeout','lastPauseAt','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','update','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][syncAgentConnectPreview]\x20%s','syncHangupRequest','attended','[%s][HANGUP:UNIQUEID]','startAcw','linkedid','isUndefined','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','syncHangup','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','stringify','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','util'];(function(_0x500dd2,_0x23bd28){var _0xa7c859=function(_0x49e1b3){while(--_0x49e1b3){_0x500dd2['push'](_0x500dd2['shift']());}};_0xa7c859(++_0x23bd28);}(_0x9bb4,0x13b));var _0x49bb=function(_0x9ebf51,_0x5e17f9){_0x9ebf51=_0x9ebf51-0x0;var _0x2e0f5f=_0x9bb4[_0x9ebf51];return _0x2e0f5f;};'use strict';var util=require(_0x49bb('0x0'));var _=require(_0x49bb('0x1'));var moment=require(_0x49bb('0x2'));var ami=require('../ami');var logger=require(_0x49bb('0x3'))(_0x49bb('0x4'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0x49bb('0x5'));function Acw(_0x83cd95){this[_0x49bb('0x6')]=_0x83cd95[_0x49bb('0x6')];this['agents']=_0x83cd95['agents'];this[_0x49bb('0x7')]=_0x83cd95[_0x49bb('0x7')];this[_0x49bb('0x8')]={};ami['on']('agentconnect',this[_0x49bb('0x9')][_0x49bb('0xa')](this));ami['on']('hanguprequest',this['syncHangupRequest'][_0x49bb('0xa')](this));ami['on']('hangup',this['syncHangup'][_0x49bb('0xa')](this));ami['on'](_0x49bb('0xb'),this['syncAgentRingNoAnswer'][_0x49bb('0xa')](this));ami['on']('attendedtransfer',this[_0x49bb('0xc')]['bind'](this));ami['on'](_0x49bb('0xd'),this[_0x49bb('0xe')][_0x49bb('0xa')](this));ami['on']('custom:agentConnectPreview',this['syncAgentConnectPreview']['bind'](this));}function getDiff(_0x31a42d){var _0x4c305e=moment()[_0x49bb('0xf')](0x0);var _0x4ab991=moment(_0x31a42d)['milliseconds'](0x0);return _0x4c305e[_0x49bb('0x10')](_0x4ab991,_0x49bb('0x11'));}Acw[_0x49bb('0x12')]['startAcw']=function(_0x5ba287){try{var _0xf77c06=this;var _0x369fb7=this[_0x49bb('0x8')][_0x5ba287][_0x49bb('0x13')];var _0x4f5b30=this[_0x49bb('0x8')][_0x5ba287][_0x49bb('0x14')];var _0x56520f=this['voiceQueues'][_0x4f5b30];var _0xb5f8=![];var _0x5e10f7=_0x49bb('0x15');if(_0x56520f[_0x49bb('0x16')]){if(_0x56520f[_0x49bb('0x17')]['name']){_0xb5f8=!![];_0x5e10f7=_0x56520f[_0x49bb('0x17')][_0x49bb('0x18')];}}ami['Action']({'action':_0x49bb('0x19'),'interface':_0x369fb7,'paused':!![],'reason':_0x5e10f7})['then'](function(_0x44f4e3){if(_0xf77c06[_0x49bb('0x1a')][_0x369fb7]){return RpcUser[_0x49bb('0x1b')](_0xf77c06[_0x49bb('0x1a')][_0x369fb7]['id'])[_0x49bb('0x1c')](function(_0x43fd4c){if(_0x43fd4c&&!_0x43fd4c[_0x49bb('0x1d')]){logger[_0x49bb('0x1e')](_0x49bb('0x1f'),_0x5ba287,_0x369fb7,_0x4f5b30);var _0x199f8f=_0xf77c06[_0x49bb('0x8')][_0x5ba287]['attended']&&_0xf77c06[_0x49bb('0x8')][_0x5ba287][_0x49bb('0x20')]?_0xf77c06[_0x49bb('0x8')][_0x5ba287][_0x49bb('0x20')]:_0x5ba287;return RpcUser[_0x49bb('0x21')](_0xf77c06[_0x49bb('0x1a')][_0x369fb7],_0x5e10f7,_0x199f8f)[_0x49bb('0x1c')](function(_0x402044){if(!_0xb5f8){_0xf77c06[_0x49bb('0x7')][_0x369fb7]={};logger[_0x49bb('0x1e')](_0x49bb('0x22'),_0x5ba287,_0xf77c06[_0x49bb('0x6')][_0x4f5b30]['acwTimeout'],_0x369fb7,_0x4f5b30);_0xf77c06['timers'][_0x369fb7][_0x49bb('0x23')]=setTimeout(_0xf77c06['stopAcw'][_0x49bb('0xa')](_0xf77c06,_0x369fb7),_0xf77c06[_0x49bb('0x6')][_0x4f5b30][_0x49bb('0x24')]*0x3e8);_0xf77c06['timers'][_0x369fb7][_0x49bb('0x25')]=moment()['format'](_0x49bb('0x26'));_0xf77c06[_0x49bb('0x7')][_0x369fb7][_0x49bb('0x27')]=_0x5ba287;_0xf77c06[_0x49bb('0x7')][_0x369fb7]['queue']=_0x4f5b30;_0xf77c06['timers'][_0x369fb7][_0x49bb('0x28')]=function(){var _0x24eeed=getDiff(_0xf77c06[_0x49bb('0x7')][_0x369fb7][_0x49bb('0x25')]);clearTimeout(_0xf77c06[_0x49bb('0x7')][_0x369fb7]['timer']);_0xf77c06[_0x49bb('0x7')][_0x369fb7][_0x49bb('0x23')]=![];RpcVoiceAgentReport[_0x49bb('0x29')]({'acwtime':_0x24eeed},_0xf77c06[_0x49bb('0x7')][_0x369fb7][_0x49bb('0x27')],_0x369fb7)['then'](function(_0x2809c4){logger[_0x49bb('0x1e')]('[%s][UPDATE][ACWTIME:%s]',_0x5ba287,_0x24eeed,_0x2809c4);})[_0x49bb('0x2a')](function(_0x53489f){logger[_0x49bb('0x2b')](_0x49bb('0x2c'),_0x5ba287,_0x53489f);});delete _0xf77c06[_0x49bb('0x7')][_0x369fb7];};}});}else{logger['info'](_0x49bb('0x2d'),_0x5ba287,_0x369fb7,_0x4f5b30);}});}})[_0x49bb('0x2a')](function(_0x16d4a0){logger[_0x49bb('0x2b')](_0x49bb('0x22'),_0x5ba287,_0xf77c06[_0x49bb('0x6')][_0x4f5b30][_0x49bb('0x24')],_0x369fb7,_0x4f5b30);})['finally'](function(){delete _0xf77c06[_0x49bb('0x8')][_0x5ba287];});}catch(_0x57e430){logger[_0x49bb('0x2b')](_0x49bb('0x2e'),_0x57e430[_0x49bb('0x2f')]);}};Acw[_0x49bb('0x12')]['stopAcw']=function(_0x5e664a){try{var _0x435fcc=this;if(_0x435fcc[_0x49bb('0x7')][_0x5e664a]){_0x435fcc[_0x49bb('0x7')][_0x5e664a]['timer']=![];var _0x45320a=_0x435fcc[_0x49bb('0x7')][_0x5e664a][_0x49bb('0x27')];var _0x597ce0=_0x435fcc['timers'][_0x5e664a]['queue'];var _0x2c6f89=_0x435fcc['voiceQueues'][_0x597ce0][_0x49bb('0x24')];logger['info'](_0x49bb('0x30'),_0x45320a,_0x5e664a);RpcUser['saveUnpause'](this[_0x49bb('0x1a')][_0x5e664a]);RpcVoiceAgentReport[_0x49bb('0x29')]({'acwtime':_0x2c6f89,'agentacw':!![]},_0x45320a,_0x5e664a)['then'](function(_0x40a06){logger[_0x49bb('0x1e')]('[%s][UPDATE][ACWTIME:%s]',_0x45320a,_0x2c6f89,_0x40a06);})[_0x49bb('0x2a')](function(_0x3bc9af){logger['error'](_0x49bb('0x2c'),_0x45320a,_0x3bc9af);});}else{logger[_0x49bb('0x2b')](_0x49bb('0x31'),_0x5e664a);if(_0x435fcc[_0x49bb('0x7')]){logger[_0x49bb('0x1e')]('[ACW][TIMERS]',JSON['stringify'](_0x435fcc[_0x49bb('0x7')]));}}}catch(_0x117cef){logger[_0x49bb('0x2b')]('[ACW][STOP]\x20%s',_0x117cef[_0x49bb('0x2f')]);}};Acw['prototype'][_0x49bb('0x9')]=function(_0x187541){try{if(this[_0x49bb('0x6')][_0x187541[_0x49bb('0x14')]]&&(this[_0x49bb('0x6')][_0x187541[_0x49bb('0x14')]]['acw']||this[_0x49bb('0x6')][_0x187541['queue']]['mandatoryDisposition'])){if(this[_0x49bb('0x1a')][_0x187541[_0x49bb('0x13')]]){this[_0x49bb('0x8')][_0x187541['uniqueid']]={'queue':_0x187541[_0x49bb('0x14')],'interface':_0x187541[_0x49bb('0x13')],'destlinkedid':_0x187541[_0x49bb('0x20')]};}}}catch(_0x284c0b){logger[_0x49bb('0x2b')]('[ACW][syncAgentConnect]\x20%s',_0x284c0b[_0x49bb('0x2f')]);}};Acw[_0x49bb('0x12')]['syncAgentConnectPreview']=function(_0x5ea65d){try{if(this[_0x49bb('0x6')][_0x5ea65d[_0x49bb('0x14')]]&&(this[_0x49bb('0x6')][_0x5ea65d['queue']]['acw']||this['voiceQueues'][_0x5ea65d[_0x49bb('0x14')]]['mandatoryDisposition'])){if(this[_0x49bb('0x1a')][_0x5ea65d['interface']]){this[_0x49bb('0x8')][_0x5ea65d[_0x49bb('0x27')]]={'queue':_0x5ea65d['queue'],'interface':_0x5ea65d[_0x49bb('0x13')]};}}}catch(_0x510610){logger['error'](_0x49bb('0x32'),_0x510610[_0x49bb('0x2f')]);}};Acw[_0x49bb('0x12')][_0x49bb('0x33')]=function(_0x5c14a2){try{if(this[_0x49bb('0x8')][_0x5c14a2[_0x49bb('0x27')]]&&_['isUndefined'](this[_0x49bb('0x8')][_0x5c14a2['uniqueid']][_0x49bb('0x34')])){logger[_0x49bb('0x1e')](_0x49bb('0x35'),_0x5c14a2[_0x49bb('0x27')]);this[_0x49bb('0x36')](_0x5c14a2[_0x49bb('0x27')]);}else if(this[_0x49bb('0x8')][_0x5c14a2[_0x49bb('0x37')]]&&_[_0x49bb('0x38')](this[_0x49bb('0x8')][_0x5c14a2['linkedid']][_0x49bb('0x34')])){logger[_0x49bb('0x1e')](_0x49bb('0x39'),_0x5c14a2[_0x49bb('0x37')]);this['startAcw'](_0x5c14a2[_0x49bb('0x37')]);}}catch(_0x599ed9){logger[_0x49bb('0x2b')](_0x49bb('0x3a'),_0x599ed9['message']);}};Acw[_0x49bb('0x12')][_0x49bb('0x3b')]=function(_0x542a3d){try{if(this[_0x49bb('0x8')][_0x542a3d[_0x49bb('0x27')]]&&this[_0x49bb('0x8')][_0x542a3d[_0x49bb('0x27')]][_0x49bb('0x34')]){logger[_0x49bb('0x1e')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0x542a3d[_0x49bb('0x27')]);this[_0x49bb('0x36')](_0x542a3d['uniqueid']);}else if(this['channels'][_0x542a3d['linkedid']]&&this[_0x49bb('0x8')][_0x542a3d[_0x49bb('0x37')]][_0x49bb('0x34')]){logger[_0x49bb('0x1e')](_0x49bb('0x3c'),_0x542a3d['linkedid']);this[_0x49bb('0x36')](_0x542a3d[_0x49bb('0x37')]);}}catch(_0x101e97){logger['error'](_0x49bb('0x3d'),_0x101e97['message']);}};Acw[_0x49bb('0x12')][_0x49bb('0xc')]=function(_0x4b8d09){try{if(!_[_0x49bb('0x3e')](this[_0x49bb('0x8')][_0x4b8d09[_0x49bb('0x3f')]])){this['startAcw'](_0x4b8d09[_0x49bb('0x3f')]);if(this[_0x49bb('0x8')][_0x4b8d09[_0x49bb('0x40')]]){this['channels'][_0x4b8d09['secondtransfereruniqueid']][_0x49bb('0x34')]=!![];this['channels'][_0x4b8d09[_0x49bb('0x41')]]=this['channels'][_0x4b8d09[_0x49bb('0x40')]];delete this[_0x49bb('0x8')][_0x4b8d09[_0x49bb('0x40')]];}}else if(!_[_0x49bb('0x3e')](this[_0x49bb('0x8')][_0x4b8d09['transfertargetuniqueid']])){this[_0x49bb('0x36')](_0x4b8d09[_0x49bb('0x41')]);if(this[_0x49bb('0x8')][_0x4b8d09['origtransfereruniqueid']]){this[_0x49bb('0x8')][_0x4b8d09[_0x49bb('0x42')]][_0x49bb('0x34')]=!![];this[_0x49bb('0x8')][_0x4b8d09[_0x49bb('0x3f')]]=this[_0x49bb('0x8')][_0x4b8d09['origtransfereruniqueid']];delete this[_0x49bb('0x8')][_0x4b8d09[_0x49bb('0x42')]];}}}catch(_0x165ea8){logger['error'](_0x49bb('0x43'),_0x165ea8[_0x49bb('0x2f')]);}};Acw[_0x49bb('0x12')][_0x49bb('0xe')]=function(_0xf85bcc){try{if(this[_0x49bb('0x8')][_0xf85bcc[_0x49bb('0x44')]]){logger['info'](_0x49bb('0x45'),JSON[_0x49bb('0x46')](_0xf85bcc[_0x49bb('0x44')]));this[_0x49bb('0x36')](_0xf85bcc[_0x49bb('0x44')]);}else if(this['channels'][_0xf85bcc[_0x49bb('0x47')]]){logger[_0x49bb('0x1e')](_0x49bb('0x48'),JSON[_0x49bb('0x46')](_0xf85bcc[_0x49bb('0x47')]));this[_0x49bb('0x36')](_0xf85bcc[_0x49bb('0x47')]);}}catch(_0x143181){logger['error'](_0x49bb('0x49'),_0x143181[_0x49bb('0x2f')]);}};Acw['prototype']['syncAgentRingNoAnswer']=function(_0x122658){try{if(this[_0x49bb('0x6')][_0x122658['queue']]&&this[_0x49bb('0x6')][_0x122658[_0x49bb('0x14')]][_0x49bb('0x4a')]===_0x49bb('0x4b')){if(this[_0x49bb('0x1a')][_0x122658['interface']]){logger[_0x49bb('0x1e')](_0x49bb('0x4c'),_0x122658[_0x49bb('0x27')],_0x122658[_0x49bb('0x13')],_0x122658[_0x49bb('0x14')]);return RpcUser[_0x49bb('0x21')](this[_0x49bb('0x1a')][_0x122658[_0x49bb('0x13')]],_0x49bb('0x4d'),_0x122658[_0x49bb('0x27')]);}}}catch(_0x4626c7){logger[_0x49bb('0x2b')](_0x49bb('0x4e'),_0x4626c7['message']);}};module['exports']=Acw;
\ No newline at end of file
+var _0xe421=['secondtransfereruniqueid','transfertargetuniqueid','isNil','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','stringify','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','all','savePause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','moment','../ami','../../../config/logger','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','channels','queue','ACW','mandatoryDisposition','name','mandatoryDispositionPause','Action','QueuePause','then','getAgent','voicePause','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','info','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','timer','stopAcw','acwTimeout','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','lastPauseAt','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','saveUnpause','update','[%s][UPDATE][ACWTIME:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','message','interface','[ACW][syncAgentConnect]\x20%s','acw','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','transfereeuniqueid'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xe421,0xc9));var _0x1e42=function(_0x583351,_0x156ab2){_0x583351=_0x583351-0x0;var _0x4753a0=_0xe421[_0x583351];return _0x4753a0;};'use strict';var util=require(_0x1e42('0x0'));var _=require('lodash');var moment=require(_0x1e42('0x1'));var ami=require(_0x1e42('0x2'));var logger=require(_0x1e42('0x3'))('acw');var RpcUser=require(_0x1e42('0x4'));var RpcVoiceAgentReport=require(_0x1e42('0x5'));function Acw(_0x545603){this[_0x1e42('0x6')]=_0x545603[_0x1e42('0x6')];this[_0x1e42('0x7')]=_0x545603['agents'];this[_0x1e42('0x8')]=_0x545603[_0x1e42('0x8')];this['channels']={};ami['on']('agentconnect',this[_0x1e42('0x9')][_0x1e42('0xa')](this));ami['on'](_0x1e42('0xb'),this[_0x1e42('0xc')][_0x1e42('0xa')](this));ami['on'](_0x1e42('0xd'),this[_0x1e42('0xe')][_0x1e42('0xa')](this));ami['on'](_0x1e42('0xf'),this[_0x1e42('0x10')]['bind'](this));ami['on'](_0x1e42('0x11'),this[_0x1e42('0x12')][_0x1e42('0xa')](this));ami['on'](_0x1e42('0x13'),this[_0x1e42('0x14')][_0x1e42('0xa')](this));ami['on'](_0x1e42('0x15'),this[_0x1e42('0x16')][_0x1e42('0xa')](this));}function getDiff(_0x446351){var _0x31cc6f=moment()[_0x1e42('0x17')](0x0);var _0x10dbe1=moment(_0x446351)[_0x1e42('0x17')](0x0);return _0x31cc6f[_0x1e42('0x18')](_0x10dbe1,_0x1e42('0x19'));}Acw[_0x1e42('0x1a')][_0x1e42('0x1b')]=function(_0x2de0ad){try{var _0x1e7696=this;var _0xbf39ea=this['channels'][_0x2de0ad]['interface'];var _0x3dac31=this[_0x1e42('0x1c')][_0x2de0ad][_0x1e42('0x1d')];var _0xfed2cb=this['voiceQueues'][_0x3dac31];var _0x1f27fd=![];var _0x260378=_0x1e42('0x1e');if(_0xfed2cb[_0x1e42('0x1f')]){if(_0xfed2cb['mandatoryDispositionPause'][_0x1e42('0x20')]){_0x1f27fd=!![];_0x260378=_0xfed2cb[_0x1e42('0x21')][_0x1e42('0x20')];}}ami[_0x1e42('0x22')]({'action':_0x1e42('0x23'),'interface':_0xbf39ea,'paused':!![],'reason':_0x260378})[_0x1e42('0x24')](function(_0x231f71){if(_0x1e7696[_0x1e42('0x7')][_0xbf39ea]){return RpcUser[_0x1e42('0x25')](_0x1e7696[_0x1e42('0x7')][_0xbf39ea]['id'])[_0x1e42('0x24')](function(_0x53da54){if(_0x53da54&&!_0x53da54[_0x1e42('0x26')]){logger['info'](_0x1e42('0x27'),_0x2de0ad,_0xbf39ea,_0x3dac31);var _0x2b6c78=_0x1e7696[_0x1e42('0x1c')][_0x2de0ad][_0x1e42('0x28')]&&_0x1e7696[_0x1e42('0x1c')][_0x2de0ad][_0x1e42('0x29')]?_0x1e7696[_0x1e42('0x1c')][_0x2de0ad][_0x1e42('0x29')]:_0x2de0ad;return RpcUser['savePause'](_0x1e7696[_0x1e42('0x7')][_0xbf39ea],_0x260378,_0x2b6c78)['then'](function(_0x3e6f8e){if(!_0x1f27fd){_0x1e7696[_0x1e42('0x8')][_0xbf39ea]={};logger[_0x1e42('0x2a')](_0x1e42('0x2b'),_0x2de0ad,_0x1e7696[_0x1e42('0x6')][_0x3dac31]['acwTimeout'],_0xbf39ea,_0x3dac31);_0x1e7696['timers'][_0xbf39ea][_0x1e42('0x2c')]=setTimeout(_0x1e7696[_0x1e42('0x2d')][_0x1e42('0xa')](_0x1e7696,_0xbf39ea),_0x1e7696['voiceQueues'][_0x3dac31][_0x1e42('0x2e')]*0x3e8);_0x1e7696['timers'][_0xbf39ea]['lastPauseAt']=moment()[_0x1e42('0x2f')](_0x1e42('0x30'));_0x1e7696[_0x1e42('0x8')][_0xbf39ea][_0x1e42('0x31')]=_0x2de0ad;_0x1e7696[_0x1e42('0x8')][_0xbf39ea][_0x1e42('0x1d')]=_0x3dac31;_0x1e7696[_0x1e42('0x8')][_0xbf39ea][_0x1e42('0x32')]=function(){var _0x2783b4=getDiff(_0x1e7696[_0x1e42('0x8')][_0xbf39ea][_0x1e42('0x33')]);clearTimeout(_0x1e7696[_0x1e42('0x8')][_0xbf39ea][_0x1e42('0x2c')]);_0x1e7696[_0x1e42('0x8')][_0xbf39ea][_0x1e42('0x2c')]=![];RpcVoiceAgentReport['update']({'acwtime':_0x2783b4},_0x1e7696[_0x1e42('0x8')][_0xbf39ea]['uniqueid'],_0xbf39ea)[_0x1e42('0x24')](function(_0x4218fa){logger['info']('[%s][UPDATE][ACWTIME:%s]',_0x2de0ad,_0x2783b4,_0x4218fa);})[_0x1e42('0x34')](function(_0x2b417e){logger[_0x1e42('0x35')](_0x1e42('0x36'),_0x2de0ad,_0x2b417e);});delete _0x1e7696['timers'][_0xbf39ea];};}});}else{logger['info'](_0x1e42('0x37'),_0x2de0ad,_0xbf39ea,_0x3dac31);}});}})['catch'](function(_0x39503c){logger[_0x1e42('0x35')](_0x1e42('0x2b'),_0x2de0ad,_0x1e7696[_0x1e42('0x6')][_0x3dac31][_0x1e42('0x2e')],_0xbf39ea,_0x3dac31);})[_0x1e42('0x38')](function(){delete _0x1e7696['channels'][_0x2de0ad];});}catch(_0x426542){logger['error']('[ACW][START]\x20%s',_0x426542['message']);}};Acw[_0x1e42('0x1a')][_0x1e42('0x2d')]=function(_0x52274c){try{var _0x49b962=this;if(_0x49b962[_0x1e42('0x8')][_0x52274c]){_0x49b962[_0x1e42('0x8')][_0x52274c][_0x1e42('0x2c')]=![];var _0x508d86=_0x49b962[_0x1e42('0x8')][_0x52274c][_0x1e42('0x31')];var _0xf6c6a6=_0x49b962[_0x1e42('0x8')][_0x52274c][_0x1e42('0x1d')];var _0x4f009f=_0x49b962[_0x1e42('0x6')][_0xf6c6a6][_0x1e42('0x2e')];logger['info']('[%s][TIMER][STOP][AGENT:%s]',_0x508d86,_0x52274c);RpcUser[_0x1e42('0x39')](this[_0x1e42('0x7')][_0x52274c]);RpcVoiceAgentReport[_0x1e42('0x3a')]({'acwtime':_0x4f009f,'agentacw':!![]},_0x508d86,_0x52274c)[_0x1e42('0x24')](function(_0x3d313b){logger[_0x1e42('0x2a')](_0x1e42('0x3b'),_0x508d86,_0x4f009f,_0x3d313b);})[_0x1e42('0x34')](function(_0x4f5fb3){logger['error'](_0x1e42('0x36'),_0x508d86,_0x4f5fb3);});}else{logger[_0x1e42('0x35')](_0x1e42('0x3c'),_0x52274c);if(_0x49b962['timers']){logger['info'](_0x1e42('0x3d'),JSON['stringify'](_0x49b962[_0x1e42('0x8')]));}}}catch(_0x5d1518){logger['error']('[ACW][STOP]\x20%s',_0x5d1518[_0x1e42('0x3e')]);}};Acw[_0x1e42('0x1a')][_0x1e42('0x9')]=function(_0x5dea2a){try{if(this['voiceQueues'][_0x5dea2a[_0x1e42('0x1d')]]&&(this[_0x1e42('0x6')][_0x5dea2a['queue']]['acw']||this['voiceQueues'][_0x5dea2a[_0x1e42('0x1d')]][_0x1e42('0x1f')])){if(this['agents'][_0x5dea2a['interface']]){this['channels'][_0x5dea2a[_0x1e42('0x31')]]={'queue':_0x5dea2a[_0x1e42('0x1d')],'interface':_0x5dea2a[_0x1e42('0x3f')],'destlinkedid':_0x5dea2a[_0x1e42('0x29')]};}}}catch(_0x5381d8){logger[_0x1e42('0x35')](_0x1e42('0x40'),_0x5381d8[_0x1e42('0x3e')]);}};Acw[_0x1e42('0x1a')][_0x1e42('0x16')]=function(_0x22ea0f){try{if(this[_0x1e42('0x6')][_0x22ea0f['queue']]&&(this[_0x1e42('0x6')][_0x22ea0f['queue']][_0x1e42('0x41')]||this['voiceQueues'][_0x22ea0f['queue']]['mandatoryDisposition'])){if(this[_0x1e42('0x7')][_0x22ea0f[_0x1e42('0x3f')]]){this[_0x1e42('0x1c')][_0x22ea0f[_0x1e42('0x31')]]={'queue':_0x22ea0f[_0x1e42('0x1d')],'interface':_0x22ea0f['interface']};}}}catch(_0x36090f){logger['error']('[ACW][syncAgentConnectPreview]\x20%s',_0x36090f[_0x1e42('0x3e')]);}};Acw[_0x1e42('0x1a')][_0x1e42('0xc')]=function(_0x451a4c){try{if(this[_0x1e42('0x1c')][_0x451a4c[_0x1e42('0x31')]]&&_[_0x1e42('0x42')](this[_0x1e42('0x1c')][_0x451a4c[_0x1e42('0x31')]][_0x1e42('0x28')])){logger[_0x1e42('0x2a')](_0x1e42('0x43'),_0x451a4c[_0x1e42('0x31')]);this[_0x1e42('0x1b')](_0x451a4c[_0x1e42('0x31')]);}else if(this['channels'][_0x451a4c[_0x1e42('0x44')]]&&_[_0x1e42('0x42')](this[_0x1e42('0x1c')][_0x451a4c[_0x1e42('0x44')]][_0x1e42('0x28')])){logger[_0x1e42('0x2a')](_0x1e42('0x45'),_0x451a4c[_0x1e42('0x44')]);this[_0x1e42('0x1b')](_0x451a4c[_0x1e42('0x44')]);}}catch(_0x203c99){logger[_0x1e42('0x35')](_0x1e42('0x46'),_0x203c99['message']);}};Acw['prototype'][_0x1e42('0xe')]=function(_0x32cb3f){try{if(this['channels'][_0x32cb3f[_0x1e42('0x31')]]&&this[_0x1e42('0x1c')][_0x32cb3f['uniqueid']][_0x1e42('0x28')]){logger[_0x1e42('0x2a')](_0x1e42('0x47'),_0x32cb3f[_0x1e42('0x31')]);this['startAcw'](_0x32cb3f['uniqueid']);}else if(this[_0x1e42('0x1c')][_0x32cb3f[_0x1e42('0x44')]]&&this['channels'][_0x32cb3f['linkedid']][_0x1e42('0x28')]){logger[_0x1e42('0x2a')](_0x1e42('0x48'),_0x32cb3f[_0x1e42('0x44')]);this[_0x1e42('0x1b')](_0x32cb3f[_0x1e42('0x44')]);}}catch(_0x392123){logger[_0x1e42('0x35')](_0x1e42('0x49'),_0x392123[_0x1e42('0x3e')]);}};Acw[_0x1e42('0x1a')][_0x1e42('0x12')]=function(_0x2f3e0d){try{if(!_['isNil'](this[_0x1e42('0x1c')][_0x2f3e0d['transfereeuniqueid']])){this[_0x1e42('0x1b')](_0x2f3e0d[_0x1e42('0x4a')]);if(this[_0x1e42('0x1c')][_0x2f3e0d[_0x1e42('0x4b')]]){this[_0x1e42('0x1c')][_0x2f3e0d[_0x1e42('0x4b')]][_0x1e42('0x28')]=!![];this[_0x1e42('0x1c')][_0x2f3e0d[_0x1e42('0x4c')]]=this[_0x1e42('0x1c')][_0x2f3e0d[_0x1e42('0x4b')]];delete this['channels'][_0x2f3e0d[_0x1e42('0x4b')]];}}else if(!_[_0x1e42('0x4d')](this[_0x1e42('0x1c')][_0x2f3e0d[_0x1e42('0x4c')]])){this[_0x1e42('0x1b')](_0x2f3e0d[_0x1e42('0x4c')]);if(this['channels'][_0x2f3e0d[_0x1e42('0x4e')]]){this['channels'][_0x2f3e0d['origtransfereruniqueid']][_0x1e42('0x28')]=!![];this['channels'][_0x2f3e0d[_0x1e42('0x4a')]]=this[_0x1e42('0x1c')][_0x2f3e0d[_0x1e42('0x4e')]];delete this[_0x1e42('0x1c')][_0x2f3e0d[_0x1e42('0x4e')]];}}}catch(_0x28b57c){logger[_0x1e42('0x35')](_0x1e42('0x4f'),_0x28b57c['message']);}};Acw[_0x1e42('0x1a')][_0x1e42('0x14')]=function(_0x51ec48){try{if(this[_0x1e42('0x1c')][_0x51ec48[_0x1e42('0x50')]]){logger[_0x1e42('0x2a')](_0x1e42('0x51'),JSON[_0x1e42('0x52')](_0x51ec48[_0x1e42('0x50')]));this[_0x1e42('0x1b')](_0x51ec48['transfereruniqueid']);}else if(this[_0x1e42('0x1c')][_0x51ec48[_0x1e42('0x53')]]){logger[_0x1e42('0x2a')](_0x1e42('0x54'),JSON[_0x1e42('0x52')](_0x51ec48[_0x1e42('0x53')]));this['startAcw'](_0x51ec48[_0x1e42('0x53')]);}}catch(_0x85fe7c){logger['error'](_0x1e42('0x55'),_0x85fe7c['message']);}};Acw[_0x1e42('0x1a')]['syncAgentRingNoAnswer']=function(_0x58115a){try{if(this['voiceQueues'][_0x58115a[_0x1e42('0x1d')]]&&this[_0x1e42('0x6')][_0x58115a[_0x1e42('0x1d')]][_0x1e42('0x56')]===_0x1e42('0x57')){if(this[_0x1e42('0x7')][_0x58115a[_0x1e42('0x3f')]]){logger[_0x1e42('0x2a')]('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x58115a['uniqueid'],_0x58115a[_0x1e42('0x3f')],_0x58115a[_0x1e42('0x1d')]);return RpcUser[_0x1e42('0x58')](this[_0x1e42('0x7')][_0x58115a[_0x1e42('0x3f')]],_0x1e42('0x59'),_0x58115a[_0x1e42('0x31')]);}}}catch(_0x57d8a6){logger[_0x1e42('0x35')](_0x1e42('0x5a'),_0x57d8a6['message']);}};module[_0x1e42('0x5b')]=Acw;
\ No newline at end of file
index 7dab1dc..41ac096 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x495a=['coreshowchannels','info','once','close','connect','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','resolve','then','actionSipShowRegistry','actionCoreShowChannels','catch','asterisk-manager','bluebird','moment','lodash','../../config/logger','ami','asterisk','port','username','password','keepConnected','Action','action','error','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','format','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','sipshowregistry','actionDeviceStateList','devicestatelist','actionSipPeerStatus','queuesummary'];(function(_0x5c751d,_0x44acb2){var _0x434aad=function(_0x2412b3){while(--_0x2412b3){_0x5c751d['push'](_0x5c751d['shift']());}};_0x434aad(++_0x44acb2);}(_0x495a,0xe5));var _0xa495=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0x495a[_0x209941];return _0x1e8729;};'use strict';var Manager=require(_0xa495('0x0'));var BPromise=require(_0xa495('0x1'));var moment=require(_0xa495('0x2'));var util=require('util');var _=require(_0xa495('0x3'));var logger=require(_0xa495('0x4'))(_0xa495('0x5'));var config=require('../../config/environment');var ami=new Manager(config[_0xa495('0x6')][_0xa495('0x7')],config[_0xa495('0x6')]['ip'],config['asterisk'][_0xa495('0x8')],config[_0xa495('0x6')][_0xa495('0x9')],!![]);ami[_0xa495('0xa')]();ami[_0xa495('0xb')]=BPromise['promisify'](ami[_0xa495('0xc')]);function error(_0x134118){logger[_0xa495('0xd')](util['format'](_0xa495('0xe'),config['asterisk'][_0xa495('0x8')],config[_0xa495('0x6')]['ip'],config['asterisk'][_0xa495('0x7')],util[_0xa495('0xf')](_0x134118,![],null)));}function close(){logger[_0xa495('0xd')](util[_0xa495('0x10')](_0xa495('0x11'),config[_0xa495('0x6')][_0xa495('0x8')],config[_0xa495('0x6')]['ip'],config['asterisk']['port']));}ami['actionSipShowRegistry']=function(){return function(){return ami[_0xa495('0xb')]({'action':_0xa495('0x12')});};};ami[_0xa495('0x13')]=function(){return function(){return ami[_0xa495('0xb')]({'action':_0xa495('0x14')});};};ami[_0xa495('0x15')]=function(){return function(){return ami['Action']({'action':'sippeerstatus'});};};ami['actionQueueSummary']=function(){return function(){return ami[_0xa495('0xb')]({'action':_0xa495('0x16')});};};ami['actionCoreShowChannels']=function(){return function(){return ami['Action']({'action':_0xa495('0x17')});};};function connect(_0x490224){logger[_0xa495('0x18')](util['format']('Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s',config['asterisk'][_0xa495('0x8')],config[_0xa495('0x6')]['ip'],config[_0xa495('0x6')][_0xa495('0x7')]));ami[_0xa495('0x19')](_0xa495('0xd'),error);ami[_0xa495('0x19')](_0xa495('0x1a'),close);}ami['on'](_0xa495('0x1b'),connect);ami['on'](_0xa495('0x1c'),function(_0x2d9216){logger[_0xa495('0x18')](util['format'](_0xa495('0x1d'),config[_0xa495('0x6')][_0xa495('0x8')],config[_0xa495('0x6')]['ip'],config[_0xa495('0x6')][_0xa495('0x7')],util[_0xa495('0xf')](_0x2d9216,![],null)));});ami['on'](_0xa495('0x1e'),function(_0x20c220){logger['info'](util[_0xa495('0x10')]('Fullybooted\x20\x22%s\x22\x20to\x20%s:%s',config[_0xa495('0x6')]['username'],config[_0xa495('0x6')]['ip'],config['asterisk']['port']));return BPromise[_0xa495('0x1f')]()[_0xa495('0x20')](ami[_0xa495('0x21')]())[_0xa495('0x20')](ami[_0xa495('0x13')]())[_0xa495('0x20')](ami[_0xa495('0x15')]())['then'](ami['actionQueueSummary']())['then'](ami[_0xa495('0x22')]())[_0xa495('0x23')](function(_0x4fa64a){console['log'](_0x4fa64a);});});ami[_0xa495('0x19')](_0xa495('0xd'),error);ami['once'](_0xa495('0x1a'),close);module['exports']=ami;
\ No newline at end of file
+var _0x6761=['queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','shutdown','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','then','catch','exports','asterisk-manager','util','../../config/logger','ami','asterisk','username','password','keepConnected','Action','action','error','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','port','inspect','format','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','actionDeviceStateList','devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary'];(function(_0x1e38d8,_0x1eb00e){var _0x2468f5=function(_0x3bcf9e){while(--_0x3bcf9e){_0x1e38d8['push'](_0x1e38d8['shift']());}};_0x2468f5(++_0x1eb00e);}(_0x6761,0x12e));var _0x1676=function(_0x366a38,_0x3eeda0){_0x366a38=_0x366a38-0x0;var _0x1e8bf1=_0x6761[_0x366a38];return _0x1e8bf1;};'use strict';var Manager=require(_0x1676('0x0'));var BPromise=require('bluebird');var moment=require('moment');var util=require(_0x1676('0x1'));var _=require('lodash');var logger=require(_0x1676('0x2'))(_0x1676('0x3'));var config=require('../../config/environment');var ami=new Manager(config['asterisk']['port'],config[_0x1676('0x4')]['ip'],config[_0x1676('0x4')][_0x1676('0x5')],config[_0x1676('0x4')][_0x1676('0x6')],!![]);ami[_0x1676('0x7')]();ami[_0x1676('0x8')]=BPromise['promisify'](ami[_0x1676('0x9')]);function error(_0x673420){logger[_0x1676('0xa')](util['format'](_0x1676('0xb'),config[_0x1676('0x4')][_0x1676('0x5')],config[_0x1676('0x4')]['ip'],config[_0x1676('0x4')][_0x1676('0xc')],util[_0x1676('0xd')](_0x673420,![],null)));}function close(){logger[_0x1676('0xa')](util[_0x1676('0xe')](_0x1676('0xf'),config['asterisk'][_0x1676('0x5')],config[_0x1676('0x4')]['ip'],config[_0x1676('0x4')][_0x1676('0xc')]));}ami[_0x1676('0x10')]=function(){return function(){return ami['Action']({'action':'sipshowregistry'});};};ami[_0x1676('0x11')]=function(){return function(){return ami[_0x1676('0x8')]({'action':_0x1676('0x12')});};};ami[_0x1676('0x13')]=function(){return function(){return ami[_0x1676('0x8')]({'action':_0x1676('0x14')});};};ami[_0x1676('0x15')]=function(){return function(){return ami[_0x1676('0x8')]({'action':_0x1676('0x16')});};};ami[_0x1676('0x17')]=function(){return function(){return ami['Action']({'action':_0x1676('0x18')});};};function connect(_0x5b329a){logger[_0x1676('0x19')](util[_0x1676('0xe')](_0x1676('0x1a'),config[_0x1676('0x4')][_0x1676('0x5')],config[_0x1676('0x4')]['ip'],config[_0x1676('0x4')][_0x1676('0xc')]));ami[_0x1676('0x1b')]('error',error);ami[_0x1676('0x1b')](_0x1676('0x1c'),close);}ami['on'](_0x1676('0x1d'),connect);ami['on'](_0x1676('0x1e'),function(_0x572a9a){logger[_0x1676('0x19')](util[_0x1676('0xe')]('Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s',config['asterisk'][_0x1676('0x5')],config[_0x1676('0x4')]['ip'],config[_0x1676('0x4')]['port'],util[_0x1676('0xd')](_0x572a9a,![],null)));});ami['on'](_0x1676('0x1f'),function(_0x379de9){logger[_0x1676('0x19')](util[_0x1676('0xe')](_0x1676('0x20'),config[_0x1676('0x4')][_0x1676('0x5')],config[_0x1676('0x4')]['ip'],config[_0x1676('0x4')][_0x1676('0xc')]));return BPromise['resolve']()[_0x1676('0x21')](ami[_0x1676('0x10')]())[_0x1676('0x21')](ami[_0x1676('0x11')]())['then'](ami[_0x1676('0x13')]())['then'](ami[_0x1676('0x15')]())[_0x1676('0x21')](ami[_0x1676('0x17')]())[_0x1676('0x22')](function(_0x4b54d7){console['log'](_0x4b54d7);});});ami[_0x1676('0x1b')](_0x1676('0xa'),error);ami[_0x1676('0x1b')]('close',close);module[_0x1676('0x23')]=ami;
\ No newline at end of file
index 9d1ab83..ed9f9ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['result','catch','exports','jayson/promise','bluebird','../../config/logger','client','http','Request','request','then','debug','rpc','memberReport','error','message'];(function(_0x5af59e,_0x3771c1){var _0x4240df=function(_0x2267fd){while(--_0x2267fd){_0x5af59e['push'](_0x5af59e['shift']());}};_0x4240df(++_0x3771c1);}(_0xe706,0xa3));var _0x6e70=function(_0x4c1ec2,_0x4f42b7){_0x4c1ec2=_0x4c1ec2-0x0;var _0x3f6f1c=_0xe706[_0x4c1ec2];return _0x3f6f1c;};'use strict';var jayson=require(_0x6e70('0x0'));var BPromise=require(_0x6e70('0x1'));var logger=require(_0x6e70('0x2'))('ami');var client=jayson[_0x6e70('0x3')][_0x6e70('0x4')]({'port':0x2329});client[_0x6e70('0x5')]=function(_0x7dfbc3,_0x142c27){return new BPromise(function(_0x2164a4,_0x376a8d){return client[_0x6e70('0x6')](_0x7dfbc3,_0x142c27)[_0x6e70('0x7')](function(_0x4381d1){logger[_0x6e70('0x8')](_0x6e70('0x9'),_0x6e70('0xa'),_0x7dfbc3,_0x142c27,_0x4381d1);if(_0x4381d1[_0x6e70('0xb')]){logger[_0x6e70('0xb')](_0x6e70('0x9'),_0x6e70('0xa'),_0x7dfbc3,_0x4381d1[_0x6e70('0xb')][_0x6e70('0xc')],_0x142c27);return _0x376a8d(_0x4381d1[_0x6e70('0xb')][_0x6e70('0xc')]);}else{return _0x2164a4(_0x4381d1[_0x6e70('0xd')]);}})[_0x6e70('0xe')](function(_0x4600f9){logger['error']('rpc',_0x6e70('0xa'),_0x7dfbc3,_0x4600f9,_0x142c27);return _0x376a8d(_0x4600f9);});});};module[_0x6e70('0xf')]=client;
\ No newline at end of file
+var _0x9bde=['message','result','catch','exports','bluebird','ami','http','Request','request','debug','rpc','memberReport','error'];(function(_0x599aaf,_0x3d3622){var _0xd995f3=function(_0x19825e){while(--_0x19825e){_0x599aaf['push'](_0x599aaf['shift']());}};_0xd995f3(++_0x3d3622);}(_0x9bde,0xe1));var _0xe9bd=function(_0x15eb7e,_0x2261ce){_0x15eb7e=_0x15eb7e-0x0;var _0x159ec5=_0x9bde[_0x15eb7e];return _0x159ec5;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0xe9bd('0x0'));var logger=require('../../config/logger')(_0xe9bd('0x1'));var client=jayson['client'][_0xe9bd('0x2')]({'port':0x2329});client[_0xe9bd('0x3')]=function(_0x131f6a,_0x1c1b34){return new BPromise(function(_0x10822d,_0x1a4d14){return client[_0xe9bd('0x4')](_0x131f6a,_0x1c1b34)['then'](function(_0x4763e9){logger[_0xe9bd('0x5')](_0xe9bd('0x6'),_0xe9bd('0x7'),_0x131f6a,_0x1c1b34,_0x4763e9);if(_0x4763e9[_0xe9bd('0x8')]){logger[_0xe9bd('0x8')](_0xe9bd('0x6'),_0xe9bd('0x7'),_0x131f6a,_0x4763e9[_0xe9bd('0x8')][_0xe9bd('0x9')],_0x1c1b34);return _0x1a4d14(_0x4763e9['error']['message']);}else{return _0x10822d(_0x4763e9[_0xe9bd('0xa')]);}})[_0xe9bd('0xb')](function(_0x2601ac){logger['error'](_0xe9bd('0x6'),_0xe9bd('0x7'),_0x131f6a,_0x2601ac,_0x1c1b34);return _0x1a4d14(_0x2601ac);});});};module[_0xe9bd('0xc')]=client;
\ No newline at end of file
index 41b8920..a1b752e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83e6=['callbackat','recallme','originatecalleridnum','prototype','getCaller','format','\x22%s\x22\x20<%s>','voiceQueue','substring','dialCutDigit','getQueue','exports','util','lodash','isNil','string','uniqueid','name','Contact','phone','firstName','number','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ListId','UserId','VoiceQueueId','CampaignId','ContactFirstName','starttime','YYYY-MM-DD\x20HH:mm:ss','callbackuniqueid'];(function(_0x48bb2f,_0x3b943e){var _0x20d29a=function(_0x5bd71c){while(--_0x5bd71c){_0x48bb2f['push'](_0x48bb2f['shift']());}};_0x20d29a(++_0x3b943e);}(_0x83e6,0x87));var _0x683e=function(_0x1fc4b8,_0x56613e){_0x1fc4b8=_0x1fc4b8-0x0;var _0x160ab5=_0x83e6[_0x1fc4b8];return _0x160ab5;};'use strict';var util=require(_0x683e('0x0'));var _=require(_0x683e('0x1'));var moment=require('moment');function checkNameSurname(_0x4f446e,_0x2b8387,_0x417e1a){var _0x28d50d='';if(!_[_0x683e('0x2')](_0x2b8387)&&_0x683e('0x3')===typeof _0x2b8387){_0x28d50d+=_0x2b8387;}if(!_[_0x683e('0x2')](_0x417e1a)&&_0x683e('0x3')===typeof _0x417e1a){_0x28d50d+='\x20'+_0x417e1a;}if(_0x28d50d!==''){return _0x28d50d;}return _0x4f446e;}function Action(_0x32f0f5,_0x230ba9,_0x734fa7){this['voiceQueue']=_0x32f0f5;this[_0x683e('0x4')]=_0x734fa7||undefined;this[_0x683e('0x5')]=checkNameSurname(_0x230ba9[_0x683e('0x6')][_0x683e('0x7')],_0x230ba9[_0x683e('0x6')][_0x683e('0x8')],_0x230ba9[_0x683e('0x6')]['lastName']);this[_0x683e('0x9')]=_0x230ba9[_0x683e('0x6')][_0x683e('0x7')];this['queue']=_0x32f0f5[_0x683e('0x5')];this[_0x683e('0xa')]=_0x230ba9['active']||![];this['type']=_0x32f0f5[_0x683e('0xb')];this[_0x683e('0xc')]=_0x32f0f5[_0x683e('0xc')]||0x3;this[_0x683e('0xd')]=_0x230ba9[_0x683e('0xd')];this[_0x683e('0xe')]=_0x230ba9[_0x683e('0xe')];this[_0x683e('0xf')]=_0x230ba9['countcongestionretry'];this[_0x683e('0x10')]=_0x230ba9['countnoanswerretry'];this['countnosuchnumberretry']=_0x230ba9['countnosuchnumberretry'];this[_0x683e('0x11')]=_0x230ba9[_0x683e('0x11')];this[_0x683e('0x12')]=_0x230ba9[_0x683e('0x12')];this[_0x683e('0x13')]=_0x230ba9['countmachineretry'];this[_0x683e('0x14')]=_0x230ba9['countagentrejectretry'];this['ContactId']=_0x230ba9['ContactId'];this[_0x683e('0x15')]=_0x230ba9[_0x683e('0x15')];this[_0x683e('0x16')]=_0x230ba9['UserId'];this[_0x683e('0x17')]=_0x230ba9['VoiceQueueId'];this[_0x683e('0x18')]=_0x230ba9[_0x683e('0x18')];this['idHopper']=_0x230ba9['id'];this[_0x683e('0x19')]=_0x230ba9[_0x683e('0x6')]['firstName']||'';this[_0x683e('0x1a')]=moment()['format'](_0x683e('0x1b'));this['callback']=_0x230ba9['callback'];this['callbackuniqueid']=_0x230ba9[_0x683e('0x1c')];this[_0x683e('0x1d')]=_0x230ba9[_0x683e('0x1d')];this[_0x683e('0x1e')]=_0x230ba9[_0x683e('0x1e')];this[_0x683e('0x1f')]='';this['originatecalleridname']='';}Action[_0x683e('0x20')][_0x683e('0x21')]=function(){return util[_0x683e('0x22')](_0x683e('0x23'),this[_0x683e('0x5')],this[_0x683e('0x24')]['dialCutDigit']>0x0?this[_0x683e('0x9')][_0x683e('0x25')](this['voiceQueue'][_0x683e('0x26')]):this[_0x683e('0x9')]);};Action['prototype'][_0x683e('0x27')]=function(){return this['queue'];};module[_0x683e('0x28')]=Action;
\ No newline at end of file
+var _0x7bf2=['ContactId','ListId','UserId','VoiceQueueId','idHopper','ContactFirstName','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','prototype','getCaller','substring','dialCutDigit','exports','util','lodash','moment','isNil','string','voiceQueue','uniqueid','name','Contact','firstName','lastName','number','queue','active','type','dialQueueTimeout','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x7bf2,0x64));var _0x27bf=function(_0x11a5a0,_0xa682c1){_0x11a5a0=_0x11a5a0-0x0;var _0x8a8d48=_0x7bf2[_0x11a5a0];return _0x8a8d48;};'use strict';var util=require(_0x27bf('0x0'));var _=require(_0x27bf('0x1'));var moment=require(_0x27bf('0x2'));function checkNameSurname(_0x181766,_0x4a787c,_0x338108){var _0x443edc='';if(!_[_0x27bf('0x3')](_0x4a787c)&&_0x27bf('0x4')===typeof _0x4a787c){_0x443edc+=_0x4a787c;}if(!_['isNil'](_0x338108)&&'string'===typeof _0x338108){_0x443edc+='\x20'+_0x338108;}if(_0x443edc!==''){return _0x443edc;}return _0x181766;}function Action(_0x50db49,_0x1fa677,_0x37dca9){this[_0x27bf('0x5')]=_0x50db49;this[_0x27bf('0x6')]=_0x37dca9||undefined;this[_0x27bf('0x7')]=checkNameSurname(_0x1fa677['Contact']['phone'],_0x1fa677[_0x27bf('0x8')][_0x27bf('0x9')],_0x1fa677[_0x27bf('0x8')][_0x27bf('0xa')]);this[_0x27bf('0xb')]=_0x1fa677[_0x27bf('0x8')]['phone'];this[_0x27bf('0xc')]=_0x50db49[_0x27bf('0x7')];this[_0x27bf('0xd')]=_0x1fa677[_0x27bf('0xd')]||![];this[_0x27bf('0xe')]=_0x50db49[_0x27bf('0xe')];this[_0x27bf('0xf')]=_0x50db49[_0x27bf('0xf')]||0x3;this['scheduledat']=_0x1fa677['scheduledat'];this[_0x27bf('0x10')]=_0x1fa677[_0x27bf('0x10')];this['countcongestionretry']=_0x1fa677[_0x27bf('0x11')];this['countnoanswerretry']=_0x1fa677[_0x27bf('0x12')];this[_0x27bf('0x13')]=_0x1fa677['countnosuchnumberretry'];this[_0x27bf('0x14')]=_0x1fa677['countdropretry'];this[_0x27bf('0x15')]=_0x1fa677['countabandonedretry'];this[_0x27bf('0x16')]=_0x1fa677['countmachineretry'];this['countagentrejectretry']=_0x1fa677['countagentrejectretry'];this[_0x27bf('0x17')]=_0x1fa677[_0x27bf('0x17')];this[_0x27bf('0x18')]=_0x1fa677[_0x27bf('0x18')];this[_0x27bf('0x19')]=_0x1fa677[_0x27bf('0x19')];this[_0x27bf('0x1a')]=_0x1fa677[_0x27bf('0x1a')];this['CampaignId']=_0x1fa677['CampaignId'];this[_0x27bf('0x1b')]=_0x1fa677['id'];this[_0x27bf('0x1c')]=_0x1fa677['Contact'][_0x27bf('0x9')]||'';this[_0x27bf('0x1d')]=moment()[_0x27bf('0x1e')](_0x27bf('0x1f'));this[_0x27bf('0x20')]=_0x1fa677[_0x27bf('0x20')];this[_0x27bf('0x21')]=_0x1fa677[_0x27bf('0x21')];this[_0x27bf('0x22')]=_0x1fa677[_0x27bf('0x22')];this['recallme']=_0x1fa677[_0x27bf('0x23')];this['originatecalleridnum']='';this['originatecalleridname']='';}Action[_0x27bf('0x24')][_0x27bf('0x25')]=function(){return util[_0x27bf('0x1e')]('\x22%s\x22\x20<%s>',this['name'],this[_0x27bf('0x5')]['dialCutDigit']>0x0?this[_0x27bf('0xb')][_0x27bf('0x26')](this[_0x27bf('0x5')][_0x27bf('0x27')]):this[_0x27bf('0xb')]);};Action[_0x27bf('0x24')]['getQueue']=function(){return this[_0x27bf('0xc')];};module[_0x27bf('0x28')]=Action;
\ No newline at end of file
index a1e7764..12302b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16a2=['talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','seconds','state','statedesc','Answer','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','uniqueid','name','number','starttime','responsetime','answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','holdtime'];(function(_0x2b0a49,_0x1ca05e){var _0xdd87dc=function(_0x3430eb){while(--_0x3430eb){_0x2b0a49['push'](_0x2b0a49['shift']());}};_0xdd87dc(++_0x1ca05e);}(_0x16a2,0x1d0));var _0x216a=function(_0x3ccdf8,_0x584ceb){_0x3ccdf8=_0x3ccdf8-0x0;var _0x243dab=_0x16a2[_0x3ccdf8];return _0x243dab;};'use strict';var util=require(_0x216a('0x0'));var _=require(_0x216a('0x1'));var moment=require(_0x216a('0x2'));function getSeconds(_0x38dc7a,_0x194a77){var _0x4fb28f=moment(_0x38dc7a)['milliseconds'](0x0);var _0x4522fa=moment(_0x194a77)[_0x216a('0x3')](0x0);return _0x4fb28f[_0x216a('0x4')](_0x4522fa,_0x216a('0x5'));}function AgentComplete(_0x5d5f57,_0x4d97cd){this[_0x216a('0x6')]=0x4;this[_0x216a('0x7')]=_0x216a('0x8');this['scheduledat']=_0x5d5f57[_0x216a('0x9')];this[_0x216a('0xa')]=_0x5d5f57[_0x216a('0xa')];this[_0x216a('0xb')]=_0x5d5f57['type']==='outbound'?_0x216a('0xc'):_0x5d5f57[_0x216a('0xa')];this['countbusyretry']=_0x5d5f57[_0x216a('0xd')];this[_0x216a('0xe')]=_0x5d5f57[_0x216a('0xe')];this[_0x216a('0xf')]=_0x5d5f57[_0x216a('0xf')];this['countglobal']=_0x5d5f57[_0x216a('0xd')]+_0x5d5f57[_0x216a('0xe')]+_0x5d5f57['countnoanswerretry']+_0x5d5f57[_0x216a('0x10')]+_0x5d5f57[_0x216a('0x11')]+_0x5d5f57['countabandonedretry']+_0x5d5f57[_0x216a('0x12')]+_0x5d5f57[_0x216a('0x13')];this['countnosuchnumberretry']=_0x5d5f57[_0x216a('0x10')];this['countdropretry']=_0x5d5f57[_0x216a('0x11')];this[_0x216a('0x14')]=_0x5d5f57[_0x216a('0x14')];this[_0x216a('0x12')]=_0x5d5f57['countmachineretry'];this[_0x216a('0x13')]=_0x5d5f57[_0x216a('0x13')];this['uniqueid']=_0x4d97cd[_0x216a('0x15')];this['calleridname']=_0x5d5f57[_0x216a('0x16')];this['calleridnum']=_0x5d5f57[_0x216a('0x17')];this[_0x216a('0x18')]=_0x5d5f57[_0x216a('0x18')];this[_0x216a('0x19')]=_0x5d5f57[_0x216a('0x19')];this['answertime']=_0x5d5f57[_0x216a('0x1a')];this[_0x216a('0x1b')]=moment()[_0x216a('0x1c')](_0x216a('0x1d'));this['ringtime']=getSeconds(_0x5d5f57[_0x216a('0x19')],_0x5d5f57[_0x216a('0x18')]);this[_0x216a('0x1e')]=getSeconds(_0x5d5f57[_0x216a('0x1a')],_0x5d5f57[_0x216a('0x19')]);this[_0x216a('0x1f')]=getSeconds(this[_0x216a('0x1b')],_0x5d5f57[_0x216a('0x1a')]);this[_0x216a('0xc')]=_0x4d97cd[_0x216a('0xc')];this[_0x216a('0x20')]=_0x4d97cd['membername'];this[_0x216a('0x21')]=_0x4d97cd['reason'];this[_0x216a('0x22')]=_0x5d5f57[_0x216a('0x22')];this[_0x216a('0x23')]=_0x5d5f57['callbackuniqueid'];this[_0x216a('0x24')]=_0x5d5f57['callbackat'];this[_0x216a('0x25')]=_0x5d5f57['recallme'];this[_0x216a('0x26')]=_0x5d5f57['ContactId'];this[_0x216a('0x27')]=_0x5d5f57[_0x216a('0x27')];this['UserId']=_0x5d5f57[_0x216a('0x28')];this[_0x216a('0x29')]=_0x5d5f57[_0x216a('0x29')];this[_0x216a('0x2a')]=_0x5d5f57[_0x216a('0x2a')];this['originatecalleridnum']=_0x5d5f57['originatecalleridnum']||'';this[_0x216a('0x2b')]=_0x5d5f57['originatecalleridname']||'';}module[_0x216a('0x2c')]=AgentComplete;
\ No newline at end of file
+var _0x8c2e=['diff','seconds','statedesc','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','uniqueid','calleridnum','number','responsetime','answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','starttime','talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds'];(function(_0x1aae6a,_0x56bb19){var _0x297a71=function(_0x471e80){while(--_0x471e80){_0x1aae6a['push'](_0x1aae6a['shift']());}};_0x297a71(++_0x56bb19);}(_0x8c2e,0x17f));var _0xe8c2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8c2e[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0xe8c2('0x0'));var _=require(_0xe8c2('0x1'));var moment=require(_0xe8c2('0x2'));function getSeconds(_0x521fc8,_0x3524b1){var _0x46f0c1=moment(_0x521fc8)[_0xe8c2('0x3')](0x0);var _0xeddecc=moment(_0x3524b1)['milliseconds'](0x0);return _0x46f0c1[_0xe8c2('0x4')](_0xeddecc,_0xe8c2('0x5'));}function AgentComplete(_0x39f37c,_0x2b5e14){this['state']=0x4;this[_0xe8c2('0x6')]='Answer';this[_0xe8c2('0x7')]=_0x39f37c['scheduledat'];this[_0xe8c2('0x8')]=_0x39f37c[_0xe8c2('0x8')];this[_0xe8c2('0x9')]=_0x39f37c[_0xe8c2('0x8')]===_0xe8c2('0xa')?_0xe8c2('0xb'):_0x39f37c[_0xe8c2('0x8')];this['countbusyretry']=_0x39f37c[_0xe8c2('0xc')];this[_0xe8c2('0xd')]=_0x39f37c['countcongestionretry'];this['countnoanswerretry']=_0x39f37c[_0xe8c2('0xe')];this['countglobal']=_0x39f37c['countbusyretry']+_0x39f37c['countcongestionretry']+_0x39f37c[_0xe8c2('0xe')]+_0x39f37c[_0xe8c2('0xf')]+_0x39f37c['countdropretry']+_0x39f37c[_0xe8c2('0x10')]+_0x39f37c[_0xe8c2('0x11')]+_0x39f37c[_0xe8c2('0x12')];this['countnosuchnumberretry']=_0x39f37c[_0xe8c2('0xf')];this['countdropretry']=_0x39f37c[_0xe8c2('0x13')];this['countabandonedretry']=_0x39f37c['countabandonedretry'];this[_0xe8c2('0x11')]=_0x39f37c['countmachineretry'];this[_0xe8c2('0x12')]=_0x39f37c[_0xe8c2('0x12')];this[_0xe8c2('0x14')]=_0x2b5e14[_0xe8c2('0x14')];this['calleridname']=_0x39f37c['name'];this[_0xe8c2('0x15')]=_0x39f37c[_0xe8c2('0x16')];this['starttime']=_0x39f37c['starttime'];this[_0xe8c2('0x17')]=_0x39f37c[_0xe8c2('0x17')];this[_0xe8c2('0x18')]=_0x39f37c[_0xe8c2('0x18')];this[_0xe8c2('0x19')]=moment()[_0xe8c2('0x1a')](_0xe8c2('0x1b'));this[_0xe8c2('0x1c')]=getSeconds(_0x39f37c[_0xe8c2('0x17')],_0x39f37c[_0xe8c2('0x1d')]);this['holdtime']=getSeconds(_0x39f37c['answertime'],_0x39f37c[_0xe8c2('0x17')]);this[_0xe8c2('0x1e')]=getSeconds(this[_0xe8c2('0x19')],_0x39f37c[_0xe8c2('0x18')]);this[_0xe8c2('0xb')]=_0x2b5e14['queue'];this[_0xe8c2('0x1f')]=_0x2b5e14['membername'];this[_0xe8c2('0x20')]=_0x2b5e14[_0xe8c2('0x20')];this[_0xe8c2('0x21')]=_0x39f37c[_0xe8c2('0x21')];this[_0xe8c2('0x22')]=_0x39f37c[_0xe8c2('0x22')];this['callbackat']=_0x39f37c[_0xe8c2('0x23')];this[_0xe8c2('0x24')]=_0x39f37c[_0xe8c2('0x24')];this['ContactId']=_0x39f37c['ContactId'];this[_0xe8c2('0x25')]=_0x39f37c[_0xe8c2('0x25')];this[_0xe8c2('0x26')]=_0x39f37c[_0xe8c2('0x26')];this[_0xe8c2('0x27')]=_0x39f37c[_0xe8c2('0x27')];this[_0xe8c2('0x28')]=_0x39f37c[_0xe8c2('0x28')];this[_0xe8c2('0x29')]=_0x39f37c['originatecalleridnum']||'';this[_0xe8c2('0x2a')]=_0x39f37c[_0xe8c2('0x2a')]||'';}module['exports']=AgentComplete;
\ No newline at end of file
index 1224642..39b7402 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98a8=['VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','ringtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId'];(function(_0x4a220d,_0x3e01cb){var _0x37ba30=function(_0x2ce397){while(--_0x2ce397){_0x4a220d['push'](_0x4a220d['shift']());}};_0x37ba30(++_0x3e01cb);}(_0x98a8,0x12c));var _0x898a=function(_0x14a25d,_0x323a99){_0x14a25d=_0x14a25d-0x0;var _0x21fdcb=_0x98a8[_0x14a25d];return _0x21fdcb;};'use strict';var util=require(_0x898a('0x0'));var _=require(_0x898a('0x1'));var moment=require(_0x898a('0x2'));function getSeconds(_0x4583d9,_0x213c5d){var _0x226db7=moment(_0x4583d9)[_0x898a('0x3')](0x0);var _0x4a0836=moment(_0x213c5d)[_0x898a('0x3')](0x0);return _0x226db7[_0x898a('0x4')](_0x4a0836,_0x898a('0x5'));}function Final(_0x101b7b){this[_0x898a('0x6')]=_0x101b7b['uniqueid'];this[_0x898a('0x7')]=_0x101b7b['scheduledat'];this[_0x898a('0x8')]=_0x101b7b['type'];this[_0x898a('0x9')]=_0x101b7b[_0x898a('0x8')]===_0x898a('0xa')?_0x898a('0xb'):_0x101b7b[_0x898a('0x8')];this[_0x898a('0xc')]=_0x101b7b[_0x898a('0xc')];this[_0x898a('0xd')]=_0x101b7b[_0x898a('0xd')];this['countnoanswerretry']=_0x101b7b[_0x898a('0xe')];this['countglobal']=_0x101b7b[_0x898a('0xc')]+_0x101b7b['countcongestionretry']+_0x101b7b[_0x898a('0xe')]+_0x101b7b[_0x898a('0xf')]+_0x101b7b[_0x898a('0x10')]+_0x101b7b['countabandonedretry']+_0x101b7b['countmachineretry']+_0x101b7b['countagentrejectretry'];this[_0x898a('0xf')]=_0x101b7b[_0x898a('0xf')];this[_0x898a('0x10')]=_0x101b7b[_0x898a('0x10')];this[_0x898a('0x11')]=_0x101b7b[_0x898a('0x11')];this['countmachineretry']=_0x101b7b[_0x898a('0x12')];this['countagentrejectretry']=_0x101b7b[_0x898a('0x13')];this['queue']=_0x101b7b[_0x898a('0xb')];this['calleridname']=_0x101b7b[_0x898a('0x14')];this['calleridnum']=_0x101b7b[_0x898a('0x15')];this[_0x898a('0x16')]=_0x101b7b[_0x898a('0x16')];this['responsetime']=_0x101b7b[_0x898a('0x17')];this['endtime']=_0x101b7b['responsetime'];this[_0x898a('0x18')]=_0x101b7b[_0x898a('0x18')]||0x0;this['holdtime']=_0x101b7b['holdtime']||0x0;this[_0x898a('0x19')]=_0x101b7b[_0x898a('0x19')]||0x0;this[_0x898a('0x1a')]=_0x101b7b[_0x898a('0x1a')];this[_0x898a('0x1b')]=_0x101b7b[_0x898a('0x1b')];this[_0x898a('0x1c')]=_0x101b7b['callbackat'];this[_0x898a('0x1d')]=_0x101b7b[_0x898a('0x1d')];this[_0x898a('0x1e')]=_0x101b7b[_0x898a('0x1e')];this[_0x898a('0x1f')]=_0x101b7b[_0x898a('0x1f')];this['UserId']=_0x101b7b[_0x898a('0x20')];this[_0x898a('0x21')]=_0x101b7b[_0x898a('0x21')];this[_0x898a('0x22')]=_0x101b7b[_0x898a('0x22')];this[_0x898a('0x23')]=_0x101b7b['originatecalleridnum']||'';this[_0x898a('0x24')]=_0x101b7b['originatecalleridname']||'';}module['exports']=Final;
\ No newline at end of file
+var _0xa23f=['talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','milliseconds','diff','uniqueid','scheduledat','type','campaigntype','outbound','queue','countcongestionretry','countnoanswerretry','countglobal','countbusyretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','calleridnum','responsetime','ringtime','holdtime'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xa23f,0x7c));var _0xfa23=function(_0x40415b,_0x34f080){_0x40415b=_0x40415b-0x0;var _0x467153=_0xa23f[_0x40415b];return _0x467153;};'use strict';var util=require(_0xfa23('0x0'));var _=require(_0xfa23('0x1'));var moment=require('moment');function getSeconds(_0x48fd46,_0xb81edf){var _0x3f714c=moment(_0x48fd46)[_0xfa23('0x2')](0x0);var _0x3fe466=moment(_0xb81edf)['milliseconds'](0x0);return _0x3f714c[_0xfa23('0x3')](_0x3fe466,'seconds');}function Final(_0x210057){this[_0xfa23('0x4')]=_0x210057[_0xfa23('0x4')];this[_0xfa23('0x5')]=_0x210057['scheduledat'];this[_0xfa23('0x6')]=_0x210057['type'];this[_0xfa23('0x7')]=_0x210057[_0xfa23('0x6')]===_0xfa23('0x8')?_0xfa23('0x9'):_0x210057[_0xfa23('0x6')];this['countbusyretry']=_0x210057['countbusyretry'];this[_0xfa23('0xa')]=_0x210057['countcongestionretry'];this[_0xfa23('0xb')]=_0x210057['countnoanswerretry'];this[_0xfa23('0xc')]=_0x210057[_0xfa23('0xd')]+_0x210057[_0xfa23('0xa')]+_0x210057['countnoanswerretry']+_0x210057[_0xfa23('0xe')]+_0x210057[_0xfa23('0xf')]+_0x210057[_0xfa23('0x10')]+_0x210057['countmachineretry']+_0x210057['countagentrejectretry'];this[_0xfa23('0xe')]=_0x210057[_0xfa23('0xe')];this[_0xfa23('0xf')]=_0x210057[_0xfa23('0xf')];this['countabandonedretry']=_0x210057[_0xfa23('0x10')];this[_0xfa23('0x11')]=_0x210057[_0xfa23('0x11')];this[_0xfa23('0x12')]=_0x210057['countagentrejectretry'];this[_0xfa23('0x9')]=_0x210057[_0xfa23('0x9')];this[_0xfa23('0x13')]=_0x210057[_0xfa23('0x13')];this[_0xfa23('0x14')]=_0x210057['calleridnum'];this['starttime']=_0x210057['starttime'];this[_0xfa23('0x15')]=_0x210057[_0xfa23('0x15')];this['endtime']=_0x210057[_0xfa23('0x15')];this[_0xfa23('0x16')]=_0x210057[_0xfa23('0x16')]||0x0;this['holdtime']=_0x210057[_0xfa23('0x17')]||0x0;this[_0xfa23('0x18')]=_0x210057['talktime']||0x0;this[_0xfa23('0x19')]=_0x210057[_0xfa23('0x19')];this[_0xfa23('0x1a')]=_0x210057[_0xfa23('0x1a')];this[_0xfa23('0x1b')]=_0x210057[_0xfa23('0x1b')];this[_0xfa23('0x1c')]=_0x210057['recallme'];this[_0xfa23('0x1d')]=_0x210057[_0xfa23('0x1d')];this[_0xfa23('0x1e')]=_0x210057[_0xfa23('0x1e')];this['UserId']=_0x210057[_0xfa23('0x1f')];this['VoiceQueueId']=_0x210057[_0xfa23('0x20')];this[_0xfa23('0x21')]=_0x210057[_0xfa23('0x21')];this[_0xfa23('0x22')]=_0x210057[_0xfa23('0x22')]||'';this[_0xfa23('0x23')]=_0x210057[_0xfa23('0x23')]||'';}module[_0xfa23('0x24')]=Final;
\ No newline at end of file
index b9843d6..a2e532c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a97=['holdtime','talktime','endtime','queue','membername','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','util','lodash','moment','milliseconds','seconds','Answer','scheduledat','campaigntype','type','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x9a97,0x13c));var _0x79a9=function(_0x3ba764,_0x31d86d){_0x3ba764=_0x3ba764-0x0;var _0x3308df=_0x9a97[_0x3ba764];return _0x3308df;};'use strict';var util=require(_0x79a9('0x0'));var _=require(_0x79a9('0x1'));var moment=require(_0x79a9('0x2'));function getSeconds(_0x40e49a,_0x361ab9){var _0x1846b5=moment(_0x40e49a)[_0x79a9('0x3')](0x0);var _0x47414b=moment(_0x361ab9)[_0x79a9('0x3')](0x0);return _0x1846b5['diff'](_0x47414b,_0x79a9('0x4'));}function Hangup(_0x4d9051,_0x3ead5a){this['state']=0x4;this['statedesc']=_0x79a9('0x5');this['scheduledat']=_0x4d9051[_0x79a9('0x6')];this['type']=_0x4d9051['type'];this[_0x79a9('0x7')]=_0x4d9051[_0x79a9('0x8')]===_0x79a9('0x9')?'queue':_0x4d9051[_0x79a9('0x8')];this[_0x79a9('0xa')]=_0x4d9051[_0x79a9('0xa')];this[_0x79a9('0xb')]=_0x4d9051[_0x79a9('0xb')];this[_0x79a9('0xc')]=_0x4d9051[_0x79a9('0xc')];this['countglobal']=_0x4d9051[_0x79a9('0xa')]+_0x4d9051[_0x79a9('0xb')]+_0x4d9051[_0x79a9('0xc')]+_0x4d9051['countnosuchnumberretry']+_0x4d9051[_0x79a9('0xd')]+_0x4d9051[_0x79a9('0xe')]+_0x4d9051[_0x79a9('0xf')]+_0x4d9051[_0x79a9('0x10')];this['countnosuchnumberretry']=_0x4d9051[_0x79a9('0x11')];this[_0x79a9('0xd')]=_0x4d9051[_0x79a9('0xd')];this[_0x79a9('0xe')]=_0x4d9051[_0x79a9('0xe')];this[_0x79a9('0xf')]=_0x4d9051[_0x79a9('0xf')];this[_0x79a9('0x10')]=_0x4d9051[_0x79a9('0x10')];this[_0x79a9('0x12')]=_0x3ead5a['uniqueid'];this[_0x79a9('0x13')]=_0x4d9051[_0x79a9('0x14')];this[_0x79a9('0x15')]=_0x4d9051[_0x79a9('0x16')];this['starttime']=_0x4d9051[_0x79a9('0x17')];this[_0x79a9('0x18')]=_0x4d9051[_0x79a9('0x18')];this['endtime']=moment()[_0x79a9('0x19')](_0x79a9('0x1a'));this[_0x79a9('0x1b')]=getSeconds(_0x4d9051['responsetime'],_0x4d9051[_0x79a9('0x17')]);this[_0x79a9('0x1c')]=0x0;this[_0x79a9('0x1d')]=getSeconds(this[_0x79a9('0x1e')],_0x4d9051[_0x79a9('0x18')]);this[_0x79a9('0x1f')]=_0x4d9051[_0x79a9('0x1f')];this[_0x79a9('0x20')]='IVR';this['reason']=_0x3ead5a['cause-txt'];this[_0x79a9('0x21')]=_0x4d9051[_0x79a9('0x21')];this[_0x79a9('0x22')]=_0x4d9051[_0x79a9('0x22')];this['callbackat']=_0x4d9051[_0x79a9('0x23')];this['recallme']=_0x4d9051[_0x79a9('0x24')];this['ContactId']=_0x4d9051[_0x79a9('0x25')];this['ListId']=_0x4d9051[_0x79a9('0x26')];this[_0x79a9('0x27')]=_0x4d9051[_0x79a9('0x27')];this[_0x79a9('0x28')]=_0x4d9051[_0x79a9('0x28')];this[_0x79a9('0x29')]=_0x4d9051['CampaignId'];}module[_0x79a9('0x2a')]=Hangup;
\ No newline at end of file
+var _0x02fc=['scheduledat','type','campaigntype','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','name','number','responsetime','format','ringtime','starttime','holdtime','talktime','membername','IVR','reason','cause-txt','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','lodash','moment','state','statedesc','Answer'];(function(_0x2b385d,_0x32eb66){var _0xd76140=function(_0x5afb34){while(--_0x5afb34){_0x2b385d['push'](_0x2b385d['shift']());}};_0xd76140(++_0x32eb66);}(_0x02fc,0x151));var _0xc02f=function(_0x498493,_0x5e8114){_0x498493=_0x498493-0x0;var _0x160ac5=_0x02fc[_0x498493];return _0x160ac5;};'use strict';var util=require('util');var _=require(_0xc02f('0x0'));var moment=require(_0xc02f('0x1'));function getSeconds(_0x46710b,_0xe65d7d){var _0x2bf777=moment(_0x46710b)['milliseconds'](0x0);var _0x429c90=moment(_0xe65d7d)['milliseconds'](0x0);return _0x2bf777['diff'](_0x429c90,'seconds');}function Hangup(_0x585a5b,_0x38c5e2){this[_0xc02f('0x2')]=0x4;this[_0xc02f('0x3')]=_0xc02f('0x4');this[_0xc02f('0x5')]=_0x585a5b[_0xc02f('0x5')];this['type']=_0x585a5b[_0xc02f('0x6')];this[_0xc02f('0x7')]=_0x585a5b['type']==='outbound'?'queue':_0x585a5b[_0xc02f('0x6')];this[_0xc02f('0x8')]=_0x585a5b[_0xc02f('0x8')];this['countcongestionretry']=_0x585a5b[_0xc02f('0x9')];this[_0xc02f('0xa')]=_0x585a5b[_0xc02f('0xa')];this[_0xc02f('0xb')]=_0x585a5b[_0xc02f('0x8')]+_0x585a5b[_0xc02f('0x9')]+_0x585a5b[_0xc02f('0xa')]+_0x585a5b[_0xc02f('0xc')]+_0x585a5b[_0xc02f('0xd')]+_0x585a5b[_0xc02f('0xe')]+_0x585a5b[_0xc02f('0xf')]+_0x585a5b['countagentrejectretry'];this[_0xc02f('0xc')]=_0x585a5b[_0xc02f('0xc')];this['countdropretry']=_0x585a5b[_0xc02f('0xd')];this[_0xc02f('0xe')]=_0x585a5b['countabandonedretry'];this['countmachineretry']=_0x585a5b[_0xc02f('0xf')];this[_0xc02f('0x10')]=_0x585a5b['countagentrejectretry'];this['uniqueid']=_0x38c5e2['uniqueid'];this['calleridname']=_0x585a5b[_0xc02f('0x11')];this['calleridnum']=_0x585a5b[_0xc02f('0x12')];this['starttime']=_0x585a5b['starttime'];this[_0xc02f('0x13')]=_0x585a5b[_0xc02f('0x13')];this['endtime']=moment()[_0xc02f('0x14')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xc02f('0x15')]=getSeconds(_0x585a5b['responsetime'],_0x585a5b[_0xc02f('0x16')]);this[_0xc02f('0x17')]=0x0;this[_0xc02f('0x18')]=getSeconds(this['endtime'],_0x585a5b[_0xc02f('0x13')]);this['queue']=_0x585a5b['queue'];this[_0xc02f('0x19')]=_0xc02f('0x1a');this[_0xc02f('0x1b')]=_0x38c5e2[_0xc02f('0x1c')];this[_0xc02f('0x1d')]=_0x585a5b[_0xc02f('0x1d')];this[_0xc02f('0x1e')]=_0x585a5b[_0xc02f('0x1e')];this['callbackat']=_0x585a5b['callbackat'];this[_0xc02f('0x1f')]=_0x585a5b[_0xc02f('0x1f')];this[_0xc02f('0x20')]=_0x585a5b[_0xc02f('0x20')];this[_0xc02f('0x21')]=_0x585a5b[_0xc02f('0x21')];this[_0xc02f('0x22')]=_0x585a5b[_0xc02f('0x22')];this[_0xc02f('0x23')]=_0x585a5b['VoiceQueueId'];this[_0xc02f('0x24')]=_0x585a5b['CampaignId'];}module[_0xc02f('0x25')]=Hangup;
\ No newline at end of file
index 0d859c9..604cad9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf42d=['countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','queue','calleridname','calleridnum','starttime','responsetime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','countbusyretry','countcongestionretry'];(function(_0x5b7820,_0x36ab53){var _0x17db47=function(_0x4805d3){while(--_0x4805d3){_0x5b7820['push'](_0x5b7820['shift']());}};_0x17db47(++_0x36ab53);}(_0xf42d,0xec));var _0xdf42=function(_0x5370ad,_0x3bc8a2){_0x5370ad=_0x5370ad-0x0;var _0x38c59f=_0xf42d[_0x5370ad];return _0x38c59f;};'use strict';var util=require('util');var _=require('lodash');var moment=require('moment');function getSeconds(_0x3052bf,_0x4a198b){var _0x3a9b4e=moment(_0x3052bf)[_0xdf42('0x0')](0x0);var _0x10695f=moment(_0x4a198b)[_0xdf42('0x0')](0x0);return _0x3a9b4e[_0xdf42('0x1')](_0x10695f,_0xdf42('0x2'));}function History(_0x346018){this[_0xdf42('0x3')]=_0x346018[_0xdf42('0x3')];this[_0xdf42('0x4')]=_0x346018[_0xdf42('0x4')]||undefined;this[_0xdf42('0x5')]=_0x346018['type'];this[_0xdf42('0x6')]=_0x346018[_0xdf42('0x5')]==='outbound'?'queue':_0x346018[_0xdf42('0x5')];this[_0xdf42('0x7')]=_0x346018[_0xdf42('0x7')];this[_0xdf42('0x8')]=_0x346018[_0xdf42('0x8')];this[_0xdf42('0x9')]=_0x346018[_0xdf42('0x9')];this[_0xdf42('0xa')]=_0x346018[_0xdf42('0x7')]+_0x346018[_0xdf42('0x8')]+_0x346018[_0xdf42('0x9')]+_0x346018[_0xdf42('0xb')]+_0x346018[_0xdf42('0xc')]+_0x346018[_0xdf42('0xd')]+_0x346018[_0xdf42('0xe')]+_0x346018['countagentrejectretry'];this[_0xdf42('0xb')]=_0x346018[_0xdf42('0xb')];this[_0xdf42('0xc')]=_0x346018[_0xdf42('0xc')];this['countabandonedretry']=_0x346018[_0xdf42('0xd')];this[_0xdf42('0xe')]=_0x346018[_0xdf42('0xe')];this['countagentrejectretry']=_0x346018[_0xdf42('0xf')];this[_0xdf42('0x10')]=_0x346018[_0xdf42('0x10')];this[_0xdf42('0x11')]=_0x346018['name'];this[_0xdf42('0x12')]=_0x346018['number'];this['starttime']=_0x346018[_0xdf42('0x13')];this[_0xdf42('0x14')]=_0x346018['responsetime'];this['endtime']=_0x346018[_0xdf42('0x14')];this['ringtime']=getSeconds(_0x346018[_0xdf42('0x14')],_0x346018[_0xdf42('0x13')]);this[_0xdf42('0x15')]=0x0;this[_0xdf42('0x16')]=0x0;this[_0xdf42('0x17')]=_0x346018[_0xdf42('0x17')];this['callbackuniqueid']=_0x346018[_0xdf42('0x18')];this[_0xdf42('0x19')]=_0x346018[_0xdf42('0x19')];this['recallme']=_0x346018[_0xdf42('0x1a')];this[_0xdf42('0x1b')]=_0x346018[_0xdf42('0x1b')];this['ListId']=_0x346018[_0xdf42('0x1c')];this[_0xdf42('0x1d')]=_0x346018['UserId'];this[_0xdf42('0x1e')]=_0x346018[_0xdf42('0x1e')];this[_0xdf42('0x1f')]=_0x346018[_0xdf42('0x1f')];this[_0xdf42('0x20')]=_0x346018[_0xdf42('0x20')]||'';this['originatecalleridname']=_0x346018[_0xdf42('0x21')]||'';}module[_0xdf42('0x22')]=History;
\ No newline at end of file
+var _0xb345=['countagentrejectretry','calleridname','name','calleridnum','number','starttime','responsetime','endtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','milliseconds','diff','seconds','uniqueid','campaigntype','outbound','queue','type','countbusyretry','countnoanswerretry','countglobal','countcongestionretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countdropretry'];(function(_0x26ae05,_0x53e7ea){var _0x1e8338=function(_0x241a59){while(--_0x241a59){_0x26ae05['push'](_0x26ae05['shift']());}};_0x1e8338(++_0x53e7ea);}(_0xb345,0x1c2));var _0x5b34=function(_0x1e7b16,_0x4607a1){_0x1e7b16=_0x1e7b16-0x0;var _0x37fadc=_0xb345[_0x1e7b16];return _0x37fadc;};'use strict';var util=require(_0x5b34('0x0'));var _=require(_0x5b34('0x1'));var moment=require('moment');function getSeconds(_0x3b3b2b,_0x5ef7e9){var _0x33f3bc=moment(_0x3b3b2b)[_0x5b34('0x2')](0x0);var _0x1fe725=moment(_0x5ef7e9)['milliseconds'](0x0);return _0x33f3bc[_0x5b34('0x3')](_0x1fe725,_0x5b34('0x4'));}function History(_0x493798){this[_0x5b34('0x5')]=_0x493798['uniqueid'];this['scheduledat']=_0x493798['scheduledat']||undefined;this['type']=_0x493798['type'];this[_0x5b34('0x6')]=_0x493798['type']===_0x5b34('0x7')?_0x5b34('0x8'):_0x493798[_0x5b34('0x9')];this[_0x5b34('0xa')]=_0x493798[_0x5b34('0xa')];this['countcongestionretry']=_0x493798['countcongestionretry'];this[_0x5b34('0xb')]=_0x493798[_0x5b34('0xb')];this[_0x5b34('0xc')]=_0x493798[_0x5b34('0xa')]+_0x493798[_0x5b34('0xd')]+_0x493798[_0x5b34('0xb')]+_0x493798[_0x5b34('0xe')]+_0x493798['countdropretry']+_0x493798[_0x5b34('0xf')]+_0x493798[_0x5b34('0x10')]+_0x493798['countagentrejectretry'];this['countnosuchnumberretry']=_0x493798[_0x5b34('0xe')];this['countdropretry']=_0x493798[_0x5b34('0x11')];this['countabandonedretry']=_0x493798['countabandonedretry'];this['countmachineretry']=_0x493798[_0x5b34('0x10')];this['countagentrejectretry']=_0x493798[_0x5b34('0x12')];this[_0x5b34('0x8')]=_0x493798[_0x5b34('0x8')];this[_0x5b34('0x13')]=_0x493798[_0x5b34('0x14')];this[_0x5b34('0x15')]=_0x493798[_0x5b34('0x16')];this[_0x5b34('0x17')]=_0x493798['starttime'];this[_0x5b34('0x18')]=_0x493798[_0x5b34('0x18')];this[_0x5b34('0x19')]=_0x493798[_0x5b34('0x18')];this['ringtime']=getSeconds(_0x493798['responsetime'],_0x493798[_0x5b34('0x17')]);this[_0x5b34('0x1a')]=0x0;this[_0x5b34('0x1b')]=0x0;this[_0x5b34('0x1c')]=_0x493798[_0x5b34('0x1c')];this[_0x5b34('0x1d')]=_0x493798[_0x5b34('0x1d')];this[_0x5b34('0x1e')]=_0x493798['callbackat'];this[_0x5b34('0x1f')]=_0x493798[_0x5b34('0x1f')];this['ContactId']=_0x493798[_0x5b34('0x20')];this['ListId']=_0x493798[_0x5b34('0x21')];this['UserId']=_0x493798[_0x5b34('0x22')];this['VoiceQueueId']=_0x493798[_0x5b34('0x23')];this[_0x5b34('0x24')]=_0x493798['CampaignId'];this[_0x5b34('0x25')]=_0x493798[_0x5b34('0x25')]||'';this[_0x5b34('0x26')]=_0x493798['originatecalleridname']||'';}module['exports']=History;
\ No newline at end of file
index 3d1ae02..1edafce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4058=['value','MACHINE','countmachineretry','countglobal','amd','createHistory','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countagentrejectretry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','rescheduleContact','add','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','[rescheduleContact][Machine]','HangupInAMD','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','countdropretry','dialGlobalMaxRetry','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','dialQueueProject','AnswerAGI','[syncHangupIvr]','outboundUnknownCallsDay','cause-txt','syncAgentComplete','reason','agent','[syncAgentComplete][createHistory]','syncAgentConnect','answertime','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','dialQueueTimeout','outboundDropCallsDayTimeout','dropreason','TIMEOUT','dialQueueProject2','dialDropMaxRetry','dialDropRetryFrequency','[rescheduleContact][Drop]','Drop','endtime','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','syncQueueMember','actionid','paused','stateinterface','locked','idHopper','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','run','[unlock][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','contactAgent-idHopper:\x20','[booked][RR][finaly]','[booked][unlock]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','checkIsTrunkReachable','TrunkBackup','\x20trunk\x20is\x20not\x20reachable','checkIfTime','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','some','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','dialMethod','progressive','power','handlePower','dialPowerLevel','Queue','method\x20not\x20recognized','launchHandleIvr','handleIvr','loggedIn','dialGlobalInterval','dialTimezone','checkIfTimeIntervals','syncCampaigns','[syncCampaigns]','\x5cw{0,','pow','random','match','actionOriginate','object','originate','voiceQueue\x20is\x20undefine','Contact','phone','getCaller','\x22agi://%s/square,%s\x22','NONE','dialQueueOptions','dialAgiAfterHangupAgent','dialer','ACTIVE','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','%s%s','XMD-','toUpper','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','SIP/%s/%s%s','trim','substring','dialCutDigit','from-sip','[originate][error]','Error','originate\x20action\x20Error','getQueue','response','callProgressDetecting','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','[rescheduleContact]\x20[Busy]','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','outboundNoSuchCallsDay','custom:agentnosuchnumber','checkRetriveMax','reason\x200\x20no\x20such\x20number....','NoAnswer','noanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','Busy','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','congestion','[syncAgentComplete][createHistory][8]','dialCongestionMaxRetry','reason\x208\x20congestion','outboundAbandonedCallsDay','[syncAgentComplete][createHistory][11]','reason\x2011\x20abandoned','AgentReject','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','dialPredictiveOptimizationPercentage','round','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','floor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','started\x20in\x20predictive\x20at','dialPredictiveInterval','getDataPredictive','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','check\x20failure','getDataPredictiveOld','outboundQueuePauses','[CatchErlangB]','startMethodPredictive','one\x20call\x20every:','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','[booked][checkContactBlack]','queueStatusComplete:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','Queue:\x20','scheduledat','dialRecallMeTimeout','Agent','voicePause','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','[Originate][HistoryRecallClose][historyCatch]','Blacklist','[Originate][historyBlacklist]','inBlackList','limitCalls','dialOrderByScheduledAt','[getContactCampaign2][Empty]','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','Contact.phone','loggerHandler','[actionOriginateIvr]\x20','[getContactCampaign2]','not_inuse','dialLimitQueue','[handlePredictive][limitChannel]','tryOriginatePredictive','reachable','[getContactDialerPredictive]','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','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','[abandonmentRate]','m\x20=\x20','Ts\x20=\x20','p\x20=\x20','interval\x20=\x20','Amax\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','exports','util','lodash','bluebird','uuid','moment','md5','ioredis','../preview/util/util','../../../config/environment/','booked','../../../config/logger','predictive','predictiveCalls','syncQueueSummary','../ami','redis','socket.io-emitter','../rpc/cmHopperHistory','../rpc/cmHopperBlack','./agentComplete','rrmemory','roundrobin','enqueue','tail','finally','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','contactsId','uniqueId','optionPredictive','startPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','agentconnect','queuecallerabandon','syncQueueCallerAbandon','bind','syncOriginateResponse','agentcomplete','custom:queuesummary','hangup','syncHangup','newexten','syncNewExten','varset','syncVarSet','queuemember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','isUndefined','message','AGENTS_NOT_LOGGED','name','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','\x20NOT\x20Active','Interval','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','isEmpty','Intervals','stringify','milliseconds','diff','emit','outbound','strategy','answered','available','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','type','abandoned','loggedInDb','dialActive','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundNoAnswerCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','Trunk','active','callerid','voice:queue:%s','voice_queue:save','format','campaign:ivr:%s','campaign:save','info','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','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAvgTalktime','predictiveIntervalTotalCalls','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\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','---------------------------','seconds','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','ivr','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','error','inspect','stack','length','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','[getContactDialer2][ReScheduled]','contactsRescheduled','contacts','AVAILABLE_CONTACTS_FINISHED','[getContactDialer2][Empty]','waiting','sendMessageOneNotActive','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','state','statedesc','starttime','prototype','clearZombieChannels','[actions]','Action','status','channel','No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel]','[Dialer][checkChannel][ivr]','countReScheduled','resolve','then','catch','[countReScheduled]\x20','checkIsBlackList','[checkIsBlackList]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','[rescheduleContact]\x20','unlockContact','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','[createHistory]\x20','undefined','[updateOriginated]\x20is\x20null\x20or\x20undefined','emptyContact','notFound','merge','pick','ContactId','ListId','UserId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','[emptyContact]','isSuccess','Success','isTrunkReachable','SIP/%s','unmonitored','saveInDb','uniqueid','isNil','variable','xcally-motion-dialer','dialAMDActive','HANGUP','membername','AMD','custom:amd','buildObj','[syncHangupInAMD][createHistory]'];(function(_0x595a6a,_0xa4c270){var _0x29fdb3=function(_0x131950){while(--_0x131950){_0x595a6a['push'](_0x595a6a['shift']());}};_0x29fdb3(++_0xa4c270);}(_0x4058,0x129));var _0x8405=function(_0x5d50e4,_0x3810a4){_0x5d50e4=_0x5d50e4-0x0;var _0x56946b=_0x4058[_0x5d50e4];return _0x56946b;};'use strict';var util=require(_0x8405('0x0'));var _=require(_0x8405('0x1'));var BPromise=require(_0x8405('0x2'));var uuid=require(_0x8405('0x3'));var moment=require(_0x8405('0x4'));var rr=require('rr');var md5=require(_0x8405('0x5'));var Redis=require(_0x8405('0x6'));var ut=require(_0x8405('0x7'));var config=require(_0x8405('0x8'));var logger=require('../../../config/logger')('dialer');var loggerBooked=require('../../../config/logger')(_0x8405('0x9'));var loggerPredictive=require(_0x8405('0xa'))(_0x8405('0xb'));var loggerPredictiveCalls=require(_0x8405('0xa'))(_0x8405('0xc'));var loggerSyncQueueSummary=require('../../../config/logger')(_0x8405('0xd'));var ami=require(_0x8405('0xe'));config[_0x8405('0xf')]=_['defaults'](config[_0x8405('0xf')],{'host':'localhost','port':0x18eb});var io=require(_0x8405('0x10'))(new Redis(config[_0x8405('0xf')]));var cmHopper=require('../rpc/cmHopper');var cmHopperHistory=require(_0x8405('0x11'));var cmHopperBlack=require(_0x8405('0x12'));var voiceQueueRt=require('../rpc/voiceQueueRt');var Action=require('./action');var History=require('./history');var Final=require('./final');var AgentComplete=require(_0x8405('0x13'));var QueueCallerAbandon=require('./queueCallerAbandon');var Hangup=require('./hangup');var ipAgi=process['env']['XCALLY_IP_AGI']||'127.0.0.1';var strategy={'rrmemory':_0x8405('0x14'),'roundrobin':_0x8405('0x15')};var Sequence=function(){};Sequence['prototype'][_0x8405('0x16')]=function(_0xa60bb4){this[_0x8405('0x17')]=this[_0x8405('0x17')]?this['tail'][_0x8405('0x18')](_0xa60bb4):_0xa60bb4();};function Dialer(_0x2d7601,_0x8ef1fb){this[_0x8405('0x19')]=new Sequence();this[_0x8405('0x1a')]=_0x8ef1fb;this[_0x8405('0x1b')]=_0x2d7601[_0x8405('0x1b')];this[_0x8405('0x1c')]=_0x2d7601[_0x8405('0x1c')];this[_0x8405('0x1d')]=_0x2d7601[_0x8405('0x1d')];this[_0x8405('0x1e')]=_0x2d7601[_0x8405('0x1e')];this[_0x8405('0x1f')]=config[_0x8405('0x1f')]||0x2;this[_0x8405('0x20')]={};this[_0x8405('0x21')]={};this[_0x8405('0x22')]={};this[_0x8405('0x23')]={};this[_0x8405('0x24')]={};this[_0x8405('0x25')]={};this[_0x8405('0x26')]={};this[_0x8405('0x27')]={};this[_0x8405('0x28')]={};this[_0x8405('0x29')]={};ami['on'](_0x8405('0x2a'),this['syncAgentConnect']['bind'](this));ami['on'](_0x8405('0x2b'),this[_0x8405('0x2c')][_0x8405('0x2d')](this));ami['on']('originateresponse',this[_0x8405('0x2e')]['bind'](this));ami['on'](_0x8405('0x2f'),this['syncAgentComplete'][_0x8405('0x2d')](this));ami['on'](_0x8405('0x30'),this[_0x8405('0xd')][_0x8405('0x2d')](this));ami['on'](_0x8405('0x31'),this[_0x8405('0x32')][_0x8405('0x2d')](this));ami['on'](_0x8405('0x33'),this[_0x8405('0x34')][_0x8405('0x2d')](this));ami['on'](_0x8405('0x35'),this[_0x8405('0x36')]['bind'](this));ami['on'](_0x8405('0x37'),this['syncQueueMember']['bind'](this));ami['on'](_0x8405('0x38'),this[_0x8405('0x39')][_0x8405('0x2d')](this));this[_0x8405('0x3a')]();this[_0x8405('0x3b')]();}function isNotNull(_0x16fa59){return _0x16fa59!==null&&!_[_0x8405('0x3c')](_0x16fa59);}function checkIsLoggedIn(_0xa1efa2,_0x7e216b){return function(){if(_0x7e216b<=0x0){_0xa1efa2[_0x8405('0x3d')]=_0x8405('0x3e');throw _0xa1efa2[_0x8405('0x3f')]+_0x8405('0x40');}};}function isActive(_0x54ffcc){return _0x54ffcc;}function checkIsActive(_0x4015c0,_0x305fe8){return function(){if(!isActive(_0x305fe8)){_0x4015c0['message']=_0x8405('0x41');throw _0x4015c0[_0x8405('0x3f')]+_0x8405('0x42');}};}function checkInterval(_0x5c50f9){return function(){if(!isNotNull(_0x5c50f9[_0x8405('0x43')])){_0x5c50f9[_0x8405('0x3d')]=_0x8405('0x44');throw _0x5c50f9['name']+_0x8405('0x45');}if(!isNotNull(_0x5c50f9[_0x8405('0x43')]['Intervals'])){_0x5c50f9[_0x8405('0x3d')]='INTERVAL_IS_NULL';throw _0x5c50f9[_0x8405('0x3f')]+_0x8405('0x45');}if(!isNotNull(_[_0x8405('0x46')](_0x5c50f9[_0x8405('0x43')][_0x8405('0x47')]))){_0x5c50f9[_0x8405('0x3d')]=_0x8405('0x44');throw _0x5c50f9[_0x8405('0x3f')]+_0x8405('0x45');}};}function msgResponse(_0x298b3f,_0x2ddb8d,_0x3b774d){return{'action':_0x298b3f,'response':_0x2ddb8d,'message':_0x3b774d,'stack':_0x3b774d};}function myreject(_0x4cd2bf){return function(_0x23ef27){return _0x4cd2bf(msgResponse('[ifTime][Action]','Error',JSON[_0x8405('0x48')](_0x23ef27)));};}function getSeconds(_0x42587c,_0x5406e3){var _0x17ed2c=moment(_0x42587c)[_0x8405('0x49')](0x0);var _0x13ad1e=moment(_0x5406e3)[_0x8405('0x49')](0x0);return _0x17ed2c[_0x8405('0x4a')](_0x13ad1e,'seconds');}function emit(_0x40b6e0,_0x968b59,_0x177600){io['to'](_0x40b6e0)[_0x8405('0x4b')](_0x968b59,_0x177600);}function emitVoiceQueueSummary(_0x451faa){if(_0x451faa['type']===_0x8405('0x4c')){var _0x27a6ec={'id':_0x451faa['id'],'name':_0x451faa[_0x8405('0x3f')],'strategy':_0x451faa[_0x8405('0x4d')],'answered':_0x451faa[_0x8405('0x4e')],'available':_0x451faa[_0x8405('0x4f')],'loggedIn':_0x451faa['loggedIn'],'pTalking':_0x451faa[_0x8405('0x50')],'sumBillable':_0x451faa[_0x8405('0x51')],'sumDuration':_0x451faa[_0x8405('0x52')],'sumHoldTime':_0x451faa[_0x8405('0x53')]||0x0,'talking':_0x451faa[_0x8405('0x54')],'total':_0x451faa[_0x8405('0x55')],'type':_0x451faa[_0x8405('0x56')],'unmanaged':_0x451faa['unmanaged'],'abandoned':_0x451faa[_0x8405('0x57')],'waiting':_0x451faa['waiting'],'loggedInDb':_0x451faa[_0x8405('0x58')],'dialActive':_0x451faa[_0x8405('0x59')],'dialMethod':_0x451faa['dialMethod'],'dialOriginateCallerIdName':_0x451faa[_0x8405('0x5a')],'dialOriginateCallerIdNumber':_0x451faa[_0x8405('0x5b')],'dialOriginateTimeout':_0x451faa[_0x8405('0x5c')],'dialPrefix':_0x451faa[_0x8405('0x5d')],'outboundAnswerAgiCallsDay':_0x451faa[_0x8405('0x5e')],'outboundAnswerCallsDay':_0x451faa[_0x8405('0x5f')],'outboundBlacklistCallsDay':_0x451faa[_0x8405('0x60')],'outboundBusyCallsDay':_0x451faa[_0x8405('0x61')],'outboundCongestionCallsDay':_0x451faa[_0x8405('0x62')],'outboundDropCallsDayACS':_0x451faa[_0x8405('0x63')],'outboundDropCallsDayCallersExit':_0x451faa['outboundDropCallsDayCallersExit'],'outboundDropCallsDayTimeout':_0x451faa['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x451faa[_0x8405('0x64')],'outboundNoSuchCallsDay':_0x451faa['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x451faa[_0x8405('0x65')],'outboundReCallsDay':_0x451faa[_0x8405('0x66')],'outboundRejectCallsDay':_0x451faa[_0x8405('0x67')],'outboundUnknownCallsDay':_0x451faa['outboundUnknownCallsDay'],'predictiveIntervalAnsweredCalls':_0x451faa[_0x8405('0x68')],'predictiveIntervalAvgHoldtime':_0x451faa[_0x8405('0x69')],'predictiveIntervalAvgTalktime':_0x451faa['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x451faa[_0x8405('0x6a')],'predictiveIntervalDroppedCallsTimeout':_0x451faa[_0x8405('0x6b')],'predictiveIntervalErlangCalls':_0x451faa[_0x8405('0x6c')],'predictiveIntervalErlangCallsDroppedCalls':_0x451faa[_0x8405('0x6d')],'predictiveIntervalHitRate':_0x451faa[_0x8405('0x6e')],'predictiveIntervalMultiplicativeFactor':_0x451faa[_0x8405('0x6f')],'predictiveIntervalPauses':_0x451faa[_0x8405('0x70')],'predictiveIntervalAvailable':_0x451faa['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x451faa['predictiveIntervalTotalCalls'],'message':_0x451faa['message'],'originated':_0x451faa[_0x8405('0x71')],'erlangCalls':_0x451faa[_0x8405('0x72')],'erlangCallToSecond':_0x451faa[_0x8405('0x73')],'erlangAbandonmentRate':_0x451faa[_0x8405('0x74')],'erlangBusyFactor':_0x451faa['erlangBusyFactor'],'startPredictive':_0x451faa['startPredictive'],'startProgressive':_0x451faa[_0x8405('0x26')]};if(_0x451faa[_0x8405('0x75')]){_0x27a6ec[_0x8405('0x75')]={'id':_0x451faa[_0x8405('0x75')]['id'],'name':_0x451faa[_0x8405('0x75')][_0x8405('0x3f')],'active':_0x451faa[_0x8405('0x75')][_0x8405('0x76')],'callerid':_0x451faa['Trunk'][_0x8405('0x77')]};}if(_0x451faa['Interval']){_0x27a6ec[_0x8405('0x43')]={'id':_0x451faa[_0x8405('0x43')]['id'],'name':_0x451faa[_0x8405('0x43')][_0x8405('0x3f')]};}var _0x9a0ffe=md5(JSON[_0x8405('0x48')](_0x27a6ec));if(_0x451faa[_0x8405('0x5')]!==_0x9a0ffe){_0x451faa[_0x8405('0x5')]=_0x9a0ffe;emit(util['format'](_0x8405('0x78'),_0x27a6ec[_0x8405('0x3f')]),_0x8405('0x79'),_0x27a6ec);}}}function emitCampaignSummary(_0x3e4473){if(_0x3e4473['type']==='ivr'){emit(util[_0x8405('0x7a')](_0x8405('0x7b'),_0x3e4473[_0x8405('0x3f')]),_0x8405('0x7c'),_0x3e4473);}}function checkGetDataPredictive(_0x3ac9c7){if(isNotNull(_0x3ac9c7)&&!_[_0x8405('0x46')](_0x3ac9c7)){loggerPredictive[_0x8405('0x7d')]('-----\x20Stats\x20Predictive\x20---');loggerPredictive['info'](_0x8405('0x7e'),_0x3ac9c7['predictiveIntervalTotalCalls']);loggerPredictive[_0x8405('0x7d')](_0x8405('0x7f'),_0x3ac9c7[_0x8405('0x68')]);loggerPredictive['info']('Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3ac9c7[_0x8405('0x6b')]);loggerPredictive['info'](_0x8405('0x80'),_0x3ac9c7[_0x8405('0x6a')]);loggerPredictive[_0x8405('0x7d')](_0x8405('0x81'),_0x3ac9c7[_0x8405('0x69')]);loggerPredictive[_0x8405('0x7d')](_0x8405('0x82'),_0x3ac9c7[_0x8405('0x83')]);loggerPredictive[_0x8405('0x7d')]('---------------------------');if(_0x3ac9c7[_0x8405('0x84')]>0x0){if(!_[_0x8405('0x3c')](_0x3ac9c7[_0x8405('0x83')])&&_0x3ac9c7[_0x8405('0x83')]>0x0){return!![];}loggerPredictive['info'](_0x8405('0x85'));if(!_[_0x8405('0x3c')](_0x3ac9c7[_0x8405('0x69')])&&_0x3ac9c7[_0x8405('0x69')]>0x0){return!![];}loggerPredictive[_0x8405('0x7d')](_0x8405('0x86'));}else{loggerPredictive['info'](_0x8405('0x87'));}}else{loggerPredictive[_0x8405('0x7d')](_0x8405('0x88'));}return![];}function mergeDataErlangB(_0x550f08){return function(_0x43a0f4){loggerPredictive[_0x8405('0x7d')](_0x8405('0x89'));loggerPredictive[_0x8405('0x7d')](_0x8405('0x8a'),_0x43a0f4[_0x8405('0x72')]);loggerPredictive[_0x8405('0x7d')](_0x8405('0x8b'),_0x43a0f4[_0x8405('0x73')]);loggerPredictive[_0x8405('0x7d')]('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x43a0f4[_0x8405('0x74')]);loggerPredictive['info'](_0x8405('0x8c'),_0x43a0f4['erlangBusyFactor']);loggerPredictive[_0x8405('0x7d')](_0x8405('0x8d'),_0x43a0f4[_0x8405('0x74')]);loggerPredictive[_0x8405('0x7d')](_0x8405('0x8e'));_['merge'](_0x550f08,_0x43a0f4);};}function getDiff(_0x350e04){var _0x48f7a7=moment()['milliseconds'](0x0);var _0x450863=moment(_0x350e04)['milliseconds'](0x0);return _0x48f7a7[_0x8405('0x4a')](_0x450863,_0x8405('0x8f'));}function ifInterval(_0x2914f6,_0x56f466){if(_[_0x8405('0x3c')](_0x56f466)){return![];}return getDiff(_0x56f466)<_0x2914f6*0x3c;}function freeVariablesPredictive(_0x2dd310){if(isNotNull(_0x2dd310)){if(!_[_0x8405('0x3c')](_0x2dd310[_0x8405('0x26')])){_0x2dd310[_0x8405('0x26')]=undefined;loggerPredictive[_0x8405('0x7d')](_0x2dd310['name'],_0x8405('0x90'));}if(!_[_0x8405('0x3c')](_0x2dd310[_0x8405('0x25')])){_0x2dd310['startPredictive']=undefined;loggerPredictive['info'](_0x2dd310[_0x8405('0x3f')],_0x8405('0x91'));}if(!_[_0x8405('0x3c')](_0x2dd310[_0x8405('0x92')])){clearInterval(_0x2dd310[_0x8405('0x92')]);_0x2dd310['handlePredictive']=undefined;loggerPredictive['info'](_0x2dd310['name'],_0x8405('0x93'));}}}function erlangb(_0x14a39b,_0x2ef75f){if(_0x2ef75f===0x0){return 0x0;}var _0x3da720=0x1;for(var _0x3d4d55=0x1;_0x3d4d55<=_0x2ef75f;_0x3d4d55+=0x1){_0x3da720=0x1+_0x3da720*_0x3d4d55/_0x14a39b;}return 0x1/_0x3da720;}function isVoiceQueueOutbound(_0x23aea4){return _0x23aea4===_0x8405('0x4c');}function isNotPreview(_0x22ce58){return _0x22ce58!==_0x8405('0x1a');}function isCampaignIvr(_0x23d94e){return _0x23d94e===_0x8405('0x94');}function getCallerId(_0x2a4d26,_0x531061,_0x106169){if(!_[_0x8405('0x3c')](_0x106169)&&typeof _0x106169==='string'&&!_[_0x8405('0x46')](_0x106169)){if(!_[_0x8405('0x3c')](_0x531061)&&typeof _0x531061===_0x8405('0x95')&&!_[_0x8405('0x46')](_0x531061)){return util[_0x8405('0x7a')](_0x8405('0x96'),_0x531061,_0x106169);}return util[_0x8405('0x7a')](_0x8405('0x96'),_0x106169,_0x106169);}if(!_[_0x8405('0x3c')](_0x2a4d26)&&typeof _0x2a4d26==='string'&&!_[_0x8405('0x46')](_0x2a4d26)){return _0x2a4d26;}return _0x8405('0x97');}function loggerCatchQueueSummary(_0x17e983,_0x5b709a){return function(_0x1f19ec){freeVariablesPredictive(_0x5b709a);emitVoiceQueueSummary(_0x5b709a);emitCampaignSummary(_0x5b709a);loggerSyncQueueSummary[_0x8405('0x98')](_0x17e983,util[_0x8405('0x99')](_0x1f19ec,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x211e38,_0x27f1ef){return function(_0x4d9f1f){loggerPredictive[_0x8405('0x98')](_0x27f1ef[_0x8405('0x3f')],_0x211e38);loggerPredictive[_0x8405('0x98')](_0x4d9f1f[_0x8405('0x9a')]);freeVariablesPredictive(_0x27f1ef);};}function loggerCatch(_0x18c784){return function(_0xc554dc){logger[_0x8405('0x98')](_0x18c784,util[_0x8405('0x99')](_0xc554dc,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x2b6b43){return _0x2b6b43&&!_['isUndefined'](_0x2b6b43)&&_0x2b6b43[_0x8405('0x9b')]>0x0;}function decremetOriginate(_0x4a41ff){if(!_[_0x8405('0x3c')](_0x4a41ff)&&_0x4a41ff!==null){if(typeof _0x4a41ff[_0x8405('0x71')]!=='undefined'){if(_0x4a41ff['originated']>0x0){_0x4a41ff['originated']-=0x1;}else{logger['error'](_0x8405('0x9c'));}}}else{logger['error'](_0x8405('0x9d'));}}function checkContactLowerLimitOriginate(_0x210220,_0x34c983,_0x3d85d2){if(_0x34c983>_0x3d85d2){for(var _0x372ca9=0x0;_0x372ca9<_0x34c983-_0x3d85d2;_0x372ca9+=0x1){decremetOriginate(_0x210220);}}}function loggerGetContactDialer(_0x22d5ef,_0x3dafeb,_0x56cea5){return function(_0x22ec5c){checkContactLowerLimitOriginate(_0x3dafeb,_0x56cea5,0x0);logger[_0x8405('0x98')](_0x22d5ef,util['inspect'](_0x22ec5c,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x55f959){return function(_0x48b045){if(isNotNull(_0x48b045)&&isNotNull(_0x48b045[0x0])){if(_0x48b045[0x0]['contactsRescheduled']>0x0){_0x55f959['message']='RESCHEDULED_CONTACTS';logger[_0x8405('0x7d')](_0x8405('0x9e')+_0x55f959[_0x8405('0x3f')],_0x48b045[0x0][_0x8405('0x9f')],_0x8405('0xa0'));}else{_0x55f959['message']=_0x8405('0xa1');logger[_0x8405('0x7d')](_0x8405('0xa2')+_0x55f959[_0x8405('0x3f')]);}}};}function notSendMessagesQueue(_0x4c9044){if(_0x4c9044['sendMessageOneNotActive']){freeVariablesPredictive(_0x4c9044);if(_0x4c9044[_0x8405('0x71')]===0x0&&_0x4c9044[_0x8405('0x54')]===0x0&&_0x4c9044[_0x8405('0xa3')]===0x0&&(_0x4c9044[_0x8405('0x50')]||0x0)===0x0){_0x4c9044[_0x8405('0xa4')]=![];_0x4c9044[_0x8405('0x4f')]=0x0;_0x4c9044[_0x8405('0x3d')]=_0x8405('0x41');loggerSyncQueueSummary['error'](_0x8405('0xa5'),_0x4c9044[_0x8405('0x3f')],_0x8405('0xa6'));}else{_0x4c9044[_0x8405('0x3d')]=_0x8405('0xa7');loggerSyncQueueSummary[_0x8405('0x98')](_0x8405('0xa5'),_0x4c9044[_0x8405('0x3f')],_0x8405('0xa8'));}emitVoiceQueueSummary(_0x4c9044);}}function notSendMessagesCampaign(_0x2be89b){if(_0x2be89b[_0x8405('0xa4')]){if(_0x2be89b[_0x8405('0x71')]===0x0){_0x2be89b[_0x8405('0xa4')]=![];_0x2be89b[_0x8405('0x3d')]=_0x8405('0x41');loggerSyncQueueSummary[_0x8405('0x98')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x2be89b[_0x8405('0x3f')],_0x8405('0xa6'));}else{_0x2be89b[_0x8405('0x3d')]='IS_DISACTIVED';loggerSyncQueueSummary[_0x8405('0x98')](_0x8405('0xa9'),_0x2be89b[_0x8405('0x3f')],_0x8405('0xa8'));}emitCampaignSummary(_0x2be89b);}}function createObjHistory(_0x15be77,_0x30c799,_0x34359d,_0x2ba1fc,_0x352112){_0x15be77[_0x8405('0x3d')]=_0x34359d;var _0x5be58d=new Action(_0x15be77,_0x30c799);var _0x48ab26=new History(_0x5be58d);_0x48ab26[_0x8405('0xaa')]=_0x2ba1fc;_0x48ab26[_0x8405('0xab')]=_0x352112;_0x48ab26['endtime']=_0x5be58d[_0x8405('0xac')];return _0x48ab26;}Dialer[_0x8405('0xad')][_0x8405('0x3b')]=function(){var _0x4ae432=this;setInterval(function(){_0x4ae432['clearZombieChannels'](_0x4ae432['uniqueId'],'[uniqueid]');_0x4ae432[_0x8405('0xae')](_0x4ae432[_0x8405('0x21')],_0x8405('0xaf'));},0x32c8);};Dialer['prototype'][_0x8405('0xae')]=function(_0x35607a,_0x44be49){var _0x73c924=this;for(var _0x496893 in _0x35607a){if(typeof _0x35607a[_0x496893]!=='undefined'){this[_0x8405('0x19')][_0x8405('0x16')](function(){if(!_['isNil'](_0x35607a[_0x496893])){return ami[_0x8405('0xb0')]({'action':_0x8405('0xb1'),'channel':_0x35607a[_0x496893][_0x8405('0xb2')]})['catch'](function(_0x197225){if(_0x197225[_0x8405('0x3d')]===_0x8405('0xb3')){setTimeout(function(){if(_0x35607a[_0x496893]&&_0x35607a[_0x496893][_0x8405('0x56')]!==_0x8405('0x94')){_0x73c924[_0x8405('0xb4')](_0x73c924[_0x8405('0x1b')][_0x35607a[_0x496893][_0x8405('0xb5')]]);logger[_0x8405('0x98')](_0x8405('0xb6'),_0x44be49,_0x496893,_0x35607a[_0x496893]['queue']);delete _0x35607a[_0x496893];}if(_0x35607a[_0x496893]&&_0x35607a[_0x496893][_0x8405('0x56')]===_0x8405('0x94')){_0x73c924[_0x8405('0xb4')](_0x73c924['campaigns'][_0x35607a[_0x496893]['queue']]);logger['error'](_0x8405('0xb7'),_0x44be49,_0x496893,_0x35607a[_0x496893][_0x8405('0xb5')]);delete _0x35607a[_0x496893];}},0x2328);}});}});}}};Dialer[_0x8405('0xad')][_0x8405('0xb8')]=function(_0x4ba2f1){return BPromise[_0x8405('0xb9')]()[_0x8405('0xba')](cmHopper[_0x8405('0xb8')](_0x4ba2f1))[_0x8405('0xbb')](loggerCatch(_0x8405('0xbc')));};Dialer[_0x8405('0xad')][_0x8405('0xbd')]=function(_0x40da84){return BPromise[_0x8405('0xb9')]()[_0x8405('0xba')](cmHopperBlack['checkIsBlackList'](_0x40da84))['catch'](loggerCatch(_0x8405('0xbe')));};Dialer[_0x8405('0xad')][_0x8405('0xbf')]=function(_0x3d855d){return BPromise[_0x8405('0xb9')]()[_0x8405('0xba')](cmHopperBlack[_0x8405('0xbf')](_0x3d855d))[_0x8405('0xbb')](loggerCatch(_0x8405('0xc0')));};Dialer['prototype'][_0x8405('0xc1')]=function(_0x1c1d17){return BPromise[_0x8405('0xb9')]()['then'](cmHopperHistory[_0x8405('0xc2')](_0x1c1d17))[_0x8405('0xbb')](loggerCatch(_0x8405('0xc3')));};Dialer['prototype']['rescheduleContact']=function(_0x552529){return BPromise[_0x8405('0xb9')]()['then'](cmHopper['rescheduleContact'](_0x552529))[_0x8405('0xbb')](loggerCatch(_0x8405('0xc4')));};Dialer['prototype'][_0x8405('0xc5')]=function(_0xccce83,_0x43bab2,_0x273e11){return BPromise[_0x8405('0xb9')]()['then'](cmHopper['unlockContact'](_0xccce83,_0x43bab2,_0x273e11))[_0x8405('0xbb')](loggerCatch('[unlockContact]\x20'));};Dialer[_0x8405('0xad')][_0x8405('0xc6')]=function(_0x35bf91,_0xc699f6,_0x57bbb1,_0x39f036,_0x25cf48){return BPromise[_0x8405('0xb9')]()[_0x8405('0xba')](cmHopper[_0x8405('0xc6')](_0x35bf91,_0xc699f6,_0x57bbb1,_0x39f036))['catch'](function(_0x1bb188){_0x25cf48['temp']-=_0x57bbb1;_0x25cf48[_0x8405('0xc7')]=_0x25cf48['temp']>0x0?_0x25cf48[_0x8405('0xc7')]:0x0;loggerCatch(_0x8405('0xc8'))(_0x1bb188);});};Dialer[_0x8405('0xad')]['getContactDialerIvr']=function(_0x489405,_0x3f0564,_0x4682b9,_0x4aaaa8){return BPromise[_0x8405('0xb9')]()[_0x8405('0xba')](cmHopper[_0x8405('0xc9')](_0x489405,_0x3f0564,_0x4682b9))[_0x8405('0xbb')](function(_0x41d41b){_0x4aaaa8[_0x8405('0xc7')]-=_0x3f0564;_0x4aaaa8[_0x8405('0xc7')]=_0x4aaaa8[_0x8405('0xc7')]>0x0?_0x4aaaa8[_0x8405('0xc7')]:0x0;loggerCatch(_0x8405('0xca'))(_0x41d41b);});};Dialer[_0x8405('0xad')][_0x8405('0xcb')]=function(_0x1350bb){return BPromise[_0x8405('0xb9')]()['then'](voiceQueueRt[_0x8405('0xcb')](_0x1350bb))['catch'](loggerCatch(_0x8405('0xcc')));};Dialer['prototype'][_0x8405('0xcd')]=function(_0x2bacbd){return BPromise['resolve']()[_0x8405('0xba')](cmHopper[_0x8405('0xcd')](_0x2bacbd))[_0x8405('0xbb')](loggerCatch(_0x8405('0xce')));};Dialer[_0x8405('0xad')]['createHistory']=function(_0x7b91ee){return BPromise['resolve']()['then'](cmHopperHistory['createHistory'](_0x7b91ee))[_0x8405('0xbb')](loggerCatch(_0x8405('0xcf')));};Dialer[_0x8405('0xad')][_0x8405('0xb4')]=function(_0x272aea){if(!_[_0x8405('0x3c')](_0x272aea)&&_0x272aea!==null){if(typeof _0x272aea[_0x8405('0x71')]!==_0x8405('0xd0')){if(_0x272aea[_0x8405('0x71')]>0x0){_0x272aea['originated']-=0x1;}else{logger['error']('[updateOriginated]\x20object\x20originated\x20is\x20negative');}}}else{logger[_0x8405('0x98')](_0x8405('0xd1'));}};Dialer[_0x8405('0xad')]['loggerHandler']=function(_0x13e8af,_0x30574c){var _0x223ea4=this;return function(_0x176162){_0x223ea4[_0x8405('0xb4')](_0x30574c);logger[_0x8405('0x98')](_0x13e8af,util['inspect'](_0x176162,{'showHidden':![],'depth':null}));};};Dialer[_0x8405('0xad')][_0x8405('0xd2')]=function(_0x79bd13,_0x37fa30,_0x258070){var _0x1fc632={'state':0x19,'statedesc':_0x8405('0xd3')};this[_0x8405('0xb4')](_0x37fa30);this['saveInDb'](_[_0x8405('0xd4')](_0x1fc632,_[_0x8405('0xd5')](_0x258070,[_0x8405('0xd6'),_0x8405('0xd7'),_0x8405('0xd8'),_0x8405('0xd9'),_0x8405('0xda')])),_0x8405('0xdb'),_0x8405('0xdc'));logger[_0x8405('0x98')](_0x79bd13);};Dialer[_0x8405('0xad')][_0x8405('0xdd')]=function(_0x5051c8){return _0x5051c8===_0x8405('0xde');};Dialer[_0x8405('0xad')][_0x8405('0xdf')]=function(_0x4609f9){return!_[_0x8405('0x3c')](_0x4609f9)&&_0x4609f9&&!_['isUndefined'](_0x4609f9[_0x8405('0x3f')])&&!_[_0x8405('0x3c')](_0x4609f9[_0x8405('0x76')])&&_0x4609f9[_0x8405('0x76')]&&(this[_0x8405('0x1e')][util[_0x8405('0x7a')](_0x8405('0xe0'),_0x4609f9[_0x8405('0x3f')])][_0x8405('0xb1')]==='reachable'||this['trunks'][util[_0x8405('0x7a')]('SIP/%s',_0x4609f9[_0x8405('0x3f')])][_0x8405('0xb1')]===_0x8405('0xe1'));};Dialer[_0x8405('0xad')][_0x8405('0xe2')]=function(_0x5a46f7,_0xf8822f,_0x279ed8){this['createHistory'](_0x5a46f7)[_0x8405('0xbb')](loggerCatch(_0xf8822f));this[_0x8405('0xcd')](_0x5a46f7)['catch'](loggerCatch(_0x279ed8));};Dialer[_0x8405('0xad')][_0x8405('0x36')]=function(_0x125f92){var _0x18c80f=this[_0x8405('0x23')][_0x125f92[_0x8405('0xe3')]];var _0x557742;if(!_['isNil'](_0x125f92)&&!_[_0x8405('0xe4')](_0x125f92[_0x8405('0xe5')])&&!_['isNil'](_0x125f92[_0x8405('0xe5')]['amdstatus'])&&_0x125f92['exten']===_0x8405('0xe6')&&_0x18c80f){if(_0x18c80f[_0x8405('0x56')]!==_0x8405('0x94')&&this[_0x8405('0x1b')][_0x18c80f['queue']][_0x8405('0xe7')]&&_0x125f92['value']===_0x8405('0xe8')){delete this['uniqueId'][_0x125f92[_0x8405('0xe3')]];this[_0x8405('0xb4')](this[_0x8405('0x1b')][_0x18c80f[_0x8405('0xb5')]]);this['voiceQueues'][_0x18c80f[_0x8405('0xb5')]]['outboundAnswerCallsDay']+=0x1;this[_0x8405('0x1b')][_0x18c80f[_0x8405('0xb5')]][_0x8405('0x5e')]+=0x1;_0x557742=new Hangup(_0x18c80f,_0x125f92);_0x557742[_0x8405('0xaa')]=0x12;_0x557742[_0x8405('0xab')]='HangupInAMD';_0x557742[_0x8405('0xe9')]=_0x8405('0xea');ami[_0x8405('0x4b')](_0x8405('0xeb'),ut[_0x8405('0xec')](_0x557742,'amd'));this[_0x8405('0xe2')](_0x557742,_0x8405('0xed'),'[syncHangupInAMD]');}if(_0x18c80f['type']!=='ivr'&&this[_0x8405('0x1b')][_0x18c80f['queue']][_0x8405('0xe7')]&&_0x125f92[_0x8405('0xee')]===_0x8405('0xef')){var _0x41a28d=this;return new BPromise(function(_0x2685b4,_0x117053){delete _0x41a28d[_0x8405('0x23')][_0x125f92[_0x8405('0xe3')]];_0x41a28d[_0x8405('0xb4')](_0x41a28d[_0x8405('0x1b')][_0x18c80f[_0x8405('0xb5')]]);_0x41a28d[_0x8405('0x1b')][_0x18c80f[_0x8405('0xb5')]]['outboundAnswerCallsDay']+=0x1;_0x41a28d[_0x8405('0x1b')][_0x18c80f[_0x8405('0xb5')]][_0x8405('0x5e')]+=0x1;var _0x594664=_0x41a28d[_0x8405('0x1b')][_0x18c80f[_0x8405('0xb5')]];var _0x160bff=new Hangup(_0x18c80f,_0x125f92);_0x160bff[_0x8405('0xaa')]=0x13;_0x160bff[_0x8405('0xab')]='Machine';_0x160bff[_0x8405('0xe9')]=_0x8405('0xea');_0x160bff[_0x8405('0xf0')]+=0x1;_0x160bff[_0x8405('0xf1')]+=0x1;_0x160bff[_0x8405('0xf2')]=!![];ami[_0x8405('0x4b')](_0x8405('0xeb'),ut[_0x8405('0xec')](_0x160bff,_0x8405('0xf2')));_0x41a28d[_0x8405('0xf3')](_0x160bff)[_0x8405('0xbb')](loggerCatch(_0x8405('0xf4')));if(_0x160bff[_0x8405('0xf5')]+_0x160bff[_0x8405('0xf6')]+_0x160bff[_0x8405('0xf7')]+_0x160bff[_0x8405('0xf8')]+_0x160bff['countdropretry']+_0x160bff[_0x8405('0xf9')]+_0x160bff[_0x8405('0xf0')]+_0x160bff[_0x8405('0xfa')]>=_0x594664['dialGlobalMaxRetry']){_0x41a28d[_0x8405('0xfb')](_0x160bff,_0x2685b4,_0x117053,_0x8405('0xfc'));}else{if(_0x160bff[_0x8405('0xf0')]>=_0x594664[_0x8405('0xfd')]){_0x41a28d[_0x8405('0xfe')](_0x160bff,_0x2685b4,_0x117053,_0x8405('0xff'));}else{_0x41a28d[_0x8405('0x100')]({'active':![],'countmachineretry':_0x160bff[_0x8405('0xf0')],'scheduledat':moment()[_0x8405('0x101')](_0x594664[_0x8405('0x102')],_0x8405('0x103'))[_0x8405('0x7a')](_0x8405('0x104')),'ContactId':_0x160bff[_0x8405('0xd6')],'ListId':_0x160bff[_0x8405('0xd7')],'VoiceQueueId':_0x160bff[_0x8405('0xd9')]||undefined,'CampaignId':_0x160bff['CampaignId']||undefined})[_0x8405('0xbb')](loggerCatch(_0x8405('0x105')));_0x2685b4({'reschedule':0x1});}}});}if(_0x18c80f['type']==='ivr'&&this[_0x8405('0x1c')][_0x18c80f[_0x8405('0xb5')]]['dialAMDActive']&&_0x125f92[_0x8405('0xee')]===_0x8405('0xe8')){delete this['uniqueId'][_0x125f92['uniqueid']];this['updateOriginated'](this[_0x8405('0x1c')][_0x18c80f[_0x8405('0xb5')]]);_0x557742=new Hangup(_0x18c80f,_0x125f92);_0x557742['state']=0x12;_0x557742[_0x8405('0xab')]=_0x8405('0x106');_0x557742['membername']=_0x8405('0xea');ami[_0x8405('0x4b')](_0x8405('0xeb'),ut[_0x8405('0xec')](_0x557742,'amd'));this['saveInDb'](_0x557742,_0x8405('0x107'),_0x8405('0x108'));}if(_0x18c80f[_0x8405('0x56')]===_0x8405('0x94')&&this[_0x8405('0x1c')][_0x18c80f[_0x8405('0xb5')]][_0x8405('0xe7')]&&_0x125f92[_0x8405('0xee')]===_0x8405('0xef')){var _0x41a28d=this;return new BPromise(function(_0x13c306,_0x27c3f7){delete _0x41a28d[_0x8405('0x23')][_0x125f92[_0x8405('0xe3')]];_0x41a28d[_0x8405('0xb4')](_0x41a28d[_0x8405('0x1c')][_0x18c80f['queue']]);_0x41a28d['campaigns'][_0x18c80f[_0x8405('0xb5')]][_0x8405('0x5f')]+=0x1;_0x41a28d[_0x8405('0x1c')][_0x18c80f[_0x8405('0xb5')]][_0x8405('0x5e')]+=0x1;var _0x2d3ec7=_0x41a28d[_0x8405('0x1c')][_0x18c80f[_0x8405('0xb5')]];var _0x4ed367=new Hangup(_0x18c80f,_0x125f92);_0x4ed367[_0x8405('0xaa')]=0x13;_0x4ed367['statedesc']='Machine';_0x4ed367[_0x8405('0xe9')]=_0x8405('0xea');_0x4ed367[_0x8405('0xf0')]+=0x1;_0x4ed367[_0x8405('0xf1')]+=0x1;_0x4ed367[_0x8405('0xf2')]=!![];ami[_0x8405('0x4b')](_0x8405('0xeb'),ut[_0x8405('0xec')](_0x4ed367,'amd'));_0x41a28d[_0x8405('0xf3')](_0x4ed367)[_0x8405('0xbb')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x4ed367[_0x8405('0xf5')]+_0x4ed367[_0x8405('0xf6')]+_0x4ed367[_0x8405('0xf7')]+_0x4ed367['countnosuchnumberretry']+_0x4ed367[_0x8405('0x109')]+_0x4ed367['countabandonedretry']+_0x4ed367[_0x8405('0xf0')]+_0x4ed367[_0x8405('0xfa')]>=_0x2d3ec7[_0x8405('0x10a')]){_0x41a28d[_0x8405('0xfb')](_0x4ed367,_0x13c306,_0x27c3f7,'reason19\x20machine....');}else{if(_0x4ed367[_0x8405('0xf0')]>=_0x2d3ec7[_0x8405('0xfd')]){_0x41a28d[_0x8405('0xfe')](_0x4ed367,_0x13c306,_0x27c3f7,'reason\x2019\x20machine....');}else{_0x41a28d[_0x8405('0x100')]({'active':![],'countmachineretry':_0x4ed367['countmachineretry'],'scheduledat':moment()[_0x8405('0x101')](_0x2d3ec7[_0x8405('0x102')],_0x8405('0x103'))[_0x8405('0x7a')](_0x8405('0x104')),'ContactId':_0x4ed367[_0x8405('0xd6')],'ListId':_0x4ed367[_0x8405('0xd7')],'VoiceQueueId':_0x4ed367[_0x8405('0xd9')]||undefined,'CampaignId':_0x4ed367[_0x8405('0xda')]||undefined})[_0x8405('0xbb')](loggerCatch('[rescheduleContact][Machine]'));_0x13c306({'reschedule':0x1});}}});}}};Dialer['prototype'][_0x8405('0x32')]=function(_0x17e5e1){var _0x5b6ce4=this[_0x8405('0x23')][_0x17e5e1[_0x8405('0xe3')]];var _0x4e1e6b=this;var _0x4b533b;if(_0x5b6ce4&&_0x5b6ce4[_0x8405('0x56')]==='ivr'){delete this['uniqueId'][_0x17e5e1[_0x8405('0xe3')]];this[_0x8405('0xb4')](this[_0x8405('0x1c')][_0x5b6ce4[_0x8405('0xb5')]]);this[_0x8405('0x1c')][_0x5b6ce4[_0x8405('0xb5')]][_0x8405('0x10b')]+=0x1;_0x4b533b=new Hangup(_0x5b6ce4,_0x17e5e1);this[_0x8405('0xf3')](_0x4b533b)[_0x8405('0xbb')](loggerCatch(_0x8405('0x10c')));this[_0x8405('0xcd')](_0x4b533b)[_0x8405('0xbb')](loggerCatch('[syncHangupIvr]'));}if(_0x5b6ce4&&_0x5b6ce4[_0x8405('0x56')]!=='ivr'&&isNotNull(this[_0x8405('0x1b')][_0x5b6ce4['queue']][_0x8405('0x10d')])){delete this[_0x8405('0x23')][_0x17e5e1['uniqueid']];this['updateOriginated'](this[_0x8405('0x1b')][_0x5b6ce4[_0x8405('0xb5')]]);this[_0x8405('0x1b')][_0x5b6ce4['queue']][_0x8405('0x5f')]+=0x1;this[_0x8405('0x1b')][_0x5b6ce4[_0x8405('0xb5')]][_0x8405('0x5e')]+=0x1;_0x4b533b=new Hangup(_0x5b6ce4,_0x17e5e1);_0x4b533b['state']=0x10;_0x4b533b['statedesc']=_0x8405('0x10e');_0x4b533b['membername']='AGI';this[_0x8405('0xf3')](_0x4b533b)[_0x8405('0xbb')](loggerCatch(_0x8405('0x10c')));this[_0x8405('0xcd')](_0x4b533b)[_0x8405('0xbb')](loggerCatch(_0x8405('0x10f')));}if(_0x5b6ce4&&_0x5b6ce4[_0x8405('0x56')]!==_0x8405('0x94')&&!isNotNull(this[_0x8405('0x1b')][_0x5b6ce4[_0x8405('0xb5')]]['dialQueueProject'])){delete this[_0x8405('0x23')][_0x17e5e1['uniqueid']];this['updateOriginated'](this['voiceQueues'][_0x5b6ce4[_0x8405('0xb5')]]);this[_0x8405('0x1b')][_0x5b6ce4[_0x8405('0xb5')]][_0x8405('0x110')]+=0x1;_0x4b533b=new Hangup(_0x5b6ce4,_0x17e5e1);_0x4b533b[_0x8405('0xaa')]=0xc;_0x4b533b[_0x8405('0xab')]=_0x17e5e1[_0x8405('0x111')];_0x4b533b[_0x8405('0xe9')]='Unknow';this[_0x8405('0xf3')](_0x4b533b)[_0x8405('0xbb')](loggerCatch(_0x8405('0x10c')));this[_0x8405('0xcd')](_0x4b533b)[_0x8405('0xbb')](loggerCatch(_0x8405('0x10f')));}};Dialer['prototype'][_0x8405('0x112')]=function(_0x3ee3b6){var _0x57a469=this[_0x8405('0x23')][_0x3ee3b6[_0x8405('0xe3')]];var _0x4cc423=this;if(this['voiceQueues'][_0x3ee3b6[_0x8405('0xb5')]]){if(_0x57a469&&_0x57a469[_0x8405('0x56')]!==_0x8405('0x94')){delete this['uniqueId'][_0x3ee3b6[_0x8405('0xe3')]];this['voiceQueues'][_0x3ee3b6[_0x8405('0xb5')]][_0x8405('0x5f')]+=0x1;var _0x5acdf6=new AgentComplete(_0x57a469,_0x3ee3b6);if(_0x3ee3b6[_0x8405('0x113')]===_0x8405('0x114')){_0x5acdf6['agiafterat']=this[_0x8405('0x1b')][_0x3ee3b6['queue']]['dialQueueProject2']&&this[_0x8405('0x1b')][_0x3ee3b6['queue']]['dialAgiAfterHangupAgent']?moment()[_0x8405('0x7a')](_0x8405('0x104')):undefined;}this[_0x8405('0xf3')](_0x5acdf6)['catch'](loggerCatch(_0x8405('0x115')));this[_0x8405('0xcd')](_0x5acdf6)['catch'](loggerCatch('[syncAgentComplete]'));}}};Dialer[_0x8405('0xad')][_0x8405('0x116')]=function(_0x1dea1d){if(this[_0x8405('0x1b')][_0x1dea1d[_0x8405('0xb5')]]){if(this['uniqueId'][_0x1dea1d[_0x8405('0xe3')]]&&this[_0x8405('0x23')][_0x1dea1d[_0x8405('0xe3')]][_0x8405('0x56')]!==_0x8405('0x94')){this['updateOriginated'](this[_0x8405('0x1b')][_0x1dea1d[_0x8405('0xb5')]]);this['uniqueId'][_0x1dea1d['uniqueid']][_0x8405('0x117')]=moment()[_0x8405('0x7a')]('YYYY-MM-DD\x20HH:mm:ss');}}};Dialer[_0x8405('0xad')][_0x8405('0x118')]=function(_0x3847f2){this['createHistory'](_0x3847f2)[_0x8405('0xbb')](loggerCatch(_0x8405('0x115')));this[_0x8405('0xcd')](_0x3847f2)[_0x8405('0xbb')](loggerCatch(_0x8405('0x119')));};Dialer[_0x8405('0xad')][_0x8405('0x2c')]=function(_0x2d5dc7){var _0x3e4ed0=this[_0x8405('0x23')][_0x2d5dc7['uniqueid']];var _0x17a1de=this;if(this[_0x8405('0x1b')][_0x2d5dc7[_0x8405('0xb5')]]){if(_0x3e4ed0&&_0x3e4ed0['type']!==_0x8405('0x94')){delete this[_0x8405('0x23')][_0x2d5dc7[_0x8405('0xe3')]];this['updateOriginated'](this['voiceQueues'][_0x2d5dc7[_0x8405('0xb5')]]);_0x3e4ed0[_0x8405('0x11a')]=moment()['format'](_0x8405('0x104'));var _0x16c524=new QueueCallerAbandon(_0x3e4ed0,_0x2d5dc7);if(getSeconds(_0x3e4ed0[_0x8405('0x11a')],_0x3e4ed0[_0x8405('0x11b')])>=_0x3e4ed0[_0x8405('0x11c')]){this['voiceQueues'][_0x2d5dc7[_0x8405('0xb5')]][_0x8405('0x6b')]+=0x1;this[_0x8405('0x1b')][_0x2d5dc7[_0x8405('0xb5')]][_0x8405('0x11d')]+=0x1;this['voiceQueues'][_0x2d5dc7['queue']]['predictiveIntervalErlangCallsDroppedCalls']+=0x1;_0x16c524[_0x8405('0xaa')]=0xa;_0x16c524[_0x8405('0xab')]='Drop';_0x16c524[_0x8405('0x11e')]=_0x8405('0x11f');_0x16c524['agiafterat']=this[_0x8405('0x1b')][_0x2d5dc7[_0x8405('0xb5')]][_0x8405('0x120')]?moment()[_0x8405('0x7a')](_0x8405('0x104')):undefined;_0x16c524['countdropretry']+=0x1;_0x16c524['countglobal']+=0x1;if(_0x16c524[_0x8405('0x109')]>=this['voiceQueues'][_0x2d5dc7[_0x8405('0xb5')]][_0x8405('0x121')]){this[_0x8405('0x118')](_0x16c524);}else{this[_0x8405('0x100')]({'active':![],'countdropretry':_0x16c524[_0x8405('0x109')],'scheduledat':moment()[_0x8405('0x101')](this[_0x8405('0x1b')][_0x2d5dc7[_0x8405('0xb5')]][_0x8405('0x122')],'minutes')[_0x8405('0x7a')](_0x8405('0x104')),'ContactId':_0x3e4ed0['ContactId'],'ListId':_0x3e4ed0[_0x8405('0xd7')],'VoiceQueueId':_0x3e4ed0[_0x8405('0xd9')]||undefined,'CampaignId':_0x3e4ed0[_0x8405('0xda')]||undefined})[_0x8405('0xbb')](loggerCatch(_0x8405('0x123')));var _0x11bf15=new History(_0x16c524);_0x11bf15['state']=0xa;_0x11bf15[_0x8405('0xab')]=_0x8405('0x124');_0x11bf15[_0x8405('0xac')]=moment()['format'](_0x8405('0x104'));_0x11bf15[_0x8405('0x125')]=_0x11bf15[_0x8405('0xac')];_0x11bf15[_0x8405('0x126')]=_0x16c524[_0x8405('0x126')];_0x11bf15[_0x8405('0x127')]=_0x16c524[_0x8405('0x127')];this[_0x8405('0xf3')](_0x11bf15)[_0x8405('0xbb')](loggerCatch(_0x8405('0x128')));}}else{this[_0x8405('0x1b')][_0x2d5dc7[_0x8405('0xb5')]][_0x8405('0x6a')]+=0x1;this[_0x8405('0x1b')][_0x2d5dc7[_0x8405('0xb5')]]['outboundDropCallsDayCallersExit']+=0x1;_0x16c524[_0x8405('0xaa')]=0xb;_0x16c524[_0x8405('0xab')]=_0x8405('0x129');_0x16c524['dropreason']='CALLEREXIT';_0x16c524['countabandonedretry']+=0x1;_0x16c524[_0x8405('0xf1')]+=0x1;if(_0x16c524[_0x8405('0xf9')]>=this['voiceQueues'][_0x2d5dc7[_0x8405('0xb5')]][_0x8405('0x12a')]){this[_0x8405('0x118')](_0x16c524);}else{this[_0x8405('0x100')]({'active':![],'countabandonedretry':_0x16c524['countabandonedretry'],'scheduledat':moment()[_0x8405('0x101')](this[_0x8405('0x1b')][_0x2d5dc7[_0x8405('0xb5')]][_0x8405('0x12b')],_0x8405('0x103'))['format'](_0x8405('0x104')),'ContactId':_0x3e4ed0[_0x8405('0xd6')],'ListId':_0x3e4ed0[_0x8405('0xd7')],'VoiceQueueId':_0x3e4ed0[_0x8405('0xd9')]||undefined,'CampaignId':_0x3e4ed0[_0x8405('0xda')]||undefined})[_0x8405('0xbb')](loggerCatch(_0x8405('0x12c')));var _0x11bf15=new History(_0x16c524);_0x11bf15[_0x8405('0xaa')]=0xb;_0x11bf15[_0x8405('0xab')]=_0x8405('0x129');_0x11bf15[_0x8405('0xac')]=moment()[_0x8405('0x7a')](_0x8405('0x104'));_0x11bf15[_0x8405('0x125')]=_0x11bf15['starttime'];_0x11bf15[_0x8405('0x126')]=_0x16c524[_0x8405('0x126')];_0x11bf15[_0x8405('0x127')]=_0x16c524[_0x8405('0x127')];this[_0x8405('0xf3')](_0x11bf15)['catch'](loggerCatch('[syncAgentComplete][createHistory][11]'));}}}}};Dialer['prototype'][_0x8405('0x34')]=function(_0x4f0184){if(this['actions'][_0x4f0184['uniqueid']]){this[_0x8405('0x21')][_0x4f0184[_0x8405('0xe3')]]['channel']=_0x4f0184[_0x8405('0xb2')];}if(this[_0x8405('0x23')][_0x4f0184[_0x8405('0xe3')]]){this[_0x8405('0x23')][_0x4f0184['uniqueid']][_0x8405('0xb2')]=_0x4f0184[_0x8405('0xb2')];}};Dialer[_0x8405('0xad')][_0x8405('0x12d')]=function(_0x5cadbc){if(strategy[this[_0x8405('0x1b')][this[_0x8405('0x21')][_0x5cadbc[_0x8405('0x12e')]][_0x8405('0xb5')]]['strategy']]==='roundrobin'){if(this[_0x8405('0x21')][_0x5cadbc[_0x8405('0x12e')]]&&_[_0x8405('0xe4')](this[_0x8405('0x21')][_0x5cadbc[_0x8405('0x12e')]]['locked'])&&_0x5cadbc[_0x8405('0xb1')]==='1'&&_0x5cadbc[_0x8405('0x12f')]==='0'){if(this[_0x8405('0x1d')][_0x5cadbc[_0x8405('0x130')]]){if(!this[_0x8405('0x1d')][_0x5cadbc['stateinterface']]['locked']){this[_0x8405('0x1d')][_0x5cadbc[_0x8405('0x130')]][_0x8405('0x131')]=!![];this[_0x8405('0x21')][_0x5cadbc[_0x8405('0x12e')]][_0x8405('0x131')]=!![];this['actions'][_0x5cadbc[_0x8405('0x12e')]][_0x8405('0x130')]=_0x5cadbc[_0x8405('0x130')];}}}}else if((strategy[this[_0x8405('0x1b')][this[_0x8405('0x21')][_0x5cadbc[_0x8405('0x12e')]][_0x8405('0xb5')]][_0x8405('0x4d')]]||_0x8405('0x14'))===_0x8405('0x14')){if(this['actions'][_0x5cadbc['actionid']]){if(this[_0x8405('0x1d')][_0x5cadbc['stateinterface']]){this[_0x8405('0x21')][_0x5cadbc[_0x8405('0x12e')]][_0x8405('0x130')]=_0x5cadbc[_0x8405('0x130')];if(_[_0x8405('0xe4')](this[_0x8405('0x28')][this[_0x8405('0x21')][_0x5cadbc[_0x8405('0x12e')]][_0x8405('0xb5')]])){this[_0x8405('0x28')][this['actions'][_0x5cadbc[_0x8405('0x12e')]]['queue']]=[];}this[_0x8405('0x28')][this[_0x8405('0x21')][_0x5cadbc[_0x8405('0x12e')]]['queue']]['push'](_[_0x8405('0xd4')](_[_0x8405('0xd5')](this['actions'][_0x5cadbc[_0x8405('0x12e')]],[_0x8405('0x132'),_0x8405('0x130')]),{'status':_0x5cadbc[_0x8405('0xb1')],'paused':_0x5cadbc[_0x8405('0x12f')]}));}}}};function unlockQueueStatus(_0x28344b,_0x1d3ac7){setTimeout(function(){if(_[_0x8405('0x3c')](_0x28344b[_0x8405('0x133')])){loggerBooked['error'](_0x8405('0x134'),_0x1d3ac7);}_0x28344b[_0x8405('0x133')]=!![];loggerBooked['info'](_0x8405('0x135'),_0x1d3ac7,JSON[_0x8405('0x48')](_[_0x8405('0xd5')](_0x28344b,['name',_0x8405('0x133')])));},0x1f3);}Dialer[_0x8405('0xad')][_0x8405('0x39')]=function(_0x2d1d8e){var _0x559aac=this;var _0x4c2c74=_0x559aac[_0x8405('0x1b')][_0x559aac[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]];if(strategy[this['voiceQueues'][this['actions'][_0x2d1d8e['actionid']]['queue']]['strategy']]===_0x8405('0x15')){if(this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]]&&this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]]['stateinterface']){this['preview'][_0x8405('0x136')](this[_0x8405('0x21')][_0x2d1d8e['actionid']]['idHopper'],this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0x130')])[_0x8405('0xbb')](function(_0x50fadb){logger[_0x8405('0x98')]('[Catch][Preview][syncQueueStatusComplete]',util[_0x8405('0x99')](_0x50fadb,{'showHidden':![],'depth':null}));})[_0x8405('0x18')](function(){_0x559aac[_0x8405('0xb4')](_0x559aac[_0x8405('0x1b')][_0x559aac[_0x8405('0x21')][_0x2d1d8e['actionid']][_0x8405('0xb5')]]);_0x559aac[_0x8405('0x1d')][_0x559aac[_0x8405('0x21')][_0x2d1d8e['actionid']]['stateinterface']][_0x8405('0x131')]=![];delete _0x559aac[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]];unlockQueueStatus(_0x4c2c74);});}else{this[_0x8405('0xb4')](this[_0x8405('0x1b')][this[_0x8405('0x21')][_0x2d1d8e['actionid']][_0x8405('0xb5')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xd6')],'ListId':this[_0x8405('0x21')][_0x2d1d8e['actionid']]['ListId'],'VoiceQueueId':this['actions'][_0x2d1d8e['actionid']][_0x8405('0xd9')]||undefined,'CampaignId':this[_0x8405('0x21')][_0x2d1d8e['actionid']][_0x8405('0xda')]||undefined})['catch'](loggerCatch(_0x8405('0x137')));delete this[_0x8405('0x21')][_0x2d1d8e['actionid']];unlockQueueStatus(_0x4c2c74);}}else if((strategy[this[_0x8405('0x1b')][this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]]['queue']]['strategy']]||_0x8405('0x14'))===_0x8405('0x14')){var _0x4f3e2e;if(this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]]&&!_['isEmpty'](this['queueBooked'][this['actions'][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]])){if(this[_0x8405('0x29')][_0x559aac[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]]){this[_0x8405('0x29')][_0x559aac[_0x8405('0x21')][_0x2d1d8e['actionid']][_0x8405('0xb5')]]=this[_0x8405('0x29')][this[_0x8405('0x21')][_0x2d1d8e['actionid']]['queue']]?this[_0x8405('0x29')][this['actions'][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]]:this[_0x8405('0x28')][this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]]?this[_0x8405('0x28')][this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]][_0x8405('0x138')]||0x0:0x0;}this['queueBooked'][this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]]['_rr']=this[_0x8405('0x29')][this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]];for(var _0x23e3e3=0x0;_0x23e3e3<this[_0x8405('0x28')][this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]][_0x8405('0x9b')];_0x23e3e3+=0x1){_0x4f3e2e=rr(this[_0x8405('0x28')][this['actions'][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]]);this['queueBookedRR'][_0x559aac[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]]=this[_0x8405('0x28')][this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]][_0x8405('0x138')];if(_0x4f3e2e[_0x8405('0xb1')]==='1'&&_0x4f3e2e[_0x8405('0x12f')]==='0'){break;}}if(!_['isNil'](_0x4f3e2e)){this[_0x8405('0x1d')][_0x4f3e2e[_0x8405('0x130')]][_0x8405('0x139')]=_[_0x8405('0x3c')](this[_0x8405('0x1d')][_0x4f3e2e['stateinterface']][_0x8405('0x139')])?!![]:this[_0x8405('0x1d')][_0x4f3e2e['stateinterface']][_0x8405('0x139')];}loggerBooked[_0x8405('0x7d')](_0x8405('0x13a'),_0x2d1d8e['actionid'],'Agent:\x20',JSON[_0x8405('0x48')](_['pick'](this[_0x8405('0x1d')][_0x4f3e2e[_0x8405('0x130')]],[_0x8405('0x3f'),'unlockRR'])),_0x8405('0x13b'),JSON[_0x8405('0x48')](_0x4f3e2e[_0x8405('0x132')]));if(!_[_0x8405('0xe4')](_0x4f3e2e)&&_0x4f3e2e[_0x8405('0xb1')]==='1'&&_0x4f3e2e[_0x8405('0x12f')]==='0'&&this[_0x8405('0x1d')][_0x4f3e2e['stateinterface']]['unlockRR']){this[_0x8405('0x1d')][_0x4f3e2e[_0x8405('0x130')]][_0x8405('0x139')]=![];this[_0x8405('0x28')][_0x559aac[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]]=[];this[_0x8405('0x1a')]['run'](_0x4f3e2e[_0x8405('0x132')],_0x4f3e2e['stateinterface'])[_0x8405('0xbb')](function(_0x3690f8){logger['error']('[Catch][Preview][syncQueueStatusComplete]',util[_0x8405('0x99')](_0x3690f8,{'showHidden':![],'depth':null}));})[_0x8405('0x18')](function(){_0x559aac[_0x8405('0xb4')](_0x559aac['voiceQueues'][_0x559aac[_0x8405('0x21')][_0x2d1d8e['actionid']][_0x8405('0xb5')]]);setTimeout(function(){_0x559aac[_0x8405('0x1d')][_0x4f3e2e[_0x8405('0x130')]]['unlockRR']=!![];loggerBooked[_0x8405('0x7d')](_0x8405('0x13c'),_0x2d1d8e[_0x8405('0x12e')],'Agent:\x20',JSON[_0x8405('0x48')](_[_0x8405('0xd5')](_0x559aac[_0x8405('0x1d')][_0x4f3e2e[_0x8405('0x130')]],[_0x8405('0x3f'),'unlockRR'])),'contactAgent-idHopper:\x20',JSON[_0x8405('0x48')](_0x4f3e2e['idHopper']));},0xc7);delete _0x559aac[_0x8405('0x21')][_0x2d1d8e['actionid']];unlockQueueStatus(_0x4c2c74,_0x2d1d8e[_0x8405('0x12e')]);});}else{loggerBooked[_0x8405('0x7d')](_0x8405('0x13d'));this[_0x8405('0xb4')](this[_0x8405('0x1b')][this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]]);this[_0x8405('0x100')]({'active':![],'ContactId':this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xd6')],'ListId':this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]]['ListId'],'VoiceQueueId':this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xd9')]||undefined,'CampaignId':this[_0x8405('0x21')][_0x2d1d8e['actionid']][_0x8405('0xda')]||undefined})[_0x8405('0xbb')](loggerCatch(_0x8405('0x137')));delete this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]];unlockQueueStatus(_0x4c2c74);}}else{loggerBooked[_0x8405('0x7d')]('[booked][unlock2]');this[_0x8405('0xb4')](this[_0x8405('0x1b')][this['actions'][_0x2d1d8e['actionid']]['queue']]);this[_0x8405('0x100')]({'active':![],'ContactId':this['actions'][_0x2d1d8e['actionid']]['ContactId'],'ListId':this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xd7')],'VoiceQueueId':this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xd9')]||undefined,'CampaignId':this[_0x8405('0x21')][_0x2d1d8e['actionid']][_0x8405('0xda')]||undefined})[_0x8405('0xbb')](loggerCatch(_0x8405('0x13e')));delete this['actions'][_0x2d1d8e['actionid']];unlockQueueStatus(_0x4c2c74);}}else{loggerBooked[_0x8405('0x7d')](_0x8405('0x13f'));this[_0x8405('0xb4')](this[_0x8405('0x1b')][this['actions'][_0x2d1d8e[_0x8405('0x12e')]][_0x8405('0xb5')]]);this[_0x8405('0x100')]({'active':![],'ContactId':this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]]['ContactId'],'ListId':this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]]['ListId'],'VoiceQueueId':this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]]['CampaignId']||undefined})[_0x8405('0xbb')](loggerCatch('[unlock3][syncQueueStatusComplete]'));delete this[_0x8405('0x21')][_0x2d1d8e[_0x8405('0x12e')]];unlockQueueStatus(_0x4c2c74);}};Dialer[_0x8405('0xad')]['loopCampaigns']=function(){var _0xf94c1c=this;setInterval(function(){_0xf94c1c['syncCampaigns']();},0x3e8);};Dialer[_0x8405('0xad')][_0x8405('0x140')]=function(_0x294eb9){var _0x9f2398=this;return function(){if(!_0x9f2398[_0x8405('0xdf')](_0x294eb9[_0x8405('0x75')])){if(!_0x9f2398['isTrunkReachable'](_0x294eb9[_0x8405('0x141')])){_0x294eb9[_0x8405('0x3d')]='TRUNK_IS_NOT_REACHABLE';throw _0x294eb9[_0x8405('0x3f')]+_0x8405('0x142');}}};};Dialer[_0x8405('0xad')][_0x8405('0x143')]=function(_0x57648f,_0x430df6,_0x4e423b,_0x1e69fd){var _0x286a66=this;return function(){var _0x655b38=!![];return _0x286a66[_0x8405('0x144')](_0x57648f,_0x430df6,_0x4e423b,_0x1e69fd,_0x655b38);};};Dialer[_0x8405('0xad')]['checkIfTimeIntervals']=function(_0x2a5c4d,_0x3e47d8,_0xf6a5ee,_0x396207){var _0x205b2a=this;return function(){var _0xa78ac6=![];return _0x205b2a['ifTime'](_0x2a5c4d['Intervals'],_0x3e47d8,_0xf6a5ee,_0x396207,_0xa78ac6);};};Dialer[_0x8405('0xad')][_0x8405('0x144')]=function(_0x4f166a,_0x4b7b9f,_0x3c620a,_0x2b3b9b,_0x4a5a85){var _0x15b8d0=[];return new BPromise(function(_0x181c51,_0x74c10c){if(!isNotNull(_0x4f166a)){_0x2b3b9b[_0x8405('0x3d')]=_0x8405('0x44');return _0x74c10c(msgResponse(_0x8405('0x144'),_0x8405('0x145'),_0x3c620a+_0x8405('0x146')));}if(_[_0x8405('0x46')](_0x4f166a)){_0x2b3b9b['message']='INTERVAL_IS_EMPTY';return _0x74c10c(msgResponse(_0x8405('0x144'),_0x8405('0x145'),_0x3c620a+_0x8405('0x147')));}if(_0x4b7b9f&&_[_0x8405('0x3c')](config[_0x8405('0x148')][_0x4b7b9f])){_0x2b3b9b[_0x8405('0x3d')]=_0x8405('0x149');return _0x74c10c(msgResponse(_0x8405('0x144'),_0x8405('0x145'),_0x3c620a+_0x8405('0x14a')+_0x4b7b9f));}if(_[_0x8405('0x14b')](_0x4f166a)){for(var _0x4176ce=0x0;_0x4176ce<_0x4f166a['length'];_0x4176ce+=0x1){_0x15b8d0[_0x8405('0x14c')](ami[_0x8405('0xb0')]({'action':_0x8405('0x14d'),'command':util[_0x8405('0x7a')](_0x8405('0x14e'),_0x4f166a[_0x4176ce]['interval'],!_[_0x8405('0x3c')](config[_0x8405('0x148')][_0x4b7b9f])?_0x4b7b9f:'')})['then'](function(_0x407d12){return _0x407d12[_0x8405('0x14f')][_0x8405('0x150')](_0x8405('0x151'))>=0x0;})[_0x8405('0xbb')](myreject(_0x74c10c)));}}else{_0x15b8d0[_0x8405('0x14c')](ami[_0x8405('0xb0')]({'action':_0x8405('0x14d'),'command':util[_0x8405('0x7a')]('iftime\x20%s,%s',_0x4f166a,!_['isUndefined'](config[_0x8405('0x148')][_0x4b7b9f])?_0x4b7b9f:'')})[_0x8405('0xba')](function(_0x589c9e){return _0x589c9e['content'][_0x8405('0x150')](_0x8405('0x151'))>=0x0;})[_0x8405('0xbb')](myreject(_0x74c10c)));}BPromise[_0x8405('0x152')](_0x15b8d0)[_0x8405('0xba')](function(_0x297121){var _0x1bd42e=_[_0x8405('0x153')](_0x297121);if(_0x1bd42e){return _0x181c51(_0x1bd42e);}else{_0x2b3b9b[_0x8405('0x3d')]=_0x4a5a85?'GLOBAL_INTERVAL_IS_OVERTIME':_0x8405('0x154');return _0x74c10c(msgResponse(_0x8405('0x155'),_0x8405('0x145'),_0x8405('0x156')+_0x4a5a85+'\x20'+_0x3c620a+_0x8405('0x157')+util[_0x8405('0x99')](_0x4f166a,{'showHidden':![],'depth':null})+_0x8405('0x158')+_0x4b7b9f));}})[_0x8405('0xbb')](function(_0x318ec2){return _0x74c10c(msgResponse('ifTime','Failure',JSON[_0x8405('0x48')](_0x318ec2)));});});};Dialer[_0x8405('0xad')][_0x8405('0x159')]=function(_0x5beedc){var _0x536f3d=this;return function(){switch(_0x5beedc[_0x8405('0x15a')]){case _0x8405('0x15b'):freeVariablesPredictive(_0x5beedc);_0x536f3d['handlePower'](_0x5beedc,0x1);break;case _0x8405('0x15c'):freeVariablesPredictive(_0x5beedc);_0x536f3d[_0x8405('0x15d')](_0x5beedc,_0x5beedc[_0x8405('0x15e')]);break;case'predictive':_0x536f3d['predictive'](_0x5beedc);break;case'booked':freeVariablesPredictive(_0x5beedc);_0x536f3d[_0x8405('0x15d')](_0x5beedc,0x1);break;default:freeVariablesPredictive(_0x5beedc);logger[_0x8405('0x98')](_0x8405('0x15f'),_0x5beedc['name'],_0x8405('0x160'));}};};Dialer['prototype'][_0x8405('0x161')]=function(_0x4e915c){var _0x28109f=this;return function(){_0x28109f[_0x8405('0x162')](_0x4e915c);};};Dialer[_0x8405('0xad')]['syncQueueSummary']=function(_0x3ad088){var _0x478479=this;if(isNotPreview(_0x3ad088['dialMethod'])){if(isVoiceQueueOutbound(_0x3ad088[_0x8405('0x56')])&&isActive(_0x3ad088[_0x8405('0x59')])){_0x3ad088[_0x8405('0xa4')]=!![];BPromise['resolve']()[_0x8405('0xba')](checkIsLoggedIn(_0x3ad088,_0x3ad088[_0x8405('0x163')]))[_0x8405('0xba')](checkIsActive(_0x3ad088,_0x3ad088[_0x8405('0x59')]))[_0x8405('0xba')](checkInterval(_0x3ad088))[_0x8405('0xba')](_0x478479[_0x8405('0x140')](_0x3ad088))[_0x8405('0xba')](_0x478479[_0x8405('0x143')](_0x3ad088[_0x8405('0x164')],_0x3ad088[_0x8405('0x165')],_0x3ad088[_0x8405('0x3f')],_0x3ad088))['then'](_0x478479[_0x8405('0x166')](_0x3ad088['Interval'],_0x3ad088[_0x8405('0x165')],_0x3ad088[_0x8405('0x3f')],_0x3ad088))[_0x8405('0xba')](_0x478479[_0x8405('0x159')](_0x3ad088))['catch'](loggerCatchQueueSummary('[syncQueueSummary]',_0x3ad088));}else{notSendMessagesQueue(_0x3ad088);}}else{freeVariablesPredictive(_0x3ad088);}};Dialer[_0x8405('0xad')][_0x8405('0x167')]=function(){var _0x5a7896=this;var _0xc36f0f;for(var _0xa0bb32 in this[_0x8405('0x1c')]){if(typeof this['campaigns'][_0xa0bb32]!==_0x8405('0xd0')){_0xc36f0f=this[_0x8405('0x1c')][_0xa0bb32];if(isCampaignIvr(_0xc36f0f['type'])&&isActive(_0xc36f0f[_0x8405('0x76')])){_0xc36f0f[_0x8405('0xa4')]=!![];BPromise[_0x8405('0xb9')]()[_0x8405('0xba')](checkIsActive(_0xc36f0f,_0xc36f0f[_0x8405('0x76')]))['then'](checkInterval(_0xc36f0f))['then'](_0x5a7896[_0x8405('0x140')](_0xc36f0f))[_0x8405('0xba')](_0x5a7896[_0x8405('0x143')](_0xc36f0f['dialGlobalInterval'],_0xc36f0f[_0x8405('0x165')],_0xc36f0f[_0x8405('0x3f')],_0xc36f0f))[_0x8405('0xba')](_0x5a7896[_0x8405('0x166')](_0xc36f0f[_0x8405('0x43')],_0xc36f0f[_0x8405('0x165')],_0xc36f0f[_0x8405('0x3f')],_0xc36f0f))[_0x8405('0xba')](_0x5a7896[_0x8405('0x161')](_0xc36f0f))[_0x8405('0xbb')](loggerCatchQueueSummary(_0x8405('0x168'),_0xc36f0f));}else{notSendMessagesCampaign(_0xc36f0f);}}}};function getCallerIdRandom(_0x3f9c1c,_0x172d9a){var _0x5f1cbc;var _0x1172af;var _0x18501d;if(_0x172d9a<=0x0){_0x172d9a=0x1;}_0x5f1cbc=new RegExp(_0x8405('0x169')+_0x172d9a+'}$');_0x1172af=Math[_0x8405('0x16a')](0xa,_0x172d9a-0x1);_0x18501d=Math[_0x8405('0x16a')](0xa,_0x172d9a)-0x1;return util[_0x8405('0x7a')]('%s',_['replace'](_0x3f9c1c,_0x5f1cbc,_[_0x8405('0x16b')](_0x1172af,_0x18501d)));}function extractCalleridName(_0xcc1a74){var _0x2bc842=_0xcc1a74[_0x8405('0x16c')](/"(.*?)"/);return _0x2bc842?_0x2bc842[0x1]:_0xcc1a74;}function extractCalleridNumber(_0x1819e2){var _0x14efe2=_0x1819e2[_0x8405('0x16c')](/<(.*?)>/);return _0x14efe2?_0x14efe2[0x1]:_0x1819e2;}Dialer[_0x8405('0xad')][_0x8405('0x16d')]=function(_0x2c6961,_0x5d99ef){var _0x5f3643=this;var _0x4ef248=uuid['v4']();this[_0x8405('0x21')][_0x4ef248]=new Action(_0x2c6961,_0x5d99ef,_0x4ef248);return new BPromise(function(_0x5b29,_0x460b2a){if(_[_0x8405('0x3c')](_0x2c6961)&&typeof _0x2c6961!==_0x8405('0x16e')){return _0x460b2a(msgResponse(_0x8405('0x16f'),_0x8405('0x145'),_0x8405('0x170')));}if(_[_0x8405('0x3c')](_0x5d99ef[_0x8405('0x171')][_0x8405('0x172')])||_0x5d99ef[_0x8405('0x171')]['phone']===null){return _0x460b2a(msgResponse(_0x8405('0x16f'),'Failure','contact\x20is\x20undefine'));}var _0x39a33f={'XMD-CALLERID':_0x5f3643[_0x8405('0x21')][_0x4ef248][_0x8405('0x173')](),'XMD-AGI':_0x2c6961[_0x8405('0x10d')]?util[_0x8405('0x7a')](_0x8405('0x174'),ipAgi,_0x2c6961[_0x8405('0x10d')]):_0x8405('0x175'),'XMD-AGIAFTER':_0x2c6961['dialQueueProject2']?util[_0x8405('0x7a')](_0x8405('0x174'),ipAgi,_0x2c6961['dialQueueProject2']):_0x8405('0x175'),'XMD-QUEUE':_0x2c6961[_0x8405('0x56')]==='outbound'?util[_0x8405('0x7a')]('\x22%s,%s%s,,,%s\x22',_0x2c6961[_0x8405('0x3f')],_0x2c6961[_0x8405('0x176')]||'',_0x2c6961[_0x8405('0x177')]?'c':'',_0x2c6961['dialQueueTimeout']||0x3):_0x8405('0x175'),'XMD-CONTACTID':_0x5d99ef['ContactId'],'XMD-CDRTYPE':_0x8405('0x178'),'CALLERID(all)':_0x5f3643['actions'][_0x4ef248]['getCaller'](),'XMD-AMD':_0x2c6961[_0x8405('0xe7')]?_0x8405('0x179'):'NONE','XMD-DESTINATION':_0x8405('0xe6')};if(_0x2c6961[_0x8405('0xe7')]){_0x39a33f[_0x8405('0x17a')]=_0x2c6961[_0x8405('0x17b')]||0x9c4;_0x39a33f[_0x8405('0x17c')]=_0x2c6961[_0x8405('0x17d')]||0x5dc;_0x39a33f[_0x8405('0x17e')]=_0x2c6961['dialAMDAfterGreetingSilence']||0x320;_0x39a33f[_0x8405('0x17f')]=_0x2c6961[_0x8405('0x180')]||0x1388;_0x39a33f[_0x8405('0x181')]=_0x2c6961[_0x8405('0x182')]||0x64;_0x39a33f[_0x8405('0x183')]=_0x2c6961[_0x8405('0x184')]||0x32;_0x39a33f[_0x8405('0x185')]=_0x2c6961[_0x8405('0x186')]||0x3;_0x39a33f[_0x8405('0x187')]=_0x2c6961[_0x8405('0x188')]||0x100;_0x39a33f['XMD-AMDMAXIMUMWORDLENGTH']=_0x2c6961['dialAMDMaximumWordLength']||0x1388;}if(_0x2c6961[_0x8405('0x56')]===_0x8405('0x4c')){_0x39a33f['XMD-VOICEQUEUEID']=_0x5d99ef[_0x8405('0xd9')];}else{_0x39a33f['XMD-CAMPAIGNID']=_0x5d99ef[_0x8405('0xda')];}for(var _0x4ff3e1 in _0x5d99ef[_0x8405('0x171')]){if(typeof _0x5d99ef['Contact'][_0x4ff3e1]!==_0x8405('0xd0')){if(isNotNull(_0x5d99ef['Contact'][_0x4ff3e1])&&_0x4ff3e1!=='id'&&_0x4ff3e1!=='tags'&&_0x4ff3e1!=='createdAt'&&_0x4ff3e1!=='updatedAt'){_0x39a33f[util[_0x8405('0x7a')](_0x8405('0x189'),_0x8405('0x18a'),_[_0x8405('0x18b')](_0x4ff3e1))]=_0x5d99ef[_0x8405('0x171')][_0x4ff3e1];}}}var _0x2c3426=_0x5f3643[_0x8405('0xdf')](_0x2c6961[_0x8405('0x75')])?getCallerId(_0x2c6961[_0x8405('0x75')][_0x8405('0x77')],_0x2c6961[_0x8405('0x5a')],_0x2c6961[_0x8405('0x18c')]>0x0?getCallerIdRandom(_0x2c6961[_0x8405('0x5b')],_0x2c6961[_0x8405('0x18c')]):_0x2c6961['dialOriginateCallerIdNumber']):getCallerId(_[_0x8405('0xe4')](_0x2c6961[_0x8405('0x141')])?_0x2c6961[_0x8405('0x75')][_0x8405('0x77')]:_0x2c6961[_0x8405('0x141')][_0x8405('0x77')],_0x2c6961[_0x8405('0x5a')],_0x2c6961['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x2c6961[_0x8405('0x5b')],_0x2c6961[_0x8405('0x18c')]):_0x2c6961[_0x8405('0x5b')]);if(_0x2c3426){_0x39a33f[_0x8405('0x18d')]=_0x5f3643[_0x8405('0x21')][_0x4ef248][_0x8405('0x18e')]=extractCalleridName(_0x2c3426);_0x39a33f[_0x8405('0x18f')]=_0x5f3643[_0x8405('0x21')][_0x4ef248]['originatecalleridnum']=extractCalleridNumber(_0x2c3426);}return ami[_0x8405('0xb0')]({'actionid':_0x4ef248,'action':_0x8405('0x16f'),'channel':_0x5f3643[_0x8405('0xdf')](_0x2c6961['Trunk'])?util[_0x8405('0x7a')](_0x8405('0x190'),_0x2c6961['Trunk']['name'],isNotNull(_0x2c6961[_0x8405('0x5d')])?_0x2c6961['dialPrefix'][_0x8405('0x191')]()||'':'',_0x2c6961['dialCutDigit']>0x0?_0x5d99ef[_0x8405('0x171')]['phone'][_0x8405('0x192')](_0x2c6961[_0x8405('0x193')]):_0x5d99ef[_0x8405('0x171')][_0x8405('0x172')]):util['format'](_0x8405('0x190'),_[_0x8405('0xe4')](_0x2c6961['TrunkBackup'])?_0x2c6961['Trunk'][_0x8405('0x3f')]:_0x2c6961['TrunkBackup'][_0x8405('0x3f')],isNotNull(_0x2c6961[_0x8405('0x5d')])?_0x2c6961['dialPrefix'][_0x8405('0x191')]()||'':'',_0x2c6961[_0x8405('0x193')]>0x0?_0x5d99ef[_0x8405('0x171')]['phone'][_0x8405('0x192')](_0x2c6961[_0x8405('0x193')]):_0x5d99ef[_0x8405('0x171')][_0x8405('0x172')]),'callerid':_0x2c3426,'Exten':_0x8405('0xe6'),'Context':_0x8405('0x194'),'Priority':'1','variable':_0x39a33f,'timeout':(_0x2c6961[_0x8405('0x5c')]||0x1e)*0x3e8,'async':!![],'channelid':_0x4ef248})[_0x8405('0xba')](function(_0x19212e){return _0x5b29(_0x19212e);})[_0x8405('0xbb')](function(_0x130e24){_0x2c6961['outboundOriginateFailureCallsDay']+=0x1;var _0x4b2165=new History(_0x5f3643['actions'][_0x4ef248]);logger[_0x8405('0x98')](util[_0x8405('0x7a')]('[originateError]:\x20%s',JSON[_0x8405('0x48')](_0x130e24)));_0x4b2165[_0x8405('0xaa')]=0xe;_0x4b2165[_0x8405('0xab')]='OriginateError';_0x4b2165[_0x8405('0xac')]=moment()[_0x8405('0x7a')](_0x8405('0x104'));_0x4b2165['endtime']=_0x4b2165[_0x8405('0xac')];_0x5f3643['createHistory'](_0x4b2165)['catch'](loggerCatch('[originate][error]'));_0x5f3643['moveContactManagedDialer'](_0x4b2165)[_0x8405('0xbb')](loggerCatch(_0x8405('0x195')))[_0x8405('0x18')](function(){delete _0x5f3643['actions'][_0x4ef248];return _0x460b2a(msgResponse(_0x8405('0x16f'),_0x8405('0x196'),_0x8405('0x197')));});});});};Dialer[_0x8405('0xad')]['syncOriginateResponse']=function(_0xc1b123){var _0x31b3f7=this[_0x8405('0x21')][_0xc1b123['actionid']];if(_0x31b3f7){delete this[_0x8405('0x21')][_0xc1b123[_0x8405('0x12e')]];_0x31b3f7['responsetime']=moment()[_0x8405('0x7a')](_0x8405('0x104'));var _0x3fe4d1=_0x31b3f7[_0x8405('0x56')]==='ivr'?this[_0x8405('0x1c')][_0x31b3f7[_0x8405('0xb5')]]:this[_0x8405('0x1b')][_0x31b3f7[_0x8405('0x198')]()];if(!this[_0x8405('0xdd')](_0xc1b123[_0x8405('0x199')])){this[_0x8405('0xb4')](_0x3fe4d1);return this[_0x8405('0x19a')](_0x31b3f7,_0x3fe4d1,_0xc1b123)[_0x8405('0xbb')](loggerCatch('[callProgressDetecting]\x20'));}this[_0x8405('0x23')][_0xc1b123[_0x8405('0xe3')]]=_0x31b3f7;}};Dialer[_0x8405('0xad')]['checkRetriveMax']=function(_0x4b69fe,_0x5ee977,_0x15d896){var _0x52628b=new History(_0x5ee977);if(_0x52628b[_0x8405('0xf5')]+_0x52628b[_0x8405('0xf6')]+_0x52628b['countnoanswerretry']+_0x52628b[_0x8405('0xf8')]+_0x52628b[_0x8405('0x109')]+_0x52628b[_0x8405('0xf9')]+_0x52628b[_0x8405('0xf0')]+_0x52628b['countagentrejectretry']>=_0x15d896[_0x8405('0x10a')]-0x1){return!![];}switch(_0x4b69fe){case 0x3:if(_0x52628b['countnoanswerretry']>=_0x15d896['dialNoAnswerMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countnoanswerretry':_0x52628b[_0x8405('0xf7')]+=0x1,'scheduledat':moment()[_0x8405('0x101')](_0x15d896[_0x8405('0x19b')],_0x8405('0x103'))['format'](_0x8405('0x104')),'ContactId':_0x52628b[_0x8405('0xd6')],'ListId':_0x52628b[_0x8405('0xd7')],'VoiceQueueId':_0x52628b[_0x8405('0xd9')]||undefined,'CampaignId':_0x52628b[_0x8405('0xda')]||undefined})[_0x8405('0xbb')](loggerCatch(_0x8405('0x19c')));break;case 0x5:if(_0x52628b['countbusyretry']>=_0x15d896[_0x8405('0x19d')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countbusyretry':_0x52628b['countbusyretry']+=0x1,'scheduledat':moment()['add'](_0x15d896['dialBusyRetryFrequency'],_0x8405('0x103'))[_0x8405('0x7a')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x52628b[_0x8405('0xd6')],'ListId':_0x52628b['ListId'],'VoiceQueueId':_0x52628b[_0x8405('0xd9')]||undefined,'CampaignId':_0x52628b[_0x8405('0xda')]||undefined})['catch'](loggerCatch(_0x8405('0x19e')));break;case 0x8:if(_0x52628b[_0x8405('0xf6')]>=_0x15d896['dialCongestionMaxRetry']-0x1){return!![];}this[_0x8405('0x100')]({'active':![],'countcongestionretry':_0x52628b['countcongestionretry']+=0x1,'scheduledat':moment()[_0x8405('0x101')](_0x15d896['dialCongestionRetryFrequency'],_0x8405('0x103'))[_0x8405('0x7a')](_0x8405('0x104')),'ContactId':_0x52628b[_0x8405('0xd6')],'ListId':_0x52628b[_0x8405('0xd7')],'VoiceQueueId':_0x52628b[_0x8405('0xd9')]||undefined,'CampaignId':_0x52628b[_0x8405('0xda')]||undefined})['catch'](loggerCatch(_0x8405('0x19f')));break;case 0x0:if(_0x52628b[_0x8405('0xf8')]>=_0x15d896[_0x8405('0x1a0')]-0x1){return!![];}else{this['rescheduleContact']({'active':![],'countnosuchnumberretry':_0x52628b['countnosuchnumberretry']+=0x1,'scheduledat':moment()[_0x8405('0x101')](_0x15d896[_0x8405('0x1a1')],_0x8405('0x103'))[_0x8405('0x7a')](_0x8405('0x104')),'ContactId':_0x52628b['ContactId'],'ListId':_0x52628b[_0x8405('0xd7')],'VoiceQueueId':_0x52628b['VoiceQueueId']||undefined,'CampaignId':_0x52628b['CampaignId']||undefined})[_0x8405('0xbb')](loggerCatch('[rescheduleContact][NoSuchNumber]'));}break;case 0xa:if(_0x52628b[_0x8405('0x109')]>=_0x15d896['dialDropMaxRetry']-0x1){return!![];}this[_0x8405('0x100')]({'active':![],'countdropretry':_0x52628b['countdropretry']+=0x1,'scheduledat':moment()[_0x8405('0x101')](_0x15d896[_0x8405('0x122')],_0x8405('0x103'))['format'](_0x8405('0x104')),'ContactId':_0x52628b[_0x8405('0xd6')],'ListId':_0x52628b['ListId'],'VoiceQueueId':_0x52628b['VoiceQueueId']||undefined,'CampaignId':_0x52628b[_0x8405('0xda')]||undefined})[_0x8405('0xbb')](loggerCatch('[rescheduleContact][Drop]'));break;case 0xb:if(_0x52628b[_0x8405('0xf9')]>=_0x15d896[_0x8405('0x12a')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countabandonedretry':_0x52628b[_0x8405('0xf9')]+=0x1,'scheduledat':moment()['add'](_0x15d896[_0x8405('0x12b')],'minutes')[_0x8405('0x7a')](_0x8405('0x104')),'ContactId':_0x52628b[_0x8405('0xd6')],'ListId':_0x52628b[_0x8405('0xd7')],'VoiceQueueId':_0x52628b[_0x8405('0xd9')]||undefined,'CampaignId':_0x52628b['CampaignId']||undefined})[_0x8405('0xbb')](loggerCatch('[rescheduleContact][Abandoned]'));break;case 0x13:if(_0x52628b[_0x8405('0xf0')]>=_0x15d896[_0x8405('0xfd')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countmachineretry':_0x52628b[_0x8405('0xf0')]+=0x1,'scheduledat':moment()[_0x8405('0x101')](_0x15d896['dialMachineRetryFrequency'],_0x8405('0x103'))[_0x8405('0x7a')](_0x8405('0x104')),'ContactId':_0x52628b[_0x8405('0xd6')],'ListId':_0x52628b[_0x8405('0xd7')],'VoiceQueueId':_0x52628b[_0x8405('0xd9')]||undefined,'CampaignId':_0x52628b[_0x8405('0xda')]||undefined})[_0x8405('0xbb')](loggerCatch(_0x8405('0x105')));break;case 0x14:if(_0x52628b['countagentrejectretry']>=_0x15d896['dialAgentRejectMaxRetry']-0x1){return!![];}this[_0x8405('0x100')]({'active':![],'countagentrejectretry':_0x52628b[_0x8405('0xfa')]+=0x1,'scheduledat':moment()[_0x8405('0x101')](_0x15d896[_0x8405('0x1a2')],'minutes')['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x52628b['ContactId'],'ListId':_0x52628b[_0x8405('0xd7')],'VoiceQueueId':_0x52628b['VoiceQueueId']||undefined,'CampaignId':_0x52628b['CampaignId']||undefined})[_0x8405('0xbb')](loggerCatch(_0x8405('0x1a3')));break;default:return!![];}};Dialer['prototype'][_0x8405('0x19a')]=function(_0x12600b,_0x60529b,_0x518872){var _0x2a5f81=this;var _0x27c8dc=new History(_0x12600b);return new BPromise(function(_0xcd0a55,_0x6aed09){if(_[_0x8405('0x3c')](_0x60529b)&&typeof _0x60529b!==_0x8405('0x16e')){return _0x6aed09(msgResponse(_0x8405('0x1a4'),_0x8405('0x145'),_0x8405('0x1a5')));}if(_['isUndefined'](_0x518872)&&typeof _0x518872!==_0x8405('0x16e')){return _0x6aed09(msgResponse(_0x8405('0x1a4'),_0x8405('0x145'),_0x8405('0x1a6')));}switch(_0x518872['reason']){case'0':_0x60529b[_0x8405('0x1a7')]+=0x1;_0x27c8dc[_0x8405('0xaa')]=0x0;_0x27c8dc['statedesc']='NoSuchNumber';_0x27c8dc[_0x8405('0xf8')]+=0x1;_0x27c8dc[_0x8405('0xf1')]+=0x1;ami[_0x8405('0x4b')](_0x8405('0x1a8'),ut['buildObj'](_0x12600b,'nosuchnumber'));_0x2a5f81[_0x8405('0xf3')](_0x27c8dc)[_0x8405('0xbb')](loggerCatch(_0x8405('0xf4')));if(_0x2a5f81[_0x8405('0x1a9')](0x0,_0x12600b,_0x60529b)){if(_0x27c8dc['countnosuchnumberretry']>=_0x60529b[_0x8405('0x1a0')]){_0x2a5f81['createStateFinal'](_0x27c8dc,_0xcd0a55,_0x6aed09,_0x8405('0x1aa'));}else{_0x2a5f81[_0x8405('0xfb')](_0x27c8dc,_0xcd0a55,_0x6aed09,_0x8405('0x1aa'));}}break;case'3':_0x60529b[_0x8405('0x64')]+=0x1;_0x27c8dc[_0x8405('0xaa')]=0x3;_0x27c8dc[_0x8405('0xab')]=_0x8405('0x1ab');_0x27c8dc['countnoanswerretry']+=0x1;_0x27c8dc[_0x8405('0xf1')]+=0x1;ami[_0x8405('0x4b')]('custom:agentnoanswer',ut['buildObj'](_0x12600b,_0x8405('0x1ac')));_0x2a5f81[_0x8405('0xf3')](_0x27c8dc)[_0x8405('0xbb')](loggerCatch(_0x8405('0x1ad')));if(_0x2a5f81[_0x8405('0x1a9')](0x3,_0x12600b,_0x60529b)){if(_0x27c8dc[_0x8405('0xf7')]>=_0x60529b['dialNoAnswerMaxRetry']){_0x2a5f81[_0x8405('0xfe')](_0x27c8dc,_0xcd0a55,_0x6aed09,'reason\x203\x20ringing\x20no\x20answer');}else{_0x2a5f81[_0x8405('0xfb')](_0x27c8dc,_0xcd0a55,_0x6aed09,_0x8405('0x1ae'));}}break;case'5':_0x60529b[_0x8405('0x61')]+=0x1;_0x27c8dc[_0x8405('0xaa')]=0x5;_0x27c8dc['statedesc']=_0x8405('0x1af');_0x27c8dc[_0x8405('0xf5')]+=0x1;_0x27c8dc[_0x8405('0xf1')]+=0x1;ami[_0x8405('0x4b')](_0x8405('0x1b0'),ut[_0x8405('0xec')](_0x12600b,_0x8405('0x1b1')));_0x2a5f81[_0x8405('0xf3')](_0x27c8dc)[_0x8405('0xbb')](loggerCatch(_0x8405('0x1b2')));if(_0x2a5f81['checkRetriveMax'](0x5,_0x12600b,_0x60529b)){if(_0x27c8dc[_0x8405('0xf5')]>=_0x60529b[_0x8405('0x19d')]){_0x2a5f81['createStateFinal'](_0x27c8dc,_0xcd0a55,_0x6aed09,_0x8405('0x1b3'));}else{_0x2a5f81[_0x8405('0xfb')](_0x27c8dc,_0xcd0a55,_0x6aed09,'reason\x205\x20busy');}}break;case'8':_0x60529b[_0x8405('0x62')]+=0x1;_0x27c8dc[_0x8405('0xaa')]=0x8;_0x27c8dc[_0x8405('0xab')]=_0x8405('0x1b4');_0x27c8dc[_0x8405('0xf6')]+=0x1;_0x27c8dc[_0x8405('0xf1')]+=0x1;ami[_0x8405('0x4b')]('custom:agentcongestion',ut[_0x8405('0xec')](_0x12600b,_0x8405('0x1b5')));_0x2a5f81[_0x8405('0xf3')](_0x27c8dc)[_0x8405('0xbb')](loggerCatch(_0x8405('0x1b6')));if(_0x2a5f81[_0x8405('0x1a9')](0x8,_0x12600b,_0x60529b)){if(_0x27c8dc[_0x8405('0xf6')]>=_0x60529b[_0x8405('0x1b7')]){_0x2a5f81[_0x8405('0xfe')](_0x27c8dc,_0xcd0a55,_0x6aed09,_0x8405('0x1b8'));}else{_0x2a5f81[_0x8405('0xfb')](_0x27c8dc,_0xcd0a55,_0x6aed09,'reason\x208\x20congestion');}}break;case'11':_0x60529b[_0x8405('0x1b9')]+=0x1;_0x27c8dc[_0x8405('0xaa')]=0xb;_0x27c8dc['statedesc']='Abandoned';_0x27c8dc[_0x8405('0xf9')]+=0x1;_0x27c8dc['countglobal']+=0x1;_0x2a5f81[_0x8405('0xf3')](_0x27c8dc)[_0x8405('0xbb')](loggerCatch(_0x8405('0x1ba')));if(_0x2a5f81[_0x8405('0x1a9')](0xb,_0x12600b,_0x60529b)){if(_0x27c8dc[_0x8405('0xf9')]>=_0x60529b[_0x8405('0x12a')]){_0x2a5f81[_0x8405('0xfe')](_0x27c8dc,_0xcd0a55,_0x6aed09,_0x8405('0x1bb'));}else{_0x2a5f81['stateGlobal'](_0x27c8dc,_0xcd0a55,_0x6aed09,_0x8405('0x1bb'));}}break;case'20':_0x60529b[_0x8405('0x67')]+=0x1;_0x27c8dc['state']=0x14;_0x27c8dc[_0x8405('0xab')]=_0x8405('0x1bc');_0x27c8dc['countagentrejectretry']+=0x1;_0x27c8dc[_0x8405('0xf1')]+=0x1;ami[_0x8405('0x4b')](_0x8405('0x1bd'),ut[_0x8405('0xec')](_0x12600b,_0x8405('0x1be')));_0x2a5f81[_0x8405('0xf3')](_0x27c8dc)[_0x8405('0xbb')](loggerCatch(_0x8405('0x1bf')));if(_0x2a5f81[_0x8405('0x1a9')](0x14,_0x12600b,_0x60529b)){if(_0x27c8dc[_0x8405('0xfa')]>=_0x60529b['dialAgentRejectMaxRetry']){_0x2a5f81['createStateFinal'](_0x27c8dc,_0xcd0a55,_0x6aed09,_0x8405('0x1c0'));}else{_0x2a5f81[_0x8405('0xfb')](_0x27c8dc,_0xcd0a55,_0x6aed09,'reason\x2020\x20agentreject');}}break;default:_0x60529b['outboundUnknownCallsDay']+=0x1;_0x27c8dc[_0x8405('0xaa')]=0xc;_0x27c8dc[_0x8405('0xab')]=_0x518872[_0x8405('0x113')];_0x2a5f81[_0x8405('0xf3')](_0x27c8dc)['catch'](loggerCatch(_0x8405('0x1c1')));if(_0x2a5f81[_0x8405('0x1a9')](_0x518872[_0x8405('0x113')],_0x12600b,_0x60529b)){if(_0x27c8dc[_0x8405('0xf5')]+_0x27c8dc['countcongestionretry']+_0x27c8dc[_0x8405('0xf7')]+_0x27c8dc[_0x8405('0xf8')]+_0x27c8dc[_0x8405('0x109')]+_0x27c8dc[_0x8405('0xf9')]+_0x27c8dc[_0x8405('0xf0')]+_0x27c8dc[_0x8405('0xfa')]>=_0x60529b[_0x8405('0x10a')]){_0x2a5f81[_0x8405('0xfb')](_0x27c8dc,_0xcd0a55,_0x6aed09,_0x518872[_0x8405('0x113')]);}else{_0x2a5f81[_0x8405('0xfe')](_0x27c8dc,_0xcd0a55,_0x6aed09,_0x518872[_0x8405('0x113')]);}}}});};Dialer['prototype'][_0x8405('0xfb')]=function(_0xa14fdc,_0x59b67e,_0x265857,_0x1535da){var _0x2725f3=new Final(_0xa14fdc);_0x2725f3[_0x8405('0xaa')]=0xf;_0x2725f3[_0x8405('0xab')]=_0x8405('0x1c2');this[_0x8405('0xfe')](_0x2725f3,_0x59b67e,_0x265857,_0x1535da);};Dialer[_0x8405('0xad')]['createStateFinal']=function(_0x4d340e,_0x8652e,_0x3adda8,_0xdc1775){this[_0x8405('0xcd')](_0x4d340e)['then'](function(){return _0x8652e(msgResponse('[callProgressDetecting]',_0x8405('0xde'),_0xdc1775));})[_0x8405('0xbb')](function(){return _0x3adda8(msgResponse(_0x8405('0x1c3'),_0x8405('0x145'),'contact\x20not\x20moved'));});};Dialer[_0x8405('0xad')][_0x8405('0xb')]=function(_0x3bbbc9){var _0x195fd8=_0x3bbbc9[_0x8405('0x1c4')]/0x64;var _0x3106dd=_0x3bbbc9[_0x8405('0x11d')]/(_0x3bbbc9[_0x8405('0x11d')]+_0x3bbbc9['outboundAnswerCallsDay']);var _0x18d987=Math[_0x8405('0x1c5')](_0x3bbbc9[_0x8405('0x1c6')]*(_0x3bbbc9[_0x8405('0x1c7')]/0x64));var _0x457247=Math[_0x8405('0x1c5')](_0x3bbbc9['predictiveIntervalAvailable']*(_0x3bbbc9['predictiveIntervalMinThreshold']/0x64));var _0x965838=_0x3bbbc9[_0x8405('0x4f')]+_0x3bbbc9[_0x8405('0x54')];var _0x482b31=Math[_0x8405('0x1c8')](_0x3bbbc9[_0x8405('0x72')]*_0x3bbbc9[_0x8405('0x74')]*_0x3bbbc9[_0x8405('0x6e')]*_0x3bbbc9[_0x8405('0x6f')]);if(_[_0x8405('0x3c')](_0x3bbbc9[_0x8405('0x26')])){if(!_['isUndefined'](_0x3bbbc9['startPredictive'])){_0x3bbbc9[_0x8405('0x25')]=undefined;loggerPredictive['error'](_0x8405('0x1c9'),_0x8405('0x1ca'));}if(!_[_0x8405('0x3c')](_0x3bbbc9[_0x8405('0x92')])){loggerPredictive[_0x8405('0x98')](_0x8405('0x1c9'),'check\x20handlePredictive\x20is\x20not\x20undefine');clearInterval(_0x3bbbc9[_0x8405('0x92')]);_0x3bbbc9[_0x8405('0x92')]=undefined;}_0x3bbbc9[_0x8405('0x26')]=moment()[_0x8405('0x7a')](_0x8405('0x104'));loggerPredictive[_0x8405('0x7d')](_0x3bbbc9[_0x8405('0x3f')],_0x8405('0x1cb'),_0x3bbbc9['startProgressive']);this['handlePower'](_0x3bbbc9,0x1);}else if(ifInterval(_0x3bbbc9['dialPredictiveInterval'],_0x3bbbc9['startProgressive'])){this['handlePower'](_0x3bbbc9,0x1);loggerPredictiveCalls[_0x8405('0x7d')](_0x8405('0x1cc'),_0x3bbbc9[_0x8405('0x26')],_0x3bbbc9['name']);_0x3bbbc9['erlangCalls']=0x0;_0x3bbbc9[_0x8405('0x6d')]=0x0;}else if(_0x195fd8<_0x3106dd&&_0x3bbbc9[_0x8405('0x1cd')]===_0x8405('0x1ce')){freeVariablesPredictive(_0x3bbbc9);loggerPredictive[_0x8405('0x7d')]('[stopMethodPredictive][ReStartProgressive][ExceededDropDay]',_0x8405('0x1cf'),_0x3106dd,'startProgressive',_0x3bbbc9[_0x8405('0x3f')]);}else if(_0x482b31<_0x3bbbc9[_0x8405('0x6d')]&&_0x3bbbc9[_0x8405('0x1cd')]===_0x8405('0x1ce')){freeVariablesPredictive(_0x3bbbc9);loggerPredictive[_0x8405('0x7d')](_0x8405('0x1d0'),'Max\x20Drop\x20',_0x482b31,'Drop\x20in\x20this\x20interval',_0x3bbbc9[_0x8405('0x6d')],_0x8405('0x26'),_0x3bbbc9[_0x8405('0x3f')]);}else if(!ifInterval(_0x3bbbc9['dialPredictiveInterval'],_0x3bbbc9[_0x8405('0x26')])&&_[_0x8405('0x3c')](_0x3bbbc9[_0x8405('0x25')])&&!_[_0x8405('0x3c')](_0x3bbbc9[_0x8405('0x26')])){_0x3bbbc9[_0x8405('0x25')]=moment()['format'](_0x8405('0x104'));loggerPredictive[_0x8405('0x7d')](_0x3bbbc9[_0x8405('0x3f')],_0x8405('0x1d1'),_0x3bbbc9[_0x8405('0x25')]);this[_0x8405('0xc1')](_0x3bbbc9[_0x8405('0x1d2')])[_0x8405('0xba')](this[_0x8405('0x1d3')](_0x3bbbc9))['then'](mergeDataErlangB(_0x3bbbc9))['then'](this['startMethodPredictive'](_0x3bbbc9))['catch'](loggerCatchPredictive('Predictive\x20after\x20first\x20interval',_0x3bbbc9));}else if(!ifInterval(_0x3bbbc9['dialPredictiveInterval'],_0x3bbbc9['startPredictive'])){_0x3bbbc9[_0x8405('0x6d')]=0x0;_0x3bbbc9[_0x8405('0x25')]=moment()[_0x8405('0x7a')](_0x8405('0x104'));loggerPredictive['info'](_0x3bbbc9[_0x8405('0x3f')],'recalculate\x20predictive\x20at',_0x3bbbc9[_0x8405('0x25')]);clearInterval(_0x3bbbc9[_0x8405('0x92')]);_0x3bbbc9[_0x8405('0x92')]=undefined;this[_0x8405('0xc1')](_0x3bbbc9[_0x8405('0x1d2')])[_0x8405('0xba')](this['getDataPredictive'](_0x3bbbc9))[_0x8405('0xba')](mergeDataErlangB(_0x3bbbc9))[_0x8405('0xba')](this['startMethodPredictive'](_0x3bbbc9))['catch'](loggerCatchPredictive(_0x8405('0x1d4'),_0x3bbbc9));}else if(_0x3bbbc9['predictiveIntervalAvailable']&&_0x965838<_0x3bbbc9[_0x8405('0x1c6')]-_0x457247){freeVariablesPredictive(_0x3bbbc9);loggerPredictive[_0x8405('0x7d')](_0x3bbbc9[_0x8405('0x3f')],_0x8405('0x1d5'),_0x965838,_0x8405('0x1d6'),_0x3bbbc9[_0x8405('0x1c6')],'-',_0x457247,'=',_0x3bbbc9[_0x8405('0x1c6')]-_0x457247,')');}else if(_0x3bbbc9[_0x8405('0x1c6')]&&_0x965838>_0x3bbbc9[_0x8405('0x1c6')]+_0x18d987){freeVariablesPredictive(_0x3bbbc9);loggerPredictive[_0x8405('0x7d')](_0x3bbbc9[_0x8405('0x3f')],_0x8405('0x1d5'),_0x965838,_0x8405('0x1d7'),_0x3bbbc9[_0x8405('0x1c6')],'+',_0x18d987,'=',_0x3bbbc9[_0x8405('0x1c6')]+_0x18d987,')');}};Dialer['prototype'][_0x8405('0x1d3')]=function(_0x4d815d){var _0x4e2cee=this;return function(_0x1cb4e9){return new BPromise(function(_0xd33136,_0x430408){_[_0x8405('0xd4')](_0x4d815d,_0x1cb4e9[0x0]);if(checkGetDataPredictive(_0x1cb4e9[0x0])){var _0x1b9b52=_0x4d815d['predictiveIntervalAvailable']=_0x4d815d[_0x8405('0x54')]+_0x4d815d[_0x8405('0x4f')];var _0x4dc102=_0x4d815d['dialPredictiveInterval']*0x3c;var _0x308339=_0x1cb4e9[0x0][_0x8405('0x83')]+_0x1cb4e9[0x0][_0x8405('0x69')];var _0x39d8c2=(_0x1cb4e9[0x0][_0x8405('0x68')]+_0x1cb4e9[0x0][_0x8405('0x6b')]+_0x1cb4e9[0x0][_0x8405('0x6a')])/_0x1cb4e9[0x0][_0x8405('0x84')];_0x4d815d[_0x8405('0x6e')]=_0x39d8c2>0x0?_0x39d8c2:0x1;switch(_0x4d815d[_0x8405('0x1cd')]){case _0x8405('0x1ce'):var _0x47728e=_0x4d815d[_0x8405('0x1c4')]/0x64;return _0x4e2cee[_0x8405('0x1d8')](_0x1b9b52,_0x4dc102,_0x308339,_0x39d8c2,_0x47728e)[_0x8405('0xba')](function(_0x299a7c){return _0xd33136(_0x299a7c);});case _0x8405('0x1d9'):var _0x306048=_0x4d815d[_0x8405('0x1c4')]/0x64;return _0x4e2cee[_0x8405('0x1da')](_0x1b9b52,_0x4dc102,_0x308339,_0x39d8c2,_0x306048)[_0x8405('0xba')](function(_0x11dded){return _0xd33136(_0x11dded);});default:return _0x430408(msgResponse(_0x8405('0x1db'),_0x8405('0x145'),'Unknown\x20Predictive'));}}else{return _0x430408(msgResponse(_0x8405('0x1db'),_0x8405('0x145'),_0x8405('0x1dc')));}});};};Dialer[_0x8405('0xad')][_0x8405('0x1dd')]=function(_0x543ae7){var _0x36b158=this;return function(_0x107702){return new BPromise(function(_0x27f750,_0x21b4c4){_[_0x8405('0xd4')](_0x543ae7,_0x107702[0x0]);if(checkGetDataPredictive(_0x107702[0x0])){loggerPredictive[_0x8405('0x7d')](JSON[_0x8405('0x48')](_0x107702[0x0]));if(_0x543ae7['dialPredictiveOptimization']===_0x8405('0x1ce')){return _0x36b158[_0x8405('0xcb')](_0x543ae7['id'])[_0x8405('0xba')](function(_0x5f599f){var _0x1d9b0c=_0x543ae7['loggedIn']-_0x5f599f[0x0][_0x8405('0x1de')];var _0x406902=_0x543ae7[_0x8405('0x1d2')]*0x3c;var _0x1c822f=_0x107702[0x0][_0x8405('0x83')]+_0x107702[0x0]['predictiveIntervalAvgHoldtime'];var _0x4bda8b=(_0x107702[0x0][_0x8405('0x68')]+_0x107702[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x107702[0x0][_0x8405('0x6a')])/_0x107702[0x0][_0x8405('0x84')];var _0x5bfa6d=_0x543ae7[_0x8405('0x1c4')]/0x64;_0x543ae7[_0x8405('0x70')]=_0x5f599f[0x0][_0x8405('0x1de')]||0x0;_0x543ae7[_0x8405('0x6e')]=_0x4bda8b>0x0?_0x4bda8b:0x1;return _0x36b158[_0x8405('0x1d8')](_0x1d9b0c,_0x406902,_0x1c822f,_0x4bda8b,_0x5bfa6d);})[_0x8405('0xba')](function(_0x1b900c){return _0x27f750(_0x1b900c);})[_0x8405('0xbb')](function(_0x38ec88){return _0x21b4c4(msgResponse(_0x8405('0x1df'),_0x8405('0x145'),JSON['stringify'](_0x38ec88)));});}if(_0x543ae7[_0x8405('0x1cd')]===_0x8405('0x1d9')){return _0x36b158['getVoiceQueueRtPauses'](_0x543ae7['id'])[_0x8405('0xba')](function(_0x1ffc2b){var _0x3bdb83=_0x543ae7[_0x8405('0x163')]-_0x1ffc2b[0x0][_0x8405('0x1de')];var _0x87e058=_0x543ae7['dialPredictiveInterval']*0x3c;var _0x5b7e41=_0x107702[0x0][_0x8405('0x83')]+_0x107702[0x0][_0x8405('0x69')];var _0x1c45f9=(_0x107702[0x0]['predictiveIntervalAnsweredCalls']+_0x107702[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x107702[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x107702[0x0][_0x8405('0x84')];var _0x295ecf=_0x543ae7['dialPredictiveOptimizationPercentage']/0x64;_0x543ae7[_0x8405('0x70')]=_0x1ffc2b[0x0]['outboundQueuePauses']||0x0;_0x543ae7[_0x8405('0x6e')]=_0x1c45f9>0x0?_0x1c45f9:0x1;return _0x36b158['busyFactor'](_0x3bdb83,_0x87e058,_0x5b7e41,_0x1c45f9,_0x295ecf);})[_0x8405('0xba')](function(_0x1e1a72){return _0x27f750(_0x1e1a72);})['catch'](function(_0x19c4a5){return _0x21b4c4(msgResponse(_0x8405('0x1df'),_0x8405('0x145'),JSON['stringify'](_0x19c4a5)));});}}else{return _0x21b4c4(msgResponse('[getDataPredictive]','Failure',_0x8405('0x1dc')));}});};};Dialer[_0x8405('0xad')][_0x8405('0x1e0')]=function(_0x4b9600){var _0x218ac0=this;return function(){var _0x141bfe=0x0;var _0x234885=Math[_0x8405('0x1c8')](_0x4b9600[_0x8405('0x73')]*0x3e8);if(_0x234885>0x0){_0x234885=_0x234885<0x64?0x64:_0x234885;loggerPredictive[_0x8405('0x7d')](_0x4b9600[_0x8405('0x3f')],_0x8405('0x1e1'),_0x234885,_0x8405('0x49'));_0x4b9600['handlePredictive']=setInterval(function(){_0x218ac0['handlePredictive'](_0x4b9600);loggerPredictiveCalls[_0x8405('0x7d')](_0x8405('0x1e2'),_0x141bfe+=0x1);},_0x234885);}else{loggerPredictive['info'](_0x4b9600['name'],_0x8405('0x1e3'));}};};Dialer['prototype'][_0x8405('0x1e4')]=function(_0x382732,_0x1e08f2){var _0x15f22f=this;return function(_0x191cf8){if(_[_0x8405('0x46')](_0x191cf8)){if(_[_0x8405('0xe4')](_0x1e08f2['UserId'])||!_0x1e08f2['recallme']){if(_0x382732[_0x8405('0x15a')]==='booked'){_0x382732[_0x8405('0x133')]=_[_0x8405('0x3c')](_0x382732['queueStatusComplete'])?!![]:_0x382732[_0x8405('0x133')];var _0x56309f=uuid['v4']();_0x15f22f['actions'][_0x56309f]=new Action(_0x382732,_0x1e08f2,_0x56309f);loggerBooked[_0x8405('0x7d')](_0x8405('0x1e5'),_0x56309f,_0x8405('0x1e6'),JSON[_0x8405('0x48')](_0x382732[_0x8405('0x133')]),'Queue:\x20',_0x382732[_0x8405('0x3f')]);if(_0x382732[_0x8405('0x133')]){_0x382732['queueStatusComplete']=![];_0x15f22f['queueBooked'][_0x15f22f[_0x8405('0x21')][_0x56309f][_0x8405('0xb5')]]=[];ami[_0x8405('0xb0')]({'actionid':_0x56309f,'action':_0x8405('0x1e7'),'queue':_0x382732[_0x8405('0x3f')]})[_0x8405('0xbb')](function(){_0x15f22f[_0x8405('0xb4')](_0x382732);_0x15f22f[_0x8405('0x100')]({'active':![],'ContactId':_0x15f22f[_0x8405('0x21')][_0x56309f][_0x8405('0xd6')],'ListId':_0x15f22f['actions'][_0x56309f][_0x8405('0xd7')],'VoiceQueueId':_0x15f22f['actions'][_0x56309f]['VoiceQueueId']||undefined,'CampaignId':_0x15f22f[_0x8405('0x21')][_0x56309f]['CampaignId']||undefined})[_0x8405('0xbb')](loggerCatch(_0x8405('0x1e8')));delete _0x15f22f['actions'][_0x56309f];});}else{loggerBooked['info'](_0x8405('0x1e9'),JSON['stringify'](_0x382732[_0x8405('0x133')]),_0x8405('0x1ea'),_0x382732[_0x8405('0x3f')]);_0x15f22f['updateOriginated'](_0x382732);_0x15f22f[_0x8405('0x100')]({'active':![],'ContactId':_0x15f22f[_0x8405('0x21')][_0x56309f][_0x8405('0xd6')],'ListId':_0x15f22f['actions'][_0x56309f][_0x8405('0xd7')],'VoiceQueueId':_0x15f22f['actions'][_0x56309f][_0x8405('0xd9')]||undefined,'CampaignId':_0x15f22f[_0x8405('0x21')][_0x56309f][_0x8405('0xda')]||undefined})[_0x8405('0xbb')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x15f22f[_0x8405('0x21')][_0x56309f];}}else{return _0x15f22f['actionOriginate'](_0x382732,_0x1e08f2);}}else{if(getDiff(_0x1e08f2[_0x8405('0x1eb')])<_0x382732[_0x8405('0x1ec')]*0x3c){if(_0x1e08f2[_0x8405('0x1ed')]&&!_0x1e08f2[_0x8405('0x1ed')][_0x8405('0x1ee')]){_0x15f22f['preview'][_0x8405('0x136')](_0x1e08f2['id'])['finally'](function(){_0x15f22f[_0x8405('0xb4')](_0x382732);});}else{_0x15f22f[_0x8405('0xc5')]({'active':![]},_0x1e08f2['id'],0x1)[_0x8405('0x18')](function(){_0x15f22f[_0x8405('0xb4')](_0x382732);});}}else{_0x382732['outboundReCallsDay']+=0x1;_0x15f22f[_0x8405('0xb4')](_0x382732);if(_0x382732[_0x8405('0x1ef')]){_0x15f22f[_0x8405('0x100')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x1e08f2[_0x8405('0xd6')],'ListId':_0x1e08f2['ListId'],'VoiceQueueId':_0x1e08f2[_0x8405('0xd9')]||undefined,'CampaignId':_0x1e08f2[_0x8405('0xda')]||undefined})[_0x8405('0xbb')](loggerCatch(_0x8405('0x1f0')));_0x15f22f[_0x8405('0xf3')](createObjHistory(_0x382732,_0x1e08f2,_0x8405('0x1f1'),0x17,_0x8405('0x1f2')))['catch'](loggerCatch(_0x8405('0x1f3')));}else{_0x15f22f['saveInDb'](createObjHistory(_0x382732,_0x1e08f2,'RECALLFAILEDTIMEOUT',0x16,'RecallFailedTimeout'),_0x8405('0x1f4'),'[Originate][HistoryRecallClose]');}}}}else{_0x382732['outboundBlacklistCallsDay']+=0x1;_0x15f22f[_0x8405('0xe2')](createObjHistory(_0x382732,_0x1e08f2,'BLACKLIST',0xd,_0x8405('0x1f5')),_0x8405('0x1f6'),'[Originate][MoveBlacklist]');throw _0x8405('0x1f7');}};};Dialer[_0x8405('0xad')][_0x8405('0x162')]=function(_0x5e33ca){var _0x147546=this;var _0x555fae=_0x5e33ca[_0x8405('0x1f8')]-_0x5e33ca[_0x8405('0x71')]-_0x5e33ca[_0x8405('0xc7')];emitCampaignSummary(_0x5e33ca);if(_0x555fae>0x0){if(_0x555fae>this[_0x8405('0x1f')]){_0x555fae=this[_0x8405('0x1f')];}_0x5e33ca['temp']+=_0x555fae;this[_0x8405('0xc9')](_0x5e33ca['id'],_0x555fae,_0x5e33ca[_0x8405('0x1f9')],_0x5e33ca)[_0x8405('0xba')](function(_0x447da5){_0x5e33ca[_0x8405('0xc7')]-=_0x555fae;_0x5e33ca['temp']=_0x5e33ca[_0x8405('0xc7')]>0x0?_0x5e33ca[_0x8405('0xc7')]:0x0;if(!checkContactEmpty(_0x447da5)){_0x5e33ca[_0x8405('0x3d')]=_0x8405('0xa1');logger[_0x8405('0x7d')](_0x8405('0x1fa')+_0x5e33ca[_0x8405('0x3f')]);}else{_0x5e33ca[_0x8405('0x71')]+=_0x447da5[_0x8405('0x9b')];_0x5e33ca[_0x8405('0x3d')]=_0x8405('0x1fb');for(var _0xea533d=0x0;_0xea533d<_0x447da5['length'];_0xea533d+=0x1){_0x5e33ca[_0x8405('0x1fc')]+=0x1;if(_[_0x8405('0xe4')](_0x447da5[_0xea533d])||_[_0x8405('0xe4')](_0x447da5[_0xea533d][_0x8405('0x171')])||_['isNil'](_0x447da5[_0xea533d]['Contact'][_0x8405('0x172')])){_0x147546[_0x8405('0xd2')](_0x8405('0x1fd'),_0x5e33ca,_0x447da5[_0xea533d]);}else{_0x147546[_0x8405('0xbf')](_[_0x8405('0xd5')](_0x447da5[_0xea533d],['CampaignId',_0x8405('0x1fe')]))['then'](_0x147546['checkContactBlack'](_0x5e33ca,_0x447da5[_0xea533d]))[_0x8405('0xbb')](_0x147546[_0x8405('0x1ff')](_0x8405('0x200'),_0x5e33ca));}}}})[_0x8405('0xbb')](loggerGetContactDialer(_0x8405('0x201'),_0x5e33ca,_0x555fae));}};Dialer[_0x8405('0xad')][_0x8405('0x15d')]=function(_0x1be31e,_0x194b5e){var _0x2b07d5=this;var _0x280bfb=[];var _0x44589e=_0x194b5e>=0x1?_0x194b5e:0x1;if(_0x1be31e[_0x8405('0x15a')]===_0x8405('0x9')){_0x44589e=0x1;}var _0x3d06cc=Math['floor'](_0x1be31e[_0x8405('0x4f')]*_0x44589e)-_0x1be31e[_0x8405('0x71')]-_0x1be31e[_0x8405('0xc7')];emitVoiceQueueSummary(_0x1be31e);if(_0x1be31e['dialLimitQueue']>0x0){var _0x457f6c=_0x1be31e['dialLimitQueue']-_0x1be31e[_0x8405('0x71')]-_0x1be31e[_0x8405('0x54')]-_0x1be31e[_0x8405('0xc7')]-_0x1be31e['pTalking'];if(_0x3d06cc>_0x457f6c){_0x3d06cc=_0x457f6c;}}if(_0x3d06cc>0x0){if(_0x1be31e[_0x8405('0x15a')]==='booked'){_0x3d06cc=0x1;}if(_0x3d06cc>this[_0x8405('0x1f')]){_0x3d06cc=this[_0x8405('0x1f')];}_0x1be31e[_0x8405('0xc7')]+=_0x3d06cc;for(var _0x113e0d in this['agents']){if(typeof this['agents'][_0x113e0d]!==_0x8405('0xd0')){if(this['agents'][_0x113e0d][_0x8405('0xaa')]===_0x8405('0x202')&&this['agents'][_0x113e0d][_0x8405('0xb1')]==='reachable'){_0x280bfb['push'](this[_0x8405('0x1d')][_0x113e0d]['id']);}}}this['getContactDialer'](_0x1be31e['id'],_0x280bfb,_0x3d06cc,_0x1be31e['dialOrderByScheduledAt'],_0x1be31e)['then'](function(_0x136f1b){_0x1be31e[_0x8405('0xc7')]-=_0x3d06cc;_0x1be31e[_0x8405('0xc7')]=_0x1be31e[_0x8405('0xc7')]>0x0?_0x1be31e['temp']:0x0;if(!checkContactEmpty(_0x136f1b)){_0x2b07d5[_0x8405('0xb8')](_0x1be31e)[_0x8405('0xba')](sendMessageReschedule(_0x1be31e))[_0x8405('0xbb')](loggerCatch(_0x8405('0xbc')));}else{_0x1be31e[_0x8405('0x71')]+=_0x136f1b[_0x8405('0x9b')];_0x1be31e['message']=_0x1be31e[_0x8405('0x15a')]===_0x8405('0x9')?_0x8405('0x179'):_0x8405('0x1fb');for(var _0x38493c=0x0;_0x38493c<_0x136f1b['length'];_0x38493c+=0x1){if(_['isNil'](_0x136f1b[_0x38493c])||_['isNil'](_0x136f1b[_0x38493c][_0x8405('0x171')])||_[_0x8405('0xe4')](_0x136f1b[_0x38493c][_0x8405('0x171')][_0x8405('0x172')])){_0x2b07d5['emptyContact'](_0x8405('0x1fd'),_0x1be31e,_0x136f1b[_0x38493c]);}else{_0x2b07d5[_0x8405('0xbd')](_[_0x8405('0xd5')](_0x136f1b[_0x38493c],[_0x8405('0xd9'),_0x8405('0x1fe')]))[_0x8405('0xba')](_0x2b07d5[_0x8405('0x1e4')](_0x1be31e,_0x136f1b[_0x38493c]))[_0x8405('0xbb')](_0x2b07d5[_0x8405('0x1ff')](_0x8405('0x1fd'),_0x1be31e));}}}})[_0x8405('0xbb')](loggerGetContactDialer('[getContactDialer2]',_0x1be31e,_0x3d06cc));}};Dialer['prototype'][_0x8405('0x92')]=function(_0x4a4977){if(_0x4a4977[_0x8405('0x203')]>0x0){var _0x1e3989=_0x4a4977['dialLimitQueue']-_0x4a4977[_0x8405('0x71')]-_0x4a4977['talking'];if(_0x1e3989>0x0){this['tryOriginatePredictive'](_0x4a4977);}else{loggerPredictiveCalls[_0x8405('0x7d')](_0x8405('0x204'));}}else{this[_0x8405('0x205')](_0x4a4977);}};Dialer[_0x8405('0xad')][_0x8405('0x205')]=function(_0x336dd1){var _0x1d7832=this;var _0x5df3ed=[];_0x336dd1[_0x8405('0x71')]+=0x1;for(var _0x4540bb in this['agents']){if(typeof this[_0x8405('0x1d')][_0x4540bb]!=='undefined'){if(this[_0x8405('0x1d')][_0x4540bb]['state']===_0x8405('0x202')&&this[_0x8405('0x1d')][_0x4540bb][_0x8405('0xb1')]===_0x8405('0x206')){_0x5df3ed['push'](this[_0x8405('0x1d')][_0x4540bb]['id']);}}}this[_0x8405('0xc6')](_0x336dd1['id'],_0x5df3ed,0x1,_0x336dd1['dialOrderByScheduledAt'],_0x336dd1)[_0x8405('0xba')](function(_0x2f4d3a){if(!checkContactEmpty(_0x2f4d3a)){checkContactLowerLimitOriginate(_0x336dd1,0x1,0x0);_0x1d7832['countReScheduled'](_0x336dd1)[_0x8405('0xba')](sendMessageReschedule(_0x336dd1))[_0x8405('0xbb')](loggerCatch('[countReScheduled]\x20'));}else{_0x336dd1['message']=_0x8405('0x1fb');if(_[_0x8405('0xe4')](_0x2f4d3a[0x0])||_[_0x8405('0xe4')](_0x2f4d3a[0x0][_0x8405('0x171')])||_[_0x8405('0xe4')](_0x2f4d3a[0x0]['Contact'][_0x8405('0x172')])){_0x1d7832[_0x8405('0xd2')]('[actionOriginate]\x20',_0x336dd1,_0x2f4d3a[0x0]);}else{_0x1d7832[_0x8405('0xbd')](_['pick'](_0x2f4d3a[0x0],[_0x8405('0xd9'),_0x8405('0x1fe')]))[_0x8405('0xba')](_0x1d7832['checkContactBlack'](_0x336dd1,_0x2f4d3a[0x0]))[_0x8405('0xbb')](_0x1d7832[_0x8405('0x1ff')]('[actionOriginatePredictive]\x20',_0x336dd1));}}})['catch'](loggerGetContactDialer(_0x8405('0x207'),_0x336dd1,0x1));emitVoiceQueueSummary(_0x336dd1);};Dialer[_0x8405('0xad')][_0x8405('0x1d8')]=function(_0x287a58,_0x55a655,_0x457698,_0x515871,_0x5bff20,_0x19988b){loggerPredictive[_0x8405('0x7d')](_0x8405('0x208'));loggerPredictive[_0x8405('0x7d')](_0x8405('0x209'),_0x287a58);loggerPredictive[_0x8405('0x7d')](_0x8405('0x20a'),_0x55a655);loggerPredictive[_0x8405('0x7d')]('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',_0x457698);loggerPredictive[_0x8405('0x7d')](_0x8405('0x20b'),_0x515871);loggerPredictive[_0x8405('0x7d')]('Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x5bff20);loggerPredictive[_0x8405('0x7d')](_0x8405('0x8e'));return new BPromise(function(_0x526724,_0xfece8b){if(_0x287a58<=0x0||isNaN(_0x287a58)){return _0xfece8b(msgResponse(_0x8405('0x20c'),_0x8405('0x196'),_0x8405('0x20d')+_0x287a58));}if(_0x457698<=0x0||isNaN(_0x457698)){return _0xfece8b(msgResponse(_0x8405('0x20c'),_0x8405('0x196'),_0x8405('0x20e')+_0x457698));}if(_0x515871<=0x0||isNaN(_0x515871)){return _0xfece8b(msgResponse(_0x8405('0x20c'),_0x8405('0x196'),_0x8405('0x20f')+_0x515871));}if(_0x55a655<=0x0||isNaN(_0x55a655)){return _0xfece8b(msgResponse(_0x8405('0x20c'),'Error',_0x8405('0x210')+_0x55a655));}if(_0x5bff20<=0x0||isNaN(_0x5bff20)){return _0xfece8b(msgResponse(_0x8405('0x20c'),_0x8405('0x196'),_0x8405('0x211')+_0x5bff20));}_0x19988b=_0x19988b||0x0;var _0x5b276f=0x1/_0x457698;var _0x30dcb5=0x0;var _0x3980f3=0x0;var _0x1b9a60=0x0;var _0x21c4c8=0x0;for(var _0x31fa3b=0x0;_0x1b9a60<_0x5bff20;_0x31fa3b+=0x1){_0x3980f3=_0x31fa3b/_0x55a655;_0x30dcb5=(_0x515871*_0x3980f3+_0x19988b)/_0x5b276f;_0x1b9a60=erlangb(_0x30dcb5,_0x287a58);_0x21c4c8=_0x30dcb5/_0x287a58*(0x1-erlangb(_0x30dcb5,_0x287a58));}return _0x526724({'erlangCalls':_0x31fa3b,'erlangCallToSecond':_0x55a655/_0x31fa3b,'erlangAbandonmentRate':_0x1b9a60,'erlangBusyFactor':_0x21c4c8});});};Dialer[_0x8405('0xad')][_0x8405('0x1da')]=function(_0x82735f,_0x16d871,_0x5f3e14,_0x3b0568,_0x1b473d,_0x46ae64){loggerPredictive[_0x8405('0x7d')]('----\x20Agent\x20Busy\x20Factor\x20----');loggerPredictive['info']('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',_0x82735f);loggerPredictive[_0x8405('0x7d')](_0x8405('0x20a'),_0x16d871);loggerPredictive[_0x8405('0x7d')](_0x8405('0x212'),_0x5f3e14);loggerPredictive['info']('P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3b0568);loggerPredictive[_0x8405('0x7d')](_0x8405('0x213'),_0x1b473d);loggerPredictive['info'](_0x8405('0x8e'));return new BPromise(function(_0xdbbbad,_0x4f51b0){if(_0x82735f<=0x0||isNaN(_0x82735f)){return _0x4f51b0(msgResponse(_0x8405('0x214'),_0x8405('0x196'),_0x8405('0x20d')+_0x82735f));}if(_0x5f3e14<=0x0||isNaN(_0x5f3e14)){return _0x4f51b0(msgResponse('[busyFactor]',_0x8405('0x196'),_0x8405('0x20e')+_0x5f3e14));}if(_0x3b0568<=0x0||isNaN(_0x3b0568)){return _0x4f51b0(msgResponse('[busyFactor]',_0x8405('0x196'),_0x8405('0x20f')+_0x3b0568));}if(_0x16d871<=0x0||isNaN(_0x16d871)){return _0x4f51b0(msgResponse(_0x8405('0x214'),_0x8405('0x196'),_0x8405('0x210')+_0x16d871));}if(_0x1b473d<=0x0||isNaN(_0x1b473d)){return _0x4f51b0(msgResponse(_0x8405('0x214'),'Error',_0x8405('0x215')+_0x1b473d));}_0x46ae64=_0x46ae64||0x0;var _0x564345=0x1/_0x5f3e14;var _0x2f4b6b=0x0;var _0x37b863=0x0;var _0x5c4b67=0x0;var _0x3e1098=0x0;for(var _0x3a842f=0x0;_0x3e1098<_0x1b473d;_0x3a842f+=0x1){_0x37b863=_0x3a842f/_0x16d871;_0x2f4b6b=(_0x3b0568*_0x37b863+_0x46ae64)/_0x564345;_0x5c4b67=erlangb(_0x2f4b6b,_0x82735f);_0x3e1098=_0x2f4b6b/_0x82735f*(0x1-erlangb(_0x2f4b6b,_0x82735f));}return _0xdbbbad({'erlangCalls':_0x3a842f,'erlangCallToSecond':_0x16d871/_0x3a842f,'erlangAbandonmentRate':_0x5c4b67,'erlangBusyFactor':_0x3e1098});});};module[_0x8405('0x216')]=Dialer;
\ No newline at end of file
+var _0x6f0d=['Action','status','channel','catch','No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel]','[Dialer][checkChannel][ivr]','countReScheduled','resolve','then','[countReScheduled]\x20','checkIsBlackList','[checkIsBlackList]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','avgHandleTime','rescheduleContact','[rescheduleContact]\x20','unlockContact','[unlockContact]\x20','getContactDialer','temp','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[updateOriginated]\x20object\x20originated\x20is\x20negative','loggerHandler','notFound','saveInDb','pick','ContactId','ListId','UserId','CampaignId','isSuccess','Success','isTrunkReachable','SIP/%s','reachable','unmonitored','uniqueid','variable','exten','xcally-motion-dialer','dialAMDActive','value','HANGUP','membername','AMD','custom:amd','buildObj','amd','[syncHangupInAMD][createHistory]','MACHINE','countmachineretry','countglobal','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnosuchnumberretry','countabandonedretry','dialGlobalMaxRetry','stateGlobal','createStateFinal','reason\x2019\x20machine....','add','minutes','YYYY-MM-DD\x20HH:mm:ss','VoiceQueueId','[rescheduleContact][Machine]','HangupInAMD','[syncHangupInAMDIvr]','Machine','countnoanswerretry','countdropretry','countagentrejectretry','reason19\x20machine....','dialMachineMaxRetry','[syncHangupIvr][createHistory]','dialQueueProject','AnswerAGI','AGI','[syncHangupIvr]','cause-txt','syncAgentComplete','reason','agent','agiafterat','dialAgiAfterHangupAgent','[syncAgentComplete]','answertime','queueCallerAbandonCreateState','[syncAgentComplete][createHistory]','droptime','dialQueueTimeout','outboundDropCallsDayTimeout','dropreason','dialQueueProject2','dialDropRetryFrequency','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','CALLEREXIT','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','[syncAgentComplete][createHistory][11]','actionid','roundrobin','locked','stateinterface','queueBooked','push','merge','idHopper','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','run','[unlock][syncQueueStatusComplete]','_rr','unlockRR','Agent:\x20','paused','[Catch][Preview][syncQueueStatusComplete]','[booked][RR][finaly]','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','syncCampaigns','checkIsTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','Failure','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','command','iftime\x20%s,%s','interval','content','indexOf','true','all','some','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','Global:\x20','\x20Interval\x20is\x20overtime:\x20','checkDialMethod','progressive','handlePower','power','dialPowerLevel','Queue','method\x20not\x20recognized','syncQueueSummary','dialMethod','dialGlobalInterval','checkIfTimeIntervals','dialTimezone','[syncQueueSummary]','launchHandleIvr','[syncCampaigns]','\x5cw{0,','pow','random','match','actionOriginate','object','originate','Contact','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','ACTIVE','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','XMD-AMDMAXIMUMWORDLENGTH','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','tags','updatedAt','%s%s','toUpper','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','dialPrefix','trim','dialCutDigit','substring','SIP/%s/%s%s','from-sip','[originate][error]','originate\x20action\x20Error','responsetime','getQueue','response','callProgressDetecting','[callProgressDetecting]\x20','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','[rescheduleContact]\x20[Busy]','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','[rescheduleContact][Drop]','[rescheduleContact][Abandoned]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','[callProgressDetecting]','evt\x20is\x20undefine','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','checkRetriveMax','reason\x200\x20no\x20such\x20number....','NoAnswer','noanswer','[syncAgentComplete][createHistory][3]','dialNoAnswerMaxRetry','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','Busy','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','custom:agentcongestion','congestion','[syncAgentComplete][createHistory][8]','dialCongestionMaxRetry','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','custom:agentreject','reason\x2020\x20agentreject','Global','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','round','predictiveIntervalMinThreshold','floor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','started\x20in\x20predictive\x20at','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','check\x20failure','getDataPredictiveOld','outboundQueuePauses','[CatchErlangB]','one\x20call\x20every:','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','scheduledat','dialRecallMeTimeout','Agent','voicePause','dialRecallInQueue','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','handleIvr','limitCalls','dialOrderByScheduledAt','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','emptyContact','Contact.phone','tryOriginatePredictive','[handlePredictive][limitChannel]','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','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','---------------------------','[abandonmentRate]','m\x20=\x20','Ts\x20=\x20','p\x20=\x20','interval\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\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','lodash','bluebird','uuid','moment','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','dialer','booked','predictive','predictiveCalls','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./history','./final','./agentComplete','./queueCallerAbandon','./hangup','env','XCALLY_IP_AGI','127.0.0.1','rrmemory','prototype','enqueue','tail','finally','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','contactsId','uniqueId','optionPredictive','startProgressive','ivrOriginated','queueBookedRR','syncAgentConnect','bind','syncQueueCallerAbandon','syncOriginateResponse','agentcomplete','custom:queuesummary','syncHangup','newexten','syncNewExten','varset','syncVarSet','syncQueueMember','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','isUndefined','message','AGENTS_NOT_LOGGED','name','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','\x20NOT\x20Active','Interval','Intervals','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Error','milliseconds','diff','emit','outbound','strategy','answered','available','loggedIn','pTalking','sumDuration','sumHoldTime','talking','total','unmanaged','abandoned','waiting','loggedInDb','dialActive','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalTotalCalls','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','Trunk','active','stringify','md5','format','voice:queue:%s','type','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','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\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAvgHoldtime','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','seconds','startPredictive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','error','stack','inspect','length','originated','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contacts','AVAILABLE_CONTACTS_FINISHED','[getContactDialer2][Empty]','sendMessageOneNotActive','is\x20not\x20active','IS_DISACTIVED','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','state','statedesc','endtime','starttime','[uniqueid]','clearZombieChannels','actions','[actions]','isNil'];(function(_0x73eb59,_0x22a4ec){var _0x1ecaa5=function(_0x50d87d){while(--_0x50d87d){_0x73eb59['push'](_0x73eb59['shift']());}};_0x1ecaa5(++_0x22a4ec);}(_0x6f0d,0x16c));var _0xd6f0=function(_0x25d273,_0x763aca){_0x25d273=_0x25d273-0x0;var _0x4ed5a3=_0x6f0d[_0x25d273];return _0x4ed5a3;};'use strict';var util=require('util');var _=require(_0xd6f0('0x0'));var BPromise=require(_0xd6f0('0x1'));var uuid=require(_0xd6f0('0x2'));var moment=require(_0xd6f0('0x3'));var rr=require('rr');var md5=require('md5');var Redis=require(_0xd6f0('0x4'));var ut=require(_0xd6f0('0x5'));var config=require(_0xd6f0('0x6'));var logger=require(_0xd6f0('0x7'))(_0xd6f0('0x8'));var loggerBooked=require('../../../config/logger')(_0xd6f0('0x9'));var loggerPredictive=require('../../../config/logger')(_0xd6f0('0xa'));var loggerPredictiveCalls=require(_0xd6f0('0x7'))(_0xd6f0('0xb'));var loggerSyncQueueSummary=require(_0xd6f0('0x7'))('syncQueueSummary');var ami=require('../ami');config[_0xd6f0('0xc')]=_[_0xd6f0('0xd')](config[_0xd6f0('0xc')],{'host':_0xd6f0('0xe'),'port':0x18eb});var io=require(_0xd6f0('0xf'))(new Redis(config['redis']));var cmHopper=require(_0xd6f0('0x10'));var cmHopperHistory=require(_0xd6f0('0x11'));var cmHopperBlack=require(_0xd6f0('0x12'));var voiceQueueRt=require(_0xd6f0('0x13'));var Action=require('./action');var History=require(_0xd6f0('0x14'));var Final=require(_0xd6f0('0x15'));var AgentComplete=require(_0xd6f0('0x16'));var QueueCallerAbandon=require(_0xd6f0('0x17'));var Hangup=require(_0xd6f0('0x18'));var ipAgi=process[_0xd6f0('0x19')][_0xd6f0('0x1a')]||_0xd6f0('0x1b');var strategy={'rrmemory':_0xd6f0('0x1c'),'roundrobin':'roundrobin'};var Sequence=function(){};Sequence[_0xd6f0('0x1d')][_0xd6f0('0x1e')]=function(_0x4c1559){this[_0xd6f0('0x1f')]=this['tail']?this[_0xd6f0('0x1f')][_0xd6f0('0x20')](_0x4c1559):_0x4c1559();};function Dialer(_0x41bd99,_0x472156){this[_0xd6f0('0x21')]=new Sequence();this[_0xd6f0('0x22')]=_0x472156;this[_0xd6f0('0x23')]=_0x41bd99[_0xd6f0('0x23')];this[_0xd6f0('0x24')]=_0x41bd99[_0xd6f0('0x24')];this[_0xd6f0('0x25')]=_0x41bd99[_0xd6f0('0x25')];this[_0xd6f0('0x26')]=_0x41bd99[_0xd6f0('0x26')];this[_0xd6f0('0x27')]=config[_0xd6f0('0x27')]||0x2;this['channels']={};this['actions']={};this[_0xd6f0('0x28')]={};this[_0xd6f0('0x29')]={};this[_0xd6f0('0x2a')]={};this['startPredictive']={};this[_0xd6f0('0x2b')]={};this[_0xd6f0('0x2c')]={};this['queueBooked']={};this[_0xd6f0('0x2d')]={};ami['on']('agentconnect',this[_0xd6f0('0x2e')][_0xd6f0('0x2f')](this));ami['on']('queuecallerabandon',this[_0xd6f0('0x30')][_0xd6f0('0x2f')](this));ami['on']('originateresponse',this[_0xd6f0('0x31')][_0xd6f0('0x2f')](this));ami['on'](_0xd6f0('0x32'),this['syncAgentComplete'][_0xd6f0('0x2f')](this));ami['on'](_0xd6f0('0x33'),this['syncQueueSummary'][_0xd6f0('0x2f')](this));ami['on']('hangup',this[_0xd6f0('0x34')][_0xd6f0('0x2f')](this));ami['on'](_0xd6f0('0x35'),this[_0xd6f0('0x36')][_0xd6f0('0x2f')](this));ami['on'](_0xd6f0('0x37'),this[_0xd6f0('0x38')][_0xd6f0('0x2f')](this));ami['on']('queuemember',this[_0xd6f0('0x39')][_0xd6f0('0x2f')](this));ami['on']('queuestatuscomplete',this[_0xd6f0('0x3a')][_0xd6f0('0x2f')](this));this[_0xd6f0('0x3b')]();this[_0xd6f0('0x3c')]();}function isNotNull(_0x1a3967){return _0x1a3967!==null&&!_[_0xd6f0('0x3d')](_0x1a3967);}function checkIsLoggedIn(_0x351fda,_0x3151f8){return function(){if(_0x3151f8<=0x0){_0x351fda[_0xd6f0('0x3e')]=_0xd6f0('0x3f');throw _0x351fda[_0xd6f0('0x40')]+_0xd6f0('0x41');}};}function isActive(_0x348529){return _0x348529;}function checkIsActive(_0xa863d9,_0xbdd223){return function(){if(!isActive(_0xbdd223)){_0xa863d9[_0xd6f0('0x3e')]=_0xd6f0('0x42');throw _0xa863d9[_0xd6f0('0x40')]+_0xd6f0('0x43');}};}function checkInterval(_0x180e5f){return function(){if(!isNotNull(_0x180e5f[_0xd6f0('0x44')])){_0x180e5f[_0xd6f0('0x3e')]='INTERVAL_IS_NULL';throw _0x180e5f[_0xd6f0('0x40')]+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_0x180e5f['Interval'][_0xd6f0('0x45')])){_0x180e5f[_0xd6f0('0x3e')]=_0xd6f0('0x46');throw _0x180e5f[_0xd6f0('0x40')]+_0xd6f0('0x47');}if(!isNotNull(_['isEmpty'](_0x180e5f[_0xd6f0('0x44')]['Intervals']))){_0x180e5f[_0xd6f0('0x3e')]=_0xd6f0('0x46');throw _0x180e5f[_0xd6f0('0x40')]+_0xd6f0('0x47');}};}function msgResponse(_0x518751,_0x5c3132,_0x47b33d){return{'action':_0x518751,'response':_0x5c3132,'message':_0x47b33d,'stack':_0x47b33d};}function myreject(_0x3b6463){return function(_0xe2958d){return _0x3b6463(msgResponse('[ifTime][Action]',_0xd6f0('0x48'),JSON['stringify'](_0xe2958d)));};}function getSeconds(_0x507f66,_0x2fd7b8){var _0x28659e=moment(_0x507f66)[_0xd6f0('0x49')](0x0);var _0x451834=moment(_0x2fd7b8)[_0xd6f0('0x49')](0x0);return _0x28659e[_0xd6f0('0x4a')](_0x451834,'seconds');}function emit(_0x52203d,_0x162537,_0xf879a6){io['to'](_0x52203d)[_0xd6f0('0x4b')](_0x162537,_0xf879a6);}function emitVoiceQueueSummary(_0x5c2d9a){if(_0x5c2d9a['type']===_0xd6f0('0x4c')){var _0x2def01={'id':_0x5c2d9a['id'],'name':_0x5c2d9a[_0xd6f0('0x40')],'strategy':_0x5c2d9a[_0xd6f0('0x4d')],'answered':_0x5c2d9a[_0xd6f0('0x4e')],'available':_0x5c2d9a[_0xd6f0('0x4f')],'loggedIn':_0x5c2d9a[_0xd6f0('0x50')],'pTalking':_0x5c2d9a[_0xd6f0('0x51')],'sumBillable':_0x5c2d9a['sumBillable'],'sumDuration':_0x5c2d9a[_0xd6f0('0x52')],'sumHoldTime':_0x5c2d9a[_0xd6f0('0x53')]||0x0,'talking':_0x5c2d9a[_0xd6f0('0x54')],'total':_0x5c2d9a[_0xd6f0('0x55')],'type':_0x5c2d9a['type'],'unmanaged':_0x5c2d9a[_0xd6f0('0x56')],'abandoned':_0x5c2d9a[_0xd6f0('0x57')],'waiting':_0x5c2d9a[_0xd6f0('0x58')],'loggedInDb':_0x5c2d9a[_0xd6f0('0x59')],'dialActive':_0x5c2d9a[_0xd6f0('0x5a')],'dialMethod':_0x5c2d9a['dialMethod'],'dialOriginateCallerIdName':_0x5c2d9a[_0xd6f0('0x5b')],'dialOriginateCallerIdNumber':_0x5c2d9a[_0xd6f0('0x5c')],'dialOriginateTimeout':_0x5c2d9a[_0xd6f0('0x5d')],'dialPrefix':_0x5c2d9a['dialPrefix'],'outboundAnswerAgiCallsDay':_0x5c2d9a[_0xd6f0('0x5e')],'outboundAnswerCallsDay':_0x5c2d9a[_0xd6f0('0x5f')],'outboundBlacklistCallsDay':_0x5c2d9a['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x5c2d9a['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x5c2d9a[_0xd6f0('0x60')],'outboundDropCallsDayACS':_0x5c2d9a[_0xd6f0('0x61')],'outboundDropCallsDayCallersExit':_0x5c2d9a[_0xd6f0('0x62')],'outboundDropCallsDayTimeout':_0x5c2d9a['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x5c2d9a[_0xd6f0('0x63')],'outboundNoSuchCallsDay':_0x5c2d9a[_0xd6f0('0x64')],'outboundOriginateFailureCallsDay':_0x5c2d9a['outboundOriginateFailureCallsDay'],'outboundReCallsDay':_0x5c2d9a[_0xd6f0('0x65')],'outboundRejectCallsDay':_0x5c2d9a[_0xd6f0('0x66')],'outboundUnknownCallsDay':_0x5c2d9a[_0xd6f0('0x67')],'predictiveIntervalAnsweredCalls':_0x5c2d9a[_0xd6f0('0x68')],'predictiveIntervalAvgHoldtime':_0x5c2d9a['predictiveIntervalAvgHoldtime'],'predictiveIntervalAvgTalktime':_0x5c2d9a[_0xd6f0('0x69')],'predictiveIntervalDroppedCallsCallersExit':_0x5c2d9a[_0xd6f0('0x6a')],'predictiveIntervalDroppedCallsTimeout':_0x5c2d9a[_0xd6f0('0x6b')],'predictiveIntervalErlangCalls':_0x5c2d9a[_0xd6f0('0x6c')],'predictiveIntervalErlangCallsDroppedCalls':_0x5c2d9a[_0xd6f0('0x6d')],'predictiveIntervalHitRate':_0x5c2d9a[_0xd6f0('0x6e')],'predictiveIntervalMultiplicativeFactor':_0x5c2d9a[_0xd6f0('0x6f')],'predictiveIntervalPauses':_0x5c2d9a[_0xd6f0('0x70')],'predictiveIntervalAvailable':_0x5c2d9a['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x5c2d9a[_0xd6f0('0x71')],'message':_0x5c2d9a[_0xd6f0('0x3e')],'originated':_0x5c2d9a['originated'],'erlangCalls':_0x5c2d9a[_0xd6f0('0x72')],'erlangCallToSecond':_0x5c2d9a[_0xd6f0('0x73')],'erlangAbandonmentRate':_0x5c2d9a[_0xd6f0('0x74')],'erlangBusyFactor':_0x5c2d9a[_0xd6f0('0x75')],'startPredictive':_0x5c2d9a['startPredictive'],'startProgressive':_0x5c2d9a[_0xd6f0('0x2b')]};if(_0x5c2d9a[_0xd6f0('0x76')]){_0x2def01['Trunk']={'id':_0x5c2d9a['Trunk']['id'],'name':_0x5c2d9a[_0xd6f0('0x76')]['name'],'active':_0x5c2d9a[_0xd6f0('0x76')][_0xd6f0('0x77')],'callerid':_0x5c2d9a[_0xd6f0('0x76')]['callerid']};}if(_0x5c2d9a[_0xd6f0('0x44')]){_0x2def01[_0xd6f0('0x44')]={'id':_0x5c2d9a[_0xd6f0('0x44')]['id'],'name':_0x5c2d9a[_0xd6f0('0x44')][_0xd6f0('0x40')]};}var _0x4c42ce=md5(JSON[_0xd6f0('0x78')](_0x2def01));if(_0x5c2d9a['md5']!==_0x4c42ce){_0x5c2d9a[_0xd6f0('0x79')]=_0x4c42ce;emit(util[_0xd6f0('0x7a')](_0xd6f0('0x7b'),_0x2def01[_0xd6f0('0x40')]),'voice_queue:save',_0x2def01);}}}function emitCampaignSummary(_0x5ceb6b){if(_0x5ceb6b[_0xd6f0('0x7c')]===_0xd6f0('0x7d')){emit(util['format'](_0xd6f0('0x7e'),_0x5ceb6b['name']),_0xd6f0('0x7f'),_0x5ceb6b);}}function checkGetDataPredictive(_0x3cbbbd){if(isNotNull(_0x3cbbbd)&&!_[_0xd6f0('0x80')](_0x3cbbbd)){loggerPredictive[_0xd6f0('0x81')](_0xd6f0('0x82'));loggerPredictive['info'](_0xd6f0('0x83'),_0x3cbbbd[_0xd6f0('0x71')]);loggerPredictive[_0xd6f0('0x81')](_0xd6f0('0x84'),_0x3cbbbd[_0xd6f0('0x68')]);loggerPredictive[_0xd6f0('0x81')](_0xd6f0('0x85'),_0x3cbbbd[_0xd6f0('0x6b')]);loggerPredictive['info'](_0xd6f0('0x86'),_0x3cbbbd[_0xd6f0('0x6a')]);loggerPredictive[_0xd6f0('0x81')](_0xd6f0('0x87'),_0x3cbbbd[_0xd6f0('0x88')]);loggerPredictive[_0xd6f0('0x81')](_0xd6f0('0x89'),_0x3cbbbd[_0xd6f0('0x69')]);loggerPredictive[_0xd6f0('0x81')]('---------------------------');if(_0x3cbbbd[_0xd6f0('0x71')]>0x0){if(!_['isUndefined'](_0x3cbbbd['predictiveIntervalAvgTalktime'])&&_0x3cbbbd[_0xd6f0('0x69')]>0x0){return!![];}loggerPredictive['info']('Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive');if(!_[_0xd6f0('0x3d')](_0x3cbbbd[_0xd6f0('0x88')])&&_0x3cbbbd[_0xd6f0('0x88')]>0x0){return!![];}loggerPredictive['info'](_0xd6f0('0x8a'));}else{loggerPredictive[_0xd6f0('0x81')](_0xd6f0('0x8b'));}}else{loggerPredictive['info'](_0xd6f0('0x8c'));}return![];}function mergeDataErlangB(_0x357193){return function(_0x498ca5){loggerPredictive[_0xd6f0('0x81')](_0xd6f0('0x8d'));loggerPredictive['info'](_0xd6f0('0x8e'),_0x498ca5[_0xd6f0('0x72')]);loggerPredictive[_0xd6f0('0x81')](_0xd6f0('0x8f'),_0x498ca5[_0xd6f0('0x73')]);loggerPredictive['info'](_0xd6f0('0x90'),_0x498ca5[_0xd6f0('0x74')]);loggerPredictive['info'](_0xd6f0('0x91'),_0x498ca5[_0xd6f0('0x75')]);loggerPredictive[_0xd6f0('0x81')]('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x498ca5[_0xd6f0('0x74')]);loggerPredictive['info']('---------------------------');_['merge'](_0x357193,_0x498ca5);};}function getDiff(_0x5c5aa4){var _0x311140=moment()[_0xd6f0('0x49')](0x0);var _0x1a8984=moment(_0x5c5aa4)[_0xd6f0('0x49')](0x0);return _0x311140['diff'](_0x1a8984,_0xd6f0('0x92'));}function ifInterval(_0x5a6ee0,_0x13c194){if(_[_0xd6f0('0x3d')](_0x13c194)){return![];}return getDiff(_0x13c194)<_0x5a6ee0*0x3c;}function freeVariablesPredictive(_0x2ba889){if(isNotNull(_0x2ba889)){if(!_['isUndefined'](_0x2ba889[_0xd6f0('0x2b')])){_0x2ba889[_0xd6f0('0x2b')]=undefined;loggerPredictive[_0xd6f0('0x81')](_0x2ba889[_0xd6f0('0x40')],'clearing\x20variable\x20start\x20progressive');}if(!_[_0xd6f0('0x3d')](_0x2ba889[_0xd6f0('0x93')])){_0x2ba889[_0xd6f0('0x93')]=undefined;loggerPredictive['info'](_0x2ba889[_0xd6f0('0x40')],_0xd6f0('0x94'));}if(!_[_0xd6f0('0x3d')](_0x2ba889[_0xd6f0('0x95')])){clearInterval(_0x2ba889['handlePredictive']);_0x2ba889[_0xd6f0('0x95')]=undefined;loggerPredictive[_0xd6f0('0x81')](_0x2ba889[_0xd6f0('0x40')],_0xd6f0('0x96'));}}}function erlangb(_0x49fc4a,_0x535910){if(_0x535910===0x0){return 0x0;}var _0x490bc4=0x1;for(var _0x5ed780=0x1;_0x5ed780<=_0x535910;_0x5ed780+=0x1){_0x490bc4=0x1+_0x490bc4*_0x5ed780/_0x49fc4a;}return 0x1/_0x490bc4;}function isVoiceQueueOutbound(_0x144a77){return _0x144a77===_0xd6f0('0x4c');}function isNotPreview(_0xa1ff68){return _0xa1ff68!==_0xd6f0('0x22');}function isCampaignIvr(_0x318a64){return _0x318a64===_0xd6f0('0x7d');}function getCallerId(_0x39f937,_0x1b298a,_0x1ce601){if(!_['isUndefined'](_0x1ce601)&&typeof _0x1ce601==='string'&&!_[_0xd6f0('0x80')](_0x1ce601)){if(!_['isUndefined'](_0x1b298a)&&typeof _0x1b298a===_0xd6f0('0x97')&&!_[_0xd6f0('0x80')](_0x1b298a)){return util[_0xd6f0('0x7a')](_0xd6f0('0x98'),_0x1b298a,_0x1ce601);}return util[_0xd6f0('0x7a')](_0xd6f0('0x98'),_0x1ce601,_0x1ce601);}if(!_[_0xd6f0('0x3d')](_0x39f937)&&typeof _0x39f937==='string'&&!_[_0xd6f0('0x80')](_0x39f937)){return _0x39f937;}return _0xd6f0('0x99');}function loggerCatchQueueSummary(_0x40cdae,_0x5b687f){return function(_0x20feae){freeVariablesPredictive(_0x5b687f);emitVoiceQueueSummary(_0x5b687f);emitCampaignSummary(_0x5b687f);loggerSyncQueueSummary[_0xd6f0('0x9a')](_0x40cdae,util['inspect'](_0x20feae,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0xad50ac,_0x80f21c){return function(_0x1bf313){loggerPredictive[_0xd6f0('0x9a')](_0x80f21c[_0xd6f0('0x40')],_0xad50ac);loggerPredictive[_0xd6f0('0x9a')](_0x1bf313[_0xd6f0('0x9b')]);freeVariablesPredictive(_0x80f21c);};}function loggerCatch(_0x2efbad){return function(_0x3502ea){logger['error'](_0x2efbad,util[_0xd6f0('0x9c')](_0x3502ea,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x205b6a){return _0x205b6a&&!_[_0xd6f0('0x3d')](_0x205b6a)&&_0x205b6a[_0xd6f0('0x9d')]>0x0;}function decremetOriginate(_0x5f1321){if(!_[_0xd6f0('0x3d')](_0x5f1321)&&_0x5f1321!==null){if(typeof _0x5f1321[_0xd6f0('0x9e')]!==_0xd6f0('0x9f')){if(_0x5f1321[_0xd6f0('0x9e')]>0x0){_0x5f1321[_0xd6f0('0x9e')]-=0x1;}else{logger[_0xd6f0('0x9a')](_0xd6f0('0xa0'));}}}else{logger[_0xd6f0('0x9a')](_0xd6f0('0xa1'));}}function checkContactLowerLimitOriginate(_0x1d8221,_0x5df593,_0x440d5c){if(_0x5df593>_0x440d5c){for(var _0x16c255=0x0;_0x16c255<_0x5df593-_0x440d5c;_0x16c255+=0x1){decremetOriginate(_0x1d8221);}}}function loggerGetContactDialer(_0x1dc77c,_0x580c93,_0x12a37c){return function(_0x2b5411){checkContactLowerLimitOriginate(_0x580c93,_0x12a37c,0x0);logger[_0xd6f0('0x9a')](_0x1dc77c,util[_0xd6f0('0x9c')](_0x2b5411,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x2f6b18){return function(_0xa41e33){if(isNotNull(_0xa41e33)&&isNotNull(_0xa41e33[0x0])){if(_0xa41e33[0x0][_0xd6f0('0xa2')]>0x0){_0x2f6b18[_0xd6f0('0x3e')]=_0xd6f0('0xa3');logger[_0xd6f0('0x81')](_0xd6f0('0xa4')+_0x2f6b18['name'],_0xa41e33[0x0]['contactsRescheduled'],_0xd6f0('0xa5'));}else{_0x2f6b18[_0xd6f0('0x3e')]=_0xd6f0('0xa6');logger[_0xd6f0('0x81')](_0xd6f0('0xa7')+_0x2f6b18['name']);}}};}function notSendMessagesQueue(_0x15143a){if(_0x15143a[_0xd6f0('0xa8')]){freeVariablesPredictive(_0x15143a);if(_0x15143a['originated']===0x0&&_0x15143a[_0xd6f0('0x54')]===0x0&&_0x15143a['waiting']===0x0&&(_0x15143a[_0xd6f0('0x51')]||0x0)===0x0){_0x15143a[_0xd6f0('0xa8')]=![];_0x15143a[_0xd6f0('0x4f')]=0x0;_0x15143a[_0xd6f0('0x3e')]=_0xd6f0('0x42');loggerSyncQueueSummary['error']('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x15143a[_0xd6f0('0x40')],_0xd6f0('0xa9'));}else{_0x15143a['message']=_0xd6f0('0xaa');loggerSyncQueueSummary['error']('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x15143a[_0xd6f0('0x40')],'is\x20disactive');}emitVoiceQueueSummary(_0x15143a);}}function notSendMessagesCampaign(_0x5dc1c7){if(_0x5dc1c7['sendMessageOneNotActive']){if(_0x5dc1c7['originated']===0x0){_0x5dc1c7[_0xd6f0('0xa8')]=![];_0x5dc1c7[_0xd6f0('0x3e')]=_0xd6f0('0x42');loggerSyncQueueSummary[_0xd6f0('0x9a')](_0xd6f0('0xab'),_0x5dc1c7[_0xd6f0('0x40')],_0xd6f0('0xa9'));}else{_0x5dc1c7[_0xd6f0('0x3e')]=_0xd6f0('0xaa');loggerSyncQueueSummary['error'](_0xd6f0('0xab'),_0x5dc1c7['name'],'is\x20disactive');}emitCampaignSummary(_0x5dc1c7);}}function createObjHistory(_0x1309d9,_0x83913c,_0x397f2c,_0x54aea7,_0x12e166){_0x1309d9[_0xd6f0('0x3e')]=_0x397f2c;var _0xc0585c=new Action(_0x1309d9,_0x83913c);var _0xf7ade1=new History(_0xc0585c);_0xf7ade1[_0xd6f0('0xac')]=_0x54aea7;_0xf7ade1[_0xd6f0('0xad')]=_0x12e166;_0xf7ade1[_0xd6f0('0xae')]=_0xc0585c[_0xd6f0('0xaf')];return _0xf7ade1;}Dialer['prototype'][_0xd6f0('0x3c')]=function(){var _0x37a29b=this;setInterval(function(){_0x37a29b['clearZombieChannels'](_0x37a29b[_0xd6f0('0x29')],_0xd6f0('0xb0'));_0x37a29b[_0xd6f0('0xb1')](_0x37a29b[_0xd6f0('0xb2')],_0xd6f0('0xb3'));},0x32c8);};Dialer[_0xd6f0('0x1d')][_0xd6f0('0xb1')]=function(_0x51aa88,_0x2de847){var _0x24c31d=this;for(var _0x5c3659 in _0x51aa88){if(typeof _0x51aa88[_0x5c3659]!=='undefined'){this['sequence']['enqueue'](function(){if(!_[_0xd6f0('0xb4')](_0x51aa88[_0x5c3659])){return ami[_0xd6f0('0xb5')]({'action':_0xd6f0('0xb6'),'channel':_0x51aa88[_0x5c3659][_0xd6f0('0xb7')]})[_0xd6f0('0xb8')](function(_0x48d87d){if(_0x48d87d['message']===_0xd6f0('0xb9')){setTimeout(function(){if(_0x51aa88[_0x5c3659]&&_0x51aa88[_0x5c3659][_0xd6f0('0x7c')]!==_0xd6f0('0x7d')){_0x24c31d[_0xd6f0('0xba')](_0x24c31d['voiceQueues'][_0x51aa88[_0x5c3659][_0xd6f0('0xbb')]]);logger['error'](_0xd6f0('0xbc'),_0x2de847,_0x5c3659,_0x51aa88[_0x5c3659]['queue']);delete _0x51aa88[_0x5c3659];}if(_0x51aa88[_0x5c3659]&&_0x51aa88[_0x5c3659][_0xd6f0('0x7c')]===_0xd6f0('0x7d')){_0x24c31d['updateOriginated'](_0x24c31d[_0xd6f0('0x24')][_0x51aa88[_0x5c3659][_0xd6f0('0xbb')]]);logger[_0xd6f0('0x9a')](_0xd6f0('0xbd'),_0x2de847,_0x5c3659,_0x51aa88[_0x5c3659][_0xd6f0('0xbb')]);delete _0x51aa88[_0x5c3659];}},0x2328);}});}});}}};Dialer[_0xd6f0('0x1d')][_0xd6f0('0xbe')]=function(_0xb9ee3a){return BPromise[_0xd6f0('0xbf')]()[_0xd6f0('0xc0')](cmHopper[_0xd6f0('0xbe')](_0xb9ee3a))[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0xc1')));};Dialer[_0xd6f0('0x1d')]['checkIsBlackList']=function(_0x119865){return BPromise[_0xd6f0('0xbf')]()[_0xd6f0('0xc0')](cmHopperBlack[_0xd6f0('0xc2')](_0x119865))[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0xc3')));};Dialer[_0xd6f0('0x1d')][_0xd6f0('0xc4')]=function(_0x5d0600){return BPromise[_0xd6f0('0xbf')]()[_0xd6f0('0xc0')](cmHopperBlack[_0xd6f0('0xc4')](_0x5d0600))[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0xc5')));};Dialer['prototype']['averageHandleTime']=function(_0x2638c3){return BPromise[_0xd6f0('0xbf')]()[_0xd6f0('0xc0')](cmHopperHistory[_0xd6f0('0xc6')](_0x2638c3))[_0xd6f0('0xb8')](loggerCatch('[averageHandleTime]\x20'));};Dialer[_0xd6f0('0x1d')][_0xd6f0('0xc7')]=function(_0x2d0d8a){return BPromise[_0xd6f0('0xbf')]()['then'](cmHopper[_0xd6f0('0xc7')](_0x2d0d8a))[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0xc8')));};Dialer[_0xd6f0('0x1d')][_0xd6f0('0xc9')]=function(_0x229631,_0x50d310,_0x585495){return BPromise[_0xd6f0('0xbf')]()['then'](cmHopper[_0xd6f0('0xc9')](_0x229631,_0x50d310,_0x585495))['catch'](loggerCatch(_0xd6f0('0xca')));};Dialer[_0xd6f0('0x1d')]['getContactDialer']=function(_0x3bf3b9,_0x5cc944,_0x2cec2b,_0x1756c,_0x65b7c){return BPromise[_0xd6f0('0xbf')]()['then'](cmHopper[_0xd6f0('0xcb')](_0x3bf3b9,_0x5cc944,_0x2cec2b,_0x1756c))[_0xd6f0('0xb8')](function(_0x2f64f1){_0x65b7c['temp']-=_0x2cec2b;_0x65b7c[_0xd6f0('0xcc')]=_0x65b7c[_0xd6f0('0xcc')]>0x0?_0x65b7c[_0xd6f0('0xcc')]:0x0;loggerCatch('[getContactDialer]\x20')(_0x2f64f1);});};Dialer['prototype'][_0xd6f0('0xcd')]=function(_0x22c3fa,_0x42b756,_0x4b113a,_0x40d4b3){return BPromise[_0xd6f0('0xbf')]()[_0xd6f0('0xc0')](cmHopper[_0xd6f0('0xcd')](_0x22c3fa,_0x42b756,_0x4b113a))[_0xd6f0('0xb8')](function(_0x37ad52){_0x40d4b3[_0xd6f0('0xcc')]-=_0x42b756;_0x40d4b3['temp']=_0x40d4b3[_0xd6f0('0xcc')]>0x0?_0x40d4b3['temp']:0x0;loggerCatch(_0xd6f0('0xce'))(_0x37ad52);});};Dialer[_0xd6f0('0x1d')][_0xd6f0('0xcf')]=function(_0x4f5f39){return BPromise[_0xd6f0('0xbf')]()['then'](voiceQueueRt['getVoiceQueueRtPauses'](_0x4f5f39))[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0xd0')));};Dialer[_0xd6f0('0x1d')]['moveContactManagedDialer']=function(_0x446896){return BPromise['resolve']()['then'](cmHopper[_0xd6f0('0xd1')](_0x446896))[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0xd2')));};Dialer[_0xd6f0('0x1d')][_0xd6f0('0xd3')]=function(_0x468cf5){return BPromise['resolve']()[_0xd6f0('0xc0')](cmHopperHistory['createHistory'](_0x468cf5))[_0xd6f0('0xb8')](loggerCatch('[createHistory]\x20'));};Dialer[_0xd6f0('0x1d')][_0xd6f0('0xba')]=function(_0x58c187){if(!_[_0xd6f0('0x3d')](_0x58c187)&&_0x58c187!==null){if(typeof _0x58c187[_0xd6f0('0x9e')]!==_0xd6f0('0x9f')){if(_0x58c187[_0xd6f0('0x9e')]>0x0){_0x58c187[_0xd6f0('0x9e')]-=0x1;}else{logger[_0xd6f0('0x9a')](_0xd6f0('0xd4'));}}}else{logger[_0xd6f0('0x9a')]('[updateOriginated]\x20is\x20null\x20or\x20undefined');}};Dialer[_0xd6f0('0x1d')][_0xd6f0('0xd5')]=function(_0x529c3d,_0x282736){var _0x527e05=this;return function(_0x1f980f){_0x527e05[_0xd6f0('0xba')](_0x282736);logger[_0xd6f0('0x9a')](_0x529c3d,util[_0xd6f0('0x9c')](_0x1f980f,{'showHidden':![],'depth':null}));};};Dialer['prototype']['emptyContact']=function(_0x3638b7,_0x16160d,_0xe96c8a){var _0xf5b37a={'state':0x19,'statedesc':_0xd6f0('0xd6')};this[_0xd6f0('0xba')](_0x16160d);this[_0xd6f0('0xd7')](_['merge'](_0xf5b37a,_[_0xd6f0('0xd8')](_0xe96c8a,[_0xd6f0('0xd9'),_0xd6f0('0xda'),_0xd6f0('0xdb'),'VoiceQueueId',_0xd6f0('0xdc')])),'[emptyContact][createHistory]','[emptyContact]');logger[_0xd6f0('0x9a')](_0x3638b7);};Dialer['prototype'][_0xd6f0('0xdd')]=function(_0x3e799e){return _0x3e799e===_0xd6f0('0xde');};Dialer[_0xd6f0('0x1d')][_0xd6f0('0xdf')]=function(_0x2c25b4){return!_[_0xd6f0('0x3d')](_0x2c25b4)&&_0x2c25b4&&!_['isUndefined'](_0x2c25b4[_0xd6f0('0x40')])&&!_[_0xd6f0('0x3d')](_0x2c25b4[_0xd6f0('0x77')])&&_0x2c25b4['active']&&(this[_0xd6f0('0x26')][util[_0xd6f0('0x7a')](_0xd6f0('0xe0'),_0x2c25b4[_0xd6f0('0x40')])]['status']===_0xd6f0('0xe1')||this['trunks'][util[_0xd6f0('0x7a')]('SIP/%s',_0x2c25b4[_0xd6f0('0x40')])][_0xd6f0('0xb6')]===_0xd6f0('0xe2'));};Dialer[_0xd6f0('0x1d')][_0xd6f0('0xd7')]=function(_0xb997e1,_0x238663,_0x49c544){this['createHistory'](_0xb997e1)[_0xd6f0('0xb8')](loggerCatch(_0x238663));this['moveContactManagedDialer'](_0xb997e1)[_0xd6f0('0xb8')](loggerCatch(_0x49c544));};Dialer[_0xd6f0('0x1d')][_0xd6f0('0x38')]=function(_0x2bae25){var _0x961e4f=this[_0xd6f0('0x29')][_0x2bae25[_0xd6f0('0xe3')]];var _0x83b80a;if(!_[_0xd6f0('0xb4')](_0x2bae25)&&!_[_0xd6f0('0xb4')](_0x2bae25[_0xd6f0('0xe4')])&&!_['isNil'](_0x2bae25[_0xd6f0('0xe4')]['amdstatus'])&&_0x2bae25[_0xd6f0('0xe5')]===_0xd6f0('0xe6')&&_0x961e4f){if(_0x961e4f['type']!==_0xd6f0('0x7d')&&this[_0xd6f0('0x23')][_0x961e4f[_0xd6f0('0xbb')]][_0xd6f0('0xe7')]&&_0x2bae25[_0xd6f0('0xe8')]===_0xd6f0('0xe9')){delete this[_0xd6f0('0x29')][_0x2bae25[_0xd6f0('0xe3')]];this[_0xd6f0('0xba')](this['voiceQueues'][_0x961e4f[_0xd6f0('0xbb')]]);this[_0xd6f0('0x23')][_0x961e4f['queue']][_0xd6f0('0x5f')]+=0x1;this['voiceQueues'][_0x961e4f['queue']]['outboundAnswerAgiCallsDay']+=0x1;_0x83b80a=new Hangup(_0x961e4f,_0x2bae25);_0x83b80a[_0xd6f0('0xac')]=0x12;_0x83b80a[_0xd6f0('0xad')]='HangupInAMD';_0x83b80a[_0xd6f0('0xea')]=_0xd6f0('0xeb');ami[_0xd6f0('0x4b')](_0xd6f0('0xec'),ut[_0xd6f0('0xed')](_0x83b80a,_0xd6f0('0xee')));this[_0xd6f0('0xd7')](_0x83b80a,_0xd6f0('0xef'),'[syncHangupInAMD]');}if(_0x961e4f[_0xd6f0('0x7c')]!==_0xd6f0('0x7d')&&this['voiceQueues'][_0x961e4f[_0xd6f0('0xbb')]]['dialAMDActive']&&_0x2bae25[_0xd6f0('0xe8')]===_0xd6f0('0xf0')){var _0xa3546a=this;return new BPromise(function(_0x405d56,_0x5a7129){delete _0xa3546a[_0xd6f0('0x29')][_0x2bae25['uniqueid']];_0xa3546a['updateOriginated'](_0xa3546a[_0xd6f0('0x23')][_0x961e4f[_0xd6f0('0xbb')]]);_0xa3546a[_0xd6f0('0x23')][_0x961e4f['queue']][_0xd6f0('0x5f')]+=0x1;_0xa3546a[_0xd6f0('0x23')][_0x961e4f[_0xd6f0('0xbb')]][_0xd6f0('0x5e')]+=0x1;var _0x259b01=_0xa3546a['voiceQueues'][_0x961e4f[_0xd6f0('0xbb')]];var _0x265fd4=new Hangup(_0x961e4f,_0x2bae25);_0x265fd4['state']=0x13;_0x265fd4[_0xd6f0('0xad')]='Machine';_0x265fd4[_0xd6f0('0xea')]=_0xd6f0('0xeb');_0x265fd4[_0xd6f0('0xf1')]+=0x1;_0x265fd4[_0xd6f0('0xf2')]+=0x1;_0x265fd4[_0xd6f0('0xee')]=!![];ami[_0xd6f0('0x4b')](_0xd6f0('0xec'),ut['buildObj'](_0x265fd4,'amd'));_0xa3546a[_0xd6f0('0xd3')](_0x265fd4)['catch'](loggerCatch(_0xd6f0('0xf3')));if(_0x265fd4[_0xd6f0('0xf4')]+_0x265fd4[_0xd6f0('0xf5')]+_0x265fd4['countnoanswerretry']+_0x265fd4[_0xd6f0('0xf6')]+_0x265fd4['countdropretry']+_0x265fd4[_0xd6f0('0xf7')]+_0x265fd4[_0xd6f0('0xf1')]+_0x265fd4['countagentrejectretry']>=_0x259b01[_0xd6f0('0xf8')]){_0xa3546a[_0xd6f0('0xf9')](_0x265fd4,_0x405d56,_0x5a7129,'reason19\x20machine....');}else{if(_0x265fd4['countmachineretry']>=_0x259b01['dialMachineMaxRetry']){_0xa3546a[_0xd6f0('0xfa')](_0x265fd4,_0x405d56,_0x5a7129,_0xd6f0('0xfb'));}else{_0xa3546a[_0xd6f0('0xc7')]({'active':![],'countmachineretry':_0x265fd4[_0xd6f0('0xf1')],'scheduledat':moment()[_0xd6f0('0xfc')](_0x259b01['dialMachineRetryFrequency'],_0xd6f0('0xfd'))[_0xd6f0('0x7a')](_0xd6f0('0xfe')),'ContactId':_0x265fd4[_0xd6f0('0xd9')],'ListId':_0x265fd4[_0xd6f0('0xda')],'VoiceQueueId':_0x265fd4[_0xd6f0('0xff')]||undefined,'CampaignId':_0x265fd4[_0xd6f0('0xdc')]||undefined})[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0x100')));_0x405d56({'reschedule':0x1});}}});}if(_0x961e4f[_0xd6f0('0x7c')]===_0xd6f0('0x7d')&&this[_0xd6f0('0x24')][_0x961e4f[_0xd6f0('0xbb')]][_0xd6f0('0xe7')]&&_0x2bae25['value']==='HANGUP'){delete this[_0xd6f0('0x29')][_0x2bae25[_0xd6f0('0xe3')]];this['updateOriginated'](this[_0xd6f0('0x24')][_0x961e4f[_0xd6f0('0xbb')]]);_0x83b80a=new Hangup(_0x961e4f,_0x2bae25);_0x83b80a[_0xd6f0('0xac')]=0x12;_0x83b80a[_0xd6f0('0xad')]=_0xd6f0('0x101');_0x83b80a[_0xd6f0('0xea')]=_0xd6f0('0xeb');ami['emit'](_0xd6f0('0xec'),ut[_0xd6f0('0xed')](_0x83b80a,_0xd6f0('0xee')));this[_0xd6f0('0xd7')](_0x83b80a,'[syncHangupInAMDIvr][createHistory]',_0xd6f0('0x102'));}if(_0x961e4f[_0xd6f0('0x7c')]===_0xd6f0('0x7d')&&this['campaigns'][_0x961e4f[_0xd6f0('0xbb')]]['dialAMDActive']&&_0x2bae25[_0xd6f0('0xe8')]===_0xd6f0('0xf0')){var _0xa3546a=this;return new BPromise(function(_0x2aa249,_0x356b9b){delete _0xa3546a[_0xd6f0('0x29')][_0x2bae25[_0xd6f0('0xe3')]];_0xa3546a[_0xd6f0('0xba')](_0xa3546a[_0xd6f0('0x24')][_0x961e4f[_0xd6f0('0xbb')]]);_0xa3546a[_0xd6f0('0x24')][_0x961e4f[_0xd6f0('0xbb')]][_0xd6f0('0x5f')]+=0x1;_0xa3546a[_0xd6f0('0x24')][_0x961e4f[_0xd6f0('0xbb')]][_0xd6f0('0x5e')]+=0x1;var _0x482248=_0xa3546a[_0xd6f0('0x24')][_0x961e4f[_0xd6f0('0xbb')]];var _0x31d723=new Hangup(_0x961e4f,_0x2bae25);_0x31d723[_0xd6f0('0xac')]=0x13;_0x31d723['statedesc']=_0xd6f0('0x103');_0x31d723['membername']='AMD';_0x31d723[_0xd6f0('0xf1')]+=0x1;_0x31d723['countglobal']+=0x1;_0x31d723[_0xd6f0('0xee')]=!![];ami[_0xd6f0('0x4b')](_0xd6f0('0xec'),ut['buildObj'](_0x31d723,_0xd6f0('0xee')));_0xa3546a['createHistory'](_0x31d723)[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0xf3')));if(_0x31d723[_0xd6f0('0xf4')]+_0x31d723['countcongestionretry']+_0x31d723[_0xd6f0('0x104')]+_0x31d723[_0xd6f0('0xf6')]+_0x31d723[_0xd6f0('0x105')]+_0x31d723[_0xd6f0('0xf7')]+_0x31d723[_0xd6f0('0xf1')]+_0x31d723[_0xd6f0('0x106')]>=_0x482248['dialGlobalMaxRetry']){_0xa3546a[_0xd6f0('0xf9')](_0x31d723,_0x2aa249,_0x356b9b,_0xd6f0('0x107'));}else{if(_0x31d723[_0xd6f0('0xf1')]>=_0x482248[_0xd6f0('0x108')]){_0xa3546a['createStateFinal'](_0x31d723,_0x2aa249,_0x356b9b,_0xd6f0('0xfb'));}else{_0xa3546a['rescheduleContact']({'active':![],'countmachineretry':_0x31d723[_0xd6f0('0xf1')],'scheduledat':moment()['add'](_0x482248['dialMachineRetryFrequency'],_0xd6f0('0xfd'))[_0xd6f0('0x7a')](_0xd6f0('0xfe')),'ContactId':_0x31d723['ContactId'],'ListId':_0x31d723[_0xd6f0('0xda')],'VoiceQueueId':_0x31d723['VoiceQueueId']||undefined,'CampaignId':_0x31d723[_0xd6f0('0xdc')]||undefined})[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0x100')));_0x2aa249({'reschedule':0x1});}}});}}};Dialer[_0xd6f0('0x1d')][_0xd6f0('0x34')]=function(_0x33a5c9){var _0x3cdcf1=this[_0xd6f0('0x29')][_0x33a5c9[_0xd6f0('0xe3')]];var _0x148bf3=this;var _0x26a9ef;if(_0x3cdcf1&&_0x3cdcf1[_0xd6f0('0x7c')]==='ivr'){delete this['uniqueId'][_0x33a5c9[_0xd6f0('0xe3')]];this[_0xd6f0('0xba')](this[_0xd6f0('0x24')][_0x3cdcf1[_0xd6f0('0xbb')]]);this['campaigns'][_0x3cdcf1[_0xd6f0('0xbb')]]['ivrAnswerCallsDay']+=0x1;_0x26a9ef=new Hangup(_0x3cdcf1,_0x33a5c9);this[_0xd6f0('0xd3')](_0x26a9ef)[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0x109')));this[_0xd6f0('0xd1')](_0x26a9ef)[_0xd6f0('0xb8')](loggerCatch('[syncHangupIvr]'));}if(_0x3cdcf1&&_0x3cdcf1[_0xd6f0('0x7c')]!==_0xd6f0('0x7d')&&isNotNull(this['voiceQueues'][_0x3cdcf1[_0xd6f0('0xbb')]][_0xd6f0('0x10a')])){delete this[_0xd6f0('0x29')][_0x33a5c9[_0xd6f0('0xe3')]];this['updateOriginated'](this['voiceQueues'][_0x3cdcf1[_0xd6f0('0xbb')]]);this[_0xd6f0('0x23')][_0x3cdcf1[_0xd6f0('0xbb')]][_0xd6f0('0x5f')]+=0x1;this[_0xd6f0('0x23')][_0x3cdcf1[_0xd6f0('0xbb')]][_0xd6f0('0x5e')]+=0x1;_0x26a9ef=new Hangup(_0x3cdcf1,_0x33a5c9);_0x26a9ef[_0xd6f0('0xac')]=0x10;_0x26a9ef['statedesc']=_0xd6f0('0x10b');_0x26a9ef[_0xd6f0('0xea')]=_0xd6f0('0x10c');this[_0xd6f0('0xd3')](_0x26a9ef)[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0x109')));this[_0xd6f0('0xd1')](_0x26a9ef)[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0x10d')));}if(_0x3cdcf1&&_0x3cdcf1[_0xd6f0('0x7c')]!==_0xd6f0('0x7d')&&!isNotNull(this['voiceQueues'][_0x3cdcf1['queue']][_0xd6f0('0x10a')])){delete this['uniqueId'][_0x33a5c9[_0xd6f0('0xe3')]];this[_0xd6f0('0xba')](this[_0xd6f0('0x23')][_0x3cdcf1[_0xd6f0('0xbb')]]);this[_0xd6f0('0x23')][_0x3cdcf1[_0xd6f0('0xbb')]][_0xd6f0('0x67')]+=0x1;_0x26a9ef=new Hangup(_0x3cdcf1,_0x33a5c9);_0x26a9ef['state']=0xc;_0x26a9ef[_0xd6f0('0xad')]=_0x33a5c9[_0xd6f0('0x10e')];_0x26a9ef[_0xd6f0('0xea')]='Unknow';this['createHistory'](_0x26a9ef)[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0x109')));this[_0xd6f0('0xd1')](_0x26a9ef)[_0xd6f0('0xb8')](loggerCatch('[syncHangupIvr]'));}};Dialer[_0xd6f0('0x1d')][_0xd6f0('0x10f')]=function(_0x5a4203){var _0x2b98f4=this[_0xd6f0('0x29')][_0x5a4203[_0xd6f0('0xe3')]];var _0xb2bce6=this;if(this['voiceQueues'][_0x5a4203[_0xd6f0('0xbb')]]){if(_0x2b98f4&&_0x2b98f4[_0xd6f0('0x7c')]!=='ivr'){delete this['uniqueId'][_0x5a4203[_0xd6f0('0xe3')]];this[_0xd6f0('0x23')][_0x5a4203[_0xd6f0('0xbb')]][_0xd6f0('0x5f')]+=0x1;var _0x1acefc=new AgentComplete(_0x2b98f4,_0x5a4203);if(_0x5a4203[_0xd6f0('0x110')]===_0xd6f0('0x111')){_0x1acefc[_0xd6f0('0x112')]=this[_0xd6f0('0x23')][_0x5a4203[_0xd6f0('0xbb')]]['dialQueueProject2']&&this[_0xd6f0('0x23')][_0x5a4203[_0xd6f0('0xbb')]][_0xd6f0('0x113')]?moment()[_0xd6f0('0x7a')](_0xd6f0('0xfe')):undefined;}this[_0xd6f0('0xd3')](_0x1acefc)['catch'](loggerCatch('[syncAgentComplete][createHistory]'));this[_0xd6f0('0xd1')](_0x1acefc)[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0x114')));}}};Dialer[_0xd6f0('0x1d')]['syncAgentConnect']=function(_0x477673){if(this[_0xd6f0('0x23')][_0x477673[_0xd6f0('0xbb')]]){if(this[_0xd6f0('0x29')][_0x477673[_0xd6f0('0xe3')]]&&this['uniqueId'][_0x477673[_0xd6f0('0xe3')]][_0xd6f0('0x7c')]!=='ivr'){this[_0xd6f0('0xba')](this[_0xd6f0('0x23')][_0x477673['queue']]);this[_0xd6f0('0x29')][_0x477673[_0xd6f0('0xe3')]][_0xd6f0('0x115')]=moment()[_0xd6f0('0x7a')](_0xd6f0('0xfe'));}}};Dialer[_0xd6f0('0x1d')][_0xd6f0('0x116')]=function(_0x3c1e84){this[_0xd6f0('0xd3')](_0x3c1e84)[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0x117')));this['moveContactManagedDialer'](_0x3c1e84)[_0xd6f0('0xb8')](loggerCatch('[syncQueueCallerAbandon]\x20[Drop]'));};Dialer[_0xd6f0('0x1d')][_0xd6f0('0x30')]=function(_0x336cba){var _0x585084=this[_0xd6f0('0x29')][_0x336cba[_0xd6f0('0xe3')]];var _0x3ddd4b=this;if(this[_0xd6f0('0x23')][_0x336cba[_0xd6f0('0xbb')]]){if(_0x585084&&_0x585084['type']!=='ivr'){delete this[_0xd6f0('0x29')][_0x336cba[_0xd6f0('0xe3')]];this[_0xd6f0('0xba')](this[_0xd6f0('0x23')][_0x336cba[_0xd6f0('0xbb')]]);_0x585084[_0xd6f0('0x118')]=moment()[_0xd6f0('0x7a')](_0xd6f0('0xfe'));var _0x4a5407=new QueueCallerAbandon(_0x585084,_0x336cba);if(getSeconds(_0x585084['droptime'],_0x585084['responsetime'])>=_0x585084[_0xd6f0('0x119')]){this['voiceQueues'][_0x336cba[_0xd6f0('0xbb')]][_0xd6f0('0x6b')]+=0x1;this[_0xd6f0('0x23')][_0x336cba[_0xd6f0('0xbb')]][_0xd6f0('0x11a')]+=0x1;this[_0xd6f0('0x23')][_0x336cba[_0xd6f0('0xbb')]][_0xd6f0('0x6d')]+=0x1;_0x4a5407[_0xd6f0('0xac')]=0xa;_0x4a5407[_0xd6f0('0xad')]='Drop';_0x4a5407[_0xd6f0('0x11b')]='TIMEOUT';_0x4a5407[_0xd6f0('0x112')]=this[_0xd6f0('0x23')][_0x336cba['queue']][_0xd6f0('0x11c')]?moment()[_0xd6f0('0x7a')](_0xd6f0('0xfe')):undefined;_0x4a5407[_0xd6f0('0x105')]+=0x1;_0x4a5407[_0xd6f0('0xf2')]+=0x1;if(_0x4a5407['countdropretry']>=this['voiceQueues'][_0x336cba['queue']]['dialDropMaxRetry']){this[_0xd6f0('0x116')](_0x4a5407);}else{this['rescheduleContact']({'active':![],'countdropretry':_0x4a5407[_0xd6f0('0x105')],'scheduledat':moment()[_0xd6f0('0xfc')](this[_0xd6f0('0x23')][_0x336cba[_0xd6f0('0xbb')]][_0xd6f0('0x11d')],_0xd6f0('0xfd'))['format'](_0xd6f0('0xfe')),'ContactId':_0x585084[_0xd6f0('0xd9')],'ListId':_0x585084[_0xd6f0('0xda')],'VoiceQueueId':_0x585084[_0xd6f0('0xff')]||undefined,'CampaignId':_0x585084[_0xd6f0('0xdc')]||undefined})[_0xd6f0('0xb8')](loggerCatch('[rescheduleContact][Drop]'));var _0x1520cc=new History(_0x4a5407);_0x1520cc[_0xd6f0('0xac')]=0xa;_0x1520cc[_0xd6f0('0xad')]='Drop';_0x1520cc[_0xd6f0('0xaf')]=moment()[_0xd6f0('0x7a')]('YYYY-MM-DD\x20HH:mm:ss');_0x1520cc[_0xd6f0('0xae')]=_0x1520cc[_0xd6f0('0xaf')];_0x1520cc[_0xd6f0('0x11e')]=_0x4a5407['calleridname'];_0x1520cc[_0xd6f0('0x11f')]=_0x4a5407[_0xd6f0('0x11f')];this[_0xd6f0('0xd3')](_0x1520cc)[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0x120')));}}else{this['voiceQueues'][_0x336cba[_0xd6f0('0xbb')]][_0xd6f0('0x6a')]+=0x1;this[_0xd6f0('0x23')][_0x336cba[_0xd6f0('0xbb')]][_0xd6f0('0x62')]+=0x1;_0x4a5407[_0xd6f0('0xac')]=0xb;_0x4a5407[_0xd6f0('0xad')]=_0xd6f0('0x121');_0x4a5407[_0xd6f0('0x11b')]=_0xd6f0('0x122');_0x4a5407[_0xd6f0('0xf7')]+=0x1;_0x4a5407['countglobal']+=0x1;if(_0x4a5407[_0xd6f0('0xf7')]>=this[_0xd6f0('0x23')][_0x336cba['queue']][_0xd6f0('0x123')]){this['queueCallerAbandonCreateState'](_0x4a5407);}else{this[_0xd6f0('0xc7')]({'active':![],'countabandonedretry':_0x4a5407[_0xd6f0('0xf7')],'scheduledat':moment()['add'](this[_0xd6f0('0x23')][_0x336cba['queue']][_0xd6f0('0x124')],'minutes')[_0xd6f0('0x7a')](_0xd6f0('0xfe')),'ContactId':_0x585084['ContactId'],'ListId':_0x585084['ListId'],'VoiceQueueId':_0x585084[_0xd6f0('0xff')]||undefined,'CampaignId':_0x585084[_0xd6f0('0xdc')]||undefined})[_0xd6f0('0xb8')](loggerCatch('[rescheduleContact][Abandoned]'));var _0x1520cc=new History(_0x4a5407);_0x1520cc[_0xd6f0('0xac')]=0xb;_0x1520cc[_0xd6f0('0xad')]=_0xd6f0('0x121');_0x1520cc[_0xd6f0('0xaf')]=moment()['format'](_0xd6f0('0xfe'));_0x1520cc[_0xd6f0('0xae')]=_0x1520cc[_0xd6f0('0xaf')];_0x1520cc[_0xd6f0('0x11e')]=_0x4a5407[_0xd6f0('0x11e')];_0x1520cc[_0xd6f0('0x11f')]=_0x4a5407[_0xd6f0('0x11f')];this['createHistory'](_0x1520cc)[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0x125')));}}}}};Dialer['prototype'][_0xd6f0('0x36')]=function(_0x47126a){if(this['actions'][_0x47126a[_0xd6f0('0xe3')]]){this[_0xd6f0('0xb2')][_0x47126a[_0xd6f0('0xe3')]][_0xd6f0('0xb7')]=_0x47126a[_0xd6f0('0xb7')];}if(this[_0xd6f0('0x29')][_0x47126a[_0xd6f0('0xe3')]]){this[_0xd6f0('0x29')][_0x47126a['uniqueid']][_0xd6f0('0xb7')]=_0x47126a[_0xd6f0('0xb7')];}};Dialer['prototype'][_0xd6f0('0x39')]=function(_0x48f192){if(strategy[this[_0xd6f0('0x23')][this[_0xd6f0('0xb2')][_0x48f192[_0xd6f0('0x126')]][_0xd6f0('0xbb')]][_0xd6f0('0x4d')]]===_0xd6f0('0x127')){if(this[_0xd6f0('0xb2')][_0x48f192['actionid']]&&_[_0xd6f0('0xb4')](this[_0xd6f0('0xb2')][_0x48f192[_0xd6f0('0x126')]][_0xd6f0('0x128')])&&_0x48f192[_0xd6f0('0xb6')]==='1'&&_0x48f192['paused']==='0'){if(this[_0xd6f0('0x25')][_0x48f192['stateinterface']]){if(!this[_0xd6f0('0x25')][_0x48f192['stateinterface']][_0xd6f0('0x128')]){this[_0xd6f0('0x25')][_0x48f192['stateinterface']][_0xd6f0('0x128')]=!![];this['actions'][_0x48f192['actionid']][_0xd6f0('0x128')]=!![];this[_0xd6f0('0xb2')][_0x48f192[_0xd6f0('0x126')]][_0xd6f0('0x129')]=_0x48f192[_0xd6f0('0x129')];}}}}else if((strategy[this[_0xd6f0('0x23')][this[_0xd6f0('0xb2')][_0x48f192[_0xd6f0('0x126')]][_0xd6f0('0xbb')]][_0xd6f0('0x4d')]]||_0xd6f0('0x1c'))===_0xd6f0('0x1c')){if(this[_0xd6f0('0xb2')][_0x48f192[_0xd6f0('0x126')]]){if(this[_0xd6f0('0x25')][_0x48f192['stateinterface']]){this[_0xd6f0('0xb2')][_0x48f192[_0xd6f0('0x126')]]['stateinterface']=_0x48f192[_0xd6f0('0x129')];if(_[_0xd6f0('0xb4')](this[_0xd6f0('0x12a')][this[_0xd6f0('0xb2')][_0x48f192[_0xd6f0('0x126')]][_0xd6f0('0xbb')]])){this[_0xd6f0('0x12a')][this['actions'][_0x48f192[_0xd6f0('0x126')]][_0xd6f0('0xbb')]]=[];}this[_0xd6f0('0x12a')][this[_0xd6f0('0xb2')][_0x48f192[_0xd6f0('0x126')]]['queue']][_0xd6f0('0x12b')](_[_0xd6f0('0x12c')](_[_0xd6f0('0xd8')](this['actions'][_0x48f192[_0xd6f0('0x126')]],[_0xd6f0('0x12d'),_0xd6f0('0x129')]),{'status':_0x48f192[_0xd6f0('0xb6')],'paused':_0x48f192['paused']}));}}}};function unlockQueueStatus(_0xc2bf9d,_0x3a76c6){setTimeout(function(){if(_[_0xd6f0('0x3d')](_0xc2bf9d[_0xd6f0('0x12e')])){loggerBooked[_0xd6f0('0x9a')](_0xd6f0('0x12f'),_0x3a76c6);}_0xc2bf9d[_0xd6f0('0x12e')]=!![];loggerBooked[_0xd6f0('0x81')](_0xd6f0('0x130'),_0x3a76c6,JSON[_0xd6f0('0x78')](_['pick'](_0xc2bf9d,['name',_0xd6f0('0x12e')])));},0x1f3);}Dialer[_0xd6f0('0x1d')][_0xd6f0('0x3a')]=function(_0x3f0b23){var _0x422cd8=this;var _0x40bbd9=_0x422cd8[_0xd6f0('0x23')][_0x422cd8[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]][_0xd6f0('0xbb')]];if(strategy[this[_0xd6f0('0x23')][this[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]][_0xd6f0('0xbb')]][_0xd6f0('0x4d')]]==='roundrobin'){if(this[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]]&&this['actions'][_0x3f0b23[_0xd6f0('0x126')]]['stateinterface']){this[_0xd6f0('0x22')][_0xd6f0('0x131')](this[_0xd6f0('0xb2')][_0x3f0b23['actionid']][_0xd6f0('0x12d')],this[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]][_0xd6f0('0x129')])['catch'](function(_0x227a3f){logger[_0xd6f0('0x9a')]('[Catch][Preview][syncQueueStatusComplete]',util[_0xd6f0('0x9c')](_0x227a3f,{'showHidden':![],'depth':null}));})[_0xd6f0('0x20')](function(){_0x422cd8[_0xd6f0('0xba')](_0x422cd8[_0xd6f0('0x23')][_0x422cd8['actions'][_0x3f0b23[_0xd6f0('0x126')]][_0xd6f0('0xbb')]]);_0x422cd8['agents'][_0x422cd8[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]]['stateinterface']][_0xd6f0('0x128')]=![];delete _0x422cd8[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]];unlockQueueStatus(_0x40bbd9);});}else{this[_0xd6f0('0xba')](this[_0xd6f0('0x23')][this[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]][_0xd6f0('0xbb')]]);this[_0xd6f0('0xc7')]({'active':![],'ContactId':this[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]]['ContactId'],'ListId':this[_0xd6f0('0xb2')][_0x3f0b23['actionid']][_0xd6f0('0xda')],'VoiceQueueId':this[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]][_0xd6f0('0xff')]||undefined,'CampaignId':this['actions'][_0x3f0b23['actionid']][_0xd6f0('0xdc')]||undefined})['catch'](loggerCatch(_0xd6f0('0x132')));delete this[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]];unlockQueueStatus(_0x40bbd9);}}else if((strategy[this['voiceQueues'][this['actions'][_0x3f0b23[_0xd6f0('0x126')]]['queue']][_0xd6f0('0x4d')]]||_0xd6f0('0x1c'))===_0xd6f0('0x1c')){var _0x202805;if(this[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]]&&!_['isEmpty'](this[_0xd6f0('0x12a')][this[_0xd6f0('0xb2')][_0x3f0b23['actionid']][_0xd6f0('0xbb')]])){if(this[_0xd6f0('0x2d')][_0x422cd8[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]][_0xd6f0('0xbb')]]){this['queueBookedRR'][_0x422cd8['actions'][_0x3f0b23[_0xd6f0('0x126')]]['queue']]=this[_0xd6f0('0x2d')][this[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]]['queue']]?this['queueBookedRR'][this[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]][_0xd6f0('0xbb')]]:this[_0xd6f0('0x12a')][this['actions'][_0x3f0b23[_0xd6f0('0x126')]][_0xd6f0('0xbb')]]?this['queueBooked'][this[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]][_0xd6f0('0xbb')]][_0xd6f0('0x133')]||0x0:0x0;}this[_0xd6f0('0x12a')][this['actions'][_0x3f0b23['actionid']][_0xd6f0('0xbb')]][_0xd6f0('0x133')]=this['queueBookedRR'][this[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]][_0xd6f0('0xbb')]];for(var _0x2de951=0x0;_0x2de951<this[_0xd6f0('0x12a')][this[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]][_0xd6f0('0xbb')]][_0xd6f0('0x9d')];_0x2de951+=0x1){_0x202805=rr(this[_0xd6f0('0x12a')][this[_0xd6f0('0xb2')][_0x3f0b23['actionid']]['queue']]);this[_0xd6f0('0x2d')][_0x422cd8['actions'][_0x3f0b23[_0xd6f0('0x126')]][_0xd6f0('0xbb')]]=this[_0xd6f0('0x12a')][this['actions'][_0x3f0b23['actionid']]['queue']][_0xd6f0('0x133')];if(_0x202805[_0xd6f0('0xb6')]==='1'&&_0x202805['paused']==='0'){break;}}if(!_['isNil'](_0x202805)){this[_0xd6f0('0x25')][_0x202805[_0xd6f0('0x129')]][_0xd6f0('0x134')]=_['isUndefined'](this['agents'][_0x202805[_0xd6f0('0x129')]][_0xd6f0('0x134')])?!![]:this[_0xd6f0('0x25')][_0x202805['stateinterface']][_0xd6f0('0x134')];}loggerBooked[_0xd6f0('0x81')]('[booked][RR]',_0x3f0b23[_0xd6f0('0x126')],_0xd6f0('0x135'),JSON[_0xd6f0('0x78')](_[_0xd6f0('0xd8')](this[_0xd6f0('0x25')][_0x202805[_0xd6f0('0x129')]],[_0xd6f0('0x40'),_0xd6f0('0x134')])),'contactAgent-idHopper:\x20',JSON['stringify'](_0x202805[_0xd6f0('0x12d')]));if(!_['isNil'](_0x202805)&&_0x202805['status']==='1'&&_0x202805[_0xd6f0('0x136')]==='0'&&this[_0xd6f0('0x25')][_0x202805[_0xd6f0('0x129')]]['unlockRR']){this['agents'][_0x202805['stateinterface']][_0xd6f0('0x134')]=![];this[_0xd6f0('0x12a')][_0x422cd8[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]][_0xd6f0('0xbb')]]=[];this[_0xd6f0('0x22')][_0xd6f0('0x131')](_0x202805['idHopper'],_0x202805[_0xd6f0('0x129')])[_0xd6f0('0xb8')](function(_0x2aa845){logger[_0xd6f0('0x9a')](_0xd6f0('0x137'),util[_0xd6f0('0x9c')](_0x2aa845,{'showHidden':![],'depth':null}));})[_0xd6f0('0x20')](function(){_0x422cd8[_0xd6f0('0xba')](_0x422cd8[_0xd6f0('0x23')][_0x422cd8[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]][_0xd6f0('0xbb')]]);setTimeout(function(){_0x422cd8[_0xd6f0('0x25')][_0x202805[_0xd6f0('0x129')]]['unlockRR']=!![];loggerBooked[_0xd6f0('0x81')](_0xd6f0('0x138'),_0x3f0b23['actionid'],_0xd6f0('0x135'),JSON[_0xd6f0('0x78')](_[_0xd6f0('0xd8')](_0x422cd8[_0xd6f0('0x25')][_0x202805['stateinterface']],[_0xd6f0('0x40'),_0xd6f0('0x134')])),'contactAgent-idHopper:\x20',JSON[_0xd6f0('0x78')](_0x202805[_0xd6f0('0x12d')]));},0xc7);delete _0x422cd8[_0xd6f0('0xb2')][_0x3f0b23['actionid']];unlockQueueStatus(_0x40bbd9,_0x3f0b23[_0xd6f0('0x126')]);});}else{loggerBooked['info'](_0xd6f0('0x139'));this[_0xd6f0('0xba')](this[_0xd6f0('0x23')][this[_0xd6f0('0xb2')][_0x3f0b23['actionid']][_0xd6f0('0xbb')]]);this[_0xd6f0('0xc7')]({'active':![],'ContactId':this[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]][_0xd6f0('0xd9')],'ListId':this['actions'][_0x3f0b23['actionid']][_0xd6f0('0xda')],'VoiceQueueId':this[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]]['VoiceQueueId']||undefined,'CampaignId':this[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]][_0xd6f0('0xdc')]||undefined})[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0x132')));delete this['actions'][_0x3f0b23[_0xd6f0('0x126')]];unlockQueueStatus(_0x40bbd9);}}else{loggerBooked[_0xd6f0('0x81')](_0xd6f0('0x13a'));this['updateOriginated'](this[_0xd6f0('0x23')][this[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]][_0xd6f0('0xbb')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]]['ContactId'],'ListId':this[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]][_0xd6f0('0xda')],'VoiceQueueId':this[_0xd6f0('0xb2')][_0x3f0b23['actionid']]['VoiceQueueId']||undefined,'CampaignId':this[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]][_0xd6f0('0xdc')]||undefined})[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0x13b')));delete this[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]];unlockQueueStatus(_0x40bbd9);}}else{loggerBooked['info'](_0xd6f0('0x13c'));this[_0xd6f0('0xba')](this['voiceQueues'][this[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]][_0xd6f0('0xbb')]]);this['rescheduleContact']({'active':![],'ContactId':this['actions'][_0x3f0b23[_0xd6f0('0x126')]][_0xd6f0('0xd9')],'ListId':this['actions'][_0x3f0b23[_0xd6f0('0x126')]]['ListId'],'VoiceQueueId':this[_0xd6f0('0xb2')][_0x3f0b23[_0xd6f0('0x126')]][_0xd6f0('0xff')]||undefined,'CampaignId':this['actions'][_0x3f0b23[_0xd6f0('0x126')]]['CampaignId']||undefined})[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0x13d')));delete this['actions'][_0x3f0b23[_0xd6f0('0x126')]];unlockQueueStatus(_0x40bbd9);}};Dialer[_0xd6f0('0x1d')]['loopCampaigns']=function(){var _0x23e8d1=this;setInterval(function(){_0x23e8d1[_0xd6f0('0x13e')]();},0x3e8);};Dialer[_0xd6f0('0x1d')][_0xd6f0('0x13f')]=function(_0x3089d8){var _0xd84727=this;return function(){if(!_0xd84727[_0xd6f0('0xdf')](_0x3089d8['Trunk'])){if(!_0xd84727[_0xd6f0('0xdf')](_0x3089d8[_0xd6f0('0x140')])){_0x3089d8[_0xd6f0('0x3e')]=_0xd6f0('0x141');throw _0x3089d8['name']+_0xd6f0('0x142');}}};};Dialer[_0xd6f0('0x1d')][_0xd6f0('0x143')]=function(_0xba8c33,_0x5c7ccc,_0x3059b4,_0x15b136){var _0x3b1fa0=this;return function(){var _0x47f480=!![];return _0x3b1fa0[_0xd6f0('0x144')](_0xba8c33,_0x5c7ccc,_0x3059b4,_0x15b136,_0x47f480);};};Dialer[_0xd6f0('0x1d')]['checkIfTimeIntervals']=function(_0x9bc0ba,_0x6fa67,_0xa7c3c,_0x5a59e6){var _0x54a833=this;return function(){var _0x2200e0=![];return _0x54a833[_0xd6f0('0x144')](_0x9bc0ba[_0xd6f0('0x45')],_0x6fa67,_0xa7c3c,_0x5a59e6,_0x2200e0);};};Dialer[_0xd6f0('0x1d')][_0xd6f0('0x144')]=function(_0x323e20,_0x5350a4,_0x17ab54,_0x104ce5,_0x44dca4){var _0x7d5ab4=[];return new BPromise(function(_0x131008,_0x31f41a){if(!isNotNull(_0x323e20)){_0x104ce5[_0xd6f0('0x3e')]=_0xd6f0('0x46');return _0x31f41a(msgResponse(_0xd6f0('0x144'),'Failure',_0x17ab54+_0xd6f0('0x145')));}if(_['isEmpty'](_0x323e20)){_0x104ce5['message']=_0xd6f0('0x146');return _0x31f41a(msgResponse('ifTime',_0xd6f0('0x147'),_0x17ab54+_0xd6f0('0x148')));}if(_0x5350a4&&_['isUndefined'](config[_0xd6f0('0x149')][_0x5350a4])){_0x104ce5[_0xd6f0('0x3e')]=_0xd6f0('0x14a');return _0x31f41a(msgResponse(_0xd6f0('0x144'),_0xd6f0('0x147'),_0x17ab54+_0xd6f0('0x14b')+_0x5350a4));}if(_[_0xd6f0('0x14c')](_0x323e20)){for(var _0x38e9d=0x0;_0x38e9d<_0x323e20[_0xd6f0('0x9d')];_0x38e9d+=0x1){_0x7d5ab4[_0xd6f0('0x12b')](ami[_0xd6f0('0xb5')]({'action':_0xd6f0('0x14d'),'command':util[_0xd6f0('0x7a')](_0xd6f0('0x14e'),_0x323e20[_0x38e9d][_0xd6f0('0x14f')],!_[_0xd6f0('0x3d')](config[_0xd6f0('0x149')][_0x5350a4])?_0x5350a4:'')})[_0xd6f0('0xc0')](function(_0x451f7b){return _0x451f7b[_0xd6f0('0x150')][_0xd6f0('0x151')](_0xd6f0('0x152'))>=0x0;})[_0xd6f0('0xb8')](myreject(_0x31f41a)));}}else{_0x7d5ab4[_0xd6f0('0x12b')](ami[_0xd6f0('0xb5')]({'action':'command','command':util[_0xd6f0('0x7a')](_0xd6f0('0x14e'),_0x323e20,!_[_0xd6f0('0x3d')](config[_0xd6f0('0x149')][_0x5350a4])?_0x5350a4:'')})['then'](function(_0x1f3b5c){return _0x1f3b5c['content'][_0xd6f0('0x151')]('true')>=0x0;})[_0xd6f0('0xb8')](myreject(_0x31f41a)));}BPromise[_0xd6f0('0x153')](_0x7d5ab4)[_0xd6f0('0xc0')](function(_0xdade07){var _0x50b6a7=_[_0xd6f0('0x154')](_0xdade07);if(_0x50b6a7){return _0x131008(_0x50b6a7);}else{_0x104ce5['message']=_0x44dca4?_0xd6f0('0x155'):_0xd6f0('0x156');return _0x31f41a(msgResponse('[ifTime][promiseAll]',_0xd6f0('0x147'),_0xd6f0('0x157')+_0x44dca4+'\x20'+_0x17ab54+_0xd6f0('0x158')+util[_0xd6f0('0x9c')](_0x323e20,{'showHidden':![],'depth':null})+'Timezone:\x20'+_0x5350a4));}})[_0xd6f0('0xb8')](function(_0x2e9d29){return _0x31f41a(msgResponse('ifTime',_0xd6f0('0x147'),JSON[_0xd6f0('0x78')](_0x2e9d29)));});});};Dialer[_0xd6f0('0x1d')][_0xd6f0('0x159')]=function(_0x143f66){var _0x194cbd=this;return function(){switch(_0x143f66['dialMethod']){case _0xd6f0('0x15a'):freeVariablesPredictive(_0x143f66);_0x194cbd[_0xd6f0('0x15b')](_0x143f66,0x1);break;case _0xd6f0('0x15c'):freeVariablesPredictive(_0x143f66);_0x194cbd[_0xd6f0('0x15b')](_0x143f66,_0x143f66[_0xd6f0('0x15d')]);break;case _0xd6f0('0xa'):_0x194cbd[_0xd6f0('0xa')](_0x143f66);break;case _0xd6f0('0x9'):freeVariablesPredictive(_0x143f66);_0x194cbd[_0xd6f0('0x15b')](_0x143f66,0x1);break;default:freeVariablesPredictive(_0x143f66);logger[_0xd6f0('0x9a')](_0xd6f0('0x15e'),_0x143f66[_0xd6f0('0x40')],_0xd6f0('0x15f'));}};};Dialer[_0xd6f0('0x1d')]['launchHandleIvr']=function(_0x1e2489){var _0x518b14=this;return function(){_0x518b14['handleIvr'](_0x1e2489);};};Dialer[_0xd6f0('0x1d')][_0xd6f0('0x160')]=function(_0x1d004a){var _0x5ae610=this;if(isNotPreview(_0x1d004a[_0xd6f0('0x161')])){if(isVoiceQueueOutbound(_0x1d004a[_0xd6f0('0x7c')])&&isActive(_0x1d004a[_0xd6f0('0x5a')])){_0x1d004a['sendMessageOneNotActive']=!![];BPromise['resolve']()[_0xd6f0('0xc0')](checkIsLoggedIn(_0x1d004a,_0x1d004a[_0xd6f0('0x50')]))[_0xd6f0('0xc0')](checkIsActive(_0x1d004a,_0x1d004a['dialActive']))[_0xd6f0('0xc0')](checkInterval(_0x1d004a))[_0xd6f0('0xc0')](_0x5ae610['checkIsTrunkReachable'](_0x1d004a))['then'](_0x5ae610[_0xd6f0('0x143')](_0x1d004a[_0xd6f0('0x162')],_0x1d004a['dialTimezone'],_0x1d004a[_0xd6f0('0x40')],_0x1d004a))['then'](_0x5ae610[_0xd6f0('0x163')](_0x1d004a['Interval'],_0x1d004a[_0xd6f0('0x164')],_0x1d004a[_0xd6f0('0x40')],_0x1d004a))[_0xd6f0('0xc0')](_0x5ae610[_0xd6f0('0x159')](_0x1d004a))[_0xd6f0('0xb8')](loggerCatchQueueSummary(_0xd6f0('0x165'),_0x1d004a));}else{notSendMessagesQueue(_0x1d004a);}}else{freeVariablesPredictive(_0x1d004a);}};Dialer['prototype'][_0xd6f0('0x13e')]=function(){var _0x60191a=this;var _0x25d74b;for(var _0x920a62 in this[_0xd6f0('0x24')]){if(typeof this[_0xd6f0('0x24')][_0x920a62]!==_0xd6f0('0x9f')){_0x25d74b=this[_0xd6f0('0x24')][_0x920a62];if(isCampaignIvr(_0x25d74b[_0xd6f0('0x7c')])&&isActive(_0x25d74b[_0xd6f0('0x77')])){_0x25d74b[_0xd6f0('0xa8')]=!![];BPromise['resolve']()[_0xd6f0('0xc0')](checkIsActive(_0x25d74b,_0x25d74b[_0xd6f0('0x77')]))[_0xd6f0('0xc0')](checkInterval(_0x25d74b))[_0xd6f0('0xc0')](_0x60191a[_0xd6f0('0x13f')](_0x25d74b))[_0xd6f0('0xc0')](_0x60191a[_0xd6f0('0x143')](_0x25d74b['dialGlobalInterval'],_0x25d74b[_0xd6f0('0x164')],_0x25d74b['name'],_0x25d74b))[_0xd6f0('0xc0')](_0x60191a[_0xd6f0('0x163')](_0x25d74b[_0xd6f0('0x44')],_0x25d74b['dialTimezone'],_0x25d74b['name'],_0x25d74b))['then'](_0x60191a[_0xd6f0('0x166')](_0x25d74b))[_0xd6f0('0xb8')](loggerCatchQueueSummary(_0xd6f0('0x167'),_0x25d74b));}else{notSendMessagesCampaign(_0x25d74b);}}}};function getCallerIdRandom(_0x27eba0,_0x4ace28){var _0x15d8b1;var _0x1cd834;var _0x5840cd;if(_0x4ace28<=0x0){_0x4ace28=0x1;}_0x15d8b1=new RegExp(_0xd6f0('0x168')+_0x4ace28+'}$');_0x1cd834=Math[_0xd6f0('0x169')](0xa,_0x4ace28-0x1);_0x5840cd=Math[_0xd6f0('0x169')](0xa,_0x4ace28)-0x1;return util[_0xd6f0('0x7a')]('%s',_['replace'](_0x27eba0,_0x15d8b1,_[_0xd6f0('0x16a')](_0x1cd834,_0x5840cd)));}function extractCalleridName(_0x369dcf){var _0x16533b=_0x369dcf[_0xd6f0('0x16b')](/"(.*?)"/);return _0x16533b?_0x16533b[0x1]:_0x369dcf;}function extractCalleridNumber(_0x1ac07c){var _0x4e7cb4=_0x1ac07c[_0xd6f0('0x16b')](/<(.*?)>/);return _0x4e7cb4?_0x4e7cb4[0x1]:_0x1ac07c;}Dialer[_0xd6f0('0x1d')][_0xd6f0('0x16c')]=function(_0x439aca,_0x18085f){var _0x31c40c=this;var _0x945e09=uuid['v4']();this[_0xd6f0('0xb2')][_0x945e09]=new Action(_0x439aca,_0x18085f,_0x945e09);return new BPromise(function(_0x1ee291,_0x100b4d){if(_[_0xd6f0('0x3d')](_0x439aca)&&typeof _0x439aca!==_0xd6f0('0x16d')){return _0x100b4d(msgResponse(_0xd6f0('0x16e'),_0xd6f0('0x147'),'voiceQueue\x20is\x20undefine'));}if(_[_0xd6f0('0x3d')](_0x18085f[_0xd6f0('0x16f')][_0xd6f0('0x170')])||_0x18085f[_0xd6f0('0x16f')]['phone']===null){return _0x100b4d(msgResponse(_0xd6f0('0x16e'),_0xd6f0('0x147'),_0xd6f0('0x171')));}var _0x33c9a8={'XMD-CALLERID':_0x31c40c[_0xd6f0('0xb2')][_0x945e09][_0xd6f0('0x172')](),'XMD-AGI':_0x439aca[_0xd6f0('0x10a')]?util[_0xd6f0('0x7a')](_0xd6f0('0x173'),ipAgi,_0x439aca['dialQueueProject']):_0xd6f0('0x174'),'XMD-AGIAFTER':_0x439aca[_0xd6f0('0x11c')]?util['format'](_0xd6f0('0x173'),ipAgi,_0x439aca[_0xd6f0('0x11c')]):'NONE','XMD-QUEUE':_0x439aca[_0xd6f0('0x7c')]===_0xd6f0('0x4c')?util['format'](_0xd6f0('0x175'),_0x439aca['name'],_0x439aca[_0xd6f0('0x176')]||'',_0x439aca[_0xd6f0('0x113')]?'c':'',_0x439aca[_0xd6f0('0x119')]||0x3):'NONE','XMD-CONTACTID':_0x18085f[_0xd6f0('0xd9')],'XMD-CDRTYPE':_0xd6f0('0x8'),'CALLERID(all)':_0x31c40c[_0xd6f0('0xb2')][_0x945e09][_0xd6f0('0x172')](),'XMD-AMD':_0x439aca[_0xd6f0('0xe7')]?_0xd6f0('0x177'):_0xd6f0('0x174'),'XMD-DESTINATION':_0xd6f0('0xe6')};if(_0x439aca['dialAMDActive']){_0x33c9a8[_0xd6f0('0x178')]=_0x439aca[_0xd6f0('0x179')]||0x9c4;_0x33c9a8['XMD-AMDGREETING']=_0x439aca[_0xd6f0('0x17a')]||0x5dc;_0x33c9a8[_0xd6f0('0x17b')]=_0x439aca[_0xd6f0('0x17c')]||0x320;_0x33c9a8[_0xd6f0('0x17d')]=_0x439aca[_0xd6f0('0x17e')]||0x1388;_0x33c9a8[_0xd6f0('0x17f')]=_0x439aca[_0xd6f0('0x180')]||0x64;_0x33c9a8[_0xd6f0('0x181')]=_0x439aca[_0xd6f0('0x182')]||0x32;_0x33c9a8[_0xd6f0('0x183')]=_0x439aca[_0xd6f0('0x184')]||0x3;_0x33c9a8[_0xd6f0('0x185')]=_0x439aca['dialAMDSilenceThreshold']||0x100;_0x33c9a8[_0xd6f0('0x186')]=_0x439aca['dialAMDMaximumWordLength']||0x1388;}if(_0x439aca[_0xd6f0('0x7c')]===_0xd6f0('0x4c')){_0x33c9a8[_0xd6f0('0x187')]=_0x18085f[_0xd6f0('0xff')];}else{_0x33c9a8[_0xd6f0('0x188')]=_0x18085f['CampaignId'];}for(var _0x52ce04 in _0x18085f[_0xd6f0('0x16f')]){if(typeof _0x18085f[_0xd6f0('0x16f')][_0x52ce04]!==_0xd6f0('0x9f')){if(isNotNull(_0x18085f[_0xd6f0('0x16f')][_0x52ce04])&&_0x52ce04!=='id'&&_0x52ce04!==_0xd6f0('0x189')&&_0x52ce04!=='createdAt'&&_0x52ce04!==_0xd6f0('0x18a')){_0x33c9a8[util[_0xd6f0('0x7a')](_0xd6f0('0x18b'),'XMD-',_[_0xd6f0('0x18c')](_0x52ce04))]=_0x18085f[_0xd6f0('0x16f')][_0x52ce04];}}}var _0x455f9c=_0x31c40c[_0xd6f0('0xdf')](_0x439aca[_0xd6f0('0x76')])?getCallerId(_0x439aca[_0xd6f0('0x76')]['callerid'],_0x439aca['dialOriginateCallerIdName'],_0x439aca[_0xd6f0('0x18d')]>0x0?getCallerIdRandom(_0x439aca[_0xd6f0('0x5c')],_0x439aca['dialRandomLastDigitCallerIdNumber']):_0x439aca['dialOriginateCallerIdNumber']):getCallerId(_[_0xd6f0('0xb4')](_0x439aca[_0xd6f0('0x140')])?_0x439aca[_0xd6f0('0x76')]['callerid']:_0x439aca[_0xd6f0('0x140')]['callerid'],_0x439aca[_0xd6f0('0x5b')],_0x439aca['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x439aca['dialOriginateCallerIdNumber'],_0x439aca[_0xd6f0('0x18d')]):_0x439aca['dialOriginateCallerIdNumber']);if(_0x455f9c){_0x33c9a8[_0xd6f0('0x18e')]=_0x31c40c[_0xd6f0('0xb2')][_0x945e09][_0xd6f0('0x18f')]=extractCalleridName(_0x455f9c);_0x33c9a8[_0xd6f0('0x190')]=_0x31c40c[_0xd6f0('0xb2')][_0x945e09]['originatecalleridnum']=extractCalleridNumber(_0x455f9c);}return ami['Action']({'actionid':_0x945e09,'action':_0xd6f0('0x16e'),'channel':_0x31c40c[_0xd6f0('0xdf')](_0x439aca[_0xd6f0('0x76')])?util[_0xd6f0('0x7a')]('SIP/%s/%s%s',_0x439aca[_0xd6f0('0x76')]['name'],isNotNull(_0x439aca['dialPrefix'])?_0x439aca[_0xd6f0('0x191')][_0xd6f0('0x192')]()||'':'',_0x439aca[_0xd6f0('0x193')]>0x0?_0x18085f[_0xd6f0('0x16f')]['phone'][_0xd6f0('0x194')](_0x439aca[_0xd6f0('0x193')]):_0x18085f[_0xd6f0('0x16f')][_0xd6f0('0x170')]):util['format'](_0xd6f0('0x195'),_['isNil'](_0x439aca[_0xd6f0('0x140')])?_0x439aca['Trunk']['name']:_0x439aca[_0xd6f0('0x140')][_0xd6f0('0x40')],isNotNull(_0x439aca['dialPrefix'])?_0x439aca[_0xd6f0('0x191')]['trim']()||'':'',_0x439aca['dialCutDigit']>0x0?_0x18085f['Contact']['phone'][_0xd6f0('0x194')](_0x439aca[_0xd6f0('0x193')]):_0x18085f[_0xd6f0('0x16f')][_0xd6f0('0x170')]),'callerid':_0x455f9c,'Exten':_0xd6f0('0xe6'),'Context':_0xd6f0('0x196'),'Priority':'1','variable':_0x33c9a8,'timeout':(_0x439aca[_0xd6f0('0x5d')]||0x1e)*0x3e8,'async':!![],'channelid':_0x945e09})[_0xd6f0('0xc0')](function(_0x58b12b){return _0x1ee291(_0x58b12b);})['catch'](function(_0x5af027){_0x439aca['outboundOriginateFailureCallsDay']+=0x1;var _0x58a848=new History(_0x31c40c[_0xd6f0('0xb2')][_0x945e09]);logger[_0xd6f0('0x9a')](util[_0xd6f0('0x7a')]('[originateError]:\x20%s',JSON[_0xd6f0('0x78')](_0x5af027)));_0x58a848[_0xd6f0('0xac')]=0xe;_0x58a848[_0xd6f0('0xad')]='OriginateError';_0x58a848[_0xd6f0('0xaf')]=moment()[_0xd6f0('0x7a')]('YYYY-MM-DD\x20HH:mm:ss');_0x58a848[_0xd6f0('0xae')]=_0x58a848['starttime'];_0x31c40c[_0xd6f0('0xd3')](_0x58a848)[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0x197')));_0x31c40c[_0xd6f0('0xd1')](_0x58a848)[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0x197')))[_0xd6f0('0x20')](function(){delete _0x31c40c[_0xd6f0('0xb2')][_0x945e09];return _0x100b4d(msgResponse(_0xd6f0('0x16e'),_0xd6f0('0x48'),_0xd6f0('0x198')));});});});};Dialer[_0xd6f0('0x1d')][_0xd6f0('0x31')]=function(_0x55f6b1){var _0x1aa29d=this[_0xd6f0('0xb2')][_0x55f6b1[_0xd6f0('0x126')]];if(_0x1aa29d){delete this[_0xd6f0('0xb2')][_0x55f6b1[_0xd6f0('0x126')]];_0x1aa29d[_0xd6f0('0x199')]=moment()[_0xd6f0('0x7a')](_0xd6f0('0xfe'));var _0x565bca=_0x1aa29d[_0xd6f0('0x7c')]===_0xd6f0('0x7d')?this[_0xd6f0('0x24')][_0x1aa29d[_0xd6f0('0xbb')]]:this[_0xd6f0('0x23')][_0x1aa29d[_0xd6f0('0x19a')]()];if(!this['isSuccess'](_0x55f6b1[_0xd6f0('0x19b')])){this['updateOriginated'](_0x565bca);return this[_0xd6f0('0x19c')](_0x1aa29d,_0x565bca,_0x55f6b1)[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0x19d')));}this['uniqueId'][_0x55f6b1[_0xd6f0('0xe3')]]=_0x1aa29d;}};Dialer[_0xd6f0('0x1d')]['checkRetriveMax']=function(_0x129f95,_0x22afa5,_0x56133d){var _0x2e26d8=new History(_0x22afa5);if(_0x2e26d8[_0xd6f0('0xf4')]+_0x2e26d8['countcongestionretry']+_0x2e26d8[_0xd6f0('0x104')]+_0x2e26d8[_0xd6f0('0xf6')]+_0x2e26d8[_0xd6f0('0x105')]+_0x2e26d8[_0xd6f0('0xf7')]+_0x2e26d8[_0xd6f0('0xf1')]+_0x2e26d8[_0xd6f0('0x106')]>=_0x56133d[_0xd6f0('0xf8')]-0x1){return!![];}switch(_0x129f95){case 0x3:if(_0x2e26d8['countnoanswerretry']>=_0x56133d['dialNoAnswerMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countnoanswerretry':_0x2e26d8[_0xd6f0('0x104')]+=0x1,'scheduledat':moment()[_0xd6f0('0xfc')](_0x56133d[_0xd6f0('0x19e')],_0xd6f0('0xfd'))[_0xd6f0('0x7a')](_0xd6f0('0xfe')),'ContactId':_0x2e26d8['ContactId'],'ListId':_0x2e26d8['ListId'],'VoiceQueueId':_0x2e26d8[_0xd6f0('0xff')]||undefined,'CampaignId':_0x2e26d8[_0xd6f0('0xdc')]||undefined})['catch'](loggerCatch(_0xd6f0('0x19f')));break;case 0x5:if(_0x2e26d8['countbusyretry']>=_0x56133d[_0xd6f0('0x1a0')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countbusyretry':_0x2e26d8[_0xd6f0('0xf4')]+=0x1,'scheduledat':moment()['add'](_0x56133d['dialBusyRetryFrequency'],_0xd6f0('0xfd'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x2e26d8['ContactId'],'ListId':_0x2e26d8[_0xd6f0('0xda')],'VoiceQueueId':_0x2e26d8[_0xd6f0('0xff')]||undefined,'CampaignId':_0x2e26d8[_0xd6f0('0xdc')]||undefined})['catch'](loggerCatch(_0xd6f0('0x1a1')));break;case 0x8:if(_0x2e26d8[_0xd6f0('0xf5')]>=_0x56133d['dialCongestionMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countcongestionretry':_0x2e26d8[_0xd6f0('0xf5')]+=0x1,'scheduledat':moment()[_0xd6f0('0xfc')](_0x56133d[_0xd6f0('0x1a2')],_0xd6f0('0xfd'))[_0xd6f0('0x7a')](_0xd6f0('0xfe')),'ContactId':_0x2e26d8[_0xd6f0('0xd9')],'ListId':_0x2e26d8[_0xd6f0('0xda')],'VoiceQueueId':_0x2e26d8['VoiceQueueId']||undefined,'CampaignId':_0x2e26d8[_0xd6f0('0xdc')]||undefined})[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0x1a3')));break;case 0x0:if(_0x2e26d8['countnosuchnumberretry']>=_0x56133d[_0xd6f0('0x1a4')]-0x1){return!![];}else{this['rescheduleContact']({'active':![],'countnosuchnumberretry':_0x2e26d8[_0xd6f0('0xf6')]+=0x1,'scheduledat':moment()[_0xd6f0('0xfc')](_0x56133d[_0xd6f0('0x1a5')],'minutes')[_0xd6f0('0x7a')](_0xd6f0('0xfe')),'ContactId':_0x2e26d8[_0xd6f0('0xd9')],'ListId':_0x2e26d8[_0xd6f0('0xda')],'VoiceQueueId':_0x2e26d8[_0xd6f0('0xff')]||undefined,'CampaignId':_0x2e26d8['CampaignId']||undefined})['catch'](loggerCatch(_0xd6f0('0x1a6')));}break;case 0xa:if(_0x2e26d8[_0xd6f0('0x105')]>=_0x56133d['dialDropMaxRetry']-0x1){return!![];}this[_0xd6f0('0xc7')]({'active':![],'countdropretry':_0x2e26d8['countdropretry']+=0x1,'scheduledat':moment()['add'](_0x56133d['dialDropRetryFrequency'],_0xd6f0('0xfd'))[_0xd6f0('0x7a')](_0xd6f0('0xfe')),'ContactId':_0x2e26d8[_0xd6f0('0xd9')],'ListId':_0x2e26d8[_0xd6f0('0xda')],'VoiceQueueId':_0x2e26d8[_0xd6f0('0xff')]||undefined,'CampaignId':_0x2e26d8['CampaignId']||undefined})[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0x1a7')));break;case 0xb:if(_0x2e26d8[_0xd6f0('0xf7')]>=_0x56133d[_0xd6f0('0x123')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countabandonedretry':_0x2e26d8['countabandonedretry']+=0x1,'scheduledat':moment()[_0xd6f0('0xfc')](_0x56133d[_0xd6f0('0x124')],'minutes')[_0xd6f0('0x7a')](_0xd6f0('0xfe')),'ContactId':_0x2e26d8['ContactId'],'ListId':_0x2e26d8['ListId'],'VoiceQueueId':_0x2e26d8['VoiceQueueId']||undefined,'CampaignId':_0x2e26d8[_0xd6f0('0xdc')]||undefined})[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0x1a8')));break;case 0x13:if(_0x2e26d8[_0xd6f0('0xf1')]>=_0x56133d['dialMachineMaxRetry']-0x1){return!![];}this[_0xd6f0('0xc7')]({'active':![],'countmachineretry':_0x2e26d8[_0xd6f0('0xf1')]+=0x1,'scheduledat':moment()[_0xd6f0('0xfc')](_0x56133d['dialMachineRetryFrequency'],_0xd6f0('0xfd'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x2e26d8[_0xd6f0('0xd9')],'ListId':_0x2e26d8[_0xd6f0('0xda')],'VoiceQueueId':_0x2e26d8[_0xd6f0('0xff')]||undefined,'CampaignId':_0x2e26d8['CampaignId']||undefined})[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0x100')));break;case 0x14:if(_0x2e26d8[_0xd6f0('0x106')]>=_0x56133d[_0xd6f0('0x1a9')]-0x1){return!![];}this[_0xd6f0('0xc7')]({'active':![],'countagentrejectretry':_0x2e26d8['countagentrejectretry']+=0x1,'scheduledat':moment()[_0xd6f0('0xfc')](_0x56133d[_0xd6f0('0x1aa')],_0xd6f0('0xfd'))['format'](_0xd6f0('0xfe')),'ContactId':_0x2e26d8[_0xd6f0('0xd9')],'ListId':_0x2e26d8['ListId'],'VoiceQueueId':_0x2e26d8['VoiceQueueId']||undefined,'CampaignId':_0x2e26d8[_0xd6f0('0xdc')]||undefined})[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0x1ab')));break;default:return!![];}};Dialer[_0xd6f0('0x1d')]['callProgressDetecting']=function(_0x9bc9c1,_0xd12f50,_0xea0635){var _0x402900=this;var _0x172e8a=new History(_0x9bc9c1);return new BPromise(function(_0x19a51c,_0x31b16d){if(_['isUndefined'](_0xd12f50)&&typeof _0xd12f50!=='object'){return _0x31b16d(msgResponse(_0xd6f0('0x1ac'),'Failure','entity\x20is\x20undefine'));}if(_[_0xd6f0('0x3d')](_0xea0635)&&typeof _0xea0635!=='object'){return _0x31b16d(msgResponse('[callProgressDetecting]',_0xd6f0('0x147'),_0xd6f0('0x1ad')));}switch(_0xea0635[_0xd6f0('0x110')]){case'0':_0xd12f50['outboundNoSuchCallsDay']+=0x1;_0x172e8a[_0xd6f0('0xac')]=0x0;_0x172e8a[_0xd6f0('0xad')]=_0xd6f0('0x1ae');_0x172e8a[_0xd6f0('0xf6')]+=0x1;_0x172e8a[_0xd6f0('0xf2')]+=0x1;ami[_0xd6f0('0x4b')](_0xd6f0('0x1af'),ut[_0xd6f0('0xed')](_0x9bc9c1,_0xd6f0('0x1b0')));_0x402900[_0xd6f0('0xd3')](_0x172e8a)['catch'](loggerCatch(_0xd6f0('0xf3')));if(_0x402900[_0xd6f0('0x1b1')](0x0,_0x9bc9c1,_0xd12f50)){if(_0x172e8a[_0xd6f0('0xf6')]>=_0xd12f50[_0xd6f0('0x1a4')]){_0x402900[_0xd6f0('0xfa')](_0x172e8a,_0x19a51c,_0x31b16d,_0xd6f0('0x1b2'));}else{_0x402900['stateGlobal'](_0x172e8a,_0x19a51c,_0x31b16d,_0xd6f0('0x1b2'));}}break;case'3':_0xd12f50[_0xd6f0('0x63')]+=0x1;_0x172e8a[_0xd6f0('0xac')]=0x3;_0x172e8a[_0xd6f0('0xad')]=_0xd6f0('0x1b3');_0x172e8a[_0xd6f0('0x104')]+=0x1;_0x172e8a[_0xd6f0('0xf2')]+=0x1;ami[_0xd6f0('0x4b')]('custom:agentnoanswer',ut['buildObj'](_0x9bc9c1,_0xd6f0('0x1b4')));_0x402900[_0xd6f0('0xd3')](_0x172e8a)['catch'](loggerCatch(_0xd6f0('0x1b5')));if(_0x402900[_0xd6f0('0x1b1')](0x3,_0x9bc9c1,_0xd12f50)){if(_0x172e8a[_0xd6f0('0x104')]>=_0xd12f50[_0xd6f0('0x1b6')]){_0x402900[_0xd6f0('0xfa')](_0x172e8a,_0x19a51c,_0x31b16d,_0xd6f0('0x1b7'));}else{_0x402900[_0xd6f0('0xf9')](_0x172e8a,_0x19a51c,_0x31b16d,_0xd6f0('0x1b7'));}}break;case'5':_0xd12f50[_0xd6f0('0x1b8')]+=0x1;_0x172e8a[_0xd6f0('0xac')]=0x5;_0x172e8a['statedesc']=_0xd6f0('0x1b9');_0x172e8a[_0xd6f0('0xf4')]+=0x1;_0x172e8a[_0xd6f0('0xf2')]+=0x1;ami[_0xd6f0('0x4b')](_0xd6f0('0x1ba'),ut[_0xd6f0('0xed')](_0x9bc9c1,_0xd6f0('0x1bb')));_0x402900[_0xd6f0('0xd3')](_0x172e8a)['catch'](loggerCatch(_0xd6f0('0x1bc')));if(_0x402900[_0xd6f0('0x1b1')](0x5,_0x9bc9c1,_0xd12f50)){if(_0x172e8a[_0xd6f0('0xf4')]>=_0xd12f50[_0xd6f0('0x1a0')]){_0x402900[_0xd6f0('0xfa')](_0x172e8a,_0x19a51c,_0x31b16d,_0xd6f0('0x1bd'));}else{_0x402900['stateGlobal'](_0x172e8a,_0x19a51c,_0x31b16d,_0xd6f0('0x1bd'));}}break;case'8':_0xd12f50[_0xd6f0('0x60')]+=0x1;_0x172e8a[_0xd6f0('0xac')]=0x8;_0x172e8a[_0xd6f0('0xad')]=_0xd6f0('0x1be');_0x172e8a[_0xd6f0('0xf5')]+=0x1;_0x172e8a[_0xd6f0('0xf2')]+=0x1;ami[_0xd6f0('0x4b')](_0xd6f0('0x1bf'),ut['buildObj'](_0x9bc9c1,_0xd6f0('0x1c0')));_0x402900['createHistory'](_0x172e8a)[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0x1c1')));if(_0x402900['checkRetriveMax'](0x8,_0x9bc9c1,_0xd12f50)){if(_0x172e8a[_0xd6f0('0xf5')]>=_0xd12f50[_0xd6f0('0x1c2')]){_0x402900['createStateFinal'](_0x172e8a,_0x19a51c,_0x31b16d,_0xd6f0('0x1c3'));}else{_0x402900[_0xd6f0('0xf9')](_0x172e8a,_0x19a51c,_0x31b16d,_0xd6f0('0x1c3'));}}break;case'11':_0xd12f50[_0xd6f0('0x1c4')]+=0x1;_0x172e8a[_0xd6f0('0xac')]=0xb;_0x172e8a[_0xd6f0('0xad')]=_0xd6f0('0x121');_0x172e8a['countabandonedretry']+=0x1;_0x172e8a['countglobal']+=0x1;_0x402900[_0xd6f0('0xd3')](_0x172e8a)['catch'](loggerCatch(_0xd6f0('0x125')));if(_0x402900[_0xd6f0('0x1b1')](0xb,_0x9bc9c1,_0xd12f50)){if(_0x172e8a[_0xd6f0('0xf7')]>=_0xd12f50[_0xd6f0('0x123')]){_0x402900[_0xd6f0('0xfa')](_0x172e8a,_0x19a51c,_0x31b16d,'reason\x2011\x20abandoned');}else{_0x402900[_0xd6f0('0xf9')](_0x172e8a,_0x19a51c,_0x31b16d,_0xd6f0('0x1c5'));}}break;case'20':_0xd12f50[_0xd6f0('0x66')]+=0x1;_0x172e8a[_0xd6f0('0xac')]=0x14;_0x172e8a['statedesc']='AgentReject';_0x172e8a[_0xd6f0('0x106')]+=0x1;_0x172e8a[_0xd6f0('0xf2')]+=0x1;ami[_0xd6f0('0x4b')](_0xd6f0('0x1c6'),ut['buildObj'](_0x9bc9c1,'agentreject'));_0x402900[_0xd6f0('0xd3')](_0x172e8a)[_0xd6f0('0xb8')](loggerCatch('[syncAgentComplete][createHistory][20]'));if(_0x402900[_0xd6f0('0x1b1')](0x14,_0x9bc9c1,_0xd12f50)){if(_0x172e8a['countagentrejectretry']>=_0xd12f50[_0xd6f0('0x1a9')]){_0x402900[_0xd6f0('0xfa')](_0x172e8a,_0x19a51c,_0x31b16d,_0xd6f0('0x1c7'));}else{_0x402900[_0xd6f0('0xf9')](_0x172e8a,_0x19a51c,_0x31b16d,_0xd6f0('0x1c7'));}}break;default:_0xd12f50[_0xd6f0('0x67')]+=0x1;_0x172e8a[_0xd6f0('0xac')]=0xc;_0x172e8a['statedesc']=_0xea0635[_0xd6f0('0x110')];_0x402900[_0xd6f0('0xd3')](_0x172e8a)[_0xd6f0('0xb8')](loggerCatch('[syncAgentComplete][createHistory][?]'));if(_0x402900[_0xd6f0('0x1b1')](_0xea0635[_0xd6f0('0x110')],_0x9bc9c1,_0xd12f50)){if(_0x172e8a['countbusyretry']+_0x172e8a[_0xd6f0('0xf5')]+_0x172e8a[_0xd6f0('0x104')]+_0x172e8a[_0xd6f0('0xf6')]+_0x172e8a[_0xd6f0('0x105')]+_0x172e8a[_0xd6f0('0xf7')]+_0x172e8a['countmachineretry']+_0x172e8a[_0xd6f0('0x106')]>=_0xd12f50['dialGlobalMaxRetry']){_0x402900[_0xd6f0('0xf9')](_0x172e8a,_0x19a51c,_0x31b16d,_0xea0635[_0xd6f0('0x110')]);}else{_0x402900[_0xd6f0('0xfa')](_0x172e8a,_0x19a51c,_0x31b16d,_0xea0635[_0xd6f0('0x110')]);}}}});};Dialer[_0xd6f0('0x1d')][_0xd6f0('0xf9')]=function(_0x2e90ec,_0x4e9df5,_0x510f8d,_0x25e297){var _0x50e1ef=new Final(_0x2e90ec);_0x50e1ef[_0xd6f0('0xac')]=0xf;_0x50e1ef[_0xd6f0('0xad')]=_0xd6f0('0x1c8');this[_0xd6f0('0xfa')](_0x50e1ef,_0x4e9df5,_0x510f8d,_0x25e297);};Dialer[_0xd6f0('0x1d')][_0xd6f0('0xfa')]=function(_0x367791,_0x388dd0,_0x4ee4d1,_0x1679ae){this[_0xd6f0('0xd1')](_0x367791)[_0xd6f0('0xc0')](function(){return _0x388dd0(msgResponse(_0xd6f0('0x1ac'),_0xd6f0('0xde'),_0x1679ae));})[_0xd6f0('0xb8')](function(){return _0x4ee4d1(msgResponse('[moveContactManagedDialer][0]','Failure',_0xd6f0('0x1c9')));});};Dialer['prototype'][_0xd6f0('0xa')]=function(_0x4cd339){var _0x51de1f=_0x4cd339[_0xd6f0('0x1ca')]/0x64;var _0x3c541d=_0x4cd339[_0xd6f0('0x11a')]/(_0x4cd339['outboundDropCallsDayTimeout']+_0x4cd339[_0xd6f0('0x5f')]);var _0x1e59ba=Math['round'](_0x4cd339[_0xd6f0('0x1cb')]*(_0x4cd339[_0xd6f0('0x1cc')]/0x64));var _0x1b9a30=Math[_0xd6f0('0x1cd')](_0x4cd339[_0xd6f0('0x1cb')]*(_0x4cd339[_0xd6f0('0x1ce')]/0x64));var _0x498ac8=_0x4cd339[_0xd6f0('0x4f')]+_0x4cd339[_0xd6f0('0x54')];var _0x212f18=Math[_0xd6f0('0x1cf')](_0x4cd339[_0xd6f0('0x72')]*_0x4cd339[_0xd6f0('0x74')]*_0x4cd339['predictiveIntervalHitRate']*_0x4cd339[_0xd6f0('0x6f')]);if(_[_0xd6f0('0x3d')](_0x4cd339['startProgressive'])){if(!_['isUndefined'](_0x4cd339[_0xd6f0('0x93')])){_0x4cd339[_0xd6f0('0x93')]=undefined;loggerPredictive[_0xd6f0('0x9a')](_0xd6f0('0x1d0'),_0xd6f0('0x1d1'));}if(!_['isUndefined'](_0x4cd339[_0xd6f0('0x95')])){loggerPredictive['error'](_0xd6f0('0x1d0'),_0xd6f0('0x1d2'));clearInterval(_0x4cd339['handlePredictive']);_0x4cd339[_0xd6f0('0x95')]=undefined;}_0x4cd339[_0xd6f0('0x2b')]=moment()[_0xd6f0('0x7a')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0xd6f0('0x81')](_0x4cd339[_0xd6f0('0x40')],_0xd6f0('0x1d3'),_0x4cd339[_0xd6f0('0x2b')]);this[_0xd6f0('0x15b')](_0x4cd339,0x1);}else if(ifInterval(_0x4cd339[_0xd6f0('0x1d4')],_0x4cd339['startProgressive'])){this[_0xd6f0('0x15b')](_0x4cd339,0x1);loggerPredictiveCalls[_0xd6f0('0x81')](_0xd6f0('0x1d5'),_0x4cd339[_0xd6f0('0x2b')],_0x4cd339['name']);_0x4cd339[_0xd6f0('0x72')]=0x0;_0x4cd339['predictiveIntervalErlangCallsDroppedCalls']=0x0;}else if(_0x51de1f<_0x3c541d&&_0x4cd339[_0xd6f0('0x1d6')]===_0xd6f0('0x1d7')){freeVariablesPredictive(_0x4cd339);loggerPredictive[_0xd6f0('0x81')](_0xd6f0('0x1d8'),'Dropped\x20calls\x20day',_0x3c541d,'startProgressive',_0x4cd339[_0xd6f0('0x40')]);}else if(_0x212f18<_0x4cd339['predictiveIntervalErlangCallsDroppedCalls']&&_0x4cd339[_0xd6f0('0x1d6')]===_0xd6f0('0x1d7')){freeVariablesPredictive(_0x4cd339);loggerPredictive[_0xd6f0('0x81')](_0xd6f0('0x1d9'),_0xd6f0('0x1da'),_0x212f18,'Drop\x20in\x20this\x20interval',_0x4cd339[_0xd6f0('0x6d')],_0xd6f0('0x2b'),_0x4cd339[_0xd6f0('0x40')]);}else if(!ifInterval(_0x4cd339[_0xd6f0('0x1d4')],_0x4cd339[_0xd6f0('0x2b')])&&_[_0xd6f0('0x3d')](_0x4cd339[_0xd6f0('0x93')])&&!_[_0xd6f0('0x3d')](_0x4cd339[_0xd6f0('0x2b')])){_0x4cd339[_0xd6f0('0x93')]=moment()[_0xd6f0('0x7a')](_0xd6f0('0xfe'));loggerPredictive[_0xd6f0('0x81')](_0x4cd339[_0xd6f0('0x40')],_0xd6f0('0x1db'),_0x4cd339[_0xd6f0('0x93')]);this['averageHandleTime'](_0x4cd339[_0xd6f0('0x1d4')])['then'](this[_0xd6f0('0x1dc')](_0x4cd339))['then'](mergeDataErlangB(_0x4cd339))['then'](this[_0xd6f0('0x1dd')](_0x4cd339))[_0xd6f0('0xb8')](loggerCatchPredictive(_0xd6f0('0x1de'),_0x4cd339));}else if(!ifInterval(_0x4cd339[_0xd6f0('0x1d4')],_0x4cd339[_0xd6f0('0x93')])){_0x4cd339[_0xd6f0('0x6d')]=0x0;_0x4cd339[_0xd6f0('0x93')]=moment()[_0xd6f0('0x7a')](_0xd6f0('0xfe'));loggerPredictive['info'](_0x4cd339['name'],_0xd6f0('0x1df'),_0x4cd339[_0xd6f0('0x93')]);clearInterval(_0x4cd339['handlePredictive']);_0x4cd339[_0xd6f0('0x95')]=undefined;this['averageHandleTime'](_0x4cd339[_0xd6f0('0x1d4')])['then'](this['getDataPredictive'](_0x4cd339))[_0xd6f0('0xc0')](mergeDataErlangB(_0x4cd339))[_0xd6f0('0xc0')](this['startMethodPredictive'](_0x4cd339))[_0xd6f0('0xb8')](loggerCatchPredictive(_0xd6f0('0x1e0'),_0x4cd339));}else if(_0x4cd339['predictiveIntervalAvailable']&&_0x498ac8<_0x4cd339[_0xd6f0('0x1cb')]-_0x1b9a30){freeVariablesPredictive(_0x4cd339);loggerPredictive[_0xd6f0('0x81')](_0x4cd339['name'],_0xd6f0('0x1e1'),_0x498ac8,_0xd6f0('0x1e2'),_0x4cd339[_0xd6f0('0x1cb')],'-',_0x1b9a30,'=',_0x4cd339[_0xd6f0('0x1cb')]-_0x1b9a30,')');}else if(_0x4cd339[_0xd6f0('0x1cb')]&&_0x498ac8>_0x4cd339[_0xd6f0('0x1cb')]+_0x1e59ba){freeVariablesPredictive(_0x4cd339);loggerPredictive['info'](_0x4cd339['name'],_0xd6f0('0x1e1'),_0x498ac8,_0xd6f0('0x1e3'),_0x4cd339[_0xd6f0('0x1cb')],'+',_0x1e59ba,'=',_0x4cd339[_0xd6f0('0x1cb')]+_0x1e59ba,')');}};Dialer[_0xd6f0('0x1d')][_0xd6f0('0x1dc')]=function(_0x53eb93){var _0x386dc2=this;return function(_0x1f9774){return new BPromise(function(_0x278c16,_0x460bd5){_[_0xd6f0('0x12c')](_0x53eb93,_0x1f9774[0x0]);if(checkGetDataPredictive(_0x1f9774[0x0])){var _0x1ad377=_0x53eb93[_0xd6f0('0x1cb')]=_0x53eb93['talking']+_0x53eb93[_0xd6f0('0x4f')];var _0x14f925=_0x53eb93[_0xd6f0('0x1d4')]*0x3c;var _0x48235b=_0x1f9774[0x0][_0xd6f0('0x69')]+_0x1f9774[0x0]['predictiveIntervalAvgHoldtime'];var _0x54b755=(_0x1f9774[0x0][_0xd6f0('0x68')]+_0x1f9774[0x0][_0xd6f0('0x6b')]+_0x1f9774[0x0][_0xd6f0('0x6a')])/_0x1f9774[0x0][_0xd6f0('0x71')];_0x53eb93['predictiveIntervalHitRate']=_0x54b755>0x0?_0x54b755:0x1;switch(_0x53eb93[_0xd6f0('0x1d6')]){case _0xd6f0('0x1d7'):var _0x515257=_0x53eb93[_0xd6f0('0x1ca')]/0x64;return _0x386dc2[_0xd6f0('0x1e4')](_0x1ad377,_0x14f925,_0x48235b,_0x54b755,_0x515257)['then'](function(_0x2c48a6){return _0x278c16(_0x2c48a6);});case _0xd6f0('0x1e5'):var _0x663471=_0x53eb93[_0xd6f0('0x1ca')]/0x64;return _0x386dc2[_0xd6f0('0x1e6')](_0x1ad377,_0x14f925,_0x48235b,_0x54b755,_0x663471)[_0xd6f0('0xc0')](function(_0x2e0294){return _0x278c16(_0x2e0294);});default:return _0x460bd5(msgResponse(_0xd6f0('0x1e7'),_0xd6f0('0x147'),'Unknown\x20Predictive'));}}else{return _0x460bd5(msgResponse(_0xd6f0('0x1e7'),_0xd6f0('0x147'),_0xd6f0('0x1e8')));}});};};Dialer[_0xd6f0('0x1d')][_0xd6f0('0x1e9')]=function(_0x8a4988){var _0x454dd5=this;return function(_0x245549){return new BPromise(function(_0x41ec2d,_0x7d0081){_[_0xd6f0('0x12c')](_0x8a4988,_0x245549[0x0]);if(checkGetDataPredictive(_0x245549[0x0])){loggerPredictive[_0xd6f0('0x81')](JSON[_0xd6f0('0x78')](_0x245549[0x0]));if(_0x8a4988[_0xd6f0('0x1d6')]===_0xd6f0('0x1d7')){return _0x454dd5[_0xd6f0('0xcf')](_0x8a4988['id'])[_0xd6f0('0xc0')](function(_0x1c743c){var _0x670494=_0x8a4988[_0xd6f0('0x50')]-_0x1c743c[0x0][_0xd6f0('0x1ea')];var _0x4d9328=_0x8a4988[_0xd6f0('0x1d4')]*0x3c;var _0x2aafb4=_0x245549[0x0][_0xd6f0('0x69')]+_0x245549[0x0][_0xd6f0('0x88')];var _0x1846e9=(_0x245549[0x0][_0xd6f0('0x68')]+_0x245549[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x245549[0x0][_0xd6f0('0x6a')])/_0x245549[0x0]['predictiveIntervalTotalCalls'];var _0x12db26=_0x8a4988[_0xd6f0('0x1ca')]/0x64;_0x8a4988['predictiveIntervalPauses']=_0x1c743c[0x0][_0xd6f0('0x1ea')]||0x0;_0x8a4988[_0xd6f0('0x6e')]=_0x1846e9>0x0?_0x1846e9:0x1;return _0x454dd5['abandonmentRate'](_0x670494,_0x4d9328,_0x2aafb4,_0x1846e9,_0x12db26);})[_0xd6f0('0xc0')](function(_0x14beff){return _0x41ec2d(_0x14beff);})[_0xd6f0('0xb8')](function(_0x53afb0){return _0x7d0081(msgResponse(_0xd6f0('0x1eb'),_0xd6f0('0x147'),JSON[_0xd6f0('0x78')](_0x53afb0)));});}if(_0x8a4988['dialPredictiveOptimization']==='agentBusyFactor'){return _0x454dd5[_0xd6f0('0xcf')](_0x8a4988['id'])[_0xd6f0('0xc0')](function(_0x3a8562){var _0x332117=_0x8a4988[_0xd6f0('0x50')]-_0x3a8562[0x0][_0xd6f0('0x1ea')];var _0x33ca87=_0x8a4988['dialPredictiveInterval']*0x3c;var _0x44329e=_0x245549[0x0][_0xd6f0('0x69')]+_0x245549[0x0][_0xd6f0('0x88')];var _0x558955=(_0x245549[0x0][_0xd6f0('0x68')]+_0x245549[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x245549[0x0][_0xd6f0('0x6a')])/_0x245549[0x0][_0xd6f0('0x71')];var _0x2bf94b=_0x8a4988[_0xd6f0('0x1ca')]/0x64;_0x8a4988[_0xd6f0('0x70')]=_0x3a8562[0x0][_0xd6f0('0x1ea')]||0x0;_0x8a4988[_0xd6f0('0x6e')]=_0x558955>0x0?_0x558955:0x1;return _0x454dd5[_0xd6f0('0x1e6')](_0x332117,_0x33ca87,_0x44329e,_0x558955,_0x2bf94b);})[_0xd6f0('0xc0')](function(_0x8941e2){return _0x41ec2d(_0x8941e2);})[_0xd6f0('0xb8')](function(_0x50fd01){return _0x7d0081(msgResponse('[CatchErlangB]',_0xd6f0('0x147'),JSON[_0xd6f0('0x78')](_0x50fd01)));});}}else{return _0x7d0081(msgResponse(_0xd6f0('0x1e7'),_0xd6f0('0x147'),_0xd6f0('0x1e8')));}});};};Dialer[_0xd6f0('0x1d')][_0xd6f0('0x1dd')]=function(_0x1d0f6c){var _0xcf9328=this;return function(){var _0x437523=0x0;var _0x181e90=Math[_0xd6f0('0x1cf')](_0x1d0f6c[_0xd6f0('0x73')]*0x3e8);if(_0x181e90>0x0){_0x181e90=_0x181e90<0x64?0x64:_0x181e90;loggerPredictive[_0xd6f0('0x81')](_0x1d0f6c[_0xd6f0('0x40')],_0xd6f0('0x1ec'),_0x181e90,_0xd6f0('0x49'));_0x1d0f6c[_0xd6f0('0x95')]=setInterval(function(){_0xcf9328['handlePredictive'](_0x1d0f6c);loggerPredictiveCalls[_0xd6f0('0x81')]('[handlePredictive]',_0x437523+=0x1);},_0x181e90);}else{loggerPredictive[_0xd6f0('0x81')](_0x1d0f6c[_0xd6f0('0x40')],_0xd6f0('0x1ed'));}};};Dialer[_0xd6f0('0x1d')][_0xd6f0('0x1ee')]=function(_0xcad5a3,_0x55011b){var _0x1fe44d=this;return function(_0x172397){if(_[_0xd6f0('0x80')](_0x172397)){if(_[_0xd6f0('0xb4')](_0x55011b['UserId'])||!_0x55011b[_0xd6f0('0x1ef')]){if(_0xcad5a3[_0xd6f0('0x161')]==='booked'){_0xcad5a3[_0xd6f0('0x12e')]=_['isUndefined'](_0xcad5a3['queueStatusComplete'])?!![]:_0xcad5a3['queueStatusComplete'];var _0x4532e5=uuid['v4']();_0x1fe44d[_0xd6f0('0xb2')][_0x4532e5]=new Action(_0xcad5a3,_0x55011b,_0x4532e5);loggerBooked[_0xd6f0('0x81')](_0xd6f0('0x1f0'),_0x4532e5,_0xd6f0('0x1f1'),JSON[_0xd6f0('0x78')](_0xcad5a3['queueStatusComplete']),'Queue:\x20',_0xcad5a3[_0xd6f0('0x40')]);if(_0xcad5a3['queueStatusComplete']){_0xcad5a3[_0xd6f0('0x12e')]=![];_0x1fe44d[_0xd6f0('0x12a')][_0x1fe44d['actions'][_0x4532e5]['queue']]=[];ami['Action']({'actionid':_0x4532e5,'action':'queuestatus','queue':_0xcad5a3['name']})[_0xd6f0('0xb8')](function(){_0x1fe44d['updateOriginated'](_0xcad5a3);_0x1fe44d[_0xd6f0('0xc7')]({'active':![],'ContactId':_0x1fe44d[_0xd6f0('0xb2')][_0x4532e5]['ContactId'],'ListId':_0x1fe44d[_0xd6f0('0xb2')][_0x4532e5][_0xd6f0('0xda')],'VoiceQueueId':_0x1fe44d[_0xd6f0('0xb2')][_0x4532e5][_0xd6f0('0xff')]||undefined,'CampaignId':_0x1fe44d[_0xd6f0('0xb2')][_0x4532e5][_0xd6f0('0xdc')]||undefined})['catch'](loggerCatch(_0xd6f0('0x1f2')));delete _0x1fe44d[_0xd6f0('0xb2')][_0x4532e5];});}else{loggerBooked['info'](_0xd6f0('0x1f3'),JSON[_0xd6f0('0x78')](_0xcad5a3['queueStatusComplete']),'Queue:\x20',_0xcad5a3[_0xd6f0('0x40')]);_0x1fe44d[_0xd6f0('0xba')](_0xcad5a3);_0x1fe44d[_0xd6f0('0xc7')]({'active':![],'ContactId':_0x1fe44d[_0xd6f0('0xb2')][_0x4532e5]['ContactId'],'ListId':_0x1fe44d['actions'][_0x4532e5][_0xd6f0('0xda')],'VoiceQueueId':_0x1fe44d[_0xd6f0('0xb2')][_0x4532e5][_0xd6f0('0xff')]||undefined,'CampaignId':_0x1fe44d[_0xd6f0('0xb2')][_0x4532e5][_0xd6f0('0xdc')]||undefined})[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0x1f2')));delete _0x1fe44d['actions'][_0x4532e5];}}else{return _0x1fe44d[_0xd6f0('0x16c')](_0xcad5a3,_0x55011b);}}else{if(getDiff(_0x55011b[_0xd6f0('0x1f4')])<_0xcad5a3[_0xd6f0('0x1f5')]*0x3c){if(_0x55011b[_0xd6f0('0x1f6')]&&!_0x55011b[_0xd6f0('0x1f6')][_0xd6f0('0x1f7')]){_0x1fe44d[_0xd6f0('0x22')]['run'](_0x55011b['id'])[_0xd6f0('0x20')](function(){_0x1fe44d['updateOriginated'](_0xcad5a3);});}else{_0x1fe44d['unlockContact']({'active':![]},_0x55011b['id'],0x1)[_0xd6f0('0x20')](function(){_0x1fe44d[_0xd6f0('0xba')](_0xcad5a3);});}}else{_0xcad5a3['outboundReCallsDay']+=0x1;_0x1fe44d['updateOriginated'](_0xcad5a3);if(_0xcad5a3[_0xd6f0('0x1f8')]){_0x1fe44d[_0xd6f0('0xc7')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x55011b[_0xd6f0('0xd9')],'ListId':_0x55011b[_0xd6f0('0xda')],'VoiceQueueId':_0x55011b[_0xd6f0('0xff')]||undefined,'CampaignId':_0x55011b['CampaignId']||undefined})[_0xd6f0('0xb8')](loggerCatch('[rescheduleContact][dialRecallInQueue]'));_0x1fe44d[_0xd6f0('0xd3')](createObjHistory(_0xcad5a3,_0x55011b,'RECALLINQUEUE',0x17,_0xd6f0('0x1f9')))[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0x1fa')));}else{_0x1fe44d[_0xd6f0('0xd7')](createObjHistory(_0xcad5a3,_0x55011b,'RECALLFAILEDTIMEOUT',0x16,_0xd6f0('0x1fb')),_0xd6f0('0x1fc'),_0xd6f0('0x1fd'));}}}}else{_0xcad5a3['outboundBlacklistCallsDay']+=0x1;_0x1fe44d['saveInDb'](createObjHistory(_0xcad5a3,_0x55011b,'BLACKLIST',0xd,'Blacklist'),_0xd6f0('0x1fe'),_0xd6f0('0x1ff'));throw _0xd6f0('0x200');}};};Dialer[_0xd6f0('0x1d')][_0xd6f0('0x201')]=function(_0x430416){var _0x35edfe=this;var _0x1bc35b=_0x430416[_0xd6f0('0x202')]-_0x430416[_0xd6f0('0x9e')]-_0x430416[_0xd6f0('0xcc')];emitCampaignSummary(_0x430416);if(_0x1bc35b>0x0){if(_0x1bc35b>this[_0xd6f0('0x27')]){_0x1bc35b=this['maxNumberOriginate'];}_0x430416[_0xd6f0('0xcc')]+=_0x1bc35b;this[_0xd6f0('0xcd')](_0x430416['id'],_0x1bc35b,_0x430416[_0xd6f0('0x203')],_0x430416)[_0xd6f0('0xc0')](function(_0x54d973){_0x430416[_0xd6f0('0xcc')]-=_0x1bc35b;_0x430416[_0xd6f0('0xcc')]=_0x430416[_0xd6f0('0xcc')]>0x0?_0x430416['temp']:0x0;if(!checkContactEmpty(_0x54d973)){_0x430416[_0xd6f0('0x3e')]='AVAILABLE_CONTACTS_FINISHED';logger[_0xd6f0('0x81')]('[getContactCampaign2][Empty]'+_0x430416[_0xd6f0('0x40')]);}else{_0x430416[_0xd6f0('0x9e')]+=_0x54d973[_0xd6f0('0x9d')];_0x430416['message']=_0xd6f0('0x204');for(var _0x55d512=0x0;_0x55d512<_0x54d973[_0xd6f0('0x9d')];_0x55d512+=0x1){_0x430416[_0xd6f0('0x205')]+=0x1;if(_[_0xd6f0('0xb4')](_0x54d973[_0x55d512])||_['isNil'](_0x54d973[_0x55d512][_0xd6f0('0x16f')])||_[_0xd6f0('0xb4')](_0x54d973[_0x55d512][_0xd6f0('0x16f')][_0xd6f0('0x170')])){_0x35edfe['emptyContact'](_0xd6f0('0x206'),_0x430416,_0x54d973[_0x55d512]);}else{_0x35edfe[_0xd6f0('0xc4')](_[_0xd6f0('0xd8')](_0x54d973[_0x55d512],[_0xd6f0('0xdc'),'Contact.phone']))['then'](_0x35edfe[_0xd6f0('0x1ee')](_0x430416,_0x54d973[_0x55d512]))[_0xd6f0('0xb8')](_0x35edfe[_0xd6f0('0xd5')]('[actionOriginateIvr]\x20',_0x430416));}}}})[_0xd6f0('0xb8')](loggerGetContactDialer(_0xd6f0('0x207'),_0x430416,_0x1bc35b));}};Dialer[_0xd6f0('0x1d')][_0xd6f0('0x15b')]=function(_0x1e27b9,_0x28de3a){var _0x2d1c6f=this;var _0x4e2992=[];var _0x250cb9=_0x28de3a>=0x1?_0x28de3a:0x1;if(_0x1e27b9[_0xd6f0('0x161')]===_0xd6f0('0x9')){_0x250cb9=0x1;}var _0x3963cb=Math[_0xd6f0('0x1cf')](_0x1e27b9[_0xd6f0('0x4f')]*_0x250cb9)-_0x1e27b9[_0xd6f0('0x9e')]-_0x1e27b9[_0xd6f0('0xcc')];emitVoiceQueueSummary(_0x1e27b9);if(_0x1e27b9[_0xd6f0('0x208')]>0x0){var _0x2bbf7f=_0x1e27b9[_0xd6f0('0x208')]-_0x1e27b9[_0xd6f0('0x9e')]-_0x1e27b9[_0xd6f0('0x54')]-_0x1e27b9[_0xd6f0('0xcc')]-_0x1e27b9[_0xd6f0('0x51')];if(_0x3963cb>_0x2bbf7f){_0x3963cb=_0x2bbf7f;}}if(_0x3963cb>0x0){if(_0x1e27b9[_0xd6f0('0x161')]==='booked'){_0x3963cb=0x1;}if(_0x3963cb>this['maxNumberOriginate']){_0x3963cb=this[_0xd6f0('0x27')];}_0x1e27b9['temp']+=_0x3963cb;for(var _0x501f8c in this[_0xd6f0('0x25')]){if(typeof this[_0xd6f0('0x25')][_0x501f8c]!=='undefined'){if(this['agents'][_0x501f8c][_0xd6f0('0xac')]===_0xd6f0('0x209')&&this[_0xd6f0('0x25')][_0x501f8c][_0xd6f0('0xb6')]===_0xd6f0('0xe1')){_0x4e2992[_0xd6f0('0x12b')](this[_0xd6f0('0x25')][_0x501f8c]['id']);}}}this[_0xd6f0('0xcb')](_0x1e27b9['id'],_0x4e2992,_0x3963cb,_0x1e27b9[_0xd6f0('0x203')],_0x1e27b9)[_0xd6f0('0xc0')](function(_0x37d0a5){_0x1e27b9[_0xd6f0('0xcc')]-=_0x3963cb;_0x1e27b9['temp']=_0x1e27b9[_0xd6f0('0xcc')]>0x0?_0x1e27b9[_0xd6f0('0xcc')]:0x0;if(!checkContactEmpty(_0x37d0a5)){_0x2d1c6f[_0xd6f0('0xbe')](_0x1e27b9)[_0xd6f0('0xc0')](sendMessageReschedule(_0x1e27b9))[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0xc1')));}else{_0x1e27b9[_0xd6f0('0x9e')]+=_0x37d0a5[_0xd6f0('0x9d')];_0x1e27b9[_0xd6f0('0x3e')]=_0x1e27b9[_0xd6f0('0x161')]==='booked'?'ACTIVE':_0xd6f0('0x204');for(var _0x57a646=0x0;_0x57a646<_0x37d0a5[_0xd6f0('0x9d')];_0x57a646+=0x1){if(_['isNil'](_0x37d0a5[_0x57a646])||_[_0xd6f0('0xb4')](_0x37d0a5[_0x57a646][_0xd6f0('0x16f')])||_['isNil'](_0x37d0a5[_0x57a646][_0xd6f0('0x16f')][_0xd6f0('0x170')])){_0x2d1c6f[_0xd6f0('0x20a')](_0xd6f0('0x206'),_0x1e27b9,_0x37d0a5[_0x57a646]);}else{_0x2d1c6f[_0xd6f0('0xc2')](_[_0xd6f0('0xd8')](_0x37d0a5[_0x57a646],[_0xd6f0('0xff'),_0xd6f0('0x20b')]))['then'](_0x2d1c6f[_0xd6f0('0x1ee')](_0x1e27b9,_0x37d0a5[_0x57a646]))[_0xd6f0('0xb8')](_0x2d1c6f[_0xd6f0('0xd5')](_0xd6f0('0x206'),_0x1e27b9));}}}})[_0xd6f0('0xb8')](loggerGetContactDialer('[getContactDialer2]',_0x1e27b9,_0x3963cb));}};Dialer['prototype'][_0xd6f0('0x95')]=function(_0x381dd0){if(_0x381dd0[_0xd6f0('0x208')]>0x0){var _0xb8d8b8=_0x381dd0[_0xd6f0('0x208')]-_0x381dd0[_0xd6f0('0x9e')]-_0x381dd0[_0xd6f0('0x54')];if(_0xb8d8b8>0x0){this[_0xd6f0('0x20c')](_0x381dd0);}else{loggerPredictiveCalls['info'](_0xd6f0('0x20d'));}}else{this[_0xd6f0('0x20c')](_0x381dd0);}};Dialer[_0xd6f0('0x1d')][_0xd6f0('0x20c')]=function(_0x5c642a){var _0xd3a7f=this;var _0xa00cef=[];_0x5c642a[_0xd6f0('0x9e')]+=0x1;for(var _0x289b58 in this[_0xd6f0('0x25')]){if(typeof this['agents'][_0x289b58]!==_0xd6f0('0x9f')){if(this[_0xd6f0('0x25')][_0x289b58][_0xd6f0('0xac')]===_0xd6f0('0x209')&&this[_0xd6f0('0x25')][_0x289b58]['status']===_0xd6f0('0xe1')){_0xa00cef[_0xd6f0('0x12b')](this['agents'][_0x289b58]['id']);}}}this[_0xd6f0('0xcb')](_0x5c642a['id'],_0xa00cef,0x1,_0x5c642a[_0xd6f0('0x203')],_0x5c642a)[_0xd6f0('0xc0')](function(_0x59f2f6){if(!checkContactEmpty(_0x59f2f6)){checkContactLowerLimitOriginate(_0x5c642a,0x1,0x0);_0xd3a7f[_0xd6f0('0xbe')](_0x5c642a)[_0xd6f0('0xc0')](sendMessageReschedule(_0x5c642a))[_0xd6f0('0xb8')](loggerCatch(_0xd6f0('0xc1')));}else{_0x5c642a[_0xd6f0('0x3e')]=_0xd6f0('0x204');if(_['isNil'](_0x59f2f6[0x0])||_['isNil'](_0x59f2f6[0x0][_0xd6f0('0x16f')])||_[_0xd6f0('0xb4')](_0x59f2f6[0x0]['Contact']['phone'])){_0xd3a7f[_0xd6f0('0x20a')]('[actionOriginate]\x20',_0x5c642a,_0x59f2f6[0x0]);}else{_0xd3a7f[_0xd6f0('0xc2')](_[_0xd6f0('0xd8')](_0x59f2f6[0x0],[_0xd6f0('0xff'),'Contact.phone']))[_0xd6f0('0xc0')](_0xd3a7f['checkContactBlack'](_0x5c642a,_0x59f2f6[0x0]))[_0xd6f0('0xb8')](_0xd3a7f[_0xd6f0('0xd5')](_0xd6f0('0x20e'),_0x5c642a));}}})[_0xd6f0('0xb8')](loggerGetContactDialer(_0xd6f0('0x20f'),_0x5c642a,0x1));emitVoiceQueueSummary(_0x5c642a);};Dialer['prototype'][_0xd6f0('0x1e4')]=function(_0x213025,_0x4cb65f,_0x2d027a,_0x23ceff,_0x49b590,_0xd5f542){loggerPredictive[_0xd6f0('0x81')](_0xd6f0('0x210'));loggerPredictive[_0xd6f0('0x81')](_0xd6f0('0x211'),_0x213025);loggerPredictive[_0xd6f0('0x81')](_0xd6f0('0x212'),_0x4cb65f);loggerPredictive['info'](_0xd6f0('0x213'),_0x2d027a);loggerPredictive[_0xd6f0('0x81')](_0xd6f0('0x214'),_0x23ceff);loggerPredictive[_0xd6f0('0x81')]('Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x49b590);loggerPredictive[_0xd6f0('0x81')](_0xd6f0('0x215'));return new BPromise(function(_0x218d5a,_0x2a824c){if(_0x213025<=0x0||isNaN(_0x213025)){return _0x2a824c(msgResponse(_0xd6f0('0x216'),_0xd6f0('0x48'),_0xd6f0('0x217')+_0x213025));}if(_0x2d027a<=0x0||isNaN(_0x2d027a)){return _0x2a824c(msgResponse(_0xd6f0('0x216'),_0xd6f0('0x48'),_0xd6f0('0x218')+_0x2d027a));}if(_0x23ceff<=0x0||isNaN(_0x23ceff)){return _0x2a824c(msgResponse('[abandonmentRate]','Error',_0xd6f0('0x219')+_0x23ceff));}if(_0x4cb65f<=0x0||isNaN(_0x4cb65f)){return _0x2a824c(msgResponse(_0xd6f0('0x216'),_0xd6f0('0x48'),_0xd6f0('0x21a')+_0x4cb65f));}if(_0x49b590<=0x0||isNaN(_0x49b590)){return _0x2a824c(msgResponse('[abandonmentRate]',_0xd6f0('0x48'),_0xd6f0('0x21b')+_0x49b590));}_0xd5f542=_0xd5f542||0x0;var _0x1e9462=0x1/_0x2d027a;var _0x40b0e3=0x0;var _0x539152=0x0;var _0x5223df=0x0;var _0x1b2cd9=0x0;for(var _0x56596e=0x0;_0x5223df<_0x49b590;_0x56596e+=0x1){_0x539152=_0x56596e/_0x4cb65f;_0x40b0e3=(_0x23ceff*_0x539152+_0xd5f542)/_0x1e9462;_0x5223df=erlangb(_0x40b0e3,_0x213025);_0x1b2cd9=_0x40b0e3/_0x213025*(0x1-erlangb(_0x40b0e3,_0x213025));}return _0x218d5a({'erlangCalls':_0x56596e,'erlangCallToSecond':_0x4cb65f/_0x56596e,'erlangAbandonmentRate':_0x5223df,'erlangBusyFactor':_0x1b2cd9});});};Dialer['prototype']['busyFactor']=function(_0x522199,_0x41e6eb,_0x3f1a60,_0x675918,_0x478ff9,_0x2a8bd5){loggerPredictive[_0xd6f0('0x81')](_0xd6f0('0x21c'));loggerPredictive[_0xd6f0('0x81')](_0xd6f0('0x211'),_0x522199);loggerPredictive[_0xd6f0('0x81')](_0xd6f0('0x212'),_0x41e6eb);loggerPredictive['info'](_0xd6f0('0x213'),_0x3f1a60);loggerPredictive[_0xd6f0('0x81')](_0xd6f0('0x214'),_0x675918);loggerPredictive['info'](_0xd6f0('0x21d'),_0x478ff9);loggerPredictive[_0xd6f0('0x81')](_0xd6f0('0x215'));return new BPromise(function(_0x3b52d8,_0x192c04){if(_0x522199<=0x0||isNaN(_0x522199)){return _0x192c04(msgResponse(_0xd6f0('0x21e'),_0xd6f0('0x48'),_0xd6f0('0x217')+_0x522199));}if(_0x3f1a60<=0x0||isNaN(_0x3f1a60)){return _0x192c04(msgResponse('[busyFactor]',_0xd6f0('0x48'),_0xd6f0('0x218')+_0x3f1a60));}if(_0x675918<=0x0||isNaN(_0x675918)){return _0x192c04(msgResponse('[busyFactor]',_0xd6f0('0x48'),'p\x20=\x20'+_0x675918));}if(_0x41e6eb<=0x0||isNaN(_0x41e6eb)){return _0x192c04(msgResponse(_0xd6f0('0x21e'),'Error','interval\x20=\x20'+_0x41e6eb));}if(_0x478ff9<=0x0||isNaN(_0x478ff9)){return _0x192c04(msgResponse(_0xd6f0('0x21e'),_0xd6f0('0x48'),_0xd6f0('0x21f')+_0x478ff9));}_0x2a8bd5=_0x2a8bd5||0x0;var _0x1cd81c=0x1/_0x3f1a60;var _0x407af9=0x0;var _0x2df05c=0x0;var _0x4fdc47=0x0;var _0x3bd6ee=0x0;for(var _0x137fe4=0x0;_0x3bd6ee<_0x478ff9;_0x137fe4+=0x1){_0x2df05c=_0x137fe4/_0x41e6eb;_0x407af9=(_0x675918*_0x2df05c+_0x2a8bd5)/_0x1cd81c;_0x4fdc47=erlangb(_0x407af9,_0x522199);_0x3bd6ee=_0x407af9/_0x522199*(0x1-erlangb(_0x407af9,_0x522199));}return _0x3b52d8({'erlangCalls':_0x137fe4,'erlangCallToSecond':_0x41e6eb/_0x137fe4,'erlangAbandonmentRate':_0x4fdc47,'erlangBusyFactor':_0x3bd6ee});});};module[_0xd6f0('0x220')]=Dialer;
\ No newline at end of file
index 70ea367..4af2773 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6f2=['ringtime','responsetime','holdtime','talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','CampaignId','originatecalleridnum','originatecalleridname','util','moment','milliseconds','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','uniqueid','name','starttime','droptime','endtime'];(function(_0x23dcdc,_0x5592bb){var _0x13ddbb=function(_0x1a1593){while(--_0x1a1593){_0x23dcdc['push'](_0x23dcdc['shift']());}};_0x13ddbb(++_0x5592bb);}(_0xe6f2,0x1a7));var _0x2e6f=function(_0x51f0f1,_0x43dec4){_0x51f0f1=_0x51f0f1-0x0;var _0x1cbeb6=_0xe6f2[_0x51f0f1];return _0x1cbeb6;};'use strict';var util=require(_0x2e6f('0x0'));var _=require('lodash');var moment=require(_0x2e6f('0x1'));function getSeconds(_0x438783,_0x4e4f23){var _0x103040=moment(_0x438783)[_0x2e6f('0x2')](0x0);var _0x3b9a97=moment(_0x4e4f23)[_0x2e6f('0x2')](0x0);return _0x103040['diff'](_0x3b9a97,'seconds');}function QueueCallerAbandon(_0x34c550,_0x29bbaf){this['scheduledat']=_0x34c550[_0x2e6f('0x3')];this[_0x2e6f('0x4')]=_0x34c550[_0x2e6f('0x4')];this[_0x2e6f('0x5')]=_0x34c550[_0x2e6f('0x4')]===_0x2e6f('0x6')?_0x2e6f('0x7'):_0x34c550[_0x2e6f('0x4')];this[_0x2e6f('0x8')]=_0x34c550['countbusyretry'];this[_0x2e6f('0x9')]=_0x34c550[_0x2e6f('0x9')];this[_0x2e6f('0xa')]=_0x34c550[_0x2e6f('0xa')];this['countglobal']=_0x34c550['countbusyretry']+_0x34c550[_0x2e6f('0x9')]+_0x34c550[_0x2e6f('0xa')]+_0x34c550[_0x2e6f('0xb')]+_0x34c550[_0x2e6f('0xc')]+_0x34c550['countabandonedretry']+_0x34c550[_0x2e6f('0xd')]+_0x34c550[_0x2e6f('0xe')];this[_0x2e6f('0xb')]=_0x34c550[_0x2e6f('0xb')];this[_0x2e6f('0xc')]=_0x34c550[_0x2e6f('0xc')];this[_0x2e6f('0xf')]=_0x34c550[_0x2e6f('0xf')];this['countmachineretry']=_0x34c550[_0x2e6f('0xd')];this[_0x2e6f('0xe')]=_0x34c550[_0x2e6f('0xe')];this['uniqueid']=_0x29bbaf[_0x2e6f('0x10')];this['calleridname']=_0x34c550[_0x2e6f('0x11')];this['calleridnum']=_0x34c550['number'];this[_0x2e6f('0x12')]=_0x34c550['starttime'];this['responsetime']=_0x34c550['responsetime'];this[_0x2e6f('0x13')]=_0x34c550[_0x2e6f('0x13')];this[_0x2e6f('0x14')]=this['droptime'];this[_0x2e6f('0x15')]=getSeconds(_0x34c550[_0x2e6f('0x16')],_0x34c550[_0x2e6f('0x12')]);this[_0x2e6f('0x17')]=getSeconds(this['droptime'],_0x34c550[_0x2e6f('0x16')]);this[_0x2e6f('0x18')]=0x0;this[_0x2e6f('0x7')]=_0x29bbaf[_0x2e6f('0x7')];this[_0x2e6f('0x19')]=_0x29bbaf['connectedlinename'];this[_0x2e6f('0x1a')]=_0x29bbaf[_0x2e6f('0x1a')];this[_0x2e6f('0x1b')]=_0x34c550[_0x2e6f('0x1b')];this[_0x2e6f('0x1c')]=_0x34c550['callbackuniqueid'];this[_0x2e6f('0x1d')]=_0x34c550[_0x2e6f('0x1d')];this[_0x2e6f('0x1e')]=_0x34c550[_0x2e6f('0x1e')];this['ContactId']=_0x34c550[_0x2e6f('0x1f')];this[_0x2e6f('0x20')]=_0x34c550['ListId'];this[_0x2e6f('0x21')]=_0x34c550[_0x2e6f('0x21')];this['VoiceQueueId']=_0x34c550['VoiceQueueId'];this['CampaignId']=_0x34c550[_0x2e6f('0x22')];this['originatecalleridnum']=_0x34c550[_0x2e6f('0x23')]||'';this[_0x2e6f('0x24')]=_0x34c550[_0x2e6f('0x24')]||'';}module['exports']=QueueCallerAbandon;
\ No newline at end of file
+var _0xfce5=['countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','starttime','responsetime','droptime','endtime','ringtime','holdtime','talktime','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','seconds','scheduledat','type','campaigntype','countbusyretry','countnoanswerretry','countglobal','countcongestionretry','countnosuchnumberretry','countdropretry'];(function(_0x3d78d7,_0x44acea){var _0x4b6784=function(_0x284157){while(--_0x284157){_0x3d78d7['push'](_0x3d78d7['shift']());}};_0x4b6784(++_0x44acea);}(_0xfce5,0x1d5));var _0x5fce=function(_0x3926ba,_0x237901){_0x3926ba=_0x3926ba-0x0;var _0x18756e=_0xfce5[_0x3926ba];return _0x18756e;};'use strict';var util=require(_0x5fce('0x0'));var _=require(_0x5fce('0x1'));var moment=require(_0x5fce('0x2'));function getSeconds(_0x3ed57b,_0x4e1e3b){var _0x33bbff=moment(_0x3ed57b)[_0x5fce('0x3')](0x0);var _0x41f7c4=moment(_0x4e1e3b)['milliseconds'](0x0);return _0x33bbff[_0x5fce('0x4')](_0x41f7c4,_0x5fce('0x5'));}function QueueCallerAbandon(_0x17fa26,_0x3a1256){this['scheduledat']=_0x17fa26[_0x5fce('0x6')];this[_0x5fce('0x7')]=_0x17fa26[_0x5fce('0x7')];this[_0x5fce('0x8')]=_0x17fa26[_0x5fce('0x7')]==='outbound'?'queue':_0x17fa26[_0x5fce('0x7')];this[_0x5fce('0x9')]=_0x17fa26[_0x5fce('0x9')];this['countcongestionretry']=_0x17fa26['countcongestionretry'];this['countnoanswerretry']=_0x17fa26[_0x5fce('0xa')];this[_0x5fce('0xb')]=_0x17fa26[_0x5fce('0x9')]+_0x17fa26[_0x5fce('0xc')]+_0x17fa26[_0x5fce('0xa')]+_0x17fa26[_0x5fce('0xd')]+_0x17fa26[_0x5fce('0xe')]+_0x17fa26[_0x5fce('0xf')]+_0x17fa26[_0x5fce('0x10')]+_0x17fa26[_0x5fce('0x11')];this['countnosuchnumberretry']=_0x17fa26[_0x5fce('0xd')];this[_0x5fce('0xe')]=_0x17fa26[_0x5fce('0xe')];this[_0x5fce('0xf')]=_0x17fa26[_0x5fce('0xf')];this['countmachineretry']=_0x17fa26[_0x5fce('0x10')];this['countagentrejectretry']=_0x17fa26['countagentrejectretry'];this[_0x5fce('0x12')]=_0x3a1256[_0x5fce('0x12')];this[_0x5fce('0x13')]=_0x17fa26[_0x5fce('0x14')];this[_0x5fce('0x15')]=_0x17fa26['number'];this[_0x5fce('0x16')]=_0x17fa26[_0x5fce('0x16')];this[_0x5fce('0x17')]=_0x17fa26['responsetime'];this['droptime']=_0x17fa26[_0x5fce('0x18')];this[_0x5fce('0x19')]=this[_0x5fce('0x18')];this[_0x5fce('0x1a')]=getSeconds(_0x17fa26['responsetime'],_0x17fa26[_0x5fce('0x16')]);this[_0x5fce('0x1b')]=getSeconds(this[_0x5fce('0x18')],_0x17fa26[_0x5fce('0x17')]);this[_0x5fce('0x1c')]=0x0;this['queue']=_0x3a1256['queue'];this[_0x5fce('0x1d')]=_0x3a1256[_0x5fce('0x1e')];this[_0x5fce('0x1f')]=_0x3a1256[_0x5fce('0x1f')];this[_0x5fce('0x20')]=_0x17fa26[_0x5fce('0x20')];this[_0x5fce('0x21')]=_0x17fa26[_0x5fce('0x21')];this['callbackat']=_0x17fa26[_0x5fce('0x22')];this[_0x5fce('0x23')]=_0x17fa26[_0x5fce('0x23')];this['ContactId']=_0x17fa26[_0x5fce('0x24')];this[_0x5fce('0x25')]=_0x17fa26[_0x5fce('0x25')];this[_0x5fce('0x26')]=_0x17fa26['UserId'];this[_0x5fce('0x27')]=_0x17fa26[_0x5fce('0x27')];this[_0x5fce('0x28')]=_0x17fa26[_0x5fce('0x28')];this[_0x5fce('0x29')]=_0x17fa26[_0x5fce('0x29')]||'';this['originatecalleridname']=_0x17fa26[_0x5fce('0x2a')]||'';}module[_0x5fce('0x2b')]=QueueCallerAbandon;
\ No newline at end of file
index bd76462..1150f3f 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(_0x1966f5,_0x5b0945){var _0x1f2ecd=function(_0x5bbf3e){while(--_0x5bbf3e){_0x1966f5['push'](_0x1966f5['shift']());}};_0x1f2ecd(++_0x5b0945);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa9e0[_0x3947c9];return _0x2e7871;};'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(_0x2fadfb,_0x32c6ed){var _0xdb2b36=function(_0x2737b5){while(--_0x2737b5){_0x2fadfb['push'](_0x2fadfb['shift']());}};_0xdb2b36(++_0x32c6ed);}(_0xa9e0,0x123));var _0x0a9e=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xa9e0[_0x187ee1];return _0x388160;};'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 0d223b3..3870f6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cce=['../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','trunks','actions','newchannel','varset','bind','newstate','newexten','syncNewExten','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','hangup','syncHangup','syncOriginateResponse','syncNewchannel','context','exten','localstationid','uniqueid','channel','name','info','\x20syncNewchannel\x20','prototype','syncVarSet','variable','hasOwnProperty','channelstate','channelstatedesc','value','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','application/pdf','then','fax','.pdf','catch','error','\x20notify\x20','stringify','\x20receiveFax\x20','merge','response','AttachmentId','update','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','SUCCESS','updateStatus','faxstatusstring','send','execOriginate','FaxAccountId','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','checkTrunk','Trunk','isValid','path','execute','format','dir','variablesAction','Action','addVariables','ext','isTrunkReachable','isNil','active','SIP/%s','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20work]','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','bluebird','uuid','moment','tiff2pdf','./util/gs','../../../config/logger','../ami','./rpcDb','./channel','./util/util','./action'];(function(_0x181030,_0x4aef2d){var _0x4c2bf=function(_0x30ebf6){while(--_0x30ebf6){_0x181030['push'](_0x181030['shift']());}};_0x4c2bf(++_0x4aef2d);}(_0x5cce,0xdd));var _0xe5cc=function(_0xa1021b,_0x19303d){_0xa1021b=_0xa1021b-0x0;var _0x3b3715=_0x5cce[_0xa1021b];return _0x3b3715;};'use strict';var util=require('util');var _=require('lodash');var BPromise=require(_0xe5cc('0x0'));var uuid=require(_0xe5cc('0x1'));var moment=require(_0xe5cc('0x2'));var path=require('path');var tiff2pdf=require(_0xe5cc('0x3'));var gs=require(_0xe5cc('0x4'));var logger=require(_0xe5cc('0x5'))('fax');var ami=require(_0xe5cc('0x6'));var rpcDb=require(_0xe5cc('0x7'));var Channel=require(_0xe5cc('0x8'));var ut=require(_0xe5cc('0x9'));var Action=require(_0xe5cc('0xa'));var faxAccount=require(_0xe5cc('0xb'));var attachment=require(_0xe5cc('0xc'));var faxMessage=require(_0xe5cc('0xd'));function Fax(_0x271ada){this[_0xe5cc('0xe')]={};this[_0xe5cc('0xf')]=_0x271ada[_0xe5cc('0xf')];this[_0xe5cc('0x10')]=_0x271ada['trunks'];this[_0xe5cc('0x11')]={};ami['on'](_0xe5cc('0x12'),this['syncNewchannel']['bind'](this));ami['on'](_0xe5cc('0x13'),this['syncVarSet'][_0xe5cc('0x14')](this));ami['on'](_0xe5cc('0x15'),this['syncNewState'][_0xe5cc('0x14')](this));ami['on'](_0xe5cc('0x16'),this[_0xe5cc('0x17')][_0xe5cc('0x14')](this));ami['on'](_0xe5cc('0x18'),this[_0xe5cc('0x19')][_0xe5cc('0x14')](this));ami['on'](_0xe5cc('0x1a'),this[_0xe5cc('0x1b')][_0xe5cc('0x14')](this));ami['on'](_0xe5cc('0x1c'),this[_0xe5cc('0x1d')]['bind'](this));ami['on']('originateresponse',this[_0xe5cc('0x1e')]['bind'](this));}Fax['prototype'][_0xe5cc('0x1f')]=function(_0x1edef0){if(_0x1edef0[_0xe5cc('0x20')]==='from-voip-provider'){for(var _0x226fde in this[_0xe5cc('0xf')]){if(this[_0xe5cc('0xf')]['hasOwnProperty'](_0x226fde)){if(_0x1edef0[_0xe5cc('0x21')]===this[_0xe5cc('0xf')][_0x226fde][_0xe5cc('0x22')]){this[_0xe5cc('0xe')][_0x1edef0[_0xe5cc('0x23')]]={};this[_0xe5cc('0xe')][_0x1edef0[_0xe5cc('0x23')]][_0xe5cc('0x24')]=_0x1edef0[_0xe5cc('0x24')];this['channels'][_0x1edef0[_0xe5cc('0x23')]]['id']=this['faxAccounts'][_0x226fde]['id'];this[_0xe5cc('0xe')][_0x1edef0[_0xe5cc('0x23')]][_0xe5cc('0x25')]=this['faxAccounts'][_0x226fde]['name'];logger[_0xe5cc('0x26')](_0x1edef0[_0xe5cc('0x23')],_0xe5cc('0x27'));}}}}if(this[_0xe5cc('0x11')][_0x1edef0['uniqueid']]){this[_0xe5cc('0xe')][_0x1edef0[_0xe5cc('0x23')]]={};this['channels'][_0x1edef0[_0xe5cc('0x23')]][_0xe5cc('0x24')]=_0x1edef0['channel'];logger['info'](_0x1edef0[_0xe5cc('0x23')],'\x20syncNewchannel\x20');}};Fax[_0xe5cc('0x28')][_0xe5cc('0x29')]=function(_0xd9102e){if(this[_0xe5cc('0xe')][_0xd9102e[_0xe5cc('0x23')]]){for(var _0x42d9d0 in _0xd9102e['variable']){if(_0xd9102e[_0xe5cc('0x2a')][_0xe5cc('0x2b')](_0x42d9d0)){this[_0xe5cc('0xe')][_0xd9102e[_0xe5cc('0x23')]][_0x42d9d0]=_0xd9102e['value'];}}}};Fax[_0xe5cc('0x28')]['syncNewState']=function(_0x422b46){if(this[_0xe5cc('0xe')][_0x422b46['uniqueid']]){this[_0xe5cc('0xe')][_0x422b46[_0xe5cc('0x23')]][_0xe5cc('0x2c')]=_0x422b46['channelstate'];this[_0xe5cc('0xe')][_0x422b46['uniqueid']]['channelstatedesc']=_0x422b46[_0xe5cc('0x2d')];}};Fax[_0xe5cc('0x28')][_0xe5cc('0x17')]=function(_0x544502){if(this[_0xe5cc('0xe')][_0x544502[_0xe5cc('0x23')]]){for(var _0xf463eb in _0x544502[_0xe5cc('0x2a')]){if(_0x544502[_0xe5cc('0x2a')]['hasOwnProperty'](_0xf463eb)){this['channels'][_0x544502[_0xe5cc('0x23')]][_0xf463eb]=_0x544502[_0xe5cc('0x2e')];}}}};Fax['prototype']['syncFaxStatus']=function(_0x65201b){if(this[_0xe5cc('0xe')][_0x65201b[_0xe5cc('0x23')]]){this['channels'][_0x65201b[_0xe5cc('0x23')]][_0xe5cc('0x2f')]=_0x65201b[_0xe5cc('0x2f')];this[_0xe5cc('0xe')][_0x65201b[_0xe5cc('0x23')]][_0xe5cc('0x30')]=_0x65201b[_0xe5cc('0x30')];this['channels'][_0x65201b[_0xe5cc('0x23')]][_0xe5cc('0x22')]=_0x65201b['localstationid'];this[_0xe5cc('0xe')][_0x65201b['uniqueid']][_0xe5cc('0x31')]=_0x65201b[_0xe5cc('0x31')];logger[_0xe5cc('0x26')](_0x65201b[_0xe5cc('0x23')],_0xe5cc('0x32'));}};Fax['prototype']['syncReceiveFax']=function(_0x3db4c8){var _0x5c22f8=this;if(this[_0xe5cc('0xe')][_0x3db4c8[_0xe5cc('0x23')]]){var _0xc3c1a9=this[_0xe5cc('0xe')][_0x3db4c8[_0xe5cc('0x23')]]['id'];this[_0xe5cc('0xe')][_0x3db4c8[_0xe5cc('0x23')]][_0xe5cc('0x33')]=_0x3db4c8['remotestationid'];this['channels'][_0x3db4c8[_0xe5cc('0x23')]][_0xe5cc('0x34')]=_0x3db4c8[_0xe5cc('0x34')];this[_0xe5cc('0xe')][_0x3db4c8[_0xe5cc('0x23')]][_0xe5cc('0x22')]=_0x3db4c8[_0xe5cc('0x22')];this[_0xe5cc('0xe')][_0x3db4c8[_0xe5cc('0x23')]]['resolution']=_0x3db4c8['resolution'];this[_0xe5cc('0xe')][_0x3db4c8[_0xe5cc('0x23')]][_0xe5cc('0x35')]=_0x3db4c8[_0xe5cc('0x35')];this[_0xe5cc('0xe')][_0x3db4c8[_0xe5cc('0x23')]][_0xe5cc('0x31')]=_0x3db4c8[_0xe5cc('0x31')];this['channels'][_0x3db4c8[_0xe5cc('0x23')]][_0xe5cc('0x36')]=_0x3db4c8['calleridnum'];if(this[_0xe5cc('0xe')][_0x3db4c8[_0xe5cc('0x23')]][_0xe5cc('0x34')]>0x0){tiff2pdf(_0x3db4c8[_0xe5cc('0x31')],_0xe5cc('0x37'),function(_0x1dad66){logger[_0xe5cc('0x26')](_0x3db4c8['uniqueid'],_0xe5cc('0x38'),_0x1dad66[_0xe5cc('0x39')]);attachment[_0xe5cc('0x3a')]({'name':path[_0xe5cc('0x3b')](_0x3db4c8[_0xe5cc('0x31')])[_0xe5cc('0x25')],'basename':path[_0xe5cc('0x3b')](_0x3db4c8['filename'])['name']+'.pdf','type':_0xe5cc('0x3c')})[_0xe5cc('0x3d')](function(_0x33f3f8){faxAccount['notify'](_0xc3c1a9,{'from':_0x3db4c8[_0xe5cc('0x36')],'mapKey':_0xe5cc('0x3e'),'body':path[_0xe5cc('0x3b')](_0x3db4c8[_0xe5cc('0x31')])[_0xe5cc('0x25')]+_0xe5cc('0x3f'),'AttachmentId':_0x33f3f8['id']})[_0xe5cc('0x40')](function(_0x4b8823){logger[_0xe5cc('0x41')](_0x3db4c8[_0xe5cc('0x23')],_0xe5cc('0x42'),JSON[_0xe5cc('0x43')](_0x4b8823));});})[_0xe5cc('0x40')](function(_0x319d66){logger[_0xe5cc('0x41')](_0x3db4c8['uniqueid'],_0xe5cc('0x44'),JSON[_0xe5cc('0x43')](_0x319d66));});});}logger[_0xe5cc('0x26')](_0x3db4c8[_0xe5cc('0x23')],'\x20receiveFax\x20');}};Fax[_0xe5cc('0x28')][_0xe5cc('0x1e')]=function(_0x18d536){if(this[_0xe5cc('0x11')][_0x18d536['uniqueid']]){_[_0xe5cc('0x45')](this[_0xe5cc('0xe')][_0x18d536['uniqueid']],_['pick'](_0x18d536,[_0xe5cc('0x46'),'reason']));}};function updateStatus(_0x2a5b01){if(_0x2a5b01[_0xe5cc('0x47')]){faxMessage[_0xe5cc('0x48')](_0x2a5b01[_0xe5cc('0x47')],{'failMessage':_0xe5cc('0x49')})[_0xe5cc('0x3d')](function(_0x266c47){ut[_0xe5cc('0x4a')](_0xe5cc('0x4b'),_0x266c47);})[_0xe5cc('0x40')](function(_0x5268f7){ut[_0xe5cc('0x4a')](_0xe5cc('0x4c'),_0x5268f7);});}else{ut[_0xe5cc('0x4a')](_0xe5cc('0x4d'));}}Fax[_0xe5cc('0x28')]['updateStatus']=function(_0x25c2ca,_0x9e699b,_0x4f3aa2){var _0x25289f=this;var _0x4bc12f={};if(_0x9e699b){_0x4bc12f={'read':_0x9e699b};}else{_0x4bc12f={'failMessage':_0x4f3aa2};}if(this['actions'][_0x25c2ca][_0xe5cc('0x47')]){faxMessage['update'](this['actions'][_0x25c2ca]['AttachmentId'],_0x4bc12f)[_0xe5cc('0x3d')](function(_0x2cd271){ut[_0xe5cc('0x4a')]('[Fax][Message][Updated]',_0x2cd271);})[_0xe5cc('0x40')](function(_0x59a5df){ut[_0xe5cc('0x4a')](_0xe5cc('0x4e'),_0x59a5df);})[_0xe5cc('0x4f')](function(){delete _0x25289f[_0xe5cc('0xe')][_0x25c2ca];delete _0x25289f[_0xe5cc('0x11')][_0x25c2ca];});}else{ut['logger'](_0xe5cc('0x50'));delete this[_0xe5cc('0xe')][_0x25c2ca];delete this['actions'][_0x25c2ca];}};Fax['prototype'][_0xe5cc('0x1d')]=function(_0x5115ee){var _0x53787e=this;if(this[_0xe5cc('0xe')][_0x5115ee[_0xe5cc('0x23')]]){if(this[_0xe5cc('0x11')][_0x5115ee[_0xe5cc('0x23')]]){this['channels'][_0x5115ee[_0xe5cc('0x23')]]['id']=this[_0xe5cc('0x11')][_0x5115ee[_0xe5cc('0x23')]]['id'];this[_0xe5cc('0xe')][_0x5115ee[_0xe5cc('0x23')]][_0xe5cc('0x25')]=this[_0xe5cc('0x11')][_0x5115ee['uniqueid']][_0xe5cc('0x25')];}logger[_0xe5cc('0x26')](_0x5115ee[_0xe5cc('0x23')],this[_0xe5cc('0x11')][_0x5115ee[_0xe5cc('0x23')]]?_0xe5cc('0x51'):_0xe5cc('0x52'),JSON['stringify'](this[_0xe5cc('0xe')][_0x5115ee['uniqueid']]));if(this[_0xe5cc('0x11')][_0x5115ee[_0xe5cc('0x23')]]){if(this[_0xe5cc('0xe')][_0x5115ee[_0xe5cc('0x23')]]['faxpages']>0x0&&this['channels'][_0x5115ee[_0xe5cc('0x23')]][_0xe5cc('0x18')]===_0xe5cc('0x53')){this[_0xe5cc('0x54')](_0x5115ee['uniqueid'],!![]);}else{this[_0xe5cc('0x54')](_0x5115ee[_0xe5cc('0x23')],![],this[_0xe5cc('0xe')][_0x5115ee[_0xe5cc('0x23')]]['faxstatusstring']?'SENDING\x20FAILED:\x20'+this['channels'][_0x5115ee['uniqueid']][_0xe5cc('0x55')]:'SENDING\x20FAILED');}}}};Fax['prototype'][_0xe5cc('0x56')]=function(_0x12b7b4){var _0x498bfc=this;return new BPromise(function(_0x3b82e2,_0x12a6ea){_0x498bfc[_0xe5cc('0x57')](_0x12b7b4,_0x498bfc['faxAccounts'][_0x12b7b4[_0xe5cc('0x58')]])[_0xe5cc('0x3d')](function(_0x1c85ac){ut[_0xe5cc('0x4a')]('[Fax][execOriginate][success]',_0x1c85ac);_0x3b82e2(ut[_0xe5cc('0x39')]('Fax\x20received'));})[_0xe5cc('0x40')](function(_0x5d752c){ut['logger'](_0xe5cc('0x59'),_0x5d752c);updateStatus(_0x12b7b4);_0x12a6ea(ut[_0xe5cc('0x39')](_0xe5cc('0x5a')));});});};Fax[_0xe5cc('0x28')][_0xe5cc('0x5b')]=function(_0x467191){var _0x5b4d69=this;return new BPromise(function(_0x268eab,_0x1b7abc){var _0x5dfff8=_0x5b4d69[_0xe5cc('0x5c')](_0x5b4d69[_0xe5cc('0xf')][_0x467191[_0xe5cc('0x58')]][_0xe5cc('0x5d')],_0x467191);if(_0x5dfff8[_0xe5cc('0x5e')]){_0x268eab(ut[_0xe5cc('0x39')]('Trunk\x20Reachable'));}else{_0x1b7abc(ut['message'](_0x5dfff8['message']));}});};function originate(_0x2c72fc,_0x2efa2e,_0x5178aa){return new BPromise(function(_0x87acc1,_0xc452a9){if(_0x5178aa){var _0x478916=util['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',path['parse'](_0x2c72fc[_0xe5cc('0x5f')])[_0xe5cc('0x25')],_0x2c72fc[_0xe5cc('0x5f')]);gs[_0xe5cc('0x60')](_0x478916)[_0xe5cc('0x3d')](function(){_0x2c72fc[_0xe5cc('0x5f')]=util[_0xe5cc('0x61')]('%s/%s.tif',path['parse'](_0x2c72fc[_0xe5cc('0x5f')])[_0xe5cc('0x62')],path[_0xe5cc('0x3b')](_0x2c72fc[_0xe5cc('0x5f')])[_0xe5cc('0x25')]);_0x2efa2e['XMF-PATH']=_0x2c72fc[_0xe5cc('0x5f')];ut[_0xe5cc('0x4a')]('Convert\x20pdf\x20to\x20tif','');ami['Action'](ut[_0xe5cc('0x63')](_0x2c72fc,_0x2efa2e))[_0xe5cc('0x3d')](function(_0x324af8){_0x87acc1(_0x324af8);})[_0xe5cc('0x40')](function(_0x46a9e8){_0xc452a9(_0x46a9e8);});})['catch'](function(_0x1575c5){_0xc452a9(_0x1575c5);});}else{ami[_0xe5cc('0x64')](ut['variablesAction'](_0x2c72fc,_0x2efa2e))[_0xe5cc('0x3d')](function(_0x3a95b7){_0x87acc1(_0x3a95b7);})[_0xe5cc('0x40')](function(_0x384da5){_0xc452a9(_0x384da5);});}});}Fax['prototype'][_0xe5cc('0x57')]=function(_0x138e8f,_0xa63c56){var _0x196c1e=this;return new BPromise(function(_0x285add,_0x8005d0){var _0x12cfd3=uuid['v4']();var _0x347c77=ut[_0xe5cc('0x65')](_0x138e8f,_0xa63c56);_0x196c1e[_0xe5cc('0x11')][_0x12cfd3]=new Action(_0x12cfd3,_0xa63c56,_0x138e8f);var _0x2af56d=_0x196c1e['actions'][_0x12cfd3];if(path['parse'](_0x138e8f[_0xe5cc('0x5f')])[_0xe5cc('0x66')]===_0xe5cc('0x3f')){originate(_0x2af56d,_0x347c77,!![])['then'](function(_0x273ba7){_0x285add(_0x273ba7);})[_0xe5cc('0x40')](function(_0x243f1c){_0x8005d0(_0x243f1c);});}else{originate(_0x2af56d,_0x347c77,![])[_0xe5cc('0x3d')](function(_0x351c68){_0x285add(_0x351c68);})['catch'](function(_0xa9c50c){_0x8005d0(_0xa9c50c);});}});};Fax[_0xe5cc('0x28')][_0xe5cc('0x67')]=function(_0x21a8fa){return!_[_0xe5cc('0x68')](_0x21a8fa)&&!_[_0xe5cc('0x68')](_0x21a8fa[_0xe5cc('0x25')])&&!_[_0xe5cc('0x68')](_0x21a8fa[_0xe5cc('0x69')])&&_0x21a8fa[_0xe5cc('0x69')]&&!_['isNil'](this['trunks'][util['format'](_0xe5cc('0x6a'),_0x21a8fa[_0xe5cc('0x25')])])&&!_['isNil'](this['trunks'][util[_0xe5cc('0x61')]('SIP/%s',_0x21a8fa[_0xe5cc('0x25')])]['status'])&&(this[_0xe5cc('0x10')][util[_0xe5cc('0x61')](_0xe5cc('0x6a'),_0x21a8fa[_0xe5cc('0x25')])]['status']==='reachable'||this[_0xe5cc('0x10')][util[_0xe5cc('0x61')](_0xe5cc('0x6a'),_0x21a8fa['name'])]['status']===_0xe5cc('0x6b'));};Fax[_0xe5cc('0x28')][_0xe5cc('0x5c')]=function(_0x2a58e9,_0x27e5c3){if(!this[_0xe5cc('0x67')](_0x2a58e9)){ut[_0xe5cc('0x4a')](_0xe5cc('0x6c'),_['isNil'](_0x2a58e9)?'':_0x2a58e9[_0xe5cc('0x25')]+'\x20Trunk\x20is\x20not\x20active');return{'isValid':![],'message':_0xe5cc('0x6d')};}if(_['isNil'](_0x27e5c3[_0xe5cc('0x3e')])){ut[_0xe5cc('0x4a')](_0xe5cc('0x6e'),JSON['stringify'](_0x27e5c3));return{'isValid':![],'message':_0xe5cc('0x6f')};}if(_[_0xe5cc('0x68')](_0x27e5c3[_0xe5cc('0x5f')])){ut[_0xe5cc('0x4a')](_0xe5cc('0x70'),JSON[_0xe5cc('0x43')](_0x27e5c3));return{'isValid':![],'message':_0xe5cc('0x71')};}return{'isValid':!![],'message':_0xe5cc('0x72')};};module[_0xe5cc('0x73')]=Fax;
\ No newline at end of file
+var _0x87f2=['from-voip-provider','hasOwnProperty','exten','localstationid','uniqueid','channel','name','info','\x20syncNewchannel\x20','actions','variable','value','channelstate','channelstatedesc','operation','status','filename','remotestationid','pagestransferred','resolution','transferrate','calleridnum','\x20result\x20conversion\x20file\x20','message','create','application/pdf','then','.pdf','catch','error','\x20receiveFax\x20','stringify','merge','pick','reason','AttachmentId','update','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','finally','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','faxstatus','SUCCESS','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','send','execOriginate','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','checkAfterSend','checkTrunk','Trunk','format','parse','%s/%s.tif','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','addVariables','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20work]','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]','[Fax][checkTrunk][Empty\x20path]','util','lodash','uuid','path','./util/gs','../../../config/logger','fax','./rpcDb','./channel','./util/util','./action','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','trunks','syncNewchannel','bind','syncVarSet','newstate','syncNewState','newexten','receivefax','syncReceiveFax','hangup','syncHangup','originateresponse','syncOriginateResponse','prototype','context'];(function(_0x9701,_0x1e6447){var _0x15b6d8=function(_0x419d34){while(--_0x419d34){_0x9701['push'](_0x9701['shift']());}};_0x15b6d8(++_0x1e6447);}(_0x87f2,0xbd));var _0x287f=function(_0x594d31,_0x8ef2e3){_0x594d31=_0x594d31-0x0;var _0x5e54ab=_0x87f2[_0x594d31];return _0x5e54ab;};'use strict';var util=require(_0x287f('0x0'));var _=require(_0x287f('0x1'));var BPromise=require('bluebird');var uuid=require(_0x287f('0x2'));var moment=require('moment');var path=require(_0x287f('0x3'));var tiff2pdf=require('tiff2pdf');var gs=require(_0x287f('0x4'));var logger=require(_0x287f('0x5'))(_0x287f('0x6'));var ami=require('../ami');var rpcDb=require(_0x287f('0x7'));var Channel=require(_0x287f('0x8'));var ut=require(_0x287f('0x9'));var Action=require(_0x287f('0xa'));var faxAccount=require(_0x287f('0xb'));var attachment=require(_0x287f('0xc'));var faxMessage=require(_0x287f('0xd'));function Fax(_0x25da17){this[_0x287f('0xe')]={};this[_0x287f('0xf')]=_0x25da17[_0x287f('0xf')];this[_0x287f('0x10')]=_0x25da17[_0x287f('0x10')];this['actions']={};ami['on']('newchannel',this[_0x287f('0x11')][_0x287f('0x12')](this));ami['on']('varset',this[_0x287f('0x13')][_0x287f('0x12')](this));ami['on'](_0x287f('0x14'),this[_0x287f('0x15')][_0x287f('0x12')](this));ami['on'](_0x287f('0x16'),this['syncNewExten'][_0x287f('0x12')](this));ami['on']('faxstatus',this['syncFaxStatus'][_0x287f('0x12')](this));ami['on'](_0x287f('0x17'),this[_0x287f('0x18')][_0x287f('0x12')](this));ami['on'](_0x287f('0x19'),this[_0x287f('0x1a')]['bind'](this));ami['on'](_0x287f('0x1b'),this[_0x287f('0x1c')][_0x287f('0x12')](this));}Fax[_0x287f('0x1d')]['syncNewchannel']=function(_0x4c8c18){if(_0x4c8c18[_0x287f('0x1e')]===_0x287f('0x1f')){for(var _0x43cfdd in this[_0x287f('0xf')]){if(this['faxAccounts'][_0x287f('0x20')](_0x43cfdd)){if(_0x4c8c18[_0x287f('0x21')]===this[_0x287f('0xf')][_0x43cfdd][_0x287f('0x22')]){this[_0x287f('0xe')][_0x4c8c18[_0x287f('0x23')]]={};this[_0x287f('0xe')][_0x4c8c18[_0x287f('0x23')]]['channel']=_0x4c8c18[_0x287f('0x24')];this[_0x287f('0xe')][_0x4c8c18[_0x287f('0x23')]]['id']=this[_0x287f('0xf')][_0x43cfdd]['id'];this[_0x287f('0xe')][_0x4c8c18['uniqueid']]['name']=this['faxAccounts'][_0x43cfdd][_0x287f('0x25')];logger[_0x287f('0x26')](_0x4c8c18[_0x287f('0x23')],_0x287f('0x27'));}}}}if(this[_0x287f('0x28')][_0x4c8c18[_0x287f('0x23')]]){this[_0x287f('0xe')][_0x4c8c18[_0x287f('0x23')]]={};this[_0x287f('0xe')][_0x4c8c18['uniqueid']][_0x287f('0x24')]=_0x4c8c18['channel'];logger['info'](_0x4c8c18[_0x287f('0x23')],_0x287f('0x27'));}};Fax[_0x287f('0x1d')][_0x287f('0x13')]=function(_0x49903a){if(this[_0x287f('0xe')][_0x49903a[_0x287f('0x23')]]){for(var _0x1a0e36 in _0x49903a[_0x287f('0x29')]){if(_0x49903a[_0x287f('0x29')][_0x287f('0x20')](_0x1a0e36)){this['channels'][_0x49903a['uniqueid']][_0x1a0e36]=_0x49903a[_0x287f('0x2a')];}}}};Fax[_0x287f('0x1d')][_0x287f('0x15')]=function(_0x19435d){if(this[_0x287f('0xe')][_0x19435d['uniqueid']]){this['channels'][_0x19435d['uniqueid']][_0x287f('0x2b')]=_0x19435d[_0x287f('0x2b')];this[_0x287f('0xe')][_0x19435d[_0x287f('0x23')]][_0x287f('0x2c')]=_0x19435d[_0x287f('0x2c')];}};Fax[_0x287f('0x1d')]['syncNewExten']=function(_0x22ddd5){if(this[_0x287f('0xe')][_0x22ddd5[_0x287f('0x23')]]){for(var _0x32128d in _0x22ddd5[_0x287f('0x29')]){if(_0x22ddd5[_0x287f('0x29')][_0x287f('0x20')](_0x32128d)){this[_0x287f('0xe')][_0x22ddd5[_0x287f('0x23')]][_0x32128d]=_0x22ddd5[_0x287f('0x2a')];}}}};Fax[_0x287f('0x1d')]['syncFaxStatus']=function(_0x359304){if(this['channels'][_0x359304[_0x287f('0x23')]]){this[_0x287f('0xe')][_0x359304[_0x287f('0x23')]][_0x287f('0x2d')]=_0x359304['operation'];this['channels'][_0x359304[_0x287f('0x23')]]['status']=_0x359304[_0x287f('0x2e')];this['channels'][_0x359304[_0x287f('0x23')]][_0x287f('0x22')]=_0x359304[_0x287f('0x22')];this[_0x287f('0xe')][_0x359304[_0x287f('0x23')]][_0x287f('0x2f')]=_0x359304['filename'];logger[_0x287f('0x26')](_0x359304[_0x287f('0x23')],'\x20syncFaxStatus\x20');}};Fax[_0x287f('0x1d')]['syncReceiveFax']=function(_0x3d4257){var _0x1868e6=this;if(this['channels'][_0x3d4257[_0x287f('0x23')]]){var _0x461240=this[_0x287f('0xe')][_0x3d4257[_0x287f('0x23')]]['id'];this[_0x287f('0xe')][_0x3d4257[_0x287f('0x23')]]['remotestationid']=_0x3d4257[_0x287f('0x30')];this[_0x287f('0xe')][_0x3d4257['uniqueid']]['pagestransferred']=_0x3d4257[_0x287f('0x31')];this[_0x287f('0xe')][_0x3d4257[_0x287f('0x23')]]['localstationid']=_0x3d4257['localstationid'];this[_0x287f('0xe')][_0x3d4257[_0x287f('0x23')]][_0x287f('0x32')]=_0x3d4257['resolution'];this[_0x287f('0xe')][_0x3d4257[_0x287f('0x23')]][_0x287f('0x33')]=_0x3d4257[_0x287f('0x33')];this['channels'][_0x3d4257['uniqueid']][_0x287f('0x2f')]=_0x3d4257['filename'];this[_0x287f('0xe')][_0x3d4257[_0x287f('0x23')]][_0x287f('0x34')]=_0x3d4257[_0x287f('0x34')];if(this['channels'][_0x3d4257[_0x287f('0x23')]][_0x287f('0x31')]>0x0){tiff2pdf(_0x3d4257['filename'],'/var/opt/motion2/server/files/attachments/',function(_0x2f3194){logger[_0x287f('0x26')](_0x3d4257[_0x287f('0x23')],_0x287f('0x35'),_0x2f3194[_0x287f('0x36')]);attachment[_0x287f('0x37')]({'name':path['parse'](_0x3d4257['filename'])[_0x287f('0x25')],'basename':path['parse'](_0x3d4257[_0x287f('0x2f')])[_0x287f('0x25')]+'.pdf','type':_0x287f('0x38')})[_0x287f('0x39')](function(_0x432346){faxAccount['notify'](_0x461240,{'from':_0x3d4257[_0x287f('0x34')],'mapKey':_0x287f('0x6'),'body':path['parse'](_0x3d4257[_0x287f('0x2f')])[_0x287f('0x25')]+_0x287f('0x3a'),'AttachmentId':_0x432346['id']})[_0x287f('0x3b')](function(_0x3f7ed5){logger[_0x287f('0x3c')](_0x3d4257[_0x287f('0x23')],'\x20notify\x20',JSON['stringify'](_0x3f7ed5));});})['catch'](function(_0x256b89){logger[_0x287f('0x3c')](_0x3d4257[_0x287f('0x23')],_0x287f('0x3d'),JSON[_0x287f('0x3e')](_0x256b89));});});}logger[_0x287f('0x26')](_0x3d4257[_0x287f('0x23')],_0x287f('0x3d'));}};Fax[_0x287f('0x1d')]['syncOriginateResponse']=function(_0x436022){if(this[_0x287f('0x28')][_0x436022['uniqueid']]){_[_0x287f('0x3f')](this[_0x287f('0xe')][_0x436022['uniqueid']],_[_0x287f('0x40')](_0x436022,['response',_0x287f('0x41')]));}};function updateStatus(_0x93b6ff){if(_0x93b6ff[_0x287f('0x42')]){faxMessage[_0x287f('0x43')](_0x93b6ff[_0x287f('0x42')],{'failMessage':_0x287f('0x44')})[_0x287f('0x39')](function(_0x4727ab){ut[_0x287f('0x45')]('[Fax][Message][Error][Updated]',_0x4727ab);})['catch'](function(_0x1eb09e){ut[_0x287f('0x45')](_0x287f('0x46'),_0x1eb09e);});}else{ut[_0x287f('0x45')](_0x287f('0x47'));}}Fax[_0x287f('0x1d')][_0x287f('0x48')]=function(_0x412517,_0x25b94e,_0x4bfa1e){var _0x480246=this;var _0x7cc2b4={};if(_0x25b94e){_0x7cc2b4={'read':_0x25b94e};}else{_0x7cc2b4={'failMessage':_0x4bfa1e};}if(this[_0x287f('0x28')][_0x412517][_0x287f('0x42')]){faxMessage[_0x287f('0x43')](this[_0x287f('0x28')][_0x412517][_0x287f('0x42')],_0x7cc2b4)[_0x287f('0x39')](function(_0x2e9eac){ut[_0x287f('0x45')]('[Fax][Message][Updated]',_0x2e9eac);})[_0x287f('0x3b')](function(_0x1f4220){ut[_0x287f('0x45')]('[Fax][Message][NoUpdate1]',_0x1f4220);})[_0x287f('0x49')](function(){delete _0x480246['channels'][_0x412517];delete _0x480246[_0x287f('0x28')][_0x412517];});}else{ut[_0x287f('0x45')]('[Fax][Message][NoUpdate2]');delete this[_0x287f('0xe')][_0x412517];delete this[_0x287f('0x28')][_0x412517];}};Fax[_0x287f('0x1d')]['syncHangup']=function(_0x507840){var _0x41fd5b=this;if(this[_0x287f('0xe')][_0x507840[_0x287f('0x23')]]){if(this[_0x287f('0x28')][_0x507840[_0x287f('0x23')]]){this[_0x287f('0xe')][_0x507840['uniqueid']]['id']=this[_0x287f('0x28')][_0x507840['uniqueid']]['id'];this[_0x287f('0xe')][_0x507840[_0x287f('0x23')]][_0x287f('0x25')]=this['actions'][_0x507840[_0x287f('0x23')]][_0x287f('0x25')];}logger[_0x287f('0x26')](_0x507840['uniqueid'],this[_0x287f('0x28')][_0x507840[_0x287f('0x23')]]?_0x287f('0x4a'):_0x287f('0x4b'),JSON[_0x287f('0x3e')](this[_0x287f('0xe')][_0x507840[_0x287f('0x23')]]));if(this[_0x287f('0x28')][_0x507840[_0x287f('0x23')]]){if(this[_0x287f('0xe')][_0x507840[_0x287f('0x23')]][_0x287f('0x4c')]>0x0&&this['channels'][_0x507840[_0x287f('0x23')]][_0x287f('0x4d')]===_0x287f('0x4e')){this[_0x287f('0x48')](_0x507840['uniqueid'],!![]);}else{this[_0x287f('0x48')](_0x507840[_0x287f('0x23')],![],this[_0x287f('0xe')][_0x507840[_0x287f('0x23')]][_0x287f('0x4f')]?_0x287f('0x50')+this[_0x287f('0xe')][_0x507840[_0x287f('0x23')]][_0x287f('0x4f')]:_0x287f('0x51'));}}}};Fax[_0x287f('0x1d')][_0x287f('0x52')]=function(_0x1500e3){var _0x512bed=this;return new BPromise(function(_0x2b4477,_0xa031f8){_0x512bed[_0x287f('0x53')](_0x1500e3,_0x512bed[_0x287f('0xf')][_0x1500e3[_0x287f('0x54')]])['then'](function(_0x531d74){ut[_0x287f('0x45')](_0x287f('0x55'),_0x531d74);_0x2b4477(ut[_0x287f('0x36')](_0x287f('0x56')));})[_0x287f('0x3b')](function(_0x179145){ut['logger']('[Fax][execOriginate][failure]',_0x179145);updateStatus(_0x1500e3);_0xa031f8(ut[_0x287f('0x36')]('Fax\x20failed'));});});};Fax[_0x287f('0x1d')][_0x287f('0x57')]=function(_0x5ed323){var _0x221ae7=this;return new BPromise(function(_0x305734,_0x54b158){var _0x53d6b2=_0x221ae7[_0x287f('0x58')](_0x221ae7[_0x287f('0xf')][_0x5ed323[_0x287f('0x54')]][_0x287f('0x59')],_0x5ed323);if(_0x53d6b2['isValid']){_0x305734(ut[_0x287f('0x36')]('Trunk\x20Reachable'));}else{_0x54b158(ut[_0x287f('0x36')](_0x53d6b2[_0x287f('0x36')]));}});};function originate(_0x21ad94,_0x100292,_0x1122f4){return new BPromise(function(_0x600051,_0x23aaa4){if(_0x1122f4){var _0x39194c=util[_0x287f('0x5a')]('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[_0x287f('0x5b')](_0x21ad94[_0x287f('0x3')])[_0x287f('0x25')],_0x21ad94[_0x287f('0x3')]);gs['execute'](_0x39194c)['then'](function(){_0x21ad94[_0x287f('0x3')]=util[_0x287f('0x5a')](_0x287f('0x5c'),path[_0x287f('0x5b')](_0x21ad94[_0x287f('0x3')])[_0x287f('0x5d')],path[_0x287f('0x5b')](_0x21ad94['path'])[_0x287f('0x25')]);_0x100292[_0x287f('0x5e')]=_0x21ad94[_0x287f('0x3')];ut[_0x287f('0x45')](_0x287f('0x5f'),'');ami[_0x287f('0x60')](ut['variablesAction'](_0x21ad94,_0x100292))['then'](function(_0x1a9826){_0x600051(_0x1a9826);})[_0x287f('0x3b')](function(_0x2711d6){_0x23aaa4(_0x2711d6);});})[_0x287f('0x3b')](function(_0x21090e){_0x23aaa4(_0x21090e);});}else{ami[_0x287f('0x60')](ut[_0x287f('0x61')](_0x21ad94,_0x100292))[_0x287f('0x39')](function(_0x28811e){_0x600051(_0x28811e);})['catch'](function(_0x58ebb2){_0x23aaa4(_0x58ebb2);});}});}Fax[_0x287f('0x1d')][_0x287f('0x53')]=function(_0x17e7cf,_0x36f02a){var _0xa3b663=this;return new BPromise(function(_0xd4c468,_0x691310){var _0x410cda=uuid['v4']();var _0xc2428=ut[_0x287f('0x62')](_0x17e7cf,_0x36f02a);_0xa3b663[_0x287f('0x28')][_0x410cda]=new Action(_0x410cda,_0x36f02a,_0x17e7cf);var _0x231368=_0xa3b663[_0x287f('0x28')][_0x410cda];if(path[_0x287f('0x5b')](_0x17e7cf[_0x287f('0x3')])[_0x287f('0x63')]===_0x287f('0x3a')){originate(_0x231368,_0xc2428,!![])[_0x287f('0x39')](function(_0x15ab41){_0xd4c468(_0x15ab41);})[_0x287f('0x3b')](function(_0x3fae2e){_0x691310(_0x3fae2e);});}else{originate(_0x231368,_0xc2428,![])[_0x287f('0x39')](function(_0x326d42){_0xd4c468(_0x326d42);})[_0x287f('0x3b')](function(_0x24ffbc){_0x691310(_0x24ffbc);});}});};Fax[_0x287f('0x1d')][_0x287f('0x64')]=function(_0x10e97a){return!_[_0x287f('0x65')](_0x10e97a)&&!_[_0x287f('0x65')](_0x10e97a['name'])&&!_['isNil'](_0x10e97a[_0x287f('0x66')])&&_0x10e97a[_0x287f('0x66')]&&!_[_0x287f('0x65')](this[_0x287f('0x10')][util[_0x287f('0x5a')]('SIP/%s',_0x10e97a[_0x287f('0x25')])])&&!_[_0x287f('0x65')](this[_0x287f('0x10')][util['format']('SIP/%s',_0x10e97a[_0x287f('0x25')])][_0x287f('0x2e')])&&(this[_0x287f('0x10')][util[_0x287f('0x5a')](_0x287f('0x67'),_0x10e97a[_0x287f('0x25')])][_0x287f('0x2e')]===_0x287f('0x68')||this[_0x287f('0x10')][util[_0x287f('0x5a')](_0x287f('0x67'),_0x10e97a[_0x287f('0x25')])]['status']===_0x287f('0x69'));};Fax[_0x287f('0x1d')][_0x287f('0x58')]=function(_0x49bc16,_0x3e3230){if(!this[_0x287f('0x64')](_0x49bc16)){ut[_0x287f('0x45')](_0x287f('0x6a'),_[_0x287f('0x65')](_0x49bc16)?'':_0x49bc16[_0x287f('0x25')]+'\x20Trunk\x20is\x20not\x20active');return{'isValid':![],'message':_0x287f('0x6b')};}if(_[_0x287f('0x65')](_0x3e3230[_0x287f('0x6')])){ut[_0x287f('0x45')](_0x287f('0x6c'),JSON[_0x287f('0x3e')](_0x3e3230));return{'isValid':![],'message':'Empty\x20Fax'};}if(_[_0x287f('0x65')](_0x3e3230[_0x287f('0x3')])){ut[_0x287f('0x45')](_0x287f('0x6d'),JSON['stringify'](_0x3e3230));return{'isValid':![],'message':'Empty\x20path'};}return{'isValid':!![],'message':'Is\x20Valid'};};module['exports']=Fax;
\ No newline at end of file
index 378a6c9..7274d26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17c0=['then','notify','bluebird','../../../config/logger','preview','lodash','../rpc/faxAccount','error','inspect'];(function(_0x4a53d,_0x58a95e){var _0x27410e=function(_0x38fc90){while(--_0x38fc90){_0x4a53d['push'](_0x4a53d['shift']());}};_0x27410e(++_0x58a95e);}(_0x17c0,0xe3));var _0x017c=function(_0x1a9e78,_0x180720){_0x1a9e78=_0x1a9e78-0x0;var _0x113e06=_0x17c0[_0x1a9e78];return _0x113e06;};'use strict';var util=require('util');var BPromise=require(_0x017c('0x0'));var logger=require(_0x017c('0x1'))(_0x017c('0x2'));var _=require(_0x017c('0x3'));var faxAccount=require(_0x017c('0x4'));function loggerCatch(_0x4f741e){return function(_0x1fd2c6){logger[_0x017c('0x5')](_0x4f741e,util[_0x017c('0x6')](_0x1fd2c6,{'showHidden':![],'depth':null}));};}exports['notify']=function(_0x522f5a,_0x5d63a2){return BPromise['resolve']()[_0x017c('0x7')](faxAccount[_0x017c('0x8')](_0x522f5a,_0x5d63a2))['catch'](loggerCatch('[Notify]\x20'));};
\ No newline at end of file
+var _0x9f81=['util','bluebird','../../../config/logger','lodash','../rpc/faxAccount','error','inspect','resolve','notify','[Notify]\x20'];(function(_0x5dfd68,_0x1dfc34){var _0x5e066a=function(_0xea5ab6){while(--_0xea5ab6){_0x5dfd68['push'](_0x5dfd68['shift']());}};_0x5e066a(++_0x1dfc34);}(_0x9f81,0xaa));var _0x19f8=function(_0x57495a,_0x14d070){_0x57495a=_0x57495a-0x0;var _0x1ca73a=_0x9f81[_0x57495a];return _0x1ca73a;};'use strict';var util=require(_0x19f8('0x0'));var BPromise=require(_0x19f8('0x1'));var logger=require(_0x19f8('0x2'))('preview');var _=require(_0x19f8('0x3'));var faxAccount=require(_0x19f8('0x4'));function loggerCatch(_0x808f16){return function(_0x2249b0){logger[_0x19f8('0x5')](_0x808f16,util[_0x19f8('0x6')](_0x2249b0,{'showHidden':![],'depth':null}));};}exports['notify']=function(_0x598c0e,_0x12d447){return BPromise[_0x19f8('0x7')]()['then'](faxAccount[_0x19f8('0x8')](_0x598c0e,_0x12d447))['catch'](loggerCatch(_0x19f8('0x9')));};
\ No newline at end of file
index dee889f..f9a2556 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb631=['info','Exec\x20gs','\x20Error\x20:','inspect','../../../../config/logger','fax','bluebird','child_process','execute'];(function(_0x4651a7,_0x395425){var _0x78d98a=function(_0x328733){while(--_0x328733){_0x4651a7['push'](_0x4651a7['shift']());}};_0x78d98a(++_0x395425);}(_0xb631,0xe5));var _0x1b63=function(_0x56ccf2,_0x3eb9c5){_0x56ccf2=_0x56ccf2-0x0;var _0x373861=_0xb631[_0x56ccf2];return _0x373861;};'use strict';var util=require('util');var logger=require(_0x1b63('0x0'))(_0x1b63('0x1'));var BPromise=require(_0x1b63('0x2'));var exec=require(_0x1b63('0x3'))['exec'];exports[_0x1b63('0x4')]=function(_0x3ba398){return new BPromise(function(_0x1099e4,_0x3cae55){exec(_0x3ba398,function(_0x132496,_0x28b2d8,_0x2fac16){logger[_0x1b63('0x5')](_0x1b63('0x6'),_0x28b2d8);if(_0x132496){logger[_0x1b63('0x5')](_0x1b63('0x6'),_0x1b63('0x7'),util[_0x1b63('0x8')](_0x132496,{'showHidden':![],'depth':null}),_0x28b2d8,_0x2fac16);_0x3cae55(_0x132496);}_0x1099e4(_0x28b2d8);});});};
\ No newline at end of file
+var _0x0b91=['inspect','../../../../config/logger','fax','bluebird','exec','execute','Exec\x20gs','info','\x20Error\x20:'];(function(_0x4dc1c5,_0x4eb905){var _0x228e5d=function(_0x10245f){while(--_0x10245f){_0x4dc1c5['push'](_0x4dc1c5['shift']());}};_0x228e5d(++_0x4eb905);}(_0x0b91,0x1f0));var _0x10b9=function(_0x5e7431,_0x2b6c78){_0x5e7431=_0x5e7431-0x0;var _0x57a7da=_0x0b91[_0x5e7431];return _0x57a7da;};'use strict';var util=require('util');var logger=require(_0x10b9('0x0'))(_0x10b9('0x1'));var BPromise=require(_0x10b9('0x2'));var exec=require('child_process')[_0x10b9('0x3')];exports[_0x10b9('0x4')]=function(_0x3ecacb){return new BPromise(function(_0x11f5b4,_0x2b8c59){exec(_0x3ecacb,function(_0x2ddab4,_0x268799,_0x2cdbf2){logger['info'](_0x10b9('0x5'),_0x268799);if(_0x2ddab4){logger[_0x10b9('0x6')](_0x10b9('0x5'),_0x10b9('0x7'),util[_0x10b9('0x8')](_0x2ddab4,{'showHidden':![],'depth':null}),_0x268799,_0x2cdbf2);_0x2b8c59(_0x2ddab4);}_0x11f5b4(_0x268799);});});};
\ No newline at end of file
index 58493bf..9de43de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37c6=['minrate','format','\x22%s\x22','gateway','faxdetect','t38timeout','variablesAction','uniqueid','xcally-motion-fax','from-sip','localstationid','util','lodash','fax','message','logger','info','addVariables','ecm','headerinfo'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x37c6,0x187));var _0x637c=function(_0x517ec6,_0x2523b7){_0x517ec6=_0x517ec6-0x0;var _0x254fd3=_0x37c6[_0x517ec6];return _0x254fd3;};'use strict';var util=require(_0x637c('0x0'));var _=require(_0x637c('0x1'));var moment=require('moment');var logger=require('../../../../config/logger')(_0x637c('0x2'));exports[_0x637c('0x3')]=function(_0x373a87){return{'message':_0x373a87};};exports[_0x637c('0x4')]=function(_0x3b0c9e,_0x379447){logger[_0x637c('0x5')](_0x3b0c9e,util['inspect'](_0x379447,{'showHidden':![],'depth':null}));};exports[_0x637c('0x6')]=function(_0x352021,_0x53ee43){var _0x114b4a={'XMF-ECM':_0x53ee43[_0x637c('0x7')],'XMF-HEADERINFO':_0x53ee43[_0x637c('0x8')],'XMF-MINRATE':_0x53ee43[_0x637c('0x9')],'XMF-MAXRATE':_0x53ee43['maxrate'],'XMF-MODEM':util[_0x637c('0xa')](_0x637c('0xb'),_0x53ee43['modem']),'XMF-GATEWAY':_0x53ee43[_0x637c('0xc')],'XMF-FAXDETECT':_0x53ee43[_0x637c('0xd')],'XMF-T38TIMEOUT':_0x53ee43[_0x637c('0xe')],'XMF-LOCALSTATIONID':_0x53ee43['localstationid'],'XMF-PATH':_0x352021['path']};return _0x114b4a;};exports[_0x637c('0xf')]=function(_0x424158,_0x20a0b3){return{'actionid':_0x424158[_0x637c('0x10')],'action':'originate','channel':_0x424158['channel'],'Exten':_0x637c('0x11'),'Context':_0x637c('0x12'),'Priority':'1','callerid':util[_0x637c('0xa')]('\x22%s\x22\x20<%s>',_0x424158[_0x637c('0x8')]?_0x424158['headerinfo']:'',_0x424158[_0x637c('0x13')]),'variable':_0x20a0b3,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x424158[_0x637c('0x10')]};};
\ No newline at end of file
+var _0x771d=['variablesAction','uniqueid','originate','channel','xcally-motion-fax','from-sip','localstationid','lodash','moment','../../../../config/logger','fax','message','logger','info','inspect','ecm','headerinfo','minrate','format','\x22%s\x22','faxdetect','t38timeout','path'];(function(_0x1d2bbb,_0x202267){var _0x38082b=function(_0x27d153){while(--_0x27d153){_0x1d2bbb['push'](_0x1d2bbb['shift']());}};_0x38082b(++_0x202267);}(_0x771d,0x132));var _0xd771=function(_0x5777cf,_0x218914){_0x5777cf=_0x5777cf-0x0;var _0x369c43=_0x771d[_0x5777cf];return _0x369c43;};'use strict';var util=require('util');var _=require(_0xd771('0x0'));var moment=require(_0xd771('0x1'));var logger=require(_0xd771('0x2'))(_0xd771('0x3'));exports[_0xd771('0x4')]=function(_0x12e93a){return{'message':_0x12e93a};};exports[_0xd771('0x5')]=function(_0x2f3d76,_0x4c95d5){logger[_0xd771('0x6')](_0x2f3d76,util[_0xd771('0x7')](_0x4c95d5,{'showHidden':![],'depth':null}));};exports['addVariables']=function(_0x1425c6,_0x42f0ef){var _0x3a1506={'XMF-ECM':_0x42f0ef[_0xd771('0x8')],'XMF-HEADERINFO':_0x42f0ef[_0xd771('0x9')],'XMF-MINRATE':_0x42f0ef[_0xd771('0xa')],'XMF-MAXRATE':_0x42f0ef['maxrate'],'XMF-MODEM':util[_0xd771('0xb')](_0xd771('0xc'),_0x42f0ef['modem']),'XMF-GATEWAY':_0x42f0ef['gateway'],'XMF-FAXDETECT':_0x42f0ef[_0xd771('0xd')],'XMF-T38TIMEOUT':_0x42f0ef[_0xd771('0xe')],'XMF-LOCALSTATIONID':_0x42f0ef['localstationid'],'XMF-PATH':_0x1425c6[_0xd771('0xf')]};return _0x3a1506;};exports[_0xd771('0x10')]=function(_0x20a43e,_0x55b49e){return{'actionid':_0x20a43e[_0xd771('0x11')],'action':_0xd771('0x12'),'channel':_0x20a43e[_0xd771('0x13')],'Exten':_0xd771('0x14'),'Context':_0xd771('0x15'),'Priority':'1','callerid':util[_0xd771('0xb')]('\x22%s\x22\x20<%s>',_0x20a43e[_0xd771('0x9')]?_0x20a43e[_0xd771('0x9')]:'',_0x20a43e[_0xd771('0x16')]),'variable':_0x55b49e,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x20a43e[_0xd771('0x11')]};};
\ No newline at end of file
index 886e6af..3300d16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3953=['./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','get','hour','getAgents','then','getTrunks','initTrunks','getVoiceQueues','getTriggers','initTriggers','getTemplates','getZendeskAccounts','initZendeskAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','initVoiceQueueHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','listen','sync','log','moment','./realtime','./report','./acw','./trigger','./preview','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/template','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/sugarcrm','./rpc/integrations/desk','./rpc/integrations/zoho'];(function(_0x17a96f,_0x236cd5){var _0x46679c=function(_0x12ecd4){while(--_0x12ecd4){_0x17a96f['push'](_0x17a96f['shift']());}};_0x46679c(++_0x236cd5);}(_0x3953,0xb2));var _0x3395=function(_0x10aaad,_0x5f1831){_0x10aaad=_0x10aaad-0x0;var _0x3dcf40=_0x3953[_0x10aaad];return _0x3dcf40;};'use strict';var BPromise=require('bluebird');var util=require('util');var moment=require(_0x3395('0x0'));var server=require('./server');var Realtime=require(_0x3395('0x1'));var Report=require(_0x3395('0x2'));var Acw=require(_0x3395('0x3'));var Trigger=require(_0x3395('0x4'));var Dialer=require('./dialer');var Preview=require(_0x3395('0x5'));var Fax=require(_0x3395('0x6'));var user=require(_0x3395('0x7'));var voiceQueue=require(_0x3395('0x8'));var voiceQueueReport=require(_0x3395('0x9'));var voiceCallReport=require(_0x3395('0xa'));var trunk=require('./rpc/trunk');var trigger=require('./rpc/trigger');var template=require(_0x3395('0xb'));var cmHopperHistory=require(_0x3395('0xc'));var campaign=require(_0x3395('0xd'));var voiceExtension=require(_0x3395('0xe'));var faxAccount=require(_0x3395('0xf'));var zendesk=require(_0x3395('0x10'));var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require(_0x3395('0x11'));var freshdesk=require('./rpc/integrations/freshdesk');var desk=require(_0x3395('0x12'));var zoho=require(_0x3395('0x13'));var vtiger=require(_0x3395('0x14'));var freshsales=require(_0x3395('0x15'));var servicenow=require(_0x3395('0x16'));var dynamics365=require(_0x3395('0x17'));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()[_0x3395('0x18')](_0x3395('0x19'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()['get'](_0x3395('0x19'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise['resolve']()['then'](user[_0x3395('0x1a')]())['then'](realtime['initAgents']())[_0x3395('0x1b')](user['getTelephones']())[_0x3395('0x1b')](realtime['initTelephones']())[_0x3395('0x1b')](trunk[_0x3395('0x1c')]())[_0x3395('0x1b')](realtime[_0x3395('0x1d')]())[_0x3395('0x1b')](voiceQueue[_0x3395('0x1e')]())[_0x3395('0x1b')](realtime['initVoiceQueues']())[_0x3395('0x1b')](trigger[_0x3395('0x1f')]())[_0x3395('0x1b')](realtime[_0x3395('0x20')]())[_0x3395('0x1b')](template[_0x3395('0x21')]())[_0x3395('0x1b')](realtime['initTemplates']())[_0x3395('0x1b')](zendesk[_0x3395('0x22')]())['then'](realtime[_0x3395('0x23')]())['then'](salesforce['getSalesforceAccounts']())[_0x3395('0x1b')](realtime[_0x3395('0x24')]())[_0x3395('0x1b')](sugarcrm[_0x3395('0x25')]())[_0x3395('0x1b')](realtime[_0x3395('0x26')]())[_0x3395('0x1b')](freshdesk[_0x3395('0x27')]())['then'](realtime[_0x3395('0x28')]())['then'](desk[_0x3395('0x29')]())['then'](realtime['initDeskAccounts']())[_0x3395('0x1b')](zoho[_0x3395('0x2a')]())['then'](realtime[_0x3395('0x2b')]())[_0x3395('0x1b')](vtiger[_0x3395('0x2c')]())[_0x3395('0x1b')](realtime['initVtigerAccounts']())[_0x3395('0x1b')](freshsales[_0x3395('0x2d')]())[_0x3395('0x1b')](realtime[_0x3395('0x2e')]())[_0x3395('0x1b')](servicenow[_0x3395('0x2f')]())[_0x3395('0x1b')](realtime[_0x3395('0x30')]())['then'](dynamics365[_0x3395('0x31')]())[_0x3395('0x1b')](realtime[_0x3395('0x32')]())['then'](campaign['getCampaigns']())[_0x3395('0x1b')](realtime[_0x3395('0x33')]())[_0x3395('0x1b')](voiceExtension[_0x3395('0x34')]())[_0x3395('0x1b')](realtime[_0x3395('0x35')]())['then'](faxAccount[_0x3395('0x36')]())['then'](realtime[_0x3395('0x37')]())[_0x3395('0x1b')](function(){return realtime;});}function initParams(){return BPromise['resolve']()['then'](voiceQueueReport[_0x3395('0x38')]())['then'](realtime[_0x3395('0x39')]())[_0x3395('0x1b')](cmHopperHistory['getVoiceQueueHopperHistory']())[_0x3395('0x1b')](realtime[_0x3395('0x3a')]())[_0x3395('0x1b')](cmHopperHistory['getCampaignHopperHistory']())['then'](realtime[_0x3395('0x3b')]())[_0x3395('0x1b')](voiceCallReport[_0x3395('0x3c')]())[_0x3395('0x1b')](realtime[_0x3395('0x3d')]())[_0x3395('0x1b')](function(_0x5f1701){})[_0x3395('0x3e')](function(_0x353e9e){console['log'](_0x353e9e);});}function main(){return server[_0x3395('0x3f')](realtime,preview,fax)[_0x3395('0x1b')](function(_0x2185a8){return initRealtime();})['then'](function(){return initParams();})[_0x3395('0x1b')](function(){report[_0x3395('0x40')]();setInterval(initRealtime,0x1388);})[_0x3395('0x3e')](function(_0x17f30e){console[_0x3395('0x41')](_0x17f30e);});}main();
\ No newline at end of file
+var _0x598c=['initCampaigns','initVoiceExtensions','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','log','util','moment','./server','./realtime','./report','./acw','./dialer','./preview','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trigger','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/sugarcrm','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','get','resolve','getAgents','then','initAgents','getTelephones','initTelephones','getTrunks','initTrunks','getVoiceQueues','initVoiceQueues','getTriggers','getTemplates','initTemplates','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','initServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts'];(function(_0x4e471a,_0x12214a){var _0x2980ea=function(_0x2ed409){while(--_0x2ed409){_0x4e471a['push'](_0x4e471a['shift']());}};_0x2980ea(++_0x12214a);}(_0x598c,0x1a9));var _0xc598=function(_0x123c1f,_0x29a3e1){_0x123c1f=_0x123c1f-0x0;var _0x3c3398=_0x598c[_0x123c1f];return _0x3c3398;};'use strict';var BPromise=require('bluebird');var util=require(_0xc598('0x0'));var moment=require(_0xc598('0x1'));var server=require(_0xc598('0x2'));var Realtime=require(_0xc598('0x3'));var Report=require(_0xc598('0x4'));var Acw=require(_0xc598('0x5'));var Trigger=require('./trigger');var Dialer=require(_0xc598('0x6'));var Preview=require(_0xc598('0x7'));var Fax=require(_0xc598('0x8'));var user=require(_0xc598('0x9'));var voiceQueue=require(_0xc598('0xa'));var voiceQueueReport=require(_0xc598('0xb'));var voiceCallReport=require(_0xc598('0xc'));var trunk=require('./rpc/trunk');var trigger=require(_0xc598('0xd'));var template=require('./rpc/template');var cmHopperHistory=require(_0xc598('0xe'));var campaign=require(_0xc598('0xf'));var voiceExtension=require(_0xc598('0x10'));var faxAccount=require(_0xc598('0x11'));var zendesk=require(_0xc598('0x12'));var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require(_0xc598('0x13'));var freshdesk=require('./rpc/integrations/freshdesk');var desk=require('./rpc/integrations/desk');var zoho=require(_0xc598('0x14'));var vtiger=require(_0xc598('0x15'));var freshsales=require(_0xc598('0x16'));var servicenow=require(_0xc598('0x17'));var dynamics365=require(_0xc598('0x18'));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()[_0xc598('0x19')]('hour')===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()['get']('hour')===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0xc598('0x1a')]()['then'](user[_0xc598('0x1b')]())[_0xc598('0x1c')](realtime[_0xc598('0x1d')]())['then'](user[_0xc598('0x1e')]())[_0xc598('0x1c')](realtime[_0xc598('0x1f')]())['then'](trunk[_0xc598('0x20')]())[_0xc598('0x1c')](realtime[_0xc598('0x21')]())['then'](voiceQueue[_0xc598('0x22')]())[_0xc598('0x1c')](realtime[_0xc598('0x23')]())[_0xc598('0x1c')](trigger[_0xc598('0x24')]())[_0xc598('0x1c')](realtime['initTriggers']())[_0xc598('0x1c')](template[_0xc598('0x25')]())[_0xc598('0x1c')](realtime[_0xc598('0x26')]())[_0xc598('0x1c')](zendesk[_0xc598('0x27')]())[_0xc598('0x1c')](realtime[_0xc598('0x28')]())['then'](salesforce[_0xc598('0x29')]())[_0xc598('0x1c')](realtime[_0xc598('0x2a')]())[_0xc598('0x1c')](sugarcrm[_0xc598('0x2b')]())[_0xc598('0x1c')](realtime[_0xc598('0x2c')]())['then'](freshdesk[_0xc598('0x2d')]())['then'](realtime[_0xc598('0x2e')]())[_0xc598('0x1c')](desk[_0xc598('0x2f')]())[_0xc598('0x1c')](realtime[_0xc598('0x30')]())[_0xc598('0x1c')](zoho[_0xc598('0x31')]())[_0xc598('0x1c')](realtime[_0xc598('0x32')]())[_0xc598('0x1c')](vtiger[_0xc598('0x33')]())[_0xc598('0x1c')](realtime[_0xc598('0x34')]())[_0xc598('0x1c')](freshsales[_0xc598('0x35')]())[_0xc598('0x1c')](realtime[_0xc598('0x36')]())[_0xc598('0x1c')](servicenow['getServicenowAccounts']())[_0xc598('0x1c')](realtime[_0xc598('0x37')]())['then'](dynamics365[_0xc598('0x38')]())[_0xc598('0x1c')](realtime[_0xc598('0x39')]())[_0xc598('0x1c')](campaign['getCampaigns']())[_0xc598('0x1c')](realtime[_0xc598('0x3a')]())[_0xc598('0x1c')](voiceExtension['getVoiceExtensions']())[_0xc598('0x1c')](realtime[_0xc598('0x3b')]())[_0xc598('0x1c')](faxAccount['getFaxAccounts']())[_0xc598('0x1c')](realtime['initFaxAccounts']())['then'](function(){return realtime;});}function initParams(){return BPromise[_0xc598('0x1a')]()[_0xc598('0x1c')](voiceQueueReport[_0xc598('0x3c')]())[_0xc598('0x1c')](realtime[_0xc598('0x3d')]())[_0xc598('0x1c')](cmHopperHistory[_0xc598('0x3e')]())[_0xc598('0x1c')](realtime[_0xc598('0x3f')]())[_0xc598('0x1c')](cmHopperHistory[_0xc598('0x40')]())[_0xc598('0x1c')](realtime['initCampaignHopperHistory']())[_0xc598('0x1c')](voiceCallReport[_0xc598('0x41')]())[_0xc598('0x1c')](realtime[_0xc598('0x42')]())['then'](function(_0x3aa74a){})[_0xc598('0x43')](function(_0xf1429){console[_0xc598('0x44')](_0xf1429);});}function main(){return server['listen'](realtime,preview,fax)[_0xc598('0x1c')](function(_0x3a8a73){return initRealtime();})[_0xc598('0x1c')](function(){return initParams();})[_0xc598('0x1c')](function(){report['sync']();setInterval(initRealtime,0x1388);})[_0xc598('0x43')](function(_0x4af5f7){console['log'](_0x4af5f7);});}main();
\ No newline at end of file
index 74f74e1..4fd9abd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['stateTime','status','address','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','voiceStatusQueue','local','md5','prototype','updateStatusRealtime','not_inuse','inuse','talking','statePause','toNumber','format','fullname','stringify','user:%s','emit','user:save','user:presence','exports','lodash','util','moment','../../../config/environment','defaults','redis','localhost','socket.io-emitter','name','email','accountcode','state','unknown'];(function(_0x27657c,_0x36813e){var _0x12324a=function(_0x3f6eea){while(--_0x3f6eea){_0x27657c['push'](_0x27657c['shift']());}};_0x12324a(++_0x36813e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xa9e0[_0x187ee1];return _0x388160;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var md5=require('md5');var Redis=require('ioredis');var config=require(_0x0a9e('0x3'));config['redis']=_[_0x0a9e('0x4')](config[_0x0a9e('0x5')],{'host':_0x0a9e('0x6'),'port':0x18eb});var io=require(_0x0a9e('0x7'))(new Redis(config[_0x0a9e('0x5')]));function Agent(_0x57b080){this['id']=_0x57b080['id']||0x0;this[_0x0a9e('0x8')]=_0x57b080[_0x0a9e('0x8')]||'';this[_0x0a9e('0x9')]=_0x57b080['email']||'';this['accountcode']=_0x57b080[_0x0a9e('0xa')]||'';this['fullname']=_0x57b080['fullname']||'';this[_0x0a9e('0xb')]=_0x0a9e('0xc');this[_0x0a9e('0xd')]=0x0;this[_0x0a9e('0xe')]=_0x0a9e('0xc');this[_0x0a9e('0xf')]='';this['phone']='';this['mobile']='';this['interface']='';this['online']=_0x57b080[_0x0a9e('0x10')]||![];this[_0x0a9e('0x11')]=_0x0a9e('0xc');this[_0x0a9e('0x12')]=0x0;this[_0x0a9e('0x13')]='';this[_0x0a9e('0x14')]='';this['onhold']=![];this[_0x0a9e('0x15')]=![];this[_0x0a9e('0x16')]='';}Agent[_0x0a9e('0x17')][_0x0a9e('0x18')]=function(_0x44dcfd){var _0x4d5611;if(_0x44dcfd&&_0x44dcfd['state']){_0x4d5611=_0x44dcfd[_0x0a9e('0xb')]['toLowerCase']();switch(_0x4d5611){case _0x0a9e('0x19'):_0x4d5611='idle';break;case _0x0a9e('0x1a'):_0x4d5611=_0x0a9e('0x1b');break;}}if(_0x4d5611&&this['voiceStatus']!==_0x4d5611||_0x44dcfd[_0x0a9e('0x1c')]){this['voiceStatusTime']=_[_0x0a9e('0x1d')](moment()[_0x0a9e('0x1e')]('x'));}if(_0x4d5611){this[_0x0a9e('0x11')]=_0x4d5611;}var _0x205fd6={'id':this['id'],'name':this[_0x0a9e('0x8')],'email':this[_0x0a9e('0x9')],'accountcode':this[_0x0a9e('0xa')],'fullname':this[_0x0a9e('0x1f')],'state':this[_0x0a9e('0xb')],'stateTime':this[_0x0a9e('0xd')],'status':this[_0x0a9e('0xe')],'address':this[_0x0a9e('0xf')],'online':this['online'],'voiceStatus':this[_0x0a9e('0x11')],'voiceStatusTime':this[_0x0a9e('0x12')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this[_0x0a9e('0x14')],'interface':this['interface'],'onhold':this['onhold']};var _0x3a02e1=md5(JSON[_0x0a9e('0x20')](_0x205fd6));if(this[_0x0a9e('0x16')]!==_0x3a02e1){this[_0x0a9e('0x16')]=_0x3a02e1;io['to'](util['format'](_0x0a9e('0x21'),_0x205fd6[_0x0a9e('0x8')]))[_0x0a9e('0x22')](_0x0a9e('0x23'),_0x205fd6);io[_0x0a9e('0x22')](_0x0a9e('0x24'),_0x205fd6);}};module[_0x0a9e('0x25')]=Agent;
\ No newline at end of file
+var _0xcb91=['name','email','accountcode','fullname','unknown','stateTime','status','address','mobile','interface','online','voiceStatus','voiceStatusQueue','onhold','local','updateStatusRealtime','state','idle','inuse','talking','statePause','voiceStatusTime','toNumber','voiceStatusCallerIdNumber','stringify','format','emit','user:presence','exports','moment','md5','ioredis','../../../config/environment','defaults','redis','socket.io-emitter'];(function(_0x3fb282,_0xc01c40){var _0x4d0e2c=function(_0x1f93a2){while(--_0x1f93a2){_0x3fb282['push'](_0x3fb282['shift']());}};_0x4d0e2c(++_0xc01c40);}(_0xcb91,0x1a9));var _0x1cb9=function(_0xdefbc3,_0x1ea49a){_0xdefbc3=_0xdefbc3-0x0;var _0x367798=_0xcb91[_0xdefbc3];return _0x367798;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cb9('0x0'));var md5=require(_0x1cb9('0x1'));var Redis=require(_0x1cb9('0x2'));var config=require(_0x1cb9('0x3'));config['redis']=_[_0x1cb9('0x4')](config[_0x1cb9('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x1cb9('0x6'))(new Redis(config[_0x1cb9('0x5')]));function Agent(_0x53ffbd){this['id']=_0x53ffbd['id']||0x0;this[_0x1cb9('0x7')]=_0x53ffbd[_0x1cb9('0x7')]||'';this['email']=_0x53ffbd[_0x1cb9('0x8')]||'';this[_0x1cb9('0x9')]=_0x53ffbd['accountcode']||'';this[_0x1cb9('0xa')]=_0x53ffbd['fullname']||'';this['state']=_0x1cb9('0xb');this[_0x1cb9('0xc')]=0x0;this[_0x1cb9('0xd')]=_0x1cb9('0xb');this[_0x1cb9('0xe')]='';this['phone']='';this[_0x1cb9('0xf')]='';this[_0x1cb9('0x10')]='';this[_0x1cb9('0x11')]=_0x53ffbd[_0x1cb9('0x11')]||![];this[_0x1cb9('0x12')]='unknown';this['voiceStatusTime']=0x0;this['voiceStatusCallerIdNumber']='';this[_0x1cb9('0x13')]='';this[_0x1cb9('0x14')]=![];this[_0x1cb9('0x15')]=![];this[_0x1cb9('0x1')]='';}Agent['prototype'][_0x1cb9('0x16')]=function(_0x6ef389){var _0x1b3cd7;if(_0x6ef389&&_0x6ef389[_0x1cb9('0x17')]){_0x1b3cd7=_0x6ef389[_0x1cb9('0x17')]['toLowerCase']();switch(_0x1b3cd7){case'not_inuse':_0x1b3cd7=_0x1cb9('0x18');break;case _0x1cb9('0x19'):_0x1b3cd7=_0x1cb9('0x1a');break;}}if(_0x1b3cd7&&this[_0x1cb9('0x12')]!==_0x1b3cd7||_0x6ef389[_0x1cb9('0x1b')]){this[_0x1cb9('0x1c')]=_[_0x1cb9('0x1d')](moment()['format']('x'));}if(_0x1b3cd7){this['voiceStatus']=_0x1b3cd7;}var _0x1b2fa6={'id':this['id'],'name':this[_0x1cb9('0x7')],'email':this[_0x1cb9('0x8')],'accountcode':this[_0x1cb9('0x9')],'fullname':this[_0x1cb9('0xa')],'state':this[_0x1cb9('0x17')],'stateTime':this[_0x1cb9('0xc')],'status':this['status'],'address':this['address'],'online':this[_0x1cb9('0x11')],'voiceStatus':this['voiceStatus'],'voiceStatusTime':this[_0x1cb9('0x1c')],'voiceStatusCallerIdNumber':this[_0x1cb9('0x1e')],'voiceStatusQueue':this['voiceStatusQueue'],'interface':this['interface'],'onhold':this[_0x1cb9('0x14')]};var _0x325637=md5(JSON[_0x1cb9('0x1f')](_0x1b2fa6));if(this[_0x1cb9('0x1')]!==_0x325637){this[_0x1cb9('0x1')]=_0x325637;io['to'](util[_0x1cb9('0x20')]('user:%s',_0x1b2fa6['name']))[_0x1cb9('0x21')]('user:save',_0x1b2fa6);io[_0x1cb9('0x21')](_0x1cb9('0x22'),_0x1b2fa6);}};module[_0x1cb9('0x23')]=Agent;
\ No newline at end of file
index 33e457d..eb3149d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82ed=['dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','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','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence'];(function(_0x385849,_0x4a4f72){var _0x3e851a=function(_0x35b2e4){while(--_0x35b2e4){_0x385849['push'](_0x385849['shift']());}};_0x3e851a(++_0x4a4f72);}(_0x82ed,0x13e));var _0xd82e=function(_0x147078,_0x4e509c){_0x147078=_0x147078-0x0;var _0x2d2f5c=_0x82ed[_0x147078];return _0x2d2f5c;};'use strict';function Campaign(_0x166628){this['id']=_0x166628['id']||0x0;this[_0xd82e('0x0')]=_0x166628[_0xd82e('0x0')]||'';this[_0xd82e('0x1')]=_0x166628['type']||_0xd82e('0x2');this[_0xd82e('0x3')]=0x0;this[_0xd82e('0x4')]=0x0;this[_0xd82e('0x5')]=0x0;this[_0xd82e('0x6')]=0x0;this[_0xd82e('0x7')]='';this[_0xd82e('0x8')]=!![];this[_0xd82e('0x9')]=_0x166628['active'];this[_0xd82e('0xa')]=_0x166628[_0xd82e('0xa')];this[_0xd82e('0xb')]=_0x166628['dialTimezone']||null;this[_0xd82e('0xc')]=_0x166628['dialGlobalInterval']?_0x166628[_0xd82e('0xc')]:null;this[_0xd82e('0xd')]=_0x166628[_0xd82e('0xd')];this['dialOriginateCallerIdNumber']=_0x166628[_0xd82e('0xe')];this[_0xd82e('0xf')]=_0x166628[_0xd82e('0xf')]||0x1e;this['dialCongestionMaxRetry']=_0x166628[_0xd82e('0x10')];this[_0xd82e('0x11')]=_0x166628['dialCongestionRetryFrequency'];this[_0xd82e('0x12')]=_0x166628[_0xd82e('0x12')];this[_0xd82e('0x13')]=_0x166628['dialBusyRetryFrequency'];this[_0xd82e('0x14')]=_0x166628['dialNoAnswerMaxRetry'];this[_0xd82e('0x15')]=_0x166628['dialNoAnswerRetryFrequency'];this[_0xd82e('0x16')]=_0x166628[_0xd82e('0x16')];this[_0xd82e('0x17')]=_0x166628[_0xd82e('0x17')]||0x3;this[_0xd82e('0x18')]=_0x166628[_0xd82e('0x18')]||0x96;this[_0xd82e('0x19')]=_0x166628[_0xd82e('0x19')]||0x3;this[_0xd82e('0x1a')]=_0x166628[_0xd82e('0x1a')]||0x96;this[_0xd82e('0x1b')]=_0x166628[_0xd82e('0x1b')]||0x3;this[_0xd82e('0x1c')]=_0x166628[_0xd82e('0x1c')]||0x96;this['dialMachineMaxRetry']=_0x166628[_0xd82e('0x1d')]||0x3;this[_0xd82e('0x1e')]=_0x166628[_0xd82e('0x1e')]||0x96;this[_0xd82e('0x1f')]=_0x166628[_0xd82e('0x1f')]||0x3;this[_0xd82e('0x20')]=_0x166628['dialAgentRejectRetryFrequency']||0x96;this[_0xd82e('0x21')]=_0x166628[_0xd82e('0x21')]||_0xd82e('0x22');this[_0xd82e('0x23')]=_0x166628[_0xd82e('0x23')]||undefined;this[_0xd82e('0x24')]=_0x166628[_0xd82e('0x24')]||undefined;this[_0xd82e('0x25')]=_0x166628[_0xd82e('0x25')]||undefined;this[_0xd82e('0x26')]=_0x166628['TrunkBackup']?_0x166628[_0xd82e('0x26')]:undefined;this['Trunk']=_0x166628[_0xd82e('0x27')]?_0x166628['Trunk']:undefined;this[_0xd82e('0x28')]=_0x166628[_0xd82e('0x28')]?_0x166628[_0xd82e('0x28')]:undefined;this['SquareProject']=_0x166628[_0xd82e('0x29')]?_0x166628[_0xd82e('0x29')]:undefined;this['dialQueueProject']=_0x166628[_0xd82e('0x29')]?_0x166628[_0xd82e('0x29')][_0xd82e('0x0')]:undefined;this['dialAMDActive']=_0x166628[_0xd82e('0x2a')]||![];this['dialAMDInitialSilence']=_0x166628[_0xd82e('0x2b')];this[_0xd82e('0x2c')]=_0x166628['dialAMDGreeting'];this['dialAMDAfterGreetingSilence']=_0x166628[_0xd82e('0x2d')];this[_0xd82e('0x2e')]=_0x166628[_0xd82e('0x2e')];this['dialAMDMinWordLength']=_0x166628[_0xd82e('0x2f')];this['dialAMDBetweenWordsSilence']=_0x166628[_0xd82e('0x30')];this[_0xd82e('0x31')]=_0x166628[_0xd82e('0x31')];this[_0xd82e('0x32')]=_0x166628['dialAMDSilenceThreshold'];this[_0xd82e('0x33')]=_0x166628[_0xd82e('0x33')];}module['exports']=Campaign;
\ No newline at end of file
+var _0x4dc4=['dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','name','type','temp','ivrAnswerCallsDay','message','sendMessageOneNotActive','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency'];(function(_0x2e66e9,_0x5e9458){var _0x1535d6=function(_0x419e47){while(--_0x419e47){_0x2e66e9['push'](_0x2e66e9['shift']());}};_0x1535d6(++_0x5e9458);}(_0x4dc4,0x73));var _0x44dc=function(_0x11a85a,_0x449ec1){_0x11a85a=_0x11a85a-0x0;var _0x4d4a99=_0x4dc4[_0x11a85a];return _0x4d4a99;};'use strict';function Campaign(_0x1bc118){this['id']=_0x1bc118['id']||0x0;this[_0x44dc('0x0')]=_0x1bc118[_0x44dc('0x0')]||'';this['type']=_0x1bc118[_0x44dc('0x1')]||'campaign';this['originated']=0x0;this[_0x44dc('0x2')]=0x0;this[_0x44dc('0x3')]=0x0;this['ivrTotalCallsDays']=0x0;this[_0x44dc('0x4')]='';this[_0x44dc('0x5')]=!![];this['active']=_0x1bc118['active'];this[_0x44dc('0x6')]=_0x1bc118[_0x44dc('0x6')];this['dialTimezone']=_0x1bc118[_0x44dc('0x7')]||null;this[_0x44dc('0x8')]=_0x1bc118[_0x44dc('0x8')]?_0x1bc118[_0x44dc('0x8')]:null;this[_0x44dc('0x9')]=_0x1bc118[_0x44dc('0x9')];this[_0x44dc('0xa')]=_0x1bc118[_0x44dc('0xa')];this[_0x44dc('0xb')]=_0x1bc118[_0x44dc('0xb')]||0x1e;this[_0x44dc('0xc')]=_0x1bc118[_0x44dc('0xc')];this[_0x44dc('0xd')]=_0x1bc118[_0x44dc('0xd')];this['dialBusyMaxRetry']=_0x1bc118['dialBusyMaxRetry'];this[_0x44dc('0xe')]=_0x1bc118[_0x44dc('0xe')];this[_0x44dc('0xf')]=_0x1bc118[_0x44dc('0xf')];this[_0x44dc('0x10')]=_0x1bc118[_0x44dc('0x10')];this[_0x44dc('0x11')]=_0x1bc118[_0x44dc('0x11')];this[_0x44dc('0x12')]=_0x1bc118['dialNoSuchNumberMaxRetry']||0x3;this[_0x44dc('0x13')]=_0x1bc118[_0x44dc('0x13')]||0x96;this[_0x44dc('0x14')]=_0x1bc118[_0x44dc('0x14')]||0x3;this[_0x44dc('0x15')]=_0x1bc118['dialDropRetryFrequency']||0x96;this['dialAbandonedMaxRetry']=_0x1bc118[_0x44dc('0x16')]||0x3;this[_0x44dc('0x17')]=_0x1bc118[_0x44dc('0x17')]||0x96;this[_0x44dc('0x18')]=_0x1bc118['dialMachineMaxRetry']||0x3;this['dialMachineRetryFrequency']=_0x1bc118[_0x44dc('0x19')]||0x96;this[_0x44dc('0x1a')]=_0x1bc118[_0x44dc('0x1a')]||0x3;this[_0x44dc('0x1b')]=_0x1bc118[_0x44dc('0x1b')]||0x96;this[_0x44dc('0x1c')]=_0x1bc118['dialOrderByScheduledAt']||_0x44dc('0x1d');this[_0x44dc('0x1e')]=_0x1bc118[_0x44dc('0x1e')]||undefined;this[_0x44dc('0x1f')]=_0x1bc118[_0x44dc('0x1f')]||undefined;this['dialCutDigit']=_0x1bc118[_0x44dc('0x20')]||undefined;this[_0x44dc('0x21')]=_0x1bc118[_0x44dc('0x21')]?_0x1bc118['TrunkBackup']:undefined;this[_0x44dc('0x22')]=_0x1bc118[_0x44dc('0x22')]?_0x1bc118['Trunk']:undefined;this[_0x44dc('0x23')]=_0x1bc118[_0x44dc('0x23')]?_0x1bc118[_0x44dc('0x23')]:undefined;this[_0x44dc('0x24')]=_0x1bc118[_0x44dc('0x24')]?_0x1bc118[_0x44dc('0x24')]:undefined;this['dialQueueProject']=_0x1bc118[_0x44dc('0x24')]?_0x1bc118['SquareProject'][_0x44dc('0x0')]:undefined;this[_0x44dc('0x25')]=_0x1bc118[_0x44dc('0x25')]||![];this[_0x44dc('0x26')]=_0x1bc118['dialAMDInitialSilence'];this[_0x44dc('0x27')]=_0x1bc118['dialAMDGreeting'];this[_0x44dc('0x28')]=_0x1bc118[_0x44dc('0x28')];this[_0x44dc('0x29')]=_0x1bc118[_0x44dc('0x29')];this[_0x44dc('0x2a')]=_0x1bc118[_0x44dc('0x2a')];this[_0x44dc('0x2b')]=_0x1bc118[_0x44dc('0x2b')];this['dialAMDMaximumNumberOfWords']=_0x1bc118[_0x44dc('0x2c')];this[_0x44dc('0x2d')]=_0x1bc118[_0x44dc('0x2d')];this[_0x44dc('0x2e')]=_0x1bc118['dialAMDMaximumWordLength'];}module['exports']=Campaign;
\ No newline at end of file
index 52f9339..1475418 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b24=['disposition','monitor','monitorFilename','queue','monitors','transfercalleridnum','transferconnectedlinenum','exports','starttime','channel','destinationchannel','calleridnum','calleridname','connectedlinename','accountcode','uniqueid','exten','answertime','endtime','unmanaged','abandoned','lastdata','duration','holdtime','type','tag'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x4b24,0x8a));var _0x44b2=function(_0x2abd22,_0x43fd11){_0x2abd22=_0x2abd22-0x0;var _0x479632=_0x4b24[_0x2abd22];return _0x479632;};'use strict';function Channel(){this[_0x44b2('0x0')]=null;this[_0x44b2('0x1')]='';this[_0x44b2('0x2')]='';this[_0x44b2('0x3')]=0x0;this[_0x44b2('0x4')]='';this['connectedlinenum']=undefined;this[_0x44b2('0x5')]=undefined;this[_0x44b2('0x6')]=0x0;this['context']='';this[_0x44b2('0x7')]=0x0;this['linkedid']=0x0;this[_0x44b2('0x8')]=0x0;this['answered']=![];this[_0x44b2('0x9')]=null;this[_0x44b2('0xa')]=null;this[_0x44b2('0xb')]=![];this[_0x44b2('0xc')]=![];this['lastapplication']='';this[_0x44b2('0xd')]='';this[_0x44b2('0xe')]=0x0;this['billableseconds']=0x0;this[_0x44b2('0xf')]=0x0;this[_0x44b2('0x10')]=null;this[_0x44b2('0x11')]=null;this[_0x44b2('0x12')]=null;this[_0x44b2('0x13')]=![];this[_0x44b2('0x14')]=null;this[_0x44b2('0x15')]=null;this[_0x44b2('0x16')]=[];this[_0x44b2('0x17')]=undefined;this[_0x44b2('0x18')]=undefined;this['transferType']=undefined;this['mohtime']=0x0;}module[_0x44b2('0x19')]=Channel;
\ No newline at end of file
+var _0x7732=['monitorFilename','transfercalleridnum','transferconnectedlinenum','transferType','mohtime','starttime','channel','calleridnum','calleridname','connectedlinenum','connectedlinename','accountcode','context','uniqueid','linkedid','answered','answertime','unmanaged','abandoned','lastapplication','duration','tag','disposition','monitor'];(function(_0x1787bb,_0x2fb7db){var _0x3749c2=function(_0x451a81){while(--_0x451a81){_0x1787bb['push'](_0x1787bb['shift']());}};_0x3749c2(++_0x2fb7db);}(_0x7732,0x7d));var _0x2773=function(_0x37a79c,_0x2b19f0){_0x37a79c=_0x37a79c-0x0;var _0x561d89=_0x7732[_0x37a79c];return _0x561d89;};'use strict';function Channel(){this[_0x2773('0x0')]=null;this[_0x2773('0x1')]='';this['destinationchannel']='';this[_0x2773('0x2')]=0x0;this[_0x2773('0x3')]='';this[_0x2773('0x4')]=undefined;this[_0x2773('0x5')]=undefined;this[_0x2773('0x6')]=0x0;this[_0x2773('0x7')]='';this[_0x2773('0x8')]=0x0;this[_0x2773('0x9')]=0x0;this['exten']=0x0;this[_0x2773('0xa')]=![];this[_0x2773('0xb')]=null;this['endtime']=null;this[_0x2773('0xc')]=![];this[_0x2773('0xd')]=![];this[_0x2773('0xe')]='';this['lastdata']='';this[_0x2773('0xf')]=0x0;this['billableseconds']=0x0;this['holdtime']=0x0;this['type']=null;this[_0x2773('0x10')]=null;this[_0x2773('0x11')]=null;this[_0x2773('0x12')]=![];this[_0x2773('0x13')]=null;this['queue']=null;this['monitors']=[];this[_0x2773('0x14')]=undefined;this[_0x2773('0x15')]=undefined;this[_0x2773('0x16')]=undefined;this[_0x2773('0x17')]=0x0;}module['exports']=Channel;
\ No newline at end of file
index 54557c7..e2f8435 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6656=['name','remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl','Configurations','exports'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x6656,0x1c8));var _0x6665=function(_0x7794ac,_0x19c5c6){_0x7794ac=_0x7794ac-0x0;var _0x54b7d4=_0x6656[_0x7794ac];return _0x54b7d4;};'use strict';function DeskAccount(_0x1582bc){this['id']=_0x1582bc['id']||0x0;this['name']=_0x1582bc[_0x6665('0x0')]||'';this['username']=_0x1582bc['username']||'';this[_0x6665('0x1')]=_0x1582bc[_0x6665('0x1')]||'';this['authType']=_0x1582bc[_0x6665('0x2')]||'';this[_0x6665('0x3')]=_0x1582bc[_0x6665('0x3')]||'';this[_0x6665('0x4')]=_0x1582bc['consumerKey']||'';this[_0x6665('0x5')]=_0x1582bc['consumerSecret']||'';this[_0x6665('0x6')]=_0x1582bc['token']||'';this[_0x6665('0x7')]=_0x1582bc[_0x6665('0x7')]||'';this[_0x6665('0x8')]=_0x1582bc[_0x6665('0x8')]||'';this[_0x6665('0x9')]=_0x1582bc[_0x6665('0x9')]||'';this[_0x6665('0xa')]=_0x1582bc[_0x6665('0xa')]||{};}module[_0x6665('0xb')]=DeskAccount;
\ No newline at end of file
+var _0xec00=['remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret','type','name','username'];(function(_0x32a5d8,_0x1d43b1){var _0x4f2f0e=function(_0x12c09f){while(--_0x12c09f){_0x32a5d8['push'](_0x32a5d8['shift']());}};_0x4f2f0e(++_0x1d43b1);}(_0xec00,0x134));var _0x0ec0=function(_0x1b1e76,_0x31695b){_0x1b1e76=_0x1b1e76-0x0;var _0x3d743a=_0xec00[_0x1b1e76];return _0x3d743a;};'use strict';function DeskAccount(_0x3de84c){this['id']=_0x3de84c['id']||0x0;this[_0x0ec0('0x0')]=_0x3de84c[_0x0ec0('0x0')]||'';this[_0x0ec0('0x1')]=_0x3de84c[_0x0ec0('0x1')]||'';this[_0x0ec0('0x2')]=_0x3de84c[_0x0ec0('0x2')]||'';this[_0x0ec0('0x3')]=_0x3de84c['authType']||'';this[_0x0ec0('0x4')]=_0x3de84c[_0x0ec0('0x4')]||'';this[_0x0ec0('0x5')]=_0x3de84c[_0x0ec0('0x5')]||'';this[_0x0ec0('0x6')]=_0x3de84c['consumerSecret']||'';this['token']=_0x3de84c[_0x0ec0('0x7')]||'';this[_0x0ec0('0x8')]=_0x3de84c[_0x0ec0('0x8')]||'';this[_0x0ec0('0x9')]=_0x3de84c['type']||'';this['serverUrl']=_0x3de84c['serverUrl']||'';this['Configurations']=_0x3de84c['Configurations']||{};}module['exports']=DeskAccount;
\ No newline at end of file
index c4ca794..239d4b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dae=['clientId','clientSecret','serverUrl','Configurations','exports','name','username','password','remoteUri','tenantId'];(function(_0x2743b1,_0x29474f){var _0xaaffd1=function(_0x58dd6f){while(--_0x58dd6f){_0x2743b1['push'](_0x2743b1['shift']());}};_0xaaffd1(++_0x29474f);}(_0x2dae,0xc3));var _0xe2da=function(_0x403c20,_0x4a7b99){_0x403c20=_0x403c20-0x0;var _0x2b271a=_0x2dae[_0x403c20];return _0x2b271a;};'use strict';function Dynamics365Account(_0x463a36){this['id']=_0x463a36['id']||0x0;this['name']=_0x463a36[_0xe2da('0x0')]||'';this[_0xe2da('0x1')]=_0x463a36[_0xe2da('0x1')]||'';this[_0xe2da('0x2')]=_0x463a36[_0xe2da('0x2')]||'';this['remoteUri']=_0x463a36[_0xe2da('0x3')]||'';this[_0xe2da('0x4')]=_0x463a36[_0xe2da('0x4')]||'';this[_0xe2da('0x5')]=_0x463a36['clientId']||'';this[_0xe2da('0x6')]=_0x463a36[_0xe2da('0x6')]||{};this[_0xe2da('0x7')]=_0x463a36[_0xe2da('0x7')]||'';this[_0xe2da('0x8')]=_0x463a36[_0xe2da('0x8')]||{};}module[_0xe2da('0x9')]=Dynamics365Account;
\ No newline at end of file
+var _0xf7b4=['Configurations','exports','username','remoteUri','tenantId','clientId','clientSecret','serverUrl'];(function(_0x4fa3d2,_0x1bb8db){var _0x1ea3fd=function(_0x4d832e){while(--_0x4d832e){_0x4fa3d2['push'](_0x4fa3d2['shift']());}};_0x1ea3fd(++_0x1bb8db);}(_0xf7b4,0x152));var _0x4f7b=function(_0x690d52,_0x5755fb){_0x690d52=_0x690d52-0x0;var _0x3e6435=_0xf7b4[_0x690d52];return _0x3e6435;};'use strict';function Dynamics365Account(_0x4e182d){this['id']=_0x4e182d['id']||0x0;this['name']=_0x4e182d['name']||'';this[_0x4f7b('0x0')]=_0x4e182d[_0x4f7b('0x0')]||'';this['password']=_0x4e182d['password']||'';this[_0x4f7b('0x1')]=_0x4e182d[_0x4f7b('0x1')]||'';this[_0x4f7b('0x2')]=_0x4e182d[_0x4f7b('0x2')]||'';this[_0x4f7b('0x3')]=_0x4e182d[_0x4f7b('0x3')]||'';this[_0x4f7b('0x4')]=_0x4e182d[_0x4f7b('0x4')]||{};this[_0x4f7b('0x5')]=_0x4e182d[_0x4f7b('0x5')]||'';this[_0x4f7b('0x6')]=_0x4e182d[_0x4f7b('0x6')]||{};}module[_0x4f7b('0x7')]=Dynamics365Account;
\ No newline at end of file
index f6d462c..a3f6cde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bed=['t38timeout','tech','Trunk','ListId','key','exports','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','gateway','faxdetect'];(function(_0x5469e2,_0x1cb459){var _0x5849a2=function(_0x8e818f){while(--_0x8e818f){_0x5469e2['push'](_0x5469e2['shift']());}};_0x5849a2(++_0x1cb459);}(_0x8bed,0x1a6));var _0xd8be=function(_0x3ed1c1,_0x45fe0a){_0x3ed1c1=_0x3ed1c1-0x0;var _0x11797d=_0x8bed[_0x3ed1c1];return _0x11797d;};'use strict';function FaxAccount(_0x51cd83){this['id']=_0x51cd83['id']||0x0;this[_0xd8be('0x0')]=_0x51cd83[_0xd8be('0x0')]||'';this[_0xd8be('0x1')]=_0x51cd83[_0xd8be('0x1')];this['ecm']=_0x51cd83[_0xd8be('0x2')];this['headerinfo']=_0x51cd83[_0xd8be('0x3')];this[_0xd8be('0x4')]=_0x51cd83[_0xd8be('0x4')];this[_0xd8be('0x5')]=_0x51cd83[_0xd8be('0x5')]||0x960;this[_0xd8be('0x6')]=_0x51cd83[_0xd8be('0x6')]||0x3840;this[_0xd8be('0x7')]=_0x51cd83[_0xd8be('0x7')]||'v17,v27,v29';this[_0xd8be('0x8')]=_0x51cd83[_0xd8be('0x8')]||'no';this[_0xd8be('0x9')]=_0x51cd83[_0xd8be('0x9')]||'no';this[_0xd8be('0xa')]=_0x51cd83[_0xd8be('0xa')]||0x1388;this[_0xd8be('0xb')]=_0x51cd83[_0xd8be('0xb')]||'SIP';this[_0xd8be('0xc')]=_0x51cd83[_0xd8be('0xc')]?_0x51cd83[_0xd8be('0xc')]:undefined;this[_0xd8be('0xd')]=_0x51cd83[_0xd8be('0xd')];this[_0xd8be('0xe')]=_0x51cd83[_0xd8be('0xe')];}module[_0xd8be('0xf')]=FaxAccount;
\ No newline at end of file
+var _0x2da4=['gateway','faxdetect','t38timeout','tech','SIP','Trunk','ListId','key','name','description','headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29'];(function(_0x465cee,_0x44a86d){var _0x3c3aa3=function(_0x4dcb6d){while(--_0x4dcb6d){_0x465cee['push'](_0x465cee['shift']());}};_0x3c3aa3(++_0x44a86d);}(_0x2da4,0x198));var _0x42da=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x2da4[_0x14add3];return _0x4a174f;};'use strict';function FaxAccount(_0x4ae8ed){this['id']=_0x4ae8ed['id']||0x0;this[_0x42da('0x0')]=_0x4ae8ed[_0x42da('0x0')]||'';this[_0x42da('0x1')]=_0x4ae8ed[_0x42da('0x1')];this['ecm']=_0x4ae8ed['ecm'];this['headerinfo']=_0x4ae8ed[_0x42da('0x2')];this[_0x42da('0x3')]=_0x4ae8ed[_0x42da('0x3')];this['minrate']=_0x4ae8ed[_0x42da('0x4')]||0x960;this['maxrate']=_0x4ae8ed[_0x42da('0x5')]||0x3840;this[_0x42da('0x6')]=_0x4ae8ed[_0x42da('0x6')]||_0x42da('0x7');this['gateway']=_0x4ae8ed[_0x42da('0x8')]||'no';this['faxdetect']=_0x4ae8ed[_0x42da('0x9')]||'no';this[_0x42da('0xa')]=_0x4ae8ed[_0x42da('0xa')]||0x1388;this[_0x42da('0xb')]=_0x4ae8ed[_0x42da('0xb')]||_0x42da('0xc');this[_0x42da('0xd')]=_0x4ae8ed['Trunk']?_0x4ae8ed[_0x42da('0xd')]:undefined;this[_0x42da('0xe')]=_0x4ae8ed[_0x42da('0xe')];this[_0x42da('0xf')]=_0x4ae8ed[_0x42da('0xf')];}module['exports']=FaxAccount;
\ No newline at end of file
index 74908a1..87be796 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5b7=['serverUrl','Configurations','exports','name','username','token','remoteUri'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xd5b7,0xea));var _0x7d5b=function(_0x2134b7,_0x1eb5e2){_0x2134b7=_0x2134b7-0x0;var _0x6c5914=_0xd5b7[_0x2134b7];return _0x6c5914;};'use strict';function FreshdeskAccount(_0x295236){this['id']=_0x295236['id']||0x0;this[_0x7d5b('0x0')]=_0x295236[_0x7d5b('0x0')]||'';this['username']=_0x295236[_0x7d5b('0x1')]||'';this['apiKey']=_0x295236[_0x7d5b('0x2')]||'';this[_0x7d5b('0x3')]=_0x295236[_0x7d5b('0x3')]||'';this[_0x7d5b('0x4')]=_0x295236[_0x7d5b('0x4')]||'';this[_0x7d5b('0x5')]=_0x295236[_0x7d5b('0x5')]||{};}module[_0x7d5b('0x6')]=FreshdeskAccount;
\ No newline at end of file
+var _0xce44=['Configurations','exports','name','username','apiKey','token','remoteUri','serverUrl'];(function(_0x24b5d8,_0x203128){var _0x54908d=function(_0x3b0db0){while(--_0x3b0db0){_0x24b5d8['push'](_0x24b5d8['shift']());}};_0x54908d(++_0x203128);}(_0xce44,0x19a));var _0x4ce4=function(_0x3d3262,_0x4bf31f){_0x3d3262=_0x3d3262-0x0;var _0x5db3d1=_0xce44[_0x3d3262];return _0x5db3d1;};'use strict';function FreshdeskAccount(_0x5ba869){this['id']=_0x5ba869['id']||0x0;this['name']=_0x5ba869[_0x4ce4('0x0')]||'';this['username']=_0x5ba869[_0x4ce4('0x1')]||'';this[_0x4ce4('0x2')]=_0x5ba869[_0x4ce4('0x3')]||'';this[_0x4ce4('0x4')]=_0x5ba869[_0x4ce4('0x4')]||'';this['serverUrl']=_0x5ba869[_0x4ce4('0x5')]||'';this[_0x4ce4('0x6')]=_0x5ba869['Configurations']||{};}module[_0x4ce4('0x7')]=FreshdeskAccount;
\ No newline at end of file
index 2903580..515d8d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x018c=['Configurations','exports','name','apiKey','remoteUri','serverUrl'];(function(_0x56bd0c,_0x204faf){var _0x4bf104=function(_0x3fa34d){while(--_0x3fa34d){_0x56bd0c['push'](_0x56bd0c['shift']());}};_0x4bf104(++_0x204faf);}(_0x018c,0xda));var _0xc018=function(_0x51dee0,_0x3dee51){_0x51dee0=_0x51dee0-0x0;var _0x8b687c=_0x018c[_0x51dee0];return _0x8b687c;};'use strict';function FreshsalesAccount(_0x39a85e){this['id']=_0x39a85e['id']||0x0;this[_0xc018('0x0')]=_0x39a85e[_0xc018('0x0')]||'';this['username']=_0x39a85e['username']||'';this[_0xc018('0x1')]=_0x39a85e['token']||'';this[_0xc018('0x2')]=_0x39a85e[_0xc018('0x2')]||'';this[_0xc018('0x3')]=_0x39a85e[_0xc018('0x3')]||'';this['Configurations']=_0x39a85e[_0xc018('0x4')]||{};}module[_0xc018('0x5')]=FreshsalesAccount;
\ No newline at end of file
+var _0xff3c=['serverUrl','Configurations','name','username','remoteUri'];(function(_0xc4488c,_0x31a20d){var _0x59db20=function(_0x381061){while(--_0x381061){_0xc4488c['push'](_0xc4488c['shift']());}};_0x59db20(++_0x31a20d);}(_0xff3c,0x179));var _0xcff3=function(_0x1c7cc9,_0x2b6eed){_0x1c7cc9=_0x1c7cc9-0x0;var _0x1cfc62=_0xff3c[_0x1c7cc9];return _0x1cfc62;};'use strict';function FreshsalesAccount(_0x316a7c){this['id']=_0x316a7c['id']||0x0;this[_0xcff3('0x0')]=_0x316a7c['name']||'';this[_0xcff3('0x1')]=_0x316a7c[_0xcff3('0x1')]||'';this['apiKey']=_0x316a7c['token']||'';this[_0xcff3('0x2')]=_0x316a7c[_0xcff3('0x2')]||'';this[_0xcff3('0x3')]=_0x316a7c[_0xcff3('0x3')]||'';this[_0xcff3('0x4')]=_0x316a7c[_0xcff3('0x4')]||{};}module['exports']=FreshsalesAccount;
\ No newline at end of file
index b4a60bd..962e976 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x873b=['channel','connectedlinenum','connectedlinename','accountcode','context','exten','priority','assigned','lastAssignedTo','motionChannel','mohtime','variables','type','uniqueid','calleridnum','calleridname','queue','queuecallerleaveAt','position','count','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','queuecallerexitAt'];(function(_0x573476,_0x4eed04){var _0x340a4b=function(_0x2bbe07){while(--_0x2bbe07){_0x573476['push'](_0x573476['shift']());}};_0x340a4b(++_0x4eed04);}(_0x873b,0xbb));var _0xb873=function(_0x537c37,_0x536e74){_0x537c37=_0x537c37-0x0;var _0x241f84=_0x873b[_0x537c37];return _0x241f84;};'use strict';function QueueReport(){this[_0xb873('0x0')]='inbound';this[_0xb873('0x1')]='';this[_0xb873('0x2')]='';this[_0xb873('0x3')]='';this[_0xb873('0x4')]='';this['queuecallerjoinAt']=null;this[_0xb873('0x5')]=null;this[_0xb873('0x6')]=0x1;this[_0xb873('0x7')]=0x1;this[_0xb873('0x8')]=![];this[_0xb873('0x9')]=null;this[_0xb873('0xa')]=![];this[_0xb873('0xb')]=null;this['queuecallerexit']=![];this[_0xb873('0xc')]=null;this['originalposition']=0x1;this[_0xb873('0xd')]='';this[_0xb873('0xe')]='';this[_0xb873('0xf')]='';this[_0xb873('0x10')]='';this[_0xb873('0x11')]='';this[_0xb873('0x12')]='';this[_0xb873('0x13')]='';this['holdtime']=0x0;this[_0xb873('0x14')]=![];this[_0xb873('0x15')]='';this[_0xb873('0x16')]='voice';this[_0xb873('0x17')]=0x0;this[_0xb873('0x18')]={};}module['exports']=QueueReport;
\ No newline at end of file
+var _0xf3df=['queuecallercomplete','queuecallerexit','queuecallerexitAt','connectedlinenum','connectedlinename','accountcode','context','priority','holdtime','assigned','lastAssignedTo','mohtime','variables','exports','type','inbound','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','count','queuecallerabandon'];(function(_0x1db3d4,_0x50c07a){var _0x39d118=function(_0x5e8ae5){while(--_0x5e8ae5){_0x1db3d4['push'](_0x1db3d4['shift']());}};_0x39d118(++_0x50c07a);}(_0xf3df,0x1ee));var _0xff3d=function(_0x1cbcb2,_0x1237a3){_0x1cbcb2=_0x1cbcb2-0x0;var _0x41ac9f=_0xf3df[_0x1cbcb2];return _0x41ac9f;};'use strict';function QueueReport(){this[_0xff3d('0x0')]=_0xff3d('0x1');this[_0xff3d('0x2')]='';this[_0xff3d('0x3')]='';this[_0xff3d('0x4')]='';this[_0xff3d('0x5')]='';this[_0xff3d('0x6')]=null;this[_0xff3d('0x7')]=null;this['position']=0x1;this[_0xff3d('0x8')]=0x1;this[_0xff3d('0x9')]=![];this['queuecallerabandonAt']=null;this[_0xff3d('0xa')]=![];this['queuecallercompleteAt']=null;this[_0xff3d('0xb')]=![];this[_0xff3d('0xc')]=null;this['originalposition']=0x1;this['channel']='';this[_0xff3d('0xd')]='';this[_0xff3d('0xe')]='';this[_0xff3d('0xf')]='';this[_0xff3d('0x10')]='';this['exten']='';this[_0xff3d('0x11')]='';this[_0xff3d('0x12')]=0x0;this[_0xff3d('0x13')]=![];this[_0xff3d('0x14')]='';this[_0xff3d('0x15')]=0x0;this[_0xff3d('0x16')]={};}module[_0xff3d('0x17')]=QueueReport;
\ No newline at end of file
index 745ccb4..3c8d4ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4fd=['clientId','clientSecret','securityToken','type','serverUrl','Configurations','exports','name','username','remoteUri','password'];(function(_0x2bf141,_0x31eac7){var _0x48277b=function(_0x9fe560){while(--_0x9fe560){_0x2bf141['push'](_0x2bf141['shift']());}};_0x48277b(++_0x31eac7);}(_0xc4fd,0x167));var _0xdc4f=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0xc4fd[_0x2dea24];return _0x309d58;};'use strict';function SalesforceAccount(_0x57adac){this['id']=_0x57adac['id']||0x0;this[_0xdc4f('0x0')]=_0x57adac[_0xdc4f('0x0')]||'';this[_0xdc4f('0x1')]=_0x57adac[_0xdc4f('0x1')]||'';this[_0xdc4f('0x2')]=_0x57adac['remoteUri']||'';this[_0xdc4f('0x3')]=_0x57adac[_0xdc4f('0x3')]||'';this[_0xdc4f('0x4')]=_0x57adac[_0xdc4f('0x4')]||'';this[_0xdc4f('0x5')]=_0x57adac['clientSecret']||'';this[_0xdc4f('0x6')]=_0x57adac[_0xdc4f('0x6')]||'';this[_0xdc4f('0x7')]=_0x57adac[_0xdc4f('0x7')]||'integrationTab';this[_0xdc4f('0x8')]=_0x57adac[_0xdc4f('0x8')]||'';this[_0xdc4f('0x9')]=_0x57adac[_0xdc4f('0x9')]||{};}module[_0xdc4f('0xa')]=SalesforceAccount;
\ No newline at end of file
+var _0xec33=['clientId','clientSecret','securityToken','type','integrationTab','serverUrl','Configurations','exports','name','username','remoteUri','password'];(function(_0x2640af,_0x2eebb7){var _0x3bb51b=function(_0x5d01f8){while(--_0x5d01f8){_0x2640af['push'](_0x2640af['shift']());}};_0x3bb51b(++_0x2eebb7);}(_0xec33,0x1f4));var _0x3ec3=function(_0x409e29,_0x33ae4b){_0x409e29=_0x409e29-0x0;var _0x45acc2=_0xec33[_0x409e29];return _0x45acc2;};'use strict';function SalesforceAccount(_0x45e98b){this['id']=_0x45e98b['id']||0x0;this[_0x3ec3('0x0')]=_0x45e98b[_0x3ec3('0x0')]||'';this[_0x3ec3('0x1')]=_0x45e98b[_0x3ec3('0x1')]||'';this[_0x3ec3('0x2')]=_0x45e98b[_0x3ec3('0x2')]||'';this['password']=_0x45e98b[_0x3ec3('0x3')]||'';this[_0x3ec3('0x4')]=_0x45e98b[_0x3ec3('0x4')]||'';this[_0x3ec3('0x5')]=_0x45e98b['clientSecret']||'';this[_0x3ec3('0x6')]=_0x45e98b['securityToken']||'';this['type']=_0x45e98b[_0x3ec3('0x7')]||_0x3ec3('0x8');this[_0x3ec3('0x9')]=_0x45e98b['serverUrl']||'';this[_0x3ec3('0xa')]=_0x45e98b[_0x3ec3('0xa')]||{};}module[_0x3ec3('0xb')]=SalesforceAccount;
\ No newline at end of file
index de3a314..851e692 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a21=['username','password','remoteUri','serverUrl','exports','name'];(function(_0x2fe27a,_0x286478){var _0x248e34=function(_0x344fc4){while(--_0x344fc4){_0x2fe27a['push'](_0x2fe27a['shift']());}};_0x248e34(++_0x286478);}(_0x4a21,0x65));var _0x14a2=function(_0x34232c,_0x18e61d){_0x34232c=_0x34232c-0x0;var _0x4d4f4e=_0x4a21[_0x34232c];return _0x4d4f4e;};'use strict';function ServicenowAccount(_0x46482d){this['id']=_0x46482d['id']||0x0;this[_0x14a2('0x0')]=_0x46482d[_0x14a2('0x0')]||'';this[_0x14a2('0x1')]=_0x46482d[_0x14a2('0x1')]||'';this[_0x14a2('0x2')]=_0x46482d[_0x14a2('0x2')]||'';this[_0x14a2('0x3')]=_0x46482d[_0x14a2('0x3')]||'';this['serverUrl']=_0x46482d[_0x14a2('0x4')]||'';this['Configurations']=_0x46482d['Configurations']||{};}module[_0x14a2('0x5')]=ServicenowAccount;
\ No newline at end of file
+var _0x0ce9=['name','username','remoteUri','serverUrl','Configurations'];(function(_0x527c39,_0x3ea2a6){var _0x3f4dd6=function(_0x1ec265){while(--_0x1ec265){_0x527c39['push'](_0x527c39['shift']());}};_0x3f4dd6(++_0x3ea2a6);}(_0x0ce9,0x195));var _0x90ce=function(_0x3bdb20,_0x22c32b){_0x3bdb20=_0x3bdb20-0x0;var _0x274408=_0x0ce9[_0x3bdb20];return _0x274408;};'use strict';function ServicenowAccount(_0x41e0a6){this['id']=_0x41e0a6['id']||0x0;this[_0x90ce('0x0')]=_0x41e0a6[_0x90ce('0x0')]||'';this[_0x90ce('0x1')]=_0x41e0a6[_0x90ce('0x1')]||'';this['password']=_0x41e0a6['password']||'';this[_0x90ce('0x2')]=_0x41e0a6['remoteUri']||'';this[_0x90ce('0x3')]=_0x41e0a6['serverUrl']||'';this[_0x90ce('0x4')]=_0x41e0a6[_0x90ce('0x4')]||{};}module['exports']=ServicenowAccount;
\ No newline at end of file
index 9da98ea..409d65f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa694=['name','username','password','serverUrl','exports'];(function(_0xc49288,_0x2c682d){var _0x13ea06=function(_0x3adcd5){while(--_0x3adcd5){_0xc49288['push'](_0xc49288['shift']());}};_0x13ea06(++_0x2c682d);}(_0xa694,0x9b));var _0x4a69=function(_0x2b9268,_0x4d8738){_0x2b9268=_0x2b9268-0x0;var _0x4a2870=_0xa694[_0x2b9268];return _0x4a2870;};'use strict';function SugarcrmAccount(_0x12c960){this['id']=_0x12c960['id']||0x0;this['name']=_0x12c960[_0x4a69('0x0')]||'';this[_0x4a69('0x1')]=_0x12c960[_0x4a69('0x1')]||'';this[_0x4a69('0x2')]=_0x12c960[_0x4a69('0x2')]||'';this['remoteUri']=_0x12c960['remoteUri']||'';this['serverUrl']=_0x12c960[_0x4a69('0x3')]||'';this['Configurations']=_0x12c960['Configurations']||{};}module[_0x4a69('0x4')]=SugarcrmAccount;
\ No newline at end of file
+var _0x80b5=['password','remoteUri','serverUrl','exports','name','username'];(function(_0x28237e,_0x2a7f11){var _0x1c014b=function(_0xaa0d6d){while(--_0xaa0d6d){_0x28237e['push'](_0x28237e['shift']());}};_0x1c014b(++_0x2a7f11);}(_0x80b5,0x70));var _0x580b=function(_0x56fbaa,_0x3bc5a6){_0x56fbaa=_0x56fbaa-0x0;var _0x49fbc1=_0x80b5[_0x56fbaa];return _0x49fbc1;};'use strict';function SugarcrmAccount(_0x2c2f92){this['id']=_0x2c2f92['id']||0x0;this[_0x580b('0x0')]=_0x2c2f92[_0x580b('0x0')]||'';this[_0x580b('0x1')]=_0x2c2f92[_0x580b('0x1')]||'';this[_0x580b('0x2')]=_0x2c2f92[_0x580b('0x2')]||'';this[_0x580b('0x3')]=_0x2c2f92['remoteUri']||'';this[_0x580b('0x4')]=_0x2c2f92['serverUrl']||'';this['Configurations']=_0x2c2f92['Configurations']||{};}module[_0x580b('0x5')]=SugarcrmAccount;
\ No newline at end of file
index 4ed1232..7217add 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed4b=['stateTime','status','exports','name','accountcode','state','unknown'];(function(_0x239b5e,_0x208a3f){var _0x577f3d=function(_0x2880de){while(--_0x2880de){_0x239b5e['push'](_0x239b5e['shift']());}};_0x577f3d(++_0x208a3f);}(_0xed4b,0x96));var _0xbed4=function(_0x452d3e,_0x355f51){_0x452d3e=_0x452d3e-0x0;var _0x1e31a6=_0xed4b[_0x452d3e];return _0x1e31a6;};'use strict';function Telephone(_0x417078){this['id']=_0x417078['id']||0x0;this[_0xbed4('0x0')]=_0x417078[_0xbed4('0x0')]||'';this['accountcode']=_0x417078[_0xbed4('0x1')]||'';this[_0xbed4('0x2')]=_0xbed4('0x3');this[_0xbed4('0x4')]=0x0;this[_0xbed4('0x5')]=_0xbed4('0x3');this['address']='';}module[_0xbed4('0x6')]=Telephone;
\ No newline at end of file
+var _0x33c4=['exports','name','accountcode','state','unknown','stateTime','address'];(function(_0x37e705,_0xba61db){var _0xba0a12=function(_0x293335){while(--_0x293335){_0x37e705['push'](_0x37e705['shift']());}};_0xba0a12(++_0xba61db);}(_0x33c4,0xef));var _0x433c=function(_0x3336b6,_0x127d4f){_0x3336b6=_0x3336b6-0x0;var _0x520cba=_0x33c4[_0x3336b6];return _0x520cba;};'use strict';function Telephone(_0x270a2d){this['id']=_0x270a2d['id']||0x0;this[_0x433c('0x0')]=_0x270a2d[_0x433c('0x0')]||'';this[_0x433c('0x1')]=_0x270a2d[_0x433c('0x1')]||'';this[_0x433c('0x2')]=_0x433c('0x3');this[_0x433c('0x4')]=0x0;this['status']=_0x433c('0x3');this[_0x433c('0x5')]='';}module[_0x433c('0x6')]=Telephone;
\ No newline at end of file
index 7463b90..598a7e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['exports','name'];(function(_0x2136c8,_0x432f26){var _0x385e5e=function(_0x422658){while(--_0x422658){_0x2136c8['push'](_0x2136c8['shift']());}};_0x385e5e(++_0x432f26);}(_0xa9e0,0x123));var _0x0a9e=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0xa9e0[_0x311c35];return _0x5cc50c;};'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 _0xb10b=['name','html'];(function(_0x3e2260,_0x28355d){var _0x4d4f7d=function(_0x9f1ab2){while(--_0x9f1ab2){_0x3e2260['push'](_0x3e2260['shift']());}};_0x4d4f7d(++_0x28355d);}(_0xb10b,0x12a));var _0xbb10=function(_0x156a77,_0x522c13){_0x156a77=_0x156a77-0x0;var _0x32398a=_0xb10b[_0x156a77];return _0x32398a;};'use strict';function template(_0x13ce8d){this['id']=_0x13ce8d['id']||0x0;this['name']=_0x13ce8d[_0xbb10('0x0')]||'';this[_0xbb10('0x1')]=_0x13ce8d[_0xbb10('0x1')]||'';}module['exports']=template;
\ No newline at end of file
index dacd9f0..97b3653 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eb8=['Actions','name','channel','voice','status','AllConditions','AnyConditions'];(function(_0x3ab928,_0x2b990b){var _0xf47692=function(_0x311b8e){while(--_0x311b8e){_0x3ab928['push'](_0x3ab928['shift']());}};_0xf47692(++_0x2b990b);}(_0x5eb8,0xb0));var _0x85eb=function(_0x3778d8,_0x5ce417){_0x3778d8=_0x3778d8-0x0;var _0x45a1b3=_0x5eb8[_0x3778d8];return _0x45a1b3;};'use strict';function Trigger(_0x5ea4df){this['id']=_0x5ea4df['id']||0x0;this['name']=_0x5ea4df[_0x85eb('0x0')]||'';this[_0x85eb('0x1')]=_0x5ea4df[_0x85eb('0x1')]||_0x85eb('0x2');this[_0x85eb('0x3')]=_0x5ea4df[_0x85eb('0x3')]||![];this[_0x85eb('0x4')]=_0x5ea4df[_0x85eb('0x4')]||[];this[_0x85eb('0x5')]=_0x5ea4df[_0x85eb('0x5')]||[];this[_0x85eb('0x6')]=_0x5ea4df[_0x85eb('0x6')]||[];}module['exports']=Trigger;
\ No newline at end of file
+var _0xbaf0=['Actions','exports','name','channel','voice','status','AllConditions','AnyConditions'];(function(_0x27d958,_0x29ef87){var _0x53e63e=function(_0x4130ec){while(--_0x4130ec){_0x27d958['push'](_0x27d958['shift']());}};_0x53e63e(++_0x29ef87);}(_0xbaf0,0x12a));var _0x0baf=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xbaf0[_0x2b4411];return _0x8e41ef;};'use strict';function Trigger(_0x61caa9){this['id']=_0x61caa9['id']||0x0;this[_0x0baf('0x0')]=_0x61caa9[_0x0baf('0x0')]||'';this[_0x0baf('0x1')]=_0x61caa9[_0x0baf('0x1')]||_0x0baf('0x2');this[_0x0baf('0x3')]=_0x61caa9['status']||![];this[_0x0baf('0x4')]=_0x61caa9[_0x0baf('0x4')]||[];this[_0x0baf('0x5')]=_0x61caa9[_0x0baf('0x5')]||[];this[_0x0baf('0x6')]=_0x61caa9[_0x0baf('0x6')]||[];}module[_0x0baf('0x7')]=Trigger;
\ No newline at end of file
index 224f220..815395c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2251=['state','unknown','stateTime','registry','indexOf','split','host','port','domain','domainport','refresh','stateRegistry','registrationtime','defaultuser','exports','active','name'];(function(_0x710e6f,_0x50f8a2){var _0x3a500a=function(_0x271ba3){while(--_0x271ba3){_0x710e6f['push'](_0x710e6f['shift']());}};_0x3a500a(++_0x50f8a2);}(_0x2251,0x174));var _0x1225=function(_0x26c448,_0x3273e3){_0x26c448=_0x26c448-0x0;var _0x2d14d2=_0x2251[_0x26c448];return _0x2d14d2;};'use strict';function Trunk(_0x44b9b2){this['id']=_0x44b9b2['id']||0x0;this[_0x1225('0x0')]=_0x44b9b2[_0x1225('0x0')]||![];this[_0x1225('0x1')]=_0x44b9b2[_0x1225('0x1')]||'';this[_0x1225('0x2')]=_0x1225('0x3');this[_0x1225('0x4')]=0x0;this['status']=_0x1225('0x3');this[_0x1225('0x5')]=_0x44b9b2['registry']&&_0x44b9b2['registry'][_0x1225('0x6')](':')?_0x44b9b2[_0x1225('0x5')][_0x1225('0x7')](':')[0x0]:'';this[_0x1225('0x8')]='';this[_0x1225('0x9')]='';this[_0x1225('0xa')]='';this[_0x1225('0xb')]='';this[_0x1225('0xc')]='';this[_0x1225('0xd')]=_0x1225('0x3');this[_0x1225('0xe')]='';this['address']='';this[_0x1225('0xf')]=_0x44b9b2['defaultuser']||'';}module[_0x1225('0x10')]=Trunk;
\ No newline at end of file
+var _0x6cf8=['exports','active','name','state','stateTime','status','unknown','registry','indexOf','split','host','port','domainport','refresh','stateRegistry','registrationtime','defaultuser'];(function(_0x1646fa,_0x4e5bd7){var _0x5a47a5=function(_0x2db820){while(--_0x2db820){_0x1646fa['push'](_0x1646fa['shift']());}};_0x5a47a5(++_0x4e5bd7);}(_0x6cf8,0xcd));var _0x86cf=function(_0x26c3ae,_0x11032d){_0x26c3ae=_0x26c3ae-0x0;var _0x506c5e=_0x6cf8[_0x26c3ae];return _0x506c5e;};'use strict';function Trunk(_0x3bda7d){this['id']=_0x3bda7d['id']||0x0;this[_0x86cf('0x0')]=_0x3bda7d[_0x86cf('0x0')]||![];this[_0x86cf('0x1')]=_0x3bda7d[_0x86cf('0x1')]||'';this[_0x86cf('0x2')]='unknown';this[_0x86cf('0x3')]=0x0;this[_0x86cf('0x4')]=_0x86cf('0x5');this[_0x86cf('0x6')]=_0x3bda7d['registry']&&_0x3bda7d[_0x86cf('0x6')][_0x86cf('0x7')](':')?_0x3bda7d[_0x86cf('0x6')][_0x86cf('0x8')](':')[0x0]:'';this[_0x86cf('0x9')]='';this[_0x86cf('0xa')]='';this['domain']='';this[_0x86cf('0xb')]='';this[_0x86cf('0xc')]='';this[_0x86cf('0xd')]='unknown';this[_0x86cf('0xe')]='';this['address']='';this[_0x86cf('0xf')]=_0x3bda7d[_0x86cf('0xf')]||'';}module[_0x86cf('0x10')]=Trunk;
\ No newline at end of file
index 6472efb..d9a0446 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb6f=['exten','recordingFormat','none','mandatoryDisposition','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfb6f,0x12c));var _0xffb6=function(_0x4da606,_0x514abe){_0x4da606=_0x4da606-0x0;var _0x239045=_0xfb6f[_0x4da606];return _0x239045;};'use strict';function voiceExtension(_0xfa9886){this['id']=_0xfa9886['id']||0x0;this[_0xffb6('0x0')]=_0xfa9886['exten']||'';this[_0xffb6('0x1')]=_0xfa9886[_0xffb6('0x1')]||_0xffb6('0x2');this[_0xffb6('0x3')]=_0xfa9886['mandatoryDisposition']||![];}module[_0xffb6('0x4')]=voiceExtension;
\ No newline at end of file
+var _0xa19c=['mandatoryDisposition','exports','exten','recordingFormat','none'];(function(_0xf10df,_0x42ca8d){var _0x43dd76=function(_0x19be0e){while(--_0x19be0e){_0xf10df['push'](_0xf10df['shift']());}};_0x43dd76(++_0x42ca8d);}(_0xa19c,0x1ce));var _0xca19=function(_0x417de2,_0x2898e0){_0x417de2=_0x417de2-0x0;var _0x4ff3cb=_0xa19c[_0x417de2];return _0x4ff3cb;};'use strict';function voiceExtension(_0x4363cb){this['id']=_0x4363cb['id']||0x0;this[_0xca19('0x0')]=_0x4363cb[_0xca19('0x0')]||'';this[_0xca19('0x1')]=_0x4363cb[_0xca19('0x1')]||_0xca19('0x2');this[_0xca19('0x3')]=_0x4363cb[_0xca19('0x3')]||![];}module[_0xca19('0x4')]=voiceExtension;
\ No newline at end of file
index 9216629..e6927c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bed=['dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','timeout','outboundAnswerCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','unknown','not_inuse','inuse','busy','unavailable','ringing','ringinuse','onhold','wav49','gsm','rrmemory','roundrobin','name','monitor_format','inbound','waiting','talking','total','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','acw','acwTimeout','autopause','message','originated','dialTimezone','dialGlobalInterval','dialActive','dialMethod','dialLimitChannel','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting'];(function(_0x69aa78,_0x4a9274){var _0x57988a=function(_0x24fc2f){while(--_0x24fc2f){_0x69aa78['push'](_0x69aa78['shift']());}};_0x57988a(++_0x4a9274);}(_0x3bed,0x11e));var _0xd3be=function(_0x1f79f0,_0x202fb7){_0x1f79f0=_0x1f79f0-0x0;var _0x402e80=_0x3bed[_0x1f79f0];return _0x402e80;};'use strict';var statusDesc=[_0xd3be('0x0'),_0xd3be('0x1'),_0xd3be('0x2'),_0xd3be('0x3'),'invalid',_0xd3be('0x4'),_0xd3be('0x5'),_0xd3be('0x6'),_0xd3be('0x7')];var monitorFormat={'wav':'wav','wav49':_0xd3be('0x8'),'gsm':_0xd3be('0x9')};var strategy={'rrmemory':_0xd3be('0xa'),'roundrobin':_0xd3be('0xb')};function VoiceQueue(_0x3a31a4){this['id']=_0x3a31a4['id']||0x0;this[_0xd3be('0xc')]=_0x3a31a4[_0xd3be('0xc')]||'';this[_0xd3be('0xd')]=_0x3a31a4[_0xd3be('0xd')]||'';this['type']=_0x3a31a4['type']||_0xd3be('0xe');this[_0xd3be('0xf')]=0x0;this[_0xd3be('0x10')]=0x0;this[_0xd3be('0x11')]=0x0;this[_0xd3be('0x12')]=0x0;this[_0xd3be('0x13')]=0x0;this[_0xd3be('0x14')]=0x0;this[_0xd3be('0x15')]=0x0;this[_0xd3be('0x16')]=0x0;this['abandoned']=0x0;this['loggedIn']=0x0;this['available']=0x0;this[_0xd3be('0x17')]=_0x3a31a4[_0xd3be('0x17')]||![];this[_0xd3be('0x18')]=_0x3a31a4['acwTimeout']||0xa;this[_0xd3be('0x19')]=_0x3a31a4[_0xd3be('0x19')]||'no';this['sendMessageOneNotActive']=!![];this[_0xd3be('0x1a')]='';this[_0xd3be('0x1b')]=0x0;this['temp']=0x0;this[_0xd3be('0x1c')]=_0x3a31a4[_0xd3be('0x1c')]||null;this['dialGlobalInterval']=_0x3a31a4[_0xd3be('0x1d')]?_0x3a31a4['dialGlobalInterval']:null;this[_0xd3be('0x1e')]=_0x3a31a4[_0xd3be('0x1e')];this[_0xd3be('0x1f')]=_0x3a31a4[_0xd3be('0x1f')]||'progressive';this[_0xd3be('0x20')]=_0x3a31a4['dialLimitChannel']||0x0;this['dialLimitQueue']=_0x3a31a4['dialLimitQueue']||0x0;this[_0xd3be('0x21')]=_0x3a31a4[_0xd3be('0x21')]||0x1;this[_0xd3be('0x22')]=_0x3a31a4[_0xd3be('0x22')]||_0xd3be('0x23');this[_0xd3be('0x24')]=_0x3a31a4['dialPredictiveOptimizationPercentage']||0.03;this[_0xd3be('0x25')]=_0x3a31a4[_0xd3be('0x25')]||0x258;this[_0xd3be('0x26')]=_0x3a31a4[_0xd3be('0x26')]||_0xd3be('0x27');this[_0xd3be('0x28')]=_0x3a31a4[_0xd3be('0x28')]||_0xd3be('0x27');this[_0xd3be('0x29')]=_0x3a31a4[_0xd3be('0x29')]||0x1e;this[_0xd3be('0x2a')]=_0x3a31a4[_0xd3be('0x2a')]||_0xd3be('0x2b');this[_0xd3be('0x2c')]=_0x3a31a4[_0xd3be('0x2c')]||0x3;this[_0xd3be('0x2d')]=_0x3a31a4[_0xd3be('0x2d')]||undefined;this[_0xd3be('0x2e')]=_0x3a31a4['dialCongestionMaxRetry']||0x3;this[_0xd3be('0x2f')]=_0x3a31a4[_0xd3be('0x2f')]||0x96;this['dialBusyMaxRetry']=_0x3a31a4[_0xd3be('0x30')]||0x3;this[_0xd3be('0x31')]=_0x3a31a4['dialBusyRetryFrequency']||0x96;this[_0xd3be('0x32')]=_0x3a31a4['dialNoAnswerMaxRetry']||0x3;this['dialNoAnswerRetryFrequency']=_0x3a31a4['dialNoAnswerRetryFrequency']||0x96;this[_0xd3be('0x33')]=_0x3a31a4[_0xd3be('0x33')]||0x3;this[_0xd3be('0x34')]=_0x3a31a4['dialNoSuchNumberRetryFrequency']||0x96;this[_0xd3be('0x35')]=_0x3a31a4[_0xd3be('0x35')]||0x3;this[_0xd3be('0x36')]=_0x3a31a4[_0xd3be('0x36')]||0x96;this[_0xd3be('0x37')]=_0x3a31a4['dialAbandonedMaxRetry']||0x3;this[_0xd3be('0x38')]=_0x3a31a4[_0xd3be('0x38')]||0x96;this[_0xd3be('0x39')]=_0x3a31a4[_0xd3be('0x39')]||0x3;this[_0xd3be('0x3a')]=_0x3a31a4[_0xd3be('0x3a')]||0x96;this[_0xd3be('0x3b')]=_0x3a31a4['dialAgentRejectMaxRetry']||0x3;this['dialAgentRejectRetryFrequency']=_0x3a31a4[_0xd3be('0x3c')]||0x96;this[_0xd3be('0x3d')]=_0x3a31a4['dialGlobalMaxRetry']||0x4;this['Trunk']=_0x3a31a4[_0xd3be('0x3e')]?_0x3a31a4['Trunk']:undefined;this[_0xd3be('0x3f')]=_0x3a31a4[_0xd3be('0x3f')]?_0x3a31a4[_0xd3be('0x3f')]:undefined;this['dialPrefix']=_0x3a31a4['dialPrefix']||undefined;this['Interval']=_0x3a31a4[_0xd3be('0x40')]?_0x3a31a4[_0xd3be('0x40')]:undefined;this[_0xd3be('0x41')]=_0x3a31a4[_0xd3be('0x41')]||_0xd3be('0x42');this['dialRandomLastDigitCallerIdNumber']=_0x3a31a4[_0xd3be('0x43')]||undefined;this[_0xd3be('0x44')]=_0x3a31a4['dialCutDigit']||undefined;this[_0xd3be('0x45')]=strategy[_0x3a31a4[_0xd3be('0x45')]]||'rrmemory';this[_0xd3be('0x46')]=!![];this[_0xd3be('0x47')]=_0x3a31a4[_0xd3be('0x47')]||![];this[_0xd3be('0x48')]=_0x3a31a4[_0xd3be('0x48')];this[_0xd3be('0x49')]=_0x3a31a4['dialAMDGreeting'];this['dialAMDAfterGreetingSilence']=_0x3a31a4[_0xd3be('0x4a')];this['dialAMDTotalAnalysisTime']=_0x3a31a4[_0xd3be('0x4b')];this[_0xd3be('0x4c')]=_0x3a31a4[_0xd3be('0x4c')];this[_0xd3be('0x4d')]=_0x3a31a4['dialAMDBetweenWordsSilence'];this[_0xd3be('0x4e')]=_0x3a31a4[_0xd3be('0x4e')];this[_0xd3be('0x4f')]=_0x3a31a4[_0xd3be('0x4f')];this[_0xd3be('0x50')]=_0x3a31a4['dialAMDMaximumWordLength'];this[_0xd3be('0x51')]=0x0;this['pTalking']=0x0;this[_0xd3be('0x52')]=_0x3a31a4[_0xd3be('0x52')];this[_0xd3be('0x53')]=0x0;this['outboundAnswerAgiCallsDay']=0x0;this[_0xd3be('0x54')]=0x0;this[_0xd3be('0x55')]=0x0;this['outboundCongestionCallsDay']=0x0;this[_0xd3be('0x56')]=0x0;this[_0xd3be('0x57')]=0x0;this['outboundBlacklistCallsDay']=0x0;this[_0xd3be('0x58')]=0x0;this[_0xd3be('0x59')]=0x0;this[_0xd3be('0x5a')]=0x0;this[_0xd3be('0x5b')]=0x0;this[_0xd3be('0x5c')]=0x0;this['outboundAbandonedDay']=0x0;this[_0xd3be('0x5d')]=undefined;this[_0xd3be('0x5e')]=undefined;this[_0xd3be('0x5f')]=undefined;this[_0xd3be('0x60')]=1.05;this['predictiveIntervalTotalCalls']=0x0;this[_0xd3be('0x61')]=0x0;this[_0xd3be('0x62')]=0x0;this['predictiveIntervalDroppedCallsTimeout']=0x0;this[_0xd3be('0x63')]=0x0;this[_0xd3be('0x64')]=0x0;this[_0xd3be('0x65')]=0x0;this[_0xd3be('0x66')]=0x0;this[_0xd3be('0x67')]=_0x3a31a4[_0xd3be('0x68')]||0x14;this[_0xd3be('0x69')]=_0x3a31a4['dialPredictiveIntervalMaxThreshold']||0xa;this[_0xd3be('0x6a')]=0x0;this[_0xd3be('0x6b')]=0x0;this[_0xd3be('0x6c')]=0x1;this[_0xd3be('0x6d')]=0x0;this[_0xd3be('0x6e')]=0x0;this[_0xd3be('0x6f')]=0x0;this[_0xd3be('0x70')]=0x0;this[_0xd3be('0x71')]=_0x3a31a4['dialRecallMeTimeout']||0x1e;this[_0xd3be('0x72')]=_0x3a31a4[_0xd3be('0x72')]||![];this[_0xd3be('0x73')]=_0x3a31a4[_0xd3be('0x73')]||undefined;this[_0xd3be('0x74')]=_0x3a31a4[_0xd3be('0x74')]||![];this[_0xd3be('0x75')]=_0x3a31a4[_0xd3be('0x75')]||![];this[_0xd3be('0xd')]=monitorFormat[_0x3a31a4[_0xd3be('0xd')]]?monitorFormat[_0x3a31a4[_0xd3be('0xd')]]:undefined;this[_0xd3be('0x76')]=_0x3a31a4[_0xd3be('0x76')]||![];this['mandatoryDispositionPause']=_0x3a31a4[_0xd3be('0x77')]?_0x3a31a4[_0xd3be('0x77')]:undefined;}module['exports']=VoiceQueue;
\ No newline at end of file
+var _0xe34e=['acw','autopause','sendMessageOneNotActive','originated','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayACS','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','dialRecallMeTimeout','dialRecallInQueue','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','unknown','not_inuse','busy','invalid','unavailable','ringing','ringinuse','onhold','wav','wav49','rrmemory','name','monitor_format','type','waiting','total','answered','sumBillable','unmanaged','abandoned','available'];(function(_0x5752c8,_0x1e1393){var _0x2eb875=function(_0x1cadc4){while(--_0x1cadc4){_0x5752c8['push'](_0x5752c8['shift']());}};_0x2eb875(++_0x1e1393);}(_0xe34e,0x132));var _0xee34=function(_0x426c47,_0x4ebf0b){_0x426c47=_0x426c47-0x0;var _0x10a020=_0xe34e[_0x426c47];return _0x10a020;};'use strict';var statusDesc=[_0xee34('0x0'),_0xee34('0x1'),'inuse',_0xee34('0x2'),_0xee34('0x3'),_0xee34('0x4'),_0xee34('0x5'),_0xee34('0x6'),_0xee34('0x7')];var monitorFormat={'wav':_0xee34('0x8'),'wav49':_0xee34('0x9'),'gsm':'gsm'};var strategy={'rrmemory':_0xee34('0xa'),'roundrobin':'roundrobin'};function VoiceQueue(_0x45e589){this['id']=_0x45e589['id']||0x0;this[_0xee34('0xb')]=_0x45e589[_0xee34('0xb')]||'';this[_0xee34('0xc')]=_0x45e589[_0xee34('0xc')]||'';this[_0xee34('0xd')]=_0x45e589[_0xee34('0xd')]||'inbound';this[_0xee34('0xe')]=0x0;this['talking']=0x0;this[_0xee34('0xf')]=0x0;this[_0xee34('0x10')]=0x0;this['sumDuration']=0x0;this['sumHoldTime']=0x0;this[_0xee34('0x11')]=0x0;this[_0xee34('0x12')]=0x0;this[_0xee34('0x13')]=0x0;this['loggedIn']=0x0;this[_0xee34('0x14')]=0x0;this[_0xee34('0x15')]=_0x45e589[_0xee34('0x15')]||![];this['acwTimeout']=_0x45e589['acwTimeout']||0xa;this[_0xee34('0x16')]=_0x45e589[_0xee34('0x16')]||'no';this[_0xee34('0x17')]=!![];this['message']='';this[_0xee34('0x18')]=0x0;this['temp']=0x0;this[_0xee34('0x19')]=_0x45e589[_0xee34('0x19')]||null;this[_0xee34('0x1a')]=_0x45e589['dialGlobalInterval']?_0x45e589[_0xee34('0x1a')]:null;this[_0xee34('0x1b')]=_0x45e589[_0xee34('0x1b')];this[_0xee34('0x1c')]=_0x45e589['dialMethod']||_0xee34('0x1d');this[_0xee34('0x1e')]=_0x45e589[_0xee34('0x1e')]||0x0;this['dialLimitQueue']=_0x45e589[_0xee34('0x1f')]||0x0;this[_0xee34('0x20')]=_0x45e589[_0xee34('0x20')]||0x1;this['dialPredictiveOptimization']=_0x45e589['dialPredictiveOptimization']||_0xee34('0x21');this[_0xee34('0x22')]=_0x45e589[_0xee34('0x22')]||0.03;this[_0xee34('0x23')]=_0x45e589[_0xee34('0x23')]||0x258;this[_0xee34('0x24')]=_0x45e589[_0xee34('0x24')]||_0xee34('0x25');this[_0xee34('0x26')]=_0x45e589['dialOriginateCallerIdNumber']||_0xee34('0x25');this[_0xee34('0x27')]=_0x45e589[_0xee34('0x27')]||0x1e;this[_0xee34('0x28')]=_0x45e589['dialQueueOptions']||'tTxX';this['dialQueueTimeout']=_0x45e589[_0xee34('0x29')]||0x3;this[_0xee34('0x2a')]=_0x45e589[_0xee34('0x2a')]||undefined;this['dialCongestionMaxRetry']=_0x45e589[_0xee34('0x2b')]||0x3;this['dialCongestionRetryFrequency']=_0x45e589['dialCongestionRetryFrequency']||0x96;this['dialBusyMaxRetry']=_0x45e589[_0xee34('0x2c')]||0x3;this[_0xee34('0x2d')]=_0x45e589[_0xee34('0x2d')]||0x96;this['dialNoAnswerMaxRetry']=_0x45e589['dialNoAnswerMaxRetry']||0x3;this['dialNoAnswerRetryFrequency']=_0x45e589[_0xee34('0x2e')]||0x96;this[_0xee34('0x2f')]=_0x45e589[_0xee34('0x2f')]||0x3;this[_0xee34('0x30')]=_0x45e589[_0xee34('0x30')]||0x96;this['dialDropMaxRetry']=_0x45e589[_0xee34('0x31')]||0x3;this[_0xee34('0x32')]=_0x45e589[_0xee34('0x32')]||0x96;this[_0xee34('0x33')]=_0x45e589[_0xee34('0x33')]||0x3;this[_0xee34('0x34')]=_0x45e589[_0xee34('0x34')]||0x96;this[_0xee34('0x35')]=_0x45e589[_0xee34('0x35')]||0x3;this['dialMachineRetryFrequency']=_0x45e589['dialMachineRetryFrequency']||0x96;this['dialAgentRejectMaxRetry']=_0x45e589['dialAgentRejectMaxRetry']||0x3;this[_0xee34('0x36')]=_0x45e589[_0xee34('0x36')]||0x96;this[_0xee34('0x37')]=_0x45e589[_0xee34('0x37')]||0x4;this[_0xee34('0x38')]=_0x45e589['Trunk']?_0x45e589[_0xee34('0x38')]:undefined;this['TrunkBackup']=_0x45e589[_0xee34('0x39')]?_0x45e589['TrunkBackup']:undefined;this[_0xee34('0x3a')]=_0x45e589[_0xee34('0x3a')]||undefined;this[_0xee34('0x3b')]=_0x45e589[_0xee34('0x3b')]?_0x45e589[_0xee34('0x3b')]:undefined;this[_0xee34('0x3c')]=_0x45e589[_0xee34('0x3c')]||_0xee34('0x3d');this[_0xee34('0x3e')]=_0x45e589[_0xee34('0x3e')]||undefined;this[_0xee34('0x3f')]=_0x45e589[_0xee34('0x3f')]||undefined;this['strategy']=strategy[_0x45e589[_0xee34('0x40')]]||_0xee34('0xa');this['queueStatusComplete']=!![];this[_0xee34('0x41')]=_0x45e589[_0xee34('0x41')]||![];this[_0xee34('0x42')]=_0x45e589[_0xee34('0x42')];this[_0xee34('0x43')]=_0x45e589['dialAMDGreeting'];this[_0xee34('0x44')]=_0x45e589['dialAMDAfterGreetingSilence'];this[_0xee34('0x45')]=_0x45e589[_0xee34('0x45')];this[_0xee34('0x46')]=_0x45e589[_0xee34('0x46')];this['dialAMDBetweenWordsSilence']=_0x45e589['dialAMDBetweenWordsSilence'];this[_0xee34('0x47')]=_0x45e589[_0xee34('0x47')];this[_0xee34('0x48')]=_0x45e589[_0xee34('0x48')];this[_0xee34('0x49')]=_0x45e589[_0xee34('0x49')];this[_0xee34('0x4a')]=0x0;this[_0xee34('0x4b')]=0x0;this[_0xee34('0x4c')]=_0x45e589[_0xee34('0x4c')];this[_0xee34('0x4d')]=0x0;this[_0xee34('0x4e')]=0x0;this[_0xee34('0x4f')]=0x0;this['outboundBusyCallsDay']=0x0;this['outboundCongestionCallsDay']=0x0;this[_0xee34('0x50')]=0x0;this[_0xee34('0x51')]=0x0;this[_0xee34('0x52')]=0x0;this[_0xee34('0x53')]=0x0;this['outboundDropCallsDayCallersExit']=0x0;this[_0xee34('0x54')]=0x0;this[_0xee34('0x55')]=0x0;this['outboundReCallsDay']=0x0;this['outboundAbandonedDay']=0x0;this['startProgressive']=undefined;this[_0xee34('0x56')]=undefined;this[_0xee34('0x57')]=undefined;this[_0xee34('0x58')]=1.05;this[_0xee34('0x59')]=0x0;this['predictiveIntervalAnsweredCalls']=0x0;this[_0xee34('0x5a')]=0x0;this[_0xee34('0x5b')]=0x0;this[_0xee34('0x5c')]=0x0;this[_0xee34('0x5d')]=0x0;this['predictiveIntervalPauses']=0x0;this[_0xee34('0x5e')]=0x0;this[_0xee34('0x5f')]=_0x45e589[_0xee34('0x60')]||0x14;this['predictiveIntervalMinThreshold']=_0x45e589[_0xee34('0x60')]||0xa;this[_0xee34('0x61')]=0x0;this[_0xee34('0x62')]=0x0;this['predictiveIntervalHitRate']=0x1;this[_0xee34('0x63')]=0x0;this[_0xee34('0x64')]=0x0;this[_0xee34('0x65')]=0x0;this['erlangBusyFactor']=0x0;this['dialRecallMeTimeout']=_0x45e589[_0xee34('0x66')]||0x1e;this['dialRecallInQueue']=_0x45e589[_0xee34('0x67')]||![];this[_0xee34('0x68')]=_0x45e589[_0xee34('0x68')]||undefined;this[_0xee34('0x69')]=_0x45e589[_0xee34('0x69')]||![];this[_0xee34('0x6a')]=_0x45e589[_0xee34('0x6a')]||![];this[_0xee34('0xc')]=monitorFormat[_0x45e589['monitor_format']]?monitorFormat[_0x45e589['monitor_format']]:undefined;this['mandatoryDisposition']=_0x45e589[_0xee34('0x6b')]||![];this[_0xee34('0x6c')]=_0x45e589[_0xee34('0x6c')]?_0x45e589['mandatoryDispositionPause']:undefined;}module['exports']=VoiceQueue;
\ No newline at end of file
index 5f7d842..450e0de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b43=['remoteUri','serverUrl','Configurations','exports','name','username','accessKey'];(function(_0x32b542,_0x4512fa){var _0x554d54=function(_0x35cdfc){while(--_0x35cdfc){_0x32b542['push'](_0x32b542['shift']());}};_0x554d54(++_0x4512fa);}(_0x5b43,0x123));var _0x35b4=function(_0x52f2b5,_0x58ebea){_0x52f2b5=_0x52f2b5-0x0;var _0x3dd4ad=_0x5b43[_0x52f2b5];return _0x3dd4ad;};'use strict';function VtigerAccount(_0x58e18d){this['id']=_0x58e18d['id']||0x0;this[_0x35b4('0x0')]=_0x58e18d[_0x35b4('0x0')]||'';this[_0x35b4('0x1')]=_0x58e18d[_0x35b4('0x1')]||'';this[_0x35b4('0x2')]=_0x58e18d['accessKey']||'';this[_0x35b4('0x3')]=_0x58e18d['remoteUri']||'';this[_0x35b4('0x4')]=_0x58e18d[_0x35b4('0x4')]||'';this[_0x35b4('0x5')]=_0x58e18d[_0x35b4('0x5')]||{};}module[_0x35b4('0x6')]=VtigerAccount;
\ No newline at end of file
+var _0x0a12=['Configurations','exports','name','username','accessKey','remoteUri','serverUrl'];(function(_0x1e4f2f,_0x35edfa){var _0xccea89=function(_0x164386){while(--_0x164386){_0x1e4f2f['push'](_0x1e4f2f['shift']());}};_0xccea89(++_0x35edfa);}(_0x0a12,0xc6));var _0x20a1=function(_0x59d89e,_0x55edf5){_0x59d89e=_0x59d89e-0x0;var _0x554e93=_0x0a12[_0x59d89e];return _0x554e93;};'use strict';function VtigerAccount(_0x1b656d){this['id']=_0x1b656d['id']||0x0;this[_0x20a1('0x0')]=_0x1b656d[_0x20a1('0x0')]||'';this[_0x20a1('0x1')]=_0x1b656d[_0x20a1('0x1')]||'';this[_0x20a1('0x2')]=_0x1b656d[_0x20a1('0x2')]||'';this['remoteUri']=_0x1b656d[_0x20a1('0x3')]||'';this[_0x20a1('0x4')]=_0x1b656d[_0x20a1('0x4')]||'';this[_0x20a1('0x5')]=_0x1b656d[_0x20a1('0x5')]||{};}module[_0x20a1('0x6')]=VtigerAccount;
\ No newline at end of file
index 2708432..735219b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6193=['integrationTab','serverUrl','Configurations','exports','username','password','remoteUri','authType','type'];(function(_0x27f88b,_0x526bad){var _0x2114f4=function(_0x341508){while(--_0x341508){_0x27f88b['push'](_0x27f88b['shift']());}};_0x2114f4(++_0x526bad);}(_0x6193,0x109));var _0x3619=function(_0x4ce514,_0x2ca53e){_0x4ce514=_0x4ce514-0x0;var _0x10bb8e=_0x6193[_0x4ce514];return _0x10bb8e;};'use strict';function ZendeskAccount(_0x74caa6){this['id']=_0x74caa6['id']||0x0;this['name']=_0x74caa6['name']||'';this[_0x3619('0x0')]=_0x74caa6['username']||'';this[_0x3619('0x1')]=_0x74caa6[_0x3619('0x1')]||'';this['token']=_0x74caa6['token']||'';this[_0x3619('0x2')]=_0x74caa6[_0x3619('0x2')]||'';this['authType']=_0x74caa6[_0x3619('0x3')]||'';this['type']=_0x74caa6[_0x3619('0x4')]||_0x3619('0x5');this['serverUrl']=_0x74caa6[_0x3619('0x6')]||'';this[_0x3619('0x7')]=_0x74caa6[_0x3619('0x7')]||{};}module[_0x3619('0x8')]=ZendeskAccount;
\ No newline at end of file
+var _0x4b55=['username','password','token','remoteUri','authType','type','serverUrl','Configurations','exports','name'];(function(_0x215dc6,_0x11984c){var _0x45dc88=function(_0x59bad4){while(--_0x59bad4){_0x215dc6['push'](_0x215dc6['shift']());}};_0x45dc88(++_0x11984c);}(_0x4b55,0xef));var _0x54b5=function(_0x1bab75,_0x3f6e76){_0x1bab75=_0x1bab75-0x0;var _0x24b332=_0x4b55[_0x1bab75];return _0x24b332;};'use strict';function ZendeskAccount(_0x33ccc2){this['id']=_0x33ccc2['id']||0x0;this[_0x54b5('0x0')]=_0x33ccc2[_0x54b5('0x0')]||'';this['username']=_0x33ccc2[_0x54b5('0x1')]||'';this[_0x54b5('0x2')]=_0x33ccc2[_0x54b5('0x2')]||'';this[_0x54b5('0x3')]=_0x33ccc2[_0x54b5('0x3')]||'';this['remoteUri']=_0x33ccc2[_0x54b5('0x4')]||'';this[_0x54b5('0x5')]=_0x33ccc2[_0x54b5('0x5')]||'';this[_0x54b5('0x6')]=_0x33ccc2[_0x54b5('0x6')]||'integrationTab';this[_0x54b5('0x7')]=_0x33ccc2['serverUrl']||'';this[_0x54b5('0x8')]=_0x33ccc2[_0x54b5('0x8')]||{};}module[_0x54b5('0x9')]=ZendeskAccount;
\ No newline at end of file
index 915170e..43c98cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02a6=['code','refreshToken','Configurations','exports','description','host','zone','clientId','serverUrl'];(function(_0x2ce715,_0x22e80c){var _0x41c7bb=function(_0x3b8b6c){while(--_0x3b8b6c){_0x2ce715['push'](_0x2ce715['shift']());}};_0x41c7bb(++_0x22e80c);}(_0x02a6,0xa6));var _0x602a=function(_0x1416bc,_0x3af2d9){_0x1416bc=_0x1416bc-0x0;var _0x1fcb36=_0x02a6[_0x1416bc];return _0x1fcb36;};'use strict';function ZohoAccount(_0x365cb8){this['id']=_0x365cb8['id']||0x0;this['name']=_0x365cb8['name']||'';this[_0x602a('0x0')]=_0x365cb8[_0x602a('0x0')]||'';this[_0x602a('0x1')]=_0x365cb8['host']||'';this[_0x602a('0x2')]=_0x365cb8[_0x602a('0x2')]||'';this[_0x602a('0x3')]=_0x365cb8['clientId']||'';this['clientSecret']=_0x365cb8['clientSecret']||'';this[_0x602a('0x4')]=_0x365cb8['serverUrl']||'';this[_0x602a('0x5')]=_0x365cb8[_0x602a('0x5')]||'';this[_0x602a('0x6')]=_0x365cb8[_0x602a('0x6')]||'';this[_0x602a('0x7')]=_0x365cb8[_0x602a('0x7')]||{};}module[_0x602a('0x8')]=ZohoAccount;
\ No newline at end of file
+var _0x70f2=['host','clientId','clientSecret','serverUrl','code','refreshToken','Configurations','name','description'];(function(_0x19cae9,_0xd6039b){var _0x163452=function(_0xee5d92){while(--_0xee5d92){_0x19cae9['push'](_0x19cae9['shift']());}};_0x163452(++_0xd6039b);}(_0x70f2,0x127));var _0x270f=function(_0x1a6a9,_0x1bd70a){_0x1a6a9=_0x1a6a9-0x0;var _0x4504e6=_0x70f2[_0x1a6a9];return _0x4504e6;};'use strict';function ZohoAccount(_0x1ca5fa){this['id']=_0x1ca5fa['id']||0x0;this[_0x270f('0x0')]=_0x1ca5fa[_0x270f('0x0')]||'';this['description']=_0x1ca5fa[_0x270f('0x1')]||'';this[_0x270f('0x2')]=_0x1ca5fa['host']||'';this['zone']=_0x1ca5fa['zone']||'';this['clientId']=_0x1ca5fa[_0x270f('0x3')]||'';this[_0x270f('0x4')]=_0x1ca5fa['clientSecret']||'';this[_0x270f('0x5')]=_0x1ca5fa[_0x270f('0x5')]||'';this[_0x270f('0x6')]=_0x1ca5fa['code']||'';this['refreshToken']=_0x1ca5fa[_0x270f('0x7')]||'';this[_0x270f('0x8')]=_0x1ca5fa[_0x270f('0x8')]||{};}module['exports']=ZohoAccount;
\ No newline at end of file
index 438048e..9490c51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0076=['exports','util','lodash','moment','isNil','string','uniqueid','idContact','queue','name','type','dialAnswer','membername','format','SIP/%s','calleridname','phone','Contact','firstName','active','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','Agent','VoiceQueueId','originatecalleridnum','originatecalleridname','prototype','getCaller','number'];(function(_0x1da31a,_0x7b769c){var _0x4349fe=function(_0x21ab74){while(--_0x21ab74){_0x1da31a['push'](_0x1da31a['shift']());}};_0x4349fe(++_0x7b769c);}(_0x0076,0x82));var _0x6007=function(_0x2e4e19,_0x493b50){_0x2e4e19=_0x2e4e19-0x0;var _0x9ba20b=_0x0076[_0x2e4e19];return _0x9ba20b;};'use strict';var util=require(_0x6007('0x0'));var _=require(_0x6007('0x1'));var moment=require(_0x6007('0x2'));function checkNameSurname(_0x304bde,_0x116bf8,_0x218289){var _0x57f312='';if(!_[_0x6007('0x3')](_0x116bf8)&&_0x6007('0x4')===typeof _0x116bf8){_0x57f312+=_0x116bf8;}if(!_['isNil'](_0x218289)&&'string'===typeof _0x218289){_0x57f312+='\x20'+_0x218289;}if(_0x57f312!==''){return _0x57f312;}return _0x304bde;}function Action(_0x58e5e6,_0x18016f,_0x176a18,_0x3fc178,_0x2f3ac7){this[_0x6007('0x5')]=_0x176a18||undefined;this[_0x6007('0x6')]=_0x58e5e6['id'];this[_0x6007('0x7')]=_0x18016f[_0x6007('0x8')];this[_0x6007('0x9')]=_0x18016f['type'];this['campaigntype']='queue';this[_0x6007('0xa')]=![];this['membername']=_[_0x6007('0x3')](_0x58e5e6['Agent'])?undefined:_0x58e5e6['Agent'][_0x6007('0x8')];this['channelAgent']=this[_0x6007('0xb')]?util[_0x6007('0xc')](_0x6007('0xd'),this['membername']):_0x3fc178||undefined;this[_0x6007('0xe')]=checkNameSurname(_0x58e5e6['Contact'][_0x6007('0xf')],_0x58e5e6[_0x6007('0x10')][_0x6007('0x11')],_0x58e5e6[_0x6007('0x10')]['lastName']);this['active']=_0x58e5e6[_0x6007('0x12')]||![];this['calleridnum']=_0x58e5e6[_0x6007('0x10')][_0x6007('0xf')];this[_0x6007('0x13')]=_0x58e5e6[_0x6007('0x13')];this[_0x6007('0x14')]=_0x58e5e6[_0x6007('0x14')]||0x0;this[_0x6007('0x15')]=_0x58e5e6[_0x6007('0x15')]||0x0;this[_0x6007('0x16')]=_0x58e5e6[_0x6007('0x16')]||0x0;this[_0x6007('0x17')]=(_0x58e5e6[_0x6007('0x14')]||0x0)+(_0x58e5e6[_0x6007('0x15')]||0x0)+(_0x58e5e6[_0x6007('0x16')]||0x0)+(_0x58e5e6[_0x6007('0x18')]||0x0)+(_0x58e5e6[_0x6007('0x19')]||0x0)+(_0x58e5e6[_0x6007('0x1a')]||0x0)+(_0x58e5e6[_0x6007('0x1b')]||0x0)+(_0x58e5e6['countagentrejectretry']||0x0);this[_0x6007('0x18')]=_0x58e5e6[_0x6007('0x18')]||0x0;this[_0x6007('0x19')]=_0x58e5e6[_0x6007('0x19')]||0x0;this[_0x6007('0x1a')]=_0x58e5e6[_0x6007('0x1a')]||0x0;this[_0x6007('0x1b')]=_0x58e5e6['countmachineretry']||0x0;this[_0x6007('0x1c')]=_0x58e5e6['countagentrejectretry']||0x0;this['callback']=_0x58e5e6['callback'];this[_0x6007('0x1d')]=_0x58e5e6[_0x6007('0x1d')];this[_0x6007('0x1e')]=_0x58e5e6[_0x6007('0x1e')];this['recallme']=_0x58e5e6[_0x6007('0x1f')];this[_0x6007('0x20')]=_0x58e5e6['ContactId'];this['ListId']=_0x58e5e6[_0x6007('0x21')];this[_0x6007('0x22')]=_[_0x6007('0x3')](_0x58e5e6[_0x6007('0x23')])?_0x58e5e6['UserId']:_0x58e5e6[_0x6007('0x23')]['id'];this[_0x6007('0x24')]=_0x58e5e6[_0x6007('0x24')];this[_0x6007('0x25')]='';this[_0x6007('0x26')]='';}Action[_0x6007('0x27')][_0x6007('0x28')]=function(){return util[_0x6007('0xc')]('\x22%s\x22\x20<%s>',this[_0x6007('0xe')],this[_0x6007('0x29')]);};module[_0x6007('0x2a')]=Action;
\ No newline at end of file
+var _0xbee9=['getCaller','calleridname','lodash','moment','isNil','string','uniqueid','idContact','queue','name','type','campaigntype','dialAnswer','membername','Agent','channelAgent','format','SIP/%s','Contact','phone','active','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','originatecalleridnum'];(function(_0x1042b9,_0x4a42fe){var _0x4a8ec6=function(_0x2a6ed1){while(--_0x2a6ed1){_0x1042b9['push'](_0x1042b9['shift']());}};_0x4a8ec6(++_0x4a42fe);}(_0xbee9,0x1e3));var _0x9bee=function(_0x13f8f9,_0x441957){_0x13f8f9=_0x13f8f9-0x0;var _0x22a8ec=_0xbee9[_0x13f8f9];return _0x22a8ec;};'use strict';var util=require('util');var _=require(_0x9bee('0x0'));var moment=require(_0x9bee('0x1'));function checkNameSurname(_0x3f6763,_0x361c2b,_0x4d8696){var _0x320777='';if(!_[_0x9bee('0x2')](_0x361c2b)&&_0x9bee('0x3')===typeof _0x361c2b){_0x320777+=_0x361c2b;}if(!_[_0x9bee('0x2')](_0x4d8696)&&'string'===typeof _0x4d8696){_0x320777+='\x20'+_0x4d8696;}if(_0x320777!==''){return _0x320777;}return _0x3f6763;}function Action(_0x35fade,_0x602220,_0x6c34ef,_0x2258b0,_0x5b4782){this[_0x9bee('0x4')]=_0x6c34ef||undefined;this[_0x9bee('0x5')]=_0x35fade['id'];this[_0x9bee('0x6')]=_0x602220[_0x9bee('0x7')];this[_0x9bee('0x8')]=_0x602220[_0x9bee('0x8')];this[_0x9bee('0x9')]=_0x9bee('0x6');this[_0x9bee('0xa')]=![];this[_0x9bee('0xb')]=_[_0x9bee('0x2')](_0x35fade[_0x9bee('0xc')])?undefined:_0x35fade[_0x9bee('0xc')][_0x9bee('0x7')];this[_0x9bee('0xd')]=this[_0x9bee('0xb')]?util[_0x9bee('0xe')](_0x9bee('0xf'),this['membername']):_0x2258b0||undefined;this['calleridname']=checkNameSurname(_0x35fade[_0x9bee('0x10')][_0x9bee('0x11')],_0x35fade[_0x9bee('0x10')]['firstName'],_0x35fade['Contact']['lastName']);this[_0x9bee('0x12')]=_0x35fade[_0x9bee('0x12')]||![];this['calleridnum']=_0x35fade[_0x9bee('0x10')]['phone'];this[_0x9bee('0x13')]=_0x35fade[_0x9bee('0x13')];this[_0x9bee('0x14')]=_0x35fade[_0x9bee('0x14')]||0x0;this['countcongestionretry']=_0x35fade[_0x9bee('0x15')]||0x0;this['countnoanswerretry']=_0x35fade[_0x9bee('0x16')]||0x0;this['countglobal']=(_0x35fade['countbusyretry']||0x0)+(_0x35fade[_0x9bee('0x15')]||0x0)+(_0x35fade[_0x9bee('0x16')]||0x0)+(_0x35fade[_0x9bee('0x17')]||0x0)+(_0x35fade[_0x9bee('0x18')]||0x0)+(_0x35fade[_0x9bee('0x19')]||0x0)+(_0x35fade[_0x9bee('0x1a')]||0x0)+(_0x35fade['countagentrejectretry']||0x0);this[_0x9bee('0x17')]=_0x35fade['countnosuchnumberretry']||0x0;this[_0x9bee('0x18')]=_0x35fade[_0x9bee('0x18')]||0x0;this['countabandonedretry']=_0x35fade['countabandonedretry']||0x0;this['countmachineretry']=_0x35fade[_0x9bee('0x1a')]||0x0;this[_0x9bee('0x1b')]=_0x35fade[_0x9bee('0x1b')]||0x0;this[_0x9bee('0x1c')]=_0x35fade[_0x9bee('0x1c')];this[_0x9bee('0x1d')]=_0x35fade[_0x9bee('0x1d')];this['callbackat']=_0x35fade['callbackat'];this[_0x9bee('0x1e')]=_0x35fade[_0x9bee('0x1e')];this[_0x9bee('0x1f')]=_0x35fade[_0x9bee('0x1f')];this[_0x9bee('0x20')]=_0x35fade[_0x9bee('0x20')];this[_0x9bee('0x21')]=_['isNil'](_0x35fade['Agent'])?_0x35fade['UserId']:_0x35fade[_0x9bee('0xc')]['id'];this['VoiceQueueId']=_0x35fade['VoiceQueueId'];this[_0x9bee('0x22')]='';this['originatecalleridname']='';}Action['prototype'][_0x9bee('0x23')]=function(){return util[_0x9bee('0xe')]('\x22%s\x22\x20<%s>',this[_0x9bee('0x24')],this['number']);};module['exports']=Action;
\ No newline at end of file
index 0dcc114..5fa4131 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe057=['md5','../../../config/environment','../../../config/logger','actionPreview','../ami','./rpcDb','./action','./util/util','redis','localhost','socket.io-emitter','prototype','tail','finally','sequence','voiceQueues','trunks','agents','bind','hangup','syncHangup','hanguprequest','dialend','syncDialEnd','newexten','syncNewExten','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','campaignsPreview','emit','type','name','strategy','available','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','abandoned','waiting','loggedInDb','dialMethod','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','erlangCalls','erlangCallToSecond','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','format','voice:queue:%s','voice_queue:save','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice_queue_channel:remove','voice_queue_presence:remove','originated','sendMessageOneNotActive','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','syncCampaigns','clockClearZombieChannels','hasOwnProperty','preview','clearZombieChannels','outbound','dialActive','setMessage','recallMe','clearZombieChannel','enqueue','actions','info','[clearZombieChannels][talking]','Queue','originated:\x20','stringify','queue','dialAnswer','contactId','UserId','VoiceQueueId','ListId','Action','status','channel','catch','No\x20such\x20channel','updateOriginated','decrementTalkink','[clearZombieChannel]','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','getContactRecallMe','agentReadyId','then','isNil','length','getDiff','dialRecallMeTimeout','Agent','voicePause','run','logger2','[RecallMe]','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','outboundReCallsDay','logCustomer','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[HistoryRecallClose]','[getContactRecallMe]','IsNotLoggedIn','AGENTS_NOT_LOGGED','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','totalGlobal','NoSuchNumber','custom:agentnosuchnumber','buildObj','nosuchnumber','cloneAction','Global','createCustomerFinal','[callProgressDetectingCustomer][logNoSuchGlobal]','rescheduleContact','scheduledAt','dialNoSuchNumberRetryFrequency','activeContact','linkedid','ANSWER','responsetime','[syncHangup][talking][increment]','uniqueid','\x20Queue','pTalking:\x20','custom:agentconnect','connect','acw','custom:agentConnectPreview','buildAcw','custom:agentcomplete','complete','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','[syncHangup][talking][decrement]','BUSY','countbusyretry','countglobal','custom:agentbusy','busy','dialGlobalMaxRetry','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','[callProgressDetectingCustomer][logBusy]','dialBusyRetryFrequency','unlockAgent','outboundNoAnswerCallsDay','countnoanswerretry','custom:agentnoanswer','noanswer','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','[callProgressDetectingCustomer][logNoAnswer]','dialNoAnswerRetryFrequency','outboundCongestionCallsDay','countcongestionretry','Congestion','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','CANCEL','countagentrejectretry','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','AgentReject','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','countabandonedretry','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedRetryFrequency','countmachineretry','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','callProgressDetectingAgent','isUndefined','object','reason','logAgent','[callProgressDetectingAgent][logNoSuch]','NoAnswer','createAgentHistory','[callProgressDetectingAgent][logNoAnswer]','Busy','[callProgressDetectingAgent][logCongestion]','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','checkInBlack','Contact','phone','Contact\x20is\x20undefined','lookAgent','isEmpty','execCall','[Preview][execCall][success]','Queue:\x20','\x20IdHopper:\x20','idContact','custom:agentcalled','called','Calling','[Preview][execCall][failure]','Call\x20failed','logBlacklist','createHistory','SIP/%s','reachable','unmonitored','pick','unlockContact','execRun','getContactPreview','recallme','isValid','checkIsBlackList','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','validateContact','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','\x20Trunk\x20Backup\x20is\x20not\x20active','isActive','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','trim','dialCutDigit','substring','getCallerId','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','originatecalleridname','originatecalleridnum','extractCalleridNumber','addVariables','toLowerVariables','channelAgent','destconnectedlinenum','calleridnum','user:%s','accountcode','[originated][increment]','OriginateError','actionid','logLookAgent','clone','isFailure','response','rejected','[syncHangup][talking]','cause','[syncHangup][talking][cause]','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','destlinkedid','destuniqueid','variables','syncVarSet','keys','variable','value','error','[syncVarSet][Preview]','transfertargetlinkedid','util','moment'];(function(_0x34021d,_0x753aa6){var _0x16597b=function(_0x2d040a){while(--_0x2d040a){_0x34021d['push'](_0x34021d['shift']());}};_0x16597b(++_0x753aa6);}(_0xe057,0x156));var _0x7e05=function(_0x1da303,_0x262f10){_0x1da303=_0x1da303-0x0;var _0x4c58c1=_0xe057[_0x1da303];return _0x4c58c1;};'use strict';var util=require(_0x7e05('0x0'));var _=require('lodash');var BPromise=require('bluebird');var uuid=require('uuid');var moment=require(_0x7e05('0x1'));var md5=require(_0x7e05('0x2'));var Redis=require('ioredis');var config=require(_0x7e05('0x3'));var logger=require(_0x7e05('0x4'))('preview');var loggerAction=require(_0x7e05('0x4'))(_0x7e05('0x5'));var ami=require(_0x7e05('0x6'));var rpcDb=require(_0x7e05('0x7'));var Action=require(_0x7e05('0x8'));var ut=require(_0x7e05('0x9'));config[_0x7e05('0xa')]=_['defaults'](config[_0x7e05('0xa')],{'host':_0x7e05('0xb'),'port':0x18eb});var io=require(_0x7e05('0xc'))(new Redis(config[_0x7e05('0xa')]));var Sequence=function(){};Sequence[_0x7e05('0xd')]['enqueue']=function(_0x8d7d21){this[_0x7e05('0xe')]=this[_0x7e05('0xe')]?this[_0x7e05('0xe')][_0x7e05('0xf')](_0x8d7d21):_0x8d7d21();};function Preview(_0x18b522){this[_0x7e05('0x10')]=new Sequence();this['campaignsPreview']=_0x18b522[_0x7e05('0x11')];this[_0x7e05('0x12')]=_0x18b522[_0x7e05('0x12')];this['actions']={};this[_0x7e05('0x13')]=_0x18b522[_0x7e05('0x13')];this['clockClearZombieChannels']=0x0;ami['on']('originateresponse',this['syncOriginateResponse'][_0x7e05('0x14')](this));ami['on'](_0x7e05('0x15'),this[_0x7e05('0x16')][_0x7e05('0x14')](this));ami['on'](_0x7e05('0x17'),this['syncHangupRequest']['bind'](this));ami['on'](_0x7e05('0x18'),this[_0x7e05('0x19')]['bind'](this));ami['on'](_0x7e05('0x1a'),this[_0x7e05('0x1b')][_0x7e05('0x14')](this));ami['on']('varset',this['syncVarSet'][_0x7e05('0x14')](this));ami['on'](_0x7e05('0x1c'),this[_0x7e05('0x1d')][_0x7e05('0x14')](this));ami['on'](_0x7e05('0x1e'),this[_0x7e05('0x1f')][_0x7e05('0x14')](this));this[_0x7e05('0x20')](this[_0x7e05('0x21')]);}function emit(_0x195f37,_0x414788,_0x45d225){io['to'](_0x195f37)[_0x7e05('0x22')](_0x414788,_0x45d225);}function emitCampaignPreview(_0x1591b9){if(_0x1591b9[_0x7e05('0x23')]==='outbound'){var _0xc66a04={'id':_0x1591b9['id'],'name':_0x1591b9[_0x7e05('0x24')],'strategy':_0x1591b9[_0x7e05('0x25')],'answered':_0x1591b9['answered'],'available':_0x1591b9[_0x7e05('0x26')],'loggedIn':_0x1591b9[_0x7e05('0x27')],'pTalking':_0x1591b9[_0x7e05('0x28')],'sumBillable':_0x1591b9[_0x7e05('0x29')],'sumDuration':_0x1591b9[_0x7e05('0x2a')],'sumHoldTime':_0x1591b9[_0x7e05('0x2b')]||0x0,'talking':_0x1591b9[_0x7e05('0x2c')],'total':_0x1591b9[_0x7e05('0x2d')],'type':_0x1591b9['type'],'unmanaged':_0x1591b9[_0x7e05('0x2e')],'abandoned':_0x1591b9[_0x7e05('0x2f')],'waiting':_0x1591b9[_0x7e05('0x30')],'loggedInDb':_0x1591b9[_0x7e05('0x31')],'dialActive':_0x1591b9['dialActive'],'dialMethod':_0x1591b9[_0x7e05('0x32')],'dialOriginateCallerIdName':_0x1591b9['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x1591b9[_0x7e05('0x33')],'dialOriginateTimeout':_0x1591b9[_0x7e05('0x34')],'dialPrefix':_0x1591b9[_0x7e05('0x35')],'outboundAnswerAgiCallsDay':_0x1591b9[_0x7e05('0x36')],'outboundAnswerCallsDay':_0x1591b9[_0x7e05('0x37')],'outboundBlacklistCallsDay':_0x1591b9[_0x7e05('0x38')],'outboundBusyCallsDay':_0x1591b9[_0x7e05('0x39')],'outboundCongestionCallsDay':_0x1591b9['outboundCongestionCallsDay'],'outboundDropCallsDayACS':_0x1591b9[_0x7e05('0x3a')],'outboundDropCallsDayCallersExit':_0x1591b9[_0x7e05('0x3b')],'outboundDropCallsDayTimeout':_0x1591b9['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x1591b9['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x1591b9[_0x7e05('0x3c')],'outboundOriginateFailureCallsDay':_0x1591b9[_0x7e05('0x3d')],'outboundReCallsDay':_0x1591b9['outboundReCallsDay'],'outboundRejectCallsDay':_0x1591b9[_0x7e05('0x3e')],'outboundUnknownCallsDay':_0x1591b9[_0x7e05('0x3f')],'outboundAbandonedCallsDay':_0x1591b9[_0x7e05('0x40')],'predictiveIntervalAnsweredCalls':_0x1591b9['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x1591b9['predictiveIntervalAvgHoldtime'],'predictiveIntervalAvgTalktime':_0x1591b9['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0x1591b9['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x1591b9[_0x7e05('0x41')],'predictiveIntervalErlangCalls':_0x1591b9[_0x7e05('0x42')],'predictiveIntervalErlangCallsDroppedCalls':_0x1591b9['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x1591b9['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0x1591b9[_0x7e05('0x43')],'predictiveIntervalPauses':_0x1591b9[_0x7e05('0x44')],'predictiveIntervalAvailable':_0x1591b9[_0x7e05('0x45')],'predictiveIntervalTotalCalls':_0x1591b9[_0x7e05('0x46')],'message':_0x1591b9[_0x7e05('0x47')],'originated':_0x1591b9['originated'],'erlangCalls':_0x1591b9[_0x7e05('0x48')],'erlangCallToSecond':_0x1591b9[_0x7e05('0x49')],'erlangAbandonmentRate':_0x1591b9['erlangAbandonmentRate'],'erlangBusyFactor':_0x1591b9[_0x7e05('0x4a')],'startPredictive':_0x1591b9[_0x7e05('0x4b')],'startProgressive':_0x1591b9[_0x7e05('0x4c')]};if(_0x1591b9[_0x7e05('0x4d')]){_0xc66a04[_0x7e05('0x4d')]={'id':_0x1591b9['Trunk']['id'],'name':_0x1591b9[_0x7e05('0x4d')][_0x7e05('0x24')],'active':_0x1591b9[_0x7e05('0x4d')][_0x7e05('0x4e')],'callerid':_0x1591b9[_0x7e05('0x4d')][_0x7e05('0x4f')]};}if(_0x1591b9[_0x7e05('0x50')]){_0xc66a04[_0x7e05('0x50')]={'id':_0x1591b9['Interval']['id'],'name':_0x1591b9[_0x7e05('0x50')][_0x7e05('0x24')]};}var _0x5259dc=md5(JSON['stringify'](_0xc66a04));if(_0x1591b9['md5']!==_0x5259dc){_0x1591b9[_0x7e05('0x2')]=_0x5259dc;emit(util[_0x7e05('0x51')](_0x7e05('0x52'),_0xc66a04[_0x7e05('0x24')]),_0x7e05('0x53'),_0xc66a04);}}}function emitVoiceQueueChannelRemove(_0x1e398e){logger['info'](_0x7e05('0x54'),JSON['stringify'](_0x1e398e));emit(util[_0x7e05('0x51')](_0x7e05('0x52'),_0x1e398e[_0x7e05('0x24')]),_0x7e05('0x55'),_0x1e398e);io['emit'](_0x7e05('0x56'),_0x1e398e);}function notSendMessagesQueue(_0x4be9e8){if(_0x4be9e8['sendMessageOneNotActive']){if(_0x4be9e8[_0x7e05('0x57')]===0x0&&_0x4be9e8[_0x7e05('0x28')]===0x0){_0x4be9e8[_0x7e05('0x58')]=![];_0x4be9e8[_0x7e05('0x26')]=0x0;_0x4be9e8['paused']=0x0;_0x4be9e8[_0x7e05('0x47')]='NOT_ACTIVE';ut[_0x7e05('0x59')](_0x7e05('0x5a'),_0x4be9e8[_0x7e05('0x24')]+'\x20is\x20not\x20active');}else{_0x4be9e8[_0x7e05('0x47')]='IS_DISACTIVED';ut['logger'](_0x7e05('0x5a'),_0x4be9e8[_0x7e05('0x24')]+'\x20is\x20disactive');}emitCampaignPreview(_0x4be9e8);}}Preview[_0x7e05('0xd')][_0x7e05('0x20')]=function(){var _0x2aaad3=this;setInterval(function(){_0x2aaad3[_0x7e05('0x5b')]();},0x7cf);};Preview[_0x7e05('0xd')][_0x7e05('0x5b')]=function(){var _0x32eef2=this['campaignsPreview'];this[_0x7e05('0x5c')]+=0x1;for(var _0x3332da in _0x32eef2){if(_0x32eef2[_0x7e05('0x5d')](_0x3332da)&&(_0x32eef2[_0x3332da]['dialMethod']===_0x7e05('0x5e')||_0x32eef2[_0x3332da][_0x7e05('0x32')]==='booked')&&_0x32eef2[_0x3332da]['type']==='outbound'){if(this[_0x7e05('0x5c')]>0x7){this['clockClearZombieChannels']=0x0;this[_0x7e05('0x5f')]();}}if(_0x32eef2[_0x7e05('0x5d')](_0x3332da)&&_0x32eef2[_0x3332da][_0x7e05('0x32')]===_0x7e05('0x5e')&&_0x32eef2[_0x3332da][_0x7e05('0x23')]===_0x7e05('0x60')){if(_0x32eef2[_0x3332da][_0x7e05('0x61')]){this[_0x7e05('0x62')](_0x32eef2[_0x3332da]);this[_0x7e05('0x63')](_0x32eef2[_0x3332da]);}else{notSendMessagesQueue(_0x32eef2[_0x3332da]);}}}};Preview['prototype'][_0x7e05('0x64')]=function(_0x45ddb3){var _0x57d624=this;this[_0x7e05('0x10')][_0x7e05('0x65')](function(){if(!_['isNil'](_0x57d624[_0x7e05('0x66')][_0x45ddb3])){loggerAction[_0x7e05('0x67')](_0x7e05('0x68'),_0x45ddb3,_0x7e05('0x69'),_0x57d624[_0x7e05('0x66')][_0x45ddb3]['queue'],_0x7e05('0x6a'),JSON[_0x7e05('0x6b')](_0x57d624[_0x7e05('0x21')][_0x57d624[_0x7e05('0x66')][_0x45ddb3][_0x7e05('0x6c')]][_0x7e05('0x57')]),'pTalking:\x20',JSON[_0x7e05('0x6b')](_0x57d624[_0x7e05('0x21')][_0x57d624[_0x7e05('0x66')][_0x45ddb3]['queue']]['pTalking']),JSON[_0x7e05('0x6b')](_0x57d624['actions'][_0x45ddb3][_0x7e05('0x6d')]),JSON[_0x7e05('0x6b')](_['pick'](_0x57d624['actions'][_0x45ddb3],[_0x7e05('0x6e'),_0x7e05('0x6f'),_0x7e05('0x70'),_0x7e05('0x71')])));return ami[_0x7e05('0x72')]({'action':_0x7e05('0x73'),'channel':_0x57d624[_0x7e05('0x66')][_0x45ddb3][_0x7e05('0x74')]})[_0x7e05('0x75')](function(_0x4aa819){if(_0x4aa819['message']===_0x7e05('0x76')){setTimeout(function(){if(_0x57d624['actions'][_0x45ddb3]){ut[_0x7e05('0x77')](_0x57d624[_0x7e05('0x21')][_0x57d624['actions'][_0x45ddb3][_0x7e05('0x6c')]],'[clearZombieChannel]');if(_0x57d624['actions'][_0x45ddb3][_0x7e05('0x6d')]===!![]){ut[_0x7e05('0x78')](_0x57d624['campaignsPreview'][_0x57d624[_0x7e05('0x66')][_0x45ddb3][_0x7e05('0x6c')]],_0x7e05('0x79'));ut[_0x7e05('0x7a')](_0x7e05('0x7b')+_0x45ddb3,_0x57d624[_0x7e05('0x66')][_0x45ddb3][_0x7e05('0x6c')]);}ut[_0x7e05('0x7a')](_0x7e05('0x7c')+_0x45ddb3,_0x57d624['actions'][_0x45ddb3][_0x7e05('0x6c')]);delete _0x57d624['actions'][_0x45ddb3];}},0x2328);}});}});};Preview['prototype'][_0x7e05('0x5f')]=function(){var _0x153b70=this;loggerAction['info']('[action]',_['size'](this['actions']));for(var _0x5e71b1 in this[_0x7e05('0x66')]){if(_0x153b70['actions']['hasOwnProperty'](_0x5e71b1)){_0x153b70[_0x7e05('0x64')](_0x5e71b1);}}};Preview[_0x7e05('0xd')]['recallMe']=function(_0x143262){var _0x104a79=this;rpcDb[_0x7e05('0x7d')](_0x143262['id'],ut[_0x7e05('0x7e')](this['agents']))[_0x7e05('0x7f')](function(_0x240584){if(!_[_0x7e05('0x80')](_0x240584)){for(var _0xab119e=0x0;_0xab119e<_0x240584[_0x7e05('0x81')];_0xab119e+=0x1){if(ut[_0x7e05('0x82')](_0x240584[_0xab119e]['scheduledat'])<_0x143262[_0x7e05('0x83')]*0x3c){if(_0x240584[_0xab119e][_0x7e05('0x84')]&&!_0x240584[_0xab119e]['Agent'][_0x7e05('0x85')]){_0x104a79[_0x7e05('0x86')](_0x240584[_0xab119e]['id'])[_0x7e05('0x7f')](ut[_0x7e05('0x87')](_0x7e05('0x88')))[_0x7e05('0x75')](ut['logger2']('[RecallMe]'));}else{rpcDb[_0x7e05('0x89')](_0x240584[_0xab119e]['id']);}}else{var _0x4900bd=new Action(_0x240584[_0xab119e],_0x143262);_0x4900bd[_0x7e05('0x8a')]=moment()[_0x7e05('0x51')](_0x7e05('0x8b'));_0x143262[_0x7e05('0x8c')]+=0x1;ut[_0x7e05('0x8d')](_0x4900bd,0x17,'RecallInQueue');if(_0x143262[_0x7e05('0x8e')]){rpcDb[_0x7e05('0x8f')](ut[_0x7e05('0x90')](_0x240584[_0xab119e]));rpcDb[_0x7e05('0x91')](_0x4900bd,_0x7e05('0x92'));}else{ut[_0x7e05('0x8d')](_0x4900bd,0x16,_0x7e05('0x93'));rpcDb[_0x7e05('0x91')](_0x4900bd,_0x7e05('0x94'));rpcDb['createCustomerFinal'](_0x4900bd,'[HistoryRecallClose]');}}}}})[_0x7e05('0x75')](ut['logger2'](_0x7e05('0x95')));};Preview[_0x7e05('0xd')][_0x7e05('0x62')]=function(_0x1e9d91){_0x1e9d91[_0x7e05('0x58')]=!![];if(ut[_0x7e05('0x96')](_0x1e9d91[_0x7e05('0x27')])){_0x1e9d91[_0x7e05('0x47')]=_0x7e05('0x97');}else if(!ut['isActive'](_0x1e9d91[_0x7e05('0x61')])){_0x1e9d91['message']='NOT_ACTIVE';}else if(!this[_0x7e05('0x98')](_0x1e9d91[_0x7e05('0x4d')])){if(!this[_0x7e05('0x98')](_0x1e9d91[_0x7e05('0x99')])){_0x1e9d91[_0x7e05('0x47')]=_0x7e05('0x9a');}else{_0x1e9d91[_0x7e05('0x47')]='ACTIVE';}}else{_0x1e9d91['message']=_0x7e05('0x9b');}emitCampaignPreview(_0x1e9d91);};Preview[_0x7e05('0xd')][_0x7e05('0x9c')]=function(_0xaec439,_0x23f9c4,_0x47da1f){var _0x151121=this;var _0x30951b=this[_0x7e05('0x66')][_0x23f9c4];var _0x4baa9c=this[_0x7e05('0x21')][_0x30951b['queue']];var _0x4d3122;if(_0x4baa9c){switch(_0x47da1f){case'1':_0x4baa9c[_0x7e05('0x3c')]+=0x1;_0x30951b[_0x7e05('0x9d')]+=0x1;_0x30951b['countglobal']=ut[_0x7e05('0x9e')](_0x30951b);ut[_0x7e05('0x8d')](_0x30951b,0x0,_0x7e05('0x9f'));ami[_0x7e05('0x22')](_0x7e05('0xa0'),ut[_0x7e05('0xa1')](_0x30951b,_0x7e05('0xa2')));rpcDb['createCustomerHistory'](_0x30951b,'[callProgressDetectingCustomer][logNoSuch]');if(ut['totalGlobal'](_0x30951b)>=_0x4baa9c['dialGlobalMaxRetry']){_0x4d3122=ut[_0x7e05('0xa3')](_0x30951b,0xf,_0x7e05('0xa4'));rpcDb[_0x7e05('0xa5')](_0x4d3122,_0x7e05('0xa6'));}else{if(_0x30951b[_0x7e05('0x9d')]>=_0x4baa9c['dialNoSuchNumberMaxRetry']){rpcDb['createCustomerFinal'](_0x30951b,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{rpcDb[_0x7e05('0xa7')](ut[_0x7e05('0xa8')](_0x30951b,_0x7e05('0x9d'),_0x4baa9c[_0x7e05('0xa9')]),_0x30951b['unlockAgent'],_0x30951b[_0x7e05('0xaa')]);}}delete this[_0x7e05('0x66')][_0xaec439[_0x7e05('0xab')]];break;case _0x7e05('0xac'):var _0x396a68=moment()[_0x7e05('0x51')]('YYYY-MM-DD\x20HH:mm:ss');_0x30951b[_0x7e05('0xad')]=_0x396a68;_0x30951b['answertime']=_0x396a68;_0x30951b[_0x7e05('0x6d')]=!![];_0x4baa9c[_0x7e05('0x28')]+=0x1;logger['info'](_0x7e05('0xae'),_0x30951b[_0x7e05('0xaf')],_0x7e05('0xb0'),_0x4baa9c[_0x7e05('0x24')],_0x7e05('0xb1'),_0x4baa9c[_0x7e05('0x28')]);ami['emit'](_0x7e05('0xb2'),ut['buildObj'](_0x30951b,_0x7e05('0xb3'),this['campaignsPreview'][_0x30951b[_0x7e05('0x6c')]]));if(_0x4baa9c[_0x7e05('0xb4')]){ami[_0x7e05('0x22')](_0x7e05('0xb5'),ut[_0x7e05('0xb6')](_0x30951b));}break;case'16':ami['emit'](_0x7e05('0xb7'),ut[_0x7e05('0xa1')](_0x30951b,_0x7e05('0xb8'),this[_0x7e05('0x21')][_0x30951b[_0x7e05('0x6c')]]));emitVoiceQueueChannelRemove(ut[_0x7e05('0xa1')](_0x30951b,_0x7e05('0xb8')));_0x4baa9c[_0x7e05('0x37')]+=0x1;_0x4baa9c[_0x7e05('0x2d')]+=0x1;_0x4baa9c['answered']+=0x1;ut['decrementTalkink'](_0x4baa9c,_0x7e05('0xb9'));_0x30951b['countglobal']=ut[_0x7e05('0x9e')](_0x30951b);ut[_0x7e05('0x8d')](_0x30951b,0x4,_0x7e05('0xba'));rpcDb[_0x7e05('0x91')](_0x30951b,_0x7e05('0xbb'));rpcDb[_0x7e05('0xa5')](_0x30951b,_0x7e05('0xbc'));rpcDb[_0x7e05('0xbd')](_0x30951b);_0x4baa9c[_0x7e05('0x2a')]+=_0x30951b['talktime'];_0x4baa9c['sumBillable']+=_0x30951b['talktime'];logger[_0x7e05('0x67')](_0x7e05('0xbe'),_0x30951b[_0x7e05('0xaf')],_0x7e05('0xb0'),_0x4baa9c[_0x7e05('0x24')],_0x7e05('0xb1'),_0x4baa9c[_0x7e05('0x28')]);delete this[_0x7e05('0x66')][_0xaec439['linkedid']];break;case _0x7e05('0xbf'):_0x4baa9c['outboundBusyCallsDay']+=0x1;_0x30951b[_0x7e05('0xc0')]+=0x1;_0x30951b[_0x7e05('0xc1')]=ut[_0x7e05('0x9e')](_0x30951b);ut['logCustomer'](_0x30951b,0x5,'Busy');ami[_0x7e05('0x22')](_0x7e05('0xc2'),ut[_0x7e05('0xa1')](_0x30951b,_0x7e05('0xc3')));rpcDb[_0x7e05('0x91')](_0x30951b,'[callProgressDetectingCustomer][logBusy]');if(ut[_0x7e05('0x9e')](_0x30951b)>=_0x4baa9c[_0x7e05('0xc4')]){_0x4d3122=ut['cloneAction'](_0x30951b,0xf,_0x7e05('0xa4'));rpcDb[_0x7e05('0xa5')](_0x4d3122,_0x7e05('0xc5'));}else{if(_0x30951b['countbusyretry']>=_0x4baa9c[_0x7e05('0xc6')]){rpcDb['createCustomerFinal'](_0x30951b,_0x7e05('0xc7'));}else{rpcDb[_0x7e05('0xa7')](ut[_0x7e05('0xa8')](_0x30951b,_0x7e05('0xc0'),_0x4baa9c[_0x7e05('0xc8')]),_0x30951b[_0x7e05('0xc9')],_0x30951b['activeContact']);}}break;case'NOANSWER':_0x4baa9c[_0x7e05('0xca')]+=0x1;_0x30951b[_0x7e05('0xcb')]+=0x1;_0x30951b[_0x7e05('0xc1')]=ut[_0x7e05('0x9e')](_0x30951b);ut[_0x7e05('0x8d')](_0x30951b,0x3,'NoAnswer');ami[_0x7e05('0x22')](_0x7e05('0xcc'),ut[_0x7e05('0xa1')](_0x30951b,_0x7e05('0xcd')));rpcDb[_0x7e05('0x91')](_0x30951b,'[callProgressDetectingCustomer][logNoAnswer]');if(ut[_0x7e05('0x9e')](_0x30951b)>=_0x4baa9c[_0x7e05('0xc4')]){_0x4d3122=ut[_0x7e05('0xa3')](_0x30951b,0xf,'Global');rpcDb[_0x7e05('0xa5')](_0x4d3122,_0x7e05('0xce'));}else{if(_0x30951b[_0x7e05('0xcb')]>=_0x4baa9c[_0x7e05('0xcf')]){rpcDb[_0x7e05('0xa5')](_0x30951b,_0x7e05('0xd0'));}else{rpcDb['rescheduleContact'](ut[_0x7e05('0xa8')](_0x30951b,_0x7e05('0xcb'),_0x4baa9c[_0x7e05('0xd1')]),_0x30951b['unlockAgent'],_0x30951b[_0x7e05('0xaa')]);}}break;case'CONGESTION':_0x4baa9c[_0x7e05('0xd2')]+=0x1;_0x30951b[_0x7e05('0xd3')]+=0x1;_0x30951b['countglobal']=ut[_0x7e05('0x9e')](_0x30951b);ut[_0x7e05('0x8d')](_0x30951b,0x8,_0x7e05('0xd4'));ami[_0x7e05('0x22')](_0x7e05('0xd5'),ut[_0x7e05('0xa1')](_0x30951b,_0x7e05('0xd6')));rpcDb['createCustomerHistory'](_0x30951b,_0x7e05('0xd7'));if(ut[_0x7e05('0x9e')](_0x30951b)>=_0x4baa9c[_0x7e05('0xc4')]){_0x4d3122=ut[_0x7e05('0xa3')](_0x30951b,0xf,_0x7e05('0xa4'));rpcDb[_0x7e05('0xa5')](_0x4d3122,_0x7e05('0xd8'));}else{if(_0x30951b['countcongestionretry']>=_0x4baa9c['dialCongestionMaxRetry']){rpcDb['createCustomerFinal'](_0x30951b,'[callProgressDetectingCustomer][logCongestion]');}else{rpcDb['rescheduleContact'](ut[_0x7e05('0xa8')](_0x30951b,_0x7e05('0xd3'),_0x4baa9c[_0x7e05('0xc8')]),_0x30951b[_0x7e05('0xc9')],_0x30951b['activeContact']);}}break;case _0x7e05('0xd9'):_0x4baa9c[_0x7e05('0x3e')]+=0x1;_0x30951b[_0x7e05('0xda')]+=0x1;_0x30951b[_0x7e05('0xc1')]=ut[_0x7e05('0x9e')](_0x30951b);ut[_0x7e05('0x8d')](_0x30951b,0x14,'AgentReject');ami[_0x7e05('0x22')](_0x7e05('0xdb'),ut['buildObj'](_0x30951b,_0x7e05('0xdc')));rpcDb['createCustomerHistory'](_0x30951b,_0x7e05('0xdd'));if(ut['totalGlobal'](_0x30951b)>=_0x4baa9c[_0x7e05('0xc4')]){_0x4d3122=ut[_0x7e05('0xa3')](_0x30951b,0x14,_0x7e05('0xde'));rpcDb[_0x7e05('0xa5')](_0x4d3122,_0x7e05('0xdf'));}else{if(_0x30951b['countagentrejectretry']>=_0x4baa9c[_0x7e05('0xe0')]){rpcDb['createCustomerFinal'](_0x30951b,_0x7e05('0xdf'));}else{rpcDb[_0x7e05('0xa7')](ut[_0x7e05('0xa8')](_0x30951b,_0x7e05('0xda'),_0x4baa9c[_0x7e05('0xe1')]),_0x30951b[_0x7e05('0xc9')],_0x30951b[_0x7e05('0xaa')]);}}break;case'ABANDONED':_0x4baa9c['outboundAbandonedCallsDay']+=0x1;_0x30951b[_0x7e05('0xe2')]+=0x1;_0x30951b[_0x7e05('0xc1')]=ut[_0x7e05('0x9e')](_0x30951b);ut[_0x7e05('0x8d')](_0x30951b,0xb,'Abandoned');rpcDb[_0x7e05('0x91')](_0x30951b,_0x7e05('0xe3'));if(ut[_0x7e05('0x9e')](_0x30951b)>=_0x4baa9c[_0x7e05('0xc4')]){_0x4d3122=ut['cloneAction'](_0x30951b,0xf,_0x7e05('0xa4'));rpcDb[_0x7e05('0xa5')](_0x4d3122,_0x7e05('0xe3'));}else{if(_0x30951b[_0x7e05('0xe4')]>=_0x4baa9c['dialAbandonedMaxRety']){rpcDb[_0x7e05('0xa5')](_0x30951b,'[callProgressDetectingCustomer][logAbandoned]');}else{rpcDb[_0x7e05('0xa7')](ut['scheduledAt'](_0x30951b,'countabandonedretry',_0x4baa9c[_0x7e05('0xe5')]),_0x30951b[_0x7e05('0xc9')],_0x30951b[_0x7e05('0xaa')]);}}break;case'18':_0x4baa9c[_0x7e05('0x3f')]+=0x1;_0x30951b[_0x7e05('0xe6')]+=0x1;_0x30951b[_0x7e05('0xc1')]=ut['totalGlobal'](_0x30951b);ut['logCustomer'](_0x30951b,0x12,_0xaec439[_0x7e05('0xe7')]||_0xaec439[_0x7e05('0xe8')]);ami[_0x7e05('0x22')](_0x7e05('0xe9'),ut[_0x7e05('0xa1')](_0x30951b,_0x7e05('0xea')));rpcDb[_0x7e05('0x91')](_0x30951b,_0x7e05('0xeb'));if(ut['totalGlobal'](_0x30951b)>=_0x4baa9c[_0x7e05('0xc4')]){_0x4d3122=ut[_0x7e05('0xa3')](_0x30951b,0xf,_0x7e05('0xa4'));rpcDb[_0x7e05('0xa5')](_0x4d3122,_0x7e05('0xeb'));}else{rpcDb['createCustomerFinal'](_0x30951b,_0x7e05('0xeb'));}delete this['actions'][_0xaec439['linkedid']];break;case'19':_0x4baa9c[_0x7e05('0x3f')]+=0x1;_0x30951b[_0x7e05('0xc1')]=ut['totalGlobal'](_0x30951b);ut[_0x7e05('0x8d')](_0x30951b,0x13,_0xaec439[_0x7e05('0xe7')]||_0xaec439[_0x7e05('0xe8')]);ami['emit'](_0x7e05('0xe9'),ut[_0x7e05('0xa1')](_0x30951b,_0x7e05('0xea')));rpcDb[_0x7e05('0x91')](_0x30951b,_0x7e05('0xec'));if(ut['totalGlobal'](_0x30951b)>=_0x4baa9c[_0x7e05('0xc4')]){_0x4d3122=ut[_0x7e05('0xa3')](_0x30951b,0xf,_0x7e05('0xa4'));rpcDb['createCustomerFinal'](_0x4d3122,_0x7e05('0xec'));}else{rpcDb[_0x7e05('0xa5')](_0x30951b,_0x7e05('0xec'));}delete this[_0x7e05('0x66')][_0xaec439['linkedid']];break;default:if(_0x30951b[_0x7e05('0x6d')]){ut[_0x7e05('0x78')](_0x4baa9c,_0x7e05('0xed'));ut[_0x7e05('0x7a')](_0x7e05('0xee')+_0x4baa9c['name'],_0xaec439);}_0x4baa9c[_0x7e05('0x3f')]+=0x1;_0x30951b[_0x7e05('0xc1')]=ut['totalGlobal'](_0x30951b);ut[_0x7e05('0x8d')](_0x30951b,0xc,_0xaec439[_0x7e05('0xe7')]||_0xaec439['dialstatus']);rpcDb[_0x7e05('0x91')](_0x30951b,_0x7e05('0xef'));if(ut[_0x7e05('0x9e')](_0x30951b)>=_0x4baa9c[_0x7e05('0xc4')]){_0x4d3122=ut[_0x7e05('0xa3')](_0x30951b,0xf,_0x7e05('0xa4'));rpcDb[_0x7e05('0xa5')](_0x4d3122,'[callProgressDetectingCustomer][logUnknownGlobal]');}else{rpcDb[_0x7e05('0xa5')](_0x30951b,_0x7e05('0xf0'));}delete this['actions'][_0xaec439[_0x7e05('0xab')]];}if(!(_0x30951b[_0x7e05('0x6d')]&&_0x47da1f==='16')){ut['updateOriginated'](_0x4baa9c,_0x7e05('0xf1'));logger[_0x7e05('0x67')](_0x7e05('0xf2'),_0x30951b[_0x7e05('0xaf')],_0x7e05('0xb0'),_0x4baa9c[_0x7e05('0x24')],_0x7e05('0x6a'),_0x4baa9c[_0x7e05('0x57')]);}if(_0x47da1f!==_0x7e05('0xac')){delete this[_0x7e05('0x66')][_0xaec439[_0x7e05('0xab')]];delete this['actions'][_0xaec439['destlinkedid']];}}};Preview['prototype'][_0x7e05('0xf3')]=function(_0x477969,_0x31ddf4,_0x49d050){if(_[_0x7e05('0xf4')](_0x31ddf4)&&_0x7e05('0xf5')!==typeof _0x31ddf4){return;}if(_[_0x7e05('0xf4')](_0x49d050)&&'object'!==typeof _0x49d050){return;}switch(_0x49d050[_0x7e05('0xf6')]){case'0':ut[_0x7e05('0xf7')](_0x477969,0x0,'NoSuchNumber');rpcDb['createAgentHistory'](_0x477969,_0x7e05('0xf8'));break;case'3':ut[_0x7e05('0xf7')](_0x477969,0x3,_0x7e05('0xf9'));rpcDb[_0x7e05('0xfa')](_0x477969,_0x7e05('0xfb'));break;case'5':ut['logAgent'](_0x477969,0x5,_0x7e05('0xfc'));rpcDb[_0x7e05('0xfa')](_0x477969,'[callProgressDetectingAgent][logBusy]');break;case'8':ut[_0x7e05('0xf7')](_0x477969,0x8,_0x7e05('0xd4'));rpcDb['createAgentHistory'](_0x477969,_0x7e05('0xfd'));break;case'22':ut['logAgent'](_0x477969,0x16,'AnswerAGI');rpcDb[_0x7e05('0xfa')](_0x477969,_0x7e05('0xfe'));break;default:ut[_0x7e05('0xf7')](_0x477969,0xc,_0x49d050[_0x7e05('0xf6')]);rpcDb[_0x7e05('0xfa')](_0x477969,_0x7e05('0xfd'));}ut[_0x7e05('0x77')](_0x31ddf4,_0x7e05('0xff'));logger[_0x7e05('0x67')](_0x7e05('0x100'),_0x477969[_0x7e05('0xaf')],_0x7e05('0xb0'),_0x31ddf4[_0x7e05('0x24')],_0x7e05('0x6a'),_0x31ddf4[_0x7e05('0x57')]);delete this[_0x7e05('0x66')][_0x477969[_0x7e05('0xaf')]];};Preview[_0x7e05('0xd')][_0x7e05('0x101')]=function(_0xd6e628,_0x1955f2,_0x52b527,_0x119f2a,_0x3e3081){var _0x1caa67=this;return new BPromise(function(_0x2850fe,_0x312368){if(_[_0x7e05('0x80')](_0x1955f2)||_[_0x7e05('0x80')](_0x1955f2['Contact'])||_[_0x7e05('0x80')](_0x1955f2[_0x7e05('0x102')][_0x7e05('0x103')])||_['isNil'](_0x1955f2[_0x7e05('0x70')])){_0x312368(ut['message'](_0x7e05('0x104'),_0x119f2a,_0x3e3081));return;}var _0x403271=uuid['v4']();var _0x13ab15=_0x1caa67[_0x7e05('0x21')][_0x1955f2[_0x7e05('0x69')][_0x7e05('0x24')]];var _0xdb53ce=_0x52b527?_0x1caa67[_0x7e05('0x13')][_0x52b527]['id']:undefined;_0x1caa67[_0x7e05('0x66')][_0x403271]=new Action(_0x1955f2,_0x13ab15,_0x403271,_0x52b527,_0xdb53ce);var _0x12c893=_0x1caa67['actions'][_0x403271];_0x12c893[_0x7e05('0xc9')]=_0x119f2a;_0x12c893[_0x7e05('0xaa')]=_0x3e3081;_0x12c893[_0x7e05('0x105')]=_0x52b527;if(_[_0x7e05('0x106')](_0xd6e628)){_0x1caa67[_0x7e05('0x107')](_0x12c893,_0x13ab15,_0x1955f2,_0x52b527)['then'](function(_0x5c7941){logger[_0x7e05('0x67')](_0x7e05('0x108'),_0x7e05('0x109')+_0x12c893[_0x7e05('0x6c')]+_0x7e05('0x10a')+_0x12c893[_0x7e05('0x10b')],JSON['stringify'](_0x5c7941));ami[_0x7e05('0x22')](_0x7e05('0x10c'),ut[_0x7e05('0xa1')](_0x12c893,_0x7e05('0x10d'),_0x1caa67[_0x7e05('0x21')][_0x12c893[_0x7e05('0x6c')]]));_0x2850fe(ut[_0x7e05('0x47')](_0x7e05('0x10e')));})[_0x7e05('0x75')](function(_0xca6ad3){ut[_0x7e05('0x59')](_0x7e05('0x10f'),_0xca6ad3);_0x312368(ut['message'](_0x7e05('0x110'),_0x119f2a,_0x3e3081));});}else{_0x13ab15['outboundBlacklistCallsDay']+=0x1;ut[_0x7e05('0x111')](_0x12c893);rpcDb[_0x7e05('0x112')](_0x12c893,'[Blacklist][error]');delete _0x1caa67['actions'][_0x403271];_0x312368(ut['message']('Contact\x20in\x20black\x20List',_0x119f2a,_0x3e3081));}});};Preview[_0x7e05('0xd')][_0x7e05('0x98')]=function(_0x234937){return!_['isNil'](_0x234937)&&!_[_0x7e05('0x80')](_0x234937[_0x7e05('0x24')])&&!_[_0x7e05('0x80')](_0x234937[_0x7e05('0x4e')])&&_0x234937[_0x7e05('0x4e')]&&!_[_0x7e05('0x80')](this['trunks'][util[_0x7e05('0x51')](_0x7e05('0x113'),_0x234937['name'])])&&!_[_0x7e05('0x80')](this[_0x7e05('0x12')][util[_0x7e05('0x51')](_0x7e05('0x113'),_0x234937[_0x7e05('0x24')])][_0x7e05('0x73')])&&(this[_0x7e05('0x12')][util[_0x7e05('0x51')]('SIP/%s',_0x234937[_0x7e05('0x24')])]['status']===_0x7e05('0x114')||this[_0x7e05('0x12')][util['format']('SIP/%s',_0x234937[_0x7e05('0x24')])][_0x7e05('0x73')]===_0x7e05('0x115'));};Preview[_0x7e05('0xd')][_0x7e05('0x86')]=function(_0x2cb86e,_0x36890c){var _0x3e296a=this;return new BPromise(function(_0x4e785d,_0x4b57b0){_0x3e296a['execRun'](_0x2cb86e,_0x36890c)[_0x7e05('0x7f')](function(_0x1b86b7){_0x4e785d(_[_0x7e05('0x116')](_0x1b86b7,[_0x7e05('0x47')]));})[_0x7e05('0x75')](function(_0x22e764){if(_0x22e764['unlock']){rpcDb[_0x7e05('0x117')](_0x2cb86e);}if(_0x22e764[_0x7e05('0x4e')]){rpcDb[_0x7e05('0x89')](_0x2cb86e);}_0x4b57b0(_[_0x7e05('0x116')](_0x22e764,['message']));});});};Preview[_0x7e05('0xd')][_0x7e05('0x118')]=function(_0x4cfd41,_0x1ecbcb){var _0x40c182=this;return new BPromise(function(_0xb8332b,_0x25cc5c){var _0x152453,_0x1398d7;rpcDb[_0x7e05('0x119')](_0x4cfd41)[_0x7e05('0x7f')](function(_0x3b4f40){if(!_[_0x7e05('0x80')](_0x3b4f40[0x0])){_0x1398d7=_0x3b4f40[0x0][_0x7e05('0x11a')]?![]:!![];_0x152453=_0x3b4f40[0x0][_0x7e05('0x11a')]?!![]:![];_0x152453=_0x1ecbcb?!![]:_0x152453;}var _0x5d0c7a=_0x40c182['validateContact'](_0x3b4f40);if(_0x5d0c7a[_0x7e05('0x11b')]){rpcDb[_0x7e05('0x11c')](_['pick'](_0x3b4f40[0x0],[_0x7e05('0x70'),'Contact.phone']))['then'](function(_0x33d055){_0x40c182['checkInBlack'](_0x33d055,_0x3b4f40[0x0],_0x1ecbcb,_0x1398d7,_0x152453)[_0x7e05('0x7f')](function(_0x2410fb){_0xb8332b(_0x2410fb);})[_0x7e05('0x75')](function(_0x518cdf){_0x25cc5c(_0x518cdf);});})[_0x7e05('0x75')](function(_0x405978){ut[_0x7e05('0x59')](_0x7e05('0x11d'),_0x405978);_0x25cc5c(ut[_0x7e05('0x47')](_0x7e05('0x11e'),_0x1398d7,_0x152453));});}else{_0x25cc5c(ut['message'](_0x5d0c7a['message'],_0x1398d7,_0x152453));}})['catch'](function(_0x49121f){ut['logger'](_0x7e05('0x11f'),_0x49121f);_0x25cc5c(ut[_0x7e05('0x47')](_0x7e05('0x11e'),![],!![]));});});};Preview['prototype'][_0x7e05('0x120')]=function(_0x3da99b){if(_[_0x7e05('0x80')](_0x3da99b)||_[_0x7e05('0x106')](_0x3da99b)||!_['isNil'](_0x3da99b[0x0]['Agent'])&&_[_0x7e05('0x80')](_0x3da99b[0x0][_0x7e05('0x84')]['name'])){ut[_0x7e05('0x59')](_0x7e05('0x121'),_0x3da99b);return{'isValid':![],'message':_0x7e05('0x122')};}var _0x43a0af=this[_0x7e05('0x21')][_0x3da99b[0x0][_0x7e05('0x69')][_0x7e05('0x24')]];_0x43a0af[_0x7e05('0x47')]=_0x7e05('0x9b');if(_[_0x7e05('0x80')](_0x43a0af)){ut[_0x7e05('0x59')](_0x7e05('0x123'),_0x43a0af);return{'isValid':![],'message':_0x7e05('0x124')};}if(!this[_0x7e05('0x98')](_0x43a0af['Trunk'])){ut[_0x7e05('0x59')](_0x7e05('0x125'),_0x7e05('0x126')+_0x43a0af[_0x7e05('0x24')]+_0x7e05('0x127'));if(!this['isTrunkReachable'](_0x43a0af['TrunkBackup'])){ut[_0x7e05('0x59')]('[Preview][validateContact][Trunk\x20not\x20work]',_0x43a0af['name']+_0x7e05('0x128'));return{'isValid':![],'message':'Trunk\x20not\x20work'};}}if(!ut[_0x7e05('0x129')](_0x43a0af['dialActive'])){ut[_0x7e05('0x59')](_0x7e05('0x12a'),_0x43a0af[_0x7e05('0x24')]+'\x20Not\x20Active');return{'isValid':![],'message':'campaign\x20Name:\x20'+_0x43a0af[_0x7e05('0x24')]+_0x7e05('0x12b')};}return{'isValid':!![],'message':_0x7e05('0x12c')};};Preview[_0x7e05('0xd')][_0x7e05('0x107')]=function(_0x1690eb,_0x2fc749,_0x22b11e,_0xbabcd8){var _0xfa46e6=this;return new BPromise(function(_0x34b5b2,_0x5238ae){var _0x83920d=_0x1690eb[_0x7e05('0xaf')];var _0x2443c4=_0xfa46e6[_0x7e05('0x98')](_0x2fc749[_0x7e05('0x4d')])?util['format'](_0x7e05('0x12d'),_0x2fc749[_0x7e05('0x4d')][_0x7e05('0x24')],_['isNil'](_0x2fc749['dialPrefix'])?'':_0x2fc749[_0x7e05('0x35')][_0x7e05('0x12e')]()||'',_0x2fc749[_0x7e05('0x12f')]>0x0?_0x22b11e[_0x7e05('0x102')]['phone'][_0x7e05('0x130')](_0x2fc749[_0x7e05('0x12f')]):_0x22b11e[_0x7e05('0x102')]['phone']):util[_0x7e05('0x51')]('SIP/%s/%s%s',_['isNil'](_0x2fc749['TrunkBackup'])?_0x2fc749['Trunk'][_0x7e05('0x24')]:_0x2fc749[_0x7e05('0x99')][_0x7e05('0x24')],_['isNil'](_0x2fc749['dialPrefix'])?'':_0x2fc749[_0x7e05('0x35')][_0x7e05('0x12e')]()||'',_0x2fc749[_0x7e05('0x12f')]>0x0?_0x22b11e[_0x7e05('0x102')]['phone']['substring'](_0x2fc749[_0x7e05('0x12f')]):_0x22b11e[_0x7e05('0x102')][_0x7e05('0x103')]);var _0x3b014d=_0xfa46e6[_0x7e05('0x98')](_0x2fc749[_0x7e05('0x4d')])?ut[_0x7e05('0x131')](_0x2fc749[_0x7e05('0x4d')][_0x7e05('0x4f')],_0x2fc749[_0x7e05('0x132')],_0x2fc749[_0x7e05('0x133')]>0x0?ut[_0x7e05('0x134')](_0x2fc749[_0x7e05('0x33')],_0x2fc749[_0x7e05('0x133')]):_0x2fc749[_0x7e05('0x33')]):ut[_0x7e05('0x131')](_[_0x7e05('0x80')](_0x2fc749[_0x7e05('0x99')])?_0x2fc749['Trunk'][_0x7e05('0x4f')]:_0x2fc749['TrunkBackup']['callerid'],_0x2fc749[_0x7e05('0x132')],_0x2fc749[_0x7e05('0x133')]>0x0?ut[_0x7e05('0x134')](_0x2fc749['dialOriginateCallerIdNumber'],_0x2fc749[_0x7e05('0x133')]):_0x2fc749[_0x7e05('0x33')]);if(_0x3b014d){_0x1690eb[_0x7e05('0x135')]=ut['extractCalleridName'](_0x3b014d);_0x1690eb[_0x7e05('0x136')]=ut[_0x7e05('0x137')](_0x3b014d);}var _0x34364f=ut[_0x7e05('0x138')](_0x2fc749,_0x22b11e,_0x2443c4,_0x3b014d,_0x83920d,_0x1690eb);_['merge'](_0x1690eb,ut[_0x7e05('0x139')](_0x34364f));_0x1690eb[_0x7e05('0x8a')]=moment()['format'](_0x7e05('0x8b'));ami[_0x7e05('0x72')](ut['variablesAction'](_0x1690eb,_0x2fc749,_0x34364f,_0x1690eb[_0x7e05('0xaa')],_0xbabcd8))[_0x7e05('0x7f')](function(_0x131ddd){var _0x7c9a45=_0x1690eb[_0x7e05('0x13a')];if(!_[_0x7e05('0x80')](_0x7c9a45)){if(!_['isNil'](_0xfa46e6[_0x7e05('0x13')][_0x7c9a45])){_0xfa46e6[_0x7e05('0x13')][_0x7c9a45][_0x7e05('0x13b')]=_0x1690eb[_0x7e05('0x13c')];emit(util[_0x7e05('0x51')](_0x7e05('0x13d'),_0xfa46e6[_0x7e05('0x13')][_0x7c9a45][_0x7e05('0x24')]),'user:agentconnect',{'destaccountcode':_0xfa46e6['agents'][_0x7c9a45][_0x7e05('0x13e')],'destconnectedlinenum':_0x1690eb['calleridnum']});}}_0x2fc749[_0x7e05('0x57')]+=0x1;logger[_0x7e05('0x67')](_0x7e05('0x13f'),_0x83920d,_0x7e05('0xb0'),_0x2fc749[_0x7e05('0x24')],_0x7e05('0x6a'),_0x2fc749['originated']);_0x34b5b2(_0x131ddd);})['catch'](function(_0x470244){ut[_0x7e05('0xf7')](_0x1690eb,0xe,_0x7e05('0x140'));rpcDb['createAgentHistory'](_0x1690eb,'[originateFailure][logOriginateFailure]');_0x5238ae(_0x470244);});});};Preview[_0x7e05('0xd')][_0x7e05('0x1b')]=function(_0x59cdfb){if(this[_0x7e05('0x66')][_0x59cdfb[_0x7e05('0xab')]]){this[_0x7e05('0x66')][_0x59cdfb['linkedid']][_0x7e05('0x74')]=_0x59cdfb[_0x7e05('0x74')];}};Preview['prototype']['syncOriginateResponse']=function(_0x51c038){var _0x32ee09=this;var _0x39ea2b=this[_0x7e05('0x66')][_0x51c038[_0x7e05('0x141')]];if(_0x39ea2b){if(_0x39ea2b['lookAgent']&&this[_0x7e05('0x13')][_0x39ea2b[_0x7e05('0x105')]]){ut[_0x7e05('0x142')](_0x39ea2b,this[_0x7e05('0x13')][_0x39ea2b['lookAgent']]['name'],this[_0x7e05('0x13')][_0x39ea2b[_0x7e05('0x105')]]['id']);}var _0x46b69=_[_0x7e05('0x143')](_0x39ea2b);_0x46b69[_0x7e05('0xad')]=moment()['format'](_0x7e05('0x8b'));var _0x2fffef=_0x32ee09[_0x7e05('0x21')][_0x39ea2b[_0x7e05('0x6c')]];if(ut[_0x7e05('0x144')](_0x51c038[_0x7e05('0x145')])){if(_0x39ea2b['unlockAgent']){rpcDb['unlockContact'](_0x39ea2b[_0x7e05('0x10b')]);}if(_0x39ea2b[_0x7e05('0xaa')]){rpcDb[_0x7e05('0x89')](_0x39ea2b['idContact']);}ami[_0x7e05('0x22')]('custom:agentringnoanswer',ut['buildObj'](_0x39ea2b,_0x7e05('0x146'),this['campaignsPreview'][_0x39ea2b['queue']]));this[_0x7e05('0xf3')](_0x46b69,_0x2fffef,_0x51c038);}else{_0x39ea2b[_0x7e05('0x8a')]=moment()[_0x7e05('0x51')](_0x7e05('0x8b'));ut[_0x7e05('0xf7')](_0x46b69,0x4,'Answer');rpcDb[_0x7e05('0xfa')](_0x46b69,'[callProgressDetectingAgent][logAnswer]');}}};Preview['prototype'][_0x7e05('0x16')]=function(_0x1acb7b){var _0x3e6283=this;var _0x4dcbae=this[_0x7e05('0x66')][_0x1acb7b['linkedid']];var _0x3e739f;if(_0x4dcbae){_0x3e739f=this[_0x7e05('0x21')][_0x4dcbae[_0x7e05('0x6c')]];logger['info'](_0x7e05('0x147'),_0x1acb7b['linkedid'],_0x7e05('0xb0'),_0x3e739f[_0x7e05('0x24')],'pTalking:\x20',_0x3e739f[_0x7e05('0x28')]);}if(this[_0x7e05('0x66')][_0x1acb7b[_0x7e05('0xab')]]&&_0x1acb7b[_0x7e05('0xab')]!==_0x1acb7b[_0x7e05('0xaf')]){if(_0x1acb7b[_0x7e05('0x148')]==='16'&&this[_0x7e05('0x66')][_0x1acb7b[_0x7e05('0xab')]]['dialAnswer']){this[_0x7e05('0x9c')](_0x1acb7b,_0x1acb7b[_0x7e05('0xab')],_0x1acb7b[_0x7e05('0x148')]);}else if(this['actions'][_0x1acb7b[_0x7e05('0xab')]][_0x7e05('0x6d')]){logger[_0x7e05('0x67')](_0x7e05('0x149'),_0x1acb7b['linkedid'],_0x1acb7b[_0x7e05('0x148')],'\x20Queue',_0x3e739f[_0x7e05('0x24')],_0x7e05('0xb1'),_0x3e739f[_0x7e05('0x28')]);this[_0x7e05('0x9c')](_0x1acb7b,_0x1acb7b[_0x7e05('0xab')],_0x1acb7b[_0x7e05('0x148')]);}}else if(_0x4dcbae&&_[_0x7e05('0x80')](_0x4dcbae['statedesc'])&&_0x3e739f[_0x7e05('0x14a')]&&_0x1acb7b[_0x7e05('0xab')]===_0x1acb7b[_0x7e05('0xaf')]&&_['isNil'](_0x1acb7b[_0x7e05('0xf6')])&&_0x1acb7b[_0x7e05('0x148')]==='16'&&_0x1acb7b[_0x7e05('0x14b')]==='6'&&_[_0x7e05('0xf4')](_0x4dcbae[_0x7e05('0x14c')])){if(_0x4dcbae[_0x7e05('0xc9')]){rpcDb[_0x7e05('0x117')](_0x4dcbae[_0x7e05('0x10b')]);}if(_0x4dcbae[_0x7e05('0xaa')]){rpcDb[_0x7e05('0x89')](_0x4dcbae[_0x7e05('0x10b')]);}_0x1acb7b[_0x7e05('0xf6')]='22';this['callProgressDetectingAgent'](_0x4dcbae,_0x3e739f,_0x1acb7b);}else if(_0x4dcbae&&_0x4dcbae['transfer']){if(_0x1acb7b[_0x7e05('0x148')]==='16'&&this[_0x7e05('0x66')][_0x1acb7b[_0x7e05('0xab')]][_0x7e05('0x6d')]){logger[_0x7e05('0x67')](_0x7e05('0x14d'),_0x1acb7b[_0x7e05('0xab')],_0x1acb7b[_0x7e05('0x148')],_0x7e05('0xb0'),_0x3e739f['name'],_0x7e05('0xb1'),_0x3e739f[_0x7e05('0x28')]);this[_0x7e05('0x9c')](_0x1acb7b,_0x1acb7b[_0x7e05('0xab')],_0x1acb7b[_0x7e05('0x148')]);}else if(this[_0x7e05('0x66')][_0x1acb7b[_0x7e05('0xab')]][_0x7e05('0x6d')]){logger[_0x7e05('0x67')](_0x7e05('0x149'),_0x1acb7b[_0x7e05('0xab')],_0x1acb7b[_0x7e05('0x148')],_0x7e05('0xb0'),_0x3e739f[_0x7e05('0x24')],'pTalking:\x20',_0x3e739f[_0x7e05('0x28')]);this['callProgressDetectingCustomer'](_0x1acb7b,_0x1acb7b['linkedid'],_0x1acb7b[_0x7e05('0x148')]);}}};Preview[_0x7e05('0xd')][_0x7e05('0x19')]=function(_0x2ec26c){if(this[_0x7e05('0x66')][_0x2ec26c['destlinkedid']]&&_0x2ec26c[_0x7e05('0x14e')]!==_0x2ec26c[_0x7e05('0x14f')]){this[_0x7e05('0x9c')](_0x2ec26c,_0x2ec26c[_0x7e05('0x14e')],_0x2ec26c[_0x7e05('0xe8')]);}};Preview[_0x7e05('0xd')]['syncHangupRequest']=function(_0x3ded35){if(this[_0x7e05('0x66')][_0x3ded35['linkedid']]&&_0x3ded35['linkedid']!==_0x3ded35[_0x7e05('0xaf')]&&!this['actions'][_0x3ded35[_0x7e05('0xab')]][_0x7e05('0x6d')]){if(_0x3ded35[_0x7e05('0x148')]==='1'){this[_0x7e05('0x9c')](_0x3ded35,_0x3ded35[_0x7e05('0xab')],_0x3ded35[_0x7e05('0x148')]);}}};Preview[_0x7e05('0xd')]['addVariable']=function(_0x3b73cc,_0x586ea1,_0x39e484){if(this[_0x7e05('0x66')][_0x3b73cc]){if(_[_0x7e05('0x80')](this[_0x7e05('0x66')][_0x3b73cc][_0x7e05('0x150')])){this[_0x7e05('0x66')][_0x3b73cc][_0x7e05('0x150')]={};}this['actions'][_0x3b73cc][_0x7e05('0x150')][_0x586ea1]=_0x39e484;}};Preview[_0x7e05('0xd')][_0x7e05('0x151')]=function(_0xbeca39){try{if(!_[_0x7e05('0x80')](_0xbeca39)){if(ut['filterKey'](_[_0x7e05('0x152')](_0xbeca39['variable'])[0x0])){this['addVariable'](_0xbeca39['uniqueid'],_[_0x7e05('0x152')](_0xbeca39[_0x7e05('0x153')])[0x0],_0xbeca39[_0x7e05('0x154')]);}}}catch(_0x1692e2){logger[_0x7e05('0x155')](_0x7e05('0x156'),util['inspect'](_0x1692e2,{'showHidden':![],'depth':null}));}};Preview[_0x7e05('0xd')][_0x7e05('0x1d')]=function(_0x264947){if(_0x264947){if(this[_0x7e05('0x66')][_0x264947[_0x7e05('0x157')]]){this['actions'][_0x264947[_0x7e05('0x157')]][_0x7e05('0x14c')]=!![];}}};Preview[_0x7e05('0xd')]['syncBlindTransfer']=function(_0x146112){if(_0x146112){if(this[_0x7e05('0x66')][_0x146112['transfererlinkedid']]){this['actions'][_0x146112['transfererlinkedid']]['transfer']=!![];}}};module['exports']=Preview;
\ No newline at end of file
+var _0x4c87=['pTalking:\x20','pick','contactId','VoiceQueueId','ListId','Action','status','channel','catch','No\x20such\x20channel','updateOriginated','dialAnswer','decrementTalkink','[clearZombieChannel]','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','[action]','size','agentReadyId','then','isNil','length','getDiff','scheduledat','dialRecallMeTimeout','Agent','voicePause','run','[RecallMe]','logger2','disableContact','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','createBody','[HistoryDialRecallInQueue][historyCatch]','createCustomerHistory','createCustomerFinal','[HistoryRecallClose]','[getContactRecallMe]','IsNotLoggedIn','AGENTS_NOT_LOGGED','isTrunkReachable','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','outboundNoSuchCallsDay','countnosuchnumberretry','countglobal','totalGlobal','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','dialGlobalMaxRetry','cloneAction','[callProgressDetectingCustomer][logNoSuchGlobal]','rescheduleContact','scheduledAt','dialNoSuchNumberRetryFrequency','unlockAgent','activeContact','linkedid','ANSWER','responsetime','uniqueid','\x20Queue','custom:agentconnect','custom:agentConnectPreview','buildAcw','buildObj','answered','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','sumDuration','talktime','[syncHangup][talking][decrement]','BUSY','Busy','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','Global','countbusyretry','dialBusyMaxRetry','dialBusyRetryFrequency','NOANSWER','countnoanswerretry','NoAnswer','custom:agentnoanswer','noanswer','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','[callProgressDetectingCustomer][logNoAnswer]','dialNoAnswerRetryFrequency','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','countcongestionretry','CANCEL','outboundRejectCallsDay','countagentrejectretry','AgentReject','custom:agentreject','[syncHangupRequest][logAgentReject]','dialAgentRejectMaxRetry','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectRetryFrequency','ABANDONED','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','dialAbandonedRetryFrequency','countmachineretry','cause-txt','dialstatus','custom:amd','[callProgressDetectingCustomer][hangupInAMD]','amd','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','originated:\x20','destlinkedid','isUndefined','object','reason','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logAnswerAGI]','[originated][decrement][callProgressDetectingAgent]','Contact','phone','Contact\x20is\x20undefined','Queue','lookAgent','isEmpty','execCall','[Preview][execCall][success]','idContact','custom:agentcalled','[Preview][execCall][failure]','Call\x20failed','outboundBlacklistCallsDay','logBlacklist','createHistory','Contact\x20in\x20black\x20List','active','SIP/%s','reachable','unmonitored','execRun','unlock','unlockContact','recallme','validateContact','isValid','checkIsBlackList','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','Empty\x20Contact','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','TrunkBackup','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','dialCutDigit','substring','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','getCallerId','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','toLowerVariables','starttime','channelAgent','destconnectedlinenum','calleridnum','user:%s','user:agentconnect','accountcode','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','syncNewExten','logLookAgent','response','custom:agentringnoanswer','callProgressDetectingAgent','syncHangup','[syncHangup][talking]','cause','[syncHangup][talking][cause]','statedesc','transfer','[syncHangup][talking][transfer]','destuniqueid','syncHangupRequest','variables','filterKey','keys','addVariable','value','error','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfererlinkedid','exports','util','lodash','bluebird','uuid','ioredis','../../../config/environment','../../../config/logger','actionPreview','../ami','./rpcDb','./action','./util/util','redis','defaults','localhost','tail','finally','sequence','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','hangup','bind','hanguprequest','dialend','syncDialEnd','newexten','syncVarSet','attendedtransfer','blindtransfer','syncBlindTransfer','loopCampaigns','campaignsPreview','type','outbound','name','available','loggedIn','pTalking','sumBillable','sumHoldTime','talking','total','unmanaged','waiting','loggedInDb','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundOriginateFailureCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangBusyFactor','startPredictive','startProgressive','Trunk','callerid','Interval','stringify','md5','voice:queue:%s','voice_queue:save','info','format','voice_queue_channel:remove','emit','voice_queue_presence:remove','sendMessageOneNotActive','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','\x20is\x20disactive','prototype','preview','dialMethod','clearZombieChannels','hasOwnProperty','dialActive','setMessage','recallMe','clearZombieChannel','enqueue','[clearZombieChannels][talking]','queue'];(function(_0x18a3ad,_0x3ea059){var _0x532d8a=function(_0xdae1e6){while(--_0xdae1e6){_0x18a3ad['push'](_0x18a3ad['shift']());}};_0x532d8a(++_0x3ea059);}(_0x4c87,0xe7));var _0x74c8=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x4c87[_0x321bb2];return _0x9c12ed;};'use strict';var util=require(_0x74c8('0x0'));var _=require(_0x74c8('0x1'));var BPromise=require(_0x74c8('0x2'));var uuid=require(_0x74c8('0x3'));var moment=require('moment');var md5=require('md5');var Redis=require(_0x74c8('0x4'));var config=require(_0x74c8('0x5'));var logger=require(_0x74c8('0x6'))('preview');var loggerAction=require(_0x74c8('0x6'))(_0x74c8('0x7'));var ami=require(_0x74c8('0x8'));var rpcDb=require(_0x74c8('0x9'));var Action=require(_0x74c8('0xa'));var ut=require(_0x74c8('0xb'));config[_0x74c8('0xc')]=_[_0x74c8('0xd')](config[_0x74c8('0xc')],{'host':_0x74c8('0xe'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x74c8('0xc')]));var Sequence=function(){};Sequence['prototype']['enqueue']=function(_0x21832a){this[_0x74c8('0xf')]=this[_0x74c8('0xf')]?this[_0x74c8('0xf')][_0x74c8('0x10')](_0x21832a):_0x21832a();};function Preview(_0x1fe42b){this[_0x74c8('0x11')]=new Sequence();this['campaignsPreview']=_0x1fe42b[_0x74c8('0x12')];this[_0x74c8('0x13')]=_0x1fe42b['trunks'];this[_0x74c8('0x14')]={};this['agents']=_0x1fe42b[_0x74c8('0x15')];this[_0x74c8('0x16')]=0x0;ami['on'](_0x74c8('0x17'),this[_0x74c8('0x18')]['bind'](this));ami['on'](_0x74c8('0x19'),this['syncHangup'][_0x74c8('0x1a')](this));ami['on'](_0x74c8('0x1b'),this['syncHangupRequest'][_0x74c8('0x1a')](this));ami['on'](_0x74c8('0x1c'),this[_0x74c8('0x1d')]['bind'](this));ami['on'](_0x74c8('0x1e'),this['syncNewExten'][_0x74c8('0x1a')](this));ami['on']('varset',this[_0x74c8('0x1f')][_0x74c8('0x1a')](this));ami['on'](_0x74c8('0x20'),this['syncAttendedTransfer'][_0x74c8('0x1a')](this));ami['on'](_0x74c8('0x21'),this[_0x74c8('0x22')]['bind'](this));this[_0x74c8('0x23')](this[_0x74c8('0x24')]);}function emit(_0x268204,_0x273833,_0x40bdad){io['to'](_0x268204)['emit'](_0x273833,_0x40bdad);}function emitCampaignPreview(_0x4eca91){if(_0x4eca91[_0x74c8('0x25')]===_0x74c8('0x26')){var _0x4a5551={'id':_0x4eca91['id'],'name':_0x4eca91[_0x74c8('0x27')],'strategy':_0x4eca91['strategy'],'answered':_0x4eca91['answered'],'available':_0x4eca91[_0x74c8('0x28')],'loggedIn':_0x4eca91[_0x74c8('0x29')],'pTalking':_0x4eca91[_0x74c8('0x2a')],'sumBillable':_0x4eca91[_0x74c8('0x2b')],'sumDuration':_0x4eca91['sumDuration'],'sumHoldTime':_0x4eca91[_0x74c8('0x2c')]||0x0,'talking':_0x4eca91[_0x74c8('0x2d')],'total':_0x4eca91[_0x74c8('0x2e')],'type':_0x4eca91[_0x74c8('0x25')],'unmanaged':_0x4eca91[_0x74c8('0x2f')],'abandoned':_0x4eca91['abandoned'],'waiting':_0x4eca91[_0x74c8('0x30')],'loggedInDb':_0x4eca91[_0x74c8('0x31')],'dialActive':_0x4eca91['dialActive'],'dialMethod':_0x4eca91['dialMethod'],'dialOriginateCallerIdName':_0x4eca91['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x4eca91[_0x74c8('0x32')],'dialOriginateTimeout':_0x4eca91[_0x74c8('0x33')],'dialPrefix':_0x4eca91[_0x74c8('0x34')],'outboundAnswerAgiCallsDay':_0x4eca91['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0x4eca91[_0x74c8('0x35')],'outboundBlacklistCallsDay':_0x4eca91['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x4eca91[_0x74c8('0x36')],'outboundCongestionCallsDay':_0x4eca91[_0x74c8('0x37')],'outboundDropCallsDayACS':_0x4eca91['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x4eca91[_0x74c8('0x38')],'outboundDropCallsDayTimeout':_0x4eca91[_0x74c8('0x39')],'outboundNoAnswerCallsDay':_0x4eca91[_0x74c8('0x3a')],'outboundNoSuchCallsDay':_0x4eca91['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x4eca91[_0x74c8('0x3b')],'outboundReCallsDay':_0x4eca91['outboundReCallsDay'],'outboundRejectCallsDay':_0x4eca91['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x4eca91[_0x74c8('0x3c')],'outboundAbandonedCallsDay':_0x4eca91[_0x74c8('0x3d')],'predictiveIntervalAnsweredCalls':_0x4eca91[_0x74c8('0x3e')],'predictiveIntervalAvgHoldtime':_0x4eca91[_0x74c8('0x3f')],'predictiveIntervalAvgTalktime':_0x4eca91[_0x74c8('0x40')],'predictiveIntervalDroppedCallsCallersExit':_0x4eca91['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x4eca91['predictiveIntervalDroppedCallsTimeout'],'predictiveIntervalErlangCalls':_0x4eca91[_0x74c8('0x41')],'predictiveIntervalErlangCallsDroppedCalls':_0x4eca91[_0x74c8('0x42')],'predictiveIntervalHitRate':_0x4eca91[_0x74c8('0x43')],'predictiveIntervalMultiplicativeFactor':_0x4eca91[_0x74c8('0x44')],'predictiveIntervalPauses':_0x4eca91[_0x74c8('0x45')],'predictiveIntervalAvailable':_0x4eca91[_0x74c8('0x46')],'predictiveIntervalTotalCalls':_0x4eca91[_0x74c8('0x47')],'message':_0x4eca91[_0x74c8('0x48')],'originated':_0x4eca91[_0x74c8('0x49')],'erlangCalls':_0x4eca91[_0x74c8('0x4a')],'erlangCallToSecond':_0x4eca91[_0x74c8('0x4b')],'erlangAbandonmentRate':_0x4eca91['erlangAbandonmentRate'],'erlangBusyFactor':_0x4eca91[_0x74c8('0x4c')],'startPredictive':_0x4eca91[_0x74c8('0x4d')],'startProgressive':_0x4eca91[_0x74c8('0x4e')]};if(_0x4eca91['Trunk']){_0x4a5551[_0x74c8('0x4f')]={'id':_0x4eca91['Trunk']['id'],'name':_0x4eca91['Trunk']['name'],'active':_0x4eca91[_0x74c8('0x4f')]['active'],'callerid':_0x4eca91['Trunk'][_0x74c8('0x50')]};}if(_0x4eca91[_0x74c8('0x51')]){_0x4a5551[_0x74c8('0x51')]={'id':_0x4eca91['Interval']['id'],'name':_0x4eca91['Interval'][_0x74c8('0x27')]};}var _0x50763b=md5(JSON[_0x74c8('0x52')](_0x4a5551));if(_0x4eca91[_0x74c8('0x53')]!==_0x50763b){_0x4eca91[_0x74c8('0x53')]=_0x50763b;emit(util['format'](_0x74c8('0x54'),_0x4a5551[_0x74c8('0x27')]),_0x74c8('0x55'),_0x4a5551);}}}function emitVoiceQueueChannelRemove(_0x54769e){logger[_0x74c8('0x56')]('[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event',JSON[_0x74c8('0x52')](_0x54769e));emit(util[_0x74c8('0x57')](_0x74c8('0x54'),_0x54769e[_0x74c8('0x27')]),_0x74c8('0x58'),_0x54769e);io[_0x74c8('0x59')](_0x74c8('0x5a'),_0x54769e);}function notSendMessagesQueue(_0x3177d2){if(_0x3177d2[_0x74c8('0x5b')]){if(_0x3177d2[_0x74c8('0x49')]===0x0&&_0x3177d2[_0x74c8('0x2a')]===0x0){_0x3177d2['sendMessageOneNotActive']=![];_0x3177d2[_0x74c8('0x28')]=0x0;_0x3177d2['paused']=0x0;_0x3177d2[_0x74c8('0x48')]=_0x74c8('0x5c');ut[_0x74c8('0x5d')](_0x74c8('0x5e'),_0x3177d2[_0x74c8('0x27')]+_0x74c8('0x5f'));}else{_0x3177d2[_0x74c8('0x48')]='IS_DISACTIVED';ut[_0x74c8('0x5d')](_0x74c8('0x5e'),_0x3177d2['name']+_0x74c8('0x60'));}emitCampaignPreview(_0x3177d2);}}Preview[_0x74c8('0x61')][_0x74c8('0x23')]=function(){var _0xa06dd3=this;setInterval(function(){_0xa06dd3['syncCampaigns']();},0x7cf);};Preview[_0x74c8('0x61')]['syncCampaigns']=function(){var _0x466592=this[_0x74c8('0x24')];this[_0x74c8('0x16')]+=0x1;for(var _0x1a6191 in _0x466592){if(_0x466592['hasOwnProperty'](_0x1a6191)&&(_0x466592[_0x1a6191]['dialMethod']===_0x74c8('0x62')||_0x466592[_0x1a6191][_0x74c8('0x63')]==='booked')&&_0x466592[_0x1a6191]['type']===_0x74c8('0x26')){if(this[_0x74c8('0x16')]>0x7){this[_0x74c8('0x16')]=0x0;this[_0x74c8('0x64')]();}}if(_0x466592[_0x74c8('0x65')](_0x1a6191)&&_0x466592[_0x1a6191][_0x74c8('0x63')]===_0x74c8('0x62')&&_0x466592[_0x1a6191][_0x74c8('0x25')]==='outbound'){if(_0x466592[_0x1a6191][_0x74c8('0x66')]){this[_0x74c8('0x67')](_0x466592[_0x1a6191]);this[_0x74c8('0x68')](_0x466592[_0x1a6191]);}else{notSendMessagesQueue(_0x466592[_0x1a6191]);}}}};Preview[_0x74c8('0x61')][_0x74c8('0x69')]=function(_0x17f743){var _0x3697ca=this;this[_0x74c8('0x11')][_0x74c8('0x6a')](function(){if(!_['isNil'](_0x3697ca[_0x74c8('0x14')][_0x17f743])){loggerAction[_0x74c8('0x56')](_0x74c8('0x6b'),_0x17f743,'Queue',_0x3697ca[_0x74c8('0x14')][_0x17f743][_0x74c8('0x6c')],'originated:\x20',JSON['stringify'](_0x3697ca[_0x74c8('0x24')][_0x3697ca[_0x74c8('0x14')][_0x17f743][_0x74c8('0x6c')]]['originated']),_0x74c8('0x6d'),JSON[_0x74c8('0x52')](_0x3697ca[_0x74c8('0x24')][_0x3697ca[_0x74c8('0x14')][_0x17f743]['queue']]['pTalking']),JSON[_0x74c8('0x52')](_0x3697ca[_0x74c8('0x14')][_0x17f743]['dialAnswer']),JSON[_0x74c8('0x52')](_[_0x74c8('0x6e')](_0x3697ca[_0x74c8('0x14')][_0x17f743],[_0x74c8('0x6f'),'UserId',_0x74c8('0x70'),_0x74c8('0x71')])));return ami[_0x74c8('0x72')]({'action':_0x74c8('0x73'),'channel':_0x3697ca[_0x74c8('0x14')][_0x17f743][_0x74c8('0x74')]})[_0x74c8('0x75')](function(_0x2360c7){if(_0x2360c7[_0x74c8('0x48')]===_0x74c8('0x76')){setTimeout(function(){if(_0x3697ca['actions'][_0x17f743]){ut[_0x74c8('0x77')](_0x3697ca[_0x74c8('0x24')][_0x3697ca[_0x74c8('0x14')][_0x17f743][_0x74c8('0x6c')]],'[clearZombieChannel]');if(_0x3697ca['actions'][_0x17f743][_0x74c8('0x78')]===!![]){ut[_0x74c8('0x79')](_0x3697ca[_0x74c8('0x24')][_0x3697ca['actions'][_0x17f743][_0x74c8('0x6c')]],_0x74c8('0x7a'));ut['loggerError'](_0x74c8('0x7b')+_0x17f743,_0x3697ca[_0x74c8('0x14')][_0x17f743][_0x74c8('0x6c')]);}ut['loggerError'](_0x74c8('0x7c')+_0x17f743,_0x3697ca['actions'][_0x17f743]['queue']);delete _0x3697ca[_0x74c8('0x14')][_0x17f743];}},0x2328);}});}});};Preview['prototype'][_0x74c8('0x64')]=function(){var _0x616abb=this;loggerAction[_0x74c8('0x56')](_0x74c8('0x7d'),_[_0x74c8('0x7e')](this[_0x74c8('0x14')]));for(var _0x5578bc in this[_0x74c8('0x14')]){if(_0x616abb[_0x74c8('0x14')][_0x74c8('0x65')](_0x5578bc)){_0x616abb[_0x74c8('0x69')](_0x5578bc);}}};Preview[_0x74c8('0x61')][_0x74c8('0x68')]=function(_0x2fa84e){var _0x5c5acb=this;rpcDb['getContactRecallMe'](_0x2fa84e['id'],ut[_0x74c8('0x7f')](this[_0x74c8('0x15')]))[_0x74c8('0x80')](function(_0x26b460){if(!_[_0x74c8('0x81')](_0x26b460)){for(var _0x2c91fd=0x0;_0x2c91fd<_0x26b460[_0x74c8('0x82')];_0x2c91fd+=0x1){if(ut[_0x74c8('0x83')](_0x26b460[_0x2c91fd][_0x74c8('0x84')])<_0x2fa84e[_0x74c8('0x85')]*0x3c){if(_0x26b460[_0x2c91fd][_0x74c8('0x86')]&&!_0x26b460[_0x2c91fd][_0x74c8('0x86')][_0x74c8('0x87')]){_0x5c5acb[_0x74c8('0x88')](_0x26b460[_0x2c91fd]['id'])['then'](ut['logger2'](_0x74c8('0x89')))[_0x74c8('0x75')](ut[_0x74c8('0x8a')](_0x74c8('0x89')));}else{rpcDb[_0x74c8('0x8b')](_0x26b460[_0x2c91fd]['id']);}}else{var _0x305a81=new Action(_0x26b460[_0x2c91fd],_0x2fa84e);_0x305a81['starttime']=moment()[_0x74c8('0x57')](_0x74c8('0x8c'));_0x2fa84e['outboundReCallsDay']+=0x1;ut[_0x74c8('0x8d')](_0x305a81,0x17,_0x74c8('0x8e'));if(_0x2fa84e['dialRecallInQueue']){rpcDb['rescheduleContactInQueue'](ut[_0x74c8('0x8f')](_0x26b460[_0x2c91fd]));rpcDb['createCustomerHistory'](_0x305a81,_0x74c8('0x90'));}else{ut[_0x74c8('0x8d')](_0x305a81,0x16,'RecallFailedTimeout');rpcDb[_0x74c8('0x91')](_0x305a81,'[HistoryRecallClose]');rpcDb[_0x74c8('0x92')](_0x305a81,_0x74c8('0x93'));}}}}})[_0x74c8('0x75')](ut[_0x74c8('0x8a')](_0x74c8('0x94')));};Preview['prototype'][_0x74c8('0x67')]=function(_0x4e5e83){_0x4e5e83[_0x74c8('0x5b')]=!![];if(ut[_0x74c8('0x95')](_0x4e5e83['loggedIn'])){_0x4e5e83[_0x74c8('0x48')]=_0x74c8('0x96');}else if(!ut['isActive'](_0x4e5e83[_0x74c8('0x66')])){_0x4e5e83[_0x74c8('0x48')]='NOT_ACTIVE';}else if(!this[_0x74c8('0x97')](_0x4e5e83[_0x74c8('0x4f')])){if(!this[_0x74c8('0x97')](_0x4e5e83['TrunkBackup'])){_0x4e5e83[_0x74c8('0x48')]=_0x74c8('0x98');}else{_0x4e5e83['message']=_0x74c8('0x99');}}else{_0x4e5e83['message']='ACTIVE';}emitCampaignPreview(_0x4e5e83);};Preview[_0x74c8('0x61')][_0x74c8('0x9a')]=function(_0x36f3c3,_0xc614fc,_0x3984a4){var _0x40a8e8=this;var _0x972762=this['actions'][_0xc614fc];var _0x1900d8=this[_0x74c8('0x24')][_0x972762['queue']];var _0xd93f5f;if(_0x1900d8){switch(_0x3984a4){case'1':_0x1900d8[_0x74c8('0x9b')]+=0x1;_0x972762[_0x74c8('0x9c')]+=0x1;_0x972762[_0x74c8('0x9d')]=ut[_0x74c8('0x9e')](_0x972762);ut[_0x74c8('0x8d')](_0x972762,0x0,_0x74c8('0x9f'));ami[_0x74c8('0x59')](_0x74c8('0xa0'),ut['buildObj'](_0x972762,_0x74c8('0xa1')));rpcDb[_0x74c8('0x91')](_0x972762,_0x74c8('0xa2'));if(ut[_0x74c8('0x9e')](_0x972762)>=_0x1900d8[_0x74c8('0xa3')]){_0xd93f5f=ut[_0x74c8('0xa4')](_0x972762,0xf,'Global');rpcDb[_0x74c8('0x92')](_0xd93f5f,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{if(_0x972762[_0x74c8('0x9c')]>=_0x1900d8['dialNoSuchNumberMaxRetry']){rpcDb[_0x74c8('0x92')](_0x972762,_0x74c8('0xa5'));}else{rpcDb[_0x74c8('0xa6')](ut[_0x74c8('0xa7')](_0x972762,'countnosuchnumberretry',_0x1900d8[_0x74c8('0xa8')]),_0x972762[_0x74c8('0xa9')],_0x972762[_0x74c8('0xaa')]);}}delete this['actions'][_0x36f3c3[_0x74c8('0xab')]];break;case _0x74c8('0xac'):var _0x2a2b3e=moment()['format'](_0x74c8('0x8c'));_0x972762[_0x74c8('0xad')]=_0x2a2b3e;_0x972762['answertime']=_0x2a2b3e;_0x972762[_0x74c8('0x78')]=!![];_0x1900d8[_0x74c8('0x2a')]+=0x1;logger[_0x74c8('0x56')]('[syncHangup][talking][increment]',_0x972762[_0x74c8('0xae')],_0x74c8('0xaf'),_0x1900d8['name'],'pTalking:\x20',_0x1900d8[_0x74c8('0x2a')]);ami[_0x74c8('0x59')](_0x74c8('0xb0'),ut['buildObj'](_0x972762,'connect',this[_0x74c8('0x24')][_0x972762[_0x74c8('0x6c')]]));if(_0x1900d8['acw']){ami[_0x74c8('0x59')](_0x74c8('0xb1'),ut[_0x74c8('0xb2')](_0x972762));}break;case'16':ami[_0x74c8('0x59')]('custom:agentcomplete',ut[_0x74c8('0xb3')](_0x972762,'complete',this[_0x74c8('0x24')][_0x972762[_0x74c8('0x6c')]]));emitVoiceQueueChannelRemove(ut[_0x74c8('0xb3')](_0x972762,'complete'));_0x1900d8['outboundAnswerCallsDay']+=0x1;_0x1900d8[_0x74c8('0x2e')]+=0x1;_0x1900d8[_0x74c8('0xb4')]+=0x1;ut[_0x74c8('0x79')](_0x1900d8,_0x74c8('0xb5'));_0x972762['countglobal']=ut[_0x74c8('0x9e')](_0x972762);ut[_0x74c8('0x8d')](_0x972762,0x4,_0x74c8('0xb6'));rpcDb[_0x74c8('0x91')](_0x972762,_0x74c8('0xb7'));rpcDb['createCustomerFinal'](_0x972762,_0x74c8('0xb8'));rpcDb[_0x74c8('0xb9')](_0x972762);_0x1900d8[_0x74c8('0xba')]+=_0x972762[_0x74c8('0xbb')];_0x1900d8['sumBillable']+=_0x972762[_0x74c8('0xbb')];logger['info'](_0x74c8('0xbc'),_0x972762[_0x74c8('0xae')],_0x74c8('0xaf'),_0x1900d8[_0x74c8('0x27')],_0x74c8('0x6d'),_0x1900d8[_0x74c8('0x2a')]);delete this[_0x74c8('0x14')][_0x36f3c3[_0x74c8('0xab')]];break;case _0x74c8('0xbd'):_0x1900d8[_0x74c8('0x36')]+=0x1;_0x972762['countbusyretry']+=0x1;_0x972762[_0x74c8('0x9d')]=ut['totalGlobal'](_0x972762);ut[_0x74c8('0x8d')](_0x972762,0x5,_0x74c8('0xbe'));ami[_0x74c8('0x59')](_0x74c8('0xbf'),ut[_0x74c8('0xb3')](_0x972762,_0x74c8('0xc0')));rpcDb[_0x74c8('0x91')](_0x972762,_0x74c8('0xc1'));if(ut[_0x74c8('0x9e')](_0x972762)>=_0x1900d8['dialGlobalMaxRetry']){_0xd93f5f=ut[_0x74c8('0xa4')](_0x972762,0xf,_0x74c8('0xc2'));rpcDb['createCustomerFinal'](_0xd93f5f,'[callProgressDetectingCustomer][logBusyGlobal]');}else{if(_0x972762[_0x74c8('0xc3')]>=_0x1900d8[_0x74c8('0xc4')]){rpcDb[_0x74c8('0x92')](_0x972762,_0x74c8('0xc1'));}else{rpcDb[_0x74c8('0xa6')](ut[_0x74c8('0xa7')](_0x972762,_0x74c8('0xc3'),_0x1900d8[_0x74c8('0xc5')]),_0x972762[_0x74c8('0xa9')],_0x972762[_0x74c8('0xaa')]);}}break;case _0x74c8('0xc6'):_0x1900d8[_0x74c8('0x3a')]+=0x1;_0x972762[_0x74c8('0xc7')]+=0x1;_0x972762[_0x74c8('0x9d')]=ut[_0x74c8('0x9e')](_0x972762);ut['logCustomer'](_0x972762,0x3,_0x74c8('0xc8'));ami['emit'](_0x74c8('0xc9'),ut['buildObj'](_0x972762,_0x74c8('0xca')));rpcDb['createCustomerHistory'](_0x972762,'[callProgressDetectingCustomer][logNoAnswer]');if(ut[_0x74c8('0x9e')](_0x972762)>=_0x1900d8[_0x74c8('0xa3')]){_0xd93f5f=ut['cloneAction'](_0x972762,0xf,'Global');rpcDb[_0x74c8('0x92')](_0xd93f5f,_0x74c8('0xcb'));}else{if(_0x972762[_0x74c8('0xc7')]>=_0x1900d8[_0x74c8('0xcc')]){rpcDb[_0x74c8('0x92')](_0x972762,_0x74c8('0xcd'));}else{rpcDb[_0x74c8('0xa6')](ut[_0x74c8('0xa7')](_0x972762,_0x74c8('0xc7'),_0x1900d8[_0x74c8('0xce')]),_0x972762[_0x74c8('0xa9')],_0x972762[_0x74c8('0xaa')]);}}break;case'CONGESTION':_0x1900d8['outboundCongestionCallsDay']+=0x1;_0x972762['countcongestionretry']+=0x1;_0x972762[_0x74c8('0x9d')]=ut[_0x74c8('0x9e')](_0x972762);ut['logCustomer'](_0x972762,0x8,'Congestion');ami[_0x74c8('0x59')]('custom:agentcongestion',ut['buildObj'](_0x972762,_0x74c8('0xcf')));rpcDb[_0x74c8('0x91')](_0x972762,_0x74c8('0xd0'));if(ut[_0x74c8('0x9e')](_0x972762)>=_0x1900d8['dialGlobalMaxRetry']){_0xd93f5f=ut[_0x74c8('0xa4')](_0x972762,0xf,_0x74c8('0xc2'));rpcDb[_0x74c8('0x92')](_0xd93f5f,_0x74c8('0xd1'));}else{if(_0x972762['countcongestionretry']>=_0x1900d8[_0x74c8('0xd2')]){rpcDb[_0x74c8('0x92')](_0x972762,_0x74c8('0xd0'));}else{rpcDb['rescheduleContact'](ut[_0x74c8('0xa7')](_0x972762,_0x74c8('0xd3'),_0x1900d8[_0x74c8('0xc5')]),_0x972762['unlockAgent'],_0x972762[_0x74c8('0xaa')]);}}break;case _0x74c8('0xd4'):_0x1900d8[_0x74c8('0xd5')]+=0x1;_0x972762[_0x74c8('0xd6')]+=0x1;_0x972762[_0x74c8('0x9d')]=ut[_0x74c8('0x9e')](_0x972762);ut[_0x74c8('0x8d')](_0x972762,0x14,_0x74c8('0xd7'));ami['emit'](_0x74c8('0xd8'),ut[_0x74c8('0xb3')](_0x972762,'agentreject'));rpcDb[_0x74c8('0x91')](_0x972762,_0x74c8('0xd9'));if(ut[_0x74c8('0x9e')](_0x972762)>=_0x1900d8[_0x74c8('0xa3')]){_0xd93f5f=ut[_0x74c8('0xa4')](_0x972762,0x14,_0x74c8('0xd7'));rpcDb[_0x74c8('0x92')](_0xd93f5f,'[callProgressDetectingCustomer][logAgentReject]');}else{if(_0x972762['countagentrejectretry']>=_0x1900d8[_0x74c8('0xda')]){rpcDb['createCustomerFinal'](_0x972762,_0x74c8('0xdb'));}else{rpcDb[_0x74c8('0xa6')](ut['scheduledAt'](_0x972762,'countagentrejectretry',_0x1900d8[_0x74c8('0xdc')]),_0x972762[_0x74c8('0xa9')],_0x972762[_0x74c8('0xaa')]);}}break;case _0x74c8('0xdd'):_0x1900d8[_0x74c8('0x3d')]+=0x1;_0x972762[_0x74c8('0xde')]+=0x1;_0x972762[_0x74c8('0x9d')]=ut[_0x74c8('0x9e')](_0x972762);ut[_0x74c8('0x8d')](_0x972762,0xb,_0x74c8('0xdf'));rpcDb[_0x74c8('0x91')](_0x972762,_0x74c8('0xe0'));if(ut['totalGlobal'](_0x972762)>=_0x1900d8['dialGlobalMaxRetry']){_0xd93f5f=ut[_0x74c8('0xa4')](_0x972762,0xf,_0x74c8('0xc2'));rpcDb['createCustomerFinal'](_0xd93f5f,_0x74c8('0xe0'));}else{if(_0x972762[_0x74c8('0xe1')]>=_0x1900d8[_0x74c8('0xe2')]){rpcDb[_0x74c8('0x92')](_0x972762,_0x74c8('0xe0'));}else{rpcDb[_0x74c8('0xa6')](ut[_0x74c8('0xa7')](_0x972762,_0x74c8('0xde'),_0x1900d8[_0x74c8('0xe3')]),_0x972762[_0x74c8('0xa9')],_0x972762['activeContact']);}}break;case'18':_0x1900d8['outboundUnknownCallsDay']+=0x1;_0x972762[_0x74c8('0xe4')]+=0x1;_0x972762[_0x74c8('0x9d')]=ut[_0x74c8('0x9e')](_0x972762);ut['logCustomer'](_0x972762,0x12,_0x36f3c3[_0x74c8('0xe5')]||_0x36f3c3[_0x74c8('0xe6')]);ami[_0x74c8('0x59')](_0x74c8('0xe7'),ut[_0x74c8('0xb3')](_0x972762,'amd'));rpcDb[_0x74c8('0x91')](_0x972762,_0x74c8('0xe8'));if(ut[_0x74c8('0x9e')](_0x972762)>=_0x1900d8[_0x74c8('0xa3')]){_0xd93f5f=ut[_0x74c8('0xa4')](_0x972762,0xf,'Global');rpcDb[_0x74c8('0x92')](_0xd93f5f,'[callProgressDetectingCustomer][hangupInAMD]');}else{rpcDb[_0x74c8('0x92')](_0x972762,_0x74c8('0xe8'));}delete this[_0x74c8('0x14')][_0x36f3c3['linkedid']];break;case'19':_0x1900d8[_0x74c8('0x3c')]+=0x1;_0x972762[_0x74c8('0x9d')]=ut[_0x74c8('0x9e')](_0x972762);ut['logCustomer'](_0x972762,0x13,_0x36f3c3[_0x74c8('0xe5')]||_0x36f3c3[_0x74c8('0xe6')]);ami[_0x74c8('0x59')](_0x74c8('0xe7'),ut[_0x74c8('0xb3')](_0x972762,_0x74c8('0xe9')));rpcDb[_0x74c8('0x91')](_0x972762,_0x74c8('0xea'));if(ut[_0x74c8('0x9e')](_0x972762)>=_0x1900d8[_0x74c8('0xa3')]){_0xd93f5f=ut[_0x74c8('0xa4')](_0x972762,0xf,_0x74c8('0xc2'));rpcDb[_0x74c8('0x92')](_0xd93f5f,_0x74c8('0xea'));}else{rpcDb['createCustomerFinal'](_0x972762,_0x74c8('0xea'));}delete this[_0x74c8('0x14')][_0x36f3c3['linkedid']];break;default:if(_0x972762['dialAnswer']){ut[_0x74c8('0x79')](_0x1900d8,_0x74c8('0xeb'));ut['loggerError'](_0x74c8('0xec')+_0x1900d8[_0x74c8('0x27')],_0x36f3c3);}_0x1900d8[_0x74c8('0x3c')]+=0x1;_0x972762[_0x74c8('0x9d')]=ut[_0x74c8('0x9e')](_0x972762);ut[_0x74c8('0x8d')](_0x972762,0xc,_0x36f3c3['cause-txt']||_0x36f3c3[_0x74c8('0xe6')]);rpcDb['createCustomerHistory'](_0x972762,_0x74c8('0xed'));if(ut['totalGlobal'](_0x972762)>=_0x1900d8['dialGlobalMaxRetry']){_0xd93f5f=ut['cloneAction'](_0x972762,0xf,_0x74c8('0xc2'));rpcDb[_0x74c8('0x92')](_0xd93f5f,_0x74c8('0xee'));}else{rpcDb[_0x74c8('0x92')](_0x972762,_0x74c8('0xee'));}delete this['actions'][_0x36f3c3[_0x74c8('0xab')]];}if(!(_0x972762[_0x74c8('0x78')]&&_0x3984a4==='16')){ut[_0x74c8('0x77')](_0x1900d8,_0x74c8('0xef'));logger[_0x74c8('0x56')](_0x74c8('0xf0'),_0x972762[_0x74c8('0xae')],_0x74c8('0xaf'),_0x1900d8[_0x74c8('0x27')],_0x74c8('0xf1'),_0x1900d8[_0x74c8('0x49')]);}if(_0x3984a4!==_0x74c8('0xac')){delete this['actions'][_0x36f3c3[_0x74c8('0xab')]];delete this[_0x74c8('0x14')][_0x36f3c3[_0x74c8('0xf2')]];}}};Preview['prototype']['callProgressDetectingAgent']=function(_0xe46524,_0x261621,_0x2516f8){if(_[_0x74c8('0xf3')](_0x261621)&&_0x74c8('0xf4')!==typeof _0x261621){return;}if(_[_0x74c8('0xf3')](_0x2516f8)&&_0x74c8('0xf4')!==typeof _0x2516f8){return;}switch(_0x2516f8[_0x74c8('0xf5')]){case'0':ut[_0x74c8('0xf6')](_0xe46524,0x0,_0x74c8('0x9f'));rpcDb[_0x74c8('0xf7')](_0xe46524,'[callProgressDetectingAgent][logNoSuch]');break;case'3':ut[_0x74c8('0xf6')](_0xe46524,0x3,'NoAnswer');rpcDb[_0x74c8('0xf7')](_0xe46524,_0x74c8('0xf8'));break;case'5':ut[_0x74c8('0xf6')](_0xe46524,0x5,'Busy');rpcDb['createAgentHistory'](_0xe46524,_0x74c8('0xf9'));break;case'8':ut['logAgent'](_0xe46524,0x8,'Congestion');rpcDb['createAgentHistory'](_0xe46524,'[callProgressDetectingAgent][logCongestion]');break;case'22':ut[_0x74c8('0xf6')](_0xe46524,0x16,'AnswerAGI');rpcDb[_0x74c8('0xf7')](_0xe46524,_0x74c8('0xfa'));break;default:ut[_0x74c8('0xf6')](_0xe46524,0xc,_0x2516f8['reason']);rpcDb[_0x74c8('0xf7')](_0xe46524,'[callProgressDetectingAgent][logCongestion]');}ut[_0x74c8('0x77')](_0x261621,'[callProgressDetectingAgent]');logger[_0x74c8('0x56')](_0x74c8('0xfb'),_0xe46524[_0x74c8('0xae')],_0x74c8('0xaf'),_0x261621['name'],_0x74c8('0xf1'),_0x261621[_0x74c8('0x49')]);delete this[_0x74c8('0x14')][_0xe46524[_0x74c8('0xae')]];};Preview[_0x74c8('0x61')]['checkInBlack']=function(_0x398c7a,_0x261355,_0x371386,_0x1b227c,_0x355889){var _0x3cf062=this;return new BPromise(function(_0x39fa2c,_0x28a2bb){if(_[_0x74c8('0x81')](_0x261355)||_['isNil'](_0x261355[_0x74c8('0xfc')])||_['isNil'](_0x261355[_0x74c8('0xfc')][_0x74c8('0xfd')])||_[_0x74c8('0x81')](_0x261355[_0x74c8('0x70')])){_0x28a2bb(ut[_0x74c8('0x48')](_0x74c8('0xfe'),_0x1b227c,_0x355889));return;}var _0x51c03c=uuid['v4']();var _0x2a3526=_0x3cf062['campaignsPreview'][_0x261355[_0x74c8('0xff')]['name']];var _0x4cb4be=_0x371386?_0x3cf062['agents'][_0x371386]['id']:undefined;_0x3cf062[_0x74c8('0x14')][_0x51c03c]=new Action(_0x261355,_0x2a3526,_0x51c03c,_0x371386,_0x4cb4be);var _0x48a470=_0x3cf062[_0x74c8('0x14')][_0x51c03c];_0x48a470[_0x74c8('0xa9')]=_0x1b227c;_0x48a470[_0x74c8('0xaa')]=_0x355889;_0x48a470[_0x74c8('0x100')]=_0x371386;if(_[_0x74c8('0x101')](_0x398c7a)){_0x3cf062[_0x74c8('0x102')](_0x48a470,_0x2a3526,_0x261355,_0x371386)[_0x74c8('0x80')](function(_0x483595){logger[_0x74c8('0x56')](_0x74c8('0x103'),'Queue:\x20'+_0x48a470[_0x74c8('0x6c')]+'\x20IdHopper:\x20'+_0x48a470[_0x74c8('0x104')],JSON[_0x74c8('0x52')](_0x483595));ami[_0x74c8('0x59')](_0x74c8('0x105'),ut[_0x74c8('0xb3')](_0x48a470,'called',_0x3cf062[_0x74c8('0x24')][_0x48a470[_0x74c8('0x6c')]]));_0x39fa2c(ut['message']('Calling'));})[_0x74c8('0x75')](function(_0x36537e){ut[_0x74c8('0x5d')](_0x74c8('0x106'),_0x36537e);_0x28a2bb(ut['message'](_0x74c8('0x107'),_0x1b227c,_0x355889));});}else{_0x2a3526[_0x74c8('0x108')]+=0x1;ut[_0x74c8('0x109')](_0x48a470);rpcDb[_0x74c8('0x10a')](_0x48a470,'[Blacklist][error]');delete _0x3cf062['actions'][_0x51c03c];_0x28a2bb(ut[_0x74c8('0x48')](_0x74c8('0x10b'),_0x1b227c,_0x355889));}});};Preview[_0x74c8('0x61')]['isTrunkReachable']=function(_0xb7ce4c){return!_['isNil'](_0xb7ce4c)&&!_[_0x74c8('0x81')](_0xb7ce4c[_0x74c8('0x27')])&&!_['isNil'](_0xb7ce4c[_0x74c8('0x10c')])&&_0xb7ce4c[_0x74c8('0x10c')]&&!_[_0x74c8('0x81')](this[_0x74c8('0x13')][util[_0x74c8('0x57')](_0x74c8('0x10d'),_0xb7ce4c[_0x74c8('0x27')])])&&!_[_0x74c8('0x81')](this[_0x74c8('0x13')][util['format'](_0x74c8('0x10d'),_0xb7ce4c[_0x74c8('0x27')])][_0x74c8('0x73')])&&(this[_0x74c8('0x13')][util[_0x74c8('0x57')](_0x74c8('0x10d'),_0xb7ce4c['name'])]['status']===_0x74c8('0x10e')||this[_0x74c8('0x13')][util['format']('SIP/%s',_0xb7ce4c[_0x74c8('0x27')])][_0x74c8('0x73')]===_0x74c8('0x10f'));};Preview[_0x74c8('0x61')]['run']=function(_0x5caaa2,_0x36decc){var _0x183bc0=this;return new BPromise(function(_0xbb5c5d,_0x234916){_0x183bc0[_0x74c8('0x110')](_0x5caaa2,_0x36decc)[_0x74c8('0x80')](function(_0x5514d1){_0xbb5c5d(_[_0x74c8('0x6e')](_0x5514d1,[_0x74c8('0x48')]));})[_0x74c8('0x75')](function(_0x32d856){if(_0x32d856[_0x74c8('0x111')]){rpcDb[_0x74c8('0x112')](_0x5caaa2);}if(_0x32d856[_0x74c8('0x10c')]){rpcDb[_0x74c8('0x8b')](_0x5caaa2);}_0x234916(_[_0x74c8('0x6e')](_0x32d856,['message']));});});};Preview['prototype'][_0x74c8('0x110')]=function(_0x3f2faf,_0x456b08){var _0x2d864f=this;return new BPromise(function(_0x325d03,_0x3c5473){var _0x54cca6,_0x21b461;rpcDb['getContactPreview'](_0x3f2faf)[_0x74c8('0x80')](function(_0x58abe3){if(!_[_0x74c8('0x81')](_0x58abe3[0x0])){_0x21b461=_0x58abe3[0x0]['recallme']?![]:!![];_0x54cca6=_0x58abe3[0x0][_0x74c8('0x113')]?!![]:![];_0x54cca6=_0x456b08?!![]:_0x54cca6;}var _0x104325=_0x2d864f[_0x74c8('0x114')](_0x58abe3);if(_0x104325[_0x74c8('0x115')]){rpcDb[_0x74c8('0x116')](_[_0x74c8('0x6e')](_0x58abe3[0x0],[_0x74c8('0x70'),'Contact.phone']))[_0x74c8('0x80')](function(_0x4518d1){_0x2d864f['checkInBlack'](_0x4518d1,_0x58abe3[0x0],_0x456b08,_0x21b461,_0x54cca6)['then'](function(_0x20c912){_0x325d03(_0x20c912);})[_0x74c8('0x75')](function(_0x20d05){_0x3c5473(_0x20d05);});})[_0x74c8('0x75')](function(_0x6498ed){ut[_0x74c8('0x5d')](_0x74c8('0x117'),_0x6498ed);_0x3c5473(ut[_0x74c8('0x48')](_0x74c8('0x118'),_0x21b461,_0x54cca6));});}else{_0x3c5473(ut[_0x74c8('0x48')](_0x104325['message'],_0x21b461,_0x54cca6));}})['catch'](function(_0x5a7182){ut[_0x74c8('0x5d')](_0x74c8('0x119'),_0x5a7182);_0x3c5473(ut[_0x74c8('0x48')](_0x74c8('0x118'),![],!![]));});});};Preview[_0x74c8('0x61')][_0x74c8('0x114')]=function(_0x177f6e){if(_['isNil'](_0x177f6e)||_['isEmpty'](_0x177f6e)||!_[_0x74c8('0x81')](_0x177f6e[0x0][_0x74c8('0x86')])&&_[_0x74c8('0x81')](_0x177f6e[0x0][_0x74c8('0x86')][_0x74c8('0x27')])){ut[_0x74c8('0x5d')]('[Preview][validateContact][Empty\x20Contact]',_0x177f6e);return{'isValid':![],'message':_0x74c8('0x11a')};}var _0x5c5204=this['campaignsPreview'][_0x177f6e[0x0][_0x74c8('0xff')][_0x74c8('0x27')]];_0x5c5204[_0x74c8('0x48')]=_0x74c8('0x99');if(_[_0x74c8('0x81')](_0x5c5204)){ut['logger']('[Preview][validateContact][Empty\x20Campaign]',_0x5c5204);return{'isValid':![],'message':_0x74c8('0x11b')};}if(!this['isTrunkReachable'](_0x5c5204[_0x74c8('0x4f')])){ut[_0x74c8('0x5d')](_0x74c8('0x11c'),_0x74c8('0x11d')+_0x5c5204['name']+_0x74c8('0x11e'));if(!this[_0x74c8('0x97')](_0x5c5204[_0x74c8('0x11f')])){ut[_0x74c8('0x5d')](_0x74c8('0x11c'),_0x5c5204['name']+_0x74c8('0x120'));return{'isValid':![],'message':_0x74c8('0x121')};}}if(!ut['isActive'](_0x5c5204[_0x74c8('0x66')])){ut[_0x74c8('0x5d')](_0x74c8('0x122'),_0x5c5204[_0x74c8('0x27')]+_0x74c8('0x123'));return{'isValid':![],'message':'campaign\x20Name:\x20'+_0x5c5204[_0x74c8('0x27')]+_0x74c8('0x123')};}return{'isValid':!![],'message':_0x74c8('0x124')};};Preview[_0x74c8('0x61')][_0x74c8('0x102')]=function(_0x1a6c67,_0x5c244d,_0x32347c,_0x504742){var _0x54046c=this;return new BPromise(function(_0x3a64c5,_0xbc37f8){var _0x126822=_0x1a6c67[_0x74c8('0xae')];var _0x5520c1=_0x54046c['isTrunkReachable'](_0x5c244d[_0x74c8('0x4f')])?util[_0x74c8('0x57')](_0x74c8('0x125'),_0x5c244d[_0x74c8('0x4f')]['name'],_[_0x74c8('0x81')](_0x5c244d[_0x74c8('0x34')])?'':_0x5c244d[_0x74c8('0x34')]['trim']()||'',_0x5c244d[_0x74c8('0x126')]>0x0?_0x32347c[_0x74c8('0xfc')][_0x74c8('0xfd')][_0x74c8('0x127')](_0x5c244d[_0x74c8('0x126')]):_0x32347c[_0x74c8('0xfc')][_0x74c8('0xfd')]):util[_0x74c8('0x57')](_0x74c8('0x125'),_[_0x74c8('0x81')](_0x5c244d['TrunkBackup'])?_0x5c244d['Trunk'][_0x74c8('0x27')]:_0x5c244d[_0x74c8('0x11f')]['name'],_[_0x74c8('0x81')](_0x5c244d['dialPrefix'])?'':_0x5c244d[_0x74c8('0x34')]['trim']()||'',_0x5c244d[_0x74c8('0x126')]>0x0?_0x32347c['Contact'][_0x74c8('0xfd')][_0x74c8('0x127')](_0x5c244d[_0x74c8('0x126')]):_0x32347c[_0x74c8('0xfc')]['phone']);var _0x3e8f6a=_0x54046c[_0x74c8('0x97')](_0x5c244d['Trunk'])?ut['getCallerId'](_0x5c244d['Trunk']['callerid'],_0x5c244d[_0x74c8('0x128')],_0x5c244d[_0x74c8('0x129')]>0x0?ut[_0x74c8('0x12a')](_0x5c244d[_0x74c8('0x32')],_0x5c244d[_0x74c8('0x129')]):_0x5c244d[_0x74c8('0x32')]):ut[_0x74c8('0x12b')](_[_0x74c8('0x81')](_0x5c244d[_0x74c8('0x11f')])?_0x5c244d[_0x74c8('0x4f')][_0x74c8('0x50')]:_0x5c244d[_0x74c8('0x11f')][_0x74c8('0x50')],_0x5c244d[_0x74c8('0x128')],_0x5c244d['dialRandomLastDigitCallerIdNumber']>0x0?ut[_0x74c8('0x12a')](_0x5c244d[_0x74c8('0x32')],_0x5c244d[_0x74c8('0x129')]):_0x5c244d[_0x74c8('0x32')]);if(_0x3e8f6a){_0x1a6c67['originatecalleridname']=ut[_0x74c8('0x12c')](_0x3e8f6a);_0x1a6c67[_0x74c8('0x12d')]=ut[_0x74c8('0x12e')](_0x3e8f6a);}var _0x2dc454=ut[_0x74c8('0x12f')](_0x5c244d,_0x32347c,_0x5520c1,_0x3e8f6a,_0x126822,_0x1a6c67);_['merge'](_0x1a6c67,ut[_0x74c8('0x130')](_0x2dc454));_0x1a6c67[_0x74c8('0x131')]=moment()['format'](_0x74c8('0x8c'));ami[_0x74c8('0x72')](ut['variablesAction'](_0x1a6c67,_0x5c244d,_0x2dc454,_0x1a6c67[_0x74c8('0xaa')],_0x504742))['then'](function(_0x2f0a12){var _0x5b7d58=_0x1a6c67[_0x74c8('0x132')];if(!_[_0x74c8('0x81')](_0x5b7d58)){if(!_[_0x74c8('0x81')](_0x54046c['agents'][_0x5b7d58])){_0x54046c[_0x74c8('0x15')][_0x5b7d58][_0x74c8('0x133')]=_0x1a6c67[_0x74c8('0x134')];emit(util['format'](_0x74c8('0x135'),_0x54046c[_0x74c8('0x15')][_0x5b7d58]['name']),_0x74c8('0x136'),{'destaccountcode':_0x54046c[_0x74c8('0x15')][_0x5b7d58][_0x74c8('0x137')],'destconnectedlinenum':_0x1a6c67[_0x74c8('0x134')]});}}_0x5c244d[_0x74c8('0x49')]+=0x1;logger['info'](_0x74c8('0x138'),_0x126822,_0x74c8('0xaf'),_0x5c244d[_0x74c8('0x27')],_0x74c8('0xf1'),_0x5c244d[_0x74c8('0x49')]);_0x3a64c5(_0x2f0a12);})[_0x74c8('0x75')](function(_0x366814){ut[_0x74c8('0xf6')](_0x1a6c67,0xe,_0x74c8('0x139'));rpcDb[_0x74c8('0xf7')](_0x1a6c67,_0x74c8('0x13a'));_0xbc37f8(_0x366814);});});};Preview['prototype'][_0x74c8('0x13b')]=function(_0x177005){if(this['actions'][_0x177005[_0x74c8('0xab')]]){this['actions'][_0x177005['linkedid']][_0x74c8('0x74')]=_0x177005['channel'];}};Preview['prototype'][_0x74c8('0x18')]=function(_0x394a16){var _0x4d02e2=this;var _0xf74987=this[_0x74c8('0x14')][_0x394a16['actionid']];if(_0xf74987){if(_0xf74987[_0x74c8('0x100')]&&this[_0x74c8('0x15')][_0xf74987[_0x74c8('0x100')]]){ut[_0x74c8('0x13c')](_0xf74987,this['agents'][_0xf74987[_0x74c8('0x100')]][_0x74c8('0x27')],this[_0x74c8('0x15')][_0xf74987[_0x74c8('0x100')]]['id']);}var _0x16cc3c=_['clone'](_0xf74987);_0x16cc3c[_0x74c8('0xad')]=moment()[_0x74c8('0x57')]('YYYY-MM-DD\x20HH:mm:ss');var _0x33bbb0=_0x4d02e2[_0x74c8('0x24')][_0xf74987['queue']];if(ut['isFailure'](_0x394a16[_0x74c8('0x13d')])){if(_0xf74987['unlockAgent']){rpcDb[_0x74c8('0x112')](_0xf74987[_0x74c8('0x104')]);}if(_0xf74987[_0x74c8('0xaa')]){rpcDb['disableContact'](_0xf74987[_0x74c8('0x104')]);}ami[_0x74c8('0x59')](_0x74c8('0x13e'),ut[_0x74c8('0xb3')](_0xf74987,'rejected',this['campaignsPreview'][_0xf74987[_0x74c8('0x6c')]]));this[_0x74c8('0x13f')](_0x16cc3c,_0x33bbb0,_0x394a16);}else{_0xf74987[_0x74c8('0x131')]=moment()['format'](_0x74c8('0x8c'));ut['logAgent'](_0x16cc3c,0x4,_0x74c8('0xb6'));rpcDb[_0x74c8('0xf7')](_0x16cc3c,'[callProgressDetectingAgent][logAnswer]');}}};Preview[_0x74c8('0x61')][_0x74c8('0x140')]=function(_0x3e9a61){var _0x15c0df=this;var _0x5df5ce=this[_0x74c8('0x14')][_0x3e9a61['linkedid']];var _0x36f561;if(_0x5df5ce){_0x36f561=this[_0x74c8('0x24')][_0x5df5ce[_0x74c8('0x6c')]];logger[_0x74c8('0x56')](_0x74c8('0x141'),_0x3e9a61['linkedid'],'\x20Queue',_0x36f561[_0x74c8('0x27')],_0x74c8('0x6d'),_0x36f561[_0x74c8('0x2a')]);}if(this['actions'][_0x3e9a61[_0x74c8('0xab')]]&&_0x3e9a61[_0x74c8('0xab')]!==_0x3e9a61['uniqueid']){if(_0x3e9a61['cause']==='16'&&this['actions'][_0x3e9a61[_0x74c8('0xab')]]['dialAnswer']){this[_0x74c8('0x9a')](_0x3e9a61,_0x3e9a61[_0x74c8('0xab')],_0x3e9a61[_0x74c8('0x142')]);}else if(this[_0x74c8('0x14')][_0x3e9a61[_0x74c8('0xab')]][_0x74c8('0x78')]){logger[_0x74c8('0x56')](_0x74c8('0x143'),_0x3e9a61[_0x74c8('0xab')],_0x3e9a61['cause'],_0x74c8('0xaf'),_0x36f561['name'],_0x74c8('0x6d'),_0x36f561[_0x74c8('0x2a')]);this[_0x74c8('0x9a')](_0x3e9a61,_0x3e9a61[_0x74c8('0xab')],_0x3e9a61['cause']);}}else if(_0x5df5ce&&_[_0x74c8('0x81')](_0x5df5ce[_0x74c8('0x144')])&&_0x36f561['dialQueueProject']&&_0x3e9a61[_0x74c8('0xab')]===_0x3e9a61['uniqueid']&&_[_0x74c8('0x81')](_0x3e9a61[_0x74c8('0xf5')])&&_0x3e9a61[_0x74c8('0x142')]==='16'&&_0x3e9a61['channelstate']==='6'&&_['isUndefined'](_0x5df5ce[_0x74c8('0x145')])){if(_0x5df5ce[_0x74c8('0xa9')]){rpcDb[_0x74c8('0x112')](_0x5df5ce[_0x74c8('0x104')]);}if(_0x5df5ce[_0x74c8('0xaa')]){rpcDb[_0x74c8('0x8b')](_0x5df5ce[_0x74c8('0x104')]);}_0x3e9a61['reason']='22';this['callProgressDetectingAgent'](_0x5df5ce,_0x36f561,_0x3e9a61);}else if(_0x5df5ce&&_0x5df5ce[_0x74c8('0x145')]){if(_0x3e9a61['cause']==='16'&&this[_0x74c8('0x14')][_0x3e9a61['linkedid']][_0x74c8('0x78')]){logger[_0x74c8('0x56')](_0x74c8('0x146'),_0x3e9a61[_0x74c8('0xab')],_0x3e9a61['cause'],_0x74c8('0xaf'),_0x36f561[_0x74c8('0x27')],_0x74c8('0x6d'),_0x36f561['pTalking']);this[_0x74c8('0x9a')](_0x3e9a61,_0x3e9a61[_0x74c8('0xab')],_0x3e9a61['cause']);}else if(this[_0x74c8('0x14')][_0x3e9a61[_0x74c8('0xab')]][_0x74c8('0x78')]){logger['info'](_0x74c8('0x143'),_0x3e9a61[_0x74c8('0xab')],_0x3e9a61[_0x74c8('0x142')],_0x74c8('0xaf'),_0x36f561[_0x74c8('0x27')],_0x74c8('0x6d'),_0x36f561[_0x74c8('0x2a')]);this[_0x74c8('0x9a')](_0x3e9a61,_0x3e9a61[_0x74c8('0xab')],_0x3e9a61[_0x74c8('0x142')]);}}};Preview['prototype'][_0x74c8('0x1d')]=function(_0x4dbb65){if(this[_0x74c8('0x14')][_0x4dbb65[_0x74c8('0xf2')]]&&_0x4dbb65[_0x74c8('0xf2')]!==_0x4dbb65[_0x74c8('0x147')]){this[_0x74c8('0x9a')](_0x4dbb65,_0x4dbb65[_0x74c8('0xf2')],_0x4dbb65[_0x74c8('0xe6')]);}};Preview['prototype'][_0x74c8('0x148')]=function(_0x3b83bf){if(this[_0x74c8('0x14')][_0x3b83bf['linkedid']]&&_0x3b83bf[_0x74c8('0xab')]!==_0x3b83bf[_0x74c8('0xae')]&&!this[_0x74c8('0x14')][_0x3b83bf['linkedid']][_0x74c8('0x78')]){if(_0x3b83bf[_0x74c8('0x142')]==='1'){this[_0x74c8('0x9a')](_0x3b83bf,_0x3b83bf[_0x74c8('0xab')],_0x3b83bf[_0x74c8('0x142')]);}}};Preview['prototype']['addVariable']=function(_0x38762c,_0x568c29,_0x2f34aa){if(this[_0x74c8('0x14')][_0x38762c]){if(_[_0x74c8('0x81')](this[_0x74c8('0x14')][_0x38762c]['variables'])){this[_0x74c8('0x14')][_0x38762c]['variables']={};}this[_0x74c8('0x14')][_0x38762c][_0x74c8('0x149')][_0x568c29]=_0x2f34aa;}};Preview['prototype'][_0x74c8('0x1f')]=function(_0x2cb893){try{if(!_['isNil'](_0x2cb893)){if(ut[_0x74c8('0x14a')](_[_0x74c8('0x14b')](_0x2cb893['variable'])[0x0])){this[_0x74c8('0x14c')](_0x2cb893[_0x74c8('0xae')],_['keys'](_0x2cb893['variable'])[0x0],_0x2cb893[_0x74c8('0x14d')]);}}}catch(_0x405df3){logger[_0x74c8('0x14e')](_0x74c8('0x14f'),util[_0x74c8('0x150')](_0x405df3,{'showHidden':![],'depth':null}));}};Preview[_0x74c8('0x61')]['syncAttendedTransfer']=function(_0x6bf780){if(_0x6bf780){if(this[_0x74c8('0x14')][_0x6bf780[_0x74c8('0x151')]]){this[_0x74c8('0x14')][_0x6bf780['transfertargetlinkedid']][_0x74c8('0x145')]=!![];}}};Preview[_0x74c8('0x61')][_0x74c8('0x22')]=function(_0x18e7cf){if(_0x18e7cf){if(this[_0x74c8('0x14')][_0x18e7cf[_0x74c8('0x152')]]){this['actions'][_0x18e7cf[_0x74c8('0x152')]][_0x74c8('0x145')]=!![];}}};module[_0x74c8('0x153')]=Preview;
\ No newline at end of file
index 2727ade..6c7ca1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b99=['type','uniqueid','calleridnum','queue','queuecallerjoinAt','queuecallerleaveAt','answertime','queuecallercomplete','queuecallercompleteAt','membername','from-sip','exten','xcally-motion-preview','holdtime','assigned','lastAssignedTo','queuecallerexitreason','create','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','bluebird','../../../config/logger','preview','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','resolve','then','catch','[createHistory]\x20','createHistory','moveContactManagedDialer','[moveContactManagedDialer]\x20','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerFinal','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','disableContact','[activeContact]\x20','crateCustomerReportQueue'];(function(_0x580576,_0x2f107d){var _0x3f55a0=function(_0x2e180b){while(--_0x2e180b){_0x580576['push'](_0x580576['shift']());}};_0x3f55a0(++_0x2f107d);}(_0x2b99,0x179));var _0x92b9=function(_0x16d10f,_0x2ba2d5){_0x16d10f=_0x16d10f-0x0;var _0x50c823=_0x2b99[_0x16d10f];return _0x50c823;};'use strict';var util=require(_0x92b9('0x0'));var BPromise=require(_0x92b9('0x1'));var logger=require(_0x92b9('0x2'))(_0x92b9('0x3'));var _=require(_0x92b9('0x4'));var cmHopper=require(_0x92b9('0x5'));var cmHopperFinal=require(_0x92b9('0x6'));var cmHopperHistory=require(_0x92b9('0x7'));var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0x92b9('0x8'));var agentReportPreview=require(_0x92b9('0x9'));var voiceQueueReport=require(_0x92b9('0xa'));function loggerCatch(_0x3fb596){return function(_0xaefc61){logger[_0x92b9('0xb')](_0x3fb596,util[_0x92b9('0xc')](_0xaefc61,{'showHidden':![],'depth':null}));};}function create(_0x1b7e97){return BPromise[_0x92b9('0xd')]()[_0x92b9('0xe')](cmHopperHistory['createHistory'](_0x1b7e97))[_0x92b9('0xf')](loggerCatch(_0x92b9('0x10')));}function createAgent(_0x2cf7cd){return BPromise['resolve']()[_0x92b9('0xe')](agentReportPreview[_0x92b9('0x11')](_0x2cf7cd))[_0x92b9('0xf')](loggerCatch(_0x92b9('0x10')));}function moveContact(_0x18f61a){return BPromise['resolve']()[_0x92b9('0xe')](cmHopper[_0x92b9('0x12')](_0x18f61a,!![]))[_0x92b9('0xf')](loggerCatch(_0x92b9('0x13')));}exports['checkIsBlackList']=function(_0x54aec7){return BPromise[_0x92b9('0xd')]()['then'](cmHopperBlack['checkIsBlackList'](_0x54aec7))[_0x92b9('0xf')](loggerCatch(_0x92b9('0x14')));};exports['getContactPreview']=function(_0x3a8460){return BPromise[_0x92b9('0xd')]()[_0x92b9('0xe')](cmHopper[_0x92b9('0x15')](_0x3a8460))[_0x92b9('0xf')](loggerCatch(_0x92b9('0x16')));};exports[_0x92b9('0x11')]=function(_0x185037,_0x4ac617){create(_0x185037)['catch'](loggerCatch(_0x4ac617));moveContact(_0x185037)[_0x92b9('0xf')](loggerCatch(_0x4ac617));};exports[_0x92b9('0x17')]=function(_0x661dfc,_0x5dcb3b){createAgent(_0x661dfc)['catch'](loggerCatch(_0x5dcb3b));};exports['createCustomerHistory']=function(_0x418ce2,_0x2dac18){create(_0x418ce2)[_0x92b9('0xf')](loggerCatch(_0x2dac18));};exports[_0x92b9('0x18')]=function(_0x4655c4,_0x635c1f){moveContact(_0x4655c4)['catch'](loggerCatch(_0x635c1f));};exports[_0x92b9('0x19')]=function(_0x322b2a,_0x46f0c2,_0x3f283e){if(_0x46f0c2){_0x322b2a[_0x92b9('0x1a')]=null;}if(_0x3f283e){_0x322b2a[_0x92b9('0x1b')]=![];}return BPromise['resolve']()['then'](cmHopper[_0x92b9('0x19')](_0x322b2a))[_0x92b9('0xf')](loggerCatch(_0x92b9('0x1c')));};exports[_0x92b9('0x1d')]=function(_0x16ffc6){return BPromise[_0x92b9('0xd')]()[_0x92b9('0xe')](cmHopper[_0x92b9('0x1d')](_0x16ffc6))[_0x92b9('0xf')](loggerCatch(_0x92b9('0x1e')));};exports[_0x92b9('0x1f')]=function(_0x50c695){return BPromise[_0x92b9('0xd')]()[_0x92b9('0xe')](cmHopper[_0x92b9('0x1f')]({'UserId':null},_0x50c695,0x1))['catch'](loggerCatch(_0x92b9('0x20')));};exports[_0x92b9('0x21')]=function(_0x763ff6){return BPromise[_0x92b9('0xd')]()[_0x92b9('0xe')](cmHopper[_0x92b9('0x1f')]({'active':![]},_0x763ff6,0x1))[_0x92b9('0xf')](loggerCatch(_0x92b9('0x22')));};exports[_0x92b9('0x23')]=function(_0x2c136a){var _0x1277da={};_0x1277da[_0x92b9('0x24')]=_0x2c136a[_0x92b9('0x24')];_0x1277da[_0x92b9('0x25')]=_0x2c136a[_0x92b9('0x25')];_0x1277da[_0x92b9('0x26')]=_0x2c136a[_0x92b9('0x26')];_0x1277da['calleridname']=_0x2c136a['calleridname'];_0x1277da[_0x92b9('0x27')]=_0x2c136a[_0x92b9('0x27')];_0x1277da[_0x92b9('0x28')]=_0x2c136a['answertime'];_0x1277da[_0x92b9('0x29')]=_0x2c136a[_0x92b9('0x2a')];_0x1277da[_0x92b9('0x2b')]=0x1;_0x1277da[_0x92b9('0x2c')]=_0x2c136a['endtime'];_0x1277da['connectedlinename']=_0x2c136a[_0x92b9('0x2d')];_0x1277da['context']=_0x92b9('0x2e');_0x1277da[_0x92b9('0x2f')]=_0x92b9('0x30');_0x1277da[_0x92b9('0x31')]=0x0;_0x1277da[_0x92b9('0x32')]=0x1;_0x1277da[_0x92b9('0x33')]=_0x2c136a[_0x92b9('0x2d')];_0x1277da[_0x92b9('0x34')]='COMPLETED';return BPromise['resolve']()['then'](voiceQueueReport[_0x92b9('0x35')](_0x1277da))['catch'](loggerCatch(_0x92b9('0x36')));};exports[_0x92b9('0x37')]=function(_0x5bf687,_0x176933){return BPromise[_0x92b9('0xd')]()[_0x92b9('0xe')](cmHopper['getContactRecallMe'](_0x5bf687,_0x176933))[_0x92b9('0xf')](loggerCatch(_0x92b9('0x38')));};exports[_0x92b9('0x39')]=function(_0x259ffe){return BPromise[_0x92b9('0xd')]()[_0x92b9('0xe')](cmHopper[_0x92b9('0x19')](_0x259ffe,!![],!![]))['catch'](loggerCatch(_0x92b9('0x3a')));};
\ No newline at end of file
+var _0xace9=['[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt','endtime','connectedlinename','membername','context','from-sip','exten','xcally-motion-preview','holdtime','assigned','lastAssignedTo','queuecallerexitreason','COMPLETED','[voiceQueueReport]\x20','getContactRecallMe','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','bluebird','../../../config/logger','preview','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperBlack','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','then','createHistory','catch','[createHistory]\x20','resolve','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','disableContact'];(function(_0x598408,_0x5e6f74){var _0x560720=function(_0x56a96d){while(--_0x56a96d){_0x598408['push'](_0x598408['shift']());}};_0x560720(++_0x5e6f74);}(_0xace9,0x1c0));var _0x9ace=function(_0x1d598a,_0x927c9f){_0x1d598a=_0x1d598a-0x0;var _0x33b4e6=_0xace9[_0x1d598a];return _0x33b4e6;};'use strict';var util=require(_0x9ace('0x0'));var BPromise=require(_0x9ace('0x1'));var logger=require(_0x9ace('0x2'))(_0x9ace('0x3'));var _=require(_0x9ace('0x4'));var cmHopper=require(_0x9ace('0x5'));var cmHopperFinal=require(_0x9ace('0x6'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require(_0x9ace('0x7'));var voiceQueueRt=require('../rpc/voiceQueueRt');var agentReportPreview=require(_0x9ace('0x8'));var voiceQueueReport=require(_0x9ace('0x9'));function loggerCatch(_0x593662){return function(_0x3f6dd7){logger[_0x9ace('0xa')](_0x593662,util[_0x9ace('0xb')](_0x3f6dd7,{'showHidden':![],'depth':null}));};}function create(_0x51493b){return BPromise['resolve']()[_0x9ace('0xc')](cmHopperHistory[_0x9ace('0xd')](_0x51493b))[_0x9ace('0xe')](loggerCatch(_0x9ace('0xf')));}function createAgent(_0x1c774a){return BPromise['resolve']()[_0x9ace('0xc')](agentReportPreview['createHistory'](_0x1c774a))[_0x9ace('0xe')](loggerCatch('[createHistory]\x20'));}function moveContact(_0x50638a){return BPromise[_0x9ace('0x10')]()['then'](cmHopper[_0x9ace('0x11')](_0x50638a,!![]))[_0x9ace('0xe')](loggerCatch(_0x9ace('0x12')));}exports[_0x9ace('0x13')]=function(_0x33a5a6){return BPromise[_0x9ace('0x10')]()[_0x9ace('0xc')](cmHopperBlack[_0x9ace('0x13')](_0x33a5a6))['catch'](loggerCatch(_0x9ace('0x14')));};exports[_0x9ace('0x15')]=function(_0x3ed23d){return BPromise[_0x9ace('0x10')]()[_0x9ace('0xc')](cmHopper[_0x9ace('0x15')](_0x3ed23d))[_0x9ace('0xe')](loggerCatch(_0x9ace('0x16')));};exports['createHistory']=function(_0xfec378,_0x3ce4e7){create(_0xfec378)[_0x9ace('0xe')](loggerCatch(_0x3ce4e7));moveContact(_0xfec378)[_0x9ace('0xe')](loggerCatch(_0x3ce4e7));};exports[_0x9ace('0x17')]=function(_0x16d7b6,_0x18144c){createAgent(_0x16d7b6)[_0x9ace('0xe')](loggerCatch(_0x18144c));};exports['createCustomerHistory']=function(_0x231fee,_0x2bb914){create(_0x231fee)[_0x9ace('0xe')](loggerCatch(_0x2bb914));};exports['createCustomerFinal']=function(_0x2e26e2,_0x3b58db){moveContact(_0x2e26e2)[_0x9ace('0xe')](loggerCatch(_0x3b58db));};exports[_0x9ace('0x18')]=function(_0x508b78,_0x4841fa,_0x33a75a){if(_0x4841fa){_0x508b78[_0x9ace('0x19')]=null;}if(_0x33a75a){_0x508b78[_0x9ace('0x1a')]=![];}return BPromise[_0x9ace('0x10')]()['then'](cmHopper[_0x9ace('0x18')](_0x508b78))[_0x9ace('0xe')](loggerCatch(_0x9ace('0x1b')));};exports[_0x9ace('0x1c')]=function(_0x521095){return BPromise[_0x9ace('0x10')]()[_0x9ace('0xc')](cmHopper[_0x9ace('0x1c')](_0x521095))[_0x9ace('0xe')](loggerCatch(_0x9ace('0x1d')));};exports[_0x9ace('0x1e')]=function(_0x26c6a1){return BPromise[_0x9ace('0x10')]()[_0x9ace('0xc')](cmHopper[_0x9ace('0x1e')]({'UserId':null},_0x26c6a1,0x1))[_0x9ace('0xe')](loggerCatch('[unlockContact]\x20'));};exports[_0x9ace('0x1f')]=function(_0x2baf96){return BPromise[_0x9ace('0x10')]()[_0x9ace('0xc')](cmHopper['unlockContact']({'active':![]},_0x2baf96,0x1))[_0x9ace('0xe')](loggerCatch(_0x9ace('0x20')));};exports[_0x9ace('0x21')]=function(_0x1aa2fc){var _0x39ec70={};_0x39ec70[_0x9ace('0x22')]=_0x1aa2fc['type'];_0x39ec70[_0x9ace('0x23')]=_0x1aa2fc[_0x9ace('0x23')];_0x39ec70[_0x9ace('0x24')]=_0x1aa2fc[_0x9ace('0x24')];_0x39ec70[_0x9ace('0x25')]=_0x1aa2fc[_0x9ace('0x25')];_0x39ec70[_0x9ace('0x26')]=_0x1aa2fc[_0x9ace('0x26')];_0x39ec70[_0x9ace('0x27')]=_0x1aa2fc[_0x9ace('0x28')];_0x39ec70[_0x9ace('0x29')]=_0x1aa2fc[_0x9ace('0x28')];_0x39ec70[_0x9ace('0x2a')]=0x1;_0x39ec70[_0x9ace('0x2b')]=_0x1aa2fc[_0x9ace('0x2c')];_0x39ec70[_0x9ace('0x2d')]=_0x1aa2fc[_0x9ace('0x2e')];_0x39ec70[_0x9ace('0x2f')]=_0x9ace('0x30');_0x39ec70[_0x9ace('0x31')]=_0x9ace('0x32');_0x39ec70[_0x9ace('0x33')]=0x0;_0x39ec70[_0x9ace('0x34')]=0x1;_0x39ec70[_0x9ace('0x35')]=_0x1aa2fc[_0x9ace('0x2e')];_0x39ec70[_0x9ace('0x36')]=_0x9ace('0x37');return BPromise['resolve']()[_0x9ace('0xc')](voiceQueueReport['create'](_0x39ec70))[_0x9ace('0xe')](loggerCatch(_0x9ace('0x38')));};exports[_0x9ace('0x39')]=function(_0x52912b,_0x3ceb1c){return BPromise['resolve']()[_0x9ace('0xc')](cmHopper[_0x9ace('0x39')](_0x52912b,_0x3ceb1c))[_0x9ace('0xe')](loggerCatch('[GetContactRecallMe]\x20'));};exports[_0x9ace('0x3a')]=function(_0x5cf5b2){return BPromise[_0x9ace('0x10')]()[_0x9ace('0xc')](cmHopper['rescheduleContact'](_0x5cf5b2,!![],!![]))[_0x9ace('0xe')](loggerCatch(_0x9ace('0x3b')));};
\ No newline at end of file
index af02a80..9d19792 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7175=['countnosuchnumberretry','cloneAction','clone','Global','active','scheduledat','add','minutes','ListId','VoiceQueueId','decrementTalkink','pTalking','buildObj','lastevent','interface','motionChannel','voice','mandatoryDisposition','buildAcw','queue','agentReadyId','reachable','push','getDiff','diff','CampaignId','filterKey','idContact','type','campaigntype','dialAnswer','callback','callbackuniqueid','callbackat','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqosbridged','rtpaudioqosjitterbridged','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','replace','random','match','extractCalleridNumber','util','lodash','moment','../../../../config/logger','preview','127.0.0.1','milliseconds','seconds','loggerCatch','inspect','logger','loggerError','error','info','message','getCallerId','isUndefined','isEmpty','format','\x22%s\x22\x20<%s>','string','\x22\x22\x20<>','isActive','isNil','addVariables','Queue','name','calleridname','calleridnum','ContactId','dialOriginateTimeout','\x22rtTxX%s%s\x22','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','dialQueueProject2','NONE','originatecalleridname','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','tags','createdAt','updatedAt','%s%s','toUpper','toLowerVariables','toLower','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','starttime','responsetime','endtime','logAgent','ringtime','logLookAgent','membername','UserId','logCustomer','talktime','answertime','isFailure','Failure','variablesAction','RECALL','BOOKED','uniqueid','originate','channelAgent','xcally-motion-preview','from-sip','totalGlobal','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry'];(function(_0x4489f2,_0x1f9128){var _0x5cc527=function(_0x44201f){while(--_0x44201f){_0x4489f2['push'](_0x4489f2['shift']());}};_0x5cc527(++_0x1f9128);}(_0x7175,0xd1));var _0x5717=function(_0x41cd34,_0x32cd0c){_0x41cd34=_0x41cd34-0x0;var _0x1273e8=_0x7175[_0x41cd34];return _0x1273e8;};'use strict';var util=require(_0x5717('0x0'));var _=require(_0x5717('0x1'));var moment=require(_0x5717('0x2'));var logger=require(_0x5717('0x3'))(_0x5717('0x4'));var ipAgi=process['env']['XCALLY_IP_AGI']||_0x5717('0x5');function getSeconds(_0x4f2b03,_0x3c4975){var _0x437960=moment(_0x4f2b03)['milliseconds'](0x0);var _0x49a5f3=moment(_0x3c4975)[_0x5717('0x6')](0x0);return _0x437960['diff'](_0x49a5f3,_0x5717('0x7'));}exports[_0x5717('0x8')]=function(_0x279d3c){return function(_0x5beb96){logger['error'](_0x279d3c,util[_0x5717('0x9')](_0x5beb96,{'showHidden':![],'depth':null}));};};exports[_0x5717('0xa')]=function(_0x586d95,_0x3de0fb){logger['info'](_0x586d95,util['inspect'](_0x3de0fb,{'showHidden':![],'depth':null}));};exports[_0x5717('0xb')]=function(_0x1a853e,_0xa8b2bc){logger[_0x5717('0xc')](_0x1a853e,util['inspect'](_0xa8b2bc,{'showHidden':![],'depth':null}));};exports['logger2']=function(_0x139f32){return function(_0x39cb88){logger[_0x5717('0xd')](_0x139f32,util[_0x5717('0x9')](_0x39cb88,{'showHidden':![],'depth':null}));};};exports[_0x5717('0xe')]=function(_0x478881,_0x27b863,_0x26b130){return{'message':_0x478881,'unlock':_0x27b863,'active':_0x26b130};};exports[_0x5717('0xf')]=function(_0x4ce64c,_0xa9a990,_0x230a09){if(!_[_0x5717('0x10')](_0x230a09)&&'string'===typeof _0x230a09&&!_['isEmpty'](_0x230a09)){if(!_[_0x5717('0x10')](_0xa9a990)&&'string'===typeof _0xa9a990&&!_[_0x5717('0x11')](_0xa9a990)){return util[_0x5717('0x12')]('\x22%s\x22\x20<%s>',_0xa9a990,_0x230a09);}return util['format'](_0x5717('0x13'),_0x230a09,_0x230a09);}if(!_['isUndefined'](_0x4ce64c)&&_0x5717('0x14')===typeof _0x4ce64c&&!_[_0x5717('0x11')](_0x4ce64c)){return _0x4ce64c;}return _0x5717('0x15');};exports[_0x5717('0x16')]=function(_0x137469){if(_[_0x5717('0x17')](_0x137469)){return![];}return _0x137469;};exports[_0x5717('0x18')]=function(_0x3cc538,_0x2b8619,_0xff36c1,_0x1f8f23,_0x41cd78,_0x5901ec){var _0x5a10e8={'XMD-QUEUE':_0x2b8619[_0x5717('0x19')]?_0x2b8619['Queue'][_0x5717('0x1a')]:'','XMD-CALLERID':_0x1f8f23,'XMD-CALLERID-PREVIEW':_0x5901ec?util[_0x5717('0x12')](_0x5717('0x13'),_0x5901ec[_0x5717('0x1b')],_0x5901ec[_0x5717('0x1c')]):_0x1f8f23,'XMD-DIALID':_0x41cd78,'XMD-CONTACTID':_0x2b8619[_0x5717('0x1d')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x1f8f23,'XMD-VOICEQUEUEID':_0x2b8619['VoiceQueueId'],'XMD-DIALCHANNEL':_0xff36c1,'XMD-DIALTIMEOUT':_0x3cc538[_0x5717('0x1e')]||0x1e,'XMD-DIALOPTIONS':util[_0x5717('0x12')](_0x5717('0x1f'),_0x3cc538['dialQueueProject2']?'g':'',_[_0x5717('0x11')](_0x3cc538[_0x5717('0x20')])?'':_0x5717('0x21')),'XMD-DIALURL':_0x3cc538[_0x5717('0x22')]||'','XMD-AGI':_0x3cc538[_0x5717('0x23')]?util[_0x5717('0x12')](_0x5717('0x24'),ipAgi,_0x3cc538[_0x5717('0x23')]):'NONE','XMD-AGIAFTER':_0x3cc538['dialQueueProject2']?util[_0x5717('0x12')](_0x5717('0x24'),ipAgi,_0x3cc538[_0x5717('0x25')]):_0x5717('0x26'),'XMD-ORIGINATECALLERIDNUM':_0x5901ec?_0x5901ec['originatecalleridnum']:'','XMD-ORIGINATECALLERIDNAME':_0x5901ec?_0x5901ec[_0x5717('0x27')]:'','XMD-DESTINATION':'xcally-motion-preview'};if(!_[_0x5717('0x11')](_0x3cc538[_0x5717('0x20')])){_0x5a10e8[util['format']('%s',_0x5717('0x28'))]=_0x3cc538[_0x5717('0x20')];_0x5a10e8[util[_0x5717('0x12')]('%s',_0x5717('0x29'))]=_0x41cd78;}if(_0x2b8619&&_0x2b8619[_0x5717('0x2a')]){for(var _0x12dbb5 in _0x2b8619[_0x5717('0x2a')]){if(_0x2b8619['Contact'][_0x5717('0x2b')](_0x12dbb5)){if(!_[_0x5717('0x17')](_0x2b8619['Contact'][_0x12dbb5])&&_0x12dbb5!=='id'&&_0x12dbb5!==_0x5717('0x2c')&&_0x12dbb5!==_0x5717('0x2d')&&_0x12dbb5!==_0x5717('0x2e')){_0x5a10e8[util[_0x5717('0x12')](_0x5717('0x2f'),'XMD-',_[_0x5717('0x30')](_0x12dbb5))]=_0x2b8619['Contact'][_0x12dbb5];}}}}return _0x5a10e8;};exports[_0x5717('0x31')]=function(_0x23b43e){var _0x2a6886={};for(var _0x89b205 in _0x23b43e){if(_0x23b43e[_0x5717('0x2b')](_0x89b205)){_0x2a6886[util[_0x5717('0x12')]('%s',_[_0x5717('0x32')](_0x89b205))]=_0x23b43e[_0x89b205];}}return{'variables':_0x2a6886};};exports['updateOriginated']=function(_0x3823e5,_0x4aa036){if(!_[_0x5717('0x17')](_0x3823e5)){if(_0x3823e5[_0x5717('0x2b')](_0x5717('0x33'))){if(_0x3823e5['originated']>0x0){_0x3823e5[_0x5717('0x33')]-=0x1;}else{logger[_0x5717('0xc')](_0x5717('0x34'),_0x4aa036);}}}else{logger['error'](_0x5717('0x35'),_0x4aa036);}};exports[_0x5717('0x36')]=function(_0x151987){var _0x57e718=moment()[_0x5717('0x12')](_0x5717('0x37'));_0x151987[_0x5717('0x38')]=0xd;_0x151987[_0x5717('0x39')]=_0x5717('0x3a');_0x151987[_0x5717('0x3b')]=_0x57e718;_0x151987[_0x5717('0x3c')]=_0x57e718;_0x151987[_0x5717('0x3d')]=_0x57e718;};exports[_0x5717('0x3e')]=function(_0xb1cca1,_0x39afea,_0x2b852b){var _0x24f032=moment()[_0x5717('0x12')](_0x5717('0x37'));_0xb1cca1[_0x5717('0x38')]=_0x39afea;_0xb1cca1['statedesc']=_0x2b852b;_0xb1cca1['responsetime']=_0x24f032;_0xb1cca1[_0x5717('0x3f')]=getSeconds(_0xb1cca1['responsetime'],_0xb1cca1['starttime']);};exports[_0x5717('0x40')]=function(_0x11a551,_0xdcc327,_0x17842a){_0x11a551[_0x5717('0x41')]=_0xdcc327;_0x11a551[_0x5717('0x42')]=_0x17842a;};exports[_0x5717('0x43')]=function(_0xd8184,_0x1743c4,_0x57f0d5){var _0x4cf707=moment()[_0x5717('0x12')](_0x5717('0x37'));_0xd8184[_0x5717('0x38')]=_0x1743c4;_0xd8184[_0x5717('0x39')]=_0x57f0d5;_0xd8184[_0x5717('0x3c')]=_0xd8184[_0x5717('0x3c')]?_0xd8184[_0x5717('0x3c')]:_0x4cf707;_0xd8184[_0x5717('0x3d')]=_0xd8184['endtime']?_0xd8184[_0x5717('0x3d')]:_0x4cf707;_0xd8184[_0x5717('0x3f')]=getSeconds(_0xd8184[_0x5717('0x3c')]||0x0,_0xd8184[_0x5717('0x3b')]||0x0);_0xd8184[_0x5717('0x44')]=_0xd8184[_0x5717('0x45')]?getSeconds(_0xd8184[_0x5717('0x3d')],_0xd8184[_0x5717('0x45')]):0x0;};exports[_0x5717('0x46')]=function(_0x984300){return _0x984300===_0x5717('0x47');};exports[_0x5717('0x48')]=function(_0x3448f2,_0x5a1165,_0x39060c,_0x524115,_0x364d6e){var _0x2469b3=_0x524115?_0x5717('0x49'):_0x3448f2['calleridname'];_0x2469b3=_0x364d6e?_0x5717('0x4a'):_0x2469b3;return{'actionid':_0x3448f2[_0x5717('0x4b')],'action':_0x5717('0x4c'),'channel':_0x3448f2[_0x5717('0x4d')],'callerid':util['format'](_0x5717('0x13'),_0x2469b3,_0x3448f2['calleridnum']),'Exten':_0x5717('0x4e'),'Context':_0x5717('0x4f'),'Priority':'1','variable':_0x39060c,'timeout':(_0x5a1165['timeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x3448f2[_0x5717('0x4b')]};};exports[_0x5717('0x50')]=function(_0x42d63d){return _0x42d63d[_0x5717('0x51')]+_0x42d63d[_0x5717('0x52')]+_0x42d63d[_0x5717('0x53')]+_0x42d63d[_0x5717('0x54')]+_0x42d63d[_0x5717('0x55')];};exports[_0x5717('0x56')]=function(_0xe72216){var _0x5ecf01=_[_0x5717('0x57')](_0xe72216);_0x5ecf01[_0x5717('0x38')]=0xf;_0x5ecf01[_0x5717('0x39')]=_0x5717('0x58');return _0x5ecf01;};exports['scheduledAt']=function(_0x4271cb,_0x47a38c,_0x332519){var _0x28f475={};_0x28f475[_0x47a38c]=_0x4271cb[_0x47a38c];_0x28f475[_0x5717('0x59')]=![];_0x28f475[_0x5717('0x5a')]=moment()[_0x5717('0x5b')](_0x332519,_0x5717('0x5c'))['format'](_0x5717('0x37'));_0x28f475[_0x5717('0x1d')]=_0x4271cb[_0x5717('0x1d')];_0x28f475['ListId']=_0x4271cb[_0x5717('0x5d')];_0x28f475[_0x5717('0x5e')]=_0x4271cb[_0x5717('0x5e')]||undefined;return _0x28f475;};exports[_0x5717('0x5f')]=function(_0x3e3f70,_0x6a67ff){if(!_['isNil'](_0x3e3f70)){if(_0x3e3f70[_0x5717('0x60')]>0x0){_0x3e3f70[_0x5717('0x60')]-=0x1;}else{logger['error'](_0x6a67ff,'[decrementTalkink]\x20object\x20talking\x20is\x20negative');}}else{logger[_0x5717('0xc')](_0x6a67ff,'[decrementTalkink]\x20is\x20null\x20or\x20undefined');}};exports['IsNotLoggedIn']=function(_0x5f72f0){if(_0x5f72f0<=0x0){return!![];}return![];};exports[_0x5717('0x61')]=function(_0x129cd1,_0x2fc632,_0x267f55){_0x129cd1[_0x5717('0x62')]=_0x2fc632;_0x129cd1[_0x5717('0x1a')]=_0x129cd1['queue'];_0x129cd1[_0x5717('0x63')]=_0x129cd1[_0x5717('0x4d')];_0x129cd1[_0x5717('0x64')]=_0x5717('0x65');if(_0x267f55){_0x129cd1[_0x5717('0x66')]=_0x267f55[_0x5717('0x66')];}return _0x129cd1;};exports[_0x5717('0x67')]=function(_0x2fe089){var _0x2f2220={};_0x2f2220['queue']=_0x2fe089[_0x5717('0x68')];_0x2f2220[_0x5717('0x63')]=_0x2fe089[_0x5717('0x4d')];_0x2f2220[_0x5717('0x4b')]=_0x2fe089['uniqueid'];return _0x2f2220;};exports[_0x5717('0x69')]=function(_0x27700b){var _0x25c67b=[];for(var _0x303e09 in _0x27700b){if(_0x27700b[_0x5717('0x2b')](_0x303e09)){if(!_[_0x5717('0x17')](_0x27700b[_0x303e09])&&_0x27700b[_0x303e09][_0x5717('0x38')]==='not_inuse'&&_0x27700b[_0x303e09]['status']===_0x5717('0x6a')){_0x25c67b[_0x5717('0x6b')](_0x27700b[_0x303e09]['id']);}}}return _0x25c67b;};exports[_0x5717('0x6c')]=function(_0x907607){var _0x1356f2=moment()[_0x5717('0x6')](0x0);var _0x2ac5f7=moment(_0x907607)['milliseconds'](0x0);return _0x1356f2[_0x5717('0x6d')](_0x2ac5f7,_0x5717('0x7'));};exports['createBody']=function(_0x168081){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x168081[_0x5717('0x1d')],'ListId':_0x168081['ListId'],'VoiceQueueId':_0x168081[_0x5717('0x5e')]||undefined,'CampaignId':_0x168081[_0x5717('0x6e')]||undefined};};exports[_0x5717('0x6f')]=function(_0x1c45bf){if(_0x1c45bf===_0x5717('0x4b')||_0x1c45bf===_0x5717('0x70')||_0x1c45bf===_0x5717('0x68')||_0x1c45bf===_0x5717('0x71')||_0x1c45bf===_0x5717('0x72')||_0x1c45bf===_0x5717('0x73')||_0x1c45bf===_0x5717('0x41')||_0x1c45bf==='channelAgent'||_0x1c45bf===_0x5717('0x1b')||_0x1c45bf==='active'||_0x1c45bf==='calleridnum'||_0x1c45bf===_0x5717('0x5a')||_0x1c45bf===_0x5717('0x51')||_0x1c45bf===_0x5717('0x52')||_0x1c45bf===_0x5717('0x53')||_0x1c45bf==='countglobal'||_0x1c45bf===_0x5717('0x74')||_0x1c45bf===_0x5717('0x75')||_0x1c45bf===_0x5717('0x76')||_0x1c45bf==='recallme'||_0x1c45bf===_0x5717('0x1d')||_0x1c45bf===_0x5717('0x5d')||_0x1c45bf===_0x5717('0x42')||_0x1c45bf===_0x5717('0x5e')||_0x1c45bf==='sipcallid'||_0x1c45bf===_0x5717('0x77')||_0x1c45bf===_0x5717('0x78')||_0x1c45bf===_0x5717('0x79')||_0x1c45bf===_0x5717('0x7a')||_0x1c45bf===_0x5717('0x7b')||_0x1c45bf===_0x5717('0x7c')||_0x1c45bf===_0x5717('0x7d')||_0x1c45bf===_0x5717('0x7e')||_0x1c45bf==='xmd-dialchannel'||_0x1c45bf==='xmd-contactid'||_0x1c45bf===_0x5717('0x7f')||_0x1c45bf===_0x5717('0x80')||_0x1c45bf===_0x5717('0x81')||_0x1c45bf===_0x5717('0x82')||_0x1c45bf===_0x5717('0x83')||_0x1c45bf==='rtpaudioqosbridged'||_0x1c45bf===_0x5717('0x84')||_0x1c45bf==='rtpaudioqosjitterbridged'||_0x1c45bf===_0x5717('0x85')||_0x1c45bf===_0x5717('0x86')||_0x1c45bf===_0x5717('0x87')||_0x1c45bf===_0x5717('0x88')||_0x1c45bf===_0x5717('0x83')||_0x1c45bf===_0x5717('0x89')||_0x1c45bf===_0x5717('0x84')||_0x1c45bf===_0x5717('0x8a')||_0x1c45bf===_0x5717('0x85')||_0x1c45bf==='rtpaudioqoslossbridged'||_0x1c45bf===_0x5717('0x87')||_0x1c45bf===_0x5717('0x88')||_0x1c45bf==='bridgepeer'||_0x1c45bf===_0x5717('0x8b')||_0x1c45bf===_0x5717('0x38')||_0x1c45bf===_0x5717('0x39')){return![];}return!![];};exports[_0x5717('0x8c')]=function(_0x1217b6,_0x519b3e){var _0x150604,_0x220465,_0x599986;if(_0x519b3e<=0x0){_0x519b3e=0x1;}_0x150604=new RegExp(_0x5717('0x8d')+_0x519b3e+'}$');_0x220465=Math['pow'](0xa,_0x519b3e-0x1);_0x599986=Math[_0x5717('0x8e')](0xa,_0x519b3e)-0x1;return util['format']('%s',_[_0x5717('0x8f')](_0x1217b6,_0x150604,_[_0x5717('0x90')](_0x220465,_0x599986)));};exports['extractCalleridName']=function(_0x22de3c){var _0x3d0258=_0x22de3c[_0x5717('0x91')](/"(.*?)"/);return _0x3d0258?_0x3d0258[0x1]:_0x22de3c;};exports[_0x5717('0x92')]=function(_0x2a7a9e){var _0x1a8399=_0x2a7a9e['match'](/<(.*?)>/);return _0x1a8399?_0x1a8399[0x1]:_0x2a7a9e;};
\ No newline at end of file
+var _0x41b2=['VoiceQueueId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','lastevent','queue','interface','mandatoryDisposition','not_inuse','reachable','push','createBody','CampaignId','filterKey','idContact','dialAnswer','countglobal','callback','callbackuniqueid','callbackat','recallme','sipcallid','xmd-queue','xmd-dialurl','xmd-dialoptions','xmd-dialchannel','xmd-cdrtype','xmd-agiafter','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosloss','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','replace','random','extractCalleridName','extractCalleridNumber','util','../../../../config/logger','preview','env','XCALLY_IP_AGI','milliseconds','diff','seconds','error','logger','inspect','loggerError','logger2','info','message','getCallerId','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isActive','addVariables','Queue','calleridname','calleridnum','ContactId','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','\x22agi://%s/square,%s\x22','dialQueueProject','NONE','originatecalleridnum','originatecalleridname','xcally-motion-preview','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','isNil','tags','createdAt','%s%s','XMD-','toLowerVariables','toLower','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','starttime','responsetime','endtime','state','ringtime','logLookAgent','membername','UserId','statedesc','talktime','answertime','isFailure','Failure','variablesAction','RECALL','BOOKED','uniqueid','originate','channelAgent','from-sip','timeout','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','cloneAction','scheduledAt','active','scheduledat','add','minutes','ListId'];(function(_0xe27810,_0x8b3e76){var _0x53dcec=function(_0x4a83c7){while(--_0x4a83c7){_0xe27810['push'](_0xe27810['shift']());}};_0x53dcec(++_0x8b3e76);}(_0x41b2,0xaf));var _0x241b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x41b2[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x241b('0x0'));var _=require('lodash');var moment=require('moment');var logger=require(_0x241b('0x1'))(_0x241b('0x2'));var ipAgi=process[_0x241b('0x3')][_0x241b('0x4')]||'127.0.0.1';function getSeconds(_0xc453ee,_0x2b5826){var _0x8bab9d=moment(_0xc453ee)[_0x241b('0x5')](0x0);var _0x43ef76=moment(_0x2b5826)[_0x241b('0x5')](0x0);return _0x8bab9d[_0x241b('0x6')](_0x43ef76,_0x241b('0x7'));}exports['loggerCatch']=function(_0x183d91){return function(_0x1e134c){logger[_0x241b('0x8')](_0x183d91,util['inspect'](_0x1e134c,{'showHidden':![],'depth':null}));};};exports[_0x241b('0x9')]=function(_0x325828,_0x4197a3){logger['info'](_0x325828,util[_0x241b('0xa')](_0x4197a3,{'showHidden':![],'depth':null}));};exports[_0x241b('0xb')]=function(_0x55413c,_0x37bc33){logger[_0x241b('0x8')](_0x55413c,util['inspect'](_0x37bc33,{'showHidden':![],'depth':null}));};exports[_0x241b('0xc')]=function(_0x2cb6aa){return function(_0x1964a1){logger[_0x241b('0xd')](_0x2cb6aa,util['inspect'](_0x1964a1,{'showHidden':![],'depth':null}));};};exports[_0x241b('0xe')]=function(_0x5765ca,_0x4ad937,_0x290c00){return{'message':_0x5765ca,'unlock':_0x4ad937,'active':_0x290c00};};exports[_0x241b('0xf')]=function(_0x5f3857,_0xd67ee2,_0x4fb124){if(!_[_0x241b('0x10')](_0x4fb124)&&_0x241b('0x11')===typeof _0x4fb124&&!_['isEmpty'](_0x4fb124)){if(!_['isUndefined'](_0xd67ee2)&&_0x241b('0x11')===typeof _0xd67ee2&&!_[_0x241b('0x12')](_0xd67ee2)){return util[_0x241b('0x13')](_0x241b('0x14'),_0xd67ee2,_0x4fb124);}return util[_0x241b('0x13')](_0x241b('0x14'),_0x4fb124,_0x4fb124);}if(!_[_0x241b('0x10')](_0x5f3857)&&_0x241b('0x11')===typeof _0x5f3857&&!_[_0x241b('0x12')](_0x5f3857)){return _0x5f3857;}return _0x241b('0x15');};exports[_0x241b('0x16')]=function(_0x560c51){if(_['isNil'](_0x560c51)){return![];}return _0x560c51;};exports[_0x241b('0x17')]=function(_0x9ebfd5,_0x237ae4,_0x18f1f5,_0x1827e9,_0x55a9a7,_0x3d0bb2){var _0x1dfcff={'XMD-QUEUE':_0x237ae4['Queue']?_0x237ae4[_0x241b('0x18')]['name']:'','XMD-CALLERID':_0x1827e9,'XMD-CALLERID-PREVIEW':_0x3d0bb2?util[_0x241b('0x13')](_0x241b('0x14'),_0x3d0bb2[_0x241b('0x19')],_0x3d0bb2[_0x241b('0x1a')]):_0x1827e9,'XMD-DIALID':_0x55a9a7,'XMD-CONTACTID':_0x237ae4[_0x241b('0x1b')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x1827e9,'XMD-VOICEQUEUEID':_0x237ae4['VoiceQueueId'],'XMD-DIALCHANNEL':_0x18f1f5,'XMD-DIALTIMEOUT':_0x9ebfd5['dialOriginateTimeout']||0x1e,'XMD-DIALOPTIONS':util['format'](_0x241b('0x1c'),_0x9ebfd5[_0x241b('0x1d')]?'g':'',_[_0x241b('0x12')](_0x9ebfd5[_0x241b('0x1e')])?'':_0x241b('0x1f')),'XMD-DIALURL':_0x9ebfd5[_0x241b('0x20')]||'','XMD-AGI':_0x9ebfd5['dialQueueProject']?util[_0x241b('0x13')](_0x241b('0x21'),ipAgi,_0x9ebfd5[_0x241b('0x22')]):_0x241b('0x23'),'XMD-AGIAFTER':_0x9ebfd5[_0x241b('0x1d')]?util[_0x241b('0x13')](_0x241b('0x21'),ipAgi,_0x9ebfd5[_0x241b('0x1d')]):_0x241b('0x23'),'XMD-ORIGINATECALLERIDNUM':_0x3d0bb2?_0x3d0bb2[_0x241b('0x24')]:'','XMD-ORIGINATECALLERIDNAME':_0x3d0bb2?_0x3d0bb2[_0x241b('0x25')]:'','XMD-DESTINATION':_0x241b('0x26')};if(!_['isEmpty'](_0x9ebfd5[_0x241b('0x1e')])){_0x1dfcff[util[_0x241b('0x13')]('%s',_0x241b('0x27'))]=_0x9ebfd5[_0x241b('0x1e')];_0x1dfcff[util[_0x241b('0x13')]('%s',_0x241b('0x28'))]=_0x55a9a7;}if(_0x237ae4&&_0x237ae4['Contact']){for(var _0x1b5bf9 in _0x237ae4['Contact']){if(_0x237ae4[_0x241b('0x29')][_0x241b('0x2a')](_0x1b5bf9)){if(!_[_0x241b('0x2b')](_0x237ae4[_0x241b('0x29')][_0x1b5bf9])&&_0x1b5bf9!=='id'&&_0x1b5bf9!==_0x241b('0x2c')&&_0x1b5bf9!==_0x241b('0x2d')&&_0x1b5bf9!=='updatedAt'){_0x1dfcff[util['format'](_0x241b('0x2e'),_0x241b('0x2f'),_['toUpper'](_0x1b5bf9))]=_0x237ae4[_0x241b('0x29')][_0x1b5bf9];}}}}return _0x1dfcff;};exports[_0x241b('0x30')]=function(_0x4392b4){var _0x42802d={};for(var _0x33e1f3 in _0x4392b4){if(_0x4392b4[_0x241b('0x2a')](_0x33e1f3)){_0x42802d[util[_0x241b('0x13')]('%s',_[_0x241b('0x31')](_0x33e1f3))]=_0x4392b4[_0x33e1f3];}}return{'variables':_0x42802d};};exports['updateOriginated']=function(_0x452f92,_0x1b2071){if(!_[_0x241b('0x2b')](_0x452f92)){if(_0x452f92[_0x241b('0x2a')](_0x241b('0x32'))){if(_0x452f92[_0x241b('0x32')]>0x0){_0x452f92['originated']-=0x1;}else{logger[_0x241b('0x8')](_0x241b('0x33'),_0x1b2071);}}}else{logger[_0x241b('0x8')](_0x241b('0x34'),_0x1b2071);}};exports[_0x241b('0x35')]=function(_0x3b0545){var _0x57b912=moment()[_0x241b('0x13')](_0x241b('0x36'));_0x3b0545['state']=0xd;_0x3b0545['statedesc']='Blacklist';_0x3b0545[_0x241b('0x37')]=_0x57b912;_0x3b0545[_0x241b('0x38')]=_0x57b912;_0x3b0545[_0x241b('0x39')]=_0x57b912;};exports['logAgent']=function(_0x58b2d4,_0x56db95,_0x5d297b){var _0x2b98e8=moment()[_0x241b('0x13')]('YYYY-MM-DD\x20HH:mm:ss');_0x58b2d4[_0x241b('0x3a')]=_0x56db95;_0x58b2d4['statedesc']=_0x5d297b;_0x58b2d4[_0x241b('0x38')]=_0x2b98e8;_0x58b2d4[_0x241b('0x3b')]=getSeconds(_0x58b2d4[_0x241b('0x38')],_0x58b2d4[_0x241b('0x37')]);};exports[_0x241b('0x3c')]=function(_0x44f400,_0x441737,_0x5c4308){_0x44f400[_0x241b('0x3d')]=_0x441737;_0x44f400[_0x241b('0x3e')]=_0x5c4308;};exports['logCustomer']=function(_0x2c3647,_0x33d019,_0x5edd67){var _0x27fc85=moment()[_0x241b('0x13')](_0x241b('0x36'));_0x2c3647[_0x241b('0x3a')]=_0x33d019;_0x2c3647[_0x241b('0x3f')]=_0x5edd67;_0x2c3647[_0x241b('0x38')]=_0x2c3647['responsetime']?_0x2c3647['responsetime']:_0x27fc85;_0x2c3647[_0x241b('0x39')]=_0x2c3647['endtime']?_0x2c3647[_0x241b('0x39')]:_0x27fc85;_0x2c3647[_0x241b('0x3b')]=getSeconds(_0x2c3647[_0x241b('0x38')]||0x0,_0x2c3647[_0x241b('0x37')]||0x0);_0x2c3647[_0x241b('0x40')]=_0x2c3647[_0x241b('0x41')]?getSeconds(_0x2c3647['endtime'],_0x2c3647[_0x241b('0x41')]):0x0;};exports[_0x241b('0x42')]=function(_0x151b9c){return _0x151b9c===_0x241b('0x43');};exports[_0x241b('0x44')]=function(_0x1dfd8b,_0x3b5207,_0x3bcb28,_0x529e9b,_0x5d250e){var _0x27dcd1=_0x529e9b?_0x241b('0x45'):_0x1dfd8b[_0x241b('0x19')];_0x27dcd1=_0x5d250e?_0x241b('0x46'):_0x27dcd1;return{'actionid':_0x1dfd8b[_0x241b('0x47')],'action':_0x241b('0x48'),'channel':_0x1dfd8b[_0x241b('0x49')],'callerid':util[_0x241b('0x13')](_0x241b('0x14'),_0x27dcd1,_0x1dfd8b[_0x241b('0x1a')]),'Exten':_0x241b('0x26'),'Context':_0x241b('0x4a'),'Priority':'1','variable':_0x3bcb28,'timeout':(_0x3b5207[_0x241b('0x4b')]||0x1e)*0x3e8,'async':!![],'channelid':_0x1dfd8b['uniqueid']};};exports['totalGlobal']=function(_0x1d5b02){return _0x1d5b02[_0x241b('0x4c')]+_0x1d5b02[_0x241b('0x4d')]+_0x1d5b02[_0x241b('0x4e')]+_0x1d5b02['countagentrejectretry']+_0x1d5b02[_0x241b('0x4f')];};exports[_0x241b('0x50')]=function(_0x556cd6){var _0x30fd24=_['clone'](_0x556cd6);_0x30fd24[_0x241b('0x3a')]=0xf;_0x30fd24['statedesc']='Global';return _0x30fd24;};exports[_0x241b('0x51')]=function(_0xdf69c4,_0xb8c6be,_0xcf2e57){var _0x7b14fa={};_0x7b14fa[_0xb8c6be]=_0xdf69c4[_0xb8c6be];_0x7b14fa[_0x241b('0x52')]=![];_0x7b14fa[_0x241b('0x53')]=moment()[_0x241b('0x54')](_0xcf2e57,_0x241b('0x55'))[_0x241b('0x13')]('YYYY-MM-DD\x20HH:mm:ss');_0x7b14fa[_0x241b('0x1b')]=_0xdf69c4['ContactId'];_0x7b14fa[_0x241b('0x56')]=_0xdf69c4[_0x241b('0x56')];_0x7b14fa[_0x241b('0x57')]=_0xdf69c4[_0x241b('0x57')]||undefined;return _0x7b14fa;};exports[_0x241b('0x58')]=function(_0x356a20,_0x43a0a1){if(!_['isNil'](_0x356a20)){if(_0x356a20['pTalking']>0x0){_0x356a20[_0x241b('0x59')]-=0x1;}else{logger[_0x241b('0x8')](_0x43a0a1,_0x241b('0x5a'));}}else{logger[_0x241b('0x8')](_0x43a0a1,_0x241b('0x5b'));}};exports['IsNotLoggedIn']=function(_0xdadd41){if(_0xdadd41<=0x0){return!![];}return![];};exports['buildObj']=function(_0x148572,_0x210807,_0x1fe5f5){_0x148572[_0x241b('0x5c')]=_0x210807;_0x148572['name']=_0x148572[_0x241b('0x5d')];_0x148572[_0x241b('0x5e')]=_0x148572[_0x241b('0x49')];if(_0x1fe5f5){_0x148572[_0x241b('0x5f')]=_0x1fe5f5['mandatoryDisposition'];}return _0x148572;};exports['buildAcw']=function(_0x1c8532){var _0x1103ec={};_0x1103ec['queue']=_0x1c8532[_0x241b('0x5d')];_0x1103ec[_0x241b('0x5e')]=_0x1c8532[_0x241b('0x49')];_0x1103ec[_0x241b('0x47')]=_0x1c8532[_0x241b('0x47')];return _0x1103ec;};exports['agentReadyId']=function(_0x4c2a04){var _0x1fd8f0=[];for(var _0x5a3f0f in _0x4c2a04){if(_0x4c2a04['hasOwnProperty'](_0x5a3f0f)){if(!_[_0x241b('0x2b')](_0x4c2a04[_0x5a3f0f])&&_0x4c2a04[_0x5a3f0f][_0x241b('0x3a')]===_0x241b('0x60')&&_0x4c2a04[_0x5a3f0f]['status']===_0x241b('0x61')){_0x1fd8f0[_0x241b('0x62')](_0x4c2a04[_0x5a3f0f]['id']);}}}return _0x1fd8f0;};exports['getDiff']=function(_0x8cf906){var _0x50abcb=moment()[_0x241b('0x5')](0x0);var _0x1e7330=moment(_0x8cf906)[_0x241b('0x5')](0x0);return _0x50abcb[_0x241b('0x6')](_0x1e7330,_0x241b('0x7'));};exports[_0x241b('0x63')]=function(_0x1be94e){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x1be94e[_0x241b('0x1b')],'ListId':_0x1be94e['ListId'],'VoiceQueueId':_0x1be94e['VoiceQueueId']||undefined,'CampaignId':_0x1be94e[_0x241b('0x64')]||undefined};};exports[_0x241b('0x65')]=function(_0x5788dd){if(_0x5788dd===_0x241b('0x47')||_0x5788dd===_0x241b('0x66')||_0x5788dd===_0x241b('0x5d')||_0x5788dd==='type'||_0x5788dd==='campaigntype'||_0x5788dd===_0x241b('0x67')||_0x5788dd===_0x241b('0x3d')||_0x5788dd===_0x241b('0x49')||_0x5788dd===_0x241b('0x19')||_0x5788dd===_0x241b('0x52')||_0x5788dd===_0x241b('0x1a')||_0x5788dd==='scheduledat'||_0x5788dd==='countbusyretry'||_0x5788dd===_0x241b('0x4d')||_0x5788dd===_0x241b('0x4e')||_0x5788dd===_0x241b('0x68')||_0x5788dd===_0x241b('0x69')||_0x5788dd===_0x241b('0x6a')||_0x5788dd===_0x241b('0x6b')||_0x5788dd===_0x241b('0x6c')||_0x5788dd===_0x241b('0x1b')||_0x5788dd===_0x241b('0x56')||_0x5788dd==='UserId'||_0x5788dd===_0x241b('0x57')||_0x5788dd===_0x241b('0x6d')||_0x5788dd==='xmd-voicequeueid'||_0x5788dd===_0x241b('0x6e')||_0x5788dd==='xmd-phone'||_0x5788dd==='xmd-listid'||_0x5788dd===_0x241b('0x6f')||_0x5788dd==='xmd-dialtimeout'||_0x5788dd===_0x241b('0x70')||_0x5788dd==='xmd-dialid'||_0x5788dd===_0x241b('0x71')||_0x5788dd==='xmd-contactid'||_0x5788dd===_0x241b('0x72')||_0x5788dd==='xmd-callerid'||_0x5788dd===_0x241b('0x73')||_0x5788dd==='xmd-agi'||_0x5788dd==='rtpaudioqos'||_0x5788dd===_0x241b('0x74')||_0x5788dd===_0x241b('0x75')||_0x5788dd===_0x241b('0x76')||_0x5788dd==='rtpaudioqosloss'||_0x5788dd===_0x241b('0x77')||_0x5788dd===_0x241b('0x78')||_0x5788dd==='rtpaudioqosrttbridged'||_0x5788dd==='rtpaudioqos'||_0x5788dd===_0x241b('0x74')||_0x5788dd==='rtpaudioqosjitter'||_0x5788dd===_0x241b('0x76')||_0x5788dd===_0x241b('0x79')||_0x5788dd===_0x241b('0x77')||_0x5788dd===_0x241b('0x78')||_0x5788dd==='rtpaudioqosrttbridged'||_0x5788dd===_0x241b('0x7a')||_0x5788dd===_0x241b('0x7b')||_0x5788dd==='state'||_0x5788dd===_0x241b('0x3f')){return![];}return!![];};exports[_0x241b('0x7c')]=function(_0x397ce6,_0x21b839){var _0x473ece,_0x3da2a5,_0x4c9cf6;if(_0x21b839<=0x0){_0x21b839=0x1;}_0x473ece=new RegExp(_0x241b('0x7d')+_0x21b839+'}$');_0x3da2a5=Math['pow'](0xa,_0x21b839-0x1);_0x4c9cf6=Math[_0x241b('0x7e')](0xa,_0x21b839)-0x1;return util[_0x241b('0x13')]('%s',_[_0x241b('0x7f')](_0x397ce6,_0x473ece,_[_0x241b('0x80')](_0x3da2a5,_0x4c9cf6)));};exports[_0x241b('0x81')]=function(_0x48bf4d){var _0x117f0d=_0x48bf4d['match'](/"(.*?)"/);return _0x117f0d?_0x117f0d[0x1]:_0x48bf4d;};exports[_0x241b('0x82')]=function(_0x175687){var _0x22ca5a=_0x175687['match'](/<(.*?)>/);return _0x22ca5a?_0x22ca5a[0x1]:_0x175687;};
\ No newline at end of file
index 72e4563..fad9d8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53fa=['voicequeuechannelhangup','queueadd','string','number','queuepause','reload','voicechannel'];(function(_0x45def4,_0x120bc0){var _0x29821f=function(_0x6c0ef8){while(--_0x6c0ef8){_0x45def4['push'](_0x45def4['shift']());}};_0x29821f(++_0x120bc0);}(_0x53fa,0x1ac));var _0xa53f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x53fa[_0x3dd15e];return _0x231fd0;};'use strict';exports[_0xa53f('0x0')]={'queue':{'type':_0xa53f('0x1'),'required':!![]},'interface':{'type':'string','required':!![]},'membername':{'type':_0xa53f('0x1'),'required':!![]},'penalty':{'type':_0xa53f('0x2'),'required':![]},'paused':{'type':'boolean','required':![]}};exports['queueremove']={'queue':{'type':'string','required':!![]},'interface':{'type':'string','required':!![]}};exports[_0xa53f('0x3')]={'interface':{'type':_0xa53f('0x1'),'required':!![]},'paused':{'type':'boolean'},'reason':{'type':'string','required':![]}};exports[_0xa53f('0x4')]={'module':{'type':_0xa53f('0x1'),'required':![]}};exports['voicequeuechannel']={'uniqueid':{'type':_0xa53f('0x1'),'required':!![]}};exports[_0xa53f('0x5')]={'uniqueid':{'type':_0xa53f('0x1'),'required':!![]},'filename':{'type':_0xa53f('0x1')},'format':{'type':_0xa53f('0x1')},'mixmonitorid':{'type':'string'}};exports[_0xa53f('0x6')]={'uniqueid':{'type':_0xa53f('0x1'),'required':!![]}};exports['voicequeuechannelredirect']={'uniqueid':{'type':_0xa53f('0x1'),'required':!![]},'exten':{'type':'string','required':!![]},'context':{'type':_0xa53f('0x1')}};
\ No newline at end of file
+var _0xb227=['reload','voicequeuechannel','voicechannel','voicequeuechannelhangup','voicequeuechannelredirect','queueadd','string','boolean','queueremove','queuepause'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb227,0x1ef));var _0x7b22=function(_0x22d7fc,_0xdd3faa){_0x22d7fc=_0x22d7fc-0x0;var _0x50c16e=_0xb227[_0x22d7fc];return _0x50c16e;};'use strict';exports[_0x7b22('0x0')]={'queue':{'type':_0x7b22('0x1'),'required':!![]},'interface':{'type':_0x7b22('0x1'),'required':!![]},'membername':{'type':_0x7b22('0x1'),'required':!![]},'penalty':{'type':'number','required':![]},'paused':{'type':_0x7b22('0x2'),'required':![]}};exports[_0x7b22('0x3')]={'queue':{'type':_0x7b22('0x1'),'required':!![]},'interface':{'type':_0x7b22('0x1'),'required':!![]}};exports[_0x7b22('0x4')]={'interface':{'type':_0x7b22('0x1'),'required':!![]},'paused':{'type':'boolean'},'reason':{'type':_0x7b22('0x1'),'required':![]}};exports[_0x7b22('0x5')]={'module':{'type':_0x7b22('0x1'),'required':![]}};exports[_0x7b22('0x6')]={'uniqueid':{'type':_0x7b22('0x1'),'required':!![]}};exports[_0x7b22('0x7')]={'uniqueid':{'type':_0x7b22('0x1'),'required':!![]},'filename':{'type':'string'},'format':{'type':_0x7b22('0x1')},'mixmonitorid':{'type':'string'}};exports[_0x7b22('0x8')]={'uniqueid':{'type':_0x7b22('0x1'),'required':!![]}};exports[_0x7b22('0x9')]={'uniqueid':{'type':_0x7b22('0x1'),'required':!![]},'exten':{'type':_0x7b22('0x1'),'required':!![]},'context':{'type':_0x7b22('0x1')}};
\ No newline at end of file
index 769f1c2..1b18ba0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba9d=['initFreshsalesAccounts','freshsalesAccounts','merge','initVoiceQueueReports','uniqueid','queue','queuecallerexit','queuecallerabandon','queuecallerleaveAt','diff','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerabandonAt','queuecallerexitAt','queuecallercomplete','duration','ANSWERED','billableseconds','initVoiceExtensions','initCampaignHopperHistory','initFaxAccounts','bluebird','util','lodash','moment','../model/agent','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/vtigerAccount','../model/dynamics365Account','../model/faxAccount','agents','telephones','voiceQueues','triggers','campaigns','templates','outbound','voiceExtensions','queueChannels','outboundChannels','timers','settings','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','vtigerAccounts','servicenowAccounts','faxAccounts','mapKeys','hasOwnProperty','format','SIP/%s','name','isNil','interface','answered','sumHoldTime','sumDuration','sumBillable','ivrTotalCallsDays','ivrAnswerCallsDay','isEmpty','total','unmanaged','abandoned','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundRejectCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','initAgents','length','isUndefined','initTelephones','mergeFromDatabase','trunks','initVoiceQueues','initTriggers','initZendeskAccounts','initSalesforceAccounts','initFreshdeskAccounts','initZohoAccounts','zohoAccounts','deskAccounts','initVtigerAccounts','initServicenowAccounts','initDynamics365Accounts','dynamics365Accounts'];(function(_0x31a371,_0x50828e){var _0x2a5bd6=function(_0x2fb481){while(--_0x2fb481){_0x31a371['push'](_0x31a371['shift']());}};_0x2a5bd6(++_0x50828e);}(_0xba9d,0x15a));var _0xdba9=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0xba9d[_0x36c5b0];return _0xf19333;};'use strict';var BPromise=require(_0xdba9('0x0'));var util=require(_0xdba9('0x1'));var _=require(_0xdba9('0x2'));var moment=require(_0xdba9('0x3'));var Agent=require(_0xdba9('0x4'));var Telephone=require(_0xdba9('0x5'));var Trunk=require(_0xdba9('0x6'));var VoiceQueue=require(_0xdba9('0x7'));var Trigger=require(_0xdba9('0x8'));var Template=require(_0xdba9('0x9'));var Campaign=require(_0xdba9('0xa'));var VoiceExtension=require(_0xdba9('0xb'));var ZendeskAccount=require(_0xdba9('0xc'));var SalesforceAccount=require(_0xdba9('0xd'));var FreshdeskAccount=require(_0xdba9('0xe'));var SugarcrmAccount=require(_0xdba9('0xf'));var ZohoAccount=require(_0xdba9('0x10'));var DeskAccount=require('../model/deskAccount');var VtigerAccount=require(_0xdba9('0x11'));var ServicenowAccount=require('../model/servicenowAccount');var Dynamics365Account=require(_0xdba9('0x12'));var FreshsalesAccount=require('../model/freshsalesAccount');var FaxAccount=require(_0xdba9('0x13'));var Realtime=function(){this[_0xdba9('0x14')]={};this[_0xdba9('0x15')]={};this['trunks']={};this[_0xdba9('0x16')]={};this[_0xdba9('0x17')]={};this[_0xdba9('0x18')]={};this[_0xdba9('0x19')]={};this[_0xdba9('0x1a')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0xdba9('0x1b')]={};this['channels']={};this[_0xdba9('0x1c')]={};this[_0xdba9('0x1d')]={};this[_0xdba9('0x1e')]={};this[_0xdba9('0x1f')]={};this[_0xdba9('0x20')]={};this[_0xdba9('0x21')]={};this[_0xdba9('0x22')]={};this[_0xdba9('0x23')]={};this['zohoAccounts']={};this['deskAccounts']={};this[_0xdba9('0x24')]={};this[_0xdba9('0x25')]={};this['dynamics365Accounts']={};this['freshsalesAccounts']={};this[_0xdba9('0x26')]={};};function freeIsNotKey(_0xff006d,_0x469ea5,_0x467101){var _0x565aa3=_[_0xdba9('0x27')](_0xff006d,function(_0x2a4aee,_0x4e9197){return _0x2a4aee[_0x467101];});for(var _0x3115e0 in _0x469ea5){if(_0x469ea5[_0xdba9('0x28')](_0x3115e0)){if(!_0x565aa3[_0x3115e0]){delete _0x469ea5[_0x3115e0];}}}}function freeIsNotKeySip(_0x57981e,_0x486707){var _0x20d157=_[_0xdba9('0x27')](_0x57981e,function(_0x2e9579,_0x250089){return util[_0xdba9('0x29')](_0xdba9('0x2a'),_0x2e9579[_0xdba9('0x2b')]);});for(var _0x3e376c in _0x486707){if(_0x486707[_0xdba9('0x28')](_0x3e376c)){if(!_0x20d157[_0x3e376c]){delete _0x486707[_0x3e376c];}}}}function freeIsNotKeyAgent(_0x1ee894,_0x15f026){var _0xb2ff71=_[_0xdba9('0x27')](_0x1ee894,function(_0x11392a,_0x22308d){var _0x1cbf4f=_[_0xdba9('0x2c')](_0x11392a[_0xdba9('0x2d')])?util[_0xdba9('0x29')](_0xdba9('0x2a'),_0x11392a[_0xdba9('0x2b')]):_0x11392a[_0xdba9('0x2d')];return _0x1cbf4f;});for(var _0x2b698b in _0x15f026){if(_0x15f026['hasOwnProperty'](_0x2b698b)){if(!_0xb2ff71[_0x2b698b]){delete _0x15f026[_0x2b698b];}}}}function clearVoiceCallReports(_0x2abec8){_0x2abec8['total']=0x0;_0x2abec8[_0xdba9('0x2e')]=0x0;_0x2abec8[_0xdba9('0x2f')]=0x0;_0x2abec8[_0xdba9('0x30')]=0x0;_0x2abec8[_0xdba9('0x31')]=0x0;}function clearCampaigns(_0x58fbdc){if(!_['isEmpty'](_0x58fbdc)){for(var _0x3a5b81 in _0x58fbdc){if(_0x58fbdc[_0xdba9('0x28')](_0x3a5b81)){_0x58fbdc[_0x3a5b81][_0xdba9('0x32')]=0x0;_0x58fbdc[_0x3a5b81][_0xdba9('0x33')]=0x0;}}}}function clearVoiceQueues(_0x179b76){if(!_[_0xdba9('0x34')](_0x179b76)){for(var _0x4baa9 in _0x179b76){if(_0x179b76[_0xdba9('0x28')](_0x4baa9)){_0x179b76[_0x4baa9][_0xdba9('0x35')]=0x0;_0x179b76[_0x4baa9][_0xdba9('0x2e')]=0x0;_0x179b76[_0x4baa9][_0xdba9('0x36')]=0x0;_0x179b76[_0x4baa9][_0xdba9('0x37')]=0x0;_0x179b76[_0x4baa9][_0xdba9('0x2f')]=0x0;_0x179b76[_0x4baa9]['sumDuration']=0x0;_0x179b76[_0x4baa9][_0xdba9('0x31')]=0x0;_0x179b76[_0x4baa9][_0xdba9('0x38')]=0x0;_0x179b76[_0x4baa9][_0xdba9('0x39')]=0x0;_0x179b76[_0x4baa9][_0xdba9('0x3a')]=0x0;_0x179b76[_0x4baa9]['outboundCongestionCallsDay']=0x0;_0x179b76[_0x4baa9][_0xdba9('0x3b')]=0x0;_0x179b76[_0x4baa9][_0xdba9('0x3c')]=0x0;_0x179b76[_0x4baa9][_0xdba9('0x3d')]=0x0;_0x179b76[_0x4baa9][_0xdba9('0x3e')]=0x0;_0x179b76[_0x4baa9][_0xdba9('0x3f')]=0x0;_0x179b76[_0x4baa9]['outboundOriginateFailureCallsDay']=0x0;_0x179b76[_0x4baa9][_0xdba9('0x40')]=0x0;_0x179b76[_0x4baa9]['outboundReCallsDay']=0x0;_0x179b76[_0x4baa9][_0xdba9('0x38')]=0x0;_0x179b76[_0x4baa9][_0xdba9('0x41')]=0x0;_0x179b76[_0x4baa9][_0xdba9('0x42')]=!![];}}}}Realtime[_0xdba9('0x43')]['mergeFromDatabase']=function(_0x149711,_0x3715a2){for(var _0x10e7d9 in _0x3715a2){if(_0x149711[_0xdba9('0x28')](_0x10e7d9)){_0x149711[_0x10e7d9]=_0x3715a2[_0x10e7d9];}}};Realtime[_0xdba9('0x43')][_0xdba9('0x44')]=function(){var _0x46502d=this;return function(_0x87d729){if(_0x87d729){freeIsNotKeyAgent(_0x87d729,_0x46502d['agents']);for(var _0x4f1f5a=0x0,_0x1be646={},_0xbd2b2a={};_0x4f1f5a<_0x87d729[_0xdba9('0x45')];_0x4f1f5a+=0x1){_0x1be646=_0x87d729[_0x4f1f5a];var _0x28d9e3=_[_0xdba9('0x2c')](_0x1be646['interface'])?util[_0xdba9('0x29')]('SIP/%s',_0x1be646[_0xdba9('0x2b')]):_0x1be646['interface'];if(_[_0xdba9('0x46')](_0x46502d[_0xdba9('0x14')][_0x28d9e3])){_0x46502d[_0xdba9('0x14')][_0x28d9e3]=new Agent(_0x1be646);}else{_0x46502d['mergeFromDatabase'](_0x46502d[_0xdba9('0x14')][_0x28d9e3],_0x1be646);}}}return _0x46502d[_0xdba9('0x14')];};};Realtime[_0xdba9('0x43')][_0xdba9('0x47')]=function(){var _0x5b9aa5=this;return function(_0x59433d){if(_0x59433d){freeIsNotKeySip(_0x59433d,_0x5b9aa5[_0xdba9('0x15')]);for(var _0x387b2c=0x0,_0x15d5cb={},_0x442e24={};_0x387b2c<_0x59433d[_0xdba9('0x45')];_0x387b2c+=0x1){_0x15d5cb=_0x59433d[_0x387b2c];if(_[_0xdba9('0x46')](_0x5b9aa5[_0xdba9('0x15')][util[_0xdba9('0x29')](_0xdba9('0x2a'),_0x15d5cb[_0xdba9('0x2b')])])){_0x5b9aa5[_0xdba9('0x15')][util[_0xdba9('0x29')](_0xdba9('0x2a'),_0x15d5cb[_0xdba9('0x2b')])]=new Telephone(_0x15d5cb);}else{_0x5b9aa5[_0xdba9('0x48')](_0x5b9aa5[_0xdba9('0x15')][util[_0xdba9('0x29')](_0xdba9('0x2a'),_0x15d5cb[_0xdba9('0x2b')])],_0x15d5cb);}}}return _0x5b9aa5[_0xdba9('0x15')];};};Realtime[_0xdba9('0x43')]['initTrunks']=function(){var _0x52b38a=this;return function(_0x1efe3e){if(_0x1efe3e){freeIsNotKeySip(_0x1efe3e,_0x52b38a['trunks']);for(var _0x195aeb=0x0,_0x24ebd8={},_0x4d5559={};_0x195aeb<_0x1efe3e['length'];_0x195aeb+=0x1){_0x24ebd8=_0x1efe3e[_0x195aeb];if(_[_0xdba9('0x46')](_0x52b38a[_0xdba9('0x49')][util['format']('SIP/%s',_0x24ebd8[_0xdba9('0x2b')])])){_0x52b38a[_0xdba9('0x49')][util[_0xdba9('0x29')](_0xdba9('0x2a'),_0x24ebd8[_0xdba9('0x2b')])]=new Trunk(_0x24ebd8);}else{_0x52b38a[_0xdba9('0x48')](_0x52b38a[_0xdba9('0x49')][util[_0xdba9('0x29')](_0xdba9('0x2a'),_0x24ebd8[_0xdba9('0x2b')])],_0x24ebd8);}}}return _0x52b38a[_0xdba9('0x49')];};};Realtime['prototype'][_0xdba9('0x4a')]=function(){var _0x1153b8=this;return function(_0x528ca5){if(_0x528ca5){freeIsNotKey(_0x528ca5,_0x1153b8['voiceQueues'],'name');for(var _0x562ea2=0x0,_0x12d30b={},_0x260328={};_0x562ea2<_0x528ca5[_0xdba9('0x45')];_0x562ea2+=0x1){_0x12d30b=_0x528ca5[_0x562ea2];if(_[_0xdba9('0x46')](_0x1153b8[_0xdba9('0x16')][_0x12d30b[_0xdba9('0x2b')]])){_0x1153b8[_0xdba9('0x16')][_0x12d30b[_0xdba9('0x2b')]]=new VoiceQueue(_0x12d30b);}else{_0x1153b8[_0xdba9('0x48')](_0x1153b8['voiceQueues'][_0x12d30b[_0xdba9('0x2b')]],_0x12d30b);}}}return _0x1153b8[_0xdba9('0x16')];};};Realtime['prototype'][_0xdba9('0x4b')]=function(){var _0x459779=this;return function(_0x3625d4){if(_0x3625d4){freeIsNotKey(_0x3625d4,_0x459779['triggers'],'id');for(var _0x44ed19=0x0,_0x41058b={},_0x4df304={};_0x44ed19<_0x3625d4[_0xdba9('0x45')];_0x44ed19+=0x1){_0x41058b=_0x3625d4[_0x44ed19];if(_[_0xdba9('0x46')](_0x459779['triggers'][_0x41058b['id']])){_0x459779[_0xdba9('0x17')][_0x41058b['id']]=new Trigger(_0x41058b);}else{_0x459779[_0xdba9('0x48')](_0x459779[_0xdba9('0x17')][_0x41058b['id']],_0x41058b);}}}return _0x459779[_0xdba9('0x17')];};};Realtime[_0xdba9('0x43')]['initTemplates']=function(){var _0x5538dc=this;return function(_0xa5f4c1){if(_0xa5f4c1){freeIsNotKey(_0xa5f4c1,_0x5538dc[_0xdba9('0x19')],'id');for(var _0x58685f=0x0,_0x1f783a={},_0x334dc7={};_0x58685f<_0xa5f4c1[_0xdba9('0x45')];_0x58685f+=0x1){_0x1f783a=_0xa5f4c1[_0x58685f];if(_['isUndefined'](_0x5538dc[_0xdba9('0x19')][_0x1f783a['id']])){_0x5538dc[_0xdba9('0x19')][_0x1f783a['id']]=new Template(_0x1f783a);}else{_0x5538dc['mergeFromDatabase'](_0x5538dc[_0xdba9('0x19')][_0x1f783a['id']],_0x1f783a);}}}return _0x5538dc['templates'];};};Realtime[_0xdba9('0x43')][_0xdba9('0x4c')]=function(){var _0x753c8=this;return function(_0x4f35af){if(_0x4f35af){freeIsNotKey(_0x4f35af,_0x753c8[_0xdba9('0x20')],'id');for(var _0x1c8204=0x0,_0x172245={},_0x254a9e={};_0x1c8204<_0x4f35af[_0xdba9('0x45')];_0x1c8204+=0x1){_0x172245=_0x4f35af[_0x1c8204];if(_[_0xdba9('0x46')](_0x753c8[_0xdba9('0x20')][_0x172245['id']])){_0x753c8[_0xdba9('0x20')][_0x172245['id']]=new ZendeskAccount(_0x172245);}else{_0x753c8[_0xdba9('0x48')](_0x753c8[_0xdba9('0x20')][_0x172245['id']],_0x172245);}}}return _0x753c8['zendeskAccounts'];};};Realtime[_0xdba9('0x43')][_0xdba9('0x4d')]=function(){var _0x3eaaff=this;return function(_0x117254){if(_0x117254){freeIsNotKey(_0x117254,_0x3eaaff['salesforceAccounts'],'id');for(var _0x3d3f28=0x0,_0x36ebe1={},_0x3aeebc={};_0x3d3f28<_0x117254[_0xdba9('0x45')];_0x3d3f28+=0x1){_0x36ebe1=_0x117254[_0x3d3f28];if(_[_0xdba9('0x46')](_0x3eaaff[_0xdba9('0x21')][_0x36ebe1['id']])){_0x3eaaff[_0xdba9('0x21')][_0x36ebe1['id']]=new SalesforceAccount(_0x36ebe1);}else{_0x3eaaff[_0xdba9('0x48')](_0x3eaaff[_0xdba9('0x21')][_0x36ebe1['id']],_0x36ebe1);}}}return _0x3eaaff[_0xdba9('0x21')];};};Realtime[_0xdba9('0x43')][_0xdba9('0x4e')]=function(){var _0x561f6f=this;return function(_0x2dcca7){if(_0x2dcca7){freeIsNotKey(_0x2dcca7,_0x561f6f[_0xdba9('0x23')],'id');for(var _0x9359d=0x0,_0x26d161={},_0x4d745a={};_0x9359d<_0x2dcca7[_0xdba9('0x45')];_0x9359d+=0x1){_0x26d161=_0x2dcca7[_0x9359d];if(_[_0xdba9('0x46')](_0x561f6f[_0xdba9('0x23')][_0x26d161['id']])){_0x561f6f[_0xdba9('0x23')][_0x26d161['id']]=new FreshdeskAccount(_0x26d161);}else{_0x561f6f[_0xdba9('0x48')](_0x561f6f[_0xdba9('0x23')][_0x26d161['id']],_0x26d161);}}}return _0x561f6f[_0xdba9('0x23')];};};Realtime[_0xdba9('0x43')][_0xdba9('0x4f')]=function(){var _0x4df279=this;return function(_0x41be0c){if(_0x41be0c){freeIsNotKey(_0x41be0c,_0x4df279['zohoAccounts'],'id');for(var _0x50e54c=0x0,_0xd4f4c={},_0x37ead1={};_0x50e54c<_0x41be0c['length'];_0x50e54c+=0x1){_0xd4f4c=_0x41be0c[_0x50e54c];if(_[_0xdba9('0x46')](_0x4df279['zohoAccounts'][_0xd4f4c['id']])){_0x4df279[_0xdba9('0x50')][_0xd4f4c['id']]=new ZohoAccount(_0xd4f4c);}else{_0x4df279[_0xdba9('0x48')](_0x4df279[_0xdba9('0x50')][_0xd4f4c['id']],_0xd4f4c);}}}return _0x4df279['zohoAccounts'];};};Realtime[_0xdba9('0x43')]['initDeskAccounts']=function(){var _0x38288d=this;return function(_0x144dca){if(_0x144dca){freeIsNotKey(_0x144dca,_0x38288d['deskAccounts'],'id');for(var _0x256cc9=0x0,_0x5b233c={},_0x4c6024={};_0x256cc9<_0x144dca[_0xdba9('0x45')];_0x256cc9+=0x1){_0x5b233c=_0x144dca[_0x256cc9];if(_[_0xdba9('0x46')](_0x38288d[_0xdba9('0x51')][_0x5b233c['id']])){_0x38288d[_0xdba9('0x51')][_0x5b233c['id']]=new DeskAccount(_0x5b233c);}else{_0x38288d[_0xdba9('0x48')](_0x38288d[_0xdba9('0x51')][_0x5b233c['id']],_0x5b233c);}}}return _0x38288d['deskAccounts'];};};Realtime[_0xdba9('0x43')]['initSugarcrmAccounts']=function(){var _0x6c8287=this;return function(_0x4bea3b){if(_0x4bea3b){freeIsNotKey(_0x4bea3b,_0x6c8287[_0xdba9('0x22')],'id');for(var _0x6eb66c=0x0,_0xcb27d3={},_0x58f742={};_0x6eb66c<_0x4bea3b[_0xdba9('0x45')];_0x6eb66c+=0x1){_0xcb27d3=_0x4bea3b[_0x6eb66c];if(_[_0xdba9('0x46')](_0x6c8287['sugarcrmAccounts'][_0xcb27d3['id']])){_0x6c8287[_0xdba9('0x22')][_0xcb27d3['id']]=new SugarcrmAccount(_0xcb27d3);}else{_0x6c8287[_0xdba9('0x48')](_0x6c8287['sugarcrmAccounts'][_0xcb27d3['id']],_0xcb27d3);}}}return _0x6c8287['sugarcrmAccounts'];};};Realtime[_0xdba9('0x43')][_0xdba9('0x52')]=function(){var _0x286f49=this;return function(_0x3a7c68){if(_0x3a7c68){freeIsNotKey(_0x3a7c68,_0x286f49[_0xdba9('0x24')],'id');for(var _0x5f5c9b=0x0,_0x108754={},_0x4a2c1e={};_0x5f5c9b<_0x3a7c68[_0xdba9('0x45')];_0x5f5c9b+=0x1){_0x108754=_0x3a7c68[_0x5f5c9b];if(_['isUndefined'](_0x286f49['vtigerAccounts'][_0x108754['id']])){_0x286f49[_0xdba9('0x24')][_0x108754['id']]=new VtigerAccount(_0x108754);}else{_0x286f49[_0xdba9('0x48')](_0x286f49['vtigerAccounts'][_0x108754['id']],_0x108754);}}}return _0x286f49['vtigerAccounts'];};};Realtime[_0xdba9('0x43')][_0xdba9('0x53')]=function(){var _0x2da9fd=this;return function(_0x5c9975){if(_0x5c9975){freeIsNotKey(_0x5c9975,_0x2da9fd['servicenowAccounts'],'id');for(var _0x3e8d89=0x0,_0x4a98ad={},_0xd93828={};_0x3e8d89<_0x5c9975[_0xdba9('0x45')];_0x3e8d89+=0x1){_0x4a98ad=_0x5c9975[_0x3e8d89];if(_['isUndefined'](_0x2da9fd[_0xdba9('0x25')][_0x4a98ad['id']])){_0x2da9fd[_0xdba9('0x25')][_0x4a98ad['id']]=new ServicenowAccount(_0x4a98ad);}else{_0x2da9fd[_0xdba9('0x48')](_0x2da9fd[_0xdba9('0x25')][_0x4a98ad['id']],_0x4a98ad);}}}return _0x2da9fd[_0xdba9('0x25')];};};Realtime['prototype'][_0xdba9('0x54')]=function(){var _0x29b5e2=this;return function(_0xe3cc03){if(_0xe3cc03){freeIsNotKey(_0xe3cc03,_0x29b5e2[_0xdba9('0x55')],'id');for(var _0x51e7fd=0x0,_0x1191cc={},_0x5ddf53={};_0x51e7fd<_0xe3cc03['length'];_0x51e7fd+=0x1){_0x1191cc=_0xe3cc03[_0x51e7fd];if(_['isUndefined'](_0x29b5e2['dynamics365Accounts'][_0x1191cc['id']])){_0x29b5e2[_0xdba9('0x55')][_0x1191cc['id']]=new Dynamics365Account(_0x1191cc);}else{_0x29b5e2[_0xdba9('0x48')](_0x29b5e2['dynamics365Accounts'][_0x1191cc['id']],_0x1191cc);}}}return _0x29b5e2[_0xdba9('0x55')];};};Realtime[_0xdba9('0x43')][_0xdba9('0x56')]=function(){var _0x4d17f7=this;return function(_0x85937){if(_0x85937){freeIsNotKey(_0x85937,_0x4d17f7['freshsalesAccounts'],'id');for(var _0x40bdae=0x0,_0x5e582d={},_0x30bf43={};_0x40bdae<_0x85937[_0xdba9('0x45')];_0x40bdae+=0x1){_0x5e582d=_0x85937[_0x40bdae];if(_['isUndefined'](_0x4d17f7[_0xdba9('0x57')][_0x5e582d['id']])){_0x4d17f7[_0xdba9('0x57')][_0x5e582d['id']]=new FreshsalesAccount(_0x5e582d);}else{_0x4d17f7[_0xdba9('0x48')](_0x4d17f7[_0xdba9('0x57')][_0x5e582d['id']],_0x5e582d);}}}return _0x4d17f7[_0xdba9('0x57')];};};Realtime[_0xdba9('0x43')]['initVoiceQueueHopperHistory']=function(){var _0x2920d0=this;return function(_0x45a3df){for(var _0x3dfe1a=0x0;_0x3dfe1a<_0x45a3df[_0xdba9('0x45')];_0x3dfe1a+=0x1){_[_0xdba9('0x58')](_0x2920d0[_0xdba9('0x16')][_0x45a3df[_0x3dfe1a][_0xdba9('0x2b')]],_0x45a3df[_0x3dfe1a]);}return _0x2920d0[_0xdba9('0x16')];};};Realtime[_0xdba9('0x43')][_0xdba9('0x59')]=function(){var _0x1af921=this;return function(_0x259ec3){clearVoiceQueues(_0x1af921[_0xdba9('0x16')]);if(_0x259ec3){_0x259ec3=_['groupBy'](_0x259ec3,_0xdba9('0x5a'));for(var _0x37d4de in _0x259ec3){if(_0x259ec3[_0xdba9('0x28')](_0x37d4de)){var _0x232a30={};for(var _0x1d6dea=0x0;_0x1d6dea<_0x259ec3[_0x37d4de][_0xdba9('0x45')];_0x1d6dea+=0x1){var _0x43b73a=_0x259ec3[_0x37d4de][_0x1d6dea][_0xdba9('0x5b')];if(_0x1af921[_0xdba9('0x16')][_0x43b73a]){if(_0x259ec3[_0x37d4de][_0x1d6dea][_0xdba9('0x5c')]){_0x1af921['voiceQueues'][_0x43b73a][_0xdba9('0x36')]+=0x1;}if(_0x259ec3[_0x37d4de][_0x1d6dea][_0xdba9('0x5d')]){_0x1af921['voiceQueues'][_0x43b73a]['abandoned']+=0x1;}_0x1af921[_0xdba9('0x16')][_0x43b73a]['sumHoldTime']+=moment(_0x259ec3[_0x37d4de][_0x1d6dea][_0xdba9('0x5e')])[_0xdba9('0x5f')](moment(_0x259ec3[_0x37d4de][_0x1d6dea][_0xdba9('0x60')]),_0xdba9('0x61'))||0x0;if(_0x1d6dea===_0x259ec3[_0x37d4de][_0xdba9('0x45')]-0x1){_0x1af921['voiceQueues'][_0x43b73a][_0xdba9('0x30')]+=moment(_0x259ec3[_0x37d4de][_0x1d6dea][_0xdba9('0x62')]||_0x259ec3[_0x37d4de][_0x1d6dea][_0xdba9('0x63')]||_0x259ec3[_0x37d4de][_0x1d6dea][_0xdba9('0x64')])[_0xdba9('0x5f')](moment(_0x259ec3[_0x37d4de][_0x1d6dea][_0xdba9('0x60')]),_0xdba9('0x61'))||0x0;_0x1af921[_0xdba9('0x16')][_0x43b73a][_0xdba9('0x35')]+=0x1;if(_0x259ec3[_0x37d4de][_0x1d6dea][_0xdba9('0x65')]){_0x1af921[_0xdba9('0x16')][_0x43b73a][_0xdba9('0x2e')]+=0x1;_0x1af921[_0xdba9('0x16')][_0x43b73a][_0xdba9('0x31')]+=moment(_0x259ec3[_0x37d4de][_0x1d6dea][_0xdba9('0x62')])[_0xdba9('0x5f')](moment(_0x259ec3[_0x37d4de][_0x1d6dea][_0xdba9('0x5e')]),_0xdba9('0x61'))||0x0;}}else{_0x1af921[_0xdba9('0x16')][_0x43b73a][_0xdba9('0x30')]+=_0x1af921[_0xdba9('0x16')][_0x43b73a][_0xdba9('0x2f')]||0x0;}}}}}}return _0x1af921['voiceQueues'];};};Realtime[_0xdba9('0x43')]['initVoiceCallReports']=function(){var _0x29a9d9=this;return function(_0xe65b84){clearVoiceCallReports(_0x29a9d9[_0xdba9('0x1a')]);if(_0xe65b84){for(var _0x5760d2=0x0;_0x5760d2<_0xe65b84[_0xdba9('0x45')];_0x5760d2+=0x1){_0x29a9d9[_0xdba9('0x1a')][_0xdba9('0x35')]+=0x1;_0x29a9d9['outbound']['sumDuration']+=_0xe65b84[_0x5760d2][_0xdba9('0x66')];if(_0xe65b84[_0x5760d2]['disposition']===_0xdba9('0x67')){_0x29a9d9[_0xdba9('0x1a')][_0xdba9('0x2e')]+=0x1;_0x29a9d9[_0xdba9('0x1a')]['sumHoldTime']+=_0xe65b84[_0x5760d2][_0xdba9('0x66')]-_0xe65b84[_0x5760d2][_0xdba9('0x68')]||0x0;_0x29a9d9[_0xdba9('0x1a')][_0xdba9('0x31')]+=_0xe65b84[_0x5760d2][_0xdba9('0x68')];}}}return _0x29a9d9[_0xdba9('0x1a')];};};Realtime[_0xdba9('0x43')]['initCampaigns']=function(){var _0x1448c7=this;return function(_0x331148){if(_0x331148){freeIsNotKey(_0x331148,_0x1448c7[_0xdba9('0x18')],_0xdba9('0x2b'));for(var _0x5f2d93=0x0,_0x137217={};_0x5f2d93<_0x331148[_0xdba9('0x45')];_0x5f2d93+=0x1){_0x137217=_0x331148[_0x5f2d93];if(_['isUndefined'](_0x1448c7['campaigns'][_0x137217[_0xdba9('0x2b')]])){_0x1448c7[_0xdba9('0x18')][_0x137217['name']]=new Campaign(_0x137217);}else{_0x1448c7[_0xdba9('0x48')](_0x1448c7[_0xdba9('0x18')][_0x137217['name']],_0x137217);_0x1448c7[_0xdba9('0x18')][_0x137217[_0xdba9('0x2b')]]['dialQueueProject']=_0x137217['SquareProject']?_0x137217['SquareProject'][_0xdba9('0x2b')]:undefined;}}}return _0x1448c7[_0xdba9('0x18')];};};Realtime[_0xdba9('0x43')][_0xdba9('0x69')]=function(){var _0x445e26=this;return function(_0x45d5fc){if(_0x45d5fc){freeIsNotKey(_0x45d5fc,_0x445e26[_0xdba9('0x1b')],'id');for(var _0x420967=0x0,_0x534026={};_0x420967<_0x45d5fc['length'];_0x420967+=0x1){_0x534026=_0x45d5fc[_0x420967];if(_['isUndefined'](_0x445e26['voiceExtensions'][_0x534026['id']])){_0x445e26['voiceExtensions'][_0x534026['id']]=new VoiceExtension(_0x534026);}else{_0x445e26[_0xdba9('0x48')](_0x445e26[_0xdba9('0x1b')][_0x534026['id']],_0x534026);}}}return _0x445e26[_0xdba9('0x1b')];};};Realtime[_0xdba9('0x43')][_0xdba9('0x6a')]=function(){var _0x25b75d=this;return function(_0x22e157){clearCampaigns(_0x25b75d[_0xdba9('0x18')]);for(var _0x57d7ad=0x0;_0x57d7ad<_0x22e157[_0xdba9('0x45')];_0x57d7ad+=0x1){_['merge'](_0x25b75d[_0xdba9('0x18')][_0x22e157[_0x57d7ad][_0xdba9('0x2b')]],_0x22e157[_0x57d7ad]);}return _0x25b75d[_0xdba9('0x18')];};};Realtime[_0xdba9('0x43')][_0xdba9('0x6b')]=function(){var _0x1ddb7a=this;return function(_0x41cfbc){if(_0x41cfbc){freeIsNotKey(_0x41cfbc,_0x1ddb7a['faxAccounts'],'id');for(var _0x5318d8=0x0,_0x11eae1={},_0x4db57a={};_0x5318d8<_0x41cfbc[_0xdba9('0x45')];_0x5318d8+=0x1){_0x11eae1=_0x41cfbc[_0x5318d8];if(_[_0xdba9('0x46')](_0x1ddb7a[_0xdba9('0x26')][_0x11eae1['id']])){_0x1ddb7a['faxAccounts'][_0x11eae1['id']]=new FaxAccount(_0x11eae1);}else{_0x1ddb7a[_0xdba9('0x48')](_0x1ddb7a[_0xdba9('0x26')][_0x11eae1['id']],_0x11eae1);}}}return _0x1ddb7a[_0xdba9('0x26')];};};module['exports']=Realtime;
\ No newline at end of file
+var _0xd171=['initFaxAccounts','faxAccounts','bluebird','util','lodash','moment','../model/agent','../model/telephone','../model/voiceQueue','../model/trigger','../model/campaign','../model/zendeskAccount','../model/salesforceAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/dynamics365Account','../model/freshsalesAccount','../model/faxAccount','agents','telephones','trunks','triggers','templates','outbound','channels','queueChannels','outboundChannels','timers','settings','zendeskAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','mapKeys','hasOwnProperty','format','SIP/%s','name','isNil','interface','answered','sumHoldTime','sumDuration','sumBillable','isEmpty','ivrTotalCallsDays','ivrAnswerCallsDay','total','unmanaged','abandoned','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundReCallsDay','queueStatusComplete','prototype','mergeFromDatabase','initAgents','length','initTelephones','isUndefined','initTrunks','voiceQueues','initTriggers','initTemplates','initZendeskAccounts','initSalesforceAccounts','salesforceAccounts','initZohoAccounts','initSugarcrmAccounts','initVtigerAccounts','initDynamics365Accounts','initFreshsalesAccounts','freshsalesAccounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','groupBy','uniqueid','queue','queuecallerexit','queuecallerabandon','queuecallerleaveAt','diff','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerabandonAt','queuecallerexitAt','initVoiceCallReports','duration','disposition','ANSWERED','billableseconds','initCampaigns','campaigns','dialQueueProject','SquareProject','voiceExtensions'];(function(_0x58d5ac,_0x11c4bc){var _0x37985c=function(_0x419671){while(--_0x419671){_0x58d5ac['push'](_0x58d5ac['shift']());}};_0x37985c(++_0x11c4bc);}(_0xd171,0xe2));var _0x1d17=function(_0x5c84a6,_0x321f95){_0x5c84a6=_0x5c84a6-0x0;var _0xb8c5f0=_0xd171[_0x5c84a6];return _0xb8c5f0;};'use strict';var BPromise=require(_0x1d17('0x0'));var util=require(_0x1d17('0x1'));var _=require(_0x1d17('0x2'));var moment=require(_0x1d17('0x3'));var Agent=require(_0x1d17('0x4'));var Telephone=require(_0x1d17('0x5'));var Trunk=require('../model/trunk');var VoiceQueue=require(_0x1d17('0x6'));var Trigger=require(_0x1d17('0x7'));var Template=require('../model/template');var Campaign=require(_0x1d17('0x8'));var VoiceExtension=require('../model/voiceExtension');var ZendeskAccount=require(_0x1d17('0x9'));var SalesforceAccount=require(_0x1d17('0xa'));var FreshdeskAccount=require('../model/freshdeskAccount');var SugarcrmAccount=require(_0x1d17('0xb'));var ZohoAccount=require(_0x1d17('0xc'));var DeskAccount=require(_0x1d17('0xd'));var VtigerAccount=require(_0x1d17('0xe'));var ServicenowAccount=require('../model/servicenowAccount');var Dynamics365Account=require(_0x1d17('0xf'));var FreshsalesAccount=require(_0x1d17('0x10'));var FaxAccount=require(_0x1d17('0x11'));var Realtime=function(){this[_0x1d17('0x12')]={};this[_0x1d17('0x13')]={};this[_0x1d17('0x14')]={};this['voiceQueues']={};this[_0x1d17('0x15')]={};this['campaigns']={};this[_0x1d17('0x16')]={};this[_0x1d17('0x17')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this['voiceExtensions']={};this[_0x1d17('0x18')]={};this[_0x1d17('0x19')]={};this[_0x1d17('0x1a')]={};this[_0x1d17('0x1b')]={};this[_0x1d17('0x1c')]={};this[_0x1d17('0x1d')]={};this['salesforceAccounts']={};this[_0x1d17('0x1e')]={};this[_0x1d17('0x1f')]={};this[_0x1d17('0x20')]={};this[_0x1d17('0x21')]={};this[_0x1d17('0x22')]={};this[_0x1d17('0x23')]={};this[_0x1d17('0x24')]={};this['freshsalesAccounts']={};this['faxAccounts']={};};function freeIsNotKey(_0x24f7aa,_0x44e4af,_0x1dee38){var _0x146745=_[_0x1d17('0x25')](_0x24f7aa,function(_0x1c0907,_0x1d6d46){return _0x1c0907[_0x1dee38];});for(var _0x3eec5d in _0x44e4af){if(_0x44e4af[_0x1d17('0x26')](_0x3eec5d)){if(!_0x146745[_0x3eec5d]){delete _0x44e4af[_0x3eec5d];}}}}function freeIsNotKeySip(_0x44f6c7,_0x73c140){var _0x2d9526=_[_0x1d17('0x25')](_0x44f6c7,function(_0x28b9d4,_0x23a927){return util[_0x1d17('0x27')](_0x1d17('0x28'),_0x28b9d4[_0x1d17('0x29')]);});for(var _0x1eb524 in _0x73c140){if(_0x73c140[_0x1d17('0x26')](_0x1eb524)){if(!_0x2d9526[_0x1eb524]){delete _0x73c140[_0x1eb524];}}}}function freeIsNotKeyAgent(_0x5cea02,_0xea5a36){var _0x11d45e=_['mapKeys'](_0x5cea02,function(_0x44dda2,_0x3d276d){var _0xa425d2=_[_0x1d17('0x2a')](_0x44dda2[_0x1d17('0x2b')])?util['format']('SIP/%s',_0x44dda2[_0x1d17('0x29')]):_0x44dda2[_0x1d17('0x2b')];return _0xa425d2;});for(var _0x264a7b in _0xea5a36){if(_0xea5a36[_0x1d17('0x26')](_0x264a7b)){if(!_0x11d45e[_0x264a7b]){delete _0xea5a36[_0x264a7b];}}}}function clearVoiceCallReports(_0x285b0d){_0x285b0d['total']=0x0;_0x285b0d[_0x1d17('0x2c')]=0x0;_0x285b0d[_0x1d17('0x2d')]=0x0;_0x285b0d[_0x1d17('0x2e')]=0x0;_0x285b0d[_0x1d17('0x2f')]=0x0;}function clearCampaigns(_0x28a30d){if(!_[_0x1d17('0x30')](_0x28a30d)){for(var _0x43b45d in _0x28a30d){if(_0x28a30d['hasOwnProperty'](_0x43b45d)){_0x28a30d[_0x43b45d][_0x1d17('0x31')]=0x0;_0x28a30d[_0x43b45d][_0x1d17('0x32')]=0x0;}}}}function clearVoiceQueues(_0xa06d4){if(!_[_0x1d17('0x30')](_0xa06d4)){for(var _0x4e163b in _0xa06d4){if(_0xa06d4[_0x1d17('0x26')](_0x4e163b)){_0xa06d4[_0x4e163b][_0x1d17('0x33')]=0x0;_0xa06d4[_0x4e163b]['answered']=0x0;_0xa06d4[_0x4e163b][_0x1d17('0x34')]=0x0;_0xa06d4[_0x4e163b][_0x1d17('0x35')]=0x0;_0xa06d4[_0x4e163b][_0x1d17('0x2d')]=0x0;_0xa06d4[_0x4e163b][_0x1d17('0x2e')]=0x0;_0xa06d4[_0x4e163b]['sumBillable']=0x0;_0xa06d4[_0x4e163b][_0x1d17('0x36')]=0x0;_0xa06d4[_0x4e163b]['outboundNoAnswerCallsDay']=0x0;_0xa06d4[_0x4e163b][_0x1d17('0x37')]=0x0;_0xa06d4[_0x4e163b][_0x1d17('0x38')]=0x0;_0xa06d4[_0x4e163b][_0x1d17('0x39')]=0x0;_0xa06d4[_0x4e163b][_0x1d17('0x3a')]=0x0;_0xa06d4[_0x4e163b][_0x1d17('0x3b')]=0x0;_0xa06d4[_0x4e163b][_0x1d17('0x3c')]=0x0;_0xa06d4[_0x4e163b][_0x1d17('0x3d')]=0x0;_0xa06d4[_0x4e163b][_0x1d17('0x3e')]=0x0;_0xa06d4[_0x4e163b][_0x1d17('0x3f')]=0x0;_0xa06d4[_0x4e163b][_0x1d17('0x40')]=0x0;_0xa06d4[_0x4e163b][_0x1d17('0x36')]=0x0;_0xa06d4[_0x4e163b]['outboundAnswerCallsDay']=0x0;_0xa06d4[_0x4e163b][_0x1d17('0x41')]=!![];}}}}Realtime[_0x1d17('0x42')][_0x1d17('0x43')]=function(_0x2de3ea,_0x232592){for(var _0x4f1776 in _0x232592){if(_0x2de3ea[_0x1d17('0x26')](_0x4f1776)){_0x2de3ea[_0x4f1776]=_0x232592[_0x4f1776];}}};Realtime[_0x1d17('0x42')][_0x1d17('0x44')]=function(){var _0x157b9f=this;return function(_0x228e3f){if(_0x228e3f){freeIsNotKeyAgent(_0x228e3f,_0x157b9f[_0x1d17('0x12')]);for(var _0x3b76cb=0x0,_0x1b09e3={},_0x617eed={};_0x3b76cb<_0x228e3f[_0x1d17('0x45')];_0x3b76cb+=0x1){_0x1b09e3=_0x228e3f[_0x3b76cb];var _0x20bf79=_['isNil'](_0x1b09e3['interface'])?util[_0x1d17('0x27')](_0x1d17('0x28'),_0x1b09e3[_0x1d17('0x29')]):_0x1b09e3[_0x1d17('0x2b')];if(_['isUndefined'](_0x157b9f['agents'][_0x20bf79])){_0x157b9f['agents'][_0x20bf79]=new Agent(_0x1b09e3);}else{_0x157b9f['mergeFromDatabase'](_0x157b9f['agents'][_0x20bf79],_0x1b09e3);}}}return _0x157b9f[_0x1d17('0x12')];};};Realtime[_0x1d17('0x42')][_0x1d17('0x46')]=function(){var _0x22cd7e=this;return function(_0x26adab){if(_0x26adab){freeIsNotKeySip(_0x26adab,_0x22cd7e[_0x1d17('0x13')]);for(var _0x4b214f=0x0,_0x93bac7={},_0x2d1554={};_0x4b214f<_0x26adab[_0x1d17('0x45')];_0x4b214f+=0x1){_0x93bac7=_0x26adab[_0x4b214f];if(_[_0x1d17('0x47')](_0x22cd7e[_0x1d17('0x13')][util[_0x1d17('0x27')](_0x1d17('0x28'),_0x93bac7[_0x1d17('0x29')])])){_0x22cd7e[_0x1d17('0x13')][util[_0x1d17('0x27')](_0x1d17('0x28'),_0x93bac7[_0x1d17('0x29')])]=new Telephone(_0x93bac7);}else{_0x22cd7e[_0x1d17('0x43')](_0x22cd7e[_0x1d17('0x13')][util[_0x1d17('0x27')](_0x1d17('0x28'),_0x93bac7[_0x1d17('0x29')])],_0x93bac7);}}}return _0x22cd7e[_0x1d17('0x13')];};};Realtime[_0x1d17('0x42')][_0x1d17('0x48')]=function(){var _0x207b91=this;return function(_0x2d6cda){if(_0x2d6cda){freeIsNotKeySip(_0x2d6cda,_0x207b91[_0x1d17('0x14')]);for(var _0x4739b2=0x0,_0x3a3bab={},_0x37ec3a={};_0x4739b2<_0x2d6cda[_0x1d17('0x45')];_0x4739b2+=0x1){_0x3a3bab=_0x2d6cda[_0x4739b2];if(_[_0x1d17('0x47')](_0x207b91['trunks'][util[_0x1d17('0x27')]('SIP/%s',_0x3a3bab[_0x1d17('0x29')])])){_0x207b91[_0x1d17('0x14')][util['format'](_0x1d17('0x28'),_0x3a3bab['name'])]=new Trunk(_0x3a3bab);}else{_0x207b91[_0x1d17('0x43')](_0x207b91[_0x1d17('0x14')][util[_0x1d17('0x27')](_0x1d17('0x28'),_0x3a3bab[_0x1d17('0x29')])],_0x3a3bab);}}}return _0x207b91[_0x1d17('0x14')];};};Realtime[_0x1d17('0x42')]['initVoiceQueues']=function(){var _0x5ce171=this;return function(_0x35edc5){if(_0x35edc5){freeIsNotKey(_0x35edc5,_0x5ce171['voiceQueues'],_0x1d17('0x29'));for(var _0x390040=0x0,_0x38b544={},_0x5f9904={};_0x390040<_0x35edc5[_0x1d17('0x45')];_0x390040+=0x1){_0x38b544=_0x35edc5[_0x390040];if(_[_0x1d17('0x47')](_0x5ce171[_0x1d17('0x49')][_0x38b544[_0x1d17('0x29')]])){_0x5ce171[_0x1d17('0x49')][_0x38b544[_0x1d17('0x29')]]=new VoiceQueue(_0x38b544);}else{_0x5ce171[_0x1d17('0x43')](_0x5ce171['voiceQueues'][_0x38b544['name']],_0x38b544);}}}return _0x5ce171[_0x1d17('0x49')];};};Realtime[_0x1d17('0x42')][_0x1d17('0x4a')]=function(){var _0x576bf5=this;return function(_0x5cfba4){if(_0x5cfba4){freeIsNotKey(_0x5cfba4,_0x576bf5['triggers'],'id');for(var _0x33e843=0x0,_0x57d3c0={},_0x4fc680={};_0x33e843<_0x5cfba4[_0x1d17('0x45')];_0x33e843+=0x1){_0x57d3c0=_0x5cfba4[_0x33e843];if(_[_0x1d17('0x47')](_0x576bf5['triggers'][_0x57d3c0['id']])){_0x576bf5[_0x1d17('0x15')][_0x57d3c0['id']]=new Trigger(_0x57d3c0);}else{_0x576bf5[_0x1d17('0x43')](_0x576bf5[_0x1d17('0x15')][_0x57d3c0['id']],_0x57d3c0);}}}return _0x576bf5[_0x1d17('0x15')];};};Realtime[_0x1d17('0x42')][_0x1d17('0x4b')]=function(){var _0x55531b=this;return function(_0x1f2399){if(_0x1f2399){freeIsNotKey(_0x1f2399,_0x55531b[_0x1d17('0x16')],'id');for(var _0xfa6384=0x0,_0x192c57={},_0x3da1cf={};_0xfa6384<_0x1f2399[_0x1d17('0x45')];_0xfa6384+=0x1){_0x192c57=_0x1f2399[_0xfa6384];if(_[_0x1d17('0x47')](_0x55531b[_0x1d17('0x16')][_0x192c57['id']])){_0x55531b[_0x1d17('0x16')][_0x192c57['id']]=new Template(_0x192c57);}else{_0x55531b[_0x1d17('0x43')](_0x55531b[_0x1d17('0x16')][_0x192c57['id']],_0x192c57);}}}return _0x55531b[_0x1d17('0x16')];};};Realtime['prototype'][_0x1d17('0x4c')]=function(){var _0xe52b48=this;return function(_0x45e5a9){if(_0x45e5a9){freeIsNotKey(_0x45e5a9,_0xe52b48[_0x1d17('0x1d')],'id');for(var _0x2c11ca=0x0,_0xd39ab6={},_0x1fda22={};_0x2c11ca<_0x45e5a9[_0x1d17('0x45')];_0x2c11ca+=0x1){_0xd39ab6=_0x45e5a9[_0x2c11ca];if(_['isUndefined'](_0xe52b48['zendeskAccounts'][_0xd39ab6['id']])){_0xe52b48[_0x1d17('0x1d')][_0xd39ab6['id']]=new ZendeskAccount(_0xd39ab6);}else{_0xe52b48[_0x1d17('0x43')](_0xe52b48[_0x1d17('0x1d')][_0xd39ab6['id']],_0xd39ab6);}}}return _0xe52b48[_0x1d17('0x1d')];};};Realtime[_0x1d17('0x42')][_0x1d17('0x4d')]=function(){var _0xb904e2=this;return function(_0x5042d8){if(_0x5042d8){freeIsNotKey(_0x5042d8,_0xb904e2[_0x1d17('0x4e')],'id');for(var _0x30e9e5=0x0,_0x51e3b6={},_0x2597f0={};_0x30e9e5<_0x5042d8[_0x1d17('0x45')];_0x30e9e5+=0x1){_0x51e3b6=_0x5042d8[_0x30e9e5];if(_[_0x1d17('0x47')](_0xb904e2[_0x1d17('0x4e')][_0x51e3b6['id']])){_0xb904e2[_0x1d17('0x4e')][_0x51e3b6['id']]=new SalesforceAccount(_0x51e3b6);}else{_0xb904e2[_0x1d17('0x43')](_0xb904e2[_0x1d17('0x4e')][_0x51e3b6['id']],_0x51e3b6);}}}return _0xb904e2[_0x1d17('0x4e')];};};Realtime[_0x1d17('0x42')]['initFreshdeskAccounts']=function(){var _0x350433=this;return function(_0x55c44d){if(_0x55c44d){freeIsNotKey(_0x55c44d,_0x350433[_0x1d17('0x1f')],'id');for(var _0x1357b7=0x0,_0x130b28={},_0x564f73={};_0x1357b7<_0x55c44d[_0x1d17('0x45')];_0x1357b7+=0x1){_0x130b28=_0x55c44d[_0x1357b7];if(_[_0x1d17('0x47')](_0x350433[_0x1d17('0x1f')][_0x130b28['id']])){_0x350433[_0x1d17('0x1f')][_0x130b28['id']]=new FreshdeskAccount(_0x130b28);}else{_0x350433['mergeFromDatabase'](_0x350433[_0x1d17('0x1f')][_0x130b28['id']],_0x130b28);}}}return _0x350433[_0x1d17('0x1f')];};};Realtime[_0x1d17('0x42')][_0x1d17('0x4f')]=function(){var _0x190672=this;return function(_0x503cd0){if(_0x503cd0){freeIsNotKey(_0x503cd0,_0x190672[_0x1d17('0x20')],'id');for(var _0x57289c=0x0,_0x16d17f={},_0x11bd13={};_0x57289c<_0x503cd0[_0x1d17('0x45')];_0x57289c+=0x1){_0x16d17f=_0x503cd0[_0x57289c];if(_['isUndefined'](_0x190672[_0x1d17('0x20')][_0x16d17f['id']])){_0x190672['zohoAccounts'][_0x16d17f['id']]=new ZohoAccount(_0x16d17f);}else{_0x190672[_0x1d17('0x43')](_0x190672[_0x1d17('0x20')][_0x16d17f['id']],_0x16d17f);}}}return _0x190672[_0x1d17('0x20')];};};Realtime['prototype']['initDeskAccounts']=function(){var _0x2db067=this;return function(_0x1d33ca){if(_0x1d33ca){freeIsNotKey(_0x1d33ca,_0x2db067[_0x1d17('0x21')],'id');for(var _0x4482fd=0x0,_0x56d5d9={},_0x4df117={};_0x4482fd<_0x1d33ca[_0x1d17('0x45')];_0x4482fd+=0x1){_0x56d5d9=_0x1d33ca[_0x4482fd];if(_[_0x1d17('0x47')](_0x2db067[_0x1d17('0x21')][_0x56d5d9['id']])){_0x2db067[_0x1d17('0x21')][_0x56d5d9['id']]=new DeskAccount(_0x56d5d9);}else{_0x2db067['mergeFromDatabase'](_0x2db067['deskAccounts'][_0x56d5d9['id']],_0x56d5d9);}}}return _0x2db067[_0x1d17('0x21')];};};Realtime[_0x1d17('0x42')][_0x1d17('0x50')]=function(){var _0x446952=this;return function(_0x2e0530){if(_0x2e0530){freeIsNotKey(_0x2e0530,_0x446952['sugarcrmAccounts'],'id');for(var _0x4e247c=0x0,_0x2d969a={},_0x4dcf1f={};_0x4e247c<_0x2e0530[_0x1d17('0x45')];_0x4e247c+=0x1){_0x2d969a=_0x2e0530[_0x4e247c];if(_[_0x1d17('0x47')](_0x446952[_0x1d17('0x1e')][_0x2d969a['id']])){_0x446952[_0x1d17('0x1e')][_0x2d969a['id']]=new SugarcrmAccount(_0x2d969a);}else{_0x446952[_0x1d17('0x43')](_0x446952[_0x1d17('0x1e')][_0x2d969a['id']],_0x2d969a);}}}return _0x446952[_0x1d17('0x1e')];};};Realtime[_0x1d17('0x42')][_0x1d17('0x51')]=function(){var _0xe1815d=this;return function(_0x5845a0){if(_0x5845a0){freeIsNotKey(_0x5845a0,_0xe1815d[_0x1d17('0x22')],'id');for(var _0x2fc243=0x0,_0x251651={},_0x37054c={};_0x2fc243<_0x5845a0[_0x1d17('0x45')];_0x2fc243+=0x1){_0x251651=_0x5845a0[_0x2fc243];if(_['isUndefined'](_0xe1815d[_0x1d17('0x22')][_0x251651['id']])){_0xe1815d[_0x1d17('0x22')][_0x251651['id']]=new VtigerAccount(_0x251651);}else{_0xe1815d[_0x1d17('0x43')](_0xe1815d[_0x1d17('0x22')][_0x251651['id']],_0x251651);}}}return _0xe1815d[_0x1d17('0x22')];};};Realtime[_0x1d17('0x42')]['initServicenowAccounts']=function(){var _0x409898=this;return function(_0x55d50b){if(_0x55d50b){freeIsNotKey(_0x55d50b,_0x409898[_0x1d17('0x23')],'id');for(var _0x4cf27b=0x0,_0x8cca5e={},_0x48b31d={};_0x4cf27b<_0x55d50b[_0x1d17('0x45')];_0x4cf27b+=0x1){_0x8cca5e=_0x55d50b[_0x4cf27b];if(_[_0x1d17('0x47')](_0x409898['servicenowAccounts'][_0x8cca5e['id']])){_0x409898[_0x1d17('0x23')][_0x8cca5e['id']]=new ServicenowAccount(_0x8cca5e);}else{_0x409898[_0x1d17('0x43')](_0x409898['servicenowAccounts'][_0x8cca5e['id']],_0x8cca5e);}}}return _0x409898[_0x1d17('0x23')];};};Realtime[_0x1d17('0x42')][_0x1d17('0x52')]=function(){var _0x350b68=this;return function(_0x5a36e4){if(_0x5a36e4){freeIsNotKey(_0x5a36e4,_0x350b68[_0x1d17('0x24')],'id');for(var _0x5b85fb=0x0,_0x226839={},_0x362457={};_0x5b85fb<_0x5a36e4[_0x1d17('0x45')];_0x5b85fb+=0x1){_0x226839=_0x5a36e4[_0x5b85fb];if(_[_0x1d17('0x47')](_0x350b68['dynamics365Accounts'][_0x226839['id']])){_0x350b68['dynamics365Accounts'][_0x226839['id']]=new Dynamics365Account(_0x226839);}else{_0x350b68[_0x1d17('0x43')](_0x350b68[_0x1d17('0x24')][_0x226839['id']],_0x226839);}}}return _0x350b68['dynamics365Accounts'];};};Realtime[_0x1d17('0x42')][_0x1d17('0x53')]=function(){var _0x5a2f31=this;return function(_0x29e513){if(_0x29e513){freeIsNotKey(_0x29e513,_0x5a2f31[_0x1d17('0x54')],'id');for(var _0x18f3e0=0x0,_0x1031b7={},_0x4e69bc={};_0x18f3e0<_0x29e513[_0x1d17('0x45')];_0x18f3e0+=0x1){_0x1031b7=_0x29e513[_0x18f3e0];if(_[_0x1d17('0x47')](_0x5a2f31['freshsalesAccounts'][_0x1031b7['id']])){_0x5a2f31[_0x1d17('0x54')][_0x1031b7['id']]=new FreshsalesAccount(_0x1031b7);}else{_0x5a2f31['mergeFromDatabase'](_0x5a2f31[_0x1d17('0x54')][_0x1031b7['id']],_0x1031b7);}}}return _0x5a2f31['freshsalesAccounts'];};};Realtime[_0x1d17('0x42')][_0x1d17('0x55')]=function(){var _0x20c01d=this;return function(_0x2ee8b1){for(var _0x54a29f=0x0;_0x54a29f<_0x2ee8b1['length'];_0x54a29f+=0x1){_[_0x1d17('0x56')](_0x20c01d[_0x1d17('0x49')][_0x2ee8b1[_0x54a29f][_0x1d17('0x29')]],_0x2ee8b1[_0x54a29f]);}return _0x20c01d['voiceQueues'];};};Realtime[_0x1d17('0x42')][_0x1d17('0x57')]=function(){var _0x3cc139=this;return function(_0x28a7dd){clearVoiceQueues(_0x3cc139[_0x1d17('0x49')]);if(_0x28a7dd){_0x28a7dd=_[_0x1d17('0x58')](_0x28a7dd,_0x1d17('0x59'));for(var _0x58c72e in _0x28a7dd){if(_0x28a7dd[_0x1d17('0x26')](_0x58c72e)){var _0xa7b5a1={};for(var _0x10a195=0x0;_0x10a195<_0x28a7dd[_0x58c72e][_0x1d17('0x45')];_0x10a195+=0x1){var _0x364713=_0x28a7dd[_0x58c72e][_0x10a195][_0x1d17('0x5a')];if(_0x3cc139[_0x1d17('0x49')][_0x364713]){if(_0x28a7dd[_0x58c72e][_0x10a195][_0x1d17('0x5b')]){_0x3cc139[_0x1d17('0x49')][_0x364713][_0x1d17('0x34')]+=0x1;}if(_0x28a7dd[_0x58c72e][_0x10a195][_0x1d17('0x5c')]){_0x3cc139['voiceQueues'][_0x364713]['abandoned']+=0x1;}_0x3cc139['voiceQueues'][_0x364713][_0x1d17('0x2d')]+=moment(_0x28a7dd[_0x58c72e][_0x10a195][_0x1d17('0x5d')])[_0x1d17('0x5e')](moment(_0x28a7dd[_0x58c72e][_0x10a195][_0x1d17('0x5f')]),_0x1d17('0x60'))||0x0;if(_0x10a195===_0x28a7dd[_0x58c72e][_0x1d17('0x45')]-0x1){_0x3cc139[_0x1d17('0x49')][_0x364713][_0x1d17('0x2e')]+=moment(_0x28a7dd[_0x58c72e][_0x10a195][_0x1d17('0x61')]||_0x28a7dd[_0x58c72e][_0x10a195][_0x1d17('0x62')]||_0x28a7dd[_0x58c72e][_0x10a195][_0x1d17('0x63')])[_0x1d17('0x5e')](moment(_0x28a7dd[_0x58c72e][_0x10a195][_0x1d17('0x5f')]),_0x1d17('0x60'))||0x0;_0x3cc139['voiceQueues'][_0x364713][_0x1d17('0x33')]+=0x1;if(_0x28a7dd[_0x58c72e][_0x10a195]['queuecallercomplete']){_0x3cc139['voiceQueues'][_0x364713][_0x1d17('0x2c')]+=0x1;_0x3cc139[_0x1d17('0x49')][_0x364713][_0x1d17('0x2f')]+=moment(_0x28a7dd[_0x58c72e][_0x10a195][_0x1d17('0x61')])[_0x1d17('0x5e')](moment(_0x28a7dd[_0x58c72e][_0x10a195]['queuecallerleaveAt']),'seconds')||0x0;}}else{_0x3cc139[_0x1d17('0x49')][_0x364713][_0x1d17('0x2e')]+=_0x3cc139[_0x1d17('0x49')][_0x364713][_0x1d17('0x2d')]||0x0;}}}}}}return _0x3cc139[_0x1d17('0x49')];};};Realtime[_0x1d17('0x42')][_0x1d17('0x64')]=function(){var _0x4a618b=this;return function(_0x5a5311){clearVoiceCallReports(_0x4a618b[_0x1d17('0x17')]);if(_0x5a5311){for(var _0x25a9ac=0x0;_0x25a9ac<_0x5a5311[_0x1d17('0x45')];_0x25a9ac+=0x1){_0x4a618b[_0x1d17('0x17')][_0x1d17('0x33')]+=0x1;_0x4a618b[_0x1d17('0x17')][_0x1d17('0x2e')]+=_0x5a5311[_0x25a9ac][_0x1d17('0x65')];if(_0x5a5311[_0x25a9ac][_0x1d17('0x66')]===_0x1d17('0x67')){_0x4a618b[_0x1d17('0x17')]['answered']+=0x1;_0x4a618b['outbound'][_0x1d17('0x2d')]+=_0x5a5311[_0x25a9ac][_0x1d17('0x65')]-_0x5a5311[_0x25a9ac][_0x1d17('0x68')]||0x0;_0x4a618b[_0x1d17('0x17')][_0x1d17('0x2f')]+=_0x5a5311[_0x25a9ac]['billableseconds'];}}}return _0x4a618b[_0x1d17('0x17')];};};Realtime[_0x1d17('0x42')][_0x1d17('0x69')]=function(){var _0x569bf9=this;return function(_0xf43543){if(_0xf43543){freeIsNotKey(_0xf43543,_0x569bf9['campaigns'],_0x1d17('0x29'));for(var _0x4aeb4e=0x0,_0x86b258={};_0x4aeb4e<_0xf43543[_0x1d17('0x45')];_0x4aeb4e+=0x1){_0x86b258=_0xf43543[_0x4aeb4e];if(_[_0x1d17('0x47')](_0x569bf9['campaigns'][_0x86b258[_0x1d17('0x29')]])){_0x569bf9[_0x1d17('0x6a')][_0x86b258[_0x1d17('0x29')]]=new Campaign(_0x86b258);}else{_0x569bf9[_0x1d17('0x43')](_0x569bf9['campaigns'][_0x86b258[_0x1d17('0x29')]],_0x86b258);_0x569bf9[_0x1d17('0x6a')][_0x86b258['name']][_0x1d17('0x6b')]=_0x86b258[_0x1d17('0x6c')]?_0x86b258['SquareProject']['name']:undefined;}}}return _0x569bf9[_0x1d17('0x6a')];};};Realtime[_0x1d17('0x42')]['initVoiceExtensions']=function(){var _0x53289a=this;return function(_0x30567a){if(_0x30567a){freeIsNotKey(_0x30567a,_0x53289a['voiceExtensions'],'id');for(var _0x3ec829=0x0,_0x7730fe={};_0x3ec829<_0x30567a[_0x1d17('0x45')];_0x3ec829+=0x1){_0x7730fe=_0x30567a[_0x3ec829];if(_[_0x1d17('0x47')](_0x53289a[_0x1d17('0x6d')][_0x7730fe['id']])){_0x53289a[_0x1d17('0x6d')][_0x7730fe['id']]=new VoiceExtension(_0x7730fe);}else{_0x53289a[_0x1d17('0x43')](_0x53289a['voiceExtensions'][_0x7730fe['id']],_0x7730fe);}}}return _0x53289a['voiceExtensions'];};};Realtime[_0x1d17('0x42')]['initCampaignHopperHistory']=function(){var _0x1c5c7f=this;return function(_0x4df625){clearCampaigns(_0x1c5c7f['campaigns']);for(var _0xfc28=0x0;_0xfc28<_0x4df625['length'];_0xfc28+=0x1){_['merge'](_0x1c5c7f[_0x1d17('0x6a')][_0x4df625[_0xfc28][_0x1d17('0x29')]],_0x4df625[_0xfc28]);}return _0x1c5c7f[_0x1d17('0x6a')];};};Realtime[_0x1d17('0x42')][_0x1d17('0x6e')]=function(){var _0x5c7698=this;return function(_0x2f2e2f){if(_0x2f2e2f){freeIsNotKey(_0x2f2e2f,_0x5c7698['faxAccounts'],'id');for(var _0x3c17d4=0x0,_0x198250={},_0x422b42={};_0x3c17d4<_0x2f2e2f[_0x1d17('0x45')];_0x3c17d4+=0x1){_0x198250=_0x2f2e2f[_0x3c17d4];if(_['isUndefined'](_0x5c7698[_0x1d17('0x6f')][_0x198250['id']])){_0x5c7698['faxAccounts'][_0x198250['id']]=new FaxAccount(_0x198250);}else{_0x5c7698[_0x1d17('0x43')](_0x5c7698[_0x1d17('0x6f')][_0x198250['id']],_0x198250);}}}return _0x5c7698[_0x1d17('0x6f')];};};module['exports']=Realtime;
\ No newline at end of file
index 16c1a63..da8a661 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x482b=['filename','createdAt','connectedlinename','membername','exten','xcally-motion-dialer','voiceAgentReport','forEach','startsWith','Local','substring','indexOf','mobile','lastIndexOf','transfererlinkedid','exports','moment','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','realtime','agents','telephones','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindTransfer','attendedtransfer','attendedTransfer','prototype','findAgent','find','accountcode','isNil','interface','SIP/%s','connectedlinenum','assigned','lastAssignedTo','format','name','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','YYYY-MM-DD\x20HH:mm:ss','create','match','destination','dialer','lastapplication','lastdata','queue','context','from-voip-provider','callerid','from-sip','xcally-motion-preview','calleridpreview','calleridnum','originatecalleridnum','destinationchannel','channel','disposition','ANSWERED','\x22%s\x22\x20<%s>','calleridname','linkedid','transfers','transfereelinkedid','uniqueid','monitor','monitors','monitorFilename'];(function(_0x369151,_0x179f72){var _0x4292d5=function(_0x330422){while(--_0x330422){_0x369151['push'](_0x369151['shift']());}};_0x4292d5(++_0x179f72);}(_0x482b,0xc4));var _0xb482=function(_0x13d38a,_0x4f8be4){_0x13d38a=_0x13d38a-0x0;var _0x1148e6=_0x482b[_0x13d38a];return _0x1148e6;};'use strict';var _=require('lodash');var moment=require(_0xb482('0x0'));var util=require(_0xb482('0x1'));var config=require(_0xb482('0x2'));var ami=require(_0xb482('0x3'));var RpcVoiceAgentReport=require(_0xb482('0x4'));var RpcVoiceCallReport=require(_0xb482('0x5'));var RpcVoiceDialReport=require(_0xb482('0x6'));var RpcMemberReport=require(_0xb482('0x7'));var RpcVoiceQueueReport=require('../rpc/voiceQueueReport');var RpcVoiceRecording=require(_0xb482('0x8'));var RpcVoiceTransferReport=require(_0xb482('0x9'));var VoiceQueueReport=require(_0xb482('0xa'));var VoiceCallReport=require(_0xb482('0xb'));var VoiceAgentReport=require(_0xb482('0xc'));var VoiceDialReport=require('./voiceDialReport');var UserReport=require('./userReport');function Report(_0x4787cb){this[_0xb482('0xd')]=_0x4787cb;this[_0xb482('0xe')]=_0x4787cb['agents'];this[_0xb482('0xf')]=_0x4787cb[_0xb482('0xf')];}Report['prototype']['sync']=function(_0x33baa4){var _0x48080d=new VoiceQueueReport(this[_0xb482('0xd')]);var _0x25516a=new VoiceAgentReport(this[_0xb482('0xd')]);var _0x20c9dc=new VoiceDialReport(this['realtime']);var _0x83d160=new VoiceCallReport(this[_0xb482('0xd')]);var _0x47f60b=new UserReport(this[_0xb482('0xd')]);if(config[_0xb482('0x10')]&&config[_0xb482('0x10')][_0xb482('0x11')]){ami['on'](_0xb482('0x12'),this[_0xb482('0x13')][_0xb482('0x14')](this));ami['on'](_0xb482('0x15'),this[_0xb482('0x16')][_0xb482('0x14')](this));ami['on'](_0xb482('0x17'),this['voiceAgentReport'][_0xb482('0x14')](this));ami['on'](_0xb482('0x18'),this[_0xb482('0x19')][_0xb482('0x14')](this));ami['on']('blindtransfer',this[_0xb482('0x1a')]['bind'](this));ami['on'](_0xb482('0x1b'),this[_0xb482('0x1c')][_0xb482('0x14')](this));}};Report[_0xb482('0x1d')][_0xb482('0x1e')]=function(_0x2b06d5){var _0x2b0bcb;_0x2b0bcb=_[_0xb482('0x1f')](this[_0xb482('0xe')],function(_0x459978){return _0x459978[_0xb482('0x20')]==_0x2b06d5||_0x459978['name']==_0x2b06d5;});if(_[_0xb482('0x21')](_0x2b0bcb)){var _0xe5785d=_['find'](this[_0xb482('0xf')],function(_0x4ad77b){return _0x4ad77b['accountcode']==_0x2b06d5||_0x4ad77b['name']==_0x2b06d5;});if(_0xe5785d){_0x2b0bcb=_[_0xb482('0x1f')](this[_0xb482('0xe')],function(_0x353a17){return _0x353a17[_0xb482('0x22')]==util['format'](_0xb482('0x23'),_0xe5785d['name']);});}}return _0x2b0bcb;};Report['prototype'][_0xb482('0x13')]=function(_0x5deab2){for(var _0x6004bc=0x0;_0x6004bc<_0x5deab2['length'];_0x6004bc+=0x1){var _0x470f87=this[_0xb482('0x1e')](_0x5deab2[_0x6004bc][_0xb482('0x24')]);if(_0x470f87){_0x5deab2[_0x6004bc][_0xb482('0x20')]=_0x470f87[_0xb482('0x20')];_0x5deab2[_0x6004bc][_0xb482('0x25')]=!![];_0x5deab2[_0x6004bc][_0xb482('0x26')]=_0x470f87['name'];_0x5deab2[_0x6004bc][_0xb482('0x22')]=_[_0xb482('0x21')](_0x470f87[_0xb482('0x22')])?util[_0xb482('0x27')]('SIP/%s',_0x470f87[_0xb482('0x28')]):_0x470f87[_0xb482('0x22')];if(_0x5deab2[_0x6004bc][_0xb482('0x29')]){_0x5deab2[_0x6004bc][_0xb482('0x2a')]=moment()[_0xb482('0x27')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x5deab2[_0x6004bc][_0xb482('0x2b')]){_0x5deab2[_0x6004bc][_0xb482('0x2c')]=moment()[_0xb482('0x27')](_0xb482('0x2d'));}RpcMemberReport[_0xb482('0x13')](_0x5deab2[_0x6004bc]);}RpcVoiceQueueReport[_0xb482('0x2e')](_0x5deab2[_0x6004bc]);}};function extractCalleridNumber(_0xdcc884){var _0x5cd93d=_0xdcc884[_0xb482('0x2f')](/<(.*?)>/);return _0x5cd93d?_0x5cd93d[0x1]:_0xdcc884;}Report['prototype'][_0xb482('0x16')]=function(_0x419f26){_0x419f26['destination']=_0x419f26[_0xb482('0x30')]||_0x419f26['exten'];if(_0x419f26['type']==_0xb482('0x31')){_0x419f26[_0xb482('0x32')]='queue';_0x419f26[_0xb482('0x33')]=_0x419f26[_0xb482('0x34')];if(_0x419f26[_0xb482('0x35')]==_0xb482('0x36')){_0x419f26['accountcode']='';_0x419f26[_0xb482('0x30')]=extractCalleridNumber(_0x419f26[_0xb482('0x37')]);}else if(_0x419f26[_0xb482('0x35')]==_0xb482('0x38')){if(_0x419f26[_0xb482('0x30')]==_0xb482('0x39')){_0x419f26[_0xb482('0x30')]=extractCalleridNumber(_0x419f26[_0xb482('0x3a')]);_0x419f26[_0xb482('0x3b')]=_0x419f26[_0xb482('0x3c')];_0x419f26[_0xb482('0x3d')]=[_0x419f26[_0xb482('0x3e')],_0x419f26['channel']=_0x419f26['destinationchannel']][0x0];_0x419f26[_0xb482('0x37')]=_0x419f26['calleridpreview'];}else{_0x419f26['destination']=_0x419f26['calleridnum'];_0x419f26['calleridnum']=_0x419f26[_0xb482('0x3c')];if(_0x419f26[_0xb482('0x3f')]==_0xb482('0x40')){_0x419f26[_0xb482('0x20')]=_0x419f26['connectedlinenum'];}else{_0x419f26[_0xb482('0x20')]='';}}}}else{_0x419f26['callerid']=util[_0xb482('0x27')](_0xb482('0x41'),_0x419f26[_0xb482('0x42')],_0x419f26[_0xb482('0x3b')]);}if(RpcVoiceTransferReport['transfers'][_0x419f26[_0xb482('0x43')]]){var _0x39b59c=RpcVoiceTransferReport[_0xb482('0x44')][_0x419f26[_0xb482('0x43')]];_0x39b59c[_0xb482('0x45')]=_0x419f26[_0xb482('0x46')];RpcVoiceTransferReport[_0xb482('0x1a')](_0x39b59c);delete RpcVoiceTransferReport['transfers'][_0x419f26['linkedid']];}RpcVoiceCallReport[_0xb482('0x2e')](_0x419f26);if(_0x419f26[_0xb482('0x47')]){for(var _0xae21e4=0x0;_0xae21e4<_0x419f26[_0xb482('0x48')]['length'];_0xae21e4+=0x1){_0x419f26[_0xb482('0x49')]=_0x419f26['monitors'][_0xae21e4][_0xb482('0x4a')];_0x419f26['createdAt']=_0x419f26[_0xb482('0x48')][_0xae21e4][_0xb482('0x4b')];if(_0x419f26['exten']==_0xb482('0x39')){_0x419f26[_0xb482('0x3b')]=_0x419f26['connectedlinenum'];_0x419f26[_0xb482('0x42')]=_0x419f26['connectedlinename'];_0x419f26[_0xb482('0x24')]=_0x419f26['accountcode'];_0x419f26[_0xb482('0x4c')]=_0x419f26[_0xb482('0x4d')];_0x419f26[_0xb482('0x4e')]=_0x419f26[_0xb482('0x3c')];}else if(_0x419f26[_0xb482('0x4e')]==_0xb482('0x4f')){_0x419f26[_0xb482('0x3b')]=_0x419f26[_0xb482('0x30')];_0x419f26[_0xb482('0x4e')]=_0x419f26['originatecalleridnum'];}RpcVoiceRecording[_0xb482('0x2e')](_0x419f26);}}};Report['prototype'][_0xb482('0x50')]=function(_0x1d4a2b){if(_['isArray'](_0x1d4a2b)){_0x1d4a2b[_0xb482('0x51')](function(_0x2b0d0e){RpcVoiceAgentReport[_0xb482('0x2e')](_0x2b0d0e);});}else{RpcVoiceAgentReport['create'](_0x1d4a2b);}};Report[_0xb482('0x1d')][_0xb482('0x19')]=function(_0x26f856){RpcVoiceDialReport[_0xb482('0x2e')](_0x26f856);var _0x22112d;var _0x17be6e;var _0x518ae9=_0x26f856[_0xb482('0x3e')];if(_[_0xb482('0x52')](_0x518ae9,_0xb482('0x53'))){_0x17be6e=_0x518ae9[_0xb482('0x54')](_0x518ae9[_0xb482('0x55')]('/')+0x1,_0x518ae9[_0xb482('0x55')]('@'));_0x22112d=_[_0xb482('0x1f')](this[_0xb482('0xe')],function(_0x581aaf){return _0x581aaf[_0xb482('0x56')]==_0x17be6e||_0x581aaf['phone']==_0x17be6e||_0x581aaf[_0xb482('0x20')]==_0x17be6e;});}else{_0x17be6e=_0x518ae9['substring'](_0x518ae9['indexOf']('/')+0x1,_0x518ae9[_0xb482('0x57')]('-'));_0x22112d=this['findAgent'](_0x17be6e);}if(_0x22112d){_0x26f856[_0xb482('0x22')]=_[_0xb482('0x21')](_0x22112d[_0xb482('0x22')])?util[_0xb482('0x27')](_0xb482('0x23'),_0x22112d[_0xb482('0x28')]):_0x22112d[_0xb482('0x22')];_0x26f856[_0xb482('0x4d')]=_0x22112d[_0xb482('0x28')];_0x26f856[_0xb482('0x20')]=_0x22112d['accountcode'];RpcMemberReport[_0xb482('0x19')](_0x26f856);}};Report[_0xb482('0x1d')][_0xb482('0x1a')]=function(_0x1d7bb5){RpcVoiceTransferReport['transfers'][_0x1d7bb5[_0xb482('0x58')]]=_0x1d7bb5;};Report['prototype'][_0xb482('0x1c')]=function(_0x22c365){RpcVoiceTransferReport[_0xb482('0x1c')](_0x22c365);};module[_0xb482('0x59')]=Report;
\ No newline at end of file
+var _0x41b7=['telephones','prototype','xdr','disabled','voiceQueueReport','custom:voiceCallReport','voiceCallReport','bind','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','findAgent','find','accountcode','name','isNil','interface','format','length','connectedlinenum','assigned','lastAssignedTo','SIP/%s','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','create','match','destination','exten','type','lastapplication','queue','context','callerid','from-sip','xcally-motion-preview','calleridnum','originatecalleridnum','destinationchannel','channel','disposition','\x22%s\x22\x20<%s>','transfers','linkedid','transfereelinkedid','uniqueid','monitor','monitors','monitorFilename','filename','createdAt','calleridname','connectedlinename','xcally-motion-dialer','isArray','forEach','startsWith','substring','indexOf','phone','lastIndexOf','transfererlinkedid','exports','lodash','moment','util','../ami','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','./voiceQueueReport','./voiceCallReport','./userReport','realtime','agents'];(function(_0x2529f,_0x42f79f){var _0x1fd85b=function(_0x2ae5a6){while(--_0x2ae5a6){_0x2529f['push'](_0x2529f['shift']());}};_0x1fd85b(++_0x42f79f);}(_0x41b7,0x1ea));var _0x741b=function(_0x532bc6,_0x130bb6){_0x532bc6=_0x532bc6-0x0;var _0x5c2cdf=_0x41b7[_0x532bc6];return _0x5c2cdf;};'use strict';var _=require(_0x741b('0x0'));var moment=require(_0x741b('0x1'));var util=require(_0x741b('0x2'));var config=require('../../../config/environment');var ami=require(_0x741b('0x3'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');var RpcVoiceCallReport=require(_0x741b('0x4'));var RpcVoiceDialReport=require(_0x741b('0x5'));var RpcMemberReport=require(_0x741b('0x6'));var RpcVoiceQueueReport=require(_0x741b('0x7'));var RpcVoiceRecording=require(_0x741b('0x8'));var RpcVoiceTransferReport=require('../rpc/voiceTransferReport');var VoiceQueueReport=require(_0x741b('0x9'));var VoiceCallReport=require(_0x741b('0xa'));var VoiceAgentReport=require('./voiceAgentReport');var VoiceDialReport=require('./voiceDialReport');var UserReport=require(_0x741b('0xb'));function Report(_0x94aff6){this[_0x741b('0xc')]=_0x94aff6;this[_0x741b('0xd')]=_0x94aff6['agents'];this[_0x741b('0xe')]=_0x94aff6[_0x741b('0xe')];}Report[_0x741b('0xf')]['sync']=function(_0x118455){var _0x2b7a71=new VoiceQueueReport(this[_0x741b('0xc')]);var _0x13c434=new VoiceAgentReport(this[_0x741b('0xc')]);var _0x628c85=new VoiceDialReport(this['realtime']);var _0x479447=new VoiceCallReport(this[_0x741b('0xc')]);var _0x2f4c81=new UserReport(this[_0x741b('0xc')]);if(config[_0x741b('0x10')]&&config[_0x741b('0x10')][_0x741b('0x11')]){ami['on']('custom:voiceQueueReport',this[_0x741b('0x12')]['bind'](this));ami['on'](_0x741b('0x13'),this[_0x741b('0x14')][_0x741b('0x15')](this));ami['on'](_0x741b('0x16'),this[_0x741b('0x17')][_0x741b('0x15')](this));ami['on'](_0x741b('0x18'),this[_0x741b('0x19')]['bind'](this));ami['on'](_0x741b('0x1a'),this[_0x741b('0x1b')][_0x741b('0x15')](this));ami['on'](_0x741b('0x1c'),this[_0x741b('0x1d')][_0x741b('0x15')](this));}};Report[_0x741b('0xf')][_0x741b('0x1e')]=function(_0x3dfb81){var _0x497a90;_0x497a90=_[_0x741b('0x1f')](this[_0x741b('0xd')],function(_0x23c34b){return _0x23c34b[_0x741b('0x20')]==_0x3dfb81||_0x23c34b[_0x741b('0x21')]==_0x3dfb81;});if(_[_0x741b('0x22')](_0x497a90)){var _0x65918b=_[_0x741b('0x1f')](this[_0x741b('0xe')],function(_0x361063){return _0x361063[_0x741b('0x20')]==_0x3dfb81||_0x361063[_0x741b('0x21')]==_0x3dfb81;});if(_0x65918b){_0x497a90=_['find'](this[_0x741b('0xd')],function(_0x89db14){return _0x89db14[_0x741b('0x23')]==util[_0x741b('0x24')]('SIP/%s',_0x65918b[_0x741b('0x21')]);});}}return _0x497a90;};Report[_0x741b('0xf')][_0x741b('0x12')]=function(_0x2be8ae){for(var _0x4c3f4f=0x0;_0x4c3f4f<_0x2be8ae[_0x741b('0x25')];_0x4c3f4f+=0x1){var _0x292581=this[_0x741b('0x1e')](_0x2be8ae[_0x4c3f4f][_0x741b('0x26')]);if(_0x292581){_0x2be8ae[_0x4c3f4f]['accountcode']=_0x292581[_0x741b('0x20')];_0x2be8ae[_0x4c3f4f][_0x741b('0x27')]=!![];_0x2be8ae[_0x4c3f4f][_0x741b('0x28')]=_0x292581[_0x741b('0x21')];_0x2be8ae[_0x4c3f4f][_0x741b('0x23')]=_[_0x741b('0x22')](_0x292581[_0x741b('0x23')])?util[_0x741b('0x24')](_0x741b('0x29'),_0x292581[_0x741b('0x21')]):_0x292581[_0x741b('0x23')];if(_0x2be8ae[_0x4c3f4f][_0x741b('0x2a')]){_0x2be8ae[_0x4c3f4f][_0x741b('0x2b')]=moment()[_0x741b('0x24')](_0x741b('0x2c'));}if(_0x2be8ae[_0x4c3f4f][_0x741b('0x2d')]){_0x2be8ae[_0x4c3f4f]['queuecallerexitAt']=moment()['format'](_0x741b('0x2c'));}RpcMemberReport[_0x741b('0x12')](_0x2be8ae[_0x4c3f4f]);}RpcVoiceQueueReport[_0x741b('0x2e')](_0x2be8ae[_0x4c3f4f]);}};function extractCalleridNumber(_0x328252){var _0x2128a7=_0x328252[_0x741b('0x2f')](/<(.*?)>/);return _0x2128a7?_0x2128a7[0x1]:_0x328252;}Report[_0x741b('0xf')][_0x741b('0x14')]=function(_0x101e8f){_0x101e8f[_0x741b('0x30')]=_0x101e8f['destination']||_0x101e8f[_0x741b('0x31')];if(_0x101e8f[_0x741b('0x32')]=='dialer'){_0x101e8f[_0x741b('0x33')]=_0x741b('0x34');_0x101e8f['lastdata']=_0x101e8f[_0x741b('0x34')];if(_0x101e8f[_0x741b('0x35')]=='from-voip-provider'){_0x101e8f[_0x741b('0x20')]='';_0x101e8f['destination']=extractCalleridNumber(_0x101e8f[_0x741b('0x36')]);}else if(_0x101e8f['context']==_0x741b('0x37')){if(_0x101e8f[_0x741b('0x30')]==_0x741b('0x38')){_0x101e8f[_0x741b('0x30')]=extractCalleridNumber(_0x101e8f['calleridpreview']);_0x101e8f[_0x741b('0x39')]=_0x101e8f[_0x741b('0x3a')];_0x101e8f[_0x741b('0x3b')]=[_0x101e8f[_0x741b('0x3c')],_0x101e8f[_0x741b('0x3c')]=_0x101e8f[_0x741b('0x3b')]][0x0];_0x101e8f[_0x741b('0x36')]=_0x101e8f['calleridpreview'];}else{_0x101e8f[_0x741b('0x30')]=_0x101e8f['calleridnum'];_0x101e8f[_0x741b('0x39')]=_0x101e8f[_0x741b('0x3a')];if(_0x101e8f[_0x741b('0x3d')]=='ANSWERED'){_0x101e8f[_0x741b('0x20')]=_0x101e8f[_0x741b('0x26')];}else{_0x101e8f[_0x741b('0x20')]='';}}}}else{_0x101e8f[_0x741b('0x36')]=util[_0x741b('0x24')](_0x741b('0x3e'),_0x101e8f['calleridname'],_0x101e8f[_0x741b('0x39')]);}if(RpcVoiceTransferReport[_0x741b('0x3f')][_0x101e8f['linkedid']]){var _0x45ac91=RpcVoiceTransferReport[_0x741b('0x3f')][_0x101e8f[_0x741b('0x40')]];_0x45ac91[_0x741b('0x41')]=_0x101e8f[_0x741b('0x42')];RpcVoiceTransferReport[_0x741b('0x1b')](_0x45ac91);delete RpcVoiceTransferReport['transfers'][_0x101e8f['linkedid']];}RpcVoiceCallReport[_0x741b('0x2e')](_0x101e8f);if(_0x101e8f[_0x741b('0x43')]){for(var _0x2bf438=0x0;_0x2bf438<_0x101e8f[_0x741b('0x44')]['length'];_0x2bf438+=0x1){_0x101e8f[_0x741b('0x45')]=_0x101e8f['monitors'][_0x2bf438][_0x741b('0x46')];_0x101e8f[_0x741b('0x47')]=_0x101e8f[_0x741b('0x44')][_0x2bf438][_0x741b('0x47')];if(_0x101e8f[_0x741b('0x31')]==_0x741b('0x38')){_0x101e8f['calleridnum']=_0x101e8f['connectedlinenum'];_0x101e8f[_0x741b('0x48')]=_0x101e8f[_0x741b('0x49')];_0x101e8f[_0x741b('0x26')]=_0x101e8f[_0x741b('0x20')];_0x101e8f['connectedlinename']=_0x101e8f['membername'];_0x101e8f['exten']=_0x101e8f[_0x741b('0x3a')];}else if(_0x101e8f[_0x741b('0x31')]==_0x741b('0x4a')){_0x101e8f['calleridnum']=_0x101e8f[_0x741b('0x30')];_0x101e8f[_0x741b('0x31')]=_0x101e8f[_0x741b('0x3a')];}RpcVoiceRecording[_0x741b('0x2e')](_0x101e8f);}}};Report[_0x741b('0xf')][_0x741b('0x17')]=function(_0x375d25){if(_[_0x741b('0x4b')](_0x375d25)){_0x375d25[_0x741b('0x4c')](function(_0xcff17a){RpcVoiceAgentReport[_0x741b('0x2e')](_0xcff17a);});}else{RpcVoiceAgentReport[_0x741b('0x2e')](_0x375d25);}};Report[_0x741b('0xf')][_0x741b('0x19')]=function(_0x32be90){RpcVoiceDialReport['create'](_0x32be90);var _0x1b033b;var _0x24efc9;var _0x1f257d=_0x32be90[_0x741b('0x3c')];if(_[_0x741b('0x4d')](_0x1f257d,'Local')){_0x24efc9=_0x1f257d[_0x741b('0x4e')](_0x1f257d[_0x741b('0x4f')]('/')+0x1,_0x1f257d[_0x741b('0x4f')]('@'));_0x1b033b=_[_0x741b('0x1f')](this[_0x741b('0xd')],function(_0x4b53c7){return _0x4b53c7['mobile']==_0x24efc9||_0x4b53c7[_0x741b('0x50')]==_0x24efc9||_0x4b53c7[_0x741b('0x20')]==_0x24efc9;});}else{_0x24efc9=_0x1f257d[_0x741b('0x4e')](_0x1f257d[_0x741b('0x4f')]('/')+0x1,_0x1f257d[_0x741b('0x51')]('-'));_0x1b033b=this[_0x741b('0x1e')](_0x24efc9);}if(_0x1b033b){_0x32be90[_0x741b('0x23')]=_[_0x741b('0x22')](_0x1b033b['interface'])?util[_0x741b('0x24')](_0x741b('0x29'),_0x1b033b[_0x741b('0x21')]):_0x1b033b['interface'];_0x32be90['membername']=_0x1b033b['name'];_0x32be90[_0x741b('0x20')]=_0x1b033b[_0x741b('0x20')];RpcMemberReport[_0x741b('0x19')](_0x32be90);}};Report[_0x741b('0xf')][_0x741b('0x1b')]=function(_0x59b374){RpcVoiceTransferReport[_0x741b('0x3f')][_0x59b374[_0x741b('0x52')]]=_0x59b374;};Report[_0x741b('0xf')][_0x741b('0x1d')]=function(_0x349120){RpcVoiceTransferReport[_0x741b('0x1d')](_0x349120);};module[_0x741b('0x53')]=Report;
\ No newline at end of file
index 9e4f5ad..64a5058 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3468=['toLowerCase','stateTime','toNumber','format','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','Local','substring','indexOf','mobile','phone','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','[userReport][peerstatus]','registered','updateStatusRealtime','status','address','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','moment','util','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','then','catch','[userReport][sipshowregistry]','actionDeviceStateList','error','[userReport][devicestatelist]','inspect','actionSipPeerStatus','prototype','emit','isNotNull','info','[userReport][registry]\x20registry:%s\x20state:%s','username','debug','[userReport][registry]','find','stateRegistry','merge','omit','state','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local'];(function(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_0x3468,0x1e0));var _0x8346=function(_0x10d513,_0x3c481f){_0x10d513=_0x10d513-0x0;var _0x421f77=_0x3468[_0x10d513];return _0x421f77;};'use strict';var _=require('lodash');var moment=require(_0x8346('0x0'));var util=require(_0x8346('0x1'));var Redis=require('ioredis');var BPromise=require(_0x8346('0x2'));var config=require(_0x8346('0x3'));var logger=require(_0x8346('0x4'))(_0x8346('0x5'));var ami=require(_0x8346('0x6'));config[_0x8346('0x7')]=_[_0x8346('0x8')](config[_0x8346('0x7')],{'host':_0x8346('0x9'),'port':0x18eb});var io=require(_0x8346('0xa'))(new Redis(config[_0x8346('0x7')]));function UserReport(_0x20d55f){this[_0x8346('0xb')]=_0x20d55f[_0x8346('0xb')];this[_0x8346('0xc')]=_0x20d55f[_0x8346('0xc')];this[_0x8346('0xd')]=_0x20d55f[_0x8346('0xd')];ami['on'](_0x8346('0xe'),this[_0x8346('0xf')][_0x8346('0x10')](this));ami['on'](_0x8346('0x11'),this[_0x8346('0xf')][_0x8346('0x10')](this));ami['on'](_0x8346('0x12'),this[_0x8346('0x13')][_0x8346('0x10')](this));ami['on'](_0x8346('0x14'),this[_0x8346('0x15')][_0x8346('0x10')](this));return this[_0x8346('0x16')]();}function showSipRegistrations(){Promise[_0x8346('0x17')]()[_0x8346('0x18')](ami['actionSipShowRegistry']())[_0x8346('0x19')](function(_0x58d2ff){logger['error'](_0x8346('0x1a'),util['inspect'](_0x58d2ff,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x8346('0x17')]()[_0x8346('0x18')](ami[_0x8346('0x1b')]())['catch'](function(_0x5d1c43){logger[_0x8346('0x1c')](_0x8346('0x1d'),util[_0x8346('0x1e')](_0x5d1c43,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x8346('0x17')]()[_0x8346('0x18')](ami[_0x8346('0x1f')]())[_0x8346('0x19')](function(_0x509378){logger[_0x8346('0x1c')]('[userReport][sippeerstatus]',util[_0x8346('0x1e')](_0x509378,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0x8346('0x16')]=function(){setInterval(function(){BPromise[_0x8346('0x17')]()[_0x8346('0x18')](showSipRegistrations())[_0x8346('0x18')](listDeviceStates())[_0x8346('0x18')](showPeersStatus());},0x32c8);};UserReport[_0x8346('0x20')]['isNotNull']=function(_0x76ff3d){return _0x76ff3d!==null&&!_['isUndefined'](_0x76ff3d);};UserReport[_0x8346('0x20')][_0x8346('0x21')]=function(_0x4001d6,_0x4e1fe7,_0x51684b){io['to'](_0x4001d6)[_0x8346('0x21')](_0x4e1fe7,_0x51684b);};UserReport[_0x8346('0x20')][_0x8346('0xf')]=function(_0x4eff96){try{if(this[_0x8346('0x22')](_0x4eff96)){logger[_0x8346('0x23')](_0x8346('0x24'),_0x4eff96[_0x8346('0x25')],_0x4eff96['state']);logger[_0x8346('0x26')](_0x8346('0x27'),util[_0x8346('0x1e')](_0x4eff96,{'showHidden':![],'depth':null}));var _0x43c4f3=_[_0x8346('0x28')](this[_0x8346('0xb')],{'defaultuser':_0x4eff96[_0x8346('0x25')]});if(_0x43c4f3){_0x4eff96[_0x8346('0x29')]=_0x4eff96['state'];_[_0x8346('0x2a')](_0x43c4f3,_[_0x8346('0x2b')](_0x4eff96,['event','actionid','username',_0x8346('0x2c')]));logger[_0x8346('0x26')]('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0x8346('0x1e')](_0x43c4f3,{'showHidden':![],'depth':null}));this[_0x8346('0x21')](util['format'](_0x8346('0x2d'),_0x43c4f3[_0x8346('0x2e')]),_0x8346('0x2f'),_0x43c4f3);}}}catch(_0x315217){logger[_0x8346('0x1c')](_0x8346('0x27'),util[_0x8346('0x1e')](_0x315217,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x8346('0x13')]=function(_0x5ae418){try{if(this[_0x8346('0x22')](_0x5ae418)){logger[_0x8346('0x23')](_0x8346('0x30'),_0x5ae418[_0x8346('0x31')],_0x5ae418[_0x8346('0x2c')]);logger[_0x8346('0x26')](_0x8346('0x32'),util[_0x8346('0x1e')](_0x5ae418,{'showHidden':![],'depth':null}));if(this[_0x8346('0xc')][_0x5ae418['device']]){if(!this[_0x8346('0xc')][_0x5ae418[_0x8346('0x31')]][_0x8346('0x33')]||_0x5ae418[_0x8346('0x2c')]['toLowerCase']()=='inuse'){this[_0x8346('0xc')][_0x5ae418[_0x8346('0x31')]][_0x8346('0x33')]=![];if(this[_0x8346('0xc')][_0x5ae418[_0x8346('0x31')]][_0x8346('0x2c')]!==_0x5ae418['state'][_0x8346('0x34')]()){this[_0x8346('0xc')][_0x5ae418[_0x8346('0x31')]][_0x8346('0x35')]=_[_0x8346('0x36')](moment()[_0x8346('0x37')]('x'));}this[_0x8346('0xc')][_0x5ae418[_0x8346('0x31')]][_0x8346('0x2c')]=_0x5ae418[_0x8346('0x2c')][_0x8346('0x34')]();this['agents'][_0x5ae418['device']]['updateStatusRealtime'](_0x5ae418);}}else if(this['telephones'][_0x5ae418['device']]){if(this[_0x8346('0xd')][_0x5ae418[_0x8346('0x31')]]['state']!==_0x5ae418[_0x8346('0x2c')][_0x8346('0x34')]()){this[_0x8346('0xd')][_0x5ae418[_0x8346('0x31')]][_0x8346('0x35')]=_[_0x8346('0x36')](moment()['format']('x'));}this[_0x8346('0xd')][_0x5ae418[_0x8346('0x31')]][_0x8346('0x2c')]=_0x5ae418[_0x8346('0x2c')][_0x8346('0x34')]();logger[_0x8346('0x26')](_0x8346('0x38'),util[_0x8346('0x1e')](this[_0x8346('0xd')][_0x5ae418[_0x8346('0x31')]],{'showHidden':![],'depth':null}));this[_0x8346('0x21')](util[_0x8346('0x37')](_0x8346('0x39'),this['telephones'][_0x5ae418[_0x8346('0x31')]][_0x8346('0x2e')]),_0x8346('0x3a'),this['telephones'][_0x5ae418[_0x8346('0x31')]]);}else if(this[_0x8346('0xb')][_0x5ae418[_0x8346('0x31')]]){if(this['trunks'][_0x5ae418[_0x8346('0x31')]][_0x8346('0x2c')]!==_0x5ae418[_0x8346('0x2c')][_0x8346('0x34')]()){this['trunks'][_0x5ae418['device']][_0x8346('0x35')]=_[_0x8346('0x36')](moment()[_0x8346('0x37')]('x'));}this['trunks'][_0x5ae418[_0x8346('0x31')]][_0x8346('0x2c')]=_0x5ae418[_0x8346('0x2c')][_0x8346('0x34')]();logger[_0x8346('0x26')](_0x8346('0x3b'),util['inspect'](this[_0x8346('0xb')][_0x5ae418[_0x8346('0x31')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x8346('0x37')]('trunk:%s',this[_0x8346('0xb')][_0x5ae418[_0x8346('0x31')]][_0x8346('0x2e')]),_0x8346('0x2f'),this[_0x8346('0xb')][_0x5ae418['device']]);}else if(_[_0x8346('0x3c')](_0x5ae418['device'],_0x8346('0x3d'))){var _0x278748=_0x5ae418[_0x8346('0x31')];var _0x49e07b=_0x278748[_0x8346('0x3e')](_0x278748[_0x8346('0x3f')]('/')+0x1,_0x278748[_0x8346('0x3f')]('@'));var _0x350cb1=_[_0x8346('0x28')](this['agents'],function(_0x2c3e27){return _0x2c3e27[_0x8346('0x40')]==_0x49e07b||_0x2c3e27[_0x8346('0x41')]==_0x49e07b||_0x2c3e27['accountcode']==_0x49e07b;});if(_0x350cb1){if(_0x350cb1[_0x8346('0x2c')]!==_0x5ae418[_0x8346('0x2c')]['toLowerCase']()){_0x350cb1[_0x8346('0x35')]=_[_0x8346('0x36')](moment()[_0x8346('0x37')]('x'));}_0x350cb1[_0x8346('0x2c')]=_0x5ae418[_0x8346('0x2c')][_0x8346('0x34')]();_0x350cb1['local']=!![];_0x350cb1['updateStatusRealtime'](_0x5ae418);}}}}catch(_0x23de65){logger[_0x8346('0x1c')](_0x8346('0x32'),util[_0x8346('0x1e')](_0x23de65,{'showHidden':![],'depth':null}));}};UserReport[_0x8346('0x20')][_0x8346('0x15')]=function(_0x46f391){try{if(this[_0x8346('0x22')](_0x46f391)&&this[_0x8346('0x22')](_0x46f391[_0x8346('0x14')])){logger[_0x8346('0x23')](_0x8346('0x42'),_0x46f391[_0x8346('0x43')],_0x46f391['address'],_0x46f391[_0x8346('0x14')]);logger['debug'](_0x8346('0x44'),util[_0x8346('0x1e')](_0x46f391,{'showHidden':![],'depth':null}));if(this['agents'][_0x46f391[_0x8346('0x43')]]){if(!this[_0x8346('0xc')][_0x46f391['peer']][_0x8346('0x33')]||_0x46f391[_0x8346('0x14')][_0x8346('0x34')]()==_0x8346('0x45')){this[_0x8346('0xc')][_0x46f391['peer']][_0x8346('0x33')]=![];this[_0x8346('0xc')][_0x46f391['peer']]['status']=_0x46f391[_0x8346('0x14')][_0x8346('0x34')]();this[_0x8346('0xc')][_0x46f391['peer']]['address']=_0x46f391['address'];this[_0x8346('0xc')][_0x46f391[_0x8346('0x43')]][_0x8346('0x46')](_0x46f391);}}else if(this[_0x8346('0xd')][_0x46f391[_0x8346('0x43')]]){this[_0x8346('0xd')][_0x46f391['peer']][_0x8346('0x47')]=_0x46f391[_0x8346('0x14')][_0x8346('0x34')]();this[_0x8346('0xd')][_0x46f391['peer']][_0x8346('0x48')]=_0x46f391['address'];logger[_0x8346('0x26')](_0x8346('0x49'),util[_0x8346('0x1e')](this[_0x8346('0xd')][_0x46f391[_0x8346('0x43')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x8346('0x37')](_0x8346('0x39'),this[_0x8346('0xd')][_0x46f391['peer']]['name']),_0x8346('0x3a'),this[_0x8346('0xd')][_0x46f391[_0x8346('0x43')]]);}else if(this[_0x8346('0xb')][_0x46f391[_0x8346('0x43')]]){this[_0x8346('0xb')][_0x46f391['peer']][_0x8346('0x47')]=_0x46f391[_0x8346('0x14')][_0x8346('0x34')]();this[_0x8346('0xb')][_0x46f391[_0x8346('0x43')]]['address']=_0x46f391['address'];logger[_0x8346('0x26')](_0x8346('0x4a'),util[_0x8346('0x1e')](this[_0x8346('0xb')][_0x46f391[_0x8346('0x43')]],{'showHidden':![],'depth':null}));this[_0x8346('0x21')](util[_0x8346('0x37')](_0x8346('0x2d'),this[_0x8346('0xb')][_0x46f391[_0x8346('0x43')]][_0x8346('0x2e')]),_0x8346('0x2f'),this[_0x8346('0xb')][_0x46f391[_0x8346('0x43')]]);}}}catch(_0x2b0535){logger[_0x8346('0x1c')](_0x8346('0x44'),util[_0x8346('0x1e')](_0x2b0535,{'showHidden':![],'depth':null}));}};module[_0x8346('0x4b')]=UserReport;
\ No newline at end of file
+var _0xdcb6=['device','local','inuse','toLowerCase','stateTime','toNumber','updateStatusRealtime','telephone:%s','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','substring','indexOf','mobile','phone','accountcode','[userReport][devicestatechange]','peer','address','[userReport][peerstatus]','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','moment','util','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis','localhost','socket.io-emitter','trunks','agents','telephones','bind','syncRegistry','syncDeviceState','peerstatus','syncPeerStatus','resolve','then','actionSipShowRegistry','error','[userReport][sipshowregistry]','inspect','actionDeviceStateList','catch','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','syncRealtimeShow','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','debug','[userReport][registry]','find','stateRegistry','state','merge','event','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save'];(function(_0x4cf8d4,_0x5aee73){var _0x2c1beb=function(_0x39b0a4){while(--_0x39b0a4){_0x4cf8d4['push'](_0x4cf8d4['shift']());}};_0x2c1beb(++_0x5aee73);}(_0xdcb6,0xae));var _0x6dcb=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0xdcb6[_0x160c73];return _0xd9302;};'use strict';var _=require(_0x6dcb('0x0'));var moment=require(_0x6dcb('0x1'));var util=require(_0x6dcb('0x2'));var Redis=require(_0x6dcb('0x3'));var BPromise=require(_0x6dcb('0x4'));var config=require(_0x6dcb('0x5'));var logger=require(_0x6dcb('0x6'))(_0x6dcb('0x7'));var ami=require(_0x6dcb('0x8'));config[_0x6dcb('0x9')]=_['defaults'](config['redis'],{'host':_0x6dcb('0xa'),'port':0x18eb});var io=require(_0x6dcb('0xb'))(new Redis(config[_0x6dcb('0x9')]));function UserReport(_0x363a89){this['trunks']=_0x363a89[_0x6dcb('0xc')];this[_0x6dcb('0xd')]=_0x363a89[_0x6dcb('0xd')];this[_0x6dcb('0xe')]=_0x363a89['telephones'];ami['on']('registryentry',this['syncRegistry'][_0x6dcb('0xf')](this));ami['on']('registry',this[_0x6dcb('0x10')][_0x6dcb('0xf')](this));ami['on']('devicestatechange',this[_0x6dcb('0x11')][_0x6dcb('0xf')](this));ami['on'](_0x6dcb('0x12'),this[_0x6dcb('0x13')][_0x6dcb('0xf')](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise[_0x6dcb('0x14')]()[_0x6dcb('0x15')](ami[_0x6dcb('0x16')]())['catch'](function(_0x421f16){logger[_0x6dcb('0x17')](_0x6dcb('0x18'),util[_0x6dcb('0x19')](_0x421f16,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()['then'](ami[_0x6dcb('0x1a')]())[_0x6dcb('0x1b')](function(_0x3117ec){logger[_0x6dcb('0x17')](_0x6dcb('0x1c'),util[_0x6dcb('0x19')](_0x3117ec,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x6dcb('0x14')]()[_0x6dcb('0x15')](ami[_0x6dcb('0x1d')]())[_0x6dcb('0x1b')](function(_0xa0687f){logger[_0x6dcb('0x17')](_0x6dcb('0x1e'),util[_0x6dcb('0x19')](_0xa0687f,{'showHidden':![],'depth':null}));});}UserReport[_0x6dcb('0x1f')][_0x6dcb('0x20')]=function(){setInterval(function(){BPromise[_0x6dcb('0x14')]()[_0x6dcb('0x15')](showSipRegistrations())['then'](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport[_0x6dcb('0x1f')][_0x6dcb('0x21')]=function(_0x21c0d9){return _0x21c0d9!==null&&!_[_0x6dcb('0x22')](_0x21c0d9);};UserReport[_0x6dcb('0x1f')][_0x6dcb('0x23')]=function(_0x1208f7,_0x33bae1,_0x47334a){io['to'](_0x1208f7)[_0x6dcb('0x23')](_0x33bae1,_0x47334a);};UserReport[_0x6dcb('0x1f')][_0x6dcb('0x10')]=function(_0x153ee8){try{if(this[_0x6dcb('0x21')](_0x153ee8)){logger[_0x6dcb('0x24')](_0x6dcb('0x25'),_0x153ee8[_0x6dcb('0x26')],_0x153ee8['state']);logger[_0x6dcb('0x27')](_0x6dcb('0x28'),util[_0x6dcb('0x19')](_0x153ee8,{'showHidden':![],'depth':null}));var _0x196288=_[_0x6dcb('0x29')](this[_0x6dcb('0xc')],{'defaultuser':_0x153ee8['username']});if(_0x196288){_0x153ee8[_0x6dcb('0x2a')]=_0x153ee8[_0x6dcb('0x2b')];_[_0x6dcb('0x2c')](_0x196288,_['omit'](_0x153ee8,[_0x6dcb('0x2d'),'actionid',_0x6dcb('0x26'),_0x6dcb('0x2b')]));logger[_0x6dcb('0x27')](_0x6dcb('0x2e'),util[_0x6dcb('0x19')](_0x196288,{'showHidden':![],'depth':null}));this[_0x6dcb('0x23')](util[_0x6dcb('0x2f')](_0x6dcb('0x30'),_0x196288[_0x6dcb('0x31')]),_0x6dcb('0x32'),_0x196288);}}}catch(_0x4e7dda){logger[_0x6dcb('0x17')](_0x6dcb('0x28'),util[_0x6dcb('0x19')](_0x4e7dda,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x6dcb('0x11')]=function(_0x4e32de){try{if(this[_0x6dcb('0x21')](_0x4e32de)){logger[_0x6dcb('0x24')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x4e32de[_0x6dcb('0x33')],_0x4e32de[_0x6dcb('0x2b')]);logger[_0x6dcb('0x27')]('[userReport][devicestatechange]',util[_0x6dcb('0x19')](_0x4e32de,{'showHidden':![],'depth':null}));if(this[_0x6dcb('0xd')][_0x4e32de[_0x6dcb('0x33')]]){if(!this[_0x6dcb('0xd')][_0x4e32de[_0x6dcb('0x33')]][_0x6dcb('0x34')]||_0x4e32de[_0x6dcb('0x2b')]['toLowerCase']()==_0x6dcb('0x35')){this['agents'][_0x4e32de['device']][_0x6dcb('0x34')]=![];if(this[_0x6dcb('0xd')][_0x4e32de['device']][_0x6dcb('0x2b')]!==_0x4e32de[_0x6dcb('0x2b')][_0x6dcb('0x36')]()){this['agents'][_0x4e32de[_0x6dcb('0x33')]][_0x6dcb('0x37')]=_[_0x6dcb('0x38')](moment()[_0x6dcb('0x2f')]('x'));}this[_0x6dcb('0xd')][_0x4e32de['device']][_0x6dcb('0x2b')]=_0x4e32de[_0x6dcb('0x2b')][_0x6dcb('0x36')]();this['agents'][_0x4e32de['device']][_0x6dcb('0x39')](_0x4e32de);}}else if(this[_0x6dcb('0xe')][_0x4e32de[_0x6dcb('0x33')]]){if(this[_0x6dcb('0xe')][_0x4e32de[_0x6dcb('0x33')]][_0x6dcb('0x2b')]!==_0x4e32de[_0x6dcb('0x2b')]['toLowerCase']()){this['telephones'][_0x4e32de['device']][_0x6dcb('0x37')]=_['toNumber'](moment()[_0x6dcb('0x2f')]('x'));}this[_0x6dcb('0xe')][_0x4e32de[_0x6dcb('0x33')]][_0x6dcb('0x2b')]=_0x4e32de[_0x6dcb('0x2b')][_0x6dcb('0x36')]();logger[_0x6dcb('0x27')]('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util['inspect'](this[_0x6dcb('0xe')][_0x4e32de[_0x6dcb('0x33')]],{'showHidden':![],'depth':null}));this[_0x6dcb('0x23')](util[_0x6dcb('0x2f')](_0x6dcb('0x3a'),this[_0x6dcb('0xe')][_0x4e32de[_0x6dcb('0x33')]][_0x6dcb('0x31')]),'telephone:save',this[_0x6dcb('0xe')][_0x4e32de[_0x6dcb('0x33')]]);}else if(this[_0x6dcb('0xc')][_0x4e32de['device']]){if(this['trunks'][_0x4e32de[_0x6dcb('0x33')]][_0x6dcb('0x2b')]!==_0x4e32de[_0x6dcb('0x2b')]['toLowerCase']()){this[_0x6dcb('0xc')][_0x4e32de[_0x6dcb('0x33')]][_0x6dcb('0x37')]=_[_0x6dcb('0x38')](moment()[_0x6dcb('0x2f')]('x'));}this[_0x6dcb('0xc')][_0x4e32de[_0x6dcb('0x33')]][_0x6dcb('0x2b')]=_0x4e32de[_0x6dcb('0x2b')]['toLowerCase']();logger[_0x6dcb('0x27')](_0x6dcb('0x3b'),util['inspect'](this['trunks'][_0x4e32de[_0x6dcb('0x33')]],{'showHidden':![],'depth':null}));this[_0x6dcb('0x23')](util[_0x6dcb('0x2f')](_0x6dcb('0x30'),this[_0x6dcb('0xc')][_0x4e32de[_0x6dcb('0x33')]][_0x6dcb('0x31')]),'trunk:save',this[_0x6dcb('0xc')][_0x4e32de[_0x6dcb('0x33')]]);}else if(_[_0x6dcb('0x3c')](_0x4e32de[_0x6dcb('0x33')],'Local')){var _0x5bbc6f=_0x4e32de[_0x6dcb('0x33')];var _0x248164=_0x5bbc6f[_0x6dcb('0x3d')](_0x5bbc6f[_0x6dcb('0x3e')]('/')+0x1,_0x5bbc6f[_0x6dcb('0x3e')]('@'));var _0x46c079=_[_0x6dcb('0x29')](this[_0x6dcb('0xd')],function(_0x4ce8f1){return _0x4ce8f1[_0x6dcb('0x3f')]==_0x248164||_0x4ce8f1[_0x6dcb('0x40')]==_0x248164||_0x4ce8f1[_0x6dcb('0x41')]==_0x248164;});if(_0x46c079){if(_0x46c079['state']!==_0x4e32de[_0x6dcb('0x2b')][_0x6dcb('0x36')]()){_0x46c079[_0x6dcb('0x37')]=_[_0x6dcb('0x38')](moment()[_0x6dcb('0x2f')]('x'));}_0x46c079[_0x6dcb('0x2b')]=_0x4e32de[_0x6dcb('0x2b')][_0x6dcb('0x36')]();_0x46c079['local']=!![];_0x46c079[_0x6dcb('0x39')](_0x4e32de);}}}}catch(_0x486bab){logger[_0x6dcb('0x17')](_0x6dcb('0x42'),util[_0x6dcb('0x19')](_0x486bab,{'showHidden':![],'depth':null}));}};UserReport[_0x6dcb('0x1f')][_0x6dcb('0x13')]=function(_0x1f0cc8){try{if(this[_0x6dcb('0x21')](_0x1f0cc8)&&this[_0x6dcb('0x21')](_0x1f0cc8[_0x6dcb('0x12')])){logger[_0x6dcb('0x24')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x1f0cc8[_0x6dcb('0x43')],_0x1f0cc8[_0x6dcb('0x44')],_0x1f0cc8['peerstatus']);logger[_0x6dcb('0x27')](_0x6dcb('0x45'),util[_0x6dcb('0x19')](_0x1f0cc8,{'showHidden':![],'depth':null}));if(this[_0x6dcb('0xd')][_0x1f0cc8[_0x6dcb('0x43')]]){if(!this[_0x6dcb('0xd')][_0x1f0cc8[_0x6dcb('0x43')]][_0x6dcb('0x34')]||_0x1f0cc8[_0x6dcb('0x12')][_0x6dcb('0x36')]()==_0x6dcb('0x46')){this[_0x6dcb('0xd')][_0x1f0cc8['peer']][_0x6dcb('0x34')]=![];this[_0x6dcb('0xd')][_0x1f0cc8[_0x6dcb('0x43')]]['status']=_0x1f0cc8[_0x6dcb('0x12')][_0x6dcb('0x36')]();this['agents'][_0x1f0cc8[_0x6dcb('0x43')]][_0x6dcb('0x44')]=_0x1f0cc8[_0x6dcb('0x44')];this[_0x6dcb('0xd')][_0x1f0cc8[_0x6dcb('0x43')]][_0x6dcb('0x39')](_0x1f0cc8);}}else if(this[_0x6dcb('0xe')][_0x1f0cc8['peer']]){this['telephones'][_0x1f0cc8[_0x6dcb('0x43')]][_0x6dcb('0x47')]=_0x1f0cc8[_0x6dcb('0x12')]['toLowerCase']();this[_0x6dcb('0xe')][_0x1f0cc8[_0x6dcb('0x43')]][_0x6dcb('0x44')]=_0x1f0cc8[_0x6dcb('0x44')];logger[_0x6dcb('0x27')](_0x6dcb('0x48'),util[_0x6dcb('0x19')](this[_0x6dcb('0xe')][_0x1f0cc8['peer']],{'showHidden':![],'depth':null}));this[_0x6dcb('0x23')](util[_0x6dcb('0x2f')](_0x6dcb('0x3a'),this[_0x6dcb('0xe')][_0x1f0cc8[_0x6dcb('0x43')]][_0x6dcb('0x31')]),'telephone:save',this[_0x6dcb('0xe')][_0x1f0cc8[_0x6dcb('0x43')]]);}else if(this[_0x6dcb('0xc')][_0x1f0cc8[_0x6dcb('0x43')]]){this[_0x6dcb('0xc')][_0x1f0cc8[_0x6dcb('0x43')]][_0x6dcb('0x47')]=_0x1f0cc8[_0x6dcb('0x12')]['toLowerCase']();this['trunks'][_0x1f0cc8[_0x6dcb('0x43')]]['address']=_0x1f0cc8['address'];logger['debug'](_0x6dcb('0x49'),util[_0x6dcb('0x19')](this['trunks'][_0x1f0cc8[_0x6dcb('0x43')]],{'showHidden':![],'depth':null}));this[_0x6dcb('0x23')](util[_0x6dcb('0x2f')]('trunk:%s',this[_0x6dcb('0xc')][_0x1f0cc8['peer']][_0x6dcb('0x31')]),_0x6dcb('0x32'),this[_0x6dcb('0xc')][_0x1f0cc8['peer']]);}}}catch(_0x5297ca){logger[_0x6dcb('0x17')](_0x6dcb('0x45'),util[_0x6dcb('0x19')](_0x5297ca,{'showHidden':![],'depth':null}));}};module[_0x6dcb('0x4a')]=UserReport;
\ No newline at end of file
index 3aa1181..4063c49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2ea=['[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','includes','syncHangup','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','[%s][voiceAgentReport][musiconholdstop]\x20event:','substring','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','[%s][voiceAgentReport][musiconholdstop]','exports','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','../ami','redis','socket.io-emitter','channels','voiceChannels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','agentconnect','syncAgentConnect','agentringnoanswer','syncAgentRingNoAnswer','syncQueueCallerAbandon','varset','hangup','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','prototype','emit','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','membername','destuniqueid','debug','isUndefined','format','YYYY-MM-DD\x20HH:mm:ss','queue','mandatoryDisposition','type','inbound','voice','merge','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','inspect','custom:agentcalled','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','user:%s','[%s][voiceAgentReport][agentcalled]','isNotNull','hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','connect','routealias','interface','pick','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:agentconnect','agentcomplete','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answeredelsewheremembername','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','error','[%s][voiceAgentReport][agentringnoanswer]\x20event:','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]','syncAgentComplete','[%s][voiceAgentReport][agentcomplete]\x20event:','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','transfer','agent','talktime','acwtime','agentacw','omit','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','[%s][voiceAgentReport][agentcomplete]','syncVarSet','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s'];(function(_0x36dfbd,_0x5bfe2d){var _0x4ecad9=function(_0x5230da){while(--_0x5230da){_0x36dfbd['push'](_0x36dfbd['shift']());}};_0x4ecad9(++_0x5bfe2d);}(_0xe2ea,0xc3));var _0xae2e=function(_0x249014,_0x2c0e45){_0x249014=_0x249014-0x0;var _0xc28949=_0xe2ea[_0x249014];return _0xc28949;};'use strict';var _=require(_0xae2e('0x0'));var moment=require(_0xae2e('0x1'));var util=require(_0xae2e('0x2'));var Redis=require(_0xae2e('0x3'));var config=require(_0xae2e('0x4'));var logger=require(_0xae2e('0x5'))('ami');var ami=require(_0xae2e('0x6'));config[_0xae2e('0x7')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xae2e('0x8'))(new Redis(config[_0xae2e('0x7')]));function VoiceAgentReport(_0x2e9b83){this[_0xae2e('0x9')]={};this[_0xae2e('0xa')]=_0x2e9b83[_0xae2e('0x9')];this['voiceQueues']=_0x2e9b83[_0xae2e('0xb')];this[_0xae2e('0xc')]=_0x2e9b83[_0xae2e('0xc')];this[_0xae2e('0xd')]={};ami['on'](_0xae2e('0xe'),this[_0xae2e('0xf')][_0xae2e('0x10')](this));ami['on'](_0xae2e('0x11'),this[_0xae2e('0x12')][_0xae2e('0x10')](this));ami['on'](_0xae2e('0x13'),this[_0xae2e('0x14')]['bind'](this));ami['on']('queuecallerabandon',this[_0xae2e('0x15')][_0xae2e('0x10')](this));ami['on']('agentcomplete',this['syncAgentComplete'][_0xae2e('0x10')](this));ami['on'](_0xae2e('0x16'),this['syncVarSet']['bind'](this));ami['on'](_0xae2e('0x17'),this['syncHangup'][_0xae2e('0x10')](this));ami['on']('musiconholdstart',this[_0xae2e('0x18')][_0xae2e('0x10')](this));ami['on'](_0xae2e('0x19'),this[_0xae2e('0x1a')]['bind'](this));ami['on'](_0xae2e('0x1b'),this[_0xae2e('0x1c')][_0xae2e('0x10')](this));ami['on']('blindtransfer',this[_0xae2e('0x1d')][_0xae2e('0x10')](this));}VoiceAgentReport[_0xae2e('0x1e')][_0xae2e('0x1f')]=function(_0x437761,_0x4ba235,_0x19a1e5){io['to'](_0x437761)[_0xae2e('0x1f')](_0x4ba235,_0x19a1e5);};VoiceAgentReport[_0xae2e('0x1e')]['isNotNull']=function(_0x327139){return _0x327139!==null&&!_['isUndefined'](_0x327139);};VoiceAgentReport[_0xae2e('0x1e')][_0xae2e('0xf')]=function(_0x4ca586){try{if(this['isNotNull'](_0x4ca586)){logger[_0xae2e('0x20')](_0xae2e('0x21'),_0x4ca586[_0xae2e('0x22')],_0x4ca586[_0xae2e('0x23')],_0x4ca586[_0xae2e('0x24')]);logger[_0xae2e('0x25')]('[%s][voiceAgentReport][agentcalled]\x20event:',_0x4ca586[_0xae2e('0x22')],util['inspect'](_0x4ca586,{'showHidden':![],'depth':null}));if(_[_0xae2e('0x26')](this[_0xae2e('0x9')][_0x4ca586['uniqueid']])){this['channels'][_0x4ca586[_0xae2e('0x22')]]={};}if(_['isUndefined'](this['channels'][_0x4ca586[_0xae2e('0x22')]][_0x4ca586[_0xae2e('0x24')]])){this[_0xae2e('0x9')][_0x4ca586[_0xae2e('0x22')]][_0x4ca586[_0xae2e('0x24')]]={'agentcalledAt':moment()[_0xae2e('0x27')](_0xae2e('0x28')),'lastevent':'called','mandatoryDisposition':this[_0xae2e('0xb')][_0x4ca586[_0xae2e('0x29')]]?this['voiceQueues'][_0x4ca586[_0xae2e('0x29')]][_0xae2e('0x2a')]||![]:![],'type':this[_0xae2e('0xb')][_0x4ca586[_0xae2e('0x29')]]?this[_0xae2e('0xb')][_0x4ca586[_0xae2e('0x29')]][_0xae2e('0x2b')]||_0xae2e('0x2c'):_0xae2e('0x2c'),'variables':this[_0xae2e('0xd')][_0x4ca586[_0xae2e('0x22')]],'motionChannel':_0xae2e('0x2d')};}_[_0xae2e('0x2e')](this[_0xae2e('0x9')][_0x4ca586[_0xae2e('0x22')]][_0x4ca586[_0xae2e('0x24')]],_['omit'](_0x4ca586,[_0xae2e('0x2f'),_0xae2e('0x30')]));logger[_0xae2e('0x25')](_0xae2e('0x31'),_0x4ca586['uniqueid'],util[_0xae2e('0x32')](this['channels'][_0x4ca586[_0xae2e('0x22')]][_0x4ca586['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0xae2e('0x1f')](_0xae2e('0x33'),this['channels'][_0x4ca586[_0xae2e('0x22')]][_0x4ca586[_0xae2e('0x24')]]);logger['debug'](_0xae2e('0x34'),_0x4ca586[_0xae2e('0x22')],util['inspect'](this['channels'][_0x4ca586[_0xae2e('0x22')]][_0x4ca586[_0xae2e('0x24')]],{'showHidden':![],'depth':null}));this[_0xae2e('0x1f')](util['format'](_0xae2e('0x35'),_0x4ca586['membername']),'user:called',this[_0xae2e('0x9')][_0x4ca586['uniqueid']][_0x4ca586[_0xae2e('0x24')]]);}}catch(_0x325cfa){logger['error'](_0xae2e('0x36'),_0x4ca586[_0xae2e('0x22')],util[_0xae2e('0x32')](_0x325cfa,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncAgentConnect']=function(_0xadfe2d){try{if(this[_0xae2e('0x37')](_0xadfe2d)){if(this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]]){logger[_0xae2e('0x25')]('[%s][voiceAgentReport][agentconnect]\x20event:',_0xadfe2d[_0xae2e('0x22')],util[_0xae2e('0x32')](_0xadfe2d,{'showHidden':![],'depth':null}));for(var _0x539520 in this['channels'][_0xadfe2d['uniqueid']]){if(this[_0xae2e('0x9')][_0xadfe2d['uniqueid']][_0xae2e('0x38')](_0x539520)){if(_0xadfe2d[_0xae2e('0x24')]===_0x539520){logger[_0xae2e('0x20')](_0xae2e('0x39'),_0xadfe2d[_0xae2e('0x22')],_0xadfe2d[_0xae2e('0x23')],_0xadfe2d[_0xae2e('0x24')]);this['channels'][_0xadfe2d[_0xae2e('0x22')]][_0x539520][_0xae2e('0x3a')]=moment()[_0xae2e('0x27')](_0xae2e('0x28'));this['channels'][_0xadfe2d[_0xae2e('0x22')]][_0x539520][_0xae2e('0x3b')]=_0xadfe2d['connectedlinename'];this['channels'][_0xadfe2d[_0xae2e('0x22')]][_0x539520][_0xae2e('0x3c')]=_0xadfe2d[_0xae2e('0x3c')];this['channels'][_0xadfe2d[_0xae2e('0x22')]][_0x539520][_0xae2e('0x3d')]=_0xadfe2d['destchannelstate'];this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]][_0x539520]['destchannelstatedesc']=_0xadfe2d[_0xae2e('0x3e')];this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]][_0x539520][_0xae2e('0x3f')]=_0xadfe2d[_0xae2e('0x3f')];this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]][_0x539520][_0xae2e('0x40')]=_0xae2e('0x41');if(this['voiceChannels'][this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]][_0x539520][_0xae2e('0x22')]]){var _0x49818f=this[_0xae2e('0xa')][this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]][_0x539520]['uniqueid']]['routealias'];this[_0xae2e('0x9')][_0xadfe2d['uniqueid']][_0x539520][_0xae2e('0x42')]=_0x49818f;_0xadfe2d[_0xae2e('0x42')]=_0x49818f;}_[_0xae2e('0x2e')](this[_0xae2e('0xc')][_0xadfe2d[_0xae2e('0x43')]],_[_0xae2e('0x44')](_0xadfe2d,[_0xae2e('0x29'),'destconnectedlinenum','routealias']));logger[_0xae2e('0x25')](_0xae2e('0x45'),_0xadfe2d[_0xae2e('0x22')],util[_0xae2e('0x32')](this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]][_0xadfe2d['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0xae2e('0x1f')](_0xae2e('0x46'),this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]][_0xadfe2d[_0xae2e('0x24')]]);logger['debug'](_0xae2e('0x47'),_0xadfe2d[_0xae2e('0x22')],util[_0xae2e('0x32')](this[_0xae2e('0x9')][_0xadfe2d['uniqueid']][_0xadfe2d[_0xae2e('0x24')]],{'showHidden':![],'depth':null}));this[_0xae2e('0x1f')](util['format'](_0xae2e('0x35'),_0xadfe2d[_0xae2e('0x23')]),_0xae2e('0x48'),this[_0xae2e('0x9')][_0xadfe2d['uniqueid']][_0xadfe2d[_0xae2e('0x24')]]);}else if(!this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]][_0x539520][_0xae2e('0x13')]&&!this['channels'][_0xadfe2d[_0xae2e('0x22')]][_0x539520][_0xae2e('0x49')]){logger['info'](_0xae2e('0x4a'),_0xadfe2d[_0xae2e('0x22')],this['channels'][_0xadfe2d[_0xae2e('0x22')]][_0x539520][_0xae2e('0x23')],_0x539520);this['channels'][_0xadfe2d['uniqueid']][_0x539520][_0xae2e('0x13')]=!![];this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]][_0x539520][_0xae2e('0x4b')]=moment()[_0xae2e('0x27')](_0xae2e('0x28'));this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]][_0x539520][_0xae2e('0x4c')]=_0xadfe2d[_0xae2e('0x24')];this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]][_0x539520][_0xae2e('0x4d')]=_0xadfe2d[_0xae2e('0x23')];this[_0xae2e('0x9')][_0xadfe2d['uniqueid']][_0x539520][_0xae2e('0x40')]=_0xae2e('0x4e');this[_0xae2e('0x9')][_0xadfe2d['uniqueid']][_0x539520][_0xae2e('0x4f')]=_0xae2e('0x4e');logger[_0xae2e('0x25')](_0xae2e('0x50'),_0xadfe2d['uniqueid'],util[_0xae2e('0x32')](this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]][_0x539520],{'showHidden':![],'depth':null}));ami[_0xae2e('0x1f')](_0xae2e('0x51'),this[_0xae2e('0x9')][_0xadfe2d[_0xae2e('0x22')]][_0x539520]);}}}}}}catch(_0x5830b8){logger[_0xae2e('0x52')]('[%s][voiceAgentReport][agentconnect]',_0xadfe2d[_0xae2e('0x22')],util[_0xae2e('0x32')](_0x5830b8,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xae2e('0x1e')][_0xae2e('0x14')]=function(_0x554f4b){try{if(this['isNotNull'](_0x554f4b)){logger['debug'](_0xae2e('0x53'),_0x554f4b[_0xae2e('0x22')],util['inspect'](_0x554f4b,{'showHidden':![],'depth':null}));if(this['channels'][_0x554f4b[_0xae2e('0x22')]]&&this['channels'][_0x554f4b[_0xae2e('0x22')]][_0x554f4b[_0xae2e('0x24')]]){logger[_0xae2e('0x20')]('[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected',_0x554f4b[_0xae2e('0x22')],_0x554f4b[_0xae2e('0x23')],_0x554f4b[_0xae2e('0x24')]);this['channels'][_0x554f4b['uniqueid']][_0x554f4b[_0xae2e('0x24')]][_0xae2e('0x13')]=!![];this[_0xae2e('0x9')][_0x554f4b['uniqueid']][_0x554f4b[_0xae2e('0x24')]][_0xae2e('0x4b')]=moment()[_0xae2e('0x27')](_0xae2e('0x28'));this['channels'][_0x554f4b[_0xae2e('0x22')]][_0x554f4b[_0xae2e('0x24')]][_0xae2e('0x40')]='rejected';this[_0xae2e('0x9')][_0x554f4b['uniqueid']][_0x554f4b[_0xae2e('0x24')]][_0xae2e('0x4f')]='rejected';logger['debug'](_0xae2e('0x54'),_0x554f4b[_0xae2e('0x22')],util['inspect'](this['channels'][_0x554f4b[_0xae2e('0x22')]][_0x554f4b[_0xae2e('0x24')]],{'showHidden':![],'depth':null}));ami['emit']('custom:agentringnoanswer',this['channels'][_0x554f4b[_0xae2e('0x22')]][_0x554f4b[_0xae2e('0x24')]]);}}}catch(_0x42c736){logger[_0xae2e('0x52')](_0xae2e('0x55'),_0x554f4b[_0xae2e('0x22')],util[_0xae2e('0x32')](_0x42c736,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xae2e('0x1e')]['syncQueueCallerAbandon']=function(_0x412757){try{if(this[_0xae2e('0x37')](_0x412757)){logger[_0xae2e('0x25')]('[%s][voiceAgentReport][queuecallerabandon]\x20event:',_0x412757[_0xae2e('0x22')],util[_0xae2e('0x32')](_0x412757,{'showHidden':![],'depth':null}));if(this[_0xae2e('0x9')][_0x412757[_0xae2e('0x22')]]){for(var _0x256cb3 in this['channels'][_0x412757[_0xae2e('0x22')]]){if(this[_0xae2e('0x9')][_0x412757['uniqueid']][_0xae2e('0x38')](_0x256cb3)&&!this[_0xae2e('0x9')][_0x412757[_0xae2e('0x22')]][_0x256cb3][_0xae2e('0x13')]&&!this[_0xae2e('0x9')][_0x412757[_0xae2e('0x22')]][_0x256cb3][_0xae2e('0x49')]){logger[_0xae2e('0x20')](_0xae2e('0x56'),_0x412757[_0xae2e('0x22')],this['channels'][_0x412757[_0xae2e('0x22')]][_0x256cb3][_0xae2e('0x23')],_0x256cb3);this[_0xae2e('0x9')][_0x412757['uniqueid']][_0x256cb3][_0xae2e('0x13')]=!![];this[_0xae2e('0x9')][_0x412757['uniqueid']][_0x256cb3][_0xae2e('0x4b')]=moment()['format'](_0xae2e('0x28'));this['channels'][_0x412757[_0xae2e('0x22')]][_0x256cb3][_0xae2e('0x40')]=_0xae2e('0x57');this[_0xae2e('0x9')][_0x412757['uniqueid']][_0x256cb3][_0xae2e('0x4f')]=_0xae2e('0x57');logger[_0xae2e('0x25')]('[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:',_0x412757[_0xae2e('0x22')],util[_0xae2e('0x32')](this['channels'][_0x412757[_0xae2e('0x22')]][_0x256cb3],{'showHidden':![],'depth':null}));ami[_0xae2e('0x1f')]('custom:agentqueuecallerabandon',this['channels'][_0x412757['uniqueid']][_0x256cb3]);}}}}}catch(_0x933a9f){logger['error'](_0xae2e('0x58'),_0x412757[_0xae2e('0x22')],util['inspect'](_0x933a9f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xae2e('0x1e')][_0xae2e('0x59')]=function(_0x27b423){try{if(this['isNotNull'](_0x27b423)){logger[_0xae2e('0x25')](_0xae2e('0x5a'),_0x27b423['uniqueid'],util[_0xae2e('0x32')](_0x27b423,{'showHidden':![],'depth':null}));if(this[_0xae2e('0x9')][_0x27b423['uniqueid']]){for(var _0x2be3a3 in this[_0xae2e('0x9')][_0x27b423[_0xae2e('0x22')]]){if(this[_0xae2e('0x9')][_0x27b423[_0xae2e('0x22')]][_0xae2e('0x38')](_0x2be3a3)){if(this[_0xae2e('0x9')][_0x27b423[_0xae2e('0x22')]][_0x2be3a3][_0xae2e('0x3a')]&&!this[_0xae2e('0x9')][_0x27b423[_0xae2e('0x22')]][_0x2be3a3]['agentcomplete']){logger[_0xae2e('0x20')](_0xae2e('0x5b'),_0x27b423[_0xae2e('0x22')],this[_0xae2e('0x9')][_0x27b423['uniqueid']][_0x2be3a3]['membername'],_0x2be3a3);this['channels'][_0x27b423['uniqueid']][_0x2be3a3][_0xae2e('0x49')]=!![];this[_0xae2e('0x9')][_0x27b423[_0xae2e('0x22')]][_0x2be3a3][_0xae2e('0x5c')]=moment()[_0xae2e('0x27')](_0xae2e('0x28'));this['channels'][_0x27b423['uniqueid']][_0x2be3a3]['lastevent']=_0xae2e('0x5d');this[_0xae2e('0x9')][_0x27b423[_0xae2e('0x22')]][_0x2be3a3][_0xae2e('0x4f')]=_0x27b423[_0xae2e('0x4f')]==_0xae2e('0x5e')?_0xae2e('0x5f'):_0x27b423[_0xae2e('0x4f')];this['channels'][_0x27b423[_0xae2e('0x22')]][_0x2be3a3][_0xae2e('0x60')]=_0x27b423[_0xae2e('0x60')];if(this[_0xae2e('0xb')][_0x27b423[_0xae2e('0x29')]]&&this['voiceQueues'][_0x27b423[_0xae2e('0x29')]]['acw']){this[_0xae2e('0x9')][_0x27b423['uniqueid']][_0x2be3a3][_0xae2e('0x61')]=this['voiceQueues'][_0x27b423[_0xae2e('0x29')]]['acwTimeout'];this[_0xae2e('0x9')][_0x27b423[_0xae2e('0x22')]][_0x2be3a3][_0xae2e('0x62')]=!![];}this[_0xae2e('0xc')][_0x27b423['interface']]=_[_0xae2e('0x63')](this[_0xae2e('0xc')][_0x27b423['interface']],[_0xae2e('0x29'),'destconnectedlinenum']);logger['debug'](_0xae2e('0x64'),_0x27b423['uniqueid'],util[_0xae2e('0x32')](this[_0xae2e('0x9')][_0x27b423[_0xae2e('0x22')]][_0x2be3a3],{'showHidden':![],'depth':null}));ami['emit'](_0xae2e('0x65'),this[_0xae2e('0x9')][_0x27b423[_0xae2e('0x22')]][_0x2be3a3]);logger[_0xae2e('0x25')](_0xae2e('0x66'),_0x27b423[_0xae2e('0x22')],util['inspect'](this['channels'][_0x27b423['uniqueid']][_0x2be3a3],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0xae2e('0x35'),_0x27b423[_0xae2e('0x23')]),'user:agentcomplete',this[_0xae2e('0x9')][_0x27b423[_0xae2e('0x22')]][_0x2be3a3]);}}}}}}catch(_0x4aee19){logger['error'](_0xae2e('0x67'),_0x27b423[_0xae2e('0x22')],util[_0xae2e('0x32')](_0x4aee19,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xae2e('0x1e')][_0xae2e('0x68')]=function(_0x54177d){try{if(this[_0xae2e('0x37')](_0x54177d)){logger[_0xae2e('0x25')](_0xae2e('0x69'),_0x54177d[_0xae2e('0x22')],util[_0xae2e('0x32')](_0x54177d,{'showHidden':![],'depth':null}));this[_0xae2e('0x6a')](_0x54177d[_0xae2e('0x22')],_[_0xae2e('0x6b')](_0x54177d[_0xae2e('0x6c')])[0x0],_0x54177d[_0xae2e('0x6d')]);if(this[_0xae2e('0x9')][_0x54177d[_0xae2e('0x22')]]){for(var _0x4228c6 in this[_0xae2e('0x9')][_0x54177d['uniqueid']]){if(this[_0xae2e('0x9')][_0x54177d[_0xae2e('0x22')]]['hasOwnProperty'](_0x4228c6)){logger[_0xae2e('0x20')](_0xae2e('0x6e'),_0x54177d[_0xae2e('0x22')],_0x4228c6,_[_0xae2e('0x6b')](_0x54177d[_0xae2e('0x6c')])[0x0],_0x54177d[_0xae2e('0x6d')]);if(_[_0xae2e('0x26')](this['channels'][_0x54177d['uniqueid']][_0x4228c6]['variables'])){this['channels'][_0x54177d[_0xae2e('0x22')]][_0x4228c6][_0xae2e('0xd')]={};}this[_0xae2e('0x9')][_0x54177d[_0xae2e('0x22')]][_0x4228c6]['variables']=this[_0xae2e('0xd')][_0x54177d[_0xae2e('0x22')]];}}}}}catch(_0x3d9459){logger[_0xae2e('0x52')](_0xae2e('0x6f'),_0x54177d[_0xae2e('0x22')],util['inspect'](_0x3d9459,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xae2e('0x1e')][_0xae2e('0x6a')]=function(_0x26539f,_0x5c609f,_0x304f82){var _0x380d3d=[_0xae2e('0x70'),_0xae2e('0x71'),_0xae2e('0x72'),_0xae2e('0x73'),_0xae2e('0x74'),_0xae2e('0x75'),_0xae2e('0x76'),_0xae2e('0x77'),'sipcallid','sipuri',_0xae2e('0x78'),_0xae2e('0x79'),_0xae2e('0x7a'),_0xae2e('0x7b'),_0xae2e('0x7c'),_0xae2e('0x7d'),_0xae2e('0x23'),_0xae2e('0x7e'),_0xae2e('0x7f')];if(!_[_0xae2e('0x80')](_0x5c609f)&&!_[_0xae2e('0x81')](_0x380d3d,_0x5c609f)){if(_['isUndefined'](this[_0xae2e('0xd')][_0x26539f])){this[_0xae2e('0xd')][_0x26539f]={};}this['variables'][_0x26539f][_0x5c609f]=_0x304f82;}};VoiceAgentReport[_0xae2e('0x1e')][_0xae2e('0x82')]=function(_0x21167f){try{if(this[_0xae2e('0x37')](_0x21167f)){logger['debug'](_0xae2e('0x83'),_0x21167f[_0xae2e('0x22')],util[_0xae2e('0x32')](_0x21167f,{'showHidden':![],'depth':null}));if(this[_0xae2e('0x9')][_0x21167f[_0xae2e('0x22')]]){for(var _0x454e29 in this[_0xae2e('0x9')][_0x21167f['uniqueid']]){if(this[_0xae2e('0x9')][_0x21167f['uniqueid']][_0xae2e('0x38')](_0x454e29)){if(this[_0xae2e('0x9')][_0x21167f[_0xae2e('0x22')]][_0x454e29][_0xae2e('0x4f')]==_0xae2e('0x5e')&&this[_0xae2e('0x9')][_0x21167f[_0xae2e('0x22')]][_0x454e29][_0xae2e('0x49')]){logger['info'](_0xae2e('0x84'),_0x21167f[_0xae2e('0x22')],_0x454e29);this[_0xae2e('0x9')][_0x21167f[_0xae2e('0x22')]][_0x454e29][_0xae2e('0x5c')]=moment()[_0xae2e('0x27')](_0xae2e('0x28'));}}}logger[_0xae2e('0x25')](_0xae2e('0x85'),_0x21167f['uniqueid'],util['inspect'](_[_0xae2e('0x86')](this[_0xae2e('0x9')][_0x21167f[_0xae2e('0x22')]]),{'showHidden':![],'depth':null}));ami['emit']('custom:voiceAgentReport',_[_0xae2e('0x86')](this['channels'][_0x21167f['uniqueid']]));delete this[_0xae2e('0x9')][_0x21167f['uniqueid']];}if(this['variables'][_0x21167f['uniqueid']]){delete this[_0xae2e('0xd')][_0x21167f[_0xae2e('0x22')]];}}}catch(_0x2c6360){logger[_0xae2e('0x52')]('[%s][voiceAgentReport][hangup]',_0x21167f[_0xae2e('0x22')],util[_0xae2e('0x32')](_0x2c6360,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xae2e('0x1e')][_0xae2e('0x1c')]=function(_0x1ee59e){try{if(this['isNotNull'](_0x1ee59e)){logger[_0xae2e('0x25')](_0xae2e('0x87'),_0x1ee59e[_0xae2e('0x22')],util[_0xae2e('0x32')](_0x1ee59e,{'showHidden':![],'depth':null}));if(this[_0xae2e('0x9')][_0x1ee59e['transfereeuniqueid']]){for(var _0x60408c in this[_0xae2e('0x9')][_0x1ee59e[_0xae2e('0x88')]]){if(this[_0xae2e('0x9')][_0x1ee59e[_0xae2e('0x88')]][_0xae2e('0x38')](_0x60408c)){if(_0x1ee59e[_0xae2e('0x89')]===_0x60408c){logger['info'](_0xae2e('0x8a'),_0x1ee59e['uniqueid'],this[_0xae2e('0x9')][_0x1ee59e[_0xae2e('0x88')]][_0x60408c]['membername'],_0x60408c);var _0x471a53=moment();this[_0xae2e('0x9')][_0x1ee59e[_0xae2e('0x88')]][_0x60408c]['agentcomplete']=!![];this['channels'][_0x1ee59e[_0xae2e('0x88')]][_0x60408c]['agentcompleteAt']=moment()['format'](_0xae2e('0x28'));this[_0xae2e('0x9')][_0x1ee59e[_0xae2e('0x88')]][_0x60408c][_0xae2e('0x40')]=_0xae2e('0x5d');this['channels'][_0x1ee59e['transfereeuniqueid']][_0x60408c][_0xae2e('0x4f')]=_0xae2e('0x5e');this[_0xae2e('0x9')][_0x1ee59e[_0xae2e('0x88')]][_0x60408c][_0xae2e('0x60')]=_0x471a53[_0xae2e('0x8b')](this[_0xae2e('0x9')][_0x1ee59e[_0xae2e('0x88')]][_0x60408c]['agentconnectAt'],'seconds');}}}}if(this[_0xae2e('0x9')][_0x1ee59e['secondtransfereruniqueid']]){var _0x5621b3=this[_0xae2e('0x9')][_0x1ee59e[_0xae2e('0x8c')]];this['channels'][_0x1ee59e['secondtransfereruniqueid']]=this[_0xae2e('0x9')][_0x1ee59e[_0xae2e('0x88')]];this[_0xae2e('0x9')][_0x1ee59e['transfereeuniqueid']]=_0x5621b3;}}}catch(_0xe0c5f1){logger[_0xae2e('0x52')](_0xae2e('0x8d'),_0x1ee59e[_0xae2e('0x22')],util['inspect'](_0xe0c5f1,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xae2e('0x1e')][_0xae2e('0x1d')]=function(_0x551f40){try{if(this[_0xae2e('0x37')](_0x551f40)){logger[_0xae2e('0x25')](_0xae2e('0x8e'),_0x551f40[_0xae2e('0x22')],util[_0xae2e('0x32')](_0x551f40,{'showHidden':![],'depth':null}));if(this[_0xae2e('0x9')][_0x551f40[_0xae2e('0x88')]]){for(var _0x5c5474 in this[_0xae2e('0x9')][_0x551f40[_0xae2e('0x88')]]){if(this[_0xae2e('0x9')][_0x551f40[_0xae2e('0x88')]]['hasOwnProperty'](_0x5c5474)){if(_0x551f40['transfereruniqueid']===_0x5c5474){logger[_0xae2e('0x20')](_0xae2e('0x8f'),_0x551f40['uniqueid'],this[_0xae2e('0x9')][_0x551f40[_0xae2e('0x88')]][_0x5c5474][_0xae2e('0x23')],_0x5c5474);var _0x331149=moment();this[_0xae2e('0x9')][_0x551f40[_0xae2e('0x88')]][_0x5c5474][_0xae2e('0x49')]=!![];this['channels'][_0x551f40['transfereeuniqueid']][_0x5c5474][_0xae2e('0x5c')]=_0x331149;this[_0xae2e('0x9')][_0x551f40[_0xae2e('0x88')]][_0x5c5474][_0xae2e('0x40')]=_0xae2e('0x5d');this[_0xae2e('0x9')][_0x551f40[_0xae2e('0x88')]][_0x5c5474]['reason']=_0xae2e('0x5e');this[_0xae2e('0x9')][_0x551f40[_0xae2e('0x88')]][_0x5c5474][_0xae2e('0x60')]=_0x331149[_0xae2e('0x8b')](this[_0xae2e('0x9')][_0x551f40[_0xae2e('0x88')]][_0x5c5474][_0xae2e('0x3a')],'seconds');}}}}}}catch(_0x8cd7af){logger[_0xae2e('0x52')](_0xae2e('0x90'),_0x551f40[_0xae2e('0x22')],util[_0xae2e('0x32')](_0x8cd7af,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xae2e('0x1e')][_0xae2e('0x18')]=function(_0x381940){var _0xa12f4f='';try{if(this[_0xae2e('0x37')](_0x381940)){logger[_0xae2e('0x25')](_0xae2e('0x91'),_0x381940[_0xae2e('0x22')],util[_0xae2e('0x32')](_0x381940,{'showHidden':![],'depth':null}));if(_0x381940[_0xae2e('0x92')]){_0xa12f4f=_0x381940[_0xae2e('0x92')]['substring'](0x0,_0x381940[_0xae2e('0x92')]['lastIndexOf']('-'));if(this[_0xae2e('0xc')][_0xa12f4f]){logger[_0xae2e('0x20')](_0xae2e('0x93'),_0x381940['uniqueid'],_0xa12f4f);this[_0xae2e('0xc')][_0xa12f4f]['onhold']=!![];}}}}catch(_0x3c5547){logger['error']('[%s][voiceAgentReport][musiconholdstart]',_0x381940[_0xae2e('0x22')],util['inspect'](_0x3c5547,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xae2e('0x1e')][_0xae2e('0x1a')]=function(_0x151272){var _0x50600d='';try{if(this[_0xae2e('0x37')](_0x151272)){logger[_0xae2e('0x25')](_0xae2e('0x94'),_0x151272['uniqueid'],util[_0xae2e('0x32')](_0x151272,{'showHidden':![],'depth':null}));if(_0x151272[_0xae2e('0x92')]){_0x50600d=_0x151272[_0xae2e('0x92')][_0xae2e('0x95')](0x0,_0x151272['channel']['lastIndexOf']('-'));if(this[_0xae2e('0xc')][_0x50600d]){logger[_0xae2e('0x20')](_0xae2e('0x96'),_0x151272[_0xae2e('0x22')],_0x50600d);this['agents'][_0x50600d]['onhold']=![];}}}}catch(_0x178005){logger[_0xae2e('0x52')](_0xae2e('0x97'),_0x151272[_0xae2e('0x22')],util[_0xae2e('0x32')](_0x178005,{'showHidden':![],'depth':null}));}};module[_0xae2e('0x98')]=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(_0xc450a6,_0x39c279){var _0x5cc767=function(_0x179216){while(--_0x179216){_0xc450a6['push'](_0xc450a6['shift']());}};_0x5cc767(++_0x39c279);}(_0xa9e0,0x123));var _0x0a9e=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0xa9e0[_0x40ac5e];return _0x2839d6;};'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 40c8e0c..dcd4df5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa349=['[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','parse','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','billableseconds','answertime','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','resolve','then','getSettings','StopMixMonitor','catch','Action','webbar:stopmonitors','BlindTransfer','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','[%s][voiceCallReport][hangup]','origtransferercalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transferconnectedlinenum','transfertargetcalleridnum','secondtransfereruniqueid','transfertargetuniqueid','transfercalleridnum','origtransfereruniqueid','origtransfererlinkedid','some','routeid','transferType','ATTENDED','[%s][voiceCallReport][attendedtransfer]','transfereecalleridnum','extension','BLIND','transfereruniqueid','[%s][voiceCallReport][musiconholdstart]\x20event:','isNil','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','exports','lodash','moment','util','path','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/channel','../rpc/setting','unknown','not_inuse','inuse','busy','invalid','ringing','ringinuse','set','queue','dial','playback','voicemail','NO\x20ANSWER','FAILED','ANSWERED','localhost','redis','channels','agents','blindTransfers','syncNewExten','bind','syncNewChannel','newstate','varset','syncVarSet','hangup','syncHangup','newcallerid','syncNewCallerId','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','[voiceCallReport][coreshowchannels]','prototype','isNotNull','isUndefined','emit','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','[%s][voiceCallReport][newcallerid]\x20event:','inspect','linkedid','pick','context','channel','exten','connectedlinenum','user:%s','split','name','user:agentconnect','[%s][voiceCallReport][newcallerid]','debug','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','starttime','format','toNumber','merge','keys','from-sip','destconnectedlinenum','error','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','applicationdata','appdata','startsWith','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','subtract','seconds','YYYY-MM-DD\x20HH:mm:ss','disposition','includes','lastdata','cdr(','match','[%s][voiceCallReport][newexten]','syncNewState','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','channelstate','answered','holdtime','diff','connectedlinename','destinationchannel','membername','UserId','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','accountcode','syncMixMonitorFilename','monitor','endsWith','.wav49','.WAV','monitorFilename','find','monitors','push','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','[%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','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','xmd-destination','calleridpreview'];(function(_0x54e85e,_0x96aaa7){var _0x50c408=function(_0xd90cf7){while(--_0xd90cf7){_0x54e85e['push'](_0x54e85e['shift']());}};_0x50c408(++_0x96aaa7);}(_0xa349,0xfb));var _0x9a34=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa349[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require('bluebird');var _=require(_0x9a34('0x0'));var moment=require(_0x9a34('0x1'));var util=require(_0x9a34('0x2'));var path=require(_0x9a34('0x3'));var Redis=require(_0x9a34('0x4'));var config=require(_0x9a34('0x5'));var logger=require(_0x9a34('0x6'))(_0x9a34('0x7'));var ami=require(_0x9a34('0x8'));var Channel=require(_0x9a34('0x9'));var RpcSetting=require(_0x9a34('0xa'));var statusDesc=[_0x9a34('0xb'),_0x9a34('0xc'),_0x9a34('0xd'),_0x9a34('0xe'),_0x9a34('0xf'),'unavailable',_0x9a34('0x10'),_0x9a34('0x11'),'onhold'];var applications=[_0x9a34('0x12'),_0x9a34('0x13'),'agi',_0x9a34('0x14'),_0x9a34('0x15'),_0x9a34('0x16')];var dispositions=[_0x9a34('0x17'),_0x9a34('0x18'),_0x9a34('0x18'),'NO\x20ANSWER',_0x9a34('0x17'),_0x9a34('0x17'),_0x9a34('0x19'),'BUSY',_0x9a34('0x18'),'FAILED',_0x9a34('0x18')];var actions={};config['redis']=_['defaults'](config['redis'],{'host':_0x9a34('0x1a'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x9a34('0x1b')]));function VoiceCallReport(_0x35d0ed){this[_0x9a34('0x1c')]=_0x35d0ed[_0x9a34('0x1c')];this[_0x9a34('0x1d')]=_0x35d0ed['agents'];this[_0x9a34('0x1e')]={};ami['on']('coreshowchannel',this[_0x9a34('0x1f')][_0x9a34('0x20')](this));ami['on']('newexten',this[_0x9a34('0x1f')][_0x9a34('0x20')](this));ami['on']('newchannel',this[_0x9a34('0x21')]['bind'](this));ami['on'](_0x9a34('0x22'),this['syncNewState']['bind'](this));ami['on'](_0x9a34('0x23'),this[_0x9a34('0x24')][_0x9a34('0x20')](this));ami['on'](_0x9a34('0x25'),this[_0x9a34('0x26')][_0x9a34('0x20')](this));ami['on'](_0x9a34('0x27'),this[_0x9a34('0x28')][_0x9a34('0x20')](this));ami['on'](_0x9a34('0x29'),this[_0x9a34('0x2a')][_0x9a34('0x20')](this));ami['on']('blindtransfer',this[_0x9a34('0x2b')]['bind'](this));ami['on'](_0x9a34('0x2c'),this[_0x9a34('0x2d')][_0x9a34('0x20')](this));ami['on'](_0x9a34('0x2e'),this[_0x9a34('0x2f')]['bind'](this));try{logger[_0x9a34('0x30')](_0x9a34('0x31'));ami[_0x9a34('0x32')]();}catch(_0x3bcd88){logger['error'](_0x9a34('0x33'),util['inspect'](_0x3bcd88,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x9a34('0x34')][_0x9a34('0x35')]=function(_0x47cf70){return _0x47cf70!==null&&!_[_0x9a34('0x36')](_0x47cf70);};VoiceCallReport['prototype'][_0x9a34('0x37')]=function(_0x3dd497,_0x487db1,_0x4eec17){io['to'](_0x3dd497)[_0x9a34('0x37')](_0x487db1,_0x4eec17);};VoiceCallReport[_0x9a34('0x34')]['syncNewCallerId']=function(_0x5847d4){try{if(this[_0x9a34('0x35')](_0x5847d4)){logger[_0x9a34('0x30')](_0x9a34('0x38'),_0x5847d4[_0x9a34('0x39')],_0x5847d4[_0x9a34('0x3a')],_0x5847d4[_0x9a34('0x3b')]);logger['debug'](_0x9a34('0x3c'),_0x5847d4['uniqueid'],util[_0x9a34('0x3d')](_0x5847d4,{'showHidden':![],'depth':null}));if(_0x5847d4[_0x9a34('0x39')]===_0x5847d4[_0x9a34('0x3e')]){if(!_['isUndefined'](this[_0x9a34('0x1c')][_0x5847d4[_0x9a34('0x39')]])){_['merge'](this[_0x9a34('0x1c')][_0x5847d4[_0x9a34('0x39')]],_[_0x9a34('0x3f')](_0x5847d4,_['keys'](this['channels'][_0x5847d4['uniqueid']])));}}if(_0x5847d4[_0x9a34('0x40')]==='from-sip'){if(this[_0x9a34('0x1d')][_0x5847d4[_0x9a34('0x41')]['split']('-')[0x0]]){if(_0x5847d4[_0x9a34('0x42')]=='xcally-motion-preview'){this[_0x9a34('0x1d')][_0x5847d4[_0x9a34('0x41')]['split']('-')[0x0]]['destconnectedlinenum']=_0x5847d4[_0x9a34('0x43')];this[_0x9a34('0x37')](util['format'](_0x9a34('0x44'),this['agents'][_0x5847d4[_0x9a34('0x41')][_0x9a34('0x45')]('-')[0x0]][_0x9a34('0x46')]),_0x9a34('0x47'),{'destaccountcode':this[_0x9a34('0x1d')][_0x5847d4[_0x9a34('0x41')][_0x9a34('0x45')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x5847d4[_0x9a34('0x43')]});}}}}}catch(_0x5f2d51){logger['error'](_0x9a34('0x48'),_0x5847d4[_0x9a34('0x39')],util[_0x9a34('0x3d')](_0x5f2d51,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x9a34('0x34')][_0x9a34('0x21')]=function(_0x37283b){try{if(this[_0x9a34('0x35')](_0x37283b)){logger[_0x9a34('0x49')](_0x9a34('0x4a'),_0x37283b[_0x9a34('0x39')],util[_0x9a34('0x3d')](_0x37283b,{'showHidden':![],'depth':null}));if(_0x37283b['uniqueid']===_0x37283b[_0x9a34('0x3e')]&&_0x37283b[_0x9a34('0x41')]!=_0x9a34('0x4b')){if(_['isUndefined'](this[_0x9a34('0x1c')][_0x37283b[_0x9a34('0x39')]])){logger[_0x9a34('0x30')]('[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s',_0x37283b[_0x9a34('0x39')],_0x37283b[_0x9a34('0x40')],_0x37283b[_0x9a34('0x42')]);this[_0x9a34('0x1c')][_0x37283b[_0x9a34('0x39')]]=new Channel();this[_0x9a34('0x1c')][_0x37283b['uniqueid']][_0x9a34('0x4c')]=moment()[_0x9a34('0x4d')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x9a34('0x1c')][_0x37283b['uniqueid']]['disposition']=dispositions[_[_0x9a34('0x4e')](_0x37283b['channelstate'])];_[_0x9a34('0x4f')](this[_0x9a34('0x1c')][_0x37283b['uniqueid']],_[_0x9a34('0x3f')](_0x37283b,_[_0x9a34('0x50')](this[_0x9a34('0x1c')][_0x37283b['uniqueid']])));if(_0x37283b[_0x9a34('0x40')]===_0x9a34('0x51')){if(this[_0x9a34('0x1d')][_0x37283b['channel'][_0x9a34('0x45')]('-')[0x0]]){if(_[_0x9a34('0x36')](this[_0x9a34('0x1d')][_0x37283b['channel'][_0x9a34('0x45')]('-')[0x0]][_0x9a34('0x52')])){this[_0x9a34('0x1d')][_0x37283b[_0x9a34('0x41')][_0x9a34('0x45')]('-')[0x0]]['destconnectedlinenum']=_0x37283b[_0x9a34('0x42')];logger[_0x9a34('0x49')]('[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:',_0x37283b['uniqueid'],util[_0x9a34('0x3d')]({'destaccountcode':this[_0x9a34('0x1d')][_0x37283b[_0x9a34('0x41')][_0x9a34('0x45')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x37283b[_0x9a34('0x42')]},{'showHidden':![],'depth':null}));this['emit'](util[_0x9a34('0x4d')](_0x9a34('0x44'),this['agents'][_0x37283b[_0x9a34('0x41')]['split']('-')[0x0]][_0x9a34('0x46')]),_0x9a34('0x47'),{'destaccountcode':this['agents'][_0x37283b[_0x9a34('0x41')][_0x9a34('0x45')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x37283b[_0x9a34('0x42')]});}}}}}}}catch(_0x8b9d17){logger[_0x9a34('0x53')](_0x9a34('0x54'),_0x37283b['uniqueid'],util[_0x9a34('0x3d')](_0x8b9d17,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x9a34('0x34')][_0x9a34('0x1f')]=function(_0x4f8fc9){try{if(this[_0x9a34('0x35')](_0x4f8fc9)){logger['debug'](_0x9a34('0x55'),_0x4f8fc9[_0x9a34('0x39')],util[_0x9a34('0x3d')](_0x4f8fc9,{'showHidden':![],'depth':null}));if(_0x4f8fc9['uniqueid']===_0x4f8fc9[_0x9a34('0x3e')]&&_0x4f8fc9[_0x9a34('0x42')]!='h'&&_0x4f8fc9[_0x9a34('0x41')]!=_0x9a34('0x4b')){_0x4f8fc9['application']=_0x4f8fc9[_0x9a34('0x56')][_0x9a34('0x57')]();_0x4f8fc9[_0x9a34('0x58')]=_0x4f8fc9[_0x9a34('0x59')]&&_0x4f8fc9[_0x9a34('0x59')][_0x9a34('0x5a')]('CDR(routeAlias)')?_0x4f8fc9[_0x9a34('0x59')]:(_0x4f8fc9['appdata']||_0x4f8fc9[_0x9a34('0x58')])[_0x9a34('0x57')]();logger[_0x9a34('0x30')](_0x9a34('0x5b'),_0x4f8fc9[_0x9a34('0x39')],_0x4f8fc9[_0x9a34('0x56')],_0x4f8fc9[_0x9a34('0x58')]);if(_[_0x9a34('0x36')](this[_0x9a34('0x1c')][_0x4f8fc9['uniqueid']])){this[_0x9a34('0x1c')][_0x4f8fc9[_0x9a34('0x39')]]=new Channel();this[_0x9a34('0x1c')][_0x4f8fc9['uniqueid']]['starttime']=_0x4f8fc9[_0x9a34('0x5c')]?moment()[_0x9a34('0x5d')](moment[_0x9a34('0x5c')](_0x4f8fc9['duration'])['seconds'](),_0x9a34('0x5e'))[_0x9a34('0x4d')](_0x9a34('0x5f')):moment()[_0x9a34('0x4d')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x9a34('0x1c')][_0x4f8fc9[_0x9a34('0x39')]][_0x9a34('0x60')]=_0x9a34('0x17');}_[_0x9a34('0x4f')](this[_0x9a34('0x1c')][_0x4f8fc9[_0x9a34('0x39')]],_['pick'](_0x4f8fc9,_[_0x9a34('0x50')](this['channels'][_0x4f8fc9[_0x9a34('0x39')]])));if(_[_0x9a34('0x61')](applications,_0x4f8fc9[_0x9a34('0x56')])){this[_0x9a34('0x1c')][_0x4f8fc9[_0x9a34('0x39')]]['lastapplication']=_0x4f8fc9[_0x9a34('0x56')];this[_0x9a34('0x1c')][_0x4f8fc9[_0x9a34('0x39')]][_0x9a34('0x62')]=_0x4f8fc9['applicationdata'];if(_0x4f8fc9[_0x9a34('0x56')]===_0x9a34('0x12')&&_[_0x9a34('0x5a')](_0x4f8fc9[_0x9a34('0x58')][_0x9a34('0x57')](),_0x9a34('0x63'))){var _0x27979b=_0x4f8fc9[_0x9a34('0x58')][_0x9a34('0x45')]('=');var _0xc4d728=_0x27979b[0x0][_0x9a34('0x57')]()[_0x9a34('0x64')](/cdr\((.*)\)/);if(_0xc4d728){this[_0x9a34('0x1c')][_0x4f8fc9[_0x9a34('0x39')]][_0xc4d728[0x1]]=_0x27979b[0x1];}}else if(_0x4f8fc9[_0x9a34('0x56')]===_0x9a34('0x13')){this[_0x9a34('0x1c')][_0x4f8fc9[_0x9a34('0x39')]][_0x9a34('0x13')]=_0x4f8fc9[_0x9a34('0x58')][_0x9a34('0x45')](',')[0x0];}}}}}catch(_0x44a246){logger[_0x9a34('0x53')](_0x9a34('0x65'),_0x4f8fc9[_0x9a34('0x39')],util[_0x9a34('0x3d')](_0x44a246,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x9a34('0x34')][_0x9a34('0x66')]=function(_0x4447aa){try{if(this['isNotNull'](_0x4447aa)){logger[_0x9a34('0x30')](_0x9a34('0x67'),_0x4447aa[_0x9a34('0x39')],_0x4447aa[_0x9a34('0x3e')],_0x4447aa['calleridname'],_0x4447aa[_0x9a34('0x3b')]);logger[_0x9a34('0x49')](_0x9a34('0x68'),_0x4447aa[_0x9a34('0x39')],util[_0x9a34('0x3d')](_0x4447aa,{'showHidden':![],'depth':null}));if(_0x4447aa['uniqueid']!==_0x4447aa[_0x9a34('0x3e')]){if(this[_0x9a34('0x1c')][_0x4447aa['linkedid']]){if(_0x4447aa[_0x9a34('0x69')]==='6'){if(!this[_0x9a34('0x1c')][_0x4447aa['linkedid']][_0x9a34('0x6a')]){var _0x3e24bc=moment();this['channels'][_0x4447aa['linkedid']][_0x9a34('0x6a')]=!![];this[_0x9a34('0x1c')][_0x4447aa[_0x9a34('0x3e')]]['answertime']=_0x3e24bc['format']('YYYY-MM-DD\x20HH:mm:ss');if(this[_0x9a34('0x1c')][_0x4447aa[_0x9a34('0x3e')]][_0x9a34('0x4c')]){this[_0x9a34('0x1c')][_0x4447aa[_0x9a34('0x3e')]][_0x9a34('0x6b')]=_0x3e24bc[_0x9a34('0x6c')](this[_0x9a34('0x1c')][_0x4447aa['linkedid']][_0x9a34('0x4c')],_0x9a34('0x5e'));}}this[_0x9a34('0x1c')][_0x4447aa[_0x9a34('0x3e')]][_0x9a34('0x3e')]=_0x4447aa[_0x9a34('0x39')];if(_0x4447aa[_0x9a34('0x3b')]!=='xcally-motion-preview'){this[_0x9a34('0x1c')][_0x4447aa[_0x9a34('0x3e')]]['connectedlinenum']=_0x4447aa[_0x9a34('0x3b')];}this[_0x9a34('0x1c')][_0x4447aa['linkedid']][_0x9a34('0x6d')]=_0x4447aa[_0x9a34('0x3a')];this[_0x9a34('0x1c')][_0x4447aa[_0x9a34('0x3e')]][_0x9a34('0x6e')]=_0x4447aa[_0x9a34('0x41')];this[_0x9a34('0x1c')][_0x4447aa[_0x9a34('0x3e')]][_0x9a34('0x60')]=dispositions[_[_0x9a34('0x4e')](_0x4447aa['channelstate'])];if(this[_0x9a34('0x1d')][_0x4447aa['channel'][_0x9a34('0x45')]('-')[0x0]]){this['channels'][_0x4447aa[_0x9a34('0x3e')]]['UserId']=this[_0x9a34('0x1d')][_0x4447aa['channel'][_0x9a34('0x45')]('-')[0x0]]['id'];this[_0x9a34('0x1c')][_0x4447aa[_0x9a34('0x3e')]][_0x9a34('0x6f')]=this[_0x9a34('0x1d')][_0x4447aa['channel'][_0x9a34('0x45')]('-')[0x0]]['name'];}}}}else{if(this[_0x9a34('0x1c')][_0x4447aa['uniqueid']]){if(_0x4447aa[_0x9a34('0x69')]==='6'){if(this['agents'][_0x4447aa['channel'][_0x9a34('0x45')]('-')[0x0]]){this[_0x9a34('0x1c')][_0x4447aa['uniqueid']][_0x9a34('0x70')]=this[_0x9a34('0x1d')][_0x4447aa[_0x9a34('0x41')][_0x9a34('0x45')]('-')[0x0]]['id'];this[_0x9a34('0x1c')][_0x4447aa[_0x9a34('0x39')]]['membername']=this[_0x9a34('0x1d')][_0x4447aa[_0x9a34('0x41')][_0x9a34('0x45')]('-')[0x0]][_0x9a34('0x46')];}}}}if(_0x4447aa[_0x9a34('0x69')]==='6'&&_0x4447aa['context']===_0x9a34('0x51')){if(this[_0x9a34('0x1d')][_0x4447aa['channel'][_0x9a34('0x45')]('-')[0x0]]){this[_0x9a34('0x1d')][_0x4447aa['channel'][_0x9a34('0x45')]('-')[0x0]][_0x9a34('0x52')]=_0x4447aa[_0x9a34('0x42')];var _0x4ab22a;if(this['channels'][_0x4447aa[_0x9a34('0x39')]])_0x4ab22a=this[_0x9a34('0x1c')][_0x4447aa[_0x9a34('0x39')]]['routealias'];else if(this['channels'][_0x4447aa['linkedid']])_0x4ab22a=this[_0x9a34('0x1c')][_0x4447aa['linkedid']][_0x9a34('0x71')];logger[_0x9a34('0x49')](_0x9a34('0x72'),_0x4447aa[_0x9a34('0x39')],util[_0x9a34('0x3d')]({'destaccountcode':this[_0x9a34('0x1d')][_0x4447aa[_0x9a34('0x41')][_0x9a34('0x45')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x4447aa[_0x9a34('0x42')],'routealias':_0x4ab22a},{'showHidden':![],'depth':null}));this[_0x9a34('0x37')](util[_0x9a34('0x4d')](_0x9a34('0x44'),this['agents'][_0x4447aa['channel'][_0x9a34('0x45')]('-')[0x0]][_0x9a34('0x46')]),_0x9a34('0x47'),{'destaccountcode':this[_0x9a34('0x1d')][_0x4447aa['channel'][_0x9a34('0x45')]('-')[0x0]][_0x9a34('0x73')],'destconnectedlinenum':_0x4447aa[_0x9a34('0x42')],'routealias':_0x4ab22a});}}}}catch(_0x30d08b){logger[_0x9a34('0x53')]('[%s][voiceCallReport][newstate]',_0x4447aa[_0x9a34('0x39')],util[_0x9a34('0x3d')](_0x30d08b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x9a34('0x34')][_0x9a34('0x74')]=function(_0x40b890,_0x490942){try{if(this['channels'][_0x40b890]){logger[_0x9a34('0x30')]('[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s',_0x40b890,_0x490942);this[_0x9a34('0x1c')][_0x40b890][_0x9a34('0x75')]=!![];if(_[_0x9a34('0x76')](_0x490942,_0x9a34('0x77'))){_0x490942=_0x490942['replace']('.wav49',_0x9a34('0x78'));}this[_0x9a34('0x1c')][_0x40b890][_0x9a34('0x79')]=_0x490942;var _0x25bef6=_[_0x9a34('0x7a')](this[_0x9a34('0x1c')][_0x40b890]['monitors'],{'filename':_0x490942});if(_['isNil'](_0x25bef6)){this['channels'][_0x40b890][_0x9a34('0x7b')][_0x9a34('0x7c')]({'filename':_0x490942,'createdAt':moment()[_0x9a34('0x4d')](_0x9a34('0x5f')),'mixmonitorid':'','status':'rec'});}}}catch(_0x7a71c9){logger['error']('[%s][voiceCallReport][mixMonitorFilename]',_0x40b890,util[_0x9a34('0x3d')](_0x7a71c9,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x9a34('0x34')][_0x9a34('0x24')]=function(_0x38612e){try{if(this[_0x9a34('0x35')](_0x38612e)){logger[_0x9a34('0x49')](_0x9a34('0x7d'),_0x38612e[_0x9a34('0x39')],util[_0x9a34('0x3d')](_0x38612e,{'showHidden':![],'depth':null}));if(this[_0x9a34('0x1c')][_0x38612e[_0x9a34('0x39')]]&&_0x38612e['channel']!=_0x9a34('0x4b')){if(this[_0x9a34('0x35')](_0x38612e[_0x9a34('0x7e')])){if(this['isNotNull'](_0x38612e[_0x9a34('0x7e')][_0x9a34('0x7f')])){logger['info'](_0x9a34('0x80'),_0x38612e[_0x9a34('0x39')],_0x38612e[_0x9a34('0x81')]);this[_0x9a34('0x74')](_0x38612e[_0x9a34('0x39')],_0x38612e[_0x9a34('0x81')]);}else if(this[_0x9a34('0x35')](_0x38612e['variable']['xmd-phone'])){logger[_0x9a34('0x30')](_0x9a34('0x82'),_0x38612e[_0x9a34('0x39')],_0x38612e['value']);this['channels'][_0x38612e['uniqueid']][_0x9a34('0x3b')]=_0x38612e[_0x9a34('0x81')];}else if(this[_0x9a34('0x35')](_0x38612e[_0x9a34('0x7e')][_0x9a34('0x83')])){logger[_0x9a34('0x30')](_0x9a34('0x84'),_0x38612e[_0x9a34('0x39')],_0x38612e[_0x9a34('0x81')]);this[_0x9a34('0x1c')][_0x38612e[_0x9a34('0x39')]][_0x9a34('0x85')]=_0x38612e['value'];}else if(this['isNotNull'](_0x38612e[_0x9a34('0x7e')][_0x9a34('0x86')])){logger[_0x9a34('0x30')](_0x9a34('0x87'),_0x38612e['uniqueid'],_0x38612e[_0x9a34('0x81')]);this[_0x9a34('0x1c')][_0x38612e['uniqueid']]['type']=_0x38612e[_0x9a34('0x81')];}else if(this['isNotNull'](_0x38612e[_0x9a34('0x7e')][_0x9a34('0x88')])){logger['info'](_0x9a34('0x89'),_0x38612e['uniqueid'],_0x38612e[_0x9a34('0x81')][_0x9a34('0x45')](',')[0x0]);this[_0x9a34('0x1c')][_0x38612e['uniqueid']][_0x9a34('0x13')]=_0x38612e[_0x9a34('0x81')]['split'](',')[0x0];}else if(this[_0x9a34('0x35')](_0x38612e[_0x9a34('0x7e')][_0x9a34('0x8a')])){logger[_0x9a34('0x30')](_0x9a34('0x8b'),_0x38612e[_0x9a34('0x39')],_0x38612e[_0x9a34('0x81')]);this['channels'][_0x38612e[_0x9a34('0x39')]][_0x9a34('0x8c')]=_0x38612e[_0x9a34('0x81')];}else if(this[_0x9a34('0x35')](_0x38612e[_0x9a34('0x7e')][_0x9a34('0x8d')])){logger[_0x9a34('0x30')]('[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s',_0x38612e[_0x9a34('0x39')],_0x38612e[_0x9a34('0x81')]);this[_0x9a34('0x1c')][_0x38612e['uniqueid']]['destination']=_0x38612e[_0x9a34('0x81')];}else if(this[_0x9a34('0x35')](_0x38612e[_0x9a34('0x7e')]['xmd-callerid-preview'])){logger['info']('[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s',_0x38612e[_0x9a34('0x39')],_0x38612e[_0x9a34('0x81')]);this['channels'][_0x38612e[_0x9a34('0x39')]][_0x9a34('0x8e')]=_0x38612e['value'];}else if(this[_0x9a34('0x35')](_0x38612e[_0x9a34('0x7e')]['xmcs-queue'])){logger[_0x9a34('0x30')](_0x9a34('0x8f'),_0x38612e['uniqueid'],_0x38612e[_0x9a34('0x81')]);this['channels'][_0x38612e['uniqueid']][_0x9a34('0x13')]=_0x38612e[_0x9a34('0x81')];}else if(this[_0x9a34('0x35')](_0x38612e[_0x9a34('0x7e')][_0x9a34('0x90')])){logger[_0x9a34('0x30')](_0x9a34('0x91'),_0x38612e[_0x9a34('0x39')],_0x38612e[_0x9a34('0x81')]);this[_0x9a34('0x1c')][_0x38612e[_0x9a34('0x39')]]['sipcalluniqueid']=_0x38612e['value'];}}}else if(this[_0x9a34('0x35')](_0x38612e['variable']['mixmonitor_filename'])){if(_0x38612e[_0x9a34('0x81')]){var _0x4c9675=path[_0x9a34('0x92')](_0x38612e['value'])[_0x9a34('0x46')];logger['info'](_0x9a34('0x80'),_0x4c9675,_0x38612e[_0x9a34('0x81')]);this[_0x9a34('0x74')](_0x4c9675,_0x38612e['value']);}}else if(this[_0x9a34('0x1c')][_0x38612e['linkedid']]){if(this[_0x9a34('0x35')](_0x38612e[_0x9a34('0x7e')])){if(this[_0x9a34('0x35')](_0x38612e[_0x9a34('0x7e')][_0x9a34('0x90')])){logger['info'](_0x9a34('0x91'),_0x38612e['linkedid'],_0x38612e[_0x9a34('0x81')]);this[_0x9a34('0x1c')][_0x38612e[_0x9a34('0x3e')]][_0x9a34('0x93')]=_0x38612e[_0x9a34('0x81')];}}}}}catch(_0x16e5ce){logger[_0x9a34('0x53')](_0x9a34('0x94'),_0x38612e['uniqueid'],util[_0x9a34('0x3d')](_0x16e5ce,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x9a34('0x34')]['syncHangup']=function(_0x3a3955){try{if(this[_0x9a34('0x35')](_0x3a3955)){logger[_0x9a34('0x49')](_0x9a34('0x95'),_0x3a3955[_0x9a34('0x39')],util['inspect'](_0x3a3955,{'showHidden':![],'depth':null}));if(this[_0x9a34('0x1c')][_0x3a3955[_0x9a34('0x39')]]){logger['info'](_0x9a34('0x96'),_0x3a3955[_0x9a34('0x39')],_0x3a3955[_0x9a34('0x97')]);var _0x1c6e46=moment();this[_0x9a34('0x1c')][_0x3a3955[_0x9a34('0x39')]]['endtime']=_0x1c6e46['format'](_0x9a34('0x5f'));this[_0x9a34('0x1c')][_0x3a3955[_0x9a34('0x39')]][_0x9a34('0x5c')]=_0x1c6e46[_0x9a34('0x6c')](this['channels'][_0x3a3955['uniqueid']][_0x9a34('0x4c')],'seconds');if(this[_0x9a34('0x1c')][_0x3a3955[_0x9a34('0x39')]][_0x9a34('0x6a')]){this[_0x9a34('0x1c')][_0x3a3955['uniqueid']][_0x9a34('0x98')]=_0x1c6e46[_0x9a34('0x6c')](this[_0x9a34('0x1c')][_0x3a3955['uniqueid']][_0x9a34('0x99')],_0x9a34('0x5e'));this[_0x9a34('0x1c')][_0x3a3955[_0x9a34('0x39')]][_0x9a34('0x6b')]=this[_0x9a34('0x1c')][_0x3a3955[_0x9a34('0x39')]][_0x9a34('0x5c')]-this['channels'][_0x3a3955['uniqueid']][_0x9a34('0x98')];}if(_0x3a3955[_0x9a34('0x40')]===_0x9a34('0x51')){if(this[_0x9a34('0x1d')][_0x3a3955['channel'][_0x9a34('0x45')]('-')[0x0]]){this[_0x9a34('0x1d')][_0x3a3955['channel']['split']('-')[0x0]]=_[_0x9a34('0x9a')](this[_0x9a34('0x1d')][_0x3a3955[_0x9a34('0x41')]['split']('-')[0x0]],[_0x9a34('0x52')]);logger[_0x9a34('0x49')](_0x9a34('0x9b'),_0x3a3955[_0x9a34('0x39')],util[_0x9a34('0x3d')]({'id':this[_0x9a34('0x1d')][_0x3a3955[_0x9a34('0x41')][_0x9a34('0x45')]('-')[0x0]]['id'],'destaccountcode':this[_0x9a34('0x1d')][_0x3a3955[_0x9a34('0x41')]['split']('-')[0x0]][_0x9a34('0x73')]},{'showHidden':![],'depth':null}));this['emit'](util[_0x9a34('0x4d')](_0x9a34('0x44'),this[_0x9a34('0x1d')][_0x3a3955['channel'][_0x9a34('0x45')]('-')[0x0]][_0x9a34('0x46')]),_0x9a34('0x9c'),{'id':this[_0x9a34('0x1d')][_0x3a3955['channel'][_0x9a34('0x45')]('-')[0x0]]['id'],'destaccountcode':this[_0x9a34('0x1d')][_0x3a3955[_0x9a34('0x41')][_0x9a34('0x45')]('-')[0x0]][_0x9a34('0x73')]});}}var _0x15b99c=this;Promise[_0x9a34('0x9d')]()[_0x9a34('0x9e')](function(){var _0x4875da=_0x15b99c[_0x9a34('0x1c')][_0x3a3955[_0x9a34('0x39')]];if(typeof _0x4875da['transferType']==='undefined')return;if(_['isEmpty'](_0x4875da[_0x9a34('0x7b')]))return;return RpcSetting[_0x9a34('0x9f')]()[_0x9a34('0x9e')](function(_0xfe3430){if(!_0xfe3430['stopRecordingOnTransfer'])return;return Promise[_0x9a34('0x9d')]()['then'](function(){return ami['Action']({'action':_0x9a34('0xa0'),'channel':_0x4875da[_0x9a34('0x41')]})[_0x9a34('0xa1')](function(){});})[_0x9a34('0x9e')](function(){return ami[_0x9a34('0xa2')]({'action':_0x9a34('0xa0'),'channel':_0x4875da[_0x9a34('0x6e')]})[_0x9a34('0xa1')](function(){})['finally'](function(){var _0x5826f5=_0x15b99c['agents'][_0x4875da[_0x9a34('0x6e')][_0x9a34('0x45')]('-')[0x0]];if(!_0x5826f5)return;io[_0x9a34('0x37')](_0x9a34('0xa3'),{'agentId':_0x5826f5['id'],'uniqueid':_0x4875da[_0x9a34('0x39')]});});});});})[_0x9a34('0x9e')](function(){if(_0x3a3955['event']===_0x9a34('0xa4')){_0x15b99c[_0x9a34('0x1e')][_0x3a3955['uniqueid']]=_0x15b99c[_0x9a34('0x1c')][_0x3a3955['uniqueid']];}else{if(_0x15b99c[_0x9a34('0x1c')][_0x3a3955[_0x9a34('0x39')]]['type']===_0x9a34('0xa5')&&_0x15b99c[_0x9a34('0x1e')][_0x3a3955[_0x9a34('0x39')]]){_0x15b99c[_0x9a34('0x1c')][_0x3a3955[_0x9a34('0x39')]][_0x9a34('0x39')]=[_0x15b99c[_0x9a34('0x1c')][_0x3a3955[_0x9a34('0x39')]]['linkedid'],_0x15b99c[_0x9a34('0x1c')][_0x3a3955['uniqueid']]['linkedid']=_0x15b99c['channels'][_0x3a3955[_0x9a34('0x39')]][_0x9a34('0x39')]][0x0];delete _0x15b99c[_0x9a34('0x1e')][_0x3a3955[_0x9a34('0x39')]];}}logger['debug'](_0x9a34('0xa6'),_0x3a3955[_0x9a34('0x39')],util[_0x9a34('0x3d')](_0x15b99c[_0x9a34('0x1c')][_0x3a3955[_0x9a34('0x39')]],{'showHidden':![],'depth':null}));ami['emit']('custom:voiceCallReport',_0x15b99c['channels'][_0x3a3955[_0x9a34('0x39')]]);delete _0x15b99c[_0x9a34('0x1c')][_0x3a3955[_0x9a34('0x39')]];});}}}catch(_0x3f8952){logger[_0x9a34('0x53')](_0x9a34('0xa7'),_0x3a3955[_0x9a34('0x39')],util[_0x9a34('0x3d')](_0x3f8952,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x9a34('0x34')][_0x9a34('0x2a')]=function(_0x1f285f){try{if(this[_0x9a34('0x35')](_0x1f285f)){logger['info']('[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x1f285f[_0x9a34('0x39')],_0x1f285f[_0x9a34('0xa8')],_0x1f285f['transfertargetcalleridnum']);logger['debug'](_0x9a34('0xa9'),_0x1f285f[_0x9a34('0x39')],util[_0x9a34('0x3d')](_0x1f285f,{'showHidden':![],'depth':null}));if(this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xaa')]]){this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xaa')]]['transfercalleridnum']=_0x1f285f[_0x9a34('0xa8')];this['channels'][_0x1f285f[_0x9a34('0xaa')]][_0x9a34('0xab')]=_0x1f285f[_0x9a34('0xac')];if(this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xad')]]){var _0x5100c6=this['channels'][_0x1f285f['secondtransfereruniqueid']];this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xad')]]=this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xaa')]];this['channels'][_0x1f285f['transfereeuniqueid']]=_0x5100c6;}}else if(this['channels'][_0x1f285f[_0x9a34('0xae')]]){this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xae')]][_0x9a34('0xaf')]=_0x1f285f[_0x9a34('0xa8')];this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xae')]][_0x9a34('0xab')]=_0x1f285f[_0x9a34('0xac')];if(this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xb0')]]){var _0x5100c6=this['channels'][_0x1f285f['origtransfereruniqueid']];this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xb0')]]=this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xae')]];this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xae')]]=_0x5100c6;}}if((this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xb0')]]||this['channels'][_0x1f285f[_0x9a34('0xb1')]])&&this['channels'][_0x1f285f[_0x9a34('0xad')]]){var _0x414986=_[_0x9a34('0xb2')]([this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xb0')]],this['channels'][_0x1f285f[_0x9a34('0xb1')]],this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xad')]]],function(_0x5c3eb7){return _0x5c3eb7&&_0x5c3eb7['type']==='outbound'&&_0x5c3eb7[_0x9a34('0xb3')];});if(_0x414986){if(this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xb0')]])this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xb0')]][_0x9a34('0xb4')]=_0x9a34('0xb5');if(this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xb1')]])this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xb1')]][_0x9a34('0xb4')]=_0x9a34('0xb5');this[_0x9a34('0x1c')][_0x1f285f[_0x9a34('0xad')]][_0x9a34('0xb4')]=_0x9a34('0xb5');}}}}catch(_0x39c1af){logger['error'](_0x9a34('0xb6'),_0x1f285f['uniqueid'],util[_0x9a34('0x3d')](_0x39c1af,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x9a34('0x34')][_0x9a34('0x2b')]=function(_0x2644d6){try{if(this[_0x9a34('0x35')](_0x2644d6)){logger[_0x9a34('0x30')]('[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x2644d6[_0x9a34('0x39')],_0x2644d6[_0x9a34('0xb7')],_0x2644d6[_0x9a34('0xb8')]);logger[_0x9a34('0x49')]('[%s][voiceCallReport][blindtransfer]\x20event:',_0x2644d6[_0x9a34('0x39')],util[_0x9a34('0x3d')](_0x2644d6,{'showHidden':![],'depth':null}));if(this[_0x9a34('0x1c')][_0x2644d6[_0x9a34('0xaa')]]){this[_0x9a34('0x1c')][_0x2644d6[_0x9a34('0xaa')]][_0x9a34('0xaf')]=_0x2644d6[_0x9a34('0xb7')];this[_0x9a34('0x1c')][_0x2644d6['transfereeuniqueid']][_0x9a34('0xab')]=_0x2644d6[_0x9a34('0xb8')];this[_0x9a34('0x1c')][_0x2644d6[_0x9a34('0xaa')]][_0x9a34('0xb4')]=_0x9a34('0xb9');this[_0x9a34('0x26')]({'event':_0x9a34('0xa4'),'uniqueid':_0x2644d6['transfereeuniqueid'],'context':_0x2644d6[_0x9a34('0x40')],'channel':_0x2644d6['transfererchannel']});}else{this[_0x9a34('0x1c')][_0x2644d6[_0x9a34('0xba')]]['transferType']=_0x9a34('0xb9');}}}catch(_0x5b54b3){logger['error']('[%s][voiceCallReport][blindtransfer]',_0x2644d6['uniqueid'],util['inspect'](_0x5b54b3,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x9a34('0x34')][_0x9a34('0x2d')]=function(_0x4241b4){try{if(this[_0x9a34('0x35')](_0x4241b4)){logger['debug'](_0x9a34('0xbb'),_0x4241b4[_0x9a34('0x39')],util['inspect'](_0x4241b4,{'showHidden':![],'depth':null}));if(this[_0x9a34('0x1c')][_0x4241b4['uniqueid']]){if(!_[_0x9a34('0xbc')](this['channels'][_0x4241b4[_0x9a34('0x39')]][_0x9a34('0x99')])){this[_0x9a34('0x1c')][_0x4241b4[_0x9a34('0x39')]][_0x9a34('0xbd')]=moment()[_0x9a34('0x4d')]('YYYY-MM-DD\x20HH:mm:ss');logger['info'](_0x9a34('0xbe'),_0x4241b4[_0x9a34('0x39')],this['channels'][_0x4241b4[_0x9a34('0x39')]][_0x9a34('0xbd')]);}}}}catch(_0x5980eb){logger[_0x9a34('0x53')](_0x9a34('0xbf'),_0x4241b4[_0x9a34('0x39')],util[_0x9a34('0x3d')](_0x5980eb,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x9a34('0x34')]['syncMusicOnHoldStop']=function(_0x1185dc){try{if(this['isNotNull'](_0x1185dc)){logger[_0x9a34('0x49')]('[%s][voiceCallReport][musiconholdstop]\x20event:',_0x1185dc[_0x9a34('0x39')],util[_0x9a34('0x3d')](_0x1185dc,{'showHidden':![],'depth':null}));if(this['channels'][_0x1185dc[_0x9a34('0x39')]]){if(!_[_0x9a34('0xbc')](this[_0x9a34('0x1c')][_0x1185dc['uniqueid']][_0x9a34('0xbd')])){this['channels'][_0x1185dc[_0x9a34('0x39')]][_0x9a34('0xc0')]+=moment()[_0x9a34('0xc1')](0x0)[_0x9a34('0x6c')](this[_0x9a34('0x1c')][_0x1185dc['uniqueid']]['mohstarttime'],_0x9a34('0x5e'));logger[_0x9a34('0x30')](_0x9a34('0xc2'),_0x1185dc[_0x9a34('0x39')],this['channels'][_0x1185dc['uniqueid']][_0x9a34('0xc0')]);delete this[_0x9a34('0x1c')][_0x1185dc[_0x9a34('0x39')]][_0x9a34('0xbd')];}}}}catch(_0x5b937d){logger[_0x9a34('0x53')](_0x9a34('0xc3'),_0x1185dc['uniqueid'],util[_0x9a34('0x3d')](_0x5b937d,{'showHidden':![],'depth':null}));}};module[_0x9a34('0xc4')]=VoiceCallReport;
\ No newline at end of file
+var _0x7b13=['channel','exten','split','destconnectedlinenum','connectedlinenum','emit','format','user:%s','name','user:agentconnect','accountcode','debug','OutgoingSpoolFailed','info','starttime','YYYY-MM-DD\x20HH:mm:ss','disposition','channelstate','from-sip','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','application','applicationdata','appdata','startsWith','toLowerCase','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','subtract','duration','seconds','includes','lastapplication','match','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','answered','answertime','holdtime','diff','xcally-motion-preview','connectedlinename','destinationchannel','toNumber','UserId','membername','routealias','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','replace','.wav49','.WAV','monitorFilename','find','isNil','monitors','rec','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','parse','sipcalllinkedid','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','resolve','then','transferType','isEmpty','getSettings','stopRecordingOnTransfer','Action','StopMixMonitor','catch','finally','webbar:stopmonitors','event','BlindTransfer','type','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','transfertargetuniqueid','origtransferercalleridnum','origtransfereruniqueid','origtransfererlinkedid','some','ATTENDED','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','extension','[%s][voiceCallReport][blindtransfer]\x20event:','transfereecalleridnum','BLIND','transfererchannel','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','mohstarttime','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','exports','bluebird','lodash','moment','util','path','ioredis','../../../config/environment','ami','../ami','../model/channel','busy','ringing','ringinuse','set','queue','agi','dial','playback','NO\x20ANSWER','FAILED','BUSY','redis','defaults','localhost','socket.io-emitter','channels','agents','blindTransfers','coreshowchannel','syncNewExten','bind','newexten','newchannel','syncNewChannel','syncNewState','varset','syncVarSet','hangup','syncHangup','newcallerid','syncNewCallerId','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isNotNull','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','[%s][voiceCallReport][newcallerid]\x20event:','linkedid','isUndefined','merge','pick','keys','context'];(function(_0x229e53,_0x584c51){var _0x170c25=function(_0x3dcbe6){while(--_0x3dcbe6){_0x229e53['push'](_0x229e53['shift']());}};_0x170c25(++_0x584c51);}(_0x7b13,0x8a));var _0x37b1=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x7b13[_0x4b369d];return _0x571a98;};'use strict';var BPromise=require(_0x37b1('0x0'));var _=require(_0x37b1('0x1'));var moment=require(_0x37b1('0x2'));var util=require(_0x37b1('0x3'));var path=require(_0x37b1('0x4'));var Redis=require(_0x37b1('0x5'));var config=require(_0x37b1('0x6'));var logger=require('../../../config/logger')(_0x37b1('0x7'));var ami=require(_0x37b1('0x8'));var Channel=require(_0x37b1('0x9'));var RpcSetting=require('../rpc/setting');var statusDesc=['unknown','not_inuse','inuse',_0x37b1('0xa'),'invalid','unavailable',_0x37b1('0xb'),_0x37b1('0xc'),'onhold'];var applications=[_0x37b1('0xd'),_0x37b1('0xe'),_0x37b1('0xf'),_0x37b1('0x10'),_0x37b1('0x11'),'voicemail'];var dispositions=[_0x37b1('0x12'),_0x37b1('0x13'),_0x37b1('0x13'),'NO\x20ANSWER','NO\x20ANSWER',_0x37b1('0x12'),'ANSWERED',_0x37b1('0x14'),_0x37b1('0x13'),'FAILED',_0x37b1('0x13')];var actions={};config[_0x37b1('0x15')]=_[_0x37b1('0x16')](config[_0x37b1('0x15')],{'host':_0x37b1('0x17'),'port':0x18eb});var io=require(_0x37b1('0x18'))(new Redis(config['redis']));function VoiceCallReport(_0x347e51){this[_0x37b1('0x19')]=_0x347e51[_0x37b1('0x19')];this[_0x37b1('0x1a')]=_0x347e51[_0x37b1('0x1a')];this[_0x37b1('0x1b')]={};ami['on'](_0x37b1('0x1c'),this[_0x37b1('0x1d')][_0x37b1('0x1e')](this));ami['on'](_0x37b1('0x1f'),this['syncNewExten'][_0x37b1('0x1e')](this));ami['on'](_0x37b1('0x20'),this[_0x37b1('0x21')][_0x37b1('0x1e')](this));ami['on']('newstate',this[_0x37b1('0x22')][_0x37b1('0x1e')](this));ami['on'](_0x37b1('0x23'),this[_0x37b1('0x24')][_0x37b1('0x1e')](this));ami['on'](_0x37b1('0x25'),this[_0x37b1('0x26')][_0x37b1('0x1e')](this));ami['on'](_0x37b1('0x27'),this[_0x37b1('0x28')][_0x37b1('0x1e')](this));ami['on'](_0x37b1('0x29'),this[_0x37b1('0x2a')][_0x37b1('0x1e')](this));ami['on'](_0x37b1('0x2b'),this[_0x37b1('0x2c')][_0x37b1('0x1e')](this));ami['on'](_0x37b1('0x2d'),this[_0x37b1('0x2e')][_0x37b1('0x1e')](this));ami['on'](_0x37b1('0x2f'),this[_0x37b1('0x30')]['bind'](this));try{logger['info']('[voiceCallReport][coreshowchannels]\x20started');ami[_0x37b1('0x31')]();}catch(_0x151f33){logger[_0x37b1('0x32')](_0x37b1('0x33'),util[_0x37b1('0x34')](_0x151f33,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x37b1('0x35')][_0x37b1('0x36')]=function(_0x7d1217){return _0x7d1217!==null&&!_['isUndefined'](_0x7d1217);};VoiceCallReport[_0x37b1('0x35')]['emit']=function(_0x4a1fa2,_0xe2b67e,_0x42c09a){io['to'](_0x4a1fa2)['emit'](_0xe2b67e,_0x42c09a);};VoiceCallReport[_0x37b1('0x35')][_0x37b1('0x28')]=function(_0x5cb05e){try{if(this[_0x37b1('0x36')](_0x5cb05e)){logger['info'](_0x37b1('0x37'),_0x5cb05e[_0x37b1('0x38')],_0x5cb05e[_0x37b1('0x39')],_0x5cb05e[_0x37b1('0x3a')]);logger['debug'](_0x37b1('0x3b'),_0x5cb05e[_0x37b1('0x38')],util[_0x37b1('0x34')](_0x5cb05e,{'showHidden':![],'depth':null}));if(_0x5cb05e[_0x37b1('0x38')]===_0x5cb05e[_0x37b1('0x3c')]){if(!_[_0x37b1('0x3d')](this['channels'][_0x5cb05e[_0x37b1('0x38')]])){_[_0x37b1('0x3e')](this[_0x37b1('0x19')][_0x5cb05e[_0x37b1('0x38')]],_[_0x37b1('0x3f')](_0x5cb05e,_[_0x37b1('0x40')](this[_0x37b1('0x19')][_0x5cb05e['uniqueid']])));}}if(_0x5cb05e[_0x37b1('0x41')]==='from-sip'){if(this[_0x37b1('0x1a')][_0x5cb05e[_0x37b1('0x42')]['split']('-')[0x0]]){if(_0x5cb05e[_0x37b1('0x43')]=='xcally-motion-preview'){this['agents'][_0x5cb05e['channel'][_0x37b1('0x44')]('-')[0x0]][_0x37b1('0x45')]=_0x5cb05e[_0x37b1('0x46')];this[_0x37b1('0x47')](util[_0x37b1('0x48')](_0x37b1('0x49'),this[_0x37b1('0x1a')][_0x5cb05e[_0x37b1('0x42')][_0x37b1('0x44')]('-')[0x0]][_0x37b1('0x4a')]),_0x37b1('0x4b'),{'destaccountcode':this[_0x37b1('0x1a')][_0x5cb05e['channel'][_0x37b1('0x44')]('-')[0x0]][_0x37b1('0x4c')],'destconnectedlinenum':_0x5cb05e[_0x37b1('0x46')]});}}}}}catch(_0x255339){logger[_0x37b1('0x32')]('[%s][voiceCallReport][newcallerid]',_0x5cb05e[_0x37b1('0x38')],util[_0x37b1('0x34')](_0x255339,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncNewChannel']=function(_0x1cda98){try{if(this['isNotNull'](_0x1cda98)){logger[_0x37b1('0x4d')]('[%s][voiceCallReport][newchannel]\x20event:',_0x1cda98[_0x37b1('0x38')],util[_0x37b1('0x34')](_0x1cda98,{'showHidden':![],'depth':null}));if(_0x1cda98[_0x37b1('0x38')]===_0x1cda98['linkedid']&&_0x1cda98[_0x37b1('0x42')]!=_0x37b1('0x4e')){if(_[_0x37b1('0x3d')](this[_0x37b1('0x19')][_0x1cda98[_0x37b1('0x38')]])){logger[_0x37b1('0x4f')]('[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s',_0x1cda98['uniqueid'],_0x1cda98['context'],_0x1cda98[_0x37b1('0x43')]);this['channels'][_0x1cda98[_0x37b1('0x38')]]=new Channel();this['channels'][_0x1cda98[_0x37b1('0x38')]][_0x37b1('0x50')]=moment()[_0x37b1('0x48')](_0x37b1('0x51'));this[_0x37b1('0x19')][_0x1cda98[_0x37b1('0x38')]][_0x37b1('0x52')]=dispositions[_['toNumber'](_0x1cda98[_0x37b1('0x53')])];_[_0x37b1('0x3e')](this[_0x37b1('0x19')][_0x1cda98[_0x37b1('0x38')]],_['pick'](_0x1cda98,_[_0x37b1('0x40')](this[_0x37b1('0x19')][_0x1cda98['uniqueid']])));if(_0x1cda98['context']===_0x37b1('0x54')){if(this[_0x37b1('0x1a')][_0x1cda98['channel'][_0x37b1('0x44')]('-')[0x0]]){if(_['isUndefined'](this['agents'][_0x1cda98[_0x37b1('0x42')][_0x37b1('0x44')]('-')[0x0]][_0x37b1('0x45')])){this[_0x37b1('0x1a')][_0x1cda98[_0x37b1('0x42')][_0x37b1('0x44')]('-')[0x0]]['destconnectedlinenum']=_0x1cda98[_0x37b1('0x43')];logger[_0x37b1('0x4d')](_0x37b1('0x55'),_0x1cda98[_0x37b1('0x38')],util[_0x37b1('0x34')]({'destaccountcode':this[_0x37b1('0x1a')][_0x1cda98['channel'][_0x37b1('0x44')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x1cda98['exten']},{'showHidden':![],'depth':null}));this[_0x37b1('0x47')](util[_0x37b1('0x48')]('user:%s',this[_0x37b1('0x1a')][_0x1cda98[_0x37b1('0x42')][_0x37b1('0x44')]('-')[0x0]]['name']),_0x37b1('0x4b'),{'destaccountcode':this[_0x37b1('0x1a')][_0x1cda98['channel'][_0x37b1('0x44')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x1cda98[_0x37b1('0x43')]});}}}}}}}catch(_0x346b86){logger[_0x37b1('0x32')](_0x37b1('0x56'),_0x1cda98[_0x37b1('0x38')],util['inspect'](_0x346b86,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x37b1('0x35')][_0x37b1('0x1d')]=function(_0x198093){try{if(this[_0x37b1('0x36')](_0x198093)){logger[_0x37b1('0x4d')](_0x37b1('0x57'),_0x198093['uniqueid'],util[_0x37b1('0x34')](_0x198093,{'showHidden':![],'depth':null}));if(_0x198093['uniqueid']===_0x198093[_0x37b1('0x3c')]&&_0x198093[_0x37b1('0x43')]!='h'&&_0x198093[_0x37b1('0x42')]!=_0x37b1('0x4e')){_0x198093[_0x37b1('0x58')]=_0x198093[_0x37b1('0x58')]['toLowerCase']();_0x198093[_0x37b1('0x59')]=_0x198093[_0x37b1('0x5a')]&&_0x198093[_0x37b1('0x5a')][_0x37b1('0x5b')]('CDR(routeAlias)')?_0x198093[_0x37b1('0x5a')]:(_0x198093[_0x37b1('0x5a')]||_0x198093[_0x37b1('0x59')])[_0x37b1('0x5c')]();logger[_0x37b1('0x4f')](_0x37b1('0x5d'),_0x198093[_0x37b1('0x38')],_0x198093[_0x37b1('0x58')],_0x198093[_0x37b1('0x59')]);if(_['isUndefined'](this[_0x37b1('0x19')][_0x198093[_0x37b1('0x38')]])){this['channels'][_0x198093[_0x37b1('0x38')]]=new Channel();this['channels'][_0x198093[_0x37b1('0x38')]][_0x37b1('0x50')]=_0x198093['duration']?moment()[_0x37b1('0x5e')](moment[_0x37b1('0x5f')](_0x198093[_0x37b1('0x5f')])[_0x37b1('0x60')](),'seconds')[_0x37b1('0x48')](_0x37b1('0x51')):moment()[_0x37b1('0x48')](_0x37b1('0x51'));this['channels'][_0x198093[_0x37b1('0x38')]]['disposition']=_0x37b1('0x12');}_['merge'](this[_0x37b1('0x19')][_0x198093[_0x37b1('0x38')]],_[_0x37b1('0x3f')](_0x198093,_['keys'](this['channels'][_0x198093[_0x37b1('0x38')]])));if(_[_0x37b1('0x61')](applications,_0x198093['application'])){this[_0x37b1('0x19')][_0x198093[_0x37b1('0x38')]][_0x37b1('0x62')]=_0x198093['application'];this['channels'][_0x198093[_0x37b1('0x38')]]['lastdata']=_0x198093[_0x37b1('0x59')];if(_0x198093[_0x37b1('0x58')]===_0x37b1('0xd')&&_[_0x37b1('0x5b')](_0x198093[_0x37b1('0x59')]['toLowerCase'](),'cdr(')){var _0x3af303=_0x198093[_0x37b1('0x59')][_0x37b1('0x44')]('=');var _0x45f332=_0x3af303[0x0][_0x37b1('0x5c')]()[_0x37b1('0x63')](/cdr\((.*)\)/);if(_0x45f332){this['channels'][_0x198093[_0x37b1('0x38')]][_0x45f332[0x1]]=_0x3af303[0x1];}}else if(_0x198093[_0x37b1('0x58')]===_0x37b1('0xe')){this[_0x37b1('0x19')][_0x198093[_0x37b1('0x38')]][_0x37b1('0xe')]=_0x198093[_0x37b1('0x59')][_0x37b1('0x44')](',')[0x0];}}}}}catch(_0x3b7645){logger[_0x37b1('0x32')](_0x37b1('0x64'),_0x198093['uniqueid'],util[_0x37b1('0x34')](_0x3b7645,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x37b1('0x35')][_0x37b1('0x22')]=function(_0x147707){try{if(this[_0x37b1('0x36')](_0x147707)){logger['info'](_0x37b1('0x65'),_0x147707['uniqueid'],_0x147707[_0x37b1('0x3c')],_0x147707[_0x37b1('0x39')],_0x147707[_0x37b1('0x3a')]);logger[_0x37b1('0x4d')]('[%s][voiceCallReport][newstate]\x20event:',_0x147707[_0x37b1('0x38')],util[_0x37b1('0x34')](_0x147707,{'showHidden':![],'depth':null}));if(_0x147707['uniqueid']!==_0x147707[_0x37b1('0x3c')]){if(this[_0x37b1('0x19')][_0x147707[_0x37b1('0x3c')]]){if(_0x147707['channelstate']==='6'){if(!this[_0x37b1('0x19')][_0x147707['linkedid']][_0x37b1('0x66')]){var _0x1aa0aa=moment();this['channels'][_0x147707[_0x37b1('0x3c')]][_0x37b1('0x66')]=!![];this[_0x37b1('0x19')][_0x147707[_0x37b1('0x3c')]][_0x37b1('0x67')]=_0x1aa0aa[_0x37b1('0x48')](_0x37b1('0x51'));if(this[_0x37b1('0x19')][_0x147707[_0x37b1('0x3c')]][_0x37b1('0x50')]){this[_0x37b1('0x19')][_0x147707[_0x37b1('0x3c')]][_0x37b1('0x68')]=_0x1aa0aa[_0x37b1('0x69')](this[_0x37b1('0x19')][_0x147707[_0x37b1('0x3c')]]['starttime'],_0x37b1('0x60'));}}this['channels'][_0x147707[_0x37b1('0x3c')]][_0x37b1('0x3c')]=_0x147707['uniqueid'];if(_0x147707[_0x37b1('0x3a')]!==_0x37b1('0x6a')){this[_0x37b1('0x19')][_0x147707['linkedid']][_0x37b1('0x46')]=_0x147707['calleridnum'];}this['channels'][_0x147707[_0x37b1('0x3c')]][_0x37b1('0x6b')]=_0x147707['calleridname'];this['channels'][_0x147707[_0x37b1('0x3c')]][_0x37b1('0x6c')]=_0x147707[_0x37b1('0x42')];this[_0x37b1('0x19')][_0x147707[_0x37b1('0x3c')]][_0x37b1('0x52')]=dispositions[_[_0x37b1('0x6d')](_0x147707[_0x37b1('0x53')])];if(this[_0x37b1('0x1a')][_0x147707[_0x37b1('0x42')]['split']('-')[0x0]]){this[_0x37b1('0x19')][_0x147707[_0x37b1('0x3c')]][_0x37b1('0x6e')]=this[_0x37b1('0x1a')][_0x147707[_0x37b1('0x42')][_0x37b1('0x44')]('-')[0x0]]['id'];this[_0x37b1('0x19')][_0x147707['linkedid']][_0x37b1('0x6f')]=this[_0x37b1('0x1a')][_0x147707['channel'][_0x37b1('0x44')]('-')[0x0]]['name'];}}}}else{if(this[_0x37b1('0x19')][_0x147707[_0x37b1('0x38')]]){if(_0x147707[_0x37b1('0x53')]==='6'){if(this[_0x37b1('0x1a')][_0x147707[_0x37b1('0x42')][_0x37b1('0x44')]('-')[0x0]]){this[_0x37b1('0x19')][_0x147707[_0x37b1('0x38')]][_0x37b1('0x6e')]=this['agents'][_0x147707[_0x37b1('0x42')][_0x37b1('0x44')]('-')[0x0]]['id'];this[_0x37b1('0x19')][_0x147707['uniqueid']][_0x37b1('0x6f')]=this[_0x37b1('0x1a')][_0x147707[_0x37b1('0x42')][_0x37b1('0x44')]('-')[0x0]][_0x37b1('0x4a')];}}}}if(_0x147707[_0x37b1('0x53')]==='6'&&_0x147707[_0x37b1('0x41')]===_0x37b1('0x54')){if(this[_0x37b1('0x1a')][_0x147707['channel'][_0x37b1('0x44')]('-')[0x0]]){this[_0x37b1('0x1a')][_0x147707[_0x37b1('0x42')][_0x37b1('0x44')]('-')[0x0]]['destconnectedlinenum']=_0x147707[_0x37b1('0x43')];var _0x39b0a4;if(this[_0x37b1('0x19')][_0x147707[_0x37b1('0x38')]])_0x39b0a4=this[_0x37b1('0x19')][_0x147707[_0x37b1('0x38')]]['routealias'];else if(this[_0x37b1('0x19')][_0x147707[_0x37b1('0x3c')]])_0x39b0a4=this[_0x37b1('0x19')][_0x147707[_0x37b1('0x3c')]][_0x37b1('0x70')];logger[_0x37b1('0x4d')]('[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:',_0x147707[_0x37b1('0x38')],util['inspect']({'destaccountcode':this[_0x37b1('0x1a')][_0x147707[_0x37b1('0x42')][_0x37b1('0x44')]('-')[0x0]][_0x37b1('0x4c')],'destconnectedlinenum':_0x147707[_0x37b1('0x43')],'routealias':_0x39b0a4},{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x37b1('0x49'),this[_0x37b1('0x1a')][_0x147707[_0x37b1('0x42')][_0x37b1('0x44')]('-')[0x0]][_0x37b1('0x4a')]),_0x37b1('0x4b'),{'destaccountcode':this[_0x37b1('0x1a')][_0x147707[_0x37b1('0x42')][_0x37b1('0x44')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x147707['exten'],'routealias':_0x39b0a4});}}}}catch(_0x32121e){logger[_0x37b1('0x32')](_0x37b1('0x71'),_0x147707[_0x37b1('0x38')],util[_0x37b1('0x34')](_0x32121e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x37b1('0x35')][_0x37b1('0x72')]=function(_0x4e3330,_0x4fb55a){try{if(this[_0x37b1('0x19')][_0x4e3330]){logger[_0x37b1('0x4f')](_0x37b1('0x73'),_0x4e3330,_0x4fb55a);this['channels'][_0x4e3330][_0x37b1('0x74')]=!![];if(_[_0x37b1('0x75')](_0x4fb55a,'.wav49')){_0x4fb55a=_0x4fb55a[_0x37b1('0x76')](_0x37b1('0x77'),_0x37b1('0x78'));}this[_0x37b1('0x19')][_0x4e3330][_0x37b1('0x79')]=_0x4fb55a;var _0x207da0=_[_0x37b1('0x7a')](this[_0x37b1('0x19')][_0x4e3330]['monitors'],{'filename':_0x4fb55a});if(_[_0x37b1('0x7b')](_0x207da0)){this[_0x37b1('0x19')][_0x4e3330][_0x37b1('0x7c')]['push']({'filename':_0x4fb55a,'createdAt':moment()[_0x37b1('0x48')](_0x37b1('0x51')),'mixmonitorid':'','status':_0x37b1('0x7d')});}}}catch(_0xca710d){logger[_0x37b1('0x32')](_0x37b1('0x7e'),_0x4e3330,util[_0x37b1('0x34')](_0xca710d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x37b1('0x35')][_0x37b1('0x24')]=function(_0x29306e){try{if(this['isNotNull'](_0x29306e)){logger[_0x37b1('0x4d')](_0x37b1('0x7f'),_0x29306e[_0x37b1('0x38')],util[_0x37b1('0x34')](_0x29306e,{'showHidden':![],'depth':null}));if(this[_0x37b1('0x19')][_0x29306e['uniqueid']]&&_0x29306e[_0x37b1('0x42')]!=_0x37b1('0x4e')){if(this[_0x37b1('0x36')](_0x29306e[_0x37b1('0x80')])){if(this['isNotNull'](_0x29306e[_0x37b1('0x80')][_0x37b1('0x81')])){logger['info'](_0x37b1('0x82'),_0x29306e[_0x37b1('0x38')],_0x29306e[_0x37b1('0x83')]);this['syncMixMonitorFilename'](_0x29306e[_0x37b1('0x38')],_0x29306e['value']);}else if(this[_0x37b1('0x36')](_0x29306e[_0x37b1('0x80')]['xmd-phone'])){logger['info'](_0x37b1('0x84'),_0x29306e[_0x37b1('0x38')],_0x29306e['value']);this[_0x37b1('0x19')][_0x29306e[_0x37b1('0x38')]][_0x37b1('0x3a')]=_0x29306e['value'];}else if(this[_0x37b1('0x36')](_0x29306e[_0x37b1('0x80')]['xmd-callerid'])){logger[_0x37b1('0x4f')](_0x37b1('0x85'),_0x29306e[_0x37b1('0x38')],_0x29306e[_0x37b1('0x83')]);this[_0x37b1('0x19')][_0x29306e[_0x37b1('0x38')]][_0x37b1('0x86')]=_0x29306e[_0x37b1('0x83')];}else if(this[_0x37b1('0x36')](_0x29306e['variable'][_0x37b1('0x87')])){logger[_0x37b1('0x4f')]('[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x29306e[_0x37b1('0x38')],_0x29306e[_0x37b1('0x83')]);this[_0x37b1('0x19')][_0x29306e['uniqueid']]['type']=_0x29306e[_0x37b1('0x83')];}else if(this[_0x37b1('0x36')](_0x29306e[_0x37b1('0x80')][_0x37b1('0x88')])){logger['info'](_0x37b1('0x89'),_0x29306e['uniqueid'],_0x29306e[_0x37b1('0x83')][_0x37b1('0x44')](',')[0x0]);this[_0x37b1('0x19')][_0x29306e[_0x37b1('0x38')]][_0x37b1('0xe')]=_0x29306e[_0x37b1('0x83')][_0x37b1('0x44')](',')[0x0];}else if(this['isNotNull'](_0x29306e[_0x37b1('0x80')][_0x37b1('0x8a')])){logger[_0x37b1('0x4f')]('[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x29306e[_0x37b1('0x38')],_0x29306e[_0x37b1('0x83')]);this[_0x37b1('0x19')][_0x29306e[_0x37b1('0x38')]][_0x37b1('0x8b')]=_0x29306e[_0x37b1('0x83')];}else if(this['isNotNull'](_0x29306e[_0x37b1('0x80')][_0x37b1('0x8c')])){logger['info'](_0x37b1('0x8d'),_0x29306e['uniqueid'],_0x29306e[_0x37b1('0x83')]);this['channels'][_0x29306e[_0x37b1('0x38')]][_0x37b1('0x8e')]=_0x29306e['value'];}else if(this['isNotNull'](_0x29306e[_0x37b1('0x80')]['xmd-callerid-preview'])){logger['info'](_0x37b1('0x8f'),_0x29306e[_0x37b1('0x38')],_0x29306e[_0x37b1('0x83')]);this[_0x37b1('0x19')][_0x29306e['uniqueid']][_0x37b1('0x90')]=_0x29306e[_0x37b1('0x83')];}else if(this[_0x37b1('0x36')](_0x29306e[_0x37b1('0x80')]['xmcs-queue'])){logger['info'](_0x37b1('0x91'),_0x29306e[_0x37b1('0x38')],_0x29306e['value']);this[_0x37b1('0x19')][_0x29306e[_0x37b1('0x38')]][_0x37b1('0xe')]=_0x29306e[_0x37b1('0x83')];}else if(this['isNotNull'](_0x29306e[_0x37b1('0x80')][_0x37b1('0x92')])){logger['info'](_0x37b1('0x93'),_0x29306e[_0x37b1('0x38')],_0x29306e['value']);this['channels'][_0x29306e[_0x37b1('0x38')]][_0x37b1('0x94')]=_0x29306e[_0x37b1('0x83')];}}}else if(this[_0x37b1('0x36')](_0x29306e['variable'][_0x37b1('0x81')])){if(_0x29306e[_0x37b1('0x83')]){var _0x18a5ad=path[_0x37b1('0x95')](_0x29306e[_0x37b1('0x83')])[_0x37b1('0x4a')];logger[_0x37b1('0x4f')]('[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s',_0x18a5ad,_0x29306e[_0x37b1('0x83')]);this['syncMixMonitorFilename'](_0x18a5ad,_0x29306e[_0x37b1('0x83')]);}}else if(this['channels'][_0x29306e[_0x37b1('0x3c')]]){if(this[_0x37b1('0x36')](_0x29306e[_0x37b1('0x80')])){if(this[_0x37b1('0x36')](_0x29306e[_0x37b1('0x80')][_0x37b1('0x92')])){logger[_0x37b1('0x4f')](_0x37b1('0x93'),_0x29306e[_0x37b1('0x3c')],_0x29306e[_0x37b1('0x83')]);this[_0x37b1('0x19')][_0x29306e[_0x37b1('0x3c')]][_0x37b1('0x96')]=_0x29306e['value'];}}}}}catch(_0x3309f0){logger[_0x37b1('0x32')]('[%s][voiceCallReport][varset]',_0x29306e[_0x37b1('0x38')],util[_0x37b1('0x34')](_0x3309f0,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x37b1('0x35')]['syncHangup']=function(_0x1df9f2){try{if(this[_0x37b1('0x36')](_0x1df9f2)){logger[_0x37b1('0x4d')](_0x37b1('0x97'),_0x1df9f2['uniqueid'],util[_0x37b1('0x34')](_0x1df9f2,{'showHidden':![],'depth':null}));if(this[_0x37b1('0x19')][_0x1df9f2[_0x37b1('0x38')]]){logger[_0x37b1('0x4f')](_0x37b1('0x98'),_0x1df9f2[_0x37b1('0x38')],_0x1df9f2['cause-txt']);var _0x28b6c5=moment();this[_0x37b1('0x19')][_0x1df9f2[_0x37b1('0x38')]]['endtime']=_0x28b6c5[_0x37b1('0x48')](_0x37b1('0x51'));this[_0x37b1('0x19')][_0x1df9f2[_0x37b1('0x38')]]['duration']=_0x28b6c5[_0x37b1('0x69')](this['channels'][_0x1df9f2[_0x37b1('0x38')]][_0x37b1('0x50')],_0x37b1('0x60'));if(this[_0x37b1('0x19')][_0x1df9f2[_0x37b1('0x38')]]['answered']){this[_0x37b1('0x19')][_0x1df9f2['uniqueid']][_0x37b1('0x99')]=_0x28b6c5[_0x37b1('0x69')](this[_0x37b1('0x19')][_0x1df9f2[_0x37b1('0x38')]][_0x37b1('0x67')],_0x37b1('0x60'));this['channels'][_0x1df9f2[_0x37b1('0x38')]]['holdtime']=this[_0x37b1('0x19')][_0x1df9f2['uniqueid']][_0x37b1('0x5f')]-this[_0x37b1('0x19')][_0x1df9f2['uniqueid']]['billableseconds'];}if(_0x1df9f2[_0x37b1('0x41')]==='from-sip'){if(this['agents'][_0x1df9f2[_0x37b1('0x42')]['split']('-')[0x0]]){this[_0x37b1('0x1a')][_0x1df9f2['channel'][_0x37b1('0x44')]('-')[0x0]]=_[_0x37b1('0x9a')](this[_0x37b1('0x1a')][_0x1df9f2['channel']['split']('-')[0x0]],[_0x37b1('0x45')]);logger['debug'](_0x37b1('0x9b'),_0x1df9f2['uniqueid'],util[_0x37b1('0x34')]({'id':this[_0x37b1('0x1a')][_0x1df9f2[_0x37b1('0x42')][_0x37b1('0x44')]('-')[0x0]]['id'],'destaccountcode':this[_0x37b1('0x1a')][_0x1df9f2[_0x37b1('0x42')][_0x37b1('0x44')]('-')[0x0]]['accountcode']},{'showHidden':![],'depth':null}));this[_0x37b1('0x47')](util[_0x37b1('0x48')](_0x37b1('0x49'),this[_0x37b1('0x1a')][_0x1df9f2[_0x37b1('0x42')]['split']('-')[0x0]][_0x37b1('0x4a')]),_0x37b1('0x9c'),{'id':this[_0x37b1('0x1a')][_0x1df9f2[_0x37b1('0x42')][_0x37b1('0x44')]('-')[0x0]]['id'],'destaccountcode':this[_0x37b1('0x1a')][_0x1df9f2[_0x37b1('0x42')][_0x37b1('0x44')]('-')[0x0]][_0x37b1('0x4c')]});}}var _0x80c625=this;Promise[_0x37b1('0x9d')]()[_0x37b1('0x9e')](function(){var _0x2c5bf4=_0x80c625[_0x37b1('0x19')][_0x1df9f2[_0x37b1('0x38')]];if(typeof _0x2c5bf4[_0x37b1('0x9f')]==='undefined')return;if(_[_0x37b1('0xa0')](_0x2c5bf4[_0x37b1('0x7c')]))return;return RpcSetting[_0x37b1('0xa1')]()[_0x37b1('0x9e')](function(_0x368f60){if(!_0x368f60[_0x37b1('0xa2')])return;return Promise[_0x37b1('0x9d')]()[_0x37b1('0x9e')](function(){return ami[_0x37b1('0xa3')]({'action':_0x37b1('0xa4'),'channel':_0x2c5bf4[_0x37b1('0x42')]})[_0x37b1('0xa5')](function(){});})[_0x37b1('0x9e')](function(){return ami[_0x37b1('0xa3')]({'action':_0x37b1('0xa4'),'channel':_0x2c5bf4['destinationchannel']})[_0x37b1('0xa5')](function(){})[_0x37b1('0xa6')](function(){var _0x128b0d=_0x80c625['agents'][_0x2c5bf4[_0x37b1('0x6c')][_0x37b1('0x44')]('-')[0x0]];if(!_0x128b0d)return;io[_0x37b1('0x47')](_0x37b1('0xa7'),{'agentId':_0x128b0d['id'],'uniqueid':_0x2c5bf4[_0x37b1('0x38')]});});});});})[_0x37b1('0x9e')](function(){if(_0x1df9f2[_0x37b1('0xa8')]===_0x37b1('0xa9')){_0x80c625[_0x37b1('0x1b')][_0x1df9f2[_0x37b1('0x38')]]=_0x80c625['channels'][_0x1df9f2[_0x37b1('0x38')]];}else{if(_0x80c625[_0x37b1('0x19')][_0x1df9f2[_0x37b1('0x38')]][_0x37b1('0xaa')]===_0x37b1('0xab')&&_0x80c625['blindTransfers'][_0x1df9f2[_0x37b1('0x38')]]){_0x80c625[_0x37b1('0x19')][_0x1df9f2[_0x37b1('0x38')]][_0x37b1('0x38')]=[_0x80c625[_0x37b1('0x19')][_0x1df9f2[_0x37b1('0x38')]][_0x37b1('0x3c')],_0x80c625[_0x37b1('0x19')][_0x1df9f2[_0x37b1('0x38')]][_0x37b1('0x3c')]=_0x80c625[_0x37b1('0x19')][_0x1df9f2[_0x37b1('0x38')]]['uniqueid']][0x0];delete _0x80c625[_0x37b1('0x1b')][_0x1df9f2[_0x37b1('0x38')]];}}logger[_0x37b1('0x4d')](_0x37b1('0xac'),_0x1df9f2['uniqueid'],util[_0x37b1('0x34')](_0x80c625[_0x37b1('0x19')][_0x1df9f2['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x37b1('0x47')](_0x37b1('0xad'),_0x80c625[_0x37b1('0x19')][_0x1df9f2[_0x37b1('0x38')]]);delete _0x80c625[_0x37b1('0x19')][_0x1df9f2[_0x37b1('0x38')]];});}}}catch(_0x6343b3){logger['error'](_0x37b1('0xae'),_0x1df9f2[_0x37b1('0x38')],util[_0x37b1('0x34')](_0x6343b3,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x37b1('0x2a')]=function(_0xe8c130){try{if(this[_0x37b1('0x36')](_0xe8c130)){logger[_0x37b1('0x4f')](_0x37b1('0xaf'),_0xe8c130['uniqueid'],_0xe8c130['origtransferercalleridnum'],_0xe8c130[_0x37b1('0xb0')]);logger['debug'](_0x37b1('0xb1'),_0xe8c130[_0x37b1('0x38')],util[_0x37b1('0x34')](_0xe8c130,{'showHidden':![],'depth':null}));if(this[_0x37b1('0x19')][_0xe8c130[_0x37b1('0xb2')]]){this['channels'][_0xe8c130['transfereeuniqueid']][_0x37b1('0xb3')]=_0xe8c130['origtransferercalleridnum'];this[_0x37b1('0x19')][_0xe8c130[_0x37b1('0xb2')]][_0x37b1('0xb4')]=_0xe8c130[_0x37b1('0xb0')];if(this[_0x37b1('0x19')][_0xe8c130[_0x37b1('0xb5')]]){var _0x411c91=this['channels'][_0xe8c130[_0x37b1('0xb5')]];this['channels'][_0xe8c130['secondtransfereruniqueid']]=this['channels'][_0xe8c130[_0x37b1('0xb2')]];this['channels'][_0xe8c130[_0x37b1('0xb2')]]=_0x411c91;}}else if(this['channels'][_0xe8c130[_0x37b1('0xb6')]]){this['channels'][_0xe8c130[_0x37b1('0xb6')]]['transfercalleridnum']=_0xe8c130[_0x37b1('0xb7')];this['channels'][_0xe8c130[_0x37b1('0xb6')]][_0x37b1('0xb4')]=_0xe8c130['transfertargetcalleridnum'];if(this[_0x37b1('0x19')][_0xe8c130['origtransfereruniqueid']]){var _0x411c91=this[_0x37b1('0x19')][_0xe8c130[_0x37b1('0xb8')]];this[_0x37b1('0x19')][_0xe8c130[_0x37b1('0xb8')]]=this['channels'][_0xe8c130[_0x37b1('0xb6')]];this[_0x37b1('0x19')][_0xe8c130['transfertargetuniqueid']]=_0x411c91;}}if((this['channels'][_0xe8c130[_0x37b1('0xb8')]]||this[_0x37b1('0x19')][_0xe8c130[_0x37b1('0xb9')]])&&this['channels'][_0xe8c130['secondtransfereruniqueid']]){var _0x27ca41=_[_0x37b1('0xba')]([this['channels'][_0xe8c130[_0x37b1('0xb8')]],this[_0x37b1('0x19')][_0xe8c130[_0x37b1('0xb9')]],this[_0x37b1('0x19')][_0xe8c130[_0x37b1('0xb5')]]],function(_0x5850fa){return _0x5850fa&&_0x5850fa[_0x37b1('0xaa')]===_0x37b1('0xab')&&_0x5850fa['routeid'];});if(_0x27ca41){if(this[_0x37b1('0x19')][_0xe8c130[_0x37b1('0xb8')]])this[_0x37b1('0x19')][_0xe8c130[_0x37b1('0xb8')]][_0x37b1('0x9f')]=_0x37b1('0xbb');if(this[_0x37b1('0x19')][_0xe8c130[_0x37b1('0xb9')]])this[_0x37b1('0x19')][_0xe8c130[_0x37b1('0xb9')]][_0x37b1('0x9f')]=_0x37b1('0xbb');this[_0x37b1('0x19')][_0xe8c130[_0x37b1('0xb5')]][_0x37b1('0x9f')]=_0x37b1('0xbb');}}}}catch(_0x12caaf){logger[_0x37b1('0x32')]('[%s][voiceCallReport][attendedtransfer]',_0xe8c130['uniqueid'],util['inspect'](_0x12caaf,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x37b1('0x35')]['syncBlindTransfer']=function(_0x14dc38){try{if(this[_0x37b1('0x36')](_0x14dc38)){logger['info'](_0x37b1('0xbc'),_0x14dc38[_0x37b1('0x38')],_0x14dc38['transfereecalleridnum'],_0x14dc38[_0x37b1('0xbd')]);logger[_0x37b1('0x4d')](_0x37b1('0xbe'),_0x14dc38[_0x37b1('0x38')],util[_0x37b1('0x34')](_0x14dc38,{'showHidden':![],'depth':null}));if(this[_0x37b1('0x19')][_0x14dc38[_0x37b1('0xb2')]]){this[_0x37b1('0x19')][_0x14dc38[_0x37b1('0xb2')]]['transfercalleridnum']=_0x14dc38[_0x37b1('0xbf')];this[_0x37b1('0x19')][_0x14dc38['transfereeuniqueid']][_0x37b1('0xb4')]=_0x14dc38[_0x37b1('0xbd')];this[_0x37b1('0x19')][_0x14dc38[_0x37b1('0xb2')]][_0x37b1('0x9f')]=_0x37b1('0xc0');this['syncHangup']({'event':'BlindTransfer','uniqueid':_0x14dc38['transfereeuniqueid'],'context':_0x14dc38['context'],'channel':_0x14dc38[_0x37b1('0xc1')]});}else{this['channels'][_0x14dc38[_0x37b1('0xc2')]]['transferType']='BLIND';}}}catch(_0x548498){logger[_0x37b1('0x32')](_0x37b1('0xc3'),_0x14dc38[_0x37b1('0x38')],util[_0x37b1('0x34')](_0x548498,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x37b1('0x35')]['syncMusicOnHoldStart']=function(_0x187d15){try{if(this['isNotNull'](_0x187d15)){logger[_0x37b1('0x4d')]('[%s][voiceCallReport][musiconholdstart]\x20event:',_0x187d15[_0x37b1('0x38')],util[_0x37b1('0x34')](_0x187d15,{'showHidden':![],'depth':null}));if(this['channels'][_0x187d15[_0x37b1('0x38')]]){if(!_['isNil'](this['channels'][_0x187d15['uniqueid']]['answertime'])){this[_0x37b1('0x19')][_0x187d15[_0x37b1('0x38')]][_0x37b1('0xc4')]=moment()['format'](_0x37b1('0x51'));logger[_0x37b1('0x4f')]('[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s',_0x187d15['uniqueid'],this[_0x37b1('0x19')][_0x187d15['uniqueid']]['mohstarttime']);}}}}catch(_0x271d5a){logger['error'](_0x37b1('0xc5'),_0x187d15[_0x37b1('0x38')],util[_0x37b1('0x34')](_0x271d5a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x37b1('0x35')][_0x37b1('0x30')]=function(_0x47164e){try{if(this[_0x37b1('0x36')](_0x47164e)){logger[_0x37b1('0x4d')](_0x37b1('0xc6'),_0x47164e[_0x37b1('0x38')],util[_0x37b1('0x34')](_0x47164e,{'showHidden':![],'depth':null}));if(this[_0x37b1('0x19')][_0x47164e[_0x37b1('0x38')]]){if(!_[_0x37b1('0x7b')](this[_0x37b1('0x19')][_0x47164e[_0x37b1('0x38')]][_0x37b1('0xc4')])){this[_0x37b1('0x19')][_0x47164e[_0x37b1('0x38')]][_0x37b1('0xc7')]+=moment()[_0x37b1('0xc8')](0x0)[_0x37b1('0x69')](this[_0x37b1('0x19')][_0x47164e[_0x37b1('0x38')]]['mohstarttime'],'seconds');logger[_0x37b1('0x4f')](_0x37b1('0xc9'),_0x47164e['uniqueid'],this[_0x37b1('0x19')][_0x47164e[_0x37b1('0x38')]][_0x37b1('0xc7')]);delete this[_0x37b1('0x19')][_0x47164e[_0x37b1('0x38')]][_0x37b1('0xc4')];}}}}catch(_0x190c96){logger['error'](_0x37b1('0xca'),_0x47164e[_0x37b1('0x38')],util[_0x37b1('0x34')](_0x190c96,{'showHidden':![],'depth':null}));}};module[_0x37b1('0xcb')]=VoiceCallReport;
\ No newline at end of file
index ca90181..cf5f448 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x689d=['moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','defaults','redis','localhost','socket.io-emitter','outboundChannels','outbound','dialbegin','syncDialBegin','bind','dialend','syncVarSet','syncNewExten','hangup','prototype','isNotNull','emit','debug','uniqueid','inspect','channels','merge','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','privilege','membername','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','applications','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','error','[%s][voiceDialReport][dialbegin]','syncDialEnd','[%s][voiceDialReport][dialend]\x20event:','dialstatus','connectedlinenum','answertime','lastevent','connect','info','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][dialend]','addVariable','keys','variable','value','outboundrouteid','variables','voice','[%s][voiceDialReport][varset]','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','membercalls','memberdynamic','memberinterface','memberlastcall','isNil','includes','syncHangup','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','seconds','complete','total','answered','holdtime','diff','starttime','billableseconds','sumBillable','sumDuration','custom:voiceDialReport','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','toLowerCase','applicationdata','appdata','cdr(','isUndefined','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','split','match','exports','lodash'];(function(_0x512e14,_0x28ca0c){var _0x3a2ca2=function(_0x31f501){while(--_0x31f501){_0x512e14['push'](_0x512e14['shift']());}};_0x3a2ca2(++_0x28ca0c);}(_0x689d,0x71));var _0xd689=function(_0x4e65ce,_0x121e88){_0x4e65ce=_0x4e65ce-0x0;var _0x16499a=_0x689d[_0x4e65ce];return _0x16499a;};'use strict';var _=require(_0xd689('0x0'));var moment=require(_0xd689('0x1'));var util=require(_0xd689('0x2'));var Redis=require(_0xd689('0x3'));var config=require(_0xd689('0x4'));var logger=require(_0xd689('0x5'))(_0xd689('0x6'));var ami=require(_0xd689('0x7'));config['redis']=_[_0xd689('0x8')](config[_0xd689('0x9')],{'host':_0xd689('0xa'),'port':0x18eb});var io=require(_0xd689('0xb'))(new Redis(config[_0xd689('0x9')]));function VoiceDialReport(_0x5f0448){this['channels']=_0x5f0448[_0xd689('0xc')];this['outbound']=_0x5f0448[_0xd689('0xd')];this['applications']={};this['variables']={};ami['on'](_0xd689('0xe'),this[_0xd689('0xf')][_0xd689('0x10')](this));ami['on'](_0xd689('0x11'),this['syncDialEnd'][_0xd689('0x10')](this));ami['on']('varset',this[_0xd689('0x12')]['bind'](this));ami['on']('newexten',this[_0xd689('0x13')]['bind'](this));ami['on'](_0xd689('0x14'),this['syncHangup']['bind'](this));}VoiceDialReport[_0xd689('0x15')][_0xd689('0x16')]=function(_0x2167ef){return _0x2167ef!==null&&!_['isUndefined'](_0x2167ef);};VoiceDialReport[_0xd689('0x15')]['emit']=function(_0x5210f3,_0x4dd41c,_0x61b778){io['to'](_0x5210f3)[_0xd689('0x17')](_0x4dd41c,_0x61b778);};VoiceDialReport[_0xd689('0x15')][_0xd689('0xf')]=function(_0x7c1a23){try{if(this[_0xd689('0x16')](_0x7c1a23)){logger[_0xd689('0x18')]('[%s][voiceDialReport][dialbegin]\x20event:',_0x7c1a23[_0xd689('0x19')],util[_0xd689('0x1a')](_0x7c1a23,{'showHidden':![],'depth':null}));if(this[_0xd689('0x1b')][_0x7c1a23[_0xd689('0x19')]]){_[_0xd689('0x1c')](this[_0xd689('0x1b')][_0x7c1a23[_0xd689('0x19')]],{'starttime':moment()[_0xd689('0x1d')](_0xd689('0x1e')),'lastevent':_0xd689('0x1f'),'interface':_0x7c1a23[_0xd689('0x20')]['substring'](0x0,_0x7c1a23[_0xd689('0x20')]['lastIndexOf']('-')),'membername':_0x7c1a23['channel'][_0xd689('0x21')](_0x7c1a23['channel']['lastIndexOf']('/')+0x1,_0x7c1a23['channel'][_0xd689('0x22')]('-'))},_['omit'](_0x7c1a23,['event',_0xd689('0x23')]));logger['info']('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x7c1a23[_0xd689('0x19')],this[_0xd689('0x1b')][_0x7c1a23[_0xd689('0x19')]][_0xd689('0x24')],this[_0xd689('0x1b')][_0x7c1a23['uniqueid']][_0xd689('0x25')]);logger[_0xd689('0x18')](_0xd689('0x26'),_0x7c1a23[_0xd689('0x19')],util[_0xd689('0x1a')](this[_0xd689('0x1b')][_0x7c1a23['uniqueid']],{'showHidden':![],'depth':null}));if(this[_0xd689('0x27')][_0x7c1a23[_0xd689('0x19')]])_[_0xd689('0x1c')](this[_0xd689('0x1b')][_0x7c1a23[_0xd689('0x19')]],this[_0xd689('0x27')][_0x7c1a23[_0xd689('0x19')]]);this[_0xd689('0x17')](_0xd689('0x28'),_0xd689('0x29'),this[_0xd689('0x1b')][_0x7c1a23[_0xd689('0x19')]]);logger[_0xd689('0x18')](_0xd689('0x2a'),_0x7c1a23[_0xd689('0x19')],util['inspect'](this[_0xd689('0x1b')][_0x7c1a23[_0xd689('0x19')]],{'showHidden':![],'depth':null}));ami['emit']('custom:dialbegin',this[_0xd689('0x1b')][_0x7c1a23['uniqueid']]);}}}catch(_0x5482af){logger[_0xd689('0x2b')](_0xd689('0x2c'),_0x7c1a23[_0xd689('0x19')],util['inspect'](_0x5482af,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xd689('0x15')][_0xd689('0x2d')]=function(_0x87211d){try{if(this[_0xd689('0x16')](_0x87211d)){logger[_0xd689('0x18')](_0xd689('0x2e'),_0x87211d[_0xd689('0x19')],util[_0xd689('0x1a')](_0x87211d,{'showHidden':![],'depth':null}));if(this[_0xd689('0x1b')][_0x87211d[_0xd689('0x19')]]){this[_0xd689('0x1b')][_0x87211d['uniqueid']]['dialstatus']=_0x87211d['dialstatus'];if(_0x87211d[_0xd689('0x2f')]==='ANSWER'){this[_0xd689('0x1b')][_0x87211d['uniqueid']][_0xd689('0x30')]=_0x87211d[_0xd689('0x30')];this[_0xd689('0x1b')][_0x87211d['uniqueid']]['connectedlinename']=_0x87211d['connectedlinename'];this[_0xd689('0x1b')][_0x87211d[_0xd689('0x19')]][_0xd689('0x31')]=moment()[_0xd689('0x1d')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xd689('0x1b')][_0x87211d[_0xd689('0x19')]][_0xd689('0x32')]=_0xd689('0x33');logger[_0xd689('0x34')](_0xd689('0x35'),_0x87211d[_0xd689('0x19')],_0x87211d['channel'][_0xd689('0x21')](_0x87211d[_0xd689('0x20')][_0xd689('0x22')]('/')+0x1,_0x87211d[_0xd689('0x20')][_0xd689('0x22')]('-')));logger[_0xd689('0x18')](_0xd689('0x36'),_0x87211d['uniqueid'],util['inspect'](this[_0xd689('0x1b')][_0x87211d[_0xd689('0x19')]],{'showHidden':![],'depth':null}));ami[_0xd689('0x17')]('custom:dialconnect',this[_0xd689('0x1b')][_0x87211d[_0xd689('0x19')]]);}logger[_0xd689('0x18')](_0xd689('0x37'),_0x87211d[_0xd689('0x19')],util[_0xd689('0x1a')](this['channels'][_0x87211d['uniqueid']],{'showHidden':![],'depth':null}));this['emit']('voice:outbound',_0xd689('0x29'),this[_0xd689('0x1b')][_0x87211d['uniqueid']]);}}}catch(_0x291a59){logger[_0xd689('0x2b')](_0xd689('0x38'),_0x87211d['uniqueid'],util[_0xd689('0x1a')](_0x291a59,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xd689('0x15')][_0xd689('0x12')]=function(_0x5a5a86){try{if(this[_0xd689('0x16')](_0x5a5a86)){logger['debug']('[%s][voiceDialReport][varset]\x20event:',_0x5a5a86[_0xd689('0x19')],util[_0xd689('0x1a')](_0x5a5a86,{'showHidden':![],'depth':null}));this[_0xd689('0x39')](_0x5a5a86[_0xd689('0x19')],_[_0xd689('0x3a')](_0x5a5a86[_0xd689('0x3b')])[0x0],_0x5a5a86[_0xd689('0x3c')]);if(this['isNotNull'](_0x5a5a86[_0xd689('0x3b')])&&this['isNotNull'](_0x5a5a86[_0xd689('0x3b')][_0xd689('0x3d')])){if(_['isUndefined'](this[_0xd689('0x1b')][_0x5a5a86['uniqueid']])){this[_0xd689('0x1b')][_0x5a5a86['uniqueid']]={'routeId':_0x5a5a86['value'],'variables':this[_0xd689('0x3e')][_0x5a5a86['uniqueid']],'motionChannel':_0xd689('0x3f')};logger[_0xd689('0x34')]('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0x5a5a86[_0xd689('0x19')],_0x5a5a86['variable'][_0xd689('0x3d')],_['keys'](_0x5a5a86[_0xd689('0x3b')])[0x0],_0x5a5a86[_0xd689('0x3c')]);logger[_0xd689('0x18')]('[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:',_0x5a5a86[_0xd689('0x19')],util[_0xd689('0x1a')](this[_0xd689('0x1b')][_0x5a5a86['uniqueid']],{'showHidden':![],'depth':null}));this[_0xd689('0x17')]('voice:outbound',_0xd689('0x29'),this[_0xd689('0x1b')][_0x5a5a86['uniqueid']]);}}}}catch(_0x160b6f){logger[_0xd689('0x2b')](_0xd689('0x40'),_0x5a5a86[_0xd689('0x19')],util[_0xd689('0x1a')](_0x160b6f,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xd689('0x15')]['addVariable']=function(_0x34bee1,_0x38f48c,_0x45d6c7){var _0x1236b8=['rtpaudioqos',_0xd689('0x41'),'rtpaudioqosjitter',_0xd689('0x42'),_0xd689('0x43'),_0xd689('0x44'),_0xd689('0x45'),_0xd689('0x46'),_0xd689('0x47'),_0xd689('0x48'),'bridgepeer','bridgepvtcallid',_0xd689('0x49'),_0xd689('0x4a'),_0xd689('0x4b'),_0xd689('0x4c'),_0xd689('0x24'),'memberpenalty','memberrealtime'];if(!_[_0xd689('0x4d')](_0x38f48c)&&!_[_0xd689('0x4e')](_0x1236b8,_0x38f48c)){if(_['isUndefined'](this['variables'][_0x34bee1])){this['variables'][_0x34bee1]={};}this['variables'][_0x34bee1][_0x38f48c]=_0x45d6c7;}};VoiceDialReport[_0xd689('0x15')][_0xd689('0x4f')]=function(_0x748542){try{if(this['isNotNull'](_0x748542)){logger['debug']('[%s][voiceDialReport][hangup]\x20event:',_0x748542[_0xd689('0x19')],util[_0xd689('0x1a')](_0x748542,{'showHidden':![],'depth':null}));if(this[_0xd689('0x1b')][_0x748542[_0xd689('0x19')]]){logger[_0xd689('0x34')](_0xd689('0x50'),_0x748542[_0xd689('0x19')],_0x748542[_0xd689('0x51')]);this[_0xd689('0x1b')][_0x748542[_0xd689('0x19')]][_0xd689('0x52')]=moment()[_0xd689('0x1d')](_0xd689('0x1e'));this['channels'][_0x748542[_0xd689('0x19')]][_0xd689('0x53')]=moment(this[_0xd689('0x1b')][_0x748542[_0xd689('0x19')]][_0xd689('0x52')])['diff'](this[_0xd689('0x1b')][_0x748542['uniqueid']]['starttime'],_0xd689('0x54'));this[_0xd689('0x1b')][_0x748542['uniqueid']][_0xd689('0x32')]=_0xd689('0x55');this['outbound'][_0xd689('0x56')]+=0x1;if(this[_0xd689('0x1b')][_0x748542['uniqueid']]['answertime']){this[_0xd689('0xd')][_0xd689('0x57')]+=0x1;this['channels'][_0x748542[_0xd689('0x19')]][_0xd689('0x58')]=moment(this[_0xd689('0x1b')][_0x748542[_0xd689('0x19')]][_0xd689('0x31')])[_0xd689('0x59')](this['channels'][_0x748542['uniqueid']][_0xd689('0x5a')],_0xd689('0x54'));this[_0xd689('0x1b')][_0x748542['uniqueid']][_0xd689('0x5b')]=moment(this[_0xd689('0x1b')][_0x748542['uniqueid']]['endtime'])[_0xd689('0x59')](this[_0xd689('0x1b')][_0x748542[_0xd689('0x19')]][_0xd689('0x31')],_0xd689('0x54'));this[_0xd689('0xd')]['sumHoldTime']+=this['channels'][_0x748542[_0xd689('0x19')]]['holdtime']||0x0;this[_0xd689('0xd')][_0xd689('0x5c')]+=this[_0xd689('0x1b')][_0x748542[_0xd689('0x19')]][_0xd689('0x5b')];}this[_0xd689('0xd')][_0xd689('0x5d')]+=this['channels'][_0x748542['uniqueid']][_0xd689('0x53')];logger[_0xd689('0x18')]('[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:',_0x748542[_0xd689('0x19')],util[_0xd689('0x1a')](this[_0xd689('0x1b')][_0x748542['uniqueid']],{'showHidden':![],'depth':null}));ami[_0xd689('0x17')](_0xd689('0x5e'),this['channels'][_0x748542['uniqueid']]);logger['debug']('[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:',_0x748542[_0xd689('0x19')],util[_0xd689('0x1a')](this['channels'][_0x748542[_0xd689('0x19')]],{'showHidden':![],'depth':null}));ami[_0xd689('0x17')](_0xd689('0x5f'),this[_0xd689('0x1b')][_0x748542[_0xd689('0x19')]]);logger[_0xd689('0x18')](_0xd689('0x60'),_0x748542[_0xd689('0x19')],util[_0xd689('0x1a')](this[_0xd689('0x1b')][_0x748542[_0xd689('0x19')]],{'showHidden':![],'depth':null}));this['emit'](_0xd689('0x28'),_0xd689('0x61'),this[_0xd689('0xd')]);logger[_0xd689('0x34')](_0xd689('0x62'),JSON[_0xd689('0x63')](this[_0xd689('0x1b')][_0x748542[_0xd689('0x19')]]));logger[_0xd689('0x18')](_0xd689('0x64'),_0x748542[_0xd689('0x19')],util['inspect'](this['channels'][_0x748542[_0xd689('0x19')]],{'showHidden':![],'depth':null}));this['emit']('voice:outbound',_0xd689('0x65'),this[_0xd689('0x1b')][_0x748542[_0xd689('0x19')]]);delete this[_0xd689('0x1b')][_0x748542[_0xd689('0x19')]];}else if(this[_0xd689('0x1b')][_0x748542[_0xd689('0x66')]]){this[_0xd689('0x1b')][_0x748542['linkedid']][_0xd689('0x19')]=this[_0xd689('0x1b')][_0x748542[_0xd689('0x66')]][_0xd689('0x67')];}if(this[_0xd689('0x3e')][_0x748542[_0xd689('0x19')]]){delete this[_0xd689('0x3e')][_0x748542[_0xd689('0x19')]];}}}catch(_0x1a8346){logger['error'](_0xd689('0x68'),_0x748542[_0xd689('0x19')],util['inspect'](_0x1a8346,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xd689('0x15')][_0xd689('0x13')]=function(_0x59f4bb){try{if(this[_0xd689('0x16')](_0x59f4bb)){logger[_0xd689('0x18')]('[%s][voiceDialReport][newexten]\x20event:',_0x59f4bb['uniqueid'],util[_0xd689('0x1a')](_0x59f4bb,{'showHidden':![],'depth':null}));if(_0x59f4bb['application'][_0xd689('0x69')]()==='set'){_0x59f4bb[_0xd689('0x6a')]=(_0x59f4bb[_0xd689('0x6b')]||_0x59f4bb[_0xd689('0x6a')])['toLowerCase']();if(_['startsWith'](_0x59f4bb[_0xd689('0x6a')],_0xd689('0x6c'))){if(_[_0xd689('0x6d')](this[_0xd689('0x27')][_0x59f4bb['uniqueid']]))this[_0xd689('0x27')][_0x59f4bb['uniqueid']]={};logger[_0xd689('0x34')](_0xd689('0x6e'),_0x59f4bb[_0xd689('0x19')],_0x59f4bb['application'],_0x59f4bb['applicationdata']);var _0x3a4f6b=_0x59f4bb[_0xd689('0x6a')][_0xd689('0x6f')]('=');var _0x2b4722=_0x3a4f6b[0x0][_0xd689('0x70')](/cdr\((.*)\)/);if(_0x2b4722)this[_0xd689('0x27')][_0x59f4bb[_0xd689('0x19')]][_0x2b4722[0x1]]=_0x3a4f6b[0x1];}}}}catch(_0x51cc06){logger[_0xd689('0x2b')]('[%s][voiceDialReport][newexten]',_0x59f4bb[_0xd689('0x19')],util[_0xd689('0x1a')](_0x51cc06,{'showHidden':![],'depth':null}));}};module[_0xd689('0x71')]=VoiceDialReport;
\ No newline at end of file
+var _0x290c=['emit','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','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','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','lastevent','connect','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','substring','custom:dialconnect','[%s][voiceDialReport][dialend]','addVariable','value','variable','outboundrouteid','keys','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','diff','starttime','answertime','holdtime','seconds','billableseconds','sumHoldTime','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','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','syncNewExten','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','set','applicationdata','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','split','exports','lodash','moment','util','ioredis','../../../config/environment','ami','socket.io-emitter','channels','outbound','applications','variables','dialbegin','syncDialBegin','syncDialEnd','bind','varset','syncVarSet','newexten','hangup','syncHangup','prototype','isNotNull','isUndefined'];(function(_0x30fc8f,_0x215149){var _0x17b462=function(_0x1b4c3a){while(--_0x1b4c3a){_0x30fc8f['push'](_0x30fc8f['shift']());}};_0x17b462(++_0x215149);}(_0x290c,0x148));var _0xc290=function(_0x33ff08,_0x31ff57){_0x33ff08=_0x33ff08-0x0;var _0x630576=_0x290c[_0x33ff08];return _0x630576;};'use strict';var _=require(_0xc290('0x0'));var moment=require(_0xc290('0x1'));var util=require(_0xc290('0x2'));var Redis=require(_0xc290('0x3'));var config=require(_0xc290('0x4'));var logger=require('../../../config/logger')(_0xc290('0x5'));var ami=require('../ami');config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xc290('0x6'))(new Redis(config['redis']));function VoiceDialReport(_0x54366e){this[_0xc290('0x7')]=_0x54366e['outboundChannels'];this['outbound']=_0x54366e[_0xc290('0x8')];this[_0xc290('0x9')]={};this[_0xc290('0xa')]={};ami['on'](_0xc290('0xb'),this[_0xc290('0xc')]['bind'](this));ami['on']('dialend',this[_0xc290('0xd')][_0xc290('0xe')](this));ami['on'](_0xc290('0xf'),this[_0xc290('0x10')][_0xc290('0xe')](this));ami['on'](_0xc290('0x11'),this['syncNewExten']['bind'](this));ami['on'](_0xc290('0x12'),this[_0xc290('0x13')]['bind'](this));}VoiceDialReport[_0xc290('0x14')][_0xc290('0x15')]=function(_0xf4c984){return _0xf4c984!==null&&!_[_0xc290('0x16')](_0xf4c984);};VoiceDialReport[_0xc290('0x14')][_0xc290('0x17')]=function(_0x121917,_0x1f95b3,_0xcbf6d2){io['to'](_0x121917)[_0xc290('0x17')](_0x1f95b3,_0xcbf6d2);};VoiceDialReport[_0xc290('0x14')][_0xc290('0xc')]=function(_0x2f7661){try{if(this['isNotNull'](_0x2f7661)){logger[_0xc290('0x18')](_0xc290('0x19'),_0x2f7661[_0xc290('0x1a')],util[_0xc290('0x1b')](_0x2f7661,{'showHidden':![],'depth':null}));if(this[_0xc290('0x7')][_0x2f7661['uniqueid']]){_[_0xc290('0x1c')](this['channels'][_0x2f7661[_0xc290('0x1a')]],{'starttime':moment()[_0xc290('0x1d')](_0xc290('0x1e')),'lastevent':_0xc290('0x1f'),'interface':_0x2f7661['channel']['substring'](0x0,_0x2f7661[_0xc290('0x20')][_0xc290('0x21')]('-')),'membername':_0x2f7661[_0xc290('0x20')]['substring'](_0x2f7661[_0xc290('0x20')][_0xc290('0x21')]('/')+0x1,_0x2f7661[_0xc290('0x20')][_0xc290('0x21')]('-'))},_[_0xc290('0x22')](_0x2f7661,[_0xc290('0x23'),_0xc290('0x24')]));logger[_0xc290('0x25')](_0xc290('0x26'),_0x2f7661[_0xc290('0x1a')],this[_0xc290('0x7')][_0x2f7661['uniqueid']][_0xc290('0x27')],this[_0xc290('0x7')][_0x2f7661[_0xc290('0x1a')]][_0xc290('0x28')]);logger[_0xc290('0x18')](_0xc290('0x29'),_0x2f7661[_0xc290('0x1a')],util[_0xc290('0x1b')](this[_0xc290('0x7')][_0x2f7661['uniqueid']],{'showHidden':![],'depth':null}));if(this[_0xc290('0x9')][_0x2f7661[_0xc290('0x1a')]])_[_0xc290('0x1c')](this[_0xc290('0x7')][_0x2f7661['uniqueid']],this[_0xc290('0x9')][_0x2f7661['uniqueid']]);this['emit'](_0xc290('0x2a'),_0xc290('0x2b'),this[_0xc290('0x7')][_0x2f7661[_0xc290('0x1a')]]);logger[_0xc290('0x18')]('[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:',_0x2f7661['uniqueid'],util[_0xc290('0x1b')](this['channels'][_0x2f7661[_0xc290('0x1a')]],{'showHidden':![],'depth':null}));ami['emit'](_0xc290('0x2c'),this[_0xc290('0x7')][_0x2f7661[_0xc290('0x1a')]]);}}}catch(_0x549539){logger[_0xc290('0x2d')](_0xc290('0x2e'),_0x2f7661['uniqueid'],util[_0xc290('0x1b')](_0x549539,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xc290('0x14')][_0xc290('0xd')]=function(_0x4135b7){try{if(this['isNotNull'](_0x4135b7)){logger['debug'](_0xc290('0x2f'),_0x4135b7[_0xc290('0x1a')],util[_0xc290('0x1b')](_0x4135b7,{'showHidden':![],'depth':null}));if(this[_0xc290('0x7')][_0x4135b7[_0xc290('0x1a')]]){this[_0xc290('0x7')][_0x4135b7[_0xc290('0x1a')]][_0xc290('0x30')]=_0x4135b7[_0xc290('0x30')];if(_0x4135b7[_0xc290('0x30')]===_0xc290('0x31')){this['channels'][_0x4135b7[_0xc290('0x1a')]][_0xc290('0x32')]=_0x4135b7[_0xc290('0x32')];this[_0xc290('0x7')][_0x4135b7[_0xc290('0x1a')]][_0xc290('0x33')]=_0x4135b7[_0xc290('0x33')];this[_0xc290('0x7')][_0x4135b7[_0xc290('0x1a')]]['answertime']=moment()['format'](_0xc290('0x1e'));this[_0xc290('0x7')][_0x4135b7[_0xc290('0x1a')]][_0xc290('0x34')]=_0xc290('0x35');logger[_0xc290('0x25')](_0xc290('0x36'),_0x4135b7[_0xc290('0x1a')],_0x4135b7[_0xc290('0x20')][_0xc290('0x37')](_0x4135b7[_0xc290('0x20')][_0xc290('0x21')]('/')+0x1,_0x4135b7[_0xc290('0x20')]['lastIndexOf']('-')));logger[_0xc290('0x18')]('[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:',_0x4135b7[_0xc290('0x1a')],util[_0xc290('0x1b')](this[_0xc290('0x7')][_0x4135b7[_0xc290('0x1a')]],{'showHidden':![],'depth':null}));ami[_0xc290('0x17')](_0xc290('0x38'),this[_0xc290('0x7')][_0x4135b7[_0xc290('0x1a')]]);}logger[_0xc290('0x18')]('[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:',_0x4135b7[_0xc290('0x1a')],util[_0xc290('0x1b')](this[_0xc290('0x7')][_0x4135b7['uniqueid']],{'showHidden':![],'depth':null}));this[_0xc290('0x17')]('voice:outbound',_0xc290('0x2b'),this[_0xc290('0x7')][_0x4135b7[_0xc290('0x1a')]]);}}}catch(_0x44fa89){logger[_0xc290('0x2d')](_0xc290('0x39'),_0x4135b7['uniqueid'],util[_0xc290('0x1b')](_0x44fa89,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0xc290('0x10')]=function(_0x2abfaa){try{if(this[_0xc290('0x15')](_0x2abfaa)){logger[_0xc290('0x18')]('[%s][voiceDialReport][varset]\x20event:',_0x2abfaa['uniqueid'],util[_0xc290('0x1b')](_0x2abfaa,{'showHidden':![],'depth':null}));this[_0xc290('0x3a')](_0x2abfaa[_0xc290('0x1a')],_['keys'](_0x2abfaa['variable'])[0x0],_0x2abfaa[_0xc290('0x3b')]);if(this[_0xc290('0x15')](_0x2abfaa['variable'])&&this[_0xc290('0x15')](_0x2abfaa[_0xc290('0x3c')][_0xc290('0x3d')])){if(_[_0xc290('0x16')](this[_0xc290('0x7')][_0x2abfaa[_0xc290('0x1a')]])){this[_0xc290('0x7')][_0x2abfaa[_0xc290('0x1a')]]={'routeId':_0x2abfaa[_0xc290('0x3b')],'variables':this[_0xc290('0xa')][_0x2abfaa[_0xc290('0x1a')]]};logger[_0xc290('0x25')]('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0x2abfaa[_0xc290('0x1a')],_0x2abfaa[_0xc290('0x3c')]['outboundrouteid'],_[_0xc290('0x3e')](_0x2abfaa[_0xc290('0x3c')])[0x0],_0x2abfaa[_0xc290('0x3b')]);logger['debug']('[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:',_0x2abfaa[_0xc290('0x1a')],util[_0xc290('0x1b')](this['channels'][_0x2abfaa[_0xc290('0x1a')]],{'showHidden':![],'depth':null}));this[_0xc290('0x17')]('voice:outbound','voice_outbound_channel:save',this[_0xc290('0x7')][_0x2abfaa['uniqueid']]);}}}}catch(_0xb665e7){logger[_0xc290('0x2d')](_0xc290('0x3f'),_0x2abfaa[_0xc290('0x1a')],util[_0xc290('0x1b')](_0xb665e7,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xc290('0x14')][_0xc290('0x3a')]=function(_0x593b44,_0x1a8220,_0x6f798){var _0x4282f5=[_0xc290('0x40'),_0xc290('0x41'),_0xc290('0x42'),_0xc290('0x43'),_0xc290('0x44'),'rtpaudioqoslossbridged',_0xc290('0x45'),_0xc290('0x46'),_0xc290('0x47'),_0xc290('0x48'),_0xc290('0x49'),_0xc290('0x4a'),_0xc290('0x4b'),_0xc290('0x4c'),_0xc290('0x4d'),_0xc290('0x4e'),_0xc290('0x27'),_0xc290('0x4f'),'memberrealtime'];if(!_[_0xc290('0x50')](_0x1a8220)&&!_[_0xc290('0x51')](_0x4282f5,_0x1a8220)){if(_['isUndefined'](this[_0xc290('0xa')][_0x593b44])){this[_0xc290('0xa')][_0x593b44]={};}this['variables'][_0x593b44][_0x1a8220]=_0x6f798;}};VoiceDialReport[_0xc290('0x14')][_0xc290('0x13')]=function(_0x55c1bb){try{if(this[_0xc290('0x15')](_0x55c1bb)){logger['debug'](_0xc290('0x52'),_0x55c1bb[_0xc290('0x1a')],util[_0xc290('0x1b')](_0x55c1bb,{'showHidden':![],'depth':null}));if(this[_0xc290('0x7')][_0x55c1bb[_0xc290('0x1a')]]){logger[_0xc290('0x25')](_0xc290('0x53'),_0x55c1bb[_0xc290('0x1a')],_0x55c1bb[_0xc290('0x54')]);this[_0xc290('0x7')][_0x55c1bb[_0xc290('0x1a')]][_0xc290('0x55')]=moment()[_0xc290('0x1d')](_0xc290('0x1e'));this['channels'][_0x55c1bb[_0xc290('0x1a')]][_0xc290('0x56')]=moment(this[_0xc290('0x7')][_0x55c1bb[_0xc290('0x1a')]]['endtime'])[_0xc290('0x57')](this[_0xc290('0x7')][_0x55c1bb[_0xc290('0x1a')]][_0xc290('0x58')],'seconds');this[_0xc290('0x7')][_0x55c1bb[_0xc290('0x1a')]]['lastevent']='complete';this['outbound']['total']+=0x1;if(this['channels'][_0x55c1bb[_0xc290('0x1a')]][_0xc290('0x59')]){this[_0xc290('0x8')]['answered']+=0x1;this[_0xc290('0x7')][_0x55c1bb[_0xc290('0x1a')]][_0xc290('0x5a')]=moment(this[_0xc290('0x7')][_0x55c1bb['uniqueid']][_0xc290('0x59')])[_0xc290('0x57')](this[_0xc290('0x7')][_0x55c1bb[_0xc290('0x1a')]]['starttime'],_0xc290('0x5b'));this[_0xc290('0x7')][_0x55c1bb[_0xc290('0x1a')]][_0xc290('0x5c')]=moment(this[_0xc290('0x7')][_0x55c1bb[_0xc290('0x1a')]][_0xc290('0x55')])['diff'](this[_0xc290('0x7')][_0x55c1bb['uniqueid']][_0xc290('0x59')],_0xc290('0x5b'));this['outbound'][_0xc290('0x5d')]+=this[_0xc290('0x7')][_0x55c1bb[_0xc290('0x1a')]][_0xc290('0x5a')]||0x0;this[_0xc290('0x8')]['sumBillable']+=this[_0xc290('0x7')][_0x55c1bb[_0xc290('0x1a')]][_0xc290('0x5c')];}this[_0xc290('0x8')][_0xc290('0x5e')]+=this[_0xc290('0x7')][_0x55c1bb[_0xc290('0x1a')]][_0xc290('0x56')];logger[_0xc290('0x18')](_0xc290('0x5f'),_0x55c1bb[_0xc290('0x1a')],util[_0xc290('0x1b')](this['channels'][_0x55c1bb[_0xc290('0x1a')]],{'showHidden':![],'depth':null}));ami[_0xc290('0x17')](_0xc290('0x60'),this[_0xc290('0x7')][_0x55c1bb[_0xc290('0x1a')]]);logger['debug'](_0xc290('0x61'),_0x55c1bb['uniqueid'],util[_0xc290('0x1b')](this[_0xc290('0x7')][_0x55c1bb[_0xc290('0x1a')]],{'showHidden':![],'depth':null}));ami[_0xc290('0x17')]('custom:dialend',this['channels'][_0x55c1bb['uniqueid']]);logger[_0xc290('0x18')](_0xc290('0x62'),_0x55c1bb[_0xc290('0x1a')],util[_0xc290('0x1b')](this[_0xc290('0x7')][_0x55c1bb[_0xc290('0x1a')]],{'showHidden':![],'depth':null}));this[_0xc290('0x17')](_0xc290('0x2a'),_0xc290('0x63'),this[_0xc290('0x8')]);logger[_0xc290('0x25')](_0xc290('0x64'),JSON[_0xc290('0x65')](this[_0xc290('0x7')][_0x55c1bb[_0xc290('0x1a')]]));logger[_0xc290('0x18')](_0xc290('0x66'),_0x55c1bb[_0xc290('0x1a')],util[_0xc290('0x1b')](this['channels'][_0x55c1bb[_0xc290('0x1a')]],{'showHidden':![],'depth':null}));this[_0xc290('0x17')](_0xc290('0x2a'),_0xc290('0x67'),this['channels'][_0x55c1bb[_0xc290('0x1a')]]);delete this['channels'][_0x55c1bb[_0xc290('0x1a')]];}else if(this[_0xc290('0x7')][_0x55c1bb[_0xc290('0x68')]]){this[_0xc290('0x7')][_0x55c1bb[_0xc290('0x68')]][_0xc290('0x1a')]=this[_0xc290('0x7')][_0x55c1bb[_0xc290('0x68')]][_0xc290('0x69')];}if(this[_0xc290('0xa')][_0x55c1bb['uniqueid']]){delete this[_0xc290('0xa')][_0x55c1bb[_0xc290('0x1a')]];}}}catch(_0xe9dfd9){logger[_0xc290('0x2d')](_0xc290('0x6a'),_0x55c1bb[_0xc290('0x1a')],util['inspect'](_0xe9dfd9,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xc290('0x14')][_0xc290('0x6b')]=function(_0x3f9eb7){try{if(this['isNotNull'](_0x3f9eb7)){logger[_0xc290('0x18')](_0xc290('0x6c'),_0x3f9eb7[_0xc290('0x1a')],util[_0xc290('0x1b')](_0x3f9eb7,{'showHidden':![],'depth':null}));if(_0x3f9eb7[_0xc290('0x6d')][_0xc290('0x6e')]()===_0xc290('0x6f')){_0x3f9eb7[_0xc290('0x70')]=(_0x3f9eb7['appdata']||_0x3f9eb7[_0xc290('0x70')])[_0xc290('0x6e')]();if(_['startsWith'](_0x3f9eb7[_0xc290('0x70')],_0xc290('0x71'))){if(_[_0xc290('0x16')](this[_0xc290('0x9')][_0x3f9eb7[_0xc290('0x1a')]]))this['applications'][_0x3f9eb7[_0xc290('0x1a')]]={};logger[_0xc290('0x25')](_0xc290('0x72'),_0x3f9eb7[_0xc290('0x1a')],_0x3f9eb7[_0xc290('0x6d')],_0x3f9eb7[_0xc290('0x70')]);var _0x5da574=_0x3f9eb7[_0xc290('0x70')][_0xc290('0x73')]('=');var _0x4b2125=_0x5da574[0x0]['match'](/cdr\((.*)\)/);if(_0x4b2125)this[_0xc290('0x9')][_0x3f9eb7[_0xc290('0x1a')]][_0x4b2125[0x1]]=_0x5da574[0x1];}}}}catch(_0x38623f){logger[_0xc290('0x2d')]('[%s][voiceDialReport][newexten]',_0x3f9eb7[_0xc290('0x1a')],util[_0xc290('0x1b')](_0x38623f,{'showHidden':![],'depth':null}));}};module[_0xc290('0x74')]=VoiceDialReport;
\ No newline at end of file
index d311dc0..90d1149 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a62=['hangup','syncHangup','fullybooted','syncNewExten','musiconholdstart','syncMusicOnHoldStart','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','originated','pTalking','waiting','queueStatusComplete','unlockRR','prototype','clearZombieChannels','channels','switch','isNil','Action','channel','catch','message','No\x20such\x20channel','error','inspect','[%s][voiceQueueReport][checkQueueReport]','syncFullyBooted','[FullyBooted]\x20clear\x20realtime','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','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','loggedIn','sumBillable','sumDuration','sumHoldTime','talking','abandoned','Trunk','active','callerid','Interval','stringify','md5','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','isUndefined','[voiceQueueReport][queues]','flagQueueSummary','queuesummary','[voiceQueueReport][queuesummary]','info','queue','countBy','callers','toNumber','loggedin','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','custom:queuesummary','[voiceQueueReport][queuesummarycomplete]\x20event:','syncQueueCallerJoin','isNotNull','[%s][voiceQueueReport][queuecallerjoin]','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','pick','keys','push','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete','originalposition','queuecallerabandonAt','queuecallerexitreason','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','assigned','membername','holdtime','queuecallerexit','queuecallerexitAt','transfer','startsWith','toLowerCase','local/','linkedid','add','seconds','FORWARDTRANSFER','FORWARD','transferexten','destexten','transferuniqueid','COMPLETEDBY','reason','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','[%s][voiceQueueReport][agentcomplete]','syncVarSet','variable','queuestatus','value','CONTINUE','TIMEOUT','lastevent','timeout','custom:timeout','queueposition','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','[%s][voiceQueueReport][varset]','addVariable','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberlastcall','memberpenalty','includes','[%s][voiceQueueReport][hangup]','length','diff','milliseconds','queuecallerjoinAt','total','queuecallercompleteAt','unmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','cause-txt','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','ATTENDEDTRANSFER','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfereruniqueid','transfertype','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','context','transfererchannel','mohstarttime','[%s][voiceQueueReport][musiconholdstart]','[%s][voiceQueueReport][musiconholdstop]','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','[%s][voiceQueueReport][newexten]\x20event:','application','set','applicationdata','appdata','CDR(routeAlias)','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','match','moment','util','ioredis','../../../config/environment','../ami','../model/queueReport','redis','defaults','localhost','socket.io-emitter','enqueue','tail','finally','sequence','queueReports','agents','queueChannels','voiceQueues','campaigns','variables','syncQueueSummary','bind','queuecallerjoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','syncAgentComplete','agentconnect','syncAgentConnect','varset'];(function(_0x1b2667,_0x279eb1){var _0x179ae8=function(_0x119262){while(--_0x119262){_0x1b2667['push'](_0x1b2667['shift']());}};_0x179ae8(++_0x279eb1);}(_0x9a62,0x1bc));var _0x29a6=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x9a62[_0x57b54c];return _0x59cc19;};'use strict';var _=require('lodash');var moment=require(_0x29a6('0x0'));var util=require(_0x29a6('0x1'));var md5=require('md5');var Redis=require(_0x29a6('0x2'));var config=require(_0x29a6('0x3'));var logger=require('../../../config/logger')('ami');var ami=require(_0x29a6('0x4'));var QueueReport=require(_0x29a6('0x5'));config[_0x29a6('0x6')]=_[_0x29a6('0x7')](config[_0x29a6('0x6')],{'host':_0x29a6('0x8'),'port':0x18eb});var io=require(_0x29a6('0x9'))(new Redis(config['redis']));var Sequence=function(){};Sequence['prototype'][_0x29a6('0xa')]=function(_0x2e1272){this['tail']=this['tail']?this[_0x29a6('0xb')][_0x29a6('0xc')](_0x2e1272):_0x2e1272();};function VoiceQueueReport(_0x1de426){this[_0x29a6('0xd')]=new Sequence();this[_0x29a6('0xe')]={};this[_0x29a6('0xf')]=_0x1de426[_0x29a6('0xf')];this['channels']=_0x1de426[_0x29a6('0x10')];this[_0x29a6('0x11')]=_0x1de426['voiceQueues'];this['flagQueueSummary']=!![];this['campaigns']=_0x1de426[_0x29a6('0x12')];this[_0x29a6('0x13')]={};ami['on']('queuesummary',this[_0x29a6('0x14')][_0x29a6('0x15')](this));ami['on']('queuesummarycomplete',this['syncQueueSummaryComplete'][_0x29a6('0x15')](this));ami['on'](_0x29a6('0x16'),this['syncQueueCallerJoin'][_0x29a6('0x15')](this));ami['on'](_0x29a6('0x17'),this[_0x29a6('0x18')]['bind'](this));ami['on'](_0x29a6('0x19'),this[_0x29a6('0x1a')][_0x29a6('0x15')](this));ami['on'](_0x29a6('0x1b'),this[_0x29a6('0x1c')][_0x29a6('0x15')](this));ami['on'](_0x29a6('0x1d'),this[_0x29a6('0x1e')]['bind'](this));ami['on'](_0x29a6('0x1f'),this['syncVarSet'][_0x29a6('0x15')](this));ami['on'](_0x29a6('0x20'),this[_0x29a6('0x21')]['bind'](this));ami['on'](_0x29a6('0x22'),this['syncFullyBooted']['bind'](this));ami['on']('newexten',this[_0x29a6('0x23')][_0x29a6('0x15')](this));ami['on'](_0x29a6('0x24'),this[_0x29a6('0x25')][_0x29a6('0x15')](this));ami['on']('musiconholdstop',this[_0x29a6('0x26')][_0x29a6('0x15')](this));ami['on'](_0x29a6('0x27'),this[_0x29a6('0x28')][_0x29a6('0x15')](this));ami['on'](_0x29a6('0x29'),this[_0x29a6('0x2a')]['bind'](this));this[_0x29a6('0x2b')]();this[_0x29a6('0x2c')]();}function clearChannels(_0x329325){if(!_[_0x29a6('0x2d')](_0x329325)){for(var _0x1798dd in _0x329325){if(_0x329325[_0x29a6('0x2e')](_0x1798dd)){delete _0x329325[_0x1798dd];}}}}function clearCampaigns(_0x364e72){if(!_['isEmpty'](_0x364e72)){for(var _0x483d22 in _0x364e72){if(_0x364e72[_0x29a6('0x2e')](_0x483d22)){_0x364e72[_0x483d22][_0x29a6('0x2f')]=0x0;}}}}function clearVoiceQueues(_0x291dff){if(!_[_0x29a6('0x2d')](_0x291dff)){for(var _0x237f3e in _0x291dff){if(_0x291dff[_0x29a6('0x2e')](_0x237f3e)){_0x291dff[_0x237f3e]['originated']=0x0;_0x291dff[_0x237f3e]['talking']=0x0;_0x291dff[_0x237f3e][_0x29a6('0x30')]=0x0;_0x291dff[_0x237f3e][_0x29a6('0x31')]=0x0;_0x291dff[_0x237f3e][_0x29a6('0x32')]=!![];}}}}function clearAgentBooked(_0x454df0){if(!_[_0x29a6('0x2d')](_0x454df0)){for(var _0x4fa41e in _0x454df0){if(_0x454df0['hasOwnProperty'](_0x4fa41e)){_0x454df0[_0x4fa41e][_0x29a6('0x33')]=!![];}}}}VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x35')]=function(){var _0x4250f4=this;for(var _0x3b6394 in this[_0x29a6('0x36')]){if(this['channels']['hasOwnProperty'](_0x3b6394)&&!this[_0x29a6('0x36')][_0x3b6394][_0x29a6('0x37')]){this[_0x29a6('0xd')][_0x29a6('0xa')](function(){if(!_[_0x29a6('0x38')](_0x4250f4[_0x29a6('0x36')][_0x3b6394])){return ami[_0x29a6('0x39')]({'action':'status','channel':_0x4250f4[_0x29a6('0x36')][_0x3b6394][_0x29a6('0x3a')]})[_0x29a6('0x3b')](function(_0x2e14da){if(_0x2e14da[_0x29a6('0x3c')]===_0x29a6('0x3d')){setTimeout(function(){if(_0x4250f4[_0x29a6('0x36')][_0x3b6394]){delete _0x4250f4[_0x29a6('0x36')][_0x3b6394];logger[_0x29a6('0x3e')]('[%s][voiceQueueReport][checkChannel]',_0x3b6394,util[_0x29a6('0x3f')](_0x2e14da,{'showHidden':![],'depth':null}));}if(_0x4250f4[_0x29a6('0xe')][_0x3b6394]){delete _0x4250f4[_0x29a6('0xe')][_0x3b6394];logger[_0x29a6('0x3e')](_0x29a6('0x40'),_0x3b6394,util[_0x29a6('0x3f')](_0x2e14da,{'showHidden':![],'depth':null}));}if(_0x4250f4[_0x29a6('0x13')][_0x3b6394]){delete _0x4250f4['variables'][_0x3b6394];logger['error']('[%s][voiceQueueReport][checkVariables]',_0x3b6394,util[_0x29a6('0x3f')](_0x2e14da,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x41')]=function(){logger[_0x29a6('0x3e')](_0x29a6('0x42'));clearChannels(this[_0x29a6('0x36')]);this['clearQueueReport'](this[_0x29a6('0xe')]);clearAgentBooked(this[_0x29a6('0xf')]);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this[_0x29a6('0x12')]);};VoiceQueueReport[_0x29a6('0x34')]['clearQueueReport']=function(_0x479ee4){var _0x39e1c0=this;if(!_[_0x29a6('0x2d')](_0x479ee4)){for(var _0x517267 in _0x479ee4){if(_0x479ee4[_0x29a6('0x2e')](_0x517267)){_0x39e1c0[_0x29a6('0x43')](_0x479ee4[_0x517267],_0x29a6('0x44'));delete _0x479ee4[_0x517267];}}}};VoiceQueueReport['prototype']['emit']=function(_0x177718,_0x59503b,_0x302750){io['to'](_0x177718)[_0x29a6('0x45')](_0x59503b,_0x302750);};VoiceQueueReport['prototype'][_0x29a6('0x46')]=function(_0x417bb5,_0x1e0a26){logger[_0x29a6('0x47')](_0x29a6('0x48')+_0x1e0a26+_0x29a6('0x49'),_0x417bb5[_0x29a6('0x4a')],util[_0x29a6('0x3f')](_0x417bb5,{'showHidden':![],'depth':null}));this[_0x29a6('0x45')](util[_0x29a6('0x4b')](_0x29a6('0x4c'),_0x417bb5[_0x29a6('0x4d')]),_0x29a6('0x4e'),_0x417bb5);io['emit'](_0x29a6('0x4f'),_0x417bb5);};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x43')]=function(_0x5514be,_0x3b71ad){logger['debug'](_0x29a6('0x48')+_0x3b71ad+_0x29a6('0x50'),_0x5514be[_0x29a6('0x4a')],util[_0x29a6('0x3f')](_0x5514be,{'showHidden':![],'depth':null}));this['emit'](util[_0x29a6('0x4b')](_0x29a6('0x4c'),_0x5514be[_0x29a6('0x4d')]),'voice_queue_channel:remove',_0x5514be);io[_0x29a6('0x45')](_0x29a6('0x51'),_0x5514be);};VoiceQueueReport['prototype'][_0x29a6('0x52')]=function(_0x90eae3,_0xc4cac2){if(_0x90eae3[_0x29a6('0x53')]===_0x29a6('0x54')){var _0x4a95d={'id':_0x90eae3['id'],'name':_0x90eae3[_0x29a6('0x4d')],'strategy':_0x90eae3[_0x29a6('0x55')],'answered':_0x90eae3[_0x29a6('0x56')],'available':_0x90eae3[_0x29a6('0x57')],'loggedIn':_0x90eae3[_0x29a6('0x58')],'pTalking':_0x90eae3[_0x29a6('0x30')],'sumBillable':_0x90eae3[_0x29a6('0x59')],'sumDuration':_0x90eae3[_0x29a6('0x5a')],'sumHoldTime':_0x90eae3[_0x29a6('0x5b')]||0x0,'talking':_0x90eae3[_0x29a6('0x5c')],'total':_0x90eae3['total'],'type':_0x90eae3['type'],'unmanaged':_0x90eae3['unmanaged'],'abandoned':_0x90eae3[_0x29a6('0x5d')],'waiting':_0x90eae3['waiting']};if(_0x90eae3[_0x29a6('0x5e')]){_0x4a95d['Trunk']={'id':_0x90eae3['Trunk']['id'],'name':_0x90eae3[_0x29a6('0x5e')]['name'],'active':_0x90eae3[_0x29a6('0x5e')][_0x29a6('0x5f')],'callerid':_0x90eae3['Trunk'][_0x29a6('0x60')]};}if(_0x90eae3[_0x29a6('0x61')]){_0x4a95d[_0x29a6('0x61')]={'id':_0x90eae3[_0x29a6('0x61')]['id'],'name':_0x90eae3[_0x29a6('0x61')][_0x29a6('0x4d')]};}var _0x10f357=md5(JSON[_0x29a6('0x62')](_0x4a95d));if(_0x90eae3[_0x29a6('0x63')]!==_0x10f357){_0x90eae3[_0x29a6('0x63')]=_0x10f357;logger['debug'](_0x29a6('0x64')+_0xc4cac2+_0x29a6('0x65'),util[_0x29a6('0x3f')](_0x4a95d,{'showHidden':![],'depth':null}));this[_0x29a6('0x45')](util['format'](_0x29a6('0x4c'),_0x4a95d[_0x29a6('0x4d')]),'voice_queue:save',_0x4a95d);}}};VoiceQueueReport['prototype']['isNotNull']=function(_0x1b103d){return _0x1b103d!==null&&!_[_0x29a6('0x66')](_0x1b103d);};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x2c')]=function(){var _0x5cf8cf=this;setInterval(function(){_0x5cf8cf[_0x29a6('0x35')]();ami[_0x29a6('0x39')]({'action':'queues'})[_0x29a6('0x3b')](function(_0x1eacb0){logger[_0x29a6('0x3e')](_0x29a6('0x67'),util[_0x29a6('0x3f')](_0x1eacb0,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x29a6('0x34')]['loopQueueSummary']=function(){var _0x209805=this;setInterval(function(){if(_0x209805[_0x29a6('0x68')]){return ami['Action']({'action':_0x29a6('0x69')})['then'](function(_0x3fceca){_0x209805['flagQueueSummary']=![];})[_0x29a6('0x3b')](function(_0x31fe76){logger[_0x29a6('0x3e')](_0x29a6('0x6a'),util['inspect'](_0x31fe76,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x14')]=function(_0x2d244f){try{if(this['isNotNull'](_0x2d244f)&&this['isNotNull'](_0x2d244f['queue'])){logger['debug']('[voiceQueueReport][queuesummary]\x20event:',util[_0x29a6('0x3f')](_0x2d244f,{'showHidden':![],'depth':null}));if(this[_0x29a6('0x11')][_0x2d244f['queue']]){logger[_0x29a6('0x6b')]('[voiceQueueReport][queuesummary]\x20name:%s',_0x2d244f[_0x29a6('0x6c')]);var _0x29f320=_[_0x29a6('0x6d')](this[_0x29a6('0x36')],_0x29a6('0x6c'))[_0x2d244f[_0x29a6('0x6c')]]||0x0;var _0xe1b2da=_0x29f320-_0x2d244f[_0x29a6('0x6e')];if(this[_0x29a6('0x11')][_0x2d244f['queue']][_0x29a6('0x31')]!==_[_0x29a6('0x6f')](_0x2d244f['callers'])||this[_0x29a6('0x11')][_0x2d244f[_0x29a6('0x6c')]][_0x29a6('0x58')]!==_['toNumber'](_0x2d244f['loggedin'])||this[_0x29a6('0x11')][_0x2d244f[_0x29a6('0x6c')]]['available']!==_[_0x29a6('0x6f')](_0x2d244f['available'])||this[_0x29a6('0x11')][_0x2d244f['queue']][_0x29a6('0x5c')]!==_0xe1b2da){this['voiceQueues'][_0x2d244f['queue']][_0x29a6('0x31')]=_[_0x29a6('0x6f')](_0x2d244f['callers']);this[_0x29a6('0x11')][_0x2d244f['queue']][_0x29a6('0x58')]=_['toNumber'](_0x2d244f[_0x29a6('0x70')]);this['voiceQueues'][_0x2d244f[_0x29a6('0x6c')]]['available']=_[_0x29a6('0x6f')](_0x2d244f[_0x29a6('0x57')]);this['voiceQueues'][_0x2d244f[_0x29a6('0x6c')]][_0x29a6('0x5c')]=_0xe1b2da>0x0?_0xe1b2da:0x0;this[_0x29a6('0x11')][_0x2d244f[_0x29a6('0x6c')]][_0x29a6('0x5c')]=this[_0x29a6('0x11')][_0x2d244f[_0x29a6('0x6c')]][_0x29a6('0x5c')]>_[_0x29a6('0x6f')](_0x2d244f[_0x29a6('0x70')])?_[_0x29a6('0x6f')](_0x2d244f[_0x29a6('0x70')]):this[_0x29a6('0x11')][_0x2d244f[_0x29a6('0x6c')]][_0x29a6('0x5c')];this[_0x29a6('0x52')](this[_0x29a6('0x11')][_0x2d244f[_0x29a6('0x6c')]],'queuesummary');}logger[_0x29a6('0x47')](_0x29a6('0x71'),util[_0x29a6('0x3f')](this[_0x29a6('0x11')][_0x2d244f[_0x29a6('0x6c')]],{'showHidden':![],'depth':null}));ami[_0x29a6('0x45')](_0x29a6('0x72'),this[_0x29a6('0x11')][_0x2d244f[_0x29a6('0x6c')]]);}}}catch(_0x2ec13e){logger[_0x29a6('0x3e')](_0x29a6('0x6a'),util['inspect'](_0x2ec13e,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncQueueSummaryComplete']=function(_0x52adf3){logger['debug'](_0x29a6('0x73'),util[_0x29a6('0x3f')](_0x52adf3,{'showHidden':![],'depth':null}));this[_0x29a6('0x68')]=!![];};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x74')]=function(_0x38ad8b){try{if(this[_0x29a6('0x75')](_0x38ad8b)){logger[_0x29a6('0x47')](_0x29a6('0x76'),_0x38ad8b[_0x29a6('0x4a')],util['inspect'](_0x38ad8b,{'showHidden':![],'depth':null}));if(_['isUndefined'](this[_0x29a6('0xe')][_0x38ad8b[_0x29a6('0x4a')]]))this[_0x29a6('0xe')][_0x38ad8b[_0x29a6('0x4a')]]=[];if(_[_0x29a6('0x66')](this[_0x29a6('0x36')][_0x38ad8b[_0x29a6('0x4a')]]))this[_0x29a6('0x36')][_0x38ad8b[_0x29a6('0x4a')]]={};var _0x4ff917=new QueueReport();_0x4ff917[_0x29a6('0x4d')]=_0x38ad8b[_0x29a6('0x6c')];_0x4ff917[_0x29a6('0x53')]=this[_0x29a6('0x11')][_0x4ff917[_0x29a6('0x4d')]]&&this[_0x29a6('0x11')][_0x4ff917[_0x29a6('0x4d')]][_0x29a6('0x53')]?this[_0x29a6('0x11')][_0x4ff917[_0x29a6('0x4d')]]['type']||_0x29a6('0x54'):'inbound';_0x4ff917[_0x29a6('0x6c')]=_0x38ad8b[_0x29a6('0x6c')];_0x4ff917['queuecallerjoinAt']=moment()[_0x29a6('0x4b')](_0x29a6('0x77'));_0x4ff917[_0x29a6('0x78')]=_0x38ad8b[_0x29a6('0x78')];_0x4ff917[_0x29a6('0x79')]=_0x38ad8b[_0x29a6('0x79')];_0x4ff917[_0x29a6('0x4a')]=_0x38ad8b['uniqueid'];_0x4ff917[_0x29a6('0x7a')]=this[_0x29a6('0x36')][_0x38ad8b[_0x29a6('0x4a')]][_0x29a6('0x7a')];logger[_0x29a6('0x6b')](_0x29a6('0x7b'),_0x4ff917[_0x29a6('0x4d')],_0x4ff917[_0x29a6('0x53')]);_['merge'](_0x4ff917,_[_0x29a6('0x7c')](_0x38ad8b,_[_0x29a6('0x7d')](_0x4ff917)));this[_0x29a6('0xe')][_0x38ad8b[_0x29a6('0x4a')]][_0x29a6('0x7e')](_0x4ff917);this['channels'][_0x38ad8b['uniqueid']]=_0x4ff917;this[_0x29a6('0x46')](_0x4ff917,_0x29a6('0x16'));}}catch(_0x25514c){logger[_0x29a6('0x3e')](_0x29a6('0x76'),_0x38ad8b['uniqueid'],util['inspect'](_0x25514c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x18')]=function(_0x45535d){try{if(this[_0x29a6('0x75')](_0x45535d)){logger[_0x29a6('0x47')](_0x29a6('0x7f'),_0x45535d[_0x29a6('0x4a')],util['inspect'](_0x45535d,{'showHidden':![],'depth':null}));if(this[_0x29a6('0xe')][_0x45535d[_0x29a6('0x4a')]]){var _0x311fb0=_[_0x29a6('0x80')](this['queueReports'][_0x45535d['uniqueid']]);_0x311fb0[_0x29a6('0x81')]=![];_0x311fb0['queuecallercompleteAt']=null;_0x311fb0['holdtime']=_0x45535d['holdtime'];_0x311fb0[_0x29a6('0x82')]=_0x45535d['originalposition'];_0x311fb0[_0x29a6('0x17')]=!![];_0x311fb0[_0x29a6('0x83')]=moment()['format'](_0x29a6('0x77'));_0x311fb0[_0x29a6('0x84')]=_0x29a6('0x85');_0x311fb0[_0x29a6('0x86')]=null;logger[_0x29a6('0x6b')](_0x29a6('0x87'),_0x311fb0[_0x29a6('0x4d')],_0x311fb0[_0x29a6('0x53')]);this[_0x29a6('0x36')][_0x45535d['uniqueid']]=_0x311fb0;this['emitVoiceQueueChannelRemove'](_0x311fb0,_0x29a6('0x17'));}}}catch(_0x2a61a8){logger[_0x29a6('0x3e')](_0x29a6('0x7f'),_0x45535d['uniqueid'],util['inspect'](_0x2a61a8,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x1a')]=function(_0x59bd46){try{if(this['isNotNull'](_0x59bd46)){logger[_0x29a6('0x47')](_0x29a6('0x88'),_0x59bd46['uniqueid'],util[_0x29a6('0x3f')](_0x59bd46,{'showHidden':![],'depth':null}));if(this[_0x29a6('0xe')][_0x59bd46['uniqueid']]){var _0x315577=_[_0x29a6('0x80')](this[_0x29a6('0xe')][_0x59bd46[_0x29a6('0x4a')]]);_0x315577[_0x29a6('0x89')]=moment()[_0x29a6('0x4b')](_0x29a6('0x77'));_0x315577[_0x29a6('0x8a')]=_0x59bd46['connectedlinenum'];_0x315577[_0x29a6('0x8b')]=_0x59bd46[_0x29a6('0x8b')];logger[_0x29a6('0x6b')](_0x29a6('0x8c'),_0x315577['name'],_0x315577['type'],_0x59bd46[_0x29a6('0x8a')],_0x59bd46[_0x29a6('0x8b')]);this['channels'][_0x59bd46[_0x29a6('0x4a')]]=_0x315577;this[_0x29a6('0x46')](_0x315577,'queuecallerleave');}}}catch(_0x2d7dad){logger[_0x29a6('0x3e')]('[%s][voiceQueueReport][queuecallerleave]',_0x59bd46['uniqueid'],util[_0x29a6('0x3f')](_0x2d7dad,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x1e')]=function(_0x2c5251){try{if(this[_0x29a6('0x75')](_0x2c5251)){logger[_0x29a6('0x47')]('[%s][voiceQueueReport][agentconnect]',_0x2c5251[_0x29a6('0x4a')],util['inspect'](_0x2c5251,{'showHidden':![],'depth':null}));if(this[_0x29a6('0xe')][_0x2c5251[_0x29a6('0x4a')]]){var _0x48c644=_[_0x29a6('0x80')](this[_0x29a6('0xe')][_0x2c5251[_0x29a6('0x4a')]]);_0x48c644[_0x29a6('0x81')]=!![];_0x48c644[_0x29a6('0x84')]=_0x29a6('0x8d');logger[_0x29a6('0x6b')](_0x29a6('0x8e'),_0x48c644[_0x29a6('0x4d')],_0x48c644[_0x29a6('0x53')]);}}}catch(_0x1c5f21){logger[_0x29a6('0x3e')]('[%s][voiceQueueReport][agentconnect]',_0x2c5251['uniqueid'],util[_0x29a6('0x3f')](_0x1c5f21,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x1c')]=function(_0xe9eac3){try{if(this[_0x29a6('0x75')](_0xe9eac3)){logger[_0x29a6('0x47')]('[%s][voiceQueueReport][agentcomplete]',_0xe9eac3[_0x29a6('0x4a')],util[_0x29a6('0x3f')](_0xe9eac3,{'showHidden':![],'depth':null}));if(this[_0x29a6('0xe')][_0xe9eac3[_0x29a6('0x4a')]]){var _0x45e01a=_[_0x29a6('0x80')](this[_0x29a6('0xe')][_0xe9eac3['uniqueid']]);_0x45e01a['queuecallerabandon']=![];_0x45e01a['queuecallerabandonAt']=null;_0x45e01a[_0x29a6('0x8f')]=!![];_0x45e01a[_0x29a6('0x86')]=_0xe9eac3[_0x29a6('0x90')];_0x45e01a[_0x29a6('0x91')]=_0xe9eac3[_0x29a6('0x91')];_0x45e01a[_0x29a6('0x81')]=!![];_0x45e01a[_0x29a6('0x92')]=![];_0x45e01a[_0x29a6('0x93')]=null;if(!_0x45e01a[_0x29a6('0x94')]){if(_0xe9eac3['reason']==_0x29a6('0x94')){_0x45e01a[_0x29a6('0x84')]='COMPLETED';logger[_0x29a6('0x6b')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED',_0x45e01a['name'],_0x45e01a[_0x29a6('0x53')]);}else{if(_[_0x29a6('0x95')](_0xe9eac3[_0x29a6('0x3a')][_0x29a6('0x96')](),_0x29a6('0x97'))){if(this['queueReports'][_0xe9eac3[_0x29a6('0x98')]]){var _0x4108ca=_[_0x29a6('0x80')](this[_0x29a6('0xe')][_0xe9eac3[_0x29a6('0x98')]]);_0x4108ca[_0x29a6('0x81')]=![];_0x4108ca[_0x29a6('0x92')]=!![];_0x4108ca[_0x29a6('0x93')]=moment(_0x45e01a['queuecallerjoinAt'])[_0x29a6('0x99')](_0xe9eac3['holdtime'],_0x29a6('0x9a'))[_0x29a6('0x4b')](_0x29a6('0x77'));_0x4108ca[_0x29a6('0x84')]=_0x29a6('0x9b');_0x4108ca['transfer']=!![];_0x4108ca['transfertype']=_0x29a6('0x9c');_0x4108ca[_0x29a6('0x9d')]=_0xe9eac3[_0x29a6('0x9e')];_0x4108ca[_0x29a6('0x9f')]=_0xe9eac3[_0x29a6('0x4a')];logger[_0x29a6('0x6b')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER',_0x4108ca[_0x29a6('0x4d')],_0x4108ca[_0x29a6('0x53')]);var _0x12d257=this[_0x29a6('0xe')][_0xe9eac3[_0x29a6('0x98')]];this['queueReports'][_0xe9eac3['linkedid']]=this['queueReports'][_0xe9eac3[_0x29a6('0x4a')]];this[_0x29a6('0xe')][_0xe9eac3[_0x29a6('0x4a')]]=_0x12d257;}}else{_0x45e01a['queuecallerexitreason']=_0x29a6('0xa0')+_0xe9eac3[_0x29a6('0xa1')][_0x29a6('0xa2')]();logger[_0x29a6('0x6b')](_0x29a6('0xa3'),_0x45e01a[_0x29a6('0x4d')],_0x45e01a['type'],_0x45e01a[_0x29a6('0x84')]);}}}this[_0x29a6('0x36')][_0xe9eac3['uniqueid']]=_0x45e01a;this[_0x29a6('0x43')](_0x45e01a,_0x29a6('0x1b'));}}}catch(_0x41e3cb){logger[_0x29a6('0x3e')](_0x29a6('0xa4'),_0xe9eac3[_0x29a6('0x4a')],util[_0x29a6('0x3f')](_0x41e3cb,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x29a6('0xa5')]=function(_0xd5807c){try{if(this[_0x29a6('0x75')](_0xd5807c)){logger[_0x29a6('0x47')]('[%s][voiceQueueReport][varset]',_0xd5807c[_0x29a6('0x4a')],util[_0x29a6('0x3f')](_0xd5807c,{'showHidden':![],'depth':null}));this['addVariable'](_0xd5807c[_0x29a6('0x4a')],_['keys'](_0xd5807c['variable'])[0x0],_0xd5807c['value']);if(this['queueReports'][_0xd5807c['uniqueid']]){var _0x2f53da=_[_0x29a6('0x80')](this[_0x29a6('0xe')][_0xd5807c[_0x29a6('0x4a')]]);if(_0x2f53da){if(this[_0x29a6('0x75')](_0xd5807c[_0x29a6('0xa6')])&&this[_0x29a6('0x75')](_0xd5807c[_0x29a6('0xa6')][_0x29a6('0xa7')])){switch(_0xd5807c[_0x29a6('0xa8')]){case _0x29a6('0xa9'):_0x2f53da[_0x29a6('0x92')]=![];_0x2f53da['queuecallerexitAt']=null;break;case _0x29a6('0xaa'):_0x2f53da[_0x29a6('0xab')]=_0x29a6('0xac');_0x2f53da[_0x29a6('0x92')]=!![];_0x2f53da[_0x29a6('0x93')]=moment()[_0x29a6('0x4b')](_0x29a6('0x77'));_0x2f53da[_0x29a6('0x89')]=moment()[_0x29a6('0x4b')](_0x29a6('0x77'));logger[_0x29a6('0x47')]('[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:',_0xd5807c[_0x29a6('0x4a')],util[_0x29a6('0x3f')](_0x2f53da,{'showHidden':![],'depth':null}));ami[_0x29a6('0x45')](_0x29a6('0xad'),_0x2f53da);break;default:_0x2f53da['queuecallerexit']=!![];_0x2f53da[_0x29a6('0x93')]=moment()[_0x29a6('0x4b')](_0x29a6('0x77'));_0x2f53da[_0x29a6('0x89')]=moment()['format'](_0x29a6('0x77'));}_0x2f53da[_0x29a6('0x17')]=![];_0x2f53da['queuecallerabandonAt']=null;_0x2f53da[_0x29a6('0x84')]=_0xd5807c['value'];this[_0x29a6('0x36')][_0xd5807c[_0x29a6('0x4a')]]=_0x2f53da;this[_0x29a6('0x43')](_0x2f53da,_0x29a6('0x1f'));}else if(this[_0x29a6('0x75')](_0xd5807c[_0x29a6('0xa6')])&&this[_0x29a6('0x75')](_0xd5807c[_0x29a6('0xa6')][_0x29a6('0xae')])){if(!_0x2f53da['queuecallerabandon']){_0x2f53da[_0x29a6('0x92')]=!![];_0x2f53da['queuecallerexitAt']=moment()[_0x29a6('0x4b')]('YYYY-MM-DD\x20HH:mm:ss');_0x2f53da['queuecallerexitreason']='EXITWITHKEY';_0x2f53da[_0x29a6('0x89')]=moment()[_0x29a6('0x4b')](_0x29a6('0x77'));this[_0x29a6('0x36')][_0xd5807c[_0x29a6('0x4a')]]=_0x2f53da;}}logger[_0x29a6('0x6b')](_0x29a6('0xaf'),_0xd5807c[_0x29a6('0x4a')],_0x2f53da[_0x29a6('0x4d')],_0x2f53da[_0x29a6('0x53')],_[_0x29a6('0x7d')](_0xd5807c[_0x29a6('0xa6')])[0x0],_0xd5807c[_0x29a6('0xa8')]);_0x2f53da[_0x29a6('0x13')]=this['variables'][_0xd5807c[_0x29a6('0x4a')]];}}}}catch(_0x596658){logger['error'](_0x29a6('0xb0'),_0xd5807c[_0x29a6('0x4a')],util[_0x29a6('0x3f')](_0x596658,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0xb1')]=function(_0xb90a5c,_0x3beb1e,_0x29439b){var _0x3a74d3=['rtpaudioqos',_0x29a6('0xb2'),'rtpaudioqosjitter',_0x29a6('0xb3'),_0x29a6('0xb4'),_0x29a6('0xb5'),_0x29a6('0xb6'),_0x29a6('0xb7'),'sipcallid',_0x29a6('0xb8'),_0x29a6('0xb9'),_0x29a6('0xba'),_0x29a6('0xbb'),'memberdynamic','memberinterface',_0x29a6('0xbc'),_0x29a6('0x90'),_0x29a6('0xbd'),'memberrealtime'];if(!_[_0x29a6('0x38')](_0x3beb1e)&&!_[_0x29a6('0xbe')](_0x3a74d3,_0x3beb1e)){if(_[_0x29a6('0x66')](this[_0x29a6('0x13')][_0xb90a5c])){this[_0x29a6('0x13')][_0xb90a5c]={};}this[_0x29a6('0x13')][_0xb90a5c][_0x3beb1e]=_0x29439b;}};VoiceQueueReport[_0x29a6('0x34')]['syncHangup']=function(_0x464aab){try{if(this['isNotNull'](_0x464aab)){logger[_0x29a6('0x47')](_0x29a6('0xbf'),_0x464aab['uniqueid'],util[_0x29a6('0x3f')](_0x464aab,{'showHidden':![],'depth':null}));if(this[_0x29a6('0xe')][_0x464aab['uniqueid']]){for(var _0x7ccd96=0x0,_0x3c1d1d={};_0x7ccd96<this['queueReports'][_0x464aab[_0x29a6('0x4a')]][_0x29a6('0xc0')];_0x7ccd96+=0x1){_0x3c1d1d=this['queueReports'][_0x464aab[_0x29a6('0x4a')]][_0x7ccd96];if(this[_0x29a6('0x11')][_0x3c1d1d[_0x29a6('0x6c')]]){if(_0x3c1d1d[_0x29a6('0x92')]&&_0x3c1d1d['transfer']!=!![]){this[_0x29a6('0x11')][_0x3c1d1d[_0x29a6('0x6c')]]['unmanaged']+=0x1;}if(_0x3c1d1d['queuecallerabandon']){this['voiceQueues'][_0x3c1d1d['queue']][_0x29a6('0x5d')]+=0x1;}this[_0x29a6('0x11')][_0x3c1d1d[_0x29a6('0x6c')]][_0x29a6('0x5b')]+=moment(_0x3c1d1d[_0x29a6('0x89')])[_0x29a6('0xc1')](_0x3c1d1d['queuecallerjoinAt'],_0x29a6('0x9a'))||0x0;if(_0x7ccd96===this[_0x29a6('0xe')][_0x464aab['uniqueid']][_0x29a6('0xc0')]-0x1){this[_0x29a6('0x11')][_0x3c1d1d[_0x29a6('0x6c')]][_0x29a6('0x5a')]+=moment()[_0x29a6('0xc2')](0x0)[_0x29a6('0xc1')](_0x3c1d1d[_0x29a6('0xc3')],_0x29a6('0x9a'));this[_0x29a6('0x11')][_0x3c1d1d['queue']][_0x29a6('0xc4')]+=0x1;if(_0x3c1d1d[_0x29a6('0x81')]){this['voiceQueues'][_0x3c1d1d['queue']][_0x29a6('0x56')]+=0x1;this[_0x29a6('0x11')][_0x3c1d1d[_0x29a6('0x6c')]][_0x29a6('0x59')]+=moment()[_0x29a6('0xc2')](0x0)[_0x29a6('0xc1')](_0x3c1d1d['queuecallerleaveAt'],_0x29a6('0x9a'));_0x3c1d1d[_0x29a6('0xc5')]=moment()[_0x29a6('0x4b')](_0x29a6('0x77'));_0x3c1d1d['queuecallerexit']=![];_0x3c1d1d[_0x29a6('0x93')]=null;}if(_0x3c1d1d[_0x29a6('0x92')]&&_0x3c1d1d[_0x29a6('0x94')]!=!![]){_0x3c1d1d['lastevent']=_0x29a6('0xc6');logger[_0x29a6('0x47')](_0x29a6('0xc7'),_0x464aab['uniqueid'],util[_0x29a6('0x3f')](_0x3c1d1d,{'showHidden':![],'depth':null}));ami[_0x29a6('0x45')](_0x29a6('0xc8'),_0x3c1d1d);}if(_0x3c1d1d[_0x29a6('0x17')]){_0x3c1d1d[_0x29a6('0xab')]='abandoned';logger[_0x29a6('0x47')](_0x29a6('0xc9'),_0x464aab['uniqueid'],util[_0x29a6('0x3f')](_0x3c1d1d,{'showHidden':![],'depth':null}));ami[_0x29a6('0x45')](_0x29a6('0xca'),_0x3c1d1d);}}else{this[_0x29a6('0x11')][_0x3c1d1d[_0x29a6('0x6c')]][_0x29a6('0x5a')]+=this[_0x29a6('0x11')][_0x3c1d1d[_0x29a6('0x6c')]]['sumHoldTime'];}logger[_0x29a6('0x6b')](_0x29a6('0xcb'),_0x464aab['uniqueid'],_0x3c1d1d['name'],_0x3c1d1d[_0x29a6('0x53')],_0x464aab[_0x29a6('0xcc')]);this['channels'][_0x464aab['uniqueid']]=_0x3c1d1d;this[_0x29a6('0x43')](_0x3c1d1d,'hangup');this['emitVoiceQueueSummary'](this['voiceQueues'][_0x3c1d1d[_0x29a6('0x6c')]],_0x29a6('0x20'));}}logger[_0x29a6('0x47')](_0x29a6('0xcd'),_0x464aab['uniqueid'],util['inspect'](this[_0x29a6('0xe')][_0x464aab['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x29a6('0x45')](_0x29a6('0xce'),this[_0x29a6('0xe')][_0x464aab[_0x29a6('0x4a')]]);delete this[_0x29a6('0xe')][_0x464aab['uniqueid']];delete this[_0x29a6('0x36')][_0x464aab[_0x29a6('0x4a')]];}if(this['variables'][_0x464aab[_0x29a6('0x4a')]]){delete this['variables'][_0x464aab[_0x29a6('0x4a')]];}}}catch(_0x467303){logger[_0x29a6('0x3e')](_0x29a6('0xbf'),_0x464aab['uniqueid'],util[_0x29a6('0x3f')](_0x467303,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x28')]=function(_0x4b1f36){try{if(this[_0x29a6('0x75')](_0x4b1f36)){logger[_0x29a6('0x47')](_0x29a6('0xcf'),_0x4b1f36[_0x29a6('0x4a')],util[_0x29a6('0x3f')](_0x4b1f36,{'showHidden':![],'depth':null}));var _0x1c073f;if(this[_0x29a6('0xe')][_0x4b1f36[_0x29a6('0xd0')]]){_0x1c073f=_[_0x29a6('0x80')](this[_0x29a6('0xe')][_0x4b1f36[_0x29a6('0xd0')]]);_0x1c073f[_0x29a6('0x9d')]=_0x4b1f36[_0x29a6('0xd1')];_0x1c073f[_0x29a6('0x9f')]=_0x4b1f36[_0x29a6('0xd2')];_0x1c073f[_0x29a6('0x84')]=_0x29a6('0xd3');_0x1c073f[_0x29a6('0x94')]=!![];_0x1c073f['transfertype']=_0x29a6('0xd4');if(this[_0x29a6('0xe')][_0x4b1f36[_0x29a6('0xd2')]]){var _0x49134b=this[_0x29a6('0xe')][_0x4b1f36[_0x29a6('0xd2')]];this[_0x29a6('0xe')][_0x4b1f36['secondtransfereruniqueid']]=this['queueReports'][_0x4b1f36[_0x29a6('0xd0')]];this[_0x29a6('0xe')][_0x4b1f36['transfereeuniqueid']]=_0x49134b;var _0x176079=_[_0x29a6('0x80')](this[_0x29a6('0xe')][_0x4b1f36[_0x29a6('0xd0')]]);_0x176079['switch']=!![];}logger[_0x29a6('0x6b')](_0x29a6('0xd5'),_0x4b1f36[_0x29a6('0x4a')],_0x1c073f[_0x29a6('0x4d')],_0x1c073f['type'],_0x1c073f[_0x29a6('0x9d')],_0x1c073f[_0x29a6('0x9f')]);}else if(this[_0x29a6('0xe')][_0x4b1f36[_0x29a6('0xd6')]]){_0x1c073f=_[_0x29a6('0x80')](this[_0x29a6('0xe')][_0x4b1f36[_0x29a6('0xd6')]]);_0x1c073f[_0x29a6('0x9d')]=_0x4b1f36['origtransfererexten'];_0x1c073f[_0x29a6('0x9f')]=_0x4b1f36[_0x29a6('0xd7')];_0x1c073f[_0x29a6('0x84')]='ATTENDEDTRANSFER';_0x1c073f['transfer']=!![];_0x1c073f[_0x29a6('0xd8')]=_0x29a6('0xd4');if(this[_0x29a6('0xe')][_0x4b1f36['origtransfereruniqueid']]){var _0x49134b=this['queueReports'][_0x4b1f36[_0x29a6('0xd7')]];this['queueReports'][_0x4b1f36[_0x29a6('0xd7')]]=this[_0x29a6('0xe')][_0x4b1f36['transfertargetuniqueid']];this[_0x29a6('0xe')][_0x4b1f36[_0x29a6('0xd6')]]=_0x49134b;var _0x176079=_['last'](this[_0x29a6('0xe')][_0x4b1f36['transfertargetuniqueid']]);_0x176079[_0x29a6('0x37')]=!![];}logger['info'](_0x29a6('0xd5'),_0x4b1f36[_0x29a6('0x4a')],_0x1c073f[_0x29a6('0x4d')],_0x1c073f[_0x29a6('0x53')],_0x1c073f[_0x29a6('0x9d')],_0x1c073f[_0x29a6('0x9f')]);}}}catch(_0x3fa681){logger[_0x29a6('0x3e')](_0x29a6('0xcf'),_0x4b1f36['uniqueid'],util[_0x29a6('0x3f')](_0x3fa681,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x2a')]=function(_0x447b5c){try{if(this[_0x29a6('0x75')](_0x447b5c)){logger['debug'](_0x29a6('0xd9'),_0x447b5c['uniqueid'],util[_0x29a6('0x3f')](_0x447b5c,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x447b5c[_0x29a6('0xd0')]]){var _0x137d98=_[_0x29a6('0x80')](this['queueReports'][_0x447b5c[_0x29a6('0xd0')]]);_0x137d98[_0x29a6('0x84')]=_0x29a6('0xda');_0x137d98[_0x29a6('0x94')]=!![];_0x137d98[_0x29a6('0xd8')]=_0x29a6('0xdb');_0x137d98[_0x29a6('0x9d')]=_0x447b5c['extension'];_0x137d98[_0x29a6('0x9f')]=_0x447b5c[_0x29a6('0xd0')];logger[_0x29a6('0x6b')](_0x29a6('0xdc'),_0x447b5c['uniqueid'],_0x137d98[_0x29a6('0x4d')],_0x137d98[_0x29a6('0x53')],_0x137d98[_0x29a6('0x9d')],_0x137d98[_0x29a6('0x9f')]);this[_0x29a6('0x21')]({'event':'BlindTransfer','uniqueid':_0x447b5c[_0x29a6('0xd0')],'context':_0x447b5c[_0x29a6('0xdd')],'channel':_0x447b5c[_0x29a6('0xde')]});}}}catch(_0x314dcd){logger[_0x29a6('0x3e')]('[%s][voiceQueueReport][blindtransfer]',_0x447b5c[_0x29a6('0x4a')],util['inspect'](_0x314dcd,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x25')]=function(_0x3d7f81){try{if(this[_0x29a6('0x75')](_0x3d7f81)){logger[_0x29a6('0x47')]('[%s][voiceQueueReport][musiconholdstart]',_0x3d7f81[_0x29a6('0x4a')],util[_0x29a6('0x3f')](_0x3d7f81,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x3d7f81['uniqueid']]){var _0x3ec97b=_[_0x29a6('0x80')](this[_0x29a6('0xe')][_0x3d7f81[_0x29a6('0x4a')]]);if(!_['isNil'](_0x3ec97b['queuecallerleaveAt'])){_0x3ec97b['mohstarttime']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');logger['info']('[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s',_0x3d7f81[_0x29a6('0x4a')],_0x3ec97b[_0x29a6('0xdf')]);}}}}catch(_0x8419be){logger['error'](_0x29a6('0xe0'),_0x3d7f81[_0x29a6('0x4a')],util[_0x29a6('0x3f')](_0x8419be,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x26')]=function(_0x171a4e){try{if(this[_0x29a6('0x75')](_0x171a4e)){logger[_0x29a6('0x47')](_0x29a6('0xe1'),_0x171a4e[_0x29a6('0x4a')],util['inspect'](_0x171a4e,{'showHidden':![],'depth':null}));if(this[_0x29a6('0xe')][_0x171a4e[_0x29a6('0x4a')]]){var _0x350b1b=_[_0x29a6('0x80')](this[_0x29a6('0xe')][_0x171a4e[_0x29a6('0x4a')]]);if(!_[_0x29a6('0x38')](_0x350b1b[_0x29a6('0xdf')])){_0x350b1b[_0x29a6('0xe2')]+=moment()[_0x29a6('0xc2')](0x0)['diff'](_0x350b1b[_0x29a6('0xdf')],_0x29a6('0x9a'));logger[_0x29a6('0x6b')](_0x29a6('0xe3'),_0x171a4e[_0x29a6('0x4a')],_0x350b1b[_0x29a6('0xe2')]);delete _0x350b1b[_0x29a6('0xdf')];}}}}catch(_0xcb5b97){logger['error']('[%s][voiceQueueReport][musiconholdstop]',_0x171a4e['uniqueid'],util['inspect'](_0xcb5b97,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x29a6('0x34')][_0x29a6('0x23')]=function(_0x39198f){try{if(this[_0x29a6('0x75')](_0x39198f)){logger[_0x29a6('0x47')](_0x29a6('0xe4'),_0x39198f[_0x29a6('0x4a')],util['inspect'](_0x39198f,{'showHidden':![],'depth':null}));if(_0x39198f[_0x29a6('0xe5')]['toLowerCase']()===_0x29a6('0xe6')){_0x39198f[_0x29a6('0xe7')]=_0x39198f[_0x29a6('0xe8')]&&_0x39198f[_0x29a6('0xe8')]['startsWith'](_0x29a6('0xe9'))?_0x39198f['appdata']:(_0x39198f[_0x29a6('0xe8')]||_0x39198f[_0x29a6('0xe7')])[_0x29a6('0x96')]();if(_[_0x29a6('0x95')](_0x39198f[_0x29a6('0xe7')][_0x29a6('0x96')](),_0x29a6('0xea'))){logger[_0x29a6('0x6b')](_0x29a6('0xeb'),_0x39198f[_0x29a6('0x4a')],_0x39198f[_0x29a6('0xe5')],_0x39198f[_0x29a6('0xe7')]);if(_['isUndefined'](this[_0x29a6('0x36')][_0x39198f['uniqueid']]))this[_0x29a6('0x36')][_0x39198f[_0x29a6('0x4a')]]={};var _0x496286=_0x39198f[_0x29a6('0xe7')][_0x29a6('0xec')]('=');var _0x511e05=_0x496286[0x0]['toLowerCase']()[_0x29a6('0xed')](/cdr\((.*)\)/);if(_0x511e05)this[_0x29a6('0x36')][_0x39198f[_0x29a6('0x4a')]][_0x511e05[0x1]]=_0x496286[0x1];}}}}catch(_0x2c4a58){logger[_0x29a6('0x3e')]('[%s][voiceQueueReport][newexten]',_0x39198f['uniqueid'],util[_0x29a6('0x3f')](_0x2c4a58,{'showHidden':![],'depth':null}));}};module['exports']=VoiceQueueReport;
\ No newline at end of file
+var _0xa902=['total','unmanaged','abandoned','Trunk','active','Interval','voice_queue:save','isNotNull','isUndefined','queues','[voiceQueueReport][queues]','[voiceQueueReport][queuesummary]','queue','info','[voiceQueueReport][queuesummary]\x20name:%s','countBy','callers','toNumber','loggedin','talking','waiting','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','syncQueueSummaryComplete','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','keys','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete','queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexitreason','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentconnect]','[%s][voiceQueueReport][agentcomplete]','assigned','membername','queuecallerexit','reason','transfer','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','channel','toLowerCase','local/','linkedid','queuecallerexitAt','queuecallerjoinAt','add','transfertype','FORWARD','transferexten','destexten','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','[%s][voiceQueueReport][varset]','addVariable','variable','queuestatus','value','CONTINUE','TIMEOUT','lastevent','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','queueposition','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','sipcallid','sipuri','bridgepeer','membercalls','memberdynamic','memberlastcall','memberpenalty','isNil','includes','[%s][voiceQueueReport][hangup]','length','diff','seconds','milliseconds','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','cause-txt','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','syncAttendedTransfer','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','ATTENDEDTRANSFER','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transferuniqueid','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','syncBlindTransfer','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','mohstarttime','mohtime','[%s][voiceQueueReport][musiconholdstop]','[%s][voiceQueueReport][newexten]\x20event:','application','applicationdata','appdata','CDR(routeAlias)','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','match','[%s][voiceQueueReport][newexten]','lodash','moment','util','md5','ioredis','../../../config/logger','../model/queueReport','redis','defaults','localhost','socket.io-emitter','prototype','tail','finally','queueReports','agents','channels','voiceQueues','flagQueueSummary','campaigns','queuesummary','syncQueueSummary','bind','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','syncAgentComplete','syncAgentConnect','varset','hangup','syncHangup','fullybooted','syncFullyBooted','newexten','syncNewExten','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','blindtransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','originated','queueStatusComplete','clearZombieChannels','switch','sequence','enqueue','Action','status','catch','message','No\x20such\x20channel','[%s][voiceQueueReport][checkChannel]','inspect','[%s][voiceQueueReport][checkQueueReport]','variables','error','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','emit','format','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','voice_queue_channel:remove','voice_queue_presence:remove','emitVoiceQueueSummary','type','inbound','strategy','answered','available','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime'];(function(_0x1b23d5,_0x1bd25d){var _0x8a2e3e=function(_0xbc705a){while(--_0xbc705a){_0x1b23d5['push'](_0x1b23d5['shift']());}};_0x8a2e3e(++_0x1bd25d);}(_0xa902,0x8d));var _0x2a90=function(_0x52715c,_0x296138){_0x52715c=_0x52715c-0x0;var _0xbdd94c=_0xa902[_0x52715c];return _0xbdd94c;};'use strict';var _=require(_0x2a90('0x0'));var moment=require(_0x2a90('0x1'));var util=require(_0x2a90('0x2'));var md5=require(_0x2a90('0x3'));var Redis=require(_0x2a90('0x4'));var config=require('../../../config/environment');var logger=require(_0x2a90('0x5'))('ami');var ami=require('../ami');var QueueReport=require(_0x2a90('0x6'));config[_0x2a90('0x7')]=_[_0x2a90('0x8')](config[_0x2a90('0x7')],{'host':_0x2a90('0x9'),'port':0x18eb});var io=require(_0x2a90('0xa'))(new Redis(config['redis']));var Sequence=function(){};Sequence[_0x2a90('0xb')]['enqueue']=function(_0x5ec2b9){this[_0x2a90('0xc')]=this[_0x2a90('0xc')]?this[_0x2a90('0xc')][_0x2a90('0xd')](_0x5ec2b9):_0x5ec2b9();};function VoiceQueueReport(_0x18a60e){this['sequence']=new Sequence();this[_0x2a90('0xe')]={};this[_0x2a90('0xf')]=_0x18a60e[_0x2a90('0xf')];this[_0x2a90('0x10')]=_0x18a60e['queueChannels'];this[_0x2a90('0x11')]=_0x18a60e['voiceQueues'];this[_0x2a90('0x12')]=!![];this['campaigns']=_0x18a60e[_0x2a90('0x13')];this['variables']={};ami['on'](_0x2a90('0x14'),this[_0x2a90('0x15')][_0x2a90('0x16')](this));ami['on']('queuesummarycomplete',this['syncQueueSummaryComplete']['bind'](this));ami['on'](_0x2a90('0x17'),this[_0x2a90('0x18')]['bind'](this));ami['on'](_0x2a90('0x19'),this[_0x2a90('0x1a')][_0x2a90('0x16')](this));ami['on'](_0x2a90('0x1b'),this[_0x2a90('0x1c')][_0x2a90('0x16')](this));ami['on'](_0x2a90('0x1d'),this[_0x2a90('0x1e')][_0x2a90('0x16')](this));ami['on']('agentconnect',this[_0x2a90('0x1f')][_0x2a90('0x16')](this));ami['on'](_0x2a90('0x20'),this['syncVarSet'][_0x2a90('0x16')](this));ami['on'](_0x2a90('0x21'),this[_0x2a90('0x22')][_0x2a90('0x16')](this));ami['on'](_0x2a90('0x23'),this[_0x2a90('0x24')][_0x2a90('0x16')](this));ami['on'](_0x2a90('0x25'),this[_0x2a90('0x26')][_0x2a90('0x16')](this));ami['on'](_0x2a90('0x27'),this[_0x2a90('0x28')]['bind'](this));ami['on'](_0x2a90('0x29'),this[_0x2a90('0x2a')][_0x2a90('0x16')](this));ami['on'](_0x2a90('0x2b'),this['syncAttendedTransfer'][_0x2a90('0x16')](this));ami['on'](_0x2a90('0x2c'),this['syncBlindTransfer'][_0x2a90('0x16')](this));this[_0x2a90('0x2d')]();this[_0x2a90('0x2e')]();}function clearChannels(_0x2a4e28){if(!_[_0x2a90('0x2f')](_0x2a4e28)){for(var _0x1303d9 in _0x2a4e28){if(_0x2a4e28[_0x2a90('0x30')](_0x1303d9)){delete _0x2a4e28[_0x1303d9];}}}}function clearCampaigns(_0x24a6d3){if(!_['isEmpty'](_0x24a6d3)){for(var _0x27f883 in _0x24a6d3){if(_0x24a6d3[_0x2a90('0x30')](_0x27f883)){_0x24a6d3[_0x27f883][_0x2a90('0x31')]=0x0;}}}}function clearVoiceQueues(_0x40c61a){if(!_[_0x2a90('0x2f')](_0x40c61a)){for(var _0x5208d8 in _0x40c61a){if(_0x40c61a['hasOwnProperty'](_0x5208d8)){_0x40c61a[_0x5208d8][_0x2a90('0x31')]=0x0;_0x40c61a[_0x5208d8]['talking']=0x0;_0x40c61a[_0x5208d8]['pTalking']=0x0;_0x40c61a[_0x5208d8]['waiting']=0x0;_0x40c61a[_0x5208d8][_0x2a90('0x32')]=!![];}}}}function clearAgentBooked(_0x3c78f5){if(!_['isEmpty'](_0x3c78f5)){for(var _0x5bd700 in _0x3c78f5){if(_0x3c78f5[_0x2a90('0x30')](_0x5bd700)){_0x3c78f5[_0x5bd700]['unlockRR']=!![];}}}}VoiceQueueReport[_0x2a90('0xb')][_0x2a90('0x33')]=function(){var _0x3b580f=this;for(var _0x27b6b6 in this[_0x2a90('0x10')]){if(this[_0x2a90('0x10')][_0x2a90('0x30')](_0x27b6b6)&&!this['channels'][_0x27b6b6][_0x2a90('0x34')]){this[_0x2a90('0x35')][_0x2a90('0x36')](function(){if(!_['isNil'](_0x3b580f[_0x2a90('0x10')][_0x27b6b6])){return ami[_0x2a90('0x37')]({'action':_0x2a90('0x38'),'channel':_0x3b580f[_0x2a90('0x10')][_0x27b6b6]['channel']})[_0x2a90('0x39')](function(_0x1b5f73){if(_0x1b5f73[_0x2a90('0x3a')]===_0x2a90('0x3b')){setTimeout(function(){if(_0x3b580f[_0x2a90('0x10')][_0x27b6b6]){delete _0x3b580f[_0x2a90('0x10')][_0x27b6b6];logger['error'](_0x2a90('0x3c'),_0x27b6b6,util[_0x2a90('0x3d')](_0x1b5f73,{'showHidden':![],'depth':null}));}if(_0x3b580f[_0x2a90('0xe')][_0x27b6b6]){delete _0x3b580f[_0x2a90('0xe')][_0x27b6b6];logger['error'](_0x2a90('0x3e'),_0x27b6b6,util[_0x2a90('0x3d')](_0x1b5f73,{'showHidden':![],'depth':null}));}if(_0x3b580f['variables'][_0x27b6b6]){delete _0x3b580f[_0x2a90('0x3f')][_0x27b6b6];logger[_0x2a90('0x40')]('[%s][voiceQueueReport][checkVariables]',_0x27b6b6,util['inspect'](_0x1b5f73,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x2a90('0xb')][_0x2a90('0x24')]=function(){logger[_0x2a90('0x40')]('[FullyBooted]\x20clear\x20realtime');clearChannels(this[_0x2a90('0x10')]);this['clearQueueReport'](this[_0x2a90('0xe')]);clearAgentBooked(this['agents']);clearVoiceQueues(this[_0x2a90('0x11')]);clearCampaigns(this['campaigns']);};VoiceQueueReport['prototype'][_0x2a90('0x41')]=function(_0x47d568){var _0x463721=this;if(!_[_0x2a90('0x2f')](_0x47d568)){for(var _0x218727 in _0x47d568){if(_0x47d568['hasOwnProperty'](_0x218727)){_0x463721[_0x2a90('0x42')](_0x47d568[_0x218727],_0x2a90('0x43'));delete _0x47d568[_0x218727];}}}};VoiceQueueReport[_0x2a90('0xb')]['emit']=function(_0x1cecc2,_0x2d6a44,_0x1a9c04){io['to'](_0x1cecc2)['emit'](_0x2d6a44,_0x1a9c04);};VoiceQueueReport[_0x2a90('0xb')][_0x2a90('0x44')]=function(_0x504643,_0x2771e8){logger[_0x2a90('0x45')](_0x2a90('0x46')+_0x2771e8+_0x2a90('0x47'),_0x504643[_0x2a90('0x48')],util[_0x2a90('0x3d')](_0x504643,{'showHidden':![],'depth':null}));this[_0x2a90('0x49')](util[_0x2a90('0x4a')](_0x2a90('0x4b'),_0x504643[_0x2a90('0x4c')]),_0x2a90('0x4d'),_0x504643);io[_0x2a90('0x49')](_0x2a90('0x4e'),_0x504643);};VoiceQueueReport[_0x2a90('0xb')]['emitVoiceQueueChannelRemove']=function(_0x45cbc2,_0x3a70fe){logger['debug'](_0x2a90('0x46')+_0x3a70fe+_0x2a90('0x4f'),_0x45cbc2[_0x2a90('0x48')],util[_0x2a90('0x3d')](_0x45cbc2,{'showHidden':![],'depth':null}));this[_0x2a90('0x49')](util['format'](_0x2a90('0x4b'),_0x45cbc2['name']),_0x2a90('0x50'),_0x45cbc2);io['emit'](_0x2a90('0x51'),_0x45cbc2);};VoiceQueueReport[_0x2a90('0xb')][_0x2a90('0x52')]=function(_0x31c69f,_0x315c78){if(_0x31c69f[_0x2a90('0x53')]===_0x2a90('0x54')){var _0x48d464={'id':_0x31c69f['id'],'name':_0x31c69f['name'],'strategy':_0x31c69f[_0x2a90('0x55')],'answered':_0x31c69f[_0x2a90('0x56')],'available':_0x31c69f[_0x2a90('0x57')],'loggedIn':_0x31c69f[_0x2a90('0x58')],'pTalking':_0x31c69f[_0x2a90('0x59')],'sumBillable':_0x31c69f[_0x2a90('0x5a')],'sumDuration':_0x31c69f[_0x2a90('0x5b')],'sumHoldTime':_0x31c69f[_0x2a90('0x5c')]||0x0,'talking':_0x31c69f['talking'],'total':_0x31c69f[_0x2a90('0x5d')],'type':_0x31c69f['type'],'unmanaged':_0x31c69f[_0x2a90('0x5e')],'abandoned':_0x31c69f[_0x2a90('0x5f')],'waiting':_0x31c69f['waiting']};if(_0x31c69f[_0x2a90('0x60')]){_0x48d464[_0x2a90('0x60')]={'id':_0x31c69f[_0x2a90('0x60')]['id'],'name':_0x31c69f[_0x2a90('0x60')][_0x2a90('0x4c')],'active':_0x31c69f[_0x2a90('0x60')][_0x2a90('0x61')],'callerid':_0x31c69f['Trunk']['callerid']};}if(_0x31c69f[_0x2a90('0x62')]){_0x48d464[_0x2a90('0x62')]={'id':_0x31c69f[_0x2a90('0x62')]['id'],'name':_0x31c69f[_0x2a90('0x62')][_0x2a90('0x4c')]};}var _0x5e203f=md5(JSON['stringify'](_0x48d464));if(_0x31c69f[_0x2a90('0x3')]!==_0x5e203f){_0x31c69f[_0x2a90('0x3')]=_0x5e203f;logger['debug']('[voiceQueueReport]['+_0x315c78+']\x20sending\x20voice_queue:save\x20event:',util[_0x2a90('0x3d')](_0x48d464,{'showHidden':![],'depth':null}));this['emit'](util[_0x2a90('0x4a')](_0x2a90('0x4b'),_0x48d464[_0x2a90('0x4c')]),_0x2a90('0x63'),_0x48d464);}}};VoiceQueueReport[_0x2a90('0xb')][_0x2a90('0x64')]=function(_0x4f507a){return _0x4f507a!==null&&!_[_0x2a90('0x65')](_0x4f507a);};VoiceQueueReport[_0x2a90('0xb')]['loopQueueShow']=function(){var _0x265769=this;setInterval(function(){_0x265769['clearZombieChannels']();ami['Action']({'action':_0x2a90('0x66')})[_0x2a90('0x39')](function(_0x5819ab){logger['error'](_0x2a90('0x67'),util['inspect'](_0x5819ab,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x2a90('0xb')][_0x2a90('0x2d')]=function(){var _0x561bae=this;setInterval(function(){if(_0x561bae[_0x2a90('0x12')]){return ami[_0x2a90('0x37')]({'action':_0x2a90('0x14')})['then'](function(_0x44b3eb){_0x561bae[_0x2a90('0x12')]=![];})['catch'](function(_0x548426){logger[_0x2a90('0x40')](_0x2a90('0x68'),util['inspect'](_0x548426,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x2a90('0xb')]['syncQueueSummary']=function(_0x1302b9){try{if(this['isNotNull'](_0x1302b9)&&this[_0x2a90('0x64')](_0x1302b9[_0x2a90('0x69')])){logger[_0x2a90('0x45')]('[voiceQueueReport][queuesummary]\x20event:',util['inspect'](_0x1302b9,{'showHidden':![],'depth':null}));if(this['voiceQueues'][_0x1302b9[_0x2a90('0x69')]]){logger[_0x2a90('0x6a')](_0x2a90('0x6b'),_0x1302b9[_0x2a90('0x69')]);var _0x2e5762=_[_0x2a90('0x6c')](this[_0x2a90('0x10')],_0x2a90('0x69'))[_0x1302b9[_0x2a90('0x69')]]||0x0;var _0x4f4dc6=_0x2e5762-_0x1302b9[_0x2a90('0x6d')];if(this[_0x2a90('0x11')][_0x1302b9[_0x2a90('0x69')]]['waiting']!==_['toNumber'](_0x1302b9['callers'])||this[_0x2a90('0x11')][_0x1302b9[_0x2a90('0x69')]][_0x2a90('0x58')]!==_[_0x2a90('0x6e')](_0x1302b9[_0x2a90('0x6f')])||this[_0x2a90('0x11')][_0x1302b9[_0x2a90('0x69')]][_0x2a90('0x57')]!==_[_0x2a90('0x6e')](_0x1302b9[_0x2a90('0x57')])||this[_0x2a90('0x11')][_0x1302b9[_0x2a90('0x69')]][_0x2a90('0x70')]!==_0x4f4dc6){this[_0x2a90('0x11')][_0x1302b9[_0x2a90('0x69')]][_0x2a90('0x71')]=_['toNumber'](_0x1302b9[_0x2a90('0x6d')]);this['voiceQueues'][_0x1302b9[_0x2a90('0x69')]][_0x2a90('0x58')]=_[_0x2a90('0x6e')](_0x1302b9[_0x2a90('0x6f')]);this[_0x2a90('0x11')][_0x1302b9[_0x2a90('0x69')]][_0x2a90('0x57')]=_['toNumber'](_0x1302b9[_0x2a90('0x57')]);this[_0x2a90('0x11')][_0x1302b9[_0x2a90('0x69')]]['talking']=_0x4f4dc6>0x0?_0x4f4dc6:0x0;this[_0x2a90('0x11')][_0x1302b9[_0x2a90('0x69')]][_0x2a90('0x70')]=this[_0x2a90('0x11')][_0x1302b9['queue']][_0x2a90('0x70')]>_['toNumber'](_0x1302b9[_0x2a90('0x6f')])?_[_0x2a90('0x6e')](_0x1302b9[_0x2a90('0x6f')]):this[_0x2a90('0x11')][_0x1302b9[_0x2a90('0x69')]][_0x2a90('0x70')];this['emitVoiceQueueSummary'](this[_0x2a90('0x11')][_0x1302b9[_0x2a90('0x69')]],_0x2a90('0x14'));}logger[_0x2a90('0x45')](_0x2a90('0x72'),util[_0x2a90('0x3d')](this[_0x2a90('0x11')][_0x1302b9[_0x2a90('0x69')]],{'showHidden':![],'depth':null}));ami[_0x2a90('0x49')]('custom:queuesummary',this[_0x2a90('0x11')][_0x1302b9[_0x2a90('0x69')]]);}}}catch(_0x3f6580){logger['error'](_0x2a90('0x68'),util[_0x2a90('0x3d')](_0x3f6580,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x2a90('0xb')][_0x2a90('0x73')]=function(_0x1fd54a){logger['debug'](_0x2a90('0x74'),util['inspect'](_0x1fd54a,{'showHidden':![],'depth':null}));this['flagQueueSummary']=!![];};VoiceQueueReport[_0x2a90('0xb')]['syncQueueCallerJoin']=function(_0x49dcda){try{if(this[_0x2a90('0x64')](_0x49dcda)){logger['debug'](_0x2a90('0x75'),_0x49dcda[_0x2a90('0x48')],util['inspect'](_0x49dcda,{'showHidden':![],'depth':null}));if(_['isUndefined'](this[_0x2a90('0xe')][_0x49dcda['uniqueid']]))this['queueReports'][_0x49dcda[_0x2a90('0x48')]]=[];if(_[_0x2a90('0x65')](this[_0x2a90('0x10')][_0x49dcda[_0x2a90('0x48')]]))this['channels'][_0x49dcda['uniqueid']]={};var _0x370144=new QueueReport();_0x370144[_0x2a90('0x4c')]=_0x49dcda[_0x2a90('0x69')];_0x370144[_0x2a90('0x53')]=this[_0x2a90('0x11')][_0x370144[_0x2a90('0x4c')]]&&this[_0x2a90('0x11')][_0x370144[_0x2a90('0x4c')]][_0x2a90('0x53')]?this[_0x2a90('0x11')][_0x370144[_0x2a90('0x4c')]][_0x2a90('0x53')]||'inbound':_0x2a90('0x54');_0x370144['queue']=_0x49dcda[_0x2a90('0x69')];_0x370144['queuecallerjoinAt']=moment()[_0x2a90('0x4a')]('YYYY-MM-DD\x20HH:mm:ss');_0x370144['position']=_0x49dcda[_0x2a90('0x76')];_0x370144[_0x2a90('0x77')]=_0x49dcda[_0x2a90('0x77')];_0x370144[_0x2a90('0x48')]=_0x49dcda['uniqueid'];_0x370144['routealias']=this[_0x2a90('0x10')][_0x49dcda[_0x2a90('0x48')]][_0x2a90('0x78')];logger[_0x2a90('0x6a')](_0x2a90('0x79'),_0x370144[_0x2a90('0x4c')],_0x370144[_0x2a90('0x53')]);_[_0x2a90('0x7a')](_0x370144,_[_0x2a90('0x7b')](_0x49dcda,_[_0x2a90('0x7c')](_0x370144)));this[_0x2a90('0xe')][_0x49dcda[_0x2a90('0x48')]]['push'](_0x370144);this[_0x2a90('0x10')][_0x49dcda[_0x2a90('0x48')]]=_0x370144;this[_0x2a90('0x44')](_0x370144,_0x2a90('0x17'));}}catch(_0x3729d2){logger[_0x2a90('0x40')](_0x2a90('0x75'),_0x49dcda[_0x2a90('0x48')],util['inspect'](_0x3729d2,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x2a90('0xb')][_0x2a90('0x1a')]=function(_0x47abdd){try{if(this[_0x2a90('0x64')](_0x47abdd)){logger[_0x2a90('0x45')](_0x2a90('0x7d'),_0x47abdd[_0x2a90('0x48')],util[_0x2a90('0x3d')](_0x47abdd,{'showHidden':![],'depth':null}));if(this[_0x2a90('0xe')][_0x47abdd['uniqueid']]){var _0x45ea35=_[_0x2a90('0x7e')](this[_0x2a90('0xe')][_0x47abdd[_0x2a90('0x48')]]);_0x45ea35[_0x2a90('0x7f')]=![];_0x45ea35[_0x2a90('0x80')]=null;_0x45ea35[_0x2a90('0x81')]=_0x47abdd[_0x2a90('0x81')];_0x45ea35['originalposition']=_0x47abdd[_0x2a90('0x82')];_0x45ea35[_0x2a90('0x19')]=!![];_0x45ea35[_0x2a90('0x83')]=moment()[_0x2a90('0x4a')](_0x2a90('0x84'));_0x45ea35[_0x2a90('0x85')]='ABANDONED';_0x45ea35[_0x2a90('0x86')]=null;logger[_0x2a90('0x6a')](_0x2a90('0x87'),_0x45ea35['name'],_0x45ea35[_0x2a90('0x53')]);this[_0x2a90('0x10')][_0x47abdd[_0x2a90('0x48')]]=_0x45ea35;this['emitVoiceQueueChannelRemove'](_0x45ea35,'queuecallerabandon');}}}catch(_0x32f443){logger[_0x2a90('0x40')]('[%s][voiceQueueReport][queuecallerabandon]',_0x47abdd[_0x2a90('0x48')],util[_0x2a90('0x3d')](_0x32f443,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x2a90('0x1c')]=function(_0x3bfeed){try{if(this['isNotNull'](_0x3bfeed)){logger[_0x2a90('0x45')](_0x2a90('0x88'),_0x3bfeed['uniqueid'],util['inspect'](_0x3bfeed,{'showHidden':![],'depth':null}));if(this[_0x2a90('0xe')][_0x3bfeed[_0x2a90('0x48')]]){var _0x184263=_[_0x2a90('0x7e')](this[_0x2a90('0xe')][_0x3bfeed[_0x2a90('0x48')]]);_0x184263[_0x2a90('0x89')]=moment()[_0x2a90('0x4a')](_0x2a90('0x84'));_0x184263[_0x2a90('0x8a')]=_0x3bfeed[_0x2a90('0x8a')];_0x184263['connectedlinename']=_0x3bfeed[_0x2a90('0x8b')];logger[_0x2a90('0x6a')](_0x2a90('0x8c'),_0x184263['name'],_0x184263[_0x2a90('0x53')],_0x3bfeed[_0x2a90('0x8a')],_0x3bfeed[_0x2a90('0x8b')]);this['channels'][_0x3bfeed[_0x2a90('0x48')]]=_0x184263;this[_0x2a90('0x44')](_0x184263,_0x2a90('0x1b'));}}}catch(_0x123c72){logger[_0x2a90('0x40')](_0x2a90('0x88'),_0x3bfeed[_0x2a90('0x48')],util['inspect'](_0x123c72,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x2a90('0x1f')]=function(_0x58d256){try{if(this[_0x2a90('0x64')](_0x58d256)){logger[_0x2a90('0x45')]('[%s][voiceQueueReport][agentconnect]',_0x58d256[_0x2a90('0x48')],util[_0x2a90('0x3d')](_0x58d256,{'showHidden':![],'depth':null}));if(this[_0x2a90('0xe')][_0x58d256[_0x2a90('0x48')]]){var _0x90338c=_[_0x2a90('0x7e')](this[_0x2a90('0xe')][_0x58d256[_0x2a90('0x48')]]);_0x90338c[_0x2a90('0x7f')]=!![];_0x90338c['queuecallerexitreason']='COMPLETEDBYAGENT';logger[_0x2a90('0x6a')](_0x2a90('0x8d'),_0x90338c[_0x2a90('0x4c')],_0x90338c[_0x2a90('0x53')]);}}}catch(_0x43bf9a){logger[_0x2a90('0x40')](_0x2a90('0x8e'),_0x58d256[_0x2a90('0x48')],util[_0x2a90('0x3d')](_0x43bf9a,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x2a90('0xb')][_0x2a90('0x1e')]=function(_0xa8c5ef){try{if(this[_0x2a90('0x64')](_0xa8c5ef)){logger[_0x2a90('0x45')](_0x2a90('0x8f'),_0xa8c5ef[_0x2a90('0x48')],util[_0x2a90('0x3d')](_0xa8c5ef,{'showHidden':![],'depth':null}));if(this['queueReports'][_0xa8c5ef[_0x2a90('0x48')]]){var _0x41d882=_[_0x2a90('0x7e')](this[_0x2a90('0xe')][_0xa8c5ef['uniqueid']]);_0x41d882[_0x2a90('0x19')]=![];_0x41d882[_0x2a90('0x83')]=null;_0x41d882[_0x2a90('0x90')]=!![];_0x41d882['lastAssignedTo']=_0xa8c5ef[_0x2a90('0x91')];_0x41d882[_0x2a90('0x81')]=_0xa8c5ef[_0x2a90('0x81')];_0x41d882[_0x2a90('0x7f')]=!![];_0x41d882[_0x2a90('0x92')]=![];_0x41d882['queuecallerexitAt']=null;if(!_0x41d882['transfer']){if(_0xa8c5ef[_0x2a90('0x93')]==_0x2a90('0x94')){_0x41d882['queuecallerexitreason']=_0x2a90('0x95');logger[_0x2a90('0x6a')](_0x2a90('0x96'),_0x41d882[_0x2a90('0x4c')],_0x41d882[_0x2a90('0x53')]);}else{if(_[_0x2a90('0x97')](_0xa8c5ef[_0x2a90('0x98')][_0x2a90('0x99')](),_0x2a90('0x9a'))){if(this[_0x2a90('0xe')][_0xa8c5ef['linkedid']]){var _0x23f5f7=_[_0x2a90('0x7e')](this[_0x2a90('0xe')][_0xa8c5ef[_0x2a90('0x9b')]]);_0x23f5f7[_0x2a90('0x7f')]=![];_0x23f5f7[_0x2a90('0x92')]=!![];_0x23f5f7[_0x2a90('0x9c')]=moment(_0x41d882[_0x2a90('0x9d')])[_0x2a90('0x9e')](_0xa8c5ef[_0x2a90('0x81')],'seconds')[_0x2a90('0x4a')](_0x2a90('0x84'));_0x23f5f7[_0x2a90('0x85')]='FORWARDTRANSFER';_0x23f5f7[_0x2a90('0x94')]=!![];_0x23f5f7[_0x2a90('0x9f')]=_0x2a90('0xa0');_0x23f5f7[_0x2a90('0xa1')]=_0xa8c5ef[_0x2a90('0xa2')];_0x23f5f7['transferuniqueid']=_0xa8c5ef['uniqueid'];logger['info'](_0x2a90('0xa3'),_0x23f5f7[_0x2a90('0x4c')],_0x23f5f7[_0x2a90('0x53')]);var _0x1889ce=this[_0x2a90('0xe')][_0xa8c5ef[_0x2a90('0x9b')]];this[_0x2a90('0xe')][_0xa8c5ef[_0x2a90('0x9b')]]=this['queueReports'][_0xa8c5ef[_0x2a90('0x48')]];this[_0x2a90('0xe')][_0xa8c5ef[_0x2a90('0x48')]]=_0x1889ce;}}else{_0x41d882[_0x2a90('0x85')]=_0x2a90('0xa4')+_0xa8c5ef[_0x2a90('0x93')][_0x2a90('0xa5')]();logger[_0x2a90('0x6a')](_0x2a90('0xa6'),_0x41d882['name'],_0x41d882[_0x2a90('0x53')],_0x41d882[_0x2a90('0x85')]);}}}this[_0x2a90('0x10')][_0xa8c5ef[_0x2a90('0x48')]]=_0x41d882;this[_0x2a90('0x42')](_0x41d882,_0x2a90('0x1d'));}}}catch(_0x548643){logger[_0x2a90('0x40')](_0x2a90('0x8f'),_0xa8c5ef[_0x2a90('0x48')],util[_0x2a90('0x3d')](_0x548643,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x2a90('0xb')]['syncVarSet']=function(_0x101477){try{if(this[_0x2a90('0x64')](_0x101477)){logger[_0x2a90('0x45')](_0x2a90('0xa7'),_0x101477['uniqueid'],util[_0x2a90('0x3d')](_0x101477,{'showHidden':![],'depth':null}));this[_0x2a90('0xa8')](_0x101477[_0x2a90('0x48')],_[_0x2a90('0x7c')](_0x101477['variable'])[0x0],_0x101477['value']);if(this[_0x2a90('0xe')][_0x101477['uniqueid']]){var _0x222d8d=_['last'](this['queueReports'][_0x101477[_0x2a90('0x48')]]);if(_0x222d8d){if(this['isNotNull'](_0x101477[_0x2a90('0xa9')])&&this[_0x2a90('0x64')](_0x101477[_0x2a90('0xa9')][_0x2a90('0xaa')])){switch(_0x101477[_0x2a90('0xab')]){case _0x2a90('0xac'):_0x222d8d[_0x2a90('0x92')]=![];_0x222d8d[_0x2a90('0x9c')]=null;break;case _0x2a90('0xad'):_0x222d8d[_0x2a90('0xae')]='timeout';_0x222d8d['queuecallerexit']=!![];_0x222d8d[_0x2a90('0x9c')]=moment()[_0x2a90('0x4a')](_0x2a90('0x84'));_0x222d8d[_0x2a90('0x89')]=moment()[_0x2a90('0x4a')]('YYYY-MM-DD\x20HH:mm:ss');logger['debug'](_0x2a90('0xaf'),_0x101477[_0x2a90('0x48')],util[_0x2a90('0x3d')](_0x222d8d,{'showHidden':![],'depth':null}));ami[_0x2a90('0x49')](_0x2a90('0xb0'),_0x222d8d);break;default:_0x222d8d[_0x2a90('0x92')]=!![];_0x222d8d[_0x2a90('0x9c')]=moment()[_0x2a90('0x4a')]('YYYY-MM-DD\x20HH:mm:ss');_0x222d8d[_0x2a90('0x89')]=moment()[_0x2a90('0x4a')](_0x2a90('0x84'));}_0x222d8d['queuecallerabandon']=![];_0x222d8d[_0x2a90('0x83')]=null;_0x222d8d[_0x2a90('0x85')]=_0x101477[_0x2a90('0xab')];this['channels'][_0x101477[_0x2a90('0x48')]]=_0x222d8d;this['emitVoiceQueueChannelRemove'](_0x222d8d,_0x2a90('0x20'));}else if(this['isNotNull'](_0x101477[_0x2a90('0xa9')])&&this[_0x2a90('0x64')](_0x101477[_0x2a90('0xa9')][_0x2a90('0xb1')])){if(!_0x222d8d[_0x2a90('0x19')]){_0x222d8d[_0x2a90('0x92')]=!![];_0x222d8d[_0x2a90('0x9c')]=moment()[_0x2a90('0x4a')](_0x2a90('0x84'));_0x222d8d[_0x2a90('0x85')]='EXITWITHKEY';_0x222d8d['queuecallerleaveAt']=moment()[_0x2a90('0x4a')](_0x2a90('0x84'));this['channels'][_0x101477[_0x2a90('0x48')]]=_0x222d8d;}}logger['info']('[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s',_0x101477[_0x2a90('0x48')],_0x222d8d[_0x2a90('0x4c')],_0x222d8d[_0x2a90('0x53')],_[_0x2a90('0x7c')](_0x101477[_0x2a90('0xa9')])[0x0],_0x101477[_0x2a90('0xab')]);_0x222d8d['variables']=this['variables'][_0x101477[_0x2a90('0x48')]];}}}}catch(_0x59fec5){logger[_0x2a90('0x40')](_0x2a90('0xa7'),_0x101477[_0x2a90('0x48')],util[_0x2a90('0x3d')](_0x59fec5,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x2a90('0xb')][_0x2a90('0xa8')]=function(_0x775576,_0x5d46d4,_0xc4b461){var _0x1e89c9=[_0x2a90('0xb2'),_0x2a90('0xb3'),_0x2a90('0xb4'),'rtpaudioqosjitterbridged',_0x2a90('0xb5'),'rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged',_0x2a90('0xb6'),_0x2a90('0xb7'),_0x2a90('0xb8'),'bridgepvtcallid',_0x2a90('0xb9'),_0x2a90('0xba'),'memberinterface',_0x2a90('0xbb'),'membername',_0x2a90('0xbc'),'memberrealtime'];if(!_[_0x2a90('0xbd')](_0x5d46d4)&&!_[_0x2a90('0xbe')](_0x1e89c9,_0x5d46d4)){if(_[_0x2a90('0x65')](this[_0x2a90('0x3f')][_0x775576])){this[_0x2a90('0x3f')][_0x775576]={};}this[_0x2a90('0x3f')][_0x775576][_0x5d46d4]=_0xc4b461;}};VoiceQueueReport[_0x2a90('0xb')]['syncHangup']=function(_0x1f8c31){try{if(this['isNotNull'](_0x1f8c31)){logger[_0x2a90('0x45')](_0x2a90('0xbf'),_0x1f8c31[_0x2a90('0x48')],util[_0x2a90('0x3d')](_0x1f8c31,{'showHidden':![],'depth':null}));if(this[_0x2a90('0xe')][_0x1f8c31[_0x2a90('0x48')]]){for(var _0x10cf34=0x0,_0x2c765c={};_0x10cf34<this['queueReports'][_0x1f8c31['uniqueid']][_0x2a90('0xc0')];_0x10cf34+=0x1){_0x2c765c=this[_0x2a90('0xe')][_0x1f8c31[_0x2a90('0x48')]][_0x10cf34];if(this[_0x2a90('0x11')][_0x2c765c[_0x2a90('0x69')]]){if(_0x2c765c[_0x2a90('0x92')]&&_0x2c765c[_0x2a90('0x94')]!=!![]){this[_0x2a90('0x11')][_0x2c765c[_0x2a90('0x69')]]['unmanaged']+=0x1;}if(_0x2c765c['queuecallerabandon']){this['voiceQueues'][_0x2c765c[_0x2a90('0x69')]][_0x2a90('0x5f')]+=0x1;}this[_0x2a90('0x11')][_0x2c765c['queue']]['sumHoldTime']+=moment(_0x2c765c['queuecallerleaveAt'])[_0x2a90('0xc1')](_0x2c765c['queuecallerjoinAt'],_0x2a90('0xc2'))||0x0;if(_0x10cf34===this[_0x2a90('0xe')][_0x1f8c31[_0x2a90('0x48')]][_0x2a90('0xc0')]-0x1){this[_0x2a90('0x11')][_0x2c765c[_0x2a90('0x69')]][_0x2a90('0x5b')]+=moment()[_0x2a90('0xc3')](0x0)['diff'](_0x2c765c[_0x2a90('0x9d')],_0x2a90('0xc2'));this[_0x2a90('0x11')][_0x2c765c['queue']][_0x2a90('0x5d')]+=0x1;if(_0x2c765c[_0x2a90('0x7f')]){this[_0x2a90('0x11')][_0x2c765c[_0x2a90('0x69')]][_0x2a90('0x56')]+=0x1;this[_0x2a90('0x11')][_0x2c765c[_0x2a90('0x69')]][_0x2a90('0x5a')]+=moment()['milliseconds'](0x0)['diff'](_0x2c765c[_0x2a90('0x89')],_0x2a90('0xc2'));_0x2c765c[_0x2a90('0x80')]=moment()[_0x2a90('0x4a')](_0x2a90('0x84'));_0x2c765c['queuecallerexit']=![];_0x2c765c[_0x2a90('0x9c')]=null;}if(_0x2c765c[_0x2a90('0x92')]&&_0x2c765c['transfer']!=!![]){_0x2c765c[_0x2a90('0xae')]=_0x2a90('0x5e');logger[_0x2a90('0x45')](_0x2a90('0xc4'),_0x1f8c31[_0x2a90('0x48')],util[_0x2a90('0x3d')](_0x2c765c,{'showHidden':![],'depth':null}));ami[_0x2a90('0x49')](_0x2a90('0xc5'),_0x2c765c);}if(_0x2c765c[_0x2a90('0x19')]){_0x2c765c['lastevent']=_0x2a90('0x5f');logger[_0x2a90('0x45')](_0x2a90('0xc6'),_0x1f8c31[_0x2a90('0x48')],util[_0x2a90('0x3d')](_0x2c765c,{'showHidden':![],'depth':null}));ami[_0x2a90('0x49')](_0x2a90('0xc7'),_0x2c765c);}}else{this[_0x2a90('0x11')][_0x2c765c[_0x2a90('0x69')]][_0x2a90('0x5b')]+=this[_0x2a90('0x11')][_0x2c765c['queue']]['sumHoldTime'];}logger[_0x2a90('0x6a')]('[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s',_0x1f8c31[_0x2a90('0x48')],_0x2c765c[_0x2a90('0x4c')],_0x2c765c[_0x2a90('0x53')],_0x1f8c31[_0x2a90('0xc8')]);this[_0x2a90('0x10')][_0x1f8c31[_0x2a90('0x48')]]=_0x2c765c;this[_0x2a90('0x42')](_0x2c765c,_0x2a90('0x21'));this[_0x2a90('0x52')](this['voiceQueues'][_0x2c765c[_0x2a90('0x69')]],_0x2a90('0x21'));}}logger['debug'](_0x2a90('0xc9'),_0x1f8c31[_0x2a90('0x48')],util[_0x2a90('0x3d')](this[_0x2a90('0xe')][_0x1f8c31[_0x2a90('0x48')]],{'showHidden':![],'depth':null}));ami[_0x2a90('0x49')](_0x2a90('0xca'),this[_0x2a90('0xe')][_0x1f8c31['uniqueid']]);delete this['queueReports'][_0x1f8c31['uniqueid']];delete this[_0x2a90('0x10')][_0x1f8c31['uniqueid']];}if(this['variables'][_0x1f8c31[_0x2a90('0x48')]]){delete this['variables'][_0x1f8c31['uniqueid']];}}}catch(_0x1bba95){logger[_0x2a90('0x40')](_0x2a90('0xbf'),_0x1f8c31['uniqueid'],util[_0x2a90('0x3d')](_0x1bba95,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x2a90('0xb')][_0x2a90('0xcb')]=function(_0x27e9d9){try{if(this['isNotNull'](_0x27e9d9)){logger[_0x2a90('0x45')](_0x2a90('0xcc'),_0x27e9d9[_0x2a90('0x48')],util[_0x2a90('0x3d')](_0x27e9d9,{'showHidden':![],'depth':null}));var _0x34dc6b;if(this[_0x2a90('0xe')][_0x27e9d9[_0x2a90('0xcd')]]){_0x34dc6b=_[_0x2a90('0x7e')](this['queueReports'][_0x27e9d9[_0x2a90('0xcd')]]);_0x34dc6b['transferexten']=_0x27e9d9[_0x2a90('0xce')];_0x34dc6b['transferuniqueid']=_0x27e9d9[_0x2a90('0xcf')];_0x34dc6b[_0x2a90('0x85')]=_0x2a90('0xd0');_0x34dc6b[_0x2a90('0x94')]=!![];_0x34dc6b[_0x2a90('0x9f')]=_0x2a90('0xd1');if(this[_0x2a90('0xe')][_0x27e9d9[_0x2a90('0xcf')]]){var _0x1b163b=this[_0x2a90('0xe')][_0x27e9d9[_0x2a90('0xcf')]];this[_0x2a90('0xe')][_0x27e9d9[_0x2a90('0xcf')]]=this[_0x2a90('0xe')][_0x27e9d9['transfereeuniqueid']];this[_0x2a90('0xe')][_0x27e9d9[_0x2a90('0xcd')]]=_0x1b163b;var _0x4c21a3=_['last'](this['queueReports'][_0x27e9d9[_0x2a90('0xcd')]]);_0x4c21a3[_0x2a90('0x34')]=!![];}logger[_0x2a90('0x6a')](_0x2a90('0xd2'),_0x27e9d9[_0x2a90('0x48')],_0x34dc6b[_0x2a90('0x4c')],_0x34dc6b[_0x2a90('0x53')],_0x34dc6b[_0x2a90('0xa1')],_0x34dc6b[_0x2a90('0xd3')]);}else if(this['queueReports'][_0x27e9d9[_0x2a90('0xd4')]]){_0x34dc6b=_['last'](this['queueReports'][_0x27e9d9['transfertargetuniqueid']]);_0x34dc6b['transferexten']=_0x27e9d9[_0x2a90('0xd5')];_0x34dc6b[_0x2a90('0xd3')]=_0x27e9d9['origtransfereruniqueid'];_0x34dc6b[_0x2a90('0x85')]=_0x2a90('0xd0');_0x34dc6b['transfer']=!![];_0x34dc6b[_0x2a90('0x9f')]=_0x2a90('0xd1');if(this['queueReports'][_0x27e9d9[_0x2a90('0xd6')]]){var _0x1b163b=this[_0x2a90('0xe')][_0x27e9d9[_0x2a90('0xd6')]];this[_0x2a90('0xe')][_0x27e9d9[_0x2a90('0xd6')]]=this[_0x2a90('0xe')][_0x27e9d9[_0x2a90('0xd4')]];this[_0x2a90('0xe')][_0x27e9d9[_0x2a90('0xd4')]]=_0x1b163b;var _0x4c21a3=_['last'](this[_0x2a90('0xe')][_0x27e9d9[_0x2a90('0xd4')]]);_0x4c21a3['switch']=!![];}logger[_0x2a90('0x6a')](_0x2a90('0xd2'),_0x27e9d9[_0x2a90('0x48')],_0x34dc6b[_0x2a90('0x4c')],_0x34dc6b[_0x2a90('0x53')],_0x34dc6b[_0x2a90('0xa1')],_0x34dc6b[_0x2a90('0xd3')]);}}}catch(_0x4ceb56){logger['error'](_0x2a90('0xcc'),_0x27e9d9['uniqueid'],util[_0x2a90('0x3d')](_0x4ceb56,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x2a90('0xb')][_0x2a90('0xd7')]=function(_0x4018a2){try{if(this[_0x2a90('0x64')](_0x4018a2)){logger[_0x2a90('0x45')](_0x2a90('0xd8'),_0x4018a2['uniqueid'],util['inspect'](_0x4018a2,{'showHidden':![],'depth':null}));if(this[_0x2a90('0xe')][_0x4018a2[_0x2a90('0xcd')]]){var _0x4fff8d=_[_0x2a90('0x7e')](this['queueReports'][_0x4018a2[_0x2a90('0xcd')]]);_0x4fff8d['queuecallerexitreason']=_0x2a90('0xd9');_0x4fff8d[_0x2a90('0x94')]=!![];_0x4fff8d['transfertype']=_0x2a90('0xda');_0x4fff8d['transferexten']=_0x4018a2[_0x2a90('0xdb')];_0x4fff8d[_0x2a90('0xd3')]=_0x4018a2[_0x2a90('0xcd')];logger[_0x2a90('0x6a')](_0x2a90('0xdc'),_0x4018a2['uniqueid'],_0x4fff8d[_0x2a90('0x4c')],_0x4fff8d[_0x2a90('0x53')],_0x4fff8d[_0x2a90('0xa1')],_0x4fff8d['transferuniqueid']);this['syncHangup']({'event':_0x2a90('0xdd'),'uniqueid':_0x4018a2[_0x2a90('0xcd')],'context':_0x4018a2['context'],'channel':_0x4018a2['transfererchannel']});}}}catch(_0x362d44){logger[_0x2a90('0x40')](_0x2a90('0xd8'),_0x4018a2['uniqueid'],util[_0x2a90('0x3d')](_0x362d44,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x2a90('0xb')][_0x2a90('0x28')]=function(_0x52f3b1){try{if(this[_0x2a90('0x64')](_0x52f3b1)){logger[_0x2a90('0x45')]('[%s][voiceQueueReport][musiconholdstart]',_0x52f3b1[_0x2a90('0x48')],util[_0x2a90('0x3d')](_0x52f3b1,{'showHidden':![],'depth':null}));if(this[_0x2a90('0xe')][_0x52f3b1['uniqueid']]){var _0x497267=_[_0x2a90('0x7e')](this['queueReports'][_0x52f3b1[_0x2a90('0x48')]]);if(!_[_0x2a90('0xbd')](_0x497267[_0x2a90('0x89')])){_0x497267[_0x2a90('0xde')]=moment()[_0x2a90('0x4a')](_0x2a90('0x84'));logger[_0x2a90('0x6a')]('[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s',_0x52f3b1[_0x2a90('0x48')],_0x497267[_0x2a90('0xde')]);}}}}catch(_0x49d50a){logger['error']('[%s][voiceQueueReport][musiconholdstart]',_0x52f3b1[_0x2a90('0x48')],util[_0x2a90('0x3d')](_0x49d50a,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncMusicOnHoldStop']=function(_0x2a424d){try{if(this[_0x2a90('0x64')](_0x2a424d)){logger[_0x2a90('0x45')]('[%s][voiceQueueReport][musiconholdstop]',_0x2a424d['uniqueid'],util[_0x2a90('0x3d')](_0x2a424d,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x2a424d[_0x2a90('0x48')]]){var _0x4fbed8=_[_0x2a90('0x7e')](this[_0x2a90('0xe')][_0x2a424d['uniqueid']]);if(!_['isNil'](_0x4fbed8[_0x2a90('0xde')])){_0x4fbed8[_0x2a90('0xdf')]+=moment()[_0x2a90('0xc3')](0x0)['diff'](_0x4fbed8['mohstarttime'],'seconds');logger[_0x2a90('0x6a')]('[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s',_0x2a424d['uniqueid'],_0x4fbed8[_0x2a90('0xdf')]);delete _0x4fbed8[_0x2a90('0xde')];}}}}catch(_0x32bd8f){logger['error'](_0x2a90('0xe0'),_0x2a424d[_0x2a90('0x48')],util[_0x2a90('0x3d')](_0x32bd8f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x2a90('0xb')]['syncNewExten']=function(_0x5c0658){try{if(this[_0x2a90('0x64')](_0x5c0658)){logger[_0x2a90('0x45')](_0x2a90('0xe1'),_0x5c0658['uniqueid'],util[_0x2a90('0x3d')](_0x5c0658,{'showHidden':![],'depth':null}));if(_0x5c0658[_0x2a90('0xe2')][_0x2a90('0x99')]()==='set'){_0x5c0658[_0x2a90('0xe3')]=_0x5c0658[_0x2a90('0xe4')]&&_0x5c0658['appdata'][_0x2a90('0x97')](_0x2a90('0xe5'))?_0x5c0658['appdata']:(_0x5c0658[_0x2a90('0xe4')]||_0x5c0658[_0x2a90('0xe3')])[_0x2a90('0x99')]();if(_[_0x2a90('0x97')](_0x5c0658[_0x2a90('0xe3')]['toLowerCase'](),_0x2a90('0xe6'))){logger['info'](_0x2a90('0xe7'),_0x5c0658['uniqueid'],_0x5c0658[_0x2a90('0xe2')],_0x5c0658[_0x2a90('0xe3')]);if(_[_0x2a90('0x65')](this[_0x2a90('0x10')][_0x5c0658[_0x2a90('0x48')]]))this[_0x2a90('0x10')][_0x5c0658[_0x2a90('0x48')]]={};var _0x33bb4c=_0x5c0658[_0x2a90('0xe3')]['split']('=');var _0x3bbbae=_0x33bb4c[0x0][_0x2a90('0x99')]()[_0x2a90('0xe8')](/cdr\((.*)\)/);if(_0x3bbbae)this['channels'][_0x5c0658['uniqueid']][_0x3bbbae[0x1]]=_0x33bb4c[0x1];}}}}catch(_0x8965e9){logger[_0x2a90('0x40')](_0x2a90('0xe9'),_0x5c0658[_0x2a90('0x48')],util['inspect'](_0x8965e9,{'showHidden':![],'depth':null}));}};module['exports']=VoiceQueueReport;
\ No newline at end of file
index abff206..c0a4ddd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f1c=['campaign','queue','Request','../client','createHistory'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x9f1c,0x152));var _0xc9f1=function(_0x102d0b,_0x17285f){_0x102d0b=_0x102d0b-0x0;var _0x6f965d=_0x9f1c[_0x102d0b];return _0x6f965d;};'use strict';var client=require(_0xc9f1('0x0'));exports[_0xc9f1('0x1')]=function(_0x21b99b){return function(){_0x21b99b[_0xc9f1('0x2')]=_0x21b99b[_0xc9f1('0x3')];return client[_0xc9f1('0x4')]('CreateReportAgentPreview',{'body':_0x21b99b,'log':'CreateReportAgentPreview'});};};
\ No newline at end of file
+var _0xf384=['Request','../client','campaign','queue'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xf384,0x1e9));var _0x4f38=function(_0x399ae2,_0x2bb46d){_0x399ae2=_0x399ae2-0x0;var _0x42d939=_0xf384[_0x399ae2];return _0x42d939;};'use strict';var client=require(_0x4f38('0x0'));exports['createHistory']=function(_0x18d174){return function(){_0x18d174[_0x4f38('0x1')]=_0x18d174[_0x4f38('0x2')];return client[_0x4f38('0x3')]('CreateReportAgentPreview',{'body':_0x18d174,'log':'CreateReportAgentPreview'});};};
\ No newline at end of file
index 43a8caf..c71e4f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30c0=['../client','create','Request','CreateAttachment'];(function(_0x4c5822,_0x3d4974){var _0x2e34a1=function(_0x182d8e){while(--_0x182d8e){_0x4c5822['push'](_0x4c5822['shift']());}};_0x2e34a1(++_0x3d4974);}(_0x30c0,0x168));var _0x030c=function(_0x1b2041,_0x2f1f10){_0x1b2041=_0x1b2041-0x0;var _0x3da786=_0x30c0[_0x1b2041];return _0x3da786;};'use strict';var client=require(_0x030c('0x0'));exports[_0x030c('0x1')]=function(_0x329a67){return client[_0x030c('0x2')](_0x030c('0x3'),{'body':_0x329a67,'log':'CreateAttachment'});};
\ No newline at end of file
+var _0x4e61=['create','CreateAttachment','../client'];(function(_0x5b24e8,_0x15b270){var _0x37640c=function(_0x2e2ef4){while(--_0x2e2ef4){_0x5b24e8['push'](_0x5b24e8['shift']());}};_0x37640c(++_0x15b270);}(_0x4e61,0x8c));var _0x14e6=function(_0x107844,_0x41926f){_0x107844=_0x107844-0x0;var _0x40c2b5=_0x4e61[_0x107844];return _0x40c2b5;};'use strict';var client=require(_0x14e6('0x0'));exports[_0x14e6('0x1')]=function(_0x67f4ce){return client['Request']('CreateAttachment',{'body':_0x67f4ce,'log':_0x14e6('0x2')});};
\ No newline at end of file
index ab8ba8e..7edc505 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialGlobalInterval','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialPrefix','Trunk','callerid','TrunkBackup','Interval','Intervals','SquareProject','../client','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName'];(function(_0x366174,_0xe39292){var _0x449df5=function(_0x497dd9){while(--_0x497dd9){_0x366174['push'](_0x366174['shift']());}};_0x449df5(++_0xe39292);}(_0x326f,0xd1));var _0xf326=function(_0x5c52c2,_0x54b8b6){_0x5c52c2=_0x5c52c2-0x0;var _0x42317a=_0x326f[_0x5c52c2];return _0x42317a;};'use strict';var client=require(_0xf326('0x0'));exports['getCampaigns']=function(){return function(){return client['Request'](_0xf326('0x1'),{'options':{'raw':![],'attributes':['id',_0xf326('0x2'),_0xf326('0x3'),_0xf326('0x4'),_0xf326('0x5'),_0xf326('0x6'),_0xf326('0x7'),_0xf326('0x8'),_0xf326('0x9'),_0xf326('0xa'),'dialBusyMaxRetry',_0xf326('0xb'),_0xf326('0xc'),_0xf326('0xd'),_0xf326('0xe'),'dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry',_0xf326('0xf'),_0xf326('0x10'),_0xf326('0x11'),_0xf326('0x12'),_0xf326('0x13'),'dialAgentRejectMaxRetry',_0xf326('0x14'),'dialTimezone',_0xf326('0x15'),'dialAMDActive',_0xf326('0x16'),'dialAMDGreeting',_0xf326('0x17'),_0xf326('0x18'),'dialAMDMinWordLength',_0xf326('0x19'),_0xf326('0x1a'),_0xf326('0x1b'),_0xf326('0x1c'),'dialOrderByScheduledAt',_0xf326('0x1d'),'dialRandomLastDigitCallerIdNumber','dialCutDigit'],'include':[{'model':_0xf326('0x1e'),'as':_0xf326('0x1e'),'attributes':['id',_0xf326('0x2'),_0xf326('0x1f'),_0xf326('0x4')]},{'model':_0xf326('0x1e'),'as':_0xf326('0x20'),'attributes':['id',_0xf326('0x2'),'callerid',_0xf326('0x4')]},{'model':_0xf326('0x21'),'as':_0xf326('0x21'),'attributes':['id',_0xf326('0x2')],'include':[{'model':_0xf326('0x21'),'as':_0xf326('0x22'),'attributes':['id','name','interval']}]},{'model':'SquareProject','as':_0xf326('0x23'),'attributes':['id',_0xf326('0x2')]}]},'log':'getCampaign'});};};
\ No newline at end of file
+var _0x1261=['Interval','interval','SquareProject','getCampaign','getCampaigns','Request','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','TrunkBackup','callerid'];(function(_0x326bc5,_0x21b4de){var _0x591020=function(_0xd8e08a){while(--_0xd8e08a){_0x326bc5['push'](_0x326bc5['shift']());}};_0x591020(++_0x21b4de);}(_0x1261,0x144));var _0x1126=function(_0x4cfd4a,_0x340a41){_0x4cfd4a=_0x4cfd4a-0x0;var _0x42a03c=_0x1261[_0x4cfd4a];return _0x42a03c;};'use strict';var client=require('../client');exports[_0x1126('0x0')]=function(){return function(){return client[_0x1126('0x1')](_0x1126('0x2'),{'options':{'raw':![],'attributes':['id',_0x1126('0x3'),_0x1126('0x4'),_0x1126('0x5'),_0x1126('0x6'),_0x1126('0x7'),_0x1126('0x8'),_0x1126('0x9'),'dialCongestionMaxRetry','dialCongestionRetryFrequency',_0x1126('0xa'),_0x1126('0xb'),'dialNoAnswerMaxRetry',_0x1126('0xc'),_0x1126('0xd'),_0x1126('0xe'),_0x1126('0xf'),_0x1126('0x10'),'dialDropRetryFrequency',_0x1126('0x11'),_0x1126('0x12'),_0x1126('0x13'),'dialMachineRetryFrequency',_0x1126('0x14'),'dialAgentRejectRetryFrequency','dialTimezone',_0x1126('0x15'),'dialAMDActive',_0x1126('0x16'),_0x1126('0x17'),_0x1126('0x18'),_0x1126('0x19'),_0x1126('0x1a'),_0x1126('0x1b'),_0x1126('0x1c'),_0x1126('0x1d'),_0x1126('0x1e'),'dialOrderByScheduledAt','dialPrefix',_0x1126('0x1f'),_0x1126('0x20')],'include':[{'model':_0x1126('0x21'),'as':'Trunk','attributes':['id',_0x1126('0x3'),'callerid',_0x1126('0x5')]},{'model':_0x1126('0x21'),'as':_0x1126('0x22'),'attributes':['id','name',_0x1126('0x23'),_0x1126('0x5')]},{'model':'Interval','as':'Interval','attributes':['id',_0x1126('0x3')],'include':[{'model':_0x1126('0x24'),'as':'Intervals','attributes':['id','name',_0x1126('0x25')]}]},{'model':'SquareProject','as':_0x1126('0x26'),'attributes':['id',_0x1126('0x3')]}]},'log':_0x1126('0x27')});};};
\ No newline at end of file
index 16d021c..f30f757 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd3e=['../client','createContact','Request','CreateCmContact','getContacts','GetCmContact'];(function(_0x18be08,_0x1329bc){var _0x5cdf81=function(_0x5ced79){while(--_0x5ced79){_0x18be08['push'](_0x18be08['shift']());}};_0x5cdf81(++_0x1329bc);}(_0xdd3e,0x78));var _0xedd3=function(_0x392496,_0x558252){_0x392496=_0x392496-0x0;var _0x14aad3=_0xdd3e[_0x392496];return _0x14aad3;};'use strict';var client=require(_0xedd3('0x0'));exports[_0xedd3('0x1')]=function(_0x55ede0){return function(){return client[_0xedd3('0x2')](_0xedd3('0x3'),{'body':_0x55ede0,'log':_0xedd3('0x3')});};};exports[_0xedd3('0x4')]=function(_0x3fece0){return function(){return client[_0xedd3('0x2')](_0xedd3('0x5'),{'options':_0x3fece0,'log':_0xedd3('0x5')});};};
\ No newline at end of file
+var _0x797a=['GetCmContact','../client','createContact','Request','CreateCmContact','getContacts'];(function(_0x1f9bdb,_0x4d8aaf){var _0x508972=function(_0x3b21be){while(--_0x3b21be){_0x1f9bdb['push'](_0x1f9bdb['shift']());}};_0x508972(++_0x4d8aaf);}(_0x797a,0x115));var _0xa797=function(_0xec0296,_0x4656ed){_0xec0296=_0xec0296-0x0;var _0x1b287f=_0x797a[_0xec0296];return _0x1b287f;};'use strict';var client=require(_0xa797('0x0'));exports[_0xa797('0x1')]=function(_0x5136b4){return function(){return client[_0xa797('0x2')](_0xa797('0x3'),{'body':_0x5136b4,'log':'CreateCmContact'});};};exports[_0xa797('0x4')]=function(_0x13f8cb){return function(){return client[_0xa797('0x2')]('GetCmContact',{'options':_0x13f8cb,'log':_0xa797('0x5')});};};
\ No newline at end of file
index dc0f2c9..d55ffbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6736=['countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','User','name','VoiceQueue','getCmHopper','unlockContact','getContactRecallMe','GetContactRecallMe','Agent','voicePause','db.CmHopper.UserId','moment','getContacts','Request','GetCmHopper','CmContact','Contact','updateContacts','UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','ListId','VoiceQueueId','rescheduleContact','destroyContact','DestroyCmHopper','getContactDialer','GetContactDialer','priority','DESC','scheduledat','ASC','getContactDialerIvr','moveContactManagedDialer','campaign','MoveContactManagedDialer','ContactId','CampaignId'];(function(_0x35da42,_0x5c2610){var _0x370035=function(_0x546db5){while(--_0x546db5){_0x35da42['push'](_0x35da42['shift']());}};_0x370035(++_0x5c2610);}(_0x6736,0x104));var _0x6673=function(_0x59db9e,_0x411550){_0x59db9e=_0x59db9e-0x0;var _0xa272ab=_0x6736[_0x59db9e];return _0xa272ab;};'use strict';var client=require('../client');var moment=require(_0x6673('0x0'));var _=require('lodash');exports[_0x6673('0x1')]=function(_0x35d31a,_0x34acc9){return function(){return client[_0x6673('0x2')](_0x6673('0x3'),{'options':{'where':{'VoiceQueueId':_0x35d31a},'include':[{'model':_0x6673('0x4'),'as':_0x6673('0x5')}],'limit':_0x34acc9,'raw':![]},'log':'getCmHopper'});};};exports[_0x6673('0x6')]=function(_0xf84297,_0x84538a,_0xabe622){return function(){return client[_0x6673('0x2')](_0x6673('0x7'),{'body':_0xf84297,'options':{'where':{'VoiceQueueId':_0x84538a,'scheduledat':{'$lte':moment()[_0x6673('0x8')](_0x6673('0x9'))}},'limit':_0xabe622},'log':_0x6673('0x7')});};};exports['rescheduleContact']=function(_0xe9f842){return function(){return client['Request'](_0x6673('0x7'),{'body':_0xe9f842,'options':{'where':{'ContactId':_0xe9f842['ContactId'],'ListId':_0xe9f842[_0x6673('0xa')],'VoiceQueueId':_0xe9f842[_0x6673('0xb')],'CampaignId':_0xe9f842['CampaignId']}},'log':_0x6673('0xc')});};};exports[_0x6673('0xd')]=function(_0x5d6ee1,_0x3c8872,_0x5b9c5f){return function(){return client['Request'](_0x6673('0xe'),{'options':{'where':{'VoiceQueueId':_0x5d6ee1,'ListId':_0x3c8872,'ContactId':_0x5b9c5f}},'log':_0x6673('0xe')});};};exports[_0x6673('0xf')]=function(_0x41a92d,_0x381b6d,_0x597410,_0x45fd21){return function(){return client[_0x6673('0x2')](_0x6673('0x10'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x41a92d,'active':![],'scheduledat':{'$lte':moment()[_0x6673('0x8')](_0x6673('0x9'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x381b6d}}]},'order':[[_0x6673('0x11'),_0x6673('0x12')],[_0x6673('0x13'),_0x45fd21],['id',_0x6673('0x14')]],'raw':!![],'limit':_0x597410},'log':_0x6673('0x10')});};};exports[_0x6673('0x15')]=function(_0x92c120,_0x3babf5,_0x264719){return function(){return client[_0x6673('0x2')](_0x6673('0x10'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x92c120,'active':![],'scheduledat':{'$lte':moment()[_0x6673('0x8')](_0x6673('0x9'))}},'include':[{'model':_0x6673('0x4'),'as':_0x6673('0x5')}],'order':[[_0x6673('0x11'),_0x6673('0x12')],['scheduledat',_0x264719],['id',_0x6673('0x14')]],'raw':!![],'limit':_0x3babf5},'log':'GetContactDialerIvr'});};};exports[_0x6673('0x16')]=function(_0x4982fc,_0x3a6a6a){return function(){_0x4982fc[_0x6673('0x17')]=_0x4982fc['queue'];return client[_0x6673('0x2')](_0x6673('0x18'),{'body':_0x4982fc,'options':{'where':{'ContactId':_0x4982fc[_0x6673('0x19')],'ListId':_0x4982fc[_0x6673('0xa')],'VoiceQueueId':_0x4982fc[_0x6673('0xb')],'CampaignId':_0x4982fc[_0x6673('0x1a')],'active':_0x3a6a6a?undefined:!![]}},'log':_0x6673('0x18')});};};exports[_0x6673('0x1b')]=function(_0x7c7aed){return function(){return client[_0x6673('0x2')](_0x6673('0x1c'),{'options':{'where':{'VoiceQueueId':_0x7c7aed['id']?_0x7c7aed['id']||null:null}},'log':_0x6673('0x1b')});};};exports[_0x6673('0x1d')]=function(_0x402e1d){return function(){return client[_0x6673('0x2')](_0x6673('0x1e'),{'options':{'where':{'id':_0x402e1d},'include':[{'model':_0x6673('0x4'),'as':'Contact'},{'model':_0x6673('0x1f'),'as':'Agent','attributes':['id',_0x6673('0x20')]},{'model':_0x6673('0x21'),'as':'Queue','attributes':['id','name']}],'raw':!![]},'log':_0x6673('0x22')});};};exports[_0x6673('0x23')]=function(_0x1eb7c0,_0x1191db,_0x400311){return function(){return client['Request'](_0x6673('0x7'),{'body':_0x1eb7c0,'options':{'where':{'id':_0x1191db},'limit':_0x400311},'log':'UpdateCmHopper'});};};exports[_0x6673('0x24')]=function(_0x24a77a,_0x2fcd51){return function(){return client[_0x6673('0x2')](_0x6673('0x25'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x24a77a,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x6673('0x8')](_0x6673('0x9'))},'UserId':{'$in':_0x2fcd51}},'order':[[_0x6673('0x11'),_0x6673('0x12')],[_0x6673('0x13'),_0x6673('0x12')],['id',_0x6673('0x14')]],'include':[{'model':_0x6673('0x4'),'as':_0x6673('0x5')},{'model':_0x6673('0x1f'),'as':_0x6673('0x26'),'attributes':['id','name',_0x6673('0x27')]}],'group':_0x6673('0x28'),'raw':!![]},'log':_0x6673('0x10')});};};
\ No newline at end of file
+var _0xc3e8=['GetContactDialer','priority','DESC','getContactDialerIvr','CmContact','scheduledat','moveContactManagedDialer','campaign','MoveContactManagedDialer','ContactId','VoiceQueueId','CountReScheduled','countReScheduled','getContactPreview','GetCmHopperPreview','User','VoiceQueue','Queue','name','getCmHopper','unlockContact','GetContactRecallMe','ASC','Agent','voicePause','db.CmHopper.UserId','moment','lodash','getContacts','Request','GetCmHopper','Contact','updateContacts','UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','CampaignId','rescheduleContact','destroyContact','DestroyCmHopper','getContactDialer'];(function(_0x2bb490,_0x3ea74d){var _0x1c3c6f=function(_0x5c7666){while(--_0x5c7666){_0x2bb490['push'](_0x2bb490['shift']());}};_0x1c3c6f(++_0x3ea74d);}(_0xc3e8,0x6c));var _0x8c3e=function(_0x3cccae,_0x518baf){_0x3cccae=_0x3cccae-0x0;var _0x528a33=_0xc3e8[_0x3cccae];return _0x528a33;};'use strict';var client=require('../client');var moment=require(_0x8c3e('0x0'));var _=require(_0x8c3e('0x1'));exports[_0x8c3e('0x2')]=function(_0x4a91bb,_0x471bca){return function(){return client[_0x8c3e('0x3')](_0x8c3e('0x4'),{'options':{'where':{'VoiceQueueId':_0x4a91bb},'include':[{'model':'CmContact','as':_0x8c3e('0x5')}],'limit':_0x471bca,'raw':![]},'log':'getCmHopper'});};};exports[_0x8c3e('0x6')]=function(_0x18fee1,_0x31983c,_0x593765){return function(){return client['Request'](_0x8c3e('0x7'),{'body':_0x18fee1,'options':{'where':{'VoiceQueueId':_0x31983c,'scheduledat':{'$lte':moment()[_0x8c3e('0x8')](_0x8c3e('0x9'))}},'limit':_0x593765},'log':'UpdateCmHopper'});};};exports['rescheduleContact']=function(_0x5ad048){return function(){return client[_0x8c3e('0x3')](_0x8c3e('0x7'),{'body':_0x5ad048,'options':{'where':{'ContactId':_0x5ad048['ContactId'],'ListId':_0x5ad048['ListId'],'VoiceQueueId':_0x5ad048['VoiceQueueId'],'CampaignId':_0x5ad048[_0x8c3e('0xa')]}},'log':_0x8c3e('0xb')});};};exports[_0x8c3e('0xc')]=function(_0xab25d5,_0x2f1d3d,_0xea99e7){return function(){return client['Request'](_0x8c3e('0xd'),{'options':{'where':{'VoiceQueueId':_0xab25d5,'ListId':_0x2f1d3d,'ContactId':_0xea99e7}},'log':_0x8c3e('0xd')});};};exports[_0x8c3e('0xe')]=function(_0x4589cc,_0x314c41,_0x1bc2c4,_0x52f046){return function(){return client[_0x8c3e('0x3')](_0x8c3e('0xf'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x4589cc,'active':![],'scheduledat':{'$lte':moment()['format'](_0x8c3e('0x9'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x314c41}}]},'order':[[_0x8c3e('0x10'),_0x8c3e('0x11')],['scheduledat',_0x52f046],['id','ASC']],'raw':!![],'limit':_0x1bc2c4},'log':_0x8c3e('0xf')});};};exports[_0x8c3e('0x12')]=function(_0x5b3aff,_0xb3c790,_0x21b1e0){return function(){return client['Request'](_0x8c3e('0xf'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x5b3aff,'active':![],'scheduledat':{'$lte':moment()[_0x8c3e('0x8')](_0x8c3e('0x9'))}},'include':[{'model':_0x8c3e('0x13'),'as':'Contact'}],'order':[['priority','DESC'],[_0x8c3e('0x14'),_0x21b1e0],['id','ASC']],'raw':!![],'limit':_0xb3c790},'log':'GetContactDialerIvr'});};};exports[_0x8c3e('0x15')]=function(_0x4d7a5d,_0x444bff){return function(){_0x4d7a5d[_0x8c3e('0x16')]=_0x4d7a5d['queue'];return client[_0x8c3e('0x3')](_0x8c3e('0x17'),{'body':_0x4d7a5d,'options':{'where':{'ContactId':_0x4d7a5d[_0x8c3e('0x18')],'ListId':_0x4d7a5d['ListId'],'VoiceQueueId':_0x4d7a5d[_0x8c3e('0x19')],'CampaignId':_0x4d7a5d[_0x8c3e('0xa')],'active':_0x444bff?undefined:!![]}},'log':'MoveContactManagedDialer'});};};exports['countReScheduled']=function(_0x2f46f0){return function(){return client['Request'](_0x8c3e('0x1a'),{'options':{'where':{'VoiceQueueId':_0x2f46f0['id']?_0x2f46f0['id']||null:null}},'log':_0x8c3e('0x1b')});};};exports[_0x8c3e('0x1c')]=function(_0x44ac78){return function(){return client['Request'](_0x8c3e('0x1d'),{'options':{'where':{'id':_0x44ac78},'include':[{'model':_0x8c3e('0x13'),'as':_0x8c3e('0x5')},{'model':_0x8c3e('0x1e'),'as':'Agent','attributes':['id','name']},{'model':_0x8c3e('0x1f'),'as':_0x8c3e('0x20'),'attributes':['id',_0x8c3e('0x21')]}],'raw':!![]},'log':_0x8c3e('0x22')});};};exports[_0x8c3e('0x23')]=function(_0x47b243,_0x482767,_0x508ff9){return function(){return client[_0x8c3e('0x3')](_0x8c3e('0x7'),{'body':_0x47b243,'options':{'where':{'id':_0x482767},'limit':_0x508ff9},'log':_0x8c3e('0x7')});};};exports['getContactRecallMe']=function(_0x408744,_0x5f2c0a){return function(){return client[_0x8c3e('0x3')](_0x8c3e('0x24'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x408744,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'UserId':{'$in':_0x5f2c0a}},'order':[[_0x8c3e('0x10'),_0x8c3e('0x11')],[_0x8c3e('0x14'),_0x8c3e('0x11')],['id',_0x8c3e('0x25')]],'include':[{'model':_0x8c3e('0x13'),'as':_0x8c3e('0x5')},{'model':_0x8c3e('0x1e'),'as':_0x8c3e('0x26'),'attributes':['id','name',_0x8c3e('0x27')]}],'group':_0x8c3e('0x28'),'raw':!![]},'log':_0x8c3e('0xf')});};};
\ No newline at end of file
index 5f25800..a574e9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c7c=['phone','GetCmHopperBlack','checkIsBlackListIvr','CampaignId','Contact','GetCmHopperBlackIvr','../client','checkIsBlackList','Request','VoiceQueueId'];(function(_0x11e05d,_0x3a4491){var _0x335588=function(_0x35ec3f){while(--_0x35ec3f){_0x11e05d['push'](_0x11e05d['shift']());}};_0x335588(++_0x3a4491);}(_0x1c7c,0x164));var _0xc1c7=function(_0x380275,_0x12b15a){_0x380275=_0x380275-0x0;var _0x371737=_0x1c7c[_0x380275];return _0x371737;};'use strict';var client=require(_0xc1c7('0x0'));exports[_0xc1c7('0x1')]=function(_0x38fc99){return function(){return client[_0xc1c7('0x2')]('GetCmHopperBlack',{'options':{'where':{'VoiceQueueId':_0x38fc99[_0xc1c7('0x3')],'phone':_0x38fc99['Contact'][_0xc1c7('0x4')]},'raw':![]},'log':_0xc1c7('0x5')});};};exports[_0xc1c7('0x6')]=function(_0x2a0383){return function(){return client[_0xc1c7('0x2')](_0xc1c7('0x5'),{'options':{'where':{'CampaignId':_0x2a0383[_0xc1c7('0x7')],'phone':_0x2a0383[_0xc1c7('0x8')][_0xc1c7('0x4')]},'raw':![]},'log':_0xc1c7('0x9')});};};
\ No newline at end of file
+var _0x0abf=['GetCmHopperBlackIvr','../client','Request','Contact','GetCmHopperBlack','checkIsBlackListIvr','CampaignId'];(function(_0x4591b0,_0x229146){var _0x19a134=function(_0x3ce899){while(--_0x3ce899){_0x4591b0['push'](_0x4591b0['shift']());}};_0x19a134(++_0x229146);}(_0x0abf,0xe8));var _0xf0ab=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0x0abf[_0x465028];return _0xb783d4;};'use strict';var client=require(_0xf0ab('0x0'));exports['checkIsBlackList']=function(_0x4698fb){return function(){return client[_0xf0ab('0x1')]('GetCmHopperBlack',{'options':{'where':{'VoiceQueueId':_0x4698fb['VoiceQueueId'],'phone':_0x4698fb[_0xf0ab('0x2')]['phone']},'raw':![]},'log':_0xf0ab('0x3')});};};exports[_0xf0ab('0x4')]=function(_0x2efe43){return function(){return client[_0xf0ab('0x1')](_0xf0ab('0x3'),{'options':{'where':{'CampaignId':_0x2efe43[_0xf0ab('0x5')],'phone':_0x2efe43[_0xf0ab('0x2')]['phone']},'raw':![]},'log':_0xf0ab('0x6')});};};
\ No newline at end of file
index ceb92d6..4a1d7ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94cb=['CreateCmHopperFinal','../client','campaign','queue'];(function(_0x21346e,_0x2b1aa8){var _0x59aaad=function(_0x114bf9){while(--_0x114bf9){_0x21346e['push'](_0x21346e['shift']());}};_0x59aaad(++_0x2b1aa8);}(_0x94cb,0x101));var _0xb94c=function(_0x5a5d81,_0x22dd7f){_0x5a5d81=_0x5a5d81-0x0;var _0x4a2548=_0x94cb[_0x5a5d81];return _0x4a2548;};'use strict';var client=require(_0xb94c('0x0'));exports['createContact']=function(_0x37b596){return function(){_0x37b596[_0xb94c('0x1')]=_0x37b596[_0xb94c('0x2')];return client['Request'](_0xb94c('0x3'),{'body':_0x37b596,'log':'CreateCmHopperFinal'});};};
\ No newline at end of file
+var _0xac2e=['createContact','queue','Request','CreateCmHopperFinal','../client'];(function(_0x20845e,_0x211e78){var _0x28cf2b=function(_0x31d613){while(--_0x31d613){_0x20845e['push'](_0x20845e['shift']());}};_0x28cf2b(++_0x211e78);}(_0xac2e,0x95));var _0xeac2=function(_0x5b3417,_0x367bdc){_0x5b3417=_0x5b3417-0x0;var _0x59f10a=_0xac2e[_0x5b3417];return _0x59f10a;};'use strict';var client=require(_0xeac2('0x0'));exports[_0xeac2('0x1')]=function(_0x4a9d22){return function(){_0x4a9d22['campaign']=_0x4a9d22[_0xeac2('0x2')];return client[_0xeac2('0x3')](_0xeac2('0x4'),{'body':_0x4a9d22,'log':'CreateCmHopperFinal'});};};
\ No newline at end of file
index 99a203c..b8a45a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed4d=['startOf','day','getCampaignHopperHistory','GetCampaignHopperHistory','ivr','../client','moment','createHistory','campaign','queue','CreateCmHopperHistory','avgHandleTime','Request','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory'];(function(_0xb806a1,_0x2cf4f1){var _0x4aac03=function(_0x5cfe3a){while(--_0x5cfe3a){_0xb806a1['push'](_0xb806a1['shift']());}};_0x4aac03(++_0x2cf4f1);}(_0xed4d,0x1d9));var _0xded4=function(_0x3c87f2,_0x52039c){_0x3c87f2=_0x3c87f2-0x0;var _0x2540ff=_0xed4d[_0x3c87f2];return _0x2540ff;};'use strict';var client=require(_0xded4('0x0'));var moment=require(_0xded4('0x1'));exports[_0xded4('0x2')]=function(_0x59c9e6){return function(){_0x59c9e6[_0xded4('0x3')]=_0x59c9e6[_0xded4('0x4')];return client['Request'](_0xded4('0x5'),{'body':_0x59c9e6,'log':_0xded4('0x5')});};};exports[_0xded4('0x6')]=function(_0x2697ad){return function(){return client[_0xded4('0x7')]('AvgHandleTime',{'options':{'where':{'endtime':{'$between':[moment()['subtract'](_0x2697ad,'minutes')[_0xded4('0x8')](_0xded4('0x9')),moment()['format'](_0xded4('0x9'))]}},'raw':![]},'log':_0xded4('0xa')});};};exports[_0xded4('0xb')]=function(_0x35950a){return function(){return client[_0xded4('0x7')](_0xded4('0xc'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xded4('0xd')](_0xded4('0xe'))[_0xded4('0x8')](_0xded4('0x9')),moment()['endOf']('day')['format'](_0xded4('0x9'))]},'campaigntype':_0xded4('0x4')},'raw':![]},'log':_0xded4('0xc')});};};exports[_0xded4('0xf')]=function(_0x2f8159){return function(){return client[_0xded4('0x7')](_0xded4('0x10'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf'](_0xded4('0xe'))[_0xded4('0x8')](_0xded4('0x9')),moment()['endOf']('day')[_0xded4('0x8')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0xded4('0x11')},'raw':![]},'log':'GetCampaignHopperHistory'});};};
\ No newline at end of file
+var _0xef2d=['campaign','queue','CreateCmHopperHistory','avgHandleTime','Request','AvgHandleTime','format','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','YYYY-MM-DD\x20HH:mm:ss','endOf','getCampaignHopperHistory','GetCampaignHopperHistory','day','ivr','../client','createHistory'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xef2d,0x130));var _0xdef2=function(_0x3b2f8e,_0x3674e7){_0x3b2f8e=_0x3b2f8e-0x0;var _0x2d8f6e=_0xef2d[_0x3b2f8e];return _0x2d8f6e;};'use strict';var client=require(_0xdef2('0x0'));var moment=require('moment');exports[_0xdef2('0x1')]=function(_0x24415f){return function(){_0x24415f[_0xdef2('0x2')]=_0x24415f[_0xdef2('0x3')];return client['Request'](_0xdef2('0x4'),{'body':_0x24415f,'log':_0xdef2('0x4')});};};exports[_0xdef2('0x5')]=function(_0x5aec41){return function(){return client[_0xdef2('0x6')](_0xdef2('0x7'),{'options':{'where':{'endtime':{'$between':[moment()['subtract'](_0x5aec41,'minutes')[_0xdef2('0x8')]('YYYY-MM-DD\x20HH:mm:ss'),moment()['format']('YYYY-MM-DD\x20HH:mm:ss')]}},'raw':![]},'log':'GetCmHopperHistory'});};};exports[_0xdef2('0x9')]=function(_0x5a3cbb){return function(){return client[_0xdef2('0x6')](_0xdef2('0xa'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xdef2('0xb')]('day')[_0xdef2('0x8')](_0xdef2('0xc')),moment()[_0xdef2('0xd')]('day')[_0xdef2('0x8')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0xdef2('0x3')},'raw':![]},'log':_0xdef2('0xa')});};};exports[_0xdef2('0xe')]=function(_0x4e37f9){return function(){return client['Request'](_0xdef2('0xf'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xdef2('0xb')](_0xdef2('0x10'))[_0xdef2('0x8')](_0xdef2('0xc')),moment()[_0xdef2('0xd')](_0xdef2('0x10'))[_0xdef2('0x8')](_0xdef2('0xc'))]},'campaigntype':_0xdef2('0x11')},'raw':![]},'log':'GetCampaignHopperHistory'});};};
\ No newline at end of file
index 8d90d5d..8cc23c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd117=['maxrate','modem','gateway','faxdetect','t38timeout','tech','ListId','key','Trunk','callerid','active','notify','../client','getFaxAccounts','Request','GetFaxAccount','name','description','ecm','headerinfo','localstationid','minrate'];(function(_0x616290,_0x280b7f){var _0x453879=function(_0x27bda7){while(--_0x27bda7){_0x616290['push'](_0x616290['shift']());}};_0x453879(++_0x280b7f);}(_0xd117,0x182));var _0x7d11=function(_0x420513,_0x30eae3){_0x420513=_0x420513-0x0;var _0x1b44ec=_0xd117[_0x420513];return _0x1b44ec;};'use strict';var client=require(_0x7d11('0x0'));exports[_0x7d11('0x1')]=function(){return function(){return client[_0x7d11('0x2')](_0x7d11('0x3'),{'options':{'raw':![],'attributes':['id',_0x7d11('0x4'),_0x7d11('0x5'),_0x7d11('0x6'),_0x7d11('0x7'),_0x7d11('0x8'),_0x7d11('0x9'),_0x7d11('0xa'),_0x7d11('0xb'),_0x7d11('0xc'),_0x7d11('0xd'),_0x7d11('0xe'),_0x7d11('0xf'),'TrunkId',_0x7d11('0x10'),_0x7d11('0x11')],'include':[{'model':_0x7d11('0x12'),'as':'Trunk','attributes':['id',_0x7d11('0x4'),_0x7d11('0x13'),_0x7d11('0x14')]}]},'log':'getFaxAccount'});};};exports[_0x7d11('0x15')]=function(_0x48b0f1,_0x58a6fd){return client[_0x7d11('0x2')]('NotifyFaxAccount',{'account':{'id':_0x48b0f1},'body':_0x58a6fd,'log':'NotifyFaxAccount'});};
\ No newline at end of file
+var _0xee2c=['Request','GetFaxAccount','name','description','localstationid','minrate','modem','gateway','faxdetect','t38timeout','tech','key','Trunk','callerid','active','getFaxAccount','notify','NotifyFaxAccount','../client'];(function(_0x8a836d,_0x163485){var _0x426dd4=function(_0x44b608){while(--_0x44b608){_0x8a836d['push'](_0x8a836d['shift']());}};_0x426dd4(++_0x163485);}(_0xee2c,0x1c7));var _0xcee2=function(_0x1deb03,_0xd05ad8){_0x1deb03=_0x1deb03-0x0;var _0x189fe7=_0xee2c[_0x1deb03];return _0x189fe7;};'use strict';var client=require(_0xcee2('0x0'));exports['getFaxAccounts']=function(){return function(){return client[_0xcee2('0x1')](_0xcee2('0x2'),{'options':{'raw':![],'attributes':['id',_0xcee2('0x3'),_0xcee2('0x4'),'ecm','headerinfo',_0xcee2('0x5'),_0xcee2('0x6'),'maxrate',_0xcee2('0x7'),_0xcee2('0x8'),_0xcee2('0x9'),_0xcee2('0xa'),_0xcee2('0xb'),'TrunkId','ListId',_0xcee2('0xc')],'include':[{'model':_0xcee2('0xd'),'as':_0xcee2('0xd'),'attributes':['id',_0xcee2('0x3'),_0xcee2('0xe'),_0xcee2('0xf')]}]},'log':_0xcee2('0x10')});};};exports[_0xcee2('0x11')]=function(_0x4ded22,_0xca2c64){return client[_0xcee2('0x1')](_0xcee2('0x12'),{'account':{'id':_0x4ded22},'body':_0xca2c64,'log':_0xcee2('0x12')});};
\ No newline at end of file
index f060444..24147fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x011e=['Request','UpdateFaxMessage','../client','update'];(function(_0x25e2dd,_0x3b035d){var _0x2adc3a=function(_0x204033){while(--_0x204033){_0x25e2dd['push'](_0x25e2dd['shift']());}};_0x2adc3a(++_0x3b035d);}(_0x011e,0xce));var _0xe011=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0x011e[_0x433a86];return _0x23000c;};'use strict';var client=require(_0xe011('0x0'));exports[_0xe011('0x1')]=function(_0x40ccbe,_0x9ffd3){return client[_0xe011('0x2')](_0xe011('0x3'),{'body':_0x9ffd3,'options':{'where':{'AttachmentId':_0x40ccbe}},'log':_0xe011('0x3')});};
\ No newline at end of file
+var _0x52e1=['Request','UpdateFaxMessage'];(function(_0x2ff714,_0xa0b9c4){var _0x439b31=function(_0x18a704){while(--_0x18a704){_0x2ff714['push'](_0x2ff714['shift']());}};_0x439b31(++_0xa0b9c4);}(_0x52e1,0x6a));var _0x152e=function(_0x4addaa,_0x443146){_0x4addaa=_0x4addaa-0x0;var _0x3eb2eb=_0x52e1[_0x4addaa];return _0x3eb2eb;};'use strict';var client=require('../client');exports['update']=function(_0xa22d0f,_0x1a9f61){return client[_0x152e('0x0')](_0x152e('0x1'),{'body':_0x1a9f61,'options':{'where':{'AttachmentId':_0xa22d0f}},'log':'UpdateFaxMessage'});};
\ No newline at end of file
index 9850ba3..0ef1221 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5dc=['Variable','key','keyType','idField','nameField','customField','Tag','Tags','GetDeskAccount','../../client','Request','name','description','username','remoteUri','authType','type','serverUrl','DeskField','Subjects','content','variableName'];(function(_0x4fd158,_0x408832){var _0x3ad020=function(_0xf624b6){while(--_0xf624b6){_0x4fd158['push'](_0x4fd158['shift']());}};_0x3ad020(++_0x408832);}(_0xc5dc,0x13d));var _0xcc5d=function(_0x324160,_0x535627){_0x324160=_0x324160-0x0;var _0xb18580=_0xc5dc[_0x324160];return _0xb18580;};'use strict';var client=require(_0xcc5d('0x0'));exports['getDeskAccounts']=function(){return function(_0x5e8c0d){return client[_0xcc5d('0x1')]('GetDeskAccount',{'options':{'raw':![],'attributes':['id',_0xcc5d('0x2'),_0xcc5d('0x3'),_0xcc5d('0x4'),'password',_0xcc5d('0x5'),_0xcc5d('0x6'),_0xcc5d('0x7'),_0xcc5d('0x8')],'include':[{'model':'DeskConfiguration','as':'Configurations','attributes':['id','name'],'include':[{'model':_0xcc5d('0x9'),'as':_0xcc5d('0xa'),'attributes':['id',_0xcc5d('0x7'),_0xcc5d('0xb'),_0xcc5d('0xc')],'include':[{'model':_0xcc5d('0xd'),'as':_0xcc5d('0xd'),'attributes':['id',_0xcc5d('0x2')]}]},{'model':_0xcc5d('0x9'),'as':'Descriptions','attributes':['id','type',_0xcc5d('0xb'),_0xcc5d('0xe'),_0xcc5d('0xf'),'keyContent',_0xcc5d('0xc')],'include':[{'model':'Variable','as':_0xcc5d('0xd'),'attributes':['id',_0xcc5d('0x2')]}]},{'model':_0xcc5d('0x9'),'as':'Fields','attributes':['id','type',_0xcc5d('0xb'),_0xcc5d('0x10'),_0xcc5d('0x11'),_0xcc5d('0x12'),_0xcc5d('0xc')],'include':[{'model':_0xcc5d('0xd'),'as':'Variable','attributes':['id',_0xcc5d('0x2')]}]},{'model':_0xcc5d('0x13'),'as':_0xcc5d('0x14'),'attributes':['id',_0xcc5d('0x2')]}]}]},'log':_0xcc5d('0x15')});};};
\ No newline at end of file
+var _0x6143=['Tag','Tags','Request','GetDeskAccount','name','description','password','remoteUri','Configurations','type','content','variableName','Variable','DeskField','key','Fields','idField','customField'];(function(_0x2ee20d,_0x354e70){var _0xade530=function(_0x1db7cc){while(--_0x1db7cc){_0x2ee20d['push'](_0x2ee20d['shift']());}};_0xade530(++_0x354e70);}(_0x6143,0x16a));var _0x3614=function(_0x47ad4f,_0x321a17){_0x47ad4f=_0x47ad4f-0x0;var _0x5b8f53=_0x6143[_0x47ad4f];return _0x5b8f53;};'use strict';var client=require('../../client');exports['getDeskAccounts']=function(){return function(_0x25448f){return client[_0x3614('0x0')](_0x3614('0x1'),{'options':{'raw':![],'attributes':['id',_0x3614('0x2'),_0x3614('0x3'),'username',_0x3614('0x4'),_0x3614('0x5'),'authType','type','serverUrl'],'include':[{'model':'DeskConfiguration','as':_0x3614('0x6'),'attributes':['id',_0x3614('0x2')],'include':[{'model':'DeskField','as':'Subjects','attributes':['id',_0x3614('0x7'),_0x3614('0x8'),_0x3614('0x9')],'include':[{'model':_0x3614('0xa'),'as':_0x3614('0xa'),'attributes':['id','name']}]},{'model':_0x3614('0xb'),'as':'Descriptions','attributes':['id',_0x3614('0x7'),_0x3614('0x8'),_0x3614('0xc'),'keyType','keyContent',_0x3614('0x9')],'include':[{'model':'Variable','as':_0x3614('0xa'),'attributes':['id',_0x3614('0x2')]}]},{'model':'DeskField','as':_0x3614('0xd'),'attributes':['id',_0x3614('0x7'),'content',_0x3614('0xe'),'nameField',_0x3614('0xf'),_0x3614('0x9')],'include':[{'model':_0x3614('0xa'),'as':_0x3614('0xa'),'attributes':['id',_0x3614('0x2')]}]},{'model':_0x3614('0x10'),'as':_0x3614('0x11'),'attributes':['id','name']}]}]},'log':'GetDeskAccount'});};};
\ No newline at end of file
index 79e5bff..d3a60cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c75=['serverUrl','description','Dynamics365Configuration','Subjects','type','content','variableName','Variable','key','keyContent','Dynamics365Field','Fields','idField','Request','GetDynamics365Account','name','username','password','tenantId','clientId'];(function(_0x54011c,_0x4bf36e){var _0x2826d9=function(_0x4bd810){while(--_0x4bd810){_0x54011c['push'](_0x54011c['shift']());}};_0x2826d9(++_0x4bf36e);}(_0x6c75,0x175));var _0x56c7=function(_0x27a9b6,_0x3ebdc8){_0x27a9b6=_0x27a9b6-0x0;var _0x55e28c=_0x6c75[_0x27a9b6];return _0x55e28c;};'use strict';var client=require('../../client');exports['getDynamics365Accounts']=function(){return function(_0x33e9ea){return client[_0x56c7('0x0')](_0x56c7('0x1'),{'options':{'raw':![],'attributes':['id',_0x56c7('0x2'),_0x56c7('0x3'),_0x56c7('0x4'),'remoteUri',_0x56c7('0x5'),_0x56c7('0x6'),'clientSecret',_0x56c7('0x7'),_0x56c7('0x8')],'include':[{'model':_0x56c7('0x9'),'as':'Configurations','attributes':['id',_0x56c7('0x2'),'ticketType'],'include':[{'model':'Dynamics365Field','as':_0x56c7('0xa'),'attributes':['id',_0x56c7('0xb'),_0x56c7('0xc'),_0x56c7('0xd')],'include':[{'model':'Variable','as':_0x56c7('0xe'),'attributes':['id',_0x56c7('0x2')]}]},{'model':'Dynamics365Field','as':'Descriptions','attributes':['id','type',_0x56c7('0xc'),_0x56c7('0xf'),'keyType',_0x56c7('0x10'),_0x56c7('0xd')],'include':[{'model':'Variable','as':_0x56c7('0xe'),'attributes':['id',_0x56c7('0x2')]}]},{'model':_0x56c7('0x11'),'as':_0x56c7('0x12'),'attributes':['id',_0x56c7('0xb'),_0x56c7('0xc'),_0x56c7('0x13'),'nameField','customField',_0x56c7('0xd')],'include':[{'model':_0x56c7('0xe'),'as':_0x56c7('0xe'),'attributes':['id','name']}]}]}]},'log':'GetDynamics365Account'});};};
\ No newline at end of file
+var _0x44f3=['variableName','Variable','key','keyType','keyContent','Fields','idField','customField','Request','GetDynamics365Account','name','username','password','tenantId','clientId','clientSecret','serverUrl','Dynamics365Configuration','Configurations','ticketType','Dynamics365Field','Subjects','type','content'];(function(_0x1c2b9a,_0x71b663){var _0x1b3dca=function(_0x4c01cf){while(--_0x4c01cf){_0x1c2b9a['push'](_0x1c2b9a['shift']());}};_0x1b3dca(++_0x71b663);}(_0x44f3,0x140));var _0x344f=function(_0x514867,_0xbc5f43){_0x514867=_0x514867-0x0;var _0x3a1b64=_0x44f3[_0x514867];return _0x3a1b64;};'use strict';var client=require('../../client');exports['getDynamics365Accounts']=function(){return function(_0x337ec9){return client[_0x344f('0x0')](_0x344f('0x1'),{'options':{'raw':![],'attributes':['id',_0x344f('0x2'),_0x344f('0x3'),_0x344f('0x4'),'remoteUri',_0x344f('0x5'),_0x344f('0x6'),_0x344f('0x7'),_0x344f('0x8'),'description'],'include':[{'model':_0x344f('0x9'),'as':_0x344f('0xa'),'attributes':['id','name',_0x344f('0xb')],'include':[{'model':_0x344f('0xc'),'as':_0x344f('0xd'),'attributes':['id',_0x344f('0xe'),_0x344f('0xf'),_0x344f('0x10')],'include':[{'model':'Variable','as':_0x344f('0x11'),'attributes':['id',_0x344f('0x2')]}]},{'model':_0x344f('0xc'),'as':'Descriptions','attributes':['id',_0x344f('0xe'),_0x344f('0xf'),_0x344f('0x12'),_0x344f('0x13'),_0x344f('0x14'),_0x344f('0x10')],'include':[{'model':_0x344f('0x11'),'as':'Variable','attributes':['id','name']}]},{'model':_0x344f('0xc'),'as':_0x344f('0x15'),'attributes':['id','type','content',_0x344f('0x16'),'nameField',_0x344f('0x17'),_0x344f('0x10')],'include':[{'model':'Variable','as':_0x344f('0x11'),'attributes':['id',_0x344f('0x2')]}]}]}]},'log':_0x344f('0x1')});};};
\ No newline at end of file
index 7541c68..61dfadb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1339=['type','content','variableName','Variable','Descriptions','key','keyType','keyContent','nameField','customField','Request','GetFreshdeskAccount','name','username','apiKey','remoteUri','serverUrl','Configurations','Tag','FreshdeskField','Subjects'];(function(_0x129d1f,_0x67d264){var _0x1fde6e=function(_0x22eae8){while(--_0x22eae8){_0x129d1f['push'](_0x129d1f['shift']());}};_0x1fde6e(++_0x67d264);}(_0x1339,0x1ed));var _0x9133=function(_0x3c3e56,_0x346f86){_0x3c3e56=_0x3c3e56-0x0;var _0x34499f=_0x1339[_0x3c3e56];return _0x34499f;};'use strict';var client=require('../../client');exports['getFreshdeskAccounts']=function(){return function(_0x352a8d){return client[_0x9133('0x0')](_0x9133('0x1'),{'options':{'raw':![],'attributes':['id',_0x9133('0x2'),_0x9133('0x3'),_0x9133('0x4'),_0x9133('0x5'),_0x9133('0x6')],'include':[{'model':'FreshdeskConfiguration','as':_0x9133('0x7'),'attributes':['id',_0x9133('0x2')],'include':[{'model':_0x9133('0x8'),'attributes':['id','name']},{'model':_0x9133('0x9'),'as':_0x9133('0xa'),'attributes':['id',_0x9133('0xb'),_0x9133('0xc'),_0x9133('0xd')],'include':[{'model':_0x9133('0xe'),'as':_0x9133('0xe'),'attributes':['id',_0x9133('0x2')]}]},{'model':_0x9133('0x9'),'as':_0x9133('0xf'),'attributes':['id','type',_0x9133('0xc'),_0x9133('0x10'),_0x9133('0x11'),_0x9133('0x12'),_0x9133('0xd')],'include':[{'model':_0x9133('0xe'),'as':'Variable','attributes':['id',_0x9133('0x2')]}]},{'model':_0x9133('0x9'),'as':'Fields','attributes':['id','type',_0x9133('0xc'),'idField',_0x9133('0x13'),_0x9133('0x14'),_0x9133('0xd')],'include':[{'model':_0x9133('0xe'),'as':_0x9133('0xe'),'attributes':['id',_0x9133('0x2')]}]}]}]},'log':'GetFreshdeskAccount'});};};
\ No newline at end of file
+var _0x9458=['variableName','Variable','type','keyContent','Fields','idField','nameField','GetFreshdeskAccount','name','apiKey','remoteUri','serverUrl','FreshdeskConfiguration','Configurations','Tag','FreshdeskField','Subjects','content'];(function(_0x54dfe2,_0x53befb){var _0x1064ae=function(_0x56544f){while(--_0x56544f){_0x54dfe2['push'](_0x54dfe2['shift']());}};_0x1064ae(++_0x53befb);}(_0x9458,0x1b8));var _0x8945=function(_0x27c220,_0x1e2463){_0x27c220=_0x27c220-0x0;var _0x5bb203=_0x9458[_0x27c220];return _0x5bb203;};'use strict';var client=require('../../client');exports['getFreshdeskAccounts']=function(){return function(_0x2e5c0d){return client['Request']('GetFreshdeskAccount',{'options':{'raw':![],'attributes':['id',_0x8945('0x0'),'username',_0x8945('0x1'),_0x8945('0x2'),_0x8945('0x3')],'include':[{'model':_0x8945('0x4'),'as':_0x8945('0x5'),'attributes':['id',_0x8945('0x0')],'include':[{'model':_0x8945('0x6'),'attributes':['id',_0x8945('0x0')]},{'model':_0x8945('0x7'),'as':_0x8945('0x8'),'attributes':['id','type',_0x8945('0x9'),_0x8945('0xa')],'include':[{'model':_0x8945('0xb'),'as':_0x8945('0xb'),'attributes':['id',_0x8945('0x0')]}]},{'model':_0x8945('0x7'),'as':'Descriptions','attributes':['id',_0x8945('0xc'),_0x8945('0x9'),'key','keyType',_0x8945('0xd'),'variableName'],'include':[{'model':_0x8945('0xb'),'as':_0x8945('0xb'),'attributes':['id',_0x8945('0x0')]}]},{'model':_0x8945('0x7'),'as':_0x8945('0xe'),'attributes':['id',_0x8945('0xc'),'content',_0x8945('0xf'),_0x8945('0x10'),'customField',_0x8945('0xa')],'include':[{'model':_0x8945('0xb'),'as':_0x8945('0xb'),'attributes':['id',_0x8945('0x0')]}]}]}]},'log':_0x8945('0x11')});};};
\ No newline at end of file
index b65049e..26b069a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8375=['name','username','apiKey','remoteUri','serverUrl','Configurations','FreshsalesField','Subjects','type','Variable','content','key','keyType','keyContent','variableName','GetFreshsalesccount','../../client','getFreshsalesAccounts','GetFreshsalesAccount'];(function(_0x2369de,_0x396566){var _0x10ced3=function(_0xd8dd4d){while(--_0xd8dd4d){_0x2369de['push'](_0x2369de['shift']());}};_0x10ced3(++_0x396566);}(_0x8375,0xa8));var _0x5837=function(_0x43fd50,_0x52e381){_0x43fd50=_0x43fd50-0x0;var _0x5432ec=_0x8375[_0x43fd50];return _0x5432ec;};'use strict';var client=require(_0x5837('0x0'));exports[_0x5837('0x1')]=function(){return function(_0xe2a8d5){return client['Request'](_0x5837('0x2'),{'options':{'raw':![],'attributes':['id',_0x5837('0x3'),_0x5837('0x4'),_0x5837('0x5'),_0x5837('0x6'),_0x5837('0x7')],'include':[{'model':'FreshsalesConfiguration','as':_0x5837('0x8'),'attributes':['id',_0x5837('0x3')],'include':[{'model':_0x5837('0x9'),'as':_0x5837('0xa'),'attributes':['id',_0x5837('0xb'),'content','variableName'],'include':[{'model':_0x5837('0xc'),'as':_0x5837('0xc'),'attributes':['id','name']}]},{'model':_0x5837('0x9'),'as':'Descriptions','attributes':['id',_0x5837('0xb'),_0x5837('0xd'),_0x5837('0xe'),_0x5837('0xf'),_0x5837('0x10'),_0x5837('0x11')],'include':[{'model':'Variable','as':_0x5837('0xc'),'attributes':['id',_0x5837('0x3')]}]}]}]},'log':_0x5837('0x12')});};};
\ No newline at end of file
+var _0xfc46=['variableName','GetFreshsalesccount','../../client','Request','GetFreshsalesAccount','username','apiKey','remoteUri','serverUrl','Configurations','name','FreshsalesField','Subjects','type','content','Variable','key','keyType','keyContent'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xfc46,0x9a));var _0x6fc4=function(_0x2731f0,_0x126b1b){_0x2731f0=_0x2731f0-0x0;var _0x36a180=_0xfc46[_0x2731f0];return _0x36a180;};'use strict';var client=require(_0x6fc4('0x0'));exports['getFreshsalesAccounts']=function(){return function(_0x34a6d9){return client[_0x6fc4('0x1')](_0x6fc4('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x6fc4('0x3'),_0x6fc4('0x4'),_0x6fc4('0x5'),_0x6fc4('0x6')],'include':[{'model':'FreshsalesConfiguration','as':_0x6fc4('0x7'),'attributes':['id',_0x6fc4('0x8')],'include':[{'model':_0x6fc4('0x9'),'as':_0x6fc4('0xa'),'attributes':['id',_0x6fc4('0xb'),_0x6fc4('0xc'),'variableName'],'include':[{'model':_0x6fc4('0xd'),'as':'Variable','attributes':['id',_0x6fc4('0x8')]}]},{'model':_0x6fc4('0x9'),'as':'Descriptions','attributes':['id',_0x6fc4('0xb'),_0x6fc4('0xc'),_0x6fc4('0xe'),_0x6fc4('0xf'),_0x6fc4('0x10'),_0x6fc4('0x11')],'include':[{'model':_0x6fc4('0xd'),'as':_0x6fc4('0xd'),'attributes':['id',_0x6fc4('0x8')]}]}]}]},'log':_0x6fc4('0x12')});};};
\ No newline at end of file
index 81e82e6..dc2f675 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0137=['clientSecret','securityToken','type','SalesforceConfiguration','name','moduleSearch','moduleCreate','leadId','additionalSearchAccount','additionalSearchContact','additionalSearchLead','Subjects','Variable','SalesforceField','Descriptions','Fields','../../client','getSalesforceAccounts','Request','GetSalesforceAccount','username','password','remoteUri','clientId'];(function(_0x1e400b,_0x3a7a30){var _0x1ff684=function(_0x32739e){while(--_0x32739e){_0x1e400b['push'](_0x1e400b['shift']());}};_0x1ff684(++_0x3a7a30);}(_0x0137,0x1d8));var _0x7013=function(_0x11fa4b,_0x2e0ec1){_0x11fa4b=_0x11fa4b-0x0;var _0x122a99=_0x0137[_0x11fa4b];return _0x122a99;};'use strict';var client=require(_0x7013('0x0'));exports[_0x7013('0x1')]=function(){return function(_0x31faa5){return client[_0x7013('0x2')](_0x7013('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x7013('0x4'),_0x7013('0x5'),_0x7013('0x6'),_0x7013('0x7'),_0x7013('0x8'),_0x7013('0x9'),'serverUrl',_0x7013('0xa')],'include':[{'model':_0x7013('0xb'),'as':'Configurations','attributes':['id',_0x7013('0xc'),_0x7013('0xd'),_0x7013('0xe'),'ticketType',_0x7013('0xf'),_0x7013('0x10'),_0x7013('0x11'),_0x7013('0x12')],'include':[{'model':'SalesforceField','as':_0x7013('0x13'),'include':[{'model':_0x7013('0x14'),'as':_0x7013('0x14'),'attributes':['id',_0x7013('0xc')]}]},{'model':_0x7013('0x15'),'as':_0x7013('0x16'),'include':[{'model':'Variable','as':_0x7013('0x14'),'attributes':['id',_0x7013('0xc')]}]},{'model':_0x7013('0x15'),'as':_0x7013('0x17'),'include':[{'model':_0x7013('0x14'),'as':_0x7013('0x14'),'attributes':['id',_0x7013('0xc')]}]}]}]},'log':_0x7013('0x3')});};};
\ No newline at end of file
+var _0x4959=['Fields','Request','GetSalesforceAccount','username','password','remoteUri','clientId','securityToken','serverUrl','type','SalesforceConfiguration','Configurations','name','moduleSearch','moduleCreate','ticketType','leadId','additionalSearchAccount','additionalSearchLead','SalesforceField','Descriptions','Variable'];(function(_0x22b80f,_0x63ff14){var _0x4c7a4e=function(_0x521596){while(--_0x521596){_0x22b80f['push'](_0x22b80f['shift']());}};_0x4c7a4e(++_0x63ff14);}(_0x4959,0x9b));var _0x9495=function(_0x3c0b32,_0x5f1394){_0x3c0b32=_0x3c0b32-0x0;var _0x49607d=_0x4959[_0x3c0b32];return _0x49607d;};'use strict';var client=require('../../client');exports['getSalesforceAccounts']=function(){return function(_0x3e0066){return client[_0x9495('0x0')](_0x9495('0x1'),{'options':{'raw':![],'attributes':['id','name',_0x9495('0x2'),_0x9495('0x3'),_0x9495('0x4'),_0x9495('0x5'),'clientSecret',_0x9495('0x6'),_0x9495('0x7'),_0x9495('0x8')],'include':[{'model':_0x9495('0x9'),'as':_0x9495('0xa'),'attributes':['id',_0x9495('0xb'),_0x9495('0xc'),_0x9495('0xd'),_0x9495('0xe'),_0x9495('0xf'),_0x9495('0x10'),'additionalSearchContact',_0x9495('0x11')],'include':[{'model':'SalesforceField','as':'Subjects','include':[{'model':'Variable','as':'Variable','attributes':['id',_0x9495('0xb')]}]},{'model':_0x9495('0x12'),'as':_0x9495('0x13'),'include':[{'model':_0x9495('0x14'),'as':_0x9495('0x14'),'attributes':['id',_0x9495('0xb')]}]},{'model':_0x9495('0x12'),'as':_0x9495('0x15'),'include':[{'model':_0x9495('0x14'),'as':_0x9495('0x14'),'attributes':['id',_0x9495('0xb')]}]}]}]},'log':_0x9495('0x1')});};};
\ No newline at end of file
index 370262d..a0dccfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1967=['description','username','password','email','remoteUri','ServicenowConfiguration','Configurations','ServicenowField','Subjects','type','variableName','Variable','content','key','keyType','keyContent','Fields','idField','nameField','customField','GetServicenowkAccount','getServicenowAccounts','Request','GetServicenowAccount','name'];(function(_0x1fe64b,_0x4c4563){var _0x440f7b=function(_0x2f9f5e){while(--_0x2f9f5e){_0x1fe64b['push'](_0x1fe64b['shift']());}};_0x440f7b(++_0x4c4563);}(_0x1967,0x173));var _0x7196=function(_0xce7849,_0x3deba6){_0xce7849=_0xce7849-0x0;var _0x4367fe=_0x1967[_0xce7849];return _0x4367fe;};'use strict';var client=require('../../client');exports[_0x7196('0x0')]=function(){return function(_0xdb72bb){return client[_0x7196('0x1')](_0x7196('0x2'),{'options':{'raw':![],'attributes':['id',_0x7196('0x3'),_0x7196('0x4'),_0x7196('0x5'),_0x7196('0x6'),_0x7196('0x7'),_0x7196('0x8'),'serverUrl'],'include':[{'model':_0x7196('0x9'),'as':_0x7196('0xa'),'attributes':['id',_0x7196('0x3')],'include':[{'model':_0x7196('0xb'),'as':_0x7196('0xc'),'attributes':['id',_0x7196('0xd'),'content',_0x7196('0xe')],'include':[{'model':_0x7196('0xf'),'as':_0x7196('0xf'),'attributes':['id',_0x7196('0x3')]}]},{'model':_0x7196('0xb'),'as':'Descriptions','attributes':['id','type',_0x7196('0x10'),_0x7196('0x11'),_0x7196('0x12'),_0x7196('0x13'),_0x7196('0xe')],'include':[{'model':_0x7196('0xf'),'as':_0x7196('0xf'),'attributes':['id',_0x7196('0x3')]}]},{'model':_0x7196('0xb'),'as':_0x7196('0x14'),'attributes':['id',_0x7196('0xd'),'content',_0x7196('0x15'),_0x7196('0x16'),_0x7196('0x17'),_0x7196('0xe')],'include':[{'model':'Variable','as':_0x7196('0xf'),'attributes':['id','name']}]}]}]},'log':_0x7196('0x18')});};};
\ No newline at end of file
+var _0xc6ac=['GetServicenowAccount','name','description','username','password','email','remoteUri','serverUrl','ServicenowConfiguration','Configurations','ServicenowField','Subjects','type','variableName','Variable','content','key','keyContent','Fields','nameField','customField','GetServicenowkAccount','../../client','getServicenowAccounts','Request'];(function(_0x500419,_0x549162){var _0x241c1a=function(_0x3bea1a){while(--_0x3bea1a){_0x500419['push'](_0x500419['shift']());}};_0x241c1a(++_0x549162);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x2d4b5d,_0x5ea5d1){_0x2d4b5d=_0x2d4b5d-0x0;var _0x2be9bc=_0xc6ac[_0x2d4b5d];return _0x2be9bc;};'use strict';var client=require(_0xcc6a('0x0'));exports[_0xcc6a('0x1')]=function(){return function(_0x1b6e92){return client[_0xcc6a('0x2')](_0xcc6a('0x3'),{'options':{'raw':![],'attributes':['id',_0xcc6a('0x4'),_0xcc6a('0x5'),_0xcc6a('0x6'),_0xcc6a('0x7'),_0xcc6a('0x8'),_0xcc6a('0x9'),_0xcc6a('0xa')],'include':[{'model':_0xcc6a('0xb'),'as':_0xcc6a('0xc'),'attributes':['id','name'],'include':[{'model':_0xcc6a('0xd'),'as':_0xcc6a('0xe'),'attributes':['id',_0xcc6a('0xf'),'content',_0xcc6a('0x10')],'include':[{'model':_0xcc6a('0x11'),'as':_0xcc6a('0x11'),'attributes':['id',_0xcc6a('0x4')]}]},{'model':_0xcc6a('0xd'),'as':'Descriptions','attributes':['id',_0xcc6a('0xf'),_0xcc6a('0x12'),_0xcc6a('0x13'),'keyType',_0xcc6a('0x14'),_0xcc6a('0x10')],'include':[{'model':_0xcc6a('0x11'),'as':'Variable','attributes':['id','name']}]},{'model':_0xcc6a('0xd'),'as':_0xcc6a('0x15'),'attributes':['id',_0xcc6a('0xf'),'content','idField',_0xcc6a('0x16'),_0xcc6a('0x17'),_0xcc6a('0x10')],'include':[{'model':_0xcc6a('0x11'),'as':_0xcc6a('0x11'),'attributes':['id',_0xcc6a('0x4')]}]}]}]},'log':_0xcc6a('0x18')});};};
\ No newline at end of file
index b33888f..5070c10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['username','password','SugarcrmConfiguration','Configurations','SugarcrmField','Subjects','type','variableName','Variable','Descriptions','key','Fields','content','idField','customField','../../client','getSugarcrmAccounts','Request','GetSugarcrmAccount','name'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x5f2f,0x73));var _0xf5f2=function(_0x357b59,_0x2916c4){_0x357b59=_0x357b59-0x0;var _0x25d5d8=_0x5f2f[_0x357b59];return _0x25d5d8;};'use strict';var client=require(_0xf5f2('0x0'));exports[_0xf5f2('0x1')]=function(){return function(_0x2dcf60){return client[_0xf5f2('0x2')](_0xf5f2('0x3'),{'options':{'raw':![],'attributes':['id',_0xf5f2('0x4'),_0xf5f2('0x5'),_0xf5f2('0x6'),'remoteUri','serverUrl'],'include':[{'model':_0xf5f2('0x7'),'as':_0xf5f2('0x8'),'attributes':['id',_0xf5f2('0x4')],'include':[{'model':_0xf5f2('0x9'),'as':_0xf5f2('0xa'),'attributes':['id',_0xf5f2('0xb'),'content',_0xf5f2('0xc')],'include':[{'model':_0xf5f2('0xd'),'as':_0xf5f2('0xd'),'attributes':['id','name']}]},{'model':_0xf5f2('0x9'),'as':_0xf5f2('0xe'),'attributes':['id',_0xf5f2('0xb'),'content',_0xf5f2('0xf'),'keyType','keyContent',_0xf5f2('0xc')],'include':[{'model':_0xf5f2('0xd'),'as':'Variable','attributes':['id',_0xf5f2('0x4')]}]},{'model':_0xf5f2('0x9'),'as':_0xf5f2('0x10'),'attributes':['id',_0xf5f2('0xb'),_0xf5f2('0x11'),_0xf5f2('0x12'),'nameField',_0xf5f2('0x13'),_0xf5f2('0xc')],'include':[{'model':_0xf5f2('0xd'),'as':_0xf5f2('0xd'),'attributes':['id',_0xf5f2('0x4')]}]}]}]},'log':'GetSugarcrmAccount'});};};
\ No newline at end of file
+var _0x66fa=['password','remoteUri','serverUrl','SugarcrmField','Subjects','type','content','Variable','Descriptions','keyType','keyContent','Fields','customField','../../client','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username'];(function(_0x46aede,_0x58d597){var _0x3fe9d5=function(_0x49f281){while(--_0x49f281){_0x46aede['push'](_0x46aede['shift']());}};_0x3fe9d5(++_0x58d597);}(_0x66fa,0x117));var _0xa66f=function(_0x537501,_0x1ff390){_0x537501=_0x537501-0x0;var _0x449645=_0x66fa[_0x537501];return _0x449645;};'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
index 3574503..365dcb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49f7=['serverUrl','Configurations','VtigerField','Subjects','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','type','idField','nameField','customField','../../client','getVtigerAccounts','Request','GetVtigerAccount','name','description','accessKey','remoteUri'];(function(_0xfcbcb8,_0x35bf6b){var _0x1b1f97=function(_0x51e11d){while(--_0x51e11d){_0xfcbcb8['push'](_0xfcbcb8['shift']());}};_0x1b1f97(++_0x35bf6b);}(_0x49f7,0xd0));var _0x749f=function(_0x5bdad3,_0x697013){_0x5bdad3=_0x5bdad3-0x0;var _0x8b604a=_0x49f7[_0x5bdad3];return _0x8b604a;};'use strict';var client=require(_0x749f('0x0'));exports[_0x749f('0x1')]=function(){return function(_0x160d48){return client[_0x749f('0x2')](_0x749f('0x3'),{'options':{'raw':![],'attributes':['id',_0x749f('0x4'),_0x749f('0x5'),'username',_0x749f('0x6'),_0x749f('0x7'),_0x749f('0x8')],'include':[{'model':'VtigerConfiguration','as':_0x749f('0x9'),'attributes':['id',_0x749f('0x4')],'include':[{'model':_0x749f('0xa'),'as':_0x749f('0xb'),'attributes':['id','type',_0x749f('0xc'),_0x749f('0xd')],'include':[{'model':'Variable','as':_0x749f('0xe'),'attributes':['id',_0x749f('0x4')]}]},{'model':_0x749f('0xa'),'as':_0x749f('0xf'),'attributes':['id','type','content',_0x749f('0x10'),_0x749f('0x11'),_0x749f('0x12'),_0x749f('0xd')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x749f('0x4')]}]},{'model':_0x749f('0xa'),'as':_0x749f('0x13'),'attributes':['id',_0x749f('0x14'),'content',_0x749f('0x15'),_0x749f('0x16'),_0x749f('0x17'),_0x749f('0xd')],'include':[{'model':_0x749f('0xe'),'as':'Variable','attributes':['id',_0x749f('0x4')]}]}]}]},'log':_0x749f('0x3')});};};
\ No newline at end of file
+var _0x019a=['Descriptions','type','key','keyType','keyContent','variableName','Fields','content','idField','nameField','customField','getVtigerAccounts','Request','GetVtigerAccount','name','description','username','remoteUri','serverUrl','Configurations','VtigerField','Variable'];(function(_0x3541af,_0x4d2e6f){var _0xcfc54e=function(_0x52c06d){while(--_0x52c06d){_0x3541af['push'](_0x3541af['shift']());}};_0xcfc54e(++_0x4d2e6f);}(_0x019a,0xd1));var _0xa019=function(_0x5ae3b2,_0x3f6e9e){_0x5ae3b2=_0x5ae3b2-0x0;var _0x22ebe7=_0x019a[_0x5ae3b2];return _0x22ebe7;};'use strict';var client=require('../../client');exports[_0xa019('0x0')]=function(){return function(_0x507502){return client[_0xa019('0x1')](_0xa019('0x2'),{'options':{'raw':![],'attributes':['id',_0xa019('0x3'),_0xa019('0x4'),_0xa019('0x5'),'accessKey',_0xa019('0x6'),_0xa019('0x7')],'include':[{'model':'VtigerConfiguration','as':_0xa019('0x8'),'attributes':['id',_0xa019('0x3')],'include':[{'model':_0xa019('0x9'),'as':'Subjects','attributes':['id','type','content','variableName'],'include':[{'model':_0xa019('0xa'),'as':_0xa019('0xa'),'attributes':['id',_0xa019('0x3')]}]},{'model':_0xa019('0x9'),'as':_0xa019('0xb'),'attributes':['id',_0xa019('0xc'),'content',_0xa019('0xd'),_0xa019('0xe'),_0xa019('0xf'),_0xa019('0x10')],'include':[{'model':'Variable','as':_0xa019('0xa'),'attributes':['id','name']}]},{'model':'VtigerField','as':_0xa019('0x11'),'attributes':['id','type',_0xa019('0x12'),_0xa019('0x13'),_0xa019('0x14'),_0xa019('0x15'),_0xa019('0x10')],'include':[{'model':_0xa019('0xa'),'as':'Variable','attributes':['id','name']}]}]}]},'log':'GetVtigerAccount'});};};
\ No newline at end of file
index 48988d6..3b3a930 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a5a=['key','keyType','keyContent','ZendeskField','Fields','idField','nameField','../../client','getZendeskAccounts','name','username','password','remoteUri','authType','type','ZendeskConfiguration','Configurations','Tag','content','variableName','Variable'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x8a5a,0xaf));var _0xa8a5=function(_0x8f42d9,_0x2c6a77){_0x8f42d9=_0x8f42d9-0x0;var _0x4ace72=_0x8a5a[_0x8f42d9];return _0x4ace72;};'use strict';var client=require(_0xa8a5('0x0'));exports[_0xa8a5('0x1')]=function(){return function(_0x3b7973){return client['Request']('GetZendeskAccount',{'options':{'raw':![],'attributes':['id',_0xa8a5('0x2'),_0xa8a5('0x3'),_0xa8a5('0x4'),'token',_0xa8a5('0x5'),_0xa8a5('0x6'),'serverUrl',_0xa8a5('0x7')],'include':[{'model':_0xa8a5('0x8'),'as':_0xa8a5('0x9'),'attributes':['id',_0xa8a5('0x2')],'include':[{'model':_0xa8a5('0xa'),'attributes':['id',_0xa8a5('0x2')]},{'model':'ZendeskField','as':'Subjects','attributes':['id',_0xa8a5('0x7'),_0xa8a5('0xb'),_0xa8a5('0xc')],'include':[{'model':_0xa8a5('0xd'),'as':_0xa8a5('0xd'),'attributes':['id','name']}]},{'model':'ZendeskField','as':'Descriptions','attributes':['id','type','content',_0xa8a5('0xe'),_0xa8a5('0xf'),_0xa8a5('0x10'),'variableName'],'include':[{'model':'Variable','as':_0xa8a5('0xd'),'attributes':['id','name']}]},{'model':_0xa8a5('0x11'),'as':_0xa8a5('0x12'),'attributes':['id',_0xa8a5('0x7'),_0xa8a5('0xb'),_0xa8a5('0x13'),_0xa8a5('0x14'),'customField',_0xa8a5('0xc')],'include':[{'model':'Variable','as':_0xa8a5('0xd'),'attributes':['id',_0xa8a5('0x2')]}]}]}]},'log':'GetZendeskAccount'});};};
\ No newline at end of file
+var _0xb235=['Configurations','Tag','ZendeskField','variableName','Variable','Descriptions','content','keyContent','customField','getZendeskAccounts','Request','GetZendeskAccount','name','password','remoteUri','type','ZendeskConfiguration'];(function(_0x101de3,_0x13b69b){var _0x572943=function(_0x11c04a){while(--_0x11c04a){_0x101de3['push'](_0x101de3['shift']());}};_0x572943(++_0x13b69b);}(_0xb235,0x6f));var _0x5b23=function(_0x1b9c2a,_0x50582e){_0x1b9c2a=_0x1b9c2a-0x0;var _0x21ab47=_0xb235[_0x1b9c2a];return _0x21ab47;};'use strict';var client=require('../../client');exports[_0x5b23('0x0')]=function(){return function(_0x22cc4e){return client[_0x5b23('0x1')](_0x5b23('0x2'),{'options':{'raw':![],'attributes':['id',_0x5b23('0x3'),'username',_0x5b23('0x4'),'token',_0x5b23('0x5'),'authType','serverUrl',_0x5b23('0x6')],'include':[{'model':_0x5b23('0x7'),'as':_0x5b23('0x8'),'attributes':['id',_0x5b23('0x3')],'include':[{'model':_0x5b23('0x9'),'attributes':['id','name']},{'model':_0x5b23('0xa'),'as':'Subjects','attributes':['id','type','content',_0x5b23('0xb')],'include':[{'model':'Variable','as':_0x5b23('0xc'),'attributes':['id',_0x5b23('0x3')]}]},{'model':_0x5b23('0xa'),'as':_0x5b23('0xd'),'attributes':['id',_0x5b23('0x6'),_0x5b23('0xe'),'key','keyType',_0x5b23('0xf'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]},{'model':_0x5b23('0xa'),'as':'Fields','attributes':['id',_0x5b23('0x6'),_0x5b23('0xe'),'idField','nameField',_0x5b23('0x10'),_0x5b23('0xb')],'include':[{'model':_0x5b23('0xc'),'as':'Variable','attributes':['id',_0x5b23('0x3')]}]}]}]},'log':'GetZendeskAccount'});};};
\ No newline at end of file
index 53cbd7e..960f07e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x889b=['Configurations','moduleSearch','Subjects','type','content','variableName','Variable','ZohoField','Descriptions','Fields','idField','customField','GetZohoAccount','getZohoAccounts','name','description','host','zone','clientId','clientSecret','serverUrl','code','refreshToken','ZohoConfiguration'];(function(_0x4df1ef,_0x4b3302){var _0x372490=function(_0x284b33){while(--_0x284b33){_0x4df1ef['push'](_0x4df1ef['shift']());}};_0x372490(++_0x4b3302);}(_0x889b,0x1a5));var _0xb889=function(_0xe4db28,_0x4b59c6){_0xe4db28=_0xe4db28-0x0;var _0x49a32f=_0x889b[_0xe4db28];return _0x49a32f;};'use strict';var client=require('../../client');exports[_0xb889('0x0')]=function(){return function(_0x126867){return client['Request']('GetZohoAccount',{'options':{'raw':![],'attributes':['id',_0xb889('0x1'),_0xb889('0x2'),_0xb889('0x3'),_0xb889('0x4'),_0xb889('0x5'),_0xb889('0x6'),_0xb889('0x7'),_0xb889('0x8'),_0xb889('0x9')],'include':[{'model':_0xb889('0xa'),'as':_0xb889('0xb'),'attributes':['id','name','moduleCreate',_0xb889('0xc'),_0xb889('0x2')],'include':[{'model':'ZohoField','as':_0xb889('0xd'),'attributes':['id',_0xb889('0xe'),_0xb889('0xf'),_0xb889('0x10')],'include':[{'model':_0xb889('0x11'),'as':_0xb889('0x11'),'attributes':['id',_0xb889('0x1')]}]},{'model':_0xb889('0x12'),'as':_0xb889('0x13'),'attributes':['id','type',_0xb889('0xf'),'key','keyType','keyContent',_0xb889('0x10')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xb889('0x1')]}]},{'model':_0xb889('0x12'),'as':_0xb889('0x14'),'attributes':['id','type',_0xb889('0xf'),_0xb889('0x15'),'nameField',_0xb889('0x16'),'variableName'],'include':[{'model':'Variable','as':_0xb889('0x11'),'attributes':['id',_0xb889('0x1')]}]}]}]},'log':_0xb889('0x17')});};};
\ No newline at end of file
+var _0x021a=['Subjects','type','content','variableName','Variable','Descriptions','keyType','keyContent','Fields','customField','GetZohoAccount','Request','name','description','serverUrl','code','refreshToken','ZohoConfiguration','Configurations','moduleSearch','ZohoField'];(function(_0x2a3bf1,_0x250c29){var _0xfad683=function(_0x26a6f9){while(--_0x26a6f9){_0x2a3bf1['push'](_0x2a3bf1['shift']());}};_0xfad683(++_0x250c29);}(_0x021a,0x1c4));var _0xa021=function(_0x22dbd1,_0x47e0bb){_0x22dbd1=_0x22dbd1-0x0;var _0x50a4fd=_0x021a[_0x22dbd1];return _0x50a4fd;};'use strict';var client=require('../../client');exports['getZohoAccounts']=function(){return function(_0x1f0789){return client[_0xa021('0x0')]('GetZohoAccount',{'options':{'raw':![],'attributes':['id',_0xa021('0x1'),_0xa021('0x2'),'host','zone','clientId','clientSecret',_0xa021('0x3'),_0xa021('0x4'),_0xa021('0x5')],'include':[{'model':_0xa021('0x6'),'as':_0xa021('0x7'),'attributes':['id',_0xa021('0x1'),'moduleCreate',_0xa021('0x8'),'description'],'include':[{'model':_0xa021('0x9'),'as':_0xa021('0xa'),'attributes':['id',_0xa021('0xb'),_0xa021('0xc'),_0xa021('0xd')],'include':[{'model':'Variable','as':_0xa021('0xe'),'attributes':['id',_0xa021('0x1')]}]},{'model':_0xa021('0x9'),'as':_0xa021('0xf'),'attributes':['id','type',_0xa021('0xc'),'key',_0xa021('0x10'),_0xa021('0x11'),_0xa021('0xd')],'include':[{'model':'Variable','as':_0xa021('0xe'),'attributes':['id',_0xa021('0x1')]}]},{'model':'ZohoField','as':_0xa021('0x12'),'attributes':['id',_0xa021('0xb'),_0xa021('0xc'),'idField','nameField',_0xa021('0x13'),_0xa021('0xd')],'include':[{'model':_0xa021('0xe'),'as':_0xa021('0xe'),'attributes':['id',_0xa021('0x1')]}]}]}]},'log':_0xa021('0x14')});};};
\ No newline at end of file
index 90d801b..4ef832d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83b9=['accountcode','toNumber','uniqueid','voiceDialReport','membername','starttime','endtime','seconds','outbound','dialstring','agent','lodash','../client','queuecallerexitAt','Request','CreateMemberReport','lastAssignedTo','isNil','interface','format','SIP/%s','TALKING','queuecallerleaveAt','inbound','calleridnum','exten','queue'];(function(_0x3d5a85,_0xe82e44){var _0x403a6f=function(_0xc1b0e8){while(--_0xc1b0e8){_0x3d5a85['push'](_0x3d5a85['shift']());}};_0x403a6f(++_0xe82e44);}(_0x83b9,0x1bb));var _0x983b=function(_0x34b0d3,_0x55b139){_0x34b0d3=_0x34b0d3-0x0;var _0x37c298=_0x83b9[_0x34b0d3];return _0x37c298;};'use strict';var moment=require('moment');var _=require(_0x983b('0x0'));var util=require('util');var client=require(_0x983b('0x1'));exports['voiceQueueReport']=function(_0x5063d3){var _0x4de18b=_0x5063d3['queuecallercompleteAt']||_0x5063d3[_0x983b('0x2')];return client[_0x983b('0x3')](_0x983b('0x4'),{'body':{'channel':'voice','membername':_0x5063d3[_0x983b('0x5')],'interface':_[_0x983b('0x6')](_0x5063d3[_0x983b('0x7')])?util[_0x983b('0x8')](_0x983b('0x9'),_0x5063d3[_0x983b('0x5')]):_0x5063d3['interface'],'type':_0x983b('0xa'),'enterAt':_0x5063d3[_0x983b('0xb')],'exitAt':_0x4de18b,'duration':moment(_0x4de18b)['diff'](_0x5063d3[_0x983b('0xb')],'seconds'),'data1':_0x983b('0xc'),'data2':_0x5063d3[_0x983b('0xd')],'data3':_0x5063d3[_0x983b('0xe')],'data4':null,'data5':_0x5063d3[_0x983b('0xf')],'role':'agent','internal':_0x5063d3[_0x983b('0x10')]?_[_0x983b('0x11')](_0x5063d3[_0x983b('0x10')]):undefined,'uniqueid':_0x5063d3[_0x983b('0x12')]},'log':'CreateMemberReport'});};exports[_0x983b('0x13')]=function(_0x20ed5b){return client[_0x983b('0x3')](_0x983b('0x4'),{'body':{'channel':'voice','membername':_0x20ed5b[_0x983b('0x14')],'interface':_0x20ed5b[_0x983b('0x7')],'type':_0x983b('0xa'),'enterAt':_0x20ed5b[_0x983b('0x15')],'exitAt':_0x20ed5b[_0x983b('0x16')],'duration':moment(_0x20ed5b[_0x983b('0x16')])['diff'](_0x20ed5b[_0x983b('0x15')],_0x983b('0x17'))>=0x0?moment(_0x20ed5b[_0x983b('0x16')])['diff'](_0x20ed5b[_0x983b('0x15')],_0x983b('0x17')):null,'data1':_0x983b('0x18'),'data2':_0x20ed5b['accountcode'],'data3':_0x20ed5b[_0x983b('0xe')],'data4':_0x20ed5b[_0x983b('0x19')]||null,'role':_0x983b('0x1a'),'internal':_0x20ed5b['accountcode']?_[_0x983b('0x11')](_0x20ed5b['accountcode']):undefined,'uniqueid':_0x20ed5b[_0x983b('0x12')]},'log':_0x983b('0x4')});};
\ No newline at end of file
+var _0x6768=['interface','format','SIP/%s','TALKING','queuecallerleaveAt','inbound','agent','accountcode','toNumber','voiceDialReport','membername','starttime','endtime','diff','seconds','outbound','exten','dialstring','uniqueid','moment','lodash','../client','voiceQueueReport','queuecallerexitAt','Request','CreateMemberReport','voice','lastAssignedTo'];(function(_0x31cc0e,_0x24ba4c){var _0x144862=function(_0x4d236e){while(--_0x4d236e){_0x31cc0e['push'](_0x31cc0e['shift']());}};_0x144862(++_0x24ba4c);}(_0x6768,0x19b));var _0x8676=function(_0x586f85,_0x57e85e){_0x586f85=_0x586f85-0x0;var _0x5ffa49=_0x6768[_0x586f85];return _0x5ffa49;};'use strict';var moment=require(_0x8676('0x0'));var _=require(_0x8676('0x1'));var util=require('util');var client=require(_0x8676('0x2'));exports[_0x8676('0x3')]=function(_0x256d4f){var _0x5ca212=_0x256d4f['queuecallercompleteAt']||_0x256d4f[_0x8676('0x4')];return client[_0x8676('0x5')](_0x8676('0x6'),{'body':{'channel':_0x8676('0x7'),'membername':_0x256d4f[_0x8676('0x8')],'interface':_['isNil'](_0x256d4f[_0x8676('0x9')])?util[_0x8676('0xa')](_0x8676('0xb'),_0x256d4f[_0x8676('0x8')]):_0x256d4f[_0x8676('0x9')],'type':_0x8676('0xc'),'enterAt':_0x256d4f[_0x8676('0xd')],'exitAt':_0x5ca212,'duration':moment(_0x5ca212)['diff'](_0x256d4f[_0x8676('0xd')],'seconds'),'data1':_0x8676('0xe'),'data2':_0x256d4f['calleridnum'],'data3':_0x256d4f['exten'],'data4':null,'data5':_0x256d4f['queue'],'role':_0x8676('0xf'),'internal':_0x256d4f[_0x8676('0x10')]?_[_0x8676('0x11')](_0x256d4f[_0x8676('0x10')]):undefined,'uniqueid':_0x256d4f['uniqueid']},'log':_0x8676('0x6')});};exports[_0x8676('0x12')]=function(_0x3e101b){return client['Request'](_0x8676('0x6'),{'body':{'channel':_0x8676('0x7'),'membername':_0x3e101b[_0x8676('0x13')],'interface':_0x3e101b[_0x8676('0x9')],'type':'TALKING','enterAt':_0x3e101b[_0x8676('0x14')],'exitAt':_0x3e101b['endtime'],'duration':moment(_0x3e101b[_0x8676('0x15')])[_0x8676('0x16')](_0x3e101b[_0x8676('0x14')],_0x8676('0x17'))>=0x0?moment(_0x3e101b[_0x8676('0x15')])[_0x8676('0x16')](_0x3e101b[_0x8676('0x14')],_0x8676('0x17')):null,'data1':_0x8676('0x18'),'data2':_0x3e101b[_0x8676('0x10')],'data3':_0x3e101b[_0x8676('0x19')],'data4':_0x3e101b[_0x8676('0x1a')]||null,'role':_0x8676('0xf'),'internal':_0x3e101b['accountcode']?_[_0x8676('0x11')](_0x3e101b['accountcode']):undefined,'uniqueid':_0x3e101b[_0x8676('0x1b')]},'log':_0x8676('0x6')});};
\ No newline at end of file
index 1a0a8d0..6ccc8de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d11=['Request','ShowSetting','GetSettings','../client','getSettings'];(function(_0x61c0b1,_0x4c07f3){var _0x5f2d2e=function(_0x5d2c54){while(--_0x5d2c54){_0x61c0b1['push'](_0x61c0b1['shift']());}};_0x5f2d2e(++_0x4c07f3);}(_0x9d11,0xb7));var _0x19d1=function(_0x10a212,_0x579d85){_0x10a212=_0x10a212-0x0;var _0x23c82b=_0x9d11[_0x10a212];return _0x23c82b;};'use strict';var client=require(_0x19d1('0x0'));exports[_0x19d1('0x1')]=function(){return client[_0x19d1('0x2')](_0x19d1('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['stopRecordingOnTransfer']},'log':_0x19d1('0x4')});};
\ No newline at end of file
+var _0xe563=['getSettings','Request','ShowSetting','stopRecordingOnTransfer','GetSettings','../client'];(function(_0x324fe8,_0x1ccb46){var _0x4a1cd9=function(_0x506af2){while(--_0x506af2){_0x324fe8['push'](_0x324fe8['shift']());}};_0x4a1cd9(++_0x1ccb46);}(_0xe563,0x125));var _0x3e56=function(_0xee4747,_0x571892){_0xee4747=_0xee4747-0x0;var _0x43e550=_0xe563[_0xee4747];return _0x43e550;};'use strict';var client=require(_0x3e56('0x0'));exports[_0x3e56('0x1')]=function(){return client[_0x3e56('0x2')](_0x3e56('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x3e56('0x4')]},'log':_0x3e56('0x5')});};
\ No newline at end of file
index 8355b7e..f039eb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34b7=['name','../client','getTemplates','Request','GetTemplate'];(function(_0x4fc212,_0x1087aa){var _0x252317=function(_0x6facac){while(--_0x6facac){_0x4fc212['push'](_0x4fc212['shift']());}};_0x252317(++_0x1087aa);}(_0x34b7,0x16e));var _0x734b=function(_0x2b7248,_0x17b24e){_0x2b7248=_0x2b7248-0x0;var _0x418838=_0x34b7[_0x2b7248];return _0x418838;};'use strict';var client=require(_0x734b('0x0'));exports[_0x734b('0x1')]=function(_0xd4c377){return function(_0x52ee24){return client[_0x734b('0x2')](_0x734b('0x3'),{'options':{'raw':!![],'attributes':['id',_0x734b('0x4'),'html']},'log':_0x734b('0x3')});};};
\ No newline at end of file
+var _0xf891=['GetTemplate','html','../client','getTemplates','Request'];(function(_0x2000c8,_0x5baa48){var _0x58ed5b=function(_0x307bbe){while(--_0x307bbe){_0x2000c8['push'](_0x2000c8['shift']());}};_0x58ed5b(++_0x5baa48);}(_0xf891,0x93));var _0x1f89=function(_0x5e36eb,_0x18cba9){_0x5e36eb=_0x5e36eb-0x0;var _0x6244d6=_0xf891[_0x5e36eb];return _0x6244d6;};'use strict';var client=require(_0x1f89('0x0'));exports[_0x1f89('0x1')]=function(_0x58404b){return function(_0x521951){return client[_0x1f89('0x2')](_0x1f89('0x3'),{'options':{'raw':!![],'attributes':['id','name',_0x1f89('0x4')]},'log':'GetTemplate'});};};
\ No newline at end of file
index 0322cea..46e6008 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca70=['value','Action','Actions','action','data1','data2','data4','data5','data6','data7','../client','getTriggers','Request','GetTrigger','name','channel','Condition','AllConditions','operator'];(function(_0xb7239,_0x3aa6e1){var _0x5a386a=function(_0x29cd5e){while(--_0x29cd5e){_0xb7239['push'](_0xb7239['shift']());}};_0x5a386a(++_0x3aa6e1);}(_0xca70,0x199));var _0x0ca7=function(_0x482bd0,_0x53838f){_0x482bd0=_0x482bd0-0x0;var _0x1bb591=_0xca70[_0x482bd0];return _0x1bb591;};'use strict';var client=require(_0x0ca7('0x0'));exports[_0x0ca7('0x1')]=function(_0x136b09){return function(_0x1e7d80){return client[_0x0ca7('0x2')](_0x0ca7('0x3'),{'options':{'raw':![],'attributes':['id',_0x0ca7('0x4'),_0x0ca7('0x5'),'status'],'include':[{'model':_0x0ca7('0x6'),'as':_0x0ca7('0x7'),'attributes':['id','field',_0x0ca7('0x8'),_0x0ca7('0x9')]},{'model':_0x0ca7('0x6'),'as':'AnyConditions','attributes':['id','field',_0x0ca7('0x8'),_0x0ca7('0x9')]},{'model':_0x0ca7('0xa'),'as':_0x0ca7('0xb'),'attributes':['id',_0x0ca7('0xc'),_0x0ca7('0xd'),_0x0ca7('0xe'),'data3',_0x0ca7('0xf'),_0x0ca7('0x10'),_0x0ca7('0x11'),_0x0ca7('0x12')]}]},'log':_0x0ca7('0x3')});};};
\ No newline at end of file
+var _0xfbee=['data5','data6','data7','getTriggers','Request','GetTrigger','channel','Condition','AllConditions','field','operator','value','Action','Actions','action','data4'];(function(_0x57eee9,_0x3540f7){var _0x36c05d=function(_0xd5ad1a){while(--_0xd5ad1a){_0x57eee9['push'](_0x57eee9['shift']());}};_0x36c05d(++_0x3540f7);}(_0xfbee,0xe3));var _0xefbe=function(_0x25b590,_0x3e174d){_0x25b590=_0x25b590-0x0;var _0x247a49=_0xfbee[_0x25b590];return _0x247a49;};'use strict';var client=require('../client');exports[_0xefbe('0x0')]=function(_0x243b1d){return function(_0x1a77e4){return client[_0xefbe('0x1')](_0xefbe('0x2'),{'options':{'raw':![],'attributes':['id','name',_0xefbe('0x3'),'status'],'include':[{'model':_0xefbe('0x4'),'as':_0xefbe('0x5'),'attributes':['id',_0xefbe('0x6'),_0xefbe('0x7'),_0xefbe('0x8')]},{'model':'Condition','as':'AnyConditions','attributes':['id',_0xefbe('0x6'),_0xefbe('0x7'),_0xefbe('0x8')]},{'model':_0xefbe('0x9'),'as':_0xefbe('0xa'),'attributes':['id',_0xefbe('0xb'),'data1','data2','data3',_0xefbe('0xc'),_0xefbe('0xd'),_0xefbe('0xe'),_0xefbe('0xf')]}]},'log':_0xefbe('0x2')});};};
\ No newline at end of file
index 66b0048..b707c77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc96c=['getTrunks','Request','GetTrunk','name','defaultuser'];(function(_0x506d83,_0x1899e9){var _0x335e8b=function(_0x4a7044){while(--_0x4a7044){_0x506d83['push'](_0x506d83['shift']());}};_0x335e8b(++_0x1899e9);}(_0xc96c,0x14a));var _0xcc96=function(_0x33cece,_0x54b9da){_0x33cece=_0x33cece-0x0;var _0x1a2efd=_0xc96c[_0x33cece];return _0x1a2efd;};'use strict';var client=require('../client');exports[_0xcc96('0x0')]=function(_0x5346ad){return function(_0x599d20){return client[_0xcc96('0x1')](_0xcc96('0x2'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0xcc96('0x3'),'registry',_0xcc96('0x4')]},'log':_0xcc96('0x2')});};};
\ No newline at end of file
+var _0x3c7e=['name','registry','defaultuser','getTrunks','Request','GetTrunk'];(function(_0x596de3,_0xf801c0){var _0xbf541f=function(_0x3b7460){while(--_0x3b7460){_0x596de3['push'](_0x596de3['shift']());}};_0xbf541f(++_0xf801c0);}(_0x3c7e,0xdb));var _0xe3c7=function(_0x13e758,_0x317d23){_0x13e758=_0x13e758-0x0;var _0x5b53c3=_0x3c7e[_0x13e758];return _0x5b53c3;};'use strict';var client=require('../client');exports[_0xe3c7('0x0')]=function(_0x4df101){return function(_0x448fb5){return client[_0xe3c7('0x1')](_0xe3c7('0x2'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0xe3c7('0x3'),_0xe3c7('0x4'),_0xe3c7('0x5')]},'log':_0xe3c7('0x2')});};};
\ No newline at end of file
index 7e5c713..45622b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['UnpauseUser','getAgent','ShowUser','email','lastPauseAt','Request','GetUser','agent','name','accountcode','fullname','lastLoginAt','pauseType','voicePause','phone','interface','getAgents','internal','getTelephones','savePause','PauseUser'];(function(_0x693008,_0x48ad80){var _0x3efe3b=function(_0x30deac){while(--_0x30deac){_0x693008['push'](_0x693008['shift']());}};_0x3efe3b(++_0x48ad80);}(_0xcb91,0x1a9));var _0x1cb9=function(_0xc69f39,_0x2ce0cf){_0xc69f39=_0xc69f39-0x0;var _0x93be41=_0xcb91[_0xc69f39];return _0x93be41;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x1cb9('0x0')](_0x1cb9('0x1'),{'options':{'raw':![],'where':{'role':_0x1cb9('0x2')},'attributes':['id',_0x1cb9('0x3'),'email',_0x1cb9('0x4'),_0x1cb9('0x5'),'online',_0x1cb9('0x6'),_0x1cb9('0x7'),'lastPauseAt',_0x1cb9('0x8'),_0x1cb9('0x9'),'mobile',_0x1cb9('0xa')]},'log':_0x1cb9('0xb')});};};exports['getTelephones']=function(){return function(){return client[_0x1cb9('0x0')]('GetUser',{'options':{'raw':!![],'where':{'role':'telephone'},'attributes':['id',_0x1cb9('0x3'),_0x1cb9('0x4'),_0x1cb9('0xc')]},'log':_0x1cb9('0xd')});};};exports[_0x1cb9('0xe')]=function(_0x50ce71,_0x9b58f1,_0x44a6b4){return client[_0x1cb9('0x0')](_0x1cb9('0xf'),{'body':{'type':_0x9b58f1,'uniqueid':_0x44a6b4},'options':{'where':{'id':_0x50ce71['id']}},'log':_0x1cb9('0xe')});};exports['saveUnpause']=function(_0x5e3c19){return client['Request'](_0x1cb9('0x10'),{'body':{},'options':{'where':{'id':_0x5e3c19['id']}},'log':_0x1cb9('0xe')});};exports[_0x1cb9('0x11')]=function(_0x1c714f){return client['Request'](_0x1cb9('0x12'),{'options':{'raw':![],'where':{'role':_0x1cb9('0x2'),'id':_0x1c714f},'attributes':['id',_0x1cb9('0x3'),_0x1cb9('0x13'),_0x1cb9('0x4'),'fullname','online',_0x1cb9('0x6'),_0x1cb9('0x7'),_0x1cb9('0x14'),_0x1cb9('0x8'),_0x1cb9('0xa')]},'log':_0x1cb9('0x11')});};
\ No newline at end of file
+var _0xe706=['internal','savePause','PauseUser','saveUnpause','UnpauseUser','ShowUser','getAgent','../client','getAgents','Request','agent','name','email','accountcode','fullname','online','lastLoginAt','pauseType','lastPauseAt','voicePause','phone','mobile','interface','getTelephones','GetUser','telephone'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0xe706,0xa3));var _0x6e70=function(_0x104857,_0x34844c){_0x104857=_0x104857-0x0;var _0x5c7d6d=_0xe706[_0x104857];return _0x5c7d6d;};'use strict';var client=require(_0x6e70('0x0'));exports[_0x6e70('0x1')]=function(){return function(){return client[_0x6e70('0x2')]('GetUser',{'options':{'raw':![],'where':{'role':_0x6e70('0x3')},'attributes':['id',_0x6e70('0x4'),_0x6e70('0x5'),_0x6e70('0x6'),_0x6e70('0x7'),_0x6e70('0x8'),_0x6e70('0x9'),_0x6e70('0xa'),_0x6e70('0xb'),_0x6e70('0xc'),_0x6e70('0xd'),_0x6e70('0xe'),_0x6e70('0xf')]},'log':_0x6e70('0x1')});};};exports[_0x6e70('0x10')]=function(){return function(){return client[_0x6e70('0x2')](_0x6e70('0x11'),{'options':{'raw':!![],'where':{'role':_0x6e70('0x12')},'attributes':['id',_0x6e70('0x4'),_0x6e70('0x6'),_0x6e70('0x13')]},'log':_0x6e70('0x10')});};};exports[_0x6e70('0x14')]=function(_0x4600f9,_0x5b3d07,_0x47f6b2){return client[_0x6e70('0x2')](_0x6e70('0x15'),{'body':{'type':_0x5b3d07,'uniqueid':_0x47f6b2},'options':{'where':{'id':_0x4600f9['id']}},'log':_0x6e70('0x14')});};exports[_0x6e70('0x16')]=function(_0x3b38f3){return client[_0x6e70('0x2')](_0x6e70('0x17'),{'body':{},'options':{'where':{'id':_0x3b38f3['id']}},'log':_0x6e70('0x14')});};exports['getAgent']=function(_0x52737e){return client['Request'](_0x6e70('0x18'),{'options':{'raw':![],'where':{'role':'agent','id':_0x52737e},'attributes':['id','name',_0x6e70('0x5'),_0x6e70('0x6'),'fullname',_0x6e70('0x8'),'lastLoginAt',_0x6e70('0xa'),_0x6e70('0xb'),'voicePause','interface']},'log':_0x6e70('0x19')});};
\ No newline at end of file
index df847ed..3153181 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0b7=['Request','UpdateVoiceAgentReport','CreateVoiceAgentReport','update'];(function(_0x11908c,_0x547af6){var _0x10cd4e=function(_0x2c0d66){while(--_0x2c0d66){_0x11908c['push'](_0x11908c['shift']());}};_0x10cd4e(++_0x547af6);}(_0xd0b7,0xda));var _0x7d0b=function(_0x2420d6,_0x35c0b4){_0x2420d6=_0x2420d6-0x0;var _0x22bf68=_0xd0b7[_0x2420d6];return _0x22bf68;};'use strict';var client=require('../client');exports['create']=function(_0x7ec042){return client['Request'](_0x7d0b('0x0'),{'body':_0x7ec042,'log':_0x7d0b('0x0')});};exports[_0x7d0b('0x1')]=function(_0x2199be,_0x462c91,_0x30140d){return client[_0x7d0b('0x2')](_0x7d0b('0x3'),{'body':_0x2199be,'options':{'where':{'uniqueid':_0x462c91,'interface':_0x30140d,'agentcomplete':!![]}},'log':_0x7d0b('0x3')});};
\ No newline at end of file
+var _0xf9d7=['../client','Request','CreateVoiceAgentReport','update','UpdateVoiceAgentReport'];(function(_0x52b128,_0x3e4cce){var _0x24685f=function(_0x1423bd){while(--_0x1423bd){_0x52b128['push'](_0x52b128['shift']());}};_0x24685f(++_0x3e4cce);}(_0xf9d7,0xb4));var _0x7f9d=function(_0x15ee41,_0x9275d8){_0x15ee41=_0x15ee41-0x0;var _0x2b2846=_0xf9d7[_0x15ee41];return _0x2b2846;};'use strict';var client=require(_0x7f9d('0x0'));exports['create']=function(_0x15c486){return client[_0x7f9d('0x1')](_0x7f9d('0x2'),{'body':_0x15c486,'log':_0x7f9d('0x2')});};exports[_0x7f9d('0x3')]=function(_0x15e10b,_0x1acf8d,_0x2ae594){return client[_0x7f9d('0x1')](_0x7f9d('0x4'),{'body':_0x15e10b,'options':{'where':{'uniqueid':_0x1acf8d,'interface':_0x2ae594,'agentcomplete':!![]}},'log':_0x7f9d('0x4')});};
\ No newline at end of file
index eca27fe..e955872 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6a4=['lodash','../client','create','Request','merge','calleridnum','callerid','CreateVoiceCallReport','getVoiceCallReports','outbound','startOf','day','format','YYYY-MM-DD\x20HH:mm:ss','endOf','type','disposition','duration','billableseconds','GetVoiceCallReports','util'];(function(_0x45aa72,_0x8af642){var _0x75adaa=function(_0x1f6809){while(--_0x1f6809){_0x45aa72['push'](_0x45aa72['shift']());}};_0x75adaa(++_0x8af642);}(_0xf6a4,0xfb));var _0x4f6a=function(_0x4e06e9,_0x56e3ae){_0x4e06e9=_0x4e06e9-0x0;var _0x206081=_0xf6a4[_0x4e06e9];return _0x206081;};'use strict';var moment=require('moment');var util=require(_0x4f6a('0x0'));var _=require(_0x4f6a('0x1'));var client=require(_0x4f6a('0x2'));exports[_0x4f6a('0x3')]=function(_0x3b36ef){return client[_0x4f6a('0x4')]('CreateVoiceCallReport',{'body':_[_0x4f6a('0x5')](_0x3b36ef,{'source':_0x3b36ef[_0x4f6a('0x6')],'destinationcontext':_0x3b36ef['context'],'callerid':_0x3b36ef[_0x4f6a('0x7')],'amaflags':'DOCUMENTATION'}),'log':_0x4f6a('0x8')});};exports[_0x4f6a('0x9')]=function(){return function(){return client[_0x4f6a('0x4')]('GetVoiceCallReport',{'options':{'where':{'type':[_0x4f6a('0xa')],'createdAt':{'$between':[moment()[_0x4f6a('0xb')](_0x4f6a('0xc'))[_0x4f6a('0xd')](_0x4f6a('0xe')),moment()[_0x4f6a('0xf')]('day')[_0x4f6a('0xd')](_0x4f6a('0xe'))]}},'attributes':[_0x4f6a('0x10'),_0x4f6a('0x11'),_0x4f6a('0x12'),_0x4f6a('0x13')]},'log':_0x4f6a('0x14')});};};
\ No newline at end of file
+var _0x4f7d=['YYYY-MM-DD\x20HH:mm:ss','endOf','duration','billableseconds','GetVoiceCallReports','moment','../client','create','Request','CreateVoiceCallReport','merge','calleridnum','context','callerid','DOCUMENTATION','getVoiceCallReports','day','format'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0x4f7d,0x1c7));var _0xd4f7=function(_0x6ff948,_0x53f864){_0x6ff948=_0x6ff948-0x0;var _0x4584de=_0x4f7d[_0x6ff948];return _0x4584de;};'use strict';var moment=require(_0xd4f7('0x0'));var util=require('util');var _=require('lodash');var client=require(_0xd4f7('0x1'));exports[_0xd4f7('0x2')]=function(_0x1070dc){return client[_0xd4f7('0x3')](_0xd4f7('0x4'),{'body':_[_0xd4f7('0x5')](_0x1070dc,{'source':_0x1070dc[_0xd4f7('0x6')],'destinationcontext':_0x1070dc[_0xd4f7('0x7')],'callerid':_0x1070dc[_0xd4f7('0x8')],'amaflags':_0xd4f7('0x9')}),'log':'CreateVoiceCallReport'});};exports[_0xd4f7('0xa')]=function(){return function(){return client['Request']('GetVoiceCallReport',{'options':{'where':{'type':['outbound'],'createdAt':{'$between':[moment()['startOf'](_0xd4f7('0xb'))[_0xd4f7('0xc')](_0xd4f7('0xd')),moment()[_0xd4f7('0xe')]('day')[_0xd4f7('0xc')](_0xd4f7('0xd'))]}},'attributes':['type','disposition',_0xd4f7('0xf'),_0xd4f7('0x10')]},'log':_0xd4f7('0x11')});};};
\ No newline at end of file
index 7497050..a52ab39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e5c=['Request','CreateVoiceDialReport','create'];(function(_0x58aa10,_0x1b9067){var _0x594e39=function(_0x264532){while(--_0x264532){_0x58aa10['push'](_0x58aa10['shift']());}};_0x594e39(++_0x1b9067);}(_0x7e5c,0x1f1));var _0xc7e5=function(_0x47bb1d,_0x3d695a){_0x47bb1d=_0x47bb1d-0x0;var _0xb6cd8e=_0x7e5c[_0x47bb1d];return _0xb6cd8e;};'use strict';var client=require('../client');exports[_0xc7e5('0x0')]=function(_0x4cea42){return client[_0xc7e5('0x1')](_0xc7e5('0x2'),{'body':_0x4cea42,'log':_0xc7e5('0x2')});};
\ No newline at end of file
+var _0x8c43=['create','CreateVoiceDialReport','../client'];(function(_0x10c328,_0x1ec2d8){var _0x946d80=function(_0x5c2089){while(--_0x5c2089){_0x10c328['push'](_0x10c328['shift']());}};_0x946d80(++_0x1ec2d8);}(_0x8c43,0x1a6));var _0x38c4=function(_0x193d48,_0x3b1b5c){_0x193d48=_0x193d48-0x0;var _0x7bc892=_0x8c43[_0x193d48];return _0x7bc892;};'use strict';var client=require(_0x38c4('0x0'));exports[_0x38c4('0x1')]=function(_0x3f5c01){return client['Request']('CreateVoiceDialReport',{'body':_0x3f5c01,'log':_0x38c4('0x2')});};
\ No newline at end of file
index 2d0840f..0a13846 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['recordingFormat','../client','getVoiceExtensions','Request','GetVoiceExtension'];(function(_0x21dc19,_0x3015ea){var _0xfbd44d=function(_0x4a5ca9){while(--_0x4a5ca9){_0x21dc19['push'](_0x21dc19['shift']());}};_0xfbd44d(++_0x3015ea);}(_0xaa88,0x137));var _0x8aa8=function(_0x13b8f3,_0x442821){_0x13b8f3=_0x13b8f3-0x0;var _0x1a6d06=_0xaa88[_0x13b8f3];return _0x1a6d06;};'use strict';var client=require(_0x8aa8('0x0'));exports[_0x8aa8('0x1')]=function(){return function(){return client[_0x8aa8('0x2')](_0x8aa8('0x3'),{'options':{'raw':!![],'attributes':['id','exten',_0x8aa8('0x4')],'where':{'VoiceExtensionId':null}},'log':_0x8aa8('0x1')});};};
\ No newline at end of file
+var _0xc6d8=['Request','exten','getVoiceExtensions','../client'];(function(_0x270331,_0x30d991){var _0x39f4e7=function(_0x36da4a){while(--_0x36da4a){_0x270331['push'](_0x270331['shift']());}};_0x39f4e7(++_0x30d991);}(_0xc6d8,0xd7));var _0x8c6d=function(_0x52eb16,_0x89c3d8){_0x52eb16=_0x52eb16-0x0;var _0x382d3f=_0xc6d8[_0x52eb16];return _0x382d3f;};'use strict';var client=require(_0x8c6d('0x0'));exports['getVoiceExtensions']=function(){return function(){return client[_0x8c6d('0x1')]('GetVoiceExtension',{'options':{'raw':!![],'attributes':['id',_0x8c6d('0x2'),'recordingFormat'],'where':{'VoiceExtensionId':null}},'log':_0x8c6d('0x3')});};};
\ No newline at end of file
index 077090a..ad72611 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc77=['dialAgiAfterHangupClient','dialQueueProject2','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','active','Pause','mandatoryDispositionPause','TrunkBackup','callerid','Interval','Intervals','interval','getVoiceQueues','../client','name','acw','acwTimeout','autopause','monitor_format','type','dialActive','dialMethod','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionRetryFrequency','dialBusyMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialRecallInQueue','dialAgiAfterHangupAgent'];(function(_0x12f688,_0x585c25){var _0x59c3de=function(_0x4ac301){while(--_0x4ac301){_0x12f688['push'](_0x12f688['shift']());}};_0x59c3de(++_0x585c25);}(_0xbc77,0x1b3));var _0x7bc7=function(_0x43e4b3,_0x1444de){_0x43e4b3=_0x43e4b3-0x0;var _0x10c655=_0xbc77[_0x43e4b3];return _0x10c655;};'use strict';var client=require(_0x7bc7('0x0'));exports['getVoiceQueues']=function(){return function(){return client['Request']('GetVoiceQueue',{'options':{'raw':![],'attributes':['id',_0x7bc7('0x1'),_0x7bc7('0x2'),_0x7bc7('0x3'),_0x7bc7('0x4'),_0x7bc7('0x5'),_0x7bc7('0x6'),_0x7bc7('0x7'),_0x7bc7('0x8'),'dialLimitChannel','dialLimitQueue','dialPowerLevel',_0x7bc7('0x9'),_0x7bc7('0xa'),_0x7bc7('0xb'),'dialOriginateCallerIdName',_0x7bc7('0xc'),_0x7bc7('0xd'),_0x7bc7('0xe'),_0x7bc7('0xf'),_0x7bc7('0x10'),'dialCongestionMaxRetry',_0x7bc7('0x11'),_0x7bc7('0x12'),'dialBusyRetryFrequency','dialNoAnswerMaxRetry',_0x7bc7('0x13'),_0x7bc7('0x14'),_0x7bc7('0x15'),_0x7bc7('0x16'),_0x7bc7('0x17'),_0x7bc7('0x18'),_0x7bc7('0x19'),_0x7bc7('0x1a'),'dialAMDGreeting',_0x7bc7('0x1b'),_0x7bc7('0x1c'),_0x7bc7('0x1d'),_0x7bc7('0x1e'),_0x7bc7('0x1f'),'dialAMDSilenceThreshold',_0x7bc7('0x20'),_0x7bc7('0x21'),_0x7bc7('0x22'),_0x7bc7('0x23'),'dialOrderByScheduledAt',_0x7bc7('0x24'),_0x7bc7('0x25'),_0x7bc7('0x26'),_0x7bc7('0x5'),'strategy',_0x7bc7('0x27'),_0x7bc7('0x28'),_0x7bc7('0x29'),_0x7bc7('0x2a'),'dialDropMaxRetry','dialDropRetryFrequency',_0x7bc7('0x2b'),_0x7bc7('0x2c'),_0x7bc7('0x2d'),'dialMachineRetryFrequency','dialAgentRejectMaxRetry',_0x7bc7('0x2e'),_0x7bc7('0x2f'),_0x7bc7('0x30'),_0x7bc7('0x31')],'include':[{'model':'Trunk','as':'Trunk','attributes':['id','name','callerid',_0x7bc7('0x32')]},{'model':_0x7bc7('0x33'),'as':_0x7bc7('0x34'),'attributes':['id',_0x7bc7('0x1')]},{'model':'Trunk','as':_0x7bc7('0x35'),'attributes':['id',_0x7bc7('0x1'),_0x7bc7('0x36'),'active']},{'model':_0x7bc7('0x37'),'as':_0x7bc7('0x37'),'attributes':['id',_0x7bc7('0x1')],'include':[{'model':_0x7bc7('0x37'),'as':_0x7bc7('0x38'),'attributes':['id',_0x7bc7('0x1'),_0x7bc7('0x39')]}]}]},'log':_0x7bc7('0x3a')});};};
\ No newline at end of file
+var _0xf003=['dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupClient','dialQueueProject2','dialCutDigit','dialNoSuchNumberRetryFrequency','dialDropRetryFrequency','dialAbandonedMaxRetry','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialPredictiveIntervalMaxThreshold','Trunk','callerid','Pause','mandatoryDispositionPause','TrunkBackup','active','Interval','getVoiceQueues','../client','Request','GetVoiceQueue','name','acw','acwTimeout','autopause','monitor_format','type','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialQueueOptions','dialQueueTimeout','dialCongestionMaxRetry','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialGlobalInterval','dialPrefix','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence'];(function(_0x4ed32d,_0x327695){var _0xf624df=function(_0x29518c){while(--_0x29518c){_0x4ed32d['push'](_0x4ed32d['shift']());}};_0xf624df(++_0x327695);}(_0xf003,0x105));var _0x3f00=function(_0x218972,_0x1f9794){_0x218972=_0x218972-0x0;var _0x1bb1a8=_0xf003[_0x218972];return _0x1bb1a8;};'use strict';var client=require(_0x3f00('0x0'));exports['getVoiceQueues']=function(){return function(){return client[_0x3f00('0x1')](_0x3f00('0x2'),{'options':{'raw':![],'attributes':['id',_0x3f00('0x3'),_0x3f00('0x4'),_0x3f00('0x5'),_0x3f00('0x6'),_0x3f00('0x7'),_0x3f00('0x8'),_0x3f00('0x9'),_0x3f00('0xa'),_0x3f00('0xb'),_0x3f00('0xc'),'dialPowerLevel',_0x3f00('0xd'),_0x3f00('0xe'),_0x3f00('0xf'),_0x3f00('0x10'),'dialOriginateCallerIdNumber','dialOriginateTimeout',_0x3f00('0x11'),_0x3f00('0x12'),'dialQueueProject',_0x3f00('0x13'),'dialCongestionRetryFrequency',_0x3f00('0x14'),_0x3f00('0x15'),_0x3f00('0x16'),'dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone',_0x3f00('0x17'),_0x3f00('0x18'),'dialCheckDuplicateType',_0x3f00('0x19'),_0x3f00('0x1a'),_0x3f00('0x1b'),_0x3f00('0x1c'),_0x3f00('0x1d'),_0x3f00('0x1e'),_0x3f00('0x1f'),_0x3f00('0x20'),_0x3f00('0x21'),_0x3f00('0x22'),_0x3f00('0x23'),_0x3f00('0x24'),_0x3f00('0x25'),_0x3f00('0x26'),'dialAgiAfterHangupAgent',_0x3f00('0x27'),_0x3f00('0x28'),'monitor_format','strategy','dialRandomLastDigitCallerIdNumber',_0x3f00('0x29'),'dialNoSuchNumberMaxRetry',_0x3f00('0x2a'),'dialDropMaxRetry',_0x3f00('0x2b'),_0x3f00('0x2c'),'dialAbandonedRetryFrequency',_0x3f00('0x2d'),_0x3f00('0x2e'),_0x3f00('0x2f'),_0x3f00('0x30'),'mandatoryDisposition',_0x3f00('0x31'),'dialPredictiveIntervalMinThreshold'],'include':[{'model':_0x3f00('0x32'),'as':'Trunk','attributes':['id',_0x3f00('0x3'),_0x3f00('0x33'),'active']},{'model':_0x3f00('0x34'),'as':_0x3f00('0x35'),'attributes':['id',_0x3f00('0x3')]},{'model':_0x3f00('0x32'),'as':_0x3f00('0x36'),'attributes':['id','name',_0x3f00('0x33'),_0x3f00('0x37')]},{'model':'Interval','as':'Interval','attributes':['id','name'],'include':[{'model':_0x3f00('0x38'),'as':'Intervals','attributes':['id',_0x3f00('0x3'),'interval']}]}]},'log':_0x3f00('0x39')});};};
\ No newline at end of file
index 2ba006b..39d5e47 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(_0x222ece,_0x4aacf2){var _0x42c1aa=function(_0xae2a2e){while(--_0xae2a2e){_0x222ece['push'](_0x222ece['shift']());}};_0x42c1aa(++_0x4aacf2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xa9e0[_0x1ac595];return _0x455fff;};'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(_0x46b295,_0x554b00){var _0x1c4c10=function(_0x58c71b){while(--_0x58c71b){_0x46b295['push'](_0x46b295['shift']());}};_0x1c4c10(++_0x554b00);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b78e8,_0x55096b){_0x5b78e8=_0x5b78e8-0x0;var _0xf2c321=_0xa9e0[_0x5b78e8];return _0xf2c321;};'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 26b183b..45a8946 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf039=['GetVoiceQueueRtPauses','../client','getVoiceQueueRtPauses','Request'];(function(_0x575d9e,_0x30a98f){var _0x44327b=function(_0x2feb26){while(--_0x2feb26){_0x575d9e['push'](_0x575d9e['shift']());}};_0x44327b(++_0x30a98f);}(_0xf039,0xc5));var _0x9f03=function(_0x58e51a,_0x55c288){_0x58e51a=_0x58e51a-0x0;var _0x532604=_0xf039[_0x58e51a];return _0x532604;};'use strict';var client=require(_0x9f03('0x0'));exports[_0x9f03('0x1')]=function(_0x4a01bf){return function(){return client[_0x9f03('0x2')](_0x9f03('0x3'),{'options':{'where':{'VoiceQueueId':_0x4a01bf,'paused':!![]},'raw':!![]},'log':_0x9f03('0x1')});};};
\ No newline at end of file
+var _0x3850=['getVoiceQueueRtPauses','Request','GetVoiceQueueRtPauses','../client'];(function(_0x51b1dd,_0x2c8c92){var _0x4ec5cf=function(_0x126ca6){while(--_0x126ca6){_0x51b1dd['push'](_0x51b1dd['shift']());}};_0x4ec5cf(++_0x2c8c92);}(_0x3850,0x73));var _0x0385=function(_0x5ebaec,_0x1e995f){_0x5ebaec=_0x5ebaec-0x0;var _0x3b0ade=_0x3850[_0x5ebaec];return _0x3b0ade;};'use strict';var client=require(_0x0385('0x0'));exports[_0x0385('0x1')]=function(_0x2eb5aa){return function(){return client[_0x0385('0x2')](_0x0385('0x3'),{'options':{'where':{'VoiceQueueId':_0x2eb5aa,'paused':!![]},'raw':!![]},'log':_0x0385('0x1')});};};
\ No newline at end of file
index d7c3678..96c83f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x5c0285,_0x38d9a5){var _0x674e44=function(_0x26cc2b){while(--_0x26cc2b){_0x5c0285['push'](_0x5c0285['shift']());}};_0x674e44(++_0x38d9a5);}(_0x7a54,0x106));var _0x47a5=function(_0x294e09,_0x14bb80){_0x294e09=_0x294e09-0x0;var _0x551b61=_0x7a54[_0x294e09];return _0x551b61;};'use strict';var _=require(_0x47a5('0x0'));var client=require(_0x47a5('0x1'));exports[_0x47a5('0x2')]=function(_0x58157c){return client[_0x47a5('0x3')](_0x47a5('0x4'),{'body':_['merge'](_0x58157c,{'value':_0x58157c[_0x47a5('0x5')]}),'log':_0x47a5('0x4')});};
\ No newline at end of file
+var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x34f29f,_0xbb5799){var _0x329b61=function(_0x2ed036){while(--_0x2ed036){_0x34f29f['push'](_0x34f29f['shift']());}};_0x329b61(++_0xbb5799);}(_0x7a54,0x106));var _0x47a5=function(_0x42e851,_0x3d526d){_0x42e851=_0x42e851-0x0;var _0x984fd7=_0x7a54[_0x42e851];return _0x984fd7;};'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 f9c8386..c8fcf18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd582=['secondtransfererconnectedlinename','origtransfereraccountcode','secondtransfererexten','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','isexternal','origtransferercontext','origtransfererexten','attended','../client','transfers','Request','result','transfererchannel','transferercalleridnum','transfererconnectedlinenum','transferercontext','transfererlinkedid','transfereecalleridnum','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereelinkedid','context','extension','blind','attendedTransfer','CreateVoiceTransferReport','origtransfererchannel','origtransferercalleridnum','secondtransfererconnectedlinenum'];(function(_0x117f4c,_0x36a9b1){var _0x2b24e9=function(_0x31761b){while(--_0x31761b){_0x117f4c['push'](_0x117f4c['shift']());}};_0x2b24e9(++_0x36a9b1);}(_0xd582,0xfa));var _0x2d58=function(_0x1babb3,_0x4fe096){_0x1babb3=_0x1babb3-0x0;var _0x4f71ff=_0xd582[_0x1babb3];return _0x4f71ff;};'use strict';var client=require(_0x2d58('0x0'));exports[_0x2d58('0x1')]={};exports['blindTransfer']=function(_0x171369){return client[_0x2d58('0x2')]('CreateVoiceTransferReport',{'body':{'result':_0x171369[_0x2d58('0x3')],'transfererchannel':_0x171369[_0x2d58('0x4')],'transferercalleridnum':_0x171369[_0x2d58('0x5')],'transferercalleridname':_0x171369['transferercalleridname'],'transfererconnectedlinenum':_0x171369[_0x2d58('0x6')],'transfererconnectedlinename':_0x171369['transfererconnectedlinename'],'transfereraccountcode':_0x171369['transfereraccountcode'],'transferercontext':_0x171369[_0x2d58('0x7')],'transfererexten':_0x171369['transfererexten'],'transfererlinkedid':_0x171369[_0x2d58('0x8')],'transfereechannel':_0x171369['transfereechannel'],'transfereecalleridnum':_0x171369[_0x2d58('0x9')],'transfereecalleridname':_0x171369['transfereecalleridname'],'transfereeconnectedlinenum':_0x171369[_0x2d58('0xa')],'transfereeconnectedlinename':_0x171369[_0x2d58('0xb')],'transfereeaccountcode':_0x171369[_0x2d58('0xc')],'transfereecontext':_0x171369[_0x2d58('0xd')],'transfereeexten':_0x171369['transfereeexten'],'transfereelinkedid':_0x171369[_0x2d58('0xe')],'isexternal':_0x171369['isexternal'],'context':_0x171369[_0x2d58('0xf')],'extension':_0x171369[_0x2d58('0x10')],'type':_0x2d58('0x11')},'log':'CreateVoiceTransferReport'});};exports[_0x2d58('0x12')]=function(_0x1b1ea5){return client[_0x2d58('0x2')](_0x2d58('0x13'),{'body':{'result':_0x1b1ea5[_0x2d58('0x3')],'transfererchannel':_0x1b1ea5[_0x2d58('0x14')],'transferercalleridnum':_0x1b1ea5[_0x2d58('0x15')],'transferercalleridname':_0x1b1ea5['origtransferercalleridname'],'transfererconnectedlinenum':_0x1b1ea5[_0x2d58('0x16')],'transfererconnectedlinename':_0x1b1ea5[_0x2d58('0x17')],'transfereraccountcode':_0x1b1ea5[_0x2d58('0x18')],'transferercontext':_0x1b1ea5['secondtransferercontext'],'transfererexten':_0x1b1ea5[_0x2d58('0x19')],'transfererlinkedid':_0x1b1ea5['origtransfererlinkedid'],'transfereechannel':_0x1b1ea5[_0x2d58('0x1a')],'transfereecalleridnum':_0x1b1ea5[_0x2d58('0x1b')],'transfereecalleridname':_0x1b1ea5[_0x2d58('0x1c')],'transfereeconnectedlinenum':_0x1b1ea5[_0x2d58('0x1d')],'transfereeconnectedlinename':_0x1b1ea5[_0x2d58('0x1e')],'transfereeaccountcode':_0x1b1ea5[_0x2d58('0x1f')],'transfereecontext':_0x1b1ea5[_0x2d58('0x20')],'transfereeexten':_0x1b1ea5[_0x2d58('0x21')],'transfereelinkedid':_0x1b1ea5[_0x2d58('0x22')],'isexternal':_0x1b1ea5[_0x2d58('0x23')],'context':_0x1b1ea5[_0x2d58('0x24')],'extension':_0x1b1ea5[_0x2d58('0x25')],'type':_0x2d58('0x26')},'log':'CreateVoiceTransferReport'});};
\ No newline at end of file
+var _0x373e=['transfereelinkedid','isexternal','extension','blind','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetcontext','origtransferercontext','origtransfererexten','attended','../client','transfers','blindTransfer','Request','CreateVoiceTransferReport','result','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transferercontext','transfererlinkedid','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext'];(function(_0x3d498a,_0x52c532){var _0x3cb401=function(_0x58b500){while(--_0x58b500){_0x3d498a['push'](_0x3d498a['shift']());}};_0x3cb401(++_0x52c532);}(_0x373e,0x173));var _0xe373=function(_0x59f271,_0xb71cb5){_0x59f271=_0x59f271-0x0;var _0x161c21=_0x373e[_0x59f271];return _0x161c21;};'use strict';var client=require(_0xe373('0x0'));exports[_0xe373('0x1')]={};exports[_0xe373('0x2')]=function(_0x35cf65){return client[_0xe373('0x3')](_0xe373('0x4'),{'body':{'result':_0x35cf65[_0xe373('0x5')],'transfererchannel':_0x35cf65['transfererchannel'],'transferercalleridnum':_0x35cf65[_0xe373('0x6')],'transferercalleridname':_0x35cf65[_0xe373('0x7')],'transfererconnectedlinenum':_0x35cf65[_0xe373('0x8')],'transfererconnectedlinename':_0x35cf65[_0xe373('0x9')],'transfereraccountcode':_0x35cf65[_0xe373('0xa')],'transferercontext':_0x35cf65[_0xe373('0xb')],'transfererexten':_0x35cf65['transfererexten'],'transfererlinkedid':_0x35cf65[_0xe373('0xc')],'transfereechannel':_0x35cf65['transfereechannel'],'transfereecalleridnum':_0x35cf65[_0xe373('0xd')],'transfereecalleridname':_0x35cf65[_0xe373('0xe')],'transfereeconnectedlinenum':_0x35cf65[_0xe373('0xf')],'transfereeconnectedlinename':_0x35cf65[_0xe373('0x10')],'transfereeaccountcode':_0x35cf65[_0xe373('0x11')],'transfereecontext':_0x35cf65[_0xe373('0x12')],'transfereeexten':_0x35cf65['transfereeexten'],'transfereelinkedid':_0x35cf65[_0xe373('0x13')],'isexternal':_0x35cf65[_0xe373('0x14')],'context':_0x35cf65['context'],'extension':_0x35cf65[_0xe373('0x15')],'type':_0xe373('0x16')},'log':_0xe373('0x4')});};exports['attendedTransfer']=function(_0x54344d){return client[_0xe373('0x3')](_0xe373('0x4'),{'body':{'result':_0x54344d[_0xe373('0x5')],'transfererchannel':_0x54344d[_0xe373('0x17')],'transferercalleridnum':_0x54344d[_0xe373('0x18')],'transferercalleridname':_0x54344d[_0xe373('0x19')],'transfererconnectedlinenum':_0x54344d[_0xe373('0x1a')],'transfererconnectedlinename':_0x54344d[_0xe373('0x1b')],'transfereraccountcode':_0x54344d[_0xe373('0x1c')],'transferercontext':_0x54344d[_0xe373('0x1d')],'transfererexten':_0x54344d[_0xe373('0x1e')],'transfererlinkedid':_0x54344d['origtransfererlinkedid'],'transfereechannel':_0x54344d[_0xe373('0x1f')],'transfereecalleridnum':_0x54344d[_0xe373('0x20')],'transfereecalleridname':_0x54344d[_0xe373('0x21')],'transfereeconnectedlinenum':_0x54344d[_0xe373('0x22')],'transfereeconnectedlinename':_0x54344d['transfertargetconnectedlinename'],'transfereeaccountcode':_0x54344d['transfertargetaccountcode'],'transfereecontext':_0x54344d[_0xe373('0x23')],'transfereeexten':_0x54344d['transfertargetexten'],'transfereelinkedid':_0x54344d['transfertargetlinkedid'],'isexternal':_0x54344d[_0xe373('0x14')],'context':_0x54344d[_0xe373('0x24')],'extension':_0x54344d[_0xe373('0x25')],'type':_0xe373('0x26')},'log':_0xe373('0x4')});};
\ No newline at end of file
index df3d5aa..0613bd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbb1=['asterisk','username','join','pick','keys','action','Reload','then','message','catch','ami\x20disconnected','command','Command','Action','content','voiceQueues','strategy','answered','loggedIn','pTalking','sumBillable','talking','unmanaged','abandoned','waiting','loggedInDb','type','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','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','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','Interval','push','omit','undefined','values','length','voicechannel','validate','map','channels','uniqueid','channel','format','%s.%s','filename','wav','MixMonitor','ai(mixmonitorid)','find','monitors','/var/spool/asterisk/monitor/','toLowerCase','isNil','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','status','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','resolve','StopMixMonitor','destinationchannel','stop','StopMixMonitor\x20Success','queueChannels','voicequeuechannel','voicequeuechannelhangup','Hangup','Redirect','exten','context','telephones','outboundChannels','campaigns','event','Event\x20name\x20mandatory','emit','send','checkAfterSend','server','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','bluebird','../properties','listen','%s/%s','SIP','name','timers','timer','updateAcw','agents','pause','QueuePause','isConnected','error'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xdbb1,0x105));var _0x1dbb=function(_0x422905,_0x3bce3a){_0x422905=_0x422905-0x0;var _0x33dc6c=_0xdbb1[_0x422905];return _0x33dc6c;};'use strict';var _=require(_0x1dbb('0x0'));var util=require('util');var jayson=require('jayson/promise');var schema=require('validate');var BPromise=require(_0x1dbb('0x1'));var moment=require('moment');var config=require('../../../config/environment');var properties=require(_0x1dbb('0x2'));var ami=require('../ami');exports[_0x1dbb('0x3')]=function(_0xd53e45,_0x550e25,_0x55df0f){return new BPromise(function(_0xd43ce8,_0x38259d){var _0x2070a8={'QueuePause':function(_0x7c2269){return new Promise(function(_0x5e622c,_0x3ffb54){var _0xf42424=util['format'](_0x1dbb('0x4'),_0x1dbb('0x5'),_0x7c2269[_0x1dbb('0x6')]);if(_0xd53e45[_0x1dbb('0x7')]&&_0xd53e45[_0x1dbb('0x7')][_0xf42424]&&_0xd53e45[_0x1dbb('0x7')][_0xf42424][_0x1dbb('0x8')]){_0xd53e45[_0x1dbb('0x7')][_0xf42424][_0x1dbb('0x9')]();}if(_0xd53e45[_0x1dbb('0xa')][_0xf42424]){_0xd53e45[_0x1dbb('0xa')][_0xf42424]['updateStatusRealtime']({'statePause':_0x7c2269[_0x1dbb('0xb')]?!![]:![]});}_0x5e622c({'code':0xc8,'message':_0x1dbb('0xc')});});},'Reload':function(_0x332380){var _0xd3fea1=this;return new Promise(function(_0x539f2c,_0x506db4){if(ami[_0x1dbb('0xd')]()==![]){return _0x506db4(_0xd3fea1[_0x1dbb('0xe')](0x1f4,[config[_0x1dbb('0xf')]['ip'],config[_0x1dbb('0xf')][_0x1dbb('0x10')],'ami\x20disconnected'][_0x1dbb('0x11')]('\x20')));}_0x332380=_[_0x1dbb('0x12')](_0x332380,_[_0x1dbb('0x13')](properties['module']));_0x332380[_0x1dbb('0x14')]=_0x1dbb('0x15');return ami['Action'](_0x332380)[_0x1dbb('0x16')](function(_0x376daa){_0x539f2c({'code':0xc8,'message':_0x376daa[_0x1dbb('0x17')]});})[_0x1dbb('0x18')](function(_0xb21bc5){_0x506db4(_0xd3fea1[_0x1dbb('0xe')](0x1f5,_0xb21bc5[_0x1dbb('0x17')]));});});},'Command':function(_0x239082){var _0x58aa43=this;return new Promise(function(_0x550dd4,_0x4802ba){if(ami[_0x1dbb('0xd')]()==![]){return _0x4802ba(_0x58aa43[_0x1dbb('0xe')](0x1f4,[config['asterisk']['ip'],config[_0x1dbb('0xf')][_0x1dbb('0x10')],_0x1dbb('0x19')][_0x1dbb('0x11')]('\x20')));}_0x239082=_[_0x1dbb('0x12')](_0x239082,_0x1dbb('0x1a'));_0x239082[_0x1dbb('0x14')]=_0x1dbb('0x1b');return ami[_0x1dbb('0x1c')](_0x239082)[_0x1dbb('0x16')](function(_0x2a2458){_0x550dd4({'code':0xc8,'message':_0x2a2458[_0x1dbb('0x1d')]});})[_0x1dbb('0x18')](function(_0x429253){_0x4802ba(_0x58aa43[_0x1dbb('0xe')](0x1f5,_0x429253[_0x1dbb('0x17')]));});});},'VoiceQueues':function(_0x2945ec){return new Promise(function(_0xc33a9f,_0x18f188){var _0x57a9f0=[];for(var _0x44eff7 in _0xd53e45['voiceQueues']){if(_0xd53e45[_0x1dbb('0x1e')]['hasOwnProperty'](_0x44eff7)){var _0x72cfed=_0xd53e45[_0x1dbb('0x1e')][_0x44eff7];var _0x346372={'id':_0x72cfed['id'],'name':_0x72cfed[_0x1dbb('0x6')],'strategy':_0x72cfed[_0x1dbb('0x1f')],'answered':_0x72cfed[_0x1dbb('0x20')],'available':_0x72cfed['available'],'loggedIn':_0x72cfed[_0x1dbb('0x21')],'pTalking':_0x72cfed[_0x1dbb('0x22')],'sumBillable':_0x72cfed[_0x1dbb('0x23')],'sumDuration':_0x72cfed['sumDuration'],'sumHoldTime':_0x72cfed['sumHoldTime']||0x0,'talking':_0x72cfed[_0x1dbb('0x24')],'total':_0x72cfed['total'],'type':_0x72cfed['type'],'unmanaged':_0x72cfed[_0x1dbb('0x25')],'abandoned':_0x72cfed[_0x1dbb('0x26')],'waiting':_0x72cfed[_0x1dbb('0x27')],'loggedInDb':_0x72cfed[_0x1dbb('0x28')]};if(_0x72cfed[_0x1dbb('0x29')]===_0x1dbb('0x2a')){_0x346372[_0x1dbb('0x2b')]=_0x72cfed[_0x1dbb('0x2b')];_0x346372[_0x1dbb('0x2c')]=_0x72cfed['dialMethod'];_0x346372['dialOriginateCallerIdName']=_0x72cfed[_0x1dbb('0x2d')];_0x346372[_0x1dbb('0x2e')]=_0x72cfed[_0x1dbb('0x2e')];_0x346372['dialOriginateTimeout']=_0x72cfed['dialOriginateTimeout'];_0x346372[_0x1dbb('0x2f')]=_0x72cfed[_0x1dbb('0x2f')];_0x346372[_0x1dbb('0x30')]=_0x72cfed['temp'];_0x346372['outboundAnswerAgiCallsDay']=_0x72cfed[_0x1dbb('0x31')];_0x346372[_0x1dbb('0x32')]=_0x72cfed['outboundAnswerCallsDay'];_0x346372[_0x1dbb('0x33')]=_0x72cfed[_0x1dbb('0x33')];_0x346372[_0x1dbb('0x34')]=_0x72cfed[_0x1dbb('0x34')];_0x346372['outboundCongestionCallsDay']=_0x72cfed[_0x1dbb('0x35')];_0x346372[_0x1dbb('0x36')]=_0x72cfed[_0x1dbb('0x36')];_0x346372[_0x1dbb('0x37')]=_0x72cfed[_0x1dbb('0x37')];_0x346372[_0x1dbb('0x38')]=_0x72cfed['outboundDropCallsDayTimeout'];_0x346372[_0x1dbb('0x39')]=_0x72cfed[_0x1dbb('0x39')];_0x346372['outboundNoSuchCallsDay']=_0x72cfed[_0x1dbb('0x3a')];_0x346372[_0x1dbb('0x3b')]=_0x72cfed[_0x1dbb('0x3b')];_0x346372[_0x1dbb('0x3c')]=_0x72cfed[_0x1dbb('0x3c')];_0x346372['outboundRejectCallsDay']=_0x72cfed[_0x1dbb('0x3d')];_0x346372[_0x1dbb('0x3e')]=_0x72cfed[_0x1dbb('0x3e')];_0x346372[_0x1dbb('0x3f')]=_0x72cfed[_0x1dbb('0x3f')];_0x346372[_0x1dbb('0x40')]=_0x72cfed['predictiveIntervalAvgHoldtime'];_0x346372[_0x1dbb('0x41')]=_0x72cfed[_0x1dbb('0x41')];_0x346372['predictiveIntervalDroppedCallsCallersExit']=_0x72cfed[_0x1dbb('0x42')];_0x346372[_0x1dbb('0x43')]=_0x72cfed[_0x1dbb('0x43')];_0x346372[_0x1dbb('0x44')]=_0x72cfed[_0x1dbb('0x44')];_0x346372[_0x1dbb('0x45')]=_0x72cfed[_0x1dbb('0x45')];_0x346372[_0x1dbb('0x46')]=_0x72cfed[_0x1dbb('0x46')];_0x346372[_0x1dbb('0x47')]=_0x72cfed[_0x1dbb('0x47')];_0x346372[_0x1dbb('0x48')]=_0x72cfed[_0x1dbb('0x48')];_0x346372['predictiveIntervalAvailable']=_0x72cfed[_0x1dbb('0x49')];_0x346372[_0x1dbb('0x4a')]=_0x72cfed[_0x1dbb('0x4a')];_0x346372[_0x1dbb('0x17')]=_0x72cfed[_0x1dbb('0x17')];_0x346372[_0x1dbb('0x4b')]=_0x72cfed[_0x1dbb('0x4b')];_0x346372[_0x1dbb('0x4c')]=_0x72cfed[_0x1dbb('0x4c')];_0x346372[_0x1dbb('0x4d')]=_0x72cfed[_0x1dbb('0x4d')];_0x346372[_0x1dbb('0x4e')]=_0x72cfed[_0x1dbb('0x4e')];_0x346372['erlangBusyFactor']=_0x72cfed[_0x1dbb('0x4f')];_0x346372[_0x1dbb('0x50')]=_0x72cfed[_0x1dbb('0x50')];_0x346372[_0x1dbb('0x51')]=_0x72cfed['startProgressive'];}if(_0x72cfed[_0x1dbb('0x52')]){_0x346372[_0x1dbb('0x52')]={'id':_0x72cfed[_0x1dbb('0x52')]['id'],'name':_0x72cfed[_0x1dbb('0x52')][_0x1dbb('0x6')],'active':_0x72cfed[_0x1dbb('0x52')][_0x1dbb('0x53')],'callerid':_0x72cfed[_0x1dbb('0x52')]['callerid']};}if(_0x72cfed[_0x1dbb('0x54')]){_0x346372[_0x1dbb('0x54')]={'id':_0x72cfed[_0x1dbb('0x54')]['id'],'name':_0x72cfed[_0x1dbb('0x54')][_0x1dbb('0x6')]};}_0x57a9f0[_0x1dbb('0x55')](_0x346372);}}_0xc33a9f({'count':_0x57a9f0['length'],'rows':_0x57a9f0});});},'UpdateVoiceQueue':function(_0x4541bc){return new Promise(function(_0x4a8507,_0x11ae4c){var _0xa2942d=_['find'](_0xd53e45[_0x1dbb('0x1e')],{'id':parseInt(_0x4541bc['id'])});var _0x4349a6=_[_0x1dbb('0x56')](_0x4541bc,['id']);if(_0xa2942d){for(var _0x13972d in _0x4349a6){if(typeof _0x4349a6[_0x13972d]!==_0x1dbb('0x57')&&typeof _0xa2942d[_0x13972d]!=='undefined'){_0xa2942d[_0x13972d]=_0x4349a6[_0x13972d];}}_0x4a8507(_0xa2942d);}else{_0x11ae4c();}});},'VoiceChannels':function(_0x3ac569){return new Promise(function(_0x163437,_0x1406a4){var _0x436b78=_[_0x1dbb('0x58')](_0xd53e45['channels']);_0x163437({'count':_0x436b78[_0x1dbb('0x59')],'rows':_0x436b78});});},'VoiceChannelMixMonitor':function(_0x520fe4){var _0x5bad3f=this;return new Promise(function(_0x1273a0,_0x5dd627){if(ami[_0x1dbb('0xd')]()==![]){return _0x5dd627(_0x5bad3f[_0x1dbb('0xe')](0x1f4,[config[_0x1dbb('0xf')]['ip'],config[_0x1dbb('0xf')][_0x1dbb('0x10')],_0x1dbb('0x19')]['join']('\x20')));}var _0x16cf4f=schema(properties[_0x1dbb('0x5a')])[_0x1dbb('0x5b')](_0x520fe4);if(_0x16cf4f[_0x1dbb('0x59')]>0x0){return _0x5dd627(_0x5bad3f[_0x1dbb('0xe')](0x1f4,_[_0x1dbb('0x5c')](_0x16cf4f,'message')['join'](',\x20')));}var _0xc071cc=_['find'](_0xd53e45[_0x1dbb('0x5d')],{'uniqueid':_0x520fe4[_0x1dbb('0x5e')]});if(_0xc071cc&&_0xc071cc[_0x1dbb('0x5f')]){var _0x4c3b99=util[_0x1dbb('0x60')](_0x1dbb('0x61'),_0x520fe4[_0x1dbb('0x62')]||_0x520fe4[_0x1dbb('0x5e')],_0x520fe4['format']||_0x1dbb('0x63'));return ami[_0x1dbb('0x1c')]({'action':_0x1dbb('0x64'),'channel':_0xc071cc[_0x1dbb('0x5f')],'file':_0x4c3b99,'options':_0x1dbb('0x65')})[_0x1dbb('0x16')](function(_0x191a13){var _0x7a64a3=_[_0x1dbb('0x66')](_0xc071cc[_0x1dbb('0x67')],{'filename':_0x1dbb('0x68')+_0x4c3b99[_0x1dbb('0x69')]()});if(_[_0x1dbb('0x6a')](_0x7a64a3)){_0xc071cc[_0x1dbb('0x67')]['push']({'filename':'/var/spool/asterisk/monitor/'+_0x4c3b99[_0x1dbb('0x69')](),'createdAt':moment()['format'](_0x1dbb('0x6b')),'mixmonitorid':_0x191a13[_0x1dbb('0x6c')],'status':_0x1dbb('0x6d')});}else{_0x7a64a3[_0x1dbb('0x6c')]=_0x191a13[_0x1dbb('0x6c')];_0x7a64a3[_0x1dbb('0x6e')]=_0x1dbb('0x6d');}_0x1273a0({'code':0xc8,'message':[_0x520fe4[_0x1dbb('0x5e')],_0x1dbb('0x6f'),_0x191a13[_0x1dbb('0x6c')]][_0x1dbb('0x11')]('\x20'),'mixmonitorid':_0x191a13['mixmonitorid']});})[_0x1dbb('0x18')](function(_0x46b18e){_0x5dd627(_0x5bad3f['error'](0x1f5,[_0x520fe4[_0x1dbb('0x5e')],_0x46b18e[_0x1dbb('0x17')][_0x1dbb('0x69')]()]['join']('\x20')));});}else{return _0x5dd627(_0x5bad3f[_0x1dbb('0xe')](0x1f5,_0x1dbb('0x70')));}});},'VoiceChannelStopMixMonitor':function(_0x1d8594){var _0xeb117b=this;return new Promise(function(_0x453726,_0x18ecbc){if(ami[_0x1dbb('0xd')]()==![]){return _0x18ecbc(_0xeb117b[_0x1dbb('0xe')](0x1f4,[config[_0x1dbb('0xf')]['ip'],config[_0x1dbb('0xf')][_0x1dbb('0x10')],_0x1dbb('0x19')][_0x1dbb('0x11')]('\x20')));}var _0x1fd605=schema(properties[_0x1dbb('0x5a')])[_0x1dbb('0x5b')](_0x1d8594);if(_0x1fd605[_0x1dbb('0x59')]>0x0){return _0x18ecbc(_0xeb117b['error'](0x1f4,_[_0x1dbb('0x5c')](_0x1fd605,_0x1dbb('0x17'))[_0x1dbb('0x11')](',\x20')));}var _0x1d8b95=_[_0x1dbb('0x66')](_0xd53e45[_0x1dbb('0x5d')],{'uniqueid':_0x1d8594[_0x1dbb('0x5e')]});if(_0x1d8b95){return BPromise[_0x1dbb('0x71')]()[_0x1dbb('0x16')](function(){if(_0x1d8b95[_0x1dbb('0x5f')]){return ami[_0x1dbb('0x1c')]({'action':'StopMixMonitor','channel':_0x1d8b95['channel'],'mixmonitorid':_0x1d8594[_0x1dbb('0x6c')]})[_0x1dbb('0x18')](function(_0x341b1b){});}})[_0x1dbb('0x16')](function(){if(_0x1d8b95['destinationchannel']){return ami['Action']({'action':_0x1dbb('0x72'),'channel':_0x1d8b95[_0x1dbb('0x73')],'mixmonitorid':_0x1d8594[_0x1dbb('0x6c')]})[_0x1dbb('0x18')](function(_0x2e42dc){});}})[_0x1dbb('0x16')](function(_0x2b2746){var _0x5b7de7=_[_0x1dbb('0x66')](_0x1d8b95[_0x1dbb('0x67')],{'mixmonitorid':_0x1d8594[_0x1dbb('0x6c')]});if(_0x5b7de7){_0x5b7de7[_0x1dbb('0x6e')]='stop';}})[_0x1dbb('0x16')](function(){var _0x7e4e28=util[_0x1dbb('0x60')](_0x1dbb('0x61'),_0x1d8594[_0x1dbb('0x62')]||_0x1d8594[_0x1dbb('0x5e')],_0x1d8594[_0x1dbb('0x60')]||_0x1dbb('0x63'));var _0x30a6ef=_['find'](_0x1d8b95[_0x1dbb('0x67')],{'filename':_0x1dbb('0x68')+_0x7e4e28[_0x1dbb('0x69')]()});if(_0x30a6ef){_0x30a6ef[_0x1dbb('0x6e')]=_0x1dbb('0x74');}})['then'](function(){_0x453726({'code':0xc8,'message':[_0x1d8594[_0x1dbb('0x5e')],_0x1dbb('0x75')]['join']('\x20')});})[_0x1dbb('0x18')](function(_0x2c4a2e){_0x18ecbc(_0xeb117b[_0x1dbb('0xe')](0x1f5,[_0x1d8594[_0x1dbb('0x5e')],_0x2c4a2e[_0x1dbb('0x17')][_0x1dbb('0x69')]()][_0x1dbb('0x11')]('\x20')));});}else{return _0x18ecbc(_0xeb117b['error'](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannels':function(_0xaa3950){return new Promise(function(_0x30d7dc,_0x16fd57){var _0x44d430=_[_0x1dbb('0x58')](_0xd53e45[_0x1dbb('0x76')]);_0x30d7dc({'count':_0x44d430['length'],'rows':_0x44d430});});},'VoiceQueuesChannel':function(_0x3d62d9){var _0x51999d=this;return new Promise(function(_0x5a2713,_0x2d8e37){var _0x3aac00=schema(properties[_0x1dbb('0x77')])[_0x1dbb('0x5b')](_0x3d62d9);if(_0x3aac00[_0x1dbb('0x59')]>0x0){return _0x2d8e37(_0x51999d[_0x1dbb('0xe')](0x1f4,_[_0x1dbb('0x5c')](_0x3aac00,_0x1dbb('0x17'))['join'](',\x20')));}var _0x2bf585=_[_0x1dbb('0x66')](_0xd53e45[_0x1dbb('0x76')],{'uniqueid':_0x3d62d9[_0x1dbb('0x5e')]});if(_0x2bf585){_0x5a2713(_0x2bf585);}else{return _0x2d8e37(_0x51999d['error'](0x1f5,_0x1dbb('0x70')));}});},'VoiceQueuesChannelHangup':function(_0x5f1076){var _0x44bf98=this;return new Promise(function(_0x44549d,_0x5e0bbd){if(ami[_0x1dbb('0xd')]()==![]){return _0x5e0bbd(_0x44bf98[_0x1dbb('0xe')](0x1f4,[config[_0x1dbb('0xf')]['ip'],config[_0x1dbb('0xf')][_0x1dbb('0x10')],'ami\x20disconnected'][_0x1dbb('0x11')]('\x20')));}var _0x2752c1=schema(properties[_0x1dbb('0x78')])[_0x1dbb('0x5b')](_0x5f1076);if(_0x2752c1[_0x1dbb('0x59')]>0x0){return _0x5e0bbd(_0x44bf98[_0x1dbb('0xe')](0x1f4,_['map'](_0x2752c1,_0x1dbb('0x17'))['join'](',\x20')));}var _0x520f45=_[_0x1dbb('0x66')](_0xd53e45['queueChannels'],{'uniqueid':_0x5f1076[_0x1dbb('0x5e')]});if(_0x520f45&&_0x520f45[_0x1dbb('0x5f')]){return ami[_0x1dbb('0x1c')]({'action':_0x1dbb('0x79'),'channel':_0x520f45[_0x1dbb('0x5f')]})[_0x1dbb('0x16')](function(_0x4f60b4){_0x44549d({'code':0xc8,'message':[_0x5f1076[_0x1dbb('0x5e')],_0x4f60b4[_0x1dbb('0x17')][_0x1dbb('0x69')]()][_0x1dbb('0x11')]('\x20')});})[_0x1dbb('0x18')](function(_0x59d7c3){_0x5e0bbd(_0x44bf98['error'](0x1f5,[_0x5f1076[_0x1dbb('0x5e')],_0x59d7c3[_0x1dbb('0x17')]['toLowerCase']()][_0x1dbb('0x11')]('\x20')));});}else{return _0x5e0bbd(_0x44bf98[_0x1dbb('0xe')](0x1f5,_0x1dbb('0x70')));}});},'VoiceQueuesChannelRedirect':function(_0x541051){var _0x57f8c5=this;return new Promise(function(_0x2968f5,_0x29be95){if(ami[_0x1dbb('0xd')]()==![]){return _0x29be95(_0x57f8c5[_0x1dbb('0xe')](0x1f4,[config[_0x1dbb('0xf')]['ip'],config[_0x1dbb('0xf')][_0x1dbb('0x10')],_0x1dbb('0x19')][_0x1dbb('0x11')]('\x20')));}var _0x986f4f=schema(properties['voicequeuechannelredirect'])[_0x1dbb('0x5b')](_0x541051);if(_0x986f4f[_0x1dbb('0x59')]>0x0){return _0x29be95(_0x57f8c5[_0x1dbb('0xe')](0x1f4,_[_0x1dbb('0x5c')](_0x986f4f,_0x1dbb('0x17'))[_0x1dbb('0x11')](',\x20')));}var _0x2c6b00=_[_0x1dbb('0x66')](_0xd53e45[_0x1dbb('0x76')],{'uniqueid':_0x541051['uniqueid']});if(_0x2c6b00&&_0x2c6b00[_0x1dbb('0x5f')]){return ami['Action']({'action':_0x1dbb('0x7a'),'channel':_0x2c6b00['channel'],'exten':_0x541051[_0x1dbb('0x7b')],'context':_0x541051[_0x1dbb('0x7c')]||_0x2c6b00['context'],'priority':0x1})[_0x1dbb('0x16')](function(_0x1232ce){_0x2968f5({'code':0xc8,'message':[_0x541051[_0x1dbb('0x5e')],_0x1232ce[_0x1dbb('0x17')][_0x1dbb('0x69')]()]['join']('\x20')});})[_0x1dbb('0x18')](function(_0x3a2536){_0x29be95(_0x57f8c5[_0x1dbb('0xe')](0x1f5,[_0x541051[_0x1dbb('0x5e')],_0x3a2536[_0x1dbb('0x17')][_0x1dbb('0x69')]()]['join']('\x20')));});}else{return _0x29be95(_0x57f8c5[_0x1dbb('0xe')](0x1f5,_0x1dbb('0x70')));}});},'Agents':function(_0x2939a0){return new Promise(function(_0x471573,_0x5a5cb5){var _0x23b2aa=_[_0x1dbb('0x58')](_0xd53e45[_0x1dbb('0xa')]);_0x471573({'count':_0x23b2aa[_0x1dbb('0x59')],'rows':_0x23b2aa});});},'Telephones':function(_0x20b43a){return new Promise(function(_0x3e9bba,_0xec8c13){var _0x3e22a7=_[_0x1dbb('0x58')](_0xd53e45[_0x1dbb('0x7d')]);_0x3e9bba({'count':_0x3e22a7[_0x1dbb('0x59')],'rows':_0x3e22a7});});},'Trunks':function(_0x3e0274){return new Promise(function(_0x5eb878,_0x2e3fd8){var _0x3270de=_[_0x1dbb('0x58')](_0xd53e45['trunks']);_0x5eb878({'count':_0x3270de[_0x1dbb('0x59')],'rows':_0x3270de});});},'OutboundChannels':function(_0x36ada9){return new Promise(function(_0x298141,_0x5339d9){var _0x5264ef=_[_0x1dbb('0x58')](_0xd53e45[_0x1dbb('0x7e')]);_0x298141({'count':_0x5264ef[_0x1dbb('0x59')],'rows':_0x5264ef});});},'Outbound':function(_0x6bb668){return new Promise(function(_0x34d856,_0x49274e){_0x34d856(_0xd53e45[_0x1dbb('0x2a')]);});},'Campaigns':function(_0x1cd71c){return new Promise(function(_0x24921d,_0x43ee89){var _0x492c33=_[_0x1dbb('0x58')](_0xd53e45[_0x1dbb('0x7f')]);_0x24921d({'count':_0x492c33[_0x1dbb('0x59')],'rows':_0x492c33});});},'VoiceQueuesPreview':function(_0x24dca8){var _0x373ee8=this;return new Promise(function(_0x3c0dc4,_0x5d3fe4){_0x550e25['run'](_0x24dca8['id'])[_0x1dbb('0x16')](function(_0x1c459e){_0x3c0dc4({'code':0xc8,'message':_0x1c459e[_0x1dbb('0x17')]});})[_0x1dbb('0x18')](function(_0x44fd09){_0x5d3fe4(_0x373ee8[_0x1dbb('0xe')](0x1f4,_0x44fd09['message']));});});},'EventManager':function(_0x52e5b0){var _0x21db27=this;return new Promise(function(_0xc01d4c,_0x43a488){if(!_0x52e5b0[_0x1dbb('0x80')]){return _0x43a488(_0x21db27['error'](0x1f4,_0x1dbb('0x81')));}ami[_0x1dbb('0x82')]('custom:'+_0x52e5b0[_0x1dbb('0x80')],_0x52e5b0[_0x1dbb('0x17')]);_0xc01d4c({'code':0xc8,'message':_0x52e5b0});});},'FaxAccounts':function(_0x4cac08){return new Promise(function(_0x52bb25,_0x3c4d97){var _0x311d6d=_[_0x1dbb('0x58')](_0xd53e45['faxAccounts']);_0x52bb25({'count':_0x311d6d['length'],'rows':_0x311d6d});});},'SendFax':function(_0x4653d9){var _0x4ecc56=this;return new Promise(function(_0x446cbf,_0x2a7b73){_0x55df0f[_0x1dbb('0x83')](_0x4653d9)[_0x1dbb('0x16')](function(_0x467b90){_0x446cbf({'code':0xc8,'message':_0x467b90[_0x1dbb('0x17')]});})[_0x1dbb('0x18')](function(_0x19657e){_0x2a7b73(_0x4ecc56['error'](0x1f4,_0x19657e['message']));});});},'CheckAfterSend':function(_0x17d5c7){var _0x5ec2d7=this;return new Promise(function(_0xfb92a2,_0x99b718){_0x55df0f[_0x1dbb('0x84')](_0x17d5c7)[_0x1dbb('0x16')](function(_0x31e859){_0xfb92a2({'code':0xc8,'message':_0x31e859[_0x1dbb('0x17')]});})[_0x1dbb('0x18')](function(_0x1a96c3){_0x99b718(_0x5ec2d7[_0x1dbb('0xe')](0x1f4,_0x1a96c3['message']));});});}};var _0x4f2c36=jayson[_0x1dbb('0x85')](_0x2070a8)['http']();_0x4f2c36['on'](_0x1dbb('0xe'),function(_0x458b6e){return _0x38259d(_0x458b6e);});_0x4f2c36[_0x1dbb('0x3')](0x232a,_0x1dbb('0x86'),function(){console[_0x1dbb('0x87')](_0x1dbb('0x88'),0x232a);return _0xd43ce8(_0x1dbb('0x89')+0x232a);});});};
\ No newline at end of file
+var _0x6596=['erlangBusyFactor','startPredictive','startProgressive','Trunk','active','Interval','push','length','find','omit','undefined','values','map','channels','uniqueid','channel','filename','wav','ai(mixmonitorid)','then','/var/spool/asterisk/monitor/','toLowerCase','isNil','monitors','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','Channel\x20doesn\x27t\x20exist','StopMixMonitor','destinationchannel','status','stop','%s.%s','StopMixMonitor\x20Success','voicequeuechannel','queueChannels','Hangup','voicequeuechannelredirect','Redirect','exten','context','telephones','outboundChannels','campaigns','run','event','Event\x20name\x20mandatory','custom:','faxAccounts','send','checkAfterSend','server','http','listen','127.0.0.1','RPC\x20listening\x20on\x20port:','lodash','util','validate','bluebird','moment','../../../config/environment','../properties','../ami','format','%s/%s','SIP','name','timers','agents','updateStatusRealtime','pause','isConnected','error','asterisk','username','join','pick','keys','module','action','Reload','catch','message','ami\x20disconnected','command','Command','Action','voiceQueues','hasOwnProperty','strategy','answered','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','total','type','unmanaged','abandoned','waiting','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','erlangCalls','erlangCallToSecond','erlangAbandonmentRate'];(function(_0x5b9717,_0x1fbbc2){var _0x3351a8=function(_0x3617b9){while(--_0x3617b9){_0x5b9717['push'](_0x5b9717['shift']());}};_0x3351a8(++_0x1fbbc2);}(_0x6596,0x1d3));var _0x6659=function(_0x811f43,_0xa3353c){_0x811f43=_0x811f43-0x0;var _0xb8575b=_0x6596[_0x811f43];return _0xb8575b;};'use strict';var _=require(_0x6659('0x0'));var util=require(_0x6659('0x1'));var jayson=require('jayson/promise');var schema=require(_0x6659('0x2'));var BPromise=require(_0x6659('0x3'));var moment=require(_0x6659('0x4'));var config=require(_0x6659('0x5'));var properties=require(_0x6659('0x6'));var ami=require(_0x6659('0x7'));exports['listen']=function(_0x483945,_0x7edf11,_0x3091f1){return new BPromise(function(_0xd6bf59,_0x1ed458){var _0x29292b={'QueuePause':function(_0x4a900d){return new Promise(function(_0x485ea0,_0x24bfdf){var _0x7b07d5=util[_0x6659('0x8')](_0x6659('0x9'),_0x6659('0xa'),_0x4a900d[_0x6659('0xb')]);if(_0x483945['timers']&&_0x483945[_0x6659('0xc')][_0x7b07d5]&&_0x483945['timers'][_0x7b07d5]['timer']){_0x483945[_0x6659('0xc')][_0x7b07d5]['updateAcw']();}if(_0x483945[_0x6659('0xd')][_0x7b07d5]){_0x483945[_0x6659('0xd')][_0x7b07d5][_0x6659('0xe')]({'statePause':_0x4a900d[_0x6659('0xf')]?!![]:![]});}_0x485ea0({'code':0xc8,'message':'QueuePause'});});},'Reload':function(_0x3d68c5){var _0x329ebc=this;return new Promise(function(_0x518769,_0x2b3118){if(ami[_0x6659('0x10')]()==![]){return _0x2b3118(_0x329ebc[_0x6659('0x11')](0x1f4,[config[_0x6659('0x12')]['ip'],config[_0x6659('0x12')][_0x6659('0x13')],'ami\x20disconnected'][_0x6659('0x14')]('\x20')));}_0x3d68c5=_[_0x6659('0x15')](_0x3d68c5,_[_0x6659('0x16')](properties[_0x6659('0x17')]));_0x3d68c5[_0x6659('0x18')]=_0x6659('0x19');return ami['Action'](_0x3d68c5)['then'](function(_0x441d6d){_0x518769({'code':0xc8,'message':_0x441d6d['message']});})[_0x6659('0x1a')](function(_0x38e4d6){_0x2b3118(_0x329ebc['error'](0x1f5,_0x38e4d6[_0x6659('0x1b')]));});});},'Command':function(_0x5253e5){var _0xa5e094=this;return new Promise(function(_0x1dc4f1,_0x522f2e){if(ami[_0x6659('0x10')]()==![]){return _0x522f2e(_0xa5e094[_0x6659('0x11')](0x1f4,[config[_0x6659('0x12')]['ip'],config[_0x6659('0x12')][_0x6659('0x13')],_0x6659('0x1c')][_0x6659('0x14')]('\x20')));}_0x5253e5=_['pick'](_0x5253e5,_0x6659('0x1d'));_0x5253e5[_0x6659('0x18')]=_0x6659('0x1e');return ami[_0x6659('0x1f')](_0x5253e5)['then'](function(_0x4ce553){_0x1dc4f1({'code':0xc8,'message':_0x4ce553['content']});})['catch'](function(_0xbad53f){_0x522f2e(_0xa5e094[_0x6659('0x11')](0x1f5,_0xbad53f[_0x6659('0x1b')]));});});},'VoiceQueues':function(_0x6fc27){return new Promise(function(_0x45effc,_0x12b218){var _0x436691=[];for(var _0x3cb0dc in _0x483945[_0x6659('0x20')]){if(_0x483945['voiceQueues'][_0x6659('0x21')](_0x3cb0dc)){var _0x373a3d=_0x483945[_0x6659('0x20')][_0x3cb0dc];var _0x4866e0={'id':_0x373a3d['id'],'name':_0x373a3d['name'],'strategy':_0x373a3d[_0x6659('0x22')],'answered':_0x373a3d[_0x6659('0x23')],'available':_0x373a3d['available'],'loggedIn':_0x373a3d[_0x6659('0x24')],'pTalking':_0x373a3d[_0x6659('0x25')],'sumBillable':_0x373a3d[_0x6659('0x26')],'sumDuration':_0x373a3d[_0x6659('0x27')],'sumHoldTime':_0x373a3d[_0x6659('0x28')]||0x0,'talking':_0x373a3d['talking'],'total':_0x373a3d[_0x6659('0x29')],'type':_0x373a3d[_0x6659('0x2a')],'unmanaged':_0x373a3d[_0x6659('0x2b')],'abandoned':_0x373a3d[_0x6659('0x2c')],'waiting':_0x373a3d[_0x6659('0x2d')],'loggedInDb':_0x373a3d['loggedInDb']};if(_0x373a3d[_0x6659('0x2a')]===_0x6659('0x2e')){_0x4866e0[_0x6659('0x2f')]=_0x373a3d[_0x6659('0x2f')];_0x4866e0[_0x6659('0x30')]=_0x373a3d[_0x6659('0x30')];_0x4866e0[_0x6659('0x31')]=_0x373a3d['dialOriginateCallerIdName'];_0x4866e0[_0x6659('0x32')]=_0x373a3d[_0x6659('0x32')];_0x4866e0['dialOriginateTimeout']=_0x373a3d[_0x6659('0x33')];_0x4866e0['dialPrefix']=_0x373a3d[_0x6659('0x34')];_0x4866e0['temp']=_0x373a3d[_0x6659('0x35')];_0x4866e0[_0x6659('0x36')]=_0x373a3d['outboundAnswerAgiCallsDay'];_0x4866e0['outboundAnswerCallsDay']=_0x373a3d[_0x6659('0x37')];_0x4866e0['outboundBlacklistCallsDay']=_0x373a3d[_0x6659('0x38')];_0x4866e0['outboundBusyCallsDay']=_0x373a3d[_0x6659('0x39')];_0x4866e0['outboundCongestionCallsDay']=_0x373a3d[_0x6659('0x3a')];_0x4866e0[_0x6659('0x3b')]=_0x373a3d['outboundDropCallsDayACS'];_0x4866e0[_0x6659('0x3c')]=_0x373a3d[_0x6659('0x3c')];_0x4866e0[_0x6659('0x3d')]=_0x373a3d[_0x6659('0x3d')];_0x4866e0[_0x6659('0x3e')]=_0x373a3d['outboundNoAnswerCallsDay'];_0x4866e0[_0x6659('0x3f')]=_0x373a3d['outboundNoSuchCallsDay'];_0x4866e0['outboundOriginateFailureCallsDay']=_0x373a3d[_0x6659('0x40')];_0x4866e0[_0x6659('0x41')]=_0x373a3d[_0x6659('0x41')];_0x4866e0['outboundRejectCallsDay']=_0x373a3d[_0x6659('0x42')];_0x4866e0['outboundUnknownCallsDay']=_0x373a3d['outboundUnknownCallsDay'];_0x4866e0[_0x6659('0x43')]=_0x373a3d[_0x6659('0x43')];_0x4866e0[_0x6659('0x44')]=_0x373a3d[_0x6659('0x44')];_0x4866e0[_0x6659('0x45')]=_0x373a3d[_0x6659('0x45')];_0x4866e0[_0x6659('0x46')]=_0x373a3d['predictiveIntervalDroppedCallsCallersExit'];_0x4866e0['predictiveIntervalDroppedCallsTimeout']=_0x373a3d[_0x6659('0x47')];_0x4866e0[_0x6659('0x48')]=_0x373a3d[_0x6659('0x48')];_0x4866e0['predictiveIntervalErlangCallsDroppedCalls']=_0x373a3d[_0x6659('0x49')];_0x4866e0[_0x6659('0x4a')]=_0x373a3d['predictiveIntervalHitRate'];_0x4866e0[_0x6659('0x4b')]=_0x373a3d[_0x6659('0x4b')];_0x4866e0[_0x6659('0x4c')]=_0x373a3d[_0x6659('0x4c')];_0x4866e0[_0x6659('0x4d')]=_0x373a3d['predictiveIntervalAvailable'];_0x4866e0['predictiveIntervalTotalCalls']=_0x373a3d['predictiveIntervalTotalCalls'];_0x4866e0['message']=_0x373a3d[_0x6659('0x1b')];_0x4866e0['originated']=_0x373a3d['originated'];_0x4866e0[_0x6659('0x4e')]=_0x373a3d[_0x6659('0x4e')];_0x4866e0['erlangCallToSecond']=_0x373a3d[_0x6659('0x4f')];_0x4866e0[_0x6659('0x50')]=_0x373a3d['erlangAbandonmentRate'];_0x4866e0[_0x6659('0x51')]=_0x373a3d[_0x6659('0x51')];_0x4866e0[_0x6659('0x52')]=_0x373a3d[_0x6659('0x52')];_0x4866e0['startProgressive']=_0x373a3d[_0x6659('0x53')];}if(_0x373a3d['Trunk']){_0x4866e0[_0x6659('0x54')]={'id':_0x373a3d[_0x6659('0x54')]['id'],'name':_0x373a3d[_0x6659('0x54')][_0x6659('0xb')],'active':_0x373a3d[_0x6659('0x54')][_0x6659('0x55')],'callerid':_0x373a3d['Trunk']['callerid']};}if(_0x373a3d[_0x6659('0x56')]){_0x4866e0[_0x6659('0x56')]={'id':_0x373a3d[_0x6659('0x56')]['id'],'name':_0x373a3d[_0x6659('0x56')][_0x6659('0xb')]};}_0x436691[_0x6659('0x57')](_0x4866e0);}}_0x45effc({'count':_0x436691[_0x6659('0x58')],'rows':_0x436691});});},'UpdateVoiceQueue':function(_0x358f15){return new Promise(function(_0x3077a8,_0x440c7c){var _0x529f35=_[_0x6659('0x59')](_0x483945['voiceQueues'],{'id':parseInt(_0x358f15['id'])});var _0x104d61=_[_0x6659('0x5a')](_0x358f15,['id']);if(_0x529f35){for(var _0x577d7f in _0x104d61){if(typeof _0x104d61[_0x577d7f]!==_0x6659('0x5b')&&typeof _0x529f35[_0x577d7f]!==_0x6659('0x5b')){_0x529f35[_0x577d7f]=_0x104d61[_0x577d7f];}}_0x3077a8(_0x529f35);}else{_0x440c7c();}});},'VoiceChannels':function(_0x5cfef5){return new Promise(function(_0x2cbd80,_0x345313){var _0x6e0e41=_[_0x6659('0x5c')](_0x483945['channels']);_0x2cbd80({'count':_0x6e0e41['length'],'rows':_0x6e0e41});});},'VoiceChannelMixMonitor':function(_0x1832cc){var _0x268e06=this;return new Promise(function(_0x2c4c0e,_0x29f7f1){if(ami[_0x6659('0x10')]()==![]){return _0x29f7f1(_0x268e06[_0x6659('0x11')](0x1f4,[config['asterisk']['ip'],config[_0x6659('0x12')][_0x6659('0x13')],'ami\x20disconnected'][_0x6659('0x14')]('\x20')));}var _0x29e7cc=schema(properties['voicechannel'])[_0x6659('0x2')](_0x1832cc);if(_0x29e7cc[_0x6659('0x58')]>0x0){return _0x29f7f1(_0x268e06[_0x6659('0x11')](0x1f4,_[_0x6659('0x5d')](_0x29e7cc,_0x6659('0x1b'))[_0x6659('0x14')](',\x20')));}var _0x4686d3=_[_0x6659('0x59')](_0x483945[_0x6659('0x5e')],{'uniqueid':_0x1832cc[_0x6659('0x5f')]});if(_0x4686d3&&_0x4686d3[_0x6659('0x60')]){var _0x499c47=util['format']('%s.%s',_0x1832cc[_0x6659('0x61')]||_0x1832cc[_0x6659('0x5f')],_0x1832cc['format']||_0x6659('0x62'));return ami[_0x6659('0x1f')]({'action':'MixMonitor','channel':_0x4686d3[_0x6659('0x60')],'file':_0x499c47,'options':_0x6659('0x63')})[_0x6659('0x64')](function(_0x4f9abf){var _0xf2348f=_['find'](_0x4686d3['monitors'],{'filename':_0x6659('0x65')+_0x499c47[_0x6659('0x66')]()});if(_[_0x6659('0x67')](_0xf2348f)){_0x4686d3[_0x6659('0x68')][_0x6659('0x57')]({'filename':_0x6659('0x65')+_0x499c47[_0x6659('0x66')](),'createdAt':moment()[_0x6659('0x8')](_0x6659('0x69')),'mixmonitorid':_0x4f9abf[_0x6659('0x6a')],'status':_0x6659('0x6b')});}else{_0xf2348f[_0x6659('0x6a')]=_0x4f9abf[_0x6659('0x6a')];_0xf2348f['status']=_0x6659('0x6b');}_0x2c4c0e({'code':0xc8,'message':[_0x1832cc[_0x6659('0x5f')],'MixMonitor\x20Success',_0x4f9abf[_0x6659('0x6a')]][_0x6659('0x14')]('\x20'),'mixmonitorid':_0x4f9abf[_0x6659('0x6a')]});})['catch'](function(_0x21a365){_0x29f7f1(_0x268e06[_0x6659('0x11')](0x1f5,[_0x1832cc[_0x6659('0x5f')],_0x21a365[_0x6659('0x1b')][_0x6659('0x66')]()][_0x6659('0x14')]('\x20')));});}else{return _0x29f7f1(_0x268e06['error'](0x1f5,_0x6659('0x6c')));}});},'VoiceChannelStopMixMonitor':function(_0x35ac7d){var _0x316cb0=this;return new Promise(function(_0x230e61,_0x479178){if(ami[_0x6659('0x10')]()==![]){return _0x479178(_0x316cb0[_0x6659('0x11')](0x1f4,[config[_0x6659('0x12')]['ip'],config[_0x6659('0x12')][_0x6659('0x13')],_0x6659('0x1c')][_0x6659('0x14')]('\x20')));}var _0x55db3e=schema(properties['voicechannel'])['validate'](_0x35ac7d);if(_0x55db3e['length']>0x0){return _0x479178(_0x316cb0['error'](0x1f4,_['map'](_0x55db3e,_0x6659('0x1b'))[_0x6659('0x14')](',\x20')));}var _0x13f31d=_['find'](_0x483945[_0x6659('0x5e')],{'uniqueid':_0x35ac7d[_0x6659('0x5f')]});if(_0x13f31d){return BPromise['resolve']()[_0x6659('0x64')](function(){if(_0x13f31d[_0x6659('0x60')]){return ami[_0x6659('0x1f')]({'action':_0x6659('0x6d'),'channel':_0x13f31d['channel'],'mixmonitorid':_0x35ac7d[_0x6659('0x6a')]})[_0x6659('0x1a')](function(_0x1162e8){});}})[_0x6659('0x64')](function(){if(_0x13f31d[_0x6659('0x6e')]){return ami[_0x6659('0x1f')]({'action':'StopMixMonitor','channel':_0x13f31d[_0x6659('0x6e')],'mixmonitorid':_0x35ac7d[_0x6659('0x6a')]})[_0x6659('0x1a')](function(_0x23ba92){});}})['then'](function(_0x34b12e){var _0x4a551d=_['find'](_0x13f31d[_0x6659('0x68')],{'mixmonitorid':_0x35ac7d['mixmonitorid']});if(_0x4a551d){_0x4a551d[_0x6659('0x6f')]=_0x6659('0x70');}})['then'](function(){var _0x3977be=util[_0x6659('0x8')](_0x6659('0x71'),_0x35ac7d['filename']||_0x35ac7d[_0x6659('0x5f')],_0x35ac7d[_0x6659('0x8')]||_0x6659('0x62'));var _0x4c2b65=_['find'](_0x13f31d[_0x6659('0x68')],{'filename':_0x6659('0x65')+_0x3977be[_0x6659('0x66')]()});if(_0x4c2b65){_0x4c2b65['status']=_0x6659('0x70');}})[_0x6659('0x64')](function(){_0x230e61({'code':0xc8,'message':[_0x35ac7d[_0x6659('0x5f')],_0x6659('0x72')][_0x6659('0x14')]('\x20')});})[_0x6659('0x1a')](function(_0x1fcf50){_0x479178(_0x316cb0['error'](0x1f5,[_0x35ac7d[_0x6659('0x5f')],_0x1fcf50[_0x6659('0x1b')][_0x6659('0x66')]()][_0x6659('0x14')]('\x20')));});}else{return _0x479178(_0x316cb0['error'](0x1f5,_0x6659('0x6c')));}});},'VoiceQueuesChannels':function(_0x50b75e){return new Promise(function(_0x466210,_0x4cb1aa){var _0x1027b4=_[_0x6659('0x5c')](_0x483945['queueChannels']);_0x466210({'count':_0x1027b4['length'],'rows':_0x1027b4});});},'VoiceQueuesChannel':function(_0x58755b){var _0x42e469=this;return new Promise(function(_0x58220d,_0x4e7e3e){var _0x445d9b=schema(properties[_0x6659('0x73')])[_0x6659('0x2')](_0x58755b);if(_0x445d9b[_0x6659('0x58')]>0x0){return _0x4e7e3e(_0x42e469['error'](0x1f4,_[_0x6659('0x5d')](_0x445d9b,_0x6659('0x1b'))[_0x6659('0x14')](',\x20')));}var _0x6d5339=_[_0x6659('0x59')](_0x483945[_0x6659('0x74')],{'uniqueid':_0x58755b[_0x6659('0x5f')]});if(_0x6d5339){_0x58220d(_0x6d5339);}else{return _0x4e7e3e(_0x42e469['error'](0x1f5,_0x6659('0x6c')));}});},'VoiceQueuesChannelHangup':function(_0x55a3a9){var _0x2cf584=this;return new Promise(function(_0x27fbf7,_0x5d0a46){if(ami['isConnected']()==![]){return _0x5d0a46(_0x2cf584[_0x6659('0x11')](0x1f4,[config[_0x6659('0x12')]['ip'],config[_0x6659('0x12')]['username'],_0x6659('0x1c')][_0x6659('0x14')]('\x20')));}var _0x2704e8=schema(properties['voicequeuechannelhangup'])[_0x6659('0x2')](_0x55a3a9);if(_0x2704e8[_0x6659('0x58')]>0x0){return _0x5d0a46(_0x2cf584['error'](0x1f4,_['map'](_0x2704e8,_0x6659('0x1b'))['join'](',\x20')));}var _0x445fa8=_[_0x6659('0x59')](_0x483945[_0x6659('0x74')],{'uniqueid':_0x55a3a9[_0x6659('0x5f')]});if(_0x445fa8&&_0x445fa8[_0x6659('0x60')]){return ami[_0x6659('0x1f')]({'action':_0x6659('0x75'),'channel':_0x445fa8[_0x6659('0x60')]})[_0x6659('0x64')](function(_0x24b310){_0x27fbf7({'code':0xc8,'message':[_0x55a3a9[_0x6659('0x5f')],_0x24b310[_0x6659('0x1b')][_0x6659('0x66')]()][_0x6659('0x14')]('\x20')});})[_0x6659('0x1a')](function(_0x472485){_0x5d0a46(_0x2cf584[_0x6659('0x11')](0x1f5,[_0x55a3a9[_0x6659('0x5f')],_0x472485[_0x6659('0x1b')][_0x6659('0x66')]()][_0x6659('0x14')]('\x20')));});}else{return _0x5d0a46(_0x2cf584['error'](0x1f5,_0x6659('0x6c')));}});},'VoiceQueuesChannelRedirect':function(_0x43a607){var _0x39bd7d=this;return new Promise(function(_0x55e3e1,_0x1c6bff){if(ami[_0x6659('0x10')]()==![]){return _0x1c6bff(_0x39bd7d[_0x6659('0x11')](0x1f4,[config['asterisk']['ip'],config[_0x6659('0x12')][_0x6659('0x13')],'ami\x20disconnected'][_0x6659('0x14')]('\x20')));}var _0x4f2c4f=schema(properties[_0x6659('0x76')])[_0x6659('0x2')](_0x43a607);if(_0x4f2c4f[_0x6659('0x58')]>0x0){return _0x1c6bff(_0x39bd7d[_0x6659('0x11')](0x1f4,_['map'](_0x4f2c4f,'message')[_0x6659('0x14')](',\x20')));}var _0x1cf948=_[_0x6659('0x59')](_0x483945[_0x6659('0x74')],{'uniqueid':_0x43a607[_0x6659('0x5f')]});if(_0x1cf948&&_0x1cf948[_0x6659('0x60')]){return ami[_0x6659('0x1f')]({'action':_0x6659('0x77'),'channel':_0x1cf948[_0x6659('0x60')],'exten':_0x43a607[_0x6659('0x78')],'context':_0x43a607[_0x6659('0x79')]||_0x1cf948['context'],'priority':0x1})[_0x6659('0x64')](function(_0x52eee1){_0x55e3e1({'code':0xc8,'message':[_0x43a607[_0x6659('0x5f')],_0x52eee1[_0x6659('0x1b')][_0x6659('0x66')]()][_0x6659('0x14')]('\x20')});})['catch'](function(_0x373c74){_0x1c6bff(_0x39bd7d[_0x6659('0x11')](0x1f5,[_0x43a607[_0x6659('0x5f')],_0x373c74['message'][_0x6659('0x66')]()][_0x6659('0x14')]('\x20')));});}else{return _0x1c6bff(_0x39bd7d['error'](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'Agents':function(_0x2637b2){return new Promise(function(_0x42dffc,_0x58631d){var _0x38f9d8=_[_0x6659('0x5c')](_0x483945['agents']);_0x42dffc({'count':_0x38f9d8[_0x6659('0x58')],'rows':_0x38f9d8});});},'Telephones':function(_0x10a6e5){return new Promise(function(_0x3a5530,_0x597b0a){var _0x3abac8=_[_0x6659('0x5c')](_0x483945[_0x6659('0x7a')]);_0x3a5530({'count':_0x3abac8['length'],'rows':_0x3abac8});});},'Trunks':function(_0x1aeebc){return new Promise(function(_0x4e91b6,_0x5e8a39){var _0x5b0e0d=_[_0x6659('0x5c')](_0x483945['trunks']);_0x4e91b6({'count':_0x5b0e0d[_0x6659('0x58')],'rows':_0x5b0e0d});});},'OutboundChannels':function(_0x51f147){return new Promise(function(_0x339a4b,_0x3aabe9){var _0x377f91=_[_0x6659('0x5c')](_0x483945[_0x6659('0x7b')]);_0x339a4b({'count':_0x377f91['length'],'rows':_0x377f91});});},'Outbound':function(_0x52a25e){return new Promise(function(_0x2d8ffd,_0x5589e5){_0x2d8ffd(_0x483945[_0x6659('0x2e')]);});},'Campaigns':function(_0x257235){return new Promise(function(_0x460916,_0x23fe5b){var _0x17222b=_['values'](_0x483945[_0x6659('0x7c')]);_0x460916({'count':_0x17222b['length'],'rows':_0x17222b});});},'VoiceQueuesPreview':function(_0x3653ca){var _0x3b7f51=this;return new Promise(function(_0x5cd96a,_0x5f259a){_0x7edf11[_0x6659('0x7d')](_0x3653ca['id'])[_0x6659('0x64')](function(_0x407371){_0x5cd96a({'code':0xc8,'message':_0x407371[_0x6659('0x1b')]});})[_0x6659('0x1a')](function(_0x140261){_0x5f259a(_0x3b7f51[_0x6659('0x11')](0x1f4,_0x140261[_0x6659('0x1b')]));});});},'EventManager':function(_0x47b382){var _0x14ee7b=this;return new Promise(function(_0xb58af9,_0x33c6d9){if(!_0x47b382[_0x6659('0x7e')]){return _0x33c6d9(_0x14ee7b[_0x6659('0x11')](0x1f4,_0x6659('0x7f')));}ami['emit'](_0x6659('0x80')+_0x47b382['event'],_0x47b382[_0x6659('0x1b')]);_0xb58af9({'code':0xc8,'message':_0x47b382});});},'FaxAccounts':function(_0x3bd970){return new Promise(function(_0x590b7c,_0x3b0534){var _0x188807=_[_0x6659('0x5c')](_0x483945[_0x6659('0x81')]);_0x590b7c({'count':_0x188807[_0x6659('0x58')],'rows':_0x188807});});},'SendFax':function(_0x3fcf16){var _0x21fd8d=this;return new Promise(function(_0x22415c,_0x3b1dcf){_0x3091f1[_0x6659('0x82')](_0x3fcf16)['then'](function(_0x2ddc13){_0x22415c({'code':0xc8,'message':_0x2ddc13[_0x6659('0x1b')]});})[_0x6659('0x1a')](function(_0x1265b0){_0x3b1dcf(_0x21fd8d[_0x6659('0x11')](0x1f4,_0x1265b0[_0x6659('0x1b')]));});});},'CheckAfterSend':function(_0x2c5caf){var _0xfa0367=this;return new Promise(function(_0x43bb74,_0x1642fd){_0x3091f1[_0x6659('0x83')](_0x2c5caf)[_0x6659('0x64')](function(_0x310958){_0x43bb74({'code':0xc8,'message':_0x310958[_0x6659('0x1b')]});})[_0x6659('0x1a')](function(_0x350e91){_0x1642fd(_0xfa0367[_0x6659('0x11')](0x1f4,_0x350e91[_0x6659('0x1b')]));});});}};var _0x4b7f92=jayson[_0x6659('0x84')](_0x29292b)[_0x6659('0x85')]();_0x4b7f92['on']('error',function(_0x46cc91){return _0x1ed458(_0x46cc91);});_0x4b7f92[_0x6659('0x86')](0x232a,_0x6659('0x87'),function(){console['log']('AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232a);return _0xd6bf59(_0x6659('0x88')+0x232a);});});};
\ No newline at end of file
index 646ec4d..90cb101 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b12=['updatedAt','union','resolve','getContacts','isEmpty','length','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','uniqueid','isNil','firstName','calleridname','<unknown>','Unknown','destcalleridname','then','push','format','user:%s','trigger:%s','toLowerCase','merge','bluebird','ioredis','util','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','redis','info','[CM][%s][%s]','stringify','exec','data1','data2','xmd-contactid','ListId','data3','phone','$or','map','routeId','destcalleridnum','calleridnum','mobile','fax'];(function(_0x5f0f92,_0x328856){var _0x169ee8=function(_0x1c0df8){while(--_0x1c0df8){_0x5f0f92['push'](_0x5f0f92['shift']());}};_0x169ee8(++_0x328856);}(_0x2b12,0xaf));var _0x22b1=function(_0x3e1a00,_0x442db9){_0x3e1a00=_0x3e1a00-0x0;var _0x382d36=_0x2b12[_0x3e1a00];return _0x382d36;};'use strict';var _=require('lodash');var BPromise=require(_0x22b1('0x0'));var Redis=require(_0x22b1('0x1'));var util=require(_0x22b1('0x2'));var config=require(_0x22b1('0x3'));var logger=require(_0x22b1('0x4'))(_0x22b1('0x5'));var cmContactRpc=require(_0x22b1('0x6'));config['redis']=_['defaults'](config[_0x22b1('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x22b1('0x7')]));function emit(_0x5c5d35,_0x1381a7,_0x4f85f4,_0x1dbf69,_0xcd1154){logger[_0x22b1('0x8')](_0x22b1('0x9'),_0x5c5d35,_0x1381a7['id'],_0x4f85f4,_0x1dbf69,JSON[_0x22b1('0xa')](_0xcd1154));io['to'](_0x4f85f4)['emit'](_0x1dbf69,_0xcd1154);}exports[_0x22b1('0xb')]=function(_0x560e94,_0x17a929,_0x599404,_0x540a6e){var _0x9297a9,_0x45c504;var _0x27a68b={};var _0x1fdb7d=Number(_0x599404[_0x22b1('0xc')]);var _0x460f92=_0x599404[_0x22b1('0xd')]?Boolean(Number(_0x599404['data2'])):![];var _0x31a857;if(_0x540a6e[_0x22b1('0xe')]){_0x27a68b['id']=_0x540a6e[_0x22b1('0xe')];}if(!_0x27a68b['id']){_0x27a68b[_0x22b1('0xf')]=_0x1fdb7d;_0x31a857=_0x599404[_0x22b1('0x10')]&&_0x599404[_0x22b1('0x10')]!=='0'?_0x599404[_0x22b1('0x10')]['split'](','):[_0x22b1('0x11')];_0x27a68b[_0x22b1('0x12')]=_[_0x22b1('0x13')](_0x31a857,function(_0x38471a){var _0x1ebf3c={};_0x1ebf3c[_0x38471a]=_0x540a6e[_0x22b1('0x14')]?_0x540a6e[_0x22b1('0x15')]:_0x540a6e[_0x22b1('0x16')];return _0x1ebf3c;});}var _0x74cb58=['id','firstName','lastName',_0x22b1('0x11'),_0x22b1('0x17'),_0x22b1('0x18'),_0x22b1('0xf'),'createdAt','scheduledAt',_0x22b1('0x19')];var _0x49a194=_[_0x22b1('0x1a')](_0x74cb58,_0x31a857);BPromise[_0x22b1('0x1b')]()['then'](cmContactRpc[_0x22b1('0x1c')]({'attributes':_0x49a194,'where':_0x27a68b}))['then'](function(_0x1a63f5){_0x45c504=_0x1a63f5;if(!_[_0x22b1('0x1d')](_0x45c504)){if(_0x45c504[_0x22b1('0x1e')]===0x1){_0x9297a9=_0x45c504[0x0];logger[_0x22b1('0x8')]('[CM][%s][%s]\x20Contact\x20found:%s',_0x540a6e['uniqueid'],_0x17a929['id'],_0x9297a9['id']);}else{logger[_0x22b1('0x8')](_0x22b1('0x1f'),_0x540a6e['uniqueid'],_0x17a929['id'],_[_0x22b1('0x13')](_0x45c504,'id')[_0x22b1('0x20')](','));}return;}else{logger[_0x22b1('0x8')](_0x22b1('0x21'),_0x540a6e['uniqueid'],_0x17a929['id']);var _0x467607={'ListId':_0x1fdb7d};var _0x3297cb=_0x599404[_0x22b1('0x22')]&&_0x599404['data4']!=='0'?_0x599404[_0x22b1('0x22')]:_0x22b1('0x11');if(_0x460f92){logger[_0x22b1('0x8')](_0x22b1('0x23'),_0x540a6e[_0x22b1('0x24')],_0x17a929['id']);_0x467607[_0x3297cb]=_[_0x22b1('0x25')](_0x540a6e[_0x22b1('0x14')])?_0x540a6e[_0x22b1('0x16')]:_0x540a6e[_0x22b1('0x15')];if(_[_0x22b1('0x25')](_0x540a6e[_0x22b1('0x14')])){_0x467607[_0x22b1('0x26')]=_0x540a6e[_0x22b1('0x27')]&&_0x540a6e[_0x22b1('0x27')]!==_0x22b1('0x28')?_0x540a6e[_0x22b1('0x27')]:_0x22b1('0x29');}else{_0x467607[_0x22b1('0x26')]=_0x540a6e['destcalleridname']&&_0x540a6e[_0x22b1('0x2a')]!=='<unknown>'?_0x540a6e[_0x22b1('0x2a')]:_0x22b1('0x29');}return BPromise[_0x22b1('0x1b')]()[_0x22b1('0x2b')](cmContactRpc['createContact'](_0x467607))[_0x22b1('0x2b')](function(_0x43e2fd){_0x9297a9=_0x43e2fd;_0x45c504[_0x22b1('0x2c')](_0x43e2fd);if(_0x9297a9){logger[_0x22b1('0x8')]('[CM][%s][%s]\x20Contact\x20created:%s',_0x540a6e[_0x22b1('0x24')],_0x17a929['id'],_0x9297a9['id']);}return;});}else{logger[_0x22b1('0x8')]('[CM][%s][%s]\x20Autocreate\x20disabled',_0x540a6e['uniqueid'],_0x17a929['id']);_0x467607[_0x3297cb]=_[_0x22b1('0x25')](_0x540a6e[_0x22b1('0x14')])?_0x540a6e[_0x22b1('0x16')]:_0x540a6e[_0x22b1('0x15')];if(_[_0x22b1('0x25')](_0x540a6e['routeId'])){_0x467607[_0x22b1('0x26')]=_0x540a6e[_0x22b1('0x27')]&&_0x540a6e[_0x22b1('0x27')]!=='<unknown>'?_0x540a6e['calleridname']:_0x22b1('0x29');}else{_0x467607[_0x22b1('0x26')]=_0x540a6e[_0x22b1('0x2a')]&&_0x540a6e[_0x22b1('0x2a')]!==_0x22b1('0x28')?_0x540a6e[_0x22b1('0x2a')]:_0x22b1('0x29');}_0x9297a9=_0x467607;_0x45c504[_0x22b1('0x2c')](_0x467607);return;}}})[_0x22b1('0x2b')](function(){if(_0x560e94){emit(_0x540a6e[_0x22b1('0x24')],_0x17a929,util[_0x22b1('0x2d')](_0x22b1('0x2e'),_0x560e94['name']),util[_0x22b1('0x2d')](_0x22b1('0x2f'),_0x599404['action'][_0x22b1('0x30')]()),{'evt':_[_0x22b1('0x31')](_0x540a6e,{'autoCreate':_0x460f92}),'contact':_0x9297a9===undefined?{}:_0x9297a9,'contacts':_0x45c504[_0x22b1('0x1e')]===0x0?undefined:_0x45c504});}});};
\ No newline at end of file
+var _0x8038=['action','toLowerCase','merge','lodash','ioredis','util','../../../../config/environment','trigger','../../rpc/cmContact','redis','defaults','localhost','info','[CM][%s][%s]','stringify','emit','exec','data1','data2','xmd-contactid','ListId','data3','split','$or','routeId','destcalleridnum','calleridnum','lastName','phone','scheduledAt','resolve','then','getContacts','isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','uniqueid','map','data4','isNil','firstName','calleridname','Unknown','destcalleridname','createContact','push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','<unknown>','user:%s','name','format'];(function(_0x2c1e34,_0x2d7149){var _0x117034=function(_0x220889){while(--_0x220889){_0x2c1e34['push'](_0x2c1e34['shift']());}};_0x117034(++_0x2d7149);}(_0x8038,0x176));var _0x8803=function(_0x4dbefa,_0x4bfc80){_0x4dbefa=_0x4dbefa-0x0;var _0x3efe6f=_0x8038[_0x4dbefa];return _0x3efe6f;};'use strict';var _=require(_0x8803('0x0'));var BPromise=require('bluebird');var Redis=require(_0x8803('0x1'));var util=require(_0x8803('0x2'));var config=require(_0x8803('0x3'));var logger=require('../../../../config/logger')(_0x8803('0x4'));var cmContactRpc=require(_0x8803('0x5'));config[_0x8803('0x6')]=_[_0x8803('0x7')](config[_0x8803('0x6')],{'host':_0x8803('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x8803('0x6')]));function emit(_0xc2f43a,_0x34438d,_0xdcf5e4,_0x1aac8a,_0x190cac){logger[_0x8803('0x9')](_0x8803('0xa'),_0xc2f43a,_0x34438d['id'],_0xdcf5e4,_0x1aac8a,JSON[_0x8803('0xb')](_0x190cac));io['to'](_0xdcf5e4)[_0x8803('0xc')](_0x1aac8a,_0x190cac);}exports[_0x8803('0xd')]=function(_0x35f1b8,_0x1821fe,_0x63375e,_0x373bc2){var _0x1d7a1a,_0x1e248f;var _0x393681={};var _0x566e32=Number(_0x63375e[_0x8803('0xe')]);var _0x20ac15=_0x63375e[_0x8803('0xf')]?Boolean(Number(_0x63375e['data2'])):![];var _0x5b4b0e;if(_0x373bc2[_0x8803('0x10')]){_0x393681['id']=_0x373bc2[_0x8803('0x10')];}if(!_0x393681['id']){_0x393681[_0x8803('0x11')]=_0x566e32;_0x5b4b0e=_0x63375e[_0x8803('0x12')]&&_0x63375e['data3']!=='0'?_0x63375e['data3'][_0x8803('0x13')](','):['phone'];_0x393681[_0x8803('0x14')]=_['map'](_0x5b4b0e,function(_0x3b77a6){var _0x4dbd2b={};_0x4dbd2b[_0x3b77a6]=_0x373bc2[_0x8803('0x15')]?_0x373bc2[_0x8803('0x16')]:_0x373bc2[_0x8803('0x17')];return _0x4dbd2b;});}var _0x581fb4=['id','firstName',_0x8803('0x18'),_0x8803('0x19'),'mobile','fax',_0x8803('0x11'),'createdAt',_0x8803('0x1a'),'updatedAt'];var _0x3426ae=_['union'](_0x581fb4,_0x5b4b0e);BPromise[_0x8803('0x1b')]()[_0x8803('0x1c')](cmContactRpc[_0x8803('0x1d')]({'attributes':_0x3426ae,'where':_0x393681}))[_0x8803('0x1c')](function(_0x3e9bec){_0x1e248f=_0x3e9bec;if(!_[_0x8803('0x1e')](_0x1e248f)){if(_0x1e248f[_0x8803('0x1f')]===0x1){_0x1d7a1a=_0x1e248f[0x0];logger['info'](_0x8803('0x20'),_0x373bc2['uniqueid'],_0x1821fe['id'],_0x1d7a1a['id']);}else{logger[_0x8803('0x9')](_0x8803('0x21'),_0x373bc2[_0x8803('0x22')],_0x1821fe['id'],_[_0x8803('0x23')](_0x1e248f,'id')['join'](','));}return;}else{logger[_0x8803('0x9')]('[CM][%s][%s]\x20Contact\x20not\x20found',_0x373bc2[_0x8803('0x22')],_0x1821fe['id']);var _0x20f152={'ListId':_0x566e32};var _0x187220=_0x63375e[_0x8803('0x24')]&&_0x63375e[_0x8803('0x24')]!=='0'?_0x63375e[_0x8803('0x24')]:_0x8803('0x19');if(_0x20ac15){logger['info']('[CM][%s][%s]\x20Autocreate\x20enabled',_0x373bc2[_0x8803('0x22')],_0x1821fe['id']);_0x20f152[_0x187220]=_[_0x8803('0x25')](_0x373bc2[_0x8803('0x15')])?_0x373bc2[_0x8803('0x17')]:_0x373bc2[_0x8803('0x16')];if(_[_0x8803('0x25')](_0x373bc2['routeId'])){_0x20f152[_0x8803('0x26')]=_0x373bc2['calleridname']&&_0x373bc2[_0x8803('0x27')]!=='<unknown>'?_0x373bc2['calleridname']:_0x8803('0x28');}else{_0x20f152[_0x8803('0x26')]=_0x373bc2['destcalleridname']&&_0x373bc2[_0x8803('0x29')]!=='<unknown>'?_0x373bc2[_0x8803('0x29')]:_0x8803('0x28');}return BPromise[_0x8803('0x1b')]()['then'](cmContactRpc[_0x8803('0x2a')](_0x20f152))[_0x8803('0x1c')](function(_0x1b28ca){_0x1d7a1a=_0x1b28ca;_0x1e248f[_0x8803('0x2b')](_0x1b28ca);if(_0x1d7a1a){logger[_0x8803('0x9')](_0x8803('0x2c'),_0x373bc2['uniqueid'],_0x1821fe['id'],_0x1d7a1a['id']);}return;});}else{logger[_0x8803('0x9')](_0x8803('0x2d'),_0x373bc2['uniqueid'],_0x1821fe['id']);_0x20f152[_0x187220]=_[_0x8803('0x25')](_0x373bc2[_0x8803('0x15')])?_0x373bc2[_0x8803('0x17')]:_0x373bc2[_0x8803('0x16')];if(_[_0x8803('0x25')](_0x373bc2['routeId'])){_0x20f152[_0x8803('0x26')]=_0x373bc2[_0x8803('0x27')]&&_0x373bc2[_0x8803('0x27')]!==_0x8803('0x2e')?_0x373bc2[_0x8803('0x27')]:_0x8803('0x28');}else{_0x20f152[_0x8803('0x26')]=_0x373bc2[_0x8803('0x29')]&&_0x373bc2[_0x8803('0x29')]!=='<unknown>'?_0x373bc2['destcalleridname']:_0x8803('0x28');}_0x1d7a1a=_0x20f152;_0x1e248f['push'](_0x20f152);return;}}})[_0x8803('0x1c')](function(){if(_0x35f1b8){emit(_0x373bc2['uniqueid'],_0x1821fe,util['format'](_0x8803('0x2f'),_0x35f1b8[_0x8803('0x30')]),util[_0x8803('0x31')]('trigger:%s',_0x63375e[_0x8803('0x32')][_0x8803('0x33')]()),{'evt':_[_0x8803('0x34')](_0x373bc2,{'autoCreate':_0x20ac15}),'contact':_0x1d7a1a===undefined?{}:_0x1d7a1a,'contacts':_0x1e248f['length']===0x0?undefined:_0x1e248f});}});};
\ No newline at end of file
index 729ca35..223b540 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4777=['custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialbegin','custom:dialconnect','syncAgentDial','custom:dialend','custom:closedinteraction','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','prototype','info','stringify','emit','motionChannel','voice','checkTriggers','interface','status','checkTrigger','merge','variables','Actions','length','toLowerCase','contactmanager','motionbar','browser','data2','render','html','template\x20not\x20found','uri','buildUri','isNil','data3','data4','location','windowWidth','data5','800','windowHeight','data6','winApplication','winArguments','format','user:%s','name','action','jscripty','trigger:%s','data1','exec','integration','queue','routeId','urlforward','script','parse','query','search','replace','channel','every','AllConditions','some','AnyConditions','checkConditions','field','account','chat','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','event','membername','lastevent','exports','util','lodash','url','./urlforward','./cmContact','../../../config/environment','../../../config/logger','trigger','../ami','redis','defaults','localhost','socket.io-emitter','popup','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','custom:agentcalled','syncCustomEvent','custom:agentconnect','bind','custom:agentringnoanswer'];(function(_0x372400,_0xdaeb10){var _0x4cd28c=function(_0x497d1f){while(--_0x497d1f){_0x372400['push'](_0x372400['shift']());}};_0x4cd28c(++_0xdaeb10);}(_0x4777,0x1cc));var _0x7477=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0x4777[_0x543084];return _0x306a57;};'use strict';var util=require(_0x7477('0x0'));var _=require(_0x7477('0x1'));var url=require(_0x7477('0x2'));var Mustache=require('mustache');var Redis=require('ioredis');var urlforward=require(_0x7477('0x3'));var integration=require('./integration');var cmContact=require(_0x7477('0x4'));var script=require('./script');var config=require(_0x7477('0x5'));var logger=require(_0x7477('0x6'))(_0x7477('0x7'));var ami=require(_0x7477('0x8'));config[_0x7477('0x9')]=_[_0x7477('0xa')](config[_0x7477('0x9')],{'host':_0x7477('0xb'),'port':0x18eb});var io=require(_0x7477('0xc'))(new Redis(config[_0x7477('0x9')]));var operators={'equals':function(_0x4d6e84,_0x316e9c){return _0x4d6e84==_0x316e9c;},'not_equals':function(_0x41b6d5,_0x40b662){return _0x41b6d5!=_0x40b662;}};var barAndWebActions=[_0x7477('0xd'),'url',_0x7477('0xe')];function Trigger(_0x360406){this['triggers']=_0x360406[_0x7477('0xf')];this[_0x7477('0x10')]=_0x360406[_0x7477('0x10')];this[_0x7477('0x11')]=_0x360406[_0x7477('0x11')];this[_0x7477('0x12')]=_0x360406[_0x7477('0x12')];this[_0x7477('0x13')]=_0x360406[_0x7477('0x13')];this[_0x7477('0x14')]=_0x360406[_0x7477('0x14')];this[_0x7477('0x15')]=_0x360406[_0x7477('0x15')];this[_0x7477('0x16')]=_0x360406[_0x7477('0x16')];this[_0x7477('0x17')]=_0x360406[_0x7477('0x17')];this[_0x7477('0x18')]=_0x360406[_0x7477('0x18')];this['deskAccounts']=_0x360406[_0x7477('0x19')];this['vtigerAccounts']=_0x360406[_0x7477('0x1a')];this[_0x7477('0x1b')]=_0x360406[_0x7477('0x1b')];this[_0x7477('0x1c')]=_0x360406[_0x7477('0x1c')];this[_0x7477('0x1d')]=_0x360406[_0x7477('0x1d')];this[_0x7477('0x1e')]={'zendesk':this[_0x7477('0x14')],'salesforce':this[_0x7477('0x16')],'freshdesk':this[_0x7477('0x15')],'sugarcrm':this[_0x7477('0x17')],'zoho':this['zohoAccounts'],'desk':this[_0x7477('0x19')],'vtiger':this[_0x7477('0x1a')],'dynamics365':this[_0x7477('0x1c')],'freshsales':this[_0x7477('0x1d')],'servicenow':this[_0x7477('0x1b')]};ami['on'](_0x7477('0x1f'),this[_0x7477('0x20')]['bind'](this));ami['on'](_0x7477('0x21'),this[_0x7477('0x20')][_0x7477('0x22')](this));ami['on'](_0x7477('0x23'),this[_0x7477('0x20')][_0x7477('0x22')](this));ami['on'](_0x7477('0x24'),this['syncCustomEvent'][_0x7477('0x22')](this));ami['on'](_0x7477('0x25'),this['syncCustomEvent'][_0x7477('0x22')](this));ami['on'](_0x7477('0x26'),this[_0x7477('0x20')][_0x7477('0x22')](this));ami['on'](_0x7477('0x27'),this[_0x7477('0x20')]['bind'](this));ami['on'](_0x7477('0x28'),this[_0x7477('0x20')][_0x7477('0x22')](this));ami['on']('custom:agentreject',this['syncCustomEvent']['bind'](this));ami['on'](_0x7477('0x29'),this['syncCustomEvent'][_0x7477('0x22')](this));ami['on'](_0x7477('0x2a'),this[_0x7477('0x20')][_0x7477('0x22')](this));ami['on'](_0x7477('0x2b'),this[_0x7477('0x20')]['bind'](this));ami['on'](_0x7477('0x2c'),this['syncAgentDial']['bind'](this));ami['on'](_0x7477('0x2d'),this[_0x7477('0x2e')]['bind'](this));ami['on'](_0x7477('0x2f'),this[_0x7477('0x2e')]['bind'](this));ami['on']('custom:newinteraction',this['syncCustomEvent'][_0x7477('0x22')](this));ami['on'](_0x7477('0x30'),this[_0x7477('0x20')][_0x7477('0x22')](this));ami['on'](_0x7477('0x31'),this[_0x7477('0x20')][_0x7477('0x22')](this));ami['on'](_0x7477('0x32'),this['syncCustomEvent'][_0x7477('0x22')](this));ami['on'](_0x7477('0x33'),this[_0x7477('0x20')][_0x7477('0x22')](this));ami['on'](_0x7477('0x34'),this[_0x7477('0x20')]['bind'](this));}Trigger[_0x7477('0x35')]['emit']=function(_0x45bfd8,_0x1d3c9b,_0x1c6a35){logger[_0x7477('0x36')](_0x45bfd8,_0x1d3c9b,JSON[_0x7477('0x37')](_0x1c6a35));io['to'](_0x45bfd8)[_0x7477('0x38')](_0x1d3c9b,_0x1c6a35);};Trigger[_0x7477('0x35')][_0x7477('0x20')]=function(_0x3c03d2){var _0x453ae9=_['clone'](_0x3c03d2);if(typeof _0x453ae9['motionChannel']==='undefined'){_0x453ae9[_0x7477('0x39')]=_0x7477('0x3a');}this[_0x7477('0x3b')](_0x453ae9);};Trigger['prototype'][_0x7477('0x2e')]=function(_0x58838c){if(this[_0x7477('0x10')][_0x58838c[_0x7477('0x3c')]]){this[_0x7477('0x20')](_0x58838c);}};Trigger[_0x7477('0x35')][_0x7477('0x3b')]=function(_0x4d5e62){var _0x183f2e;for(var _0x5f20fd in this[_0x7477('0xf')]){if(this['triggers']['hasOwnProperty'](_0x5f20fd)){if(this[_0x7477('0xf')][_0x5f20fd][_0x7477('0x3d')]){_0x183f2e=this[_0x7477('0x3e')](this['triggers'][_0x5f20fd],_0x4d5e62);if(_0x183f2e){_[_0x7477('0x3f')](_0x4d5e62,_0x4d5e62[_0x7477('0x40')]);for(var _0x4785cb=0x0,_0x2fbd4b,_0x283621,_0x40c89a;_0x4785cb<this[_0x7477('0xf')][_0x5f20fd][_0x7477('0x41')][_0x7477('0x42')];_0x4785cb+=0x1){_0x2fbd4b=this[_0x7477('0xf')][_0x5f20fd][_0x7477('0x41')][_0x4785cb];if(this[_0x7477('0x10')][_0x4d5e62[_0x7477('0x3c')]]){switch(_0x2fbd4b['action'][_0x7477('0x43')]()){case _0x7477('0x44'):break;case _0x7477('0x45'):case _0x7477('0x46'):var _0x593ca9={};switch(barAndWebActions[_0x2fbd4b['data1']]){case _0x7477('0xd'):_0x593ca9['TemplateId']=_0x2fbd4b[_0x7477('0x47')];_0x593ca9['html']=this['templates'][_0x2fbd4b[_0x7477('0x47')]]?Mustache[_0x7477('0x48')](this[_0x7477('0x12')][_0x2fbd4b[_0x7477('0x47')]][_0x7477('0x49')],_0x4d5e62):_0x7477('0x4a');break;case _0x7477('0x2'):_0x593ca9[_0x7477('0x4b')]=this[_0x7477('0x4c')](_0x2fbd4b[_0x7477('0x47')],_0x4d5e62,_[_0x7477('0x4d')](_0x2fbd4b['data3'])?!![]:parseInt(_0x2fbd4b[_0x7477('0x4e')],0xa));if(_[_0x7477('0x4d')](_0x2fbd4b[_0x7477('0x4f')])){_0x593ca9[_0x7477('0x50')]='0';}else{_0x593ca9['uriLocation']=_0x2fbd4b[_0x7477('0x4f')];_0x593ca9[_0x7477('0x51')]=_['isNil'](_0x2fbd4b[_0x7477('0x52')])?_0x7477('0x53'):_0x2fbd4b[_0x7477('0x52')];_0x593ca9[_0x7477('0x54')]=_[_0x7477('0x4d')](_0x2fbd4b[_0x7477('0x55')])?'600':_0x2fbd4b[_0x7477('0x55')];}break;case'winapp':_0x593ca9[_0x7477('0x56')]=_0x2fbd4b['data2']?Mustache[_0x7477('0x48')](_0x2fbd4b['data2'],_0x4d5e62):'';_0x593ca9[_0x7477('0x57')]=_0x2fbd4b['data3']?Mustache[_0x7477('0x48')](_0x2fbd4b[_0x7477('0x4e')],_0x4d5e62):'';break;}this[_0x7477('0x38')](util[_0x7477('0x58')](_0x7477('0x59'),this[_0x7477('0x10')][_0x4d5e62['interface']][_0x7477('0x5a')]),util['format']('trigger:%s:%s',_0x2fbd4b[_0x7477('0x5b')][_0x7477('0x43')](),barAndWebActions[_0x2fbd4b['data1']]),_[_0x7477('0x3f')](_0x593ca9,_0x4d5e62));break;case _0x7477('0x5c'):this[_0x7477('0x38')](util[_0x7477('0x58')](_0x7477('0x59'),this[_0x7477('0x10')][_0x4d5e62['interface']]['name']),util[_0x7477('0x58')](_0x7477('0x5d'),_0x2fbd4b[_0x7477('0x5b')][_0x7477('0x43')]()),_[_0x7477('0x3f')]({'ProjectId':parseInt(_0x2fbd4b[_0x7477('0x5e')],0xa)},_0x4d5e62));break;default:this[_0x7477('0x38')](util['format'](_0x7477('0x59'),this[_0x7477('0x10')][_0x4d5e62['interface']][_0x7477('0x5a')]),util[_0x7477('0x58')](_0x7477('0x5d'),_0x2fbd4b[_0x7477('0x5b')][_0x7477('0x43')]()),_[_0x7477('0x3f')]({},_0x2fbd4b,_0x4d5e62));}}switch(_0x2fbd4b[_0x7477('0x5b')][_0x7477('0x43')]()){case _0x7477('0x44'):cmContact[_0x7477('0x5f')](this[_0x7477('0x10')][_0x4d5e62[_0x7477('0x3c')]],this[_0x7477('0xf')][_0x5f20fd],_0x2fbd4b,_0x4d5e62);break;case _0x7477('0x60'):integration[_0x7477('0x5f')](_0x2fbd4b,_0x4d5e62,this['accounts'],this[_0x7477('0x10')][_0x4d5e62[_0x7477('0x3c')]],this[_0x7477('0x11')][_0x4d5e62[_0x7477('0x61')]],this[_0x7477('0x13')][_0x4d5e62[_0x7477('0x62')]]);break;case _0x7477('0x63'):urlforward[_0x7477('0x5f')](_0x2fbd4b,_0x4d5e62);break;case _0x7477('0x64'):script['exec'](_0x2fbd4b,_0x4d5e62);break;}}}}}}};Trigger[_0x7477('0x35')]['buildUri']=function(_0x15b319,_0x1b6246,_0x259072){var _0x2c17fc=url[_0x7477('0x65')](Mustache[_0x7477('0x48')](_0x15b319,_0x1b6246),!![]);if(_0x259072){_['merge'](_0x2c17fc[_0x7477('0x66')],_0x1b6246);}delete _0x2c17fc[_0x7477('0x67')];var _0x3959cd=url['format'](_0x2c17fc);_0x3959cd=_0x3959cd[_0x7477('0x68')](/\/\?/g,'?');return _0x3959cd;};Trigger[_0x7477('0x35')][_0x7477('0x3e')]=function(_0x3163ec,_0x33d80a){var _0x2b70bc=!![];var _0x3c4108=!![];var _0x386215=![];if(_0x3163ec[_0x7477('0x69')]===_0x33d80a[_0x7477('0x39')]){_0x386215=!![];}if(_0x3163ec['AllConditions'][_0x7477('0x42')]){_0x2b70bc=_[_0x7477('0x6a')](_0x3163ec[_0x7477('0x6b')],this['checkConditions'](_0x33d80a,_0x3163ec['channel']));}if(_0x3163ec['AnyConditions'][_0x7477('0x42')]){_0x3c4108=_[_0x7477('0x6c')](_0x3163ec[_0x7477('0x6d')],this[_0x7477('0x6e')](_0x33d80a,_0x3163ec[_0x7477('0x69')]));}return _0x386215&&_0x2b70bc&&_0x3c4108;};Trigger[_0x7477('0x35')][_0x7477('0x6e')]=function(_0x73be1c,_0x16759e){return function(_0x27fd3c){switch(_0x27fd3c[_0x7477('0x6f')]){case _0x7477('0x70'):if(_0x73be1c[_0x7477('0x69')]===_0x16759e){if(_0x16759e===_0x7477('0x71')){return _0x73be1c[_0x7477('0x72')]?operators[_0x27fd3c[_0x7477('0x73')]](Number(_0x27fd3c[_0x7477('0x74')]),_0x73be1c[_0x7477('0x72')]):![];}else{return _0x73be1c[_[_0x7477('0x75')](_0x16759e)+_0x7477('0x76')]?operators[_0x27fd3c[_0x7477('0x73')]](Number(_0x27fd3c[_0x7477('0x74')]),_0x73be1c[_['upperFirst'](_0x16759e)+_0x7477('0x76')]):![];}}break;case _0x7477('0x77'):case'message':if(_0x73be1c[_0x7477('0x69')]===_0x16759e){return _0x73be1c[_0x7477('0x78')]?operators[_0x27fd3c[_0x7477('0x73')]](_0x27fd3c[_0x7477('0x74')],_0x73be1c['event']):![];}break;case _0x7477('0x61'):return _0x73be1c[_0x7477('0x61')]?operators[_0x27fd3c['operator']](_0x27fd3c['value'],_0x73be1c[_0x7477('0x61')]):![];case'agent':return _0x73be1c['membername']?operators[_0x27fd3c[_0x7477('0x73')]](_0x27fd3c[_0x7477('0x74')],_0x73be1c[_0x7477('0x79')]):![];case _0x7477('0x7a'):return _0x73be1c[_0x7477('0x7a')]?operators[_0x27fd3c['operator']](_0x27fd3c[_0x7477('0x74')],_0x73be1c[_0x7477('0x7a')]):![];case'routeId':return _0x73be1c[_0x7477('0x62')]?operators[_0x27fd3c[_0x7477('0x73')]](_0x27fd3c[_0x7477('0x74')],_0x73be1c['routeId']):![];}return![];};};module[_0x7477('0x7b')]=Trigger;
\ No newline at end of file
+var _0xc3cb=['templates','voiceExtensions','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','zendeskAccounts','freshsalesAccounts','custom:agentcalled','bind','custom:agentconnect','syncCustomEvent','custom:agentringnoanswer','custom:agentcomplete','custom:agentnosuchnumber','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:outgoingmessage','custom:acceptmessage','emit','info','stringify','prototype','clone','interface','checkTriggers','checkTrigger','Actions','length','action','toLowerCase','contactmanager','motionbar','browser','TemplateId','data2','html','render','uri','isNil','data3','data4','location','uriLocation','windowWidth','windowHeight','600','data6','winArguments','format','user:%s','name','trigger:%s:%s','data1','merge','trigger:%s','exec','integration','accounts','queue','routeId','urlforward','buildUri','parse','query','search','replace','AllConditions','every','checkConditions','channel','AnyConditions','some','field','operator','ChatWebsiteId','upperFirst','AccountId','interaction','event','value','agent','membername','lastevent','exports','util','lodash','url','mustache','./integration','./cmContact','./script','../../../config/environment','../../../config/logger','../ami','defaults','redis','localhost','socket.io-emitter','popup','winapp','triggers','agents','voiceQueues'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xc3cb,0xd7));var _0xbc3c=function(_0x57a87b,_0xbe019b){_0x57a87b=_0x57a87b-0x0;var _0xfc916a=_0xc3cb[_0x57a87b];return _0xfc916a;};'use strict';var util=require(_0xbc3c('0x0'));var _=require(_0xbc3c('0x1'));var url=require(_0xbc3c('0x2'));var Mustache=require(_0xbc3c('0x3'));var Redis=require('ioredis');var urlforward=require('./urlforward');var integration=require(_0xbc3c('0x4'));var cmContact=require(_0xbc3c('0x5'));var script=require(_0xbc3c('0x6'));var config=require(_0xbc3c('0x7'));var logger=require(_0xbc3c('0x8'))('trigger');var ami=require(_0xbc3c('0x9'));config['redis']=_[_0xbc3c('0xa')](config[_0xbc3c('0xb')],{'host':_0xbc3c('0xc'),'port':0x18eb});var io=require(_0xbc3c('0xd'))(new Redis(config[_0xbc3c('0xb')]));var operators={'equals':function(_0x544a72,_0x34f1a4){return _0x544a72==_0x34f1a4;},'not_equals':function(_0x925a89,_0x26fd36){return _0x925a89!=_0x26fd36;}};var barAndWebActions=[_0xbc3c('0xe'),_0xbc3c('0x2'),_0xbc3c('0xf')];function Trigger(_0x5103b7){this[_0xbc3c('0x10')]=_0x5103b7[_0xbc3c('0x10')];this[_0xbc3c('0x11')]=_0x5103b7[_0xbc3c('0x11')];this[_0xbc3c('0x12')]=_0x5103b7[_0xbc3c('0x12')];this[_0xbc3c('0x13')]=_0x5103b7['templates'];this[_0xbc3c('0x14')]=_0x5103b7[_0xbc3c('0x14')];this['zendeskAccounts']=_0x5103b7['zendeskAccounts'];this[_0xbc3c('0x15')]=_0x5103b7[_0xbc3c('0x15')];this['salesforceAccounts']=_0x5103b7[_0xbc3c('0x16')];this['sugarcrmAccounts']=_0x5103b7[_0xbc3c('0x17')];this[_0xbc3c('0x18')]=_0x5103b7[_0xbc3c('0x18')];this[_0xbc3c('0x19')]=_0x5103b7[_0xbc3c('0x19')];this['vtigerAccounts']=_0x5103b7[_0xbc3c('0x1a')];this[_0xbc3c('0x1b')]=_0x5103b7['servicenowAccounts'];this[_0xbc3c('0x1c')]=_0x5103b7['dynamics365Accounts'];this['freshsalesAccounts']=_0x5103b7['freshsalesAccounts'];this['accounts']={'zendesk':this[_0xbc3c('0x1d')],'salesforce':this['salesforceAccounts'],'freshdesk':this['freshdeskAccounts'],'sugarcrm':this[_0xbc3c('0x17')],'zoho':this['zohoAccounts'],'desk':this[_0xbc3c('0x19')],'vtiger':this[_0xbc3c('0x1a')],'dynamics365':this[_0xbc3c('0x1c')],'freshsales':this[_0xbc3c('0x1e')],'servicenow':this['servicenowAccounts']};ami['on'](_0xbc3c('0x1f'),this['syncCustomEvent'][_0xbc3c('0x20')](this));ami['on'](_0xbc3c('0x21'),this[_0xbc3c('0x22')][_0xbc3c('0x20')](this));ami['on'](_0xbc3c('0x23'),this[_0xbc3c('0x22')][_0xbc3c('0x20')](this));ami['on'](_0xbc3c('0x24'),this[_0xbc3c('0x22')]['bind'](this));ami['on'](_0xbc3c('0x25'),this['syncCustomEvent'][_0xbc3c('0x20')](this));ami['on']('custom:agentnoanswer',this[_0xbc3c('0x22')][_0xbc3c('0x20')](this));ami['on'](_0xbc3c('0x26'),this[_0xbc3c('0x22')][_0xbc3c('0x20')](this));ami['on'](_0xbc3c('0x27'),this[_0xbc3c('0x22')][_0xbc3c('0x20')](this));ami['on'](_0xbc3c('0x28'),this[_0xbc3c('0x22')][_0xbc3c('0x20')](this));ami['on'](_0xbc3c('0x29'),this[_0xbc3c('0x22')][_0xbc3c('0x20')](this));ami['on'](_0xbc3c('0x2a'),this['syncCustomEvent'][_0xbc3c('0x20')](this));ami['on']('custom:timeout',this[_0xbc3c('0x22')][_0xbc3c('0x20')](this));ami['on'](_0xbc3c('0x2b'),this[_0xbc3c('0x2c')]['bind'](this));ami['on'](_0xbc3c('0x2d'),this['syncAgentDial']['bind'](this));ami['on'](_0xbc3c('0x2e'),this[_0xbc3c('0x2c')][_0xbc3c('0x20')](this));ami['on'](_0xbc3c('0x2f'),this[_0xbc3c('0x22')][_0xbc3c('0x20')](this));ami['on'](_0xbc3c('0x30'),this['syncCustomEvent'][_0xbc3c('0x20')](this));ami['on']('custom:incomingmessage',this[_0xbc3c('0x22')][_0xbc3c('0x20')](this));ami['on'](_0xbc3c('0x31'),this[_0xbc3c('0x22')][_0xbc3c('0x20')](this));ami['on'](_0xbc3c('0x32'),this[_0xbc3c('0x22')][_0xbc3c('0x20')](this));ami['on']('custom:rejectmessage',this[_0xbc3c('0x22')][_0xbc3c('0x20')](this));}Trigger['prototype'][_0xbc3c('0x33')]=function(_0x2e522b,_0x487e78,_0x2e4ae3){logger[_0xbc3c('0x34')](_0x2e522b,_0x487e78,JSON[_0xbc3c('0x35')](_0x2e4ae3));io['to'](_0x2e522b)['emit'](_0x487e78,_0x2e4ae3);};Trigger[_0xbc3c('0x36')][_0xbc3c('0x22')]=function(_0x8f0dbb){var _0x260cf0=_[_0xbc3c('0x37')](_0x8f0dbb);this['checkTriggers'](_0x260cf0);};Trigger[_0xbc3c('0x36')][_0xbc3c('0x2c')]=function(_0x48c915){if(this[_0xbc3c('0x11')][_0x48c915[_0xbc3c('0x38')]]){this[_0xbc3c('0x22')](_0x48c915);}};Trigger[_0xbc3c('0x36')][_0xbc3c('0x39')]=function(_0x5b8beb){var _0x3758c6;for(var _0x5bf240 in this['triggers']){if(this['triggers']['hasOwnProperty'](_0x5bf240)){if(this[_0xbc3c('0x10')][_0x5bf240]['status']){_0x3758c6=this[_0xbc3c('0x3a')](this['triggers'][_0x5bf240],_0x5b8beb);if(_0x3758c6){_['merge'](_0x5b8beb,_0x5b8beb['variables']);for(var _0x197065=0x0,_0x3cdb6f,_0x4fd557,_0x396eb1;_0x197065<this[_0xbc3c('0x10')][_0x5bf240][_0xbc3c('0x3b')][_0xbc3c('0x3c')];_0x197065+=0x1){_0x3cdb6f=this[_0xbc3c('0x10')][_0x5bf240][_0xbc3c('0x3b')][_0x197065];if(this[_0xbc3c('0x11')][_0x5b8beb[_0xbc3c('0x38')]]){switch(_0x3cdb6f[_0xbc3c('0x3d')][_0xbc3c('0x3e')]()){case _0xbc3c('0x3f'):break;case _0xbc3c('0x40'):case _0xbc3c('0x41'):var _0xde76b9={};switch(barAndWebActions[_0x3cdb6f['data1']]){case _0xbc3c('0xe'):_0xde76b9[_0xbc3c('0x42')]=_0x3cdb6f[_0xbc3c('0x43')];_0xde76b9[_0xbc3c('0x44')]=this['templates'][_0x3cdb6f['data2']]?Mustache[_0xbc3c('0x45')](this[_0xbc3c('0x13')][_0x3cdb6f['data2']][_0xbc3c('0x44')],_0x5b8beb):'template\x20not\x20found';break;case _0xbc3c('0x2'):_0xde76b9[_0xbc3c('0x46')]=this['buildUri'](_0x3cdb6f['data2'],_0x5b8beb,_[_0xbc3c('0x47')](_0x3cdb6f[_0xbc3c('0x48')])?!![]:parseInt(_0x3cdb6f['data3'],0xa));if(_[_0xbc3c('0x47')](_0x3cdb6f[_0xbc3c('0x49')])){_0xde76b9[_0xbc3c('0x4a')]='0';}else{_0xde76b9[_0xbc3c('0x4b')]=_0x3cdb6f[_0xbc3c('0x49')];_0xde76b9[_0xbc3c('0x4c')]=_[_0xbc3c('0x47')](_0x3cdb6f['data5'])?'800':_0x3cdb6f['data5'];_0xde76b9[_0xbc3c('0x4d')]=_[_0xbc3c('0x47')](_0x3cdb6f['data6'])?_0xbc3c('0x4e'):_0x3cdb6f[_0xbc3c('0x4f')];}break;case _0xbc3c('0xf'):_0xde76b9['winApplication']=_0x3cdb6f[_0xbc3c('0x43')]?Mustache[_0xbc3c('0x45')](_0x3cdb6f[_0xbc3c('0x43')],_0x5b8beb):'';_0xde76b9[_0xbc3c('0x50')]=_0x3cdb6f[_0xbc3c('0x48')]?Mustache[_0xbc3c('0x45')](_0x3cdb6f[_0xbc3c('0x48')],_0x5b8beb):'';break;}this['emit'](util[_0xbc3c('0x51')](_0xbc3c('0x52'),this[_0xbc3c('0x11')][_0x5b8beb['interface']][_0xbc3c('0x53')]),util[_0xbc3c('0x51')](_0xbc3c('0x54'),_0x3cdb6f[_0xbc3c('0x3d')]['toLowerCase'](),barAndWebActions[_0x3cdb6f[_0xbc3c('0x55')]]),_[_0xbc3c('0x56')](_0xde76b9,_0x5b8beb));break;case'jscripty':this[_0xbc3c('0x33')](util[_0xbc3c('0x51')](_0xbc3c('0x52'),this['agents'][_0x5b8beb['interface']][_0xbc3c('0x53')]),util['format'](_0xbc3c('0x57'),_0x3cdb6f['action'][_0xbc3c('0x3e')]()),_['merge']({'ProjectId':parseInt(_0x3cdb6f[_0xbc3c('0x55')],0xa)},_0x5b8beb));break;default:this[_0xbc3c('0x33')](util[_0xbc3c('0x51')](_0xbc3c('0x52'),this['agents'][_0x5b8beb['interface']][_0xbc3c('0x53')]),util[_0xbc3c('0x51')](_0xbc3c('0x57'),_0x3cdb6f['action'][_0xbc3c('0x3e')]()),_[_0xbc3c('0x56')]({},_0x3cdb6f,_0x5b8beb));}}switch(_0x3cdb6f[_0xbc3c('0x3d')]['toLowerCase']()){case _0xbc3c('0x3f'):cmContact[_0xbc3c('0x58')](this[_0xbc3c('0x11')][_0x5b8beb['interface']],this[_0xbc3c('0x10')][_0x5bf240],_0x3cdb6f,_0x5b8beb);break;case _0xbc3c('0x59'):integration[_0xbc3c('0x58')](_0x3cdb6f,_0x5b8beb,this[_0xbc3c('0x5a')],this[_0xbc3c('0x11')][_0x5b8beb[_0xbc3c('0x38')]],this[_0xbc3c('0x12')][_0x5b8beb[_0xbc3c('0x5b')]],this[_0xbc3c('0x14')][_0x5b8beb[_0xbc3c('0x5c')]]);break;case _0xbc3c('0x5d'):urlforward[_0xbc3c('0x58')](_0x3cdb6f,_0x5b8beb);break;case'script':script[_0xbc3c('0x58')](_0x3cdb6f,_0x5b8beb);break;}}}}}}};Trigger['prototype'][_0xbc3c('0x5e')]=function(_0x5f51aa,_0x3b41c2,_0x5070f4){var _0x4b3a84=url[_0xbc3c('0x5f')](Mustache['render'](_0x5f51aa,_0x3b41c2),!![]);if(_0x5070f4){_[_0xbc3c('0x56')](_0x4b3a84[_0xbc3c('0x60')],_0x3b41c2);}delete _0x4b3a84[_0xbc3c('0x61')];var _0x386a09=url['format'](_0x4b3a84);_0x386a09=_0x386a09[_0xbc3c('0x62')](/\/\?/g,'?');return _0x386a09;};Trigger['prototype'][_0xbc3c('0x3a')]=function(_0x28b8be,_0x300831){var _0x35f2ca=!![],_0x45f8d5=!![];if(_0x28b8be[_0xbc3c('0x63')]['length']){_0x35f2ca=_[_0xbc3c('0x64')](_0x28b8be[_0xbc3c('0x63')],this[_0xbc3c('0x65')](_0x300831,_0x28b8be[_0xbc3c('0x66')]));}if(_0x28b8be[_0xbc3c('0x67')][_0xbc3c('0x3c')]){_0x45f8d5=_[_0xbc3c('0x68')](_0x28b8be['AnyConditions'],this[_0xbc3c('0x65')](_0x300831,_0x28b8be[_0xbc3c('0x66')]));}return _0x35f2ca&&_0x45f8d5;};Trigger[_0xbc3c('0x36')][_0xbc3c('0x65')]=function(_0x540902,_0x2471b3){return function(_0x1b9e36){switch(_0x1b9e36[_0xbc3c('0x69')]){case'account':if(_0x540902[_0xbc3c('0x66')]===_0x2471b3){if(_0x2471b3==='chat'){return _0x540902['ChatWebsiteId']?operators[_0x1b9e36[_0xbc3c('0x6a')]](Number(_0x1b9e36['value']),_0x540902[_0xbc3c('0x6b')]):![];}else{return _0x540902[_[_0xbc3c('0x6c')](_0x2471b3)+_0xbc3c('0x6d')]?operators[_0x1b9e36[_0xbc3c('0x6a')]](Number(_0x1b9e36['value']),_0x540902[_[_0xbc3c('0x6c')](_0x2471b3)+_0xbc3c('0x6d')]):![];}}break;case _0xbc3c('0x6e'):case'message':if(_0x540902[_0xbc3c('0x66')]===_0x2471b3){return _0x540902['event']?operators[_0x1b9e36[_0xbc3c('0x6a')]](_0x1b9e36['value'],_0x540902[_0xbc3c('0x6f')]):![];}break;case _0xbc3c('0x5b'):return _0x540902[_0xbc3c('0x5b')]?operators[_0x1b9e36[_0xbc3c('0x6a')]](_0x1b9e36[_0xbc3c('0x70')],_0x540902[_0xbc3c('0x5b')]):![];case _0xbc3c('0x71'):return _0x540902[_0xbc3c('0x72')]?operators[_0x1b9e36[_0xbc3c('0x6a')]](_0x1b9e36[_0xbc3c('0x70')],_0x540902['membername']):![];case _0xbc3c('0x73'):return _0x540902[_0xbc3c('0x73')]?operators[_0x1b9e36[_0xbc3c('0x6a')]](_0x1b9e36[_0xbc3c('0x70')],_0x540902[_0xbc3c('0x73')]):![];case _0xbc3c('0x5c'):return _0x540902[_0xbc3c('0x5c')]?operators[_0x1b9e36[_0xbc3c('0x6a')]](_0x1b9e36[_0xbc3c('0x70')],_0x540902[_0xbc3c('0x5c')]):![];}return![];};};module[_0xbc3c('0x74')]=Trigger;
\ No newline at end of file
index b71375c..bda2901 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['CTI','concat','Tags','Descriptions','/api/v2/users/%d','user','%s/customers/%d/cases','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','recordingFormat','none','[OUTBOUND]','Authorization','destcalleridname','destcalleridnum','integrationTab','newTab','catch','unmanaged','lastevent','toUpperCase','calleridname','lodash','request-promise','ioredis','./util','../../../../config/logger','defaults','redis','localhost','socket.io-emitter','application/json','validateEmail','format','%s/users','then','total_entries','find','_embedded','entries','info','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/users/me','debug','[HTTP]','stringify','GET','authType','basic','%s:%s','username','password','token','%s/token:%s','Basic\x20%s','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','%s/customers','remoteUri','POST','length','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','toString','idField','variableName','custom_fields','Variable','name','priority','Creating\x20new\x20ticket...','merge','getString','Subjects','phone','new','xCALLY'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xe14b,0x93));var _0xbe14=function(_0x3475c5,_0x3fb9a7){_0x3475c5=_0x3475c5-0x0;var _0x5bfc67=_0xe14b[_0x3475c5];return _0x5bfc67;};'use strict';var _=require(_0xbe14('0x0'));var rp=require(_0xbe14('0x1'));var md5=require('md5');var util=require('util');var Redis=require(_0xbe14('0x2'));var intUtil=require(_0xbe14('0x3'));var config=require('../../../../config/environment');var logger=require(_0xbe14('0x4'))('desk');config['redis']=_[_0xbe14('0x5')](config[_0xbe14('0x6')],{'host':_0xbe14('0x7'),'port':0x18eb});var io=require(_0xbe14('0x8'))(new Redis(config[_0xbe14('0x6')]));function emit(_0x39387e,_0x196fca,_0x566ae7){io['to'](_0x39387e)['emit'](_0x196fca,_0x566ae7);}var headers={'Content-Type':'application/json','Accept':_0xbe14('0x9')};function getUser(_0x6fceff,_0xd68cd7){if(intUtil[_0xbe14('0xa')](_0xd68cd7)===!![]){logger['info']('Getting\x20agent\x20with\x20email',_0xd68cd7);return request({'uri':util[_0xbe14('0xb')](_0xbe14('0xc'),_0x6fceff['remoteUri'])})[_0xbe14('0xd')](function(_0x35aa19){if(_0x35aa19[_0xbe14('0xe')]){return _[_0xbe14('0xf')](_0x35aa19[_0xbe14('0x10')][_0xbe14('0x11')],{'email':_0xd68cd7});}})[_0xbe14('0xd')](function(_0x2850cb){if(_0x2850cb){logger[_0xbe14('0x12')](_0xbe14('0x13'));return _0x2850cb;}else{logger[_0xbe14('0x12')](_0xbe14('0x14'));return request({'uri':util[_0xbe14('0xb')]('%s/users/me',_0x6fceff['remoteUri'])});}});}else{logger[_0xbe14('0x12')](_0xbe14('0x15'));return request({'uri':util[_0xbe14('0xb')](_0xbe14('0x16'),_0x6fceff['remoteUri'])});}}function request(_0x21c789){logger[_0xbe14('0x17')](_0xbe14('0x18'),JSON[_0xbe14('0x19')](_0x21c789));return rp(_[_0xbe14('0x5')](_0x21c789,{'method':_0xbe14('0x1a'),'headers':headers,'json':!![]}));}function getAuth(_0x17ae86){var _0x5ea1f8;if(_0x17ae86[_0xbe14('0x1b')]===_0xbe14('0x1c')){_0x5ea1f8=util[_0xbe14('0xb')](_0xbe14('0x1d'),_0x17ae86[_0xbe14('0x1e')],_0x17ae86[_0xbe14('0x1f')]);}else if(_0x17ae86['authType']===_0xbe14('0x20')){_0x5ea1f8=util[_0xbe14('0xb')](_0xbe14('0x21'),_0x17ae86[_0xbe14('0x1e')],_0x17ae86[_0xbe14('0x20')]);}return util['format'](_0xbe14('0x22'),new Buffer(_0x5ea1f8)['toString'](_0xbe14('0x23')));}function getEndUser(_0x56e80c,_0x32e8eb,_0x4a25fa){logger[_0xbe14('0x12')](_0xbe14('0x24'),_0x4a25fa);return request({'uri':util['format'](_0xbe14('0x25'),_0x56e80c['remoteUri']),'qs':{'phone':_0x4a25fa}})[_0xbe14('0xd')](function(_0x4851f8){if(_0x4851f8[_0xbe14('0xe')]){logger[_0xbe14('0x12')](_0xbe14('0x26'));return _0x4851f8[_0xbe14('0x10')][_0xbe14('0x11')][0x0];}else{logger[_0xbe14('0x12')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xbe14('0xb')](_0xbe14('0x27'),_0x56e80c[_0xbe14('0x28')]),'method':_0xbe14('0x29'),'body':{'first_name':_0x32e8eb,'title':_0x32e8eb,'phone_numbers':[{'type':'work','value':_0x4a25fa}]}});}});}function getTags(_0x16f884,_0x29fc64){var _0x59bf34=[];if(_0x16f884&&_0x16f884[_0xbe14('0x2a')]>0x0){_0x59bf34=_[_0xbe14('0x2b')](_0x16f884,_0x29fc64);}return _0x59bf34;}function getCustomFields(_0x1c7cc7,_0x19252f){var _0x34d648=[];var _0x36d4b2={'custom_fields':{}};if(_0x1c7cc7[_0xbe14('0x2a')]>0x0){_[_0xbe14('0x2c')](_0x1c7cc7,function(_0x4168c8){if(_[_0xbe14('0x2d')]([_0xbe14('0x2e'),_0xbe14('0x2f')],_0x4168c8[_0xbe14('0x30')])&&_0x4168c8[_0xbe14('0x31')]&&!_0x4168c8[_0xbe14('0x32')]){_0x36d4b2[_0x4168c8[_0xbe14('0x31')][_0xbe14('0x33')]()]=_0x4168c8[_0xbe14('0x34')][_0xbe14('0x35')]();}else if(_[_0xbe14('0x2d')](['string',_0xbe14('0x2f')],_0x4168c8['type'])&&_0x4168c8['idField']&&_0x4168c8[_0xbe14('0x32')]){_0x36d4b2['custom_fields'][_0x4168c8[_0xbe14('0x36')]]=_0x4168c8[_0xbe14('0x34')]['toString']();}else if(_0x4168c8['type']==='variable'&&_0x4168c8[_0xbe14('0x37')]&&_0x4168c8[_0xbe14('0x36')]&&_0x4168c8['customField']){_0x19252f[_0x4168c8[_0xbe14('0x37')]]&&(_0x36d4b2[_0xbe14('0x38')][_0x4168c8[_0xbe14('0x36')]]=_0x19252f[_0x4168c8[_0xbe14('0x37')]][_0xbe14('0x35')]());}else if(_0x4168c8['type']==='customVariable'&&_0x4168c8[_0xbe14('0x39')]&&_0x4168c8['Variable']['name']&&_0x4168c8['idField']&&_0x4168c8[_0xbe14('0x32')]){_0x19252f[_0x4168c8[_0xbe14('0x39')][_0xbe14('0x3a')][_0xbe14('0x33')]()]&&(_0x36d4b2[_0xbe14('0x38')][_0x4168c8[_0xbe14('0x36')]]=_0x19252f[_0x4168c8[_0xbe14('0x39')][_0xbe14('0x3a')][_0xbe14('0x33')]()][_0xbe14('0x35')]());}});}if(_0x36d4b2[_0xbe14('0x3b')]){_0x36d4b2[_0xbe14('0x3b')]=Number(_0x36d4b2['priority']);}return _0x36d4b2;}function getTicket(_0x4f51f8,_0x43cdaa,_0x2951e1,_0x13bfcf,_0x520e09){logger[_0xbe14('0x12')](_0xbe14('0x3c'));var _0xeda70e=_[_0xbe14('0x3d')]({'subject':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x3f')],_0x520e09,'\x20'),'type':_0xbe14('0x40'),'status':_0xbe14('0x41'),'labels':[_0xbe14('0x42'),'Motion',_0xbe14('0x43')][_0xbe14('0x44')](getTags(_0x13bfcf[_0xbe14('0x45')],_0xbe14('0x3a'))),'description':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x46')],_0x520e09,'\x0a'),'_links':{'assigned_user':{'href':util['format'](_0xbe14('0x47'),_0x43cdaa['id']),'class':_0xbe14('0x48')}},'message':{'direction':'in','body':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x46')],_0x520e09,'\x0a')}},getCustomFields(_0x13bfcf['Fields'],_0x520e09));return request({'uri':util['format'](_0xbe14('0x49'),_0x4f51f8[_0xbe14('0x28')],_0x2951e1['id']),'method':_0xbe14('0x29'),'body':_0xeda70e});}exports['queue']=function(_0x5d5318,_0x6b6aa8,_0x59ae4d,_0x5657fe,_0x3593f8,_0x1f0355){var _0x8216c3,_0x5051e4;_0x1f0355['remoteUri']=intUtil['stripTrailingSlash'](_0x1f0355[_0xbe14('0x28')]);_0x1f0355[_0xbe14('0x4a')]=intUtil[_0xbe14('0x4b')](_0x1f0355['serverUrl']);if(_0x3593f8&&_0x3593f8[_0xbe14('0x4c')]){logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x4e'));_0x6b6aa8['recordingURL']=util['format'](_0xbe14('0x4f'),_0x1f0355[_0xbe14('0x4a')],_0x6b6aa8[_0xbe14('0x50')],md5(_0x6b6aa8[_0xbe14('0x50')]));}else{_0x6b6aa8[_0xbe14('0x51')]='';}headers['Authorization']=getAuth(_0x1f0355);return getUser(_0x1f0355,_0x5657fe['email'])[_0xbe14('0xd')](function(_0x2a3623){_0x8216c3=_0x2a3623;logger[_0xbe14('0x12')](_0xbe14('0x52'),_0x8216c3['id']);return getEndUser(_0x1f0355,_0x6b6aa8['calleridname'],_0x6b6aa8[_0xbe14('0x53')]);})[_0xbe14('0xd')](function(_0x53e8ab){_0x5051e4=_0x53e8ab;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x5051e4['id']);return getTicket(_0x1f0355,_0x8216c3,_0x5051e4,_0x59ae4d,_0x6b6aa8);})[_0xbe14('0xd')](function(_0x36c20c){if(_0x36c20c){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x36c20c['id']);switch(_0x1f0355['type']){case'integrationTab':logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x56'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x5657fe[_0xbe14('0x3a')]),_0xbe14('0x58'),{'recordId':_0x36c20c['id']});break;case'newTab':logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x59'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x5657fe['name']),_0xbe14('0x5a'),{'uri':util[_0xbe14('0xb')](_0xbe14('0x5b'),_0x36c20c['id'])});break;default:logger[_0xbe14('0x5c')](_0xbe14('0x4d'),_0xbe14('0x5d'));}}})['catch'](function(_0x5aeea9){console[_0xbe14('0x5c')](_0x5aeea9);logger[_0xbe14('0x5c')](_0xbe14('0x4d'),JSON['stringify'](_0x5aeea9));});};exports['outbound']=function(_0x44fe0d,_0x134878,_0x50d78f,_0x339a86,_0x32496a,_0x50c2a0,_0x28f995){var _0x4a40d2,_0x41ba58;_0x50c2a0[_0xbe14('0x28')]=intUtil[_0xbe14('0x4b')](_0x50c2a0['remoteUri']);_0x50c2a0[_0xbe14('0x4a')]=intUtil[_0xbe14('0x4b')](_0x50c2a0['serverUrl']);if(_0x28f995&&_0x28f995[_0xbe14('0x5e')]&&_0x28f995[_0xbe14('0x5e')]!==_0xbe14('0x5f')){logger[_0xbe14('0x12')](_0xbe14('0x60'),'Recording\x20is\x20enabled!');_0x134878[_0xbe14('0x51')]=util[_0xbe14('0xb')](_0xbe14('0x4f'),_0x50c2a0[_0xbe14('0x4a')],_0x134878[_0xbe14('0x50')],md5(_0x134878[_0xbe14('0x50')]));}headers[_0xbe14('0x61')]=getAuth(_0x50c2a0);return getUser(_0x50c2a0,_0x339a86['email'])[_0xbe14('0xd')](function(_0x1b47a4){_0x4a40d2=_0x1b47a4;logger[_0xbe14('0x12')](_0xbe14('0x52'),_0x4a40d2['id']);return getEndUser(_0x50c2a0,_0x134878[_0xbe14('0x62')],_0x134878[_0xbe14('0x63')]);})[_0xbe14('0xd')](function(_0x32df3c){_0x41ba58=_0x32df3c;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x41ba58['id']);return getTicket(_0x50c2a0,_0x4a40d2,_0x41ba58,_0x50d78f,_0x134878);})[_0xbe14('0xd')](function(_0x4bccfc){if(_0x4bccfc){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x4bccfc['id']);switch(_0x50c2a0[_0xbe14('0x30')]){case _0xbe14('0x64'):logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x56'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x339a86[_0xbe14('0x3a')]),_0xbe14('0x58'),{'recordId':_0x4bccfc['id']});break;case _0xbe14('0x65'):logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x59'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x339a86[_0xbe14('0x3a')]),_0xbe14('0x5a'),{'uri':util[_0xbe14('0xb')]('%s/agent/tickets/%s',_0x50c2a0[_0xbe14('0x28')],_0x4bccfc['id'])});break;default:logger[_0xbe14('0x5c')](_0xbe14('0x60'),_0xbe14('0x5d'));}}})[_0xbe14('0x66')](function(_0x222944){logger[_0xbe14('0x5c')](_0xbe14('0x60'),JSON[_0xbe14('0x19')](_0x222944));});};exports[_0xbe14('0x67')]=function(_0x5917d5,_0x18be56,_0x442ec4,_0x2d4dd4,_0xfd32a3,_0x3ac6d8){var _0x5a1ea6,_0x42b341;_0x3ac6d8[_0xbe14('0x28')]=intUtil[_0xbe14('0x4b')](_0x3ac6d8[_0xbe14('0x28')]);_0x3ac6d8[_0xbe14('0x4a')]=intUtil['stripTrailingSlash'](_0x3ac6d8[_0xbe14('0x4a')]);if(_0xfd32a3&&_0xfd32a3[_0xbe14('0x4c')]){logger[_0xbe14('0x12')]('['+_0x18be56[_0xbe14('0x68')][_0xbe14('0x69')]()+']',_0xbe14('0x4e'));_0x18be56[_0xbe14('0x51')]=util[_0xbe14('0xb')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3ac6d8[_0xbe14('0x4a')],_0x18be56[_0xbe14('0x50')],md5(_0x18be56[_0xbe14('0x50')]));}else{_0x18be56[_0xbe14('0x51')]='';}headers[_0xbe14('0x61')]=getAuth(_0x3ac6d8);return getUser(_0x3ac6d8)[_0xbe14('0xd')](function(_0x445302){_0x5a1ea6=_0x445302;logger['info']('The\x20User\x20ID\x20is:',_0x5a1ea6['id']);return getEndUser(_0x3ac6d8,_0x18be56[_0xbe14('0x6a')],_0x18be56[_0xbe14('0x53')]);})[_0xbe14('0xd')](function(_0x2510a0){_0x42b341=_0x2510a0;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x42b341['id']);return getTicket(_0x3ac6d8,_0x5a1ea6,_0x42b341,_0x442ec4,_0x18be56);})[_0xbe14('0xd')](function(_0x43511e){if(_0x43511e){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x43511e['id']);}})[_0xbe14('0x66')](function(_0x57729f){logger[_0xbe14('0x5c')]('['+_0x18be56[_0xbe14('0x68')][_0xbe14('0x69')]()+']',JSON[_0xbe14('0x19')](_0x57729f));});};
\ No newline at end of file
+var _0x3e74=['customField','content','idField','custom_fields','variable','variableName','name','Variable','toLowerCase','priority','Creating\x20new\x20ticket...','getString','phone','new','xCALLY','Motion','CTI','concat','Descriptions','/api/v2/users/%d','user','Fields','%s/customers/%d/cases','stripTrailingSlash','serverUrl','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','user:%s','newTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','https://xcally.desk.com/web/agent/case/%d','error','Desk\x20account\x20type\x20not\x20recognized','catch','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridnum','The\x20Enduser\x20ID\x20is:','trigger:desk:display','trigger:browser:url','%s/agent/tickets/%s','stringify','unmanaged','monitor_format','lastevent','toUpperCase','calleridnum','lodash','md5','util','ioredis','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','emit','application/json','info','Getting\x20agent\x20with\x20email','%s/users','then','find','_embedded','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','remoteUri','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','format','debug','[HTTP]','GET','authType','basic','%s:%s','username','password','token','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','total_entries','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','length','forEach','includes','string','picklist','type','nameField'];(function(_0xd3663b,_0x5994c7){var _0x5ec62c=function(_0x19a266){while(--_0x19a266){_0xd3663b['push'](_0xd3663b['shift']());}};_0x5ec62c(++_0x5994c7);}(_0x3e74,0x175));var _0x43e7=function(_0x428d17,_0x4a9781){_0x428d17=_0x428d17-0x0;var _0x370c27=_0x3e74[_0x428d17];return _0x370c27;};'use strict';var _=require(_0x43e7('0x0'));var rp=require('request-promise');var md5=require(_0x43e7('0x1'));var util=require(_0x43e7('0x2'));var Redis=require(_0x43e7('0x3'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0x43e7('0x4'))('desk');config[_0x43e7('0x5')]=_[_0x43e7('0x6')](config[_0x43e7('0x5')],{'host':_0x43e7('0x7'),'port':0x18eb});var io=require(_0x43e7('0x8'))(new Redis(config['redis']));function emit(_0x45a0d1,_0x3491d6,_0x2ede2d){io['to'](_0x45a0d1)[_0x43e7('0x9')](_0x3491d6,_0x2ede2d);}var headers={'Content-Type':_0x43e7('0xa'),'Accept':'application/json'};function getUser(_0x212c6c,_0x554d44){if(intUtil['validateEmail'](_0x554d44)===!![]){logger[_0x43e7('0xb')](_0x43e7('0xc'),_0x554d44);return request({'uri':util['format'](_0x43e7('0xd'),_0x212c6c['remoteUri'])})[_0x43e7('0xe')](function(_0x37302c){if(_0x37302c['total_entries']){return _[_0x43e7('0xf')](_0x37302c[_0x43e7('0x10')][_0x43e7('0x11')],{'email':_0x554d44});}})[_0x43e7('0xe')](function(_0x4e008c){if(_0x4e008c){logger['info'](_0x43e7('0x12'));return _0x4e008c;}else{logger[_0x43e7('0xb')](_0x43e7('0x13'));return request({'uri':util['format']('%s/users/me',_0x212c6c[_0x43e7('0x14')])});}});}else{logger[_0x43e7('0xb')](_0x43e7('0x15'));return request({'uri':util[_0x43e7('0x16')]('%s/users/me',_0x212c6c['remoteUri'])});}}function request(_0xdf16c){logger[_0x43e7('0x17')](_0x43e7('0x18'),JSON['stringify'](_0xdf16c));return rp(_['defaults'](_0xdf16c,{'method':_0x43e7('0x19'),'headers':headers,'json':!![]}));}function getAuth(_0x1ca758){var _0x9037d3;if(_0x1ca758[_0x43e7('0x1a')]===_0x43e7('0x1b')){_0x9037d3=util[_0x43e7('0x16')](_0x43e7('0x1c'),_0x1ca758[_0x43e7('0x1d')],_0x1ca758[_0x43e7('0x1e')]);}else if(_0x1ca758[_0x43e7('0x1a')]===_0x43e7('0x1f')){_0x9037d3=util[_0x43e7('0x16')]('%s/token:%s',_0x1ca758[_0x43e7('0x1d')],_0x1ca758[_0x43e7('0x1f')]);}return util['format'](_0x43e7('0x20'),new Buffer(_0x9037d3)[_0x43e7('0x21')](_0x43e7('0x22')));}function getEndUser(_0x28aacc,_0x4077fb,_0x2f4cb4){logger['info'](_0x43e7('0x23'),_0x2f4cb4);return request({'uri':util['format']('%s/customers/search',_0x28aacc[_0x43e7('0x14')]),'qs':{'phone':_0x2f4cb4}})[_0x43e7('0xe')](function(_0x4b2b9f){if(_0x4b2b9f[_0x43e7('0x24')]){logger['info'](_0x43e7('0x25'));return _0x4b2b9f['_embedded'][_0x43e7('0x11')][0x0];}else{logger[_0x43e7('0xb')](_0x43e7('0x26'));return request({'uri':util[_0x43e7('0x16')]('%s/customers',_0x28aacc['remoteUri']),'method':_0x43e7('0x27'),'body':{'first_name':_0x4077fb,'title':_0x4077fb,'phone_numbers':[{'type':'work','value':_0x2f4cb4}]}});}});}function getTags(_0x2dd5f,_0x40dc8f){var _0x3565cf=[];if(_0x2dd5f&&_0x2dd5f[_0x43e7('0x28')]>0x0){_0x3565cf=_['map'](_0x2dd5f,_0x40dc8f);}return _0x3565cf;}function getCustomFields(_0x33a1a5,_0x4690a6){var _0x45b675=[];var _0x50f9f5={'custom_fields':{}};if(_0x33a1a5[_0x43e7('0x28')]>0x0){_[_0x43e7('0x29')](_0x33a1a5,function(_0x2b85a5){if(_[_0x43e7('0x2a')]([_0x43e7('0x2b'),_0x43e7('0x2c')],_0x2b85a5[_0x43e7('0x2d')])&&_0x2b85a5[_0x43e7('0x2e')]&&!_0x2b85a5[_0x43e7('0x2f')]){_0x50f9f5[_0x2b85a5[_0x43e7('0x2e')]['toLowerCase']()]=_0x2b85a5[_0x43e7('0x30')][_0x43e7('0x21')]();}else if(_[_0x43e7('0x2a')]([_0x43e7('0x2b'),_0x43e7('0x2c')],_0x2b85a5['type'])&&_0x2b85a5[_0x43e7('0x31')]&&_0x2b85a5[_0x43e7('0x2f')]){_0x50f9f5[_0x43e7('0x32')][_0x2b85a5[_0x43e7('0x31')]]=_0x2b85a5['content']['toString']();}else if(_0x2b85a5['type']===_0x43e7('0x33')&&_0x2b85a5[_0x43e7('0x34')]&&_0x2b85a5[_0x43e7('0x31')]&&_0x2b85a5[_0x43e7('0x2f')]){_0x4690a6[_0x2b85a5[_0x43e7('0x34')]]&&(_0x50f9f5[_0x43e7('0x32')][_0x2b85a5['idField']]=_0x4690a6[_0x2b85a5['variableName']]['toString']());}else if(_0x2b85a5['type']==='customVariable'&&_0x2b85a5['Variable']&&_0x2b85a5['Variable'][_0x43e7('0x35')]&&_0x2b85a5['idField']&&_0x2b85a5[_0x43e7('0x2f')]){_0x4690a6[_0x2b85a5[_0x43e7('0x36')][_0x43e7('0x35')][_0x43e7('0x37')]()]&&(_0x50f9f5[_0x43e7('0x32')][_0x2b85a5[_0x43e7('0x31')]]=_0x4690a6[_0x2b85a5[_0x43e7('0x36')]['name']['toLowerCase']()]['toString']());}});}if(_0x50f9f5[_0x43e7('0x38')]){_0x50f9f5[_0x43e7('0x38')]=Number(_0x50f9f5[_0x43e7('0x38')]);}return _0x50f9f5;}function getTicket(_0x16cdba,_0x1b1440,_0x1ed538,_0x1d4589,_0x2ffd43){logger['info'](_0x43e7('0x39'));var _0x2b0ffe=_['merge']({'subject':intUtil[_0x43e7('0x3a')](_0x1d4589['Subjects'],_0x2ffd43,'\x20'),'type':_0x43e7('0x3b'),'status':_0x43e7('0x3c'),'labels':[_0x43e7('0x3d'),_0x43e7('0x3e'),_0x43e7('0x3f')][_0x43e7('0x40')](getTags(_0x1d4589['Tags'],'name')),'description':intUtil[_0x43e7('0x3a')](_0x1d4589[_0x43e7('0x41')],_0x2ffd43,'\x0a'),'_links':{'assigned_user':{'href':util[_0x43e7('0x16')](_0x43e7('0x42'),_0x1b1440['id']),'class':_0x43e7('0x43')}},'message':{'direction':'in','body':intUtil['getString'](_0x1d4589[_0x43e7('0x41')],_0x2ffd43,'\x0a')}},getCustomFields(_0x1d4589[_0x43e7('0x44')],_0x2ffd43));return request({'uri':util['format'](_0x43e7('0x45'),_0x16cdba['remoteUri'],_0x1ed538['id']),'method':_0x43e7('0x27'),'body':_0x2b0ffe});}exports['queue']=function(_0x3d81ae,_0x3b4235,_0x3a5807,_0x1c2c6b,_0x49b866,_0x47d6a1){var _0x103393,_0x40c509;_0x47d6a1[_0x43e7('0x14')]=intUtil[_0x43e7('0x46')](_0x47d6a1['remoteUri']);_0x47d6a1['serverUrl']=intUtil['stripTrailingSlash'](_0x47d6a1[_0x43e7('0x47')]);if(_0x49b866&&_0x49b866['monitor_format']){logger[_0x43e7('0xb')]('[QUEUE]','Recording\x20is\x20enabled!');_0x3b4235[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x47d6a1[_0x43e7('0x47')],_0x3b4235[_0x43e7('0x4a')],md5(_0x3b4235[_0x43e7('0x4a')]));}else{_0x3b4235['recordingURL']='';}headers[_0x43e7('0x4b')]=getAuth(_0x47d6a1);return getUser(_0x47d6a1,_0x1c2c6b[_0x43e7('0x4c')])[_0x43e7('0xe')](function(_0x1fd277){_0x103393=_0x1fd277;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0x103393['id']);return getEndUser(_0x47d6a1,_0x3b4235['calleridname'],_0x3b4235['calleridnum']);})[_0x43e7('0xe')](function(_0x36a09e){_0x40c509=_0x36a09e;logger[_0x43e7('0xb')]('The\x20Enduser\x20ID\x20is:',_0x40c509['id']);return getTicket(_0x47d6a1,_0x103393,_0x40c509,_0x3a5807,_0x3b4235);})['then'](function(_0x56489b){if(_0x56489b){logger[_0x43e7('0xb')](_0x43e7('0x4e'));logger['info'](_0x43e7('0x4f'),_0x56489b['id']);switch(_0x47d6a1[_0x43e7('0x2d')]){case _0x43e7('0x50'):logger['info']('[QUEUE]','Displaying\x20ticket\x20to\x20agent...');emit(util['format'](_0x43e7('0x51'),_0x1c2c6b[_0x43e7('0x35')]),'trigger:desk:display',{'recordId':_0x56489b['id']});break;case _0x43e7('0x52'):logger[_0x43e7('0xb')](_0x43e7('0x53'),_0x43e7('0x54'));emit(util['format'](_0x43e7('0x51'),_0x1c2c6b['name']),'trigger:browser:url',{'uri':util[_0x43e7('0x16')](_0x43e7('0x55'),_0x56489b['id'])});break;default:logger[_0x43e7('0x56')](_0x43e7('0x53'),_0x43e7('0x57'));}}})[_0x43e7('0x58')](function(_0x1cd87c){console[_0x43e7('0x56')](_0x1cd87c);logger[_0x43e7('0x56')](_0x43e7('0x53'),JSON['stringify'](_0x1cd87c));});};exports[_0x43e7('0x59')]=function(_0x46c910,_0x499c03,_0x39e3ca,_0x4e6f6d,_0x35b799,_0x520857,_0x34e2ec){var _0x1f561f,_0xfe13fa;_0x520857['remoteUri']=intUtil['stripTrailingSlash'](_0x520857[_0x43e7('0x14')]);_0x520857[_0x43e7('0x47')]=intUtil[_0x43e7('0x46')](_0x520857[_0x43e7('0x47')]);if(_0x34e2ec&&_0x34e2ec[_0x43e7('0x5a')]&&_0x34e2ec[_0x43e7('0x5a')]!==_0x43e7('0x5b')){logger[_0x43e7('0xb')](_0x43e7('0x5c'),_0x43e7('0x5d'));_0x499c03[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x520857[_0x43e7('0x47')],_0x499c03['uniqueid'],md5(_0x499c03[_0x43e7('0x4a')]));}headers[_0x43e7('0x4b')]=getAuth(_0x520857);return getUser(_0x520857,_0x4e6f6d[_0x43e7('0x4c')])['then'](function(_0x5d63c6){_0x1f561f=_0x5d63c6;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0x1f561f['id']);return getEndUser(_0x520857,_0x499c03['destcalleridname'],_0x499c03[_0x43e7('0x5e')]);})['then'](function(_0x49a6ce){_0xfe13fa=_0x49a6ce;logger[_0x43e7('0xb')](_0x43e7('0x5f'),_0xfe13fa['id']);return getTicket(_0x520857,_0x1f561f,_0xfe13fa,_0x39e3ca,_0x499c03);})[_0x43e7('0xe')](function(_0x40155c){if(_0x40155c){logger[_0x43e7('0xb')]('Ticket\x20created!');logger[_0x43e7('0xb')](_0x43e7('0x4f'),_0x40155c['id']);switch(_0x520857['type']){case _0x43e7('0x50'):logger[_0x43e7('0xb')](_0x43e7('0x53'),'Displaying\x20ticket\x20to\x20agent...');emit(util['format']('user:%s',_0x4e6f6d[_0x43e7('0x35')]),_0x43e7('0x60'),{'recordId':_0x40155c['id']});break;case _0x43e7('0x52'):logger[_0x43e7('0xb')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x43e7('0x16')](_0x43e7('0x51'),_0x4e6f6d[_0x43e7('0x35')]),_0x43e7('0x61'),{'uri':util['format'](_0x43e7('0x62'),_0x520857[_0x43e7('0x14')],_0x40155c['id'])});break;default:logger[_0x43e7('0x56')](_0x43e7('0x5c'),_0x43e7('0x57'));}}})[_0x43e7('0x58')](function(_0x4665db){logger[_0x43e7('0x56')](_0x43e7('0x5c'),JSON[_0x43e7('0x63')](_0x4665db));});};exports[_0x43e7('0x64')]=function(_0x57fdfe,_0x5f3824,_0x2b0711,_0x58a3a8,_0x501616,_0x50edb2){var _0xb3e981,_0xe666b0;_0x50edb2['remoteUri']=intUtil[_0x43e7('0x46')](_0x50edb2[_0x43e7('0x14')]);_0x50edb2[_0x43e7('0x47')]=intUtil['stripTrailingSlash'](_0x50edb2[_0x43e7('0x47')]);if(_0x501616&&_0x501616[_0x43e7('0x65')]){logger[_0x43e7('0xb')]('['+_0x5f3824[_0x43e7('0x66')][_0x43e7('0x67')]()+']',_0x43e7('0x5d'));_0x5f3824[_0x43e7('0x48')]=util['format'](_0x43e7('0x49'),_0x50edb2[_0x43e7('0x47')],_0x5f3824[_0x43e7('0x4a')],md5(_0x5f3824['uniqueid']));}else{_0x5f3824['recordingURL']='';}headers[_0x43e7('0x4b')]=getAuth(_0x50edb2);return getUser(_0x50edb2)['then'](function(_0x5cb26e){_0xb3e981=_0x5cb26e;logger[_0x43e7('0xb')](_0x43e7('0x4d'),_0xb3e981['id']);return getEndUser(_0x50edb2,_0x5f3824['calleridname'],_0x5f3824[_0x43e7('0x68')]);})[_0x43e7('0xe')](function(_0x1e2fed){_0xe666b0=_0x1e2fed;logger[_0x43e7('0xb')](_0x43e7('0x5f'),_0xe666b0['id']);return getTicket(_0x50edb2,_0xb3e981,_0xe666b0,_0x2b0711,_0x5f3824);})[_0x43e7('0xe')](function(_0x398a78){if(_0x398a78){logger['info'](_0x43e7('0x4e'));logger[_0x43e7('0xb')]('The\x20Ticket\x20ID\x20is:',_0x398a78['id']);}})[_0x43e7('0x58')](function(_0x5c2c5f){logger[_0x43e7('0x56')]('['+_0x5f3824[_0x43e7('0x66')][_0x43e7('0x67')]()+']',JSON[_0x43e7('0x63')](_0x5c2c5f));});};
\ No newline at end of file
index 21224de..3a9ac03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x954a=['recordingURL',']\x20The\x20User\x20ID\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','error','inspect','lodash','request-promise','util','./util','md5','../../../../config/logger','../../../../config/environment','redis','defaults','socket.io-emitter','remoteUri','password','clientSecret','then','catch','toUpperCase','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','validateEmail','email','userEmail','length','info','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','username','toLowerCase','calleridnum','contacts','/systemusers(','headers','odata-entityid','substring','lastIndexOf','enduserId','outbound','destcalleridnum','replace','%2b','value','telephone1','contactid',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','forEach','includes','string','picklist','customField','idField','indexOf','content','incident','POST','incidents','Subjects','getString','Descriptions','/contacts(','ticketType','phonecall','phonecalls','callDirection','queue','Fields','ticketId','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','format','emit','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','https://login.microsoftonline.com/%s/oauth2/token','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','[OUTBOUND]'];(function(_0x5eb22e,_0x27cbac){var _0x27fed5=function(_0x565467){while(--_0x565467){_0x5eb22e['push'](_0x5eb22e['shift']());}};_0x27fed5(++_0x27cbac);}(_0x954a,0x66));var _0xa954=function(_0x34f6c3,_0x346cb9){_0x34f6c3=_0x34f6c3-0x0;var _0x43b5f6=_0x954a[_0x34f6c3];return _0x43b5f6;};'use strict';var _=require(_0xa954('0x0'));var BPromise=require('bluebird');var rp=require(_0xa954('0x1'));var util=require(_0xa954('0x2'));var intUtil=require(_0xa954('0x3'));var md5=require(_0xa954('0x4'));var Redis=require('ioredis');var logger=require(_0xa954('0x5'))('dynamics365');var config=require(_0xa954('0x6'));config[_0xa954('0x7')]=_[_0xa954('0x8')](config[_0xa954('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0xa954('0x9'))(new Redis(config['redis']));function getAuthToken(_0x1faace,_0x5664c8,_0x168052){var _0x31c561={'method':'POST','uri':_0x5664c8,'form':{'client_id':_0x1faace['clientId'],'resource':_0x1faace[_0xa954('0xa')],'username':_0x1faace['username'],'password':_0x1faace[_0xa954('0xb')],'grant_type':'password','client_secret':_0x1faace[_0xa954('0xc')]},'json':!![]};return rp(_0x31c561)[_0xa954('0xd')](function(_0x542e1f){return _0x542e1f['access_token'];})[_0xa954('0xe')](function(_0x576026){logger['error']('['+[_0x168052[_0xa954('0xf')]()]+']\x20Wrong\x20credentials!');return _0x576026[_0xa954('0x10')];});}function getUser(_0x3ffb6b,_0x2db122,_0x36a157,_0x16fdc8,_0x4f408e,_0x433a8b){return new BPromise(function(_0x3d1aec,_0x5d0bea){return getAuthToken(_0x2db122,_0x16fdc8,_0x433a8b)[_0xa954('0xd')](function(_0xc4ae3c){var _0x4675b6={'method':_0xa954('0x11'),'uri':_0x4f408e+_0xa954('0x12'),'headers':{'Authorization':_0xa954('0x13')+_0xc4ae3c,'OData-Version':_0xa954('0x14')},'json':!![]};return rp(_0x4675b6);})['then'](function(_0x6f2613){var _0x52591d=_0x6f2613['value'];var _0x6e9a6=![];var _0x328d3d=null;if(!_['isNil'](_0x36a157)){if(intUtil[_0xa954('0x15')](_0x36a157[_0xa954('0x16')])){_0x3ffb6b[_0xa954('0x17')]=_0x36a157[_0xa954('0x16')];for(_0x328d3d=0x0;_0x328d3d<_0x52591d[_0xa954('0x18')];_0x328d3d++){if(_0x52591d[_0x328d3d]['internalemailaddress']===_0x36a157[_0xa954('0x16')]&&!_0x52591d[_0x328d3d]['isdisabled']){_0x6e9a6=!![];logger[_0xa954('0x19')]('['+[_0x433a8b[_0xa954('0xf')]()]+']\x20Agent\x20found\x20'+_0x52591d[_0x328d3d][_0xa954('0x1a')]+'!');_0x3ffb6b[_0xa954('0x1b')]=_0x52591d[_0x328d3d][_0xa954('0x1a')];}}}}if(!_0x6e9a6){logger[_0xa954('0x19')]('['+[_0x433a8b[_0xa954('0xf')]()]+_0xa954('0x1c'));_0x3ffb6b[_0xa954('0x17')]=_0x2db122[_0xa954('0x1d')];for(_0x328d3d=0x0;_0x328d3d<_0x52591d[_0xa954('0x18')];_0x328d3d++){if(_0x52591d[_0x328d3d]['internalemailaddress']===_0x2db122[_0xa954('0x1d')]){_0x3ffb6b['userId']=_0x52591d[_0x328d3d]['systemuserid'];}}}_0x3d1aec(_0x3ffb6b);})['catch'](function(_0x728139){_0x5d0bea(_0x728139['message']);});});}function createEndUser(_0x3c56fd,_0x4b917c,_0x18a637,_0x10d431,_0x1186e1,_0x178ea5){return new BPromise(function(_0x14a6fa,_0x2fffbc){return getAuthToken(_0x4b917c,_0x18a637,_0x178ea5)[_0xa954('0xd')](function(_0x5c7ddf){var _0xc8ac1a=_0x178ea5[_0xa954('0x1e')]()==='outbound'?_0x1186e1['destcalleridnum']:_0x1186e1[_0xa954('0x1f')];var _0x1eeffb={'method':'POST','uri':_0x10d431+_0xa954('0x20'),'body':{'telephone1':_0xc8ac1a,'fullname':_0xc8ac1a,'firstname':_0xc8ac1a,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xa954('0x21')+_0x3c56fd[_0xa954('0x1b')]+')'},'headers':{'Authorization':_0xa954('0x13')+_0x5c7ddf,'OData-Version':_0xa954('0x14')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x1eeffb);})[_0xa954('0xd')](function(_0x12c358){var _0x12daa3=_0x12c358[_0xa954('0x22')][_0xa954('0x23')];var _0x240f20=_0x12daa3[_0xa954('0x24')](_0x12daa3[_0xa954('0x25')]('(')+0x1,_0x12daa3['lastIndexOf'](')'));_0x3c56fd[_0xa954('0x26')]=_0x240f20;_0x14a6fa(_0x3c56fd);})[_0xa954('0xe')](function(_0x78e8de){_0x2fffbc(_0x78e8de[_0xa954('0x10')]);});});}function getEndUser(_0xa7c2bd,_0x1ef055,_0x186d6f,_0x448883,_0x2eab19,_0xe3d809){return new BPromise(function(_0x3ccbf2,_0x175f8e){var _0xab5ab4=_0xe3d809[_0xa954('0x1e')]()===_0xa954('0x27')?_0x2eab19[_0xa954('0x28')]:_0x2eab19[_0xa954('0x1f')];return getAuthToken(_0x1ef055,_0x186d6f,_0xe3d809)['then'](function(_0x11fc14){var _0x5a4896={'method':'GET','uri':_0x448883+'contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27'+_0xab5ab4[_0xa954('0x29')]('+',_0xa954('0x2a'))+'\x27','headers':{'Authorization':_0xa954('0x13')+_0x11fc14,'If-None-Match':null,'OData-Version':_0xa954('0x14')},'json':!![]};return rp(_0x5a4896);})[_0xa954('0xd')](function(_0x4453e0){var _0x40d51f=null;if(_0x4453e0){var _0x2e780d=_0x4453e0[_0xa954('0x2b')];var _0x67699e=![];for(_0x40d51f=0x0;_0x40d51f<_0x2e780d[_0xa954('0x18')];_0x40d51f++){if(_0x2e780d[_0x40d51f][_0xa954('0x2c')]===_0xab5ab4){_0x67699e=!![];_0xa7c2bd['enduserId']=_0x2e780d[_0x40d51f][_0xa954('0x2d')];}}if(_0x67699e){_0x3ccbf2(_0xa7c2bd);}else{return createEndUser(_0xa7c2bd,_0x1ef055,_0x186d6f,_0x448883,_0x2eab19,_0xe3d809)['then'](function(_0x5b56f3){logger[_0xa954('0x19')]('['+[_0xe3d809[_0xa954('0xf')]()]+_0xa954('0x2e'),_0x5b56f3[_0xa954('0x26')]);_0x3ccbf2(_0x5b56f3);});}}else{return createEndUser(_0xa7c2bd,_0x1ef055,_0x186d6f,_0x448883,_0x2eab19,_0xe3d809)[_0xa954('0xd')](function(_0x3a3de3){logger[_0xa954('0x19')]('['+[_0xe3d809['toUpperCase']()]+_0xa954('0x2f'),_0x3a3de3[_0xa954('0x26')]);_0x3ccbf2(_0x3a3de3);});}});});}function getCustomFields(_0x38b809,_0x51b242,_0x1469a8){var _0x22896c={};if(_0x38b809[_0xa954('0x18')]>0x0){_[_0xa954('0x30')](_0x38b809,function(_0x52aa2a){if(_[_0xa954('0x31')]([_0xa954('0x32'),_0xa954('0x33')],_0x52aa2a['type'])&&_0x52aa2a['nameField']&&!_0x52aa2a[_0xa954('0x34')]){var _0x3600ea=_0x52aa2a[_0xa954('0x35')][_0xa954('0x1e')]();var _0x55ee20=_0x3600ea['substring'](0x0,_0x3600ea[_0xa954('0x36')]('_'));var _0x115227=_0x3600ea[_0xa954('0x24')](_0x3600ea[_0xa954('0x36')]('_')+0x1);if(_0x55ee20===_0x1469a8){_0x22896c[_0x115227]=_0x52aa2a[_0xa954('0x37')];}}});}return _0x22896c;}function getTicket(_0x5c8481,_0x531f50,_0x500bbc,_0x49bf6e,_0x39fb2e,_0x3a07ff,_0x413c31){return new BPromise(function(_0x39a873,_0x1a739c){var _0x469072;return getAuthToken(_0x531f50,_0x500bbc,_0x413c31)[_0xa954('0xd')](function(_0x209f2c){if(_0x3a07ff['ticketType']===_0xa954('0x38')){_0x469072={'method':_0xa954('0x39'),'uri':_0x49bf6e+_0xa954('0x3a'),'body':Object['assign']({},{'title':intUtil['getString'](_0x3a07ff[_0xa954('0x3b')],_0x39fb2e,'\x20'),'description':intUtil[_0xa954('0x3c')](_0x3a07ff[_0xa954('0x3d')],_0x39fb2e,'\x0a'),'customerid_contact@odata.bind':_0xa954('0x3e')+_0x5c8481[_0xa954('0x26')]+')','ownerid@odata.bind':_0xa954('0x21')+_0x5c8481[_0xa954('0x1b')]+')','caseorigincode':'1'},getCustomFields(_0x3a07ff['Fields'],_0x39fb2e,_0x3a07ff[_0xa954('0x3f')])),'headers':{'Authorization':_0xa954('0x13')+_0x209f2c,'OData-Version':_0xa954('0x14')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x3a07ff[_0xa954('0x3f')]===_0xa954('0x40')){_0x469072={'method':_0xa954('0x39'),'uri':_0x49bf6e+_0xa954('0x41'),'body':Object['assign']({},{'subject':intUtil['getString'](_0x3a07ff[_0xa954('0x3b')],_0x39fb2e,'\x20'),'phonenumber':String(_0x39fb2e[_0xa954('0x1f')]),'description':intUtil[_0xa954('0x3c')](_0x3a07ff[_0xa954('0x3d')],_0x39fb2e,'\x0a'),'regardingobjectid_contact@odata.bind':'/contacts('+_0x5c8481['enduserId']+')','ownerid@odata.bind':'/systemusers('+_0x5c8481[_0xa954('0x1b')]+')','directioncode':_0x5c8481[_0xa954('0x42')]==='queue'?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':'/systemusers('+_0x5c8481['userId']+')','participationtypemask':_0x5c8481[_0xa954('0x42')]==='queue'?0x2:0x1},{'partyid_contact@odata.bind':_0xa954('0x3e')+_0x5c8481[_0xa954('0x26')]+')','participationtypemask':_0x5c8481[_0xa954('0x42')]===_0xa954('0x43')?0x1:0x2}]},getCustomFields(_0x3a07ff[_0xa954('0x44')],_0x39fb2e,_0x3a07ff[_0xa954('0x3f')])),'headers':{'Authorization':'Bearer\x20'+_0x209f2c,'OData-Version':_0xa954('0x14')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x469072);})['then'](function(_0x498899){var _0x697e3f=_0x498899[_0xa954('0x22')]['odata-entityid'];var _0x146b72=_0x697e3f[_0xa954('0x24')](_0x697e3f[_0xa954('0x25')]('(')+0x1,_0x697e3f[_0xa954('0x25')](')'));_0x5c8481[_0xa954('0x45')]=_0x146b72;_0x39a873(_0x5c8481);})['catch'](function(_0x2d3015){_0x1a739c(_0x2d3015[_0xa954('0x10')]);});});}function emit(_0x830317,_0x14cd3c,_0x492f58,_0x29a240){var _0x1132c5={'uri':util['format'](_0xa954('0x46'),_0x830317,_0x492f58,_0x29a240)};io['to'](util[_0xa954('0x47')]('user:%s',_0x14cd3c))[_0xa954('0x48')](_0xa954('0x49'),_0x1132c5);}exports['cs']=function(_0x2850cb,_0x3fa712,_0x1cab7c,_0x3f0f2b,_0x53e14b,_0x1e0c9d,_0x3548a5,_0x286e7e){var _0x3b2974={};_0x1e0c9d[_0xa954('0xa')]=intUtil[_0xa954('0x4a')](_0x1e0c9d[_0xa954('0xa')]);_0x1e0c9d[_0xa954('0x4b')]=intUtil[_0xa954('0x4a')](_0x1e0c9d[_0xa954('0x4b')]);_0x3b2974[_0xa954('0x42')]=_0x286e7e===_0xa954('0x43')||_0x286e7e===_0xa954('0x4c')?_0xa954('0x43'):_0xa954('0x27');var _0x2af837=util[_0xa954('0x47')]('%s/api/data/v9.0/',_0x1e0c9d[_0xa954('0xa')]);var _0x496daf=util[_0xa954('0x47')](_0xa954('0x4d'),_0x1e0c9d['tenantId']);var _0x4fa339=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1e0c9d[_0xa954('0x4b')],_0x3fa712[_0xa954('0x4e')],md5(_0x3fa712[_0xa954('0x4e')]));if(_0x53e14b&&_0x53e14b[_0xa954('0x4f')]){logger['info'](_0xa954('0x50'),_0xa954('0x51'));_0x3fa712['recordingURL']=_0x4fa339;}else if(_0x3548a5&&_0x3548a5['recordingFormat']&&_0x3548a5[_0xa954('0x52')]!=='none'){logger[_0xa954('0x19')](_0xa954('0x53'),'Recording\x20is\x20enabled!');_0x3fa712[_0xa954('0x54')]=_0x4fa339;}else{_0x3fa712[_0xa954('0x54')]='';}return getUser(_0x3b2974,_0x1e0c9d,_0x3f0f2b,_0x496daf,_0x2af837,_0x286e7e)['then'](function(_0x180b09){logger[_0xa954('0x19')]('['+_0x286e7e['toUpperCase']()+_0xa954('0x55'),_0x180b09[_0xa954('0x1b')]);logger[_0xa954('0x19')]('['+_0x286e7e['toUpperCase']()+']\x20The\x20User\x20email\x20is:',_0x180b09['userEmail']);return getEndUser(_0x180b09,_0x1e0c9d,_0x496daf,_0x2af837,_0x3fa712,_0x286e7e);})['then'](function(_0x26dce8){logger[_0xa954('0x19')]('['+_0x286e7e[_0xa954('0xf')]()+_0xa954('0x56'),_0x26dce8[_0xa954('0x26')]);logger[_0xa954('0x19')]('['+_0x286e7e[_0xa954('0xf')]()+_0xa954('0x57'),_0x3fa712[_0xa954('0x1f')]);return getTicket(_0x26dce8,_0x1e0c9d,_0x496daf,_0x2af837,_0x3fa712,_0x1cab7c,_0x286e7e);})[_0xa954('0xd')](function(_0x29802c){logger['info'](util[_0xa954('0x47')]('['+_0x286e7e[_0xa954('0xf')]()+_0xa954('0x58'),_0x1cab7c[_0xa954('0x3f')],_0x29802c['ticketId']));logger[_0xa954('0x19')](util['format']('['+_0x286e7e[_0xa954('0xf')]()+']\x20Call\x20direction:\x20%s',_0x286e7e));if(_0x286e7e!==_0xa954('0x4c')){logger[_0xa954('0x19')]('['+_0x286e7e[_0xa954('0xf')]()+']',_0xa954('0x59'));emit(_0x1e0c9d['remoteUri'],_0x3f0f2b[_0xa954('0x5a')],_0x1cab7c[_0xa954('0x3f')],_0x29802c[_0xa954('0x45')]);}})[_0xa954('0xe')](function(_0x3d35b6){logger[_0xa954('0x5b')]('['+_0x286e7e['toUpperCase']()+']\x20Error\x20running\x20Dynamics365\x20integration',util[_0xa954('0x5c')](_0x3d35b6,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x65ee=['calleridnum','contacts','/systemusers(','Bearer\x20','4.0','substring','lastIndexOf','enduserId','outbound','%2b','telephone1','contactid',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','includes','string','type','nameField','idField','indexOf','content','ticketType','assign','getString','Subjects','Descriptions','/contacts(','Fields','phonecall','queue','headers','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','callDirection','unmanaged','https://login.microsoftonline.com/%s/oauth2/token','tenantId','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','lodash','bluebird','request-promise','util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','clientId','remoteUri','username','password','clientSecret','then','access_token','catch','toUpperCase','message','GET','value','email','userEmail','length','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','toLowerCase','destcalleridnum'];(function(_0x9fd887,_0x47f76c){var _0x1a54ab=function(_0xb65c08){while(--_0xb65c08){_0x9fd887['push'](_0x9fd887['shift']());}};_0x1a54ab(++_0x47f76c);}(_0x65ee,0x9b));var _0xe65e=function(_0x16afe1,_0x223ab7){_0x16afe1=_0x16afe1-0x0;var _0x467198=_0x65ee[_0x16afe1];return _0x467198;};'use strict';var _=require(_0xe65e('0x0'));var BPromise=require(_0xe65e('0x1'));var rp=require(_0xe65e('0x2'));var util=require(_0xe65e('0x3'));var intUtil=require('./util');var md5=require(_0xe65e('0x4'));var Redis=require(_0xe65e('0x5'));var logger=require(_0xe65e('0x6'))(_0xe65e('0x7'));var config=require(_0xe65e('0x8'));config[_0xe65e('0x9')]=_[_0xe65e('0xa')](config[_0xe65e('0x9')],{'host':_0xe65e('0xb'),'port':0x18eb});var io=require(_0xe65e('0xc'))(new Redis(config[_0xe65e('0x9')]));function getAuthToken(_0x5c1de5,_0x58831f,_0x43b737){var _0x897162={'method':'POST','uri':_0x58831f,'form':{'client_id':_0x5c1de5[_0xe65e('0xd')],'resource':_0x5c1de5[_0xe65e('0xe')],'username':_0x5c1de5[_0xe65e('0xf')],'password':_0x5c1de5['password'],'grant_type':_0xe65e('0x10'),'client_secret':_0x5c1de5[_0xe65e('0x11')]},'json':!![]};return rp(_0x897162)[_0xe65e('0x12')](function(_0x1ceff0){return _0x1ceff0[_0xe65e('0x13')];})[_0xe65e('0x14')](function(_0x3e99f3){logger['error']('['+[_0x43b737[_0xe65e('0x15')]()]+']\x20Wrong\x20credentials!');return _0x3e99f3[_0xe65e('0x16')];});}function getUser(_0x3637d5,_0x4a0b74,_0x185b53,_0x17731c,_0x194b66,_0x55ab85){return new BPromise(function(_0x6a0238,_0x996986){return getAuthToken(_0x4a0b74,_0x17731c,_0x55ab85)[_0xe65e('0x12')](function(_0x243ea1){var _0xbdceca={'method':_0xe65e('0x17'),'uri':_0x194b66+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':'Bearer\x20'+_0x243ea1,'OData-Version':'4.0'},'json':!![]};return rp(_0xbdceca);})[_0xe65e('0x12')](function(_0x3062aa){var _0x16c207=_0x3062aa[_0xe65e('0x18')];var _0x452752=![];var _0x29790e=null;if(!_['isNil'](_0x185b53)){if(intUtil['validateEmail'](_0x185b53[_0xe65e('0x19')])){_0x3637d5[_0xe65e('0x1a')]=_0x185b53['email'];for(_0x29790e=0x0;_0x29790e<_0x16c207[_0xe65e('0x1b')];_0x29790e++){if(_0x16c207[_0x29790e][_0xe65e('0x1c')]===_0x185b53[_0xe65e('0x19')]&&!_0x16c207[_0x29790e][_0xe65e('0x1d')]){_0x452752=!![];logger[_0xe65e('0x1e')]('['+[_0x55ab85['toUpperCase']()]+_0xe65e('0x1f')+_0x16c207[_0x29790e][_0xe65e('0x20')]+'!');_0x3637d5['userId']=_0x16c207[_0x29790e][_0xe65e('0x20')];}}}}if(!_0x452752){logger[_0xe65e('0x1e')]('['+[_0x55ab85[_0xe65e('0x15')]()]+_0xe65e('0x21'));_0x3637d5['userEmail']=_0x4a0b74[_0xe65e('0xf')];for(_0x29790e=0x0;_0x29790e<_0x16c207['length'];_0x29790e++){if(_0x16c207[_0x29790e]['internalemailaddress']===_0x4a0b74[_0xe65e('0xf')]){_0x3637d5[_0xe65e('0x22')]=_0x16c207[_0x29790e][_0xe65e('0x20')];}}}_0x6a0238(_0x3637d5);})['catch'](function(_0x5b7f78){_0x996986(_0x5b7f78[_0xe65e('0x16')]);});});}function createEndUser(_0x420a72,_0x1f2224,_0x567bef,_0x44e84f,_0x403c10,_0x464508){return new BPromise(function(_0x3df31d,_0x9f943){return getAuthToken(_0x1f2224,_0x567bef,_0x464508)['then'](function(_0xcf93e1){var _0x5e0b07=_0x464508[_0xe65e('0x23')]()==='outbound'?_0x403c10[_0xe65e('0x24')]:_0x403c10[_0xe65e('0x25')];var _0x23fec7={'method':'POST','uri':_0x44e84f+_0xe65e('0x26'),'body':{'telephone1':_0x5e0b07,'fullname':_0x5e0b07,'firstname':_0x5e0b07,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xe65e('0x27')+_0x420a72[_0xe65e('0x22')]+')'},'headers':{'Authorization':_0xe65e('0x28')+_0xcf93e1,'OData-Version':_0xe65e('0x29')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x23fec7);})[_0xe65e('0x12')](function(_0x4acd87){var _0x11415e=_0x4acd87['headers']['odata-entityid'];var _0x2ecf56=_0x11415e[_0xe65e('0x2a')](_0x11415e[_0xe65e('0x2b')]('(')+0x1,_0x11415e['lastIndexOf'](')'));_0x420a72[_0xe65e('0x2c')]=_0x2ecf56;_0x3df31d(_0x420a72);})[_0xe65e('0x14')](function(_0x316963){_0x9f943(_0x316963['message']);});});}function getEndUser(_0x2731d1,_0x171fae,_0x434563,_0xdd8b0b,_0x2014a4,_0x2c5e01){return new BPromise(function(_0x59f275,_0x48d550){var _0x33d023=_0x2c5e01[_0xe65e('0x23')]()===_0xe65e('0x2d')?_0x2014a4[_0xe65e('0x24')]:_0x2014a4[_0xe65e('0x25')];return getAuthToken(_0x171fae,_0x434563,_0x2c5e01)['then'](function(_0x5eced4){var _0x2bf128={'method':_0xe65e('0x17'),'uri':_0xdd8b0b+'contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27'+_0x33d023['replace']('+',_0xe65e('0x2e'))+'\x27','headers':{'Authorization':_0xe65e('0x28')+_0x5eced4,'If-None-Match':null,'OData-Version':_0xe65e('0x29')},'json':!![]};return rp(_0x2bf128);})[_0xe65e('0x12')](function(_0x10f5f6){var _0x2c50e3=null;if(_0x10f5f6){var _0x4b99b2=_0x10f5f6[_0xe65e('0x18')];var _0x139661=![];for(_0x2c50e3=0x0;_0x2c50e3<_0x4b99b2[_0xe65e('0x1b')];_0x2c50e3++){if(_0x4b99b2[_0x2c50e3][_0xe65e('0x2f')]===_0x33d023){_0x139661=!![];_0x2731d1[_0xe65e('0x2c')]=_0x4b99b2[_0x2c50e3][_0xe65e('0x30')];}}if(_0x139661){_0x59f275(_0x2731d1);}else{return createEndUser(_0x2731d1,_0x171fae,_0x434563,_0xdd8b0b,_0x2014a4,_0x2c5e01)[_0xe65e('0x12')](function(_0x469569){logger[_0xe65e('0x1e')]('['+[_0x2c5e01[_0xe65e('0x15')]()]+_0xe65e('0x31'),_0x469569[_0xe65e('0x2c')]);_0x59f275(_0x469569);});}}else{return createEndUser(_0x2731d1,_0x171fae,_0x434563,_0xdd8b0b,_0x2014a4,_0x2c5e01)[_0xe65e('0x12')](function(_0x36efe0){logger[_0xe65e('0x1e')]('['+[_0x2c5e01['toUpperCase']()]+_0xe65e('0x32'),_0x36efe0['enduserId']);_0x59f275(_0x36efe0);});}});});}function getCustomFields(_0x211d6c,_0x4d19cd,_0x76a812){var _0x46816b={};if(_0x211d6c['length']>0x0){_['forEach'](_0x211d6c,function(_0x5a4cbc){if(_[_0xe65e('0x33')]([_0xe65e('0x34'),'picklist'],_0x5a4cbc[_0xe65e('0x35')])&&_0x5a4cbc[_0xe65e('0x36')]&&!_0x5a4cbc['customField']){var _0x2d1629=_0x5a4cbc[_0xe65e('0x37')]['toLowerCase']();var _0x435f76=_0x2d1629[_0xe65e('0x2a')](0x0,_0x2d1629[_0xe65e('0x38')]('_'));var _0x59e151=_0x2d1629['substring'](_0x2d1629['indexOf']('_')+0x1);if(_0x435f76===_0x76a812){_0x46816b[_0x59e151]=_0x5a4cbc[_0xe65e('0x39')];}}});}return _0x46816b;}function getTicket(_0x48936b,_0x35f6e3,_0x56a3ea,_0x25a6de,_0x31ce5b,_0x1efe7f,_0x34053e){return new BPromise(function(_0x23b725,_0x1b1633){var _0x28bdb6;return getAuthToken(_0x35f6e3,_0x56a3ea,_0x34053e)[_0xe65e('0x12')](function(_0x16c5dc){if(_0x1efe7f[_0xe65e('0x3a')]==='incident'){_0x28bdb6={'method':'POST','uri':_0x25a6de+'incidents','body':Object[_0xe65e('0x3b')]({},{'title':intUtil[_0xe65e('0x3c')](_0x1efe7f[_0xe65e('0x3d')],_0x31ce5b,'\x20'),'description':intUtil[_0xe65e('0x3c')](_0x1efe7f[_0xe65e('0x3e')],_0x31ce5b,'\x0a'),'customerid_contact@odata.bind':_0xe65e('0x3f')+_0x48936b[_0xe65e('0x2c')]+')','ownerid@odata.bind':_0xe65e('0x27')+_0x48936b['userId']+')','caseorigincode':'1'},getCustomFields(_0x1efe7f[_0xe65e('0x40')],_0x31ce5b,_0x1efe7f[_0xe65e('0x3a')])),'headers':{'Authorization':_0xe65e('0x28')+_0x16c5dc,'OData-Version':_0xe65e('0x29')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x1efe7f['ticketType']===_0xe65e('0x41')){_0x28bdb6={'method':'POST','uri':_0x25a6de+'phonecalls','body':Object[_0xe65e('0x3b')]({},{'subject':intUtil[_0xe65e('0x3c')](_0x1efe7f[_0xe65e('0x3d')],_0x31ce5b,'\x20'),'phonenumber':String(_0x31ce5b[_0xe65e('0x25')]),'description':intUtil['getString'](_0x1efe7f['Descriptions'],_0x31ce5b,'\x0a'),'regardingobjectid_contact@odata.bind':_0xe65e('0x3f')+_0x48936b[_0xe65e('0x2c')]+')','ownerid@odata.bind':'/systemusers('+_0x48936b[_0xe65e('0x22')]+')','directioncode':_0x48936b['callDirection']===_0xe65e('0x42')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0xe65e('0x27')+_0x48936b['userId']+')','participationtypemask':_0x48936b['callDirection']===_0xe65e('0x42')?0x2:0x1},{'partyid_contact@odata.bind':_0xe65e('0x3f')+_0x48936b[_0xe65e('0x2c')]+')','participationtypemask':_0x48936b['callDirection']===_0xe65e('0x42')?0x1:0x2}]},getCustomFields(_0x1efe7f[_0xe65e('0x40')],_0x31ce5b,_0x1efe7f[_0xe65e('0x3a')])),'headers':{'Authorization':'Bearer\x20'+_0x16c5dc,'OData-Version':_0xe65e('0x29')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x28bdb6);})[_0xe65e('0x12')](function(_0x5dd6d9){var _0x4fd044=_0x5dd6d9[_0xe65e('0x43')]['odata-entityid'];var _0x3b8d06=_0x4fd044[_0xe65e('0x2a')](_0x4fd044[_0xe65e('0x2b')]('(')+0x1,_0x4fd044[_0xe65e('0x2b')](')'));_0x48936b[_0xe65e('0x44')]=_0x3b8d06;_0x23b725(_0x48936b);})['catch'](function(_0x5b65ca){_0x1b1633(_0x5b65ca['message']);});});}function emit(_0x2e4720,_0x46469f,_0x3f1c30,_0x29a653){var _0x407649={'uri':util[_0xe65e('0x45')](_0xe65e('0x46'),_0x2e4720,_0x3f1c30,_0x29a653)};io['to'](util['format'](_0xe65e('0x47'),_0x46469f))[_0xe65e('0x48')](_0xe65e('0x49'),_0x407649);}exports['cs']=function(_0x302467,_0x2176eb,_0x4ef786,_0x28165b,_0x2f375f,_0x543c3c,_0x4785e9,_0x5ec5d0){var _0x30a045={};_0x543c3c[_0xe65e('0xe')]=intUtil[_0xe65e('0x4a')](_0x543c3c[_0xe65e('0xe')]);_0x543c3c[_0xe65e('0x4b')]=intUtil['stripTrailingSlash'](_0x543c3c[_0xe65e('0x4b')]);_0x30a045[_0xe65e('0x4c')]=_0x5ec5d0==='queue'||_0x5ec5d0===_0xe65e('0x4d')?_0xe65e('0x42'):_0xe65e('0x2d');var _0x69eb64=util[_0xe65e('0x45')]('%s/api/data/v9.0/',_0x543c3c[_0xe65e('0xe')]);var _0x178166=util[_0xe65e('0x45')](_0xe65e('0x4e'),_0x543c3c[_0xe65e('0x4f')]);var _0x413a0c=util[_0xe65e('0x45')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x543c3c[_0xe65e('0x4b')],_0x2176eb[_0xe65e('0x50')],md5(_0x2176eb[_0xe65e('0x50')]));if(_0x2f375f&&_0x2f375f[_0xe65e('0x51')]){logger[_0xe65e('0x1e')](_0xe65e('0x52'),_0xe65e('0x53'));_0x2176eb[_0xe65e('0x54')]=_0x413a0c;}else if(_0x4785e9&&_0x4785e9[_0xe65e('0x55')]&&_0x4785e9[_0xe65e('0x55')]!==_0xe65e('0x56')){logger[_0xe65e('0x1e')](_0xe65e('0x57'),_0xe65e('0x53'));_0x2176eb['recordingURL']=_0x413a0c;}else{_0x2176eb[_0xe65e('0x54')]='';}return getUser(_0x30a045,_0x543c3c,_0x28165b,_0x178166,_0x69eb64,_0x5ec5d0)[_0xe65e('0x12')](function(_0x13f56a){logger[_0xe65e('0x1e')]('['+_0x5ec5d0[_0xe65e('0x15')]()+_0xe65e('0x58'),_0x13f56a[_0xe65e('0x22')]);logger[_0xe65e('0x1e')]('['+_0x5ec5d0[_0xe65e('0x15')]()+_0xe65e('0x59'),_0x13f56a['userEmail']);return getEndUser(_0x13f56a,_0x543c3c,_0x178166,_0x69eb64,_0x2176eb,_0x5ec5d0);})[_0xe65e('0x12')](function(_0x19f45a){logger[_0xe65e('0x1e')]('['+_0x5ec5d0[_0xe65e('0x15')]()+_0xe65e('0x5a'),_0x19f45a[_0xe65e('0x2c')]);logger[_0xe65e('0x1e')]('['+_0x5ec5d0[_0xe65e('0x15')]()+_0xe65e('0x5b'),_0x2176eb[_0xe65e('0x25')]);return getTicket(_0x19f45a,_0x543c3c,_0x178166,_0x69eb64,_0x2176eb,_0x4ef786,_0x5ec5d0);})[_0xe65e('0x12')](function(_0x47ee0a){logger[_0xe65e('0x1e')](util[_0xe65e('0x45')]('['+_0x5ec5d0['toUpperCase']()+_0xe65e('0x5c'),_0x4ef786[_0xe65e('0x3a')],_0x47ee0a[_0xe65e('0x44')]));logger[_0xe65e('0x1e')](util[_0xe65e('0x45')]('['+_0x5ec5d0['toUpperCase']()+_0xe65e('0x5d'),_0x5ec5d0));if(_0x5ec5d0!==_0xe65e('0x4d')){logger[_0xe65e('0x1e')]('['+_0x5ec5d0[_0xe65e('0x15')]()+']',_0xe65e('0x5e'));emit(_0x543c3c[_0xe65e('0xe')],_0x28165b[_0xe65e('0x5f')],_0x4ef786[_0xe65e('0x3a')],_0x47ee0a[_0xe65e('0x44')]);}})['catch'](function(_0x3b46ff){logger['error']('['+_0x5ec5d0[_0xe65e('0x15')]()+']\x20Error\x20running\x20Dynamics365\x20integration',util['inspect'](_0x3b46ff,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index d196611..a3d7e42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a80=['includes','string','picklist','nameField','toLowerCase','content','type','customField','push','idField','variable','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/helpdesk/tickets/%d','error','outbound','recordingFormat','The\x20User\x20ID\x20is:','destcalleridnum','[OUTBOUND]','user:%s','catch','unmanaged','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','application/json','emit','info','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','Tags','name','Fields','custom_fields','keyBy','value','POST','then','Ticket\x20created!','validateEmail','remoteUri','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!','Enduser\x20created.','toString','base64','[HTTP]','stringify','GET','forEach'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x0a80,0x12e));var _0x00a8=function(_0xa0f288,_0x575e84){_0xa0f288=_0xa0f288-0x0;var _0x3b0d55=_0x0a80[_0xa0f288];return _0x3b0d55;};'use strict';var _=require(_0x00a8('0x0'));var rp=require(_0x00a8('0x1'));var md5=require(_0x00a8('0x2'));var util=require(_0x00a8('0x3'));var Redis=require(_0x00a8('0x4'));var intUtil=require(_0x00a8('0x5'));var config=require(_0x00a8('0x6'));var logger=require(_0x00a8('0x7'))(_0x00a8('0x8'));config[_0x00a8('0x9')]=_[_0x00a8('0xa')](config['redis'],{'host':_0x00a8('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x00a8('0x9')]));var headers={'Content-Type':_0x00a8('0xc'),'Accept':_0x00a8('0xc')};function emit(_0x330c4b,_0x50a438,_0x2cdbe3){io['to'](_0x330c4b)[_0x00a8('0xd')](_0x50a438,_0x2cdbe3);}function getTicket(_0x5e3fb5,_0x52a986,_0x51ebd3,_0xd91f3,_0x5d7e50){logger[_0x00a8('0xe')]('Creating\x20new\x20ticket...');var _0xb3a1fe=_[_0x00a8('0xf')]({'responder_id':_0x52a986['id'],'requester_id':_0x51ebd3['id'],'name':util[_0x00a8('0x10')](_0x00a8('0x11'),_0x5d7e50[_0x00a8('0x12')]),'phone':_0x5d7e50[_0x00a8('0x13')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x00a8('0x14')](_0xd91f3[_0x00a8('0x15')],_0x5d7e50,'\x20'),'description':intUtil['getString'](_0xd91f3[_0x00a8('0x16')],_0x5d7e50,'<br>'),'tags':getTags(_0xd91f3[_0x00a8('0x17')],_0x00a8('0x18'))},getCustomFields(_0xd91f3[_0x00a8('0x19')],_0x5d7e50));_0xb3a1fe[_0x00a8('0x1a')]=_['mapValues'](_[_0x00a8('0x1b')](_0xb3a1fe['custom_fields'],'id'),_0x00a8('0x1c'));return request({'uri':util[_0x00a8('0x10')]('%s/api/v2/tickets',_0x5e3fb5['remoteUri']),'method':_0x00a8('0x1d'),'body':_0xb3a1fe})[_0x00a8('0x1e')](function(_0xad22b4){logger[_0x00a8('0xe')](_0x00a8('0x1f'));return _0xad22b4;});}function getUser(_0x44c444,_0x11166f){if(intUtil[_0x00a8('0x20')](_0x11166f)){return request({'uri':util[_0x00a8('0x10')]('%s/api/v2/agents',_0x44c444[_0x00a8('0x21')]),'qs':{'email':_0x11166f}})[_0x00a8('0x1e')](function(_0x180bf2){if(_0x180bf2[_0x00a8('0x22')]){logger[_0x00a8('0xe')](_0x00a8('0x23'));return _[_0x00a8('0x24')](_0x180bf2,function(_0x2700fe){return _0x2700fe[_0x00a8('0x25')][_0x00a8('0x26')]===_0x11166f;});}else{logger[_0x00a8('0xe')](_0x00a8('0x27'));return request({'uri':util[_0x00a8('0x10')](_0x00a8('0x28'),_0x44c444[_0x00a8('0x21')])})[_0x00a8('0x1e')](function(_0x356311){logger[_0x00a8('0xe')](_0x00a8('0x29'));return _0x356311;});}});}else{logger['info'](_0x00a8('0x2a'));return request({'uri':util[_0x00a8('0x10')](_0x00a8('0x28'),_0x44c444['remoteUri'])})[_0x00a8('0x1e')](function(_0x394203){logger[_0x00a8('0xe')](_0x00a8('0x29'));return _0x394203;});}}function getEndUser(_0x23e2af,_0x42240b,_0x241c0e){logger[_0x00a8('0xe')]('Searching\x20enduser\x20with\x20phone',_0x241c0e);return request({'uri':util['format']('%s/api/v2/contacts',_0x23e2af[_0x00a8('0x21')]),'qs':{'phone':_0x241c0e}})[_0x00a8('0x1e')](function(_0x5b4d27){if(_0x5b4d27[_0x00a8('0x22')]){logger[_0x00a8('0xe')]('Enduser\x20found!');return _['find'](_0x5b4d27,{'phone':_0x241c0e});}else{logger[_0x00a8('0xe')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x00a8('0x10')]('%s/api/v2/contacts',_0x23e2af[_0x00a8('0x21')]),'method':_0x00a8('0x1d'),'body':{'name':_0x42240b,'phone':_0x241c0e}})[_0x00a8('0x1e')](function(_0x4b93aa){logger[_0x00a8('0xe')](_0x00a8('0x2b'));return _0x4b93aa;});}});}function getAuth(_0x42a6a6){return util['format']('Basic\x20%s',new Buffer(_0x42a6a6['apiKey']+':X')[_0x00a8('0x2c')](_0x00a8('0x2d')));}function request(_0x4a2bf5){logger['debug'](_0x00a8('0x2e'),JSON[_0x00a8('0x2f')](_0x4a2bf5));return rp(_[_0x00a8('0xa')](_0x4a2bf5,{'method':_0x00a8('0x30'),'headers':headers,'json':!![]}));}function getTags(_0x32dd0a,_0x5bfb24){var _0x598058=[];if(_0x32dd0a&&_0x32dd0a['length']>0x0){_0x598058=_['map'](_0x32dd0a,_0x5bfb24);}return _0x598058;}function getCustomFields(_0x325042,_0x4844ff){var _0x52cc27=[];var _0x4dc31a={'custom_fields':[]};if(_0x325042['length']>0x0){_[_0x00a8('0x31')](_0x325042,function(_0x223cec){if(_[_0x00a8('0x32')]([_0x00a8('0x33'),_0x00a8('0x34')],_0x223cec['type'])&&_0x223cec['nameField']&&!_0x223cec['customField']){_0x4dc31a[_0x223cec[_0x00a8('0x35')][_0x00a8('0x36')]()]=_0x223cec[_0x00a8('0x37')][_0x00a8('0x2c')]();}else if(_['includes']([_0x00a8('0x33'),'picklist'],_0x223cec[_0x00a8('0x38')])&&_0x223cec['idField']&&_0x223cec[_0x00a8('0x39')]){_0x4dc31a[_0x00a8('0x1a')][_0x00a8('0x3a')]({'id':_0x223cec[_0x00a8('0x3b')],'value':_0x223cec[_0x00a8('0x37')][_0x00a8('0x2c')]()});}else if(_0x223cec[_0x00a8('0x38')]===_0x00a8('0x3c')&&_0x223cec[_0x00a8('0x3d')]&&_0x223cec['idField']&&_0x223cec['customField']){_0x4844ff[_0x223cec[_0x00a8('0x3d')]]&&_0x4dc31a[_0x00a8('0x1a')][_0x00a8('0x3a')]({'id':_0x223cec[_0x00a8('0x3b')],'value':_0x4844ff[_0x223cec[_0x00a8('0x3d')]]['toString']()});}else if(_0x223cec[_0x00a8('0x38')]===_0x00a8('0x3e')&&_0x223cec['Variable']&&_0x223cec[_0x00a8('0x3f')][_0x00a8('0x18')]&&_0x223cec[_0x00a8('0x3b')]&&_0x223cec[_0x00a8('0x39')]){_0x4844ff[_0x223cec[_0x00a8('0x3f')]['name'][_0x00a8('0x36')]()]&&_0x4dc31a[_0x00a8('0x1a')][_0x00a8('0x3a')]({'id':_0x223cec['idField'],'value':_0x4844ff[_0x223cec[_0x00a8('0x3f')][_0x00a8('0x18')]['toLowerCase']()]['toString']()});}});}return _0x4dc31a;}exports[_0x00a8('0x40')]=function(_0x447b08,_0x2ea742,_0x4d9c0a,_0x457239,_0x140743,_0x5131ed){var _0xfc53ef,_0x56be01;_0x5131ed['remoteUri']=intUtil[_0x00a8('0x41')](_0x5131ed['remoteUri']);_0x5131ed[_0x00a8('0x42')]=intUtil[_0x00a8('0x41')](_0x5131ed[_0x00a8('0x42')]);if(_0x140743&&_0x140743[_0x00a8('0x43')]){logger['info'](_0x00a8('0x44'),_0x00a8('0x45'));_0x2ea742[_0x00a8('0x46')]=util[_0x00a8('0x10')](_0x00a8('0x47'),_0x5131ed['serverUrl'],_0x2ea742[_0x00a8('0x48')],md5(_0x2ea742[_0x00a8('0x48')]));}else{_0x2ea742[_0x00a8('0x46')]='';}headers[_0x00a8('0x49')]=getAuth(_0x5131ed);return getUser(_0x5131ed,_0x457239[_0x00a8('0x26')])[_0x00a8('0x1e')](function(_0x325a77){_0xfc53ef=_0x325a77;logger['info']('The\x20User\x20ID\x20is:',_0xfc53ef['id']);return getEndUser(_0x5131ed,_0x2ea742[_0x00a8('0x12')],_0x2ea742[_0x00a8('0x13')]);})[_0x00a8('0x1e')](function(_0x21ef52){_0x56be01=_0x21ef52;logger['info'](_0x00a8('0x4a'),_0x56be01['id']);return getTicket(_0x5131ed,_0xfc53ef,_0x56be01,_0x4d9c0a,_0x2ea742);})['then'](function(_0x15ceb3){if(_0x15ceb3&&_0x15ceb3['id']){logger['info'](_0x00a8('0x1f'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x15ceb3['id']);logger[_0x00a8('0xe')](_0x00a8('0x44'),_0x00a8('0x4b'));emit(util[_0x00a8('0x10')]('user:%s',_0x457239['name']),_0x00a8('0x4c'),{'uri':util[_0x00a8('0x10')](_0x00a8('0x4d'),_0x5131ed[_0x00a8('0x21')],_0x15ceb3['id'])});}})['catch'](function(_0x1e861e){logger[_0x00a8('0x4e')](_0x00a8('0x44'),JSON[_0x00a8('0x2f')](_0x1e861e));});};exports[_0x00a8('0x4f')]=function(_0xf65c55,_0x36243e,_0x448755,_0x53f12b,_0x361780,_0x27a444,_0x580abb){var _0x5f29fc,_0x516a8e;_0x27a444['remoteUri']=intUtil['stripTrailingSlash'](_0x27a444[_0x00a8('0x21')]);_0x27a444[_0x00a8('0x42')]=intUtil[_0x00a8('0x41')](_0x27a444[_0x00a8('0x42')]);if(_0x580abb&&_0x580abb[_0x00a8('0x50')]&&_0x580abb['recordingFormat']!=='none'){logger[_0x00a8('0xe')]('[OUTBOUND]',_0x00a8('0x45'));_0x36243e[_0x00a8('0x46')]=util[_0x00a8('0x10')](_0x00a8('0x47'),_0x27a444[_0x00a8('0x42')],_0x36243e[_0x00a8('0x48')],md5(_0x36243e['uniqueid']));}headers[_0x00a8('0x49')]=getAuth(_0x27a444);return getUser(_0x27a444,_0x53f12b[_0x00a8('0x26')])[_0x00a8('0x1e')](function(_0x2f0f19){_0x5f29fc=_0x2f0f19;logger[_0x00a8('0xe')](_0x00a8('0x51'),_0x5f29fc['id']);return getEndUser(_0x27a444,_0x36243e['destcalleridname'],_0x36243e[_0x00a8('0x52')]);})['then'](function(_0x34af20){_0x516a8e=_0x34af20;logger[_0x00a8('0xe')](_0x00a8('0x4a'),_0x516a8e['id']);return getTicket(_0x27a444,_0x5f29fc,_0x516a8e,_0x448755,_0x36243e);})[_0x00a8('0x1e')](function(_0x29962c){if(_0x29962c&&_0x29962c['id']){logger[_0x00a8('0xe')]('Ticket\x20created!');logger[_0x00a8('0xe')]('The\x20Ticket\x20ID\x20is:',_0x29962c['id']);logger[_0x00a8('0xe')](_0x00a8('0x53'),_0x00a8('0x4b'));emit(util['format'](_0x00a8('0x54'),_0x53f12b['name']),'trigger:browser:url',{'uri':util[_0x00a8('0x10')](_0x00a8('0x4d'),_0x27a444[_0x00a8('0x21')],_0x29962c['id'])});}})[_0x00a8('0x55')](function(_0x229c68){logger[_0x00a8('0x4e')](_0x00a8('0x53'),JSON[_0x00a8('0x2f')](_0x229c68));});};exports[_0x00a8('0x56')]=function(_0x2d9f57,_0x40d4c0,_0x560fd4,_0x34a225,_0x19e764,_0x502ad1){var _0x334723,_0x26f523;_0x502ad1[_0x00a8('0x21')]=intUtil['stripTrailingSlash'](_0x502ad1[_0x00a8('0x21')]);_0x502ad1[_0x00a8('0x42')]=intUtil['stripTrailingSlash'](_0x502ad1['serverUrl']);if(_0x19e764&&_0x19e764['monitor_format']){logger[_0x00a8('0xe')]('['+_0x40d4c0['lastevent']['toUpperCase']()+']',_0x00a8('0x45'));_0x40d4c0[_0x00a8('0x46')]=util[_0x00a8('0x10')](_0x00a8('0x47'),_0x502ad1[_0x00a8('0x42')],_0x40d4c0[_0x00a8('0x48')],md5(_0x40d4c0[_0x00a8('0x48')]));}else{_0x40d4c0[_0x00a8('0x46')]='';}headers[_0x00a8('0x49')]=getAuth(_0x502ad1);return getUser(_0x502ad1,'')['then'](function(_0xba3764){_0x334723=_0xba3764;logger[_0x00a8('0xe')](_0x00a8('0x51'),_0x334723['id']);return getEndUser(_0x502ad1,_0x40d4c0[_0x00a8('0x12')],_0x40d4c0[_0x00a8('0x13')]);})[_0x00a8('0x1e')](function(_0x418e48){_0x26f523=_0x418e48;logger[_0x00a8('0xe')]('The\x20Enduser\x20ID\x20is:',_0x26f523['id']);return getTicket(_0x502ad1,_0x334723,_0x26f523,_0x560fd4,_0x40d4c0);})[_0x00a8('0x1e')](function(_0x1fcf2b){if(_0x1fcf2b){logger[_0x00a8('0xe')](_0x00a8('0x1f'));logger[_0x00a8('0xe')]('The\x20Ticket\x20ID\x20is:',_0x1fcf2b['id']);}})[_0x00a8('0x55')](function(_0x204221){logger[_0x00a8('0x4e')]('['+_0x40d4c0['lastevent'][_0x00a8('0x57')]()+']',JSON[_0x00a8('0x2f')](_0x204221));});};
\ No newline at end of file
+var _0x5775=['Basic\x20%s','base64','[HTTP]','map','forEach','includes','string','picklist','type','content','idField','customField','push','variable','variableName','toString','Variable','toLowerCase','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','Authorization','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','none','[OUTBOUND]','uniqueid','destcalleridname','The\x20Ticket\x20ID\x20is:','stringify','toUpperCase','lastevent','lodash','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','socket.io-emitter','application/json','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','getString','Subjects','Descriptions','<br>','Tags','name','Fields','custom_fields','mapValues','keyBy','remoteUri','POST','then','Ticket\x20created!','%s/api/v2/agents','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!'];(function(_0x3d9b8c,_0x1accd9){var _0x5afdbc=function(_0x4ac82c){while(--_0x4ac82c){_0x3d9b8c['push'](_0x3d9b8c['shift']());}};_0x5afdbc(++_0x1accd9);}(_0x5775,0xdb));var _0x5577=function(_0x28d18d,_0x55896b){_0x28d18d=_0x28d18d-0x0;var _0x470640=_0x5775[_0x28d18d];return _0x470640;};'use strict';var _=require(_0x5577('0x0'));var rp=require('request-promise');var md5=require(_0x5577('0x1'));var util=require(_0x5577('0x2'));var Redis=require(_0x5577('0x3'));var intUtil=require(_0x5577('0x4'));var config=require(_0x5577('0x5'));var logger=require(_0x5577('0x6'))(_0x5577('0x7'));config[_0x5577('0x8')]=_[_0x5577('0x9')](config['redis'],{'host':_0x5577('0xa'),'port':0x18eb});var io=require(_0x5577('0xb'))(new Redis(config[_0x5577('0x8')]));var headers={'Content-Type':_0x5577('0xc'),'Accept':_0x5577('0xc')};function emit(_0x221e9f,_0x1bc3c1,_0x360bbb){io['to'](_0x221e9f)['emit'](_0x1bc3c1,_0x360bbb);}function getTicket(_0x34ed93,_0x5655e1,_0x4ca098,_0x52864d,_0x118d09){logger[_0x5577('0xd')](_0x5577('0xe'));var _0x3b494b=_[_0x5577('0xf')]({'responder_id':_0x5655e1['id'],'requester_id':_0x4ca098['id'],'name':util[_0x5577('0x10')](_0x5577('0x11'),_0x118d09[_0x5577('0x12')]),'phone':_0x118d09['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x5577('0x13')](_0x52864d[_0x5577('0x14')],_0x118d09,'\x20'),'description':intUtil[_0x5577('0x13')](_0x52864d[_0x5577('0x15')],_0x118d09,_0x5577('0x16')),'tags':getTags(_0x52864d[_0x5577('0x17')],_0x5577('0x18'))},getCustomFields(_0x52864d[_0x5577('0x19')],_0x118d09));_0x3b494b[_0x5577('0x1a')]=_[_0x5577('0x1b')](_[_0x5577('0x1c')](_0x3b494b[_0x5577('0x1a')],'id'),'value');return request({'uri':util[_0x5577('0x10')]('%s/api/v2/tickets',_0x34ed93[_0x5577('0x1d')]),'method':_0x5577('0x1e'),'body':_0x3b494b})[_0x5577('0x1f')](function(_0x4b8b48){logger[_0x5577('0xd')](_0x5577('0x20'));return _0x4b8b48;});}function getUser(_0x552d4f,_0x5b47dc){if(intUtil['validateEmail'](_0x5b47dc)){return request({'uri':util['format'](_0x5577('0x21'),_0x552d4f[_0x5577('0x1d')]),'qs':{'email':_0x5b47dc}})[_0x5577('0x1f')](function(_0x26fd71){if(_0x26fd71[_0x5577('0x22')]){logger['info'](_0x5577('0x23'));return _[_0x5577('0x24')](_0x26fd71,function(_0x2126d0){return _0x2126d0[_0x5577('0x25')][_0x5577('0x26')]===_0x5b47dc;});}else{logger[_0x5577('0xd')](_0x5577('0x27'));return request({'uri':util[_0x5577('0x10')]('%s/api/v2/agents/me',_0x552d4f[_0x5577('0x1d')])})[_0x5577('0x1f')](function(_0x297575){logger[_0x5577('0xd')]('Admin\x20account\x20selected.');return _0x297575;});}});}else{logger['info']('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x5577('0x10')](_0x5577('0x28'),_0x552d4f[_0x5577('0x1d')])})[_0x5577('0x1f')](function(_0x228b4a){logger[_0x5577('0xd')]('Admin\x20account\x20selected.');return _0x228b4a;});}}function getEndUser(_0x5cc936,_0x2c88cf,_0x5e6b54){logger[_0x5577('0xd')](_0x5577('0x29'),_0x5e6b54);return request({'uri':util[_0x5577('0x10')](_0x5577('0x2a'),_0x5cc936[_0x5577('0x1d')]),'qs':{'phone':_0x5e6b54}})[_0x5577('0x1f')](function(_0x5ea6c9){if(_0x5ea6c9[_0x5577('0x22')]){logger[_0x5577('0xd')](_0x5577('0x2b'));return _[_0x5577('0x24')](_0x5ea6c9,{'phone':_0x5e6b54});}else{logger['info'](_0x5577('0x2c'));return request({'uri':util['format'](_0x5577('0x2a'),_0x5cc936['remoteUri']),'method':_0x5577('0x1e'),'body':{'name':_0x2c88cf,'phone':_0x5e6b54}})[_0x5577('0x1f')](function(_0x2a0129){logger[_0x5577('0xd')]('Enduser\x20created.');return _0x2a0129;});}});}function getAuth(_0x5684f2){return util[_0x5577('0x10')](_0x5577('0x2d'),new Buffer(_0x5684f2['apiKey']+':X')['toString'](_0x5577('0x2e')));}function request(_0x1aa0f2){logger['debug'](_0x5577('0x2f'),JSON['stringify'](_0x1aa0f2));return rp(_[_0x5577('0x9')](_0x1aa0f2,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x343daf,_0x36d0ca){var _0x1d917c=[];if(_0x343daf&&_0x343daf[_0x5577('0x22')]>0x0){_0x1d917c=_[_0x5577('0x30')](_0x343daf,_0x36d0ca);}return _0x1d917c;}function getCustomFields(_0xbf501c,_0x4be517){var _0x499343=[];var _0x4a49f8={'custom_fields':[]};if(_0xbf501c[_0x5577('0x22')]>0x0){_[_0x5577('0x31')](_0xbf501c,function(_0x3115d8){if(_[_0x5577('0x32')]([_0x5577('0x33'),_0x5577('0x34')],_0x3115d8[_0x5577('0x35')])&&_0x3115d8['nameField']&&!_0x3115d8['customField']){_0x4a49f8[_0x3115d8['nameField']['toLowerCase']()]=_0x3115d8[_0x5577('0x36')]['toString']();}else if(_[_0x5577('0x32')](['string',_0x5577('0x34')],_0x3115d8[_0x5577('0x35')])&&_0x3115d8[_0x5577('0x37')]&&_0x3115d8[_0x5577('0x38')]){_0x4a49f8[_0x5577('0x1a')][_0x5577('0x39')]({'id':_0x3115d8[_0x5577('0x37')],'value':_0x3115d8[_0x5577('0x36')]['toString']()});}else if(_0x3115d8[_0x5577('0x35')]===_0x5577('0x3a')&&_0x3115d8[_0x5577('0x3b')]&&_0x3115d8[_0x5577('0x37')]&&_0x3115d8['customField']){_0x4be517[_0x3115d8[_0x5577('0x3b')]]&&_0x4a49f8[_0x5577('0x1a')][_0x5577('0x39')]({'id':_0x3115d8[_0x5577('0x37')],'value':_0x4be517[_0x3115d8[_0x5577('0x3b')]][_0x5577('0x3c')]()});}else if(_0x3115d8[_0x5577('0x35')]==='customVariable'&&_0x3115d8['Variable']&&_0x3115d8[_0x5577('0x3d')]['name']&&_0x3115d8[_0x5577('0x37')]&&_0x3115d8[_0x5577('0x38')]){_0x4be517[_0x3115d8[_0x5577('0x3d')]['name'][_0x5577('0x3e')]()]&&_0x4a49f8['custom_fields'][_0x5577('0x39')]({'id':_0x3115d8[_0x5577('0x37')],'value':_0x4be517[_0x3115d8[_0x5577('0x3d')][_0x5577('0x18')]['toLowerCase']()]['toString']()});}});}return _0x4a49f8;}exports[_0x5577('0x3f')]=function(_0x7d80fd,_0x2c34d4,_0x20ce6a,_0x2b9196,_0x2f6267,_0x585a2c){var _0x36200a,_0x6bf957;_0x585a2c[_0x5577('0x1d')]=intUtil[_0x5577('0x40')](_0x585a2c[_0x5577('0x1d')]);_0x585a2c['serverUrl']=intUtil[_0x5577('0x40')](_0x585a2c[_0x5577('0x41')]);if(_0x2f6267&&_0x2f6267[_0x5577('0x42')]){logger['info'](_0x5577('0x43'),_0x5577('0x44'));_0x2c34d4[_0x5577('0x45')]=util[_0x5577('0x10')](_0x5577('0x46'),_0x585a2c[_0x5577('0x41')],_0x2c34d4['uniqueid'],md5(_0x2c34d4['uniqueid']));}else{_0x2c34d4['recordingURL']='';}headers[_0x5577('0x47')]=getAuth(_0x585a2c);return getUser(_0x585a2c,_0x2b9196[_0x5577('0x26')])[_0x5577('0x1f')](function(_0x2600e2){_0x36200a=_0x2600e2;logger[_0x5577('0xd')](_0x5577('0x48'),_0x36200a['id']);return getEndUser(_0x585a2c,_0x2c34d4[_0x5577('0x12')],_0x2c34d4[_0x5577('0x49')]);})['then'](function(_0x621349){_0x6bf957=_0x621349;logger[_0x5577('0xd')](_0x5577('0x4a'),_0x6bf957['id']);return getTicket(_0x585a2c,_0x36200a,_0x6bf957,_0x20ce6a,_0x2c34d4);})[_0x5577('0x1f')](function(_0x58ae7b){if(_0x58ae7b&&_0x58ae7b['id']){logger['info'](_0x5577('0x20'));logger[_0x5577('0xd')]('The\x20Ticket\x20ID\x20is:',_0x58ae7b['id']);logger[_0x5577('0xd')](_0x5577('0x43'),_0x5577('0x4b'));emit(util[_0x5577('0x10')]('user:%s',_0x2b9196[_0x5577('0x18')]),_0x5577('0x4c'),{'uri':util[_0x5577('0x10')](_0x5577('0x4d'),_0x585a2c[_0x5577('0x1d')],_0x58ae7b['id'])});}})[_0x5577('0x4e')](function(_0x25761f){logger[_0x5577('0x4f')](_0x5577('0x43'),JSON['stringify'](_0x25761f));});};exports['outbound']=function(_0x184c58,_0x202352,_0x24d204,_0xf97339,_0x4ae8a3,_0x5036c2,_0x20d772){var _0x523d32,_0x5b676d;_0x5036c2[_0x5577('0x1d')]=intUtil['stripTrailingSlash'](_0x5036c2[_0x5577('0x1d')]);_0x5036c2['serverUrl']=intUtil[_0x5577('0x40')](_0x5036c2[_0x5577('0x41')]);if(_0x20d772&&_0x20d772['recordingFormat']&&_0x20d772['recordingFormat']!==_0x5577('0x50')){logger[_0x5577('0xd')](_0x5577('0x51'),_0x5577('0x44'));_0x202352[_0x5577('0x45')]=util['format'](_0x5577('0x46'),_0x5036c2[_0x5577('0x41')],_0x202352[_0x5577('0x52')],md5(_0x202352['uniqueid']));}headers[_0x5577('0x47')]=getAuth(_0x5036c2);return getUser(_0x5036c2,_0xf97339['email'])[_0x5577('0x1f')](function(_0x5ab6fc){_0x523d32=_0x5ab6fc;logger[_0x5577('0xd')]('The\x20User\x20ID\x20is:',_0x523d32['id']);return getEndUser(_0x5036c2,_0x202352[_0x5577('0x53')],_0x202352['destcalleridnum']);})[_0x5577('0x1f')](function(_0x1f0795){_0x5b676d=_0x1f0795;logger['info'](_0x5577('0x4a'),_0x5b676d['id']);return getTicket(_0x5036c2,_0x523d32,_0x5b676d,_0x24d204,_0x202352);})[_0x5577('0x1f')](function(_0x474c58){if(_0x474c58&&_0x474c58['id']){logger[_0x5577('0xd')]('Ticket\x20created!');logger[_0x5577('0xd')](_0x5577('0x54'),_0x474c58['id']);logger['info']('[OUTBOUND]',_0x5577('0x4b'));emit(util['format']('user:%s',_0xf97339[_0x5577('0x18')]),'trigger:browser:url',{'uri':util[_0x5577('0x10')](_0x5577('0x4d'),_0x5036c2[_0x5577('0x1d')],_0x474c58['id'])});}})[_0x5577('0x4e')](function(_0x1328ba){logger[_0x5577('0x4f')](_0x5577('0x51'),JSON[_0x5577('0x55')](_0x1328ba));});};exports['unmanaged']=function(_0x8199c,_0x5e50e9,_0x4f613f,_0x440f75,_0x5c3cc7,_0x462ed4){var _0x43e027,_0x3cb611;_0x462ed4[_0x5577('0x1d')]=intUtil[_0x5577('0x40')](_0x462ed4[_0x5577('0x1d')]);_0x462ed4[_0x5577('0x41')]=intUtil[_0x5577('0x40')](_0x462ed4[_0x5577('0x41')]);if(_0x5c3cc7&&_0x5c3cc7['monitor_format']){logger[_0x5577('0xd')]('['+_0x5e50e9['lastevent'][_0x5577('0x56')]()+']',_0x5577('0x44'));_0x5e50e9[_0x5577('0x45')]=util[_0x5577('0x10')](_0x5577('0x46'),_0x462ed4[_0x5577('0x41')],_0x5e50e9[_0x5577('0x52')],md5(_0x5e50e9[_0x5577('0x52')]));}else{_0x5e50e9[_0x5577('0x45')]='';}headers['Authorization']=getAuth(_0x462ed4);return getUser(_0x462ed4,'')[_0x5577('0x1f')](function(_0xe5f75c){_0x43e027=_0xe5f75c;logger['info'](_0x5577('0x48'),_0x43e027['id']);return getEndUser(_0x462ed4,_0x5e50e9['calleridname'],_0x5e50e9[_0x5577('0x49')]);})[_0x5577('0x1f')](function(_0x566f5a){_0x3cb611=_0x566f5a;logger[_0x5577('0xd')]('The\x20Enduser\x20ID\x20is:',_0x3cb611['id']);return getTicket(_0x462ed4,_0x43e027,_0x3cb611,_0x4f613f,_0x5e50e9);})['then'](function(_0x49183d){if(_0x49183d){logger[_0x5577('0xd')]('Ticket\x20created!');logger[_0x5577('0xd')](_0x5577('0x54'),_0x49183d['id']);}})[_0x5577('0x4e')](function(_0x3f3599){logger['error']('['+_0x5e50e9[_0x5577('0x57')]['toUpperCase']()+']',JSON['stringify'](_0x3f3599));});};
\ No newline at end of file
index 3ea4a44..0dd16ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x623e=['Token\x20token=','stripTrailingSlash','remoteUri','serverUrl','username','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','[OUTBOUND]','Recording\x20is\x20enabled!','The\x20ticket\x20ID\x20is:\x20%s','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','md5','util','moment','bluebird','ioredis','./util','../../../../config/environment','freshsales','redis','defaults','localhost','GET','headers','info','Getting\x20admin\x20information','then','users','adminEmail','adminId','Requested\x20Resource\x20not\x20Found','catch','error','message','/api/selector/owners','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userEmail','length','User\x20found:','userId','Admin\x20selected','toUpperCase','/api/lookup?q=','&f=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','Contact\x20found\x20mobile_number:','endUserId','work_number','Contact\x20found\x20work_number:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','contact','/api/tasks','getString','Subjects','add','Task\x20created:','ticketId','/contacts/','user:%s','emit'];(function(_0xe8adcc,_0x35c677){var _0xe147da=function(_0x2a3e7d){while(--_0x2a3e7d){_0xe8adcc['push'](_0xe8adcc['shift']());}};_0xe147da(++_0x35c677);}(_0x623e,0xbf));var _0xe623=function(_0x58881b,_0x1cfd33){_0x58881b=_0x58881b-0x0;var _0x36dd36=_0x623e[_0x58881b];return _0x36dd36;};'use strict';var _=require(_0xe623('0x0'));var rp=require(_0xe623('0x1'));var md5=require(_0xe623('0x2'));var util=require(_0xe623('0x3'));var moment=require(_0xe623('0x4'));var Promise=require(_0xe623('0x5'));var Redis=require(_0xe623('0x6'));var intUtil=require(_0xe623('0x7'));var config=require(_0xe623('0x8'));var logger=require('../../../../config/logger')(_0xe623('0x9'));config[_0xe623('0xa')]=_[_0xe623('0xb')](config['redis'],{'host':_0xe623('0xc'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xe623('0xa')]));function getAdminId(_0x39e6bf,_0x488e98,_0xc3697,_0x11242c){return new Promise(function(_0x4650c9,_0x5b84a4){var _0x204d31=![];var _0x38c214={'method':_0xe623('0xd'),'uri':_0x11242c+'/api/selector/owners','json':!![]};_0x38c214[_0xe623('0xe')]=_0xc3697;logger[_0xe623('0xf')](_0xe623('0x10'));return rp(_0x38c214)[_0xe623('0x11')](function(_0x27af92){if(_0x27af92){var _0x3478c2=_0x27af92[_0xe623('0x12')];var _0x33cff2=null;for(_0x33cff2=0x0;_0x33cff2<_0x3478c2['length'];_0x33cff2++){if(_0x3478c2[_0x33cff2]['email']===_0x39e6bf[_0xe623('0x13')]){_0x39e6bf['adminId']=_0x3478c2[_0x33cff2]['id'];_0x204d31=!![];}}if(_0x204d31){logger['info']('Admin\x20found:',_0x39e6bf[_0xe623('0x14')]);_0x4650c9(_0x39e6bf);}else{_0x5b84a4({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x5b84a4({'statusCode':0x194,'message':_0xe623('0x15')});}})[_0xe623('0x16')](function(_0x5e77fd){logger[_0xe623('0x17')]('['+[_0x488e98['toUpperCase']()]+']',_0x5e77fd[_0xe623('0x18')]);_0x5b84a4(_0x5e77fd);});});}function getUser(_0x519b0c,_0x13f144,_0xba23f5){return function(_0x6509d0){return new Promise(function(_0x39c8e2,_0x1dede4){var _0x422363={'method':'GET','uri':_0xba23f5+_0xe623('0x19'),'json':!![]};_0x422363[_0xe623('0xe')]=_0x13f144;logger[_0xe623('0xf')](_0xe623('0x1a'));return rp(_0x422363)[_0xe623('0x11')](function(_0x97ec6e){if(_0x97ec6e){var _0x4a949b=_0x97ec6e['users'];var _0x87bcd4=![];var _0x3c1e7e=null;if(_0x6509d0[_0xe623('0x1b')]!==null){logger[_0xe623('0xf')](_0xe623('0x1c'),_0x6509d0[_0xe623('0x1b')]);_0x6509d0[_0xe623('0x1d')]=_0x6509d0[_0xe623('0x1b')];for(_0x3c1e7e=0x0;_0x3c1e7e<_0x4a949b[_0xe623('0x1e')];_0x3c1e7e++){if(_0x4a949b[_0x3c1e7e]['email']===_0x6509d0[_0xe623('0x1b')]){_0x87bcd4=!![];_0x6509d0['userId']=_0x4a949b[_0x3c1e7e]['id'];logger[_0xe623('0xf')](_0xe623('0x1f'),_0x6509d0[_0xe623('0x20')]);}}}if(!_0x87bcd4){logger[_0xe623('0xf')](_0xe623('0x21'));_0x6509d0['userEmail']=_0x6509d0[_0xe623('0x13')];_0x6509d0['userId']=_0x6509d0[_0xe623('0x14')];_0x87bcd4=!![];}if(_0x87bcd4){_0x39c8e2(_0x6509d0);}else{_0x1dede4({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x1dede4({'statusCode':0x194,'message':_0xe623('0x15')});}})[_0xe623('0x16')](function(_0x1a5344){logger[_0xe623('0x17')]('['+[_0x519b0c[_0xe623('0x22')]()]+']',_0x1a5344[_0xe623('0x18')]);_0x1dede4(_0x1a5344);});});};}function searchContact(_0x5c37eb,_0x206f35,_0x24c67e,_0xc75203){return new Promise(function(_0x4743f2,_0x487679){var _0x205c51={'method':_0xe623('0xd'),'headers':_0x206f35,'uri':_0x5c37eb+_0xe623('0x23')+_0xc75203+_0xe623('0x24')+_0x24c67e+_0xe623('0x25'),'json':!![]};rp(_0x205c51)['then'](function(_0x43e9ea){var _0x19dcad=_[_0xe623('0x26')](_0x43e9ea[_0xe623('0x27')]['contacts'],[_0x24c67e,_0xc75203]);_0x4743f2(_0x19dcad);})[_0xe623('0x16')](function(_0x51d464){_0x487679(_0x51d464);});});}function getEndUser(_0x145dfd,_0x51781c,_0x51a48c){return function(_0x17e8e9){return new Promise(function(_0x4da281,_0x521b32){logger[_0xe623('0xf')](util[_0xe623('0x28')](_0xe623('0x29'),_0x17e8e9[_0xe623('0x2a')]));searchContact(_0x51a48c,_0x51781c,_0xe623('0x2b'),_0x17e8e9[_0xe623('0x2a')])[_0xe623('0x11')](function(_0x48936b){if(_0x48936b){_0x17e8e9['endUserId']=_0x48936b['id'];logger[_0xe623('0xf')](_0xe623('0x2c'),_0x17e8e9[_0xe623('0x2d')]);return _0x4da281(_0x17e8e9);}searchContact(_0x51a48c,_0x51781c,_0xe623('0x2e'),_0x17e8e9[_0xe623('0x2a')])[_0xe623('0x11')](function(_0x39cfee){if(_0x39cfee){_0x17e8e9[_0xe623('0x2d')]=_0x39cfee['id'];logger[_0xe623('0xf')](_0xe623('0x2f'),_0x17e8e9[_0xe623('0x2d')]);return _0x4da281(_0x17e8e9);}createEndUser(_0x17e8e9,_0x145dfd,_0x51781c,_0x51a48c)[_0xe623('0x11')](function(_0x28021c){logger[_0xe623('0xf')]('Contact\x20created:',_0x28021c[_0xe623('0x2d')]);return _0x4da281(_0x28021c);});});})[_0xe623('0x16')](function(_0x1cee32){_0x521b32(_0x1cee32);});});};}function createEndUser(_0x1ed4b5,_0x51a0b4,_0x578d0e,_0x6b2fd7){return new Promise(function(_0x473439,_0x1f9e33){var _0xbbd3fd=moment();var _0x2c68ee={'method':_0xe623('0x30'),'uri':_0x6b2fd7+_0xe623('0x31'),'body':{'contact':{'last_name':_0x1ed4b5['contactNumber'],'work_number':_0x1ed4b5[_0xe623('0x2a')],'mobile_number':_0x1ed4b5[_0xe623('0x2a')],'owner_id':_0x1ed4b5[_0xe623('0x20')],'created_at':_0xbbd3fd[_0xe623('0x28')](_0xe623('0x32'))}},'json':!![]};_0x2c68ee[_0xe623('0xe')]=_0x578d0e;logger['info']('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x2c68ee)[_0xe623('0x11')](function(_0x5b1f5f){_0x1ed4b5[_0xe623('0x2d')]=_0x5b1f5f[_0xe623('0x33')]['id'];_0x473439(_0x1ed4b5);})[_0xe623('0x16')](function(_0x2fa0c0){logger[_0xe623('0x17')]('['+[_0x51a0b4[_0xe623('0x22')]()]+']',_0x2fa0c0[_0xe623('0x18')]);_0x1f9e33(_0x2fa0c0[_0xe623('0x18')]);});});}function getTicket(_0x2e8576,_0x109e0e,_0x46dac7,_0x3ad406,_0xa1e4a5){return function(_0x1b24a5){logger[_0xe623('0xf')]('Creating\x20new\x20task');return new Promise(function(_0x71df7c,_0x34810e){var _0x2e2dc6=moment();var _0x10ca58={'method':_0xe623('0x30'),'uri':_0x46dac7+_0xe623('0x34'),'body':{'title':intUtil[_0xe623('0x35')](_0x3ad406[_0xe623('0x36')],_0xa1e4a5,'\x20'),'description':intUtil['getString'](_0x3ad406['Descriptions'],_0xa1e4a5,'\x0a'),'owner_id':_0x1b24a5[_0xe623('0x20')],'creater_id':_0x1b24a5[_0xe623('0x14')],'targetable_id':_0x1b24a5['endUserId'],'targetable_type':'Contact','created_at':_0x2e2dc6[_0xe623('0x28')](_0xe623('0x32')),'due_date':_0x2e2dc6[_0xe623('0x37')](0x1e,'m')[_0xe623('0x28')](_0xe623('0x32'))},'json':!![]};_0x10ca58[_0xe623('0xe')]=_0x109e0e;return rp(_0x10ca58)[_0xe623('0x11')](function(_0x476589){_0x1b24a5['ticketId']=_0x476589['task']['id'];logger[_0xe623('0xf')](_0xe623('0x38'),_0x1b24a5[_0xe623('0x39')]);_0x71df7c(_0x1b24a5);})['catch'](function(_0x49a442){logger[_0xe623('0x17')]('['+[_0x2e8576[_0xe623('0x22')]()]+']',_0x49a442[_0xe623('0x18')]);_0x34810e(_0x49a442[_0xe623('0x18')]);});});};}function emit(_0x4024ad,_0x440227,_0x403e60){var _0x549328={'uri':_0x4024ad+_0xe623('0x3a')+_0x403e60};io['to'](util[_0xe623('0x28')](_0xe623('0x3b'),_0x440227))[_0xe623('0x3c')]('trigger:browser:url',_0x549328);}exports['cs']=function(_0x13c3a0,_0x29d179,_0x360eb3,_0x45d082,_0x12ffa1,_0x3c63b2,_0x49ce11,_0x44b216){var _0x4341c7={};var _0x4ae8c7={'Authorization':_0xe623('0x3d')+_0x3c63b2['apiKey']};_0x3c63b2['remoteUri']=intUtil[_0xe623('0x3e')](_0x3c63b2[_0xe623('0x3f')]);_0x3c63b2[_0xe623('0x40')]=intUtil['stripTrailingSlash'](_0x3c63b2['serverUrl']);var _0x342ee4=_0x3c63b2[_0xe623('0x3f')];_0x4341c7[_0xe623('0x13')]=_0x3c63b2[_0xe623('0x41')];_0x4341c7[_0xe623('0x2a')]=_0x44b216[_0xe623('0x42')]()===_0xe623('0x43')?_0x29d179[_0xe623('0x44')]:_0x29d179[_0xe623('0x45')];_0x4341c7[_0xe623('0x46')]=_0x44b216==='queue'||_0x44b216===_0xe623('0x47')?'queue':_0xe623('0x43');if(_0x45d082){_0x4341c7[_0xe623('0x1b')]=_0x45d082['email'];}var _0x58d99f=util['format'](_0xe623('0x48'),_0x3c63b2[_0xe623('0x40')],_0x29d179[_0xe623('0x49')],md5(_0x29d179[_0xe623('0x49')]));if(_0x12ffa1&&_0x12ffa1[_0xe623('0x4a')]){logger[_0xe623('0xf')](_0xe623('0x4b'),'Recording\x20is\x20enabled!');_0x29d179[_0xe623('0x4c')]=_0x58d99f;}else if(_0x49ce11&&_0x49ce11[_0xe623('0x4d')]&&_0x49ce11['recordingFormat']!=='none'){logger['info'](_0xe623('0x4e'),_0xe623('0x4f'));_0x29d179[_0xe623('0x4c')]=_0x58d99f;}else{_0x29d179[_0xe623('0x4c')]='';}return getAdminId(_0x4341c7,_0x44b216,_0x4ae8c7,_0x342ee4)[_0xe623('0x11')](getUser(_0x44b216,_0x4ae8c7,_0x342ee4))['then'](getEndUser(_0x44b216,_0x4ae8c7,_0x342ee4))[_0xe623('0x11')](getTicket(_0x44b216,_0x4ae8c7,_0x342ee4,_0x360eb3,_0x29d179))[_0xe623('0x11')](function(_0x55898c){logger[_0xe623('0xf')](util[_0xe623('0x28')](_0xe623('0x50'),_0x55898c[_0xe623('0x39')]));if(_0x44b216!==_0xe623('0x47')){logger[_0xe623('0xf')]('['+[_0x44b216[_0xe623('0x22')]()]+']','Displaying\x20task\x20in\x20a\x20new\x20tab...');emit(_0x342ee4,_0x45d082[_0xe623('0x51')],_0x55898c['endUserId']);}})[_0xe623('0x16')](function(_0x4be16b){logger[_0xe623('0x17')]('['+[_0x44b216[_0xe623('0x22')]()]+_0xe623('0x52'),util[_0xe623('0x53')](_0x4be16b,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x8228=['Recording\x20is\x20enabled!','recordingURL','none','[OUTBOUND]','Displaying\x20task\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','md5','util','bluebird','ioredis','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','Getting\x20user\x20list','Getting\x20user\x20with\x20email','agentEmail','userEmail','userId','User\x20found:','Admin\x20selected','/api/lookup?q=','&entities=contact','find','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20created:','POST','format','YYYY-MM-DDTHH:mm:ss','contact','/api/tasks','getString','Subjects','Descriptions','ticketId','task','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','serverUrl','stripTrailingSlash','username','toLowerCase','outbound','destcalleridnum','callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format'];(function(_0x478455,_0xfab4ff){var _0x5062dd=function(_0x5d4aca){while(--_0x5d4aca){_0x478455['push'](_0x478455['shift']());}};_0x5062dd(++_0xfab4ff);}(_0x8228,0x1ed));var _0x8822=function(_0x140f9c,_0x3b7b87){_0x140f9c=_0x140f9c-0x0;var _0x1ccb77=_0x8228[_0x140f9c];return _0x1ccb77;};'use strict';var _=require(_0x8822('0x0'));var rp=require('request-promise');var md5=require(_0x8822('0x1'));var util=require(_0x8822('0x2'));var moment=require('moment');var Promise=require(_0x8822('0x3'));var Redis=require(_0x8822('0x4'));var intUtil=require('./util');var config=require(_0x8822('0x5'));var logger=require(_0x8822('0x6'))('freshsales');config[_0x8822('0x7')]=_[_0x8822('0x8')](config[_0x8822('0x7')],{'host':_0x8822('0x9'),'port':0x18eb});var io=require(_0x8822('0xa'))(new Redis(config[_0x8822('0x7')]));function getAdminId(_0x3eb33a,_0x134a7f,_0x24e9b2,_0x5e3da2){return new Promise(function(_0x30d5d0,_0x11b449){var _0x140a6f=![];var _0xb3a7fe={'method':_0x8822('0xb'),'uri':_0x5e3da2+_0x8822('0xc'),'json':!![]};_0xb3a7fe[_0x8822('0xd')]=_0x24e9b2;logger[_0x8822('0xe')](_0x8822('0xf'));return rp(_0xb3a7fe)[_0x8822('0x10')](function(_0x5ee0a2){if(_0x5ee0a2){var _0x1badc7=_0x5ee0a2[_0x8822('0x11')];var _0x3890e2=null;for(_0x3890e2=0x0;_0x3890e2<_0x1badc7[_0x8822('0x12')];_0x3890e2++){if(_0x1badc7[_0x3890e2][_0x8822('0x13')]===_0x3eb33a[_0x8822('0x14')]){_0x3eb33a[_0x8822('0x15')]=_0x1badc7[_0x3890e2]['id'];_0x140a6f=!![];}}if(_0x140a6f){logger[_0x8822('0xe')](_0x8822('0x16'),_0x3eb33a[_0x8822('0x15')]);_0x30d5d0(_0x3eb33a);}else{_0x11b449({'statusCode':0x194,'message':_0x8822('0x17')});}}else{_0x11b449({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0x8822('0x18')](function(_0x34b417){logger[_0x8822('0x19')]('['+[_0x134a7f[_0x8822('0x1a')]()]+']',_0x34b417[_0x8822('0x1b')]);_0x11b449(_0x34b417);});});}function getUser(_0x154a88,_0x48e9b8,_0x2fb820){return function(_0x2d2a4c){return new Promise(function(_0x5c193f,_0x55c92d){var _0x26de9c={'method':_0x8822('0xb'),'uri':_0x2fb820+'/api/selector/owners','json':!![]};_0x26de9c[_0x8822('0xd')]=_0x48e9b8;logger[_0x8822('0xe')](_0x8822('0x1c'));return rp(_0x26de9c)[_0x8822('0x10')](function(_0x32a034){if(_0x32a034){var _0xc63112=_0x32a034[_0x8822('0x11')];var _0x11de1d=![];var _0x333fe9=null;if(_0x2d2a4c['agentEmail']!==null){logger[_0x8822('0xe')](_0x8822('0x1d'),_0x2d2a4c[_0x8822('0x1e')]);_0x2d2a4c[_0x8822('0x1f')]=_0x2d2a4c[_0x8822('0x1e')];for(_0x333fe9=0x0;_0x333fe9<_0xc63112[_0x8822('0x12')];_0x333fe9++){if(_0xc63112[_0x333fe9][_0x8822('0x13')]===_0x2d2a4c[_0x8822('0x1e')]){_0x11de1d=!![];_0x2d2a4c[_0x8822('0x20')]=_0xc63112[_0x333fe9]['id'];logger['info'](_0x8822('0x21'),_0x2d2a4c[_0x8822('0x20')]);}}}if(!_0x11de1d){logger[_0x8822('0xe')](_0x8822('0x22'));_0x2d2a4c[_0x8822('0x1f')]=_0x2d2a4c[_0x8822('0x14')];_0x2d2a4c[_0x8822('0x20')]=_0x2d2a4c['adminId'];_0x11de1d=!![];}if(_0x11de1d){_0x5c193f(_0x2d2a4c);}else{_0x55c92d({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x55c92d({'statusCode':0x194,'message':_0x8822('0x17')});}})[_0x8822('0x18')](function(_0x5f0943){logger[_0x8822('0x19')]('['+[_0x154a88[_0x8822('0x1a')]()]+']',_0x5f0943[_0x8822('0x1b')]);_0x55c92d(_0x5f0943);});});};}function searchContact(_0x517e33,_0x2b9029,_0x24cb93,_0x7b1b18){return new Promise(function(_0x3ffbd7,_0x3d1d04){var _0x21c10a={'method':_0x8822('0xb'),'headers':_0x2b9029,'uri':_0x517e33+_0x8822('0x23')+_0x7b1b18+'&f='+_0x24cb93+_0x8822('0x24'),'json':!![]};rp(_0x21c10a)[_0x8822('0x10')](function(_0x5d9dbb){var _0x40f1de=_[_0x8822('0x25')](_0x5d9dbb['contacts']['contacts'],[_0x24cb93,_0x7b1b18]);_0x3ffbd7(_0x40f1de);})[_0x8822('0x18')](function(_0x1ff224){_0x3d1d04(_0x1ff224);});});}function getEndUser(_0x31eb0d,_0x5b8f35,_0x383d1d){return function(_0x1b77fe){return new Promise(function(_0x56b742,_0x3e713c){logger['info'](util['format'](_0x8822('0x26'),_0x1b77fe[_0x8822('0x27')]));searchContact(_0x383d1d,_0x5b8f35,_0x8822('0x28'),_0x1b77fe[_0x8822('0x27')])[_0x8822('0x10')](function(_0x34c41a){if(_0x34c41a){_0x1b77fe[_0x8822('0x29')]=_0x34c41a['id'];logger[_0x8822('0xe')](_0x8822('0x2a'),_0x1b77fe[_0x8822('0x29')]);return _0x56b742(_0x1b77fe);}searchContact(_0x383d1d,_0x5b8f35,_0x8822('0x2b'),_0x1b77fe[_0x8822('0x27')])[_0x8822('0x10')](function(_0x1e4750){if(_0x1e4750){_0x1b77fe['endUserId']=_0x1e4750['id'];logger[_0x8822('0xe')]('Contact\x20found\x20work_number:',_0x1b77fe[_0x8822('0x29')]);return _0x56b742(_0x1b77fe);}createEndUser(_0x1b77fe,_0x31eb0d,_0x5b8f35,_0x383d1d)[_0x8822('0x10')](function(_0x3c3934){logger['info'](_0x8822('0x2c'),_0x3c3934[_0x8822('0x29')]);return _0x56b742(_0x3c3934);});});})[_0x8822('0x18')](function(_0x519cb6){_0x3e713c(_0x519cb6);});});};}function createEndUser(_0x1cfaf4,_0x5b019d,_0x43319a,_0x430673){return new Promise(function(_0x31cecf,_0x318c72){var _0x331b41=moment();var _0x518a57={'method':_0x8822('0x2d'),'uri':_0x430673+'/api/contacts','body':{'contact':{'last_name':_0x1cfaf4[_0x8822('0x27')],'work_number':_0x1cfaf4[_0x8822('0x27')],'mobile_number':_0x1cfaf4[_0x8822('0x27')],'owner_id':_0x1cfaf4[_0x8822('0x20')],'created_at':_0x331b41[_0x8822('0x2e')](_0x8822('0x2f'))}},'json':!![]};_0x518a57[_0x8822('0xd')]=_0x43319a;logger[_0x8822('0xe')]('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x518a57)[_0x8822('0x10')](function(_0x3283fa){_0x1cfaf4[_0x8822('0x29')]=_0x3283fa[_0x8822('0x30')]['id'];_0x31cecf(_0x1cfaf4);})[_0x8822('0x18')](function(_0x558f47){logger['error']('['+[_0x5b019d[_0x8822('0x1a')]()]+']',_0x558f47['message']);_0x318c72(_0x558f47['message']);});});}function getTicket(_0xdd98a5,_0x562fe7,_0x3d308f,_0x102d6c,_0x566e2b){return function(_0xa304dd){logger[_0x8822('0xe')]('Creating\x20new\x20task');return new Promise(function(_0x1328b8,_0x54e1d8){var _0xcbfc8a=moment();var _0x5ab437={'method':_0x8822('0x2d'),'uri':_0x3d308f+_0x8822('0x31'),'body':{'title':intUtil[_0x8822('0x32')](_0x102d6c[_0x8822('0x33')],_0x566e2b,'\x20'),'description':intUtil[_0x8822('0x32')](_0x102d6c[_0x8822('0x34')],_0x566e2b,'\x0a'),'owner_id':_0xa304dd['userId'],'creater_id':_0xa304dd[_0x8822('0x15')],'targetable_id':_0xa304dd[_0x8822('0x29')],'targetable_type':'Contact','created_at':_0xcbfc8a['format'](_0x8822('0x2f')),'due_date':_0xcbfc8a['add'](0x1e,'m')[_0x8822('0x2e')](_0x8822('0x2f'))},'json':!![]};_0x5ab437['headers']=_0x562fe7;return rp(_0x5ab437)[_0x8822('0x10')](function(_0x192cf2){_0xa304dd[_0x8822('0x35')]=_0x192cf2[_0x8822('0x36')]['id'];logger[_0x8822('0xe')](_0x8822('0x37'),_0xa304dd[_0x8822('0x35')]);_0x1328b8(_0xa304dd);})[_0x8822('0x18')](function(_0x568423){logger[_0x8822('0x19')]('['+[_0xdd98a5[_0x8822('0x1a')]()]+']',_0x568423['message']);_0x54e1d8(_0x568423[_0x8822('0x1b')]);});});};}function emit(_0x3cccee,_0xcb238,_0x220295){var _0x30dfac={'uri':_0x3cccee+_0x8822('0x38')+_0x220295};io['to'](util[_0x8822('0x2e')](_0x8822('0x39'),_0xcb238))[_0x8822('0x3a')](_0x8822('0x3b'),_0x30dfac);}exports['cs']=function(_0x8991eb,_0x38189d,_0x4760fc,_0x413cf2,_0x3343ad,_0x356dac,_0x5b8570,_0x4d31f9){var _0x583694={};var _0x3c621a={'Authorization':_0x8822('0x3c')+_0x356dac[_0x8822('0x3d')]};_0x356dac[_0x8822('0x3e')]=intUtil['stripTrailingSlash'](_0x356dac[_0x8822('0x3e')]);_0x356dac[_0x8822('0x3f')]=intUtil[_0x8822('0x40')](_0x356dac[_0x8822('0x3f')]);var _0x32405a=_0x356dac['remoteUri'];_0x583694[_0x8822('0x14')]=_0x356dac[_0x8822('0x41')];_0x583694['contactNumber']=_0x4d31f9[_0x8822('0x42')]()===_0x8822('0x43')?_0x38189d[_0x8822('0x44')]:_0x38189d['calleridnum'];_0x583694[_0x8822('0x45')]=_0x4d31f9==='queue'||_0x4d31f9==='unmanaged'?_0x8822('0x46'):'outbound';if(_0x413cf2){_0x583694['agentEmail']=_0x413cf2[_0x8822('0x13')];}var _0x298208=util['format'](_0x8822('0x47'),_0x356dac['serverUrl'],_0x38189d['uniqueid'],md5(_0x38189d[_0x8822('0x48')]));if(_0x3343ad&&_0x3343ad[_0x8822('0x49')]){logger[_0x8822('0xe')]('[QUEUE]',_0x8822('0x4a'));_0x38189d[_0x8822('0x4b')]=_0x298208;}else if(_0x5b8570&&_0x5b8570['recordingFormat']&&_0x5b8570['recordingFormat']!==_0x8822('0x4c')){logger[_0x8822('0xe')](_0x8822('0x4d'),'Recording\x20is\x20enabled!');_0x38189d[_0x8822('0x4b')]=_0x298208;}else{_0x38189d[_0x8822('0x4b')]='';}return getAdminId(_0x583694,_0x4d31f9,_0x3c621a,_0x32405a)['then'](getUser(_0x4d31f9,_0x3c621a,_0x32405a))[_0x8822('0x10')](getEndUser(_0x4d31f9,_0x3c621a,_0x32405a))[_0x8822('0x10')](getTicket(_0x4d31f9,_0x3c621a,_0x32405a,_0x4760fc,_0x38189d))[_0x8822('0x10')](function(_0x9e40d){logger[_0x8822('0xe')](util[_0x8822('0x2e')]('The\x20ticket\x20ID\x20is:\x20%s',_0x9e40d[_0x8822('0x35')]));if(_0x4d31f9!=='unmanaged'){logger[_0x8822('0xe')]('['+[_0x4d31f9['toUpperCase']()]+']',_0x8822('0x4e'));emit(_0x32405a,_0x413cf2['name'],_0x9e40d[_0x8822('0x29')]);}})['catch'](function(_0x3a2f2e){logger['error']('['+[_0x4d31f9[_0x8822('0x1a')]()]+_0x8822('0x4f'),util[_0x8822('0x50')](_0x3a2f2e,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 97718ea..4497ec4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd64a=['freshdesk','zoho','desk','vtiger','dynamics365','freshsales','servicenow','exec','includes','data1','toLowerCase','Configurations','data3','queue','routeId','outbound','EVENT\x20UNKNOWN','unmanaged','unknown\x20integration','../../../../config/logger','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','data2','lodash','util','./zendesk','./salesforce','./sugarcrm','./zoho','./desk','./vtiger','./servicenow','./freshsales','zendesk','salesforce','sugarcrm'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xd64a,0x149));var _0xad64=function(_0x44cb11,_0x5ac3b0){_0x44cb11=_0x44cb11-0x0;var _0x543c48=_0xd64a[_0x44cb11];return _0x543c48;};'use strict';var _=require(_0xad64('0x0'));var util=require(_0xad64('0x1'));var zendesk=require(_0xad64('0x2'));var salesforce=require(_0xad64('0x3'));var sugarcrm=require(_0xad64('0x4'));var freshdesk=require('./freshdesk');var zoho=require(_0xad64('0x5'));var desk=require(_0xad64('0x6'));var vtiger=require(_0xad64('0x7'));var servicenow=require(_0xad64('0x8'));var dynamics365=require('./dynamics365');var freshsales=require(_0xad64('0x9'));var integrations=[_0xad64('0xa'),_0xad64('0xb'),_0xad64('0xc'),_0xad64('0xd'),_0xad64('0xe'),_0xad64('0xf'),_0xad64('0x10'),_0xad64('0x11'),_0xad64('0x12'),_0xad64('0x13')];exports[_0xad64('0x14')]=function(_0x194c52,_0x2cde7b,_0x59588d,_0x1a347e,_0x563025,_0x54d8f6){if(_0x59588d){if(_[_0xad64('0x15')](integrations,_0x194c52[_0xad64('0x16')][_0xad64('0x17')]())){try{var _0x1dcfee=null;var _0x1f6a4f='';var _0x46751f=_0x59588d[_0x194c52[_0xad64('0x16')][_0xad64('0x17')]()];if(_0x46751f){var _0x516c14=_0x46751f[_0x194c52['data2']];if(_0x516c14){var _0x21322b=_['find'](_0x516c14[_0xad64('0x18')],{'id':parseInt(_0x194c52[_0xad64('0x19')],0xa)});if(_0x21322b){if(_0x1a347e){if(_0x563025&&_0x2cde7b[_0xad64('0x1a')]){_0x1f6a4f=_0xad64('0x1a');}else if(_0x2cde7b[_0xad64('0x1b')]){_0x1f6a4f=_0xad64('0x1c');}else{console['log'](_0xad64('0x1d'),_0x2cde7b);}}else{_0x1f6a4f=_0xad64('0x1e');}switch(_0x194c52[_0xad64('0x16')][_0xad64('0x17')]()){case _0xad64('0xa'):zendesk[_0x1f6a4f](_0x194c52,_0x2cde7b,_0x21322b,_0x1a347e,_0x563025,_0x516c14,_0x54d8f6);break;case'salesforce':salesforce[_0x1f6a4f](_0x194c52,_0x2cde7b,_0x21322b,_0x1a347e,_0x563025,_0x516c14,_0x54d8f6);break;case'sugarcrm':sugarcrm[_0x1f6a4f](_0x194c52,_0x2cde7b,_0x21322b,_0x1a347e,_0x563025,_0x516c14,_0x54d8f6);break;case'freshdesk':freshdesk[_0x1f6a4f](_0x194c52,_0x2cde7b,_0x21322b,_0x1a347e,_0x563025,_0x516c14,_0x54d8f6);break;case _0xad64('0xe'):zoho[_0x1f6a4f](_0x194c52,_0x2cde7b,_0x21322b,_0x1a347e,_0x563025,_0x516c14,_0x54d8f6);break;case _0xad64('0xf'):desk[_0x1f6a4f](_0x194c52,_0x2cde7b,_0x21322b,_0x1a347e,_0x563025,_0x516c14,_0x54d8f6);break;case _0xad64('0x10'):vtiger[_0x1f6a4f](_0x194c52,_0x2cde7b,_0x21322b,_0x1a347e,_0x563025,_0x516c14,_0x54d8f6);break;case'freshsales':freshsales['cs'](_0x194c52,_0x2cde7b,_0x21322b,_0x1a347e,_0x563025,_0x516c14,_0x54d8f6,_0x1f6a4f);break;case _0xad64('0x13'):servicenow['cs'](_0x194c52,_0x2cde7b,_0x21322b,_0x1a347e,_0x563025,_0x516c14,_0x54d8f6,_0x1f6a4f);break;case _0xad64('0x11'):dynamics365['cs'](_0x194c52,_0x2cde7b,_0x21322b,_0x1a347e,_0x563025,_0x516c14,_0x54d8f6,_0x1f6a4f);break;default:console['log'](_0xad64('0x1f'));}}else{_0x1dcfee=require(_0xad64('0x20'))(_0x194c52[_0xad64('0x16')][_0xad64('0x17')]());_0x1dcfee[_0xad64('0x21')](_0xad64('0x22'),util[_0xad64('0x23')](_0xad64('0x24'),_0x194c52[_0xad64('0x16')][_0xad64('0x17')](),_0x194c52[_0xad64('0x19')]));}}else{_0x1dcfee=require('../../../../config/logger')(_0x194c52['data1'][_0xad64('0x17')]());_0x1dcfee[_0xad64('0x21')](_0xad64('0x22'),util['format']('%s\x20account\x20#%s\x20not\x20found',_0x194c52[_0xad64('0x16')][_0xad64('0x17')](),_0x194c52[_0xad64('0x25')]));}}else{}}catch(_0x20880c){console[_0xad64('0x21')](_0x20880c);}}}};
\ No newline at end of file
+var _0xaec8=['zendesk','salesforce','unknown\x20integration','../../../../config/logger','error','format','%s\x20configuration\x20#%s\x20not\x20found','%s\x20account\x20#%s\x20not\x20found','./zendesk','./sugarcrm','./freshdesk','./zoho','./vtiger','./servicenow','./dynamics365','./freshsales','sugarcrm','freshdesk','zoho','desk','vtiger','dynamics365','freshsales','servicenow','exec','includes','data1','toLowerCase','data2','Configurations','data3','queue','routeId','outbound','log'];(function(_0xcf9f28,_0x34df8d){var _0x5760dd=function(_0x5d276c){while(--_0x5d276c){_0xcf9f28['push'](_0xcf9f28['shift']());}};_0x5760dd(++_0x34df8d);}(_0xaec8,0x71));var _0x8aec=function(_0x365841,_0x5a028f){_0x365841=_0x365841-0x0;var _0x56dd93=_0xaec8[_0x365841];return _0x56dd93;};'use strict';var _=require('lodash');var util=require('util');var zendesk=require(_0x8aec('0x0'));var salesforce=require('./salesforce');var sugarcrm=require(_0x8aec('0x1'));var freshdesk=require(_0x8aec('0x2'));var zoho=require(_0x8aec('0x3'));var desk=require('./desk');var vtiger=require(_0x8aec('0x4'));var servicenow=require(_0x8aec('0x5'));var dynamics365=require(_0x8aec('0x6'));var freshsales=require(_0x8aec('0x7'));var integrations=['zendesk','salesforce',_0x8aec('0x8'),_0x8aec('0x9'),_0x8aec('0xa'),_0x8aec('0xb'),_0x8aec('0xc'),_0x8aec('0xd'),_0x8aec('0xe'),_0x8aec('0xf')];exports[_0x8aec('0x10')]=function(_0x36e9f6,_0x243217,_0xe8d1d1,_0xe1d25c,_0x38dde4,_0x2af39a){if(_0xe8d1d1){if(_[_0x8aec('0x11')](integrations,_0x36e9f6[_0x8aec('0x12')][_0x8aec('0x13')]())){try{var _0x58e784=null;var _0x2cea22='';var _0xa22ecb=_0xe8d1d1[_0x36e9f6[_0x8aec('0x12')][_0x8aec('0x13')]()];if(_0xa22ecb){var _0x3577a6=_0xa22ecb[_0x36e9f6[_0x8aec('0x14')]];if(_0x3577a6){var _0x4b3a49=_['find'](_0x3577a6[_0x8aec('0x15')],{'id':parseInt(_0x36e9f6[_0x8aec('0x16')],0xa)});if(_0x4b3a49){if(_0xe1d25c){if(_0x38dde4&&_0x243217[_0x8aec('0x17')]){_0x2cea22='queue';}else if(_0x243217[_0x8aec('0x18')]){_0x2cea22=_0x8aec('0x19');}else{console[_0x8aec('0x1a')]('EVENT\x20UNKNOWN',_0x243217);}}else{_0x2cea22='unmanaged';}switch(_0x36e9f6[_0x8aec('0x12')][_0x8aec('0x13')]()){case _0x8aec('0x1b'):zendesk[_0x2cea22](_0x36e9f6,_0x243217,_0x4b3a49,_0xe1d25c,_0x38dde4,_0x3577a6,_0x2af39a);break;case _0x8aec('0x1c'):salesforce[_0x2cea22](_0x36e9f6,_0x243217,_0x4b3a49,_0xe1d25c,_0x38dde4,_0x3577a6,_0x2af39a);break;case _0x8aec('0x8'):sugarcrm[_0x2cea22](_0x36e9f6,_0x243217,_0x4b3a49,_0xe1d25c,_0x38dde4,_0x3577a6,_0x2af39a);break;case _0x8aec('0x9'):freshdesk[_0x2cea22](_0x36e9f6,_0x243217,_0x4b3a49,_0xe1d25c,_0x38dde4,_0x3577a6,_0x2af39a);break;case _0x8aec('0xa'):zoho[_0x2cea22](_0x36e9f6,_0x243217,_0x4b3a49,_0xe1d25c,_0x38dde4,_0x3577a6,_0x2af39a);break;case _0x8aec('0xb'):desk[_0x2cea22](_0x36e9f6,_0x243217,_0x4b3a49,_0xe1d25c,_0x38dde4,_0x3577a6,_0x2af39a);break;case _0x8aec('0xc'):vtiger[_0x2cea22](_0x36e9f6,_0x243217,_0x4b3a49,_0xe1d25c,_0x38dde4,_0x3577a6,_0x2af39a);break;case'freshsales':freshsales['cs'](_0x36e9f6,_0x243217,_0x4b3a49,_0xe1d25c,_0x38dde4,_0x3577a6,_0x2af39a,_0x2cea22);break;case _0x8aec('0xf'):servicenow['cs'](_0x36e9f6,_0x243217,_0x4b3a49,_0xe1d25c,_0x38dde4,_0x3577a6,_0x2af39a,_0x2cea22);break;case _0x8aec('0xd'):dynamics365['cs'](_0x36e9f6,_0x243217,_0x4b3a49,_0xe1d25c,_0x38dde4,_0x3577a6,_0x2af39a,_0x2cea22);break;default:console['log'](_0x8aec('0x1d'));}}else{_0x58e784=require(_0x8aec('0x1e'))(_0x36e9f6['data1']['toLowerCase']());_0x58e784[_0x8aec('0x1f')]('[EXEC]',util[_0x8aec('0x20')](_0x8aec('0x21'),_0x36e9f6[_0x8aec('0x12')]['toLowerCase'](),_0x36e9f6['data3']));}}else{_0x58e784=require(_0x8aec('0x1e'))(_0x36e9f6['data1']['toLowerCase']());_0x58e784['error']('[EXEC]',util['format'](_0x8aec('0x22'),_0x36e9f6[_0x8aec('0x12')][_0x8aec('0x13')](),_0x36e9f6[_0x8aec('0x14')]));}}else{}}catch(_0x58a4a7){console['error'](_0x58a4a7);}}}};
\ No newline at end of file
index 1a6c0e4..c76e741 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e07=['Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','display_name','resolve','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','cloneDeep','additionalSearchContact','$or','Contact','additionalSearchLead','merge','account_contact_lead','additionalSearchAccount','execute','Lead','Account','first','Phone','type','toLowerCase','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','upperFirst','create','forEach','includes','string','picklist','idField','toString','variable','variableName','customVariable','Variable','name','concat','securityToken','remoteUri','https://login.salesforce.com','clientId','clientSecret','login','username','Connection\x20established.','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridname','calleridnum','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','user:%s','trigger:salesforce:display','newTab','trigger:browser:url','%s/%s/e','instanceUrl','outbound','none','[OUTBOUND]','destcalleridnum','Fields','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','Salesforce\x20account\x20type\x20not\x20recognized','catch','error','lastevent','toUpperCase','Recording\x20is\x20enabled!',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','jsforce','util','ioredis','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','socket.io-emitter','emit','assign','getString','Descriptions','ticketType','Task','ActivityDate','utc','IsReminderSet','IsRecurrence','lead','endUserType','WhatId','Case','contact','ContactId','account','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','isNil','validateEmail','User','find','then','length','Email','Agent\x20%s\x20found.'];(function(_0x1db653,_0x3a9940){var _0x156348=function(_0x5ec560){while(--_0x5ec560){_0x1db653['push'](_0x1db653['shift']());}};_0x156348(++_0x3a9940);}(_0x6e07,0x15b));var _0x76e0=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6e07[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x76e0('0x0'));var rp=require(_0x76e0('0x1'));var moment=require(_0x76e0('0x2'));var BPromise=require('bluebird');var md5=require('md5');var jsforce=require(_0x76e0('0x3'));var util=require(_0x76e0('0x4'));var Redis=require(_0x76e0('0x5'));var intUtil=require(_0x76e0('0x6'));var config=require(_0x76e0('0x7'));var logger=require(_0x76e0('0x8'))(_0x76e0('0x9'));config[_0x76e0('0xa')]=_[_0x76e0('0xb')](config[_0x76e0('0xa')],{'host':'localhost','port':0x18eb});var io=require(_0x76e0('0xc'))(new Redis(config[_0x76e0('0xa')]));function emit(_0x115bd2,_0x373165,_0x59da3e){io['to'](_0x115bd2)[_0x76e0('0xd')](_0x373165,_0x59da3e);}function getTicket(_0x13fdd2,_0xae0fe5,_0x21337e,_0x2f958f,_0x4e963b,_0x588188,_0x24bcc5,_0x4ab0fe){var _0x5c31f0=Object[_0x76e0('0xe')]({},{'OwnerId':_0xae0fe5['id'],'Subject':intUtil['getString'](_0x2f958f['Subjects'],_0x4e963b,'\x20'),'Description':intUtil[_0x76e0('0xf')](_0x2f958f[_0x76e0('0x10')],_0x4e963b,'\x0a')},getCustomFields(_0x588188,_0x4e963b));if(_0x21337e){if(_0x2f958f[_0x76e0('0x11')]===_0x76e0('0x12')){_0x5c31f0[_0x76e0('0x13')]=moment[_0x76e0('0x14')]();_0x5c31f0[_0x76e0('0x15')]=![];_0x5c31f0[_0x76e0('0x16')]=![];if(_0x21337e['endUserType']==='contact'||_0x21337e['endUserType']===_0x76e0('0x17')){_0x5c31f0['WhoId']=_0x21337e['id'];}else if(_0x21337e[_0x76e0('0x18')]==='account'){_0x5c31f0[_0x76e0('0x19')]=_0x21337e['id'];}}else if(_0x2f958f[_0x76e0('0x11')]===_0x76e0('0x1a')){if(_0x21337e[_0x76e0('0x18')]===_0x76e0('0x1b')){_0x5c31f0[_0x76e0('0x1c')]=_0x21337e['id'];}else if(_0x21337e[_0x76e0('0x18')]===_0x76e0('0x1d')){_0x5c31f0[_0x76e0('0x1e')]=_0x21337e['id'];}else if(_0x21337e[_0x76e0('0x18')]===_0x76e0('0x17')&&_0x2f958f[_0x76e0('0x1f')]){_0x5c31f0[_0x2f958f[_0x76e0('0x1f')]]=_0x21337e['id'];}else{logger[_0x76e0('0x20')](_0x76e0('0x21'));}}}return _0x24bcc5[_0x76e0('0x22')](_0x2f958f[_0x76e0('0x11')])['create'](_0x5c31f0);}function getUser(_0x585c08,_0x48f38c,_0x3363bc){if(!_[_0x76e0('0x23')](_0x48f38c)&&intUtil[_0x76e0('0x24')](_0x48f38c)){var _0x56c8ed={'Email':_0x48f38c};var _0x2eabd0={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x3363bc[_0x76e0('0x22')](_0x76e0('0x25'))[_0x76e0('0x26')](_0x56c8ed,_0x2eabd0)['execute']()[_0x76e0('0x27')](function(_0x3c1431){if(_0x3c1431[_0x76e0('0x28')]){var _0x117d2=_['find'](_0x3c1431,function(_0x58ea39){return _0x58ea39[_0x76e0('0x29')]===_0x48f38c;});if(_0x117d2){logger[_0x76e0('0x20')](_0x76e0('0x2a'),_0x48f38c);return BPromise['resolve']({'id':_0x117d2['Id'],'name':_0x117d2[_0x76e0('0x2b')]});}}else{logger[_0x76e0('0x20')](_0x76e0('0x2c'),_0x48f38c);return _0x3363bc[_0x76e0('0x2d')]()[_0x76e0('0x27')](function(_0x3f207d){return BPromise['resolve']({'id':_0x3f207d[_0x76e0('0x2e')],'name':_0x3f207d[_0x76e0('0x2f')]});});}});}else{logger[_0x76e0('0x20')](_0x76e0('0x2c'),_0x48f38c);return _0x3363bc[_0x76e0('0x2d')]()['then'](function(_0x100ac1){return BPromise[_0x76e0('0x30')]({'id':_0x100ac1[_0x76e0('0x2e')],'name':_0x100ac1['display_name']});});}}function getEndUser(_0x516afa,_0xc5103,_0x305246,_0x4fe0f7,_0x4ec08a){var _0x56020b={'$or':{'Phone':_0x4fe0f7}};var _0x2768f9={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x76e0('0x30')]()[_0x76e0('0x27')](function(){logger[_0x76e0('0x20')](_0x76e0('0x31'),_0x4fe0f7,_0xc5103[_0x76e0('0x32')]);switch(_0xc5103[_0x76e0('0x32')]){case'contact_lead':var _0xefc9b3=_[_0x76e0('0x33')](_0x56020b);if(_0xc5103[_0x76e0('0x34')]){var _0x2f4929={};_0x2f4929[_0xc5103[_0x76e0('0x34')]]=_0x4fe0f7;_['merge'](_0xefc9b3[_0x76e0('0x35')],_0x2f4929);}return _0x4ec08a[_0x76e0('0x22')](_0x76e0('0x36'))['find'](_0xefc9b3,_0x2768f9)['execute']()[_0x76e0('0x27')](function(_0x2c23a3){if(_0x2c23a3&&_0x2c23a3[_0x76e0('0x28')]){return _0x2c23a3;}else{var _0xaa64b5=_[_0x76e0('0x33')](_0x56020b);if(_0xc5103[_0x76e0('0x37')]){var _0x298c91={};_0x298c91[_0xc5103['additionalSearchLead']]=_0x4fe0f7;_[_0x76e0('0x38')](_0xaa64b5['$or'],_0x298c91);}return _0x4ec08a[_0x76e0('0x22')]('Lead')[_0x76e0('0x26')](_0xaa64b5,_0x2768f9);}});case _0x76e0('0x39'):var _0x12fb45=_[_0x76e0('0x33')](_0x56020b);if(_0xc5103[_0x76e0('0x3a')]){var _0x2f4929={};_0x2f4929[_0xc5103[_0x76e0('0x3a')]]=_0x4fe0f7;_['merge'](_0x12fb45[_0x76e0('0x35')],_0x2f4929);}return _0x4ec08a[_0x76e0('0x22')]('Account')[_0x76e0('0x26')](_0x12fb45,_0x2768f9)[_0x76e0('0x3b')]()[_0x76e0('0x27')](function(_0xc837d5){if(_0xc837d5&&_0xc837d5['length']){return _0xc837d5;}else{var _0x50ae2b=_['cloneDeep'](_0x56020b);if(_0xc5103[_0x76e0('0x34')]){var _0x2aba99={};_0x2aba99[_0xc5103['additionalSearchContact']]=_0x4fe0f7;_[_0x76e0('0x38')](_0x50ae2b[_0x76e0('0x35')],_0x2aba99);}return _0x4ec08a[_0x76e0('0x22')](_0x76e0('0x36'))['find'](_0x50ae2b,_0x2768f9)['then'](function(_0x4bbfd7){if(_0x4bbfd7&&_0x4bbfd7[_0x76e0('0x28')]){return _0x4bbfd7;}else{var _0xd37919=_[_0x76e0('0x33')](_0x56020b);if(_0xc5103['additionalSearchLead']){var _0x1231d2={};_0x1231d2[_0xc5103[_0x76e0('0x37')]]=_0x4fe0f7;_[_0x76e0('0x38')](_0xd37919['$or'],_0x1231d2);}return _0x4ec08a[_0x76e0('0x22')](_0x76e0('0x3c'))[_0x76e0('0x26')](_0xd37919,_0x2768f9);}});}});case _0x76e0('0x1b'):var _0xefc9b3=_[_0x76e0('0x33')](_0x56020b);if(_0xc5103[_0x76e0('0x34')]){var _0x2f4929={};_0x2f4929[_0xc5103[_0x76e0('0x34')]]=_0x4fe0f7;_[_0x76e0('0x38')](_0xefc9b3[_0x76e0('0x35')],_0x2f4929);}return _0x4ec08a[_0x76e0('0x22')](_0x76e0('0x36'))[_0x76e0('0x26')](_0xefc9b3,_0x2768f9)['execute']();case _0x76e0('0x17'):var _0x4aa696=_[_0x76e0('0x33')](_0x56020b);if(_0xc5103[_0x76e0('0x37')]){var _0x2f4929={};_0x2f4929[_0xc5103['additionalSearchLead']]=_0x4fe0f7;_[_0x76e0('0x38')](_0x4aa696[_0x76e0('0x35')],_0x2f4929);}return _0x4ec08a[_0x76e0('0x22')](_0x76e0('0x3c'))[_0x76e0('0x26')](_0x4aa696,_0x2768f9);case _0x76e0('0x1d'):var _0x12fb45=_['cloneDeep'](_0x56020b);if(_0xc5103[_0x76e0('0x3a')]){var _0x2f4929={};_0x2f4929[_0xc5103[_0x76e0('0x3a')]]=_0x4fe0f7;_[_0x76e0('0x38')](_0x12fb45['$or'],_0x2f4929);}return _0x4ec08a[_0x76e0('0x22')](_0x76e0('0x3d'))[_0x76e0('0x26')](_0x12fb45,_0x2768f9);default:return null;}})['then'](function(_0x32d069){if(_0x32d069&&_0x32d069['length']){var _0x361ed0=_[_0x76e0('0x3e')](_0x32d069);if(_0x361ed0){return BPromise[_0x76e0('0x30')]({'id':_0x361ed0['Id'],'name':_0x361ed0[_0x76e0('0x2b')],'phone':_0x361ed0[_0x76e0('0x3f')],'endUserType':_0x361ed0['attributes'][_0x76e0('0x40')][_0x76e0('0x41')]()});}}})[_0x76e0('0x27')](function(_0x5c09cb){if(_0x5c09cb){logger['info']('Enduser\x20(%s)\x20with\x20phone\x20%s\x20found',_0x5c09cb[_0x76e0('0x18')],_0x4fe0f7);return BPromise[_0x76e0('0x30')](_0x5c09cb);}else{logger[_0x76e0('0x20')](_0x76e0('0x42'),_0x4fe0f7);var _0x380870={'Phone':_0x4fe0f7};if(_0xc5103[_0x76e0('0x43')]){if(_0xc5103['moduleCreate']===_0x76e0('0x1b')){logger['info'](_0x76e0('0x44'),_0x4fe0f7,_0xc5103[_0x76e0('0x43')]);_0x380870[_0x76e0('0x45')]=_0x305246!==_0x76e0('0x46')?_0x305246:util[_0x76e0('0x47')](_0x76e0('0x48'),_0x4fe0f7);}else if(_0xc5103[_0x76e0('0x43')]===_0x76e0('0x17')){logger[_0x76e0('0x20')](_0x76e0('0x44'),_0x4fe0f7,_0xc5103[_0x76e0('0x43')]);_0x380870[_0x76e0('0x45')]=_0x305246!=='<unknown>'?_0x305246:util[_0x76e0('0x47')](_0x76e0('0x48'),_0x4fe0f7);_0x380870['Company']='No\x20Company';}else if(_0xc5103[_0x76e0('0x43')]===_0x76e0('0x1d')){logger[_0x76e0('0x20')](_0x76e0('0x44'),_0x4fe0f7,_0xc5103[_0x76e0('0x43')]);_0x380870[_0x76e0('0x2b')]=_0x305246!=='<unknown>'?_0x305246:util[_0x76e0('0x47')](_0x76e0('0x48'),_0x4fe0f7);}else{return null;}}return _0x4ec08a[_0x76e0('0x22')](_[_0x76e0('0x49')](_0xc5103['moduleCreate']))[_0x76e0('0x4a')](_0x380870)['then'](function(_0x4be630){return BPromise[_0x76e0('0x30')]({'id':_0x4be630['id'],'endUserType':_0xc5103[_0x76e0('0x43')]});});}});}function getCustomFields(_0x529faa,_0x3d51e8){var _0x51e8bd={};if(_0x529faa['length']>0x0){_[_0x76e0('0x4b')](_0x529faa,function(_0x41f2f9){if(_[_0x76e0('0x4c')]([_0x76e0('0x4d'),_0x76e0('0x4e')],_0x41f2f9['type'])&&_0x41f2f9[_0x76e0('0x4f')]){_0x51e8bd[_0x41f2f9[_0x76e0('0x4f')]]=_0x41f2f9['content'][_0x76e0('0x50')]();}else if(_0x41f2f9[_0x76e0('0x40')]===_0x76e0('0x51')&&_0x41f2f9[_0x76e0('0x52')]&&_0x41f2f9[_0x76e0('0x4f')]){_0x3d51e8[_0x41f2f9[_0x76e0('0x52')]]&&(_0x51e8bd[_0x41f2f9[_0x76e0('0x4f')]]=_0x3d51e8[_0x41f2f9[_0x76e0('0x52')]][_0x76e0('0x50')]());}else if(_0x41f2f9[_0x76e0('0x40')]===_0x76e0('0x53')&&_0x41f2f9[_0x76e0('0x54')]&&_0x41f2f9[_0x76e0('0x54')]['name']&&_0x41f2f9[_0x76e0('0x4f')]){_0x3d51e8[_0x41f2f9['Variable']['name'][_0x76e0('0x41')]()]&&(_0x51e8bd[_0x41f2f9[_0x76e0('0x4f')]]=_0x3d51e8[_0x41f2f9[_0x76e0('0x54')][_0x76e0('0x55')][_0x76e0('0x41')]()][_0x76e0('0x50')]());}});}return _0x51e8bd;}function getConnection(_0x54977a){var _0x1e5233=_0x54977a['password'][_0x76e0('0x56')](_0x54977a[_0x76e0('0x57')]);var _0x220021=new jsforce['Connection']({'oauth2':{'loginUrl':_0x54977a[_0x76e0('0x58')]||_0x76e0('0x59'),'clientId':_0x54977a[_0x76e0('0x5a')],'clientSecret':_0x54977a[_0x76e0('0x5b')]}});return _0x220021[_0x76e0('0x5c')](_0x54977a[_0x76e0('0x5d')],_0x1e5233)[_0x76e0('0x27')](function(){logger[_0x76e0('0x20')](_0x76e0('0x5e'));return _0x220021;});}exports[_0x76e0('0x5f')]=function(_0x2896ba,_0x5f379a,_0x4caa05,_0x3d799e,_0x8d15d8,_0x47a58b){var _0x325ac9,_0x40bd1f,_0x4aeae5,_0x22921e;_0x47a58b[_0x76e0('0x60')]=intUtil[_0x76e0('0x61')](_0x47a58b[_0x76e0('0x60')]);_0x47a58b[_0x76e0('0x58')]=intUtil[_0x76e0('0x61')](_0x47a58b[_0x76e0('0x58')]);if(_0x8d15d8&&_0x8d15d8[_0x76e0('0x62')]){logger[_0x76e0('0x20')](_0x76e0('0x63'),'Recording\x20is\x20enabled!');_0x5f379a[_0x76e0('0x64')]=util[_0x76e0('0x47')](_0x76e0('0x65'),_0x47a58b[_0x76e0('0x60')],_0x5f379a[_0x76e0('0x66')],md5(_0x5f379a[_0x76e0('0x66')]));}else{_0x5f379a[_0x76e0('0x64')]='';}return getConnection(_0x47a58b)[_0x76e0('0x27')](function(_0xae759a){_0x22921e=_0xae759a;return getUser(_0x47a58b,_0x3d799e[_0x76e0('0x67')],_0x22921e);})['then'](function(_0x5eae56){_0x325ac9=_0x5eae56;return getEndUser(_0x47a58b,_0x4caa05,_0x5f379a[_0x76e0('0x68')],_0x5f379a[_0x76e0('0x69')],_0x22921e);})[_0x76e0('0x27')](function(_0x4c29f2){_0x40bd1f=_0x4c29f2;return getTicket(_0x47a58b,_0x325ac9,_0x40bd1f,_0x4caa05,_0x5f379a,_0x4caa05['Fields'],_0x22921e,'queue');})[_0x76e0('0x27')](function(_0x20cf22){_0x4aeae5=_0x20cf22;logger[_0x76e0('0x20')](_0x76e0('0x6a'),_0x4aeae5['id']);logger['info'](_0x76e0('0x6b'),_0x4aeae5['id'],_0x3d799e[_0x76e0('0x55')],_0x47a58b[_0x76e0('0x40')]);switch(_0x47a58b[_0x76e0('0x40')]){case'integrationTab':emit(util[_0x76e0('0x47')](_0x76e0('0x6c'),_0x3d799e[_0x76e0('0x55')]),_0x76e0('0x6d'),{'recordId':_0x4aeae5['id']});break;case _0x76e0('0x6e'):emit(util['format'](_0x76e0('0x6c'),_0x3d799e[_0x76e0('0x55')]),_0x76e0('0x6f'),{'uri':util['format'](_0x76e0('0x70'),_0x22921e[_0x76e0('0x71')],_0x4aeae5['id'])});break;default:logger['error']('[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.');}})['catch'](function(_0xdd8447){logger['error'](_0x76e0('0x63'),_0xdd8447);});};exports[_0x76e0('0x72')]=function(_0x2b8ff0,_0x554d53,_0x3f6bca,_0x47361f,_0x4d484a,_0x330b4c,_0x4fd054){var _0x5f02e4,_0x2ff83d,_0x59c079,_0x3e530d;_0x330b4c['serverUrl']=intUtil[_0x76e0('0x61')](_0x330b4c[_0x76e0('0x60')]);_0x330b4c[_0x76e0('0x58')]=intUtil[_0x76e0('0x61')](_0x330b4c[_0x76e0('0x58')]);if(_0x4fd054&&_0x4fd054['recordingFormat']&&_0x4fd054['recordingFormat']!==_0x76e0('0x73')){logger[_0x76e0('0x20')](_0x76e0('0x74'),'Recording\x20is\x20enabled!');_0x554d53[_0x76e0('0x64')]=util[_0x76e0('0x47')](_0x76e0('0x65'),_0x330b4c['serverUrl'],_0x554d53['uniqueid'],md5(_0x554d53[_0x76e0('0x66')]));}return getConnection(_0x330b4c)[_0x76e0('0x27')](function(_0x32036f){_0x3e530d=_0x32036f;return getUser(_0x330b4c,_0x47361f[_0x76e0('0x67')],_0x3e530d);})['then'](function(_0x3dee18){_0x5f02e4=_0x3dee18;return getEndUser(_0x330b4c,_0x3f6bca,_0x554d53['destcalleridname'],_0x554d53[_0x76e0('0x75')],_0x3e530d);})['then'](function(_0x50842e){_0x2ff83d=_0x50842e;return getTicket(_0x330b4c,_0x5f02e4,_0x2ff83d,_0x3f6bca,_0x554d53,_0x3f6bca[_0x76e0('0x76')],_0x3e530d,_0x76e0('0x72'));})['then'](function(_0x31108b){_0x59c079=_0x31108b;logger[_0x76e0('0x20')](_0x76e0('0x77'),_0x59c079['id']);logger['info'](_0x76e0('0x78'),_0x59c079['id'],_0x47361f['name'],_0x330b4c[_0x76e0('0x40')]);switch(_0x330b4c[_0x76e0('0x40')]){case _0x76e0('0x79'):emit(util[_0x76e0('0x47')](_0x76e0('0x6c'),_0x47361f['name']),_0x76e0('0x6d'),{'recordId':_0x59c079['id']});break;case _0x76e0('0x6e'):emit(util[_0x76e0('0x47')](_0x76e0('0x6c'),_0x47361f[_0x76e0('0x55')]),_0x76e0('0x6f'),{'uri':util[_0x76e0('0x47')](_0x76e0('0x70'),_0x3e530d[_0x76e0('0x71')],_0x59c079['id'])});break;default:logger['error'](_0x76e0('0x74'),_0x76e0('0x7a'));}})[_0x76e0('0x7b')](function(_0x2bc7c6){logger[_0x76e0('0x7c')]('[OUTBOUND]',_0x2bc7c6);});};exports['unmanaged']=function(_0x447b36,_0x24c61b,_0x44fddf,_0x227482,_0x41512f,_0x58282c){var _0x1a3162,_0x214adb,_0x1f16fb,_0x4d3ddd;_0x58282c[_0x76e0('0x60')]=intUtil[_0x76e0('0x61')](_0x58282c['serverUrl']);_0x58282c['remoteUri']=intUtil[_0x76e0('0x61')](_0x58282c[_0x76e0('0x58')]);if(_0x41512f&&_0x41512f['monitor_format']){logger[_0x76e0('0x20')]('['+_0x24c61b[_0x76e0('0x7d')][_0x76e0('0x7e')]()+']',_0x76e0('0x7f'));_0x24c61b[_0x76e0('0x64')]=util['format'](_0x76e0('0x65'),_0x58282c[_0x76e0('0x60')],_0x24c61b[_0x76e0('0x66')],md5(_0x24c61b[_0x76e0('0x66')]));}else{_0x24c61b[_0x76e0('0x64')]='';}return getConnection(_0x58282c)[_0x76e0('0x27')](function(_0x3a8a23){_0x4d3ddd=_0x3a8a23;if(!_[_0x76e0('0x23')](_0x227482)){return getUser(_0x58282c,_0x227482[_0x76e0('0x55')],_0x4d3ddd);}else{return getUser(_0x58282c,null,_0x4d3ddd);}})[_0x76e0('0x27')](function(_0x3d0a69){_0x1a3162=_0x3d0a69;return getEndUser(_0x58282c,_0x44fddf,_0x24c61b[_0x76e0('0x68')],_0x24c61b[_0x76e0('0x69')],_0x4d3ddd);})['then'](function(_0x21c879){_0x214adb=_0x21c879;return getTicket(_0x58282c,_0x1a3162,_0x214adb,_0x44fddf,_0x24c61b,_0x44fddf[_0x76e0('0x76')],_0x4d3ddd);})['then'](function(_0x724130){_0x1f16fb=_0x724130;logger[_0x76e0('0x20')]('['+_0x24c61b[_0x76e0('0x7d')][_0x76e0('0x7e')]()+_0x76e0('0x80'),_0x1f16fb['id']);logger['info']('['+_0x24c61b[_0x76e0('0x7d')][_0x76e0('0x7e')]()+_0x76e0('0x81'),_0x58282c[_0x76e0('0x40')]);})[_0x76e0('0x7b')](function(_0x5d1469){logger['error']('['+_0x24c61b[_0x76e0('0x7d')][_0x76e0('0x7e')]()+']',_0x5d1469);});};
\ No newline at end of file
+var _0xce4f=['Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','moduleCreate','LastName','format','Caller\x20-\x20%s','<unknown>','upperFirst','includes','string','picklist','type','toString','variable','variableName','idField','customVariable','Variable','name','password','concat','Connection','remoteUri','login','username','queue','serverUrl','stripTrailingSlash','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridname','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','user:%s','trigger:salesforce:display','trigger:browser:url','instanceUrl','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','error','[QUEUE]','outbound','recordingFormat','none','[OUTBOUND]','email','destcalleridname','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','newTab','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','toUpperCase','isNil','calleridnum','lastevent',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','bluebird','md5','jsforce','util','ioredis','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','localhost','socket.io-emitter','emit','assign','getString','Subjects','Descriptions','ticketType','Task','ActivityDate','utc','contact','endUserType','WhoId','account','WhatId','ContactId','AccountId','lead','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','create','validateEmail','sobject','User','find','then','Email','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','user_id','display_name','identity','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','merge','$or','Contact','execute','length','additionalSearchLead','Lead','additionalSearchAccount','Account','first','attributes','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found'];(function(_0x34839f,_0x39ba16){var _0x34b8f5=function(_0x35ba46){while(--_0x35ba46){_0x34839f['push'](_0x34839f['shift']());}};_0x34b8f5(++_0x39ba16);}(_0xce4f,0xbf));var _0xfce4=function(_0x12832d,_0x3238c3){_0x12832d=_0x12832d-0x0;var _0x567ddf=_0xce4f[_0x12832d];return _0x567ddf;};'use strict';var _=require(_0xfce4('0x0'));var rp=require(_0xfce4('0x1'));var moment=require(_0xfce4('0x2'));var BPromise=require(_0xfce4('0x3'));var md5=require(_0xfce4('0x4'));var jsforce=require(_0xfce4('0x5'));var util=require(_0xfce4('0x6'));var Redis=require(_0xfce4('0x7'));var intUtil=require(_0xfce4('0x8'));var config=require(_0xfce4('0x9'));var logger=require(_0xfce4('0xa'))(_0xfce4('0xb'));config[_0xfce4('0xc')]=_[_0xfce4('0xd')](config[_0xfce4('0xc')],{'host':_0xfce4('0xe'),'port':0x18eb});var io=require(_0xfce4('0xf'))(new Redis(config[_0xfce4('0xc')]));function emit(_0x39b11d,_0x4808d0,_0x39403e){io['to'](_0x39b11d)[_0xfce4('0x10')](_0x4808d0,_0x39403e);}function getTicket(_0x56aea8,_0x39667a,_0x3c43bc,_0x486bec,_0x1e3056,_0x2d5baf,_0x2f90d6,_0x551eba){var _0x230844=Object[_0xfce4('0x11')]({},{'OwnerId':_0x39667a['id'],'Subject':intUtil[_0xfce4('0x12')](_0x486bec[_0xfce4('0x13')],_0x1e3056,'\x20'),'Description':intUtil[_0xfce4('0x12')](_0x486bec[_0xfce4('0x14')],_0x1e3056,'\x0a')},getCustomFields(_0x2d5baf,_0x1e3056));if(_0x3c43bc){if(_0x486bec[_0xfce4('0x15')]===_0xfce4('0x16')){_0x230844[_0xfce4('0x17')]=moment[_0xfce4('0x18')]();_0x230844['IsReminderSet']=![];_0x230844['IsRecurrence']=![];if(_0x3c43bc['endUserType']===_0xfce4('0x19')||_0x3c43bc[_0xfce4('0x1a')]==='lead'){_0x230844[_0xfce4('0x1b')]=_0x3c43bc['id'];}else if(_0x3c43bc[_0xfce4('0x1a')]===_0xfce4('0x1c')){_0x230844[_0xfce4('0x1d')]=_0x3c43bc['id'];}}else if(_0x486bec['ticketType']==='Case'){if(_0x3c43bc[_0xfce4('0x1a')]==='contact'){_0x230844[_0xfce4('0x1e')]=_0x3c43bc['id'];}else if(_0x3c43bc[_0xfce4('0x1a')]===_0xfce4('0x1c')){_0x230844[_0xfce4('0x1f')]=_0x3c43bc['id'];}else if(_0x3c43bc[_0xfce4('0x1a')]===_0xfce4('0x20')&&_0x486bec['leadId']){_0x230844[_0x486bec[_0xfce4('0x21')]]=_0x3c43bc['id'];}else{logger[_0xfce4('0x22')](_0xfce4('0x23'));}}}return _0x2f90d6['sobject'](_0x486bec[_0xfce4('0x15')])[_0xfce4('0x24')](_0x230844);}function getUser(_0x42f92b,_0x4762eb,_0x4ccf7e){if(!_['isNil'](_0x4762eb)&&intUtil[_0xfce4('0x25')](_0x4762eb)){var _0x1318e2={'Email':_0x4762eb};var _0x4224c4={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x4ccf7e[_0xfce4('0x26')](_0xfce4('0x27'))[_0xfce4('0x28')](_0x1318e2,_0x4224c4)['execute']()[_0xfce4('0x29')](function(_0x42ec17){if(_0x42ec17['length']){var _0x41bbe4=_[_0xfce4('0x28')](_0x42ec17,function(_0x9ed8e6){return _0x9ed8e6[_0xfce4('0x2a')]===_0x4762eb;});if(_0x41bbe4){logger[_0xfce4('0x22')](_0xfce4('0x2b'),_0x4762eb);return BPromise[_0xfce4('0x2c')]({'id':_0x41bbe4['Id'],'name':_0x41bbe4[_0xfce4('0x2d')]});}}else{logger['info'](_0xfce4('0x2e'),_0x4762eb);return _0x4ccf7e['identity']()[_0xfce4('0x29')](function(_0x4c912a){return BPromise[_0xfce4('0x2c')]({'id':_0x4c912a[_0xfce4('0x2f')],'name':_0x4c912a[_0xfce4('0x30')]});});}});}else{logger['info'](_0xfce4('0x2e'),_0x4762eb);return _0x4ccf7e[_0xfce4('0x31')]()['then'](function(_0x3a867a){return BPromise['resolve']({'id':_0x3a867a['user_id'],'name':_0x3a867a[_0xfce4('0x30')]});});}}function getEndUser(_0x1c74ee,_0x7171c4,_0x543b5e,_0x27f2f1,_0x205a4b){var _0x321f38={'$or':{'Phone':_0x27f2f1}};var _0x20793e={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0xfce4('0x2c')]()[_0xfce4('0x29')](function(){logger[_0xfce4('0x22')](_0xfce4('0x32'),_0x27f2f1,_0x7171c4[_0xfce4('0x33')]);switch(_0x7171c4[_0xfce4('0x33')]){case _0xfce4('0x34'):var _0xd586c4=_[_0xfce4('0x35')](_0x321f38);if(_0x7171c4['additionalSearchContact']){var _0x2bbe39={};_0x2bbe39[_0x7171c4[_0xfce4('0x36')]]=_0x27f2f1;_[_0xfce4('0x37')](_0xd586c4[_0xfce4('0x38')],_0x2bbe39);}return _0x205a4b[_0xfce4('0x26')](_0xfce4('0x39'))[_0xfce4('0x28')](_0xd586c4,_0x20793e)[_0xfce4('0x3a')]()[_0xfce4('0x29')](function(_0x3a16ba){if(_0x3a16ba&&_0x3a16ba[_0xfce4('0x3b')]){return _0x3a16ba;}else{var _0x239126=_[_0xfce4('0x35')](_0x321f38);if(_0x7171c4['additionalSearchLead']){var _0x4eddad={};_0x4eddad[_0x7171c4[_0xfce4('0x3c')]]=_0x27f2f1;_[_0xfce4('0x37')](_0x239126[_0xfce4('0x38')],_0x4eddad);}return _0x205a4b['sobject'](_0xfce4('0x3d'))[_0xfce4('0x28')](_0x239126,_0x20793e);}});case'account_contact_lead':var _0x4aea28=_[_0xfce4('0x35')](_0x321f38);if(_0x7171c4['additionalSearchAccount']){var _0x2bbe39={};_0x2bbe39[_0x7171c4[_0xfce4('0x3e')]]=_0x27f2f1;_[_0xfce4('0x37')](_0x4aea28['$or'],_0x2bbe39);}return _0x205a4b['sobject'](_0xfce4('0x3f'))['find'](_0x4aea28,_0x20793e)[_0xfce4('0x3a')]()['then'](function(_0x587244){if(_0x587244&&_0x587244[_0xfce4('0x3b')]){return _0x587244;}else{var _0x187be3=_['cloneDeep'](_0x321f38);if(_0x7171c4[_0xfce4('0x36')]){var _0x1d4c68={};_0x1d4c68[_0x7171c4[_0xfce4('0x36')]]=_0x27f2f1;_['merge'](_0x187be3[_0xfce4('0x38')],_0x1d4c68);}return _0x205a4b['sobject'](_0xfce4('0x39'))[_0xfce4('0x28')](_0x187be3,_0x20793e)[_0xfce4('0x29')](function(_0x4a68cd){if(_0x4a68cd&&_0x4a68cd[_0xfce4('0x3b')]){return _0x4a68cd;}else{var _0x24bc06=_[_0xfce4('0x35')](_0x321f38);if(_0x7171c4[_0xfce4('0x3c')]){var _0x209c2d={};_0x209c2d[_0x7171c4['additionalSearchLead']]=_0x27f2f1;_[_0xfce4('0x37')](_0x24bc06[_0xfce4('0x38')],_0x209c2d);}return _0x205a4b[_0xfce4('0x26')](_0xfce4('0x3d'))['find'](_0x24bc06,_0x20793e);}});}});case _0xfce4('0x19'):var _0xd586c4=_[_0xfce4('0x35')](_0x321f38);if(_0x7171c4['additionalSearchContact']){var _0x2bbe39={};_0x2bbe39[_0x7171c4[_0xfce4('0x36')]]=_0x27f2f1;_[_0xfce4('0x37')](_0xd586c4[_0xfce4('0x38')],_0x2bbe39);}return _0x205a4b[_0xfce4('0x26')](_0xfce4('0x39'))[_0xfce4('0x28')](_0xd586c4,_0x20793e)[_0xfce4('0x3a')]();case _0xfce4('0x20'):var _0x4c668e=_[_0xfce4('0x35')](_0x321f38);if(_0x7171c4['additionalSearchLead']){var _0x2bbe39={};_0x2bbe39[_0x7171c4[_0xfce4('0x3c')]]=_0x27f2f1;_[_0xfce4('0x37')](_0x4c668e[_0xfce4('0x38')],_0x2bbe39);}return _0x205a4b[_0xfce4('0x26')](_0xfce4('0x3d'))[_0xfce4('0x28')](_0x4c668e,_0x20793e);case _0xfce4('0x1c'):var _0x4aea28=_[_0xfce4('0x35')](_0x321f38);if(_0x7171c4[_0xfce4('0x3e')]){var _0x2bbe39={};_0x2bbe39[_0x7171c4[_0xfce4('0x3e')]]=_0x27f2f1;_[_0xfce4('0x37')](_0x4aea28['$or'],_0x2bbe39);}return _0x205a4b['sobject'](_0xfce4('0x3f'))['find'](_0x4aea28,_0x20793e);default:return null;}})['then'](function(_0x259460){if(_0x259460&&_0x259460[_0xfce4('0x3b')]){var _0x27cf3f=_[_0xfce4('0x40')](_0x259460);if(_0x27cf3f){return BPromise[_0xfce4('0x2c')]({'id':_0x27cf3f['Id'],'name':_0x27cf3f[_0xfce4('0x2d')],'phone':_0x27cf3f['Phone'],'endUserType':_0x27cf3f[_0xfce4('0x41')]['type'][_0xfce4('0x42')]()});}}})[_0xfce4('0x29')](function(_0x1c4a34){if(_0x1c4a34){logger[_0xfce4('0x22')](_0xfce4('0x43'),_0x1c4a34[_0xfce4('0x1a')],_0x27f2f1);return BPromise['resolve'](_0x1c4a34);}else{logger['info'](_0xfce4('0x44'),_0x27f2f1);var _0x226806={'Phone':_0x27f2f1};if(_0x7171c4['moduleCreate']){if(_0x7171c4['moduleCreate']==='contact'){logger['info'](_0xfce4('0x45'),_0x27f2f1,_0x7171c4[_0xfce4('0x46')]);_0x226806['LastName']=_0x543b5e!=='<unknown>'?_0x543b5e:util['format']('Caller\x20-\x20%s',_0x27f2f1);}else if(_0x7171c4[_0xfce4('0x46')]==='lead'){logger['info'](_0xfce4('0x45'),_0x27f2f1,_0x7171c4['moduleCreate']);_0x226806[_0xfce4('0x47')]=_0x543b5e!=='<unknown>'?_0x543b5e:util[_0xfce4('0x48')](_0xfce4('0x49'),_0x27f2f1);_0x226806['Company']='No\x20Company';}else if(_0x7171c4['moduleCreate']==='account'){logger[_0xfce4('0x22')](_0xfce4('0x45'),_0x27f2f1,_0x7171c4[_0xfce4('0x46')]);_0x226806[_0xfce4('0x2d')]=_0x543b5e!==_0xfce4('0x4a')?_0x543b5e:util[_0xfce4('0x48')]('Caller\x20-\x20%s',_0x27f2f1);}else{return null;}}return _0x205a4b[_0xfce4('0x26')](_[_0xfce4('0x4b')](_0x7171c4[_0xfce4('0x46')]))[_0xfce4('0x24')](_0x226806)[_0xfce4('0x29')](function(_0x2daa81){return BPromise['resolve']({'id':_0x2daa81['id'],'endUserType':_0x7171c4[_0xfce4('0x46')]});});}});}function getCustomFields(_0x1c7aa8,_0x41406d){var _0x2f661a={};if(_0x1c7aa8[_0xfce4('0x3b')]>0x0){_['forEach'](_0x1c7aa8,function(_0x254462){if(_[_0xfce4('0x4c')]([_0xfce4('0x4d'),_0xfce4('0x4e')],_0x254462[_0xfce4('0x4f')])&&_0x254462['idField']){_0x2f661a[_0x254462['idField']]=_0x254462['content'][_0xfce4('0x50')]();}else if(_0x254462['type']===_0xfce4('0x51')&&_0x254462[_0xfce4('0x52')]&&_0x254462[_0xfce4('0x53')]){_0x41406d[_0x254462[_0xfce4('0x52')]]&&(_0x2f661a[_0x254462[_0xfce4('0x53')]]=_0x41406d[_0x254462['variableName']][_0xfce4('0x50')]());}else if(_0x254462[_0xfce4('0x4f')]===_0xfce4('0x54')&&_0x254462[_0xfce4('0x55')]&&_0x254462[_0xfce4('0x55')]['name']&&_0x254462[_0xfce4('0x53')]){_0x41406d[_0x254462[_0xfce4('0x55')][_0xfce4('0x56')]['toLowerCase']()]&&(_0x2f661a[_0x254462[_0xfce4('0x53')]]=_0x41406d[_0x254462['Variable'][_0xfce4('0x56')][_0xfce4('0x42')]()][_0xfce4('0x50')]());}});}return _0x2f661a;}function getConnection(_0x58ef3c){var _0x15dad0=_0x58ef3c[_0xfce4('0x57')][_0xfce4('0x58')](_0x58ef3c['securityToken']);var _0xc53759=new jsforce[(_0xfce4('0x59'))]({'oauth2':{'loginUrl':_0x58ef3c[_0xfce4('0x5a')]||'https://login.salesforce.com','clientId':_0x58ef3c['clientId'],'clientSecret':_0x58ef3c['clientSecret']}});return _0xc53759[_0xfce4('0x5b')](_0x58ef3c[_0xfce4('0x5c')],_0x15dad0)[_0xfce4('0x29')](function(){logger['info']('Connection\x20established.');return _0xc53759;});}exports[_0xfce4('0x5d')]=function(_0x5717ca,_0x36e884,_0x4dbdd1,_0x4b90cd,_0x3149be,_0x1e03d3){var _0x1eca35,_0x581093,_0x1ad8ec,_0x628a9c;_0x1e03d3[_0xfce4('0x5e')]=intUtil[_0xfce4('0x5f')](_0x1e03d3['serverUrl']);_0x1e03d3['remoteUri']=intUtil[_0xfce4('0x5f')](_0x1e03d3[_0xfce4('0x5a')]);if(_0x3149be&&_0x3149be[_0xfce4('0x60')]){logger[_0xfce4('0x22')]('[QUEUE]',_0xfce4('0x61'));_0x36e884[_0xfce4('0x62')]=util[_0xfce4('0x48')](_0xfce4('0x63'),_0x1e03d3[_0xfce4('0x5e')],_0x36e884[_0xfce4('0x64')],md5(_0x36e884[_0xfce4('0x64')]));}else{_0x36e884[_0xfce4('0x62')]='';}return getConnection(_0x1e03d3)[_0xfce4('0x29')](function(_0x550f73){_0x628a9c=_0x550f73;return getUser(_0x1e03d3,_0x4b90cd['email'],_0x628a9c);})[_0xfce4('0x29')](function(_0x835fce){_0x1eca35=_0x835fce;return getEndUser(_0x1e03d3,_0x4dbdd1,_0x36e884[_0xfce4('0x65')],_0x36e884['calleridnum'],_0x628a9c);})[_0xfce4('0x29')](function(_0x20f1d8){_0x581093=_0x20f1d8;return getTicket(_0x1e03d3,_0x1eca35,_0x581093,_0x4dbdd1,_0x36e884,_0x4dbdd1[_0xfce4('0x66')],_0x628a9c,'queue');})[_0xfce4('0x29')](function(_0x112192){_0x1ad8ec=_0x112192;logger[_0xfce4('0x22')](_0xfce4('0x67'),_0x1ad8ec['id']);logger[_0xfce4('0x22')](_0xfce4('0x68'),_0x1ad8ec['id'],_0x4b90cd[_0xfce4('0x56')],_0x1e03d3[_0xfce4('0x4f')]);switch(_0x1e03d3[_0xfce4('0x4f')]){case'integrationTab':emit(util[_0xfce4('0x48')](_0xfce4('0x69'),_0x4b90cd[_0xfce4('0x56')]),_0xfce4('0x6a'),{'recordId':_0x1ad8ec['id']});break;case'newTab':emit(util[_0xfce4('0x48')]('user:%s',_0x4b90cd[_0xfce4('0x56')]),_0xfce4('0x6b'),{'uri':util['format']('%s/%s/e',_0x628a9c[_0xfce4('0x6c')],_0x1ad8ec['id'])});break;default:logger['error'](_0xfce4('0x6d'));}})[_0xfce4('0x6e')](function(_0x59bde5){logger[_0xfce4('0x6f')](_0xfce4('0x70'),_0x59bde5);});};exports[_0xfce4('0x71')]=function(_0x4e1d01,_0x1a87f2,_0x2a4bbe,_0x88f078,_0x11341c,_0x15cb74,_0xd8fdd8){var _0x752cb5,_0x541228,_0x21eddb,_0x2a44f7;_0x15cb74[_0xfce4('0x5e')]=intUtil[_0xfce4('0x5f')](_0x15cb74[_0xfce4('0x5e')]);_0x15cb74[_0xfce4('0x5a')]=intUtil['stripTrailingSlash'](_0x15cb74[_0xfce4('0x5a')]);if(_0xd8fdd8&&_0xd8fdd8['recordingFormat']&&_0xd8fdd8[_0xfce4('0x72')]!==_0xfce4('0x73')){logger[_0xfce4('0x22')](_0xfce4('0x74'),_0xfce4('0x61'));_0x1a87f2[_0xfce4('0x62')]=util[_0xfce4('0x48')](_0xfce4('0x63'),_0x15cb74[_0xfce4('0x5e')],_0x1a87f2['uniqueid'],md5(_0x1a87f2[_0xfce4('0x64')]));}return getConnection(_0x15cb74)[_0xfce4('0x29')](function(_0x1e98fe){_0x2a44f7=_0x1e98fe;return getUser(_0x15cb74,_0x88f078[_0xfce4('0x75')],_0x2a44f7);})[_0xfce4('0x29')](function(_0x116492){_0x752cb5=_0x116492;return getEndUser(_0x15cb74,_0x2a4bbe,_0x1a87f2[_0xfce4('0x76')],_0x1a87f2[_0xfce4('0x77')],_0x2a44f7);})['then'](function(_0x3c58e5){_0x541228=_0x3c58e5;return getTicket(_0x15cb74,_0x752cb5,_0x541228,_0x2a4bbe,_0x1a87f2,_0x2a4bbe[_0xfce4('0x66')],_0x2a44f7,'outbound');})[_0xfce4('0x29')](function(_0x2e415c){_0x21eddb=_0x2e415c;logger[_0xfce4('0x22')](_0xfce4('0x78'),_0x21eddb['id']);logger[_0xfce4('0x22')](_0xfce4('0x79'),_0x21eddb['id'],_0x88f078['name'],_0x15cb74[_0xfce4('0x4f')]);switch(_0x15cb74['type']){case'integrationTab':emit(util[_0xfce4('0x48')](_0xfce4('0x69'),_0x88f078[_0xfce4('0x56')]),_0xfce4('0x6a'),{'recordId':_0x21eddb['id']});break;case _0xfce4('0x7a'):emit(util[_0xfce4('0x48')]('user:%s',_0x88f078[_0xfce4('0x56')]),_0xfce4('0x6b'),{'uri':util[_0xfce4('0x48')]('%s/%s/e',_0x2a44f7[_0xfce4('0x6c')],_0x21eddb['id'])});break;default:logger[_0xfce4('0x6f')](_0xfce4('0x74'),_0xfce4('0x7b'));}})[_0xfce4('0x6e')](function(_0x1a2dc1){logger[_0xfce4('0x6f')]('[OUTBOUND]',_0x1a2dc1);});};exports[_0xfce4('0x7c')]=function(_0x5e6b72,_0x17af0a,_0x4e90ba,_0x1a8250,_0xa22305,_0x320f3b){var _0x1b3a22,_0x47db1b,_0x25c284,_0x5c15bb;_0x320f3b[_0xfce4('0x5e')]=intUtil[_0xfce4('0x5f')](_0x320f3b[_0xfce4('0x5e')]);_0x320f3b[_0xfce4('0x5a')]=intUtil['stripTrailingSlash'](_0x320f3b[_0xfce4('0x5a')]);if(_0xa22305&&_0xa22305[_0xfce4('0x60')]){logger[_0xfce4('0x22')]('['+_0x17af0a['lastevent'][_0xfce4('0x7d')]()+']',_0xfce4('0x61'));_0x17af0a[_0xfce4('0x62')]=util[_0xfce4('0x48')](_0xfce4('0x63'),_0x320f3b[_0xfce4('0x5e')],_0x17af0a[_0xfce4('0x64')],md5(_0x17af0a[_0xfce4('0x64')]));}else{_0x17af0a[_0xfce4('0x62')]='';}return getConnection(_0x320f3b)[_0xfce4('0x29')](function(_0x4fc933){_0x5c15bb=_0x4fc933;if(!_[_0xfce4('0x7e')](_0x1a8250)){return getUser(_0x320f3b,_0x1a8250[_0xfce4('0x56')],_0x5c15bb);}else{return getUser(_0x320f3b,null,_0x5c15bb);}})[_0xfce4('0x29')](function(_0x52f290){_0x1b3a22=_0x52f290;return getEndUser(_0x320f3b,_0x4e90ba,_0x17af0a[_0xfce4('0x65')],_0x17af0a[_0xfce4('0x7f')],_0x5c15bb);})[_0xfce4('0x29')](function(_0x19b491){_0x47db1b=_0x19b491;return getTicket(_0x320f3b,_0x1b3a22,_0x47db1b,_0x4e90ba,_0x17af0a,_0x4e90ba[_0xfce4('0x66')],_0x5c15bb);})[_0xfce4('0x29')](function(_0x161fbd){_0x25c284=_0x161fbd;logger[_0xfce4('0x22')]('['+_0x17af0a[_0xfce4('0x80')][_0xfce4('0x7d')]()+']\x20Ticket\x20%s\x20created.',_0x25c284['id']);logger[_0xfce4('0x22')]('['+_0x17af0a[_0xfce4('0x80')][_0xfce4('0x7d')]()+_0xfce4('0x81'),_0x320f3b['type']);})[_0xfce4('0x6e')](function(_0x4ba8ef){logger[_0xfce4('0x6f')]('['+_0x17af0a[_0xfce4('0x80')][_0xfce4('0x7d')]()+']',_0x4ba8ef);});};
\ No newline at end of file
index 700ff4c..8bf5205 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8339=['isNil','email','destcalleridnum','callDirection','unmanaged','format','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','lodash','bluebird','request-promise','util','md5','ioredis','../../../../config/environment','../../../../config/logger','servicenow','redis','localhost','GET','then','result','length','adminId','sys_id','toUpperCase','],\x20getAdminUser\x20crm','catch','error','info','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','active','true','userId','adminEmail','message','],\x20createEndUser\x20input\x20crm','POST','sys_user?','user','endUserNumber','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','forEach','includes','string','type','customField','nameField','toLowerCase','content','toString','picklist','variableName','idField','Variable','name',']\x20getTicket\x20input\x20crm','outbound','incident','assign','Subjects','getString','Descriptions','Fields','ticketNumber','number',']\x20getTicket\x20crm','label','Incident','ticketId','Incident\x20-\x20','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','map','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','emit','trigger:browser:url','username','password','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/'];(function(_0x2fa32b,_0x2ed618){var _0x383f36=function(_0x44e111){while(--_0x44e111){_0x2fa32b['push'](_0x2fa32b['shift']());}};_0x383f36(++_0x2ed618);}(_0x8339,0xe1));var _0x9833=function(_0x45cd35,_0x41147c){_0x45cd35=_0x45cd35-0x0;var _0x16db84=_0x8339[_0x45cd35];return _0x16db84;};'use strict';var _=require(_0x9833('0x0'));var Promise=require(_0x9833('0x1'));var rp=require(_0x9833('0x2'));var util=require(_0x9833('0x3'));var md5=require(_0x9833('0x4'));var Redis=require(_0x9833('0x5'));var intUtil=require('./util');var config=require(_0x9833('0x6'));var logger=require(_0x9833('0x7'))(_0x9833('0x8'));config[_0x9833('0x9')]=_['defaults'](config[_0x9833('0x9')],{'host':_0x9833('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x9833('0x9')]));function getAdminUser(_0x158261,_0x5f2e13,_0x42b0d6,_0x44a42a,_0x423819,_0x413565){return new Promise(function(_0x3bd46d,_0x15a439){var _0xaeacb={'method':_0x9833('0xb'),'uri':_0x44a42a+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x423819+'&'+_0x413565,'auth':_0x5f2e13,'json':!![]};return rp(_0xaeacb)[_0x9833('0xc')](function(_0x23514f){if(_0x23514f[_0x9833('0xd')][_0x9833('0xe')]>0x0){_0x42b0d6[_0x9833('0xf')]=_0x23514f[_0x9833('0xd')][0x0][_0x9833('0x10')];}logger['info']('['+[_0x158261[_0x9833('0x11')]()]+_0x9833('0x12'),_0x42b0d6);_0x3bd46d(_0x42b0d6);})[_0x9833('0x13')](function(_0x1c8c7d){logger[_0x9833('0x14')]('['+[_0x158261[_0x9833('0x11')]()]+']',_0x1c8c7d['message']);_0x15a439(_0x1c8c7d['message']);});});}function getUser(_0x2738d9,_0x7fe003,_0x444359,_0x24f5bf,_0x39aefe){return function(_0x31bfb2){logger[_0x9833('0x15')]('['+[_0x2738d9[_0x9833('0x11')]()]+_0x9833('0x16'),_0x31bfb2);return new Promise(function(_0x10677e,_0x43449e){if(intUtil[_0x9833('0x17')](_0x31bfb2[_0x9833('0x18')])){var _0xe6baf6={'method':_0x9833('0xb'),'uri':_0x444359+_0x9833('0x19')+_0x31bfb2['userEmail']+'&'+_0x24f5bf+'&'+_0x39aefe,'auth':_0x7fe003,'json':!![]};logger[_0x9833('0x15')]('['+[_0x2738d9[_0x9833('0x11')]()]+_0x9833('0x1a'),_0xe6baf6);return rp(_0xe6baf6)[_0x9833('0xc')](function(_0x3e0397){logger[_0x9833('0x15')]('['+[_0x2738d9['toUpperCase']()]+_0x9833('0x1b'),_0x3e0397);if(_0x3e0397[_0x9833('0xd')][_0x9833('0xe')]>0x0&&String(_0x3e0397[_0x9833('0xd')][0x0][_0x9833('0x1c')])===_0x9833('0x1d')){_0x31bfb2[_0x9833('0x1e')]=_0x3e0397[_0x9833('0xd')][0x0]['sys_id'];}else{_0x31bfb2['userId']=_0x31bfb2[_0x9833('0xf')];_0x31bfb2[_0x9833('0x18')]=_0x31bfb2[_0x9833('0x1f')];}logger[_0x9833('0x15')]('['+[_0x2738d9[_0x9833('0x11')]()]+'],\x20getUser\x20crm',_0x31bfb2);_0x10677e(_0x31bfb2);})[_0x9833('0x13')](function(_0x153608){logger[_0x9833('0x14')]('['+[_0x2738d9[_0x9833('0x11')]()]+']',_0x153608[_0x9833('0x20')]);_0x43449e(_0x153608[_0x9833('0x20')]);});}else{logger[_0x9833('0x15')]('['+[_0x2738d9['toUpperCase']()]+']\x20using\x20admin\x20profile');_0x31bfb2[_0x9833('0x1e')]=_0x31bfb2[_0x9833('0xf')];_0x31bfb2[_0x9833('0x18')]=_0x31bfb2[_0x9833('0x1f')];_0x10677e(_0x31bfb2);}});};}function createEndUser(_0xb4615a,_0x4667cb,_0x3b10dd,_0x440a02,_0x3ef108){logger[_0x9833('0x15')]('['+[_0xb4615a['toUpperCase']()]+_0x9833('0x21'),_0x3b10dd);return new Promise(function(_0x4777f3,_0x236234){var _0x1daba9={'method':_0x9833('0x22'),'uri':_0x440a02+_0x9833('0x23')+_0x3ef108,'body':{'user_name':_0x3b10dd['endUserNumber'],'roles':_0x9833('0x24'),'first_name':_0x3b10dd[_0x9833('0x25')],'active':_0x9833('0x1d'),'date_format':_0x9833('0x26'),'phone':_0x3b10dd[_0x9833('0x25')]},'auth':_0x4667cb,'json':!![]};return rp(_0x1daba9)[_0x9833('0xc')](function(_0x14b189){logger[_0x9833('0x15')]('['+[_0xb4615a['toUpperCase']()]+_0x9833('0x27'),_0x14b189[_0x9833('0xd')]);_0x3b10dd[_0x9833('0x28')]=_0x14b189[_0x9833('0xd')]['sys_id'];_0x4777f3(_0x3b10dd);})[_0x9833('0x13')](function(_0x47711e){logger[_0x9833('0x14')]('['+[_0xb4615a[_0x9833('0x11')]()]+']',_0x47711e[_0x9833('0x20')]);_0x236234(_0x47711e[_0x9833('0x20')]);});});}function getEndUser(_0x575e2a,_0xec3d9b,_0x3be3b3,_0x2f0ef4,_0x37c33b){return function(_0x44679c){logger[_0x9833('0x15')]('['+[_0x575e2a[_0x9833('0x11')]()]+_0x9833('0x29'),_0x44679c);return new Promise(function(_0x1d554a,_0x229871){var _0x558c5a={'method':'GET','uri':_0x3be3b3+_0x9833('0x2a')+_0x44679c[_0x9833('0x25')]+'&'+_0x2f0ef4+'&'+_0x37c33b,'auth':_0xec3d9b,'json':!![]};return rp(_0x558c5a)[_0x9833('0xc')](function(_0x2e1f92){if(_0x2e1f92[_0x9833('0xd')]['length']>0x0){_0x44679c['endUserId']=_0x2e1f92[_0x9833('0xd')][0x0][_0x9833('0x10')];logger[_0x9833('0x15')]('['+[_0x575e2a[_0x9833('0x11')]()]+'],\x20getEndUser\x20crm',_0x44679c);_0x1d554a(_0x44679c);}else{return createEndUser(_0x575e2a,_0xec3d9b,_0x44679c,_0x3be3b3,_0x2f0ef4)['then'](function(_0x14484f){logger[_0x9833('0x15')]('['+[_0x575e2a[_0x9833('0x11')]()]+'],\x20createEndUser\x20crm',_0x14484f);_0x1d554a(_0x14484f);});}})[_0x9833('0x13')](function(_0x25a923){logger[_0x9833('0x14')]('['+[_0x575e2a[_0x9833('0x11')]()]+']',_0x25a923[_0x9833('0x20')]);_0x229871(_0x25a923[_0x9833('0x20')]);});});};}function getCustomFields(_0x2eaedb,_0x26c08c){var _0xa99480={};if(_0x2eaedb[_0x9833('0xe')]>0x0){_[_0x9833('0x2b')](_0x2eaedb,function(_0x5047f1){if(_[_0x9833('0x2c')]([_0x9833('0x2d'),'picklist'],_0x5047f1[_0x9833('0x2e')])&&_0x5047f1['nameField']&&!_0x5047f1[_0x9833('0x2f')]){_0xa99480[_0x5047f1[_0x9833('0x30')][_0x9833('0x31')]()]=_0x5047f1[_0x9833('0x32')][_0x9833('0x33')]();}else if(_['includes']([_0x9833('0x2d'),_0x9833('0x34')],_0x5047f1['type'])&&_0x5047f1['idField']&&_0x5047f1[_0x9833('0x2f')]){_0xa99480[_0x5047f1['idField'][_0x9833('0x31')]()]=_0x5047f1[_0x9833('0x32')][_0x9833('0x33')]();}else if(_0x5047f1['type']==='variable'&&_0x5047f1[_0x9833('0x35')]&&_0x5047f1['idField']&&_0x5047f1[_0x9833('0x2f')]){_0xa99480[_0x5047f1[_0x9833('0x36')][_0x9833('0x31')]()]=_0x26c08c[_0x5047f1[_0x9833('0x35')]][_0x9833('0x33')]();}else if(_0x5047f1[_0x9833('0x2e')]==='customVariable'&&_0x5047f1['Variable']&&_0x5047f1[_0x9833('0x37')][_0x9833('0x38')]&&_0x5047f1['idField']&&_0x5047f1['customField']){_0xa99480[_0x5047f1[_0x9833('0x36')][_0x9833('0x31')]()]=_0x26c08c[_0x5047f1[_0x9833('0x37')][_0x9833('0x38')][_0x9833('0x31')]()][_0x9833('0x33')]();}});}return _0xa99480;}function getTicket(_0x10bab4,_0x514301,_0x542d32,_0x175d4e,_0x2c6de9,_0x3b21ea){return function(_0x597439){logger['info']('['+[_0x10bab4[_0x9833('0x11')]()]+_0x9833('0x39'),_0x597439);return new Promise(function(_0x24515f,_0x33c2f5){var _0x508a36=_0x10bab4[_0x9833('0x31')]()===_0x9833('0x3a')?_0x597439[_0x9833('0x1e')]:_0x597439[_0x9833('0x28')];var _0x9b2f24={'method':_0x9833('0x22'),'uri':_0x542d32+_0x9833('0x3b')+'?'+_0x3b21ea,'body':Object[_0x9833('0x3c')]({},{'active':'true','caller_id':_0x508a36,'assigned_to':_0x597439[_0x9833('0x1e')],'short_description':intUtil['getString'](_0x175d4e[_0x9833('0x3d')],_0x2c6de9,'\x20'),'description':intUtil[_0x9833('0x3e')](_0x175d4e[_0x9833('0x3f')],_0x2c6de9,'\x0a')},getCustomFields(_0x175d4e[_0x9833('0x40')],_0x2c6de9)),'auth':_0x514301,'json':!![]};return rp(_0x9b2f24)['then'](function(_0x17ad58){logger['info']('['+[_0x10bab4[_0x9833('0x11')]()]+']\x20POST\x20incident\x20entity\x20schema',_0x17ad58[_0x9833('0xd')]);_0x597439['ticketId']=_0x17ad58['result'][_0x9833('0x10')];_0x597439[_0x9833('0x41')]=_0x17ad58[_0x9833('0xd')][_0x9833('0x42')];logger['info']('['+[_0x10bab4['toUpperCase']()]+_0x9833('0x43'),_0x597439);_0x24515f(_0x597439);})[_0x9833('0x13')](function(_0x51878c){logger[_0x9833('0x14')]('['+[_0x10bab4[_0x9833('0x11')]()]+']',_0x51878c[_0x9833('0x20')]);_0x33c2f5(_0x51878c[_0x9833('0x20')]);});});};}function createRemoteTag(_0x2ddd00,_0x20f605,_0x4d3d7f,_0x11e102){return new Promise(function(_0x342871,_0x5f0b49){var _0x4204fd={'method':_0x9833('0x22'),'uri':_0x4d3d7f+_0x9833('0x44')+'?'+_0x11e102,'body':{'short_description':_0x2ddd00,'global':!![],'active':!![],'name':_0x2ddd00},'auth':_0x20f605,'json':!![]};return rp(_0x4204fd)['then'](function(_0x386a83){var _0x4c161f=_0x386a83[_0x9833('0xd')][_0x9833('0x10')];_0x342871(_0x4c161f);});});}function getRemoteTag(_0x35986b,_0x4f5f10,_0x385636,_0x4f082d,_0x4a1aa5){return new Promise(function(_0x278fad,_0x36fc41){var _0x36f294={'method':_0x9833('0xb'),'uri':_0x385636+_0x9833('0x44')+'?sysparm_query=name%3D'+_0x35986b+'&'+_0x4f082d,'auth':_0x4f5f10,'json':!![]};return rp(_0x36f294)[_0x9833('0xc')](function(_0xe71e0c){if(_0xe71e0c[_0x9833('0xd')][_0x9833('0xe')]>0x0){var _0x46222f=_0xe71e0c[_0x9833('0xd')][0x0]['sys_id'];_0x278fad(_0x46222f);}else{return createRemoteTag(_0x35986b,_0x4f5f10,_0x385636,_0x4f082d)[_0x9833('0xc')](function(_0x14141b){_0x278fad(_0x14141b);});}});});}function assignTagToIncident(_0x4c1fbb,_0x35a2b7,_0x553a52,_0x4d4a12,_0x58e5a8){return new Promise(function(_0x34512f,_0x1ca00d){var _0x244e16={'method':'POST','uri':_0x553a52+'label_entry'+'?'+_0x58e5a8,'body':{'label':_0x4c1fbb,'table':_0x9833('0x3b'),'id_type':_0x9833('0x45'),'table_key':_0x4d4a12[_0x9833('0x46')],'title':_0x9833('0x47')+_0x4d4a12[_0x9833('0x41')],'id_display':_0x4d4a12[_0x9833('0x41')]},'auth':_0x35a2b7,'json':!![]};return rp(_0x244e16)[_0x9833('0xc')](function(_0x20c44c){_0x34512f();})[_0x9833('0x13')](function(){_0x34512f();});});}function manageTags(_0xe2b7ef,_0x1844cd,_0x1e8cfa,_0xbd5cbf,_0x35a135,_0x4ff04b,_0x1a1dc5){return new Promise(function(_0x294c46,_0x5433e9){var _0x338ef4=[];_0x1844cd['forEach'](function(_0x160fb3){_0x338ef4[_0x9833('0x48')](getRemoteTag(_0x160fb3,_0x1e8cfa,_0xbd5cbf,_0x4ff04b,_0x1a1dc5));});return Promise[_0x9833('0x49')](_0x338ef4)[_0x9833('0xc')](function(_0x3c2989){if(_0x3c2989['length']){logger['info']('['+[_0xe2b7ef[_0x9833('0x11')]()]+_0x9833('0x4a'),_0x3c2989);var _0x31f45b=[];_0x3c2989[_0x9833('0x2b')](function(_0x11c585){_0x31f45b[_0x9833('0x48')](assignTagToIncident(_0x11c585,_0x1e8cfa,_0xbd5cbf,_0x35a135,_0x4ff04b));});return Promise[_0x9833('0x49')](_0x31f45b)[_0x9833('0xc')](function(){_0x294c46();})[_0x9833('0x13')](function(){_0x294c46();});}else{_0x294c46();}});});}function getTags(_0x256a55,_0x35945d,_0x172118,_0x1a8f82,_0x3b8333,_0x31c44b){return function(_0x5e5972){return new Promise(function(_0x3e6a43,_0x2ab6d4){var _0x470596=[];var _0x1d2321=_0x1a8f82[_0x9833('0x4b')];if(_0x1d2321&&_0x1d2321[_0x9833('0xe')]>0x0){_0x470596=_[_0x9833('0x4c')](_0x1d2321,_0x9833('0x38'));}if(_0x470596[_0x9833('0xe')]>0x0){return manageTags(_0x256a55,_0x470596,_0x35945d,_0x172118,_0x5e5972,_0x3b8333,_0x31c44b)['then'](function(){_0x3e6a43(_0x5e5972);});}else{_0x3e6a43(_0x5e5972);}});};}function emit(_0x29b068,_0x15319c,_0x56e812){var _0x433d89='%26sysparm_record_target%3Dincident'+_0x9833('0x4d')+_0x9833('0x4e')+_0x9833('0x4f');var _0x4f4ce5={'uri':_0x29b068+_0x9833('0x50')+_0x56e812+_0x433d89};io['to'](util['format']('user:%s',_0x15319c))[_0x9833('0x51')](_0x9833('0x52'),_0x4f4ce5);}exports['cs']=function(_0x17dcaa,_0x2e107,_0x42d6fb,_0x2ea91b,_0x23de96,_0x2aa460,_0x431cd8,_0x4bd562){var _0x36683f={};var _0xa43de8={'user':_0x2aa460[_0x9833('0x53')],'pass':_0x2aa460[_0x9833('0x54')]};var _0x13edbb='sysparm_limit=1';var _0x3e3554=_0x9833('0x55');_0x2aa460[_0x9833('0x56')]=intUtil[_0x9833('0x57')](_0x2aa460[_0x9833('0x56')]);_0x2aa460['serverUrl']=intUtil[_0x9833('0x57')](_0x2aa460[_0x9833('0x58')]);var _0x4ee09b=util['format'](_0x9833('0x59'),_0x2aa460[_0x9833('0x56')]);_0x36683f[_0x9833('0x18')]=!_[_0x9833('0x5a')](_0x2ea91b)?_0x2ea91b[_0x9833('0x5b')]:null;_0x36683f[_0x9833('0x1f')]=_0x2aa460[_0x9833('0x5b')];_0x36683f[_0x9833('0x25')]=_0x4bd562[_0x9833('0x31')]()==='outbound'?_0x2e107[_0x9833('0x5c')]:_0x2e107['calleridnum'];_0x36683f[_0x9833('0x5d')]=_0x4bd562==='queue'||_0x4bd562===_0x9833('0x5e')?'queue':'outbound';var _0x2f893b=util[_0x9833('0x5f')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2aa460[_0x9833('0x58')],_0x2e107['uniqueid'],md5(_0x2e107[_0x9833('0x60')]));if(_0x23de96&&_0x23de96[_0x9833('0x61')]){logger[_0x9833('0x15')](_0x9833('0x62'),_0x9833('0x63'));_0x2e107['recordingURL']=_0x2f893b;}else if(_0x431cd8&&_0x431cd8['recordingFormat']&&_0x431cd8[_0x9833('0x64')]!==_0x9833('0x65')){logger[_0x9833('0x15')](_0x9833('0x66'),_0x9833('0x63'));_0x2e107['recordingURL']=_0x2f893b;}else{_0x2e107['recordingURL']='';}return getAdminUser(_0x4bd562,_0xa43de8,_0x36683f,_0x4ee09b,_0x3e3554,_0x13edbb)[_0x9833('0xc')](getUser(_0x4bd562,_0xa43de8,_0x4ee09b,_0x3e3554,_0x13edbb))[_0x9833('0xc')](getEndUser(_0x4bd562,_0xa43de8,_0x4ee09b,_0x3e3554,_0x13edbb))[_0x9833('0xc')](getTicket(_0x4bd562,_0xa43de8,_0x4ee09b,_0x42d6fb,_0x2e107,_0x3e3554))[_0x9833('0xc')](function(_0x2d4c3f){logger[_0x9833('0x15')](util[_0x9833('0x5f')](_0x9833('0x67'),_0x2d4c3f[_0x9833('0x46')]));logger[_0x9833('0x15')](util[_0x9833('0x5f')]('call\x20direction:\x20%s',_0x4bd562));if(_0x4bd562!==_0x9833('0x5e')){logger[_0x9833('0x15')]('['+[_0x4bd562[_0x9833('0x11')]()]+']',_0x9833('0x68'));emit(_0x2aa460[_0x9833('0x56')],_0x2ea91b[_0x9833('0x38')],_0x2d4c3f[_0x9833('0x46')]);}})[_0x9833('0x13')](function(_0x229d51){logger['error']('['+[_0x4bd562[_0x9833('0x11')]()]+']\x20Error\x20running\x20ServiceNow\x20integration',util['inspect'](_0x229d51,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x7a2d=['remoteUri','isNil','email','calleridnum','queue','unmanaged','outbound','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','bluebird','request-promise','util','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','localhost','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','sys_id','info','],\x20getAdminUser\x20crm','catch','error','toUpperCase','message','],\x20getUser\x20input\x20crm','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','true','userId','adminEmail',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','endUserNumber','user','endUserId','],\x20getEndUser\x20input\x20crm','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','includes','string','picklist','type','nameField','customField','content','toString','toLowerCase','variableName','idField','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','incident','assign','getString','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','number','label','?sysparm_query=name%3D','Incident\x20-\x20','ticketNumber','forEach','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','emit','sysparm_limit=1','sysparm_display_value=true','stripTrailingSlash','serverUrl','format','%s/api/now/table/'];(function(_0xcb10b6,_0x1a0432){var _0x55d485=function(_0x473049){while(--_0x473049){_0xcb10b6['push'](_0xcb10b6['shift']());}};_0x55d485(++_0x1a0432);}(_0x7a2d,0x14d));var _0xd7a2=function(_0x5b5f9b,_0x52aae){_0x5b5f9b=_0x5b5f9b-0x0;var _0x51e05b=_0x7a2d[_0x5b5f9b];return _0x51e05b;};'use strict';var _=require('lodash');var Promise=require(_0xd7a2('0x0'));var rp=require(_0xd7a2('0x1'));var util=require(_0xd7a2('0x2'));var md5=require(_0xd7a2('0x3'));var Redis=require(_0xd7a2('0x4'));var intUtil=require(_0xd7a2('0x5'));var config=require(_0xd7a2('0x6'));var logger=require(_0xd7a2('0x7'))(_0xd7a2('0x8'));config[_0xd7a2('0x9')]=_[_0xd7a2('0xa')](config[_0xd7a2('0x9')],{'host':_0xd7a2('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function getAdminUser(_0x287643,_0x124225,_0x1c6694,_0x5cdb2d,_0xfac334,_0x114dd1){return new Promise(function(_0xfc35b8,_0x2cc178){var _0x51c23c={'method':_0xd7a2('0xc'),'uri':_0x5cdb2d+_0xd7a2('0xd')+'&'+_0xfac334+'&'+_0x114dd1,'auth':_0x124225,'json':!![]};return rp(_0x51c23c)[_0xd7a2('0xe')](function(_0x4a8242){if(_0x4a8242[_0xd7a2('0xf')][_0xd7a2('0x10')]>0x0){_0x1c6694[_0xd7a2('0x11')]=_0x4a8242[_0xd7a2('0xf')][0x0][_0xd7a2('0x12')];}logger[_0xd7a2('0x13')]('['+[_0x287643['toUpperCase']()]+_0xd7a2('0x14'),_0x1c6694);_0xfc35b8(_0x1c6694);})[_0xd7a2('0x15')](function(_0x36e914){logger[_0xd7a2('0x16')]('['+[_0x287643[_0xd7a2('0x17')]()]+']',_0x36e914[_0xd7a2('0x18')]);_0x2cc178(_0x36e914[_0xd7a2('0x18')]);});});}function getUser(_0x4ffcf8,_0xd29692,_0x4aa5f2,_0x509129,_0x9644cc){return function(_0x2a584a){logger[_0xd7a2('0x13')]('['+[_0x4ffcf8[_0xd7a2('0x17')]()]+_0xd7a2('0x19'),_0x2a584a);return new Promise(function(_0xe20c05,_0xc8ec54){if(intUtil['validateEmail'](_0x2a584a[_0xd7a2('0x1a')])){var _0x4fa438={'method':_0xd7a2('0xc'),'uri':_0x4aa5f2+_0xd7a2('0x1b')+_0x2a584a[_0xd7a2('0x1a')]+'&'+_0x509129+'&'+_0x9644cc,'auth':_0xd29692,'json':!![]};logger[_0xd7a2('0x13')]('['+[_0x4ffcf8[_0xd7a2('0x17')]()]+_0xd7a2('0x1c'),_0x4fa438);return rp(_0x4fa438)[_0xd7a2('0xe')](function(_0x197aac){logger['info']('['+[_0x4ffcf8[_0xd7a2('0x17')]()]+_0xd7a2('0x1d'),_0x197aac);if(_0x197aac[_0xd7a2('0xf')][_0xd7a2('0x10')]>0x0&&String(_0x197aac[_0xd7a2('0xf')][0x0]['active'])===_0xd7a2('0x1e')){_0x2a584a[_0xd7a2('0x1f')]=_0x197aac[_0xd7a2('0xf')][0x0][_0xd7a2('0x12')];}else{_0x2a584a[_0xd7a2('0x1f')]=_0x2a584a[_0xd7a2('0x11')];_0x2a584a[_0xd7a2('0x1a')]=_0x2a584a[_0xd7a2('0x20')];}logger[_0xd7a2('0x13')]('['+[_0x4ffcf8[_0xd7a2('0x17')]()]+'],\x20getUser\x20crm',_0x2a584a);_0xe20c05(_0x2a584a);})[_0xd7a2('0x15')](function(_0x8e287e){logger['error']('['+[_0x4ffcf8[_0xd7a2('0x17')]()]+']',_0x8e287e['message']);_0xc8ec54(_0x8e287e[_0xd7a2('0x18')]);});}else{logger[_0xd7a2('0x13')]('['+[_0x4ffcf8['toUpperCase']()]+_0xd7a2('0x21'));_0x2a584a[_0xd7a2('0x1f')]=_0x2a584a[_0xd7a2('0x11')];_0x2a584a[_0xd7a2('0x1a')]=_0x2a584a['adminEmail'];_0xe20c05(_0x2a584a);}});};}function createEndUser(_0x1d445e,_0x19b165,_0x130e13,_0x3894f8,_0x24fee6){logger['info']('['+[_0x1d445e[_0xd7a2('0x17')]()]+_0xd7a2('0x22'),_0x130e13);return new Promise(function(_0x4def1d,_0x1583b6){var _0x557625={'method':_0xd7a2('0x23'),'uri':_0x3894f8+'sys_user?'+_0x24fee6,'body':{'user_name':_0x130e13[_0xd7a2('0x24')],'roles':_0xd7a2('0x25'),'first_name':_0x130e13['endUserNumber'],'active':'true','date_format':'System','phone':_0x130e13[_0xd7a2('0x24')]},'auth':_0x19b165,'json':!![]};return rp(_0x557625)[_0xd7a2('0xe')](function(_0x51bd33){logger[_0xd7a2('0x13')]('['+[_0x1d445e[_0xd7a2('0x17')]()]+'],\x20EndUser\x20schema',_0x51bd33['result']);_0x130e13[_0xd7a2('0x26')]=_0x51bd33[_0xd7a2('0xf')][_0xd7a2('0x12')];_0x4def1d(_0x130e13);})['catch'](function(_0x55328f){logger[_0xd7a2('0x16')]('['+[_0x1d445e['toUpperCase']()]+']',_0x55328f[_0xd7a2('0x18')]);_0x1583b6(_0x55328f[_0xd7a2('0x18')]);});});}function getEndUser(_0x5b9294,_0x8339c2,_0x1bccac,_0x1390bc,_0x26d5cf){return function(_0x64c3bc){logger['info']('['+[_0x5b9294[_0xd7a2('0x17')]()]+_0xd7a2('0x27'),_0x64c3bc);return new Promise(function(_0x340e7f,_0x4d3c58){var _0x2a9fcb={'method':_0xd7a2('0xc'),'uri':_0x1bccac+'sys_user?sysparm_query=phone%3D'+_0x64c3bc['endUserNumber']+'&'+_0x1390bc+'&'+_0x26d5cf,'auth':_0x8339c2,'json':!![]};return rp(_0x2a9fcb)[_0xd7a2('0xe')](function(_0x31d490){if(_0x31d490['result'][_0xd7a2('0x10')]>0x0){_0x64c3bc[_0xd7a2('0x26')]=_0x31d490[_0xd7a2('0xf')][0x0][_0xd7a2('0x12')];logger['info']('['+[_0x5b9294['toUpperCase']()]+_0xd7a2('0x28'),_0x64c3bc);_0x340e7f(_0x64c3bc);}else{return createEndUser(_0x5b9294,_0x8339c2,_0x64c3bc,_0x1bccac,_0x1390bc)[_0xd7a2('0xe')](function(_0x2e6fa3){logger[_0xd7a2('0x13')]('['+[_0x5b9294[_0xd7a2('0x17')]()]+_0xd7a2('0x29'),_0x2e6fa3);_0x340e7f(_0x2e6fa3);});}})[_0xd7a2('0x15')](function(_0x592ca6){logger[_0xd7a2('0x16')]('['+[_0x5b9294['toUpperCase']()]+']',_0x592ca6[_0xd7a2('0x18')]);_0x4d3c58(_0x592ca6[_0xd7a2('0x18')]);});});};}function getCustomFields(_0x577e06,_0xa064d2){var _0xc96d35={};if(_0x577e06['length']>0x0){_['forEach'](_0x577e06,function(_0x53d67a){if(_[_0xd7a2('0x2a')]([_0xd7a2('0x2b'),_0xd7a2('0x2c')],_0x53d67a[_0xd7a2('0x2d')])&&_0x53d67a[_0xd7a2('0x2e')]&&!_0x53d67a[_0xd7a2('0x2f')]){_0xc96d35[_0x53d67a[_0xd7a2('0x2e')]['toLowerCase']()]=_0x53d67a[_0xd7a2('0x30')][_0xd7a2('0x31')]();}else if(_[_0xd7a2('0x2a')]([_0xd7a2('0x2b'),_0xd7a2('0x2c')],_0x53d67a[_0xd7a2('0x2d')])&&_0x53d67a['idField']&&_0x53d67a[_0xd7a2('0x2f')]){_0xc96d35[_0x53d67a['idField'][_0xd7a2('0x32')]()]=_0x53d67a['content'][_0xd7a2('0x31')]();}else if(_0x53d67a['type']==='variable'&&_0x53d67a[_0xd7a2('0x33')]&&_0x53d67a['idField']&&_0x53d67a['customField']){_0xc96d35[_0x53d67a[_0xd7a2('0x34')][_0xd7a2('0x32')]()]=_0xa064d2[_0x53d67a[_0xd7a2('0x33')]]['toString']();}else if(_0x53d67a[_0xd7a2('0x2d')]===_0xd7a2('0x35')&&_0x53d67a['Variable']&&_0x53d67a[_0xd7a2('0x36')]['name']&&_0x53d67a[_0xd7a2('0x34')]&&_0x53d67a['customField']){_0xc96d35[_0x53d67a['idField'][_0xd7a2('0x32')]()]=_0xa064d2[_0x53d67a[_0xd7a2('0x36')][_0xd7a2('0x37')][_0xd7a2('0x32')]()][_0xd7a2('0x31')]();}});}return _0xc96d35;}function getTicket(_0x1df6c2,_0x414a60,_0x53f5ff,_0x2301c7,_0x445c8a,_0x22b8f4){return function(_0x3574a7){logger[_0xd7a2('0x13')]('['+[_0x1df6c2[_0xd7a2('0x17')]()]+_0xd7a2('0x38'),_0x3574a7);return new Promise(function(_0x2a6e67,_0x1d9232){var _0x743827=_0x1df6c2[_0xd7a2('0x32')]()==='outbound'?_0x3574a7[_0xd7a2('0x1f')]:_0x3574a7['endUserId'];var _0x22d626={'method':_0xd7a2('0x23'),'uri':_0x53f5ff+_0xd7a2('0x39')+'?'+_0x22b8f4,'body':Object[_0xd7a2('0x3a')]({},{'active':_0xd7a2('0x1e'),'caller_id':_0x743827,'assigned_to':_0x3574a7[_0xd7a2('0x1f')],'short_description':intUtil[_0xd7a2('0x3b')](_0x2301c7['Subjects'],_0x445c8a,'\x20'),'description':intUtil[_0xd7a2('0x3b')](_0x2301c7[_0xd7a2('0x3c')],_0x445c8a,'\x0a')},getCustomFields(_0x2301c7[_0xd7a2('0x3d')],_0x445c8a)),'auth':_0x414a60,'json':!![]};return rp(_0x22d626)['then'](function(_0xaee636){logger['info']('['+[_0x1df6c2[_0xd7a2('0x17')]()]+_0xd7a2('0x3e'),_0xaee636['result']);_0x3574a7[_0xd7a2('0x3f')]=_0xaee636[_0xd7a2('0xf')]['sys_id'];_0x3574a7['ticketNumber']=_0xaee636['result'][_0xd7a2('0x40')];logger[_0xd7a2('0x13')]('['+[_0x1df6c2[_0xd7a2('0x17')]()]+']\x20getTicket\x20crm',_0x3574a7);_0x2a6e67(_0x3574a7);})[_0xd7a2('0x15')](function(_0x31dd4b){logger['error']('['+[_0x1df6c2[_0xd7a2('0x17')]()]+']',_0x31dd4b[_0xd7a2('0x18')]);_0x1d9232(_0x31dd4b[_0xd7a2('0x18')]);});});};}function createRemoteTag(_0x32fb57,_0x48ec65,_0x4afd98,_0x1f4af9){return new Promise(function(_0x30f29b,_0x345bea){var _0x16d4b0={'method':_0xd7a2('0x23'),'uri':_0x4afd98+_0xd7a2('0x41')+'?'+_0x1f4af9,'body':{'short_description':_0x32fb57,'global':!![],'active':!![],'name':_0x32fb57},'auth':_0x48ec65,'json':!![]};return rp(_0x16d4b0)[_0xd7a2('0xe')](function(_0x378da8){var _0x4e7515=_0x378da8[_0xd7a2('0xf')]['sys_id'];_0x30f29b(_0x4e7515);});});}function getRemoteTag(_0x3983cb,_0x1604c1,_0x334581,_0x242f02,_0x682696){return new Promise(function(_0x23522b,_0x1f5f76){var _0x14d464={'method':_0xd7a2('0xc'),'uri':_0x334581+_0xd7a2('0x41')+_0xd7a2('0x42')+_0x3983cb+'&'+_0x242f02,'auth':_0x1604c1,'json':!![]};return rp(_0x14d464)['then'](function(_0x3cf7ca){if(_0x3cf7ca['result']['length']>0x0){var _0x31495f=_0x3cf7ca[_0xd7a2('0xf')][0x0][_0xd7a2('0x12')];_0x23522b(_0x31495f);}else{return createRemoteTag(_0x3983cb,_0x1604c1,_0x334581,_0x242f02)[_0xd7a2('0xe')](function(_0x1e8e03){_0x23522b(_0x1e8e03);});}});});}function assignTagToIncident(_0x43235b,_0x247228,_0x589663,_0x3f37d2,_0x4dc668){return new Promise(function(_0xde176c,_0x5e141b){var _0x37d993={'method':_0xd7a2('0x23'),'uri':_0x589663+'label_entry'+'?'+_0x4dc668,'body':{'label':_0x43235b,'table':_0xd7a2('0x39'),'id_type':'Incident','table_key':_0x3f37d2[_0xd7a2('0x3f')],'title':_0xd7a2('0x43')+_0x3f37d2[_0xd7a2('0x44')],'id_display':_0x3f37d2[_0xd7a2('0x44')]},'auth':_0x247228,'json':!![]};return rp(_0x37d993)[_0xd7a2('0xe')](function(_0xdfdf07){_0xde176c();})[_0xd7a2('0x15')](function(){_0xde176c();});});}function manageTags(_0x448d9f,_0xb54ac9,_0x321bfd,_0x74a367,_0x3eab16,_0x53e34a,_0x35f950){return new Promise(function(_0x4e269a,_0x354503){var _0x2872e3=[];_0xb54ac9[_0xd7a2('0x45')](function(_0x2c769f){_0x2872e3[_0xd7a2('0x46')](getRemoteTag(_0x2c769f,_0x321bfd,_0x74a367,_0x53e34a,_0x35f950));});return Promise[_0xd7a2('0x47')](_0x2872e3)['then'](function(_0x510009){if(_0x510009['length']){logger['info']('['+[_0x448d9f['toUpperCase']()]+_0xd7a2('0x48'),_0x510009);var _0x44e813=[];_0x510009[_0xd7a2('0x45')](function(_0x435252){_0x44e813['push'](assignTagToIncident(_0x435252,_0x321bfd,_0x74a367,_0x3eab16,_0x53e34a));});return Promise['all'](_0x44e813)[_0xd7a2('0xe')](function(){_0x4e269a();})['catch'](function(){_0x4e269a();});}else{_0x4e269a();}});});}function getTags(_0x5ed67b,_0x5db93a,_0x475240,_0x36b73a,_0x1b7fd6,_0x30fb10){return function(_0x38ab8e){return new Promise(function(_0x503c49,_0x307520){var _0x4eed8c=[];var _0x275c54=_0x36b73a[_0xd7a2('0x49')];if(_0x275c54&&_0x275c54['length']>0x0){_0x4eed8c=_[_0xd7a2('0x4a')](_0x275c54,_0xd7a2('0x37'));}if(_0x4eed8c[_0xd7a2('0x10')]>0x0){return manageTags(_0x5ed67b,_0x4eed8c,_0x5db93a,_0x475240,_0x38ab8e,_0x1b7fd6,_0x30fb10)['then'](function(){_0x503c49(_0x38ab8e);});}else{_0x503c49(_0x38ab8e);}});};}function emit(_0x1e5a5b,_0x4329a4,_0x17c354){var _0x3c252d=_0xd7a2('0x4b')+_0xd7a2('0x4c')+_0xd7a2('0x4d')+'%255EORDERBYDESCnumber';var _0x71d925={'uri':_0x1e5a5b+_0xd7a2('0x4e')+_0x17c354+_0x3c252d};io['to'](util['format'](_0xd7a2('0x4f'),_0x4329a4))[_0xd7a2('0x50')]('trigger:browser:url',_0x71d925);}exports['cs']=function(_0x3de448,_0x3f8afa,_0x3fd34d,_0x1b646b,_0x432615,_0x467eaa,_0x4d0032,_0x1af028){var _0x40a3ae={};var _0x315f1c={'user':_0x467eaa['username'],'pass':_0x467eaa['password']};var _0x1edd37=_0xd7a2('0x51');var _0x456504=_0xd7a2('0x52');_0x467eaa['remoteUri']=intUtil[_0xd7a2('0x53')](_0x467eaa['remoteUri']);_0x467eaa['serverUrl']=intUtil[_0xd7a2('0x53')](_0x467eaa[_0xd7a2('0x54')]);var _0x21b255=util[_0xd7a2('0x55')](_0xd7a2('0x56'),_0x467eaa[_0xd7a2('0x57')]);_0x40a3ae[_0xd7a2('0x1a')]=!_[_0xd7a2('0x58')](_0x1b646b)?_0x1b646b[_0xd7a2('0x59')]:null;_0x40a3ae[_0xd7a2('0x20')]=_0x467eaa[_0xd7a2('0x59')];_0x40a3ae[_0xd7a2('0x24')]=_0x1af028[_0xd7a2('0x32')]()==='outbound'?_0x3f8afa['destcalleridnum']:_0x3f8afa[_0xd7a2('0x5a')];_0x40a3ae['callDirection']=_0x1af028===_0xd7a2('0x5b')||_0x1af028===_0xd7a2('0x5c')?_0xd7a2('0x5b'):_0xd7a2('0x5d');var _0x158fbd=util[_0xd7a2('0x55')](_0xd7a2('0x5e'),_0x467eaa[_0xd7a2('0x54')],_0x3f8afa[_0xd7a2('0x5f')],md5(_0x3f8afa[_0xd7a2('0x5f')]));if(_0x432615&&_0x432615[_0xd7a2('0x60')]){logger[_0xd7a2('0x13')]('[QUEUE]',_0xd7a2('0x61'));_0x3f8afa[_0xd7a2('0x62')]=_0x158fbd;}else if(_0x4d0032&&_0x4d0032[_0xd7a2('0x63')]&&_0x4d0032[_0xd7a2('0x63')]!=='none'){logger['info'](_0xd7a2('0x64'),_0xd7a2('0x61'));_0x3f8afa[_0xd7a2('0x62')]=_0x158fbd;}else{_0x3f8afa[_0xd7a2('0x62')]='';}return getAdminUser(_0x1af028,_0x315f1c,_0x40a3ae,_0x21b255,_0x456504,_0x1edd37)[_0xd7a2('0xe')](getUser(_0x1af028,_0x315f1c,_0x21b255,_0x456504,_0x1edd37))[_0xd7a2('0xe')](getEndUser(_0x1af028,_0x315f1c,_0x21b255,_0x456504,_0x1edd37))[_0xd7a2('0xe')](getTicket(_0x1af028,_0x315f1c,_0x21b255,_0x3fd34d,_0x3f8afa,_0x456504))[_0xd7a2('0xe')](function(_0x36f28a){logger[_0xd7a2('0x13')](util['format'](_0xd7a2('0x65'),_0x36f28a[_0xd7a2('0x3f')]));logger[_0xd7a2('0x13')](util[_0xd7a2('0x55')](_0xd7a2('0x66'),_0x1af028));if(_0x1af028!=='unmanaged'){logger[_0xd7a2('0x13')]('['+[_0x1af028[_0xd7a2('0x17')]()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x467eaa['remoteUri'],_0x1b646b[_0xd7a2('0x37')],_0x36f28a[_0xd7a2('0x3f')]);}})[_0xd7a2('0x15')](function(_0x1b33ec){logger[_0xd7a2('0x16')]('['+[_0x1af028[_0xd7a2('0x17')]()]+_0xd7a2('0x67'),util[_0xd7a2('0x68')](_0x1b33ec,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 5320242..125c6bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4652=['Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','Contacts','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','first_name','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','debug','[HTTP]','map','string','customField','nameField','toLowerCase','toString','type','custom_fields','push','content','customVariable','Variable','login','username','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','remoteUri','stripTrailingSlash','serverUrl','uri','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','recordingURL','uniqueid','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','contacts','version','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','catch','error','outbound','recordingFormat','[OUTBOUND]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','users','charAt','unmanaged','lastevent','toUpperCase','request-promise','bluebird','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','sugarcrm','redis','defaults','localhost','POST','emit','Creating\x20new\x20ticket...','name','getString','Subjects','created_by','description','Descriptions','date_start','toISOString','slice','replace','duration_hours','duration_minutes','parent_id','parent_type','parent_name','direction','length','forEach','variableName','idField','JSON','stringify','Calls','apiKey','get_server_info','isNil','info','Getting\x20agent\x20with\x20name','get_entry_list','format','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','find','value','resolve','name_value_list','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!'];(function(_0x254076,_0x5e7b8d){var _0x21a93e=function(_0x26aa78){while(--_0x26aa78){_0x254076['push'](_0x254076['shift']());}};_0x21a93e(++_0x5e7b8d);}(_0x4652,0x1b3));var _0x2465=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x4652[_0x122ef9];return _0x42fba0;};'use strict';var _=require('lodash');var rp=require(_0x2465('0x0'));var BPromise=require(_0x2465('0x1'));var md5=require(_0x2465('0x2'));var util=require('util');var Redis=require(_0x2465('0x3'));var intUtil=require(_0x2465('0x4'));var config=require(_0x2465('0x5'));var logger=require(_0x2465('0x6'))(_0x2465('0x7'));config[_0x2465('0x8')]=_[_0x2465('0x9')](config['redis'],{'host':_0x2465('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x2465('0x8')]));var def={'method':_0x2465('0xb'),'json':!![]};function emit(_0x47a6e5,_0x8daba1,_0x5d1e41){io['to'](_0x47a6e5)[_0x2465('0xc')](_0x8daba1,_0x5d1e41);}function getTicket(_0x42cccf,_0xfd5605,_0x2fcde9,_0x3c4ce6,_0x197686,_0x3c277f,_0x5ece4e,_0x8934b){logger['info'](_0x2465('0xd'));var _0x2636bf=new Date();var _0x31aa66=[{'name':_0x2465('0xe'),'value':intUtil[_0x2465('0xf')](_0x3c4ce6[_0x2465('0x10')],_0x197686,'\x20')},{'name':'assigned_user_id','value':_0xfd5605['id']},{'name':_0x2465('0x11'),'value':_0xfd5605['id']},{'name':_0x2465('0x12'),'value':intUtil[_0x2465('0xf')](_0x3c4ce6[_0x2465('0x13')],_0x197686,'\x0a')},{'name':_0x2465('0x14'),'value':_0x2636bf[_0x2465('0x15')]()[_0x2465('0x16')](0x0,0x13)[_0x2465('0x17')]('T','\x20')},{'name':_0x2465('0x18'),'value':'0'},{'name':_0x2465('0x19'),'value':'15'},{'name':_0x2465('0x1a'),'value':_0x2fcde9['id']},{'name':_0x2465('0x1b'),'value':'Contacts'},{'name':_0x2465('0x1c'),'value':_0x2fcde9[_0x2465('0xe')]},{'name':_0x2465('0x1d'),'value':_0x8934b}];if(_0x3c277f[_0x2465('0x1e')]){_[_0x2465('0x1f')](_0x3c277f,function(_0x473132){if(_0x197686[_0x473132[_0x2465('0x20')]]){_0x31aa66['push']({'name':_0x473132[_0x2465('0x21')],'value':_0x197686[_0x473132[_0x2465('0x20')]]});}});}return request({'form':{'method':'set_entry','input_type':_0x2465('0x22'),'response_type':_0x2465('0x22'),'rest_data':JSON[_0x2465('0x23')]({'session':_0x5ece4e['id'],'module_name':_0x2465('0x24'),'name_value_list':_0x31aa66})}});}function getAuth(_0xf4ea55){return util['format']('Basic\x20%s',new Buffer(_0xf4ea55[_0x2465('0x25')]+':X')['toString']('base64'));}function getServerInfo(_0xa55dda){return request({'form':{'method':_0x2465('0x26'),'input_type':_0x2465('0x22'),'response_type':_0x2465('0x22'),'rest_data':JSON[_0x2465('0x23')]({'session':_0xa55dda['id']})}});}function getUser(_0x53afd4,_0x34df08,_0x157435){if(!_[_0x2465('0x27')](_0x34df08)){logger[_0x2465('0x28')](_0x2465('0x29'),_0x34df08);return request({'form':{'method':_0x2465('0x2a'),'input_type':_0x2465('0x22'),'response_type':_0x2465('0x22'),'rest_data':JSON[_0x2465('0x23')]({'session':_0x157435['id'],'module_name':'Employees','query':util[_0x2465('0x2b')](_0x2465('0x2c'),_0x34df08),'order_by':'','offset':'0','select_fields':['id',_0x2465('0xe'),_0x2465('0x2d')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x2465('0x2e')](function(_0x3f2a57){if(_0x3f2a57[_0x2465('0x2f')][_0x2465('0x1e')]){var _0x3c7c8f=_[_0x2465('0x30')](_0x3f2a57[_0x2465('0x2f')],function(_0x1bf73f){return _0x1bf73f['name_value_list']['user_name'][_0x2465('0x31')]===_0x34df08;});if(_0x3c7c8f){logger['info']('Agent\x20found!');return BPromise[_0x2465('0x32')]({'id':_0x3c7c8f[_0x2465('0x33')]['id']['value'],'name':_0x3c7c8f['name_value_list'][_0x2465('0xe')]['value']});}}logger[_0x2465('0x28')](_0x2465('0x34'));return BPromise[_0x2465('0x32')]({'id':_0x157435['name_value_list']['user_id']['value'],'name':_0x157435[_0x2465('0x33')][_0x2465('0x2d')][_0x2465('0x31')]});});}else{logger[_0x2465('0x28')](_0x2465('0x35'));return BPromise['resolve']({'id':_0x157435[_0x2465('0x33')]['user_id']['value'],'name':_0x157435[_0x2465('0x33')][_0x2465('0x2d')][_0x2465('0x31')]});}}function getEndUser(_0x28a256,_0x21107b,_0x55a2b2,_0x2ae854){logger[_0x2465('0x28')](_0x2465('0x36'),_0x55a2b2);return request({'form':{'method':_0x2465('0x2a'),'input_type':_0x2465('0x22'),'response_type':_0x2465('0x22'),'rest_data':JSON[_0x2465('0x23')]({'session':_0x2ae854['id'],'module_name':_0x2465('0x37'),'query':util[_0x2465('0x2b')](_0x2465('0x38'),_0x55a2b2),'order_by':'','offset':'0','select_fields':['id',_0x2465('0xe'),_0x2465('0x39')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x2465('0x2e')](function(_0x59f84c){if(_0x59f84c[_0x2465('0x2f')][_0x2465('0x1e')]){var _0xd86762=_[_0x2465('0x30')](_0x59f84c[_0x2465('0x2f')],function(_0x364bc4){return _0x364bc4[_0x2465('0x33')]['phone_home'][_0x2465('0x31')]===_0x55a2b2;});if(_0xd86762){logger[_0x2465('0x28')]('Enduser\x20found!');return BPromise[_0x2465('0x32')]({'id':_0xd86762[_0x2465('0x33')]['id'][_0x2465('0x31')],'name':_0xd86762[_0x2465('0x33')]['name']['value'],'phone':_0xd86762[_0x2465('0x33')][_0x2465('0x39')][_0x2465('0x31')]});}}else{logger[_0x2465('0x28')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'form':{'method':'set_entry','input_type':_0x2465('0x22'),'response_type':_0x2465('0x22'),'rest_data':JSON[_0x2465('0x23')]({'session':_0x2ae854['id'],'module_name':_0x2465('0x37'),'name_value_list':[{'name':_0x2465('0x3a'),'value':_0x21107b!==_0x2465('0x3b')?_0x21107b:util[_0x2465('0x2b')](_0x2465('0x3c'),_0x55a2b2)},{'name':_0x2465('0x39'),'value':_0x55a2b2}]})}})[_0x2465('0x2e')](function(_0x3a9872){logger[_0x2465('0x28')](_0x2465('0x3d'));return BPromise['resolve']({'id':_0x3a9872['id'],'name':_0x3a9872[_0x2465('0x2f')][_0x2465('0x3a')][_0x2465('0x31')],'phone':_0x3a9872['entry_list'][_0x2465('0x39')][_0x2465('0x31')]});});}});}function request(_0x5462e4){logger[_0x2465('0x3e')](_0x2465('0x3f'),JSON[_0x2465('0x23')](_0x5462e4));return rp(_['merge'](def,_0x5462e4));}function getTags(_0x5f5a67,_0x9bc913){var _0x43d988=[];if(_0x5f5a67&&_0x5f5a67[_0x2465('0x1e')]>0x0){_0x43d988=_[_0x2465('0x40')](_0x5f5a67,_0x9bc913);}return _0x43d988;}function getCustomFields(_0x191cf8,_0xc9d5ba){var _0x55100b=[];var _0x1f6d98={'custom_fields':[]};if(_0x191cf8[_0x2465('0x1e')]>0x0){_[_0x2465('0x1f')](_0x191cf8,function(_0x2d3bd4){if(_0x2d3bd4['type']===_0x2465('0x41')&&_0x2d3bd4['nameField']&&!_0x2d3bd4[_0x2465('0x42')]){_0x1f6d98[_0x2d3bd4[_0x2465('0x43')][_0x2465('0x44')]()]=_0x2d3bd4['content'][_0x2465('0x45')]();}else if(_0x2d3bd4[_0x2465('0x46')]===_0x2465('0x41')&&_0x2d3bd4[_0x2465('0x21')]&&_0x2d3bd4[_0x2465('0x42')]){_0x1f6d98[_0x2465('0x47')][_0x2465('0x48')]({'id':_0x2d3bd4[_0x2465('0x21')],'value':_0x2d3bd4[_0x2465('0x49')][_0x2465('0x45')]()});}else if(_0x2d3bd4[_0x2465('0x46')]==='variable'&&_0x2d3bd4[_0x2465('0x20')]&&_0x2d3bd4[_0x2465('0x21')]&&_0x2d3bd4[_0x2465('0x42')]){_0xc9d5ba[_0x2d3bd4[_0x2465('0x20')]]&&_0x1f6d98[_0x2465('0x47')][_0x2465('0x48')]({'id':_0x2d3bd4[_0x2465('0x21')],'value':_0xc9d5ba[_0x2d3bd4[_0x2465('0x20')]][_0x2465('0x45')]()});}else if(_0x2d3bd4[_0x2465('0x46')]===_0x2465('0x4a')&&_0x2d3bd4[_0x2465('0x4b')]&&_0x2d3bd4[_0x2465('0x4b')][_0x2465('0xe')]&&_0x2d3bd4[_0x2465('0x21')]&&_0x2d3bd4[_0x2465('0x42')]){_0xc9d5ba[_0x2d3bd4['Variable']['name'][_0x2465('0x44')]()]&&_0x1f6d98[_0x2465('0x47')]['push']({'id':_0x2d3bd4[_0x2465('0x21')],'value':_0xc9d5ba[_0x2d3bd4[_0x2465('0x4b')][_0x2465('0xe')][_0x2465('0x44')]()][_0x2465('0x45')]()});}});}return _0x1f6d98;}function getConnection(_0x544846){return request({'method':_0x2465('0xb'),'form':{'method':_0x2465('0x4c'),'input_type':_0x2465('0x22'),'response_type':_0x2465('0x22'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x544846[_0x2465('0x4d')],'password':_0x544846[_0x2465('0x4e')],'encryption':_0x2465('0x4f')},'application':_0x2465('0x50')})}})['then'](function(_0x1ab9a8){var _0x598550=_0x1ab9a8;if(_0x598550['id']){def[_0x2465('0x51')]=_0x598550['id'];return BPromise[_0x2465('0x32')](_0x598550);}else{throw new Error(util[_0x2465('0x2b')](_0x2465('0x52'),_0x544846['id']));}});}function setRelationship(_0x56b1ef,_0x2a8995,_0x15365d,_0x91e331){return request({'form':{'method':_0x2465('0x53'),'input_type':_0x2465('0x22'),'response_type':_0x2465('0x22'),'rest_data':JSON[_0x2465('0x23')]({'session':_0x56b1ef['id'],'module_name':'Calls','module_id':_0x15365d['id'],'link_field_name':_0x91e331,'related_ids':[_0x2a8995['id']],'name_value_list':[],'delete':0x0})}});}exports['queue']=function(_0x5adadd,_0x38a7c9,_0x4f1646,_0x4f5123,_0x5d98d3,_0x107c79){var _0xc5305e,_0x2c3335,_0x218b2b,_0x5c2996;_0x107c79[_0x2465('0x54')]=intUtil[_0x2465('0x55')](_0x107c79[_0x2465('0x54')]);_0x107c79[_0x2465('0x56')]=intUtil[_0x2465('0x55')](_0x107c79[_0x2465('0x56')]);def[_0x2465('0x57')]=util['format'](_0x2465('0x58'),_0x107c79[_0x2465('0x54')]);if(_0x5d98d3&&_0x5d98d3[_0x2465('0x59')]){logger[_0x2465('0x28')](_0x2465('0x5a'),'Recording\x20is\x20enabled!');_0x38a7c9[_0x2465('0x5b')]=util[_0x2465('0x2b')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x107c79[_0x2465('0x56')],_0x38a7c9['uniqueid'],md5(_0x38a7c9[_0x2465('0x5c')]));}else{_0x38a7c9[_0x2465('0x5b')]='';}return getConnection(_0x107c79)['then'](function(_0x3ea7a3){_0x5c2996=_0x3ea7a3;return getUser(_0x107c79,_0x4f5123[_0x2465('0xe')],_0x5c2996);})[_0x2465('0x2e')](function(_0x34917d){_0xc5305e=_0x34917d;logger[_0x2465('0x28')](_0x2465('0x5d'),_0xc5305e['id']);return getEndUser(_0x107c79,_0x38a7c9[_0x2465('0x5e')],_0x38a7c9[_0x2465('0x5f')],_0x5c2996);})[_0x2465('0x2e')](function(_0x1b072e){_0x2c3335=_0x1b072e;logger[_0x2465('0x28')](_0x2465('0x60'),_0x2c3335['id']);return getTicket(_0x107c79,_0xc5305e,_0x2c3335,_0x4f1646,_0x38a7c9,_0x4f1646[_0x2465('0x61')],_0x5c2996,_0x2465('0x62'));})['then'](function(_0x8e467){_0x218b2b=_0x8e467;logger[_0x2465('0x28')](_0x2465('0x63'));logger[_0x2465('0x28')](_0x2465('0x64'),_0x218b2b['id']);return setRelationship(_0x5c2996,_0xc5305e,_0x218b2b,'users');})['then'](function(){return setRelationship(_0x5c2996,_0x2c3335,_0x218b2b,_0x2465('0x65'));})[_0x2465('0x2e')](function(){return getServerInfo(_0x5c2996);})['then'](function(_0x452c0a){var _0x44e3d9=parseInt(_0x452c0a[_0x2465('0x66')]['charAt'](0x0));var _0x2de3f6=util[_0x2465('0x2b')](_0x2465('0x67'),_0x107c79[_0x2465('0x54')],_0x218b2b['id']);if(_0x44e3d9>0x6){_0x2de3f6=util[_0x2465('0x2b')](_0x2465('0x68'),_0x107c79[_0x2465('0x54')],_0x218b2b['id']);}logger[_0x2465('0x28')](_0x2465('0x5a'),_0x2465('0x69'));emit(util[_0x2465('0x2b')](_0x2465('0x6a'),_0x4f5123[_0x2465('0xe')]),_0x2465('0x6b'),{'uri':_0x2de3f6});})[_0x2465('0x6c')](function(_0x528750){logger[_0x2465('0x6d')](_0x2465('0x5a'),JSON[_0x2465('0x23')](_0x528750));});};exports[_0x2465('0x6e')]=function(_0x1ae68a,_0x25feca,_0x52625a,_0x4c8003,_0x76965f,_0x2d378e,_0x3c534f){var _0x15ddc2,_0x21aac8,_0x47b4dc,_0xa246c3;_0x2d378e[_0x2465('0x54')]=intUtil['stripTrailingSlash'](_0x2d378e[_0x2465('0x54')]);_0x2d378e['serverUrl']=intUtil[_0x2465('0x55')](_0x2d378e[_0x2465('0x56')]);def[_0x2465('0x57')]=util['format'](_0x2465('0x58'),_0x2d378e[_0x2465('0x54')]);if(_0x3c534f&&_0x3c534f['recordingFormat']&&_0x3c534f[_0x2465('0x6f')]!=='none'){logger[_0x2465('0x28')](_0x2465('0x70'),_0x2465('0x71'));_0x25feca[_0x2465('0x5b')]=util['format'](_0x2465('0x72'),_0x2d378e['serverUrl'],_0x25feca[_0x2465('0x5c')],md5(_0x25feca[_0x2465('0x5c')]));}return getConnection(_0x2d378e)['then'](function(_0x481a56){_0xa246c3=_0x481a56;return getUser(_0x2d378e,_0x4c8003['name'],_0xa246c3);})['then'](function(_0x4abbcf){_0x15ddc2=_0x4abbcf;logger[_0x2465('0x28')](_0x2465('0x5d'),_0x15ddc2['id']);return getEndUser(_0x2d378e,_0x25feca[_0x2465('0x73')],_0x25feca[_0x2465('0x74')],_0xa246c3);})[_0x2465('0x2e')](function(_0x3d57e2){_0x21aac8=_0x3d57e2;logger['info'](_0x2465('0x60'),_0x21aac8['id']);return getTicket(_0x2d378e,_0x15ddc2,_0x21aac8,_0x52625a,_0x25feca,_0x52625a[_0x2465('0x61')],_0xa246c3,'Outbound');})['then'](function(_0x1673fa){_0x47b4dc=_0x1673fa;logger['info'](_0x2465('0x63'));logger[_0x2465('0x28')](_0x2465('0x64'),_0x47b4dc['id']);return setRelationship(_0xa246c3,_0x15ddc2,_0x47b4dc,_0x2465('0x75'));})[_0x2465('0x2e')](function(){return setRelationship(_0xa246c3,_0x21aac8,_0x47b4dc,'contacts');})[_0x2465('0x2e')](function(){return getServerInfo(_0xa246c3);})[_0x2465('0x2e')](function(_0x277b59){var _0x1c6e10=parseInt(_0x277b59['version'][_0x2465('0x76')](0x0));var _0x3f4ad6=util['format'](_0x2465('0x67'),_0x2d378e[_0x2465('0x54')],_0x47b4dc['id']);if(_0x1c6e10>0x6){_0x3f4ad6=util[_0x2465('0x2b')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x2d378e[_0x2465('0x54')],_0x47b4dc['id']);}logger[_0x2465('0x28')](_0x2465('0x70'),_0x2465('0x69'));emit(util[_0x2465('0x2b')](_0x2465('0x6a'),_0x4c8003['name']),'trigger:browser:url',{'uri':_0x3f4ad6});})[_0x2465('0x6c')](function(_0x2f7e4b){logger[_0x2465('0x6d')](_0x2465('0x70'),JSON[_0x2465('0x23')](_0x2f7e4b));});};exports[_0x2465('0x77')]=function(_0x1d967e,_0x180e20,_0xe0ece8,_0xdd5a28,_0x33c07f,_0x383624){var _0x2c9076,_0x4848c8,_0x26a2dd,_0x907da7;_0x383624[_0x2465('0x54')]=intUtil[_0x2465('0x55')](_0x383624['remoteUri']);_0x383624[_0x2465('0x56')]=intUtil[_0x2465('0x55')](_0x383624[_0x2465('0x56')]);def['uri']=util[_0x2465('0x2b')](_0x2465('0x58'),_0x383624[_0x2465('0x54')]);if(_0x33c07f&&_0x33c07f[_0x2465('0x59')]){logger['info']('['+_0x180e20[_0x2465('0x78')][_0x2465('0x79')]()+']',_0x2465('0x71'));_0x180e20[_0x2465('0x5b')]=util[_0x2465('0x2b')](_0x2465('0x72'),_0x383624[_0x2465('0x56')],_0x180e20[_0x2465('0x5c')],md5(_0x180e20[_0x2465('0x5c')]));}else{_0x180e20[_0x2465('0x5b')]='';}return getConnection(_0x383624)['then'](function(_0x4b8319){_0x907da7=_0x4b8319;if(!_[_0x2465('0x27')](_0xdd5a28)){return getUser(_0x383624,_0xdd5a28[_0x2465('0xe')],_0x907da7);}else{return getUser(_0x383624,null,_0x907da7);}})['then'](function(_0x5d12ed){_0x2c9076=_0x5d12ed;logger[_0x2465('0x28')](_0x2465('0x5d'),_0x2c9076['id']);return getEndUser(_0x383624,_0x180e20['calleridname'],_0x180e20[_0x2465('0x5f')],_0x907da7);})['then'](function(_0x49eab6){_0x4848c8=_0x49eab6;logger['info'](_0x2465('0x60'),_0x4848c8['id']);return getTicket(_0x383624,_0x2c9076,_0x4848c8,_0xe0ece8,_0x180e20,_0xe0ece8[_0x2465('0x61')],_0x907da7,_0x2465('0x62'));})['then'](function(_0x5d0164){_0x26a2dd=_0x5d0164;logger['info'](_0x2465('0x63'));logger[_0x2465('0x28')](_0x2465('0x64'),_0x26a2dd['id']);return setRelationship(_0x907da7,_0x2c9076,_0x26a2dd,_0x2465('0x75'));})[_0x2465('0x2e')](function(){return setRelationship(_0x907da7,_0x4848c8,_0x26a2dd,_0x2465('0x65'));})[_0x2465('0x2e')](function(){return getServerInfo(_0x907da7);})[_0x2465('0x6c')](function(_0x5c2f8f){logger[_0x2465('0x6d')]('['+_0x180e20[_0x2465('0x78')][_0x2465('0x79')]()+']',JSON[_0x2465('0x23')](_0x5c2f8f));});};
\ No newline at end of file
+var _0xdc04=['Agent\x20found!','resolve','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Searching\x20enduser\x20with\x20phone','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','find','Enduser\x20found!','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','first_name','debug','[HTTP]','merge','map','string','nameField','customField','content','type','custom_fields','idField','customVariable','Variable','toLowerCase','login','username','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','remoteUri','stripTrailingSlash','serverUrl','uri','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','The\x20User\x20ID\x20is:','calleridname','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','version','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','catch','error','outbound','recordingFormat','none','destcalleridname','destcalleridnum','Outbound','contacts','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','[OUTBOUND]','trigger:browser:url','unmanaged','%s/service/v4_1/rest.php','lastevent','toUpperCase','isNil','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','lodash','request-promise','bluebird','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','socket.io-emitter','POST','emit','name','getString','Subjects','assigned_user_id','created_by','description','Descriptions','toISOString','slice','replace','duration_hours','duration_minutes','parent_id','parent_type','Contacts','parent_name','length','forEach','variableName','push','set_entry','JSON','stringify','Calls','format','Basic\x20%s','apiKey','toString','base64','get_server_info','info','Getting\x20agent\x20with\x20name','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','name_value_list','value'];(function(_0x4c5cc5,_0x40004e){var _0x2ef537=function(_0xbfb69b){while(--_0xbfb69b){_0x4c5cc5['push'](_0x4c5cc5['shift']());}};_0x2ef537(++_0x40004e);}(_0xdc04,0x1d3));var _0x4dc0=function(_0x17954d,_0x323089){_0x17954d=_0x17954d-0x0;var _0x1e1a29=_0xdc04[_0x17954d];return _0x1e1a29;};'use strict';var _=require(_0x4dc0('0x0'));var rp=require(_0x4dc0('0x1'));var BPromise=require(_0x4dc0('0x2'));var md5=require(_0x4dc0('0x3'));var util=require(_0x4dc0('0x4'));var Redis=require(_0x4dc0('0x5'));var intUtil=require(_0x4dc0('0x6'));var config=require(_0x4dc0('0x7'));var logger=require(_0x4dc0('0x8'))('sugarcrm');config[_0x4dc0('0x9')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x4dc0('0xa'))(new Redis(config[_0x4dc0('0x9')]));var def={'method':_0x4dc0('0xb'),'json':!![]};function emit(_0x3c06c4,_0x468858,_0x57789f){io['to'](_0x3c06c4)[_0x4dc0('0xc')](_0x468858,_0x57789f);}function getTicket(_0x2a2d3a,_0x3a80cb,_0x469244,_0x59ff00,_0x3e1c4f,_0x54792e,_0x385bf8,_0x1f775c){logger['info']('Creating\x20new\x20ticket...');var _0x140537=new Date();var _0xdc9c16=[{'name':_0x4dc0('0xd'),'value':intUtil[_0x4dc0('0xe')](_0x59ff00[_0x4dc0('0xf')],_0x3e1c4f,'\x20')},{'name':_0x4dc0('0x10'),'value':_0x3a80cb['id']},{'name':_0x4dc0('0x11'),'value':_0x3a80cb['id']},{'name':_0x4dc0('0x12'),'value':intUtil['getString'](_0x59ff00[_0x4dc0('0x13')],_0x3e1c4f,'\x0a')},{'name':'date_start','value':_0x140537[_0x4dc0('0x14')]()[_0x4dc0('0x15')](0x0,0x13)[_0x4dc0('0x16')]('T','\x20')},{'name':_0x4dc0('0x17'),'value':'0'},{'name':_0x4dc0('0x18'),'value':'15'},{'name':_0x4dc0('0x19'),'value':_0x469244['id']},{'name':_0x4dc0('0x1a'),'value':_0x4dc0('0x1b')},{'name':_0x4dc0('0x1c'),'value':_0x469244[_0x4dc0('0xd')]},{'name':'direction','value':_0x1f775c}];if(_0x54792e[_0x4dc0('0x1d')]){_[_0x4dc0('0x1e')](_0x54792e,function(_0x5d4e13){if(_0x3e1c4f[_0x5d4e13[_0x4dc0('0x1f')]]){_0xdc9c16[_0x4dc0('0x20')]({'name':_0x5d4e13['idField'],'value':_0x3e1c4f[_0x5d4e13[_0x4dc0('0x1f')]]});}});}return request({'form':{'method':_0x4dc0('0x21'),'input_type':_0x4dc0('0x22'),'response_type':_0x4dc0('0x22'),'rest_data':JSON[_0x4dc0('0x23')]({'session':_0x385bf8['id'],'module_name':_0x4dc0('0x24'),'name_value_list':_0xdc9c16})}});}function getAuth(_0x4f8d0f){return util[_0x4dc0('0x25')](_0x4dc0('0x26'),new Buffer(_0x4f8d0f[_0x4dc0('0x27')]+':X')[_0x4dc0('0x28')](_0x4dc0('0x29')));}function getServerInfo(_0x3360a6){return request({'form':{'method':_0x4dc0('0x2a'),'input_type':_0x4dc0('0x22'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x3360a6['id']})}});}function getUser(_0x3938df,_0x4a7b3f,_0x136fb1){if(!_['isNil'](_0x4a7b3f)){logger[_0x4dc0('0x2b')](_0x4dc0('0x2c'),_0x4a7b3f);return request({'form':{'method':_0x4dc0('0x2d'),'input_type':_0x4dc0('0x22'),'response_type':_0x4dc0('0x22'),'rest_data':JSON[_0x4dc0('0x23')]({'session':_0x136fb1['id'],'module_name':_0x4dc0('0x2e'),'query':util[_0x4dc0('0x25')](_0x4dc0('0x2f'),_0x4a7b3f),'order_by':'','offset':'0','select_fields':['id',_0x4dc0('0xd'),_0x4dc0('0x30')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x4dc0('0x31')](function(_0x7a42f9){if(_0x7a42f9[_0x4dc0('0x32')]['length']){var _0x43a6a4=_['find'](_0x7a42f9['entry_list'],function(_0x8b3c5b){return _0x8b3c5b[_0x4dc0('0x33')][_0x4dc0('0x30')][_0x4dc0('0x34')]===_0x4a7b3f;});if(_0x43a6a4){logger[_0x4dc0('0x2b')](_0x4dc0('0x35'));return BPromise[_0x4dc0('0x36')]({'id':_0x43a6a4[_0x4dc0('0x33')]['id'][_0x4dc0('0x34')],'name':_0x43a6a4[_0x4dc0('0x33')][_0x4dc0('0xd')][_0x4dc0('0x34')]});}}logger[_0x4dc0('0x2b')](_0x4dc0('0x37'));return BPromise['resolve']({'id':_0x136fb1['name_value_list'][_0x4dc0('0x38')][_0x4dc0('0x34')],'name':_0x136fb1[_0x4dc0('0x33')][_0x4dc0('0x30')][_0x4dc0('0x34')]});});}else{logger[_0x4dc0('0x2b')]('Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!');return BPromise['resolve']({'id':_0x136fb1[_0x4dc0('0x33')]['user_id'][_0x4dc0('0x34')],'name':_0x136fb1[_0x4dc0('0x33')][_0x4dc0('0x30')][_0x4dc0('0x34')]});}}function getEndUser(_0x2d3061,_0x30d78d,_0x2557d3,_0x5cda8b){logger['info'](_0x4dc0('0x39'),_0x2557d3);return request({'form':{'method':_0x4dc0('0x2d'),'input_type':_0x4dc0('0x22'),'response_type':'JSON','rest_data':JSON[_0x4dc0('0x23')]({'session':_0x5cda8b['id'],'module_name':'Contacts','query':util[_0x4dc0('0x25')](_0x4dc0('0x3a'),_0x2557d3),'order_by':'','offset':'0','select_fields':['id',_0x4dc0('0xd'),_0x4dc0('0x3b')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x4dc0('0x31')](function(_0x22905e){if(_0x22905e[_0x4dc0('0x32')][_0x4dc0('0x1d')]){var _0x431402=_[_0x4dc0('0x3c')](_0x22905e[_0x4dc0('0x32')],function(_0x12f5a3){return _0x12f5a3[_0x4dc0('0x33')][_0x4dc0('0x3b')][_0x4dc0('0x34')]===_0x2557d3;});if(_0x431402){logger[_0x4dc0('0x2b')](_0x4dc0('0x3d'));return BPromise[_0x4dc0('0x36')]({'id':_0x431402[_0x4dc0('0x33')]['id'][_0x4dc0('0x34')],'name':_0x431402[_0x4dc0('0x33')][_0x4dc0('0xd')]['value'],'phone':_0x431402[_0x4dc0('0x33')]['phone_home'][_0x4dc0('0x34')]});}}else{logger['info']('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'form':{'method':_0x4dc0('0x21'),'input_type':_0x4dc0('0x22'),'response_type':_0x4dc0('0x22'),'rest_data':JSON[_0x4dc0('0x23')]({'session':_0x5cda8b['id'],'module_name':_0x4dc0('0x1b'),'name_value_list':[{'name':'first_name','value':_0x30d78d!==_0x4dc0('0x3e')?_0x30d78d:util[_0x4dc0('0x25')](_0x4dc0('0x3f'),_0x2557d3)},{'name':'phone_home','value':_0x2557d3}]})}})[_0x4dc0('0x31')](function(_0xf3b911){logger['info'](_0x4dc0('0x40'));return BPromise[_0x4dc0('0x36')]({'id':_0xf3b911['id'],'name':_0xf3b911[_0x4dc0('0x32')][_0x4dc0('0x41')][_0x4dc0('0x34')],'phone':_0xf3b911[_0x4dc0('0x32')][_0x4dc0('0x3b')]['value']});});}});}function request(_0x3c2b3f){logger[_0x4dc0('0x42')](_0x4dc0('0x43'),JSON['stringify'](_0x3c2b3f));return rp(_[_0x4dc0('0x44')](def,_0x3c2b3f));}function getTags(_0x3179b2,_0x49bcef){var _0x20be92=[];if(_0x3179b2&&_0x3179b2[_0x4dc0('0x1d')]>0x0){_0x20be92=_[_0x4dc0('0x45')](_0x3179b2,_0x49bcef);}return _0x20be92;}function getCustomFields(_0x5de3ba,_0x3a48c7){var _0x515673=[];var _0x2bc210={'custom_fields':[]};if(_0x5de3ba[_0x4dc0('0x1d')]>0x0){_[_0x4dc0('0x1e')](_0x5de3ba,function(_0x5bf04a){if(_0x5bf04a['type']===_0x4dc0('0x46')&&_0x5bf04a[_0x4dc0('0x47')]&&!_0x5bf04a[_0x4dc0('0x48')]){_0x2bc210[_0x5bf04a[_0x4dc0('0x47')]['toLowerCase']()]=_0x5bf04a[_0x4dc0('0x49')][_0x4dc0('0x28')]();}else if(_0x5bf04a[_0x4dc0('0x4a')]===_0x4dc0('0x46')&&_0x5bf04a['idField']&&_0x5bf04a['customField']){_0x2bc210[_0x4dc0('0x4b')]['push']({'id':_0x5bf04a[_0x4dc0('0x4c')],'value':_0x5bf04a['content']['toString']()});}else if(_0x5bf04a[_0x4dc0('0x4a')]==='variable'&&_0x5bf04a['variableName']&&_0x5bf04a[_0x4dc0('0x4c')]&&_0x5bf04a[_0x4dc0('0x48')]){_0x3a48c7[_0x5bf04a['variableName']]&&_0x2bc210['custom_fields'][_0x4dc0('0x20')]({'id':_0x5bf04a[_0x4dc0('0x4c')],'value':_0x3a48c7[_0x5bf04a[_0x4dc0('0x1f')]][_0x4dc0('0x28')]()});}else if(_0x5bf04a[_0x4dc0('0x4a')]===_0x4dc0('0x4d')&&_0x5bf04a[_0x4dc0('0x4e')]&&_0x5bf04a[_0x4dc0('0x4e')][_0x4dc0('0xd')]&&_0x5bf04a[_0x4dc0('0x4c')]&&_0x5bf04a[_0x4dc0('0x48')]){_0x3a48c7[_0x5bf04a['Variable'][_0x4dc0('0xd')][_0x4dc0('0x4f')]()]&&_0x2bc210['custom_fields'][_0x4dc0('0x20')]({'id':_0x5bf04a['idField'],'value':_0x3a48c7[_0x5bf04a[_0x4dc0('0x4e')][_0x4dc0('0xd')][_0x4dc0('0x4f')]()][_0x4dc0('0x28')]()});}});}return _0x2bc210;}function getConnection(_0x466d19){return request({'method':_0x4dc0('0xb'),'form':{'method':_0x4dc0('0x50'),'input_type':_0x4dc0('0x22'),'response_type':_0x4dc0('0x22'),'rest_data':JSON[_0x4dc0('0x23')]({'user_auth':{'user_name':_0x466d19[_0x4dc0('0x51')],'password':_0x466d19[_0x4dc0('0x52')],'encryption':_0x4dc0('0x53')},'application':_0x4dc0('0x54')})}})['then'](function(_0x379b0a){var _0x3743b1=_0x379b0a;if(_0x3743b1['id']){def[_0x4dc0('0x55')]=_0x3743b1['id'];return BPromise[_0x4dc0('0x36')](_0x3743b1);}else{throw new Error(util['format'](_0x4dc0('0x56'),_0x466d19['id']));}});}function setRelationship(_0x11eb5a,_0x2910e1,_0x2b1c0b,_0x4c61c9){return request({'form':{'method':_0x4dc0('0x57'),'input_type':_0x4dc0('0x22'),'response_type':_0x4dc0('0x22'),'rest_data':JSON[_0x4dc0('0x23')]({'session':_0x11eb5a['id'],'module_name':_0x4dc0('0x24'),'module_id':_0x2b1c0b['id'],'link_field_name':_0x4c61c9,'related_ids':[_0x2910e1['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x4dc0('0x58')]=function(_0x3a12cd,_0x16cdbc,_0x59f0e4,_0x3e967f,_0x25423f,_0x415cb6){var _0x2ca6e7,_0x403c90,_0x3b0618,_0x478bb2;_0x415cb6[_0x4dc0('0x59')]=intUtil[_0x4dc0('0x5a')](_0x415cb6[_0x4dc0('0x59')]);_0x415cb6[_0x4dc0('0x5b')]=intUtil[_0x4dc0('0x5a')](_0x415cb6[_0x4dc0('0x5b')]);def[_0x4dc0('0x5c')]=util['format']('%s/service/v4_1/rest.php',_0x415cb6[_0x4dc0('0x59')]);if(_0x25423f&&_0x25423f[_0x4dc0('0x5d')]){logger[_0x4dc0('0x2b')](_0x4dc0('0x5e'),_0x4dc0('0x5f'));_0x16cdbc[_0x4dc0('0x60')]=util[_0x4dc0('0x25')](_0x4dc0('0x61'),_0x415cb6[_0x4dc0('0x5b')],_0x16cdbc[_0x4dc0('0x62')],md5(_0x16cdbc['uniqueid']));}else{_0x16cdbc[_0x4dc0('0x60')]='';}return getConnection(_0x415cb6)[_0x4dc0('0x31')](function(_0x20dbe5){_0x478bb2=_0x20dbe5;return getUser(_0x415cb6,_0x3e967f[_0x4dc0('0xd')],_0x478bb2);})[_0x4dc0('0x31')](function(_0x256c5d){_0x2ca6e7=_0x256c5d;logger[_0x4dc0('0x2b')](_0x4dc0('0x63'),_0x2ca6e7['id']);return getEndUser(_0x415cb6,_0x16cdbc[_0x4dc0('0x64')],_0x16cdbc['calleridnum'],_0x478bb2);})[_0x4dc0('0x31')](function(_0x435f24){_0x403c90=_0x435f24;logger['info']('The\x20Enduser\x20ID\x20is:',_0x403c90['id']);return getTicket(_0x415cb6,_0x2ca6e7,_0x403c90,_0x59f0e4,_0x16cdbc,_0x59f0e4['Fields'],_0x478bb2,_0x4dc0('0x65'));})[_0x4dc0('0x31')](function(_0x4cade2){_0x3b0618=_0x4cade2;logger[_0x4dc0('0x2b')](_0x4dc0('0x66'));logger[_0x4dc0('0x2b')](_0x4dc0('0x67'),_0x3b0618['id']);return setRelationship(_0x478bb2,_0x2ca6e7,_0x3b0618,_0x4dc0('0x68'));})[_0x4dc0('0x31')](function(){return setRelationship(_0x478bb2,_0x403c90,_0x3b0618,'contacts');})['then'](function(){return getServerInfo(_0x478bb2);})[_0x4dc0('0x31')](function(_0x3fd6c9){var _0x1b6676=parseInt(_0x3fd6c9[_0x4dc0('0x69')][_0x4dc0('0x6a')](0x0));var _0x5b4ac9=util['format'](_0x4dc0('0x6b'),_0x415cb6[_0x4dc0('0x59')],_0x3b0618['id']);if(_0x1b6676>0x6){_0x5b4ac9=util[_0x4dc0('0x25')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x415cb6[_0x4dc0('0x59')],_0x3b0618['id']);}logger[_0x4dc0('0x2b')](_0x4dc0('0x5e'),_0x4dc0('0x6c'));emit(util['format'](_0x4dc0('0x6d'),_0x3e967f[_0x4dc0('0xd')]),'trigger:browser:url',{'uri':_0x5b4ac9});})[_0x4dc0('0x6e')](function(_0x2545c9){logger[_0x4dc0('0x6f')]('[QUEUE]',JSON[_0x4dc0('0x23')](_0x2545c9));});};exports[_0x4dc0('0x70')]=function(_0x5d7866,_0x1af301,_0x21b741,_0x1de85b,_0x1c848e,_0x548416,_0x590951){var _0x1760f3,_0x3870f1,_0x4b3e1d,_0x8cf6b1;_0x548416[_0x4dc0('0x59')]=intUtil[_0x4dc0('0x5a')](_0x548416[_0x4dc0('0x59')]);_0x548416[_0x4dc0('0x5b')]=intUtil['stripTrailingSlash'](_0x548416['serverUrl']);def[_0x4dc0('0x5c')]=util[_0x4dc0('0x25')]('%s/service/v4_1/rest.php',_0x548416[_0x4dc0('0x59')]);if(_0x590951&&_0x590951[_0x4dc0('0x71')]&&_0x590951[_0x4dc0('0x71')]!==_0x4dc0('0x72')){logger[_0x4dc0('0x2b')]('[OUTBOUND]',_0x4dc0('0x5f'));_0x1af301[_0x4dc0('0x60')]=util[_0x4dc0('0x25')](_0x4dc0('0x61'),_0x548416[_0x4dc0('0x5b')],_0x1af301[_0x4dc0('0x62')],md5(_0x1af301[_0x4dc0('0x62')]));}return getConnection(_0x548416)['then'](function(_0x2712a2){_0x8cf6b1=_0x2712a2;return getUser(_0x548416,_0x1de85b[_0x4dc0('0xd')],_0x8cf6b1);})[_0x4dc0('0x31')](function(_0x2db14e){_0x1760f3=_0x2db14e;logger[_0x4dc0('0x2b')]('The\x20User\x20ID\x20is:',_0x1760f3['id']);return getEndUser(_0x548416,_0x1af301[_0x4dc0('0x73')],_0x1af301[_0x4dc0('0x74')],_0x8cf6b1);})[_0x4dc0('0x31')](function(_0x3e868e){_0x3870f1=_0x3e868e;logger['info']('The\x20Enduser\x20ID\x20is:',_0x3870f1['id']);return getTicket(_0x548416,_0x1760f3,_0x3870f1,_0x21b741,_0x1af301,_0x21b741['Fields'],_0x8cf6b1,_0x4dc0('0x75'));})['then'](function(_0x31f0d6){_0x4b3e1d=_0x31f0d6;logger[_0x4dc0('0x2b')](_0x4dc0('0x66'));logger[_0x4dc0('0x2b')](_0x4dc0('0x67'),_0x4b3e1d['id']);return setRelationship(_0x8cf6b1,_0x1760f3,_0x4b3e1d,_0x4dc0('0x68'));})[_0x4dc0('0x31')](function(){return setRelationship(_0x8cf6b1,_0x3870f1,_0x4b3e1d,_0x4dc0('0x76'));})[_0x4dc0('0x31')](function(){return getServerInfo(_0x8cf6b1);})[_0x4dc0('0x31')](function(_0x809e86){var _0x30a1dc=parseInt(_0x809e86[_0x4dc0('0x69')][_0x4dc0('0x6a')](0x0));var _0x38683d=util[_0x4dc0('0x25')](_0x4dc0('0x6b'),_0x548416[_0x4dc0('0x59')],_0x4b3e1d['id']);if(_0x30a1dc>0x6){_0x38683d=util[_0x4dc0('0x25')](_0x4dc0('0x77'),_0x548416['remoteUri'],_0x4b3e1d['id']);}logger['info'](_0x4dc0('0x78'),_0x4dc0('0x6c'));emit(util[_0x4dc0('0x25')]('user:%s',_0x1de85b[_0x4dc0('0xd')]),_0x4dc0('0x79'),{'uri':_0x38683d});})[_0x4dc0('0x6e')](function(_0x3d592b){logger[_0x4dc0('0x6f')](_0x4dc0('0x78'),JSON[_0x4dc0('0x23')](_0x3d592b));});};exports[_0x4dc0('0x7a')]=function(_0x22d973,_0x1abfbe,_0x2a6fbb,_0x2539b7,_0x59f35b,_0x3fcc41){var _0x3fa7bf,_0x3e5297,_0x3bf6f0,_0x56f9d5;_0x3fcc41['remoteUri']=intUtil[_0x4dc0('0x5a')](_0x3fcc41['remoteUri']);_0x3fcc41[_0x4dc0('0x5b')]=intUtil[_0x4dc0('0x5a')](_0x3fcc41['serverUrl']);def[_0x4dc0('0x5c')]=util[_0x4dc0('0x25')](_0x4dc0('0x7b'),_0x3fcc41[_0x4dc0('0x59')]);if(_0x59f35b&&_0x59f35b[_0x4dc0('0x5d')]){logger[_0x4dc0('0x2b')]('['+_0x1abfbe[_0x4dc0('0x7c')][_0x4dc0('0x7d')]()+']','Recording\x20is\x20enabled!');_0x1abfbe[_0x4dc0('0x60')]=util[_0x4dc0('0x25')](_0x4dc0('0x61'),_0x3fcc41[_0x4dc0('0x5b')],_0x1abfbe['uniqueid'],md5(_0x1abfbe['uniqueid']));}else{_0x1abfbe[_0x4dc0('0x60')]='';}return getConnection(_0x3fcc41)['then'](function(_0x21c8a8){_0x56f9d5=_0x21c8a8;if(!_[_0x4dc0('0x7e')](_0x2539b7)){return getUser(_0x3fcc41,_0x2539b7['name'],_0x56f9d5);}else{return getUser(_0x3fcc41,null,_0x56f9d5);}})[_0x4dc0('0x31')](function(_0x1dee38){_0x3fa7bf=_0x1dee38;logger[_0x4dc0('0x2b')](_0x4dc0('0x63'),_0x3fa7bf['id']);return getEndUser(_0x3fcc41,_0x1abfbe[_0x4dc0('0x64')],_0x1abfbe[_0x4dc0('0x7f')],_0x56f9d5);})[_0x4dc0('0x31')](function(_0x3fa852){_0x3e5297=_0x3fa852;logger[_0x4dc0('0x2b')](_0x4dc0('0x80'),_0x3e5297['id']);return getTicket(_0x3fcc41,_0x3fa7bf,_0x3e5297,_0x2a6fbb,_0x1abfbe,_0x2a6fbb[_0x4dc0('0x81')],_0x56f9d5,_0x4dc0('0x65'));})[_0x4dc0('0x31')](function(_0x468b46){_0x3bf6f0=_0x468b46;logger['info'](_0x4dc0('0x66'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x3bf6f0['id']);return setRelationship(_0x56f9d5,_0x3fa7bf,_0x3bf6f0,_0x4dc0('0x68'));})[_0x4dc0('0x31')](function(){return setRelationship(_0x56f9d5,_0x3e5297,_0x3bf6f0,_0x4dc0('0x76'));})[_0x4dc0('0x31')](function(){return getServerInfo(_0x56f9d5);})[_0x4dc0('0x6e')](function(_0x37a760){logger[_0x4dc0('0x6f')]('['+_0x1abfbe[_0x4dc0('0x7c')][_0x4dc0('0x7d')]()+']',JSON[_0x4dc0('0x23')](_0x37a760));});};
\ No newline at end of file
index 4ee69fa..b47fcf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb9d=['sortBy','type','string','push','content','variable','variableName','toString','customVariable','Variable','name','toLowerCase','keyValue','keyType','key','format','keyContent','%s:\x20%s','join','slice','lastIndexOf','validateEmail','getString','length'];(function(_0x161af5,_0x4c9b21){var _0x15549a=function(_0x452066){while(--_0x452066){_0x161af5['push'](_0x161af5['shift']());}};_0x15549a(++_0x4c9b21);}(_0xbb9d,0x1c6));var _0xdbb9=function(_0x24f44c,_0x1b8c57){_0x24f44c=_0x24f44c-0x0;var _0x393d17=_0xbb9d[_0x24f44c];return _0x393d17;};'use strict';var _=require('lodash');var util=require('util');exports[_0xdbb9('0x0')]=function(_0x2407f9,_0x872e94,_0x35e3c6){var _0x4287b8=[];if(_0x2407f9[_0xdbb9('0x1')]>0x0){var _0x108d00=_[_0xdbb9('0x2')](_0x2407f9,['id']);for(var _0xba14b3=0x0;_0xba14b3<_0x108d00[_0xdbb9('0x1')];_0xba14b3++){var _0x5b1321=_0x108d00[_0xba14b3];if(_0x5b1321[_0xdbb9('0x3')]===_0xdbb9('0x4')){_0x4287b8[_0xdbb9('0x5')](_0x5b1321[_0xdbb9('0x6')]);}else if(_0x5b1321[_0xdbb9('0x3')]===_0xdbb9('0x7')&&_0x5b1321['variableName']){_0x872e94[_0x5b1321[_0xdbb9('0x8')]]&&_0x4287b8[_0xdbb9('0x5')](_0x872e94[_0x5b1321[_0xdbb9('0x8')]][_0xdbb9('0x9')]());}else if(_0x5b1321['type']===_0xdbb9('0xa')&&_0x5b1321['Variable']&&_0x5b1321[_0xdbb9('0xb')][_0xdbb9('0xc')]){_0x872e94[_0x5b1321[_0xdbb9('0xb')]['name'][_0xdbb9('0xd')]()]&&_0x4287b8[_0xdbb9('0x5')](_0x872e94[_0x5b1321[_0xdbb9('0xb')][_0xdbb9('0xc')][_0xdbb9('0xd')]()]['toString']());}else if(_0x5b1321[_0xdbb9('0x3')]===_0xdbb9('0xe')){if(_0x5b1321[_0xdbb9('0xf')]===_0xdbb9('0x4')&&_0x5b1321[_0xdbb9('0x10')]){_0x4287b8[_0xdbb9('0x5')](util[_0xdbb9('0x11')]('%s:\x20%s',_0x5b1321['key'],_0x5b1321[_0xdbb9('0x12')]));}else if(_0x5b1321[_0xdbb9('0xf')]==='variable'&&_0x5b1321[_0xdbb9('0x8')]&&_0x5b1321[_0xdbb9('0x10')]){_0x872e94[_0x5b1321['variableName']]&&_0x4287b8[_0xdbb9('0x5')](util[_0xdbb9('0x11')](_0xdbb9('0x13'),_0x5b1321[_0xdbb9('0x10')],_0x872e94[_0x5b1321[_0xdbb9('0x8')]]));}else if(_0x5b1321[_0xdbb9('0xf')]===_0xdbb9('0xa')&&_0x5b1321[_0xdbb9('0xb')]&&_0x5b1321[_0xdbb9('0xb')][_0xdbb9('0xc')]&&_0x5b1321['key']){_0x872e94[_0x5b1321[_0xdbb9('0xb')][_0xdbb9('0xc')][_0xdbb9('0xd')]()]&&_0x4287b8[_0xdbb9('0x5')](util[_0xdbb9('0x11')]('%s:\x20%s',_0x5b1321[_0xdbb9('0x10')],_0x872e94[_0x5b1321[_0xdbb9('0xb')]['name']['toLowerCase']()]));}}}}return _0x4287b8[_0xdbb9('0x14')](_0x35e3c6);};exports['stripTrailingSlash']=function(_0x48104d){var _0x222467=_0x48104d[_0xdbb9('0x15')](-0x1);if(_0x222467==='/'){_0x48104d=_0x48104d['substring'](0x0,_0x48104d[_0xdbb9('0x16')](_0x222467));}return _0x48104d;};exports[_0xdbb9('0x17')]=function(_0x9c60b6){if(!_['isNil'](_0x9c60b6)&&_0x9c60b6!==''){var _0xadcdac=/^(([^<>()\[\]\\.,;:\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 _0xadcdac['test'](String(_0x9c60b6)[_0xdbb9('0xd')]());}else{return![];}};
\ No newline at end of file
+var _0x912b=['keyType','key','format','keyContent','%s:\x20%s','slice','substring','validateEmail','isNil','lodash','util','getString','length','sortBy','string','push','content','type','variable','variableName','toString','customVariable','Variable','name','toLowerCase','keyValue'];(function(_0x243cf9,_0x4b9645){var _0xe84acb=function(_0x597efc){while(--_0x597efc){_0x243cf9['push'](_0x243cf9['shift']());}};_0xe84acb(++_0x4b9645);}(_0x912b,0x1c3));var _0xb912=function(_0x1428d9,_0xded63c){_0x1428d9=_0x1428d9-0x0;var _0x438019=_0x912b[_0x1428d9];return _0x438019;};'use strict';var _=require(_0xb912('0x0'));var util=require(_0xb912('0x1'));exports[_0xb912('0x2')]=function(_0x1c3859,_0x13a803,_0x408009){var _0x3fe82b=[];if(_0x1c3859[_0xb912('0x3')]>0x0){var _0x46572b=_[_0xb912('0x4')](_0x1c3859,['id']);for(var _0x4e2072=0x0;_0x4e2072<_0x46572b['length'];_0x4e2072++){var _0x619e61=_0x46572b[_0x4e2072];if(_0x619e61['type']===_0xb912('0x5')){_0x3fe82b[_0xb912('0x6')](_0x619e61[_0xb912('0x7')]);}else if(_0x619e61[_0xb912('0x8')]===_0xb912('0x9')&&_0x619e61[_0xb912('0xa')]){_0x13a803[_0x619e61[_0xb912('0xa')]]&&_0x3fe82b[_0xb912('0x6')](_0x13a803[_0x619e61[_0xb912('0xa')]][_0xb912('0xb')]());}else if(_0x619e61['type']===_0xb912('0xc')&&_0x619e61[_0xb912('0xd')]&&_0x619e61[_0xb912('0xd')][_0xb912('0xe')]){_0x13a803[_0x619e61[_0xb912('0xd')][_0xb912('0xe')][_0xb912('0xf')]()]&&_0x3fe82b[_0xb912('0x6')](_0x13a803[_0x619e61['Variable'][_0xb912('0xe')][_0xb912('0xf')]()][_0xb912('0xb')]());}else if(_0x619e61[_0xb912('0x8')]===_0xb912('0x10')){if(_0x619e61[_0xb912('0x11')]==='string'&&_0x619e61[_0xb912('0x12')]){_0x3fe82b['push'](util[_0xb912('0x13')]('%s:\x20%s',_0x619e61[_0xb912('0x12')],_0x619e61[_0xb912('0x14')]));}else if(_0x619e61['keyType']===_0xb912('0x9')&&_0x619e61['variableName']&&_0x619e61['key']){_0x13a803[_0x619e61['variableName']]&&_0x3fe82b[_0xb912('0x6')](util['format'](_0xb912('0x15'),_0x619e61[_0xb912('0x12')],_0x13a803[_0x619e61[_0xb912('0xa')]]));}else if(_0x619e61[_0xb912('0x11')]==='customVariable'&&_0x619e61[_0xb912('0xd')]&&_0x619e61['Variable'][_0xb912('0xe')]&&_0x619e61['key']){_0x13a803[_0x619e61[_0xb912('0xd')][_0xb912('0xe')]['toLowerCase']()]&&_0x3fe82b[_0xb912('0x6')](util[_0xb912('0x13')]('%s:\x20%s',_0x619e61[_0xb912('0x12')],_0x13a803[_0x619e61[_0xb912('0xd')]['name']['toLowerCase']()]));}}}}return _0x3fe82b['join'](_0x408009);};exports['stripTrailingSlash']=function(_0x205c44){var _0x49fcb3=_0x205c44[_0xb912('0x16')](-0x1);if(_0x49fcb3==='/'){_0x205c44=_0x205c44[_0xb912('0x17')](0x0,_0x205c44['lastIndexOf'](_0x49fcb3));}return _0x205c44;};exports[_0xb912('0x18')]=function(_0x2e9c6a){if(!_[_0xb912('0x19')](_0x2e9c6a)&&_0x2e9c6a!==''){var _0x2441c6=/^(([^<>()\[\]\\.,;:\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 _0x2441c6['test'](String(_0x2e9c6a)[_0xb912('0xf')]());}else{return![];}};
\ No newline at end of file
index 234e807..f1202ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['variable','variableName','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','Normal','Open','Subjects','POST','format','%s/webservice.php','create','username','sessionName','HelpDesk','stringify','then','result','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','error','[vTiger],\x20%s,\x20%s,\x20%s','createTicket','validateEmail','Getting\x20agent\x20with\x20email','GET','query','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','resolve','email1','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','statusCode','getUser','Searching\x20end\x20user\x20with\x20phone','remoteUri','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','Enduser\x20created.','phone','getEndUser','accessKey','getchallenge','login','token','Account\x20%d\x20is\x20not\x20valid','[HTTP]','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','The\x20User\x20ID\x20is:','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','The\x20Enduser\x20ID\x20is:','Fields','split','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridname','lastevent','lodash','request-promise','bluebird','ioredis','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','length','forEach','includes','idField','content','toString','type'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0xa9e0[_0x5447fd];return _0x15b28a;};'use strict';var _=require(_0x0a9e('0x0'));var rp=require(_0x0a9e('0x1'));var BPromise=require(_0x0a9e('0x2'));var md5=require('md5');var util=require('util');var Redis=require(_0x0a9e('0x3'));var intUtil=require('./util');var config=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));config[_0x0a9e('0x7')]=_[_0x0a9e('0x8')](config['redis'],{'host':_0x0a9e('0x9'),'port':0x18eb});var io=require(_0x0a9e('0xa'))(new Redis(config[_0x0a9e('0x7')]));function emit(_0x5f41ea,_0x503809,_0xe42b77){io['to'](_0x5f41ea)['emit'](_0x503809,_0xe42b77);}function getCustomFields(_0x52cace,_0x39753a){var _0xf81284={};if(_0x52cace[_0x0a9e('0xb')]>0x0){_[_0x0a9e('0xc')](_0x52cace,function(_0xfeb75b){if(_[_0x0a9e('0xd')](['string','picklist'],_0xfeb75b['type'])&&_0xfeb75b['idField']){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0xfeb75b[_0x0a9e('0xf')][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x12')&&_0xfeb75b[_0x0a9e('0x13')]&&_0xfeb75b['idField']&&_0x39753a[_0xfeb75b[_0x0a9e('0x13')]]){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0x39753a[_0xfeb75b[_0x0a9e('0x13')]][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x14')&&_0xfeb75b['Variable']&&_0xfeb75b[_0x0a9e('0x15')]['name']&&_0xfeb75b[_0x0a9e('0xe')]&&_0x39753a[_0xfeb75b['Variable'][_0x0a9e('0x16')][_0x0a9e('0x17')]()]){_0xf81284[_0xfeb75b['idField']]=_0x39753a[_0xfeb75b[_0x0a9e('0x15')]['name'][_0x0a9e('0x17')]()][_0x0a9e('0x10')]();}});}return _0xf81284;}function createTicket(_0x106033,_0x205fd6,_0x31b1ca,_0x2eb11f,_0x530eb7,_0x20559e,_0x1314ae){logger[_0x0a9e('0x18')](_0x0a9e('0x19'));var _0x105080=_['merge']({'parent_id':'','assigned_user_id':_0x205fd6['id'],'ticketpriorities':_0x0a9e('0x1a'),'ticketstatus':_0x0a9e('0x1b'),'ticket_title':intUtil['getString'](_0x2eb11f[_0x0a9e('0x1c')],_0x530eb7,'\x20'),'description':intUtil['getString'](_0x2eb11f['Descriptions'],_0x530eb7,'\x0a'),'contact_id':_0x31b1ca['id']},getCustomFields(_0x20559e,_0x530eb7));var _0x3a02e1={'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x106033['remoteUri']),'form':{'operation':_0x0a9e('0x20'),'username':_0x106033[_0x0a9e('0x21')],'sessionName':_0x1314ae[_0x0a9e('0x22')],'elementType':_0x0a9e('0x23'),'element':JSON[_0x0a9e('0x24')](_0x105080)},'json':!![]};return request(_0x3a02e1)[_0x0a9e('0x25')](function(_0x16b1ca){if(_0x16b1ca['success']){return BPromise['resolve']({'id':_0x16b1ca[_0x0a9e('0x26')]['id']});}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x27'),JSON[_0x0a9e('0x24')](_0x16b1ca['error'])));}})[_0x0a9e('0x28')](function(_0x479bc4){var _0x45a1e7=_0x479bc4['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x2b'),_0x45a1e7,JSON[_0x0a9e('0x24')](_0x479bc4));});}function getUser(_0x140511,_0x1538a4,_0x11c3b6){if(intUtil[_0x0a9e('0x2c')](_0x1538a4)){logger['info'](_0x0a9e('0x2d'),_0x1538a4);return request({'method':_0x0a9e('0x2e'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x140511['remoteUri']),'qs':{'operation':_0x0a9e('0x2f'),'username':_0x140511[_0x0a9e('0x21')],'sessionName':_0x11c3b6[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x30'),_0x1538a4)},'json':!![]})[_0x0a9e('0x25')](function(_0x296f41){if(_0x296f41[_0x0a9e('0x31')]&&_0x296f41[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')]('Agent\x20found!');return BPromise[_0x0a9e('0x32')]({'id':_0x296f41[_0x0a9e('0x26')][0x0]['id'],'email':_0x296f41[_0x0a9e('0x26')][0x0][_0x0a9e('0x33')],'name':_0x296f41[_0x0a9e('0x26')][0x0]['first_name']+'\x20'+_0x296f41[_0x0a9e('0x26')][_0x0a9e('0x34')]});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511[_0x0a9e('0x21')],'name':_0x0a9e('0x37')});}})['catch'](function(_0x44295a){var _0x5e7238=_0x44295a[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x39'),_0x5e7238,JSON['stringify'](_0x44295a));});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511['username'],'name':'admin'})[_0x0a9e('0x28')](function(_0x5640eb){var _0x24936a=_0x5640eb[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getUser',_0x24936a,JSON[_0x0a9e('0x24')](_0x5640eb));});}}function getEndUser(_0x3bfce8,_0x3cae,_0x533942,_0x1dbf74){logger[_0x0a9e('0x18')](_0x0a9e('0x3a'),_0x533942);return request({'method':'GET','uri':util['format'](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'qs':{'operation':'query','username':_0x3bfce8[_0x0a9e('0x21')],'sessionName':_0x1dbf74[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x3c'),_0x533942,_0x533942,_0x533942,_0x533942,_0x533942)},'json':!![]})['then'](function(_0x5a594b){if(_0x5a594b[_0x0a9e('0x31')]&&_0x5a594b[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')](_0x0a9e('0x3d'));return BPromise[_0x0a9e('0x32')]({'id':_0x5a594b['result'][0x0]['id'],'name':_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3e')]+'\x20'+_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3f')],'phone':_0x533942});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x40'));return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x20'),'sessionName':_0x1dbf74[_0x0a9e('0x22')],'elementType':_0x0a9e('0x41'),'element':JSON[_0x0a9e('0x24')]({'lastname':_0x3cae,'phone':_0x533942,'assigned_user_id':'\x20'})},'json':!![]})[_0x0a9e('0x25')](function(_0x4d04c8){logger['info'](_0x0a9e('0x42'));return BPromise[_0x0a9e('0x32')]({'id':_0x4d04c8[_0x0a9e('0x26')]['id'],'name':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x3f')],'phone':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x43')]});})[_0x0a9e('0x28')](function(_0x432fcc){var _0x25c6e6=_0x432fcc[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')]('[vTiger],\x20%s,\x20%s,\x20%s',_0x0a9e('0x44'),_0x25c6e6,JSON[_0x0a9e('0x24')](_0x432fcc));});}});}function getConnection(_0xdd268f){var _0xfbd5ad=_0xdd268f[_0x0a9e('0x21')];var _0xbe9d19=_0xdd268f[_0x0a9e('0x45')];return request({'method':_0x0a9e('0x2e'),'uri':util['format'](_0x0a9e('0x1f'),_0xdd268f['remoteUri']),'qs':{'operation':_0x0a9e('0x46'),'username':_0xfbd5ad},'json':!![]})[_0x0a9e('0x25')](function(_0x8d6dd1){if(_0x8d6dd1['success']){return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0xdd268f[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x47'),'username':_0xfbd5ad,'accessKey':md5(_0x8d6dd1[_0x0a9e('0x26')][_0x0a9e('0x48')]+_0xbe9d19)},'json':!![]});}})['then'](function(_0x13f44d){if(_0x13f44d[_0x0a9e('0x31')]){return BPromise[_0x0a9e('0x32')](_0x13f44d[_0x0a9e('0x26')]);}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x49'),_0xdd268f['id']));}})[_0x0a9e('0x28')](function(_0x19383e){var _0x34febd=_0x19383e['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getConnection',_0x34febd,JSON['stringify'](_0x19383e));});}function request(_0x5ddf84){logger[_0x0a9e('0x18')](_0x0a9e('0x4a'),JSON[_0x0a9e('0x24')](_0x5ddf84));return rp(_0x5ddf84);}exports[_0x0a9e('0x4b')]=function(_0x61bb17,_0x30decb,_0x2e5165,_0x375c18,_0x5d38ae,_0x4b1b9f){var _0x53975a,_0x39d77d,_0x204173,_0x14d602;_0x4b1b9f['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x4b1b9f[_0x0a9e('0x3b')]);if(_0x5d38ae&&_0x5d38ae['monitor_format']){logger['info'](_0x0a9e('0x4d'),'Recording\x20is\x20enabled!');_0x30decb[_0x0a9e('0x4e')]=util['format'](_0x0a9e('0x4f'),_0x4b1b9f[_0x0a9e('0x50')],_0x30decb[_0x0a9e('0x51')],md5(_0x30decb['uniqueid']));}else{_0x30decb[_0x0a9e('0x4e')]='';}return getConnection(_0x4b1b9f)[_0x0a9e('0x25')](function(_0x508b47){_0x14d602=_0x508b47;return getUser(_0x4b1b9f,_0x375c18['email'],_0x14d602);})[_0x0a9e('0x25')](function(_0x3aedd0){_0x53975a=_0x3aedd0;logger['info'](_0x0a9e('0x52'),_0x53975a['id']);return getEndUser(_0x4b1b9f,_0x30decb['calleridname'],_0x30decb[_0x0a9e('0x53')],_0x14d602);})['then'](function(_0xe22ccc){_0x39d77d=_0xe22ccc;logger['info']('The\x20Enduser\x20ID\x20is:',_0x39d77d['id']);return createTicket(_0x4b1b9f,_0x53975a,_0x39d77d,_0x2e5165,_0x30decb,_0x2e5165['Fields'],_0x14d602);})[_0x0a9e('0x25')](function(_0x47de4c){_0x204173=_0x47de4c;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x204173['id']);var _0x232830=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x4b1b9f[_0x0a9e('0x3b')],_['split'](_0x204173['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x4d'),_0x0a9e('0x57'));emit(util[_0x0a9e('0x1e')](_0x0a9e('0x58'),_0x375c18[_0x0a9e('0x16')]),'trigger:browser:url',{'uri':_0x232830});})[_0x0a9e('0x28')](function(_0x26bc80){logger['error'](_0x0a9e('0x4d'),JSON['stringify'](_0x26bc80));});};exports[_0x0a9e('0x59')]=function(_0x5ba1f9,_0x4b3c1a,_0x5674ee,_0x273cb5,_0x49d231,_0x2244d6,_0x1fc70e){var _0x261adb,_0x7be420,_0x1cca9f,_0x26d7db;_0x2244d6['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x2244d6['remoteUri']);_0x2244d6[_0x0a9e('0x50')]=intUtil[_0x0a9e('0x4c')](_0x2244d6[_0x0a9e('0x50')]);if(_0x1fc70e&&_0x1fc70e['recordingFormat']&&_0x1fc70e[_0x0a9e('0x5a')]!==_0x0a9e('0x5b')){logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),'Recording\x20is\x20enabled!');_0x4b3c1a[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2244d6[_0x0a9e('0x50')],_0x4b3c1a[_0x0a9e('0x51')],md5(_0x4b3c1a[_0x0a9e('0x51')]));}return getConnection(_0x2244d6)[_0x0a9e('0x25')](function(_0x401837){_0x26d7db=_0x401837;return getUser(_0x2244d6,_0x273cb5['email'],_0x26d7db);})[_0x0a9e('0x25')](function(_0x2937e0){_0x261adb=_0x2937e0;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x261adb['id']);return getEndUser(_0x2244d6,_0x4b3c1a[_0x0a9e('0x5d')],_0x4b3c1a['destcalleridnum'],_0x26d7db);})['then'](function(_0x242745){_0x7be420=_0x242745;logger[_0x0a9e('0x18')](_0x0a9e('0x5e'),_0x7be420['id']);return createTicket(_0x2244d6,_0x261adb,_0x7be420,_0x5674ee,_0x4b3c1a,_0x5674ee[_0x0a9e('0x5f')],_0x26d7db);})[_0x0a9e('0x25')](function(_0xc8c264){_0x1cca9f=_0xc8c264;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1cca9f['id']);var _0x2e89b7=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x2244d6[_0x0a9e('0x3b')],_[_0x0a9e('0x60')](_0x1cca9f['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),_0x0a9e('0x57'));emit(util['format'](_0x0a9e('0x58'),_0x273cb5[_0x0a9e('0x16')]),_0x0a9e('0x61'),{'uri':_0x2e89b7});})['catch'](function(_0x1148a1){logger[_0x0a9e('0x29')]('[OUTBOUND]',JSON[_0x0a9e('0x24')](_0x1148a1));});};exports[_0x0a9e('0x62')]=function(_0x3ef315,_0x427946,_0x13b5c0,_0x4a43a8,_0x50cdce,_0x4a2438){var _0x40fb85,_0x18bf5d,_0x1104ad,_0x23a7d3;_0x4a2438[_0x0a9e('0x3b')]=intUtil[_0x0a9e('0x4c')](_0x4a2438[_0x0a9e('0x3b')]);_0x4a2438[_0x0a9e('0x50')]=intUtil['stripTrailingSlash'](_0x4a2438[_0x0a9e('0x50')]);if(_0x50cdce&&_0x50cdce[_0x0a9e('0x63')]){logger[_0x0a9e('0x18')]('['+_0x427946['lastevent'][_0x0a9e('0x64')]()+']','Recording\x20is\x20enabled!');_0x427946[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4a2438[_0x0a9e('0x50')],_0x427946[_0x0a9e('0x51')],md5(_0x427946[_0x0a9e('0x51')]));}else{_0x427946[_0x0a9e('0x4e')]='';}return getConnection(_0x4a2438)['then'](function(_0x1d442c){_0x23a7d3=_0x1d442c;return getUser(_0x4a2438,'',_0x23a7d3);})[_0x0a9e('0x25')](function(_0x371533){_0x40fb85=_0x371533;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x40fb85['id']);return getEndUser(_0x4a2438,_0x427946[_0x0a9e('0x65')],_0x427946[_0x0a9e('0x53')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0x361b21){_0x18bf5d=_0x361b21;logger['info'](_0x0a9e('0x5e'),_0x18bf5d['id']);return createTicket(_0x4a2438,_0x40fb85,_0x18bf5d,_0x13b5c0,_0x427946,_0x13b5c0[_0x0a9e('0x5f')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0xf410e5){_0x1104ad=_0xf410e5;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1104ad['id']);})[_0x0a9e('0x28')](function(_0x336dc3){logger[_0x0a9e('0x29')]('['+_0x427946[_0x0a9e('0x66')][_0x0a9e('0x64')]()+']',JSON[_0x0a9e('0x24')](_0x336dc3));});};
\ No newline at end of file
+var _0xe706=['result','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','getUser','username','Searching\x20end\x20user\x20with\x20phone','remoteUri','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','phone','catch','accessKey','getchallenge','token','Account\x20%d\x20is\x20not\x20valid','getConnection','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','user:%s','unmanaged','lastevent','toUpperCase','lodash','request-promise','bluebird','util','ioredis','./util','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','emit','length','forEach','includes','string','idField','content','toString','type','variable','variableName','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Open','Subjects','getString','Descriptions','POST','format','%s/webservice.php','create','stringify','then','success','resolve','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','statusCode','error','[vTiger],\x20%s,\x20%s,\x20%s','validateEmail','Getting\x20agent\x20with\x20email','GET','query','sessionName','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;'];(function(_0x5cec1a,_0x465521){var _0x59cadb=function(_0x403ec4){while(--_0x403ec4){_0x5cec1a['push'](_0x5cec1a['shift']());}};_0x59cadb(++_0x465521);}(_0xe706,0xa3));var _0x6e70=function(_0x4c7c25,_0x1e16a8){_0x4c7c25=_0x4c7c25-0x0;var _0x297619=_0xe706[_0x4c7c25];return _0x297619;};'use strict';var _=require(_0x6e70('0x0'));var rp=require(_0x6e70('0x1'));var BPromise=require(_0x6e70('0x2'));var md5=require('md5');var util=require(_0x6e70('0x3'));var Redis=require(_0x6e70('0x4'));var intUtil=require(_0x6e70('0x5'));var config=require(_0x6e70('0x6'));var logger=require(_0x6e70('0x7'))(_0x6e70('0x8'));config[_0x6e70('0x9')]=_[_0x6e70('0xa')](config[_0x6e70('0x9')],{'host':_0x6e70('0xb'),'port':0x18eb});var io=require(_0x6e70('0xc'))(new Redis(config[_0x6e70('0x9')]));function emit(_0x45a2d4,_0x188ed3,_0x3c4843){io['to'](_0x45a2d4)[_0x6e70('0xd')](_0x188ed3,_0x3c4843);}function getCustomFields(_0x954545,_0x25e61c){var _0x100eb7={};if(_0x954545[_0x6e70('0xe')]>0x0){_[_0x6e70('0xf')](_0x954545,function(_0x3f474a){if(_[_0x6e70('0x10')]([_0x6e70('0x11'),'picklist'],_0x3f474a['type'])&&_0x3f474a[_0x6e70('0x12')]){_0x100eb7[_0x3f474a[_0x6e70('0x12')]]=_0x3f474a[_0x6e70('0x13')][_0x6e70('0x14')]();}else if(_0x3f474a[_0x6e70('0x15')]===_0x6e70('0x16')&&_0x3f474a[_0x6e70('0x17')]&&_0x3f474a[_0x6e70('0x12')]&&_0x25e61c[_0x3f474a['variableName']]){_0x100eb7[_0x3f474a['idField']]=_0x25e61c[_0x3f474a['variableName']][_0x6e70('0x14')]();}else if(_0x3f474a['type']==='customVariable'&&_0x3f474a[_0x6e70('0x18')]&&_0x3f474a[_0x6e70('0x18')]['name']&&_0x3f474a[_0x6e70('0x12')]&&_0x25e61c[_0x3f474a['Variable'][_0x6e70('0x19')][_0x6e70('0x1a')]()]){_0x100eb7[_0x3f474a['idField']]=_0x25e61c[_0x3f474a['Variable'][_0x6e70('0x19')]['toLowerCase']()][_0x6e70('0x14')]();}});}return _0x100eb7;}function createTicket(_0x173afe,_0x53acdc,_0x497d61,_0xc238ba,_0x208e21,_0x2368eb,_0x3a9978){logger[_0x6e70('0x1b')](_0x6e70('0x1c'));var _0x1b2453=_[_0x6e70('0x1d')]({'parent_id':'','assigned_user_id':_0x53acdc['id'],'ticketpriorities':_0x6e70('0x1e'),'ticketstatus':_0x6e70('0x1f'),'ticket_title':intUtil['getString'](_0xc238ba[_0x6e70('0x20')],_0x208e21,'\x20'),'description':intUtil[_0x6e70('0x21')](_0xc238ba[_0x6e70('0x22')],_0x208e21,'\x0a'),'contact_id':_0x497d61['id']},getCustomFields(_0x2368eb,_0x208e21));var _0x502b2d={'method':_0x6e70('0x23'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x173afe['remoteUri']),'form':{'operation':_0x6e70('0x26'),'username':_0x173afe['username'],'sessionName':_0x3a9978['sessionName'],'elementType':'HelpDesk','element':JSON[_0x6e70('0x27')](_0x1b2453)},'json':!![]};return request(_0x502b2d)[_0x6e70('0x28')](function(_0x51d292){if(_0x51d292[_0x6e70('0x29')]){return BPromise[_0x6e70('0x2a')]({'id':_0x51d292['result']['id']});}else{throw new Error(util[_0x6e70('0x24')](_0x6e70('0x2b'),JSON[_0x6e70('0x27')](_0x51d292['error'])));}})['catch'](function(_0x2c4d37){var _0x3af17f=_0x2c4d37[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),'createTicket',_0x3af17f,JSON[_0x6e70('0x27')](_0x2c4d37));});}function getUser(_0x406f29,_0xecf336,_0x2864a0){if(intUtil[_0x6e70('0x2f')](_0xecf336)){logger[_0x6e70('0x1b')](_0x6e70('0x30'),_0xecf336);return request({'method':_0x6e70('0x31'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x406f29['remoteUri']),'qs':{'operation':_0x6e70('0x32'),'username':_0x406f29['username'],'sessionName':_0x2864a0[_0x6e70('0x33')],'query':util['format'](_0x6e70('0x34'),_0xecf336)},'json':!![]})[_0x6e70('0x28')](function(_0x30fa0b){if(_0x30fa0b['success']&&_0x30fa0b[_0x6e70('0x35')][_0x6e70('0xe')]){logger['info'](_0x6e70('0x36'));return BPromise[_0x6e70('0x2a')]({'id':_0x30fa0b['result'][0x0]['id'],'email':_0x30fa0b[_0x6e70('0x35')][0x0][_0x6e70('0x37')],'name':_0x30fa0b[_0x6e70('0x35')][0x0][_0x6e70('0x38')]+'\x20'+_0x30fa0b[_0x6e70('0x35')][_0x6e70('0x39')]});}else{logger[_0x6e70('0x1b')](_0x6e70('0x3a'));return BPromise[_0x6e70('0x2a')]({'id':_0x2864a0[_0x6e70('0x3b')],'email':_0x406f29['username'],'name':_0x6e70('0x3c')});}})['catch'](function(_0x23cd1a){var _0x3222a2=_0x23cd1a[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),_0x6e70('0x3d'),_0x3222a2,JSON[_0x6e70('0x27')](_0x23cd1a));});}else{logger[_0x6e70('0x1b')](_0x6e70('0x3a'));return BPromise[_0x6e70('0x2a')]({'id':_0x2864a0[_0x6e70('0x3b')],'email':_0x406f29[_0x6e70('0x3e')],'name':_0x6e70('0x3c')})['catch'](function(_0x5446a2){var _0x5424eb=_0x5446a2[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),_0x6e70('0x3d'),_0x5424eb,JSON[_0x6e70('0x27')](_0x5446a2));});}}function getEndUser(_0x3bdd87,_0x572a71,_0x3b508c,_0x9e7ad2){logger[_0x6e70('0x1b')](_0x6e70('0x3f'),_0x3b508c);return request({'method':_0x6e70('0x31'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x3bdd87[_0x6e70('0x40')]),'qs':{'operation':'query','username':_0x3bdd87[_0x6e70('0x3e')],'sessionName':_0x9e7ad2[_0x6e70('0x33')],'query':util[_0x6e70('0x24')](_0x6e70('0x41'),_0x3b508c,_0x3b508c,_0x3b508c,_0x3b508c,_0x3b508c)},'json':!![]})[_0x6e70('0x28')](function(_0x1de947){if(_0x1de947[_0x6e70('0x29')]&&_0x1de947['result']['length']){logger['info'](_0x6e70('0x42'));return BPromise[_0x6e70('0x2a')]({'id':_0x1de947[_0x6e70('0x35')][0x0]['id'],'name':_0x1de947[_0x6e70('0x35')][0x0][_0x6e70('0x43')]+'\x20'+_0x1de947['result'][0x0][_0x6e70('0x44')],'phone':_0x3b508c});}else{logger[_0x6e70('0x1b')](_0x6e70('0x45'));return request({'method':'POST','uri':util['format']('%s/webservice.php',_0x3bdd87[_0x6e70('0x40')]),'form':{'operation':'create','sessionName':_0x9e7ad2[_0x6e70('0x33')],'elementType':_0x6e70('0x46'),'element':JSON[_0x6e70('0x27')]({'lastname':_0x572a71,'phone':_0x3b508c,'assigned_user_id':'\x20'})},'json':!![]})[_0x6e70('0x28')](function(_0x59c87d){logger[_0x6e70('0x1b')]('Enduser\x20created.');return BPromise[_0x6e70('0x2a')]({'id':_0x59c87d[_0x6e70('0x35')]['id'],'name':_0x59c87d[_0x6e70('0x35')][_0x6e70('0x44')],'phone':_0x59c87d['result'][_0x6e70('0x47')]});})[_0x6e70('0x48')](function(_0x3d39c3){var _0xac87d6=_0x3d39c3[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),'getEndUser',_0xac87d6,JSON[_0x6e70('0x27')](_0x3d39c3));});}});}function getConnection(_0x3884a4){var _0x10de2a=_0x3884a4[_0x6e70('0x3e')];var _0x3f86cf=_0x3884a4[_0x6e70('0x49')];return request({'method':_0x6e70('0x31'),'uri':util['format'](_0x6e70('0x25'),_0x3884a4['remoteUri']),'qs':{'operation':_0x6e70('0x4a'),'username':_0x10de2a},'json':!![]})[_0x6e70('0x28')](function(_0x4b351e){if(_0x4b351e['success']){return request({'method':_0x6e70('0x23'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x3884a4['remoteUri']),'form':{'operation':'login','username':_0x10de2a,'accessKey':md5(_0x4b351e[_0x6e70('0x35')][_0x6e70('0x4b')]+_0x3f86cf)},'json':!![]});}})[_0x6e70('0x28')](function(_0x79653){if(_0x79653[_0x6e70('0x29')]){return BPromise[_0x6e70('0x2a')](_0x79653['result']);}else{throw new Error(util[_0x6e70('0x24')](_0x6e70('0x4c'),_0x3884a4['id']));}})[_0x6e70('0x48')](function(_0x6ed023){var _0x2c3a7d=_0x6ed023['statusCode']||0x1f4;logger['error'](_0x6e70('0x2e'),_0x6e70('0x4d'),_0x2c3a7d,JSON[_0x6e70('0x27')](_0x6ed023));});}function request(_0x15f994){logger[_0x6e70('0x1b')]('[HTTP]',JSON[_0x6e70('0x27')](_0x15f994));return rp(_0x15f994);}exports[_0x6e70('0x4e')]=function(_0x1fa320,_0x23ebfb,_0x3aba34,_0x4a111a,_0x1142cd,_0x1dd242){var _0x2c20d3,_0x3fb0d3,_0x8ef4f7,_0x3fd03d;_0x1dd242['remoteUri']=intUtil[_0x6e70('0x4f')](_0x1dd242[_0x6e70('0x40')]);if(_0x1142cd&&_0x1142cd['monitor_format']){logger[_0x6e70('0x1b')](_0x6e70('0x50'),'Recording\x20is\x20enabled!');_0x23ebfb[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x1dd242[_0x6e70('0x53')],_0x23ebfb[_0x6e70('0x54')],md5(_0x23ebfb['uniqueid']));}else{_0x23ebfb[_0x6e70('0x51')]='';}return getConnection(_0x1dd242)[_0x6e70('0x28')](function(_0x10d655){_0x3fd03d=_0x10d655;return getUser(_0x1dd242,_0x4a111a[_0x6e70('0x55')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x1fe13a){_0x2c20d3=_0x1fe13a;logger[_0x6e70('0x1b')](_0x6e70('0x56'),_0x2c20d3['id']);return getEndUser(_0x1dd242,_0x23ebfb[_0x6e70('0x57')],_0x23ebfb[_0x6e70('0x58')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x1b12a1){_0x3fb0d3=_0x1b12a1;logger[_0x6e70('0x1b')](_0x6e70('0x59'),_0x3fb0d3['id']);return createTicket(_0x1dd242,_0x2c20d3,_0x3fb0d3,_0x3aba34,_0x23ebfb,_0x3aba34[_0x6e70('0x5a')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x324fa6){_0x8ef4f7=_0x324fa6;logger[_0x6e70('0x1b')](_0x6e70('0x5b'));logger[_0x6e70('0x1b')]('The\x20Ticket\x20ID\x20is:',_0x8ef4f7['id']);var _0x28898a=util[_0x6e70('0x24')](_0x6e70('0x5c'),_0x1dd242[_0x6e70('0x40')],_[_0x6e70('0x5d')](_0x8ef4f7['id'],'x')[0x1]);logger[_0x6e70('0x1b')]('[QUEUE]',_0x6e70('0x5e'));emit(util[_0x6e70('0x24')]('user:%s',_0x4a111a[_0x6e70('0x19')]),_0x6e70('0x5f'),{'uri':_0x28898a});})[_0x6e70('0x48')](function(_0x590f7f){logger['error'](_0x6e70('0x50'),JSON[_0x6e70('0x27')](_0x590f7f));});};exports[_0x6e70('0x60')]=function(_0x41a861,_0x10d299,_0x739946,_0x30cd88,_0x57bfe5,_0x4d47e1,_0x2c8dc6){var _0x1e23c5,_0x2bf9ec,_0x2ad395,_0x5b1e6f;_0x4d47e1['remoteUri']=intUtil[_0x6e70('0x4f')](_0x4d47e1[_0x6e70('0x40')]);_0x4d47e1['serverUrl']=intUtil['stripTrailingSlash'](_0x4d47e1[_0x6e70('0x53')]);if(_0x2c8dc6&&_0x2c8dc6['recordingFormat']&&_0x2c8dc6[_0x6e70('0x61')]!==_0x6e70('0x62')){logger[_0x6e70('0x1b')](_0x6e70('0x63'),_0x6e70('0x64'));_0x10d299[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x4d47e1['serverUrl'],_0x10d299[_0x6e70('0x54')],md5(_0x10d299[_0x6e70('0x54')]));}return getConnection(_0x4d47e1)[_0x6e70('0x28')](function(_0x346c79){_0x5b1e6f=_0x346c79;return getUser(_0x4d47e1,_0x30cd88[_0x6e70('0x55')],_0x5b1e6f);})['then'](function(_0x5f5b02){_0x1e23c5=_0x5f5b02;logger['info'](_0x6e70('0x56'),_0x1e23c5['id']);return getEndUser(_0x4d47e1,_0x10d299[_0x6e70('0x65')],_0x10d299[_0x6e70('0x66')],_0x5b1e6f);})['then'](function(_0x58cf1c){_0x2bf9ec=_0x58cf1c;logger[_0x6e70('0x1b')](_0x6e70('0x59'),_0x2bf9ec['id']);return createTicket(_0x4d47e1,_0x1e23c5,_0x2bf9ec,_0x739946,_0x10d299,_0x739946[_0x6e70('0x5a')],_0x5b1e6f);})[_0x6e70('0x28')](function(_0x2285f1){_0x2ad395=_0x2285f1;logger[_0x6e70('0x1b')]('Ticket\x20created!');logger[_0x6e70('0x1b')](_0x6e70('0x67'),_0x2ad395['id']);var _0x30d11b=util[_0x6e70('0x24')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x4d47e1[_0x6e70('0x40')],_['split'](_0x2ad395['id'],'x')[0x1]);logger['info'](_0x6e70('0x63'),_0x6e70('0x5e'));emit(util[_0x6e70('0x24')](_0x6e70('0x68'),_0x30cd88[_0x6e70('0x19')]),_0x6e70('0x5f'),{'uri':_0x30d11b});})['catch'](function(_0x370eeb){logger[_0x6e70('0x2d')](_0x6e70('0x63'),JSON[_0x6e70('0x27')](_0x370eeb));});};exports[_0x6e70('0x69')]=function(_0x13c092,_0x363722,_0xd9b4a9,_0x2f1362,_0x29621a,_0x575938){var _0x44c877,_0x303c5a,_0x577c3b,_0x5d398a;_0x575938['remoteUri']=intUtil[_0x6e70('0x4f')](_0x575938[_0x6e70('0x40')]);_0x575938[_0x6e70('0x53')]=intUtil[_0x6e70('0x4f')](_0x575938[_0x6e70('0x53')]);if(_0x29621a&&_0x29621a['monitor_format']){logger['info']('['+_0x363722[_0x6e70('0x6a')][_0x6e70('0x6b')]()+']','Recording\x20is\x20enabled!');_0x363722[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x575938[_0x6e70('0x53')],_0x363722[_0x6e70('0x54')],md5(_0x363722[_0x6e70('0x54')]));}else{_0x363722[_0x6e70('0x51')]='';}return getConnection(_0x575938)[_0x6e70('0x28')](function(_0x3650e9){_0x5d398a=_0x3650e9;return getUser(_0x575938,'',_0x5d398a);})[_0x6e70('0x28')](function(_0x347cc4){_0x44c877=_0x347cc4;logger[_0x6e70('0x1b')](_0x6e70('0x56'),_0x44c877['id']);return getEndUser(_0x575938,_0x363722[_0x6e70('0x57')],_0x363722['calleridnum'],_0x5d398a);})['then'](function(_0x39ed95){_0x303c5a=_0x39ed95;logger['info'](_0x6e70('0x59'),_0x303c5a['id']);return createTicket(_0x575938,_0x44c877,_0x303c5a,_0xd9b4a9,_0x363722,_0xd9b4a9['Fields'],_0x5d398a);})['then'](function(_0x402f6f){_0x577c3b=_0x402f6f;logger['info']('Ticket\x20created!');logger[_0x6e70('0x1b')](_0x6e70('0x67'),_0x577c3b['id']);})[_0x6e70('0x48')](function(_0x4e9fda){logger['error']('['+_0x363722['lastevent'][_0x6e70('0x6b')]()+']',JSON['stringify'](_0x4e9fda));});};
\ No newline at end of file
index ab3999d..35d2d95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bd9=['recordingFormat','none','destcalleridname','destcalleridnum','POST','newTab','[OUTBOUND]','lastevent','toUpperCase','The\x20User\x20ID\x20is:','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','util','ioredis','./util','../../../../config/logger','redis','defaults','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','%s/tickets.json','remoteUri','merge','Tags','name','getString','Subjects','Descriptions','then','Ticket\x20created!','ticket','%s/search.json','format','count','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','length','filter','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','end-user','Caller\x20-\x20%s','Enduser\x20created.','user','password','%s:%s','username','authType','token','%s/token:%s','Basic\x20%s','toString','base64','stringify','GET','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','idField','custom_fields','variable','variableName','customVariable','Variable','push','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','email','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/agent/tickets/%s','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','inspect','outbound'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x7bd9,0x14f));var _0x97bd=function(_0x2df507,_0x553862){_0x2df507=_0x2df507-0x0;var _0x1f7167=_0x7bd9[_0x2df507];return _0x1f7167;};'use strict';var _=require(_0x97bd('0x0'));var rp=require(_0x97bd('0x1'));var md5=require('md5');var util=require(_0x97bd('0x2'));var Redis=require(_0x97bd('0x3'));var intUtil=require(_0x97bd('0x4'));var config=require('../../../../config/environment');var logger=require(_0x97bd('0x5'))('zendesk');config[_0x97bd('0x6')]=_[_0x97bd('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x97bd('0x8'))(new Redis(config[_0x97bd('0x6')]));function emit(_0x419fbd,_0xcb35ca,_0x1a3ca5){io['to'](_0x419fbd)[_0x97bd('0x9')](_0xcb35ca,_0x1a3ca5);}var headers={'Content-Type':_0x97bd('0xa'),'Accept':_0x97bd('0xa')};function getTicket(_0xcaf280,_0x509406,_0x3f6d8f,_0xb5120,_0x48a6d0){logger[_0x97bd('0xb')](_0x97bd('0xc'));return request({'uri':util['format'](_0x97bd('0xd'),_0xcaf280[_0x97bd('0xe')]),'method':'POST','body':{'ticket':_[_0x97bd('0xf')]({'requester_id':_0x3f6d8f['id'],'submitter_id':_0x509406?_0x509406['id']:undefined,'assignee_id':_0x509406?_0x509406['id']:undefined,'tags':getTags(_0xb5120[_0x97bd('0x10')],_0x97bd('0x11')),'subject':intUtil[_0x97bd('0x12')](_0xb5120[_0x97bd('0x13')],_0x48a6d0,'\x20'),'description':intUtil['getString'](_0xb5120[_0x97bd('0x14')],_0x48a6d0,'\x0a'),'comment':{'public':![],'body':intUtil[_0x97bd('0x12')](_0xb5120[_0x97bd('0x14')],_0x48a6d0,'\x0a')}},getCustomFields(_0xb5120['Fields'],_0x48a6d0))}})[_0x97bd('0x15')](function(_0x19d928){logger[_0x97bd('0xb')](_0x97bd('0x16'));return _0x19d928[_0x97bd('0x17')];});}function getUser(_0x509092,_0x5979bd){if(intUtil['validateEmail'](_0x5979bd)){logger[_0x97bd('0xb')]('Getting\x20agent\x20with\x20email',_0x5979bd);return request({'uri':util['format'](_0x97bd('0x18'),_0x509092['remoteUri']),'qs':{'query':util[_0x97bd('0x19')]('type:user\x20role:agent\x20email:%s',_0x5979bd)}})[_0x97bd('0x15')](function(_0x481351){if(_0x481351[_0x97bd('0x1a')]){logger[_0x97bd('0xb')]('Agent\x20found!');return _['find'](_0x481351[_0x97bd('0x1b')],{'email':_0x5979bd,'role':_0x97bd('0x1c')});}else{logger[_0x97bd('0xb')](_0x97bd('0x1d'));return request({'uri':util['format'](_0x97bd('0x1e'),_0x509092[_0x97bd('0xe')])})['then'](function(_0x7cb02f){logger[_0x97bd('0xb')](_0x97bd('0x1f'));return _0x7cb02f['user'];});}});}else{logger['info'](_0x97bd('0x1d'));return request({'uri':util[_0x97bd('0x19')](_0x97bd('0x1e'),_0x509092[_0x97bd('0xe')])})[_0x97bd('0x15')](function(_0x1b1af9){logger[_0x97bd('0xb')](_0x97bd('0x1f'));return _0x1b1af9['user'];});}}function getEndUser(_0x2d63db,_0x389a40,_0x8fe4f3){logger[_0x97bd('0xb')]('Searching\x20enduser\x20with\x20phone',_0x8fe4f3);return request({'uri':util['format'](_0x97bd('0x18'),_0x2d63db[_0x97bd('0xe')]),'qs':{'query':util[_0x97bd('0x19')]('type:user\x20role:end-user\x20phone:%s',_0x8fe4f3)}})['then'](function(_0xd2be28){var _0x43354b;if(_0xd2be28[_0x97bd('0x1b')][_0x97bd('0x20')]){_0xd2be28[_0x97bd('0x1b')]=_[_0x97bd('0x21')](_0xd2be28[_0x97bd('0x1b')],{'suspended':![],'role':'end-user'});if(_0xd2be28[_0x97bd('0x1b')][_0x97bd('0x20')]){_0x43354b=_[_0x97bd('0x22')](_0xd2be28[_0x97bd('0x1b')]);}}if(_0x43354b){logger['info'](_0x97bd('0x23'));return _0x43354b;}else{logger['info'](_0x97bd('0x24'));return request({'uri':util['format'](_0x97bd('0x25'),_0x2d63db[_0x97bd('0xe')]),'method':'POST','body':{'user':{'role':_0x97bd('0x26'),'name':util[_0x97bd('0x19')](_0x97bd('0x27'),_0x389a40||_0x8fe4f3),'phone':_0x8fe4f3}}})[_0x97bd('0x15')](function(_0x3ee0c6){logger[_0x97bd('0xb')](_0x97bd('0x28'));return _0x3ee0c6[_0x97bd('0x29')];});}});}function getAuth(_0x1cbeab){var _0x588d4e;if(_0x1cbeab['authType']===_0x97bd('0x2a')){_0x588d4e=util[_0x97bd('0x19')](_0x97bd('0x2b'),_0x1cbeab[_0x97bd('0x2c')],_0x1cbeab[_0x97bd('0x2a')]);}else if(_0x1cbeab[_0x97bd('0x2d')]===_0x97bd('0x2e')){_0x588d4e=util[_0x97bd('0x19')](_0x97bd('0x2f'),_0x1cbeab[_0x97bd('0x2c')],_0x1cbeab[_0x97bd('0x2e')]);}return util[_0x97bd('0x19')](_0x97bd('0x30'),new Buffer(_0x588d4e)[_0x97bd('0x31')](_0x97bd('0x32')));}function request(_0x3ebd79){logger['debug']('[HTTP]',JSON[_0x97bd('0x33')](_0x3ebd79));return rp(_[_0x97bd('0x7')](_0x3ebd79,{'method':_0x97bd('0x34'),'headers':headers,'json':!![]}));}function getTags(_0x581b74,_0x57bd5a){var _0x56c945=[];if(_0x581b74&&_0x581b74[_0x97bd('0x20')]>0x0){_0x56c945=_[_0x97bd('0x35')](_0x581b74,_0x57bd5a);}return _0x56c945;}function getCustomFields(_0x25daaa,_0x59fe86){var _0x4e88d4=[];var _0x11cf14={'custom_fields':[]};if(_0x25daaa[_0x97bd('0x20')]>0x0){_[_0x97bd('0x36')](_0x25daaa,function(_0x5a2b32){if(_[_0x97bd('0x37')]([_0x97bd('0x38'),_0x97bd('0x39')],_0x5a2b32[_0x97bd('0x3a')])&&_0x5a2b32[_0x97bd('0x3b')]&&!_0x5a2b32[_0x97bd('0x3c')]){_0x11cf14[_0x5a2b32[_0x97bd('0x3b')][_0x97bd('0x3d')]()]=_0x5a2b32[_0x97bd('0x3e')][_0x97bd('0x31')]();}else if(_[_0x97bd('0x37')]([_0x97bd('0x38'),_0x97bd('0x39')],_0x5a2b32[_0x97bd('0x3a')])&&_0x5a2b32[_0x97bd('0x3f')]&&_0x5a2b32[_0x97bd('0x3c')]){_0x11cf14[_0x97bd('0x40')]['push']({'id':_0x5a2b32[_0x97bd('0x3f')],'value':_0x5a2b32['content'][_0x97bd('0x31')]()});}else if(_0x5a2b32[_0x97bd('0x3a')]===_0x97bd('0x41')&&_0x5a2b32[_0x97bd('0x42')]&&_0x5a2b32[_0x97bd('0x3f')]&&_0x5a2b32[_0x97bd('0x3c')]){_0x59fe86[_0x5a2b32['variableName']]&&_0x11cf14[_0x97bd('0x40')]['push']({'id':_0x5a2b32[_0x97bd('0x3f')],'value':_0x59fe86[_0x5a2b32[_0x97bd('0x42')]][_0x97bd('0x31')]()});}else if(_0x5a2b32[_0x97bd('0x3a')]===_0x97bd('0x43')&&_0x5a2b32[_0x97bd('0x44')]&&_0x5a2b32[_0x97bd('0x44')][_0x97bd('0x11')]&&_0x5a2b32[_0x97bd('0x3f')]&&_0x5a2b32['customField']){_0x59fe86[_0x5a2b32['Variable'][_0x97bd('0x11')]['toLowerCase']()]&&_0x11cf14['custom_fields'][_0x97bd('0x45')]({'id':_0x5a2b32['idField'],'value':_0x59fe86[_0x5a2b32[_0x97bd('0x44')][_0x97bd('0x11')][_0x97bd('0x3d')]()][_0x97bd('0x31')]()});}});}return _0x11cf14;}exports[_0x97bd('0x46')]=function(_0x2406b0,_0x236364,_0x1658c5,_0x581de5,_0x5d6d51,_0x25c55e){var _0x32ac43,_0x348d98;_0x25c55e[_0x97bd('0xe')]=intUtil['stripTrailingSlash'](_0x25c55e['remoteUri']);_0x25c55e[_0x97bd('0x47')]=intUtil[_0x97bd('0x48')](_0x25c55e[_0x97bd('0x47')]);if(_0x5d6d51&&_0x5d6d51[_0x97bd('0x49')]){logger[_0x97bd('0xb')](_0x97bd('0x4a'),_0x97bd('0x4b'));_0x236364['recordingURL']=util[_0x97bd('0x19')](_0x97bd('0x4c'),_0x25c55e['serverUrl'],_0x236364[_0x97bd('0x4d')],md5(_0x236364[_0x97bd('0x4d')]));}else{_0x236364[_0x97bd('0x4e')]='';}headers[_0x97bd('0x4f')]=getAuth(_0x25c55e);return getUser(_0x25c55e,_0x581de5[_0x97bd('0x50')])[_0x97bd('0x15')](function(_0x13152d){_0x32ac43=_0x13152d;logger[_0x97bd('0xb')]('The\x20User\x20ID\x20is:',_0x32ac43['id']);return getEndUser(_0x25c55e,_0x236364[_0x97bd('0x51')],_0x236364['calleridnum']);})['then'](function(_0x346af9){_0x348d98=_0x346af9;logger['info'](_0x97bd('0x52'),_0x348d98['id']);return getTicket(_0x25c55e,_0x32ac43,_0x348d98,_0x1658c5,_0x236364);})['then'](function(_0x201b63){if(_0x201b63){logger['info'](_0x97bd('0x53'),_0x201b63['id']);switch(_0x25c55e['type']){case _0x97bd('0x54'):logger[_0x97bd('0xb')]('[QUEUE]',_0x97bd('0x55'));return request({'uri':util[_0x97bd('0x19')](_0x97bd('0x56'),_0x25c55e['remoteUri'],_0x32ac43['id'],_0x201b63['id']),'method':'POST'});case'newTab':logger[_0x97bd('0xb')]('[QUEUE]',_0x97bd('0x57'));emit(util[_0x97bd('0x19')](_0x97bd('0x58'),_0x581de5['name']),'trigger:browser:url',{'uri':util['format'](_0x97bd('0x59'),_0x25c55e[_0x97bd('0xe')][_0x97bd('0x5a')](_0x97bd('0x5b'),''),_0x201b63['id'])});break;default:logger[_0x97bd('0x5c')](_0x97bd('0x4a'),_0x97bd('0x5d'));}}})[_0x97bd('0x5e')](function(_0x42f865){logger['error']('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util[_0x97bd('0x5f')](_0x42f865,{'showHidden':!![],'depth':null}));});};exports[_0x97bd('0x60')]=function(_0x16fe92,_0x554313,_0x95e284,_0xde161c,_0x1ceeb2,_0x4cdf50,_0x161496){var _0x10c09c,_0xf0b79b;_0x4cdf50[_0x97bd('0xe')]=intUtil[_0x97bd('0x48')](_0x4cdf50[_0x97bd('0xe')]);_0x4cdf50[_0x97bd('0x47')]=intUtil[_0x97bd('0x48')](_0x4cdf50[_0x97bd('0x47')]);if(_0x161496&&_0x161496[_0x97bd('0x61')]&&_0x161496['recordingFormat']!==_0x97bd('0x62')){logger[_0x97bd('0xb')]('[OUTBOUND]',_0x97bd('0x4b'));_0x554313[_0x97bd('0x4e')]=util[_0x97bd('0x19')](_0x97bd('0x4c'),_0x4cdf50['serverUrl'],_0x554313[_0x97bd('0x4d')],md5(_0x554313['uniqueid']));}headers[_0x97bd('0x4f')]=getAuth(_0x4cdf50);return getUser(_0x4cdf50,_0xde161c[_0x97bd('0x50')])['then'](function(_0x237d6e){_0x10c09c=_0x237d6e;logger[_0x97bd('0xb')]('The\x20User\x20ID\x20is:',_0x10c09c['id']);return getEndUser(_0x4cdf50,_0x554313[_0x97bd('0x63')],_0x554313[_0x97bd('0x64')]);})[_0x97bd('0x15')](function(_0x5cd386){_0xf0b79b=_0x5cd386;logger[_0x97bd('0xb')](_0x97bd('0x52'),_0xf0b79b['id']);return getTicket(_0x4cdf50,_0x10c09c,_0xf0b79b,_0x95e284,_0x554313);})[_0x97bd('0x15')](function(_0x561f0c){if(_0x561f0c){logger[_0x97bd('0xb')](_0x97bd('0x53'),_0x561f0c['id']);switch(_0x4cdf50[_0x97bd('0x3a')]){case _0x97bd('0x54'):logger[_0x97bd('0xb')]('[OUTBOUND]',_0x97bd('0x55'));return request({'uri':util[_0x97bd('0x19')](_0x97bd('0x56'),_0x4cdf50[_0x97bd('0xe')],_0x10c09c['id'],_0x561f0c['id']),'method':_0x97bd('0x65')});case _0x97bd('0x66'):logger[_0x97bd('0xb')]('[OUTBOUND]',_0x97bd('0x57'));emit(util[_0x97bd('0x19')](_0x97bd('0x58'),_0xde161c[_0x97bd('0x11')]),'trigger:browser:url',{'uri':util['format']('%s/agent/tickets/%s',_0x4cdf50[_0x97bd('0xe')][_0x97bd('0x5a')]('/api/v2',''),_0x561f0c['id'])});break;default:logger[_0x97bd('0x5c')](_0x97bd('0x67'),_0x97bd('0x5d'));}}})[_0x97bd('0x5e')](function(_0x51f0ae){logger[_0x97bd('0x5c')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util[_0x97bd('0x5f')](_0x51f0ae,{'showHidden':!![],'depth':null}));});};exports['unmanaged']=function(_0x24f183,_0x23bd19,_0x4f9f90,_0x5efce4,_0x486de0,_0x36363b){var _0xd419ab,_0x67925e;_0x36363b['remoteUri']=intUtil[_0x97bd('0x48')](_0x36363b[_0x97bd('0xe')]);_0x36363b['serverUrl']=intUtil['stripTrailingSlash'](_0x36363b[_0x97bd('0x47')]);if(_0x486de0&&_0x486de0[_0x97bd('0x49')]){logger[_0x97bd('0xb')]('['+_0x23bd19[_0x97bd('0x68')][_0x97bd('0x69')]()+']',_0x97bd('0x4b'));_0x23bd19[_0x97bd('0x4e')]=util[_0x97bd('0x19')](_0x97bd('0x4c'),_0x36363b[_0x97bd('0x47')],_0x23bd19[_0x97bd('0x4d')],md5(_0x23bd19[_0x97bd('0x4d')]));}else{_0x23bd19[_0x97bd('0x4e')]='';}headers[_0x97bd('0x4f')]=getAuth(_0x36363b);return getUser(_0x36363b)[_0x97bd('0x15')](function(_0x3afd4d){_0xd419ab=_0x3afd4d;logger[_0x97bd('0xb')](_0x97bd('0x6a'),_0xd419ab['id']);return getEndUser(_0x36363b,_0x23bd19[_0x97bd('0x51')],_0x23bd19['calleridnum']);})[_0x97bd('0x15')](function(_0x2dd7d3){_0x67925e=_0x2dd7d3;logger[_0x97bd('0xb')](_0x97bd('0x52'),_0x67925e['id']);return getTicket(_0x36363b,_0xd419ab,_0x67925e,_0x4f9f90,_0x23bd19);})[_0x97bd('0x15')](function(_0x439ffa){if(_0x439ffa){logger[_0x97bd('0xb')]('The\x20Ticket\x20ID\x20is:',_0x439ffa['id']);}})[_0x97bd('0x5e')](function(_0x883c9e){logger['error']('['+_0x23bd19[_0x97bd('0x68')]['toUpperCase']()+']'+_0x97bd('0x6b'),util[_0x97bd('0x5f')](_0x883c9e,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xa0a7=['zendesk','redis','defaults','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','merge','Tags','name','getString','Subjects','Descriptions','Fields','then','Ticket\x20created!','ticket','Getting\x20agent\x20with\x20email','%s/search.json','Agent\x20found!','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','length','results','Enduser\x20found!','Enduser\x20created.','authType','password','%s:%s','token','%s/token:%s','username','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','GET','forEach','includes','string','picklist','type','content','idField','custom_fields','variable','variableName','customField','push','customVariable','Variable','toLowerCase','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','uniqueid','recordingURL','email','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/agent/tickets/%s','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','Authorization','destcalleridname','destcalleridnum','[OUTBOUND]','trigger:browser:url','replace','unmanaged','lastevent','toUpperCase','calleridname','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger'];(function(_0x245afe,_0x319cde){var _0x4eefde=function(_0x15a1fa){while(--_0x15a1fa){_0x245afe['push'](_0x245afe['shift']());}};_0x4eefde(++_0x319cde);}(_0xa0a7,0x148));var _0x7a0a=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xa0a7[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x7a0a('0x0'));var rp=require(_0x7a0a('0x1'));var md5=require(_0x7a0a('0x2'));var util=require(_0x7a0a('0x3'));var Redis=require(_0x7a0a('0x4'));var intUtil=require(_0x7a0a('0x5'));var config=require(_0x7a0a('0x6'));var logger=require(_0x7a0a('0x7'))(_0x7a0a('0x8'));config[_0x7a0a('0x9')]=_[_0x7a0a('0xa')](config[_0x7a0a('0x9')],{'host':_0x7a0a('0xb'),'port':0x18eb});var io=require(_0x7a0a('0xc'))(new Redis(config[_0x7a0a('0x9')]));function emit(_0x20f542,_0x30c3ab,_0xb221f3){io['to'](_0x20f542)[_0x7a0a('0xd')](_0x30c3ab,_0xb221f3);}var headers={'Content-Type':_0x7a0a('0xe'),'Accept':_0x7a0a('0xe')};function getTicket(_0x5c2d27,_0x279850,_0x203c5c,_0x4b0789,_0x3865b6){logger[_0x7a0a('0xf')](_0x7a0a('0x10'));return request({'uri':util[_0x7a0a('0x11')](_0x7a0a('0x12'),_0x5c2d27[_0x7a0a('0x13')]),'method':_0x7a0a('0x14'),'body':{'ticket':_[_0x7a0a('0x15')]({'requester_id':_0x203c5c['id'],'submitter_id':_0x279850?_0x279850['id']:undefined,'assignee_id':_0x279850?_0x279850['id']:undefined,'tags':getTags(_0x4b0789[_0x7a0a('0x16')],_0x7a0a('0x17')),'subject':intUtil[_0x7a0a('0x18')](_0x4b0789[_0x7a0a('0x19')],_0x3865b6,'\x20'),'description':intUtil['getString'](_0x4b0789[_0x7a0a('0x1a')],_0x3865b6,'\x0a'),'comment':{'public':![],'body':intUtil[_0x7a0a('0x18')](_0x4b0789[_0x7a0a('0x1a')],_0x3865b6,'\x0a')}},getCustomFields(_0x4b0789[_0x7a0a('0x1b')],_0x3865b6))}})[_0x7a0a('0x1c')](function(_0x55b0d2){logger[_0x7a0a('0xf')](_0x7a0a('0x1d'));return _0x55b0d2[_0x7a0a('0x1e')];});}function getUser(_0x16d69d,_0x4d439b){if(intUtil['validateEmail'](_0x4d439b)){logger[_0x7a0a('0xf')](_0x7a0a('0x1f'),_0x4d439b);return request({'uri':util[_0x7a0a('0x11')](_0x7a0a('0x20'),_0x16d69d[_0x7a0a('0x13')]),'qs':{'query':util[_0x7a0a('0x11')]('type:user\x20role:agent\x20email:%s',_0x4d439b)}})[_0x7a0a('0x1c')](function(_0x5e72ff){if(_0x5e72ff['count']){logger[_0x7a0a('0xf')](_0x7a0a('0x21'));return _['find'](_0x5e72ff['results'],{'email':_0x4d439b,'role':'agent'});}else{logger[_0x7a0a('0xf')](_0x7a0a('0x22'));return request({'uri':util[_0x7a0a('0x11')](_0x7a0a('0x23'),_0x16d69d[_0x7a0a('0x13')])})[_0x7a0a('0x1c')](function(_0x4cb298){logger[_0x7a0a('0xf')](_0x7a0a('0x24'));return _0x4cb298[_0x7a0a('0x25')];});}});}else{logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x7a0a('0x11')](_0x7a0a('0x23'),_0x16d69d[_0x7a0a('0x13')])})[_0x7a0a('0x1c')](function(_0x3e0624){logger[_0x7a0a('0xf')](_0x7a0a('0x24'));return _0x3e0624[_0x7a0a('0x25')];});}}function getEndUser(_0x25f9ff,_0x376b83,_0x360c70){logger[_0x7a0a('0xf')](_0x7a0a('0x26'),_0x360c70);return request({'uri':util[_0x7a0a('0x11')](_0x7a0a('0x20'),_0x25f9ff[_0x7a0a('0x13')]),'qs':{'query':util[_0x7a0a('0x11')](_0x7a0a('0x27'),_0x360c70)}})[_0x7a0a('0x1c')](function(_0x1589d1){var _0x19752d;if(_0x1589d1['results'][_0x7a0a('0x28')]){_0x1589d1[_0x7a0a('0x29')]=_['filter'](_0x1589d1[_0x7a0a('0x29')],{'suspended':![],'role':'end-user'});if(_0x1589d1[_0x7a0a('0x29')][_0x7a0a('0x28')]){_0x19752d=_['first'](_0x1589d1['results']);}}if(_0x19752d){logger[_0x7a0a('0xf')](_0x7a0a('0x2a'));return _0x19752d;}else{logger['info']('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util['format']('%s/users.json',_0x25f9ff[_0x7a0a('0x13')]),'method':_0x7a0a('0x14'),'body':{'user':{'role':'end-user','name':util['format']('Caller\x20-\x20%s',_0x376b83||_0x360c70),'phone':_0x360c70}}})[_0x7a0a('0x1c')](function(_0xd5c14a){logger['info'](_0x7a0a('0x2b'));return _0xd5c14a[_0x7a0a('0x25')];});}});}function getAuth(_0x41e902){var _0x41b3f5;if(_0x41e902[_0x7a0a('0x2c')]===_0x7a0a('0x2d')){_0x41b3f5=util[_0x7a0a('0x11')](_0x7a0a('0x2e'),_0x41e902['username'],_0x41e902['password']);}else if(_0x41e902[_0x7a0a('0x2c')]===_0x7a0a('0x2f')){_0x41b3f5=util[_0x7a0a('0x11')](_0x7a0a('0x30'),_0x41e902[_0x7a0a('0x31')],_0x41e902[_0x7a0a('0x2f')]);}return util[_0x7a0a('0x11')](_0x7a0a('0x32'),new Buffer(_0x41b3f5)[_0x7a0a('0x33')](_0x7a0a('0x34')));}function request(_0x423448){logger[_0x7a0a('0x35')](_0x7a0a('0x36'),JSON[_0x7a0a('0x37')](_0x423448));return rp(_[_0x7a0a('0xa')](_0x423448,{'method':_0x7a0a('0x38'),'headers':headers,'json':!![]}));}function getTags(_0x4a7918,_0x3e8ef4){var _0x427313=[];if(_0x4a7918&&_0x4a7918['length']>0x0){_0x427313=_['map'](_0x4a7918,_0x3e8ef4);}return _0x427313;}function getCustomFields(_0x14a453,_0x2a9262){var _0x384208=[];var _0x595d3e={'custom_fields':[]};if(_0x14a453[_0x7a0a('0x28')]>0x0){_[_0x7a0a('0x39')](_0x14a453,function(_0x67b0c5){if(_[_0x7a0a('0x3a')]([_0x7a0a('0x3b'),_0x7a0a('0x3c')],_0x67b0c5[_0x7a0a('0x3d')])&&_0x67b0c5['nameField']&&!_0x67b0c5['customField']){_0x595d3e[_0x67b0c5['nameField']['toLowerCase']()]=_0x67b0c5[_0x7a0a('0x3e')][_0x7a0a('0x33')]();}else if(_[_0x7a0a('0x3a')]([_0x7a0a('0x3b'),'picklist'],_0x67b0c5[_0x7a0a('0x3d')])&&_0x67b0c5[_0x7a0a('0x3f')]&&_0x67b0c5['customField']){_0x595d3e[_0x7a0a('0x40')]['push']({'id':_0x67b0c5[_0x7a0a('0x3f')],'value':_0x67b0c5[_0x7a0a('0x3e')]['toString']()});}else if(_0x67b0c5['type']===_0x7a0a('0x41')&&_0x67b0c5[_0x7a0a('0x42')]&&_0x67b0c5[_0x7a0a('0x3f')]&&_0x67b0c5[_0x7a0a('0x43')]){_0x2a9262[_0x67b0c5[_0x7a0a('0x42')]]&&_0x595d3e['custom_fields'][_0x7a0a('0x44')]({'id':_0x67b0c5[_0x7a0a('0x3f')],'value':_0x2a9262[_0x67b0c5['variableName']][_0x7a0a('0x33')]()});}else if(_0x67b0c5[_0x7a0a('0x3d')]===_0x7a0a('0x45')&&_0x67b0c5['Variable']&&_0x67b0c5['Variable'][_0x7a0a('0x17')]&&_0x67b0c5[_0x7a0a('0x3f')]&&_0x67b0c5['customField']){_0x2a9262[_0x67b0c5[_0x7a0a('0x46')][_0x7a0a('0x17')][_0x7a0a('0x47')]()]&&_0x595d3e[_0x7a0a('0x40')]['push']({'id':_0x67b0c5['idField'],'value':_0x2a9262[_0x67b0c5['Variable']['name']['toLowerCase']()][_0x7a0a('0x33')]()});}});}return _0x595d3e;}exports[_0x7a0a('0x48')]=function(_0x3d968d,_0x3dac9f,_0x411b4d,_0x117e89,_0x442e6f,_0x20e001){var _0x303027,_0x2c5b37;_0x20e001['remoteUri']=intUtil[_0x7a0a('0x49')](_0x20e001[_0x7a0a('0x13')]);_0x20e001[_0x7a0a('0x4a')]=intUtil['stripTrailingSlash'](_0x20e001[_0x7a0a('0x4a')]);if(_0x442e6f&&_0x442e6f[_0x7a0a('0x4b')]){logger[_0x7a0a('0xf')](_0x7a0a('0x4c'),_0x7a0a('0x4d'));_0x3dac9f['recordingURL']=util[_0x7a0a('0x11')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x20e001[_0x7a0a('0x4a')],_0x3dac9f[_0x7a0a('0x4e')],md5(_0x3dac9f[_0x7a0a('0x4e')]));}else{_0x3dac9f[_0x7a0a('0x4f')]='';}headers['Authorization']=getAuth(_0x20e001);return getUser(_0x20e001,_0x117e89[_0x7a0a('0x50')])[_0x7a0a('0x1c')](function(_0x398afe){_0x303027=_0x398afe;logger[_0x7a0a('0xf')](_0x7a0a('0x51'),_0x303027['id']);return getEndUser(_0x20e001,_0x3dac9f['calleridname'],_0x3dac9f[_0x7a0a('0x52')]);})[_0x7a0a('0x1c')](function(_0x5ad679){_0x2c5b37=_0x5ad679;logger[_0x7a0a('0xf')](_0x7a0a('0x53'),_0x2c5b37['id']);return getTicket(_0x20e001,_0x303027,_0x2c5b37,_0x411b4d,_0x3dac9f);})[_0x7a0a('0x1c')](function(_0x18952c){if(_0x18952c){logger[_0x7a0a('0xf')](_0x7a0a('0x54'),_0x18952c['id']);switch(_0x20e001[_0x7a0a('0x3d')]){case _0x7a0a('0x55'):logger[_0x7a0a('0xf')]('[QUEUE]',_0x7a0a('0x56'));return request({'uri':util['format'](_0x7a0a('0x57'),_0x20e001[_0x7a0a('0x13')],_0x303027['id'],_0x18952c['id']),'method':_0x7a0a('0x14')});case _0x7a0a('0x58'):logger[_0x7a0a('0xf')](_0x7a0a('0x4c'),_0x7a0a('0x59'));emit(util[_0x7a0a('0x11')](_0x7a0a('0x5a'),_0x117e89[_0x7a0a('0x17')]),'trigger:browser:url',{'uri':util[_0x7a0a('0x11')](_0x7a0a('0x5b'),_0x20e001[_0x7a0a('0x13')]['replace'](_0x7a0a('0x5c'),''),_0x18952c['id'])});break;default:logger[_0x7a0a('0x5d')](_0x7a0a('0x4c'),_0x7a0a('0x5e'));}}})[_0x7a0a('0x5f')](function(_0xbdbeca){logger['error'](_0x7a0a('0x60'),util[_0x7a0a('0x61')](_0xbdbeca,{'showHidden':!![],'depth':null}));});};exports[_0x7a0a('0x62')]=function(_0x2611e4,_0x49e998,_0x5792d3,_0x384929,_0x574302,_0x5d1940,_0x5aec48){var _0x2a341d,_0x50e9c1;_0x5d1940[_0x7a0a('0x13')]=intUtil['stripTrailingSlash'](_0x5d1940['remoteUri']);_0x5d1940[_0x7a0a('0x4a')]=intUtil[_0x7a0a('0x49')](_0x5d1940[_0x7a0a('0x4a')]);if(_0x5aec48&&_0x5aec48['recordingFormat']&&_0x5aec48[_0x7a0a('0x63')]!==_0x7a0a('0x64')){logger[_0x7a0a('0xf')]('[OUTBOUND]',_0x7a0a('0x4d'));_0x49e998[_0x7a0a('0x4f')]=util['format'](_0x7a0a('0x65'),_0x5d1940['serverUrl'],_0x49e998[_0x7a0a('0x4e')],md5(_0x49e998['uniqueid']));}headers[_0x7a0a('0x66')]=getAuth(_0x5d1940);return getUser(_0x5d1940,_0x384929[_0x7a0a('0x50')])[_0x7a0a('0x1c')](function(_0x463568){_0x2a341d=_0x463568;logger[_0x7a0a('0xf')](_0x7a0a('0x51'),_0x2a341d['id']);return getEndUser(_0x5d1940,_0x49e998[_0x7a0a('0x67')],_0x49e998[_0x7a0a('0x68')]);})[_0x7a0a('0x1c')](function(_0x7be6bc){_0x50e9c1=_0x7be6bc;logger[_0x7a0a('0xf')](_0x7a0a('0x53'),_0x50e9c1['id']);return getTicket(_0x5d1940,_0x2a341d,_0x50e9c1,_0x5792d3,_0x49e998);})[_0x7a0a('0x1c')](function(_0x3abaf0){if(_0x3abaf0){logger[_0x7a0a('0xf')](_0x7a0a('0x54'),_0x3abaf0['id']);switch(_0x5d1940[_0x7a0a('0x3d')]){case _0x7a0a('0x55'):logger['info']('[OUTBOUND]',_0x7a0a('0x56'));return request({'uri':util[_0x7a0a('0x11')](_0x7a0a('0x57'),_0x5d1940[_0x7a0a('0x13')],_0x2a341d['id'],_0x3abaf0['id']),'method':'POST'});case'newTab':logger['info'](_0x7a0a('0x69'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x7a0a('0x11')](_0x7a0a('0x5a'),_0x384929[_0x7a0a('0x17')]),_0x7a0a('0x6a'),{'uri':util[_0x7a0a('0x11')](_0x7a0a('0x5b'),_0x5d1940[_0x7a0a('0x13')][_0x7a0a('0x6b')](_0x7a0a('0x5c'),''),_0x3abaf0['id'])});break;default:logger[_0x7a0a('0x5d')]('[OUTBOUND]',_0x7a0a('0x5e'));}}})['catch'](function(_0x28c995){logger[_0x7a0a('0x5d')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util[_0x7a0a('0x61')](_0x28c995,{'showHidden':!![],'depth':null}));});};exports[_0x7a0a('0x6c')]=function(_0x452f5c,_0x27dd85,_0x1a10be,_0x5852b0,_0x1fad7a,_0x3aa8db){var _0x4003c3,_0x58d30f;_0x3aa8db[_0x7a0a('0x13')]=intUtil['stripTrailingSlash'](_0x3aa8db[_0x7a0a('0x13')]);_0x3aa8db['serverUrl']=intUtil[_0x7a0a('0x49')](_0x3aa8db[_0x7a0a('0x4a')]);if(_0x1fad7a&&_0x1fad7a[_0x7a0a('0x4b')]){logger[_0x7a0a('0xf')]('['+_0x27dd85[_0x7a0a('0x6d')][_0x7a0a('0x6e')]()+']',_0x7a0a('0x4d'));_0x27dd85[_0x7a0a('0x4f')]=util[_0x7a0a('0x11')](_0x7a0a('0x65'),_0x3aa8db[_0x7a0a('0x4a')],_0x27dd85['uniqueid'],md5(_0x27dd85[_0x7a0a('0x4e')]));}else{_0x27dd85['recordingURL']='';}headers[_0x7a0a('0x66')]=getAuth(_0x3aa8db);return getUser(_0x3aa8db)['then'](function(_0x4e2b46){_0x4003c3=_0x4e2b46;logger[_0x7a0a('0xf')]('The\x20User\x20ID\x20is:',_0x4003c3['id']);return getEndUser(_0x3aa8db,_0x27dd85[_0x7a0a('0x6f')],_0x27dd85[_0x7a0a('0x52')]);})[_0x7a0a('0x1c')](function(_0x588a7e){_0x58d30f=_0x588a7e;logger['info'](_0x7a0a('0x53'),_0x58d30f['id']);return getTicket(_0x3aa8db,_0x4003c3,_0x58d30f,_0x1a10be,_0x27dd85);})[_0x7a0a('0x1c')](function(_0x133837){if(_0x133837){logger[_0x7a0a('0xf')](_0x7a0a('0x54'),_0x133837['id']);}})[_0x7a0a('0x5f')](function(_0x1fddab){logger[_0x7a0a('0x5d')]('['+_0x27dd85[_0x7a0a('0x6d')][_0x7a0a('0x6e')]()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util[_0x7a0a('0x61')](_0x1fddab,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index f1ef2a5..a63d4e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40be=['enduserType','POST','startCase','role','first_name','last_name','data','code','SUCCESS','moduleCreate','Error:\x20','CREATE\x20ERROR','moduleSearch','contact_lead','uri','https://www.zohoapis.','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','lead','Creating\x20new\x20call...','Owner','administrator','Subject','getString','Descriptions','Who_Id','Full_Name','First_Name','Last_Name','What_Id','talktime','mm:ss','answertime','endtime','Call_Duration','utc','diff','starttime','lastevent','called','Call_Result','Called','complete','connect','Answered','rejected','Rejected','abandoned','timeout','Timeout','outbound','YYYY-MM-DDTHH:mm:ss','agentcalledAt','Call_Type','Inbound','merge','Fields','Call\x20created!','details','err','log','queue','host','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','uniqueid','recordingURL','zoho.eu','com','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Call\x20ID\x20is:','[QUEUE]','user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','none','[OUTBOUND]','/api/voice/recordings/','/downloads?type=uniqueid&token=','destcalleridname','destcalleridnum','Outbound','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','unmanaged','toUpperCase','lodash','request-promise','md5','util','./util','ioredis','bluebird','../../../../config/environment','../../../../config/logger','zoho','redis','defaults','localhost','socket.io-emitter','emit','[HTTP]','stringify','length','forEach','includes','string','type','idField','content','toString','variableName','customVariable','Variable','name','toLowerCase','indexOf','split','access_token','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','/oauth/v2/token','refreshToken','clientId','refresh_token','then','add','expires_in','seconds','catch','error','Failing\x20creating\x20the\x20access_token','stack','info','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','users','isArrayLikeObject','isNil','findIndex','email','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','Administrator','user','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x40be,0x100));var _0xe40b=function(_0x9ce209,_0x1c0a0f){_0x9ce209=_0x9ce209-0x0;var _0x6203b7=_0x40be[_0x9ce209];return _0x6203b7;};'use strict';var _=require(_0xe40b('0x0'));var rp=require(_0xe40b('0x1'));var md5=require(_0xe40b('0x2'));var util=require(_0xe40b('0x3'));var intUtil=require(_0xe40b('0x4'));var moment=require('moment');var Redis=require(_0xe40b('0x5'));var BPromise=require(_0xe40b('0x6'));var config=require(_0xe40b('0x7'));var logger=require(_0xe40b('0x8'))(_0xe40b('0x9'));config[_0xe40b('0xa')]=_[_0xe40b('0xb')](config[_0xe40b('0xa')],{'host':_0xe40b('0xc'),'port':0x18eb});var io=require(_0xe40b('0xd'))(new Redis(config[_0xe40b('0xa')]));function emit(_0xeabba2,_0x5abee7,_0x113e9e){io['to'](_0xeabba2)[_0xe40b('0xe')](_0x5abee7,_0x113e9e);}function request(_0x48c7e8){logger['debug'](_0xe40b('0xf'),JSON[_0xe40b('0x10')](_0x48c7e8));return rp(_0x48c7e8);}function getCustomFields(_0xf8708f,_0x2c4ab1){var _0x433f7f={};if(_0xf8708f[_0xe40b('0x11')]>0x0){_[_0xe40b('0x12')](_0xf8708f,function(_0x4428ce){if(_[_0xe40b('0x13')]([_0xe40b('0x14'),'picklist'],_0x4428ce[_0xe40b('0x15')])&&_0x4428ce[_0xe40b('0x16')]){_0x433f7f[_0x4428ce[_0xe40b('0x16')]]=_0x4428ce[_0xe40b('0x17')][_0xe40b('0x18')]();}else if(_0x4428ce[_0xe40b('0x15')]==='variable'&&_0x4428ce[_0xe40b('0x19')]&&_0x4428ce['idField']&&_0x2c4ab1[_0x4428ce[_0xe40b('0x19')]]){_0x433f7f[_0x4428ce[_0xe40b('0x16')]]=_0x2c4ab1[_0x4428ce['variableName']]['toString']();}else if(_0x4428ce['type']===_0xe40b('0x1a')&&_0x4428ce[_0xe40b('0x1b')]&&_0x4428ce['Variable'][_0xe40b('0x1c')]&&_0x4428ce[_0xe40b('0x16')]&&_0x2c4ab1[_0x4428ce[_0xe40b('0x1b')][_0xe40b('0x1c')]['toLowerCase']()]){_0x433f7f[_0x4428ce[_0xe40b('0x16')]]=_0x2c4ab1[_0x4428ce[_0xe40b('0x1b')][_0xe40b('0x1c')][_0xe40b('0x1d')]()]['toString']();}});}return _0x433f7f;}function getName(_0x1fd721){if(_0x1fd721[_0xe40b('0x1e')]('\x20')>0x0){var _0x5cb0e6=_0x1fd721[_0xe40b('0x1f')](/ (.+)/);if(_0x5cb0e6[0x1]){return _0x5cb0e6;}}return[_0x1fd721,_0x1fd721];}var accountsTokens={};function getAccessToken(_0x4ee3e8){return new Promise(function(_0x5c8052,_0x528b1e){if(!_['isNil'](accountsTokens[_0x4ee3e8['id']])&&!_['isNil'](accountsTokens[_0x4ee3e8['id']][_0xe40b('0x20')])){if(moment()['isBefore'](accountsTokens[_0x4ee3e8['id']]['expires_in'])){_0x5c8052(accountsTokens[_0x4ee3e8['id']]['access_token']);}}var _0x3dd9ea;switch(_0x4ee3e8[_0xe40b('0x21')]){case'US':_0x3dd9ea=_0xe40b('0x22');break;case'AU':_0x3dd9ea=_0xe40b('0x23');break;case'EU':_0x3dd9ea=_0xe40b('0x24');break;case'IN':_0x3dd9ea=_0xe40b('0x25');break;case'CN':_0x3dd9ea=_0xe40b('0x26');break;default:_0x3dd9ea=_0xe40b('0x24');break;}var _0x3fd3b2={'method':'POST','uri':_0x3dd9ea+_0xe40b('0x27'),'qs':{'refresh_token':_0x4ee3e8[_0xe40b('0x28')],'client_id':_0x4ee3e8[_0xe40b('0x29')],'client_secret':_0x4ee3e8['clientSecret'],'grant_type':_0xe40b('0x2a')},'json':!![]};return rp(_0x3fd3b2)[_0xe40b('0x2b')](function(_0x59f5e4){accountsTokens[_0x4ee3e8['id']]={'access_token':_0x59f5e4[_0xe40b('0x20')],'expires_in':moment()[_0xe40b('0x2c')](_0x59f5e4[_0xe40b('0x2d')],_0xe40b('0x2e'))};_0x5c8052(_0x59f5e4['access_token']);})[_0xe40b('0x2f')](function(_0x599b8c){logger[_0xe40b('0x30')](_0xe40b('0x31'),_0x599b8c[_0xe40b('0x32')]);_0x528b1e(_0x599b8c);});});}function getUser(_0x467de3,_0x201ebe,_0x529b76,_0x48993e){logger[_0xe40b('0x33')]('Search\x20user');return request({'method':'GET','uri':util[_0xe40b('0x34')](_0xe40b('0x35'),_0x201ebe),'qs':{'type':_0xe40b('0x36')},'headers':{'Authorization':_0xe40b('0x37')+_0x467de3},'json':!![]})['then'](function(_0x1411b6){if(_0x1411b6[_0xe40b('0x38')]){var _0x2a373b=-0x1;if(_[_0xe40b('0x39')](_0x1411b6['users'])){if(!_[_0xe40b('0x3a')](_0x48993e)){_0x2a373b=_[_0xe40b('0x3b')](_0x1411b6['users'],function(_0x50c64b){return _0x50c64b[_0xe40b('0x3c')]===_0x48993e;});}if(_0x2a373b>=0x0){logger[_0xe40b('0x33')](_0xe40b('0x3d'));}else{logger[_0xe40b('0x33')](_0xe40b('0x3e'));_0x2a373b=_[_0xe40b('0x3b')](_0x1411b6[_0xe40b('0x38')],function(_0x3e6178){return _0x3e6178[_0xe40b('0x3f')][_0xe40b('0x1c')]===_0xe40b('0x40');});}return _0x1411b6[_0xe40b('0x38')][_0x2a373b];}else{if(_0x1411b6['user'][_0xe40b('0x3f')][_0xe40b('0x1c')]==='Administrator'){logger[_0xe40b('0x33')](_0xe40b('0x3e'));user=_0x1411b6[_0xe40b('0x41')];return user;}else{logger[_0xe40b('0x30')](_0xe40b('0x42'),JSON[_0xe40b('0x10')](_0x1411b6));throw new Error(_0xe40b('0x43')+JSON[_0xe40b('0x10')](_0x1411b6));}}}else{logger['error'](_0xe40b('0x42'),JSON[_0xe40b('0x10')](_0x1411b6));throw new Error(_0xe40b('0x43')+JSON[_0xe40b('0x10')](_0x1411b6));}})['catch'](function(_0x345837){console['error'](_0x345837);});}function getZohoUser(_0x23d808,_0x2b2c32){return new BPromise(function(_0x3ed3aa,_0x138a3b){request(_0x23d808)[_0xe40b('0x2b')](function(_0x3aead6){var _0x31892a=null;if(_0x3aead6){_0x31892a=_0x3aead6['data'][0x0];_0x31892a[_0xe40b('0x44')]=_0x2b2c32;}_0x3ed3aa(_0x31892a);})[_0xe40b('0x2f')](function(_0x50ca9d){_0x138a3b(_0x50ca9d);});});}function createEndUser(_0x6f9d0,_0x6ab876,_0x4ef79d,_0x3415c7,_0xc630a6,_0x29e223){var _0x4ef79d=getName(_0x4ef79d);return request({'method':_0xe40b('0x45'),'uri':'https://www.zohoapis.'+_0x6ab876+'/crm/v2/'+_[_0xe40b('0x46')](_0x29e223['moduleCreate'])+'s','body':{'data':[{'Last_Name':_0x4ef79d[0x1],'First_Name':_0x4ef79d[0x0],'Phone':_0x3415c7,'Owner':{'name':!_[_0xe40b('0x3a')](_0xc630a6[_0xe40b('0x47')][_0xe40b('0x1c')])?_0xc630a6[_0xe40b('0x47')]['name']:!_[_0xe40b('0x3a')](_0xc630a6[_0xe40b('0x48')])?_0xc630a6[_0xe40b('0x48')]+'\x20'+_0xc630a6['last_name']:_0xc630a6[_0xe40b('0x49')],'id':_0xc630a6['id']}}]},'headers':{'Authorization':_0xe40b('0x37')+_0x6f9d0},'json':!![]})[_0xe40b('0x2b')](function(_0x5498c0){if(_0x5498c0&&_0x5498c0[_0xe40b('0x4a')][0x0][_0xe40b('0x4b')]===_0xe40b('0x4c')){var _0x59fde3=_0x5498c0[_0xe40b('0x4a')][0x0]['details'];_0x59fde3[_0xe40b('0x44')]=_['startCase'](_0x29e223[_0xe40b('0x4d')])+'s';return _0x59fde3;}logger['error'](_0xe40b('0x42'),JSON['stringify'](data));throw new Error(_0xe40b('0x4e')+JSON['stringify'](data));})[_0xe40b('0x2f')](function(_0x197466){console['log'](_0xe40b('0x4f'),_0x197466);});}function getEndUser(_0x35b03c,_0x502803,_0x419074,_0x438af2,_0x4de12d,_0x298f29,_0x328ac6){var _0x3dab98={'method':'GET','uri':'','headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x35b03c},'json':!![]};switch(_0x328ac6[_0xe40b('0x50')]){case _0xe40b('0x51'):_0x3dab98[_0xe40b('0x52')]=_0xe40b('0x53')+_0x502803+_0xe40b('0x54')+_0x4de12d+'))';return getZohoUser(_0x3dab98,_0xe40b('0x55'))[_0xe40b('0x2b')](function(_0xf60289){if(_0xf60289)return _0xf60289;_0x3dab98[_0xe40b('0x52')]=_0xe40b('0x53')+_0x502803+_0xe40b('0x56')+_0x4de12d+'))';return getZohoUser(_0x3dab98,_0xe40b('0x57'))[_0xe40b('0x2b')](function(_0x21073d){if(_0x21073d)return _0x21073d;if(_0x328ac6['moduleCreate']!=_0xe40b('0x58')){return createEndUser(_0x35b03c,_0x502803,_0x438af2,_0x4de12d,_0x298f29,_0x328ac6);}else{return{};}});});break;case'contact':_0x3dab98[_0xe40b('0x52')]=_0xe40b('0x53')+_0x502803+_0xe40b('0x54')+_0x4de12d+'))';return getZohoUser(_0x3dab98,'Contacts')[_0xe40b('0x2b')](function(_0x3274c8){if(_0x3274c8)return _0x3274c8;if(_0x328ac6[_0xe40b('0x4d')]!='nothing'){return createEndUser(_0x35b03c,_0x502803,_0x438af2,_0x4de12d,_0x298f29,_0x328ac6);}else{return{};}});break;case _0xe40b('0x59'):_0x3dab98[_0xe40b('0x52')]=_0xe40b('0x53')+_0x502803+_0xe40b('0x56')+_0x4de12d+'))';return getZohoUser(_0x3dab98,_0xe40b('0x57'))['then'](function(_0x251b49){if(_0x251b49)return _0x251b49;if(_0x328ac6[_0xe40b('0x4d')]!=_0xe40b('0x58')){return createEndUser(_0x35b03c,_0x502803,_0x438af2,_0x4de12d,_0x298f29,_0x328ac6);}else{return{};}});break;}}function getCall(_0x28f0da,_0x509f0d,_0x47a372,_0x4c7d32,_0x5c979f,_0x54b22c,_0x1a2fc5,_0x60ef6e){logger[_0xe40b('0x33')](_0xe40b('0x5a'));var _0x45215c={};_0x45215c[_0xe40b('0x5b')]={'name':!_[_0xe40b('0x3a')](_0x4c7d32[_0xe40b('0x47')][_0xe40b('0x1c')])&&!_[_0xe40b('0x3a')](_0x4c7d32[_0xe40b('0x3f')][_0xe40b('0x1c')])&&_0x4c7d32[_0xe40b('0x3f')][_0xe40b('0x1c')]===_0xe40b('0x5c')?_0x4c7d32[_0xe40b('0x47')][_0xe40b('0x1c')]:!_[_0xe40b('0x3a')](_0x4c7d32[_0xe40b('0x48')])?_0x4c7d32[_0xe40b('0x48')]+'\x20'+_0x4c7d32[_0xe40b('0x49')]:_0x4c7d32[_0xe40b('0x49')],'id':_0x4c7d32['id']};_0x45215c[_0xe40b('0x5d')]=intUtil['getString'](_0x54b22c['Subjects'],_0x1a2fc5,'\x20');_0x45215c['Description']=intUtil[_0xe40b('0x5e')](_0x54b22c[_0xe40b('0x5f')],_0x1a2fc5,'\x0a');if(_0x5c979f[_0xe40b('0x44')]===_0xe40b('0x55')){_0x45215c[_0xe40b('0x60')]={'name':!_['isNil'](_0x5c979f[_0xe40b('0x61')])?_0x5c979f[_0xe40b('0x61')]:!_[_0xe40b('0x3a')](_0x5c979f[_0xe40b('0x62')])?_0x5c979f[_0xe40b('0x62')]+'\x20'+_0x5c979f[_0xe40b('0x63')]:_0x5c979f['Last_Name'],'id':_0x5c979f['id']};}if(_0x5c979f['enduserType']===_0xe40b('0x57')){_0x45215c[_0xe40b('0x64')]={'name':!_['isNil'](_0x5c979f[_0xe40b('0x61')])?_0x5c979f[_0xe40b('0x61')]:!_[_0xe40b('0x3a')](_0x5c979f[_0xe40b('0x62')])?_0x5c979f[_0xe40b('0x62')]+'\x20'+_0x5c979f[_0xe40b('0x63')]:_0x5c979f[_0xe40b('0x63')],'id':_0x5c979f['id']};_0x45215c['$se_module']=_[_0xe40b('0x46')](_0x5c979f['enduserType']);}if(_0x1a2fc5[_0xe40b('0x65')]){_0x45215c['Call_Duration']=moment['utc'](parseInt(_0x1a2fc5[_0xe40b('0x65')])*0x3e8)[_0xe40b('0x34')](_0xe40b('0x66'));}else if(_0x1a2fc5[_0xe40b('0x67')]&&_0x1a2fc5[_0xe40b('0x68')]){_0x45215c[_0xe40b('0x69')]=moment[_0xe40b('0x6a')](moment(_0x1a2fc5[_0xe40b('0x68')],'YYYY-MM-DDTHH:mm:ss')[_0xe40b('0x6b')](moment(_0x1a2fc5[_0xe40b('0x6c')],'YYYY-MM-DDTHH:mm:ss')))[_0xe40b('0x34')](_0xe40b('0x66'));}switch(_0x1a2fc5[_0xe40b('0x6d')]){case _0xe40b('0x6e'):_0x45215c[_0xe40b('0x6f')]=_0xe40b('0x70');break;case _0xe40b('0x71'):case _0xe40b('0x72'):_0x45215c['Call_Result']=_0xe40b('0x73');break;case _0xe40b('0x74'):_0x45215c[_0xe40b('0x6f')]=_0xe40b('0x75');break;case _0xe40b('0x76'):_0x45215c['Call_Result']='Abandoned';break;case _0xe40b('0x77'):_0x45215c['Call_Result']=_0xe40b('0x78');default:}_0x45215c['Call_Start_Time']=(_0x60ef6e===_0xe40b('0x79')?moment(_0x1a2fc5[_0xe40b('0x6c')])[_0xe40b('0x34')](_0xe40b('0x7a')):moment(_0x1a2fc5[_0xe40b('0x7b')])[_0xe40b('0x34')]('YYYY-MM-DDTHH:mm:ss'))||moment()[_0xe40b('0x34')]('YYYY-MM-DDTHH:mm:ss');_0x45215c[_0xe40b('0x7c')]=_0x60ef6e||_0xe40b('0x7d');_0x45215c=_[_0xe40b('0x7e')](_0x45215c,getCustomFields(_0x54b22c[_0xe40b('0x7f')],_0x1a2fc5));return request({'method':_0xe40b('0x45'),'uri':'https://www.zohoapis.'+_0x509f0d+'/crm/v2/Calls','headers':{'Authorization':_0xe40b('0x37')+_0x28f0da},'body':{'data':[_0x45215c]},'json':!![]})[_0xe40b('0x2b')](function(_0x1fce22){if(_0x1fce22&&_0x1fce22[_0xe40b('0x4a')][0x0][_0xe40b('0x4b')]==='SUCCESS'){logger[_0xe40b('0x33')](_0xe40b('0x80'));return{'id':_0x1fce22[_0xe40b('0x4a')][0x0][_0xe40b('0x81')]['id']};}})[_0xe40b('0x2f')](function(_0x25fde4){logger[_0xe40b('0x33')](_0xe40b('0x82'),_0x25fde4[_0xe40b('0x32')]);console[_0xe40b('0x83')](_0xe40b('0x82'),_0x25fde4);});}exports[_0xe40b('0x84')]=function(_0x4828a3,_0x12b2a4,_0x4e6920,_0x4e21ca,_0xf5c312,_0x2121a3){var _0x35bcf0,_0x18327d,_0x4a88c8;_0x2121a3[_0xe40b('0x85')]=intUtil[_0xe40b('0x86')](_0x2121a3[_0xe40b('0x85')]);_0x2121a3[_0xe40b('0x87')]=intUtil[_0xe40b('0x86')](_0x2121a3[_0xe40b('0x87')]);if(_0xf5c312&&_0xf5c312[_0xe40b('0x88')]){logger[_0xe40b('0x33')]('[QUEUE]',_0xe40b('0x89'));_0x12b2a4['recordingURL']=_0x2121a3[_0xe40b('0x87')]+'/api/voice/recordings/'+_0x12b2a4[_0xe40b('0x8a')]+'/downloads?type=uniqueid&token='+md5(_0x12b2a4[_0xe40b('0x8a')]);}else{_0x12b2a4[_0xe40b('0x8b')]='';}var _0x28d977=_0x2121a3[_0xe40b('0x85')]===_0xe40b('0x8c')?'eu':_0xe40b('0x8d');return getAccessToken(_0x2121a3)[_0xe40b('0x2b')](function(_0x2c2554){_0x4a88c8=_0x2c2554;return getUser(_0x4a88c8,_0x28d977,_0x2121a3,_0x4e21ca[_0xe40b('0x3c')]);})['then'](function(_0x36d54b){_0x35bcf0=_0x36d54b;logger[_0xe40b('0x33')](_0xe40b('0x8e'),_0x35bcf0['id']);return getEndUser(_0x4a88c8,_0x28d977,_0x2121a3,_0x12b2a4[_0xe40b('0x8f')],_0x12b2a4[_0xe40b('0x90')],_0x35bcf0,_0x4e6920);})[_0xe40b('0x2b')](function(_0x1fa250){_0x18327d=_0x1fa250;return getCall(_0x4a88c8,_0x28d977,_0x2121a3,_0x35bcf0,_0x18327d,_0x4e6920,_0x12b2a4,_0xe40b('0x7d'));})[_0xe40b('0x2b')](function(_0xa47053){if(_0xa47053){logger['info'](_0xe40b('0x91'),_0xa47053['id']);logger['info'](_0xe40b('0x92'),'Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xe40b('0x34')](_0xe40b('0x93'),_0x4e21ca[_0xe40b('0x1c')]),_0xe40b('0x94'),{'uri':_0xe40b('0x95')+_0x2121a3[_0xe40b('0x85')]+_0xe40b('0x96')+_0xa47053['id']});}})[_0xe40b('0x2f')](function(_0x3ce57b){logger[_0xe40b('0x30')](_0xe40b('0x92'),JSON[_0xe40b('0x10')](_0x3ce57b));});};exports['outbound']=function(_0xcd1c64,_0x4b7d9a,_0x2c9ab2,_0x4d4e86,_0x464a60,_0x30afa5,_0x505522){var _0x13f652,_0x58b784,_0x261859;_0x30afa5[_0xe40b('0x85')]=intUtil[_0xe40b('0x86')](_0x30afa5['host']);_0x30afa5[_0xe40b('0x87')]=intUtil[_0xe40b('0x86')](_0x30afa5['serverUrl']);if(_0x505522&&_0x505522[_0xe40b('0x97')]&&_0x505522[_0xe40b('0x97')]!==_0xe40b('0x98')){logger['info'](_0xe40b('0x99'),_0xe40b('0x89'));_0x4b7d9a[_0xe40b('0x8b')]=_0x30afa5[_0xe40b('0x87')]+_0xe40b('0x9a')+_0x4b7d9a[_0xe40b('0x8a')]+_0xe40b('0x9b')+md5(_0x4b7d9a[_0xe40b('0x8a')]);}var _0x28d29d=_0x30afa5[_0xe40b('0x85')]===_0xe40b('0x8c')?'eu':_0xe40b('0x8d');return getAccessToken(_0x30afa5)['then'](function(_0x4422ab){_0x261859=_0x4422ab;return getUser(_0x261859,_0x28d29d,_0x30afa5,_0x4d4e86[_0xe40b('0x3c')]);})[_0xe40b('0x2b')](function(_0x48773c){_0x13f652=_0x48773c;logger[_0xe40b('0x33')](_0xe40b('0x8e'),_0x13f652['id']);return getEndUser(_0x261859,_0x28d29d,_0x30afa5,_0x4b7d9a[_0xe40b('0x9c')],_0x4b7d9a[_0xe40b('0x9d')],_0x13f652,_0x2c9ab2);})[_0xe40b('0x2b')](function(_0x4bd81c){_0x58b784=_0x4bd81c;return getCall(_0x261859,_0x28d29d,_0x30afa5,_0x13f652,_0x58b784,_0x2c9ab2,_0x4b7d9a,_0xe40b('0x9e'));})[_0xe40b('0x2b')](function(_0x41871e){if(_0x41871e){logger[_0xe40b('0x33')](_0xe40b('0x91'),_0x41871e['id']);logger[_0xe40b('0x33')](_0xe40b('0x99'),_0xe40b('0x9f'));emit(util['format'](_0xe40b('0x93'),_0x4d4e86[_0xe40b('0x1c')]),_0xe40b('0x94'),{'uri':_0xe40b('0x95')+_0x30afa5[_0xe40b('0x85')]+_0xe40b('0x96')+_0x41871e['id']});}})[_0xe40b('0x2f')](function(_0x54f4c9){logger[_0xe40b('0x30')](_0xe40b('0x99'),JSON['stringify'](_0x54f4c9));});};exports[_0xe40b('0xa0')]=function(_0x21b72b,_0x25af51,_0x1a540c,_0x259fa2,_0x3e02ae,_0x401012){var _0x1ffe6a,_0xcfc348,_0x559a45;_0x401012[_0xe40b('0x85')]=intUtil[_0xe40b('0x86')](_0x401012[_0xe40b('0x85')]);_0x401012[_0xe40b('0x87')]=intUtil[_0xe40b('0x86')](_0x401012[_0xe40b('0x87')]);if(_0x3e02ae&&_0x3e02ae[_0xe40b('0x88')]){logger['info']('['+_0x25af51['lastevent'][_0xe40b('0xa1')]()+']',_0xe40b('0x89'));_0x25af51[_0xe40b('0x8b')]=_0x401012['serverUrl']+'/api/voice/recordings/'+_0x25af51[_0xe40b('0x8a')]+'/downloads?type=uniqueid&token='+md5(_0x25af51[_0xe40b('0x8a')]);}else{_0x25af51['recordingURL']='';}var _0x4b51d0=_0x401012[_0xe40b('0x85')]===_0xe40b('0x8c')?'eu':_0xe40b('0x8d');return getAccessToken(_0x401012)[_0xe40b('0x2b')](function(_0x28ff7e){_0x559a45=_0x28ff7e;return getUser(_0x559a45,_0x4b51d0,_0x401012);})[_0xe40b('0x2b')](function(_0x4c105d){_0x1ffe6a=_0x4c105d;logger['info'](_0xe40b('0x8e'),_0x1ffe6a['id']);return getEndUser(_0x559a45,_0x4b51d0,_0x401012,_0x25af51['calleridname'],_0x25af51[_0xe40b('0x90')],_0x1ffe6a,_0x1a540c);})[_0xe40b('0x2b')](function(_0x588d65){_0xcfc348=_0x588d65;return getCall(_0x559a45,_0x4b51d0,_0x401012,_0x1ffe6a,_0xcfc348,_0x1a540c,_0x25af51,_0xe40b('0x7d'));})['then'](function(_0x18b854){if(_0x18b854){logger[_0xe40b('0x33')](_0xe40b('0x91'),_0x18b854['id']);}})[_0xe40b('0x2f')](function(_0x12dde8){logger[_0xe40b('0x30')]('['+_0x25af51[_0xe40b('0x6d')][_0xe40b('0xa1')]()+']',JSON[_0xe40b('0x10')](_0x12dde8));});};
\ No newline at end of file
+var _0x42a2=['GET','format','Zoho-oauthtoken\x20','users','isArrayLikeObject','findIndex','email','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','user','Administrator','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','The\x20failing\x20result\x20is','error','data','POST','https://www.zohoapis.','/crm/v2/','startCase','moduleCreate','role','first_name','last_name','code','Error:\x20','log','CREATE\x20ERROR','contact_lead','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','contact','lead','Creating\x20new\x20call...','Owner','administrator','getString','Subjects','Descriptions','enduserType','Full_Name','First_Name','Last_Name','What_Id','talktime','Call_Duration','endtime','diff','YYYY-MM-DDTHH:mm:ss','lastevent','called','Call_Result','Called','complete','connect','Answered','rejected','abandoned','timeout','Timeout','Call_Start_Time','agentcalledAt','Inbound','Fields','/crm/v2/Calls','SUCCESS','Call\x20created!','details','err','queue','host','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','uniqueid','zoho.eu','calleridnum','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','https://crm.','/crm/EntityInfo.do?module=Calls&id=','outbound','recordingFormat','none','/downloads?type=uniqueid&token=','The\x20User\x20ID\x20is:','destcalleridname','Outbound','user:%s','trigger:browser:url','toUpperCase','com','lodash','md5','util','./util','ioredis','bluebird','../../../../config/environment','../../../../config/logger','zoho','redis','defaults','socket.io-emitter','emit','stringify','length','forEach','includes','picklist','type','content','toString','variable','variableName','idField','Variable','name','indexOf','split','isNil','access_token','isBefore','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','then','add','seconds','catch','Failing\x20creating\x20the\x20access_token','info','Search\x20user'];(function(_0x1f8aa3,_0x233f9f){var _0x2cc412=function(_0x15da06){while(--_0x15da06){_0x1f8aa3['push'](_0x1f8aa3['shift']());}};_0x2cc412(++_0x233f9f);}(_0x42a2,0xf8));var _0x242a=function(_0x3e44fa,_0x75ed2a){_0x3e44fa=_0x3e44fa-0x0;var _0x2a0aba=_0x42a2[_0x3e44fa];return _0x2a0aba;};'use strict';var _=require(_0x242a('0x0'));var rp=require('request-promise');var md5=require(_0x242a('0x1'));var util=require(_0x242a('0x2'));var intUtil=require(_0x242a('0x3'));var moment=require('moment');var Redis=require(_0x242a('0x4'));var BPromise=require(_0x242a('0x5'));var config=require(_0x242a('0x6'));var logger=require(_0x242a('0x7'))(_0x242a('0x8'));config[_0x242a('0x9')]=_[_0x242a('0xa')](config[_0x242a('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x242a('0xb'))(new Redis(config[_0x242a('0x9')]));function emit(_0x11c57f,_0x37f415,_0x4d1433){io['to'](_0x11c57f)[_0x242a('0xc')](_0x37f415,_0x4d1433);}function request(_0x3a8845){logger['debug']('[HTTP]',JSON[_0x242a('0xd')](_0x3a8845));return rp(_0x3a8845);}function getCustomFields(_0x5edd34,_0x4fece2){var _0x4cc3e7={};if(_0x5edd34[_0x242a('0xe')]>0x0){_[_0x242a('0xf')](_0x5edd34,function(_0x5118cb){if(_[_0x242a('0x10')](['string',_0x242a('0x11')],_0x5118cb[_0x242a('0x12')])&&_0x5118cb['idField']){_0x4cc3e7[_0x5118cb['idField']]=_0x5118cb[_0x242a('0x13')][_0x242a('0x14')]();}else if(_0x5118cb[_0x242a('0x12')]===_0x242a('0x15')&&_0x5118cb[_0x242a('0x16')]&&_0x5118cb[_0x242a('0x17')]&&_0x4fece2[_0x5118cb[_0x242a('0x16')]]){_0x4cc3e7[_0x5118cb['idField']]=_0x4fece2[_0x5118cb['variableName']][_0x242a('0x14')]();}else if(_0x5118cb[_0x242a('0x12')]==='customVariable'&&_0x5118cb[_0x242a('0x18')]&&_0x5118cb[_0x242a('0x18')]['name']&&_0x5118cb['idField']&&_0x4fece2[_0x5118cb[_0x242a('0x18')][_0x242a('0x19')]['toLowerCase']()]){_0x4cc3e7[_0x5118cb[_0x242a('0x17')]]=_0x4fece2[_0x5118cb[_0x242a('0x18')][_0x242a('0x19')]['toLowerCase']()][_0x242a('0x14')]();}});}return _0x4cc3e7;}function getName(_0x5ceae5){if(_0x5ceae5[_0x242a('0x1a')]('\x20')>0x0){var _0x380523=_0x5ceae5[_0x242a('0x1b')](/ (.+)/);if(_0x380523[0x1]){return _0x380523;}}return[_0x5ceae5,_0x5ceae5];}var accountsTokens={};function getAccessToken(_0x422fbe){return new Promise(function(_0x3ed365,_0x59eb96){if(!_[_0x242a('0x1c')](accountsTokens[_0x422fbe['id']])&&!_[_0x242a('0x1c')](accountsTokens[_0x422fbe['id']][_0x242a('0x1d')])){if(moment()[_0x242a('0x1e')](accountsTokens[_0x422fbe['id']][_0x242a('0x1f')])){_0x3ed365(accountsTokens[_0x422fbe['id']][_0x242a('0x1d')]);}}var _0x3f5590;switch(_0x422fbe[_0x242a('0x20')]){case'US':_0x3f5590=_0x242a('0x21');break;case'AU':_0x3f5590=_0x242a('0x22');break;case'EU':_0x3f5590='https://accounts.zoho.eu';break;case'IN':_0x3f5590=_0x242a('0x23');break;case'CN':_0x3f5590='https://accounts.zoho.com.cn';break;default:_0x3f5590='https://accounts.zoho.eu';break;}var _0x1ee310={'method':'POST','uri':_0x3f5590+_0x242a('0x24'),'qs':{'refresh_token':_0x422fbe[_0x242a('0x25')],'client_id':_0x422fbe[_0x242a('0x26')],'client_secret':_0x422fbe[_0x242a('0x27')],'grant_type':_0x242a('0x28')},'json':!![]};return rp(_0x1ee310)[_0x242a('0x29')](function(_0x59e1db){accountsTokens[_0x422fbe['id']]={'access_token':_0x59e1db[_0x242a('0x1d')],'expires_in':moment()[_0x242a('0x2a')](_0x59e1db[_0x242a('0x1f')],_0x242a('0x2b'))};_0x3ed365(_0x59e1db[_0x242a('0x1d')]);})[_0x242a('0x2c')](function(_0x37c73c){logger['error'](_0x242a('0x2d'),_0x37c73c['stack']);_0x59eb96(_0x37c73c);});});}function getUser(_0x54bb69,_0x5da3be,_0x377ef7,_0x32b07f){logger[_0x242a('0x2e')](_0x242a('0x2f'));return request({'method':_0x242a('0x30'),'uri':util[_0x242a('0x31')]('https://www.zohoapis.%s/crm/v2/users',_0x5da3be),'qs':{'type':'ActiveUsers'},'headers':{'Authorization':_0x242a('0x32')+_0x54bb69},'json':!![]})['then'](function(_0x266388){if(_0x266388[_0x242a('0x33')]){var _0x341322=-0x1;if(_[_0x242a('0x34')](_0x266388[_0x242a('0x33')])){if(!_['isNil'](_0x32b07f)){_0x341322=_[_0x242a('0x35')](_0x266388[_0x242a('0x33')],function(_0x2ab94e){return _0x2ab94e[_0x242a('0x36')]===_0x32b07f;});}if(_0x341322>=0x0){logger[_0x242a('0x2e')](_0x242a('0x37'));}else{logger[_0x242a('0x2e')](_0x242a('0x38'));_0x341322=_[_0x242a('0x35')](_0x266388['users'],function(_0x2d1516){return _0x2d1516[_0x242a('0x39')]['name']==='Administrator';});}return _0x266388[_0x242a('0x33')][_0x341322];}else{if(_0x266388[_0x242a('0x3a')][_0x242a('0x39')][_0x242a('0x19')]===_0x242a('0x3b')){logger[_0x242a('0x2e')]('Using\x20the\x20admin\x20account!');user=_0x266388['user'];return user;}else{logger['error']('The\x20failing\x20result\x20is',JSON[_0x242a('0xd')](_0x266388));throw new Error(_0x242a('0x3c')+JSON['stringify'](_0x266388));}}}else{logger['error'](_0x242a('0x3d'),JSON['stringify'](_0x266388));throw new Error(_0x242a('0x3c')+JSON[_0x242a('0xd')](_0x266388));}})['catch'](function(_0x103c13){console[_0x242a('0x3e')](_0x103c13);});}function getZohoUser(_0x1e3273,_0xe168a4){return new BPromise(function(_0x34262c,_0x5a053b){request(_0x1e3273)['then'](function(_0xe93869){var _0x8dd042=null;if(_0xe93869){_0x8dd042=_0xe93869[_0x242a('0x3f')][0x0];_0x8dd042['enduserType']=_0xe168a4;}_0x34262c(_0x8dd042);})[_0x242a('0x2c')](function(_0x31304c){_0x5a053b(_0x31304c);});});}function createEndUser(_0x29b2fc,_0x5c5cfc,_0x170b93,_0x29d6ed,_0x5c4db2,_0x18e5df){var _0x170b93=getName(_0x170b93);return request({'method':_0x242a('0x40'),'uri':_0x242a('0x41')+_0x5c5cfc+_0x242a('0x42')+_[_0x242a('0x43')](_0x18e5df[_0x242a('0x44')])+'s','body':{'data':[{'Last_Name':_0x170b93[0x1],'First_Name':_0x170b93[0x0],'Phone':_0x29d6ed,'Owner':{'name':!_[_0x242a('0x1c')](_0x5c4db2[_0x242a('0x45')][_0x242a('0x19')])?_0x5c4db2[_0x242a('0x45')][_0x242a('0x19')]:!_[_0x242a('0x1c')](_0x5c4db2[_0x242a('0x46')])?_0x5c4db2[_0x242a('0x46')]+'\x20'+_0x5c4db2[_0x242a('0x47')]:_0x5c4db2['last_name'],'id':_0x5c4db2['id']}}]},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x29b2fc},'json':!![]})[_0x242a('0x29')](function(_0x5630b4){if(_0x5630b4&&_0x5630b4['data'][0x0][_0x242a('0x48')]==='SUCCESS'){var _0x47281f=_0x5630b4[_0x242a('0x3f')][0x0]['details'];_0x47281f['enduserType']=_[_0x242a('0x43')](_0x18e5df[_0x242a('0x44')])+'s';return _0x47281f;}logger[_0x242a('0x3e')]('The\x20failing\x20result\x20is',JSON['stringify'](data));throw new Error(_0x242a('0x49')+JSON[_0x242a('0xd')](data));})[_0x242a('0x2c')](function(_0x40f1cb){console[_0x242a('0x4a')](_0x242a('0x4b'),_0x40f1cb);});}function getEndUser(_0x5be420,_0x4b592b,_0x27850d,_0x1b9ff7,_0x4ae5dd,_0x2ff4b8,_0x13b09b){var _0x2b82c2={'method':_0x242a('0x30'),'uri':'','headers':{'Authorization':_0x242a('0x32')+_0x5be420},'json':!![]};switch(_0x13b09b['moduleSearch']){case _0x242a('0x4c'):_0x2b82c2[_0x242a('0x4d')]=_0x242a('0x41')+_0x4b592b+_0x242a('0x4e')+_0x4ae5dd+'))';return getZohoUser(_0x2b82c2,_0x242a('0x4f'))[_0x242a('0x29')](function(_0x559342){if(_0x559342)return _0x559342;_0x2b82c2[_0x242a('0x4d')]='https://www.zohoapis.'+_0x4b592b+_0x242a('0x50')+_0x4ae5dd+'))';return getZohoUser(_0x2b82c2,_0x242a('0x51'))['then'](function(_0x3599d9){if(_0x3599d9)return _0x3599d9;if(_0x13b09b[_0x242a('0x44')]!=_0x242a('0x52')){return createEndUser(_0x5be420,_0x4b592b,_0x1b9ff7,_0x4ae5dd,_0x2ff4b8,_0x13b09b);}else{return{};}});});break;case _0x242a('0x53'):_0x2b82c2[_0x242a('0x4d')]='https://www.zohoapis.'+_0x4b592b+_0x242a('0x4e')+_0x4ae5dd+'))';return getZohoUser(_0x2b82c2,_0x242a('0x4f'))[_0x242a('0x29')](function(_0x3c3fd8){if(_0x3c3fd8)return _0x3c3fd8;if(_0x13b09b[_0x242a('0x44')]!=_0x242a('0x52')){return createEndUser(_0x5be420,_0x4b592b,_0x1b9ff7,_0x4ae5dd,_0x2ff4b8,_0x13b09b);}else{return{};}});break;case _0x242a('0x54'):_0x2b82c2[_0x242a('0x4d')]=_0x242a('0x41')+_0x4b592b+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x4ae5dd+'))';return getZohoUser(_0x2b82c2,_0x242a('0x51'))[_0x242a('0x29')](function(_0x188ab9){if(_0x188ab9)return _0x188ab9;if(_0x13b09b['moduleCreate']!=_0x242a('0x52')){return createEndUser(_0x5be420,_0x4b592b,_0x1b9ff7,_0x4ae5dd,_0x2ff4b8,_0x13b09b);}else{return{};}});break;}}function getCall(_0x268918,_0x5661f3,_0x13770f,_0xa51e07,_0xf9748d,_0x59ae63,_0x1943e7,_0x42818b){logger[_0x242a('0x2e')](_0x242a('0x55'));var _0x2e595a={};_0x2e595a[_0x242a('0x56')]={'name':!_[_0x242a('0x1c')](_0xa51e07[_0x242a('0x45')][_0x242a('0x19')])&&!_[_0x242a('0x1c')](_0xa51e07['profile'][_0x242a('0x19')])&&_0xa51e07['profile'][_0x242a('0x19')]===_0x242a('0x57')?_0xa51e07[_0x242a('0x45')]['name']:!_['isNil'](_0xa51e07[_0x242a('0x46')])?_0xa51e07['first_name']+'\x20'+_0xa51e07[_0x242a('0x47')]:_0xa51e07['last_name'],'id':_0xa51e07['id']};_0x2e595a['Subject']=intUtil[_0x242a('0x58')](_0x59ae63[_0x242a('0x59')],_0x1943e7,'\x20');_0x2e595a['Description']=intUtil['getString'](_0x59ae63[_0x242a('0x5a')],_0x1943e7,'\x0a');if(_0xf9748d[_0x242a('0x5b')]==='Contacts'){_0x2e595a['Who_Id']={'name':!_[_0x242a('0x1c')](_0xf9748d[_0x242a('0x5c')])?_0xf9748d[_0x242a('0x5c')]:!_[_0x242a('0x1c')](_0xf9748d[_0x242a('0x5d')])?_0xf9748d[_0x242a('0x5d')]+'\x20'+_0xf9748d[_0x242a('0x5e')]:_0xf9748d[_0x242a('0x5e')],'id':_0xf9748d['id']};}if(_0xf9748d[_0x242a('0x5b')]==='Leads'){_0x2e595a[_0x242a('0x5f')]={'name':!_[_0x242a('0x1c')](_0xf9748d[_0x242a('0x5c')])?_0xf9748d[_0x242a('0x5c')]:!_[_0x242a('0x1c')](_0xf9748d['First_Name'])?_0xf9748d[_0x242a('0x5d')]+'\x20'+_0xf9748d[_0x242a('0x5e')]:_0xf9748d[_0x242a('0x5e')],'id':_0xf9748d['id']};_0x2e595a['$se_module']=_[_0x242a('0x43')](_0xf9748d[_0x242a('0x5b')]);}if(_0x1943e7[_0x242a('0x60')]){_0x2e595a[_0x242a('0x61')]=moment['utc'](parseInt(_0x1943e7[_0x242a('0x60')])*0x3e8)['format']('mm:ss');}else if(_0x1943e7['answertime']&&_0x1943e7[_0x242a('0x62')]){_0x2e595a[_0x242a('0x61')]=moment['utc'](moment(_0x1943e7['endtime'],'YYYY-MM-DDTHH:mm:ss')[_0x242a('0x63')](moment(_0x1943e7['starttime'],_0x242a('0x64'))))[_0x242a('0x31')]('mm:ss');}switch(_0x1943e7[_0x242a('0x65')]){case _0x242a('0x66'):_0x2e595a[_0x242a('0x67')]=_0x242a('0x68');break;case _0x242a('0x69'):case _0x242a('0x6a'):_0x2e595a['Call_Result']=_0x242a('0x6b');break;case _0x242a('0x6c'):_0x2e595a[_0x242a('0x67')]='Rejected';break;case _0x242a('0x6d'):_0x2e595a['Call_Result']='Abandoned';break;case _0x242a('0x6e'):_0x2e595a[_0x242a('0x67')]=_0x242a('0x6f');default:}_0x2e595a[_0x242a('0x70')]=(_0x42818b==='outbound'?moment(_0x1943e7['starttime'])[_0x242a('0x31')](_0x242a('0x64')):moment(_0x1943e7[_0x242a('0x71')])[_0x242a('0x31')]('YYYY-MM-DDTHH:mm:ss'))||moment()[_0x242a('0x31')](_0x242a('0x64'));_0x2e595a['Call_Type']=_0x42818b||_0x242a('0x72');_0x2e595a=_['merge'](_0x2e595a,getCustomFields(_0x59ae63[_0x242a('0x73')],_0x1943e7));return request({'method':_0x242a('0x40'),'uri':_0x242a('0x41')+_0x5661f3+_0x242a('0x74'),'headers':{'Authorization':_0x242a('0x32')+_0x268918},'body':{'data':[_0x2e595a]},'json':!![]})[_0x242a('0x29')](function(_0x41c8ab){if(_0x41c8ab&&_0x41c8ab['data'][0x0][_0x242a('0x48')]===_0x242a('0x75')){logger[_0x242a('0x2e')](_0x242a('0x76'));return{'id':_0x41c8ab[_0x242a('0x3f')][0x0][_0x242a('0x77')]['id']};}})['catch'](function(_0x399e73){logger[_0x242a('0x2e')](_0x242a('0x78'),_0x399e73['stack']);console[_0x242a('0x4a')](_0x242a('0x78'),_0x399e73);});}exports[_0x242a('0x79')]=function(_0x5a5791,_0x4eca7d,_0x326837,_0x4a4cd2,_0x46a03a,_0x34314e){var _0x7f32a9,_0x126196,_0x48b875;_0x34314e[_0x242a('0x7a')]=intUtil['stripTrailingSlash'](_0x34314e['host']);_0x34314e[_0x242a('0x7b')]=intUtil[_0x242a('0x7c')](_0x34314e[_0x242a('0x7b')]);if(_0x46a03a&&_0x46a03a[_0x242a('0x7d')]){logger[_0x242a('0x2e')](_0x242a('0x7e'),_0x242a('0x7f'));_0x4eca7d[_0x242a('0x80')]=_0x34314e[_0x242a('0x7b')]+_0x242a('0x81')+_0x4eca7d[_0x242a('0x82')]+'/downloads?type=uniqueid&token='+md5(_0x4eca7d[_0x242a('0x82')]);}else{_0x4eca7d[_0x242a('0x80')]='';}var _0x4c085f=_0x34314e[_0x242a('0x7a')]===_0x242a('0x83')?'eu':'com';return getAccessToken(_0x34314e)[_0x242a('0x29')](function(_0x4bde28){_0x48b875=_0x4bde28;return getUser(_0x48b875,_0x4c085f,_0x34314e,_0x4a4cd2[_0x242a('0x36')]);})[_0x242a('0x29')](function(_0x4d4978){_0x7f32a9=_0x4d4978;logger[_0x242a('0x2e')]('The\x20User\x20ID\x20is:',_0x7f32a9['id']);return getEndUser(_0x48b875,_0x4c085f,_0x34314e,_0x4eca7d['calleridname'],_0x4eca7d[_0x242a('0x84')],_0x7f32a9,_0x326837);})[_0x242a('0x29')](function(_0x4ba68b){_0x126196=_0x4ba68b;return getCall(_0x48b875,_0x4c085f,_0x34314e,_0x7f32a9,_0x126196,_0x326837,_0x4eca7d,'Inbound');})[_0x242a('0x29')](function(_0x461434){if(_0x461434){logger[_0x242a('0x2e')](_0x242a('0x85'),_0x461434['id']);logger[_0x242a('0x2e')](_0x242a('0x7e'),_0x242a('0x86'));emit(util['format']('user:%s',_0x4a4cd2[_0x242a('0x19')]),'trigger:browser:url',{'uri':_0x242a('0x87')+_0x34314e[_0x242a('0x7a')]+_0x242a('0x88')+_0x461434['id']});}})['catch'](function(_0x121b34){logger['error'](_0x242a('0x7e'),JSON[_0x242a('0xd')](_0x121b34));});};exports[_0x242a('0x89')]=function(_0x505dad,_0x706d7d,_0x432927,_0x369bf8,_0x1dd044,_0x12785c,_0x3c89fa){var _0x159c9a,_0x3468c1,_0x2942bc;_0x12785c[_0x242a('0x7a')]=intUtil['stripTrailingSlash'](_0x12785c['host']);_0x12785c['serverUrl']=intUtil[_0x242a('0x7c')](_0x12785c[_0x242a('0x7b')]);if(_0x3c89fa&&_0x3c89fa[_0x242a('0x8a')]&&_0x3c89fa[_0x242a('0x8a')]!==_0x242a('0x8b')){logger[_0x242a('0x2e')]('[OUTBOUND]',_0x242a('0x7f'));_0x706d7d[_0x242a('0x80')]=_0x12785c[_0x242a('0x7b')]+_0x242a('0x81')+_0x706d7d[_0x242a('0x82')]+_0x242a('0x8c')+md5(_0x706d7d[_0x242a('0x82')]);}var _0x3183f1=_0x12785c['host']===_0x242a('0x83')?'eu':'com';return getAccessToken(_0x12785c)['then'](function(_0x2c4a0b){_0x2942bc=_0x2c4a0b;return getUser(_0x2942bc,_0x3183f1,_0x12785c,_0x369bf8[_0x242a('0x36')]);})[_0x242a('0x29')](function(_0x179122){_0x159c9a=_0x179122;logger[_0x242a('0x2e')](_0x242a('0x8d'),_0x159c9a['id']);return getEndUser(_0x2942bc,_0x3183f1,_0x12785c,_0x706d7d[_0x242a('0x8e')],_0x706d7d['destcalleridnum'],_0x159c9a,_0x432927);})[_0x242a('0x29')](function(_0xc99ecf){_0x3468c1=_0xc99ecf;return getCall(_0x2942bc,_0x3183f1,_0x12785c,_0x159c9a,_0x3468c1,_0x432927,_0x706d7d,_0x242a('0x8f'));})[_0x242a('0x29')](function(_0x4b4615){if(_0x4b4615){logger[_0x242a('0x2e')](_0x242a('0x85'),_0x4b4615['id']);logger['info']('[OUTBOUND]','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x242a('0x31')](_0x242a('0x90'),_0x369bf8['name']),_0x242a('0x91'),{'uri':'https://crm.'+_0x12785c['host']+_0x242a('0x88')+_0x4b4615['id']});}})['catch'](function(_0x28ad84){logger['error']('[OUTBOUND]',JSON[_0x242a('0xd')](_0x28ad84));});};exports['unmanaged']=function(_0x59808a,_0x355d52,_0x5ec6d4,_0x1cf9ab,_0x57411a,_0x2c146f){var _0x1883f8,_0x1b8a3c,_0x8fc871;_0x2c146f[_0x242a('0x7a')]=intUtil[_0x242a('0x7c')](_0x2c146f[_0x242a('0x7a')]);_0x2c146f['serverUrl']=intUtil[_0x242a('0x7c')](_0x2c146f[_0x242a('0x7b')]);if(_0x57411a&&_0x57411a[_0x242a('0x7d')]){logger[_0x242a('0x2e')]('['+_0x355d52[_0x242a('0x65')][_0x242a('0x92')]()+']',_0x242a('0x7f'));_0x355d52[_0x242a('0x80')]=_0x2c146f[_0x242a('0x7b')]+_0x242a('0x81')+_0x355d52[_0x242a('0x82')]+'/downloads?type=uniqueid&token='+md5(_0x355d52['uniqueid']);}else{_0x355d52['recordingURL']='';}var _0x3700bc=_0x2c146f[_0x242a('0x7a')]===_0x242a('0x83')?'eu':_0x242a('0x93');return getAccessToken(_0x2c146f)[_0x242a('0x29')](function(_0x3d47df){_0x8fc871=_0x3d47df;return getUser(_0x8fc871,_0x3700bc,_0x2c146f);})[_0x242a('0x29')](function(_0x3df5c0){_0x1883f8=_0x3df5c0;logger['info'](_0x242a('0x8d'),_0x1883f8['id']);return getEndUser(_0x8fc871,_0x3700bc,_0x2c146f,_0x355d52['calleridname'],_0x355d52[_0x242a('0x84')],_0x1883f8,_0x5ec6d4);})[_0x242a('0x29')](function(_0x13f892){_0x1b8a3c=_0x13f892;return getCall(_0x8fc871,_0x3700bc,_0x2c146f,_0x1883f8,_0x1b8a3c,_0x5ec6d4,_0x355d52,_0x242a('0x72'));})[_0x242a('0x29')](function(_0x5a4aba){if(_0x5a4aba){logger['info'](_0x242a('0x85'),_0x5a4aba['id']);}})[_0x242a('0x2c')](function(_0x3e10ce){logger[_0x242a('0x3e')]('['+_0x355d52[_0x242a('0x65')][_0x242a('0x92')]()+']',JSON[_0x242a('0xd')](_0x3e10ce));});};
\ No newline at end of file
index ad0bb7f..6ee63d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa479=['Script','data3','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','util','shelljs','mustache','../../../../config/logger','trigger','exec','data2'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xa479,0xeb));var _0x9a47=function(_0x46c7ff,_0xaa3094){_0x46c7ff=_0x46c7ff-0x0;var _0x56783c=_0xa479[_0x46c7ff];return _0x56783c;};'use strict';var util=require(_0x9a47('0x0'));var sh=require(_0x9a47('0x1'));var Mustache=require(_0x9a47('0x2'));var logger=require(_0x9a47('0x3'))(_0x9a47('0x4'));exports[_0x9a47('0x5')]=function(_0x598a3c,_0x5690a3){var _0x41001a=_0x598a3c[_0x9a47('0x6')]?_0x598a3c[_0x9a47('0x6')]:_0x9a47('0x7');var _0x5195d1=_0x598a3c[_0x9a47('0x8')]?Mustache['render'](_0x598a3c[_0x9a47('0x8')],_0x5690a3):_0x5690a3;sh[_0x9a47('0x5')](_0x5195d1,function(_0xfa1273,_0x2e5e17,_0x3de806){if(_0xfa1273!==0x0){logger['error'](util[_0x9a47('0x9')](_0x9a47('0xa'),_0x41001a,_0x5195d1,_0xfa1273,_0x3de806));}else{logger['info'](util[_0x9a47('0x9')]('%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s',_0x41001a,_0x5195d1,_0x2e5e17));}});};
\ No newline at end of file
+var _0x5e34=['Script','data3','exec','error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','shelljs','trigger','data2'];(function(_0x139c20,_0x1cb32b){var _0x16a9d9=function(_0x1a154b){while(--_0x1a154b){_0x139c20['push'](_0x139c20['shift']());}};_0x16a9d9(++_0x1cb32b);}(_0x5e34,0x179));var _0x45e3=function(_0x9039da,_0x4649f1){_0x9039da=_0x9039da-0x0;var _0x141600=_0x5e34[_0x9039da];return _0x141600;};'use strict';var util=require('util');var sh=require(_0x45e3('0x0'));var Mustache=require('mustache');var logger=require('../../../../config/logger')(_0x45e3('0x1'));exports['exec']=function(_0x594cbc,_0x58b4a8){var _0x1f1ac2=_0x594cbc[_0x45e3('0x2')]?_0x594cbc['data2']:_0x45e3('0x3');var _0x4c959e=_0x594cbc['data3']?Mustache['render'](_0x594cbc[_0x45e3('0x4')],_0x58b4a8):_0x58b4a8;sh[_0x45e3('0x5')](_0x4c959e,function(_0x52ad81,_0x243d76,_0xe9d365){if(_0x52ad81!==0x0){logger[_0x45e3('0x6')](util[_0x45e3('0x7')](_0x45e3('0x8'),_0x1f1ac2,_0x4c959e,_0x52ad81,_0xe9d365));}else{logger['info'](util[_0x45e3('0x7')](_0x45e3('0x9'),_0x1f1ac2,_0x4c959e,_0x243d76));}});};
\ No newline at end of file
index dcf9c01..1839e8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5ca=['headers','parse','render','data6','error','GET','DELETE','POST','data7','stack','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','body','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','then','isNil',',\x20request\x20body:\x20','object','stringify','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','catch','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','message','lodash','mustache','../../../../config/logger','trigger','exec','data1','toUpperCase','data2','data5'];(function(_0x2e8909,_0x337d51){var _0x31992c=function(_0x1a1df7){while(--_0x1a1df7){_0x2e8909['push'](_0x2e8909['shift']());}};_0x31992c(++_0x337d51);}(_0xc5ca,0xe5));var _0xac5c=function(_0x66d186,_0x18367d){_0x66d186=_0x66d186-0x0;var _0x5295cd=_0xc5ca[_0x66d186];return _0x5295cd;};'use strict';var rp=require('request-promise');var util=require('util');var _=require(_0xac5c('0x0'));var Mustache=require(_0xac5c('0x1'));var logger=require(_0xac5c('0x2'))(_0xac5c('0x3'));exports[_0xac5c('0x4')]=function(_0x4d7955,_0x5a1350){var _0xcbddd4,_0x26d559;var _0x16c179={'method':_0x4d7955[_0xac5c('0x5')][_0xac5c('0x6')](),'uri':Mustache['render'](_0x4d7955[_0xac5c('0x7')],_0x5a1350),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x4d7955['data5'])==='number'&&parseInt(_0x4d7955['data5'])>=0x1&&parseInt(_0x4d7955['data5'])<=0xa?parseInt(_0x4d7955[_0xac5c('0x8')])*0x3e8:0x5*0x3e8};try{_0x16c179[_0xac5c('0x9')]=_0x4d7955['data6']?JSON[_0xac5c('0xa')](Mustache[_0xac5c('0xb')](_0x4d7955[_0xac5c('0xc')],_0x5a1350)):{};}catch(_0x2c7f33){logger[_0xac5c('0xd')](_0x2c7f33['stack']);}switch(_0x4d7955[_0xac5c('0x5')][_0xac5c('0x6')]()){case _0xac5c('0xe'):case _0xac5c('0xf'):_0xcbddd4=null;_0x16c179['qs']=_0x5a1350;break;case _0xac5c('0x10'):case'PUT':if(_0x4d7955['data7']){try{_0xcbddd4=JSON[_0xac5c('0xa')](Mustache[_0xac5c('0xb')](_0x4d7955[_0xac5c('0x11')],_0x5a1350));_0x16c179['body']=_0xcbddd4;}catch(_0x363d40){logger[_0xac5c('0xd')](_0x363d40[_0xac5c('0x12')]);logger[_0xac5c('0xd')](_0xac5c('0x13'));}}else{_0xcbddd4=_0x5a1350;_0x16c179[_0xac5c('0x14')]=_0xcbddd4;}break;}logger[_0xac5c('0x15')](util[_0xac5c('0x16')](_0xac5c('0x17'),_0x4d7955[_0xac5c('0x5')],_0x4d7955[_0xac5c('0x7')],JSON['stringify'](_0x16c179)));rp(_0x16c179)[_0xac5c('0x18')](function(_0x58239e){_0xcbddd4=!_[_0xac5c('0x19')](_0xcbddd4)?_0xac5c('0x1a')+_0xcbddd4:'';_0x26d559=typeof _0x58239e['body']===_0xac5c('0x1b')?JSON[_0xac5c('0x1c')](_0x58239e[_0xac5c('0x14')]):_0x58239e['body'];logger[_0xac5c('0x15')](util[_0xac5c('0x16')](_0xac5c('0x1d'),_0x4d7955[_0xac5c('0x5')],_0x4d7955['data2'],_0x58239e[_0xac5c('0x1e')],_0x26d559));})[_0xac5c('0x1f')](function(_0x491a0d){logger[_0xac5c('0xd')](util[_0xac5c('0x16')](_0xac5c('0x20'),_0x4d7955['data1'],_0x4d7955[_0xac5c('0x7')],_0x491a0d[_0xac5c('0x1e')],_0x491a0d['name'],_0x491a0d[_0xac5c('0x21')]));});};
\ No newline at end of file
+var _0x5190=['object','info','statusCode','catch','name','request-promise','lodash','mustache','trigger','exec','data1','toUpperCase','render','data2','data5','number','headers','data6','parse','error','stack','GET','DELETE','POST','PUT','data7','body','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','then',',\x20request\x20body:\x20'];(function(_0x5cd395,_0x507285){var _0x141227=function(_0x5893fe){while(--_0x5893fe){_0x5cd395['push'](_0x5cd395['shift']());}};_0x141227(++_0x507285);}(_0x5190,0x1e5));var _0x0519=function(_0x4d180c,_0x45c68e){_0x4d180c=_0x4d180c-0x0;var _0x49b57e=_0x5190[_0x4d180c];return _0x49b57e;};'use strict';var rp=require(_0x0519('0x0'));var util=require('util');var _=require(_0x0519('0x1'));var Mustache=require(_0x0519('0x2'));var logger=require('../../../../config/logger')(_0x0519('0x3'));exports[_0x0519('0x4')]=function(_0x1650f6,_0xecf1da){var _0x57abb4,_0x42047b;var _0x51adb3={'method':_0x1650f6[_0x0519('0x5')][_0x0519('0x6')](),'uri':Mustache[_0x0519('0x7')](_0x1650f6[_0x0519('0x8')],_0xecf1da),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x1650f6[_0x0519('0x9')])===_0x0519('0xa')&&parseInt(_0x1650f6[_0x0519('0x9')])>=0x1&&parseInt(_0x1650f6[_0x0519('0x9')])<=0xa?parseInt(_0x1650f6['data5'])*0x3e8:0x5*0x3e8};try{_0x51adb3[_0x0519('0xb')]=_0x1650f6[_0x0519('0xc')]?JSON[_0x0519('0xd')](Mustache[_0x0519('0x7')](_0x1650f6[_0x0519('0xc')],_0xecf1da)):{};}catch(_0x1c25a6){logger[_0x0519('0xe')](_0x1c25a6[_0x0519('0xf')]);}switch(_0x1650f6[_0x0519('0x5')][_0x0519('0x6')]()){case _0x0519('0x10'):case _0x0519('0x11'):_0x57abb4=null;_0x51adb3['qs']=_0xecf1da;break;case _0x0519('0x12'):case _0x0519('0x13'):if(_0x1650f6['data7']){try{_0x57abb4=JSON[_0x0519('0xd')](Mustache['render'](_0x1650f6[_0x0519('0x14')],_0xecf1da));_0x51adb3[_0x0519('0x15')]=_0x57abb4;}catch(_0x3ae07b){logger[_0x0519('0xe')](_0x3ae07b[_0x0519('0xf')]);logger[_0x0519('0xe')]('body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format');}}else{_0x57abb4=_0xecf1da;_0x51adb3[_0x0519('0x15')]=_0x57abb4;}break;}logger['info'](util[_0x0519('0x16')](_0x0519('0x17'),_0x1650f6['data1'],_0x1650f6['data2'],JSON[_0x0519('0x18')](_0x51adb3)));rp(_0x51adb3)[_0x0519('0x19')](function(_0x262468){_0x57abb4=!_['isNil'](_0x57abb4)?_0x0519('0x1a')+_0x57abb4:'';_0x42047b=typeof _0x262468[_0x0519('0x15')]===_0x0519('0x1b')?JSON[_0x0519('0x18')](_0x262468['body']):_0x262468['body'];logger[_0x0519('0x1c')](util[_0x0519('0x16')]('%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s',_0x1650f6[_0x0519('0x5')],_0x1650f6[_0x0519('0x8')],_0x262468[_0x0519('0x1d')],_0x42047b));})[_0x0519('0x1e')](function(_0x12abf7){logger[_0x0519('0xe')](util[_0x0519('0x16')]('%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s',_0x1650f6[_0x0519('0x5')],_0x1650f6['data2'],_0x12abf7['statusCode'],_0x12abf7[_0x0519('0x1f')],_0x12abf7['message']));});};
\ No newline at end of file
index 3820df2..16be299 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x731e=['exports','bluebird','../../config/logger','routing','http','request','rpc','error','message','result','catch'];(function(_0x450d6d,_0x9eb387){var _0x19a20a=function(_0x5d21e1){while(--_0x5d21e1){_0x450d6d['push'](_0x450d6d['shift']());}};_0x19a20a(++_0x9eb387);}(_0x731e,0x14b));var _0xe731=function(_0x37c9af,_0x3b3f6c){_0x37c9af=_0x37c9af-0x0;var _0x172490=_0x731e[_0x37c9af];return _0x172490;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0xe731('0x0'));var logger=require(_0xe731('0x1'))(_0xe731('0x2'));var client=jayson['client'][_0xe731('0x3')]({'port':0x2329});client['Request']=function(_0x2aba36,_0xcfe915){return new BPromise(function(_0x576fe3,_0x21dac7){return client[_0xe731('0x4')](_0x2aba36,_0xcfe915)['then'](function(_0x511434){logger['debug'](_0xe731('0x5'),'routing',_0x2aba36,_0xcfe915,_0x511434);if(_0x511434['error']){logger['error'](_0xe731('0x5'),_0xe731('0x2'),_0x2aba36,_0x511434[_0xe731('0x6')][_0xe731('0x7')],_0xcfe915);return _0x21dac7(_0x511434['error'][_0xe731('0x7')]);}else{return _0x576fe3(_0x511434[_0xe731('0x8')]);}})[_0xe731('0x9')](function(_0x3933b7){logger[_0xe731('0x6')]('rpc',_0xe731('0x2'),_0x2aba36,_0x3933b7,_0xcfe915);return _0x21dac7(_0x3933b7);});});};module[_0xe731('0xa')]=client;
\ No newline at end of file
+var _0x8816=['routing','Request','then','debug','rpc','error','message','result','catch','exports','jayson/promise','bluebird','../../config/logger'];(function(_0x5ec4af,_0x38b921){var _0x513641=function(_0x1f0fc6){while(--_0x1f0fc6){_0x5ec4af['push'](_0x5ec4af['shift']());}};_0x513641(++_0x38b921);}(_0x8816,0xa6));var _0x6881=function(_0x40ff76,_0x2763b7){_0x40ff76=_0x40ff76-0x0;var _0x57208e=_0x8816[_0x40ff76];return _0x57208e;};'use strict';var jayson=require(_0x6881('0x0'));var BPromise=require(_0x6881('0x1'));var logger=require(_0x6881('0x2'))(_0x6881('0x3'));var client=jayson['client']['http']({'port':0x2329});client[_0x6881('0x4')]=function(_0x5bf499,_0x2966ec){return new BPromise(function(_0xa78909,_0x1c9cf6){return client['request'](_0x5bf499,_0x2966ec)[_0x6881('0x5')](function(_0x5ad0f0){logger[_0x6881('0x6')](_0x6881('0x7'),'routing',_0x5bf499,_0x2966ec,_0x5ad0f0);if(_0x5ad0f0[_0x6881('0x8')]){logger[_0x6881('0x8')]('rpc',_0x6881('0x3'),_0x5bf499,_0x5ad0f0['error'][_0x6881('0x9')],_0x2966ec);return _0x1c9cf6(_0x5ad0f0[_0x6881('0x8')][_0x6881('0x9')]);}else{return _0xa78909(_0x5ad0f0[_0x6881('0xa')]);}})[_0x6881('0xb')](function(_0x16d57c){logger[_0x6881('0x8')](_0x6881('0x7'),_0x6881('0x3'),_0x5bf499,_0x16d57c,_0x2966ec);return _0x1c9cf6(_0x16d57c);});});};module[_0x6881('0xc')]=client;
\ No newline at end of file
index 4227df9..9fceea8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11fc=['then','initMailAccounts','refresh','mailAccounts','listen','loginMailFrequency','catch','./server','./rpc/mailAccount','./rpc/setting','getMailAccounts'];(function(_0x5bdcf6,_0x130b57){var _0x3b2727=function(_0x2bcedd){while(--_0x2bcedd){_0x5bdcf6['push'](_0x5bdcf6['shift']());}};_0x3b2727(++_0x130b57);}(_0x11fc,0x130));var _0xc11f=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x11fc[_0x1d1779];return _0x2377e9;};'use strict';var BPromise=require('bluebird');var server=require(_0xc11f('0x0'));var Realtime=require('./realtime');var EmailChannel=require('./lib/email');var mailAccount=require(_0xc11f('0x1'));var setting=require(_0xc11f('0x2'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise['resolve']()['then'](mailAccount[_0xc11f('0x3')]())[_0xc11f('0x4')](realtime[_0xc11f('0x5')]())[_0xc11f('0x4')](function(){email[_0xc11f('0x6')](realtime[_0xc11f('0x7')]);return realtime;});}function main(){return server[_0xc11f('0x8')](realtime,email)[_0xc11f('0x4')](function(){return initRealtime();})[_0xc11f('0x4')](function(){return setting['getSettings']();})[_0xc11f('0x4')](function(_0x14949d){return setInterval(initRealtime,_0x14949d[_0xc11f('0x9')]*0x3e8);})[_0xc11f('0xa')](function(_0x392bc6){console['log'](_0x392bc6);});}main();
\ No newline at end of file
+var _0xbdfb=['refresh','listen','getSettings','loginMailFrequency','log','bluebird','./server','./realtime','./lib/email','./rpc/mailAccount','./rpc/setting','resolve','then','getMailAccounts'];(function(_0x1e31dc,_0x3bc39e){var _0x410c5e=function(_0x4b21fd){while(--_0x4b21fd){_0x1e31dc['push'](_0x1e31dc['shift']());}};_0x410c5e(++_0x3bc39e);}(_0xbdfb,0x1ef));var _0xbbdf=function(_0x3e8270,_0x293590){_0x3e8270=_0x3e8270-0x0;var _0x1ccde9=_0xbdfb[_0x3e8270];return _0x1ccde9;};'use strict';var BPromise=require(_0xbbdf('0x0'));var server=require(_0xbbdf('0x1'));var Realtime=require(_0xbbdf('0x2'));var EmailChannel=require(_0xbbdf('0x3'));var mailAccount=require(_0xbbdf('0x4'));var setting=require(_0xbbdf('0x5'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0xbbdf('0x6')]()[_0xbbdf('0x7')](mailAccount[_0xbbdf('0x8')]())[_0xbbdf('0x7')](realtime['initMailAccounts']())[_0xbbdf('0x7')](function(){email[_0xbbdf('0x9')](realtime['mailAccounts']);return realtime;});}function main(){return server[_0xbbdf('0xa')](realtime,email)[_0xbbdf('0x7')](function(){return initRealtime();})['then'](function(){return setting[_0xbbdf('0xb')]();})[_0xbbdf('0x7')](function(_0x177e8d){return setInterval(initRealtime,_0x177e8d[_0xbbdf('0xc')]*0x3e8);})['catch'](function(_0x2badd1){console[_0xbbdf('0xd')](_0x2badd1);});}main();
\ No newline at end of file
index 5e9d521..03cb252 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11e1=['key','Imap','status','messageStatus','total','isNil','stringify','md5','mailAccount:update','refresh','hasOwnProperty','box','handleImapBox','bind','end','handleImapEnd','error','connected','name','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','lastName','from','notify','then','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','sendMail','smtp','send','verifySmtp','Smtp','verified','verify','lodash','ioredis','../../../config/environment','email','redis','defaults','socket.io-emitter','./imap','./smtp','../rpc/mailAccount','info','mailAccounts','imapAccounts','prototype','emit'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x11e1,0x1ef));var _0x111e=function(_0x392efe,_0x31049d){_0x392efe=_0x392efe-0x0;var _0x13ef37=_0x11e1[_0x392efe];return _0x13ef37;};'use strict';var _=require(_0x111e('0x0'));var moment=require('moment');var BPromise=require('bluebird');var md5=require('md5');var Redis=require(_0x111e('0x1'));var config=require(_0x111e('0x2'));var logger=require('../../../config/logger')(_0x111e('0x3'));config[_0x111e('0x4')]=_[_0x111e('0x5')](config[_0x111e('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x111e('0x6'))(new Redis(config[_0x111e('0x4')]));var EmailImap=require(_0x111e('0x7'));var EmailSmtp=require(_0x111e('0x8'));var mailAccount=require(_0x111e('0x9'));var md5Accounts={};function EmailChannel(_0x1ee085){logger[_0x111e('0xa')]('start\x20email\x20channel');this[_0x111e('0xb')]=_0x1ee085[_0x111e('0xb')];this[_0x111e('0xc')]={};this['smtp']=new EmailSmtp();}EmailChannel[_0x111e('0xd')][_0x111e('0xe')]=function(_0x23da39){var _0x345729=this[_0x111e('0xb')][_0x23da39];var _0x58c064={'id':_0x345729['id'],'name':_0x345729['name'],'key':_0x345729[_0x111e('0xf')],'active':_0x345729['active'],'Imap':{'status':_0x345729[_0x111e('0x10')][_0x111e('0x11')],'messageStatus':_0x345729['Imap'][_0x111e('0x12')],'total':_0x345729[_0x111e('0x10')][_0x111e('0x13')]}};if(_[_0x111e('0x14')](md5Accounts[_0x23da39])){md5Accounts[_0x23da39]={};}var _0x216fa5=md5(JSON[_0x111e('0x15')](_0x58c064));if(md5Accounts[_0x23da39]['md5']!==_0x216fa5){md5Accounts[_0x23da39][_0x111e('0x16')]=_0x216fa5;io[_0x111e('0xe')](_0x111e('0x17'),_0x58c064);}};EmailChannel[_0x111e('0xd')][_0x111e('0x18')]=function(_0xe48ed7){for(var _0xd0e4a5 in _0xe48ed7){if(_0xe48ed7['hasOwnProperty'](_0xd0e4a5)){if(_0xe48ed7[_0xd0e4a5]['Imap']&&_0xe48ed7[_0xd0e4a5]['active']){var _0x31e715=_0xe48ed7[_0xd0e4a5][_0x111e('0x10')];if(!this[_0x111e('0xc')][_0x111e('0x19')](_0x31e715['id'])){this['imapAccounts'][_0x31e715['id']]=new EmailImap(_0x31e715,_0xe48ed7[_0xd0e4a5][_0x111e('0x3')]);this[_0x111e('0xc')][_0x31e715['id']]['on'](_0x111e('0x1a'),this[_0x111e('0x1b')][_0x111e('0x1c')](this,_0xd0e4a5));this[_0x111e('0xc')][_0x31e715['id']]['on']('email',this['handleImapEmail']['bind'](this,_0xd0e4a5));this['imapAccounts'][_0x31e715['id']]['on'](_0x111e('0x1d'),this[_0x111e('0x1e')][_0x111e('0x1c')](this,_0xd0e4a5));this[_0x111e('0xc')][_0x31e715['id']]['on'](_0x111e('0x1f'),this['handleImapError'][_0x111e('0x1c')](this,_0xd0e4a5));}}else{if(_[_0x111e('0x14')](this['mailAccounts'][_0xd0e4a5][_0x111e('0x10')])){this[_0x111e('0xb')][_0xd0e4a5]['Imap']={};}this[_0x111e('0xb')][_0xd0e4a5][_0x111e('0x10')][_0x111e('0x11')]='disabled';this[_0x111e('0xb')][_0xd0e4a5][_0x111e('0x10')][_0x111e('0x12')]='';this[_0x111e('0xe')](_0xd0e4a5);}}}};EmailChannel[_0x111e('0xd')][_0x111e('0x1b')]=function(_0x1bedac,_0x2c55f9){if(this[_0x111e('0xb')][_0x1bedac]){this[_0x111e('0xb')][_0x1bedac][_0x111e('0x10')][_0x111e('0x11')]=_0x111e('0x20');this['mailAccounts'][_0x1bedac][_0x111e('0x10')][_0x111e('0x12')]=_0x2c55f9[_0x111e('0x21')];if(_0x2c55f9['messages']){this['mailAccounts'][_0x1bedac][_0x111e('0x10')][_0x111e('0x13')]=_0x2c55f9[_0x111e('0x22')][_0x111e('0x13')];}return this[_0x111e('0xe')](_0x1bedac);}};EmailChannel[_0x111e('0xd')]['handleImapEmail']=function(_0x112138,_0x5943e6){logger[_0x111e('0xa')](_0x111e('0x23'),_0x5943e6['firstName'],_0x5943e6[_0x111e('0x24')],_0x5943e6[_0x111e('0x25')],_0x112138);if(this[_0x111e('0xb')][_0x112138]){return mailAccount[_0x111e('0x26')](_0x112138,_0x5943e6)[_0x111e('0x27')](function(_0x62828c){if(_0x62828c){logger[_0x111e('0xa')](_0x111e('0x28'));}})[_0x111e('0x29')](function(_0x29d9a6){logger['error'](_0x111e('0x2a'),JSON[_0x111e('0x15')](_0x29d9a6));});}};EmailChannel[_0x111e('0xd')][_0x111e('0x1e')]=function(_0x2b8c61){if(this[_0x111e('0xb')][_0x2b8c61]&&this[_0x111e('0xb')][_0x2b8c61]['Imap']){if(this['imapAccounts'][this[_0x111e('0xb')][_0x2b8c61][_0x111e('0x10')]['id']]){delete this[_0x111e('0xc')][this[_0x111e('0xb')][_0x2b8c61][_0x111e('0x10')]['id']];}this[_0x111e('0xb')][_0x2b8c61][_0x111e('0x10')][_0x111e('0x2b')]=moment();this[_0x111e('0xe')](_0x2b8c61);}};EmailChannel[_0x111e('0xd')]['handleImapError']=function(_0x3d5be5,_0x24ccb2){if(this[_0x111e('0xb')][_0x3d5be5]){this[_0x111e('0xb')][_0x3d5be5][_0x111e('0x10')][_0x111e('0x11')]=_0x111e('0x1f');this[_0x111e('0xb')][_0x3d5be5][_0x111e('0x10')][_0x111e('0x12')]=_0x24ccb2;return this[_0x111e('0xe')](_0x3d5be5);}};EmailChannel[_0x111e('0xd')][_0x111e('0x2c')]=function(_0x1f7f97,_0x3a56f2){return this[_0x111e('0x2d')][_0x111e('0x2e')](_0x1f7f97,_0x3a56f2);};EmailChannel[_0x111e('0xd')][_0x111e('0x2f')]=function(_0x483034){var _0x5091d2=this;if(this['mailAccounts'][_0x483034['id']]){if(_['isNil'](this[_0x111e('0xb')][_0x483034['id']][_0x111e('0x30')])){this[_0x111e('0xb')][_0x483034['id']][_0x111e('0x30')]={};}this[_0x111e('0xb')][_0x483034['id']][_0x111e('0x30')][_0x111e('0x2b')]=moment();return new BPromise(function(_0x25686d,_0x491ea8){return _0x5091d2[_0x111e('0x2d')]['verify'](_0x483034)['then'](function(_0x3554e3){_0x5091d2[_0x111e('0xb')][_0x483034['id']][_0x111e('0x30')]['status']=_0x111e('0x31');_0x5091d2[_0x111e('0xb')][_0x483034['id']][_0x111e('0x30')][_0x111e('0x12')]='';_0x5091d2[_0x111e('0xe')](_0x483034['id']);_0x25686d(_0x3554e3);})[_0x111e('0x29')](function(_0x33875c){_0x5091d2[_0x111e('0xb')][_0x483034['id']][_0x111e('0x30')]['status']='error';_0x5091d2['mailAccounts'][_0x483034['id']][_0x111e('0x30')]['messageStatus']=_0x33875c;_0x5091d2[_0x111e('0xe')](_0x483034['id']);_0x491ea8(_0x33875c);});});}return this[_0x111e('0x2d')][_0x111e('0x32')](_0x483034);};module['exports']=EmailChannel;
\ No newline at end of file
+var _0xe175=['stringify','md5','mailAccount:update','refresh','hasOwnProperty','box','bind','handleImapEmail','handleImapEnd','error','handleImapError','disabled','handleImapBox','status','connected','info','firstName','lastName','from','notify','then','Mail\x20accepted\x20from\x20routing','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','Smtp','verify','verified','exports','lodash','moment','bluebird','ioredis','email','redis','defaults','./smtp','../rpc/mailAccount','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','prototype','emit','name','key','active','Imap','messageStatus','total','isNil'];(function(_0x55f684,_0xd41b76){var _0x2de458=function(_0x158afe){while(--_0x158afe){_0x55f684['push'](_0x55f684['shift']());}};_0x2de458(++_0xd41b76);}(_0xe175,0xb2));var _0x5e17=function(_0x263998,_0x1b259a){_0x263998=_0x263998-0x0;var _0x15d8a7=_0xe175[_0x263998];return _0x15d8a7;};'use strict';var _=require(_0x5e17('0x0'));var moment=require(_0x5e17('0x1'));var BPromise=require(_0x5e17('0x2'));var md5=require('md5');var Redis=require(_0x5e17('0x3'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x5e17('0x4'));config[_0x5e17('0x5')]=_[_0x5e17('0x6')](config[_0x5e17('0x5')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var EmailImap=require('./imap');var EmailSmtp=require(_0x5e17('0x7'));var mailAccount=require(_0x5e17('0x8'));var md5Accounts={};function EmailChannel(_0xa187ca){logger['info'](_0x5e17('0x9'));this[_0x5e17('0xa')]=_0xa187ca[_0x5e17('0xa')];this[_0x5e17('0xb')]={};this[_0x5e17('0xc')]=new EmailSmtp();}EmailChannel[_0x5e17('0xd')][_0x5e17('0xe')]=function(_0x340865){var _0x266862=this[_0x5e17('0xa')][_0x340865];var _0x1734e4={'id':_0x266862['id'],'name':_0x266862[_0x5e17('0xf')],'key':_0x266862[_0x5e17('0x10')],'active':_0x266862[_0x5e17('0x11')],'Imap':{'status':_0x266862['Imap']['status'],'messageStatus':_0x266862[_0x5e17('0x12')][_0x5e17('0x13')],'total':_0x266862[_0x5e17('0x12')][_0x5e17('0x14')]}};if(_[_0x5e17('0x15')](md5Accounts[_0x340865])){md5Accounts[_0x340865]={};}var _0x1fae2c=md5(JSON[_0x5e17('0x16')](_0x1734e4));if(md5Accounts[_0x340865]['md5']!==_0x1fae2c){md5Accounts[_0x340865][_0x5e17('0x17')]=_0x1fae2c;io['emit'](_0x5e17('0x18'),_0x1734e4);}};EmailChannel['prototype'][_0x5e17('0x19')]=function(_0x262e2f){for(var _0x159e53 in _0x262e2f){if(_0x262e2f[_0x5e17('0x1a')](_0x159e53)){if(_0x262e2f[_0x159e53][_0x5e17('0x12')]&&_0x262e2f[_0x159e53][_0x5e17('0x11')]){var _0x32ebd6=_0x262e2f[_0x159e53][_0x5e17('0x12')];if(!this[_0x5e17('0xb')]['hasOwnProperty'](_0x32ebd6['id'])){this[_0x5e17('0xb')][_0x32ebd6['id']]=new EmailImap(_0x32ebd6,_0x262e2f[_0x159e53][_0x5e17('0x4')]);this['imapAccounts'][_0x32ebd6['id']]['on'](_0x5e17('0x1b'),this['handleImapBox'][_0x5e17('0x1c')](this,_0x159e53));this[_0x5e17('0xb')][_0x32ebd6['id']]['on']('email',this[_0x5e17('0x1d')][_0x5e17('0x1c')](this,_0x159e53));this[_0x5e17('0xb')][_0x32ebd6['id']]['on']('end',this[_0x5e17('0x1e')][_0x5e17('0x1c')](this,_0x159e53));this[_0x5e17('0xb')][_0x32ebd6['id']]['on'](_0x5e17('0x1f'),this[_0x5e17('0x20')]['bind'](this,_0x159e53));}}else{if(_[_0x5e17('0x15')](this[_0x5e17('0xa')][_0x159e53][_0x5e17('0x12')])){this[_0x5e17('0xa')][_0x159e53][_0x5e17('0x12')]={};}this[_0x5e17('0xa')][_0x159e53][_0x5e17('0x12')]['status']=_0x5e17('0x21');this[_0x5e17('0xa')][_0x159e53][_0x5e17('0x12')][_0x5e17('0x13')]='';this[_0x5e17('0xe')](_0x159e53);}}}};EmailChannel[_0x5e17('0xd')][_0x5e17('0x22')]=function(_0x51199f,_0x232728){if(this['mailAccounts'][_0x51199f]){this[_0x5e17('0xa')][_0x51199f][_0x5e17('0x12')][_0x5e17('0x23')]=_0x5e17('0x24');this[_0x5e17('0xa')][_0x51199f][_0x5e17('0x12')][_0x5e17('0x13')]=_0x232728['name'];if(_0x232728['messages']){this[_0x5e17('0xa')][_0x51199f][_0x5e17('0x12')][_0x5e17('0x14')]=_0x232728['messages'][_0x5e17('0x14')];}return this[_0x5e17('0xe')](_0x51199f);}};EmailChannel[_0x5e17('0xd')][_0x5e17('0x1d')]=function(_0x6b5b93,_0x345642){logger[_0x5e17('0x25')]('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0x345642[_0x5e17('0x26')],_0x345642[_0x5e17('0x27')],_0x345642[_0x5e17('0x28')],_0x6b5b93);if(this['mailAccounts'][_0x6b5b93]){return mailAccount[_0x5e17('0x29')](_0x6b5b93,_0x345642)[_0x5e17('0x2a')](function(_0x46f630){if(_0x46f630){logger['info'](_0x5e17('0x2b'));}})['catch'](function(_0x3ed17b){logger[_0x5e17('0x1f')](_0x5e17('0x2c'),JSON['stringify'](_0x3ed17b));});}};EmailChannel[_0x5e17('0xd')]['handleImapEnd']=function(_0x5b31ef){if(this[_0x5e17('0xa')][_0x5b31ef]&&this['mailAccounts'][_0x5b31ef][_0x5e17('0x12')]){if(this[_0x5e17('0xb')][this[_0x5e17('0xa')][_0x5b31ef][_0x5e17('0x12')]['id']]){delete this[_0x5e17('0xb')][this[_0x5e17('0xa')][_0x5b31ef][_0x5e17('0x12')]['id']];}this[_0x5e17('0xa')][_0x5b31ef]['Imap'][_0x5e17('0x2d')]=moment();this['emit'](_0x5b31ef);}};EmailChannel[_0x5e17('0xd')][_0x5e17('0x20')]=function(_0x2e3c60,_0x550139){if(this['mailAccounts'][_0x2e3c60]){this[_0x5e17('0xa')][_0x2e3c60][_0x5e17('0x12')][_0x5e17('0x23')]='error';this[_0x5e17('0xa')][_0x2e3c60][_0x5e17('0x12')][_0x5e17('0x13')]=_0x550139;return this[_0x5e17('0xe')](_0x2e3c60);}};EmailChannel[_0x5e17('0xd')]['sendMail']=function(_0x24c19a,_0x10ded7){return this[_0x5e17('0xc')]['send'](_0x24c19a,_0x10ded7);};EmailChannel[_0x5e17('0xd')]['verifySmtp']=function(_0x598bb7){var _0x3802ec=this;if(this['mailAccounts'][_0x598bb7['id']]){if(_[_0x5e17('0x15')](this[_0x5e17('0xa')][_0x598bb7['id']]['Smtp'])){this[_0x5e17('0xa')][_0x598bb7['id']][_0x5e17('0x2e')]={};}this[_0x5e17('0xa')][_0x598bb7['id']][_0x5e17('0x2e')][_0x5e17('0x2d')]=moment();return new BPromise(function(_0x4439d7,_0x400f6f){return _0x3802ec[_0x5e17('0xc')][_0x5e17('0x2f')](_0x598bb7)['then'](function(_0x52b6d5){_0x3802ec['mailAccounts'][_0x598bb7['id']][_0x5e17('0x2e')][_0x5e17('0x23')]=_0x5e17('0x30');_0x3802ec[_0x5e17('0xa')][_0x598bb7['id']][_0x5e17('0x2e')][_0x5e17('0x13')]='';_0x3802ec[_0x5e17('0xe')](_0x598bb7['id']);_0x4439d7(_0x52b6d5);})['catch'](function(_0x36a8f6){_0x3802ec[_0x5e17('0xa')][_0x598bb7['id']][_0x5e17('0x2e')][_0x5e17('0x23')]='error';_0x3802ec[_0x5e17('0xa')][_0x598bb7['id']][_0x5e17('0x2e')][_0x5e17('0x13')]=_0x36a8f6;_0x3802ec[_0x5e17('0xe')](_0x598bb7['id']);_0x400f6f(_0x36a8f6);});});}return this['smtp'][_0x5e17('0x2f')](_0x598bb7);};module[_0x5e17('0x31')]=EmailChannel;
\ No newline at end of file
index da01286..5c97e29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbfb=['once','bind','handleError','connect','prototype','connTimeout','authTimeout','isNil','authentication','user','password','host','port','tls','autotls','required','getHost','service','anonymous@xcally.com','handleReady','openBox','handleOpenBox','box','readUnseen','handleCloseBox','search','UNSEEN','handleReadUnseen','length','fetch','message','handleFetchMessage','handleFetchError','error','closeBox','body','handleMessageBody','handleMessageAttributes','end','handleSimpleParser','handleMessageEnd','parser','emit','handleFetchEnd','textCode','hasOwnProperty','upperFirst','exports','path','util','lodash','randomstring','simpleParser','iconv','Iconv','./utils','../../../config/logger','email','mailbox','INBOX','getAccount','imap','account'];(function(_0x3826ad,_0x49a30d){var _0x17b900=function(_0x38474f){while(--_0x38474f){_0x3826ad['push'](_0x3826ad['shift']());}};_0x17b900(++_0x49a30d);}(_0xdbfb,0x16b));var _0xbdbf=function(_0x1de16f,_0x5943f3){_0x1de16f=_0x1de16f-0x0;var _0x4a5a07=_0xdbfb[_0x1de16f];return _0x4a5a07;};'use strict';var fs=require('fs');var path=require(_0xbdbf('0x0'));var util=require(_0xbdbf('0x1'));var Imap=require('imap');var _=require(_0xbdbf('0x2'));var rs=require(_0xbdbf('0x3'));var simpleParser=require('mailparser')[_0xbdbf('0x4')];var Iconv=require(_0xbdbf('0x5'))[_0xbdbf('0x6')];var EventEmitter=require('events')['EventEmitter'];var utils=require(_0xbdbf('0x7'));var logger=require(_0xbdbf('0x8'))(_0xbdbf('0x9'));function EmailImap(_0x1c818a,_0x1d068d){this[_0xbdbf('0xa')]=_0xbdbf('0xb');this['account']=this[_0xbdbf('0xc')](_0x1c818a,_0x1d068d);this[_0xbdbf('0xd')]=new Imap(this[_0xbdbf('0xe')]);this[_0xbdbf('0xd')][_0xbdbf('0xf')]('ready',this['handleReady'][_0xbdbf('0x10')](this));this['imap'][_0xbdbf('0xf')]('end',this['handleEnd']['bind'](this));this[_0xbdbf('0xd')]['on']('error',this[_0xbdbf('0x11')][_0xbdbf('0x10')](this));this[_0xbdbf('0xd')][_0xbdbf('0x12')]();}util['inherits'](EmailImap,EventEmitter);EmailImap[_0xbdbf('0x13')][_0xbdbf('0xc')]=function(_0x3cf2d9,_0x16dca8){var _0x1399e4={'connTimeout':_0x3cf2d9[_0xbdbf('0x14')]?_0x3cf2d9[_0xbdbf('0x14')]*0x3e8:0x2710,'authTimeout':_0x3cf2d9[_0xbdbf('0x15')]?_0x3cf2d9[_0xbdbf('0x15')]*0x3e8:0x1388};if(_[_0xbdbf('0x16')](_0x3cf2d9['service'])){if(_0x3cf2d9[_0xbdbf('0x17')]){_0x1399e4[_0xbdbf('0x18')]=_0x3cf2d9['user'];_0x1399e4['password']=_0x3cf2d9[_0xbdbf('0x19')];}_0x1399e4[_0xbdbf('0x1a')]=_0x3cf2d9[_0xbdbf('0x1a')];_0x1399e4[_0xbdbf('0x1b')]=_0x3cf2d9[_0xbdbf('0x1b')]||0x3e1;if(_0x3cf2d9[_0xbdbf('0x1c')]){_0x1399e4[_0xbdbf('0x1c')]=!![];}else{_0x1399e4[_0xbdbf('0x1c')]=![];_0x1399e4[_0xbdbf('0x1d')]=_0xbdbf('0x1e');}}else{_0x1399e4[_0xbdbf('0x18')]=_0x3cf2d9[_0xbdbf('0x18')];_0x1399e4['password']=_0x3cf2d9['password'];_0x1399e4[_0xbdbf('0x1a')]=utils[_0xbdbf('0x1f')](_0x3cf2d9[_0xbdbf('0x20')]);_0x1399e4[_0xbdbf('0x1b')]=0x3e1;_0x1399e4['tls']=!![];}_0x1399e4['email']=_0x16dca8||_0x3cf2d9[_0xbdbf('0x18')]||_0xbdbf('0x21');return _0x1399e4;};EmailImap[_0xbdbf('0x13')][_0xbdbf('0x22')]=function(){this[_0xbdbf('0xd')][_0xbdbf('0x23')](this[_0xbdbf('0xa')],![],this[_0xbdbf('0x24')][_0xbdbf('0x10')](this));};EmailImap[_0xbdbf('0x13')][_0xbdbf('0x24')]=function(_0x55e708,_0x136a27){if(_0x55e708){this[_0xbdbf('0x11')](_0x55e708,!![]);}else{this['emit'](_0xbdbf('0x25'),_0x136a27);this[_0xbdbf('0x26')]();}};EmailImap[_0xbdbf('0x13')][_0xbdbf('0x27')]=function(_0x3eb4ef){if(_0x3eb4ef){this[_0xbdbf('0x11')](_0x3eb4ef,!![]);}else{this[_0xbdbf('0xd')]['end']();}};EmailImap[_0xbdbf('0x13')][_0xbdbf('0x26')]=function(){this[_0xbdbf('0xd')][_0xbdbf('0x28')]([_0xbdbf('0x29')],this['handleReadUnseen'][_0xbdbf('0x10')](this));};EmailImap['prototype'][_0xbdbf('0x2a')]=function(_0x18fbd9,_0x58aa84){if(_0x18fbd9){this['handleError'](_0x18fbd9,!![]);}else{if(_0x58aa84[_0xbdbf('0x2b')]){try{var _0x2a82f5=this[_0xbdbf('0xd')][_0xbdbf('0x2c')](_0x58aa84,{'bodies':'','markSeen':!![]});_0x2a82f5['on'](_0xbdbf('0x2d'),this[_0xbdbf('0x2e')][_0xbdbf('0x10')](this));_0x2a82f5[_0xbdbf('0xf')]('error',this[_0xbdbf('0x2f')][_0xbdbf('0x10')](this));_0x2a82f5[_0xbdbf('0xf')]('end',this['handleFetchEnd'][_0xbdbf('0x10')](this));}catch(_0x1190d5){logger[_0xbdbf('0x30')](_0x1190d5);}}else{this[_0xbdbf('0xd')][_0xbdbf('0x31')](!![],this['handleCloseBox'][_0xbdbf('0x10')](this));}}};EmailImap[_0xbdbf('0x13')][_0xbdbf('0x2e')]=function(_0x2254c2,_0x52274d){_0x2254c2['on'](_0xbdbf('0x32'),this[_0xbdbf('0x33')][_0xbdbf('0x10')](this));_0x2254c2[_0xbdbf('0xf')]('attributes',this[_0xbdbf('0x34')][_0xbdbf('0x10')](this));_0x2254c2[_0xbdbf('0xf')](_0xbdbf('0x35'),this['handleMessageEnd'][_0xbdbf('0x10')](this));};EmailImap[_0xbdbf('0x13')][_0xbdbf('0x33')]=function(_0x1ecb6d,_0x27f08c){simpleParser(_0x1ecb6d,{'Iconv':Iconv},this[_0xbdbf('0x36')][_0xbdbf('0x10')](this));};EmailImap[_0xbdbf('0x13')]['handleMessageAttributes']=function(_0x268981){};EmailImap[_0xbdbf('0x13')][_0xbdbf('0x37')]=function(){};EmailImap[_0xbdbf('0x13')][_0xbdbf('0x36')]=function(_0x33097d,_0x2de4a1){if(_0x33097d){logger['error'](_0x33097d);}else{var _0x31496b=this;utils[_0xbdbf('0x38')](this[_0xbdbf('0xe')],_0x2de4a1,function(_0x248691){_0x31496b[_0xbdbf('0x39')]('email',_0x248691);});}};EmailImap[_0xbdbf('0x13')][_0xbdbf('0x3a')]=function(){this[_0xbdbf('0xd')][_0xbdbf('0x31')](!![],this['handleCloseBox']['bind'](this));};EmailImap[_0xbdbf('0x13')][_0xbdbf('0x2f')]=function(_0x52bc13){this[_0xbdbf('0x11')](_0x52bc13);this['imap'][_0xbdbf('0x31')](!![],this[_0xbdbf('0x27')]['bind'](this));};EmailImap[_0xbdbf('0x13')]['handleEnd']=function(){this[_0xbdbf('0x39')]('end');};EmailImap['prototype'][_0xbdbf('0x11')]=function(_0x3af2d7,_0x46f898){logger['error']('handleError',this[_0xbdbf('0xe')]['email'],JSON['stringify'](_0x3af2d7));var _0x57b466='';if(_0x3af2d7){if(_0x3af2d7[_0xbdbf('0x3b')]){_0x57b466=_0x3af2d7[_0xbdbf('0x3b')];}else{for(var _0x567e9a in _0x3af2d7){if(_0x3af2d7[_0xbdbf('0x3c')](_0x567e9a)){_0x57b466+=_[_0xbdbf('0x3d')](_0x567e9a)+':\x20'+_0x3af2d7[_0x567e9a]+'\x0a';}}}}if(_0x46f898){this['imap'][_0xbdbf('0x35')]();}else{this[_0xbdbf('0x39')](_0xbdbf('0x30'),_0x57b466);this[_0xbdbf('0x39')](_0xbdbf('0x35'));}};module[_0xbdbf('0x3e')]=EmailImap;
\ No newline at end of file
+var _0x2141=['handleFetchEnd','handleCloseBox','handleFetchMessage','body','handleMessageBody','attributes','handleMessageAttributes','handleSimpleParser','parser','emit','closeBox','stringify','textCode','hasOwnProperty','exports','path','util','imap','lodash','randomstring','mailparser','Iconv','events','EventEmitter','./utils','../../../config/logger','email','mailbox','INBOX','account','getAccount','once','ready','handleReady','bind','end','handleEnd','handleError','prototype','connTimeout','authTimeout','isNil','service','authentication','user','password','host','port','tls','required','anonymous@xcally.com','openBox','box','readUnseen','search','UNSEEN','handleReadUnseen','length','fetch','message','error'];(function(_0x11e90b,_0x3ec29a){var _0x31452e=function(_0x96b4ad){while(--_0x96b4ad){_0x11e90b['push'](_0x11e90b['shift']());}};_0x31452e(++_0x3ec29a);}(_0x2141,0x1ba));var _0x1214=function(_0x5c549f,_0x3c7879){_0x5c549f=_0x5c549f-0x0;var _0x5ae8e9=_0x2141[_0x5c549f];return _0x5ae8e9;};'use strict';var fs=require('fs');var path=require(_0x1214('0x0'));var util=require(_0x1214('0x1'));var Imap=require(_0x1214('0x2'));var _=require(_0x1214('0x3'));var rs=require(_0x1214('0x4'));var simpleParser=require(_0x1214('0x5'))['simpleParser'];var Iconv=require('iconv')[_0x1214('0x6')];var EventEmitter=require(_0x1214('0x7'))[_0x1214('0x8')];var utils=require(_0x1214('0x9'));var logger=require(_0x1214('0xa'))(_0x1214('0xb'));function EmailImap(_0x6b676b,_0xcd7f4){this[_0x1214('0xc')]=_0x1214('0xd');this[_0x1214('0xe')]=this[_0x1214('0xf')](_0x6b676b,_0xcd7f4);this[_0x1214('0x2')]=new Imap(this[_0x1214('0xe')]);this[_0x1214('0x2')][_0x1214('0x10')](_0x1214('0x11'),this[_0x1214('0x12')][_0x1214('0x13')](this));this['imap'][_0x1214('0x10')](_0x1214('0x14'),this[_0x1214('0x15')]['bind'](this));this[_0x1214('0x2')]['on']('error',this[_0x1214('0x16')]['bind'](this));this[_0x1214('0x2')]['connect']();}util['inherits'](EmailImap,EventEmitter);EmailImap[_0x1214('0x17')][_0x1214('0xf')]=function(_0x41678b,_0x506f71){var _0x271e41={'connTimeout':_0x41678b[_0x1214('0x18')]?_0x41678b[_0x1214('0x18')]*0x3e8:0x2710,'authTimeout':_0x41678b[_0x1214('0x19')]?_0x41678b['authTimeout']*0x3e8:0x1388};if(_[_0x1214('0x1a')](_0x41678b[_0x1214('0x1b')])){if(_0x41678b[_0x1214('0x1c')]){_0x271e41[_0x1214('0x1d')]=_0x41678b[_0x1214('0x1d')];_0x271e41[_0x1214('0x1e')]=_0x41678b[_0x1214('0x1e')];}_0x271e41['host']=_0x41678b[_0x1214('0x1f')];_0x271e41[_0x1214('0x20')]=_0x41678b[_0x1214('0x20')]||0x3e1;if(_0x41678b['tls']){_0x271e41[_0x1214('0x21')]=!![];}else{_0x271e41[_0x1214('0x21')]=![];_0x271e41['autotls']=_0x1214('0x22');}}else{_0x271e41[_0x1214('0x1d')]=_0x41678b[_0x1214('0x1d')];_0x271e41[_0x1214('0x1e')]=_0x41678b['password'];_0x271e41[_0x1214('0x1f')]=utils['getHost'](_0x41678b['service']);_0x271e41[_0x1214('0x20')]=0x3e1;_0x271e41[_0x1214('0x21')]=!![];}_0x271e41['email']=_0x506f71||_0x41678b[_0x1214('0x1d')]||_0x1214('0x23');return _0x271e41;};EmailImap[_0x1214('0x17')]['handleReady']=function(){this[_0x1214('0x2')][_0x1214('0x24')](this['mailbox'],![],this['handleOpenBox'][_0x1214('0x13')](this));};EmailImap[_0x1214('0x17')]['handleOpenBox']=function(_0x3450cc,_0x5add8c){if(_0x3450cc){this['handleError'](_0x3450cc,!![]);}else{this['emit'](_0x1214('0x25'),_0x5add8c);this[_0x1214('0x26')]();}};EmailImap[_0x1214('0x17')]['handleCloseBox']=function(_0x76c1d4){if(_0x76c1d4){this[_0x1214('0x16')](_0x76c1d4,!![]);}else{this[_0x1214('0x2')][_0x1214('0x14')]();}};EmailImap[_0x1214('0x17')][_0x1214('0x26')]=function(){this['imap'][_0x1214('0x27')]([_0x1214('0x28')],this[_0x1214('0x29')]['bind'](this));};EmailImap[_0x1214('0x17')]['handleReadUnseen']=function(_0xe1e041,_0x519287){if(_0xe1e041){this['handleError'](_0xe1e041,!![]);}else{if(_0x519287[_0x1214('0x2a')]){try{var _0x3a6cc8=this[_0x1214('0x2')][_0x1214('0x2b')](_0x519287,{'bodies':'','markSeen':!![]});_0x3a6cc8['on'](_0x1214('0x2c'),this['handleFetchMessage'][_0x1214('0x13')](this));_0x3a6cc8[_0x1214('0x10')](_0x1214('0x2d'),this['handleFetchError'][_0x1214('0x13')](this));_0x3a6cc8['once'](_0x1214('0x14'),this[_0x1214('0x2e')][_0x1214('0x13')](this));}catch(_0x580cf7){logger[_0x1214('0x2d')](_0x580cf7);}}else{this[_0x1214('0x2')]['closeBox'](!![],this[_0x1214('0x2f')]['bind'](this));}}};EmailImap[_0x1214('0x17')][_0x1214('0x30')]=function(_0xc6a0d8,_0x6a7c26){_0xc6a0d8['on'](_0x1214('0x31'),this[_0x1214('0x32')]['bind'](this));_0xc6a0d8[_0x1214('0x10')](_0x1214('0x33'),this[_0x1214('0x34')]['bind'](this));_0xc6a0d8[_0x1214('0x10')](_0x1214('0x14'),this['handleMessageEnd'][_0x1214('0x13')](this));};EmailImap[_0x1214('0x17')][_0x1214('0x32')]=function(_0x31e2e6,_0x5d57f8){simpleParser(_0x31e2e6,{'Iconv':Iconv},this[_0x1214('0x35')]['bind'](this));};EmailImap[_0x1214('0x17')][_0x1214('0x34')]=function(_0x3641db){};EmailImap[_0x1214('0x17')]['handleMessageEnd']=function(){};EmailImap['prototype']['handleSimpleParser']=function(_0x597ad8,_0x42f056){if(_0x597ad8){logger[_0x1214('0x2d')](_0x597ad8);}else{var _0x33cee2=this;utils[_0x1214('0x36')](this[_0x1214('0xe')],_0x42f056,function(_0x10ffa8){_0x33cee2[_0x1214('0x37')](_0x1214('0xb'),_0x10ffa8);});}};EmailImap[_0x1214('0x17')][_0x1214('0x2e')]=function(){this[_0x1214('0x2')][_0x1214('0x38')](!![],this[_0x1214('0x2f')][_0x1214('0x13')](this));};EmailImap[_0x1214('0x17')]['handleFetchError']=function(_0x5cf136){this[_0x1214('0x16')](_0x5cf136);this[_0x1214('0x2')]['closeBox'](!![],this[_0x1214('0x2f')][_0x1214('0x13')](this));};EmailImap['prototype']['handleEnd']=function(){this[_0x1214('0x37')](_0x1214('0x14'));};EmailImap['prototype']['handleError']=function(_0x3acbb3,_0x22fc28){logger[_0x1214('0x2d')](_0x1214('0x16'),this[_0x1214('0xe')][_0x1214('0xb')],JSON[_0x1214('0x39')](_0x3acbb3));var _0x2208f5='';if(_0x3acbb3){if(_0x3acbb3[_0x1214('0x3a')]){_0x2208f5=_0x3acbb3['textCode'];}else{for(var _0x2c82c4 in _0x3acbb3){if(_0x3acbb3[_0x1214('0x3b')](_0x2c82c4)){_0x2208f5+=_['upperFirst'](_0x2c82c4)+':\x20'+_0x3acbb3[_0x2c82c4]+'\x0a';}}}}if(_0x22fc28){this['imap'][_0x1214('0x14')]();}else{this[_0x1214('0x37')]('error',_0x2208f5);this[_0x1214('0x37')](_0x1214('0x14'));}};module[_0x1214('0x3c')]=EmailImap;
\ No newline at end of file
index c0ef121..e48ddcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b38=['send','createTransport','use','compile','sendMail','toString','prototype','verify','Not\x20verifired','nodemailer','bluebird','nodemailer-plugin-inline-base64'];(function(_0xc121d2,_0x284869){var _0x15a946=function(_0x511a98){while(--_0x511a98){_0xc121d2['push'](_0xc121d2['shift']());}};_0x15a946(++_0x284869);}(_0x5b38,0x81));var _0x85b3=function(_0x8dc04d,_0xaa7559){_0x8dc04d=_0x8dc04d-0x0;var _0x2f5f28=_0x5b38[_0x8dc04d];return _0x2f5f28;};'use strict';var nodemailer=require(_0x85b3('0x0'));var BPromise=require(_0x85b3('0x1'));var inlineBase64=require(_0x85b3('0x2'));function EmailSmtp(){}EmailSmtp['prototype'][_0x85b3('0x3')]=function(_0x4be89e,_0x589083){return new BPromise(function(_0x3b54d7,_0x2e4483){var _0x119559=nodemailer[_0x85b3('0x4')](_0x4be89e);_0x119559[_0x85b3('0x5')](_0x85b3('0x6'),inlineBase64());_0x119559[_0x85b3('0x7')](_0x589083,function(_0x40d41b,_0x18020a){if(_0x40d41b){_0x2e4483(_0x40d41b[_0x85b3('0x8')]());}else{_0x3b54d7(_0x18020a);}});});};EmailSmtp[_0x85b3('0x9')][_0x85b3('0xa')]=function(_0x42a6e7){return new BPromise(function(_0x183ff9,_0x4ae3fd){var _0x3de0d3=nodemailer[_0x85b3('0x4')](_0x42a6e7);_0x3de0d3[_0x85b3('0xa')](function(_0x152235,_0x201be2){if(_0x152235){_0x4ae3fd(_0x152235[_0x85b3('0x8')]());}else{if(_0x201be2){_0x183ff9(_0x201be2);}else{_0x4ae3fd(_0x85b3('0xb'));}}});});};module['exports']=EmailSmtp;
\ No newline at end of file
+var _0x412a=['compile','sendMail','verify','toString','Not\x20verifired','bluebird','nodemailer-plugin-inline-base64','prototype','send','createTransport'];(function(_0x32ba1a,_0x369816){var _0x347ed8=function(_0x3ea436){while(--_0x3ea436){_0x32ba1a['push'](_0x32ba1a['shift']());}};_0x347ed8(++_0x369816);}(_0x412a,0x145));var _0xa412=function(_0x1c7444,_0x287859){_0x1c7444=_0x1c7444-0x0;var _0x49f411=_0x412a[_0x1c7444];return _0x49f411;};'use strict';var nodemailer=require('nodemailer');var BPromise=require(_0xa412('0x0'));var inlineBase64=require(_0xa412('0x1'));function EmailSmtp(){}EmailSmtp[_0xa412('0x2')][_0xa412('0x3')]=function(_0x3e9d1c,_0x472107){return new BPromise(function(_0x5eb59d,_0x1eddcd){var _0x31259f=nodemailer[_0xa412('0x4')](_0x3e9d1c);_0x31259f['use'](_0xa412('0x5'),inlineBase64());_0x31259f[_0xa412('0x6')](_0x472107,function(_0x25da9c,_0x27f927){if(_0x25da9c){_0x1eddcd(_0x25da9c['toString']());}else{_0x5eb59d(_0x27f927);}});});};EmailSmtp['prototype'][_0xa412('0x7')]=function(_0x56460f){return new BPromise(function(_0x1221b0,_0x5ad0ad){var _0x1cefb5=nodemailer[_0xa412('0x4')](_0x56460f);_0x1cefb5['verify'](function(_0x4c1d97,_0x1a7335){if(_0x4c1d97){_0x5ad0ad(_0x4c1d97[_0xa412('0x8')]());}else{if(_0x1a7335){_0x1221b0(_0x1a7335);}else{_0x5ad0ad(_0xa412('0x9'));}}});});};module['exports']=EmailSmtp;
\ No newline at end of file
index 40737e8..294f421 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaee6=['util','node-tnef','email','../../../config/environment','head','value','address','anonymous','generate','@xcally.com','name','substring','indexOf','split','slice','join','Anonymous','length','pop','isEmpty','html','test','replace','includes','attachments','forEach','push','filename','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','message','originTo','originCc','bcc','attach','type','attachment','attachment-','format','%s-%s','root','server/files/attachments/','writeFileSync','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','line','isAutoreply','parser','from','subject','messageId','inReplyTo','YYYY-MM-DD\x20HH:mm:ss','filter','application/ms-tnef','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','content','<p>Empty\x20message</p>','Attachments','Title','Data','gmail','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','127.0.0.1','lodash','moment','randomstring','path'];(function(_0x46bc66,_0x3e3cb2){var _0x294c7c=function(_0x25f6b6){while(--_0x25f6b6){_0x46bc66['push'](_0x46bc66['shift']());}};_0x294c7c(++_0x3e3cb2);}(_0xaee6,0x187));var _0x6aee=function(_0x32102b,_0x5696d7){_0x32102b=_0x32102b-0x0;var _0x5ca42c=_0xaee6[_0x32102b];return _0x5ca42c;};'use strict';var _=require(_0x6aee('0x0'));var moment=require(_0x6aee('0x1'));var random=require(_0x6aee('0x2'));var fs=require('fs');var path=require(_0x6aee('0x3'));var util=require(_0x6aee('0x4'));var tnef=require(_0x6aee('0x5'));var logger=require('../../../config/logger')(_0x6aee('0x6'));var config=require(_0x6aee('0x7'));function getAddress(_0x1e23ba){var _0x5e83b4=_[_0x6aee('0x8')](_0x1e23ba[_0x6aee('0x9')]);return _0x5e83b4&&_0x5e83b4[_0x6aee('0xa')]?_0x5e83b4[_0x6aee('0xa')]:_0x6aee('0xb')+random[_0x6aee('0xc')](0x6)+_0x6aee('0xd');}function getFirstName(_0x47db4e){var _0x490b55=_[_0x6aee('0x8')](_0x47db4e['value']);if(_0x490b55&&_0x490b55[_0x6aee('0xe')]){if(_0x490b55[_0x6aee('0xe')]==_0x490b55[_0x6aee('0xa')]){return _0x490b55['name'][_0x6aee('0xf')](0x0,_0x490b55[_0x6aee('0xe')][_0x6aee('0x10')]('@'));}var _0x1092d9=_0x490b55['name'][_0x6aee('0x11')](/\s+/);return _0x1092d9['length']>0x1?_0x1092d9[_0x6aee('0x12')](0x0,-0x1)[_0x6aee('0x13')]('\x20'):_0x490b55[_0x6aee('0xe')];}return _0x6aee('0x14');}function getLastName(_0x1276ac){var _0x5201fa=_[_0x6aee('0x8')](_0x1276ac[_0x6aee('0x9')]);if(_0x5201fa&&_0x5201fa['name']){var _0x54ac80=_0x5201fa[_0x6aee('0xe')][_0x6aee('0x11')](/\s+/);return _0x54ac80[_0x6aee('0x15')]>0x1?_0x54ac80[_0x6aee('0x16')]():'';}return'';}function getMails(_0x16cc61,_0x257c0b){var _0x1c0235='';for(var _0x2d84c0=0x0;_0x2d84c0<_0x257c0b['value'][_0x6aee('0x15')];_0x2d84c0+=0x1){if(_0x257c0b[_0x6aee('0x9')][_0x2d84c0]['address']!==_0x16cc61){if(!_[_0x6aee('0x17')](_0x1c0235)){_0x1c0235+=',';}_0x1c0235+=_0x257c0b[_0x6aee('0x9')][_0x2d84c0]['name']||_0x257c0b[_0x6aee('0x9')][_0x2d84c0][_0x6aee('0xa')]||'';_0x1c0235+='\x20<';_0x1c0235+=_0x257c0b[_0x6aee('0x9')][_0x2d84c0][_0x6aee('0xa')]?_0x257c0b[_0x6aee('0x9')][_0x2d84c0][_0x6aee('0xa')]:_0x6aee('0xb')+random['generate'](0x6)+_0x6aee('0xd');_0x1c0235+='>';}}return _0x1c0235;}function parseEmail(_0x5e73e2,_0x495ec5,_0x2097ed){if(_0x495ec5[_0x6aee('0x18')]){var _0x409295=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x409295[_0x6aee('0x19')](_0x495ec5[_0x6aee('0x18')])){_0x495ec5[_0x6aee('0x18')]=_0x495ec5[_0x6aee('0x18')][_0x6aee('0x1a')](_0x409295,'');}if(_0x495ec5['html'][_0x6aee('0x1b')]('<img')){var _0x4e0504=[];_0x495ec5[_0x6aee('0x1c')][_0x6aee('0x1d')](_0x5ea8da=>{_0x4e0504[_0x6aee('0x1e')](_0x5ea8da[_0x6aee('0x1f')]);});var _0x56716f=/<img.*? _SRC(.*?)[^>]+>/g;var _0x286297=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x43f0bb=_0x495ec5[_0x6aee('0x18')][_0x6aee('0x1a')](_0x286297,_0x6aee('0x20'));var _0x321c55=_0x43f0bb[_0x6aee('0x1a')](_0x56716f,_0x6aee('0x21'));for(let _0x34034a=0x0;_0x34034a<_0x4e0504[_0x6aee('0x15')];_0x34034a++){var _0x9418f0=_0x321c55[_0x6aee('0x1a')](_0x6aee('0x21'),_0x6aee('0x22')+_0x4e0504[_0x34034a]+_0x6aee('0x23'));_0x321c55=_0x9418f0;}_0x495ec5[_0x6aee('0x18')]=_0x321c55;}_0x2097ed['body']=_0x495ec5['html'];}else{_0x2097ed[_0x6aee('0x24')]=_0x495ec5[_0x6aee('0x25')];}if(_0x2097ed[_0x6aee('0x24')]){_0x2097ed[_0x6aee('0x24')]=_0x2097ed['body'][_0x6aee('0x1a')](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x495ec5['to']){_0x2097ed[_0x6aee('0x26')][_0x6aee('0x27')]=getMails(null,_0x495ec5['to']);var _0x136978=getMails(_0x5e73e2[_0x6aee('0x6')],_0x495ec5['to']);if(!_[_0x6aee('0x17')](_0x136978)){_0x2097ed[_0x6aee('0x26')]['cc']+=_0x136978;}}if(_0x495ec5['cc']){_0x2097ed[_0x6aee('0x26')][_0x6aee('0x28')]=getMails(null,_0x495ec5['cc']);var _0x349780=getMails(_0x5e73e2[_0x6aee('0x6')],_0x495ec5['cc']);if(!_[_0x6aee('0x17')](_0x349780)){if(!_[_0x6aee('0x17')](_0x2097ed[_0x6aee('0x26')]['cc'])){_0x2097ed['message']['cc']+=',';}_0x2097ed[_0x6aee('0x26')]['cc']+=_0x349780;}}if(!_[_0x6aee('0x1b')](_0x2097ed[_0x6aee('0x26')][_0x6aee('0x27')],_0x5e73e2[_0x6aee('0x6')])&&!_[_0x6aee('0x1b')](_0x2097ed[_0x6aee('0x26')][_0x6aee('0x28')],_0x5e73e2['email'])){_0x2097ed[_0x6aee('0x26')][_0x6aee('0x29')]=_0x5e73e2[_0x6aee('0x6')];}if(_0x495ec5[_0x6aee('0x1c')]&&_0x495ec5[_0x6aee('0x1c')][_0x6aee('0x15')]){_0x2097ed[_0x6aee('0x26')][_0x6aee('0x2a')]=_0x495ec5[_0x6aee('0x1c')][_0x6aee('0x15')];for(var _0x39d74a=0x0,_0x4a821d,_0x4d1252,_0x3478a2;_0x39d74a<_0x495ec5['attachments']['length'];_0x39d74a+=0x1){if(_0x495ec5[_0x6aee('0x1c')][_0x39d74a][_0x6aee('0x2b')]===_0x6aee('0x2c')){_0x3478a2=_0x495ec5['attachments'][_0x39d74a][_0x6aee('0x1f')]||_0x6aee('0x2d')+_0x39d74a;_0x4a821d=util[_0x6aee('0x2e')](_0x6aee('0x2f'),Date['now'](),_0x3478a2);_0x4d1252=path[_0x6aee('0x13')](config[_0x6aee('0x30')],_0x6aee('0x31'),_0x4a821d);fs[_0x6aee('0x32')](_0x4d1252,_0x495ec5[_0x6aee('0x1c')][_0x39d74a]['content']);_0x2097ed[_0x6aee('0x26')][_0x6aee('0x1c')][_0x6aee('0x1e')]({'name':_0x3478a2,'basename':_0x4a821d,'type':_0x495ec5[_0x6aee('0x1c')][_0x39d74a][_0x6aee('0x33')],'filepath':_0x4d1252});}}}if(_0x495ec5['headerLines']&&_0x495ec5[_0x6aee('0x34')]['length']>0x0){var _0x3eebe4=[_0x6aee('0x35'),_0x6aee('0x36'),_0x6aee('0x37')];for(var _0x36c6a4=0x0;_0x36c6a4<_0x495ec5[_0x6aee('0x34')]['length'];_0x36c6a4++){var _0x58b3a2=_[_0x6aee('0x10')](_0x3eebe4,_0x495ec5['headerLines'][_0x36c6a4][_0x6aee('0x38')]);if(_0x58b3a2>=0x0){_0x2097ed[_0x6aee('0x39')]=!![];}}}return _0x2097ed;}exports[_0x6aee('0x3a')]=function(_0x3c58a3,_0x5029d3,_0xe7bbde){var _0x5070af={'from':getAddress(_0x5029d3[_0x6aee('0x3b')]),'firstName':getFirstName(_0x5029d3['from']),'lastName':getLastName(_0x5029d3[_0x6aee('0x3b')]),'mapKey':_0x6aee('0x6'),'message':{'from':getMails(_0x3c58a3[_0x6aee('0x6')],_0x5029d3[_0x6aee('0x3b')]),'to':_0x3c58a3[_0x6aee('0x6')],'cc':'','subject':_0x5029d3[_0x6aee('0x3c')]||'','messageId':_0x5029d3[_0x6aee('0x3d')],'inReplyTo':_0x5029d3[_0x6aee('0x3e')],'sentAt':moment(_0x5029d3['date'])[_0x6aee('0x2e')](_0x6aee('0x3f')),'attach':![],'attachments':[]}};if(!_0x5029d3['html']&&!_0x5029d3['textAsHtml']){var _0x4504c3=_[_0x6aee('0x40')](_0x5029d3['attachments'],{'contentType':_0x6aee('0x41')});if(_0x4504c3['length']){logger[_0x6aee('0x42')](util[_0x6aee('0x2e')](_0x6aee('0x43'),_0x5029d3[_0x6aee('0x3d')]));tnef['parseBuffer'](_['first'](_0x4504c3)[_0x6aee('0x44')],function(_0x320581,_0x2fa3f9){if(_0x2fa3f9){_0x5029d3[_0x6aee('0x18')]=_0x2fa3f9['BodyHTML']||_0x6aee('0x45');if(_0x2fa3f9['Attachments']){for(var _0x40ea5e=0x0;_0x40ea5e<_0x2fa3f9[_0x6aee('0x46')][_0x6aee('0x15')];_0x40ea5e++){var _0x12fa88=_0x2fa3f9['Attachments'][_0x40ea5e];_0x5070af[_0x6aee('0x26')][_0x6aee('0x1c')][_0x6aee('0x1e')]({'filename':_0x12fa88[_0x6aee('0x47')],'content':Buffer[_0x6aee('0x3b')](_0x12fa88[_0x6aee('0x48')])});}}}_0xe7bbde(parseEmail(_0x3c58a3,_0x5029d3,_0x5070af));});}else{_0x5029d3[_0x6aee('0x18')]=_0x6aee('0x45');_0xe7bbde(parseEmail(_0x3c58a3,_0x5029d3,_0x5070af));}}else{_0xe7bbde(parseEmail(_0x3c58a3,_0x5029d3,_0x5070af));}};exports['getHost']=function(_0x23e252){switch(_0x23e252){case _0x6aee('0x49'):return'imap.gmail.com';case _0x6aee('0x4a'):return _0x6aee('0x4b');case _0x6aee('0x4c'):return _0x6aee('0x4d');case'outlook365':return'outlook.office365.com';}return _0x6aee('0x4e');};
\ No newline at end of file
+var _0xa057=['@xcally.com','value','name','substring','indexOf','length','slice','head','split','isEmpty','generate','html','test','replace','includes','<img','attachments','forEach','push','_SRC','_IMG','body','textAsHtml','message','originTo','originCc','attach','attachment','attachment-','format','%s-%s','now','join','root','server/files/attachments/','writeFileSync','content','contentType','headerLines','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','isAutoreply','parser','from','subject','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','filter','application/ms-tnef','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','messageId','first','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','getHost','imap.gmail.com','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook365','outlook.office365.com','127.0.0.1','lodash','moment','path','util','node-tnef','email','../../../config/environment','address','anonymous'];(function(_0x30ff6e,_0x1b64d7){var _0x2f68fa=function(_0x4f08ca){while(--_0x4f08ca){_0x30ff6e['push'](_0x30ff6e['shift']());}};_0x2f68fa(++_0x1b64d7);}(_0xa057,0x123));var _0x7a05=function(_0x173147,_0x17d723){_0x173147=_0x173147-0x0;var _0x236b2b=_0xa057[_0x173147];return _0x236b2b;};'use strict';var _=require(_0x7a05('0x0'));var moment=require(_0x7a05('0x1'));var random=require('randomstring');var fs=require('fs');var path=require(_0x7a05('0x2'));var util=require(_0x7a05('0x3'));var tnef=require(_0x7a05('0x4'));var logger=require('../../../config/logger')(_0x7a05('0x5'));var config=require(_0x7a05('0x6'));function getAddress(_0x5404f2){var _0x435a35=_['head'](_0x5404f2['value']);return _0x435a35&&_0x435a35[_0x7a05('0x7')]?_0x435a35[_0x7a05('0x7')]:_0x7a05('0x8')+random['generate'](0x6)+_0x7a05('0x9');}function getFirstName(_0x2135d2){var _0x93ca4a=_['head'](_0x2135d2[_0x7a05('0xa')]);if(_0x93ca4a&&_0x93ca4a[_0x7a05('0xb')]){if(_0x93ca4a[_0x7a05('0xb')]==_0x93ca4a[_0x7a05('0x7')]){return _0x93ca4a[_0x7a05('0xb')][_0x7a05('0xc')](0x0,_0x93ca4a['name'][_0x7a05('0xd')]('@'));}var _0x463a80=_0x93ca4a['name']['split'](/\s+/);return _0x463a80[_0x7a05('0xe')]>0x1?_0x463a80[_0x7a05('0xf')](0x0,-0x1)['join']('\x20'):_0x93ca4a['name'];}return'Anonymous';}function getLastName(_0x21415c){var _0x4efea=_[_0x7a05('0x10')](_0x21415c[_0x7a05('0xa')]);if(_0x4efea&&_0x4efea[_0x7a05('0xb')]){var _0x351ac2=_0x4efea[_0x7a05('0xb')][_0x7a05('0x11')](/\s+/);return _0x351ac2['length']>0x1?_0x351ac2['pop']():'';}return'';}function getMails(_0x37d394,_0x8ad482){var _0x480c8b='';for(var _0x5ad0e6=0x0;_0x5ad0e6<_0x8ad482[_0x7a05('0xa')]['length'];_0x5ad0e6+=0x1){if(_0x8ad482[_0x7a05('0xa')][_0x5ad0e6][_0x7a05('0x7')]!==_0x37d394){if(!_[_0x7a05('0x12')](_0x480c8b)){_0x480c8b+=',';}_0x480c8b+=_0x8ad482['value'][_0x5ad0e6]['name']||_0x8ad482[_0x7a05('0xa')][_0x5ad0e6]['address']||'';_0x480c8b+='\x20<';_0x480c8b+=_0x8ad482[_0x7a05('0xa')][_0x5ad0e6][_0x7a05('0x7')]?_0x8ad482['value'][_0x5ad0e6]['address']:'anonymous'+random[_0x7a05('0x13')](0x6)+_0x7a05('0x9');_0x480c8b+='>';}}return _0x480c8b;}function parseEmail(_0x443f33,_0x288581,_0x4f385d){if(_0x288581[_0x7a05('0x14')]){var _0x391ecf=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x391ecf[_0x7a05('0x15')](_0x288581['html'])){_0x288581[_0x7a05('0x14')]=_0x288581[_0x7a05('0x14')][_0x7a05('0x16')](_0x391ecf,'');}if(_0x288581[_0x7a05('0x14')][_0x7a05('0x17')](_0x7a05('0x18'))){var _0xb23a2a=[];_0x288581[_0x7a05('0x19')][_0x7a05('0x1a')](_0x219a94=>{_0xb23a2a[_0x7a05('0x1b')](_0x219a94['filename']);});var _0x591ab5=/<img.*? _SRC(.*?)[^>]+>/g;var _0x5a2fc5=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x39fb1c=_0x288581[_0x7a05('0x14')][_0x7a05('0x16')](_0x5a2fc5,_0x7a05('0x1c'));var _0x465dd6=_0x39fb1c[_0x7a05('0x16')](_0x591ab5,_0x7a05('0x1d'));for(let _0x1cc98f=0x0;_0x1cc98f<_0xb23a2a[_0x7a05('0xe')];_0x1cc98f++){var _0x4a5cf8=_0x465dd6['replace'](_0x7a05('0x1d'),'<span\x20style=font-weight:bold>\x20[Attachment:\x20'+_0xb23a2a[_0x1cc98f]+'\x20]</span>');_0x465dd6=_0x4a5cf8;}_0x288581[_0x7a05('0x14')]=_0x465dd6;}_0x4f385d[_0x7a05('0x1e')]=_0x288581[_0x7a05('0x14')];}else{_0x4f385d[_0x7a05('0x1e')]=_0x288581[_0x7a05('0x1f')];}if(_0x4f385d['body']){_0x4f385d[_0x7a05('0x1e')]=_0x4f385d[_0x7a05('0x1e')][_0x7a05('0x16')](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x288581['to']){_0x4f385d[_0x7a05('0x20')][_0x7a05('0x21')]=getMails(null,_0x288581['to']);var _0xae8ebe=getMails(_0x443f33['email'],_0x288581['to']);if(!_[_0x7a05('0x12')](_0xae8ebe)){_0x4f385d[_0x7a05('0x20')]['cc']+=_0xae8ebe;}}if(_0x288581['cc']){_0x4f385d[_0x7a05('0x20')][_0x7a05('0x22')]=getMails(null,_0x288581['cc']);var _0x5a8587=getMails(_0x443f33[_0x7a05('0x5')],_0x288581['cc']);if(!_['isEmpty'](_0x5a8587)){if(!_[_0x7a05('0x12')](_0x4f385d[_0x7a05('0x20')]['cc'])){_0x4f385d['message']['cc']+=',';}_0x4f385d[_0x7a05('0x20')]['cc']+=_0x5a8587;}}if(!_[_0x7a05('0x17')](_0x4f385d[_0x7a05('0x20')]['originTo'],_0x443f33[_0x7a05('0x5')])&&!_[_0x7a05('0x17')](_0x4f385d['message'][_0x7a05('0x22')],_0x443f33[_0x7a05('0x5')])){_0x4f385d['message']['bcc']=_0x443f33[_0x7a05('0x5')];}if(_0x288581[_0x7a05('0x19')]&&_0x288581['attachments'][_0x7a05('0xe')]){_0x4f385d[_0x7a05('0x20')][_0x7a05('0x23')]=_0x288581[_0x7a05('0x19')]['length'];for(var _0x44ca67=0x0,_0x2a9edd,_0x460a49,_0x418fe7;_0x44ca67<_0x288581['attachments']['length'];_0x44ca67+=0x1){if(_0x288581[_0x7a05('0x19')][_0x44ca67]['type']===_0x7a05('0x24')){_0x418fe7=_0x288581['attachments'][_0x44ca67]['filename']||_0x7a05('0x25')+_0x44ca67;_0x2a9edd=util[_0x7a05('0x26')](_0x7a05('0x27'),Date[_0x7a05('0x28')](),_0x418fe7);_0x460a49=path[_0x7a05('0x29')](config[_0x7a05('0x2a')],_0x7a05('0x2b'),_0x2a9edd);fs[_0x7a05('0x2c')](_0x460a49,_0x288581[_0x7a05('0x19')][_0x44ca67][_0x7a05('0x2d')]);_0x4f385d['message']['attachments'][_0x7a05('0x1b')]({'name':_0x418fe7,'basename':_0x2a9edd,'type':_0x288581[_0x7a05('0x19')][_0x44ca67][_0x7a05('0x2e')],'filepath':_0x460a49});}}}if(_0x288581[_0x7a05('0x2f')]&&_0x288581['headerLines'][_0x7a05('0xe')]>0x0){var _0x2948fe=['Auto-Submitted:\x20auto-replied',_0x7a05('0x30'),_0x7a05('0x31')];for(var _0x254352=0x0;_0x254352<_0x288581[_0x7a05('0x2f')][_0x7a05('0xe')];_0x254352++){var _0x2f8e0e=_[_0x7a05('0xd')](_0x2948fe,_0x288581[_0x7a05('0x2f')][_0x254352]['line']);if(_0x2f8e0e>=0x0){_0x4f385d[_0x7a05('0x32')]=!![];}}}return _0x4f385d;}exports[_0x7a05('0x33')]=function(_0x255d61,_0x487e85,_0x12d5f0){var _0x624da5={'from':getAddress(_0x487e85[_0x7a05('0x34')]),'firstName':getFirstName(_0x487e85[_0x7a05('0x34')]),'lastName':getLastName(_0x487e85['from']),'mapKey':_0x7a05('0x5'),'message':{'from':getMails(_0x255d61['email'],_0x487e85['from']),'to':_0x255d61[_0x7a05('0x5')],'cc':'','subject':_0x487e85[_0x7a05('0x35')]||'','messageId':_0x487e85['messageId'],'inReplyTo':_0x487e85[_0x7a05('0x36')],'sentAt':moment(_0x487e85[_0x7a05('0x37')])[_0x7a05('0x26')](_0x7a05('0x38')),'attach':![],'attachments':[]}};if(!_0x487e85[_0x7a05('0x14')]&&!_0x487e85[_0x7a05('0x1f')]){var _0x32cedc=_[_0x7a05('0x39')](_0x487e85[_0x7a05('0x19')],{'contentType':_0x7a05('0x3a')});if(_0x32cedc[_0x7a05('0xe')]){logger[_0x7a05('0x3b')](util[_0x7a05('0x26')](_0x7a05('0x3c'),_0x487e85[_0x7a05('0x3d')]));tnef['parseBuffer'](_[_0x7a05('0x3e')](_0x32cedc)[_0x7a05('0x2d')],function(_0x19488f,_0x143acf){if(_0x143acf){_0x487e85['html']=_0x143acf[_0x7a05('0x3f')]||_0x7a05('0x40');if(_0x143acf[_0x7a05('0x41')]){for(var _0x906d08=0x0;_0x906d08<_0x143acf['Attachments'][_0x7a05('0xe')];_0x906d08++){var _0x537d2c=_0x143acf[_0x7a05('0x41')][_0x906d08];_0x624da5[_0x7a05('0x20')]['attachments'][_0x7a05('0x1b')]({'filename':_0x537d2c[_0x7a05('0x42')],'content':Buffer[_0x7a05('0x34')](_0x537d2c['Data'])});}}}_0x12d5f0(parseEmail(_0x255d61,_0x487e85,_0x624da5));});}else{_0x487e85[_0x7a05('0x14')]=_0x7a05('0x40');_0x12d5f0(parseEmail(_0x255d61,_0x487e85,_0x624da5));}}else{_0x12d5f0(parseEmail(_0x255d61,_0x487e85,_0x624da5));}};exports[_0x7a05('0x43')]=function(_0x269770){switch(_0x269770){case'gmail':return _0x7a05('0x44');case'yahoo':return _0x7a05('0x45');case _0x7a05('0x46'):return _0x7a05('0x47');case _0x7a05('0x48'):return _0x7a05('0x49');}return _0x7a05('0x4a');};
\ No newline at end of file
index 5eab203..a987dc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf520=['name','key','SERV','Imap','Smtp','exports','lodash'];(function(_0x53c09e,_0x33166a){var _0x2e4757=function(_0x4ef3d8){while(--_0x4ef3d8){_0x53c09e['push'](_0x53c09e['shift']());}};_0x2e4757(++_0x33166a);}(_0xf520,0x19c));var _0x0f52=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0xf520[_0x32f7d7];return _0x133d09;};'use strict';var _=require(_0x0f52('0x0'));function MailAccount(_0x59b272){this['id']=_0x59b272['id']||0x0;this[_0x0f52('0x1')]=_0x59b272[_0x0f52('0x1')]||'Service';this[_0x0f52('0x2')]=_0x59b272[_0x0f52('0x2')]||_0x0f52('0x3');this['active']=_0x59b272['active']||![];this[_0x0f52('0x4')]=_0x59b272[_0x0f52('0x4')]||[];this[_0x0f52('0x5')]=_0x59b272[_0x0f52('0x5')]||[];}module[_0x0f52('0x6')]=MailAccount;
\ No newline at end of file
+var _0x830e=['name','Service','key','active','Imap','Smtp','exports','lodash'];(function(_0x572883,_0x323692){var _0x382b2a=function(_0x501a08){while(--_0x501a08){_0x572883['push'](_0x572883['shift']());}};_0x382b2a(++_0x323692);}(_0x830e,0x7f));var _0xe830=function(_0xc7b88e,_0x4fbbb2){_0xc7b88e=_0xc7b88e-0x0;var _0x81f625=_0x830e[_0xc7b88e];return _0x81f625;};'use strict';var _=require(_0xe830('0x0'));function MailAccount(_0x11167b){this['id']=_0x11167b['id']||0x0;this[_0xe830('0x1')]=_0x11167b[_0xe830('0x1')]||_0xe830('0x2');this[_0xe830('0x3')]=_0x11167b[_0xe830('0x3')]||'SERV';this[_0xe830('0x4')]=_0x11167b['active']||![];this[_0xe830('0x5')]=_0x11167b[_0xe830('0x5')]||[];this['Smtp']=_0x11167b[_0xe830('0x6')]||[];}module[_0xe830('0x7')]=MailAccount;
\ No newline at end of file
index 8487893..fed2332 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5533=['isUndefined','merge','exports','mailAccounts','mapKeys','hasOwnProperty','mergeFromDatabase','initMailAccounts','length'];(function(_0x2f63bb,_0x2ec36c){var _0x353d6d=function(_0x53afc3){while(--_0x53afc3){_0x2f63bb['push'](_0x2f63bb['shift']());}};_0x353d6d(++_0x2ec36c);}(_0x5533,0x150));var _0x3553=function(_0xe0c03a,_0x39022a){_0xe0c03a=_0xe0c03a-0x0;var _0x32b924=_0x5533[_0xe0c03a];return _0x32b924;};'use strict';var _=require('lodash');var MailAccount=require('../model/mailAccount');var Realtime=function(){this[_0x3553('0x0')]={};};function freeIsNotKey(_0xb8362,_0x4dee35,_0x4b771b){var _0x17bb96=_[_0x3553('0x1')](_0xb8362,function(_0xeff69c,_0x2b1315){return _0xeff69c[_0x4b771b];});for(var _0x2633f1 in _0x4dee35){if(_0x4dee35[_0x3553('0x2')](_0x2633f1)){if(!_0x17bb96[_0x2633f1]){delete _0x4dee35[_0x2633f1];}}}}Realtime['prototype'][_0x3553('0x3')]=function(_0x6b0fc6,_0x576ea2){for(var _0x395d02 in _0x576ea2){if(_0x6b0fc6[_0x3553('0x2')](_0x395d02)){_0x6b0fc6[_0x395d02]=_0x576ea2[_0x395d02];}}};Realtime['prototype'][_0x3553('0x4')]=function(){var _0xd25f08=this;return function(_0x58e13f){if(_0x58e13f){freeIsNotKey(_0x58e13f,_0xd25f08[_0x3553('0x0')],'id');for(var _0x121703=0x0,_0x3febef={},_0x545285={};_0x121703<_0x58e13f[_0x3553('0x5')];_0x121703+=0x1){_0x3febef=_0x58e13f[_0x121703];if(_[_0x3553('0x6')](_0xd25f08[_0x3553('0x0')][_0x3febef['id']])){_0xd25f08[_0x3553('0x0')][_0x3febef['id']]=new MailAccount(_0x3febef);}else{_[_0x3553('0x7')](_0xd25f08[_0x3553('0x0')][_0x3febef['id']],_0x3febef);}}}return _0xd25f08[_0x3553('0x0')];};};module[_0x3553('0x8')]=Realtime;
\ No newline at end of file
+var _0xc332=['prototype','initMailAccounts','mailAccounts','length','isUndefined','exports','lodash','../model/mailAccount','mapKeys','hasOwnProperty'];(function(_0x32517b,_0x53c7c9){var _0x446529=function(_0x25703f){while(--_0x25703f){_0x32517b['push'](_0x32517b['shift']());}};_0x446529(++_0x53c7c9);}(_0xc332,0x1c8));var _0x2c33=function(_0x4a8558,_0x40392f){_0x4a8558=_0x4a8558-0x0;var _0x29e7e7=_0xc332[_0x4a8558];return _0x29e7e7;};'use strict';var _=require(_0x2c33('0x0'));var MailAccount=require(_0x2c33('0x1'));var Realtime=function(){this['mailAccounts']={};};function freeIsNotKey(_0x43cd4b,_0x2c10df,_0x275bb2){var _0x1ec653=_[_0x2c33('0x2')](_0x43cd4b,function(_0x42a861,_0x592cb4){return _0x42a861[_0x275bb2];});for(var _0x413339 in _0x2c10df){if(_0x2c10df[_0x2c33('0x3')](_0x413339)){if(!_0x1ec653[_0x413339]){delete _0x2c10df[_0x413339];}}}}Realtime[_0x2c33('0x4')]['mergeFromDatabase']=function(_0x1ec30f,_0x2a05ae){for(var _0x94fb97 in _0x2a05ae){if(_0x1ec30f[_0x2c33('0x3')](_0x94fb97)){_0x1ec30f[_0x94fb97]=_0x2a05ae[_0x94fb97];}}};Realtime[_0x2c33('0x4')][_0x2c33('0x5')]=function(){var _0x52d268=this;return function(_0x4121ed){if(_0x4121ed){freeIsNotKey(_0x4121ed,_0x52d268[_0x2c33('0x6')],'id');for(var _0x4afdbb=0x0,_0x59e40c={},_0x41f57a={};_0x4afdbb<_0x4121ed[_0x2c33('0x7')];_0x4afdbb+=0x1){_0x59e40c=_0x4121ed[_0x4afdbb];if(_[_0x2c33('0x8')](_0x52d268['mailAccounts'][_0x59e40c['id']])){_0x52d268[_0x2c33('0x6')][_0x59e40c['id']]=new MailAccount(_0x59e40c);}else{_['merge'](_0x52d268['mailAccounts'][_0x59e40c['id']],_0x59e40c);}}}return _0x52d268[_0x2c33('0x6')];};};module[_0x2c33('0x9')]=Realtime;
\ No newline at end of file
index 0d09042..03a1ab7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd5d=['MailServerIn','Imap','MailServerOut','Smtp','getMailAccount','notify','Request','NotifyMailAccount','../client','getMailAccounts','GetMailAccount','email','active','key','ListId','TemplateId'];(function(_0x130d82,_0x25f49b){var _0x112070=function(_0x5795ee){while(--_0x5795ee){_0x130d82['push'](_0x130d82['shift']());}};_0x112070(++_0x25f49b);}(_0xbd5d,0x118));var _0xdbd5=function(_0x3738d8,_0x5eb89f){_0x3738d8=_0x3738d8-0x0;var _0x4a1511=_0xbd5d[_0x3738d8];return _0x4a1511;};'use strict';var client=require(_0xdbd5('0x0'));exports[_0xdbd5('0x1')]=function(){return function(){return client['Request'](_0xdbd5('0x2'),{'options':{'attributes':['id','name','service',_0xdbd5('0x3'),_0xdbd5('0x4'),_0xdbd5('0x5'),_0xdbd5('0x6'),_0xdbd5('0x7')],'raw':![],'include':[{'model':_0xdbd5('0x8'),'as':_0xdbd5('0x9')},{'model':_0xdbd5('0xa'),'as':_0xdbd5('0xb')}]},'log':_0xdbd5('0xc')});};};exports[_0xdbd5('0xd')]=function(_0x1e73cc,_0x40c249){return client[_0xdbd5('0xe')](_0xdbd5('0xf'),{'account':{'id':_0x1e73cc},'body':_0x40c249,'log':_0xdbd5('0xf')});};
\ No newline at end of file
+var _0x07d7=['GetMailAccount','name','service','email','active','key','ListId','TemplateId','MailServerIn','Imap','MailServerOut','Smtp','getMailAccount','NotifyMailAccount','../client','getMailAccounts','Request'];(function(_0x5d80de,_0x2cf15d){var _0x1c7556=function(_0x5bd806){while(--_0x5bd806){_0x5d80de['push'](_0x5d80de['shift']());}};_0x1c7556(++_0x2cf15d);}(_0x07d7,0x85));var _0x707d=function(_0x296754,_0x5befe9){_0x296754=_0x296754-0x0;var _0x1d9f1d=_0x07d7[_0x296754];return _0x1d9f1d;};'use strict';var client=require(_0x707d('0x0'));exports[_0x707d('0x1')]=function(){return function(){return client[_0x707d('0x2')](_0x707d('0x3'),{'options':{'attributes':['id',_0x707d('0x4'),_0x707d('0x5'),_0x707d('0x6'),_0x707d('0x7'),_0x707d('0x8'),_0x707d('0x9'),_0x707d('0xa')],'raw':![],'include':[{'model':_0x707d('0xb'),'as':_0x707d('0xc')},{'model':_0x707d('0xd'),'as':_0x707d('0xe')}]},'log':_0x707d('0xf')});};};exports['notify']=function(_0x4c9e57,_0x5fe2d4){return client[_0x707d('0x2')](_0x707d('0x10'),{'account':{'id':_0x4c9e57},'body':_0x5fe2d4,'log':_0x707d('0x10')});};
\ No newline at end of file
index 4bed2d6..fc9d74d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7877=['getSettings','Request','ShowSetting','loginMailFrequency','GetSettings','../client'];(function(_0x3099e5,_0xe7c939){var _0x5d9b9e=function(_0x4965df){while(--_0x4965df){_0x3099e5['push'](_0x3099e5['shift']());}};_0x5d9b9e(++_0xe7c939);}(_0x7877,0x1d3));var _0x7787=function(_0x2de04e,_0x3c3b69){_0x2de04e=_0x2de04e-0x0;var _0x4c9797=_0x7877[_0x2de04e];return _0x4c9797;};'use strict';var client=require(_0x7787('0x0'));exports[_0x7787('0x1')]=function(){return client[_0x7787('0x2')](_0x7787('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x7787('0x4')]},'log':_0x7787('0x5')});};
\ No newline at end of file
+var _0xe037=['getSettings','ShowSetting','loginMailFrequency','GetSettings','../client'];(function(_0x3042c5,_0x36cb88){var _0x7cd140=function(_0x4cdcd8){while(--_0x4cdcd8){_0x3042c5['push'](_0x3042c5['shift']());}};_0x7cd140(++_0x36cb88);}(_0xe037,0xf9));var _0x7e03=function(_0x3ab928,_0x2b990b){_0x3ab928=_0x3ab928-0x0;var _0xf47692=_0xe037[_0x3ab928];return _0xf47692;};'use strict';var client=require(_0x7e03('0x0'));exports[_0x7e03('0x1')]=function(){return client['Request'](_0x7e03('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x7e03('0x3')]},'log':_0x7e03('0x4')});};
\ No newline at end of file
index ee5d62c..7e55bbd 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(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'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(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xa9e0,0x123));var _0x0a9e=function(_0x934425,_0x5af72f){_0x934425=_0x934425-0x0;var _0x31d596=_0xa9e0[_0x934425];return _0x31d596;};'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 03c5eaa..4261d57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f62=['defaults','localhost','adapter','socket.io-redis','../../config/triggers','default','../../routes','log','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','lodash','http','express','ioredis','../../config/environment','timeout','port','socket.io','polling','redis'];(function(_0x4b1152,_0xf14476){var _0x5bf47e=function(_0x3a6b9e){while(--_0x3a6b9e){_0x4b1152['push'](_0x4b1152['shift']());}};_0x5bf47e(++_0xf14476);}(_0x5f62,0x1d6));var _0x25f6=function(_0x1d006a,_0x2812b5){_0x1d006a=_0x1d006a-0x0;var _0x20a76b=_0x5f62[_0x1d006a];return _0x20a76b;};'use strict';var _=require(_0x25f6('0x0'));var http=require(_0x25f6('0x1'));var express=require(_0x25f6('0x2'));var sticky=require('sticky-session');var Redis=require(_0x25f6('0x3'));var config=require(_0x25f6('0x4'));var app=express();var server=http['createServer'](app);server[_0x25f6('0x5')]=0xdbba0;if(sticky['listen'](server,config[_0x25f6('0x6')])){var socketio=require(_0x25f6('0x7'))(server,{'transports':['websocket',_0x25f6('0x8')]});config[_0x25f6('0x9')]=_[_0x25f6('0xa')](config['redis'],{'host':_0x25f6('0xb'),'port':0x18eb});socketio[_0x25f6('0xc')](require(_0x25f6('0xd'))({'pubClient':new Redis(config[_0x25f6('0x9')]),'subClient':new Redis(config[_0x25f6('0x9')])}));require(_0x25f6('0xe'))['default']();require('../../config/socketio')[_0x25f6('0xf')](socketio);require('../../config/express')[_0x25f6('0xf')](app);require(_0x25f6('0x10'))[_0x25f6('0xf')](app);}else{server['once']('listening',function(){console[_0x25f6('0x11')](_0x25f6('0x12'),config[_0x25f6('0x6')]);});}exports=module[_0x25f6('0x13')]=app;
\ No newline at end of file
+var _0xb0c3=['../../config/socketio','../../config/express','default','listening','log','Express\x20server\x20listening\x20on\x20port\x20%d!','http','express','../../config/environment','createServer','timeout','listen','port','socket.io','websocket','redis','defaults','localhost','adapter','socket.io-redis','../../config/triggers'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb0c3,0x195));var _0x3b0c=function(_0x59730b,_0x211184){_0x59730b=_0x59730b-0x0;var _0x25fa40=_0xb0c3[_0x59730b];return _0x25fa40;};'use strict';var _=require('lodash');var http=require(_0x3b0c('0x0'));var express=require(_0x3b0c('0x1'));var sticky=require('sticky-session');var Redis=require('ioredis');var config=require(_0x3b0c('0x2'));var app=express();var server=http[_0x3b0c('0x3')](app);server[_0x3b0c('0x4')]=0xdbba0;if(sticky[_0x3b0c('0x5')](server,config[_0x3b0c('0x6')])){var socketio=require(_0x3b0c('0x7'))(server,{'transports':[_0x3b0c('0x8'),'polling']});config[_0x3b0c('0x9')]=_[_0x3b0c('0xa')](config[_0x3b0c('0x9')],{'host':_0x3b0c('0xb'),'port':0x18eb});socketio[_0x3b0c('0xc')](require(_0x3b0c('0xd'))({'pubClient':new Redis(config[_0x3b0c('0x9')]),'subClient':new Redis(config[_0x3b0c('0x9')])}));require(_0x3b0c('0xe'))['default']();require(_0x3b0c('0xf'))['default'](socketio);require(_0x3b0c('0x10'))[_0x3b0c('0x11')](app);require('../../routes')[_0x3b0c('0x11')](app);}else{server['once'](_0x3b0c('0x12'),function(){console[_0x3b0c('0x13')](_0x3b0c('0x14'),config[_0x3b0c('0x6')]);});}exports=module['exports']=app;
\ No newline at end of file
index 3914bad..1053bec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c12=['result','catch','exports','jayson/promise','bluebird','../../config/logger','routing','Request','request','debug','rpc','error'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x4c12,0x1bf));var _0x24c1=function(_0x378720,_0xa711f1){_0x378720=_0x378720-0x0;var _0x47920a=_0x4c12[_0x378720];return _0x47920a;};'use strict';var jayson=require(_0x24c1('0x0'));var BPromise=require(_0x24c1('0x1'));var logger=require(_0x24c1('0x2'))(_0x24c1('0x3'));var client=jayson['client']['http']({'port':0x2329});client[_0x24c1('0x4')]=function(_0x5b71dd,_0x28f188){return new BPromise(function(_0x2152e0,_0x25ef56){return client[_0x24c1('0x5')](_0x5b71dd,_0x28f188)['then'](function(_0x4c9102){logger[_0x24c1('0x6')](_0x24c1('0x7'),_0x24c1('0x3'),_0x5b71dd,_0x28f188,_0x4c9102);if(_0x4c9102['error']){logger[_0x24c1('0x8')](_0x24c1('0x7'),_0x24c1('0x3'),_0x5b71dd,_0x4c9102['error']['message'],_0x28f188);return _0x25ef56(_0x4c9102[_0x24c1('0x8')]['message']);}else{return _0x2152e0(_0x4c9102[_0x24c1('0x9')]);}})[_0x24c1('0xa')](function(_0xa19535){logger[_0x24c1('0x8')]('rpc','routing',_0x5b71dd,_0xa19535,_0x28f188);return _0x25ef56(_0xa19535);});});};module[_0x24c1('0xb')]=client;
\ No newline at end of file
+var _0xa391=['Request','request','then','error','rpc','message','catch','exports','jayson/promise','bluebird','routing','http'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xa391,0x110));var _0x1a39=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0xa391[_0x36c5b0];return _0xf19333;};'use strict';var jayson=require(_0x1a39('0x0'));var BPromise=require(_0x1a39('0x1'));var logger=require('../../config/logger')(_0x1a39('0x2'));var client=jayson['client'][_0x1a39('0x3')]({'port':0x2329});client[_0x1a39('0x4')]=function(_0x568721,_0x2b4a2b){return new BPromise(function(_0x1c4a6b,_0x359b29){return client[_0x1a39('0x5')](_0x568721,_0x2b4a2b)[_0x1a39('0x6')](function(_0x2fe70f){logger['debug']('rpc','routing',_0x568721,_0x2b4a2b,_0x2fe70f);if(_0x2fe70f[_0x1a39('0x7')]){logger['error'](_0x1a39('0x8'),_0x1a39('0x2'),_0x568721,_0x2fe70f[_0x1a39('0x7')]['message'],_0x2b4a2b);return _0x359b29(_0x2fe70f[_0x1a39('0x7')][_0x1a39('0x9')]);}else{return _0x1c4a6b(_0x2fe70f['result']);}})[_0x1a39('0xa')](function(_0x58bd8b){logger[_0x1a39('0x7')](_0x1a39('0x8'),_0x1a39('0x2'),_0x568721,_0x58bd8b,_0x2b4a2b);return _0x359b29(_0x58bd8b);});});};module[_0x1a39('0xb')]=client;
\ No newline at end of file
index 6b2773a..78a0605 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dbe=['./rpc/whatsappQueue','resolve','then','getAgents','initAgents','getIntervals','initIntervals','getOpenchannelQueues','initOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','getMailQueues','initMailQueues','initFaxQueues','initWhatsappQueues','catch','log','bluebird','./server','./realtime','./rpc/interval','./rpc/openchannelQueue','./rpc/smsQueue','./rpc/faxQueue'];(function(_0x563c6a,_0x42b20d){var _0x2eea4d=function(_0x398101){while(--_0x398101){_0x563c6a['push'](_0x563c6a['shift']());}};_0x2eea4d(++_0x42b20d);}(_0x9dbe,0xf3));var _0xe9db=function(_0x4ce851,_0x263eea){_0x4ce851=_0x4ce851-0x0;var _0x126bf1=_0x9dbe[_0x4ce851];return _0x126bf1;};'use strict';var BPromise=require(_0xe9db('0x0'));var server=require(_0xe9db('0x1'));var Realtime=require(_0xe9db('0x2'));var user=require('./rpc/user');var interval=require(_0xe9db('0x3'));var openchannelQueue=require(_0xe9db('0x4'));var chatQueue=require('./rpc/chatQueue');var smsQueue=require(_0xe9db('0x5'));var mailQueue=require('./rpc/mailQueue');var faxQueue=require(_0xe9db('0x6'));var whatsappQueue=require(_0xe9db('0x7'));var realtime=new Realtime();function initRealtime(){return BPromise[_0xe9db('0x8')]()[_0xe9db('0x9')](user[_0xe9db('0xa')]())['then'](realtime[_0xe9db('0xb')]())[_0xe9db('0x9')](interval[_0xe9db('0xc')]())['then'](realtime[_0xe9db('0xd')]())[_0xe9db('0x9')](openchannelQueue[_0xe9db('0xe')]())[_0xe9db('0x9')](realtime[_0xe9db('0xf')]())[_0xe9db('0x9')](chatQueue[_0xe9db('0x10')]())[_0xe9db('0x9')](realtime[_0xe9db('0x11')]())[_0xe9db('0x9')](smsQueue[_0xe9db('0x12')]())[_0xe9db('0x9')](realtime['initSmsQueues']())[_0xe9db('0x9')](mailQueue[_0xe9db('0x13')]())[_0xe9db('0x9')](realtime[_0xe9db('0x14')]())[_0xe9db('0x9')](faxQueue['getFaxQueues']())[_0xe9db('0x9')](realtime[_0xe9db('0x15')]())[_0xe9db('0x9')](whatsappQueue['getWhatsappQueues']())[_0xe9db('0x9')](realtime[_0xe9db('0x16')]())[_0xe9db('0x9')](function(){return realtime;});}function main(){return server['listen'](realtime)[_0xe9db('0x9')](function(_0x53a136){return initRealtime();})[_0xe9db('0x9')](function(_0x724ca5){return setInterval(initRealtime,0x1388);})[_0xe9db('0x17')](function(_0x4c62ff){console[_0xe9db('0x18')](_0x4c62ff);});}main();
\ No newline at end of file
+var _0xcac8=['listen','log','bluebird','./realtime','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','resolve','then','getAgents','initAgents','getIntervals','getOpenchannelQueues','initOpenchannelQueues','initChatQueues','initSmsQueues','getMailQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues'];(function(_0x8172ed,_0x18178a){var _0xace188=function(_0x1b1a01){while(--_0x1b1a01){_0x8172ed['push'](_0x8172ed['shift']());}};_0xace188(++_0x18178a);}(_0xcac8,0x160));var _0x8cac=function(_0x1045cf,_0x3d5e3e){_0x1045cf=_0x1045cf-0x0;var _0xa04932=_0xcac8[_0x1045cf];return _0xa04932;};'use strict';var BPromise=require(_0x8cac('0x0'));var server=require('./server');var Realtime=require(_0x8cac('0x1'));var user=require('./rpc/user');var interval=require(_0x8cac('0x2'));var openchannelQueue=require(_0x8cac('0x3'));var chatQueue=require(_0x8cac('0x4'));var smsQueue=require(_0x8cac('0x5'));var mailQueue=require(_0x8cac('0x6'));var faxQueue=require(_0x8cac('0x7'));var whatsappQueue=require('./rpc/whatsappQueue');var realtime=new Realtime();function initRealtime(){return BPromise[_0x8cac('0x8')]()[_0x8cac('0x9')](user[_0x8cac('0xa')]())[_0x8cac('0x9')](realtime[_0x8cac('0xb')]())['then'](interval[_0x8cac('0xc')]())[_0x8cac('0x9')](realtime['initIntervals']())[_0x8cac('0x9')](openchannelQueue[_0x8cac('0xd')]())[_0x8cac('0x9')](realtime[_0x8cac('0xe')]())[_0x8cac('0x9')](chatQueue['getChatQueues']())['then'](realtime[_0x8cac('0xf')]())[_0x8cac('0x9')](smsQueue['getSmsQueues']())[_0x8cac('0x9')](realtime[_0x8cac('0x10')]())['then'](mailQueue[_0x8cac('0x11')]())[_0x8cac('0x9')](realtime[_0x8cac('0x12')]())['then'](faxQueue[_0x8cac('0x13')]())[_0x8cac('0x9')](realtime[_0x8cac('0x14')]())[_0x8cac('0x9')](whatsappQueue[_0x8cac('0x15')]())[_0x8cac('0x9')](realtime[_0x8cac('0x16')]())[_0x8cac('0x9')](function(){return realtime;});}function main(){return server[_0x8cac('0x17')](realtime)[_0x8cac('0x9')](function(_0x4737e2){return initRealtime();})[_0x8cac('0x9')](function(_0x3e7e17){return setInterval(initRealtime,0x1388);})['catch'](function(_0x2de935){console[_0x8cac('0x18')](_0x2de935);});}main();
\ No newline at end of file
index 76d5641..cd7519a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['isNil','register','ignoreFactChanges','activeRules','prototype','isArray','rules','concat','isObject','push','sync','filter','orderBy','asc','result','clone','name','nextTick','ruleRef','isEqual','restart','length','condition','noop','findRules','matches','turn','prioritize','priority','toString','consequence','fromJSON','isString','parse','map','object','exports','util','events','EventEmitter','init'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1261,0x144));var _0x1126=function(_0xc67528,_0x24e2fb){_0xc67528=_0xc67528-0x0;var _0x38e26d=_0x1261[_0xc67528];return _0x38e26d;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var EventEmitter=require(_0x1126('0x1'))[_0x1126('0x2')];function RuleEngine(_0x331a2c,_0x39b786){this[_0x1126('0x3')]();if(!_[_0x1126('0x4')](_0x331a2c)){this[_0x1126('0x5')](_0x331a2c);}if(_0x39b786){this[_0x1126('0x6')]=_0x39b786[_0x1126('0x6')];}return this;}util['inherits'](RuleEngine,EventEmitter);RuleEngine['prototype'][_0x1126('0x3')]=function(_0x907180){this['rules']=[];this[_0x1126('0x7')]=[];};RuleEngine[_0x1126('0x8')][_0x1126('0x5')]=function(_0x3abb0b){if(Array[_0x1126('0x9')](_0x3abb0b)){this['rules']=this[_0x1126('0xa')][_0x1126('0xb')](_0x3abb0b);}else if(_0x3abb0b!==null&&_[_0x1126('0xc')](_0x3abb0b)){this['rules'][_0x1126('0xd')](_0x3abb0b);}this['sync']();};RuleEngine['prototype'][_0x1126('0xe')]=function(){this['activeRules']=this[_0x1126('0xa')][_0x1126('0xf')](function(_0xd26a32){if(_[_0x1126('0x4')](_0xd26a32['on'])){_0xd26a32['on']=!![];}if(_0xd26a32['on']===!![]){return _0xd26a32;}});this[_0x1126('0x7')]=_[_0x1126('0x10')](this[_0x1126('0x7')],['p'],[_0x1126('0x11')]);};RuleEngine[_0x1126('0x8')]['execute']=function(_0x5de9a7,_0x1af673){var _0x154e20=![];_0x5de9a7[_0x1126('0x12')]=!![];var _0x4be0c6=_[_0x1126('0x13')](_0x5de9a7);var _0x4794a7=_[_0x1126('0x13')](_0x5de9a7);var _0x42f379=this[_0x1126('0x7')];var _0x4e1c97=[];var _0x245cd7=this[_0x1126('0x6')];(function FnRuleLoop(_0x4a7b49){var _0x4d2b38={'rules':function(){return _0x42f379;},'rule':function(){return _0x42f379[_0x4a7b49];},'when':function(_0x22ae0b){if(_0x22ae0b){var _0x2b2487=_0x42f379[_0x4a7b49]['consequence'];_0x2b2487['ruleRef']=_0x42f379[_0x4a7b49]['id']||_0x42f379[_0x4a7b49][_0x1126('0x14')]||'index_'+_0x4a7b49;process[_0x1126('0x15')](function(){_0x4e1c97[_0x1126('0xd')](_0x2b2487[_0x1126('0x16')]);_0x2b2487['call'](_0x4be0c6,_0x4d2b38);});}else{process[_0x1126('0x15')](function(){_0x4d2b38['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x154e20=!![];return FnRuleLoop(0x0);},'next':function(_0x56efeb){if(!_0x245cd7&&!_[_0x1126('0x17')](_0x4794a7,_0x4be0c6)){_0x4794a7=_[_0x1126('0x13')](_0x4be0c6);process[_0x1126('0x15')](function(){_0x4d2b38[_0x1126('0x18')]();});}else{process['nextTick'](function(){if(_[_0x1126('0x4')](_0x56efeb)){return FnRuleLoop(_0x4a7b49+0x1);}else{return FnRuleLoop(_0x56efeb);}});}}};if(_0x4a7b49<_0x42f379[_0x1126('0x19')]&&_0x154e20===![]){var _0x48a08d=_0x42f379[_0x4a7b49][_0x1126('0x1a')];_0x48a08d['call'](_0x4be0c6,_0x4d2b38);}else{process['nextTick'](function(){_0x4be0c6['matchPath']=_0x4e1c97;return _0x1af673?_0x1af673(_0x4be0c6):_[_0x1126('0x1b')]();});}}(0x0));};RuleEngine[_0x1126('0x8')][_0x1126('0x1c')]=function(_0x34bcf1){if(_[_0x1126('0x4')](_0x34bcf1)){return this[_0x1126('0xa')];}else{var _0xea0971=_[_0x1126('0x1d')](_0x34bcf1);return _['filter'](this[_0x1126('0xa')],_0xea0971);}};RuleEngine[_0x1126('0x8')][_0x1126('0x1e')]=function(_0x5ddf63,_0x541bc9){var _0xeb7d89=_0x5ddf63==='on'||_0x5ddf63==='ON'?!![]:![];var _0x39bf0e=this['findRules'](_0x541bc9);for(var _0x2fb797=0x0,_0x23d2bc=_0x39bf0e['length'];_0x2fb797<_0x23d2bc;_0x2fb797+=0x1){_0x39bf0e[_0x2fb797]['on']=_0xeb7d89;}this[_0x1126('0xe')]();};RuleEngine['prototype'][_0x1126('0x1f')]=function(_0x4bd50b,_0x771bb8){_0x4bd50b=parseInt(_0x4bd50b,0xa);var _0x583ce6=this[_0x1126('0x1c')](_0x771bb8);for(var _0x5f2611=0x0,_0x5252e0=_0x583ce6['length'];_0x5f2611<_0x5252e0;_0x5f2611+=0x1){_0x583ce6[_0x5f2611][_0x1126('0x20')]=_0x4bd50b;}this[_0x1126('0xe')]();};RuleEngine[_0x1126('0x8')]['toJSON']=function(){var _0x2a3055=this[_0x1126('0xa')];if(_0x2a3055 instanceof Array){_0x2a3055=_0x2a3055['map'](function(_0x3dd50e){_0x3dd50e[_0x1126('0x1a')]=_0x3dd50e[_0x1126('0x1a')][_0x1126('0x21')]();_0x3dd50e['consequence']=_0x3dd50e['consequence'][_0x1126('0x21')]();return _0x3dd50e;});}else if(!_[_0x1126('0x4')](_0x2a3055)){_0x2a3055[_0x1126('0x1a')]=_0x2a3055[_0x1126('0x1a')]['toString']();_0x2a3055[_0x1126('0x22')]=_0x2a3055[_0x1126('0x22')][_0x1126('0x21')]();}return _0x2a3055;};RuleEngine[_0x1126('0x8')][_0x1126('0x23')]=function(_0x5df232){this[_0x1126('0x3')]();if(_[_0x1126('0x24')](_0x5df232)){_0x5df232=JSON[_0x1126('0x25')](_0x5df232);}if(_0x5df232 instanceof Array){_0x5df232=_0x5df232[_0x1126('0x26')](function(_0x5c019d){_0x5c019d['condition']=eval('('+_0x5c019d[_0x1126('0x1a')]+')');_0x5c019d[_0x1126('0x22')]=eval('('+_0x5c019d['consequence']+')');return _0x5c019d;});}else if(_0x5df232!==null&&typeof _0x5df232==_0x1126('0x27')){_0x5df232[_0x1126('0x1a')]=eval('('+_0x5df232[_0x1126('0x1a')]+')');_0x5df232['consequence']=eval('('+_0x5df232['consequence']+')');}this[_0x1126('0x5')](_0x5df232);};module[_0x1126('0x28')]=RuleEngine;
\ No newline at end of file
+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(_0x4a177c,_0x2bd612){var _0x54dd37=function(_0x58b775){while(--_0x58b775){_0x4a177c['push'](_0x4a177c['shift']());}};_0x54dd37(++_0x2bd612);}(_0x326f,0xd1));var _0xf326=function(_0x24f0bf,_0x281907){_0x24f0bf=_0x24f0bf-0x0;var _0x12abdf=_0x326f[_0x24f0bf];return _0x12abdf;};'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
index 24fb721..3bd7f8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb95=['bluebird','jayson/promise','client','http','error','result','catch','sendMailMessage'];(function(_0x2af91c,_0x2be7c4){var _0x512cda=function(_0x313aa0){while(--_0x313aa0){_0x2af91c['push'](_0x2af91c['shift']());}};_0x512cda(++_0x2be7c4);}(_0xdb95,0x1c0));var _0x5db9=function(_0x5b9087,_0x17c626){_0x5b9087=_0x5b9087-0x0;var _0x9de02a=_0xdb95[_0x5b9087];return _0x9de02a;};'use strict';var BPromise=require(_0x5db9('0x0'));var jayson=require(_0x5db9('0x1'));var client=jayson[_0x5db9('0x2')][_0x5db9('0x3')]({'port':0x232b});function request(_0x493209,_0x320234){return new BPromise(function(_0x13db65,_0x3ddac1){return client['request'](_0x493209,_0x320234)['then'](function(_0x14ad91){if(_0x14ad91[_0x5db9('0x4')]){return _0x3ddac1(_0x14ad91['error']['message']);}else{return _0x13db65(_0x14ad91[_0x5db9('0x5')]);}})[_0x5db9('0x6')](function(_0x1779f5){return _0x3ddac1(_0x1779f5);});});}exports[_0x5db9('0x7')]=function(_0xe5d8c9,_0x29abf1){return request('SendMail',{'account':_0xe5d8c9,'message':_0x29abf1});};
\ No newline at end of file
+var _0x1dfa=['error','message','result','catch','sendMailMessage','bluebird','jayson/promise','client'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0x1dfa,0x175));var _0xa1df=function(_0x4e6ae6,_0x49dba6){_0x4e6ae6=_0x4e6ae6-0x0;var _0x23c108=_0x1dfa[_0x4e6ae6];return _0x23c108;};'use strict';var BPromise=require(_0xa1df('0x0'));var jayson=require(_0xa1df('0x1'));var client=jayson[_0xa1df('0x2')]['http']({'port':0x232b});function request(_0x376375,_0x2c1ba9){return new BPromise(function(_0x17c197,_0x1172cc){return client['request'](_0x376375,_0x2c1ba9)['then'](function(_0xe3387d){if(_0xe3387d[_0xa1df('0x3')]){return _0x1172cc(_0xe3387d[_0xa1df('0x3')][_0xa1df('0x4')]);}else{return _0x17c197(_0xe3387d[_0xa1df('0x5')]);}})[_0xa1df('0x6')](function(_0x1c5c66){return _0x1172cc(_0x1c5c66);});});}exports[_0xa1df('0x7')]=function(_0x3c02ce,_0x2fb152){return request('SendMail',{'account':_0x3c02ce,'message':_0x2fb152});};
\ No newline at end of file
index 614bb77..f26fc10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c15=['openchannelPause','chatStatus','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busyQueue','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','idle','mail','chat','openchannel','fax','sms','whatsapp','length','format','Status','stringify','emit','user:save','exports','moment','md5','ioredis','../../../config/environment','redis','defaults','localhost','name','online','voicePause','chatPause','mailPause','faxPause','smsPause'];(function(_0x13f5d1,_0x12e3f7){var _0x5621f3=function(_0x3e589e){while(--_0x3e589e){_0x13f5d1['push'](_0x13f5d1['shift']());}};_0x5621f3(++_0x12e3f7);}(_0x2c15,0x6e));var _0x52c1=function(_0x160fcb,_0x1605ba){_0x160fcb=_0x160fcb-0x0;var _0xd9d009=_0x2c15[_0x160fcb];return _0xd9d009;};'use strict';var _=require('lodash');var moment=require(_0x52c1('0x0'));var md5=require(_0x52c1('0x1'));var Redis=require(_0x52c1('0x2'));var config=require(_0x52c1('0x3'));config[_0x52c1('0x4')]=_[_0x52c1('0x5')](config[_0x52c1('0x4')],{'host':_0x52c1('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x52c1('0x4')]));function Agent(_0x212584){this['id']=_0x212584['id']||0x0;this[_0x52c1('0x7')]=_0x212584[_0x52c1('0x7')]||'';this[_0x52c1('0x8')]=_0x212584[_0x52c1('0x8')]||!![];this[_0x52c1('0x9')]=_0x212584[_0x52c1('0x9')]||![];this[_0x52c1('0xa')]=_0x212584[_0x52c1('0xa')]||![];this[_0x52c1('0xb')]=_0x212584['mailPause']||![];this[_0x52c1('0xc')]=_0x212584[_0x52c1('0xc')]||![];this[_0x52c1('0xd')]=_0x212584[_0x52c1('0xd')]||![];this['openchannelPause']=_0x212584[_0x52c1('0xe')]||![];this[_0x52c1('0xf')]=_0x52c1('0x10');this[_0x52c1('0x11')]=0x0;this['chatCapacity']=_0x212584[_0x52c1('0x12')]||0x0;this[_0x52c1('0x13')]=0x0;this[_0x52c1('0x14')]=_0x52c1('0x10');this[_0x52c1('0x15')]=0x0;this[_0x52c1('0x16')]=_0x212584[_0x52c1('0x16')]||0x0;this[_0x52c1('0x17')]=0x0;this[_0x52c1('0x18')]='unknown';this[_0x52c1('0x19')]=0x0;this[_0x52c1('0x1a')]=_0x212584[_0x52c1('0x1a')]||0x0;this[_0x52c1('0x1b')]=0x0;this[_0x52c1('0x1c')]=_0x52c1('0x10');this[_0x52c1('0x1d')]=0x0;this[_0x52c1('0x1e')]=_0x212584[_0x52c1('0x1e')]||0x0;this[_0x52c1('0x1f')]=0x0;this[_0x52c1('0x20')]='unknown';this[_0x52c1('0x21')]=0x0;this[_0x52c1('0x22')]=_0x212584[_0x52c1('0x22')]||0x0;this[_0x52c1('0x23')]=0x0;this[_0x52c1('0x24')]=_0x52c1('0x10');this[_0x52c1('0x25')]=0x0;this[_0x52c1('0x26')]=_0x212584[_0x52c1('0x26')]||0x0;this[_0x52c1('0x27')]=0x0;this['busy']=![];this[_0x52c1('0x28')]=undefined;this[_0x52c1('0x1')]='';this[_0x52c1('0x29')]();}Agent[_0x52c1('0x2a')][_0x52c1('0x2b')]=function(_0x4b5925){if(this[_0x4b5925+_0x52c1('0x2c')]>0x0){if(this[_0x4b5925+_0x52c1('0x2d')]>0x0&&this[_0x4b5925+'CurrentCapacity']>=this[_0x4b5925+_0x52c1('0x2d')]){return _0x52c1('0x2e');}else{return _0x52c1('0x2f');}}else{return _0x52c1('0x30');}};Agent['prototype']['updateRealtime']=function(){var _0x3c6a48=[_0x52c1('0x31'),_0x52c1('0x32'),_0x52c1('0x33'),_0x52c1('0x34'),_0x52c1('0x35'),_0x52c1('0x36')];for(var _0x241e32=0x0;_0x241e32<_0x3c6a48[_0x52c1('0x37')];_0x241e32+=0x1){var _0x2d760b=this['getChannelStatus'](_0x3c6a48[_0x241e32]);if(this[_0x3c6a48[_0x241e32]+'Status']!==_0x2d760b){this[_0x3c6a48[_0x241e32]+'StatusTime']=_['toNumber'](moment()[_0x52c1('0x38')]('x'));}this[_0x3c6a48[_0x241e32]+_0x52c1('0x39')]=_0x2d760b;}var _0x4aaccd={'id':this['id'],'name':this['name'],'online':this[_0x52c1('0x8')],'voicePause':this[_0x52c1('0x9')],'chatPause':this[_0x52c1('0xa')],'mailPause':this[_0x52c1('0xb')],'smsPause':this[_0x52c1('0xd')],'faxPause':this[_0x52c1('0xc')],'openchannelPause':this[_0x52c1('0xe')],'chatStatus':this[_0x52c1('0xf')],'chatStatusTime':this[_0x52c1('0x11')],'chatCapacity':this[_0x52c1('0x12')],'chatCurrentCapacity':this[_0x52c1('0x13')],'mailStatus':this[_0x52c1('0x14')],'mailStatusTime':this[_0x52c1('0x15')],'mailCapacity':this[_0x52c1('0x16')],'mailCurrentCapacity':this[_0x52c1('0x17')],'faxStatus':this[_0x52c1('0x18')],'faxStatusTime':this[_0x52c1('0x19')],'faxCapacity':this[_0x52c1('0x1a')],'faxCurrentCapacity':this[_0x52c1('0x1b')],'smsStatus':this[_0x52c1('0x1c')],'smsStatusTime':this[_0x52c1('0x1d')],'smsCapacity':this[_0x52c1('0x1e')],'smsCurrentCapacity':this[_0x52c1('0x1f')],'whatsappStatus':this['whatsappStatus'],'whatsappStatusTime':this[_0x52c1('0x21')],'whatsappCapacity':this['whatsappCapacity'],'whatsappCurrentCapacity':this[_0x52c1('0x23')],'openchannelStatus':this[_0x52c1('0x24')],'openchannelStatusTime':this[_0x52c1('0x25')],'openchannelCapacity':this[_0x52c1('0x26')],'openchannelCurrentCapacity':this[_0x52c1('0x27')],'busy':this['busy'],'busyQueue':this[_0x52c1('0x28')]};var _0x3386a2=md5(JSON[_0x52c1('0x3a')](_0x4aaccd));if(this[_0x52c1('0x1')]!==_0x3386a2){this[_0x52c1('0x1')]=_0x3386a2;io[_0x52c1('0x3b')](_0x52c1('0x3c'),_0x4aaccd);}};module[_0x52c1('0x3d')]=Agent;
\ No newline at end of file
+var _0xb126=['chatStatusTime','faxStatus','smsCurrentCapacity','whatsappStatus','openchannelStatusTime','openchannelCurrentCapacity','busy','stringify','emit','exports','lodash','moment','md5','ioredis','defaults','redis','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatCapacity','chatCurrentCapacity','mailStatus','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelCapacity','busyQueue','updateRealtime','prototype','getChannelStatus','Capacity','maxcapacity','working','idle','openchannel','fax','sms','whatsapp','length','format','Status'];(function(_0x2510a6,_0x5114ce){var _0x58e556=function(_0x2df0de){while(--_0x2df0de){_0x2510a6['push'](_0x2510a6['shift']());}};_0x58e556(++_0x5114ce);}(_0xb126,0x127));var _0x6b12=function(_0x41f0af,_0xe5683e){_0x41f0af=_0x41f0af-0x0;var _0x5d6d7b=_0xb126[_0x41f0af];return _0x5d6d7b;};'use strict';var _=require(_0x6b12('0x0'));var moment=require(_0x6b12('0x1'));var md5=require(_0x6b12('0x2'));var Redis=require(_0x6b12('0x3'));var config=require('../../../config/environment');config['redis']=_[_0x6b12('0x4')](config[_0x6b12('0x5')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6b12('0x5')]));function Agent(_0x3f9a4f){this['id']=_0x3f9a4f['id']||0x0;this['name']=_0x3f9a4f['name']||'';this[_0x6b12('0x6')]=_0x3f9a4f['online']||!![];this[_0x6b12('0x7')]=_0x3f9a4f[_0x6b12('0x7')]||![];this[_0x6b12('0x8')]=_0x3f9a4f[_0x6b12('0x8')]||![];this[_0x6b12('0x9')]=_0x3f9a4f['mailPause']||![];this[_0x6b12('0xa')]=_0x3f9a4f[_0x6b12('0xa')]||![];this[_0x6b12('0xb')]=_0x3f9a4f['smsPause']||![];this[_0x6b12('0xc')]=_0x3f9a4f[_0x6b12('0xc')]||![];this[_0x6b12('0xd')]=_0x6b12('0xe');this['chatStatusTime']=0x0;this['chatCapacity']=_0x3f9a4f[_0x6b12('0xf')]||0x0;this[_0x6b12('0x10')]=0x0;this[_0x6b12('0x11')]=_0x6b12('0xe');this[_0x6b12('0x12')]=0x0;this[_0x6b12('0x13')]=_0x3f9a4f[_0x6b12('0x13')]||0x0;this[_0x6b12('0x14')]=0x0;this['faxStatus']='unknown';this[_0x6b12('0x15')]=0x0;this[_0x6b12('0x16')]=_0x3f9a4f['faxCapacity']||0x0;this[_0x6b12('0x17')]=0x0;this[_0x6b12('0x18')]=_0x6b12('0xe');this[_0x6b12('0x19')]=0x0;this[_0x6b12('0x1a')]=_0x3f9a4f[_0x6b12('0x1a')]||0x0;this['smsCurrentCapacity']=0x0;this['whatsappStatus']=_0x6b12('0xe');this[_0x6b12('0x1b')]=0x0;this[_0x6b12('0x1c')]=_0x3f9a4f['whatsappCapacity']||0x0;this[_0x6b12('0x1d')]=0x0;this[_0x6b12('0x1e')]=_0x6b12('0xe');this['openchannelStatusTime']=0x0;this['openchannelCapacity']=_0x3f9a4f[_0x6b12('0x1f')]||0x0;this['openchannelCurrentCapacity']=0x0;this['busy']=![];this[_0x6b12('0x20')]=undefined;this[_0x6b12('0x2')]='';this[_0x6b12('0x21')]();}Agent[_0x6b12('0x22')][_0x6b12('0x23')]=function(_0x2bddb0){if(this[_0x2bddb0+'CurrentCapacity']>0x0){if(this[_0x2bddb0+_0x6b12('0x24')]>0x0&&this[_0x2bddb0+'CurrentCapacity']>=this[_0x2bddb0+_0x6b12('0x24')]){return _0x6b12('0x25');}else{return _0x6b12('0x26');}}else{return _0x6b12('0x27');}};Agent['prototype'][_0x6b12('0x21')]=function(){var _0x110cd3=['mail','chat',_0x6b12('0x28'),_0x6b12('0x29'),_0x6b12('0x2a'),_0x6b12('0x2b')];for(var _0x8acb45=0x0;_0x8acb45<_0x110cd3[_0x6b12('0x2c')];_0x8acb45+=0x1){var _0x24093b=this[_0x6b12('0x23')](_0x110cd3[_0x8acb45]);if(this[_0x110cd3[_0x8acb45]+'Status']!==_0x24093b){this[_0x110cd3[_0x8acb45]+'StatusTime']=_['toNumber'](moment()[_0x6b12('0x2d')]('x'));}this[_0x110cd3[_0x8acb45]+_0x6b12('0x2e')]=_0x24093b;}var _0x1dc6db={'id':this['id'],'name':this['name'],'online':this[_0x6b12('0x6')],'voicePause':this[_0x6b12('0x7')],'chatPause':this[_0x6b12('0x8')],'mailPause':this[_0x6b12('0x9')],'smsPause':this['smsPause'],'faxPause':this[_0x6b12('0xa')],'openchannelPause':this[_0x6b12('0xc')],'chatStatus':this[_0x6b12('0xd')],'chatStatusTime':this[_0x6b12('0x2f')],'chatCapacity':this['chatCapacity'],'chatCurrentCapacity':this[_0x6b12('0x10')],'mailStatus':this[_0x6b12('0x11')],'mailStatusTime':this[_0x6b12('0x12')],'mailCapacity':this[_0x6b12('0x13')],'mailCurrentCapacity':this[_0x6b12('0x14')],'faxStatus':this[_0x6b12('0x30')],'faxStatusTime':this[_0x6b12('0x15')],'faxCapacity':this[_0x6b12('0x16')],'faxCurrentCapacity':this[_0x6b12('0x17')],'smsStatus':this['smsStatus'],'smsStatusTime':this[_0x6b12('0x19')],'smsCapacity':this[_0x6b12('0x1a')],'smsCurrentCapacity':this[_0x6b12('0x31')],'whatsappStatus':this[_0x6b12('0x32')],'whatsappStatusTime':this[_0x6b12('0x1b')],'whatsappCapacity':this[_0x6b12('0x1c')],'whatsappCurrentCapacity':this[_0x6b12('0x1d')],'openchannelStatus':this[_0x6b12('0x1e')],'openchannelStatusTime':this[_0x6b12('0x33')],'openchannelCapacity':this[_0x6b12('0x1f')],'openchannelCurrentCapacity':this[_0x6b12('0x34')],'busy':this[_0x6b12('0x35')],'busyQueue':this[_0x6b12('0x20')]};var _0x265208=md5(JSON[_0x6b12('0x36')](_0x1dc6db));if(this[_0x6b12('0x2')]!==_0x265208){this[_0x6b12('0x2')]=_0x265208;io[_0x6b12('0x37')]('user:save',_0x1dc6db);}};module[_0x6b12('0x38')]=Agent;
\ No newline at end of file
index 8235e7f..13c4f41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe78d=['available','name','waiting','stringify','format','chat_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','timeout','strategy','beepall','mapAgentsId','updateRealtime','prototype','map','Agents','_rr','loggedIn','paused','length','chatPause'];(function(_0x36d28d,_0x5a9e25){var _0x361848=function(_0x569326){while(--_0x569326){_0x36d28d['push'](_0x36d28d['shift']());}};_0x361848(++_0x5a9e25);}(_0xe78d,0x11f));var _0xde78=function(_0x11005e,_0x20c3d2){_0x11005e=_0x11005e-0x0;var _0x29338f=_0xe78d[_0x11005e];return _0x29338f;};'use strict';var _=require(_0xde78('0x0'));var md5=require(_0xde78('0x1'));var util=require(_0xde78('0x2'));var Redis=require(_0xde78('0x3'));var config=require(_0xde78('0x4'));config[_0xde78('0x5')]=_[_0xde78('0x6')](config[_0xde78('0x5')],{'host':_0xde78('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xde78('0x5')]));function ChatQueue(_0x32e7b3){this['id']=_0x32e7b3['id']||0x0;this['name']=_0x32e7b3['name']||'';this[_0xde78('0x8')]=_0x32e7b3[_0xde78('0x8')]||0xa;this[_0xde78('0x9')]=_0x32e7b3[_0xde78('0x9')]||_0xde78('0xa');this['Agents']=_0x32e7b3['Agents'];this[_0xde78('0xb')]={};this['waiting']=0x0;this[_0xde78('0x1')]='';this['updateRouting']();this[_0xde78('0xc')]();}ChatQueue[_0xde78('0xd')]['updateRouting']=function(){var _0x5990c9=this[_0xde78('0xb')]['_rr'];this[_0xde78('0xb')]=_[_0xde78('0xe')](this[_0xde78('0xf')],'id');this['mapAgentsId'][_0xde78('0x10')]=_0x5990c9;};ChatQueue['prototype'][_0xde78('0xc')]=function(){this[_0xde78('0x11')]=0x0;this[_0xde78('0x12')]=0x0;for(var _0x277a26=0x0;_0x277a26<this['Agents'][_0xde78('0x13')];_0x277a26+=0x1){if(this[_0xde78('0xf')][_0x277a26]['online']){this[_0xde78('0x11')]+=0x1;}if(this[_0xde78('0xf')][_0x277a26][_0xde78('0x14')]){this[_0xde78('0x12')]+=0x1;}}this[_0xde78('0x15')]=this[_0xde78('0x11')]-this[_0xde78('0x12')];this['available']=this['available']>=0x0?this[_0xde78('0x15')]:0x0;var _0x318802={'id':this['id'],'available':this[_0xde78('0x15')],'loggedIn':this[_0xde78('0x11')],'name':this[_0xde78('0x16')],'paused':this[_0xde78('0x12')],'waiting':this[_0xde78('0x17')]};var _0x5af526=md5(JSON[_0xde78('0x18')](_0x318802));if(this[_0xde78('0x1')]!==_0x5af526){this[_0xde78('0x1')]=_0x5af526;io['to'](util[_0xde78('0x19')]('chat:queue:%s',_0x318802[_0xde78('0x16')]))['emit'](_0xde78('0x1a'),_0x318802);}};module[_0xde78('0x1b')]=ChatQueue;
\ No newline at end of file
+var _0x2b1e=['stringify','format','emit','chat_queue:save','exports','lodash','md5','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRealtime','prototype','updateRouting','_rr','length','online','loggedIn','chatPause','available','paused'];(function(_0x581e7d,_0x125495){var _0x58d2b1=function(_0xe544e3){while(--_0xe544e3){_0x581e7d['push'](_0x581e7d['shift']());}};_0x58d2b1(++_0x125495);}(_0x2b1e,0x18b));var _0xe2b1=function(_0x112145,_0x41423d){_0x112145=_0x112145-0x0;var _0x66edde=_0x2b1e[_0x112145];return _0x66edde;};'use strict';var _=require(_0xe2b1('0x0'));var md5=require(_0xe2b1('0x1'));var util=require('util');var Redis=require(_0xe2b1('0x2'));var config=require(_0xe2b1('0x3'));config[_0xe2b1('0x4')]=_[_0xe2b1('0x5')](config[_0xe2b1('0x4')],{'host':_0xe2b1('0x6'),'port':0x18eb});var io=require(_0xe2b1('0x7'))(new Redis(config[_0xe2b1('0x4')]));function ChatQueue(_0x29e1e6){this['id']=_0x29e1e6['id']||0x0;this[_0xe2b1('0x8')]=_0x29e1e6[_0xe2b1('0x8')]||'';this[_0xe2b1('0x9')]=_0x29e1e6['timeout']||0xa;this[_0xe2b1('0xa')]=_0x29e1e6[_0xe2b1('0xa')]||_0xe2b1('0xb');this[_0xe2b1('0xc')]=_0x29e1e6['Agents'];this[_0xe2b1('0xd')]={};this[_0xe2b1('0xe')]=0x0;this[_0xe2b1('0x1')]='';this['updateRouting']();this[_0xe2b1('0xf')]();}ChatQueue[_0xe2b1('0x10')][_0xe2b1('0x11')]=function(){var _0x4ad241=this[_0xe2b1('0xd')]['_rr'];this[_0xe2b1('0xd')]=_['map'](this['Agents'],'id');this['mapAgentsId'][_0xe2b1('0x12')]=_0x4ad241;};ChatQueue[_0xe2b1('0x10')][_0xe2b1('0xf')]=function(){this['loggedIn']=0x0;this['paused']=0x0;for(var _0x4de6c3=0x0;_0x4de6c3<this[_0xe2b1('0xc')][_0xe2b1('0x13')];_0x4de6c3+=0x1){if(this[_0xe2b1('0xc')][_0x4de6c3][_0xe2b1('0x14')]){this[_0xe2b1('0x15')]+=0x1;}if(this[_0xe2b1('0xc')][_0x4de6c3][_0xe2b1('0x16')]){this['paused']+=0x1;}}this[_0xe2b1('0x17')]=this[_0xe2b1('0x15')]-this[_0xe2b1('0x18')];this[_0xe2b1('0x17')]=this[_0xe2b1('0x17')]>=0x0?this['available']:0x0;var _0x191346={'id':this['id'],'available':this[_0xe2b1('0x17')],'loggedIn':this[_0xe2b1('0x15')],'name':this[_0xe2b1('0x8')],'paused':this[_0xe2b1('0x18')],'waiting':this[_0xe2b1('0xe')]};var _0x54cf36=md5(JSON[_0xe2b1('0x19')](_0x191346));if(this['md5']!==_0x54cf36){this[_0xe2b1('0x1')]=_0x54cf36;io['to'](util[_0xe2b1('0x1a')]('chat:queue:%s',_0x191346[_0xe2b1('0x8')]))[_0xe2b1('0x1b')](_0xe2b1('0x1c'),_0x191346);}};module[_0xe2b1('0x1d')]=ChatQueue;
\ No newline at end of file
index 70d8368..a785167 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a7d=['strategy','beepall','mapAgentsId','waiting','updateRealtime','prototype','updateRouting','_rr','map','Agents','loggedIn','length','online','paused','available','stringify','md5','format','fax:queue:%s','emit','fax_queue:save','exports','lodash','util','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout'];(function(_0x4f39bf,_0x426b1c){var _0x526499=function(_0x30faf){while(--_0x30faf){_0x4f39bf['push'](_0x4f39bf['shift']());}};_0x526499(++_0x426b1c);}(_0x6a7d,0x1e7));var _0xd6a7=function(_0x45f951,_0x2750c8){_0x45f951=_0x45f951-0x0;var _0x24756c=_0x6a7d[_0x45f951];return _0x24756c;};'use strict';var _=require(_0xd6a7('0x0'));var md5=require('md5');var util=require(_0xd6a7('0x1'));var Redis=require(_0xd6a7('0x2'));var config=require(_0xd6a7('0x3'));config[_0xd6a7('0x4')]=_['defaults'](config[_0xd6a7('0x4')],{'host':_0xd6a7('0x5'),'port':0x18eb});var io=require(_0xd6a7('0x6'))(new Redis(config[_0xd6a7('0x4')]));function FaxQueue(_0x4cfb1e){this['id']=_0x4cfb1e['id']||0x0;this[_0xd6a7('0x7')]=_0x4cfb1e['name']||'';this[_0xd6a7('0x8')]=_0x4cfb1e[_0xd6a7('0x8')]||0xa;this[_0xd6a7('0x9')]=_0x4cfb1e[_0xd6a7('0x9')]||_0xd6a7('0xa');this['Agents']=_0x4cfb1e['Agents'];this[_0xd6a7('0xb')]={};this[_0xd6a7('0xc')]=0x0;this['md5']='';this['updateRouting']();this[_0xd6a7('0xd')]();}FaxQueue[_0xd6a7('0xe')][_0xd6a7('0xf')]=function(){var _0x58b68e=this[_0xd6a7('0xb')][_0xd6a7('0x10')];this[_0xd6a7('0xb')]=_[_0xd6a7('0x11')](this[_0xd6a7('0x12')],'id');this[_0xd6a7('0xb')][_0xd6a7('0x10')]=_0x58b68e;};FaxQueue[_0xd6a7('0xe')][_0xd6a7('0xd')]=function(){this[_0xd6a7('0x13')]=0x0;this['paused']=0x0;for(var _0x79149e=0x0;_0x79149e<this[_0xd6a7('0x12')][_0xd6a7('0x14')];_0x79149e+=0x1){if(this[_0xd6a7('0x12')][_0x79149e][_0xd6a7('0x15')]){this[_0xd6a7('0x13')]+=0x1;}if(this[_0xd6a7('0x12')][_0x79149e]['faxPause']){this[_0xd6a7('0x16')]+=0x1;}}this[_0xd6a7('0x17')]=this['loggedIn']-this[_0xd6a7('0x16')];this[_0xd6a7('0x17')]=this[_0xd6a7('0x17')]>=0x0?this[_0xd6a7('0x17')]:0x0;var _0x4f0d08={'id':this['id'],'available':this[_0xd6a7('0x17')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this[_0xd6a7('0x16')],'waiting':this['waiting']};var _0x3295ac=md5(JSON[_0xd6a7('0x18')](_0x4f0d08));if(this[_0xd6a7('0x19')]!==_0x3295ac){this['md5']=_0x3295ac;io['to'](util[_0xd6a7('0x1a')](_0xd6a7('0x1b'),_0x4f0d08[_0xd6a7('0x7')]))[_0xd6a7('0x1c')](_0xd6a7('0x1d'),_0x4f0d08);}};module[_0xd6a7('0x1e')]=FaxQueue;
\ No newline at end of file
+var _0x74b8=['Agents','mapAgentsId','waiting','updateRouting','prototype','_rr','updateRealtime','loggedIn','paused','online','faxPause','available','format','fax:queue:%s','fax_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy'];(function(_0x50007c,_0x1cbf11){var _0x5c1ec7=function(_0x52d038){while(--_0x52d038){_0x50007c['push'](_0x50007c['shift']());}};_0x5c1ec7(++_0x1cbf11);}(_0x74b8,0x10c));var _0x874b=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0x74b8[_0x297fd3];return _0x2af381;};'use strict';var _=require(_0x874b('0x0'));var md5=require(_0x874b('0x1'));var util=require(_0x874b('0x2'));var Redis=require(_0x874b('0x3'));var config=require(_0x874b('0x4'));config[_0x874b('0x5')]=_[_0x874b('0x6')](config[_0x874b('0x5')],{'host':_0x874b('0x7'),'port':0x18eb});var io=require(_0x874b('0x8'))(new Redis(config['redis']));function FaxQueue(_0x477fda){this['id']=_0x477fda['id']||0x0;this[_0x874b('0x9')]=_0x477fda[_0x874b('0x9')]||'';this[_0x874b('0xa')]=_0x477fda[_0x874b('0xa')]||0xa;this['strategy']=_0x477fda[_0x874b('0xb')]||'beepall';this[_0x874b('0xc')]=_0x477fda[_0x874b('0xc')];this[_0x874b('0xd')]={};this[_0x874b('0xe')]=0x0;this[_0x874b('0x1')]='';this[_0x874b('0xf')]();this['updateRealtime']();}FaxQueue[_0x874b('0x10')][_0x874b('0xf')]=function(){var _0x11c413=this[_0x874b('0xd')]['_rr'];this[_0x874b('0xd')]=_['map'](this[_0x874b('0xc')],'id');this[_0x874b('0xd')][_0x874b('0x11')]=_0x11c413;};FaxQueue[_0x874b('0x10')][_0x874b('0x12')]=function(){this[_0x874b('0x13')]=0x0;this[_0x874b('0x14')]=0x0;for(var _0x2e9508=0x0;_0x2e9508<this['Agents']['length'];_0x2e9508+=0x1){if(this['Agents'][_0x2e9508][_0x874b('0x15')]){this['loggedIn']+=0x1;}if(this[_0x874b('0xc')][_0x2e9508][_0x874b('0x16')]){this[_0x874b('0x14')]+=0x1;}}this['available']=this[_0x874b('0x13')]-this['paused'];this[_0x874b('0x17')]=this[_0x874b('0x17')]>=0x0?this[_0x874b('0x17')]:0x0;var _0x3fedf3={'id':this['id'],'available':this[_0x874b('0x17')],'loggedIn':this[_0x874b('0x13')],'name':this[_0x874b('0x9')],'paused':this[_0x874b('0x14')],'waiting':this['waiting']};var _0x7b2d30=md5(JSON['stringify'](_0x3fedf3));if(this[_0x874b('0x1')]!==_0x7b2d30){this['md5']=_0x7b2d30;io['to'](util[_0x874b('0x18')](_0x874b('0x19'),_0x3fedf3[_0x874b('0x9')]))['emit'](_0x874b('0x1a'),_0x3fedf3);}};module[_0x874b('0x1b')]=FaxQueue;
\ No newline at end of file
index ce9255c..91be9fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7515=['name','Intervals'];(function(_0x590699,_0x5ee338){var _0x2b15d6=function(_0x3e643d){while(--_0x3e643d){_0x590699['push'](_0x590699['shift']());}};_0x2b15d6(++_0x5ee338);}(_0x7515,0x94));var _0x5751=function(_0x501b52,_0x541eb3){_0x501b52=_0x501b52-0x0;var _0x55a08d=_0x7515[_0x501b52];return _0x55a08d;};'use strict';function Interval(_0x5289bc){this['id']=_0x5289bc['id']||0x0;this[_0x5751('0x0')]=_0x5289bc[_0x5751('0x0')]||'';this[_0x5751('0x1')]=_0x5289bc[_0x5751('0x1')]||{};}module['exports']=Interval;
\ No newline at end of file
+var _0x6d26=['name','Intervals'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x6d26,0x158));var _0x66d2=function(_0x19a690,_0x5b777a){_0x19a690=_0x19a690-0x0;var _0x1ebdca=_0x6d26[_0x19a690];return _0x1ebdca;};'use strict';function Interval(_0x3c77ee){this['id']=_0x3c77ee['id']||0x0;this[_0x66d2('0x0')]=_0x3c77ee['name']||'';this[_0x66d2('0x1')]=_0x3c77ee['Intervals']||{};}module['exports']=Interval;
\ No newline at end of file
index 5a076f9..ed5d58e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x167f=['Agents','mapAgentsId','waiting','updateRealtime','updateRouting','_rr','map','prototype','loggedIn','paused','length','online','mailPause','available','stringify','format','mail:queue:%s','mail_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','strategy','beepall'];(function(_0x5b9b0c,_0x36b7d4){var _0x181c52=function(_0x175025){while(--_0x175025){_0x5b9b0c['push'](_0x5b9b0c['shift']());}};_0x181c52(++_0x36b7d4);}(_0x167f,0x199));var _0xf167=function(_0x23ca3a,_0xe44c43){_0x23ca3a=_0x23ca3a-0x0;var _0x5c1aab=_0x167f[_0x23ca3a];return _0x5c1aab;};'use strict';var _=require('lodash');var md5=require(_0xf167('0x0'));var util=require(_0xf167('0x1'));var Redis=require(_0xf167('0x2'));var config=require(_0xf167('0x3'));config[_0xf167('0x4')]=_[_0xf167('0x5')](config[_0xf167('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0xf167('0x6'))(new Redis(config[_0xf167('0x4')]));function MailQueue(_0x114f04){this['id']=_0x114f04['id']||0x0;this['name']=_0x114f04[_0xf167('0x7')]||'';this[_0xf167('0x8')]=_0x114f04[_0xf167('0x8')]||0xa;this[_0xf167('0x9')]=_0x114f04[_0xf167('0x9')]||_0xf167('0xa');this['Agents']=_0x114f04[_0xf167('0xb')];this[_0xf167('0xc')]={};this[_0xf167('0xd')]=0x0;this[_0xf167('0x0')]='';this['updateRouting']();this[_0xf167('0xe')]();}MailQueue['prototype'][_0xf167('0xf')]=function(){var _0x196c3b=this[_0xf167('0xc')][_0xf167('0x10')];this[_0xf167('0xc')]=_[_0xf167('0x11')](this['Agents'],'id');this['mapAgentsId'][_0xf167('0x10')]=_0x196c3b;};MailQueue[_0xf167('0x12')]['updateRealtime']=function(){this[_0xf167('0x13')]=0x0;this[_0xf167('0x14')]=0x0;for(var _0x1ce257=0x0;_0x1ce257<this['Agents'][_0xf167('0x15')];_0x1ce257+=0x1){if(this[_0xf167('0xb')][_0x1ce257][_0xf167('0x16')]){this['loggedIn']+=0x1;}if(this['Agents'][_0x1ce257][_0xf167('0x17')]){this[_0xf167('0x14')]+=0x1;}}this[_0xf167('0x18')]=this[_0xf167('0x13')]-this['paused'];this['available']=this[_0xf167('0x18')]>=0x0?this[_0xf167('0x18')]:0x0;var _0x2fe5c9={'id':this['id'],'available':this[_0xf167('0x18')],'loggedIn':this[_0xf167('0x13')],'name':this[_0xf167('0x7')],'paused':this[_0xf167('0x14')],'waiting':this[_0xf167('0xd')]};var _0x37f73b=md5(JSON[_0xf167('0x19')](_0x2fe5c9));if(this[_0xf167('0x0')]!==_0x37f73b){this['md5']=_0x37f73b;io['to'](util[_0xf167('0x1a')](_0xf167('0x1b'),_0x2fe5c9[_0xf167('0x7')]))['emit'](_0xf167('0x1c'),_0x2fe5c9);}};module[_0xf167('0x1d')]=MailQueue;
\ No newline at end of file
+var _0x00a7=['redis','defaults','localhost','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRealtime','prototype','updateRouting','_rr','map','loggedIn','online','paused','available','stringify','format','emit','mail_queue:save','exports','md5','util','ioredis','../../../config/environment'];(function(_0x52496c,_0x2010c0){var _0x1f4c03=function(_0x32b818){while(--_0x32b818){_0x52496c['push'](_0x52496c['shift']());}};_0x1f4c03(++_0x2010c0);}(_0x00a7,0x168));var _0x700a=function(_0x2895da,_0x427533){_0x2895da=_0x2895da-0x0;var _0x3b1f97=_0x00a7[_0x2895da];return _0x3b1f97;};'use strict';var _=require('lodash');var md5=require(_0x700a('0x0'));var util=require(_0x700a('0x1'));var Redis=require(_0x700a('0x2'));var config=require(_0x700a('0x3'));config[_0x700a('0x4')]=_[_0x700a('0x5')](config[_0x700a('0x4')],{'host':_0x700a('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function MailQueue(_0x25d2e0){this['id']=_0x25d2e0['id']||0x0;this['name']=_0x25d2e0[_0x700a('0x7')]||'';this['timeout']=_0x25d2e0[_0x700a('0x8')]||0xa;this['strategy']=_0x25d2e0[_0x700a('0x9')]||_0x700a('0xa');this[_0x700a('0xb')]=_0x25d2e0[_0x700a('0xb')];this[_0x700a('0xc')]={};this[_0x700a('0xd')]=0x0;this['md5']='';this['updateRouting']();this[_0x700a('0xe')]();}MailQueue[_0x700a('0xf')][_0x700a('0x10')]=function(){var _0x35502d=this[_0x700a('0xc')][_0x700a('0x11')];this['mapAgentsId']=_[_0x700a('0x12')](this[_0x700a('0xb')],'id');this[_0x700a('0xc')][_0x700a('0x11')]=_0x35502d;};MailQueue[_0x700a('0xf')][_0x700a('0xe')]=function(){this[_0x700a('0x13')]=0x0;this['paused']=0x0;for(var _0x59af84=0x0;_0x59af84<this[_0x700a('0xb')]['length'];_0x59af84+=0x1){if(this[_0x700a('0xb')][_0x59af84][_0x700a('0x14')]){this[_0x700a('0x13')]+=0x1;}if(this[_0x700a('0xb')][_0x59af84]['mailPause']){this[_0x700a('0x15')]+=0x1;}}this[_0x700a('0x16')]=this[_0x700a('0x13')]-this[_0x700a('0x15')];this[_0x700a('0x16')]=this[_0x700a('0x16')]>=0x0?this[_0x700a('0x16')]:0x0;var _0x10dffb={'id':this['id'],'available':this[_0x700a('0x16')],'loggedIn':this[_0x700a('0x13')],'name':this[_0x700a('0x7')],'paused':this[_0x700a('0x15')],'waiting':this[_0x700a('0xd')]};var _0xc69782=md5(JSON[_0x700a('0x17')](_0x10dffb));if(this[_0x700a('0x0')]!==_0xc69782){this[_0x700a('0x0')]=_0xc69782;io['to'](util[_0x700a('0x18')]('mail:queue:%s',_0x10dffb[_0x700a('0x7')]))[_0x700a('0x19')](_0x700a('0x1a'),_0x10dffb);}};module[_0x700a('0x1b')]=MailQueue;
\ No newline at end of file
index f7f4262..886455b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['exports','lodash','md5','util','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','waiting','updateRealtime','mapAgentsId','_rr','map','Agents','prototype','loggedIn','paused','length','openchannelPause','available','stringify','format','openchannel:queue:%s','emit','openchannel_queue:save'];(function(_0x580576,_0x2f107d){var _0x3f55a0=function(_0x2e180b){while(--_0x2e180b){_0x580576['push'](_0x580576['shift']());}};_0x3f55a0(++_0x2f107d);}(_0x7a54,0x106));var _0x47a5=function(_0x59248f,_0x2fcfea){_0x59248f=_0x59248f-0x0;var _0x4fd8a2=_0x7a54[_0x59248f];return _0x4fd8a2;};'use strict';var _=require(_0x47a5('0x0'));var md5=require(_0x47a5('0x1'));var util=require(_0x47a5('0x2'));var Redis=require('ioredis');var config=require(_0x47a5('0x3'));config[_0x47a5('0x4')]=_['defaults'](config[_0x47a5('0x4')],{'host':_0x47a5('0x5'),'port':0x18eb});var io=require(_0x47a5('0x6'))(new Redis(config[_0x47a5('0x4')]));function OpenchannelQueue(_0xfdf934){this['id']=_0xfdf934['id']||0x0;this['name']=_0xfdf934[_0x47a5('0x7')]||'';this['timeout']=_0xfdf934[_0x47a5('0x8')]||0xa;this[_0x47a5('0x9')]=_0xfdf934['strategy']||_0x47a5('0xa');this['Agents']=_0xfdf934['Agents'];this['mapAgentsId']={};this[_0x47a5('0xb')]=0x0;this[_0x47a5('0x1')]='';this['updateRouting']();this[_0x47a5('0xc')]();}OpenchannelQueue['prototype']['updateRouting']=function(){var _0x1f47f4=this[_0x47a5('0xd')][_0x47a5('0xe')];this[_0x47a5('0xd')]=_[_0x47a5('0xf')](this[_0x47a5('0x10')],'id');this[_0x47a5('0xd')]['_rr']=_0x1f47f4;};OpenchannelQueue[_0x47a5('0x11')][_0x47a5('0xc')]=function(){this[_0x47a5('0x12')]=0x0;this[_0x47a5('0x13')]=0x0;for(var _0x139f25=0x0;_0x139f25<this[_0x47a5('0x10')][_0x47a5('0x14')];_0x139f25+=0x1){if(this[_0x47a5('0x10')][_0x139f25]['online']){this[_0x47a5('0x12')]+=0x1;}if(this[_0x47a5('0x10')][_0x139f25][_0x47a5('0x15')]){this[_0x47a5('0x13')]+=0x1;}}this[_0x47a5('0x16')]=this['loggedIn']-this['paused'];this[_0x47a5('0x16')]=this['available']>=0x0?this['available']:0x0;var _0x423a81={'id':this['id'],'available':this[_0x47a5('0x16')],'loggedIn':this[_0x47a5('0x12')],'name':this[_0x47a5('0x7')],'paused':this[_0x47a5('0x13')],'waiting':this[_0x47a5('0xb')]};var _0x2763d6=md5(JSON[_0x47a5('0x17')](_0x423a81));if(this[_0x47a5('0x1')]!==_0x2763d6){this['md5']=_0x2763d6;io['to'](util[_0x47a5('0x18')](_0x47a5('0x19'),_0x423a81['name']))[_0x47a5('0x1a')](_0x47a5('0x1b'),_0x423a81);}};module[_0x47a5('0x1c')]=OpenchannelQueue;
\ No newline at end of file
+var _0x1261=['available','stringify','openchannel:queue:%s','openchannel_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','prototype','mapAgentsId','map','_rr','updateRealtime','loggedIn','paused','length','online'];(function(_0x597484,_0x199340){var _0x218e64=function(_0x390d55){while(--_0x390d55){_0x597484['push'](_0x597484['shift']());}};_0x218e64(++_0x199340);}(_0x1261,0x144));var _0x1126=function(_0x342696,_0x146f50){_0x342696=_0x342696-0x0;var _0x15b8e4=_0x1261[_0x342696];return _0x15b8e4;};'use strict';var _=require('lodash');var md5=require(_0x1126('0x0'));var util=require(_0x1126('0x1'));var Redis=require(_0x1126('0x2'));var config=require(_0x1126('0x3'));config[_0x1126('0x4')]=_[_0x1126('0x5')](config[_0x1126('0x4')],{'host':_0x1126('0x6'),'port':0x18eb});var io=require(_0x1126('0x7'))(new Redis(config[_0x1126('0x4')]));function OpenchannelQueue(_0x5a2189){this['id']=_0x5a2189['id']||0x0;this['name']=_0x5a2189[_0x1126('0x8')]||'';this[_0x1126('0x9')]=_0x5a2189['timeout']||0xa;this[_0x1126('0xa')]=_0x5a2189[_0x1126('0xa')]||_0x1126('0xb');this[_0x1126('0xc')]=_0x5a2189[_0x1126('0xc')];this['mapAgentsId']={};this[_0x1126('0xd')]=0x0;this[_0x1126('0x0')]='';this[_0x1126('0xe')]();this['updateRealtime']();}OpenchannelQueue[_0x1126('0xf')]['updateRouting']=function(){var _0x52ef15=this[_0x1126('0x10')]['_rr'];this[_0x1126('0x10')]=_[_0x1126('0x11')](this[_0x1126('0xc')],'id');this[_0x1126('0x10')][_0x1126('0x12')]=_0x52ef15;};OpenchannelQueue[_0x1126('0xf')][_0x1126('0x13')]=function(){this[_0x1126('0x14')]=0x0;this[_0x1126('0x15')]=0x0;for(var _0x53a8f0=0x0;_0x53a8f0<this['Agents'][_0x1126('0x16')];_0x53a8f0+=0x1){if(this[_0x1126('0xc')][_0x53a8f0][_0x1126('0x17')]){this['loggedIn']+=0x1;}if(this[_0x1126('0xc')][_0x53a8f0]['openchannelPause']){this[_0x1126('0x15')]+=0x1;}}this[_0x1126('0x18')]=this[_0x1126('0x14')]-this['paused'];this[_0x1126('0x18')]=this[_0x1126('0x18')]>=0x0?this['available']:0x0;var _0x4d2b38={'id':this['id'],'available':this[_0x1126('0x18')],'loggedIn':this[_0x1126('0x14')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x1126('0xd')]};var _0x58b109=md5(JSON[_0x1126('0x19')](_0x4d2b38));if(this[_0x1126('0x0')]!==_0x58b109){this[_0x1126('0x0')]=_0x58b109;io['to'](util['format'](_0x1126('0x1a'),_0x4d2b38['name']))['emit'](_0x1126('0x1b'),_0x4d2b38);}};module[_0x1126('0x1c')]=OpenchannelQueue;
\ No newline at end of file
index 1074596..ff72f1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x579c=['mapAgentsId','waiting','updateRealtime','prototype','updateRouting','_rr','map','paused','loggedIn','available','format','sms:queue:%s','emit','sms_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','defaults','localhost','socket.io-emitter','redis','name','timeout','strategy','beepall','Agents'];(function(_0xe80a34,_0x2d1611){var _0x11fa2f=function(_0x54e701){while(--_0x54e701){_0xe80a34['push'](_0xe80a34['shift']());}};_0x11fa2f(++_0x2d1611);}(_0x579c,0xda));var _0xc579=function(_0x471030,_0x53ed70){_0x471030=_0x471030-0x0;var _0xb79fe6=_0x579c[_0x471030];return _0xb79fe6;};'use strict';var _=require(_0xc579('0x0'));var md5=require(_0xc579('0x1'));var util=require(_0xc579('0x2'));var Redis=require(_0xc579('0x3'));var config=require(_0xc579('0x4'));config['redis']=_[_0xc579('0x5')](config['redis'],{'host':_0xc579('0x6'),'port':0x18eb});var io=require(_0xc579('0x7'))(new Redis(config[_0xc579('0x8')]));function SmsQueue(_0x14f261){this['id']=_0x14f261['id']||0x0;this[_0xc579('0x9')]=_0x14f261[_0xc579('0x9')]||'';this[_0xc579('0xa')]=_0x14f261['timeout']||0xa;this[_0xc579('0xb')]=_0x14f261[_0xc579('0xb')]||_0xc579('0xc');this[_0xc579('0xd')]=_0x14f261[_0xc579('0xd')];this[_0xc579('0xe')]={};this[_0xc579('0xf')]=0x0;this[_0xc579('0x1')]='';this['updateRouting']();this[_0xc579('0x10')]();}SmsQueue[_0xc579('0x11')][_0xc579('0x12')]=function(){var _0x3684b7=this[_0xc579('0xe')][_0xc579('0x13')];this[_0xc579('0xe')]=_[_0xc579('0x14')](this[_0xc579('0xd')],'id');this[_0xc579('0xe')][_0xc579('0x13')]=_0x3684b7;};SmsQueue['prototype'][_0xc579('0x10')]=function(){this['loggedIn']=0x0;this[_0xc579('0x15')]=0x0;for(var _0x59243e=0x0;_0x59243e<this[_0xc579('0xd')]['length'];_0x59243e+=0x1){if(this[_0xc579('0xd')][_0x59243e]['online']){this[_0xc579('0x16')]+=0x1;}if(this[_0xc579('0xd')][_0x59243e]['smsPause']){this['paused']+=0x1;}}this[_0xc579('0x17')]=this[_0xc579('0x16')]-this[_0xc579('0x15')];this[_0xc579('0x17')]=this[_0xc579('0x17')]>=0x0?this[_0xc579('0x17')]:0x0;var _0xbbbe3e={'id':this['id'],'available':this[_0xc579('0x17')],'loggedIn':this[_0xc579('0x16')],'name':this[_0xc579('0x9')],'paused':this['paused'],'waiting':this[_0xc579('0xf')]};var _0x2b7d74=md5(JSON['stringify'](_0xbbbe3e));if(this[_0xc579('0x1')]!==_0x2b7d74){this[_0xc579('0x1')]=_0x2b7d74;io['to'](util[_0xc579('0x18')](_0xc579('0x19'),_0xbbbe3e[_0xc579('0x9')]))[_0xc579('0x1a')](_0xc579('0x1b'),_0xbbbe3e);}};module[_0xc579('0x1c')]=SmsQueue;
\ No newline at end of file
+var _0x6c32=['loggedIn','paused','online','smsPause','available','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','_rr','map','prototype'];(function(_0x6f211e,_0x305987){var _0x3f28ea=function(_0x40cd7d){while(--_0x40cd7d){_0x6f211e['push'](_0x6f211e['shift']());}};_0x3f28ea(++_0x305987);}(_0x6c32,0x6e));var _0x26c3=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x6c32[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x26c3('0x0'));var md5=require(_0x26c3('0x1'));var util=require(_0x26c3('0x2'));var Redis=require(_0x26c3('0x3'));var config=require(_0x26c3('0x4'));config[_0x26c3('0x5')]=_[_0x26c3('0x6')](config[_0x26c3('0x5')],{'host':_0x26c3('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x26c3('0x5')]));function SmsQueue(_0x3f7065){this['id']=_0x3f7065['id']||0x0;this[_0x26c3('0x8')]=_0x3f7065['name']||'';this[_0x26c3('0x9')]=_0x3f7065['timeout']||0xa;this[_0x26c3('0xa')]=_0x3f7065[_0x26c3('0xa')]||_0x26c3('0xb');this[_0x26c3('0xc')]=_0x3f7065[_0x26c3('0xc')];this[_0x26c3('0xd')]={};this[_0x26c3('0xe')]=0x0;this[_0x26c3('0x1')]='';this[_0x26c3('0xf')]();this[_0x26c3('0x10')]();}SmsQueue['prototype']['updateRouting']=function(){var _0x4aa8e2=this['mapAgentsId'][_0x26c3('0x11')];this[_0x26c3('0xd')]=_[_0x26c3('0x12')](this[_0x26c3('0xc')],'id');this['mapAgentsId']['_rr']=_0x4aa8e2;};SmsQueue[_0x26c3('0x13')][_0x26c3('0x10')]=function(){this[_0x26c3('0x14')]=0x0;this[_0x26c3('0x15')]=0x0;for(var _0x17c399=0x0;_0x17c399<this['Agents']['length'];_0x17c399+=0x1){if(this[_0x26c3('0xc')][_0x17c399][_0x26c3('0x16')]){this['loggedIn']+=0x1;}if(this['Agents'][_0x17c399][_0x26c3('0x17')]){this['paused']+=0x1;}}this[_0x26c3('0x18')]=this['loggedIn']-this['paused'];this[_0x26c3('0x18')]=this['available']>=0x0?this[_0x26c3('0x18')]:0x0;var _0x50a3e5={'id':this['id'],'available':this[_0x26c3('0x18')],'loggedIn':this[_0x26c3('0x14')],'name':this[_0x26c3('0x8')],'paused':this[_0x26c3('0x15')],'waiting':this[_0x26c3('0xe')]};var _0x497441=md5(JSON['stringify'](_0x50a3e5));if(this[_0x26c3('0x1')]!==_0x497441){this[_0x26c3('0x1')]=_0x497441;io['to'](util['format']('sms:queue:%s',_0x50a3e5[_0x26c3('0x8')]))['emit']('sms_queue:save',_0x50a3e5);}};module[_0x26c3('0x19')]=SmsQueue;
\ No newline at end of file
index 32d19d3..13f7d49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e87=['loggedIn','length','whatsappPause','paused','available','waiting','stringify','format','whatsapp:queue:%s','whatsapp_queue:save','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','beepall','Agents','updateRealtime','updateRouting','mapAgentsId','map','_rr','prototype'];(function(_0x560448,_0x2c1082){var _0x550276=function(_0x37e949){while(--_0x37e949){_0x560448['push'](_0x560448['shift']());}};_0x550276(++_0x2c1082);}(_0x9e87,0x7e));var _0x79e8=function(_0x10b4b8,_0x450fea){_0x10b4b8=_0x10b4b8-0x0;var _0x424293=_0x9e87[_0x10b4b8];return _0x424293;};'use strict';var _=require(_0x79e8('0x0'));var md5=require(_0x79e8('0x1'));var util=require(_0x79e8('0x2'));var Redis=require(_0x79e8('0x3'));var config=require(_0x79e8('0x4'));config[_0x79e8('0x5')]=_[_0x79e8('0x6')](config[_0x79e8('0x5')],{'host':_0x79e8('0x7'),'port':0x18eb});var io=require(_0x79e8('0x8'))(new Redis(config[_0x79e8('0x5')]));function WhatsappQueue(_0x587584){this['id']=_0x587584['id']||0x0;this[_0x79e8('0x9')]=_0x587584['name']||'';this[_0x79e8('0xa')]=_0x587584[_0x79e8('0xa')]||0xa;this['strategy']=_0x587584['strategy']||_0x79e8('0xb');this['Agents']=_0x587584[_0x79e8('0xc')];this['mapAgentsId']={};this['waiting']=0x0;this['md5']='';this['updateRouting']();this[_0x79e8('0xd')]();}WhatsappQueue['prototype'][_0x79e8('0xe')]=function(){var _0x446c9b=this[_0x79e8('0xf')]['_rr'];this[_0x79e8('0xf')]=_[_0x79e8('0x10')](this[_0x79e8('0xc')],'id');this[_0x79e8('0xf')][_0x79e8('0x11')]=_0x446c9b;};WhatsappQueue[_0x79e8('0x12')][_0x79e8('0xd')]=function(){this[_0x79e8('0x13')]=0x0;this['paused']=0x0;for(var _0x401142=0x0;_0x401142<this[_0x79e8('0xc')][_0x79e8('0x14')];_0x401142+=0x1){if(this[_0x79e8('0xc')][_0x401142]['online']){this[_0x79e8('0x13')]+=0x1;}if(this['Agents'][_0x401142][_0x79e8('0x15')]){this[_0x79e8('0x16')]+=0x1;}}this[_0x79e8('0x17')]=this[_0x79e8('0x13')]-this[_0x79e8('0x16')];this['available']=this['available']>=0x0?this['available']:0x0;var _0xf8a93b={'id':this['id'],'available':this[_0x79e8('0x17')],'loggedIn':this[_0x79e8('0x13')],'name':this[_0x79e8('0x9')],'paused':this[_0x79e8('0x16')],'waiting':this[_0x79e8('0x18')]};var _0x4bfa75=md5(JSON[_0x79e8('0x19')](_0xf8a93b));if(this[_0x79e8('0x1')]!==_0x4bfa75){this[_0x79e8('0x1')]=_0x4bfa75;io['to'](util[_0x79e8('0x1a')](_0x79e8('0x1b'),_0xf8a93b['name']))['emit'](_0x79e8('0x1c'),_0xf8a93b);}};module['exports']=WhatsappQueue;
\ No newline at end of file
+var _0x3302=['waiting','stringify','whatsapp:queue:%s','emit','exports','md5','util','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','updateRealtime','prototype','mapAgentsId','_rr','loggedIn','paused','length','online','whatsappPause','available'];(function(_0xd2055a,_0x121ffd){var _0x429d1a=function(_0x5c838b){while(--_0x5c838b){_0xd2055a['push'](_0xd2055a['shift']());}};_0x429d1a(++_0x121ffd);}(_0x3302,0x149));var _0x2330=function(_0x5e4a4c,_0x1b8d7e){_0x5e4a4c=_0x5e4a4c-0x0;var _0x1afefb=_0x3302[_0x5e4a4c];return _0x1afefb;};'use strict';var _=require('lodash');var md5=require(_0x2330('0x0'));var util=require(_0x2330('0x1'));var Redis=require('ioredis');var config=require(_0x2330('0x2'));config[_0x2330('0x3')]=_[_0x2330('0x4')](config[_0x2330('0x3')],{'host':_0x2330('0x5'),'port':0x18eb});var io=require(_0x2330('0x6'))(new Redis(config[_0x2330('0x3')]));function WhatsappQueue(_0x282680){this['id']=_0x282680['id']||0x0;this[_0x2330('0x7')]=_0x282680[_0x2330('0x7')]||'';this[_0x2330('0x8')]=_0x282680[_0x2330('0x8')]||0xa;this[_0x2330('0x9')]=_0x282680[_0x2330('0x9')]||_0x2330('0xa');this[_0x2330('0xb')]=_0x282680[_0x2330('0xb')];this['mapAgentsId']={};this['waiting']=0x0;this[_0x2330('0x0')]='';this['updateRouting']();this[_0x2330('0xc')]();}WhatsappQueue[_0x2330('0xd')]['updateRouting']=function(){var _0x1f1c68=this[_0x2330('0xe')][_0x2330('0xf')];this[_0x2330('0xe')]=_['map'](this['Agents'],'id');this[_0x2330('0xe')][_0x2330('0xf')]=_0x1f1c68;};WhatsappQueue[_0x2330('0xd')]['updateRealtime']=function(){this[_0x2330('0x10')]=0x0;this[_0x2330('0x11')]=0x0;for(var _0x990359=0x0;_0x990359<this['Agents'][_0x2330('0x12')];_0x990359+=0x1){if(this[_0x2330('0xb')][_0x990359][_0x2330('0x13')]){this[_0x2330('0x10')]+=0x1;}if(this['Agents'][_0x990359][_0x2330('0x14')]){this['paused']+=0x1;}}this['available']=this['loggedIn']-this[_0x2330('0x11')];this[_0x2330('0x15')]=this[_0x2330('0x15')]>=0x0?this[_0x2330('0x15')]:0x0;var _0x5d097d={'id':this['id'],'available':this['available'],'loggedIn':this[_0x2330('0x10')],'name':this[_0x2330('0x7')],'paused':this[_0x2330('0x11')],'waiting':this[_0x2330('0x16')]};var _0x2691e7=md5(JSON[_0x2330('0x17')](_0x5d097d));if(this['md5']!==_0x2691e7){this[_0x2330('0x0')]=_0x2691e7;io['to'](util['format'](_0x2330('0x18'),_0x5d097d[_0x2330('0x7')]))[_0x2330('0x19')]('whatsapp_queue:save',_0x5d097d);}};module[_0x2330('0x1a')]=WhatsappQueue;
\ No newline at end of file
index 3f900db..1f47805 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['isUndefined','initIntervals','updateRealtime','updateRouting','initSmsQueues','smsQueues','initMailQueues','mailQueues','initWhatsappQueues','whatsappQueues','exports','bluebird','util','lodash','../model/interval','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','chatQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','length'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xa9e0[_0xf50820];return _0x2a9b10;};'use strict';var BPromise=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var moment=require('moment');var Agent=require('../model/agent');var Interval=require(_0x0a9e('0x3'));var OpenchannelQueue=require('../model/openchannelQueue');var ChatQueue=require(_0x0a9e('0x4'));var SmsQueue=require(_0x0a9e('0x5'));var MailQueue=require(_0x0a9e('0x6'));var FaxQueue=require(_0x0a9e('0x7'));var WhatsappQueue=require(_0x0a9e('0x8'));var Realtime=function(){this['agents']={};this[_0x0a9e('0x9')]={};this[_0x0a9e('0xa')]={};this[_0x0a9e('0xb')]={};this['smsQueues']={};this['mailQueues']={};this[_0x0a9e('0xc')]={};this['whatsappQueues']={};this['chatQueuesWaitingInteractions']={};this[_0x0a9e('0xd')]={};this[_0x0a9e('0xe')]={};this[_0x0a9e('0xf')]={};this[_0x0a9e('0x10')]={};this[_0x0a9e('0x11')]={};};function freeIsNotKey(_0xbd1168,_0x4a4c56,_0x50dfb2){var _0x527cdd=_['mapKeys'](_0xbd1168,function(_0x273d4d,_0x36471c){return _0x273d4d[_0x50dfb2];});for(var _0xd5b662 in _0x4a4c56){if(_0x4a4c56[_0x0a9e('0x12')](_0xd5b662)){if(!_0x527cdd[_0xd5b662]){delete _0x4a4c56[_0xd5b662];}}}}Realtime[_0x0a9e('0x13')][_0x0a9e('0x14')]=function(_0x5db4b0,_0x4283ce){for(var _0x239b12 in _0x4283ce){if(_0x5db4b0[_0x0a9e('0x12')](_0x239b12)){_0x5db4b0[_0x239b12]=_0x4283ce[_0x239b12];}}};Realtime[_0x0a9e('0x13')][_0x0a9e('0x15')]=function(){var _0x4d5611=this;return function(_0x52a03d){if(_0x52a03d){freeIsNotKey(_0x52a03d,_0x4d5611[_0x0a9e('0x16')],'id');for(var _0x5d0880=0x0,_0x1985b6={},_0x519dfd={};_0x5d0880<_0x52a03d[_0x0a9e('0x17')];_0x5d0880+=0x1){_0x1985b6=_0x52a03d[_0x5d0880];if(_[_0x0a9e('0x18')](_0x4d5611['agents'][_0x1985b6['id']])){_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']]=new Agent(_0x1985b6);}else{_0x4d5611['mergeFromDatabase'](_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']],_0x1985b6);}}}return _0x4d5611[_0x0a9e('0x16')];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x19')]=function(){var _0x31b1ca=this;return function(_0x2eb11f){if(_0x2eb11f){freeIsNotKey(_0x2eb11f,_0x31b1ca[_0x0a9e('0x9')],'id');for(var _0x20559e=0x0,_0x1314ae={},_0x112016={};_0x20559e<_0x2eb11f[_0x0a9e('0x17')];_0x20559e+=0x1){_0x1314ae=_0x2eb11f[_0x20559e];if(_[_0x0a9e('0x18')](_0x31b1ca['intervals'][_0x1314ae['id']])){_0x31b1ca[_0x0a9e('0x9')][_0x1314ae['id']]=new Interval(_0x1314ae);}else{_0x31b1ca[_0x0a9e('0x14')](_0x31b1ca['intervals'][_0x1314ae['id']],_0x1314ae);}}}return _0x31b1ca[_0x0a9e('0x9')];};};Realtime['prototype']['initOpenchannelQueues']=function(){var _0x3a02e1=this;return function(_0x432e56){if(_0x432e56){freeIsNotKey(_0x432e56,_0x3a02e1[_0x0a9e('0xa')],'id');for(var _0x30bae6=0x0,_0x4abc77={},_0xfb6e48={};_0x30bae6<_0x432e56[_0x0a9e('0x17')];_0x30bae6+=0x1){_0x4abc77=_0x432e56[_0x30bae6];if(_[_0x0a9e('0x18')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']])){_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']]=new OpenchannelQueue(_0x4abc77);}else{_0x3a02e1[_0x0a9e('0x14')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']],_0x4abc77);}_0x3a02e1['openchannelQueues'][_0x4abc77['id']]['updateRouting']();_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']][_0x0a9e('0x1a')]();}}return _0x3a02e1[_0x0a9e('0xa')];};};Realtime[_0x0a9e('0x13')]['initChatQueues']=function(){var _0x384319=this;return function(_0x479bc4){if(_0x479bc4){freeIsNotKey(_0x479bc4,_0x384319[_0x0a9e('0xb')],'id');for(var _0x5bfb33=0x0,_0x1dc186={},_0x34dc65={};_0x5bfb33<_0x479bc4[_0x0a9e('0x17')];_0x5bfb33+=0x1){_0x1dc186=_0x479bc4[_0x5bfb33];if(_[_0x0a9e('0x18')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']])){_0x384319[_0x0a9e('0xb')][_0x1dc186['id']]=new ChatQueue(_0x1dc186);}else{_0x384319[_0x0a9e('0x14')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']],_0x1dc186);}_0x384319['chatQueues'][_0x1dc186['id']][_0x0a9e('0x1b')]();_0x384319[_0x0a9e('0xb')][_0x1dc186['id']][_0x0a9e('0x1a')]();}}return _0x384319[_0x0a9e('0xb')];};};Realtime['prototype'][_0x0a9e('0x1c')]=function(){var _0x40e7a3=this;return function(_0x1843b2){if(_0x1843b2){freeIsNotKey(_0x1843b2,_0x40e7a3[_0x0a9e('0x1d')],'id');for(var _0x58b06f=0x0,_0x563b45={},_0x296f41={};_0x58b06f<_0x1843b2[_0x0a9e('0x17')];_0x58b06f+=0x1){_0x563b45=_0x1843b2[_0x58b06f];if(_[_0x0a9e('0x18')](_0x40e7a3['smsQueues'][_0x563b45['id']])){_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']]=new SmsQueue(_0x563b45);}else{_0x40e7a3['mergeFromDatabase'](_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']],_0x563b45);}_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1b')]();_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1a')]();}}return _0x40e7a3['smsQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x1e')]=function(){var _0x40cb85=this;return function(_0x2da5c0){if(_0x2da5c0){freeIsNotKey(_0x2da5c0,_0x40cb85[_0x0a9e('0x1f')],'id');for(var _0x409319=0x0,_0x332d35={},_0x39e565={};_0x409319<_0x2da5c0['length'];_0x409319+=0x1){_0x332d35=_0x2da5c0[_0x409319];if(_[_0x0a9e('0x18')](_0x40cb85['mailQueues'][_0x332d35['id']])){_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]=new MailQueue(_0x332d35);}else{_0x40cb85[_0x0a9e('0x14')](_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']],_0x332d35);}_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]['updateRouting']();_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']][_0x0a9e('0x1a')]();}}return _0x40cb85[_0x0a9e('0x1f')];};};Realtime[_0x0a9e('0x13')]['initFaxQueues']=function(){var _0x54135e=this;return function(_0x1e8694){if(_0x1e8694){freeIsNotKey(_0x1e8694,_0x54135e['faxQueues'],'id');for(var _0x24936a=0x0,_0x3d9717={},_0x381c37={};_0x24936a<_0x1e8694[_0x0a9e('0x17')];_0x24936a+=0x1){_0x3d9717=_0x1e8694[_0x24936a];if(_['isUndefined'](_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']])){_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]=new FaxQueue(_0x3d9717);}else{_0x54135e[_0x0a9e('0x14')](_0x54135e['faxQueues'][_0x3d9717['id']],_0x3d9717);}_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']][_0x0a9e('0x1b')]();_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]['updateRealtime']();}}return _0x54135e['faxQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x20')]=function(){var _0x5adda1=this;return function(_0x2b814e){if(_0x2b814e){freeIsNotKey(_0x2b814e,_0x5adda1[_0x0a9e('0x21')],'id');for(var _0x2e1b3a=0x0,_0x148f55={},_0x4b38d9={};_0x2e1b3a<_0x2b814e['length'];_0x2e1b3a+=0x1){_0x148f55=_0x2b814e[_0x2e1b3a];if(_[_0x0a9e('0x18')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']])){_0x5adda1['whatsappQueues'][_0x148f55['id']]=new WhatsappQueue(_0x148f55);}else{_0x5adda1[_0x0a9e('0x14')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']],_0x148f55);}_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']]['updateRouting']();_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']][_0x0a9e('0x1a')]();}}return _0x5adda1[_0x0a9e('0x21')];};};module[_0x0a9e('0x22')]=Realtime;
\ No newline at end of file
+var _0xa9e0=['isUndefined','initIntervals','updateRealtime','updateRouting','initSmsQueues','smsQueues','initMailQueues','mailQueues','initWhatsappQueues','whatsappQueues','exports','bluebird','util','lodash','../model/interval','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','chatQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','length'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xa9e0[_0xf71120];return _0xbe2fd3;};'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 f5d6027..cca4786 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa69b=['AddTagsToChatInteraction','addTagsToChatInteraction','update','Request','updateChatInteraction','addTags'];(function(_0x189994,_0x2ee8e8){var _0x26367d=function(_0x489c35){while(--_0x489c35){_0x189994['push'](_0x189994['shift']());}};_0x26367d(++_0x2ee8e8);}(_0xa69b,0x13a));var _0xba69=function(_0x5453f4,_0x37874d){_0x5453f4=_0x5453f4-0x0;var _0x228ba6=_0xa69b[_0x5453f4];return _0x228ba6;};'use strict';var client=require('../client');exports[_0xba69('0x0')]=function(_0x2123d5,_0x267ac6){return client[_0xba69('0x1')]('UpdateChatInteraction',{'body':_0x267ac6,'options':{'where':{'id':_0x2123d5}},'log':_0xba69('0x2')});};exports[_0xba69('0x3')]=function(_0x1785b2,_0x241e87){return client['Request'](_0xba69('0x4'),{'body':_0x241e87,'options':{'where':{'id':_0x1785b2}},'log':_0xba69('0x5')});};
\ No newline at end of file
+var _0xc1d7=['addTags','Request','AddTagsToChatInteraction','../client','update','updateChatInteraction'];(function(_0x58fa16,_0x2f1c6d){var _0x193736=function(_0x3d58f7){while(--_0x3d58f7){_0x58fa16['push'](_0x58fa16['shift']());}};_0x193736(++_0x2f1c6d);}(_0xc1d7,0x69));var _0x7c1d=function(_0x2d72ab,_0x5a97f5){_0x2d72ab=_0x2d72ab-0x0;var _0x256423=_0xc1d7[_0x2d72ab];return _0x256423;};'use strict';var client=require(_0x7c1d('0x0'));exports[_0x7c1d('0x1')]=function(_0x1c2de4,_0x39b5e8){return client['Request']('UpdateChatInteraction',{'body':_0x39b5e8,'options':{'where':{'id':_0x1c2de4}},'log':_0x7c1d('0x2')});};exports[_0x7c1d('0x3')]=function(_0x5cdd38,_0x41345e){return client[_0x7c1d('0x4')](_0x7c1d('0x5'),{'body':_0x41345e,'options':{'where':{'id':_0x5cdd38}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index 0448ead..463a200 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3013=['Request','CreateChatMessage','createChatMessage','create'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3013,0x1b3));var _0x3301=function(_0x583d4b,_0x5604e9){_0x583d4b=_0x583d4b-0x0;var _0x3384ab=_0x3013[_0x583d4b];return _0x3384ab;};'use strict';var client=require('../client');exports[_0x3301('0x0')]=function(_0x3c7247){return client[_0x3301('0x1')](_0x3301('0x2'),{'body':_0x3c7247,'log':_0x3301('0x3')});};
\ No newline at end of file
+var _0xf75b=['createChatMessage','Request','CreateChatMessage'];(function(_0x51cc37,_0x298fa9){var _0x4648f0=function(_0x4faf8a){while(--_0x4faf8a){_0x51cc37['push'](_0x51cc37['shift']());}};_0x4648f0(++_0x298fa9);}(_0xf75b,0x1e1));var _0xbf75=function(_0x2f5eff,_0x1a2508){_0x2f5eff=_0x2f5eff-0x0;var _0x28fa46=_0xf75b[_0x2f5eff];return _0x28fa46;};'use strict';var client=require('../client');exports['create']=function(_0x211b4b){return client[_0xbf75('0x0')](_0xbf75('0x1'),{'body':_0x211b4b,'log':_0xbf75('0x2')});};
\ No newline at end of file
index e609167..a8f7cf6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbecd=['strategy','User','Agents','name','online','chatPause','getChatQueues','../client','Request','GetChatQueue','timeout'];(function(_0x22cfee,_0x2d2f6a){var _0x203108=function(_0x359a7c){while(--_0x359a7c){_0x22cfee['push'](_0x22cfee['shift']());}};_0x203108(++_0x2d2f6a);}(_0xbecd,0x6a));var _0xdbec=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xbecd[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0xdbec('0x0'));exports['getChatQueues']=function(){return function(){return client[_0xdbec('0x1')](_0xdbec('0x2'),{'options':{'raw':![],'attributes':['id','name',_0xdbec('0x3'),_0xdbec('0x4')],'include':[{'model':_0xdbec('0x5'),'as':_0xdbec('0x6'),'attributes':['id',_0xdbec('0x7'),_0xdbec('0x8'),_0xdbec('0x9')]}]},'log':_0xdbec('0xa')});};};
\ No newline at end of file
+var _0x7f90=['chatPause','../client','getChatQueues','Request','GetChatQueue','name','User','Agents','online'];(function(_0x4394b6,_0x12357f){var _0x360244=function(_0x5689a1){while(--_0x5689a1){_0x4394b6['push'](_0x4394b6['shift']());}};_0x360244(++_0x12357f);}(_0x7f90,0xf4));var _0x07f9=function(_0x5b7e57,_0xc38d2a){_0x5b7e57=_0x5b7e57-0x0;var _0x5bfd74=_0x7f90[_0x5b7e57];return _0x5bfd74;};'use strict';var client=require(_0x07f9('0x0'));exports[_0x07f9('0x1')]=function(){return function(){return client[_0x07f9('0x2')](_0x07f9('0x3'),{'options':{'raw':![],'attributes':['id',_0x07f9('0x4'),'timeout','strategy'],'include':[{'model':_0x07f9('0x5'),'as':_0x07f9('0x6'),'attributes':['id','name',_0x07f9('0x7'),_0x07f9('0x8')]}]},'log':_0x07f9('0x1')});};};
\ No newline at end of file
index d344231..9fbaa4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0328=['Request','CreateChatQueueReport','update','UpdateChatQueueReport','../client','create'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0328,0x172));var _0x8032=function(_0x4a9dee,_0x2d5ff2){_0x4a9dee=_0x4a9dee-0x0;var _0x3ceafe=_0x0328[_0x4a9dee];return _0x3ceafe;};'use strict';var client=require(_0x8032('0x0'));exports[_0x8032('0x1')]=function(_0x2bdc4f){return client[_0x8032('0x2')](_0x8032('0x3'),{'body':_0x2bdc4f,'log':_0x8032('0x3')});};exports[_0x8032('0x4')]=function(_0x598c53,_0x92dbf0){return client[_0x8032('0x2')](_0x8032('0x5'),{'body':_0x92dbf0,'options':{'where':{'uniqueid':_0x598c53},'order':[['id','DESC']],'limit':0x1},'log':_0x8032('0x5')});};
\ No newline at end of file
+var _0x47c7=['DESC','../client','Request','CreateChatQueueReport','update','UpdateChatQueueReport'];(function(_0x24e0c9,_0x284109){var _0x4448f0=function(_0x576980){while(--_0x576980){_0x24e0c9['push'](_0x24e0c9['shift']());}};_0x4448f0(++_0x284109);}(_0x47c7,0x1ab));var _0x747c=function(_0x3c504b,_0x437693){_0x3c504b=_0x3c504b-0x0;var _0x2e5354=_0x47c7[_0x3c504b];return _0x2e5354;};'use strict';var client=require(_0x747c('0x0'));exports['create']=function(_0x1e4b3d){return client[_0x747c('0x1')]('CreateChatQueueReport',{'body':_0x1e4b3d,'log':_0x747c('0x2')});};exports[_0x747c('0x3')]=function(_0x51f4bc,_0x3313cd){return client[_0x747c('0x1')](_0x747c('0x4'),{'body':_0x3313cd,'options':{'where':{'uniqueid':_0x51f4bc},'order':[['id',_0x747c('0x5')]],'limit':0x1},'log':'UpdateChatQueueReport'});};
\ No newline at end of file
index 19a45aa..4649bfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x1c208e,_0x2a0a5b){var _0x5104ff=function(_0x3ca41f){while(--_0x3ca41f){_0x1c208e['push'](_0x1c208e['shift']());}};_0x5104ff(++_0x2a0a5b);}(_0x7a54,0x106));var _0x47a5=function(_0x31baa8,_0xcc4fba){_0x31baa8=_0x31baa8-0x0;var _0x393767=_0x7a54[_0x31baa8];return _0x393767;};'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(_0x44d19b,_0x4ad6ea){var _0x5e42e6=function(_0x4d9430){while(--_0x4d9430){_0x44d19b['push'](_0x44d19b['shift']());}};_0x5e42e6(++_0x4ad6ea);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'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 c88a0d9..27200be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa013=['CreateFaxMessage','createFaxMessage','create','Request'];(function(_0x46bf05,_0x2b1031){var _0x58cf18=function(_0x3a5761){while(--_0x3a5761){_0x46bf05['push'](_0x46bf05['shift']());}};_0x58cf18(++_0x2b1031);}(_0xa013,0xa6));var _0x3a01=function(_0x1dbaf7,_0x3d05b3){_0x1dbaf7=_0x1dbaf7-0x0;var _0x593f05=_0xa013[_0x1dbaf7];return _0x593f05;};'use strict';var client=require('../client');exports[_0x3a01('0x0')]=function(_0x1199f7){return client[_0x3a01('0x1')](_0x3a01('0x2'),{'body':_0x1199f7,'log':_0x3a01('0x3')});};
\ No newline at end of file
+var _0xd7f8=['../client','create','Request','CreateFaxMessage','createFaxMessage'];(function(_0x5c8b25,_0x57f3a7){var _0x5f2f79=function(_0x567a5b){while(--_0x567a5b){_0x5c8b25['push'](_0x5c8b25['shift']());}};_0x5f2f79(++_0x57f3a7);}(_0xd7f8,0x109));var _0x8d7f=function(_0xbad150,_0x2ff29d){_0xbad150=_0xbad150-0x0;var _0xa8a34=_0xd7f8[_0xbad150];return _0xa8a34;};'use strict';var client=require(_0x8d7f('0x0'));exports[_0x8d7f('0x1')]=function(_0x15cf39){return client[_0x8d7f('0x2')](_0x8d7f('0x3'),{'body':_0x15cf39,'log':_0x8d7f('0x4')});};
\ No newline at end of file
index 1fa1257..003479b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90d3=['strategy','Agents','online','faxPause','getFaxQueues','GetFaxQueue','name','timeout'];(function(_0x2b3d1b,_0x54233e){var _0x95d237=function(_0x53bed9){while(--_0x53bed9){_0x2b3d1b['push'](_0x2b3d1b['shift']());}};_0x95d237(++_0x54233e);}(_0x90d3,0x6d));var _0x390d=function(_0x4bb581,_0x6f7037){_0x4bb581=_0x4bb581-0x0;var _0x316bf5=_0x90d3[_0x4bb581];return _0x316bf5;};'use strict';var client=require('../client');exports['getFaxQueues']=function(){return function(){return client['Request'](_0x390d('0x0'),{'options':{'raw':![],'attributes':['id',_0x390d('0x1'),_0x390d('0x2'),_0x390d('0x3')],'include':[{'model':'User','as':_0x390d('0x4'),'attributes':['id','name',_0x390d('0x5'),_0x390d('0x6')]}]},'log':_0x390d('0x7')});};};
\ No newline at end of file
+var _0xdf63=['strategy','User','Agents','online','faxPause','getFaxQueues','Request','GetFaxQueue','name','timeout'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdf63,0x181));var _0x3df6=function(_0x293e7a,_0x1792a2){_0x293e7a=_0x293e7a-0x0;var _0xb78342=_0xdf63[_0x293e7a];return _0xb78342;};'use strict';var client=require('../client');exports[_0x3df6('0x0')]=function(){return function(){return client[_0x3df6('0x1')](_0x3df6('0x2'),{'options':{'raw':![],'attributes':['id',_0x3df6('0x3'),_0x3df6('0x4'),_0x3df6('0x5')],'include':[{'model':_0x3df6('0x6'),'as':_0x3df6('0x7'),'attributes':['id','name',_0x3df6('0x8'),_0x3df6('0x9')]}]},'log':'getFaxQueues'});};};
\ No newline at end of file
index dda64a3..e3347bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1df=['CreateFaxQueueReport','update','UpdateFaxQueueReport','DESC','../client','Request'];(function(_0x5467a3,_0xe32748){var _0x1dd8b4=function(_0x50ec7d){while(--_0x50ec7d){_0x5467a3['push'](_0x5467a3['shift']());}};_0x1dd8b4(++_0xe32748);}(_0xc1df,0x6a));var _0xfc1d=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xc1df[_0x42cae2];return _0x5f256f;};'use strict';var client=require(_0xfc1d('0x0'));exports['create']=function(_0x1103e1){return client[_0xfc1d('0x1')]('CreateFaxQueueReport',{'body':_0x1103e1,'log':_0xfc1d('0x2')});};exports[_0xfc1d('0x3')]=function(_0x1fe11a,_0x469475){return client[_0xfc1d('0x1')](_0xfc1d('0x4'),{'body':_0x469475,'options':{'where':{'uniqueid':_0x1fe11a},'order':[['id',_0xfc1d('0x5')]],'limit':0x1},'log':_0xfc1d('0x4')});};
\ No newline at end of file
+var _0x0976=['UpdateFaxQueueReport','../client','create','Request','CreateFaxQueueReport','update'];(function(_0x490fce,_0x3e18a8){var _0x158a90=function(_0x1f73b0){while(--_0x1f73b0){_0x490fce['push'](_0x490fce['shift']());}};_0x158a90(++_0x3e18a8);}(_0x0976,0xcd));var _0x6097=function(_0x50003a,_0x3d43d1){_0x50003a=_0x50003a-0x0;var _0x54c194=_0x0976[_0x50003a];return _0x54c194;};'use strict';var client=require(_0x6097('0x0'));exports[_0x6097('0x1')]=function(_0x4dd876){return client[_0x6097('0x2')](_0x6097('0x3'),{'body':_0x4dd876,'log':_0x6097('0x3')});};exports[_0x6097('0x4')]=function(_0x4fee05,_0x5be00a){return client['Request'](_0x6097('0x5'),{'body':_0x5be00a,'options':{'where':{'uniqueid':_0x4fee05},'order':[['id','DESC']],'limit':0x1},'log':_0x6097('0x5')});};
\ No newline at end of file
index 7f9ca47..34464bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0a0=['getIntervals','Request','GetInterval','Interval','interval'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xa0a0,0x169));var _0x0a0a=function(_0x4cf0b7,_0x560029){_0x4cf0b7=_0x4cf0b7-0x0;var _0x545f10=_0xa0a0[_0x4cf0b7];return _0x545f10;};'use strict';var client=require('../client');exports['getIntervals']=function(){return function(){return client[_0x0a0a('0x0')](_0x0a0a('0x1'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id','name'],'include':[{'model':_0x0a0a('0x2'),'as':'Intervals','attributes':['id','name',_0x0a0a('0x3')]}]},'log':_0x0a0a('0x4')});};};
\ No newline at end of file
+var _0x0cd0=['Intervals','interval','getIntervals','../client','Request','name','Interval'];(function(_0x2ab17c,_0x3b66fa){var _0x5c4fef=function(_0x1f0ad5){while(--_0x1f0ad5){_0x2ab17c['push'](_0x2ab17c['shift']());}};_0x5c4fef(++_0x3b66fa);}(_0x0cd0,0x106));var _0x00cd=function(_0x4c1f8b,_0x38dc29){_0x4c1f8b=_0x4c1f8b-0x0;var _0x522fd4=_0x0cd0[_0x4c1f8b];return _0x522fd4;};'use strict';var client=require(_0x00cd('0x0'));exports['getIntervals']=function(){return function(){return client[_0x00cd('0x1')]('GetInterval',{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x00cd('0x2')],'include':[{'model':_0x00cd('0x3'),'as':_0x00cd('0x4'),'attributes':['id',_0x00cd('0x2'),_0x00cd('0x5')]}]},'log':_0x00cd('0x6')});};};
\ No newline at end of file
index e3df03e..159846b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1967=['Request','UpdateMailInteraction','updateMailInteraction','addTags','addTagsToChatInteraction','update'];(function(_0xafa36e,_0x4bddd7){var _0x241cfb=function(_0x651cf3){while(--_0x651cf3){_0xafa36e['push'](_0xafa36e['shift']());}};_0x241cfb(++_0x4bddd7);}(_0x1967,0x173));var _0x7196=function(_0x3added,_0x4f0860){_0x3added=_0x3added-0x0;var _0x269c95=_0x1967[_0x3added];return _0x269c95;};'use strict';var client=require('../client');exports[_0x7196('0x0')]=function(_0xdb72bb,_0x4d0a98){return client[_0x7196('0x1')](_0x7196('0x2'),{'body':_0x4d0a98,'options':{'where':{'id':_0xdb72bb}},'log':_0x7196('0x3')});};exports[_0x7196('0x4')]=function(_0x1aaddd,_0x458ae8){return client[_0x7196('0x1')]('AddTagsToMailInteraction',{'body':_0x458ae8,'options':{'where':{'id':_0x1aaddd}},'log':_0x7196('0x5')});};
\ No newline at end of file
+var _0xeb3b=['../client','update','Request','addTags','AddTagsToMailInteraction','addTagsToChatInteraction'];(function(_0x236209,_0x32bb45){var _0x27b20c=function(_0x430e33){while(--_0x430e33){_0x236209['push'](_0x236209['shift']());}};_0x27b20c(++_0x32bb45);}(_0xeb3b,0x19e));var _0xbeb3=function(_0x5e8fc,_0x1ccc06){_0x5e8fc=_0x5e8fc-0x0;var _0x41c58c=_0xeb3b[_0x5e8fc];return _0x41c58c;};'use strict';var client=require(_0xbeb3('0x0'));exports[_0xbeb3('0x1')]=function(_0xc5aaa3,_0x33e049){return client[_0xbeb3('0x2')]('UpdateMailInteraction',{'body':_0x33e049,'options':{'where':{'id':_0xc5aaa3}},'log':'updateMailInteraction'});};exports[_0xbeb3('0x3')]=function(_0x5b0e3b,_0x2e8ce3){return client['Request'](_0xbeb3('0x4'),{'body':_0x2e8ce3,'options':{'where':{'id':_0x5b0e3b}},'log':_0xbeb3('0x5')});};
\ No newline at end of file
index 2b7da39..b2e85b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a23=['CreateMailMessage','createMailMessage','../client','create','Request'];(function(_0x4b09e1,_0x1fb586){var _0x262f6e=function(_0x5f5500){while(--_0x5f5500){_0x4b09e1['push'](_0x4b09e1['shift']());}};_0x262f6e(++_0x1fb586);}(_0x5a23,0x70));var _0x35a2=function(_0x37771d,_0x135371){_0x37771d=_0x37771d-0x0;var _0x34b0b5=_0x5a23[_0x37771d];return _0x34b0b5;};'use strict';var client=require(_0x35a2('0x0'));exports[_0x35a2('0x1')]=function(_0x5e6dd0){return client[_0x35a2('0x2')](_0x35a2('0x3'),{'body':_0x5e6dd0,'log':_0x35a2('0x4')});};
\ No newline at end of file
+var _0x9afc=['../client','Request','CreateMailMessage','createMailMessage'];(function(_0x57f3c5,_0x56ca4b){var _0x5af3f0=function(_0xa30d6f){while(--_0xa30d6f){_0x57f3c5['push'](_0x57f3c5['shift']());}};_0x5af3f0(++_0x56ca4b);}(_0x9afc,0x184));var _0xc9af=function(_0x1cd23d,_0xec4ea5){_0x1cd23d=_0x1cd23d-0x0;var _0x5e8ad5=_0x9afc[_0x1cd23d];return _0x5e8ad5;};'use strict';var client=require(_0xc9af('0x0'));exports['create']=function(_0x254126){return client[_0xc9af('0x1')](_0xc9af('0x2'),{'body':_0x254126,'log':_0xc9af('0x3')});};
\ No newline at end of file
index 81ec6bc..65d70db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31bc=['getMailQueues','Request','GetMailQueue','name','timeout','strategy','mailPause'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x31bc,0x1e3));var _0xc31b=function(_0x46c86a,_0x4c5383){_0x46c86a=_0x46c86a-0x0;var _0x7ba571=_0x31bc[_0x46c86a];return _0x7ba571;};'use strict';var client=require('../client');exports[_0xc31b('0x0')]=function(){return function(){return client[_0xc31b('0x1')](_0xc31b('0x2'),{'options':{'raw':![],'attributes':['id',_0xc31b('0x3'),_0xc31b('0x4'),_0xc31b('0x5')],'include':[{'model':'User','as':'Agents','attributes':['id','name','online',_0xc31b('0x6')]}]},'log':_0xc31b('0x0')});};};
\ No newline at end of file
+var _0x679d=['getMailQueues','Request','name','strategy','User','online','mailPause','../client'];(function(_0x2949b3,_0x3f7950){var _0x1094e3=function(_0x254a82){while(--_0x254a82){_0x2949b3['push'](_0x2949b3['shift']());}};_0x1094e3(++_0x3f7950);}(_0x679d,0xcf));var _0xd679=function(_0x21d48f,_0x28d44b){_0x21d48f=_0x21d48f-0x0;var _0x5f0127=_0x679d[_0x21d48f];return _0x5f0127;};'use strict';var client=require(_0xd679('0x0'));exports[_0xd679('0x1')]=function(){return function(){return client[_0xd679('0x2')]('GetMailQueue',{'options':{'raw':![],'attributes':['id',_0xd679('0x3'),'timeout',_0xd679('0x4')],'include':[{'model':_0xd679('0x5'),'as':'Agents','attributes':['id',_0xd679('0x3'),_0xd679('0x6'),_0xd679('0x7')]}]},'log':_0xd679('0x1')});};};
\ No newline at end of file
index e080854..611e717 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ea2=['CreateMailQueueReport','update','DESC','UpdateMailQueueReport','../client','create','Request'];(function(_0x443304,_0x1d8107){var _0x374f7e=function(_0x71c485){while(--_0x71c485){_0x443304['push'](_0x443304['shift']());}};_0x374f7e(++_0x1d8107);}(_0x2ea2,0x6d));var _0x22ea=function(_0xf27f31,_0x637e75){_0xf27f31=_0xf27f31-0x0;var _0x50958c=_0x2ea2[_0xf27f31];return _0x50958c;};'use strict';var client=require(_0x22ea('0x0'));exports[_0x22ea('0x1')]=function(_0x14fd49){return client[_0x22ea('0x2')](_0x22ea('0x3'),{'body':_0x14fd49,'log':_0x22ea('0x3')});};exports[_0x22ea('0x4')]=function(_0x2e8463,_0x273210){return client[_0x22ea('0x2')]('UpdateMailQueueReport',{'body':_0x273210,'options':{'where':{'uniqueid':_0x2e8463},'order':[['id',_0x22ea('0x5')]],'limit':0x1},'log':_0x22ea('0x6')});};
\ No newline at end of file
+var _0x5bb3=['create','CreateMailQueueReport','update','Request','UpdateMailQueueReport','DESC','../client'];(function(_0x1a4861,_0x510d80){var _0x55c004=function(_0x5c8dd0){while(--_0x5c8dd0){_0x1a4861['push'](_0x1a4861['shift']());}};_0x55c004(++_0x510d80);}(_0x5bb3,0xc3));var _0x35bb=function(_0x4465f9,_0xaa65b7){_0x4465f9=_0x4465f9-0x0;var _0x4a78ba=_0x5bb3[_0x4465f9];return _0x4a78ba;};'use strict';var client=require(_0x35bb('0x0'));exports[_0x35bb('0x1')]=function(_0x140330){return client['Request'](_0x35bb('0x2'),{'body':_0x140330,'log':_0x35bb('0x2')});};exports[_0x35bb('0x3')]=function(_0x1c173d,_0x424f87){return client[_0x35bb('0x4')](_0x35bb('0x5'),{'body':_0x424f87,'options':{'where':{'uniqueid':_0x1c173d},'order':[['id',_0x35bb('0x6')]],'limit':0x1},'log':_0x35bb('0x5')});};
\ No newline at end of file
index 2b45072..e078117 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2594=['../client','update','UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTags','Request','addTagsToChatInteraction'];(function(_0x1e7345,_0x18bcce){var _0x33017c=function(_0x2b274f){while(--_0x2b274f){_0x1e7345['push'](_0x1e7345['shift']());}};_0x33017c(++_0x18bcce);}(_0x2594,0xd2));var _0x4259=function(_0xf01f65,_0x3b8c12){_0xf01f65=_0xf01f65-0x0;var _0x3cd81f=_0x2594[_0xf01f65];return _0x3cd81f;};'use strict';var client=require(_0x4259('0x0'));exports[_0x4259('0x1')]=function(_0xdd12c0,_0x22086c){return client['Request'](_0x4259('0x2'),{'body':_0x22086c,'options':{'where':{'id':_0xdd12c0}},'log':_0x4259('0x3')});};exports[_0x4259('0x4')]=function(_0x3947b9,_0x11762f){return client[_0x4259('0x5')]('AddTagsToOpenchannelInteraction',{'body':_0x11762f,'options':{'where':{'id':_0x3947b9}},'log':_0x4259('0x6')});};
\ No newline at end of file
+var _0xb07a=['updateOpenchannelInteraction','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','Request','UpdateOpenchannelInteraction'];(function(_0x2ec886,_0xc57a39){var _0x3387bd=function(_0x391590){while(--_0x391590){_0x2ec886['push'](_0x2ec886['shift']());}};_0x3387bd(++_0xc57a39);}(_0xb07a,0x120));var _0xab07=function(_0xa3400,_0x3a980a){_0xa3400=_0xa3400-0x0;var _0x33dba2=_0xb07a[_0xa3400];return _0x33dba2;};'use strict';var client=require('../client');exports['update']=function(_0x42bf21,_0x50a798){return client[_0xab07('0x0')](_0xab07('0x1'),{'body':_0x50a798,'options':{'where':{'id':_0x42bf21}},'log':_0xab07('0x2')});};exports['addTags']=function(_0x2ea5c3,_0x4104b1){return client['Request'](_0xab07('0x3'),{'body':_0x4104b1,'options':{'where':{'id':_0x2ea5c3}},'log':_0xab07('0x4')});};
\ No newline at end of file
index 0c6406e..c4377df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebb2=['create','Request','createOpenchannelMessage'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xebb2,0x16e));var _0x2ebb=function(_0x3d3fe6,_0x635eb){_0x3d3fe6=_0x3d3fe6-0x0;var _0x424410=_0xebb2[_0x3d3fe6];return _0x424410;};'use strict';var client=require('../client');exports[_0x2ebb('0x0')]=function(_0x2821ec){return client[_0x2ebb('0x1')]('CreateOpenchannelMessage',{'body':_0x2821ec,'log':_0x2ebb('0x2')});};
\ No newline at end of file
+var _0x7d4c=['createOpenchannelMessage','../client','create'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x7d4c,0x11e));var _0xc7d4=function(_0xcaf223,_0xd39f07){_0xcaf223=_0xcaf223-0x0;var _0x17e00d=_0x7d4c[_0xcaf223];return _0x17e00d;};'use strict';var client=require(_0xc7d4('0x0'));exports[_0xc7d4('0x1')]=function(_0xc6b8bd){return client['Request']('CreateOpenchannelMessage',{'body':_0xc6b8bd,'log':_0xc7d4('0x2')});};
\ No newline at end of file
index 7b5da70..0710a93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08a3=['openchannelPause','getOpenchannelQueues','GetOpenchannelQueue','timeout','Agents','name','online'];(function(_0x2c45ef,_0x3fb172){var _0x418d8e=function(_0x5828c6){while(--_0x5828c6){_0x2c45ef['push'](_0x2c45ef['shift']());}};_0x418d8e(++_0x3fb172);}(_0x08a3,0x1ad));var _0x308a=function(_0x5ef2d2,_0x34f91d){_0x5ef2d2=_0x5ef2d2-0x0;var _0x59897e=_0x08a3[_0x5ef2d2];return _0x59897e;};'use strict';var client=require('../client');exports['getOpenchannelQueues']=function(){return function(){return client['Request'](_0x308a('0x0'),{'options':{'raw':![],'attributes':['id','name',_0x308a('0x1'),'strategy'],'include':[{'model':'User','as':_0x308a('0x2'),'attributes':['id',_0x308a('0x3'),_0x308a('0x4'),_0x308a('0x5')]}]},'log':_0x308a('0x6')});};};
\ No newline at end of file
+var _0xfc90=['Agents','online','getOpenchannelQueues','GetOpenchannelQueue','name','strategy','User'];(function(_0x4f096e,_0x30d3c3){var _0x4a33ce=function(_0x107ba6){while(--_0x107ba6){_0x4f096e['push'](_0x4f096e['shift']());}};_0x4a33ce(++_0x30d3c3);}(_0xfc90,0xf8));var _0x0fc9=function(_0x3771b5,_0x3e1130){_0x3771b5=_0x3771b5-0x0;var _0x55f532=_0xfc90[_0x3771b5];return _0x55f532;};'use strict';var client=require('../client');exports['getOpenchannelQueues']=function(){return function(){return client['Request'](_0x0fc9('0x0'),{'options':{'raw':![],'attributes':['id',_0x0fc9('0x1'),'timeout',_0x0fc9('0x2')],'include':[{'model':_0x0fc9('0x3'),'as':_0x0fc9('0x4'),'attributes':['id',_0x0fc9('0x1'),_0x0fc9('0x5'),'openchannelPause']}]},'log':_0x0fc9('0x6')});};};
\ No newline at end of file
index be2b810..760ab5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30a6=['DESC','UpdateOpenchannelQueueReport','Request','CreateOpenchannelQueueReport','update'];(function(_0x5f46e7,_0x62f9f8){var _0x567e95=function(_0x5cb693){while(--_0x5cb693){_0x5f46e7['push'](_0x5f46e7['shift']());}};_0x567e95(++_0x62f9f8);}(_0x30a6,0x1ab));var _0x630a=function(_0x1158c4,_0x2505ee){_0x1158c4=_0x1158c4-0x0;var _0x52ac5b=_0x30a6[_0x1158c4];return _0x52ac5b;};'use strict';var client=require('../client');exports['create']=function(_0x42ee58){return client[_0x630a('0x0')]('CreateOpenchannelQueueReport',{'body':_0x42ee58,'log':_0x630a('0x1')});};exports[_0x630a('0x2')]=function(_0x6885c8,_0x573d35){return client['Request']('UpdateOpenchannelQueueReport',{'body':_0x573d35,'options':{'where':{'uniqueid':_0x6885c8},'order':[['id',_0x630a('0x3')]],'limit':0x1},'log':_0x630a('0x4')});};
\ No newline at end of file
+var _0x39aa=['UpdateOpenchannelQueueReport','../client','create','Request','CreateOpenchannelQueueReport','update'];(function(_0x3899d1,_0x4aa04c){var _0xeb4a7d=function(_0x3ea5ee){while(--_0x3ea5ee){_0x3899d1['push'](_0x3899d1['shift']());}};_0xeb4a7d(++_0x4aa04c);}(_0x39aa,0x11b));var _0xa39a=function(_0x3ba3c0,_0x129464){_0x3ba3c0=_0x3ba3c0-0x0;var _0x574ae9=_0x39aa[_0x3ba3c0];return _0x574ae9;};'use strict';var client=require(_0xa39a('0x0'));exports[_0xa39a('0x1')]=function(_0x5ce203){return client[_0xa39a('0x2')](_0xa39a('0x3'),{'body':_0x5ce203,'log':_0xa39a('0x3')});};exports[_0xa39a('0x4')]=function(_0x46d88f,_0x42be13){return client['Request']('UpdateOpenchannelQueueReport',{'body':_0x42be13,'options':{'where':{'uniqueid':_0x46d88f},'order':[['id','DESC']],'limit':0x1},'log':_0xa39a('0x5')});};
\ No newline at end of file
index c37b55b..e6d3031 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb94=['addTagsToSmsInteraction','update','Request','UpdateSmsInteraction','updateSmsInteraction','addTags'];(function(_0x240fb9,_0x23b686){var _0x7f7cfc=function(_0x522f47){while(--_0x522f47){_0x240fb9['push'](_0x240fb9['shift']());}};_0x7f7cfc(++_0x23b686);}(_0xdb94,0xe5));var _0x4db9=function(_0x5a38ec,_0x5a1774){_0x5a38ec=_0x5a38ec-0x0;var _0x27c146=_0xdb94[_0x5a38ec];return _0x27c146;};'use strict';var client=require('../client');exports[_0x4db9('0x0')]=function(_0x1aa3d0,_0x5edca0){return client[_0x4db9('0x1')](_0x4db9('0x2'),{'body':_0x5edca0,'options':{'where':{'id':_0x1aa3d0}},'log':_0x4db9('0x3')});};exports[_0x4db9('0x4')]=function(_0x1f05d4,_0x592097){return client[_0x4db9('0x1')]('AddTagsToSmsInteraction',{'body':_0x592097,'options':{'where':{'id':_0x1f05d4}},'log':_0x4db9('0x5')});};
\ No newline at end of file
+var _0x379e=['addTags','addTagsToSmsInteraction','../client','Request','UpdateSmsInteraction','updateSmsInteraction'];(function(_0x201c34,_0x3ced43){var _0xd87aea=function(_0x1675ee){while(--_0x1675ee){_0x201c34['push'](_0x201c34['shift']());}};_0xd87aea(++_0x3ced43);}(_0x379e,0x104));var _0xe379=function(_0x466801,_0x58417b){_0x466801=_0x466801-0x0;var _0x470ef0=_0x379e[_0x466801];return _0x470ef0;};'use strict';var client=require(_0xe379('0x0'));exports['update']=function(_0x565eb4,_0x4bbe70){return client[_0xe379('0x1')](_0xe379('0x2'),{'body':_0x4bbe70,'options':{'where':{'id':_0x565eb4}},'log':_0xe379('0x3')});};exports[_0xe379('0x4')]=function(_0x3db31a,_0x475418){return client[_0xe379('0x1')]('AddTagsToSmsInteraction',{'body':_0x475418,'options':{'where':{'id':_0x3db31a}},'log':_0xe379('0x5')});};
\ No newline at end of file
index 64aa0e7..b2a45e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab64=['Request','createSmsMessage','../client'];(function(_0x54fad2,_0x571f5f){var _0x13a25d=function(_0x1a775c){while(--_0x1a775c){_0x54fad2['push'](_0x54fad2['shift']());}};_0x13a25d(++_0x571f5f);}(_0xab64,0x194));var _0x4ab6=function(_0x2dc779,_0x1cdbfb){_0x2dc779=_0x2dc779-0x0;var _0x45c448=_0xab64[_0x2dc779];return _0x45c448;};'use strict';var client=require(_0x4ab6('0x0'));exports['create']=function(_0x547767){return client[_0x4ab6('0x1')]('CreateSmsMessage',{'body':_0x547767,'log':_0x4ab6('0x2')});};
\ No newline at end of file
+var _0xb3a2=['createSmsMessage','../client','create','Request'];(function(_0x195fd6,_0x17240a){var _0x297f29=function(_0x57125d){while(--_0x57125d){_0x195fd6['push'](_0x195fd6['shift']());}};_0x297f29(++_0x17240a);}(_0xb3a2,0x1bd));var _0x2b3a=function(_0x15bc81,_0x4d4f77){_0x15bc81=_0x15bc81-0x0;var _0x59440e=_0xb3a2[_0x15bc81];return _0x59440e;};'use strict';var client=require(_0x2b3a('0x0'));exports[_0x2b3a('0x1')]=function(_0x222c2e){return client[_0x2b3a('0x2')]('CreateSmsMessage',{'body':_0x222c2e,'log':_0x2b3a('0x3')});};
\ No newline at end of file
index ceaa4bd..d11204b 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(_0x3ede55,_0xb96bff){var _0x2352e5=function(_0x4a1d5a){while(--_0x4a1d5a){_0x3ede55['push'](_0x3ede55['shift']());}};_0x2352e5(++_0xb96bff);}(_0xe706,0xa3));var _0x6e70=function(_0x1035ad,_0x18a82a){_0x1035ad=_0x1035ad-0x0;var _0x70d5c4=_0xe706[_0x1035ad];return _0x70d5c4;};'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 _0x70e0=['User','Agents','online','../client','getSmsQueues','Request','timeout','strategy'];(function(_0x2f613b,_0x231b15){var _0x34e9cb=function(_0x329e5d){while(--_0x329e5d){_0x2f613b['push'](_0x2f613b['shift']());}};_0x34e9cb(++_0x231b15);}(_0x70e0,0x17b));var _0x070e=function(_0x2ac055,_0x271444){_0x2ac055=_0x2ac055-0x0;var _0x43df6e=_0x70e0[_0x2ac055];return _0x43df6e;};'use strict';var client=require(_0x070e('0x0'));exports[_0x070e('0x1')]=function(){return function(){return client[_0x070e('0x2')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id','name',_0x070e('0x3'),_0x070e('0x4')],'include':[{'model':_0x070e('0x5'),'as':_0x070e('0x6'),'attributes':['id','name',_0x070e('0x7'),'smsPause']}]},'log':_0x070e('0x1')});};};
\ No newline at end of file
index 3a6ee23..186dc31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x4bb581,_0x6f7037){var _0x316bf5=function(_0x1f6ed0){while(--_0x1f6ed0){_0x4bb581['push'](_0x4bb581['shift']());}};_0x316bf5(++_0x6f7037);}(_0xedd9,0xfc));var _0x9edd=function(_0x678734,_0x329969){_0x678734=_0x678734-0x0;var _0x5a29aa=_0xedd9[_0x678734];return _0x5a29aa;};'use strict';var client=require('../client');exports[_0x9edd('0x0')]=function(_0x2d7989){return client[_0x9edd('0x1')](_0x9edd('0x2'),{'body':_0x2d7989,'log':_0x9edd('0x2')});};exports[_0x9edd('0x3')]=function(_0x3e6d3a,_0x36b53f){return client['Request'](_0x9edd('0x4'),{'body':_0x36b53f,'options':{'where':{'uniqueid':_0x3e6d3a},'order':[['id',_0x9edd('0x5')]],'limit':0x1},'log':_0x9edd('0x4')});};
\ No newline at end of file
+var _0x55ca=['../client','create','CreateSmsQueueReport','update','Request','UpdateSmsQueueReport','DESC'];(function(_0x2d0bcf,_0x3d9ce4){var _0x266e5e=function(_0xfbc5d6){while(--_0xfbc5d6){_0x2d0bcf['push'](_0x2d0bcf['shift']());}};_0x266e5e(++_0x3d9ce4);}(_0x55ca,0x126));var _0xa55c=function(_0x2e1af3,_0x2a077b){_0x2e1af3=_0x2e1af3-0x0;var _0x4150cd=_0x55ca[_0x2e1af3];return _0x4150cd;};'use strict';var client=require(_0xa55c('0x0'));exports[_0xa55c('0x1')]=function(_0x4e78b4){return client['Request']('CreateSmsQueueReport',{'body':_0x4e78b4,'log':_0xa55c('0x2')});};exports[_0xa55c('0x3')]=function(_0x5dc716,_0x3b478a){return client[_0xa55c('0x4')](_0xa55c('0x5'),{'body':_0x3b478a,'options':{'where':{'uniqueid':_0x5dc716},'order':[['id',_0xa55c('0x6')]],'limit':0x1},'log':_0xa55c('0x5')});};
\ No newline at end of file
index b113fab..2beb1fd 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(_0x19d405,_0x43101b){var _0x11df95=function(_0x257afa){while(--_0x257afa){_0x19d405['push'](_0x19d405['shift']());}};_0x11df95(++_0x43101b);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xa9e0[_0xbca1b1];return _0x4e1686;};'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(_0x4842d7,_0xd92eee){var _0x1e856c=function(_0x5b21b5){while(--_0x5b21b5){_0x4842d7['push'](_0x4842d7['shift']());}};_0x1e856c(++_0xd92eee);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0xa9e0[_0x1b349a];return _0x5d1f7c;};'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 2ef8031..6c4292f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39d2=['../client','Request','UpdateWhatsappInteraction','updateWhatsappInteraction','addTags','AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0x39d2,0xf5));var _0x239d=function(_0x8c1005,_0x1f3f16){_0x8c1005=_0x8c1005-0x0;var _0x175354=_0x39d2[_0x8c1005];return _0x175354;};'use strict';var client=require(_0x239d('0x0'));exports['update']=function(_0xb8a5be,_0x56b6a1){return client[_0x239d('0x1')](_0x239d('0x2'),{'body':_0x56b6a1,'options':{'where':{'id':_0xb8a5be}},'log':_0x239d('0x3')});};exports[_0x239d('0x4')]=function(_0x298c6e,_0x1f5943){return client[_0x239d('0x1')](_0x239d('0x5'),{'body':_0x1f5943,'options':{'where':{'id':_0x298c6e}},'log':_0x239d('0x6')});};
\ No newline at end of file
+var _0xb4b6=['update','Request','UpdateWhatsappInteraction','updateWhatsappInteraction','addTags','AddTagsToWhatsappInteraction'];(function(_0x758c4f,_0x3c61cb){var _0x7c64a9=function(_0x12c691){while(--_0x12c691){_0x758c4f['push'](_0x758c4f['shift']());}};_0x7c64a9(++_0x3c61cb);}(_0xb4b6,0x7e));var _0x6b4b=function(_0x17deec,_0x419aad){_0x17deec=_0x17deec-0x0;var _0x4b8df0=_0xb4b6[_0x17deec];return _0x4b8df0;};'use strict';var client=require('../client');exports[_0x6b4b('0x0')]=function(_0x475f60,_0x1ee7bf){return client[_0x6b4b('0x1')](_0x6b4b('0x2'),{'body':_0x1ee7bf,'options':{'where':{'id':_0x475f60}},'log':_0x6b4b('0x3')});};exports[_0x6b4b('0x4')]=function(_0xff2737,_0x422b21){return client['Request'](_0x6b4b('0x5'),{'body':_0x422b21,'options':{'where':{'id':_0xff2737}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
index ff27f03..bee4ef9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe3b=['create','Request'];(function(_0x52af37,_0x3ebe71){var _0x3566cc=function(_0x58cf59){while(--_0x58cf59){_0x52af37['push'](_0x52af37['shift']());}};_0x3566cc(++_0x3ebe71);}(_0xfe3b,0xea));var _0xbfe3=function(_0x4d897d,_0x2cd517){_0x4d897d=_0x4d897d-0x0;var _0x33676e=_0xfe3b[_0x4d897d];return _0x33676e;};'use strict';var client=require('../client');exports[_0xbfe3('0x0')]=function(_0x52de16){return client[_0xbfe3('0x1')]('CreateWhatsappMessage',{'body':_0x52de16,'log':'createWhatsappMessage'});};
\ No newline at end of file
+var _0xc01d=['Request'];(function(_0x4d3b67,_0x4beb74){var _0x19a978=function(_0x34c55d){while(--_0x34c55d){_0x4d3b67['push'](_0x4d3b67['shift']());}};_0x19a978(++_0x4beb74);}(_0xc01d,0x14f));var _0xdc01=function(_0x451d17,_0x52534b){_0x451d17=_0x451d17-0x0;var _0x55baa4=_0xc01d[_0x451d17];return _0x55baa4;};'use strict';var client=require('../client');exports['create']=function(_0x29ecb4){return client[_0xdc01('0x0')]('CreateWhatsappMessage',{'body':_0x29ecb4,'log':'createWhatsappMessage'});};
\ No newline at end of file
index d5d1709..da41571 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a49=['strategy','../client','getWhatsappQueues','GetWhatsappQueue','name','timeout'];(function(_0x498e72,_0x79a5af){var _0xbf99b9=function(_0x52340b){while(--_0x52340b){_0x498e72['push'](_0x498e72['shift']());}};_0xbf99b9(++_0x79a5af);}(_0x1a49,0x1e7));var _0x91a4=function(_0x945d6c,_0x4c2584){_0x945d6c=_0x945d6c-0x0;var _0x512b8e=_0x1a49[_0x945d6c];return _0x512b8e;};'use strict';var client=require(_0x91a4('0x0'));exports[_0x91a4('0x1')]=function(){return function(){return client['Request'](_0x91a4('0x2'),{'options':{'raw':![],'attributes':['id',_0x91a4('0x3'),_0x91a4('0x4'),_0x91a4('0x5')],'include':[{'model':'User','as':'Agents','attributes':['id',_0x91a4('0x3'),'online','whatsappPause']}]},'log':_0x91a4('0x1')});};};
\ No newline at end of file
+var _0x5535=['strategy','Agents','online','whatsappPause','../client','getWhatsappQueues','GetWhatsappQueue','name','timeout'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x5535,0x163));var _0x5553=function(_0x5a2ffe,_0x3511e4){_0x5a2ffe=_0x5a2ffe-0x0;var _0x58e854=_0x5535[_0x5a2ffe];return _0x58e854;};'use strict';var client=require(_0x5553('0x0'));exports[_0x5553('0x1')]=function(){return function(){return client['Request'](_0x5553('0x2'),{'options':{'raw':![],'attributes':['id',_0x5553('0x3'),_0x5553('0x4'),_0x5553('0x5')],'include':[{'model':'User','as':_0x5553('0x6'),'attributes':['id',_0x5553('0x3'),_0x5553('0x7'),_0x5553('0x8')]}]},'log':'getWhatsappQueues'});};};
\ No newline at end of file
index 4043c3e..9fa2667 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf86a=['create','Request','CreateWhatsappQueueReport','update','DESC','UpdateWhatsappQueueReport','../client'];(function(_0x17576c,_0x554202){var _0x40c37e=function(_0x32497c){while(--_0x32497c){_0x17576c['push'](_0x17576c['shift']());}};_0x40c37e(++_0x554202);}(_0xf86a,0x99));var _0xaf86=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xf86a[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0xaf86('0x0'));exports[_0xaf86('0x1')]=function(_0x17fce3){return client[_0xaf86('0x2')]('CreateWhatsappQueueReport',{'body':_0x17fce3,'log':_0xaf86('0x3')});};exports[_0xaf86('0x4')]=function(_0x5ce243,_0x2d523d){return client['Request']('UpdateWhatsappQueueReport',{'body':_0x2d523d,'options':{'where':{'uniqueid':_0x5ce243},'order':[['id',_0xaf86('0x5')]],'limit':0x1},'log':_0xaf86('0x6')});};
\ No newline at end of file
+var _0xa213=['../client','create','Request','CreateWhatsappQueueReport','UpdateWhatsappQueueReport','DESC'];(function(_0x477878,_0x4cc7cd){var _0x56c7c4=function(_0x43b937){while(--_0x43b937){_0x477878['push'](_0x477878['shift']());}};_0x56c7c4(++_0x4cc7cd);}(_0xa213,0xb4));var _0x3a21=function(_0x18d4ee,_0x23737a){_0x18d4ee=_0x18d4ee-0x0;var _0x25d717=_0xa213[_0x18d4ee];return _0x25d717;};'use strict';var client=require(_0x3a21('0x0'));exports[_0x3a21('0x1')]=function(_0x3a9166){return client[_0x3a21('0x2')]('CreateWhatsappQueueReport',{'body':_0x3a9166,'log':_0x3a21('0x3')});};exports['update']=function(_0x289bbf,_0x377bac){return client[_0x3a21('0x2')](_0x3a21('0x4'),{'body':_0x377bac,'options':{'where':{'uniqueid':_0x289bbf},'order':[['id',_0x3a21('0x5')]],'limit':0x1},'log':'UpdateWhatsappQueueReport'});};
\ No newline at end of file
index a644a35..4374394 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x620d=['atimeout','channel','START:%s','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','close','stop','[%s][AGENT]\x20ROUTING\x20END','agent','[%s][QUEUE]\x20%s','validate','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','message','find','agents','timeout'];(function(_0x3ed1df,_0x18d47a){var _0x313d39=function(_0x31b135){while(--_0x31b135){_0x3ed1df['push'](_0x3ed1df['shift']());}};_0x313d39(++_0x18d47a);}(_0x620d,0x181));var _0xd620=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x620d[_0x8c43de];return _0xa6591b;};'use strict';var schema=require(_0xd620('0x0'));var _=require(_0xd620('0x1'));var util=require(_0xd620('0x2'));var seqqueue=require(_0xd620('0x3'));var logger=require(_0xd620('0x4'))(_0xd620('0x5'));var strategy=require('./strategy');var queue=schema({'name':{'type':_0xd620('0x6'),'required':!![],'message':_0xd620('0x7')},'timeout':{'type':_0xd620('0x8'),'message':_0xd620('0x9')}});function writeLog(_0xc525ca,_0x51a01e,_0x4389b0){return logger[_0xd620('0xa')](util[_0xd620('0xb')](_0xd620('0xc'),_0xc525ca,_0x51a01e[_0xd620('0xd')],_0x4389b0));}function handleFindAgent(_0x450b90){return function(_0x47547c){return _0x47547c['name'][_0xd620('0xe')]()===_0x450b90[_0xd620('0xe')]();};}exports[_0xd620('0xf')]=function(_0x129a9a,_0x1c03bd,_0x561613,_0x167166){return function(_0x2be6dc){try{var _0x3a00f4={'name':_0x1c03bd[0x0],'timeout':_0x1c03bd[0x1]};var _0x5e20ec=queue[_0xd620('0x0')](_0x3a00f4,{'typecast':!![]});if(_0x5e20ec['length']){logger[_0xd620('0x10')](_0xd620('0x11'),_0x129a9a,_[_0xd620('0x12')](_0x5e20ec,_0xd620('0x13'))['join'](',\x20'));_0x2be6dc['stop']();}else{var _0x3bc314=_[_0xd620('0x14')](_0x561613[_0xd620('0x15')],handleFindAgent(_0x3a00f4[_0xd620('0xd')]));if(_0x3bc314){var _0x1ce8e3=(_0x3a00f4[_0xd620('0x16')]||0xa)*0x3e8;var _0x372929,_0x3fc3f3;var _0x835f5a=seqqueue['createQueue'](_0x1ce8e3);_0x835f5a['id']=_0x129a9a;_0x835f5a[_0xd620('0x17')]=_0x1ce8e3;_0x835f5a['channel']=_0x167166[_0xd620('0x18')];writeLog(_0x129a9a,_0x3bc314,util['format'](_0xd620('0x19'),_0x1ce8e3));_0x561613[_0xd620('0x1a')][_0x129a9a]['on'](_0xd620('0x1b'),function(){logger['info'](_0xd620('0x1c'),_0x129a9a);clearTimeout(_0x3fc3f3);_0x3fc3f3=undefined;_0x835f5a[_0xd620('0x1d')]();if(_0x561613[_0xd620('0x1a')][_0x129a9a]){delete _0x561613[_0xd620('0x1a')][_0x129a9a];}_0x2be6dc[_0xd620('0x1e')]();});_0x561613[_0xd620('0x1a')][_0x129a9a]['on']('complete',function(){if(_0x561613[_0xd620('0x1a')][_0x129a9a]){delete _0x561613[_0xd620('0x1a')][_0x129a9a];}});_0x3fc3f3=setTimeout(function(){logger[_0xd620('0xa')](_0xd620('0x1f'),_0x129a9a);clearTimeout(_0x3fc3f3);_0x835f5a['close']();_0x2be6dc['next']();},_0x1ce8e3);strategy[_0xd620('0x20')](_0x835f5a,_0x3bc314,_0x561613,_0x167166);}else{logger['error']('[%s][AGENT]\x20agent\x20not\x20found\x20%s',_0x129a9a,_0x3a00f4['name']);_0x2be6dc['stop']();}}}catch(_0x240f8a){console['log'](_0x240f8a);logger[_0xd620('0x10')](_0xd620('0x21'),_0x129a9a,_0x240f8a['stack']);_0x2be6dc[_0xd620('0x1e')]();}};};
\ No newline at end of file
+var _0xf3e7=['close','error','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','../../../../config/logger','routing','./strategy','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','[%s][AGENT]\x20%s','map','stop','find','agents','timeout','atimeout','channel','START:%s','rules','[%s][AGENT]\x20ROUTING\x20STOPPED','complete','[%s][AGENT]\x20ROUTING\x20END'];(function(_0x273dc5,_0x268a81){var _0x46dae7=function(_0x263d62){while(--_0x263d62){_0x273dc5['push'](_0x273dc5['shift']());}};_0x46dae7(++_0x268a81);}(_0xf3e7,0x126));var _0x7f3e=function(_0x3db58d,_0x3f0c01){_0x3db58d=_0x3db58d-0x0;var _0x17158d=_0xf3e7[_0x3db58d];return _0x17158d;};'use strict';var schema=require(_0x7f3e('0x0'));var _=require(_0x7f3e('0x1'));var util=require(_0x7f3e('0x2'));var seqqueue=require(_0x7f3e('0x3'));var logger=require(_0x7f3e('0x4'))(_0x7f3e('0x5'));var strategy=require(_0x7f3e('0x6'));var queue=schema({'name':{'type':_0x7f3e('0x7'),'required':!![],'message':_0x7f3e('0x8')},'timeout':{'type':'number','message':_0x7f3e('0x9')}});function writeLog(_0x1d2556,_0x334b23,_0x124e38){return logger[_0x7f3e('0xa')](util[_0x7f3e('0xb')](_0x7f3e('0xc'),_0x1d2556,_0x334b23[_0x7f3e('0xd')],_0x124e38));}function handleFindAgent(_0x3f211e){return function(_0x2a5f08){return _0x2a5f08[_0x7f3e('0xd')][_0x7f3e('0xe')]()===_0x3f211e['toLowerCase']();};}exports[_0x7f3e('0xf')]=function(_0xd3b751,_0x4e22a4,_0x5b0bb9,_0x596138){return function(_0x2a2133){try{var _0x5b4919={'name':_0x4e22a4[0x0],'timeout':_0x4e22a4[0x1]};var _0x10af81=queue[_0x7f3e('0x0')](_0x5b4919,{'typecast':!![]});if(_0x10af81[_0x7f3e('0x10')]){logger['error'](_0x7f3e('0x11'),_0xd3b751,_[_0x7f3e('0x12')](_0x10af81,'message')['join'](',\x20'));_0x2a2133[_0x7f3e('0x13')]();}else{var _0x3a708e=_[_0x7f3e('0x14')](_0x5b0bb9[_0x7f3e('0x15')],handleFindAgent(_0x5b4919[_0x7f3e('0xd')]));if(_0x3a708e){var _0x1b32c5=(_0x5b4919[_0x7f3e('0x16')]||0xa)*0x3e8;var _0xe6e75a,_0x367c2d;var _0x40ed26=seqqueue['createQueue'](_0x1b32c5);_0x40ed26['id']=_0xd3b751;_0x40ed26[_0x7f3e('0x17')]=_0x1b32c5;_0x40ed26['channel']=_0x596138[_0x7f3e('0x18')];writeLog(_0xd3b751,_0x3a708e,util[_0x7f3e('0xb')](_0x7f3e('0x19'),_0x1b32c5));_0x5b0bb9[_0x7f3e('0x1a')][_0xd3b751]['on']('end',function(){logger[_0x7f3e('0xa')](_0x7f3e('0x1b'),_0xd3b751);clearTimeout(_0x367c2d);_0x367c2d=undefined;_0x40ed26['close']();if(_0x5b0bb9[_0x7f3e('0x1a')][_0xd3b751]){delete _0x5b0bb9[_0x7f3e('0x1a')][_0xd3b751];}_0x2a2133[_0x7f3e('0x13')]();});_0x5b0bb9['rules'][_0xd3b751]['on'](_0x7f3e('0x1c'),function(){if(_0x5b0bb9['rules'][_0xd3b751]){delete _0x5b0bb9[_0x7f3e('0x1a')][_0xd3b751];}});_0x367c2d=setTimeout(function(){logger[_0x7f3e('0xa')](_0x7f3e('0x1d'),_0xd3b751);clearTimeout(_0x367c2d);_0x40ed26[_0x7f3e('0x1e')]();_0x2a2133['next']();},_0x1b32c5);strategy['agent'](_0x40ed26,_0x3a708e,_0x5b0bb9,_0x596138);}else{logger[_0x7f3e('0x1f')](_0x7f3e('0x20'),_0xd3b751,_0x5b4919[_0x7f3e('0xd')]);_0x2a2133[_0x7f3e('0x13')]();}}}catch(_0x49510e){console[_0x7f3e('0x21')](_0x49510e);logger[_0x7f3e('0x1f')](_0x7f3e('0x22'),_0xd3b751,_0x49510e[_0x7f3e('0x23')]);_0x2a2133[_0x7f3e('0x13')]();}};};
\ No newline at end of file
index 6e1fb6e..d62af78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x924e=['Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','isEmpty','body','then','catch','error','[%s][AMAZONLEX]\x20%s','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','LexRuntime','message','toString','next','providerName','amazonlex','providerResponse','create','dialogState','Failed','stringify','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','info'];(function(_0x120da5,_0x35e37c){var _0x2564ab=function(_0x100133){while(--_0x100133){_0x120da5['push'](_0x120da5['shift']());}};_0x2564ab(++_0x35e37c);}(_0x924e,0x179));var _0xe924=function(_0x15e13f,_0xb72596){_0x15e13f=_0x15e13f-0x0;var _0x5e5664=_0x924e[_0x15e13f];return _0x5e5664;};'use strict';var _=require(_0xe924('0x0'));var moment=require('moment');var AWS=require('aws-sdk');var utils=require(_0xe924('0x1'));var logger=require(_0xe924('0x2'))(_0xe924('0x3'));var rpc={'chatMessage':require(_0xe924('0x4')),'openchannelMessage':require(_0xe924('0x5')),'mailMessage':require(_0xe924('0x6')),'smsMessage':require(_0xe924('0x7')),'faxMessage':require(_0xe924('0x8')),'whatsappMessage':require(_0xe924('0x9'))};exports[_0xe924('0xa')]=function(_0x34608e,_0x40f53f){return function(_0x2a7a8d){try{if(!_[_0xe924('0xb')](this[_0xe924('0xc')][_0xe924('0xd')])){logger[_0xe924('0xe')]('[%s][AMAZONLEX]\x20%s',_0x34608e,_0xe924('0xf'));return _0x2a7a8d['next']();}var _0x49e437={'ContactId':this[_0xe924('0x10')]['id'],'sentAt':moment()['format'](_0xe924('0x11')),'direction':_0xe924('0x12')};if(this[_0xe924('0x13')]===_0xe924('0x14')||this[_0xe924('0x13')]===_0xe924('0x15')){_0x49e437[_0xe924('0x16')]=this[_0xe924('0xc')][_0xe924('0x16')];}var _0x1f264a=this[_0xe924('0x13')];if(_0x1f264a===_0xe924('0x17')){_0x49e437[_0xe924('0x18')]=this[_0xe924('0x19')]['id'];}else{_0x49e437[_[_0xe924('0x1a')](_0x1f264a)+_0xe924('0x1b')]=this[_0xe924('0x19')]['id'];}_0x49e437[_[_0xe924('0x1a')](_0x1f264a)+_0xe924('0x1c')]=this['interaction']['id'];if(this[_0xe924('0xc')]['created']){var _0x332fef=_0x40f53f[0x4];if(!_[_0xe924('0x1d')](_0x332fef)){_0x49e437[_0xe924('0x1e')]=utils['getMustacheRender'](_0x332fef,this);return rpc[_0x1f264a+'Message']['create'](_0x49e437)[_0xe924('0x1f')](function(_0x325df7){logger[_0xe924('0xe')]('[%s][AMAZONLEX]\x20%s',_0x34608e,_0x49e437[_0xe924('0x1e')]);})[_0xe924('0x20')](function(_0x1d8401){logger[_0xe924('0x21')](_0xe924('0x22'),_0x34608e,JSON['stringify'](_0x1d8401));})['finally'](function(){logger[_0xe924('0xe')](_0xe924('0x23'),_0x34608e);_0x2a7a8d[_0xe924('0x24')]();});}else{logger['info'](_0xe924('0x25'),_0x34608e);_0x2a7a8d['stop']();}}else{var _0x1e433b=this;var _0x78a7d6=new AWS[(_0xe924('0x26'))]({'accessKeyId':_0x40f53f[0x0],'secretAccessKey':_0x40f53f[0x1],'region':_0x40f53f[0x2]});var _0x12e772={'botAlias':'$LATEST','botName':_0x40f53f[0x3],'inputText':this[_0xe924('0x27')][_0xe924('0x1e')],'userId':this[_0xe924('0x13')]+':'+this['interaction']['id'][_0xe924('0x28')]()};_0x78a7d6['postText'](_0x12e772,function(_0x2c67d4,_0x478d5e){if(_0x2c67d4){logger[_0xe924('0x21')](_0xe924('0x22'),_0x34608e,_0x2c67d4[_0xe924('0x27')]);_0x2a7a8d[_0xe924('0x29')]();}else if(_0x478d5e&&_0x478d5e[_0xe924('0x27')]){_0x1e433b[_0xe924('0x1e')]['amazonlex']=_0x478d5e;_0x49e437['body']=_0x478d5e[_0xe924('0x27')];_0x49e437[_0xe924('0x2a')]=_0xe924('0x2b');_0x49e437[_0xe924('0x2c')]=JSON['stringify'](_0x478d5e);return rpc[_0x1f264a+'Message'][_0xe924('0x2d')](_0x49e437)['then'](function(_0x2370b3){logger['info'](_0xe924('0x22'),_0x34608e,_0x49e437[_0xe924('0x1e')]);if(_0x478d5e[_0xe924('0x2e')]==_0xe924('0x2f')){_0x2a7a8d[_0xe924('0x29')]();}else{_0x2a7a8d['stop']();}})[_0xe924('0x20')](function(_0x3f3074){logger[_0xe924('0x21')](_0xe924('0x22'),_0x34608e,JSON[_0xe924('0x30')](_0x3f3074));_0x2a7a8d[_0xe924('0x29')]();});}else{_0x2a7a8d['next']();}});}}catch(_0x3e8e42){logger['error']('[%s][AMAZONLEX]\x20%s',_0x34608e,JSON['stringify'](_0x3e8e42));_0x2a7a8d[_0xe924('0x24')]();}};};
\ No newline at end of file
+var _0xc1ea=['$LATEST','message','toString','postText','providerName','amazonlex','providerResponse','stringify','Message','dialogState','moment','aws-sdk','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','isNil','interaction','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp','phone','chat','ChatWebsiteId','account','AccountId','upperFirst','InteractionId','created','isEmpty','body','getMustacheRender','create','then','catch','error','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','LexRuntime'];(function(_0x17e516,_0x51f83f){var _0x3925bb=function(_0x5d6683){while(--_0x5d6683){_0x17e516['push'](_0x17e516['shift']());}};_0x3925bb(++_0x51f83f);}(_0xc1ea,0x136));var _0xac1e=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xc1ea[_0x19950b];return _0x3c6b41;};'use strict';var _=require('lodash');var moment=require(_0xac1e('0x0'));var AWS=require(_0xac1e('0x1'));var utils=require('./utils');var logger=require(_0xac1e('0x2'))(_0xac1e('0x3'));var rpc={'chatMessage':require(_0xac1e('0x4')),'openchannelMessage':require(_0xac1e('0x5')),'mailMessage':require(_0xac1e('0x6')),'smsMessage':require(_0xac1e('0x7')),'faxMessage':require(_0xac1e('0x8')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports['consequence']=function(_0x3768bd,_0x1c456d){return function(_0x2dd96b){try{if(!_[_0xac1e('0x9')](this[_0xac1e('0xa')]['UserId'])){logger[_0xac1e('0xb')](_0xac1e('0xc'),_0x3768bd,_0xac1e('0xd'));return _0x2dd96b[_0xac1e('0xe')]();}var _0x52fbb1={'ContactId':this[_0xac1e('0xf')]['id'],'sentAt':moment()[_0xac1e('0x10')](_0xac1e('0x11')),'direction':_0xac1e('0x12')};if(this[_0xac1e('0x13')]==='sms'||this[_0xac1e('0x13')]===_0xac1e('0x14')){_0x52fbb1[_0xac1e('0x15')]=this[_0xac1e('0xa')][_0xac1e('0x15')];}var _0x67e902=this['channel'];if(_0x67e902===_0xac1e('0x16')){_0x52fbb1[_0xac1e('0x17')]=this[_0xac1e('0x18')]['id'];}else{_0x52fbb1[_['upperFirst'](_0x67e902)+_0xac1e('0x19')]=this[_0xac1e('0x18')]['id'];}_0x52fbb1[_[_0xac1e('0x1a')](_0x67e902)+_0xac1e('0x1b')]=this[_0xac1e('0xa')]['id'];if(this[_0xac1e('0xa')][_0xac1e('0x1c')]){var _0x19054a=_0x1c456d[0x4];if(!_[_0xac1e('0x1d')](_0x19054a)){_0x52fbb1[_0xac1e('0x1e')]=utils[_0xac1e('0x1f')](_0x19054a,this);return rpc[_0x67e902+'Message'][_0xac1e('0x20')](_0x52fbb1)[_0xac1e('0x21')](function(_0x4167f1){logger['info'](_0xac1e('0xc'),_0x3768bd,_0x52fbb1[_0xac1e('0x1e')]);})[_0xac1e('0x22')](function(_0x3a7930){logger[_0xac1e('0x23')]('[%s][AMAZONLEX]\x20%s',_0x3768bd,JSON['stringify'](_0x3a7930));})[_0xac1e('0x24')](function(){logger[_0xac1e('0xb')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x3768bd);_0x2dd96b['stop']();});}else{logger[_0xac1e('0xb')](_0xac1e('0x25'),_0x3768bd);_0x2dd96b[_0xac1e('0x26')]();}}else{var _0x34b104=this;var _0x13c32a=new AWS[(_0xac1e('0x27'))]({'accessKeyId':_0x1c456d[0x0],'secretAccessKey':_0x1c456d[0x1],'region':_0x1c456d[0x2]});var _0x36209c={'botAlias':_0xac1e('0x28'),'botName':_0x1c456d[0x3],'inputText':this[_0xac1e('0x29')][_0xac1e('0x1e')],'userId':this[_0xac1e('0x13')]+':'+this[_0xac1e('0xa')]['id'][_0xac1e('0x2a')]()};_0x13c32a[_0xac1e('0x2b')](_0x36209c,function(_0x5be4d0,_0x748b8f){if(_0x5be4d0){logger[_0xac1e('0x23')](_0xac1e('0xc'),_0x3768bd,_0x5be4d0[_0xac1e('0x29')]);_0x2dd96b[_0xac1e('0xe')]();}else if(_0x748b8f&&_0x748b8f[_0xac1e('0x29')]){_0x34b104[_0xac1e('0x1e')]['amazonlex']=_0x748b8f;_0x52fbb1[_0xac1e('0x1e')]=_0x748b8f[_0xac1e('0x29')];_0x52fbb1[_0xac1e('0x2c')]=_0xac1e('0x2d');_0x52fbb1[_0xac1e('0x2e')]=JSON[_0xac1e('0x2f')](_0x748b8f);return rpc[_0x67e902+_0xac1e('0x30')][_0xac1e('0x20')](_0x52fbb1)['then'](function(_0x242a08){logger['info']('[%s][AMAZONLEX]\x20%s',_0x3768bd,_0x52fbb1['body']);if(_0x748b8f[_0xac1e('0x31')]=='Failed'){_0x2dd96b[_0xac1e('0xe')]();}else{_0x2dd96b[_0xac1e('0x26')]();}})[_0xac1e('0x22')](function(_0x52edaa){logger[_0xac1e('0x23')](_0xac1e('0xc'),_0x3768bd,JSON[_0xac1e('0x2f')](_0x52edaa));_0x2dd96b[_0xac1e('0xe')]();});}else{_0x2dd96b[_0xac1e('0xe')]();}});}}catch(_0x215bdd){logger[_0xac1e('0x23')]('[%s][AMAZONLEX]\x20%s',_0x3768bd,JSON[_0xac1e('0x2f')](_0x215bdd));_0x2dd96b['stop']();}};};
\ No newline at end of file
index 2d79a2a..eb9588b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd075=['created','next','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','contact','YYYY-MM-DD\x20HH:mm:ss','out','getMustacheRender','from','message','phone','read','subject','startsWith','Re:','Re:\x20','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','Message','Smtp','service','host','port','secure','authentication','auth','user','pass','inReplyTo','messageId','<div\x20id=\x22xm-mail-content\x22>','<div\x20id=\x22xm-mail-content\x22','<div','</div>','auto-replied','All','sendMailMessage','then','create','stringify','catch','resolve','Interaction','error','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','update','lodash','moment','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/smsInteraction','../../mailRpc','consequence','channel','mail','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','isNil','interaction'];(function(_0x6bdb38,_0x19ea23){var _0xa38184=function(_0x386f38){while(--_0x386f38){_0x6bdb38['push'](_0x6bdb38['shift']());}};_0xa38184(++_0x19ea23);}(_0xd075,0x10b));var _0x5d07=function(_0x2ab160,_0x2b0aed){_0x2ab160=_0x2ab160-0x0;var _0xbe30e7=_0xd075[_0x2ab160];return _0xbe30e7;};'use strict';var _=require(_0x5d07('0x0'));var moment=require(_0x5d07('0x1'));var utils=require(_0x5d07('0x2'));var logger=require(_0x5d07('0x3'))(_0x5d07('0x4'));var rpc={'chatMessage':require(_0x5d07('0x5')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x5d07('0x6')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage'),'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x5d07('0x7')),'mailInteraction':require(_0x5d07('0x8')),'smsInteraction':require(_0x5d07('0x9')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var mailRpc=require(_0x5d07('0xa'));exports[_0x5d07('0xb')]=function(_0x570685,_0x2f0fea,_0x19dbd8,_0x15d731){return function(_0x32f877){try{var _0x2fd88e=this[_0x5d07('0xc')];if(_0x2fd88e===_0x5d07('0xd')&&_0x15d731[_0x5d07('0xe')][_0x5d07('0xf')]){logger[_0x5d07('0x10')](_0x5d07('0x11'),_0x570685,_0x5d07('0x12'));return _0x32f877['next']();}if(_0x2f0fea[0x0]==='1'&&(_[_0x5d07('0x13')](this[_0x5d07('0x14')][_0x5d07('0x15')])||!this[_0x5d07('0x14')][_0x5d07('0x15')])){logger[_0x5d07('0x10')](_0x5d07('0x11'),_0x570685,'Autoreply\x20already\x20sent');return _0x32f877[_0x5d07('0x16')]();}if(_0x2f0fea[0x0]==='2'&&this[_0x5d07('0x14')][_0x5d07('0x17')]){logger[_0x5d07('0x10')](_0x5d07('0x18'),_0x570685,_0x5d07('0x19'));return _0x32f877[_0x5d07('0x16')]();}var _0x30263a={'ContactId':this[_0x5d07('0x1a')]['id'],'sentAt':moment()['format'](_0x5d07('0x1b')),'direction':_0x5d07('0x1c')};if(this[_0x5d07('0xc')]===_0x5d07('0xd')){_0x30263a[_0x5d07('0xe')]=utils[_0x5d07('0x1d')](_0x2f0fea[0x2],this);}else{_0x30263a[_0x5d07('0xe')]=utils[_0x5d07('0x1d')](_0x2f0fea[0x1],this);}if(this['message']){_0x30263a['to']=this['message'][_0x5d07('0x1e')]||'';if(this[_0x5d07('0xc')]===_0x5d07('0xd')&&_0x2f0fea[0x1]==='1'){_0x30263a['cc']=this['message']['cc']||'';}_0x30263a['from']=this[_0x5d07('0x1f')]['to']||'';_0x30263a['phone']=this[_0x5d07('0x1f')][_0x5d07('0x20')]||'';_0x30263a[_0x5d07('0x21')]=!![];if(this[_0x5d07('0x1f')][_0x5d07('0x22')]){_0x30263a[_0x5d07('0x22')]='';_0x30263a[_0x5d07('0x22')]+=_[_0x5d07('0x23')](this[_0x5d07('0x1f')][_0x5d07('0x22')],_0x5d07('0x24'))?'':_0x5d07('0x25');_0x30263a[_0x5d07('0x22')]+=this[_0x5d07('0x1f')][_0x5d07('0x22')];}}if(this[_0x5d07('0xc')]===_0x5d07('0x26')){_0x30263a[_0x5d07('0x27')]=this[_0x5d07('0x28')]['id'];}else{_0x30263a[_[_0x5d07('0x29')](this['channel'])+_0x5d07('0x2a')]=this[_0x5d07('0x28')]['id'];}_0x30263a[_[_0x5d07('0x29')](this[_0x5d07('0xc')])+_0x5d07('0x2b')]=this[_0x5d07('0x14')]['id'];var _0x176d8b=this[_0x5d07('0x14')];if(rpc[this['channel']+_0x5d07('0x2c')]){if(this[_0x5d07('0xc')]===_0x5d07('0xd')){var _0x258073={'tls':{'rejectUnauthorized':![]}};if(this[_0x5d07('0x28')][_0x5d07('0x2d')][_0x5d07('0x2e')]){_0x258073[_0x5d07('0x2e')]=this[_0x5d07('0x28')]['Smtp']['service'];}else{_0x258073[_0x5d07('0x2f')]=this[_0x5d07('0x28')][_0x5d07('0x2d')][_0x5d07('0x2f')];_0x258073[_0x5d07('0x30')]=this[_0x5d07('0x28')][_0x5d07('0x2d')][_0x5d07('0x30')];_0x258073[_0x5d07('0x31')]=this[_0x5d07('0x28')][_0x5d07('0x2d')][_0x5d07('0x31')];}if(this[_0x5d07('0x28')][_0x5d07('0x2d')][_0x5d07('0x32')]){_0x258073[_0x5d07('0x33')]={'user':this[_0x5d07('0x28')][_0x5d07('0x2d')][_0x5d07('0x34')],'pass':this[_0x5d07('0x28')][_0x5d07('0x2d')][_0x5d07('0x35')]};}_0x30263a[_0x5d07('0x36')]=this[_0x5d07('0x1f')][_0x5d07('0x37')];_0x30263a['html']=_0x5d07('0x38')+_['replace'](_0x30263a[_0x5d07('0xe')],_0x5d07('0x39'),_0x5d07('0x3a'))+_0x5d07('0x3b');_0x30263a['headers']={'Auto-Submitted':_0x5d07('0x3c'),'X-Auto-Response-Suppress':_0x5d07('0x3d'),'Precedence':'auto_reply'};return mailRpc[_0x5d07('0x3e')](_0x258073,_0x30263a)[_0x5d07('0x3f')](function(_0x308a49){logger['info']('[%s][AUTOREPLY]\x20SMTP\x20SENT',_0x570685);_0x30263a['messageId']=_0x308a49[_0x5d07('0x1f')][_0x5d07('0x37')];return rpc[_0x2fd88e+'Message'][_0x5d07('0x40')](_0x30263a);})[_0x5d07('0x3f')](function(_0x2836c0){logger[_0x5d07('0x10')](_0x5d07('0x11'),_0x570685,JSON[_0x5d07('0x41')](_0x2836c0));})[_0x5d07('0x42')](function(_0x3f7a79){logger['error']('[RPC][%s][AUTOREPLY]\x20%s',_0x570685,JSON[_0x5d07('0x41')](_0x3f7a79));})['finally'](function(){Promise[_0x5d07('0x43')]()[_0x5d07('0x3f')](function(){if(_0x2f0fea[0x0]!=='2'||_0x176d8b[_0x5d07('0x17')])return;return rpc[_0x2fd88e+_0x5d07('0x44')]['update'](_0x176d8b['id'],{'autoreplyExecuted':!![]})[_0x5d07('0x3f')](function(_0x4ae196){logger[_0x5d07('0x10')](_0x5d07('0x18'),_0x570685,JSON[_0x5d07('0x41')](_0x4ae196));})[_0x5d07('0x42')](function(_0x3b8544){logger[_0x5d07('0x45')](_0x5d07('0x46'),_0x570685,JSON['stringify'](_0x3b8544));});})[_0x5d07('0x3f')](function(){_0x32f877['next']();});});}else{return rpc[this['channel']+_0x5d07('0x2c')][_0x5d07('0x40')](_0x30263a)[_0x5d07('0x3f')](function(_0x51886c){logger['info']('[%s][AUTOREPLY]\x20%s',_0x570685,_0x30263a[_0x5d07('0xe')]);})[_0x5d07('0x42')](function(_0x3319b1){logger[_0x5d07('0x45')](_0x5d07('0x11'),_0x570685,JSON['stringify'](_0x3319b1));})['finally'](function(){Promise[_0x5d07('0x43')]()[_0x5d07('0x3f')](function(){if(_0x2f0fea[0x0]!=='2'||_0x176d8b[_0x5d07('0x17')])return;return rpc[_0x2fd88e+_0x5d07('0x44')][_0x5d07('0x47')](_0x176d8b['id'],{'autoreplyExecuted':!![]})[_0x5d07('0x3f')](function(_0x3e5c0a){logger[_0x5d07('0x10')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x570685,JSON[_0x5d07('0x41')](_0x3e5c0a));})['catch'](function(_0x5e037a){logger[_0x5d07('0x45')](_0x5d07('0x46'),_0x570685,JSON[_0x5d07('0x41')](_0x5e037a));});})['then'](function(){_0x32f877[_0x5d07('0x16')]();});});}}}catch(_0x950db6){logger['error'](_0x5d07('0x11'),_0x570685,JSON[_0x5d07('0x41')](_0x950db6));_0x32f877['stop']();}};};
\ No newline at end of file
+var _0xf31f=['[RPC][%s][AUTOREPLY]\x20%s','finally','resolve','update','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','body','Interaction','stop','lodash','moment','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','channel','mail','isAutoreply','info','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','isNil','created','interaction','Autoreply\x20already\x20sent','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','contact','format','out','getMustacheRender','message','from','phone','read','subject','startsWith','Re:','Re:\x20','chat','ChatWebsiteId','account','AccountId','upperFirst','InteractionId','Message','Smtp','service','host','port','secure','auth','user','inReplyTo','html','<div\x20id=\x22xm-mail-content\x22','<div','</div>','headers','All','auto_reply','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','messageId','create','[%s][AUTOREPLY]\x20%s','stringify','catch','error'];(function(_0x3009f6,_0x3f1d8e){var _0x2161d0=function(_0x4f0450){while(--_0x4f0450){_0x3009f6['push'](_0x3009f6['shift']());}};_0x2161d0(++_0x3f1d8e);}(_0xf31f,0x193));var _0xff31=function(_0x2b0095,_0x367501){_0x2b0095=_0x2b0095-0x0;var _0x4d31c9=_0xf31f[_0x2b0095];return _0x4d31c9;};'use strict';var _=require(_0xff31('0x0'));var moment=require(_0xff31('0x1'));var utils=require(_0xff31('0x2'));var logger=require(_0xff31('0x3'))(_0xff31('0x4'));var rpc={'chatMessage':require(_0xff31('0x5')),'openchannelMessage':require(_0xff31('0x6')),'mailMessage':require(_0xff31('0x7')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0xff31('0x8')),'whatsappMessage':require(_0xff31('0x9')),'chatInteraction':require(_0xff31('0xa')),'openchannelInteraction':require(_0xff31('0xb')),'mailInteraction':require(_0xff31('0xc')),'smsInteraction':require('../../rpc/smsInteraction'),'faxInteraction':require(_0xff31('0xd')),'whatsappInteraction':require(_0xff31('0xe'))};var mailRpc=require(_0xff31('0xf'));exports[_0xff31('0x10')]=function(_0x42c537,_0x2f7a18,_0x581501,_0x309340){return function(_0x36ab6b){try{var _0x317735=this[_0xff31('0x11')];if(_0x317735===_0xff31('0x12')&&_0x309340['body'][_0xff31('0x13')]){logger[_0xff31('0x14')]('[%s][AUTOREPLY]\x20%s',_0x42c537,_0xff31('0x15'));return _0x36ab6b[_0xff31('0x16')]();}if(_0x2f7a18[0x0]==='1'&&(_[_0xff31('0x17')](this['interaction'][_0xff31('0x18')])||!this[_0xff31('0x19')][_0xff31('0x18')])){logger['info']('[%s][AUTOREPLY]\x20%s',_0x42c537,_0xff31('0x1a'));return _0x36ab6b['next']();}if(_0x2f7a18[0x0]==='2'&&this[_0xff31('0x19')][_0xff31('0x1b')]){logger['info'](_0xff31('0x1c'),_0x42c537,'One\x20Time\x20already\x20sent');return _0x36ab6b['next']();}var _0x1dc86e={'ContactId':this[_0xff31('0x1d')]['id'],'sentAt':moment()[_0xff31('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0xff31('0x1f')};if(this[_0xff31('0x11')]===_0xff31('0x12')){_0x1dc86e['body']=utils['getMustacheRender'](_0x2f7a18[0x2],this);}else{_0x1dc86e['body']=utils[_0xff31('0x20')](_0x2f7a18[0x1],this);}if(this[_0xff31('0x21')]){_0x1dc86e['to']=this['message']['from']||'';if(this[_0xff31('0x11')]===_0xff31('0x12')&&_0x2f7a18[0x1]==='1'){_0x1dc86e['cc']=this['message']['cc']||'';}_0x1dc86e[_0xff31('0x22')]=this[_0xff31('0x21')]['to']||'';_0x1dc86e['phone']=this['message'][_0xff31('0x23')]||'';_0x1dc86e[_0xff31('0x24')]=!![];if(this[_0xff31('0x21')][_0xff31('0x25')]){_0x1dc86e[_0xff31('0x25')]='';_0x1dc86e[_0xff31('0x25')]+=_[_0xff31('0x26')](this[_0xff31('0x21')][_0xff31('0x25')],_0xff31('0x27'))?'':_0xff31('0x28');_0x1dc86e[_0xff31('0x25')]+=this[_0xff31('0x21')][_0xff31('0x25')];}}if(this[_0xff31('0x11')]===_0xff31('0x29')){_0x1dc86e[_0xff31('0x2a')]=this[_0xff31('0x2b')]['id'];}else{_0x1dc86e[_['upperFirst'](this[_0xff31('0x11')])+_0xff31('0x2c')]=this[_0xff31('0x2b')]['id'];}_0x1dc86e[_[_0xff31('0x2d')](this[_0xff31('0x11')])+_0xff31('0x2e')]=this[_0xff31('0x19')]['id'];var _0x1def33=this[_0xff31('0x19')];if(rpc[this[_0xff31('0x11')]+_0xff31('0x2f')]){if(this[_0xff31('0x11')]===_0xff31('0x12')){var _0x4c4a16={'tls':{'rejectUnauthorized':![]}};if(this[_0xff31('0x2b')][_0xff31('0x30')][_0xff31('0x31')]){_0x4c4a16[_0xff31('0x31')]=this[_0xff31('0x2b')]['Smtp']['service'];}else{_0x4c4a16[_0xff31('0x32')]=this[_0xff31('0x2b')][_0xff31('0x30')]['host'];_0x4c4a16[_0xff31('0x33')]=this['account'][_0xff31('0x30')]['port'];_0x4c4a16[_0xff31('0x34')]=this['account'][_0xff31('0x30')][_0xff31('0x34')];}if(this['account']['Smtp']['authentication']){_0x4c4a16[_0xff31('0x35')]={'user':this['account']['Smtp'][_0xff31('0x36')],'pass':this[_0xff31('0x2b')][_0xff31('0x30')]['pass']};}_0x1dc86e[_0xff31('0x37')]=this['message']['messageId'];_0x1dc86e[_0xff31('0x38')]='<div\x20id=\x22xm-mail-content\x22>'+_['replace'](_0x1dc86e['body'],_0xff31('0x39'),_0xff31('0x3a'))+_0xff31('0x3b');_0x1dc86e[_0xff31('0x3c')]={'Auto-Submitted':'auto-replied','X-Auto-Response-Suppress':_0xff31('0x3d'),'Precedence':_0xff31('0x3e')};return mailRpc['sendMailMessage'](_0x4c4a16,_0x1dc86e)[_0xff31('0x3f')](function(_0x46976e){logger['info'](_0xff31('0x40'),_0x42c537);_0x1dc86e[_0xff31('0x41')]=_0x46976e[_0xff31('0x21')]['messageId'];return rpc[_0x317735+_0xff31('0x2f')][_0xff31('0x42')](_0x1dc86e);})['then'](function(_0x37db91){logger[_0xff31('0x14')](_0xff31('0x43'),_0x42c537,JSON[_0xff31('0x44')](_0x37db91));})[_0xff31('0x45')](function(_0x45524a){logger[_0xff31('0x46')](_0xff31('0x47'),_0x42c537,JSON['stringify'](_0x45524a));})[_0xff31('0x48')](function(){Promise[_0xff31('0x49')]()[_0xff31('0x3f')](function(){if(_0x2f7a18[0x0]!=='2'||_0x1def33['autoreplyExecuted'])return;return rpc[_0x317735+'Interaction'][_0xff31('0x4a')](_0x1def33['id'],{'autoreplyExecuted':!![]})[_0xff31('0x3f')](function(_0x308317){logger[_0xff31('0x14')](_0xff31('0x1c'),_0x42c537,JSON['stringify'](_0x308317));})[_0xff31('0x45')](function(_0x2e6619){logger[_0xff31('0x46')](_0xff31('0x4b'),_0x42c537,JSON[_0xff31('0x44')](_0x2e6619));});})[_0xff31('0x3f')](function(){_0x36ab6b[_0xff31('0x16')]();});});}else{return rpc[this['channel']+'Message'][_0xff31('0x42')](_0x1dc86e)['then'](function(_0x471efd){logger['info'](_0xff31('0x43'),_0x42c537,_0x1dc86e[_0xff31('0x4c')]);})[_0xff31('0x45')](function(_0x5bf162){logger[_0xff31('0x46')]('[%s][AUTOREPLY]\x20%s',_0x42c537,JSON[_0xff31('0x44')](_0x5bf162));})[_0xff31('0x48')](function(){Promise[_0xff31('0x49')]()[_0xff31('0x3f')](function(){if(_0x2f7a18[0x0]!=='2'||_0x1def33[_0xff31('0x1b')])return;return rpc[_0x317735+_0xff31('0x4d')][_0xff31('0x4a')](_0x1def33['id'],{'autoreplyExecuted':!![]})[_0xff31('0x3f')](function(_0x1d57ac){logger[_0xff31('0x14')](_0xff31('0x1c'),_0x42c537,JSON['stringify'](_0x1d57ac));})['catch'](function(_0x59b825){logger[_0xff31('0x46')](_0xff31('0x4b'),_0x42c537,JSON[_0xff31('0x44')](_0x59b825));});})[_0xff31('0x3f')](function(){_0x36ab6b[_0xff31('0x16')]();});});}}}catch(_0x4e2519){logger[_0xff31('0x46')](_0xff31('0x43'),_0x42c537,JSON[_0xff31('0x44')](_0x4e2519));_0x36ab6b[_0xff31('0x4e')]();}};};
\ No newline at end of file
index c88d211..5879e6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa519=['format','YYYY-MM-DD\x20HH:mm:ss','system','channel','Interaction','update','interaction','then','catch','error','[%s][CLOSE]\x20%s','stringify','finally','stop','../../../../config/logger','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','consequence','info','[%s][CLOSE]\x20reason\x20%s'];(function(_0xcc57bb,_0x51f30a){var _0x11c670=function(_0x17558b){while(--_0x17558b){_0xcc57bb['push'](_0xcc57bb['shift']());}};_0x11c670(++_0x51f30a);}(_0xa519,0x1c6));var _0x9a51=function(_0x5b5dc2,_0x237992){_0x5b5dc2=_0x5b5dc2-0x0;var _0x558506=_0xa519[_0x5b5dc2];return _0x558506;};'use strict';var moment=require('moment');var logger=require(_0x9a51('0x0'))('routing');var rpc={'chatInteraction':require(_0x9a51('0x1')),'openchannelInteraction':require(_0x9a51('0x2')),'smsInteraction':require(_0x9a51('0x3')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0x9a51('0x4')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};exports[_0x9a51('0x5')]=function(_0x133fa8,_0x394d8f,_0xaa6c4a,_0x5941c3){return function(_0x4f261d){try{logger[_0x9a51('0x6')](_0x9a51('0x7'),_0x133fa8,_0x394d8f[0x0]);var _0x197c2c={'closed':0x1,'closedAt':moment()[_0x9a51('0x8')](_0x9a51('0x9')),'closeReason':_0x9a51('0xa'),'disposition':_0x394d8f[0x0]};if(rpc[_0x5941c3[_0x9a51('0xb')]+_0x9a51('0xc')]){rpc[_0x5941c3[_0x9a51('0xb')]+_0x9a51('0xc')][_0x9a51('0xd')](_0x5941c3[_0x9a51('0xe')]['id'],_0x197c2c)[_0x9a51('0xf')](function(_0x384d45){logger['info']('[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!',_0x133fa8,_0x5941c3[_0x9a51('0xe')]['id']);})[_0x9a51('0x10')](function(_0x121617){logger[_0x9a51('0x11')](_0x9a51('0x12'),_0x133fa8,JSON[_0x9a51('0x13')](_0x121617));})[_0x9a51('0x14')](function(){_0x4f261d[_0x9a51('0x15')]();});}}catch(_0x59e99e){logger['error']('[%s][CLOSE]\x20%s',_0x133fa8,JSON[_0x9a51('0x13')](_0x59e99e));_0x4f261d[_0x9a51('0x15')]();}};};
\ No newline at end of file
+var _0x5a1a=['channel','update','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','interaction','catch','[%s][CLOSE]\x20%s','error','stringify','stop','moment','../../../../config/logger','routing','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','info','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','system'];(function(_0x481c5e,_0x5f03bf){var _0x2d3ea0=function(_0x11cf2b){while(--_0x11cf2b){_0x481c5e['push'](_0x481c5e['shift']());}};_0x2d3ea0(++_0x5f03bf);}(_0x5a1a,0x159));var _0xa5a1=function(_0x9731b4,_0x26aac3){_0x9731b4=_0x9731b4-0x0;var _0x3d7a66=_0x5a1a[_0x9731b4];return _0x3d7a66;};'use strict';var moment=require(_0xa5a1('0x0'));var logger=require(_0xa5a1('0x1'))(_0xa5a1('0x2'));var rpc={'chatInteraction':require(_0xa5a1('0x3')),'openchannelInteraction':require(_0xa5a1('0x4')),'smsInteraction':require(_0xa5a1('0x5')),'mailInteraction':require(_0xa5a1('0x6')),'faxInteraction':require(_0xa5a1('0x7')),'whatsappInteraction':require(_0xa5a1('0x8'))};exports[_0xa5a1('0x9')]=function(_0x5b1455,_0x3c008a,_0x364ce5,_0x9018b1){return function(_0x1218be){try{logger[_0xa5a1('0xa')](_0xa5a1('0xb'),_0x5b1455,_0x3c008a[0x0]);var _0x2cf7bb={'closed':0x1,'closedAt':moment()[_0xa5a1('0xc')](_0xa5a1('0xd')),'closeReason':_0xa5a1('0xe'),'disposition':_0x3c008a[0x0]};if(rpc[_0x9018b1['channel']+'Interaction']){rpc[_0x9018b1[_0xa5a1('0xf')]+'Interaction'][_0xa5a1('0x10')](_0x9018b1['interaction']['id'],_0x2cf7bb)['then'](function(_0x2019d0){logger[_0xa5a1('0xa')](_0xa5a1('0x11'),_0x5b1455,_0x9018b1[_0xa5a1('0x12')]['id']);})[_0xa5a1('0x13')](function(_0x53fbca){logger['error'](_0xa5a1('0x14'),_0x5b1455,JSON['stringify'](_0x53fbca));})['finally'](function(){_0x1218be['stop']();});}}catch(_0x5bcc97){logger[_0xa5a1('0x15')](_0xa5a1('0x14'),_0x5b1455,JSON[_0xa5a1('0x16')](_0x5bcc97));_0x1218be[_0xa5a1('0x17')]();}};};
\ No newline at end of file
index eaf296d..4797f2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50e5=['next','format','YYYY-MM-DD\x20HH:mm:ss','channel','sms','whatsapp','interaction','chat','ChatWebsiteId','account','upperFirst','AccountId','isEmpty','create','body','catch','error','stringify','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','textRequest','message','then','dialogflow','result','fulfillment','speech','providerName','providerResponse','Message','metadata','endConversation','lodash','moment','md5','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','UserId','info','[%s][DIALOGFLOW]\x20%s'];(function(_0xb161a6,_0x1a69df){var _0x3cd36a=function(_0x331cb4){while(--_0x331cb4){_0xb161a6['push'](_0xb161a6['shift']());}};_0x3cd36a(++_0x1a69df);}(_0x50e5,0xb7));var _0x550e=function(_0x5a1b71,_0x4bcd1a){_0x5a1b71=_0x5a1b71-0x0;var _0x167804=_0x50e5[_0x5a1b71];return _0x167804;};'use strict';var _=require(_0x550e('0x0'));var moment=require(_0x550e('0x1'));var apiai=require('apiai-promise');var md5=require(_0x550e('0x2'));var utils=require(_0x550e('0x3'));var logger=require(_0x550e('0x4'))(_0x550e('0x5'));var rpc={'chatMessage':require(_0x550e('0x6')),'openchannelMessage':require(_0x550e('0x7')),'mailMessage':require(_0x550e('0x8')),'smsMessage':require(_0x550e('0x9')),'faxMessage':require(_0x550e('0xa')),'whatsappMessage':require(_0x550e('0xb'))};exports[_0x550e('0xc')]=function(_0x41a221,_0x4f3357){return function(_0x27ae27){try{if(!_[_0x550e('0xd')](this['interaction'][_0x550e('0xe')])){logger[_0x550e('0xf')](_0x550e('0x10'),_0x41a221,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x27ae27[_0x550e('0x11')]();}var _0x49cc53={'ContactId':this['contact']['id'],'sentAt':moment()[_0x550e('0x12')](_0x550e('0x13')),'direction':'out'};if(this[_0x550e('0x14')]===_0x550e('0x15')||this[_0x550e('0x14')]===_0x550e('0x16')){_0x49cc53['phone']=this[_0x550e('0x17')]['phone'];}var _0x2dc276=this['channel'];if(_0x2dc276===_0x550e('0x18')){_0x49cc53[_0x550e('0x19')]=this[_0x550e('0x1a')]['id'];}else{_0x49cc53[_[_0x550e('0x1b')](_0x2dc276)+_0x550e('0x1c')]=this['account']['id'];}_0x49cc53[_[_0x550e('0x1b')](_0x2dc276)+'InteractionId']=this[_0x550e('0x17')]['id'];if(this['interaction']['created']){var _0x31f4bf=_0x4f3357[0x2];if(!_[_0x550e('0x1d')](_0x31f4bf)){_0x49cc53['body']=utils['getMustacheRender'](_0x31f4bf,this);return rpc[_0x2dc276+'Message'][_0x550e('0x1e')](_0x49cc53)['then'](function(_0x580c6f){logger[_0x550e('0xf')](_0x550e('0x10'),_0x41a221,_0x49cc53[_0x550e('0x1f')]);})[_0x550e('0x20')](function(_0x1ff0e9){logger[_0x550e('0x21')](_0x550e('0x10'),_0x41a221,JSON[_0x550e('0x22')](_0x1ff0e9));})[_0x550e('0x23')](function(){logger['info'](_0x550e('0x24'),_0x41a221);_0x27ae27[_0x550e('0x25')]();});}else{logger['info']('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x41a221);_0x27ae27[_0x550e('0x25')]();}}else{var _0x2663c7=this;var _0x5769bb=apiai(_0x4f3357[0x0],{'language':_0x4f3357[0x1]||'en'});return _0x5769bb[_0x550e('0x26')](this[_0x550e('0x27')][_0x550e('0x1f')],{'sessionId':md5(this[_0x550e('0x17')]['id'])})[_0x550e('0x28')](function(_0x3bbca3){_0x2663c7['body'][_0x550e('0x29')]=_0x3bbca3;_0x49cc53[_0x550e('0x1f')]=_0x3bbca3[_0x550e('0x2a')][_0x550e('0x2b')][_0x550e('0x2c')];_0x49cc53[_0x550e('0x2d')]=_0x550e('0x29');_0x49cc53[_0x550e('0x2e')]=JSON[_0x550e('0x22')](_0x3bbca3);return rpc[_0x2dc276+_0x550e('0x2f')][_0x550e('0x1e')](_0x49cc53)[_0x550e('0x28')](function(_0x5e0434){logger[_0x550e('0xf')](_0x550e('0x10'),_0x41a221,_0x49cc53['body']);if(_0x3bbca3[_0x550e('0x2a')][_0x550e('0x30')][_0x550e('0x31')]){_0x27ae27[_0x550e('0x11')]();}else{_0x27ae27[_0x550e('0x25')]();}})[_0x550e('0x20')](function(_0x449da3){logger[_0x550e('0x21')](_0x550e('0x10'),_0x41a221,JSON[_0x550e('0x22')](_0x449da3));_0x27ae27[_0x550e('0x11')]();});})[_0x550e('0x20')](function(_0x32fd38){logger[_0x550e('0x21')]('[%s][DIALOGFLOW]\x20%s',_0x41a221,_0x32fd38[_0x550e('0x27')]);_0x27ae27[_0x550e('0x11')]();});}}catch(_0x5002b0){logger[_0x550e('0x21')](_0x550e('0x10'),_0x41a221,JSON['stringify'](_0x5002b0));_0x27ae27[_0x550e('0x25')]();}};};
\ No newline at end of file
+var _0x7374=['out','channel','sms','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','body','getMustacheRender','create','catch','error','stringify','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','message','then','result','fulfillment','speech','providerName','dialogflow','metadata','endConversation','stop','lodash','moment','apiai-promise','md5','./utils','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','info','[%s][DIALOGFLOW]\x20%s','next','contact'];(function(_0x11d962,_0x16d1e2){var _0x48d902=function(_0x186f68){while(--_0x186f68){_0x11d962['push'](_0x11d962['shift']());}};_0x48d902(++_0x16d1e2);}(_0x7374,0x1b9));var _0x4737=function(_0x447905,_0x3745ed){_0x447905=_0x447905-0x0;var _0x4c927a=_0x7374[_0x447905];return _0x4c927a;};'use strict';var _=require(_0x4737('0x0'));var moment=require(_0x4737('0x1'));var apiai=require(_0x4737('0x2'));var md5=require(_0x4737('0x3'));var utils=require(_0x4737('0x4'));var logger=require('../../../../config/logger')(_0x4737('0x5'));var rpc={'chatMessage':require(_0x4737('0x6')),'openchannelMessage':require(_0x4737('0x7')),'mailMessage':require(_0x4737('0x8')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x4737('0x9'))};exports[_0x4737('0xa')]=function(_0x311410,_0x3d18dd){return function(_0x4f9804){try{if(!_[_0x4737('0xb')](this[_0x4737('0xc')][_0x4737('0xd')])){logger[_0x4737('0xe')](_0x4737('0xf'),_0x311410,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x4f9804[_0x4737('0x10')]();}var _0x3a51a8={'ContactId':this[_0x4737('0x11')]['id'],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x4737('0x12')};if(this[_0x4737('0x13')]===_0x4737('0x14')||this[_0x4737('0x13')]===_0x4737('0x15')){_0x3a51a8[_0x4737('0x16')]=this[_0x4737('0xc')][_0x4737('0x16')];}var _0x130705=this['channel'];if(_0x130705===_0x4737('0x17')){_0x3a51a8[_0x4737('0x18')]=this[_0x4737('0x19')]['id'];}else{_0x3a51a8[_[_0x4737('0x1a')](_0x130705)+_0x4737('0x1b')]=this['account']['id'];}_0x3a51a8[_['upperFirst'](_0x130705)+_0x4737('0x1c')]=this['interaction']['id'];if(this[_0x4737('0xc')][_0x4737('0x1d')]){var _0x5f415d=_0x3d18dd[0x2];if(!_[_0x4737('0x1e')](_0x5f415d)){_0x3a51a8[_0x4737('0x1f')]=utils[_0x4737('0x20')](_0x5f415d,this);return rpc[_0x130705+'Message'][_0x4737('0x21')](_0x3a51a8)['then'](function(_0x37b74d){logger[_0x4737('0xe')](_0x4737('0xf'),_0x311410,_0x3a51a8[_0x4737('0x1f')]);})[_0x4737('0x22')](function(_0x4f1b09){logger[_0x4737('0x23')](_0x4737('0xf'),_0x311410,JSON[_0x4737('0x24')](_0x4f1b09));})[_0x4737('0x25')](function(){logger['info'](_0x4737('0x26'),_0x311410);_0x4f9804['stop']();});}else{logger[_0x4737('0xe')](_0x4737('0x27'),_0x311410);_0x4f9804['stop']();}}else{var _0x67fac=this;var _0x1c004f=apiai(_0x3d18dd[0x0],{'language':_0x3d18dd[0x1]||'en'});return _0x1c004f[_0x4737('0x28')](this[_0x4737('0x29')]['body'],{'sessionId':md5(this[_0x4737('0xc')]['id'])})[_0x4737('0x2a')](function(_0x49eddf){_0x67fac[_0x4737('0x1f')]['dialogflow']=_0x49eddf;_0x3a51a8[_0x4737('0x1f')]=_0x49eddf[_0x4737('0x2b')][_0x4737('0x2c')][_0x4737('0x2d')];_0x3a51a8[_0x4737('0x2e')]=_0x4737('0x2f');_0x3a51a8['providerResponse']=JSON[_0x4737('0x24')](_0x49eddf);return rpc[_0x130705+'Message'][_0x4737('0x21')](_0x3a51a8)['then'](function(_0x29618d){logger[_0x4737('0xe')](_0x4737('0xf'),_0x311410,_0x3a51a8['body']);if(_0x49eddf['result'][_0x4737('0x30')][_0x4737('0x31')]){_0x4f9804[_0x4737('0x10')]();}else{_0x4f9804[_0x4737('0x32')]();}})[_0x4737('0x22')](function(_0x5d6a2a){logger[_0x4737('0x23')](_0x4737('0xf'),_0x311410,JSON[_0x4737('0x24')](_0x5d6a2a));_0x4f9804[_0x4737('0x10')]();});})[_0x4737('0x22')](function(_0x2e1689){logger[_0x4737('0x23')](_0x4737('0xf'),_0x311410,_0x2e1689['message']);_0x4f9804[_0x4737('0x10')]();});}}catch(_0x365d66){logger[_0x4737('0x23')](_0x4737('0xf'),_0x311410,JSON[_0x4737('0x24')](_0x365d66));_0x4f9804[_0x4737('0x32')]();}};};
\ No newline at end of file
index 0ec4445..34d8561 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde02=['channel','sms','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','getMustacheRender','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','sessionPath','message','detectIntent','length','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','providerResponse','fulfillmentText','push','all','lodash','dialogflow','md5','../../../../config/logger','routing','./utils','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','clone','body','Message','create','then','[%s][DIALOGFLOWV2]\x20%s','catch','error','stringify','consequence','isNil','interaction','UserId','info','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out'];(function(_0xfd5f37,_0x24a79c){var _0x11bd01=function(_0x4ae9bd){while(--_0x4ae9bd){_0xfd5f37['push'](_0xfd5f37['shift']());}};_0x11bd01(++_0x24a79c);}(_0xde02,0xd5));var _0x2de0=function(_0x51afbb,_0x48f644){_0x51afbb=_0x51afbb-0x0;var _0x2d9542=_0xde02[_0x51afbb];return _0x2d9542;};'use strict';var _=require(_0x2de0('0x0'));var dialogflow=require(_0x2de0('0x1'));var md5=require(_0x2de0('0x2'));var moment=require('moment');var Promise=require('bluebird');var logger=require(_0x2de0('0x3'))(_0x2de0('0x4'));var utils=require(_0x2de0('0x5'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x2de0('0x6')),'mailMessage':require(_0x2de0('0x7')),'smsMessage':require(_0x2de0('0x8')),'faxMessage':require(_0x2de0('0x9')),'whatsappMessage':require(_0x2de0('0xa'))};function createMessage(_0x4a7cc5,_0x1a658f,_0x182b39,_0x15be24){return new Promise(function(_0x3eee21,_0x203095){var _0x405582=_[_0x2de0('0xb')](_0x182b39);_0x405582[_0x2de0('0xc')]=_0x15be24;return rpc[_0x1a658f+_0x2de0('0xd')][_0x2de0('0xe')](_0x405582)[_0x2de0('0xf')](function(){logger['info'](_0x2de0('0x10'),_0x4a7cc5,_0x405582[_0x2de0('0xc')]);_0x3eee21();})[_0x2de0('0x11')](function(_0x2e7928){logger[_0x2de0('0x12')](_0x2de0('0x10'),_0x4a7cc5,JSON[_0x2de0('0x13')](_0x2e7928));_0x203095(_0x2e7928);});});}exports[_0x2de0('0x14')]=function(_0x378881,_0x56a504){return function(_0xbbc4bf){try{if(!_[_0x2de0('0x15')](this[_0x2de0('0x16')][_0x2de0('0x17')])){logger[_0x2de0('0x18')](_0x2de0('0x10'),_0x378881,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0xbbc4bf[_0x2de0('0x19')]();}var _0x12f3c1={'ContactId':this[_0x2de0('0x1a')]['id'],'sentAt':moment()[_0x2de0('0x1b')](_0x2de0('0x1c')),'direction':_0x2de0('0x1d')};if(this[_0x2de0('0x1e')]===_0x2de0('0x1f')||this[_0x2de0('0x1e')]==='whatsapp'){_0x12f3c1[_0x2de0('0x20')]=this['interaction'][_0x2de0('0x20')];}var _0x20d3cf=this[_0x2de0('0x1e')];if(_0x20d3cf===_0x2de0('0x21')){_0x12f3c1[_0x2de0('0x22')]=this[_0x2de0('0x23')]['id'];}else{_0x12f3c1[_[_0x2de0('0x24')](_0x20d3cf)+_0x2de0('0x25')]=this['account']['id'];}_0x12f3c1[_[_0x2de0('0x24')](_0x20d3cf)+_0x2de0('0x26')]=this[_0x2de0('0x16')]['id'];if(this[_0x2de0('0x16')][_0x2de0('0x27')]){var _0x28f95c=_0x56a504[0x4];if(!_[_0x2de0('0x28')](_0x28f95c)){_0x12f3c1[_0x2de0('0xc')]=utils[_0x2de0('0x29')](_0x28f95c,this);return rpc[_0x20d3cf+_0x2de0('0xd')][_0x2de0('0xe')](_0x12f3c1)[_0x2de0('0xf')](function(_0x1495b9){logger[_0x2de0('0x18')](_0x2de0('0x10'),_0x378881,_0x12f3c1[_0x2de0('0xc')]);})[_0x2de0('0x11')](function(_0x5b5bd6){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x378881,JSON[_0x2de0('0x13')](_0x5b5bd6));})[_0x2de0('0x2a')](function(){logger[_0x2de0('0x18')](_0x2de0('0x2b'),_0x378881);_0xbbc4bf[_0x2de0('0x2c')]();});}else{logger[_0x2de0('0x18')](_0x2de0('0x2d'),_0x378881);_0xbbc4bf[_0x2de0('0x2c')]();}}else{var _0x5e81ce=this;var _0x105c5b=_0x56a504[0x2][_0x2de0('0x2e')](/\\n/g,'\x0a');var _0x2a0e92={'credentials':{'private_key':_0x105c5b,'client_email':_0x56a504[0x1]}};var _0x448cf7=new dialogflow[(_0x2de0('0x2f'))](_0x2a0e92);var _0xc94f43=_0x448cf7[_0x2de0('0x30')](_0x56a504[0x0],md5(_0x5e81ce['interaction']['id']));var _0x982303={'session':_0xc94f43,'queryInput':{'text':{'text':_0x5e81ce[_0x2de0('0x31')][_0x2de0('0xc')],'languageCode':_0x56a504[0x3]||'en'}}};return _0x448cf7[_0x2de0('0x32')](_0x982303)[_0x2de0('0xf')](function(_0x37224e){if(_0x37224e&&_0x37224e[_0x2de0('0x33')]){_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x34')]=_0x37224e;var _0x53c639=_0x37224e[0x0];var _0x47d35a=_0x53c639[_0x2de0('0x35')][_0x2de0('0x36')]&&_0x53c639[_0x2de0('0x35')][_0x2de0('0x36')][_0x2de0('0x37')]?_0x53c639[_0x2de0('0x35')][_0x2de0('0x36')]['fields'][_0x2de0('0x38')][_0x2de0('0x39')]:![];_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x3a')]=_0x53c639[_0x2de0('0x35')][_0x2de0('0x3b')];_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x3c')]=_0x53c639[_0x2de0('0x35')][_0x2de0('0x3d')];_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x3e')]=_0x53c639[_0x2de0('0x35')][_0x2de0('0x36')]&&_0x53c639[_0x2de0('0x35')][_0x2de0('0x36')]['fields']?_0x53c639[_0x2de0('0x35')]['diagnosticInfo']['fields'][_0x2de0('0x38')][_0x2de0('0x39')]:![];_0x5e81ce['body'][_0x2de0('0x3f')]=_0x53c639['queryResult'][_0x2de0('0x40')][_0x2de0('0x41')];_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x42')]=_0x53c639[_0x2de0('0x35')][_0x2de0('0x40')][_0x2de0('0x43')];_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x44')]=_0x53c639['queryResult'][_0x2de0('0x40')][_0x2de0('0x45')];_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x46')]=_0x53c639[_0x2de0('0x35')][_0x2de0('0x47')];_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x48')]=_0x53c639['queryResult'][_0x2de0('0x49')];_0x5e81ce[_0x2de0('0xc')][_0x2de0('0x4a')]=_0x53c639[_0x2de0('0x35')][_0x2de0('0x4b')];_0x12f3c1[_0x2de0('0x4c')]=_0x2de0('0x34');_0x12f3c1[_0x2de0('0x4d')]=JSON[_0x2de0('0x13')](_0x37224e);var _0x2d95c8=[];for(var _0x3c01c0=0x0;_0x3c01c0<_0x37224e[_0x2de0('0x33')];_0x3c01c0++){var _0x1b5081=_0x37224e[_0x3c01c0];if(_0x1b5081&&_0x1b5081[_0x2de0('0x35')]&&_0x1b5081['queryResult'][_0x2de0('0x4e')]){_0x2d95c8[_0x2de0('0x4f')](createMessage(_0x378881,_0x20d3cf,_0x12f3c1,_0x1b5081['queryResult'][_0x2de0('0x4e')]));}}return Promise[_0x2de0('0x50')](_0x2d95c8)[_0x2de0('0xf')](function(){if(_0x47d35a){_0xbbc4bf['next']();}else{_0xbbc4bf['stop']();}})['catch'](function(_0x8caec7){logger[_0x2de0('0x12')](_0x2de0('0x10'),_0x378881,JSON['stringify'](_0x8caec7));_0xbbc4bf[_0x2de0('0x19')]();});}})[_0x2de0('0x11')](function(_0x169e98){logger['error'](_0x2de0('0x10'),_0x378881,_0x169e98[_0x2de0('0x31')]);_0xbbc4bf[_0x2de0('0x19')]();});}}catch(_0x265021){logger[_0x2de0('0x12')](_0x2de0('0x10'),_0x378881,JSON[_0x2de0('0x13')](_0x265021));_0xbbc4bf[_0x2de0('0x2c')]();}};};
\ No newline at end of file
+var _0x3248=['intentDetectionConfidence','dialogflowV2','providerResponse','fulfillmentText','all','message','dialogflow','bluebird','../../../../config/logger','routing','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','clone','body','create','then','[%s][DIALOGFLOWV2]\x20%s','stringify','consequence','isNil','interaction','UserId','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','out','channel','sms','chat','ChatWebsiteId','upperFirst','AccountId','account','InteractionId','created','getMustacheRender','Message','catch','error','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','sessionPath','detectIntent','length','queryResult','diagnosticInfo','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','name','DIALOGFLOWV2_INTENTDISPLAYNAME','intent','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE'];(function(_0x549fe1,_0x2e3bef){var _0x1b560a=function(_0x1c40b4){while(--_0x1c40b4){_0x549fe1['push'](_0x549fe1['shift']());}};_0x1b560a(++_0x2e3bef);}(_0x3248,0x1bc));var _0x8324=function(_0x5d8dc4,_0x484ddd){_0x5d8dc4=_0x5d8dc4-0x0;var _0x5961fa=_0x3248[_0x5d8dc4];return _0x5961fa;};'use strict';var _=require('lodash');var dialogflow=require(_0x8324('0x0'));var md5=require('md5');var moment=require('moment');var Promise=require(_0x8324('0x1'));var logger=require(_0x8324('0x2'))(_0x8324('0x3'));var utils=require(_0x8324('0x4'));var rpc={'chatMessage':require(_0x8324('0x5')),'openchannelMessage':require(_0x8324('0x6')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x8324('0x7')),'faxMessage':require(_0x8324('0x8')),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x25ee7a,_0x459a62,_0x4302c5,_0x1514c0){return new Promise(function(_0x5a482d,_0x374820){var _0x114c03=_[_0x8324('0x9')](_0x4302c5);_0x114c03[_0x8324('0xa')]=_0x1514c0;return rpc[_0x459a62+'Message'][_0x8324('0xb')](_0x114c03)[_0x8324('0xc')](function(){logger['info'](_0x8324('0xd'),_0x25ee7a,_0x114c03[_0x8324('0xa')]);_0x5a482d();})['catch'](function(_0x50128c){logger['error'](_0x8324('0xd'),_0x25ee7a,JSON[_0x8324('0xe')](_0x50128c));_0x374820(_0x50128c);});});}exports[_0x8324('0xf')]=function(_0x3619ec,_0x5f4d08){return function(_0x296bda){try{if(!_[_0x8324('0x10')](this[_0x8324('0x11')][_0x8324('0x12')])){logger[_0x8324('0x13')]('[%s][DIALOGFLOWV2]\x20%s',_0x3619ec,_0x8324('0x14'));return _0x296bda[_0x8324('0x15')]();}var _0x411e41={'ContactId':this[_0x8324('0x16')]['id'],'sentAt':moment()[_0x8324('0x17')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x8324('0x18')};if(this[_0x8324('0x19')]===_0x8324('0x1a')||this[_0x8324('0x19')]==='whatsapp'){_0x411e41['phone']=this['interaction']['phone'];}var _0x1c4e04=this[_0x8324('0x19')];if(_0x1c4e04===_0x8324('0x1b')){_0x411e41[_0x8324('0x1c')]=this['account']['id'];}else{_0x411e41[_[_0x8324('0x1d')](_0x1c4e04)+_0x8324('0x1e')]=this[_0x8324('0x1f')]['id'];}_0x411e41[_[_0x8324('0x1d')](_0x1c4e04)+_0x8324('0x20')]=this['interaction']['id'];if(this[_0x8324('0x11')][_0x8324('0x21')]){var _0x165f4c=_0x5f4d08[0x4];if(!_['isEmpty'](_0x165f4c)){_0x411e41[_0x8324('0xa')]=utils[_0x8324('0x22')](_0x165f4c,this);return rpc[_0x1c4e04+_0x8324('0x23')][_0x8324('0xb')](_0x411e41)[_0x8324('0xc')](function(_0x4d0e92){logger[_0x8324('0x13')](_0x8324('0xd'),_0x3619ec,_0x411e41['body']);})[_0x8324('0x24')](function(_0xd50595){logger[_0x8324('0x25')](_0x8324('0xd'),_0x3619ec,JSON[_0x8324('0xe')](_0xd50595));})['finally'](function(){logger['info'](_0x8324('0x26'),_0x3619ec);_0x296bda[_0x8324('0x27')]();});}else{logger[_0x8324('0x13')](_0x8324('0x28'),_0x3619ec);_0x296bda[_0x8324('0x27')]();}}else{var _0x41e2fd=this;var _0x5b2a1a=_0x5f4d08[0x2][_0x8324('0x29')](/\\n/g,'\x0a');var _0x542154={'credentials':{'private_key':_0x5b2a1a,'client_email':_0x5f4d08[0x1]}};var _0x599563=new dialogflow[(_0x8324('0x2a'))](_0x542154);var _0x3afd87=_0x599563[_0x8324('0x2b')](_0x5f4d08[0x0],md5(_0x41e2fd[_0x8324('0x11')]['id']));var _0x312f7e={'session':_0x3afd87,'queryInput':{'text':{'text':_0x41e2fd['message']['body'],'languageCode':_0x5f4d08[0x3]||'en'}}};return _0x599563[_0x8324('0x2c')](_0x312f7e)['then'](function(_0x5ea108){if(_0x5ea108&&_0x5ea108[_0x8324('0x2d')]){_0x41e2fd['body']['dialogflowV2']=_0x5ea108;var _0x32a4c5=_0x5ea108[0x0];var _0x14f9e0=_0x32a4c5[_0x8324('0x2e')][_0x8324('0x2f')]&&_0x32a4c5['queryResult'][_0x8324('0x2f')][_0x8324('0x30')]?_0x32a4c5[_0x8324('0x2e')]['diagnosticInfo'][_0x8324('0x30')][_0x8324('0x31')][_0x8324('0x32')]:![];_0x41e2fd['body'][_0x8324('0x33')]=_0x32a4c5[_0x8324('0x2e')]['action'];_0x41e2fd[_0x8324('0xa')][_0x8324('0x34')]=_0x32a4c5[_0x8324('0x2e')][_0x8324('0x35')];_0x41e2fd[_0x8324('0xa')][_0x8324('0x36')]=_0x32a4c5[_0x8324('0x2e')][_0x8324('0x2f')]&&_0x32a4c5[_0x8324('0x2e')][_0x8324('0x2f')][_0x8324('0x30')]?_0x32a4c5['queryResult'][_0x8324('0x2f')][_0x8324('0x30')][_0x8324('0x31')][_0x8324('0x32')]:![];_0x41e2fd[_0x8324('0xa')][_0x8324('0x37')]=_0x32a4c5[_0x8324('0x2e')]['intent'][_0x8324('0x38')];_0x41e2fd[_0x8324('0xa')][_0x8324('0x39')]=_0x32a4c5[_0x8324('0x2e')][_0x8324('0x3a')][_0x8324('0x3b')];_0x41e2fd[_0x8324('0xa')][_0x8324('0x3c')]=_0x32a4c5['queryResult'][_0x8324('0x3a')][_0x8324('0x3d')];_0x41e2fd[_0x8324('0xa')][_0x8324('0x3e')]=_0x32a4c5[_0x8324('0x2e')][_0x8324('0x3f')];_0x41e2fd[_0x8324('0xa')][_0x8324('0x40')]=_0x32a4c5[_0x8324('0x2e')][_0x8324('0x41')];_0x41e2fd['body'][_0x8324('0x42')]=_0x32a4c5[_0x8324('0x2e')][_0x8324('0x43')];_0x411e41['providerName']=_0x8324('0x44');_0x411e41[_0x8324('0x45')]=JSON[_0x8324('0xe')](_0x5ea108);var _0x5dac5f=[];for(var _0x2ed870=0x0;_0x2ed870<_0x5ea108[_0x8324('0x2d')];_0x2ed870++){var _0x48bf39=_0x5ea108[_0x2ed870];if(_0x48bf39&&_0x48bf39['queryResult']&&_0x48bf39['queryResult'][_0x8324('0x46')]){_0x5dac5f['push'](createMessage(_0x3619ec,_0x1c4e04,_0x411e41,_0x48bf39[_0x8324('0x2e')][_0x8324('0x46')]));}}return Promise[_0x8324('0x47')](_0x5dac5f)[_0x8324('0xc')](function(){if(_0x14f9e0){_0x296bda[_0x8324('0x15')]();}else{_0x296bda[_0x8324('0x27')]();}})[_0x8324('0x24')](function(_0x5e1fb8){logger[_0x8324('0x25')](_0x8324('0xd'),_0x3619ec,JSON[_0x8324('0xe')](_0x5e1fb8));_0x296bda[_0x8324('0x15')]();});}})[_0x8324('0x24')](function(_0x5826a6){logger[_0x8324('0x25')](_0x8324('0xd'),_0x3619ec,_0x5826a6[_0x8324('0x48')]);_0x296bda[_0x8324('0x15')]();});}}catch(_0x3346eb){logger[_0x8324('0x25')]('[%s][DIALOGFLOWV2]\x20%s',_0x3619ec,JSON[_0x8324('0xe')](_0x3346eb));_0x296bda[_0x8324('0x27')]();}};};
\ No newline at end of file
index 74257df..bdd75bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x250f=['findIndex','rules','next','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','[%s][GOTOIF]\x20eval\x20error:\x20%s','stringify','validate','lodash','html-to-text','./utils','../../../../config/logger','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','getMustacheRender','replace','length','error','[%s][GOTOIF]\x20%s','map','message','join','stop','condition','priorityTrue','priorityFalse','info'];(function(_0x597819,_0x221935){var _0xfb2164=function(_0x3e6096){while(--_0x3e6096){_0x597819['push'](_0x597819['shift']());}};_0xfb2164(++_0x221935);}(_0x250f,0x150));var _0xf250=function(_0x192fc3,_0x42bcdb){_0x192fc3=_0x192fc3-0x0;var _0x277e26=_0x250f[_0x192fc3];return _0x277e26;};'use strict';var schema=require(_0xf250('0x0'));var _=require(_0xf250('0x1'));var htmlToText=require(_0xf250('0x2'));var utils=require(_0xf250('0x3'));var logger=require(_0xf250('0x4'))('routing');var gotoif=schema({'condition':{'type':_0xf250('0x5'),'required':!![],'message':_0xf250('0x6')},'priorityTrue':{'type':_0xf250('0x7'),'message':_0xf250('0x8')},'priorityFalse':{'type':_0xf250('0x7'),'message':_0xf250('0x9')}});exports[_0xf250('0xa')]=function(_0x1e8626,_0x10ab87){return function(_0x10726a){try{var _0xda7031={'condition':htmlToText['fromString'](utils[_0xf250('0xb')](_0x10ab87[0x0],this),{'wordwrap':![]})[_0xf250('0xc')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x10ab87[0x1],'priorityFalse':_0x10ab87[0x2]};var _0x119375=gotoif[_0xf250('0x0')](_0xda7031,{'typecast':!![]});if(_0x119375[_0xf250('0xd')]){logger[_0xf250('0xe')](_0xf250('0xf'),_0x1e8626,_[_0xf250('0x10')](_0x119375,_0xf250('0x11'))[_0xf250('0x12')](',\x20'));_0x10726a[_0xf250('0x13')]();}else{try{var _0x44f0ce=eval('('+_0xda7031[_0xf250('0x14')]+')');var _0x260dcc=_0x44f0ce?_0xda7031[_0xf250('0x15')]:_0xda7031[_0xf250('0x16')];logger[_0xf250('0x17')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x1e8626,_0xda7031[_0xf250('0x14')],_0x44f0ce,_0x260dcc||'next');if(_0x260dcc){var _0x4c999b=_[_0xf250('0x18')](_0x10726a[_0xf250('0x19')](),{'p':_0x260dcc});if(_0x4c999b>=0x0){logger['info']('[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x1e8626,_0x260dcc||'next',_0x4c999b);_0x10726a[_0xf250('0x1a')](_0x4c999b);}else{logger[_0xf250('0x17')](_0xf250('0x1b'),_0x1e8626,_0x260dcc||'next');_0x10726a[_0xf250('0x13')]();}}else{_0x10726a['next']();}}catch(_0x4a3396){logger[_0xf250('0xe')](_0xf250('0x1c'),_0x1e8626,_0x4a3396[_0xf250('0x11')]);_0x10726a[_0xf250('0x13')]();}}}catch(_0x2eea77){logger[_0xf250('0xe')](_0xf250('0xf'),_0x1e8626,JSON[_0xf250('0x1d')](_0x2eea77));_0x10726a['stop']();}};};
\ No newline at end of file
+var _0xb015=['join','stop','condition','priorityTrue','priorityFalse','info','next','findIndex','rules','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','[%s][GOTOIF]\x20eval\x20error:\x20%s','validate','lodash','html-to-text','./utils','../../../../config/logger','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','fromString','getMustacheRender','length','error','[%s][GOTOIF]\x20%s','map','message'];(function(_0x2b4d7f,_0x1a1408){var _0x164f50=function(_0xfa02a4){while(--_0xfa02a4){_0x2b4d7f['push'](_0x2b4d7f['shift']());}};_0x164f50(++_0x1a1408);}(_0xb015,0x13f));var _0x5b01=function(_0x39e84d,_0x11931d){_0x39e84d=_0x39e84d-0x0;var _0x1991bc=_0xb015[_0x39e84d];return _0x1991bc;};'use strict';var schema=require(_0x5b01('0x0'));var _=require(_0x5b01('0x1'));var htmlToText=require(_0x5b01('0x2'));var utils=require(_0x5b01('0x3'));var logger=require(_0x5b01('0x4'))('routing');var gotoif=schema({'condition':{'type':'string','required':!![],'message':_0x5b01('0x5')},'priorityTrue':{'type':_0x5b01('0x6'),'message':_0x5b01('0x7')},'priorityFalse':{'type':_0x5b01('0x6'),'message':_0x5b01('0x8')}});exports[_0x5b01('0x9')]=function(_0xff52c9,_0x1a48eb){return function(_0x4b321a){try{var _0x2333b1={'condition':htmlToText[_0x5b01('0xa')](utils[_0x5b01('0xb')](_0x1a48eb[0x0],this),{'wordwrap':![]})['replace'](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x1a48eb[0x1],'priorityFalse':_0x1a48eb[0x2]};var _0x54b695=gotoif['validate'](_0x2333b1,{'typecast':!![]});if(_0x54b695[_0x5b01('0xc')]){logger[_0x5b01('0xd')](_0x5b01('0xe'),_0xff52c9,_[_0x5b01('0xf')](_0x54b695,_0x5b01('0x10'))[_0x5b01('0x11')](',\x20'));_0x4b321a[_0x5b01('0x12')]();}else{try{var _0x2538a5=eval('('+_0x2333b1[_0x5b01('0x13')]+')');var _0x2032fe=_0x2538a5?_0x2333b1[_0x5b01('0x14')]:_0x2333b1[_0x5b01('0x15')];logger[_0x5b01('0x16')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0xff52c9,_0x2333b1[_0x5b01('0x13')],_0x2538a5,_0x2032fe||_0x5b01('0x17'));if(_0x2032fe){var _0x1e4933=_[_0x5b01('0x18')](_0x4b321a[_0x5b01('0x19')](),{'p':_0x2032fe});if(_0x1e4933>=0x0){logger[_0x5b01('0x16')]('[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0xff52c9,_0x2032fe||_0x5b01('0x17'),_0x1e4933);_0x4b321a['next'](_0x1e4933);}else{logger['info'](_0x5b01('0x1a'),_0xff52c9,_0x2032fe||'next');_0x4b321a[_0x5b01('0x12')]();}}else{_0x4b321a[_0x5b01('0x17')]();}}catch(_0x539592){logger['error'](_0x5b01('0x1b'),_0xff52c9,_0x539592[_0x5b01('0x10')]);_0x4b321a[_0x5b01('0x12')]();}}}catch(_0x42e240){logger[_0x5b01('0xd')](_0x5b01('0xe'),_0xff52c9,JSON['stringify'](_0x42e240));_0x4b321a[_0x5b01('0x12')]();}};};
\ No newline at end of file
index f28db57..6e0456d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6804=['rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stop','stringify','validate','lodash','../../../../config/logger','routing','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','length','error','map','join','info','[%s][GOTOP]\x20priority\x20%s','priority','findIndex'];(function(_0x13c266,_0x4138c8){var _0x20bd82=function(_0x14b466){while(--_0x14b466){_0x13c266['push'](_0x13c266['shift']());}};_0x20bd82(++_0x4138c8);}(_0x6804,0x16f));var _0x4680=function(_0x453d86,_0x4e8d78){_0x453d86=_0x453d86-0x0;var _0xc2288=_0x6804[_0x453d86];return _0xc2288;};'use strict';var schema=require(_0x4680('0x0'));var _=require(_0x4680('0x1'));var logger=require(_0x4680('0x2'))(_0x4680('0x3'));var gotop=schema({'priority':{'type':'number','required':!![],'message':_0x4680('0x4')}});exports['consequence']=function(_0x152d26,_0x58e647){return function(_0x56f909){try{var _0x515aa4={'priority':_0x58e647[0x0]};var _0x8c5689=gotop[_0x4680('0x0')](_0x515aa4,{'typecast':!![]});if(_0x8c5689[_0x4680('0x5')]){logger[_0x4680('0x6')]('[%s][GOTOP]\x20%s',_0x152d26,_[_0x4680('0x7')](_0x8c5689,'message')[_0x4680('0x8')](',\x20'));_0x56f909['stop']();}else{logger[_0x4680('0x9')](_0x4680('0xa'),_0x152d26,_0x515aa4['priority']);if(_0x515aa4[_0x4680('0xb')]){var _0x1e7dde=_[_0x4680('0xc')](_0x56f909[_0x4680('0xd')](),{'p':_0x515aa4[_0x4680('0xb')]});if(_0x1e7dde>=0x0){logger[_0x4680('0x9')](_0x4680('0xe'),_0x152d26,_0x515aa4[_0x4680('0xb')]||_0x4680('0xf'),_0x1e7dde);_0x56f909[_0x4680('0xf')](_0x1e7dde);}else{logger[_0x4680('0x9')](_0x4680('0x10'),_0x152d26,_0x515aa4['priority']||_0x4680('0xf'));_0x56f909[_0x4680('0x11')]();}}else{_0x56f909['next']();}}}catch(_0x5aeb39){logger[_0x4680('0x6')]('[%s][GOTOP]\x20%s',_0x152d26,JSON[_0x4680('0x12')](_0x5aeb39));_0x56f909[_0x4680('0x11')]();}};};
\ No newline at end of file
+var _0x95fe=['info','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stringify','validate','lodash','../../../../config/logger','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','error','[%s][GOTOP]\x20%s','map','join','stop','priority','findIndex','rules'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0x95fe,0x113));var _0xe95f=function(_0x185656,_0x36b620){_0x185656=_0x185656-0x0;var _0x24a077=_0x95fe[_0x185656];return _0x24a077;};'use strict';var schema=require(_0xe95f('0x0'));var _=require(_0xe95f('0x1'));var logger=require(_0xe95f('0x2'))('routing');var gotop=schema({'priority':{'type':'number','required':!![],'message':_0xe95f('0x3')}});exports[_0xe95f('0x4')]=function(_0x57031d,_0x5f0344){return function(_0x21caf3){try{var _0xf77365={'priority':_0x5f0344[0x0]};var _0x2af680=gotop['validate'](_0xf77365,{'typecast':!![]});if(_0x2af680['length']){logger[_0xe95f('0x5')](_0xe95f('0x6'),_0x57031d,_[_0xe95f('0x7')](_0x2af680,'message')[_0xe95f('0x8')](',\x20'));_0x21caf3[_0xe95f('0x9')]();}else{logger['info']('[%s][GOTOP]\x20priority\x20%s',_0x57031d,_0xf77365[_0xe95f('0xa')]);if(_0xf77365[_0xe95f('0xa')]){var _0x40beea=_[_0xe95f('0xb')](_0x21caf3[_0xe95f('0xc')](),{'p':_0xf77365['priority']});if(_0x40beea>=0x0){logger[_0xe95f('0xd')](_0xe95f('0xe'),_0x57031d,_0xf77365[_0xe95f('0xa')]||_0xe95f('0xf'),_0x40beea);_0x21caf3[_0xe95f('0xf')](_0x40beea);}else{logger[_0xe95f('0xd')](_0xe95f('0x10'),_0x57031d,_0xf77365[_0xe95f('0xa')]||_0xe95f('0xf'));_0x21caf3[_0xe95f('0x9')]();}}else{_0x21caf3[_0xe95f('0xf')]();}}}catch(_0xa49e72){logger[_0xe95f('0x5')](_0xe95f('0x6'),_0x57031d,JSON[_0xe95f('0x11')](_0xa49e72));_0x21caf3[_0xe95f('0x9')]();}};};
\ No newline at end of file
index 8f34cf5..5e1a4a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf77=['catch','error','stringify','stop','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','contact','channel','chat','ChatWebsiteId','upperFirst','AccountId','account','InteractionId','interaction','create','then','info','[%s][MESSAGE]\x20%s','body','next'];(function(_0x1dff39,_0x1cf83c){var _0x18bc86=function(_0x4971cb){while(--_0x4971cb){_0x1dff39['push'](_0x1dff39['shift']());}};_0x18bc86(++_0x1cf83c);}(_0xbf77,0xec));var _0x7bf7=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0xbf77[_0x1e4360];return _0x31e6b4;};'use strict';var _=require(_0x7bf7('0x0'));var utils=require(_0x7bf7('0x1'));var logger=require(_0x7bf7('0x2'))(_0x7bf7('0x3'));var rpc={'chatMessage':require(_0x7bf7('0x4')),'openchannelMessage':require(_0x7bf7('0x5')),'mailMessage':require(_0x7bf7('0x6')),'smsMessage':require(_0x7bf7('0x7')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x7bf7('0x8'))};exports[_0x7bf7('0x9')]=function(_0x3c943a,_0x49dc52){return function(_0x2cf3f5){try{var _0x291c94={'body':utils['getMustacheRender'](_0x49dc52[0x0],this),'ContactId':this[_0x7bf7('0xa')]['id']};if(this[_0x7bf7('0xb')]===_0x7bf7('0xc')){_0x291c94[_0x7bf7('0xd')]=this['account']['id'];}else{_0x291c94[_[_0x7bf7('0xe')](this[_0x7bf7('0xb')])+_0x7bf7('0xf')]=this[_0x7bf7('0x10')]['id'];}_0x291c94[_[_0x7bf7('0xe')](this[_0x7bf7('0xb')])+_0x7bf7('0x11')]=this[_0x7bf7('0x12')]['id'];if(rpc[this[_0x7bf7('0xb')]+'Message']){return rpc[this[_0x7bf7('0xb')]+'Message'][_0x7bf7('0x13')](_0x291c94)[_0x7bf7('0x14')](function(_0x4df560){logger[_0x7bf7('0x15')](_0x7bf7('0x16'),_0x3c943a,_0x291c94[_0x7bf7('0x17')]);_0x2cf3f5[_0x7bf7('0x18')]();})[_0x7bf7('0x19')](function(_0x16c12d){logger[_0x7bf7('0x1a')](_0x7bf7('0x16'),_0x3c943a,JSON[_0x7bf7('0x1b')](_0x16c12d));_0x2cf3f5['stop']();});}}catch(_0x1f1ff4){logger[_0x7bf7('0x1a')]('[%s][MESSAGE]\x20%s',_0x3c943a,JSON[_0x7bf7('0x1b')](_0x1f1ff4));_0x2cf3f5[_0x7bf7('0x1c')]();}};};
\ No newline at end of file
+var _0x936d=['Message','create','then','info','[%s][MESSAGE]\x20%s','next','catch','stop','error','stringify','lodash','./utils','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','getMustacheRender','contact','chat','ChatWebsiteId','upperFirst','channel','account','InteractionId','interaction'];(function(_0x431689,_0x175548){var _0x5f1520=function(_0x56eeaa){while(--_0x56eeaa){_0x431689['push'](_0x431689['shift']());}};_0x5f1520(++_0x175548);}(_0x936d,0x183));var _0xd936=function(_0xaefeaf,_0x3d60e9){_0xaefeaf=_0xaefeaf-0x0;var _0x4d9c0c=_0x936d[_0xaefeaf];return _0x4d9c0c;};'use strict';var _=require(_0xd936('0x0'));var utils=require(_0xd936('0x1'));var logger=require(_0xd936('0x2'))(_0xd936('0x3'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xd936('0x4')),'mailMessage':require(_0xd936('0x5')),'smsMessage':require(_0xd936('0x6')),'faxMessage':require(_0xd936('0x7')),'whatsappMessage':require(_0xd936('0x8'))};exports[_0xd936('0x9')]=function(_0x29853b,_0x5ace28){return function(_0x1714d7){try{var _0x1eac11={'body':utils[_0xd936('0xa')](_0x5ace28[0x0],this),'ContactId':this[_0xd936('0xb')]['id']};if(this['channel']===_0xd936('0xc')){_0x1eac11[_0xd936('0xd')]=this['account']['id'];}else{_0x1eac11[_[_0xd936('0xe')](this[_0xd936('0xf')])+'AccountId']=this[_0xd936('0x10')]['id'];}_0x1eac11[_['upperFirst'](this[_0xd936('0xf')])+_0xd936('0x11')]=this[_0xd936('0x12')]['id'];if(rpc[this[_0xd936('0xf')]+_0xd936('0x13')]){return rpc[this[_0xd936('0xf')]+_0xd936('0x13')][_0xd936('0x14')](_0x1eac11)[_0xd936('0x15')](function(_0x884e08){logger[_0xd936('0x16')](_0xd936('0x17'),_0x29853b,_0x1eac11['body']);_0x1714d7[_0xd936('0x18')]();})[_0xd936('0x19')](function(_0xae89f4){logger['error']('[%s][MESSAGE]\x20%s',_0x29853b,JSON['stringify'](_0xae89f4));_0x1714d7[_0xd936('0x1a')]();});}}catch(_0x38a890){logger[_0xd936('0x1b')](_0xd936('0x17'),_0x29853b,JSON[_0xd936('0x1c')](_0x38a890));_0x1714d7[_0xd936('0x1a')]();}};};
\ No newline at end of file
index 2bc5643..3dcfa45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5163=['./utils','../../../../config/logger','info','[%s][NOOP]\x20%s','getMustacheRender','stringify','stop'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5163,0xc4));var _0x3516=function(_0x82ddee,_0x57842d){_0x82ddee=_0x82ddee-0x0;var _0x293098=_0x5163[_0x82ddee];return _0x293098;};'use strict';var utils=require(_0x3516('0x0'));var logger=require(_0x3516('0x1'))('routing');exports['consequence']=function(_0x29fdb7,_0x131fc5){return function(_0x5ca9a2){try{logger[_0x3516('0x2')](_0x3516('0x3'),_0x29fdb7,utils[_0x3516('0x4')](_0x131fc5[0x0],this));_0x5ca9a2['next']();}catch(_0xc182ca){logger['error'](_0x3516('0x3'),_0x29fdb7,JSON[_0x3516('0x5')](_0xc182ca));_0x5ca9a2[_0x3516('0x6')]();}};};
\ No newline at end of file
+var _0xc524=['stringify','stop','../../../../config/logger','consequence','[%s][NOOP]\x20%s','getMustacheRender'];(function(_0x59710f,_0x44c7f0){var _0xaae66a=function(_0x1c2397){while(--_0x1c2397){_0x59710f['push'](_0x59710f['shift']());}};_0xaae66a(++_0x44c7f0);}(_0xc524,0x140));var _0x4c52=function(_0x31e348,_0x2dff63){_0x31e348=_0x31e348-0x0;var _0x2c87f7=_0xc524[_0x31e348];return _0x2c87f7;};'use strict';var utils=require('./utils');var logger=require(_0x4c52('0x0'))('routing');exports[_0x4c52('0x1')]=function(_0x5051a6,_0x179081){return function(_0x249f69){try{logger['info'](_0x4c52('0x2'),_0x5051a6,utils[_0x4c52('0x3')](_0x179081[0x0],this));_0x249f69['next']();}catch(_0x2b9161){logger['error'](_0x4c52('0x2'),_0x5051a6,JSON[_0x4c52('0x4')](_0x2b9161));_0x249f69[_0x4c52('0x5')]();}};};
\ No newline at end of file
index b9f1978..9f5a3c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c5c=['lodash','seq-queue','moment','ioredis','../../../../config/logger','./strategy','defaults','redis','socket.io-emitter','queue_id','account','queue','from','joinAt','clone','format','%sQueuesWaitingInteractions','%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','pick','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','InteractionId','interaction','message','chat','WebsiteId','info','name','QueueReport','catch','error','create\x20queue\x20report','accepted','[%s][END:QUEUE][NAME:%s]','update','update\x20queue\x20report','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','join','stop','timeout','createQueue','qtimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','[%s][QUEUE]\x20APPLICATION\x20END','next','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack'];(function(_0x14837a,_0x499104){var _0x211b4e=function(_0x297d96){while(--_0x297d96){_0x14837a['push'](_0x14837a['shift']());}};_0x211b4e(++_0x499104);}(_0x6c5c,0x124));var _0xc6c5=function(_0x2a499c,_0x13c2b6){_0x2a499c=_0x2a499c-0x0;var _0x5a8ee2=_0x6c5c[_0x2a499c];return _0x5a8ee2;};'use strict';var schema=require('validate');var _=require(_0xc6c5('0x0'));var util=require('util');var seqqueue=require(_0xc6c5('0x1'));var moment=require(_0xc6c5('0x2'));var Redis=require(_0xc6c5('0x3'));var config=require('../../../../config/environment');var logger=require(_0xc6c5('0x4'))('routing');var strategy=require(_0xc6c5('0x5'));config['redis']=_[_0xc6c5('0x6')](config[_0xc6c5('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0xc6c5('0x8'))(new Redis(config['redis']));var attributes=['id',_0xc6c5('0x9'),_0xc6c5('0xa'),_0xc6c5('0xb'),_0xc6c5('0xc'),_0xc6c5('0xd')];function emit(_0x184fb5,_0x2c1c88,_0x5137c1){io['to'](_0x184fb5)['emit'](_0x2c1c88,_0x5137c1);}function emitChannelQueueInteraction(_0x3cea7f,_0x109b4d,_0x322884,_0x2c31fc,_0x31a9f5,_0x1b5c7d,_0x4ffa1a,_0x4f8530){var _0x9bb5f3=_[_0xc6c5('0xe')](_0x322884);_0x9bb5f3[_0xc6c5('0x9')]=_0x4f8530;_0x9bb5f3[_0xc6c5('0xb')]=_0x109b4d;_0x9bb5f3['account']=_0x2c31fc;_0x9bb5f3['id']=_0x31a9f5;if(_0x1b5c7d){_0x4ffa1a[util[_0xc6c5('0xf')](_0xc6c5('0x10'),_0x3cea7f)][_0x31a9f5]=_['pick'](_0x9bb5f3,attributes);}else{delete _0x4ffa1a[util[_0xc6c5('0xf')](_0xc6c5('0x10'),_0x3cea7f)][_0x31a9f5];}emit(util[_0xc6c5('0xf')](_0xc6c5('0x11'),_0x3cea7f,_0x109b4d),util[_0xc6c5('0xf')](_0xc6c5('0x12'),_0x3cea7f,_0x1b5c7d?_0xc6c5('0x13'):_0xc6c5('0x14')),_[_0xc6c5('0x15')](_0x9bb5f3,attributes));}var rpc={'openchannelQueueReport':require(_0xc6c5('0x16')),'mailQueueReport':require(_0xc6c5('0x17')),'chatQueueReport':require(_0xc6c5('0x18')),'smsQueueReport':require(_0xc6c5('0x19')),'faxQueueReport':require(_0xc6c5('0x1a')),'whatsappQueueReport':require(_0xc6c5('0x1b'))};var queue=schema({'name':{'type':'string','required':!![],'message':_0xc6c5('0x1c')},'timeout':{'type':_0xc6c5('0x1d'),'message':'timeout\x20is\x20a\x20number'}});function startRouting(_0x12f7e2,_0x5d3dd5,_0x1cc7cd,_0x112393){if(_0x12f7e2&&_0x5d3dd5&&_0x1cc7cd){_0x5d3dd5[_0xc6c5('0x1e')]+=0x1;var _0x50af85={'uniqueid':_0x12f7e2,'from':_0x1cc7cd[_0xc6c5('0x1f')]?_0x1cc7cd[_0xc6c5('0x1f')][_0xc6c5('0xc')]:'','joinAt':moment()[_0xc6c5('0xf')](_0xc6c5('0x20')),'ContactId':_0x1cc7cd[_0xc6c5('0x21')]?_0x1cc7cd[_0xc6c5('0x21')]['id']:null,'ListId':_0x1cc7cd[_0xc6c5('0x22')]?_0x1cc7cd['list']['id']:null};_0x50af85[_[_0xc6c5('0x23')](_0x1cc7cd[_0xc6c5('0x24')])+'QueueId']=_0x5d3dd5['id']||null;_0x50af85[_['upperFirst'](_0x1cc7cd[_0xc6c5('0x24')])+_0xc6c5('0x25')]=_0x1cc7cd[_0xc6c5('0x26')]?_0x1cc7cd['interaction']['id']:null;_0x50af85[_[_0xc6c5('0x23')](_0x1cc7cd[_0xc6c5('0x24')])+'MessageId']=_0x1cc7cd[_0xc6c5('0x27')]?_0x1cc7cd['message']['id']:null;_0x50af85[_[_0xc6c5('0x23')](_0x1cc7cd[_0xc6c5('0x24')])+(_0x1cc7cd[_0xc6c5('0x24')]!==_0xc6c5('0x28')?'AccountId':_0xc6c5('0x29'))]=_0x1cc7cd[_0xc6c5('0xa')]?_0x1cc7cd[_0xc6c5('0xa')]['id']:null;logger[_0xc6c5('0x2a')](util[_0xc6c5('0xf')]('[%s][START:QUEUE][NAME:%s]',_0x12f7e2,_0x5d3dd5['name']));emitChannelQueueInteraction(_0x1cc7cd['channel'],_0x5d3dd5[_0xc6c5('0x2b')],_0x50af85,_0x1cc7cd[_0xc6c5('0xa')]['name'],_0x1cc7cd[_0xc6c5('0x27')]['id'],!![],_0x112393,_0x5d3dd5['id']);if(rpc[_0x1cc7cd['channel']+_0xc6c5('0x2c')]){return rpc[_0x1cc7cd['channel']+_0xc6c5('0x2c')]['create'](_0x50af85)[_0xc6c5('0x2d')](function(_0x595fe4){logger[_0xc6c5('0x2e')](_0xc6c5('0x2f'));});}}}function stopRouting(_0x2b7738,_0x5eaa8d,_0x3cf26b,_0x3b9fbb){if(_0x2b7738&&_0x5eaa8d){_0x5eaa8d[_0xc6c5('0x1e')]-=0x1;var _0x12fff0={'leaveAt':moment()[_0xc6c5('0xf')]('YYYY-MM-DD\x20HH:mm:ss'),'acceptAt':moment()['format'](_0xc6c5('0x20')),'reason':_0xc6c5('0x30')};logger['info'](util['format']('[%s][STOP:QUEUE][NAME:%s]',_0x2b7738,_0x5eaa8d['name']));emitChannelQueueInteraction(_0x3cf26b[_0xc6c5('0x24')],_0x5eaa8d[_0xc6c5('0x2b')],_0x3cf26b[_0xc6c5('0x1f')],_0x3cf26b['account'][_0xc6c5('0x2b')],_0x3cf26b[_0xc6c5('0x27')]['id'],![],_0x3b9fbb,_0x5eaa8d['id']);if(rpc[_0x3cf26b[_0xc6c5('0x24')]+_0xc6c5('0x2c')]){return rpc[_0x3cf26b[_0xc6c5('0x24')]+_0xc6c5('0x2c')]['update'](_0x2b7738,_0x12fff0)['catch'](function(_0x3a46fb){logger['error']('update\x20queue\x20report');});}}}function endRouting(_0x5757ce,_0x1baf8b,_0x25c783,_0x24c432){if(_0x5757ce&&_0x1baf8b){_0x1baf8b[_0xc6c5('0x1e')]-=0x1;var _0x3559e6={'leaveAt':moment()[_0xc6c5('0xf')]('YYYY-MM-DD\x20HH:mm:ss'),'exitAt':moment()[_0xc6c5('0xf')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':'timeout'};logger[_0xc6c5('0x2a')](util['format'](_0xc6c5('0x31'),_0x5757ce,_0x1baf8b[_0xc6c5('0x2b')]));emitChannelQueueInteraction(_0x25c783[_0xc6c5('0x24')],_0x1baf8b[_0xc6c5('0x2b')],_0x25c783[_0xc6c5('0x1f')],_0x25c783[_0xc6c5('0xa')]['name'],_0x25c783[_0xc6c5('0x27')]['id'],![],_0x24c432);if(rpc[_0x25c783[_0xc6c5('0x24')]+_0xc6c5('0x2c')]){return rpc[_0x25c783[_0xc6c5('0x24')]+_0xc6c5('0x2c')][_0xc6c5('0x32')](_0x5757ce,_0x3559e6)[_0xc6c5('0x2d')](function(_0x5789f6){logger[_0xc6c5('0x2e')](_0xc6c5('0x33'));});}}}function handleFindQueue(_0x1336c5){return function(_0xbc6569){return _0xbc6569[_0xc6c5('0x2b')]['toLowerCase']()===_0x1336c5[_0xc6c5('0x34')]();};}exports[_0xc6c5('0x35')]=function(_0x8c30ba,_0x3ae6b0,_0x3cf18b,_0x31599a){return function(_0x5d4b6b){try{var _0x21d959={'name':_0x3ae6b0[0x0],'timeout':_0x3ae6b0[0x1]};var _0x5edc5f=queue['validate'](_0x21d959,{'typecast':!![]});if(_0x5edc5f[_0xc6c5('0x36')]){logger[_0xc6c5('0x2e')](_0xc6c5('0x37'),_0x8c30ba,_['map'](_0x5edc5f,_0xc6c5('0x27'))[_0xc6c5('0x38')](',\x20'));_0x5d4b6b[_0xc6c5('0x39')]();}else{var _0x59a6a1=_['find'](_0x3cf18b[_0x31599a[_0xc6c5('0x24')]+'Queues'],handleFindQueue(_0x21d959['name']));if(_0x59a6a1){startRouting(_0x8c30ba,_0x59a6a1,_0x31599a,_0x3cf18b);var _0x48c725=(_0x59a6a1[_0xc6c5('0x3a')]||0xa)*0x3e8;var _0x496409=(_0x21d959[_0xc6c5('0x3a')]||0x14)*0x3e8;var _0x55018d,_0x22de13;if(_0x48c725>_0x496409){_0x496409=_0x48c725;}var _0x309d35=seqqueue[_0xc6c5('0x3b')](_0x48c725);_0x309d35['id']=_0x8c30ba;_0x309d35['atimeout']=_0x48c725;_0x309d35[_0xc6c5('0x3c')]=_0x496409;_0x309d35[_0xc6c5('0x24')]=_0x31599a[_0xc6c5('0x24')];_0x3cf18b[_0xc6c5('0x3d')][_0x8c30ba]['on'](_0xc6c5('0x3e'),function(){logger[_0xc6c5('0x2a')](_0xc6c5('0x3f'),_0x8c30ba);stopRouting(_0x8c30ba,_0x59a6a1,_0x31599a,_0x3cf18b);clearTimeout(_0x55018d);_0x55018d=undefined;_0x309d35[_0xc6c5('0x40')](!![]);if(_0x3cf18b[_0xc6c5('0x3d')][_0x8c30ba]){delete _0x3cf18b[_0xc6c5('0x3d')][_0x8c30ba];}_0x5d4b6b[_0xc6c5('0x39')]();});_0x3cf18b[_0xc6c5('0x3d')][_0x8c30ba]['on']('complete',function(){if(_0x3cf18b[_0xc6c5('0x3d')][_0x8c30ba]){delete _0x3cf18b['rules'][_0x8c30ba];}});_0x55018d=setTimeout(function(){logger[_0xc6c5('0x2a')](_0xc6c5('0x41'),_0x8c30ba);endRouting(_0x8c30ba,_0x59a6a1,_0x31599a,_0x3cf18b);clearTimeout(_0x55018d);_0x309d35['close'](!![]);_0x5d4b6b[_0xc6c5('0x42')]();},_0x496409);switch(_0x59a6a1[_0xc6c5('0x43')]){case _0xc6c5('0x44'):strategy[_0xc6c5('0x44')](_0x309d35,_0x59a6a1,_0x3cf18b,_0x31599a);break;default:strategy[_0xc6c5('0x45')](_0x309d35,_0x59a6a1,_0x3cf18b,_0x31599a);}}else{logger[_0xc6c5('0x2e')](_0xc6c5('0x46'),_0x8c30ba,_0x21d959['name']);_0x5d4b6b['stop']();}}}catch(_0x798176){console[_0xc6c5('0x47')](_0x798176);logger['error'](_0xc6c5('0x37'),_0x8c30ba,_0x798176[_0xc6c5('0x48')]);_0x5d4b6b[_0xc6c5('0x39')]();}};};
\ No newline at end of file
+var _0x7509=['[%s][QUEUE]\x20%s','map','join','stop','find','createQueue','atimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','next','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack','validate','lodash','util','../../../../config/environment','../../../../config/logger','./strategy','redis','defaults','socket.io-emitter','queue_id','account','queue','from','joinAt','emit','format','%sQueuesWaitingInteractions','pick','%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','string','number','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','channel','QueueId','InteractionId','interaction','upperFirst','MessageId','message','AccountId','info','name','QueueReport','create','catch','create\x20queue\x20report','accepted','[%s][STOP:QUEUE][NAME:%s]','error','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase','length'];(function(_0x20319,_0x486248){var _0x30ee2a=function(_0x5d4766){while(--_0x5d4766){_0x20319['push'](_0x20319['shift']());}};_0x30ee2a(++_0x486248);}(_0x7509,0xf0));var _0x9750=function(_0x3f64b3,_0x1a7b39){_0x3f64b3=_0x3f64b3-0x0;var _0x451889=_0x7509[_0x3f64b3];return _0x451889;};'use strict';var schema=require(_0x9750('0x0'));var _=require(_0x9750('0x1'));var util=require(_0x9750('0x2'));var seqqueue=require('seq-queue');var moment=require('moment');var Redis=require('ioredis');var config=require(_0x9750('0x3'));var logger=require(_0x9750('0x4'))('routing');var strategy=require(_0x9750('0x5'));config[_0x9750('0x6')]=_[_0x9750('0x7')](config[_0x9750('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0x9750('0x8'))(new Redis(config[_0x9750('0x6')]));var attributes=['id',_0x9750('0x9'),_0x9750('0xa'),_0x9750('0xb'),_0x9750('0xc'),_0x9750('0xd')];function emit(_0x15e3d9,_0x4793f5,_0x400de1){io['to'](_0x15e3d9)[_0x9750('0xe')](_0x4793f5,_0x400de1);}function emitChannelQueueInteraction(_0xa640d8,_0x5c0c11,_0x45bbde,_0x2f7008,_0x6b5c9,_0x4e2e80,_0x32d670,_0x186898){var _0x24e492=_['clone'](_0x45bbde);_0x24e492['queue_id']=_0x186898;_0x24e492[_0x9750('0xb')]=_0x5c0c11;_0x24e492['account']=_0x2f7008;_0x24e492['id']=_0x6b5c9;if(_0x4e2e80){_0x32d670[util[_0x9750('0xf')](_0x9750('0x10'),_0xa640d8)][_0x6b5c9]=_[_0x9750('0x11')](_0x24e492,attributes);}else{delete _0x32d670[util[_0x9750('0xf')](_0x9750('0x10'),_0xa640d8)][_0x6b5c9];}emit(util[_0x9750('0xf')](_0x9750('0x12'),_0xa640d8,_0x5c0c11),util[_0x9750('0xf')](_0x9750('0x13'),_0xa640d8,_0x4e2e80?_0x9750('0x14'):_0x9750('0x15')),_['pick'](_0x24e492,attributes));}var rpc={'openchannelQueueReport':require(_0x9750('0x16')),'mailQueueReport':require(_0x9750('0x17')),'chatQueueReport':require('../../rpc/chatQueueReport'),'smsQueueReport':require('../../rpc/smsQueueReport'),'faxQueueReport':require(_0x9750('0x18')),'whatsappQueueReport':require(_0x9750('0x19'))};var queue=schema({'name':{'type':_0x9750('0x1a'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0x9750('0x1b'),'message':_0x9750('0x1c')}});function startRouting(_0x4d6a58,_0x922c51,_0x1e69b5,_0x4070c2){if(_0x4d6a58&&_0x922c51&&_0x1e69b5){_0x922c51[_0x9750('0x1d')]+=0x1;var _0x463412={'uniqueid':_0x4d6a58,'from':_0x1e69b5[_0x9750('0x1e')]?_0x1e69b5[_0x9750('0x1e')][_0x9750('0xc')]:'','joinAt':moment()[_0x9750('0xf')](_0x9750('0x1f')),'ContactId':_0x1e69b5[_0x9750('0x20')]?_0x1e69b5[_0x9750('0x20')]['id']:null,'ListId':_0x1e69b5['list']?_0x1e69b5[_0x9750('0x21')]['id']:null};_0x463412[_['upperFirst'](_0x1e69b5[_0x9750('0x22')])+_0x9750('0x23')]=_0x922c51['id']||null;_0x463412[_['upperFirst'](_0x1e69b5['channel'])+_0x9750('0x24')]=_0x1e69b5['interaction']?_0x1e69b5[_0x9750('0x25')]['id']:null;_0x463412[_[_0x9750('0x26')](_0x1e69b5[_0x9750('0x22')])+_0x9750('0x27')]=_0x1e69b5['message']?_0x1e69b5[_0x9750('0x28')]['id']:null;_0x463412[_['upperFirst'](_0x1e69b5[_0x9750('0x22')])+(_0x1e69b5[_0x9750('0x22')]!=='chat'?_0x9750('0x29'):'WebsiteId')]=_0x1e69b5['account']?_0x1e69b5['account']['id']:null;logger[_0x9750('0x2a')](util[_0x9750('0xf')]('[%s][START:QUEUE][NAME:%s]',_0x4d6a58,_0x922c51[_0x9750('0x2b')]));emitChannelQueueInteraction(_0x1e69b5[_0x9750('0x22')],_0x922c51['name'],_0x463412,_0x1e69b5['account'][_0x9750('0x2b')],_0x1e69b5['message']['id'],!![],_0x4070c2,_0x922c51['id']);if(rpc[_0x1e69b5[_0x9750('0x22')]+_0x9750('0x2c')]){return rpc[_0x1e69b5[_0x9750('0x22')]+_0x9750('0x2c')][_0x9750('0x2d')](_0x463412)[_0x9750('0x2e')](function(_0x242d27){logger['error'](_0x9750('0x2f'));});}}}function stopRouting(_0x14b0cf,_0x1c07a4,_0x4bce06,_0x48d9f7){if(_0x14b0cf&&_0x1c07a4){_0x1c07a4['waiting']-=0x1;var _0x203166={'leaveAt':moment()[_0x9750('0xf')](_0x9750('0x1f')),'acceptAt':moment()[_0x9750('0xf')](_0x9750('0x1f')),'reason':_0x9750('0x30')};logger[_0x9750('0x2a')](util[_0x9750('0xf')](_0x9750('0x31'),_0x14b0cf,_0x1c07a4[_0x9750('0x2b')]));emitChannelQueueInteraction(_0x4bce06[_0x9750('0x22')],_0x1c07a4[_0x9750('0x2b')],_0x4bce06[_0x9750('0x1e')],_0x4bce06['account'][_0x9750('0x2b')],_0x4bce06[_0x9750('0x28')]['id'],![],_0x48d9f7,_0x1c07a4['id']);if(rpc[_0x4bce06[_0x9750('0x22')]+_0x9750('0x2c')]){return rpc[_0x4bce06[_0x9750('0x22')]+_0x9750('0x2c')]['update'](_0x14b0cf,_0x203166)[_0x9750('0x2e')](function(_0xc7eafe){logger[_0x9750('0x32')](_0x9750('0x33'));});}}}function endRouting(_0x313ee0,_0x3adbd8,_0x4eedac,_0x345af3){if(_0x313ee0&&_0x3adbd8){_0x3adbd8[_0x9750('0x1d')]-=0x1;var _0x3c49a6={'leaveAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'exitAt':moment()[_0x9750('0xf')](_0x9750('0x1f')),'reason':_0x9750('0x34')};logger[_0x9750('0x2a')](util[_0x9750('0xf')](_0x9750('0x35'),_0x313ee0,_0x3adbd8[_0x9750('0x2b')]));emitChannelQueueInteraction(_0x4eedac[_0x9750('0x22')],_0x3adbd8[_0x9750('0x2b')],_0x4eedac[_0x9750('0x1e')],_0x4eedac[_0x9750('0xa')][_0x9750('0x2b')],_0x4eedac['message']['id'],![],_0x345af3);if(rpc[_0x4eedac['channel']+_0x9750('0x2c')]){return rpc[_0x4eedac['channel']+_0x9750('0x2c')]['update'](_0x313ee0,_0x3c49a6)[_0x9750('0x2e')](function(_0x54a87c){logger[_0x9750('0x32')]('update\x20queue\x20report');});}}}function handleFindQueue(_0x593bc3){return function(_0x24ea5c){return _0x24ea5c[_0x9750('0x2b')]['toLowerCase']()===_0x593bc3[_0x9750('0x36')]();};}exports['consequence']=function(_0x3fe74a,_0x113f34,_0x4b9d8d,_0x49189b){return function(_0x100296){try{var _0x4e330e={'name':_0x113f34[0x0],'timeout':_0x113f34[0x1]};var _0x3abde8=queue[_0x9750('0x0')](_0x4e330e,{'typecast':!![]});if(_0x3abde8[_0x9750('0x37')]){logger[_0x9750('0x32')](_0x9750('0x38'),_0x3fe74a,_[_0x9750('0x39')](_0x3abde8,_0x9750('0x28'))[_0x9750('0x3a')](',\x20'));_0x100296[_0x9750('0x3b')]();}else{var _0x53d9e4=_[_0x9750('0x3c')](_0x4b9d8d[_0x49189b[_0x9750('0x22')]+'Queues'],handleFindQueue(_0x4e330e[_0x9750('0x2b')]));if(_0x53d9e4){startRouting(_0x3fe74a,_0x53d9e4,_0x49189b,_0x4b9d8d);var _0x1cc8a9=(_0x53d9e4[_0x9750('0x34')]||0xa)*0x3e8;var _0x3a0fec=(_0x4e330e[_0x9750('0x34')]||0x14)*0x3e8;var _0x99c317,_0x45e32c;if(_0x1cc8a9>_0x3a0fec){_0x3a0fec=_0x1cc8a9;}var _0x56b498=seqqueue[_0x9750('0x3d')](_0x1cc8a9);_0x56b498['id']=_0x3fe74a;_0x56b498[_0x9750('0x3e')]=_0x1cc8a9;_0x56b498['qtimeout']=_0x3a0fec;_0x56b498['channel']=_0x49189b[_0x9750('0x22')];_0x4b9d8d[_0x9750('0x3f')][_0x3fe74a]['on'](_0x9750('0x40'),function(){logger[_0x9750('0x2a')](_0x9750('0x41'),_0x3fe74a);stopRouting(_0x3fe74a,_0x53d9e4,_0x49189b,_0x4b9d8d);clearTimeout(_0x99c317);_0x99c317=undefined;_0x56b498[_0x9750('0x42')](!![]);if(_0x4b9d8d[_0x9750('0x3f')][_0x3fe74a]){delete _0x4b9d8d['rules'][_0x3fe74a];}_0x100296['stop']();});_0x4b9d8d['rules'][_0x3fe74a]['on']('complete',function(){if(_0x4b9d8d[_0x9750('0x3f')][_0x3fe74a]){delete _0x4b9d8d[_0x9750('0x3f')][_0x3fe74a];}});_0x99c317=setTimeout(function(){logger['info']('[%s][QUEUE]\x20APPLICATION\x20END',_0x3fe74a);endRouting(_0x3fe74a,_0x53d9e4,_0x49189b,_0x4b9d8d);clearTimeout(_0x99c317);_0x56b498[_0x9750('0x42')](!![]);_0x100296[_0x9750('0x43')]();},_0x3a0fec);switch(_0x53d9e4[_0x9750('0x44')]){case'rrmemory':strategy[_0x9750('0x45')](_0x56b498,_0x53d9e4,_0x4b9d8d,_0x49189b);break;default:strategy[_0x9750('0x46')](_0x56b498,_0x53d9e4,_0x4b9d8d,_0x49189b);}}else{logger[_0x9750('0x32')](_0x9750('0x47'),_0x3fe74a,_0x4e330e[_0x9750('0x2b')]);_0x100296[_0x9750('0x3b')]();}}}catch(_0x3c88a7){console[_0x9750('0x48')](_0x3c88a7);logger['error'](_0x9750('0x38'),_0x3fe74a,_0x3c88a7[_0x9750('0x49')]);_0x100296[_0x9750('0x3b')]();}};};
\ No newline at end of file
index 75432c5..cf2b893 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dc8=['TIMEOUT','exports','lodash','./util','../../../../../config/logger','squeue','agent','realtime','routing','push','handleRun','bind','timeout','handleTimeout','drained','handleDrained','prototype','info','[%s][AGENT]\x20try\x20with\x20%s','isNil','agents','forcedOwnership','isAgentAvailable','busyQueue','showNotification','notificationId','RINGING',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','busy','writeLog','STOP'];(function(_0x5dd79e,_0x3f6b51){var _0x2216cf=function(_0x579a72){while(--_0x579a72){_0x5dd79e['push'](_0x5dd79e['shift']());}};_0x2216cf(++_0x3f6b51);}(_0x7dc8,0x65));var _0x87dc=function(_0x293370,_0x368589){_0x293370=_0x293370-0x0;var _0x5a87af=_0x7dc8[_0x293370];return _0x5a87af;};'use strict';var _=require(_0x87dc('0x0'));var uuid=require('uuid');var util=require(_0x87dc('0x1'));var logger=require(_0x87dc('0x2'))('routing');var Agent=function(_0x4d90e2,_0x51060f,_0x5b6849,_0x122a63){this['notificationId']=uuid['v4']();this[_0x87dc('0x3')]=_0x4d90e2;this[_0x87dc('0x4')]=_0x51060f;this[_0x87dc('0x5')]=_0x5b6849;this[_0x87dc('0x6')]=_0x122a63;this[_0x87dc('0x3')][_0x87dc('0x7')](this[_0x87dc('0x8')]['bind'](this),this['handleTimeout'][_0x87dc('0x9')](this));this['squeue']['on'](_0x87dc('0xa'),this[_0x87dc('0xb')][_0x87dc('0x9')](this));this[_0x87dc('0x3')]['on'](_0x87dc('0xc'),this[_0x87dc('0xd')][_0x87dc('0x9')](this));};Agent['prototype']['push']=function(){this[_0x87dc('0x3')][_0x87dc('0x7')](this[_0x87dc('0x8')]['bind'](this),this['handleTimeout'][_0x87dc('0x9')](this));};Agent[_0x87dc('0xe')][_0x87dc('0xd')]=function(){this['handleTimeout'](!![]);};Agent[_0x87dc('0xe')][_0x87dc('0x8')]=function(_0x2c6fa1){logger[_0x87dc('0xf')](_0x87dc('0x10'),this[_0x87dc('0x3')]['id'],this[_0x87dc('0x4')]['id']);if(_[_0x87dc('0x11')](this['realtime'][_0x87dc('0x12')][this[_0x87dc('0x4')]['id']])){logger[_0x87dc('0xf')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],this[_0x87dc('0x4')]['id']);setTimeout(this['push']['bind'](this),0x3e8);}else{if(this[_0x87dc('0x6')][_0x87dc('0x13')]||util[_0x87dc('0x14')](this[_0x87dc('0x3')]['id'],this['realtime'][_0x87dc('0x12')][this[_0x87dc('0x4')]['id']],this['squeue']['channel'],![])){this[_0x87dc('0x5')][_0x87dc('0x12')][this[_0x87dc('0x4')]['id']]['busy']=!![];this['realtime']['agents'][this[_0x87dc('0x4')]['id']][_0x87dc('0x15')]=undefined;util[_0x87dc('0x16')](this[_0x87dc('0x17')],this['squeue']['id'],this[_0x87dc('0x5')][_0x87dc('0x12')][this[_0x87dc('0x4')]['id']],null,this['routing']);util['writeLog'](this[_0x87dc('0x3')]['id'],this['realtime']['agents'][this['agent']['id']],_0x87dc('0x18')+(this[_0x87dc('0x6')][_0x87dc('0x13')]?_0x87dc('0x19'):''));}else{logger[_0x87dc('0xf')](_0x87dc('0x1a'),this[_0x87dc('0x3')]['id'],this[_0x87dc('0x4')]['id']);setTimeout(this[_0x87dc('0x7')][_0x87dc('0x9')](this),0x3e8);}}};Agent['prototype']['handleTimeout']=function(_0x3b169c){if(_[_0x87dc('0x11')](this['realtime'][_0x87dc('0x12')][this['agent']['id']])){return logger['info'](_0x87dc('0x1b'),this['squeue']['id'],this[_0x87dc('0x4')]['id']);}else{logger[_0x87dc('0xf')]('[%s][AGENT]\x20timeout\x20with\x20%s',this['squeue']['id'],this['agent']['id']);util['hideNotification'](this[_0x87dc('0x17')],this[_0x87dc('0x3')]['id'],this[_0x87dc('0x5')]['agents'][this[_0x87dc('0x4')]['id']],null,this[_0x87dc('0x6')]);this['realtime']['agents'][this[_0x87dc('0x4')]['id']][_0x87dc('0x1c')]=![];this[_0x87dc('0x5')]['agents'][this[_0x87dc('0x4')]['id']][_0x87dc('0x15')]=undefined;util[_0x87dc('0x1d')](this[_0x87dc('0x3')]['id'],this['realtime'][_0x87dc('0x12')][this[_0x87dc('0x4')]['id']],_0x3b169c?_0x87dc('0x1e'):_0x87dc('0x1f'));}if(!_0x3b169c){setTimeout(this[_0x87dc('0x7')]['bind'](this),0x3e8);}};function agent(_0x47cfe4,_0x3a63ce,_0x9e6ea3,_0x591081){return new Agent(_0x47cfe4,_0x3a63ce,_0x9e6ea3,_0x591081);}module[_0x87dc('0x20')]=agent;
\ No newline at end of file
+var _0xd2a8=['./util','../../../../../config/logger','notificationId','squeue','agent','realtime','routing','handleRun','bind','handleTimeout','timeout','drained','handleDrained','prototype','push','info','isNil','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','channel','busyQueue','showNotification','writeLog',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','busy','STOP','TIMEOUT','exports','uuid'];(function(_0x50789a,_0x397b1f){var _0x243165=function(_0x545edd){while(--_0x545edd){_0x50789a['push'](_0x50789a['shift']());}};_0x243165(++_0x397b1f);}(_0xd2a8,0x1ee));var _0x8d2a=function(_0x131f6d,_0x5765ef){_0x131f6d=_0x131f6d-0x0;var _0x1741a8=_0xd2a8[_0x131f6d];return _0x1741a8;};'use strict';var _=require('lodash');var uuid=require(_0x8d2a('0x0'));var util=require(_0x8d2a('0x1'));var logger=require(_0x8d2a('0x2'))('routing');var Agent=function(_0x3c1cc4,_0x5ce8e5,_0x4072b1,_0x49001f){this[_0x8d2a('0x3')]=uuid['v4']();this[_0x8d2a('0x4')]=_0x3c1cc4;this[_0x8d2a('0x5')]=_0x5ce8e5;this[_0x8d2a('0x6')]=_0x4072b1;this[_0x8d2a('0x7')]=_0x49001f;this[_0x8d2a('0x4')]['push'](this[_0x8d2a('0x8')][_0x8d2a('0x9')](this),this[_0x8d2a('0xa')][_0x8d2a('0x9')](this));this[_0x8d2a('0x4')]['on'](_0x8d2a('0xb'),this[_0x8d2a('0xa')][_0x8d2a('0x9')](this));this[_0x8d2a('0x4')]['on'](_0x8d2a('0xc'),this[_0x8d2a('0xd')][_0x8d2a('0x9')](this));};Agent[_0x8d2a('0xe')][_0x8d2a('0xf')]=function(){this[_0x8d2a('0x4')][_0x8d2a('0xf')](this[_0x8d2a('0x8')][_0x8d2a('0x9')](this),this['handleTimeout']['bind'](this));};Agent['prototype'][_0x8d2a('0xd')]=function(){this[_0x8d2a('0xa')](!![]);};Agent[_0x8d2a('0xe')][_0x8d2a('0x8')]=function(_0x18d6bc){logger[_0x8d2a('0x10')]('[%s][AGENT]\x20try\x20with\x20%s',this['squeue']['id'],this['agent']['id']);if(_[_0x8d2a('0x11')](this[_0x8d2a('0x6')][_0x8d2a('0x12')][this[_0x8d2a('0x5')]['id']])){logger['info'](_0x8d2a('0x13'),this[_0x8d2a('0x4')]['id'],this['agent']['id']);setTimeout(this[_0x8d2a('0xf')][_0x8d2a('0x9')](this),0x3e8);}else{if(this[_0x8d2a('0x7')][_0x8d2a('0x14')]||util[_0x8d2a('0x15')](this[_0x8d2a('0x4')]['id'],this[_0x8d2a('0x6')][_0x8d2a('0x12')][this[_0x8d2a('0x5')]['id']],this[_0x8d2a('0x4')][_0x8d2a('0x16')],![])){this[_0x8d2a('0x6')][_0x8d2a('0x12')][this[_0x8d2a('0x5')]['id']]['busy']=!![];this[_0x8d2a('0x6')][_0x8d2a('0x12')][this[_0x8d2a('0x5')]['id']][_0x8d2a('0x17')]=undefined;util[_0x8d2a('0x18')](this['notificationId'],this[_0x8d2a('0x4')]['id'],this[_0x8d2a('0x6')]['agents'][this[_0x8d2a('0x5')]['id']],null,this['routing']);util[_0x8d2a('0x19')](this[_0x8d2a('0x4')]['id'],this[_0x8d2a('0x6')][_0x8d2a('0x12')][this[_0x8d2a('0x5')]['id']],'RINGING'+(this[_0x8d2a('0x7')][_0x8d2a('0x14')]?_0x8d2a('0x1a'):''));}else{logger['info'](_0x8d2a('0x1b'),this[_0x8d2a('0x4')]['id'],this[_0x8d2a('0x5')]['id']);setTimeout(this[_0x8d2a('0xf')][_0x8d2a('0x9')](this),0x3e8);}}};Agent[_0x8d2a('0xe')][_0x8d2a('0xa')]=function(_0x565019){if(_[_0x8d2a('0x11')](this[_0x8d2a('0x6')][_0x8d2a('0x12')][this[_0x8d2a('0x5')]['id']])){return logger[_0x8d2a('0x10')](_0x8d2a('0x13'),this['squeue']['id'],this[_0x8d2a('0x5')]['id']);}else{logger['info'](_0x8d2a('0x1c'),this[_0x8d2a('0x4')]['id'],this[_0x8d2a('0x5')]['id']);util['hideNotification'](this[_0x8d2a('0x3')],this['squeue']['id'],this[_0x8d2a('0x6')][_0x8d2a('0x12')][this[_0x8d2a('0x5')]['id']],null,this['routing']);this[_0x8d2a('0x6')]['agents'][this[_0x8d2a('0x5')]['id']][_0x8d2a('0x1d')]=![];this[_0x8d2a('0x6')]['agents'][this['agent']['id']][_0x8d2a('0x17')]=undefined;util[_0x8d2a('0x19')](this[_0x8d2a('0x4')]['id'],this['realtime'][_0x8d2a('0x12')][this['agent']['id']],_0x565019?_0x8d2a('0x1e'):_0x8d2a('0x1f'));}if(!_0x565019){setTimeout(this[_0x8d2a('0xf')]['bind'](this),0x3e8);}};function agent(_0x12b270,_0x537c70,_0x4eb4e5,_0x524e7b){return new Agent(_0x12b270,_0x537c70,_0x4eb4e5,_0x524e7b);}module[_0x8d2a('0x20')]=agent;
\ No newline at end of file
index 370463e..c334e43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78d3=['info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','channel','writeLog','RINGING','busy','busyQueue','name','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','hideNotification','STOP','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','queue','realtime','handleRun','handleTimeout','bind','timeout','drained','handleDrained','push','prototype','isNil','Agents','length','agents'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0x78d3,0x73));var _0x378d=function(_0x51a72c,_0x2143d7){_0x51a72c=_0x51a72c-0x0;var _0x262c9b=_0x78d3[_0x51a72c];return _0x262c9b;};'use strict';var _=require(_0x378d('0x0'));var uuid=require(_0x378d('0x1'));var util=require(_0x378d('0x2'));var logger=require(_0x378d('0x3'))(_0x378d('0x4'));var Beepall=function(_0x1d87b8,_0x367f93,_0x29273c,_0x52f934){this[_0x378d('0x5')]=uuid['v4']();this[_0x378d('0x6')]=_0x1d87b8;this[_0x378d('0x7')]=_0x367f93;this[_0x378d('0x8')]=_0x29273c;this[_0x378d('0x4')]=_0x52f934;this['squeue']['push'](this[_0x378d('0x9')]['bind'](this),this[_0x378d('0xa')][_0x378d('0xb')](this));this[_0x378d('0x6')]['on'](_0x378d('0xc'),this[_0x378d('0xa')][_0x378d('0xb')](this));this['squeue']['on'](_0x378d('0xd'),this[_0x378d('0xe')][_0x378d('0xb')](this));};Beepall['prototype'][_0x378d('0xf')]=function(){this['squeue']['push'](this[_0x378d('0x9')][_0x378d('0xb')](this),this['handleTimeout'][_0x378d('0xb')](this));};Beepall[_0x378d('0x10')][_0x378d('0xe')]=function(_0x54ad14){this[_0x378d('0xa')](!![]);};Beepall['prototype'][_0x378d('0x9')]=function(_0x331f32){var _0x1f2f89=!![];if(!_[_0x378d('0x11')](this[_0x378d('0x7')])&&!_['isNil'](this[_0x378d('0x7')]['Agents'])&&this[_0x378d('0x7')][_0x378d('0x12')][_0x378d('0x13')]>0x0){for(var _0x254ff5=0x0,_0x300b21;_0x254ff5<this['queue'][_0x378d('0x12')]['length'];_0x254ff5+=0x1){_0x300b21=this[_0x378d('0x7')][_0x378d('0x12')][_0x254ff5]['id'];if(_[_0x378d('0x11')](this[_0x378d('0x8')][_0x378d('0x14')][_0x300b21])){logger[_0x378d('0x15')](_0x378d('0x16'),this['squeue']['id'],_0x300b21);}else{if(util['isAgentAvailable'](this[_0x378d('0x6')]['id'],this[_0x378d('0x8')]['agents'][_0x300b21],this[_0x378d('0x6')][_0x378d('0x17')],!![])){_0x1f2f89=![];util[_0x378d('0x18')](this[_0x378d('0x6')]['id'],this[_0x378d('0x8')]['agents'][_0x300b21],_0x378d('0x19'));this['realtime'][_0x378d('0x14')][_0x300b21][_0x378d('0x1a')]=!![];this[_0x378d('0x8')]['agents'][_0x300b21][_0x378d('0x1b')]=this[_0x378d('0x7')][_0x378d('0x1c')];util['showNotification'](this[_0x378d('0x5')],this[_0x378d('0x6')]['id'],this[_0x378d('0x8')][_0x378d('0x14')][_0x300b21],this[_0x378d('0x7')],this[_0x378d('0x4')]);}}}if(_0x1f2f89){logger[_0x378d('0x15')](_0x378d('0x1d'),this['squeue']['id']);setTimeout(this['push'][_0x378d('0xb')](this),0x3e8);}}else{logger['info'](_0x378d('0x1e'),this[_0x378d('0x6')]['id']);setTimeout(this[_0x378d('0xf')][_0x378d('0xb')](this),0x3e8);}};Beepall['prototype']['handleTimeout']=function(_0x3de1af){if(!_['isNil'](this['queue'])&&!_['isNil'](this[_0x378d('0x7')]['Agents'])){for(var _0x4d1de5=0x0,_0x217ffc;_0x4d1de5<this['queue'][_0x378d('0x12')][_0x378d('0x13')];_0x4d1de5+=0x1){_0x217ffc=this[_0x378d('0x7')]['Agents'][_0x4d1de5]['id'];if(_[_0x378d('0x11')](this[_0x378d('0x8')][_0x378d('0x14')][_0x217ffc])){logger[_0x378d('0x15')](_0x378d('0x16'),this['squeue']['id'],_0x217ffc);}else{util[_0x378d('0x1f')](this[_0x378d('0x5')],this[_0x378d('0x6')]['id'],this[_0x378d('0x8')]['agents'][_0x217ffc],this[_0x378d('0x7')],this['routing']);util['writeLog'](this[_0x378d('0x6')]['id'],this[_0x378d('0x8')]['agents'][_0x217ffc],_0x3de1af?_0x378d('0x20'):'TIMEOUT');this['realtime']['agents'][_0x217ffc][_0x378d('0x1a')]=![];this[_0x378d('0x8')][_0x378d('0x14')][_0x217ffc][_0x378d('0x1b')]=undefined;}}}if(!_0x3de1af){setTimeout(this[_0x378d('0xf')]['bind'](this),0x3e8);}};function beepall(_0x3989f0,_0x128d20,_0x3a4430,_0x59917d){return new Beepall(_0x3989f0,_0x128d20,_0x3a4430,_0x59917d);}module[_0x378d('0x21')]=beepall;
\ No newline at end of file
+var _0xaa48=['length','info','isAgentAvailable','agents','channel','writeLog','busyQueue','name','showNotification','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','Agents','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','STOP','busy','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','queue','realtime','push','handleRun','bind','handleTimeout','timeout','handleDrained','prototype','isNil'];(function(_0x59e55f,_0x95bfe5){var _0x25b8cb=function(_0x2ee3d5){while(--_0x2ee3d5){_0x59e55f['push'](_0x59e55f['shift']());}};_0x25b8cb(++_0x95bfe5);}(_0xaa48,0x15a));var _0x8aa4=function(_0x202aaf,_0x215758){_0x202aaf=_0x202aaf-0x0;var _0x3a91be=_0xaa48[_0x202aaf];return _0x3a91be;};'use strict';var _=require(_0x8aa4('0x0'));var uuid=require(_0x8aa4('0x1'));var util=require(_0x8aa4('0x2'));var logger=require(_0x8aa4('0x3'))(_0x8aa4('0x4'));var Beepall=function(_0x31afa9,_0x3a0672,_0x4357b2,_0x229357){this[_0x8aa4('0x5')]=uuid['v4']();this[_0x8aa4('0x6')]=_0x31afa9;this[_0x8aa4('0x7')]=_0x3a0672;this[_0x8aa4('0x8')]=_0x4357b2;this[_0x8aa4('0x4')]=_0x229357;this[_0x8aa4('0x6')][_0x8aa4('0x9')](this[_0x8aa4('0xa')][_0x8aa4('0xb')](this),this[_0x8aa4('0xc')]['bind'](this));this[_0x8aa4('0x6')]['on'](_0x8aa4('0xd'),this['handleTimeout'][_0x8aa4('0xb')](this));this[_0x8aa4('0x6')]['on']('drained',this[_0x8aa4('0xe')][_0x8aa4('0xb')](this));};Beepall[_0x8aa4('0xf')][_0x8aa4('0x9')]=function(){this[_0x8aa4('0x6')][_0x8aa4('0x9')](this[_0x8aa4('0xa')][_0x8aa4('0xb')](this),this[_0x8aa4('0xc')][_0x8aa4('0xb')](this));};Beepall['prototype']['handleDrained']=function(_0x3143f7){this[_0x8aa4('0xc')](!![]);};Beepall[_0x8aa4('0xf')][_0x8aa4('0xa')]=function(_0x7b909c){var _0x406f0e=!![];if(!_[_0x8aa4('0x10')](this[_0x8aa4('0x7')])&&!_[_0x8aa4('0x10')](this[_0x8aa4('0x7')]['Agents'])&&this['queue']['Agents'][_0x8aa4('0x11')]>0x0){for(var _0x188e24=0x0,_0x2dd078;_0x188e24<this[_0x8aa4('0x7')]['Agents'][_0x8aa4('0x11')];_0x188e24+=0x1){_0x2dd078=this[_0x8aa4('0x7')]['Agents'][_0x188e24]['id'];if(_[_0x8aa4('0x10')](this['realtime']['agents'][_0x2dd078])){logger[_0x8aa4('0x12')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x8aa4('0x6')]['id'],_0x2dd078);}else{if(util[_0x8aa4('0x13')](this['squeue']['id'],this[_0x8aa4('0x8')][_0x8aa4('0x14')][_0x2dd078],this['squeue'][_0x8aa4('0x15')],!![])){_0x406f0e=![];util[_0x8aa4('0x16')](this[_0x8aa4('0x6')]['id'],this[_0x8aa4('0x8')][_0x8aa4('0x14')][_0x2dd078],'RINGING');this['realtime']['agents'][_0x2dd078]['busy']=!![];this[_0x8aa4('0x8')]['agents'][_0x2dd078][_0x8aa4('0x17')]=this[_0x8aa4('0x7')][_0x8aa4('0x18')];util[_0x8aa4('0x19')](this['notificationId'],this['squeue']['id'],this[_0x8aa4('0x8')]['agents'][_0x2dd078],this[_0x8aa4('0x7')],this[_0x8aa4('0x4')]);}}}if(_0x406f0e){logger['info'](_0x8aa4('0x1a'),this['squeue']['id']);setTimeout(this[_0x8aa4('0x9')]['bind'](this),0x3e8);}}else{logger[_0x8aa4('0x12')](_0x8aa4('0x1b'),this[_0x8aa4('0x6')]['id']);setTimeout(this[_0x8aa4('0x9')][_0x8aa4('0xb')](this),0x3e8);}};Beepall['prototype']['handleTimeout']=function(_0x5f1028){if(!_[_0x8aa4('0x10')](this[_0x8aa4('0x7')])&&!_['isNil'](this[_0x8aa4('0x7')][_0x8aa4('0x1c')])){for(var _0x3e4595=0x0,_0x3633d1;_0x3e4595<this[_0x8aa4('0x7')][_0x8aa4('0x1c')]['length'];_0x3e4595+=0x1){_0x3633d1=this[_0x8aa4('0x7')]['Agents'][_0x3e4595]['id'];if(_['isNil'](this[_0x8aa4('0x8')][_0x8aa4('0x14')][_0x3633d1])){logger[_0x8aa4('0x12')](_0x8aa4('0x1d'),this[_0x8aa4('0x6')]['id'],_0x3633d1);}else{util['hideNotification'](this[_0x8aa4('0x5')],this[_0x8aa4('0x6')]['id'],this[_0x8aa4('0x8')]['agents'][_0x3633d1],this['queue'],this['routing']);util['writeLog'](this[_0x8aa4('0x6')]['id'],this[_0x8aa4('0x8')][_0x8aa4('0x14')][_0x3633d1],_0x5f1028?_0x8aa4('0x1e'):'TIMEOUT');this['realtime'][_0x8aa4('0x14')][_0x3633d1][_0x8aa4('0x1f')]=![];this[_0x8aa4('0x8')][_0x8aa4('0x14')][_0x3633d1][_0x8aa4('0x17')]=undefined;}}}if(!_0x5f1028){setTimeout(this['push']['bind'](this),0x3e8);}};function beepall(_0x157ae6,_0x157bfb,_0x2b579a,_0x4d9630){return new Beepall(_0x157ae6,_0x157bfb,_0x2b579a,_0x4d9630);}module[_0x8aa4('0x20')]=beepall;
\ No newline at end of file
index e389337..3e908eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f33=['./agent','./rrmemory'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5f33,0x1e3));var _0x35f3=function(_0x5bc0f6,_0x372a6b){_0x5bc0f6=_0x5bc0f6-0x0;var _0x50ef27=_0x5f33[_0x5bc0f6];return _0x50ef27;};'use strict';module['exports']={'rrmemory':require(_0x35f3('0x0')),'beepall':require('./beepall'),'agent':require(_0x35f3('0x1'))};
\ No newline at end of file
+var _0xb8e5=['./rrmemory','./agent','exports'];(function(_0x5eca6f,_0x76ec15){var _0x4c34b7=function(_0x52cbe1){while(--_0x52cbe1){_0x5eca6f['push'](_0x5eca6f['shift']());}};_0x4c34b7(++_0x76ec15);}(_0xb8e5,0xad));var _0x5b8e=function(_0x527ec3,_0x4a5a2d){_0x527ec3=_0x527ec3-0x0;var _0x5a36fb=_0xb8e5[_0x527ec3];return _0x5a36fb;};'use strict';module[_0x5b8e('0x0')]={'rrmemory':require(_0x5b8e('0x1')),'beepall':require('./beepall'),'agent':require(_0x5b8e('0x2'))};
\ No newline at end of file
index bf9ae6f..799c15a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9d3=['realtime','intervals','handleRun','bind','module','timeout','drained','handleDrained','push','handleTimeout','prototype','handleCheckReject','isAgentAvailable','agents','agentId','channel','done','info','isNil','busy','notificationId','RINGING','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','hideNotification','writeLog','busyQueue','exports','lodash','uuid','./util','../../../../../config/logger','routing','squeue','queue'];(function(_0x38bc44,_0x5f3dbf){var _0x56cb18=function(_0x41aa3e){while(--_0x41aa3e){_0x38bc44['push'](_0x38bc44['shift']());}};_0x56cb18(++_0x5f3dbf);}(_0xf9d3,0x119));var _0x3f9d=function(_0x242240,_0x5d1bfa){_0x242240=_0x242240-0x0;var _0x203ea7=_0xf9d3[_0x242240];return _0x203ea7;};'use strict';var rr=require('rr');var _=require(_0x3f9d('0x0'));var uuid=require(_0x3f9d('0x1'));var util=require(_0x3f9d('0x2'));var logger=require(_0x3f9d('0x3'))(_0x3f9d('0x4'));var RRMemory=function(_0x4aca37,_0x4e42a4,_0x1ce72a,_0xa709af){this['notificationId']=uuid['v4']();this[_0x3f9d('0x5')]=_0x4aca37;this[_0x3f9d('0x6')]=_0x4e42a4;this[_0x3f9d('0x7')]=_0x1ce72a;this[_0x3f9d('0x4')]=_0xa709af;this[_0x3f9d('0x8')]={};this['squeue']['push'](this[_0x3f9d('0x9')][_0x3f9d('0xa')](this),this['handleTimeout'][_0x3f9d('0xa')](this),this[_0x3f9d('0xb')]);this[_0x3f9d('0x5')]['on'](_0x3f9d('0xc'),this['handleTimeout'][_0x3f9d('0xa')](this));this[_0x3f9d('0x5')]['on'](_0x3f9d('0xd'),this[_0x3f9d('0xe')][_0x3f9d('0xa')](this));};RRMemory['prototype'][_0x3f9d('0xf')]=function(){this[_0x3f9d('0x5')][_0x3f9d('0xf')](this[_0x3f9d('0x9')][_0x3f9d('0xa')](this),this[_0x3f9d('0x10')][_0x3f9d('0xa')](this));};RRMemory['prototype']['handleDrained']=function(_0x3e55c9){this[_0x3f9d('0x10')](!![]);};RRMemory[_0x3f9d('0x11')][_0x3f9d('0x12')]=function(_0x259d63){if(util[_0x3f9d('0x13')](this[_0x3f9d('0x5')]['id'],this[_0x3f9d('0x7')][_0x3f9d('0x14')][this[_0x3f9d('0x15')]],this[_0x3f9d('0x5')][_0x3f9d('0x16')],!![])){logger['info']('[%s][QUEUE]\x20available\x20again\x20%s',this[_0x3f9d('0x5')]['id'],this['agentId']);clearInterval(this[_0x3f9d('0x8')][this[_0x3f9d('0x15')]]);_0x259d63[_0x3f9d('0x17')]();setTimeout(this[_0x3f9d('0xf')][_0x3f9d('0xa')](this),0x3e8);}};RRMemory[_0x3f9d('0x11')]['handleRun']=function(_0x4799e8){this[_0x3f9d('0x15')]=rr(this[_0x3f9d('0x6')]['mapAgentsId']);logger[_0x3f9d('0x18')]('[%s][QUEUE]\x20try\x20with\x20%s',this[_0x3f9d('0x5')]['id'],this[_0x3f9d('0x15')]);if(_[_0x3f9d('0x19')](this[_0x3f9d('0x7')]['agents'][this['agentId']])){logger[_0x3f9d('0x18')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x3f9d('0x5')]['id'],this[_0x3f9d('0x15')]);_0x4799e8['done']();setTimeout(this['push']['bind'](this),0x3e8);}else{if(util[_0x3f9d('0x13')](this[_0x3f9d('0x5')]['id'],this[_0x3f9d('0x7')][_0x3f9d('0x14')][this[_0x3f9d('0x15')]],this[_0x3f9d('0x5')][_0x3f9d('0x16')],!![])){this[_0x3f9d('0x7')][_0x3f9d('0x14')][this[_0x3f9d('0x15')]][_0x3f9d('0x1a')]=!![];this['realtime'][_0x3f9d('0x14')][this[_0x3f9d('0x15')]]['busyQueue']=this[_0x3f9d('0x6')]['name'];util['showNotification'](this[_0x3f9d('0x1b')],this[_0x3f9d('0x5')]['id'],this[_0x3f9d('0x7')][_0x3f9d('0x14')][this[_0x3f9d('0x15')]],this[_0x3f9d('0x6')],this[_0x3f9d('0x4')]);util['writeLog'](this[_0x3f9d('0x5')]['id'],this[_0x3f9d('0x7')][_0x3f9d('0x14')][this['agentId']],_0x3f9d('0x1c'));this[_0x3f9d('0x8')][this[_0x3f9d('0x15')]]=setInterval(this[_0x3f9d('0x12')][_0x3f9d('0xa')](this,_0x4799e8),0x3e8);}else{logger[_0x3f9d('0x18')](_0x3f9d('0x1d'),this[_0x3f9d('0x5')]['id'],this[_0x3f9d('0x15')]);_0x4799e8[_0x3f9d('0x17')]();setTimeout(this['push'][_0x3f9d('0xa')](this),0x3e8);}}};RRMemory['prototype'][_0x3f9d('0x10')]=function(_0xf1407d){logger[_0x3f9d('0x18')](_0x3f9d('0x1e'),this[_0x3f9d('0x5')]['id'],this[_0x3f9d('0x15')]);if(_['isNil'](this[_0x3f9d('0x7')][_0x3f9d('0x14')][this['agentId']])){logger[_0x3f9d('0x18')](_0x3f9d('0x1f'),this[_0x3f9d('0x5')]['id'],this['agentId']);}else{clearInterval(this[_0x3f9d('0x8')][this['agentId']]);util[_0x3f9d('0x20')](this[_0x3f9d('0x1b')],this['squeue']['id'],this[_0x3f9d('0x7')][_0x3f9d('0x14')][this[_0x3f9d('0x15')]],this['queue'],this[_0x3f9d('0x4')]);util[_0x3f9d('0x21')](this['squeue']['id'],this[_0x3f9d('0x7')][_0x3f9d('0x14')][this[_0x3f9d('0x15')]],'TIMEOUT');this['realtime'][_0x3f9d('0x14')][this[_0x3f9d('0x15')]][_0x3f9d('0x1a')]=![];this[_0x3f9d('0x7')][_0x3f9d('0x14')][this[_0x3f9d('0x15')]][_0x3f9d('0x22')]=undefined;}if(!_0xf1407d){setTimeout(this[_0x3f9d('0xf')][_0x3f9d('0xa')](this),0x3e8);}};function rrmemory(_0x5ca68d,_0x32c53f,_0x176f62,_0x524a89){return new RRMemory(_0x5ca68d,_0x32c53f,_0x176f62,_0x524a89);}module[_0x3f9d('0x23')]=rrmemory;
\ No newline at end of file
+var _0x3fa0=['push','bind','handleDrained','prototype','handleRun','handleTimeout','handleCheckReject','channel','info','agentId','done','mapAgentsId','isNil','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','agents','busy','busyQueue','name','showNotification','writeLog','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','exports','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','queue','realtime','intervals'];(function(_0x1a7550,_0x1edace){var _0x426e22=function(_0x1c10a1){while(--_0x1c10a1){_0x1a7550['push'](_0x1a7550['shift']());}};_0x426e22(++_0x1edace);}(_0x3fa0,0x162));var _0x03fa=function(_0x153566,_0x22e966){_0x153566=_0x153566-0x0;var _0xbdf173=_0x3fa0[_0x153566];return _0xbdf173;};'use strict';var rr=require('rr');var _=require('lodash');var uuid=require(_0x03fa('0x0'));var util=require(_0x03fa('0x1'));var logger=require(_0x03fa('0x2'))(_0x03fa('0x3'));var RRMemory=function(_0x3a6788,_0x39ec05,_0x49c5af,_0x1ab7c0){this[_0x03fa('0x4')]=uuid['v4']();this[_0x03fa('0x5')]=_0x3a6788;this[_0x03fa('0x6')]=_0x39ec05;this[_0x03fa('0x7')]=_0x49c5af;this[_0x03fa('0x3')]=_0x1ab7c0;this[_0x03fa('0x8')]={};this[_0x03fa('0x5')][_0x03fa('0x9')](this['handleRun'][_0x03fa('0xa')](this),this['handleTimeout'][_0x03fa('0xa')](this),this['module']);this['squeue']['on']('timeout',this['handleTimeout'][_0x03fa('0xa')](this));this['squeue']['on']('drained',this[_0x03fa('0xb')][_0x03fa('0xa')](this));};RRMemory[_0x03fa('0xc')]['push']=function(){this[_0x03fa('0x5')][_0x03fa('0x9')](this[_0x03fa('0xd')][_0x03fa('0xa')](this),this[_0x03fa('0xe')]['bind'](this));};RRMemory[_0x03fa('0xc')][_0x03fa('0xb')]=function(_0x4b9484){this[_0x03fa('0xe')](!![]);};RRMemory[_0x03fa('0xc')][_0x03fa('0xf')]=function(_0x4eac2c){if(util['isAgentAvailable'](this[_0x03fa('0x5')]['id'],this[_0x03fa('0x7')]['agents'][this['agentId']],this[_0x03fa('0x5')][_0x03fa('0x10')],!![])){logger[_0x03fa('0x11')]('[%s][QUEUE]\x20available\x20again\x20%s',this[_0x03fa('0x5')]['id'],this[_0x03fa('0x12')]);clearInterval(this[_0x03fa('0x8')][this[_0x03fa('0x12')]]);_0x4eac2c[_0x03fa('0x13')]();setTimeout(this[_0x03fa('0x9')][_0x03fa('0xa')](this),0x3e8);}};RRMemory[_0x03fa('0xc')][_0x03fa('0xd')]=function(_0x2d1754){this['agentId']=rr(this['queue'][_0x03fa('0x14')]);logger[_0x03fa('0x11')]('[%s][QUEUE]\x20try\x20with\x20%s',this[_0x03fa('0x5')]['id'],this['agentId']);if(_[_0x03fa('0x15')](this[_0x03fa('0x7')]['agents'][this['agentId']])){logger['info'](_0x03fa('0x16'),this[_0x03fa('0x5')]['id'],this[_0x03fa('0x12')]);_0x2d1754[_0x03fa('0x13')]();setTimeout(this[_0x03fa('0x9')]['bind'](this),0x3e8);}else{if(util[_0x03fa('0x17')](this[_0x03fa('0x5')]['id'],this[_0x03fa('0x7')][_0x03fa('0x18')][this[_0x03fa('0x12')]],this[_0x03fa('0x5')][_0x03fa('0x10')],!![])){this[_0x03fa('0x7')][_0x03fa('0x18')][this[_0x03fa('0x12')]][_0x03fa('0x19')]=!![];this[_0x03fa('0x7')][_0x03fa('0x18')][this[_0x03fa('0x12')]][_0x03fa('0x1a')]=this['queue'][_0x03fa('0x1b')];util[_0x03fa('0x1c')](this[_0x03fa('0x4')],this[_0x03fa('0x5')]['id'],this[_0x03fa('0x7')][_0x03fa('0x18')][this['agentId']],this[_0x03fa('0x6')],this[_0x03fa('0x3')]);util[_0x03fa('0x1d')](this[_0x03fa('0x5')]['id'],this[_0x03fa('0x7')][_0x03fa('0x18')][this[_0x03fa('0x12')]],'RINGING');this[_0x03fa('0x8')][this[_0x03fa('0x12')]]=setInterval(this[_0x03fa('0xf')][_0x03fa('0xa')](this,_0x2d1754),0x3e8);}else{logger[_0x03fa('0x11')](_0x03fa('0x1e'),this[_0x03fa('0x5')]['id'],this[_0x03fa('0x12')]);_0x2d1754[_0x03fa('0x13')]();setTimeout(this[_0x03fa('0x9')][_0x03fa('0xa')](this),0x3e8);}}};RRMemory['prototype'][_0x03fa('0xe')]=function(_0x3360d9){logger[_0x03fa('0x11')](_0x03fa('0x1f'),this['squeue']['id'],this[_0x03fa('0x12')]);if(_[_0x03fa('0x15')](this[_0x03fa('0x7')][_0x03fa('0x18')][this[_0x03fa('0x12')]])){logger[_0x03fa('0x11')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x03fa('0x5')]['id'],this['agentId']);}else{clearInterval(this[_0x03fa('0x8')][this[_0x03fa('0x12')]]);util['hideNotification'](this[_0x03fa('0x4')],this[_0x03fa('0x5')]['id'],this[_0x03fa('0x7')]['agents'][this['agentId']],this[_0x03fa('0x6')],this['routing']);util['writeLog'](this['squeue']['id'],this[_0x03fa('0x7')]['agents'][this[_0x03fa('0x12')]],'TIMEOUT');this['realtime'][_0x03fa('0x18')][this[_0x03fa('0x12')]][_0x03fa('0x19')]=![];this[_0x03fa('0x7')]['agents'][this[_0x03fa('0x12')]][_0x03fa('0x1a')]=undefined;}if(!_0x3360d9){setTimeout(this[_0x03fa('0x9')]['bind'](this),0x3e8);}};function rrmemory(_0x5bfe79,_0x3cf2c6,_0x4406db,_0x26bc3d){return new RRMemory(_0x5bfe79,_0x3cf2c6,_0x4406db,_0x26bc3d);}module[_0x03fa('0x20')]=rrmemory;
\ No newline at end of file
index c5d450a..7232a19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a07=['socket.io-emitter','emit','format','name','user:save','\x20interaction','account','notificationSound','notificationShake','body','queue','getMustacheRender','notificationTemplate','msg','error','[%s][QUEUE]\x20%s','user:%s','notification:%s','remove','info','[%s][QUEUE][AGENT:%s][STATUS:%s]','busy','BUSY','Pause','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','showNotification','hideNotification','writeLog','lodash','util','../utils','mustache','ioredis','../../../../../config/logger','routing','redis','defaults','localhost'];(function(_0x36b582,_0x1417e9){var _0x372e99=function(_0x48bf30){while(--_0x48bf30){_0x36b582['push'](_0x36b582['shift']());}};_0x372e99(++_0x1417e9);}(_0x2a07,0x74));var _0x72a0=function(_0x4e7f3f,_0x5c57da){_0x4e7f3f=_0x4e7f3f-0x0;var _0x441fd2=_0x2a07[_0x4e7f3f];return _0x441fd2;};'use strict';var _=require(_0x72a0('0x0'));var util=require(_0x72a0('0x1'));var utils=require(_0x72a0('0x2'));var Mustache=require(_0x72a0('0x3'));var Redis=require(_0x72a0('0x4'));var config=require('../../../../../config/environment');var logger=require(_0x72a0('0x5'))(_0x72a0('0x6'));config[_0x72a0('0x7')]=_[_0x72a0('0x8')](config[_0x72a0('0x7')],{'host':_0x72a0('0x9'),'port':0x18eb});var io=require(_0x72a0('0xa'))(new Redis(config[_0x72a0('0x7')]));function emit(_0x193e3b,_0x287b06,_0x21c819){io['to'](_0x193e3b)[_0x72a0('0xb')](_0x287b06,_0x21c819);}function sendNotification(_0x22270e,_0x1d32e9,_0x55b3e9,_0x2bc45b,_0x5c1d1e,_0x169dc2){io['to'](util[_0x72a0('0xc')]('user:%s',_0x2bc45b[_0x72a0('0xd')]))[_0x72a0('0xb')](_0x72a0('0xe'),_0x2bc45b);var _0x44d7cf=_0x169dc2||{};var _0x975c27=_0x55b3e9['split']('.');var _0x130797={'uniqueid':_0x1d32e9,'channel':_0x975c27[0x0],'id':_0x975c27[0x1],'title':_0x975c27[0x0]+_0x72a0('0xf'),'interactionId':_0x975c27[0x2],'queue':_0x5c1d1e?_0x5c1d1e[_0x72a0('0xd')]:null,'sound':_0x44d7cf[_0x72a0('0x10')][_0x72a0('0x11')],'shake':_0x44d7cf[_0x72a0('0x10')][_0x72a0('0x12')]};try{if(!_0x44d7cf['body']){_0x44d7cf['body']={};}if(_0x5c1d1e){_0x44d7cf[_0x72a0('0x13')][_0x72a0('0x14')]=_0x5c1d1e;}else if(_0x44d7cf[_0x72a0('0x13')][_0x72a0('0x14')]){delete _0x44d7cf[_0x72a0('0x13')][_0x72a0('0x14')];}_0x130797['msg']=utils[_0x72a0('0x15')](_0x44d7cf[_0x72a0('0x10')][_0x72a0('0x16')],_0x44d7cf);}catch(_0xb7e22d){_0x130797[_0x72a0('0x17')]='I\x20can\x27t\x20render\x20your\x20template';logger[_0x72a0('0x18')](util[_0x72a0('0xc')](_0x72a0('0x19'),_0x1d32e9,_0xb7e22d['message']));}io['to'](util[_0x72a0('0xc')](_0x72a0('0x1a'),_0x2bc45b[_0x72a0('0xd')]))[_0x72a0('0xb')](util['format'](_0x72a0('0x1b'),_0x22270e?'save':_0x72a0('0x1c')),_0x130797);}function writeLog(_0x315413,_0xde058c,_0x5c7479){return logger[_0x72a0('0x1d')](util[_0x72a0('0xc')](_0x72a0('0x1e'),_0x315413,_0xde058c[_0x72a0('0xd')],_0x5c7479));}exports['isAgentAvailable']=function(_0x38a7ba,_0x390464,_0x1ddd54,_0x23b918){if(_0x390464[_0x72a0('0x1f')]){writeLog(_0x38a7ba,_0x390464,_0x72a0('0x20'));return![];}if(!_0x390464['online']){writeLog(_0x38a7ba,_0x390464,'OFFLINE');return![];}if(_0x390464[_0x1ddd54+_0x72a0('0x21')]){writeLog(_0x38a7ba,_0x390464,_0x72a0('0x22'));return![];}if(_0x23b918&&_0x390464[_0x72a0('0x23')](_0x1ddd54+_0x72a0('0x24'))&&_0x390464[_0x72a0('0x23')](_0x1ddd54+_0x72a0('0x25'))){if(_0x390464[_0x1ddd54+_0x72a0('0x24')]>0x0&&_0x390464[_0x1ddd54+_0x72a0('0x25')]>=_0x390464[_0x1ddd54+_0x72a0('0x24')]){writeLog(_0x38a7ba,_0x390464,_0x1ddd54[_0x72a0('0x26')]()+'\x20MAXCAPACITY');return![];}}return!![];};exports[_0x72a0('0x27')]=function(_0x553641,_0xc22d18,_0x2928f6,_0x1773ea,_0x177a3a){return sendNotification(!![],_0x553641,_0xc22d18,_0x2928f6,_0x1773ea,_0x177a3a);};exports[_0x72a0('0x28')]=function(_0x12eda2,_0x23c96a,_0x916733,_0x4ba037,_0x41efc1){return sendNotification(![],_0x12eda2,_0x23c96a,_0x916733,_0x4ba037,_0x41efc1);};exports[_0x72a0('0x29')]=writeLog;
\ No newline at end of file
+var _0x430c=['queue','msg','notificationTemplate','format','message','notification:%s','save','remove','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','online','OFFLINE','PAUSE','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','showNotification','hideNotification','writeLog','lodash','mustache','ioredis','../../../../../config/environment','redis','localhost','emit','user:%s','name','user:save','\x20interaction','account','notificationSound','notificationShake','body'];(function(_0xb3aff4,_0x1ba9ff){var _0x36f6f1=function(_0x277027){while(--_0x277027){_0xb3aff4['push'](_0xb3aff4['shift']());}};_0x36f6f1(++_0x1ba9ff);}(_0x430c,0x1a1));var _0xc430=function(_0x4f4d19,_0x574245){_0x4f4d19=_0x4f4d19-0x0;var _0x27a258=_0x430c[_0x4f4d19];return _0x27a258;};'use strict';var _=require(_0xc430('0x0'));var util=require('util');var utils=require('../utils');var Mustache=require(_0xc430('0x1'));var Redis=require(_0xc430('0x2'));var config=require(_0xc430('0x3'));var logger=require('../../../../../config/logger')('routing');config['redis']=_['defaults'](config[_0xc430('0x4')],{'host':_0xc430('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xc430('0x4')]));function emit(_0x4de44f,_0x212354,_0x2e51c6){io['to'](_0x4de44f)[_0xc430('0x6')](_0x212354,_0x2e51c6);}function sendNotification(_0x13ae66,_0x2e23f8,_0x11f4b0,_0x861581,_0x115814,_0x24737a){io['to'](util['format'](_0xc430('0x7'),_0x861581[_0xc430('0x8')]))['emit'](_0xc430('0x9'),_0x861581);var _0x5aeed9=_0x24737a||{};var _0x3b84bc=_0x11f4b0['split']('.');var _0x2ce28a={'uniqueid':_0x2e23f8,'channel':_0x3b84bc[0x0],'id':_0x3b84bc[0x1],'title':_0x3b84bc[0x0]+_0xc430('0xa'),'interactionId':_0x3b84bc[0x2],'queue':_0x115814?_0x115814[_0xc430('0x8')]:null,'sound':_0x5aeed9[_0xc430('0xb')][_0xc430('0xc')],'shake':_0x5aeed9[_0xc430('0xb')][_0xc430('0xd')]};try{if(!_0x5aeed9['body']){_0x5aeed9['body']={};}if(_0x115814){_0x5aeed9[_0xc430('0xe')][_0xc430('0xf')]=_0x115814;}else if(_0x5aeed9[_0xc430('0xe')][_0xc430('0xf')]){delete _0x5aeed9[_0xc430('0xe')]['queue'];}_0x2ce28a[_0xc430('0x10')]=utils['getMustacheRender'](_0x5aeed9['account'][_0xc430('0x11')],_0x5aeed9);}catch(_0x3d02df){_0x2ce28a[_0xc430('0x10')]='I\x20can\x27t\x20render\x20your\x20template';logger['error'](util[_0xc430('0x12')]('[%s][QUEUE]\x20%s',_0x2e23f8,_0x3d02df[_0xc430('0x13')]));}io['to'](util['format']('user:%s',_0x861581[_0xc430('0x8')]))['emit'](util[_0xc430('0x12')](_0xc430('0x14'),_0x13ae66?_0xc430('0x15'):_0xc430('0x16')),_0x2ce28a);}function writeLog(_0x2a1ea1,_0x5af282,_0x388a2f){return logger['info'](util['format'](_0xc430('0x17'),_0x2a1ea1,_0x5af282[_0xc430('0x8')],_0x388a2f));}exports[_0xc430('0x18')]=function(_0x56dd16,_0x3fd56b,_0x57d26e,_0x23425d){if(_0x3fd56b[_0xc430('0x19')]){writeLog(_0x56dd16,_0x3fd56b,'BUSY');return![];}if(!_0x3fd56b[_0xc430('0x1a')]){writeLog(_0x56dd16,_0x3fd56b,_0xc430('0x1b'));return![];}if(_0x3fd56b[_0x57d26e+'Pause']){writeLog(_0x56dd16,_0x3fd56b,_0xc430('0x1c'));return![];}if(_0x23425d&&_0x3fd56b['hasOwnProperty'](_0x57d26e+_0xc430('0x1d'))&&_0x3fd56b['hasOwnProperty'](_0x57d26e+_0xc430('0x1e'))){if(_0x3fd56b[_0x57d26e+_0xc430('0x1d')]>0x0&&_0x3fd56b[_0x57d26e+'CurrentCapacity']>=_0x3fd56b[_0x57d26e+_0xc430('0x1d')]){writeLog(_0x56dd16,_0x3fd56b,_0x57d26e[_0xc430('0x1f')]()+_0xc430('0x20'));return![];}}return!![];};exports[_0xc430('0x21')]=function(_0x285407,_0x57cd72,_0x2ccc13,_0x1a9512,_0x1c1da9){return sendNotification(!![],_0x285407,_0x57cd72,_0x2ccc13,_0x1a9512,_0x1c1da9);};exports[_0xc430('0x22')]=function(_0x542cba,_0x1f8086,_0x4cf56c,_0x1d65ee,_0x4ad29e){return sendNotification(![],_0x542cba,_0x1f8086,_0x4cf56c,_0x1d65ee,_0x4ad29e);};exports[_0xc430('0x23')]=writeLog;
\ No newline at end of file
index 9964c6a..2c47db6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfc9=['isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','body','isObject','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','validate','shelljs','./utils','routing','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][SYSTEM]\x20%s','map','message','join','info','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','replace'];(function(_0x32f7d7,_0x54231b){var _0x133d09=function(_0x41a7ab){while(--_0x41a7ab){_0x32f7d7['push'](_0x32f7d7['shift']());}};_0x133d09(++_0x54231b);}(_0xbfc9,0x173));var _0x9bfc=function(_0x1f21f7,_0x34eda3){_0x1f21f7=_0x1f21f7-0x0;var _0x276ed6=_0xbfc9[_0x1f21f7];return _0x276ed6;};'use strict';var schema=require(_0x9bfc('0x0'));var sh=require(_0x9bfc('0x1'));var _=require('lodash');var utils=require(_0x9bfc('0x2'));var logger=require('../../../../config/logger')(_0x9bfc('0x3'));var system=schema({'command':{'type':'string','required':!![],'message':_0x9bfc('0x4')}});exports[_0x9bfc('0x5')]=function(_0x3e57c6,_0x379fa3){return function(_0x555887){try{var _0x34b4ab={'command':_0x379fa3[0x0]};var _0x277959=system[_0x9bfc('0x0')](_0x34b4ab,{'typecast':!![]});if(_0x277959[_0x9bfc('0x6')]){logger[_0x9bfc('0x7')](_0x9bfc('0x8'),_0x3e57c6,_[_0x9bfc('0x9')](_0x277959,_0x9bfc('0xa'))[_0x9bfc('0xb')](',\x20'));logger[_0x9bfc('0xc')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x3e57c6);_0x555887[_0x9bfc('0xd')]();}else{var _0x1ce4f9=this;var _0xbe23b4=utils[_0x9bfc('0xe')](_0x379fa3[0x0],this);logger[_0x9bfc('0xc')](_0x9bfc('0xf'),_0x3e57c6,_0xbe23b4);sh['exec'](_[_0x9bfc('0x10')](_0xbe23b4),function(_0x4513d3,_0x24550a){logger[_0x9bfc('0xc')](_0x9bfc('0x11'),_0x3e57c6,_0x4513d3);if(_0x4513d3==0x0){var _0x3d5470=_0x24550a[_0x9bfc('0x12')](/(\r\n|\n|\r)/gm,'');if(_[_0x9bfc('0x13')](_0x379fa3[0x1])||_[_0x9bfc('0x14')](_0x379fa3[0x1])){logger[_0x9bfc('0xc')](_0x9bfc('0x15'),_0x3e57c6);_0x1ce4f9['body'][_0x379fa3[0x1]]=_0x3d5470;}else{logger[_0x9bfc('0xc')](_0x9bfc('0x16'),_0x3e57c6,_0x379fa3[0x1],_0x3d5470);_0x1ce4f9[_0x9bfc('0x17')][_0x379fa3[0x1]]=_0x3d5470;}}_0x555887[_0x9bfc('0xd')]();});}}catch(_0x4baed5){logger[_0x9bfc('0x7')](_0x9bfc('0x8'),_0x3e57c6,_[_0x9bfc('0x18')](_0x4baed5)?JSON['stringify'](_0x4baed5):_0x4baed5);logger[_0x9bfc('0xc')](_0x9bfc('0x19'),_0x3e57c6);_0x555887[_0x9bfc('0xd')]();}};};
\ No newline at end of file
+var _0xd200=['message','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','exec','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','isObject','stringify','validate','shelljs','lodash','./utils','routing','string','consequence','length','[%s][SYSTEM]\x20%s','map'];(function(_0x1f0816,_0x5e3f7b){var _0x5925ce=function(_0xdbfcca){while(--_0xdbfcca){_0x1f0816['push'](_0x1f0816['shift']());}};_0x5925ce(++_0x5e3f7b);}(_0xd200,0x7d));var _0x0d20=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0xd200[_0x465a0c];return _0x1e202e;};'use strict';var schema=require(_0x0d20('0x0'));var sh=require(_0x0d20('0x1'));var _=require(_0x0d20('0x2'));var utils=require(_0x0d20('0x3'));var logger=require('../../../../config/logger')(_0x0d20('0x4'));var system=schema({'command':{'type':_0x0d20('0x5'),'required':!![],'message':'command\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0x0d20('0x6')]=function(_0x5d1d61,_0x45a895){return function(_0x3f6594){try{var _0x33e97c={'command':_0x45a895[0x0]};var _0x2842a1=system[_0x0d20('0x0')](_0x33e97c,{'typecast':!![]});if(_0x2842a1[_0x0d20('0x7')]){logger['error'](_0x0d20('0x8'),_0x5d1d61,_[_0x0d20('0x9')](_0x2842a1,_0x0d20('0xa'))[_0x0d20('0xb')](',\x20'));logger[_0x0d20('0xc')](_0x0d20('0xd'),_0x5d1d61);_0x3f6594[_0x0d20('0xe')]();}else{var _0x22142c=this;var _0x351a4b=utils[_0x0d20('0xf')](_0x45a895[0x0],this);logger[_0x0d20('0xc')](_0x0d20('0x10'),_0x5d1d61,_0x351a4b);sh[_0x0d20('0x11')](_[_0x0d20('0x12')](_0x351a4b),function(_0x30deea,_0x294b9c){logger[_0x0d20('0xc')](_0x0d20('0x13'),_0x5d1d61,_0x30deea);if(_0x30deea==0x0){var _0x110cd2=_0x294b9c[_0x0d20('0x14')](/(\r\n|\n|\r)/gm,'');if(_[_0x0d20('0x15')](_0x45a895[0x1])||_[_0x0d20('0x16')](_0x45a895[0x1])){logger['info'](_0x0d20('0x17'),_0x5d1d61);_0x22142c['body'][_0x45a895[0x1]]=_0x110cd2;}else{logger[_0x0d20('0xc')](_0x0d20('0x18'),_0x5d1d61,_0x45a895[0x1],_0x110cd2);_0x22142c['body'][_0x45a895[0x1]]=_0x110cd2;}}_0x3f6594['next']();});}}catch(_0x35fdaf){logger['error'](_0x0d20('0x8'),_0x5d1d61,_[_0x0d20('0x19')](_0x35fdaf)?JSON[_0x0d20('0x1a')](_0x35fdaf):_0x35fdaf);logger[_0x0d20('0xc')](_0x0d20('0xd'),_0x5d1d61);_0x3f6594['next']();}};};
\ No newline at end of file
index 8c8c622..b65b368 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9ad=['[%s][TAG]\x20%s','map','message','join','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','Interaction','addTags','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','interaction','catch','stringify','finally','next','isObject','validate','lodash','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error'];(function(_0x14c5e6,_0x2ae8c4){var _0x25a76d=function(_0x271e98){while(--_0x271e98){_0x14c5e6['push'](_0x14c5e6['shift']());}};_0x25a76d(++_0x2ae8c4);}(_0xa9ad,0x7f));var _0xda9a=function(_0x6e4936,_0xa0f05){_0x6e4936=_0x6e4936-0x0;var _0x34ddf6=_0xa9ad[_0x6e4936];return _0x34ddf6;};'use strict';var schema=require(_0xda9a('0x0'));var _=require(_0xda9a('0x1'));var rpc={'chatInteraction':require(_0xda9a('0x2')),'openchannelInteraction':require(_0xda9a('0x3')),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0xda9a('0x4')),'faxInteraction':require(_0xda9a('0x5')),'whatsappInteraction':require(_0xda9a('0x6'))};var logger=require(_0xda9a('0x7'))(_0xda9a('0x8'));var tag=schema({'tag':{'type':'number','required':!![],'message':_0xda9a('0x9')}});exports[_0xda9a('0xa')]=function(_0x35784f,_0x49f57e,_0x255dca,_0x4162d4){return function(_0x1942f7){try{var _0x47bc37={'tag':_0x49f57e[0x0]};var _0x242e3b=tag[_0xda9a('0x0')](_0x47bc37,{'typecast':!![]});if(_0x242e3b[_0xda9a('0xb')]){logger[_0xda9a('0xc')](_0xda9a('0xd'),_0x35784f,_[_0xda9a('0xe')](_0x242e3b,_0xda9a('0xf'))[_0xda9a('0x10')](',\x20'));logger[_0xda9a('0x11')](_0xda9a('0x12'),_0x35784f);_0x1942f7['next']();}else{var _0x56cc74={'ids':[_0x49f57e[0x0]]};if(rpc[_0x4162d4['channel']+_0xda9a('0x13')]){rpc[_0x4162d4['channel']+_0xda9a('0x13')][_0xda9a('0x14')](_0x4162d4['interaction']['id'],_0x56cc74)['then'](function(_0x51375e){logger[_0xda9a('0x11')](_0xda9a('0x15'),_0x35784f,_0x49f57e[0x1],_0x4162d4['channel'],_0x4162d4[_0xda9a('0x16')]['id']);})[_0xda9a('0x17')](function(_0x5c2b5a){logger[_0xda9a('0xc')](_0xda9a('0xd'),_0x35784f,JSON[_0xda9a('0x18')](_0x5c2b5a));logger[_0xda9a('0x11')](_0xda9a('0x12'),_0x35784f);})[_0xda9a('0x19')](function(){_0x1942f7[_0xda9a('0x1a')]();});}}}catch(_0x1b1e75){logger[_0xda9a('0xc')](_0xda9a('0xd'),_0x35784f,_[_0xda9a('0x1b')](_0x1b1e75)?JSON[_0xda9a('0x18')](_0x1b1e75):_0x1b1e75);logger['info'](_0xda9a('0x12'),_0x35784f);_0x1942f7[_0xda9a('0x1a')]();}};};
\ No newline at end of file
+var _0xd94b=['info','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','[%s][TAG]\x20%s','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','finally','isObject','validate','lodash','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','routing','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','map','message','join','next','channel','Interaction','addTags','interaction','then'];(function(_0x32f6b9,_0x2d4aa9){var _0x267d52=function(_0x10f74f){while(--_0x10f74f){_0x32f6b9['push'](_0x32f6b9['shift']());}};_0x267d52(++_0x2d4aa9);}(_0xd94b,0x163));var _0xbd94=function(_0x3d1807,_0x4fabc2){_0x3d1807=_0x3d1807-0x0;var _0x2b15c0=_0xd94b[_0x3d1807];return _0x2b15c0;};'use strict';var schema=require(_0xbd94('0x0'));var _=require(_0xbd94('0x1'));var rpc={'chatInteraction':require(_0xbd94('0x2')),'openchannelInteraction':require(_0xbd94('0x3')),'smsInteraction':require(_0xbd94('0x4')),'mailInteraction':require(_0xbd94('0x5')),'faxInteraction':require(_0xbd94('0x6')),'whatsappInteraction':require(_0xbd94('0x7'))};var logger=require('../../../../config/logger')(_0xbd94('0x8'));var tag=schema({'tag':{'type':'number','required':!![],'message':_0xbd94('0x9')}});exports[_0xbd94('0xa')]=function(_0x5c7065,_0x2652a1,_0x153c39,_0xa54b79){return function(_0x8c624d){try{var _0x37e2aa={'tag':_0x2652a1[0x0]};var _0x4f4acf=tag[_0xbd94('0x0')](_0x37e2aa,{'typecast':!![]});if(_0x4f4acf[_0xbd94('0xb')]){logger[_0xbd94('0xc')]('[%s][TAG]\x20%s',_0x5c7065,_[_0xbd94('0xd')](_0x4f4acf,_0xbd94('0xe'))[_0xbd94('0xf')](',\x20'));logger['info']('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x5c7065);_0x8c624d[_0xbd94('0x10')]();}else{var _0x35a1b3={'ids':[_0x2652a1[0x0]]};if(rpc[_0xa54b79[_0xbd94('0x11')]+_0xbd94('0x12')]){rpc[_0xa54b79[_0xbd94('0x11')]+_0xbd94('0x12')][_0xbd94('0x13')](_0xa54b79[_0xbd94('0x14')]['id'],_0x35a1b3)[_0xbd94('0x15')](function(_0x1b30cc){logger[_0xbd94('0x16')](_0xbd94('0x17'),_0x5c7065,_0x2652a1[0x1],_0xa54b79['channel'],_0xa54b79[_0xbd94('0x14')]['id']);})[_0xbd94('0x18')](function(_0x29498d){logger['error'](_0xbd94('0x19'),_0x5c7065,JSON['stringify'](_0x29498d));logger[_0xbd94('0x16')](_0xbd94('0x1a'),_0x5c7065);})[_0xbd94('0x1b')](function(){_0x8c624d[_0xbd94('0x10')]();});}}}catch(_0xa94d07){logger[_0xbd94('0xc')]('[%s][TAG]\x20%s',_0x5c7065,_[_0xbd94('0x1c')](_0xa94d07)?JSON['stringify'](_0xa94d07):_0xa94d07);logger[_0xbd94('0x16')](_0xbd94('0x1a'),_0x5c7065);_0x8c624d[_0xbd94('0x10')]();}};};
\ No newline at end of file
index acabb16..6e86e24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['list','lodash','exports','render','merge','contact','message','account','interaction'];(function(_0x3a4cc9,_0x2e54e1){var _0x5ae1b7=function(_0x23561c){while(--_0x23561c){_0x3a4cc9['push'](_0x3a4cc9['shift']());}};_0x5ae1b7(++_0x2e54e1);}(_0xbaf0,0x12a));var _0x0baf=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xbaf0[_0x2b4411];return _0x8e41ef;};'use strict';var Mustache=require('mustache');var _=require(_0x0baf('0x0'));module[_0x0baf('0x1')]={'getMustacheRender':function(_0x1e212d,_0x263f79){return Mustache[_0x0baf('0x2')](_0x1e212d,_[_0x0baf('0x3')](_0x263f79['body'],{'contact':_0x263f79[_0x0baf('0x4')],'message':_0x263f79[_0x0baf('0x5')],'account':_0x263f79[_0x0baf('0x6')],'interaction':_0x263f79[_0x0baf('0x7')],'list':_0x263f79[_0x0baf('0x8')]}))||'';}};
\ No newline at end of file
+var _0xe706=['exports','render','merge','body','contact','message','account','interaction','list','mustache','lodash'];(function(_0x4c087b,_0x4ead5c){var _0x2f077e=function(_0x4b5dbd){while(--_0x4b5dbd){_0x4c087b['push'](_0x4c087b['shift']());}};_0x2f077e(++_0x4ead5c);}(_0xe706,0xa3));var _0x6e70=function(_0x26bb15,_0x39b070){_0x26bb15=_0x26bb15-0x0;var _0x7aa58a=_0xe706[_0x26bb15];return _0x7aa58a;};'use strict';var Mustache=require(_0x6e70('0x0'));var _=require(_0x6e70('0x1'));module[_0x6e70('0x2')]={'getMustacheRender':function(_0x5e8446,_0x2cae77){return Mustache[_0x6e70('0x3')](_0x5e8446,_[_0x6e70('0x4')](_0x2cae77[_0x6e70('0x5')],{'contact':_0x2cae77[_0x6e70('0x6')],'message':_0x2cae77[_0x6e70('0x7')],'account':_0x2cae77[_0x6e70('0x8')],'interaction':_0x2cae77[_0x6e70('0x9')],'list':_0x2cae77[_0x6e70('0xa')]}))||'';}};
\ No newline at end of file
index 255b235..ef53bff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x057f=['mail','push','slice','dialogflow','dialogflowv2','amazonlex','tag','TagId','format','%s:%s:%s','./interval','condition','intervals','consequence','priority','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','Please\x20create\x20a\x20new\x20file\x20under','execute','Applications\x20executed','stringify','matchPath','emit','complete','No\x20applications\x20to\x20execute','error','routing\x20is\x20empty','agent','agents','busy','end','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','stack','message\x20is\x20empty','busyQueue','capacity','hasOwnProperty','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','available','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','http','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','path','jayson/promise','bluebird','../../../config/environment','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','%s.%s.%s','IntervalId','isNil','Intervals','map','interval','rules','channel','message','interaction','applications','isArray','length','join','app','.js','toLowerCase','autoreply','appdata','split'];(function(_0x4c59c6,_0xf02b50){var _0x38ae55=function(_0x34a10e){while(--_0x34a10e){_0x4c59c6['push'](_0x4c59c6['shift']());}};_0x38ae55(++_0xf02b50);}(_0x057f,0x1d7));var _0xf057=function(_0x52d9b2,_0x74368b){_0x52d9b2=_0x52d9b2-0x0;var _0x3c8d1b=_0x057f[_0x52d9b2];return _0x3c8d1b;};'use strict';var _=require(_0xf057('0x0'));var util=require('util');var path=require(_0xf057('0x1'));var fs=require('fs');var jayson=require(_0xf057('0x2'));var BPromise=require(_0xf057('0x3'));var uuid=require('uuid');var config=require(_0xf057('0x4'));var logger=require(_0xf057('0x5'))(_0xf057('0x6'));var rpc={'openchannelQueueReport':require(_0xf057('0x7')),'mailQueueReport':require(_0xf057('0x8')),'chatQueueReport':require(_0xf057('0x9')),'smsQueueReport':require(_0xf057('0xa')),'faxQueueReport':require(_0xf057('0xb')),'whatsappQueueReport':require(_0xf057('0xc'))};var RuleEngine=require(_0xf057('0xd'));function getId(_0x12a7d1,_0x37a730,_0x4a4579){return util['format'](_0xf057('0xe'),_0x12a7d1,_0x37a730||0x0,_0x4a4579||0x0);}function getIntervals(_0x450855,_0x57bbbe){var _0xe6ef29=[];if(!_['isNil'](_0x57bbbe[_0xf057('0xf')])&&!_[_0xf057('0x10')](_0x450855[_0x57bbbe[_0xf057('0xf')]])&&!_[_0xf057('0x10')](_0x450855[_0x57bbbe['IntervalId']][_0xf057('0x11')])){_0xe6ef29=_[_0xf057('0x12')](_0x450855[_0x57bbbe[_0xf057('0xf')]][_0xf057('0x11')],'interval');}else if(!_[_0xf057('0x10')](_0x57bbbe['interval'])){_0xe6ef29=[_0x57bbbe[_0xf057('0x13')]];}return _0xe6ef29;}exports['listen']=function(_0x18e093){_0x18e093[_0xf057('0x14')]={};return new BPromise(function(_0x19f17c,_0xf4741f){var _0x113c0f={'Start':function(_0x324521){var _0x452256=this;return new Promise(function(_0x2d69f3,_0x4a8580){if(_0x324521){try{var _0x3d6c27=[];var _0x491828=getId(_0x324521[_0xf057('0x15')],_0x324521[_0xf057('0x16')]?_0x324521['message']['id']:0x0,_0x324521[_0xf057('0x17')]?_0x324521[_0xf057('0x17')]['id']:0x0);if(_0x324521[_0xf057('0x18')]&&_[_0xf057('0x19')](_0x324521[_0xf057('0x18')])&&_0x324521[_0xf057('0x18')]['length']){for(var _0xab6f0e=0x0;_0xab6f0e<_0x324521['applications'][_0xf057('0x1a')];_0xab6f0e+=0x1){var _0x37e25a=_0x324521[_0xf057('0x18')][_0xab6f0e];if(fs['existsSync'](path[_0xf057('0x1b')](__dirname,_0xf057('0x18'),_0x37e25a[_0xf057('0x1c')]+_0xf057('0x1d')))){var _0x1eb210=[];switch(_0x37e25a['app'][_0xf057('0x1e')]()){case _0xf057('0x1f'):var _0x183fc2=_0x37e25a[_0xf057('0x20')][_0xf057('0x21')](',');if(_0x324521[_0xf057('0x15')]===_0xf057('0x22')){_0x1eb210[_0xf057('0x23')](_0x183fc2[0x0]);_0x1eb210[_0xf057('0x23')](_0x183fc2[0x1]);_0x1eb210[_0xf057('0x23')](_0x183fc2[_0xf057('0x24')](0x2,_0x183fc2[_0xf057('0x1a')])[_0xf057('0x1b')](','));}else{_0x1eb210[_0xf057('0x23')](_0x183fc2[0x0]);_0x1eb210[_0xf057('0x23')](_0x183fc2[_0xf057('0x24')](0x1,_0x183fc2[_0xf057('0x1a')])[_0xf057('0x1b')](','));}break;case _0xf057('0x25'):var _0x5879bb=_0x37e25a[_0xf057('0x20')][_0xf057('0x21')](',');_0x1eb210['push'](_0x5879bb[0x0]);_0x1eb210['push'](_0x5879bb[0x1]);_0x1eb210[_0xf057('0x23')](_0x5879bb[_0xf057('0x24')](0x2,_0x5879bb[_0xf057('0x1a')])['join'](','));break;case _0xf057('0x26'):var _0x12b4a8=_0x37e25a[_0xf057('0x20')][_0xf057('0x21')](',');_0x1eb210[_0xf057('0x23')](_0x12b4a8[0x0]);_0x1eb210['push'](_0x12b4a8[0x1]);_0x1eb210['push'](_0x12b4a8[0x2]);_0x1eb210['push'](_0x12b4a8[0x3]);_0x1eb210[_0xf057('0x23')](_0x12b4a8['slice'](0x4,_0x12b4a8[_0xf057('0x1a')])[_0xf057('0x1b')](','));break;case _0xf057('0x27'):var _0x4f6362=_0x37e25a[_0xf057('0x20')][_0xf057('0x21')](',');_0x1eb210[_0xf057('0x23')](_0x4f6362[0x0]);_0x1eb210[_0xf057('0x23')](_0x4f6362[0x1]);_0x1eb210[_0xf057('0x23')](_0x4f6362[0x2]);_0x1eb210[_0xf057('0x23')](_0x4f6362[0x3]);_0x1eb210[_0xf057('0x23')](_0x4f6362[_0xf057('0x24')](0x4,_0x4f6362[_0xf057('0x1a')])[_0xf057('0x1b')](','));break;case _0xf057('0x16'):_0x1eb210[_0xf057('0x23')](_0x37e25a[_0xf057('0x20')]);break;case _0xf057('0x28'):_0x1eb210['push'](_0x37e25a[_0xf057('0x29')]);_0x1eb210['push'](_0x37e25a[_0xf057('0x20')]);break;default:_0x1eb210=_[_0xf057('0x10')](_0x37e25a[_0xf057('0x20')])?[]:_0x37e25a[_0xf057('0x20')][_0xf057('0x21')](',');}var _0x2176ab={'id':util[_0xf057('0x2a')](_0xf057('0x2b'),_0x491828,_0x37e25a['id'],_0x37e25a[_0xf057('0x1c')]),'condition':require(_0xf057('0x2c'))[_0xf057('0x2d')](_0x491828,getIntervals(_0x18e093[_0xf057('0x2e')],_0x37e25a),_0x18e093),'consequence':require('./applications/'+_0x37e25a[_0xf057('0x1c')])[_0xf057('0x2f')](_0x491828,_0x1eb210,_0x18e093,_0x324521),'p':_0x37e25a[_0xf057('0x30')]||0x0};logger[_0xf057('0x31')](_0xf057('0x32'),_0x2176ab['id'],_0xf057('0x33'),getIntervals(_0x18e093['intervals'],_0x37e25a)[_0xf057('0x1b')](_0xf057('0x34')));_0x3d6c27[_0xf057('0x23')](_0x2176ab);}else{logger['error'](_0xf057('0x35'),path[_0xf057('0x1b')](__dirname,_0xf057('0x18'),_0x37e25a[_0xf057('0x1c')]+_0xf057('0x1d')));}}_0x18e093[_0xf057('0x14')][_0x491828]=new RuleEngine(_0x3d6c27);_0x18e093[_0xf057('0x14')][_0x491828][_0xf057('0x36')](_0x324521,function(_0x46a981){logger[_0xf057('0x31')](_0xf057('0x37'),JSON[_0xf057('0x38')](_0x46a981[_0xf057('0x39')]));if(_0x18e093[_0xf057('0x14')][_0x491828]){_0x18e093[_0xf057('0x14')][_0x491828][_0xf057('0x3a')](_0xf057('0x3b'));}});return _0x2d69f3({'code':0xc8,'message':_0x324521});}else{logger[_0xf057('0x31')](_0xf057('0x3c'));return _0x2d69f3({'code':0xc8,'message':_0x324521});}}catch(_0x1711bf){logger[_0xf057('0x3d')](_0x1711bf['stack']);return _0x4a8580(_0x452256[_0xf057('0x3d')](0x1f4,_0x1711bf));}}return _0x4a8580(_0xf057('0x3e'));});},'AcceptMessage':function(_0x45e5dc){var _0x456753=this;return new Promise(function(_0x47fb8d,_0x55188a){if(_0x45e5dc[_0xf057('0x3f')]&&_0x45e5dc[_0xf057('0x3f')]['id']){if(_0x18e093[_0xf057('0x40')][_0x45e5dc[_0xf057('0x3f')]['id']]){_0x18e093[_0xf057('0x40')][_0x45e5dc[_0xf057('0x3f')]['id']][_0xf057('0x41')]=![];_0x18e093[_0xf057('0x40')][_0x45e5dc[_0xf057('0x3f')]['id']]['busyQueue']=undefined;}}if(_0x45e5dc['message']&&_0x45e5dc['message']['id']){try{var _0x5cde20=getId(_0x45e5dc[_0xf057('0x15')],_0x45e5dc[_0xf057('0x16')]?_0x45e5dc['message']['id']:0x0,_0x45e5dc[_0xf057('0x17')]?_0x45e5dc['interaction']['id']:0x0);if(_0x18e093[_0xf057('0x14')][_0x5cde20]){_0x18e093[_0xf057('0x14')][_0x5cde20][_0xf057('0x3a')](_0xf057('0x42'));if(rpc[_0x45e5dc['channel']+_0xf057('0x43')]){rpc[_0x45e5dc[_0xf057('0x15')]+'QueueReport'][_0xf057('0x44')](_0x5cde20,{'UserId':_0x45e5dc[_0xf057('0x16')][_0xf057('0x45')]})[_0xf057('0x46')](function(_0x1de3ea){logger[_0xf057('0x3d')](_0xf057('0x47'));});}}return _0x47fb8d({'code':0xc8,'message':_0x45e5dc});}catch(_0x40ee59){logger[_0xf057('0x3d')](_0x40ee59[_0xf057('0x48')]);return _0x55188a(_0x456753['error'](0x1f4,_0x40ee59));}}logger[_0xf057('0x3d')]('message\x20is\x20empty');return _0x55188a(_0x456753[_0xf057('0x3d')](0x1f4,_0xf057('0x49')));});},'RejectMessage':function(_0x33695e){var _0x2ccbd6=this;return new Promise(function(_0x19cb64,_0x52da7f){if(_0x33695e[_0xf057('0x3f')]&&_0x33695e[_0xf057('0x3f')]['id']){try{if(_0x18e093[_0xf057('0x40')][_0x33695e['agent']['id']]){_0x18e093[_0xf057('0x40')][_0x33695e[_0xf057('0x3f')]['id']][_0xf057('0x41')]=![];_0x18e093[_0xf057('0x40')][_0x33695e['agent']['id']][_0xf057('0x4a')]=undefined;}return _0x19cb64({'code':0xc8,'message':_0x33695e});}catch(_0x2e9d99){logger['error'](_0x2e9d99['stack']);return _0x52da7f(_0x2ccbd6['error'](0x1f4,_0x2e9d99));}}logger['error']('message\x20is\x20empty');return _0x52da7f(_0x2ccbd6['error'](0x1f4,'message\x20is\x20empty'));});},'AbandonInteraction':function(_0x58db9f){var _0x3f25b5=this;return new Promise(function(_0x5a4343,_0xe2624d){if(_0x58db9f[_0xf057('0x15')]&&_0x58db9f[_0xf057('0x17')]&&_0x58db9f['interaction']['id']){try{var _0x128251=getId(_0x58db9f[_0xf057('0x15')],_0x58db9f['message']?_0x58db9f[_0xf057('0x16')]['id']:0x0,_0x58db9f[_0xf057('0x17')]?_0x58db9f['interaction']['id']:0x0);if(_0x18e093['rules'][_0x128251]){_0x18e093['rules'][_0x128251][_0xf057('0x3a')](_0xf057('0x42'));}return _0x5a4343({'code':0xc8,'message':_0x58db9f});}catch(_0x15b443){logger['error'](_0x15b443[_0xf057('0x48')]);return _0xe2624d(_0x3f25b5[_0xf057('0x3d')](0x1f4,_0x15b443));}}logger[_0xf057('0x3d')](_0xf057('0x49'));return _0xe2624d(_0x3f25b5[_0xf057('0x3d')](0x1f4,_0xf057('0x49')));});},'AgentCapacity':function(_0x14d2f9){var _0x5b4938=this;return new Promise(function(_0x5612c4,_0x57ad0a){if(_0x18e093[_0xf057('0x40')]['hasOwnProperty'](_0x14d2f9['id'])){for(var _0x18e11a in _0x14d2f9[_0xf057('0x4b')]){if(_0x14d2f9[_0xf057('0x4b')]['hasOwnProperty'](_0x18e11a)){if(_0x18e093['agents'][_0x14d2f9['id']][_0xf057('0x4c')](_0x18e11a+_0xf057('0x4d'))){_0x18e093[_0xf057('0x40')][_0x14d2f9['id']][_0x18e11a+_0xf057('0x4d')]=parseInt(_0x14d2f9['capacity'][_0x18e11a],0xa);}}}_0x18e093[_0xf057('0x40')][_0x14d2f9['id']][_0xf057('0x4e')]();return _0x5612c4({'code':0xc8,'message':_0x18e093[_0xf057('0x40')][_0x14d2f9['id']]});}else{return _0x57ad0a(_0x5b4938[_0xf057('0x3d')](0x1f4,_0xf057('0x4f')));}});},'Agents':function(_0x2ec62f){return new Promise(function(_0x194d01,_0x390fc1){var _0x294bd1=_[_0xf057('0x50')](_0x18e093[_0xf057('0x40')]);_0x194d01({'count':_0x294bd1[_0xf057('0x1a')],'rows':_0x294bd1});});},'ChatQueues':function(_0x1cf0b0){return new Promise(function(_0x1a38a4,_0x1fb7b6){var _0x583f68=[];for(var _0x321e53 in _0x18e093[_0xf057('0x51')]){if(_0x18e093[_0xf057('0x51')]['hasOwnProperty'](_0x321e53)){var _0x48b827=_0x18e093[_0xf057('0x51')][_0x321e53];var _0x489a17={'id':_0x48b827['id'],'available':_0x48b827[_0xf057('0x52')],'loggedIn':_0x48b827[_0xf057('0x53')],'name':_0x48b827[_0xf057('0x54')],'paused':_0x48b827[_0xf057('0x55')],'waiting':_0x48b827[_0xf057('0x56')]};_0x583f68[_0xf057('0x23')](_0x489a17);}}_0x1a38a4({'count':_0x583f68['length'],'rows':_0x583f68});});},'MailQueues':function(_0x282fdb){return new Promise(function(_0x2358da,_0x564cc9){var _0x45d3da=[];for(var _0x269bd0 in _0x18e093[_0xf057('0x57')]){if(_0x18e093['mailQueues'][_0xf057('0x4c')](_0x269bd0)){var _0x170237=_0x18e093[_0xf057('0x57')][_0x269bd0];var _0x14ab0e={'id':_0x170237['id'],'available':_0x170237[_0xf057('0x52')],'loggedIn':_0x170237[_0xf057('0x53')],'name':_0x170237[_0xf057('0x54')],'paused':_0x170237['paused'],'waiting':_0x170237['waiting']};_0x45d3da['push'](_0x14ab0e);}}_0x2358da({'count':_0x45d3da[_0xf057('0x1a')],'rows':_0x45d3da});});},'OpenchannelQueues':function(_0x18b6bd){return new Promise(function(_0x165021,_0x498ba7){var _0x33ea02=[];for(var _0xf3ce6d in _0x18e093[_0xf057('0x58')]){if(_0x18e093[_0xf057('0x58')][_0xf057('0x4c')](_0xf3ce6d)){var _0x3dc75b=_0x18e093[_0xf057('0x58')][_0xf3ce6d];var _0x37d61c={'id':_0x3dc75b['id'],'available':_0x3dc75b[_0xf057('0x52')],'loggedIn':_0x3dc75b[_0xf057('0x53')],'name':_0x3dc75b[_0xf057('0x54')],'paused':_0x3dc75b[_0xf057('0x55')],'waiting':_0x3dc75b[_0xf057('0x56')]};_0x33ea02[_0xf057('0x23')](_0x37d61c);}}_0x165021({'count':_0x33ea02['length'],'rows':_0x33ea02});});},'SmsQueues':function(_0x151c08){return new Promise(function(_0x489278,_0x197a5b){var _0x271696=[];for(var _0x2213d7 in _0x18e093[_0xf057('0x59')]){if(_0x18e093[_0xf057('0x59')]['hasOwnProperty'](_0x2213d7)){var _0x4bfdee=_0x18e093[_0xf057('0x59')][_0x2213d7];var _0x2fde37={'id':_0x4bfdee['id'],'available':_0x4bfdee[_0xf057('0x52')],'loggedIn':_0x4bfdee['loggedIn'],'name':_0x4bfdee[_0xf057('0x54')],'paused':_0x4bfdee[_0xf057('0x55')],'waiting':_0x4bfdee[_0xf057('0x56')]};_0x271696[_0xf057('0x23')](_0x2fde37);}}_0x489278({'count':_0x271696[_0xf057('0x1a')],'rows':_0x271696});});},'FaxQueues':function(_0x19a29a){return new Promise(function(_0x5307d6,_0xd69e58){var _0x1de858=[];for(var _0x5e6636 in _0x18e093['faxQueues']){if(_0x18e093['faxQueues']['hasOwnProperty'](_0x5e6636)){var _0x494bb1=_0x18e093[_0xf057('0x5a')][_0x5e6636];var _0x4f07f0={'id':_0x494bb1['id'],'available':_0x494bb1['available'],'loggedIn':_0x494bb1[_0xf057('0x53')],'name':_0x494bb1['name'],'paused':_0x494bb1[_0xf057('0x55')],'waiting':_0x494bb1['waiting']};_0x1de858[_0xf057('0x23')](_0x4f07f0);}}_0x5307d6({'count':_0x1de858[_0xf057('0x1a')],'rows':_0x1de858});});},'WhatsappQueues':function(_0x2966e0){return new Promise(function(_0x54abf3,_0x48f7c4){var _0x6f4641=[];for(var _0x3f9ccc in _0x18e093['whatsappQueues']){if(_0x18e093[_0xf057('0x5b')][_0xf057('0x4c')](_0x3f9ccc)){var _0x1dfdf9=_0x18e093['whatsappQueues'][_0x3f9ccc];var _0x16b23d={'id':_0x1dfdf9['id'],'available':_0x1dfdf9['available'],'loggedIn':_0x1dfdf9[_0xf057('0x53')],'name':_0x1dfdf9[_0xf057('0x54')],'paused':_0x1dfdf9[_0xf057('0x55')],'waiting':_0x1dfdf9[_0xf057('0x56')]};_0x6f4641[_0xf057('0x23')](_0x16b23d);}}_0x54abf3({'count':_0x6f4641[_0xf057('0x1a')],'rows':_0x6f4641});});},'ChatQueuesWaitingInteractions':function(_0x14ffa8){return new Promise(function(_0x92fda2,_0x137cf4){var _0x6a4c7e=_[_0xf057('0x50')](_0x18e093[_0xf057('0x5c')]);_0x92fda2({'count':_0x6a4c7e['length'],'rows':_0x6a4c7e});});},'MailQueuesWaitingInteractions':function(_0x2b99bd){return new Promise(function(_0x3a9cc7,_0x7934c2){var _0x14f81c=_[_0xf057('0x50')](_0x18e093[_0xf057('0x5d')]);_0x3a9cc7({'count':_0x14f81c[_0xf057('0x1a')],'rows':_0x14f81c});});},'OpenchannelQueuesWaitingInteractions':function(_0x5a2dc4){return new Promise(function(_0x159be5,_0x57ac68){var _0x56c6a5=_[_0xf057('0x50')](_0x18e093[_0xf057('0x5e')]);_0x159be5({'count':_0x56c6a5[_0xf057('0x1a')],'rows':_0x56c6a5});});},'SmsQueuesWaitingInteractions':function(_0x5c469e){return new Promise(function(_0x3647bf,_0x1b1fb2){var _0x288c2c=_['values'](_0x18e093[_0xf057('0x5f')]);_0x3647bf({'count':_0x288c2c[_0xf057('0x1a')],'rows':_0x288c2c});});},'FaxQueuesWaitingInteractions':function(_0x379045){return new Promise(function(_0x56008f,_0x43b393){var _0xf8bbe4=_['values'](_0x18e093['faxQueuesWaitingInteractions']);_0x56008f({'count':_0xf8bbe4[_0xf057('0x1a')],'rows':_0xf8bbe4});});},'WhatsappQueuesWaitingInteractions':function(_0x40b6ac){return new Promise(function(_0x332d72,_0x55797e){var _0x17c673=_[_0xf057('0x50')](_0x18e093[_0xf057('0x60')]);_0x332d72({'count':_0x17c673[_0xf057('0x1a')],'rows':_0x17c673});});}};var _0x287720=jayson['server'](_0x113c0f)[_0xf057('0x61')]();_0x287720['on'](_0xf057('0x3d'),function(_0x3ee80a){logger[_0xf057('0x3d')](JSON[_0xf057('0x38')](_0x3ee80a));return _0xf4741f(_0x3ee80a);});_0x287720['listen'](0x232c,'127.0.0.1',function(){console[_0xf057('0x62')](_0xf057('0x63'),0x232c);return _0x19f17c(_0xf057('0x64')+0x232c);});});};
\ No newline at end of file
+var _0x7dea=['../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','%s.%s.%s','IntervalId','isNil','Intervals','interval','rules','channel','message','interaction','applications','isArray','length','existsSync','join','app','.js','autoreply','split','mail','push','slice','dialogflow','appdata','dialogflowv2','amazonlex','tag','TagId','%s:%s:%s','intervals','./applications/','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','error','execute','Applications\x20executed','matchPath','emit','No\x20applications\x20to\x20execute','stack','agent','agents','busy','busyQueue','end','QueueReport','update','UserId','error\x20update\x20queue\x20report','message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','available','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','stringify','listen','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','path','jayson/promise','bluebird'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0x7dea,0x16b));var _0xa7de=function(_0x93660b,_0x4146a4){_0x93660b=_0x93660b-0x0;var _0x2bf919=_0x7dea[_0x93660b];return _0x2bf919;};'use strict';var _=require(_0xa7de('0x0'));var util=require(_0xa7de('0x1'));var path=require(_0xa7de('0x2'));var fs=require('fs');var jayson=require(_0xa7de('0x3'));var BPromise=require(_0xa7de('0x4'));var uuid=require('uuid');var config=require('../../../config/environment');var logger=require('../../../config/logger')('routing');var rpc={'openchannelQueueReport':require('../rpc/openchannelQueueReport'),'mailQueueReport':require(_0xa7de('0x5')),'chatQueueReport':require(_0xa7de('0x6')),'smsQueueReport':require(_0xa7de('0x7')),'faxQueueReport':require(_0xa7de('0x8')),'whatsappQueueReport':require(_0xa7de('0x9'))};var RuleEngine=require(_0xa7de('0xa'));function getId(_0x42dbb1,_0x29a458,_0x460f44){return util['format'](_0xa7de('0xb'),_0x42dbb1,_0x29a458||0x0,_0x460f44||0x0);}function getIntervals(_0x2dec88,_0x59e44e){var _0x1b03a6=[];if(!_['isNil'](_0x59e44e[_0xa7de('0xc')])&&!_[_0xa7de('0xd')](_0x2dec88[_0x59e44e[_0xa7de('0xc')]])&&!_['isNil'](_0x2dec88[_0x59e44e['IntervalId']][_0xa7de('0xe')])){_0x1b03a6=_['map'](_0x2dec88[_0x59e44e['IntervalId']][_0xa7de('0xe')],_0xa7de('0xf'));}else if(!_['isNil'](_0x59e44e[_0xa7de('0xf')])){_0x1b03a6=[_0x59e44e[_0xa7de('0xf')]];}return _0x1b03a6;}exports['listen']=function(_0x5d5e4d){_0x5d5e4d[_0xa7de('0x10')]={};return new BPromise(function(_0x3f0b11,_0x29a9a4){var _0x3b6c01={'Start':function(_0x35463d){var _0x95b351=this;return new Promise(function(_0x50f467,_0x27761b){if(_0x35463d){try{var _0x2a0832=[];var _0x13282d=getId(_0x35463d[_0xa7de('0x11')],_0x35463d[_0xa7de('0x12')]?_0x35463d[_0xa7de('0x12')]['id']:0x0,_0x35463d[_0xa7de('0x13')]?_0x35463d[_0xa7de('0x13')]['id']:0x0);if(_0x35463d[_0xa7de('0x14')]&&_[_0xa7de('0x15')](_0x35463d[_0xa7de('0x14')])&&_0x35463d[_0xa7de('0x14')][_0xa7de('0x16')]){for(var _0x2131fa=0x0;_0x2131fa<_0x35463d['applications'][_0xa7de('0x16')];_0x2131fa+=0x1){var _0x183c3a=_0x35463d[_0xa7de('0x14')][_0x2131fa];if(fs[_0xa7de('0x17')](path[_0xa7de('0x18')](__dirname,_0xa7de('0x14'),_0x183c3a[_0xa7de('0x19')]+_0xa7de('0x1a')))){var _0x51663b=[];switch(_0x183c3a[_0xa7de('0x19')]['toLowerCase']()){case _0xa7de('0x1b'):var _0x4cb326=_0x183c3a['appdata'][_0xa7de('0x1c')](',');if(_0x35463d[_0xa7de('0x11')]===_0xa7de('0x1d')){_0x51663b[_0xa7de('0x1e')](_0x4cb326[0x0]);_0x51663b[_0xa7de('0x1e')](_0x4cb326[0x1]);_0x51663b[_0xa7de('0x1e')](_0x4cb326[_0xa7de('0x1f')](0x2,_0x4cb326[_0xa7de('0x16')])[_0xa7de('0x18')](','));}else{_0x51663b['push'](_0x4cb326[0x0]);_0x51663b['push'](_0x4cb326[_0xa7de('0x1f')](0x1,_0x4cb326[_0xa7de('0x16')])[_0xa7de('0x18')](','));}break;case _0xa7de('0x20'):var _0x3f23e6=_0x183c3a[_0xa7de('0x21')][_0xa7de('0x1c')](',');_0x51663b[_0xa7de('0x1e')](_0x3f23e6[0x0]);_0x51663b[_0xa7de('0x1e')](_0x3f23e6[0x1]);_0x51663b['push'](_0x3f23e6[_0xa7de('0x1f')](0x2,_0x3f23e6[_0xa7de('0x16')])[_0xa7de('0x18')](','));break;case _0xa7de('0x22'):var _0x35d46a=_0x183c3a[_0xa7de('0x21')][_0xa7de('0x1c')](',');_0x51663b[_0xa7de('0x1e')](_0x35d46a[0x0]);_0x51663b[_0xa7de('0x1e')](_0x35d46a[0x1]);_0x51663b[_0xa7de('0x1e')](_0x35d46a[0x2]);_0x51663b[_0xa7de('0x1e')](_0x35d46a[0x3]);_0x51663b['push'](_0x35d46a[_0xa7de('0x1f')](0x4,_0x35d46a[_0xa7de('0x16')])[_0xa7de('0x18')](','));break;case _0xa7de('0x23'):var _0x1985ef=_0x183c3a[_0xa7de('0x21')]['split'](',');_0x51663b[_0xa7de('0x1e')](_0x1985ef[0x0]);_0x51663b[_0xa7de('0x1e')](_0x1985ef[0x1]);_0x51663b[_0xa7de('0x1e')](_0x1985ef[0x2]);_0x51663b['push'](_0x1985ef[0x3]);_0x51663b[_0xa7de('0x1e')](_0x1985ef[_0xa7de('0x1f')](0x4,_0x1985ef[_0xa7de('0x16')])[_0xa7de('0x18')](','));break;case _0xa7de('0x12'):_0x51663b[_0xa7de('0x1e')](_0x183c3a['appdata']);break;case _0xa7de('0x24'):_0x51663b[_0xa7de('0x1e')](_0x183c3a[_0xa7de('0x25')]);_0x51663b[_0xa7de('0x1e')](_0x183c3a[_0xa7de('0x21')]);break;default:_0x51663b=_[_0xa7de('0xd')](_0x183c3a[_0xa7de('0x21')])?[]:_0x183c3a['appdata']['split'](',');}var _0x3baf6a={'id':util['format'](_0xa7de('0x26'),_0x13282d,_0x183c3a['id'],_0x183c3a['app']),'condition':require('./interval')['condition'](_0x13282d,getIntervals(_0x5d5e4d[_0xa7de('0x27')],_0x183c3a),_0x5d5e4d),'consequence':require(_0xa7de('0x28')+_0x183c3a['app'])['consequence'](_0x13282d,_0x51663b,_0x5d5e4d,_0x35463d),'p':_0x183c3a['priority']||0x0};logger[_0xa7de('0x29')](_0xa7de('0x2a'),_0x3baf6a['id'],_0xa7de('0x2b'),getIntervals(_0x5d5e4d[_0xa7de('0x27')],_0x183c3a)['join'](_0xa7de('0x2c')));_0x2a0832[_0xa7de('0x1e')](_0x3baf6a);}else{logger[_0xa7de('0x2d')]('Please\x20create\x20a\x20new\x20file\x20under',path[_0xa7de('0x18')](__dirname,_0xa7de('0x14'),_0x183c3a[_0xa7de('0x19')]+_0xa7de('0x1a')));}}_0x5d5e4d['rules'][_0x13282d]=new RuleEngine(_0x2a0832);_0x5d5e4d[_0xa7de('0x10')][_0x13282d][_0xa7de('0x2e')](_0x35463d,function(_0x1a07df){logger[_0xa7de('0x29')](_0xa7de('0x2f'),JSON['stringify'](_0x1a07df[_0xa7de('0x30')]));if(_0x5d5e4d[_0xa7de('0x10')][_0x13282d]){_0x5d5e4d[_0xa7de('0x10')][_0x13282d][_0xa7de('0x31')]('complete');}});return _0x50f467({'code':0xc8,'message':_0x35463d});}else{logger[_0xa7de('0x29')](_0xa7de('0x32'));return _0x50f467({'code':0xc8,'message':_0x35463d});}}catch(_0x22d3d5){logger[_0xa7de('0x2d')](_0x22d3d5[_0xa7de('0x33')]);return _0x27761b(_0x95b351[_0xa7de('0x2d')](0x1f4,_0x22d3d5));}}return _0x27761b('routing\x20is\x20empty');});},'AcceptMessage':function(_0x3d06ab){var _0x1007e3=this;return new Promise(function(_0x1bda7e,_0x3d181a){if(_0x3d06ab[_0xa7de('0x34')]&&_0x3d06ab[_0xa7de('0x34')]['id']){if(_0x5d5e4d[_0xa7de('0x35')][_0x3d06ab[_0xa7de('0x34')]['id']]){_0x5d5e4d[_0xa7de('0x35')][_0x3d06ab['agent']['id']][_0xa7de('0x36')]=![];_0x5d5e4d[_0xa7de('0x35')][_0x3d06ab[_0xa7de('0x34')]['id']][_0xa7de('0x37')]=undefined;}}if(_0x3d06ab[_0xa7de('0x12')]&&_0x3d06ab[_0xa7de('0x12')]['id']){try{var _0x152e5b=getId(_0x3d06ab[_0xa7de('0x11')],_0x3d06ab[_0xa7de('0x12')]?_0x3d06ab[_0xa7de('0x12')]['id']:0x0,_0x3d06ab[_0xa7de('0x13')]?_0x3d06ab[_0xa7de('0x13')]['id']:0x0);if(_0x5d5e4d[_0xa7de('0x10')][_0x152e5b]){_0x5d5e4d[_0xa7de('0x10')][_0x152e5b]['emit'](_0xa7de('0x38'));if(rpc[_0x3d06ab[_0xa7de('0x11')]+_0xa7de('0x39')]){rpc[_0x3d06ab['channel']+'QueueReport'][_0xa7de('0x3a')](_0x152e5b,{'UserId':_0x3d06ab[_0xa7de('0x12')][_0xa7de('0x3b')]})['catch'](function(_0x117fc3){logger['error'](_0xa7de('0x3c'));});}}return _0x1bda7e({'code':0xc8,'message':_0x3d06ab});}catch(_0x395986){logger[_0xa7de('0x2d')](_0x395986[_0xa7de('0x33')]);return _0x3d181a(_0x1007e3['error'](0x1f4,_0x395986));}}logger[_0xa7de('0x2d')]('message\x20is\x20empty');return _0x3d181a(_0x1007e3[_0xa7de('0x2d')](0x1f4,_0xa7de('0x3d')));});},'RejectMessage':function(_0x492f15){var _0xb0cb46=this;return new Promise(function(_0x944880,_0x5ae9d1){if(_0x492f15[_0xa7de('0x34')]&&_0x492f15[_0xa7de('0x34')]['id']){try{if(_0x5d5e4d[_0xa7de('0x35')][_0x492f15[_0xa7de('0x34')]['id']]){_0x5d5e4d[_0xa7de('0x35')][_0x492f15['agent']['id']][_0xa7de('0x36')]=![];_0x5d5e4d['agents'][_0x492f15['agent']['id']][_0xa7de('0x37')]=undefined;}return _0x944880({'code':0xc8,'message':_0x492f15});}catch(_0x7af0cc){logger[_0xa7de('0x2d')](_0x7af0cc[_0xa7de('0x33')]);return _0x5ae9d1(_0xb0cb46[_0xa7de('0x2d')](0x1f4,_0x7af0cc));}}logger[_0xa7de('0x2d')]('message\x20is\x20empty');return _0x5ae9d1(_0xb0cb46['error'](0x1f4,_0xa7de('0x3d')));});},'AbandonInteraction':function(_0x340a00){var _0xcb7ca5=this;return new Promise(function(_0x2d6439,_0x2de1b0){if(_0x340a00[_0xa7de('0x11')]&&_0x340a00['interaction']&&_0x340a00[_0xa7de('0x13')]['id']){try{var _0xb44408=getId(_0x340a00['channel'],_0x340a00[_0xa7de('0x12')]?_0x340a00[_0xa7de('0x12')]['id']:0x0,_0x340a00[_0xa7de('0x13')]?_0x340a00[_0xa7de('0x13')]['id']:0x0);if(_0x5d5e4d[_0xa7de('0x10')][_0xb44408]){_0x5d5e4d[_0xa7de('0x10')][_0xb44408][_0xa7de('0x31')](_0xa7de('0x38'));}return _0x2d6439({'code':0xc8,'message':_0x340a00});}catch(_0x58fd6b){logger['error'](_0x58fd6b[_0xa7de('0x33')]);return _0x2de1b0(_0xcb7ca5[_0xa7de('0x2d')](0x1f4,_0x58fd6b));}}logger[_0xa7de('0x2d')](_0xa7de('0x3d'));return _0x2de1b0(_0xcb7ca5[_0xa7de('0x2d')](0x1f4,_0xa7de('0x3d')));});},'AgentCapacity':function(_0x29ffbe){var _0x523e48=this;return new Promise(function(_0x14fce4,_0x19ff01){if(_0x5d5e4d['agents'][_0xa7de('0x3e')](_0x29ffbe['id'])){for(var _0x45a084 in _0x29ffbe[_0xa7de('0x3f')]){if(_0x29ffbe[_0xa7de('0x3f')][_0xa7de('0x3e')](_0x45a084)){if(_0x5d5e4d[_0xa7de('0x35')][_0x29ffbe['id']][_0xa7de('0x3e')](_0x45a084+_0xa7de('0x40'))){_0x5d5e4d[_0xa7de('0x35')][_0x29ffbe['id']][_0x45a084+_0xa7de('0x40')]=parseInt(_0x29ffbe[_0xa7de('0x3f')][_0x45a084],0xa);}}}_0x5d5e4d[_0xa7de('0x35')][_0x29ffbe['id']][_0xa7de('0x41')]();return _0x14fce4({'code':0xc8,'message':_0x5d5e4d[_0xa7de('0x35')][_0x29ffbe['id']]});}else{return _0x19ff01(_0x523e48[_0xa7de('0x2d')](0x1f4,_0xa7de('0x42')));}});},'Agents':function(_0xc21a0c){return new Promise(function(_0x3c58ee,_0x4304ef){var _0x3f9f1b=_[_0xa7de('0x43')](_0x5d5e4d[_0xa7de('0x35')]);_0x3c58ee({'count':_0x3f9f1b[_0xa7de('0x16')],'rows':_0x3f9f1b});});},'ChatQueues':function(_0x43d8bf){return new Promise(function(_0x41ef7f,_0x5d370f){var _0x27785a=[];for(var _0x14f36f in _0x5d5e4d[_0xa7de('0x44')]){if(_0x5d5e4d[_0xa7de('0x44')][_0xa7de('0x3e')](_0x14f36f)){var _0x53f43f=_0x5d5e4d[_0xa7de('0x44')][_0x14f36f];var _0x1554d7={'id':_0x53f43f['id'],'available':_0x53f43f[_0xa7de('0x45')],'loggedIn':_0x53f43f[_0xa7de('0x46')],'name':_0x53f43f[_0xa7de('0x47')],'paused':_0x53f43f[_0xa7de('0x48')],'waiting':_0x53f43f[_0xa7de('0x49')]};_0x27785a[_0xa7de('0x1e')](_0x1554d7);}}_0x41ef7f({'count':_0x27785a[_0xa7de('0x16')],'rows':_0x27785a});});},'MailQueues':function(_0xdeb239){return new Promise(function(_0x45c6a8,_0x3f2401){var _0x5753b1=[];for(var _0x2bd424 in _0x5d5e4d['mailQueues']){if(_0x5d5e4d[_0xa7de('0x4a')][_0xa7de('0x3e')](_0x2bd424)){var _0x33fdc8=_0x5d5e4d[_0xa7de('0x4a')][_0x2bd424];var _0x40860a={'id':_0x33fdc8['id'],'available':_0x33fdc8['available'],'loggedIn':_0x33fdc8['loggedIn'],'name':_0x33fdc8[_0xa7de('0x47')],'paused':_0x33fdc8[_0xa7de('0x48')],'waiting':_0x33fdc8[_0xa7de('0x49')]};_0x5753b1[_0xa7de('0x1e')](_0x40860a);}}_0x45c6a8({'count':_0x5753b1[_0xa7de('0x16')],'rows':_0x5753b1});});},'OpenchannelQueues':function(_0x49b9e4){return new Promise(function(_0x43e096,_0x1a857e){var _0x1d904f=[];for(var _0x134b00 in _0x5d5e4d[_0xa7de('0x4b')]){if(_0x5d5e4d[_0xa7de('0x4b')]['hasOwnProperty'](_0x134b00)){var _0x41c74d=_0x5d5e4d[_0xa7de('0x4b')][_0x134b00];var _0x230665={'id':_0x41c74d['id'],'available':_0x41c74d[_0xa7de('0x45')],'loggedIn':_0x41c74d['loggedIn'],'name':_0x41c74d[_0xa7de('0x47')],'paused':_0x41c74d[_0xa7de('0x48')],'waiting':_0x41c74d[_0xa7de('0x49')]};_0x1d904f[_0xa7de('0x1e')](_0x230665);}}_0x43e096({'count':_0x1d904f[_0xa7de('0x16')],'rows':_0x1d904f});});},'SmsQueues':function(_0x2610c1){return new Promise(function(_0x5a282e,_0x3b0038){var _0x1e505b=[];for(var _0x9a8fd5 in _0x5d5e4d[_0xa7de('0x4c')]){if(_0x5d5e4d[_0xa7de('0x4c')][_0xa7de('0x3e')](_0x9a8fd5)){var _0x3ae997=_0x5d5e4d[_0xa7de('0x4c')][_0x9a8fd5];var _0x55bb1d={'id':_0x3ae997['id'],'available':_0x3ae997[_0xa7de('0x45')],'loggedIn':_0x3ae997['loggedIn'],'name':_0x3ae997['name'],'paused':_0x3ae997[_0xa7de('0x48')],'waiting':_0x3ae997['waiting']};_0x1e505b[_0xa7de('0x1e')](_0x55bb1d);}}_0x5a282e({'count':_0x1e505b[_0xa7de('0x16')],'rows':_0x1e505b});});},'FaxQueues':function(_0x55edf4){return new Promise(function(_0x4a4615,_0x3e5c9b){var _0x447359=[];for(var _0x3b7822 in _0x5d5e4d['faxQueues']){if(_0x5d5e4d[_0xa7de('0x4d')][_0xa7de('0x3e')](_0x3b7822)){var _0x127612=_0x5d5e4d[_0xa7de('0x4d')][_0x3b7822];var _0x538d0a={'id':_0x127612['id'],'available':_0x127612['available'],'loggedIn':_0x127612[_0xa7de('0x46')],'name':_0x127612['name'],'paused':_0x127612[_0xa7de('0x48')],'waiting':_0x127612[_0xa7de('0x49')]};_0x447359[_0xa7de('0x1e')](_0x538d0a);}}_0x4a4615({'count':_0x447359[_0xa7de('0x16')],'rows':_0x447359});});},'WhatsappQueues':function(_0x56dd31){return new Promise(function(_0x31d1fa,_0x5ee5c2){var _0x8600cf=[];for(var _0x53f64d in _0x5d5e4d['whatsappQueues']){if(_0x5d5e4d[_0xa7de('0x4e')][_0xa7de('0x3e')](_0x53f64d)){var _0x25271c=_0x5d5e4d[_0xa7de('0x4e')][_0x53f64d];var _0x423956={'id':_0x25271c['id'],'available':_0x25271c[_0xa7de('0x45')],'loggedIn':_0x25271c['loggedIn'],'name':_0x25271c[_0xa7de('0x47')],'paused':_0x25271c[_0xa7de('0x48')],'waiting':_0x25271c[_0xa7de('0x49')]};_0x8600cf[_0xa7de('0x1e')](_0x423956);}}_0x31d1fa({'count':_0x8600cf[_0xa7de('0x16')],'rows':_0x8600cf});});},'ChatQueuesWaitingInteractions':function(_0xf1f92a){return new Promise(function(_0x3ad01f,_0xa3a4e1){var _0xfc7053=_[_0xa7de('0x43')](_0x5d5e4d[_0xa7de('0x4f')]);_0x3ad01f({'count':_0xfc7053['length'],'rows':_0xfc7053});});},'MailQueuesWaitingInteractions':function(_0x2fe4f1){return new Promise(function(_0x2196c7,_0x5b0544){var _0xb7829d=_[_0xa7de('0x43')](_0x5d5e4d[_0xa7de('0x50')]);_0x2196c7({'count':_0xb7829d[_0xa7de('0x16')],'rows':_0xb7829d});});},'OpenchannelQueuesWaitingInteractions':function(_0x44f7b9){return new Promise(function(_0x413761,_0x390ff2){var _0x239f14=_[_0xa7de('0x43')](_0x5d5e4d[_0xa7de('0x51')]);_0x413761({'count':_0x239f14[_0xa7de('0x16')],'rows':_0x239f14});});},'SmsQueuesWaitingInteractions':function(_0x4ee673){return new Promise(function(_0x12c8f4,_0x576f68){var _0x1e86a7=_[_0xa7de('0x43')](_0x5d5e4d[_0xa7de('0x52')]);_0x12c8f4({'count':_0x1e86a7['length'],'rows':_0x1e86a7});});},'FaxQueuesWaitingInteractions':function(_0x26bb28){return new Promise(function(_0x5a47a6,_0x425038){var _0x39e2ba=_[_0xa7de('0x43')](_0x5d5e4d[_0xa7de('0x53')]);_0x5a47a6({'count':_0x39e2ba['length'],'rows':_0x39e2ba});});},'WhatsappQueuesWaitingInteractions':function(_0xce5099){return new Promise(function(_0xeaa54f,_0x53686f){var _0x33104a=_['values'](_0x5d5e4d[_0xa7de('0x54')]);_0xeaa54f({'count':_0x33104a['length'],'rows':_0x33104a});});}};var _0x4eca3d=jayson[_0xa7de('0x55')](_0x3b6c01)[_0xa7de('0x56')]();_0x4eca3d['on'](_0xa7de('0x2d'),function(_0x12f078){logger[_0xa7de('0x2d')](JSON[_0xa7de('0x57')](_0x12f078));return _0x29a9a4(_0x12f078);});_0x4eca3d[_0xa7de('0x58')](0x232c,'127.0.0.1',function(){console[_0xa7de('0x59')](_0xa7de('0x5a'),0x232c);return _0x3f0b11(_0xa7de('0x5b')+0x232c);});});};
\ No newline at end of file
index 0d8949e..1f87724 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4f1=['condition','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','push','Command','format','iftime\x20%s','indexOf','true','catch','[%s][INTERVAL]\x20%s','all','some','join','when','log','[%s][INTERVAL]\x20%s\x20%s','\x20|\x20','util','bluebird','jayson/promise','lodash','../../../config/logger','routing','client','http','request','then','error','message','result'];(function(_0x29c545,_0x13432b){var _0x13c257=function(_0x22e319){while(--_0x22e319){_0x29c545['push'](_0x29c545['shift']());}};_0x13c257(++_0x13432b);}(_0xe4f1,0x169));var _0x1e4f=function(_0x50804a,_0x3930b3){_0x50804a=_0x50804a-0x0;var _0x4b507c=_0xe4f1[_0x50804a];return _0x4b507c;};'use strict';var util=require(_0x1e4f('0x0'));var BPromise=require(_0x1e4f('0x1'));var jayson=require(_0x1e4f('0x2'));var _=require(_0x1e4f('0x3'));var logger=require(_0x1e4f('0x4'))(_0x1e4f('0x5'));var client=jayson[_0x1e4f('0x6')][_0x1e4f('0x7')]({'port':0x232a});function request(_0x179831,_0x233bb3){return new BPromise(function(_0x2b8913,_0x192ee0){return client[_0x1e4f('0x8')](_0x179831,_0x233bb3)[_0x1e4f('0x9')](function(_0x488c6c){if(_0x488c6c[_0x1e4f('0xa')]){return _0x192ee0(_0x488c6c[_0x1e4f('0xa')][_0x1e4f('0xb')]);}else{return _0x2b8913(_0x488c6c[_0x1e4f('0xc')]);}})['catch'](function(_0x2adbe5){return _0x192ee0(_0x2adbe5);});});}exports[_0x1e4f('0xd')]=function(_0x33e5b8,_0x3cfd6b,_0x3146bb){return function(_0x3cd211){if(_0x3146bb[_0x1e4f('0xe')]&&!_0x3146bb[_0x1e4f('0xe')][_0x33e5b8]){logger[_0x1e4f('0xf')](_0x1e4f('0x10'),_0x33e5b8);return _0x3cd211[_0x1e4f('0x11')]();}var _0x30242f=[];for(var _0x4453f4=0x0;_0x4453f4<_0x3cfd6b[_0x1e4f('0x12')];_0x4453f4+=0x1){_0x30242f[_0x1e4f('0x13')](request(_0x1e4f('0x14'),{'command':util[_0x1e4f('0x15')](_0x1e4f('0x16'),_0x3cfd6b[_0x4453f4])})['then'](function(_0x5ef91d){return _0x5ef91d&&_0x5ef91d[_0x1e4f('0xb')]&&_0x5ef91d[_0x1e4f('0xb')][_0x1e4f('0x17')](_0x1e4f('0x18'))>=0x0?!![]:![];})[_0x1e4f('0x19')](function(_0x7709cf){logger[_0x1e4f('0xa')](_0x1e4f('0x1a'),_0x33e5b8,_0x3cfd6b[_0x4453f4]);}));}BPromise[_0x1e4f('0x1b')](_0x30242f)['then'](function(_0x49bb14){var _0x238956=_[_0x1e4f('0x1c')](_0x49bb14);logger['info']('[%s][INTERVAL]\x20%s\x20%s',_0x33e5b8,_0x3cfd6b[_0x1e4f('0x1d')]('\x20|\x20'),_0x238956);_0x3cd211[_0x1e4f('0x1e')](_0x238956);})[_0x1e4f('0x19')](function(_0x1d915c){console[_0x1e4f('0x1f')](_0x1d915c);logger['error'](_0x1e4f('0x20'),_0x33e5b8,_0x3cfd6b[_0x1e4f('0x1d')](_0x1e4f('0x21')),_0x1d915c['stack']);_0x3cd211['stop']();});};};
\ No newline at end of file
+var _0x402b=['push','Command','format','iftime\x20%s','indexOf','true','[%s][INTERVAL]\x20%s','some','[%s][INTERVAL]\x20%s\x20%s','\x20|\x20','stack','util','lodash','../../../config/logger','client','http','then','error','message','result','catch','condition','rules','stop','length'];(function(_0xa1181c,_0x1724a4){var _0x1ef296=function(_0x1233e0){while(--_0x1233e0){_0xa1181c['push'](_0xa1181c['shift']());}};_0x1ef296(++_0x1724a4);}(_0x402b,0x19b));var _0xb402=function(_0x52d481,_0x5cef5c){_0x52d481=_0x52d481-0x0;var _0x3c4aa7=_0x402b[_0x52d481];return _0x3c4aa7;};'use strict';var util=require(_0xb402('0x0'));var BPromise=require('bluebird');var jayson=require('jayson/promise');var _=require(_0xb402('0x1'));var logger=require(_0xb402('0x2'))('routing');var client=jayson[_0xb402('0x3')][_0xb402('0x4')]({'port':0x232a});function request(_0x47e61e,_0x5c526c){return new BPromise(function(_0x3b91e8,_0x4cb71e){return client['request'](_0x47e61e,_0x5c526c)[_0xb402('0x5')](function(_0x24b624){if(_0x24b624[_0xb402('0x6')]){return _0x4cb71e(_0x24b624[_0xb402('0x6')][_0xb402('0x7')]);}else{return _0x3b91e8(_0x24b624[_0xb402('0x8')]);}})[_0xb402('0x9')](function(_0x338c68){return _0x4cb71e(_0x338c68);});});}exports[_0xb402('0xa')]=function(_0x3f1dc5,_0xd25ee5,_0x221125){return function(_0x326164){if(_0x221125[_0xb402('0xb')]&&!_0x221125[_0xb402('0xb')][_0x3f1dc5]){logger['info']('[%s][INTERVAL]\x20ROUTING\x20STOPPED',_0x3f1dc5);return _0x326164[_0xb402('0xc')]();}var _0x1ff161=[];for(var _0x36ce1e=0x0;_0x36ce1e<_0xd25ee5[_0xb402('0xd')];_0x36ce1e+=0x1){_0x1ff161[_0xb402('0xe')](request(_0xb402('0xf'),{'command':util[_0xb402('0x10')](_0xb402('0x11'),_0xd25ee5[_0x36ce1e])})[_0xb402('0x5')](function(_0x5466d2){return _0x5466d2&&_0x5466d2[_0xb402('0x7')]&&_0x5466d2['message'][_0xb402('0x12')](_0xb402('0x13'))>=0x0?!![]:![];})[_0xb402('0x9')](function(_0x3c940f){logger[_0xb402('0x6')](_0xb402('0x14'),_0x3f1dc5,_0xd25ee5[_0x36ce1e]);}));}BPromise['all'](_0x1ff161)[_0xb402('0x5')](function(_0x349900){var _0x299d01=_[_0xb402('0x15')](_0x349900);logger['info'](_0xb402('0x16'),_0x3f1dc5,_0xd25ee5['join'](_0xb402('0x17')),_0x299d01);_0x326164['when'](_0x299d01);})['catch'](function(_0x18c8b3){console['log'](_0x18c8b3);logger[_0xb402('0x6')](_0xb402('0x16'),_0x3f1dc5,_0xd25ee5['join'](_0xb402('0x17')),_0x18c8b3[_0xb402('0x18')]);_0x326164['stop']();});};};
\ No newline at end of file
index d069a36..fee4a2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96cc=['rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','agent','lodash','./utils','info','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','queue','membername','interface','connectedlinenum','lastevent','getVoiceQueueByName','then','type','agentacw','agentcomplete','acwtime','acwTimeout','CreateVoiceAgentReport','request','agentcalled','debug','destuniqueid','agentcalledAt','now','called','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','[%s][agents][agentcalled]','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','reason','timeout','ringtime','talktime','push','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]','abandoned','holdtime','agentconnect','[%s][agents][agentconnect]','agentconnectAt','connectedlinename','connect','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','complete','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype','blind','extension','transferuniqueid','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfereruniqueid','ATTENDED','transferexten','origtransfererexten','transfereeuniqueid','agententerreason','calleridnum','calleridname','secondtransfererlinkedid','secondtransfererexten','transfertargetuniqueid','clone','hangup','[%s][agents][hangup]','cause'];(function(_0xb252cf,_0x267eca){var _0x624db1=function(_0x5e0896){while(--_0x5e0896){_0xb252cf['push'](_0xb252cf['shift']());}};_0x624db1(++_0x267eca);}(_0x96cc,0x16c));var _0xc96c=function(_0x51dbba,_0x817f0d){_0x51dbba=_0x51dbba-0x0;var _0x34906d=_0x96cc[_0x51dbba];return _0x34906d;};'use strict';var _=require(_0xc96c('0x0'));var util=require('util');var utils=require(_0xc96c('0x1'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x5f11f2,_0x30bf8a){utils[_0xc96c('0x2')](util[_0xc96c('0x3')](_0xc96c('0x4'),_0x5f11f2[_0xc96c('0x5')],_0x5f11f2[_0xc96c('0x6')],_0x5f11f2[_0xc96c('0x7')],_0x5f11f2[_0xc96c('0x8')],_0x5f11f2[_0xc96c('0x9')],_0x5f11f2['calleridnum'],_0x5f11f2[_0xc96c('0xa')],_0x5f11f2[_0xc96c('0xb')]));if(_0x5f11f2[_0xc96c('0x7')]){utils[_0xc96c('0xc')](_0x5f11f2[_0xc96c('0x7')])[_0xc96c('0xd')](function(_0x36b2b4){if(_0x36b2b4){_0x5f11f2['type']=_0x36b2b4[_0xc96c('0xe')];_0x5f11f2[_0xc96c('0xf')]=_0x5f11f2[_0xc96c('0x10')]?_0x36b2b4['acw']:![];_0x5f11f2[_0xc96c('0x11')]=_0x5f11f2['agentacw']?_0x36b2b4[_0xc96c('0x12')]:0x0;}utils['request'](_0xc96c('0x13'),_0x5f11f2);});}else{utils[_0xc96c('0x14')](_0xc96c('0x13'),_0x5f11f2);}if(_0x30bf8a){delete transfers[_0x5f11f2[_0xc96c('0x5')]];}else{delete agents[_0x5f11f2['destuniqueid']];}}exports[_0xc96c('0x15')]=function(_0x43fcaa){try{utils[_0xc96c('0x16')](util[_0xc96c('0x3')]('[%s][agents][agentcalled]',_0x43fcaa[_0xc96c('0x5')]),_0x43fcaa);agents[_0x43fcaa[_0xc96c('0x17')]]=_0x43fcaa;agents[_0x43fcaa[_0xc96c('0x17')]][_0xc96c('0x18')]=utils[_0xc96c('0x19')]();agents[_0x43fcaa[_0xc96c('0x17')]][_0xc96c('0xb')]=_0xc96c('0x1a');agents[_0x43fcaa[_0xc96c('0x17')]][_0xc96c('0xa')]=null;agents[_0x43fcaa[_0xc96c('0x17')]]['connectedlinename']=null;utils['info'](util[_0xc96c('0x3')](_0xc96c('0x1b'),_0x43fcaa[_0xc96c('0x5')],agents[_0x43fcaa[_0xc96c('0x17')]]['membername'],_0x43fcaa[_0xc96c('0x17')]));}catch(_0x100fdb){utils[_0xc96c('0x1c')](util[_0xc96c('0x3')](_0xc96c('0x1d'),_0x43fcaa[_0xc96c('0x5')]),_0x100fdb);}};exports[_0xc96c('0x1e')]=function(_0x41daba){try{if(!_[_0xc96c('0x1f')](agents[_0x41daba[_0xc96c('0x17')]])){utils[_0xc96c('0x16')](util[_0xc96c('0x3')](_0xc96c('0x20'),_0x41daba[_0xc96c('0x5')]),_0x41daba);utils[_0xc96c('0x2')](util[_0xc96c('0x3')](_0xc96c('0x21'),_0x41daba['uniqueid'],agents[_0x41daba[_0xc96c('0x17')]][_0xc96c('0x8')],_0x41daba[_0xc96c('0x17')]));agents[_0x41daba[_0xc96c('0x17')]][_0xc96c('0x1e')]=!![];agents[_0x41daba[_0xc96c('0x17')]][_0xc96c('0x22')]=utils[_0xc96c('0x19')]();agents[_0x41daba[_0xc96c('0x17')]][_0xc96c('0xb')]='timeout';agents[_0x41daba[_0xc96c('0x17')]][_0xc96c('0x23')]=_0xc96c('0x24');agents[_0x41daba[_0xc96c('0x17')]]['holdtime']=_0x41daba['ringtime']?parseInt(_0x41daba[_0xc96c('0x25')])/0x3e8:0x0;agents[_0x41daba[_0xc96c('0x17')]][_0xc96c('0x26')]=0x0;unanswered[_0xc96c('0x27')](_0x41daba[_0xc96c('0x17')]);}}catch(_0x5e1727){utils[_0xc96c('0x1c')](util[_0xc96c('0x3')](_0xc96c('0x20'),_0x41daba[_0xc96c('0x5')]),_0x5e1727);}};exports[_0xc96c('0x28')]=function(_0x40c72b){try{_[_0xc96c('0x29')](agents,function(_0x328ee4,_0x556108){if(_0x328ee4[_0xc96c('0x5')]==_0x40c72b['uniqueid']&&!_[_0xc96c('0x2a')](unanswered,_0x328ee4[_0xc96c('0x17')])){utils[_0xc96c('0x16')](util['format'](_0xc96c('0x2b'),_0x40c72b[_0xc96c('0x5')]),_0x40c72b);utils[_0xc96c('0x2')](util[_0xc96c('0x3')]('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x40c72b['uniqueid'],_0x328ee4[_0xc96c('0x8')],_0x328ee4[_0xc96c('0x17')]));_0x328ee4[_0xc96c('0x1e')]=!![];_0x328ee4['agentringnoanswerAt']=utils[_0xc96c('0x19')]();_0x328ee4[_0xc96c('0xb')]=_0xc96c('0x2c');_0x328ee4[_0xc96c('0x23')]='abandoned';_0x328ee4[_0xc96c('0x2d')]=_0x40c72b[_0xc96c('0x2d')];_0x328ee4['talktime']=0x0;writeDB(_0x328ee4);}});}catch(_0x2b1dec){utils[_0xc96c('0x1c')](util[_0xc96c('0x3')](_0xc96c('0x2b'),_0x40c72b[_0xc96c('0x5')]),_0x2b1dec);}};exports[_0xc96c('0x2e')]=function(_0x4e8241){try{if(agents[_0x4e8241[_0xc96c('0x17')]]){utils[_0xc96c('0x16')](util[_0xc96c('0x3')](_0xc96c('0x2f'),_0x4e8241[_0xc96c('0x5')]),_0x4e8241);utils[_0xc96c('0x2')](util['format']('[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x4e8241[_0xc96c('0x5')],agents[_0x4e8241[_0xc96c('0x17')]]['membername'],_0x4e8241['destuniqueid']));agents[_0x4e8241[_0xc96c('0x17')]][_0xc96c('0x30')]=utils[_0xc96c('0x19')]();agents[_0x4e8241[_0xc96c('0x17')]][_0xc96c('0xa')]=_0x4e8241[_0xc96c('0xa')];agents[_0x4e8241[_0xc96c('0x17')]][_0xc96c('0x31')]=_0x4e8241[_0xc96c('0x31')];agents[_0x4e8241[_0xc96c('0x17')]][_0xc96c('0x2d')]=_0x4e8241['ringtime'];agents[_0x4e8241[_0xc96c('0x17')]][_0xc96c('0xb')]=_0xc96c('0x32');_[_0xc96c('0x29')](agents,function(_0x4eb180,_0x167671){if(_0x4eb180[_0xc96c('0x17')]!=_0x4e8241[_0xc96c('0x17')]&&_0x4eb180['uniqueid']==_0x4e8241['uniqueid']){_0x4eb180[_0xc96c('0x26')]=0x0;_0x4eb180[_0xc96c('0x2d')]=_0x4e8241[_0xc96c('0x25')];_0x4eb180['agentringnoanswer']=!![];_0x4eb180[_0xc96c('0x22')]=utils[_0xc96c('0x19')]();_0x4eb180[_0xc96c('0xb')]=_0xc96c('0x33');_0x4eb180[_0xc96c('0x23')]=_0xc96c('0x33');_0x4eb180[_0xc96c('0x34')]=_0x4e8241[_0xc96c('0x17')];_0x4eb180[_0xc96c('0x35')]=_0x4e8241['membername'];writeDB(_0x4eb180);}});}}catch(_0x4c3088){utils[_0xc96c('0x1c')](util[_0xc96c('0x3')](_0xc96c('0x2f'),_0x4e8241[_0xc96c('0x5')]),_0x4c3088);}};exports['agentcomplete']=function(_0x5ee6ac){try{if(!_[_0xc96c('0x1f')](agents[_0x5ee6ac[_0xc96c('0x17')]])){utils[_0xc96c('0x16')](util[_0xc96c('0x3')](_0xc96c('0x36'),_0x5ee6ac[_0xc96c('0x5')]),_0x5ee6ac);utils[_0xc96c('0x2')](util['format'](_0xc96c('0x37'),_0x5ee6ac[_0xc96c('0x5')],agents[_0x5ee6ac[_0xc96c('0x17')]][_0xc96c('0x8')],_0x5ee6ac['destuniqueid']));agents[_0x5ee6ac['destuniqueid']][_0xc96c('0x10')]=!![];agents[_0x5ee6ac[_0xc96c('0x17')]][_0xc96c('0x38')]=utils[_0xc96c('0x19')]();agents[_0x5ee6ac[_0xc96c('0x17')]][_0xc96c('0x26')]=utils[_0xc96c('0x39')](agents[_0x5ee6ac[_0xc96c('0x17')]][_0xc96c('0x38')],agents[_0x5ee6ac[_0xc96c('0x17')]][_0xc96c('0x30')]);agents[_0x5ee6ac[_0xc96c('0x17')]][_0xc96c('0x23')]=_0x5ee6ac['reason'];agents[_0x5ee6ac[_0xc96c('0x17')]][_0xc96c('0xb')]=_0xc96c('0x3a');writeDB(agents[_0x5ee6ac[_0xc96c('0x17')]]);}}catch(_0x56bce1){utils[_0xc96c('0x1c')](util['format'](_0xc96c('0x36'),_0x5ee6ac[_0xc96c('0x5')]),_0x56bce1);}};exports['blindtransfer']=function(_0x2581ae){try{if(!_[_0xc96c('0x1f')](agents[_0x2581ae[_0xc96c('0x3b')]])){utils[_0xc96c('0x16')](util[_0xc96c('0x3')](_0xc96c('0x3c'),_0x2581ae['uniqueid']),_0x2581ae);utils['info'](util['format'](_0xc96c('0x3d'),_0x2581ae['uniqueid'],agents[_0x2581ae[_0xc96c('0x3b')]][_0xc96c('0x8')],agents[_0x2581ae[_0xc96c('0x3b')]][_0xc96c('0x5')]));agents[_0x2581ae[_0xc96c('0x3b')]][_0xc96c('0x3e')]=!![];agents[_0x2581ae[_0xc96c('0x3b')]][_0xc96c('0x3f')]=_0xc96c('0x40');agents[_0x2581ae[_0xc96c('0x3b')]]['transferexten']=_0x2581ae[_0xc96c('0x41')];agents[_0x2581ae[_0xc96c('0x3b')]][_0xc96c('0x42')]=agents[_0x2581ae[_0xc96c('0x3b')]][_0xc96c('0x5')];}}catch(_0xcde9){utils[_0xc96c('0x1c')](util[_0xc96c('0x3')]('[%s][agents][blindtransfer]',_0x2581ae['uniqueid']),_0xcde9);}};exports['attendedtransfer']=function(_0x5c3d95){try{utils[_0xc96c('0x16')](util[_0xc96c('0x3')](_0xc96c('0x43'),_0x5c3d95[_0xc96c('0x44')]),_0x5c3d95);if(_0x5c3d95[_0xc96c('0x44')]==_0x5c3d95[_0xc96c('0x45')]){if(!_[_0xc96c('0x1f')](agents[_0x5c3d95['secondtransfereruniqueid']])){utils[_0xc96c('0x2')](util[_0xc96c('0x3')](_0xc96c('0x46'),_0x5c3d95[_0xc96c('0x44')],agents[_0x5c3d95[_0xc96c('0x47')]][_0xc96c('0x8')]));agents[_0x5c3d95[_0xc96c('0x47')]]['transfer']=!![];agents[_0x5c3d95[_0xc96c('0x47')]][_0xc96c('0x3f')]=_0xc96c('0x48');agents[_0x5c3d95[_0xc96c('0x47')]][_0xc96c('0x49')]=_0x5c3d95[_0xc96c('0x4a')];agents[_0x5c3d95[_0xc96c('0x47')]][_0xc96c('0x42')]=_0x5c3d95[_0xc96c('0x44')];}if(_0x5c3d95[_0xc96c('0x4b')]&&agents[_0x5c3d95[_0xc96c('0x4b')]]){agents[_0x5c3d95[_0xc96c('0x4b')]][_0xc96c('0x4c')]=0x1;transfers[_0x5c3d95[_0xc96c('0x4b')]]=_['clone'](agents[_0x5c3d95[_0xc96c('0x4b')]]);transfers[_0x5c3d95[_0xc96c('0x4b')]][_0xc96c('0x4d')]=agents[_0x5c3d95[_0xc96c('0x47')]][_0xc96c('0x4d')];transfers[_0x5c3d95['transfereeuniqueid']][_0xc96c('0x4e')]=agents[_0x5c3d95[_0xc96c('0x47')]][_0xc96c('0x4e')];transfers[_0x5c3d95[_0xc96c('0x4b')]]['agentcalledAt']=utils[_0xc96c('0x19')]();transfers[_0x5c3d95[_0xc96c('0x4b')]]['agentconnectAt']=utils['now']();transfers[_0x5c3d95['transfereeuniqueid']][_0xc96c('0x2d')]=0x0;transfers[_0x5c3d95[_0xc96c('0x4b')]][_0xc96c('0x4c')]=0x2;}}else if(_0x5c3d95[_0xc96c('0x47')]==_0x5c3d95[_0xc96c('0x4f')]){if(!_['isNil'](agents[_0x5c3d95['origtransfereruniqueid']])){utils[_0xc96c('0x2')](util[_0xc96c('0x3')](_0xc96c('0x46'),_0x5c3d95[_0xc96c('0x44')],agents[_0x5c3d95[_0xc96c('0x44')]]['membername']));agents[_0x5c3d95[_0xc96c('0x44')]][_0xc96c('0x3e')]=!![];agents[_0x5c3d95[_0xc96c('0x44')]][_0xc96c('0x3f')]='ATTENDED';agents[_0x5c3d95['origtransfereruniqueid']][_0xc96c('0x49')]=_0x5c3d95[_0xc96c('0x50')];agents[_0x5c3d95['origtransfereruniqueid']][_0xc96c('0x42')]=_0x5c3d95['secondtransfereruniqueid'];}if(_0x5c3d95[_0xc96c('0x51')]&&agents[_0x5c3d95[_0xc96c('0x51')]]){agents[_0x5c3d95[_0xc96c('0x51')]][_0xc96c('0x4c')]=0x1;transfers[_0x5c3d95[_0xc96c('0x51')]]=_[_0xc96c('0x52')](agents[_0x5c3d95[_0xc96c('0x51')]]);transfers[_0x5c3d95[_0xc96c('0x51')]][_0xc96c('0x4d')]=agents[_0x5c3d95[_0xc96c('0x44')]]['calleridnum'];transfers[_0x5c3d95[_0xc96c('0x51')]]['calleridname']=agents[_0x5c3d95[_0xc96c('0x44')]][_0xc96c('0x4e')];transfers[_0x5c3d95['transfertargetuniqueid']][_0xc96c('0x18')]=utils['now']();transfers[_0x5c3d95[_0xc96c('0x51')]][_0xc96c('0x30')]=utils[_0xc96c('0x19')]();transfers[_0x5c3d95[_0xc96c('0x51')]][_0xc96c('0x2d')]=0x0;transfers[_0x5c3d95[_0xc96c('0x51')]][_0xc96c('0x4c')]=0x2;}}}catch(_0xbd6525){utils[_0xc96c('0x1c')](util['format'](_0xc96c('0x43'),_0x5c3d95[_0xc96c('0x44')]),_0xbd6525);}};exports[_0xc96c('0x53')]=function(_0x43f94e){try{utils['debug'](util[_0xc96c('0x3')](_0xc96c('0x54'),_0x43f94e['uniqueid']),_0x43f94e);if(agents[_0x43f94e['uniqueid']]&&agents[_0x43f94e[_0xc96c('0x5')]]['reason']===_0xc96c('0x24')){if(_0x43f94e[_0xc96c('0x55')]==='21'){agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x23')]=_0xc96c('0x56');agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0xb')]=_0xc96c('0x56');}utils[_0xc96c('0x2')](util['format'](_0xc96c('0x57'),_0x43f94e[_0xc96c('0x5')],agents[_0x43f94e[_0xc96c('0x5')]]['membername'],agents[_0x43f94e['uniqueid']][_0xc96c('0x23')],agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0xb')]));writeDB(agents[_0x43f94e[_0xc96c('0x5')]]);var _0x1efa88=unanswered[_0xc96c('0x58')](_0x43f94e[_0xc96c('0x5')]);if(_0x1efa88>-0x1){unanswered['splice'](_0x1efa88,0x1);}}if(transfers[_0x43f94e[_0xc96c('0x5')]]){transfers[_0x43f94e[_0xc96c('0x5')]]['agentcomplete']=!![];transfers[_0x43f94e[_0xc96c('0x5')]]['agentcompleteAt']=utils[_0xc96c('0x19')]();transfers[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x26')]=utils[_0xc96c('0x39')](transfers[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x38')],transfers[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x30')]);transfers[_0x43f94e[_0xc96c('0x5')]]['reason']=_0xc96c('0x59');transfers[_0x43f94e[_0xc96c('0x5')]]['lastevent']=_0xc96c('0x3a');utils['info'](util[_0xc96c('0x3')](_0xc96c('0x57'),_0x43f94e[_0xc96c('0x5')],transfers[_0x43f94e['uniqueid']][_0xc96c('0x8')],transfers[_0x43f94e[_0xc96c('0x5')]]['reason'],transfers[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0xb')]));writeDB(transfers[_0x43f94e[_0xc96c('0x5')]],!![]);}if(agents[_0x43f94e['uniqueid']]&&agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x30')]){agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x10')]=!![];agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x38')]=utils[_0xc96c('0x19')]();agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x26')]=utils[_0xc96c('0x39')](agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x38')],agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x30')]);agents[_0x43f94e[_0xc96c('0x5')]]['reason']=agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x3e')]?_0xc96c('0x3e'):_0xc96c('0x59');agents[_0x43f94e[_0xc96c('0x5')]]['lastevent']=_0xc96c('0x3a');utils[_0xc96c('0x2')](util[_0xc96c('0x3')](_0xc96c('0x57'),_0x43f94e[_0xc96c('0x5')],agents[_0x43f94e['uniqueid']]['membername'],agents[_0x43f94e[_0xc96c('0x5')]][_0xc96c('0x23')],agents[_0x43f94e['uniqueid']][_0xc96c('0xb')]));writeDB(agents[_0x43f94e[_0xc96c('0x5')]]);}}catch(_0x563449){utils[_0xc96c('0x1c')](util[_0xc96c('0x3')]('[%s][agents][hangup]',_0x43f94e[_0xc96c('0x5')]),_0x563449);}};
\ No newline at end of file
+var _0x2bc6=['lastevent','getVoiceQueueByName','then','type','agentcomplete','acw','acwtime','acwTimeout','request','CreateVoiceAgentReport','uniqueid','destuniqueid','debug','[%s][agents][agentcalled]','agentcalledAt','now','called','connectedlinename','info','format','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','membername','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswer','agentringnoanswerAt','reason','timeout','holdtime','ringtime','push','[%s][agents][agentringnoanswer]','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','error','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','talktime','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','isNil','[%s][agents][agentcomplete]','diffTime','complete','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','transfertype','blind','transferexten','extension','transferuniqueid','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','transfer','ATTENDED','origtransfererexten','transfereeuniqueid','clone','calleridname','agententerreason','secondtransfererlinkedid','secondtransfererexten','transfertargetuniqueid','hangup','[%s][agents][hangup]','cause','rejected','indexOf','splice','agentcompleteAt','agent','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','lodash','util','./utils','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','interface','calleridnum','connectedlinenum'];(function(_0x29857d,_0x355f09){var _0x12a7d=function(_0x7305d3){while(--_0x7305d3){_0x29857d['push'](_0x29857d['shift']());}};_0x12a7d(++_0x355f09);}(_0x2bc6,0x163));var _0x62bc=function(_0x513dde,_0x27b9c2){_0x513dde=_0x513dde-0x0;var _0x592532=_0x2bc6[_0x513dde];return _0x592532;};'use strict';var _=require(_0x62bc('0x0'));var util=require(_0x62bc('0x1'));var utils=require(_0x62bc('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x56939b,_0x4b4e73){utils['info'](util['format'](_0x62bc('0x3'),_0x56939b['uniqueid'],_0x56939b[_0x62bc('0x4')],_0x56939b[_0x62bc('0x5')],_0x56939b['membername'],_0x56939b[_0x62bc('0x6')],_0x56939b[_0x62bc('0x7')],_0x56939b[_0x62bc('0x8')],_0x56939b[_0x62bc('0x9')]));if(_0x56939b[_0x62bc('0x5')]){utils[_0x62bc('0xa')](_0x56939b['queue'])[_0x62bc('0xb')](function(_0x762c71){if(_0x762c71){_0x56939b[_0x62bc('0xc')]=_0x762c71[_0x62bc('0xc')];_0x56939b['agentacw']=_0x56939b[_0x62bc('0xd')]?_0x762c71[_0x62bc('0xe')]:![];_0x56939b[_0x62bc('0xf')]=_0x56939b['agentacw']?_0x762c71[_0x62bc('0x10')]:0x0;}utils[_0x62bc('0x11')](_0x62bc('0x12'),_0x56939b);});}else{utils[_0x62bc('0x11')](_0x62bc('0x12'),_0x56939b);}if(_0x4b4e73){delete transfers[_0x56939b[_0x62bc('0x13')]];}else{delete agents[_0x56939b[_0x62bc('0x14')]];}}exports['agentcalled']=function(_0x2a96ae){try{utils[_0x62bc('0x15')](util['format'](_0x62bc('0x16'),_0x2a96ae[_0x62bc('0x13')]),_0x2a96ae);agents[_0x2a96ae[_0x62bc('0x14')]]=_0x2a96ae;agents[_0x2a96ae['destuniqueid']][_0x62bc('0x17')]=utils[_0x62bc('0x18')]();agents[_0x2a96ae['destuniqueid']]['lastevent']=_0x62bc('0x19');agents[_0x2a96ae[_0x62bc('0x14')]]['connectedlinenum']=null;agents[_0x2a96ae[_0x62bc('0x14')]][_0x62bc('0x1a')]=null;utils[_0x62bc('0x1b')](util[_0x62bc('0x1c')](_0x62bc('0x1d'),_0x2a96ae[_0x62bc('0x13')],agents[_0x2a96ae[_0x62bc('0x14')]][_0x62bc('0x1e')],_0x2a96ae[_0x62bc('0x14')]));}catch(_0x5ed51c){utils['error'](util[_0x62bc('0x1c')](_0x62bc('0x16'),_0x2a96ae[_0x62bc('0x13')]),_0x5ed51c);}};exports['agentringnoanswer']=function(_0x380621){try{if(!_['isNil'](agents[_0x380621[_0x62bc('0x14')]])){utils[_0x62bc('0x15')](util[_0x62bc('0x1c')]('[%s][agents][agentringnoanswer]',_0x380621[_0x62bc('0x13')]),_0x380621);utils[_0x62bc('0x1b')](util[_0x62bc('0x1c')](_0x62bc('0x1f'),_0x380621[_0x62bc('0x13')],agents[_0x380621[_0x62bc('0x14')]]['membername'],_0x380621[_0x62bc('0x14')]));agents[_0x380621[_0x62bc('0x14')]][_0x62bc('0x20')]=!![];agents[_0x380621[_0x62bc('0x14')]][_0x62bc('0x21')]=utils['now']();agents[_0x380621['destuniqueid']][_0x62bc('0x9')]='timeout';agents[_0x380621[_0x62bc('0x14')]][_0x62bc('0x22')]=_0x62bc('0x23');agents[_0x380621['destuniqueid']][_0x62bc('0x24')]=_0x380621[_0x62bc('0x25')]?parseInt(_0x380621[_0x62bc('0x25')])/0x3e8:0x0;agents[_0x380621['destuniqueid']]['talktime']=0x0;unanswered[_0x62bc('0x26')](_0x380621[_0x62bc('0x14')]);}}catch(_0x23817c){utils['error'](util[_0x62bc('0x1c')](_0x62bc('0x27'),_0x380621[_0x62bc('0x13')]),_0x23817c);}};exports[_0x62bc('0x28')]=function(_0x5a9302){try{_[_0x62bc('0x29')](agents,function(_0x5e4491,_0x26701b){if(_0x5e4491[_0x62bc('0x13')]==_0x5a9302[_0x62bc('0x13')]&&!_[_0x62bc('0x2a')](unanswered,_0x5e4491[_0x62bc('0x14')])){utils[_0x62bc('0x15')](util[_0x62bc('0x1c')](_0x62bc('0x2b'),_0x5a9302[_0x62bc('0x13')]),_0x5a9302);utils[_0x62bc('0x1b')](util[_0x62bc('0x1c')](_0x62bc('0x2c'),_0x5a9302[_0x62bc('0x13')],_0x5e4491[_0x62bc('0x1e')],_0x5e4491[_0x62bc('0x14')]));_0x5e4491[_0x62bc('0x20')]=!![];_0x5e4491[_0x62bc('0x21')]=utils['now']();_0x5e4491[_0x62bc('0x9')]='abandoned';_0x5e4491['reason']=_0x62bc('0x2d');_0x5e4491['holdtime']=_0x5a9302['holdtime'];_0x5e4491['talktime']=0x0;writeDB(_0x5e4491);}});}catch(_0x3f22c1){utils[_0x62bc('0x2e')](util[_0x62bc('0x1c')]('[%s][agents][queuecallerabandon]',_0x5a9302['uniqueid']),_0x3f22c1);}};exports['agentconnect']=function(_0x3c938d){try{if(agents[_0x3c938d[_0x62bc('0x14')]]){utils['debug'](util['format'](_0x62bc('0x2f'),_0x3c938d[_0x62bc('0x13')]),_0x3c938d);utils[_0x62bc('0x1b')](util['format'](_0x62bc('0x30'),_0x3c938d[_0x62bc('0x13')],agents[_0x3c938d[_0x62bc('0x14')]][_0x62bc('0x1e')],_0x3c938d['destuniqueid']));agents[_0x3c938d[_0x62bc('0x14')]][_0x62bc('0x31')]=utils['now']();agents[_0x3c938d[_0x62bc('0x14')]][_0x62bc('0x8')]=_0x3c938d[_0x62bc('0x8')];agents[_0x3c938d[_0x62bc('0x14')]]['connectedlinename']=_0x3c938d[_0x62bc('0x1a')];agents[_0x3c938d['destuniqueid']][_0x62bc('0x24')]=_0x3c938d[_0x62bc('0x25')];agents[_0x3c938d[_0x62bc('0x14')]][_0x62bc('0x9')]='connect';_[_0x62bc('0x29')](agents,function(_0x5c806b,_0x392550){if(_0x5c806b[_0x62bc('0x14')]!=_0x3c938d[_0x62bc('0x14')]&&_0x5c806b[_0x62bc('0x13')]==_0x3c938d[_0x62bc('0x13')]){_0x5c806b[_0x62bc('0x32')]=0x0;_0x5c806b[_0x62bc('0x24')]=_0x3c938d[_0x62bc('0x25')];_0x5c806b[_0x62bc('0x20')]=!![];_0x5c806b['agentringnoanswerAt']=utils['now']();_0x5c806b[_0x62bc('0x9')]=_0x62bc('0x33');_0x5c806b['reason']=_0x62bc('0x33');_0x5c806b[_0x62bc('0x34')]=_0x3c938d[_0x62bc('0x14')];_0x5c806b[_0x62bc('0x35')]=_0x3c938d[_0x62bc('0x1e')];writeDB(_0x5c806b);}});}}catch(_0x5f3752){utils[_0x62bc('0x2e')](util[_0x62bc('0x1c')]('[%s][agents][agentconnect]',_0x3c938d['uniqueid']),_0x5f3752);}};exports[_0x62bc('0xd')]=function(_0xdbd9ee){try{if(!_[_0x62bc('0x36')](agents[_0xdbd9ee['destuniqueid']])){utils[_0x62bc('0x15')](util[_0x62bc('0x1c')](_0x62bc('0x37'),_0xdbd9ee[_0x62bc('0x13')]),_0xdbd9ee);utils[_0x62bc('0x1b')](util[_0x62bc('0x1c')]('[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0xdbd9ee[_0x62bc('0x13')],agents[_0xdbd9ee['destuniqueid']][_0x62bc('0x1e')],_0xdbd9ee[_0x62bc('0x14')]));agents[_0xdbd9ee[_0x62bc('0x14')]]['agentcomplete']=!![];agents[_0xdbd9ee['destuniqueid']]['agentcompleteAt']=utils[_0x62bc('0x18')]();agents[_0xdbd9ee['destuniqueid']][_0x62bc('0x32')]=utils[_0x62bc('0x38')](agents[_0xdbd9ee['destuniqueid']]['agentcompleteAt'],agents[_0xdbd9ee['destuniqueid']][_0x62bc('0x31')]);agents[_0xdbd9ee[_0x62bc('0x14')]][_0x62bc('0x22')]=_0xdbd9ee[_0x62bc('0x22')];agents[_0xdbd9ee[_0x62bc('0x14')]]['lastevent']=_0x62bc('0x39');writeDB(agents[_0xdbd9ee[_0x62bc('0x14')]]);}}catch(_0x4859fc){utils[_0x62bc('0x2e')](util['format'](_0x62bc('0x37'),_0xdbd9ee[_0x62bc('0x13')]),_0x4859fc);}};exports[_0x62bc('0x3a')]=function(_0xca6190){try{if(!_[_0x62bc('0x36')](agents[_0xca6190[_0x62bc('0x3b')]])){utils[_0x62bc('0x15')](util['format'](_0x62bc('0x3c'),_0xca6190[_0x62bc('0x13')]),_0xca6190);utils['info'](util[_0x62bc('0x1c')]('[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s',_0xca6190[_0x62bc('0x13')],agents[_0xca6190[_0x62bc('0x3b')]]['membername'],agents[_0xca6190[_0x62bc('0x3b')]][_0x62bc('0x13')]));agents[_0xca6190[_0x62bc('0x3b')]]['transfer']=!![];agents[_0xca6190[_0x62bc('0x3b')]][_0x62bc('0x3d')]=_0x62bc('0x3e');agents[_0xca6190[_0x62bc('0x3b')]][_0x62bc('0x3f')]=_0xca6190[_0x62bc('0x40')];agents[_0xca6190[_0x62bc('0x3b')]][_0x62bc('0x41')]=agents[_0xca6190[_0x62bc('0x3b')]][_0x62bc('0x13')];}}catch(_0x44d2a2){utils[_0x62bc('0x2e')](util[_0x62bc('0x1c')](_0x62bc('0x3c'),_0xca6190[_0x62bc('0x13')]),_0x44d2a2);}};exports[_0x62bc('0x42')]=function(_0x5b0e9b){try{utils[_0x62bc('0x15')](util[_0x62bc('0x1c')](_0x62bc('0x43'),_0x5b0e9b[_0x62bc('0x44')]),_0x5b0e9b);if(_0x5b0e9b[_0x62bc('0x44')]==_0x5b0e9b[_0x62bc('0x45')]){if(!_[_0x62bc('0x36')](agents[_0x5b0e9b[_0x62bc('0x46')]])){utils[_0x62bc('0x1b')](util[_0x62bc('0x1c')](_0x62bc('0x47'),_0x5b0e9b[_0x62bc('0x44')],agents[_0x5b0e9b['secondtransfereruniqueid']][_0x62bc('0x1e')]));agents[_0x5b0e9b['secondtransfereruniqueid']][_0x62bc('0x48')]=!![];agents[_0x5b0e9b[_0x62bc('0x46')]][_0x62bc('0x3d')]=_0x62bc('0x49');agents[_0x5b0e9b[_0x62bc('0x46')]][_0x62bc('0x3f')]=_0x5b0e9b[_0x62bc('0x4a')];agents[_0x5b0e9b[_0x62bc('0x46')]]['transferuniqueid']=_0x5b0e9b['origtransfereruniqueid'];}if(_0x5b0e9b[_0x62bc('0x4b')]&&agents[_0x5b0e9b[_0x62bc('0x4b')]]){agents[_0x5b0e9b[_0x62bc('0x4b')]]['agententerreason']=0x1;transfers[_0x5b0e9b[_0x62bc('0x4b')]]=_[_0x62bc('0x4c')](agents[_0x5b0e9b[_0x62bc('0x4b')]]);transfers[_0x5b0e9b[_0x62bc('0x4b')]]['calleridnum']=agents[_0x5b0e9b[_0x62bc('0x46')]][_0x62bc('0x7')];transfers[_0x5b0e9b[_0x62bc('0x4b')]][_0x62bc('0x4d')]=agents[_0x5b0e9b[_0x62bc('0x46')]][_0x62bc('0x4d')];transfers[_0x5b0e9b[_0x62bc('0x4b')]]['agentcalledAt']=utils[_0x62bc('0x18')]();transfers[_0x5b0e9b[_0x62bc('0x4b')]][_0x62bc('0x31')]=utils['now']();transfers[_0x5b0e9b['transfereeuniqueid']][_0x62bc('0x24')]=0x0;transfers[_0x5b0e9b[_0x62bc('0x4b')]][_0x62bc('0x4e')]=0x2;}}else if(_0x5b0e9b['secondtransfereruniqueid']==_0x5b0e9b[_0x62bc('0x4f')]){if(!_['isNil'](agents[_0x5b0e9b[_0x62bc('0x44')]])){utils[_0x62bc('0x1b')](util['format'](_0x62bc('0x47'),_0x5b0e9b['origtransfereruniqueid'],agents[_0x5b0e9b[_0x62bc('0x44')]]['membername']));agents[_0x5b0e9b[_0x62bc('0x44')]][_0x62bc('0x48')]=!![];agents[_0x5b0e9b[_0x62bc('0x44')]][_0x62bc('0x3d')]=_0x62bc('0x49');agents[_0x5b0e9b[_0x62bc('0x44')]]['transferexten']=_0x5b0e9b[_0x62bc('0x50')];agents[_0x5b0e9b[_0x62bc('0x44')]][_0x62bc('0x41')]=_0x5b0e9b['secondtransfereruniqueid'];}if(_0x5b0e9b[_0x62bc('0x51')]&&agents[_0x5b0e9b[_0x62bc('0x51')]]){agents[_0x5b0e9b[_0x62bc('0x51')]][_0x62bc('0x4e')]=0x1;transfers[_0x5b0e9b['transfertargetuniqueid']]=_[_0x62bc('0x4c')](agents[_0x5b0e9b[_0x62bc('0x51')]]);transfers[_0x5b0e9b[_0x62bc('0x51')]][_0x62bc('0x7')]=agents[_0x5b0e9b[_0x62bc('0x44')]]['calleridnum'];transfers[_0x5b0e9b['transfertargetuniqueid']][_0x62bc('0x4d')]=agents[_0x5b0e9b['origtransfereruniqueid']][_0x62bc('0x4d')];transfers[_0x5b0e9b[_0x62bc('0x51')]]['agentcalledAt']=utils[_0x62bc('0x18')]();transfers[_0x5b0e9b['transfertargetuniqueid']][_0x62bc('0x31')]=utils['now']();transfers[_0x5b0e9b[_0x62bc('0x51')]]['holdtime']=0x0;transfers[_0x5b0e9b[_0x62bc('0x51')]][_0x62bc('0x4e')]=0x2;}}}catch(_0x6bb64b){utils['error'](util[_0x62bc('0x1c')](_0x62bc('0x43'),_0x5b0e9b[_0x62bc('0x44')]),_0x6bb64b);}};exports[_0x62bc('0x52')]=function(_0x177fba){try{utils['debug'](util[_0x62bc('0x1c')](_0x62bc('0x53'),_0x177fba[_0x62bc('0x13')]),_0x177fba);if(agents[_0x177fba[_0x62bc('0x13')]]&&agents[_0x177fba[_0x62bc('0x13')]][_0x62bc('0x22')]===_0x62bc('0x23')){if(_0x177fba[_0x62bc('0x54')]==='21'){agents[_0x177fba[_0x62bc('0x13')]][_0x62bc('0x22')]=_0x62bc('0x55');agents[_0x177fba['uniqueid']][_0x62bc('0x9')]=_0x62bc('0x55');}utils[_0x62bc('0x1b')](util[_0x62bc('0x1c')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x177fba[_0x62bc('0x13')],agents[_0x177fba[_0x62bc('0x13')]][_0x62bc('0x1e')],agents[_0x177fba[_0x62bc('0x13')]][_0x62bc('0x22')],agents[_0x177fba[_0x62bc('0x13')]][_0x62bc('0x9')]));writeDB(agents[_0x177fba[_0x62bc('0x13')]]);var _0x5698a4=unanswered[_0x62bc('0x56')](_0x177fba[_0x62bc('0x13')]);if(_0x5698a4>-0x1){unanswered[_0x62bc('0x57')](_0x5698a4,0x1);}}if(transfers[_0x177fba[_0x62bc('0x13')]]){transfers[_0x177fba[_0x62bc('0x13')]][_0x62bc('0xd')]=!![];transfers[_0x177fba[_0x62bc('0x13')]][_0x62bc('0x58')]=utils[_0x62bc('0x18')]();transfers[_0x177fba[_0x62bc('0x13')]][_0x62bc('0x32')]=utils[_0x62bc('0x38')](transfers[_0x177fba['uniqueid']][_0x62bc('0x58')],transfers[_0x177fba[_0x62bc('0x13')]]['agentconnectAt']);transfers[_0x177fba[_0x62bc('0x13')]]['reason']=_0x62bc('0x59');transfers[_0x177fba[_0x62bc('0x13')]]['lastevent']=_0x62bc('0x39');utils['info'](util[_0x62bc('0x1c')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x177fba[_0x62bc('0x13')],transfers[_0x177fba['uniqueid']][_0x62bc('0x1e')],transfers[_0x177fba[_0x62bc('0x13')]][_0x62bc('0x22')],transfers[_0x177fba[_0x62bc('0x13')]][_0x62bc('0x9')]));writeDB(transfers[_0x177fba[_0x62bc('0x13')]],!![]);}if(agents[_0x177fba['uniqueid']]&&agents[_0x177fba[_0x62bc('0x13')]][_0x62bc('0x31')]){agents[_0x177fba[_0x62bc('0x13')]][_0x62bc('0xd')]=!![];agents[_0x177fba[_0x62bc('0x13')]][_0x62bc('0x58')]=utils[_0x62bc('0x18')]();agents[_0x177fba[_0x62bc('0x13')]][_0x62bc('0x32')]=utils[_0x62bc('0x38')](agents[_0x177fba[_0x62bc('0x13')]][_0x62bc('0x58')],agents[_0x177fba[_0x62bc('0x13')]]['agentconnectAt']);agents[_0x177fba['uniqueid']]['reason']=agents[_0x177fba[_0x62bc('0x13')]]['transfer']?_0x62bc('0x48'):_0x62bc('0x59');agents[_0x177fba[_0x62bc('0x13')]][_0x62bc('0x9')]=_0x62bc('0x39');utils[_0x62bc('0x1b')](util[_0x62bc('0x1c')](_0x62bc('0x5a'),_0x177fba['uniqueid'],agents[_0x177fba[_0x62bc('0x13')]][_0x62bc('0x1e')],agents[_0x177fba[_0x62bc('0x13')]]['reason'],agents[_0x177fba[_0x62bc('0x13')]]['lastevent']));writeDB(agents[_0x177fba[_0x62bc('0x13')]]);}}catch(_0x3aa295){utils['error'](util[_0x62bc('0x1c')](_0x62bc('0x53'),_0x177fba['uniqueid']),_0x3aa295);}};
\ No newline at end of file
index e9e982b..fa9ed33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a95=['cdr','appdata','split','substring','lastIndexOf','noop','set','gotoif','util','./utils','./transfers.controller','NO\x20ANSWER','FAILED','BUSY','blinds','uniqueid','transfereeuniqueid','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','membername','interface','calleridnum','lastevent','accountcode','getUserByInternal','then','UserId','request','CreateVoiceCallReport','newchannel','debug','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','now','newstate','[%s][calls][newstate]','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','toNumber','ANSWERED','error','hangup','[%s][calls][hangup]','callerid','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','duration','diffTime','attendedtransfer','localtwolinkedid','origtransfereruniqueid','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','varset','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','variable','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','xmd-callerid-preview','xmd-callerid','xmcs-queue','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','lastapplication','Queue','lastdata','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][varset]','newexten','[%s][calls][newexten]','application','toLowerCase'];(function(_0x3c9089,_0x531504){var _0x31ceda=function(_0x1e8945){while(--_0x1e8945){_0x3c9089['push'](_0x3c9089['shift']());}};_0x31ceda(++_0x531504);}(_0x0a95,0x1ac));var _0x50a9=function(_0x1e7b16,_0x4607a1){_0x1e7b16=_0x1e7b16-0x0;var _0x37fadc=_0x0a95[_0x1e7b16];return _0x37fadc;};'use strict';var _=require('lodash');var util=require(_0x50a9('0x0'));var utils=require(_0x50a9('0x1'));var transfers=require(_0x50a9('0x2'));var dispositions=[_0x50a9('0x3'),_0x50a9('0x4'),_0x50a9('0x4'),_0x50a9('0x3'),_0x50a9('0x3'),'NO\x20ANSWER','ANSWERED',_0x50a9('0x5'),_0x50a9('0x4'),_0x50a9('0x4'),'FAILED'];var channels={};function writeDB(_0x5c7ac5){var _0x489740;if(transfers[_0x50a9('0x6')][_0x5c7ac5['uniqueid']]){_0x489740=_0x5c7ac5[_0x50a9('0x7')];_0x5c7ac5['uniqueid']=transfers[_0x50a9('0x6')][_0x5c7ac5[_0x50a9('0x7')]][_0x50a9('0x8')];}utils[_0x50a9('0x9')](util[_0x50a9('0xa')](_0x50a9('0xb'),_0x5c7ac5[_0x50a9('0x7')],_0x5c7ac5[_0x50a9('0xc')],_0x5c7ac5[_0x50a9('0xd')],_0x5c7ac5[_0x50a9('0xe')],_0x5c7ac5[_0x50a9('0xf')],_0x5c7ac5[_0x50a9('0x10')],_0x5c7ac5['connectedlinenum'],_0x5c7ac5[_0x50a9('0x11')]));if(_0x5c7ac5[_0x50a9('0x12')]){utils[_0x50a9('0x13')](_0x5c7ac5['accountcode'])[_0x50a9('0x14')](function(_0x4f3742){if(_0x4f3742){_0x5c7ac5[_0x50a9('0x15')]=_0x4f3742['id'];}utils[_0x50a9('0x16')](_0x50a9('0x17'),_0x5c7ac5);});}else{utils[_0x50a9('0x16')](_0x50a9('0x17'),_0x5c7ac5);}if(channels[_0x5c7ac5[_0x50a9('0x7')]]){delete channels[_0x5c7ac5['uniqueid']];}else if(_0x489740&&channels[_0x489740]){delete transfers[_0x50a9('0x6')][_0x489740];delete channels[_0x489740];}}exports[_0x50a9('0x18')]=function(_0x37e1ab){try{utils[_0x50a9('0x19')](util[_0x50a9('0xa')](_0x50a9('0x1a'),_0x37e1ab[_0x50a9('0x7')]),_0x37e1ab);if(_0x37e1ab[_0x50a9('0x7')]==_0x37e1ab[_0x50a9('0x1b')]&&_0x37e1ab[_0x50a9('0xc')]!=_0x50a9('0x1c')){utils['info'](util[_0x50a9('0xa')](_0x50a9('0x1d'),_0x37e1ab['uniqueid'],_0x37e1ab[_0x50a9('0x1e')],_0x37e1ab[_0x50a9('0x1f')]));channels[_0x37e1ab['uniqueid']]={'uniqueid':_0x37e1ab[_0x50a9('0x7')],'accountcode':_0x37e1ab[_0x50a9('0x12')],'source':_0x37e1ab[_0x50a9('0x10')],'destination':_0x37e1ab[_0x50a9('0x1f')],'destinationcontext':_0x37e1ab[_0x50a9('0x1e')],'channel':_0x37e1ab[_0x50a9('0xc')],'starttime':utils[_0x50a9('0x20')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x50a9('0x3'),'amaflags':'DOCUMENTATION'};}}catch(_0x725b97){utils['error'](util['format'](_0x50a9('0x1a'),_0x37e1ab[_0x50a9('0x7')]),_0x725b97);}};exports[_0x50a9('0x21')]=function(_0x3f2da4){try{utils[_0x50a9('0x19')](util[_0x50a9('0xa')](_0x50a9('0x22'),_0x3f2da4[_0x50a9('0x7')]),_0x3f2da4);if(!_[_0x50a9('0x23')](channels[_0x3f2da4['uniqueid']])&&_0x3f2da4[_0x50a9('0x24')]==0x6){utils['info'](util[_0x50a9('0xa')](_0x50a9('0x25'),_0x3f2da4[_0x50a9('0x7')],_0x3f2da4[_0x50a9('0x1e')],_0x3f2da4[_0x50a9('0xc')]));if(_[_0x50a9('0x23')](channels[_0x3f2da4[_0x50a9('0x7')]][_0x50a9('0x26')])){channels[_0x3f2da4[_0x50a9('0x7')]]['systemanswertime']=utils[_0x50a9('0x20')]();}}else if(!_[_0x50a9('0x23')](channels[_0x3f2da4[_0x50a9('0x1b')]])&&_0x3f2da4['channelstate']==0x6&&_0x3f2da4[_0x50a9('0x1e')]!='transfer'){utils['info'](util[_0x50a9('0xa')](_0x50a9('0x27'),_0x3f2da4[_0x50a9('0x7')],_0x3f2da4[_0x50a9('0x1b')],_0x3f2da4['context'],_0x3f2da4[_0x50a9('0xc')]));channels[_0x3f2da4[_0x50a9('0x1b')]][_0x50a9('0x12')]=_0x3f2da4[_0x50a9('0x12')];channels[_0x3f2da4[_0x50a9('0x1b')]][_0x50a9('0x28')]=_0x3f2da4['channel'];if(_['isNil'](channels[_0x3f2da4[_0x50a9('0x1b')]][_0x50a9('0x29')])){channels[_0x3f2da4[_0x50a9('0x1b')]][_0x50a9('0x29')]=utils[_0x50a9('0x20')]();}channels[_0x3f2da4[_0x50a9('0x1b')]]['disposition']=dispositions[_[_0x50a9('0x2a')](_0x3f2da4['channelstate'])]||_0x50a9('0x2b');}}catch(_0x19d583){utils[_0x50a9('0x2c')](util['format'](_0x50a9('0x22'),_0x3f2da4[_0x50a9('0x7')]),_0x19d583);}};exports[_0x50a9('0x2d')]=function(_0x439c39){try{if(!_[_0x50a9('0x23')](channels[_0x439c39[_0x50a9('0x7')]])){utils[_0x50a9('0x19')](util[_0x50a9('0xa')](_0x50a9('0x2e'),_0x439c39[_0x50a9('0x7')]),_0x439c39);if(_[_0x50a9('0x23')](channels[_0x439c39['uniqueid']][_0x50a9('0x2f')])){channels[_0x439c39[_0x50a9('0x7')]]['callerid']=_0x439c39['calleridname']+'\x20<'+_0x439c39[_0x50a9('0x10')]+'>';}utils['info'](util[_0x50a9('0xa')](_0x50a9('0x30'),_0x439c39[_0x50a9('0x7')],channels[_0x439c39[_0x50a9('0x7')]][_0x50a9('0x2f')],_0x439c39[_0x50a9('0x31')]));channels[_0x439c39[_0x50a9('0x7')]][_0x50a9('0x32')]=utils[_0x50a9('0x20')]();channels[_0x439c39[_0x50a9('0x7')]][_0x50a9('0x33')]=utils[_0x50a9('0x34')](channels[_0x439c39[_0x50a9('0x7')]][_0x50a9('0x32')],channels[_0x439c39[_0x50a9('0x7')]]['starttime']);channels[_0x439c39[_0x50a9('0x7')]]['billableseconds']=channels[_0x439c39[_0x50a9('0x7')]]['answertime']?utils['diffTime'](channels[_0x439c39[_0x50a9('0x7')]][_0x50a9('0x32')],channels[_0x439c39[_0x50a9('0x7')]][_0x50a9('0x29')]):0x0;writeDB(channels[_0x439c39[_0x50a9('0x7')]]);}}catch(_0x28904e){utils['error'](util[_0x50a9('0xa')](_0x50a9('0x2e'),_0x439c39[_0x50a9('0x7')]),_0x28904e);}};exports[_0x50a9('0x35')]=function(_0x4900c2){try{if(!_[_0x50a9('0x23')](channels[_0x4900c2[_0x50a9('0x36')]])){utils['debug'](util[_0x50a9('0xa')]('[%s][calls][attendedtransfer]',_0x4900c2[_0x50a9('0x37')]),_0x4900c2);if(channels[_0x4900c2['localtwolinkedid']][_0x50a9('0xc')]==_0x4900c2['transfereechannel']){utils['info'](util[_0x50a9('0xa')](_0x50a9('0x38'),_0x4900c2[_0x50a9('0x37')],_0x4900c2['localtwolinkedid'],_0x4900c2[_0x50a9('0x39')]));channels[_0x4900c2[_0x50a9('0x36')]][_0x50a9('0x28')]=_0x4900c2[_0x50a9('0x39')];channels[_0x4900c2['localtwolinkedid']][_0x50a9('0x3a')]=_0x50a9('0x3b');}else if(channels[_0x4900c2[_0x50a9('0x36')]][_0x50a9('0xc')]=_0x4900c2['transfertargetchannel']){utils['info'](util['format'](_0x50a9('0x38'),_0x4900c2[_0x50a9('0x37')],_0x4900c2[_0x50a9('0x36')],_0x4900c2[_0x50a9('0x3c')]));channels[_0x4900c2[_0x50a9('0x36')]][_0x50a9('0x28')]=_0x4900c2[_0x50a9('0x3c')];channels[_0x4900c2['localtwolinkedid']]['userfield']='_attended';}}}catch(_0x24c65d){utils[_0x50a9('0x2c')](util[_0x50a9('0xa')]('[%s][calls][attendedtransfer]',_0x4900c2['origtransfereruniqueid']),_0x24c65d);}};exports[_0x50a9('0x3d')]=function(_0x59781b){try{if(!_['isNil'](channels[_0x59781b[_0x50a9('0x7')]])){utils[_0x50a9('0x19')](util[_0x50a9('0xa')](_0x50a9('0x3e'),_0x59781b[_0x50a9('0x7')]),_0x59781b);channels[_0x59781b[_0x50a9('0x7')]][_0x50a9('0x3f')]=utils[_0x50a9('0x20')]();utils['info'](util[_0x50a9('0xa')](_0x50a9('0x40'),_0x59781b[_0x50a9('0x7')],channels[_0x59781b[_0x50a9('0x7')]]['musiconholdstartAt']));}}catch(_0x543c82){utils['error'](util[_0x50a9('0xa')](_0x50a9('0x3e'),_0x59781b[_0x50a9('0x7')]),_0x543c82);}};exports[_0x50a9('0x41')]=function(_0x5dc3e8){try{if(!_[_0x50a9('0x23')](channels[_0x5dc3e8[_0x50a9('0x7')]])){utils[_0x50a9('0x19')](util['format'](_0x50a9('0x42'),_0x5dc3e8[_0x50a9('0x7')]),_0x5dc3e8);if(!_[_0x50a9('0x23')](channels[_0x5dc3e8[_0x50a9('0x7')]]['musiconholdstartAt'])){channels[_0x5dc3e8['uniqueid']][_0x50a9('0x43')]+=utils[_0x50a9('0x34')](utils[_0x50a9('0x20')](),channels[_0x5dc3e8[_0x50a9('0x7')]]['musiconholdstartAt']);utils['info'](util['format']('[%s][calls][musiconholdstop]\x20mohtime:%s',_0x5dc3e8[_0x50a9('0x7')],channels[_0x5dc3e8[_0x50a9('0x7')]]['mohtime']));delete channels[_0x5dc3e8['uniqueid']][_0x50a9('0x3f')];}}}catch(_0x9690df){utils[_0x50a9('0x2c')](util[_0x50a9('0xa')](_0x50a9('0x42'),_0x5dc3e8[_0x50a9('0x7')]),_0x9690df);}};exports[_0x50a9('0x44')]=function(_0x57a163){try{if(!_[_0x50a9('0x23')](channels[_0x57a163[_0x50a9('0x7')]])){utils[_0x50a9('0x19')](util['format']('[%s][calls][varset]',_0x57a163['uniqueid']),_0x57a163);if(!_[_0x50a9('0x23')](_0x57a163['variable'][_0x50a9('0x45')])){utils['info'](util[_0x50a9('0xa')](_0x50a9('0x46'),_0x57a163[_0x50a9('0x7')],_0x57a163[_0x50a9('0x47')]));channels[_0x57a163[_0x50a9('0x7')]][_0x50a9('0x48')]=_0x57a163[_0x50a9('0x47')];}if(!_[_0x50a9('0x23')](_0x57a163[_0x50a9('0x49')][_0x50a9('0x4a')])){utils[_0x50a9('0x9')](util[_0x50a9('0xa')](_0x50a9('0x4b'),_0x57a163[_0x50a9('0x7')],_0x57a163[_0x50a9('0x47')]));channels[_0x57a163[_0x50a9('0x7')]][_0x50a9('0x4c')]=_0x57a163[_0x50a9('0x47')];channels[_0x57a163[_0x50a9('0x7')]][_0x50a9('0x2f')]='\x22'+_0x57a163['value']+'\x22\x20<'+_0x57a163[_0x50a9('0x47')]+'>';}if(!_[_0x50a9('0x23')](_0x57a163['variable'][_0x50a9('0x4d')])||!_[_0x50a9('0x23')](_0x57a163[_0x50a9('0x49')]['xmd-callerid'])){utils['info'](util['format']('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x57a163['uniqueid'],!_[_0x50a9('0x23')](_0x57a163[_0x50a9('0x49')][_0x50a9('0x4d')])?_0x50a9('0x4d'):_0x50a9('0x4e'),_0x57a163['value']));channels[_0x57a163[_0x50a9('0x7')]]['callerid']=_0x57a163['value'];}if(!_['isNil'](_0x57a163['variable']['xmd-queue'])||!_[_0x50a9('0x23')](_0x57a163[_0x50a9('0x49')][_0x50a9('0x4f')])){utils['info'](util['format'](_0x50a9('0x50'),_0x57a163[_0x50a9('0x7')],!_[_0x50a9('0x23')](_0x57a163['variable'][_0x50a9('0x51')])?_0x50a9('0x51'):_0x50a9('0x4f'),_0x57a163[_0x50a9('0x47')]));channels[_0x57a163[_0x50a9('0x7')]][_0x50a9('0x52')]=_0x50a9('0x53');channels[_0x57a163[_0x50a9('0x7')]][_0x50a9('0x54')]=_0x57a163[_0x50a9('0x47')];channels[_0x57a163[_0x50a9('0x7')]]['queue']=!![];}if(!_[_0x50a9('0x23')](_0x57a163[_0x50a9('0x49')][_0x50a9('0x55')])){utils[_0x50a9('0x9')](util[_0x50a9('0xa')](_0x50a9('0x56'),_0x57a163[_0x50a9('0x7')],_0x57a163[_0x50a9('0x47')]));channels[_0x57a163[_0x50a9('0x7')]][_0x50a9('0x57')]=_0x57a163[_0x50a9('0x47')];}if(!_[_0x50a9('0x23')](_0x57a163['variable']['xmd-cdrtype'])){utils[_0x50a9('0x9')](util['format']('[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x57a163['uniqueid'],_0x57a163[_0x50a9('0x47')]));channels[_0x57a163[_0x50a9('0x7')]]['type']=_0x57a163['value'];}if(!_['isNil'](_0x57a163['variable'][_0x50a9('0x58')])){utils[_0x50a9('0x9')](util[_0x50a9('0xa')](_0x50a9('0x59'),_0x57a163[_0x50a9('0x7')],_0x57a163[_0x50a9('0x47')]));channels[_0x57a163[_0x50a9('0x7')]]['routeid']=_0x57a163[_0x50a9('0x47')];}if(!_['isNil'](_0x57a163[_0x50a9('0x49')][_0x50a9('0x5a')])){utils['info'](util['format'](_0x50a9('0x5b'),_0x57a163[_0x50a9('0x7')],_0x57a163[_0x50a9('0x47')]));channels[_0x57a163[_0x50a9('0x7')]]['sipcallid']=_0x57a163[_0x50a9('0x47')];}}}catch(_0x5844dd){utils[_0x50a9('0x2c')](util['format'](_0x50a9('0x5c'),_0x57a163[_0x50a9('0x7')]),_0x5844dd);}};exports[_0x50a9('0x5d')]=function(_0x25aac2){try{if(!_['isNil'](channels[_0x25aac2[_0x50a9('0x7')]])){utils[_0x50a9('0x19')](util['format'](_0x50a9('0x5e'),_0x25aac2[_0x50a9('0x7')]),_0x25aac2);utils[_0x50a9('0x9')](util[_0x50a9('0xa')]('[%s][calls][newexten]\x20application:%s\x20appdata:%s',_0x25aac2[_0x50a9('0x7')],_0x25aac2[_0x50a9('0x5f')],_0x25aac2['appdata']));if(_0x25aac2[_0x50a9('0x5f')][_0x50a9('0x60')]()=='set'&&_['startsWith'](_0x25aac2['appdata'][_0x50a9('0x60')](),_0x50a9('0x61'))){var _0x10263f=_0x25aac2[_0x50a9('0x62')][_0x50a9('0x63')]('=');var _0x271406=_0x10263f[0x0][_0x50a9('0x64')](_0x10263f[0x0][_0x50a9('0x65')]('(')+0x1,_0x10263f[0x0][_0x50a9('0x65')](')'));var _0x48d096=_0x10263f[0x1];channels[_0x25aac2[_0x50a9('0x7')]][_0x271406]=_0x48d096;}if(!_['includes']([_0x50a9('0x2d'),_0x50a9('0x66'),'execif',_0x50a9('0x67'),_0x50a9('0x68')],_0x25aac2[_0x50a9('0x5f')][_0x50a9('0x60')]())){channels[_0x25aac2['uniqueid']][_0x50a9('0x52')]=_0x25aac2[_0x50a9('0x5f')];channels[_0x25aac2['uniqueid']][_0x50a9('0x54')]=_0x25aac2[_0x50a9('0x62')];}}}catch(_0x927657){utils[_0x50a9('0x2c')](util[_0x50a9('0xa')](_0x50a9('0x5e'),_0x25aac2[_0x50a9('0x7')]),_0x927657);}};
\ No newline at end of file
+var _0x469a=['origtransfereruniqueid','localtwolinkedid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','_attended','origtransfererchannel','[%s][calls][attendedtransfer]','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','[%s][calls][varset]','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','variable','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','xmd-callerid-preview','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-callerid','xmd-queue','xmcs-queue','lastapplication','Queue','lastdata','queue','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][newexten]\x20application:%s\x20appdata:%s','appdata','application','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','includes','hangup','noop','execif','gotoif','lodash','util','./transfers.controller','FAILED','NO\x20ANSWER','BUSY','blinds','uniqueid','info','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','membername','interface','calleridnum','connectedlinenum','lastevent','accountcode','getUserByInternal','then','request','CreateVoiceCallReport','newchannel','debug','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','format','context','now','error','newstate','[%s][calls][newstate]','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','toNumber','ANSWERED','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','endtime','billableseconds','diffTime'];(function(_0x1ff818,_0x93b0d8){var _0x31a937=function(_0x26b987){while(--_0x26b987){_0x1ff818['push'](_0x1ff818['shift']());}};_0x31a937(++_0x93b0d8);}(_0x469a,0xa4));var _0xa469=function(_0x1e6e4e,_0x2b1b09){_0x1e6e4e=_0x1e6e4e-0x0;var _0x3d746b=_0x469a[_0x1e6e4e];return _0x3d746b;};'use strict';var _=require(_0xa469('0x0'));var util=require(_0xa469('0x1'));var utils=require('./utils');var transfers=require(_0xa469('0x2'));var dispositions=['NO\x20ANSWER','FAILED',_0xa469('0x3'),_0xa469('0x4'),_0xa469('0x4'),'NO\x20ANSWER','ANSWERED',_0xa469('0x5'),'FAILED','FAILED','FAILED'];var channels={};function writeDB(_0x520d17){var _0x5ce97c;if(transfers[_0xa469('0x6')][_0x520d17['uniqueid']]){_0x5ce97c=_0x520d17['uniqueid'];_0x520d17['uniqueid']=transfers[_0xa469('0x6')][_0x520d17[_0xa469('0x7')]]['transfereeuniqueid'];}utils[_0xa469('0x8')](util['format'](_0xa469('0x9'),_0x520d17[_0xa469('0x7')],_0x520d17[_0xa469('0xa')],_0x520d17['queue'],_0x520d17[_0xa469('0xb')],_0x520d17[_0xa469('0xc')],_0x520d17[_0xa469('0xd')],_0x520d17[_0xa469('0xe')],_0x520d17[_0xa469('0xf')]));if(_0x520d17[_0xa469('0x10')]){utils[_0xa469('0x11')](_0x520d17['accountcode'])[_0xa469('0x12')](function(_0x28cdec){if(_0x28cdec){_0x520d17['UserId']=_0x28cdec['id'];}utils[_0xa469('0x13')](_0xa469('0x14'),_0x520d17);});}else{utils[_0xa469('0x13')](_0xa469('0x14'),_0x520d17);}if(channels[_0x520d17[_0xa469('0x7')]]){delete channels[_0x520d17[_0xa469('0x7')]];}else if(_0x5ce97c&&channels[_0x5ce97c]){delete transfers[_0xa469('0x6')][_0x5ce97c];delete channels[_0x5ce97c];}}exports[_0xa469('0x15')]=function(_0x21f77e){try{utils[_0xa469('0x16')](util['format'](_0xa469('0x17'),_0x21f77e[_0xa469('0x7')]),_0x21f77e);if(_0x21f77e[_0xa469('0x7')]==_0x21f77e[_0xa469('0x18')]&&_0x21f77e[_0xa469('0xa')]!=_0xa469('0x19')){utils['info'](util[_0xa469('0x1a')]('[%s][calls][newchannel]\x20context:%s\x20exten:%s',_0x21f77e[_0xa469('0x7')],_0x21f77e[_0xa469('0x1b')],_0x21f77e['exten']));channels[_0x21f77e[_0xa469('0x7')]]={'uniqueid':_0x21f77e[_0xa469('0x7')],'accountcode':_0x21f77e[_0xa469('0x10')],'source':_0x21f77e[_0xa469('0xd')],'destination':_0x21f77e['exten'],'destinationcontext':_0x21f77e[_0xa469('0x1b')],'channel':_0x21f77e[_0xa469('0xa')],'starttime':utils[_0xa469('0x1c')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0xa469('0x4'),'amaflags':'DOCUMENTATION'};}}catch(_0x225e3f){utils[_0xa469('0x1d')](util[_0xa469('0x1a')]('[%s][calls][newchannel]',_0x21f77e[_0xa469('0x7')]),_0x225e3f);}};exports[_0xa469('0x1e')]=function(_0x14fb76){try{utils['debug'](util['format'](_0xa469('0x1f'),_0x14fb76['uniqueid']),_0x14fb76);if(!_[_0xa469('0x20')](channels[_0x14fb76['uniqueid']])&&_0x14fb76[_0xa469('0x21')]==0x6){utils[_0xa469('0x8')](util['format'](_0xa469('0x22'),_0x14fb76[_0xa469('0x7')],_0x14fb76[_0xa469('0x1b')],_0x14fb76[_0xa469('0xa')]));if(_['isNil'](channels[_0x14fb76['uniqueid']][_0xa469('0x23')])){channels[_0x14fb76[_0xa469('0x7')]][_0xa469('0x23')]=utils[_0xa469('0x1c')]();}}else if(!_[_0xa469('0x20')](channels[_0x14fb76[_0xa469('0x18')]])&&_0x14fb76[_0xa469('0x21')]==0x6&&_0x14fb76['context']!=_0xa469('0x24')){utils[_0xa469('0x8')](util[_0xa469('0x1a')](_0xa469('0x25'),_0x14fb76['uniqueid'],_0x14fb76[_0xa469('0x18')],_0x14fb76[_0xa469('0x1b')],_0x14fb76['channel']));channels[_0x14fb76[_0xa469('0x18')]][_0xa469('0x10')]=_0x14fb76[_0xa469('0x10')];channels[_0x14fb76[_0xa469('0x18')]][_0xa469('0x26')]=_0x14fb76[_0xa469('0xa')];if(_['isNil'](channels[_0x14fb76[_0xa469('0x18')]][_0xa469('0x27')])){channels[_0x14fb76[_0xa469('0x18')]]['answertime']=utils[_0xa469('0x1c')]();}channels[_0x14fb76[_0xa469('0x18')]][_0xa469('0x28')]=dispositions[_[_0xa469('0x29')](_0x14fb76[_0xa469('0x21')])]||_0xa469('0x2a');}}catch(_0x56a3db){utils[_0xa469('0x1d')](util[_0xa469('0x1a')](_0xa469('0x1f'),_0x14fb76[_0xa469('0x7')]),_0x56a3db);}};exports['hangup']=function(_0x39e885){try{if(!_[_0xa469('0x20')](channels[_0x39e885['uniqueid']])){utils['debug'](util['format'](_0xa469('0x2b'),_0x39e885[_0xa469('0x7')]),_0x39e885);if(_['isNil'](channels[_0x39e885[_0xa469('0x7')]][_0xa469('0x2c')])){channels[_0x39e885['uniqueid']][_0xa469('0x2c')]=_0x39e885[_0xa469('0x2d')]+'\x20<'+_0x39e885['calleridnum']+'>';}utils[_0xa469('0x8')](util[_0xa469('0x1a')](_0xa469('0x2e'),_0x39e885[_0xa469('0x7')],channels[_0x39e885[_0xa469('0x7')]][_0xa469('0x2c')],_0x39e885['cause-txt']));channels[_0x39e885[_0xa469('0x7')]]['endtime']=utils['now']();channels[_0x39e885[_0xa469('0x7')]]['duration']=utils['diffTime'](channels[_0x39e885['uniqueid']][_0xa469('0x2f')],channels[_0x39e885['uniqueid']]['starttime']);channels[_0x39e885[_0xa469('0x7')]][_0xa469('0x30')]=channels[_0x39e885['uniqueid']][_0xa469('0x27')]?utils[_0xa469('0x31')](channels[_0x39e885[_0xa469('0x7')]]['endtime'],channels[_0x39e885['uniqueid']]['answertime']):0x0;writeDB(channels[_0x39e885[_0xa469('0x7')]]);}}catch(_0x16d69a){utils['error'](util[_0xa469('0x1a')]('[%s][calls][hangup]',_0x39e885[_0xa469('0x7')]),_0x16d69a);}};exports['attendedtransfer']=function(_0x133d40){try{if(!_['isNil'](channels[_0x133d40['localtwolinkedid']])){utils[_0xa469('0x16')](util[_0xa469('0x1a')]('[%s][calls][attendedtransfer]',_0x133d40[_0xa469('0x32')]),_0x133d40);if(channels[_0x133d40[_0xa469('0x33')]]['channel']==_0x133d40[_0xa469('0x34')]){utils[_0xa469('0x8')](util[_0xa469('0x1a')](_0xa469('0x35'),_0x133d40[_0xa469('0x32')],_0x133d40[_0xa469('0x33')],_0x133d40[_0xa469('0x36')]));channels[_0x133d40['localtwolinkedid']][_0xa469('0x26')]=_0x133d40['secondtransfererchannel'];channels[_0x133d40[_0xa469('0x33')]]['userfield']=_0xa469('0x37');}else if(channels[_0x133d40[_0xa469('0x33')]][_0xa469('0xa')]=_0x133d40['transfertargetchannel']){utils['info'](util[_0xa469('0x1a')](_0xa469('0x35'),_0x133d40[_0xa469('0x32')],_0x133d40[_0xa469('0x33')],_0x133d40[_0xa469('0x38')]));channels[_0x133d40['localtwolinkedid']][_0xa469('0x26')]=_0x133d40[_0xa469('0x38')];channels[_0x133d40['localtwolinkedid']]['userfield']=_0xa469('0x37');}}}catch(_0x52630b){utils['error'](util[_0xa469('0x1a')](_0xa469('0x39'),_0x133d40[_0xa469('0x32')]),_0x52630b);}};exports[_0xa469('0x3a')]=function(_0xc49cde){try{if(!_['isNil'](channels[_0xc49cde[_0xa469('0x7')]])){utils['debug'](util[_0xa469('0x1a')](_0xa469('0x3b'),_0xc49cde[_0xa469('0x7')]),_0xc49cde);channels[_0xc49cde[_0xa469('0x7')]][_0xa469('0x3c')]=utils[_0xa469('0x1c')]();utils[_0xa469('0x8')](util['format'](_0xa469('0x3d'),_0xc49cde['uniqueid'],channels[_0xc49cde[_0xa469('0x7')]][_0xa469('0x3c')]));}}catch(_0x98cbc4){utils['error'](util['format'](_0xa469('0x3b'),_0xc49cde[_0xa469('0x7')]),_0x98cbc4);}};exports[_0xa469('0x3e')]=function(_0x8f7211){try{if(!_['isNil'](channels[_0x8f7211[_0xa469('0x7')]])){utils[_0xa469('0x16')](util['format'](_0xa469('0x3f'),_0x8f7211[_0xa469('0x7')]),_0x8f7211);if(!_[_0xa469('0x20')](channels[_0x8f7211[_0xa469('0x7')]][_0xa469('0x3c')])){channels[_0x8f7211[_0xa469('0x7')]][_0xa469('0x40')]+=utils[_0xa469('0x31')](utils[_0xa469('0x1c')](),channels[_0x8f7211[_0xa469('0x7')]][_0xa469('0x3c')]);utils[_0xa469('0x8')](util[_0xa469('0x1a')](_0xa469('0x41'),_0x8f7211[_0xa469('0x7')],channels[_0x8f7211['uniqueid']][_0xa469('0x40')]));delete channels[_0x8f7211['uniqueid']][_0xa469('0x3c')];}}}catch(_0x1ba994){utils[_0xa469('0x1d')](util[_0xa469('0x1a')](_0xa469('0x3f'),_0x8f7211[_0xa469('0x7')]),_0x1ba994);}};exports[_0xa469('0x42')]=function(_0xd0fb0c){try{if(!_[_0xa469('0x20')](channels[_0xd0fb0c['uniqueid']])){utils[_0xa469('0x16')](util[_0xa469('0x1a')](_0xa469('0x43'),_0xd0fb0c['uniqueid']),_0xd0fb0c);if(!_[_0xa469('0x20')](_0xd0fb0c['variable'][_0xa469('0x44')])){utils[_0xa469('0x8')](util['format'](_0xa469('0x45'),_0xd0fb0c[_0xa469('0x7')],_0xd0fb0c[_0xa469('0x46')]));channels[_0xd0fb0c[_0xa469('0x7')]]['source']=_0xd0fb0c[_0xa469('0x46')];}if(!_['isNil'](_0xd0fb0c[_0xa469('0x47')]['xmd-phone'])){utils['info'](util['format'](_0xa469('0x48'),_0xd0fb0c[_0xa469('0x7')],_0xd0fb0c[_0xa469('0x46')]));channels[_0xd0fb0c[_0xa469('0x7')]][_0xa469('0x49')]=_0xd0fb0c[_0xa469('0x46')];channels[_0xd0fb0c[_0xa469('0x7')]][_0xa469('0x2c')]='\x22'+_0xd0fb0c[_0xa469('0x46')]+'\x22\x20<'+_0xd0fb0c[_0xa469('0x46')]+'>';}if(!_['isNil'](_0xd0fb0c[_0xa469('0x47')][_0xa469('0x4a')])||!_[_0xa469('0x20')](_0xd0fb0c['variable']['xmd-callerid'])){utils[_0xa469('0x8')](util[_0xa469('0x1a')](_0xa469('0x4b'),_0xd0fb0c['uniqueid'],!_[_0xa469('0x20')](_0xd0fb0c['variable'][_0xa469('0x4a')])?'xmd-callerid-preview':_0xa469('0x4c'),_0xd0fb0c[_0xa469('0x46')]));channels[_0xd0fb0c[_0xa469('0x7')]][_0xa469('0x2c')]=_0xd0fb0c[_0xa469('0x46')];}if(!_['isNil'](_0xd0fb0c['variable'][_0xa469('0x4d')])||!_[_0xa469('0x20')](_0xd0fb0c['variable'][_0xa469('0x4e')])){utils[_0xa469('0x8')](util[_0xa469('0x1a')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0xd0fb0c[_0xa469('0x7')],!_['isNil'](_0xd0fb0c[_0xa469('0x47')][_0xa469('0x4d')])?'xmd-queue':_0xa469('0x4e'),_0xd0fb0c[_0xa469('0x46')]));channels[_0xd0fb0c[_0xa469('0x7')]][_0xa469('0x4f')]=_0xa469('0x50');channels[_0xd0fb0c['uniqueid']][_0xa469('0x51')]=_0xd0fb0c[_0xa469('0x46')];channels[_0xd0fb0c[_0xa469('0x7')]][_0xa469('0x52')]=!![];}if(!_[_0xa469('0x20')](_0xd0fb0c[_0xa469('0x47')][_0xa469('0x53')])){utils['info'](util[_0xa469('0x1a')](_0xa469('0x54'),_0xd0fb0c[_0xa469('0x7')],_0xd0fb0c[_0xa469('0x46')]));channels[_0xd0fb0c[_0xa469('0x7')]][_0xa469('0x55')]=_0xd0fb0c[_0xa469('0x46')];}if(!_[_0xa469('0x20')](_0xd0fb0c[_0xa469('0x47')][_0xa469('0x56')])){utils[_0xa469('0x8')](util[_0xa469('0x1a')](_0xa469('0x57'),_0xd0fb0c[_0xa469('0x7')],_0xd0fb0c[_0xa469('0x46')]));channels[_0xd0fb0c['uniqueid']][_0xa469('0x58')]=_0xd0fb0c[_0xa469('0x46')];}if(!_[_0xa469('0x20')](_0xd0fb0c[_0xa469('0x47')]['outboundrouteid'])){utils[_0xa469('0x8')](util[_0xa469('0x1a')]('[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s',_0xd0fb0c[_0xa469('0x7')],_0xd0fb0c[_0xa469('0x46')]));channels[_0xd0fb0c[_0xa469('0x7')]][_0xa469('0x59')]=_0xd0fb0c[_0xa469('0x46')];}if(!_['isNil'](_0xd0fb0c[_0xa469('0x47')][_0xa469('0x5a')])){utils[_0xa469('0x8')](util[_0xa469('0x1a')](_0xa469('0x5b'),_0xd0fb0c[_0xa469('0x7')],_0xd0fb0c[_0xa469('0x46')]));channels[_0xd0fb0c['uniqueid']]['sipcallid']=_0xd0fb0c[_0xa469('0x46')];}}}catch(_0x494342){utils[_0xa469('0x1d')](util['format']('[%s][calls][varset]',_0xd0fb0c[_0xa469('0x7')]),_0x494342);}};exports['newexten']=function(_0x5be0e4){try{if(!_[_0xa469('0x20')](channels[_0x5be0e4[_0xa469('0x7')]])){utils[_0xa469('0x16')](util['format']('[%s][calls][newexten]',_0x5be0e4[_0xa469('0x7')]),_0x5be0e4);utils[_0xa469('0x8')](util[_0xa469('0x1a')](_0xa469('0x5c'),_0x5be0e4[_0xa469('0x7')],_0x5be0e4['application'],_0x5be0e4[_0xa469('0x5d')]));if(_0x5be0e4[_0xa469('0x5e')][_0xa469('0x5f')]()==_0xa469('0x60')&&_[_0xa469('0x61')](_0x5be0e4[_0xa469('0x5d')][_0xa469('0x5f')](),_0xa469('0x62'))){var _0x1d28e2=_0x5be0e4[_0xa469('0x5d')][_0xa469('0x63')]('=');var _0x3b3143=_0x1d28e2[0x0][_0xa469('0x64')](_0x1d28e2[0x0][_0xa469('0x65')]('(')+0x1,_0x1d28e2[0x0][_0xa469('0x65')](')'));var _0x599e97=_0x1d28e2[0x1];channels[_0x5be0e4[_0xa469('0x7')]][_0x3b3143]=_0x599e97;}if(!_[_0xa469('0x66')]([_0xa469('0x67'),_0xa469('0x68'),_0xa469('0x69'),_0xa469('0x60'),_0xa469('0x6a')],_0x5be0e4['application'][_0xa469('0x5f')]())){channels[_0x5be0e4['uniqueid']][_0xa469('0x4f')]=_0x5be0e4[_0xa469('0x5e')];channels[_0x5be0e4[_0xa469('0x7')]][_0xa469('0x51')]=_0x5be0e4[_0xa469('0x5d')];}}}catch(_0x10fee7){utils[_0xa469('0x1d')](util[_0xa469('0x1a')]('[%s][calls][newexten]',_0x5be0e4['uniqueid']),_0x10fee7);}};
\ No newline at end of file
index d815a2f..69dedc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3aa=['connect','info','[core]\x20connected','fullybooted','[core]\x20fullybooted','error','[core]\x20error','close','[core]\x20close','managerevent','./utils'];(function(_0x4f2a1b,_0x2a8e45){var _0xa32c5a=function(_0x27283f){while(--_0x27283f){_0x4f2a1b['push'](_0x4f2a1b['shift']());}};_0xa32c5a(++_0x2a8e45);}(_0xe3aa,0x1d8));var _0xae3a=function(_0xfce33b,_0x127935){_0xfce33b=_0xfce33b-0x0;var _0x51d9e2=_0xe3aa[_0xfce33b];return _0x51d9e2;};'use strict';var utils=require(_0xae3a('0x0'));exports[_0xae3a('0x1')]=function(){utils[_0xae3a('0x2')](_0xae3a('0x3'));};exports['shutdown']=function(){utils[_0xae3a('0x2')]('[core]\x20shutdown');};exports[_0xae3a('0x4')]=function(){utils[_0xae3a('0x2')](_0xae3a('0x5'));};exports[_0xae3a('0x6')]=function(_0x1f94d6){utils[_0xae3a('0x6')](_0xae3a('0x7'),_0x1f94d6);};exports[_0xae3a('0x8')]=function(){utils['info'](_0xae3a('0x9'));};exports[_0xae3a('0xa')]=function(_0x33a6c4){};
\ No newline at end of file
+var _0xd21f=['connect','info','[core]\x20connected','shutdown','[core]\x20shutdown','fullybooted','[core]\x20fullybooted','error','close','[core]\x20close','managerevent'];(function(_0x2fb7e4,_0x2132d7){var _0x171c63=function(_0x18f169){while(--_0x18f169){_0x2fb7e4['push'](_0x2fb7e4['shift']());}};_0x171c63(++_0x2132d7);}(_0xd21f,0x8f));var _0xfd21=function(_0x574d9b,_0x2063da){_0x574d9b=_0x574d9b-0x0;var _0x31d2a5=_0xd21f[_0x574d9b];return _0x31d2a5;};'use strict';var utils=require('./utils');exports[_0xfd21('0x0')]=function(){utils[_0xfd21('0x1')](_0xfd21('0x2'));};exports[_0xfd21('0x3')]=function(){utils['info'](_0xfd21('0x4'));};exports[_0xfd21('0x5')]=function(){utils['info'](_0xfd21('0x6'));};exports[_0xfd21('0x7')]=function(_0x49e97b){utils[_0xfd21('0x7')]('[core]\x20error',_0x49e97b);};exports[_0xfd21('0x8')]=function(){utils[_0xfd21('0x1')](_0xfd21('0x9'));};exports[_0xfd21('0xa')]=function(_0x230662){};
\ No newline at end of file
index b294de2..04c9fb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77fd=['starttime','now','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialend','[%s][dials][dialend]','assign','connect','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','cause-txt','complete','duration','endtime','holdtime','diffTime','answertime','[%s][dials][hangup]','lodash','./utils','info','format','uniqueid','channel','dialstring','dialstatus','request','CreateVoiceDialReport','newexten','debug','[%s][dials][newexten]','[%s][dials][newexten]\x20application:%s\x20appdata:%s','set','startsWith','appdata','toLowerCase','cdr(routeid)','split','error','[%s][dials][varset]','isNil','variable','outboundrouteid','value','dialbegin','[%s][dials][dialbegin]'];(function(_0x59dd10,_0x125d21){var _0x2d3777=function(_0x4c346e){while(--_0x4c346e){_0x59dd10['push'](_0x59dd10['shift']());}};_0x2d3777(++_0x125d21);}(_0x77fd,0x11f));var _0xd77f=function(_0x47f153,_0x22d502){_0x47f153=_0x47f153-0x0;var _0x1bfc1c=_0x77fd[_0x47f153];return _0x1bfc1c;};'use strict';var _=require(_0xd77f('0x0'));var util=require('util');var utils=require(_0xd77f('0x1'));var dials={};function writeDB(_0x57a11c){utils[_0xd77f('0x2')](util[_0xd77f('0x3')]('[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s',_0x57a11c[_0xd77f('0x4')],_0x57a11c[_0xd77f('0x5')],_0x57a11c[_0xd77f('0x6')],_0x57a11c['calleridnum'],_0x57a11c['connectedlinenum'],_0x57a11c[_0xd77f('0x7')]));utils[_0xd77f('0x8')](_0xd77f('0x9'),_0x57a11c);delete dials[_0x57a11c[_0xd77f('0x4')]];}exports[_0xd77f('0xa')]=function(_0x4930ae){try{utils[_0xd77f('0xb')](util[_0xd77f('0x3')](_0xd77f('0xc'),_0x4930ae[_0xd77f('0x4')]),_0x4930ae);utils['info'](util[_0xd77f('0x3')](_0xd77f('0xd'),_0x4930ae['uniqueid'],_0x4930ae['application'],_0x4930ae['appdata']));if(_0x4930ae['application']['toLowerCase']()==_0xd77f('0xe')&&_[_0xd77f('0xf')](_0x4930ae[_0xd77f('0x10')][_0xd77f('0x11')](),_0xd77f('0x12'))){var _0x51d701=_0x4930ae[_0xd77f('0x10')][_0xd77f('0x13')]('=');dials[_0x4930ae[_0xd77f('0x4')]]={'routeId':_0x51d701[0x1]};}}catch(_0x3701f3){utils[_0xd77f('0x14')](util['format']('[%s][dials][newexten]',_0x4930ae[_0xd77f('0x4')]),_0x3701f3);}};exports['varset']=function(_0x180ef8){try{utils[_0xd77f('0xb')](util[_0xd77f('0x3')](_0xd77f('0x15'),_0x180ef8['uniqueid']),_0x180ef8);if(!_[_0xd77f('0x16')](_0x180ef8[_0xd77f('0x17')][_0xd77f('0x18')])){utils['info'](util[_0xd77f('0x3')]('[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s',_0x180ef8[_0xd77f('0x4')],_0x180ef8['value']));dials[_0x180ef8[_0xd77f('0x4')]]={'routeId':_0x180ef8[_0xd77f('0x19')]};}}catch(_0x219b69){utils[_0xd77f('0x14')](util[_0xd77f('0x3')](_0xd77f('0x15'),_0x180ef8[_0xd77f('0x4')]),_0x219b69);}};exports[_0xd77f('0x1a')]=function(_0x1e2a77){try{if(!_[_0xd77f('0x16')](dials[_0x1e2a77[_0xd77f('0x4')]])){utils[_0xd77f('0xb')](util[_0xd77f('0x3')](_0xd77f('0x1b'),_0x1e2a77[_0xd77f('0x4')]),_0x1e2a77);dials[_0x1e2a77[_0xd77f('0x4')]]=_['assign'](dials[_0x1e2a77[_0xd77f('0x4')]],_0x1e2a77);dials[_0x1e2a77['uniqueid']][_0xd77f('0x1c')]=utils[_0xd77f('0x1d')]();dials[_0x1e2a77[_0xd77f('0x4')]]['lastevent']='called';utils[_0xd77f('0x2')](util[_0xd77f('0x3')](_0xd77f('0x1e'),_0x1e2a77[_0xd77f('0x4')],dials[_0x1e2a77[_0xd77f('0x4')]][_0xd77f('0x1c')]));}}catch(_0x3fa619){utils[_0xd77f('0x14')](util[_0xd77f('0x3')](_0xd77f('0x1b'),_0x1e2a77[_0xd77f('0x4')]),_0x3fa619);}};exports[_0xd77f('0x1f')]=function(_0x455554){try{if(!_[_0xd77f('0x16')](dials[_0x455554['uniqueid']])){utils[_0xd77f('0xb')](util[_0xd77f('0x3')](_0xd77f('0x20'),_0x455554[_0xd77f('0x4')]),_0x455554);dials[_0x455554[_0xd77f('0x4')]][_0xd77f('0x7')]=_0x455554['dialstatus'];if(_0x455554['dialstatus']=='ANSWER'){dials[_0x455554[_0xd77f('0x4')]]=_[_0xd77f('0x21')](dials[_0x455554[_0xd77f('0x4')]],_0x455554);dials[_0x455554['uniqueid']]['answertime']=utils[_0xd77f('0x1d')]();dials[_0x455554['uniqueid']]['lastevent']=_0xd77f('0x22');utils[_0xd77f('0x2')](util[_0xd77f('0x3')]('[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect',_0x455554[_0xd77f('0x4')],_0x455554['dialstatus'],dials[_0x455554['uniqueid']]['answertime']));}else{utils[_0xd77f('0x2')](util[_0xd77f('0x3')]('[%s][dials][dialend]\x20dialstatus:%s',_0x455554[_0xd77f('0x4')],_0x455554[_0xd77f('0x7')]));}}}catch(_0x38a7bc){utils[_0xd77f('0x14')](util[_0xd77f('0x3')](_0xd77f('0x20'),_0x455554[_0xd77f('0x4')]),_0x38a7bc);}};exports['hangup']=function(_0x18608a){try{if(!_[_0xd77f('0x16')](dials[_0x18608a[_0xd77f('0x4')]])){utils['debug'](util['format']('[%s][dials][hangup]',_0x18608a[_0xd77f('0x4')]),_0x18608a);utils[_0xd77f('0x2')](util[_0xd77f('0x3')](_0xd77f('0x23'),_0x18608a[_0xd77f('0x4')],_0x18608a['calleridnum'],_0x18608a[_0xd77f('0x24')],_0x18608a[_0xd77f('0x25')]));dials[_0x18608a[_0xd77f('0x4')]]=_['assign'](dials[_0x18608a[_0xd77f('0x4')]],{'endtime':utils[_0xd77f('0x1d')](),'lastevent':_0xd77f('0x26')});dials[_0x18608a['uniqueid']][_0xd77f('0x27')]=utils['diffTime'](dials[_0x18608a[_0xd77f('0x4')]][_0xd77f('0x28')],dials[_0x18608a[_0xd77f('0x4')]][_0xd77f('0x1c')]);dials[_0x18608a['uniqueid']][_0xd77f('0x29')]=utils[_0xd77f('0x2a')](dials[_0x18608a[_0xd77f('0x4')]][_0xd77f('0x2b')]||dials[_0x18608a[_0xd77f('0x4')]][_0xd77f('0x28')],dials[_0x18608a[_0xd77f('0x4')]][_0xd77f('0x1c')]);dials[_0x18608a[_0xd77f('0x4')]]['billableseconds']=dials[_0x18608a['uniqueid']]['answertime']?utils[_0xd77f('0x2a')](dials[_0x18608a['uniqueid']][_0xd77f('0x28')],dials[_0x18608a['uniqueid']][_0xd77f('0x2b')]):0x0;writeDB(dials[_0x18608a[_0xd77f('0x4')]]);}}catch(_0x349f58){utils[_0xd77f('0x14')](util[_0xd77f('0x3')](_0xd77f('0x2c'),_0x18608a[_0xd77f('0x4')]),_0x349f58);}};
\ No newline at end of file
+var _0x3f60=['connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','[%s][dials][dialend]','calleridname','complete','duration','diffTime','endtime','[%s][dials][hangup]','lodash','info','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring','calleridnum','connectedlinenum','CreateVoiceDialReport','newexten','debug','application','appdata','toLowerCase','set','startsWith','cdr(routeid)','varset','[%s][dials][varset]','isNil','variable','outboundrouteid','value','error','dialbegin','[%s][dials][dialbegin]','starttime','now','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialstatus','assign','answertime'];(function(_0x336193,_0x555044){var _0x8791c8=function(_0x53c31d){while(--_0x53c31d){_0x336193['push'](_0x336193['shift']());}};_0x8791c8(++_0x555044);}(_0x3f60,0xeb));var _0x03f6=function(_0x369cf2,_0x47e28c){_0x369cf2=_0x369cf2-0x0;var _0x5c7d3e=_0x3f60[_0x369cf2];return _0x5c7d3e;};'use strict';var _=require(_0x03f6('0x0'));var util=require('util');var utils=require('./utils');var dials={};function writeDB(_0x315e22){utils[_0x03f6('0x1')](util[_0x03f6('0x2')](_0x03f6('0x3'),_0x315e22[_0x03f6('0x4')],_0x315e22[_0x03f6('0x5')],_0x315e22[_0x03f6('0x6')],_0x315e22[_0x03f6('0x7')],_0x315e22[_0x03f6('0x8')],_0x315e22['dialstatus']));utils['request'](_0x03f6('0x9'),_0x315e22);delete dials[_0x315e22[_0x03f6('0x4')]];}exports[_0x03f6('0xa')]=function(_0x663c9c){try{utils[_0x03f6('0xb')](util['format']('[%s][dials][newexten]',_0x663c9c[_0x03f6('0x4')]),_0x663c9c);utils['info'](util['format']('[%s][dials][newexten]\x20application:%s\x20appdata:%s',_0x663c9c[_0x03f6('0x4')],_0x663c9c[_0x03f6('0xc')],_0x663c9c[_0x03f6('0xd')]));if(_0x663c9c['application'][_0x03f6('0xe')]()==_0x03f6('0xf')&&_[_0x03f6('0x10')](_0x663c9c[_0x03f6('0xd')]['toLowerCase'](),_0x03f6('0x11'))){var _0x29ac5a=_0x663c9c['appdata']['split']('=');dials[_0x663c9c[_0x03f6('0x4')]]={'routeId':_0x29ac5a[0x1]};}}catch(_0x3f4ed5){utils['error'](util[_0x03f6('0x2')]('[%s][dials][newexten]',_0x663c9c['uniqueid']),_0x3f4ed5);}};exports[_0x03f6('0x12')]=function(_0x300e4c){try{utils[_0x03f6('0xb')](util[_0x03f6('0x2')](_0x03f6('0x13'),_0x300e4c[_0x03f6('0x4')]),_0x300e4c);if(!_[_0x03f6('0x14')](_0x300e4c[_0x03f6('0x15')][_0x03f6('0x16')])){utils[_0x03f6('0x1')](util['format']('[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s',_0x300e4c['uniqueid'],_0x300e4c[_0x03f6('0x17')]));dials[_0x300e4c['uniqueid']]={'routeId':_0x300e4c[_0x03f6('0x17')]};}}catch(_0x5d6a9f){utils[_0x03f6('0x18')](util[_0x03f6('0x2')]('[%s][dials][varset]',_0x300e4c[_0x03f6('0x4')]),_0x5d6a9f);}};exports[_0x03f6('0x19')]=function(_0x212cdd){try{if(!_[_0x03f6('0x14')](dials[_0x212cdd[_0x03f6('0x4')]])){utils[_0x03f6('0xb')](util['format'](_0x03f6('0x1a'),_0x212cdd[_0x03f6('0x4')]),_0x212cdd);dials[_0x212cdd[_0x03f6('0x4')]]=_['assign'](dials[_0x212cdd[_0x03f6('0x4')]],_0x212cdd);dials[_0x212cdd[_0x03f6('0x4')]][_0x03f6('0x1b')]=utils[_0x03f6('0x1c')]();dials[_0x212cdd['uniqueid']][_0x03f6('0x1d')]=_0x03f6('0x1e');utils['info'](util[_0x03f6('0x2')](_0x03f6('0x1f'),_0x212cdd['uniqueid'],dials[_0x212cdd[_0x03f6('0x4')]]['starttime']));}}catch(_0x439ca0){utils[_0x03f6('0x18')](util[_0x03f6('0x2')](_0x03f6('0x1a'),_0x212cdd['uniqueid']),_0x439ca0);}};exports['dialend']=function(_0x418561){try{if(!_[_0x03f6('0x14')](dials[_0x418561[_0x03f6('0x4')]])){utils[_0x03f6('0xb')](util[_0x03f6('0x2')]('[%s][dials][dialend]',_0x418561[_0x03f6('0x4')]),_0x418561);dials[_0x418561[_0x03f6('0x4')]][_0x03f6('0x20')]=_0x418561[_0x03f6('0x20')];if(_0x418561[_0x03f6('0x20')]=='ANSWER'){dials[_0x418561[_0x03f6('0x4')]]=_[_0x03f6('0x21')](dials[_0x418561[_0x03f6('0x4')]],_0x418561);dials[_0x418561['uniqueid']][_0x03f6('0x22')]=utils[_0x03f6('0x1c')]();dials[_0x418561[_0x03f6('0x4')]][_0x03f6('0x1d')]=_0x03f6('0x23');utils[_0x03f6('0x1')](util['format'](_0x03f6('0x24'),_0x418561[_0x03f6('0x4')],_0x418561[_0x03f6('0x20')],dials[_0x418561[_0x03f6('0x4')]]['answertime']));}else{utils[_0x03f6('0x1')](util[_0x03f6('0x2')](_0x03f6('0x25'),_0x418561['uniqueid'],_0x418561['dialstatus']));}}}catch(_0x4e2154){utils[_0x03f6('0x18')](util[_0x03f6('0x2')](_0x03f6('0x26'),_0x418561[_0x03f6('0x4')]),_0x4e2154);}};exports['hangup']=function(_0x48ec49){try{if(!_[_0x03f6('0x14')](dials[_0x48ec49[_0x03f6('0x4')]])){utils[_0x03f6('0xb')](util[_0x03f6('0x2')]('[%s][dials][hangup]',_0x48ec49[_0x03f6('0x4')]),_0x48ec49);utils[_0x03f6('0x1')](util[_0x03f6('0x2')]('[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s',_0x48ec49[_0x03f6('0x4')],_0x48ec49[_0x03f6('0x7')],_0x48ec49[_0x03f6('0x27')],_0x48ec49['cause-txt']));dials[_0x48ec49[_0x03f6('0x4')]]=_[_0x03f6('0x21')](dials[_0x48ec49[_0x03f6('0x4')]],{'endtime':utils[_0x03f6('0x1c')](),'lastevent':_0x03f6('0x28')});dials[_0x48ec49[_0x03f6('0x4')]][_0x03f6('0x29')]=utils[_0x03f6('0x2a')](dials[_0x48ec49[_0x03f6('0x4')]][_0x03f6('0x2b')],dials[_0x48ec49['uniqueid']]['starttime']);dials[_0x48ec49[_0x03f6('0x4')]]['holdtime']=utils[_0x03f6('0x2a')](dials[_0x48ec49[_0x03f6('0x4')]][_0x03f6('0x22')]||dials[_0x48ec49[_0x03f6('0x4')]][_0x03f6('0x2b')],dials[_0x48ec49[_0x03f6('0x4')]][_0x03f6('0x1b')]);dials[_0x48ec49[_0x03f6('0x4')]]['billableseconds']=dials[_0x48ec49[_0x03f6('0x4')]][_0x03f6('0x22')]?utils[_0x03f6('0x2a')](dials[_0x48ec49[_0x03f6('0x4')]]['endtime'],dials[_0x48ec49[_0x03f6('0x4')]]['answertime']):0x0;writeDB(dials[_0x48ec49[_0x03f6('0x4')]]);}}catch(_0x312a4b){utils[_0x03f6('0x18')](util['format'](_0x03f6('0x2c'),_0x48ec49[_0x03f6('0x4')]),_0x312a4b);}};
\ No newline at end of file
index 83a4510..def0237 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c18=['./queues.controller','./dials.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','format','[%s][index][devicestatechange]','agentcalled','debug','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','[%s][index][agentconnect]','agentconnect','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','[%s][index][musiconholdstop]','musiconholdstop','newstate','[%s][index][newstate]','[%s][index][hangup]','hangup','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','origtransfereruniqueid','[%s][index][attendedtransfer]','[%s][index][varset]','varset','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','util','asterisk','username','password','keepConnected','xdr','disabled','info','XDR\x20DISABLED','./agents.controller','./calls.controller'];(function(_0xacabb,_0x1fbcd9){var _0x2b4a14=function(_0x3a2353){while(--_0x3a2353){_0xacabb['push'](_0xacabb['shift']());}};_0x2b4a14(++_0x1fbcd9);}(_0x7c18,0x7a));var _0x87c1=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x7c18[_0x501510];return _0x1e6ee5;};var AsteriskManager=require(_0x87c1('0x0'));var config=require(_0x87c1('0x1'));var utils=require(_0x87c1('0x2'));var util=require(_0x87c1('0x3'));var ami=new AsteriskManager(config[_0x87c1('0x4')]['port'],config[_0x87c1('0x4')]['ip'],config[_0x87c1('0x4')][_0x87c1('0x5')],config['asterisk'][_0x87c1('0x6')],!![]);ami[_0x87c1('0x7')]();if(config[_0x87c1('0x8')]&&config[_0x87c1('0x8')][_0x87c1('0x9')]){utils[_0x87c1('0xa')](_0x87c1('0xb'));}else{var agents=require(_0x87c1('0xc'));var calls=require(_0x87c1('0xd'));var queues=require(_0x87c1('0xe'));var recordings=require('./recordings.controller');var members=require('./members.controller');var dials=require(_0x87c1('0xf'));var transfers=require(_0x87c1('0x10'));var core=require(_0x87c1('0x11'));ami['on'](_0x87c1('0x12'),core['connect']);ami['on'](_0x87c1('0x13'),core[_0x87c1('0x13')]);ami['on']('fullybooted',core[_0x87c1('0x14')]);ami['on']('error',core[_0x87c1('0x15')]);ami['on'](_0x87c1('0x16'),core[_0x87c1('0x16')]);ami['on'](_0x87c1('0x17'),core['managerevent']);ami['on'](_0x87c1('0x18'),function(_0x175a0c){try{utils['debug'](util[_0x87c1('0x19')](_0x87c1('0x1a'),_0x175a0c['device']),_0x175a0c);members[_0x87c1('0x18')](_0x175a0c);}catch(_0x2c084f){utils[_0x87c1('0x15')](util['format'](_0x87c1('0x1a'),_0x175a0c['device']),_0x2c084f);}});ami['on'](_0x87c1('0x1b'),function(_0x2cd2b0){try{utils[_0x87c1('0x1c')](util[_0x87c1('0x19')](_0x87c1('0x1d'),_0x2cd2b0[_0x87c1('0x1e')]),_0x2cd2b0);agents[_0x87c1('0x1b')](_0x2cd2b0);}catch(_0x3220d4){utils[_0x87c1('0x15')](util[_0x87c1('0x19')]('[%s][index][agentcalled]',_0x2cd2b0[_0x87c1('0x1e')]),_0x3220d4);}});ami['on'](_0x87c1('0x1f'),function(_0x34eddc){try{utils[_0x87c1('0x1c')](util[_0x87c1('0x19')](_0x87c1('0x20'),_0x34eddc[_0x87c1('0x1e')]),_0x34eddc);agents[_0x87c1('0x1f')](_0x34eddc);}catch(_0x33989d){utils['error'](util['format'](_0x87c1('0x20'),_0x34eddc[_0x87c1('0x1e')]),_0x33989d);}});ami['on']('agentconnect',function(_0x42f9eb){try{utils[_0x87c1('0x1c')](util[_0x87c1('0x19')](_0x87c1('0x21'),_0x42f9eb[_0x87c1('0x1e')]),_0x42f9eb);agents[_0x87c1('0x22')](_0x42f9eb);queues[_0x87c1('0x22')](_0x42f9eb);}catch(_0x5ed77d){utils['error'](util[_0x87c1('0x19')](_0x87c1('0x21'),_0x42f9eb['uniqueid']),_0x5ed77d);}});ami['on'](_0x87c1('0x23'),function(_0x117bc7){try{utils[_0x87c1('0x1c')](util[_0x87c1('0x19')](_0x87c1('0x24'),_0x117bc7['uniqueid']),_0x117bc7);agents['agentcomplete'](_0x117bc7);queues[_0x87c1('0x23')](_0x117bc7);members[_0x87c1('0x23')](_0x117bc7);}catch(_0x396381){utils[_0x87c1('0x15')](util[_0x87c1('0x19')](_0x87c1('0x24'),_0x117bc7[_0x87c1('0x1e')]),_0x396381);}});ami['on'](_0x87c1('0x25'),function(_0x49d537){try{utils[_0x87c1('0x1c')](util[_0x87c1('0x19')](_0x87c1('0x26'),_0x49d537['uniqueid']),_0x49d537);agents[_0x87c1('0x25')](_0x49d537);queues[_0x87c1('0x25')](_0x49d537);}catch(_0x2abc3b){utils[_0x87c1('0x15')](util['format'](_0x87c1('0x26'),_0x49d537['uniqueid']),_0x2abc3b);}});ami['on'](_0x87c1('0x27'),function(_0x4e59dd){try{utils[_0x87c1('0x1c')](util[_0x87c1('0x19')](_0x87c1('0x28'),_0x4e59dd[_0x87c1('0x1e')]),_0x4e59dd);queues['queuecallerjoin'](_0x4e59dd);recordings['queuecallerjoin'](_0x4e59dd);}catch(_0x3cc330){utils[_0x87c1('0x15')](util[_0x87c1('0x19')](_0x87c1('0x28'),_0x4e59dd['uniqueid']),_0x3cc330);}});ami['on'](_0x87c1('0x29'),function(_0x5c117b){try{utils[_0x87c1('0x1c')](util[_0x87c1('0x19')]('[%s][index][queuecallerleave]',_0x5c117b['uniqueid']),_0x5c117b);queues['queuecallerleave'](_0x5c117b);}catch(_0x3685bd){utils[_0x87c1('0x15')](util[_0x87c1('0x19')](_0x87c1('0x2a'),_0x5c117b['uniqueid']),_0x3685bd);}});ami['on'](_0x87c1('0x2b'),function(_0x4293ba){try{utils['debug'](util[_0x87c1('0x19')](_0x87c1('0x2c'),_0x4293ba['uniqueid']),_0x4293ba);queues[_0x87c1('0x2b')](_0x4293ba);calls[_0x87c1('0x2b')](_0x4293ba);}catch(_0x3f6211){utils['error'](util[_0x87c1('0x19')](_0x87c1('0x2c'),_0x4293ba['uniqueid']),_0x3f6211);}});ami['on']('musiconholdstop',function(_0x50b77c){try{utils[_0x87c1('0x1c')](util['format'](_0x87c1('0x2d'),_0x50b77c['uniqueid']),_0x50b77c);queues['musiconholdstop'](_0x50b77c);calls[_0x87c1('0x2e')](_0x50b77c);}catch(_0x36202e){utils[_0x87c1('0x15')](util[_0x87c1('0x19')](_0x87c1('0x2d'),_0x50b77c[_0x87c1('0x1e')]),_0x36202e);}});ami['on']('newstate',function(_0x5cf4c5){try{utils[_0x87c1('0x1c')](util[_0x87c1('0x19')]('[%s][index][newstate]',_0x5cf4c5[_0x87c1('0x1e')]),_0x5cf4c5);calls[_0x87c1('0x2f')](_0x5cf4c5);recordings[_0x87c1('0x2f')](_0x5cf4c5);}catch(_0x3ba62d){utils['error'](util['format'](_0x87c1('0x30'),_0x5cf4c5[_0x87c1('0x1e')]),_0x3ba62d);}});ami['on']('hangup',function(_0x607be5){try{utils[_0x87c1('0x1c')](util['format'](_0x87c1('0x31'),_0x607be5[_0x87c1('0x1e')]),_0x607be5);calls[_0x87c1('0x32')](_0x607be5);recordings['hangup'](_0x607be5);dials[_0x87c1('0x32')](_0x607be5);agents[_0x87c1('0x32')](_0x607be5);queues[_0x87c1('0x32')](_0x607be5);}catch(_0x3966de){utils[_0x87c1('0x15')](util['format'](_0x87c1('0x31'),_0x607be5[_0x87c1('0x1e')]),_0x3966de);}});ami['on'](_0x87c1('0x33'),function(_0x553ffe){try{utils[_0x87c1('0x1c')](util[_0x87c1('0x19')](_0x87c1('0x34'),_0x553ffe['uniqueid']),_0x553ffe);members[_0x87c1('0x33')](_0x553ffe);}catch(_0x160b06){utils['error'](util[_0x87c1('0x19')](_0x87c1('0x34'),_0x553ffe[_0x87c1('0x1e')]),_0x160b06);}});ami['on'](_0x87c1('0x35'),function(_0x48ef0d){try{utils['debug'](util['format'](_0x87c1('0x36'),_0x48ef0d[_0x87c1('0x1e')]),_0x48ef0d);queues[_0x87c1('0x35')](_0x48ef0d);agents[_0x87c1('0x35')](_0x48ef0d);transfers[_0x87c1('0x35')](_0x48ef0d);}catch(_0x56420a){utils['error'](util[_0x87c1('0x19')]('[%s][index][blindtransfer]',_0x48ef0d[_0x87c1('0x1e')]),_0x56420a);}});ami['on'](_0x87c1('0x37'),function(_0xcc41f7){try{utils[_0x87c1('0x1c')](util['format']('[%s][index][attendedtransfer]',_0xcc41f7[_0x87c1('0x38')]),_0xcc41f7);queues[_0x87c1('0x37')](_0xcc41f7);transfers[_0x87c1('0x37')](_0xcc41f7);agents[_0x87c1('0x37')](_0xcc41f7);calls[_0x87c1('0x37')](_0xcc41f7);}catch(_0x267b79){utils[_0x87c1('0x15')](util[_0x87c1('0x19')](_0x87c1('0x39'),_0xcc41f7[_0x87c1('0x38')]),_0x267b79);}});ami['on']('varset',function(_0x3c087e){try{utils['debug'](util['format'](_0x87c1('0x3a'),_0x3c087e[_0x87c1('0x1e')]),_0x3c087e);queues[_0x87c1('0x3b')](_0x3c087e);recordings['varset'](_0x3c087e);calls['varset'](_0x3c087e);dials[_0x87c1('0x3b')](_0x3c087e);}catch(_0x1fd5a7){utils[_0x87c1('0x15')](util[_0x87c1('0x19')]('[%s][index][varset]',_0x3c087e['uniqueid']),_0x1fd5a7);}});ami['on']('newexten',function(_0x1ac4f1){try{utils[_0x87c1('0x1c')](util[_0x87c1('0x19')]('[%s][index][newexten]',_0x1ac4f1[_0x87c1('0x1e')]),_0x1ac4f1);calls['newexten'](_0x1ac4f1);recordings['newexten'](_0x1ac4f1);dials[_0x87c1('0x3c')](_0x1ac4f1);}catch(_0xda7628){utils[_0x87c1('0x15')](util[_0x87c1('0x19')](_0x87c1('0x3d'),_0x1ac4f1[_0x87c1('0x1e')]),_0xda7628);}});ami['on'](_0x87c1('0x3e'),function(_0x3b26f3){try{utils[_0x87c1('0x1c')](util[_0x87c1('0x19')]('[%s][index][newchannel]',_0x3b26f3[_0x87c1('0x1e')]),_0x3b26f3);calls['newchannel'](_0x3b26f3);recordings[_0x87c1('0x3e')](_0x3b26f3);}catch(_0x558cbc){utils[_0x87c1('0x15')](util[_0x87c1('0x19')](_0x87c1('0x3f'),_0x3b26f3[_0x87c1('0x1e')]),_0x558cbc);}});ami['on'](_0x87c1('0x40'),function(_0x53154a){try{utils[_0x87c1('0x1c')](util[_0x87c1('0x19')]('[%s][index][dialbegin]',_0x53154a['uniqueid']),_0x53154a);dials[_0x87c1('0x40')](_0x53154a);}catch(_0x147a3e){utils['error'](util['format'](_0x87c1('0x41'),_0x53154a[_0x87c1('0x1e')]),_0x147a3e);}});ami['on']('dialend',function(_0x1e45b4){try{utils[_0x87c1('0x1c')](util[_0x87c1('0x19')]('[%s][index][dialend]',_0x1e45b4[_0x87c1('0x1e')]),_0x1e45b4);dials[_0x87c1('0x42')](_0x1e45b4);}catch(_0x2999eb){utils['error'](util[_0x87c1('0x19')](_0x87c1('0x43'),_0x1e45b4[_0x87c1('0x1e')]),_0x2999eb);}});}
\ No newline at end of file
+var _0xbabd=['asterisk-manager','../../config/environment','util','asterisk','port','password','keepConnected','xdr','disabled','info','./agents.controller','./calls.controller','./queues.controller','./transfers.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','format','[%s][index][devicestatechange]','device','[%s][index][agentcalled]','uniqueid','agentcalled','agentringnoanswer','debug','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','[%s][index][newstate]','newstate','[%s][index][hangup]','hangup','[%s][index][cdr]','cdr','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','[%s]dialbegin','[%s][index][dialend]','dialend'];(function(_0x39479f,_0x822ae4){var _0x4a6d96=function(_0x55bfba){while(--_0x55bfba){_0x39479f['push'](_0x39479f['shift']());}};_0x4a6d96(++_0x822ae4);}(_0xbabd,0x84));var _0xdbab=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbabd[_0x3dd15e];return _0x231fd0;};var AsteriskManager=require(_0xdbab('0x0'));var config=require(_0xdbab('0x1'));var utils=require('./utils');var util=require(_0xdbab('0x2'));var ami=new AsteriskManager(config[_0xdbab('0x3')][_0xdbab('0x4')],config[_0xdbab('0x3')]['ip'],config['asterisk']['username'],config[_0xdbab('0x3')][_0xdbab('0x5')],!![]);ami[_0xdbab('0x6')]();if(config[_0xdbab('0x7')]&&config[_0xdbab('0x7')][_0xdbab('0x8')]){utils[_0xdbab('0x9')]('XDR\x20DISABLED');}else{var agents=require(_0xdbab('0xa'));var calls=require(_0xdbab('0xb'));var queues=require(_0xdbab('0xc'));var recordings=require('./recordings.controller');var members=require('./members.controller');var dials=require('./dials.controller');var transfers=require(_0xdbab('0xd'));var core=require('./core.controller');ami['on'](_0xdbab('0xe'),core[_0xdbab('0xe')]);ami['on'](_0xdbab('0xf'),core[_0xdbab('0xf')]);ami['on'](_0xdbab('0x10'),core['fullybooted']);ami['on']('error',core[_0xdbab('0x11')]);ami['on']('close',core[_0xdbab('0x12')]);ami['on']('managerevent',core[_0xdbab('0x13')]);ami['on'](_0xdbab('0x14'),function(_0x43797b){try{utils['debug'](util[_0xdbab('0x15')](_0xdbab('0x16'),_0x43797b[_0xdbab('0x17')]),_0x43797b);members[_0xdbab('0x14')](_0x43797b);}catch(_0x50670e){utils[_0xdbab('0x11')](util[_0xdbab('0x15')](_0xdbab('0x16'),_0x43797b[_0xdbab('0x17')]),_0x50670e);}});ami['on']('agentcalled',function(_0x43c128){try{utils['debug'](util[_0xdbab('0x15')](_0xdbab('0x18'),_0x43c128[_0xdbab('0x19')]),_0x43c128);agents[_0xdbab('0x1a')](_0x43c128);}catch(_0x1cecac){utils['error'](util[_0xdbab('0x15')](_0xdbab('0x18'),_0x43c128[_0xdbab('0x19')]),_0x1cecac);}});ami['on'](_0xdbab('0x1b'),function(_0x60abb4){try{utils[_0xdbab('0x1c')](util[_0xdbab('0x15')](_0xdbab('0x1d'),_0x60abb4[_0xdbab('0x19')]),_0x60abb4);agents[_0xdbab('0x1b')](_0x60abb4);}catch(_0x40c8dd){utils['error'](util[_0xdbab('0x15')]('[%s][index][agentringnoanswer]',_0x60abb4[_0xdbab('0x19')]),_0x40c8dd);}});ami['on'](_0xdbab('0x1e'),function(_0x58a742){try{utils[_0xdbab('0x1c')](util[_0xdbab('0x15')](_0xdbab('0x1f'),_0x58a742['uniqueid']),_0x58a742);agents['agentconnect'](_0x58a742);queues['agentconnect'](_0x58a742);}catch(_0x55bc03){utils[_0xdbab('0x11')](util[_0xdbab('0x15')](_0xdbab('0x1f'),_0x58a742['uniqueid']),_0x55bc03);}});ami['on'](_0xdbab('0x20'),function(_0x5dd780){try{utils[_0xdbab('0x1c')](util['format'](_0xdbab('0x21'),_0x5dd780[_0xdbab('0x19')]),_0x5dd780);agents['agentcomplete'](_0x5dd780);queues[_0xdbab('0x20')](_0x5dd780);members[_0xdbab('0x20')](_0x5dd780);}catch(_0x48155a){utils[_0xdbab('0x11')](util[_0xdbab('0x15')]('[%s][index][agentcomplete]',_0x5dd780[_0xdbab('0x19')]),_0x48155a);}});ami['on'](_0xdbab('0x22'),function(_0x965f11){try{utils[_0xdbab('0x1c')](util['format'](_0xdbab('0x23'),_0x965f11[_0xdbab('0x19')]),_0x965f11);agents[_0xdbab('0x22')](_0x965f11);queues['queuecallerabandon'](_0x965f11);}catch(_0x56849f){utils[_0xdbab('0x11')](util[_0xdbab('0x15')]('[%s][index][queuecallerabandon]',_0x965f11[_0xdbab('0x19')]),_0x56849f);}});ami['on'](_0xdbab('0x24'),function(_0x5dca33){try{utils[_0xdbab('0x1c')](util['format'](_0xdbab('0x25'),_0x5dca33[_0xdbab('0x19')]),_0x5dca33);queues[_0xdbab('0x24')](_0x5dca33);recordings['queuecallerjoin'](_0x5dca33);}catch(_0x3c9c9a){utils['error'](util[_0xdbab('0x15')](_0xdbab('0x25'),_0x5dca33[_0xdbab('0x19')]),_0x3c9c9a);}});ami['on'](_0xdbab('0x26'),function(_0x48811b){try{utils[_0xdbab('0x1c')](util['format'](_0xdbab('0x27'),_0x48811b[_0xdbab('0x19')]),_0x48811b);queues['queuecallerleave'](_0x48811b);}catch(_0x27142f){utils[_0xdbab('0x11')](util[_0xdbab('0x15')](_0xdbab('0x27'),_0x48811b[_0xdbab('0x19')]),_0x27142f);}});ami['on'](_0xdbab('0x28'),function(_0x23edd6){try{utils['debug'](util[_0xdbab('0x15')](_0xdbab('0x29'),_0x23edd6['uniqueid']),_0x23edd6);queues[_0xdbab('0x28')](_0x23edd6);calls['musiconholdstart'](_0x23edd6);}catch(_0x24a75d){utils[_0xdbab('0x11')](util['format'](_0xdbab('0x29'),_0x23edd6[_0xdbab('0x19')]),_0x24a75d);}});ami['on'](_0xdbab('0x2a'),function(_0x4ed30a){try{utils[_0xdbab('0x1c')](util[_0xdbab('0x15')](_0xdbab('0x2b'),_0x4ed30a[_0xdbab('0x19')]),_0x4ed30a);queues[_0xdbab('0x2a')](_0x4ed30a);calls[_0xdbab('0x2a')](_0x4ed30a);}catch(_0x36f4a0){utils['error'](util[_0xdbab('0x15')](_0xdbab('0x2b'),_0x4ed30a[_0xdbab('0x19')]),_0x36f4a0);}});ami['on']('newstate',function(_0x626eb0){try{utils[_0xdbab('0x1c')](util[_0xdbab('0x15')](_0xdbab('0x2c'),_0x626eb0['uniqueid']),_0x626eb0);calls[_0xdbab('0x2d')](_0x626eb0);recordings['newstate'](_0x626eb0);}catch(_0x17c034){utils[_0xdbab('0x11')](util[_0xdbab('0x15')](_0xdbab('0x2c'),_0x626eb0[_0xdbab('0x19')]),_0x17c034);}});ami['on']('hangup',function(_0x3bee3f){try{utils[_0xdbab('0x1c')](util['format'](_0xdbab('0x2e'),_0x3bee3f[_0xdbab('0x19')]),_0x3bee3f);calls[_0xdbab('0x2f')](_0x3bee3f);recordings['hangup'](_0x3bee3f);dials[_0xdbab('0x2f')](_0x3bee3f);agents['hangup'](_0x3bee3f);queues[_0xdbab('0x2f')](_0x3bee3f);}catch(_0x254fd5){utils[_0xdbab('0x11')](util[_0xdbab('0x15')](_0xdbab('0x2e'),_0x3bee3f[_0xdbab('0x19')]),_0x254fd5);}});ami['on']('cdr',function(_0xda7a8a){try{utils[_0xdbab('0x1c')](util[_0xdbab('0x15')](_0xdbab('0x30'),_0xda7a8a[_0xdbab('0x19')]),_0xda7a8a);members[_0xdbab('0x31')](_0xda7a8a);}catch(_0x30f329){utils['error'](util[_0xdbab('0x15')](_0xdbab('0x30'),_0xda7a8a[_0xdbab('0x19')]),_0x30f329);}});ami['on'](_0xdbab('0x32'),function(_0x128292){try{utils[_0xdbab('0x1c')](util[_0xdbab('0x15')](_0xdbab('0x33'),_0x128292['uniqueid']),_0x128292);queues[_0xdbab('0x32')](_0x128292);agents[_0xdbab('0x32')](_0x128292);transfers[_0xdbab('0x32')](_0x128292);}catch(_0x340bfe){utils[_0xdbab('0x11')](util[_0xdbab('0x15')](_0xdbab('0x33'),_0x128292[_0xdbab('0x19')]),_0x340bfe);}});ami['on'](_0xdbab('0x34'),function(_0x17bfd7){try{utils[_0xdbab('0x1c')](util[_0xdbab('0x15')](_0xdbab('0x35'),_0x17bfd7[_0xdbab('0x36')]),_0x17bfd7);queues[_0xdbab('0x34')](_0x17bfd7);transfers[_0xdbab('0x34')](_0x17bfd7);agents[_0xdbab('0x34')](_0x17bfd7);calls[_0xdbab('0x34')](_0x17bfd7);}catch(_0x4a0b0a){utils['error'](util[_0xdbab('0x15')]('[%s][index][attendedtransfer]',_0x17bfd7[_0xdbab('0x36')]),_0x4a0b0a);}});ami['on'](_0xdbab('0x37'),function(_0x2c4945){try{utils['debug'](util[_0xdbab('0x15')](_0xdbab('0x38'),_0x2c4945[_0xdbab('0x19')]),_0x2c4945);queues[_0xdbab('0x37')](_0x2c4945);recordings[_0xdbab('0x37')](_0x2c4945);calls[_0xdbab('0x37')](_0x2c4945);dials['varset'](_0x2c4945);}catch(_0x14f778){utils['error'](util['format'](_0xdbab('0x38'),_0x2c4945[_0xdbab('0x19')]),_0x14f778);}});ami['on'](_0xdbab('0x39'),function(_0xbdf345){try{utils[_0xdbab('0x1c')](util[_0xdbab('0x15')](_0xdbab('0x3a'),_0xbdf345[_0xdbab('0x19')]),_0xbdf345);calls[_0xdbab('0x39')](_0xbdf345);recordings['newexten'](_0xbdf345);dials[_0xdbab('0x39')](_0xbdf345);}catch(_0x2a6d12){utils[_0xdbab('0x11')](util['format'](_0xdbab('0x3a'),_0xbdf345[_0xdbab('0x19')]),_0x2a6d12);}});ami['on'](_0xdbab('0x3b'),function(_0x2c2419){try{utils[_0xdbab('0x1c')](util['format'](_0xdbab('0x3c'),_0x2c2419['uniqueid']),_0x2c2419);calls['newchannel'](_0x2c2419);recordings[_0xdbab('0x3b')](_0x2c2419);}catch(_0x53f850){utils[_0xdbab('0x11')](util[_0xdbab('0x15')]('[%s][index][newchannel]',_0x2c2419[_0xdbab('0x19')]),_0x53f850);}});ami['on'](_0xdbab('0x3d'),function(_0x7ccd8b){try{utils[_0xdbab('0x1c')](util['format'](_0xdbab('0x3e'),_0x7ccd8b['uniqueid']),_0x7ccd8b);dials[_0xdbab('0x3d')](_0x7ccd8b);}catch(_0x35c55b){utils[_0xdbab('0x11')](util[_0xdbab('0x15')](_0xdbab('0x3f'),_0x7ccd8b[_0xdbab('0x19')]),_0x35c55b);}});ami['on']('dialend',function(_0x313fd4){try{utils[_0xdbab('0x1c')](util['format'](_0xdbab('0x40'),_0x313fd4[_0xdbab('0x19')]),_0x313fd4);dials[_0xdbab('0x41')](_0x313fd4);}catch(_0x1cc93f){utils['error'](util['format'](_0xdbab('0x40'),_0x313fd4[_0xdbab('0x19')]),_0x1cc93f);}});}
\ No newline at end of file
index 7476e4c..47a436e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eec=['queue','assign','cdr','[%s][members][cdr]','channel','split','data1','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','lodash','util','./utils','Local/_attended@transfer','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface','data2','membername','type','getUserByInterface','then','name','request','CreateMemberReport','getUserByName','catch','error','[%s][members][writeDB]','some','devicestatechange','debug','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','BUSY','TALKING','now','agent','NOT_INUSE','isNil','exitAt','duration','diffTime','enterAt','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s'];(function(_0x192d6e,_0x2ddc37){var _0x37d811=function(_0xcb8fc2){while(--_0xcb8fc2){_0x192d6e['push'](_0x192d6e['shift']());}};_0x37d811(++_0x2ddc37);}(_0x3eec,0x1e9));var _0xc3ee=function(_0x2e19af,_0x1f04bf){_0x2e19af=_0x2e19af-0x0;var _0x307361=_0x3eec[_0x2e19af];return _0x307361;};'use strict';var _=require(_0xc3ee('0x0'));var util=require(_0xc3ee('0x1'));var utils=require(_0xc3ee('0x2'));var members={};var exclude=[_0xc3ee('0x3'),'Queue:'];function writeDB(_0x223d08){utils[_0xc3ee('0x4')](util[_0xc3ee('0x5')](_0xc3ee('0x6'),_0x223d08[_0xc3ee('0x7')],_0x223d08[_0xc3ee('0x8')],_0x223d08['channel'],_0x223d08[_0xc3ee('0x9')],_0x223d08[_0xc3ee('0xa')],_0x223d08[_0xc3ee('0xb')]));if(_0x223d08[_0xc3ee('0x8')]){utils[_0xc3ee('0xc')](_0x223d08[_0xc3ee('0x8')])[_0xc3ee('0xd')](function(_0x2c9701){if(_0x2c9701){_0x223d08[_0xc3ee('0xa')]=_0x2c9701[_0xc3ee('0xe')];_0x223d08['internal']=_0x2c9701['internal'];utils[_0xc3ee('0xf')](_0xc3ee('0x10'),_0x223d08);}else{utils[_0xc3ee('0x11')](_0x223d08[_0xc3ee('0x8')]['split']('/')[0x1])[_0xc3ee('0xd')](function(_0x4b1bff){if(_0x4b1bff){_0x223d08[_0xc3ee('0xa')]=_0x4b1bff[_0xc3ee('0xe')];_0x223d08['internal']=_0x4b1bff['internal'];utils[_0xc3ee('0xf')]('CreateMemberReport',_0x223d08);}});}})[_0xc3ee('0x12')](function(_0x535d1a){utils[_0xc3ee('0x13')](util['format'](_0xc3ee('0x14'),_0x223d08[_0xc3ee('0x7')]),_0x535d1a);});}delete members[_0x223d08[_0xc3ee('0x8')]];}function startsWith(_0x664bad,_0x476f8f){return _[_0xc3ee('0x15')](_0x664bad,function(_0x277e11){return _['startsWith'](_0x476f8f,_0x277e11);});}exports[_0xc3ee('0x16')]=function(_0x4eea89){try{utils[_0xc3ee('0x17')](util[_0xc3ee('0x5')](_0xc3ee('0x18'),members[_0x4eea89[_0xc3ee('0x19')]]?members[_0x4eea89[_0xc3ee('0x19')]][_0xc3ee('0x7')]:_0x4eea89[_0xc3ee('0x19')]),_0x4eea89);utils[_0xc3ee('0x4')](util[_0xc3ee('0x5')](_0xc3ee('0x1a'),members[_0x4eea89[_0xc3ee('0x19')]]?members[_0x4eea89[_0xc3ee('0x19')]][_0xc3ee('0x7')]:_0x4eea89[_0xc3ee('0x19')],_0x4eea89[_0xc3ee('0x1b')],_0x4eea89[_0xc3ee('0x19')]));switch(_0x4eea89[_0xc3ee('0x1b')]){case _0xc3ee('0x1c'):case _0xc3ee('0x1d'):if(!startsWith(exclude,_0x4eea89[_0xc3ee('0x19')])){members[_0x4eea89[_0xc3ee('0x19')]]={'channel':'voice','interface':_0x4eea89['device'],'type':_0xc3ee('0x1e'),'enterAt':utils[_0xc3ee('0x1f')](),'role':_0xc3ee('0x20')};}break;case _0xc3ee('0x21'):if(!_[_0xc3ee('0x22')](members[_0x4eea89[_0xc3ee('0x19')]])){members[_0x4eea89['device']][_0xc3ee('0x23')]=utils[_0xc3ee('0x1f')]();members[_0x4eea89[_0xc3ee('0x19')]][_0xc3ee('0x24')]=utils[_0xc3ee('0x25')](members[_0x4eea89['device']]['exitAt'],members[_0x4eea89[_0xc3ee('0x19')]][_0xc3ee('0x26')]);if(members[_0x4eea89[_0xc3ee('0x19')]][_0xc3ee('0x7')]){writeDB(members[_0x4eea89[_0xc3ee('0x19')]]);}}break;default:break;}}catch(_0x4ecfec){utils['error'](util['format'](_0xc3ee('0x18'),members[_0x4eea89[_0xc3ee('0x19')]]?members[_0x4eea89[_0xc3ee('0x19')]][_0xc3ee('0x7')]:_0x4eea89[_0xc3ee('0x19')]),_0x4ecfec);}};exports['agentcomplete']=function(_0x13f30d){try{if(!_[_0xc3ee('0x22')](members[_0x13f30d[_0xc3ee('0x8')]])){utils[_0xc3ee('0x17')](util[_0xc3ee('0x5')](_0xc3ee('0x27'),_0x13f30d[_0xc3ee('0x7')]),_0x13f30d);utils['info'](util[_0xc3ee('0x5')](_0xc3ee('0x28'),_0x13f30d[_0xc3ee('0x7')],_0x13f30d['interface'],_0x13f30d[_0xc3ee('0x29')]));members[_0x13f30d[_0xc3ee('0x8')]]=_[_0xc3ee('0x2a')](members[_0x13f30d[_0xc3ee('0x8')]],{'data4':_0x13f30d[_0xc3ee('0x29')],'uniqueid':_0x13f30d[_0xc3ee('0x7')]});}}catch(_0x16677d){utils['error'](util[_0xc3ee('0x5')]('[%s][members][agentcomplete]',_0x13f30d[_0xc3ee('0x7')]),_0x16677d);}};exports[_0xc3ee('0x2b')]=function(_0x13d6e5){try{utils[_0xc3ee('0x17')](util[_0xc3ee('0x5')](_0xc3ee('0x2c'),_0x13d6e5['uniqueid']),_0x13d6e5);if(_0x13d6e5[_0xc3ee('0x2d')]){var _0x3f2e5a=_0x13d6e5[_0xc3ee('0x2d')][_0xc3ee('0x2e')]('-')[0x0];if(!_[_0xc3ee('0x22')](members[_0x3f2e5a])){members[_0x3f2e5a]=_[_0xc3ee('0x2a')](members[_0x3f2e5a],{'data1':members[_0x3f2e5a][_0xc3ee('0x2f')]||_0x13d6e5[_0xc3ee('0xb')],'data2':members[_0x3f2e5a][_0xc3ee('0x9')]||_0x13d6e5[_0xc3ee('0x30')],'data3':members[_0x3f2e5a][_0xc3ee('0x31')]||_0x13d6e5[_0xc3ee('0x32')],'uniqueid':members[_0x3f2e5a][_0xc3ee('0x7')]||_0x13d6e5[_0xc3ee('0x7')]});utils[_0xc3ee('0x4')](util[_0xc3ee('0x5')](_0xc3ee('0x33'),_0x13d6e5[_0xc3ee('0x7')],members[_0x3f2e5a][_0xc3ee('0x2f')],members[_0x3f2e5a][_0xc3ee('0x9')],members[_0x3f2e5a][_0xc3ee('0x31')]));if(members[_0x3f2e5a]['exitAt']){writeDB(members[_0x3f2e5a]);}}}if(_0x13d6e5[_0xc3ee('0x34')]){var _0x548df8=_0x13d6e5[_0xc3ee('0x34')][_0xc3ee('0x2e')]('-')[0x0];if(!_[_0xc3ee('0x22')](members[_0x548df8])){members[_0x548df8]=_[_0xc3ee('0x2a')](members[_0x548df8],{'data1':members[_0x548df8][_0xc3ee('0x2f')]||_0x13d6e5[_0xc3ee('0xb')],'data2':members[_0x548df8]['data2']||_0x13d6e5[_0xc3ee('0x30')],'data3':members[_0x548df8][_0xc3ee('0x31')]||_0x13d6e5[_0xc3ee('0x32')],'uniqueid':members[_0x548df8]['uniqueid']||_0x13d6e5[_0xc3ee('0x7')]});utils[_0xc3ee('0x4')](util[_0xc3ee('0x5')](_0xc3ee('0x33'),_0x13d6e5[_0xc3ee('0x7')],members[_0x548df8][_0xc3ee('0x2f')],members[_0x548df8][_0xc3ee('0x9')],members[_0x548df8][_0xc3ee('0x31')]));if(members[_0x548df8][_0xc3ee('0x23')]){writeDB(members[_0x548df8]);}}}}catch(_0x23d365){utils[_0xc3ee('0x13')](util['format'](_0xc3ee('0x2c'),_0x13d6e5[_0xc3ee('0x7')]),_0x23d365);}};
\ No newline at end of file
+var _0xb701=['NOT_INUSE','isNil','exitAt','duration','diffTime','enterAt','agentcomplete','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','[%s][members][cdr]','assign','data1','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','util','Local/_attended@transfer','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface','channel','data2','membername','type','then','name','internal','CreateMemberReport','getUserByName','split','request','catch','error','[%s][members][writeDB]','some','startsWith','devicestatechange','debug','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','voice','now','agent'];(function(_0x29b1a7,_0x1ed6b6){var _0x4a69af=function(_0x174bff){while(--_0x174bff){_0x29b1a7['push'](_0x29b1a7['shift']());}};_0x4a69af(++_0x1ed6b6);}(_0xb701,0x144));var _0x1b70=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0xb701[_0x53ccf2];return _0x5a2964;};'use strict';var _=require('lodash');var util=require(_0x1b70('0x0'));var utils=require('./utils');var members={};var exclude=[_0x1b70('0x1'),'Queue:'];function writeDB(_0x5c87ab){utils[_0x1b70('0x2')](util[_0x1b70('0x3')](_0x1b70('0x4'),_0x5c87ab[_0x1b70('0x5')],_0x5c87ab[_0x1b70('0x6')],_0x5c87ab[_0x1b70('0x7')],_0x5c87ab[_0x1b70('0x8')],_0x5c87ab[_0x1b70('0x9')],_0x5c87ab[_0x1b70('0xa')]));if(_0x5c87ab[_0x1b70('0x6')]){utils['getUserByInterface'](_0x5c87ab[_0x1b70('0x6')])[_0x1b70('0xb')](function(_0x114b44){if(_0x114b44){_0x5c87ab[_0x1b70('0x9')]=_0x114b44[_0x1b70('0xc')];_0x5c87ab[_0x1b70('0xd')]=_0x114b44[_0x1b70('0xd')];utils['request'](_0x1b70('0xe'),_0x5c87ab);}else{utils[_0x1b70('0xf')](_0x5c87ab[_0x1b70('0x6')][_0x1b70('0x10')]('/')[0x1])[_0x1b70('0xb')](function(_0x1e636d){if(_0x1e636d){_0x5c87ab[_0x1b70('0x9')]=_0x1e636d[_0x1b70('0xc')];_0x5c87ab[_0x1b70('0xd')]=_0x1e636d[_0x1b70('0xd')];utils[_0x1b70('0x11')](_0x1b70('0xe'),_0x5c87ab);}});}})[_0x1b70('0x12')](function(_0x51ed99){utils[_0x1b70('0x13')](util[_0x1b70('0x3')](_0x1b70('0x14'),_0x5c87ab[_0x1b70('0x5')]),_0x51ed99);});}delete members[_0x5c87ab['interface']];}function startsWith(_0x5c3548,_0x50bf6b){return _[_0x1b70('0x15')](_0x5c3548,function(_0x3e28ee){return _[_0x1b70('0x16')](_0x50bf6b,_0x3e28ee);});}exports[_0x1b70('0x17')]=function(_0x314ebb){try{utils[_0x1b70('0x18')](util['format'](_0x1b70('0x19'),members[_0x314ebb[_0x1b70('0x1a')]]?members[_0x314ebb[_0x1b70('0x1a')]]['uniqueid']:_0x314ebb[_0x1b70('0x1a')]),_0x314ebb);utils[_0x1b70('0x2')](util[_0x1b70('0x3')](_0x1b70('0x1b'),members[_0x314ebb[_0x1b70('0x1a')]]?members[_0x314ebb[_0x1b70('0x1a')]][_0x1b70('0x5')]:_0x314ebb[_0x1b70('0x1a')],_0x314ebb['state'],_0x314ebb[_0x1b70('0x1a')]));switch(_0x314ebb[_0x1b70('0x1c')]){case _0x1b70('0x1d'):case'BUSY':if(!startsWith(exclude,_0x314ebb[_0x1b70('0x1a')])){members[_0x314ebb[_0x1b70('0x1a')]]={'channel':_0x1b70('0x1e'),'interface':_0x314ebb[_0x1b70('0x1a')],'type':'TALKING','enterAt':utils[_0x1b70('0x1f')](),'role':_0x1b70('0x20')};}break;case _0x1b70('0x21'):if(!_[_0x1b70('0x22')](members[_0x314ebb[_0x1b70('0x1a')]])){members[_0x314ebb[_0x1b70('0x1a')]][_0x1b70('0x23')]=utils[_0x1b70('0x1f')]();members[_0x314ebb[_0x1b70('0x1a')]][_0x1b70('0x24')]=utils[_0x1b70('0x25')](members[_0x314ebb['device']]['exitAt'],members[_0x314ebb[_0x1b70('0x1a')]][_0x1b70('0x26')]);if(members[_0x314ebb['device']][_0x1b70('0x5')]){writeDB(members[_0x314ebb[_0x1b70('0x1a')]]);}}break;default:break;}}catch(_0xe0a20f){utils[_0x1b70('0x13')](util['format']('[%s][members][devicestatechange]',members[_0x314ebb[_0x1b70('0x1a')]]?members[_0x314ebb[_0x1b70('0x1a')]][_0x1b70('0x5')]:_0x314ebb[_0x1b70('0x1a')]),_0xe0a20f);}};exports[_0x1b70('0x27')]=function(_0x4bbe5a){try{if(!_[_0x1b70('0x22')](members[_0x4bbe5a[_0x1b70('0x6')]])){utils['debug'](util[_0x1b70('0x3')](_0x1b70('0x28'),_0x4bbe5a[_0x1b70('0x5')]),_0x4bbe5a);utils['info'](util[_0x1b70('0x3')](_0x1b70('0x29'),_0x4bbe5a[_0x1b70('0x5')],_0x4bbe5a[_0x1b70('0x6')],_0x4bbe5a[_0x1b70('0x2a')]));members[_0x4bbe5a[_0x1b70('0x6')]]=_['assign'](members[_0x4bbe5a[_0x1b70('0x6')]],{'data4':_0x4bbe5a[_0x1b70('0x2a')],'uniqueid':_0x4bbe5a[_0x1b70('0x5')]});}}catch(_0x2a69cc){utils[_0x1b70('0x13')](util[_0x1b70('0x3')]('[%s][members][agentcomplete]',_0x4bbe5a[_0x1b70('0x5')]),_0x2a69cc);}};exports['cdr']=function(_0x5295f9){try{utils[_0x1b70('0x18')](util[_0x1b70('0x3')](_0x1b70('0x2b'),_0x5295f9[_0x1b70('0x5')]),_0x5295f9);if(_0x5295f9[_0x1b70('0x7')]){var _0x43ebe3=_0x5295f9[_0x1b70('0x7')][_0x1b70('0x10')]('-')[0x0];if(!_[_0x1b70('0x22')](members[_0x43ebe3])){members[_0x43ebe3]=_[_0x1b70('0x2c')](members[_0x43ebe3],{'data1':members[_0x43ebe3][_0x1b70('0x2d')]||_0x5295f9[_0x1b70('0xa')],'data2':members[_0x43ebe3][_0x1b70('0x8')]||_0x5295f9[_0x1b70('0x2e')],'data3':members[_0x43ebe3][_0x1b70('0x2f')]||_0x5295f9[_0x1b70('0x30')],'uniqueid':members[_0x43ebe3][_0x1b70('0x5')]||_0x5295f9['uniqueid']});utils['info'](util[_0x1b70('0x3')](_0x1b70('0x31'),_0x5295f9['uniqueid'],members[_0x43ebe3][_0x1b70('0x2d')],members[_0x43ebe3][_0x1b70('0x8')],members[_0x43ebe3][_0x1b70('0x2f')]));if(members[_0x43ebe3][_0x1b70('0x23')]){writeDB(members[_0x43ebe3]);}}}if(_0x5295f9[_0x1b70('0x32')]){var _0x220470=_0x5295f9[_0x1b70('0x32')][_0x1b70('0x10')]('-')[0x0];if(!_[_0x1b70('0x22')](members[_0x220470])){members[_0x220470]=_[_0x1b70('0x2c')](members[_0x220470],{'data1':members[_0x220470]['data1']||_0x5295f9[_0x1b70('0xa')],'data2':members[_0x220470][_0x1b70('0x8')]||_0x5295f9[_0x1b70('0x2e')],'data3':members[_0x220470][_0x1b70('0x2f')]||_0x5295f9[_0x1b70('0x30')],'uniqueid':members[_0x220470][_0x1b70('0x5')]||_0x5295f9[_0x1b70('0x5')]});utils[_0x1b70('0x2')](util[_0x1b70('0x3')](_0x1b70('0x31'),_0x5295f9['uniqueid'],members[_0x220470][_0x1b70('0x2d')],members[_0x220470][_0x1b70('0x8')],members[_0x220470][_0x1b70('0x2f')]));if(members[_0x220470]['exitAt']){writeDB(members[_0x220470]);}}}}catch(_0x754d26){utils['error'](util[_0x1b70('0x3')](_0x1b70('0x2b'),_0x5295f9['uniqueid']),_0x754d26);}};
\ No newline at end of file
index 34c2763..c3a8d21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec80=['reason','transfereeuniqueid','BLIND','transferexten','extension','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','attendedtransfer','origtransfereruniqueid','secondtransfererlinkedid','origtransfererexten','transfertype','ATTENDED','ATTENDEDTRANSFER','origtransfererlinkedid','transfereelinkedid','queuecallerenterreason','transfertargetuniqueid','calleridname','queuecallerjoinAt','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfererexten','transferuniqueid','secondtransfereruniqueid','transfertargetlinkedid','clone','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','[%s][queues][musiconholdstop]','lodash','util','./utils','info','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','lastAssignedTo','calleridnum','accountcode','queuecallerexitreason','queue','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','debug','format','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','assign','now','error','[%s][queues][queuecallerjoin]','hangup','isNil','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercomplete','queuecallercompleteAt','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','varset','value','CONTINUE','queuecallerabandonAt','queuecallerexitAt','toUpperCase','queueposition','EXITWITHKEY','[%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','holdtime','diffTime','position','count','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','assigned','[%s][queues][agentcomplete]','transfer'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0xec80,0x144));var _0x0ec8=function(_0x148073,_0x37dbaa){_0x148073=_0x148073-0x0;var _0x30ba58=_0xec80[_0x148073];return _0x30ba58;};'use strict';var _=require(_0x0ec8('0x0'));var util=require(_0x0ec8('0x1'));var utils=require(_0x0ec8('0x2'));var queues={};function writeDB(_0x2267f0){utils[_0x0ec8('0x3')](util['format'](_0x0ec8('0x4'),_0x2267f0[_0x0ec8('0x5')],_0x2267f0[_0x0ec8('0x6')],_0x2267f0['queue'],_0x2267f0[_0x0ec8('0x7')],_0x2267f0[_0x0ec8('0x8')],_0x2267f0[_0x0ec8('0x9')],_0x2267f0[_0x0ec8('0xa')]));if(_0x2267f0[_0x0ec8('0xb')]){utils['getVoiceQueueByName'](_0x2267f0[_0x0ec8('0xb')])['then'](function(_0x598b5c){if(_0x598b5c){_0x2267f0[_0x0ec8('0xc')]=_0x598b5c[_0x0ec8('0xc')];}utils[_0x0ec8('0xd')](_0x0ec8('0xe'),_0x2267f0);});}else{utils[_0x0ec8('0xd')]('CreateVoiceQueueReport',_0x2267f0);}if(_0x2267f0[_0x0ec8('0xf')]){delete queues[_0x2267f0[_0x0ec8('0xf')]];}else{delete queues[_0x2267f0['uniqueid']];}}exports[_0x0ec8('0x10')]=function(_0x3643bb){try{utils[_0x0ec8('0x11')](util['format']('[%s][queues][queuecallerjoin]',_0x3643bb[_0x0ec8('0x5')]),_0x3643bb);utils[_0x0ec8('0x3')](util[_0x0ec8('0x12')](_0x0ec8('0x13'),_0x3643bb[_0x0ec8('0x5')],_0x3643bb[_0x0ec8('0xb')],_0x3643bb['position']));queues[_0x3643bb[_0x0ec8('0x5')]]=_[_0x0ec8('0x14')](_0x3643bb,{'originalposition':_0x3643bb['position'],'queuecallerjoinAt':utils[_0x0ec8('0x15')](),'mohtime':0x0});}catch(_0x5be643){utils[_0x0ec8('0x16')](util[_0x0ec8('0x12')](_0x0ec8('0x17'),_0x3643bb[_0x0ec8('0x5')]),_0x5be643);}};exports[_0x0ec8('0x18')]=function(_0x83133e){try{if(!_[_0x0ec8('0x19')](queues[_0x83133e[_0x0ec8('0x5')]])){utils[_0x0ec8('0x11')](util['format'](_0x0ec8('0x1a'),_0x83133e[_0x0ec8('0x5')]),_0x83133e);if(queues[_0x83133e['uniqueid']][_0x0ec8('0x1b')]){if(!queues[_0x83133e[_0x0ec8('0x5')]][_0x0ec8('0x1c')]&&!queues[_0x83133e[_0x0ec8('0x5')]][_0x0ec8('0x1d')]){queues[_0x83133e[_0x0ec8('0x5')]][_0x0ec8('0x1e')]=!![];queues[_0x83133e[_0x0ec8('0x5')]][_0x0ec8('0x1f')]=utils[_0x0ec8('0x15')]();queues[_0x83133e[_0x0ec8('0x5')]][_0x0ec8('0xa')]=_0x0ec8('0x20');}utils['info'](util[_0x0ec8('0x12')](_0x0ec8('0x21'),_0x83133e['uniqueid'],queues[_0x83133e[_0x0ec8('0x5')]][_0x0ec8('0x22')],queues[_0x83133e['uniqueid']][_0x0ec8('0xa')]));writeDB(queues[_0x83133e[_0x0ec8('0x5')]]);}else if(queues[_0x83133e['uniqueid']][_0x0ec8('0xf')]){utils['info'](util[_0x0ec8('0x12')](_0x0ec8('0x23'),_0x83133e[_0x0ec8('0x5')],queues[_0x83133e[_0x0ec8('0x5')]][_0x0ec8('0x22')],queues[_0x83133e[_0x0ec8('0x5')]]['transfereduniqueid']));queues[queues[_0x83133e[_0x0ec8('0x5')]][_0x0ec8('0xf')]]=queues[_0x83133e[_0x0ec8('0x5')]];queues[queues[_0x83133e[_0x0ec8('0x5')]][_0x0ec8('0xf')]]['queuecallerenterreason']=0x2;delete queues[_0x83133e['uniqueid']];}}}catch(_0x4634a2){utils['error'](util[_0x0ec8('0x12')](_0x0ec8('0x1a'),_0x83133e[_0x0ec8('0x5')]),_0x4634a2);}};exports[_0x0ec8('0x24')]=function(_0x514f62){try{utils[_0x0ec8('0x11')](util['format']('[%s][queues][varset]',_0x514f62['uniqueid']),_0x514f62);if(!_[_0x0ec8('0x19')](_0x514f62['variable']['queuestatus'])&&_0x514f62[_0x0ec8('0x25')]['toUpperCase']()!==_0x0ec8('0x26')){if(!_['isNil'](queues[_0x514f62[_0x0ec8('0x5')]])){queues[_0x514f62[_0x0ec8('0x5')]]['queuecallerabandon']=![];queues[_0x514f62[_0x0ec8('0x5')]][_0x0ec8('0x27')]=null;queues[_0x514f62[_0x0ec8('0x5')]][_0x0ec8('0x1d')]=!![];queues[_0x514f62[_0x0ec8('0x5')]][_0x0ec8('0x28')]=utils['now']();queues[_0x514f62[_0x0ec8('0x5')]][_0x0ec8('0xa')]=_0x514f62['value'][_0x0ec8('0x29')]();utils[_0x0ec8('0x3')](util['format']('[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s',_0x514f62['uniqueid'],queues[_0x514f62[_0x0ec8('0x5')]]['name'],_0x514f62['value'],queues[_0x514f62[_0x0ec8('0x5')]][_0x0ec8('0xa')]));writeDB(queues[_0x514f62[_0x0ec8('0x5')]]);}}else if(!_[_0x0ec8('0x19')](_0x514f62['variable'][_0x0ec8('0x2a')])){if(!_[_0x0ec8('0x19')](queues[_0x514f62[_0x0ec8('0x5')]])&&!queues[_0x514f62[_0x0ec8('0x5')]]['queuecallerabandon']){queues[_0x514f62[_0x0ec8('0x5')]][_0x0ec8('0x1c')]=![];queues[_0x514f62[_0x0ec8('0x5')]]['queuecallerabandonAt']=null;queues[_0x514f62[_0x0ec8('0x5')]][_0x0ec8('0x1d')]=!![];queues[_0x514f62[_0x0ec8('0x5')]][_0x0ec8('0x28')]=utils['now']();queues[_0x514f62['uniqueid']][_0x0ec8('0xa')]=_0x0ec8('0x2b');utils[_0x0ec8('0x3')](util['format']('[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s',_0x514f62[_0x0ec8('0x5')],queues[_0x514f62[_0x0ec8('0x5')]][_0x0ec8('0x22')],_0x514f62['value'],queues[_0x514f62[_0x0ec8('0x5')]]['queuecallerexitreason']));}}}catch(_0x2e9788){utils['error'](util[_0x0ec8('0x12')]('[%s][queues][varset]',_0x514f62[_0x0ec8('0x5')]),_0x2e9788);}};exports[_0x0ec8('0x1c')]=function(_0x1c1c4c){try{if(!_[_0x0ec8('0x19')](queues[_0x1c1c4c[_0x0ec8('0x5')]])){utils[_0x0ec8('0x11')](util[_0x0ec8('0x12')](_0x0ec8('0x2c'),_0x1c1c4c[_0x0ec8('0x5')]),_0x1c1c4c);queues[_0x1c1c4c[_0x0ec8('0x5')]]['queuecallerexit']=![];queues[_0x1c1c4c[_0x0ec8('0x5')]][_0x0ec8('0x28')]=null;queues[_0x1c1c4c[_0x0ec8('0x5')]][_0x0ec8('0x1c')]=!![];queues[_0x1c1c4c[_0x0ec8('0x5')]][_0x0ec8('0x27')]=utils['now']();queues[_0x1c1c4c[_0x0ec8('0x5')]][_0x0ec8('0xa')]=_0x0ec8('0x2d');utils[_0x0ec8('0x3')](util[_0x0ec8('0x12')](_0x0ec8('0x2e'),_0x1c1c4c[_0x0ec8('0x5')],queues[_0x1c1c4c[_0x0ec8('0x5')]][_0x0ec8('0x22')],queues[_0x1c1c4c[_0x0ec8('0x5')]][_0x0ec8('0xa')]));}}catch(_0x4d44dc){utils['error'](util[_0x0ec8('0x12')]('[%s][queues][queuecallerabandon]',_0x1c1c4c[_0x0ec8('0x5')]),_0x4d44dc);}};exports[_0x0ec8('0x2f')]=function(_0x40692f){try{if(!_[_0x0ec8('0x19')](queues[_0x40692f[_0x0ec8('0x5')]])){utils[_0x0ec8('0x11')](util[_0x0ec8('0x12')](_0x0ec8('0x30'),_0x40692f[_0x0ec8('0x5')]),_0x40692f);utils[_0x0ec8('0x3')](util['format'](_0x0ec8('0x31'),_0x40692f[_0x0ec8('0x5')],queues[_0x40692f[_0x0ec8('0x5')]][_0x0ec8('0x22')],_0x40692f[_0x0ec8('0x32')],_0x40692f[_0x0ec8('0x33')]));queues[_0x40692f[_0x0ec8('0x5')]]['queuecallerleave']=!![];queues[_0x40692f[_0x0ec8('0x5')]][_0x0ec8('0x1b')]=utils[_0x0ec8('0x15')]();queues[_0x40692f[_0x0ec8('0x5')]][_0x0ec8('0x34')]=utils[_0x0ec8('0x35')](queues[_0x40692f['uniqueid']][_0x0ec8('0x1b')],queues[_0x40692f[_0x0ec8('0x5')]]['queuecallerjoinAt']);queues[_0x40692f['uniqueid']][_0x0ec8('0x36')]=_0x40692f['position'];queues[_0x40692f[_0x0ec8('0x5')]][_0x0ec8('0x37')]=_0x40692f[_0x0ec8('0x37')];queues[_0x40692f[_0x0ec8('0x5')]][_0x0ec8('0x32')]=_0x40692f[_0x0ec8('0x32')];queues[_0x40692f[_0x0ec8('0x5')]][_0x0ec8('0x33')]=_0x40692f[_0x0ec8('0x33')];}}catch(_0x435673){utils[_0x0ec8('0x16')](util[_0x0ec8('0x12')]('[%s][queues][queuecallerleave]',_0x40692f['uniqueid']),_0x435673);}};exports[_0x0ec8('0x38')]=function(_0x7ccf06){try{if(!_[_0x0ec8('0x19')](queues[_0x7ccf06[_0x0ec8('0x5')]])){utils[_0x0ec8('0x11')](util[_0x0ec8('0x12')](_0x0ec8('0x39'),_0x7ccf06['uniqueid']),_0x7ccf06);utils['info'](util['format'](_0x0ec8('0x3a'),_0x7ccf06['uniqueid'],queues[_0x7ccf06[_0x0ec8('0x5')]][_0x0ec8('0x22')],_0x7ccf06[_0x0ec8('0x3b')],_0x7ccf06[_0x0ec8('0x3c')]));queues[_0x7ccf06['uniqueid']][_0x0ec8('0x1c')]=![];queues[_0x7ccf06[_0x0ec8('0x5')]][_0x0ec8('0x1c')]=![];queues[_0x7ccf06[_0x0ec8('0x5')]][_0x0ec8('0x27')]=null;queues[_0x7ccf06[_0x0ec8('0x5')]][_0x0ec8('0x1d')]=![];queues[_0x7ccf06['uniqueid']][_0x0ec8('0xa')]=null;queues[_0x7ccf06['uniqueid']][_0x0ec8('0x28')]=null;queues[_0x7ccf06[_0x0ec8('0x5')]][_0x0ec8('0x3d')]=!![];queues[_0x7ccf06[_0x0ec8('0x5')]][_0x0ec8('0x9')]=_0x7ccf06[_0x0ec8('0x3c')];queues[_0x7ccf06[_0x0ec8('0x5')]]['lastAssignedTo']=_0x7ccf06[_0x0ec8('0x3b')];}}catch(_0x20b70f){utils[_0x0ec8('0x16')](util['format'](_0x0ec8('0x39'),_0x7ccf06[_0x0ec8('0x5')]),_0x20b70f);}};exports['agentcomplete']=function(_0x12e599){try{if(!_['isNil'](queues[_0x12e599[_0x0ec8('0x5')]])){if(queues[_0x12e599[_0x0ec8('0x5')]][_0x0ec8('0x1b')]){utils[_0x0ec8('0x11')](util[_0x0ec8('0x12')](_0x0ec8('0x3e'),_0x12e599[_0x0ec8('0x5')]),_0x12e599);queues[_0x12e599[_0x0ec8('0x5')]]['queuecallerabandon']=![];queues[_0x12e599[_0x0ec8('0x5')]][_0x0ec8('0x1c')]=![];queues[_0x12e599[_0x0ec8('0x5')]][_0x0ec8('0x27')]=null;queues[_0x12e599[_0x0ec8('0x5')]]['queuecallerexit']=![];queues[_0x12e599[_0x0ec8('0x5')]][_0x0ec8('0x28')]=null;queues[_0x12e599[_0x0ec8('0x5')]][_0x0ec8('0x3d')]=!![];queues[_0x12e599[_0x0ec8('0x5')]][_0x0ec8('0x7')]=_0x12e599[_0x0ec8('0x3b')];queues[_0x12e599[_0x0ec8('0x5')]][_0x0ec8('0x1e')]=!![];queues[_0x12e599[_0x0ec8('0x5')]][_0x0ec8('0x1f')]=utils[_0x0ec8('0x15')]();if(_0x12e599['reason']==_0x0ec8('0x3f')){if(!queues[_0x12e599[_0x0ec8('0x5')]][_0x0ec8('0x3f')]){queues[_0x12e599[_0x0ec8('0x5')]][_0x0ec8('0xa')]='TRANSFER';}}else{queues[_0x12e599['uniqueid']]['queuecallerexitreason']='COMPLETEDBY'+_0x12e599[_0x0ec8('0x40')][_0x0ec8('0x29')]();}utils['info'](util[_0x0ec8('0x12')]('[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s',_0x12e599[_0x0ec8('0x5')],queues[_0x12e599[_0x0ec8('0x5')]][_0x0ec8('0x22')],_0x12e599[_0x0ec8('0x3b')],queues[_0x12e599['uniqueid']][_0x0ec8('0xa')]));writeDB(queues[_0x12e599[_0x0ec8('0x5')]]);}}}catch(_0x4f11c6){utils[_0x0ec8('0x16')](util['format'](_0x0ec8('0x3e'),_0x12e599[_0x0ec8('0x5')]),_0x4f11c6);}};exports['blindtransfer']=function(_0x4ed37f){try{if(!_['isNil'](queues[_0x4ed37f['transfereeuniqueid']])){utils['debug'](util[_0x0ec8('0x12')]('[%s][queues][blindtransfer]',_0x4ed37f[_0x0ec8('0x5')]),_0x4ed37f);queues[_0x4ed37f[_0x0ec8('0x41')]][_0x0ec8('0x3f')]=!![];queues[_0x4ed37f[_0x0ec8('0x41')]]['transfertype']=_0x0ec8('0x42');queues[_0x4ed37f[_0x0ec8('0x41')]][_0x0ec8('0x43')]=_0x4ed37f[_0x0ec8('0x44')];queues[_0x4ed37f[_0x0ec8('0x41')]]['transferuniqueid']=_0x4ed37f['transfereeuniqueid'];queues[_0x4ed37f['transfereeuniqueid']][_0x0ec8('0xa')]=_0x0ec8('0x45');utils[_0x0ec8('0x3')](util['format'](_0x0ec8('0x46'),_0x4ed37f[_0x0ec8('0x5')],queues[_0x4ed37f[_0x0ec8('0x41')]][_0x0ec8('0x22')],_0x4ed37f[_0x0ec8('0x41')],_0x4ed37f['extension']));}}catch(_0x1978e4){utils[_0x0ec8('0x16')](util[_0x0ec8('0x12')]('[%s][queues][blindtransfer]',_0x4ed37f['uniqueid']),_0x1978e4);}};exports[_0x0ec8('0x47')]=function(_0x419d9e){try{utils[_0x0ec8('0x11')](util[_0x0ec8('0x12')]('[%s][queues][attendedtransfer]',_0x419d9e[_0x0ec8('0x48')]),_0x419d9e);if(_0x419d9e[_0x0ec8('0x48')]==_0x419d9e['origtransfererlinkedid']){if(!_[_0x0ec8('0x19')](queues[_0x419d9e['secondtransfererlinkedid']])){utils[_0x0ec8('0x3')](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x419d9e[_0x0ec8('0x48')],queues[_0x419d9e[_0x0ec8('0x49')]]['name'],_0x419d9e[_0x0ec8('0x4a')]));queues[_0x419d9e[_0x0ec8('0x49')]][_0x0ec8('0x3f')]=!![];queues[_0x419d9e['secondtransfererlinkedid']][_0x0ec8('0x4b')]=_0x0ec8('0x4c');queues[_0x419d9e[_0x0ec8('0x49')]][_0x0ec8('0x43')]=_0x419d9e[_0x0ec8('0x4a')];queues[_0x419d9e[_0x0ec8('0x49')]]['transferuniqueid']=_0x419d9e[_0x0ec8('0x48')];queues[_0x419d9e[_0x0ec8('0x49')]][_0x0ec8('0xa')]=_0x0ec8('0x4d');}if(!_[_0x0ec8('0x19')](queues[_0x419d9e[_0x0ec8('0x4e')]])){if(_0x419d9e[_0x0ec8('0x4f')]&&queues[_0x419d9e[_0x0ec8('0x4f')]]){queues[_0x419d9e[_0x0ec8('0x4f')]][_0x0ec8('0x50')]=0x1;queues[_0x419d9e['transfereeuniqueid']]=_['clone'](queues[_0x419d9e[_0x0ec8('0x4f')]]);queues[_0x419d9e[_0x0ec8('0x41')]][_0x0ec8('0xf')]=_0x419d9e[_0x0ec8('0x51')];queues[_0x419d9e[_0x0ec8('0x41')]][_0x0ec8('0x50')]=0x2;queues[_0x419d9e[_0x0ec8('0x41')]][_0x0ec8('0x8')]=queues[_0x419d9e['secondtransfererlinkedid']][_0x0ec8('0x8')];queues[_0x419d9e[_0x0ec8('0x41')]][_0x0ec8('0x52')]=queues[_0x419d9e[_0x0ec8('0x49')]][_0x0ec8('0x52')];queues[_0x419d9e['transfereeuniqueid']][_0x0ec8('0x53')]=utils[_0x0ec8('0x15')]();queues[_0x419d9e[_0x0ec8('0x41')]][_0x0ec8('0x1b')]=utils['now']();queues[_0x419d9e['transfereeuniqueid']]['holdtime']=0x0;queues[_0x419d9e[_0x0ec8('0x41')]][_0x0ec8('0x54')]=0x0;utils['info'](util[_0x0ec8('0x12')]('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x419d9e[_0x0ec8('0x48')],queues[_0x419d9e[_0x0ec8('0x41')]]['name'],queues[_0x419d9e[_0x0ec8('0x41')]][_0x0ec8('0x8')],queues[_0x419d9e[_0x0ec8('0x41')]][_0x0ec8('0x52')]));}else{utils[_0x0ec8('0x3')](util[_0x0ec8('0x12')](_0x0ec8('0x55'),_0x419d9e[_0x0ec8('0x48')],queues[_0x419d9e['origtransfererlinkedid']][_0x0ec8('0x22')],_0x419d9e[_0x0ec8('0x49')]));queues[_0x419d9e[_0x0ec8('0x4e')]][_0x0ec8('0xf')]=_0x419d9e['secondtransfererlinkedid'];}}}else if(_0x419d9e['secondtransfereruniqueid']==_0x419d9e['secondtransfererlinkedid']){if(!_['isNil'](queues[_0x419d9e[_0x0ec8('0x4e')]])){utils[_0x0ec8('0x3')](util[_0x0ec8('0x12')]('[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x419d9e[_0x0ec8('0x48')],queues[_0x419d9e['origtransfererlinkedid']]['name'],_0x419d9e['secondtransfereruniqueid'],_0x419d9e['secondtransfererexten']));queues[_0x419d9e['origtransfererlinkedid']]['transfer']=!![];queues[_0x419d9e['origtransfererlinkedid']]['transfertype']=_0x0ec8('0x4c');queues[_0x419d9e[_0x0ec8('0x4e')]][_0x0ec8('0x43')]=_0x419d9e[_0x0ec8('0x56')];queues[_0x419d9e['origtransfererlinkedid']][_0x0ec8('0x57')]=_0x419d9e[_0x0ec8('0x58')];queues[_0x419d9e['origtransfererlinkedid']][_0x0ec8('0xa')]=_0x0ec8('0x4d');}if(!_[_0x0ec8('0x19')](queues[_0x419d9e[_0x0ec8('0x49')]])){if(_0x419d9e[_0x0ec8('0x59')]&&queues[_0x419d9e[_0x0ec8('0x59')]]){queues[_0x419d9e[_0x0ec8('0x59')]]['queuecallerenterreason']=0x1;queues[_0x419d9e['transfertargetuniqueid']]=_[_0x0ec8('0x5a')](queues[_0x419d9e[_0x0ec8('0x59')]]);queues[_0x419d9e[_0x0ec8('0x51')]][_0x0ec8('0xf')]=_0x419d9e[_0x0ec8('0x51')];queues[_0x419d9e['transfertargetuniqueid']][_0x0ec8('0x50')]=0x2;queues[_0x419d9e[_0x0ec8('0x51')]][_0x0ec8('0x8')]=queues[_0x419d9e[_0x0ec8('0x4e')]][_0x0ec8('0x8')];queues[_0x419d9e['transfertargetuniqueid']]['calleridname']=queues[_0x419d9e['origtransfererlinkedid']][_0x0ec8('0x52')];queues[_0x419d9e[_0x0ec8('0x51')]][_0x0ec8('0x53')]=utils[_0x0ec8('0x15')]();queues[_0x419d9e[_0x0ec8('0x51')]]['queuecallerleaveAt']=utils['now']();queues[_0x419d9e['transfertargetuniqueid']][_0x0ec8('0x34')]=0x0;queues[_0x419d9e[_0x0ec8('0x51')]][_0x0ec8('0x54')]=0x0;utils[_0x0ec8('0x3')](util['format'](_0x0ec8('0x5b'),_0x419d9e[_0x0ec8('0x48')],queues[_0x419d9e[_0x0ec8('0x51')]]['name'],queues[_0x419d9e[_0x0ec8('0x51')]]['transfereduniqueid'],queues[_0x419d9e[_0x0ec8('0x51')]][_0x0ec8('0x8')],queues[_0x419d9e[_0x0ec8('0x51')]][_0x0ec8('0x52')]));}else{utils['info'](util[_0x0ec8('0x12')](_0x0ec8('0x55'),_0x419d9e[_0x0ec8('0x48')],queues[_0x419d9e[_0x0ec8('0x49')]][_0x0ec8('0x22')],_0x419d9e['origtransfererlinkedid']));queues[_0x419d9e[_0x0ec8('0x49')]][_0x0ec8('0xf')]=_0x419d9e[_0x0ec8('0x4e')];}}}}catch(_0x4fb5f1){utils[_0x0ec8('0x16')](util[_0x0ec8('0x12')](_0x0ec8('0x5c'),_0x419d9e[_0x0ec8('0x48')]),_0x4fb5f1);}};exports['musiconholdstart']=function(_0x1c059a){try{if(!_[_0x0ec8('0x19')](queues[_0x1c059a[_0x0ec8('0x5')]])){utils[_0x0ec8('0x11')](util[_0x0ec8('0x12')](_0x0ec8('0x5d'),_0x1c059a[_0x0ec8('0x5')]),_0x1c059a);queues[_0x1c059a['uniqueid']][_0x0ec8('0x5e')]=utils[_0x0ec8('0x15')]();utils[_0x0ec8('0x3')](util[_0x0ec8('0x12')](_0x0ec8('0x5f'),_0x1c059a[_0x0ec8('0x5')],queues[_0x1c059a[_0x0ec8('0x5')]]['name'],queues[_0x1c059a[_0x0ec8('0x5')]][_0x0ec8('0x5e')]));}}catch(_0x3679c4){utils['error'](util[_0x0ec8('0x12')](_0x0ec8('0x5d'),_0x1c059a[_0x0ec8('0x5')]),_0x3679c4);}};exports['musiconholdstop']=function(_0x3ff0ca){try{if(!_[_0x0ec8('0x19')](queues[_0x3ff0ca[_0x0ec8('0x5')]])){if(!_[_0x0ec8('0x19')](queues[_0x3ff0ca['uniqueid']][_0x0ec8('0x5e')])){utils['debug'](util[_0x0ec8('0x12')](_0x0ec8('0x60'),_0x3ff0ca[_0x0ec8('0x5')]),_0x3ff0ca);queues[_0x3ff0ca[_0x0ec8('0x5')]][_0x0ec8('0x54')]+=utils['diffTime'](utils['now'](),queues[_0x3ff0ca[_0x0ec8('0x5')]]['musiconholdstartAt']);utils[_0x0ec8('0x3')](util['format']('[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s',_0x3ff0ca['uniqueid'],queues[_0x3ff0ca[_0x0ec8('0x5')]][_0x0ec8('0x22')],queues[_0x3ff0ca[_0x0ec8('0x5')]]['mohtime']));delete queues[_0x3ff0ca[_0x0ec8('0x5')]][_0x0ec8('0x5e')];}}}catch(_0x2e73a1){utils[_0x0ec8('0x16')](util['format'](_0x0ec8('0x60'),_0x3ff0ca[_0x0ec8('0x5')]),_0x2e73a1);}};
\ No newline at end of file
+var _0x9e48=['agentconnect','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','assigned','[%s][queues][agentconnect]','agentcomplete','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','[%s][queues][agentcomplete]','blindtransfer','transfereeuniqueid','[%s][queues][blindtransfer]','BLIND','extension','transferuniqueid','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererlinkedid','origtransfererexten','transfertype','ATTENDED','transferexten','ATTENDEDTRANSFER','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','musiconholdstart','[%s][queues][musiconholdstart]','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstartAt','musiconholdstop','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','[%s][queues][musiconholdstop]','lodash','./utils','info','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','queue','lastAssignedTo','accountcode','queuecallerexitreason','getVoiceQueueByName','then','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','debug','[%s][queues][queuecallerjoin]','position','assign','now','error','hangup','isNil','queuecallerabandon','queuecallerexit','queuecallercomplete','queuecallercompleteAt','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','[%s][queues][hangup]','varset','[%s][queues][varset]','queuestatus','value','toUpperCase','CONTINUE','queuecallerexitAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','variable','queueposition','queuecallerabandonAt','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinename','queuecallerleaveAt','holdtime','diffTime','queuecallerjoinAt','count'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x9e48,0x179));var _0x89e4=function(_0x4895d7,_0x1c2920){_0x4895d7=_0x4895d7-0x0;var _0xc0253b=_0x9e48[_0x4895d7];return _0xc0253b;};'use strict';var _=require(_0x89e4('0x0'));var util=require('util');var utils=require(_0x89e4('0x1'));var queues={};function writeDB(_0x278f07){utils[_0x89e4('0x2')](util[_0x89e4('0x3')](_0x89e4('0x4'),_0x278f07[_0x89e4('0x5')],_0x278f07[_0x89e4('0x6')],_0x278f07[_0x89e4('0x7')],_0x278f07[_0x89e4('0x8')],_0x278f07['calleridnum'],_0x278f07[_0x89e4('0x9')],_0x278f07[_0x89e4('0xa')]));if(_0x278f07[_0x89e4('0x7')]){utils[_0x89e4('0xb')](_0x278f07[_0x89e4('0x7')])[_0x89e4('0xc')](function(_0x5cee48){if(_0x5cee48){_0x278f07['type']=_0x5cee48['type'];}utils[_0x89e4('0xd')](_0x89e4('0xe'),_0x278f07);});}else{utils[_0x89e4('0xd')](_0x89e4('0xe'),_0x278f07);}if(_0x278f07[_0x89e4('0xf')]){delete queues[_0x278f07['transfereduniqueid']];}else{delete queues[_0x278f07[_0x89e4('0x5')]];}}exports[_0x89e4('0x10')]=function(_0x499b53){try{utils[_0x89e4('0x11')](util[_0x89e4('0x3')](_0x89e4('0x12'),_0x499b53[_0x89e4('0x5')]),_0x499b53);utils[_0x89e4('0x2')](util[_0x89e4('0x3')]('[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s',_0x499b53[_0x89e4('0x5')],_0x499b53[_0x89e4('0x7')],_0x499b53[_0x89e4('0x13')]));queues[_0x499b53[_0x89e4('0x5')]]=_[_0x89e4('0x14')](_0x499b53,{'originalposition':_0x499b53['position'],'queuecallerjoinAt':utils[_0x89e4('0x15')](),'mohtime':0x0});}catch(_0x2556d1){utils[_0x89e4('0x16')](util[_0x89e4('0x3')](_0x89e4('0x12'),_0x499b53['uniqueid']),_0x2556d1);}};exports[_0x89e4('0x17')]=function(_0x593a01){try{if(!_[_0x89e4('0x18')](queues[_0x593a01['uniqueid']])){utils['debug'](util[_0x89e4('0x3')]('[%s][queues][hangup]',_0x593a01['uniqueid']),_0x593a01);if(queues[_0x593a01[_0x89e4('0x5')]]['queuecallerleaveAt']){if(!queues[_0x593a01[_0x89e4('0x5')]][_0x89e4('0x19')]&&!queues[_0x593a01[_0x89e4('0x5')]][_0x89e4('0x1a')]){queues[_0x593a01[_0x89e4('0x5')]][_0x89e4('0x1b')]=!![];queues[_0x593a01[_0x89e4('0x5')]][_0x89e4('0x1c')]=utils[_0x89e4('0x15')]();queues[_0x593a01[_0x89e4('0x5')]]['queuecallerexitreason']=_0x89e4('0x1d');}utils[_0x89e4('0x2')](util[_0x89e4('0x3')](_0x89e4('0x1e'),_0x593a01[_0x89e4('0x5')],queues[_0x593a01['uniqueid']][_0x89e4('0x1f')],queues[_0x593a01[_0x89e4('0x5')]][_0x89e4('0xa')]));writeDB(queues[_0x593a01[_0x89e4('0x5')]]);}else if(queues[_0x593a01['uniqueid']][_0x89e4('0xf')]){utils['info'](util['format'](_0x89e4('0x20'),_0x593a01[_0x89e4('0x5')],queues[_0x593a01[_0x89e4('0x5')]][_0x89e4('0x1f')],queues[_0x593a01[_0x89e4('0x5')]]['transfereduniqueid']));queues[queues[_0x593a01['uniqueid']][_0x89e4('0xf')]]=queues[_0x593a01[_0x89e4('0x5')]];queues[queues[_0x593a01[_0x89e4('0x5')]][_0x89e4('0xf')]][_0x89e4('0x21')]=0x2;delete queues[_0x593a01[_0x89e4('0x5')]];}}}catch(_0x29b398){utils[_0x89e4('0x16')](util['format'](_0x89e4('0x22'),_0x593a01[_0x89e4('0x5')]),_0x29b398);}};exports[_0x89e4('0x23')]=function(_0x1e18d0){try{utils['debug'](util[_0x89e4('0x3')](_0x89e4('0x24'),_0x1e18d0[_0x89e4('0x5')]),_0x1e18d0);if(!_[_0x89e4('0x18')](_0x1e18d0['variable'][_0x89e4('0x25')])&&_0x1e18d0[_0x89e4('0x26')][_0x89e4('0x27')]()!==_0x89e4('0x28')){if(!_[_0x89e4('0x18')](queues[_0x1e18d0[_0x89e4('0x5')]])){queues[_0x1e18d0[_0x89e4('0x5')]][_0x89e4('0x19')]=![];queues[_0x1e18d0[_0x89e4('0x5')]]['queuecallerabandonAt']=null;queues[_0x1e18d0[_0x89e4('0x5')]]['queuecallerexit']=!![];queues[_0x1e18d0[_0x89e4('0x5')]][_0x89e4('0x29')]=utils[_0x89e4('0x15')]();queues[_0x1e18d0[_0x89e4('0x5')]]['queuecallerexitreason']=_0x1e18d0[_0x89e4('0x26')][_0x89e4('0x27')]();utils[_0x89e4('0x2')](util[_0x89e4('0x3')](_0x89e4('0x2a'),_0x1e18d0['uniqueid'],queues[_0x1e18d0['uniqueid']][_0x89e4('0x1f')],_0x1e18d0[_0x89e4('0x26')],queues[_0x1e18d0[_0x89e4('0x5')]][_0x89e4('0xa')]));writeDB(queues[_0x1e18d0[_0x89e4('0x5')]]);}}else if(!_[_0x89e4('0x18')](_0x1e18d0[_0x89e4('0x2b')][_0x89e4('0x2c')])){if(!_[_0x89e4('0x18')](queues[_0x1e18d0[_0x89e4('0x5')]])&&!queues[_0x1e18d0['uniqueid']]['queuecallerabandon']){queues[_0x1e18d0[_0x89e4('0x5')]][_0x89e4('0x19')]=![];queues[_0x1e18d0[_0x89e4('0x5')]][_0x89e4('0x2d')]=null;queues[_0x1e18d0[_0x89e4('0x5')]][_0x89e4('0x1a')]=!![];queues[_0x1e18d0[_0x89e4('0x5')]][_0x89e4('0x29')]=utils['now']();queues[_0x1e18d0['uniqueid']]['queuecallerexitreason']=_0x89e4('0x2e');utils['info'](util[_0x89e4('0x3')](_0x89e4('0x2f'),_0x1e18d0[_0x89e4('0x5')],queues[_0x1e18d0[_0x89e4('0x5')]]['name'],_0x1e18d0[_0x89e4('0x26')],queues[_0x1e18d0['uniqueid']]['queuecallerexitreason']));}}}catch(_0x4f7abf){utils[_0x89e4('0x16')](util[_0x89e4('0x3')]('[%s][queues][varset]',_0x1e18d0[_0x89e4('0x5')]),_0x4f7abf);}};exports[_0x89e4('0x19')]=function(_0x436598){try{if(!_[_0x89e4('0x18')](queues[_0x436598[_0x89e4('0x5')]])){utils[_0x89e4('0x11')](util[_0x89e4('0x3')](_0x89e4('0x30'),_0x436598[_0x89e4('0x5')]),_0x436598);queues[_0x436598[_0x89e4('0x5')]][_0x89e4('0x1a')]=![];queues[_0x436598[_0x89e4('0x5')]]['queuecallerexitAt']=null;queues[_0x436598[_0x89e4('0x5')]][_0x89e4('0x19')]=!![];queues[_0x436598[_0x89e4('0x5')]][_0x89e4('0x2d')]=utils[_0x89e4('0x15')]();queues[_0x436598['uniqueid']][_0x89e4('0xa')]='ABANDONED';utils[_0x89e4('0x2')](util[_0x89e4('0x3')](_0x89e4('0x31'),_0x436598[_0x89e4('0x5')],queues[_0x436598[_0x89e4('0x5')]][_0x89e4('0x1f')],queues[_0x436598[_0x89e4('0x5')]]['queuecallerexitreason']));}}catch(_0x364883){utils[_0x89e4('0x16')](util[_0x89e4('0x3')](_0x89e4('0x30'),_0x436598[_0x89e4('0x5')]),_0x364883);}};exports[_0x89e4('0x32')]=function(_0x5cde02){try{if(!_[_0x89e4('0x18')](queues[_0x5cde02[_0x89e4('0x5')]])){utils[_0x89e4('0x11')](util[_0x89e4('0x3')](_0x89e4('0x33'),_0x5cde02[_0x89e4('0x5')]),_0x5cde02);utils[_0x89e4('0x2')](util[_0x89e4('0x3')](_0x89e4('0x34'),_0x5cde02[_0x89e4('0x5')],queues[_0x5cde02[_0x89e4('0x5')]][_0x89e4('0x1f')],_0x5cde02['connectedlinenum'],_0x5cde02[_0x89e4('0x35')]));queues[_0x5cde02[_0x89e4('0x5')]][_0x89e4('0x32')]=!![];queues[_0x5cde02[_0x89e4('0x5')]][_0x89e4('0x36')]=utils[_0x89e4('0x15')]();queues[_0x5cde02['uniqueid']][_0x89e4('0x37')]=utils[_0x89e4('0x38')](queues[_0x5cde02[_0x89e4('0x5')]][_0x89e4('0x36')],queues[_0x5cde02[_0x89e4('0x5')]][_0x89e4('0x39')]);queues[_0x5cde02[_0x89e4('0x5')]][_0x89e4('0x13')]=_0x5cde02[_0x89e4('0x13')];queues[_0x5cde02['uniqueid']][_0x89e4('0x3a')]=_0x5cde02[_0x89e4('0x3a')];queues[_0x5cde02[_0x89e4('0x5')]]['connectedlinenum']=_0x5cde02['connectedlinenum'];queues[_0x5cde02[_0x89e4('0x5')]][_0x89e4('0x35')]=_0x5cde02['connectedlinename'];}}catch(_0x1374e6){utils[_0x89e4('0x16')](util['format']('[%s][queues][queuecallerleave]',_0x5cde02[_0x89e4('0x5')]),_0x1374e6);}};exports[_0x89e4('0x3b')]=function(_0x19da25){try{if(!_[_0x89e4('0x18')](queues[_0x19da25[_0x89e4('0x5')]])){utils['debug'](util[_0x89e4('0x3')]('[%s][queues][agentconnect]',_0x19da25['uniqueid']),_0x19da25);utils['info'](util[_0x89e4('0x3')](_0x89e4('0x3c'),_0x19da25[_0x89e4('0x5')],queues[_0x19da25[_0x89e4('0x5')]][_0x89e4('0x1f')],_0x19da25[_0x89e4('0x3d')],_0x19da25[_0x89e4('0x3e')]));queues[_0x19da25[_0x89e4('0x5')]][_0x89e4('0x19')]=![];queues[_0x19da25[_0x89e4('0x5')]][_0x89e4('0x19')]=![];queues[_0x19da25[_0x89e4('0x5')]][_0x89e4('0x2d')]=null;queues[_0x19da25['uniqueid']]['queuecallerexit']=![];queues[_0x19da25['uniqueid']][_0x89e4('0xa')]=null;queues[_0x19da25['uniqueid']][_0x89e4('0x29')]=null;queues[_0x19da25[_0x89e4('0x5')]][_0x89e4('0x3f')]=!![];queues[_0x19da25[_0x89e4('0x5')]][_0x89e4('0x9')]=_0x19da25['destaccountcode'];queues[_0x19da25['uniqueid']][_0x89e4('0x8')]=_0x19da25[_0x89e4('0x3d')];}}catch(_0x2f45ba){utils[_0x89e4('0x16')](util[_0x89e4('0x3')](_0x89e4('0x40'),_0x19da25[_0x89e4('0x5')]),_0x2f45ba);}};exports[_0x89e4('0x41')]=function(_0x2dc48e){try{if(!_[_0x89e4('0x18')](queues[_0x2dc48e[_0x89e4('0x5')]])){if(queues[_0x2dc48e[_0x89e4('0x5')]][_0x89e4('0x36')]){utils[_0x89e4('0x11')](util[_0x89e4('0x3')]('[%s][queues][agentcomplete]',_0x2dc48e['uniqueid']),_0x2dc48e);queues[_0x2dc48e[_0x89e4('0x5')]][_0x89e4('0x19')]=![];queues[_0x2dc48e[_0x89e4('0x5')]][_0x89e4('0x19')]=![];queues[_0x2dc48e[_0x89e4('0x5')]][_0x89e4('0x2d')]=null;queues[_0x2dc48e[_0x89e4('0x5')]][_0x89e4('0x1a')]=![];queues[_0x2dc48e[_0x89e4('0x5')]][_0x89e4('0x29')]=null;queues[_0x2dc48e[_0x89e4('0x5')]][_0x89e4('0x3f')]=!![];queues[_0x2dc48e[_0x89e4('0x5')]][_0x89e4('0x8')]=_0x2dc48e['membername'];queues[_0x2dc48e[_0x89e4('0x5')]]['queuecallercomplete']=!![];queues[_0x2dc48e[_0x89e4('0x5')]][_0x89e4('0x1c')]=utils[_0x89e4('0x15')]();if(_0x2dc48e[_0x89e4('0x42')]==_0x89e4('0x43')){if(!queues[_0x2dc48e[_0x89e4('0x5')]][_0x89e4('0x43')]){queues[_0x2dc48e['uniqueid']][_0x89e4('0xa')]=_0x89e4('0x44');}}else{queues[_0x2dc48e['uniqueid']]['queuecallerexitreason']=_0x89e4('0x45')+_0x2dc48e[_0x89e4('0x42')][_0x89e4('0x27')]();}utils[_0x89e4('0x2')](util['format'](_0x89e4('0x46'),_0x2dc48e['uniqueid'],queues[_0x2dc48e[_0x89e4('0x5')]][_0x89e4('0x1f')],_0x2dc48e[_0x89e4('0x3d')],queues[_0x2dc48e['uniqueid']]['queuecallerexitreason']));writeDB(queues[_0x2dc48e[_0x89e4('0x5')]]);}}}catch(_0x36d751){utils['error'](util[_0x89e4('0x3')](_0x89e4('0x47'),_0x2dc48e[_0x89e4('0x5')]),_0x36d751);}};exports[_0x89e4('0x48')]=function(_0x36de4b){try{if(!_[_0x89e4('0x18')](queues[_0x36de4b[_0x89e4('0x49')]])){utils[_0x89e4('0x11')](util[_0x89e4('0x3')](_0x89e4('0x4a'),_0x36de4b[_0x89e4('0x5')]),_0x36de4b);queues[_0x36de4b['transfereeuniqueid']][_0x89e4('0x43')]=!![];queues[_0x36de4b[_0x89e4('0x49')]]['transfertype']=_0x89e4('0x4b');queues[_0x36de4b[_0x89e4('0x49')]]['transferexten']=_0x36de4b[_0x89e4('0x4c')];queues[_0x36de4b[_0x89e4('0x49')]][_0x89e4('0x4d')]=_0x36de4b[_0x89e4('0x49')];queues[_0x36de4b[_0x89e4('0x49')]][_0x89e4('0xa')]='BLINDTRANSFER';utils[_0x89e4('0x2')](util[_0x89e4('0x3')]('[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER',_0x36de4b[_0x89e4('0x5')],queues[_0x36de4b['transfereeuniqueid']]['name'],_0x36de4b['transfereeuniqueid'],_0x36de4b[_0x89e4('0x4c')]));}}catch(_0x1c22c5){utils[_0x89e4('0x16')](util['format'](_0x89e4('0x4a'),_0x36de4b[_0x89e4('0x5')]),_0x1c22c5);}};exports[_0x89e4('0x4e')]=function(_0x592e6c){try{utils[_0x89e4('0x11')](util[_0x89e4('0x3')](_0x89e4('0x4f'),_0x592e6c[_0x89e4('0x50')]),_0x592e6c);if(_0x592e6c['origtransfereruniqueid']==_0x592e6c[_0x89e4('0x51')]){if(!_['isNil'](queues[_0x592e6c['secondtransfererlinkedid']])){utils[_0x89e4('0x2')](util['format'](_0x89e4('0x52'),_0x592e6c['origtransfereruniqueid'],queues[_0x592e6c[_0x89e4('0x53')]][_0x89e4('0x1f')],_0x592e6c[_0x89e4('0x54')]));queues[_0x592e6c[_0x89e4('0x53')]][_0x89e4('0x43')]=!![];queues[_0x592e6c['secondtransfererlinkedid']][_0x89e4('0x55')]=_0x89e4('0x56');queues[_0x592e6c[_0x89e4('0x53')]][_0x89e4('0x57')]=_0x592e6c['origtransfererexten'];queues[_0x592e6c[_0x89e4('0x53')]][_0x89e4('0x4d')]=_0x592e6c['origtransfereruniqueid'];queues[_0x592e6c[_0x89e4('0x53')]]['queuecallerexitreason']=_0x89e4('0x58');}if(!_['isNil'](queues[_0x592e6c['origtransfererlinkedid']])){if(_0x592e6c['transfereelinkedid']&&queues[_0x592e6c['transfereelinkedid']]){queues[_0x592e6c[_0x89e4('0x59')]][_0x89e4('0x21')]=0x1;queues[_0x592e6c[_0x89e4('0x49')]]=_[_0x89e4('0x5a')](queues[_0x592e6c[_0x89e4('0x59')]]);queues[_0x592e6c[_0x89e4('0x49')]][_0x89e4('0xf')]=_0x592e6c[_0x89e4('0x5b')];queues[_0x592e6c[_0x89e4('0x49')]][_0x89e4('0x21')]=0x2;queues[_0x592e6c[_0x89e4('0x49')]][_0x89e4('0x5c')]=queues[_0x592e6c[_0x89e4('0x53')]][_0x89e4('0x5c')];queues[_0x592e6c[_0x89e4('0x49')]][_0x89e4('0x5d')]=queues[_0x592e6c[_0x89e4('0x53')]][_0x89e4('0x5d')];queues[_0x592e6c['transfereeuniqueid']]['queuecallerjoinAt']=utils[_0x89e4('0x15')]();queues[_0x592e6c[_0x89e4('0x49')]][_0x89e4('0x36')]=utils[_0x89e4('0x15')]();queues[_0x592e6c[_0x89e4('0x49')]][_0x89e4('0x37')]=0x0;queues[_0x592e6c[_0x89e4('0x49')]]['mohtime']=0x0;utils[_0x89e4('0x2')](util[_0x89e4('0x3')](_0x89e4('0x5e'),_0x592e6c[_0x89e4('0x50')],queues[_0x592e6c[_0x89e4('0x49')]][_0x89e4('0x1f')],queues[_0x592e6c[_0x89e4('0x49')]][_0x89e4('0x5c')],queues[_0x592e6c[_0x89e4('0x49')]][_0x89e4('0x5d')]));}else{utils['info'](util['format'](_0x89e4('0x5f'),_0x592e6c['origtransfereruniqueid'],queues[_0x592e6c[_0x89e4('0x51')]][_0x89e4('0x1f')],_0x592e6c['secondtransfererlinkedid']));queues[_0x592e6c[_0x89e4('0x51')]][_0x89e4('0xf')]=_0x592e6c['secondtransfererlinkedid'];}}}else if(_0x592e6c['secondtransfereruniqueid']==_0x592e6c[_0x89e4('0x53')]){if(!_['isNil'](queues[_0x592e6c['origtransfererlinkedid']])){utils[_0x89e4('0x2')](util[_0x89e4('0x3')](_0x89e4('0x60'),_0x592e6c[_0x89e4('0x50')],queues[_0x592e6c['origtransfererlinkedid']][_0x89e4('0x1f')],_0x592e6c[_0x89e4('0x61')],_0x592e6c[_0x89e4('0x62')]));queues[_0x592e6c[_0x89e4('0x51')]]['transfer']=!![];queues[_0x592e6c[_0x89e4('0x51')]][_0x89e4('0x55')]=_0x89e4('0x56');queues[_0x592e6c[_0x89e4('0x51')]][_0x89e4('0x57')]=_0x592e6c[_0x89e4('0x62')];queues[_0x592e6c[_0x89e4('0x51')]][_0x89e4('0x4d')]=_0x592e6c['secondtransfereruniqueid'];queues[_0x592e6c[_0x89e4('0x51')]][_0x89e4('0xa')]='ATTENDEDTRANSFER';}if(!_[_0x89e4('0x18')](queues[_0x592e6c[_0x89e4('0x53')]])){if(_0x592e6c[_0x89e4('0x63')]&&queues[_0x592e6c['transfertargetlinkedid']]){queues[_0x592e6c[_0x89e4('0x63')]]['queuecallerenterreason']=0x1;queues[_0x592e6c['transfertargetuniqueid']]=_[_0x89e4('0x5a')](queues[_0x592e6c[_0x89e4('0x63')]]);queues[_0x592e6c[_0x89e4('0x5b')]][_0x89e4('0xf')]=_0x592e6c[_0x89e4('0x5b')];queues[_0x592e6c[_0x89e4('0x5b')]]['queuecallerenterreason']=0x2;queues[_0x592e6c['transfertargetuniqueid']][_0x89e4('0x5c')]=queues[_0x592e6c[_0x89e4('0x51')]][_0x89e4('0x5c')];queues[_0x592e6c[_0x89e4('0x5b')]][_0x89e4('0x5d')]=queues[_0x592e6c['origtransfererlinkedid']][_0x89e4('0x5d')];queues[_0x592e6c[_0x89e4('0x5b')]]['queuecallerjoinAt']=utils['now']();queues[_0x592e6c[_0x89e4('0x5b')]][_0x89e4('0x36')]=utils[_0x89e4('0x15')]();queues[_0x592e6c[_0x89e4('0x5b')]][_0x89e4('0x37')]=0x0;queues[_0x592e6c[_0x89e4('0x5b')]][_0x89e4('0x64')]=0x0;utils['info'](util[_0x89e4('0x3')](_0x89e4('0x65'),_0x592e6c[_0x89e4('0x50')],queues[_0x592e6c[_0x89e4('0x5b')]]['name'],queues[_0x592e6c[_0x89e4('0x5b')]][_0x89e4('0xf')],queues[_0x592e6c[_0x89e4('0x5b')]][_0x89e4('0x5c')],queues[_0x592e6c[_0x89e4('0x5b')]][_0x89e4('0x5d')]));}else{utils[_0x89e4('0x2')](util['format'](_0x89e4('0x5f'),_0x592e6c[_0x89e4('0x50')],queues[_0x592e6c[_0x89e4('0x53')]][_0x89e4('0x1f')],_0x592e6c[_0x89e4('0x51')]));queues[_0x592e6c[_0x89e4('0x53')]][_0x89e4('0xf')]=_0x592e6c[_0x89e4('0x51')];}}}}catch(_0x4fcd65){utils[_0x89e4('0x16')](util[_0x89e4('0x3')]('[%s][queues][attendedtransfer]',_0x592e6c['origtransfereruniqueid']),_0x4fcd65);}};exports[_0x89e4('0x66')]=function(_0x18d640){try{if(!_[_0x89e4('0x18')](queues[_0x18d640[_0x89e4('0x5')]])){utils['debug'](util['format'](_0x89e4('0x67'),_0x18d640[_0x89e4('0x5')]),_0x18d640);queues[_0x18d640[_0x89e4('0x5')]]['musiconholdstartAt']=utils[_0x89e4('0x15')]();utils[_0x89e4('0x2')](util[_0x89e4('0x3')](_0x89e4('0x68'),_0x18d640[_0x89e4('0x5')],queues[_0x18d640[_0x89e4('0x5')]][_0x89e4('0x1f')],queues[_0x18d640[_0x89e4('0x5')]][_0x89e4('0x69')]));}}catch(_0x3844c4){utils[_0x89e4('0x16')](util['format']('[%s][queues][musiconholdstart]',_0x18d640[_0x89e4('0x5')]),_0x3844c4);}};exports[_0x89e4('0x6a')]=function(_0x200292){try{if(!_[_0x89e4('0x18')](queues[_0x200292[_0x89e4('0x5')]])){if(!_[_0x89e4('0x18')](queues[_0x200292[_0x89e4('0x5')]]['musiconholdstartAt'])){utils[_0x89e4('0x11')](util['format']('[%s][queues][musiconholdstop]',_0x200292['uniqueid']),_0x200292);queues[_0x200292[_0x89e4('0x5')]]['mohtime']+=utils[_0x89e4('0x38')](utils[_0x89e4('0x15')](),queues[_0x200292[_0x89e4('0x5')]][_0x89e4('0x69')]);utils[_0x89e4('0x2')](util['format'](_0x89e4('0x6b'),_0x200292[_0x89e4('0x5')],queues[_0x200292[_0x89e4('0x5')]][_0x89e4('0x1f')],queues[_0x200292['uniqueid']][_0x89e4('0x64')]));delete queues[_0x200292[_0x89e4('0x5')]]['musiconholdstartAt'];}}}catch(_0x1c1f36){utils['error'](util['format'](_0x89e4('0x6c'),_0x200292['uniqueid']),_0x1c1f36);}};
\ No newline at end of file
index 8c8c712..c420a00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9547=['cdr','split','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','lodash','util','./utils','info','format','[%s][recordings][writeDB]','uniqueid','accountcode','getUserByInternal','then','membername','name','request','CreateVoiceRecording','newchannel','debug','[%s][recordings][newchannel]','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','error','[%s][recordings][newstate]','isNil','[%s][recordings][newstate]\x20context:%s\x20channel:%s','channel','varset','variable','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','.wav49','replace','.WAV','find','monitors','push','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','type','outbound','forEach','newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','startsWith'];(function(_0x2a55f8,_0x540ac4){var _0x245efd=function(_0x4dbc19){while(--_0x4dbc19){_0x2a55f8['push'](_0x2a55f8['shift']());}};_0x245efd(++_0x540ac4);}(_0x9547,0x17c));var _0x7954=function(_0x1499d4,_0x347320){_0x1499d4=_0x1499d4-0x0;var _0x57d6d0=_0x9547[_0x1499d4];return _0x57d6d0;};'use strict';var _=require(_0x7954('0x0'));var util=require(_0x7954('0x1'));var utils=require(_0x7954('0x2'));var recordings={};function writeDB(_0xc7b70b){utils[_0x7954('0x3')](util[_0x7954('0x4')](_0x7954('0x5'),_0xc7b70b[_0x7954('0x6')]));if(_0xc7b70b[_0x7954('0x7')]){utils[_0x7954('0x8')](_0xc7b70b[_0x7954('0x7')])[_0x7954('0x9')](function(_0x567ddc){if(_0x567ddc){_0xc7b70b[_0x7954('0xa')]=_0x567ddc[_0x7954('0xb')];_0xc7b70b['UserId']=_0x567ddc['id'];}utils[_0x7954('0xc')]('CreateVoiceRecording',_0xc7b70b);});}else{utils['request'](_0x7954('0xd'),_0xc7b70b);}}exports[_0x7954('0xe')]=function(_0xc6fda7){try{utils[_0x7954('0xf')](util[_0x7954('0x4')](_0x7954('0x10'),_0xc6fda7[_0x7954('0x6')]),_0xc6fda7);if(_0xc6fda7['uniqueid']==_0xc6fda7[_0x7954('0x11')]){utils[_0x7954('0x3')](util[_0x7954('0x4')](_0x7954('0x12'),_0xc6fda7[_0x7954('0x6')],_0xc6fda7[_0x7954('0x13')],_0xc6fda7['exten']));recordings[_0xc6fda7['uniqueid']]={'uniqueid':_0xc6fda7[_0x7954('0x6')],'accountcode':_0xc6fda7[_0x7954('0x7')],'exten':_0xc6fda7['exten'],'context':_0xc6fda7[_0x7954('0x13')],'channel':_0xc6fda7['channel'],'monitors':[]};}}catch(_0x4cbc6a){utils[_0x7954('0x14')](util[_0x7954('0x4')]('[%s][recordings][newchannel]',_0xc6fda7[_0x7954('0x6')]),_0x4cbc6a);}};exports['newstate']=function(_0x5dc542){try{utils[_0x7954('0xf')](util[_0x7954('0x4')](_0x7954('0x15'),_0x5dc542[_0x7954('0x6')]),_0x5dc542);if(!_[_0x7954('0x16')](recordings[_0x5dc542[_0x7954('0x6')]])&&_0x5dc542['channelstate']==0x6){utils[_0x7954('0x3')](util[_0x7954('0x4')](_0x7954('0x17'),_0x5dc542[_0x7954('0x6')],_0x5dc542[_0x7954('0x13')],_0x5dc542[_0x7954('0x18')]));}else if(!_[_0x7954('0x16')](recordings[_0x5dc542['linkedid']])&&_0x5dc542['channelstate']==0x6&&_0x5dc542[_0x7954('0x13')]!='transfer'){utils[_0x7954('0x3')](util['format']('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x5dc542[_0x7954('0x6')],_0x5dc542['linkedid'],_0x5dc542[_0x7954('0x13')],_0x5dc542['channel']));recordings[_0x5dc542[_0x7954('0x11')]][_0x7954('0x7')]=_0x5dc542[_0x7954('0x7')];}}catch(_0x43bbf1){utils['error'](util[_0x7954('0x4')]('[%s][recordings][newstate]',_0x5dc542[_0x7954('0x6')]),_0x43bbf1);}};exports[_0x7954('0x19')]=function(_0x9f7dd5){try{if(!_[_0x7954('0x16')](_0x9f7dd5[_0x7954('0x1a')])&&!_[_0x7954('0x16')](_0x9f7dd5['variable']['mixmonitor_filename'])){utils[_0x7954('0xf')](util[_0x7954('0x4')](_0x7954('0x1b'),_0x9f7dd5[_0x7954('0x6')]),_0x9f7dd5);utils[_0x7954('0x3')](util['format'](_0x7954('0x1c'),_0x9f7dd5[_0x7954('0x6')],_0x9f7dd5[_0x7954('0x1a')],_0x9f7dd5[_0x7954('0x1d')]));if(_[_0x7954('0x1e')](_0x9f7dd5[_0x7954('0x1d')],_0x7954('0x1f'))){_0x9f7dd5[_0x7954('0x1d')]=_0x9f7dd5['value'][_0x7954('0x20')](_0x7954('0x1f'),_0x7954('0x21'));}if(recordings[_0x9f7dd5[_0x7954('0x11')]]){var _0x587c2a=_[_0x7954('0x22')](recordings[_0x9f7dd5['linkedid']]['monitors'],{'value':_0x9f7dd5[_0x7954('0x1d')]});if(_[_0x7954('0x16')](_0x587c2a)){recordings[_0x9f7dd5['linkedid']][_0x7954('0x23')][_0x7954('0x24')]({'value':_0x9f7dd5['value']});}}}}catch(_0x3e301b){utils[_0x7954('0x14')](util[_0x7954('0x4')](_0x7954('0x1b'),_0x9f7dd5[_0x7954('0x6')]),_0x3e301b);}};exports['hangup']=function(_0xf9688){try{if(!_[_0x7954('0x16')](recordings[_0xf9688[_0x7954('0x6')]])){utils[_0x7954('0xf')](util[_0x7954('0x4')](_0x7954('0x25'),_0xf9688[_0x7954('0x6')]),_0xf9688);utils[_0x7954('0x3')](util[_0x7954('0x4')](_0x7954('0x26'),_0xf9688[_0x7954('0x6')],_0xf9688[_0x7954('0x27')],_0xf9688[_0x7954('0x28')],_0xf9688[_0x7954('0x29')]));recordings[_0xf9688[_0x7954('0x6')]]['calleridnum']=_0xf9688[_0x7954('0x27')];recordings[_0xf9688[_0x7954('0x6')]][_0x7954('0x28')]=_0xf9688[_0x7954('0x28')];recordings[_0xf9688[_0x7954('0x6')]][_0x7954('0x2a')]=_0xf9688['connectedlinenum'];recordings[_0xf9688[_0x7954('0x6')]]['connectedlinename']=_0xf9688[_0x7954('0x2b')];if(recordings[_0xf9688[_0x7954('0x6')]][_0x7954('0x2c')]==_0x7954('0x2d')&&recordings[_0xf9688[_0x7954('0x6')]]['accountcode']){recordings[_0xf9688[_0x7954('0x6')]][_0x7954('0x2a')]=recordings[_0xf9688[_0x7954('0x6')]][_0x7954('0x7')];recordings[_0xf9688['uniqueid']][_0x7954('0x2b')]='';}recordings[_0xf9688[_0x7954('0x6')]][_0x7954('0x23')][_0x7954('0x2e')](function(_0x5c2f90){var _0x2486f1=_['clone'](recordings[_0xf9688[_0x7954('0x6')]]);_0x2486f1[_0x7954('0x1d')]=_0x5c2f90[_0x7954('0x1d')];writeDB(_0x2486f1);});delete recordings[_0xf9688['uniqueid']];}}catch(_0xa6eb1f){utils['error'](util['format'](_0x7954('0x25'),_0xf9688[_0x7954('0x6')]),_0xa6eb1f);}};exports[_0x7954('0x2f')]=function(_0x70a885){try{if(!_[_0x7954('0x16')](recordings[_0x70a885[_0x7954('0x6')]])){utils[_0x7954('0xf')](util['format'](_0x7954('0x30'),_0x70a885[_0x7954('0x6')]),_0x70a885);utils[_0x7954('0x3')](util[_0x7954('0x4')](_0x7954('0x31'),_0x70a885[_0x7954('0x6')],_0x70a885[_0x7954('0x32')],_0x70a885[_0x7954('0x33')]));if(_0x70a885[_0x7954('0x32')][_0x7954('0x34')]()=='set'&&_[_0x7954('0x35')](_0x70a885['appdata'][_0x7954('0x34')](),_0x7954('0x36'))){var _0x828c4d=_0x70a885[_0x7954('0x33')][_0x7954('0x37')]('=');var _0x1a15e5=_0x828c4d[0x0][_0x7954('0x38')](_0x828c4d[0x0][_0x7954('0x39')]('(')+0x1,_0x828c4d[0x0][_0x7954('0x39')](')'));var _0x4470e4=_0x828c4d[0x1];recordings[_0x70a885[_0x7954('0x6')]][_0x1a15e5]=_0x4470e4;}}}catch(_0x3258c8){utils[_0x7954('0x14')](util[_0x7954('0x4')](_0x7954('0x30'),_0x70a885[_0x7954('0x6')]),_0x3258c8);}};exports[_0x7954('0x3a')]=function(_0x2a0169){try{if(!_['isNil'](recordings[_0x2a0169['uniqueid']])){utils[_0x7954('0xf')](util[_0x7954('0x4')](_0x7954('0x3b'),_0x2a0169[_0x7954('0x6')]),_0x2a0169);utils[_0x7954('0x3')](util[_0x7954('0x4')](_0x7954('0x3c'),_0x2a0169[_0x7954('0x6')],_0x2a0169[_0x7954('0x3d')]));recordings[_0x2a0169[_0x7954('0x6')]][_0x7954('0x3d')]=_0x2a0169[_0x7954('0x3d')];}}catch(_0x2eeca7){utils[_0x7954('0x14')](util[_0x7954('0x4')](_0x7954('0x3b'),_0x2a0169[_0x7954('0x6')]),_0x2eeca7);}};
\ No newline at end of file
+var _0xc9ba=['uniqueid','accountcode','getUserByInternal','then','membername','UserId','request','CreateVoiceRecording','newchannel','debug','format','[%s][recordings][newchannel]','linkedid','context','exten','channel','[%s][recordings][newstate]','isNil','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','error','varset','variable','mixmonitor_filename','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','find','monitors','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','type','outbound','forEach','clone','[%s][recordings][hangup]','newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','queue','util','info'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0xc9ba,0xe6));var _0xac9b=function(_0x4057f9,_0x17c5b5){_0x4057f9=_0x4057f9-0x0;var _0x5552b7=_0xc9ba[_0x4057f9];return _0x5552b7;};'use strict';var _=require('lodash');var util=require(_0xac9b('0x0'));var utils=require('./utils');var recordings={};function writeDB(_0x42ce68){utils[_0xac9b('0x1')](util['format']('[%s][recordings][writeDB]',_0x42ce68[_0xac9b('0x2')]));if(_0x42ce68[_0xac9b('0x3')]){utils[_0xac9b('0x4')](_0x42ce68[_0xac9b('0x3')])[_0xac9b('0x5')](function(_0x1df78f){if(_0x1df78f){_0x42ce68[_0xac9b('0x6')]=_0x1df78f['name'];_0x42ce68[_0xac9b('0x7')]=_0x1df78f['id'];}utils[_0xac9b('0x8')](_0xac9b('0x9'),_0x42ce68);});}else{utils[_0xac9b('0x8')](_0xac9b('0x9'),_0x42ce68);}}exports[_0xac9b('0xa')]=function(_0x198fcb){try{utils[_0xac9b('0xb')](util[_0xac9b('0xc')](_0xac9b('0xd'),_0x198fcb[_0xac9b('0x2')]),_0x198fcb);if(_0x198fcb[_0xac9b('0x2')]==_0x198fcb[_0xac9b('0xe')]){utils[_0xac9b('0x1')](util['format']('[%s][recordings][newchannel]\x20context:%s\x20exten:%s',_0x198fcb[_0xac9b('0x2')],_0x198fcb[_0xac9b('0xf')],_0x198fcb[_0xac9b('0x10')]));recordings[_0x198fcb['uniqueid']]={'uniqueid':_0x198fcb[_0xac9b('0x2')],'accountcode':_0x198fcb[_0xac9b('0x3')],'exten':_0x198fcb['exten'],'context':_0x198fcb['context'],'channel':_0x198fcb[_0xac9b('0x11')],'monitors':[]};}}catch(_0x23d99c){utils['error'](util[_0xac9b('0xc')]('[%s][recordings][newchannel]',_0x198fcb[_0xac9b('0x2')]),_0x23d99c);}};exports['newstate']=function(_0x4a0b92){try{utils[_0xac9b('0xb')](util[_0xac9b('0xc')](_0xac9b('0x12'),_0x4a0b92['uniqueid']),_0x4a0b92);if(!_[_0xac9b('0x13')](recordings[_0x4a0b92['uniqueid']])&&_0x4a0b92[_0xac9b('0x14')]==0x6){utils['info'](util[_0xac9b('0xc')](_0xac9b('0x15'),_0x4a0b92[_0xac9b('0x2')],_0x4a0b92['context'],_0x4a0b92[_0xac9b('0x11')]));}else if(!_[_0xac9b('0x13')](recordings[_0x4a0b92[_0xac9b('0xe')]])&&_0x4a0b92[_0xac9b('0x14')]==0x6&&_0x4a0b92['context']!='transfer'){utils['info'](util[_0xac9b('0xc')](_0xac9b('0x16'),_0x4a0b92[_0xac9b('0x2')],_0x4a0b92[_0xac9b('0xe')],_0x4a0b92[_0xac9b('0xf')],_0x4a0b92[_0xac9b('0x11')]));recordings[_0x4a0b92[_0xac9b('0xe')]][_0xac9b('0x3')]=_0x4a0b92[_0xac9b('0x3')];}}catch(_0x2d4a1c){utils[_0xac9b('0x17')](util[_0xac9b('0xc')]('[%s][recordings][newstate]',_0x4a0b92[_0xac9b('0x2')]),_0x2d4a1c);}};exports[_0xac9b('0x18')]=function(_0x12d1af){try{if(!_[_0xac9b('0x13')](_0x12d1af['variable'])&&!_[_0xac9b('0x13')](_0x12d1af[_0xac9b('0x19')][_0xac9b('0x1a')])){utils['debug'](util['format'](_0xac9b('0x1b'),_0x12d1af[_0xac9b('0x2')]),_0x12d1af);utils['info'](util[_0xac9b('0xc')](_0xac9b('0x1c'),_0x12d1af[_0xac9b('0x2')],_0x12d1af[_0xac9b('0x19')],_0x12d1af[_0xac9b('0x1d')]));if(_['endsWith'](_0x12d1af['value'],'.wav49')){_0x12d1af[_0xac9b('0x1d')]=_0x12d1af[_0xac9b('0x1d')]['replace']('.wav49','.WAV');}if(recordings[_0x12d1af[_0xac9b('0xe')]]){var _0xb41aeb=_[_0xac9b('0x1e')](recordings[_0x12d1af[_0xac9b('0xe')]]['monitors'],{'value':_0x12d1af[_0xac9b('0x1d')]});if(_[_0xac9b('0x13')](_0xb41aeb)){recordings[_0x12d1af['linkedid']][_0xac9b('0x1f')]['push']({'value':_0x12d1af['value']});}}}}catch(_0x4172aa){utils[_0xac9b('0x17')](util[_0xac9b('0xc')]('[%s][recordings][varset]',_0x12d1af[_0xac9b('0x2')]),_0x4172aa);}};exports['hangup']=function(_0x53223d){try{if(!_[_0xac9b('0x13')](recordings[_0x53223d[_0xac9b('0x2')]])){utils['debug'](util[_0xac9b('0xc')]('[%s][recordings][hangup]',_0x53223d['uniqueid']),_0x53223d);utils[_0xac9b('0x1')](util[_0xac9b('0xc')](_0xac9b('0x20'),_0x53223d['uniqueid'],_0x53223d[_0xac9b('0x21')],_0x53223d[_0xac9b('0x22')],_0x53223d[_0xac9b('0x23')]));recordings[_0x53223d[_0xac9b('0x2')]][_0xac9b('0x21')]=_0x53223d[_0xac9b('0x21')];recordings[_0x53223d[_0xac9b('0x2')]][_0xac9b('0x22')]=_0x53223d[_0xac9b('0x22')];recordings[_0x53223d[_0xac9b('0x2')]][_0xac9b('0x24')]=_0x53223d[_0xac9b('0x24')];recordings[_0x53223d['uniqueid']][_0xac9b('0x25')]=_0x53223d[_0xac9b('0x25')];if(recordings[_0x53223d[_0xac9b('0x2')]][_0xac9b('0x26')]==_0xac9b('0x27')&&recordings[_0x53223d[_0xac9b('0x2')]][_0xac9b('0x3')]){recordings[_0x53223d[_0xac9b('0x2')]][_0xac9b('0x24')]=recordings[_0x53223d['uniqueid']]['accountcode'];recordings[_0x53223d[_0xac9b('0x2')]][_0xac9b('0x25')]='';}recordings[_0x53223d[_0xac9b('0x2')]][_0xac9b('0x1f')][_0xac9b('0x28')](function(_0x5da84e){var _0x37f046=_[_0xac9b('0x29')](recordings[_0x53223d[_0xac9b('0x2')]]);_0x37f046[_0xac9b('0x1d')]=_0x5da84e['value'];writeDB(_0x37f046);});delete recordings[_0x53223d['uniqueid']];}}catch(_0x435ce2){utils[_0xac9b('0x17')](util['format'](_0xac9b('0x2a'),_0x53223d['uniqueid']),_0x435ce2);}};exports[_0xac9b('0x2b')]=function(_0x555aae){try{if(!_[_0xac9b('0x13')](recordings[_0x555aae['uniqueid']])){utils[_0xac9b('0xb')](util['format'](_0xac9b('0x2c'),_0x555aae['uniqueid']),_0x555aae);utils['info'](util['format'](_0xac9b('0x2d'),_0x555aae[_0xac9b('0x2')],_0x555aae[_0xac9b('0x2e')],_0x555aae[_0xac9b('0x2f')]));if(_0x555aae['application'][_0xac9b('0x30')]()==_0xac9b('0x31')&&_[_0xac9b('0x32')](_0x555aae[_0xac9b('0x2f')]['toLowerCase'](),_0xac9b('0x33'))){var _0x461d6a=_0x555aae[_0xac9b('0x2f')][_0xac9b('0x34')]('=');var _0x3c5a88=_0x461d6a[0x0][_0xac9b('0x35')](_0x461d6a[0x0][_0xac9b('0x36')]('(')+0x1,_0x461d6a[0x0][_0xac9b('0x36')](')'));var _0x42d707=_0x461d6a[0x1];recordings[_0x555aae[_0xac9b('0x2')]][_0x3c5a88]=_0x42d707;}}}catch(_0x3f5460){utils[_0xac9b('0x17')](util[_0xac9b('0xc')]('[%s][recordings][newexten]',_0x555aae[_0xac9b('0x2')]),_0x3f5460);}};exports[_0xac9b('0x37')]=function(_0x1cc265){try{if(!_[_0xac9b('0x13')](recordings[_0x1cc265['uniqueid']])){utils[_0xac9b('0xb')](util[_0xac9b('0xc')](_0xac9b('0x38'),_0x1cc265[_0xac9b('0x2')]),_0x1cc265);utils[_0xac9b('0x1')](util[_0xac9b('0xc')]('[%s][recordings][queuecallerjoin]\x20queue:%s',_0x1cc265[_0xac9b('0x2')],_0x1cc265['queue']));recordings[_0x1cc265['uniqueid']][_0xac9b('0x39')]=_0x1cc265[_0xac9b('0x39')];}}catch(_0x31d7c2){utils[_0xac9b('0x17')](util[_0xac9b('0xc')](_0xac9b('0x38'),_0x1cc265[_0xac9b('0x2')]),_0x31d7c2);}};
\ No newline at end of file
index 04df38f..37c1a50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4501=['origtransfererexten','isNil','transfereechannel','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetaccountcode','transfertargetexten','transfertargetlinkedid','util','./utils','info','format','[%s][transfers][writeDB]\x20type:%s','type','attended','uniqueid','request','CreateVoiceTransferReport','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','blind','transfereruniqueid','error','attendedtransfer','origtransfereruniqueid','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','assign','origtransfererchannel','secondtransfererconnectedlinenum','origtransfereraccountcode','secondtransferercontext','origtransfererlinkedid'];(function(_0x34aec4,_0x3801da){var _0x51e1a7=function(_0x24e87f){while(--_0x24e87f){_0x34aec4['push'](_0x34aec4['shift']());}};_0x51e1a7(++_0x3801da);}(_0x4501,0x1a2));var _0x1450=function(_0x167b9e,_0x15520e){_0x167b9e=_0x167b9e-0x0;var _0x44576d=_0x4501[_0x167b9e];return _0x44576d;};'use strict';var _=require('lodash');var util=require(_0x1450('0x0'));var utils=require(_0x1450('0x1'));function writeDB(_0x53a44d){utils[_0x1450('0x2')](util[_0x1450('0x3')](_0x1450('0x4'),_0x53a44d[_0x1450('0x5')]===_0x1450('0x6')?_0x53a44d['origtransfereruniqueid']:_0x53a44d[_0x1450('0x7')],_0x53a44d[_0x1450('0x5')]));utils[_0x1450('0x8')](_0x1450('0x9'),_0x53a44d);}exports[_0x1450('0xa')]={};exports[_0x1450('0xb')]=function(_0x3fc626){try{utils[_0x1450('0xc')](util[_0x1450('0x3')]('[%s][transfers][blindtransfer]',_0x3fc626[_0x1450('0x7')]),_0x3fc626);utils[_0x1450('0x2')](util[_0x1450('0x3')](_0x1450('0xd'),_0x3fc626[_0x1450('0x7')],_0x3fc626[_0x1450('0xe')],_0x3fc626[_0x1450('0xf')],_0x3fc626[_0x1450('0x10')],_0x3fc626[_0x1450('0x11')]));_0x3fc626[_0x1450('0x5')]=_0x1450('0x12');exports[_0x1450('0xa')][_0x3fc626[_0x1450('0x13')]]=_0x3fc626;writeDB(_0x3fc626);}catch(_0x2d1b27){utils[_0x1450('0x14')](util['format']('[%s][transfers][blindtransfer]',_0x3fc626[_0x1450('0x7')]),_0x2d1b27);}};exports[_0x1450('0x15')]=function(_0x5814a5){try{utils['debug'](util['format']('[%s][transfers][attendedtransfer]',_0x5814a5[_0x1450('0x16')]),_0x5814a5);utils[_0x1450('0x2')](util[_0x1450('0x3')](_0x1450('0x17'),_0x5814a5[_0x1450('0x16')],_0x5814a5[_0x1450('0x18')],_0x5814a5[_0x1450('0x19')],_0x5814a5[_0x1450('0x1a')],_0x5814a5['transfertargetcalleridname']));_0x5814a5=_[_0x1450('0x1b')](_0x5814a5,{'transfererchannel':_0x5814a5[_0x1450('0x1c')],'transferercalleridnum':_0x5814a5[_0x1450('0x18')],'transferercalleridname':_0x5814a5[_0x1450('0x19')],'transfererconnectedlinenum':_0x5814a5[_0x1450('0x1d')],'transfererconnectedlinename':_0x5814a5['secondtransfererconnectedlinename'],'transfereraccountcode':_0x5814a5[_0x1450('0x1e')],'transferercontext':_0x5814a5[_0x1450('0x1f')],'transfererexten':_0x5814a5['secondtransfererexten'],'transfererlinkedid':_0x5814a5[_0x1450('0x20')],'context':_0x5814a5['origtransferercontext'],'extension':_0x5814a5[_0x1450('0x21')],'type':_0x1450('0x6')});if(_[_0x1450('0x22')](_0x5814a5[_0x1450('0x23')])){_0x5814a5=_[_0x1450('0x1b')](_0x5814a5,{'transfereechannel':_0x5814a5['transfertargetchannel'],'transfereecalleridnum':_0x5814a5[_0x1450('0x1a')],'transfereecalleridname':_0x5814a5[_0x1450('0x24')],'transfereeconnectedlinenum':_0x5814a5[_0x1450('0x25')],'transfereeconnectedlinename':_0x5814a5['transfertargetconnectedlinename'],'transfereeaccountcode':_0x5814a5[_0x1450('0x26')],'transfereecontext':_0x5814a5['transfertargetcontext'],'transfereeexten':_0x5814a5[_0x1450('0x27')],'transfereelinkedid':_0x5814a5[_0x1450('0x28')]});}writeDB(_0x5814a5);}catch(_0x1ca0f4){utils[_0x1450('0x14')](util[_0x1450('0x3')]('[%s][transfers][attendedtransfer]',_0x5814a5[_0x1450('0x16')]),_0x1ca0f4);}};
\ No newline at end of file
+var _0xd0ad=['origtransfereruniqueid','uniqueid','request','CreateVoiceTransferReport','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','type','blind','error','attendedtransfer','[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','transfertargetcalleridname','assign','origtransfererchannel','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransferercontext','origtransfererexten','isNil','transfereechannel','transfertargetcalleridnum','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','lodash','util','./utils','info','format','attended'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0xd0ad,0xdb));var _0xdd0a=function(_0x23b146,_0x24958d){_0x23b146=_0x23b146-0x0;var _0x2bc2b1=_0xd0ad[_0x23b146];return _0x2bc2b1;};'use strict';var _=require(_0xdd0a('0x0'));var util=require(_0xdd0a('0x1'));var utils=require(_0xdd0a('0x2'));function writeDB(_0x1d1cb6){utils[_0xdd0a('0x3')](util[_0xdd0a('0x4')]('[%s][transfers][writeDB]\x20type:%s',_0x1d1cb6['type']===_0xdd0a('0x5')?_0x1d1cb6[_0xdd0a('0x6')]:_0x1d1cb6[_0xdd0a('0x7')],_0x1d1cb6['type']));utils[_0xdd0a('0x8')](_0xdd0a('0x9'),_0x1d1cb6);}exports[_0xdd0a('0xa')]={};exports[_0xdd0a('0xb')]=function(_0x52bfd6){try{utils[_0xdd0a('0xc')](util[_0xdd0a('0x4')]('[%s][transfers][blindtransfer]',_0x52bfd6[_0xdd0a('0x7')]),_0x52bfd6);utils[_0xdd0a('0x3')](util[_0xdd0a('0x4')](_0xdd0a('0xd'),_0x52bfd6['uniqueid'],_0x52bfd6[_0xdd0a('0xe')],_0x52bfd6[_0xdd0a('0xf')],_0x52bfd6[_0xdd0a('0x10')],_0x52bfd6['transfereecalleridname']));_0x52bfd6[_0xdd0a('0x11')]=_0xdd0a('0x12');exports[_0xdd0a('0xa')][_0x52bfd6['transfereruniqueid']]=_0x52bfd6;writeDB(_0x52bfd6);}catch(_0xda1fcb){utils[_0xdd0a('0x13')](util[_0xdd0a('0x4')]('[%s][transfers][blindtransfer]',_0x52bfd6[_0xdd0a('0x7')]),_0xda1fcb);}};exports[_0xdd0a('0x14')]=function(_0x8d45e1){try{utils[_0xdd0a('0xc')](util[_0xdd0a('0x4')](_0xdd0a('0x15'),_0x8d45e1[_0xdd0a('0x6')]),_0x8d45e1);utils[_0xdd0a('0x3')](util[_0xdd0a('0x4')](_0xdd0a('0x16'),_0x8d45e1[_0xdd0a('0x6')],_0x8d45e1[_0xdd0a('0x17')],_0x8d45e1['origtransferercalleridname'],_0x8d45e1['transfertargetcalleridnum'],_0x8d45e1[_0xdd0a('0x18')]));_0x8d45e1=_[_0xdd0a('0x19')](_0x8d45e1,{'transfererchannel':_0x8d45e1[_0xdd0a('0x1a')],'transferercalleridnum':_0x8d45e1[_0xdd0a('0x17')],'transferercalleridname':_0x8d45e1[_0xdd0a('0x1b')],'transfererconnectedlinenum':_0x8d45e1[_0xdd0a('0x1c')],'transfererconnectedlinename':_0x8d45e1[_0xdd0a('0x1d')],'transfereraccountcode':_0x8d45e1[_0xdd0a('0x1e')],'transferercontext':_0x8d45e1[_0xdd0a('0x1f')],'transfererexten':_0x8d45e1[_0xdd0a('0x20')],'transfererlinkedid':_0x8d45e1[_0xdd0a('0x21')],'context':_0x8d45e1[_0xdd0a('0x22')],'extension':_0x8d45e1[_0xdd0a('0x23')],'type':_0xdd0a('0x5')});if(_[_0xdd0a('0x24')](_0x8d45e1[_0xdd0a('0x25')])){_0x8d45e1=_['assign'](_0x8d45e1,{'transfereechannel':_0x8d45e1['transfertargetchannel'],'transfereecalleridnum':_0x8d45e1[_0xdd0a('0x26')],'transfereecalleridname':_0x8d45e1['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x8d45e1[_0xdd0a('0x27')],'transfereeconnectedlinename':_0x8d45e1[_0xdd0a('0x28')],'transfereeaccountcode':_0x8d45e1[_0xdd0a('0x29')],'transfereecontext':_0x8d45e1[_0xdd0a('0x2a')],'transfereeexten':_0x8d45e1[_0xdd0a('0x2b')],'transfereelinkedid':_0x8d45e1[_0xdd0a('0x2c')]});}writeDB(_0x8d45e1);}catch(_0x15d6f7){utils['error'](util[_0xdd0a('0x4')]('[%s][transfers][attendedtransfer]',_0x8d45e1['origtransfereruniqueid']),_0x15d6f7);}};
\ No newline at end of file
index b318719..5278bc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6829=['now','isAfter','isBefore','bluebird','jayson/promise','moment','util','client','http','xdr','info','inspect','debug','error','request','then','[utils][request]\x20name:%s','catch','GetUser','internal','interface','[utils][getUser]\x20where:%s','stringify','result','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','[utils][getUserByInternal]','found','notfound','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','name','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s\x20%s','[utils][getVoiceQueueByName]','addTime','add','seconds','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','sumTime'];(function(_0x310504,_0x26ad95){var _0x5b36d0=function(_0x253f28){while(--_0x253f28){_0x310504['push'](_0x310504['shift']());}};_0x5b36d0(++_0x26ad95);}(_0x6829,0xf3));var _0x9682=function(_0xc4001c,_0x1bf8f0){_0xc4001c=_0xc4001c-0x0;var _0x49f7bc=_0x6829[_0xc4001c];return _0x49f7bc;};'use strict';var BPromise=require(_0x9682('0x0'));var jayson=require(_0x9682('0x1'));var moment=require(_0x9682('0x2'));var util=require(_0x9682('0x3'));var client=jayson[_0x9682('0x4')][_0x9682('0x5')]({'port':0x2329});var logger=require('../../config/logger')(_0x9682('0x6'));exports['info']=function(_0x4c738e,_0x55e1a9){logger[_0x9682('0x7')](_0x4c738e,_0x55e1a9?util[_0x9682('0x8')](_0x55e1a9,{'showHidden':![],'depth':null}):'');};exports['debug']=function(_0x1469d1,_0x5f14a5){logger[_0x9682('0x9')](_0x1469d1,_0x5f14a5?util[_0x9682('0x8')](_0x5f14a5,{'showHidden':![],'depth':null}):'');};exports[_0x9682('0xa')]=function(_0x501b3b,_0x3190f0){logger[_0x9682('0xa')](_0x501b3b,_0x3190f0?util[_0x9682('0x8')](_0x3190f0,{'showHidden':![],'depth':null}):'');};exports[_0x9682('0xb')]=function(_0x43b2b4,_0x311d7c){return client[_0x9682('0xb')](_0x43b2b4,{'body':_0x311d7c})[_0x9682('0xc')](function(_0x33134d){logger['debug'](_0x9682('0xd'),_0x43b2b4,_0x33134d?util[_0x9682('0x8')](_0x33134d,{'showHidden':![],'depth':null}):'');})[_0x9682('0xe')](function(_0x24b534){logger[_0x9682('0xa')](_0x9682('0xd'),_0x43b2b4,_0x24b534?util[_0x9682('0x8')](_0x24b534,{'showHidden':![],'depth':null}):'');});};function getUser(_0xcc8a63){return client['request'](_0x9682('0xf'),{'options':{'raw':!![],'attributes':['id',_0x9682('0x10'),'name',_0x9682('0x11')],'where':_0xcc8a63,'limit':0x1}})[_0x9682('0xc')](function(_0x1582f0){logger[_0x9682('0x9')](_0x9682('0x12'),JSON[_0x9682('0x13')](_0xcc8a63),_0x1582f0?util['inspect'](_0x1582f0,{'showHidden':![],'depth':null}):'');return _0x1582f0[_0x9682('0x14')][_0x9682('0x15')]?_0x1582f0['result'][0x0]:null;});}exports[_0x9682('0x16')]=function(_0xc1555d){return new BPromise(function(_0x25eb14,_0x1de916){if(_0xc1555d){return getUser({'internal':_0xc1555d})['then'](function(_0xb6478d){logger['info'](_0x9682('0x17'),_0xc1555d,_0xb6478d?'found':'notfound');return _0x25eb14(_0xb6478d);})[_0x9682('0xe')](function(_0x461307){logger[_0x9682('0xa')](_0x9682('0x18'),_0x461307?util[_0x9682('0x8')](_0x461307,{'showHidden':![],'depth':null}):'');return _0x25eb14(null);});}return _0x25eb14(null);});};exports['getUserByInterface']=function(_0xd5193){return new BPromise(function(_0x164359,_0xd9d97c){if(_0xd5193){return getUser({'interface':_0xd5193})['then'](function(_0xebfdce){logger[_0x9682('0x7')]('[utils][getUserByInterface]\x20interface:%s\x20%s',_0xd5193,_0xebfdce?_0x9682('0x19'):_0x9682('0x1a'));return _0x164359(_0xebfdce);})['catch'](function(_0x2634e7){logger[_0x9682('0xa')](_0x9682('0x1b'),_0x2634e7?util[_0x9682('0x8')](_0x2634e7,{'showHidden':![],'depth':null}):'');return _0x164359(null);});}return _0x164359(null);});};exports[_0x9682('0x1c')]=function(_0x49af57){return new BPromise(function(_0xb29922,_0xcb2b70){if(_0x49af57){return getUser({'name':_0x49af57})[_0x9682('0xc')](function(_0x57bce5){logger[_0x9682('0x7')](_0x9682('0x1d'),_0x49af57,_0x57bce5?_0x9682('0x19'):_0x9682('0x1a'));return _0xb29922(_0x57bce5);})[_0x9682('0xe')](function(_0xc24749){logger[_0x9682('0xa')](_0x9682('0x1e'),_0xc24749?util[_0x9682('0x8')](_0xc24749,{'showHidden':![],'depth':null}):'');return _0xb29922(null);});}return _0xb29922(null);});};exports[_0x9682('0x1f')]=function(_0x43c729){return new BPromise(function(_0x48df78,_0x24cbe9){if(_0x43c729){return client['request'](_0x9682('0x20'),{'options':{'raw':!![],'attributes':['id',_0x9682('0x21'),'type','acw',_0x9682('0x22')],'where':{'name':_0x43c729},'limit':0x1}})[_0x9682('0xc')](function(_0x5d4c3d){logger['debug']('[utils][getVoiceQueueByName]\x20name:%s',_0x43c729,_0x5d4c3d?util[_0x9682('0x8')](_0x5d4c3d,{'showHidden':![],'depth':null}):'');logger[_0x9682('0x7')](_0x9682('0x23'),_0x43c729,_0x5d4c3d?_0x9682('0x19'):'notfound');return _0x48df78(_0x5d4c3d[_0x9682('0x14')][_0x9682('0x15')]?_0x5d4c3d[_0x9682('0x14')][0x0]:null);})['catch'](function(_0x15bdcb){logger[_0x9682('0xa')](_0x9682('0x24'),_0x15bdcb?util['inspect'](_0x15bdcb,{'showHidden':![],'depth':null}):'');return _0x48df78(null);});}return _0x48df78(null);});};exports[_0x9682('0x25')]=function(_0x101fcc,_0x3b95be){return moment(_0x101fcc)[_0x9682('0x26')](_0x3b95be,_0x9682('0x27'))[_0x9682('0x28')](_0x9682('0x29'));};exports[_0x9682('0x2a')]=function(_0x1ad001,_0x25152e){return moment(_0x1ad001)[_0x9682('0x2b')](_0x25152e,_0x9682('0x27'))[_0x9682('0x28')](_0x9682('0x29'));};exports['diffTime']=function(_0x1c3ed6,_0x85aed0){return moment(_0x1c3ed6)['diff'](moment(_0x85aed0),_0x9682('0x27'));};exports[_0x9682('0x2c')]=function(_0x54dfa1,_0x544f2d){return parseInt(_0x54dfa1,0xa)+parseInt(_0x544f2d,0xa);};exports[_0x9682('0x2d')]=function(){return moment()[_0x9682('0x28')](_0x9682('0x29'));};exports['isAfter']=function(_0x1b6278,_0xb815ac){if(_0xb815ac){return moment(_0x1b6278)[_0x9682('0x2e')](_0xb815ac);}return!![];};exports[_0x9682('0x2f')]=function(_0x2a3092,_0x2149c5){if(_0x2149c5){return moment(_0x2a3092)[_0x9682('0x2f')](_0x2149c5);}else if(_0x2a3092){return!![];}return![];};
\ No newline at end of file
+var _0xdc12=['[utils][getVoiceQueueByName]','add','seconds','format','subtractTime','subtract','YYYY-MM-DD\x20HH:mm:ss','diffTime','sumTime','isAfter','bluebird','moment','client','http','../../config/logger','xdr','info','inspect','debug','error','request','internal','name','result','length','getUserByInternal','then','[utils][getUserByInternal]\x20internal:%s\x20%s','notfound','catch','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','found','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','type','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s'];(function(_0xa491f1,_0x5cc5a9){var _0x26cc8e=function(_0x57610d){while(--_0x57610d){_0xa491f1['push'](_0xa491f1['shift']());}};_0x26cc8e(++_0x5cc5a9);}(_0xdc12,0x1c2));var _0x2dc1=function(_0x481821,_0x1b2854){_0x481821=_0x481821-0x0;var _0xec6bba=_0xdc12[_0x481821];return _0xec6bba;};'use strict';var BPromise=require(_0x2dc1('0x0'));var jayson=require('jayson/promise');var moment=require(_0x2dc1('0x1'));var util=require('util');var client=jayson[_0x2dc1('0x2')][_0x2dc1('0x3')]({'port':0x2329});var logger=require(_0x2dc1('0x4'))(_0x2dc1('0x5'));exports[_0x2dc1('0x6')]=function(_0x21b931,_0x563754){logger[_0x2dc1('0x6')](_0x21b931,_0x563754?util[_0x2dc1('0x7')](_0x563754,{'showHidden':![],'depth':null}):'');};exports[_0x2dc1('0x8')]=function(_0x491698,_0x470a7f){logger[_0x2dc1('0x8')](_0x491698,_0x470a7f?util[_0x2dc1('0x7')](_0x470a7f,{'showHidden':![],'depth':null}):'');};exports[_0x2dc1('0x9')]=function(_0x56ec0a,_0x183ebf){logger[_0x2dc1('0x9')](_0x56ec0a,_0x183ebf?util[_0x2dc1('0x7')](_0x183ebf,{'showHidden':![],'depth':null}):'');};exports['request']=function(_0x4edd3c,_0x8ccbee){return client[_0x2dc1('0xa')](_0x4edd3c,{'body':_0x8ccbee})['then'](function(_0x3ef9b1){logger['debug']('[utils][request]\x20name:%s',_0x4edd3c,_0x3ef9b1?util['inspect'](_0x3ef9b1,{'showHidden':![],'depth':null}):'');})['catch'](function(_0x3004e8){logger[_0x2dc1('0x9')]('[utils][request]\x20name:%s',_0x4edd3c,_0x3004e8?util[_0x2dc1('0x7')](_0x3004e8,{'showHidden':![],'depth':null}):'');});};function getUser(_0x36b236){return client[_0x2dc1('0xa')]('GetUser',{'options':{'raw':!![],'attributes':['id',_0x2dc1('0xb'),_0x2dc1('0xc'),'interface'],'where':_0x36b236,'limit':0x1}})['then'](function(_0x309502){logger[_0x2dc1('0x8')]('[utils][getUser]\x20where:%s',JSON['stringify'](_0x36b236),_0x309502?util[_0x2dc1('0x7')](_0x309502,{'showHidden':![],'depth':null}):'');return _0x309502[_0x2dc1('0xd')][_0x2dc1('0xe')]?_0x309502[_0x2dc1('0xd')][0x0]:null;});}exports[_0x2dc1('0xf')]=function(_0x1933c2){return new BPromise(function(_0x59db7e,_0xc9f769){if(_0x1933c2){return getUser({'internal':_0x1933c2})[_0x2dc1('0x10')](function(_0x6a112f){logger[_0x2dc1('0x6')](_0x2dc1('0x11'),_0x1933c2,_0x6a112f?'found':_0x2dc1('0x12'));return _0x59db7e(_0x6a112f);})[_0x2dc1('0x13')](function(_0x5eb420){logger[_0x2dc1('0x9')](_0x2dc1('0x14'),_0x5eb420?util[_0x2dc1('0x7')](_0x5eb420,{'showHidden':![],'depth':null}):'');return _0x59db7e(null);});}return _0x59db7e(null);});};exports[_0x2dc1('0x15')]=function(_0x4bfd2e){return new BPromise(function(_0x5a762e,_0x19f493){if(_0x4bfd2e){return getUser({'interface':_0x4bfd2e})['then'](function(_0x345560){logger[_0x2dc1('0x6')](_0x2dc1('0x16'),_0x4bfd2e,_0x345560?_0x2dc1('0x17'):_0x2dc1('0x12'));return _0x5a762e(_0x345560);})['catch'](function(_0x359d17){logger[_0x2dc1('0x9')](_0x2dc1('0x18'),_0x359d17?util[_0x2dc1('0x7')](_0x359d17,{'showHidden':![],'depth':null}):'');return _0x5a762e(null);});}return _0x5a762e(null);});};exports[_0x2dc1('0x19')]=function(_0x9cae6e){return new BPromise(function(_0x3d0b7e,_0x230873){if(_0x9cae6e){return getUser({'name':_0x9cae6e})[_0x2dc1('0x10')](function(_0x48f1c6){logger['info'](_0x2dc1('0x1a'),_0x9cae6e,_0x48f1c6?'found':'notfound');return _0x3d0b7e(_0x48f1c6);})['catch'](function(_0xa8ce20){logger['error'](_0x2dc1('0x1b'),_0xa8ce20?util[_0x2dc1('0x7')](_0xa8ce20,{'showHidden':![],'depth':null}):'');return _0x3d0b7e(null);});}return _0x3d0b7e(null);});};exports[_0x2dc1('0x1c')]=function(_0x4fee39){return new BPromise(function(_0x527adf,_0x4a9745){if(_0x4fee39){return client[_0x2dc1('0xa')]('GetVoiceQueue',{'options':{'raw':!![],'attributes':['id',_0x2dc1('0xc'),_0x2dc1('0x1d'),_0x2dc1('0x1e'),_0x2dc1('0x1f')],'where':{'name':_0x4fee39},'limit':0x1}})['then'](function(_0x4f2c21){logger[_0x2dc1('0x8')](_0x2dc1('0x20'),_0x4fee39,_0x4f2c21?util['inspect'](_0x4f2c21,{'showHidden':![],'depth':null}):'');logger[_0x2dc1('0x6')](_0x2dc1('0x21'),_0x4fee39,_0x4f2c21?_0x2dc1('0x17'):_0x2dc1('0x12'));return _0x527adf(_0x4f2c21[_0x2dc1('0xd')][_0x2dc1('0xe')]?_0x4f2c21[_0x2dc1('0xd')][0x0]:null);})[_0x2dc1('0x13')](function(_0x250891){logger[_0x2dc1('0x9')](_0x2dc1('0x22'),_0x250891?util[_0x2dc1('0x7')](_0x250891,{'showHidden':![],'depth':null}):'');return _0x527adf(null);});}return _0x527adf(null);});};exports['addTime']=function(_0x696ef3,_0x2b62e8){return moment(_0x696ef3)[_0x2dc1('0x23')](_0x2b62e8,_0x2dc1('0x24'))[_0x2dc1('0x25')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x2dc1('0x26')]=function(_0x231e3b,_0x50d429){return moment(_0x231e3b)[_0x2dc1('0x27')](_0x50d429,_0x2dc1('0x24'))[_0x2dc1('0x25')](_0x2dc1('0x28'));};exports[_0x2dc1('0x29')]=function(_0x27803b,_0x4c4f7d){return moment(_0x27803b)['diff'](moment(_0x4c4f7d),_0x2dc1('0x24'));};exports[_0x2dc1('0x2a')]=function(_0x461ae0,_0x58629b){return parseInt(_0x461ae0,0xa)+parseInt(_0x58629b,0xa);};exports['now']=function(){return moment()['format'](_0x2dc1('0x28'));};exports[_0x2dc1('0x2b')]=function(_0x519c6a,_0x395db2){if(_0x395db2){return moment(_0x519c6a)[_0x2dc1('0x2b')](_0x395db2);}return!![];};exports['isBefore']=function(_0x144653,_0x361039){if(_0x361039){return moment(_0x144653)['isBefore'](_0x361039);}else if(_0x144653){return!![];}return![];};
\ No newline at end of file